復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第133回]
●ファンクションコール一覧表(3)
CP/M互換DOSは、当初その骨子となる部分をわずか1週間で書き上げてしまい、いささか気をよくしていたのでありましたが、ファンクションコール0Aで思わぬ足止めを食ってしまいました。
それもやっとのことでクリアできましたので、ここからはもうすいすいと進むことと思っております(どうだか?)。
さて今後の予定です。
今までおよそ2ヶ月ほどをかけて、CP/M2.2のファンクションコールを検証してきましたが、今度はCP/M互換DOSのもとで、そのときに作ったテストプログラムを使って同じ動作をするかどうかを検証していくことにいたします。
その進行状況を記録するために、CP/M2.2の検証のときに作りましたファンクションコール一覧表を、あらためて作成してそこに記録をしていくことにいたします。
ファンクションコール一覧表は、最初に[第60回]でお見せしました。
その後に整理したものとして[第94回]に再掲いたしました。
今回が3回目ということになります。
[第94回]の一覧表では、ちょっと理由があってやり残したごく一部のファンクションコールを除いては全て検証を終わりましたから、ほとんど全てを水色で着色して示しました。
今回はCP/M互換DOSであらためて検証をしていきますから、そこで着色されていたものも一旦地の色に戻した上で再スタートいたします。
まだ検証を開始したばかりですから、ほとんどに色がついていませんが、今後検証を完了するごとに、また前のときと同じように、水色で着色していくことにいたします(この原稿を用意した時点ではほとんど着色部分はなかったのですが、その後に検証作業が進んだため、現在ではご覧の通り、かなり着色されています)。
ファンクション(Cレジスタにセットする値) | 機能 | パラメータセット DEまたはEに値をセットする |
結果 | 説明(初出)回 (CP/M2.2) |
説明(初出)回(互換DOS) |
0 00(16進) | システムリセット | なし | システムがリセットされる | ||
1 01 | コンソール入力 | なし | A=文字コード | 第39回 | 第122回 |
2 02 | コンソール出力 | E=文字コード | 文字が表示される | 第39回 | 第122回 |
3 03 | リーダー(RDR)入力 | なし | A=文字コード | 第78回 | 第139回 |
4 04 | パンチ(PUN)出力 | E=文字コード | PUN:に出力される | 第74回 | 第139回 |
5 05 | リスト(LST)出力 | E=文字コード | LST:(プリンタ)に出力される | ||
6 06 | コンソール入出力 | 入力:E=FF 出力:E=文字コード | 入力:A=文字コード 出力:文字が表示される | 第79回 | 第139回 |
7 07 | IOバイト取り出し | なし | A=IOバイト | 第61回 | 第137回 |
8 08 | IOバイトセット | E=IOバイト | IOバイトがセットされる | 第63回 | 第137回 |
9 09 | 文字列出力 | DE=文字列アドレス | 文字列が表示される | 第41回 | 第134回 |
10 0A | コンソールバッファ入力 | DE=バッファアドレス | バッファに入力される | 第64回 | 第128回 |
11 0B | コンソールステータスチェック | なし | 入力あり:A=01 入力なし:A=00 | 第68回 | 第138回 |
12 0C | バージョンn謔闖oし | なし | H=00 L=バージョン | 第61回 | 第137回 |
13 0D | ディスクリセット | なし | すべてのディスクがリセットされる | 第92回 | 第142回 |
14 0E | ディスクドライブセレクト | E=ドライブ | デフォルトディスクに指定される | 第82回 | 第140回 |
15 0F | ファイルオープン | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF | 第46回 | 第134回 |
16 10 | ファイルクローズ | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF | 第51回 | 第135回 |
17 11 | 最初のファイルサーチ | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF | 第65回 | 第138回 |
18 12 | 次のファイルサーチ | なし | 正常:A=ディレクトリコード 異常:A=FF | 第65回 | 第138回 |
19 13 | ファイル削除 | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF | 第51回 | 第135回 |
20 14 | シーンシャルリード | DE=FCBアドレス | 正常:A=00 異常:A=エラーコード | 第46回 | 第134回 |
21 15 | シーケンシャルライト | DE=FCBアドレス | 正常:A=00 異常:A=エラーコード | 第51回 | 第135回 |
22 16 | 新規ファイル作成 | DE=FCBアドレス | 正常:A=00 異常:A=エラーコード | 第51回 | 第135回 |
23 17 | ファイル名の変更 | DE=FCBアドレス | 正常:A=00 異常:A=FF | 第93回 | 第144回 |
24 18 | ログインベクトルの取り出し | なし | HL=ログインベクトル | 第90回 | 第141回 |
25 19 | ログインディスクbフ取り出し | なし | A=ディスク | 第90回 | 第141回 |
26 1A | DMAアドレスのセット | DE=DMAアドレス | DMAアドレスがセットされる | 第56回 | 第136回 |
27 1B | アローケーションアドレスの取り出し | なし | HL=アローケーションベクトルアドレス | 第95回 | 第143回 |
28 1C | ライトプロテクトセット | なし | ログインディスクがR/O(リードオンリー)になる | 第91回 | 第141回 |
29 1D | R/Oベクトルの取り出し | なし | HL=I/Oベクトル | 第91回 | 第141回 |
30 1E | ファイルアトリビュートセット | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF | 第99回 | 第144回 |
31 1F | ディスクパラメータアドレスのセット | なし | HL=ディスクパラメータアドレス | 第96回 | 第143回 |
32 20 | ユーザーコードのセット | ||||
33 21 | ランダムリード | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード | 第108回 | 第146回 |
34 22 | ランダムライト | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード | 第102回 | 第145回 |
35 23 | ファイルサイズの計算 | DE=FCBアドレス | FCB末尾3バイトにファイルサイズが入る | 第109回 | 第148回 |
36 24 | ランダムレコードアクセスポインタの更新 | DE=FCBアドレス | FCB末尾3バイトにレコードbェ入る | 第111回 | 第149回 |
37 25 | ディスクドライブのリセット | DE=ドライブベクトル | ベクトルで指定したドライブがリセットされる | 第100回 | 第142回 |
38 26 | 未定義 | ||||
39 27 | 未定義 | ||||
40 28 | ゼロファイルを伴うランダムライト | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード | 第110回 | 第147回 |