home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
BYE5
/
B5A7-1.INS
< prev
next >
Wrap
Text File
|
2000-06-30
|
6KB
|
209 lines
; B5A7-1.INS for the Apple ][ and CCS 7710 interface for BYE5 - 02/02/87
;
; 6850 ACIA, no internal baudrate generator
;
;
; This version is for Apple ][ computers, using the Microsoft CP/M card
; and the CCS 7710 serial interface card.
;
; The 6850 has no baudrate generator. It relies on the user
; setting a dip switch to the maximum speed he wants to use.
; The program then uses the 6850 in the "divide by 16" mode
; to get that speed. It can then change to "divide by 64"
; to get the only other speed available. This type system
; normally limits the user to 1200 and 300 baud. If you
; set the dip switches for 2400, then you could only get
; 2400 and 600, eliminating both 1200 and 300 baud. Using
; either the Apricorn or CCS 7710 board just about precludes
; the user from wanting to obtain a new modem with 2400 bps.
; The 6850 uses the last two bits to select the divisor. 01
; gives "divide by 16" and 10 gives "divide by 64".
;
;-----------------------------------------------------------------------
;
; The CCS 7710 serial card is set up as DCE rather than the more usual
; DTE, and requires a special cable.....the following cable configura-
; ion is necessary to work with this overlay -----
;
; MODEM pin CCS pin
;
; 2 3
; 3 2
; 5 4
; 8 20
; 7 7
; 20 5
;
; = = = = = = = = = = = = = = = = = =
;
;-----------------------------------------------------------------------
;
; For the Apple //e, a user entered CTL-Q can trash the local display by
; reverting back to 40 column mode. This is a patch to turn CTL-Q into
; a backspace.
;
; In BYE5 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 CCS 7710, 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 BYE5:
;
; 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: This change may work only with the 60k version version of the
; MicroSoft CP/M, their v2.2.3.
;
;
;= = = = = = = = = = = = = = = = = = = = = = =
;
; 02/02/87 Adapted for the CCS 7710 serial interface card - Irv Hoff
;
;= = = = = = = = = = = = = = = = = = = = = = =
;
; Equates for Microsoft Softcard CP/M and Super Serial Card
;
SLOT EQU 2 ; Slot of serial interface
SLOTOFF EQU 16*SLOT ; Serial card slot offset
MAPOFF EQU 2000H ; Microsoft offset
;
PORT EQU 0C081H+SLOTOFF+MAPOFF ; Data port
MDCTL1 EQU PORT-1 ; Control port
MDRCV EQU 1 ; Bit to test for receive
MDSND EQU 2 ; Bit to test for send
;......
;
;
;-----------------------------------------------------------------------
;
; Routine to check carrier. If no carrier, return with zero flag set.
;
MDCARCK:LDA MDCTL1 ; Get status byte
ANI 4 ; Check for DCD
XRI 4 ; Reverse the zero flag (the 6850
RET ; has status 0 for DCD true)
;.....
;
;
; This routine will turn off the serial card and hang up the phone.
;
MDINIT: MVI A,0D5H ; Turn off DTR
STA MDCTL1
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,0B5H ; Turn everything back on, 8 bits, 1 stop
;
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 MDCTL1 ; Get modem status
ANI 1 ; Is data available?
RZ ; If no, return
ORI 0FFH ; Otherwise return true
RET
;.....
;
;
; See if the output is ready for another character.
;
MDOUTST:LDA MDCTL1 ; Get modem status
ANI 2 ; 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,0D5H ; Drop DTR, set to 1200 speed
STA MDCTL1
RET
;.....
;
;
; If you do not support a particular baud rate, put it here before
; SETINV:
;
SET2400:
SET4800:
SET9600:
SETINV: ORI 0FFH
RET
;.....
;
;
SET300: MVI A,16H
JMP SETBAUD
;
SET1200:MVI A,15H
;
SETBAUD:STA MDCTL1
XRA A ; Shows the baud rate was changed ok
RET
;.....
;
; end
;---------------------------------------------------------------------