2017.8.21
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
ROM/RAM/RTCボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
作戦その3は、SDカードインターフェースです。
作戦その4は、ROM/RAM/RTCボードです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第17回]


●LOGディレクトリ

前回は現行のSDカードFORMATに機能を追加してLOGディレクトリの作成も行なうようにしました。
新しく追加したLOGディレクトリはシステム用にリザーブしてあるエリアを利用してクラスタ#4に置くことにしました。
下は今回テストで使用したSDカードのマップです。
このマップは[総合第29回]でお見せしたものにLOGディレクトリを追加したものです。


左側の小さい数値はSDカードの先頭のセクタを0としたときのセクタbナす。
FAT16システムではファイルをSAVEするとき、エリアの確保はクラスタという単位(1クラスタは64セクタ)で行ないますが、実際のSAVE、LOADはあくまでセクタ単位で行ないます。
クラスタやFAT、ルートディレクトリが何番目のセクタになるかは個々のSDカードによって若干の相違があります。
上のマップのセクタ番号は今回テストに使用したSDカードのものです。
セクタ番号とクラスタ等との関係については[総合第33回]を参照してください。

上のマップを見ますと、LOGディレクトリに割り当てたクラスタ#4はセクタbR03(数値は16進数です)になっています。
そこでセクタREADプログラム(SCTRD.BIN)でセクタbR03を読み出して、前回のテストで作成されたはずのファイル名が本当に正しく作成されているかどうかを確かめてみました。
セクタREADプログラムは[総合第32回]を参照してください。

logfile nd80zlog\08202231.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
ndwr2h.bin loaded,from E23F to E535
>dir
Z       .       LOG     .       
>/ld sctrd.bin,8000
loading SCTRD.BIN ...0017(23)bytes loaded,from 8000 to 8016
>cm 8003
8003 00-
8004 00-03
8005 00-03
8006 2A-
>jp 8000
>dm 8200,83ff
8200  2E 20 20 20 20 20 20 20-20 20 20 10 00 00 00 00  .          .....
8210  00 00 00 00 00 00 00 00-00 00 04 00 00 00 00 00  ................
8220  2E 2E 20 20 20 20 20 20-20 20 20 10 00 00 00 00  ..         .....
8230  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8240  31 32 33 34 35 36 37 30-4C 4F 47 20 00 00 00 00  12345670LOG ....
8250  00 00 00 00 00 00 00 00-00 00 40 01 00 00 00 00  ..........@.....
8260  31 32 33 34 35 36 37 4A-4C 4F 47 20 00 00 00 00  1234567JLOG ....
8270  00 00 00 00 00 00 00 00-00 00 41 01 00 00 00 00  ..........A.....
8280  31 32 33 34 35 36 37 5A-4C 4F 47 20 00 00 00 00  1234567ZLOG ....
8290  00 00 00 00 00 00 00 00-00 00 42 01 00 00 00 00  ..........B.....
82A0  31 32 33 34 35 36 37 6A-4C 4F 47 20 00 00 00 00  1234567jLOG ....
82B0  00 00 00 00 00 00 00 00-00 00 43 01 00 00 00 00  ..........C.....
82C0  31 32 33 34 35 36 37 7A-4C 4F 47 20 00 00 00 00  1234567zLOG ....
82D0  00 00 00 00 00 00 00 00-00 00 44 01 00 00 00 00  ..........D.....
82E0  31 32 33 34 35 36 47 7A-4C 4F 47 20 00 00 00 00  123456GzLOG ....
82F0  00 00 00 00 00 00 00 00-00 00 45 01 00 00 00 00  ..........E.....
8300  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8310  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8380  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8390  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83C0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
>/exit
0000 00C3 - 
リモート接続を終了しました
logfile closed at Sun Aug 20 22:34:29 2017

ディレクトリは1ファイルにつき32バイトのエリアを割り当てます(拡張されたファイル名などではその整数倍のエリアを占有することもあります)。
先頭の11バイトはファイル名8バイト+拡張子3バイトです。
次の1バイトはそのファイルの属性です。
ルートディレクトリ以外のディレクトリではかならず先頭に”.”および”..”という2つのディレクトリ名が置かれます。
ディレクトリのファイル属性は10です。
通常のファイル属性は20です。
27、28バイト目にはそのファイルのデータが割り当てられたクラスタbェ置かれます。
”.”ディレクトリは自分自身(この場合にはLOGディレクトリ)を示します。
LOGディレクトリはクラスタ#4に割り当てましたから、27、28バイト目には04、00が入っています。
”..”は1階層上の親ディレクトリを示します。
親ディレクトリがルートディレクトリのときは27、28バイト目は00、00になります。
さきほどのマップで独立型ZB3DOSフォーマット後の未使用エリアはクラスタ#140からになっています。
テストで作成されたログファイルがクラスタ#140から順に割り当てられていて、ここまではプログラムが正しく機能していることが確かめられました。

ROM/RAM/RTCボードの製作[第17回]
2017.8.21upload

前へ
次へ
ホームページトップへ戻る