Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/le.list
There are no other files named le.list in the archive.
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26
TABLE OF CONTENTS

     4-   73	MACRO DEFINITIONS
     4-   74	GENERAL MACROS
     4-   89	LP11 DRIVER PARAMETERS
     5-   94	LP11 LINE TABLE OFFSETS
     6-  100	NURD MESSAGE DEFINITIONS
     7-  106	LOCAL MACROS
     7-  135	MCB DLC TO LLC INTERFACE MACRO
     8-  147	QUEUE HANDLING MACROS
     9-  177	LP11 DRIVER CONSTANTS
    10-  215	LP11 HARDWARE DEVICE REGISTER DEFINITIONS
    10-  229	VERTICAL FORMAT UNIT MACROS
    11-  255	DEFAULT VERTICAL FORMAT DATA
    12-  388	DISPATCH TABLES
    13-  440	NRD INTERPROCESS COMMUNICATION CONVENTIONS
    14-  484	NURD MESSAGE DECODER
    15-  533	QUEUE UP INCOMING NURD DATA AND FEATURES
    16-  583	DATA/FEATURES HYBER FUNCTION
    17-  627	NURD DATA MESSAGE HANDLER
    18-  724	PUT A PRINTING CHARACTER TO THE BUFFER
    19-  747	FORTRAN CARRIAGE CONTROL OUTPUT
    20-  804	VERTICAL FORMS CONTROL TRANSLATION
    20-  845	FORMS CONTROL XLATION
    21-  851	HORIZONTAL FORMS CONTROL TRANSLATION
    22-  893	WRAP TO THE NEXT LINE (OR PAGE)
    23-  919	GET AND PUT DATA BYTES
    26- 1030	PUT COMPRESSION PAIR TO PHYSICAL BUFFER
    27- 1058	NURD FEATURES MESSAGE HANDLERS
    29- 1178	FEATURES READ
    30- 1259	FEATURES SET
    31- 1373	NURD MESSAGE BUILDER
    32- 1417	FEATURE FINDER
    33- 1450	NURD CONTROL MESSAGE HANDLER
    34- 1540	NON-INTERRUPT CONTROL MESSAGE PROCESSING
    35- 1595	CONTROL - REQUEST STATUS
    35- 1605	SEND ATTENTION MESSAGE
    36- 1676	CONTROL - DUMP OUTPUT BUFFERS
    36- 1691	CONTROL - PAUSE
    37- 1708	CONTROL - RESUME OUTPUT
    38- 1731	CONTROL - ABORT COMMAND SET
    39- 1764	CONTROL - REQUEST CAPABILITIES
    39- 1774	SEND CAPABILITIES MESSAGE
    40- 1815	SEND ALERT MESSAGE
    41- 1829	TIMER HANDLER
    42- 1878	RESOURCE RETURN
    43- 1903	OPEN/CLOSE DEVICE
    45- 2023	PHYSICAL BUFFER MANAGEMENT
    46- 2059	DDM AND DLC TRANSMIT COMPLETE
    47- 2128	FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES
    48- 2160	OUTPUT ENABLE
    49- 2189	INTERRUPT SERVICE ROUTINE
    50- 2342	THE END
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 3


      1						.TITLE LE	- NURD LP11 LINE PRINTER DLC
      2						.IDENT "X01010"
      3					;
      4					; 		COPYRIGHT (C) 1976, 1977, 1978, 1979
      5					;
      6					; 		DIGITAL EQUIPMENT CORPORATION (DEC)
      7					; 		122A MAIN STREET
      8					; 		MAYNARD, MASSACHUSETTS 01754
      9					;
     10					;  THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
     11					;  SINGLE  COMPUTER  SYSTEM  AND  MAY  BE  COPIED ONLY WITH THE
     12					;  INCLUSION OF DEC'S COPYRIGHT NOTICE AND ONLY FOR USE ON SAID
     13					;  SYSTEM.   THIS  SOFTWARE AND ANY SUCH COPIES IN ANY FORM MAY
     14					;  NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY PERSON OR
     15					;  GROUP  NOT A PARTY TO THE LICENSING AGREEMENT.  TITLE TO AND
     16					;  OWNERSHIP OF THIS SOFTWARE SHALL AT ALL  TIMES  REMAIN  WITH
     17					;  DEC.
     18					;
     19					;  THE INFORMATION  IN  THIS  DOCUMENT  IS  SUBJECT  TO  CHANGE
     20					;  WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
     21					;  TO FORM OR FUNCTION BY DEC.
     22					;
     23					;  DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF
     24					;  ITS SOFTWARE ON EQUIPMENT NOT SUPPLIED BY DEC.
     25					;
     26					;
     27					;
     28					;
     29					; 		TOM POWERS
     30					; 		DECEMBER, 1976
     31					;
     32					; EDIT HISTORY:
     33					;
     34					; 	CREATED FOR LP20 01-DEC-76
     35					; 	ADDED CD20 ELEMENTS 23-FEB-77
     36					; 	ADDED NURD ELEMENTS 01-MAR-77
     37					; 	ADDED FIRST LP11/CR11 ELEMENTS 17-MAY-77
     38					;
     39					; 	UPDATED FOR MCBBL5 BY ALAN D. PECKHAM 10-JAN-78
     40					;
     41					; 	MOLESTED BY R. SOUTH DURING THE RITES OF SPRING, 1978.
     42					;
     43					;  X01001	19-MAR-79 SCOTT G. ROBINSON
     44					; 		CHANGE CONTROL START/STOP PROCESSING TO NOT
     45					; 		 MUNDGE A CCB.
     46					;
     47					;  X01002	19-APR-79 SCOTT G. ROBINSON
     48					; 		ENSURE CORRECT RESPONSE CODE TO "ABORT UNTIL
     49					; 		 CLEAR".
     50					;
     51					;  X01003	1-MAY-79  BUREN W. HOFFMAN
     52					; 		CLEAR BUFFER COUNT (L.MSGS) ON ABRTAL.  ALSO, SET
     53					; 		RESPONSE CODE PROPERLY IN SAME ROUTINE.  FIXED TYPO
     54					; 		IN SNDCAP.
     55					;
     56					;  X01004	3-MAY-79  BUREN W. HOFFMAN
     57					; 		CLEAR DATA MESSAGE BUFFER SIZE (L.DMBS) ON ABRTAL.
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 3-1


     58					;
     59					;  X01005	18-MAY-79 BUREN W. HOFFMAN
     60					; 		FIXED TYPO IN FLUSHQ, AND CORRECTED PAGE-LIMIT CHECKING.
     61					;
     62					;  X01006	23-MAY-79 BUREN W. HOFFMAN
     63					; 		CLEAN UP CCB POINTERS AFTER THEY ARE RELEASED.
     64					;
     65					;  X01007	19-JUL-79 BUREN W. HOFFMAN
     66					; 		REWROTE INTERRUPT ROUTINE TO USE OFFSETS INTO DLT DATA BASE
     67					; 		INSTEAD OF MOVING POINTER AROUND. ALSO, GENERAL COSMETICS
     68					; 		ON REST OF CODE.
     69					;
     70					;  X01010	27-JUL-79  BUREN W. HOFFMAN
     71					;		FIXED BUG IN INTERRUPT SERVICE, INTRODUCED IN X01007.
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 4
MACRO DEFINITIONS

     73						.SBTTL	MACRO DEFINITIONS
     74						.SBTTL	GENERAL MACROS
     75
     76						.MCALL	INHIB$,ENABL$
     77						.MCALL	HWDDF$,NSPDF$,CCBDF$,LEDLT$,$INTSX,MAP,SAVMAP,RESMAP,NURDF$,NRDIN$
     78	000000					HWDDF$			;  DEFINE THE HARDWARE SYMBOLS
     79	000000					NSPDF$			;  DEFINE NSP SYMBOLS
     80	000000					CCBDF$			;  DEFINE THE CCB SYMBOLS
     81
     82
     83					.LIST	ME
     84	000000					NRDIN$
					;	CCB STATUS CODES : DLC ->NRD
		100201 			LS.ABO	=	100201		;ABORTING(COMPLIANCE WITH HIGHER (POWERS)
		100202 			LS.REJ	=	100202		;REJECTING MSG
		100203 			LS.CLO	=	100203		;DEVICE IS CLOSED,REJECTING
		100204 			LS.ILM	=	100204		;ILLEGAL NURD MSG
		100205 			LS.BOM	=	100205		;DLC IS ABORTING THE LINK DUE TO USER ERROR
					;	CCB STATUS CODES : NRD -> NRM
		100377 			NR.NDV	=	100377		;NOT A NURD DEVICE
     85					.NLIST	ME
     86
     87
     88
     89						.SBTTL	LP11 DRIVER PARAMETERS
     90
     91		000004 				LEPBFS	=	4		; NUMBER OF PHYSICAL BUFFERS TO HOARD
     92		000005 				LEHNG	=	5		; HUNG DEVICE TIME CONSTANT
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 5
LP11 LINE TABLE OFFSETS

     94					.SBTTL	LP11 LINE TABLE OFFSETS
     95
     96					.LIST	ME
     97	000000					LEDLT$ <:>,<=>
						.MCALL	TMPDF$
	000000					TMPDF$
						.MCALL	.BIN,.CNB,.CNW,.CORE,.CSR,.DVCHA,.INT,.INT1,.INT2,.INT3
						.MCALL	.LIBR,.LINKS,.LFLHD,.LSTHD,.LTAB,.MPLHD,.POOL,.PRI,.SCOM
						.MCALL	.SECSR,.SLNB,.SLNW,.STNB,.STNW,.UNB,.UNW,.VFY
					;
					; NURD LP11 DEVICE DRIVER LINE TABLE TEMPLATE
					;
	000000					.ASECT
		000000 				.=0
	000000				L.TIMC::	.BLKB	1		;TWO BYTE TIMER ENTRY, CURRENT VALUE
	000001				L.TIMI::	.BLKB	1		;  AND INITIAL TIMER VALUE
	000002				L.CALL::	.INT			;INTERRUPT DISPATCH CALL
						.EVEN
						.IF DF	M$$MGE
	000002					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	000020				L.PRI::	.PRI			;SCHEDULING PRIORITY
						.EVEN
	000020					.BLKW	1
										;DDM LEVEL DATA BASE
										;ORDER FOR THIS SECTION IS CRITICAL
	000022				L.CSR::	.CSR			;ONE WORD CSR POINTER
						.EVEN
	000022					.BLKW	1
	000024				L.ASTS::	.BLKW	1		;ACTION STATUS BIT MAP
		000001 				LA.CLO	==	1		;CLOSED
		000002 				LA.PAU	==	2		;PAUSED
		000004 				LA.ADN	==	4		;ABORT WHEN DONE WITH DDM QUEUE
		000010 				LA.ABO	==	10		;ABORTING
		000020 				LA.ABE	==	20		;CLEAR ABORT ON EOF (ELSE ON CLEAR)
		000040 				LA.CPC	==	40		;CLEAR PAGE COUNTER ENABLE
		000100 				LA.AKR	==	100		;ACKNOWLEDGE REQUESTED
		000200 				LA.ERR	==	200		;AN ERROR HAS BEEN NOTED
		000400 				LA.EOF	==	400		;CURRENT MESSAGE HAS EOF
		001000 				LA.EOR	==	1000		;END OF RECORD ENCOUNTERED
		002000 				LA.CTL	==	2000		;CONTROL MESSAGE TO RETURN
		004000 				LA.TMO	==	4000		;DEVICE TIME OUT
		010000 				LA.PLE	==	10000		;PAGE LIMIT ERROR OCCURRED
	000026				L.PUBP::	.BLKW	2		;BUFFER PTR DOUBLEWORD
	000032				L.PUBS::	.BLKW	1		;BUFFER SIZE DOWN COUNTER
	000034				L.DDMQ::	.LSTHD			;CCB'S QUEUED FOR OUTPUT
						.EVEN
	000034					.BLKW	2
	000040				L.PGCT::	.BLKW	1		;PHYSICAL PAGE COUNT
	000042				L.PGLM::	.BLKW	1		;PAGE LIMIT REGISTER
	000044				L.PLNC::	.BLKB	1		;PHYSICAL LINE COUNT
	000045				L.HUNG::	.BLKB	1		;DEVICE HUNG TIMER
										;MISCELLANEOUS ITEMS
						.EVEN
	000046				L.SLN::	.SLNW			;DEVICE SYSTEM LINE NUMBER
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 5-1
LP11 LINE TABLE OFFSETS

						.EVEN
	000046					.BLKW	1
	000050				L.IOCN::	.BLKW	1		;OUTSTANDING IO COUNT
	000052				L.IOWT::	.BLKW	1		;CLOSE WAIT FLAG = CLOSE CCB
										;CONTROL MESSAGE PROCESSING DATA BASE
						.EVEN
	000054				L.CMSQ::	.LSTHD			;CONTROL MESSAGE QUEUE
						.EVEN
	000054					.BLKW	2
	000060				L.RECO::	.BLKB	1		;CONTROL MESSAGE RESOURCE ERROR FLAG
	000061				L.RATT::	.BLKB	1		;PENDING ATTENTION MESSAGE FLAG - REASON CODE
	000062				L.CAPP::	.BLKB	1		;PENDING CAPABILITIES MESSAGE FLAG
										;DATA & FEATURES PROCESSING DATA BASE
						.EVEN
	000064				L.CSMP::	.BLKW	1		;CHARACTER SET MAP ADDRESS
	000066				L.LNCT::	.BLKB	1		;LINE COUNTER
	000067				L.COCT::	.BLKB	1		;COLUMN COUNTER
						.EVEN
	000070				L.VFUA::	.BLKW	1		;ADDRESS OF VFU MAP IN USE
	000072				L.DLCQ::	.LSTHD			;CCB'S QUEUED INTO DLC
						.EVEN
	000072					.BLKW	2
	000076				L.MFLG::	.BLKB	1		;CURRENT NURD MESSAGE FLAGS
	000077				L.DMSQ::	.BLKB	1		;LAST GOOD/CURRENT DATA SEQ NUMBERS
	000100				L.DMSG::	.BLKB	1		;DATA MESSAGE SEGMENT COUNT BYTE
	000101				L.DMSS::	.BLKB	1		;DATA MSG CURRENTSEGMENT SIZE
	000102				L.CAPN::	.BLKB	1		;CURRENT INDEX INTO CAPABILITIES LIST
	000103				L.NFSP::	.BLKB	1		;NO. FEATURE SPECS IN CURRENT MSG
						.EVEN
	000104				L.DMCR::	.BLKW	1		;CHAR REPEAT COUNT, 2 BYTES USED AS WORD
	000106				L.DMAD::	.BLKW	2		;DATA MSG ADDRESS DOUBLEWORD (PTR)
	000112				L.DMBS::	.BLKW	1		;DATA MSG BUFFER SIZE
	000114				L.PLBQ::	.LSTHD			;FREE PHYSICAL BUFFER QUEUE
						.EVEN
	000114					.BLKW	2
	000120				L.PLBP::	.BLKW	2		;CHARACTER POINTER DOUBLEWORD
	000124				L.PLBS::	.BLKW	1		;BUFFER SIZE DOWN COUNTER
	000126				L.PBRC::	.BLKB	1		;TEMP BYTE
						.EVEN
	000130				L.MSGQ::	.LSTHD			;OUTGOING MSG QUEUE
						.EVEN
	000130					.BLKW	2
	000134				L.MSGA::	.BLKW	2		;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
	000140				L.MSGS::	.BLKW	1		;CURRENT MSG BUFFER SIZE
										;DATA/FEATURES PROCESS HYBER CONTEXT
	000142				L.DWAK::	.BLKB	1		;WAKE CONDITION
		000001 				DWAKS	==	1		;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
		000002 				DWAKP	==	2		;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
		000003 				DWAKT	==	3		;WAKE ON CLOCK TOCK
		000004 				DWAKR	==	4		;WAKE WHEN RESUME CONTROL FCN DONE
	000143				L.DTXL::	.BLKB	1		;NO. WORDS ON STACK AT SLEEP TIME
						.EVEN
	000144				L.DFSP::	.BLKW	1		;STACK ORIGIN
		000020 			DTXTSZ	==	16.			;DATA/FEATURES PROCESS CONTEXT ALLOCATED
	000146				L.DTXT::	.BLKW	DTXTSZ		;CONTEXT BLOCK FOR DA/FEATURES PROCESS
										;FEATURE CRUFT
	000206				L.CFET::				;LP11 COMMON FEATURE LIST
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 5-2
LP11 LINE TABLE OFFSETS

	000206					.BLKB	1			;NUMBER OF COMMON FEATURES
	000207					.BLKB	1			;FEATURE FE.DAT     SUPPORTED
	000210					.BLKB	1			;FEATURE FE.SER NOT SUPPORTED
	000211					.BLKB	1			;FEATURE FE.LCR     SUPPORTED
	000212					.BLKB	1			;FEATURE FE.FWD     SUPPORTED
	000213					.BLKB	1			;FEATURE FE.EOF NOT SUPPORTED
	000214					.BLKB	1			;FEATURE FE.DVT NOT SUPPORTED
	000215					.BLKB	1			;FEATURE FE.TRN     SUPPORTED
	000216					.BLKB	1			;FEATURE FE.FNM NOT SUPPORTED
	000217					.BLKB	1			;FEATURE FE.DWD     SUPPORTED
		000011 			LCFETL	==	.-L.CFET-1
	000220				L.DFET::	.BLKB	1		;NUMBER OF DEVICE SPECIFIC FEATURES
	000221					.BLKB	1			;FEATURE 129    NOT DEFINED
	000222					.BLKB	1			;FEATURE LP.HT      SUPPORTED
	000223					.BLKB	1			;FEATURE LP.SFC     SUPPORTED
	000224					.BLKB	1			;FEATURE LP.OVP NOT SUPPORTED
	000225					.BLKB	1			;FEATURE LP.CVF NOT SUPPORTED
	000226					.BLKB	1			;FEATURE LP.FCC     SUPPORTED
	000227					.BLKB	1			;FEATURE LP.VFR NOT SUPPORTED
	000230					.BLKB	1			;FEATURE LP.CHS     SUPPORTED
	000231					.BLKB	1			;FEATURE LP.PLE     SUPPORTED
	000232					.BLKB	1			;FEATURE LP.OPV NOT SUPPORTED
		000012 			LDFETL	==	.-L.DFET-1
										;FEATURE BLOCKS
		000000 			F.FSB	==	0			;(BM)FEATURES STATUS BYTE
		000000 				FB.CL0	== 0			;CLASS 0 FEATURE => <BIT> FORM
		000001 				FB.CL1	== 1			;CLASS 1 FEATURE => <CNT><...> FORM
		000002 				FB.WRD	== 2			;FEATURE IS A WORD AND
										; F.FCV IS A DLT OFFSET TO IT
		000004 				FB.STR	== 4			;FEATURE IS A STRING
										;F.FCV IS THE LENGTH
										;CURRENT VALUE BEGINS AT F.FCV+1
										;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
		000010 				FB.STE	== 10			;STANDARD VALUE EXISTS
		000020 				FB.SST	== 20			;STANDARD IS SET
		000040 				FB.CP	== 40			;CHANGE PENDING
		000100 				FB.CA	== 100			;CHANGE ALLOWED
		000001 			F.FCV	==	1			;FEATURE CURRENT VALUE BYTE
		000002 			F.FSV	==	2			;FEATURE STANDARD VALUE BYTE
	000233				LE.DAT::					;DATA MODE
	000233					.BLKB	1
		000031 				LEDATS	==	FB.CL1!FB.SST!FB.STE	;INITIAL STATUS OF LE.DOF LE.DAT
	000234					.BLKB	1				;ASCII
	000235					.BLKB	1				;ASCII IS STD
					;LE.SER::					;SERIAL NUMBER
	000236				LE.LCR::					;LOWER CASE RAISE
	000236					.BLKB	1
		000100 				LELCRS	==	FB.CL0!FB.CA		;INITIAL STATUS OF LE.LCR
	000237					.BLKB	1				;OFF
	000240				LE.FWD::					;FORM WIDTH
	000240					.BLKB	1
	000241					.BLKB	1
					;LE.EOF:					;EOF RECOGNITION
					;LE.DVT::					;DEVICE TYPE
	000242				LE.TRN::					;RECORD TRUNCATION
	000242					.BLKB	1
		000130 				LETRNS	==	FB.CL0!FB.CA!FB.SST!FB.STE	;INITIAL STATUS OF LE.TRN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 5-3
LP11 LINE TABLE OFFSETS

	000243					.BLKB	1				;OFF
	000244					.BLKB	1				;OFF IS STD
					;LE.FNM::					;FORM NAME
	000245				LE.DWD::					;DEVICE WIDTH
	000245					.BLKB	1
	000246					.BLKB	1				;STD WIDTH
					;	DEVICE SPECIFIC FEATURES
	000247				LE.HT::					;HORIZONTAL TAB
	000247					.BLKB	1
		000031 				LEHTS	==	FB.CL1!FB.SST!FB.STE	;INITIAL STATUS OF LE.HT
	000250					.BLKB	1				;STD TABS ON
	000251					.BLKB	1
	000252				LE.SFC::					;STD VFU
	000252					.BLKB	1
		000030 				LESFCS	==	FB.CL0!FB.SST!FB.STE	;INITIAL STATUS OF LE.SFC
	000253					.BLKB	1				;ON
	000254					.BLKB	1
					;LE.OVP::					;OVERPRINT LIMIT
					;LE.CVF::					;CUSTOM VFU
	000255				LE.FCC::					;FORTRAN CARRIAGE CONTROL
	000255					.BLKB	1
		000130 				LEFCCS	==	FB.CL0!FB.CA!FB.SST!FB.STE	;INITIAL STATUS OF LE.FCC
	000256					.BLKB	1				;OFF
	000257					.BLKB	1
					;LE.VFR::					;VARIABLE FORMS RATIO
	000260				LE.CHS::					;CHARACTER SET
	000260					.BLKB	1
	000261					.BLKB	1				;96 CHAR ASCII
	000262				LE.PLE::					;PAGE LIMIT ENFORCEMENT
	000262					.BLKB	1
		000133 				LEPLES	==	FB.CL1!FB.WRD!FB.CA!FB.SST!FB.STE	;INITIAL STATUS OF LE.PLE
	000263					.BLKB	1				;PAGE COUNTER
	000264					.BLKB	2				;STD = 0 => OFF
					;LE.OPV::					;OPTICAL VFU
	000000					.PSECT
     98					.NLIST	ME
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 6
NURD MESSAGE DEFINITIONS

    100						.SBTTL	NURD MESSAGE DEFINITIONS
    101
    102					.LIST	ME
    103	000000					NURDF$
					; GENERAL MESSAGE DEFINITIONS
		000000 			N.TYP	= 0			;(B)OFFSET TO MESSAGE TYPE
		000017 				NM.TYP	= 17		;MESSAGE TYPE MASK
		000000 				NM.DAT	= 0&NM.TYP	;DATA MESSAGE
		000001 				NM.ATT	= 1&NM.TYP	;ATTENTION MESSAGE
		000002 				NM.FTR	= 2&NM.TYP	;FEATURES MESSAGE
		000003 				NM.CTL	= 3&NM.TYP	;CONTROL MESSAGE
		000004 				NM.ALR	= 4&NM.TYP	;ALERT MESSAGE
		000005 				NM.CAP	= 5&NM.TYP	;CAPABILITIES MESSAGE
		000006 				NM.OTR	= 6&NM.TYP	;***CURRENT OUT OF RANGE VALUE***
		000001 			N.MFL	= 1			;(BM)OFFSET TO MESSAGE FLAGS
					; DATA MESSAGE DEFINITIONS
									;DATA MESSAGE OFFSETS
		000002 			N.DSEQ	= 2			;(B)SEQUENCE NUMBER
		000003 			N.DFLG	= 3			;(BM)DATA FLAGS
		000001 				ND.ACK	= 1		;ACKNOWLEDGE REQD
		000002 				ND.IER	= 2		;INPUT ERROR
		000004 				ND.EOF	= 4		;SEGMENT IS END OF FILE
		000004 			N.DSGC	= 4			;(B)SEGMENT COUNT
		000005 			N.DDAT	= 5			;START OF DATA
									;DATA SEGMENT CONTROL BYTE DEFINITIONS
		000200 				ND.CMP	= 200		;COMPRESSION FLAG
									;CONTROL BYTE=0 => END OF RECORD MARK
					; ATTENTION MESSAGE DEFINITIONS
									;ATTENTION MESSAGE OFFSETS
		000002 			N.ALGD	= 2			;(B)"LAST GOOD" ID
		000003 			N.ACOD	= 3			;(B)ATTENTION CODE OFFSET
									;ATTENTION CODE VALUES
									;0 IS RESERVED
		000001 				N.ASTC	= 1		;STATUS CHANGE
		000002 				N.AACK	= 2		;DATA ACKNOWLEDGEMENT
		000003 				N.ARQS	= 3		;REQUESTED
		000004 				N.AABC	= 4		;OUTPUT ABORT RECEIVED OR INPUT ABORT COMPLETE
		000005 				N.APLE	= 5		;PAGE LIMIT EXCEEDED
		000004 			N.AFLG	= 4			;(BM)(EX)ATTENTION FLAGS (UP TO 3 BYTES REQ'D)
									;COMMON FLAGS
									;BYTE 1 FLAGS
		000001 				NA.FAT	= 1		;FATAL ERROR
		000002 				NA.OFL	= 2		;OFFLINE
		000004 				NA.PAU	= 4		;PAUSED
		000010 				NA.OMD	= 10		;OUT OF MEDIA
		000020 				NA.JAM	= 20		;JAMMED
		000040 				NA.OOF	= 40		;OPERATOR OFFLINE
		000100 				NA.NOE	= 100		;NON OPERATOR ERROR
									;BYTE 2 FLAGS
		000001 				NA.OUF	= 1		;OUTPUT FULL
		000002 				NA.NAC	= 2		;DEVICE NOT ACCESSIBLE
		000004 				NA.DTO	= 4		;DEVICE TIME OUT
		000010 				NA.RNA	= 10		;RESOURCE NOT AVAILABLE
									;LINE PRINTER SPECIFIC ERRORS
		000020 				NA.PSE	= 20		;PAPER SLEW ERROR
		000040 				NA.INK	= 40		;OUT OF INK
									;RESERVED CODE
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 6-1
NURD MESSAGE DEFINITIONS

									;BYTE 3 FLAGS
		000001 				NA.OVP	= 1		;ILLEGAL OVERPRINT
								 	;PUNCHED CARD SPECIFIC ERRORS
									;BYTE 2 FLAGS
		000020 				NA.PF	= 20		;PICK FAILURE
		000040 				NA.RAP	= 40		;READ AFTER PUNCH ERROR
		000100 				NA.REG	= 100		;REGISTRATION ERROR
									;BYTE 3 FLAGS
		000001 				NA.IVP	= 1		;INVALID PUNCH ERROR
					; N.APGC	= 		;(2B)PAGE CNTR (PREV FLD EXTNSBLE, NO FIXED OFFSET)
					; FEATURES MESSAGES DEFINITIONS
									;FEATURES MESSAGE OFFSETS
		000002 			N.FSEQ	= 2			;(B)FEATURES SEQUENCE NUMBER
		000003 			N.NSPC  = 3			;(B) NO. OF FEATURES SPECS IN MSG
		000004 			N.FSPC  = 4			;OFFSET TO 1ST FEATURE SPEC
									;REMAINING OFFSETS RELATIVE TO BEG OF A FEATURE SPEC
		000000 			N.FID	= 0			;(B)FEATURES IDENTIFIER
									;COMMON UNIT RECORD DEVICE FEATURES
		000000 				FE.ESC	=	0	;RESERVED FOR FUTURE ESCAPE CODE
		000001 				FE.DAT	=	1	;(CLASS 1) DATA MODE
		000001 				   DM.ASC	=	1	;7 BIT ASCII
		000002 				   DM.CLI	=	2	;COLUMNIMAGE
		000003 				   DM.EBC	=	3	;EBCDIC
		000004 				   DM.AUG	=	4	;AUGMENTED COLUMNIMAGE
		000005 				   DM.AS8	=	5	;8 BIT ASCII
		000002 				FE.SER	=	2	;(CLASS 1) SERIAL NUMBER
		000003 				FE.LCR	=	3	;(CLASS 0) LOWER CASE RAISE
		000004 				FE.FWD	= 	4	;(CLASS 1) FORM WIDTH
		000005 				FE.EOF	=	5	;(CLASS 1) EOF RECOGNITION
		000001 				   EO.ASC	=	1	;ASCII
		007417 					EOFASC	=	7417	;ASCII EOF (COLUMN 1) PUNCH
		000002 				   EO.IMG	=	2	;IMAGE
		000006 				FE.DVT	=	6	;(CLASS 1) DEVICE TYPE
		000007 				FE.TRN	=	7	;(CLASS 0) RECORD TRUNCATION
		000010 				FE.FNM	=	8.	;(CLASS 1) FORM NAME
		000011 				FE.DWD	=	9.	;(CLASS 1) DEVICE WIDTH
									;DEVICE SPECIFIC FEATURES
									;LINE PRINTER
		000202 				LP.HT	=	130.	;(CLASS 1) HORIZONTAL TAB STOP
		000203 				LP.SFC	=	131.	;(CLASS 0) STANDARD VERTICAL FORMS CONTROL
		000204 				LP.OVP	=	132.	;(CLASS 1) OVERPRINT LIMIT
		000205 				LP.CVF	=	133.	;(CLASS 1) CUSTOM VFU
		000206 				LP.FCC	=	134.	;(CLASS 0) FORTRAN CARRIAGE CONTROL
		000207 				LP.VFR	=	135.	;(CLASS 1) VARIABLE FORMS RATIO
		000001 				   VF.6LI	=	1	;6 LINES PER INCH
		000002 				   VF.8LI	=	2	;8 LINES PER INCH
		000210 				LP.CHS	=	136.	;(CLASS 1) CHARACTER SET
		000001 				   CH.64	=	1	;64 CHARACTER SET
		000002 				   CH.96	=	2	;96 CHARACTER SET
		000211 				LP.PLE	=	137.	;(CLASS 1) PAGE LIMIT ENFORCEMENT
		000212 				LP.OPV	=	138.	;(CLASS 1) OPTICAL VFU NAME
									;CARD READER/PUNCH
		000202 				CD.CWD =	130.	;(CLASS 1) CARD WIDTH
									;SPECIAL FEATURE ID
		000377 				FE.ALL	=	255.	;AFFECTS ALL FEATURES(READ OR SET TO STD.)
		000001 			N.FFLG	=	1		;(BM)FEATURES FLAGS
		000001 				NF.CMD	= 1		;SET FEATURES=1, READ=0
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 6-2
NURD MESSAGE DEFINITIONS

		000002 				NF.STD	= 2		;STANDARD FLAG
		000002 			N.FCLS	=	2		;(B)FEATURE CLASS
		000000 				FC.CL0	= 0		;CLASS 0 FEATURE => <BIT> FORM
		000001 				FC.CL1	= 1		;CLASS 1 FEATURE => <CNT><...> FORM
		000002 				FC.SST	= 2		;SET TO STANDARD
		000003 				FC.CLM	= 3		;CLASS MASK
		000003 			N.FRSP	=	3		;FEATURE RESPONSE FIELD
		000001 				FR.USF	= 1		;UNSUPPORTED FEATURE
		000002 				FR.BCL	= 2		;BAD CLASS SPEC'D
		000003 				FR.NST	= 3		;NO STANDARD VALUE
		000004 				FR.ERR	= 4		;FEATURE DATA OR FORMAT ERROR
		000005 				FR.CPN	= 5		;CHANGE PENDING
		000006 				FR.NEB	= 6		;NOT ENOUGH BUFFER (FOR REPORT)
		000007 				FR.DNP	= 7		;DEVICE NOT PAUSED
		000004 			N.FDAT	= 4			;BEG FEATURES DATA(FORMAT CLASS DEPENDENT)
					;CONTROL MESSAGE DEFINITIONS
									;CONTROL MESSAGE OFFSETS
		000002 			N.CSEQ	= 2			;(B)CONTROL SEQUENCE NUMBER
		000003 			N.CCMD	= 3			;(B)CONTROL COMMAND
		000001 				NC.AUE	=	1	;(INTERRUPT) ABORT UNTIL EOF
		000002 				NC.AUC	=	2	;(INTERRUPT) ABORT UNTIL CLEARED
		000003 				NC.CAB	=	3	;	CLEAR OUTPUT ABORT/ ACK INPUT ABORT
		000004 				NC.RQS	=	4	;	REQUEST STATUS
		000005 				NC.DMP	=	5	;	DUMP OUTPUT BUFFERS
		000006 				NC.PAU	=	6	;(INTERRUPT) PAUSE
		000007 				NC.RES	=	7	;(INTERRUPT) RESUME
		000011 				NC.RQC	=	9.	;	REQUEST CAPABILITIES
		000004 			N.CRES	= 4			;(B)CONTROL RESULT CODE
									;NC.AUE,NC.AUC RESPONSE
		000000 				NR.ABS	=	0	;ABORT STATE
		000001 				NR.NAB	=	1	;NOTHING TO ABORT
									;NC.AUE RESPONSE
		000002 				NR.NOE	=	2	;NO EOF DEFINED
									;NC.CAB	RESPONSE
		000000 				NR.ACC	=	0	;ABORT COMPLETE CLEARED
		000001 				NR.ACN	=	1	;ABORT COMPLETE NOT SET
									;NC.RQS RESPONSE
		000000 				NR.ATT	=	0	;ATTENTION MSG FOLLOWS
									;NC.DMP RESPONSE
		000000 				NR.DMP	=	0	;OUTPUT BEING DUMPED
		000001 				NR.NOB	=	1	;NO OUTPUT BUFFERED
									;NC.PAU RESPONSE
		000000 				NR.DPS	=	0	;DEVICE WILL PAUSE
		000001 				NR.PAU	=	1	;DEVICE ALREADY PAUSED
		000002 				NR.NDP	=	2	;NO DATA TRANSFER TO PAUSE
									;NC.RES RESPONSE
		000000 				NR.RES	=	0	;DEVICE WILL RESUME
		000001 				NR.NPS	=	1	;DEVICE NOT PAUSED
		000002 				NR.NDR	=	2	;NO DATA TRANSFER TO RESUME
									;NC.RQC	RESPONSE
		000000 				NR.CAP	=	0	;CAPABILITIES FOLLOWS
					; CAPABILITIES MESSAGE DEFINITIONS
									;CAPABILITIES MESSAGE OFFSETS
		000002 			N.PCNT	= 2			;LIST COUNT BYTE
		000003 			N.PCAP	= 3			;START OF CAPABILITIES LIST
    104					.NLIST	ME
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 7
LOCAL MACROS

    106						.SBTTL	LOCAL MACROS
    107
    108					.MACRO	PUSH	LIST
    109						.IRP	.A,<LIST>
    110						MOV	.A,-(SP)
    111						.ENDR
    112					.ENDM	PUSH
    113
    114
    115					.MACRO	POP	LIST
    116						.IRP	.A,<LIST>
    117						MOV	(SP)+,.A
    118						.ENDR
    119					.ENDM	POP
    120
    121
    122					.MACRO	CRASH
    123						IOT
    124					.ENDM	CRASH
    125
    126
    127					.MACRO	DFHYBER	WAKE
    128						CALL	STOPLE
    129						MOVB	#WAKE,L.DWAK(R5)
    130						CALL	DFSLEP
    131					.ENDM
    132
    133
    134
    135						.SBTTL	MCB DLC TO LLC INTERFACE MACRO
    136
    137					.MACRO	$TOBDM	WHICH,SFC
    138						.IF NB	<SFC>
    139						MOV	SFC,R3		; LOAD SUCCESS/FAILURE CODE
    140						.IFF
    141						CLR	R3		; DEFAULT IS SUCCESS
    142						.ENDC ; NB <SFC>
    143						MOV	L.SLN(R5),C.LIN(R4) ; IDENTIFY SENDER
    144						CALL	$'WHICH'CMP	; DISPATCH TO COMMEXEC
    145					.ENDM	$TOBDM
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 8
QUEUE HANDLING MACROS

    147						.SBTTL	QUEUE HANDLING MACROS
    148
    149					.MACRO	DEQ$	OFFSET,TAG,?TAG1,?TAG2
    150						INHIB$
    151						MOV	OFFSET(R5),R4
    152						.IF NB,	TAG
    153						BNE	TAG1
    154						ENABL$
    155						BR	TAG
    156					TAG1:
    157						.IFF
    158						BEQ	TAG2+2
    159						.ENDC
    160						MOV	@R4,OFFSET(R5)
    161						BNE	TAG2
    162						MOV	R5,OFFSET+2(R5)
    163						.IIF NB <OFFSET>, ADD #OFFSET,OFFSET+2(R5)
    164					TAG2:	CLR	@R4
    165						ENABL$
    166					.ENDM	DEQ$
    167
    168
    169					.MACRO	ENQ$	OFFSET
    170						INHIB$
    171						CLR	@R4
    172						MOV	R4,@OFFSET+2(R5)
    173						MOV	R4,OFFSET+2(R5)
    174						ENABL$
    175					.ENDM	ENQ$
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 9
LP11 DRIVER CONSTANTS

    177						.SBTTL	LP11 DRIVER CONSTANTS
    178
    179		000000 			NUL	=	0
    180		000001 			SOH	=	1
    181		000002 			STX	=	2
    182		000003 			ETX	=	3
    183		000004 			EOT	=	4
    184		000005 			ENQ	=	5
    185		000006 			ACK	=	6
    186		000007 			BEL	=	7
    187		000010 			BS	=	10
    188		000011 			HT	=	11
    189		000012 			LF	=	12
    190		000013 			VT	=	13
    191		000014 			FF	=	14
    192		000015 			CR	=	15
    193		000016 			SO	=	16
    194		000017 			SI	=	17
    195		000020 			DLE	=	20
    196		000021 			DC1	=	21
    197		000022 			DC2	=	22
    198		000023 			DC3	=	23
    199		000024 			DC4	=	24
    200		000025 			NAK	=	25
    201		000026 			SYN	=	26
    202		000027 			ETB	=	27
    203		000030 			CAN	=	30
    204		000031 			EM	=	31
    205		000032 			SUB	=	32
    206		000033 			ESC	=	33
    207		000034 			FS	=	34
    208		000035 			GS	=	35
    209		000036 			RS	=	36
    210		000037 			US	=	37
    211		000040 			SPA	=	40
    212		000177 			DEL	=	177
    213		000334 			ERRCHR	=	'\!200		; DEC STD ERROR CHARACTER
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 10
LP11 HARDWARE DEVICE REGISTER DEFINITIONS

    215						.SBTTL	LP11 HARDWARE DEVICE REGISTER DEFINITIONS
    216
    217					; * LP11 HARDWARE DEVICE REGISTER DEFINITIONS
    218		000000 				LPS	= 0			; LINE PRINTER STATUS REGISTER
    219		100000 					ERROR	= 100000	;  GENERAL (ONLY KNOWN) ERROR BIT
    220		000200 					DONE	= 200		;  CHARACTER DONE/PRINTER READY
    221		000100 					INTENB	= 100		;  INTERRUPT ENABLE
    222		000002 				LPB	= 2			; LINE PRINTER DATA BUFFER REGISTER
    223										;   SEVEN BIT ASCII, WRITE ONLY
    224		000004 				LESZ	= 4			; SIZE OF LP11 REGISTER BLOCK IN BYTES
    225
    226
    227
    228
    229						.SBTTL	VERTICAL FORMAT UNIT MACROS
    230
    231					.MACRO 	.ZER $$
    232						.P'$$=0
    233					.ENDM	.ZER
    234
    235
    236
    237					.MACRO	SETCHN	A,B			; 'OR' NEW CHANNEL SETTING INTO MAP WORD
    238						.P'B = .P'B ! A
    239					.ENDM	SETCHN
    240
    241
    242					.MACRO	WRDVFU	X
    243						.WORD	.P'X
    244					.ENDM	WRDVFU
    245
    246
    247					.MACRO	DEFPAR	CHN,LINC,LAST
    248						$$ = 1
    249						.REPT	LAST/LINC		; NUMBER OF STOPS IN CHANNEL
    250							SETCHN	CHN,\$$		; 'OR' IN NEXT STOP
    251							$$ = $$ + LINC
    252						.ENDR	; R L-/L-
    253					.ENDM	DEFPAR
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 11
DEFAULT VERTICAL FORMAT DATA

    255						.SBTTL	DEFAULT VERTICAL FORMAT DATA
    256
    257					;+
    258					; THE FOLLOWING TABLE DEFINES A DEFAULT CONTENT FOR THE VERTICAL
    259					; FORMAT UNIT OF THE LP11 FOR A 66 LINE PAGE (11 INCHES AT 6 LINES PER INCH).
    260					;
    261					;	STANDARD NURD VERTICAL FORMAT UNIT DEFINITION
    262					;
    263					; CHANNEL  1 - (TOP OF FORM) LINE 1 ONLY
    264					; CHANNEL  2 - HALF OF FORM STOP
    265					; CHANNEL  3 - EVERY OTHER LINE FROM LINE 1 UP TO AND INCLUDING LINE 59
    266					; CHANNEL  4 - EVERY THIRD LINE FROM LINE 1 UP TO AND INCLUDING LINE 58
    267					; CHANNEL  5 - EVERY LINE
    268					; CHANNEL  6 - EVERY TENTH LINE FROM LINE 1 UP TO AND INCLUDING LINE 51
    269					; CHANNEL  7 - EVERY 20TH  LINE FROM LINE 1 UP TO AND INCLUDING LINE 41
    270					; CHANNEL  8 - NEXT LINE IN FORM
    271					;
    272					;	STANDARD EXTENSION TO STANDARD VERTICAL FORMAT UNIT
    273					;
    274					; CHANNEL  9 - EVERY FIFTH LINE FROM LINE 1 UP TO AND INCLUDING LINE 56
    275					; CHANNEL 10 - QUARTER OF FORM STOPS
    276					; CHANNEL 11 - ALTERNATE TOP OF FORM
    277					; CHANNEL 12 - (BOTTOM OF FORM) LINE 60 AT 6 LPI
    278					;-
    279
    280
    281					; * 	NOTE:	ALL VFU ACTIONS ALSO PERFORM CARRIAGE RETURN ACTION.
    282
    283		000102 				PGLEN = 66.		; 66 LINES PER PAGE
    284		000074 				FRMLEN = 60.		; 60 LINES OF FORM
    285
    286
    287					.IF NDF VCH1			; DEFINE VFU CHANNEL TAGS
    288						$$ = 1
    289						.IRP	X,<1,2,3,4,5,6,7,8,9,10,11,12>
    290						VCH'X = X'. - 1		; NUMERIC CHANNEL TAGS
    291						VFBP'X = $$		; POSITIONAL CHANNEL TAGS
    292						$$ = $$*2
    293						.ENDR	; IRP X
    294					.ENDC	; NDF VCH1
    295
    296
    297					.IF NDF .P1
    298						$$=0			; INIT THE LINE SYMBOLS .P<NN>
    299						.REPT PGLEN
    300						$$=$$+1
    301						.ZER \$$
    302						.ENDR
    303
    304						; * SET THE MASK BITS IN THE PARTITION WORDS ACCORDING TO
    305						; * THE FORMULA DEFINED IN THE ARGUMENTS TO DEFPAR
    306						DEFPAR	VFBP1,1,1		; TOP OF FORM
    307						DEFPAR	VFBP2,<<FRMLEN/2>>,FRMLEN ; HALF OF FORM STOPS
    308						DEFPAR	VFBP3,2.,FRMLEN		; EVERY OTHER LINE
    309						DEFPAR	VFBP4,3.,FRMLEN		; EVERY THIRD LINE
    310						DEFPAR	VFBP5,1.,PGLEN		; EVERY LINE TO END
    311						DEFPAR	VFBP6,10.,FRMLEN	; EVERY TENTH LINE
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 11-1
DEFAULT VERTICAL FORMAT DATA

    312						DEFPAR	VFBP7,20.,FRMLEN	; EVERY TWENTIETH LINE
    313						DEFPAR	VFBP8,1.,FRMLEN		; SINGLE SPACE IN FORM
    314						DEFPAR	VFBP9,5.,FRMLEN		; EVERY FIFTH LINE
    315						DEFPAR	VFBP10,<<FRMLEN/4>>,FRMLEN  ; QUARTER OF FORM STOPS
    316						DEFPAR	VFBP11,1,1		; ALTERNATE TOP OF FORM
    317						.P75 = .P75 ! VFBP12		; SPECIAL CASE FOR BOF
    318						.P102 = .P102 ! 100000		; FLAG LAST WORD OF VFU IMAGE TABLE
    319					.ENDC	; NDF .P1
    320
    321
    322					; * USE THE DEFINED PARTITION WORDS TO BUILD A COMPLETE VFU IMAGE, AND
    323					; * ASSIGN PARTITIONS FOR THE WHOLD PAGE.
    324	000000				$VFU66::
    325		000000 				$$ = 0
    326		000102 				.REPT	PGLEN
    327						$$=$$+1
    328						WRDVFU	\$$
    329						.ENDR	; R PGLEN
    330		000204 				  VFU66S = . - $VFU66		; SIZE OF VFU IMAGE
    331
    332
    333					; * $LERAM FCT INDEX TO CHANNEL MAP
    334	000204	000001 			CHMAP:	.WORD	VFBP1		;  0
    335	000206	000002 				.WORD	VFBP2		;  1
    336	000210	000004 				.WORD	VFBP3		;  2
    337	000212	000010 				.WORD	VFBP4		;  3
    338	000214	000020 				.WORD	VFBP5		;  4
    339	000216	000040 				.WORD	VFBP6		;  5
    340	000220	000100 				.WORD	VFBP7		;  6
    341	000222	000200 				.WORD	VFBP8		;  7
    342	000224	000400 				.WORD	VFBP9		;  8
    343	000226	001000 				.WORD	VFBP10		;  9
    344	000230	002000 				.WORD	VFBP11		;  10
    345	000232	004000 				.WORD	VFBP12		;  11
    346	000234	000000 				.WORD	0		;  12 UNUSED ENTRY (NO STOPS SET)
    347	000236	000000 				.WORD	0		;  13 UNUSED ENTRY (NO STOPS SET)
    348	000240	000000 				.WORD	0		;  14 UNUSED ENTRY (NO STOPS SET)
    349	000242	000000 				.WORD	0		;  15 UNUSED ENTRY (NO STOPS SET)
    350
    351
    352
    353					; * LP11 CHARACTER TRANSLATION MAP, INITIALIZED TO NURD ASCII BY OPEN.
    354					; * POTENTIALLY CHANGED BY FEATURES SETS. ROOM FOR A FULL SEVEN-BIT CODE.
    355	000244				$LEASC::.BLKB	128.
    356						.EVEN
    357
    358
    359					; * NAME THE FCXTB FLAGS
    360		000200 			FCCHR	=	200		; CHARACTER IS A FORMS CONTROL CHARACTER
    361		000100 			HFCHR	=	100		; CHARACTER IS A HORIZONTAL CONTROL CHARACTER
    362		000040 			HFCCR	=	 40		; CHARACTER IS A CARRIAGE RETURN CHARACTER
    363
    364
    365
    366					; * FORMS CONTROL EXCEPTION TABLE
    367					; *	 FORMAT: .BYTE <$LEASC OFFSET>,<TRANS CONTENTS>
    368	000444	   011 	   300 		FCXTB:	.BYTE	HT,FCCHR!HFCHR
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 11-2
DEFAULT VERTICAL FORMAT DATA

    369	000446	   012 	   207 			.BYTE	LF,FCCHR!VCH8
    370	000450	   013 	   206 			.BYTE	VT,FCCHR!VCH7
    371	000452	   014 	   200 			.BYTE	FF,FCCHR!0
    372	000454	   015 	   340 			.BYTE	CR,FCCHR!HFCHR!HFCCR
    373	000456	   020 	   201 			.BYTE	DLE,FCCHR!VCH2
    374	000460	   021 	   202 			.BYTE	DC1,FCCHR!VCH3
    375	000462	   022 	   203 			.BYTE	DC2,FCCHR!VCH4
    376	000464	   023 	   204 			.BYTE	DC3,FCCHR!VCH5
    377	000466	   024 	   205 			.BYTE	DC4,FCCHR!VCH6
    378
    379					; * CHANNELS 9-12 NOT SUPPORTED
    380					; 	.BYTE	FS,FCCHR!VCH9
    381					; 	.BYTE	GS,FCCHR!VCH10
    382					; 	.BYTE	RS,FCCHR!VCH11
    383					; 	.BYTE	US,FCCHR!VCH12
    384	000470	177777 				.WORD	-1			; TABLE ENDS ON NEGATIVE OFFSET BYTE
    385
    386
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 12
DISPATCH TABLES

    388						.SBTTL	DISPATCH TABLES
    389
    390					;+
    391					;   MCB INCOMING DISPATCH
    392					;-
    393
    394					; * MAIN ENTRY POINT DLC DISPATCH TABLE
    395	000472	000622'			$LETB::.WORD	LENURD		;  FC.XME - NURD MESSAGE ENTRY (TRANSMIT ENABLE)
    396	000474	007002'				.WORD	LEDLRE		;  FC.RCE - RECEIVE (RESOURCE RETURN)
    397	000476	000514'				.WORD	CRASH		;  FC.KIL - KILL
    398	000500	000516'				.WORD	LECTL		;  FC.CTL - CONTROL ENABLE
    399	000502	006616'				.WORD	LETIM		;  FC.TIM - DLC TIMER
    400	000504	010324'				.WORD	DLCXCP		;  FC.XCP - TRANSMIT COMPLETE: RET OF PHYS> BUFS
    401	000506	000514'				.WORD	CRASH		;  FC.RCP - RECEIVE COMPLETE
    402	000510	000514'				.WORD	CRASH		;  FC.KCP - KILL COMPLETE
    403	000512	000574'				.WORD	LECCP		;  FC.CCP - CONTROL COMPLETE
    404		000022 			  FNCOTR = . - $LETB
    405
    406	000514	000004 			CRASH:	IOT			; DIE IGNOMINEOUSLY
    407
    408
    409					; * CONTROL ENABLE DISPATCH
    410	000516				LECTL:	CALLR	@1$(R3)
    411	000522	000514'			1$:	.WORD	CRASH		; FS.INI
    412	000524	007054'				.WORD	CTLSTR		; FS.STR(OPEN)
    413	000526	007460'				.WORD	CTLSTP		; FS.STP(CLOSE)
    414	000530	000514'				.WORD	CRASH		; FS.TRM
    415	000532	000514'				.WORD	CRASH
    416	000534	000514'				.WORD	CRASH		; FS.SET
    417	000536	000514'				.WORD	CRASH		; FS.GET
    418	000540	000514'				.WORD	CRASH		; NT$XON
    419	000542	000514'				.WORD	CRASH		; NT$XOF
    420	000544	000554'				.WORD	NRMACK		; FS.RNG NRM
    421	000546	000554'				.WORD	NRMACK		; FS.ENB NRM
    422	000550	000554'				.WORD	NRMACK		; FS.DIS NRM
    423	000552	000554'				.WORD	NRMACK		; FS.MSN NRM
    424
    425	000554				NRMACK:	$TOBDM	CT,#1			; RETURN SUC
    426	000572					RETURN
    427
    428
    429	000574				LECCP:	CALLR	@1$(R3)
    430	000600	000514'			1$:	.WORD	CRASH		; FS.INI
    431	000602	000514'				.WORD	CRASH		; FS.STR(OPEN)
    432	000604	000514'				.WORD	CRASH		; FS.STP(CLOSE)
    433	000606	000514'				.WORD	CRASH		; FS.TRM
    434	000610	000514'				.WORD	CRASH
    435	000612	000514'				.WORD	CRASH		; FS.SET
    436	000614	000514'				.WORD	CRASH		; FS.GET
    437	000616	000000G				.WORD	$CCBRT		; NT$XON - IGNORE
    438	000620	000000G				.WORD	$CCBRT		; NT$XOF - IGNORE
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 13
NRD INTERPROCESS COMMUNICATION CONVENTIONS

    440						.SBTTL	NRD INTERPROCESS COMMUNICATION CONVENTIONS
    441
    442					; DATA TO LE FROM NRD
    443					;
    444					;	NRD SENDS CCB OWND BY NRD WITH FC.XME,NT$DAT AND HAS SAVED NSP
    445					;	CCB IN C.FLG2.  THE DATA BUFFER IS OWNED BY NSP.
    446					;
    447					;
    448					; DATA TO NRD FROM LE
    449					;
    450					;	LE SENDS A CCB (OWNED BY LE) TO NRD WITH FC.RCP,NT$DAT
    451					;	AND A DATA BUFFER OWNED BY LE.
    452					;	NRD PASSES LE'S CCB THRU TO NSP,SAVING C.BUF+2 IN C.BUF2+2, AND
    453					;	MAPPING C.FNC TO FC.XME.  NRD,UPON RETURN OF THE CCB FROM NSP, RESTORES
    454					;	C.BUF+2 AND RETURNS IT TO LE WITH FC.RCE,NT$DAT.
    455					;
    456					;	NURD INTERFACE PROTOCOL
    457					;
    458					;	USER INITIATED:
    459					;
    460					;		 FC.RCP,NT$DAT     FC.XME,NT$DAT
    461					;	USER/NSP ------------->NRD ------------->DLC       (NON INTERRUPT)
    462					;		<------------- NRD<------------- DLC
    463					;		 FC.RCE,NT$RTN     FC.XCP,NT$DAT
    464					;
    465					;
    466					;		 FC.RCP,NT$INT     FC.XME,NT$INT
    467					;	USER/NSP ------------->NRD ------------->DLC	   (INTERRUPT)
    468					;		<------------- NRD<------------- DLC
    469					;		 FC.RCE,NT$RTI     FC.XCP,NT$INT DLC
    470					;
    471					;
    472					;	DLC INITIATED:
    473					;
    474					;		 FC.XME,NT$DAT     FC.RCP,NT$DAT
    475					;	USER/NSP<------------- NRD<------------- DLC	   (NON INTERRUPT)
    476					;		 ------------->NRD ------------->DLC
    477					;		 FC.XCP,NT$DAT     FC.RCE,NT$DAT
    478					;
    479					;		 FC.XME,NT$INT     FC.RCP,NT$INT
    480					;	USER/NSP<------------- NRD<------------- DLC	   (INTERRUPT)
    481					;		 ------------->NRD ------------->DLC
    482					;		 FC.XCP,NT$INT     FC.RCE,NT$INT
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 14
NURD MESSAGE DECODER

    484						.SBTTL	NURD MESSAGE DECODER
    485
    486					;+
    487					; DISPATCH BASED ON THE TYPE OF NURD MESSAGE CONNECTED
    488					; TO THE CURRENT CCB (CHAIN), WHICH CONSISTS OF BUT A SINGLE MSG
    489					;  INPUTS:	R4 - POINTS TO CCB (CHAIN)
    490					;		R5 - POINTS TO PROPER DEVICE LINE TABLE
    491					;  OUTPUTS:	THIS DISPATCHES TO PROPER NURD MESSAGE HANDLER, OR RETURNS
    492					;		AN ERROR IF TYPE ILLEGAL OR OUT OF RANGE.
    493					;		REGISTERS ARE NOT PRESERVED.
    494					;		THE CALLED ROUTINE IS RESPONSIBLE FOR QUEUING
    495					;		MESSAGES TO BE RETURNED TO THE HIGHER LEVEL.
    496					;
    497					;  MSG FORMAT:	<MSGTYPE><MSGFLGS><MSGTXT.....>
    498					;-
    499
    500	000622	032765 	000001 	000024 	LENURD:	BIT	#LA.CLO,L.ASTS(R5)	; DEVICE CLOSED?
    501	000630	001037 				BNE	60$			; YES, HENCE INACCESSIBLE
    502	000632					MAP	C.BUF(R4)		; GET MAPPING
    503	000640	016400 	000016 			MOV	C.BUF+2(R4),R0		; POINT TO CCB DATA BUFFER
    504	000644	111001 				MOVB	(R0),R1			; GET NURD MESSAGE TYPE
    505	000646	042701 	177760 			BIC	#^C<NM.TYP>,R1		; ISOLATE JUST MESSAGE TYPE
    506	000652	020127 	000006 			CMP	R1,#NRDOTR		; TYPE OUT OF RANGE?
    507	000656	103402 				BLO	30$			; NO, OKAY TO DISPATCH
    508	000660	012701 	000006 			MOV	#NRDOTR,R1		; YES, SPECIFY ILLEGAL NURD HANDLER
    509	000664	006301 			30$:	ASL	R1			; GET WORD OFFSET
    510	000666					CALLR	@40$(R1)		; DISPATCH TO MESSAGE PROCESSOR
    511
    512	000672	000750'			40$:	.WORD	QTODLC			;  0 - DATA MESSAGE
    513	000674	000710'				.WORD	50$			;  1 - ATTENTION (ILLEGAL IF REC'D)
    514	000676	000750'				.WORD	QTODLC			;  2 - FEATURES MESSAGE
    515	000700	005016'				.WORD	CONTRL			;  3 - CONTROL MESSAGE
    516	000702	000710'				.WORD	50$			;  4 - ALERT (ILLEGAL IF REC'D)
    517	000704	000710'				.WORD	50$			;  5 - CAPABILITIES (ILLEGAL IF REC'D)
    518		000006 			  NRDOTR = <.-40$>/2
    519	000706	000710'				.WORD	50$			;  N - ILLEGAL NURD TYPE SPEC
    520										;  STATE OF REGISTERS AT POINT OF CALL:
    521										;   R0 - POINTS TO NURD MESSAGE TYPE BYTE
    522										;   R1 - HAS DISPATCH INDEX
    523										;   R2, R3 - UNSPECIFIED
    524										;   R4, R5 - AS UNDER "INPUTS" ABOVE
    525										;   R0-R3 ARE AVAILABLE FOR USE BY
    526										;     CALLED ROUTINE WITHOUT RESTRICTION
    527
    528	000710				50$:	$TOBDM	XM,#LS.ILM		; RETURN ERRANT MSG
    529	000726					RETURN
    530	000730				60$:	$TOBDM	XM,#LS.ABO		; RETURN DATA MSG VIA $XMCMP
    531	000746					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 15
QUEUE UP INCOMING NURD DATA AND FEATURES

    533						.SBTTL	QUEUE UP INCOMING NURD DATA AND FEATURES
    534
    535					;+
    536					; QUEUE UP FOLLOWING NURD MSG TYPES:
    537					; 	DATA
    538					; 	FEATURES
    539					;
    540					; R4/CCB TO QUEUE
    541					; R5/DLT
    542					;-
    543
    544	000750	032765 	000010 	000024 	QTODLC:	BIT	#LA.ABO,L.ASTS(R5)	; CHECK FOR ABORT STATE
    545	000756	001402 				BEQ	QDLC			; OK TO PROCEED
    546	000760					CALLR	DDMXCP
    547
    548	000764	010403 			QDLC:	MOV	R4,R3			; COPY TOP CCB POINTER
    549	000766	011302 			10$:	MOV	(R3),R2			; FOLLOW CCB CHAIN
    550	000770	001402 				BEQ	20$			;    TO NULL LINK
    551	000772	010203 				MOV	R2,R3			;      TO GET FULL MSG
    552	000774	000774 				BR	10$
    553
    554	000776	010475 	000074 		20$:	MOV	R4,@L.DLCQ+2(R5)	; LINK CHAIN TO END OF CURRENT QUEUE
    555	001002	010365 	000074 			MOV	R3,L.DLCQ+2(R5)		; SET NEW END OF QUEUE
    556	001006	020465 	000072 			CMP	R4,L.DLCQ(R5)		; NEW CHAIN AT HEAD OF QUEUE?
    557	001012	001037 				BNE	70$			; NO, ROUTINES OF INTEREST ARE WORKING
    558	001014	122765 	000001 	000142 		CMPB	#DWAKS,L.DWAK(R5)	; YES - CHECK IF THIS IS DESIRED WAKE CONDITION
    559	001022	001002 				BNE	30$			; NO
    560	001024					CALLR	DFWAKE			; GO WAKE THE PROCESS
    561
    562	001030	010665 	000144 		30$:	MOV	SP,L.DFSP(R5)		; SET THE STACK ORIGIN FOR THIS PROCESS
    563	001034					CALL	GB			; EXTRACT MSG TYPE
    564	001040	010001 				MOV	R0,R1
    565	001042					CALL	GB			; EXTRACT MSG FLAGS
    566	001046	010065 	000076 			MOV	R0,L.MFLG(R5)
    567	001052	105701 				TSTB	R1			; CHECK NURD MSG TYPE
    568	001054	001406 				BEQ	40$
    569	001056	122701 	000003 			CMPB	#NM.CTL,R1		; DISTINGUISH CONTROL OR FEATURES
    570	001062	001006 				BNE	50$
    571	001064					CALL	CONSYN			; NON-INTERRUPT CONTROL MSG
    572	001070	000405 				BR	60$
    573
    574	001072				40$:	CALL	DATA			; DATA
    575	001076	000402 				BR	60$			; EXIT THROUGH NO-ERROR RETURN
    576
    577	001100				50$:	CALL	FEATRS			; FEATURES
    578	001104	016504 	000072 		60$:	MOV	L.DLCQ(R5),R4		; GET NEXT MSG
    579	001110	001347 				BNE	30$			; MORE
    580
    581	001112				70$:	RETURN				; EXIT
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 16
DATA/FEATURES HYBER FUNCTION

    583						.SBTTL	DATA/FEATURES HYBER FUNCTION
    584
    585					; * CALLED BY PROCESS TO WAIT FOR A NEW DAY. INTERRUPTS HAVE BEEN DISABLED,
    586					; * L.DWAK HAS BEEN SET TO WAKE CONDITION, SO CONTEXT WILL NOW BE SAVED.
    587	001114	010065 	000146 		DFSLEP:	MOV	R0,L.DTXT(R5)		; STORE THE REGISTERS 1ST
    588	001120	012700 	000150 			MOV	#L.DTXT+2,R0
    589	001124	060500 				ADD	R5,R0			; R0 -> R1 SLOT
    590	001126	010120 				MOV	R1,(R0)+
    591	001130	010220 				MOV	R2,(R0)+
    592	001132	010320 				MOV	R3,(R0)+
    593	001134	010420 				MOV	R4,(R0)+
    594	001136	105065 	000143 			CLRB	L.DTXL(R5)		; INIT THE COUNT
    595
    596	001142	122765 	000013 	000143 	10$:	CMPB	#DTXTSZ-5,L.DTXL(R5)	; CHECK INCIPIENT OVERFLOW
    597	001150	101001 				BHI	20$
    598	001152					CRASH				; PROGRAM BUG
    599
    600	001154	012620 			20$:	MOV	(SP)+,(R0)+		; XFER NEXT STACK WORD
    601	001156	105265 	000143 			INCB	L.DTXL(R5)		; COUNT IT
    602	001162	026506 	000144 			CMP	L.DFSP(R5),SP		; CHECK ORIGIN
    603	001166	001365 				BNE	10$			; MORE
    604	001170					CALLR	STRTLE			; DONE - START THE DEVICE IF IT WAS GOING
    605										;   AND EXIT TO ORIGINAL CALLER
    606
    607					; * COME HERE WHEN WAKE CONDITION HAS BEEN MET
    608					; * SP WILL BE THE NEW STACK ORIGIN
    609	001174	105065 	000142 		DFWAKE:	CLRB	L.DWAK(R5)		; FLUSH THE WAKE CONDITION
    610	001200	005000 				CLR	R0
    611	001202	156500 	000143 			BISB	L.DTXL(R5),R0		; GET THE NO. OF WORDS TO RETURN TO STACK
    612	001206	006300 				ASL	R0
    613	001210	062700 	000160 			ADD	#L.DTXT+12,R0
    614	001214	060500 				ADD	R5,R0			; R0 -> 1ST WOD TO RETURN TO STACK
    615	001216	010665 	000144 			MOV	SP,L.DFSP(R5)		; SET THE NEW STACK ORIGIN
    616
    617	001222	014046 			10$:	MOV	-(R0),-(SP)		; XFER THE STACK CONTENTS
    618	001224	105365 	000143 			DECB	L.DTXL(R5)		; COUNT THEM
    619	001230	001374 				BNE	10$
    620	001232	014004 				MOV	-(R0),R4		; RESTORE THE REGISTERS
    621	001234	014003 				MOV	-(R0),R3
    622	001236	014002 				MOV	-(R0),R2
    623	001240	014001 				MOV	-(R0),R1
    624	001242	014000 				MOV	-(R0),R0
    625	001244					RETURN				; RETURN TO ORIGINAL CALLER OF DFSLEP
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 17
NURD DATA MESSAGE HANDLER

    627						.SBTTL	NURD DATA MESSAGE HANDLER
    628
    629					;+
    630					; VIRTUAL (NURD) TO PHYSICAL (LP11) DATA TRANSLATION -
    631					; UNLOAD NURD BUFFER INTO PHYSICAL BUFFER AND SHIP PHYSICAL BUFFERS
    632					; DOWN TO DDM AS FILLED, SAVING VIRTUAL MACHINE BUFFERS IN C.FLG2 OF
    633					; THE PHYSICAL BUFFER UNTIL THE CORRESPONDING PHYSICAL DATA HAS BEEN
    634					; OUTPUT OR ABORTED.
    635					;
    636					; THIS ROUTINE IS CALLED FROM QTODLC AT THE MAIN ENTRY, AND ENTERED AT
    637					; VARIOUS RECOVERY POINTS, DEPENDING UPON THE NATURE OF THE FAILURE
    638					; WHICH CAUSED THE SUSPENSION.
    639					;
    640					; SOURCE BUFFER HAS BEEN SET UP AND NURD TYPE AND MSG FLAG BYTES
    641					; (1ST & 2ND BYTES) HAVE BEEN EXTRACTED.
    642					;	R4/CCB
    643					;	R5/DLT
    644					;
    645					;	DATA MSG FORMAT:	<SEQ NO.><FLGS><SEG CNT><SEGS......>
    646					;	DATA SEG FORMAT:	<CNT><TXT....> OR <SIGN+CNT><REPEAT CHAR>
    647					;-
    648
    649					; *  MAIN ENTRY, NEW DATA MSG AT TOP OF QUEUE
    650	001246				DATA:	CALL	GB			; GET SEQUENCE NUMBER
    651	001252	110065 	000077 			MOVB	R0,L.DMSQ(R5)		; SAVE THE CURRENT SEQ NUMBER
    652	001256					CALL	GB			; GET THE FLAGS BYTE
    653	001262	032700 	000001 			BIT	#ND.ACK,R0		; CHECK FOR ACK REQ'D
    654	001266	001403 				BEQ	14$			; NO ACK REQUEST
    655	001270	052765 	000100 	000024 		BIS	#LA.AKR,L.ASTS(R5)	; NOTE ACK REQUESTED
    656	001276	032700 	000004 		14$:	BIT	#ND.EOF,R0		; CHECK FOR EOF
    657	001302	001403 				BEQ	16$
    658	001304	052765 	000400 	000024 		BIS	#LA.EOF,L.ASTS(R5)	; SET THIS MESSAGE HAS EOF
    659	001312				16$:	CALL	GB			; GET SEGMENT COUNT BYTE
    660	001316	110065 	000100 			MOVB	R0,L.DMSG(R5)		; SAVE THE SEGMENT COUNT OF MESSAGE
    661	001322	001501 				BEQ	60$			; EMPTY MSG, SKIP DATA PROCESSING
    662
    663					; * PROCESS MSG DATA
    664	001324				20$:	CALL	GB			; GET NEXT SEGMENT HDR BYTE
    665	001330	105700 				TSTB	R0			; DISPATCH BASED ON SEGMENT TYPE
    666	001332	100410 				BMI	28$			; THIS IS A COMPRESSED SEGMENT
    667	001334	003017 				BGT	32$			; THIS IS A NORMAL DATA SEGMENT
    668					; * THIS IS AN EOR
    669	001336	105765 	000256 			TSTB	LE.FCC+F.FCV(R5)	; IS FORTRAN CARRIAGE CONTROL SET?
    670	001342	001403 				BEQ	24$			; NO, EOR IS THEN NOT SIGNIFICANT
    671	001344	052765 	001000 	000024 		BIS	#LA.EOR,L.ASTS(R5)	; YES, SET EOR TO FLAG NEXT CHAR AS CC
    672	001352	000462 			24$:	BR	56$			; PROCESS END OF SEGMENT
    673
    674					; * PROCESS COMPRESSED DATA SEGMENT
    675	001354	112765 	000001 	000101 	28$:	MOVB	#1,L.DMSS(R5)		; SET SEGMENT SIZE TO ONE CHARACTER
    676	001362	042700 	177600 			BIC	#177600,R0		; FLUSH COMPRESSION FLAG,LEAVE REPEAT COUNT
    677	001366	010065 	000104 			MOV	R0,L.DMCR(R5)		; SET REPEAT COUNT FOR THAT CHAR
    678	001372	000404 				BR	36$			; PROCESS DATA IN NORMAL WAY
    679
    680	001374	110065 	000101 		32$:	MOVB	R0,L.DMSS(R5)		; SET SEGMENT SIZE OF NORMAL DATA SEGMENT
    681	001400	005065 	000104 			CLR	L.DMCR(R5)		; FLUSH REPEAT COUNT
    682
    683	001404				36$:	CALL	GB			; GET CHARACTER DATA BYTE FROM MSG
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 17-1
NURD DATA MESSAGE HANDLER

    684	001410	042700 	177600 			BIC	#^C177,R0		; SAVE ONLY LOW SEVEN BITS OF CHARACTER
    685	001414	066500 	000064 			ADD	L.CSMP(R5),R0		; ADD IN THE CURRENT CHARACTER MAP ADDRESS
    686	001420	111000 				MOVB	(R0),R0			; GET THE MAPPED VALUE OF THE CHARACTER
    687	001422	110065 	000126 			MOVB	R0,L.PBRC(R5)		; SAVE A COPY OF THE CHARACTER
    688
    689	001426	005000 			40$:	CLR	R0			; GET THE BYTE BACK
    690	001430	156500 	000126 			BISB	L.PBRC(R5),R0
    691	001434	032765 	001000 	000024 		BIT	#LA.EOR,L.ASTS(R5)	; END OF RECORD ON?
    692	001442	001406 				BEQ	42$			; NO, PROCEED WITHOUT INCIDENT
    693										; YES, BYTE IS FORTRAN CARRIAGE CHAR
    694	001444					CALL	FCC			; HANDLE FORTRAN CARRIAGE CONTROL
    695	001450	042765 	001000 	000024 		BIC	#LA.EOR,L.ASTS(R5)	; FLUSH END OF RECORD
    696	001456	000410 				BR	52$			; OKAY, DO NEXT BYTE
    697
    698	001460	105700 			42$:	TSTB	R0			; CHECK FOR CHARACTER TYPE
    699	001462	001411 				BEQ	54$			; IGNORE CHARACTERS MAPPED TO ZERO
    700	001464	100003 				BPL	44$			; DIRECTLY TRANSMIT PRINTING CHARACTERS
    701					; * MANIPULATIONS REQ'D ON FORMS CONTROL CHARS
    702	001466					CALL	FCT			; DO FORMS CONTROL TRANSLATION
    703	001472	000402 				BR	52$			; SUCCEEDED, CONTINUE CURRENT PROCESSING
    704
    705	001474				44$:	CALL	PBCHR			; STUFF RESULTING CHAR TO OUTPUT
    706	001500	005365 	000104 		52$:	DEC	L.DMCR(R5)		; DECREMENT CHAR REPEAT COUNT
    707	001504	003350 				BGT	40$			; MORE TO DO ON CURRENT CHAR
    708
    709	001506	005065 	000104 		54$:	CLR	L.DMCR(R5)		; KEEP REPEAT CNT = 0
    710	001512	105365 	000101 			DECB	L.DMSS(R5)		; DECREMENT SEGMENT SIZE
    711	001516	001332 				BNE	36$			; SEGMENT NOT EMPTY, GET NEXT CHAR
    712
    713					; * SEGMENT FINISHED, CLEAN UP
    714	001520	105365 	000100 		56$:	DECB	L.DMSG(R5)		; DECREMENT COUNT OF SEGMENTS
    715	001524	001277 				BNE	20$			; NOT DONE, GO BACK FOR NEXT SEGMENT
    716
    717					; * MSG COMPLETE, DROP INTO END-OF-MSG CODE
    718	001526	016504 	000114 		60$:	MOV	L.PLBQ(R5),R4		;  GET PHYS BUFFER CCB ADDRESS
    719	001532	016564 	000024 	000012 		MOV	L.ASTS(R5),C.STS(R4)	; MARK PHYSICAL BUF
    720	001540				86$:	CALL	GBDQ			; PURGE
    721	001544	042765 	000500 	000024 	88$:	BIC	#LA.EOF!LA.AKR,L.ASTS(R5) ; CLEAR SAVED DATA FLAGS
    722	001552					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 18
PUT A PRINTING CHARACTER TO THE BUFFER

    724						.SBTTL	PUT A PRINTING CHARACTER TO THE BUFFER
    725
    726					; * PUT PRINTING CHAR TO BUFFER
    727	001554	126565 	000067 	000241 	PBCHR:	CMPB	L.COCT(R5),LE.FWD+F.FCV(R5) ; COL CT LE FORM WIDTH?
    728	001562	103407 				BLO	28$			; YES, OKAY (UNSIGNED COMPARISON)
    729	001564	105765 	000243 			TSTB	LE.TRN+F.FCV(R5)	; LINE TRUNCATION ON?
    730	001570	001020 				BNE	35$			; IF SO, EAT CHARACTERS TIL FC COMES
    731
    732	001572				21$:	PUSH	R0			; SAVE CURRENT CHARACTER
    733	001574					CALL	PBLF			; FORCE WRAP TO NEXT LINE
    734	001600					POP	R0			; RESTORE CHARACTER
    735
    736	001602	105765 	000237 		28$:	TSTB	LE.LCR+F.FCV(R5)	; UPPER CASE ONLY ON?
    737	001606	001405 				BEQ	30$			; NO
    738	001610	120027 	000140 			CMPB	R0,#140			; YES, IS CHAR LOWER CASE?
    739	001614	103402 				BLO	30$			; NO
    740	001616	042700 	000040 			BIC	#40,R0			; YES, CLEAR UNSHIFT BIT
    741
    742	001622				30$:	CALL	PB			; PUT CURRENT CHARACTER TO BUFFER
    743	001626	105265 	000067 			INCB	L.COCT(R5)		; COUNT THE COLUMN
    744
    745	001632				35$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 19
FORTRAN CARRIAGE CONTROL OUTPUT

    747						.SBTTL	FORTRAN CARRIAGE CONTROL OUTPUT
    748
    749					;+
    750					; FORTRAN CARRIAGE CONTROL MAPS THE 1ST CHARACTER OF EACH "RECORD"
    751					; INTO ONE OR MORE FORMS CONTROL  CHARACTERS:
    752					;
    753					; 	FCC	      VFU/HFC
    754					;
    755					; 	SPACE		LF
    756					; 	*		DC3
    757					; 	+		CR
    758					; 	-		DC3,DC3,LF
    759					; 	/		DC4
    760					; 	0		DC3,LF
    761					; 	1		FF
    762					; 	2		DLE
    763					; 	3		VT
    764					; 	OTHER		SPACE
    765					;-
    766
    767	001634	012701 	001762'		FCC:	MOV	#FCCTBL,R1		; SCAN TABLE FOR 1 CHARACTER XLATIONS
    768	001640	012702 	000007 			MOV	#FCCTBN,R2
    769	001644	122100 			10$:	CMPB	(R1)+,R0
    770	001646	001437 				BEQ	100$			; FOUND IT
    771	001650	005201 				INC	R1			; SKIP EQUIVALENT
    772	001652					SOB	R2,10$
    773	001656	122700 	000055 			CMPB	#'-,R0			; CHECK MULTIPLE CHARACTER XLATIONS
    774	001662	001407 				BEQ	20$
    775	001664	122700 	000060 			CMPB	#'0,R0
    776	001670	001414 				BEQ	30$
    777	001672	012700 	000040 			MOV	#SPA,R0			; NOT AN FCC CHARACTER
    778	001676					CALLR	PBCHR			; JUST PRINT A SPACE
    779
    780	001702	012700 	000003 		20$:	MOV	#3,R0			; CHECK FOR ROOM IN CURRENT BUFFER
    781	001706					CALL	PBROOM			; GET RID OF THIS BUFFER IF NOT ENOUGH
    782	001712	012700 	000023 		25$:	MOV	#DC3,R0			; DO DC3,DC3,LF
    783	001716					CALL	110$			; PRINT THW DC3
    784	001722	012700 	000002 		30$:	MOV	#2,R0			; CHECK FOR ROOM IN CURRENT BUFFER
    785	001726					CALL	PBROOM			; GET RID OF THIS BUFFER IF NOT ENOUGH
    786	001732	012700 	000023 		35$:	MOV	#DC3,R0			; DO DC3,LF
    787	001736					CALL	110$			; PRINT THE DC3
    788	001742					CALLR	PBLF			; DO A LINE FEED
    789
    790	001746	111100 			100$:	MOVB	(R1),R0			; GET SINGLE CHARACTER EQUIVALENT
    791	001750	066500 	000064 		110$:	ADD	L.CSMP(R5),R0		; MAP THE FORMS CONTROL CHARACTER
    792	001754	111000 				MOVB	(R0),R0
    793	001756					CALLR	FCT
    794
    795	001762	   040 	   012 		FCCTBL:	.BYTE	' ,LF
    796	001764	   052 	   023 			.BYTE	'*,DC3
    797	001766	   053 	   015 			.BYTE	'+,CR
    798	001770	   057 	   024 			.BYTE	'/,DC4
    799	001772	   061 	   014 			.BYTE	'1,FF
    800	001774	   062 	   020 			.BYTE	'2,DLE
    801	001776	   063 	   013 			.BYTE	'3,VT
    802		000007 			  FCCTBN=<.-FCCTBL>/2
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 20
VERTICAL FORMS CONTROL TRANSLATION

    804						.SBTTL	VERTICAL FORMS CONTROL TRANSLATION
    805					;+
    806					; R0/2*<TRANSLATED CHARACTER>
    807					; FCXTB HAS XLATION IMAGE OF ALL FC CHARACTERS
    808					;-
    809
    810	002000	105065 	000067 		VFC:	CLRB	L.COCT(R5)		; CLEAR COL COUNTER ON ALL VFE'S
    811	002004	042700 	177400 			BIC	#177400,R0		; CLEAR HIGH BYTE OF R0
    812	002010	001002 				BNE	10$			; NOT AN EXPLICIT FORM FEED
    813	002012					CALLR	PBFF			; EXPLICIT FORM FEED
    814
    815	002016	016000 	000204'		10$:	MOV	CHMAP(R0),R0		; GET CHANNEL MAP (R0 GOT WORD OFFSET IN FCT)
    816	002022	116501 	000066 			MOVB	L.LNCT(R5),R1		; GET THE LINE COUNTER
    817	002026	006301 				ASL	R1			;   AS A WORD OFFSET
    818	002030	005002 				CLR	R2			; CLEAR A LINE SPACING COUNTER
    819	002032	066501 	000070 			ADD	L.VFUA(R5),R1		; ADD THE BASE ADDRESS OF THE CURRENT VFU
    820										;   R1 NOW POINTS TO CURRENT LINE IN VFU
    821	002036	005721 			20$:	TST	(R1)+			; UP THE LINE POINTER, CHECKING FOR END OF VFU
    822	002040	100002 				BPL	30$			; NOT AT END OF VFU (MARKED AS MINUS)
    823	002042					CALLR	PBFF			; JUST DO AN FF AND QUIT
    824
    825	002046	005202 			30$:	INC	R2			; UP THE LINE SPACING COUNTER
    826	002050	030011 				BIT	R0,(R1)			; STOP MATCH AT CURRENT LINE LOCATION?
    827	002052	001771 				BEQ	20$			; NOT YET
    828	002054	112700 	000012 			MOVB	#LF,R0			; SET LF CODE IN TO R0
    829	002060	020227 	000002 			CMP	R2,#2			; 1 - 2 LF'S TO DO?
    830	002064	003007 				BGT	50$			; MORE - DO AS COMPRESSION PAIRS
    831	002066				40$:	CALL	PB			; YES, SEND THEM OUT INDIVIDUALLY
    832	002072	105265 	000066 			INCB	L.LNCT(R5)		; COUNT LINES AS WE GO
    833	002076					SOB	R2,40$
    834	002102					RETURN
    835
    836	002104				50$:	PUSH	R2			; SAVE NUMBER TO BE PUT
    837	002106					CALL	PCP			; PUT AS COMPRESSION PAIRS
    838	002112					POP	R2			; RESTORE COUNT
    839	002114	116500 	000066 			MOVB	L.LNCT(R5),R0		; UPDATE LINE COUNT BY NUMBER PUT
    840	002120	060200 				ADD	R2,R0			; ALL THIS BECAUSE THERE IS NO ADD BYTE
    841	002122	110065 	000066 			MOVB	R0,L.LNCT(R5)		; RESTORE LINE COUNT TO DLT
    842	002126					RETURN
    843
    844
    845						.SBTTL	FORMS CONTROL XLATION
    846
    847	002130	106300 			FCT:	ASLB	R0			; HORIZONTAL FORMS CHAR ? (TAB OR CR)
    848	002132	100322 				BPL	VFC			; NO
    849					;	BR	HFC			; YES, FALL INTO HFC
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 21
HORIZONTAL FORMS CONTROL TRANSLATION

    851						.SBTTL	HORIZONTAL FORMS CONTROL TRANSLATION
    852
    853					;+
    854					; R0/2*<TRANSLATED CHARACTER>
    855					;-
    856
    857	002134	106300 			HFC:	ASLB	R0			; TEST FOR TAB OR CR
    858	002136	100006 				BPL	10$			; HT
    859	002140	105065 	000067 			CLRB	L.COCT(R5)		; CLEAR COLUMN COUNT FOR CARRIAGE RETURN
    860	002144	112700 	000015 			MOVB	#CR,R0			; SET CR CODE
    861	002150					CALLR	PB			; PUT IT DOWN
    862
    863	002154	116500 	000067 		10$:	MOVB	L.COCT(R5),R0		; GET CURRENT COLUMN COUNT
    864	002160	110003 				MOVB	R0,R3			; NO REAL LIST EXISTS, TAB BY 8'S
    865	002162	152703 	000007 			BISB	#7,R3			; SET COUNT HARD UP ON NEXT TAB STOP
    866										; GO AND INC TO STOP 8K, NEXT CHAR GOES INTO 8K+1
    867	002166	105203 				INCB	R3			;    PLUS 1
    868	002170	120365 	000241 			CMPB	R3,LE.FWD+F.FCV(R5)	; STOP PAST FORM WIDTH?
    869	002174	101410 				BLOS	30$			; NO (BYTES ARE ALL UNSIGNED NUMBERS)
    870	002176	105765 	000243 			TSTB	LE.TRN+F.FCV(R5)	; YES, LINE TRUNCATION ON?
    871	002202	001003 				BNE	20$			; YES, TAB TO JUST EOL
    872	002204					CALL	PBLF			; NO, WRAP TO NEXT LINE
    873	002210	000761 				BR	10$			; NOW DO TAB
    874
    875	002212	116503 	000241 		20$:	MOVB	LE.FWD+F.FCV(R5),R3	; SET TAB STOP JUST AT FORMS WIDTH
    876	002216	110302 			30$:	MOVB	R3,R2			; SAVE NEW COLUMN COUNT
    877	002220	160002 				SUB	R0,R2			; COMPUTE NUMBER OF SPACES TO DO
    878	002222	001420 				BEQ	60$			; NONE! (CAN HAPPEN IF TRUNC ON AT EOL)
    879	002224	112700 	000040 			MOVB	#SPA,R0			; SOME, SET SPACE CODE TO BE PUT
    880	002230	042702 	177400 			BIC	#177400,R2		; PREVENT ANY GRUNDGY BYTE SIGN PROBLEMS
    881	002234	020227 	000002 			CMP	R2,#2			; 1 - 2 SPACES?
    882	002240	101403 				BLOS	40$			; YES
    883	002242					CALL	PCP			; NO, PUT A BUNCH OUT AS COMPR PAIR(S)
    884	002246	000404 				BR	50$
    885
    886	002250				40$:	CALL	PB			; MANUAL OUTPUT
    887	002254					SOB	R2,40$			; DO UNTIL DONE
    888
    889	002260	110365 	000067 		50$:	MOVB	R3,L.COCT(R5)		; TAB STOP VALUE IS NEW COL COUNT POSITION
    890
    891	002264				60$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 22
WRAP TO THE NEXT LINE (OR PAGE)

    893						.SBTTL	WRAP TO THE NEXT LINE (OR PAGE)
    894
    895					; * PUT BYTE A LINE FEED
    896	002266	005001 			PBLF:	CLR	R1
    897	002270	156501 	000066 			BISB	L.LNCT(R5),R1		; GET LINE COUNTER BYTE
    898	002274	006301 				ASL	R1			;   AS WORD OFFSET
    899	002276	066501 	000070 			ADD	L.VFUA(R5),R1		; POINT INTO CURRENT VFU
    900	002302	005721 				TST	(R1)+			; UP LINE POINTER
    901	002304	100414 				BMI	PBFF			; SKIP IF PAST END OF TABLE
    902	002306	032711 	000200 			BIT	#VFBP8,(R1)		; ***TABLE SPECIFIC HACK
    903	002312	001411 				BEQ	PBFF			; APPARENTLY IN MARGIN, GO DO TOF
    904	002314	112700 	000012 			MOVB	#LF,R0			; SET CHAR
    905	002320					CALL	PB			; DO IT
    906	002324	105265 	000066 			INCB	L.LNCT(R5)		; UP LINE COUNTER
    907	002330	105065 	000067 			CLRB	L.COCT(R5)		; CLEAR COL CTR WHEN GOING TO NEW LINE
    908	002334					RETURN				; CARRY STAYS AS SET BY LAST CALL
    909
    910
    911
    912					; * ADVANCE TO TOP OF FORM
    913	002336	112700 	000014 		PBFF:	MOVB	#FF,R0			; SET FF CHAR
    914	002342					CALL	PB			; TRY TO PUT IT
    915	002346	105065 	000066 			CLRB	L.LNCT(R5)		; CLEAR LINE COUNT
    916	002352	105065 	000067 			CLRB	L.COCT(R5)		; CLEAR COLUMN COUNTER WHEN GOING TO NEW LINE
    917	002356					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 23
GET AND PUT DATA BYTES

    919						.SBTTL	GET AND PUT DATA BYTES
    920
    921					;+
    922					; USED BY DATA AND BY FEATRS
    923					;  A FEATRS MSG IS SHUFFLED THRU DDM, AS AN EMPTY BUFFER), SO THAT IT
    924					;  IS RETURNED IN THE SAME SEQUENCE RELATIVE TO	DATA THAT IT WAS RECEIVED.
    925					;-
    926
    927	002360	005365 	000112 		GB:	DEC	L.DMBS(R5)		; DECREMENT COUNTER
    928	002364	002411 				BLT	5$			; BUFFER EMPTIED ALREADY
    929	002366					MAP	L.DMAD(R5)		; MAP IF NEED BE
    930	002374	005000 				CLR	R0
    931	002376	157500 	000110 			BISB	@L.DMAD+2(R5),R0	; GET BYTE FROM PHYSICAL BUFFER
    932	002402	005265 	000110 			INC	L.DMAD+2(R5)		; INCREMENT POINTER
    933	002406					RETURN
    934
    935	002410	005765 	000110 		5$:	TST	L.DMAD+2(R5)		; IS A BUFFER IN PROCESS?
    936	002414	001423 				BEQ	10$			; NO BUF IN USE
    937	002416	016504 	000072 			MOV	L.DLCQ(R5),R4		; CHECK FOR MSG CONTINUITY
    938	002422	032764 	000100 	000012 		BIT	#NT.EOM,C.STS(R4)
    939	002430	001405 				BEQ	9$
    940					; * LAST MSG FRAGMENT,CAN'T CONTINUE
    941	002432					CALL	STOPLE			; FLUSH THE DEVICE INTERRUPTS
    942	002436	052765 	000004 	000024 		BIS	#LA.ADN,L.ASTS(R5)	; ABORT LINK WHEN DDM QUEUE IS EMPTY
    943
    944	002444				9$:	CALL	GBDQ			; EMPTIED BUF ON TOP
    945	002450	032700 	000100 			BIT	#NT.EOM,R0		; CHECK STATUS OF MSG DEQUEUED
    946	002454	001403 				BEQ	10$
    947	002456	016506 	000144 			MOV	L.DFSP(R5),SP		; RECOVER STACK POINTER
    948	002462					RETURN				;  SO WE CAN QUIT
    949
    950	002464	016504 	000072 		10$:	MOV	L.DLCQ(R5),R4		;  IS THERE A QUEUED ENTRY?
    951	002470	001010 				BNE	15$			; YES, SET UP POINTER AND COUNTER
    952	002472					DFHYBER	DWAKS			; WAIT TIL NEXT SEGMENT ARRIVES
    953	002510	000765 				BR	10$
    954
    955	002512	016465 	000014 	000106 	15$:	MOV	C.BUF(R4),L.DMAD(R5)	; GET ADDRESS DOUBLEWORD AS PTR
    956	002520	016465 	000016 	000110 		MOV	C.BUF+2(R4),L.DMAD+2(R5)
    957	002526	016465 	000020 	000112 		MOV	C.CNT(R4),L.DMBS(R5)	; GET BUFFER COUNT AS SIZE COUNTER
    958	002534	000711 				BR	GB			; TRY AGAIN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 24
GET AND PUT DATA BYTES

    960					; * EXTERNAL ENTRY TO FORCE DEQUEUE
    961	002536	005065 	000110 		GBDQ:	CLR	L.DMAD+2(R5)		; INDICATE "NO BUFFER IN USE"
    962	002542	005065 	000112 			CLR	L.DMBS(R5)
    963	002546					DEQ$	L.DLCQ			; DEQUEUE MSG JUST DONE
    964										; FOR FEATRS AND CONSYN THERE MUST BE
    965										; NO PHYS BUFFER IN USE AT THIS TIME
    966	002614	005765 	000122 			TST	L.PLBP+2(R5)		; CHECK FOR PHYSICAL BUF IN USE
    967	002620	001412 				BEQ	10$			; HAVE TO MAKE DO WITHOUT ONE
    968	002622	010446 				MOV	R4,-(SP)		; SAVE THE MSG BUF
    969	002624	016504 	000114 			MOV	L.PLBQ(R5),R4		; GET CURRENT PHYSICAL BUF
    970	002630	012664 	000032 			MOV	(SP)+,C.FLG2(R4)	; MARK IT AS LAST(AND TO RET MSG BUF)
    971	002634					PUSH	C.STS(R4)		; SAVE MSG STATUS
    972	002640					CALL	PBDQ			; SEND IT DOWN IMMEDIATELY
    973	002644	000404 				BR	20$
    974
    975
    976					; * NO PHYSICAL BUF TO ATTACH SOURCE BUF TO
    977					; * SO FAKE IT BY SENDING IT TO PRINTER, WHICH WILL IGNORE IT
    978	002646				10$:	PUSH	C.STS(R4)		; SAVE MSG STAUS
    979	002652					CALL	QDDM			; LET IT SHUFFLE THRU IN SEQUENCE
    980	002656				20$:	POP	R0			; RETURN MSG STATUS
    981	002660					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 25
GET AND PUT DATA BYTES

    983
    984					; * PUT BYTE TO PHYSICAL OUTPUT BUFFER
    985	002662	005365 	000124 		PB:	DEC	L.PLBS(R5)		; DOWN THE COUNTER
    986	002666	002410 				BLT	10$			; BUFFER FULL ALREADY
    987	002670					MAP	L.PLBP(R5)		; MAP IF NEED BE
    988	002676	110075 	000122 			MOVB	R0,@L.PLBP+2(R5)	; STASH BYTE IN PHYSICAL BUFFER
    989	002702	005265 	000122 			INC	L.PLBP+2(R5)		; UP THE POINTER
    990	002706					RETURN
    991
    992	002710	005765 	000122 		10$:	TST	L.PLBP+2(R5)		; PHYSICAL BUFFER IN PROCESS?
    993	002714	001404 				BEQ	20$			; NO, GO GET ONE
    994	002716	005065 	000124 			CLR	L.PLBS(R5)		; RESET CNT TO 0
    995	002722					CALL	PBDQ			; STUFF THE LP
    996
    997	002726				20$:	CALL	PBLOD			; SET UP A NEW BUFFER
    998	002732	000753 				BR	PB			; TRY AGAIN
    999
   1000
   1001					; * CHECK IF R0/CNT BYTES LEFT IN CURRENT BUFFER
   1002	002734	005765 	000122 		PBROOM:	TST	L.PLBP+2(R5)		; BUFFER IN USE ?
   1003	002740	001406 				BEQ	PBLOD			; NOPE - GO GET ONE
   1004	002742	020065 	000124 			CMP	R0,L.PLBS(R5)		; ROOM ?
   1005	002746	003001 				BGT	10$
   1006	002750					RETURN
   1007	002752				10$:	CALL	PBDQ			; NO ROOM - FLUSH CURRENT
   1008										;  AND GET NEW ONE
   1009
   1010					; * SET UP NEW BUFFER
   1011	002756	016504 	000114 		PBLOD:	MOV	L.PLBQ(R5),R4		; IS ONE ENQUEUED?
   1012	002762	001414 				BEQ	10$			; NO
   1013	002764					CALL	PBFINI			; BUT FIRST INIT IT FOR USE
   1014	002770	016465 	000014 	000120 		MOV	C.BUF(R4),L.PLBP(R5)	; SET NEW ADDRESS DOUBLEWORD
   1015	002776	016465 	000016 	000122 		MOV	C.BUF+2(R4),L.PLBP+2(R5)
   1016	003004	016465 	000020 	000124 		MOV	C.CNT(R4),L.PLBS(R5)	; SET BUFFER MAX SIZE
   1017	003012					RETURN
   1018
   1019	003014				10$:	DFHYBER	DWAKP			; SLEEP TIL A BUFFER MEANDERS BACK
   1020	003032	000751 				BR	PBLOD
   1021
   1022
   1023					; * EXTERNAL ENTRY TO FORCE TRANSMIT
   1024	003034				PBDQ:	DEQ$	L.PLBQ			; DEQUEUE THE PHYSICAL BUFFER
   1025	003102	166564 	000124 	000020 		SUB	L.PLBS(R5),C.CNT(R4)	; SUBTRACT UNUSED COUNT FROM BUFF SIZE
   1026	003110	005065 	000122 			CLR	L.PLBP+2(R5)		; FLUSH CURRENT BUFFER ALTOGETHER
   1027	003114	005065 	000124 			CLR	L.PLBS(R5)		; CLEAR CURRENT BUFFER SIZE
   1028	003120					CALLR	QDDM			; SEND PHYSICAL BUFFER DOWN AND START IT
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 26
PUT COMPRESSION PAIR TO PHYSICAL BUFFER

   1030						.SBTTL	PUT COMPRESSION PAIR TO PHYSICAL BUFFER
   1031
   1032					;+
   1033					; R0/CHARACTER TO REPEAT
   1034					; R2/REPETITION COUNT
   1035					;-
   1036
   1037	003124	022702 	000200 		PCP:	CMP	#128.,R2		; CAN ONLY DO 128 AT A PAIR
   1038	003130	002011 				BGE	10$			; OK
   1039	003132					PUSH	R2
   1040	003134	012702 	000200 			MOV	#128.,R2		; DO 128 1ST
   1041	003140					CALL	10$
   1042	003144					POP	R2
   1043	003146	162702 	000200 			SUB	#128.,R2		; WE DID SOME
   1044	003152	000764 				BR	PCP			; NOW DO THE REST
   1045
   1046	003154				10$:	PUSH	R0
   1047	003156	012700 	000002 			MOV	#2,R0			; CHECK FOR ROOM IN CURRENT BUFFER
   1048	003162					CALL	PBROOM			; GET RID OF THIS BUFFER IF NOT ENOUGH
   1049	003166					POP	R0
   1050
   1051	003170				20$:	PUSH	R0			; PUT NEG COUNT IN BUF 1ST
   1052	003172	010200 				MOV	R2,R0
   1053	003174	005400 				NEG	R0
   1054	003176					CALL	PB			; THIS CAN FAIL
   1055	003202					POP	R0			; NOW PUT CHAR IN BUF
   1056	003204					CALLR	PB
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 27
NURD FEATURES MESSAGE HANDLERS

   1058						.SBTTL	NURD FEATURES MESSAGE HANDLERS
   1059
   1060					;+
   1061					; FEATURE MSG FORMAT:
   1062					;   <SEQ NO.><NO. FEATURE SPECS><...FEATURE SPECS...>
   1063					;
   1064					; FEATURE SPEC FORMAT:
   1065					;   <FEATURE ID><FEATURE FLAGS><CLASS><RESPONSE>[<FEATURE DATA>]
   1066					;
   1067					; FEATURE DATA FORMAT:
   1068					;   <CNT><...DATA...>
   1069					;
   1070					; NOTE: INCOMING MSG HAS ONLY 1 FEATURE SPEC
   1071					;
   1072					; BUFFER HAS BEEN SET UP AND NURD TYPE AND FLAGS BYTES(1ST & 2ND BYTES)
   1073					;  HAVE BEEN EXTRACTED.
   1074					;
   1075					; R4/CCB AT TOP OF L.DLCQ
   1076					; R5/DLT
   1077					; KISAR6/ MAPPED TO DATA BUFFER
   1078					;-
   1079						.ENABL	LSB
   1080
   1081	003210	012700 	000002 		FEATRS:	MOV	#NM.FTR,R0		; BEGIN A REPLY
   1082	003214					CALL	MB			; INSERT NURD MSG TYPE
   1083	003220	005000 				CLR	R0
   1084	003222					CALL	MB			; INSERT MSG FLAGS
   1085	003226					CALL	GB			; GET SEQ NO.
   1086	003232	110065 	000077 			MOVB	R0,L.DMSQ(R5)
   1087	003236					CALL	MB			; SEND IT BACK
   1088	003242					CALL	GB			; GET NO. FEATURE SPECS
   1089	003246	005000 				CLR	R0			;  BUT IGNORE IT
   1090	003250	110065 	000103 			MOVB	R0,L.NFSP(R5)		; SAVE IT FOR SOMTHING
   1091	003254					CALL	MB			; STUFF IT IN REPLY
   1092	003260					CALL	GB			; GET FEATURE ID
   1093	003264	010002 				MOV	R0,R2
   1094	003266					CALL	GB			; GET FEATURE FLAGS
   1095	003272	010001 				MOV	R0,R1
   1096	003274					CALL	GB			; GET CLASS
   1097	003300	000301 				SWAB	R1
   1098	003302	050001 				BIS	R0,R1			; R1/FLAGS,,CLASS
   1099
   1100	003304					CALL	GB			; READ THE RESPONSE FIELD AND IGNORE IT
   1101
   1102	003310	105065 	000102 			CLRB	L.CAPN(R5)		; INIT INDEX INTO CAPABILITIES LIST
   1103	003314	122702 	000377 			CMPB	#FE.ALL,R2		; CHECK FOR ALLNESS
   1104	003320	001036 				BNE	30$			; SINGLE FEATURE
   1105	003322	005002 				CLR	R2			; INIT COMMON FID'S
   1106	003324	116565 	000206 	000102 		MOVB	L.CFET(R5),L.CAPN(R5)	; GET COUNT OF COMMON ENTRIES
   1107	003332	032701 	000400 			BIT	#NF.CMD*400,R1		; ALL FEATURES - CHECK READ/SET
   1108	003336	001403 				BEQ	10$			; READ - CONTINUE
   1109	003340	122701 	000002 			CMPB	#FC.SST,R1		; SET - CHECK SET TO STD
   1110	003344	001071 				BNE	FERERR			; NO - ILLEGAL COMBINATION
   1111
   1112	003346	105202 			10$:	INCB	R2			; ADVANCE THRU LIST
   1113	003350	100410 				BMI	15$			; GRUBBLING THRU DEVICE FEATURES
   1114	003352	120265 	000102 			CMPB	R2,L.CAPN(R5)		; CHECK RANGE
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 27-1
NURD FEATURES MESSAGE HANDLERS

   1115	003356	101413 				BLOS	20$			; OK
   1116	003360	116565 	000220 	000102 		MOVB	L.DFET(R5),L.CAPN(R5)	; INIT FOR DEVICE SPECFIC FEATURES
   1117	003366	012702 	000201 			MOV	#201,R2
   1118	003372	010200 			15$:	MOV	R2,R0			; DEVICE FEATURE - HACK OFF SIGN
   1119	003374	042700 	177600 			BIC	#^C177,R0
   1120	003400	120065 	000102 			CMPB	R0,L.CAPN(R5)		; CHECK RANGE
   1121	003404	101022 				BHI	70$			; DONE
   1122	003406				20$:	CALL	FEFND			; LOOK IT UP
   1123	003412	103004 				BCC	40$			; SUPPORTED FEATURE
   1124	003414	000754 				BR	10$			; TRY NEXT ONE
   1125
   1126	003416				30$:	CALL	FEFND			; LOOK UP FEATURE
   1127	003422	103431 				BCS	FERUSF			; UNSUPPORTED FEATURE
   1128										; AT THIS POINT:
   1129										;   R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
   1130										;   R2 HAS THE FEATURE ID (BYTE)
   1131										;   R3 POINTS TO THE FEATURE STATUS BYTE
   1132										;   R5 STILL POINTS TO THE DEVICE LINE TBL
   1133										;   L.DMSQ\SEQ NO.
   1134										;   L.NFSP\NO. SPECS
   1135	003424	132713 	000040 		40$:	BITB	#FB.CP,(R3)		; CHECK FOR CHANGE PENDING
   1136	003430	001042 				BNE	FERCPN			; CAN'T READ OR SET IF SO
   1137	003432	032701 	000400 			BIT	#NF.CMD*400,R1		; FEATURE READ OR FEATURE SET?
   1138	003436	001467 				BEQ	FREAD			; READ - GO PROCESS FEATURE READ
   1139	003440					CALLR	FSET			; SET - GO PROCESS IN FEATURE SET
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 28
NURD FEATURES MESSAGE HANDLERS

   1141	003444	105765 	000102 		FEACON:	TSTB	L.CAPN(R5)		; CHECK FOR ALLNESS
   1142	003450	001336 				BNE	10$			; YES
   1143
   1144	003452	016504 	000130 		70$:	MOV	L.MSGQ(R5),R4		; GET BEG OF MSG
   1145	003456					MAP	C.BUF(R4)
   1146	003464	016400 	000016 			MOV	C.BUF+2(R4),R0		; GET THE PTR
   1147	003470	116560 	000103 	000003 		MOVB	L.NFSP(R5),N.NSPC(R0)	; SET IN THE FINAL SPEC COUNT
   1148	003476					CALL	GBDQ			; RETURN ORGINAL MSG TO NRD
   1149	003502					CALLR	MBSND			; SEND OFF COMPLETED MSG
   1150
   1151	003506				FERUSF:	PUSH	#FR.USF
   1152	003512	000421 				BR	100$
   1153	003514				FERBCL:	PUSH	#FR.BCL
   1154	003520	000416 				BR	100$
   1155	003522				FERNST:	PUSH	#FR.NST
   1156	003526	000413 				BR	100$
   1157	003530				FERERR:	PUSH	#FR.ERR
   1158	003534	000410 				BR	100$
   1159	003536				FERCPN:	PUSH	#FR.CPN
   1160	003542	000405 				BR	100$
   1161	003544				FERNEB:	PUSH	#FR.NEB
   1162	003550	000402 				BR	100$
   1163	003552				FERDNP:	PUSH	#FR.DNP
   1164	003556	010200 			100$:	MOV	R2,R0			; INSERT <FID><FLAGS><CLASS><ERROR>
   1165	003560					CALL	MB			; INSERT FID
   1166	003564	010100 				MOV	R1,R0
   1167	003566	000300 				SWAB	R0
   1168	003570					CALL	MB			; INSERT FLAGS
   1169	003574	010100 				MOV	R1,R0
   1170	003576					CALL	MB			; INSERT CLASS
   1171	003602					POP	R0			; GET ERROR CODE
   1172	003604					CALL	MB			; INSERT RESP
   1173	003610	105265 	000103 			INCB	L.NFSP(R5)		; COUNT THE SPEC
   1174	003614	000713 				BR	FEACON
   1175
   1176						.DSABL	LSB
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 29
FEATURES READ

   1178						.SBTTL	FEATURES READ
   1179
   1180					;+
   1181					; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
   1182					; R2 HAS THE FEATURE ID (BYTE)
   1183					; R3 POINTS TO THE FEATURE STATUS BYTE
   1184					; R5 STILL POINTS TO THE DEVICE LINE TBL
   1185					;
   1186					; REPLY HAS BEEN FORMATTED THRU <NO. SPECS>
   1187					; INSERT IN MSG:
   1188					;	<FID><FLGS><CLASS><RESP><DATA>
   1189					;-
   1190
   1191	003616	010200 			FREAD:	MOV	R2,R0
   1192	003620					CALL	MB			; INSERT FID
   1193
   1194	003624	010100 				MOV	R1,R0			; GET READ/SET BIT
   1195	003626	000300 				SWAB	R0
   1196	003630	042700 	177776 			BIC	#^C<NF.CMD>,R0		; NOW ISOLATED
   1197	003634	132713 	000020 			BITB	#FB.SST,(R3)		; FEATURE SET TO STD?
   1198	003640	001402 				BEQ	10$			; NO
   1199	003642	052700 	000002 			BIS	#NF.STD,R0		; SET TO STD
   1200	003646				10$:	CALL	MB			; INSERT FLAGS
   1201
   1202	003652					CALL	GTCLS			; GET THE CLASS IN R1
   1203	003656	010100 				MOV	R1,R0
   1204	003660					CALL	MB			; INSERT CLASS
   1205
   1206	003664	005000 				CLR	R0
   1207	003666					CALL	MB			; RESP - NO ERRORS
   1208
   1209	003672	105701 				TSTB	R1			; CHECK CLASS FOR LENGTH OF DATA
   1210	003674	001406 				BEQ	20$			; 1 BIT
   1211										; FEATURE DEPENDENT
   1212										; EXPLICITLY LOOK FOR THOSE MORE THAN 1 BYTE
   1213	003676	132713 	000006 			BITB	#FB.WRD!FB.STR,(R3)
   1214	003702	001012 				BNE	50$			; YES
   1215										; IF NOT MULTIPLE BYTE DATA, THEN 1 BYTE
   1216	003704	005200 				INC	R0			; COUNT = 1
   1217	003706					CALL	MB			; INSERT COUNT
   1218
   1219	003712	116300 	000001 		20$:	MOVB	1(R3),R0		; COPY FEATURE TABLE DATA ENTRY
   1220	003716				30$:	CALL	MB			; INSERT DATA
   1221
   1222	003722	105265 	000103 		40$:	INCB	L.NFSP(R5)		; COUNT THE SPEC
   1223	003726	000646 				BR	FEACON			; CONTINUE FEATURE HACKING
   1224
   1225	003730	132713 	000004 		50$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   1226	003734	001015 				BNE	60$			; STRING
   1227										; WORD VALUE - F.FCV = DLT OFFSET TO WORD
   1228	003736	012700 	000002 			MOV	#2,R0			; 2 BYTE VALUE
   1229	003742					CALL	MB			; INSERT CNT
   1230
   1231	003746	005000 				CLR	R0
   1232	003750	156300 	000001 			BISB	F.FCV(R3),R0
   1233	003754	060500 				ADD	R5,R0
   1234	003756	011000 				MOV	(R0),R0			; YES, READ THE SETTING FROM THE DLT
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 29-1
FEATURES READ

   1235	003760					CALL	MB			; INSERT LO BYTE
   1236
   1237	003764	000300 				SWAB	R0
   1238	003766	000753 				BR	30$			; INSERT HI BYTE
   1239
   1240					; * STRING - F.FCV HAS THE LENGTH,  CURRENT VALUE BEGINS AT F.FCV+1
   1241	003770	005203 			60$:	INC	R3			; THIS DEPENDS ON F.FCV=1
   1242	003772	112300 				MOVB	(R3)+,R0		; GET THE LENGTH
   1243	003774					CALL	MB			; INSERT IN MSG
   1244	004000	010004 				MOV	R0,R4			; SAVE IT
   1245	004002	112300 			70$:	MOVB	(R3)+,R0		; INSERT THE STRING IN MSG
   1246	004004					CALL	MB
   1247	004010	105304 				DECB	R4			; COUNT THE BYTE
   1248	004012	001373 				BNE	70$
   1249	004014	000742 				BR	40$
   1250
   1251
   1252
   1253	004016	105001 			GTCLS:	CLRB	R1			; SET FEATURE CLASS IN R1(LO)
   1254	004020	132713 	000001 			BITB	#FB.CL1,(R3)		; CHECK CLASS 1
   1255	004024	001402 				BEQ	10$			; CLASS 0
   1256	004026	152701 	000001 			BISB	#FC.CL1,R1		; SET CLASS 1
   1257	004032				10$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 30
FEATURES SET

   1259						.SBTTL	FEATURES SET
   1260
   1261					;+
   1262					; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
   1263					; R2 HAS THE FEATURE ID (BYTE)
   1264					; R3 POINTS TO THE FEATURE STATUS BYTE
   1265					; R5 STILL POINTS TO THE DEVICE LINE TBL
   1266					; REPLY HAS BEEN FORMATTED THRU <NO. SPECS=1>
   1267					;-
   1268
   1269	004034	122701 	000002 		FSET:	CMPB	#FC.SST,R1		; CHECK STDNESS
   1270	004040	001502 				BEQ	80$			; STD RESULT
   1271	004042	132713 	000100 			BITB	#FB.CA,(R3)		; REAL SET - CHECK IF SETABLE
   1272	004046	001630 				BEQ	FERERR			; NO
   1273	004050	111300 				MOVB	(R3),R0			; FEATURE IS SETTABE
   1274	004052	074100 				XOR	R1,R0			; CHECK CLASS SPEC
   1275	004054	042700 	177776 			BIC	#^C<FB.CL1>,R0		; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
   1276	004060	001215 				BNE	FERBCL			; RESULT SHOULD BE 0
   1277	004062	122701 	000001 			CMPB	#FC.CL1,R1		; CHECK DATA CLASS
   1278	004066	001010 				BNE	10$			; CLASS 0
   1279					; * CLASS 1 - FEATURE DEPENDENT
   1280	004070					CALL	GB			; FEATURE DEPENDENT DATA - GET THE LENGTH
   1281	004074	132713 	000006 			BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE DATA
   1282	004100	001012 				BNE	30$			; GO DO IT
   1283	004102	122700 	000001 			CMPB	#1,R0			; ONE BYTER ?
   1284	004106	001210 				BNE	FERERR			; NO
   1285	004110				10$:	CALL	GB			; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
   1286	004114	110063 	000001 			MOVB	R0,1(R3)		; SET FEATURE CURRENT VALUE
   1287	004120	142713 	000020 		20$:	BICB	#FB.SST,(R3)		; NOT SET TO STD
   1288	004124	000634 				BR	FREAD			; NOW READ THE FEATURE
   1289
   1290	004126	132713 	000004 		30$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   1291	004132	001023 				BNE	40$			; STRING
   1292										; WORD VALUE
   1293	004134	122700 	000002 			CMPB	#2,R0			; 2 BYTE LENGTH
   1294	004140	001025 				BNE	50$			; SCREWED IT UP
   1295	004142					CALL	GB			; GET THE PAGE LIMIT
   1296	004146	110065 	000126 			MOVB	R0,L.PBRC(R5)		; HIDE THE LO PART
   1297	004152					CALL	GB			; GET THE HI PART
   1298	004156	000300 				SWAB	R0
   1299	004160	156500 	000126 			BISB	L.PBRC(R5),R0		; R0/NEW WORD VALUE
   1300	004164	010046 				MOV	R0,-(SP)
   1301	004166	005000 				CLR	R0
   1302	004170	156300 	000001 			BISB	F.FCV(R3),R0
   1303	004174	060500 				ADD	R5,R0
   1304	004176	012610 				MOV	(SP)+,(R0)		; SET THE NEW VALUE IN WORD
   1305	004200	000747 				BR	20$
   1306
   1307					; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   1308	004202				40$:	PUSH	R3			; SAVE THE FEATURE BLOCK PTR
   1309	004204	005203 				INC	R3			; THIS DEPENDS ON F.FCV=1
   1310	004206	120023 				CMPB	R0,(R3)+		; CHECK THE LENGTH
   1311	004210	001403 				BEQ	60$			; OK
   1312	004212					POP	R3			; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
   1313	004214				50$:	CALLR	FERERR			; AND REPORT THE ERROR
   1314	004220				60$:	PUSH	R1			; SAVE THE VARIABLES
   1315	004222	010001 				MOV	R0,R1			; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 30-1
FEATURES SET

   1316	004224				70$:	CALL	GB			; XFER THE NEW VALUE TO THE CURRENT VALUE
   1317	004230	110023 				MOVB	R0,(R3)+		; STUFF THE BYTE
   1318	004232					SOB	R1,70$			; AND COUNT IT
   1319	004236					POP	<R1,R3>
   1320	004242					CALLR	FREAD			; NOW READ THE FEATURE
   1321
   1322	004246				80$:	CALL	SETSTD			; SET FEATURE TO STD
   1323	004252	103002 				BCC	90$
   1324	004254					CALLR	FERNST			; NO STD TO SET
   1325	004260				90$:	CALLR	FEACON			; DON'T READ IT
   1326
   1327
   1328					; * SET FEATURE TO ITS STD VALUE
   1329					; * R3/PTR TO FEATURE BLOCK IN DLT
   1330					; * R5/PTR TO DLT
   1331	004264	132713 	000010 		SETSTD:	BITB	#FB.STE,(R3)		; SEE IF IT HAS ONE
   1332	004270	001002 				BNE	10$			; YES
   1333	004272	000261 				SEC				; NO STD TO SET
   1334	004274					RETURN
   1335
   1336	004276	132713 	000006 		10$:	BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE VALUES
   1337	004302	001006 				BNE	20$			; YES
   1338										; SINGLE BYTE VALUE
   1339	004304	116363 	000002 	000001 		MOVB	F.FSV(R3),F.FCV(R3)	; SET CURRENT VALUE = STD VALUE
   1340	004312	152713 	000020 			BISB	#FB.SST,(R3)		; MARK FEATURE AS SET TO STD
   1341	004316	000415 				BR	30$
   1342
   1343					; * MULTIPLE BYTE VALUE
   1344	004320	132713 	000004 		20$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   1345	004324	001014 				BNE	40$			; STRING
   1346	004326					PUSH	R5			; WORD VALUE
   1347	004330	005046 				CLR	-(SP)
   1348	004332	116316 	000001 			MOVB	F.FCV(R3),(SP)
   1349	004336	062605 				ADD	(SP)+,R5		; R5 /PTR TO CURRENT VALUE
   1350	004340	116325 	000002 			MOVB	F.FSV(R3),(R5)+		; XFER LO BYTE
   1351	004344	116315 	000003 			MOVB	F.FSV+1(R3),(R5)	; XFER HI BYTE
   1352	004350					POP	R5
   1353
   1354	004352	000241 			30$:	CLC
   1355	004354					RETURN
   1356
   1357	004356				40$:	PUSH	<R0,R1,R3>		; STRING - F.FCV HAS THE LENGTH
   1358										;   CURRENT VALUE BEGINS AT F.FCV+1
   1359											; STD VALUE BEGINS AT F.FCV+1+(F.FCV)
   1360	004364	005203 				INC	R3			; DEPENDS ON F.FCV=1
   1361	004366	005000 				CLR	R0
   1362	004370	152300 				BISB	(R3)+,R0		; GET THE COUNT
   1363	004372	010001 				MOV	R0,R1
   1364	004374	060301 				ADD	R3,R1			; R0/COUNT
   1365										; R1/SOURCE ADDRESS
   1366										; R3/DESTINATION ADDRESS
   1367	004376	112123 			45$:	MOVB	(R1)+,(R3)+		; XFER THE STD VALUE
   1368	004400					SOB	R0,45$			; COUNT IT
   1369	004404					POP	<R3,R1,R0>
   1370	004412	000241 				CLC
   1371	004414					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 31
NURD MESSAGE BUILDER

   1373						.SBTTL	NURD MESSAGE BUILDER
   1374
   1375					; R0/BYTE TO STUFF IN BUFFER
   1376					; R5/DLT
   1377	004416	005365 	000140 		MB:	DEC	L.MSGS(R5)		; COUNT IT
   1378	004422	002410 				BLT	20$			; BUFFER ALREADY FULL
   1379	004424					MAP	L.MSGA(R5)		; MAP TO BUFFER
   1380	004432	110075 	000136 			MOVB	R0,@L.MSGA+2(R5)	; INSERT CHAR
   1381	004436	005265 	000136 			INC	L.MSGA+2(R5)		; ADVANCE PTR
   1382	004442					RETURN
   1383
   1384	004444	005065 	000140 		20$:	CLR	L.MSGS(R5)		; RESET THE COUNT
   1385	004450				25$:	PUSH	R4
   1386	004452					CALL	GETMBF			; GET A BUFFER
   1387	004456	103431 				BCS	30$			; SCREW
   1388	004460	005064 	000012 			CLR	C.STS(R4)		; INIT THE STATUS
   1389	004464	016465 	000014 	000134 		MOV	C.BUF(R4),L.MSGA(R5)	; MAKE IT THE CURRENT BUFFER
   1390	004472	016465 	000016 	000136 		MOV	C.BUF+2(R4),L.MSGA+2(R5)
   1391	004500	016465 	000020 	000140 		MOV	C.CNT(R4),L.MSGS(R5)
   1392	004506					ENQ$	L.MSGQ			; ADD IT TO END OF LIST
   1393	004536					POP	R4
   1394	004540	000726 				BR	MB			; NOW STUFF THE CHAR
   1395
   1396	004542				30$:	POP	R4
   1397	004544					DFHYBER	DWAKT			; WAIT A SEC AND TRY AGAIN
   1398	004562	000732 				BR	25$
   1399
   1400					; * SEND A BUILT MESSAGE TO NURD
   1401	004564	016504 	000130 		MBSND:	MOV	L.MSGQ(R5),R4		; GET THE FIRST BUFFER IN MSG
   1402	004570	001456 				BEQ	20$			; NULL MSG
   1403	004572	052764 	000040 	000012 		BIS	#NT.BOM,C.STS(R4)	; MARK IT AS BEG OF MSG
   1404	004600	016504 	000132 			MOV	L.MSGQ+2(R5),R4		; GET THE LAST BUFFER IN MSG
   1405	004604	052764 	000100 	000012 		BIS	#NT.EOM,C.STS(R4)	; MARK IT AS THE END OF MSG
   1406	004612	166564 	000140 	000020 		SUB	L.MSGS(R5),C.CNT(R4)	; SET LAST BUFFER COUNT TO CORRECT AMOUNT
   1407
   1408	004620				10$:	DEQ$	L.MSGQ,20$		; DEQUEUE AND SEND ALL  BUFFERS
   1409	004674	112764 	000002 	000011 		MOVB	#NT$DAT,C.MOD(R4)	; ADDRESS IT PROPERLY
   1410	004702					$TOBDM	RC,C.STS(R4)		; C.STS ALREADY CORRECT
   1411	004720	005265 	000050 			INC	L.IOCN(R5)		; COUNT THE IO
   1412	004724	000735 				BR	10$
   1413
   1414	004726	005065 	000140 		20$:	CLR	L.MSGS(R5)		; CLEAN UP DEBRIS
   1415	004732					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 32
FEATURE FINDER

   1417						.SBTTL	FEATURE FINDER
   1418
   1419					; FEFND LOOKS FOR A FEATURE WITH FID IN R2
   1420					; AND RETURNS PTR TO FEATURE BLOCK IN R3 IF SUCCESSFUL
   1421					; NORMAL CARRY FLAG CONDITION FOR SUCCESS OR FAILURE
   1422
   1423	004734	012703 	000206 		FEFND:	MOV	#L.CFET,R3		; TRY COMMON FEATURE 1ST
   1424	004740					PUSH	R2			; SAVE FID CAUSE IT WILL BE MANGLED
   1425	004742	105702 				TSTB	R2			; CHECK IF DEVICE SPECIFIC FTR
   1426	004744	100004 				BPL	10$			; COMMON, SKIP
   1427	004746	012703 	000220 			MOV	#L.DFET,R3		; DEVICE SPECIFIC, GET POINTER
   1428	004752	042702 	177600 			BIC	#177600,R2		; TRUNCATE TO JUST OFFSET ABOVE 128
   1429
   1430	004756	001414 			10$:	BEQ	20$			; ZERO IS AN ILLEGAL FEATURE CODE
   1431	004760	060503 				ADD	R5,R3			; R3 -> FEATURE LIST IN DLT
   1432	004762	020213 				CMP	R2,(R3)			; CHECK ON ID RANGE
   1433	004764	103011 				BHIS	20$			; SKIP IF OUT OF RANGE
   1434										; R3 IS POINTING TO THE BASE OF THE
   1435										;   FEATURES LIST, WHICH HOLDS THE HIGHEST
   1436										;  STORED FEATURE CODE
   1437	004766	060203 				ADD	R2,R3			; ADD THE FID TO POINT TO ADDRESS OF FEATURE BLOCK
   1438	004770	111303 				MOVB	(R3),R3			; LIST ENTRY IS DLT OFFSET TO FEATURE BLOCK
   1439	004772	001406 				BEQ	20$			; UNSUPPORTED FEATURE
   1440	004774	042703 	177400 			BIC	#^C377,R3		; FLUSH SIGN EXTENSION
   1441	005000	060503 				ADD	R5,R3			; R3 -> FEATURE BLOCK
   1442	005002					POP	R2
   1443	005004	000241 				CLC
   1444	005006					RETURN
   1445
   1446	005010				20$:	POP	R2			; UNSUPPORTED FEATURE
   1447	005012	000261 				SEC
   1448	005014					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 33
NURD CONTROL MESSAGE HANDLER

   1450						.SBTTL	NURD CONTROL MESSAGE HANDLER
   1451
   1452					;+
   1453					; THIS ROUTINE IS CALLED FROM LENURD - REFER TO THE CALLING
   1454					; POINT IN THAT ROUTINE FOR THE REQUIRED REGISTER SETUP
   1455					;
   1456					; R0/BUFFER PTR: ->NURD MSG TYPE
   1457					; R4/CCB
   1458					; R5/DLT
   1459					; KISAR6/MAPPED TO BUFFER
   1460					;
   1461					; CONTROL MSG FORMAT:	<SEQ NO.><COMMAND><RESULT>
   1462					;-
   1463
   1464	005016	122764 	000004 	000011 	CONTRL:	CMPB	#NT$INT,C.MOD(R4)	; CHECK FOR INTERRUPT MSG
   1465	005024	001402 				BEQ	CONINT			; THEY ARE PROCESSED NOW
   1466	005026					CALLR	QDLC			; OTHERS ARE SYNCH'D WITH DATA STREAM
   1467
   1468	005032	022764 	000004 	000020 	CONINT:	CMP	#N.CCMD+1,C.CNT(R4)	; CHECK TO SEE IF ENOUGH SENT
   1469	005040	003123 				BGT	BADCON			; NOT EVEN 4 LOUSY BYTES!
   1470	005042	116001 	000003 			MOVB	N.CCMD(R0),R1		; GET CONTROL COMMAND BYTE
   1471	005046	003520 				BLE	BADCON			; SKIP OUT ON ILLEGAL CODE
   1472	005050	022701 	000012 			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   1473	005054	101515 				BLOS	BADCON			; OUT OF RANGE, SKIP OUT
   1474	005056	006301 				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   1475										; DO THE CONTROL FUNCTION IMMEDIATELY
   1476										;   AND WORRY ABOUT RESPONSE LATER
   1477	005060					ENQ$	L.CMSQ			; QUEUE THE MSG CCB TIL RESOURCES ARE CHECKED
   1478	005110					CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   1479										;   CALLABLE ROUTINES:
   1480										; 	ABRTEF - INTERRUPT
   1481										; 	ABRTAL - INTERRUPT
   1482										; 	ABRTCL
   1483										; 	SNDSTS - SPECIAL RESULT
   1484										; 	DUMP
   1485										; 	PAUSE - INTERRUPT
   1486										; 	RESUME - INTERRUPT
   1487										; 	SNDCAP - SPECIAL RESULT
   1488										;
   1489										; RETURN WITH R0/RESULT CODE
   1490
   1491					; * RESOURCE ERROR RETRY ENTRY
   1492	005114				RECON:	CALL	GETMBF			; GET A RESPONSE BUFFER
   1493	005120	103003 				BCC	10$			; OK
   1494	005122	105265 	000060 			INCB	L.RECO(R5)
   1495	005126					RETURN
   1496
   1497	005130				10$:	PUSH	R4			; SAVE THE RESPONSE CCB
   1498
   1499					; * RETURN CCB WITH COMPLETION
   1500	005132					DEQ$	L.CMSQ			; GET THE MSG CCB BACK
   1501	005200					MAP	C.BUF(R4)		; R0/RESULT
   1502	005206	016401 	000016 			MOV	C.BUF+2(R4),R1
   1503	005212	116102 	000003 			MOVB	N.CCMD(R1),R2		; R2/COMMAND
   1504	005216	116101 	000002 			MOVB	N.CSEQ(R1),R1		; R1/SEQ NO. OF CONTROL MSG
   1505	005222					CALL	NRDACK			; ACK THE CONTROL MSG
   1506	005226					POP	R4			; GET THE RESPONSE CCB BACK
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 33-1
NURD CONTROL MESSAGE HANDLER

   1507	005230					MAP	C.BUF(R4)		; MAP TO THE BUFFER
   1508	005236	016403 	000016 			MOV	C.BUF+2(R4),R3		; GET BUF PTR
   1509	005242	112723 	000003 			MOVB	#NM.CTL,(R3)+		; FORMAT A NURD CONTROL MSG
   1510	005246	105023 				CLRB	(R3)+			; NO MSG FLAGS
   1511	005250	110123 				MOVB	R1,(R3)+		; SEQ NO.
   1512	005252	110223 				MOVB	R2,(R3)+		; COMMAND
   1513	005254	110013 				MOVB	R0,(R3)			; RESULT
   1514	005256	012764 	000005 	000020 		MOV	#N.CRES+1,C.CNT(R4)	; SET THE BUFFER COUNT
   1515	005264					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND IT!
   1516	005302	005265 	000050 			INC	L.IOCN(R5)		; COUNT THE IO
   1517	005306					RETURN
   1518
   1519
   1520	005310	012764 	100202 	000012 	BADCON:	MOV	#LS.REJ,C.STS(R4)	; REJECT(?) THIS ONE
   1521	005316					CALL	NRDRET			; ACK THE CRUFTY MSG
   1522	005322					CALL	STOPLE			; FLUSH THE DEVICE INTERRUPTS
   1523	005326	052765 	000004 	000024 		BIS	#LA.ADN,L.ASTS(R5)	; ABORT THE LINK WHEN CURRENT PRINT Q DONE
   1524	005334					CALLR	STRTLE			; TURN ON PRINTER SO IT CAN DIE
   1525
   1526
   1527					; * CONTROL DISPATCH TABLE
   1528	005340	005310'			CTLDSP:	.WORD	BADCON		;  0 - CODE ZERO IS RESERVED
   1529	005342	006250'				.WORD	ABRTEF		;  1 - ABORT TO END OF FILE
   1530	005344	006256'				.WORD	ABRTAL		;  2 - ABORT ALL
   1531	005346	006330'				.WORD	ABRTCL		;  3 - ABORT CLEAR
   1532	005350	005544'				.WORD	SNDSTS		;  4 - STATUS REQUESTED, SEND ATTENTION
   1533	005352	006046'				.WORD	DUMP		;  5 - DUMP OUTPUT BUFFERS
   1534	005354	006076'				.WORD	PAUSE		;  6 - PAUSE
   1535	005356	006154'				.WORD	RESUME		;  7 - RESUME FROM ERROR OR PAUSE
   1536	005360	005310'				.WORD	BADCON		;  8 - UNDEFINED
   1537	005362	006360'				.WORD	CAPREQ		;  9 - SEND CAPABILITIES MESSAGE
   1538		000012 			  CTLOTR = <. - CTLDSP>/2
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 34
NON-INTERRUPT CONTROL MESSAGE PROCESSING

   1540						.SBTTL	NON-INTERRUPT CONTROL MESSAGE PROCESSING
   1541
   1542					; * CONSYN CALLED FROM QTODLC
   1543
   1544					; * PROCESS A NON-INTERRUPT CONTROL MESSAGE
   1545	005364				CONSYN:	CALL	GB			; GET SEQ NO.
   1546	005370	110065 	000077 			MOVB	R0,L.DMSQ(R5)		; SAVE IT FOR RESPONSE
   1547	005374					CALL	GB			; GET COMMAND
   1548	005400	010001 				MOV	R0,R1
   1549	005402	003451 				BLE	50$			; SKIP OUT ON ILLEGAL CODE
   1550	005404	022701 	000012 			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   1551	005410	101446 				BLOS	50$			; OUT OF RANGE, SKIP OUT
   1552	005412					PUSH	R1			; SAVE COMMAND CODE FOR RESPONSE
   1553	005414	006301 				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   1554										; DO THE CONTROL FUNCTION IMMEDIATELY
   1555										;   AND WORRY ABOUT RESPONSE LATER
   1556	005416					CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   1557										;   CALLABLE ROUTINES:
   1558										; 	ABRTEF - INTERRUPT
   1559										; 	ABRTAL - INTERRUPT
   1560										; 	ABRTCL
   1561										; 	SNDSTS - SPECIAL RESULT
   1562										; 	DUMP
   1563										; 	PAUSE - INTERRUPT
   1564										; 	RESUME - INTERRUPT
   1565										; 	SNDCAP - SPECIAL RESULT
   1566										;
   1567										; RETURN WITH R0/RESULT CODE
   1568	005422					POP	R1			; GET COMMAND CODE BACK
   1569	005424					PUSH	R0			; SAVE RESPONSE CODE
   1570	005426					CALL	GBDQ			; ACK THE MSG
   1571	005432	012700 	000003 			MOV	#NM.CTL,R0		; CONSTRUCT A CONTROL MSG
   1572	005436					CALL	MB			; CONTROL CODE
   1573	005442	005000 				CLR	R0
   1574	005444					CALL	MB			; NULL MSG FLAGS
   1575	005450	116500 	000077 			MOVB	L.DMSQ(R5),R0
   1576	005454					CALL	MB			; SEQ NO. OF ORIGINAL COMMAND
   1577	005460	010100 				MOV	R1,R0
   1578	005462					CALL	MB			; COMMAND
   1579	005466					POP	R0
   1580	005470					CALL	MB			; RESPONSE CODE
   1581	005474					CALL	MBSND			; SEND THE RESPONSE
   1582	005500	105765 	000061 			TSTB	L.RATT(R5)		; CHECK FOR OTHER MESSAGES TO GOE OUT
   1583	005504	001402 				BEQ	20$			; NO ATTENTION MSGS
   1584	005506					CALL	SNDATT			; PENDING ATTENTION MSG
   1585
   1586	005512	105765 	000062 		20$:	TSTB	L.CAPP(R5)		; TRY CAPABILITIES MSG
   1587	005516	001001 				BNE	30$
   1588	005520					RETURN
   1589	005522				30$:	CALLR	SNDCAP			; PENDING CAPABILITIES MSG
   1590
   1591	005526				50$:	CALL	STOPLE			; FLUSH THE DEVICE INTERRUPTS
   1592	005532	052765 	000004 	000024 		BIS	#LA.ADN,L.ASTS(R5)	; ABORT THE LINK WHEN CURRENT PRINT Q DONE
   1593	005540					CALLR	GBDQ			; ACK THE MSG AND WAIT FOR DEATH
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 35
CONTROL - REQUEST STATUS

   1595						.SBTTL	CONTROL - REQUEST STATUS
   1596
   1597					; * ENTRY FROM CONTRL (ATTENTION REQUESTED)
   1598	005544	005000 			SNDSTS:	CLR	R0			; SET RESULT(NR.ATT) FOR CNTROL RESPONSE
   1599	005546	105765 	000061 			TSTB	L.RATT(R5)		; CHECK ATTENTION ALREADY PENDING
   1600	005552	001003 				BNE	10$			; DON'T MUNG ORIGNAL REASON
   1601	005554	112765 	000003 	000061 		MOVB	#N.ARQS,L.RATT(R5)	; SET ATTENTION PENDING FLAG(REASON = REQUESTED)
   1602	005562				10$:	RETURN
   1603
   1604
   1605						.SBTTL	SEND ATTENTION MESSAGE
   1606
   1607					;+
   1608					; THIS ROUTINE ALLOCATES AN SDB AND BUILDS AN ATTENTION
   1609					; MESSAGE USING THE REASON CODE
   1610					; FOUND IN L.RATT OF THE DLT.  IF FOR SOME REASON (LIKE
   1611					; NO CCB'S) THE MESSAGE CANNOT BE BUILT, THE RATT CODE
   1612					; STAYS AROUND FOR THE NEXT ATTEMPT.
   1613					;-
   1614
   1615	005564				SNDATT:	PUSH	<R0,R1,R2,R3,R4>	; MAGNANIMOUSLY PRESERVE THE REGISTERS
   1616	005576	116502 	000061 			MOVB	L.RATT(R5),R2		; GET EXCUSE CODE FOR ATTENTION MSG
   1617	005602	001513 				BEQ	110$			; NO ATTENTION IS PENDING, LEAVE
   1618										; BUILD AND SEND AN ATTENTION MESSAGE
   1619	005604					CALL	GETMBF			; GET A MESSAGE BUFFER
   1620	005610	103510 				BCS	110$			; FAILED, EXIT - WE'LL BE BACK
   1621	005612	016401 	000016 			MOV	C.BUF+2(R4),R1		; GET POINTER TO START OF BUFFER
   1622	005616	112721 	000001 			MOVB	#NM.ATT,(R1)+		; LOAD MSG TYPE TO BUFFER
   1623	005622	105021 				CLRB	(R1)+			; CLEAR NURD MSG FLGS
   1624	005624	116521 	000077 			MOVB	L.DMSQ(R5),(R1)+	; STORE LAST GOOD SEQ NUMBER IN ATTENTION
   1625	005630	110221 				MOVB	R2,(R1)+		; LOAD ATTENTION CODE
   1626					; * BUILD FLAGS FIELD
   1627	005632	005002 				CLR	R2			; CLEAR FLAGS ACCUMULATOR
   1628	005634	016500 	000024 			MOV	L.ASTS(R5),R0		; GET DEVICE STATUS
   1629
   1630	005640	032700 	000004 			BIT	#LA.ADN,R0		; ABORT WHEN DONE ?
   1631	005644	001402 				BEQ	10$
   1632	005646	052702 	000001 			BIS	#NA.FAT,R2		; SOME FATAL ERROR - USUALLY USER'S
   1633
   1634	005652	032700 	000200 		10$:	BIT	#LA.ERR,R0		; PRINTER ERROR ON?
   1635	005656	001402 				BEQ	11$			; NO
   1636	005660	052702 	000002 			BIS	#NA.OFL,R2		; YES, NOTE OFFLINE
   1637
   1638	005664	032700 	000002 		11$:	BIT	#LA.PAU,R0		; PAUSED?
   1639	005670	001402 				BEQ	20$			; NO
   1640	005672	052702 	000004 			BIS	#NA.PAU,R2		; YES
   1641
   1642	005676	052702 	000200 		20$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
   1643	005702	110221 				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 1 FLAGS
   1644	005704	005002 				CLR	R2			; CLEAR FOR BYTE 2 FLAGS
   1645	005706	032700 	004000 			BIT	#LA.TMO,R0		; HUNG?
   1646	005712	001402 				BEQ	30$			; NO
   1647	005714	052702 	000004 			BIS	#NA.DTO,R2		; YES
   1648
   1649	005720	052702 	000200 		30$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
   1650	005724	110221 				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 2
   1651	005726	005002 				CLR	R2			; CLEAR FOR BYTE 3 FLAGS
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 35-1
SEND ATTENTION MESSAGE

   1652	005730	032702 	010000 			BIT	#LA.PLE,R2		; PAGE LIMIT EXCEEDED ?
   1653	005734	001402 				BEQ	40$
   1654	005736	052702 	000001 			BIS	#NA.OVP,R2		; YES
   1655
   1656	005742	110211 			40$:	MOVB	R2,(R1)			; THAT'S IT FOR BYTE 3 FLAGS
   1657	005744	001005 				BNE	50$			; 3 BYTE FEILD
   1658	005746	142741 	000200 			BICB	#200,-(R1)		; NOT MORE THAN 2 BYTES
   1659	005752	001002 				BNE	50$			; 2 BYTER
   1660	005754	142741 	000200 			BICB	#200,-(R1)		; ONLY 1 BYTE
   1661
   1662	005760	005201 			50$:	INC	R1			; ADVANCE R1 TO NEXT AVAILABLE BYTE
   1663	005762	016503 	000040 			MOV	L.PGCT(R5),R3		; GET PAGE COUNT ACCUMULATOR
   1664	005766	110321 				MOVB	R3,(R1)+		; STORE LOW BYTE OF COUNT
   1665	005770	000303 				SWAB	R3			; GET HIGH BYTE
   1666	005772	110321 				MOVB	R3,(R1)+		; STORE IT TOO
   1667	005774	166401 	000016 			SUB	C.BUF+2(R4),R1		; COMPUTE MSG SIZE
   1668	006000	010164 	000020 			MOV	R1,C.CNT(R4)		; STUFF IT INTO CCB
   1669										; READY TO GO
   1670	006004					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND UP ATTENTION MSG FROM HERE
   1671	006022	005265 	000050 			INC	L.IOCN(R5)		; COUNT THE IO
   1672	006026	105065 	000061 			CLRB	L.RATT(R5)		; CLEAR PENDING REQUEST FOR ATTENTION
   1673	006032				110$:	POP	<R4,R3,R2,R1,R0>	; RESTORE REGS
   1674	006044					RETURN				; EXIT SEND ATTENTION
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 36
CONTROL - DUMP OUTPUT BUFFERS

   1676						.SBTTL	CONTROL - DUMP OUTPUT BUFFERS
   1677
   1678	006046	005000 			DUMP:	CLR	R0			; SET RESPONSE (NR.DMP)
   1679	006050	105765 	000061 			TSTB	L.RATT(R5)		; PENDING ATTENTION?
   1680	006054	001007 				BNE	10$			; YES
   1681	006056	105765 	000062 			TSTB	L.CAPP(R5)		; PENDING CAPABILITIES?
   1682	006062	001004 				BNE	10$			; YES
   1683	006064	005765 	000034 			TST	L.DDMQ(R5)		; NOT TO DLC, CHECK ON PHYSICAL QUEUE
   1684	006070	001001 				BNE	10$			; IT'S THERE, OKAY
   1685	006072	005200 				INC	R0			; NOTHING TO DUMP(NR.DMP)
   1686	006074				10$:	RETURN
   1687
   1688
   1689
   1690
   1691						.SBTTL	CONTROL - PAUSE
   1692
   1693	006076	005000 			PAUSE:	CLR	R0			; SET RESPONSE (NR.DPS)
   1694	006100	032765 	000006 	000024 		BIT	#LA.PAU!LA.ADN,L.ASTS(R5) ; ALREADY PAUSED/PAUSING?
   1695	006106	001017 				BNE	20$			; YES
   1696	006110	005765 	000072 			TST	L.DLCQ(R5)		; ANYTHING QUEUED?
   1697	006114	001005 				BNE	10$			; YES, OKAY TO PAUSE
   1698	006116	005765 	000034 			TST	L.DDMQ(R5)		; NONE IN VIRTUAL, CHECK PHYSICAL
   1699	006122	001002 				BNE	10$
   1700	006124	012700 	000002 			MOV	#NR.NDP,R0		; NOTHING TO PAUSE
   1701	006130				10$:	CALL	STOPLE			; ENSURE ONLY ONE ATTENTION MSG
   1702	006134	052765 	000002 	000024 		BIS	#LA.PAU,L.ASTS(R5)	; PAUSE NO MATTER WHAT
   1703	006142					CALLR	GOOSLE			; MAKE SURE IT HAPPENS
   1704
   1705	006146	012700 	000001 		20$:	MOV	#NR.PAU,R0		; ALREADY PAUSED
   1706	006152					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 37
CONTROL - RESUME OUTPUT

   1708						.SBTTL	CONTROL - RESUME OUTPUT
   1709
   1710	006154	005000 			RESUME:	CLR	R0			; SET RESPONSE(NR.RES)
   1711	006156	032765 	000006 	000024 		BIT	#LA.PAU!LA.ADN,L.ASTS(R5) ; CHECK PAUSEDNESS
   1712	006164	001417 				BEQ	20$			; NOTHING HUNG
   1713	006166	042765 	010206 	000024 		BIC	#LA.PAU!LA.ADN!LA.ERR!LA.PLE,L.ASTS(R5)	; FLUSH PAUSING CONDITIONS
   1714	006174	005765 	000034 			TST	L.DDMQ(R5)		; CHECK FOR ANY CURRENT DATA XFER'S
   1715	006200	001403 				BEQ	10$			; SOMETHING IN PRINT Q
   1716	006202					CALL	GOOSLE			; TURN ON DEVICE AGAIN
   1717	006206	000410 				BR	30$
   1718	006210	005765 	000072 		10$:	TST	L.DLCQ(R5)		; THIS RESUMES ALL NON-INTERRUPT MSG PROCESSING
   1719	006214	001005 				BNE	30$			; SOMETHING WAITING TO PROCESSED
   1720	006216	012700 	000002 			MOV	#NR.NDR,R0		; NOTHING TO RESUME
   1721	006222	000402 				BR	30$
   1722
   1723	006224	012700 	000001 		20$:	MOV	#NR.NPS,R0		; NOT PAUSED
   1724
   1725	006230	122765 	000004 	000142 	30$:	CMPB	#DWAKR,L.DWAK(R5)	; CHECK FOR DESIRED WAKE CONDITION
   1726	006236	001003 				BNE	40$			; NO
   1727	006240	112765 	000003 	000142 		MOVB	#DWAKT,L.DWAK(R5)	; MAP TO A CLOCK TOCK WAKE
   1728										; THIS ALLOWS CONTROL PROCESS TO PROCEED
   1729	006246				40$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 38
CONTROL - ABORT COMMAND SET

   1731						.SBTTL	CONTROL - ABORT COMMAND SET
   1732
   1733					; ABRTEF(NC.AUE) IS AN INTERRUPT MSG
   1734					; ABRTAL(NC.AUC) IS AN INTRRUPT MSG
   1735
   1736
   1737					; * ABORT TO END OF FILE
   1738	006250	012700 	000002 		ABRTEF:	MOV	#NR.NOE,R0		; EOF NOT DEFINED FOR OUTPUT DEVICE
   1739	006254					RETURN
   1740
   1741					; * ABORT UNTIL CLEAR RECEIVED
   1742	006256				ABRTAL:	CALL	STOPLE			; FLUSH THE DEVICE
   1743	006262	052765 	000010 	000024 		BIS	#LA.ABO,L.ASTS(R5)	; NOTE ABORTING
   1744	006270	005000 				CLR	R0			; SET RESPONSE NR.ABS
   1745	006272	016501 	000034 			MOV	L.DDMQ(R5),R1		; CHECK ALL QUEUES TO SEE IF ANYTHING HAPPENING
   1746	006276	056501 	000122 			BIS	L.PLBP+2(R5),R1
   1747	006302	056501 	000072 			BIS	L.DLCQ(R5),R1
   1748	006306	056501 	000130 			BIS	L.MSGQ(R5),R1
   1749	006312	156501 	000142 			BISB	L.DWAK(R5),R1		; CHECK SUSPENDED PROCESSES
   1750	006316	001002 				BNE	10$			; NR.ABS (ABORT STARTED)
   1751	006320	012700 	000001 			MOV	#NR.NAB,R0		; NOTHING TO ABORT
   1752	006324				10$:	CALLR	FLUSHQ			; CLEAR THE WORLD
   1753
   1754					; * CLEAR ABORT STATUS
   1755	006330	005000 			ABRTCL:	CLR	R0			; SET RESPONSE CODE
   1756	006332	032765 	000030 	000024 		BIT	#LA.ABE!LA.ABO,L.ASTS(R5) ; ABORT SET?
   1757	006340	001404 				BEQ	10$			; NO
   1758	006342	042765 	000030 	000024 		BIC	#LA.ABE!LA.ABO,L.ASTS(R5) ; CLEAR ABORTING
   1759	006350					RETURN
   1760
   1761	006352	012700 	000001 		10$:	MOV	#NR.ACN,R0		; NOT IN ABORT STATE
   1762	006356					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 39
CONTROL - REQUEST CAPABILITIES

   1764						.SBTTL	CONTROL - REQUEST CAPABILITIES
   1765
   1766					; * CONTROL FCN TO SET UP CAPABILITIES MSG
   1767	006360	005000 			CAPREQ:	CLR	R0			; SET RESPONSE CODE
   1768	006362	105265 	000062 			INCB	L.CAPP(R5)		; SET CAPABILITIES PENDING FLAG
   1769	006366					RETURN
   1770
   1771
   1772
   1773
   1774						.SBTTL	SEND CAPABILITIES MESSAGE
   1775
   1776					; * MESSAGE FORMAT:	<NO. FEATURES><...FID'S...>
   1777
   1778	006370				SNDCAP:	CALL	GETMBF			; GET A MSG BUFFER
   1779	006374	103457 				BCS	100$
   1780	006376	016403 	000016 			MOV	C.BUF+2(R4),R3		; GET BUFFER ADDRESS
   1781										; FORMAT A NURD MESSAGE
   1782	006402	112723 	000005 			MOVB	#NM.CAP,(R3)+		; NURD MSG TYPE = CAPABILITIES
   1783	006406	105023 				CLRB	(R3)+			; NO FLAGS
   1784	006410					PUSH	R3			; SAVE PTR TO CNT
   1785	006412	105023 				CLRB	(R3)+			; INIT CNT
   1786	006414	012764 	000003 	000020 		MOV	#3,C.CNT(R4)		; SET BUFFER CNT = BYTES ALREADY INSERTED
   1787	006422					PUSH	R5			; SAVE THE DLT PTR
   1788	006424	062705 	000206 			ADD	#L.CFET,R5		; GET R5 -> COMMON FEATURES LIST
   1789	006430	005001 				CLR	R1			; INIT THE FID
   1790
   1791	006432	005000 			10$:	CLR	R0			; GET LENGTH OF FEATURE LIST
   1792	006434	152500 				BISB	(R5)+,R0
   1793	006436	001410 				BEQ	31$			; NO FEATURES!!
   1794
   1795	006440	005201 			20$:	INC	R1			; ADVANCE THE FID
   1796	006442	105725 				TSTB	(R5)+			; CHECK FOR SUPPORT OF IT
   1797	006444	001403 				BEQ	30$			; NOPE
   1798	006446	110123 				MOVB	R1,(R3)+		; YES - STORE FID IN MSG
   1799	006450	005264 	000020 			INC	C.CNT(R4)		; COUNT IT
   1800	006454				30$:	SOB	R0,20$
   1801	006460	105701 			31$:	TSTB	R1			; CHECK WHICH FEATURE LIST
   1802	006462	100403 				BMI	40$			; DEVICE SPECIFIC - DONE
   1803	006464	012701 	000200 			MOV	#200,R1			; INIT FID FOR DEVICE SPECIFIC FEATURES
   1804	006470	000760 				BR	10$			; PROCESS THAT LIST
   1805
   1806	006472				40$:	POP	R5			; GET THE DLT PTR BACK
   1807	006474	016400 	000020 			MOV	C.CNT(R4),R0		; GET THE BUFFER CNT
   1808	006500	162700 	000003 			SUB	#3,R0			; CALC NO. FEATURES FOUND
   1809	006504	110036 				MOVB	R0,@(SP)+		; STORE CNT IN CNT BYTE OF MSG
   1810	006506					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND IT
   1811	006524	005265 	000050 			INC	L.IOCN(R5)		; COUNT IT
   1812	006530	105065 	000062 			CLRB	L.CAPP(R5)		; FLUSH THE FLAG
   1813	006534				100$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 40
SEND ALERT MESSAGE

   1815						.SBTTL	SEND ALERT MESSAGE
   1816
   1817	006536				SNDALR:	CALL	GETMBF			; GET A MESSAGE BUFFE
   1818	006542	103424 				BCS	10$			; COULDN'T
   1819	006544	016401 	000016 			MOV	C.BUF+2(R4),R1		; GET BUFFER PTR
   1820	006550	112721 	000004 			MOVB	#NM.ALR,(R1)+		; BUILD COMPLETE ALERT MSG IN A SINGLE WORD
   1821	006554	105021 				CLRB	(R1)+			; CLEAR NURD MSG FLGS
   1822	006556	012764 	000002 	000020 		MOV	#2,C.CNT(R4)
   1823
   1824	006564	112764 	000004 	000011 		MOVB	#NT$INT,C.MOD(R4)	; ALERT IS AN INTERRUPT MSG
   1825	006572					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND UP ALERT MSG
   1826	006610	005265 	000050 			INC	L.IOCN(R5)		; COUNT THE IO
   1827	006614				10$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 41
TIMER HANDLER

   1829						.SBTTL	TIMER HANDLER
   1830
   1831					;+
   1832					; R4/FAKE CCB
   1833					; R5/DLT
   1834					;-
   1835
   1836	006616	005765 	000052 		LETIM:	TST	L.IOWT(R5)		; CHECK FOR CLOSE WAIT
   1837	006622	001402 				BEQ	5$
   1838	006624					CALLR	CLOSWT			; PREEMPTS ALL ELSE
   1839
   1840	006630	105765 	000060 		5$:	TSTB	L.RECO(R5)		; CHECK CONTROL RESOURCE ERROR
   1841	006634	001404 				BEQ	10$
   1842	006636	105065 	000060 			CLRB	L.RECO(R5)		; YES - FLUSH THE FLAG
   1843	006642					CALL	RECON			; RESTART THE PROCESS
   1844
   1845	006646	122765 	000003 	000142 	10$:	CMPB	#DWAKT,L.DWAK(R5)	; CHECK TIMESLEEP
   1846	006654	001002 				BNE	20$
   1847	006656					CALL	DFWAKE			; RESTART THE PROCESS
   1848										; IT WILL RETURN HERE
   1849
   1850	006662	032765 	000200 	000024 	20$:	BIT	#LA.ERR,L.ASTS(R5)	; CHECK DEVICE PROBLEMS
   1851	006670	001411 				BEQ	30$			; NOT BECAUSE OF DEVICE ERROR
   1852	006672	005775 	000022 			TST	@L.CSR(R5)		; DEVICE ERROR WAS REASON
   1853	006676	100406 				BMI	30$			; STILL HAVING PROBLEMS
   1854	006700					CALL	SNDALR			; CURE HS BEEN EFFECTED, NOTIFY USER
   1855	006704	103403 				BCS	30$			; COULDN'T SEND ONE, COME BACK LATER
   1856	006706	042765 	000200 	000024 		BIC	#LA.ERR,L.ASTS(R5)	; FLUSH ERROR BUT LEAVE LA.PAU
   1857										; USER MUST RESUME
   1858
   1859	006714	105765 	000045 		30$:	TSTB	L.HUNG(R5)		; CHECK HUNG TIMER
   1860	006720	001414 				BEQ	50$			; NOT SET
   1861	006722	105365 	000045 			DECB	L.HUNG(R5)		; COUNT THE TOCK
   1862	006726	001011 				BNE	50$			; STILL OK
   1863	006730	052765 	004000 	000024 		BIS	#LA.TMO,L.ASTS(R5)	; DEVICE IS COMATOSE
   1864	006736	105765 	000061 			TSTB	L.RATT(R5)		; CHECK PENDING ATTENTION MSG
   1865	006742	001006 				BNE	55$			; YES - DON'T GENERATE ANOTHER
   1866	006744	112765 	000001 	000061 		MOVB	#N.ASTC,L.RATT(R5)	; SET PENDING ATTENTION FLAG(REASON CODE)
   1867
   1868	006752	105765 	000061 		50$:	TSTB	L.RATT(R5)		; CHECK PENDING ATTENTION MSG
   1869	006756	001402 				BEQ	60$
   1870	006760				55$:	CALL	SNDATT			; TRY TO SEND ONE
   1871
   1872	006764	105765 	000062 		60$:	TSTB	L.CAPP(R5)		; CHECK PENDING CAPABILITIES MSG
   1873	006770	001402 				BEQ	70$
   1874	006772					CALL	SNDCAP			; TRY TO SEND ONE
   1875	006776	105215 			70$:	INCB	(R5)			; RESET THE DLT CLOCK FOR THE NEXT TOCK
   1876	007000					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 42
RESOURCE RETURN

   1878						.SBTTL	RESOURCE RETURN
   1879
   1880					;+
   1881					; * RESOURCE RETURN ENTRY (RECEIVE ENABLE).  *** IT IS HERE THAT NURD
   1882					; * MESSAGES SENT BY RECEIVE COMPLETE ($RCCMP) ARE RETURNED BY THE
   1883					; * DRIVER TO THE PROPER CORE POOL OR TO THEIR MESSAGE SPECIFIC
   1884					; * LOCATIONS.  MESSAGES SO HANDLED INCLUDE ATTENTION, CAPABILITIES,
   1885					; * ALERT, AND AUGMENTED BUFFERS OF FEATURES READ MESSAGES.
   1886					;-
   1887
   1888	007002	005365 	000050 		LEDLRE:	DEC	L.IOCN(R5)		; COUNT THE RETURNED RESOURCE
   1889	007006	002002 				BGE	FLSBUF
   1890	007010	005065 	000050 			CLR	L.IOCN(R5)		; BLEW IT SOMEWHERE
   1891
   1892	007014	122764 	000004 	000003 	FLSBUF:	CMPB	#CB.RDB,C.BID(R4)	; DISCERN BUFFER TYPE BEING DELIVERED
   1893	007022	001412 				BEQ	24$			; READ DATA BUFFER
   1894	007024	005764 	000016 			TST	C.BUF+2(R4)		; CHECK FOR PRESENCE OF A BUFFER
   1895	007030	001002 				BNE	21$			; SMALL DATA BUFFER/CCB COMBO
   1896	007032					CALLR	$CCBRT			; DEALLOCATE NAKED CCB AND RETURN
   1897
   1898	007036	016464 	000026 	000016 	21$:	MOV	C.BUF2+2(R4),C.BUF+2(R4); CAREFULLY RESTORE BUFFER PTR
   1899	007044					CALLR	$CSBRT			; DEALLOCATE SDB/CCB AND RETURN
   1900
   1901	007050				24$:	CALLR	$RDBRT			; DEALLOCATE RDB AND RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 43
OPEN/CLOSE DEVICE

   1903						.SBTTL	OPEN/CLOSE DEVICE
   1904
   1905					;+
   1906					; INITIALIZE UNIT
   1907					; R5/DLT
   1908					;-
   1909
   1910	007054				CTLSTR:					; START DEVICE
   1911	007054				LEOPEN:	PUSH	R4			; SAVE INCOMING CCB POINTER
   1912	007056	032765 	000001 	000024 		BIT	#LA.CLO,L.ASTS(R5)	; CLOSED?
   1913	007064	001550 				BEQ	100$			; NO, THEN HOW CAN IT BE OPENED?
   1914	007066	005075 	000022 			CLR	@L.CSR(R5)		; BE VERY PESSIMISTIC
   1915	007072	005065 	000024 			CLR	L.ASTS(R5)		; ZAP THE ACTION STATUS WORD
   1916	007076	005065 	000032 			CLR	L.PUBS(R5)		; FLUSH CURRENT PRINT BUFFER(SHOULD BE CLEAR)
   1917	007102	105065 	000142 			CLRB	L.DWAK(R5)		; INIT THE DATA/FEATURES HYBER FCN
   1918	007106	005065 	000106 			CLR	L.DMAD(R5)		; FLUSH SOURCE BUF IN USE
   1919	007112	005065 	000110 			CLR	L.DMAD+2(R5)
   1920	007116	005065 	000112 			CLR	L.DMBS(R5)
   1921	007122	105065 	000077 			CLRB	L.DMSQ(R5)		; INIT THE DATA MSG SEQ NO.
   1922	007126	005065 	000134 			CLR	L.MSGA(R5)		; INIT CURRENT OUT MSG CRUFT
   1923	007132	005065 	000136 			CLR	L.MSGA+2(R5)
   1924	007136	005065 	000140 			CLR	L.MSGS(R5)
   1925	007142	005065 	000050 			CLR	L.IOCN(R5)		; INIT OUTSTANDING IO COUNT
   1926	007146	005065 	000052 			CLR	L.IOWT(R5)		; INIT CLOSE-WAIT FLAG
   1927	007152	105065 	000045 			CLRB	L.HUNG(R5)		; INIT THE HUNG DEVICE TIMER
   1928	007156	105065 	000060 			CLRB	L.RECO(R5)		; INIT THE CONTROL RESOURCE ERROR FLAG
   1929	007162	105065 	000061 			CLRB	L.RATT(R5)		; INIT THE PENDING ATTENTION MSG FLAG
   1930	007166	105065 	000062 			CLRB	L.CAPP(R5)		; INIT THE PENDING CAPABILITIES MSG FLAG
   1931	007172	005065 	000040 			CLR	L.PGCT(R5)		; INIT THE PAGE COUNTER
   1932	007176	012700 	000177 			MOV	#DEL,R0			; INITIALIZE LP11 XLATION TABLE
   1933	007202	105060 	000244'			CLRB	$LEASC(R0)		; SUPPRESS DEL
   1934	007206	005300 				DEC	R0
   1935
   1936	007210	110060 	000244'		10$:	MOVB	R0,$LEASC(R0)		; MOST OF TABLE IS ASCII TO ASCII
   1937	007214					SOB	R0,10$
   1938	007220	012700 	000037 			MOV	#US,R0			; SUPPRESS CONTROL CODES
   1939
   1940	007224	105060 	000244'		12$:	CLRB	$LEASC(R0)
   1941	007230					SOB	R0,12$
   1942	007234	105067 	171004 			CLRB	$LEASC			; SUPPRESS NUL
   1943	007240	012700 	000444'			MOV	#FCXTB,R0		; GET ADDRESS OF EXCEPTION TABLE
   1944	007244	112001 			15$:	MOVB	(R0)+,R1		; GET $LEASC OFFSET
   1945	007246	100403 				BMI	20$			; DONE IF BYTE NEGATIVE
   1946	007250	112061 	000244'			MOVB	(R0)+,$LEASC(R1)	; STUFF IN REPLACEMENT DATA
   1947	007254	000773 				BR	15$
   1948
   1949	007256	012765 	000244'	000064 	20$:	MOV	#$LEASC,L.CSMP(R5)	; SET ADDRESS OF CHAR SET MAP
   1950
   1951					; * SET ALL FEATURES WITH STANDARDS TO STD
   1952	007264	012700 	000206 			MOV	#L.CFET,R0		; COMMON FEATURES
   1953	007270					CALL	200$			; DO ALL
   1954	007274	012700 	000220 			MOV	#L.DFET,R0		; DEVICE SPECIFIC FEATURES
   1955	007300					CALL	200$			; ALL OF THEM TOO
   1956
   1957					; * INIT PHYSICAL BUFFER POOL
   1958	007304	012700 	000004 			MOV	#LEPBFS,R0		; RESERVE SEVERAL
   1959	007310				55$:	CALL	GETPBF			; GET A PHYSICAL BUFFER
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 43-1
OPEN/CLOSE DEVICE

   1960	007314	103417 				BCS	70$			; FAIL OPEN IF NOT AVAILABLE
   1961	007316	005014 				CLR	(R4)			; CLEAR THE LINK
   1962	007320					ENQ$	L.PLBQ			; QUEUE THE BUFFER TO THE FREE LIST
   1963	007350					SOB	R0,55$
   1964
   1965	007354	005765 	000114 		70$:	TST	L.PLBQ(R5)		; FAIL TO OPEN IF NONE AVAILABLE
   1966	007360	001412 				BEQ	100$
   1967	007362	005065 	000120 			CLR	L.PLBP(R5)		; INIT PHYSICAL BUFFER IN USE
   1968	007366	005065 	000122 			CLR	L.PLBP+2(R5)
   1969	007372	005065 	000124 			CLR	L.PLBS(R5)
   1970	007376	005003 				CLR	R3			; RETURN SUCCESS
   1971	007400	116515 	000001 			MOVB	L.TIMI(R5),(R5)		; START THE TIMER FCNS
   1972	007404	000405 				BR	104$
   1973
   1974	007406	012703 	100202 		100$:	MOV	#LS.REJ,R3		; FAILED TO OPEN
   1975	007412	052765 	000001 	000024 		BIS	#LA.CLO,L.ASTS(R5)	; NOTE REMAINING CLOSED
   1976
   1977	007420				104$:	POP	R4			; RESTORE POINTER FOR COMMAND CCB
   1978	007422					CALL	$CTCMP			; SEND COMMAND BACK
   1979	007426					RETURN
   1980
   1981
   1982	007430	060500 			200$:	ADD	R5,R0			; R0/FEATURE LIST OFFSET
   1983	007432	005001 				CLR	R1
   1984	007434	152001 				BISB	(R0)+,R1		; GET NO. OF FEATURES
   1985	007436	005003 			210$:	CLR	R3
   1986	007440	152003 				BISB	(R0)+,R3		; GET ADDRESS OF FEATURE BLOCK
   1987	007442	001403 				BEQ	220$			; EMPTY SLOT
   1988	007444	060503 				ADD	R5,R3
   1989	007446					CALL	SETSTD			; SET IT TO STD
   1990	007452				220$:	SOB	R1,210$
   1991	007456					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 44
OPEN/CLOSE DEVICE

   1993	007460				CTLSTP:					; STOP DEVICE
   1994	007460	005075 	000022 		LECLOS:	CLR	@L.CSR(R5)		; CLEAR PRINTER (SCREECHING HALT)
   1995	007464	052765 	000001 	000024 		BIS	#LA.CLO,L.ASTS(R5)	; MARK AS CLOSED
   1996	007472					CALL	FLUSHQ			; FLUSH THE QUEUES
   1997	007476					PUSH	R4			; SAVE COMMAND CCB POINTER
   1998
   1999	007500				10$:	DEQ$	L.PLBQ,20$		; GET NEXT PHYSICAL BUFFER FROM QUEUE
   2000	007554					CALL	PBFINI			; MAKE SURE BUFFER DESCRIPTOR IS PROPERLY SET
   2001	007560					CALL	FLSBUF			; RETURN BUFFER TO POOL
   2002	007564	000745 				BR	10$			; TRY TO RETURN MORE
   2003
   2004	007566				20$:	DEQ$	L.CMSQ,30$		; FLUSH ANY OUTSTANDING CONTROL MSGS
   2005	007642					CALL	NRDACK			; RETURN THEM
   2006	007646	000747 				BR	20$
   2007
   2008	007650				30$:	POP	R4			; RESTORE COMMAND CCB POINTER
   2009	007652	010465 	000052 			MOV	R4,L.IOWT(R5)		; SET CLOSE WAIT FLAG
   2010
   2011					; * COMLPETE CLOSE ONLY WHEN ALL CCB'S RETURNED
   2012	007656	005765 	000050 		CLOSWT:	TST	L.IOCN(R5)
   2013	007662	001402 				BEQ	10$
   2014	007664	105215 				INCB	(R5)
   2015	007666					RETURN
   2016
   2017	007670	105015 			10$:	CLRB	(R5)			; FLUSH THE TIMER FCNS
   2018	007672	016504 	000052 			MOV	L.IOWT(R5),R4		; GET THE CLOSE CCB BACK
   2019	007676	005065 	000052 			CLR	L.IOWT(R5)		; COVER OUR TRACKS
   2020	007702	005003 				CLR	R3			; CLOSE NEVER FAILS - IT JUST TAKES A WHILE!
   2021	007704					CALLR	$CTCMP			; RETURN THE COMMAND
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 45
PHYSICAL BUFFER MANAGEMENT

   2023						.SBTTL	PHYSICAL BUFFER MANAGEMENT
   2024
   2025					; * PHYSICAL BUFFERS ARE RDB'S
   2026	007710				GETPBF:	CALL	$RDBGT			; GET A PHYSICAL BUFFER
   2027	007714	103417 				BCS	10$			; LOSE
   2028	007716	005064 	000012 			CLR	C.STS(R4)		; INIT STATUS
   2029	007722	012764 	177777 	000006 		MOV	#-1,C.LIN(R4)	 	; MARK THE CCB AS STRICTLY LOCAL
   2030	007730	012764 	000012 	000010 		MOV	#NT$RTN*400!FC.XCP,C.FNC(R4) ; ADDRESS TO SEND TO SELF
   2031	007736	005064 	000032 			CLR	C.FLG2(R4)		; DEMARK BUF BEFORE MAKING THEM AVAILABLE
   2032
   2033					; * SECOND BUFFER DESCRIPTOR ASSUMED TO HAVE A COPY OF THE BUFFER ADDRESS
   2034	007742	005064 	000020 			CLR	C.CNT(R4)		; MAKE BUFFER EMPTY
   2035	007746	016764 	000000G	000030 		MOV	$RDBSZ,C.CNT2(R4)	; GET SIZE
   2036	007754				10$:	RETURN
   2037
   2038
   2039					; * INIT A PHYSICAL BUFFER FOR USE
   2040	007756	005064 	000012 		PBFINI:	CLR	C.STS(R4)		; INIT STATUS
   2041	007762	012764 	177777 	000006 		MOV	#-1,C.LIN(R4)	 	; MARK THE CCB AS STRICTLY LOCAL
   2042	007770	016464 	000026 	000016 		MOV	C.BUF2+2(R4),C.BUF+2(R4); INIT BUFFER PTR
   2043	007776	016464 	000030 	000020 		MOV	C.CNT2(R4),C.CNT(R4)	; SET BUF SIZE FOR USER
   2044	010004	005064 	000032 			CLR	C.FLG2(R4)		; DEMARK BUFFER BEFORE USE
   2045	010010					RETURN
   2046
   2047
   2048	010012				GETMBF:	CALL	$CSBGT			; GET A MESSAGE BUFFER
   2049	010016	103425 				BCS	10$			; LOSE
   2050	010020	016564 	000046 	000006 		MOV	L.SLN(R5),C.LIN(R4) 	; MARK THE CCB AS BELONGING TO THIS SYSTEM LINE NO.
   2051	010026	016464 	000014 	000024 		MOV	C.BUF(R4),C.BUF2(R4)	; PRESERVE BUFFER DESCRIPTOR
   2052	010034	016464 	000016 	000026 		MOV	C.BUF+2(R4),C.BUF2+2(R4)
   2053	010042	016764 	000000G	000030 		MOV	$SDBSZ,C.CNT2(R4)	; GET SIZE
   2054	010050	016464 	000030 	000020 		MOV	C.CNT2(R4),C.CNT(R4)	; SET BUF SIZE FOR USER
   2055	010056	012764 	000140 	000012 		MOV	#NT.BOM!NT.EOM,C.STS(R4)	; INIT AS A WHOLE MSG
   2056	010064	012764 	001014 	000010 		MOV	#NT$DAT*400!FC.RCP,C.FNC(R4)	; INIT FUNCTION AND MOD
   2057	010072				10$:	RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 46
DDM AND DLC TRANSMIT COMPLETE

   2059						.SBTTL	DDM AND DLC TRANSMIT COMPLETE
   2060
   2061					;+
   2062					; CALLED FROM INTERRUPT SERVICE TO RETURN A DEAD DATA CCB
   2063					; R4/DEAD CCB
   2064					; R5/DLT
   2065					;
   2066					; THE DEAD CCB MAY BE A PHYSICAL BUFFER THAT HAS BEEN PRINTED AND MAY
   2067					; OR MAY NOT HAVE A PTR TO THE SOURCE BUFFER IN C.FLG2.  IF SO, THEN
   2068					; THE END OF THE SOURCE BUFFER COINCIDES WITH THE PHYSICAL BUFFER AND
   2069					; IS TO BE RETURNED.
   2070					; THE DEAD CCB MAY BE SOME OTHER CCB THAN A PHYSICAL BUFFER AND IS
   2071					; ONLY CIRCULATED THROUGH THE DDM QUEUE IN ORDER TO SYNCHRONIZE ITS
   2072					; TRANSMISSION TO THE USER WITH ACTUALLY PRINTED DATA.  PHYSICAL BUFFERS
   2073					; ARE UNIQUE BY VIRTUE OF HAVING C.LIN(WORD)=-1.
   2074					; PHYSICAL BUFFERS ARE RETURNED TO DLC LEVEL BY SENDING THEM IN ORDER TO
   2075					; DIVORCE THE POSSIBLY RESULTING DLC RESOURCE WAKE UP FROM THE INTERRUPT
   2076					; THREAD.
   2077					;-
   2078
   2079	010074	005764 	000006 		DDMXCP:	TST	C.LIN(R4)		; CHECK FOR HACK WHEN NO PHYSICAL BUFS TO CIRCULATE
   2080	010100	100067 				BPL	100$			; BUF IS REALLY A SOURCE BUF IN DISGUISE
   2081	010102					PUSH	R4			; SAVE THE PHYSICAL BUFFER
   2082	010104	016404 	000032 			MOV	C.FLG2(R4),R4		; GET SOURCE BUF TO RETURN
   2083	010110	001402 				BEQ	26$			; NO MARKS
   2084	010112					CALL	100$			; RETURN SOURCE BUF TO OWNER
   2085
   2086	010116				26$:	POP	R4			; RESTORE THE RETURNING PHYSICAL BUFFER ADDR
   2087	010120	032764 	000400 	000012 		BIT	#LA.EOF,C.STS(R4)	; CHECK THIS BUFFER FOR EOF CONDITION
   2088	010126	001403 				BEQ	30$
   2089	010130	052765 	000040 	000024 		BIS	#LA.CPC,L.ASTS(R5)	; IF SO, SET FLAG TO CLEAR PAGE COUNT
   2090										;   BEFORE NEXT OUTPUT
   2091	010136	032764 	000100 	000012 	30$:	BIT	#LA.AKR,C.STS(R4)	; BUFFER MARKED TO ACKNOWLEDGE DATA MSG?
   2092	010144	001413 				BEQ	45$			; NO
   2093	010146	116503 	000061 			MOVB	L.RATT(R5),R3		; ATTENT PENDING?
   2094	010152	001403 				BEQ	40$			; NO, SET UP TO ACK
   2095	010154	120327 	000002 			CMPB	R3,#N.AACK		; YES, IS THE CURRENT REASON MORE IMPORTANT?
   2096	010160	101005 				BHI	45$			; YES, LET THE PENDING REASON STAND
   2097	010162	112765 	000002 	000061 	40$:	MOVB	#N.AACK,L.RATT(R5)	; NO, USE ACKNOWLEDGE AS THE REASON
   2098	010170					CALL	SNDATT			; TRY TO SEND AN ATTENTION
   2099	010174	122765 	000002 	000142 	45$:	CMPB	#DWAKP,L.DWAK(R5)	; CHECK IF THIS A DESIRABLE WAKE CONDITION
   2100	010202	001011 				BNE	60$			; NO - CAN JUST QUEUE IT IMMEDIATELY
   2101	010204	016564 	000046 	000006 		MOV	L.SLN(R5),C.LIN(R4)	; IDENTIFY WHO WE ARE
   2102	010212	005003 				CLR	R3
   2103	010214	112764 	000000 	000011 		MOVB	#NT$RTN,C.MOD(R4)	; ADDRESS IT
   2104	010222					CALLR	$DDXMP			; SEND TO DLC VIA FC.XCP
   2105
   2106	010226				60$:	ENQ$	L.PLBQ			; REQUEUE THE PHYSICAL BUFFER FOR FURTHER USE
   2107	010256					RETURN
   2108
   2109	010260	032765 	000010 	000024 	100$:	BIT	#LA.ABO,L.ASTS(R5)	; RETURN A BUFFER CALMLY UNLESS ABORTION IN PROGRESS
   2110	010266	001404 				BEQ	NRDACK			; SERENITY
   2111	010270	012764 	100201 	000012 		MOV	#LS.ABO,C.STS(R4)	; INDICATE PURGE
   2112	010276	000402 				BR	NRDRET
   2113
   2114
   2115
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 46-1
DDM AND DLC TRANSMIT COMPLETE

   2116	010300	005064 	000012 		NRDACK:	CLR	C.STS(R4)		; ACK A NRD MSG
   2117	010304				NRDRET:	$TOBDM	XM,C.STS(R4)		; RETURN MESSAGE WITH C.MOD AND C.STS IT CAME WITH
   2118	010322					RETURN
   2119
   2120
   2121					; * PROCESS RETURNING PHYSICAL BUFFER, R4/PHYSICAL BUFFER
   2122	010324				DLCXCP:	ENQ$	L.PLBQ			; REQUEUE THE PHYSICAL BUFFER FOR FURTHER USE
   2123	010354	122765 	000002 	000142 		CMPB	#DWAKP,L.DWAK(R5)	; CHECK IF THIS A DESIRABLE WAKE CONDITION
   2124	010362	001401 				BEQ	10$
   2125	010364					RETURN
   2126	010366				10$:	CALLR	DFWAKE			; WAKE THE SLEEPING TIGER
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 47
FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES

   2128						.SBTTL	FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES
   2129
   2130					;+
   2131					; ABORT ALL FROM 1) DDMQ, 2) DLCQ ,3) MSGQ (IN THAT ORDER)
   2132					;-
   2133
   2134	010372				FLUSHQ:	PUSH	<R0,R3,R4>		; SAVE CURRENT CCB, DLT POINTERS, ETC
   2135	010400					CALL	STOPLE			; FLUSH THE DEVICE
   2136
   2137	010404				10$:	DEQ$	L.DDMQ,20$		; RETURN ALL PHYSICAL BUFFERS TO THE PB Q
   2138	010460					CALL	DDMXCP			; RETURN ANY MSG BUFS AND RESTORE PHYSICAL BUFS TO LIST
   2139	010464	000747 				BR	10$
   2140
   2141	010466				20$:	DEQ$	L.DLCQ,30$		; ABORT ANY MSGS WAITING TO BE DONE
   2142	010542					$TOBDM	XM,#LS.ABO
   2143	010560	000742 				BR	20$
   2144
   2145	010562				30$:	DEQ$	L.MSGQ,40$		; FLUSH ANYTHING GOING OUT
   2146	010636					CALL	FLSBUF			; DUMP IT
   2147	010642	000747 				BR	30$
   2148
   2149	010644	105065 	000142 		40$:	CLRB	L.DWAK(R5)		; FLUSH ANY SUSPENDED PROCESSING
   2150	010650	005065 	000032 			CLR	L.PUBS(R5)		; NO CURRENT PRRINT BUFFER
   2151	010654	005065 	000122 			CLR	L.PLBP+2(R5)		; NO PHYSICAL BUFFER IN USE
   2152	010660	005065 	000124 			CLR	L.PLBS(R5)
   2153	010664	005065 	000110 			CLR	L.DMAD+2(R5)		; NO CURRENT SOURCE BUFFER
   2154	010670	005065 	000106 			CLR	L.DMAD(R5)
   2155	010674	005065 	000112 			CLR	L.DMBS(R5)		; MAY HAVE BEEN A BUFFER IN PROGRESS
   2156	010700	005065 	000140 			CLR	L.MSGS(R5)		;  ...
   2157	010704					POP	<R4,R3,R0>
   2158	010712					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 48
OUTPUT ENABLE

   2160						.SBTTL	OUTPUT ENABLE
   2161
   2162					;+
   2163					; QUEUE OUTPUT IMAGE BUFFERS TO BE SENT OUT
   2164					; UNDER INTERRUPT, START INTERRUPT PROCESSING IF APPROPRIATE
   2165					;
   2166					; R4/CCB
   2167					; R5/DLT
   2168					;-
   2169						.ENABL	LSB
   2170
   2171	010714				QDDM:	CALL	STOPLE			; FLUSH INTERRUPTS WHILE WE DIDDLE Q'S
   2172	010720					ENQ$	L.DDMQ			; QUEUE UP INCOMING OUTPUT BUFFER
   2173
   2174					; * START THE DEVICE IF IT SHOULD BE
   2175	010750	032765 	000002 	000024 	STRTLE:	BIT	#LA.PAU,L.ASTS(R5)	; ARE WE PAUSED?
   2176	010756	001006 				BNE	10$			; EVERYTHING IS QUIESENT
   2177
   2178
   2179	010760	112765 	000005 	000045 	GOOSLE:	MOVB	#LEHNG,L.HUNG(R5)	; SET THE HUNG TIMER
   2180	010766	012775 	000100 	000022 		MOV	#INTENB,@L.CSR(R5)	; GOOSE IT
   2181	010774				10$:	RETURN
   2182						.DSABL	LSB
   2183
   2184
   2185	010776	005075 	000022 		STOPLE:	CLR	@L.CSR(R5)		; STOP THE INTERRUPTS
   2186	011002	105065 	000045 			CLRB	L.HUNG(R5)		; AND FLUSH THE HUNG TIMER
   2187	011006					RETURN
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 49
INTERRUPT SERVICE ROUTINE

   2189						.SBTTL	INTERRUPT SERVICE ROUTINE
   2190
   2191					;+
   2192					; FIELD INTERRUPTS, DISPATCH TO ERROR IF ERROR SET, ALTERNATE
   2193					; ERROR IF PAUSE SET, ELSE OUTPUT NEXT CHARACTER - IF
   2194					; LAST CHARACTER OF BUFFER SENT, GO TO INTERRUPT ON DONE
   2195					; TO RETURN USED BUFFER AND START NEXT ONE
   2196					;
   2197					; R5/PTR TO DLT+L.PRI		(READY FOR $INTSX)
   2198					;-
   2199
   2200	011010	105065 	000025 		$LEINT::CLRB	L.HUNG-L.PRI(R5)	; RESET THE HUNG TIMER
   2201	011014					$INTSX				; RE-SCHEDULE AND DROP PRIORITY.
   2202	011020	162705 	000022 			SUB	#<L.PRI+2>,R5		; POINT TO FIRST OF DLT
   2203	011024					PUSH	<R0,R1,R2,R3>		; ASSUME WE ARE HERE FOR THE LINE
   2204	011034					SAVMAP
   2205	011040	016503 	000022 			MOV	L.CSR(R5),R3		; R3/CSR ADR
   2206	011044	005013 				CLR	(R3)			; FLUSH INTS SINCE WE ARE AT A LOWER LEVEL
   2207	011046	032765 	000002 	000024 		BIT	#LA.PAU,L.ASTS(R5)	; OUGHT WE PAUSE?
   2208	011054	001120 				BNE	70$			; YES, USE INTERR TO REPORT HAVING PAUSED
   2209	011056					MAP	L.PUBP(R5)		; SET MAPPING FOR PRESENT OUTPUT
   2210	011064	016502 	000030 			MOV	L.PUBP+2(R5),R2		; R2/BUFFER PTR
   2211	011070	016501 	000032 			MOV	L.PUBS(R5),R1		; R1/BUFFER CNT
   2212	011074	001441 				BEQ	40$			; BUF NOW EMPTY
   2213
   2214	011076	005713 			10$:	TST	(R3)			; CHECK LP
   2215	011100	100564 				BMI	170$			; ERROR OF SOME KIND
   2216	011102	001525 				BEQ	110$			; LP RUMINATING NOW
   2217	011104	112200 				MOVB	(R2)+,R0		; LP READY, GET NEXT CHAR
   2218	011106	100504 				BMI	80$			; COMPRESSION PAIR COUNT
   2219	011110					CALL	LEPRT			; PRINT THE CHAR
   2220	011114	103540 				BCS	140$			; PAGE LIMIT OCCURRED
   2221	011116				20$:	SOB	R1,10$			; KEEP GOING AS LONG AS LP IS HUNGRY
   2222
   2223	011122				30$:	DEQ$	L.DDMQ			; TAKE JUST-FINISHED BUFFER OFF QUEUE
   2224	011170					PUSH	R3
   2225	011172					CALL	DDMXCP			; RETURN BUFFER VIA TRANSMIT COMPLETE
   2226	011176					POP	R3			; GET LOCAL PTR BACK
   2227	011200	016504 	000034 		40$:	MOV	L.DDMQ(R5),R4		; GET ADDRESS OF TOP ELEMENT OF QUEUE
   2228	011204	001433 				BEQ	60$			; NONE THERE, EXIT
   2229	011206	005764 	000006 			TST	C.LIN(R4)		; CHECK FOR CIRCULATING SOURCE BUFFER
   2230	011212	100343 				BPL	30$			; IF SO, JUST RETURN IT
   2231					; * COPY DESCRIPTOR DATA INTO UNLOAD VARIABLES
   2232	011214	062704 	000014 			ADD	#C.BUF,R4		; POINT TO DESCRIPTOR
   2233	011220	032765 	000040 	000024 		BIT	#LA.CPC,L.ASTS(R5)	; CHECK IF LAST BUFFER HAD EOF
   2234	011226	001402 				BEQ	50$
   2235	011230	005065 	000040 			CLR	L.PGCT(R5)		; YES - CLEAR PAGET COUNTER
   2236	011234	042765 	000040 	000024 	50$:	BIC	#LA.CPC,L.ASTS(R5)	; FLUSH THE FLAG
   2237					.IF DF	M$$MGE
   2238	011242	012465 	000026 			MOV	(R4)+,L.PUBP(R5)
   2239	011246	016567 	000026 	172354 		MOV	L.PUBP(R5),KISAR6
   2240					.ENDC
   2241	011254	012402 				MOV	(R4)+,R2		; BUF PTR
   2242	011256	010265 	000030 			MOV	R2,L.PUBP+2(R5)		; SAVE IT
   2243	011262	011401 				MOV	(R4),R1			; BUF CNT
   2244	011264	010165 	000032 			MOV	R1,L.PUBS(R5)		; SAVE IT
   2245	011270	001714 				BEQ	30$			; RETURN AN EMPTY BUFFER STRAIGHT AWAY
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 49-1
INTERRUPT SERVICE ROUTINE

   2246	011272	000701 				BR	10$			; CONTINUE WHERE WE LEFT OFF
   2247
   2248	011274	005065 	000032 		60$:	CLR	L.PUBS(R5)		; CLEAR L.PUBS TO MAKE SURE NEXT STARTUP WORKS
   2249	011300	032765 	000004 	000024 		BIT	#LA.ADN,L.ASTS(R5)	; CHECK FOR AUTO DEATH
   2250	011306	001500 				BEQ	LEXIT
   2251	011310	052765 	000002 	000024 		BIS	#LA.PAU,L.ASTS(R5)	; YES - PAUSE NOW
   2252	011316	000464 			70$:	BR	INTPAU			; SOME FATAL ERROR - USUALLY BAD USER MSG FORMAT
   2253
   2254	011320	010004 			80$:	MOV	R0,R4			; SAVE REPEAT COUNT
   2255	011322	112200 				MOVB	(R2)+,R0		; REPEATED CHAR FOLLOWS
   2256	011324				90$:	CALL	LEPRT			; PRINT THE CHAR
   2257	011330	103424 				BCS	120$			; PAGE LIMIT
   2258	011332	005204 				INC	R4			; COUNT IT
   2259	011334	002403 				BLT	100$
   2260	011336					SOB	R1,20$			; COUNT OFF COMPRESSION PAIR
   2261	011342	000667 				BR	30$			; ?CAN'T HAPPEN IN THEORY
   2262	011344	005713 			100$:	TST	(R3)			; CHECK LP
   2263	011346	100437 				BMI	160$			; INDIGESTION MOST LIKELY
   2264	011350	001365 				BNE	90$			; SHOVE IT TO THE LP
   2265	011352	005302 				DEC	R2			; PRINTED TEMPORARILY SATED
   2266	011354	110442 				MOVB	R4,-(R2)		; SAVE UPDATED REPEAT COUNT
   2267
   2268	011356	010165 	000032 		110$:	MOV	R1,L.PUBS(R5)		; SAVE CUR BUF COUNT
   2269	011362	010265 	000030 			MOV	R2,L.PUBP+2(R5)		; SAVE CUR BUF PTR
   2270	011366	112765 	000005 	000045 		MOVB	#LEHNG,L.HUNG(R5)	; SET THE HUNG TIMER
   2271	011374	012713 	000100 			MOV	#INTENB,(R3)		; TURN INTS BACK ON
   2272	011400	000443 				BR	LEXIT
   2273
   2274	011402	005204 			120$:	INC	R4			; REPEAT CHAR - PLE HAPPENED
   2275	011404	002003 				BGE	130$			; FINISHED REPEAT
   2276	011406	005302 				DEC	R2			; SAV REP
   2277	011410	110442 				MOVB	R4,-(R2)
   2278	011412	000402 				BR	150$
   2279
   2280	011414	005301 			130$:	DEC	R1			; DONE WITH REPEAT
   2281	011416	005301 			140$:	DEC	R1			; PLE EXIT - FF DONE
   2282	011420	010165 	000032 		150$:	MOV	R1,L.PUBS(R5)		; SAVE STATE
   2283	011424	010265 	000030 			MOV	R2,L.PUBP+2(R5)
   2284	011430	112765 	000005 	000061 		MOVB	#N.APLE,L.RATT(R5)	; SET REASON CODE FOR ATTENTION MSG
   2285	011436	052765 	010002 	000024 		BIS	#LA.PLE!LA.PAU,L.ASTS(R5)	; PAUSE AND PLE
   2286	011444	000411 				BR	INTPAU
   2287
   2288	011446	005302 			160$:	DEC	R2			; ERROR DURING EXPANSION OF  PAIR
   2289	011450	110442 				MOVB	R4,-(R2)		; SAVE CURRENT COUNT AS  IT ISN'T DONE YET
   2290	011452	010165 	000032 		170$:	MOV	R1,L.PUBS(R5)		; ERROR CONDITION HAS ARISEN
   2291	011456	010265 	000030 			MOV	R2,L.PUBP+2(R5)		; SAVE BUF CNT,BUF PTR
   2292					;	CALLR	INTERR
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 50
INTERRUPT SERVICE ROUTINE

   2294					; * ERROR-INTERRUPT ENTRY POINT
   2295	011462	052765 	000202 	000024 	INTERR:	BIS	#LA.ERR!LA.PAU,L.ASTS(R5) ; MARK ERROR => PAUSE ALSO
   2296
   2297					; * ALTERNATE ENTRY WHEN PAUSING
   2298	011470	105765 	000061 		INTPAU:	TSTB	L.RATT(R5)		; IS AN ATTENTION ALREADY PENDING?
   2299	011474	001005 				BNE	LEXIT			; YES, DON'T OVERWRITE THE REASON CODE
   2300	011476	112765 	000001 	000061 		MOVB	#N.ASTC,L.RATT(R5) 	; NO, NOTE STATUS CHANGE
   2301	011504					CALL	SNDATT			; BUILD AND SEND ATTENTION MESSAGE
   2302
   2303	011510				LEXIT:	RESMAP
   2304	011514					POP	<R3,R2,R1,R0>
   2305	011524					RETURN				; EXIT ERROR/PAUSE INTERRUPT
   2306
   2307
   2308
   2309					; * LP11 SPECIFIC CHARACTER PRINTER
   2310	011526	122700 	000012 		LEPRT:	CMPB	#LF,R0			; CHECK FOR LF'S AND FF'S
   2311	011532	001025 				BNE	30$
   2312	011534	110063 	000002 			MOVB	R0,2(R3)		; LF - PRINT IT
   2313	011540	105265 	000044 			INCB	L.PLNC(R5)		; COUNT IT
   2314	011544	122765 	000102 	000044 		CMPB	#PGLEN,L.PLNC(R5)	; CHECK FOR PAGE BOUNDARY
   2315	011552	003035 				BGT	50$			; OK
   2316
   2317	011554	105065 	000044 		20$:	CLRB	L.PLNC(R5)		; PAGE - CLEAR LINE COUNT
   2318	011560	005265 	000040 			INC	L.PGCT(R5)		; COUNT THE PAGE
   2319	011564	005765 	000042 			TST	L.PGLM(R5)		; CHECK PAGE LIMIT
   2320	011570	001426 				BEQ	50$			; NOT SET
   2321	011572	026565 	000040 	000042 		CMP	L.PGCT(R5),L.PGLM(R5)	; COMPARE COUNT TO LIM
   2322	011600	003422 				BLE	50$			; STILL OK
   2323	011602	000261 				SEC				; TOO BAD
   2324	011604					RETURN
   2325
   2326	011606	122700 	000014 		30$:	CMPB	#FF,R0			; CHECK FF
   2327	011612	001013 				BNE	40$			; NOT A CRITICAL CHARACTER
   2328	011614	122765 	000101 	000044 		CMPB	#PGLEN-1,L.PLNC(R5)	; CHECK FOR LAST LINE
   2329	011622	003403 				BLE	35$			; BOF - FF IS SPECIAL CASE
   2330	011624	110063 	000002 			MOVB	R0,2(R3)		; NOT BOF - JUST PRINT FF AND DO PAGE COUNTING
   2331	011630	000751 				BR	20$
   2332
   2333	011632	112763 	000012 	000002 	35$:	MOVB	#LF,2(R3)		; DO A LINE FEED AT BOF TO AVOID A BLANK PAGE
   2334	011640	000745 				BR	20$			; COUNT THE PAGE
   2335
   2336	011642	110063 	000002 		40$:	MOVB	R0,2(R3)		; JUST PRINT THE CHARACTER
   2337	011646	000241 			50$:	CLC
   2338	011650					RETURN
   2339
   2340
   2341
   2342						.SBTTL	THE END
   2343
   2344		000001 				.END
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 50-1
SYMBOL TABLE

ABRTAL  006256R  	CTLOTR= 000012   	EO.IMG= 000002   	FE.LCR= 000003   	G$$TPP= 000000
ABRTCL  006330R  	CTLSTP  007460R  	ERRCHR= 000334   	FE.LSI= 000400   	G$$TSS= 000000
ABRTEF  006250R  	CTLSTR  007054R  	ERROR = 100000   	FE.MUP= 000002   	G$$TTK= 000000
ACK   = 000006   	C$$CKP= 000000   	ESC   = 000033   	FE.MXT= 040000   	G$$WRD= 000000
A$$CHK= 000000   	C$$ORE= 000400   	ETB   = 000027   	FE.NLG= 100000   	HFC     002134R
A$$CPS= 000000   	C$$RSH= 177564   	ETX   = 000003   	FE.PKT= 000100   	HFCCR = 000040
A$$PRI= 000000   	C.BID   000003   	E$$XPR= 000000   	FE.PLA= 000020   	HFCHR = 000100
A$$TRP= 000000   	C.BUF   000014   	FB.CA = 000100 G 	FE.SER= 000002   	HT    = 000011
BADCON  005310R  	C.BUF1  000014   	FB.CL0= 000000 G 	FE.TRN= 000007   	INTENB= 000100
BEL   = 000007   	C.BUF2  000024   	FB.CL1= 000001 G 	FF    = 000014   	INTERR  011462R
BS    = 000010   	C.CNT   000020   	FB.CP = 000040 G 	FLSBUF  007014R  	INTPAU  011470R
CAN   = 000030   	C.CNT1  000020   	FB.SST= 000020 G 	FLUSHQ  010372R  	I$$RAR= 000000
CAPREQ  006360R  	C.CNT2  000030   	FB.STE= 000010 G 	FNCOTR= 000022   	I$$RDN= 000000
CB.CCB= 000002   	C.FLG   000022   	FB.STR= 000004 G 	FREAD   003616R  	KDSAR0= 172360
CB.RDB= 000004   	C.FLG1  000022   	FB.WRD= 000002 G 	FRMLEN= 000074   	KDSDR0= 172320
CD.CWD= 000202   	C.FLG2  000032   	FCC     001634R  	FR.BCL= 000002   	KISAR0= 172340
CE.ABO= 100362   	C.FNC   000010   	FCCHR = 000200   	FR.CPN= 000005   	KISAR5= 172352
CE.DIS= 100366   	C.LIN   000006   	FCCTBL  001762R  	FR.DNP= 000007   	KISAR6= 172354
CE.ERR= 100370   	C.LNK   000000   	FCCTBN= 000007   	FR.ERR= 000004   	KISAR7= 172356
CE.MOP= 100372   	C.MOD   000011   	FCT     002130R  	FR.NEB= 000006   	KISDR0= 172300
CE.NTE= 100361   	C.NSP   000004   	FCXTB   000444R  	FR.NST= 000003   	KISDR6= 172314
CE.RTE= 100376   	C.RSV   000002   	FC.CCP= 000020   	FR.USF= 000001   	KISDR7= 172316
CE.SRC= 100364   	C.STA   000007   	FC.CLM= 000003   	FS    = 000034   	K$$CNT= 177546
CE.TMO= 100374   	C.STS   000012   	FC.CL0= 000000   	FSET    004034R  	K$$CSR= 177546
CF.EOM= 000004   	DATA    001246R  	FC.CL1= 000001   	FS.AST= 000000   	K$$LDC= 000000
CF.HDR= 000020   	DC1   = 000021   	FC.CTL= 000006   	FS.CIB= 002000   	K$$TPS= 000074
CF.LB = 100000   	DC2   = 000022   	FC.KCP= 000016   	FS.CRA= 001000   	LA.ABE= 000020 G
CF.SOM= 000010   	DC3   = 000023   	FC.KIL= 000004   	FS.DIS= 013000   	LA.ABO= 000010 G
CF.SYN= 000040   	DC4   = 000024   	FC.RCE= 000002   	FS.DVC= 001000   	LA.ADN= 000004 G
CF.TRN= 000100   	DDMXCP  010074R  	FC.RCP= 000014   	FS.ENB= 012000   	LA.AKR= 000100 G
CHMAP   000204R  	DEL   = 000177   	FC.SST= 000002   	FS.GET= 006000   	LA.CLO= 000001 G
CH.64 = 000001   	DFSLEP  001114R  	FC.TIM= 000010   	FS.INI= 000000   	LA.CPC= 000040 G
CH.96 = 000002   	DFWAKE  001174R  	FC.XCP= 000012   	FS.KIL= 000000   	LA.CTL= 002000 G
CLOSWT  007656R  	DLCXCP  010324R  	FC.XME= 000000   	FS.LTM= 001000   	LA.EOF= 000400 G
CMODE = 140000   	DLE   = 000020   	FEACON  003444R  	FS.MNT= 004000   	LA.EOR= 001000 G
CONINT  005032R  	DM.ASC= 000001   	FEATRS  003210R  	FS.MSN= 014000   	LA.ERR= 000200 G
CONSYN  005364R  	DM.AS8= 000005   	FEFND   004734R  	FS.RNG= 011000   	LA.PAU= 000002 G
CONTRL  005016R  	DM.AUG= 000004   	FERBCL  003514R  	FS.RTN= 001000   	LA.PLE= 010000 G
CR    = 000015   	DM.CLI= 000002   	FERCPN  003536R  	FS.SET= 005000   	LA.TMO= 004000 G
CRASH   000514R  	DM.EBC= 000003   	FERDNP  003552R  	FS.STM= 000000   	LCFETL= 000011 G
CS.ABO= 000100   	DONE  = 000200   	FERERR  003530R  	FS.STP= 002000   	LDFETL= 000012 G
CS.BUF= 000200   	DTXTSZ= 000020 G 	FERNEB  003544R  	FS.STR= 001000   	LD$LP = 000000
CS.DCR= 000400   	DUMP    006046R  	FERNST  003522R  	FS.TRM= 003000   	LECCP   000574R
CS.DEV= 000002   	DWAKP = 000002 G 	FERUSF  003506R  	FS.XKL= 002000   	LECLOS  007460R
CS.DIS= 000040   	DWAKR = 000004 G 	FE.ALL= 000377   	FS.XOF= 010000   	LECTL   000516R
CS.ENB= 000020   	DWAKS = 000001 G 	FE.CAL= 000040   	FS.XON= 007000   	LEDATS= 000031 G
CS.EOF= 000001   	DWAKT = 000003 G 	FE.DAT= 000001   	F$$LVL= 000001   	LEDLRE  007002R
CS.ERR= 100000   	D$$BUG= 177514   	FE.DRV= 000010   	F.FCV = 000001 G 	LEFCCS= 000130 G
CS.HFE= 002000   	D$$ISK= 000000   	FE.DVT= 000006   	F.FSB = 000000 G 	LEHNG = 000005
CS.LST= 040000   	D$$L11= 000001   	FE.DWD= 000011   	F.FSV = 000002 G 	LEHTS = 000031 G
CS.MTL= 004000   	D$$YNC= 000000   	FE.EOF= 000005   	GB      002360R  	LELCRS= 000100 G
CS.RNG= 000010   	D$$YNM= 000000   	FE.ESC= 000000   	GBDQ    002536R  	LENURD  000622R
CS.ROV= 000004   	EM    = 000031   	FE.EXP= 000200   	GETMBF  010012R  	LEOPEN  007054R
CS.RSN= 010000   	ENQ   = 000005   	FE.EXT= 000001   	GETPBF  007710R  	LEPBFS= 000004
CS.SUC= 000001   	EOFASC= 007417   	FE.EXV= 000004   	GOOSLE  010760R  	LEPLES= 000133 G
CS.TMO= 020000   	EOT   = 000004   	FE.FNM= 000010   	GS    = 000035   	LEPRT   011526R
CTLDSP  005340R  	EO.ASC= 000001   	FE.FWD= 000004   	GTCLS   004016R  	LESFCS= 000030 G
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 50-2
SYMBOL TABLE

LESZ  = 000004   	L.HUNG  000045 G 	NC.FM0= 000000   	NS.SET= 000002   	N.CCMD= 000003
LETIM   006616R  	L.IOCN  000050 G 	NC.FM1= 000001   	NS.SFL= 000002   	N.CRES= 000004
LETRNS= 000130 G 	L.IOWT  000052 G 	NC.FM2= 000002   	NS.SOL= 000140   	N.CSEQ= 000002
LEXIT   011510R  	L.LNCT  000066 G 	NC.PAU= 000006   	NS.SUC= 000001   	N.DDAT= 000005
LE.CHS  000260 G 	L.MFLG  000076 G 	NC.RES= 000007   	NT$ABO= 000022   	N.DDL1  000012
LE.DAT  000233 G 	L.MSGA  000134 G 	NC.RQC= 000011   	NT$ACC= 000002   	N.DDL2  000016
LE.DWD  000245 G 	L.MSGQ  000130 G 	NC.RQS= 000004   	NT$ADS= 000000   	N.DDS1  000014
LE.FCC  000255 G 	L.MSGS  000140 G 	ND.ACK= 000001   	NT$CON= 000000   	N.DDS2  000020
LE.FWD  000240 G 	L.NFSP  000103 G 	ND.CMP= 000200   	NT$DAT= 000002   	N.DFLG= 000003
LE.HT   000247 G 	L.PBRC  000126 G 	ND.EOF= 000004   	NT$DIS= 000010   	N.DFMT  000010
LE.LCR  000236 G 	L.PGCT  000040 G 	ND.IER= 000002   	NT$INT= 000004   	N.DGRP  000012
LE.PLE  000262 G 	L.PGLM  000042 G 	NE.ABO= 177776   	NT$MOD= 000012   	N.DOBJ  000011
LE.SFC  000252 G 	L.PLBP  000120 G 	NE.ACT= 177771   	NT$NAK= 000022   	N.DSEQ= 000002
LE.TRN  000242 G 	L.PLBQ  000114 G 	NE.CLS= 177767   	NT$OFF= 000026   	N.DSGC= 000004
LF    = 000012   	L.PLBS  000124 G 	NE.DIS= 177777   	NT$ON = 000002   	N.DUSR  000014
LPB   = 000002   	L.PLNC  000044 G 	NE.FMT= 177770   	NT$QRY= 000014   	N.FCLS= 000002
LPS   = 000000   	L.PRI   000020 G 	NE.NDT= 177766   	NT$REJ= 000004   	N.FDAT= 000004
LP.CHS= 000210   	L.PUBP  000026 G 	NE.NOD= 177774   	NT$RTI= 000010   	N.FFLG= 000001
LP.CVF= 000205   	L.PUBS  000032 G 	NE.REJ= 177775   	NT$RTN= 000000   	N.FID = 000000
LP.FCC= 000206   	L.RATT  000061 G 	NE.RES= 177773   	NT$SNG= 000006   	N.FRSP= 000003
LP.HT = 000202   	L.RECO  000060 G 	NE.TIM= 177772   	NT$STP= 000004   	N.FSEQ= 000002
LP.OPV= 000212   	L.SLN   000046 G 	NF.CMD= 000001   	NT$XOF= 000020   	N.FSPC= 000004
LP.OVP= 000204   	L.TIMC  000000 G 	NF.STD= 000002   	NT$XON= 000016   	N.LGTH= 000160
LP.PLE= 000211   	L.TIMI  000001 G 	NM.ALR= 000004   	NT.ACK= 000001   	N.MFL = 000001
LP.SFC= 000203   	L.VFUA  000070 G 	NM.ATT= 000001   	NT.BOM= 000040   	N.NODE  000000
LP.VFR= 000207   	MB      004416R  	NM.CAP= 000005   	NT.EOM= 000100   	N.NSPC= 000003
LS.ABO= 100201   	MBSND   004564R  	NM.CTL= 000003   	NT.FCN= 037400   	N.OPDL  000136
LS.BOM= 100205   	MPAR  = 172100   	NM.DAT= 000000   	NT.MD1= 000420   	N.OPTD  000140
LS.CLO= 100203   	MPCSR = 177746   	NM.FTR= 000002   	NT.MFL= 000002   	N.PASL  000102
LS.ILM= 100204   	M$$CRB= 000124   	NM.OTR= 000006   	NT.MOD= 000020   	N.PASS  000104
LS.REJ= 100202   	M$$CRX= 000000   	NM.TYP= 000017   	NT.MOM= 000000   	N.PCAP= 000003
L$$ASG= 000000   	M$$FCS= 000000   	NP$RTR= 000003   	NT.NAK= 000002   	N.PCNT= 000002
L$$DRV= 000000   	M$$MGE= 000000   	NRDACK  010300R  	NT.NFL= 000000   	N.RQDL  000060
L$$P11= 000001   	M$$OVR= 000000   	NRDOTR= 000006   	NT.SFL= 000001   	N.RQID  000062
L$$11R= 000000   	NAK   = 000025   	NRDRET  010304R  	NT.SOL= 000140   	N.RSRV= 000030
L.ASTS  000024 G 	NA.DTO= 000004   	NRMACK  000554R  	NT.XOF= 000004   	N.SDL1  000036
L.CALL  000002 G 	NA.FAT= 000001   	NR.ABS= 000000   	NT.XON= 000010   	N.SDL2  000042
L.CAPN  000102 G 	NA.INK= 000040   	NR.ACC= 000000   	NUL   = 000000   	N.SDS1  000040
L.CAPP  000062 G 	NA.IVP= 000001   	NR.ACN= 000001   	N$$DAT= 000030   	N.SDS2  000056
L.CFET  000206 G 	NA.JAM= 000020   	NR.ATT= 000000   	N$$DIS= 000020   	N.SEG   000006
L.CMSQ  000054 G 	NA.NAC= 000002   	NR.CAP= 000000   	N$$INT= 000020   	N.SFMT  000034
L.COCT  000067 G 	NA.NOE= 000100   	NR.DMP= 000000   	N$$LDV= 000001   	N.SGRP  000036
L.CSMP  000064 G 	NA.OFL= 000002   	NR.DPS= 000000   	N$$MOV= 000010   	N.SOBJ  000035
L.CSR   000022 G 	NA.OMD= 000010   	NR.NAB= 000001   	N$$OPT= 000020   	N.SUSR  000040
L.DDMQ  000034 G 	NA.OOF= 000040   	NR.NDP= 000002   	N$$OVR= 000042   	N.TYP = 000000
L.DFET  000220 G 	NA.OUF= 000001   	NR.NDR= 000002   	N$$SYS= 000001   	PAUSE   006076R
L.DFSP  000144 G 	NA.OVP= 000001   	NR.NDV= 100377   	N$$USR= 000001   	PB      002662R
L.DLCQ  000072 G 	NA.PAU= 000004   	NR.NOB= 000001   	N.AABC= 000004   	PBCHR   001554R
L.DMAD  000106 G 	NA.PF = 000020   	NR.NOE= 000002   	N.AACK= 000002   	PBDQ    003034R
L.DMBS  000112 G 	NA.PSE= 000020   	NR.NPS= 000001   	N.ACNT  000116   	PBFF    002336R
L.DMCR  000104 G 	NA.RAP= 000040   	NR.PAU= 000001   	N.ACOD= 000003   	PBFINI  007756R
L.DMSG  000100 G 	NA.REG= 000100   	NR.RES= 000000   	N.ACTL  000114   	PBLF    002266R
L.DMSQ  000077 G 	NA.RNA= 000010   	NS.BOM= 000040   	N.AFLG= 000004   	PBLOD   002756R
L.DMSS  000101 G 	NC.AUC= 000002   	NS.EOM= 000100   	N.ALGD= 000002   	PBROOM  002734R
L.DTXL  000143 G 	NC.AUE= 000001   	NS.MFL= 000003   	N.APLE= 000005   	PCP     003124R
L.DTXT  000146 G 	NC.CAB= 000003   	NS.MOM= 000000   	N.ARQS= 000003   	PGLEN = 000102
L.DWAK  000142 G 	NC.DMP= 000005   	NS.NFL= 000001   	N.ASTC= 000001   	PIRQ  = 177772
LE	- NURD LP11 LINE PRINTE	MACRO M1110  13-OCT-79 08:26  PAGE 50-3
SYMBOL TABLE

PMODE = 030000   	STRTLE  010750R  	VCH9  = 000010   	$XMCMP= ****** GX	.P41  = 000224
PR0   = 000000   	STX   = 000002   	VFBP1 = 000001   	$$    = 000102   	.P42  = 000230
PR1   = 000040   	SUB   = 000032   	VFBP10= 001000   	.P1   = 003777   	.P43  = 000224
PR4   = 000200   	SWR   = 177570   	VFBP11= 002000   	.P10  = 000220   	.P44  = 000620
PR5   = 000240   	SYN   = 000026   	VFBP12= 004000   	.P100 = 000020   	.P45  = 000234
PR6   = 000300   	S$$WRG= 000000   	VFBP2 = 000002   	.P101 = 000020   	.P46  = 000220
PR7   = 000340   	S$$YSZ= 007600   	VFBP3 = 000004   	.P102 = 100020   	.P47  = 000224
PS    = 177776   	TPS   = 177564   	VFBP4 = 000010   	.P11  = 000224   	.P5   = 000224
P$$DDC= 000001   	T$$KMG= 000000   	VFBP5 = 000020   	.P12  = 000230   	.P50  = 000230
P$$P45= 000000   	T$$MIN= 000000   	VFBP6 = 000040   	.P13  = 000664   	.P51  = 000764
P$$WRD= 000000   	UBMPR = 170200   	VFBP7 = 000100   	.P14  = 000220   	.P52  = 000220
QDDM    010714R  	UDSAR0= 177660   	VFBP8 = 000200   	.P15  = 000234   	.P53  = 000234
QDLC    000764R  	UDSDR0= 177620   	VFBP9 = 000400   	.P16  = 000220   	.P54  = 000220
QTODLC  000750R  	UISAR0= 177640   	VFC     002000R  	.P17  = 000224   	.P55  = 000224
Q$$OPT= 000010   	UISAR4= 177650   	VFU66S= 000204   	.P2   = 000220   	.P56  = 001630
RECON   005114R  	UISAR5= 177652   	VF.6LI= 000001   	.P20  = 001630   	.P57  = 000224
RESUME  006154R  	UISAR6= 177654   	VF.8LI= 000002   	.P21  = 000224   	.P6   = 000620
RS    = 000036   	UISAR7= 177656   	VT    = 000013   	.P22  = 000220   	.P60  = 000220
R$$DER= 000000   	UISDR0= 177600   	V$$CTR= 001000   	.P23  = 000234   	.P61  = 000234
R$$K11= 000001   	UISDR4= 177610   	X$$DBT= 000000   	.P24  = 000220   	.P62  = 000220
R$$SND= 000000   	UISDR5= 177612   	$CCBRT= ****** GX	.P25  = 000764   	.P63  = 000664
R$$11M= 000000   	UISDR6= 177614   	$CSBGT= ****** GX	.P26  = 000230   	.P64  = 000230
SETSTD  004264R  	UISDR7= 177616   	$CSBRT= ****** GX	.P27  = 000224   	.P65  = 000224
SI    = 000017   	US    = 000037   	$CTCMP= ****** GX	.P3   = 000224   	.P66  = 000220
SISDR0= 172200   	VCH1  = 000000   	$DDXMP= ****** GX	.P30  = 000220   	.P67  = 000234
SNDALR  006536R  	VCH10 = 000011   	$INTSX= ****** GX	.P31  = 000234   	.P7   = 000234
SNDATT  005564R  	VCH11 = 000012   	$LEASC  000244RG 	.P32  = 000620   	.P70  = 000620
SNDCAP  006370R  	VCH12 = 000013   	$LEINT  011010RG 	.P33  = 000224   	.P71  = 000224
SNDSTS  005544R  	VCH2  = 000001   	$LETB   000472RG 	.P34  = 000230   	.P72  = 000230
SO    = 000016   	VCH3  = 000002   	$RCCMP= ****** GX	.P35  = 000224   	.P73  = 000224
SOH   = 000001   	VCH4  = 000003   	$RDBGT= ****** GX	.P36  = 000220   	.P74  = 000220
SPA   = 000040   	VCH5  = 000004   	$RDBRT= ****** GX	.P37  = 001676   	.P75  = 004020
SR0   = 177572   	VCH6  = 000005   	$RDBSZ= ****** GX	.P4   = 000230   	.P76  = 000020
SR3   = 172516   	VCH7  = 000006   	$SDBSZ= ****** GX	.P40  = 000220   	.P77  = 000020
STOPLE  010776R  	VCH8  = 000007   	$VFU66  000000RG

. ABS.	000266	   000
      	011652	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  20304 WORDS  ( 80 PAGES)
DYNAMIC MEMORY:  20620 WORDS  ( 79 PAGES)
ELAPSED TIME:  00:03:02
LE,[131,34]LE/CR/-SP=[130,10]NETLIB/ML,RSXTMP/PA:1,[131,10]LE
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ABRTAL	  006256 R	 33-1530   #38-1742   
ABRTCL	  006330 R	 33-1531   #38-1755   
ABRTEF	  006250 R	 33-1529   #38-1738   
ACK   	= 000006	#9-185     
BADCON	  005310 R	 33-1469    33-1471    33-1473   #33-1520    33-1528    33-1536   
BEL   	= 000007	#9-186     
BS    	= 000010	#9-187     
CAN   	= 000030	#9-203     
CAPREQ	  006360 R	 33-1537   #39-1767   
CB.RDB	= 000004	 42-1892   
CD.CWD	= 000202	#6-103     
CHMAP 	  000204 R	#11-334     20-815    
CH.64 	= 000001	#6-103     
CH.96 	= 000002	#6-103     
CLOSWT	  007656 R	 41-1838   #44-2012   
CONINT	  005032 R	 33-1465   #33-1468   
CONSYN	  005364 R	 15-571    #34-1545   
CONTRL	  005016 R	 14-515    #33-1464   
CR    	= 000015	#9-192      11-372     19-797     21-860    
CRASH 	  000514 R	 12-397     12-401     12-402    #12-406     12-411     12-414     12-415     12-416     12-417    
                         12-418     12-419     12-430     12-431     12-432     12-433     12-434     12-435     12-436    
CTLDSP	  005340 R	 33-1478   #33-1528    33-1538    34-1556   
CTLOTR	= 000012	 33-1472   #33-1538    34-1550   
CTLSTP	  007460 R	 12-413    #44-1993   
CTLSTR	  007054 R	 12-412    #43-1910   
C.BID 	  000003	 42-1892   
C.BUF 	  000014	 14-502     14-503     23-955     23-956     25-1014    25-1015    28-1145    28-1146    31-1389   
                         31-1390    33-1501    33-1502    33-1507    33-1508    35-1621    35-1667    39-1780    40-1819   
                         42-1894   *42-1898   *45-2042    45-2051    45-2052    49-2232   
C.BUF2	  000024	 42-1898    45-2042   *45-2051   *45-2052   
C.CNT 	  000020	 23-957     25-1016   *25-1025    31-1391   *31-1406    33-1468   *33-1514   *35-1668   *39-1786   
                        *39-1799    39-1807   *40-1822   *45-2034   *45-2043   *45-2054   
C.CNT2	  000030	*45-2035    45-2043   *45-2053    45-2054   
C.FLG2	  000032	*24-970    *45-2031   *45-2044    46-2082   
C.FNC 	  000010	*45-2030   *45-2056   
C.LIN 	  000006	*12-425    *14-528    *14-530    *31-1410   *33-1515   *35-1670   *39-1810   *40-1825   *45-2029   
                        *45-2041   *45-2050    46-2079   *46-2101   *46-2117   *47-2142    49-2229   
C.MOD 	  000011	*31-1409    33-1464   *40-1824   *46-2103   
C.STS 	  000012	*17-719     23-938     24-971     24-978    *31-1388   *31-1403   *31-1405    31-1410   *33-1520   
                        *45-2028   *45-2040   *45-2055    46-2087    46-2091   *46-2111   *46-2116    46-2117   
DATA  	  001246 R	 15-574    #17-650    
DC1   	= 000021	#9-196      11-374    
DC2   	= 000022	#9-197      11-375    
DC3   	= 000023	#9-198      11-376     19-782     19-786     19-796    
DC4   	= 000024	#9-199      11-377     19-798    
DDMXCP	  010074 R	 15-546    #46-2079    47-2138    49-2225   
DEL   	= 000177	#9-212      43-1932   
DFSLEP	  001114 R	#16-587     23-952     25-1019    31-1397   
DFWAKE	  001174 R	 15-560    #16-609     41-1847    46-2126   
DLCXCP	  010324 R	 12-400    #46-2122   
DLE   	= 000020	#9-195      11-373     19-800    
DM.ASC	= 000001	#6-103     
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

DM.AS8	= 000005	#6-103     
DM.AUG	= 000004	#6-103     
DM.CLI	= 000002	#6-103     
DM.EBC	= 000003	#6-103     
DONE  	= 000200	#10-220    
DTXTSZ	= 000020  G	#5-97       5-97       16-596    
DUMP  	  006046 R	 33-1533   #36-1678   
DWAKP 	= 000002  G	#5-97       25-1019    46-2099    46-2123   
DWAKR 	= 000004  G	#5-97       37-1725   
DWAKS 	= 000001  G	#5-97       15-558     23-952    
DWAKT 	= 000003  G	#5-97       31-1397    37-1727    41-1845   
EM    	= 000031	#9-204     
ENQ   	= 000005	#9-184     
EOFASC	= 007417	#6-103     
EOT   	= 000004	#9-183     
EO.ASC	= 000001	#6-103     
EO.IMG	= 000002	#6-103     
ERRCHR	= 000334	#9-213     
ERROR 	= 100000	#10-219    
ESC   	= 000033	#9-206     
ETB   	= 000027	#9-202     
ETX   	= 000003	#9-182     
FB.CA 	= 000100  G	#5-97       5-97       5-97       5-97       5-97       30-1271   
FB.CL0	= 000000  G	#5-97       5-97       5-97       5-97       5-97      
FB.CL1	= 000001  G	#5-97       5-97       5-97       5-97       29-1254    30-1275   
FB.CP 	= 000040  G	#5-97       27-1135   
FB.SST	= 000020  G	#5-97       5-97       5-97       5-97       5-97       5-97       5-97       29-1197    30-1287   
                         30-1340   
FB.STE	= 000010  G	#5-97       5-97       5-97       5-97       5-97       5-97       5-97       30-1331   
FB.STR	= 000004  G	#5-97       29-1213    29-1225    30-1281    30-1290    30-1336    30-1344   
FB.WRD	= 000002  G	#5-97       5-97       29-1213    30-1281    30-1336   
FCC   	  001634 R	 17-694    #19-767    
FCCHR 	= 000200	#11-360     11-368     11-369     11-370     11-371     11-372     11-373     11-374     11-375    
                         11-376     11-377    
FCCTBL	  001762 R	 19-767    #19-795     19-802    
FCCTBN	= 000007	 19-768    #19-802    
FCT   	  002130 R	 17-702     19-793    #20-847    
FCXTB 	  000444 R	#11-368     43-1943   
FC.CLM	= 000003	#6-103     
FC.CL0	= 000000	#6-103     
FC.CL1	= 000001	#6-103      29-1256    30-1277   
FC.RCP	= 000014	 45-2056   
FC.SST	= 000002	#6-103      27-1109    30-1269   
FC.XCP	= 000012	 45-2030   
FEACON	  003444 R	#28-1141    28-1174    29-1223    30-1325   
FEATRS	  003210 R	 15-577    #27-1081   
FEFND 	  004734 R	 27-1122    27-1126   #32-1423   
FERBCL	  003514 R	#28-1153    30-1276   
FERCPN	  003536 R	 27-1136   #28-1159   
FERDNP	  003552 R	#28-1163   
FERERR	  003530 R	 27-1110   #28-1157    30-1272    30-1284    30-1313   
FERNEB	  003544 R	#28-1161   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FERNST	  003522 R	#28-1155    30-1324   
FERUSF	  003506 R	 27-1127   #28-1151   
FE.ALL	= 000377	#6-103      27-1103   
FE.DAT	= 000001	#6-103     
FE.DVT	= 000006	#6-103     
FE.DWD	= 000011	#6-103     
FE.EOF	= 000005	#6-103     
FE.ESC	= 000000	#6-103     
FE.FNM	= 000010	#6-103     
FE.FWD	= 000004	#6-103     
FE.LCR	= 000003	#6-103     
FE.SER	= 000002	#6-103     
FE.TRN	= 000007	#6-103     
FF    	= 000014	#9-191      11-371     19-799     22-913     50-2326   
FLSBUF	  007014 R	 42-1889   #42-1892    44-2001    47-2146   
FLUSHQ	  010372 R	 38-1752    44-1996   #47-2134   
FNCOTR	= 000022	#12-404    
FREAD 	  003616 R	 27-1138   #29-1191    30-1288    30-1320   
FRMLEN	= 000074	#11-284    
FR.BCL	= 000002	#6-103      28-1153   
FR.CPN	= 000005	#6-103      28-1159   
FR.DNP	= 000007	#6-103      28-1163   
FR.ERR	= 000004	#6-103      28-1157   
FR.NEB	= 000006	#6-103      28-1161   
FR.NST	= 000003	#6-103      28-1155   
FR.USF	= 000001	#6-103      28-1151   
FS    	= 000034	#9-207     
FSET  	  004034 R	 27-1139   #30-1269   
F.FCV 	= 000001  G	#5-97       17-669     18-727     18-729     18-736     21-868     21-870     21-875     29-1232   
                         30-1302   *30-1339    30-1348   
F.FSB 	= 000000  G	#5-97      
F.FSV 	= 000002  G	#5-97       30-1339    30-1350    30-1351   
GB    	  002360 R	 15-563     15-565     17-650     17-652     17-659     17-664     17-683    #23-927     23-958    
                         27-1085    27-1088    27-1092    27-1094    27-1096    27-1100    30-1280    30-1285    30-1295   
                         30-1297    30-1316    34-1545    34-1547   
GBDQ  	  002536 R	 17-720     23-944    #24-961     28-1148    34-1570    34-1593   
GETMBF	  010012 R	 31-1386    33-1492    35-1619    39-1778    40-1817   #45-2048   
GETPBF	  007710 R	 43-1959   #45-2026   
GOOSLE	  010760 R	 36-1703    37-1716   #48-2179   
GS    	= 000035	#9-208     
GTCLS 	  004016 R	 29-1202   #29-1253   
HFC   	  002134 R	#21-857    
HFCCR 	= 000040	#11-362     11-372    
HFCHR 	= 000100	#11-361     11-368     11-372    
HT    	= 000011	#9-188      11-368    
INTENB	= 000100	#10-221     48-2180    49-2271   
INTERR	  011462 R	#50-2295   
INTPAU	  011470 R	 49-2252    49-2286   #50-2298   
KISAR6	= 172354	*14-502    *23-929    *25-987    *28-1145   *31-1379   *33-1501   *33-1507    49-2204   *49-2209   
                        *49-2239   *50-2303   
LA.ABE	= 000020  G	#5-97       38-1756    38-1758   
LA.ABO	= 000010  G	#5-97       15-544     38-1743    38-1756    38-1758    46-2109   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

LA.ADN	= 000004  G	#5-97       23-942     33-1523    34-1592    35-1630    36-1694    37-1711    37-1713    49-2249   
LA.AKR	= 000100  G	#5-97       17-655     17-721     46-2091   
LA.CLO	= 000001  G	#5-97       14-500     43-1912    43-1975    44-1995   
LA.CPC	= 000040  G	#5-97       46-2089    49-2233    49-2236   
LA.CTL	= 002000  G	#5-97      
LA.EOF	= 000400  G	#5-97       17-658     17-721     46-2087   
LA.EOR	= 001000  G	#5-97       17-671     17-691     17-695    
LA.ERR	= 000200  G	#5-97       35-1634    37-1713    41-1850    41-1856    50-2295   
LA.PAU	= 000002  G	#5-97       35-1638    36-1694    36-1702    37-1711    37-1713    48-2175    49-2207    49-2251   
                         49-2285    50-2295   
LA.PLE	= 010000  G	#5-97       35-1652    37-1713    49-2285   
LA.TMO	= 004000  G	#5-97       35-1645    41-1863   
LCFETL	= 000011  G	#5-97      
LDFETL	= 000012  G	#5-97      
LECCP 	  000574 R	 12-403    #12-429    
LECLOS	  007460 R	#44-1994   
LECTL 	  000516 R	 12-398    #12-410    
LEDATS	= 000031  G	#5-97      
LEDLRE	  007002 R	 12-396    #42-1888   
LEFCCS	= 000130  G	#5-97      
LEHNG 	= 000005	#4-92       48-2179    49-2270   
LEHTS 	= 000031  G	#5-97      
LELCRS	= 000100  G	#5-97      
LENURD	  000622 R	 12-395    #14-500    
LEOPEN	  007054 R	#43-1911   
LEPBFS	= 000004	#4-91       43-1958   
LEPLES	= 000133  G	#5-97      
LEPRT 	  011526 R	 49-2219    49-2256   #50-2310   
LESFCS	= 000030  G	#5-97      
LESZ  	= 000004	#10-224    
LETIM 	  006616 R	 12-399    #41-1836   
LETRNS	= 000130  G	#5-97      
LEXIT 	  011510 R	 49-2250    49-2272    50-2299   #50-2303   
LE.CHS	  000260  G	#5-97      
LE.DAT	  000233  G	#5-97      
LE.DWD	  000245  G	#5-97      
LE.FCC	  000255  G	#5-97       17-669    
LE.FWD	  000240  G	#5-97       18-727     21-868     21-875    
LE.HT 	  000247  G	#5-97      
LE.LCR	  000236  G	#5-97       18-736    
LE.PLE	  000262  G	#5-97      
LE.SFC	  000252  G	#5-97      
LE.TRN	  000242  G	#5-97       18-729     21-870    
LF    	= 000012	#9-189      11-369     19-795     20-828     22-904     50-2310    50-2333   
LPB   	= 000002	#10-222    
LPS   	= 000000	#10-218    
LP.CHS	= 000210	#6-103     
LP.CVF	= 000205	#6-103     
LP.FCC	= 000206	#6-103     
LP.HT 	= 000202	#6-103     
LP.OPV	= 000212	#6-103     
LP.OVP	= 000204	#6-103     
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

LP.PLE	= 000211	#6-103     
LP.SFC	= 000203	#6-103     
LP.VFR	= 000207	#6-103     
LS.ABO	= 100201	#4-84       14-530     46-2111    47-2142   
LS.BOM	= 100205	#4-84      
LS.CLO	= 100203	#4-84      
LS.ILM	= 100204	#4-84       14-528    
LS.REJ	= 100202	#4-84       33-1520    43-1974   
L$$SI1	= ******	 24-963     24-963     25-1024    25-1024    31-1392    31-1392    31-1408    31-1408    31-1408   
                         33-1477    33-1477    33-1500    33-1500    43-1962    43-1962    44-1999    44-1999    44-1999   
                         44-2004    44-2004    44-2004    46-2106    46-2106    46-2122    46-2122    47-2137    47-2137   
                         47-2137    47-2141    47-2141    47-2141    47-2145    47-2145    47-2145    48-2172    48-2172   
                         49-2223    49-2223   
L.ASTS	  000024  G	#5-97       14-500     15-544    *17-655    *17-658    *17-671     17-691    *17-695     17-719    
                        *17-721    *23-942    *33-1523   *34-1592    35-1628    36-1694   *36-1702    37-1711   *37-1713   
                        *38-1743    38-1756   *38-1758    41-1850   *41-1856   *41-1863    43-1912   *43-1915   *43-1975   
                        *44-1995   *46-2089    46-2109    48-2175    49-2207    49-2233   *49-2236    49-2249   *49-2251   
                        *49-2285   *50-2295   
L.CALL	  000002  G	#5-97      
L.CAPN	  000102  G	#5-97      *27-1102   *27-1106    27-1114   *27-1116    27-1120    28-1141   
L.CAPP	  000062  G	#5-97       34-1586    36-1681   *39-1768   *39-1812    41-1872   *43-1930   
L.CFET	  000206  G	#5-97       5-97       27-1106    32-1423    39-1788    43-1952   
L.CMSQ	  000054  G	#5-97       33-1477   *33-1477    33-1500   *33-1500   *33-1500    33-1500   *33-1500    44-2004   
                        *44-2004   *44-2004    44-2004   *44-2004   
L.COCT	  000067  G	#5-97       18-727    *18-743    *20-810    *21-859     21-863    *21-889    *22-907    *22-916    
L.CSMP	  000064  G	#5-97       17-685     19-791    *43-1949   
L.CSR 	  000022  G	#5-97       41-1852    43-1914    44-1994    48-2180    48-2185    49-2205   
L.DDMQ	  000034  G	#5-97       36-1683    36-1698    37-1714    38-1745    47-2137   *47-2137   *47-2137    47-2137   
                        *47-2137    48-2172   *48-2172    49-2223   *49-2223   *49-2223    49-2223   *49-2223    49-2227   
L.DFET	  000220  G	#5-97       5-97       27-1116    32-1427    43-1954   
L.DFSP	  000144  G	#5-97      *15-562     16-602    *16-615     23-947    
L.DLCQ	  000072  G	#5-97       15-554    *15-555     15-556     15-578     23-937     23-950     24-963    *24-963    
                        *24-963     24-963    *24-963     36-1696    37-1718    38-1747    47-2141   *47-2141   *47-2141   
                         47-2141   *47-2141   
L.DMAD	  000106  G	#5-97       23-929     23-931    *23-932     23-935    *23-955    *23-956    *24-961    *43-1918   
                        *43-1919   *47-2153   *47-2154   
L.DMBS	  000112  G	#5-97      *23-927    *23-957    *24-962    *43-1920   *47-2155   
L.DMCR	  000104  G	#5-97      *17-677    *17-681    *17-706    *17-709    
L.DMSG	  000100  G	#5-97      *17-660    *17-714    
L.DMSQ	  000077  G	#5-97      *17-651    *27-1086   *34-1546    34-1575    35-1624   *43-1921   
L.DMSS	  000101  G	#5-97      *17-675    *17-680    *17-710    
L.DTXL	  000143  G	#5-97      *16-594     16-596    *16-601     16-611    *16-618    
L.DTXT	  000146  G	#5-97      *16-587     16-588     16-613    
L.DWAK	  000142  G	#5-97       15-558    *16-609    *23-952    *25-1019   *31-1397    37-1725   *37-1727    38-1749   
                         41-1845   *43-1917    46-2099    46-2123   *47-2149   
L.HUNG	  000045  G	#5-97       41-1859   *41-1861   *43-1927   *48-2179   *48-2186   *49-2200   *49-2270   
L.IOCN	  000050  G	#5-97      *31-1411   *33-1516   *35-1671   *39-1811   *40-1826   *42-1888   *42-1890   *43-1925   
                         44-2012   
L.IOWT	  000052  G	#5-97       41-1836   *43-1926   *44-2009    44-2018   *44-2019   
L.LNCT	  000066  G	#5-97       20-816    *20-832     20-839    *20-841     22-897    *22-906    *22-915    
L.MFLG	  000076  G	#5-97      *15-566    
L.MSGA	  000134  G	#5-97       31-1379    31-1380   *31-1381   *31-1389   *31-1390   *43-1922   *43-1923   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

L.MSGQ	  000130  G	#5-97       28-1144    31-1392   *31-1392    31-1401    31-1404    31-1408   *31-1408   *31-1408   
                         31-1408   *31-1408    38-1748    47-2145   *47-2145   *47-2145    47-2145   *47-2145   
L.MSGS	  000140  G	#5-97      *31-1377   *31-1384   *31-1391    31-1406   *31-1414   *43-1924   *47-2156   
L.NFSP	  000103  G	#5-97      *27-1090    28-1147   *28-1173   *29-1222   
L.PBRC	  000126  G	#5-97      *17-687     17-690    *30-1296    30-1299   
L.PGCT	  000040  G	#5-97       35-1663   *43-1931   *49-2235   *50-2318    50-2321   
L.PGLM	  000042  G	#5-97       50-2319    50-2321   
L.PLBP	  000120  G	#5-97       24-966     25-987     25-988    *25-989     25-992     25-1002   *25-1014   *25-1015   
                        *25-1026    38-1746   *43-1967   *43-1968   *47-2151   
L.PLBQ	  000114  G	#5-97       17-718     24-969     25-1011    25-1024   *25-1024   *25-1024    25-1024   *25-1024   
                         43-1962   *43-1962    43-1965    44-1999   *44-1999   *44-1999    44-1999   *44-1999    46-2106   
                        *46-2106    46-2122   *46-2122   
L.PLBS	  000124  G	#5-97      *25-985    *25-994     25-1004   *25-1016    25-1025   *25-1027   *43-1969   *47-2152   
L.PLNC	  000044  G	#5-97      *50-2313    50-2314   *50-2317    50-2328   
L.PRI 	  000020  G	#5-97      *49-2200    49-2202   
L.PUBP	  000026  G	#5-97       49-2209    49-2210   *49-2238    49-2239   *49-2242   *49-2269   *49-2283   *49-2291   
L.PUBS	  000032  G	#5-97      *43-1916   *47-2150    49-2211   *49-2244   *49-2248   *49-2268   *49-2282   *49-2290   
L.RATT	  000061  G	#5-97       34-1582    35-1599   *35-1601    35-1616   *35-1672    36-1679    41-1864   *41-1866   
                         41-1868   *43-1929    46-2093   *46-2097   *49-2284    50-2298   *50-2300   
L.RECO	  000060  G	#5-97      *33-1494    41-1840   *41-1842   *43-1928   
L.SLN 	  000046  G	#5-97       12-425     14-528     14-530     31-1410    33-1515    35-1670    39-1810    40-1825   
                         45-2050    46-2101    46-2117    47-2142   
L.TIMC	  000000  G	#5-97      
L.TIMI	  000001  G	#5-97       43-1971   
L.VFUA	  000070  G	#5-97       20-819     22-899    
MB    	  004416 R	 27-1082    27-1084    27-1087    27-1091    28-1165    28-1168    28-1170    28-1172    29-1192   
                         29-1200    29-1204    29-1207    29-1217    29-1220    29-1229    29-1235    29-1243    29-1246   
                        #31-1377    31-1394    34-1572    34-1574    34-1576    34-1578    34-1580   
MBSND 	  004564 R	 28-1149   #31-1401    34-1581   
M$$MGE	= 000000	 5-97       14-502     23-929     25-987     28-1145    31-1379    33-1501    33-1507    49-2204   
                         49-2209    49-2237    50-2303   
NAK   	= 000025	#9-200     
NA.DTO	= 000004	#6-103      35-1647   
NA.FAT	= 000001	#6-103      35-1632   
NA.INK	= 000040	#6-103     
NA.IVP	= 000001	#6-103     
NA.JAM	= 000020	#6-103     
NA.NAC	= 000002	#6-103     
NA.NOE	= 000100	#6-103     
NA.OFL	= 000002	#6-103      35-1636   
NA.OMD	= 000010	#6-103     
NA.OOF	= 000040	#6-103     
NA.OUF	= 000001	#6-103     
NA.OVP	= 000001	#6-103      35-1654   
NA.PAU	= 000004	#6-103      35-1640   
NA.PF 	= 000020	#6-103     
NA.PSE	= 000020	#6-103     
NA.RAP	= 000040	#6-103     
NA.REG	= 000100	#6-103     
NA.RNA	= 000010	#6-103     
NC.AUC	= 000002	#6-103     
NC.AUE	= 000001	#6-103     
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

NC.CAB	= 000003	#6-103     
NC.DMP	= 000005	#6-103     
NC.PAU	= 000006	#6-103     
NC.RES	= 000007	#6-103     
NC.RQC	= 000011	#6-103     
NC.RQS	= 000004	#6-103     
ND.ACK	= 000001	#6-103      17-653    
ND.CMP	= 000200	#6-103     
ND.EOF	= 000004	#6-103      17-656    
ND.IER	= 000002	#6-103     
NF.CMD	= 000001	#6-103      27-1107    27-1137    29-1196   
NF.STD	= 000002	#6-103      29-1199   
NM.ALR	= 000004	#6-103      40-1820   
NM.ATT	= 000001	#6-103      35-1622   
NM.CAP	= 000005	#6-103      39-1782   
NM.CTL	= 000003	#6-103      15-569     33-1509    34-1571   
NM.DAT	= 000000	#6-103     
NM.FTR	= 000002	#6-103      27-1081   
NM.OTR	= 000006	#6-103     
NM.TYP	= 000017	#6-103      6-103      6-103      6-103      6-103      6-103      6-103      6-103      14-505    
NRDACK	  010300 R	 33-1505    44-2005    46-2110   #46-2116   
NRDOTR	= 000006	 14-506     14-508    #14-518    
NRDRET	  010304 R	 33-1521    46-2112   #46-2117   
NRMACK	  000554 R	 12-420     12-421     12-422     12-423    #12-425    
NR.ABS	= 000000	#6-103     
NR.ACC	= 000000	#6-103     
NR.ACN	= 000001	#6-103      38-1761   
NR.ATT	= 000000	#6-103     
NR.CAP	= 000000	#6-103     
NR.DMP	= 000000	#6-103     
NR.DPS	= 000000	#6-103     
NR.NAB	= 000001	#6-103      38-1751   
NR.NDP	= 000002	#6-103      36-1700   
NR.NDR	= 000002	#6-103      37-1720   
NR.NDV	= 100377	#4-84      
NR.NOB	= 000001	#6-103     
NR.NOE	= 000002	#6-103      38-1738   
NR.NPS	= 000001	#6-103      37-1723   
NR.PAU	= 000001	#6-103      36-1705   
NR.RES	= 000000	#6-103     
NT$DAT	= 000002	 31-1409    45-2056   
NT$INT	= 000004	 33-1464    40-1824   
NT$RTN	= 000000	 45-2030    46-2103   
NT.BOM	= 000040	 31-1403    33-1515    35-1670    39-1810    40-1825    45-2055   
NT.EOM	= 000100	 23-938     23-945     31-1405    33-1515    35-1670    39-1810    40-1825    45-2055   
NUL   	= 000000	#9-179     
N.AABC	= 000004	#6-103     
N.AACK	= 000002	#6-103      46-2095    46-2097   
N.ACOD	= 000003	#6-103     
N.AFLG	= 000004	#6-103     
N.ALGD	= 000002	#6-103     
N.APLE	= 000005	#6-103      49-2284   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

N.ARQS	= 000003	#6-103      35-1601   
N.ASTC	= 000001	#6-103      41-1866    50-2300   
N.CCMD	= 000003	#6-103      33-1468    33-1470    33-1503   
N.CRES	= 000004	#6-103      33-1514   
N.CSEQ	= 000002	#6-103      33-1504   
N.DDAT	= 000005	#6-103     
N.DFLG	= 000003	#6-103     
N.DSEQ	= 000002	#6-103     
N.DSGC	= 000004	#6-103     
N.FCLS	= 000002	#6-103     
N.FDAT	= 000004	#6-103     
N.FFLG	= 000001	#6-103     
N.FID 	= 000000	#6-103     
N.FRSP	= 000003	#6-103     
N.FSEQ	= 000002	#6-103     
N.FSPC	= 000004	#6-103     
N.MFL 	= 000001	#6-103     
N.NSPC	= 000003	#6-103     *28-1147   
N.PCAP	= 000003	#6-103     
N.PCNT	= 000002	#6-103     
N.TYP 	= 000000	#6-103     
PAUSE 	  006076 R	 33-1534   #36-1693   
PB    	  002662 R	 18-742     20-831     21-861     21-886     22-905     22-914    #25-985     25-998     26-1054   
                         26-1056   
PBCHR 	  001554 R	 17-705    #18-727     19-778    
PBDQ  	  003034 R	 24-972     25-995     25-1007   #25-1024   
PBFF  	  002336 R	 20-813     20-823     22-901     22-903    #22-913    
PBFINI	  007756 R	 25-1013    44-2000   #45-2040   
PBLF  	  002266 R	 18-733     19-788     21-872    #22-896    
PBLOD 	  002756 R	 25-997     25-1003   #25-1011    25-1020   
PBROOM	  002734 R	 19-781     19-785    #25-1002    26-1048   
PCP   	  003124 R	 20-837     21-883    #26-1037    26-1044   
PGLEN 	= 000102	#11-283     11-326     50-2314    50-2328   
PR7   	= 000340	 24-963     25-1024    31-1392    31-1408    33-1477    33-1500    43-1962    44-1999    44-2004   
                         46-2106    46-2122    47-2137    47-2141    47-2145    48-2172    49-2223   
PS    	= 177776	 24-963     24-963     24-963     25-1024    25-1024    25-1024    31-1392    31-1392    31-1392   
                         31-1408    31-1408    31-1408    31-1408    33-1477    33-1477    33-1477    33-1500    33-1500   
                         33-1500    43-1962    43-1962    43-1962    44-1999    44-1999    44-1999    44-1999    44-2004   
                         44-2004    44-2004    44-2004    46-2106    46-2106    46-2106    46-2122    46-2122    46-2122   
                         47-2137    47-2137    47-2137    47-2137    47-2141    47-2141    47-2141    47-2141    47-2145   
                         47-2145    47-2145    47-2145    48-2172    48-2172    48-2172    49-2223    49-2223    49-2223   
QDDM  	  010714 R	 24-979     25-1028   #48-2171   
QDLC  	  000764 R	 15-545    #15-548     33-1466   
QTODLC	  000750 R	 14-512     14-514    #15-544    
RECON 	  005114 R	#33-1492    41-1843   
RESUME	  006154 R	 33-1535   #37-1710   
RS    	= 000036	#9-209     
SETSTD	  004264 R	 30-1322   #30-1331    43-1989   
SI    	= 000017	#9-194     
SNDALR	  006536 R	#40-1817    41-1854   
SNDATT	  005564 R	 34-1584   #35-1615    41-1870    46-2098    50-2301   
SNDCAP	  006370 R	 34-1589   #39-1778    41-1874   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

SNDSTS	  005544 R	 33-1532   #35-1598   
SO    	= 000016	#9-193     
SOH   	= 000001	#9-180     
SPA   	= 000040	#9-211      19-777     21-879    
STOPLE	  010776 R	 23-941     23-952     25-1019    31-1397    33-1522    34-1591    36-1701    38-1742    47-2135   
                         48-2171   #48-2185   
STRTLE	  010750 R	 16-604     33-1524   #48-2175   
STX   	= 000002	#9-181     
SUB   	= 000032	#9-205     
SYN   	= 000026	#9-201     
US    	= 000037	#9-210      43-1938   
VCH1  	= 000000	 11-287    
VCH2  	= 000001	 11-373    
VCH3  	= 000002	 11-374    
VCH4  	= 000003	 11-375    
VCH5  	= 000004	 11-376    
VCH6  	= 000005	 11-377    
VCH7  	= 000006	 11-370    
VCH8  	= 000007	 11-369    
VFBP1 	= 000001	 11-334    
VFBP10	= 001000	 11-343    
VFBP11	= 002000	 11-344    
VFBP12	= 004000	 11-345    
VFBP2 	= 000002	 11-335    
VFBP3 	= 000004	 11-336    
VFBP4 	= 000010	 11-337    
VFBP5 	= 000020	 11-338    
VFBP6 	= 000040	 11-339    
VFBP7 	= 000100	 11-340    
VFBP8 	= 000200	 11-341     22-902    
VFBP9 	= 000400	 11-342    
VFC   	  002000 R	#20-810     20-848    
VFU66S	= 000204	#11-330    
VF.6LI	= 000001	#6-103     
VF.8LI	= 000002	#6-103     
VT    	= 000013	#9-190      11-370     19-801    
$CCBRT	= ******  GX	 12-437     12-438     42-1896   
$CSBGT	= ******  GX	 45-2048   
$CSBRT	= ******  GX	 42-1899   
$CTCMP	= ******  GX	 12-425     43-1978    44-2021   
$DDXMP	= ******  GX	 46-2104   
$INTSX	= ******  GX	 49-2201   
$LEASC	  000244 RG	#11-355    *43-1933   *43-1936   *43-1940   *43-1942   *43-1946    43-1949   
$LEINT	  011010 RG	#49-2200   
$LETB 	  000472 RG	#12-395     12-404    
$RCCMP	= ******  GX	 31-1410    33-1515    35-1670    39-1810    40-1825   
$RDBGT	= ******  GX	 45-2026   
$RDBRT	= ******  GX	 42-1901   
$RDBSZ	= ******  GX	 45-2035   
$SDBSZ	= ******  GX	 45-2053   
$VFU66	  000000 RG	#11-324     11-330    
$XMCMP	= ******  GX	 14-528     14-530     46-2117    47-2142   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 10

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

$$    	= 000102	#11-325     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329     11-329    #11-329     11-329     11-329    #11-329     11-329     11-329    #11-329    
                         11-329    
.P1   	= 003777	 11-297     11-329    
.P10  	= 000220	 11-329    
.P100 	= 000020	 11-329    
.P101 	= 000020	 11-329    
.P102 	= 100020	 11-329    
.P11  	= 000224	 11-329    
.P12  	= 000230	 11-329    
.P13  	= 000664	 11-329    
.P14  	= 000220	 11-329    
.P15  	= 000234	 11-329    
.P16  	= 000220	 11-329    
.P17  	= 000224	 11-329    
.P2   	= 000220	 11-329    
.P20  	= 001630	 11-329    
.P21  	= 000224	 11-329    
.P22  	= 000220	 11-329    
.P23  	= 000234	 11-329    
.P24  	= 000220	 11-329    
.P25  	= 000764	 11-329    
.P26  	= 000230	 11-329    
.P27  	= 000224	 11-329    
.P3   	= 000224	 11-329    
.P30  	= 000220	 11-329    
.P31  	= 000234	 11-329    
.P32  	= 000620	 11-329    
.P33  	= 000224	 11-329    
.P34  	= 000230	 11-329    
.P35  	= 000224	 11-329    
.P36  	= 000220	 11-329    
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 11

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

.P37  	= 001676	 11-329    
.P4   	= 000230	 11-329    
.P40  	= 000220	 11-329    
.P41  	= 000224	 11-329    
.P42  	= 000230	 11-329    
.P43  	= 000224	 11-329    
.P44  	= 000620	 11-329    
.P45  	= 000234	 11-329    
.P46  	= 000220	 11-329    
.P47  	= 000224	 11-329    
.P5   	= 000224	 11-329    
.P50  	= 000230	 11-329    
.P51  	= 000764	 11-329    
.P52  	= 000220	 11-329    
.P53  	= 000234	 11-329    
.P54  	= 000220	 11-329    
.P55  	= 000224	 11-329    
.P56  	= 001630	 11-329    
.P57  	= 000224	 11-329    
.P6   	= 000620	 11-329    
.P60  	= 000220	 11-329    
.P61  	= 000234	 11-329    
.P62  	= 000220	 11-329    
.P63  	= 000664	 11-329    
.P64  	= 000230	 11-329    
.P65  	= 000224	 11-329    
.P66  	= 000220	 11-329    
.P67  	= 000234	 11-329    
.P7   	= 000234	 11-329    
.P70  	= 000620	 11-329    
.P71  	= 000224	 11-329    
.P72  	= 000230	 11-329    
.P73  	= 000224	 11-329    
.P74  	= 000220	 11-329    
.P75  	= 004020	 11-329    
.P76  	= 000020	 11-329    
.P77  	= 000020	 11-329    
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 12

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 12-425     14-528     14-530     15-563     15-565     15-571     15-574     15-577     17-650     17-652    
                 17-659     17-664     17-683     17-694     17-702     17-705     17-720     18-733     18-742     19-781    
                 19-783     19-785     19-787     20-831     20-837     21-872     21-883     21-886     22-905     22-914    
                 23-941     23-944     23-952     23-952     24-972     24-979     25-995     25-997     25-1007    25-1013   
                 25-1019    25-1019    26-1041    26-1048    26-1054    27-1082    27-1084    27-1085    27-1087    27-1088   
                 27-1091    27-1092    27-1094    27-1096    27-1100    27-1122    27-1126    28-1148    28-1165    28-1168   
                 28-1170    28-1172    29-1192    29-1200    29-1202    29-1204    29-1207    29-1217    29-1220    29-1229   
                 29-1235    29-1243    29-1246    30-1280    30-1285    30-1295    30-1297    30-1316    30-1322    31-1386   
                 31-1397    31-1397    31-1410    33-1478    33-1492    33-1505    33-1515    33-1521    33-1522    34-1545   
                 34-1547    34-1556    34-1570    34-1572    34-1574    34-1576    34-1578    34-1580    34-1581    34-1584   
                 34-1591    35-1619    35-1670    36-1701    37-1716    38-1742    39-1778    39-1810    40-1817    40-1825   
                 41-1843    41-1847    41-1854    41-1870    41-1874    43-1953    43-1955    43-1959    43-1978    43-1989   
                 44-1996    44-2000    44-2001    44-2005    45-2026    45-2048    46-2084    46-2098    46-2117    47-2135   
                 47-2138    47-2142    47-2146    48-2171    49-2219    49-2225    49-2256    50-2301   
CALLR 		#12-410    #12-429    #14-510    #15-546    #15-560    #16-604    #19-778    #19-788    #19-793    #20-813    
                #20-823    #21-861    #25-1028   #26-1056   #27-1139   #28-1149   #30-1313   #30-1320   #30-1324   #30-1325   
                #33-1466   #33-1524   #34-1589   #34-1593   #36-1703   #38-1752   #41-1838   #42-1896   #42-1899   #42-1901   
                #44-2021   #46-2104   #46-2126   
CCBDF$		#4-77      #4-80      
CRASH 		#7-122     #16-598    
DEFPAR		#10-247    
DEQ$  		#8-149      24-963     25-1024    31-1408    33-1500    44-1999    44-2004    47-2137    47-2141    47-2145   
                 49-2223   
DFHYBE		#7-127     #23-952    #25-1019   #31-1397   
ENABL$		#4-76      #24-963    #25-1024   #31-1392   #31-1408   #31-1408   #33-1477   #33-1500   #43-1962   #44-1999   
                #44-1999   #44-2004   #44-2004   #46-2106   #46-2122   #47-2137   #47-2137   #47-2141   #47-2141   #47-2145   
                #47-2145   #48-2172   #49-2223   
ENQ$  		#8-169     #31-1392   #33-1477   #43-1962   #46-2106   #46-2122   #48-2172   
HWDDF$		#4-77       4-78      #14-502     14-502    #23-929     23-929    #25-987     25-987    #28-1145    28-1145   
                #31-1379    31-1379   #33-1501    33-1501   #33-1507    33-1507   #49-2204    49-2204   #49-2209    49-2209   
                #50-2303    50-2303   
INHIB$		#4-76       24-963     25-1024    31-1392    31-1408    33-1477    33-1500    43-1962    44-1999    44-2004   
                 46-2106    46-2122    47-2137    47-2141    47-2145    48-2172    49-2223   
LEDLT$		#4-77       5-97      
MAP   		#4-77      #14-502    #23-929    #25-987    #28-1145   #31-1379   #33-1501   #33-1507   #49-2209   
NRDIN$		#4-77      #4-84      
NSPDF$		#4-77       4-79      
NURDF$		#4-77       6-103     
POP   		#7-115     #18-734    #20-838    #24-980    #26-1042   #26-1049   #26-1055   #28-1171   #30-1312   #30-1319   
                #30-1352   #30-1369   #31-1393   #31-1396   #32-1442   #32-1446   #33-1506   #34-1568   #34-1579   #35-1673   
                #39-1806   #43-1977   #44-2008   #46-2086   #47-2157   #49-2226   #50-2304   
PUSH  		#7-108     #18-732    #20-836    #24-971    #24-978    #26-1039   #26-1046   #26-1051   #28-1151   #28-1153   
                #28-1155   #28-1157   #28-1159   #28-1161   #28-1163   #30-1308   #30-1314   #30-1346   #30-1357   #31-1385   
                #32-1424   #33-1497   #34-1552   #34-1569   #35-1615   #39-1784   #39-1787   #43-1911   #44-1997   #46-2081   
                #47-2134   #49-2203   #49-2224   
RESMAP		#4-77      #50-2303   
RETURN		#12-426    #14-529    #14-531    #15-581    #16-625    #17-722    #18-745    #20-834    #20-842    #21-891    
                #22-908    #22-917    #23-933    #23-948    #24-981    #25-990    #25-1006   #25-1017   #29-1257   #30-1334   
                #30-1355   #30-1371   #31-1382   #31-1415   #32-1444   #32-1448   #33-1495   #33-1517   #34-1588   #35-1602   
                #35-1674   #36-1686   #36-1706   #37-1729   #38-1739   #38-1759   #38-1762   #39-1769   #39-1813   #40-1827   
                #41-1876   #43-1979   #43-1991   #44-2015   #45-2036   #45-2045   #45-2057   #46-2107   #46-2118   #46-2125   
                #47-2158   #48-2181   #48-2187   #50-2305   #50-2324   #50-2338   
LE         CREATED BY  MACRO  ON 13-OCT-79 AT 08:28	PAGE 13

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

SAVMAP		#4-77      #49-2204   
SETCHN		#10-237    
SOB   		#19-772    #20-833    #21-887    #30-1318   #30-1368   #39-1800   #43-1937   #43-1941   #43-1963   #43-1990   
                #49-2221   #49-2260   
TMPDF$		#5-97      #5-97      
WRDVFU		#10-242     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329     11-329    
                 11-329     11-329     11-329     11-329     11-329     11-329     11-329    
$INTSX		#4-77       49-2201   
$TOBDM		#7-137     #12-425    #14-528    #14-530    #31-1410   #33-1515   #35-1670   #39-1810   #40-1825   #46-2117   
                #47-2142   
.BIN  		#5-97      
.CNB  		#5-97      
.CNW  		#5-97      
.CORE 		#5-97      
.CSR  		#5-97      #5-97      
.DVCHA		#5-97      
.INT  		#5-97      #5-97      
.INT1 		#5-97      
.INT2 		#5-97      
.INT3 		#5-97      
.LFLHD		#5-97      
.LIBR 		#5-97      
.LINKS		#5-97      
.LSTHD		#5-97      #5-97      #5-97      #5-97      #5-97      #5-97      
.LTAB 		#5-97      
.MPLHD		#5-97      
.POOL 		#5-97      
.PRI  		#5-97       5-97      
.SCOM 		#5-97      
.SECSR		#5-97      
.SLNB 		#5-97      
.SLNW 		#5-97       5-97      
.STNB 		#5-97      
.STNW 		#5-97      
.UNB  		#5-97      
.UNW  		#5-97      
.VFY  		#5-97      
.ZER  		#10-231