MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第105回]
●ファンクション06のテスト
前回からの続きです。
ファンクション06のテストは「ワンボードマイコンでCP/Mを!」[第205回]で行なっています。
そこで使ったテストプログラムはFNC06T−2です。
それをインテルニーモニックに書き直してMF06T−2を作りました。
●テストプログラムMF06T−2
下はMF06T−2のソースプログラムリストです。
; BDOS function06 test
;2012/3/31 8/25
;
ORG $0100
FCALL=$0005
;
LOOP:MVI C,06
MVI E,FF
CALL FCALL
PUSH PSW
CALL B2HEXDP
POP PSW
ORA A
JNZ AOUT
NEXT:CALL SPDP
JMP LOOP
AOUT:PUSH PSW
MVI C,06
MOV E,A
CALL FCALL
POP PSW
CPI 1A;^z
RZ
JMP NEXT
;
;CL & LF
CRLF:MVI A,0D
CALL ADP
MVI A,0A
JMP ADP
;space disp
SPDP:MVI A,20
;A disp
ADP:PUSH B
PUSH H
MOV E,A
MVI C,02
CALL FCALL
POP H
POP B
RET
;HL(bynary 2bytes) to asckii 4bytes & disp
HEX4DP:PUSH B
PUSH H
CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes
PUSH D
XCHG
CALL DEDP
POP D
CALL DEDP
POP H
POP B
RET
;A(binary) to asckii 2bytes HEX & disp
B2HEXDP:PUSH B
PUSH H
CALL B2HEX2
CALL DEDP
POP H
POP B
RET
;
;DE(asckii 2bytes) disp
DEDP:PUSH D
MOV E,D
MVI C,02
CALL FCALL
POP D
MVI C,02
CALL FCALL
RET
;
;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE
B2HEX4:MOV A,H
CALL B2HEX2
XCHG
MOV A,E
;binary to hex, 1byte data to ascii 2charactors,A to DE
B2HEX2:PUSH PSW
RRC
RRC
RRC
RRC
CALL B2HEX1
MOV D,A
POP PSW
CALL B2HEX1
MOV E,A
RET
;binary to hex, low 4bit to ascii 1charactor
B2HEX1:ANI 0F
ADI 30
CPI 3A
RC;0-9
ADI 07;A-F
RET
;
STRIN:"in"
DB 3A;:
DB 24;$
;
|
2015/1/14 9:52 mf06t-2.txt
END=0187
; BDOS function06 test
;2012/3/31 8/25
;
ORG $0100
FCALL=$0005
;
0100 0E06 LOOP:MVI C,06
0102 1EFF MVI E,FF
0104 CD0500 CALL FCALL
0107 F5 PUSH PSW
0108 CD4C01 CALL B2HEXDP
010B F1 POP PSW
010C B7 ORA A
010D C21601 JNZ AOUT
0110 CD2E01 NEXT:CALL SPDP
0113 C30001 JMP LOOP
0116 F5 AOUT:PUSH PSW
0117 0E06 MVI C,06
0119 5F MOV E,A
011A CD0500 CALL FCALL
011D F1 POP PSW
011E FE1A CPI 1A;^z
0120 C8 RZ
0121 C31001 JMP NEXT
;
;CL & LF
0124 3E0D CRLF:MVI A,0D
0126 CD3001 CALL ADP
0129 3E0A MVI A,0A
012B C33001 JMP ADP
;space disp
012E 3E20 SPDP:MVI A,20
;A disp
0130 C5 ADP:PUSH B
0131 E5 PUSH H
0132 5F MOV E,A
0133 0E02 MVI C,02
0135 CD0500 CALL FCALL
0138 E1 POP H
0139 C1 POP B
013A C9 RET
;HL(bynary 2bytes) to asckii 4bytes & disp
013B C5 HEX4DP:PUSH B
013C E5 PUSH H
013D CD6501 CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes
0140 D5 PUSH D
0141 EB XCHG
0142 CD5701 CALL DEDP
0145 D1 POP D
0146 CD5701 CALL DEDP
0149 E1 POP H
014A C1 POP B
014B C9 RET
;A(binary) to asckii 2bytes HEX & disp
014C C5 B2HEXDP:PUSH B
014D E5 PUSH H
014E CD6B01 CALL B2HEX2
0151 CD5701 CALL DEDP
0154 E1 POP H
0155 C1 POP B
0156 C9 RET
;
;DE(asckii 2bytes) disp
0157 D5 DEDP:PUSH D
0158 5A MOV E,D
0159 0E02 MVI C,02
015B CD0500 CALL FCALL
015E D1 POP D
015F 0E02 MVI C,02
0161 CD0500 CALL FCALL
0164 C9 RET
;
;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE
0165 7C B2HEX4:MOV A,H
0166 CD6B01 CALL B2HEX2
0169 EB XCHG
016A 7B MOV A,E
;binary to hex, 1byte data to ascii 2charactors,A to DE
016B F5 B2HEX2:PUSH PSW
016C 0F RRC
016D 0F RRC
016E 0F RRC
016F 0F RRC
0170 CD7A01 CALL B2HEX1
0173 57 MOV D,A
0174 F1 POP PSW
0175 CD7A01 CALL B2HEX1
0178 5F MOV E,A
0179 C9 RET
;binary to hex, low 4bit to ascii 1charactor
017A E60F B2HEX1:ANI 0F
017C C630 ADI 30
017E FE3A CPI 3A
0180 D8 RC;0-9
0181 C607 ADI 07;A-F
0183 C9 RET
;
0184 696E STRIN:"in"
0186 3A DB 3A;:
0187 24 DB 24;$
;
ADP =0130 AOUT =0116 B2HEX1 =017A
B2HEX2 =016B B2HEX4 =0165 B2HEXDP =014C
CRLF =0124 DEDP =0157 FCALL =0005
HEX4DP =013B LOOP =0100 NEXT =0110
SPDP =012E STRIN =0184 |
; BDOS function06 test ;2012/3/31 8/25 ;13/5/9 ; ORG $0100 FCALL=$0005 ; LOOP:MVI C,06 MVI E,FF CALL FCALL ORA A JNZ AOUT MVI A,2D AOUT:PUSH PSW MVI C,06 MOV E,A CALL FCALL POP PSW CPI 1A;^z RZ JMP LOOP ; |
2015/1/14 9:48 mf06t.txt
END=011A
; BDOS function06 test
;2012/3/31 8/25
;13/5/9
;
ORG $0100
FCALL=$0005
;
0100 0E06 LOOP:MVI C,06
0102 1EFF MVI E,FF
0104 CD0500 CALL FCALL
0107 B7 ORA A
0108 C20D01 JNZ AOUT
010B 3E2D MVI A,2D
010D F5 AOUT:PUSH PSW
010E 0E06 MVI C,06
0110 5F MOV E,A
0111 CD0500 CALL FCALL
0114 F1 POP PSW
0115 FE1A CPI 1A;^z
0117 C8 RZ
0118 C30001 JMP LOOP
;
AOUT =010D FCALL =0005 LOOP =0100
|
