復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第33回]
●BIOSのディスクパラメータ
前回のCP/Mソースプログラムの変更とBIOS部分の追加作業によって、このままアセンブラにかけて、実行できるCP/Mソースプログラムができあがりました。
ところで。
今回は、前回お見せしましたディスクパラメータとBIOSプログラムについての説明をしようと思いましたら、もうすでに全部説明してしまっておりました。
過去記事を調べましたら、[第12回]あたりでしっかり説明をしてしまっておりました。
私の場合、忘却するのには1週間もあれば十分でありますから、およそ3週間も前のことともなれば、痕跡もとどめていないのが当然であります。
「忘れじと誓いつつも忘れてしまう心の悲しさよ」であります。
あ。あれは私よりももっと前の世代のお話で、話だけは聞いておりますが、いくらなんでも私はそんなトシではありませぬ。
え?
聞いたことがありません?
引用元のセリフは確か、「忘却とは忘れ去ることなり。忘れえずして忘却を誓う心の悲しさよ」だったと思います。
うらやましい限りでありますなあ。
冗談はそのくらいにしておきまして。
実は[第12回]でパラメータを書き入れました領域は、実はデータバッファエリアでありまして、実データを記入しておくところではありませんでした。
その後にだんだんと理解が進んでいってそのようにわかりました。
で。
本当は、前回お見せしましたパラメータ設定のところ(その部分を下に再掲いたします)に設定しておきます。
CP/M本体が実行の過程でこのエリアから必要に応じて、[第12回]でお見せしたCP/M内のバッファ領域にコピーして使います。
ま、しかし、個々のパラメータの説明につきましては、[第12回]と[第13回]で説明をしております通りでありますから、そちらを参照していただければ、と思います。
;*************** BIOS DATA AREA ****************************** ; DIRBF EQU 0B800H;128bytes ; CSV00 EQU 0B880H;8bytes ALV00 EQU 0B888H;3bytes ; ; DISK PARAMETER BASE ; DPBASE: ; ;drive No.0 (a drive) DEFW 0 ;XLATE DEFW 0 ;scratch1 DEFW 0 ;scratch2 DEFW 0 ;scratch3 DEFW DIRBF ;address of dirbf. DEFW DPTOP ;address of disk parameter block. DEFW CSV00 ;address of check vector. DEFW ALV00 ;address of allocation vector (bit map). ; ; DPTOP:DEFW 16 ;sectors per track from bios. DEFB 2 ;block shift.sector in a block 128*2^n DEFB 3 ;block mask.sector no. in a block - 1 DEFB 0 ;extent mask. DEFW 23 ;disk size (number of blocks-1). DEFW 31 ;directory size.(max file name no.-1) DEFW 0C0H ;storage for first bytes of bit map (dir space used). DEFW 8 ;check sum vector size DEFW 0 ;offset. first usable track number. ; |