復活!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) * |