Trailing-Edge
-
PDP-10 Archives
-
BB-L288A-RM
-
swskit-changed-sources/sysers.mac
There are 16 other files named sysers.mac in the archive. Click here to see a list.
TITLE SYSERS -- SUMMARY LISTING ROUTINES
SUBTTL VERSION 15A(1363) K. COYE/ RLD/ PJB/ ES/ TJW/ LWE/ SRL/ GSK
;COPYRIGHT (C) 1972,1975,1977,1978,1979,1980 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 ;OUR UNIVERSAL FILE
SEARCH SYRLOW
.REQUIRE SYRLIB
IFN EXPPRT,<
LALL
>
IFE EXPPRT,<
SALL
>
TWOSEG
.JBVER==137
LOC .JBVER
BYTE (3)VWHO(9)VSYSER(6)VMINOR(18)VEDIT
; EXTERNALS DEFINED HERE ARE IN SYRLIB.MAC, THE LIBRARY
; OF COMMON ROUTINES FOR ALL PARTS OF THE SYSERR PACKAGE.
EXTERNAL 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,SKIPWD,ADVBFF
EXTERNAL FIXBUF,STBUFF,INPWD,GOSUM,GETWD,FFPRNT,SLPRNT,CLPRNT
EXTERNAL TBPRNT,CHROUT,TTYSIX,MDECHR,FIXNAM,VERED,TTLS1
EXTERNAL DUMPOS,DSKPOS,TAPPOS,DSERCD,FNDB00,FNDF00,FNDN00
; 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,MDE000,FE$NAM
INTERNAL BLTTAB
RELOC 400000
; SUMLST -- SUBROUTINE TO LIST SUMMARY DATUM ON REQUEST
; SUMMARY TOTALS ARE STORED IN WORDS SUMFST THRU SUMEND
; ROUTINE WILL CHECK E.LSUM BIT AND OUTPUT DATA ON A ENTRY
; BY ENTRY TYPE BASIS
; ENTRIES NOT USED WILL CONTAIN POPJ IN DISPATCH TABLE
; DUMMY ROUTINES DEFINED HERE TO ALLOW COMPILE
; WITH SYRLIB
BLTTAB:
BITCHK:
DEVTYP:
DUMDAY:
ERINDX:
ERRLTH:
ERRTBL:
KLEDMP:
KONMSK:
LINE:
MINERB:
PCSTBL: Z
START: MOVE P,PDLPNT ;RESET THE STACK
MOVEI T1,CHROUT ;OUR TYPO ROUTINE
PUSHJ P,.TYOCH## ;INIT SCAN ROUTINES
TRNE F,F.SEQ ;/SEQ?[532]
JRST GOBACK ;NO SUMMARY LISTING NECESSARY
MOVE T1,SYSSER ;GET FIRST SYSTEM S/N [1106]
MOVEM T1,HDBUFF+HDRPSN ; AND FORCE SUMMARIES TO USE IT
MOVEI T1,[ASCIZ/ SYSTEM SUMMARY /] ; [1200]
MOVEM T1,HDRLBL ;SET UP TITLE
PUSHJ P,TTLST ; AND PRINT PAGE HEADER
PUSHJ P,.TCRLF
PUSHJ P,SUMUPD ;GO UPDATE ALL COUNTERS
PUSHJ P,ENVLST ;GO DO ENVIRONMENT TYPEOUT
;THINGS LIKE VERSION,FILE SPECS,SWITCHES,ETC.
PUSHJ P,TOTPRT ;PRINT OCCURRENCE COUNTS
SKIPE TOPONE ;IF THIS IS TOPS-20 [1207]
;[1261] LOOK AT ENTRY TYPE NOT MONITOR TYPE
JRST T20SML ; WE'LL CONTROL THE SUMMARIES OURSELVES
MOVSI P4,ENTLTH ;SETUP AOBJ POINTER TO ENTCHR TABLE
MOVNS P4,P4
SMLOOP: MOVE T1,ENTCHR(P4)
TRNN T1,E.RCNT ;ANY ENTRIES PROCESSED AT ALL?
JRST SMBUMP ;BUMP AND GO
TLNN T1,E.LSUM
JRST SMBUMP ;TRY NEXT
PUSH P,P4 ;SAVE POINTER
HRRZ T1,P4
PUSHJ P,ERRINS ;GO FIND CORRECT INDEX
HRRZ P4,T4 ;RESTORE POINTER
PUSHJ P,@SUMDSP(P4) ;GO PROCESS SUMMARY LISTING
POP P,P4 ;RESTORE POINTER
SMBUMP: AOBJN P4,SMLOOP
JRST GOBACK ;SUMMARY DONE RETURN TO SYSERR.
;T20SML - CONTROLS TOPS-20 SUMMARIES (DOES NOT USE SMLOOP!!) [1207]
T20SML: PUSHJ P,SML102 ;DO BUGXXX SUMMARY
PUSHJ P,SML130 ;DO FRONT-END SUMMARY
PUSHJ P,SML116
PUSHJ P,SML111 ;DO MASBUSS SUMMARY
JRST GOBACK ;TOPS-20 SUMMARY DONE - RESTART SYSERR
; HERE WHEN THE SUMMARY IS DONE TO REPLACE THIS
; SEGMENT WITH SYSERR AND START OVER AGAIN.
GOBACK: PUSHJ P,.TCRLF
CLOSE INPCHN,
CLOSE OUTCHN, ;CLOSE ALL FILES
MOVE T1,[SIXBIT/SYSERR/]
MOVEM T1,OVRBLK+1 ;CORRECT SPOT IN SPEC AREA.
SETZ 15,
MOVE 11,OVRBLK ;THIS IS THE DEVICE SYSERR
MOVE 7,OVRBLK+4 ;WAS ORIGINALLY CALLED FROM.WE
;WILL PRESERVE IT ACROSS THE GETSEG
;IN THE AC IT ORIGINALLY WAS
;FOUND AND SYSERR WILL RETURN IT
;TO OVRBLK AFTER CLEARING ALL
;THE LOW SEG STORAGE AREA.
MOVE 7,OVRBLK+4 ;DO THE SAME FOR [P,PN] ALSO
MOVEM 17,SAVEAC+17 ;SAVE THE AC'S
MOVEI 17,SAVEAC
BLT 17,SAVEAC+16
JRST OVRLAY ;REPLACE US PLEASE WITH SYSERR!!!
; TTLST -- SUBROUTINE TO OUTPUT TITLE BLOCK
; INFO OUTPUT IS DATE AND TIME AND USER REQUESTED STRING
; CALL PUSHJ P,TTLST
;
; RETURN CALL+1
; DOES NOT CHECK PAGE LIMIT FOR SYSERS
TTLST: ;START [1315]
MOVE T1,LINCNT ;GET NUMBER OF LINES USED
CAME T1,[-PAGLIN]
JRST TTLSTA ;SOME HAVE BEEN USED, START ON A FRESH PAGE
PUSHJ P,.TCRLF ;ELSE JUST LIST "SUMMARY" WITHOUT DOING FF
MOVE T1,HDRLBL ;WHAT TO SAY
PUSHJ P,.TSTRG ;SAY IT
PJRST .TCRLF ;WITH A CR-LF
TTLSTA: ;END [1315]
MOVEI T1,14
PUSHJ P,CHROUT ;DO FORM FEED
AOS ,PAGNUM
PUSHJ P,TTLS1 ; [1200]
PJRST .TCRLF
; TOTPRT PRINTS OUT A TOTAL OF EACH ERROR TYPE
TOTPRT: TYPEIT <
ENTRY OCCURRENCE COUNTS>
MOVSI P4,ENTLTH ;SETUP AOBJ POINTER TO ENTCHR TABLE
MOVNS P4,P4
TOTCON: HRRZ P3,ENTCHR(P4) ;PICKUP ENTCHR WORD
ANDI P3,E.RCNT ;[304]GET COUNT OF ENTRIES
JUMPE P3,CNTINC ;JUST BUMP AOBJ POINTER IF = 0
PUSH P,P4 ;SAVE POINTER
HRRZ T1,P4 ;SAME AS ERTYPE
PUSHJ P,ERRINS ;FIND INDEX TO MESSAGES
HRR P4,T4 ;RESTORE THE INDEX
TOTTYP: TYPEIT <
TOTAL >
MOVE T1,TYPMES(P4) ;GET ADDRESS OF ENTRY HEADER
PUSHJ P,.TSTRG
TYPEIT < >
MOVE T1,P3 ;GET THE COUNT
PUSHJ P,.ODECW
POP P,P4 ;RESTORE IT INDEX
CNTINC: AOBJN P4,TOTCON ;BUMP COUNTER & TRY AGAIN
POPJ P,0
; ERRINS--ROUTINE TO FIND OUR INDEX INTO HEADERS,ETC
; T1=ERRTYPE
; CALL PUSHJ P,ERRINS
ERRINS: MOVEI T2,ALLLTH ;LENGTH OF TABLE
SETZB T3,T4 ;SOME WORK SPACE
ERRIS1: HRRZ T3,ALLTBL(T4) ;GET NEXT INDEX VALUE [724]
CAMN T1,T3 ;MATCH?
JRST ERRIS2 ;YES
AOS T4 ;UPDATE
CAIE T4,ALLLTH+1 ;END OF TABLE?
JRST ERRIS1 ;NOT YET
POPJ P,0 ;SOMETHING IS IN T4
ERRIS2: MOVEM T4,ALLIND ;STORE GOOD INDEX VALUE
POPJ P,0 ;AND RETURN
; ENVLST -- SUBROUTINE TO LIST ENVIRONMENT INFORMATION AT SUMMARY TIME
; CALL PUSHJ P,ENVLST
; TYPES SYSERR VERSION NUMBER,FILE SPECS,SWITCHES
; RETURN CALL+1
ENVLST: TYPEIT <
FILE ENVIRONMENT>
TYPEIT <
SYSERR VERSION >
PUSHJ P,VERED
TYPEIT <
INPUT FILES: >
MOVE T1,I.DEV ;GET INPUT DEV
CAME T1,[SIXBIT/QAP/] ;DEFAULT FOR TOPS20?
JRST ENVLSA ;NO
MOVE T1,[SIXBIT/SYS/] ;CHANGE BACK FOR OUTPUT
MOVEM T1,I.DEV
ENVLSA: MOVEI T1,I.ST
PUSHJ P,.TFBLK ;TYPE INPUT FILE SPEC
TLNN F,F.DISK ;DID WE DO EXTENDED LOOKUP ON INPUT DEV
JRST SHRTDT ;NO ,DO OUTPUT FOR SHORT LOOKUP
TYPEIT < CREATED: >
SKIPE TOPMON ;TOPS20 RUNNING
JRST ENVLS1
MOVE T1,FILDAT
PUSHJ P,TYPNBS
JRST ENVLS2 ;GO AROUND TOPS20
ENVLS1: HRROI T1,DATLOC ;WHERE TO STORE IT
HRLZI T3,202100 ;FORMAT FOR OUTPUT
MOVE T2,FILDAT ;WHAT TO CONVERT
ODTIM
HRRZI T1,DATLOC
PUSHJ P,.TSTRG ;NOW LIST IT
ENVLS2: SKIPE CURIND ;MORE THAN 1 FILE PROCESSED?
PUSHJ P,EXTFIL ;LIST OTHER FILES TOO
;(107)
ENVCON: TYPEIT <
OUTPUT FILE: >
MOVEI T1,O.ST
PUSHJ P,.TFBLK ;TYPE OUTPUT SPECIFICATION
TYPEIT <
SWITCHES: >
MOVSI P4,FLGSTP ;SETUP FOR AOBJ OF FLAG TABLE
MOVNS P4,P4
;DON'T DO /BEGIN OR /END YET
SWTCON: SKIPN T1,FLGST(P4) ;SWITCH TYPED BY USER?
PUSHJ P,TYPSWT ;GO TYPE IT
AOBJN P4,SWTCON ;LOOP
DEVSW: MOVE T1,[-1]
CAMN T1,DEV ;HAS DEV BEEN MODIFIED?
JRST NDEVSW ;NO.
TYPEIT (/DEV:) ;YES, LIST THIS SWITCH.
MOVE T1,DEV ;GET WHAT THE USER TYPED.
PUSHJ P,.TSIXN ;AND OUTPUT IT.
NDEVSW: MOVE T1,[-1] ;ADDED WITH [325]
CAMN T1,NDEV ;HAS NDEV BEEN MODIFIED?
JRST SWESW ;NO.
TYPEIT (/NDEV:) ;YES, LIST THIS SWITCH.
MOVE T1,NDEV ;GET WHAT THE USER TYPED.
PUSHJ P,.TSIXN ;AND OUTPUT IT.
SWESW: MOVEI T1,SWEDEF
CAMN T1,SWE ;HAS DEFAULT BEEN USED?
JRST SRESW ;IT IS DEFAULT, USER DIDN'T SPECIFY.
TYPEIT (/SWE:) ;IT'S BEEN CHANGED.
MOVE T1,SWE
PUSHJ P,.ODECW ;OUTPUT VALUE TYPED.
SRESW: MOVEI T1,SREDEF
CAMN T1,SRE ;IS SRE DEFAULT?
JRST IDSW ;YES
TYPEIT (/SRE:) ;NO, USER USED IT
MOVE T1,SRE
PUSHJ P,.ODECW ;DUMP ITS VALUE.
IDSW: MOVE T1,[-1]
CAMN T1,ID ;USER MODIFY ID?
JRST DETSW ;NOPE
TYPEIT (/ID:)
MOVE T1,ID ;YES, SAY SO
PUSHJ P,.TSIXN
DETSW: TLNN F,F.DET ;SAID /DETAIL?
JRST TRYSW ;NO
TYPEIT (/DETAIL:) ;YES SAYSO
MOVE T1,DETAIL ;GET CONTENTS
PUSHJ P,.TDECW ;IN DECIMAL
TRYSW: TLNN F,F.TRY ;SAID /RETRY?
JRST BEGCHK ;NO
TYPEIT (/RETRY:) ;YES
MOVE T1,RETRY
PUSHJ P,.ODECW ;ALL PART OF EDIT 126
BEGCHK: SKIPGE P4,BEGIN ;DID USER TYPE /BEGIN?
JRST ENDCHK ;NO
TYPEIT < /BEGIN: >
MOVE T1,P4 ;PICKUP DATE USER TYPED
PUSHJ P,TYPNBS ;TYPE DECODED VALUE
ENDCHK: SKIPGE P4,END ;DID HE SAY /END
JRST FSTDAT
TYPEIT < /END: >
MOVE T1,P4 ;PICKUP WHAT USER TYPED FOR END DATE
PUSHJ P,TYPNBS
FSTDAT: TYPEIT <
DATE OF FIRST ENTRY PROCESSED: >
SKIPE TOPONE ;[1261] TOPS-20 TYPE ENTRY ?
JRST FSTDA1 ;YES
MOVE T1,FILEST
PUSHJ P,TYPNBS
JRST FSTDA2 ;GO AROUND TOPS20
FSTDA1: HRROI T1,DATLOC ;WHERE TO STORE IT
HRLZI T3,202100 ;FORMAT FOR OUTPUT
MOVE T2,FILEST ;WHAT TO CONVERT
ODTIM
HRRZI T1,DATLOC
PUSHJ P,.TSTRG ;NOW LIST IT
FSTDA2: TYPEIT <
DATE OF LAST ENTRY PROCESSED: >
SKIPE TOPONE ;[1261] TOPS-20 TYPE ENTRY ?
JRST FSTDA3 ;YES
MOVE T1,FILEND
PUSHJ P,TYPNBS
JRST FSTDA4 ;GO AROUND TOPS20
FSTDA3: HRROI T1,DATLOC ;WHERE TO STORE IT
HRLZI T3,202100 ;FORMAT FOR OUTPUT
MOVE T2,FILEND ;WHAT TO CONVERT
ODTIM
HRRZI T1,DATLOC
PUSHJ P,.TSTRG ;NOW LIST IT
; [223]
FSTDA4: ;[532]
TYPEIT <
NUMBER OF ENTRIES PROCESSED: >
MOVE T1,SEQNUM ;GET LAST SEQUENCE NUMBER
PUSHJ P,.ODECW ;WITH A "."
; END [532]
TYPEIT <
# OF INCONSISTENCIES DETECTED IN ERROR FILE: >
MOVE T1,FILCNT
PUSHJ P,.ODECW ;IN DECIMAL
; END 223
; START HACK FOR DX20 BUGS
TYPEIT <
# OF DX20 ENTRIES ABORTED DUE TO BLANK SUB-TABLE POINTERS: >
MOVE T1,DXFNUM
PUSHJ P,.ODECW
; END OF DX20 HACK
POPJ P,0
TYPSWT: TYPEIT </>
MOVE T1,SWTABN(P4)
PUSHJ P,.TSIXN
POPJ P,0
; A SHORT ROUTINE TO OUTPUT CREATION DATE/TIME
; OF A FILE WITH A SHORT LOOKUP. NOTE THAT
; FILDAT WAS USED BUT IS NOT WHAT SOMEONE ELSE
; ****EDIT 107****
; EXTFIL -- CALLED BY ENVLST TO LIST OTHER INPUT FILES
; SUCH AS ERROR.X01 THRU ERROR.X77 IF THEY WERE READ.
EXTFIL: MOVEI P4,1 ;INIT PASS COUNTER
HRLZI T1,'X00' ;FIRST EXTENSION
MOVEM T1,I.EXT ;SETUP
SKIPN P3,FILDAT(P4) ;NEXT FILDAT = 0?
POPJ P,0 ;YES-THATS ALL
HLRZ T1,I.EXT ;GET LAST EXT
ADDI T1,1
TRNN T1,7 ;SIXBIT CARRY
ADDI T1,100-10 ;FIX IT
HRLZM T1,I.EXT ;PUT IT BACK
TYPEIT <
>
MOVEI T1,I.ST ;SETUP
PUSHJ P,.TFBLK ;LIST
TYPEIT < CREATED >
MOVE T1,FILDAT(P4) ;GET CREATION DATE
PUSHJ P,TYPNBS ;LIST IT TOO
AOJA P4,EXTFIL+3 ;BUMP & TRY NEXT
;MIGHT EXPECT.!!
SHRTDT: TYPEIT < CREATED: >
HLRZ T1,FILDAT ;GET DATE PORTION.
PUSHJ P,.TDATE ;OUTPUT IT
JRST ENVCON ;NOW GO DO THE REST.
; 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: 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,0 ;RETURN
SUBTTL TOPS-10 SUMMARY LISTING ROUTINES
IFN EXPPRT,<
LALL
>
IFE EXPPRT,<
SALL
>
; SMLXXX -- SUBROUTINES TO LIST SUMMARY DATUM
; CALL PUSHJ P,@SUMDSP(ERROR CODE)
;
; RETURN CALL+1
SML1: SKIPN RLDWHY ;EDIT #106 SKIP IF NO RELOADS
POPJ P,0 ;DON'T BOTHER
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES(P4) ;GET HEADER TEXT
PUSHJ P,.TSTRG
TYPEIT <
RELOAD BREAKDOWN:> ;WHAT WE'RE DOING
MOVEI P3,RLDWHY ;POINTER
SL1A: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,.POPJ## ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL1A ;AND GET NEXT
SML2: SKIPN MSEWHY ;EDIT #113 SKIP IF NO STOPCD'S
POPJ P,0 ;DON'T BOTHER
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES(P4) ;GET HEADER TEXT
PUSHJ P,.TSTRG
TYPEIT <
STOPCD BREAKDOWN:> ;WHAT WE'RE DOING
TYPEIT <
TOTAL # OF DEBUG STOPCD'S: >
MOVE T1,NDSPER ;GET THAT NUMBER
PUSHJ P,.ODECW ;WITH A .
TYPEIT <
TOTAL # OF JOB STOPCD'S: >
MOVE T1,NJSPER ;THATONE TOO
PUSHJ P,.ODECW
MOVEI P3,MSEWHY ;POINTER
SL2A: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,.POPJ## ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL2A ;AND GET NEXT
SML3: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
MOVE T1,TYPMES(P4) ;PICKUP ERROR HEADER MESSAGE
PUSHJ P,.TSTRG
TYPEIT <
REPRODUCIBLE: >
MOVE T1,TPEPER
PUSHJ P,.ODECW
TYPEIT <
NON-REPRODUCIBLE: >
MOVE T1,SPEPER
PUSHJ P,.ODECW
TYPEIT <
USER-ENABLED: >
MOVE T1,UEPPER
PUSHJ P,.ODECW
TYPEIT <
DETECTED BY DATA
CHANNEL BUT NOT
SEEN BY CPU: >
MOVE T1,PCSPER
PUSHJ P,.ODECW
POPJ P,0
SML4: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
MOVE T1,TYPMES(P4) ;PICKUP ERROR HEADER MESSAGE
PUSHJ P,.TSTRG
TYPEIT <
REPRODUCIBLE: >
MOVE T1,TNEPER
PUSHJ P,.ODECW
TYPEIT <
NON-REPRODUCIBLE: >
MOVE T1,SNEPER
PUSHJ P,.ODECW
TYPEIT <
USER-ENABLED: >
MOVE T1,NUEPER
PUSHJ P,.ODECW
TYPEIT <
DETECTED BY DATA
CHANNEL BUT NOT
SEEN BY CPU: >
MOVE T1,NCSPER
PUSHJ P,.ODECW
POPJ P,0
SML5: POPJ P,0 ;NOTHING TO LIST
SML6: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
MOVE T1,TYPMES(P4) ;PICKUP HEADER TEXT
PUSHJ P,.TSTRG
TYPEIT <
NXM'S OR OVERRUNS
SEEN BY CHANNEL: >
MOVE T1,NXMPER
PUSHJ P,.ODECW
TYPEIT <
MEM PE SEEN BY CHANNEL: >
MOVE T1,MPEPER
PUSHJ P,.ODECW
TYPEIT <
CONTROLLER DATA PE
OR CCW TERM CHK FAILURES: >
MOVE T1,DPEPER
PUSHJ P,.ODECW
POPJ P,0
SML7: POPJ P,0 ;NOTHING TO LIST
SML10: HRRZI P1,-NUMRPB ;START SETUP
HRLZI P2,-DPANUM-DPBNUM ;CHECK 16
HRRI P2,DPALOC ;START HERE
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL10A ;CHECK DPC'S
PUSHJ P,RPTITL ;PRINT RP10 CONTROLLER HEADER
MOVSI P2,-NUMRPB ;PICKUP COUNT OF NUMBER OF ENTRIES
MOVE P3,[XWD -DPANUM-DPBNUM,DPALOC]
PUSHJ P,DEVSUM ;GO PUBLISH RP TOTALS FOR CONTROLLER A
SL10A: HRRZI P1,-NUMRPB ;SETUP
HRLZI P2,-DPCNUM-dpdnum ;16 AGAIN
HRRI P2,DPCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST ;ANY TO DO
JRST SL10B ;NO-HOW ABOUT FHA'S
PUSHJ P,RPTITL ;GO PRINT SOMETHING NICE
MOVSI P2,-NUMRPB ;COUNT OF ENTRIES
MOVE P3,[XWD -DPCNUM-DPDNUM,DPCLOC]
PUSHJ P,DEVSUM ;GO PUBLISH THESE TOTALS
SL10B: HRRZI P1,-NUMRCB
HRLZI P2,-FHANUM-FHBNUM ;16
HRRI P2,FHALOC ;STARTING HERE
HRLZI P3,DEVDSP ;CONTROLLER ENTRIES
PUSHJ P,CHKLST ;LIST?
JRST SL10C ;NO-TRY FHC'S
PUSHJ P,FHTITL ;GO PRINT FH TITLE.
MOVSI P2,-NUMRCB ;PICKUP COUNT OF NUMBER OF RC ENTRIES/BLOCK
MOVE P3,[XWD -FHANUM-FHBNUM,FHALOC]
PUSHJ P,DEVSUM
SL10C: HRRZI P1,-NUMRCB
HRLZI P2,-FHCNUM-FHDNUM
HRRI P2,FHCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL10D ;TRY FSA'S
PUSHJ P,FHTITL
MOVSI P2,-NUMRCB ;SETUP
MOVE P3,[XWD -FHCNUM-FHDNUM,FHCLOC]
PUSHJ P,DEVSUM
SL10D: SKIPE MASONE ;ANY CODE 11 ENTRIES?
POPJ P,0 ;YES-LIST SEPARATELY
HRRZI P1,-NUMRHB
HRLZI P2,-FSANUM-FSBNUM
HRRI P2,FSALOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL10E ;NOTHING TO LIST HERE
PUSHJ P,TTLST ;TYPE TITLE LINE
PUSHJ P,RH11TLE ;LIST RH10 HEADER
MOVSI P2,-NUMRHB ;COUNT OF ENTRIES.
MOVE P3,[XWD -FSANUM-FSBNUM,FSALOC]
PUSHJ P,DEVSUM
SL10E: HRRZI P1,-NUMRHB
HRLZI P2,-FSCNUM-FSDNUM
HRRI P2,FSCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST ;ANYTHING THERE?
POPJ P,0 ;NO,WE'RE DONE
PUSHJ P,TTLST ;TYPE TITLE LINE
PUSHJ P,RH11TL
MOVSI P2,-NUMRHB
MOVE P3,[XWD -FSCNUM-FSDNUM,FSCLOC]
PUSHJ P,DEVSUM
POPJ P,0
SML11: HRRZI P1,-NUMRHB
HRLZI P2,-FSANUM-FSBNUM
HRRI P2,FSALOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST ;LIST HEADER?
JRST SL11A ;NO CHECK FSC'S
; [551]
PUSHJ P,TTLST ;[1240]TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
; END [551]
MOVSI P2,-NUMRHB
MOVE P3,[XWD -FSANUM-FSBNUM,FSALOC] ;SETUP
PUSHJ P,DEVSUM ;CONTROLLER & SOFTWARE DETECTED
SL11A: HRRZI P1,-NUMRHB ;SETUP FOR FSC'S
HRLZI P2,-FSCNUM-FSDNUM ;16 AS USUAL
HRRI P2,FSCLOC ;START HERE
HRLZI P3,DEVDSP ;WITH THIS TABLE
PUSHJ P,CHKLST
JRST SL11B ;NO-GO CHECK RPA'S
; [551]
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
; END [551]
MOVSI P2,-NUMRHB
MOVE P3,[XWD -FSCNUM-FSDNUM,FSCLOC]
PUSHJ P,DEVSUM
SL11B: HRRZI P1,-NUMRHB ;NOW FOR RP04'S
HRLZI P2,-RPANUM-RPANUM ;16
HRRI P2,RPALOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST ;CHECK AGAIN
JRST SL11C
; [551]
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
; END [551]
; [1133]
SKIPE R11HDR ;RH11 CONTROLLER?
PUSHJ P,TLRH11 ;RH11 ON TOPS-10
; SINCE THERE CAN'T(SHOULDN'T) BE MORE THAN 16 DEVICES ON A KS10
; SYSTEM THIS IS THE ONLY PLACE WE CHECK FOR AN RH11 CONTROLLER.
; [1133]
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPANUM-RPBNUM,RPALOC]
PUSHJ P,DEVSUM
SL11C: HRRZI P1,-NUMRHB
HRLZI P2,-RPCNUM-RPDNUM
HRRI P2,RPCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C1
; [551]
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
; END [551]
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPCNUM-RPDNUM,RPCLOC]
PUSHJ P,DEVSUM
SL11C1: HRRZI P1,-NUMRHB ;[1142]
HRLZI P2,-RPENUM-RPFNUM
HRRI P2,RPELOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C2
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPENUM-RPFNUM,RPELOC]
PUSHJ P,DEVSUM
SL11C2: HRRZI P1,-NUMRHB
HRLZI P2,-RPGNUM-RPHNUM
HRRI P2,RPGLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C3 ;[1331]
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPGNUM-RPHNUM,RPGLOC]
PUSHJ P,DEVSUM
; START [1331]
SL11C3: HRRZI P1,-NUMRHB
HRLZI P2,-RPINUM-RPJNUM
HRRI P2,RPILOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C4
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPINUM-RPJNUM,RPILOC]
PUSHJ P,DEVSUM
SL11C4: HRRZI P1,-NUMRHB
HRLZI P2,-RPKNUM-RPLNUM
HRRI P2,RPKLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C5
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPKNUM-RPLNUM,RPKLOC]
PUSHJ P,DEVSUM
SL11C5: HRRZI P1,-NUMRHB
HRLZI P2,-RPMNUM-RPNNUM
HRRI P2,RPMLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11C6
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPMNUM-RPNNUM,RPMLOC]
PUSHJ P,DEVSUM
SL11C6: HRRZI P1,-NUMRHB
HRLZI P2,-RPONUM-RPPNUM
HRRI P2,RPOLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL11D ;NOTHING-START ON DEVICES
PUSHJ P,TTLST ;TYPE TITLE LINE
SKIPE RH1HDR ;LIST RH10 HDR?
PUSHJ P,RH11TL ;YES
SKIPE RH2HDR ;LIST RH20 HEADER?
PUSHJ P,RH12TL ;YES
MOVSI P2,-NUMRHB
MOVE P3,[XWD -RPONUM-RPPNUM,RPPLOC]
PUSHJ P,DEVSUM
; END [1331]
; NOW TO LIST DEVICE DETECTED ERROR SUMMARIES
SL11D: HRRZI P1,-NURS02 ;# OF COUNTERS
HRLZI P2,-FSANUM-FSBNUM
HRRI P2,0 ;START AT ZERO
HRRZI P3,MASDSP ;DO MASSBUS TABLES
PUSHJ P,CHKLST
JRST SL11E ;NOTHING -CHECK FSC'S
PUSHJ P,RS4TTL ;FIRST FOR RS04'S
MOVSI P2,-NURS02 ;# ENTRIES PER DEV
MOVE P3,[XWD -FSANUM-FSBNUM,0] ;# DEVS, WHERE TO START
PUSHJ P,MDESUM ;FOR THESE TYPES REGISTERS
SL11E: HRRZI P1,-NURS02
HRLZI P2,-FSCNUM-FSDNUM
HRRI P2,FSANUM+FSBNUM ;START AT RIGHT PLACE
HRRZI P3,MASDSP
PUSHJ P,CHKLST ;CHECK
JRST SL11F ;BUT SOMEPLACE ELSE
PUSHJ P,RS4TTL
MOVSI P2,-NURS02
MOVE P3,[XWD -FSCNUM-FSDNUM,FSANUM+FSBNUM]
PUSHJ P,MDESUM
SL11F: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPANUM-RPBNUM
HRRI P2,FSXNUM ;START AFTER FSX'S
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11G ;GO CHECK RPC'S
PUSHJ P,RP4TTL ;I HOPE IT ALL FITS
MOVSI P2,-NURP02-NURP10-NURP15 ;# PER DEV
MOVE P3,[XWD -RPANUM-RPBNUM,FSXNUM]
PUSHJ P,MDESUM
SL11G: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPCNUM-RPDNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM ;OFFSET (I HOPE!)
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11H
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPCNUM-RPDNUM,FSXNUM+RPANUM+RPBNUM]
PUSHJ P,MDESUM
SL11H: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPENUM-RPFNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11I
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPENUM-RPFNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM]
PUSHJ P,MDESUM
SL11I: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPGNUM-RPHNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11J ;[1331]
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPGNUM-RPHNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM]
PUSHJ P,MDESUM
; START [1331]
SL11J: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPINUM-RPJNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11K
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPINUM-RPJNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM]
PUSHJ P,MDESUM
SL11K: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPKNUM-RPLNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11L
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPKNUM-RPLNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM]
PUSHJ P,MDESUM
SL11L: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPMNUM-RPNNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM+RPKNUM+RPLNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
JRST SL11M
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPMNUM-RPNNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM+RPKNUM+RPLNUM]
PUSHJ P,MDESUM
SL11M: HRRZI P1,-NURP02-NURP10-NURP15
HRLZI P2,-RPONUM-RPPNUM
HRRI P2,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM+RPKNUM+RPLNUM+RPMNUM+RPNNUM
HRRZI P3,MASDSP
PUSHJ P,CHKLST
POPJ P,0 ;THAT'S IT FOR NOW
PUSHJ P,RP4TTL ;G.T. 16 RP04'S ??
MOVSI P2,-NURP02-NURP10-NURP15
MOVE P3,[XWD -RPONUM-RPPNUM,FSXNUM+RPANUM+RPBNUM+RPCNUM+RPDNUM+RPENUM+RPFNUM+RPGNUM+RPHNUM+RPINUM+RPJNUM+RPKNUM+RPLNUM+RPMNUM+RPNNUM]
PUSHJ P,MDESUM
; END [1331]
POPJ P,0 ;THAT'S ALL FOLKS!!
; NOTHING FOR TU16'S YET
SML14:
SML15: POPJ P,0
SML16: HRRZ T1,ENTCHR(P4) ;GET COUNT OF ENTRIES
SKIPN T1
POPJ P,0 ;IF NONE, DON'T BOTHER
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES(P4) ;GET HEADER TEXT
PUSHJ P,.TSTRG
TYPEIT <
SUMMARY OF "/WHO:" >
MOVEI P3,WHOSLM ;POINTER
SL16A: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,SML16B ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL16A ;AND GET NEXT
SML16B: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES(P4) ;GET HEADER TEXT
PUSHJ P,.TSTRG
TYPEIT <
SUMMARY BY "/DEV:" >
MOVEI P3,DEVWHY ;POINTER
SL16B: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,.POPJ## ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL16B ;AND GET NEXT
SML17: POPJ P,0 ;NOTHING TO LIST
SML20: SETOM ONE020 ;SEEN A CODE 20
HRRZI P1,-11
HRLZI P2,-MTANUM-MTBNUM
HRRI P2,MTALOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL20A ;GO CHECK MTC&MTD
PUSHJ P,TMTITL ;GO PRINT TITLE
MOVSI P2,-11 ;SETUP NUMBER OF ENTRIES
MOVE P3,[XWD -MTANUM-MTBNUM,MTALOC]
PUSHJ P,MAGLST ;OUTPUT TOTALS FOR MTA&MTB
SL20A: HRRZI P1,-11
HRLZI P2,-MTCNUM-MTDNUM
HRRI P2,MTCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
POPJ P,0 ;THAT'S ALL
PUSHJ P,TMTITL
MOVSI P2,-11 ;YUP
MOVE P3,[XWD -MTCNUM-MTDNUM,MTCLOC]
PUSHJ P,MAGLST ;HANDLE THESE TOO.
POPJ P,0 ;MORE THAN 32, I QUIT.
SML21: SETOM ONE021 ;SEEN A CODE 21
HRRZI P1,-11
HRLZI P2,-MTANUM-MTBNUM
HRRI P2,MTALOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
JRST SL21A ;GO CHECK MTC&MTD
PUSHJ P,TMPITL ;GO PRINT TITLE
MOVSI P2,-11 ;SETUP NUMBER OF ENTRIES
MOVE P3,[XWD -MTANUM-MTBNUM,MTALOC]
PUSHJ P,MAGLST ;OUTPUT TOTALS FOR MTA&MTB
SL21A: HRRZI P1,-11
HRLZI P2,-MTCNUM-MTDNUM
HRRI P2,MTCLOC
HRLZI P3,DEVDSP
PUSHJ P,CHKLST
POPJ P,0 ;THAT'S ALL
PUSHJ P,TMPITL
MOVSI P2,-11 ;YUP
MOVE P3,[XWD -MTCNUM-MTDNUM,MTCLOC]
PUSHJ P,MAGLST ;HANDLE THESE TOO.
; HERE LIST TU16/45 DEVICE SUMMARY
HRRZI P1,-NUT602 ;#OF BITS
HRLZI P2,-MTANUM-MTBNUM ;#DEV TO CHECK
HRRI P2,FSXNUM+RPXNUM ;WHERE TOSTART
HRRZI P3,MASDSP
PUSHJ P,CHKLST ;ANYTHING TO LIST
JRST SL21B
PUSHJ P,TU6TTL ;LIST HEADER
MOVSI P2,-NUT602
MOVE P3,[XWD -MTANUM-MTBNUM,FSXNUM+RPXNUM]
PUSHJ P,MDESUM
SL21B: HRRZI P1,-NUT602 ;#OF BITS
HRLZI P2,-MTCNUM-MTDNUM ;#DEV TO CHECK
HRRI P2,FSXNUM+RPXNUM+MTANUM+MTBNUM ;WHERE TOSTART
HRRZI P3,MASDSP
PUSHJ P,CHKLST ;ANYTHING TO LIST
POPJ P,0 ;THAT'S ALL
PUSHJ P,TU6TTL ;LIST HEADER
MOVSI P2,-NUT602
MOVE P3,[XWD -MTCNUM-MTDNUM,FSXNUM+RPXNUM+MTANUM+MTBNUM]
PUSHJ P,MDESUM
POPJ P,0 ;MORE THAN 32, I QUIT.
SML30: PUSHJ P,TTLST
TYPEIT <
FRONT END DEVICE ERROR SUMMARY:
>
HRLZI P1,-11 ;# TO CHECK
SL30A: SKIPN P2,NUM030(P1) ;CHECK A VALUE
JRST SL30B ;EMPTY-GET NEXT
PUSHJ P,.TTABC
MOVE T1,FE$NAM(P1) ;A DEVICE NAME
PUSHJ P,.TSIXN
PUSHJ P,.TCOLN
PUSHJ P,.TTABC
MOVE T1,P2 ;# OF ERRORS
PUSHJ P,.ODECW ;WITH A PERIOD
PUSHJ P,.TCRLF
SL30B: AOBJN P1,SL30A ;GET NEXT
HRLZI P1,-11 ;MAX OF 11 TYPES [514]
SL30C: SKIPN P2,NUH030(P1) ;GET A VALUE
JRST SL30D ;EMPTY - GET NEXT
PUSHJ P,.TTABC
MOVE T1,FEHNAM(P1) ;A DEVICE NAME
PUSHJ P,.TSIXN
PUSHJ P,.TCOLN
PUSHJ P,.TTABC
MOVE T1,P2 ;# OF ERRORS
PUSHJ P,.ODECW ;WITH A PERIOD
PUSHJ P,.TCRLF
SL30D: AOBJN P1,SL30C ;GET NEXT
POPJ P,0 ;OR ELSE RETURN
SML31:
SML40: POPJ P,0 ;NOTHING TO LIST
SML41: SKIPN ONE020 ;SUMMARY DONE ALREADY?
PJRST SML20 ;NOT YET
POPJ P,0 ;DONT DO ANYTHING FOR NOW
SML42: SKIPN ONE021 ;SUMMARY DONE ALREADY?
PJRST SML21 ;NOT YET
POPJ P,0 ;DONT DO ANYTHING FOR NOW
SML12:
SML33: ;[1250]
SML45:
SML50:
SML51:
SML52:
SML54:
SML55:
SML56:
SML57:
SML60:
SML61:
SML62:
SML63: ;[1110]
SML64: ;[1111]
SML66:
SML67:
SML71:
SML72: POPJ P,0 ;NOTHING TO LIST
SUBTTL TOPS-20 SUMMARY LISTING ROUTINES
SML101: POPJ P,0 ;NOTHING TO LIST
;START EDIT 1200
COMMENT \
BUGLST KEYS (2 KEYS, 1 DATA LOCATION)
KEY 0 KEY 1 DESCRIPTION
NEGINF [1260]
0 TOTAL # OF UNKNOWN BUG???'S
1 TOTAL # OF BUGCHK'S
2 TOTAL # OF BUGINF'S
3 TOTAL # OF BUGHLT'S
0
'NAME0' TOTAL # OF OCCURENCES OF BUG??? 'NAME0'
1
'NAME1' TOTAL # OF OCCURENCES OF BUGCHK 'NAME1'
'NAME2' TOTAL # OF OCCURENCES OF BUGCHK 'NAME2'
2
'NAME3' TOTAL # OF OCCURENCES OF BUGINF 'NAME3'
'NAME4' TOTAL # OF OCCURENCES OF BUGINF 'NAME4'
3
'NAME5' TOTAL # OF OCCURENCES OF BUGHLT 'NAME5'
'NAME6' TOTAL # OF OCCURENCES OF BUGHLT 'NAME6'
\
SML102: MOVEI T1,BUGLST ;GET BUGXXX TOTALS
MOVEI T2,KEYBUF
FINDF
POPJ P,0 ;NO ERRORS LOGGED - LEAVE
MOVE P1,(T1) ;GET COUNT
MOVEI T1,[ASCIZ / BUGXXX SUMMARY /]
MOVEM T1,HDRLBL ;SET UP TITLE
PUSHJ P,TTLST ; AND PRINT PAGE HEADER
PUSHJ P,.TCRLF
TYPEIT <BUGXXX TOTALS:>
SL102A: PUSHJ P,.TCRLF ;PRINT BUG TYPE TOTALS
PUSHJ P,.TTABC
MOVE T1,KEYBUF+1
MOVE T1,BUGTYP(T1)
PUSHJ P,.TSIXN
PUSHJ P,.TTABC
MOVE T1,P1
PUSHJ P,.ODECW
FINDN ;GET NEXT BUFFER
WARN <PREMATURE END OF LIST IN SL102A>
MOVE P1,(T1) ;SAVE ENTRY COUNT
JUMPN T2,SL102A ;DO NEXT BUG TYPE IF ANY LEFT
SL102B: PUSHJ P,.TCRLF ;PRINT BUG TYPE
PUSHJ P,.TCRLF
MOVE T1,KEYBUF
MOVE T1,BUGTYP(T1)
PUSHJ P,.TSIXN
PUSHJ P,.TCOLN
SL102C: PUSHJ P,.TCRLF ;PRINT BUG NAME
PUSHJ P,.TTABC
MOVE T1,KEYBUF+1
PUSHJ P,.TSIXN
PUSHJ P,.TTABC ;PRINT ERROR COUNT
MOVE T1,P1
PUSHJ P,.ODECW
FINDN ;GET NEXT BUFFER
POPJ P,0 ;DONE - LEAVE
MOVE P1,(T1)
JUMPN T2,SL102C ;IF SAME BUG TYPE CONTINUE
JRST SL102B ; ELSE PRINT NEW BUG TYPE HEADER
BUGTYP: SIXBIT /BUG???/
SIXBIT /BUGCHK/
SIXBIT /BUGINF/
SIXBIT /BUGHLT/
;[1260] SIXBIT /BUG?4?/
;[1260] SIXBIT /BUG?5?/
;[1260] SIXBIT /BUG?6?/
;[1260] SIXBIT /BUG?7?/
MDE000: SIXBIT/UNK/ ; [1217]
SIXBIT/RP04/ ;THIS DEVICE NAME TABLE MUST BE KEPT
SIXBIT/RS04/ ; IN LINE WITH THE UNIT TYPE TABLE IN
SIXBIT/TU45/ ; THE UNIVERSAL FILE. IN PARTICULAR
SIXBIT/TU16/ ; THERE MUST BE AT LEAST ".UTMAX" ITEMS
SIXBIT/RP05/ ; IN THE TABLE.
SIXBIT/RP06/
SIXBIT/RP07/ ;RP07???
SIXBIT/RP08/ ;RP08???
SIXBIT/RM03/ ; [601]
SIXBIT/TM03/
SIXBIT/TU77/
SIXBIT/TM78/
SIXBIT/TU78/
SIXBIT/DX20/ ;[704]
SIXBIT/TU70/
SIXBIT/TU71/
SIXBIT/TU72/ ;END [704]
SIXBIT/TU73/ ;[1204]
SIXBIT/UNK/ ;[1333]
SIXBIT/RP20/ ;[1333]
RHTYP: SIXBIT / RH??/
SIXBIT / RH10/
SIXBIT / RH20/
SIXBIT / RH11/
COMMENT \
CHNTOT KEYS (2 KEYS, 1 DATA LOCATION)
KEY 0 KEY 1 DATA BLOCK
RH TYPE CHANNEL # ERROR COUNTS (HARD,,SOFT)
1=RH10 (0-7) WORD 0 TOTAL CHANNEL ERRORS
2=RH20
3=RH11
\
COMMENT \
CHNLST KEYS (2 KEYS, 15. DATA LOCATIONS)
KEY 0 KEY 1 DATA BLOCK
RH TYPE PHYSICAL DRIVE ERROR COUNTS (HARD,,SOFT)
1=RH10 NAME IN SIXBIT FOR RH20:
2=RH20 (DP030) 0-7 CONI RH20 (8.)
3=RH11 FOR RH11:
0-2 CONTROL & STATUS 1 (3.)
3-12 CONTROL & STATUS 2 (8.)
13-16 UBA STATUS REGISTER (4.)
\
COMMENT \
MASLST KEYS (3 KEYS, 40. DATA LOCATIONS)
KEY 0 KEY 1 KEY 2 DATA BLOCK
DRIVE TYPE DRIVE S/N PHYSICAL DRIVE ERROR COUNTS (HARD,,SOFT)
(TOPS-20) BCD (MASBUSS) NAME IN SIXBIT 0 TOTAL DEVICE ERRORS
BINARY (DX20) (DP030) FOR RP04,5,6:
1-20 ERROR REG. #1 (16.)
21-37 ERROR REG. #2 (15.)
40-47 ERROR REG. #3 (8.)
FOR RS04:
1-13 ERROR REG. #1 (11.)
FOR TU16,45,77:
1-20 ERROR REGISTER (16.)
FOR RM03:
1-20 ERROR REG. #1 (16.)
21-30 ERROR REG. #2 (8.)
FOR TU70,71,72,73:
1-10 ERROR REGESTER (8.)
\
;MASBUSS CONTROLLER & DEVICE SUMMARY - CHANGED WITH EDIT [1217]
SML111: MOVEI T1,CHNTOT ;GET CHANNEL TOTALS
MOVEI T2,KEYBUF
FINDF
POPJ P,0 ;NO ERRORS LOGGED - LEAVE
MOVE P1,(T1) ;GET COUNT
MOVEI T1,[ASCIZ / ENTRY SUMMARY /]
MOVEM T1,HDRLBL ;SET UP TITLE
PUSHJ P,TTLST ; AND PRINT PAGE HEADER
PUSHJ P,.TCRLF
TYPEIT <CHANNEL/CONTROLLER SUMMARY:>
PUSHJ P,.TCRLF
TYPEIT < HARD SOFT>
SL111A: PUSHJ P,.TCRLF ;PRINT 'RH' TYPE
MOVE T1,KEYBUF ; [1217]
MOVE T1,RHTYP(T1)
PUSHJ P,.TSIXN
SL111B: PUSHJ P,.TCRLF ;PRINT CONTROLLER #
PUSHJ P,.TTABC
TYPEIT <#>
MOVE T1,KEYBUF+1 ; [1217]
PUSHJ P,.TOCTW
PUSHJ P,.TTABC ;PRINT # OF HARD ERRORS
HLRZ T1,P1
PUSHJ P,.ODECW
PUSHJ P,.TTABC ;PRINT # OF SOFT ERRORS
HRRZ T1,P1
PUSHJ P,.ODECW
FINDN ;GET NEXT BUFFER
JRST SL111C ;IF END OF CHANNEL SUMMARY - DO DEVICE SUMMARY
MOVE P1,(T1)
JUMPE T2,SL111A ;IF NOT NEW 'RH' TYPE [1217]
JRST SL111B ; MUST BE NEW CHANNEL
SL111C: MOVEI T1,MASLST ;GET MASSBUS TOTALS [1217]
MOVEI T2,KEYBUF
FINDF
PJRST [WARN <MISSING LIST IN SL111C - FINDF MASLST>
POPJ P,0] ;GIVE WARNING AND LEAVE!
MOVE P1,(T1) ;GET COUNT
SL111D: PUSHJ P,.TCRLF ;DO DEVICE SUMMARY
PUSHJ P,.TCRLF ;PRINT DEVICE TYPE
MOVE T1,KEYBUF
MOVE T1,MDE000(T1) ;GET IT IN SIXBIT
PUSHJ P,.TSIXN
TYPEIT < SUMMARY:>
SL111E: MOVE T1,KEYBUF ;GET DEVICE TYPE [1333]
CAIN T1,.UTP20 ;RP20 ? [1333]
JRST SL111G ;YES, NO S/N [1333]
PUSHJ P,.TCRLF ;PRINT DEVICE S/N
TYPEIT < S/N >
MOVE P2,KEYBUF+1 ;GET S/N
MOVE T1,KEYBUF ;IF NOT DX20 DEVICE TYPE [START 1206]
CAIL T1,.UTT70
CAILE T1,.UTT73
JRST SL111F ; S/N IS 4 BCD DIGITS
MOVE T1,P2 ;ELSE DX20 HAS BINARY S/N
PUSHJ P,.ODECW ; AND .ODECW NEEDS ARGUMENT IN T1
SKIPA ;SKIP OVER NON-DX20 STYLE [END 1206]
SL111F: PUSHJ P,DSERCD
SL111G: PUSHJ P,.TCRLF ;PRINT DEVICE NAME
PUSHJ P,.TTABC
MOVE T1,KEYBUF+2
PUSHJ P,.TSIXN
PUSHJ P,.TTABC ;PRINT # OF HARD ERRORS
HLRZ T1,P1
PUSHJ P,.ODECW
PUSHJ P,.TTABC ;PRINT # OF SOFT ERRORS
HRRZ T1,P1
PUSHJ P,.ODECW
FINDN ;GET NEXT BUFFER
JRST SL111J ;DONE! - START CHANNEL ERROR BIT SUMMARY [1242]
MOVE P1,(T1)
JUMPE T2,SL111D ;NEW DEVICE TYPE?
SOJE T2,SL111E ;NEW S/N ?
JRST SL111G ; MUST BE NEW DEVICE NAME
;MASBUSS CHANNEL ERROR BIT SUMMARY - REPLACED WITH EDIT [1217]
SL111J: MOVEI T1,CHNLST ;GET CHANNEL ERROR BIT TOTALS
MOVEI T2,KEYBUF
FINDF
PJRST [WARN <MISSING LIST IN SL111J - FINDF CHNLST>
POPJ P,0] ;GIVE WARNING AND LEAVE!
MOVE P4,T1 ;SAVE BUFFER POINTER
MOVEI T1,[ASCIZ / CHANNEL SUMMARY /]
MOVEM T1,HDRLBL ;SET UP TITLE
SL111K: PUSHJ P,TTLST ; AND PRINT PAGE HEADER
MOVE T1,KEYBUF ;GET 'RH' TYPE
CAIN T1,.RH11 ;IF RH11 ;[1326]
JRST SL111L ; SKIP RH20 SET UP
PUSHJ P,RH2TTL ;OUTPUT RH20 HEADER
HRLI P4,-NUMRH2 ;SET UP BIT COUNT FOR RH20
JRST SL111M ;SKIP OVER RH11 SET UP
SL111L: PUSHJ P,R11TTL ;OUTPUT RH11 HEADER
HRLI P4,-<NUMR11+NUMCS2+NUMUBA> ;SET UP BIT COUNT FOR RH11
SL111M: PUSHJ P,.TCRLF ;PRINT DEVICE NAME
PUSHJ P,.TCRLF
MOVE T1,KEYBUF+1
PUSHJ P,.TSIXN
TYPEIT < HARD > ;SETUP FOR HARD ERROR COUNTS
MOVE P1,P4
PUSHJ P,CNTTYP ; AND OUTPUT THEM
PUSHJ P,.TCRLF
TYPEIT < SOFT > ;SETUP FOR SOFT ERROR COUNTS
MOVE P1,P4
PUSHJ P,TYPCNT ; AND OUTPUT THEM
FINDN ;GET NEXT BUFFER
JRST SL111P ;IF END OF CHANNEL SUMMARY - DO DEVICE SUMMARY!
HRR P4,T1 ;SAVE BUFFER POINTER
JUMPE T2,SL111K ;IF NOT NEW 'RH' TYPE
JRST SL111M ; MUST BE NEW DRIVE
;MASBUSS DEVICE ERROR BIT SUMMARY - REPLACED WITH EDIT [1217]
SL111P: MOVEI T1,MASLST ;GET DEVICE ERROR BIT TOTALS
MOVEI T2,KEYBUF
FINDF
PJRST [WARN <MISSING LIST IN SL111P - FINDF MASLST>
POPJ P,0] ;GIVE WARNING AND LEAVE!
AOS P4,T1 ;SAVE POINTER TO COUNTERS
MOVEI T1,[ASCIZ / DEVICE SUMMARY /]
MOVEM T1,HDRLBL ;SET UP TITLE
SL111Q: PUSHJ P,TTLST ; AND PRINT PAGE HEADER
PUSHJ P,.TCRLF
MOVE T1,KEYBUF ;GET DEVICE TYPE
MOVE T1,MDE000(T1) ; IN SIXBIT
PUSHJ P,.TSIXN ; AND PRINT IT
TYPEIT < SUMMARY:>
MOVE T1,KEYBUF ;GET DEVICE TYPE BACK
JRST @DEV111(T1) ; AND DO SETUP FOR CORRECT DEVICE
DEV111: SL111Z ;UNKNOWN - GET NEXT ENTRY
SL111R ;RP04
SL111S ;RS04
SL111T ;TU45
SL111T ;TU16 (TM02)
SL111R ;RP05
SL111R ;RP06
SL111Z ;(RP07) ILLEGAL - GET NEXT ENTRY
SL111Z ;(RP08) ILLEGAL - GET NEXT ENTRY
SL111U ;RM03
SL111Z ;(TM03) ILLEGAL - GET NEXT ENTRY
SL111T ;TU77
SL111Z ;(TM78) ILLEGAL - GET NEXT ENTRY
SL111Z ;(TU78) ILLEGAL - GET NEXT ENTRY
SL111Z ;(DX20) ILLEGAL - GET NEXT ENTRY
SL111V ;TU70
SL111V ;TU71
SL111V ;TU72
SL111V ;TU73
SL111Z ;[1333]
SL111V ;RP20 [1333]
;SETUP FOR RP04,5,6
SL111R: PUSHJ P,RP4T2L ;OUTPUT HEADER
HRLI P4,-<NURP02+NURP10+NURP15> ;SET UP BIT COUNT
JRST SL111W
;SETUP FOR RS04
SL111S: PUSHJ P,RS4T2L ;OUTPUT HEADER
HRLI P4,-NURS02 ;SET UP BIT COUNT
JRST SL111O
;SETUP FOR TU45,16,77
SL111T: PUSHJ P,TU6T2L ;OUTPUT HEADER
HRLI P4,-NUT602 ;SET UP BIT COUNT
JRST SL111O
;SETUP FOR RM03
SL111U: PUSHJ P,RM3T2L ;OUTPUT HEADER
HRLI P4,-<NURP02+NUMER2> ;SET UP BIT COUNT
JRST SL111W
;SETUP FOR TU70,71,72,73
SL111V: PUSHJ P,TU7T2L ;OUTPUT HEADER
HRLI P4,-NUDXER ;SET UP BIT COUNT
JRST SL111O
;OUTPUT THE ERROR COUNTS
SL111O:
SL111W: MOVE T1,KEYBUF ;GET DEV TYPE [1333]
CAIN T1,.UTP20 ;IS IT RP20 ? [1333]
JRST SL111Y ;YES, NO S/N'S [1333]
PUSHJ P,.TCRLF ;PRINT DEVICE S/N
TYPEIT <S/N >
MOVE P2,KEYBUF+1 ;GET S/N
MOVE T1,KEYBUF ;IF NOT DX20 DEVICE TYPE [START 1206]
CAIL T1,.UTT70
CAILE T1,.UTT73
JRST SL111X ; S/N IS 4 BCD DIGITS
MOVE T1,P2 ;ELSE DX20 HAS BINARY S/N
PUSHJ P,.ODECW ; AND .ODECW NEEDS ARGUMENT IN T1
SKIPA ;SKIP OVER NON-DX20 STYLE [END 1206]
SL111X: PUSHJ P,DSERCD
SL111Y: PUSHJ P,.TCRLF ;PRINT DEVICE NAME
TYPEIT < > ; INDENTED 6 SPACES
MOVE T1,KEYBUF+2
PUSHJ P,.TSIXN
TYPEIT < H > ;SETUP FOR HARD ERROR COUNTS
MOVE P1,P4
PUSHJ P,CNTMAS ; AND OUTPUT THEM
TYPEIT <
S > ;SETUP FOR SOFT ERROR COUNTS, INDENTED 12 SPACES
MOVE P1,P4
PUSHJ P,MASCNT ; AND OUTPUT THEM
SL111Z: FINDN ;GET NEXT BUFFER
POPJ P,0 ;IF END OF DEVICE ERROR BIT SUMMARY - LEAVE!
AOS ,T1 ;SAVE POINTER TO COUNTERS
HRR P4,T1
JUMPE T2,SL111Q ;NEW DEVICE TYPE?
SOJE T2,SL111W ;NEW S/N ?
JRST SL111Y ; MUST BE NEW DEVICE NAME
SML112:
SML115: POPJ P,0 ;NOTHING TO LIST
SML116: SKIPN WHOSLM ;IF NO POINTERS
POPJ P,0 ;LEAVE
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES+15 ;GET HEADER TEXT [1222]
PUSHJ P,.TSTRG
TYPEIT <
SUMMARY OF WHO >
MOVEI P3,WHOSLM ;[1245] DROPPED THIS INSTRUCTION SOMEWHERE!
SL116A: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,SM116B ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL116A ;AND GET NEXT
SM116B: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF ;SOME SPACE
MOVE T1,TYPMES+15 ;GET HEADER TEXT [1222]
PUSHJ P,.TSTRG
TYPEIT <
SUMMARY BY DEVICE >
MOVEI P3,DEVWHY ;POINTER
SL116B: HLRZ P3,(P3) ;GET NEXT POINTER
JUMPE P3,.POPJ## ;ALL DONE
MOVEI P1,[ASCIZ\
\] ;ONE PER LINE
MOVE P2,1(P3) ;GET REASON
PUSHJ P,.SIXBT ;PUBLISH
MOVEI P1,[ASCIZ\ \] ;SPACE OVER
HRRZ P2,(P3) ;GET COUNT
PUSHJ P,.DECML ;GET IT IN PRINT
JRST SL116B ;AND GET NEXT
;START EDIT 1200
;FE.LST (1 KEY, 1 DATA LOCATION)
; KEY0 = SIXBIT SUB-ENTRY NAME
; DATA = COUNT
SML130: MOVEI T1,FE.LST ;GET F-E TOTALS
MOVEI T2,KEYBUF
FINDF
POPJ P,0 ;NO ERRORS LOGGED - LEAVE
MOVE P1,(T1) ;GET COUNT
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
TYPEIT <FRONT-END SUMMARY:>
SL130B: PUSHJ P,.TCRLF ;PRINT OCCURANCE COUNTS
PUSHJ P,.TTABC
MOVE T1,KEYBUF
PUSHJ P,.TSIXN
PUSHJ P,.TTABC
HRRZ T1,P1
PUSHJ P,.ODECW
MOVE T1,KEYBUF
CAME T1,[SIXBIT /KLERR/]
JRST SL130C ;IF KLERR TOTAL
TYPEIT < ENTRIES - CREATING > ; PRINT BOTH # OF REPORTS
HLRZ T1,P1 ; AND # OF FILE RECORDS
PUSHJ P,.ODECW
TYPEIT < REPORT(S)>
SL130C: FINDN ;GET NEXT BUFFER
POPJ P,0 ;DONE - LEAVE
MOVE P1,(T1) ;GET COUNT
JRST SL130B ;DO NEXT SUB-ENTRY
;END EDIT 1200
SML131:
SML133:
SML160:
SML161:
SML162:
SML163:
SML164:
SML201:
SML202:
SML203:
SML210:
SML211:
SML220:
SML221:
SML222:
SML230:
SML231:
SML232:
SML233:
SML234: POPJ P,0 ;NOTHING TO LIST
SUBTTL MISC. SUMMARY ROUTINES
FE$NAM: 0
SIXBIT/CTY/
SIXBIT/DL11C/
SIXBIT/DH11/
SIXBIT/DLSCAN/
SIXBIT/LP20/
SIXBIT/CD20/
SIXBIT/CLOCK/
SIXBIT/FE DEV/
SIXBIT/UNK/
FEHNAM: SIXBIT/KLCPU/ ;200
SIXBIT/KLERR/ ;201
SIXBIT/DTE/ ;202 EBUS/DEX ERRORS [1311]
SIXBIT/RH11/ ;203 RH11 [1311]
SIXBIT/UNK/ ;204
SIXBIT/UNK/ ;205 [514] EXPAND TO 11 ENTRIES
SIXBIT/UNK/ ;206
SIXBIT/UNK/ ;207
SIXBIT/KLINIK/ ;210
SIXBIT/UNK/ ;211
TMTITL: PUSHJ P,TTLST ;OUTPUT TITLE HEADER.
TYPEIT < - MAGTAPE SYSTEM ANALYSIS ->
TYPEIT <
HARDWARE DETECTED ERRORS>
TYPEIT <
CTL MEM OVR UNT MP READ WDS>
TYPEIT <
PAR PAR NXM RUN HNG ERR ERR READ
>
POPJ P,0
TMPITL: PUSHJ P,TTLST ;OUTPUT TITLE HEADER.
TYPEIT < - MAGTAPE SYSTEM ANALYSIS ->
TYPEIT <
HARDWARE DETECTED ERRORS>
TYPEIT <
CTL MEM OVR UNT MP READ CHARS>
TYPEIT <
PAR PAR NXM RUN HNG ERR ERR READ
>
POPJ P,0
; RPTITL -- SUBROUTINE TO PRINT HEADER FOR RP10 CONTROLLER SUMMARY
; CALL PUSHJ P,RPTITL
;
; RETURN CALL+1
; MODIFIED WITH EDIT 313 FOR RH20 TOO
RH11TL: TYPEIT < - MASSBUS SYSTEM ANALYSIS>
; [551]
TYPEIT <
HARDWARE DETECTED (RH10) SOFTWARE DETECTED>
TYPEIT <
CTL ILL SEL MEM CTL BUS CHN OVR DRE>
TYPEIT < ILL PS CTL SAT RIB CHK SEK XFR XFR SEK SFT CWF
EXC FUN RAE PAR PAR NXM PAR EXC ERR RUN ERR>
TYPEIT < CMD FAL OVR RAE ERR ERR ERR INC HG1 HG2 HNG HNG ERR
>
PUSHJ P,.TCRLF
POPJ P,0
RH12TL: TYPEIT <
HARDWARE DETECTED (RH20) SOFTWARE DETECTED>
TYPEIT <
PAR LWC SWC CHN RES OVR >
TYPEIT < SAT RIB CHK SEK XFR XFR SEK SFT CWF>
TYPEIT <
ERR EXC ERR ERR ERR ERR RAE RUN > ;[516] DELETE 'CNR'
TYPEIT < ERR ERR ERR INC HG1 HG2 HNG HNG ERR>
PUSHJ P,.TCRLF
POPJ P,0
;RH20 CONTROLLER SUMMARY TITLE - REWRITTEN WITH EDIT [1217]
RH2TTL: TYPEIT <
CONI RH20
PAR LWC SWC CHN RES OVR
ERR EXC ERR ERR ERR ERR RAE RUN>
POPJ P,0
; [1133] ADD SUPPORT FOR RH11 UNDER TOPS-10
TLRH11: TYPEIT <
HARDWARE DETECTED (RH11) SOFTWARE DETECTED>
TYPEIT <
CONTROL & STATUS 2 * CONTROL & STATUS 1>
TYPEIT <
DAT WRT UBA PRG MSD DAT>
TYPEIT < SPC XFR MCP SAT RIB CHK SEK XFR XFR SEK SFT CWF>
TYPEIT <
LAT CHK PAR NXD NXM ERR XFR PAR>
TYPEIT < CON ERR ERR ERR ERR ERR INC HG1 HG2 HNG HNG ERR>
PUSHJ P,.TCRLF
POPJ P,0
;RH11 CONTROLLER SUMMARY TITLE - REWRITTEN WITH EDIT [1217]
; PUTS OUT 3 WORDS FOR THE RH11 CONTROLLER
R11TTL: PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
TYPEIT < RH11 CONT & STAT 1 *>
TYPEIT < RH11 CONTROL & STATUS 2 *>
TYPEIT < UBA STATUS REGISTER
>
TYPEIT < *>
TYPEIT < *
>
TYPEIT < SPC XFR MCP *>
TYPEIT <DAT WRT UBA PRG MSD DAT *>
TYPEIT <TIM BAD BUS CPU
>
TYPEIT < CON ERR ERR *>
TYPEIT <LAT CHK PAR NXD NXM ERR XFR PAR *>
TYPEIT <OUT NPR PAR NXD>
POPJ P,0
RPTITL: PUSHJ P,TTLST ;OUTPUT TITLE PAGE
TYPEIT < - MOVABLE HEAD SYSTEM ANALYSIS>
TYPEIT <
HARDWARE-DETECTED SOFTWARE-DETECTED>
TYPEIT <
CTL SEC MEM WRD PWR SRH OVR NOT ILL>
TYPEIT < ILL SEC SUR SAT RIB CHK SEK XFR XFR SEK SFT CWF
PAR PAR PAR PAR FAL ERR RUN NXM RDY WRT>
TYPEIT < DTO ADD ADD ERR ERR ERR INC HG1 HG2 HNG HNG ERR
>
POPJ P,0
FHTITL: PUSHJ P,TTLST
TYPEIT < - FIXED HEAD SYSTEM ANALYSIS>
TYPEIT <
HARDWARE-DETECTED SOFTWARE-DETECTED>
TYPEIT <
SRH DUL ILL NOT PWR SEC MEM CTL ILL>
TYPEIT < OVR SAT RIB CHK SEK XFR XFR SEK SFT CWF
ERR SEL BCD RDY FAL PAR PAR PAR NXM WRT>
TYPEIT < RUN ERR ERR ERR INC HG1 HG2 HNG HNG ERR
>
POPJ P,0
RS4TTL: PUSHJ P,TTLST
TYPEIT < -RS04 DEVICE ANALYSIS>
TYPEIT <
ERROR TOTALS DETECTED BY DEVICE
>
TYPEIT < D U O D W I A P R I I>
TYPEIT <
C N P T L A O A M L L
K S I E E E E R R R F
>
POPJ P,0 ;SHOULD WORK
;RS04 DEVICE SUMMARY TITLE FOR TOPS-20 - REWRITTEN WITH EDIT [1217]
RS4T2L: TYPEIT <
RS04 ERROR REGISTER
D U O D W I A P R I I
C N P T L A O A M L L
K S I E E E E R R R F
>
POPJ P,0
TU6TTL: PUSHJ P,TTLST
TYPEIT < -TU16 & TU45 DEVICE ANALYSIS
>
TYPEIT <
ERROR TOTALS DETECTED BY DEVICE
>
TYPEIT <
CC U O D N I F N PL IV D F P R I I>
TYPEIT <
OR N P T E CF C S ER NP P M A M L L>
TYPEIT <
RC S I E F SM E G FC CE A T R R R F>
TYPEIT <
R
>
POPJ P,0
;TU16,45,77 DEVICE SUMMARY TITLE FOR TOPS-20 - REWRITTEN WITH EDIT [1217]
TU6T2L: TYPEIT <
ERROR REGISTER
CC U O D N I F N PL IV D F P R I I
OR N P T E CF C S ER NP P M A M L L
RC S I E F SM E G FC CE A T R R R F
R>
POPJ P,0
;TU70,71,72,73 DEVICE SUMMARY TITLE FOR TOPS-20 - REWRITTEN WITH EDIT [1217]
TU7T2L: TYPEIT <
ERROR REGISTER
M M U D C R I I
P P P P P M L L
E S A A A R R F
R T R R R
>
POPJ P,0
; RP4TTL- NEEDS 132 COLUMN LPT TO WORK AS PLANNED
RP4TTL: PUSHJ P,TTLST
TYPEIT < -RP04 (* RP05, RP06) DEVICE ANALYSIS>
TYPEIT <
ERROR TOTALS DETECTED BY DEVICE
- ERROR REG. #1 - - ERROR REG. #2 - - ERROR REG. #3 ->
TYPEIT <
* * * * *>
TYPEIT <
D U O D W I A H H E W F P R I I *A P 3 I N>
TYPEIT < M W FA T T MR C W C W *O S D A D3 U VW PD>
TYPEIT < C N P T L A O C C C C E A M L L>
TYPEIT < *C L 0 X H H R EB U D S& S S S C *C K C C I5 W UO SC>
TYPEIT <
K S I E E E E R E H F R R R R F *U U V E S>
TYPEIT < S U NS F F EW U U F U *Y I L L SV R FF UU
C>
TYPEIT < * U *L
>
POPJ P,0 ;IF THAT WORKS I'M SURPRISED.
;RP04,5,6 DEVICE SUMMARY TITLE FOR TOPS-20 - REWRITTEN WITH EDIT [1217]
; NEEDS 132 COLUMN OUTPUT DEVICE LPT TO WORK AS PLANNED
RP4T2L: TYPEIT <
- ERROR REG. #1 - >
TYPEIT < - ERROR REG. #2 - >
TYPEIT < - ERROR REG. #3 -
>
TYPEIT <
*>
TYPEIT < * * *>
TYPEIT < * * *>
TYPEIT <
D U O D W I A H H E W F P R I I *>
TYPEIT <A P 3 I N M W FA T T MR C W C W *>
TYPEIT <O S D A D3 U VW PD>
TYPEIT <
C N P T L A O C C C C E A M L L *>
TYPEIT <C L 0 X H H R EB U D S& S S S C *>
TYPEIT <C K C C I5 W UO SC>
TYPEIT <
K S I E E E E R E H F R R R R F *>
TYPEIT <U U V E S S U NS F F EW U U F U *>
TYPEIT <Y I L L SV R FF UU>
TYPEIT <
C *>
TYPEIT < U *>
TYPEIT <L>
POPJ P,0
;RM03 DEVICE SUMMARY TITLE FOR TOPS-20 - REWRITTEN WITH EDIT [1217]
; NEEDS AT LEAST A 100 COLUMN OUTPUT DEVICE TO WORK
RM3T2L: TYPEIT <
- ERROR REG. #1 - *>
TYPEIT < - ERROR REG. #2 -
>
TYPEIT <
D U O D W I A H H E W F P R I I>
TYPEIT < *B S O I L L D D>
TYPEIT <
C N P T L A O C C C C E A M L L>
TYPEIT < *S K P V S B V P>
TYPEIT <
K S I E E E E R E H F R R R R F>
TYPEIT < *E I E C C C C E
>
POPJ P,0
; DEVSUM -- SUBROUTINE TO OUTPUT DEVICE ERROR COUNTS
; SETUP P2= -# OF WORDS IN BLOCK TO TYPEOUT
; P3= XWD -#DEVICES,OFFSET WITH RESPECT TO NAMTBL OF DEVICE TYPE
; CALL PUSHJ P,DEVSUM
DEVSUM: HRRZ P1,DEVDSP(P3) ;CHECK FOR SOFT ERRORS FIRST
HLL P1,P2 ;-WCTO LEFT
SKIPE 0(P1) ;IS COUNT 0?
JRST DEVSU1 ;NO LIST
AOBJN P1,.-2 ;YES-BUMP COUNT
HLRZ P1,DEVDSP(P3) ;SETTUP AGAIN FOR HARD ERRORS
HLL P1,P2
SKIPE 0(P1) ;HARD ERROR?
JRST DEVSU1 ;LIST
AOBJN P1,.-2 ;TRY NEXT COUNTER
MOVSI P1,-NUMSFB ;HOW ABOUT SOFTWARE DETECTED
HRR P1,SOFDSP(P3)
SKIPE 0(P1) ;ANY COUNTS?
JRST DEVSU1 ;YES
AOBJN P1,.-2 ;TRY AGAIN
AOBJN P3,DEVSUM ;TRY NEXT DEVICE
POPJ P,0 ;ALL DONE GO HOME
DEVSU1: MOVE T1,NAMTBL(P3) ;PICKUP DEVICE NAME
PUSHJ P,.TSIXN ;TYPE IT IN SIXBIT
TYPEIT < HARD >
HLRZ P1,DEVDSP(P3) ;PICKUP ADDRESS OF HARD ERROR BLOCK
HLL P1,P2 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,TYPCNT ;PUBLISH IT
MOVSI P1,-NUMSFB ;PICKUP SOFTWARE DETECTED ERR COUNT
HRR P1,SOFDSP(P3) ;PICKUP ADDRESS OF SOFT-DET ERROR BLOCK
PUSHJ P,TYPCNT
TYPEIT <
SOFT >
HRRZ P1,DEVDSP(P3)
HLL P1,P2 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,TYPCNT
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
AOBJN P3,DEVSUM
POPJ P,0
;DEVSU2 ROUTINE REMOVED WITH EDIT [1217]
; MAGLST -- SUBROUTINE TO OUTPUT MAGTAPE ERROR COUNTS
; SETUP P2= -# OF WORDS IN BLOCK TO TYPEOUT
; P3= XWD -#DEVICES,OFFSET WITH RESPECT TO NAMTBL OF DEVICE TYPE
; CALL PUSHJ P,MAGLST
MAGLST: HRRZ P1,DEVDSP(P3) ;CHECK FOR SOFT ERRORS FIRST
HLL P1,P2 ;-WCTO LEFT
SKIPE 0(P1) ;IS COUNT 0?
JRST MAGLS1 ;NO LIST
AOBJN P1,.-2 ;YES-BUMP COUNT
HLRZ P1,DEVDSP(P3) ;SETTUP AGAIN FOR HARD ERRORS
HLL P1,P2
SKIPE 0(P1) ;HARD ERROR?
JRST MAGLS1 ;LIST
AOBJN P1,.-2 ;TRY NEXT COUNTER
MOVSI P1,-NUMSFB ;HOW ABOUT SOFTWARE DETECTED
HRR P1,SOFDSP(P3)
SKIPE 0(P1) ;ANY COUNTS?
JRST MAGLS1 ;YES
AOBJN P1,.-2 ;TRY AGAIN
AOBJN P3,MAGLST ;TRY NEXT DEVICE
POPJ P,0 ;ALL DONE GO HOME
MAGLS1: MOVE T1,NAMTBL(P3) ;PICKUP DEVICE NAME
PUSHJ P,.TSIXN ;TYPE IT IN SIXBIT
TYPEIT < HARD >
HLRZ P1,DEVDSP(P3) ;PICKUP ADDRESS OF HARD ERROR BLOCK
HRLI P1,-7 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,TYPCNT ;PUBLISH IT
PUSHJ P,.TTABC
PUSHJ P,.TTABC
MOVE T1,0(P1) ;# MILLION WORDS READ
PUSHJ P,.ODECW ;DUMP W A "."
PUSHJ P,.MOUT ;DUMP PART OF MILLION
TYPEIT < MILLION>
TYPEIT <
SOFT >
HRRZ P1,DEVDSP(P3)
HLL P1,P2 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,TYPCNT
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
AOBJN P3,MAGLST
POPJ P,0
; .MOUT -- ROUTINE TO DUMP FRACTIONAL PART OF A MILLION
; WORDS READ
.MOUT: PUSHJ P,.SAVE4 ;SAVE P1-P4
MOVE P1,1(P1)
SETZ P3,
PUSHJ P,CNVRT
POPJ P,0 ;ALSO RETURNS P1-P4
CNVRT: AOS ,P3
IDIVI P1,^D10
HRLM P2,0(P) ;SAVE REMAINDER ON STACK
SKIPE ,P1
PUSHJ P,CNVRT ;SOME MORE
CAIN P3,6 ;DUMP LEADING ZEROS
JRST .+4
TYPEIT <0>
AOJA P3,.-4
HLRZ T1,0(P) ;NOW GET NUMBERS TO PRINT
ADDI T1,"0"
PUSHJ P,.TCHAR ;DUMP IT
POPJ P,0 ;ONE OF THESE WILL GET US BACK TO
;.MOUT AFTER ALL NUMBERS ARE TYPED
;FIXMAN ROUTINE REMOVED WITH EDIT [1217]
; MDESUM -- SUBROUTINE TO OUTPUT DEVICE ERROR COUNTS
; FOR MASSBUS DEVICE ERROR REGISTERS
; SETUP P2= -# OF WORDS IN BLOCK TO TYPEOUT
; P3= XWD -#DEVICES,OFFSET WITH RESPECT TO MASNAM TABLE OF DEVICE TYPE
; CALL PUSHJ P,MDESUM
MDESUM: HRRZ P1,MASDSP(P3) ;CHECK FOR SOFT ERRORS FIRST
HLL P1,P2 ;-WC TO LEFT
SKIPE 0(P1) ;IS COUNT 0?
JRST MDESU1 ;NO LIST
AOBJN P1,.-2 ;YES-BUMP COUNT
HLRZ P1,MASDSP(P3) ;SETTUP AGAIN FOR HARD ERRORS
HLL P1,P2
SKIPE 0(P1) ;HARD ERROR?
JRST MDESU1 ;LIST
AOBJN P1,.-2 ;TRY NEXT COUNTER
AOBJN P3,MDESUM ;TRY NEXT DEVICE
POPJ P,0 ;ALL DONE GO HOME
MDESU1: MOVE T1,MASNAM(P3) ;PICKUP DEVICE NAME
PUSHJ P,.TSIXN ;TYPE IT IN SIXBIT
TYPEIT < H >
HRRZ P1,MASDSP(P3) ;PICKUP ADDRESS OF HARD ERROR BLOCK
HLL P1,P2 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,MASCNT ;PUBLISH IT
TYPEIT <
S >
HLRZ P1,MASDSP(P3)
HLL P1,P2 ;PUT -WORDCOUNT IN LH OF P1
PUSHJ P,MASCNT
PUSHJ P,.TCRLF
PUSHJ P,.TCRLF
AOBJN P3,MDESUM
POPJ P,0
; chklst--subroutine to check dev counters to see if
; any need listing. similar to 1st part of devsum
; setup p1 = -# words(counters) per dev to check
; p2 = -# devs to check,,offset to 1st
; p3 = lh--devdsp or 0
; rh--masdsp or 0
; if lh not = 0, sofdsp will also be checked
; call: pushj p,chklst
; rtn: +1 if no listing req'd
; +2 if listing is needed
chklst: HLRZ T1,P2 ;GET # DEVICES TOCHECK
SKIPN T1 ;IF NONE--EDIT 145
POPJ P,0 ;RETURN NOW
hlrz t1,p3 ;get devdsp
skipn t1 ;anything there
jrst chkls1 ;no try rh
add t1,p2 ;build pointer for soft errors first
HRLZ T2,P1 ;#COUNTERS
HRR T2,(T1) ;WHERE TO START
SKIPE (T2) ;= 0?
JRST SKPRTN ;NO-LIST
AOBJN T2,.-2 ;CHECK NEXT COUNTER
AOBJN T1,CHKLST+7 ;CHECK NEXT DEVICE
HLRZ T1,P3 ;GETDEVDSP
ADD T1,P2 ;NOW FOR HARD ERRORS
HRLZ T2,P1 ;# COUNTERS
HLR T2,(T1) ;WHERE TO START
SKIPE (T2) ;= 0?
JRST SKPRTN ;NO
AOBJN T2,.-2
AOBJN T1,.-5
HRRZI T1,SOFDSP ;CHECK SOFTWARE DETECTED
ADD T1,P2 ;OFFSETS
HRLZI T2,-NUMSFB ;# COUNTERS
HRR T2,(T1) ;WHERE TO START
SKIPE (T2) ;= 0?
JRST SKPRTN
AOBJN T2,.-2 ;NEXT COUNTER
AOBJN T1,.-5 ;NEXT DEVICE
; FALL INTO MASSBUS CHECKERS
CHKLS1: HRRZ T1,P3 ;GET MASDSP
SKIPN T1
POPJ P,0 ;LEAVE
ADD T1,P2 ;# DEVS,OFFSET
HRLZ T2,P1 ;# COUNTERS
HRR T2,(T1) ;WHERE TO START
SKIPE (T2)
JRST SKPRTN
AOBJN T2,.-2
AOBJN T1,.-5 ;CHECK NEXT DEVICE
HRRZ T1,P3 ;NOW FOR HARD ERRORS
ADD T1,P2
HRLZ T2,P1 ;# COUNTERS
HLR T2,(T1) ;WHERE TO START
SKIPE (T2) ;= 0?
JRST SKPRTN ;NOPE
AOBJN T2,.-2 ;CHECK NEST COUNTER
AOBJN T1,.-5 ;CHECK NEXT DEVICE
POPJ P,0 ;THATS ALL LEAVE
;MDESU2, CHKLS2 & CHKL21 ROUTINES REMOVED WITH EDIT [1217]
;TYPCNT -- SUBROUTINE TO TYPE ERROR BLOCK COUNTS FROM RIGHT HALF WORD [1217]
;SETUP P1= -WORDCOUNT,START ADDRESS OF BLOCK TO TYPE
;
;CALL PUSHJ P,TYPCNT
;RETURN CALL+1
TYPCNT: HRRZ T1,(P1) ;PICKUP VALUE IN RIGHT HALF WORD
PUSHJ P,TYPE4 ;TYPE IT AS 5 CHARACTER DECIMAL DIGIT
MOVEI T1,.TSPAC ; CHANGING 0'S TO SPACES
TLNE F,F.SAWD ;# SEEN?
MOVEI T1,.TPER ;YES
PUSHJ P,0(T1) ;TYPE EITHER SPACE OR PERIOD
AOBJN P1,TYPCNT ;LOOP TILL DONE
POPJ P,0
;CNTTYP -- SUBROUTINE TO TYPE ERROR BLOCK COUNTS FROM LEFT HALF WORD [1217]
;SETUP P1= -WORDCOUNT,START ADDRESS OF BLOCK TO TYPE
;
;CALL PUSHJ P,CNTTYP
;RETURN CALL+1
CNTTYP: HLRZ T1,(P1) ;PICKUP VALUE IN LEFT HALF WORD
PUSHJ P,TYPE4 ;TYPE IT AS 5 CHARACTER DECIMAL DIGIT
MOVEI T1,.TSPAC ; CHANGING 0'S TO SPACES
TLNE F,F.SAWD ;# SEEN?
MOVEI T1,.TPER ;YES
PUSHJ P,0(T1) ;TYPE EITHER SPACE OR PERIOD
AOBJN P1,CNTTYP ;LOOP TILL DONE
POPJ P,0
;MASCNT -- SUBROUTINE TO TYPE ERROR BLOCK COUNTS FROM RIGHT HALF WORD [1217]
;SETUP P1= -WORDCOUNT,START ADDRESS OF BLOCK TO TYPE
;
;CALL PUSHJ P,MASCNT
;RETURN CALL+1
MASCNT: HRRZ T1,(P1) ;PICKUP VALUE IN RIGHT HALF WORD
PUSHJ P,TYPE2 ;TYPE IT AS 3 CHARACTER DECIMAL DIGIT
MOVEI T1,.TSPAC ; CHANGING 0'S TO SPACES
TLNE F,F.SAWD ;# SEEN?
MOVEI T1,.TPER ;YES
PUSHJ P,0(T1) ;TYPE EITHER SPACE OR PERIOD
AOBJN P1,MASCNT ;LOOP TILL DONE
POPJ P,0
;CNTMAS -- SUBROUTINE TO TYPE ERROR BLOCK COUNTS FROM LEFT HALF WORD [1217]
;SETUP P1= -WORDCOUNT,START ADDRESS OF BLOCK TO TYPE
;
;CALL PUSHJ P,CNTMAS
;RETURN CALL+1
CNTMAS: HLRZ T1,(P1) ;PICKUP VALUE IN LEFT HALF WORD
PUSHJ P,TYPE2 ;TYPE IT AS 3 CHARACTER DECIMAL DIGIT
MOVEI T1,.TSPAC ; CHANGING 0'S TO SPACES
TLNE F,F.SAWD ;# SEEN?
MOVEI T1,.TPER ;YES
PUSHJ P,0(T1) ;TYPE EITHER SPACE OR PERIOD
AOBJN P1,CNTMAS ;LOOP TILL DONE
POPJ P,0
; TYPE4 -- SUBROUTINE TO TYPE 4 DIGIT DECIMAL NUMBER
; CONVERTING LEADING ZEROS TO SPACES
; CALL PUSHJ P,TYPE4
TYPE4: MOVSI T3,-4 ;SETUP TO DO 4 DIGITS
CAILE T1,^D9999 ;IS NUMBER TOO BIG TO TYPE IN 4 DIGITS
PJRST TYPE4O ;FILL FIELD WITH ASTIRSKS [1217]
TLZ F,F.SAWD ;CLEAR BIT SAYING WE SAW A NON-ZERO DIGIT
DIVST: IDIVI T1,^D10
HRLM T2,(P) ;SAVE REMAINDER ON STACK
AOBJP T3,.+2
PUSHJ P,DIVST ;ITERATE
HLRZ T1,(P) ;PICKUP DIGIT
TLNE F,F.SAWD ;HAVE WE SEEN A NON-ZERO DIGIT YET?
JRST DIVST1 ;YES- TYPE 0 AS 0 NOT SPACE
CAIN T1,0 ;IS IT A ZERO
MOVEI T1,-20 ;YES CHANGE IT TO SPACE
DIVST1: ADDI T1,60 ;DO CONVERSION TO ASCII
TLZ T1,-1 ;CLEAR THE LH PART OF WORD
CAIE T1,40 ;IS THIS DIGIT SPACE THEREFORE A ZERO
TLO F,F.SAWD ;SAY WE SAY A DIGIT
PJRST .TCHAR ;TYPE IT AND LOOP TILL DONE
TYPE4O: TYPEIT <****> ;SHOW FIELD OVERFLOW [1217]
POPJ P,0
.TPER: TYPEIT <.>
POPJ P,0
; TYPE2 -- SUBROUTINE TO TYPE 2 DIGIT DECIMAL NUMBER
; CONVERTING LEADING ZEROS TO SPACES
; CALL PUSHJ P,TYPE2
TYPE2: MOVSI T3,-2 ;SETUP TO DO 2 DIGITS
CAILE T1,^D99 ;IS NUMBER TOO BIG TO TYPE IN 2 DIGITS
PJRST TYPE2O ;FILL FIELD WITH ASTIRSKS [1217]
TLZ F,F.SAWD ;CLEAR BIT SAYING WE SAW A NON-ZERO DIGIT
DIVST3: IDIVI T1,^D10
HRLM T2,(P) ;SAVE REMAINDER ON STACK
AOBJP T3,.+2
PUSHJ P,DIVST3 ;ITERATE
HLRZ T1,(P) ;PICKUP DIGIT
TLNE F,F.SAWD ;HAVE WE SEEN A NON-ZERO DIGIT YET?
JRST DIVST4 ;YES- TYPE 0 AS 0 NOT SPACE
CAIN T1,0 ;IS IT A ZERO
MOVEI T1,-20 ;YES CHANGE IT TO SPACE
DIVST4: ADDI T1,60 ;DO CONVERSION TO ASCII
TLZ T1,-1 ;CLEAR THE LH PART OF WORD
CAIE T1,40 ;IS THIS DIGIT SPACE THEREFORE A ZERO
TLO F,F.SAWD ;SAY WE SAY A DIGIT
PJRST .TCHAR ;TYPE IT AND LOOP TILL DONE
TYPE2O: TYPEIT <**> ;SHOW FIELD OVERFLOW [1217]
POPJ P,0
PDLPNT: IOWD LPDL,PDLST ;INITIAL POINTER
;***********************************************
;***********************************************
;
;
;*** WATCH OUT, LISTING IS COMPRESSED TO SAVE PAPER
;
;***********************************************
;***********************************************
.XCREF
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 SETUP DEFAULTS
DEFVAL
; NOW MAKE SWTCHS MACRO FOR USE WITH DOSCAN
DEFINE SWTCHS<
DUMCH1
DUMCH2
>
XLIST
DOSCAN(SWTAB)
LIST
; GENERATE SIXBIT TABLE OF DEVICE NAMES
DEFINE DUMDV(A)<
SIXBIT/A/
>
NAMTBL:XLIST
DUMDVA
LIST
NAMLTH=<.-1>-NAMTBL+1 ;LENGTH OF TABLE OF SIXBIT NAMES
;NAMTB2 TABLE REMOVED WITH EDIT [1217]
;USING SAME DEFINITION OF MACRO NOW GENERATE
; LIST OF ONLY MASSBUS DEVICE NAMES
MASNAM:XLIST
DUMFS
DUMRP
DUMTM
LIST
MASLTH=<.-1>-MASNAM+1 ;LENGTH OF THIS TABLE
;MASNA2 TABLE REMOVED WITH EDIT [1217]
; GENERATE THE DISPATCH TABLE TO ENTRY SUMMATION ROUTINES
; ALL WILL RETRN VIA POPJ P,0
; TABLE IS INDEXED BY ERROR TYPE CODE
DEFINE TBLENT(A,B,C,D,E)<
IFDIF<B><UNKNOWN>,< XWD 0,SML'A'>
IFIDN<B><UNKNOWN>,< XWD 0,[POPJ P,0]>
>
; GENERATE THE TABLE
SUMDSP:XLIST
DUMENT
LIST
; GENERATE CONI BIT ERROR DISPATCHER
; RH = SOFT ERROR POINTER
; LH = HARD ERROR POINTER
DEFINE DUMDV(A)<
XWD A'HD,A'SF
>
DEVDSP:XLIST
DUMDVA
LIST
;DEVDS2 TABLE REMOVED WITH EDIT [1217]
DEFINE DUMDV(A)<
XWD A'ST,A'SP
>
; ST=STORAGE TEMP,SP=PERM.
SOFDSP:XLIST
DUMDVA
LIST
;SOFDS2 TABLE REMOVED WITH EDIT [1217]
; NOW THE DISPATCHER FOR MASSBUS ERROR REGS
DEFINE DUMDV (A)<
XWD A'DS, A'DH
>
MASDSP:XLIST
DUMFS
DUMRP
DUMTM
LIST
;MASDS2 & BKLOC TABLES REMOVED WITH EDIT [1217]
IFN EXPPRT,<
LALL
>
IFE EXPPRT,<
SALL
>
DEFINE TBLENT(A,B,C,D,E)<
XWD 0,A
>
ALLTBL:XLIST
DUMENT
LIST
ALLLTH=<.-1>-ALLTBL+1 ;LENGTH OF ERROR INDEX TABLE
; 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)<
[ASCIZ/B/]
>
; GENERATE THE TEXT
TYPMES: DUMENT
XLIST
LIT
LIST
END START