Google
 

Trailing-Edge - PDP-10 Archives - isi-saio_19830204 - isi-sa10/sysers.mac
There are 16 other files named sysers.mac in the archive. Click here to see a list.
;<ISI-SA10>SYSERS.MAC.13631	 4-Feb-83 12:12:21	Edit by ISI-SA10
;
;	SAIO Changes Copyright 1982, All Rights Reserved
;	University of Southern California
;
;<ISI.SUBSYS.SYSERR>SYSERS.MAC.13630	 3-Dec-82 09:52:41	Edit by SMITH
;#12 Add entry 114 for release 5
;#3 updated tables to agree with new device no.'s for TUSA,CC01,CC02
;#1 Code 121 - Errors from disks on SA10 (actually in file as 111)
;#2 Code 122 - Errors from mag tapes on SA10 (actually in file as 111)
	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
	EXTERNAL SN.LST		;#1 .

;	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]
	SIXBIT/UNK/			;#3 25 not used
	SIXBIT/UNK/			;#3 26 not used
	SIXBIT/UNK/			;#3 27 not used
	SIXBIT/CT01/			;#3 30 ;#2 calcomp (ibm style) mag tapes
	SIXBIT/CC01/			;#3 31 ;#1 3330 mod I
	SIXBIT/CC02/			;#3 32 ;#1 3330 mod II

RHTYP:	SIXBIT	/  RH??/
	SIXBIT	/  RH10/
	SIXBIT	/  RH20/
	SIXBIT	/  RH11/
	SIXBIT	/  SA10/		;#1 .
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,P2			;#1 copy it for some routines
	MOVE	T2,KEYBUF		;#1 get type
	PUSHJ	P,@SN.LST(T2)		;#1 call S/N routine
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,.SA10		;#1 SA10? 
	JRST	SL121L			;#1 yes
	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
SL121L:	PUSHJ	P,SA1TTL		;#1 output SA10 header
	HRLI	P4,-NUMSA1		;#1 set up bit count
	JRST	SL111M			;#1 skip over other headers
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]
	SL111Z				;#3 25 not used
	SL111Z				;#3 26 not used
	SL111Z				;#3 27 not used
	SL111Z				;#3 30 TUSA not supported
	SL121R				;#3 31 ;#1 3330 mod I
	SL121R				;#3 32 ;#1 3330 mod II
;SETUP FOR RP04,5,6

SL111R:	PUSHJ	P,RP4T2L		;OUTPUT HEADER
	HRLI	P4,-<NURP02+NURP10+NURP15> ;SET UP BIT COUNT
	JRST	SL111W

SL121R:	PUSHJ	P,CC1T2L		;#1 output header
	HRLI	P4,-NUMSD0		;#1 bit count
	JRST	SL111W			;#1 join common code

;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,P2			;#1 copy it for some routines
	MOVE	T2,KEYBUF		;#1 get type
	PUSHJ	P,@SN.LST(T2)		;#1 call S/N routine
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
SML121:					;#1 Dummy for SA10 Disks
SML122:					;#2 Dummy for SA10 Magtapes
SML114:					;#12 Dummy for DISK/TAPE Statistics
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

;#1 SA10 controller CONI summary title

SA1TTL:	TYPEIT	<

			   CONI  SA10

	     PI   PAR       CH0  CH1  CH2  CH3  CH0  CH1  CH2  CH3  CH0  CH1  CH2  CH3
	     REQ  ERR  NXM  IE   IE   IE   IE   GO   GO   GO   GO   STS  STS  STS  STS>
	POPJ	P,0		;#1 .

;	[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

CC1T2L:				;#1 3330 mod I, II title
	TYPEIT	<

		       - Sense Bytes 0-3 -
>

	TYPEIT	<
	       C  I  B  E  D  O  P  I  E  N  F  W  O  C  E  >
	TYPEIT	<
	       R  R  O  C  C  V  R  T  O  R  P  R  P  O  D  >
	TYPEIT	<
	       J  Q  P  K  K  R  M  F  C  F  R  I  I  R  P  >
	POPJ	P,		;#1 return

;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