ページへ戻る

− Links

 印刷 

hideyosi​/hijk​/ファイル入出力 のバックアップソース(No.2) :: OSASK計画

osaskwiki:hideyosi/hijk/ファイル入出力 のバックアップソース(No.2)

« Prev[4]  Next »[5]
*.g01のファイル入出力 [#tf1d4cb6]
解説読んだけど、どーもわからないのでもう面倒なので体当たりで実験してみっべぇってなページw

cpycのソースを参考に。


*cpycの検証 [#k98db253]
これがソース。
 #include <guigui01.h>

 void G01Main()
 {
 	static unsigned char cmdlin[] = {
 		0x86, 0x50, 0x8a, 0x8c, 0x40
 	};
 	int i, j;

 	g01_setcmdlin(cmdlin);
 	g01_getcmdlin_fopen_s_3_5(1);
 	for (j = 0;; j++) {
 		if (g01_getcmdlin_fopen_m_0_4(0, j) == 0)
 			break;
 		do {
 			i = jg01_fread1_4(2 * 1024 * 1024, g01_bss1a1);
 			jg01_fwrite1f_5(i, g01_bss1a1);
 		} while (i != 0);
 	}
 	return;
 }

・・・どうも、ファイルのオープンとコマンドラインはセットになってるようだぞ???

うーん。これはちょっと後回し。とにかく、決まりきったファイルをオープンしてみたいな。

*決まりきったファイルを開いてみる [#t183da46]
こんなファイルを用意。名前はtest.txt
 arusyuno kan yo!
 kokorono hirameki yo.
 onnnanoko ni ha
 nanntonaku wakarunoyo!

[[ここ>http://osask.net/w/201.html#z2492927]]によると、こんなコードになるのかな・・・

 #include <guigui01.h>
 void G01Main()
 {
       int mode; mode = 1;
 //          いっけね・・・Cでは2進数表記ないんだっけ。
 //                             00000000000000000000000000000001
 //         ???                 00             0          001
 //                           書かないので     書かない   とりあえず1
       int slot = 4;
 //          スロットってなんだべか?あらかじめ用意されたファイルハンドルってことでいい?
       int pathlen = 8;
 //          パスの長さってことでいいのかな。test.txtだから、8でいいのかな。

       static unsigned char path[] = { 't','e','s','t','.','t','x','t' };
 //          パス。カレントにあるのでファイル名だけでいいはず・・・

       jg01_fopen(mode, slot, pathlen, path);
 //           ファイルをオープンしてみる

       if( slot == -1 ) {
               g01_putc('x') ;
               return;
        }

        g01_putc('O') ;
        return;
 //     スロットが-1なら失敗。x(バツ)を表示して終了。そうでなければOを表示
 }

なーーーんでだよクッソぉ! jg01_fopenが使えないとか言われるぞ??

ヘンダナァ・・・guigui01.h見ると、jg01_fopenはちゃんとあるんだけど、引数が3つしかないぞ?pathlenが廃止された???

うーん・・・pathlenを引っこ抜いたらとりあえずコンパイルは通ったけど、オープンに失敗するなぁ・・・

pathlenが廃止された? ってことは、パス文字列に終端が必要なのかなってんで、お尻に0を置いてみたけど変わらないなぁ・・・

がーーん! ウッチャンがアドバイスくれた! そうだよ! 大勘違いしてた!!!!!

よーし! とりあえず O が表示されたぞおぉぉ! ウッチャン大感謝! (まーだポインタが怪しいとは。オイラってばもう!)

**読めるかな?? [#r3339d06]
うーん。jg01_freadなんだが、これも引数が変更されているっぽいなぁ。guigui01.hに従おう・・・

jg01_fread1(int s, int n, void *b) こういう構文だが、先頭のsはスロットらしいので4でいいか。第二引数と第三引数はなんだろ??これ???

げげげ! ↑のcpycのソースでは、なんか違う関数使ってる上に引数が2個・・・それに戻り値があるぞ? なんだべこれ???

« Prev[4]  Next »[5]