home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
modems
/
modem7
/
m740ft.mod
< prev
next >
Wrap
Text File
|
1985-02-12
|
2KB
|
96 lines
;*** New routine for T-mode file transfer in MDM740
;*** Eric Meyer - 1/85 (new code is in lowercase)
;(Note that the SPD command and its time delays have been deleted, and
;instead the transmitted characters now echo [from the remote in T mode,
;locally in L mode]. Also there's a new XONCH, which you can put in
;place of CRDLY if you want; modify your TXO routine to ask you what the
;XON character should be, and store it in XONCH. This allows waiting for
;virtually any "system prompt". Eg: use ":" for prompts like "1:")
;
MODOUT: PUSH PSW ;save the character so can use 'A' reg.
CPI LF
JNZ MODOUTL
LDA ADDLF ;going to send the line feed to modem?
ORA A
JNZ MODOUTL ;if yes, go do it
POP PSW ;get the char. back (a line feed)
lda locflg
ora a ;need to fake echo?
rz
mvi a,lf ;yes.
CALL TYPE ;show on CRT, do not send to modem
RET
;
MODOUTL: call rcvready ;check for incoming stuff
jnz mdoutl1
call in$moddatp ;get char
ora a ;(ignore nulls)
jz modoutl
cpi xoff ;(check for XOFF)
push psw
cnz type ;show on screen if not
pop psw
jnz modoutl
LDA XOFFTST ;waiting for X-off, X-on ?
ORA A
cnz waitxon ;if yes, wait for XON
mdoutl1: CALL SENDRDY ;wait until modem is ready to send
jnz mdoutl1
POP PSW ;get the character back
push psw
CALL OUT$MODDATP ;send character to modem
lda locflg
ora a ;need to fake echo?
jz mdoutl2
pop psw ;yes.
push psw
call type
jmp mdoutl3
mdoutl2: call stat ;check keyboard
ora a
jnz mdoutl3
call rcvready ;wait for echo
jnz mdoutl2
call in$moddatp
call type ;show it
mdoutl3: pop psw
CPI CR ;was it an end of line?
RNZ
;
MODOUTN:LDA XONWAIT ;wait for X-on after CR?
ORA A
JNZ WAITXON
RET
;.....
;
;
TXOFF: CALL RCVREADY
RNZ
CALL IN$MODDATP
ANI 7FH
CPI XOFF
CZ WAITXON
RET
;.....
;
;
WAITXON:CALL RCVREADY ;have a character? (like x-on)
JNZ WTXON1 ;if no char. see if want to abort
CALL IN$MODDATP
ANI 7FH ;strip off any parity
JZ WAITXON ;ignore nulls
push psw
call type ;show it
pop psw
mov e,a
lda xonch ;XON character
cmp e ;see if char. was x-on
rz
;
WTXON1: CALL STAT ;test to see if requesting cancellation
JZ WAITXON
CALL KEYIN ;can abort if the x-on never comes
CPI CANCEL ;ctl-x to abort?
JNZ WAITXON ;if not, keep going
RZ