EDU mk2用のnicoBasicにメモリカード読み込み機能(fopen、fread、fclose)を付けてみました。
まだ実験中です。
1 dim buf(40) 2 fopen "test.bmp" 3 fread buf,14 4 fclose 5 for i=0 to 13 6 print buf(i) 7 print "," 8 next
▲ファイルダンプの実行結果。
test.bmpというファイルの先頭14バイトを読み込んでいます。
読んだデータは配列に入ります。
読み込めるサイズはたったの50バイトだけ、、、これから改善します。
↑↑テスト画像です。
これをBMPファイル「test.bmp」で保存します。
サイズは122x32pixel。モノクロ2値で保存しました。
test.bmpのファイルダンプです(16進数)。実行結果と見比べると、合ってることがわかります。
このBMPファイルの構造は次のとおりです。
・ピンクの部分:fileヘッダ14バイト
・白の部分:infoヘッダ40バイト。画像サイズやビット深度などの情報です。
・水色の部分:パレット情報(2色x4)=8バイト。
・黄色の部分:ビットマップデータ。一番下のラインから格納しています。
1 cls:dim buf(40) 2 fopen "test.bmp" 3 fread buf,14 4 fread buf,40 5 fread buf,8 6 for y=31 to 0 step -1 7 x=0:fread buf,16 8 for i=0 to 15 9 msk=128 10 while msk 11 if msk and buf(i) then pset x,y,1 12 x=x+1:msk=msk/2 13 wend 14 next 15 next 16 fclose
▲BMPファイルの表示プログラムの実行結果。
見事にBMPファイルが表示されました。
プログラムでは先頭62バイトのヘッダを読み飛ばしています。
1画面ぶんのデータをいっぺんに配列に格納できないので、1ラインずつpset命令で描画しています。
1ラインあたりのバイト数は(122pixel / 8)+1=16バイト。8の倍数ではないので、+1させています。
動作は遅いです。
表示が終わるまでに16秒くらいかかってしまいました。
これもなんとか改善したいです。
↓nicobasicのバイナリです。
http://sourceforge.jp/projects/nicobasic/releases/