home *** CD-ROM | disk | FTP | other *** search
- ; NOTE: This overlay is VERY dependent on version of the MODM7xx
- ; that it is running with. As of 5 Nov 84, it is configured
- ; for MODM700.COM as distributed. Be careful if configuring
- ; for different versions of MODM7xx.
- ; You should be able to configure it for your system just
- ; by modifying the two routines SETDTRH and SETDTRL. They
- ; are USART-specific. Then just overlay this file AFTER
- ; overlaying your normal configure file. Make sure that
- ; your normal configure file doesn't go past 3FFH since this
- ; one starts at 400H.
- ;
- ; MO700RV.ASM Racal-Vadic VA212PA overlay for MODM700
- ;
- ; The Racal-Vadic VA212PA modem is configured as follows
- ;
- ; 1*2 STANDART OPTN 2*1 ASYNCH/SYNCH
- ; 3*2 DATA RATE SEL 4*1 103 OPERATION
- ; 5*3 CHARACTER LEN 6*1 ORIG/ANS MODE
- ; 7*2 SLAVE CLOCK 8*2 DTR CONTROL
- ; 9*2 ATT/UNATT DISC 10*1 LOSS CXR DISC
- ; 11*2 REC SPACE DISC 12*2 SEND SPACE DIS
- ; 13*1 ABORT DISC 14*1 REMOT TST RESP
- ; 15*4 DSR CONTROL 16*2 CXR CONTROL
- ; 17*1 AUTO LINKING 18*3 ALB CONTROL
- ; 19*6 AUTO ANSWER 20*1 TERMINAL BELL
- ; 21*1 LOCAL COPY 22*3 DIAL MODE
- ; 23*2 BLIND DIAL 24*1 CALL PROGRESS
- ; 25*2 FAIL CALL SEL 26*9 AUTO REDIAL
- ;
- ; #, K, and * may be used in the phone number command line,
- ; CAL #8K9Kxxx-xxx-xxxx (up to 31 digits).
- ;
- ; Initialization routines need to be changed to support your I/O devices
- ; are: SETDTRH and SETDTRL - Examples for USART
- ; initialization may be found in BYE2-16.LBR. The modem is disconnected
- ; from on-line by dropping the DTR line, this must be implemented in the
- ; SETDTRL: routine in accordance with your I/O devices. The modem is
- ; enabled by setting DTR high and must be implemented in your SETDTRH:
- ; routine.
- ;
- ; To install the overlay make your changes for the USART
- ; dependent routines. This overlay may directly be used
- ; if your system uses the Intel 8251 USART.
- ;
- ; A>DDT MODM700.COM <== Start with MODM700.COM (or .OBJ)
- ; DDT VERS 2.2
- ; NEXT PC
- ; 4A00 0100
- ; -IM7xx-1.HEX
- ; -R <== Read in your normal MDM7xx overlay
- ; -IMO700RV.HEX
- ; -R <== Read in this to add PA212 support
- ; NEXT PC
- ; 4A00 0000
- ; -G0
- ;
- ; A>SAVE 73 MODM700.COM
- ;
- ; K, # and * are valid characters for the Racal (#8K9Kxxx-xxxx) and may
- ; be included in the phone number. #8 is used by some PBX systems to
- ; have a clear phone line with no call waiting signals. INSURE ALL NAMES
- ; IN THE PHONE NUMBER LIBRARY HAVE LOWER CASE "k" and phone numbers upper
- ; case "K" if needed.
- ;
- ;***********************************************************************
- ;
- ; 11/5/84 - Adjusted for MODM700 - mabry
- ; 3/28/84 - Adjusted equates for MDM730 - mabry
- ; 3/16/84 - Adjusted equates for MDM728 - mabry
- ; 3/5/84 - Adjusted equates for MDM727 - mabry
- ; 2/18/84 - Adjusted equates for MDM724 - mabry
- ; 2/16/84 - Adjusted equates for MDM723 and modified DIAL routine so
- ; it can handle the new 36 number phone number library. - mabry
- ; 1/5/84 - Set up equates at end for MDM716 and removed all hardware-
- ; specific routines (except SETDTRH and SETDTRL) so that
- ; this file can be used with most other systems assuming
- ; there is an overlay for those systems already. - mabry
- ; 11/11/83 - Renamed to M7RV-1.ASM, no changes - Irv Hoff
- ; 10/15/83 - First version for Racal-Vadic - Fred Willink
- ;
- ;***********************************************************************
- ;
- YES: EQU 0FFH
- NO: EQU 0
- ;
- CANCEL: EQU 'X'-40H ;^X = Cancel
- ESC: EQU '['-40H ;^[ = escape
- BELL: EQU 'G'-40H ;^G = bell character
- LF: EQU 'J'-40H ;^J = linefeed
- CR: EQU 'M'-40H ;^M = carriage RETRN
- PRINT: EQU 9
- BDOS: EQU 0005H
- ;
- LIBLEN: EQU 34 ; Length of each phone number
- ;
- ;=======================================================================
- ;
- ORG 0100H
- ;
- ;
- DS 3 ; Skip JMP START
- ;
- PMMIMODEM: DB NO
- SMARTMODEM: DB YES ; yes=Racal-Vadic VA122PA the main
- ; program test this byte to use the
- ; new routines
- DS 1
- CLOCK: DS 1 ;clock speed x10, up to 25.5 mhz.
- ;2 MHz=20, 3.68 MH=37, 4 MHz=40, etc.
- MSPEED: DS 1 ;sets display time for sending a file
- ;0=110 1=300 2=450 3=600 4=710
- ;5=1200 6=2400 7=4800 8=9600 9=19200
- DS 3
- SETUPTST: DS 1 ;yes=non-PMMI setup routine
- SCRNTEST: DS 1 ;yes=home cursor and clear screen
- DS 29
- ;
- ;
- ; Handles in/out ports for data and status
- ;
- IN$MODCTL1: DS 10 ;in modem control port
- OUT$MODDATP: DS 10 ;out modem data port
- IN$MODDATP: DS 10 ;in modem data port
- ANI$MODRCVB: DS 3 ;bit to test for receive ready
- CPI$MODRCVR: DS 3 ;value of receive bit when ready
- ANI$MODSNDB: DS 3 ;bit to test for send ready
- CPI$MODSNDR: DS 3 ;value of send bit when ready
- ;
- IN$BAUDRP: DS 3 ;in baudrate port
- OUT$BAUDRP: DS 3 ;out baudrate port
- OUT$MODCTL1: DS 3 ;out modem control port #1
- OUT$MODCTL2: DS 3 ;out modem control port #2
- ;
- LOGONPTR: DS 2
- JMP$DIAL: JMP DIAL ; \
- JMP$DISCONNT: JMP DISCONNT ; > We change these vectors
- JMP$GOODBYE: JMP GOODBYE ; /
- JMP$INITMOD: DS 3
- JMP$NEWBAUD: RET ; Defeat this one...
- DS 2
- JMP$NOPARITY: RET ; ...and this one...
- DS 2
- JMP$PARITY: RET ; ...and this one...
- DS 2
- JMP$SETUPR: DS 3
- JMP$SPCLMENU: RET ; ...and this one.
- DS 2
- JMP$SYSVER: DS 3
- JMP$BREAK: DS 3
- ;
- JMP$ILPRT: DS 3
- JMP$INBUF: DS 3
- JMP$INLNCOMP: DS 3
- JMP$INMODEM: DS 3
- JMP$NXTSCRN: DS 3
- JMP$TIMER: DS 3
- ;
- ;.....
-
- ; After all the absolute locations above will generally be the user's
- ; hardware-specific subroutines. We allow up to 3FFH for those and
- ; then start some routines of our own that support the Racal-Vadic PA212
- ; modem. If the user's routines need more room, this might be able to
- ; start a little lower, but just a few bytes probably.
-
- ORG 400H
- ;
- ; NOTE: You will have to change these next two routines if you don't
- ; have an 8251A for your USART.
- ;
- ENABL EQU 37H
- DTR EQU 2
- ;
- ; Raise DTR to enable modem
- ;
- SETDTRH: MVI A,enabl
- JMP OUT$MODCTL1
- ;.....
- ;
- ;
- ; Drop DTR to disable modem
- ;
- SETDTRL: MVI A,enabl-dtr
- JMP OUT$MODCTL1
- RET
- ;.....
- ;
- ; End of USART dependent routines
- ;=======================================================================
- ;
- ; RACAL-VADIC DIALING ROUTINES
- ;
- ;=======================================================================
- ;
- ; Dialing routine
- ;
- DIAL: XRA A ; Zero out some flags
- STA CRFLAG
- STA RNGBKFL
- STA RINGFLG
- STA DOT ; Indicates dot encountered in library
- LXI H,0
- SHLD DIALCT
- LXI H,CMDBUF+1 ; Point to character count of user
- MOV A,M ; input to prompt
- CPI 3+1 ; More than 3 letters input ?
- JC DIAL1 ; No, then go display library of #'s
- ;
- ;
- ; If there were only 3 characters, then "CAL<RET>" was typed -- the user
- ; obviously expecting to get a phone number (or letter) from the library
- ; file. If 4 or more, a number (or letter) was typed in from the menu
- ; command line, so move the characters down 4 to compensate. Needed for
- ; auto-redialing of menu command line entries.
- ;
- MOV C,A
- MVI B,0
- SUI 4 ; Adjust count down by 4
- MOV M,A ; Store back in CMDBUF+1
- INX H ; Point to CMDBUF+2
- XCHG
- LXI H,CMDBUF+6
- CALL MOVER ; Move buffer down by 4
- JMP DIAL4
- ;...
- ;
- ;
- ; Comes here if no phone number was manually entered after "CAL" and if
- ; no phone library letter was entered. Displays the phone number li-
- ; brary, then asks for an entry.
- ;
- DIAL1: MVI C,18 ; Lines of phone numbers to display
- LXI H,NUMBLIB
- LXI D,BUFFER
- CALL NEWLINE
- STAX D
- INX D
- ;
- DIAL2: MVI B,LIBLEN
- CALL MOVE
- CALL SPACES
- MVI B,LIBLEN
- CALL MOVE
- CALL NEWLINE
- DCR C
- JNZ DIAL2
- ;
- DIAL3: MVI A,'$'
- STAX D
- CALL CLRTST ;clear screen
- MVI C,PRINT
- LXI D,BUFFER ;show library
- CALL BDOS
- CALL JMP$ILPRT
- DB CR,LF,'Enter library letter or phone number,',CR,LF
- DB 'CTL-X quits while dialing or ringing: ',0
- LXI D,CMDBUF
- CALL INBUF ;get input, library letter or phone #
- ;
- ;
- ; You now have either a library letter or a manually entered phone num-
- ; ber. These either came from the menu command line or from the library
- ; command line. Next we see if a letter, if so, get the corresponding
- ; line with phone number from the library. If a number we ignore the
- ; library look-up. (Ringback numbers must end with letter 'R'.)
- ;
- DIAL4: LXI H,CMDBUF+1
- MOV A,M ; Get character count
- ORA A ; No entry ?
- JZ DIALEXIT ; then exit
- PUSH H
- CALL DISCONNT ;disconnect the modem and place in idle
- POP H
- MOV A,M ; Get count again
- CPI 1 ; One character (ie. get phone number
- JZ DIAL4A ; from library) ?
- MVI A,YES ; Set dot flag so that we don't skip
- STA DOT ; anything user types in
- JMP DIAL9
- DIAL4A:
- INX H ; Point to user entry
- MVI B,'A' ; Need to compare against A-Z
- MVI E,0
- MVI C,'Z'-'A'+1 ; How many to check
- MOV A,M ; Get user input character
- ;
- DIAL5: CMP B ; Compare against letter (A-Z)
- JZ DIAL6 ; Got match
- INR B ; Next letter
- INR E ; Keep count
- DCR C
- JNZ DIAL5 ; Loop for all letters
- ; Checked all letters, now do numbers 0-9
- MVI B,'0' ; Start at 0
- MVI C,'9'-'0'+1 ; How many to check
- DIAL5A:
- CMP B ; Compare against number
- JZ DIAL6 ; Got match
- INR B ; Next number
- INR E ; Keep counter
- DCR C
- JNZ DIAL5A ; Loop for all numbers (0-9)
- JMP DIAL9 ; This should only happen with illegal
- ; entries.
- ;
- ;
- ; Now have a match between the requested letter and one in the library
- ; E-reg. holds the decimal equivalent (0-25) of the letter (A-Z) or
- ; (26-35) of the number (0-9).
- ;
- DIAL6: LXI H,NUMBLIB ; Starting address of library
- LXI B,LIBLEN ; Length of each entry of library
- MOV A,E
- ORA A
- JZ DIAL8
- ;
- DIAL7: MOV A,M
- ORA A ; Make sure we don't go past library
- JZ DIALBAD ; Jump if we do
- DAD B ; Index into library by (E)*LIBLEN
- DCR E
- JNZ DIAL7
- ;
- ;
- ; Now have the line in the phone number library matching the requested
- ; letter so store that line starting at 'CMDBUF+1'
- ;
- DIAL8: MVI B,LIBLEN
- LXI D,CMDBUF+1
- XCHG
- MOV M,B
- XCHG
- INX D
- CALL MOVE
- ;
- ;
- ; Now have the full line including phone number in 'CMDBUF' area.
- ;
- DIAL9: LDA SMARTMODEM
- ORA A
- CNZ SMINIT
- ;
- DIAL10: LXI H,CMDBUF+1
- MOV E,M
- INX H
- ;
- DIAL11: MOV A,M
- ORA A
- JZ DIALBAD
- ;
- ;
- ; Dial a digit, check keyboard for abort
- ;
- CALL DIALA
- CALL STAT
- JZ DIAL13
- CALL KEYIN
- CPI CANCEL
- JNZ DIAL13
- JMP DIALEXIT
- ;
- DIAL13: INX H
- DCR E
- JNZ DIAL11
- ;
- ;
- ; Show the number of dial attempts
- ;
- MVI B,CR ;end with cr
- CALL SNDCHR
- ;
- EATIT: CALL JMP$INMODEM ;gobble the modem response
- JNC EATIT
- CALL JMP$ILPRT
- DB ' - try #',0
- LHLD DIALCT
- INX H
- SHLD DIALCT
- CALL DECOUT
- MVI A,' '
- CALL TYPE
- MVI B,CR
- CALL SNDCHR
- ;
- DIAL14: CALL JMP$INMODEM
- JNC DIAL14
- JMP SMRESULT
- ;
- DIALAGN: LDA CRFLAG
- ORA A
- JNZ DIALAGN1
- CALL JMP$ILPRT
- DB ' Redial? '
- DB '(Y/N/C): ',BELL,0
- CALL KBDCHR
- CALL CRLF
- CPI 'N'
- JZ DIALAGN2
- CPI 'Y'
- JZ DIALAGN1
- CPI 'C'
- JNZ DIALAGN
- MVI A,1
- STA CRFLAG
- ;
- DIALAGN1: MVI B,35
- CALL JMP$TIMER
- CALL CRLF
- LDA RNGBKFL
- ORA A
- JZ DIAL4
- STA CMDBUF+1
- JMP DIAL4
- ;.....
- ;
- ;
- DIALAGN2: CALL DIALBGN ;disconnect the modem
- JMP MENU
- ;
- ;
- ; Connection has been made
- ;
- CONMADE: CALL JMP$ILPRT
- DB CR,LF,LF,'CONNECTION MADE',BELL,0
- LDA CRFLAG
- ORA A
- JZ RETRN
- CALL JMP$ILPRT
- DB ' - hit any key to stop the bell ',0
- ;
- CONMADE1: CALL STAT
- JZ CONMADE2
- CALL KEYIN
- XRA A
- JMP RETRN
- ;
- CONMADE2: MVI B,10
- CALL JMP$TIMER
- MVI A,BELL
- CALL TYPE
- JMP CONMADE1
- ;.....
- ;
- ;
- ; Automatic dialing routine, prints the number being dialed
- ;
- DIALA: CALL TYPE
- CPI 'R'
- JNZ DIALA1
- PUSH PSW
- MOV A,E
- CPI 1
- JZ RINGBK
- POP PSW
- ;
- DIALA1: MOV B,A
- CALL DIALAD
- CPI '.' ; Are we at a dot in the string ?
- JNZ DIALA1A ; Jump around if no
- MVI A,YES
- STA DOT ; Set flag if yes
- DIALA1A:
- LDA DOT ; Have we encountered a dot yet ?
- ORA A
- RZ ; RETRN if no
- MOV A,B
- CPI '*' ;* is valid dial digit
- JZ DIALA2
- CPI '#' ;# is valid dial digit
- JZ DIALA2
- CPI 'K' ;k indicates wait for next dial tone
- JZ DIALA2 ;all k's in phone # library should be
- CPI '0' ;lower case.
- RC
- CPI '9'+1
- RNC
- ;
- ;
- ; Sends the digit to the modem.
- ;
- DIALA2: MOV C,A
- JMP SNDCHR
- ;
- ;
- ; Print bad library number message and abort if a null is encountered.
- ;
- DIALBAD: CALL JMP$ILPRT
- DB CR,LF,'++ Bad library number called ++',CR,LF,0
- ;
- DIALEXIT: CALL DISCONNT
- ;
- DIALEXT1: CALL CRLF
- XRA A
- STA CRFLAG
- ;
- DIALEXT2: CALL JMP$INMODEM
- JNC DIALEXT2
- CALL JMP$GOODBYE
- JMP MENU
- ;.....
- ;
- ;
- DIALBGN: JMP DISCONNT
- ;
- ;
- ; Do any alternate dialing such as 'MCI' or 'SPRINT'
- ;
- DIALAD: MOV A,B
- CPI '<'
- JNZ DIALAD1
- PUSH H
- LXI H,ALTDL1
- JMP DIALAD2
- ;
- DIALAD1: CPI '>'
- RNZ
- PUSH H
- LXI H,ALTDL2
- ;
- DIALAD2: MOV A,M
- CPI '$'
- JZ DIALAD3
- CALL TYPE
- MOV B,A
- CALL SNDCHR
- INX H
- CALL STAT
- JZ DIALAD2
- CALL KEYIN
- CPI CANCEL
- JZ DIALEXIT
- JMP DIALAD2
- ;
- DIALAD3: MVI A,' '
- CALL TYPE
- POP H
- RET
- ;.....
- ;
- ;
- ; Disconnect the Smartmodem from the phone line
- ;
- GOODBYE:
- DISCONNT: CALL SETDTRL ;drop dtr
- LXI H,DISC0 ;send the idle command just in case
- CALL SENDMDM ;the modem was in command mode instead
- ;of on line
- DISCONN2: CALL JMP$INMODEM ;gobble the idle message from the
- JNC DISCONN2 ;modem after the 'I' command is
- MVI B,10 ;sent and give it time to
- CALL JMP$TIMER ;reinitialize
- CALL SETDTRH ; Set DTR active again
- RET
- ;.....
- ;
- ;
- DISC0: DB 'I',CR,'$'
- DOT: DS 1 ; Flag for don encountered
- ;.....
- ;
- ;
- ; Set Smartmodem for dialing
- ;
- SMINIT: CALL SETDTRH ;enable dtr
- LXI H,SM$DAL1 ;put racal in command mode
- CALL SENDMDM
- JMP SMRESULT ;get results (hello:i'M READY)
- ;
- SMINIT0: MVI B,10
- CALL JMP$TIMER
- LXI H,SM$DAL2 ;put racal in dial mode
- CALL SENDMDM
- CALL JMP$INMODEM ;gobble the modem echo smresult
- ;will take care of the the rest
- JMP SMRESULT ;number?
- ;
- SMINIT1: RET
- ;.....
- ;
- ;
- SM$DAL1: DB 'E'-40H,CR,'$' ;get into command mode
- ;
- SM$DAL2: DB 'D',CR,'$' ;dial
- ;
- ;
- ; Send the string pointed to by 'HL' to both the CRT and the modem.
- ;
- SENDOUT: PUSH H
- CALL SNDNOW
- POP H
- MOV A,M
- CPI '$'
- RZ
- MOV A,M
- CALL OUT$MODDATP
- CALL TYPE
- INX H
- JMP SENDOUT
- ;.....
- ;
- ;
- ; Send the string pointed to by 'HL' to the modem only
- ;
- SENDMDM: PUSH H
- CALL SNDNOW
- POP H
- MOV A,M
- CPI '$'
- RZ
- CALL OUT$MODDATP
- INX H
- JMP SENDMDM
- ;......
- ;
- ;
- ; Checks for answer from Smartmodem
- ;
- SMRESULT: LXI H,RESULBUF
- PUSH H
- ;
- SMRESUL2: CALL RCVRDY
- JZ SMRESUL1
- CALL STAT
- JZ SMRESUL2
- CALL KEYIN
- CPI CANCEL
- JNZ SMRESUL2
- MVI B,CR
- CALL SNDCHR
- POP H
- JMP DIALEXT1
- ;
- RESULBUF: DS 16
- ;
- SMRESUL1: CALL JMP$INMODEM
- JC SMRESUL4
- ;
- SMRESUL6: ANI 7FH
- CPI ' '
- JZ SMRESUL1 ;throw away spaces, lf, cr, nuls
- CPI LF ;bell, and * in the resulbuf
- JZ SMRESUL1
- CPI 00H
- JZ SMRESUL1
- CPI '*'
- JZ SMRESUL1
- CPI CR
- JZ SMRESUL1
- CPI BELL
- JZ SMRESUL1
- POP H
- MOV M,A
- INX H
- PUSH H
- JMP SMRESUL2
- ;
- ;
- ; Compare the Racal response
- ;
- SMRESUL4: POP H
- LXI D,RESULBUF
- CALL JMP$INLNCOMP
- DB 'HE',0 ;hello:i'M READY
- JNC SMINIT0
- CALL JMP$INLNCOMP
- DB 'NU',0 ;number?
- JNC SMINIT1
- CALL JMP$INLNCOMP
- DB 'BU',0 ;busy
- JNC NUM$BUSY
- CALL JMP$INLNCOMP
- DB 'DI',0 ;dialing...
- JNC SMRESULT
- CALL JMP$INLNCOMP
- DB 'RI',0 ;ringing...
- JNC RING
- CALL JMP$INLNCOMP
- DB 'AN',0 ;answer tone
- JNC SMRESULT
- CALL JMP$INLNCOMP
- DB 'ON',0 ;on line
- JNC CONMADE
- CALL JMP$INLNCOMP
- DB 'NO',0 ;no dial tone
- JNC NO$DT
- CALL JMP$INLNCOMP
- DB 'FA',0 ;failed call
- JNC FAILCAL
- CALL JMP$INLNCOMP
- DB 'VO',0 ;voice
- JNC VOICE
- CALL JMP$INLNCOMP
- DB 'ID',0 ;idle
- JNC FAILCAL
- ;
- SMDM1: JMP FAILCAL
- ;.....
- ;
- ;
- VOICE: CALL CRLF
- CALL JMP$ILPRT
- DB 'VOICE !!! pick up reciever and enter RETRN ',BELL,0
- CALL KBDCHR
- CPI CR
- JNZ VOICE
- CALL SNDCHR
- ;
- VOICE1: CALL JMP$INMODEM ;gobble modem response
- JNC VOICE1
- CALL DISCONNT
- JMP MENU
- ;
- ;
- ; Failed call is the result of no answer after 60 sec of ringing, wrong
- ; baud rate, or an incorrect response from the modem.
- ;
- FAILCAL: CALL CRLF
- CALL JMP$ILPRT
- DB 'No answer... Failed call....',0
- JMP DIALAGN
- ;
- ;
- ; No dial tone can occur when using the alternate dialing option and a
- ; dial tone is not detected after the pause 'K' or within 5 sec after
- ; the start of the modem dialing routine
- ;
- NO$DT: CALL CRLF
- CALL JMP$ILPRT
- DB 'No dial tone present....',0
- JMP DIALAGN
- ;
- NUM$BUSY: CALL CRLF
- CALL JMP$ILPRT
- DB 'Number busy....',0
- JMP DIALAGN
- ;
- RING: LDA RINGFLG
- ORA A
- JZ SMRESULT
- JMP RINGBK1
- ;
- ;
- ; Handles the special ringback numbers. Dials, lets it ring only once,
- ; hangs up and then redials.
- ;
- RINGFLG: DB 0
- ;
- RINGBK: POP PSW
- LDA CMDBUF+1
- STA RNGBKFL
- STA RINGFLG
- SUI 1
- STA CMDBUF+1
- RET
- ;.....
- ;
- ;
- ; Hang up and redial
- ;
- RINGBK1: CALL HANGUP
- MVI B,50
- CALL JMP$TIMER
- CALL CRLF
- JMP DIAL9
- ;.....
- ;
- ;
- HANGUP: MVI B,CR ;abort the dialing process
- CALL SNDCHR
- XRA A
- STA RINGFLG ;clear flag for next dial
- ;
- HANGUP1: CALL JMP$INMODEM ;wait for the modem to complete its
- JNC HANGUP1 ;response to the cr
- JMP DISCONNT ;RETRN here
- ;.....
- ;
- ;
- ; Time-out routine. Must be called with mask in 'D' reg. for input at
- ; relative port 2 and number of seconds (times 10) in 'C' reg.
- ;
- WAIT: MVI B,2
- CALL JMP$TIMER
- CALL IN$MODCTL1
- ANA D
- RZ
- PUSH B
- PUSH D
- CALL STAT
- JZ WAIT1
- CALL KEYIN
- CPI CANCEL
- JZ WAIT2
- ;
- WAIT1: POP D
- POP B
- DCR C
- JNZ WAIT
- STC
- RET
- ;.....
- ;
- ;
- WAIT2: POP D
- POP B
- JMP DONETD
- ;.....
- ;
- ;
- ; Patch for STUPENT: to prevent sending of Hayes commands to Racal
- ;
- ;
- ORG STUPENT
- ;
- ;
- LDA SETUPTST
- ORA A
- JZ NOTVLD
- CALL JMP$SETUPR
- JMP XPRT
- ;
- ;
- ;
- ; Lets fix the byebye routine. It calls GOODBYE: directly and not
- ; through the jump vectors at the begining so make it use the jump
- ; vectors.
- ;
- ;
- ORG BYEBYE
- ;
- ;
- LDA PMMIMODEM
- ORA A
- CNZ JMP$GOODBYE
- LDA SMARTMODEM
- ORA A
- CNZ JMP$GOODBYE
- CALL JMP$ILPRT
- DB CR,LF,'<<Exit to CP/M>>',CR,LF,0
- JMP EXIT
- ;.....
- ;
- ;
- ; Fix for DONETD: the routines GOODBYE: and DISCONNT: are the same so
- ; no need to call twice.
- ;
- ;
- ORG DONETD
- ;
- ;
- CALL JMP$ILPRT
- DB CR,LF,'<< DISCONNECTED >>',BELL,CR,LF,0
- CALL JMP$GOODBYE
- JMP MENU0
- ;
- ;
- ;
- ; M730RV.ASM uses these routines located in the main program.
- ; These equates have to be set for particular releases of MDM7xx.
- ; Currently they are set for MDM730.
- ;
- ALTDL1: EQU 0DCEH ;alt dial 1
- ALTDL2: EQU 0DE6H ;alt dial 2
- BUFFER: EQU 4F00H
- BYEBYE: EQU 404DH
- CLRTST: EQU 4862H ;clear screen test
- CMDBUF: EQU 49A7H ;cmd buffer
- CRFLAG: EQU 4992H ;cr flag
- CRLF: EQU 2B7BH ;print crlf
- DECOUT: EQU 2BBDH
- DIALCT: EQU 4987H
- DONETD: EQU 2B04H
- EXIT: EQU 2C5AH
- INBUF: EQU 2F3EH
- KBDCHR: EQU 2BAAH ;wait for keyboard input
- KEYIN: EQU 2B93H ;kbd input
- MENU: EQU 32EDH ;menu
- MENU0: EQU 32A6H
- MOVE: EQU 2C9BH
- MOVER: EQU 30DFH ;move routine
- NEWLINE: EQU 4814H
- NOTVLD: EQU 3F78H
- NUMBLIB: EQU 0E00H ;number library
- RCVRDY: EQU 1E38H ;receiver ready
- RETRN: EQU 197EH
- RNGBKFL: EQU 49A2H ;ring back flag
- SNDCHR: EQU 2CA4H ;send character
- SNDNOW: EQU 1E4AH
- STUPENT: EQU 46F1H
- SPACES: EQU 481DH
- STAT: EQU 2B88H ;console status
- TYPE: EQU 2B9DH ;type
- XPRT: EQU 3DFEH
- ;
- END