S1-CP/M80 移植作戦 その19 BIOSの作成3^^

今回のCP/M80のCBIOSはBIOS09とBIOS80のデータ受け渡しをコマンドとステータスで行う予定なので
仕様をまとめておきます。
作成しながら、このページを更新して情報をまとめていきたいと思います^^

■BIOS80→BIOS09のコマンド
CMDNo 1
コマンド名 WBOOT
データ構成 要求 リターン
レジスタ CMDNO=1 DATAREG=N/A
IOSTAT=$80 IOSTAT=$40
DATAREG=N/A CMDNO=N/A
処理内容
ウォームブート用のCP/Mシステム再ロード
引数不要
備考
なし
CMDNo 2
コマンド名 CONST
データ構成 要求 リターン
レジスタ CMDNO=2 DATAREG=入力状態(00=データ無し,$FF=データあり)
IOSTAT=$80 IOSTAT=$40
DATAREG=N/A CMDNO=N/A
処理内容
BIOS09内のキー入力変数の値の有無を調べて返す
値あり = $FF
値なし = $00
BIOS80に処理を戻すときにCMDNOとDATAREGをクリアする
BIOS09内に16バイトのキー入力バッファを実装
CONINが呼ばれると1バイト返される。バッファが空になったら$00を返す
備考
将来的にはDATAREGに機器番号を渡して入力を切替えできるようにする
[BIOS80]コンソール ステータス(A←0xFF/0x00)
[BIOS80]”CON:”に割当て中のデバイスのステータスをチェック
CMDNo 3
コマンド名 CONIN
データ構成 要求 リターン
レジスタ CMDNO=3 DATAREG=入力文字(ASCIIコード)
IOSTAT=$80 IOSTAT=$40
DATAREG=N/A CMDNO=N/A
処理内容
BIOS09内の16バイトバッファにキー入力データがあればFIFOで値を返す
BIOS80にデータを渡したらバッファの配列の詰めてバッファ文字数をデクリメントする
BIOS80に処理を戻すときにCMDNOとDATAREGをクリアする
備考
将来的にはDATAREGに機器番号を渡して入力を切替えできるようにする
現在の”CON:”に割当て中のデバイスから1文字入力しアスキーコードをAレジスタにセットしてリターン
ANKの場合最上位ビットは0でなくてもOK
[BIOS80]コンソール インプット(A←入力キャラクタ)

続きを読む S1-CP/M80 移植作戦 その19 BIOSの作成3^^