home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
nubye
/
nuby-ins.lbr
/
NUAS-1.IQS
/
nuas-1.ins
Wrap
Text File
|
1986-04-26
|
5KB
|
182 lines
; NUAS-1.INS for the Apple & Super Serial Card for NUBYE - 04/21/86
;
; 6551 I/O with internal baudrate generator
;
; This version is for Apple ][ computers, using the Microsoft CP/M card
; and the Apple Super Serial Card.
;
; Note: This is an insert, not an overlay.
;
; MODEM=DCE Super Serial Card
;
; TXD 2 --------> 2 RXD received data
; RXD 3 <-------- 3 TXD tranmitted data
; SG 7 --------- 7 SG signal ground
; DCD 8 --------> 6 DSR data set ready (carrier)
; DTR 20 <------- 20 DTR data terminal ready
;
; This cable configuration uses DSR signal at the SSC to check carrier
; and Serial card DCD wired to DTR (Jumper pin 20-8) so that modem
; result codes are received when carrier is off.
;
; Set modem switches as defined in NU-IMAT.DQC.
;
; THIS WORKS PROPERLY WITH NUBYE AND IS COMPATIBLE WITH IMP WITHOUT ANY
; CHANGES, ANY OTHER CONFIGURATION MIGHT REQUIRE RESETTING SOME MODEM
; SWITCHES WHEN GOING FROM NUBYE TO IMP, MDM7, MEX, ETC.
;
; ----------
;
; For the Apple //e, a user entered Control Q can trash the local dis-
; play by reverting back to 40 column mode. This is a patch to turn
; that Control Q into a backspace.
;
; In NUBYE find the label MINP2A: Just prior to MINP2A should be the
; lines:
; JNZ MINP2A
; MVI A,08H
;
; Add the following code just before JNZ MINP2A
;
; JZ CHNGIT
; CPI 'Q'-'@'
; JNZ MINP2A
; ;
; CHNGIT: MVI A,08H << note the added label
;
; When using a Softcard CP/M system and the SSC, a warmboot causes the
; serial baud rate port to reset to its default setting. (Whatever the
; switches are set to on the card.) The problem is fixed by zeroing out
; the CALL in the warmboot routine that resets the baud rate.
;
; Find the following code in NUBYE:
;
; JMP VWARMBT
;
; Just before this instruction, add the following code:
; PUSH PSW ;Save AF
; XRA A ;Make it zero
; STA 0DAD8H ;Patch out the opcode
; STA 0DAD9H ;Patch out the operand byte 1
; STA 0DADAH ;Patch out the operand byte 2
; POP PSW ;Make it like it was
; Here's the end -->
; For reference --> JMP VWARMBT
;
; NOTE: I suspect that this hack will work only with the 60k version
; version of Microsoft CP/M -- v2.2.3
;
; ========
;
; 04/21/86 Modified for NUBYE
; 09/08/85 Created overlay for BYE5. MBSSC-2 by Chris Heuser and
; Ryan Katri used as basis. - Norman Beeler
;
; ========
;
SLOT EQU 2 ; Slot 2 is normal
OFFS EQU 16*SLOT ; This is the slot offset
;
PORT EQU 0C088H+OFFS ; Dataport
STPORT EQU PORT+1 ; Status port
CPORT EQU PORT+2 ; Command port
BRPORT EQU PORT+3 ; Baud rate port
;
; Routine to check carrier .. if not return with zero flag set
;
MDCARCK:LDA STPORT ; Get status
ANI 40H ; Check DSR pin for DCD (see above)
XRI 40H ; Reverse the zero flag (the 6551
RET ; Has status 0 for DCD/DSR true)
;
; This routine will turn off the serial card and hang up the phone.
;
MDINIT: XRA A ; Turn off DTR
STA STPORT
PUSH B ; Save register
MVI B,20 ; Delay 2 sec to drop carrier
;
OFFTI: CALL DELAY ; 1 sec per loop
DCR B
JNZ OFFTI ; Keep going until finished
POP B ; Restore register
MVI A,4BH
STA CPORT
MVI A,18H ; Set 1200,8 bits, 1 stop
STA BRPORT
;
IF IMODEM
CALL IMINIT
ENDIF
;
RET
;
; Check the status to see if a character is available. Return with zero
; flag set, if not. If yes, use 0FFH to clear the flag.
;
MDINST: LDA STPORT ; Get modem status
ANI 8 ; Is data available?
RZ ; If no, return
ORI 0FFH ; Otherwise return true
RET
;
; See if the output is ready for another character.
;
MDOUTST:LDA STPORT ; Get modem status
ANI 10H ; Mask out junk
RZ
ORI 0FFH
RET
;
; Input a character from the modem port.
;
MDINP: LDA PORT ; Get character
RET
;
; This routine will output a character to the data port.
;
MDOUTP: STA PORT ; Send character
RET
;
; Reinitialize the modem and hang up the phone by dropping DTR and
; leaving it inactive.
;
MDQUIT: IF IMODEM ; If using a smartmodem
CALL IMQUIT ; Tell it to shut down
ENDIF ; IMODEM
;
; Called by the main program after caller types BYE
;
MDSTOP: MVI A,41H ; Drop DTR
STA CPORT
XRA A
STA STPORT
RET
;
; If you do not support a particular baud rate, put it here before
; SETINV:
;
SETINV: ORI 0FFH
RET
;
SET300: MVI A,16H
JMP SETBAUD
;
SET1200:MVI A,18H
JMP SETBAUD
;
SET2400:MVI A,1AH
JMP SETBAUD
;
SET4800:MVI A,1CH
JMP SETBAUD
;
SET9600:MVI A,1EH
;
SETBAUD:STA BRPORT
XRA A ; Shows the baud rate was changed ok
RET
;
; end of insert
; -------------