ASMB,Q,R,C,N IFZ HED DS/1000 INITIALIZATION--SHUTDOWN VERSION REV 2013 NAM DINIT,19,26 91750-16069 REV 2013 800820 ALL (SD) EXT .CAY,.LAY,.SAX,.ADX,.ADY EXT #BUSY,#PNLH,PGMAD,#MAST,#RQB XIF IFN HED DS/1000 INITIALIZATION--NON-SHUTDOWN VERS, REV 2013 NAM DINIT,19,26 91750-16068 REV 2013 800820 ALL (NSD) XIF SPC 1 EXT READF,CLOSE,OPEN,RNRQ,PRTN,XLUEX,IFTTY EXT EXEC,MESSS,$LIBR,$LIBX,$OPSY,#PKUP,PARSE,#RSAX EXT D$XS5,D$LID,D$RID EXT .MVW,.CAX,.DSX,.LDX,.CMW,CLRQ SPC 1 EXT #MA1,#MA2,#MA3,#DISM EXT #RR1,#RR2,#RR3,#RR5 * RES ENTRY POINTS EXT #ST04,#ST10,#MRTH,$BMON,#NMSC,#LV EXT #FWAM,#NULL,#QRN,#LDEF EXT #SWRD,#NODE,#NRV,#NCNT,#EXHC,#EXTC EXT #GRPM,#NCLR,#SCLR,#RFSZ EXT #CNOD,#LEVL,#GTOP,#LU3K EXT #POOL,#MTBL,#RSM,#MAHC,#MARN,#MCTR SPC 1 ENT #PRNT,#READ,#PRSB,#INBF,#PRNL,#EXFR,#CLSB ENT #ABRT,#SYSR,#MSKD,#RNSB,#RSM.,#MA1.,#MA2. * SUP * * NAME: DINIT * SOURCE: 91750-18068 * RELOC.: 91750-16068 (NON-SHUTDOWN VERSION) %DINIT * 16069 (SHUTDOWN VERSION) %DINIS * PGMR: LYLE WEIMAN * TOM MILNER * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. 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. * * *************************************************************** * USE "Z" OPTION TO INCLUDE SHUTDOWN CAPABILITY * USE "N" OPTION TO EXCLUDE SHUTDOWN CAPABILITY * SPC 2 * DINIT IS USED 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 * ONLY THE SHUTDOWN VERSION OF 'DINIT' HAS ANY USE AFTER INITIALIZATION. * (SEE LIST OF COMMANDS BELOW, UNDER "SECONDARY MODE OF EXECUTION") SKP * +----------------------------------------------------------------+ * |SCHEDULING FOR INITIALIZATION: | * +----------------------------------------------------------------+ * * *ON,DINIT,(INPUT LU OR NAMR),(ERROR LU) * * SCHEDULE TO ACCEPT RESPONSES FROM A PERIPHERAL DEVICE, OR, * IN A DISC-BASED SYSTEM (WITH STRING PASSAGE), A FILE. * * 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,DINIT,FI,LE,NM [,SECURITY CODE [,CARTRIDGE NUMBER] ] * * SCHEDULE TO ACCEPT RESPONSES FROM A FILE IN RTE-M. * * NOTE: ANY ERRORS WILL BE REPORTED ON LU #1; WILL THEN ABORT. * * CALL EXEC(10,NAME,-1,ICLAS,IRELN) * * USE A START-UP PROGRAM TO SCHEDULE WITH RESPONSES PASSED * IN I/O CLASS AND LENGTH . (THIS MODE IS INDICATED * BY A NEGATIVE FIRST PARAMETER.) THIS WORKS FOR RTE-M AND -L ONLY. * * NOTE: ANY LINE IN THE INPUT FILE WHICH BEGINS WITH AN * ASTERISK (*) IS TREATED AS A COMMENT. * * +--------------------------------------------------------------+ * |INITIALIZATION QUERIES AND VALID RESPONSES (IN NORMAL ORDER): | * +--------------------------------------------------------------+ * * NOTE: CONTROL FILE RESPONSES CONSIST OF 1 RECORD / RESPONSE. * /A : ABORT IS A VALID RESPONSE TO ALL QUERIES. * * /DINIT: SYSTEMS CONNECTED TO THIS NODE * /DINIT: HP 1000? * /DINIT: HP 3000? * * /DINIT: NO. OF ACTIVE TRANSACTIONS? <1-100 (/D =DEFAULT OF 20) * NOTE: EACH TRANSACTION USES 5 WORDS OF SAM.> * * /DINIT: HOW MANY NODES REQUIRE MSG ACCOUNTING? <0 TO # NODES, * ANSWER TO THIS QUESTION PROVIDES TABLE SPACE FOR MESSAGE * ACCOUNTING. ANSWER 0 IF NONE DESIRED >. * * --- NOTE --- * THE FOLLOWING QUESTIONS ARE ASKED ONLY IF A HP3000 * IS CONNECTED. * * /DINIT: MAX NO. OF CONCURRENT HP3000 USERS? <1-10 (/D=DEFAULT OF 4) * NOTE: EACH CONCURRENT USER REQUIRES 14 WORDS OF SAM > * * /DINIT: LU OF HP3000? * * /DINIT: LOCAL ID SEQUENCE? <15 CHAR MAX: /E IF NONE. * NOTE: ASKED ONLY FOR MODEM LINK > * * /DINIT: REMOTE ID SEQUENCE? <15 CHAR MAX: /E IF NONE * NOTE: ASKED ONLY FOR MODEM LINK >. * * --- END HP3000 OPTION --- * * * /DINIT: LOCAL CPU #? < RANGE: 0 TO 32767, * DEFINES LOCAL NODE #> * * /DINIT: NUMBER OF NODES? * * /DINIT: NUMBER OF RE-ROUTING LINKS? < 0-32767, THIS DEFINES * THE SIZE OF RE-ROUTING TABLES. THIS QUESTION IS ASKED * ONLY IF RE-ROUTING IS GENERATED INTO THE NODE. * * /DINIT: CPU#[,LU][,TIMEOUT][,UPGRADE LEVEL][,N][,MA][,MA TIMEOUT]? * * * * * <"N" : INDICATES THIS IS A NEIGHBOR (IE., ONE HOP AWAY) * NODE. THIS IS REQUIRED IF NEGATIVE LU ADDRESSING * IS GOING TO BE USED. * <"MA" : INDICATES THAT MA IS REQUIRED FOR THIS NODE. * THIS CANNOT BE THE LOCAL NODE. > * [,COST] * * < ANY VALID LINK LU (IE., DEVICE TYPE 65 OR 66) IN THE * RANGE 1-255. NOTE: THE FIRST N LU'S CORRESPONDS TO * THE NUMBER OF RE-ROUTING LINKS ANSWER ABOVE. THAT IS * IF THERE ARE 2 RE-ROUTING LINKS THEN ONLY THE FIRST * 2 LU'S WILL BE CONSIDERED RE-ROUTEABLE. THIS QUESTION IS * REPEATED UNTIL THE USER ENTERS "/E".> * * --- END OF HP1000 OPTION --- * * * /DINIT: MONITOR NAME? * * * /DINIT: INPUT # OF FILES: <1 TO 255 (TOTAL FILES OPEN TO ALL NODES)> * < NOTE: ASKED ONLY FOR /D OPTION, OR WHEN SPECIFIED> * * /DINIT: NETWORK USER SECURITY CODE? * THIS SECURITY CODE MUST BE KNOWN TO ALL USERS OF 'REMAT', AS IT * IS REQUIRED TO USE THE "SWITCH" COMMAND. * * /DINIT: NETWORK MANAGEMENT SECURITY CODE? (ENTER ASCII AS FOR ABOVE * SECURITY CODE) * THIS CODE IS REQUIRED FOR THE FOLLOWING: * 1) NODE QUIESCENCE * 2) QUIESCENT NODE RE-START * 3) TIMING MODIFICATION * 4) SHUTDOWN (IF OPTION PRESENT) * 5) CHANGING NRV * IT IS NOT NECESSARY FOR THIS CODE TO BE KNOWN BY ANYONE * EXCEPT THE NETWORK MANAGER. * DO NOT FORGET THE CODES YOU USE, AS THEY CANNOT BE OBTAINED AGAIN! * * * FOLLOWING INITIALIZATION, THE PROGRAM TERMINATES. * * IF RUN AGAIN, THE NON-SHUTDOWN VERSION WILL PRINT THE MESSAGE: * * "NODE ALREADY INITIALIZED" * * THAT IS, THE NON-SHUTDOWN VERSION IS USEFUL ONLY FOR * INITIALIZING THE NODE. * * THE SHUTDOWN VERSION WILL PRINT: * * "SHUTDOWN?" * * SHUTDOWN WILL PROCEED ONLY IF THE USER RESPONDS WITH "YES". * SKP * +--------------------------------------------------------------+ * |SCHEDULING FOR SECONDARY MODE OF OPERATION: | * +--------------------------------------------------------------+ * * (INPUT LU# OR FILE),(ERROR LU#) * / * *ON,DINIT, : -1,CLASS #,RECORD LENGTH * 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: | * +-------------------------------------------------------------------+ * * * ----------- TO SHUTDOWN DS ACTIVITY & RELEASE RESOURCES --- * * /DINIT: SHUTDOWN? YES * /DINIT: SYSTEM SHUTDOWN * /DINIT: # ACTIVE TCBS: NNNNN * /DINIT: # ACTIVE REMOTE SESSIONS: NNNNN * /DINIT: NETWORK MANAGEMENT SECURITY CODE? * THE NETWORK MANAGEMENT SECURITY CODE MUST BE ENTERED CORRECTLY, * OR 'DINIT' WILL ABORT. IF A NON-ASCII CODE IS ENTERED, THE * QUESTION WILL BE REPEATED. * END DINIT (TERMINATION MESSAGE) * * "SHUTDOWN" MAY BE INVOKED WHENEVER DINIT IS SCHEDULED IN THE * SECONDARY MODE. WHEN SHUTDOWN IS COMPLETE, ALL RESOURCES OF * ANY KIND WHICH WERE ALLOCATED TO NETWORK-RELATED ACTIVITY * DURING THE PREVIOUS INITIALIZATION ARE RETURNED TO RTE. * THIS INCLUDES ALL CLASS NUMBERS, CLASS BUFFERS, RESOURCE NUMBERS, * NETWORK-RELATED PROGRAMS (GRPM,RTRY,QCLM,UPLIN,QUEX,QUEZ, * RPCNV,RQCNV,QUEUE,ETC.) AND ALL ALLOCATED SAM ARE RETURNED TO RTE. * * THIS MEANS ALL SYSTEM RESOURCES * * ALL COMMUNICATION LOGICAL UNITS * DEFINED IN THE NRV ARE CLEARED: THEY WILL NOT RESPOND TO INCOMING * MESSAGES. ALL SLAVE MONITORS ARE ABORTED AND THEIR CLASS NUMBERS * AND ANY BUFFERS OUTSTANDING ARE CLEARED (NOTE: ALL FILES CURRENTLY * OPEN TO 'RFAM' WILL BE LOST. FILES WHICH HAVE BEEN WRITTEN ON WILL * BE CORRUPTED). ALL MASTER PROGRAMS WAITING * FOR REPLIES ARE GIVEN A MASTER TIME-OUT ERROR. IF THEY REPEAT THEIR * REQUEST, THEY WILL RECEIVE A DS00 ERROR. * * THEREFORE, USE CARE IN DETERMINING WHEN TO RE-INITIALIZE. * * THE NEXT TIME DINIT IS SCHEDULED, IT WILL REQUEST INITIALIZATION. * * THE USER SHOULD ALSO BE AWARE THAT WHENEVER DS/1000 IS * INITIALIZED, A BLOCK OF SAM IS ALLOCATED SEMI-PERMANENTLY FOR THE * DS-RELATED TABLE AREAS (TCBS, NRV, ETC.). IT IS NOT RETURNED TO * RTE UNTIL DS IS SHUTDOWN OR THE SYSTEM IS RE-BOOTED. INITIALIZING * DS WHILE OTHER PROGRAMS HAVE SAM: BLOCKS ALLOCATED WILL FRAGMENT SAM: * THAT IS, IT MAY DIVIDE THE "LARGEST POSSIBLE SAM BLOCK" (THE * SIZE OF WHICH RTE DETERMINES AT BOOT-UP) INTO TWO PORTIONS. IT WILL * THEN NOT BE POSSIBLE FOR A PROGRAM TO OBTAIN SUCH A LARGE BLOCK, * ALTHOUGH RTE WON'T KNOW THIS, WHICH MAY CAUSE A "DEADLOCK" CONDITION: * THE PROGRAM WILL BE WAITING FOR A BLOCK WHICH CAN NEVER BE GRANTED. * IT WILL BE PLACED INTO UNAVAILABLE MEMORY SUSPENSION DURING THIS * TIME, WHICH WILL HAVE THE SIDE EFFECT OF PREVENTING ANY * OTHER PROGRAMS OF LOWER PRIORITY FROM GAINING ANY SAM AT ALL, * EVEN SMALL BLOCKS WHICH COULD BE GRANTED (THIS IS A POLICY ENFORCED * BY RTE WHOSE PURPOSE IS TO ASSURE THAT HIGH-PRIORITY PROGRAMS * ARE NOT LOCKED OUT BECAUSE A SERIES OF SMALL-BLOCK SAM ALLOCATIONS * BY LOW-PRIORITY PROGRAMS PREVENTS A LARGE BLOCK FROM EVER BECOMING * FREE). THIS IN TURN MAY FORCE MORE PROGRAMS INTO UNAVAILABLE * MEMORY SUSPENSION THAN ACTUALLY BELONG THERE. * * THIS LEADS TO THE CONCLUSION THAT IT MAY BE HAZARDOUS (IN TERMS * OF AVOIDING DEADLOCKS AND MAXIMIZING OVERALL THRUPUT) TO * FREQUENTLY RE-INITIALIZE THE DS SYSTEM. IT ALSO FOLLOWS THAT IT * SHOULD BE INITIALIZED ON BOOT-UP. HOWEVER, THE USER WHO NEEDS TO * SHUT THE SYSTEM DOWN OCCASIONALLY, AND THEN START IT UP AGAIN * AND WHO CANNOT AFFORD TO SHUT THE SYSTEM DOWN TO RE-BOOT, SHOULD * TRY TO ARRANGE FOR INITIALIZATION TO OCCUR AT TIMES WHEN THE * OTHER DEMANDS UPON SAM ARE VERY SMALL OR NON-EXISTENT. * * * NOTE 1: THE NUMBER OF ACTIVE TCBS AND # OF ACTIVE HP 3000 SESSIONS * ARE PRINTED IN ORDER TO GIVE SOME INDICATION OF THE RELATIVE * DISTRIBUTED-SYSTEMS REMOTE ACTIVITY. IF THERE EXIST EITHER ACTIVE * TCBS OR ACTIVE HP 3000 SESSIONS, THEN SHUTTING DOWN WILL PROBABLY * INTERFERE WITH SOME USER OF THE SYSTEM (THAT IS, TERMINATE ALL * HIS PROCESSES ABNORMALLY, PERHAPS CAUSING OPEN FILES TO BE CORRUPTED * OR, IN EXTREME CASES, PERHAPS DESTROYING A REMOTE DATA BASE). * IT IS STRONGLY RECOMMENDED THAT THE USER FIRST BROADCAST HIS * INTENTION TO SHUT THE SYSTEM DOWN TO ALL REMOTE USERS, GIVING * THEM TIME TO CLOSE THEIR FILES AND LOG OFF BEFORE DOING SO. * * IF THE SECURITY CODE ENTERED IS NON-NUMERIC, OR DOES NOT MATCH * THE ORIGINAL SET-UP SECURITY CODE, SHUTDOWN WILL NOT OCCUR. * IF YOU HAVE ASKED FOR SHUTDOWN, BUT DECIDE YOU DON'T WANT TO AFTER * SEEING THAT THE SYSTEM IS BEING USED, ENTER A ZERO FOR THE SECURITY * CODE (OR ANY NUMERIC, OR ANY INCORRECT SECURITY CODE). * * NOTE 2: ONCE SHUTDOWN HAS BEEN COMPLETED, THE NEXT TIME DINIT * IS SCHEDULED IT WILL ENTER THE INITIALIZATION MODE. SKP * * ERROR MESSAGES--INTERPRETATION AND APPROPRIATE ACTION: * ----------------------------------------------------- * * [ ALL MESSAGES ARE PRECEDED BY "/DINIT:"] 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 DINIT - 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 * * 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) * * DINIT ABORTED -IF INITIALIZATION WAS IN PROGRESS, THEN ALL ALLOCATED * RESOURCES HAVE BEEN RETURNED TO RTE. * * NODE SPEC. ERROR -IMPROPER NODAL REFERENCE VALUE. ABORTED! * CORRECT INITIALIZATION ANSWERS AND RESTART . * * LU ERROR IMPROPER LU# SPECIFIED, OR LU# NOT LINKED TO * COMMUNICATION LINK DRIVER. RETRY. * * THIS LU ALREADY HAS A NEIGHBOR! * - THE NEIGHBOR BIT WAS SET FOR TWO DIFFERENT NODES * USING THE SAME LU. EITHER ABORT DINIT OR INPUT * THE LINE AGAIN CORRENTLY. * * INVALID TIMEOUT! THE TIMEOUT VALUE SPECIFIED WAS NOT IN THE RANGE * 0-1275. EITHER ABORT DINIT OR INPUT THE LINE * AGAIN CORRECTLY. * * INVALID UPGRADE LEVEL! * - THE UPGRADE LEVEL IS NOT IN THE RANGE 0-15. EITHER * ABORT DINIT OR INPUT THE LINE AGAIN CORRECTLY. * * 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. * * READ ERROR - END-OF-FILE OR FMGR ERROR HAS BEEN DETECTED * ON THE INPUT DEVICE/FILE. THE QUESTION IS REPEATED * ON THE (ERROR LU) DEVICE. THE USER MAY SUPPLY THE * REQUIRED RESPONSE FROM THIS DEVICE. * * RN ERROR - A REQUIRED RESOURCE NUMBER CANNOT BE ALLOCATED; * IS ABORTED. RE-GENERATION, WITH A LARGER * ALLOTMENT OF RESOURCE NUMBERS, MAY BE REQUIRED. * * TR FILE ERROR - THE FILE MANAGER CANNOT PROCESS THE FILE * WHICH WAS SPECIFIED IN THE SCHEDULING * PARAMETERS. CORRECT THE FILE PROBLEM, * AND RE-SCHEDULE . * * WARNING XXXXX IS A REQUIRED DS/1000 PROCESSOR! * - DS/1000 WILL NOT RUN CORRECTLY UNTIL THIS * PROGRAM IS LOADED. IF THE PROGRAM IS 'UPLIN', * DINIT WILL ABORT. IF NOT, DINIT WILL CONTINUE, * BUT THE PERFORMANCE IS UNPREDICTABLE UNTIL THIS * MODULE IS LOADED. 'UPLIN' WILL SCHEDULE THE * MODULE WHEN IT IS LOADED AUTOMATICALLY. * * NODE ALREADY INITIALIZED * - (NON-SHUTDOWN VERSION ONLY). ONCE DS/1000 IS * INITIALIZED THERE IS NOTHING MORE FOR 'DINIT' TO * DO. * * ANSWER YES OR NO - THE QUESTION REQUIRES A "YES" OR "NO" ANSWER SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV XXXX 790531 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, LSTEN, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * * ****************************************************************** * ***!!!!! THE FIRST 7 WORDS (#STR THRU #ENO) MUST BE FIXED !!!!!*** #STR EQU 0 STREAM WORD. #SEQ EQU #STR+1 SEQUENCE NUMBER. #SRC EQU #SEQ+1 SOURCE NODE #. #DST EQU #SRC+1 DEST. NODE #. #EC1 EQU #DST+1 REPLY ECOD1. #EC2 EQU #EC1+1 REPLY ECOD2. #ENO EQU #EC2+1 NUMBER OF NODE REPORTING ERROR. * #ECQ EQU #ENO+1 ERROR CODE QUALIFIER (BITS 4 TO 7) #LVL EQU #ECQ MESSAGE FORMAT LEVEL (BITS 0 TO 3) #MAS EQU #LVL+1 MA "SEND" SEQ. # #MAR EQU #MAS+1 MA "RECV" SEQ. # #MAC EQU #MAR+1 MA "CANCEL" FLAGS #HCT EQU #MAC+1 HOP COUNT #SID EQU #HCT+1 SESSION ID WORD * #EHD EQU #SID LAST ITEM OF HEADER #MHD EQU #EHD+1 MINIMUM HEADER SIZE #REQ EQU #MHD START OF REQUEST SPECIFIC AREA #REP EQU #MHD START OF REPLY SPECIFIC AREA * #MXR EQU #MHD+24 <<< MAXIMUM DS REQ/REPLY BUFFER SIZE >>> #LSZ EQU 2 <<< SIZE OF LOCAL APPENDAGE AREA >>> * ****************************************************************** * * GLBLK-END SKP * PPBLK-START * ****************************************************************** * * * P T O P B L O C K REV XXXX 790420 * * * * OFFSETS INTO DS/1000 PTOP MESSAGE BUFFERS, USED BY: * * * * POPEN, PTOPM, GET/ACEPT/REJCT, RQCNV, RPCNV, LSTEN, REMAT * * * ****************************************************************** * * OFFSETS INTO PTOP REQUEST AND REPLY BUFFERS. * #FCD EQU #REP FUNCTION CODE. #PCB EQU #FCD+1 PCB AREA (3 WORDS). #TAG EQU #PCB+3 TAG AREA (20 WORDS). * * MAXIMUM SIZE OF PTOP REQUEST/REPLY BUFFER. * #PLW EQU #MXR M A X I M U M S I Z E ! ! ! * * PPBLK-END SKP PRAM BSS 5 SPC 2 *** THREE SCHEDULING PARAMETERS ARE SET UP BY #PKUP *** * * PARAMETER MASK FOR #PKUP-- PMASK BYT 3,1 3 PARAMETERS, 1ST IS NAMR. * *** NOTE: DO NOT CHANGE ORDER OF NEXT 4 LINES! NAME BSS 4 RTE FILE NAMR PARAMETERS. ISEC BSS 1 ICR BSS 5 PRM2 NOP ERROR LU/CLASS NUMBER (2ND PARAM) PRM3 NOP RECORD LEN (3RD PARAM) * DEFLU NOP DEFAULT LU NUMBER. SPC 2 * DEFINE MASTER TCB FORMAT * SEQ# EQU 2 OFFSET TO SEQUENCE NUMBER MSCLS EQU 3 MASTER CLASS NUMBER SKP DINIT EQU * JSB #PKUP GET THE DEF *+4 PARAMETERS DEF PMASK FOR LOCAL USE. DEF NAME DEF DEFLU * LDA @ENMG INITIALIZE ADDRESS OF RETURN PARAMS TO STA $RTRN 'FATHER' PROGRAM LDA $OPSY GET THE SYSTEM SPECIFICATIONS. RAR,RAR BIT#15: 1=DMS BIT#0: 1=RTE, 0=RTE-M. STA OPTYP SAVE THE USEFUL SYSTEM SPECIFICATIONS. SSA,RSS JMP NODMS THIS IS A NON-DMS SYSTEM * DLD XSBAI GET THE CROSS-STORE INSTRUCTION, DST STLNK AND CONFIGURE THE TWO NULL-LINK DST STERM INSTRUCTIONS FOR DMS OPERATION. DST LOOP3 DLD XCBAI DST NCHEK DLD MWII DST STNOP DLD MWFI PICK UP MWF INSTRUC DLD XLABI PICK UP XLA B,I DST DSNR8 IFZ DST DSNR4 DST DSNR5 DST DSNR7 DST DSNR9 XIF * * PICK UP READ LU NODMS LDA NAME GET THE INPUT LU--IF ANY. LDB #FWAM GET "ALREADY-INITIALIZED" INDICATOR. STB ONTWO SAVE IN OPTION 1/2 FLAG WORD CLB INITIALIZE EQUIPMENT TYPE CODE STB TYPEQ TO INDICATE AN INTERACTIVE DEVICE. STB CLFLG CLEAR CLASS I/O FLAG. STB LINE# CLEAR INPUT LINE NUMBER COUNT * LDB DEFLU IF LU NOT SUPPLIED, USE DEFAULT. SZA SUPPLIED? LDB A YES AND BT137 LU OR FILE? SZA CLB FILE...CLEAR FILE FLAG STB RLU SAVE READ LU OR 0 (FILE). SZB,RSS LU OR FILE? JMP LSTN1 FILE * JSB TTY? CHECK DEF RLU READ LU. SZB,RSS TTY? STA RLU SAVE AS INPUT LU STB TYPEQ SAVE INPUT DEVICE EQUIPMENT CODE. * * PICK UP ERROR LU LSTN1 LDA PRM2 SZA IS ERROR LU SUPPLIED? JMP LSTN2 YES...SAVE IT. LDA RLU NO. GET THE INPUT LU. SZA,RSS IS INPUT FROM FILE? JMP SDFLU YES...USE DEFAULT. LSTN2 STA ERLU SAVE ERROR LU * JSB TTY? CHECK DEF ERLU ERROR LU. SZB INTERACTIVE? SDFLU LDA DEFLU NO...SET TO DEFAULT. STA ERLU * JSB CHCKN SEE IF ERROR DEVICE IS A FILE JMP LSTN3 NOT FILE * LDA NAME WAS 1ST PARAMETER SSA NEGATIVE? JMP CLASS YES--DO CLASS READ. * JSB OPEN OPEN THE ANSWER FILE DEF *+7 DEF INDCB DEF TEMP1 ERROR-RETURN LOC'N. DEF NAME FILE NAME LOC'N. DEF ZERO EXCLUSIVE OPEN. DEF ISEC SECURITY CODE (OR 0). DEF ICR CARTRIDGE NO. (OR 0). SSA,RSS ERRORS? JMP LSTN3 OPEN WAS SUCCESSFUL. * JSB SYSER SYSTEM ERROR DEF TRFM "TR FILE ERROR" * LSTN3 EQU * LDB ONTWO OPTION 1/2 FLAG SZB OPTION 1? IFN JMP NINZD NO SECONDARY MODE FOR NON-SHUTDOWN XIF IFZ JMP OPTN2 NO...OPTION 2 XIF JMP INITL INITIALIZE THE NODE! * IFN NINZD JSB SYSER NODE HAS ALREADY BEEN INITIALIZED DEF .NINZ XIF * * SET UP DCB FOR DUMMY READFS DMDCB OCT 0,0 DIRECTORY ADDR DEC 2 FILE TYPE DEC 1,1 TRACK,SECTOR OF FILE DEC 2 # OF SECTORS (128 WORDS TOTAL) RECL BSS 1 RECORD LEN (3RD PARAMETER) D128 OCT 200 1 BLOCK IN DCB DEC 96 # SECTORS/TRACK OPNFL BSS 1 "OPEN" FLAG DEC 1,1 CURRENT TRACK,SECTOR DEF INDCB+16 ADDRESS OF DCB DATA OCT 100000 DATA IS IN DCB DEC 1 RECORD # DEC 0 EXTENT # @DMDC DEF DMDCB @DCB DEF INDCB * CLASS STA CLFLG SET CLASS I/O FLAG < 0. LDA $BMON CHECK FOR NEW DCB FORMAT SZA NEW? JMP ABORT NEW FORMAT NOT ALLOWED. LDA PRM3 GET RECORD STA RECL LENGTH. JSB #GTOP OBTAIN "OPEN" FLAG STA OPNFL AND SAVE IT. JSB EXEC MOVE DEF *+5 DCB DEF CLS21 DATA DEF PRM2 VIA DEF INDCB+16 CLASS DEF D128 I/O. JMP ABORT [ERROR RETURN] LDA @DMDC MOVE LDB @DCB DCB HEADER JSB .MVW INFORMATION. DEF D15 NOP JMP LSTN3 CONTINUE WITH NORMAL PROCESSING. SKP *---------------------------------------------------------------+ * INITIALIZATION CONTROL SECTION. | *---------------------------------------------------------------+ INITL JMP *+4 ENTER HERE FOR FIRST RUN JSB QUERY INVALID RESPONSE DEF IVRES JMP *+3 JSB PRINT TELL USER: DEF MSG1 "SYSTEMS CONNECTED TO THIS NODE:" * LDA ASC10 ASK USER TO SPECIFY JSB CPUCK "HP 1000?" RMSA NOP * LDA ASC30 ASK USER TO SPECIFY JSB CPUCK "HP 3000?" RM3K NOP 3000 FLAG * IOR RMSA \ MAKE SURE SZA,RSS > AT LEAST ONE TYPE NODE JMP INITL+1 / WAS SPECIFIED *---------------------------------------------------------------+ * BEGIN TO GET SAM REQUIREMENTS | *---------------------------------------------------------------+ JSB PRINT ASK THE USER TO SPECIFY THE: DEF MSG0 " NO. OF ACTIVE TRANSACTIONS?" JMP *+3 TRERR JSB QUERY IMPROPER REPLY TO # OF TRANSACTIONS DEF IVRES LDA D20 INITIALIZE DEFAULT NO. STA PRAM OF TRANSACTIONS =20. 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 (20). JMP TRERR INVALID RESPONSE - ASK AGAIN * SVALU STB PRAM 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 TRERR * ERROR: NUMBER IS INVALID--TRY AGAIN * ADB D100 ADD THE MAXIMUM ALLOWABLE NO. (100). SSB IS THE SPECIFIED NO. ALLOWABLE? JMP TRERR NO. GO INFORM HIM OF THE ERROR! * SDFLT LDB PRAM GET THE NUMBER OF TRANSACTIONS. CMB,INB FORM A LOOP COUNT STB NTCBS SAVE THE LOOP COUNT. LDA PRAM GET THE NUMBER OF TRANSACTIONS. MPY TCBSZ CALCULATE: MEMORY SIZE(WORDS) = SZB,RSS SSA CHECK SAM SIZE JMP TOBIG STA SZTCB SAVE SIZE OF TCB AREA STA SAMSZ START OUT W/ SAMSZ= SIZE OF TCB AREA * CLA FIND OUT HOW MUCH SAM TO ALLOCATE FOR JSB #DISM REMOTE SESSIONS SSA JMP TOBIG CHECK SAM SIZE STA POOLZ SAVE SIZE ADA SAMSZ ADD TO SIZE OF SAM REQ'D SSA CHECK SAM SIZE JMP TOBIG STA SAMSZ * LDA RMSA ANY RTE-TO-RTE SZA NODES? JSB #MA1 COMPUTE SIZE OF M.A. TABLES SSA CHECK SAM SIZE JMP TOBIG STA MASIZ SAVE SIZE OF M.A. TABLES ADA SAMSZ SSA CHECK SAM SIZE JMP TOBIG STA SAMSZ * LDA RM3K SZA,RSS JMP #1K? NO HP3000--SKIP BELOW CODE *---------------------------------------------------------------+ * GET 3K PARAMETERS | *---------------------------------------------------------------+ JSB PRINT ASK USER TO SPECIFY DEF MSG4 "MAX NO. CONCURRENT HP3000 USERS?" JMP *+3 #3K? JSB QUERY ASK USER AGAIN DEF IVRES * LDA B4 INITIALIZE DEFAULT NUMBER OF STA TST#+1 CONCURRENT USERS = 4 JSB READ READ RESPONSE CPA B1 RESULT NUMERIC? JMP SVAL1 YES--PROCESS IT CPB /D DEFAULT WANTED? JMP SDFL1 USE DEFAULT OF 4 JMP #3K? SVAL1 STB TST#+1 SAVE # OF USERS SSB,RSS IF NEGATIVE--ERROR CMB,INB,SZB,RSS NEGATE NUMBER & CHECK FOR ZERO JMP #3K? REPORT ERROR ADB D10 ADD MAXIMUM NUMBER ALLOWED (10) SSB BEYOND RANGE? JMP #3K? YES--REPORT ERROR SDFL1 LDA TST#+1 MPY D14 SZB,RSS SSA CHECK SAM SIZE JMP TOBIG STA TSTSZ SAVE # WORDS IN TST. ADA SAMSZ ADD NO. WORDS FOR TRANSACTIONS SSA CHECK SAM SIZE JMP TOBIG STA SAMSZ STORE TOTAL SAM NEEDED *-- INITIALIZE THE 3000 LINK JSB PRINT ASK THE USER DEF D3MS1 "LU OF HP3000?". D3010 JSB READ GET THE RESPONSE. CPA B1 IF THE RESPONSE WAS NUMERIC, JMP D3020 GO TO PROCESS IT; ELSE DETERMINE D3ER1 JSB QUERY DEF LUERM "LU ERROR". JMP D3010 TRY AGAIN. * D3020 STB LU3K# SAVE HP3000 LU INTERNALLY FOR NOW. LDA B IOR BIT15 STA LU1 CLB STB LU2 SET SUB-FUNCTION = 0 * JSB XLUEX GO TO RTE DEF *+4 TO GET THE DEF SD13 EQUIPMENT TYPE-CODE DEF LU1 LINKED TO THE LU # DEF PRINT SUPPLIED BY THE USER. JMP D3ER1 INVALID LU. * CLA STA D$XS5 D$XS5 := 0 (HARD-WIRED) LDA PRINT ISOLATE THE ALF,ALF EQUIPMENT AND B77 TYPE-CODE. CPA B66 DVA66, OR JMP D3025 CPA B67 DVG67, JMP #1K? JMP D3ER1 IT IS AN INVALID LU. * D3025 LDA B2 SWTCH := 2 (MODEM) STA D$XS5 * * GET LOCAL AND REMOTE ID SEQUENCES. * * JSB PRINT ASK THE USER DEF D3MS4 "LOCAL ID SEQUENCE?" JSB READ GET THE RESPONSE. LDA PRNTL GET # BYTES THAT WERE INPUT. CPB /E IF ID SEQ NOT WANTED, CLA LENGTH IS 0 LDB D$LID JSB STRID STORE LOCAL ID SEQ IN "RES". * JSB PRINT ASK THE USER DEF D3MS5 "REMOTE ID SEQUENCE?" JSB READ GET THE RESPONSE. LDA PRNTL GET # BYTES THAT WERE INPUT. CPB /E IF ID SEQ NOT WANTED, CLA LENGTH IS 0 LDB D$RID INB SKIP WORD FOR RETURN PARAM. JSB STRID STORE REMOTE ID SEQ IN "RES". * #1K? LDA RMSA IF THERE ARE NO HP 1000 LINKS, SZA,RSS THEN SKIP JMP SGCO FOLLOWING BLOCK. * * GET SIZE OF NRV ENTRIES * JSB PRINT ASK FOR NUMBER OF NODES DEF NUMB? JMP *+3 INIT1 JSB QUERY NODE SPEC ERROR - ASK USER AGAIN DEF NOSZR JSB READ GET THE ANSWER. CPA B1 NUMERIC? RSS JMP INIT1 NO, PRINT ERROR SZB ZERO? SSB OR NEGATIVE? JMP INIT1 YES--ERROR! STB NRVSZ SAVE # ENTRIES IN NRV CMB,INB SET MAX. HOP COUNT STB MHCT# STB NCNT * * CALL RE-ROUTING ROUTINE HERE TO FIND OUT SIZE OF RE-ROUTING TABLE * * (B) = - # OF NODES JSB #RR1 SSA CHECK SAM SIZE JMP TOBIG STA RRSIZ SAVE SIZE OF RE-ROUTING TABLE ADA SAMSZ ADD TO SIZE OF SAM REQ'D SSA JMP TOBIG STA SAMSZ * * COMPUTE AMOUNT OF SAM REQUIRED: * TCBS, PNLS, NRV, RSM, RR, MA TABLES (SOME OPTIONAL) LDA NRVSZ COMPUTE # WORDS NEEDED FOR NRV MPY NRVS. SZB,RSS SSA CHECK SIZE OF SAM JMP TOBIG STA SZNRV ADA SAMSZ SSA JMP TOBIG STA SAMSZ * * DLD CNODE INITIALIZE RES NODAL ADDRESSES DST #CNOD * *---------------------------------------------------------------+ * ALLOCATE CLASS AND RESOURCE NUMBERS, INITIALIZE TCB NULL | * LIST AND TRANSACTION STATUS TABLE AREA. | * | * POINTER NAME: SAM AREA DIVIDED AS FOLLOWS: | * +--------------------+ | * #FWAM-------------------> ! TCB ! | * ! AREA ! | * +--------------------+ | * #TST--------------------> ! TST AREA ! | * +--------------------+ | * #NRV--------------------> ! NRV AREA ! | * +--------------------+ | * #MTBL-------------------> ! M.A. AREA ! | * +--------------------+ | * ! RE-ROUTING TABLES: ! | * ! ! | * #LV---------------------> ! LINK VECTOR TABLE ! | * ! ! | * #CM---------------------> ! "COST" MATRIX ! | * +--------------------+ | * #POOL-------------------> ! REMOTE SESSION ! | * ! TABLES ! | * +--------------------+ | * | * SIZE OF ENTIRE AREA STORED IN #SAVM. | *---------------------------------------------------------------+ SPC 2 SGCO EQU * LDA SAMSZ SET-UP SAM BLOCK STA TEMP SAVE TOTAL WORDS REQUIRED LDA DM3 STA RETRY SET # OF RETRIES FOR "DELAY" ROUTINE SREPT JSB #RSAX GO TO THE DEF *+4 SYSTEM RESOURCE-CONTROL ROUTINE, DEF ZERO TO REQUEST SYSTEM AVAILABLE MEMORY, DEF TEMP IN THE AMOUNT SPECIFIED BY THE USER. DEF LSECD * SSA,RSS REQUEST GRANTED? JMP SETPS YES. GO TO SET POINTERS JSB DELAY NO. IT'S NOT AVAILABLE NOW--WAIT. JMP NOMER * RETRIES EXHAUSTED: INFORM USER! JMP SREPT TRY AGAIN FOR MEMORY ALLOCATION. * SETPS EQU * JSB CLEAR CLEAR OUT 'RES' AREA LDA #FWAM ADA SZTCB AFTER THE T.C.B.S STA TST# ADA TSTSZ THE N.R.V. AREA FOLLOWS IMMEDIATELY STA #NRV AFTER THE TST STA NPNT ADA SZNRV THE M.A. TABLE AREA FOLLOWS IMMEDIATELY STA #MTBL AFTER THE NRV ADA MASIZ THE RE-ROUTING TABLES FOLLOW IMMEDIATELY STA #LV AFTER THE M.A. TABLES ADA RRSIZ THE REMOTE SESSION TABLE FOLLOWS IMMEDIATELY STA #POOL AFTER THE RR TABLES CLA IF THERE IS NO SESSION ANYWHERE CPA POOLZ IN THE NET, THEN ZERO STA #POOL THE POOL POINTER * JSB RNSUB GET A RESOURCE NUMBER DEF TBRN. FOR THE TABLE-ACCESS RN. JSB RNSUB GET A RESOURCE NUMBER DEF QRN. FOR THE SYSTEM-QUIESCENT RN. * LDA RM3K SZA,RSS JMP SGPP NO HP3000--SKIP THIS CODE * CCA GET A JSB CLSUB CLASS NUMBER DEF QXCL. FOR "QUEX" JSB RNSUB GET A RESOURCE NUMBER DEF QZRN. FOR "QUEZ" LISTEN MODE JSB RNRQ GLOBAL LOCK RN DEF *+4 DEF GLOCK DEF QZRN# DEF TEMP1 JSB RNSUB GET A RESOURCE NUMBER DEF CLRN. FOR QUEX CLEANUP CCA JSB CLSUB GET A CLASS NUMBER DEF RQCV. FOR REQUEST CONVERTER CCA JSB CLSUB GET A CLASS NUMBER DEF RPCV. FOR REPLY CONVERTER * LDA RMSA SZA,RSS JMP NULNK JUMP IF NO DS/1000 * SGPP CLA GET A JSB CLSUB CLASS NUMBER DEF GRPM. FOR THE GENERAL PRE-PROCESSOR MODULE. CLA GET A JSB CLSUB CLASS NUMBER DEF RTRY. FOR THE WRITE RETRY MODULE CLA GET A JSB CLSUB CLASS NUMBER DEF QCLM. FOR THE ERROR LOG MONITOR. NULNK EQU * * * = # OF NODES IN NRV LDA NRVSZ JSB #MA2 SETUP MA VARIABLES * LDA NRVSZ SET SIZE OF NRV CMA,INA STA #NCNT * * GET DEFAULT SESSION USER NAME (IF NEEDED) * CLA,INA JSB #DISM * LDA RMSA ARE THERE SZA,RSS HP 1000 LINKS? JMP INRES NO, SKIP THIS BLOCK * * THIS BLOCK SETS UP THE ROUTE VECTORS * JSB PRINT ASK FOR THE CPU # DEF LOC? JMP *+3 LCPU? JSB QUERY ASK USER AGAIN FOR CPU# DEF NOSZR JSB READ READ CPU NUMBER CPA B1 NUMERIC? CLE,SSB YES--NEGATIVE? JMP LCPU? * IMPROPER RESPONSE! STB #NODE SAVE CPU NUMBER IN RES JMP GETN0 * TOBIG JSB SYSER TOO MUCH SAM REQUESTED DEF MUCHO NOMER JSB SYSER SAM CANNOT BE ALLOCATED DEF NOMEM SKP *---------------------------------------------------------------+ * GET NRV INFORMATION FROM USER | *---------------------------------------------------------------+ GETN0 CLA STA MAP+1 CLEAR OUT NEIGHBOR BIT MAP LDA MAP LDB MAP INB JSB .MVW DEF D15 NOP JMP GETN * $CPU JSB QUERY NODE SPEC. ERROR DEF NOSZR JMP GETN+2 $DUP JSB QUERY MULTIPLE NEIGHBORS ON SAME LU DEF MNAY JMP GETN+2 $LU JSB QUERY INVALID LU! DEF LUERM JMP GETN+2 $TO JSB QUERY INVALID TIMEOUT DEF TOBAD JMP GETN+2 $LVL JSB QUERY INVALID UPGRADE LEVEL DEF INLVL JMP GETN+2 * GETN EQU * JSB PRINT ASK FOR NRV DATA: DEF NODEF "CPU#,LU,TIMEOUT,UPGRADE LEVEL,N,MA?" LDA #LEVL DEFAULT: TIMEOUT=0, LEVEL=CURRENT STA NRV2 CLA DEFAULT: NEIGHBOR=FALSE, LU=0 STA NRV3 JSB READ GET RESPONSE. SZA,RSS NULL ENTRY? JMP $CPU . YES, INVALID CPA B2 ASCII? JMP $CPU . YES, BADO BADO ... STB NRV1 SAVE CPU NUMBER SSB CPU # NEGATIVE? JMP $CPU * INVALID RESPONSE! LDA NRVSZ GET THE NUMBER OF NODES. ADA NCNT SUBTRACT NUMBER NOT YET PROCESSED, SZA,RSS IF NONE PROCESSED YET, JMP STNOD BYPASS DUPLICATE CPU# CHECK. JSB .CAX INITIALIZE COUNTER =CPU#'S PROCESSED. LDA #NRV GET POINTER TO FIRST CPU#. NCHEK NOP [DMS XCB GOES HERE FOR RTE-III/IV] CPB A,I IF THIS NODE IS A DUPLICATE, JMP $CPU THEN YELL ABOUT IT! ADA NRVS. ADVANCE POINTER TO NEXT CPU#. JSB .DSX ALL CPU#'S BEEN CHECKED? JMP NCHEK NO. CONTINUE CHECKING. * STNOD EQU * LDA PARSB+5 GET THE LU--IF ANY. LDB PARSB+4 WAS LU SZB DEFAULTED? STA NRV3 SAVE IN TEMPLATE. LDB PARSB+8 GET TIMEOUT SPECIFICATION TYPE. CPB B2 IF THE PARAMETER IS INVALID, JMP $TO THEN SCREAM ABOUT IT! LDA PARSB+9 GET TIME-OUT SPECIFICATION SZB DEFAULTED? JMP *+4 LDA NRV2 ALF,ALF AND B377 CMA,INA,SZA,RSS IF IT IS NULL, OR ZERO, JMP MSGFM THEN IGNORE IT. SSA,RSS T/O<0? JMP $TO YES, ERROR LDB A ADB D1275 SSB JMP $TO JSB CFSEC ALF,ALF POSITION TO HIGH HALF-WORD * MSGFM EQU * HERE TO MERGE UPGRADE LEVEL NUMBER STA TEMP LDB PARSB+12 IS THIS NUMERIC, OR CPB B2 DEFAULTED? JMP $LVL NO, SCREAM ABOUT IT. LDA PARSB+13 GET UPGRADE LEVEL NUMBER SSA NEGATIVE? JMP $LVL YES, SCREAM ABOUT IT. SZB,RSS DEFAULTED? LDA NRV2 YES LDB A ADB NMXLV > MAX LEVEL SSB,RSS ALLOWED? JMP $LVL . YES LEVEL ERROR IOR TEMP MERGE TIME-OUT & UPGRADE LEVEL NUMBER STA NRV2 *---------------------------------------------------------------+ * CHECK VALIDITY OF NRV | * NRV1 = CPU NODE NUMBER | * NRV2 = TIME-OUT/MSG FMT # | * NRV3 = NEIGHBOR/COMM-LINK LU | * | * VALIDITY CHECKS: IF COMM-LINK LU # 0, THEN VERIFY THAT | * IT'S A BONAFIDE COMMUNICATION LINK DRIVER. | * | * ADDITIONAL PROCESSING: | * MULTIPLE NEIGHBORS ON THE SAME LU ARE FLAGGED AS | * ERRORS. | * | * "NEIGHBOR BIT SET IN NRV3 IF NRV1 = LOCAL NODE #, AND | * LEVEL # FORCED TO LOCAL NODE'S LEVEL, AS TAKEN FROM | * #LEVL IN "RES". | * | * IF THE MESSAGE FORMAT LEVEL FOR THE NODE IS NOT THE | * SAME AS THE LOCAL NODE, THEN A FLAG IS SET WHICH WILL | * CAUSE THE MESSAGE CONVERTERS (INCNV, OTCNV) TO BE | * SCHEDULED LATER. | *---------------------------------------------------------------+ * LDB PARSB+17 GET "NEIGHBOR" INDICATOR, IF ANY LDA NRV3 LOAD LU WORD CPB "N "NEIGHBOR" INDICATOR SET? RSS . YES, CHECK FOR MULTIPLE NEIGHBORS JMP LINK? . NO, CHECK FOR COMM LINK * SZA,RSS IGNORE CHECKING FOR LU=0 JMP LINK? JSB SMF MAP LU INTO BIT MAP STA SMF AND SAVE BIT TEMPORARILY AND B,I TEST BIT SZA JMP $DUP BIT IS SET - BADO BADO IOR SMF BIT IS CLEAR OK, SET BIT IN MAP STA B,I LDA NRV3 IOR B400 SET NEIGHBOR BIT IN NRV STA NRV3 * LINK? AND B377 CHECK THAT LU SPECIFIED SZA,RSS IS A BONA FIDE COMMUNICATION JMP LUOK LU JSB LUTST JMP $LU ILLEGAL LU--TAKE ERROR EXIT JMP $LU IT'S NOT A GOOD LU! SCREAM ABOUT IT! * LUOK LDB NRV1 IF THIS ENTRY IS FOR THE LOCAL NODE, THEN LDA NRV3 CPB #NODE SET THE "NEIGHBOR" BIT. IOR B400 STA NRV3 LDA NRV2 CPB #NODE LOCAL NODE ENTRY? LDA #LEVL YES, FORCE LOCAL NODE UPGRADE LEVEL. STA NRV2 XOR #LEVL IF MESSAGE FORMAT NOT SAME AS LOCAL NODE, AND B17 THEN SET FLAG TO CAUSE MESSAGE SZA CONVERTERS TO BE ISZ MSCFL SCHEDULED. * *-- CHECK/SETUP MESSAGE ACCOUNTING FOR THIS NODE LDA MSTO# = MASTER TIMEOUT JSB #MA3 CHECK IF MA WANTED FOR THIS NODE * *-- SETUP REROUTING LINK VECTOR LDA NRV1 = NODE # LDB PARSB+4 = PARSE BUFFER TYPE CODE JSB #RR2 SPC 2 * HERE TO MOVE NRV TEMPLATE TO NEXT NRV ENTRY JSB $LIBR LOWER SYSTEM DEFENSES NOP LDA @NRV1 LOAD SOURCE ADDRESS LDB NPNT LOAD DESTINATION ADDRESS JSB .LDX LOAD # WORDS TO MOVE DEF NRVS. STNOP JSB .MVW [MWI IF IN DMS CPU] DEF NRVS. NOP JSB $LIBX RESTORE SYSTEM PROTECTIONS DEF *+1 DEF *+1 * LDA NPNT UPDATE ADA NRVS. POINTER STA NPNT * ISZ NCNT HAVE ALL NODES BEEN PROCESSED YET? JMP GETN NO, CONTINUE SPC 2 LDA MSCFL ARE THERE ALIEN-FORMAT NODES SZA,RSS IN THE NETWORK? JMP INRES NO. * * ASSIGN CLASS NUMBERS FOR MESSAGE CONVERTERS * CCA ASSIGN A JSB CLSUB CLASS NUMBER FOR DEF INCV. "INCNV" CCA ASSIGN A JSB CLSUB CLASS NUMBER FOR DEF OTCV. "OTCNV" JMP INRES SPC 1 * * SMF- MAPS LU INTO ADDRESS AND BIT POSITION * SMF NOP STORAGE MAPPING FUNCTION CLB DIV D16 STA SMF1 LDA B IOR SMF2 FORMAT SHIFT INSTRUCTION STA *+2 CLA,INA DEF *-* (MODIFIED TO LSL XX) SZA,RSS CLA,INA 2**0 = 1 LDB SMF1 ADB MAP --> MAP RECORD JMP SMF,I SMF1 BSS 1 SMF2 LSL 16 SKELETON INSTRUCTION MAP DEF *+1 BSS 16 NEIGHBOR BIT MAP * * * * * * * * DO NOT CHANGE ORDER OF NEXT TWO STATEMENTS * * * * * CNODE OCT -1 CURRENT-USER NODE; -1=INACTIVE. OCT -1 DOWN-LOAD NODE: INITIAL VALUE. * NCNT NOP NODE LOOP COUNTER (-NO. OF NODES). NPNT NOP LOCAL NRV TABLE POINTER. * * NRV ENTRY TEMPLATE. DO NOT DISTURB ORDER! * * NOTE: NRV1 & NRV2 ARE USED IN THE "ABORT" ROUTINE TO * CLEAR "LISTEN" MODE IN THE DRIVER, AS A COUNTER & A POINTER, * RESPECTIVELY. NRV1 NOP STORAGE FOR CPU NUMBER NRV2 NOP STORAGE FOR TIME-OUT/UPGRADE LEVEL # NRV3 NOP STORAGE FOR COMMUNICATION LINK LU @NRV1 DEF NRV1 * SAMSZ NOP # WORDS IN SAM BLOCK TSTSZ NOP # WORDS IN TST NRVSZ NOP # WORDS IN NRV * MSCFL IS A FLAG, CONTAINING 0, OR > 0 IF ALIEN MESSAGE FORMAT * NODES EXIST IN NETWORK. THAT IS, IF MSCFL = 0 AT THE END OF THE NRV * SPECIFICATION ENTRIES (AT INITIALIZATION TIME), THEN THE MESSAGE * FORMAT CONVERTERS DO NOT NEED TO BE SCHEDULED. OTHERWISE, THEY DO. MSCFL DEC 0 SKP *---------------------------------------------------------------+ * ROUTINE TO INITIALIZE THE "RES" AREA | *---------------------------------------------------------------+ * INRES EQU * LDA NTCBS COUNT FOR NUMBER OF TCBS STA TEMP 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 JMP SLOPX * SLOOP ADB TCBSZ THE STLNK STB A,I NULL [CONTAINS XSB A,I: DMS] NOP LIST [NOP: RTE-II, DEF A,I: DMS] STB A WITH SLOPX ISZ TEMP FIVE- JMP SLOOP WORD CLB NULL STERM STB A,I ENTRIES. [CONTAINS XSB A,I: DMS] NOP [NOP: RTE-II, DEF A,I: DMS] * * CPB RM3K DS/3000 ENABLED? JMP INIT NO, BYPASS THIS CODE * LDA TSTSZ JSB .CAX X-REG := # WORDS IN TST LDA TST# GET POINTER TO TST AREA * LOOP3 STB A,I [XSB A,I FOR DMS] NOP STORE INA ZEROES JSB .DSX IN JMP LOOP3 TST * * INITIALIZE ALL GLOBAL RN'S, CLASS NUMBERS, AND COUNTERS IN 'RES'. * INIT LDA QCLM# GET THE CLEANUP MONITOR'S CLASS NO. CCE ALR,ERA REMOVE THE BUFFER SAVE BIT & SET NO WAIT BIT STA QCLM# SAVE THE CLASS WORD. * LDA LSBFA SOURCE = LOCAL BUFFER. LDB #SCLR DESTN = DATA AREA. JSB .MVW MOVE THE DATA TO . DEF MVSIZ NOP * JSB $LIBX RESTORE MEMORY PROTECTION DEF *+1 DEF *+1 * LDA RMSA ARE THERE HP 1000 LINKS? SZA,RSS JMP MONIT NO, SKIP NEXT BLOCK JMP LUEN ENABLE LU'S * * * * DO NOT CHANGE ORDER OF ENTRIES (MATCHES ORDER IN )!! * THIS TABLE IS COPIED INTO AN AREA OF "RES" AT THE END OF * THE INITIALIZATION PHASE. 1ST LOCN ADDRESS IS CONTAINED * IN 'LSBFA', THE NUMBER OF WORDS TO MOVE IS GIVEN BY * 'MVSIZ'. * LSBFA DEF TBRN# LOCAL 'RES' DATA BUFFER ADDRESS. TBRN# NOP TABLE-ACCESS RESOURCE NUMBER. QRN# NOP SYSTEM-QUIESCENT RESOURCE NUMBER. GRPM# NOP GENERAL PRE-PROCESSOR CLASS NUMBER. QCLM# NOP QUEUE CLEAN-UP MONITOR'S CLASS NUMBER. NOP ACTIVE TRANSACTION COUNTER. MSTO# ABS 256-9 MASTER-REQUEST TIMEOUT(LOWER BYTE -9). ABS 256-6 SLAVE-REQUEST TIMEOUT(LOWER BYTE -6). RTRY# NOP WRITE-RETRY MODULE'S CLASS NUMBER. NOP #MAST QUIESCENT WAIT INTERVAL. NOP NODE SECURITY CODE. OCT 6000 REMOTE-BUSY REJECT RETRY COUNT (-3). INCV# NOP INCOMING MSG CNVTR CLASS # OTCV# NOP OUTBOUND MSG CNVTR CLASS # MHCT# NOP MAXIMUM HOP COUNT MDCT# DEC -10 MAX.# TIMES A LINK CAN GO DOWN IN 5 MIN RPCV# NOP HP3000 REPLY CONVERTER CLASS NO. RQCV# NOP HP3000 REQUEST CONVERTER CLASS NO. LU3K# NOP LU NUMBER OF HP3000 QZRN# NOP QUEZ RN CLRN# NOP QUEX CLEAN-UP RESOURCE NUMBER QXCL# NOP QUEX CLASS NO. TST# NOP HP3000 TRANS. STATUS TBL. ADDR NOP SIZE OF TST MVSIZ ABS *-TBRN# NUMBER OF WORDS TO MOVE INTO 'RES' AREA. * * END OF FIXED-ORDER TABLE * SKP *---------------------------------------------------------------+ * THIS BLOCK ENABLES THE HP 1000 LINKS. | *---------------------------------------------------------------+ * LUEN EQU * JSB PRINT DEF UPLUM " LINE LU?_" JSB READ READ A RECORD CPA B1 WAS INPUT BINARY? JMP SAVLU YES. GO TO PROCESS THE LU. CPB /E END OF LIST? JMP MONIT YES. RETURN LUERR JSB QUERY DEF LUERM "LU ERROR" JMP LUEN+2 TRY AGAIN * SAVLU STB NRV3 SAVE TEMPORARILY. CPB #LU3K HP3000 LU? JMP LUEN . YES, IGNORE 3K LINES * GO VERIFY THAT LU IS LINKED TO A VALID COMMUNICATION DRIVER. JSB LUTST NOP ILLEGAL LU JMP LUERR NOT A COMMUNICATION DRIVER--ERROR * JSB LUSET GO TO SET UP & ENABLE THE LU. JMP LUERR * RTE-DETECTED ERROR--TRY AGAIN! * * CALL RE-ROUTING ROUTINE TO SET THIS LU IN TABLE * (PARSB CONTAINS PARSED RESPONSE TO LAST QUESTION) JSB #RR3 JMP LUEN GO TO REQUEST ANOTHER LU NUMBER. SKP *---------------------------------------------------------------+ * SCHEDULE REQUESTED SLAVE MONITORS | *---------------------------------------------------------------+ MONIT EQU * JSB PRINT "MONITOR?" DEF MONMS JSB READ GET USER'S RESPONSE CPB /E DONE? JMP GETSC . YES CPB /D DEFAULT? JMP ALLMN . YES SCHEDULE ALL REMAINING MONITORS * LDA MNMON STA MCTR NUMBER OF MONITORS LDA @MON STA MPTR PTR TO 1ST MONITOR SRT ENTRY * * LOOK FOR THE MONITOR REQUESTED * MON1 EQU * LDA @MNAM LDB MPTR,I ADB D2 --> NAME IN SRT JSB .CMW DEF D3 NOP JMP MON2 FOUND HIM! NOP ISZ MPTR ISZ MCTR JMP MON1 TRY AGAIN... * JSB ERROR "INVALID MONITOR NAME" DEF INVNM JMP MONIT * MON2 LDB MPTR,I --> SRT ENTRY JSB PMON PROCESS MONITOR JMP MONIT SPC 2 MPTR BSS 1 MCTR BSS 1 @MNAM DEF PARSB+1 SPC 3 * PROCESS ALL MONITORS * ALLMN EQU * LDA MNMON STA MCTR LDA @MON STA MPTR --> [.] --> 1ST MONITOR SRT ENTRY ALL1 LDB MPTR,I --> MONITOR SRT ENTRY JSB PMON PROCESS MONITOR ISZ MPTR ISZ MCTR JMP ALL1 JMP GETSC SPC 3 * ROUTINE TO ASSIGN CLASS, SETUP LIST HEADER, AND SCHEDULE * A SLAVE MONITOR. ON ENTRY --> SRT ENTRY. * PMON NOP STB PMON3 STB PMON4 LDA D1 CHECK IF MONITOR ALREADY AND B,I PROCESS AND BYPASS IF SZA IT HAS BEEN. JMP PMON,I * LDA PMON3,I 3K MONITOR? SSA,RSS JMP PMON2 . NO CONTINUE LDA #LU3K 3K CONNECTED? SZA,RSS JMP PMON,I . NO RETURN * PMON2 CLA GET A CLASS # FOR MONITOR JSB CLSUB PMON3 DEF *-* SRT ENTRY ADDRESS * LDB PMON3 --> SRT JSB CALC COMPUTE LIST HEADER ADDRESS INB --> CLASS WORD IN HEADER LDA @CLAS,I STA B,I MOVE IN CLASS * INB --> PGM NAME IN HEADER STB PMON5 LDA PMON3 ADA D2 --> PGM NAME IN SRT JSB .MVW MOVE NAME INTO LIST HEADER DEF D3 NOP * INA --> ABORTABLE BIT LDA A,I GET ABORT BIT IOR PMON5,I STA PMON5,I AND MERGE IT WITH NAME * LDB PMON4 CPB @RFAM REQUEST TO SCHEDULE RFAM? RSS . YES JMP PMON7 . NO JUST SCHEDULE JSB PRINT "INPUT # OF FILES" DEF FILMG JMP *+3 PMON6 JSB QUERY DEF FERMG "FILE ERROR" JSB READ CPA D1 NUMERIC? RSS . YES OK JMP PMON6 . NO BADO BADO... STB #RFSZ SAVE FILE/DCB COUNT FOR RFAM * PMON7 EQU * JSB SCHED SCHEDULE MONITOR PMON4 DEF *-* SZA,RSS IF <> 0 THEN MONITOR NOT SCHEDULED. BACK-OUT JMP PMON,I RETURN * LDB PMON4 --> SRT JSB SNUFF MONITOR NOT SCHEDULED, BACKOUT RESOURCES JMP PMON,I * PMON5 DEF *-* ADDRESS OF PGM NAME IN SLAVE HEADER SPC 3 * SCHEDULE PROGRAM (P+1 --> SRT ENTRY, RETURNS 0 IF OK) * SCHED NOP LDA SCHED,I RAL,CLE,SLA,ERA RESOLVE INDIRECT ADDRESS LDA A,I INTO DIRECT ADDRESS STA SCHD4 SRT ADDRESS ISZ SCHED INA LDB A,I --> CLASS INA --> PROGRAM NAME (SRT+2) DST SCHD1 * JSB EXEC SCHEDULE PGM WITHOUT WAIT DEF *+5 DEF SCHNW SCHD1 DEF *-* DEF *-* PARM #1 (PROGRAM CLASS) DEF ERLU PARM #2 JMP SCHD2 ERROR RETURN SZA,RSS JMP SCHD3 GOOD RETURN - UPDATE FLAGS DLD ASTAT STATUS ERROR SCHD2 DST SERR LDA SCHD1 LDB @SCHD JSB .MVW MOVE IN MONITOR NAME DEF D3 NOP JSB ERROR PRINT PGM SCHEDULE ERROR DEF SMES CCA SET ERROR INDICATOR - COULDN'T SCHEDULE JMP SCHED,I RETURN * SCHD3 EQU * PROGRAM SCHEDULED -- UPDATE FLAGS LDA SCHD4,I IOR D1 SET "SCHEDULED" FLAG STA SCHD4,I CLA INDICATE SCHEDULE SUCCESSFUL JMP SCHED,I RETURN * SCHD4 BSS 1 ASTAT ASC 2,STAT SMES DEF *+2 DEF D9 ASC 3,ERROR: SERR ASC 6,EEEE XXXXX @SCHD DEF SERR+3 SCHNW DEF 10,I SKP *---------------------------------------------------------------+ * GET SECURITY CODES FROM THE USER | *---------------------------------------------------------------+ GETSC EQU * JSB SECOD SET NETWORK USER ACCESS SECURITY CODE FOR THIS NODE. DEF SECMS STB #SWRD JSB SECOD SET NETWORK MANAGEMENT ACCESS SECURITY CODE DEF SECNM STB #NMSC JMP SQUE SPC 2 * ROUTINE TO ASK FOR, OBTAIN & VERIFY A SECURITY CODE * SPECIFIED IS IN ASCII. * SECOD NOP LDA SECOD,I LOAD ADDRESS OF "PROMPT" MESSAGE STA SCOD. SAVE IN-LINE DLD ECHO TEMPORARILY REMOVE THE 'ECHO' BIT SWP DST ECHO ISZ SECOD BUMP RETURN POINTER * SCOD0 EQU * JSB PRINT ASK FOR SECURITY CODE SCOD. NOP ADDRESS OF "PROMPT" MSG STORED HERE JSB READ INPUT RESPONSE CPA B2 RESPONSE ASCII? RSS YES,... JMP SCOD0 NO, TRY AGAIN. DLD ECHO RESTORE ECHO BIT SWP DST ECHO LDB PARSB+1 SPC 1 UNL JSB S LST JMP SECOD,I RETURN. SPC 1 * SUBROUTINE TO OBTAIN NETWORK MANAGEMENT ACCESS SECURITY CODE NMSCX NOP JSB SECOD DEF SECNM "NETWORK MANAGEMENT SECURITY CODE?" CPB #NMSC CODES MATCH? JMP NMSCX,I YES, RETURN JMP ABORT NO--TOUGH LUCK UNL S NOP BLF,BLF CMB JMP S,I LST SPC 1 SECMS DEF *+2 DEF D14 ASC 14,NETWORK USER SECURITY CODE?_ SECNM DEF *+2 DEF D17 ASC 17,NETWORK MANAGEMENT SECURITY CODE?_ SKP *---------------------------------------------------------------+ * SCHEDULE QUEUEING PROCESSORS | * | * 1000-1000 LINKS GRPM, RTRY, QCLM | * 1000-1000 LINKS W/ OLD NODES - INCNV, OTCNV | * 3000 LINK - RQCNV, RPCNV | *---------------------------------------------------------------+ SQUE EQU * LDA RMSA 1000-1000 LINKS? SZA,RSS JMP SQUE1 . NO CHECK 3000 * JSB SCHED SCHEDULE GRPM DEF GRPM. SZA JSB QWARN JSB SCHED SCHEDULE RTRY DEF RTRY. SZA JSB QWARN JSB SCHED SCHEDULE QCLM DEF QCLM. SZA JSB QWARN LDA #MCTR MA IN SYSTEM? SZA,RSS JMP SQUE0 . NO CONTINUE * JSB EXEC PUT 'MATIC' INTO TIME LIST DEF *+6 DEF D12N INITIAL OFFSET SCHEDULE DEF MA1.+2 PROGRAM NAME DEF D2 RESOLUTION (2=SECONDS) DEF D1 MULTIPLE (1=EVERY SECOND) DEF DM2 RUN AFTER 2 SECONDS JMP *+4 ERROR! COULD NOT SCHEDULE MATIC! JMP SQUE0 DEF MA1. SRT ADDRESS FOR ERROR PROCESSING NOP FAKE OUT QWARN JSB QWARN * * IF OLDER NODES SCHEDULE CONVERTERS * SQUE0 LDA MSCFL SZA,RSS JMP SQUE1 NO OLDER NODES * JSB SCHED SCHEDULE INCNV DEF INCV. SZA JSB QWARN JSB SCHED SCHEDULE OTCNV DEF OTCV. SZA JSB QWARN * * IF 3000 LINK, THEN SCHEDULE 3K PROCESSORS * SQUE1 LDA RM3K SZA,RSS JMP TERM NO 3K LINK * JSB SCHED SCHEDULE RQCNV DEF RQCV. SZA JSB QWARN JSB SCHED SCHEDULE RPCNV DEF RPCV. SZA JSB QWARN JMP TERM SPC 2 QWARN NOP WARN USER THAT A REQUIRED LDB QWARN DS/1000 PROCESSOR ADB DM3 CANNOT BE SCHEDULED LDA B,I --> SRT ADA D2 --> PGM NAME LDB @QMSG ADB D7 --> WHERE TO PUT NAME JSB .MVW MOVE NAME DEF D3 NOP JSB ERROR WARN USER @QMSG DEF QWMSG JMP QWARN,I SKP *---------------------------------------------------------------+ * PROGRAM TERMINATION PROCESSOR. | *---------------------------------------------------------------+ TERM CLA CPA #FWAM SAM ALLOCATED? JMP *+3 NO CPA ONTWO IS THIS INITIAL ENTRY? JSB SUPLN YES! SCHEDULE "UPLIN" JSB CHCKN WAS THERE A FILE JMP TERM1 NO...DON'T CLOSE IT LDA CLFLG IS IT A DUMMY DCB? SSA JMP TERM1 YES...DON'T CLOSE IT * JSB CLOSE CLOSE DEF *+3 THE DEF INDCB CONTROL DEF TEMP1 FILE. * TERM1 LDA $RTRN IF PROGRAM IS BEING ABORTED CPA @ABPR THEN IGNORE JMP TERM3 THE END MESSAGE. * JSB PRNTX GO TO PRINT THE @ENMG DEF ENDMG TERMINATION MESSAGE--SANS HEADER. * TERM3 EQU * ISZ $RTRN BUMP POINTER ISZ $RTRN TO ACTUAL MESSAGE JSB PRTN RETURN ERROR INFORMATION DEF *+2 TO THE BATCH PROCESSOR $RTRN NOP (CONTAINS DEF TO ENMSG OR ABRTM) JSB EXEC GO TO THE DEF *+2 RTE EXECUTIVE DEF D6 TO TERMINATE SKP * SUBROUTINE TO ASK CPU QUESTIONS & INTERPRET RESPONSES CPUCK NOP STA MSG2+4 JSB PRINT PRINT THE QUESTION DEF MSG2 JSB READ READ THE RESPONSE CLA,INA CPB "YE" YES? JMP CPUC2 YES, SET THE FLAG CLA CPB "NO" NO? JMP CPUC2 CLEAR FLAG JSB QUERY INFORM USER OF ERROR DEF ERR1 "ANSWER YES OR NO" JMP CPUCK+4 RETRY QUESTION * CPUC2 STA CPUCK,I SET CPU FLAG ISZ CPUCK SET CORRECT RETURN ADDRESS JMP CPUCK,I RETURN * ASC10 ASC 1,10 ASC30 ASC 1,30 * D14 DEC 14 SKP D100 DEC 100 DM100 DEC -100 * * RRSIZ NOP SIZE OF RE-ROUTING TABLES NTCBS NOP NUMBER OF TCBS ALLOCATED. MASIZ NOP SIZE OF M.A. TABLES (IN WORDS) SZNRV NOP SIZE OF NRV AREA (IN WORDS) SZTCB NOP SIZE OF TCB AREA (IN WORDS) POOLZ NOP SKP *---------------------------------------------------------------+ * ****** SYSTEM RESOURCE TABLE ****** | * CONTAINS INFO ABOUT ALL PROGRAMS, CLASSES, AND | * RESOURCE NUMBERS ALLOCATED. FORMAT IS AS FOLLOWS: | * | * +0 FLAGS (SEE BELOW) | * +1 @RS ADDRESS OF WHERE TO PUT CLASS/RN | * +2 PGM (OPTIONAL) PROGRAM NAME | * +5 STREAM (OPTIONAL) STREAM WORD | * +6 ABORT (OPTIONAL) ABORTABLE BIT | * +7 CLASS (OPTIONAL) SAVE AREA FOR CLASS WORD | * | * FLAGS | * --------------------- | * OCT 1 PROGRAM SCHEDULED | * OCT 2 CLASS # ALLOCATED | * OCT 4 RN ASSIGNED | * OCT 040000 SLAVE MONITOR | * OCT 100000 NEEDED ONLY FOR THE 3K | *---------------------------------------------------------------+ SPC 1 #MON EQU 11 NUMBER OF SLAVE MONITORS MNMON ABS -#MON @MON DEF MON START OF MONITORS @RFAM DEF M6. RFAM ENTRY ADDRESS * SRT DEF *+1 START OF SYSTEM RESOURCE TABLE DEF UPLI. MON EQU * START OF SLAVE MONITOR LIST DEF M1. ORDER OF THE FOLLOWING IS FIXED DEF M2. " DEF M3. " DEF M4. " DEF M5. " DEF M6. " DEF M7. " DEF M8. " DEF M9. " DEF M10. DEF M11. END OF FIXED ORDER... ADD MONITORS AFTER HERE DEF TBRN. DEF QRN. DEF QXCL. DEF QZRN. DEF CLRN. DEF RQCV. DEF RPCV. DEF GRPM. DEF RTRY. DEF QCLM. DEF INCV. DEF OTCV. DEF RSM. DEF MA1. DEF MA2. DEF EX1. DEF EX2. SRTLN ABS *-SRT-1 NUMBER OF SRT ENTRIES SPC 1 *-- SLAVE MONITORS M1. OCT 040000 DEF *+6 ASC 3,DLIST DIRECTORY LIST MONITOR DEC 1 STREAM 1 NOP NO ABORT BSS 1 CLASS M2. OCT 140000 DEF *+6 ASC 3,CNSLM HP3K CONSOLE MONITOR DEC 2 STREAM 2 OCT 100000 OK TO ABORT BSS 1 CLASS M3. OCT 040000 DEF *+6 ASC 3,EXECW SCHEDULE-WITH-WAIT MONITOR DEC 3 STREAM 3 OCT 100000 OK TO ABORT BSS 1 CLASS M4. OCT 040000 DEF *+6 ASC 3,PTOPM PROGRAM TO PROGRAM MONITOR DEC 4 STREAM 4 NOP NO ABORT! BSS 1 CLASS M5. OCT 040000 DEF *+6 ASC 3,EXECM REMOTE EXEC-REQUEST MONITOR DEC 5 STREAM 5 NOP NO ABORT! BSS 1 CLASS M6. OCT 040000 DEF *+6 ASC 3,RFAM REMOTE FILE ACCESS MONITOR DEC 6 STREAM 6 NOP NO ABORT! BSS 1 CLASS M7. OCT 040000 DEF *+6 ASC 3,OPERM REMOTE OPERATOR-REQUEST MONITOR DEC 7 STREAM 7 OCT 100000 OK TO ABORT BSS 1 CLASS M8. OCT 040000 DEF *+6 ASC 3,VCPMN VIRTUAL CONTROL PANAL MONITOR DEC 8 STREAM 8 NOP NO ABORT! BSS 1 CLASS M9. OCT 040000 DEF *+6 ASC 3,PROGL ABSOLUTE PROGRAM LOADING MONITOR DEC 9 STREAM 9 NOP NO ABORT! BSS 1 CLASS M10. OCT 040000 DEF *+6 ASC 3,RDBAM REMOTE DATA BASE ACCESS MONITOR DEC 10 STREAM 10 NOP NO ABORT! BSS 1 CLASS M11. OCT 40000 DEF *+6 ASC 3,APLDX 'MINI-APLDR' FOR MEMORY-BASED RTE-LS DEC 11 STREAM 11 OCT 100000 OK TO ABORT BSS 1 CLASS NUMBER * TBRN. NOP DEF TBRN# QRN. NOP DEF QRN# QXCL. OCT 100000 DEF QXCL# ASC 3,QUEX QZRN. OCT 100000 DEF QZRN# ASC 3,QUEZ CLRN. NOP DEF CLRN# RQCV. OCT 100000 DEF RQCV# ASC 3,RQCNV RPCV. OCT 100000 DEF RPCV# ASC 3,RPCNV GRPM. NOP DEF GRPM# ASC 3,GRPM RTRY. NOP DEF RTRY# ASC 3,RTRY QCLM. NOP DEF QCLM# ASC 3,QCLM INCV. NOP DEF INCV# ASC 3,INCNV OTCV. NOP DEF OTCV# ASC 3,OTCNV UPLI. NOP NOP ASC 3,UPLIN #RSM. EQU * RSM. NOP DEF #RSM ASC 3,RSM #MA1. EQU * MA1. NOP DEF #MARN RN FOR TABLE ACCESS ASC 3,MATIC #MA2. EQU * MA2. NOP DEF #MAHC MA HOLD CLASS EX1. NOP DEF #EXHC EXECM HOLD CLASS EX2. NOP DEF #EXTC EXECM WORK CLASS 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 * SKP * * SUBROUTINE TO STORE ID SEQUENCE IN "RES". * (A) = # BYTES * (B) = ADDRESS IN "RES". * INBUF = ASCII INPUT BUFFER (ADDR = DINBF). * STRID NOP STB TEMP1 DESTINATION ADDR. * LDB A IS # BYTES .LE. 16? ADB DM17 SSB,RSS LDA D16 NO. TRUNCATE TO 16 BYTES. STA TEMP1,I STORE # BYTES. SZA,RSS JMP STRID,I IF NO ID, RETURN STA B BRS GET LAST CHARACTER IN BUFFER. ADB M1 ADB DINBF LDA B,I AND D255 CPA D32 IS IT A BLANK? JMP STR1 YES. LDA TEMP1,I NO. ARE THERE 16 BYTES? CPA D16 RSS JMP STR2 NO. STR1 LDA B,I YES. CLEAR THE BLANK (OR 16TH BYTE), AND DM256 STA B,I LDA TEMP1,I AND DECREMENT BYTE COUNT. ADA M1 STA TEMP1,I INA STR2 ISZ TEMP1 CLE,ERA NO. OF WORDS TO STORE. SZA,RSS JMP STRID,I IF NO ID, RETURN LDB TEMP1 DESTINATION ADDRESS STA TEMP1 # OF WORDS LDA DINBF SOURCE ADDRESS JSB .MVW PERFORM MOVE DEF TEMP1 NOP * JMP STRID,I RETURN TO CALLER * D32 DEC 32 SKP * SPC 1 * UTILITY SUBROUTINE CFSEC NOP ENTRY/EXIT CCB CONVERT SECONDS TO DIV B5 FIVE SECOND INTERVALS. ADB B2 IF THE REMAINDER IS SSB THREE OR MORE, ADA M1 ROUND TO NEXT INTERVAL. SZA,RSS INSIST UPON A CCA MINIMUM COUNT = -1. AND D255 MASK OFF HIGH BITS JMP CFSEC,I RETURN * D255 DEC 255 SKP * SUBROUTINE TO VERIFY THAT LU IS LINKED TO COMMUNICATION LINK DRIVER. * CALLING SEQUENCE: * "NRV3" CONTAINS LU # TO TEST. * P JSB LUTST * P+1 * P+2 * P+3 * LUTST NOP LDA NRV3 CONFIGURE DOUBLE-WORD LU IOR BIT15 STA LU1 CLA STA LU2 JSB XLUEX GO TO OBTAIN DEF *+4 THE EQUIPMENT TYPE DEF SD13 CODE FOR THE DEF LU1 SPECIFIED LOGICAL UNIT. DEF LUSET JMP LUTST,I TAKE THE ERROR EXIT! ISZ LUTST BUMP RETURN TO P+1 * LDA LUSET GET STATUS WORD. ALF,ALF AND B77 ISOLATE THE EQUIPMENT TYPE-CODE. CPA B65 IS THE LU LINKED TO 'DVA65'? ISZ LUTST YES. TAKE GOOD EXIT (P+2). CPA B66 LINKED TO DVA 66? ISZ LUTST YES. TAKE GOOD EXIT (P+2) JMP LUTST,I NO. ERROR: RETURN TO P+1. * LU1 NOP NOTE: LU1 & LU2 MUST BE TOGETHER! LU2 NOP NOTE: LU1 & LU2 MUST BE TOGETHER! BIT15 OCT 100000 OPT NOP SPC 2 * SUBROUTINE TO SET-UP & ENABLE A COMMUNICATION LINK * LUSET NOP * LDA NRV3 GET THE LOGICAL UNIT NUMBER. AND B377 MASK LU FIELD STA OPT IOR BIT15 STA LU1 CONFIGURE DOUBLE-WORD LU LDA B3000 SET FOR ENABLE LISTEN REQUEST STA LU2 * JSB XLUEX GO TO RTE DEF *+4 TO REQUEST THAT DEF SD3 'COMMUNICATION DRIVER' SET UP & DEF LU1 ENABLE CONFIGURED LU DEF OPT LISTEN MODE FOR THE LU JMP LUSET,I * RTE-DETECTED ERROR--TRY AGAIN! * ISZ LUSET ADJUST FOR "GOOD" RETURN RAR POSITION BIT 1 TO LSB SLA,RSS INITIALIZATION ERROR? JMP LUSET,I NO, GOOD INITIALIZATION, RETURN TO THE CALLER. * * PRINT MESSAGE: INITIALIZATION FAILED, LU NN * LDA NRV3 CONVERT LU NUMBER TO ASCII AND B377 JSB DECML DEF CNER. JSB PRINT PRINT THE MESSAGE DEF CNERR JMP LUSET,I RETURN TO CALLER SPC 3 SKP * * DECML- CONVERTS BINARY TO DECIMAL (LEFT JUSTIFIED) * = BINARY * JSB DECML * DEF WHERE TO PUT 6 CHARACTERS * EXT .MBT,.SBT * DECML NOP STA DEC8. SAVE LDB DECML,I ISZ DECML CLE,ELB CONVERT TO BYTE ADDRESS STB DEC7. LDA @SPAC JSB .MBT MOVE IN SPACES DEF D6 NOP LDA DEC8. LDB DEC7. SSA,RSS NEGATIVE NUMBER? JMP DEC1. . NO CMA,INA STA DEC8. SSA SPECIAL LOW NUMBER (-32768)? JMP DEC4. . YES LDA DASH JSB .SBT DEC1. STB DEC7. SAVE OUTPUT POINTER LDA DTBL STA D D --> DIVISOR TABLE LDA DM4 STA DEC5. STA DEC6. CLEAR OUTPUT FLAG (SET TO 1) * DEC2. LDB DEC8. LSR 16 DIV D,I ISZ D STB DEC8. REMAINDER SZA OUTPUT OTHER THAN ZERO? JMP *+4 . YES OUTPUT IT LDB DEC6. SSB OK TO OUTPUT? JMP DEC3. . NO FINISH LOOP IOR "0" STA DEC6. SET OUTPUT FLAG (BIT15=0) LDB DEC7. --> OUTPUT FIELD JSB .SBT STB DEC7. SAVE OUTPUT FIELD DEC3. ISZ DEC5. JMP DEC2. * LDA DEC8. := ONES DIGIT LDB DEC7. --> OUTPUT IOR "0" JSB .SBT JMP DECML,I AND RETURN * DEC4. LDA @32K MOVE IN -32768 JSB .MBT DEF D6 NOP JMP DECML,I RETURN SPC 2 @32K DBL *+1 ASC 3,-32768 @SPAC DBL *+1 ASC 3, DTBL DEF *+1 DEC 10000 DEC 1000 DEC 100 DEC 10 * "0" OCT 60 DASH ASC 1,-- * DEC5. BSS 1 DEC6. BSS 1 BIT15=1 NO OUTPUT; BIT15=0 OUTPUT D BSS 1 DEC7. BSS 1 DEC8. BSS 1 SKP ZERO EQU M1.+6 D1 EQU M1.+5 D2 EQU M2.+5 D3 EQU M3.+5 D4 EQU M4.+5 D5 EQU M5.+5 D6 EQU M6.+5 D7 EQU M7.+5 D8 EQU M8.+5 D9 EQU M9.+5 D10 EQU M10.+5 D11 DEC 11 D12 DEC 12 D12N DEF 12,I D13 DEC 13 D15 DEC 15 D16 DEC 16 D17 DEC 17 D20 DEC 20 D26 DEC 26 D36 DEC 36 D1275 DEC 1275 DM2 DEC -2 NMXLV EQU DM2 -(MAXIMUM ALLOWABLE UPGRADE LEVEL + 1) DM3 DEC -3 DM16 DEC -16 DM17 DEC -17 DM256 DEC -256 B1 EQU D1 B2 EQU D2 B4 EQU D4 B5 EQU D5 B17 EQU D15 B65 OCT 65 B66 OCT 66 B67 OCT 67 B77 OCT 77 B377 OCT 377 B400 OCT 400 B3000 OCT 3000 BT137 OCT 37700 BLNKS ASC 1, TWO ASCII BLANKS (" ") SD3 OCT 100003 SD13 OCT 100015 M1 EQU CNODE XSBAI XSB A,I DMS: CROSS-STORE VIA ALTERNATE MAP. XCBAI XCB A,I CROSS-COMPARE XLABI XLA B,I MWII MWI MOVE TO ALTERNATE MAP NOP (THIS 'NOP' REQ'D HERE!) MWFI MWF MOVE FROM ALTERNATE MAP NOP (THIS 'NOP' REQ'D HERE!) LSECD DEC 3360 SECURITY CODE FOR SAM ALLOCATION CALL RLU NOP ECHO OCT 400 ECHO BIT < DO NOT CHANGE > NOP NON ECHO BIT < THIS ORDER ! > * TEMP1 NOP /A ASC 1,/A /D ASC 1,/D /E ASC 1,/E "YE" ASC 1,YE C#FCD ABS #FCD L#PCB ABS #PCB+3 "NO" ASC 1,NO TYPEQ NOP CLFLG NOP ONTWO NOP OPTYP NOP SPC 3 A EQU 0 B EQU 1 GLOCK OCT 100002 TEMP NOP TCBSZ EQU D6 # WORDS IN EACH TCB ENTRY INBFS EQU D20 INBUF BSS 20 PARSB BSS 34 INDCB BSS 144 USED FOR ANSWER FILES. SPC 1 * DEFINE NRV SIZE NRVS. EQU D3 SIZE OF NRV ENTRY SKP * CLASS NUMBER ALLOCATION SUBROUTINE. * * ENTER: = -1 CLEAR BITS 15 & 14 * - SRT ENTRY ADDRESS * NOTE: DE-ALLOCATION ERRORS ARE IGNORED! * BSS 1 (STORAGE) CLSUB NOP ENTRY/EXIT: CLASS SUBROUTINE. STA CLSUB-1 SAVE FLAG LDB CLSUB,I GET THE CLASS NUMBER ADDRESS. ISZ CLSUB SET RETURN TO . RBL,CLE,SLB,ERB RESOLVE INDIRECTS LDB B,I TO DIRECT ADDRESS STB @F ADDRESS OF SRT FLAG INB LDB B,I EFFECTIVE ADDRESS OF CLASS LOCATION STB @CLAS * JSB CLRQ ALLOCATE A CLASS NUMBER DEF *+4 DEF CLACD CLASS ALLOCATION CODE @CLAS DEF *-* CLASS NUMBER ADDRESS STORED HERE DEF ZERO JMP CLERR --ERROR RETURN SSA ALLOCATION ERROR? JMP NOCL# NO CLASS NUMBERS. LDA D2 IOR @F,I SET CLASS ALLOCATED BIT STA @F,I * LDA @CLAS,I SET PROPER BITS IN CLASS NUMBER ALR,RAR CLEAR "NO WAIT" BIT IOR CBITS SET "SAVE BUFFER" & "NO DE-ALLOCATE" BITS LDB CLSUB-1 SSB ALR,RAR STA @CLAS,I JMP CLSUB,I RETURN TO CALLER * NOCL# JSB SYSER CATASTROPHIC ERROR: DEF NOCL. NO CLASS NUMBERS SPC 2 * @F BSS 1 CLACD OCT 140001 ALLOCATE CLASS, NO-WAIT, NO ABORT CLS18 OCT 100022 CLS21 OCT 100025 CBITS OCT 60000 * CLERR JSB SYSER GO TO INFORM THE USER OF A DEF CLSER CATASTROPHIC CLASS-PROCESSING ERROR. * * SKP * RESOURCE NUMBER ALLOCATION ROUTINE. * ENTER: & - DON'T CARE (DESTROYED ON RETURN) * - ADDRESS OF SRT ENTRY * NOTE: RN'S ARE LOCKED LOCALLY, TO PREVENT USE UNTIL COMPLETES. * RNSUB NOP ENTRY/EXIT: RN ALLOCATION/RELEASE RTN. LDA RNSUB,I GET THE STORAGE ADDRESS FOR THE RN. ISZ RNSUB RAL,CLE,SLA,ERA RESOLVE INDIRECT ADDRESSES LDA A,I TO DIRECT ADDRESS STA @F SAVE ADDRESS OF SRT FLAG INA LDA A,I EFFECTIVE ADDRESS OF WHERE TO PUT RN STA RNAD CONFIGURE THE CALL WITH RN ADDRESS. * JSB RNRQ GO TO RTE TO REQUEST A DEF *+4 GLOBALLY ALLOCATED/LOCALLY LOCKED DEF GALC RESOURCE NUMBER. RNAD NOP DEF RNST DUMMY STATUS INFO STORAGE. JMP RNERR ERROR! LDA D4 IOR @F,I SET "RN ALLOCATED BIT" STA @F,I JMP RNSUB,I OR NORMAL COMPLETION: RETURN. * RNERR JSB SYSER ALLOCATION ERROR: INFORM THE CALLER. DEF RNERM CATASTROPHIC ERROR--NO RETURN! * GALC OCT 140021 GLOBAL ALLOCATE/LOCAL LOCK/NO ABORT RNST EQU SECOD RN STATUS STORAGE (NOT USED). SKP * SCHEDULE , THE TRANSACTION MONITOR & CLEANUP PROGRAM, * TO RUN EVERY FIVE SECONDS. * SUPLN NOP CLA,INA STA UPLI. SET SCHEDULED BIT JSB EXEC GO TO THE DEF *+6 RTE EXECUTIVE DEF SCHTM TO TIME-SCHEDULE DEF UPLI.+2 DEF B2 TO BE RUN DEF B5 EVERY FIVE SECONDS; DEF DM2 TO BEGIN IN TWO SECONDS. RSS IF A SYSTEM ERROR IS DETECTED, SKIP; JMP SUPLN,I ELSE, RETURN TO THE CALLER. * LDA SRT,I ADA D2 --> "UPLIN" LDB @QMSG ADB D7 --> WARNING MESSAGE JSB .MVW DEF D3 NOP JSB SYSER INFORM THE USER OF A CATASTROPHIC ERROR: DEF QWMSG 'UPLIN' WAS NOT SCHEDULED. [NO RETURN] * SCHTM OCT 100014 SKP * SUBROUTINE TO PRINT MESSAGES ON INTERACTIVE TERMINALS--ONLY. * * CALLING SEQUENCES: * * JSB PRINT....PRINT:" /DINIT:" JSB PRNTX....PRINT:"" * DEF MESSAGE DEF MESSAGE * * NOTE: MESSAGE LENGTH LIMITED TO 72 CHARACTERS * * PRNTX NOP ENTRY/EXIT: PRINT W/O HEADER LDA PRNTX GET THE RETURN ADDRESS. STA PRINT SAVE FOR THE RETURN. LDA A,I GET THE MESSAGE ADDRESS, STA OLDAD AND SAVE FOR ERROR-TRANSFER ROUTINE. DLD A,I GET THE MESSAGE SPECIFICATIONS, DST PRNT1 AND CONFIGURE THE CALLING SEQUENCE. JMP PRNT0 GO TO PRINT THE MESSAGE W/O HEADER. * PRINT NOP NORMAL ENTRY/EXIT DLD NORMA RE-ESTABLISH THE DST PRNT1 NORMAL MESSAGE SPECIFICATIONS. LDA MSGAD INITIALIZE THE STA BUFPT MESSAGE BUFFER POINTER. LDB PRINT GET ADDRESS OF MESSAGE INFORMATION. LDB B,I TRACK DOWN RBL,CLE,SLB,ERB A DIRECT JMP *-2 ADDRESS. LDA $ERR IF THE ERROR-TRANSFER ROUTINE IS SZA,RSS IN CONTROL, BYPASS 'OLDAD' UPDATING. STB OLDAD SAVE IT FOR THE ERROR-TRANSFER ROUTINE. DLD B,I GET BUFFER ADDRESS AND LENGTH. STA MSPNT SAVE FOR SOURCE POINTER. LDB B,I GET THE MESSAGE LENGTH. STB PRNTL INCLUSION OF THE HEADER. CMB,INB IF THE MESSAGE LENGTH ADB D36 EXCEEDS THE MAXIMUM SSB BUFFER SIZE, THEN JMP PRNTA IGNORE THE REQUEST; ELSE, DLD MSPNT TRANSFER THE MESSAGE JSB .MVW TO THE PRINT BUFFER. DEF PRNTL NOP LDA PRNTL GET THE MESSAGE LENGTH. ADA B5 ADD IN THE HEADER SIZE. STA PRNTL SAVE TOTAL MESSAGE LENGTH. * PRNT0 LDA TYPEQ GET TTY FLAG LDB $ERR GET ERROR FLAG SZB,RSS ERROR OR SZA,RSS OR INTERACTIVE RSS YES...PRINT MESSAGE JMP PRNTA NO ERROR AND NOT INTERACTIVE LDA RLU GET INTERACTIVE LU SZB ERROR? LDA ERLU YES...ERROR LU IOR ECHO (SET ECHO BIT) STA PRTLU SAVE AS PRINT LU * JSB EXEC PRINT MESSAGE DEF *+5 DEF B2 DEF PRTLU PRINT LU PRNT1 DEF HEDMS MESSAGE ADDRESS. DEF PRNTL MESSAGE LENGTH. PRNTA ISZ PRINT POINT TO RETURN ADDRESS JMP PRINT,I RETURN SPC 1 ERLU NOP ERROR LOGICAL UNIT NO. PRTLU NOP PRNTL NOP OLDAD NOP PREVIOUS MESSAGE ADDRESS. BUFPT NOP NORMA DEF HEDMS DEF PRNTL MSPNT NOP MSGAD DEF MSGBF HEDMS OCT 6412 CARRIAGE-RETURN/LINEFEED. ASC 4,/DINIT: MSGBF BSS 36 * * ROUTINE TO DECIDE WHICH TYPE OF INPUT DEVICE * EITHER FILE OR LU * IF LU, A-REG WILL CONTAIN LU TYPE, B-REG = READ LU, E=0 * CALLING SEQUENCE * JSB CHCKN * * * CHCKN NOP LDB RLU GET READ-DEVICE LU. LDA TYPEQ GET EQUIPMENT TYPE CODE. CLE,SZB,RSS LU OR FILE ISZ CHCKN FILE JMP CHCKN,I AND RETURN * * SUBROUTINE TO PRINT SYSTEM ERROR MESSAGES AND * ABORT * CALLING SEQUENCE * JSB SYSER * DEF ERR MESSAGE * SYSER NOP LDA SYSER,I GET MESSAGE SPECIFICATION ADDRESS. STA *+3 CONFIGURE CALL TO PRINT ROUTINE. ISZ $ERR SET ERROR FLAG. JSB PRINT DEF *-* JMP ABORT AFTER MESSAGE...ABORT SPC 3 * SUBROUTINE TO READ FROM A SELECTED INPUT DEVICE. * IT PARSES THE INPUT AND PLACES THE RESULT IN A BUFFER * CALLED PARSB. IF FIRST PARAMETER = '/A' WILL GO TO 'ABORT'. * * CALLING SEQUENCE: * JSB READ * UPON RETURN A REG=PARSB, B REG=PARSB+1 * READ NOP LDA DM4 ALLOW THREE STA RETRY ERROR-RETRIES. READA LDA RLU GET READ LU LDB $ERR IS THIS AN ERROR READ? SZB LDA ERLU YES...READ FROM ERROR DEVICE. SZA,RSS IF THE SOURCE IS FROM A FILE, JMP READB THEN GO TO FILE READ ROUTINE. IOR ECHO SET ECHO BIT STA PRTLU SAVE READ LU JSB EXEC DEF *+5 DEF B1 DEF PRTLU DINBF DEF INBUF DEF INBFS SZB EOF HIT? JMP READC NO REDER JSB QUERY INDICATE ERROR, AND ALLOW RE-TRY. DEF READM JMP READA TRY AGAIN SPC 1 READB EQU * ISZ LINE# BUMP LINE NUMBER COUNTER JSB READF READ FROM A FILE DEF *+6 DEF INDCB DEF TEMP1 DEF INBUF DEF INBFS DEF PRNTL LDB PRNTL GET LENGTH SSA,RSS FILE ERROR? SZB,RSS OR ZERO-LENGTH RECORD? JMP REDER YES--PROCESS THE ERROR. * READC EQU * CLE,ELB CONVERT TO BYTE LENGTH STB PRNTL SAVE LENGTH LDA INBUF GET AND =B77400 FIRST CPA ASTSK CHARACTER: ASTERISK(*) ? JMP READA YES, READ ANOTHER ONE JSB PARSE GO PARSE INPUT DEF *+4 DEF INBUF DEF PRNTL DEF PARSB CLA,CLE CLEAR OUT ERROR FLAG STA $ERR DLD PARSB LOAD A AND B REG CPB /A IF RECORD'S FIRST 2 CHARS. =/A JMP *+2 SKIP TO CHECK NEXT TWO. JMP READ,I ELSE, RETURN. LDB PARSB+2 GET NEXT TWO CHARACTERS. CPB BLNKS IF THEY ARE BLANKS, JMP ABORT THEN PROCESS THE ABORT REQUEST! LDB PARSB+1 ELSE, RESTORE , JMP READ,I AND RETURN. * DM4 DEC -4 * RDER NOP ASTSK OCT 25000 ASCII "*" IN HIGH BYTE LINE# NOP LINE NUMBER COUNTER (FILE INPUT ONLY) SPC 2 * ROUTINE TO PRINT ERROR MESSAGE. * * CALLING SEQUENCE: * * JSB ERROR * DEF * * WILL SET ERROR FLAG FOR RETRY * ERROR NOP LDA ERROR,I GET MESSAGE SPECIFICATION ADDRESS. STA *+3 CONFIGURE CALL TO PRINT ROUTINE. ISZ $ERR FORCE MESSAGE TO ERROR DEVICE. JSB PRINT PRINT THE ERROR MESSAGE. DEF *-* CLA CLEAR THE STA $ERR ERROR FLAG. ISZ ERROR BYPASS THE MESSAGE-SPECIFICATION. JMP ERROR,I AND RETURN SPC 1 $ERR NOP ERROR OCCURED FLAG SPC 2 * PRINT THE ERROR MESSAGE AND REPEAT THE QUESTION ON THE (ERROR LU) DEVICE. * * CALLING SEQUENCE: * * JSB QUERY * DEF * QUERY NOP ENTRY/EXIT: ERROR TRANSFER ROUTINE ISZ $ERR SET ERROR FLAG. ISZ RETRY ALL RETRIES BEEN EXHAUSTED? JMP *+2 NO. TRY AGAIN. JMP ABORT YES--ABORT THE PROCESS! * LDA QUERY,I GET MESSAGE ADDRESS. STA *+2 JSB PRINT GO TO PRINT DEF *-* * JSB PRINT GO TO REPEAT THE QUESTION DEF OLDAD,I ON THE (ERROR LU) DEVICE. ISZ QUERY SET RETURN ADDRESS JMP QUERY,I AND RETURN. SKP * SUBROUTINE TO CHECK DRIVER TYPE * CALLING SEQUENCE: JSB TTY? * DEF * UPON RETURN, A-REG=LU NUMBER, B-REG=0 IF INTERACTIVE * TTY? NOP LDA TTY?,I STORE ADDRESS OF STA CHKLU LU IN EXEC CALL. ISZ TTY? SET RETURN ADDRESS. JSB IFTTY CALL IFTTY TO DETERMINE STATUS. DEF *+2 CHKLU DEF *-* INA CHANGE IFTTY'S -1 TO 0. LDB A MOVE TO B-REG. LDA CHKLU,I A-REG := LU NUMBER. JMP TTY?,I RETURN. SPC 1 * CALCULATE SLAVE LIST HEADER ADDRESS, --> SRT * CALC NOP ADB D5 --> STREAM WORD LDB B,I GET STREAM WORD ADB D2 COMPUTE ADB #LDEF LIST HEADER LDB B,I ADDRESS JMP CALC,I SKP *---------------------------------------------------------------+ * DS/1000 SHUTDOWN CODE | *---------------------------------------------------------------+ IFZ * OPTION 2 IS ENTERED WHEN SYSTEM IS ALREADY INITIALIZED. * OPTN2 EQU * JSB PRINT DEF SHMES "SHUTDOWN?" JSB READ CPB YE JMP SHUTD JMP TERM SHUTDOWN NOT WANTED, TERMINATE * SPC 3 $1 EQU 1 $7 EQU 7 * SYSTEM SHUTDOWN ROUTINE (RELEASE ALL NETWORK-RELATED RESOURCES) * SHUTD EQU * JSB PRINT DEF SDHED "SYSTEM SHUTDOWN" LDA #BUSY CONVERT # ACTIVE TCBS TO ASCII JSB DECML DEF SHT.1 JSB PRINT DEF SHTM1 * * COUNT NUMBER OF ACTIVE REMOTE SESSIONS, SCANNING THE * PROCESS NUMBER LIST (CONTAINS REMOTE RTE & REMOTE MPE SESSIONS) * CLA INITIALIZE # OF STA TEMP ENTRIES COUNTER LDB #PNLH GET ADDRESS OF PROCESS # LIST SHUT. EQU * START OF PNL-COUNTING LOOP SZB,RSS END OF LIST? JMP SHUT0 YES DSNR7 LDA B,I (XLA B,I IF IN DMS) NOP (RESERVED FOR XLA INSTR. IF DMS) ISZ TEMP BUMP COUNTER STA B JMP SHUT. CONTINUE IN LOOP * SHUT0 EQU * LDA TEMP CONVERT # SESSIONS TO ASCII JSB DECML DEF SHT.2 JSB PRINT DEF SHTM2 * * NOW WE'VE PRINTED THE NUMBER OF ACTIVE TCBS AND * SESSIONS, SO GIVE THE GUY A CHANCE TO BACK OUT * IF SHUTDOWN WOULD CAUSE ANY OF THE LOCAL SYSTEM * USERS ANY INTERFERENCE. THIS SAME TEST VERIFIES * THAT THIS PERSON HAS AUTHORITY TO SHUT THE SYSTEM * DOWN. * JSB NMSCX OBTAIN & VERIFY NM SECURITY CODE * (RETURN ONLY IF CODES MATCH) JSB PRINT "BEGINNING SHUTDOWN" DEF SBEGN * JSB PGMAD IF GRPM IS NOT ACTIVE DEF *+2 IGNORE SENDING MESSAGES DEF GRPM.+2 CPB D3 WAITING? RSS . YES OK JMP SHUT4 . NO, IGNORE COMMUNICATIONS * * CHECK FOR SLAVE PROGRAM-TO-PROGRAM COMMUNICATION ACTIVITY LDA #ST04+1 GET "PTOPM" CLASS NUMBER SZA,RSS ACTIVE? JMP SHUT2 NO. * * ISSUE "SO" TO PTOPM, SO AS TO ABORT ALL SLAVES CURRENTLY * ACTIVE. * CLA PLACE A ZERO IN PROGRAM NAME STA #RQB+#PCB PORTION OF REQUEST, MEANING STA #RQB+#PCB+1 "ABORT ALL SLAVES " STA #RQB+#PCB+2 LDA D6 STA #RQB+#FCD SAVE PTOP FUNCTION CODE LDA B4 STA #RQB+#STR SET STREAM TYPE (4) LDA #NODE LOCAL NODE # STA #RQB+#DST SET REQST DESTINATION NODE JSB #MAST SEND REQUEST (NO DATA) DEF *+7 DEF BIT15 NO ABORT DEF L#PCB SIZE OF REQUEST DEF ZERO DEF ZERO NO DATA ASSOCIATED WITH REQST DEF ZERO NO REPLY DATA DEF L#PCB MAX REPLY LENGTH NOP #MAST DETECTED ERROR (IGNORE) SPC 2 SHUT2 EQU * * CHECK FOR SLAVE REMOTE DATA BASE ACCESS COMMUNICATION ACTIVITY. LDA #ST10+1 GET "RDBAM" CLASS NUMBER SZA,RSS ACTIVE? JMP SHUT3 NO. * * ISSUE A CLEAN-UP REQUEST TO RDBAM, SO AS TO ABORT ALL REMOTE * DATA BASE ACCESS PROGRAMS CURRENTLY ACTIVE. * CCA PLACE A -1 IN RDBA INDEX STA #RQB+#EHD+1 AND MODE WORDS OF REQUEST, STA #RQB+#EHD+2 MEANING "ABORT ALL ACTIVE RDBA SLAVES". LDA D10 SET STREAM TYPE (10). STA #RQB+#STR LDA #NODE LOCAL NODE NUMBER, STA #RQB+#DST SET REQUEST DESTINATION NODE. * JSB #MAST SEND REQUEST (NO DATA) DEF *+7 DEF BIT15 NO ABORT DEF C#FCD SIZE OF REQUEST DEF ZERO NO DATA ASSOCIATED WITH REQUEST DEF ZERO DEF ZERO NO REPLY DATA DEF D7 MAX REPLY LENGTH NOP #MAST DETECTED ERROR (IGNORE). SPC 2 SHUT3 EQU * JSB RNRQ LOCK THE QUIESCENCE RN TO DEF *+4 PREVENT NEW REQUESTS FROM DEF GLOCK BEING RECEIVED FROM REMOTE NODES, OR DEF #QRN DEF TEMP1 ISSUED BY LOCAL MASTERS. * SHUT4 EQU * CCA LOG OFF ANY REMOTELY CREATED LOCAL JSB #DISM SESSIONS CLA STA ONTWO CLEAR THE "OPTION 1/2" FLAG STA #NULL SET # AVAILABLE TCBS TO ZERO * CLA,INA STA UPLI. INDICATE PROGRAM SCHEDULED LDB SRT,I --> UPLIN' SRT ENTRY JSB SNUFF KILL UPLIN * * SEND TIME-OUT INDICATION TO ALL MASTERS CURRENTLY WAITING * FOR REPLIES. * LDB #MRTH ADDR OF LIST HEADER CKMST EQU * SZB,RSS END OF LIST? JMP SHUT5 YES. DSNR4 LDA B,I (CROSS) LOAD ADDR OF NEXT TCB NOP [RESERVED FOR XLA] STA LSTAD SAVE NEXT TCB ADDRESS ADB =LSEQ# ADVANCE POINTER TO SEQUENCE NUMBER DSNR9 LDA B,I LOAD(CROSS-LOAD) SEQUENCE NUMBER NOP (NECESSARY FOR XLA, IF IN DMS) STA TEMP SAVE SEQUENCE NUMBER, BRIEFLY. ADB =LMSCLS-SEQ# ADVANCE POINTER TO SEQUENCE NUMBER DSNR5 LDA B,I (CROSS) LOAD CLASS NUMBER NOP [RESERVED FOR XLA] STA CLASN STORE JSB EXEC WRITE ZERO-LENGTH RECORD INTO CLASS DEF *+8 (FORCES DS05 ERROR TO BE RETURNED TO DEF CLS18 USER) DEF ZERO DEF ZERO DEF ZERO DEF ZERO DEF ZERO DEF CLASN MASTER CLASS # NOP IGNORE ERRORS LDB LSTAD RECOVER NEXT TCB ADDRESS JMP CKMST GO CHECK FOR ANOTHER MASTER SPC 2 * SET UP TO CALL "ABRT" SUBROUTINE, WHICH WILL RELEASE REMAINING * RESOURCES SHUT5 EQU * SETUP DATA FOR ABORT ROUTINE LDA #SCLR DATA AREA LDB LSBFA DATA AREA JSB .MVW MOVE VARIABLES TO LOCAL AREA DEF MVSIZ NOP CLA STA #GRPM INDICATE GRPM NO LONGER AVAILABLE *-- SCAN THRU SLAVE LIST AND CHECK SLAVES JSB .LDX --> 1ST MONITOR'S SRT DEF @MON,I LDA #LDEF ADA D3 LDA A,I JSB .CAY --> 1ST SLAVE HEADER LDB MNMON -( # OF MONITORS ) SHUT6 JSB .LAY GET CLASS WORD FROM SLAVE LIST DEF $1 SZA,RSS IGNORE IF NOT PRESENT JMP SHUT7 JSB .SAX SAVE CLASS # IN SRT DEF $7 LDA D3 JSB .SAX INDICATE PROGRAM AND CLASS DEF 0 SHUT7 JSB .ADX --> NEXT SRT ENTRY DEF D8 JSB .ADY --> NEXT SLAVE HEADER DEF D5 ISZ B JMP SHUT6 *-- SETUP FLAGS FOR ABORT ROUTINE LDA D2 CLASS ONLY STA MA2. STA EX1. STA EX2. LDA D3 PROGRAM & CLASS STA QXCL. STA RQCV. STA RPCV. STA GRPM. STA RTRY. STA QCLM. STA INCV. STA OTCV. STA RSM. INA RN ONLY STA TBRN. STA QRN. STA CLRN. INA PROGRAM & RN STA QZRN. STA MA1. * JSB ABRT ABORT ALL PGM/RN/CLASS RESOURCES * JSB PRINT "SHUTDOWN COMPLETE" DEF SHTMS JMP TERM SPC 2 SHTMS DEF *+2 DEF D9 ASC 9,SHUTDOWN COMPLETED * DEFINE REQUEST/REPLY BUFFER FORMAT SPC 4 *---------------------------------------------------------------+ * SHUTDOWN CONSTANTS | *---------------------------------------------------------------+ SPC 1 YE ASC 1,YE CLASN NOP LSTAD NOP SHTM1 DEF *+2 DEF D11 ASC 8,# ACTIVE TCBS = SHT.1 BSS 3 STORAGE FOR # ACTIVE TCBS COUNT(IN ASCII) SHTM2 DEF *+2 DEF D14 ASC 11,# OF REMOTE SESSIONS: SHT.2 BSS 3 STORAGE FOR # REMOTE SESSIONS SDHED DEF *+2 DEF D8 ASC 8,SYSTEM SHUTDOWN SBEGN DEF *+2 DEF D9 ASC 9,BEGINNING SHUTDOWN XIF SKP *---------------------------------------------------------------+ * ABORT ROUTINE. "KILLS" ALL PROGRAMS THAT WERE SCHEDULED, | * DEALLOCATE CLASS NUMBER AND RESOURCE NUMBERS, AND CLEARS | * ALL LU'S. | *---------------------------------------------------------------+ * ABORT EQU * JSB ABRT CALL SUBROUTINE LDA LINE# WAS INPUT FROM SZA,RSS A FILE? JMP *+5 NO. * CONVERT LINE NUMBER TO ASCII & PRINT, AS * A TROUBLESHOOTING AID TO USER. JSB DECML DEF .LIN. JSB PRINT DEF .LINX * JSB PRINT PRINT "DINIT ABORTED" @ABPR DEF ABRTM LDA @ABPR RETURN ERROR TO 'FATHER' PRGM STA $RTRN JMP TERM SPC 2 ABRT NOP SUBROUTINE TO ABORT EVERYTHING LDA ONTWO OPTION 1 OR 2 SZA JMP ABRT4 OPTION 2 * CPA #FWAM IF SAM HAS NOT BEEN ALLOCATED, JMP ABRT4 THEN GOTO COMPLETION. * LDB SRT,I --> UPLIN ENTRY JSB SNUFF "KILL" UPLIN * * * TURN OFF "LISTEN MODE" FOR EACH COMMUNICATION DRIVER * DLD #NCNT SET UP NRV SCAN LOOP SZA,RSS NRV? JMP ABRT2 NO. DST NRV1 ADB XMTL. ADVANCE POINTER TO TRANSMISSON LU WRD * GET TRANSMISSION LU DSNR8 LDA B,I (XLA B,I IN DMS) NOP (PART OF XLA INSTR. ABOVE IF IN DMS) AND XMASK MASK LU IOR BIT15 STA LU1 SAVE FIRST HALF OF DOUBLE-WORD LU LDA CLSTN CLEAR "DINIT MODE" SUB-FUNCTION STA LU2 SAVE 2ND HALF OF DOUBLE-WORD LU STB PRINT SAVE (B) JSB XLUEX ISSUE "CLEAR LISTEN MODE" CALL TO DRIVER DEF *+3 DEF NBRT3 NO-ABORT, CODE 3 DEF LU1 NOP LDB PRINT RECOVER (B) ADB NRVS. ADVANCE TO NEXT NRV ENTRY ISZ NRV1 BUMP COUNTER. DONE? JMP DSNR8 NOT YET DONE * JSB #RR5 DISABLE LUS IN LV TABLE * LDA D2 DE-ALLOCATE JSB #DISM RSM RESOURCES * ABRT2 EQU * LDA SRTLN KILL ALL RESOURCES CMA,INA STA MCTR LDA SRT STA MPTR ABRT3 LDB MPTR,I ISZ MPTR JSB SNUFF KILL ALL RESOURCES FOR THIS ENTRY ISZ MCTR JMP ABRT3 REPEAT TILL DONE JSB #RSAX GO TO THE SYSTEM-RESOURCE DEF *+4 CONTROL-ROUTINE, IN ORDER TO DEF B1 RETURN SYSTEM AVAILABLE MEMORY, DEF #FWAM WHICH WAS PREVIOUSLY ALLOCATED. DEF LSECD CLA CLEAR #FWAM FLAG STA #FWAM JSB CLEAR GO TO CLEAR SYSTEM DATA AREA IN . * ABRT4 EQU * JMP ABRT,I RETURN TO CALLER * CLSTN OCT 3100 SUBFUNCTION BITS FOR "CLEAR LISTEN MODE" CALL TO DRIVER XMASK EQU B377 TRANSMISSION LU FIELD MASK SPC 3 XMTL. EQU B2 NBRT3 OCT 100003 NO-ABORT CONTROL CONTROL * * ROUTINE TO CLEAR 'DINIT'-INITIALIZED ENTRIES IN . SPC 1 CLEAR NOP ENTRY/EXIT LDA #NCLR INITIALIZE A COUNTER FOR THE STA TEMP SIZE OF THE AREA TO BE CLEARED. LDB #SCLR GET A POINTER TO THE START OF THE AREA. CLA * CLEAR THE "ALIEN MESSAGE FORMAT NODES" FLAG, INDICATING * THERE ARE NONE. STA MSCFL CLOOP STA B,I CLEAR THE INB 'DINIT'-INITIALIZED ISZ TEMP STORAGE LOCATIONS JMP CLOOP IN 'RES'. JMP CLEAR,I RETURN SKP *---------------------------------------------------------------+ * ROUTINE TO "KILL" A PROGRAM OR CLASS OR RN | * | * ON ENTRY --> SRT ENTRY | * NOTE: HAVING A CLASS# AND AN RN ARE MUTUALLY EXCLUSIVE | *---------------------------------------------------------------+ * SNUFF NOP RBL,CLE,SLB,ERB RESOLVE INDIRECT ADDRESS LDB B,I INTO DIRECT ADDRESS STB SNUF5 --> SRT ENTRY LDA B,I CHECK FLAGS SLA,RSS WAS PROGRAM SCHEDULED? JMP SNUF1 . NO LDA B ADA D2 --> PROGRAM NAME LDB @OFF --> WHERE TO PUT IT ADB D2 JSB .MVW DEF D3 NOP LDA @OFF LDB @BUF JSB .MVW MOVE MESSAGE TO BUFFER DEF D7 NOP JSB MESSS "OFF,PGMNM ,FL" DEF *+4 @BUF DEF BUF DEF D13 DEF ZERO NO PRINTED MESSAGE * SNUF1 LDA SNUF5 INA LDA A,I --> CLASS OR RN STA SNUF3 STA SNUF4 LDA SNUF5,I CHECK FLAGS RAR SLA,RSS CLASS # ASSIGNED? JMP SNUF2 . NO * JSB CLRQ DEALLOCATE CLASS # DEF *+4 DEF CLCLS SNUF3 DEF *-* DEF ZERO NOP CLA STA SNUF3,I CLEAR OUT CLASS # JMP SNUF6 * CLCLS OCT 140002 DEALLOCATE CLASS, NO WAIT, NO ABORT * SNUF2 RAR SLA,RSS RN ASSIGNED? JMP SNUF6 . NO JSB RNRQ DEALLOCATE RN DEF *+4 DEF DALC SNUF4 DEF *-* DEF PRINT (DUMMY) NOP * SNUF6 EQU * LDA SNUF5,I LDB A AND =B140000 CLEAR RESOURCE FLAGS STA SNUF5,I RBL SSB,RSS SLAVE MONITOR? JMP SNUFF,I . NO RETURN LDB SNUF5 --> SRT JSB CALC CALCULATE LIST HEADER ADDRESS LDA @ZERO JSB .MVW MOVE ZEROS INTO SLAVE HEADER DEF D5 NOP JMP SNUFF,I AND RETURN * DALC OCT 140040 GLOBAL DEALLOCATE SNUF5 BSS 1 @ZERO DEF *+1 OCT 0,0,0,0,0 @OFF DEF *+1 ASC 7,OFF,XXXXX ,FL BUF BSS 6 SKP *---------------------------------------------------------------+ * DINIT MESSAGES | *---------------------------------------------------------------+ QWMSG DEF *+2 DEF D26 ASC 26, WARNING! XXXXX IS A REQUIRED PROCESSOR FOR DS/1000! MUCHO DEF *+2 DEF D15 ASC 15,SIZE OF SAM AREA EXCEEDS 32K! D3MS1 DEF *+2 DEF D7 ASC 7,LU OF HP3000?_ D3MS4 DEF *+2 DEF D10 ASC 10,LOCAL ID SEQUENCE? _ D3MS5 DEF *+2 DEF D10 ASC 10,REMOTE ID SEQUENCE?_ MSG0 DEF *+2 DEF D12 ASC 12,# ACTIVE TRANSACTIONS? _ IVRES DEF *+2 DEF D9 ASC 9,INVALID RESPONSE! NOMEM DEF *+2 DEF D9 ASC 9,NO SYSTEM MEMORY! MSG4 DEF *+2 DEF D16 ASC 16,MAX # CONCURRENT HP3000 USERS? _ * MONMS DEF *+2 DEF D7 ASC 7,MONITOR NAME?_ INVNM DEF *+2 DEF D7 ASC 7,INVALID NAME! LOC? DEF *+2 DEF D6 ASC 6,LOCAL CPU#?_ * NUMB? DEF *+2 DEF D6 ASC 6,# OF NODES?_ * NODEF DEF *+3 DEF *+1 DEC 32 ASC 26, CPU#,LU,TIMEOUT,UPGRADE LEVEL,"N","MA",MA TIMEOUT? OCT 6412 ASC 5, _ * MSG1 DEF *+2 DEF D16 ASC 16,SYSTEMS CONNECTED TO THIS NODE: _ .... * MSG2 DEF *+2 DEF D5 ASC 5, HP 1000?_ .... ERR1 DEF *+2 DEF D9 ASC 9,ANSWER YES OR NO! FERMG DEF *+2 DEF D5 ASC 5,FILE ERROR * RNERM DEF *+2 DEF B5 ASC 1, R "N ASC 1,N ASC 3,ERROR " RN ERROR" * * TRFM DEF *+2 DEF D7 ASC 7,TR FILE ERROR * FILMG DEF *+2 DEF D5 ASC 5,# FILES? _ ... * READM DEF *+2 DEF D5 ASC 5,READ ERROR * ABRTM DEF *+2 DEF D7 ASC 7,DINIT ABORTED! * CLSER DEF *+2 DEF D8 ASC 8,CLASS I/O ERROR * NOCL. DEF *+2 DEF D6 ASC 6,NO CLASS #S * ENDMG DEF *+2 DEF B5 ASC 5,END DINIT * UPLUM DEF *+2 DEF D10 ASC 10,ENABLE LU#[,COST]? _ ... * SHMES DEF *+2 DEF D6 ASC 6, SHUTDOWN? _ * NOSZR DEF *+2 DEF D9 ASC 9,NODE SPEC. ERROR! MNAY DEF *+2 DEF D16 ASC 16,THIS LU ALREADY HAS A NEIGHBOR! LUERM DEF *+2 DEF B4 ASC 4,LU ERROR TOBAD DEF *+2 DEF D8 ASC 8,INVALID TIMEOUT! INLVL DEF *+2 DEF D11 ASC 11,INVALID UPGRADE LEVEL! * IFN .NINZ DEF *+2 DEF D12 ASC 12,NODE ALREADY INITIALIZED XIF * .LINX DEF *+2 DEF D11 ASC 8,ERROR IN LINE # .LIN. ASC 3, * CNERR DEF *+2 DEF D12 ASC 9,INIT FAILED ON LU CNER. BSS 3 * * BSS 0 << SIZE OF 'DINIT' >> SPC 1 * * DEFINE INTERNAL SYMBOLS FOR USE BY "OPTIONAL" EXTERNAL ROUTINES * #PRNT EQU PRINT #READ EQU READ #PRSB EQU PARSB #INBF EQU INBUF #PRNL EQU PRNTL #EXFR EQU QUERY #CLSB EQU CLSUB #ABRT EQU ABORT #SYSR EQU SYSER #MSKD EQU SCHED #RNSB EQU RNSUB END DINIT