復活!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注記
前へ
次へ
ホームページトップへ戻る