復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第190回]
●MACRO−80(2)
前回は、CP/M互換DOS上でMACRO−80がうまく動作しました、というご報告をいたしました。
MACRO−80そのものはちゃんと起動いたしました。
私の腹積もりでは、用意したサンプルプログラムをMACRO−80でアセンブルして、それからリンカー(L80)でマシン語プログラムファイルを作成して、それがうまく実行できれば、めでたしめでたし、という段取りだったのでありますが。
そうは問屋が卸してくれないのでありますね。
テスト用に用意しましたソースプログラムは、[第39回]でCP/M2.2の動作テストに使ったFTEST1.COMのソースをMACRO−80用に直したものです。
もともとのソースプログラムはND80ZVに附属しております当社オリジナルのZ80アセンブラZASM.COM用ですので、16進数の表記やEQU文が一般的なアセンブラとは異なっています。
もとのソースプログラムでは
ORG $8100
FCALL=$8005
となっていたところを
ORG 0100H
FCALL EQU 0005H
に変更しました。
下がそのように変更して作成したMVFTST1.MACです。
MACRO−80のソースプログラムは拡張子をMACにすることになっています(そうしないとアセンブルできないというわけではありません)。
; BDOS function 1 & 2 test for ZBDOS ;for MACRO-80 ;12/8/4 ; ORG 0100H FCALL EQU 0005H ; 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 ; END |
A>dir A: F80 COM : HELL1 FOR : HELL1 REL : HELLO FOR A: HELLO REL : HELL2 FOR : HELL2 REL : HELL3 FOR A: HELL3 REL A>copy z:m80.com A>dir A: F80 COM : HELL1 FOR : HELL1 REL : HELLO FOR A: HELLO REL : HELL2 FOR : HELL2 REL : HELL3 FOR A: HELL3 REL : M80 COM A>copy z:mvftst1.mac A>m80 *=mvftst1 U 0100' 03 2D LOOP:LD E,3F;? U 0102' 01 02 LD C,02 U 0107' 01 01 LD C,01 N 010C' F4 0014 CP 1A;^z? Q 010F' C9 RET Z U 0111' 03 03 LD E,3D;= U 0113' 01 02 LD C,02 U 0119' 02 07 LD D,A U 011E' 03 07 LD E,A U 0120' 07 02 LD A,D U 0122' 00 RRCA U 0123' 00 RRCA U 0124' 00 RRCA U 0125' 00 RRCA U 012A' 03 07 LD E,A U 012C' 01 02 LD C,02 U 0132' 01 02 LD C,02 U 0137' 03 00 LD E,0D U 0139' 01 02 LD C,02 U 013E' 03 0A LD E,0A U 0140' 01 02 LD C,02 O 0148' F1 HEX1:AND 0F Q 0149' 87 ADD A,30 N 014A' F4 0028 CP 3A Q 014D' C9 RET C;0-9 Q 014E' 87 ADD A,07;A-F 22 Fatal error(s),4 Warning(s) * |
*=mvftst1/z N 0100' 1E 2D LOOP:LD E,3F;? N 010C' FE 14 CP 1A;^z? N 0139' 1E 0A LD E,0A N 0143' E6 0F HEX1:AND 0F N 0147' FE 28 CP 3A 5 Fatal error(s) * |