Last Updated on 2019年10月14日 by kabekin
こちらのフローで実装したCBIOSを組み込んだCP/M80 Ver2.2を来夢来人+Z80Bカードで実行させてみました。
コールドブートローダはDISKBASICのローダを改造しsamさんにマッピングを変更して頂いたものです^^
ロード完了後は目的のアドレスにプログラムがロードされています。
プログラムのロード状態を確認するために、BIOS09起動時にZ80カード起動前にS1のモニタに抜けることができます。
モニタに抜けてメモリを確認すると、
0000~ Z80のリセットベクタ (00 FA 76になっていますがこれはバグで現在はC3 00 FAになっています)
3400(EA00~) CP/M80 Ver2.2本体
4A00(FA00~) BIOS80
6000(89000~) BIOS09
ロード先メモ→こちら
BIOS09を実行するとZ80にリセットをかけてZ80をスタートします。
めでたくCP/Mの起動メッセージが表示されました^^
その後、サブルーチン05=LISTが一度呼ばれ、
サブルーチン08=READが呼ばれたのちサブルーチン04=CONOUTでBdos Err on A: Bad Sectorが
表示されました。
アスキーの「応用CP/M」によるとREADは10回程度リトライされるとの記述があるので、この動作は正しそうです。
EMPTY SUBROUTINE.はREADサブルーチンの中身を実装していないのでBIOS09が出してます・・・
その後、a>のプロンプトが出力された後「^@」がCONOUTで連続して表示され続けます。
CTRL+Sで一時停止は可能ですが、それ以外は何も受け付けません。
この状態は止めるまで続きます。
固定長で^@が出力されているので何か意味があるのかもしれませんが、今のところ何が起こっているか不明BDOSから「Bdos Err on A: Bad Sector」が戻ってきているということはZ80カードは正常に動作しているっぽいということで一安心^^
とりあえずCP/M80が動作して一安心の記録^^
わーお。ついにプロンプトがでるところま到達しましたか。。。おめでとうございます。
来夢来人でもCP/Mが動作するということですね。
文字色が緑なのはブートローダのを引きずっているんですね。
独自FDルーチンまだ完成していませんが誠意努力中です。
(完成するとDiskBASICの助けがいらなくなります)
>「Bdos Err on A: Bad Sector」
がでるということはFDへのアクセスがうまくいかないということですね。
DiskBASICと共存の場合、DISKIOのシステムコールが動かないでしょうか?
これまでに作っていたBIOSを少し手直ししたらBDOSからのエラーメッセージが表示されてびっくりしました^^;;
来夢来人はIGやBモード、ACIA等いろいろ削られているのでバス廻りはどうかと思っていましたがフローティングバスの仕組みはS1と同じ仕様のようですね。
文字が緑なのはブートローダを引きずってます^^
コンソールI/Oの部分をなんとか動くようにしようとしていたのでDISKBASICのローダーは今は使っていません。
今後ディスク廻りの作業が始まったらDISKBASICのローダーの出番です
DISKBASICの共存とDISKIOのシステムコールの関係はまだ試せていません^^;;;
^@ってNull(0x00)じゃないですかね? CONINが固定で0を返しているとか?
連続で^@が表示されるのはBIOS80のCONINでデータが無い時にも0x00を返し続けていたのが問題だったようです(入力があるまでCONIN内でループしていなかった)
CONINのループを直してBIOS09から0x00が戻ってきたときはBIOS80のCONIN内でループさせるように修正しましたがどんな文字を打ち込んでも^@が戻ってくるのは変わりませんでした。
色々試していますが今のところ原因不明です^^