ASMB,R,L,C HED - DS1 INITIALIZATION * (C) HEWLETT-PACKARD CO. 1976 * * NAM LSTEN,3,25 91700-16109 REV.A 760308 SPC 1 ENT LSTEN SPC 1 EXT READF,CLOSE,OPEN,RNRQ,PRTN,MESSS,REIO,PGMAD,CNUMD EXT EXEC,$LIBR,$LIBX,$CGRN,RMPAR,PARSE,#PRMY,#RSAX EXT #FWAM,#GPRN,#MSTO,#NULL, #QRN,#RTRY,#SRPM EXT #ST00,#ST01,#ST02,#ST03,#ST04,#ST05,#ST06,#ST07 EXT #ST08,#ST09,#SVTO,#TBRN,#WAIT,#SWRD,#BUSY EXT #GRPM,#QCLM,#NCLR,#SCLR,#RFSZ,#RXCL,#SBIT,#PLOG EXT #QLOG SUP * * NAME: LSTEN * SOURCE: 91700-18109 * RELOC.: 91700-16109 * PGMR: C.C.H. [ 03/08/76 ] * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * * *************************************************************** SPC 5 * LSTEN SERVES A DUAL PURPOSE. IT IS USED, PRIMARILY, TO INITIALIZE * THE DISTRIBUTED SYSTEMS NETWORK THROUGH ESTABLISHMENT OF THE * REQUIRED RESOURCES (CLASS NUMBERS, RESOURCE NUMBERS, TRANSACTION * LISTS, POINTERS, TIMERS, AND CONSTANTS), THROUGH THE ACTIVATION * OF 'LISTEN' MODE FOR EACH SPECIFIED COMMUNICATION LINE INTERFACE, * AND BY SCHEDULING THOSE MONITOR-PROGRAMS WHICH SERVICE INCOMING * REQUESTS FROM REMOTE NETWORK NODES. SPC 3 * LSTEN'S SECONDARY PURPOSE IS TO ALLOW THE USER TO RE-ENABLE A * COMMUNICATION LINE INTERFACE, WHICH HAS BEEN INACTIVATED BY * UNFORESEEN MALFUNCTIONS. IT MAY ALSO BE USED TO BRING THE * NETWORK TO A QUIESCENT STATE, IN ORDER TO ADJUST SYSTEM TIMING, * OR FOR ANY OTHER PURPOSE WHICH REQUIRES SUSPENSION OF NETWORK * OPERATIONS, AT THIS PARTICULAR NODE. * SKP * SCHEDULING FOR INITIALIZATION: * ----------------------------- SPC 1 * *ON,LSTEN,(INPUT LU),(ERROR LU) * * SCHEDULE TO ACCEPT RESPONSES FROM A PERIPHERAL DEVICE. * * NOTE: IF SCHEDULING PARAMETERS ARE NOT SUPPLIED, LU #1 IS THE DEFAULT. * IF THE (INPUT LU) IS LINKED TO AN INTERACTIVE DEVICE, * INTERROGATORY REMARKS WILL BE DISPLAYED ON THE DEVICE. * THE (ERROR LU), IF SPECIFIED, MUST BE LINKED TO AN * INTERACTIVE DEVICE. * * *ON,LSTEN,FI,LE,NM [,SECURITY CODE [,CARTRIDGE NUMBER] ] * * SCHEDULE TO ACCEPT RESPONSES FROM A FILE . * * NOTE: ANY ERRORS WILL BE REPORTED ON LU #1; WILL THEN ABORT. * * * INITIALIZATION QUERIES AND VALID RESPONSES (IN NORMAL ORDER): * ------------------------------------------------------------ SPC 1 * NOTE: CONTROL FILE RESPONSES CONSIST OF ONE RECORD PER RESPONSE. * * /A : ABORT IS A VALID RESPONSE TO ALL QUERIES. * * /LSTEN: PRIMARY SYSTEM? * NOTE: NON-PRIMARY SYSTEMS YIELD, FOR SIMULTANEOUS REQUESTS FROM BOTH. * * /LSTEN: NUMBER OF CURRENT TRANSACTIONS? <1-100 (/D =DEFAULT OF 32)> * NOTE: EACH TRANSACTION USES 4 WORDS OF SYSTEM-AVAILABLE-MEMORY. * * /LSTEN: LINE LU? * /LSTEN: LINE LU? * * /LSTEN: MONITOR NAME? * /LSTEN: MONITOR NAME? * * /LSTEN: INPUT # OF FILES: <1 TO 255 (TOTAL FILES OPEN TO ALL NODES)> * NOTE: ASKED ONLY FOR /D OPTION, OR WHEN SPECIFIED. * * /LSTEN: SECURITY CODE? * * END LSTEN (TERMINATION MESSAGE) * SPC 2 * ONCE THE SYSTEM HAS BEEEN INITIALIZED, SUBSEQUENT SCHEDULING OF * WILL CAUSE ENTRY INTO THE SECONDARY MODE OF OPERATION. * IN THIS MODE, THE USER MAY RE-ENABLE COMMUNICATION LINE INTERFACES, * SCHEDULE ADDITIONAL MONITORS, ENABLE THE TRANSACTION MONITOR, * OR PLACE THE SYSTEM INTO QUIESCENT MODE. ONCE THE SYSTEM HAS BEEN * MADE QUIESCENT, THE USER MAY, ONLY, ADJUST THE TIMING VALUES, * OR RE-START THE QUIESCENT SYSTEM. * SKP * SCHEDULING FOR SECONDARY MODE OF OPERATION: * ------------------------------------------ SPC 1 * *ON,LSTEN,(LINE LU#),(ERROR LU#) * * THIS PROCEDURE IS USED TO RE-ENABLE THE LINE INTERFACE FOR A * SINGLE LOGICAL UNIT NUMBER. THERE IS NO INTERACTION WITH THE * USER, UNLESS AN ERROR IS DETECTED. IN THE EVENT OF ERROR * DETECTION, THE USER WILL BE QUERIED ON THE (ERROR LU#) DEVICE. * * (INPUT LU#),(ERROR LU#) < DEFAULT = LU#1 FOR BOTH > * / * *ON,LSTEN, * \ * FI,LE,NM [,SECURITY CODE [,CARTRIDGE NUMBER] ] * * IN SECONDARY MODE, SCHEDULING WITH AN INTERACTIVE TERMINAL * AS THE (INPUT LU#) DEVICE, OR UNDER THE CONTROL OF A COMMAND FILE, * WILL ALLOW THE USER TO SELECT SEVERAL POSSIBLE OPERATIONS. * * SECONDARY MODE QUERIES AND VALID RESPONSES: * ------------------------------------------ SPC 1 * NOTE: /A (ABORT ) IS A VALID RESPONSE TO ALL QUERIES. * * **** ACCEPTABLE RESPONSES--NON-QUIESCENT SYSTEM **** * * /LSTEN: OPERATION? * /LSTEN: LU TO BE RE-ENABLED? < LU# (LINKED TO DVR65)> * /LSTEN: LU TO BE RE-ENABLED? * * /LSTEN: OPERATION? * * /LSTEN: OPERATION? * ( P1-P4: OPTIONAL SCHEDULING PARAMETERS FOR PLOG ) * * /LSTEN: OPERATION? * * NOTE: OPTIONAL PARAMETERS FOR ARE PASSED TO , ON * FIRST USE OF EITHER COMMAND. SUBSEQUENT USE OF THE OTHER * COMMAND WILL MERELY ENABLE THE OPTION, WITHOUT CHANGING THE * CURRENT OPERATING MODE OF . * * /LSTEN: OPERATION? * /LSTEN: SYSTEM QUIESCENCE * /LSTEN: SECURITY CODE? < AA (MUST MATCH ORIGINAL SECURITY CODE)> * END LSTEN (TERMINATION MESSAGE) * * /LSTEN: OPERATION? * /LSTEN: MONITOR NAME? * /LSTEN: MONITOR NAME? * /LSTEN: OPERATION? * END LSTEN (TERMINATION MESSAGE) * * /LSTEN: OPERATION? * * ??: LIST COMMANDS * /A: ABORT! * /E: TERMINATE * /L: RE-ENABLE LINE * /Q: QUIESCE NETWORK * /S: SCHEDULE MONITOR(S) * * QUIESCENT SYSTEM ONLY: * /R: RE-START NETWORK * /T: ADJUST TIMING * * * **** ACCEPTABLE RESPONSES--QUIESCENT SYSTEM, ONLY **** * * /LSTEN: OPERATION? * /LSTEN: QUIESCENT RE-START * /LSTEN: SECURITY CODE? < AA (MUST MATCH ORIGINAL SECURITY CODE)> * * /LSTEN: OPERATION? * TIMING MODIFICATION--CURRENT VALUES: * * MASTER T/O = NNNNNN * SLAVE T/O = NNNNNN * REMOTE-BUSY = NNNNNN * REMOTE-QUIET = NNNNNN * * * /LSTEN* MASTER T/O [1 TO 255 (*5 SEC.)]? <1 TO 255 (NUMERIC RESPONSE)> * (INITIAL VALUE = 5) * * /LSTEN: SLAVE T/O [1 TO 255 (*5 SEC.)]? <1 TO 255 (NUMERIC RESPONSE)> * (INITIAL VALUE = 3) * * /LSTEN: REMOTE-BUSY WAIT [1 TO 10 SEC.]? <1 TO 10(NUMERIC)> * (INITIAL VALUE =3) * * /LSTEN: REMOTE-QUIET WAIT [1 TO 10 SEC.]? <1 TO 10 (NUMERIC)> * (INITIAL VALUE =1) * SKP * * ERROR MESSAGES--INTERPRETATION AND APPROPRIATE ACTION: * ----------------------------------------------------- * * [ ALL MESSAGES ARE PRECEDED BY "/LSTEN:" ] SPC 1 * CLASS I/O ERROR - A REQUIRED CLASS NUMBER CANNOT BE ALLOCATED. * IS ABORTED. THIS ERROR MAY REQUIRE * RE-GENERATION WITH A LARGER ALLOTMENT OF CLASS NO'S. * * END LSTEN - NORMAL COMPLETION MESSAGE. THE TEN CHARACTERS COMPRISING * THE MESSAGE ARE ALSO RETURNED IN THE 5-WORD TEMPORARY * STORAGE AREA OF A SCHEDULER'S I.D. SEGMENT. THEY MAY BE * RECOVERED THROUGH THE USE OF . * IF HAS BEEN ABORTED, THE FIVE WORDS OF RETURNED- * DATA CONSIST OF: 100000B,ER, L,ST,EN * * EOF..INPUT MORE - AN END-OF-FILE CONDITION HAS BEEN DETECTED ON * THE (INPUT LU#) DEVICE. THE QUESTION IS DISPLAYED * ON THE (ERROR LU#) DEVICE, AND THE USER MAY SUPPLY * THE REQUIRED RESPONSE FROM THIS DEVICE. * * ERROR: MON?: AAAAA - THE SPECIFIED MONITOR IS NOT IN THE SYSTEM. * ABORT , USING /A COMMAND, AND THEN LOAD * THE MONITOR INTO THE SYSTEM. RE-START . * * ERROR: STAT: AAAAA - THE MONITOR'S STATUS IS NOT 'DORMANT', AND * THEREFORE IT CANNOT BE SCHEDULED. * ABORT , USING /A COMMAND, AND THEN USE * RTE OPERATOR COMMANDS TO CHANGE THE STATUS. * * FILE ERROR - IMPROPER RESPONSE TO "INPUT # OF FILES". RETRY. * * INVALID NAME! - MONITOR NAME IS NOT RECOGNIZED BY . RETRY. * * INVALID RESPONSE! - OPERATOR ENTRY ERROR. RETRY. * (NO RETRY ALLOWED FOR QUIESCENT OR RE-START MODE) * * LSTEN ABORTED - IF INITIALIZATION WAS IN PROGRESS, THEN ALL ALLOCATED * RESOURCES HAVE BEEN RETURNED TO RTE. * * LU ERROR - IMPROPER LU# SPECIFIED, OR LU# NOT LINKED TO DVR65. RETRY. * * NO SYSTEM MEMORY! - INSUFFICIENT SYSTEM AVAILABLE MEMORY FOR USE BY * THE NETWORK. SYSTEM CANNOT BE INITIALIZED. * IS ABORTED. RE-GENERATION OF RTE MAY * BE REQUIRED. * * RN ERROR - A REQUIRED RESOURCE NUMBER CANNOT BE ALLOCATED; * IS ABORTED. RE-GENERATION, WITH A LARGER * ALLOTMENT OF RESOURCE NUMBERS, MAY BE REQUIRED. * * SYSTEM IS NOT QUIESCENT! - TIMING MODIFICATION IS NOT ALLOWED, UNTIL * ALL PENDING TRANSACTIONS HAVE BEEN CLEARED * FROM THE SYSTEM. AWAIT QUIESCENT CONDITION, * AND RE-SCHEDULE . * * TOO MANY LU'S - MORE THAN 32 LOGICAL UNIT NUMBERS HAVE * BEEN SPECIFIED FOR CONFIGURATION. * IS ABORTED. REDUCE THE NUMBER OF * LU'S AND RE-SCHEDULE . * * TR FILE ERROR - THE FILE MANAGER CANNOT PROCESS THE FILE * WHICH WAS SPECIFIED IN THE SCHEDULING * PARAMETERS. CORRECT THE FILE PROBLEM, * AND RE-SCHEDULE . * * ** UPLIN NOT SCHEDULED - THE SYSTEM TRANSACTION-MONITOR AND CLEANUP * PROGRAM COULD NOT BE SCHEDULED. * IS ABORTED! DETERMINE NATURE OF * PROBLEM AND CORRECT. RE-SCHEDULE . * SKP PRAM NOP INPUT LU OR FIRST 2 CHARS. OF FILE NAME. NOP ERROR LU OR SECOND 2 CHARS. OF FILE NAME. NOP THIRD TWO CHARS. OF FILE NAME. NOP FILE SECURITY CODE--OPTIONAL. NOP FILE CARTRIDGE NUMBER--OPTIONAL. LSTEN JSB RMPAR GET THE DEF *+2 PARAMETERS DEF PRAM FOR LOCAL USE. IFZ EXT DBUG LDA PRAM CPA D6 DO THEY WANT DEBUG? RSS YES JMP LSTN1 NO...LET HER RIP JSB DBUG INVOKE DEBUG DEF *+1 JMP TERM4 TERMINATE AND SAVE RESOURCES. XIF LSTN1 LDA #FWAM GET "ALREADY-INITIALIZED" INDICATOR. STA ONTWO SAVE IN OPTION 1/2 FLAG WORD CCA STA TTYF CLEAR OUT TTY FLAG * LDA PRAM SEE IF PRAM IS SUPPLIED LDB B1 IF NOT, DEFAULT TO LU 1 SZA SUPPLIED? LDB A YES ADA BM100 LU OR FILE? SSA CLA LU...CLEAR FILE FLAG STA FILFG STB RLU SAVE AS READ LU SZA LU OR FILE? JMP LSTN2 FILE * JSB EXEC LU...SEE WHICH ONE DEF *+4 DEF D13 DEF RLU DEF TEMP1 * LDA TEMP1 GET STATUS...SEE IF DVR00 ALF,ALF AND B77 CPA B5 IF EQUIPMENT TYPE-CODE = <05>, CLA CHANGE TO <00> FOR OUR USE. LDB A LDA RLU GET READ LU SZB,RSS TTY? IOR B400 YES...SET IN ECHO BIT STA RLU SAVE AS INPUT LU STB TTYF SAVE TTY FLAG LDA PRAM+1 SZA IS ERROR LU SUPPLIED? JMP LSTN2+1 YES...SAVE IT. SZB,RSS IS INPUT LU A TTY? LDA RLU YES...SET IF FOR ERROR LU SZA,RSS STILL ZERO? * LSTN2 LDA B1 YES...DEFAUT TO SYSTEM STA ERLU SAVE ERROR LU * JSB EXEC FIND OUT STATUS DEF *+4 DEF D13 DEF ERLU DEF TEMP1 * LDA TEMP1 GET STATUS ALF,ALF AND B77 CPA B5 IF EQUIPMENT TYPE-CODE = <05>, CLA CHANGE TO <00> FOR OUR USE. LDB ERLU SZA TTY? LDB B1 NO...SET TO SYSTEM TTY LDA B IOR B400 STA ERLU * JSB CHCKN SEE IF FILE RSS FILE...OPEN IT JMP LSTN3 NOT FILE * JSB OPEN OPEN THE FILE DEF *+7 DEF INDCB DIRECTORY CONTROL BLOCK DEF TEMP1 ERROR-RETURN STORAGE DEF PRAM FILE NAME DEF ZERO OPEN OPTION: EXCLUSIVE/NON-UPDATE DEF PRAM+3 FILE SECURITY CODE DEF PRAM+4 FILE CARTRIDGE NUMBER * LDA TEMP1 ANY ERRORS? SSA,RSS JMP LSTN3 NO * JSB SYSER SYSTEM ERROR DEF TRFM "TR FILE ERROR" * LSTN3 LDA ONTWO OPTION 1/2 FLAG LDB TTYF TTY FLAG (EQUIPMENT TYPE CODE). SZA OPTION 1? JMP OPTN2 NO...OPTION 2 * CPB B65 ATTEMPT TO INITIALIZE WITH SDI LU#? RSS YES. SKIP TO REPORT THE ERROR. JMP INITL NO. GO TO START THE INITIALIZATION. * JSB SYSER INFORM THE USER OF THE DEF LUERM " LU ERROR"--NO RETURN. * * INITIALIZATION CONTROL SECTION. * INITL JSB PRMRY GO TO SEE IF THIS IS PRIMARY SYSTEM. JSB SAM GO SET UP SYS. AVAIL. MEM. FOR LISTS. JSB LUIN READ IN & INITIALIZE THE SPECIFIED LU'S LDA LUBUF SEE IF THEY ENTERED ANY LU'S CLE,SZA,RSS ? JMP ABORT NO...DIDN'T ENTER ANY LU'S JSB MSET SCHEDULE MONITORS & SET UP STREAM LISTS. JSB SECOD SET NETWORK SECURITY CODE FOR THIS NODE. JSB SUPLN SCHEDULE UPLINE PROGRAM JSB SCHDQ SCHEDULE QUEUEING PROCESSORS, JMP TERM AND TERMINATE. * SKP * CHECK FOR PRIMARY SYSTEM--DOES NOT YIELD FOR SIMULTANEOUS REQUESTS. SPC 1 PRMRY NOP ENTRY/EXIT: PRIMARY SYSTEM CHECK. JSB PRINT ASK THE USER IF THIS IS THE DEF PRMSG "PRIMARY SYSTEM?". JSB READ GET THE RESPONSE. CPA B2 IF THE RESPONSE IS ASCII, CCA,RSS PREPARE TO SET THE PRIMARY FLAG; ELSE, JMP PRMER REPORT THE RESPONSE ERROR. CPB /A IF THE USER WISHES TO EXIT, JMP ABRT4 GO TO ABORT THE PROGRAM. CPB "NO" IF THIS IS NOT THE PRIMARY SYSTEM, JMP PRMRY,I THEN RETURN FOR THE NEXT PROCESS. CPB "YE" IF THIS IS TO BE THE PRIMARY, RSS THEN SKIP TO SET THE FLAG. JMP PRMER * ERROR: INFORM THE USER. STA PRMY# SET THE PRIMARY FLAG IN =-1. JMP PRMRY,I RETURN FOR THE NEXT PROCESSING STEP. * PRMER JSB ERROR IMPROPER REPLY: DEF IVRES INFORM THE USER, AND JMP PRMRY+1 ALLOW ANOTHER CHANCE. * PRMSG DEF *+2 DEF D9 ASC 9, PRIMARY SYSTEM? _ * "NO" ASC 1,NO "YE" ASC 1,YE * SKP * SUBROUTINE TO OBTAIN SYSTEM AVAILABLE MEMORY & INITIALIZE NULL LIST. SPC 1 SAM NOP ENTRY/EXIT: SYS. AV. MEM. SET-UP. LDA D32 INITIALIZE DEFAULT NO. STA SVNUM OF TRANSACTIONS =32. LDA DM3 INITIALIZE THE DELAY RE-TRY STA RETRY COUNTER FOR 3 TRIES. SOVER JSB PRINT ASK THE USER TO SPECIFY THE: DEF MSG0 " NO. OF CURRENT TRANSACTIONS?" JSB READ READ THE RESPONSE. CPA B1 IF THE RESPONSE WAS NUMERIC, JMP SVALU GO TO PROCESS IT; ELSE, DETERMINE CPB /D IF DEFAULT VALUE IS TO BE USED. JMP SDFLT USE THE DEFAULT VALUE (32). CPB /A IF THE USER WISHES TO EXIT, JMP ABRT4 GO TO ABORT THE PROGRAM. * SERR JSB ERROR IMPROPER REPLY: DEF IVRES GO TO INFORM THE USER OF THE ERROR; JMP SOVER THEN ALLOW ANOTHER CHANCE. * SVALU STB SVNUM SAVE NO. OF TRANSACTIONS, TEMPORARILY. SSB,RSS IF VALUE NEGATIVE--INFORM USER OF ERROR. CMB,INB,SZB,RSS NEGATE THE NUMBER & CHECK FOR ZERO. JMP SERR * ERROR: NUMBER IS INVALID--TRY AGAIN * ADB D100 ADD THE MAXIMUM ALLOWABLE NO. (100). SSB IS THE SPECIFIED NO. ALLOWABLE? JMP SERR NO. GO INFORM HIM OF THE ERROR! * SDFLT LDB SVNUM GET THE NUMBER OF TRANSACTIONS. CMB,INB FORM A LOOP COUNT INB,SZB,RSS EQUAL TO (THE NUMBER SPECIFIED-1). CCB PROTECT AGAINST A NULL COUNTER! STB SCNT SAVE THE LOOP COUNT. LDA SVNUM GET THE NUMBER OF TRANSACTIONS. MPY B4 CALCULATE: MEMORY SIZE(WORDS) = STA SZMEM (TRANSACTIONS)*(4 WDS./TRANSACTION) * CLE GET A JSB RNSUB RESOURCE NUMBER DEF TBRN# FOR THE TABLE-ACCESS RN. CLE GET A JSB RNSUB RESOURCE NUMBER DEF GPRN# FOR THE GENERAL PRE-PROCESSOR RN. CLE GET A JSB RNSUB RESOURCE NUMBER DEF QRN# FOR THE SYSTEM-QUIESCENT RN. CLE GET A JSB CLSUB CLASS NUMBER DEF GRPM# FOR THE GENERAL PRE-PROCESSOR MODULE. CLE GET A JSB CLSUB CLASS NUMBER DEF SRPM# FOR THE SLAVE PRE-PROCESSOR MODULE. CLE GET A JSB CLSUB CLASS NUMBER DEF QCLM# FOR THE QUEUE CLEAN-UP MONITOR. CLE GET A JSB CLSUB CLASS NUMBER DEF RXCL# FOR 'RFAM'/'RFAEX' COMMUNICATIONS. * LDA BPA1 IF THE FIRST WORD OF BASE PAGE CPA B2 IS =2, THEN THIS IS A DMS SYSTEM, RSS AND THE CODE MUST BE MODIFIED; JMP SREPT ELSE, BYPASS THE CODE CHANGES. DLD XSBAI GET THE CROSS-STORE INSTRUCTION, DST STLNK AND CONFIGURE THE TWO NULL-LINK DST STERM INSTRUCTIONS FOR DMS OPERATION. * SREPT JSB #RSAX GO TO THE DEF *+3 SYSTEM RESOURCE-CONTROL ROUTINE, DEF ZERO TO REQUEST SYSTEM AVAILABLE MEMORY, DEF SZMEM IN THE AMOUNT SPECIFIED BY THE USER. * CPA M1 IF THE AMOUNT WILL NEVER BE AVAILABLE, JMP NOMER INFORM THE USER OF THE PROBLEM. SZA HAS THE MEMORY BEEN ALLOCATED? JMP NULNK YES. GO TO LINK THE NULL LIST. JSB DELAY NO. IT'S NOT AVAILABLE NOW--WAIT. JMP NOMER * RETRIES EXHAUSTED: INFORM USER! JMP SREPT TRY AGAIN FOR MEMORY ALLOCATION. * NULNK JSB CLEAR GO TO CLEAR SYSTEM DATA AREA IN . JSB $LIBR GAIN ACCESS TO NOP SYSTEM RESOURCES. LDA #FWAM GET THE ADDRESS OF THE S.A.M. BLOCK, STA #NULL AND INITIALIZE HEAD OF NULL LIST. STA B LINK SLOOP ADB B4 THE STLNK STB A,I NULL [CONTAINS XSB A,I: DMS] NOP LIST [NOP: RTE-II, DEF A,I: DMS] STB A WITH ISZ SCNT FOUR- JMP SLOOP WORD CLB NULL STERM STB A,I ENTRIES. [CONTAINS XSB A,I: DMS] NOP [NOP: RTE-II, DEF A,I: DMS] * SKP * INITIALIZE ALL GLOBAL RN'S, CLASS NUMBERS, AND COUNTERS IN 'RES'. SPC 1 LDA TBRN# STA #TBRN LDA GRPM# STA #GRPM LDA GPRN# STA #GPRN LDA SRPM# STA #SRPM LDA QCLM# STA #QCLM LDA RXCL# STA #RXCL LDA QRN# STA #QRN LDA MSTO# STA #MSTO LDA SVTO# STA #SVTO LDA RTRY# STA #RTRY LDA WAIT# STA #WAIT LDA PRMY# STA #PRMY CLA STA #BUSY * JSB $LIBX RESTORE THE DEF SAM SYSTEM'S DEFENSES. * NOMER JSB SYSER GO TO INFORM THE USER THAT DEF NOMEM MEMORY IS UN-AVAILABLE--NO RETURN. * BPA1 EQU 1742B SZMEM NOP NUMBER OF WORDS OF S.A.M. REQUESTED. XSBAI XSB A,I DMS: CROSS-STORE VIA ALTERNATE MAP. * MSG0 DEF *+2 DEF D16 ASC 16, NO. OF CURRENT TRANSACTIONS? _ IVRES DEF *+2 DEF D9 ASC 9, INVALID RESPONSE! NOMEM DEF *+2 DEF D9 ASC 9, NO SYSTEM MEMORY! * SKP * * DELAY SUBROUTINE: DELAY EXECUTION FOR 1-SECOND. * SET (BEFORE ENTRY) TO NEGATIVE NUMBER OF PASSES * ALLOWED THROUGH , BEFORE RETURN TO P+1 ERROR-RETURN. * NORMAL RETURN IS TO P+2, FOLLOWING DELAY OF 1-SECOND. * DELAY NOP ENTRY/EXIT: DELAY SUBROUTINE. JSB EXEC WAIT DEF *+6 1 SECOND DEF D12 TO ALLOW DEF ZERO SYSTEM DEF B1 CONDITIONS TO DEF ZERO CHANGE DEF DM100 AS REQUIRED. ISZ RETRY IF RETRY COUNT IS NOT EXHAUSTED, ISZ DELAY THEN SET RETURN TO P+2; ELSE, IF JMP DELAY,I EXHAUSTED, RETURN TO P+1--ERROR! * RETRY NOP RE-TRY COUNTER SPC 2 GRPM# NOP GENERAL PRE-PROCESSOR CLASS NUMBER. SRPM# NOP SLAVE PRE-PROCESSOR CLASS NUMBER. QCLM# NOP QUEUE CLEAN-UP MONITOR'S CLASS NUMBER. RXCL# NOP 'RFAM'/'RFAEX' COMMUNICATION CLASS NO. TBRN# NOP TABLE-ACCESS RN. GPRN# NOP GENERAL PRE-PROCESSOR RN. QRN# NOP SYSTEM-QUIESCENT RN. MSTO# ABS 256-5 MASTER-REQUEST TIMEOUT(LOWER BYTE -5) SVTO# ABS 256-3 SLAVE-REQUEST TIMEOUT(LOWER BYTE -3) RTRY# DEC -3 D65MS BUSY-REJECT RETRY COUNT WAIT# DEC -1 D65MS QUIESCENT WAIT INTERVAL * SKP * OPTION 2 IS ENTERED WHEN SYSTEM IS ALREADY INITIALIZED. * OPTN2 LDA LUAD INITIALIZE THE POINTER STA LUPNT TO THE LOGICAL UNIT NO. BUFFER JSB CHCKN SEE IF THEY WANT TO READ FROM A FILE JMP OPT20 YES LDB RLU GET LU...INCASE DVR SUPPLIED IN RMPAR LDA TTYF SEE WHAT TYPE OF DEVICE WE TALK TO CPA B65 IS IT DVR65? JMP OPT22 YES OPT20 JSB PRINT DEF OPMES " OPERATION?_" JSB READ GET THE RESPONSE. CPA B2 ASCII RESPONSE? RSS YES. CONTINUE PROCESSING. JMP EXPLN NO...EXPLAIN THE POSSIBILITIES! * CPB /A REQUEST TO ABORT? JMP ABRT4 YES. DO IT! CPB /E REQUEST TO TERMINATE? JMP TERM YES. GO TO OBLIGE. CPB PM REQUEST TO MONITOR PARMB'S? RSS YES--SKIP; ELSE, CHECK FOR A CPB QM REQUEST TO MONITOR QUEUEING ERRORS? JMP PLOG YES. SET UP MONITORING FOR EITHER. CPB /S REQUEST TO SCHEDULE MONITOR(S)? JMP SKEDM YES. GO TO SET UP TO SCHEDULE. CPB PC REQUEST TO CANCEL PARMB MONITORING? RSS YES--SKIP; ELSE, CHECK FOR A CPB QC REQUEST TO CANCEL Q-ERROR MONITORING? JMP PCLR YES. GO TO STOP EITHER PROCESS. CPB ?? IS THE USER PUZZLED? JMP EXPLN YES...GIVE HIM SOME ASSISTANCE. JSB RNRQ GO TO RTE DEF *+4 TO OBTAIN THE DEF GLCNW STATUS OF THE DEF #QRN SYSTEM QUIESCENT DEF TEMP1 RESOURCE NUMBER. LDB PARSB+1 GET THE USER COMMAND, AGAIN. LDA TEMP1 GET THE STATUS OF #QRN. CPA B7 IF THE SYSTEM IS ALREADY QUIESCENT, JMP QCHNG THEN ONLY /R AND /T ARE ALLOWED; ELSE, CPB /L REQUEST TO RE-ENABLE A LINE? JMP OPT21 YES. GO TO DETERMINE THE LU NUMBER. CPB /Q REQUEST TO MAKE THIS NODE QUIESCENT? JMP QUIES YES.GO TO PROCESS THE REQUEST. JMP EXPLN USER IS CONFUSED...HELP HIM! * QCHNG CPB /R REQUEST TO RE-START FROM QUIESCENCE? JMP REQUE YES. GO TO START IT UP AGAIN. CPB /T REQUEST TO CHANGE TIMEOUT VALUES, ETC.? JMP TIME YES. GO PROCESS THE REQUESTED CHANGES. * EXPLN JSB PRNTX EXPLAIN THE COMMANDS DEF EXPMS TO THE CONFUSED USER. JMP OPT20 REPEAT THE QUESTION.