Google
 

Trailing-Edge - PDP-10 Archives - BB-4172G-BM - language-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 14(1267)	K. COYE/ RLD/ PJB/ ES/ TJW/ LWE/ SRL/ GSK





;COPYRIGHT (C) 1972,1975,1977,1978,1979 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

	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 OCCURANCE 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:	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 OCCURANCE 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

	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	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 -RPGNUM-RPHNUM,RPGLOC]
	PUSHJ	P,DEVSUM

	;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
	 POPJ	P,0		;THAT'S IT FOR NOW
	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

	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:
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]

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:	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
	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
;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:	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 =	OCCURANCE 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/UNK/		;202
	SIXBIT/UNK/		;203
	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]



	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