Google
 

Trailing-Edge - PDP-10 Archives - AP-4172F-BM - 3a-sources/sysers.mac
There are 16 other files named sysers.mac in the archive. Click here to see a list.
;<BAKER.SYSERR>SYSERS.MAC.7, 28-Jul-78 13:43:21, Edit by BAKER
;<BAKER.SYSERR>SYSERS.MAC.6, 21-Jul-78 13:25:28, Edit by BAKER
;<BAKER.SYSERR>SYSERS.MAC.5, 21-Jul-78 09:27:21, Edit by BAKER
;<BAKER.SYSERR>SYSERS.MAC.4, 20-Jul-78 17:24:20, Edit by BAKER
;<BAKER.SYSERR>SYSERS.MAC.3, 12-Jul-78 11:26:27, Edit by BAKER
;<SYSERR>SYSERS.MAC.1, 22-Jun-78 11:22:25, EDIT BY WOJCIK
;HERE WE BEGIN TO TRACK EDITS



	TITLE	SYSERS -- SUMMARY LISTING ROUTINES
	SUBTTL	VERSION 12(763)		K. COYE/ RLD/ PJB/ ES/ TJW





;COPYRIGHT (C) 1972,1975,1977,1978 BY
;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
;
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY  OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE  SOFTWARE  IS  HEREBY
;TRANSFERED.
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  NOTICE
;AND  SHOULD  NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF  ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

	SEARCH	SYRUNV	;OUR UNIVERSAL FILE
	SEARCH	SYRLOW
;*;	SEARCH	SCNMAC


	.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





	;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,MASLT2,MDE000
	



	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
MDE000:
BITCHK:
DEVTYP:
DUMDAY:
ERINDX:
ERRLTH:
ERRTBL:
KLEDMP:
KONMSK:
LINE:
MINERB:
PCSTBL:


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
	PUSHJ	P,TTLST	;TYPE TITLE LINE
	TYPEIT	<
			   - SYSTEM SUMMARY -
************************************************************************

>
	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
	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.


	;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
	PJRST	TTLS1
	;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	TOPMON	;TOPS20 RUNNING?
	 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	TOPMON	;TOPS20 RUNNING?
	 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
	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]
	SKIPE	RH1HDR		;LIST RH10 HDR?
	PUSHJ	P,TTLST	;TYPE TITLE LINE
	 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]
	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	SL11D		;NOTHING-START ON DEVICES
	;[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

	;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
	 POPJ	P,0	;THAT'S IT FOR NOW
	PUSHJ	P,RP4TTL	;G.T. 16 RP04'S ??
	MOVSI	P2,-NURP02-NURP10-NURP15
	MOVE	P3,[XWD -RPCNUM-RPDNUM,FSXNUM+RPANUM+RPBNUM]
	PUSHJ	P,MDESUM
	POPJ	P,0		;THAT'S ALL FOLKS!!

	;NOTHING FOR TU16'S YET
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:	PJRST	SML130		;SAME AS 130	[514]

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

SML50:
SML60:
SML61:
SML62:
SML66:
SML67:
SML71:	POPJ	P,0		;NOTHING TO LIST
	SUBTTL	TOPS-20 SUMMARY LISTING ROUTINES

SML101:	POPJ	P,0		;NOTHING TO LIST

SML102:	SKIPN	BG%WHY		;
	 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	<
	BUGHLT/BUGCHK BREAKDOWN:>	;WHAT WE'RE DOING
	MOVEI	P3,BG%WHY		;POINTER
SL102A:	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	SL102A		;AND GET NEXT

SML111:	HRRZI	P1,-NUMRHB		;RH10 IS GREATER THAN RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111A			;NO
	HLRZ	T2,M000T		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	PUSHJ	P,DEVSU2
	;START SECOND CONTROLLER
SL111A:	HRRZI	P1,-NUMRHB		;RH10 G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,MAXSDV		;START A 8
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111B			;NO
	HLRZ	T2,M000T+MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,MAXSDV		;START AT 8
	PUSHJ	P,DEVSU2
SL111B:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,2*MAXSDV		;START A 16
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111C			;NO
	HLRZ	T2,M000T+2*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,2*MAXSDV		;START AT 16
	PUSHJ	P,DEVSU2
;4TH CHANNEL
SL111C:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,3*MAXSDV		;START A 24
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111U			;NO
	HLRZ	T2,M000T+3*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,3*MAXSDV		;START AT 24
	PUSHJ	P,DEVSU2
;MORE ADDED WITH[725]-RLD
;5TH CHANNEL
SL111U:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,4*MAXSDV		;START A 24
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111R			;NO
	HLRZ	T2,M000T+4*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,4*MAXSDV		;START AT 24
	PUSHJ	P,DEVSU2
;6TH CHANNEL
SL111R:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,5*MAXSDV		;START A 24
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111S			;NO
	HLRZ	T2,M000T+5*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,5*MAXSDV		;START AT 24
	PUSHJ	P,DEVSU2
;7TH CHANNEL
SL111S:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,6*MAXSDV		;START A 24
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111T			;NO
	HLRZ	T2,M000T+6*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,6*MAXSDV		;START AT 24
	PUSHJ	P,DEVSU2
;8TH CHANNEL
SL111T:	HRRZI	P1,-NUMRHB		;RH10G.T.RH20
	HRLZI	P2,-MAXSDV		;# PER CHANNEL-START AT ZERO
	HRRI	P2,7*MAXSDV		;START A 24
	HRLZI	P3,DEVDS2
	PUSHJ	P,CHKLS2		;ANY NEED LISTING?
	 JRST	SL111D			;NO
	HLRZ	T2,M000T+7*MAXSDV		;GET CONTROLLER TYPE
	MOVEI	T1,RH2TTL		;ASSUME RH20
	CAIN	T2,..RH11		;RH11?  [600]
	 MOVEI	T1,R11TTL		;YES! - SET HEADER
	PUSHJ	P,0(T1)			;LIST TITLE
	MOVSI	P2,-NUMRHB
	HRLZI	P3,-MAXSDV		;START AT 0
	HRRI	P3,7*MAXSDV		;START AT 24
	PUSHJ	P,DEVSU2
;END [725]
	;NOW DO DEVICE REGISTERS
SL111D:	HRRZI	P1,-50			;ALL REGISTERS ARE THIS