復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第7回]
●ND80ZVCP/Mプロジェクト(2)
前回はND80ZVCP/Mプロジェクトなどと大見得を切ってしまいました。
とりあえずは早急に、ND80ZVを改造しないままでCP/Mを走らせる、という第1段階のプロジェクトを、スタートさせなければなりません。
ND80ZVをご購入いただいた皆様にも参加していただいて、同時進行でプロジェクトを進めて行くという、「CP/Mパソコン作り方教室」です。
が。しかし。
昨年暮れの時点で、「じつは私はCP/Mは知りません。全部忘れてしまいました」といっていたが。
それで本当に大丈夫なのか?
すっかり忘れてしまうもなにも、もともとCP/Mなんてほとんどさわったこともありませんでしたから、そりゃあ、大丈夫なんてもんじゃありませんよお。
ですから、正月も返上してうんうんうなりながら、がんばったのです。
娘が、「おとうさん。今年の正月はどこへも行かないの?」と聞きましたけど。
「行きません。初詣は来年になったら行きます!」
ND80ZVのお客様にも皆様参加していただいて、あれかこれかと悪戦苦闘したあげく、
いやあ、うまくいきませんね。残念でした。お疲れ様。
なんてことになりましたら、そりゃあ、もう、いい笑い者でありましょう。
私は吉本の芸人ではありませんから、この歳になって笑い者になるなど真っ平ごめんこうむりますです。
それにあくまでこのサイトは中日電工の「商用」サイトです。
個人のブログなどでしたら、大見得を切って挑戦したけれど、結局失敗に終ってしまいましたよお、ということでもいいのかも知れませんが、仮にもプロの看板をかかげてそれでメシを食わせていただいておりますものが、失敗でした。できませんでした、ということでは、そりゃあ、情けない話ですし、それこそ今後の商売にも差し支えますでしょう。
まだ駆け出しの若い頃でしたら、そういう向こう見ずなことをやってみるのも、まあ勉強ですけれど、この歳になって、そんないい加減なことはやる気になりません。
絶対に大丈夫、間違い無くいける、という確信が持てない限り、いい加減なことを書いたりはいたしません。
ということは。
●CP/Mはもう動いているのです
そうなんですよお。
じつは。
この企画を皆様方に発表申し上げた、[第1回]よりも以前に、プロジェクトの第1段階はおおむねできあがっておりましたのです。
もう少し正確に申し上げますと1月8日には、とりあえずCP/Mが動くところまで、できておりました。
ダウンロードしたCP/Mのソースプログラムをもとに、解析作業とND80ZVへの移植作業を開始しましたのが、昨年12月の27日でしたから、「白紙」の状態からここまで来るのに2週間弱かかったことになります。
実は新年早々MYCPU80組立キットのご注文や、お得意様からカスタムメイドのボードのご注文をお受けして、そちらの作業もこなしながらでしたから、正味はまあ、10日間ほどということになりましょう。
結果から判断いたしますと、つまらぬところでひっかかって何日も空費したりしましたので、本来ならばこの程度の作業なら1週間程度でできたはず。
歳のせいで、ヤキが回ったなあと思います。
なにはともあれ、ND80ZVの上でCP/Mが動いているところをお見せしましょう。
説明をしませんと、何がなんだかわかりませんですね。
一番上に *** nd80z3 basic *** と表示されておりますように、これはND80ZVをUSBで接続して、DOSプロンプトでZB3BASICを起動したところです。
その下の /LD はバイナリファイルを指定メモリアドレスにロードするコマンドです。
あらかじめ準備しておいたCP/M関係のファイルをロードしています。
jp bc00
で、CP/Mにエントリします。
普通のCP/Mの起動方法と違っているのは、まだND80ZVのBASICシステムの上でデバッグ中だからです。
a>dir
はCP/Mのディレクトリコマンドです。
もうCP/Mが起動しています。
save 1 cpmtst9.com
は8100番地からのトランジェントエリアにあるプログラムをファイル名をつけてディスクにセーブしているところです(CP/Mのトランジェントエリアは0100番地からですが、ハードウェア上の制約から、ここでは8100番地からにしています)。
その下の cpmtst9 で今ディスクにセーブしたプログラムが呼び出されて実行が開始されます。
このプログラムは、[第2回]でY様から送っていただいた、「応用CP/M」(村瀬康治著、株式会社アスキー)の64ページにあったプログラムです。
CP/Mの”BDOSコール”を使って、コンソール入力と出力を行なうサンプルプログラムです。
同書のサンプルプログラムは8080ニーモニックで書かれていますが、私はZ80ニーモニックに慣れてしまっていますから、同書のリストを見ながらZ80ニーモニックに直してソースプログラムを書き直しました(器用なものでしょう)。
リストを皆様にお見せできるとよいのですが、たとえ8080からZ80にニーモニックを書き直しても、それは「翻訳」と同じですから、著作者に無断でここに掲載することはできません。
残念ですが、参考までに一部だけ、お見せすることにいたします。
ここで使っているZ80アセンブラはND80ZVに附属しています。
2012/1/8 19:36 cpmtst9.txt END=81A9 ; cp/m test9 ouyoucp/m p.64 ;12/1/8 ; ORG $8100 BDOS=$C409 ; 8100 0E09 START:LD C,09 8102 113A81 LD DE,MSGINP 8105 CD09C4 CALL BDOS 8108 0E01 LD C,01 810A CD09C4 CALL BDOS 810D FE4D CP 4D;M 810F CA2481 JP Z,MONGOUT 8185 0D MSGNIGT:DB 0D 8186 0A DB 0A 8187 0A DB 0A 8188 474F4F44 "GOOD" 818C 204E4947 " NIG" 8190 48542120 "HT! " 8194 54484953 "THIS" 8198 20495320 " IS " 819C 46554E43 "FUNC" 81A0 54494F4E "TION" 81A4 20392E " 9." 81A7 0D DB 0D 81A8 0A DB 0A 81A9 24 "$" ;END BDOS =C409 MONGOUT =8124 MSGINP =813A MSGMONG =815E MSGNIGT =8185 NIGTOUT =812F START =8100 |
logfile nd80zlog\01152129.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld cpm_1l.bin,bc00 loading CPM_1L.BIN ...16fb(5883)bytes loaded,from BC00 to D2FA >/ld ramdisk2.bin,8800 loading RAMDISK2.BIN ...3000(12288)bytes loaded,from 8800 to B7FF >/ld cpmtst9.bin,8100 loading CPMTST9.BIN ...00aa(170)bytes loaded,from 8100 to 81A9 >jp bc00 a>dir A: FILLE5 COM : ABC COM a>save 1 cpmtst9.com a>dir A: FILLE5 COM : ABC COM : CPMTST9 COM a>cp# c# cpmtst9 input M)orning or N)ight --->M GOOD MORNING! THIS IS FUNCTION 9. input M)orning or N)ight --->N GOOD NIGHT! THIS IS FUNCTION 9. input M)orning or N)ight --->m? input M)orning or N)ight --->n? input M)orning or N)ight --->? input M)orning or N)ight --->M GOOD MORNING! THIS IS FUNCTION 9. input M)orning or N)ight ---> a>^D>a>^D>d.,8800,88ff ERR:60 >d.,8800,88ff 8800 00 46 49 4C 4C 45 35 20-20 43 4F 4D 00 00 00 02 .FILLE5 COM.... 8810 02 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8820 00 41 42 43 20 20 20 20-20 43 4F 4D 00 00 00 02 .ABC COM.... 8830 03 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8840 00 43 50 4D 54 53 54 39-20 43 4F 4D 00 00 00 02 .CPMTST9 COM.... 8850 04 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8860 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8870 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8880 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8890 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 88A0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 88B0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 30 E5 E5 E5 ............0... 88C0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 88D0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 88E0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 88F0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ >0000 00C3 - リモート接続を終了しました logfile closed at Sun Jan 15 21:41:24 2012 |