home *** CD-ROM | disk | FTP | other *** search
-
- ; B3OS-2.INS - Osborne OS-1 insert for BYE3 - 07/30/85
- ;
- ; 6850 ACIA
- ;
- ; Note: This is an insert, not an overlay. If your OS-1 does not have
- ; have the hardware mod to support DTR, (shown below) then set
- ; the NODTR option in BYE3 to "YES". Also set:
- ;
- ; IMODEM EQU YES
- ;
- ;
- ; MAIN LOGIC BOARD TRACE CUTS:
- ; --------------------------
- ; Solder Side:
- ;
- ; Cut trace running from pin 5 to pin 6 on inner row of pads
- ; used in mounting the RS-232 female serial connector at the front
- ; of main logic board. Pin 1 is pad with wide ground trace.
- ;
- ; Component side:
- ;
- ; Cut trace from pin 5 of UC4 (6850) to R20 (10K ohm).
- ; Cut trace that runs between pins 3 and 4 of UC4 (6850).
- ;
- ;
- ; PART ADDITIONS:
- ; --------------
- ; Solder side:
- ;
- ; Add jumper from pin 1 of UE3 (MC1458) to pin 5 of inner row of
- ; RS-232 serial port pads. Pin 1 has wide ground trace.
- ; Add jumper from pin 3 to pin 5 of UE3 (MC1458).
- ; Add jumper from pin 10 of UD4 (LM3400) to pin 5 of UC1 (74LS08).
- ; Add jumper from pin 4 of UC1 (74LS08) to pin 1 of UE20 (74LS04).
- ; Add jumper from pin 6 of UC1 (74LS08) to pin 5 of UA11 (74S04).
- ; Add jumper from pin 6 of UA11 (74S04) to pin 19 of UC15 (6821).
- ;
- ; Component side or solder side (whichever side you feel more
- ; comfortable using for mounting components):
- ;
- ; Add 10K ohm resistor from Vcc (+5 volts) to pin 2 of UE3 (MC1458).
- ; Add 220 ohm resistor from pin 5 of UC4 (6850) to pin 2 of UE3 (MC1458).
- ; Add 1k ohm resistor from pin 19 of UC15 (6821) to Vcc (+5 volts).
- ;
- ; NEW RS-232 MODEM CABLE:
- ; ----------------------
- ;
- ; OCC-1 MODEM
- ;
- ; 2 RXD 3 RXD
- ; 3 TXD 2 TXD
- ; 4 DCD (new function) 8 DCD
- ; 5 DTR (new function) 20 DTR
- ; 7 GND 7 GND
- ;
- ; = = = = = = = = = = = = = = = = = =
- ;
- ; 07/30/85 Restored to original format - pst
- ; 07/17/85 Revised for use with BYE3 - Kevin Murphy
- ;
- ; = = = = = = = = = = = = = = = = = =
- ;
- HARDMOD EQU YES ; YES, if hardware mods have been done to Osborne
- ; O-1 to support DTR and modified DCD.
- ; NO, if the O-1 is standard (no mods). If NO
- ; you must be using a Hayes Compatible modem and
- ; set NODTR to yes in the main equates.
-
- ;
- STATM EQU 02A00H ; Status memory location
- DATA EQU 02A01H ; Data memory location
- CDATA EQU 02C02H ; Video PIA data register
- CSTAT EQU 02C03H ; Video PIA status register
- ;
- IF HARDMOD
- DCD EQU 40H ; Data carrier detect
- ENDIF
- ;
- IF NOT HARDMOD
- DCD EQU 04H ; Data carrier detect
- ENDIF
- ;
- RDAV EQU 11111110B ; Reversed DAV
- DAV EQU 00000001B ; Normal DAV
- ;
- RTBMT EQU 11111101B ; Reversed TBMT
- TBMT EQU 00000010B ; Normal TBMT
- ;
- BD300 EQU 22 ; 300 baud
- BD1200 EQU 21 ; 1200 baud
- ;
- ;-----------------------------------------------------------------------
- ;
- ; See if we still have a carrier - if not, return with the zero flag set
- ;
- MDCARCK:
- IF HARDMOD
- DI ; Disable interrupts
- OUT 0
- LDA CSTAT ; Read video PIA status register
- OUT 1
- EI
- ENDIF
- ;
- IF NOT HARDMOD
- CALL BNKINS ; Get modem status
- PUSH PSW ; Save it
- ANI DCD ; If carrier is then reset DCD
- CNZ MDINP
- POP PSW
- ENDIF
- ;
- CMA ; Comp register, bit set with LOSS of carrier
- ANI DCD ; Mask out everything but carrier LOSS bit (cb2)
- RZ
- ORI 255
- RET
- ;
- ; Disconnect and wait for an incoming call
- ;
- MDINIT: MVI A,57H ; Hangup if we can
- CALL BNKOUTS
- ;
- DI
- OUT 0
- LDA CDATA ; Read video PIA data register
- OUT 1 ; Reset for future loss of carrier
- EI
- ;
- PUSH B
- MVI B,20 ; Wait 2 seconds for modem to hangup
- OFFTI: CALL DELAY
- DCR B
- JNZ OFFTI
- ;
- LDA WRKBAUD ; Modem port reset (enable DTR line)
- ANI 0BFH ; Enable DTR
- CALL BNKOUTS
- ;
- IF IMODEM
- CALL IMINIT ; Initialize intelligent modem
- ENDIF
- ;
- DI
- OUT 0
- LDA CDATA ; Read video PIA data register
- OUT 1 ; Reset for future loss of carrier
- EI
- ;
- RET
- ;
- ; Input a character from the modem port
- ;
- MDINP: CALL BNKIND ; Input data from the outside
- PUSH PSW ; Save the character
- LDA SSTAT ; Load mirror ACIA status register
- ANI RDAV ; Mask the DAV bit (reset DAV bit in mirror
- ; status register)
- STA SSTAT ; Save our mutant status register to ram
- POP PSW ; Get the character back
- RET ; Return to sender
- ;
- ; Check the status to see if a character is available. If not, return
- ; with the zero flag set. If yes, use 0FFH to clear the flag.
- ;
- MDINST: PUSH B
- LDA SSTAT ; Load ACIA mirror status register
- ; From last status read operation
- MOV B,A
- CALL BNKINS ; Input present ACIA status register
- ORA B ; Perform an OR operation on both former
- ; as well as present acia registers
- STA SSTAT ; Save both ACIA register states
- POP B
- ANI DAV ; Mask DAV bit
- RZ
- ORI 255
- RET
- ;
- ; Send a character to the modem
- ;
- MDOUTP: CALL BNKOUTD ; Send the data character modem
- LDA SSTAT ; Load the clone register
- ANI RTBMT ; Mask the TBMT bit
- STA SSTAT ; Save the doppelganger register
- RET ; Return to sender
- ;
- ; See if the output is ready for another character
- ;
- MDOUTST:PUSH B
- CALL BNKINS ; Get present ACIA status register
- MOV B,A ; Move it to 'B' register
- LDA SSTAT ; Get mirror ACIA status register
- ORA B ; Perform an OR on present and mirror registers
- POP B
- STA SSTAT ; Save the past and present status registers
- ANI TBMT
- RZ
- ORI 255
- RET
- ;
- ; Called by the main program after caller types BYE
- ;
- MDQUIT:
- IF IMODEM
- CALL IMQUIT
- ENDIF
- ;
- ; Called by the main program after caller types BYE
- ;
- MDSTOP: MVI A,57H
- CALL BNKOUTS ; hangup modem
- RET
- ;
- BNKINS: DI ; Disable interrupts
- OUT 0 ; Switch banks to shadow memory bank
- LDA STATM ; Read status register ram location
- OUT 1 ; Switch banks back to progaram memory bank
- EI ; Reenable interrupts
- RET ; Go home
- ;
- BNKIND: DI ; Disable interrupts
- OUT 0 ; Switch banks to shadow memory bank
- LDA DATA ; Read data register RAM location
- OUT 1 ; Switch banks back to program memory bank
- EI ; Reenable interrupts
- RET ; Go home
- ;
- BNKOUTS:DI ; Disable interrupts
- OUT 0 ; Switch banks to shadow memory bank
- STA STATM ; Send data to control register ram location
- OUT 1 ; Switch banks to program memory bank
- EI ; Reenable interrupts
- RET ; Go home
- ;
- BNKOUTD:DI ; Disable interrupts
- OUT 0 ; Switch banks to shadow memory bank
- STA DATA ; Send data to control register ram location
- OUT 1 ; Switch banks to program memory bank
- EI ; Reenable interrupts
- RET ; Go home
- ;
- ; The following routine sets the baudrate. BYE3 asks for the maximum
- ; speed you have available.
- ;
- SET300: MVI A,BD300 ; Set 300 baud
- JMP SETBAUD
- ;
- SET1200:MVI A,BD1200 ; Set 1200 baud
- ;
- SETBAUD:CALL BNKOUTS
- STA WRKBAUD ; Save incoming baud rate
- XRA A ; Show baudrate was ok
- RET
- ;
- SET2400:ORI 255 ; Osborne can't handle 2400 baud
- RET
- ;
- ;----------------------------------------------------------------
- ;
- WRKBAUD:DB 16H ; [*] OCC1 ++
- SSTAT: DB 0 ; RAM flag location for ACIA status register.
- ; This is due to ACIA not keeping track of its
- ; status register when data is going in both
- ; directions i.e., data being sent out during
- ; a display listing, and the remote user wants
- ; to suspend screen display or abort listing
- ; by generating a ^S or ^K or any other con-
- ; trol character.
- ;
- ; end
- ;-----------------------------------------------------------------------