復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第60回]
●ファンクションコール一覧表
これまでファンクションコールを思いつくまま(?)に使ってきましたが、このあたりで簡単に整理してまとめてみることにしました。
CP/M2.2のファンクションコールはbO0〜bQ8Hまで約40種あります。
下表はそれをファンクションコールのoにまとめたものです。
なおこの表をまとめるにあたって、村瀬康治著「応用CP/M」(アスキー出版局)を参考にさせていただきました(というか、ほとんどそのまんまです。すみません)。
ファンクション(Cレジスタにセットする値) | 機能 | パラメータセット DEまたはEに値をセットする |
結果 |
0 00(16進) | システムリセット | なし | システムがリセットされる |
1 01 | コンソール入力 | なし | A=文字コード |
2 02 | コンソール出力 | E=文字コード | 文字が表示される |
3 03 | リーダー(RDR)入力 | なし | A=文字コード |
4 04 | パンチ(PUN)出力 | E=文字コード | PUN:に出力される |
5 05 | リスト(LST)出力 | E=文字コード | LST:(プリンタ)に出力される |
6 06 | コンソール入出力 | 入力:E=FF 出力:E=文字コード | 入力:A=文字コード 出力:文字が表示される |
7 07 | IOバイト取り出し | なし | A=IOバイト |
8 08 | IOバイトセット | E=IOバイト | IOバイトがセットされる |
9 09 | 文字列出力 | DE=文字列アドレス | 文字列が表示される |
10 0A | コンソールバッファ入力 | DE=バッファアドレス | バッファに入力される |
11 0B | コンソールステータスチェック | なし | 入力あり:A=FF 入力なし:A=00 |
12 0C | バージョンn謔闖oし | なし | H=00 L=バージョン |
13 0D | ディスクリセット | なし | すべてのディスクがリセットされる |
14 0E | ディスクドライブセレクト | E=ドライブ | デフォルトディスクに指定される |
15 0F | ファイルオープン | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
16 10 | ファイルクローズ | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
17 11 | 最初のファイルサーチ | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
18 12 | 次のファイルサーチ | なし | 正常:A=ディレクトリコード 異常:A=FF |
19 13 | ファイル削除 | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
20 14 | シーンシャルリード | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
21 15 | シーケンシャルライト | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
22 16 | 新規ファイル作成 | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
23 17 | ファイル名の変更 | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
24 18 | ログインベクトルの取り出し | なし | HL=ログインベクトル |
25 19 | ログインディスクbフ取り出し | なし | A=ディスク |
26 1A | DMAアドレスのセット | DE=DMAアドレス | DMAアドレスがセットされる |
27 1B | アローケーションアドレスの取り出し | なし | HL=アローケーションベクトルアドレス |
28 1C | ライトプロテクトセット | なし | ログインディスクがR/O(リードオンリー)になる |
29 1D | R/Oベクトルの取り出し | なし | HL=I/Oベクトル |
30 1E | ファイルアトリビュートセット | DE=FCBアドレス | 正常:A=ディレクトリコード 異常:A=FF |
31 1F | ディスクパラメータアドレスのセット | なし | HL=ディスクパラメータアドレス |
32 20 | ユーザーコードのセット | ||
33 21 | ランダムリード | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード |
34 22 | ランダムライト | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード |
35 23 | ファイルサイズの計算 | DE=FCBアドレス | FCB末尾3バイトにファイルサイズが入る |
36 24 | ランダムレコードのセット | DE=FCBアドレス | FCB末尾3バイトにレコードbェ入る |
37 25 | ディスクドライブのリセット | DE=ドライブベクトル | ベクトルで指定したドライブがリセットされる |
38 26 | 未定義 | ||
39 27 | 未定義 | ||
40 28 | ゼロファイルを伴うランダムライト | DE=FCBアドレス | 正常:A=00 エラー:A=エラーコード |
表中ピンクで示したbヘ、私が考えているシステムでは使わないつもりのものです。
また水色で示したbヘ、すでに説明済みのものです。
[2012.3.15注記]
昨日UPした時点では「ピンク」にしていたものがもっとあったのですが、今朝になってから再考して、上記のように変更しました。
現在作りつつあるCP/Mシステムでは余り意味のないものとして、当初は「ピンク」に分類していたのですが、残しておけばひょっとして何かの役に立つこともあるか、と思い直したからです。
結局除外するのは「ユーザーコード」のみ、ということになりました。
ユーザーコードというのは、ひとつのディスクをユーザーごとに分割して使うためのもので、いくらなんでも、それは要らんだろう、と思います。
ワンボードマイコンでCP/Mを![第60回]
2012.3.14upload
2012.3.15注記
前へ
次へ
ホームページトップへ戻る