MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第75回]
●MYCPU80の上でCP/Mが起動しました!
まだやっと走り出したばかりですが、MYCPU80の上でZB3DOS(CP/M互換DOS)が起動するところまで出来ました。
まだまだ完成までにはやらなければならないことがたくさん出てきそうですが。
なにはともあれMYCPU80でのCP/M初起動に乾杯!
です。
ZB3BASICの組込みには随分てこずったのですが、今回のZB3DOS(CP/M互換DOS)の組込みは、取りかかってからまだ2日しか経っていません。
何回も書いておりますようにZB3BASICはZ80アセンブラで書いたソースプログラムをもとにして、それを8080アセンブラに書き換えなければならなかったものですから、なかなか一筋縄ではいきませんでした。
ZB3DOS(CP/M互換DOS)もZB3BASICと同様Z80アセンブラで記述しておりますが、こちらのほうはオリジナルのCP/Mが8080用であることを意識しまして、8080にある命令だけで書くように努めました。
実際今回Z80のソースプログラムから8080のソースプログラムに変換するプログラム([第9回]参照)を使って変換してみましたところ、変換できなかったのはわずか1命令だけでした。
;? LD SP,(SPWK) E351 227AE2 SHLD CONSTWK E354 2A76E2 LHLD SPWK E357 F9 SPHL E358 2A7AE2 LHLD CONSTWK E35B C9 RET |
LD SP は8080には無い命令ですが、面倒なのでつい使ってしまいました。
8080では上のリストにありますように
LHLD と SPHL を使います。
HLレジスタを使ってしまいますから、必要ならば事前にHLレジスタの中身をどこかに退避させておかなければなりません。
あ。
PUSH H は使えません。
PUSH、POPはSP(スタックポインタ)の値に依存しますから上のリストのような場合には使えません。
ですからSHLDを使います(上のプログラムではCONSTWKに保存しています)。
LD SP 以外は8080の命令ばかりで書いてありましたから、ZB3BASICのときのような手間はまったくありませんでした。
そうそう。
こうやって作業をしてみて、あらためてCP/Mの移植性の高さに感心しております。
ハードウェアに関係する部分をBIOSにまとめていますから、BIOSさえハードウェアに合わせて書き直せば、CP/Mが動くようになります。
BIOSは機能ごとに記述されていますから、機能ごとに修正をしていくことが可能です。
CP/Mが一世を風靡したのも道理でありましょう。
MYCPU80でCP/Mを![第75回]
2014.12.2upload
前へ
次へ
ホームページトップへ戻る