ASMB,R,Q,C
HED #BSC: BISYNC TELECOM DRIVER * (C) HEWLETT-PACKARD CO.1979 *
NAM #BSC,14 91780-16013 REV.2001 791009
ENT #BSC
EXT $TIME
*
* NAME: #BSC
* SOURCE: 91780-18013
* RELOC: 91780-16013
* PGMR: P. KAPOOR ( 11/20/73 )
*
* MODIFIED BY: P. KAPOOR, R.SHATZER ( 01/11/75 )
* C. WHELAN ( 10/31/75 )
* C. HAMILTON ( 04/12/77 )
* C. HAMILTON ( 04/01/78 )
* D. BOLIERE, R. GUDZ ( 08/11/78 )
* R. GUDZ ( 04/26/79 )
* R. GUDZ ( 10/09/79 )
*
* *****************************************************************
* * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS *
* * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, *
* * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT *
* * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. *
* *****************************************************************
*
* CAUTION:
* THIS IS THE SSGA (OR LIBRARY) RESIDENT PORTION OF A SYSTEM
* RESIDENT TELECOMMUNICATION DRIVER DVR50 . THIS
* MODULE MAY BE APPENDED AS A SUBROUTINE TO THE
* MAIN DEVICE EMULATOR PROGRAM. IT CAN RESIDE EITHER
* IN THE USER AREA OR IN THE SYSTEM AREA. IN FORMER
* CASE IT MUST NOT BE SWAPPED OUT ONCE INITIATED.
*
* REFER TO THE SYSTEM RESIDENT DVR50 BEFORE USING
* THIS MODULE.
*
*
* ON ENTRY INTO #I.50 DURING INITIALIZATION , EQT7
* CONTAINS SYNC CHARACTER FOR THE LINE CODE WITH BIT
* 15 EQUAL TO 1 FOR CRC AND 0 FOR LRC. UPON EXIT
* BACK INTO THE SYSTEM RESIDENT DRIVER, REG-B HAS
* THE PASSWORD. REG-A ALWAYS HAS COMPLETION CODE.
* RETURN IS (P+1) AFTER INITIALIZATION AND (P+2)
* OTHERWISE.
*
* ON EXIT FROM #C.50 INTO DVR50 , TAKE (P+1) RETURN IF IN BETWEEN REQUESTS,
* TAKE A (P+2) RETURN ON COMPLETION AND (P+3) RETURN FOR CONTINUATION.
*
* FOR (P+2) RETURN , REG-A & B HAVE COMPLETION PARAMETERS.
*
* RETURN FROM #P.50 IS ALWAYS (P+1) .
* =RECV. SYNC-REFERENCE COMMAND, IF SYNC HUNT MODE; OR =0, IF NOT.
*
**************************************************************************
SKP
**************************************************************************
* PCO 1840 AUGUST 11,1978
*
*
* 1. TRACE HAS BEEN ADDED!
*
* 2. EACH LINE BID WILL LAST AS LONG AS 127 ENQ'S.
*
**************************************************************************
**************************************************************************
* PCO 1926 APRIL 26,1979
*
* RTE-IVB SESSION MONITOR COMPATIBILITY!
*
*
* RJE NOW RETRANSMITS DATA IF IT WAS LOST AND
* THE RECEIVER ANSWERED WITH THE LAST ACK.
*
* (RJE PREVIOUSLY FAILED TO USE THIS ACK0/ACK1 FEATURE.)
*
**************************************************************************
**************************************************************************
* PCO 2001 OCTOBER 9, 1979
*
* NOTE: RJE HAS BEEN CHANGED ALSO FOR PCO 2001!!!
*
* DURING READ AND WRITE CALLS, RJE NOW PASSES A BUFFER
* POINTER. THIS IS FOR COMPATIBILITY WITH PCO 1926 OF RTE.
* IN THIS WAY, USER MAP IS ENABLED UPON DRIVER ENTRY.
*
**************************************************************************
SKP
*
* 160010 [XMIT BOARD]
*
* * 1 * 1 1 0 * 0 0 0 * 0 0 0 * 0 0 1 * 0 0 0 *
* ******************************************************************
* * C * C C R * P P S * S T ! NOT USED ! CHAR SIZE *
* * M * M D C * A A Y * T E ! * ! * *
* * D * D V * R R N * A S ! * ! * *
* * * O * C * T T ! * ! * *
* * * N (C)* S S * ! * ! * *
* * * (A)* T E E * I ! * ! * *
* * * * A N N * N ! * ! * *
* * * O * T S A * T ! * ! * *
* * * F * E B * ! * ! * *
* * * F * O L * O ! * ! * *
* * * * F E * F ! * ! * *
* * * * F V O * F ! * ! * *
* * * * E N * ! * ! * *
* * * * N * ! * ! * *
* ******************************************************************
*
*
* 151030 [RCV BOARD]
*
* * 1 * 1 1 0 * 0 0 0 * 0 0 0 * 0 0 1 * 0 0 0 *
* ******************************************************************
* * C * C X C * P P S * S S S * T S ! CHAR SIZE *
* * M * M D * A A Y * T P B * E Y ! * *
* * D * D * R R N * A E A * S N ! * *
* * * O * C * T C * T C ! * *
* * * N * S E * O * ! * *
* * * * T V H * C F * C F ! * *
* * * * A E U * I H F * L L ! * *
* * * * T N N * N * K G ! * *
* * * * T * T I * ! * *
* * * * O * N * O ! * *
* * * * F O * O T * N ! * *
* * * * F N * F * ! * *
* * * * * F O * ! * *
* * * * * F * ! * *
* * * * * F * ! * *
* ******************************************************************
*
SKP
*
* 171010 [XMT BOARD]
*
* * 1 * 1 1 0 * 0 0 0 * 0 0 0 * 0 0 1 * 0 0 0 *
* ******************************************************************
* * C * C C S * P P S * S T ! NOT USED ! CHAR SIZE *
* * M * M D N * A A Y * T E ! * ! * *
* * D * D D * R R N * A S ! * ! * *
* * * O * C * T T ! * ! * *
* * * N (C)* S E * ! * ! * *
* * * (A)* T V E * I ! * ! * *
* * * * A E N * N ! * ! * *
* * * O * T N A * T ! * ! * *
* * * F * B * ! * ! * *
* * * F * O L * O ! * ! * *
* * * * F * F ! * ! * *
* * * * F O * F ! * ! * *
* * * * F * ! * ! * *
* * * * F * ! * ! * *
*******************************************************************
SKP
*
#BSC OCT 150003 SECURITY CODE
DEF #I.50 DEFINE
DEF #C.50 LIBRARY
DEF #P.50 ENTRY POINTS.
*
#I.50 NOP
STA TIMAD SAVE ADDRESS OF TIMEOUT VALUES.
LDA EQ6,I
AND M3777 GET FUNCTION AND REQUEST CODES
STA FUNC
*
LDA BIT12
LDB TFLAG,I FETCH TRACE FLAG
SZB SET SWITCHES TO EITHER NOP
LDB RSSI OR RSS
CPB TSW1 CHANGING MODE?
JMP TSW1 NO, SKIP SETTING SWITCHES
INA YES, SO INDICATE IN TRACE ENTRY
STB TSW1 SET TRACE SWITCHES
STB TSW2
STB TSW3
STB TSW4
*
TSW1 NOP TRACE SWITCH
JMP *+3
LDB FUNC SET BREG TO FUNCTION
JSB TRACE
LDA FUNC RESUME PROCESSING
LDB CWTBL REG-B HAS PROCESS POINTER
SCH CPA 1,I FOUND THE PROCESS ?
JMP GOTIT YES
INB BUMP PROCESS POINTER
CPB CWLST
JMP REJ2 ILLEGAL FUNCTION, REJECT
JMP SCH LOOP BACK.
GOTIT ADB TLEN
JMP 1,I GET ADDR OF PROCESSOR & GO
*
CWTBL DEF *+1 CONTROL WORK TABLE
OCT 3703 INITIALIZE
OCT 3603 DISCONNECT
REO7 OCT 3503 RECEIVE-TO-SEND
REO6 OCT 3403 HANDSHAKE
REO9 OCT 3303 AUTO-ANSWER
REO8 OCT 3203 SEND EOT
REO10 OCT 3103 SEND-TO-RECEIVE (1 LONG T.O.)
OCT 2703 SEND-TO-RECEIVE (20 SECS)
OCT 3702 WRITE
REO5 OCT 3701 WRITE-CONVERSATIONAL
REO4 OCT 3601 READ (SEND RVI)
REO3 OCT 3501 READ CONVERSATIONAL.
REO2 OCT 3401 READ (SEND NAK)
REO1 OCT 3301 READ (SEND ACK0 OR ACK1)
*
TLEN ABS *-CWTBL-32768
DEF INITL INITIALIZE
DEF OFF DISCONNECT
DEF RC2SD RECEIVE-TO-SEND
DEF HNDSK HANDSHAKE
DEF ANSWR AUTO-ANSWER
DEF SEOF SEND 'EOT'
DEF SD2RC SEND-TO-RECEIVE (1 LONG T.O.)
DEF LSN20 SEND-TO-RECEIVE (20 SECONDS)
DEF SEND WRITE
DEF SENDC WRITE-CONVERSATIONAL
DEF READ READ (SEND 'RVI')
DEF READ READ (CONVERSATIONAL)
DEF READ READ(SEND 'NAK')
DEF READ READ (SEND 'ACK0' OF 'ACK1')
*
CWLST DEF TLEN
*
* ** INITIALIZATION **
*
* THIS SECTION INITIALIZES THE DRIVER.
* ON EXIT, REG-B HAS A PASSWORD WHICH IS THE
* ADDRESS OF XLINK WORD IN USER'S ID SEGMENT.
* THIS ROUTINE SETS UP SYSTEM TIME PARAMETERS
* OBTAINED FROM #COMN ROUTINE.
*
*
INITL LDA EQ1 SET
ADA P3
LDB EQ4A
STA 1,I SET EQT POINTER
INB
INA
CPB EQ12A
RSSI RSS DONE
JMP *-5 DO NEXT
LDA EQ12
STA EQT12
INA
STA EQT13
ADA P2
STA EQT15
CLB
STB EQ14,I MAKE SURE THAT TIMER
STB 0,I IS ZERO
*
LDA EQTA EQT
CMA,INA
ADA EQ1 THIS EQT ADDR - 1ST EQT ADDR
DIV P15 COMPUTE RELATIVE EQT #
INA
STA EQT#
*
LDA EQT7,I SET UP BCC AND CODE FLAG
STA BCCFL
JSB CCADR SET UP LINE CODE TABLE
LDA EQT4,I SET BIT12 OF EQT4 TO TELL RTE
IOR MTOWN TO ENTER C.50 ON TIME-OUT .
STA EQT4,I
*
LDA TIMAD GET ADDRESS OF TIMEOUT VALUES.
LDB A,I SET UP
STB RCTM RECEIVE TIMEOUT
INA
LDB A,I
STB XMTM TRANSMIT TIMEOUT
INA
LDB A,I
STB LGTM LONG TIMEOUT
INA
LDB A,I
STB #NUMB # OF TTD'S / WACK'S
INA
LDB A,I FETCH CONTROL MODE TIMEOUT
STB CMDTM
INA BUMP POINTER TO MODE CONTROL WORD
LDB A,I GET CONTROL WORD
STB DUPLX SET VALUE FOR HALF/FULL DUPLEX FLAG
*
INA BUMP ADDRESS
STA TFLAG
INA
STA TBUF START OF TRACE BUFFER
INA
STA OVRN OVERRUN FLAG
INA
STA RDPT READ POINTER
INA
STA WRPT WRITE POINTER
INA
STA BFEN END OF BUFFER
*
CCA INITIALIZE UPPER TIME STAMP
STA LTIME
*
JSB EXST CLEAN EXTENDED STATUS
STA SETCN CLR STC ,C FLAG FROM LAST TIME
*
* CONFIGURE I/O INSTRUCTIONS
*
LDA EQT4,I GET DEVICE'S
AND M77 CHANNEL NUMBER (RECEIVE BOARD)
STA B IN B-REG
IOR OTA FORM CONFIGURED OTA
STA OTA1R CONFIGURE RECEIVE BOARD
STA OTA4R
STA OTA5R
STA OTA6R
STA OTA7R
INA
STA OTA1S CONFIGURE SEND BOARD
STA OTA2S
STA OTA3S
STA OTA4S
STA OTA6S
STA OTA7S
*
LDA CLC
IOR B FORM CONFIGURED CLC XX,C
STA CLC2
STA PCLCR
STA CCLCR
INA INCREMENT FOR SEND BOARD
STA CLC1
STA PCLCT
STA CCLCT
*
LDA STC FORM COFIGURED STC XX,C
IOR B
STA STC1R
INA
STA STC1S
*
LDA LIA FORM CONFIGURED LIA XX
IOR B
STA LIA3R
INA
STA SSTA
LDA SYNC OUTPUT THE SYNC CHARACTER
OTA6S OTA 0 TO THE TRANSMIT BOARD,
OTA6R OTA 0 AND TO THE RECEIVE BOARD.
*
LDA EQT5,I CLEAN STATUS IN EQT4
AND MFST
STA EQT5,I
JSB WACTZ CLEAN WACK/TTD & SPEC CASE FLAG
LDB EQ1,I GET ADDRESS OF USER'S I.D. SEGMENT.
STB PSWD USE IT FOR THE PASSWORD.
JSB SCLR CLEAN INTERNAL FLAGS.
STA LINE SET TERMINAL OFF-LINE.
STA FUNC ERASE FUNCTION FOR
LDA P4 IMMEDIATE COMPLETION
JMP CLC1 DO CLC'S & EXIT
*
EQ4A DEF EQT4
EQ12A DEF EQT12
* *** CLEAN INTERNAL FLAGS FOR NEXT OPERATION ***
SCLR NOP
TIMAD EQU SCLR SHARE STORAGE (INITIALIZATION ONLY).
CLA
STA EOF CLEAR "EOT" FLAG
STA RQ2SD CLEAR "RVI" FLAG
STA INERR CLEAR OPERATION IN ERROR FLAG
STA TLOG CLEAR TRANSMISSION LOG
STA OVRFL CLEAR BUFFER-OVERFLOW FLAG
STA SYNFL CLEAR SYNC-REFERENCE FLAG
JMP SCLR,I RETURN
*
*SCFWA OCT 25045 TEMP DEBUG
TFLAG DEF OVRN TRACE FLAG ADDRESS
OVRN NOP OVERRUN FLAG ADDRESS
TBUF NOP FWA OF TRACE BUF
WRPT NOP ADDRESS OF WRITE POINTER
RDPT NOP ADDRESS OF READ POINTER
BFEN NOP END OF BUFFER ADDRESS
SKP
* ** ACTIVATE TIMER **
*
* THIS ROUTINE SETS UP TIME-OUT VALUE IN EQT15.
* EQT14 IS NOT USED BY THIS DRIVER (EQT14 IS SET TO
* ZERO AFTER THE INITIALIZATION CALL AND THE USER
* MUST NOT ATTEMT TO DO ANY KIND OF DEVICE TIME-OUT
* MANIPULATION WHILE THE DRIVER IS IN USE).
*
* ON ENTRY INTO 'TACTV' :
* REG-A = NEG NUMBER OF 10 MSEC INTERVALS
* REG-B = ADDRESS OF ROUTINE TO BE EXECUTED
* UPON TIMEOUT
*
TACTV NOP
LDB TACTV,I
STA EQT15,I SET TIME-OUT VALUE OR ZERO IT
SZA IS IT DEACTIVATE TIMER ?
STB TADRS NO. THEN SET TRANSFER ADDRESS.
ISZ TACTV
JMP TACTV,I RETURN.
*
TADRS NOP TRANSFER ADDRESS AFTER REENTRY ON TIMEOUT
STA EQT15,I SET TIMEOUT
JMP EXITR
*
TACTZ NOP
CCA
STA EQT15,I SET FAST TIMEOUT
LDA TACTZ
STA TADRS SET ADDR UPON RETURN
*
RTN0 CLA
CLC1 CLC 0,C XMIT BOARD
CLC2 CLC 0,C RCV BOARD
JMP #I.50,I
****************************************************
SKP
* ** C.50 **
*
#C.50 NOP
LDA SETCN FETCH STC FLAG
SSA,RSS ARE WE TO STC THE CARDS UPON EXIT?
CLA NO, SO RESET FLAG
STA SETCN
*
LDA RSSI
STA EXITR MODIFY INSTRUCTION
ISZ #C.50
ISZ #C.50 ASSUME (P+2) RETURN
JMP TADRS,I GO TO TIME-OUT PROCESSOR.
*
* ** P.50 **
#P.50 NOP
CLA
STA SETCN CLEAR 'STC XX,C' FLAG
STA EXITR MODIFY INSTRUCTION
JSB LCHCK DROP LINE IF DATA-SET IS OFF.
JMP EXIT,I TRANSFER ADDRESS ON I/O INTERRUPT
*
EXIT NOP
EXITR NOP #C.50 EXIT ?
JMP PEXIT NO, THEN #P.50 EXIT.
ISZ SETCN YES. SET CONTROL,CLEAR FLAG ?
JMP CCLCT NO, DO CLC,CLF ON BOTH BOARDS
CCLC CLC 0,C
STC1 STC 0,C CONFIGURED SET CONTROL, CLR FLAG
JMP #C.50,I RETURN
* #P.50 EXIT
PEXIT LDA SYNFL GET SYNC-REFERENCE COMMAND, OR ZERO.
ISZ SETCN SET CONTROL, CLEAR FLAG?
JMP PCLCT NO, DO CLC, CLF ON BOTH BOARDS
PCLC CLC 0,C
STC2 STC 0,C CONFIGURED SET CONTROL, CLR FLAG
JMP #P.50,I RETURN: =SYNC REF, OR ZERO.
*
PCLCT CLC 0,C
PCLCR CLC 0,C
JMP #P.50,I
*
CCLCT CLC 0,C
CCLCR CLC 0,C
JMP #C.50,I
*
STC STC 0,C
CLC CLC 0,C
OTA OTA 0
LIA LIA 0
*
DEVDN OCT 40000 DEVICE DOWN MASK
MTOWN OCT 10000
MFHNT OCT 176777
MFST OCT 177400
M3777 OCT 3777
STC1S NOP CONFIGURED STC XX,C (SEND BOARD)
STC1R NOP CONFIGURED STC XX,C (RECEIVE BOARD)
SETCN NOP IF -1 THEN SET CONTROL ON BOARD
SYNFL NOP SYNC-REF.CMD, IF SYNC HUNT; OR ZERO
MSK14 OCT 140000
*
* SET CONTROL, CLEAR FLAG ON SEND BOARD
SYN2S NOP
JSB SYN7 OUTPUT CHAR
LDA STC1S CONFIGURE INSTRUCTIONS FOR
STA STC1 SEND BOARD
STA STC2
JSB SYN3S READ STATUS
SSA,RSS DATA SET OFF ?
JMP DSOF YES
SLA,RSS CLEAR-TO-SEND OFF ?
JMP MODFL YES
CCA
STA SETCN STC,C FLAG
LDA CCLCR
STA CCLC
STA PCLC
JSB EXIT EXIT DRIVER FOR NOW
JMP SYN2S,I RETURN
*
* SET CONTROL, CLEAR FLAG ON RECEIVE BOARD
SYN2R NOP
LDA STC1R CONFIGURE INSTRUCTIONS FOR
STA STC1 RECEIVE BOARD
STA STC2
CCA
STA SETCN SET CONTROL AND CLEAR FLAG UPON
LDA CCLCT
STA CCLC
STA PCLC
JMP SYN2R,I RETURN
*
* GET SEND BOARD STATUS
SYN3S NOP
SSTA LIA 0 LOAD A-REG WITH STATUS BITS
RAL,RAL
JMP SYN3S,I RETURN
*
* GET RECEIVE BOARD STATUS
SYN3R NOP
LIA3R LIA 0 LOAD A-REG WITH STATUS BITS
JMP SYN3R,I RETURN
*
*
CCADR NOP
LDB N13
STB SYN3S SET 13 WORD TRANSFER
LDB CCADD
STB SYN3R SET DESTINATION ADRS
LDA BCCFL
AND MASK GET LINE CODE SYN CHAR
LDB ASCCC
CPA ECCC+11 LINE CODE = EBCDIC ?
LDB EBCCC YES MUST BE ASCII.
LOOP2 LDA B,I TRANSFER
STA SYN3R,I A WORD.
INB BUMP SOURCE ADDRESS
ISZ SYN3R BUMP DESTINATION ADDRESS
ISZ SYN3S ALL DONE ?
JMP LOOP2 NO
JMP CCADR,I YES, LEAVE.
*
* SET UP BOARD TO SEND
*
SYN5 NOP
STA SEC3C SET TIMEOUT
LDA SSEND GET SYNC CONFIGURED CONTROL WORD
OTA3S OTA 0 OUTPUT TO I/O BOARD
CLB
JSB SYN7 SEND BLANKS
JMP SYN5,I RETURN
*
*
* SET UP BOARD TO RECEIVE
*
SYN6 NOP
LDA STOR GET TURN-AROUND CONTROL WORD
LDB DUPLX GET DUPLEX FLAG
SLB,RSS SKIP IF FULL DUPLEX
OTA4S OTA 0 CHANGE SEND BOARD TO RECEIVE CONDITION
LDA SREVC GET SYNC CONFIGURED CONTROL WORD
OTA4R OTA 0 OUTPUT TO I/O BOARD
JMP SYN6,I RETURN
*
*
* SEND CHARACTER TO THE I/O BOARD (CHARACTER IN B)
*
*
SYN7 NOP
LDA B
AND MASK MASK EXTRANEOUS BITS
OTA2S OTA 0 OUTPUT TO SEND BOARD
TSW2 NOP TRACE SWITCH
JMP SYN7,I RETURN
IOR BIT15
JMP TTRAC CREATE A TRACE ENTRY
*
*
* GET RECEIVED CHARACTER AND PLACE IN A-REG
*
DOLIA NOP
JSB SYN2R ENABLE RCV INTERRUPTS
JSB EXIT AWAIT NEXT WORD
JSB SYN3R GET CHARACTER FROM RECEIVE BOARD
ALF,RAR
SLA,RSS DATA SET OFF ?
JMP DSOF YES
SSA RECEIVED CARRIER FAILED ?
JMP DOLIX NO
CCA YES
STA CARCT SET "CARRIER FAILED" FLAG
LDA SREVC
AND MFHNT
OTA5R OTA 0 DISABLE LINE STATUS INTERRUPT
DOLIX JSB SYN3R
AND MASK
TSW3 NOP TRACE SWITCH
JMP DOLIA,I RETURN
*
* TTRAC: TIME TRACE ROUTINE TO CREATE A 2 WORD ENTRY COMPLETE
* WITH LOWER TIME STAMP. ALSO REPORTS NEW UPPER TIME
* STAMP IF NEEDED.
*
TTRAC LDB $TIME+1 FETCH UPPER TIME STAMP
CPB LTIME SAVE AS LAST REPORTED?
JMP TRAC2 YES, THEN JUST REPORT DATA & LOWER TIME
STB LTIME NO, RESET AND REPORT NEW UPPER TIME
STA TTEMP+1
LDA BIT14
JSB TRACE
LDA TTEMP+1 FETCH BACK DATA BYTE
TRAC2 LDB $TIME
JSB TRACE CREATE DATA ENTRY
LDA TTEMP RESTORE AREG
SSA WHICH WAY OUT?
JMP SYN7,I
JMP DOLIA,I
*
* TRACE: SUBROUTINE TO CREATE A TWO WORD ENTRY INTO THE TRACE
* BUFFER. CHECKS FOR AND INDICATES OVERRUN CONDITIONS.
*
TRACE NOP
STA TTEMP SAVE A-REG
LDA WRPT,I
STB 0,I SAVE B-REG FIRST
INA
LDB TTEMP
STB 0,I THEN A-REG
INA
CPA BFEN,I END OF TRACE BUFFER?
LDA TBUF,I YES, RESET POINTER
STA WRPT,I
CPA RDPT,I OVERRAN READ POINTER?
ISZ OVRN,I YEP, TELL SOMEONE
NOP
JMP TRACE,I
*
TTEMP BSS 2
LTIME NOP
*
CARCT NOP CARRIER FAIL COUNTER
*
DUPLX NOP 0 FOR HLF-DUPLEX, 1 FOR FULL DUPLEX
*
* PASSWORD VALIDATION ROUTINE
PSW NOP
CPA PSWD PASSWORD CORRECT ?
JMP PSW,I YES, THEN RETURN.
LDB BIT1 SET PASSWORD VIOLATION
JMP MVIOL+1
* VALIDATE ON-LINE CONDITION
ONLN NOP
LDA LINE
SZA TERMINAL ON-LINE
JMP ONLN,I YES, THEN RETURN.
JMP MVIOL RECORD MODE VIOLATION
*
ERCNT NOP
JSB UPCAR BRING UP CARRIER
LDA M8
STA ERROR SETUP ERROR RETRY COUNTER
JMP ERCNT,I
M8 DEC -8
*
* VALIDATE OFF-LINE CONDITION
OFLN NOP
LDA LINE
SZA,RSS TERMINAL OFF-LINE ?
JMP OFLN,I YES, THEN RETURN.
JMP MVIOL RECORD VIOLATION IN STATISTICS
*
* VALIDATE RECEIVE MODE CONDITION
RMD NOP
LDA EQT9,I
JSB PSW CHECK PASSWORD
LDA RCSND
SZA,RSS IN RECEIVE MODE ?
JMP RMD,I YES, THEN RETURN.
JMP MVIOL RECORD MODE VIOLATION
*
* VALIDATE CONTROL MODE CONDITION
CNTMD NOP
JSB ONLN VALIDATE THAT ON-LINE
LDA EQT5,I GET PREVIOUS STATUS
AND P12 GET XMIT AND REC BITS
SZA,RSS TRML IN XMIT OR REC MODE ?
JMP CNTMD,I NO, THEN IT IS OK.
*
MVIOL LDB BIT2 GET (B) FOR MODE VIOLATION
JSB SET SET VIOLATION IN STATISTICS
*
REJ2 LDA EQ5,I SET 'OPERATION IN ERROR'
IOR P1 IN STANDARD STATUS WORD.
STA EQ5,I
LDA P2 REG-A = 2 FOR ERROR RETURN
CLB
STB FUNC ERASE FUNCTION HOLDER.
JMP #I.50,I RETURN
EQ5 EQU 1664B
*
* *** HANDSHAKE PROCESSOR ***
*
* EXECUTION STEPS:
* 1. REJECT IF PASSWORD IS INCORRECT.
* 2. REJECT IF TERMINAL ON-LINE.
* 3. WAIT FOR OPERATOR TO DIAL REMOTE.
* 4. SEND "ENQ" CHARACTER TO REMOTE.
* 5. WAIT FOR "ACK0" OR "RVI" FROM REMOTE.
* 6. ACTIVATE THE "TTD" MODULE TO FUNCTION FOR THE
* TIME SPECIFIED BY THE "#COMN" ROUTINE.
*
*
HNDSK LDA EQT7,I
JSB PSW CHECK PASSWORD
JSB OFLN CHECK MODE
JSB EXST CLEAN EXTENDED STATUS
JSB TACTZ
*
* REQUEST ACCEPTED. SET UP I/O BOARD.
*
LDA SEC10
JSB SYN5 PRIME I/O BOARDS
HDSK1 JSB SYN3S GET STATUS OF SEND BOARD
SSA DATA SET READY ?
JMP BHND1 YES
BHND LDA EQTM SET 1 SEC TIMER LOOP
JSB TADRS AT "HDSK1"
JMP HDSK1
*
BHND1 SLA CLEAR-TO-SEND UP ?
JMP CTSOK YES.
ISZ SEC3C 10 SEC OVER ?
JMP BHND NO
JMP MODFL YES, REPORT FAILURE.
*
CTSOK ISZ EOF INDICATE CONTROL MODE
CLA,INA SET UP THE A REGISTER
JMP CTSXT FOR A BUMMED EXIT!
*
*