Google
 

Trailing-Edge - PDP-10 Archives - bb-d868a-bm - 3-sources/sysern.mac
There are 14 other files named sysern.mac in the archive. Click here to see a list.
	TITLE	SYSERN -- SYSTEM ERROR FILE PROCESSOR -- MAINLINE CODE

	SUBTTL	VERSION 11(614)		K. COYE/ RLD/ PJB





;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
	SEARCH	SYRLOW
;*;	SEARCH	SCNMAC
	.REQUIRE SYRLIB


	;EXTERNALS DEFINED HERE ARE IN SYRLIB.MAC, THE LIBRARY
	;OF COMMON ROUTINES FOR ALL PARTS OF THE SYSERR PACKAGE.

	EXTERNAL DAEVER,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,TITLST,SKIPWD,ADVBFF
	EXTERNAL FIXBUF,STBUFF,INPWD,GOSUM,GETWD,FFPRNT,SLPRNT,CLPRNT
	EXTERNAL TBPRNT,CHROUT,TTYSIX,MDECHR,FIXNAM






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



	
	;DUMALL -- DUMMY MACRO LEVEL 3
	;SUBMACRO DUMXXX
	;ARGS
	;NONE USED TO HOUSE LEVEL 2 SUBMACRO DUMXXX
	;THOSE DEFINED HERE ARE THOSE FULLY PROCESSED BY
	;THIS SEGMENT. PART OF EDIT #120.

	DEFINE	DUMALL<
	DUM201
	DUM202
	DUM203
	DUM210
	DUM220
	DUM230
	DUM232
>



	.JBVER==137
	LOC	.JBVER

	BYTE	(3)VWHO(9)VSYSER(6)VMINOR(18)VEDIT
	SALL


	TWOSEG
	RELOC	400000






	;DUMMY ROUTINE TOMAKEPACK. COMPILE
KLEDMP:
	;SUBTAB -- SUBROUTINES TO OUTPUT ENTRY WORD IN DESIRED FORMAT
	;SETUP  P1=ADDRESS OF TEXT TO BE OUTPUT AS DESCRIPTOR
	;	FOR THIS DATA WORD.
	;	P2= WORD TO BE OUTPUT.
	;CALL	PUSHJ	P,SUBTAB(MODE)
	;
	;RETURN	CALL+1
	;DISPATCHES TO APPROPIATE ROUTINE INTERNALLY TO DO WORD CONVERSION AND OUTPUT
SUBTAB:	SINDEX	<OCTLE>
	SINDEX	<DECML>
	SINDEX	<ASCIE>
	SINDEX	<SIXBT>
	SINDEX	<HAFWD>
	SINDEX	<SPECL>
	SINDEX	<HTIME>
	SINDEX	<PPNWW>
	SINDEX	<UDATE>
	SINDEX	<TASCI>
	SINDEX	<PPNWT>
	;PROCSA -- STANDARD ENTRY PROCESSOR #1
	;CALL	JRST PROCSA
	;
	;RETURN	JRST ABORT	WHEN ENTRY IS PROCESSED OR ABORTED
	;OPERATION IS CONTROLLED BY ENTRY IN CONTROL TABLE
	;ROUTINE GETS AOB POINTER TO DESIRED WORD IN BUFFER
	;IF THERE IS ONE PRESENT
	;THEN DISPATCHES TO WORD PROCESSOR LEVEL
	;VIA PUSHJ	P,SUBTAB(MODE)
	;PASSES BUFFER WORD IN P2 TO WORD PROCESSOR

PROCSN:	SETZM	OFFSET		;CLAR WORD OFFSET COUNT
	MOVE	P1,(CTINDX)	;PICKUP FIRST WORD IN CONTROL TABL
	JUMPE	P1,ABORT	;ABORT WHEN END OF CTL TABL SEEN
	TLNE	P1,770000	;DO WE NEED TO GET AN AOB POINTER
	PUSHJ	P,GETAOB	;YES-WORD IS IN A RELOCATABL SUBTABLE IN ENTRY
	LDB	T2,[POINT 6,P1,11]	;**WATCHOUT**PICKUP WORD LOCATION IN ENTRY
	ADD	T2,OFFSET	;OFFSET CONTAINS AOB BLOCK STARTING LOCATION
	CAML	T2,ENTRWC	;[153]DONT TRY TO ACCESS WORDS OUTSIDE OF ENTRY
	AOJA	CTINDX,PROCSN	;GET NEXT WORD IN CTL TABLE
	CAILE	T2,WKSIZE	;MAKE SURE THE WORD ASKED FOR IS IN WORK BUFFER
	AOJA	CTINDX,PROCSN	;IGNORE AND GET NEXT WORD
	MOVE	P2,WKBUFF(T2)	;PICKUP DATA WORD IN WORK BUFF
	LDB	T3,[POINT 6,P1,17]	;****WATCHOUT**PICKUP WORD PROCESSES MODE
	CAIG	T3,SUBMAX	;***WATCHOUT***IS IT AN UNKNOWN MODE
	PUSHJ	P,SUBTAB(T3)	;ITS RECOGINIZED
	AOJA	CTINDX,PROCSN	;EITHER NOT KNOWN OR FALL HERE

GETAOB:	LDB	T2,[POINT 6,P1,5]	;PICKUP AOBJN POINTER ADDRESS IN ENTRY
					;AOB GIVEN IS WITH REF TO HEADER
	SKIPL	T2,WKBUFF(T2)	;PICKUP THE ACTUAL POINTER AND SKIP IF LEGAL
	JRST	AOBQIT		;AOBJN POINTER = 0 CLEAN UP PDL AND GO TO PROCSN
	SUB	T2,HEADWC	;CORRECT AOB POINTER FOR HEADER SIZE
	HRRZM	T2,OFFSET	;SAVE IT IN OFFSET
	MOVEM	T2,AOBPNT	;SAVE POINTER FOR SPECL ROUTINE USAGE
	POPJ	P,		;VAMOOSE



	;HERE WHEN AOBJN POINTER = POS IN LH
	;NORMALLY SHOULD NOT HAPPEN

AOBQIT:	POP	P,T2		;DUMMY POP TO FIX PDP
	AOJA	CTINDX,PROCSN	;BUMP CTINDX AND BACK TO START
	SUBTTL	DIALOG RELATED SUBROUTINES
	;HERE IS THE DUMMY PROCSB FOR THIS HIGH SEG
	;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
	;WITH SYSERB.HGH

PROCSB:	MOVE	T1,[SIXBIT/SYSERB/]
	MOVEM	T1,OVRBLK+1	;INTO THE SPEC AREA
	SETZ	15,
	MOVEM	17,SAVEAC+17
	MOVEI	17,SAVEAC
	BLT	17,SAVEAC+16	;TUCK AWAY OUR AC'S
	JRST	OVRLAY		;NOW PLEASE OVERLAY US WITH PROCSB

	;HERE IS THE DUMMY PROCSA FOR THIS HIGH SEG
	;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
	;WITH SYSERB.HGH

PROCSA:	MOVE	T1,[SIXBIT/SYSERA/]
	MOVEM	T1,OVRBLK+1	;INTO THE SPEC AREA
	SETZ	15,
	MOVEM	17,SAVEAC+17
	MOVEI	17,SAVEAC
	BLT	17,SAVEAC+16	;TUCK AWAY OUR AC'S
	JRST	OVRLAY		;NOW PLEASE OVERLAY US WITH PROCSB

	;HERE IS THE DUMMY PROCSD FOR THIS HIGH SEG
	;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
	;WITH SYSERD.HGH

PROCSD:	MOVE	T1,[SIXBIT/SYSERD/]
	MOVEM	T1,OVRBLK+1	;INTO THE SPEC AREA
	SETZ	15,
	MOVEM	17,SAVEAC+17
	MOVEI	17,SAVEAC
	BLT	17,SAVEAC+16	;TUCK AWAY OUR AC'S
	JRST	OVRLAY		;NOW PLEASE OVERLAY US WITH PROCSB


	;HERE IS THE DUMMY PROCSC FOR THIS HIGH SEG
	;IT SAVES THE AC'S AND THEN CALLS OVRLAY FOR REPLACEMENT
	;WITH SYSERC.HGH

PROCSC:	MOVE	T1,[SIXBIT/SYSERC/]
	MOVEM	T1,OVRBLK+1	;INTO THE SPEC AREA
	SETZ	15,
	MOVEM	17,SAVEAC+17
	MOVEI	17,SAVEAC
	BLT	17,SAVEAC+16	;TUCK AWAY OUR AC'S
	JRST	OVRLAY		;NOW PLEASE OVERLAY US WITH PROCSC



	;STARTN-- ROUTINE TO START AT WHEN OVERLAYED
	;TO CORRECTLY PROCESS CURRENT ENTRY.

STARTN:	MOVEI	T1,CHROUT	;OUR TYPEOUT ROUTINE
	PUSHJ	P,.TYOCH##	;INIT SCAN
	MOVE	T1,ERTYPE	;CURRENT TYPE
	PUSHJ	P,ERRINT	;GET OUR INDEX VALUE
	MOVE	T1,ERTYPE	;CORRECT INDEX TO ENTCHR TABLE
	MOVE	T2,ENTCHR(T1)	;PICKUP ENTRY CHAR WORD
	TLZ	F,F.BTCK	;CLEAR EXAMINE ENTRY FLAG
	TRNE	F,F.SEQ
	JRST	START1
	TLNN	T2,E.LALL!E.LNXM!E.LPAR!E.LPER!E.LSUM	;ANY LISTING DESIRED
	JRST	SKIPIT		;SKIP THIS ENTRY
	TLNE	T2,E.LNXM!E.LPAR!E.LPER!E.LSUM	;ANY REASON TO DO BIT CHECKING?
	TLO	F,F.BTCK	;YES-SET FLAG TO DO IT LATER
START1:	MOVE	T3,ERTYPE	;GET CORRECT INDEX
	AOS	ENTCHR(T3)	;NO- BUMP COUNTER
	SETZ	WKINDX,		;CLEAR INDEX INTO BUFFER
	SKIPG	T1,ENTRWC	;PICKUP ENTRY LENGTH AND CHECK FOR LEGALITY
	FATAL	<ENTRY WITH ZERO LENGTH BODY SPECIFIED>
	MOVE	P4,ERRIND
	TLNE	F,F.BTCK	;ANY TO DO?
	PUSHJ	P,@BITCHK(P4)	;GO DO IT
	TRNE	F,F.REM		;[417]/REMOTE?
	 PUSHJ	P,REMDAT##	;YES-DO IMAGE BINARY DUMP
	PUSHJ	P,HDRLST
	MOVE	T2,ALLIND
	HRRZ	T1,PCSTBL(T2)
	HLRZ	CTINDX,PCSTBL(T2)	;CONTROL TABLE ADDRESS
	JRST	(T1)

	SUBTTL SPECIAL DECODING ROUTINES

NCUVER:	TYPEIT	(<
	NETCON VERSION:  >)
	LDB	T1,[POINT 9,P2,11]	;EDIT 106
	PUSHJ	P,.TOCTW		;OUTPUT MAJOR
	LDB	T1,[POINT 6,P2,17]	;NOW MINOR
	JUMPE	T1,NCUVC		;IF ANY
	SOS	T1			;MAKE ALPHA OFFSET
	IDIV	T1,"Z"-"A"
	JUMPE	T1,NCUVS2
	ADDI	T1,"A"
	PUSH	P,T2
	PUSHJ	P,.TCHAR
	POP	P,T2
NCUVS2:	MOVEI	T1,"A"(T2)	;GET LOW LETTER
	PUSHJ	P,.TCHAR
NCUVC:	MOVEI	T1,"("
	PUSHJ	P,.TCHAR
	LDB	T1,[POINT 18,P2,35]	;CUST VER
	PUSHJ	P,.TOCTW
	MOVEI	T1,")"
	PUSHJ	P,.TCHAR
	POPJ	P,0
NL$RTN:	LDB	P1,[POINT 8,WKBUFF+NL%RTN,35]	;GET RETURN STATUS
	CAIN	P1,1				;GOOD RELOAD?
	 POPJ	P,0				;YES! - LEAVE
	IORI	P1,777400			;HW - -
	HRRES	P1,P1				;FW - NEG.
	MOVMS	P1,P1				;POS OFFSET
	MOVE	T1,NLLRES(P1)			;ADDR. OF REASON
	PJRST	.TSTRG


NLLRES:	[ASCIZ/0-INVALID RETURN CODE/]
	[ASCIZ/-1. INVALID FUNCTION OR OPTION/]
	[ASCIZ/-2. INVALID MESSAGE FORMAT/]
	[ASCIZ/-3. INSUFFICIENT STATUS/]
	[ASCIZ/-4. INVALID RETURN CODE/]
	[ASCIZ/-5. INVALID RETURN CODE/]
	[ASCIZ/-6. INVALID RETURN CODE/]
	[ASCIZ/-7. INVALID RETURN CODE/]
	[ASCIZ/-8. INVALID LINE ID/]
	[ASCIZ/-9. LINE IN WRONG STATE/]
	[ASCIZ/-10. LINE COMMUNICATIONS ERROR/]
	[ASCIZ/-11. INVALID NODE ID/]
	[ASCIZ/-12. INVALID SERVER ID/]
	[ASCIZ/-13. INVALID FILE/]
	[ASCIZ/-14. CONFIGURATION DATA BASE ERROR/]
	[ASCIZ/-15. RESCOURCE ERROR/]
	[ASCIZ/-16. INVALID PARAMETER VALUE/]
	[ASCIZ/-17. LINE PROTOCOL ERROR/]
	[ASCIZ\-18. FILE I/O ERROR\]
;HERE START THE LISTING ROUTINES FOR NETWORK ERROR LOGGING
;MESSAGES. THE SAME CODE IS USED FOR BOTH MAINT. & OPR.
;LOG ENTRIES.

NLOG00:	POPJ	P,0	;FOR NOW
;HERE START THE LISTING ROUTINES FOR DN64 STATISTICS, P2 HOLDS
;FIRST WORD OF ENTRY.

S6%LST:	TYPEIT	<
	REASON FOR ENTRY:  >
	CAIN	P2,1		;STARTUP?
	PUSHJ	P,S6%LSA
	CAIN	P2,2	;HOUR SINCE LAST ENTRY
	PUSHJ	P,S6%LSB
	CAIN P2,3	;SHUTDOWN?
	PUSHJ	P,S6%LSC
	CAILE	P2,3	;UNKNOWN?
	PUSHJ	P,S6%LSD
	MOVE 	P1,WKBUFF+S6%001	;GET NEXT 4 BYTES (4-7)
	TYPEIT	<
	PORT #: >
	LDB	T1,[POINT 8,P1,7]
	PUSHJ	P,.TOCTW		;
	TYPEIT	<	LINE #: >
	LDB	T1,[POINT 8,P1,15]
	PUSHJ	P,.ODECW
	TYPEIT 	<	DEVICE #: >
	LDB	T1,[POINT 8,P1,23]
	PUSHJ	P,.ODECW
	TYPEIT	<
	LINE DRIVER TYPE: >
	LDB 	T2,[POINT 8,P1,31]
	MOVE	T1,[SIXBIT/DQ11/]	;ASSUME SOMETHING
	CAIN	T2,2			;BUT CHECK
	 MOVE 	T1,[SIXBIT/DUP11/]
	PUSHJ	P,.TSIXN		;SAY IT IN SIXBIT
	MOVE 	P1,WKBUFF+S6%S00	;GET FIRST 4 STATUS BYTES (8-11)
	TYPEIT	<		TERMINAL TYPE: >
	LDB	T2,[POINT 8,P1,15]
	MOVEI	T1,[ASCIZ/IBM 3780/]
	CAIE	T2,1			;BETTER CHECK
	 MOVEI	T1,[ASCIZ/IBM 2780/]	;OK, CHANGE IT
	PUSHJ	P,.TSTRG
	TYPEIT	<
	FLAGS: >
	LDB	P2,[POINT 8,P1,23]	;GET FLAG BYTE
	MOVEI	T1,[ASCIZ/SIMULATE,/]
	TRNN	P2,1B35			;CHECK BIT 0 OF BYTE
	 MOVEI	T1,[ASCIZ/SUPPORT,/]	;IF CLEAR,CHANGE
	PUSHJ	P,.TSTRG		;SAY EITHER
	MOVEI	T1,[ASCIZ/ PRIMARY BSC STATION/]
	TRNN	P2,1B34			;CHECK BIT 1 OF BYTE
	 MOVEI	T1,[ASCIZ/ SECONDARY BSC STATION/]	;IF CLEAR,CHANGE
	PUSHJ	P,.TSTRG
	TYPEIT	<
	LINE INFORMATION:  >
	LDB	P2,[POINT 8,P1,31]	;P1 STILL HAS S6%S00
	MOVEI	T1,[ASCIZ/ ENABLED,/]	;SETUP
	TRNE	P2,1B35			;IF NOT SET
	 PUSHJ	P,.TSTRG		;DON'T LIST
	MOVEI	T1,[ASCIZ/ DTR,/]
	TRNE	P2,1B34
	 PUSHJ	P,.TSTRG
	MOVEI	T1,[ASCIZ/ DSR/]
	TRNE	P2,1B33
	 PUSHJ	P,.TSTRG
	TYPEIT	<
	COUNT OF LINE DRIVER ERROR INTERRUPTS: >
	;SETUP POINTERS ETC TO LIST LINE STATUS AND COUNTERS
	SETZM	P3		;COUNT OF ITEMS LISTED
	MOVE	P4,[POINT 8,WKBUFF+S6%S01,7]	;INITIAL BYTE POINTER
	LDB	T1,P4		;GET FIRST ITEM
	ILDB	T2,P4		;GET HI BYTE
	MOVE	P2,[POINT 8,T1,27]
	DPB	T2,P2		;PLACE HIGH BYTE
	AOS	P3		;BUMP COUNT OF ITEMS LISTED
	PUSHJ	P,.ODECW
	TYPEIT	<
	LINE DRIVER STATUS AT LAST ERROR INTERRUPT
	 REC. STATUS REGISTER: >
	ILDB	T1,P4		;GET NEXT BYTE
	ILDB	T2,P4		;GET HI BYTE
	DPB	T2,P2		;PLACE HIGH BYTE
	PUSHJ	P,.TOCTW
	AOS	P3		;BUMP COUNT
	TYPEIT	<
	 XMIT STATUS REGISTER:	>
	ILDB	T1,P4		;AGAIN,NEXT BYTE
	ILDB	T2,P4		;GET HI BYTE
	DPB	T2,P2		;PLACE HIGH BYTE
	PUSHJ	P,.TOCTW
	PUSHJ	P,.TCRLF
	AOS 	P3
	;NOW USE ITEM DESCRIPTION TABLES AND A LOOP.
S6%LS0: ;CHANGED WITH EDIT 546
	MOVE T1,S6%NAM(P3)	;GET ADDRESS OF ITEM NAME
	PUSHJ	P,.TSTRG
	PUSHJ	P,.TTABC
	ILDB	T1,P4		;GET THE COUNTER VALUE
	ILDB	T2,P4		;GET HI BYTE
	DPB	T2,P2		;PLACE HIGH BYTE
	PUSHJ	P,.ODECW	;PRINT DEC.VALUE WITH PERIOD
	AOS	P3		;BUMP COUNT
	CAIN	P3,32		;DONE ALL 32 ITEMS?
	 JRST ABORT		;YES-DONE WITH ENTRY
	PUSHJ	P,.TTABC	;SPACE OVER
	MOVE T1,S6%NAM(P3)	;GET ADDRESS OF ITEM NAME
	PUSHJ	P,.TSTRG
	PUSHJ	P,.TTABC
	ILDB	T1,P4		;GET THE COUNTER VALUE
	ILDB	T2,P4		;GET HI BYTE
	DPB	T2,P2		;PLACE HIGH BYTE
	PUSHJ	P,.ODECW	;PRINT DEC.VALUE WITH PERIOD
	AOS	P3		;BUMP COUNT
	PUSHJ	P,.TCRLF	;NEXT LINE
	CAIE	P3,32		;ALL DONE?
	 JRST	S6%LS0		;NO, GET NEXT
	JRST	ABORT		;END OF ENTRY
S6%LSA:	 TYPEIT (D60SPL SIGNED ON)
		    POPJ	P,0
S6%LSB:	 TYPEIT ( ENTRY RECORDED ON THE HOUR)
		    POPJ	P,0
S6%LSC:	 TYPEIT (D60SPL SIGNED OFF)
		    POPJ	P,0
S6%LSD:	 TYPEIT (UNKNOWN)
		    POPJ	P,0
;HERE ARE NAMES OF ITEM COUNTERS
S6%NAM:	0
	0	;FIRST 3 ALREADY LISTED VIA "TYPEIT" AND COUNTER IS BUMPED
	0	;AFTER LISTING SO 2 BLANKS ARE NEEDED
	[ASCIZ/RECEIVER OVERRUN/]
	[ASCIZ/TRANSMITTER OVERRUN/]
	[ASCIZ/CLEAR-TO-SEND FAILS/]
	[ASCIZ/MSG'S SENT & ACK'D/]
	[ASCIZ/MSG'S SENT & NAK'D/]
	[ASCIZ/INVALID RESP. TO TTD/]
	[ASCIZ/INVALID RESP. TO MSG'S/]
	[ASCIZ/TTD'S SENT/]
	[ASCIZ/WACKS'S REC'D/]
	[ASCIZ/	EOT'S IN RESP. TO MSG'S/]
	[ASCIZ/INVALID BIDS OR RESP.TO BIDS/]
	[ASCIZ/RVI'S REC'D WHILE X-MIT/]
	[ASCIZ/MSG'S REC'D & ACK'D/]
	[ASCIZ/BAD BCC'S/]
	[ASCIZ/NAK'S SENT FOR DATA MSG'S/]
	[ASCIZ/WACK'S SENT/]
	[ASCIZ/TTD'S REC'D/]
	[ASCIZ/	EOT'S SENT OR REC'D/]
	[ASCIZ/MSG'S IGNORED/]
	[ASCIZ/	TRANSPARENT MSG'S W. INVALID CHAR. AFTER DLE/]
	[ASCIZ/ATTEMPTS TO CHANGE MODE IN BLOCKED MSG/]
	[ASCIZ/TRANSMITTER TIMEOUTS/]
	[ASCIZ/CTS DELAY IN JIFFIES/]
	;START EDIT [522]

	;ROUTINE FOR LISTING NETWORK LINE COUNTERS

LC$CNT:	JUMPE	P2,ABORT		;IS COUNTER 0?
	MOVNS	P2			;NO! - CREATE AOBJN POINTER
	HRLZS	P2			; -COUNT IN LEFT HALF
	HRRI	P2,LC%TYP		; POINTER IN RIGHT HALF
LC.CNT:	PUSHJ	P,.TCRLF
	HRRZ	T1,WKBUFF(P2)		;GET COUNT
	CAIL	T1,400000		;OVERFLOW?
	 PUSHJ	P,LC.OVF		;YES!
	PUSHJ	P,.ODECW		;NO! - OUTPUT VALUE IN DECIMAL
	PUSHJ	P,.TTABC		;TAB
	HLRZ	T1,WKBUFF(P2)		;GET TYPE
	MOVE	T1,LC$TYP(T1)		;GET STRING POINTER
	PUSHJ	P,.TSTRG		;OUTPUT IT
	AOBJN	P2,LC.CNT		;DONE?
	 POPJ	P,0			;YES! - EXIT

LC.OVF:	MOVEI	T1,">"			;OUTPUT
	PUSHJ	P,.TCHAR		; 'GREATER THAN'
	MOVEI	T1,400000		; '131072.'
	POPJ	P,0			;CONTINUE

	;NAMES OF LINE COUNTERS

LC$TYP:	[ASCIZ/SECONDS SINCE LAST ZEROED/]
	[ASCIZ/BLOCKS RECEIVED/]
	[ASCIZ/BLOCKS SENT/]
	[ASCIZ/LINE ERROR RETRANSMISSIONS/]
	[ASCIZ/RECEIVED LINE ERRORS/]
	[ASCIZ/NON - LINE ERROR RETRANSMISSIONS/]
	[ASCIZ/RECEIVE TIMEOUTS/]
	[ASCIZ/RECEIVE SELECTION ERRORS/]
	[ASCIZ/RESOURCE ERRORS/]

	;END EDIT [522]

DEVTYP:0
	RLD1DV


	SUBTTL BIT CHECKING ROUTINES
	;BCKXXX -- SUBROUTINES TO DETERMINE LISTING AND SUMMATION
	;ELIGIBILITY BASED ON BITS IN THE ENTCHR TABLE.
	;CALL   PUSHJ P,BITCHK(ERROR CODE)
	;RTN    CALL + 1 TO LIST
	;	ABORT TO GET NEXT ENTRY


BCK201:
BCK202:

BCK203:

BCK210:

BCK220:	MOVE	P1,ERTYPE
	MOVE	P2,ENTCHR(P1)	;GET CHARACTERISTICS
	TLNE	F,F.DEV	;[604]  TEST FOR DEVICE SWITCH
	JRST	ABORT
	TLNE	P2,E.LALL	;WANTS ALL?
	 POPJ	P,0		;YUP
	JRST	ABORT		;SORRY
	POPJ	P,0		;FOR NOW

BCK230:
BCK232:	MOVE	P1,ERTYPE
	MOVE	P2,ENTCHR(P1)	;GET CHARACTERISTICS
	TLNE	F,F.DEV	;[604]	TEST FOR DEVICE SWITCH AGAIN
	JRST	ABORT
	TLNE	P2,E.LALL	;WANTS ALL?
	 POPJ	P,0		;YUP
	TLNE	P2,E.LPER	;'/NETPER?
	 POPJ	P,0
	JRST	ABORT		;SORRY
	POPJ	P,0		;FOR NOW
	;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:	0 ;	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,		;RETURN
	SUBTTL	STORAGE LOCATIONS
INPSPC:	EXP	13
	SIXBIT/SYS/
	XWD	0,IBUFF
OUTSPC:	EXP	0
	SIXBIT/DSK/
	XWD	OBUFF,0
ERRFIL:	XWD	0,35
	Z
	SIXBIT/ERROR/
	SIXBIT/SYS/
	BLOCK	32
LSTFIL:	SIXBIT/ERROR/
	SIXBIT/LST/
	Z
	Z
	;HERE IS THE CODE WHICH WILL BE BUT INTO THE LOW SEG
	;AND WILL BE CALLED TO OVERLAY HIGH SEGMENTS.
	;EDIT #120


	SETZM	.JBSYM		;TO ALLOW DDT TO WORK
	SETZM	.JBUSY		;WHILE DEBUGGING VARIOUS HIGH
				;SEGMENTS. PUT A BREAKPOINT
				;AT ROUTINES WHICH CALL OVRLAY
				;THEN SET BREAKPOINT AT THE
				;RETURN FROM THE GETSEG AND OPEN
				;THE NEW SYMBOL TABLE
				;AND CONTINUE DEBUGGING.
	MOVEI	T1,OVRBLK	;SPEC BLOCK SETUP BY OUR CALLER
	GETSEG	T1,
	 HALT			;STD ERROR MESSAGES ARE OK
	HRLZI	17,SAVEAC	;COPY BACK
	BLT	17,17		;THE AC'S
	HRRZ	15,400000	;THAT'S THE START OF THE NEW SEG
	JRST	@15		;NOW GO THERE



IARGST:	Z
	Z
	CHROUT		;LOCATION OF TYPEOUT ROUTINE IN SYSERR
	Z
	Z
IAREND==.-1
IARGLN==<IAREND-IARGST>+1	;LENGTH OF ARG BLOCK FOR .ISCAN


DUMDAY:	121165		;DUMMY NBS DAY FOR USE BY SCAN
KONMSK: 0
	RLD1SK



MINERB:  0
	MIRLD1

ERINDX:  0
	RLD1DX

IDVFLT:	SIXBIT/SYS/		;DEFAULT FILE SPECIFICATIONS
IFLFLT:	SIXBIT/ERROR/
IEXFLT:	SIXBIT/SYS/
ODVFLT:	SIXBIT/DSK/
OFLFLT:	SIXBIT/ERROR/
OEXFLT:	SIXBIT/LST/

PDLPNT:	IOWD	LPDL,PDLST
	SUBTTL	DUMMY MACRO EXPANSION AREA

	;THE FOLLOWING MACRO CODE UTILIZES THE PRINCIPLE OF THE DUMMY
	;MACRO USED EARLIER AND REDEFINES TBLENT TO GENERATE VAIOUS
	;NECESSARY DISPATCH TABLES

	;MACRO TO CREATE A TABLE CONTAINING OFFSET INTO OTHER TABLES
	;WHICH WERE PREVIOUSLY INDEXED BY ERROR TYPE(VER 3 & EARLIER). ALLOWS
	;HOLES TO BE IN SEQUENCE OF ERROR TYPES WHICH ARE USED.

	;THIS FIRST TABLE CONTAINS ALL THE ERROR  TYPES
	;KNOWN TO ALL SYSERR PARTS. THE SECOND IS THE TABLE
	;OF TYPES PROCESSED BY THE SEGMENT.
	;EDIT #120.
	SALL
	DEFINE	TBLENT(A,B,C,D,E)<
	XWD  0,A
	>

ALLTBL:	DUMENT

	ALLLTH=<.-1>-ALLTBL+1		;LENGTH OF ERROR INDEX TABLE

	DEFINE	TBLENT(A,B,C,D,E)<
	IFIDN<D><PROCSN><
	XWD  0,A
	>>

ERRTBL:	0		;FIRST FOUND MUST NOT BE 0
	DUMENT

	ERRLTH=<.-1>-ERRTBL+1		;LENGTH OF ERROR INDEX TABLE


	;THE ENTRY PROCESSING TABLE
	;THIS TABLE MUST BE INDEXED BY THE CONTENTS OF ALLIND

	DEFINE	TBLENT(A,B,C,D,E)<
	IFIDN<D><PROCSN><
	XWD	C,D
	TYPMAX==A>
	IFDIF<D><PROCSN><
	XWD	0,D
	TYPMAX==A>
	>
PCSTBL:	DUMENT


	;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)<
	IFIDN<D><PROCSN><
	[ASCIZ/B/]
	>>


	;GENERATE THE TEXT


TYPMES:	0
	DUMENT
	LIST

	;END OF ENTRY DESCRIPTOR GENERATOR


	;GENERATE THE DISPATCH TABLE TO ENTRY SUMMATION AND BIT CHECK ROUTINES
	;ALL WILL RETRN VIA POPJ	P,
	;TABLE IS INDEXED BY ERROR TYPE CODE

	DEFINE	TBLENT(A,B,C,D,E)<
	IFIDN<D><PROCSN><
	IFDIF<B><UNKNOWN TYPE>,<	XWD	0,BCK'A>
	IFIDN<B><UNKNOWN TYPE>,<	XWD	0,[POPJ	P,]>
	>>
	;GENERATE THE TABLE

BITCHK:	0
	DUMENT


	;GENERATE THE TABLE OF LINE COUNTS FOR OUTPUT LISTING

	DEFINE	TBLENT(A,B,C,D,E)<
	IFIDN<D><PROCSN><
	XWD	0,E
	>>

	RADIX	10

LINE:	0
	DUMENT

	RADIX	8

	;GENERATE THE VARIOUS ENTRY CONTROL TABLES USING THE MACRO TBLWRD
	;TO GENERATE TABLES

	DEFINE	TBLWRD(A,B,C,D,E,F)<
	IFDIF<D><SPECL>,<	BYTE	(6)B,C,D(18)T'A'E>
	IFIDN<D><SPECL>,<	BYTE	(6)B,C,D(18)F>

>
	RADIX	10		;*********NOTE WELL***********
.CT201:	DUM201
	Z
.CT202:	DUM202
	Z
.CT203:	DUM203
	Z
.CT210:	DUM210
	Z
.CT220:	DUM220
	Z
.CT230:	DUM230
	Z
.CT232:	DUM232
	Z

	RADIX	8

	;END OF ENTRY TABLE GENERATION
	;GENERATE THE NECESSARY ASCIZ TEXT FOR NON-SPECIAL ROUTINES

	DEFINE	TBLWRD(A,B,C,D,E,F)<
	IFDIF	<D><SPECL>,<
T'A'E:	ASCIZ/
F/
>>


	;WHAT IS XLISTED IS THE DUMALL CALL AND FOLOWING CODE.
	XLIST
	DUMALL
	LIST




	;END OF ASCIZ TEXT MACRO EXPANSION
	;SWITCH TABLES
	;THE FOLLOWING TABLES WILL BE GENERATED VIA THE DUMMY MACRO
	;DUMCH1
	;THE FIRST IS A DISPATCH TABLE TO BYTES REPRESENTING BITS TO SET
	;IN THE ENTCHR TABLE
	;NEXT IS THE ACTUAL BYTES THEMSELVES

	;TABLE FOR DISPATCH TO THE BYTE OPERANDS

	DEFINE	TBLCH1(A,B,C,D,E,F,G)<
	XWD	0,BYT'G
>

	;MAKE DISPATCH TABLE

BYTDSP:	DUMCH1
	;NOW THE BYTES THEMSELVES


	DEFINE	TBLCH1(A,B,C,D,E,F,G)<
BYT'G:	BYTE (6) B,77,C,77,D,77,E,77,F,77
>


	DUMCH1
	;SWITCH MACRO EXPANSION NEXT


	;DEFINE THE SWITCHES WE RECOGNIZE

	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 DEFINE DEFAULTS

	DEFVAL

	;NOW MAKE SWTCHS MACRO FOR USE WITH DOSCAN LATER
	SALL

	DEFINE	SWTCHS<
	DUMCH1
	DUMCH2
>

	DOSCAN(SWTAB)
	SALL
	;GENERATE THE CONI BIT TEXT AND ADDRESS DISPATCHER
	RADIX	10		;****** NOTE WELL *****

	DEFINE	TBLDEV(A,B)<
	[ASCIZ\B',\]
	>

RLD1DV:	DURLD1
	;NOW GENERATE THE ERROR BIT VS INDEX BIT TABLES
	;THIS ALLOWS NON-CONTIGUOUS ERROR BITS IN CONI WORD
	;TO BE COUNTED IN CONTIGUOUS COUNTERS

;	DEFINE	TBLDEV(A,B)<
;	ZZP==.
;	RELOC	RCINDX+A-MINRCB
;	ZZ
;	ZZ==ZZ+1
;	RELOC	ZZP
;>

;	XLIST
	LIST

	DEFINE	TBLDEV(A,B)<
	ZZP==.
	RELOC	RLD1DX+A-MIRLD1
	ZZ
	ZZ==ZZ+1
	RELOC	ZZP
	>
RLD1DX:	REPEAT	36-MIRLD1,<0>
	ZZ==0
	DURLD1
RADIX 8
;GENERATE SIXBIT TABLE OF DEVICE NAMES

DEFINE DUMDVA(A)<
	SIXBIT/A/
>
NAMTBL:  0	;	DUMDVA
NAMLTH=<.-1>-NAMTBL+1	;LENGTH OF TABLE OF SIXBIT NAMES
	
;USING SAME DEFINITION OF MACRO NOW GENERATE
	;LIST OF ONLY MASSBUS DEVICE NAMES

MASNAM: 0 ;	DUMFS
	0	;	DUMRP

	MASLTH=<.-1>-MASNAM+1	;LENGTH OF THIS TABLE
	;TABLES FOR TOPS20 DEVICES
	DEFINE DUMDV(A)<
	SIXBIT/A/
>
MASNA2::	DUMDVB
	MASLT2=<.-1>-MASNA2+1


	;GENERATE LIST OF POINTERS TO 5 WORD SCRATCH BLOCKS

	;FOR ALL DEVICES ON THE SYSTEM
	
DEFINE	DUMDV	(A)<
	XWD	0,A'BK
	>
BKLOC:  0  ;	DUMDVA

	;GENERATE CONI BIT ERROR DISPATCHER
	;RH = SOFT ERROR POINTER
	;LH = HARD ERROR POINTER

	DEFINE	DUMDV(A)<
	XWD	A'HD,A'SF
>

DEVDS2::
DEVDSP: 0 ;	DUMDVA



	DEFINE	DUMDV(A)<
	XWD	A'ST,A'SP
>
	;ST=STORAGE TEMP,SP=PERM.
SOFDSP: 0 ;	DUMDVA



	END	STARTN