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 |