|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 132318 (0x204de)
Notes: pts_type(SC)
Names: »DRDC17.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/DRDC17.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/DRDC17.SC«
IDENT DRDC17 REL 11.0 81-07-07 870105041100 =11, ASS ERR WHEN USING MSV2 =10, ITB TRANSMISSION INCLUDED =9, ABORT ROUTINE NOT RE-ENTRANT REL 11.0 81-05-22 =8, CLEARING OF TIMER POINTER =7, MULTIPLE USE OF IMPORTANT REGISTER =6, PROBLEMS AT POWER ON REL 11.0 81-05-12 =5, ASS ERR WHEN ASCII CODE IS USED =4, CONTROL IF O/P INT ALLOWED =3, TIMER HANDLING ERROR =2, INCOMPLETE LOGG FUNCTION =1, HALT O/P ERROR (SALCUZ) REL 11.0 81-03-30 ******************************************************* * * PHILIPS ELECTRONIC INDUSTRIES - TERMINAL DIVISION. PEAB-T * * DATA COMMUNICATION DRIVER FOR PTS 6800 * * LINE PROCEDURE: BSC CONTENTION/SIEMENS MSV2 * * * * * ******************************************************* * * STANDARD USE OF REGISTERS : * * A1 WORK REGISTER * A2 I/O AND WORK REGISTER * A3 WORK REGISTER * A4 WORK REGISTER * A5 STACK POINTER * A6 DWT ADDRESS * A7 BCC ACCUMULATOR * A8 ECB ADDRESS * ******************************************************* EJECT * ******************************************************* * * ENTRY POINTS * ******************************************************* * ENTRY DC17ON RECOVERY AT POWER ON * * INTERRUPT HANDLERS * ENTRY IH1701 LINE 01 INPUT ENTRY IH1702 OUTPUT ENTRY IH1703 LINE 02 INPUT ENTRY IH1704 OUTPUT ENTRY IH1705 LINE 03 INPUT ENTRY IH1706 OUTPUT ENTRY IH1707 LINE 04 INPUT ENTRY IH1708 OUTPUT * * DEVICE WORK TABLES * ENTRY DW1701 LINE 01 DWT ENTRY DW1702 LINE 02 DWT ENTRY DW1703 LINE 03 DWT ENTRY DW1704 LINE 04 DWT EJECT * ******************************************************* * * EXTERNAL REFERENCES * ******************************************************* * EXTRN TDISP DISPATCHER ENTRY EXTRN TENDIO REQUEST COMPLETION EXTRN DISEND REQUEST COMPLETION+DISPATCHING EXTRN DISIOE REQUEST ERROR EXTRN SETIME SET TIMER CALL ADDRESS EXTRN DWTST DWT STATUS EXTRN DWTECB DWT ECB ADDRESS EXTRN DWTOR DWT ORDER EXTRN ECBBA ECB BUFFER ADDRESS EXTRN ECBRL ECB REQUESTED LENGTH EXTRN ECBEL ECB EFFECTIVE LENGTH EXTRN ECBRC ECB RETURN CODE EXTRN ECBCW1 ECB CONTROL-WORD 1 EXTRN ECBCW2 ECB CONTROL-WORD 2 EXTRN TASCII CODE CONV. TABLE EBCDIC-ASCII EXTRN TEBCDIC CODE CONV. TABLE ASCII-EBCDIC EXTRN INTSAV SAVE AREA FOR INTERRUPTS EXTRN ILLINT ILLEGAL INTERRUPT EXTRN SAVE8 MONITOR ROUTINE FOR SAVEING A1-A8 EXTRN PFPOST WAIT FOR POWER UP IF SET EXTRN DCSRST RESET STATISTIC AREA EXTRN DCSUPR UPDATE COUNTER IN STATISTIC AREA EXTRN DCSRED READ STATISTIC AREA EXTRN LKMRQE ABORT NOT PERMITTED =9 EXTRN DWTWAT WAIT/ACTIVATE INDICATOR =9 EJECT * * * FORMAT DEFINITIONS * BYTE FORM 8,8 EJECT * * * PARAMETERS FOR CONDITIONALLY ASSEMBLY * * X:A EQU 1 <=4 NLINE EQU X:A NUMBER OF COMMUNICATION LINES X:B EQU 1 BSC EQU X:B IF = 0. SIEMENS MSV2 PROCEDURE IF = 1. BSC PROCEDURE X:C EQU 1 CODE EQU X:C IF = 0. ASCII CODE IF = 1. EBCDIC CODE X:D EQU 10 TBID EQU X:D BID TIME OUT VALUE (X100 MS) X:E EQU 0 COMPRS EQU X:E IF =1, SPACE COMPR./DECOMPR. PERFORMED X:F EQU 0 IDLELN EQU X:F IF =1, IDLE LINE ACTIVITY INCLUDED TO HOLD A 2-WIRE SWITCHED LINE IN CASE OF NO COMMUNICATION ACTIVITY X:G EQU 0 STAT EQU X:G IF =1, STATISTIC COLLECTION INCLUDED X:H EQU 0 LOGG EQU X:H IF NOT ZERO INTERRUPT LOG INCLUDED LOGG = LOG AREA LENGTH PER LINE X:I EQU 0 SALCUZ EQU X:I IF =0 DC CONTROL UNIT 6834 IF =1 DC CONTROL UNIT 6857/SALCUZ IFT SALCUZ=1 X:J EQU /0A DAMI01 EQU X:J INPUT DEVICE ADDR LINE 01 X:K EQU /0B DAMI02 EQU X:K INPUT DEVICE ADDR LINE 02 X:L EQU /0C DAMI03 EQU X:L INPUT DEVICE ADDR LINE 03 X:M EQU /0D DAMI04 EQU X:M INPUT DEVICE ADDR LINE 04 XIF IFF SALCUZ=1 X:J EQU /02 DAMI01 EQU X:J INPUT DEVICE ADDR LINE 01 X:K EQU /22 DAMI02 EQU X:K INPUT DEVICE ADDR LINE 02 X:L EQU /04 DAMI03 EQU X:L INPUT DEVICE ADDR LINE 03 X:M EQU /05 DAMI04 EQU X:M INPUT DEVICE ADDR LINE 04 XIF X:N EQU 0 TBUFL EQU X:N MMU BUFFER SIZE IN WORDS * * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1 * MMUPAG EQU 0 * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0 * CPU852 EQU 1 * * EJECT * ******************************************************* * * SYSTEM PARAMETERS * ******************************************************* * DEVIND EQU 2 DEVICE INDEX BUFLEN EQU TBUFL+TBUFL MMU BUFFER SIZE * * OUTPUT DEVICE ADDRESSES * IFT SALCUZ=1 BIAS EQU 1 OUTPUT-INPUT DEVICE ADDRESS XIF IFF SALCUZ=1 BIAS EQU /10 OUTPUT-INPUT DEVICE ADDRESS XIF SPEED EQU 1 IF =1, HIGH SPEED (CT111) * ITBUSE EQU 0 IF =1, ITB TO USER BUFFER * ITBTRM EQU 0 IF =1, ITB IS TRANSMITTED AFTER 80 CHA- =10 RACTERS. IF NON-TRANSP. MODE IS USED, ITB =10 IS ALSO TRANSMITTED AFTER AN EM-CHARACTER =10 IF PRESENT IN SEND BUFFER, ALL ACCORDING =10 TO THE IBM 2780 PROTOCOL. SPAC =10 COMP/DECOMP IS NOT ALLOWED IF ITBTRM=1 =10 * * * RETRY LIMITS * L:ENQ EQU 3 COUNT OUT AFTER 3 ENQ:S L:WACK EQU 15 COUNT OUT AFTER 15 WACK:S L:RTR EQU 4 COUNT OUT AFTER 4 TRANSMISSIONS EJECT * * PROCEDURE TIMEOUT VALUES * T:BID EQU TBID BID TIMER, STANDARD IS 1 S T:TTD EQU 20 TEMPORARY TEXT DELAY TIMER T:WACK EQU 20 TIMER FOR SENDING WACK T:ENQ EQU 30 TIMER FOR SENDING ENQ, IN CASE OF NO ANSWER FROM THE SLAVE T:MACT EQU 240 TIMER CHECKING THAT MASTER IS ACTIVE T:MOD EQU 10 MODEM READY TIMER T:WRT EQU 50 TIMER CHECKING MODEM DURING O/P T:MERR EQU T:MACT MODEM ERROR SUPERV. TIMER IN MASTER MODE *T:SERR EQU 3*(L:ENQ+1) MODEM ERROR SUPERV. TIMER IN SLAVE MODE T:IDLE EQU 150 IDLE TIMER FOR SWITCHED LINES * * OPTION CODE EQUATES * O:TRP EQU /02 TRANSPARENT TRANSMISSION O:ETX EQU /01 BLOCK END CHARACTER = ETX O:RVI EQU /01 ACKNOWLEDGE LAST BLOCK WITH RVI * IFT SPEED=1 LSPEED EQU /0200 HIGH SPEED SELECTION 6834 XIF IFT SPEED=0 LSPEED EQU 0 LOW SPEED SELECTION 6834 XIF IFT COMPRS=1 * * SPACE COMPRESION CONSTANTS * SP:MAX EQU 43 MAX NO OF SPACES COMPR <64 MUST BE ADJUSTED TO LINE SPEED <22 FOR SPEED =9600 BPS <43 =4800 BPS =63 <4800 BPS SP:MIN EQU 2 MIN NO OF SPACES SP:CHB EQU /40 SPACE COUNT CHAR SPECIAL BIT SP:CHM EQU /3F SPACE COUNT CHAR MASK SP:ASC EQU /20 ASCII SPACE CHAR FOR DECOMPR * XIF * * EJECT ************************************************** * * APPLICATION INTERFACE; ORDERS AND RETURN CODES * ************************************************** * * ORDERS: * * /21 - OPEN * * /22 - CLOSE * * /24 - CONNECT ACTIVE * * /27 - CONNECT PASSIVE * * /2F - DISCONNECT * * /02 - RECEIVE * * /06 - SEND * * /00 - READ STATUS * * /38 - SET STATUS * * /2D - READ/RESET STATISTICS * * /39 - SET TIMEOUT * EJECT * RETURN CODES: * * STATUS WORD = 0 REQUEST COMPLETED NORMALLY * * " " <> 0 ABNORMAL RETURN (SEE BIT EQU'S BELOW) * ************************************************************** * BIT0 EQU /8000 REQUEST ERROR BIT1 EQU /4000 REQUEST ABORTED BIT2 EQU /2000 DATA INTERRUPT E.I. RVI OR ENQ BIT3 EQU /1000 END OF DATA UNITS E.I. EOT BIT4 EQU /0800 DATA SEGMENT E.I ETB RECEIVED BIT5 EQU /0400 QUALIFIED DATA UNIT (TRANSP. DATA REC.) BIT6 EQU /0200 DLE EOT RECEIVED (SWITCHED CONNECTIONS) BIT7 EQU /0100 NOT USED BIT8 EQU /80 NOT USED BIT9 EQU /40 TIMEOUT BIT10 EQU /20 DATA CANCELLED (EOT ON MESS. BLOCK) BIT11 EQU /10 SEQUENCE ERROR BIT12 EQU /08 INCORR. BUFFER LENGTH BIT13 EQU /04 NOT USED BIT14 EQU /02 LOGICAL CONNECTION ERROR BIT15 EQU /01 PHYSICAL CONNECTION ERROR EJECT * * RETURN CODE EQUATES * R:OK EQU 0 REQUEST COMPLETED NORMALY R:RERR EQU BIT0 REQUEST ERROR R:INT EQU BIT2 ENQ ON 'BID' OR RVI ON MESS BLOCK R:EOT EQU BIT3 EOT RECEIVED TO COMPLETE A MESSAGE RECEPTION, OR MAX NBR'S OF WACKS RECEIVED ON A TRANSMITTED BLOCK R:ETB EQU BIT4 MESS BLOCK ENDED WITH ETB RECEIVED R:TRP EQU BIT5 TRANSPARENT DATA RECEIVED R:NCON EQU BIT6 DLE EOT RECEIVED, INDICATING DISCONN. OF THE PHYSICAL CONNECTION (SWITCHED CONNECTIONS ONLY) R:TERR EQU BIT9 TIMEOUT R:CANC EQU BIT10 EOT RECEIVED ON A MESS BLOCK R:SERR EQU BIT11 SEQUENCE ERROR R:LERR EQU BIT12 INCORRECT BUFF. LENGTH R:CERR EQU BIT14 LOGICAL CONNECTION ERROR E.G. NO ANSWER OR WRONG ANSWER R:MNOP EQU BIT15 MODEM ERROR IFT STAT=1 EJECT ************************************************************* * * STATISTIC EQU:S * USED IN CALLS FOR UPDATE OF COUNTERS * * THE FORMAT OF THE PARAMETER-1 IN CALL TO DCSUPR/DCSUPD * IS: * BITS XYZZZZZZ WHERE X=1IF PARAMETER-2 USED AS INCREMENT * ELSE INCREMENT WITH +1 * Y=1 IF DOUBLE WORD COUNTER * ZZZZZZ= COUNTER INDEX AS LISTED BELOW * ************************************************************* * * LINK LEVEL COUNTERS CSSRBL EQU /10 SYNCH DATA BLOCKS RECEIVED CSSRBY EQU /11 " DATA BLOCKS REJECTED BUFFER BUSY (NBR OF TRANSMITTED WACK'S) CSSRBO EQU /12 " DATA BLOCKS REJECTED BUFFER OVERFLOW CSSRAB EQU /13 " DATA BLOCKS REJECTED ABORTED (EOT RESPONSE TO A DATA BLOCK DUE TO A DISCONNECT REQUEST) CSSRPE EQU /14 " DATA BLOCKS REJECTED PARITY ERROR OR DUE TO A BCC ERROR CSSTBL EQU /15 " DATA BLOCKS TRANSMITTED CSSTRT EQU /16 " DATA BLOCKS RETRANSMITTED CSSTAB EQU /17 " DATA BLOCKS ABORTED (EOT RECEIVED AS RESPONSE TO A DATA BLOCK) * DTE/DCE LEVEL COUNTERS CSCDTE EQU /28 DTE NOT OPERABLE (START I/P, OR START O/P NOT ACCEPTED) CSCDIT EQU /29 I/P THROUGHPUT ERROR CSCDOT EQU /2A O/P THROUGHPUT ERROR CSCDCE EQU /2B DCE NOT OPERABLE XIF EJECT ************************************************* * * DEVICE WORK AREAS * ********************************************** * * DWT STATUS WORD * * DWTST BIT #00 : 0 = DEVICE BUSY * 1 = DEVICE NOT BUSY * S:BID EQU BIT10 BID SEQUENCE IN PROGRESS S:EOT EQU BIT11 EOT HAS BEEN RECEIVED S:BACK EQU BIT12 BLOCK ACKNOWLEDGED WITH WACK S:NCON EQU BIT13 NO PHYSICAL CONNECTION EXISTS S:CERR EQU BIT14 DATA LINK DOWN S:MNOP EQU BIT15 MODEM NOT OPERABLE EJECT ******************************************************* * * LINE CONTROL CHARACTER EQUATES * ******************************************************* * A:SPAC EQU /20 ASCII SPACE CHARACTER A:SYN EQU /16 ASCII SYNCHRONOUS IDLE A:ETB EQU /17 ASCII ETB CHARACTER A:GS EQU /1D ASCII GROUP SEPARATOR CHARACTER * * C:PAD EQU /FF TRAILING PAD C:DLE EQU /10 DATA LINK ESCAPE C:SOH EQU /01 START OF HEADING C:STX EQU /02 START OF TEXT C:ETX EQU /03 END OF TEXT C:EM EQU /19 END OF MEDIA CHARACTER =10 IFT CODE=0 C:SYN EQU /16 SYNCHRONOUS IDLE C:EOT EQU /04 END OF TRANSMISSION C:ENQ EQU /05 ENQUIRY C:ETB EQU /17 END OF TRANSMISSION BLOCK C:NAK EQU /15 NEGATIVE ACKNOWLEDGEMENT C:RVI EQU /3C SEC CHAR IN RVI SEQUENCE C:ACK0 EQU /30 SEC CHAR IN ACK 0 SEQUENCE C:ACK1 EQU /31 SEC CHAR IN ACK 1 SEQUENCE GS EQU /1D GROUP SEPARATOR C:SPAC EQU /20 SPACE CHARACTER C:ITB EQU /1F UNIT SEPARATOR C:PAR EQU /80 ASCII PARITY BIT XIF IFT CODE=0 IFT BSC=1 C:WACK EQU /3B SEC CHAR IN WACK SEQUENCE XIF IFT CODE=0 IFT BSC=0 C:WACK EQU /BF SEC CHAR IN WABT SEQUENCE SIEMENS MSV2 PROCEDURE XIF IFT CODE=1 EBCDIC CHARACTER EQUATES C:SYN EQU /32 SYNCHRONOUS IDLE C:EOT EQU /37 END OF TRANSMISSION C:ENQ EQU /2D ENQUIRY C:ETB EQU /26 END OF TRANSMISSION BLOCK C:NAK EQU /3D NEGATIVE ACKNOWLEDGMENT IFT BSC=1 C:WACK EQU /6B SEC CHAR IN WACK SEQUENCE XIF IFT CODE=1 IFT BSC=0 C:WACK EQU /7F WABT CODE FOR MSV2 =11 XIF IFT CODE=1 C:RVI EQU /7C SEC CHAR IN RVI SEQUENCE C:ACK0 EQU /70 SEC CHAR IN ACK 0 SEQUENCE C:ACK1 EQU /61 SEC CHAR IN ACK 1 SEQUENCE IGS EQU /1D GROUP SEPARATOR GS EQU IGS RENAME IGS C:SPACE EQU /40 SPACE CHARACTER IUS EQU /1F UNIT SEPARATOR C:ITB EQU IUS RENAME ITB C:PAR EQU /00 NO PARITY BIT IN EBCDIC XIF EJECT ************************************************************* * * LINE CONTROL UNIT FUNCTION CONTROL EQU:S * ************************************************************* * IFF SALCUZ=1 C:CARR EQU /100 CARRIER ON C:CRSP EQU C:CARR+LSPEED CARRIER ON + SPEED SELECTION XIF * * EJECT *************************************************** * * LINE CONTROL UNIT SST STATUS BITS * *************************************************** * S:THRU EQU /02 THROUGHPUT ERROR IFT SALCUZ=1 S:PARE EQU /04 CHAR PARITY ERROR XIF S:CARR EQU /20 CARRIER OFF S:CALL EQU /40 INCOMING CALL * IFT SALCUZ=1 S:ERR EQU /27 S:MNOP,S:THRU,S:PARE,S:CARR XIF IFF SALCUZ=1 S:ERR EQU /23 S:MNOP,S:THRU,S:CARR XIF EJECT ****************************************************** * * LINE CONTROL UNIT INSTRUCTIONS * ****************************************************** * HLTI:P CIO A2,0,0 HALT INPUT CU DEVICE * SSTI:P SST A2,0 GET INPUT CU DEVICE STATUS * STAI:P CIO A2,1,0 START INPUT CU DEVICE * HLTO:P CIO A2,0,0 HALT OUTPUT CU DEVICE * SSTO:P SST A2,0 GET OUTPUT CU DEVICE STATUS * STAO:P CIO A2,1,0 START OUTPUT CU DEVICE * INR:A2 INR A2,0,0 GET CHARACTE FROM CU DEVICE * OTR:A2 OTR A2,0,0 OUTPUT CHARACTER TO CU DEVICE * IFT SALCUZ=1 OTR:SY OTR A2,1,0 SPECIFIES SYN PATTERN TO 'SALCUZ' CIODIS EQU HLTI:P DISCONNECT MODEM XIF IFF SALCUZ=1 CIODIS EQU STAI:P DISCONNECT MODEM XIF * EJECT * * DLS MODE EQUATES * * MAIN MODES * CNTRL EQU /0000 CONTROL MODE RECEIV EQU /0200 RECEIVE MODE SEND EQU /0400 SEND MODE * * SUB MODES * INIT EQU 0 INITIAL SUB MODE WCALL EQU 2 WAIT FOR CALL NOLCON EQU 4 NO LOGICAL CONNECTION MODE WACK0 EQU 6 WAIT FOR ACK 0 MODE WACKD EQU 2 WACK DELAY WSTX EQU 4 WAIT FOR STX NONTRP EQU 6 NON-TRANSPARENT RECEIVE MODE TRANSP EQU 8 TRANSPARENT RECEIVE MODE LRECOV EQU /A LINK RECOVERY MODE WNAK EQU 2 WAIT FOR NAK AFTER TTD WACK EQU 4 WAIT FOR ACKNOWLEDGMENT EJECT *********************************************************************** * * INDEX FOR ALL BY THE DRIVER USED CHARACTERS, FOR THE DIFFERENT * TIMEOUTS, AND FOR SST INTERRUPTS. THE INDEX ARE USED TOGETHER * WITH THE DLS MODE TO MAKE A BRANCH TO THE CORRESPONDING * EVENT HANDLER. * ***************************************************************** * I:RQT EQU 0 REQUEST TIMEOUT AND ABORT INDEX I:PRT EQU 2 PROCEDURE TIMEOUT INDEX I:SST EQU 4 SST INTERRUPT INDEX I:SYN EQU 6 INDEX FOR THE SYN CHARACTER I:STX EQU 8 '' STX '' I:ITB EQU /A '' ITB '' I:ETB EQU /C '' ETB '' I:ETX EQU /E '' ETX '' I:EOT EQU /10 '' EOT '' I:DLE EQU /12 '' DLE '' I:NAK EQU /14 '' NAK '' I:ENQ EQU /16 '' ENQ '' I:GS EQU /18 '' GS '' I:CHR EQU /1A INDEX FOR A DATA CHARACTER EJECT ************************************** * * DWT DISPLACEMENTS * ************************************** * IFT STAT=0 DWTDRD EQU /10 START OF DRIVER DEFINED PART XIF IFT STAT=1 DWTDRD EQU /1A XIF * IFT MMUPAG=0 START EQU DWTDRD XIF * IFT MMUPAG=1 START EQU DWTDRD+4 XIF * IFT STAT=1 DWTSBU EQU START-/A DWT DC REL OFFSET TO STATISTIC BUFFER DWTCHD EQU START-8 DWT DC REL LINK TO HEAD DWT DWTCHN EQU START-6 DWT DC REL LINK TO NEXT DWT DWTLAD EQU START-4 DWT LOCAL DTE ADDRESS DWTSUB EQU START-2 POSSIBLE SUB ADDRESS XIF DWTTIM EQU START APPLICATION TIMEOUT VALUE DWTMOD EQU START+2 ACTUAL MODE OF THE DLS DWTCON EQU START+4 TYPE OF CONNECTION DWTTRM EQU START+6 TRANSMISSION MODE DWTABT EQU START+8 ABORT INDICATOR DWTINP EQU START+/0A INUT INDICATOR DWTOUT EQU START+/0C OUTPUT ACTIVE INDICATOR DWTPTP EQU START+/0E PROCEDURE TIMER POINTER DWTRTP EQU START+/10 REQUEST TIMER POINTER DWTMTP EQU START+/12 MODEM SUPERVISORY TIMER POINTER DWTITP EQU START+/14 IDLE TIMER POINTER DWTCTP EQU START+/16 MODEM CONNECTION TIMER POINTER DWTETR EQU START+/18 ENQ COUNTER DWTWTR EQU START+/1A WACK COUNTER DWTRTR EQU START+/1C RETRANSMISSION COUNTER DWTLRS EQU START+/1E LAST RESPONSE DWTCNT EQU START+/20 ACK COUNTER DWTDLE EQU START+/22 DLE INDICATOR DWTCMP EQU START+/24 SPACE COMPRESSION WORK AREA IFT CPU852=0 DWTSAV EQU START+/26 SAVE AREA FOR REGISTERS A1-A8 DWTSTB EQU START+/4C STACK BASE (6 LEVEL STACK) XIF IFT CPU852=1 DWTSAV EQU START+/26 SAVE AREA FOR REGISTERS A3-A5,A7,A8 DWTSTB EQU START+/46 STACK BASE (6 LEVELS STACK) XIF IFT ITBTRM=1 =10 DWTITB EQU START+/48 CHARACTER COUNTER FOR ITB =10 XIF =10 EJECT * ******************************************************* ******************************************************* * * * D R I V E R A C T I V A T I O N * * ******************************************************* ******************************************************* * * DATA BUFLEN DATA DEVIND DEVICE INDEX DRMAD DATA DRMACT DWT REFERENCE DATA ABORT ABORT ROUTINE ADDRESS DATA 0,0 DC:MIN HEADER * * DRMACT EQU * LDK A5,DWTSTB SET UP A5 STACK BASE ADR A5,A6 IN CASE OF I/O START LD A1,DWTMOD,A6 GET DATA LINK STATION (DLS) MODE SUK A7,0 RF(Z) READST READ STATUS SUK A7,/22 ABL(Z) CLOSE DISCONNECT THE MODEM SUK A7,/2D-/22 RF(Z) RRSTAT READ/RESET STATISTICS SUK A7,/38-/2D RF(Z) SETST SET STATUS SUK A7,/39-/38 RF(Z) SETTIM SET TIMEOUT ADK A7,/39 LOAD A7 WITH ORIGINAL ORDER LD A2,DWTST,A6 GET LINE STATUS ANK A2,S:MNOP MODEM OK ? RF(NZ) DCEERR NO SUK A7,/02 ABL(Z) REC000 RECEIVE A MESSAGE BLOCK SUK A7,/06-/02 ABL(Z) SEND00 TRANSMIT A MESSAGE BLOCK SUK A7,/21-/06 ABL(Z) OPEN CONNECT MODEM SUK A7,/24-/21 ABL(Z) CONACT TRY TO BECOME MASTER SUK A7,/27-/24 ABL(Z) CONPAS LOOK FOR A DATA LINK 'BID' SUK A7,/2F-/27 ABL(Z) DISCON DISCONNECT THE DATA LINK ABL DISIOE ILLEGAL ORDER EJECT ***************************************** * * MAIN ABORT ENTRY * ***************************************** * ABORT EQU * . LD A1,DWTABT,A6 ABORT ALLOWED ? =9 RF(NN) ABOR10 YES =9 CM DWTWAT,A6 INDICATE NO WAIT =9 ABL LKMRQE RC=ABORT NOT PERMITTED =9 ABOR10 EQU * =9 RF(NZ) RTN:OK AN EARLIER ABORT IN PROGRESS =9 LDK A5,DWTSTB SET A5 STACK BASE ADR A5,A6 IN CASE IT WILL BE USED =9 LDK A1,I:RQT INDEX FOR ABORT (=REQUEST TIMEOUT) IM DWTABT,A6 INDICATE ABORT ISSUED ABL JUMP BRANCH TO CORRECT ABORT HANDLER EJECT *********************************************** * * REQUEST COMPLETION PART * *********************************************** * MODEM OR CU ERROR * DCEERR EQU * LDK A1,R:MNOP RF CMPLT * * LOGICAL CONNECTION ERROR * CONERR EQU * LDK A1,R:CERR RF CMPLT * * BUFFER LENGTH DISAGREMENT * LENERR EQU * LDK A1,R:LERR RF CMPLT * * SEQUENCE ERROR * SEQERR EQU * LDK A1,R:SERR RF CMPLT * * REQUESTED TIMER HAS EXPIRED * TIMERR EQU * LDK A1,R:TERR RF CMPLT EJECT * * BLOCK ENDED WITH ETB RECEIVED * ETBRTN EQU * LDKL A1,R:ETB RF CMPLT * * EOT RECEIVED * EOTRTN EQU * LDKL A1,R:EOT RF CMPLT * * ENQ ON 'BID' OR RVI ON A MESSAGE BLOCK RECEIVED * INTRTN EQU * LDKL A1,R:INT RF CMPLT * * REQUEST ERROR * REQERR EQU * LDKL A1,R:RERR RF CMPLT * * REQUEST COMPLETED SUCCESSFULLY * RTN:OK EQU * LDK A1,R:OK CMPLT EQU * ABL DISEND TENDIO+DISPATCH EJECT ****************************************************************** * * REQUEST HANDLER FOR THE SET TIMEOUT REQUEST * ****************************************************************** * SETTIM EQU * LD A1,ECBCW1,A8 GET TIMEOUT VALUE ST A1,DWTTIM,A6 SAVE IN DWT RB RTN:OK COMPLETE THE REQUEST EJECT ************************************************************ * * REQUEST HANDLER FOR THE SET STATUS REQUEST * ************************************************************ * SETST EQU * LDR A1,A1 'INITIAL CONTROL' MODE ? RB(NZ) SEQERR NO, WRONG MODE LD A1,ECBCW1,A8 GET CONNECTION TYPE (SWITCHED/LEASED) ST A1,DWTCON,A6 SAVE IN DWT RB RTN:OK COMPLETE THE REQUEST EJECT ****************************************************************** * * REQUEST HANDLER FOR THE READ STATUS REQUEST * ****************************************************************** * READST EQU * LDK A1,0 PRESET STATUS LD A2,DWTMOD,A6 GET OPERATIONAL MODE RF(Z) READ20 INITIAL CONTROL MODE LDK A1,/2 INDICATE DTE-DCE INTERFACE ACTIVE LD A2,DWTST,A6 ANK A2,1 MODEM OK ? RF(NZ) READ20 NO ADK A1,/1 INDICATE MODEM OK READ10 EQU * CWK A3,CNTRL+NOLCON DATA LINK UP ? RF(E) READ20 NO XRK A1,/10 INDICATE DATA LINK UP READ20 EQU * LD A2,DWTCON,A6 GET TYPE OF CONNECTION RF(Z) READ30 LEASED CONNECTION SLL A2,8 PUT BIT IN RIGHT POSITION XRR A1,A2 INDICATE SWITCHED CONNECTION READ30 EQU * ST A1,ECBCW1,A8 STORE STATUS IN CONTROL-WORD 1 RB RTN:OK COMPLETE THE REQUEST EJECT ******************************************************************** * * REQUEST HANDLER FOR THE READ/RESET STATISTICS REQUEST * ******************************************************************** * RRSTAT EQU * IFF STAT=1 RB REQERR STATISTIC OPTION NOT INCLUDED XIF IFT STAT=1 CF A15,DCSRED GET STATISTIC COUNTERS TO 'USER' BUFFER LDR A1,A1 FUNCTION COMPLETED NORMALLY ? RB(NZ) REQERR NO, SOMETHING WAS WRONG LC A1,ECBCW1,A8 ANK A1,/FF GET REQUEST OPTION SUK A1,/43 RESET STATISTIC AREA ? RB(NZ) RTN:OK NO, COMPLETE REQUEST CF A15,DCSRST RESET STATISTIC AREA RB RTN:OK COMPLETE REQUEST XIF EJECT ********************************************************************* * * REQUEST HANDLER FOR THE OPEN REQUEST * ********************************************************************* * OPEN EQU * LDR A1,A1 GET OPERATIONAL MODE RB(NZ) RTN:OK LINE ALREADY OPEN LD A1,DWTCON,A6 SWITCHED CONNECTION ? RB(NZ) RTN:OK YES,JUST COMPLETE THE REQUEST LDKL A1,/8000 ANS A1,DWTST,A6 RESET LINE STATUS CF A5,ACTDCE CONNECT MODEM LDR A1,A1 MODEM OK ? RF(N) OPEN10 NO LDK A1,R:OK RC=0 RF OPEN20 OPEN10 EQU * LDK A1,R:MNOP RC=MODEM NOT OPERABLE OPEN20 EQU * CF A15,TENDIO COMPLETE THE REQUEST OPEN30 EQU * LDKL A1,CNTRL+NOLCON ST A1,DWTMOD,A6 SET 'NO LOGICAL CONNECTION' MODE =9 LDK A1,/FF =9 ANS A1,DWTABT,A6 ABORT ALLOWED =9 LD A1,DWTST,A6 ANK A1,S:MNOP MODEM OK ? ABL(NZ) MODR30 NO, TRY TO RECONNECT MODEM WITHOUT TIME SUPERVISION RF NCON65 MODEM OK, START I/P EJECT * * TIMEOUT AND ABORT ENTRY IN INITIAL CONTROL MODE * OPEN40 EQU * CF A15,CMCTIM KILL MODEM CONNECTION TIMER IF RUNNING CF A5,DISCM DISCONNECT MODEM RF NCON85 EJECT * * INPUT CHARACTER HANDLERS IN 'NO LOGICAL CONNECTION' MODE * * * SYN CHARACTER RECEIVED * NCON EQU * ABL BRM010 READ ANOTHER CHARACTER * * DLE RECEIVED * NCON10 EQU * LD A1,DWTCON,A6 LEAST CONNECTION ? RF(Z) NCON65 YES, RESTART INPUT CF A5,READ READ A CHARACTER SUK A2,C:EOT EOT CHARACTER ? RB(NZ) NCON NO, TAKE AS TERMINAL 'ID' CF A5,CHKPAD CHECK TRAILING PAD NCON20 EQU * RB(NZ) NCON NOT A PAD, TAKE AS 'ID' * * (SYN),DLE,EOT,PAD RECEIVED ON A SWITCHED CONNECTION * NCON25 EQU * LDKL A1,R:NCON CONNECTION BROKEN LOGICALLY & PHYSICALLY NCON30 EQU * LDK A3,S:NCON ORS A3,DWTST,A6 INDICATE CONNECTION BROKEN, IF NO REQ. LD A2,DWTST,A6 ANY REQUEST ? RF(N) NCON35 NO CF A15,TENDIO COMPLETE THE REQUEST XRS A3,DWTST,A6 RESET CONNECTION BROKEN BIT NCON35 EQU * CF A5,DISCM DISCONNECT MODEM CM DWTMOD,A6 SET INITIAL CONTROL MODE CF A15,CPRTIM CLEAR PROCEDURE TIMER CF A15,CRQTIM CLEAR REQUST TIMER CM DWTABT,A6 INDICATE ABORT RECOV COMPLETED LDKL A1,/8000+S:NCON ANS A1,DWTST,A6 CLEAR LINE STATUS =9 ABL TDISP * * ENQ RECEIVED * NCON40 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) NCON60 NOT A PAD LD A1,DWTST,A6 ANY REQUEST ? RF(N) NCON45 NO CF A5,ENQINT PREPARE TO ANSWER THE 'BID' ABL RTN:OK COMPLETE THE REQUEST NCON45 EQU * CF A5,TREOT SEND EOT LD A1,DWTMOD,A6 GET DLS MODE CWK A1,CNTRL+WACK0 CONNECT ACTIVE REQUEST ISSUED ? RF(E) CON040 YES, SEND ENQ RF NCON65 NO, START I/P * * EOT RECEIVED * NCON50 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(Z) NCON65 PAD OK,RESTART I/P * * NOT ALLOWED CHARACTER RECEIVED * NCON60 EQU * LD A1,DWTCON,A6 SWITCHED CONNECTION ? RB(NZ) NCON YES, TAKE AS TERMINAL'ID' NCON65 EQU * ABL BRM RESTART INPUT * * SST INTERRUPT * NCON70 EQU * ANK A2,S:MNOP MODEM OK ? RB(Z) NCON65 YES, RESTART INPUT ORS A2,DWTST,A6 INDICATE MODEM ERROR LD A1,DWTST,A6 ANY REQUEST ? RF(N) NCON80 NO LD A1,DWTRTP,A6 REQUEST TIMER RUNNING ? RF(NZ) NCON80 YES, WAIT FOR TIMEOUT LDK A1,R:MNOP RC=MODEM NOT OP CF A15,TENDIO COMPLETE REQUEST NCON80 EQU * ABL MODR30 TRY TO RECONNECT MODEM WITHOUT TIME SUPERVISION EJECT * * TIMEOUT AND ABORT ENTRY IN 'NO CONNECTION' MODE * NCON85 EQU * CF A15,CRQTIM KILL REQUEST TIMER LD A1,DWTABT,A6 ABORT ISSUED ? RF(Z) NCON95 NO NCON90 EQU * CM DWTABT,A6 INDICATE ABORT RECOV COMPLETED ABL RTN:OK COMPLETE WITH RC=0 NCON95 EQU * ABL TIMERR COMPLETE WITH RC=TIMEOUT STATUS EJECT ******************************************************** * * REQUEST HANDLER FOR THE CLOSE REQUEST * ******************************************************** * CLOSE EQU * LDR A1,A1 GET OPERATIONAL MODE ABL(Z) RTN:OK LINE ALREADY CLOSED LD A2,DWTCON,A6 SWITCHED CONNECTION ? RF(NZ) CLOS10 YES CWK A1,CNTRL+NOLCON 'NO LOGICAL CONNECTION' MODE ? RF(NE) CLOS30 CLOS00 EQU * CF A15,CMCTIM KILL MODEM CONNECTION TIMER (IF RUNNING) LDK A1,R:OK RC=0 RB NCON30 COMPLETE THE REQUEST CLOS10 EQU * CWK A1,CNTRL+NOLCON DATA LINK UP ? RF(E) CLOS20 NO CWK A1,SEND+WNAK WAITING FOR NAK AFTER TTD ? ABL(E) TDISP YES, QUEUE THE REQUEST CWK A1,SEND+INIT INITIAL SEND MODE ? RF(NE) CLOS30 CLOS20 EQU * CM DWTMOD,A6 SET 'INITIAL CONTROL' MODE LD A1,DWTST,A6 GET LINE STATUS ANK A1,S:MNOP MODEM OK ? RB(NZ) CLOS00 NO, SKIP TRANSMISSION OF DLE EOT =9 LDKL A1,/8000 =9 ORS A1,DWTABT,A6 ABORT NOT PERMITTED =9 CF A5,TRSYN START O/P, AND SEND SYN LDK A2,C:DLE CF A5,WRITE SEND DLE CF A5,TREOT5 SEND EOT PAD AND HALT O/P RB CLOS00 DISCONNECT MODEM AND COMLETE REQUEST CLOS30 EQU * LD A1,DWTST,A6 GET STATUS ANK A1,S:MNOP MODEM OK ? * * MODEM RECOVERY IN PROGRESS IF BIT SET * ABL SEQERR FOR THE MOMENT, SEQUENCE ERROR EJECT ********************************************************************** * * REQUEST HANDLER FOR THE CONNECT ACTIVE REQUEST * ***************************************************************** * CONACT EQU * LD A2,DWTCON,A6 LEASED CONNECTION ? RF(Z) CON020 YES LDR A1,A1 ANY PHYSICAL CONNECTION ? RF(NZ) CON020 YES LD A1,DWTTIM,A6 TIME VALUE SPECIFIED ? RF(Z) CON010 NO CF A15,SRQTIM START TIME SUPERVISION OF PHYS CON PHASE CON010 EQU * CF A5,ACTDCE TRY TO CONNECT MODEM LDR A1,A1 CONNECTION SUCCESSFUL ? RB(N) CON010 NO, TRY AGAIN CF A15,CRQTIM NO TIME SUPERV. OF LOGICAL CONN. PHASE RF CON030 CON020 EQU * CWK A1,CNTRL+NOLCON 'NO LOGICAL CONNECTION' MODE ? ABL(NE) SEQERR NO, REQUEST ISSUED IN WRONG MODE CON030 EQU * LDK A1,WACK0 SC A1,DWTMOD+1,A6 SET WAIT FOR ACK0 MODE * PREPARE RETRY COUNTERS * LDKL A1,-L:ENQ+1 ST A1,DWTETR,A6 MAX NBRS OF T-O OR NAK'S LDKL A1,-L:WACK+1 ST A1,DWTWTR,A6 MAX NBRS OF ACCEPTED WACK'S LD A1,DWTOUT,A6 OUTPUT IN PROGRESS (EOT) ? ABL(NZ) TDISP YES WAIT UNTIL O/P COMPLETED CON040 EQU * LD A1,DWTABT,A6 ABORT ISSUED ? RF(NZ) CON060 YES, SEND EOT CF A5,TRENQ NO, SEND ENQ LDK A1,T:BID CF A15,SPRTIM START PROCEDURE TIMER CON050 EQU * ABL BRM START INPUT EJECT * * ABORT ISSUED OR A RETRY LIMIT REACHED * CON060 EQU * CF A5,TREOT SEND EOT CON070 EQU * LDK A1,R:CERR PRESET RETURN CODE CON080 EQU * LDKL A2,CNTRL+NOLCON ST A2,DWTMOD,A6 SET 'NO LOGICAL CONNECTION' MODE LD A2,DWTABT,A6 ABORT ISSUED ? RF(Z) CON090 NO CM DWTABT,A6 INDICATE ABORT RECOV COMPLETED RB CON050 START INPUT CON090 EQU * CF A15,TENDIO COMPLETE THE REQUEST RB CON050 START INPUT EJECT * * INPUT CHARACTER HANDLERS IN WAIT FOR ACK0 MODE * * * SYN RECEIVED * CON100 EQU * ABL BRM010 READ ANOTHER CHARACTER * * DLE RECEIVED * CON110 EQU * CF A5,READ LDR A4,A2 SAVE CHARACTER CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) CON210 NOT A PAD LDR A2,A4 RESTORE LAST RECEIVED CHARACTER CWK A2,C:ACK0+C:PAR ACK0 RECEIVED ? RF(NE) CON130 NO CF A5,HLTINP HALT INPUT CF A15,CPRTIM KILL PROCEDURE TIMER LD A1,DWTABT,A6 ABORT ISSUED ? RB(NZ) CON060 YES, SEND EOT * * PREPARE FOR TRANSMITTING A MESSAGE BLOCK * CM DWTTRM,A6 DEFAULT NON TRANSPARENT MODE LDK A1,1 ST A1,DWTCNT,A6 UPDATE ACK COUNTER LDKL A1,SEND+INIT ST A1,DWTMOD,A6 SET INITIAL TRANSMIT MODE LDK A1,T:TTD CF A15,SPRTIM START PROCEDURE TIMER FOR TEXT DELAY ABL RTN:OK COMPLETE REQUEST AND DISPATCH CON130 EQU * CWK A2,C:WACK WACK RECEIVED ? RF(NE) CON140 NO CF A15,CPRTIM KILL PROCEDURE TIMER IM DWTWTR,A6 MAX NBR OF WACK RECEIVED ? RB(P) CON060 YES, SEND EOT RB CON040 NO, SEND ANOTHER ENQ CON140 EQU * LD A1,DWTCON,A6 LEAST CONNECTION ? RB(Z) CON050 YES, WRONG SEQ. RESTART INPUT SUK A2,C:EOT EOT RECEIVED ? RB(NZ) CON100 NO, TAKE AS 'ID' AND READ ANOTHER CHAR * * DLE,EOT,PAD RECEIVED ON A SWITCHED CONNECTION * CON150 EQU * ABL NCON25 EJECT * * ENQ RECEIVED ON ENQ * CON160 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) CON210 NOT A PAD CF A15,CPRTIM KILL TIMER LD A1,DWTABT,A6 ABORT ISSUED ? RB(NZ) CON060 YES, SEND EOT CF A5,ENQINT PREPARE AFTER RECEIVING ENQ LDK A1,S:BID ORS A1,DWTST,A6 DISCONNECT ALLOWED DESPITE OF WACK ABL INTRTN NOTIFY APPLICATION ABOUT ENQ * * NAK RECEIVED * CON170 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) CON210 NOT A PAD CF A15,CPRTIM KILL PROCEDURE TIMER CON180 EQU * IM DWTETR,A6 MAX NBR OF TRANSMITTED ENQ ? RB(P) CON060 YES, SEND EOT RB CON040 NO, SEND ENQ EJECT * * EOT RECEIVED * CON190 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) CON210 NOT A PAD CON200 EQU * CF A5,HLTINP CF A15,CPRTIM RB CON070 EOT RECEIVED, TAKE PROPER ACTION * * ANY CHARACTER BUT SYN, DLE, ENQ, NAK OR EOT * CON210 EQU * LD A1,DWTCON,A6 SWITCHED LINES ? RB(NZ) CON100 YES, TAKE AS 'ID' RB CON050 N0, RESTART INPUT * * PROCEDURE TIMEOUT * CON220 EQU * RB CON180 * * SST INTERRUPT * CON230 EQU * ABL MODREC BRANCH TO COMMON SST HANDLER * * ABORT ENTRY IN 'WAIT FOR ACK0' MODE * CON240 EQU * ABL RTN:OK COMLETE ABORT, BUT DON'T CLEAR FLAG EJECT ***************************************************************** * * TIMEUOT ENTRY FOR SENDING TEMPORARY TEXT DELAY (TTD) SEQUENCE * ***************************************************************** TTDDEL EQU * LDK A1,WNAK SC A1,DWTMOD+1,A6 SET WAIT FOR NAK MODE TTD010 EQU * LDKL A1,-L:ENQ ST A1,DWTETR,A6 LIMIT BEFORE SENDING EOT TTD015 EQU * CF A5,TRTTD SEND TTD SEQUENCE TTD020 EQU * LDK A1,T:ENQ CF A15,SPRTIM START PROCEDURE TIMER ABL BRM START INPUT EJECT * * INPUT CHARACTER HANDLERS IN WAIT FOR NAK MODE * * * SYN RECEIVED * TTD030 EQU * ABL BRM010 READ ANOTHER CHARACTER * * NAK RECEIVED * TTD040 EQU * CF A5,CHKPAD CHECK TRAILING PAD TTD050 EQU * RF(NZ) TTD090 NOT A PAD CF A5,HLTINP HALT INPUT CF A15,CPRTIM KILL TIMER LDK A1,INIT SC A1,DWTMOD+1,A6 SET INITIAL TRANSMIT MODE LD A1,DWTST,A6 ANY REQUEST ?? RF(N) TTD080 NO LD A1,DWTOR,A6 GET ORDER ANK A1,/FF SUK A1,/06 WRITE ORDER ? ABL(Z) SEN035 YES, START OUTPUT SUK A1,/22-/06 CLOSE ORDER ? ABL(Z) CLOS20 YES EJECT * * DISCONNECT REQUEST PRESENT * TTD060 EQU * LDKL A1,CNTRL+NOLCON ST A1,DWTMOD,A6 SET 'NO LOGICAL CONNECTION' MODE LDK A1,R:OK RC=0 CF A15,TENDIO COMPLETE THE REQUEST ABL NCON45 SEND EOT TTD080 EQU * LDK A1,T:TTD CF A15,SPRTIM RESTART TTD TIMER ABL TDISP WAIT FOR REQUEST OR TIMEOUT * * NOT ALLOWED CHARACTER RECEIVED * TTD090 EQU * ABL BRM RESTART INPUT * * PROCEDURE TIMEOUT * TTD100 EQU * IM DWTETR,A6 RETRY LIMIT REACHED ? RB(NP) TTD015 NO, RETRANSMIT TTD SEQUENCE TTD105 EQU * CF A5,TREOT YES, SEND EOT LD A1,DWTST,A6 ANY REQUEST ? ABL(N) WACK90 NO LD A1,DWTOR,A6 ANK A1,/FF GET ORDER SUK A1,/06 SEND ? ABL(Z) CON070 YES SUK A1,/22-/06 CLOSE ? ABL(Z) CLOS20 YES LDK A1,R:OK DISCONNECT REQ. PRESENT => RC=0 ABL OPEN20 * * SST INTERRUPT * TTD120 EQU * ABL MODREC BRANCH TO COMMON SST HANDLER * * ABORT ENTRY IN WAIT FOR NAK MODE * TTD150 EQU * CM DWTABT,A6 ABORT RECOVERY COMPLETED ABL RTN:OK COMPLETE ABORT EJECT ************************************************************** * * REQUEST HANDLER FOR THE CONNECT PASSIVE REQUEST * ************************************************************** * CONPAS EQU * LD A2,DWTCON,A6 SWITCHED CONNECTION ? RF(NZ) CONP10 YES CONP00 EQU * CWK A1,CNTRL+NOLCON ABL(NE) SEQERR REQUEST ISSUED IN WRONG MODE RF CONP15 CONP10 EQU * CWK A1,CNTRL+INIT PHYSICAL CONNECTION ESTABLISHED ? RB(NE) CONP00 YES CONP15 EQU * LD A1,DWTTIM,A6 GET TIMEOUT VALUE RF(Z) CONP20 NO TIME SUPERVISION WANTED CF A15,SRQTIM START REQUEST TIMER CONP20 EQU * LD A1,DWTMOD,A6 ANY PHYSICAL CONNECTION ESTABLISHED ? ABL(NZ) TDISP YES, WAIT FOR A 'BID' EJECT * * PREPARATION FOR CONNECT PASSIVE ON SWITCHED LINES * WHEN NO PHYSICAL CONNECTION IS ESTABLISHED * * CONP30 EQU * LDK A1,WCALL SC A1,DWTMOD,A6 SET 'WAIT FOR CALL' MODE CONP40 EQU * CF A5,DISCM PUT 'CU' IN EXECUTE MODE IM DWTINP INDICATE INPUT ALLOWED CF A5,READ GO TO DISPATCHER AND WAIT FOR A CALL * * CHECK INCOMMING SATUS * CONP50 EQU * ANK A2,S:CALL RB(Z) CONP40 NOT A INCOMMING CALL * * AN INCOMMING CALL RECEIVED * * CF A5,ACTDCE CONNECT MODEM LDR A2,A1 MODEM OPERABLE ? ABL(Z) OPEN30 YES LDK A1,R:MNOP RC=MODEM NOT OP ABL NCON30 EJECT * * TIMEOUT AND ABORT ENTRY IN 'WAIT FOR CALL' MODE * CONP60 EQU * CM DWTMOD,A6 SET 'INITIAL CONTROL' MODE ABL OPEN40 EJECT ********************************************************* * * TIMEOUT ENTRY FOR SENDING WACK * ********************************************************* * WACK00 EQU * LDK A1,WACKD SC A1,DWTMOD+1,A6 SET 'WACK DELAY' MODE CF A5,TRWACK SEND WACK IFT STAT=1 LDK A1,CSSRBY CF A15,DCSUPR INCREMENT BUFFER BUSY COUNTER XIF WACK05 EQU * LDK A1,T:MACT CF A15,SPRTIM START MASTER ACTIVITY TIMER LD A1,DWTST,A6 ANK A1,S:BID DISCONNECT ALLOWED DESPITE OF WACK ? RF(NZ) WACK0A YES LDK A1,S:BACK ORS A1,DWTST,A6 INDICATE DIOSCONNECT NOT ALLOWED WACK0A EQU * ABL BRM START INPUT EJECT * * INPUT CHARACTER HANDLERS IN 'WACK DELAY' MODE * * * SYN CHARACTER RECEIVED * WACK10 EQU * ABL BRM010 READ ANOTHER CHARACTER * * DLE RECEIVED * WACK15 EQU * LD A1,DWTCON,A6 LEASED CONNECTION ? RF(Z) WACK60 YES, NOT ALLOWED CHARACTER CF A5,READ READ ANOTHER CHARACTER WACK20 EQU * SUK A2,C:EOT EOT RECEIVED ? RF(NZ) WACK60 NO CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) WACK60 NOT A PAD ABL NCON25 * * EOT RECEIVED * WACK25 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) WACK60 NOT A PAD WACK30 EQU * CF A15,CPRTIM KILL MASTER ACTIVITY TIMER CF A15,CRQTIM CLEAR REQUEST TIMER IF RUNNING CF A5,HLTINP HALT I/P LD A1,DWTST,A6 ANY PRESENT REQUEST ? RF(N) WACK40 NO LDKL A1,R:EOT RC=EOT RECEIVED LD A2,DWTOR,A6 GET ORDER SUK A2,/02 RECEIVE ORDER ? RF(Z) WACK35 YES LDK A1,R:OK NO, DISCONNECT => RC=0 WACK35 EQU * ABL OPEN20 WACK40 EQU * LDK A1,S:EOT ORS A1,DWTST,A6 REMEMBER EOT FOR FUTURE REQUEST ABL OPEN30 * * ENQ RECEIVED * WACK45 EQU * CF A5,CHKPAD CHECK TRAILING PAD RF(NZ) WACK60 NOT A PAD CF A5,HLTINP HALT INPUT CF A15,CPRTIM STOP MASTER ACTIVITY TIMER LDK A1,INIT SC A1,DWTMOD+1,A6 SET INITIAL RECEIVE MODE LD A1,DWTST,A6 ANY REQUEST ? RF(N) WACK50 NO LD A1,DWTOR,A6 ANK A1,/FF GET ORDER SUK A1,/02 RECEIVE ORDER ? ABL(Z) REC070 YES RF DISC30 NO, DISCONNECT ORDER WACK50 EQU * LDK A1,T:WACK CF A15,SPRTIM RESTART WACK TIMER ABL TDISP * * ENTRY FOR NOT ALLOWED CHARACTERS * WACK60 EQU * ABL BRM RESTART INPUT * * SST INTERRUPT IN 'WACK DELAY' MODE * WACK70 EQU * ABL MODREC BRANCH TO COMMON SST HANDLER * * ABORT AND REQUEST TIMEOUT ENTRY * WACK80 EQU * ABL NCON85 * * MSV2 TIMEOUT ENTRY. NO ACTION HAS BEEN TAKEN BY THE * MASTER ON THE LAST RESPONSE WITHIN A PREDEFINED TIME. * WACK85 EQU * CF A15,CRQTIM KILL REQUEST TIMER IF RUNNING LD A1,DWTST,A6 GET LINE STATUS RF(N) WACK90 NO REQUEST PRESENT LD A1,DWTOR,A6 GET ORDER ANK A1,/FF SUK A1,/2F DISCONNECT ? ABL(NZ) CON070 NO RF DISC40 WACK90 EQU * LDK A1,S:CERR ORS A1,DWTST,A6 SET CONNECTION ERROR ABL OPEN30 EJECT