ASMB,Q,C,N HED DSINF: DS/1000 INFORMATION * (C) HEWLETT-PACKARD CO. IFN NAM DSINF,19,65 91750-16077 REV.2013 800612 MEF EXT DEXEC,D#OPS XIF IFZ NAM DSINF,19,65 91750-16078 REV.2013 800612 MEF XIF SPC 1 SUP A EQU 0 B EQU 1 EXT $LIBR,$LIBX,$OPSY,PARSE,KCVT,CNUMO,CNUMD EXT XLUEX,EXEC,RMPAR,$CLAS,$RNTB,.DFER,PGMAD EXT .MVW,.MBT,.CBT,.LAX,.LDX,.ISX,.CAX,.DSX 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-18077 * RELOC: 91750-16077 (N OPTION) 91750-16078 (Z OPTION) * PGMR: DMT LST ******************************************** * * * NAME: DSINF (DS INFORMATION) * * * * SOURCE: 91750-18077 * * * * RELOCATABLE: 91750-16077 (N-OPTION) * * 91750-16078 (Z-OPTION) * * * * PROGRAMMER: DAVID TRIBBY * * * * DATE: APRIL 1977 * * * ******************************************** 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) 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 (N OPTION ONLY) * 64 DS/1000 EQT ENTRIES * 128 MESSAGE ACCOUNTING (N OPTION ONLY) * 256 REROUTING (N OPTION ONLY) * 512 REMOTE SESSIONS * * 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 (N OPTION ONLY) * EQ DS/1000 EQT ENTRIES * EQ,N PRINT INFORMATION ON EQT N * LU,N PRINT INFORMATION ABOUT LU N * MA MESSAGE ACCOUNTING (N OPTION ONLY) * RR REROUTING (N OPTION ONLY) * RS REMOTE SESSIONS * EX OR /E TERMINATE DSINF * *ALL OTHER CHARACTERS CAUSE THE FUNCTIONS TO BE LISTED ON THE *OUTPUT DEVICE.; SPC 3 * * THE LU AND EQ COMMANDS USE A THIRD PARAMETER WHICH CAN HAVE THESE VALUES: * CODE PRINT THIS INFORMATION * ---- ---------------------- * (NONE) LU, EQT, AND DRIVER TYPE \ ALWAYS * FLAG BITS IF DRIVER IS TYPE 66 > PRINTED * LONG TERM STATISTICS IF TYPE IS 67 / * IO EQT 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: * EQT # 4, LU # 12, TYPE 66 * WORD VALUE MEANING WORD VALUE MEANING * 1 0 I/O LIST ADDRESS 2 20461 INITIATION ADDRESS * 3 20464 CONTINUATION ADDR 4 30016 FLAGS/SUBCHNL/SC * 5 33004 AV/TYPE/STATUS 6 1102 CONWD * 7 36203 DATA BUFFER ADDRESS 8 15 DATA BUFFER LENGTH * 9 0 REQUEST BUFFER ADDR 10 0 REQUEST BUFFER LEN * 11 0 SERVICING PROCESS 12 25113 ASSOCIATED EQT * 13 25150 EQT EXTENSION ADDR 14 0 NOMINAL TIMEOUT * 15 0 TIMEOUT CLOCK 16 177766 RETRY CNTR/READ PNTR * 17 50 1ST READ LEN/SKIP CT 18 410 2ND READ LEN/SKIP CT * 19 0 FRAME LENGTH ON CARD 20 36220 WRITE POINTER * 21 0 WRITE BUFFERS LENGTH 22 1140 MAX PSI FRAME SIZE * 23 0 NUM OUTPUT BUFFERS 24 21346 READ CONT ADDRESS * 25 22071 WRITE CONT ADDRESS 26 13004 FLAG BITS * 27 110014 MISCELLANEOUS BITS * * FLAG BITS (EQT WORD 26) * 0 READ ABORTED 0 WRITE ABORTED 1 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 0 P-F RECONNECT 0 RFP WAIT * * BSC BOARD, FIRMWARE REV.2013, SPEED: 300 BPS , EXTERNAL CLOCK * FCL DISABLED, DIAGNOSTIC HOOD NOT SENSED * * PARAMETERS/STATISTICS * 2147 GOOD BLOCKS SENT 2147 GOOD BLOCKS RCVD * 0 BAD BLOCKS RECEIVED 8 NAKS RECEIVED * 0 WACKS SENT 0 WACKS RECEIVED * 0 TTDS SENT 0 TTDS RECEIVED * 17 RESPONSE ERRORS 1 3 SECOND TIMEOUTS * 0 LINE ERRORS 608 BLOCK SIZE (BYTES) * 8 RETRY LIMIT 255 CONNECT TIMER * 2880 TRACE SIZE (BYTES) 2 MODE * * * DIFFERENT STATISTICS AND PARAMETERS ARE PRINTED FOR THE HDLC BOARD * (THE BOARD PARAMETERS INDICATE WHICH TYPE OF FIRMWARE IS LOADED). * * 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 * KYWRD, & BASE OF KEYWORD TABLE KYWRD BSS 01 * MAXID, & # OF ENTRIES IN KEYWORD TABLE 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,D$BSZ,#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? * BASE PAGE LOCATIONS EQTA EQU 1650B FIRST WORD OF EQUIPMENT TABLE EQT# EQU 1651B DRT EQU 1652B 1ST WORD OF DEVICE REFERENCE TABLE LUMAX EQU 1653B NUMBER OF LOGICAL UNITS IN DRT KEYWD EQU 1657B FWA OF KEYWORD BLOCK SUSP2 EQU 1713B "WAIT SUSPEND" LIST SUSP3 EQU 1714B "UNAVAILABLE MEMORY" LIST * *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 * * * FOR MAPPED SYSTEMS, CONFIGURE DMS INSTRUCTIONS. LDA $OPSY RAR,SLA RSS RSS JMP STFLS LDA MWF CLB DST DMS1 LDA RSS STA DMS2 * *& 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 * L984 LDA $OPSY CPA $RTEL RTE-L? JMP WRSYS YES--PRINT ERROR. * * FIND # OF PROGRAM ID SEGMENTS IN SYSTEM *KYWRD := IGET(KEYWD) - 1; CCA ADA KEYWD STA KYWRD *I := 1; CLA,INA STA I *WHILE IGET(KYWRD+I)#0 DO L986 LDA KYWRD ADA I LDA A,I SZA,RSS * I := I + 1; JMP L988 LDA I INA STA I JMP L986 *MAXID := I - 1; L988 CCA ADA I 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 EQTS; LDA CONWD AND D64 SZA JSB EQTS 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 * IF (CONWD AND 512)#0 THEN RMSES; LDA CONWD AND D512 SZA JSB RMSES * 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 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 * $RTEL DEC -31 $OPSY FOR RTE-L 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 D9 * 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 LUS CPA "LU" RSS JMP *+3 JSB LUS 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 * ELSE IF FNCTN="RS" THEN RMSES CPA "RS" RSS JMP *+3 JSB RMSES JMP L939 * 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 DM11 DEC -11 D16 DEC 16 D64 DEC 64 D256 EQU B400 D512 DEC 512 D740 DEC 740 SD1 DEF 1,I @EXCW DBL EXECW EXECW ASC 3,EXECW PROMP ASC 9,/DSINF: 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, EQ DS/1000 EQT ENTRIES FUN8A ASC 17, EQ,N DS/1000 EQT ENTRY # N FUN8B ASC 17, LU,N EQT ENTRY FOR LU # N UNL IFN LST FUN11 ASC 16, MA MESSAGE ACCOUNTING FUN12 ASC 11, RR REROUTING UNL XIF LST FUN13 ASC 14, RS REMOTE SESSIONS 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 * UNL IFN LST JSB PRINT DEF FUN9 DEC 17 * UNL XIF LST JSB PRINT DEF FUN8 DEC 16 * JSB PRINT DEF FUN8A DEC 17 * JSB PRINT DEF FUN8B DEC 17 * UNL IFN LST JSB PRINT DEF FUN11 DEC 16 * JSB PRINT DEF FUN12 DEC 11 * UNL XIF LST JSB PRINT DEF FUN13 DEC 14 * 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, PT SZ PRGRM T PRIOR AMT.MEM FATHER * B40K OCT 40000 BIT14 EQU B40K B76K OCT 76000 B77 OCT 77 D3 DEC 3 D6 DEC 6 HYPHN ASC 1,-- "B" ASC 1,B WRD21 BSS 1 ID SEGMENT WORD 21 WRD22 BSS 1 ID SEGMENT WORD 22 FATHR BSS 1 FATHER'S ID SEGMENT WORD 1 BAW7 DBL W7 * AVMEM NOP JSB BLINE * IF (LINK := IGET(SUSP3))#0 THEN LDA SUSP3 STA LINK SZA,RSS JMP L383 * BEGIN * & PRINT HEADING JSB PRINT DEF MHED1 D15 DEC 15 * JSB BLINE * JSB PRINT DEF MHED2 DEC 23 * & PRINT A LINE OF HYPHENS * FILL(BUFR,"--"); LDA HYPHN JSB FILL * JSB PRINT DEF BUFR 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 * W10 := KCVT(IGET(LINK+14) AND @17); & TYPE LDA LINK ADA D14 LDA A,I AND B17 JSB KCVT1 STA W10 * W3 := KCVT(((WRD22:=IGET(LINK+21)) AND @77)+1); & PARTN LDA LINK ADA D21 LDA A,I STA WRD22 AND B77 INA JSB KCVT1 STA W3 * W5 := KCVT((WRD22 AND @76000)\@2000 + 1); & SIZE LDA WRD22 AND B76K CLB LSR 10 INA JSB KCVT1 STA W5 * CNUMD(IGET(LINK+6),W11); & PRIORITY LDA LINK ADA D6 LDA A,I JSB CNVTD DEF W11 * IF (WRD21 := IGET(LINK+20))<0 THEN W14:="B "; & BATCH? LDB "B" LDA LINK ADA D20 LDA A,I STA WRD21 SSA STB W14 * 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" BIT * IF (MORE := ((WRD21 AND @40000)#0)) THEN LDA WRD21 AND B40K SZA,RSS JMP L373 * BEGIN * & MOVE FATHER NAME(S) * FATHR := IGET(KYWRD + (WRD21 AND @377)); LDA WRD21 AND B377 ADA KYWRD LDA A,I STA FATHR * 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 * IF (MORE := (IGET(FATHR+20) AND @40000)#0) THEN LDA FATHR ADA D20 LDA A,I AND B40K SZA,RSS JMP L373 * BEGIN * I := I + 3; LDA I ADA D3 STA I * FATHR:=IGET(KYWRD+(IGET(FATHR+20) AND @377)); LDA FATHR ADA D20 LDA A,I AND B377 ADA KYWRD LDA A,I STA FATHR * & 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 22, CLASS STATE GET POSSIBLE 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 B174C OCT 17400 D4 DEC 4 B17 EQU D15 D32 DEC 32 B40 EQU D32 DM34 DEC -34 DCLAS DEF $CLAS 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 * * & GET CLASS I/O TABLE START ADDRESS & NUMBER OF ENTRIES * GETCL(TADDR,TSIZE); CLASS NOP LDA DCLAS GET CLASS TABLE ADDRESS 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 DEC 22 * & 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 * 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 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 * INTOF; JSB $LIBR NOP * LINK := IGET(SUSP2); & HEAD OF GENERAL WAIT QUEUE LDA SUSP2 STA LINK * WHILE LINK#0 AND IGET(LINK+1)#ENTRY DO L465 LDA LINK SZA,RSS JMP L467 LDA LINK INA LDA A,I CMA,INA ADA ENTRY SZA,RSS * LINK := IGET(LINK); JMP L467 LDA LINK,I STA LINK JMP L465 * INTON; L467 JSB $LIBX DEF *+1 DEF *+1 * IF LINK#0 THEN LDA LINK SZA,RSS JMP L473 * BEGIN & FOUND "GET" PROGRAM * & MOVE NAME TO OUTPUT BUFFER LDA LINK ADA D12 CLE,ELA LDB AW11 CLE,ELB JSB .MBT DEF D5 NOP * END * ELSE JMP L476 * & MOVE "" TO BUFFER L473 JSB .DFER AW11 DEF W11 DEF NONE+4 * END; * & PICK UP INDEX INTO KEYWORD TABLE, MODULO 32 * IDNUM := ROTATE(TWORD AND @17400); L476 LDA TWORD AND B174C ALF,ALF * IF IDNUM=0 THEN IDNUM:=32; SZA,RSS LDA D32 STA IDNUM * & FIND POSSIBLE OWNERS * I := 15; & OUTPUT BUFFER POINTER LDA D15 STA I * DONE := FALSE; CLA STA DONE * DO * BEGIN * LINK := IGET(KYWRD+IDNUM); L483 LDA KYWRD ADA IDNUM LDA A,I STA LINK * IF (IGET(LINK+14) AND @20)=0 AND IGET(LINK+12)#0 THEN ADA D14 LDA A,I AND B20 SZA JMP L490 LDA LINK ADA D12 LDA A,I SZA,RSS JMP L490 * BEGIN & GOOD ID SEGMENT * MOVII(LINK+12,AW1+I,5); LDA LINK ADA D12 CLE,ELA LDB AW1 ADB I CLE,ELB JSB .MBT DEF D5 NOP * IF (I := I + 4)>34 THEN LDA I ADA D4 STA I ADA DM34 SZA SSA JMP L490 * DONE := TRUE; & OUTPUT BUFFER IS FULL CCA STA DONE * END; * IF (IDNUM:=IDNUM+32)>MAXID THEN L490 LDA IDNUM ADA D32 STA IDNUM CMA,INA ADA MAXID SSA,RSS JMP L493 * DONE := TRUE; & ALL ID SEGMENTS CHECKED CCA STA DONE * END * UNTIL DONE; L493 LDA DONE SSA,RSS JMP L483 * & 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 DONE BSS 1 ALL POSSIBLE CLASS OWNERS FOUND? 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 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: * * 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 AVH10 DBL VHD10+13 AVH11 DBL VHD11+13 DRNTB DEF $RNTB 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 FROM IGET(KYWRD+IDNUM)+12 L551 LDA KYWRD ADA IDNUM LDA A,I 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 FROM IGET(KYWRD+IDNUM)+12 L558 LDA KYWRD ADA IDNUM LDA A,I 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 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 $OPSY GET THE SYSTEM SPECIFICATION. RAR,RAR SLA FOR NON-RTE-M SYSTEMS, JMP DOLVL THE PROCESS IS COMPLETE. 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 * & 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 * 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 * & 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; * 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. LDB RSTAR JSB .LAX DEF SAM GET WORD 1. RAL IF "HP 3000" SSA BIT IS SET, STB W4 STORE "*". 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 EQT INFORMATION * (C) HEWLETT-PACKARD CO. *PROCEDURE EQTS; * * COMMENT * +----------------------------------+ * ! PRINT CONTENTS OF DS/1000 EQTS ! * +----------------------------------+; * * BEGIN * EHED3 ASC 15, EQT # , 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 (EQT WORD 26) SPC 1 * BOARD PARAMETER MESSAGE: DO NOT REARRANGE NEXT LINES. ASTDX ASC 14, .... BOARD, FIRMWARE REV. ASTD. ASC 7,YYWW, SPEED: SPDX ASC 5,........, SPD1 ASC 7,..TERNAL CLOCK ASTDN EQU *-ASTDX 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 * * INTEGER ARRAY EBUFR[1:22]; & HOLDS EQT WORDS EBUFR EQU *-1 BSS 27 * "IN" ASC 1,IN "IO" ASC 1,IO "ST" ASC 1,ST "PA" ASC 1,PA "EN" ASC 2, EN "DIS" ASC 2, DIS "HDLC ASC 3, HDLC "BSC" ASC 3, BSC @HDLC DEF "HDLC @BSC DEF "BSC" "NOT" ASC 2, NOT * @SPDX DEF SPDX @CNVD DEF CNVTD @CNVO DEF CNVTO "0" ASC 1, 0 "1" ASC 1, 1 * INTEGER EQNUM, & EQT NUMBER EQNUM BSS 01 * NOTE: DO NOT CHANGE ORDER OF LUNUM AND OCTAL CONSTANT! LUNUM BSS 01 OCT 3600 SUBFUNCTION FOR XLUEX TYPE BSS 01 * FPNTR, & FORMAT ADDRESS POINTER FPNTR BSS 01 * * AW20 DEF W20 DM2 DEC -2 DM5 DEC -5 DM8 DEC -8 DM12 DEC -12 DM17 DEC -17 COL1 BSS 1 COL3 BSS 1 OLDSC BSS 1 SPC 1 * * (LYLE WEIMAN'S 11-2-76 VERSION MODIFIED BY DAVE TRIBBY) * * RETRIEVE DS/1000 EQT CONTENTS * * IBUF - BUFFER TO ACCOMODATE 15 WORDS OF EQT + 12 WORD EXTENT * EQTN - I'LL FIND THE FIRST EQT *AFTER* EQTN WHICH IS * DIRECTED TO DRIVER TYPE 65, 66, OR 67 AND RETURN THAT * EQT NUMBER IN EQTN. IF NO EQT IS FOUND, I'LL RETURN * ZERO IN EQTN. * VALUES RETURNED: * LU - AN LU POINTING TO THE EQT * TYPE - DRIVER TYPE (65, 66, OR 67) * GTEQT NOP LDA EQNUM CHECK OUT THE EQT NUMBER... SSA IF NEGATIVE, JMP DONE1 ALL DONE. LDA EQT# IF > NUMBER OF EQTS CMA,INA IN SYSTEM, ERROR! ADA EQNUM SSA,RSS JMP DONE1 * LOOP1 LDA EQNUM GET ADDRESS OF EQT. ISZ EQNUM POINT TO NEXT ONE. MPY D15 ADA EQTA STA EQADR SAVE. ADA D4 CHECK TYPE CODE. LDA A,I ALF,ALF POSITION TO RIGHT BYTE AND B77 AND ISOLATE. STA TYPE CPA B65 FOR DVA65? JMP MOVE YES, GO MOVE IT TO USER AREA CPA B66 SAME THING IF TYPE 66 JMP MOVE CPA B67 OR TYPE 67. JMP MOVE LDA EQNUM NO, WAS IT THE LAST ONE IN CPA EQT# THE SYSTEM? JMP DONE1 YES, ALL DONE! JMP LOOP1 NO, LOOK AGAIN! * * MOVE EQT TO USER BUFFER MOVE LDA EQADR A := SOURCE ADDRESS LDB EQTBF B := DESTINATION JSB $LIBR MAKE SURE EQT ISN'T CHANGED NOP BY HOLDING OFF INTERRUPTS JSB .MVW DEF D15 MOVE 15 WORDS FROM EQT. NOP * MOVE EQT EXTENSION LDA TYPE IF TYPE IS 67, CPA B67 JMP EQEXT SPECIAL CASE. LDA EQADR GET ADDRESS OF EQT EXTENSION ADA D12 IN EQT WORD 13. LDA A,I SZA,RSS IF THERE ISN'T ANY, JMP ERTN SKIP THE MOVE. MVEQX JSB .MVW MOVE 12 WORD EXTENSION. DEF D12 NOP ERTN JSB $LIBX RESTORE INTERRUPTS. DEF *+1 DEF *+1 * CLA,INA PRESET TO LU 1. STA LUNUM LDA LUMAX GET DRT TABLE SIZE. CMA,INA NEGATE AS COUNTER. STA C0UNT LDB DRT GET DRT ADDRESS. LOOP4 LDA B,I GET DRT ENTRY. AND B77 GET EQT NUMBER. CPA EQNUM IS IT OURS? JMP GTEQT,I YES. ALL DONE: RETURN. ISZ LUNUM NO. INDEX TO NEXT. INB ISZ C0UNT JMP LOOP4 KEEP GOING TILL RUN OUT... * CLA CAN'T FIND AN LU, SET IT = 0. STA LUNUM JMP GTEQT,I RETURN TO CALLER. * * CODE TO SET UP FOR DVG67 EQT EXTENSION EQEXT LDA FSTVL RESOLVE POSSIBLE JSB INDR INDIRECT. JMP MVEQX GO MOVE IT. * * GET HERE IF RUN OUT OF EQTS... DONE1 CLA RETURN WITH EQTN=0. STA EQNUM JMP GTEQT,I RETURN. * CNVRT BSS 1 C0UNT BSS 1 EQADR BSS 1 B65 OCT 65 B66 OCT 66 B67 OCT 67 SPC 3 * SUBROUTINE TO MOVE EQT DESCRIPTION WORD TO PRINT BUFFER. * (A-REG CONTAINS DESTINATION ADDRESS, FPNTR CONTAINS SOURCE, * AND I CONTAINS WORD NUMBER.) CNVRT CONTAINS ADDRESS OF NUMBER * CONVERSION ROUTINE: CNVTO (OCTAL) OR CNVTD (DECIMAL). * EQMOV NOP STA COL1 ADA D2 STA COL2 ADA D4 STA COL3 * COL1 := KCVT(I); & EQT WORD NUMBER (OCTAL CONVERSION ONLY) LDA I JSB KCVT1 LDB CNVRT CPB @CNVD LDA BLANK STA COL1,I * CNVRT(EBUFR[I],COL2); & CONTENTS 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 EQMOV; JMP EQMOV,I SPC 3 * SUBROUTINE TO PRINT WORDS IN EQT BUFFER. * BEFORE CALLING, SET UP: * FPNTR - POINTER TO NEXT EQT WORD DESCRIPTION * I - NEXT EQT WORD NUMBER * A-REG - NEGATIVE NUMBER OF WORDS (CNTR) * PRWDS NOP ENTRY. STA CNTR SAVE COUNTER. * ELOOP JSB BFILL CLEAR PRINT BUFFER. LDA AW3 MOVE LEFT JSB EQMOV DESCRIPTION. ISZ CNTR IF LAST WORD JMP MV#2 WAS DESCRIBED, CCA FAKE COUNTER STA CNTR TO -1. JMP PREQI GO PRINT. * MV#2 LDA AW20 MOVE RIGHT JSB EQMOV DESCRIPTION. * PREQI 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 EQT BUFFER. * EQOUT NOP ENTRY. LDA EQNUM CONVERT EQT JSB CNVTD NUMBER AND DEF HOLD1 STORE IN DLD HOLD2 PRINT BUFFER. DST EHED3+3 * LDA LUNUM CONVERT LU JSB CNVTD NUMBER AND DEF HOLD1 STORE IN DLD HOLD2 PRINT BUFFER. DST EHED3+8 * LDA TYPE CONVERT DRIVER JSB CNVTO TYPE AND DEF HOLD1 STORE IN LDA HOLD3 PRINT BUFFER. STA EHED3+14 * JSB BLINE JSB PRINT PRINT DEF EHED3 EQT DEC 15 HEADING. * LDA PBUFR+9 IF THE THIRD PARAMETER CPA "AL" IS "AL" OR "IO", JMP PEQHD PRINT THE EQUIPMENT CPA "IO" TABLE INFORMATION. JMP PEQHD * LDA TYPE GET DRIVER TYPE. CPA B65 IF 65, JMP EQORT ALL DONE. CPA B66 IF 66, JMP PFLBT PRINT FLAG BITS. JMP LSTAT FOR 67, DO STATS. * * PRINT EQUIPMENT TABLE INFORMATION * PEQHD JSB PRINT DEF EHED4 D29 DEC 29 * * PRINT FIRST 8 WORDS OF EQT. * LDA AEQ1 SET UP DESCRIPTION STA FPNTR POINTER TO EQ1. CLA,INA SET EQT WORD STA I NUMBER TO 1. LDB @CNVO USE OCTAL STB CNVRT CONVERSION. LDA DM8 SET COUNTER TO 8. JSB PRWDS PRINT FIRST 8 WORDS. * LDB TYPE IF TYPE CPB B67 IS 67, JMP LSTAT GO DO LONG-TERM STATS. * LDA DM2 PRINT WORDS JSB PRWDS 9 AND 10. * LDA DM12 ASSUME NEXT COUNT IS 12. LDB TYPE CPB B65 IF TYPE IS 65, JMP DOPR2 DO 2ND PRINT. * * MUST BE TYPE 66. LDA DM17 ASSUME COUNT IS 17. LDB EBUFR+13 IF NO EQT SZB,RSS EXTENSION, LDA DM5 ONLY 5 WORDS LEFT. LDB AEQ66 SET UP DESCRIPTION STB FPNTR POINTER. * DOPR2 JSB PRWDS PRINT REST OF EQT WORDS. * LDB TYPE IF DRIVER TYPE CPB B65 IS 65, JMP EQORT ALL DONE. * * DRIVER TYPE MUST BE 66. LDA EBUFR+13 IF NO SZA,RSS EQT EXTENSION, JMP EQORT RETURN. * * PRINT ANNOTATION OF FLAG BITS (EQT WORD 26) FOR DVA66. * * IF THIS IS THE 2ND EQT OF A PAIR, THEY WILL SHARE THE SAME * INTERFACE, SO DON'T PRINT FLAG BITS OR READ STATISTICS AGAIN. * PFLBT LDA EBUFR+4 GET EQT WORD 4. AND B77 ISOLATE SELECT CODE. CPA OLDSC SAME AS LAST ONE? JMP EQORT YES...RETURN. STA OLDSC SAVE SELECT CODE. SPC 1 JSB BLINE JSB PRINT PRINT HEADING. 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+26 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+26 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 * LDA LUNUM SET XLUEX "DON'T IOR BIT15 USE SST" BIT. STA LUNUM * 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 EQORT OTHERWISE ALL DONE! * BOARD JSB XLUEX READ DEF *+6 LONG-TERM DEF SD1 STATISTICS. DEF LUNUM EQTBF DEF EBUFR+1 DEF D11 DEF D2 RSS IF RTE ABORTED CALL RAR,SLA OR IF DRIVER BURPED, JMP DVERR REPORT ERROR. * BORDP JSB XLUEX READ DEF *+6 INTERNAL DEF SD1 PARAMETERS. DEF LUNUM DEF EBUFR+12 DEF D7 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 DM18 STA HOLD1 LDB EQTBF 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+12 ISOLATE AND B17 BOARD TYPE. LDB @BSC IF 0, IT'S SZA BSC. OTHERWISE LDB @HDLC IT'S HDLC. STB T10 JSB .DFER DEF ASTDX+1 T10 DEF *-* * 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 LDA EBUFR+12 GET BOARD AND B17 TYPE. SZA,RSS SET UP PROPER JMP DOBSC PARAMETERS. * * 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. JMP CHKPA * * SET UP BSC CARD PARAMETERS * DOBSC LDA EBUFR+18 MOVE DATA STA EBUFR+12 BLOCK SIZE. LDA EBUFR+17 GET CONNECT AND B377 TIMER AND STORE STA EBUFR+14 IN WORD 14. XOR EBUFR+17 REMOVE FROM WORD 17, ALF,ALF MOVE RETRY TO RIGHT BYTE, STA EBUFR+13 AND STORE IN WORD 13. LDA EBUFR+16 ISOLATE MODE AND B377 AND STORE BACK STA EBUFR+16 IN WORD 16. LDA BDESC SET DESCRIPTION STA FPNTR POINTER. LDA DM16 NUMBER OF WORDS STA HOLD1 IS 16. * * 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. JSB PRWDS GO PRINT. JMP EQORT RETURN. SPC 1 * * PRINT MESSAGE WHEN INFORMATION CALL TO DVA66 FAILS. * DVERR JSB PRINT PRINT "DRIVER DEF DEVER ERROR". DEC 12 JMP EQORT RETURN. * DEVER ASC 12, DRIVER REPORTS ERROR SPC 1 BIT9 OCT 1000 BIT15 OCT 100000 B34 OCT 34 DM4 DEC -4 DM13 DEC -13 DM14 DEC -14 DM16 DEC -16 DM18 DEC -18 D110 DEC 110 SPC 2 * * TYPE IS 67. PRINT SLC LONG TERM STATISTICS. LSTAT JSB BLINE JSB PRINT PRINT DEF SHEAD HEADING. DEC 13 LDA MSGTB INITIALIZE STA FPNTR MESSAGE POINTER. LDA D16 I := 16. STA I LDA @CNVD SET UP DECIMAL STA CNVRT CONVERSION. LDA DM11 SET UP COUNTER FOR 11 FIELDS. JSB PRWDS PRINT STATISTICS. * BLINE; EQORT JSB BLINE JMP EQOUT,I RETURN. SPC 3 * * "EQ" COMMAND STARTS HERE * EQTS NOP ENTRY FOR EQ COMMAND. CLA CLEAR "OLD" STA OLDSC SELECT CODE. JSB BLINE * LDA CONWD IF THIS IS A SZA NON-INTERACTIVE RUN, JMP L857 SET UP TO PRINT IO INFO. * * PARSE INPUT BUFFER FOR "EQ,N" AND STATISTICS OPTIONS * JSB PARSE DEF *+4 DEF FNCTN DEF RDLEN DEF PBUFR LDA INEQT IF "N" NOT SZA,RSS SPECIFIED, JMP L857A PRINT ALL DS EQTS. SSA IF NEGATIVE, JMP EQTS,I RETURN. ADA DM1 STA EQNUM GET EQT JSB GTEQT INFO. LDA INEQT WAS IT CPA EQNUM THE ONE SPECIFIED? JSB EQOUT YES--PRINT THE EQT. JMP EQTS,I RETURN. SPC 1 * PRINT ALL DS/1000 EQTS: * L857 LDA "AL" FOR NON-INTERACTIVE RUN, STA PBUFR+9 PRINT EVERYTHING. * * & SEARCH ALL EQTS * EQNUM := 0; L857A CLA STA EQNUM * DO * BEGIN * GTEQT(EBUFR[1],EQNUM,LUNUM); L860 JSB GTEQT * IF EQNUM#0 THEN LDA EQNUM SZA,RSS JMP EQTS,I * CALL SUBROUTINE TO PRINT EQT INFORMATION JSB EQOUT * END * UNTIL EQNUM=0; JMP L860 SPC 2 PBUFR BSS 33 PARSE BUFFER INEQT EQU PBUFR+5 SECOND PARAMETER * * & EQT WORDS DESCRIPTIONS--20 CHARACTERS EACH AEQ1 DEF *+1 ASC 10,I/O LIST ADDRESS ASC 10,INITIATION ADDRESS ASC 10,CONTINUATION ADDR ASC 10,FLAGS/SUBCHNL/SC ASC 10,AV/TYPE/STATUS ASC 10,CONWD ASC 10,DATA BUFFER ADDRESS ASC 10,DATA BUFFER LENGTH ASC 10,REQUEST BUFFER ADDR ASC 10,REQUEST BUFFER LEN ASC 10,COROUTINE ADDRESS ASC 10,CURRENT STATUS ASC 10,EQT EXTENSION ADDR ASC 10,NOMINAL TIMEOUT ASC 10,TIMEOUT CLOCK ASC 10,MICROCODE COUNT ASC 10,LAST WORD RECEIVED ASC 10,VERTICAL PARITY WORD ASC 10,DIAGONAL PARITY WORD ASC 10,TOTAL BLOCK TRANSFERS ASC 10,TOTAL WRITE RETRIES ASC 10,LU NUMBER * * EQT DESCRIPTIONS FOR DVA66 AEQ66 DEF *+1 ASC 10,SERVICING PROCESS ASC 10,ASSOCIATED EQT ASC 10,EQT EXTENSION ADDR ASC 10,NOMINAL TIMEOUT ASC 10,TIMEOUT CLOCK ASC 10,RETRY CNTR/READ PNTR ASC 10,1ST READ LEN/SKIP CT ASC 10,2ND READ LEN/SKIP CT ASC 10,FRAME LENGTH ON CARD 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 FLAG BITS (IN EXTENSION WORD # 12) * ASTDS DEF *+1 ASC 8, READ ABORTED BIT 0 ASC 8, WRITE ABORTED 1 ASC 8, RD RQ PENDING 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 1 * * STATISTICS AND PARAMETER DESCRIPTIONS * * HDLC BOARD * 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,RECIVER 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 * * BSC BOARD * BDESC DEF *+1 ASC 10,GOOD BLOCKS SENT ASC 10,GOOD BLOCKS RCVD ASC 10,BAD BLOCKS RECEIVED ASC 10,NAKS RECEIVED ASC 10,WACKS SENT ASC 10,WACKS RECEIVED ASC 10,TTDS SENT ASC 10,TTDS RECEIVED ASC 10,RESPONSE ERRORS ASC 10,3 SECOND TIMEOUTS ASC 10,LINE ERRORS * PARAMETERS: ASC 10,BLOCK SIZE (BYTES) ASC 10,RETRY LIMIT ASC 10,CONNECT TIMER ASC 10,TRACE SIZE (BYTES) ASC 10,MODE SPC 3 * SHEAD ASC 13, SLC LONG TERM STATISTICS MSGTB DEF *+1 ASC 10,READ REQUESTS ASC 10,WRITE REQUESTS ASC 10,MESSAGES TRANSMITTED ASC 10,SPURIOUS INTERRUPTS ASC 10,LINE ERRORS ASC 10,NAKS RECEIVED ASC 10,BCC/PARITY ERRORS ASC 10,LONG TIMEOUTS ASC 10,RESPONSE ERRORS ASC 10,RESPONSE REJ ASC 10,WACK/TTD RECEIVED EXT D$XS5 FSTVL DEF D$XS5+1 * HED DSINF: PRINT LU INFORMATION * (C) HEWLETT-PACKARD CO. * +---------------------------------+ * ! PRINT INFORMATION ON DS/1000 LU ! * +---------------------------------+ SPC 1 * NOTE: THE LU COMMAND WAS ADDED FOR COMPATIBILITY WITH DSINL, * THE VERSION OF DSINF FOR RTE-L (WRITTEN BY LYLE WEIMAN). * THE LU MUST BE SPECIFIED IN THE COMMAND (TO GET ALL LUS, * USE THE EQ COMMAND) AND IT IS NOT ACCESSABLE VIA RUN-TIME * PARAMETER 5. THE EQ COMMAND IS RETAINED BECAUSE IT IS * POSSIBLE SOME EQTS MAY NOT BE POINTED TO BY AN LU. SPC 1 LUS NOP ENTRY FOR LU COMMAND. CLA CLEAR "OLD" STA OLDSC SELECT CODE. JSB BLINE * PARSE INPUT BUFFER FOR LU NUMBER AND STATISTICS OPTION JSB PARSE DEF *+4 DEF FNCTN DEF RDLEN DEF PBUFR LDA INEQT IF "N" NOT SZA SPECIFIED, SSA OR NEGATIVE, JMP LUS,I RETURN. CMA,INA IF GREATER ADA LUMAX THAN LARGEST SSA LU NUMBER, JMP LUS,I RETURN. * LDA INEQT ADA DM1 ADA DRT GET EQT LDA A,I NUMBER FROM AND B77 DRT. STA INEQT SZA,RSS IF ZERO, JMP LUS,I RETURN. ADA DM1 STA EQNUM GET EQT JSB GTEQT INFORMATION. LDA INEQT IF LU POINTED CPA EQNUM TO A GOOD EQT, JSB EQOUT PRINT INFO. * JMP LUS,I RETURN. 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 25 * 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 W22 * 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 W15 * 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. * CMA,INA IF LU IS ADA LUMAX GREATER SSA,RSS THAN MAXIMUM, JMP LUINF LDA STARS PUT ASTERISKS STA W11 IN EQT AND STA W13 SUBCHANNEL FIELDS. JMP PRNRV GO PRINT. * * GOOD LU NUMBER. GET DRT INFORMATION. * LUINF CCA CALCULATE ADA DRT DRT ENTRY ADA T7 ADDRESS. LDA A,I GET CONTENTS. STA T2 AND B377 ISOLATE EQT NO. STA T3 JSB KCVT1 CONVERT TO DECIMAL. STA W11 * LDA T2 CLB LSR 11 ISOLATE SUBCHANNEL. JSB KCVT1 CONVERT TO DECIMAL. STA W13 * CCA CALCULATE ADA T3 EQT ENTRY MPY D15 ADDRESS. ADA EQTA ADA D4 GET WORD LDA A,I FIVE. ALF,ALF ISOLATE DEVICE AND B77 TYPE. JSB CNVTO CONVERT TO DEF W19 OCTAL. * PRNRV JSB PRINT PRINT NODAL DEF BUFR INFORMATION. DEC 24 * 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 22, NODE LU EQT SUB T/O(SEC) TYPE ASC 3, LEVEL NODM4 ASC 15, (* INDICATES NEIGHBOR) * DM256 DEC -256 * NCNT NOP NUMBER OF NODES NPNT 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. * +----------------------------------+ * ! 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 NOP * 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. 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