modem driver
ZXNet echo conference «code.zx»
From 500:812/03.00 → To All 25 February 1998
Hi All!
Here is the modem driver that
I made it for xreversy. unfortunately
I restored the driver using this
Minor errors are possible.
;data transmission receiving unit with control
;for errors (by means of control
;amounts)
;(C)CREATOR product 1997
;the block interacts with the modem driver
;command and address compatible with
;MMD_2.20 drivers.
;At the moment of calling this or that procedure
;THE DRIVER MUST BE. INITIALIZED, then
;is completely ready for work.
LEN EQU 16; length of the transmitted block
;(transfers 2 bytes more due to
;checksum)
;SPEED - cell containing the current speed
LOAD_B; receiving block
;the block will be accepted until it is "blurred"
;that is, until we accept it or
;someone won't press caps shift
;register A on return contains
;return code.
;A=0 BCE OK , A=1 emergency exit
;A=2 on line and short beeps
;A=3 call detected
LOAD_P
LOAD_0 CALL CL_BUF
CALL CAPS; accept block
CALL NC,ER_BL
LD A,BORDER
CALL #C00C
JR C,LOAD_0
AND A
JR Z,LOAD_0
CP 1
RET NZ
; checking the received checksum
; block
LD HL,BUFFER
XOR A
LD B,LEN
ADD_C ADD A,(HL)
INC HL
DJNZ ADD_C
CP(HL)
JR NZ,LOAD_0
LD HL,BUFFER
XOR A
LD B,LEN
SUB_C SUB (HL)
INC HL
DJNZ SUB_C
INC HL
CP(HL)
JR NZ,LOAD_0LD B,15
TRANS_M PUSH BC; we convey that everything
LD BC,1; ok accepted
LD A,"C"
LD (BUFFER),A
LD A,(SPEED)
CALL #C012
EI
LD B.5
PAUSE HALT
DJNZ PAUSE
D.I.
POP B.C.
DJNZ TRANS_M
XOR A
RET
ER_BL; emergency exit
;request confirmation to exit
;you must enter Yes or No
LD A,223
IN A,254
BIT 4.A
JR Z,TO_EX; let's go out
LD A,127
IN A,254
BIT 3,A
RET Z
JR ER_BL
TO_EX POP HL
LD A,1
RET
CAPS LD A,254; check for coercion
IN A,254; effective exit
RRCA
RET
SAVE_B
SAVE_BC CALL CL_BUF; block transfer
LD HL,BUFFER
LD B,LEN
XOR A
ADD_CR ADD A,(HL)
INC HL
DJNZ ADD_CR
LD(HL),A
LD HL,BUFFER
LD B,LEN
XOR A
SUB_CR SUB (HL)
INC HL
DJNZ SUB_CR
INC HL
LD(HL),A
LD BC,LEN+2
LD A,(SPEED)
CALL #C012
CALL CAPS; Are we catching everything OK?
CALL NC,ER_BL
XOR A
LD (BUFFER),A
LD (SDS0+1),A
SDS0 LD A,0
DEC A
LD (SDS0+1),A
JR Z,SAVE_BC
LD A,BORDER
CALL #C00C
JR C,SDS0
AND A
JR Z,SDS0
CP 1
RET NZ
LD A,(BUFFER)
CP "C"
JR NZ,SDS0
XOR A
RET
SPEED DEFB 0; speed
CL_BUF LD HL,BUFFERLD DE,BUFFER+1
LD BC, LEN+2
LD (HL),0
LDIR
RET
DEFS 64
BUFF
DEFS 300
BUFFER EQU BUFF; buffer address for
reception
▌▌║▌█▐│▌▌▐▐ WiTh The BeST wIsheS fROM
▌▌║▌█▐│▌▌▐▐ *C*R*E*A*T*O*R*
▌812/03.00▐
-+- zxasm+ plus