home *** CD-ROM | disk | FTP | other *** search
- ; SMDMPAT.ASM
- ;
- ; XMODEMxx PATCH FILE FOR SMARTMODEM
- ;
- ; 07/17/84 - Modified to use with the TRS-4 and an Anchor
- ; modem. Renamed to XMTR4SM.ASM - Ed Richter
- ; 11/17/83 - Renamed to XMSM-1.ASM - Irv Hoff
- ; 02/11/83 - Edited - Sigi Kluger
- ;
- MODCTLP: EQU 0EAH ;CONTROL/STATUS
- MODSNDB: EQU 40H ;BIT TO TEST FOR SEND
- MODSNDR: EQU 40H ;VALUE WHEN READY
- MODRCVB: EQU 80H ;BIT TO TEST FOR RECEIVE
- MODRCVR: EQU 80H ;VALUE WHEN READY
- MODDCDB: EQU 20H ;CARRIER DETECT BIT
- MODDCDA: EQU 0 ;VALUE WHEN ACTIVE
- MODDATP: EQU 0E8H ;PORT RESET/CARRIER DETECT
- MODDATO: EQU 0EBH ;DATA IN/OUT PORT
- MSPEED: EQU 03CH ;MSPEED-LOADED AFTER BYE SPEED DETECT
- ;
- BASE: EQU 100H ;start of TPA
- ;
- ;-------------------------------------------------------------------
- ;
- ; Jump table: The jump table must be in exactly the same sequence
- ; as the one in XMODEM. Note the ORG of 103H - This jump table has
- ; no jump to BEGIN.
- ;
- ;
- ORG BASE+3 ;start after JMP BEGIN
- ;
- ;
- CONOUT: JMP 00000 ;CRT out vector (MUST BE JMP 0 IF NOT IMPLEM.)
- PMINIT: JMP MINIT ;initialize whatever has to be (or do RET)
- PUNINIT: JMP UNINIT ;undo whatever MINIT did (or RET)
- PSENDR: JMP SENDR ;send data byte on stack (POP PSW / OUT)
- PCAROK: JMP CAROK ;test for carrier. RET Z=ok, NZ=no carrier
- PMDIN: JMP MDIN ;receive data byte
- PGETCHR: JMP GETCHR ;IN from modem data only
- PRCVRDY: JMP RCVRDY ;check receive ready RET Z=ready
- PSNDRDY: JMP SNDRDY ;check send ready RET Z=ready
- PSPEED: JMP SPEED ;get speed factor in ACC
- PSPARE1: JMP SPARE ;3 jumps for custom routines
- PSPARE2: JMP SPARE
- PSPARE3: JMP SPARE
- ;
- ;-----------------------------------------------------------------------
- ;
- SPARE: RET ;for later use
- MINIT: RET ;no initialization required
- UNINIT: RET ;not initialized, so no un-initialize.
- ;.....
- ;
- ;
- ; SNDRDY - check if ready to send
- ;
- SNDRDY: IN MODCTLP ;get status byte
- ANI MODSNDB ;mask off bit to be tested
- XRI MODSNDR ;set status flag
- RET
- ;.....
- ;
- ;
- ; SENDR - send character
- ;
- SENDR: POP PSW ;get character from stack
- OUT MODDATO ;send character
- RET
- ;.....
- ;
- ;
- ; RCVRDY - check receive ready
- ; RET with Z = character available.
- ; RET error code in A
- ;
- RCVRDY: IN MODCTLP
- ANI MODRCVB ;isolate ready bit
- CPI MODRCVR ;test it
- MVI A,0
- RET
- ;.....
- ;
- ;
- ; MDIN - receive a character (GETCHR is identical)
- ;
- GETCHR:
- MDIN: IN MODDATO ;get character
- RET ;return it
- ;.....
- ;
- ;
- ; SPEED - This routine returns the speed code.
- ; 0=110, 1=300, 2=450, 3=600, 4=710, 5=1200
- ; Load your speed byte from low memory, or
- ; simply MVI A,n and RET for default speed only
- ;
- SPEED: LDA MSPEED ;BYEII is being used with this system
- RET ;check with yours
- ;.....
- ;
- ;
- ; CAROK - check for presence of carrier.
- ; RET with Z = carrier on
- ;
- CAROK: IN MODDATP ;get status
- ANI MODDCDB ;get cd bit
- CPI MODDCDA ;test bit
- RET
- ;.....
-