ASMB,Q,R,C HED DS/1000 MAINTENANCE PROGRAM REV 2013 NAM DSMOD,19,26 91750-16092 REV 2013 800707 ALL SPC 1 * * NAME: DSMOD * SOURCE: 91750-18192 * RELOC.: 91750-16192 * PGMR: L. WEIMAN * * *************************************************************** * * (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. * * *************************************************************** SPC 2 * 'DSMOD' MAY BE USED TO PERFORM A VARIETY OF NETWORK TABLE AND * PARAMETER MODIFICATION FUNCTIONS. IT CONTAINS THE FOLLOWING CAPABILITIES: * * 1) RE-ENABLE A LINK * 2) DISPLAY THE NETWORK ROUTING VECTOR, AT LOCAL NODE * 3) CHANGE THE LOCAL NODE'S NRV * 4) QUIESCE NODE * 5) (UN)-QUIESCE NODE * 6) SCHEDULE ADDITIONAL MONITORS * 7) ADJUST TIMNG PARAMETERS * * * 'DSMOD' MAY NOT BE RUN UNTIL AFTER THE NODE HAS BEEN INITIALIZED * (VIA 'DINIT'). SPC 2 * +----------------------------------------------------------------+ * * !SCHEDULING TO ENABLE A LINE: ! * +--------------------------------------------------------------+ * * *ON,DSMOD,(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# OR FILE),(ERROR LU#) * / * *ON,DSMOD, * \ * FI,LE,NM [,SECURITY CODE [,CARTRIDGE NUMBER] ] * * 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. * * +-------------------------------------------------------------------+ * ! QUERIES AND VALID RESPONSES: ! * +-------------------------------------------------------------------+ * * NOTES: ANY LINE WHICH BEGINS WITH AN ASTERISK IS TREATED AS A COMMENT. * /A (ABORT ) IS A VALID RESPONSE TO ALL QUERIES. * * **** ACCEPTABLE RESPONSES--NON-QUIESCENT SYSTEM **** * * -------------- TO RE-ENABLE A LINE ----------------- * * /DSMOD: OPERATION? * (REPEAT FOR AS MANY AS DESIRED) * /DSMOD: ENABLE LU# ? * * ---------------- TO DISPLAY THE NODAL ROUTING VECTOR -------- * * /DSMOD: OPERATION? LOAD-NODE= NNNNN (OR "NONE") [DISPLAYED FOR RTE-M & -L ONLY] * * --------------- TO ADJUST SYSTEM TIMING -------------------- * /DSMOD: OPERATION? * [ RESOLUTION = 5 SECONDS ] (DEFAULT VALUE = 45) * * /DSMOD: SLAVE T/O [5 TO 1275 SECONDS] ? <5 TO 1275 (NUMERIC RESPONSE)> * [ RESOLUTION = 5 SECONDS ] (DEFAULT VALUE = 30) * * /DSMOD: REMOTE-BUSY RETRIES [1 TO 10]? <1 TO 10(NUMERIC)> * (DEFAULT VALUE =3) * * /DSMOD: REMOTE-QUIET WAIT [0 TO 7200 SEC.]? <0 TO 7200 (NUMERIC)> * (DEFAULT VALUE =0) * /DSMOD: MAXIMUM HOP COUNT? * (ENTER ANY POSITIVE NUMBER) * * ---------------- TO TEMPORARILY SUSPEND NETWORK TRANSACTIONS ----- * (I.E., "QUIESCE" THE NODE) * * /DSMOD: OPERATION? PRINTS "SYSTEM IS QUIESCENT" ON LU#1. * * --------- TO SCHEDULE ADDITIONAL MONITORS ------- * * /DSMOD: OPERATION? * /DSMOD: MONITOR NAME? * /DSMOD: OPERATION? * END DSMOD (TERMINATION MESSAGE) * * --------- TO CHANGE THE NRV ----------------- * /DSMOD: OPERATION? CN * /DSMOD: NETWORK MANAGEMENT SECURITY CODE? * THE NETWORK MANAGEMENT SECURITY CODE MUST BE ENTERED CORRECTLY, * OR 'DSMOD' WILL ABORT. IF A NON-ASCII CODE IS ENTERED, THE * QUESTION WILL BE REPEATED. THE CODE IS NOT ECHOED TO THE TERMINAL, * FOR SECURITY REASONS. * /DSMOD:NODE # TO CHANGE? ENTER NODE NUMBER. MUST ALREADY * EXIST IN NRV. * * THE CURRENT NRV ENTRY FOR THAT NODE IS PRINTED. YOU * MAY CHANGE ANY OR ALL FIELDS, EXCEPT CPU NUMBER. SIMPLY DEFAULT * A FIELD IF YOU WISH IT TO RETAIN THE SAME VALUE. * THE QUESTION WILL BE REPEATED UNTIL YOU ENTER "/E" TO EXIT * (OR NON-NUMERIC VALUE). * * /DSMOD: LU,TIMEOUT,UPGRADE LEVEL[,N]? * * THE "N" AT THE END IS REQUIRED WHEN THE ENTRY IS A NEIGHBOR TO * THE LOCAL NODE, AND MUST BE CORRECT, OR "NEIGHBOR ADDRESSING" * CANNOT BE USED. * * AFTER EACH ENTRY HAS BEEN MADE, THE NEW VALUES ARE * PRINTED. SKP * --------------- TO LIST ALL COMMANDS ------------------------ * * /DSMOD: OPERATION? * /DSMOD: QUIESCENT RE-START * /DSMOD: NETWORK MANAGEMENT SECURITY CODE? * THE NETWORK MANAGEMENT SECURITY CODE MUST BE ENTERED CORRECTLY, * OR 'DSMOD' WILL ABORT. IF A NON-ASCII CODE IS ENTERED, THE * QUESTION WILL BE REPEATED. SKP * * ERROR MESSAGES--INTERPRETATION AND APPROPRIATE ACTION: * ----------------------------------------------------- * * [ ALL MESSAGES ARE PRECEDED BY "/DSMOD:"] 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 DSMOD - 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) * * DSMOD ABORTED - /A COMMAND ENTERED, OR IRRECOVERABLE ERROR OCCURRED. * EXPLANATION WILL HAVE BEEN PRINTED PRIOR TO THIS * MESSAGE. IF INPUT FROM A FILE, LINE # OF LAST ERROR * ALSO PRINTED. * * LU ERROR - IMPROPER LU# SPECIFIED, OR LU# NOT TIED TO COMMUNICATION * LINK DRIVER. RETRY. * * NODE SPEC. ERROR - IMPROPER NODAL REFERENCE VALUE. ABORTED! * CORRECT INITIALIZATION ANSWERS AND RESTART . * THIS MESSAGE OCCURS WHEN CHANGING THE NRV IF * THE NRV TABLE IS EMPTY, OR IF THE SPECIFIED NODE * NUMBER CANNOT BE LOCATED IN THE TABLE, OR IF * THE NEW NODE NUMBER ALREADY EXISTS IN THE TABLE. * * 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 . * * NO MSG.CNVRTS! --MAY OCCUR WHEN CHANGING THE NRV, IF AN ENTRY IS MADE * FOR A NODE WHICH DOES NOT SPECIFY THE SAME LEVEL * NUMBER AS THE LOCAL NODE, AND THE MESSAGE CONVERTERS * WERE NOT SCHEDULED WHEN THE NODE WAS INITIALIZED. SPC 2 EXT READF,CLOSE,OPEN,RNRQ,PRTN,REIO,PGMAD,IFTTY EXT EXEC,MESSS,$LIBR,$LIBX,$BMON,#PKUP,PARSE EXT CLRQ,XLUEX,D$LID,D$RID EXT #INCV,#OTCV,#MSTO,#QRN,#LDEF,#GTOP,$OPSY EXT #BREJ,#SVTO,#WAIT,#NODE,#NRV,#NCNT EXT #RFSZ,#BUSY,#MAQS,#RR4,#RR5,#RR6 EXT #LNOD,#LEVL,#MDCT EXT #FWAM,#MHCT,#LU3K,EXEC EXT .MVW,.MBT,.SBT EXT .LDX,.CMW,#NMSC SPC 2 * DEFINE ENTRY POINTS FOR REMOTE SESSION SET-UP ROUTINES ENT PRNT#,READ#,INBF#,PRNL#,ERFR#,EXFR#,ABRT# * EXT #DSSM SUP SKP DSMOD 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 * * SET "OPTYP" ACCORDING TO LOCAL NODE OP-SYSTEM TYPE. * RELEVENT BITS: * BIT 15 = 1 IF DMS NODE, ELSE 0 * BIT 0 = 1 IF RTE-III OR IV. 0 FOR RTE-M OR L 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, DLD XLBAI DST DSMD0 DST DSMD1 DST DSMD2 DLD MWII DST STNOP DLD MWFI PICK UP MWF INSTRUC DST STND2 * PICK UP READ LU NODMS EQU * CLB INITIALIZE EQUIPMENT TYPE CODE STB ERFLG CLEAR ERROR FLAG STB TYPEQ TO INDICATE AN INTERACTIVE DEVICE. STB CLFLG CLEAR CLASS I/O FLAG. * LDA NAME GET THE INPUT LU--IF ANY. LDB DEFLU IF LU NOT SUPPLIED, USE DEFAULT. SZA SUPPLIED? LDB A YES, USE SUPPLIED VALUE AND =B37400 MASK OFF LOW ORDER BITS SZA TEST FOR LU OR FILE: CLB FILE...CLEAR FILE FLAG STB RLU SAVE READ LU OR 0 (FILE). STB XLU AND SAVE PURE LU SZB,RSS LU OR FILE? JMP LSTN1 FILE * JSB TTY? CHECK DEF RLU READ LU. SZB,RSS TTY? IOR B400 YES...SET IN ECHO BIT 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 * LDA #FWAM HAS THIS NODE SZA BEEN INITIALZED? JMP *+3 YES, CONTINUE JSB SYSER NO--CATASTROPHIC ERROR. DEF NINIT "NODE NOT INITIALIZED" & ABORT * JSB TTY? CHECK DEF ERLU ERROR LU. SZB INTERACTIVE? SDFLU LDA DEFLU NO...SET TO DEFAULT. IOR B400 STA ERLU * JSB CHCKN SEE IF FILE JMP OPTN2 NOT FILE * LDA NAME WAS 1ST PARAMETER SSA NEGATIVE? JMP CLASS YES--GO SET UP TO GET SPECIAL "CLASS FILE" * JSB OPENX OPEN THE FILE JMP *+2 OPEN ERROR! JMP OPT20 OPEN WAS SUCCESSFUL. * JSB SYSER SYSTEM ERROR DEF TRFM "TR FILE ERROR" SKP * 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 * * A SPECIAL "CLASS FILE" OPTION HAS BEEN BUILT IN, TO ALLOW * AUTOMATIC INITIALIZATION IN NODES WITH NO RESIDENT DISC. * THE INITIALIZATION COMMANDS ARE PASSED TO DINIT VIA A CLASS * BUFFER, AND A DUMMY DCB IS SET UP TO LOOK LIKE IT'S BEEN * READ FROM A DISC, I.E., "FAKED" SO READF WILL TRANSFER * EACH RESPONSE TO DINIT AS READ. * 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 OPT20 CONTINUE WITH NORMAL PROCESSING. SKP OPTN2 JSB CHCKN SEE IF THEY WANT TO READ FROM A FILE JMP *+2 NO...IT'S AN LU. JMP OPT20 YES CPB #LU3K IS IT THE HP3000 LU? JMP OPT23 .YES CPA B65 IS IT DVA65? JMP OPT22 YES CPA B66 DVA66? JMP OPT22 SKP * HERE TO OBTAIN NEXT NEW COMMAND * OPT20 EQU * JSB READ GET THE RESPONSE. DEF OPMES CPB /E REQUEST TO TERMINATE? JMP TERM YES. GO TO OBLIGE. CPB "EX" JMP TERM CPB /S REQUEST TO SCHEDULE MONITOR(S)? JMP SKEDM YES. GO TO SET UP TO SCHEDULE. CPB /T REQUEST TO MODIFY TIMING? JMP TIME YES. CPB /N REQUEST TO DISPLAY NRV? JMP DSNRV YES. SATISY THE REQUEST. CPB /I JMP IDSEQ CPB CN CHANGE NRV? JMP CHNRV YES. CPB /P CHANGE NON-SESSION ACCESS PASSWORD? JMP CUPSW YES CPB /U CHANGE DEFAULT SESSION USER-NAME? JMP CUSNM YES 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 IS 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. QCHNG CPB /R REQUEST TO RE-START FROM QUIESCENCE? JMP REQUE YES. GO TO START IT UP AGAIN. JSB PRNTX EXPLAIN THE COMMANDS DEF EXPMS TO THE CONFUSED USER. JMP OPT20 REPEAT THE QUESTION. SKP * HERE ON "CHANGE NRV" COMMAND (CN) * CHNRV EQU * JSB NMSCX OBTAIN & VERIFY NETWORK MANAGEMENT SECURITY CODE * (RETURN ONLY IF CODES MATCH) * CHN0 EQU * DLD #NCNT SET UP POINTERS, COUNTERS, ETC. SZA,RSS IS THERE AN NRV SET UP? JMP FRMER NO, ERROR! STA NCNT STB NPNT CMA,INA SAVE STA NRVSZ POSITIVE # NODES LDA #NODE SAVE LOCAL NODE STA XNODE NUMBER IN LOCAL STORAGE * JSB READ GET RESPONSE DEF NODEX CPA B1 NUMERIC? RSS YES, GO ON... JMP OPT20 NON-NUMERIC, GO GET NEW COMMAND. SPC 2 CHN1 EQU * STB NRV1 SAVE NODE # WE'RE SEARCHING FOR LDB NPNT BEGIN SEARCH OF NRV FOR SPECIFIED NODE DSMD0 LDA B,I [XLA B,I IF DMS] NOP [REQUIRED FOR XLA] CPA NRV1 MATCH? JMP CHN2 YES, ALLOW IT TO BE CHANGED ADB NRVS. NO, ADVANCE TO NEXT ENTRY STB NPNT SAVE POINTER ISZ NCNT ANY MORE IN TABLE? JMP DSMD0 YES, CONTINUE SEARCH JMP FRMER TABLE EMPTY, NODE NOT FOUND! SPC 2 CHN2 EQU * JSB PRNRV PRINT THIS NRV ENTRY JSB READ GET RESPONSE. DEF NODEF * SZA,RSS LU DEFAULTED? JMP STND. YES, SKIP TESTS FOR IT. CPA B2 ASCII? JMP FRMER YES, ERROR! LDA PARSB+1 AND =B177400 LU > 255? SZA JMP FRMER YES, ERROR! LDA PARSB+1 RECOVER LU STA TEMP SAVE LU LDA NRV3 INCLUDE REMAINING BITS FROM 3RD NRV WORD AND =B177400 IOR TEMP STA NRV3 * * STND. EQU * LDB PARSB+4 GET TIMEOUT SPECIFICATION TYPE. CPB B2 IF THE PARAMETER IS INVALID, JMP FRMER THEN SCREAM ABOUT IT! LDA PARSB+5 GET TIME-OUT SPECIFICATION SZB,RSS DEFAULTED? JMP MSGFM YES, LEAVE FIELD AS IS SSA T/O<0? JMP FRMER YES, ERROR SZA,RSS ZERO? JMP STND5 CMA,INA LDB A ADB D1275 SSB JMP FRMER JSB CFSEC ALF,ALF POSITION TO HIGH HALF-WORD * STND5 EQU * STA TEMP LDA NRV2 AND B377 IOR TEMP STA NRV2 * MSGFM EQU * HERE TO MERGE UPGRADE LEVEL NUMBER LDB PARSB+8 IS THIS NUMERIC, OR CPB B2 DEFAULTED? JMP FRMER NO, SCREAM ABOUT IT. LDA PARSB+9 GET UPGRADE LEVEL NUMBER SSA NEGATIVE? JMP FRMER YES, ERROR! AND B17 MASK SZB,RSS DEFAULTED? JMP STND6 YES, SKIP THIS BLOCK STA TEMP ADA NMXLV > MAX LEVEL? SSA,RSS JMP FRMER YES, THIS IS AN ERROR. * LDA NRV2 AND B177. IOR TEMP INCLUDE THE UPGRADE LEVEL NUMBER STA NRV2 * STND6 EQU * LDA PARSB+12 IS "NEIGHBOR" FIELD DEFAULTED? SZA,RSS JMP STND7 LDB PARSB+13 LOAD "NEIGHBOR" INDICATION, IF ANY LDA NRV3 LOAD LU WORD AND NOT8 CLEAR "NEIGHBOR" INDICATOR CPB "N "NEIGHBOR" ? IOR B400 YES, SET "NEIGHBOR" BIT STA NRV3 * STND7 EQU * JSB CKNRE CHECK THIS NRV ENTRY (RETURN ONLY IF OK) * LDA NRV2 GET LEVEL # AND B17 MASK LEVEL FIELD STA B LDA #LEVL GET LOCAL NODE'S LEVEL AND B17 MASK LEVEL FIELD CMA,INA ADA B SSA,RSS IS NEW ENTRY LEVEL < LOCAL? JMP STNX NO, WE DON'T NEED TO WORRY ABOUT CONVERTERS * * WHEN THE NEW NODE IS OF A LOWER LEVEL THAN THE LOCAL, * WE NEED TO CHECK WHETHER THE MESSAGE CONVERTERS ARE * SCHEDULED. IF NOT, THEN REJECT THE NEW ENTRY. * LDA #INCV CHECK CLASS NUMBER (THAT'S THE EASIEST WAY) SZA JMP STNY CLASS # ASSIGNED, CHECK FOR OTCNV'S CLASS * MESSAGE CONVERTERS NOT SCHEDULED. THAT'S A BAD ERROR! NCVTR EQU * JSB ERROR DEF NCVT. JMP CHN0 * STNY EQU * LDA #OTCV DOES OTCNV HAVE A CLASS #? SZA,RSS JMP NCVTR NO, GIVE ERROR! * STNX EQU * 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 * JSB PRNRV PRINT NEW NRV ENTRY FOR USER JMP CHN0 GO LOOK FOR ANOTHER NODE TO CHANGE * NRVSZ NOP # WORDS IN NRV NOT8 OCT 177377 NOT BIT 8 SPC 2 SKP * FRMER EQU * JSB ERROR DEF NOSZR NODE SPEC. ERROR * JMP OPT20 RETRY NRV SET-UP * LUERX JSB SYSER DEF LUERM * * * * * * * * 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. XNODE NOP LOCAL SAVE OF LOCAL NODE # * * NRV ENTRY TEMPLATE. DO NOT DISTURB ORDER! * NRV1 NOP STORAGE FOR CPU NUMBER NRV2 NOP STORAGE FOR TIME-OUT/UPGRADE LEVEL # NRV3 NOP STORAGE FOR COMMUNICATION LINK LU @NRV1 DEF NRV1 NMXLV DEC -2 - (MAXIMUM UPGRADE LEVEL ALLOWED + 1) SKP SKP * * SUBROUTINE TO CHECK VALIDITY OF AN NRV ENTRY * CKNRE NOP LDA NRV3 CHECK THAT LU SPECIFIED AND B377 MASK LU PART... SZA,RSS IS A BONA FIDE COMMUNICATION JMP *+4 LU JSB LUTST JMP LUERX ILLEGAL LU--TAKE ERROR EXIT. JMP LUERX IT'S NOT A GOOD LU! SCREAM ABOUT IT! LDB NRV1 LOAD CPU NUMBER LDA NRV3 IF THIS ENTRY IS FOR THE LOCAL NODE, CPB #NODE SET THE "NEIGHBOR" BIT. IOR B400 STA NRV3 LDA NRV2 LOAD UPGRADE LEVEL CPB #NODE SAME AS LOCAL NODE? LDA #LEVL YES, FORCE LOCAL NODE'S UPGRADE LEVEL STA NRV2 JMP CKNRE,I RETURN TO CALLER SKP * ROUTINE TO OPEN ANSWER FILE. * OPENX NOP * JSB OPEN OPEN THE 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? ISZ OPENX NO--RETURN VIA P+2. JMP OPENX,I RETURN. * SKP SKEDM EQU * =1 TO DISALLOW DEFAULT SCHEDULING. JSB MSET GO TO SCHEDULE MONITOR(S). JMP OPT20 RETURN TO CHECK FOR OTHER OPTIONS. * OPT21 JSB LUIN GO TO ENABLE THE LINE. JMP OPT20 CHECK FOR OTHER OPTIONS. * OPT22 STB NRV3 SAVE THE SPECIFIED LOGICAL UNIT NO. JSB LUSET GO TO SET UP THE LOGICAL UNIT NO. JMP OPT2E * RTE-DETECTED ERROR--TRY AGAIN! * JMP TERM DON'T ASK FOR MORE INPUT * OPT23 JSB EN3K RE-ENABLE HP3000 LINK JMP TERM AND TERMINATE * OPT2E JSB ERROR REPORT THE DEF LUERM " LU ERROR", JMP TERM AND TERMINATE. * GLCNW OCT 100006 GLOBAL LOCK/CLEAR--NO WAIT. CUSNM EQU * CHANGE DEFAULT SESSION USER-NAME CLA,RSS CALL #DSSM W/ (A) = 0 * CUPSW EQU * CHANGE PASSWORD CLA,INA CALL #DSSM W/ (A) = 1 JSB #DSSM CALL EXTERNAL ROUTINE FOR THIS SET-UP JMP OPT20 GET NEXT OPTION SKP * NRV DISPLAY ROUTINE. * DSNRV LDA #NCNT GET ADDRESS OF NO. OF NODES. STA NCNT SAVE THE NUMBER OF NODES. CMA,INA,SZA,RSS ANYTHING SPECIFIED? JMP OPT20 NO--IGNORE THE REQUEST! JSB CNVTD CONVERT + NODE COUNT TO ASCII DBL NNODS * LDA #NODE GET LOCAL NODE NUMBER. JSB CNVTD CONVERT IT TO ASCII, DBL LOCLN AND CONFIGURE THE MESSAGE. JSB PRNTX PRINT THE FIRST MESSAGE DEF NODM1 WITHOUT A HEADER. * LDA #NRV GET THE NRV ADDRESS, STA NPNT AND SAVE THE POINTER. * DLOOP EQU * JSB PRNRV PRINT THIS NRV ENTRY LDA NPNT UPDATE POINTER ADA NRVS. STA NPNT * ISZ NCNT ANY MORE TO PROCESS? JMP DLOOP YES, CONTINUE. SPC 1 LDA OPTYP GET THE SYSTEM SPECIFICATION. SLA FOR DISC-BASED RTE SYSTEMS, JMP OPT20 THE PROCESS IS COMPLETE. * LDA #LNOD GET THE DOWN-LOAD NODE NUMBER. CPA M1 IF IT HAS NOT BEEN USED, JMP PRAPM THEN IGNORE THE CONVERSION. JSB CNVTD CONVERT TO ASCII, DBL APNOD AND CONFIGURE THE MESSAGE. * PRAPM JSB PRNTX PRINT NODE NUMBER (OR "NONE"), DEF APMSG WITHOUT A HEADER. JMP OPT20 PROCESS COMPLETE--CHECK FOR NEW REQUEST. SKP * SUBROUTINE TO PRINT NEXT NRV ENTRY LINE * NPNT --> NEXT NRV ENTRY * PRNRV NOP * LDA NPNT MOVE ENTRY TO LOCAL STORAGE LDB @NRV1 JSB .LDX DEF NRVS. STND2 JSB .MVW (MWF IF IN DMS) DEF NRVS. NOP * LDA NRV1 GET A NODE NUMBER. CPA M1 BLANK ENTRY? JMP BLEN YES, PRINT "BLANK ENTRY" * JSB CNVTD CONVERT & CONFIGURE DBR NODEN * LDA NRV2 GET TIMEOUT/MSG FORMAT NUMBER AND B377 ISOLATE THE MSG. FORMAT # JSB CNVTD CONVERT DBL .LVL. & CONFIGURE. STB TEMP --> NEXT AVAILABLE BYTE * LDA NRV2 OBTAIN ALF,ALF TIME-OUT AND B377 VALUE SZA ZERO? IOR DM256 NO, SET ALL BITS IN UPPER BYTE CMA,INA MAKE THE VALUE POSITIVE (OR 0). MPY B5 CONVERT # INTERVALS TO # SECONDS JSB CNVTD CONVERT TO ASCII DBR NRVTO LDA NRV3 GET COMMUNICATION LU AND B377 MASK LU JSB CNVTD CONVERT AND CONFIGURE DBR VECTR ( RETURNS NEXT ADDRS) * LDB @SPC --> SPACES LDA NRV3 AND B400 IS THIS NODE SZA A NEIGHBOR OF OURS? LDB @.N. . YES --> ,(N) LDA 1 LDB TEMP --> NEXT AVAILABLE BYTE JSB .MBT MOVE IN SPACES OR NEIGHBOR INDICATION DEF D6 NOP JSB PRNTX PRINT NODAL ADDRESS DATA DEF NRVMS WITHOUT THE HEADER. JMP PRNRV,I RETURN TO CALLER * BLEN JSB PRNTX DEF BLEN1 JMP PRNRV,I RETURN TO CALLER * BLEN1 DEF *+2 DEF D8 BLNKS ASC 7, BLANK ENTRY OCT 6412 SPC 3 NODM1 DEF *+2 DEF NODMX ASC 10,NRV SPECIFICATIONS: OCT 6412 ASC 7, LOCAL NODE#: LOCLN ASC 3, ASC 8, NO. OF NODES = NNODS ASC 3, NODMX ABS *-NODM1-2 * NRVMS DEF *+2 DEF NODML ASC 3, NODE= NODEN ASC 3, ASC 2, LU= VECTR ASC 3, ASC 5, TO(SEC.)= NRVTO ASC 3, ASC 4, LEVEL= .LVL. ASC 5, UPGRADE LEVEL & NEIGHBOR INDICATION NODML ABS *-NRVMS-2 * APMSG DEF *+2 DEF D17 ASC 13, LAST LOAD-NODE= APNOD ASC 3,NONE OCT 6412 @.N. DBL *+1 ASC 3,,(N) * BT137 OCT 37700 SKP * CHANGE 3000 ID SEQUENCE * IDSEQ EQU * JSB READ GET THE RESPONSE DEF DSMS4 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 READ DEF DSMS5 LDA PRNTL CPB /E CLA LDB D$RID INB SKIP WORD FOR RETURN PARAM. JSB STRID JMP OPT20 * * DSMS4 DEF *+2 DEF D10 ASC 10,LOCAL ID SEQUENCE? _ DSMS5 DEF *+2 DEF D10 ASC 10,REMOTE ID SEQUENCE?_ * * SUBROUTINE TO STORE ID SEQ 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 SKP * NETWORK TIMING-VALUE MODIFICATION SECTION * TIME JSB GETV GO TO GET CURRENT VALUES. JSB PRNTX PRINT SECTION HEADER. DEF TMES " TIMING MODIFICATION" * JSB NMSCX OBTAIN & VERIFY NM SECURITY CODE * (RETURN ONLY IF CODES MATCH) JSB GTIME GET MASTER TIMEOUT VALUE DEF MSTMG MESSAGE DEF D1275 UPPER LIMIT JMP TI.SV DEFAULT ESCAPE JSB CFSEC CONVERT TIME IN SECONDS TO STA #MSTO COUNT OF 5-SEC INTERVALS * TI.SV JSB GTIME GET SLAVE TIMEOUT VALUE DEF SLVMG DEF D1275 JMP TI.BR JSB CFSEC STA #SVTO * TI.BR JSB GTIME GET BUSY REJECT RETRY WAIT DEF BZMG DEF D10 JMP TI.WA ADA M1 ALF,ALF BITS 11-8 HAVE BUSY RETRY COUNT AND B7400 ISOLATE THEM STA #BREJ * TI.WA JSB GTIME GET REMOTE-QUIET WAIT DEF WAITM DEF D7200 JMP TI.GH STA #WAIT * TI.GH EQU * GET MAXIMUM HOP COUNT JSB GTIME DEF MHCM DEF D327. JMP TI.GD STA #MHCT * TI.GD EQU * GET MAXIMUM LINE "DOWN" COUNTER JSB GTIME DEF MDCM DEF D327. JMP OPT20 STA #MDCT JMP OPT20 DONE WITH THIS SECTION SKP * SUBROUTINE TO ASK FOR, GET, AND VERIFY A TIMING PARAMETER * GTIME NOP LDA GTIME,I GET MSG ADDR STA GTI1 ISZ GTIME LDA GTIME,I GET MAX ALLOWED VALUE ADDR STA VCKAD SAVE IT ISZ GTIME * GTI2 EQU * JSB READ GET RESPONSE GTI1 NOP SZA,RSS ANY CHANGE DESIRED? JMP GTIME,I NO CPA B1 NUMERIC RESPONSE? JMP VCHEK YES, CHECK THE LIMITS CPB /E DONE WITH TIMING PARAMETERS? JMP OPT20 YES * GTER JSB ERXFR INVALID RESPONSE DEF IVRES JMP GTI2 * VCHEK SSB VALUE NEGATIVE? JMP GTER YES, ERROR LDA GTI1 CMB,INB,SZB,RSS WAS VALUE NON-ZERO? CPA TI.WA+1 NO, IS THIS QUIESCENT WAIT? RSS YES, LOWER LIMIT OK JMP GTER NO, INPUT ERROR LDA 1 ADB VCKAD,I MAX-INPUT VALUE SSB TOO LARGE? JMP GTER YES ISZ GTIME NO, RETURN IT IN A JMP GTIME,I * SKP * * ROUTINE TO GET CURRENT SYSTEM TIMING VALUES FOR REPORT TO USER. * GETV NOP ENTRY/EXIT LDA #MSTO GET MASTER TIMEOUT VALUE. ADA DM256 FORM FULL DATA WORD. CMA,INA MAKE IT POSITIVE. MPY B5 CONVERT TO SECONDS JSB CNVTD GO TO CONVERT IT TO ASCII. DBR MSVAL+5 SPECIFY DESTINATION OF RESULT. * LDA #SVTO GET SLAVE TIMEOUT VALUE. ADA DM256 FORM FULL DATA WORD. CMA,INA MAKE IT POSITIVE. MPY B5 CONVERT TO SECONDS JSB CNVTD GO TO CONVERT IT TO ASCII. DBL SLVAL+5 SPECIFY DESTINATION OF RESULT. * LDA #BREJ GET REMOTE-BUSY RETRY COUNT. ALF,ALF RIGHT JUSTIFY IOR DM16 SET BITS 15-4 CMA MAKE IT POSITIVE JSB CNVTD GO TO CCONVERT IT TO ASCII. DBL RTVAL+6 SPECIFY DESTINATION OF RESULT. * LDA #WAIT GET QUIESCENT-WAIT INTERVAL VALUE. CMA,INA MAKE IT POSITIVE. JSB CNVTD GO TO CONVERT IT TO ASCII. DBR WTVAL+6 SPECIFY DESTINATION OF RESULT. LDA #MHCT LOAD "MAXIMUM HOP COUNT" CMA,INA JSB CNVTD CONVERT DBR GTNUM+7 LDA #MDCT MAKE VALUE POSITIVE CMA,INA JSB CNVTD CONVERT & PRINT MSG DBL MDVAL+13 JMP GETV,I RETURN. SKP * CNVTD- CONVERTS BINARY TO DECIMAL (LEFT JUST) * = BINARY * CNVTD NOP ENTRY/EXIT: ASCII CONVERSION ROUTINE. STA FLAG LDA @SPC LDB CNVTD,I JSB .MBT CLEAR AREA DEF D6 NOP LDA FLAG LDB CNVTD,I --> OUTPUT AREA ISZ CNVTD STA NBR SSA,RSS NEGATIVE NUMBER? JMP DEC1 . NO CMA,INA STA NBR SSA SPECIAL LOW NUMBER (-32768)? JMP DEC4 . YES LDA DASH JSB .SBT DEC1 STB ADR SAVE OUTPUT POINTER LDA DTBL STA D D --> DIVISOR TABLE LDA DM4 STA CTR STA FLAG CLEAR OUTPUT FLAG (SET TO 1) * DEC2 LDB NBR LSR 16 DIV D,I ISZ D STB NBR REMAINDER SZA OUTPUT OTHER THAN ZERO? JMP *+4 . YES OUTPUT IT LDB FLAG SSB OK TO OUTPUT? JMP DEC3 . NO FINISH LOOP IOR "0" STA FLAG SET OUTPUT FLAG (BIT15=0) LDB ADR --> OUTPUT FIELD JSB .SBT STB ADR SAVE OUTPUT FIELD DEC3 ISZ CTR JMP DEC2 * LDA NBR := ONES DIGIT LDB ADR --> OUTPUT IOR "0" JSB .SBT JMP CNVTD,I AND RETURN * DEC4 LDA @32K MOVE IN -32768 JSB .MBT DEF D6 NOP JMP CNVTD,I * @32K DBL *+1 ASC 3,-32768 DTBL DEF *+1 DEC 10000 DEC 1000 DEC 100 DEC 10 * "0" OCT 60 DASH ASC 1,-- @SPC DBL *+1 ASC 3, * CTR BSS 1 FLAG BSS 1 BIT15=1 NO OUTPUT; BIT15=0 OUTPUT D BSS 1 ADR BSS 1 NBR BSS 1 * 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 SKP * TMES DEF *+2 DEF TMESL MESSAGE LENGTH ASC 18,TIMING MODIFICATION--CURRENT VALUES: OCT 6412 MSVAL ASC 9,MASTER T/O=XXXXXX OCT 6412 SLVAL ASC 8,SLAVE T/O=XXXXXX OCT 6412 RTVAL ASC 9,REMOTE-BUSY=XXXXXX OCT 6412 WTVAL ASC 10,REMOTE-QUIET=XXXXXX OCT 6412 GTNUM ASC 11,MAX. HOP COUNT=XXXXXX OCT 6412 MDVAL ASC 16,MAX LINE DWN CNT IN 5 MIN=XXXXXX OCT 6412 TMESL ABS *-TMES-2 * MSTMG DEF *+2 DEF D16 ASC 16,MASTER T/O [5 TO 1275 SECONDS]?_ SLVMG DEF *+2 DEF D16 ASC 16,SLAVE T/O [5 TO 1275 SECONDS] ?_ BZMG DEF *+2 DEF D15 ASC 15,REMOTE-BUSY RETRIES[1 TO 10]?_ WAITM DEF *+2 DEF D17 ASC 17,REMOTE-QUIET WAIT[0 TO 7200 SEC]?_ MHCM DEF *+2 DEF D16 ASC 16,MAXIMUM HOP COUNT[1 TO 32767]? _ ... MDCM DEF *+2 DEF D20 ASC 20,MAX LINE DWN CNT IN 5 MIN?[1 TO 32767]?_ .... * VCKAD EQU GETV * SKP * SUBROUTINE TO VERIFY THAT LU IS LINKED TO COMMUNICATION LINK DRIVER. * LUTST NOP LDA NRV3 GET LU # IOR BIT15 STA LU1 CONFIGURE FOR 'XLUEX' CALL CLA CLEAR 2ND WORD 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 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 LU2 NOP NOTE: MUST FOLLOW 'LU1' IMMEDIATELY! 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 STORE LU LDA B3000 SET FOR ENABLE LISTEN REQUEST STA LU2 SAVE THE CONFIGURED CONTROL WORD. * 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 ROTATE STATUS SLA WAS THERE AN INITIALIZATION ERROR? JMP *+4 .YES * * SEND "UP" INDICATION TO GRPM IF OLD LINK LDA NRV3 = LU # JSB #RR4 JMP LUSET,I RETURN TO THE CALLER. * LDA NRV3 AND B377 JSB CNVTD CONVERT LU NUMBER TO ASCII DBL CNER. JSB PRINT AND PRINT ERROR DEF CNERR JMP LUSET,I RETURN TO CALLER SKP * SUBROUTINE TO RE-ENABLE HP3000 LU * * TURN OFF QUEX. UPLIN WILL BRING IT BACK UP, AND QUEX WILL * GO THROUGH ITS ABORT CYCLE. EN3K NOP JSB MESSS CALL RTE MESSAGE PROCESSOR. DEF *+3 DEF OFFQX DEF D9 NOP JMP EN3K,I RETURN * OFFQX ASC 5,OF,QUEX,1 SKP * HERE ON ANY ABORT CONDITIONS * WILL CLEAR ALL LU'S, FLAGS, * DE-ALLOCATE CLASS NUMBERS, * AND TERMINATE ALL MONITORS. * CALLING SEQUENCE * JMP ABORT * ABORT EQU * JSB PRINT PRINT "DSMOD ABORTED" @ABPR DEF ABRTM LDA @ABPR RETURN ERROR TO 'FATHER' PRGM STA $RTRN * PROGRAM TERMINATION PROCESSOR. * TERM EQU * 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 * COMMUNICATION LINE ENABLING ROUTINE. * LUIN NOP JSB READ READ A RECORD DEF UPLUM CPA B1 WAS INPUT BINARY? JMP SAVLU YES. GO TO PROCESS THE LU. CPB /E END OF LIST? JMP LUIN,I YES. RETURN LUERR JSB ERXFR DEF LUERM "LU ERROR" JMP LUIN+3 TRY AGAIN * SAVLU STB NRV3 SAVE TEMPORARILY. CPB #LU3K HP3000 LU? JMP DT005 YES * GO VERIFY THAT LU IS LINKED TO BONA FIDE COMMUNICATION * DRIVER. JSB LUTST JMP LUERR NOT AN LU --- ERROR JMP LUERR NOT A COMM. DRIVER----ERROR JSB LUSET GO TO SET UP & ENABLE THE LU. JMP LUERR * RTE-DETECTED ERROR--TRY AGAIN! * * JMP LUIN+1 GO TO REQUEST ANOTHER LU NUMBER. * DT005 JSB EN3K ENABLE HP3000 LU JMP LUIN+1 GO TO REQUEST ANOTHER LU NUMBER SKP D0 DEC 0 D2 DEC 2 D3 DEC 3 D12 DEC 12 D15 DEC 15 D16 DEC 16 D17 DEC 17 D20 DEC 20 D32 DEC 32 D255 DEC 255 D1275 DEC 1275 D7200 DEC 7200 DM4 DEC -4 DM5 DEC -5 DM16 DEC -16 DM17 DEC -17 DM100 DEC -100 DM256 DEC -256 B17 EQU D15 B65 OCT 65 B66 OCT 66 B77 OCT 77 B377 OCT 377 B400 OCT 400 B7400 OCT 7400 B3000 OCT 3000 B177. OCT 177760 D327. DEC 32767 SD3 OCT 100003 SD13 OCT 100015 M1 EQU CNODE * * NOTE: DO NOT CHANGE ORDER OF RLU & XLU * RLU NOP XLU NOP * TEMP NOP XSBAI XSB A,I DMS: CROSS-STORE VIA ALTERNATE MAP. XLBAI XLA B,I CROSS-LOAD MWII MWI MOVE TO ALTERNATE MAP NOP (THIS 'NOP' REQ'D HERE!) MWFI MWF MOVE FROM ALTERNATE MAP NOP (THIS 'NOP' REQ'D HERE!) * TEMP1 NOP /A ASC 1,/A /E ASC 1,/E "EX" ASC 1,EX /I ASC 1,/I /L ASC 1,/L /N ASC 1,/N /P ASC 1,/P /Q ASC 1,/Q /R ASC 1,/R /S ASC 1,/S /T ASC 1,/T /U ASC 1,/U CN ASC 1,CN TYPEQ NOP CLFLG NOP OPTYP NOP SKP * CLASS NUMBER ALLOCATION SUBROUTINE. * * ENTER: & - DON'T CARE (DESTROYED ON RETURN). * - CLASS NUMBER ADDRESS. * CLSUB NOP ENTRY/EXIT: CLASS SUBROUTINE. LDB CLSUB,I GET THE CLASS NUMBER ADDRESS. ISZ CLSUB SET RETURN TO . LDA B,I GET THE CLASS NUMBER--IF ANY ALR,RAR REMOVE BUFFER-SAVE BIT(#14) SEZ,RSS IF REQUEST TO GET A CLASS, CLA USE ZERO CLASS NUMBER. IOR CLREQ SET NO-WAIT/CLASS-SAVE BITS(15,13). STA B,I SAVE MODIFIED CLASS NO. SPECIFICATION. STB CLSAD CONFIGURE THE CALL WITH CLASS NO. ADDR. SEZ DE-ALLOCATION REQUEST? JMP DEALC YES. * JSB CLRQ ALLOCATE A CLASS NUMBER DEF *+4 DEF CLACD CLASS ALLOCATION CODE CLSAD NOP CLASS NUMBER ADDRESS STORED HERE DEF ZERO DO NOT ASSIGN OWNERSHIP JMP CLERR --ERROR RETURN SSA WAS CLASS NUMBER ALLOCATED? JMP NOCL# NO CLASS NUMBERS AVAILABLE * * LDA CLSAD,I SET PROPER BITS IN CLASS NUMBER ALR,RAR CLEAR "NO WAIT" BIT IOR CBITS SET "SAVE BUFFER" & "NO DE-ALLOCATE" BITS STA CLSAD,I JMP CLSUB,I RETURN TO CALLER * DEALC JSB CLRQ DE-ALLOCATE THE CLASS DEF *+3 DEF CLDAL CLASS NUMBER DE-ALLOCATION CODE DEF CLSAD,I NOP (IGNORE ERRORS) * JMP CLSUB,I RETURN TO CALLER * CLACD OCT 140001 ALLOCATE CLASS, NO-WAIT, NOABORT CLDAL OCT 140002 DE-ALLOCATE CLASS, NO-WAIT, NO ABORT CLS21 OCT 100025 CLREQ OCT 120000 CBITS OCT 60000 * NOCL# EQU * HERE IF NO CLASS NUMBER JSB SYSER CATASTROPHIC ERROR: DEF NOCL. NO CLASS NUMBERS CLERR JSB SYSER GO TO INFORM THE USER OF A DEF CLSER CATASTROPHIC CLASS-PROCESSING ERROR. 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 * ROUTINE TO ASK FOR, OBTAIN & VERIFY A SECURITY CODE * SPECIFIED IS IN ASCII. * SCODX NOP LDA SCODX,I LOAD ADDRESS OF "PROMPT" MESSAGE STA SCOD. SAVE IN-LINE ISZ SCODX BUMP RETURN POINTER JSB SWPLU TEMPORARILY SUPPRESS THE "ECHO" BIT * SCOD0 EQU * JSB READ INPUT RESPONSE SCOD. NOP CPA B2 RESPONSE ASCII? RSS YES,... JMP SCOD0 NO, REPEAT QUESTION JSB SWPLU RESTORE "ECHO" BIT LDB PARSB+1 RECOVER SECURITY CODE SPC 1 UNL JSB S LST JMP SCODX,I RETURN. * SPC 1 * SUBROUTINE TO OBTAIN NETWORK MANAGEMENT ACCESS SECURITY CODE NMSCX NOP JSB SCODX DEF SECNM "NETWORK MANAGEMENT SECURITY CODE?" CPB #NMSC CODES MATCH? JMP NMSCX,I YES, RETURN JMP ABORT NO--TOUGH LUCK * * SUBROUTINE TO SWITCH 'RLU' AND 'XLU' (XLU = RLU W/O ECHO BIT) SWPLU NOP DLD RLU SWP DST RLU JMP SWPLU,I RETURN TO CALLER SPC 1 SECNM DEF *+2 DEF D17 ASC 17,NETWORK MANAGEMENT SECURITY CODE?_ * UNL S NOP BLF,BLF CMB JMP S,I LST SKP * SYSTEM QUIESCEING ROUTINE (SUSPEND NETWORK COMMUNICATIONS). * * [ CAUTION: DO NOT MAKE CHANGES TO ,, OR RTNS.] * QUIES JSB PRINT " SYSTEM QUIESCENCE" DEF QHED JSB NMSCX OBTAIN & VERIFY NM SECURITY CODE * (RETURN ONLY IF CODES MATCH) JSB RNRQ GO TO RTE DEF *+4 TO REQUEST DEF B2 A GLOBAL LOCK DEF #QRN UPON THE QUIESCENT DEF TEMP1 RESOURCE NUMBER. * * LOOP TO WAIT FOR TCB TO GO TO ZERO * QLOOP EQU * LDA #BUSY SZA,RSS JMP DISAB JSB EXEC GO TO SLEEP FOR 5 SEC DEF *+6 DEF D12 DEF D0 DEF D2 DEF D0 DEF DM5 JMP QLOOP JSB #MAQS SEE IF MA IS DONE * * LOOP TO DISABLE ALL LINKS IN NRV * DISAB EQU * DLD #NCNT SZA,RSS IS NRV THERE? JMP DISLV .NO, SKIP DISABLE LOOP STA NCNT STB NPNT ADB XMTL. POINT TO LU DSMD1 LDA B,I NOP AND XMASK IOR BIT15 STA LU1 LDA CLSTN STA LU2 STB NPNT JSB XLUEX DEF *+3 DEF SD3 DEF LU1 NOP LDB NPNT ADB NRVS. ISZ NCNT JMP DSMD1 * DISLV EQU * JSB #RR5 DISABLE ALL LUS IN LV TABLE JSB PRINT DEF QEND JMP TERM GO TO TERMINATION. * XMASK EQU B377 CLSTN OCT 3100 XMTL. DEC 2 SKP * RE-START A FORMERLY QUIESCED SYSTEM. * * [ CAUTION: DO NOT MAKE CHANGES TO ,, OR RTNS.] * REQUE JSB PRINT DEF RQHED " QUIESCENT RE-START" JSB NMSCX OBTAIN & VERIFY NM SECURITY CODE * (RETURN ONLY IF CODES MATCH) * * LOOP TO ENABLE LINKS IN NRV * DLD #NCNT STA NCNT STB NPNT ADB XMTL. DSMD2 LDA B,I NOP AND XMASK STA NRV3 STB NPNT JSB LUSET LDB NPNT ADB NRVS. ISZ NCNT JMP DSMD2 JSB #RR6 ENABLE ALL RR LINKS JSB RNRQ GO TO RTE DEF *+4 TO REQUEST DEF B4 AN UNLOCKING OF DEF #QRN THE QUIESCENT DEF TEMP1 RESOURCE NUMBER. JMP OPT20 CHECK FOR OTHER OPTIONS. * SPC 1 QHED DEF *+2 DEF D9 ASC 9,SYSTEM QUIESCENCE QEND DEF *+2 DEF D10 ASC 10,SYSTEM IS QUIESCENT RQHED DEF *+2 DEF D9 ASC 9,QUIESCENT RE-START SKP * DEFINE TOTAL # OF MONITORS * * [ ADD 1 TO THE VALUE FOR EACH NEW MONITOR TO BE ADDED ] * #MON EQU 11 MNMON ABS -#MON DEFINE NEGATIVE NUMBER OF MONITORS. SPC 1 NAMA DEF NAMES SPC 1 NAMES ASC 3,DLIST DIRECTORY LISTING MONITOR. B1 DEC 1 STREAM 1 ZERO OCT 0 NO ABORT! * CNSLM ASC 3,CNSLM HP3000 CONSOLE MONITOR B2 DEC 2 STREAM 2 OCT 100000 ABORT O.K. * ASC 3,EXECW SCHEDULE-WITH-WAIT MONITOR. B3 DEC 3 STREAM 3 OCT 100000 ABORT O.K. * ASC 3,PTOPM PROGRAM-TO-PROGRAM MONITOR. B4 DEC 4 STREAM 4 OCT 0 NO ABORT! * ASC 3,EXECM REMOTE EXEC-REQUEST MONITOR. B5 DEC 5 STREAM 5 D5 EQU B5 OCT 0 NO ABORT! * RFAM ASC 3,RFAM REMOTE FILE ACCESS MONITOR. D6 DEC 6 STREAM 6 B6 EQU D6 OCT 0 NO ABORT! * ASC 3,OPERM REMOTE OPERATOR-REQUEST MONITOR. B7 DEC 7 STREAM 7 D7 EQU B7 OCT 100000 ABORT O.K. * ASC 3,VCPMN VIRTUAL CONTROL PANEL MONITOR D8 DEC 8 STREAM 8 B10 EQU D8 OCT 0 NOT ABORTABLE! * ASC 3,PROGL ABSOLUTE PROGRAM-LOADING MONITOR. D9 DEC 9 STREAM 9 OCT 0 NO ABORT! * ASC 3,RDBAM REMOTE DATA BASE ACCESS MONITOR D10 DEC 10 STREAM 10 OCT 0 NO ABORT! * ASC 3,APLDX MINI-APLDR D11 DEC 11 STREAM 11 OCT 100000 ABORT OK! SKP * * ROUTINE TO SCHEDULE USER-SPECIFIED SLAVE MONITORS. * MSET NOP ENTRY/EXIT: MONITOR SCHEDULING RTN. MLOOP LDA MNMON INITIALIZE A COUNTER STA MCNT FOR THE NO. OF MONITORS TO SCHEDULE. LDB NAMA INITIALIZE THE STB NAMPT PROGRAM NAME-ARRAY POINTER. * * JSB READ GET THE USER'S RESPONSE. DEF MONMS CPB /E ALL DONE? JMP MSET,I YES. RETURN FOR NEXT OPERATION. CPA B2 IF RESPONSE WAS ASCII-ALPHA. CHARACTERS, RSS THEN SKIP TO CHECK FOR A VALID NAME; JMP NAMER ELSE, INFORM THE USER OF HIS ERROR! * * VERIFY THAT PROGRAM NAMED IS ONE OF THE DS/1000 MONITORS * LDB NAMPT POINT TO FIRST NAME. MCOMP STB NAMPT SAVE THE POINTER. LDA PARS2 ADDRESS OF USER'S MONITOR NAME. JSB .CMW COMPARE THE THREE WORDS. DEF B3 NOP JMP MFOUN ALL COMPARE--GO TO SCHEDULE. NOP NO COMPARISON. ADB B2 ADD OFFSET FOR NEXT NAME ENTRY. ISZ MCNT HAVE ALL OF THE NAMES BEEN CHECKED? JMP MCOMP NO. GO TO CHECK THE NEXT ONE. * NAMER JSB ERROR INFORM THE USER OF HAVING SUPPLIED AN DEF INVNM " INVALID NAME!" JMP MLOOP GO BACK TO TRY AGAIN. * SKP MFOUN EQU * JSB MSKED GO TO SCHEDULE THE MONITOR. JMP MLOOP GO TO ASK FOR THE NEXT NAME. * PARS2 DEF PARSB+1 CNSDF DEF CNSLM RFMDF DEF RFAM SCHNW OCT 100012 STMPT NOP NAMPT NOP MCNT NOP SPC 1 * DO NOT CHANGE ORDER OF 'MCLAS' & 'IDAD' * SPC 1 MCLAS NOP IDAD NOP * QUES ASC 2,MON? ASTAT ASC 2,STAT SMES DEF *+2 DEF D9 ASC 3,ERROR: ERCOD ASC 3, : SNAM ASC 3,XXXXX MONMS DEF *+2 DEF D7 ASC 7,MONITOR NAME?_ INVNM DEF *+2 DEF B7 ASC 7,INVALID NAME! * NODEF DEF *+2 DEF D15 ASC 15,LU,TIMEOUT,UPGRADE LEVEL[,N]?_ .... * @SNAM DEF SNAM * SKP * SUBROUTINE TO SCHEDULE A MONITOR & INITIALIZE ITS LIST-HEADER ENTRY. * MSKED NOP ENTRY/EXIT: MONITOR SCHEDULER. LDA NAMPT GET THE NAME-ARRAY POINTER. CPA CNSDF ABOUT TO SCHEDULE ? RSS YES. CHECK FURTHER. JMP GETID NO. GO AHEAD AND SCHEDULE LDB #LU3K IS HP3000 CONNECTED? SZB,RSS YES. GO AHEAD AND SCHEDULE. JMP MSKED,I NO. IGNORE SCHEDULING OF * GETID JSB PGMAD GO TO GET MONITOR'S ID SEGMENT ADDRESS. DEF *+2 DEF NAMPT,I ADDRESS OF MONITOR'S NAME. SZA,RSS IS THE MONITOR PRESENT? JMP MON? NO. INFORM THE USER. STA IDAD YES. SAVE I.D. SEGMENT ADDRESS. LDA B GET MONITOR'S STATUS INTO . AND B17 ISOLATE THE MONITOR'S STATUS. SZA IS IT DORMANT? JMP STERR NO. INFORM USER OF ERROR. * JSB CLSUB GET A CLASS NUMBER DEF MCLAS FOR THE MONITOR. LDB NAMPT GET THE NAME-ARRAY POINTER. ADB B3 ADVANCE TO THE STREAM-LIST ENTRY. LDA B,I GET STREAM NUMBER ADA B2 COMPUTE ADA #LDEF LIST HEADER LDA 0,I ADDRESS. INA POINT TO CLASS NUMBER IN HEADER STA STMPT SAVE FOR 'RES' INITIALIZATION. INB ADVANCE TO THE ABORT-FLAG ENTRY. STB PRNTX SAVE ADDRESS * LDA NAMPT GET THE NAME-ARRAY POINTER CPA RFMDF IF 'RFAM' IS BEING SCHEDULED, THEN JSB FILIN GET THE FILE COUNT FOR IT. * LDA MCLAS GET CLASS NO. & STA STMPT,I STORE INTO STREAM LIST-HEADER IN 'RES'. ISZ STMPT BUMP POINTER TO 3RD WORD LDA NAMPT MOVE MONITOR NAME LDB STMPT TO JSB .MVW SLAVE STREAM DEF D3 HEADER NOP * * SET SIGN BIT IN 3RD WORD OF STREAM HEADER IF MONITOR IS * ABORTABLE. * LDA STMPT,I IOR PRNTX,I MERGE ABORTABLE-BIT (IF PRESENT) STA STMPT,I RESTORE IN STREAM HEADER SKP * JSB EXEC GO TO RTE DEF *+5 TO SCHEDULE DEF SCHNW THE MONITOR DEF NAMPT,I WITHOUT WAIT. DEF MCLAS SCHEDULING PARAMETER #1. DEF ERLU SCHEDULING PARAMETER #2. JMP STCOD * ERROR--REPORT TO USER * SZA WAS IT CORRECTLY SCHEDULED? JMP STERR NO--INCORRECT STATUS ERROR. * JMP MSKED,I RETURN TO THE CALLER (=STATUS). * MON? DLD QUES GET THE MONITOR-MISSING INDICATOR. JMP STCOD SAVE FOR THE ERROR MESSAGE. STERR DLD ASTAT GET THE STATUS-PROBLEM INDICATOR. STCOD DST ERCOD SAVE THE ERROR CODE. * LDA NAMPT MOVE THE MONITOR NAME LDB @SNAM FOR USE IN JSB .MVW ERROR MESSAGE DEF B3 NOP * JSB ERROR GO TO PRINT THE DEF SMES ERROR MESSAGE. JMP MSKED,I RETURN TO THE CALLER. SPC 3 * SUBROUTINE TO GET SIZE OF OVERFLOW FILE FOR USE BY 'RFAM' * FILIN NOP JSB READ GET RESPONSE DEF FILMG CPA B1 INPUT NUMERIC? JMP GFIL2 YES * JSB ERXFR "FILE ERROR" DEF FERMG JMP FILIN+3 RETRY * GFIL2 STB #RFSZ SAVE NUMBER OF FILES JMP FILIN,I AND RETURN TO CALLER. SKP * SUBROUTINE TO PRINT MESSAGES ON INTERACTIVE TERMINALS--ONLY. * * CALLING SEQUENCES: * * JSB PRINT....PRINT:" /DSMOD:" JSB PRNTX....PRINT:"" * DEF MESSAGE DEF MESSAGE * 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 RDER 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 D20 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 ERFLG 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 STA PRTLU SAVE AS PRINT LU * SKP JSB REIO 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,/DSMOD: MSGBF BSS 20 * * 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 SYSAD CONFIGURE CALL TO PRINT ROUTINE. ISZ ERFLG SET ERROR FLAG. JSB PRINT SYSAD NOP JMP ABORT AFTER MESSAGE...ABORT SKP * SUBROUTINE TO READ FROM A SELECTED INPUT DEVICE * WILL PARSE THE INPUT AND PLACE RESULT IN A BUFFER * CALLED PARSB. IF FIRST PARAMETER = '/A' WILL GO TO 'ABORT'. * CALLING SEQUENCE: * * JSB READ * DEF MESSAGE TO BE PROMPTED * UPON RETURN A REG=PARSB, B REG=PARSB+1 * READ NOP LDB READ,I STB .PRAD ISZ READ LDA DM4 ALLOW THREE STA RETRY ERROR-RETRIES. READA EQU * JSB PRINT .PRAD NOP LDA RLU GET READ LU LDB RDER 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. STA PRTLU SAVE READ LU JSB REIO ISSUE THE READ DEF *+5 DEF B1 DEF PRTLU DINBF DEF INBUF DEF INBFS SZB EOF HIT? JMP READC NO REDER JSB ERXFR INDICATE ERROR, AND ALLOW RE-TRY. DEF READM JMP READA TRY AGAIN SPC 1 READB EQU * 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 READ-ERROR FLAG STA RDER 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. * RDER NOP ASTSK OCT 25000 ASCII "*" IN HIGH BYTE 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 ERRAD CONFIGURE CALL TO PRINT ROUTINE. ISZ ERFLG FORCE MESSAGE TO ERROR DEVICE. JSB PRINT PRINT THE ERROR MESSAGE. ERRAD NOP CLA CLEAR THE STA ERFLG ERROR-DEVICE FLAG. ISZ ERROR BYPASS THE MESSAGE-SPECIFICATION. JMP ERROR,I AND RETURN SPC 1 ERFLG NOP SPC 2 * PRINT THE ERROR MESSAGE AND REPEAT THE QUESTION ON THE (ERROR LU) DEVICE. * * CALLING SEQUENCE: * * JSB ERXFR * DEF * ERXFR NOP ENTRY/EXIT: ERROR TRANSFER ROUTINE ISZ RDER SET READ ERROR FLAG. ISZ RETRY ALL RETRIES BEEN EXHAUSTED? JMP *+2 NO. TRY AGAIN. JMP ABORT YES--ABORT THE PROCESS! * LDA ERXFR,I GET MESSAGE ADDRESS. STA ERAD1 ISZ ERFLG FORCE THE USE OF THE (ERROR LU). JSB PRINT GO TO PRINT ERAD1 NOP * CLA CLEAR OUT STA ERFLG THE ERROR FLAG, ISZ ERXFR SET RETURN ADDRESS JMP ERXFR,I AND RETURN. * * * SUBROUTINE TO CHECK DRIVER TYPE * CALLING SEQUENCE: JSB TTY? * DEF * UPON RETURN, A-REG=LU NUMBER, B-REG=0 IF INTERACTIVE, ELSE DRIVER TYPE * 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. SZA,RSS INTERACTIVE? JMP *+4 .YES, SKIP SET UP LDA B ALF,ALF AND B377 MASK ALL BUT DRIVER TYPE * LDB A MOVE TO B-REG. LDA CHKLU,I A-REG := LU NUMBER. JMP TTY?,I RETURN. SKP SKP .NRVS EQU 3 # WORDS PER NRV ENTRY 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 10 RTE FILE NAMR PARAMETERS. ITYPE EQU NAME+3 ISEC EQU NAME+4 ICR EQU NAME+5 PRM2 NOP ERROR LU/CLASS NUMBER (2ND PARAM) PRM3 NOP RECORD LEN(3RD PARAM) * DEFLU NOP DEFAULT LU NUMBER. SPC 2 NINIT DEF *+2 "NODE NOT INITIALIZED" DEF D10 ASC 10,NODE NOT INITIALIZED * NCVT. DEF *+2 DEF D7 ASC 7,NO MSG.CNVTRS! * FERMG DEF *+2 DEF D5 ASC 5,FILE ERROR * "N ASC 1,N * LUERM DEF *+2 DEF B5 ASC 5,LU ERROR * TRFM DEF *+2 DEF D7 ASC 7,TR FILE ERROR * FILMG DEF *+2 DEF D6 ASC 6,# OF FILES?_ .... * READM DEF *+2 DEF D5 ASC 5,READ ERROR * ABRTM DEF *+2 DEF D7 ASC 7,DSMOD ABORTED! * NOCL. DEF *+2 DEF D6 ASC 6,NO CLASS #S * CLSER DEF *+2 DEF D8 ASC 8,CLASS I/O ERROR * ENDMG DEF *+2 DEF B5 ASC 5,END DSMOD * UPLUM DEF *+2 DEF B6 ASC 6,ENABLE LU#?_ * NODEX DEF *+2 DEF D9 ASC 9,NODE # TO CHANGE?_ .... * OPMES DEF *+2 DEF D6 ASC 6,OPERATION? _ ... * NOSZR DEF *+2 DEF D9 ASC 9,NODE SPEC. ERROR! * * CNERR DEF *+2 DEF D12 ASC 9,INIT. FAILED ON LU CNER. BSS 3 * EXPMS DEF *+2 DEF EXPML MESSAGE LENGTH OCT 6412 CARRIAGE-RETURN/LINE-FEED ASC 9,??: LIST COMMANDS OCT 6412 ASC 5,/A: ABORT! OCT 6412 ASC 7,/E: TERMINATE OCT 6412 ASC 11,/I: CHANGE 3000 ID SEQ OCT 6412 ASC 10,/L: RE-ENABLE LINE OCT 6412 ASC 8,/N: DISPLAY NRV OCT 6412 ASC 13,/P: CHANGE NON-SESN PASWD OCT 6412 ASC 9,/Q: QUIESCE NODE OCT 6412 ASC 12,/S: SCHEDULE MONITOR(S) OCT 6412 ASC 9,/T: ADJUST TIMING OCT 6412 ASC 17,/U: CHANGE DEFAULT SESN USR-NAME OCT 6412 ASC 8,CN: CHANGE NRV OCT 6412 OCT 6412 ASC 12,QUIESCENT SYSTEM ONLY: OCT 6412 ASC 9,/R: RE-START NODE OCT 6412 EXPML ABS *-EXPMS-2 MESSAGE LENGTH * IVRES DEF *+2 DEF D9 ASC 9,INVALID RESPONSE! * SPC 3 A EQU 0 B EQU 1 NRVS. ABS .NRVS # WORDS IN EACH TCB ENTRY INBFS EQU D20 INBUF BSS 20 PARSB BSS 34 INDCB BSS 144 USED FOR ANSWER FILES. * * DEFINE ENTRY POINTS FOR ACCESS TO INTERNAL ROUTINES * PRNT# EQU PRINT READ# EQU READ INBF# EQU INBUF PRNL# EQU PRNTL ERFR# EQU ERXFR EXFR# EQU ERXFR ABRT# EQU ABORT SPC 1 BSS 0 << SIZE OF 'DSMOD' >> SPC 1 END DSMOD