Trailing-Edge
-
PDP-10 Archives
-
bb-d868a-bm
-
3-sources/sysern.mac
There are 14 other files named sysern.mac in the archive. Click here to see a list.
TITLE SYSERN -- SYSTEM ERROR FILE PROCESSOR -- MAINLINE CODE
SUBTTL VERSION 11(614) K. COYE/ RLD/ PJB
;COPYRIGHT (C) 1972,1975,1977,1978 BY
;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
;
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
;TRANSFERED.
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
SEARCH SYRUNV
SEARCH SYRLOW
;*; SEARCH SCNMAC
.REQUIRE SYRLIB
;EXTERNALS DEFINED HERE ARE IN SYRLIB.MAC, THE LIBRARY
;OF COMMON ROUTINES FOR ALL PARTS OF THE SYSERR PACKAGE.
EXTERNAL DAEVER,HEADRD,ABORT,CHRCHK,DATECK,FILERR,TOOBIG,MBCHAR
EXTERNAL CNISUM,BADNAM,MASSVM,DEVCHK,ERRINT,SKIPIT,IDCHK
EXTERNAL STRCHK,DETCHK,DMPENT,HDRLST,PAGXCD,DVCHAR,TMCHAR
EXTERNAL SAYDAY,GETNBS,.OCTLE,.DECML,.ASCIE,.SIXBT
EXTERNAL .HAFWD,.SPECL,.HTIME,.PPNWW,.ODECW,.UDATE,.TASCI,.PPNWT
EXTERNAL .TDIRW,R5VSIX,MONVER,BADADD,TAB031,TYPAST,BLDPTR
EXTERNAL ACLST,SAVE4P,RET4P,HWDUMP,TYPBCD,LSTEB,JFLOOP,CNIDCD
EXTERNAL XORTAB,BITLST,.DVTAB,.MXBLK,.TRBLK,.SUBLK,.SECBK
EXTERNAL WDCNT,COMPAR,SKPRTN,TYPNBS,TITLST,SKIPWD,ADVBFF
EXTERNAL FIXBUF,STBUFF,INPWD,GOSUM,GETWD,FFPRNT,SLPRNT,CLPRNT
EXTERNAL TBPRNT,CHROUT,TTYSIX,MDECHR,FIXNAM
;INTERNALS DEFINED HERE ARE FOR USE BY SYRLIB
INTERNAL KONMSK,KLEDMP,MINERB,DEVDSP,MASLTH,ALLTBL
INTERNAL NAMLTH,TYPMES,LINE,ALLLTH,NAMTBL,DUMDAY
INTERNAL DEVTYP,ERINDX,PCSTBL,PDLPNT,BITCHK,ERRLTH
INTERNAL MASNAM,ERRTBL,SUMUPD,MASNA2,MASLT2
;DUMALL -- DUMMY MACRO LEVEL 3
;SUBMACRO DUMXXX
;ARGS
;NONE USED TO HOUSE LEVEL 2 SUBMACRO DUMXXX
;THOSE DEFINED HERE ARE THOSE FULLY PROCESSED BY
;THIS SEGMENT. PART OF EDIT #120.
DEFINE DUMALL<
DUM201
DUM202
DUM203
DUM210
DUM220
DUM230
DUM232
>
.JBVER==137
LOC .JBVER
BYTE (3)VWHO(9)VSYSER(6)VMINOR(18)VEDIT
SALL
TWOSEG
RELOC 400000
;DUMMY ROUTINE TOMAKEPACK. COMPILE
KLEDMP:
;SUBTAB -- SUBROUTINES TO OUTPUT ENTRY WORD IN DESIRED FORMAT
;SETUP P1=ADDRESS OF TEXT TO BE OUTPUT AS DESCRIPTOR
; FOR THIS DATA WORD.
; P2= WORD TO BE OUTPUT.
;CALL PUSHJ P,SUBTAB(MODE)
;
;RETURN CALL+1
;DISPATCHES TO APPROPIATE ROUTINE INTERNALLY TO DO WORD CONVERSION AND OUTPUT
SUBTAB: SINDEX <OCTLE>
SINDEX <DECML>
SINDEX <ASCIE>
SINDEX <SIXBT>
SINDEX <HAFWD>
SINDEX <SPECL>
SINDEX <HTIME>
SINDEX <PPNWW>
SINDEX <UDATE>
SINDEX <TASCI>
SINDEX <PPNWT>
;PROCSA -- STANDARD ENTRY PROCESSOR #1
;CALL JRST PROCSA
;
;RETURN JRST ABORT WHEN ENTRY IS PROCESSED OR ABORTED
;OPERATION IS CONTROLLED BY ENTRY IN CONTROL TABLE
;ROUTINE GETS AOB POINTER TO DESIRED WORD IN BUFFER
;IF THERE IS ONE PRESENT
;THEN DISPATCHES TO WORD PROCESSOR LEVEL
;VIA PUSHJ P,SUBTAB(MODE)
;PASSES BUFFER WORD IN P2 TO WORD PROCESSOR
PROCSN: SETZM OFFSET ;CLAR WORD OFFSET COUNT
MOVE P1,(CTINDX) ;PICKUP FIRST WORD IN CONTROL TABL
JUMPE P1,ABORT ;ABORT WHEN END OF CTL TABL SEEN
TLNE P1,770000 ;DO WE NEED TO GET AN AOB POINTER
PUSHJ P,GETAOB ;YES-WORD IS IN A RELOCATABL SUBTABLE IN ENTRY
LDB T2,[POINT 6,P1,11] ;**WATCHOUT**PICKUP WORD LOCATION IN ENTRY
ADD T2,OFFSET ;OFFSET CONTAINS AOB BLOCK STARTING LOCATION
CAML T2,ENTRWC ;[153]DONT TRY TO ACCESS WORDS OUTSIDE OF ENTRY
AOJA CTINDX,PROCSN ;GET NEXT WORD IN CTL TABLE
CAILE T2,WKSIZE ;MAKE SURE THE WORD ASKED FOR IS IN WORK BUFFER
AOJA CTINDX,PROCSN ;IGNORE AND GET NEXT WORD
MOVE P2,WKBUFF(T2) ;PICKUP DATA WORD IN WORK BUFF
LDB T3,[POINT 6,P1,17] ;****WATCHOUT**PICKUP WORD PROCESSES MODE
CAIG T3,SUBMAX ;***WATCHOUT***IS IT AN UNKNOWN MODE
PUSHJ P,SUBTAB(T3) ;ITS RECOGINIZED
AOJA CTINDX,PROCSN ;EITHER NOT KNOWN OR FALL HERE
GETAOB: LDB T2,[POINT 6,P1,5] ;PICKUP AOBJN POINTER ADDRESS IN ENTRY
;AOB GIVEN IS WITH REF TO HEADER
SKIPL T2,WKBUFF(T2) ;PICKUP THE ACTUAL POINTER AND SKIP IF LEGAL
JRST AOBQIT ;AOBJN POINTER = 0 CLEAN UP PDL AND GO TO PROCSN
SUB T2,HEADWC ;CORRECT AOB POINTER FOR HEADER SIZE
HRRZM T2,OFFSET ;SAVE IT IN OFFSET
MOVEM T2,AOBPNT ;SAVE POINTER FOR SPECL ROUTINE USAGE
POPJ P, ;VAMOOSE
;HERE WHEN AOBJN POINTER = POS IN LH
;NORMALLY SHOULD NOT HAPPEN
AOBQIT: POP P,T2 ;DUMMY POP TO FIX PDP
AOJA CTINDX,PROCSN ;BUMP CTINDX AND BACK TO START
SUBTTL DIALOG RELATED SUBROUTINES
;HERE IS THE DUMMY PROCSB FOR THIS HIGH SEG
;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
;WITH SYSERB.HGH
PROCSB: MOVE T1,[SIXBIT/SYSERB/]
MOVEM T1,OVRBLK+1 ;INTO THE SPEC AREA
SETZ 15,
MOVEM 17,SAVEAC+17
MOVEI 17,SAVEAC
BLT 17,SAVEAC+16 ;TUCK AWAY OUR AC'S
JRST OVRLAY ;NOW PLEASE OVERLAY US WITH PROCSB
;HERE IS THE DUMMY PROCSA FOR THIS HIGH SEG
;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
;WITH SYSERB.HGH
PROCSA: MOVE T1,[SIXBIT/SYSERA/]
MOVEM T1,OVRBLK+1 ;INTO THE SPEC AREA
SETZ 15,
MOVEM 17,SAVEAC+17
MOVEI 17,SAVEAC
BLT 17,SAVEAC+16 ;TUCK AWAY OUR AC'S
JRST OVRLAY ;NOW PLEASE OVERLAY US WITH PROCSB
;HERE IS THE DUMMY PROCSD FOR THIS HIGH SEG
;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
;WITH SYSERD.HGH
PROCSD: MOVE T1,[SIXBIT/SYSERD/]
MOVEM T1,OVRBLK+1 ;INTO THE SPEC AREA
SETZ 15,
MOVEM 17,SAVEAC+17
MOVEI 17,SAVEAC
BLT 17,SAVEAC+16 ;TUCK AWAY OUR AC'S
JRST OVRLAY ;NOW PLEASE OVERLAY US WITH PROCSB
;HERE IS THE DUMMY PROCSC FOR THIS HIGH SEG
;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
;WITH SYSERC.HGH
PROCSC: MOVE T1,[SIXBIT/SYSERC/]
MOVEM T1,OVRBLK+1 ;INTO THE SPEC AREA
SETZ 15,
MOVEM 17,SAVEAC+17
MOVEI 17,SAVEAC
BLT 17,SAVEAC+16 ;TUCK AWAY OUR AC'S
JRST OVRLAY ;NOW PLEASE OVERLAY US WITH PROCSC
;STARTN-- ROUTINE TO START AT WHEN OVERLAYED
;TO CORRECTLY PROCESS CURRENT ENTRY.
STARTN: MOVEI T1,CHROUT ;OUR TYPEOUT ROUTINE
PUSHJ P,.TYOCH## ;INIT SCAN
MOVE T1,ERTYPE ;CURRENT TYPE
PUSHJ P,ERRINT ;GET OUR INDEX VALUE
MOVE T1,ERTYPE ;CORRECT INDEX TO ENTCHR TABLE
MOVE T2,ENTCHR(T1) ;PICKUP ENTRY CHAR WORD
TLZ F,F.BTCK ;CLEAR EXAMINE ENTRY FLAG
TRNE F,F.SEQ
JRST START1
TLNN T2,E.LALL!E.LNXM!E.LPAR!E.LPER!E.LSUM ;ANY LISTING DESIRED
JRST SKIPIT ;SKIP THIS ENTRY
TLNE T2,E.LNXM!E.LPAR!E.LPER!E.LSUM ;ANY REASON TO DO BIT CHECKING?
TLO F,F.BTCK ;YES-SET FLAG TO DO IT LATER
START1: MOVE T3,ERTYPE ;GET CORRECT INDEX
AOS ENTCHR(T3) ;NO- BUMP COUNTER
SETZ WKINDX, ;CLEAR INDEX INTO BUFFER
SKIPG T1,ENTRWC ;PICKUP ENTRY LENGTH AND CHECK FOR LEGALITY
FATAL <ENTRY WITH ZERO LENGTH BODY SPECIFIED>
MOVE P4,ERRIND
TLNE F,F.BTCK ;ANY TO DO?
PUSHJ P,@BITCHK(P4) ;GO DO IT
TRNE F,F.REM ;[417]/REMOTE?
PUSHJ P,REMDAT## ;YES-DO IMAGE BINARY DUMP
PUSHJ P,HDRLST
MOVE T2,ALLIND
HRRZ T1,PCSTBL(T2)
HLRZ CTINDX,PCSTBL(T2) ;CONTROL TABLE ADDRESS
JRST (T1)
SUBTTL SPECIAL DECODING ROUTINES
NCUVER: TYPEIT (<
NETCON VERSION: >)
LDB T1,[POINT 9,P2,11] ;EDIT 106
PUSHJ P,.TOCTW ;OUTPUT MAJOR
LDB T1,[POINT 6,P2,17] ;NOW MINOR
JUMPE T1,NCUVC ;IF ANY
SOS T1 ;MAKE ALPHA OFFSET
IDIV T1,"Z"-"A"
JUMPE T1,NCUVS2
ADDI T1,"A"
PUSH P,T2
PUSHJ P,.TCHAR
POP P,T2
NCUVS2: MOVEI T1,"A"(T2) ;GET LOW LETTER
PUSHJ P,.TCHAR
NCUVC: MOVEI T1,"("
PUSHJ P,.TCHAR
LDB T1,[POINT 18,P2,35] ;CUST VER
PUSHJ P,.TOCTW
MOVEI T1,")"
PUSHJ P,.TCHAR
POPJ P,0
NL$RTN: LDB P1,[POINT 8,WKBUFF+NL%RTN,35] ;GET RETURN STATUS
CAIN P1,1 ;GOOD RELOAD?
POPJ P,0 ;YES! - LEAVE
IORI P1,777400 ;HW - -
HRRES P1,P1 ;FW - NEG.
MOVMS P1,P1 ;POS OFFSET
MOVE T1,NLLRES(P1) ;ADDR. OF REASON
PJRST .TSTRG
NLLRES: [ASCIZ/0-INVALID RETURN CODE/]
[ASCIZ/-1. INVALID FUNCTION OR OPTION/]
[ASCIZ/-2. INVALID MESSAGE FORMAT/]
[ASCIZ/-3. INSUFFICIENT STATUS/]
[ASCIZ/-4. INVALID RETURN CODE/]
[ASCIZ/-5. INVALID RETURN CODE/]
[ASCIZ/-6. INVALID RETURN CODE/]
[ASCIZ/-7. INVALID RETURN CODE/]
[ASCIZ/-8. INVALID LINE ID/]
[ASCIZ/-9. LINE IN WRONG STATE/]
[ASCIZ/-10. LINE COMMUNICATIONS ERROR/]
[ASCIZ/-11. INVALID NODE ID/]
[ASCIZ/-12. INVALID SERVER ID/]
[ASCIZ/-13. INVALID FILE/]
[ASCIZ/-14. CONFIGURATION DATA BASE ERROR/]
[ASCIZ/-15. RESCOURCE ERROR/]
[ASCIZ/-16. INVALID PARAMETER VALUE/]
[ASCIZ/-17. LINE PROTOCOL ERROR/]
[ASCIZ\-18. FILE I/O ERROR\]
;HERE START THE LISTING ROUTINES FOR NETWORK ERROR LOGGING
;MESSAGES. THE SAME CODE IS USED FOR BOTH MAINT. & OPR.
;LOG ENTRIES.
NLOG00: POPJ P,0 ;FOR NOW
;HERE START THE LISTING ROUTINES FOR DN64 STATISTICS, P2 HOLDS
;FIRST WORD OF ENTRY.
S6%LST: TYPEIT <
REASON FOR ENTRY: >
CAIN P2,1 ;STARTUP?
PUSHJ P,S6%LSA
CAIN P2,2 ;HOUR SINCE LAST ENTRY
PUSHJ P,S6%LSB
CAIN P2,3 ;SHUTDOWN?
PUSHJ P,S6%LSC
CAILE P2,3 ;UNKNOWN?
PUSHJ P,S6%LSD
MOVE P1,WKBUFF+S6%001 ;GET NEXT 4 BYTES (4-7)
TYPEIT <
PORT #: >
LDB T1,[POINT 8,P1,7]
PUSHJ P,.TOCTW ;
TYPEIT < LINE #: >
LDB T1,[POINT 8,P1,15]
PUSHJ P,.ODECW
TYPEIT < DEVICE #: >
LDB T1,[POINT 8,P1,23]
PUSHJ P,.ODECW
TYPEIT <
LINE DRIVER TYPE: >
LDB T2,[POINT 8,P1,31]
MOVE T1,[SIXBIT/DQ11/] ;ASSUME SOMETHING
CAIN T2,2 ;BUT CHECK
MOVE T1,[SIXBIT/DUP11/]
PUSHJ P,.TSIXN ;SAY IT IN SIXBIT
MOVE P1,WKBUFF+S6%S00 ;GET FIRST 4 STATUS BYTES (8-11)
TYPEIT < TERMINAL TYPE: >
LDB T2,[POINT 8,P1,15]
MOVEI T1,[ASCIZ/IBM 3780/]
CAIE T2,1 ;BETTER CHECK
MOVEI T1,[ASCIZ/IBM 2780/] ;OK, CHANGE IT
PUSHJ P,.TSTRG
TYPEIT <
FLAGS: >
LDB P2,[POINT 8,P1,23] ;GET FLAG BYTE
MOVEI T1,[ASCIZ/SIMULATE,/]
TRNN P2,1B35 ;CHECK BIT 0 OF BYTE
MOVEI T1,[ASCIZ/SUPPORT,/] ;IF CLEAR,CHANGE
PUSHJ P,.TSTRG ;SAY EITHER
MOVEI T1,[ASCIZ/ PRIMARY BSC STATION/]
TRNN P2,1B34 ;CHECK BIT 1 OF BYTE
MOVEI T1,[ASCIZ/ SECONDARY BSC STATION/] ;IF CLEAR,CHANGE
PUSHJ P,.TSTRG
TYPEIT <
LINE INFORMATION: >
LDB P2,[POINT 8,P1,31] ;P1 STILL HAS S6%S00
MOVEI T1,[ASCIZ/ ENABLED,/] ;SETUP
TRNE P2,1B35 ;IF NOT SET
PUSHJ P,.TSTRG ;DON'T LIST
MOVEI T1,[ASCIZ/ DTR,/]
TRNE P2,1B34
PUSHJ P,.TSTRG
MOVEI T1,[ASCIZ/ DSR/]
TRNE P2,1B33
PUSHJ P,.TSTRG
TYPEIT <
COUNT OF LINE DRIVER ERROR INTERRUPTS: >
;SETUP POINTERS ETC TO LIST LINE STATUS AND COUNTERS
SETZM P3 ;COUNT OF ITEMS LISTED
MOVE P4,[POINT 8,WKBUFF+S6%S01,7] ;INITIAL BYTE POINTER
LDB T1,P4 ;GET FIRST ITEM
ILDB T2,P4 ;GET HI BYTE
MOVE P2,[POINT 8,T1,27]
DPB T2,P2 ;PLACE HIGH BYTE
AOS P3 ;BUMP COUNT OF ITEMS LISTED
PUSHJ P,.ODECW
TYPEIT <
LINE DRIVER STATUS AT LAST ERROR INTERRUPT
REC. STATUS REGISTER: >
ILDB T1,P4 ;GET NEXT BYTE
ILDB T2,P4 ;GET HI BYTE
DPB T2,P2 ;PLACE HIGH BYTE
PUSHJ P,.TOCTW
AOS P3 ;BUMP COUNT
TYPEIT <
XMIT STATUS REGISTER: >
ILDB T1,P4 ;AGAIN,NEXT BYTE
ILDB T2,P4 ;GET HI BYTE
DPB T2,P2 ;PLACE HIGH BYTE
PUSHJ P,.TOCTW
PUSHJ P,.TCRLF
AOS P3
;NOW USE ITEM DESCRIPTION TABLES AND A LOOP.
S6%LS0: ;CHANGED WITH EDIT 546
MOVE T1,S6%NAM(P3) ;GET ADDRESS OF ITEM NAME
PUSHJ P,.TSTRG
PUSHJ P,.TTABC
ILDB T1,P4 ;GET THE COUNTER VALUE
ILDB T2,P4 ;GET HI BYTE
DPB T2,P2 ;PLACE HIGH BYTE
PUSHJ P,.ODECW ;PRINT DEC.VALUE WITH PERIOD
AOS P3 ;BUMP COUNT
CAIN P3,32 ;DONE ALL 32 ITEMS?
JRST ABORT ;YES-DONE WITH ENTRY
PUSHJ P,.TTABC ;SPACE OVER
MOVE T1,S6%NAM(P3) ;GET ADDRESS OF ITEM NAME
PUSHJ P,.TSTRG
PUSHJ P,.TTABC
ILDB T1,P4 ;GET THE COUNTER VALUE
ILDB T2,P4 ;GET HI BYTE
DPB T2,P2 ;PLACE HIGH BYTE
PUSHJ P,.ODECW ;PRINT DEC.VALUE WITH PERIOD
AOS P3 ;BUMP COUNT
PUSHJ P,.TCRLF ;NEXT LINE
CAIE P3,32 ;ALL DONE?
JRST S6%LS0 ;NO, GET NEXT
JRST ABORT ;END OF ENTRY
S6%LSA: TYPEIT (D60SPL SIGNED ON)
POPJ P,0
S6%LSB: TYPEIT ( ENTRY RECORDED ON THE HOUR)
POPJ P,0
S6%LSC: TYPEIT (D60SPL SIGNED OFF)
POPJ P,0
S6%LSD: TYPEIT (UNKNOWN)
POPJ P,0
;HERE ARE NAMES OF ITEM COUNTERS
S6%NAM: 0
0 ;FIRST 3 ALREADY LISTED VIA "TYPEIT" AND COUNTER IS BUMPED
0 ;AFTER LISTING SO 2 BLANKS ARE NEEDED
[ASCIZ/RECEIVER OVERRUN/]
[ASCIZ/TRANSMITTER OVERRUN/]
[ASCIZ/CLEAR-TO-SEND FAILS/]
[ASCIZ/MSG'S SENT & ACK'D/]
[ASCIZ/MSG'S SENT & NAK'D/]
[ASCIZ/INVALID RESP. TO TTD/]
[ASCIZ/INVALID RESP. TO MSG'S/]
[ASCIZ/TTD'S SENT/]
[ASCIZ/WACKS'S REC'D/]
[ASCIZ/ EOT'S IN RESP. TO MSG'S/]
[ASCIZ/INVALID BIDS OR RESP.TO BIDS/]
[ASCIZ/RVI'S REC'D WHILE X-MIT/]
[ASCIZ/MSG'S REC'D & ACK'D/]
[ASCIZ/BAD BCC'S/]
[ASCIZ/NAK'S SENT FOR DATA MSG'S/]
[ASCIZ/WACK'S SENT/]
[ASCIZ/TTD'S REC'D/]
[ASCIZ/ EOT'S SENT OR REC'D/]
[ASCIZ/MSG'S IGNORED/]
[ASCIZ/ TRANSPARENT MSG'S W. INVALID CHAR. AFTER DLE/]
[ASCIZ/ATTEMPTS TO CHANGE MODE IN BLOCKED MSG/]
[ASCIZ/TRANSMITTER TIMEOUTS/]
[ASCIZ/CTS DELAY IN JIFFIES/]
;START EDIT [522]
;ROUTINE FOR LISTING NETWORK LINE COUNTERS
LC$CNT: JUMPE P2,ABORT ;IS COUNTER 0?
MOVNS P2 ;NO! - CREATE AOBJN POINTER
HRLZS P2 ; -COUNT IN LEFT HALF
HRRI P2,LC%TYP ; POINTER IN RIGHT HALF
LC.CNT: PUSHJ P,.TCRLF
HRRZ T1,WKBUFF(P2) ;GET COUNT
CAIL T1,400000 ;OVERFLOW?
PUSHJ P,LC.OVF ;YES!
PUSHJ P,.ODECW ;NO! - OUTPUT VALUE IN DECIMAL
PUSHJ P,.TTABC ;TAB
HLRZ T1,WKBUFF(P2) ;GET TYPE
MOVE T1,LC$TYP(T1) ;GET STRING POINTER
PUSHJ P,.TSTRG ;OUTPUT IT
AOBJN P2,LC.CNT ;DONE?
POPJ P,0 ;YES! - EXIT
LC.OVF: MOVEI T1,">" ;OUTPUT
PUSHJ P,.TCHAR ; 'GREATER THAN'
MOVEI T1,400000 ; '131072.'
POPJ P,0 ;CONTINUE
;NAMES OF LINE COUNTERS
LC$TYP: [ASCIZ/SECONDS SINCE LAST ZEROED/]
[ASCIZ/BLOCKS RECEIVED/]
[ASCIZ/BLOCKS SENT/]
[ASCIZ/LINE ERROR RETRANSMISSIONS/]
[ASCIZ/RECEIVED LINE ERRORS/]
[ASCIZ/NON - LINE ERROR RETRANSMISSIONS/]
[ASCIZ/RECEIVE TIMEOUTS/]
[ASCIZ/RECEIVE SELECTION ERRORS/]
[ASCIZ/RESOURCE ERRORS/]
;END EDIT [522]
DEVTYP:0
RLD1DV
SUBTTL BIT CHECKING ROUTINES
;BCKXXX -- SUBROUTINES TO DETERMINE LISTING AND SUMMATION
;ELIGIBILITY BASED ON BITS IN THE ENTCHR TABLE.
;CALL PUSHJ P,BITCHK(ERROR CODE)
;RTN CALL + 1 TO LIST
; ABORT TO GET NEXT ENTRY
BCK201:
BCK202:
BCK203:
BCK210:
BCK220: MOVE P1,ERTYPE
MOVE P2,ENTCHR(P1) ;GET CHARACTERISTICS
TLNE F,F.DEV ;[604] TEST FOR DEVICE SWITCH
JRST ABORT
TLNE P2,E.LALL ;WANTS ALL?
POPJ P,0 ;YUP
JRST ABORT ;SORRY
POPJ P,0 ;FOR NOW
BCK230:
BCK232: MOVE P1,ERTYPE
MOVE P2,ENTCHR(P1) ;GET CHARACTERISTICS
TLNE F,F.DEV ;[604] TEST FOR DEVICE SWITCH AGAIN
JRST ABORT
TLNE P2,E.LALL ;WANTS ALL?
POPJ P,0 ;YUP
TLNE P2,E.LPER ;'/NETPER?
POPJ P,0
JRST ABORT ;SORRY
POPJ P,0 ;FOR NOW
;SUMUPD -- SUBROUTINE TO AUTOMATICALLY UPDATE ALL PERMANENT
;SUMMARY COUNTERS PRIOR TO SUMMARY LISTING
;A DUMMY MACRO DUMFLG IS USED TO GENERATE
;THE NECESSARY CODE AS FOLLOWS
;SKIPE T1,XXXTMP ;PICKUP TEMP COUNTER
;ADDM T1,XXXPER ;INCREMENT PERM COUNTER
;DO NEXT COUNTER SAME.......
;modified by edit #110
; DEFINE TBLFLG(A)<
; setz t1,
; exch t1,a'TMP
; ADDM T1,A'PER
;>
;NOW THE ACTUAL CODE GENERATION
; XLIST
SUMUPD: 0 ; DUMFLG
LIST
;NOW GENERATE THE SOFTWARE SUMMARY COUNTERS UPDATE
;also modified by edit #110
; DEFINE DUMDV(A)<
; ZZ==0
;REPEAT NUMSFB,<
; setz t1,
; exch t1,a'ST+zz
; ADDM T1,A'SP+ZZ
; ZZ==ZZ+1
;>>
; XLIST
; DUMDP
; DUMFH
; DUMRP
; LIST
; XLIST
; DUMDP
; DUMFH
; DUMRP
LIST
POPJ P, ;RETURN
SUBTTL STORAGE LOCATIONS
INPSPC: EXP 13
SIXBIT/SYS/
XWD 0,IBUFF
OUTSPC: EXP 0
SIXBIT/DSK/
XWD OBUFF,0
ERRFIL: XWD 0,35
Z
SIXBIT/ERROR/
SIXBIT/SYS/
BLOCK 32
LSTFIL: SIXBIT/ERROR/
SIXBIT/LST/
Z
Z
;HERE IS THE CODE WHICH WILL BE BUT INTO THE LOW SEG
;AND WILL BE CALLED TO OVERLAY HIGH SEGMENTS.
;EDIT #120
SETZM .JBSYM ;TO ALLOW DDT TO WORK
SETZM .JBUSY ;WHILE DEBUGGING VARIOUS HIGH
;SEGMENTS. PUT A BREAKPOINT
;AT ROUTINES WHICH CALL OVRLAY
;THEN SET BREAKPOINT AT THE
;RETURN FROM THE GETSEG AND OPEN
;THE NEW SYMBOL TABLE
;AND CONTINUE DEBUGGING.
MOVEI T1,OVRBLK ;SPEC BLOCK SETUP BY OUR CALLER
GETSEG T1,
HALT ;STD ERROR MESSAGES ARE OK
HRLZI 17,SAVEAC ;COPY BACK
BLT 17,17 ;THE AC'S
HRRZ 15,400000 ;THAT'S THE START OF THE NEW SEG
JRST @15 ;NOW GO THERE
IARGST: Z
Z
CHROUT ;LOCATION OF TYPEOUT ROUTINE IN SYSERR
Z
Z
IAREND==.-1
IARGLN==<IAREND-IARGST>+1 ;LENGTH OF ARG BLOCK FOR .ISCAN
DUMDAY: 121165 ;DUMMY NBS DAY FOR USE BY SCAN
KONMSK: 0
RLD1SK
MINERB: 0
MIRLD1
ERINDX: 0
RLD1DX
IDVFLT: SIXBIT/SYS/ ;DEFAULT FILE SPECIFICATIONS
IFLFLT: SIXBIT/ERROR/
IEXFLT: SIXBIT/SYS/
ODVFLT: SIXBIT/DSK/
OFLFLT: SIXBIT/ERROR/
OEXFLT: SIXBIT/LST/
PDLPNT: IOWD LPDL,PDLST
SUBTTL DUMMY MACRO EXPANSION AREA
;THE FOLLOWING MACRO CODE UTILIZES THE PRINCIPLE OF THE DUMMY
;MACRO USED EARLIER AND REDEFINES TBLENT TO GENERATE VAIOUS
;NECESSARY DISPATCH TABLES
;MACRO TO CREATE A TABLE CONTAINING OFFSET INTO OTHER TABLES
;WHICH WERE PREVIOUSLY INDEXED BY ERROR TYPE(VER 3 & EARLIER). ALLOWS
;HOLES TO BE IN SEQUENCE OF ERROR TYPES WHICH ARE USED.
;THIS FIRST TABLE CONTAINS ALL THE ERROR TYPES
;KNOWN TO ALL SYSERR PARTS. THE SECOND IS THE TABLE
;OF TYPES PROCESSED BY THE SEGMENT.
;EDIT #120.
SALL
DEFINE TBLENT(A,B,C,D,E)<
XWD 0,A
>
ALLTBL: DUMENT
ALLLTH=<.-1>-ALLTBL+1 ;LENGTH OF ERROR INDEX TABLE
DEFINE TBLENT(A,B,C,D,E)<
IFIDN<D><PROCSN><
XWD 0,A
>>
ERRTBL: 0 ;FIRST FOUND MUST NOT BE 0
DUMENT
ERRLTH=<.-1>-ERRTBL+1 ;LENGTH OF ERROR INDEX TABLE
;THE ENTRY PROCESSING TABLE
;THIS TABLE MUST BE INDEXED BY THE CONTENTS OF ALLIND
DEFINE TBLENT(A,B,C,D,E)<
IFIDN<D><PROCSN><
XWD C,D
TYPMAX==A>
IFDIF<D><PROCSN><
XWD 0,D
TYPMAX==A>
>
PCSTBL: DUMENT
;GENERATE THE VARIOUS ASCIZ MESSAGES TO BE USED FOR HEADER
;ENTRY TYPE IDENTIFICATION
;FORMAT WILL BE MESS(#) WHERE MESS IS THE ENTRY TYPE
;DESCRIPTION AND # IS THE ERROR TYPE
DEFINE TBLENT(A,B,C,D,E)<
IFIDN<D><PROCSN><
[ASCIZ/B/]
>>
;GENERATE THE TEXT
TYPMES: 0
DUMENT
LIST
;END OF ENTRY DESCRIPTOR GENERATOR
;GENERATE THE DISPATCH TABLE TO ENTRY SUMMATION AND BIT CHECK ROUTINES
;ALL WILL RETRN VIA POPJ P,
;TABLE IS INDEXED BY ERROR TYPE CODE
DEFINE TBLENT(A,B,C,D,E)<
IFIDN<D><PROCSN><
IFDIF<B><UNKNOWN TYPE>,< XWD 0,BCK'A>
IFIDN<B><UNKNOWN TYPE>,< XWD 0,[POPJ P,]>
>>
;GENERATE THE TABLE
BITCHK: 0
DUMENT
;GENERATE THE TABLE OF LINE COUNTS FOR OUTPUT LISTING
DEFINE TBLENT(A,B,C,D,E)<
IFIDN<D><PROCSN><
XWD 0,E
>>
RADIX 10
LINE: 0
DUMENT
RADIX 8
;GENERATE THE VARIOUS ENTRY CONTROL TABLES USING THE MACRO TBLWRD
;TO GENERATE TABLES
DEFINE TBLWRD(A,B,C,D,E,F)<
IFDIF<D><SPECL>,< BYTE (6)B,C,D(18)T'A'E>
IFIDN<D><SPECL>,< BYTE (6)B,C,D(18)F>
>
RADIX 10 ;*********NOTE WELL***********
.CT201: DUM201
Z
.CT202: DUM202
Z
.CT203: DUM203
Z
.CT210: DUM210
Z
.CT220: DUM220
Z
.CT230: DUM230
Z
.CT232: DUM232
Z
RADIX 8
;END OF ENTRY TABLE GENERATION
;GENERATE THE NECESSARY ASCIZ TEXT FOR NON-SPECIAL ROUTINES
DEFINE TBLWRD(A,B,C,D,E,F)<
IFDIF <D><SPECL>,<
T'A'E: ASCIZ/
F/
>>
;WHAT IS XLISTED IS THE DUMALL CALL AND FOLOWING CODE.
XLIST
DUMALL
LIST
;END OF ASCIZ TEXT MACRO EXPANSION
;SWITCH TABLES
;THE FOLLOWING TABLES WILL BE GENERATED VIA THE DUMMY MACRO
;DUMCH1
;THE FIRST IS A DISPATCH TABLE TO BYTES REPRESENTING BITS TO SET
;IN THE ENTCHR TABLE
;NEXT IS THE ACTUAL BYTES THEMSELVES
;TABLE FOR DISPATCH TO THE BYTE OPERANDS
DEFINE TBLCH1(A,B,C,D,E,F,G)<
XWD 0,BYT'G
>
;MAKE DISPATCH TABLE
BYTDSP: DUMCH1
;NOW THE BYTES THEMSELVES
DEFINE TBLCH1(A,B,C,D,E,F,G)<
BYT'G: BYTE (6) B,77,C,77,D,77,E,77,F,77
>
DUMCH1
;SWITCH MACRO EXPANSION NEXT
;DEFINE THE SWITCHES WE RECOGNIZE
DEFINE TBLCH1(A,B,C,D,E,F,G)<
SS (A,A,0)
>
DEFINE TBLCH2(A,B,C)<
SP (A,A,B,C)
>
;CALL MACRO TO DEFINE DEFAULTS
DEFVAL
;NOW MAKE SWTCHS MACRO FOR USE WITH DOSCAN LATER
SALL
DEFINE SWTCHS<
DUMCH1
DUMCH2
>
DOSCAN(SWTAB)
SALL
;GENERATE THE CONI BIT TEXT AND ADDRESS DISPATCHER
RADIX 10 ;****** NOTE WELL *****
DEFINE TBLDEV(A,B)<
[ASCIZ\B',\]
>
RLD1DV: DURLD1
;NOW GENERATE THE ERROR BIT VS INDEX BIT TABLES
;THIS ALLOWS NON-CONTIGUOUS ERROR BITS IN CONI WORD
;TO BE COUNTED IN CONTIGUOUS COUNTERS
; DEFINE TBLDEV(A,B)<
; ZZP==.
; RELOC RCINDX+A-MINRCB
; ZZ
; ZZ==ZZ+1
; RELOC ZZP
;>
; XLIST
LIST
DEFINE TBLDEV(A,B)<
ZZP==.
RELOC RLD1DX+A-MIRLD1
ZZ
ZZ==ZZ+1
RELOC ZZP
>
RLD1DX: REPEAT 36-MIRLD1,<0>
ZZ==0
DURLD1
RADIX 8
;GENERATE SIXBIT TABLE OF DEVICE NAMES
DEFINE DUMDVA(A)<
SIXBIT/A/
>
NAMTBL: 0 ; DUMDVA
NAMLTH=<.-1>-NAMTBL+1 ;LENGTH OF TABLE OF SIXBIT NAMES
;USING SAME DEFINITION OF MACRO NOW GENERATE
;LIST OF ONLY MASSBUS DEVICE NAMES
MASNAM: 0 ; DUMFS
0 ; DUMRP
MASLTH=<.-1>-MASNAM+1 ;LENGTH OF THIS TABLE
;TABLES FOR TOPS20 DEVICES
DEFINE DUMDV(A)<
SIXBIT/A/
>
MASNA2:: DUMDVB
MASLT2=<.-1>-MASNA2+1
;GENERATE LIST OF POINTERS TO 5 WORD SCRATCH BLOCKS
;FOR ALL DEVICES ON THE SYSTEM
DEFINE DUMDV (A)<
XWD 0,A'BK
>
BKLOC: 0 ; DUMDVA
;GENERATE CONI BIT ERROR DISPATCHER
;RH = SOFT ERROR POINTER
;LH = HARD ERROR POINTER
DEFINE DUMDV(A)<
XWD A'HD,A'SF
>
DEVDS2::
DEVDSP: 0 ; DUMDVA
DEFINE DUMDV(A)<
XWD A'ST,A'SP
>
;ST=STORAGE TEMP,SP=PERM.
SOFDSP: 0 ; DUMDVA
END STARTN