Google
 

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