復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第44回]
●現況報告です
昨日は時間がなくて更新できませんでした。
またお得意様から急ぎの特注品の仕事を受けておりまして、その納期が迫っているので、なかなかHPの更新まで手が回りません。
納入完了までしばらく時間不足の状態が続きそうです。
なにとぞご了承願います。
さて、このところCP/Mのファンクションコールについて書いております。
まだND80ZVのRAMエリアを使った仮システムのままでの動作テストです。
一体本番のほうはどうなったのだ?
と疑問に思われるかも知れませんが。
実は、ND80ZVをフルRAM構成にした(つまりアドレス0000H〜FFFFHの全てがRAMという構成の)CP/Mシステムも、もう出来ているのです。
ええ。
それも、当初計画しました通り、Windowsのハードディスクに仮想フロッピーディスクを作成したシステムとして、CP/Mがもう動いているのです。
と言いましても、やっと動くことを確認しただけで、本当に実用とするためには、まだあれこれツールを作らないことには、皆様にご披露申し上げることもできません。
まあ、ハードで言いましたら、やっと試作品のバラックが出来たところです。
これもだんだんわかってきたことなのですが、CP/Mをインストールしただけでは、全く足りなくて、主要な機能はトランジェントコマンドという形で、別のプログラムとして供給されていたようです。
もちろん通常のCP/Mシステムとしては、そのような、いわばアプリケーションもCP/M本体に一緒にバンドルする形で供給されていたのでしょうけれど、それは今まで説明しておりますCP/Mソースプログラムには含まれてはおりません。
それじゃあ、それもまたどこかから捜してインストールするのか?
ということなのですが。
個人でしたらそれでもいいのかもしれませんが、中日電工としては、それじゃあ皆様に堂々と供給するわけにはいきません。
ええ。この際ですから。
必要なものは全部、作ります。
最終的には、今説明しております、CP/Mソースも捨ててしまって、CCPもBDOSも全部最初から中日電工のオリジナルとして書いてしまいます。
ですから、大変なのです。
でも、そうしないことには、ND80ZVのユーザーに、堂々と供給することができませんでしょう。
このところずっと説明しておりますことは、そこまでに至る途中の、いわば準備の過程なのです。
それは無駄ではないのか?
とお考えかも知れませんが、中日電工のオリジナルになってしまえば、既存のCP/Mから機能としては離れてしまう部分も出てくるかと思います。
今のところはCP/Mオリジナルのソースのままで使っておりますから、CP/Mというものを理解していただく上では、むしろ、現在の構成での説明のほうがなにかと役に立つのではないかと思います。
そういうことですので、本番CP/Mにつきましても、準備が整いましたら、ゆるゆるとご披露申し上げますから、いましばらくは、現行の仮CP/Mシステムで説明を続けさせていただきます。
●ファイルアクセスのための前準備
それでは、いよいよ、CP/MのCP/Mたる所以であります、ファイルアクセス機能について、試していくことにいたします。
そのために、前準備として、ちょっと確認してみたいことがあります。
たとえば、[第15回]で試しました「テキストファイルの中味を表示するプログラム」ですが、このときは「応用CP/M」からそのままプログラムをいただきました。
この当時はまだCP/Mについて理解が進んでいなかったものですから、借用させていただいたのですが、大分理解できるところまできましたので、あらためまして、オリジナルのプログラムとして書いてみたいと思います。
そうなりますと、ただファンクションコールを使うだけではなくて、そのほかにもいろいろ必要な事柄が出てきます。
たとえば、上記のプログラムはMSDOSではTYPEコマンドに相当する機能です。
すると、TYPE filename という書式を実行することになりますが、それではそのfilenameというのはいったいどのようにしてプログラムに取り込めばよいのか?ということなどを知らねばなりません。
実は、そのことを知る方法についても、「応用CP/M」には書いてあるのですけれど、書いてあることをそのままコピーして、ここに転載するわけにはいきませんから、まあ、結局はそこに書いてあることと同じことなのですけれど、実際にやってみることにいたします。
毎回画面コピーを撮るのも結構手間がかかりますから、今回はログファイルを使って説明することにいたします。
いつものようにND80ZVをWindowsパソコンとUSB接続してZB3BASICを起動します。
このところ舞台裏ではいろいろあれこれやっておりますので、もう一度
/LD cpm22g.bin,bc00[Enter]
を実行して、CP/Mをロードしました。
そのあと、JP d233[Enter] でCP/Mを起動し、DIRコマンドでRAMディスクのディレクトリを確認したあと、[Ctrl][D]で一旦ZB3BASICに戻ります。
logfile nd80zlog\02260903.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld cpm22g.bin,bc00 loading CPM22G.BIN ...1709(5897)bytes loaded,from BC00 to D308 >jp d233 a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM a>^D>a>^D> ERR:23 >dm,8000,810f 8000 C3 62 D2 00 00 C3 06 C4-FE FF CA 31 01 AF 32 7C テbメ..テ.ト..ハ1.ッ2| 8010 FC DF 41 00 00 45 00 45-00 00 04 00 F8 DF 44 00 .゚A..E.E.....゚D. 8020 00 45 00 45 00 00 04 00-FC DF 53 41 56 45 00 45 .E.E.....゚SAVE.E 8030 00 00 04 00 F0 DF 44 4D-00 45 00 45 00 00 04 00 .....゚DM.E.E.... 8040 FC 47 41 20 4E 41 49 0A-24 37 43 0A 09 44 4D 41 .GA NAI.$7C..DMA 8050 42 46 3D 24 38 30 38 30-0A 09 42 44 00 20 20 20 BF=$8080..BD. 8060 20 20 20 20 20 20 20 20-00 00 00 04 00 20 20 20 ..... 8070 20 20 20 20 20 20 20 20-00 00 00 00 00 44 45 2C .....DE, 8080 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8090 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80A0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80B0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80C0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80D0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80E0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80F0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8100 26 00 E5 1E 3F 0E 02 CD-05 80 0E 01 CD 05 80 FE &...?..ヘ....ヘ... >cm,8100 8100 26-c9 8101 00- >jp d233 a>save 1 test.com |
a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM A: TEST COM a>test abc.com xyz.txt 12345 a>^D>a>^D> ERR:23 >dm,8000,810f 8000 C3 62 D2 00 00 C3 06 C4-FE FF CA 31 01 AF 32 7C テbメ..テ.ト..ハ1.ッ2| 8010 FC DF 41 00 00 45 00 45-00 00 04 00 F8 DF 44 00 .゚A..E.E.....゚D. 8020 00 45 00 45 00 00 04 00-FC DF 53 41 56 45 00 45 .E.E.....゚SAVE.E 8030 00 00 04 00 F0 DF 44 4D-00 45 00 45 00 00 04 00 .....゚DM.E.E.... 8040 FC 47 41 20 4E 41 49 0A-24 37 43 0A 09 44 4D 41 .GA NAI.$7C..DMA 8050 42 46 3D 24 38 30 38 30-0A 09 42 44 00 41 42 43 BF=$8080..BD.ABC 8060 20 20 20 20 20 43 4F 4D-00 00 00 02 00 58 59 5A COM.....XYZ 8070 20 20 20 20 20 54 58 54-00 00 00 00 00 44 45 2C TXT.....DE, 8080 16 20 41 42 43 2E 43 4F-4D 20 58 59 5A 2E 54 58 . ABC.COM XYZ.TX 8090 54 20 31 32 33 34 35 00-00 00 00 00 00 00 00 00 T 12345......... 80A0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80B0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80C0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80D0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80E0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 80F0 E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5 ................ 8100 C9 00 E5 1E 3F 0E 02 CD-05 80 0E 01 CD 05 80 FE ノ...?..ヘ....ヘ... >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Sun Feb 26 09:09:29 2012 |