home *** CD-ROM | disk | FTP | other *** search
-
- ; B5NS-6.INS - BYE5 insert for North Star Horizon or Advantage 01/30/86
- ;
- ; Uses 8251 I/O
- ;
- ; Note: This is an insert, not an overlay
- ; This version is for the North Star Horizon and Advantage computers.
- ;
- ; = = = = = = = = = = = = = = = = = =
- ; 01/30/86 Inserted extra code in LOADBD to change the baud rate
- ; of the 8251 on the NorthStar Horizon standart serial
- ; port. This is acomplished by reseting and telling
- ; the 8251 to use x64 clock rate (for 300) or x16 clock
- ; rate (for 1200). This is done automatically when the
- ; desired port is straped for 1200 baud operation at the
- ; dip hedder. Also added equates HORSTAN in order to use
- ; the Horizon stadart serial port and MD300 to select
- ; the x64 mode in the 8251 - Eddy Salvador
- ;
- ; 11/09/85 Made BDPORT relative to PORT for when PORT is changed to
- ; one of the other 3 HSIO-4 ports. Changed a typo from "0" to
- ; "-" which calculates PORT for Advantage. Added some explan-
- ; atory comments. - Don Appleby
- ;
- ; 10/10/85 Written for use with BYE5. Excerpts from I2NA-1, I2NS-2 and
- ; work done by Don Appleby. - Irv Hoff
- ;
- ; = = = = = = = = = = = = = = = = = =
- ;
- ;-----------------------------------------------------------------------
- ;
- ; Equates
- ;
- NO EQU 0
- YES EQU NOT NO
- ;
- HORSTAN EQU YES ; Yes for North Star Horizon standart serial
- ; port
- HORIZON EQU NO ; Yes for North Star Horizon with 4-HSIO
- ADVANTG EQU NO ; Yes for North Star Advantage
- ;
- ; (Be sure clock header in locaton 3A is configured with pins connected
- ; 1-2, 3-4, 5-6, 7-10, 8-9, 11-12, 13-14 & 15-16 and remove header at
- ; location 1A on the selected SIO board for terminal configuraton if
- ; ADVANTG is YES.)
- ;-----------------------------------------------------------------------
- ;-----------------------------------------------------------------------
- ; If HORSTAN = YES strap the baud rate dip hedder for 1200 baud operation
- ; on the desired port
- ;-----------------------------------------------------------------------
- ;***********************************************************************
- ;
- ; Baud rate port equates for NorthStar HSIO-4 board
- ;
- IF HORIZON
- èPORT EQU 012H ; Here are the HSIO-4 (12H,16H,1AH or 1EH)
- MDCTL1 EQU PORT+1 ; Control port
- BDPORT EQU PORT-2 ; Baudrate port (change PORT as appropriate)
- ;
- ;
- ; Baudrates for North Star Horizon with HSIO-4 serial board
- ;
- BD300 EQU 6 ; 300 bps setting
- BD1200 EQU 4 ; 1200 bps setting
- BD2400 EQU 3 ; 2400 bps setting
- BD9600 EQU 1 ; 9600 bps setting
- BD19200 EQU 0 ; 19200 bps setting
- ENDIF ; HORIZON
- ;
- ; Baud rate port equates for NorthStar Standart serial port
- ; Change the port equate as required.
-
- IF HORSTAN
- PORT EQU 012H ; Data port
- MDCTL1 EQU PORT+1 ; Control port
- BDPORT EQU PORT-2 ; There isn't one but we need the equate so
- ; tha we won't get an error while compiling
- ;
- ; Baudrates for North Star Horizon, Only 1200 and 300 are used the rest
- ; is ignored because the 8251 can not be made to make miracles.
- ;
- BD300 EQU 6 ; 300 bps setting
- BD1200 EQU 4 ; 1200 bps setting
- BD2400 EQU 3 ; 2400 bps setting
- BD9600 EQU 1 ; 9600 bps setting
- BD19200 EQU 0 ; 19200 bps setting
- ENDIF ; HORIZON
- ;
- ;
- ; Baud rate port equates for NorthStar Advantage SIO boards
- ;
- IF ADVANTG
- PORT EQU 60H-(10H*SLOT) ; Modem data port (1,2,3,4,5 or 6 for SLOT)
- MDCTL1 EQU PORT+1 ; Modem control port
- BDPORT EQU PORT+8 ; Modem baudrate port
- ;
- ;
- ; Baudrates for North Star Advantage
- ;
- BD300 EQU 040H ; 300 bps setting
- BD1200 EQU 070H ; 1200 bps setting
- BD2400 EQU 078H ; 2400 bps setting
- BD9600 EQU 07EH ; 9600 bps setting
- BD19200 EQU 07FH ; 19200 bps setting
- ENDIF ; ADVANTG
- ;
- ;
- MDRCV EQU 02H ; Modem receive ready bit
- MDSND EQU 01H ; Modem send ready bit
- RESET EQU 40H ; Framing, overrun and parity errors
- è;
- MDCOM EQU 37H ; RTS, reset flags, RCV, TX, set DTR
- MDMODE EQU 80H ; Insures 8251 is out of mode, DTR
- MDRSET EQU 42H ; Resets USART for additional commands
- MDSET1 EQU 4EH ; 1 stop bit, no parity, 8 bits, x16
- MD300 EQU 4FH ; 1 stop bit, no parity, 8 bits, x64
- ;-----------------------------------------------------------------------
- ;***********************************************************************
- ;
- ; END OF CONFIG
- ;***********************************************************************
- ; See if we still have a carrier - if not, return with the zero flag set
- ;
- MDCARCK:IN MDCTL1 ; Get status
- ANI 80H ; Check if carrier is on
- RET
- ;.....
- ;
- ;
- ; Disconnect and wait for an incoming call
- ;
- MDINIT: MVI A,10H ; Clear DTR
- OUT MDCTL1 ; To insure phone is disconnected
- PUSH B ; Preserve in case we need it
- MVI B,20 ; 2 seconds to drop DTR
- ;
- OFFTI: CALL DELAY ; 0.1 second delay
- DCR B
- JNZ OFFTI ; Keep waiting until 2 seconds is up
- ;
- POP B ; Restore the 'BC' register values
- MVI A,MDMODE ; Insure 8251 is out of mode, DTR on
- OUT MDCTL1
- XTHL ; Small delay to complete command
- XTHL
- MVI A,MDRSET ; Reset the 8251 for new command
- OUT MDCTL1
- XTHL
- XTHL
- MVI A,MDSET1 ; Set stop pulse, no parity, 8 bits, x16
- OUT MDCTL1
- XTHL ; Small delay to complete command
- XTHL
- MVI A,MDCOM ; Error reset, RCV, DTR, TX ready
- OUT MDCTL1
- XTHL ; Small delay to complete command
- XTHL
- ;
- IF IMODEM
- CALL IMINIT ; Initialize modem
- ENDIF ; IMODEM
- ;
- RET
- ;.....
- ;
- è;
- ; Input a character from the modem port
- ;
- MDINP: IN PORT ; Get character
- RET
- ;.....
- ;
- ;
- ; 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: IN MDCTL1 ; Get status
- ANI MDRCV ; Got a character?
- RZ ; Return if none
- ;
- IN MDCTL1 ; Get status again
- ANI RESET ; Check for framing and overrun
- JZ MDINST1 ; No errors
- MVI A,17H ; Reset error flags
- OUT MDCTL1
- XRA A ; Return false
- RET
- ;...
- ;
- ;
- MDINST1:ORI 0FFH ; We have a character
- RET
- ;.....
- ;
- ;
- ; Send a character to the modem
- ;
- MDOUTP: OUT PORT ; Send it
- RET
- ;.....
- ;
- ;
- ; Send a character to the modem
- ;
- MDOUTST:IN MDCTL1
- ANI MDSND
- RET
- ;.....
- ;
- ;
- ; Reinitialize the modem and hang up the phone by dropping DTR and
- ; leaving it inactive.
- ;
- MDQUIT: IF IMODEM
- CALL IMQUIT
- ENDIF ; IMODEM
- ;
- ;
- ; Called by the main program after caller types BYE
- ;
- èMDSTOP: MVI A,10H ; DTR low hangs up phone, keep DTR low
- OUT MDCTL1 ; so will not auto-answer at any time
- RET
- ;.....
- ;
- ;
- ; The following routine sets the baudrate. BYE5 asks for the maximum
- ; speed you have available.
- ;
- SETINV: MVI A,0FFH
- ORA A ; Make sure the zero flag isn't set
- RET
- ;.....
- ;
- ;
- SET300: MVI A,BD300 ; Setup for 300 bps
- JMP LOADBD
- ;.....
- ;
- ;
- SET1200:MVI A,BD1200 ; Setup for 1200 bps
- JMP LOADBD
- ;.....
- ;
- ;
- SET2400:MVI A,BD2400 ; Setup for 2400 bps
- ;
-
- LOADBD:
- IF HORSTAN
-
- CPI BD300
- JZ BPS2 ; If 300 goto BPS2
- CPI BD1200
- JZ BPS1 ; If 1200 goto BPS1
-
- ; If the required baud rate change was not for 1200 or 300
- ; leave the baud rate as it was and
- ; just exit gracefully.......
- ; |
- ; V
-
- GETOUT:
- IN PORT
- IN PORT ; Clear any garbage left
- XRA A ; Show change
- RET ; Exit
-
- BPS1: ; Entry point for 1200 baud
- MVI A,MDMODE ; Insures 8251 is out of mode
- OUT MDCTL1 ; Out with it
- XTHL
- XTHL ; Small wait
- MVI A,MDRSET ; Resets USART for additional commands
- OUT MDCTL1
- è XTHL
- XTHL
- MVI A,MDSET1 ;1 Stop bit, no parity, 8 bits, x16
- OUT MDCTL1
- XTHL
- XTHL
- MVI A,MDCOM ; RTS, Reset flgs, RCV, TX, set DTR
- OUT MDCTL1
- XTHL
- XTHL
- JMP GETOUT
- BPS2: ; Entry point for 300
- MVI A,MDMODE
- OUT MDCTL1
- XTHL
- XTHL
- MVI A,MDRSET
- OUT MDCTL1
- XTHL
- XTHL
- MVI A,MD300 ; 1 stop bit, no parity, 8 bits, x64
- OUT MDCTL1
- XTHL
- XTHL
- MVI A,MDCOM
- OUT MDCTL1
- XTHL
- XTHL
- JMP GETOUT
-
- ENDIF ; Final resting place of this rutine
-
-
-
- ; This one is used by equates HORIZON and ADVANTG
-
- OUT BDPORT
- XTHL
- XTHL
- MVI A,MDCOM ; Reset RTS, flags, DTR, enable R/T
- OUT MDCTL1
- XTHL ; Small delay to complete command
- XTHL
- IN PORT ; Clear decks for action
- IN PORT
- XRA A ; Show baudrate change was successful
- RET
- ;.....
- ;
- ; end B5NS-6.INS
- ;-----------------------------------------------------------------------