ASMB,Q,C,N HED DSINF(L): DS/1000 INFORMATION -- L-SERIES VERSION (C) HP CO. IFN NAM DSINF,23,65 91750-16079 REV.2013 800612 L EXT DEXEC,D#OPS XIF IFZ * NAM DSINF,23,65 NO Z-OPTION FOR L VERSION! XIF SPC 1 SUP A EQU 0 B EQU 1 EXT $LIBR,$LIBX,$OPSY,PARSE,KCVT,CNUMO,CNUMD EXT EXEC,RMPAR,$CLTA,$RNTA,.DFER,PGMAD EXT .MVW,.MBT,.CBT,.LAX,.LDX,.ISX,.CAX,.DSX EXT $MM,$LUTA,$LUT#,$IDA,$ID#,$IDSZ,$LUT# SPC 1 * **************************************************************** * * (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 1 UNL NEXT 5 LINES ARE FOR PRODUCTION ENGINEERING * NAME: DSINF *SOURCE: 91750-18079 * RELOC: 91750-16079 * PGMR: LYLE WEIMAN LST ******************************************** * * * NAME: DSINF(L) * * (DS INFORMATION, L-SERIES VERSN) * * * * SOURCE: 91750-18079 * * * * RELOCATABLE: 91750-16079 (N-OPTION) * * NO Z-OPTION FOR L-SERIES * * * * PROGRAMMERS: DMT/LAW * * * * DATE: JULY 1979 * * * ******************************************** SPC 3 * THE ORIGINAL CODE FOR THIS PROGRAM WAS WRITTEN IN HP ALGOL. * MODIFICATIONS HAVE BEEN INTRODUCED SINCE TRANSLATION TO * ASSEMBLY LANGUAGE! SPC 3 * ASSEMBLY OPTIONS: * N 1000-1000 AND 1000-3000 VERSION * Z 1000-3000 ONLY (NO DEXEC, NRV, MA, OR REROUTING) * NOTES: 1) THE "Z" OPTION IS NOT AVAILABLE ON L-SERIES COMPUTERS, * BECAUSE NO HP 3000 LINK EXISTS. * 2) THE CODE TO CONFIGURE INSTRUCTIONS FOR MAPPED-MEMORY * HAS BEEN MADE INTO COMMENTS. SKP *RUN FROM RTE WITH * RU,DSINF,,,,, *THE RUN-TIME PARAMETERS HAVE THESE MEANINGS: * * THE LOGICAL UNIT NUMBER OF THE INPUT DEVICE. THE DEFAULT * IS THE NUMBER OF THE SCHEDULING TERMINAL PASSED BY M-T-M * OR 1. IF THE INPUT DEVICE IS INTERACTIVE A PROMPT IS * PRINTED ON THE DEVICE BEFORE EACH READ. * * THE LOGICAL UNIT NUMBER OF THE DEVICE WHERE INFORMATION IS * PRINTED. THE DEFAULT IS THE INPUT LU (IF INTERACTIVE) OR 6. * * A CONTROL WORD WHICH SPECIFIES DSINF WILL BE RUN NON- * INTERACTIVELY. THE FUNCTIONS WHICH TAKE PLACE ARE * DETERMINED BY THE BITS SET: * * DECIMAL * VALUE PRINT THIS INFORMATION * ------- ------------------------------ * 1 AVAILABLE MEMORY SUSPEND LIST * 2 I/O CLASSES * 4 DS/1000 VALUES * 8 DUMP OF SAM BLOCK * 16 DS/1000 LISTS * 32 NODAL ROUTING VECTOR * 64 DS/1000 DVT ENTRIES * 128 MESSAGE ACCOUNTING * 256 REROUTING * * FOR EXAMPLE, TO PRINT THE I/O CLASS AND DS/1000 VALUES * ON YOUR TERMINAL, TYPE RU,DSINF,,,6. * * THE NODE NUMBER WHERE I/O IS TO OCCUR. DEFAULT IS LOCAL * NODE (-1). * * SET TO A NON-ZERO VALUE WHEN THE NODE NUMBER IS 0 (TO * DISTINGUISH IT FROM THE DEFAULT). * *DSINF RECOGNIZES THE FOLLOWING COMMANDS: * AV AVAILABLE MEMORY SUSPEND LIST * CL I/O CLASSES * VA DS/1000 VALUES * DU DUMP OF SAM BLOCK * LI DS/1000 LISTS * NR OR /N NODAL ROUTING VECTOR * LU[,,XX] DS/1000 DVT ENTRIES * LU,N[,XX] PRINT INFORMATION ON LU# N * MA MESSAGE ACCOUNTING * RR REROUTING * EX OR /E TERMINATE DSINF * *ALL OTHER CHARACTERS CAUSE THE FUNCTIONS TO BE LISTED ON THE *OUTPUT DEVICE.; SPC 3 * * THE LU COMMAND USES A THIRD PARAMETER WHICH CAN HAVE THESE VALUES: * CODE PRINT THIS INFORMATION * ---- ---------------------- * (NONE) LU, DVT, AND DRIVER TYPE \ ALWAYS * FLAG BITS (DRIVER 66) / PRINTED * IO DVT WORDS * PA FOR DVA66: INTERFACE PARAMETERS * ST FOR DVA66: INTERFACE PARAMETERS AND STATISTICS * AL ALL OF THE ABOVE * * IF THE PARAMETERS OR STATISTICS ARE READ FROM A DVA66 CARD, THE * DRIVER IS CALLED. IF THE BOARD IS DOWN OR THE DRIVER HAS A LONG * QUEUE, DSINF MUST WAIT. * * HERE IS A SAMPLE PRINTOUT OF A DVA66 ENTRY: * LU # 23, TYPE 66 * WORD VALUE MEANING WORD VALUE MEANING * 1 177777 DVT LINK WORD 2 0 Q!RQST INITIATION LI * 3 31000 N!CIRCULAR NODE LIST 4 31024 P!CIRCULAR DVT LIST * 5 31603 X!IFT REFERENCE 6 33004 AV!TYPE!STATUS * 7 1 SYSTEM FLAGS!LU LOCK 8 0 B!BUFFER ACCUM. * 9 11060 S! HL-LL/16! LL/16 10 0 RESERVED * 11 177777 T.O. LIST 12 0 DEVICE T.O. VALUE * 13 0 I/F T.O. VALUE 14 0 DEVICE DVR ADDR * 15 150101 TY!E!Z!SUBFN!RQ 16 0 RQ.PARM/ERR CODE * 17 0 RQST PARAM2/XLOG 18 22 RQST PARAM3/EXT STAT * 19 24 RQST PARAM4/EXT STAT 20 177766 RETRY CNTR/READ PNTR * 21 0 1ST READ LEN/SKIP CT 22 0 2ND READ LEN/READ CT * 23 0 READY FRAME LENGTH 24 34564 WRITE POINTER * 25 0 WRITE BUFFERS LENGTH 26 1000 MAX PSI FRAME SIZE * 27 0 NUM OUTPUT BUFFERS 28 26155 READ CONT ADDRESS * 29 26667 WRITE CONT ADDRESS 30 53000 FLAG BITS* * 31 27 MISCELLANEOUS BITS * * NOTE: INFORMATION BELOW IS ONLY PRINTED FOR THE FIRST DVT OF A PAIR: * * FLAG BITS (DVT WORD 30) * 0 READ ABORTED 0 WRITE ABORTED 0 RD RQ PENDING 0 WT RQ PENDING * 0 BKPL LOCKED RP 0 BKPL LOCKED WP 0 SHORT TO ACTIVE 0 MED. T.O ACTIVE * 0 LONG T.O ACTIVE 1 CONNECTED 1 START OF MSG. 0 NON-DS MODE * 1 ASKED TO CONNCT 0 SEVERE ERROR 1 P-F RECONNECT 0 RFP WAIT * * HDLC BOARD, FIRMWARE REV.1950, SPEED: MAXIMUM, INTERNAL CLOCK * FCL DISABLED, DIAGNOSTIC HOOD NOT SENSED * * PARAMETERS/STATISTICS * 2 GOOD I-FRAMES RCVD 50 RR FRAMES RECEIVED * 0 RNR FRAMES RECEIVED 0 REJECT FRAMES RCVD * 0 RCV PROC OVERRUNS 0 CRC ERRORS * 0 ABORT SEQ. RECEIVED 0 RECEIVER OVERRUNS * 0 RX BUFFER OVERFLOWS 0 FRAMES W/BAD ADDR * 0 CMDR FRAMES RCVD 7 UNACK FR WINDOW SIZE * 10 N2 RETRY COUNT 15 T1 T.O. IN 0.01 SEC * * * THE FORM OF THE SPEED AND CLOCK MESSAGES DEPENDS ON THE * SETTING OF THE SWITCHES ON THE I/F BOARD: * * SPEED: 300 BPS, INTERNAL CLOCK * ^ ^ * ! ! * ! +----- OR EXTERNAL * ! * +---- THIS FIELD MAY HAVE ANY OF THE FOLLOWING: * 300 BPS * 1200 BPS * 2400 BPS * 4800 BPS * 9600 BPS * 19.2KBPS * 57.6KBPS * MAXIMUM * * WHEN USING EXTERNAL CLOCK, THE ACTUAL SPEED IS DETERMINED BY MODEM, * BUT SETTING SHOULD MATCH, OR BE SLOWER THAN, THAT OF THE MODEM USED. * HED DSINF: DATA DECLARATION * (C) HEWLETT-PACKARD CO. * RUN-TIME PARAMETERS INLU BSS 01 OUTLU BSS 01 CONWD BSS 01 NODE BSS 01 FLAG BSS 01 SPC 2 *INTEGER I,J, & COUNTERS I BSS 01 J BSS 01 * MAXID, & # OF ID SEGMENTS IN SYSTEM MAXID BSS 01 * SSIZE; & SIZE OF SAM BLOCK SSIZE BSS 01 SPC 2 * DS/1000 VALUES EXT #CNOD,#FWAM,#TBRN,#MSTO,#SVTO,#WAIT,#QRN EXT #BREJ,#LU3K,#QZRN,#GRPM,#NRV,#TST EXT #RFSZ,#LDEF,#NCNT,#NODE,#LNOD,D$LID,D$RID EXT #QCLM,#RTRY,#PLOG,#TRCL,#INCV,#OTCV,#QXCL EXT #RQCV,#RPCV,#CLRN,#RDLY,#PRLU,#MHCT,#LEVL EXT #TRCN,#MCTR,#LCNT,#MAHC,#MARN,#RSM,#LV EXT #MDCT,#POOL SPC 2 *INTEGER ARRAY BUFR[1:1]; & OUTPUT BUFFER BUFR EQU * * OUTPUT FIELDS (WORDS 1 THROUGH 39) W1 BSS 1 W2 BSS 1 W3 BSS 1 W4 BSS 1 W5 BSS 1 W6 BSS 1 W7 BSS 1 W8 BSS 1 W9 BSS 1 W10 BSS 1 W11 BSS 1 W12 BSS 1 W13 BSS 1 W14 BSS 1 W15 BSS 1 W16 BSS 1 W17 BSS 1 W18 BSS 1 W19 BSS 1 W20 BSS 1 W21 BSS 1 W22 BSS 18 * * HOLDING AREA FOR NUMBER CONVERSION *INTEGER HOLD1,HOLD2,HOLD3; HOLD1 BSS 1 HOLD2 BSS 1 HOLD3 BSS 1 * SAMIN BSS 1 SAM ARRAY INITIALIZED? * *EQUATE LSTRM := 10; & LAST STREAM NUMBER LSTRM EQU 10 NOSTR ABS LSTRM * NAME BSS 3 NAMEF BSS 3 IDAD NOP ISTAT NOP IDTYP NOP IFTHR NOP @NAMF DBL NAMEF @NAME DBL NAME HED DSINF: MAIN PROGRAM * (C) HEWLETT-PACKARD CO. *+-----------------------------+ *! BEGINNING OF MAIN PROGRAM ! *+-----------------------------+; SPC 1 * PICK UP RUN-TIME PARAMETERS *RMPAR(INLU); DSINF JSB RMPAR DEF *+2 DEF INLU * * IFZ ** SPACE SAVER ** * FOR MAPPED SYSTEMS, CONFIGURE DMS INSTRUCTIONS. LDA $OPSY RAR,SLA RSS RSS JMP STFLS LDA MWF CLB DST DMS1 LDA RSS STA DMS2 XIF ** END SPACE SAVER ** * *& SET FLAGS *PRMPT := SAMIN := FALSE; STFLS CLA STA SAMIN STA PRMPT * STA NAME STA IDAD JSB PGMAD GET OWN NAME DEF *+6 AND FATHER'S DEF NAME ID SEGMENT. DEF IDAD DEF ISTAT DEF IDTYP DEF IFTHR * UNL IFN LST * DETERMINE THE NODE NUMBER: LDA NODE IF NODE SZA NOT 0, JMP OK USE IT. LDB FLAG CHECK SZB NODE 0 JMP OK FLAG. * WE HAVE BEEN SCHEDULED WITH BOTH FLAG AND NODE SET TO 0. * IF OUR FATHER IS "EXECW", USE #CNOD AS THE NODE NUMBER. LDA IFTHR GET FATHER'S CMA,INA ID SEGMENT ADDR. SSA,RSS IF <= 0, JMP LOCAL WE ARE LOCAL. STA IFTHR JSB PGMAD GET FATHER'S DEF *+3 NAME. DEF NAMEF DEF IFTHR LDA @NAMF IS HIS NAME LDB @EXCW EXECW? JSB .CBT DEF D5 NOP JMP NTLOC YES--NOT LOCAL NOP LOCAL CCA NODE:=-1 RSS NTLOC LDA #CNOD NODE:=#CNOD STA NODE OK EQU * UNL XIF LST SPC 1 * GET TRUE PROGRAM NAME (USUALLY WILL BE DSINF). LDA @NAME MOVE FOR LDB @RUNL "INITIALIZE" MESSAGE. JSB .MBT DEF D5 NOP LDA @NAME MOVE FOR LDB @FINS FINAL MESSAGE. JSB .MBT DEF D5 NOP LDA @NAME MOVE FOR LDB @PRMP PROMPT. JSB .MBT DEF D5 NOP * *IF INLU<1 THEN CCA ADA INLU SSA,RSS JMP L968 * BEGIN * INLU := @401; & DEFAULT INPUT LU IS SYS CONSOLE LDA B401 STA INLU * PRMPT := TRUE; & INTERACTIVE DEVICE CCA STA PRMPT * END * ELSE JMP L977 * BEGIN & GET LU INFORMATION UNL IFN LST * DEXEC(NODE,13,INLU,DVR,T1,SUB); L968 JSB DEXEC DEF *+7 DEF NODE UNL XIF LST UNL IFZ LST * EXEC(13,INLU,DVR,T1,SUB); L968 JSB EXEC DEF *+6 UNL XIF LST DEF D13 DEF INLU DEF DVR DEF T1 DEF SUB * SUB := SUB AND @17; LDA SUB AND B17 STA SUB * DVR := ROTATE DVR AND @77; LDA DVR ALF,ALF AND B77 STA DVR * PRMPT := (DVR=00) OR (DVR=07 OR DVR=05 AND SUB=0); CCB SZA,RSS JMP TRU CPA D7 JMP SUBCK CPA D5 JMP SUBCK JMP FLS SUBCK EQU * UNL IFN LST LDA D#OPS IF REMOTE SYSTEM IS CPA $RTEL RTE-L, THERE ARE JMP TRU NO SUBCHANNELS. UNL XIF LST LDA SUB SZA FLS CMB TRU STB PRMPT * IF PRMPT THEN SSB,RSS JMP L977 * INLU:=INLU OR @400; & SET "K" BIT FOR INTERACTIVE INPUT LDA INLU IOR B400 STA INLU * END; * CHECK OUTPUT LU DEVICE *IF OUTLU<1 THEN L977 CCA ADA OUTLU SSA,RSS JMP L984 * OUTLU := IF PRMPT THEN INLU ELSE 6; LDB INLU LDA PRMPT SSA,RSS LDB D6 STB OUTLU *** SPECIAL FOR RTE-L: ADD NON-BUFFERED I/O OVERRIDE BIT L984 EQU * LDA NODE IF NODE NUMBER ISN'T CMA,SZA -1, DON'T ASSUME JMP L984A IT'S FOR AN L. LDA OUTLU ADD BIT TO IOR BIT14 OUTPUT LU STA OUTLU LDA INLU AND INPUT LU. IOR BIT14 STA INLU * L984A LDA $OPSY CPA $RTEL RTE-L? RSS JMP WRSYS NO--PRINT ERROR. * * FIND # OF PROGRAM ID SEGMENTS IN SYSTEM LDA $ID# STA MAXID * *SSIZE := #NRV - #FWAM; & UNLESS THERE IS NO NRV! LDA #NRV SZA JMP GTSTR LDA #TST+1 MPY D14 ADA #TST GTSTR LDB #FWAM CMB,INB ADA B STA SSIZE *IF SSIZE>740 THEN ADA DM740 SZA SSA JMP L1001 * & DON'T OVERRUN SAM ARRAY * SSIZE := 740; LDA D740 STA SSIZE * * CHECK TO SEE IF NODE HAS BEEN INITIALIZED *IF FWAM=0 THEN L1001 LDA #FWAM SZA JMP L1007 * JSB PRINT DEF RUNL DEC 13 * ELSE JMP L1037 * * * CHECK FOR NON-INTERACTIVE RUN *IF CONWD # 0 THEN L1007 LDA CONWD SZA,RSS JMP L1033 * BEGIN * INTEGER TMSC,SEC,MIN,HOUR; JMP L1014 TMSC BSS 01 SEC BSS 01 MIN BSS 01 HOUR BSS 01 BSS 1 TIME ASC 8, TIME---XX:XX:XX COLON ASC 1,:: "00" ASC 1,00 * PRMPT := FALSE; L1014 CLA STA PRMPT * EXEC(11,TMSC); JSB EXEC DEF *+3 DEF D11 DEF TMSC * TIME[8] := KCVT(SEC); LDA SEC JSB KCVT1 IOR "00" STA TIME+7 * TIME[6] := KCVT(MIN); LDA MIN JSB KCVT1 IOR "00" LDB COLON RRR 8 DST TIME+5 * TIME[4] := KCVT(HOUR); LDA HOUR JSB KCVT1 STA TIME+4 JSB BLINE * JSB PRINT DEF TIME D8 DEC 8 UNL IFN LST * PRINT LOCAL NODE NUMBER LDA #NODE JSB CNVTD DEF LOCLN JSB PRINT DEF NODM2 DEC 10 UNL XIF LST * BLINE; JSB BLINE * IF (CONWD AND 1)#0 THEN AVMEM; LDA CONWD AND D1 SZA JSB AVMEM * IF (CONWD AND 2)#0 THEN CLASS; LDA CONWD AND D2 SZA JSB CLASS * IF (CONWD AND 4)#0 THEN VALUS; LDA CONWD AND D4 SZA JSB VALUS * IF (CONWD AND 8)#0 THEN DUMP; LDA CONWD AND D8 SZA JSB DUMP * IF (CONWD AND 16)#0 THEN LISTS; LDA CONWD AND D16 SZA JSB LISTS UNL IFN LST * IF (CONWD AND 32)#0 THEN DSNRV; LDA CONWD AND D32 SZA JSB DSNRV UNL XIF LST * IF (CONWD AND 64)#0 THEN LUTS; LDA CONWD AND D64 SZA JSB LUTS UNL IFN LST * IF (CONWD AND 128)#0 THEN MSACT; LDA CONWD AND D128 SZA JSB MSACT * IF (CONWD AND 256)#0 THEN RRTNG; LDA CONWD AND D256 SZA JSB RRTNG UNL XIF LST IFZ ** SPACE SAVER ** * IF (CONWD AND 512)#0 THEN RMSES; LDA CONWD AND D512 SZA JSB RMSES XIF ** END SPACE SAVER ** * END * * *ELSE JMP L1037 * SET PROGRAM NAME IN FUN1 AND FUN10 L1033 LDA @NAME LDB @FUN1 JSB .MBT DEF D5 NOP * MOREC := TRUE; CCA STA MOREC LDA @NAME LDB @FN10 JSB .MBT DEF D5 NOP * WHILE MOREC DO L1034 LDA MOREC SSA,RSS * XEQFN; JMP L1037 JSB XEQFN JMP L1034 * L1037 JSB PRINT DEF FINIS D11 DEC 11 * * DSINF REUSES PARAMETERS IF IN TIME LIST * EXEC(6,0,0,INLU,OUTLU,CONWD); JSB EXEC DEF *+9 DEF D6 DEF D0 DEF D0 DEF INLU DEF OUTLU DEF CONWD DEF NODE DEF FLAG D0 DEC 0 D128 DEC 128 SPC 2 * * $OPSY SAYS THIS IS NOT AN RTE-L SYSTEM * WRSYS JSB PRINT PRINT DEF BDRTE "WRONG DSINF LOADED". DEC 10 JSB EXEC TERMINATE DEF *+4 (WITH PREJUDICE). DEF D6 DEF D0 DEF D3 * BDRTE ASC 10, WRONG DSINF LOADED HED DSINF: EXECUTE A FUNCTION * (C) HEWLETT-PACKARD CO. *PROCEDURE XEQFN; * "AV" ASC 1,AV "CL" ASC 1,CL "VA" ASC 1,VA "DU" ASC 1,DU "LI" ASC 1,LI "NR" ASC 1,NR "/N" ASC 1,/N *"EQ" ASC 1,EQ "LU" ASC 1,LU "MA" ASC 1,MA "RR" ASC 1,RR *"RS" ASC 1,RS "/E" ASC 1,/E "EX" ASC 1,EX FNCTN ASC 5, FUNCTION TO BE PERFORMED RDLEN BSS 1 DM10 DEC -10 * XEQFN BSS 01 * BEGIN * * COMMENT * +----------------------+ * ! EXECUTE A FUNCTION ! * +----------------------+; * * IF PRMPT THEN LDA PRMPT SSA,RSS JMP L928 * BEGIN & PROMPT FOR COMMAND UNL IFN LST JSB DEXEC DEF *+6 DEF NODE UNL XIF LST UNL IFZ LST JSB EXEC DEF *+5 UNL XIF LST DEF D2 DEF INLU DEF BLANK DEF D1 * & PRINT THE PROMPT UNL IFN LST JSB DEXEC DEF *+6 DEF NODE UNL XIF LST UNL IFZ LST JSB EXEC DEF *+5 UNL XIF LST DEF D2 DEF INLU DEF PROMP DEF DM21 * END; * * CLEAR WORDS 2 & 3 OF FNCTN LDA BLANK STA FNCTN+1 STA FNCTN+2 * READ COMMAND FROM INPUT LU UNL IFN LST L928 JSB DEXEC DEF *+6 DEF NODE UNL XIF LST UNL IFZ LST L928 JSB EXEC DEF *+5 UNL XIF LST DEF SD1 SET NO-ABORT BIT. DEF INLU DEF FNCTN DEF DM10 JMP EX ERROR: TREAT AS "/E". STB RDLEN SAVE NUMBER OF BYTES READ. * * EXECUTE COMMAND * IF FNCTN="AV" THEN AVMEM LDA FNCTN CPA "AV" RSS JMP *+3 JSB AVMEM JMP L939 * ELSE IF FNCTN="CL" THEN CLASS CPA "CL" RSS JMP *+3 JSB CLASS JMP L939 * ELSE IF FNCTN="VA" THEN VALUS CPA "VA" RSS JMP *+3 JSB VALUS JMP L939 * ELSE IF FNCTN="DU" THEN DUMP CPA "DU" RSS JMP *+3 JSB DUMP JMP L939 * ELSE IF FNCTN="LI" THEN LISTS CPA "LI" RSS JMP *+3 JSB LISTS JMP L939 UNL IFN LST * ELSE IF FNCTN="NR" OR FNCTN="/N" THEN DSNRV CPA "NR" RSS JMP *+3 TONRV JSB DSNRV JMP L939 CPA "/N" JMP TONRV UNL XIF LST ** ELSE IF FNCTN="EQ" THEN EQTS * CPA "EQ" * RSS * JMP *+3 * JSB EQTS * JMP L939 * ELSE IF FNCTN="LU" THEN LUTS CPA "LU" RSS JMP *+3 JSB LUTS JMP L939 UNL IFN LST * ELSE IF FNCTN="MA" THEN MSACT CPA "MA" RSS JMP *+3 JSB MSACT JMP L939 * ELSE IF FNCTN="RR" THEN RRTNG CPA "RR" RSS JMP *+3 JSB RRTNG JMP L939 UNL XIF LST IFZ ** SPACE SAVER ** * ELSE IF FNCTN="RS" THEN RMSES CPA "RS" RSS JMP *+3 JSB RMSES JMP L939 XIF ** END SPACE SAVER ** * ELSE IF FNCTN="/E" OR FNCTN="EX" THEN MOREC:=FALSE CPA "/E" JMP EX CPA "EX" RSS JMP BADF EX CLA STA MOREC JMP L939 * ELSE LFUNS; BADF JSB LFUNS * END OF XEQFN; L939 JMP XEQFN,I SPC 6 B400 OCT 400 B401 OCT 401 DM740 DEC -740 DM21 DEC -21 D16 DEC 16 D64 DEC 64 D256 EQU B400 D740 DEC 740 SD1 DEF 1,I @EXCW DBL EXECW EXECW ASC 3,EXECW PROMP ASC 11,/DSINF(L): FUNCTION?_ * RUNL ASC 13, /DSINF: INITIALIZE NODE! FINIS ASC 11, *** END OF DSINF *** STARS EQU FINIS+1 @RUNL DBL RUNL+1 @PRMP DBR PROMP @FINS DBL FINIS+6 SUB BSS 1 INPUT LU'S SUBCHANNEL DVR BSS 1 INPUT LU'S DRIVER TYPE MOREC BSS 1 MORE COMMANDS TO READ? PRMPT BSS 1 PROMPT FOR COMMANDS? HED DSINF: UTILITY SUBROUTINES * (C) HEWLETT-PACKARD CO. * +--------------+ * ! PROCEDURES ! * +--------------+ SPC 1 * * CONVERT NUMBER TO ASCII DECIMAL * CNVTD NOP STA RAW SAVE THE RAW DATA, TEMPORARILY. LDA CNVTD,I GET THE DESTINATION ADDRESS. STA STUFM CONFIGURE THE CALL TO 'CNUMD'. JSB CNUMD GO TO DEF *+3 CONVERT DEF RAW THE VALUE STUFM NOP TO ASCII. ISZ CNVTD ADJUST THE RETURN POINTER, JMP CNVTD,I AND RETURN TO THE CALLER. * RAW BSS 1 SPC 2 * * CONVERT NUMBER TO ASCII OCTAL * CNVTO NOP ENTRY. STA RAW SAVE THE NUMBER. LDA CNVTO,I GET DESTINATION ADDRESS. STA STUF1 SET ADDRESS IN CNUMO CALL. JSB CNUMO CALL SYSTEM DEF *+3 ROUTINE TO DEF RAW CONVERT. STUF1 NOP ISZ CNVTO ADJUST RETURN ADDRESS JMP CNVTO,I AND RETURN TO CALLER. SPC 2 * * CONVERT DECIMAL NUMBER TO ASCII, TWO DIGITS * (VALUE GOES IN A-REGISTER) * KCVT1 NOP STA T1 SAVE DATA TEMPORARILY. JSB KCVT CALL SYSTEM ROUTINE DEF *+2 FOR CONVERSION. DEF T1 JMP KCVT1,I RETURN. SKP * * CHASE DOWN INDIRECTS * INDR NOP RSS N LDA A,I RAL,CLE,SLA,ERA JMP N JMP INDR,I SPC 3 * * FILL BUFR ARRAY WITH A-REGISTER CONTENTS * FILL NOP ENTRY POINT STA BUFR STORE IN FIRST WORD. LDA AW1 PROPAGATE THROUGH LDB A ENTIRE FIELD INB WITH A JSB .MVW MOVE. DEF D38 NOP * JMP FILL,I RETURN SPC 2 * SUBROUTINE TO FILL PRINT BUFFER WITH BLANKS BFILL NOP LDA BLANK JSB FILL JMP BFILL,I RETURN SKP * * PRINT A STRING * MSG BSS 1 STRING ADDRESS LEN BSS 1 LENGTH * PRINT NOP ENTRY POINT LDA PRINT,I GET PARAMETERS STA MSG ISZ PRINT LDA PRINT,I STA LEN ISZ PRINT * UNL IFN LST JSB DEXEC CALL DEXEC FOR WRITE DEF *+6 DEF NODE UNL XIF LST UNL IFZ LST JSB EXEC CALL EXEC FOR WRITE DEF *+5 UNL XIF LST DEF D2 DEF OUTLU DEF MSG,I DEF LEN * JMP PRINT,I RETURN SPC 2 * PROCEDURE TO PRINT A BLANK LINE BLINE NOP JSB PRINT DEF BLANK D1 DEC 1 JMP BLINE,I SKP * * MOVE THE DS/1000 BLOCK OF SAM * DEST DEF SAM DESTINATION ADDRESS PONTR NOP ADDRESS WHERE POINTER IS STORED DEF PNTR-3 POINTERS' ARRAY * GTSAM NOP ENTRY POINT JSB $LIBR INSURE NOBODY CHANGES SAM NOP BY GOING PRIVILEGED * LDA #FWAM A-REG := SOURCE ADDR IN SAM LDB DEST B-REG := DESTINATION JSB .LDX X-REG := # OF WORDS TO MOVE DEF SSIZE DMS1 JSB .MVW MOVE WORDS [IN DMS: MWF] DEF SSIZE NOP * LDA PONTR+1 STA PONTR CCA \ GET ADDRESS ADA #LDEF / OF FIRST POINTER JSB .LDX INITIALIZE COUNTER DEF D14 LOOP2 LDB A,I PICK UP POINTER LDB B,I STB PONTR,I STORE POINTER INA INCREMENT SOURCE ADDR ISZ PONTR INCREMENT DEST ADDR JSB .DSX DONE? JMP LOOP2 NO--MOVE NEXT POINTER * JSB $LIBX RESTORE SYSTEM DEF GTSAM AND RETURN * *MWF MWF INSTRUCTION FOR DMS OPERATING SYS SPC 3 * * PLACE THE CONTENTS OF A LOCATION IN ALTERNATE MAP (IF MAPPED SYS) * INTO THE A-REGISTER * IXGET NOP ENTRY POINT DMS2 LDA B,I [RSS IF DMS SYSTEM] JMP IXGET,I RETURN IF NON-MAPPED. * * XLA B,I * JMP IXGET,I RETURN. HED DSINF: LIST FUNCTIONS * (C) HEWLETT-PACKARD CO. *PROCEDURE LFUNS; * BEGIN * * COMMENT * +------------------------------------+ * ! LIST FUNCTIONS PROVIDED BY DSINF ! * +------------------------------------+; * @FUN1 DBL FUN1+1 FUN1 ASC 13, /DSINF: VALID FUNCTIONS-- FUN2 ASC 21, AV AVAILABLE MEMORY SUSPEND LIST FUN3 ASC 12, CL I/O CLASSES FUN5 ASC 14, VA DS/1000 VALUES FUN6 ASC 17, DU DUMP OF DS SAM BLOCK FUN7 ASC 13, LI DS/1000 LISTS UNL IFN LST FUN9 ASC 17, NR OR /N NODAL ROUTING VECTOR UNL XIF LST FUN8 ASC 16, LU DS/1000 LUT ENTRIES FUN8A ASC 17, LU,N DS/1000 LU # N UNL IFN LST FUN11 ASC 16, MA MESSAGE ACCOUNTING FUN12 ASC 11, RR REROUTING UNL XIF LST FUN10 ASC 14, EX OR /E TERMINATE DSINF @FN10 DBR FUN10+11 * LFUNS NOP * JSB BLINE * JSB PRINT DEF FUN1 DEC 13 * JSB PRINT DEF FUN2 DEC 21 * JSB PRINT DEF FUN3 DEC 12 * JSB PRINT DEF FUN5 DEC 14 * JSB PRINT DEF FUN6 DEC 17 * JSB PRINT DEF FUN7 DEC 13 * JSB PRINT DEF FUN9 DEC 17 * JSB PRINT DEF FUN8 DEC 16 * JSB PRINT DEF FUN8A DEC 17 * JSB PRINT DEF FUN11 DEC 16 * JSB PRINT DEF FUN12 DEC 11 * JSB PRINT DEF FUN10 DEC 14 * JSB BLINE * END OF LFUNS; JMP LFUNS,I HED DSINF: PRINT AVAILABLE MEM LIST * (C) HEWLETT-PACKARD CO. *PROCEDURE AVMEM; * BEGIN * COMMENT * +---------------------------------------+ * ! PRINT AVAILABLE MEMORY SUSPEND LIST ! * +---------------------------------------+; * MHED1 ASC 20, AVAILABLE MEMORY SUSPEND LIST IS EMPTY MHED2 ASC 23, C PRGRM R PRIOR AMT.MEM FATHER * B40K OCT 40000 BIT14 EQU B40K B77 OCT 77 D3 DEC 3 D6 DEC 6 HYPHN ASC 1,-- FATHR BSS 1 FATHER'S ID SEGMENT WORD 1 BAW7 DBL W7 * AVMEM NOP JSB BLINE * IF (LINK := $MM ) # 0 THEN LDA $MM STA LINK SZA,RSS JMP L383 * BEGIN * & PRINT HEADING JSB PRINT DEF MHED1 D15 DEC 15 * JSB BLINE * JSB PRINT DEF MHED2 D23 DEC 23 * & PRINT A LINE OF HYPHENS * FILL(BUFR,"--"); LDA HYPHN JSB FILL * JSB PRINT DEF BUFR D35 DEC 35 * & PRINT ID INFORMATION FOR EACH PROGRAM IN LIST * DO * BEGIN * & POINT TO NEXT LINK IN "AVAILABLE MEMORY" LIST * FILL(BUFR,BLANK); & CLEAR OUTPUT BUFR L338 JSB BFILL * & MOVE PROGRAM NAME LDA LINK ADA D12 CLE,ELA LDB BAW7 JSB .MBT DEF D5 NOP * STORE "MR" IF PROGRAM IS MEMORY-RESIDENT LDB LINK GET ITS ID SEGMENT ADDRESS ADB D15 ADVANCE TO MR/NA/SC, ETC. WORD LDA B,I LOAD THAT WORD SSA,RSS BIT SET? JMP *+3 NO, LEAVE FIELD BLANK LDA =AMR STA W10 STORE "MR" IN PRINT LINE LDA B,I LOAD WORD AGAIN AND =B4000 MASK "SYSTEM COMMON" BIT SZA,RSS BIT SET? JMP *+3 NO, LEAVE FIELD BLANK LDA =ASC STA W15 * CNUMD(IGET(LINK+6),W11); & PRIORITY LDA LINK ADA D6 LDA A,I JSB CNVTD DEF W11 * CNUMD(IGET(LINK+1),W15); & AMOUNT OF MEMORY REQUESTED LDA LINK INA LDA A,I JSB CNVTD DEF W15 * & PUT LINE LENGTH IN "I" * I := 20; LDA D20 STA I * & CHECK "FATHER WAITING" LDA LINK GET ID SEGMENT ADDRESS ADA D14 COMPUTE ADDRESS OF "FATHER" WORD LDA A,I LOAD THE "FATHER" WORD AND B377 MASK FATHER'S ID SEGMENT #, IF ANY SZA,RSS IS THERE A FATHER? JMP L373 NO ADA DM1 CONVERT TO AN MPY $IDSZ ID SEGMENT ADA $IDA ADDRESS STA FATHR ...BECOMES NEW 'FATHER' * & MOVE FATHER NAME(S) * WHILE MORE DO * BEGIN * & MOVE THE NAME L354 LDA FATHR ADA D12 CLE,ELA LDB AW1 ADB I CLE,ELB JSB .MBT DEF D5 NOP * & CHECK FOR GRANDFATHER WAITING LDA FATHR ADA D14 LDA A,I AND B377 SZA,RSS JMP L373 CCB * STB MORE * BEGIN ADA DM1 CONVERT TO ID SEGMENT ADDRESS MPY $IDSZ ADA $IDA STA FATHR * I := I + 3; LDA I * ADA D3 * STA I * & CHECK FOR FULL OUTPUT BUFFER * IF I > 35 THEN LDA I ADA DM34 SSA JMP L354 * BEGIN & WRITE LINE, THEN CLEAR BUFFER * JSB PRINT DEF BUFR D38 DEC 38 * FILL(BUFR,BLANK); JSB BFILL * I := 20; LDA D20 STA I * END; * END; * END; JMP L354 * END; * & PRINT OUTPUT BUFFER * PRINT1(I+3); L373 LDA I ADA D3 STA T1 JSB PRINT DEF BUFR T1 DEC 0 * LINK := IGET(LINK); & NEXT ID SEGMENT IN LIST OR 0 LDA LINK,I STA LINK * END * UNTIL LINK=0; SZA JMP L338 * & PRINT LINE OF HYPHENS * FILL(BUFR,"--"); LDA HYPHN JSB FILL * JSB PRINT DEF BUFR DEC 35 * END * ELSE JMP L384 * & NO PROGRAMS IN "AVAILABLE MEMORY" LIST * L383 JSB PRINT DEF MHED1 D20 DEC 20 * BLINE; L384 JSB BLINE * END OF AVMEM; JMP AVMEM,I HED DSINF: PRINT I/O CLASS INFORMATION * (C) HEWLETT-PACKARD CO. *PROCEDURE CLASS; * BEGIN * * COMMENT * +-------------------------------+ * ! PRINT I/O CLASS INFORMATION ! * +-------------------------------+; * *INTEGER NBLCK, & NUMBER OF BLOCKS WAITING IN SAM NBLCK BSS 01 * TBLCK; & TOTAL SIZE OF SAM BLOCKS FOR A CLASS TBLCK BSS 01 * CHED1 ASC 11, I/O CLASS INFORMATION CHED2 ASC 12, CLASSES IN SYSTEM CHED3 ASC 10, CLASSES IN USE: CHED4 ASC 18, CLASS STATE GET OWNER CHED5 ASC 12, CLASSES AVAILABLE CHED6 ASC 11, BLOCK(S) WORDS] "[" BYT 133,0 * ACHD6 DEF CHED6 "BU" ASC 1,BU "AL" ASC 1,AL "GT" ASC 1,GT D4 DEC 4 B17 EQU D15 D32 DEC 32 DM31 DEC -31 $RTEL EQU DM31 $OPSY CODE FOR RTE-L DM34 DEC -34 DCLAS DEF $CLTA AVLBL BSS 1 NUMBER OF CLASSES AVAILABLE TADDR BSS 1 I/O CLASS OR RN TABLE ADDRESS TSIZE BSS 1 TABLE SIZE ENTRY BSS 1 TABLE ENTRY NUMBER TWORD BSS 1 CONTENTS OF TABLE ENTRY LINK BSS 1 ID SEGMENT WORD 1 LASTI BSS 1 AW11 DEF W11 * * & GET CLASS I/O TABLE START ADDRESS & NUMBER OF ENTRIES * GETCL(TADDR,TSIZE); CLASS NOP LDA DCLAS GET CLASS TABLE ADDRESS LDA A,I JSB INDR CHASE INDIRECT ADDRESS STA TADDR LDA A,I GET NUMBER OF ENTRIES STA TSIZE * & PRINT HEADINGS * BLINE; JSB BLINE * JSB PRINT DEF CHED1 DEC 11 * & PRINT NUMBER OF CLASSES * CNUMD(TSIZE,CHED2); LDA TSIZE JSB CNVTD DEF CHED2 * JSB PRINT DEF CHED2 D12 DEC 12 * BLINE; JSB BLINE * & PRINT HEAD FOR CLASSES IN USE * JSB PRINT DEF CHED3 D10 DEC 10 * JSB PRINT DEF CHED4 D18 DEC 18 * & LOOK AT EACH CLASS TO DETERMINE STATE AND POSSIBLE OWNER * AVLBL := 0; CLA STA AVLBL * FOR ENTRY := TADDR+1 TO TADDR+TSIZE DO LDA TADDR INA STA ENTRY LDB TADDR ADB TSIZE STB LASTI L424 CMA,INA ADA LASTI SSA JMP L498 * BEGIN * INTOF; JSB $LIBR NOP * IF (TWORD := IGET(ENTRY))=0 THEN LDA ENTRY,I STA TWORD SZA JMP L434 * BEGIN * INTON; JSB $LIBX DEF *+1 DEF *+1 * AVLBL := AVLBL + 1; & CLASS IS AVAILABLE ISZ AVLBL * END * ELSE JMP L497 * BEGIN * FILL(BUFR,BLANK); L434 JSB BFILL * CNUMD(ENTRY-TADDR,W3); LDA TADDR CMA,INA ADA ENTRY JSB CNVTD DEF W3 * * MOVE NAME OF OWNER PROGRAM, OR IF NO OWNERSHIP ASSIGNED * LDA ENTRY ADA TSIZE LDA A,I LOAD 2ND CLASS WORD SSA,RSS CLASS BEING FLUSHED? JMP L435 NO, CONTINUE * * THIS CLASS NUMBER IS CURRENTLY BEING FLUSHED BY * THE SYSTEM. LDA =AFL STA W8 JSB $LIBX RESTORE INTERRUPTS DEF *+1 DEF *+1 JMP L476 * L435 EQU * AND B377 MASK LOW 8 BITS SZA,RSS GLOBAL? JMP L442 YES,... ADA DM1 CONVERT TO MPY $IDSZ AN ID ADA $IDA SEGMENT ADDRESS ADA D12 NAME CLE,ELA CONVERT TO BYTE ADDRESS LDB AW16 CLE,ELB JSB .MBT MOVE TO PRINT BUFFER DEF D5 NOP JMP L443 * * MOVE * L442 JSB .DFER AW16 DEF W16 DEF NONE+4 * L443 EQU * * IF TWORD>0 THEN LDA TWORD SZA SSA JMP L456 * BEGIN & STATE 2--BUFFERED REQUESTS * & FOLLOW LINKS TO BLOCKS OF SAM * NBLCK := TBLCK := 0; CLA STA TBLCK STA NBLCK * WHILE TWORD>0 DO L441 LDA TWORD SZA SSA * BEGIN JMP L447 * NBLCK := NBLCK + 1; ISZ NBLCK * TBLCK := TBLCK + IXGET(TWORD+3); LDB TWORD ADB D3 JSB IXGET ADA TBLCK STA TBLCK * TWORD := IXGET(TWORD); LDB TWORD JSB IXGET STA TWORD * END; JMP L441 * INTON; L447 JSB $LIBX DEF *+1 DEF *+1 * & PRINT INFORMATION * & MOVE # OF BLOCKS AND WORDS HEAD TO OUTPUT BUFFER LDA ACHD6 LDB AW11 JSB .MVW DEF D11 NOP * & MOVE THE TOTAL (3 DIGITS) LDA NBLCK JSB CNVTD DEF W8 LDA "BU" STA W8 LDA W9 AND B377 IOR "[" STA W9 * CNUMD(TBLCK,HOLD1); LDA TBLCK JSB CNVTD DEF HOLD1 * MOVE(HOLD2,W16,4); DLD HOLD2 DST W16 * JSB PRINT DEF BUFR D22 DEC 22 * FILL(BUFR,BLANK); JSB BFILL * END * ELSE INTON; JMP L457 L456 JSB $LIBX DEF *+1 DEF *+1 * IF (TWORD AND @40000)=0 THEN L457 LDA TWORD AND B40K SZA JMP L461 * W8 := "AL" & ALLOCATED * ELSE LDA "AL" STA W8 JMP L476 * BEGIN * W8 := "GT"; & GET L461 LDA "GT" STA W8 * & SOMEONE MUST BE WAITING ON THIS CLASS'S GET LDA $ID# SET UP LOOP TO SEARCH ALL ID SEGMENTS, CMA,INA LOOKING FOR ONE WITH ADDRESS OF CLASS STA PRINT NUMBER IN 1ST TEMP WORD LDA $IDA STORE POINTER TO ID SEGMENTS STA LINK * WHILE IGET(LINK+1)#ENTRY DO L465 LDA LINK INA LDA A,I CPA ENTRY MATCH ADDRESS OF CLASS # ENTRY? RSS JMP L475 NO LDA LINK YES, MOVE PROGRAM NAME ADA D12 CLE,ELA CONVERT TO BYTE ADDRESS LDB AW11 CLE,ELB JSB .MBT MOVE PROGRAM NAME DEF D5 NOP JMP L476 * L475 EQU * LDA LINK ADVANCE TO NEXT ID SEGMENT ADA $IDSZ STA LINK ISZ PRINT END OF LOOP? JMP L465 NO, CONTINUE JMP L476 YES, PRINT * END; L476 EQU * * I := 18; & OUTPUT BUFFER POINTER LDA D18 STA I * & PRINT LINE OF INFORMATION FOR THIS CLASS LDA I STA T4 JSB PRINT DEF BUFR T4 DEC 0 * END; * END; L497 LDA ENTRY INA STA ENTRY JMP L424 * IF AVLBL=TSIZE THEN L498 LDA TSIZE CMA,INA ADA AVLBL SZA JMP L502 * JSB PRINT DEF NONE DEC 7 * ELSE JMP L507 * BEGIN & PRINT NUMBER OF AVAILABLE CLASSES * BLINE; L502 JSB BLINE * CNUMD(AVLBL,CHED5); LDA AVLBL JSB CNVTD DEF CHED5 * JSB PRINT DEF CHED5 DEC 12 * END; * BLINE; L507 JSB BLINE * END OF CLASS; JMP CLASS,I SPC 3 IDNUM BSS 1 INDEX INTO KEYWORD TABLE NONE ASC 7, HED DSINF: PRINT DS/1000 VALUES * (C) HEWLETT-PACKARD CO. *PROCEDURE VALUS; * BEGIN * * COMMENT * +------------------------+ * ! PRINT DS/1000 VALUES ! * +------------------------+; * * HEADINGS: VHED1 ASC 8, DS/1000 VALUES: VHED2 ASC 20, RESOURCE NUMBERS: OWNER LOCKER VHED3 ASC 13, MAXIMUM HOP COUNT VHD19 ASC 14, MAX LINK DOWN COUNT VHED4 ASC 11, PROGL MESSAGE LU VHED5 ASC 9, UPGRADE LEVEL APMSG ASC 11, LAST APLDR LOAD-NODE APNOD ASC 3, NONE VHD17 ASC 16, CLASSES ASSIGNED TO PROGRAMS: VHD12 ASC 12, TIMEOUT VALUES (SEC): VHD13 ASC 13, MASTER T/O VHD14 ASC 13, SLAVE T/O VHD15 ASC 13, REMOTE BUSY RETRIES VHD16 ASC 13, REMOTE QUIET WAIT VHD18 ASC 13, MAX RETRY DELAY VHED7 ASC 15, RFA FILES MAY BE OPEN IFZ ** SPACE SAVER ** VHED9 ASC 15, HP 3000 IS ON LU *DOWN* VHD20 ASC 12, BUFFER SIZE XXXXXX VHD10 ASC 21, LOCAL ID SEQUENCE: VHD11 ASC 21, REMOTE ID SEQUENCE: XIF ** END SPACE SAVER ** * * TABLES FOR RESOURCE NUMBER INFORMATION: * RNTAB DEF *+1,I DEF #MARN DEF #PLOG+1 DEF #TRCN DEF #CLRN DEF #QZRN DEF #QRN DEF #TBRN NUMRN ABS RNTAB+1-* * RNDES DEF *+1 ASC 8,MA TABLE ACCESS ASC 8,PLOG SYNCH. ASC 8,TRC65 TRACE ASC 8,QUEX CLEANUP ASC 8,QUEZ "LISTEN" ASC 8,QUIESCENT ASC 8,TCB ACCESS * * TABLES FOR I/O CLASS INFORMATION: * CLTAB DEF *+1,I I/O CLASSES DEF #MAHC DEF #TRCL DEF #PLOG DEF #RSM DEF #OTCV DEF #INCV DEF #QCLM DEF #RTRY DEF #GRPM DEF #RPCV DEF #RQCV DEF #QXCL NUMCL ABS CLTAB+1-* * CLPRG DEF *+1 PROGRAM NAMES ASC 3, M. A. ASC 3,TRC65 ASC 3,PLOG ASC 3,RSM ASC 3,OTCNV ASC 3,INCNV ASC 3,QCLM ASC 3,RTRY ASC 3,GRPM ASC 3,RPCNV ASC 3,RQCNV ASC 3,QUEX * B377 OCT 377 UPMSK OCT 177400 PERID BYT 56,0 PERIOD, LEFT BYTE MASK2 OCT 177760 D5 DEC 5 D26 DEC 26 IFZ ** SPACE SAVER ** AVH10 DBL VHD10+13 AVH11 DBL VHD11+13 XIF ** END SPACE SAVER ** DRNTB DEF $RNTA RN BSS 1 FMTAD BSS 1 POINT BSS 1 CNTR BSS 1 GLBAL ASC 5, AGLBL DEF GLBAL AW3 DEF W3 * * PROCEDURE RNOUT(RN,FMTAD); RNOUT BSS 01 * VALUE RN,FMTAD; INTEGER RN,FMTAD; * BEGIN & PRINT RN INFORMATION AND B377 ISOLATE RESOURCE STA RN NUMBER. LDB RNOUT,I ISZ RNOUT STB FMTAD SZA,RSS IF RN NOT ASSIGNED, JMP RNOUT,I RETURN. * FILL(BUFR,BLANK); JSB BFILL * & MOVE TITLE LDA FMTAD LDB AW3 JSB .MVW DEF D8 NOP * & CONVERT RN NUMBER * W11 := KCVT(RN); LDA RN JSB KCVT1 STA W11 * & FIND LOCKER * TWORD := IGET(TADDR+RN); LDA TADDR ADA RN LDA A,I STA TWORD * IF (IDNUM := TWORD AND @377)=@377 THEN AND B377 STA IDNUM CPA B377 RSS JMP L548 * & MOVE "" LDA AGLBL LDB AW17 JSB .MVW DEF D5 NOP * ELSE IF IDNUM=0 THEN JMP L553 L548 LDA IDNUM SZA JMP L551 * & MOVE "" JSB .DFER AW18 DEF W18 DEF NONE+4 * ELSE JMP L553 * & MOVE THE PROGRAM NAME L551 CCA ADA IDNUM MPY $IDSZ ADA $IDA ADA D12 CLE,ELA LDB AW18 CLE,ELB JSB .MBT DEF D5 NOP * & FIND OWNER * IF (IDNUM := ROTATE(TWORD) AND @377)=@377 THEN L553 LDA TWORD ALF,ALF AND B377 STA IDNUM CPA B377 RSS JMP L555 * & MOVE "" LDA AGLBL LDB AW11 INB JSB .MVW DEF D5 NOP * ELSE IF IDNUM=0 THEN JMP L560 L555 LDA IDNUM SZA JMP L558 * & MOVE "" JSB .DFER AW13 DEF W13 DEF NONE+4 * ELSE JMP L560 * & MOVE THE PROGRAM NAME L558 CCA ADA IDNUM MPY $IDSZ ADA $IDA ADA D12 CLE,ELA LDB AW13 CLE,ELB JSB .MBT DEF D5 NOP * & PRINT INFORMATION L560 JSB PRINT DEF BUFR D21 DEC 21 * END OF RNOUT; JMP RNOUT,I AW17 DEF W17 * * SUBROUTINE TO PRINT CLASS NUMBER AND ASSIGNED PROGRAM NAME. * CALLING SEQUENCE: * LDA * JSB PRCLS * PRCLS NOP ENTRY. AND B377 ISOLATE NUMBER. SZA,RSS IF NOT ALLOCATED, JMP PRCLS,I RETURN. JSB CNVTD CONVERT TO AW1 DEF W1 ASCII DECIMAL. JSB .DFER MOVE DEF W5 PROGRAM PRGM NOP NAME. JSB PRINT PRINT DEF BUFR INFORMATION. DEC 7 JMP PRCLS,I RETURN. * * & PRINT HEADINGS VALUS NOP * BLINE; JSB BLINE * JSB PRINT DEF VHED1 DEC 8 * BLINE; JSB BLINE * & RESOURCE NUMBERS JSB PRINT DEF VHED2 DEC 20 * GETRN(TADDR,TSIZE); LDA DRNTB GET RN TABLE ADDRESS LDA A,I JSB INDR CHASE INDIRECT ADDRESS STA TADDR LDA A,I GET NUMBER OF ENTRIES STA TSIZE * PRINT ASSIGNED RESOURCE NUMBER INFORMATION LDA RNDES SET UP STA DESCR DESCRIPTION POINTER. LDA RNTAB SET UP RESOURCE STA POINT NUMBER POINTER. LDA NUMRN SET UP LOOP STA CNTR COUNTER. * RLOOP LDA POINT,I PRINT RN JSB RNOUT INFORMATION. DESCR DEF *-* ISZ POINT BUMP LDA DESCR POINTERS. ADA D8 STA DESCR ISZ CNTR IF MORE RNS, JMP RLOOP STAY IN LOOP. * * BLINE; JSB BLINE * ASSIGNED I/O CLASSES JSB PRINT PRINT DEF VHD17 HEADING. B20 DEC 16 LDA CLPRG SET UP PROGRAM STA PRGM NAME POINTER. LDA CLTAB SET UP CLASS STA POINT NUMBER POINTER. LDA NUMCL SET UP LOOP STA CNTR COUNTER. JSB BFILL * CLOOP LDA POINT,I PRINT CLASS JSB PRCLS INFORMATION. ISZ POINT BUMP LDA PRGM POINTERS. ADA D3 STA PRGM ISZ CNTR IF MORE CLASSES, JMP CLOOP STAY IN LOOP. JSB BLINE * & TIMEOUT VALUES JSB PRINT DEF VHD12 DEC 12 * CNUMD(-(MSTO OR @177400)*5,VHD13[10]); LDA #MSTO IOR UPMSK CMA,INA MPY D5 JSB CNVTD DEF VHD13+10 * JSB PRINT DEF VHD13 D13 DEC 13 * CNUMD(-(SVTO OR @177400)*5,VHD14[10]); LDA #SVTO IOR UPMSK MPY D5 CMA,INA JSB CNVTD DEF VHD14+10 * JSB PRINT DEF VHD14 DEC 13 * HOLD1 := KCVT(NOT(ROTATE(BREJ) OR @177760)); LDA #BREJ ALF,ALF IOR MASK2 CMA JSB KCVT1 STA VHD15+12 * JSB PRINT DEF VHD15 DEC 13 * CNUMD(-WAIT,HOLD1); LDA #WAIT CMA,INA JSB CNVTD DEF HOLD1 * MOVII(AHLD2,FADDRESS(VHD16)+12,4); LDA HOLD2 STA VHD16+11 LDA HOLD3 STA VHD16+12 * JSB PRINT DEF VHD16 DEC 13 * LDA #RDLY GET MAX RETRY DELAY. CMA,INA JSB CNVTD DEF VHD18+10 DLD VHD18+10 INCLUDE AND B377 DECIMAL PT. IOR PERID RRL 8 ROTATE INTO POSITION. DST VHD18+10 STORE. JSB PRINT DEF VHD18 DEC 13 * * BLINE; JSB BLINE * * MAXIMUM HOP COUNT LDA #MHCT CMA,INA JSB CNVTD DEF VHED3+10 JSB PRINT DEF VHED3 DEC 13 * MAXIMUM LINK DOWN COUNT LDA #MDCT CMA,INA JSB CNVTD DEF VHD19+11 JSB PRINT DEF VHD19 DEC 14 * PROGL MESSAGE LU LDA #PRLU JSB CNVTD DEF HOLD1 DLD HOLD2 DST VHED4+9 JSB PRINT DEF VHED4 DEC 11 * * APLDR DOWN-LOAD NODE LDA #LNOD GET THE DOWN-LOAD NODE NUMBER. CPA DM1 IF IT HAS NOT BEEN USED, JMP PRAPM THEN IGNORE THE CONVERSION. JSB CNVTD CONVERT TO ASCII, DEF APNOD AND CONFIGURE THE MESSAGE. PRAPM JSB PRINT PRINT NODE NUMBER (OR "NONE"). DEF APMSG DEC 14 * * UPGRADE LEVEL DOLVL LDA #LEVL JSB KCVT1 STA VHED5+8 JSB PRINT DEF VHED5 DEC 9 * * & NUMBER OF FILES WHICH MAY BE OPEN AT ONCE * CNUMD(RFSZ,VHED7[2]); LDA #RFSZ JSB CNVTD DEF VHED7+1 * JSB PRINT DEF VHED7 DEC 15 * IFZ ** SPACE SAVER ** * & CHECK FOR HP3000 AGAIN * IF LU3K#0 THEN LDA #LU3K SZA,RSS JMP L611 * BEGIN * BLINE; JSB BLINE * & HP3000 LU * VHED9[10] := KCVT(LU3K); LDA #LU3K JSB CNVTD DEF HOLD1 DLD HOLD2 DST VHED9+9 LDB D11 IF SIGN BIT LDA #QXCL SET IN QUEX SSA CLASS WORD, LDB D15 INCLUDE "DOWN". STB QLULN * JSB PRINT DEF VHED9 QLULN DEF *-* * & BUFFER SIZE LDA D$BSZ JSB CNVTD DEF VHD20+9 JSB PRINT DEF VHD20 DEC 12 * & LOCAL ID SEQUENCE LDA D$LID LOCAL ID POINTER IN "RES" LDB A,I B := NUMBER OF CHARACTERS STB I STORE IN I SZB,RSS IF # 0 JMP L603 INA A := ADDR OF CHARACTERS CLE,ELA CHANGE TO BYTE ADDR LDB AVH10 B := DEST ADDRESS JSB .MBT DEF I MOVE CHARACTERS NOP L603 LDA I A := NUMBER OF CHARACTERS * IF I>0 THEN SZA SSA JMP L607 * PRINT(VHD10,26+I); ADA D26 CMA,INA STA T3 JSB PRINT DEF VHD10 T3 DEC 0 * & REMOTE ID SEQUENCE L607 LDA D$RID GET REMOTE POINTER IN "RES" INA LDB A,I B := NUMBER OF CHARACTERS STB I STORE IN I SZB,RSS IF # 0, JMP L603A INA A := ADDR OF CHARACTERS CLE,ELA CHANGE TO BYTE ADDR LDB AVH11 B := DESTINATION ADDR JSB .MBT DEF I MOVE CHARACTERS NOP L603A LDA I A := NUMBER OF CHARACTERS * IF I>0 THEN SZA SSA JMP L611 * PRINT(VHD11,26+I); ADA D26 CMA,INA STA T7 JSB PRINT DEF VHD11 T7 DEC 0 XIF ** END SPACE SAVER ** * END; * BLINE; L611 JSB BLINE *END OF VALUS; JMP VALUS,I HED DSINF: DUMP CONTENTS OF DS SAM BLOCK * (C) HEWLETT-PACKARD CO. *PROCEDURE DUMP; * BEGIN * * COMMENT * +--------------------------------------+ * ! DUMP CONTENTS OF DS/1000 SAM BLOCK ! * +--------------------------------------+; * * INTEGER BADDR, & DUMP BEGINNING ADDRESS BADDR BSS 01 * EADDR, & DUMP ENDING ADDRESS EADDR BSS 01 * INCR; & ADDRESS INCREMENT INCR BSS 01 * DHED1 ASC 9, DUMP OF TCB BLOCK DHED2 ASC 25, LOC OCTAL CONTENTS OF LOC THROUGH LOC+6 DHED3 ASC 20, DUMP OF HP3000 TRANSACTION STATUS TABLE PLUS5 ASC 1,+5 PLUS6 ASC 1,+6 * D33 DEC 33 DM1 DEC -1 * PROCEDURE DODMP; DODMP BSS 01 * BEGIN * FILL(BUFR,BLANK); JSB BFILL * FOR I := BADDR STEP INCR UNTIL EADDR DO LDA BADDR STA I L637 CMA,INA ADA EADDR LDB INCR SSB CMA,INA SSA JMP L647 * BEGIN * & CONVERT ADDRESS * CNUMO(I,W2); LDA I JSB CNVTO DEF W2 * FOR J := 0 TO INCR-1 DO CLA STA J CCB ADB INCR STB T1 L641 CMA,INA ADA T1 SSA JMP L645 * & CONVERT CONTENTS * CNUMO(SAM[I+J-FWAM],BUFR[7+4*J]); LDA I ADA J CMA ADA #FWAM CMA JSB .CAX JSB .LAX DEF SAM LDB J RBL,RBL ADB D6 ADB AW1 STB T8 JSB CNVTO T8 DEF *-* LDA J INA STA J JMP L641 * & PRINT L645 JSB PRINT DEF BUFR LEN1 NOP * END; LDA I ADA INCR STA I JMP L637 * BLINE; L647 JSB BLINE * END OF DODMP; JMP DODMP,I * * & GET DS/1000 SAM BLOCK DUMP NOP * GTSAM(SAM[0],SSIZE,PNTR[-3]); JSB GTSAM * SAMIN := TRUE; CCA STA SAMIN * BLINE; JSB BLINE * & DUMP TCB AREA IN SAM JSB PRINT DEF DHED1 D9 DEC 9 * LDA PLUS5 STA DHED2+24 JSB PRINT DEF DHED2 DEC 25 * & SET UP START, STOP, AND INCREMENT OF ADDRESS * BADDR := FWAM; LDA #FWAM STA BADDR * EADDR := (IF TST#0 THEN TST ELSE NRV) - 1; LDA #TST SZA,RSS LDA #NRV ADA DM1 STA EADDR * INCR := 6; LDA D6 STA INCR LDA D29 SET LEN1 STA LEN1 TO 29. * DODMP; JSB DODMP IFZ ** SPACE SAVER ** * & HP3000 CONNECTED? * IF LU3K#0 THEN LDA #LU3K SZA,RSS JMP L674 * BEGIN * & DUMP TST AREA IN SAM * JSB PRINT DEF DHED3 DEC 20 * LDA PLUS6 STA DHED2+24 JSB PRINT DEF DHED2 DEC 25 * & SET UP START, STOP, AND INCREMENT OF ADDRESS * BADDR := TST; LDA #TST STA BADDR * EADDR := FWAM + SSIZE - 1; CCA ADA #FWAM ADA SSIZE STA EADDR * INCR := 7; LDA D7 STA INCR LDA D33 SET LEN1 STA LEN1 TO 33. * DODMP; JSB DODMP * END; XIF ** END SPACE SAVER ** * END OF DUMP; L674 JMP DUMP,I HED DSINF: PRINT DS/1000 LISTS * (C) HEWLETT-PACKARD CO. *PROCEDURE LISTS; * BEGIN * * COMMENT * +----------------------------------+ * ! PRINT DS/1000 LIST INFORMATION ! * +----------------------------------+; * * INTEGER COUNT, & # OF ENTRIES IN A LIST COUNT BSS 01 * STCB, & # OF SLAVE TCB ENTRIES STCB BSS 01 * HEAD, & LIST HEAD HEAD BSS 01 * NEXT; & NEXT LIST ELEMENT NEXT BSS 01 * LHED1 ASC 7, DS/1000 LISTS LHED2 ASC 20, ENTRIES IN MASTER REQUEST LIST, ASC 9, STARTING AT LHED3 ASC 24, ACTIVE SLAVE MONITORS: 1ST TCB LHED4 ASC 24, STREAM CLASS MONITOR ENTRIES LOCATION LHED5 ASC 24, ENTRIES IN NULL LIST, STARTING AT LHED7 ASC 20, ENTRIES IN PROCESS NUMBER LIST, ASC 9, STARTING AT LHED8 ASC 16, ENTRIES IN SLAVE LISTS LHED9 ASC 14, PROG CLASS T/O CTR LHD10 ASC 10, PROG LOGLU BAW5 DBL W5 NOT15 OCT 77777 D2 DEC 2 D19 DEC 19 D39 DEC 39 RSTAR ASC 1, * * * PROCEDURE CHASE; CHASE BSS 01 * BEGIN * COMMENT CHASE A LIST TO ITS END; * COUNT := 0; CLA STA COUNT * WHILE NEXT#0 DO L705 LDA NEXT SZA,RSS * BEGIN JMP L710 * NEXT := SAM[NEXT-FWAM]; LDA #FWAM CMA,INA ADA NEXT JSB .CAX JSB .LAX DEF SAM STA NEXT * COUNT := COUNT + 1; ISZ COUNT * LDA LFLAG LONG FORMAT? SZA,RSS NO-- JMP L705 GET NEXT. * JSB BFILL JSB .ISX GET TCB JSB .LAX WORD 1. DEF SAM AND B377 ISOLATE TIMEOUT. CMA,INA SUBTRACT FROM ADA B377 OCTAL 377. MPY D5 MULTIPLY BY 5. STA T1 SAVE. IFZ ** SPACE SAVER ** LDB RSTAR JSB .LAX DEF SAM GET WORD 1. RAL IF "HP 3000" SSA BIT IS SET, STB W4 STORE "*". XIF ** END SPACE SAVER ** JSB .ISX GET TCB JSB .ISX WORD 3. JSB .LAX DEF SAM ISOLATE AND B377 CLASS #/LOG LU. STA T2 SAVE. JSB .ISX POINT TO WORD 4. JSB .LAX DEF SAM GET ID SEG ADDR. ADA D12 POINT TO CLE,ELA NAME (BYTE). LDB BAW5 GET DESTINATION. JSB .MBT DEF D5 MOVE 5 CHARACTERS. NOP LDA T1 CONVERT T/O JSB CNVTD CNTR OR DEST. NODE DEF W11 TO DECIMAL. LDA T2 CONVERT JSB CNVTD CLASS NUMBER OR LU DEF HOLD1 TO DECIMAL. DLD HOLD2 DST W8 JSB PRINT PRINT LINE OF DEF BUFR INFORMATION. LFLAG NOP * * END; JMP L705 * END; L710 LDA COUNT PUT COUNT IN A-REG. JMP CHASE,I RETURN. * * LISTS NOP * & PRINT HEADINGS * BLINE; JSB BLINE * JSB PRINT DEF LHED1 D7 DEC 7 * BLINE; JSB BLINE * & DO WE NEED TO GET SAM AND POINTERS? * IF NOT SAMIN THEN LDA SAMIN SSA JMP L721 * GTSAM(SAM[0],SSIZE,PNTR[-3]); JSB GTSAM * & CHECK OUT MASTER REQUEST LIST * HEAD := NEXT := PNTR[-1]; L721 LDA PNTR-1 STA NEXT STA HEAD CLA CLEAR "LONG" STA LFLAG FLAG (FOR CHASE). * CHASE; JSB CHASE * CNUMD(COUNT,LHED2[1]); JSB CNVTD DEF LHED2+1 * CNUMO(HEAD,LHED2[26]); LDA HEAD JSB CNVTO DEF LHED2+26 * PRINT(LHED2,39+19*SIGN(HEAD)); LDB D39 LDA HEAD SZA ADB D19 CMB,INB STB T2 JSB PRINT DEF LHED2 T2 DEC 0 * LDA HEAD GET HEAD OF LIST. SZA,RSS IF NOTHING THERE, JMP PRBL1 SKIP THE 2ND CHASE. STA NEXT SET UP CHASE POINTER. JSB PRINT PRINT DEF LHED9 HEADING. D14 DEC 14 LDA D13 SET "LONG" STA LFLAG FLAG (FOR CHASE). JSB CHASE DO "LONG" CHASE. * * BLINE; PRBL1 JSB BLINE * & CHECK SLAVE STREAMS CLA CLEAR "LONG" STA LFLAG FLAG (FOR CHASE). JSB PRINT DEF LHED3 DEC 24 JSB PRINT DEF LHED4 DEC 24 * STCB := 0; CLA STA STCB * FOR I := 0 TO LSTRM DO CLA STA I L733 CMA,INA ADA NOSTR SSA JMP L753 * BEGIN * HEAD := IGET(LDEF+2+I); LDA #LDEF ADA D2 ADA I LDA A,I STA HEAD * NEXT := PNTR[I]; JSB .LDX DEF I JSB .LAX DEF PNTR STA NEXT * FILL(BUFR,BLANK); JSB BFILL * & GET MONITOR NAME FROM ID SEGMENT LDA HEAD ADA D2 LDB A,I * (CHECK FOR INACTIVE MONITOR:) SZB,RSS JMP L751A LDB AW11 JSB .MVW DEF D3 NOP * TURN OFF POSSIBLE "NO-ABORT" BIT LDA W11 AND NOT15 STA W11 * W5 := KCVT(I); & STREAM NUMBER LDA I JSB KCVT1 STA W5 * W9 := KCVT(IGET(HEAD+1) AND @377); & CLASS NUMBER LDA HEAD INA LDA A,I AND B377 JSB CNVTD DEF W7 * IF NEXT>0 THEN LDA NEXT SZA SSA JMP L751 * BEGIN * & WE HAVE AN ACTIVE STREAM * CNUMO(NEXT,W21); & STARTING LOCATION JSB CNVTO DEF W21 * CHASE; JSB CHASE * CNUMD(COUNT,W16); & NUMBER OF ENTRIES JSB CNVTD DEF W16 * JSB PRINT DEF BUFR DEC 23 * STCB := STCB + COUNT; LDA STCB ADA COUNT STA STCB JMP L751A * END; * EMPTY SLAVE LIST-- W18:="0" L751 LDA "0" STA W18 JSB PRINT DEF BUFR DEC 18 *** * END; L751A LDA I INA STA I JMP L733 * & TOTAL NUMBER OF SLAVE TCBS * CNUMD(STCB,LHED8[1]); L753 LDA STCB JSB CNVTD DEF LHED8+1 * JSB PRINT DEF LHED8 DEC 16 * BLINE; JSB BLINE * & NULL LIST * HEAD := NEXT := PNTR[-2]; LDA PNTR-2 STA NEXT STA HEAD * CHASE; JSB CHASE * CNUMD(COUNT,LHED5[1]); JSB CNVTD DEF LHED5+1 * CNUMO(HEAD,LHED5[21]); LDA HEAD JSB CNVTO DEF LHED5+21 * PRINT(LHED5,29+19*SIGN(HEAD)); LDB D29 LDA HEAD SZA ADB D19 CMB,INB STB T5 JSB PRINT DEF LHED5 T5 DEC 0 * & PROCESS NUMBER LIST * HEAD := NEXT := PNTR[-3]; LDA PNTR-3 STA NEXT STA HEAD * CHASE; JSB CHASE * CNUMD(COUNT,LHED7[1]); JSB CNVTD DEF LHED7+1 * CNUMO(HEAD,LHED7[26]); LDA HEAD JSB CNVTO DEF LHED7+26 * PRINT(LHED7,39+19*SIGN(HEAD)); LDB D39 LDA HEAD SZA ADB D19 CMB,INB STB T6 JSB PRINT DEF LHED7 T6 DEC 0 * LDA HEAD GET HEAD OF LIST. SZA,RSS IF NOTHING THERE, JMP PRBL2 SKIP THE 2ND CHASE. STA NEXT SET UP CHASE POINTER. JSB PRINT PRINT DEF LHD10 HEADING DEC 10 LDA D10 SET "LONG" STA LFLAG CHASE FLAG. JSB CHASE DO THE CHASE. * * BLINE; PRBL2 JSB BLINE * SAMIN := FALSE; CLA STA SAMIN * END OF LISTS; JMP LISTS,I HED DSINF: PRINT DVT INFORMATION * (C) HEWLETT-PACKARD CO. *PROCEDURE LUTS; * * COMMENT * +----------------------------------+ * ! PRINT CONTENTS OF DS/1000 LUS ! * +----------------------------------+; * * BEGIN * EHED3 ASC 10, LU # , TYPE EHED4 ASC 18, WORD VALUE MEANING ASC 11, WORD VALUE MEANING BLANK EQU EHED4 EHED6 ASC 12, PARAMETERS/STATISTICS EHED7 ASC 13, FLAG BITS (DVT WORD 30) * * & DVT WORDS DESCRIPTIONS--20 CHARACTERS EACH ADV1 DEF *+1 ASC 10,DVT LINK WORD ASC 10,Q!RQST INITIATION LIST ASC 10,N!CIRCULAR NODE LIST ASC 10,P!CIRCULAR DVT LIST ASC 10,X!IFT REFERENCE ASC 10,AV!TYPE!STATUS ASC 10,SYSTEM FLAGS!LU LOCK!A!RS ASC 10,B!BUFFER ACCUM. ASC 10,S! HL-LL/16! LL/16 ASC 10,RESERVED ASC 10,T.O. LIST ASC 10,DEVICE T.O. VALUE ASC 10,I/F T.O. VALUE ASC 10,DEVICE DVR ADDR ASC 10,TY!E!Z!SUBFN!RQ ASC 10,RQ.PARM/ERR CODE ASC 10,RQST PARAM2/XLOG ASC 10,RQST PARAM3/EXT STAT1 ASC 10,RQST PARAM4/EXT STAT2 ASC 10,RETRY CNTR/READ PNTR ASC 10,1ST READ LEN/SKIP CT ASC 10,2ND READ LEN/READ CT ASC 10,READY FRAME LENGTH ASC 10,WRITE POINTER ASC 10,WRITE BUFFERS LENGTH ASC 10,MAX PSI FRAME SIZE ASC 10,NUM OUTPUT BUFFERS ASC 10,READ CONT ADDRESS ASC 10,WRITE CONT ADDRESS ASC 10,FLAG BITS* ASC 10,MISCELLANEOUS BITS * * * DESCRIPTION OF PARAMETERS & ERROR STATISTICS * ADESC DEF *+1 ASC 10,GOOD I-FRAMES RCVD ASC 10,RR FRAMES RECEIVED ASC 10,RNR FRAMES RECEIVED ASC 10,REJECT FRAMES RCVD ASC 10,RCV PROC OVERRUNS ASC 10,CRC ERRORS ASC 10,ABORT SEQ. RECEIVED ASC 10,RECEIVER OVERRUNS ASC 10,RX BUFFER OVERFLOWS ASC 10,FRAMES W/BAD ADDR ASC 10,CMDR FRAMES RCVD * PARAMETERS ASC 10,UNACK FR WINDOW SIZE ASC 10,N2 RETRY COUNT ASC 10,T1 T.O. IN 0.01 SEC * * * DESCRIPTION OF STATUS BITS (IN DVT EXT WORD # 12) * ASTDS DEF *+1 ASC 8, READ ABORTED BIT 0 ASC 8, WRITE ABORTED BIT 1 ASC 8, RD RQ PENDING BIT 2 ASC 8, WT RQ PENDING 3 ASC 8, BKPL LOCKED RP 4 ASC 8, BKPL LOCKED WP 5 ASC 8, SHORT TO ACTIVE 6 ASC 8, MED. T.O ACTIVE 7 ASC 8, LONG T.O ACTIVE 8 ASC 8, CONNECTED 9 ASC 8, START OF MSG. 10 ASC 8, NON-DS MODE 11 ASC 8, ASKED TO CONNCT 12 ASC 8, SEVERE ERROR 13 ASC 8, P-F RECONNECT 14 ASC 8, RFP WAIT 15 SPC 2 * BOARD PARAMETER MESSAGE: DO NOT REARRANGE NEXT LINES. ASTDX ASC 14, HDLC BOARD, FIRMWARE REV. ASTD. ASC 7,YYWW, SPEED: SPDX. ASC 5,........, SPD1 ASC 7,..TERNAL CLOCK ASTDN EQU *-ASTDX SIZE OF MESSAGE BPLN2 ASC 3, FCL SPD2 ASC 13, ...ABLED, DIAGNOSTIC HOOD DGH ASC 6, ... SENSED PRLN2 EQU *-BPLN2 SPC 2 * "SPEED SETTING" TABLE FOR FIRMWARE SPTBL DEF *+1 ASC 4,300 BPS ASC 4,1200 BPS ASC 4,2400 BPS ASC 4,4800 BPS ASC 4,9600 BPS ASC 4,19.2KBPS ASC 4,57.6KBPS ASC 4, MAXIMUM * @SPDX DEF SPDX. "EN" ASC 2, EN "DIS" ASC 2, DIS "IN" ASC 1,IN "ST" ASC 1,ST "PA" ASC 1,PA "NOT" ASC 2, NOT LUNUM BSS 01 TYPE BSS 01 * FPNTR, & FORMAT ADDRESS POINTER FPNTR BSS 01 * * INTEGER ARRAY EBUFR[1:22]; & HOLDS DVT WORDS EBUFR EQU *-1 BSS 31 * "0" ASC 1, 0 "1" ASC 1, 1 AW20 DEF W20 COL1 BSS 1 COL3 BSS 1 SKP * RETRIEVE DS/1000 DVT CONTENTS * * EBUFR+1 - BUFFER TO ACCOMODATE 19 WORDS OF DVT + 12 WORD EXTENT * LUNUM- LU NUMBER TO PRINT DVT INFORMATION ON (IF DEVICE TYPE * IS FOR DS LINK DRIVER) * * GTDVT NOP CCB STB TYPE LDA $LUT# IF REQUEST IS FOR N> NUMBER CMA,INA OF LUS IN SYSTEM, ERROR! ADA LUNUM SSA,RSS JMP GTDVT,I * CCA FIND ADA LUNUM ADDRESS OF ADA $LUTA LU TABLE ENTRY LDA A,I LOAD DVT ADDRESS SZA,RSS LU EMPTY? JMP GTDVT,I YES, RETURN STA DVADR SAVE ADA D5 CHECK TYPE CODE LDA A,I ALF,ALF POSITION TO RIGHT BYTE AND B77 AND ISOLATE. STA TYPE CPA B66 TYPE 66?? JMP MOVE JMP GTDVT,I NO, EXIT * * MOVE DVT TO LOCAL BUFFER MOVE LDA DVADR A := SOURCE ADDRESS LDB DVTBF B := DESTINATION JSB $LIBR MAKE SURE DVT ISN'T CHANGED NOP BY HOLDING OFF INTERRUPTS JSB .MVW MOVE 19 WORDS FROM DVT DEF D19 NOP * MOVE DVT EXTENSION LDA DVADR GET ADDRESS OF IFT EXTENSION ADA D4 (IT'S IN DVT WORD 5) LDA A,I SZA,RSS IF THERE AIN'T NONE, JMP ERTN SKIP THE MOVE. ADA D7 ADVANCE TO IFT EXTENSION AREA JSB .MVW MOVE 12 WORD EXTENSION DEF D12 NOP ERTN JSB $LIBX RESTORE INTERRUPTS. DEF *+1 DEF *+1 * JMP GTDVT,I * DVADR BSS 1 CNVRT NOP ADDRESS OF CONVERSION ROUTINE TO BE USED. B66 OCT 66 SPC 3 * SUBROUTINE TO MOVE DVT DESCRIPTION WORD TO PRINT BUFFER. * (A-REG CONTAINS DESTINATION ADDRESS, FPNTR CONTAINS SOURCE, * AND I CONTAINS WORD NUMBER. "CNVRT" MUST CONTAIN ADDRESS * OF CONVERSION ROUTINE TO BE USED--EITHER CNVTO OR CNVTD). * DVMOV NOP STA COL1 ADA D2 STA COL2 ADA D4 STA COL3 * COL1 := KCVT(I); & DVT WORD NUMBER LDA I JSB KCVT1 LDB CNVRT DO WE WANT TO PRINT THE WORD #? CPB @CNVD (WE PRINT DECIMAL WHEN WE DON'T) LDA BLANK USE BLANKS INSTEAD STA COL1,I * CONVERT ACCORDING TO REQUIRED NUMBER BASE (OCTAL OR DECIMAL) JSB .LDX DEF I JSB .LAX DEF EBUFR JSB CNVRT,I COL2 DEF *-* * & MOVE MEANING LDA FPNTR LDB COL3 JSB .MVW DEF D10 NOP * I := I + 1; ISZ I * POINT TO NEXT MEANING LDA FPNTR ADA D10 STA FPNTR * END OF DVMOV; JMP DVMOV,I SPC 3 * SUBROUTINE TO PRINT WORDS IN DVT BUFFER. * BEFORE CALLING, SET UP: * FPNTR - POINTER TO NEXT DVT WORD DESCRIPTION * I - NEXT DVT WORD NUMBER * A-REG - NEGATIVE NUMBER OF WORDS (CNTR) * B-REG - ADDRESS OF CONVERSION ROUTINE (CNVTO OR CNVTD) * PRWDS NOP ENTRY. STB CNVRT SAVE CONVERSION ROUTINE ADDRESS STA CNTR SAVE COUNTER. * ELOOP JSB BFILL CLEAR PRINT BUFFER. LDA AW3 MOVE LEFT JSB DVMOV DESCRIPTION. ISZ CNTR IF LAST WORD JMP MV#2 WAS DESCRIBED, CCA FAKE COUNTER STA CNTR TO -1. JMP PRDVI GO PRINT. * MV#2 LDA AW20 MOVE RIGHT JSB DVMOV DESCRIPTION. * PRDVI JSB PRINT PRINT DEF BUFR BOTH DEC 36 DESCRIPTIONS. * ISZ CNTR IF MORE TO DO, JMP ELOOP STAY IN LOOP. * JMP PRWDS,I RETURN. SPC 3 * * SUBROUTINE TO PRINT THE CONTENTS OF THE DVT BUFFER. * DVOUT NOP ENTRY. LDA TYPE WAS TYPE CPA B66 VALID LINK? RSS JMP DVOUT,I LDA LUNUM CONVERT LU JSB CNVTD NUMBER AND DEF HOLD1 STORE IN DLD HOLD2 PRINT BUFFER. DST EHED3+3 * LDA TYPE CONVERT DRIVER JSB CNVTO TYPE AND DEF HOLD1 STORE IN LDA HOLD3 PRINT BUFFER. STA EHED3+9 * JSB BLINE JSB PRINT PRINT DEF EHED3 DEC 10 HEADING. * LDA PBUFR+9 DID USER WANT CPA "AL" EVERYTHING? RSS OR CPA "IO" JUST DVT INFORMATION? RSS YES, CONTINUE JMP PRLBT NO, SKIP DVT INFO PRINTOUT * JSB PRINT DEF EHED4 D29 DEC 29 * * PRINT FIRST 31 WORDS OF DVT. * LDA ADV1 SET UP DESCRIPTION STA FPNTR POINTER TO DV1. CLA,INA SET DVT NUMBER STA I TO 1. LDB @CNVO (WE WANT OCTAL CONVERSION) LDA DM31 SET COUNTER TO 31. JSB PRWDS PRINT FIRST 31 WORDS. * * * IF THIS IS THE 2ND DVT OF A PAIR, THEN THE INFORMATION * IN THE DVT EXTENSION, COMMUNICATION STATISTICS, FIRMWARE * REV, SPEED, ETC., WILL ALL BE THE SAME. THIS SITUATION * IS DETECTED BY NOTING THAT THE IFT WILL BE THE SAME. * PRLBT LDA EBUFR+5 DOES THIS ENTRY HAVE THE CPA LIFT SAME IFT AS THE LAST ONE WE DID? JMP DVORT YES, EXIT THIS ROUTINE STA LIFT SAVE "LAST IFT" ADDRESS * * SET UP TO ANNOTATE STATUS BITS IN DVT EXT (WORD 12) * * THE CODE BELOW FORMATS ALL 16 BITS INTO FOUR LINES OF FOUR FIELDS EACH. * JSB BLINE JSB PRINT PRINT ANNOTATION HEADER DEF EHED7 DEC 13 LDA DM4 SET LINE COUNT STA CNTR FOR OUTER LOOP. LDA ASTDS SET DESCRIPTION STA HOLD1 POINTER. * IO02 LDB AW3 INITIALIZE INNER LOOP. STB HOLD1+1 LDA DM4 SET BIT COUNT STA T6 FOR INNER LOOP. JSB BFILL FILL THE PRINT LINE WITH BLANKS. * IO03 LDB EBUFR+30 PICK UP THE FLAG BITS. LDA "0" SET A-REGISTER TO "0" SLB OR "1" DEPENDING ON LDA "1" RIGHTMOST BIT. RBR SET UP TO TEST NEXT BIT. STB EBUFR+30 STA HOLD1+1,I STORE "0" OR "1" IN PRINT BUFFER. ISZ HOLD1+1 BUMP DESTINATION ADDRESS FOR MOVE. DLD HOLD1 PICK UP POINTERS. JSB .MVW DEF D8 MOVE DESCRIPTION TO PRINT LINE. NOP DST HOLD1 RESET POINTERS. * ISZ T6 HAVE 4 FIELDS BEEN MOVED? JMP IO03 NO. STAY IN INNER LOOP. * JSB PRINT PRINT THE FOUR DESCRIPTIONS. DEF BUFR DEC 38 * ISZ CNTR HAVE ALL 16 BITS BEEN CONVERTED? JMP IO02 NO. STAY IN OUTER LOOP. SPC 2 JSB BLINE * * CHECK FOR OPTIONAL THIRD PARAMETER. IF ANY VALUE SPECIFIED, * PICK UP INTERFACE PARAMETERS & ERROR STATISTICS. * STATISTICS ARE CLEARED BY THE I/F AFTER BEING READ. * LDA LUNUM SET UP SUB-FUNCTION IOR =B3600 STA BLINE * LDA PBUFR+9 IF THIRD PARAMETER CPA "AL" IS "AL" OR "ST", JMP BOARD READ STATISTICS CPA "ST" FROM THE BOARD. JMP BOARD CPA "PA" IF "PA", READ JUST JMP BORDP THE PARAMETERS. JMP DVORT OTHERWISE ALL DONE. * BOARD JSB EXEC READ DEF *+6 LONG-TERM DEF SD1 STATISTICS. DEF BLINE DVTBF DEF EBUFR+1 DEF D11 DEF D2 RSS IF RTE ABORTED CALL RAR,SLA OR IF DRIVER BURPED, JMP DVERR REPORT ERROR. * BORDP JSB EXEC READ DEF *+6 INTERNAL DEF SD1 PARAMETERS. DEF BLINE (LU + SUBFUNCTION) DEF EBUFR+12 DEF D5 DEF D1 RSS IF RTE ABORTED CALL RAR,SLA OR IF DRIVER BURPED, JMP DVERR REPORT ERROR. SPC 1 * THE 16-BIT QUANTITIES RETURNED BY THE DRIVER ARE IN * INVERTED-BYTE ORDER. REVERSE THEM. * REVRS LDA DM16 STA HOLD1 LDB DVTBF INITIALIZE BUFFER POINTER LOOPC LDA B,I LOAD THE DATA WORD, ALF,ALF REVERSE THE BYTES STA B,I AND PUT IT BACK. INB BUMP POINTER. ISZ HOLD1 END OF LOOP? JMP LOOPC NO. CONTINUE REVERSING. * SPC 1 * * PRINT BOARD TYPE, FIRMWARE REVISION CODE, AND SPEED. * LDA EBUFR+13 CONVERT JSB CNVTD REVISION DEF HOLD1 CODE. DLD HOLD2 DST ASTD. * LDA EBUFR+14 GET SPEED INDICATOR ASR 11 FROM ON-BOARD AND B34 SWITCH REGISTER. ADA SPTBL ADD SPEED TABLE ADDRESS. LDB @SPDX DESTINATION ADDRESS. JSB .MVW DEF D4 MOVE SPEED. NOP * LDA EBUFR+14 GET INTERNAL/EXTERNAL AND BIT9 CLOCK INDICATOR. LDB "IN" ASSUME INTERNAL CLOCK. SZA IF EXTERNAL, LDB "EX" MAKE MESSAGE "EXTERNAL". STB SPD1 STORE "IN" OR "EX". * JSB PRINT PRINT. DEF ASTDX ABS ASTDN * * DETERMINE FORCE COLD LOAD AND DIAGNOSTIC HOOD STATUS. * DLD "DIS" ASSUME FCL DST SPD2 DISABLED. LDA EBUFR+14 IF IT'S ENABLED, ALF,ALF SLA,RSS JMP CKDGH DLD "EN" REFORMAT DST SPD2 THE MESSAGE. * CKDGH LDA BLANK ASSUME HOOD LDB A SENSED. DST DGH LDA EBUFR+14 IF IT'S SLA NOT THERE, JMP PRP#2 DLD "NOT" REFORMAT DST DGH THE MESSAGE. * PRP#2 JSB PRINT DEF BPLN2 DEF PRLN2 SPC 1 * * SET UP HDLC CARD PARAMETERS * LDA EBUFR+16 MAKE T1 TIME-OUT CMA,INA POSITIVE. STA EBUFR+14 LDA EBUFR+15 GET "N2" VALUE AND B377 AND STORE IT STA EBUFR+13 IN WORD 13. XOR EBUFR+15 REMOVE IT FROM ALF,ALF WORD 15. STA EBUFR+12 STORE "K" VALUE. LDA ADESC SET UP STA FPNTR DESCRIPTION PNTR. LDA DM14 NUM OF WORDS STA HOLD1 IS 14. * * PRINT PARAMETERS AND (POSSIBLY) STATISTICS * CHKPA JSB BLINE LDA @CNVD USE DECIMAL STA CNVRT CONVERSION. LDA PBUFR+9 IF ONLY THE PARAMETERS CPA "PA" ARE NEEDED, USE JMP IOX2 THE SHORT SETUP. * * SET UP TO PRINT BOTH * CLA,INA WORD NUMBER STA I IS SET TO 1. LDA D12 HEADING IS STA T9 24 CHARACTERS. JMP IOX3 GO PRINT. * * SET UP TO PRINT JUST PARAMETERS * IOX2 LDA D12 START WITH STA I WORD 12. LDA DM13 HEADING IS STA T9 13 CHARACTERS. LDA FPNTR ADD 110 TO ADA D110 PARAMETER STA FPNTR POINTER LDA HOLD1 AND 11 TO ADA D11 LOOP STA HOLD1 COUNTER. * IOX3 JSB PRINT PRINT DEF EHED6 HEADING. T9 DEF *-* LDA HOLD1 LOAD WORD COUNT. LDB @CNVD (USE DECIMAL CONVERSION) JSB PRWDS GO PRINT. * DVORT JSB BLINE JMP DVOUT,I RETURN. "IO" ASC 1,IO @CNVO DEF CNVTO @CNVD DEF CNVTD SPC 2 * * PRINT MESSAGE WHEN INFORMATION CALL TO DVA66 FAILS. * DVERR JSB PRINT PRINT "DRIVER DEF DEVER ERROR". DEC 12 JMP DVORT RETURN. * DEVER ASC 12, DRIVER REPORTS ERROR SPC 1 BIT9 OCT 1000 B34 OCT 34 DM4 DEC -4 DM13 DEC -13 DM14 DEC -14 DM16 DEC -16 D110 DEC 110 SKP * SUBROUTINE TO PROCESS "LU" COMMAND SPC 2 LUTS NOP ENTRY FOR LU COMMAND. JSB BLINE PRINT BLANK LINE * PARSE INPUT BUFFER FOR "LU,N" OPTION JSB PARSE DEF *+4 DEF FNCTN DEF RDLEN DEF PBUFR * LDB "AL" LDA CONWD SZA NON-INTERACTIVE MODE? STB PBUFR+9 YES, PRINT ALL DVT INFO * LDA INDVT STA LIFT CLEAR LAST IFT ENTRY SZA,RSS IF "N" NOT SPECIFIED, JMP L857A PRINT ALL DS LUS. STA LUNUM GET LU# JSB GTDVT INFO. JSB DVOUT PRINT THE DVT INFO, IF IT'S A VALID LINK JMP LUTS,I RETURN. SPC 1 * PRINT ALL DS/1000 LUS: * * LUNUM := 1; L857A CLA,INA STA LUNUM L860 JSB GTDVT GATHER INFORMATION ON THIS LU JSB DVOUT PRINT INFO ON THIS LU, IF A VALID DS LINK LDA LUNUM CPA $LUT# LAST LU? JMP LUTS,I YES, RETURN TO CALLER ISZ LUNUM NO, GO AROUND AGAIN JMP L860 NO, PRINT MORE SPC 2 LIFT NOP LAST IFT ENTRY ADDRESS PBUFR BSS 33 PARSE BUFFER INDVT EQU PBUFR+5 SECOND PARAMETER SPC 2 UNL IFN LST HED DSINF: PRINT NRV * (C) HEWLETT-PACKARD CO. * NRV DISPLAY ROUTINE. * DSNRV NOP ENTRY. LDA #NCNT GET NEGATIVE NO. OF NODES. STA NCNT SAVE THE NUMBER OF NODES. CMA,INA,SZA,RSS ANYTHING SPECIFIED? JMP DSNRV,I NO--IGNORE THE REQUEST! * JSB CNVTD CONVERT TO ASCII. DEF NNODS * JSB BLINE * LDA #NODE GET LOCAL NODE NUMBER. JSB CNVTD CONVERT IT TO ASCII. DEF LOCLN JSB PRINT PRINT THE FIRST MESSAGE. DEF NODM1 DEC 10 JSB PRINT DEF NODM2 DEC 21 JSB BLINE JSB PRINT DEF NODM3 DEC 21 * LDA #NRV GET THE NRV ADDRESS, STA NPNT AND SAVE THE POINTER. * DLOOP JSB BFILL CLEAR THE PRINT BUFFER. * LDB NPNT GET A NODE NUMBER. JSB IXGET ISZ NPNT ADVANCE THE POINTER. SSA IF < 0, JMP BLENT IT'S A BLANK ENTRY. JSB CNVTD CONVERT. DEF W3 * LDB NPNT GET TIMEOUT/UPGRADE. JSB IXGET AND B17 ISOLATE THE UPGRADE. JSB CNVTD CONVERT. DEF W17 * LDB NPNT GET TIMEOUT/UPGRADE, AGAIN. JSB IXGET ISZ NPNT ADVANCE POINTER. ALF,ALF POSITION THE TIMEOUT AND B377 TO THE LOWER BYTE. SZA IF =0, THEN NO FILLING NEEDED. IOR DM256 FILL-IN THE UPPER BYTE. CMA,INA MAKE THE VALUE POSITIVE (OR 0). MPY D5 MULTIPLY BY FIVE. JSB CNVTD CONVERT. DEF W9 * LDB NPNT GET NEIGHBOR/LU. JSB IXGET AND B377 ISOLATE THE LU. STA T7 JSB CNVTD CONVERT. DEF W6 * LDB NPNT GET NEIGHBOR/LU JSB IXGET AGAIN. ISZ NPNT AND NBIT ISOLATE NEIGHBOR BIT. LDB LSTAR IF SET, PUT A SZA STAR NEXT TO STB W6 THE NODE NUMBER. * LDA T7 IF LU IS SZA,RSS ZERO (LOCAL), JMP PRNRV READY TO PRINT. * * * GOOD LU NUMBER. GET DRT INFORMATION. * JSB EXEC GET DEVICE TYPE DEF *+4 DEF D13 DEF T7 LU DEF #UNAK DEVICE TYPE LDA #UNAK LOAD DEVICE TYPE ALF,ALF ISOLATE DEVICE AND B77 TYPE. JSB CNVTO CONVERT TO DEF W15 OCTAL. * PRNRV JSB PRINT PRINT NODAL DEF BUFR INFORMATION. DEC 20 * ISZ NCNT ANY MORE TO PROCESS? JMP DLOOP YES, CONTINUE. * JSB BLINE JSB PRINT PRINT BOTTOM DEF NODM4 LINE. DEC 15 JSB BLINE * JMP DSNRV,I PROCESS COMPLETE--CHECK FOR NEW REQUEST. SPC 1 BLENT LDA @BLNK SET UP LDB AW3 "BLANK" JSB .MVW DEF W9 MESSAGE. NOP ISZ NPNT BUMP POINTER. ISZ NPNT JMP PRNRV GO PRINT. SPC 2 @BLNK DEF *+1 ASC 9,** BLANK ENTRY ** LSTAR ASC 1,* NBIT BYT 1,0 NODM1 ASC 10, NRV SPECIFICATIONS: NODM2 ASC 7, LOCAL NODE#: LOCLN ASC 3, ASC 8,, NO. OF NODES= NNODS ASC 3, * NODM3 ASC 18, NODE LU T/O(SEC) TYPE ASC 3, LEVEL NODM4 ASC 15, (* INDICATES NEIGHBOR) * DM256 DEC -256 * NCNT NOP NUMBER OF NODES NPNT NOP T7 NOP HED DSINF: MESSAGE ACCOUNTING * (C) HEWLETT-PACKARD CO. * +--------------------------------------+ * ! PRINT MESSAGE ACCOUNTING INFORMATION ! * +--------------------------------------+ SPC 1 MAHD1 ASC 16, MESSAGE ACCOUNTING INFORMATION MAHD2 ASC 22, NODE STATE # UNACK # LINEDOWNS TIMEOUT * @STBL DEF *+1 MA STATE TABLE "DOWN ASC 8,DOWNNONEUP PEND * NODE# NOP #DOWN NOP #UNAK NOP #TMAX NOP SPC 2 MSACT NOP ENTRY. JSB BLINE JSB PRINT PRINT HEAD. DEF MAHD1 DEC 16 * LDA #MCTR GET # OF ENTRIES. SZA,RSS IF NONE, JMP NOMA REPORT THE FACT. STA CNTR * JSB BFILL CLEAR PRINT BUFFER. * JSB BLINE JSB PRINT PRINT HEAD. DEF MAHD2 DEC 22 * LDB #MCTR+1 GET ADDRESS OF TABLE. ELB,CLE,ERB CLEAR DEBUG BIT. * CYCLE STB PNTR STORE ENTRY ADDRESS. JSB IXGET GET NODE #. SSA IF NEGATIVE, JMP EOC IT'S A DUMMY. STA NODE# SAVE NODE #. * INB GET STATE JSB IXGET WORD. CLB LSL 4 SHIFT IN # STB #UNAK UNACKNOWLEDGED. LSL 2 THROW AWAY CLB TWO BITS. LSL 8 MOVE IN STB #TMAX TIMEOUT. * ALF,RAR A-REG = OFFSET INTO TABLE. ADA @STBL GET ADDRESS OF STATE. DLD A,I GET 4-CHAR DESCRIPTION. DST W5 STORE IN PRINT BUFFER. * LDB PNTR GET WORD ADB D7 NUMBER 7 JSB IXGET (DOWN). LSL 4 CLB LSR 4 STA #DOWN * LDA NODE# CONVERT JSB CNVTD INFORMATION DEF W1 TO LDA #DOWN ASCII. JSB CNVTD DEF W14 LDA #UNAK JSB CNVTD DEF W8 LDA #TMAX JSB CNVTD DEF W19 * JSB PRINT PRINT DEF BUFR INFORMATION. DEC 21 * EOC LDB PNTR ADVANCE ADB D10 POINTER. ISZ CNTR IF MORE ENTRIES, JMP CYCLE STAY IN LOOP. * JMP EOMA ALL DONE. SPC 2 NOMA JSB PRINT PRINT DEF NOENT "NO ENTRIES" DEC 6 MESSAGE. SPC 1 EOMA JSB BLINE JMP MSACT,I RETURN. HED DSINF: NODAL REROUTING * (C) HEWLETT-PACKARD CO. * +-----------------------------------+ * ! PRINT NODAL REROUTING INFORMATION ! * +-----------------------------------+ SPC 1 RRHD1 ASC 13, REROUTING SPECIFICATIONS: RRHD2 ASC 11, UP/DOWN RRHD3 ASC 15, LU COST COUNTER STATUS "UP" ASC 2, UP SPC 2 RRTNG NOP ENTRY. JSB BLINE JSB PRINT PRINT HEAD. DEF RRHD1 DEC 13 * LDA #LCNT GET # OF ENTRIES. SZA,RSS IF NONE, JMP NORR REPORT THE FACT. CMA,INA MAKE NEGATIVE STA CNTR LOOP COUNTER. * JSB PRINT PRINT HEADS. DEF RRHD2 DEC 11 JSB PRINT DEF RRHD3 DEC 15 * JSB BFILL CLEAR PRINT BUFFER. * LDB #LV GET ADDRESS OF TABLE. STB PNTR STORE POINTER. * LOOPR LDB PNTR GET JSB IXGET BITS/LU #. CLE,ELA POSITION IN E. DLD "UP" SET PROPER MESSAGE IN SEZ PRINT BUFFER. JMP SUD DLD "DOWN SUD DST W13 * LDB PNTR JSB IXGET GET LU AGAIN. AND B377 ISOLATE IT. JSB CNVTD CONVERT TO ASCII. DEF W1 * ISZ PNTR LDB PNTR GET JSB IXGET COST. JSB CNVTD CONVERT TO ASCII. DEF W4 * LDB PNTR ADB D3 JSB IXGET GET UP/DOWN COUNTER. ADB D2 POINT TO STB PNTR NEXT ENTRY. CMA,INA MAKE COUNTER POSITIVE. JSB CNVTD CONVERT TO ASCII. DEF W8 * JSB PRINT PRINT DEF BUFR THE DEC 14 LINE. * ISZ CNTR IF MORE TO DO, JMP LOOPR STAY IN LOOP. JMP EORR SPC 2 NORR JSB PRINT PRINT DEF NOENT "NO ENTRIES". DEC 6 SPC 1 EORR JSB BLINE JMP RRTNG,I RETURN. UNL XIF LST HED DSINF: REMOTE SESSIONS * (C) HEWLETT-PACKARD CO. IFZ ** SPACE SAVER ** * +----------------------------------+ * ! PRINT REMOTE SESSION INFORMATION ! * +----------------------------------+ SPC 1 RSHD1 ASC 21, REMOTE SESSIONS ESTABLISHED AT THIS NODE RSHD2 ASC 11, SOURCE SESSION ID RSHD3 ASC 20, NODE SOURCE LOCAL TIMER PROGRAM RSHD4 ASC 10, EMPTY ENTRIES CLONE ASC 4,(CLONE) @CLON DEF CLONE HFLAG NOP NOTUS NOP CLONI NOP AW21 DEF W21 D60 DEC 60 SPC 2 RMSES NOP ENTRY. JSB BLINE JSB PRINT PRINT HEAD. DEF RSHD1 DEC 21 JSB BLINE * CLA CLEAR STA HFLAG HEADING FLAG STA NOTUS AND REM SES COUNT. LDB #POOL GET # OF REMOTE JSB IXGET SESSION ENTRIES. SZA,RSS IF NONE, JMP NORS REPORT "NO ENTRIES". STA CNTR STORE # OF ENTRIES. INB SET POINTER TO 1ST ENTRY. STB PNTR * RSMLP LDB PNTR JSB IXGET GET FIRST WORD OF ENTRY. SSA IF SIGN BIT IS SET, JMP USED ENTRY IS IN USE. * * EMPTY ENTRY FOUND * ISZ NOTUS BUMP UNUSED ID COUNTER. LDB PNTR POINT TO ADB D7 NEXT ENTRY. STB PNTR JMP ENRLP GO TO END OF LOOP. SPC 1 * * ENTRY FOUND IN USE. PRINT INFORMATION. * USED LDA HFLAG GET HEADING FLAG. SZA IF SET, PRINT ENTRY. JMP PRENT * ISZ HFLAG SET HEADING FLAG. JSB PRINT PRINT HEADINGS. DEF RSHD2 DEC 11 JSB PRINT DEF RSHD3 DEC 20 * PRENT JSB BFILL FILL PRINT LINE WITH BLANKS. * JSB IXPTR GET FIRST WORD. STA CLONI SAVE TEMPORARILY. AND B377 ISOLATE LOCAL SESSION ID. JSB CNVTD CONVERT TO DECIMAL DEF W9 AND PUT IN PRINT LINE. * JSB IXPTR GET SOURCE NODE. JSB CNVTD CONVERT TO DECIMAL DEF W2 AND PUT IN PRINT LINE. * LDA CLONI GET CLONE INDICATOR. AND BIT14 SZA,RSS IF NOT SET, JMP GTSRC GO GET SOURCE ID. * LDA @CLON MOVE LDB AW21 "(CLONE)". JSB .MVW DEF D4 * GTSRC JSB IXPTR GET NEXT WORD. AND B377 ISOLATE SOURCE ID WORD. JSB CNVTD CONVERT TO DECIMAL DEF W6 AND PUT IN PRINT BUFFER. * JSB IXPTR GET PROGRAM SZA NAME. IF NON-0, STA W18 STORE CHAR 1 & 2. JSB IXPTR SZA STA W19 STORE CHAR 3 & 4. JSB IXPTR SZA,RSS JMP GTIMR AND UPMSK IOR B40 STA W20 STORE CHAR 5. * GTIMR JSB IXPTR GET # SEC/5. CLB DIVIDE BY 12 DIV D12 FOR MINUTES. STB SEC MULTIPLY REMAINDER CLE,ELB BY 5 FOR # OF ELB SECONDS. ADB SEC STB SEC CLB DIV D60 DIVIDE BY 60 STB MIN FOR HOURS. STA HOUR * LDA SEC CONVERT JSB KCVT1 SECONDS IOR "00" TO STA W16 ASCII LDA MIN CONVERT JSB KCVT1 MINUTES. IOR "00" LDB COLON RRR 8 DST W14 LDA HOUR CONVERT JSB KCVT1 HOURS. STA W13 * JSB PRINT PRINT ENTRY DEF BUFR INFORMATION. DEC 24 * * END OF REMOTE SESSION LOOP * ENRLP ISZ CNTR IF MORE TO DO, JMP RSMLP STAY IN LOOP. * JSB BLINE LDA NOTUS JSB CNVTD DEF RSHD4 JSB PRINT PRINT NUMBER DEF RSHD4 OF FREE REMOTE DEC 10 SESSION ENTRIES. JMP EORS SPC 2 NORS JSB PRINT PRINT DEF NOENT "NO ENTRIES". DEC 6 SPC 1 EORS JSB BLINE JMP RMSES,I RETURN. SPC 3 * SUBROUTINE TO LOAD CONTENTS OF PNTR FROM SYSTEM MAP INTO A-REG. IXPTR NOP ENTRY. LDB PNTR LOAD ADDRESS. JSB IXGET (CROSS) LOAD CONTENTS. ISZ PNTR BUMP PNTR. JMP IXPTR,I RETURN. XIF ** END SPACE SAVER ** HED DSINF: LARGE BUFFER FOR SAM * (C) HEWLETT-PACKARD CO. NOENT ASC 6, NO ENTRIES * SAM BSS 740 SPC 2 PNTR EQU *+3 POINTERS INTO SAM BSS LSTRM+4 SPC 1 BSS 0 SIZE OF DSINF SPC 1 UNS END DSINF