2012.7.16
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第174回]


●CP/M互換DOSでのファイルSAVE作業

CP/M互換DOSシステムのフロッピーディスクに代わるものとして、Windowsパソコンのハードディスク内に仮想フロッピーディスクを作成してそれを使う、というアイデアを考えた当初から、なんとかしたいと考えていたことがあります。

かってのCP/Mシステムは大容量記憶装置としてフロッピーディスクドライブを最低1台接続し、そのシステム内で何でもこなしました(当たり前のことですが)。
しかしそこのところがCP/M互換DOSでは大きく異なってきます。

昔のCP/Mでしたら、当然そのCP/Mの上でアプリケーションとして用意されていた何らかのエディタを使ってソースプログラムを作成したはずです。
しかし。
CP/M互換DOSでもそれと同じことをする?

いや、それはないと思います。
たとえばZB3BASICの場合には、そのBASICシステムの上でスクリーンエディタまで用意して、プログラムを作成する機能を用意しています。
それはZB3BASICがインタプリタだからです。

インタプリタの最大の特徴は、命令を入力した直後にそのまま実行が可能なことです。
コンパイラのように、コンパイルやリンクといった手続きを必要としません。
たとえば、
A=10:PRINT A,A+5[Enter]
と入力すると、それらの命令がただちに解読実行されて
10     15
と表示されます。

また行番号をつけて入力した複数行からなるプログラムも、いつの時点でも
RUN[Enter]
と入力するだけで、ただちに実行されます。

その利便性のゆえに、ZB3BASICのシステム上にスクリーンエディタの機能を用意して、そこでプログラムの開発が行なえるようにしてあるのです。

CP/Mシステムではどうでしょうか?
[第157回]で紹介しましたMBASICはインタプリタですから、プログラム作成にはCP/Mのラインエディタの機能を使ってプログラムを作成することができます。
そのことはCP/M互換DOSの上でのMBASICについても全く同じです。

しかしだからといってF80(FORTRANコンパイラ)のソースプログラムもCP/M互換DOSの上で作るか、といいましたら、さすがにそれはいただけませんでしょう。
どうせコンパイルしてそのあとリンクしなければ実行ファイルを作成することはできませんから、CP/M互換DOSの上で機能が制約されたエディタを使ってソースプログラムを作成するメリットは全くありません。

ソースプログラムはWindows上で、たとえばTeraPadなどの使い易いテキストエディタを使って作成するというのが常識的な結論になるでありましょう(TeraPadは[第19回]で紹介しています)。

これはコンパイラに限りません。
Z80アセンブラについても同じことが言えると思います。
アセンブラの場合には、CP/M互換DOS上でM80+L80を使って実行ファイルを作る、という方法も考えられますが、F80の場合と同じで、ソースプログラムはWindows上のテキストエディタを使って作成することになりましょう。

ND80ZVには当社のオリジナルZ80アセンブラZASM.COMが附属していてWindowsのDOSプロンプト(コマンドプロンプト)で使うことができますから、それを使ってソースプログラムから実行ファイルをWindows上で作成してしまったほうが、わざわざCP/M上のM80などを使うよりもはるかに効率がよいと思います。

そんなことを書きますと、きっと「それならCP/M互換DOSなんてものを使ったりしないで、何もかもWindows上でできるCP/Mシミュレータを使えばよいのでは?」という意見が出てくるでありましょう。
しかし。
それは、論旨が違うのであります(どこが違うかおわかりになりますでしょうか)。
当ホームページを最初からお読みいただいております皆様でしたらおわかりいただけると思います。

8ビットの、Z80なり8080なりのプログラムが実機の上で実際に動いているという重みは、Windows上のシミュレータからは決して得られないものなのです。
ND80ZVの存在意義、存在価値もまさにその点にあります。

説明が横にそれてしまいました。
要するにCP/M互換DOSでは、ソースプログラムはCP/M互換DOSを離れて、Windows上のテキストエディタを使って作る、というのがごく一般的で当たり前の使い方になります。

さて、すると、そのようにして作成されたソースプログラム、あるいはZ80アセンブラによってアセンブルして得られた実行ファイルは、当然のことながらCP/M互換DOSの仮想フロッピーディスクにではなくて、Windowsの普通のディレクトリ(たとえばND80Z3フォルダ)に保存されることになります。

しかし、CP/M互換DOSの上で、そのファイルを使うためには、前回も説明をしましたようにちょっと面倒な作業をしなければなりません。
なぜならCP/M互換DOSにはWindowsのフォルダにあるファイルを読み込むための機能などは無いからです。
ZB3BASICには/LDコマンドがあって、WindowsフォルダにあるファイルをND80ZVのメモリの任意のアドレスに読み込むことができます。

そこで次のような操作をすることになります。
たとえば前回説明をしましたHELLO.FORファイルを仮想フロッピーディスクのAドライブにセーブする手順は次のようになります。

1)/LDコマンドを使うため、一旦CP/M互換DOSを終了してZB3BASICに戻る
2)/LD HELLO.FOR,0100[Enter]を実行して、トランジェントエリアの先頭アドレス0100Hにファイルをロードする
3)JP D233[Enter]でCP/M互換DOSを起動する
4)SAVE 2 HELLO.FOR[Enter]を実行する

もし前回のように、ファイルの最後にEOFコードをつける必要があれば、3)の前にCM@コマンドでEOFコードを書き加える、という操作が加わります。

この面倒な操作を何とかしたいなあ、というのが仮想FDDシステムを思いついた当初からの懸案事項でありました。

今回はちょっとイントロ的な説明が長くなってしまい、肝心のところまで行けませんでした。
この続きは次回にいたします。

ワンボードマイコンでCP/Mを![第174回]
2012.7.16upload

前へ
次へ
ホームページトップへ戻る