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

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

[第362回]


●CP/M互換DOSの使い方

前回は(CP/M互換DOSにつきまして)ちょっと困った問題がみつかってしまいました、と書きました。
昨日1日かけて原因を追及しましたところ、やっと解決いたしました。
何がどうだったのかにつきましては、近日中に整理してご報告をいたします。
CP/M互換DOSはまだなのか?
とのお問い合わせもいただいておりますが、あともう少しですので、今しばらくお待ちいただきますようお願いいたします。

今気になるところをひとつずつ整理してクリアしているところです。
このあと何も新たな問題が出てこなければ、あと一週間くらいというあたりかと思います。
価格につきましても今しばらくお待ちくださいますようお願いいたします。

さて、前回はCP/Mファイルの作成について簡単に説明をいたしましたが、今回はさらにわかりやすく具体的に実例で説明をいたします。

●CP/Mファイル(.COM)の作成と実行

例としまして[第197回]で使いましたテストプログラムVFTST1.TXTを使って、アセンブルからCP/M互換DOSでの実行までを説明いたします。

まずはソースプログラムを作成します。
メモ帳でもよいのですがフリーのテキストエディタTeraPadがおすすめです。
TeraPadは[第19回]でご紹介いたしました。
普通のTXTファイルとして作成します。

こちらが今回参考例として使うVFTST1.TXTです。

; BDOS function 1 & 2 test for ZBDOS
;12/6/12
;
     ORG $0100
     FCALL=$0005
;
LOOP:LD E,3F;?
        LD C,02
        CALL FCALL          
        LD C,01
        CALL FCALL
        CP 1A;^z?
        RET Z
        PUSH AF
        LD E,3D;=
        LD C,02
        CALL FCALL
        POP AF
        LD D,A
        CALL HEX1
        LD E,A
        LD A,D
        RRCA
        RRCA
        RRCA
        RRCA
        CALL HEX1
        PUSH DE
        LD E,A
        LD C,02
        CALL FCALL
        POP DE
        LD C,02
        CALL FCALL
        LD E,0D
        LD C,02
        CALL FCALL
        LD E,0A
        LD C,02
        CALL FCALL
        JP LOOP
HEX1:AND 0F
        ADD A,30
        CP 3A
        RET C;0-9
        ADD A,07;A-F
        RET     
;
ND80ZV(ND80Z3.5)付属のZ80アセンブラ(ZASM.COM)を使うことを想定していますが、CP/M互換DOS上で実行できるバイナリファイルを作成できるツールをお持ちでしたら、それを使っていただくこともできます。
ここではZASM.COMを使って、上のテキストファイルをアセンブルして、マシン語のバイナリファイルを作ります。
最終的にそのバイナリファイルをCP/M互換DOSのあるフォルダにコピーすればよいのですが、ここでは簡単にするために、CP/M互換DOSのあるフォルダ(ZB3DOS)で全ての作業をすることにします。

●仮想フロッピーディスクドライブの準備

ちょっと説明の手順が飛んでしまいますが、最初にまず仮想フロッピードライブの準備(フォーマット)をしておきます。
CP/M互換DOSではA,B,C,Dの4つの仮想ディスクドライブを使います。
昔のように外付けのドライブユニットを使う場合でしたらAドライブだけとか、AドライブとBドライブを使うとか、いろいろの場合を想定したシステムにする必要がありました。
しかし現在は巨大なハードディスク内に仮想ドライブを作るのですから、遠慮しないで余裕で使ってしまいます。
それでたった4ドライブ?
ということなのですが、実はND80ZV(ND80Z3.5)のほうのメモリを有効に使おうとしますと、このくらいのドライブ数にしておいたほうが都合がよいのです。

そこで、CP/M互換DOSを使う一番最初にVFORMAT.exeでA〜Dドライブを作成しておきます。
下はまずAドライブとBドライブを作ったところです。

ZB3DOSフォルダに今作ったばかりのa.vfdとb.vfdが表示されています。

続いてCドライブとDドライブを作成しました。

これで必要な準備は完了です。

●ZアセンブラZASM.COMの実行

手順がおかしくなってしまいましたが、それではさきほど作ったVFTST1.TXTをアセンブルしてバイナリファイルを作ります。
ZASM VFTST1.TXT[Enter]
を実行すると、もしエラーがなければバイナリファイルVFTST1.BINが作成されます。


●ZB3DOSの起動

ND80ZV(ND80Z3.5)をUSB接続して、電源を入れておきます。
ZB3DOSを起動するのですが、下の画面のように同じ作業ディレクトリのDOSプロンプト(コマンドプロンプト)をもうひとつ開いて、そこでZB3DOSを起動すると便利です。

右上のDOSプロンプト(コマンドプロンプト)でZB3DOSを起動しました。
0001 0000 −
の表示に z と入力すると、ZB3BASICがスタートします。

ZB3BASICがスタートしました。


ここでCP/M互換DOSを起動します。
/cpm[Enter]
と入力します。

A>
と表示されました。
これでCP/Mモードになっています。

DIR[Enyer]
と入力してみました。

まだ何もファイルはセーブされていませんから、no fileと表示されます。

●COPYコマンド

それではいよいよさきほどアセンブルして作成したVFTST1.BINをCP/M互換DOSのAドライブにセーブしてみます。
ここで同じ作業ディレクトリのDOSプロンプト(コマンドプロンプト)を2つ開いておいたのが役に立ちます。
左下のDOSプロンプト(コマンドプロンプト)にマウスを移動してアクティブにします。

CP/Mの実行ファイルは拡張子がCOMでなければなりません。
ZASMで作成されるバイナリファイルの拡張子はBINです。
そこでまずそのBINをCOMに変更します。
ren vftst1.bin vftst1.com[Enter]
を実行して、そのあとDIRコマンドで確認しています。
このようにする代わりにエクスプローラでVFTST1.BINのファイル名をVFTST1.COMに変更してもよいでしょう。

右上のDOSプロンプト(コマンドプロンプト)に戻って
copy z:vftst1.com[Enter]
を実行します。
copy z:
はZB3DOS.exeのあるフォルダのファイルをカレントドライブ(A>ならカレントドライブはAドライブ、B>ならカレントドライブはBドライブです)にコピーするビルトインコマンドです。

DIRコマンドを実行してVFTST1.COMがAドライブにコピーできたことを確かめました。

vftst1[Enter]
と入力してVFTST1.COMを実行しました。

[Ctrl][z]で実行を中止してCP/M互換DOSに戻りました。

●CP/M互換DOSの終了

CP/M互換DOS上で
ZB3[Enter]
と入力するとCP/M互換DOSを終了してZB3BASICに戻ります。


●ZB3BASICの終了

ZB3BASIC上で
/exit[Enter]
と入力すると、ZB3BASIC(ZBDOS)を終了します。


上の操作を記録したログファイルです。
ログファイルはZB3DOSを起動すると、そのときの月日時分の名前で自動的に作成され、ZB3DOSを正常に終了したときにクローズされます。

logfile nd80zlog\04022225.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
>/cpm
loading zbds2a.bin ...loading ZBDOS,wait a while...
1955(6485)bytes loaded,from CC00 to E554
>
A>dir
no file
A>copy z:vftst1.com

A>dir
A: VFTST1   COM
A>vftst1
?a=61
?b=62
?c=63
?A=41
?B=42
?0=30
?1=31
?2=32
?3=33
?
A>zb3
end of ZBDOS
>/exit
0000 00C3 - 
リモート接続を終了しました
logfile closed at Tue Apr 02 22:38:13 2013

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

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