復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第78回]
●RS232C通信のテスト(ファンクションコール03及び04のテスト)
[第74回]で、ファンクションコール0BHの動作確認をするために、ファンクションコール04(パンチ出力)にRS232C送信を割り当ててテストを行ないました。
また[第76回]では、BIOSのパンチ出力としてRS232C送信を、READER入力としてRS232C受信を割り当てて、そのためのプログラムを追加しました。
RS232C送信については、[第74回]で、ファンクションコール0BHのテストプログラムの中で使いましたから、それで動作の確認はできたことになります。
しかしRS232C受信については、何もテストをしていませんから、あらためて送信と受信をあわせてテストすることにします。
[第74回]でのテストでは、RS232C送信の相手としては、最も簡単なものとして、ZBKシリーズのZB28K+RS232Cレベル変換ボードを選びました。
今回も同じ構成でテストをすることにいたします。
テストプログラムのソースプログラムリストです。
FNC0304T.TXTというファイル名でハードディスクに保存しました。
; BDOS function0304 test ;2012/3/29 ; ORG $8100 FCALL=$8005 SINBF=$8300 ; ; ;sousin ; LD HL,MSG LOOP:LD A,(HL) CP 24;$ JP Z,END CALL SOUT INC HL JP LOOP END:LD DE,MSG LD C,09 CALL FCALL ;jusin LD HL,SINBF LD B,00 LOOP2:CALL SIN CP 05 JP C,ERR CP 0A JP Z,MSGOUT LD A,B OR A JP NZ,LOOP2 ; MSGOUT:LD HL,SINBF LOOP3:LD A,(HL) CALL ADP NEXT:INC HL DEC B JP NZ,LOOP3 RET ; ERR:LD DE,ERRT PUSH AF LD C,09 CALL FCALL POP AF CALL B2HEXDP RET ; SOUT:PUSH HL LD E,A LD C,04 CALL FCALL POP HL RET ; SIN:PUSH HL PUSH BC LD C,03 CALL FCALL POP BC POP HL LD (HL),A INC HL INC B RET ; MSG:"Hell" "o" DB 2C;',' "How " "are " "you" DB 3F;'?' DB 0D DB 0A DB 24;$ ; ERRT:"ERR " DB 24;'$' ; ;CL & LF CRLF:LD A,0D CALL ADP LD A,0A JP ADP ;space disp SPDP:LD A,20 ;A disp ADP:PUSH BC PUSH HL LD E,A LD C,02 CALL FCALL POP HL POP BC RET ;HL(bynary 2bytes) to asckii 4bytes & disp HEX4DP:PUSH BC PUSH HL CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes PUSH DE EX DE,HL CALL DEDP POP DE CALL DEDP POP HL POP BC RET ;A(binary) to asckii 2bytes HEX & disp B2HEXDP:PUSH BC PUSH HL CALL B2HEX2 CALL DEDP POP HL POP BC RET ; ;DE(asckii 2bytes) disp DEDP:PUSH DE LD E,D LD C,02 CALL FCALL POP DE LD C,02 CALL FCALL RET ; ;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE B2HEX4:LD A,H CALL B2HEX2 EX DE,HL LD A,E ;binary to hex, 1byte data to ascii 2charactors,A to DE B2HEX2:PUSH AF RRCA RRCA RRCA RRCA CALL B2HEX1 LD D,A POP AF CALL B2HEX1 LD E,A RET ;binary to hex, low 4bit to ascii 1charactor B2HEX1:AND 0F ADD A,30 CP 3A RET C;0-9 ADD A,07;A-F RET ; STRIN:"in" DB 3A;: DB 24;$ ; |
2012/3/30 12:39 fnc0304t.txt END=81DD ; BDOS function0304 test ;2012/3/29 ; ORG $8100 FCALL=$8005 SINBF=$8300 ; ; ;sousin ; 8100 216081 LD HL,MSG 8103 7E LOOP:LD A,(HL) 8104 FE24 CP 24;$ 8106 CA1081 JP Z,END 8109 CD4A81 CALL SOUT 810C 23 INC HL 810D C30381 JP LOOP 8110 116081 END:LD DE,MSG 8113 0E09 LD C,09 8115 CD0580 CALL FCALL ;jusin 8118 210083 LD HL,SINBF 811B 0600 LD B,00 811D CD5381 LOOP2:CALL SIN 8120 FE05 CP 05 8122 DA3C81 JP C,ERR 8125 FE0A CP 0A 8127 CA2F81 JP Z,MSGOUT 812A 78 LD A,B 812B B7 OR A 812C C21D81 JP NZ,LOOP2 ; 812F 210083 MSGOUT:LD HL,SINBF 8132 7E LOOP3:LD A,(HL) 8133 CD8681 CALL ADP 8136 23 NEXT:INC HL 8137 05 DEC B 8138 C23281 JP NZ,LOOP3 813B C9 RET ; 813C 117581 ERR:LD DE,ERRT 813F F5 PUSH AF 8140 0E09 LD C,09 8142 CD0580 CALL FCALL 8145 F1 POP AF 8146 CDA281 CALL B2HEXDP 8149 C9 RET ; 814A E5 SOUT:PUSH HL 814B 5F LD E,A 814C 0E04 LD C,04 814E CD0580 CALL FCALL 8151 E1 POP HL 8152 C9 RET ; 8153 E5 SIN:PUSH HL 8154 C5 PUSH BC 8155 0E03 LD C,03 8157 CD0580 CALL FCALL 815A C1 POP BC 815B E1 POP HL 815C 77 LD (HL),A 815D 23 INC HL 815E 04 INC B 815F C9 RET ; 8160 48656C6C MSG:"Hell" 8164 6F "o" 8165 2C DB 2C;',' 8166 486F7720 "How " 816A 61726520 "are " 816E 796F75 "you" 8171 3F DB 3F;'?' 8172 0D DB 0D 8173 0A DB 0A 8174 24 DB 24;$ ; 8175 45525220 ERRT:"ERR " 8179 24 DB 24;'$' ; ;CL & LF 817A 3E0D CRLF:LD A,0D 817C CD8681 CALL ADP 817F 3E0A LD A,0A 8181 C38681 JP ADP ;space disp 8184 3E20 SPDP:LD A,20 ;A disp 8186 C5 ADP:PUSH BC 8187 E5 PUSH HL 8188 5F LD E,A 8189 0E02 LD C,02 818B CD0580 CALL FCALL 818E E1 POP HL 818F C1 POP BC 8190 C9 RET ;HL(bynary 2bytes) to asckii 4bytes & disp 8191 C5 HEX4DP:PUSH BC 8192 E5 PUSH HL 8193 CDBB81 CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes 8196 D5 PUSH DE 8197 EB EX DE,HL 8198 CDAD81 CALL DEDP 819B D1 POP DE 819C CDAD81 CALL DEDP 819F E1 POP HL 81A0 C1 POP BC 81A1 C9 RET ;A(binary) to asckii 2bytes HEX & disp 81A2 C5 B2HEXDP:PUSH BC 81A3 E5 PUSH HL 81A4 CDC181 CALL B2HEX2 81A7 CDAD81 CALL DEDP 81AA E1 POP HL 81AB C1 POP BC 81AC C9 RET ; ;DE(asckii 2bytes) disp 81AD D5 DEDP:PUSH DE 81AE 5A LD E,D 81AF 0E02 LD C,02 81B1 CD0580 CALL FCALL 81B4 D1 POP DE 81B5 0E02 LD C,02 81B7 CD0580 CALL FCALL 81BA C9 RET ; ;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE 81BB 7C B2HEX4:LD A,H 81BC CDC181 CALL B2HEX2 81BF EB EX DE,HL 81C0 7B LD A,E ;binary to hex, 1byte data to ascii 2charactors,A to DE 81C1 F5 B2HEX2:PUSH AF 81C2 0F RRCA 81C3 0F RRCA 81C4 0F RRCA 81C5 0F RRCA 81C6 CDD081 CALL B2HEX1 81C9 57 LD D,A 81CA F1 POP AF 81CB CDD081 CALL B2HEX1 81CE 5F LD E,A 81CF C9 RET ;binary to hex, low 4bit to ascii 1charactor 81D0 E60F B2HEX1:AND 0F 81D2 C630 ADD A,30 81D4 FE3A CP 3A 81D6 D8 RET C;0-9 81D7 C607 ADD A,07;A-F 81D9 C9 RET ; 81DA 696E STRIN:"in" 81DC 3A DB 3A;: 81DD 24 DB 24;$ ; ADP =8186 B2HEX1 =81D0 B2HEX2 =81C1 B2HEX4 =81BB B2HEXDP =81A2 CRLF =817A DEDP =81AD END =8110 ERR =813C ERRT =8175 FCALL =8005 HEX4DP =8191 LOOP =8103 LOOP2 =811D LOOP3 =8132 MSG =8160 MSGOUT =812F NEXT =8136 SIN =8153 SINBF =8300 SOUT =814A SPDP =8184 STRIN =81DA |