復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第198回]
●ファンクションコール0A
今回はファンクションコール0A(コンソールバッファ入力)です。
RAMディスク版での説明は[第128回]〜[第132回]ですが、テストプログラムFTST9のリストは[第64回]にあります。
下のリストはFTEST9を64KBフルRAMに対応するように変更したVFTST9です。
; BDOS TEST9 console buffer read
;2012/3/16 8/16
;
ORG $0100
FCALL=$0005
CONBF=$0200
CONBF1=$0201
;
LD A,FF;=255
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;$
;
|