マイコン独立大作戦
SDカードインターフェースの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
そして作戦その3は、SDカードインターフェースです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第32回]
●FAT32システム(4) ユーザーファイルの読み込み
前回はDIRセクタを読んでユーザーファイルの情報を確認しました。
今回はそこに示されているユーザーファイルのデータを読んでみます。
ユーザーファイルのデータはクラスタ単位で確保されるセクタに格納されます。
DIRエリアの内容は前回ログでお見せしていますが、ユーザーファイル情報が書き込まれている部分のみ下に再掲します。
データが書き込まれているクラスタbヘ赤四角で囲った部分に示されています。
4バイト32ビットのFATbフうち上位2バイトは前から21、22バイト目で、下位2バイトは前から27、28バイト目にあります。
OHAYOB.BTKがクラスタbO003
OHAYOB.LSTがクラスタbO004
OHAYOB.TXTがクラスタbO005
OHAYOB.BINがクラスタbO006
にそれぞれ格納されています。
1クラスタは64セクタですから、その先頭セクタは40H(=64)毎に設置されていることになります。
各クラスタの配置をセクタbナ示した図は前回お見せしていますが、下に再掲します。
クラスタbO003の先頭セクタbヘ4040H
クラスタbO004の先頭セクタbヘ4080H
クラスタbO005の先頭セクタbヘ40C0H
クラスタbO006の先頭セクタbヘ4100H
です。
それではその情報にしたがって各セクタを読んでみましょう。
まず最初はセクタbS040H(クラスタ#3、OHAYOB.BTK)です。
>cm 8103 8103 00- 8104 00- 8105 40- 8106 00-40 8107 00- >jp 8100 [00004040] 8800 80 00 80 7C CD 4E 80 21-6D 80 11 F8 FF 01 08 00 ...|ヘN.!m....... 8810 CD 59 80 ED A0 EA 0C 80-CD 59 80 CD 4E 80 CD 59 ヘY......ヘY.ヘN.ヘY 8820 80 06 03 21 1C 1C 11 3F-3F 22 FB FF CD 5F 80 ED ...!...??"..ヘ_.. 8830 53 FB FF CD 5C 80 10 F1-CD 4E 80 21 75 80 11 F8 S..ヘ\...ヘN.!u... 8840 FF 01 08 00 CD 5C 80 ED-A0 EA 40 80 CD 59 80 C3 ....ヘ\....@.ヘY.テ 8850 0F 08 21 F8 FF 01 00 08-71 23 10 FC C9 CD 5C 80 ..!.....q#..ノヘ\. 8860 CD 5F 80 D5 1E 32 D5 CD-DD 02 D1 1D C2 62 80 D1 ヘ_.ユ.2ユヘン.ム.ツb.ム 8870 C9 43 4C 43 4C 43 4C 43-4C 3F 76 77 6E 3F 40 40 ノCLCLCLCL?vwn?@@ 8880 40 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 @............... 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
BTKはTK−80形式のバイナリファイルです。
プログラムの開始アドレスとエンドアドレスがファイルの先頭4バイトに置かれます。
先頭4バイトが80 00 80 7Cになっていて、これがBTKファイルであることを示しています。
次はセクタbS080H(クラスタ#4、OHAYOB.LST)です。
>cm 8103 8103 00- 8104 00- 8105 40- 8106 40-80 8107 00- >jp 8100 [00004080] 8800 32 30 31 30 2F 39 2F 31-37 20 20 31 34 3A 33 32 2010/9/17 14:32 8810 20 20 6F 68 61 79 6F 62-2E 74 78 74 0D 0A 45 4E ohayob.txt..EN 8820 44 3D 38 30 37 43 0D 0A-20 20 20 20 20 20 20 20 D=807C.. 8830 20 20 20 20 20 20 3B 20-4F 48 41 59 4F 20 66 6F ; OHAYO fo 8840 72 20 4E 44 5A 0D 0A 20-20 20 20 20 20 20 20 20 r NDZ.. 8850 20 20 20 20 20 3B 20 30-33 2F 30 34 2F 32 38 20 ; 03/04/28 8860 35 2F 39 0D 0A 20 20 20-20 20 20 20 20 20 20 20 5/9.. 8870 20 20 20 3B 31 30 2F 36-2F 31 20 66 6F 72 20 4E ;10/6/1 for N 8880 44 38 30 5A 33 0D 0A 20-20 20 20 20 20 20 20 20 D80Z3.. 8890 20 20 20 20 20 3B 0D 0A-20 20 20 20 20 20 20 20 ;.. 88A0 20 20 20 20 20 20 20 20-20 20 20 4F 52 47 20 24 ORG $ 88B0 38 30 30 30 0D 0A 20 20-20 20 20 20 20 20 20 20 8000.. 88C0 20 20 20 20 20 20 20 20-20 4C 45 44 31 3D 24 46 LED1=$F 88D0 46 46 38 0D 0A 20 20 20-20 20 20 20 20 20 20 20 FF8.. 88E0 20 20 20 20 20 20 20 20-4C 45 44 34 3D 24 46 46 LED4=$FF 88F0 46 42 0D 0A 20 20 20 20-20 20 20 20 20 20 20 20 FB.. 8900 20 20 20 20 20 20 20 53-54 41 52 54 31 3D 24 30 START1=$0 8910 38 30 46 0D 0A 20 20 20-20 20 20 20 20 20 20 20 80F.. 8920 20 20 20 20 20 20 20 20-54 4D 35 4D 3D 24 30 32 TM5M=$02 8930 44 44 0D 0A 20 20 20 20-20 20 20 20 20 20 20 20 DD.. 8940 20 20 3B 0D 0A 38 30 30-30 20 43 44 34 45 38 30 ;..8000 CD4E80 8950 20 20 20 20 20 20 20 20-43 41 4C 4C 20 43 4C 52 CALL CLR 8960 0D 0A 20 20 20 20 20 20-20 20 20 20 20 20 20 20 .. 8970 3B 41 53 49 41 54 4F 20-64 69 73 70 0D 0A 38 30 ;ASIATO disp..80 8980 30 33 20 32 31 36 44 38-30 20 20 20 20 20 20 20 03 216D80 8990 20 4C 44 20 48 4C 2C 41-53 49 44 54 0D 0A 38 30 LD HL,ASIDT..80 89A0 30 36 20 31 31 46 38 46-46 20 20 20 20 20 20 20 06 11F8FF 89B0 20 4C 44 20 44 45 2C 4C-45 44 31 0D 0A 38 30 30 LD DE,LED1..800 89C0 39 20 30 31 30 38 30 30-20 20 20 20 20 20 20 20 9 010800 89D0 4C 44 20 42 43 2C 24 30-30 30 38 0D 0A 38 30 30 LD BC,$0008..800 89E0 43 20 43 44 35 39 38 30-20 20 20 41 53 49 44 50 C CD5980 ASIDP 89F0 32 3A 43 41 4C 4C 20 54-4D 31 53 0D 0A 38 30 30 2:CALL TM1S..800 |
LSTは当社ZASMアセンブラのアセンブルリストファイルです。
ちょっとわかりにくいと思いますが、右側のASCIIダンプの上から21行目を見ると、(その途中から次の行の終わりまで)
8000 CD4E80 CALL CLR
となっていて、これがアセンブルリストファイルであることがわかります。
次はセクタbS0C0H(クラスタ#5、OHAYOB.TXT)です。
>cm 8103 8103 00- 8104 00- 8105 40- 8106 80-c0 8107 00- >jp 8100 [000040C0] 8800 3B 20 4F 48 41 59 4F 20-66 6F 72 20 4E 44 5A 0D ; OHAYO for NDZ. 8810 0A 3B 20 30 33 2F 30 34-2F 32 38 20 35 2F 39 0D .; 03/04/28 5/9. 8820 0A 3B 31 30 2F 36 2F 31-20 66 6F 72 20 4E 44 38 .;10/6/1 for ND8 8830 30 5A 33 0D 0A 3B 0D 0A-20 20 20 20 20 4F 52 47 0Z3..;.. ORG 8840 20 24 38 30 30 30 0D 0A-20 20 20 20 20 4C 45 44 $8000.. LED 8850 31 3D 24 46 46 46 38 0D-0A 20 20 20 20 20 4C 45 1=$FFF8.. LE 8860 44 34 3D 24 46 46 46 42-0D 0A 20 20 20 20 20 53 D4=$FFFB.. S 8870 54 41 52 54 31 3D 24 30-38 30 46 0D 0A 20 20 20 TART1=$080F.. 8880 20 20 54 4D 35 4D 3D 24-30 32 44 44 0D 0A 3B 0D TM5M=$02DD..;. 8890 0A 20 20 20 20 20 43 41-4C 4C 20 43 4C 52 0D 0A . CALL CLR.. 88A0 3B 41 53 49 41 54 4F 20-64 69 73 70 0D 0A 20 20 ;ASIATO disp.. 88B0 20 20 20 4C 44 20 48 4C-2C 41 53 49 44 54 0D 0A LD HL,ASIDT.. 88C0 20 20 20 20 20 4C 44 20-44 45 2C 4C 45 44 31 0D LD DE,LED1. 88D0 0A 20 20 20 20 20 4C 44-20 42 43 2C 24 30 30 30 . LD BC,$000 88E0 38 0D 0A 41 53 49 44 50-32 3A 43 41 4C 4C 20 54 8..ASIDP2:CALL T 88F0 4D 31 53 0D 0A 20 20 20-20 20 4C 44 49 0D 0A 20 M1S.. LDI.. 8900 20 20 20 20 4A 50 20 50-45 2C 41 53 49 44 50 32 JP PE,ASIDP2 8910 0D 0A 20 20 20 20 20 43-41 4C 4C 20 54 4D 31 53 .. CALL TM1S 8920 0D 0A 20 20 20 20 20 43-41 4C 4C 20 43 4C 52 0D .. CALL CLR. 8930 0A 20 20 20 20 20 43 41-4C 4C 20 54 4D 31 53 0D . CALL TM1S. 8940 0A 3B 45 59 45 20 63 6C-6F 73 65 2F 6F 70 65 6E .;EYE close/open 8950 0D 0A 20 20 20 20 20 4C-44 20 42 2C 30 33 0D 0A .. LD B,03.. 8960 20 20 20 20 20 4C 44 20-48 4C 2C 24 31 43 31 43 LD HL,$1C1C 8970 0D 0A 20 20 20 20 20 4C-44 20 44 45 2C 24 33 46 .. LD DE,$3F 8980 33 46 0D 0A 45 59 45 3A-4C 44 20 28 4C 45 44 34 3F..EYE:LD (LED4 8990 29 2C 48 4C 0D 0A 20 20-20 20 20 43 41 4C 4C 20 ),HL.. CALL 89A0 54 4D 30 32 35 0D 0A 20-20 20 20 20 4C 44 20 28 TM025.. LD ( 89B0 4C 45 44 34 29 2C 44 45-0D 0A 20 20 20 20 20 43 LED4),DE.. C 89C0 41 4C 4C 20 54 4D 30 35-0D 0A 20 20 20 20 20 44 ALL TM05.. D 89D0 4A 4E 5A 20 2A 45 59 45-0D 0A 20 20 20 20 20 43 JNZ *EYE.. C 89E0 41 4C 4C 20 43 4C 52 0D-0A 3B 6F 68 61 79 6F 20 ALL CLR..;ohayo 89F0 64 69 73 70 0D 0A 20 20-20 20 20 4C 44 20 48 4C disp.. LD HL |
これは当社ZASMアセンブラ用のソースプログラムファイルですが、普通のTXTファイルです。
右のASCIIダンプを見れば、TXTファイルであることがわかります。
最後はセクタbS100H(クラスタ#6、OHAYOB.BIN)です。
>cm 8103 8103 00- 8104 00- 8105 40-41 8106 C0-00 8107 00- >jp 8100 [00004100] 8800 CD 4E 80 21 6D 80 11 F8-FF 01 08 00 CD 59 80 ED ヘN.!m.......ヘY.. 8810 A0 EA 0C 80 CD 59 80 CD-4E 80 CD 59 80 06 03 21 ....ヘY.ヘN.ヘY...! 8820 1C 1C 11 3F 3F 22 FB FF-CD 5F 80 ED 53 FB FF CD ...??"..ヘ_..S..ヘ 8830 5C 80 10 F1 CD 4E 80 21-75 80 11 F8 FF 01 08 00 \...ヘN.!u....... 8840 CD 5C 80 ED A0 EA 40 80-CD 59 80 C3 0F 08 21 F8 ヘ\....@.ヘY.テ..!. 8850 FF 01 00 08 71 23 10 FC-C9 CD 5C 80 CD 5F 80 D5 ....q#..ノヘ\.ヘ_.ユ 8860 1E 32 D5 CD DD 02 D1 1D-C2 62 80 D1 C9 43 4C 43 .2ユヘン.ム.ツb.ムノCLC 8870 4C 43 4C 43 4C 3F 76 77-6E 3F 40 40 40 00 00 00 LCLCL?vwn?@@@... 8880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
BINはバイナリファイルです。
先頭から読むと
CD4E80 (CALL $804E)
216D80 (LD HL,$806D)
11F8FF (LD DE,$FFF8)
となっていて、これがZ80マシン語のプログラムファイルであることがわかります。
駆け足で説明してきましたが、今回でとりあえずSDカードインターフェースについてはひとまずお休みにします。
現在SDカードIF+PS/2キーボードIF試作基板を発注して、出来上がってくるのを待っているところです。
基板ができてきたら、CRTインターフェース基板とあわせて、いよいよ今度は実際にマイコン独立大作戦のための本番プログラムの作成についてレポートする予定です。
実はマイコン独立大作戦と並行して別の作戦も展開中です。
そちらについても書きたいのですが、もうかなり前にCRTインターフェースの再試作基板が出来てきていますので、次回は久しぶりにCRTインターフェースについて書く予定です。
あ。
書き忘れてしまうところでした。
今回までのところで、FAT16から始まってFAT32までをざっと駆け足で説明してきました。
FAT32については、私の個人的な興味や将来の足がかりとして、読み込むことのできるプログラムを作って、ファイル構成の概要を調べてきました。
FAT16はスタンダードのSDカード(2GBまで)で、FAT32はSDHCカード(2GBを越えて32GBまで)とSDXCカード(32GBを越えて2TBまで)です([第28回]参照)。
しかし実際のところ、私はマイコン独立大作戦のストレージとしては2GBのSDカードで十分と思っています。
このことについては前回の終わりにも少し書きましたが、FAT32はFAT16に比べてファイルシステムが複雑に過ぎます。
これを8ビットマイコンの標準のファイルシステムとして組み込むのは、限られたメモリ資源とスループットの大いなる無駄遣いといえましょう。
いまどき2GBなどといいますと、「ええー?たったそれだけしかないの?」などと言われそうですが、ええ、ええ、それだけで十分過ぎる容量です。
実際のところ、8ビットのシステムでは2GBバイトでも大きすぎて、その全部を使うことなどとてもできませんでしょう。
ちなみに私が最初にWindows95マシンを自作したときのハードディスクは1.9GBでした。
またWindows98はセットアップの段階では10GBを越えるハードディスクは認識できませんでした。
2GBがいかに大容量であるかご理解いただけましたでしょうか。
そういうことですので、マイコン独立大作戦のストレージとしてはスタンダードのSDカード(2GB)とし、ファイルシステムとしてはFAT16でいきたいと考えています。
SDカードインターフェースの製作[第32回]
2016.12.12upload
前へ
ホームページトップへ戻る