復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第64回]
●ファンクションコール0A(コンソールバッファ入力)
コンソール入力としてはファンクションコール01があります([第39回])。
ファンクションコール01はコンソールから1バイト(1文字)を入力します。
これに対して今回のファンクションコール0Aは、指定した文字数の入力があるか、または[Enter]が押されるまで、入力された文字を指定したバッファに入力します。
入力途中の[BackSpace]も有効です。
ただし[Enter]の文字コードはバッファには入れられません。
ファンクションコール0Aを使ったテストプログラムです。
ソースプログラムリストです。
; BDOS TEST9 console buffer read ;2012/3/16 ; ORG $8100 FCALL=$8005 CONBF=$8200 CONBF1=$8201 ; LD A,14;=20 LD (CONBF),A LOOP:LD DE,STRIN LD C,09;string out CALL FCALL LD DE,CONBF LD C,0A;console buffer in CALL FCALL CALL CRLF LD HL,CONBF1 LD B,(HL) INC HL INC B LOOP1:DEC B JP Z,BFDMP LD A,(HL) CALL ADP INC HL JP LOOP1 BFDMP:CALL CRLF LD HL,CONBF LD B,17;=23 BFDMP1:LD A,(HL) CALL B2HEXDP CALL SPDP INC HL DEC B JP NZ,BFDMP1 CALL CRLF JP LOOP ; ;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/16 18:4 ftst9.txt END=81A7 ; BDOS TEST9 console buffer read ;2012/3/16 ; ORG $8100 FCALL=$8005 CONBF=$8200 CONBF1=$8201 ; 8100 3E14 LD A,14;=20 8102 320082 LD (CONBF),A 8105 11A481 LOOP:LD DE,STRIN 8108 0E09 LD C,09;string out 810A CD0580 CALL FCALL 810D 110082 LD DE,CONBF 8110 0E0A LD C,0A;console buffer in 8112 CD0580 CALL FCALL 8115 CD4481 CALL CRLF 8118 210182 LD HL,CONBF1 811B 46 LD B,(HL) 811C 23 INC HL 811D 04 INC B 811E 05 LOOP1:DEC B 811F CA2A81 JP Z,BFDMP 8122 7E LD A,(HL) 8123 CD5081 CALL ADP 8126 23 INC HL 8127 C31E81 JP LOOP1 812A CD4481 BFDMP:CALL CRLF 812D 210082 LD HL,CONBF 8130 0617 LD B,17;=23 8132 7E BFDMP1:LD A,(HL) 8133 CD6C81 CALL B2HEXDP 8136 CD4E81 CALL SPDP 8139 23 INC HL 813A 05 DEC B 813B C23281 JP NZ,BFDMP1 813E CD4481 CALL CRLF 8141 C30581 JP LOOP ; ;CL & LF 8144 3E0D CRLF:LD A,0D 8146 CD5081 CALL ADP 8149 3E0A LD A,0A 814B C35081 JP ADP ;space disp 814E 3E20 SPDP:LD A,20 ;A disp 8150 C5 ADP:PUSH BC 8151 E5 PUSH HL 8152 5F LD E,A 8153 0E02 LD C,02 8155 CD0580 CALL FCALL 8158 E1 POP HL 8159 C1 POP BC 815A C9 RET ;HL(bynary 2bytes) to asckii 4bytes & disp 815B C5 HEX4DP:PUSH BC 815C E5 PUSH HL 815D CD8581 CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes 8160 D5 PUSH DE 8161 EB EX DE,HL 8162 CD7781 CALL DEDP 8165 D1 POP DE 8166 CD7781 CALL DEDP 8169 E1 POP HL 816A C1 POP BC 816B C9 RET ;A(binary) to asckii 2bytes HEX & disp 816C C5 B2HEXDP:PUSH BC 816D E5 PUSH HL 816E CD8B81 CALL B2HEX2 8171 CD7781 CALL DEDP 8174 E1 POP HL 8175 C1 POP BC 8176 C9 RET ; ;DE(asckii 2bytes) disp 8177 D5 DEDP:PUSH DE 8178 5A LD E,D 8179 0E02 LD C,02 817B CD0580 CALL FCALL 817E D1 POP DE 817F 0E02 LD C,02 8181 CD0580 CALL FCALL 8184 C9 RET ; ;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE 8185 7C B2HEX4:LD A,H 8186 CD8B81 CALL B2HEX2 8189 EB EX DE,HL 818A 7B LD A,E ;binary to hex, 1byte data to ascii 2charactors,A to DE 818B F5 B2HEX2:PUSH AF 818C 0F RRCA 818D 0F RRCA 818E 0F RRCA 818F 0F RRCA 8190 CD9A81 CALL B2HEX1 8193 57 LD D,A 8194 F1 POP AF 8195 CD9A81 CALL B2HEX1 8198 5F LD E,A 8199 C9 RET ;binary to hex, low 4bit to ascii 1charactor 819A E60F B2HEX1:AND 0F 819C C630 ADD A,30 819E FE3A CP 3A 81A0 D8 RET C;0-9 81A1 C607 ADD A,07;A-F 81A3 C9 RET ; 81A4 696E STRIN:"in" 81A6 3A DB 3A;: 81A7 24 DB 24;$ ; ADP =8150 B2HEX1 =819A B2HEX2 =818B B2HEX4 =8185 B2HEXDP =816C BFDMP =812A BFDMP1 =8132 CONBF =8200 CONBF1 =8201 CRLF =8144 DEDP =8177 FCALL =8005 HEX4DP =815B LOOP =8105 LOOP1 =811E SPDP =814E STRIN =81A4 |
logfile nd80zlog\03161804.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/ld ftst9.bin,8100 loading FTST9.BIN ...00a8(168)bytes loaded,from 8100 to 81A7 >jp d233 a>save 1 ftst9.com a>dir A: FILLE5 COM : FTEST1 COM : FTEST2 COM : DM COM A: TEST COM : FTEST4 COM : FTEST4-1 TXT : FTEST4-2 COM A: FTEST4-3 COM : COPY COM : TESTDATA TXT : FILLFF COM A: TESTDAT2 TXT : CMP COM : FILL00 BIN : FTST7 COM A: FTST8 COM : FTST9 COM a>ftst9 in:abcxyz abcxyz 14 06 61 62 63 78 79 7A 80 54 D0 14 13 8C CD 35 FA 7B 89 79 EE B7 9E in:123456789ABCXYZ 123456789ABCXYZ 14 0F 31 32 33 34 35 36 37 38 39 41 42 43 58 59 5A 7B 89 79 EE B7 9E in:12345678901234567890 12345678901234567890 14 14 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 9E in:abcde# abcd# abc abc 14 03 61 62 63 64 65 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 9E in:^D>in:^D> WHAT? >dm 8200,823f 8200 14 03 04 62 63 64 65 36-37 38 39 30 31 32 33 34 ...bcde678901234 8210 35 36 37 38 39 30 9E FF-6B F5 7B 57 EE F7 E9 7F 567890..k.{W... 8220 F2 00 80 30 09 12 0B 1A-A2 0C 20 10 02 40 C1 85 ...0....「. ..@チ. 8230 BF B4 76 5E C9 EC E8 FF-F7 FB EF AD 07 CB 3C C3 ソエv^ノ......ュ.ヒ<テ >0000 00C3 - リモート接続を終了しました logfile closed at Fri Mar 16 18:10:02 2012 |