Product specifications
;
;
INOUT:: LD A,D
OR E
RET Z ;Return if size of block = 0
CALL SETint
EX AF,AF’
LD A,128+16
EX AF,AF
JR Z,OUTBLOCK ;Jump if saving
;
;
;
INBLOCK:: LD B,O
INBLK1: CALL INBIT
JR C,INBLOCK
DJNZ INBLK1 ;Look for 50 low bits
STBIT: EI
XOR A
CCF ;Set carry
CALL INBIT2 ;Find long pulse
JR NCSTBIT
INBLK2:: CALL INBYTE ;C = byte from tape
LD (HL),C ;Store byte
INC HL
DEC DE
LD A,D
OR E
JR NZ,INBLK2
JR RESint
;
;
;
OUTBLOCK:: LD BC, DELAY
OTBLK1: XOR A
CALL LOW
DEC BE
LD A,B
OR C
JR NZ,OTBLK11 ;Carry flag reset A = 0
DEL1: JR NC,DEL1 ;Short high
OUT (CASPORT),A ;A = 0
DEL2: JR C,DEL2 ;One more interrupt
CCF
CALL HIGH2
OTBLK2: LD C,(HL) ;C = byte to be output
CALL OUTBYTE
INC HL
DEC DE
LD A,D
OR E
JR NZ,OTBLK2