Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/drivers/cr.lst
There are no other files named cr.lst in the archive.
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25
CR.M11    30-DEC-82 02:07		TABLE OF CONTENTS

  1508		Macro Calls & Dispatch Tables
  1563		Data Base
  1694		Start / Stop Device  (FC.CTL)
  1786		Timer handler  (FC.TIM)
  1834		Resource return
  1849		Message Received  (FC.RCP)
  2474		Support Routines
  2563		Get and Put Data Bytes
  2797		Interrupt Service
  3136		Hollerith - ASCII Conversion Tables
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 1
CR.M11    30-DEC-82 02:07

     1
     2					.ENABL	LC
     3					.title	CR	CR11 LLC and Driver
     4					.ident	"X02070"
     5
     6					;                    COPYRIGHT (c) 1980, 1981, 1982
     7					;                    DIGITAL EQUIPMENT CORPORATION
     8					;                        Maynard, Massachusetts
     9					;
    10					;     This software is furnished under a license and may  be  used
    11					;     and copied only in accordance with the terms of such license
    12					;     and with the inclusion of the above copyright notice.   This
    13					;     software  or any other copies thereof may not be provided or
    14					;     otherwise made available to any other person.  No  title  to
    15					;     and ownership of the software is hereby transferred.
    16					;
    17					;     The information  in  this  software  is  subject  to  change
    18					;     without  notice  and should not be construed as a commitment
    19					;     by DIGITAL EQUIPMENT CORPORATION.
    20					;
    21					;     DIGITAL assumes no responsibility for the use or reliability
    22					;     of  its  software  on  equipment  which  is  not supplied by
    23					;     DIGITAL.
    24					;
    25					;
    26					;
    27					; This crock was originally foisted upon the  unsuspecting
    28					;	world in June, 1978 by R. South who was preoccupied
    29					;	by travels through the legendary dungeon of Mordatz Idu.
    30					;
    31					; X01010 thru X01170 omitted because following update constituted
    32					;		such a major change that previous audit trail
    33					;		was rendered meaningless - or at best useless.
    34					;
    35					; X02000	10-June-81 Buren Hoffman
    36					;		Extensive modifications to correspond to MCB V3.0,
    37					;		and a major facelift to aid maintainability.
    38					;
    39					; X02010	12-June-81	Buren Hoffman
    40					;		Fixed old calls to $CCBGT and $CCBRT to use new
    41					;		$CBBGT and $CBBRT.
    42					;
    43					; X02020	Added NOOP dispatches for Power-Failure and Initialization
    44					;		entries in the Timer Dispatch table.
    45					;
    46					; X02030	1-July-81
    47					;		General update to fix numerous bugs found via desk checking.
    48					;
    49					; X02040	8-July-81	Buren Hoffman
    50					;		Call TIMPIN on initialization
    51					;
    52					; X02050	16-July-81	Buren Hoffman
    53					;		General upgrade to include fixes incorporated into LE.
    54					;
    55					; x02060	10-sept-81	Ron Platukis
    56					;		-fix bugs in interrupt and synch level code.
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 1-1
CR.M11    30-DEC-82 02:07

    57					;
    58					; x02070	2-december-81	Ron Platukis
    59					;		reduce small buffer size from 80. to 60. bytes.
    60
    61
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 2
CR.M11    30-DEC-82 02:07		MACRO CALLS & DISPATCH TABLES

    63					.sbttl	Macro Calls & Dispatch Tables
    64
    65					.mcall	NURDF$,CCBDF$,SYNDF$,SCDF$
    66					.mcall	PHD$B,DSP$,DSP$B,DSP$E,PUSH$S,POP$S,MAP$,SMAP$,DAT$,END$
    67	000000'					NURDF$
    68	000000'					CCBDF$
    69	000000'					SYNDF$
    70	000000'					SCDF$
    71
    72					;+
    73					;  Identify us to mcb
    74					;+
    75	000000'					PHD$B	CR
    76	000040'					PHD$D	CRMCB
    77	000020'					PHD$E
    78
    79		000000'			.psect	$PLIT$,D,RO
    80
    81					;+
    82					; Dispatch Tables
    83					;-
    84	000000'				CRMCB:	DSP$B
    85	000000'					DSP$				; Asynchronous trap
    86	000002'					DSP$	FC.XME			; Xmit enable
    87	000004'					DSP$	FC.RCE			; Receive enable
    88	000006'					DSP$	FC.KIL			; Kill
    89	000010'					DSP$	FC.CTL,CRCTL		; Control		(start / stop)
    90	000012'					DSP$	FC.TIM,CRTIM		; Timeout		(clock)
    91	000014'					DSP$	FC.XCP,CRDONE		; Xmit complete		(resource ret)
    92	000016'					DSP$	FC.RCP,CRDSP		; Receive complete	(arriving data)
    93	000020'					DSP$	FC.KCP			; Kill complete
    94	000022'					DSP$	FC.CCP			; Control complete
    95	000024'					DSP$E
    96
    97					;+
    98					; Control Dispatch
    99					;-
   100	000024'				CRCTL:	CALLR	@1$(R3)
   101	000030'				1$:	DSP$B
   102	000030'					DSP$
   103	000032'					DSP$	FM.STR,DVOPEN		; Start device
   104	000034'					DSP$	FM.STP,DVCLOS		; Stop device
   105	000036'					DSP$E
   106
   107					;+
   108					; Timer Dispatch
   109					;-
   110	000036'				CRTIM:	CALLR	@1$(R3)
   111	000042'				1$:	DSP$B
   112	000042'					DSP$	FM.STM			;Short timer
   113	000044'					DSP$	FM.LTM,CLOCK		;Long timer
   114	000046'					DSP$	FM.PWF,NOOP		;Power failure
   115	000050'					DSP$	FM.PIN,TIMPIN		;Initialization
   116	000052'					DSP$E
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 3
CR.M11    30-DEC-82 02:07		DATA BASE

   118					.sbttl	Data Base
   119					;+
   120					; CR Data Base Offsets and Values
   121					;-
   122
   123	000052'					DAT$	DSR
   124	000000	000001			C.TIMC:	.blkb	1		; TIMER BYTE
   125	000001	000001			C.NRD:	.blkb	1		; NRD'S PIX
   126	000002				C.CSR:	CSR$W			; ONE WORD CSR POINTER
   127		000020				DTXTSZ= 16.		; DATA/FEATURES PROCESS CONTEXT ALLOCATED
   128	000004	000020			C.DTXT:	.blkw	DTXTSZ		; CONTEXT BLOCK FOR DA/FEATURES PROCESS
   129	000044	000001			C.DTXL:	.blkb	1		; NO. WORDS ON STACK AT SLEEP TIME
   130		000046				.even
   131	000046	000001			C.DFSP:	.blkw	1		; STACK ORIGIN
   132
   133	000050				C.SYN:	SYN$X			; SYNCH BLOCK
   134	000056	000001			C.RST:	.blkw	1		; CR11 STATUS READ AT INTERRUPT
   135	000060	000001			C.COLC:	.blkb	1		; PHYSICAL COLUMN COUNT
   136	000061	000001			C.HUNG:	.blkb	1		; DEVICE HUNG TIMER
   137	000062	000002			C.PUBP:	.blkw	2		; BUFFER PTR DOUBLEWORD
   138	000066	000001			C.SGHD:	.blkw	1		; CURRENT SEGMENT HEADER ADDRESS
   139	000070	000001			C.LDAT:	.blkw	1		; LAST DATA ITEM READ
   140	000072	000001			C.PUBS:	.blkw	1		; BUFFER INPUT COUNTER
   141	000074	000001			C.NRDA:	.blkw	1		; BEG OF NURD MESSAGE(ADDRESS)
   142	000076				C.DDMQ:	LST$D			; CCB'S QUEUED FOR INPUT
   143	000102	000001			C.ASTS:	.blkw	1		; ACTION STATUS BIT MAP
   144		000001				CA.CLO== 1		; CLOSED
   145		000002				CA.PAU = 2		; PAUSED
   146		000004				CA.ADN = 4		; ABORT WHEN DONE WITH DDM QUEUE
   147		000010				CA.ABO = 10		; ABORTING
   148		000020				CA.ABE = 20		; CLEAR ABORT ON EOF (ELSE ON CLEAR)
   149		000040				CA.EOF = 40		; CURRENT MESSAGE HAS EOF
   150		000100				CA.HOP = 100		; HOPPER CHECK - EMPTY INPUT OR FULL OUTPUT
   151		000200				CA.MOT = 200		; MOTION CHECK - PICK, STACK, OR MOTION ERROR
   152		000400				CA.TER = 400		; TIMING ERROR - DATA OVERRUN CONDITION
   153		000700				   CA.ERR= CA.HOP!CA.MOT!CA.TER	; SUMMARY - HARD ERROR
   154		001000				CA.OFL = 1000		; READER OFFLINE
   155		002000				CA.IVP = 2000		; INVALID PUNCH - MULTIPUNCH
   156		004000				CA.TMO = 4000		; DEVICE TIME OUT
   157		010000				CA.syn = 10000		; synch request in progress flag
   158		100000				CA.XOF = 100000		; READER XOF'D
   159	000104	000001			C.CDCT:	.blkw	1		; PHYSICAL CARD COUNT
   160
   161					; MISCELLANEOUS ITEMS
   162	000106	000001			C.IOCN:	.blkw	1		; OUTSTANDING IO COUNT
   163	000110	000001			C.IOWT:	.blkw	1		; CLOSE WAIT FLAG = CLOSE CCB
   164
   165					; CONTROL MESSAGE PROCESSING DATA BASE
   166	000112				C.CMSQ:	LST$D			; CONTROL MESSAGE QUEUE
   167	000116	000001			C.RECO:	.blkb	1		; CONTROL MESSAGE RESOURCE ERROR FLAG
   168	000117	000001			C.RATT:	.blkb	1		; PENDING ATTENTION MESSAGE FLAG - REASON CODE
   169	000120	000001			C.CAPP:	.blkb	1		; PENDING CAPABILITIES MESSAGE FLAG
   170	000121	000001			C.STRT:	.blkb	1		; PENDING READ START
   171
   172					; DATA & FEATURES PROCESSING DATA BASE
   173	000122				C.DLCQ:	LST$D			; CCB'S QUEUED INTO DLC
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 3-1
CR.M11    30-DEC-82 02:07		DATA BASE

   174	000126	000001			C.MFLG:	.blkb	1		; CURRENT NURD MESSAGE FLAGS
   175	000127	000001			C.CAPN:	.blkb	1		; CURRENT INDEX INTO CAPABILITIES LIST
   176	000130	000001			C.NFSP:	.blkb	1		; NO. FEATURE SPECS IN CURRENT MSG
   177		000132				.even
   178	000132	000002			C.DMAD:	.blkw	2		; DATA MSG ADDRESS DOUBLEWORD (PTR)
   179	000136	000001			C.DMBS:	.blkw	1		; DATA MSG BUFFER SIZE
   180	000140	000002			C.DMSQ:	.blkb	2		; LAST GOOD, CURRENT DATA SEQ NUMBERS
   181	000142	000001			C.PBRC:	.blkb	1		; TEMP BYTE
   182		000144				.even
   183	000144				C.MSGQ:	LST$D			; OUTGOING MSG QUEUE
   184	000150	000002			C.MSGA:	.blkw	2		; CURRENT MSG BUFFER ADDRESS DOUBLEWORD
   185	000154	000001			C.MSGS:	.blkw	1		; CURRENT MSG BUFFER SIZE
   186
   187					; FEATURES
   188					; LP11 COMMON FEATURE LIST
   189	000156	000001			C.CFET:	.blkb	1			; NUMBER OF COMMON FEATURES
   190	000157	000001				.blkb	1			; FEATURE FE.DAT     SUPPORTED
   191	000160	000001				.blkb	1			; FEATURE FE.SER NOT SUPPORTED
   192	000161	000001				.blkb	1			; FEATURE FE.LCR NOT SUPPORTED
   193	000162	000001				.blkb	1			; FEATURE FE.FWD NOT SUPPORTED
   194	000163	000001				.blkb	1			; FEATURE FE.EOF     SUPPORTED
   195	000164	000001				.blkb	1			; FEATURE FE.DVT NOT SUPPORTED
   196	000165	000001				.blkb	1			; FEATURE FE.TRN NOT SUPPORTED
   197	000166	000001				.blkb	1			; FEATURE FE.FNM NOT SUPPORTED
   198	000167	000001				.blkb	1			; FEATURE FE.DWD     SUPPORTED
   199		000011				CCFETL== .-C.CFET-1
   200
   201	000170	000001			C.DFET:	.blkb	1		; NUMBER OF DEVICE SPECIFIC FEATURES
   202	000171	000001				.blkb	1			; FEATURE 129    NOT DEFINED
   203	000172	000001				.blkb	1			; FEATURE CD.CWD     SUPPORTED
   204		000002				CDFETL== .-C.DFET-1
   205
   206					; FEATURE BLOCKS
   207		000000			F.FSB = 0			; (BM)FEATURES STATUS BYTE
   208		000000				FB.CL0 = 0			; CLASS 0 FEATURE => <BIT> FORM
   209		000001				FB.CL1== 1			; CLASS 1 FEATURE => <CNT><...> FORM
   210		000002				FB.WRD = 2			; FEATURE IS A WORD AND
   211										;  F.FCV IS A DATABASE OFFSET TO IT
   212		000004				FB.STR = 4			; FEATURE IS A STRING
   213										; F.FCV IS THE LENGTH
   214										; CURRENT VALUE BEGINS AT F.FCV+1
   215										; STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FC
   216		000010				FB.STE = 10			; STANDARD VALUE EXISTS
   217		000020				FB.SST = 20			; STANDARD IS SET
   218		000040				FB.CP = 40			; CHANGE PENDING
   219		000100				FB.CA = 100			; CHANGE ALLOWED
   220		000001			F.FCV = 1			; FEATURE CURRENT VALUE BYTE
   221		000002			F.FSV = 2			; FEATURE STANDARD VALUE BYTE
   222
   223					; DATA MODE
   224	000173	000001			CR.DAT::.blkb	1
   225		000131				CRDATS== FB.CL1!FB.CA!FB.SST!FB.STE	; INITIAL STATUS OF LE.DOF LE.DAT
   226	000174	000001				.blkb	1				; ASCII
   227	000175	000001				.blkb	1				; ASCII IS STD
   228
   229					; EOF RECOGNITION
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 3-2
CR.M11    30-DEC-82 02:07		DATA BASE

   230	000176	000001			CR.EOF::.blkb	1
   231		000101				CREOFS== FB.CL1!FB.CA		; INITIAL STATUS OF CR.EOF
   232	000177	000001				.blkb	1
   233
   234					; DEVICE WIDTH
   235	000200	000001			CR.DWD::.blkb	1
   236	000201	000001				.blkb	1				; STD WIDTH
   237
   238					; DEVICE SPECIFIC FEATURES
   239					; CARD WIDTH
   240	000202	000001			CR.CWD::.blkb	1
   241		000131				CRCWDS== FB.CL1!FB.CA!FB.STE!FB.SST	; INITIAL STATUS OF CR.CWD
   242	000203	000001				.blkb	1
   243	000204	000001				.blkb	1
   244
   245	000205					END$
   246
   247		000000'			.psect	$CODE$,I,RO
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 4
CR.M11    30-DEC-82 02:07		START / STOP DEVICE  (FC.CTL)

   249					.sbttl	Start / Stop Device  (FC.CTL)
   250					;+
   251					; Initialize unit
   252					;	R4	CCB
   253					;	R5	Database address
   254					;-
   255	000000'				DVOPEN:	PUSH$S	R4			; START DEVICE
   256	000002'	116465	000011	000001		MOVB	C.PIX(R4),C.NRD(R5)	; SAVE NRD'S PIX
   257	000010'	032765	000001	000102		BIT	#CA.CLO,C.ASTS(R5)	; CLOSED?
   258	000016'	001470				BEQ	11$			; NO, THEN HOW CAN IT BE OPENED?
   259	000020'	005075	000002			CLR	@C.CSR(R5)		; BE VERY PESSIMISTIC
   260	000024'	012765	000002	000102		MOV	#CA.PAU,C.ASTS(R5)	; INIT THE ACTION STATUS WORD
   261	000032'	005065	000064			CLR	C.PUBP+2(R5)		; FLUSH CURRENT READ BUFFER
   262	000036'	105065	000044			CLRB	C.DTXL(R5)		; Clear saved context indicator
   263	000042'	005065	000132			CLR	C.DMAD(R5)		; FLUSH SOURCE BUF IN USE
   264	000046'	005065	000134			CLR	C.DMAD+2(R5)
   265	000052'	005065	000136			CLR	C.DMBS(R5)
   266	000056'	005065	000150			CLR	C.MSGA(R5)		; INIT CURRENT OUT MSG
   267	000062'	005065	000152			CLR	C.MSGA+2(R5)
   268	000066'	005065	000154			CLR	C.MSGS(R5)
   269	000072'	005065	000106			CLR	C.IOCN(R5)		; INIT OUTSTANDING IO COUNT
   270	000076'	005065	000110			CLR	C.IOWT(R5)		; INIT CLOSE WAIT FLAG
   271	000102'	105065	000060			CLRB	C.COLC(R5)		; INIT COLUMN COUNT
   272	000106'	105065	000061			CLRB	C.HUNG(R5)		; INIT HUNG DEVICE TIMER
   273	000112'	105065	000116			CLRB	C.RECO(R5)		; INIT CONTROL RESOURCE ERROR FLAG
   274	000116'	105065	000117			CLRB	C.RATT(R5)		; INIT PENDING ATTENTION MSG FLAG
   275	000122'	105065	000120			CLRB	C.CAPP(R5)		; INIT PENDING CAPABILITIES MSG FLAG
   276	000126'	105065	000121			CLRB	C.STRT(R5)		; INIT PENDING READ FLAG
   277	000132'	005065	000104			CLR	C.CDCT(R5)		; INIT CARD COUNTER
   278
   279					; Set all features with standards to std
   280	000136'	012700	000156			MOV	#C.CFET,R0		; COMMON FEATURES
   281	000142'	004767	000042			CALL	100$			; DOO ALL
   282	000146'	012700	000170			MOV	#C.DFET,R0		; DEVICE SPECIFIC FEATURES
   283	000152'	004767	000032			CALL	100$			; ALL OF THEM TOO
   284	000156'	012703	000001			MOV	#S.SSUC,R3		; RETURN SUCCESS
   285	000162'	105215				INCB	(R5)			; START THE TIMER
   286	000164'	004767	000000G			CALL	$LTMEN			; ...
   287	000170'	000405				BR	20$
   288
   289	000172'	052765	000001	000102	10$:	BIS	#CA.CLO,C.ASTS(R5)	; NOTE REMAINING CLOSED
   290	000200'	012703	177754		11$:	MOV	#S.ERBO,R3		; FAILED TO OPEN
   291	000204'				20$:	POP$S	R4			; RESTORE POINTER FOR COMMAND CCB
   292	000206'	000461				BR	CTLXIT
   293
   294					; Feature setting routine
   295	000210'	060500			100$:	ADD	R5,R0			; R0/FEATURE LIST OFFSET
   296	000212'	005001				CLR	R1
   297	000214'	152001				BISB	(R0)+,R1		; GET NO. OF FEATURES
   298	000216'	005003			110$:	CLR	R3
   299	000220'	152003				BISB	(R0)+,R3		; GET ADDRESS OF FEATURE BLOCK
   300	000222'	001403				BEQ	120$			; EMPTY SLOT
   301	000224'	060503				ADD	R5,R3
   302	000226'	004767	002746			CALL	SETSTD			; SET IT TO STD
   303	000232'	077107			120$:	SOB	R1,110$
   304	000234'				NOOP:	RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 5
CR.M11    30-DEC-82 02:07		START / STOP DEVICE  (FC.CTL)

   306					;+
   307					; Stop Unit
   308					;
   309					;	R5	Database Address
   310					;-
   311
   312	000236'	004767	004774		DVCLOS:	CALL	$CRSTP			; STOP DEVICE
   313	000242'	105015				CLRB	(R5)			; STOP THE CLOCK
   314	000244'	052765	000001	000102		BIS	#CA.CLO,C.ASTS(R5)	; MARK AS CLOSED
   315	000252'	004767	003330			CALL	Q$PURG			; FLUSH THE QUEUES
   316	000256'					PUSH$S	R4			; SAVE COMMAND CCB POINTER
   317
   318	000260'				10$:	DEQ$	C.CMSQ,20$		; FLUSH ANY OUTSTANDING CONTROL MSGS
   319	000300'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)
   320	000306'	004767	000000G			CALL	$SCHED
   321	000312'	000762				BR	10$
   322
   323	000314'				20$:	POP$S	R4			; RESTORE COMMAND CCB POINTER
   324	000316'	010465	000110			MOV	R4,C.IOWT(R5)		; SET THE CLOSE WAIT FLAG
   325
   326					; COMPLETE CLOSE ONLY WHEN ALL CCB'S RETURNED
   327	000322'	005765	000106		STOPWT:	TST	C.IOCN(R5)
   328	000326'	001402				BEQ	10$
   329	000330'	105215				INCB	(R5)
   330	000332'					RETURN
   331
   332	000334'	105015			10$:	CLRB	(R5)			; FLUSH THE TIMER FCNS
   333	000336'	016504	000110			MOV	C.IOWT(R5),R4		; GET THE CLOSE CCB BACK
   334	000342'	005065	000110			CLR	C.IOWT(R5)		; CLEAN UP BEHIND OURSELVES
   335	000346'	012703	000001			MOV	#S.SSUC,R3		; CLOSE NEVER FAILS
   336
   337	000352'	010364	000014		CTLXIT:	MOV	R3,C.STS(R4)
   338	000356'	112764	000022	000012		MOVB	#FC.CCP,C.FNC(R4)
   339	000364'					CALLR	$SCHED
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 6
CR.M11    30-DEC-82 02:07		TIMER HANDLER  (FC.TIM)

   341					.sbttl	Timer handler  (FC.TIM)
   342					;+
   343					;	R5	Database address
   344					;-
   345	000370'	005765	000110		CLOCK:	TST	C.IOWT(R5)		; CHECK FOR CLOSE-WAIT
   346	000374'	001402				BEQ	5$
   347	000376'					CALLR	STOPWT			; PREEMPTS ALL ELSE
   348
   349	000402'	105765	000116		5$:	TSTB	C.RECO(R5)		; CHECK CONTROL RESOURCE ERROR
   350	000406'	001404				BEQ	10$
   351	000410'	105065	000116			CLRB	C.RECO(R5)		; YES - FLUSH THE FLAG
   352	000414'	004767	000534			CALL	MSGFIN			; RESTART THE PROCESS
   353
   354	000420'	105765	000044		10$:	TSTB	C.DTXL(R5)		; Check timesleep
   355	000424'	001402				BEQ	20$			; Nope
   356	000426'	004767	004354			CALL	ZZ$WAK			; Restart process - will return here
   357	000432'	032765	001700	000102	20$:	BIT	#CA.ERR!CA.OFL,C.ASTS(R5) ; CHECK DEVICE PROBLEMS
   358	000440'	001412				BEQ	30$			; NOT BECAUSE OF DEVICE ERROR
   359	000442'	032775	000400	000002		BIT	#RDROFL,@C.CSR(R5)	; DEVICE ERROR WAS REASON
   360	000450'	001006				BNE	30$			; NOT YET RESTORED TO ONLINE
   361	000452'	004767	003544			CALL	SN$ALR			; CURE HS BEEN EFFECTED, NOTIFY USER
   362	000456'	103403				BCS	30$			; COULDN'T SEND ONE, COME BACK LATER
   363	000460'	042765	001700	000102		BIC	#CA.ERR!CA.OFL,C.ASTS(R5) ; FLUSH ERROR BUT LEAVE CA.PAU
   364										; USER MUST RESUME
   365	000466'	105765	000121		30$:	TSTB	C.STRT(R5)		; CHECK PENDING READ START
   366	000472'	001402				BEQ	40$
   367	000474'	004767	004354			CALL	$CRSTR			; START THE READER
   368
   369	000500'	105765	000061		40$:	TSTB	C.HUNG(R5)		; CHECK HUNG TIMER
   370	000504'	001414				BEQ	50$			; NOT SET
   371	000506'	105365	000061			DECB	C.HUNG(R5)		; COUNT THE TOCK
   372	000512'	001011				BNE	50$			; STILL OK
   373	000514'	052765	004000	000102		BIS	#CA.TMO,C.ASTS(R5)	; DEVICE IS COMATOSE
   374	000522'	105765	000117			TSTB	C.RATT(R5)		; CHECK PENDING ATTENTION MSG
   375	000526'	001006				BNE	55$			; YES - DON'T GENERATE ANOTHER
   376	000530'	112765	000001	000117		MOVB	#N.ASTC,C.RATT(R5)	; SET PENDING ATTENTION FLAG
   377
   378	000536'	105765	000117		50$:	TSTB	C.RATT(R5)		; CHECK PENDING ATTENTION MSG
   379	000542'	001402				BEQ	60$
   380	000544'	004767	003520		55$:	CALL	SN$ATT			; TRY TO SEND ONE
   381
   382	000550'	105765	000120		60$:	TSTB	C.CAPP(R5)		; CHECK PENDING CAPABILITIES MSG
   383	000554'	001402				BEQ	70$
   384	000556'	004767	004014			CALL	SN$CAP			; TRY TO SEND ONE
   385
   386	000562'	105215			70$:	INCB	(R5)			; RESET THE CLOCK FOR THE NEXT TOCK
   387	000564'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 7
CR.M11    30-DEC-82 02:07		RESOURCE RETURN

   389					.sbttl	Resource return
   390					;+
   391					; Resource return
   392					;-
   393
   394	000566'	005365	000106		CRDONE:	DEC	C.IOCN(R5)		; COUNT THE RETURNED RESOURCE
   395	000572'	002002				BGE	10$
   396	000574'	005065	000106			CLR	C.IOCN(R5)		; BLEW IT SOMEWHERE
   397
   398	000600'	005764	000026		10$:	TST	C.PRM2(R4)		; Discern buffer type
   399	000604'	001402				BEQ	20$			; Small data buffer
   400	000606'					CALLR	$RDBRT			; Deallocate RDB and return
   401	000612'	012701	000074		20$:	MOV	#60.,R1			; Set buffer length
   402	000616'					CALLR	$CBBRT			; Release CCB and buffer
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 8
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   404					.sbttl	Message Received  (FC.RCP)
   405					;+
   406					; Dispatch according to the type of nurd message received.
   407					;
   408					;  Inputs:	R4 - Points to the first, or only CCB in chain
   409					;		R5 - Points to CR database
   410					;
   411					;  Outputs:	Dispatches to message handler, or returns an
   412					;		error if the type is illegal or out of range.
   413					;		The called routine is responsible for queuing
   414					;		messages to be returned to the higher level.
   415					;
   416					; Msg format:	<msgtype><msgflgs><msgtxt.....>
   417					;-
   418
   419	000622'	032765	000001	000102	CRDSP:	BIT	#CA.CLO,C.ASTS(R5)	; DEVICE CLOSED?
   420	000630'	001031				BNE	60$			; YES, HENCE INACCESSIBLE
   421	000632'					MAP$	C.BUF(R4)		; GET MAPPING
   422	000640'	016400	000020			MOV	C.BUF+2(R4),R0		; POINT TO CCB DATA BUFFER
   423	000644'	111001				MOVB	(R0),R1			; GET NURD MESSAGE TYPE
   424	000646'	042701	177760			BIC	#^C<NM.TYP>,R1		; ISOLATE JUST MESSAGE TYPE
   425	000652'	020127	000004			CMP	R1,#NRDOTR		; TYPE OUT OF RANGE?
   426	000656'	103402				BLO	30$			; NO, OKAY TO DISPATCH
   427	000660'	012701	000004			MOV	#NRDOTR,R1		; YES, SPECIFY ILLEGAL NURD HANDLER
   428	000664'	006301			30$:	ASL	R1			; GET WORD OFFSET
   429	000666'					CALLR	@40$(R1)		; DISPATCH TO MESSAGE PROCESSOR
   430
   431
   432
   433	000672'	000704'			40$:	.word	50$			; 0 - DATA MESSAGE
   434	000674'	000704'				.word	50$			; 1 - ATTENTION (ILLEGAL IF REC'D)
   435	000676'	000734'				.word	MSGDAT			; 2 - FEATURES MESSAGE
   436	000700'	001064'				.word	MSGCTL			; 3 - CONTROL MESSAGE
   437		000004			 NRDOTR = <.-40$>/2
   438	000702'	000704'				.word	50$			; N - ILLEGAL NURD TYPE SPEC
   439
   440	000704'	012764	177762	000014	50$:	MOV	#S.EIDM,C.STS(R4)
   441	000712'	000403				BR	70$
   442	000714'	012764	177767	000014	60$:	MOV	#S.EABO,C.STS(R4)
   443	000722'	112764	000004	000012	70$:	MOVB	#FC.RCE,C.FNC(R4)
   444	000730'					CALLR	$SCHED
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 9
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   446					;+
   447					; Queue incoming NURD Control and Features Messages
   448					;
   449					;	R4	CCB
   450					;	R5	Database address
   451					;-
   452	000734'	032765	000010	000102	MSGDAT:	BIT	#CA.ABO,C.ASTS(R5)	; CHECK FOR ABORT STATE
   453	000742'	001410				BEQ	MSGQUE			; OK TO PROCEED
   454	000744'	012764	177767	000014		MOV	#S.EABO,C.STS(R4)	; DROP DATA ON THE FLOOR
   455	000752'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)
   456	000760'					CALLR	$SCHED
   457
   458	000764'				MSGQUE:	ENQ$	C.DLCQ			; QUEUE THE PACKET
   459	000776'	020465	000122			CMP	R4,C.DLCQ(R5)		; WAS QUEUE EMPTY ?
   460	001002'	001027				BNE	60$			; NO, ROUTINES OF INTEREST ARE WORKING
   461	001004'	105765	000044			TSTB	C.DTXL(R5)		; Maybe waiting for packet ?
   462	001010'	001024				BNE	60$			; Could be
   463
   464	001012'	010665	000046		30$:	MOV	SP,C.DFSP(R5)		; SET THE STACK ORIGIN FOR THIS PROCESS
   465	001016'	004767	002764			CALL	RD$BYT			; EXTRACT MSG TYPE
   466	001022'	010001				MOV	R0,R1
   467	001024'	004767	002756			CALL	RD$BYT			; EXTRACT MSG FLAGS
   468	001030'	010065	000126			MOV	R0,C.MFLG(R5)
   469	001034'	122701	000003			CMPB	#NM.CTL,R1		; DISTINGUISH CONTROL AND FEATURES
   470	001040'	001003				BNE	40$			; FEATURES
   471	001042'	004767	000346			CALL	CTLSYN			; NON-INTERRUPT CONTROL
   472	001046'	000402				BR	50$
   473
   474	001050'	004767	001024		40$:	CALL	FTRSYN			; FEATURES
   475	001054'	016504	000122		50$:	MOV	C.DLCQ(R5),R4		; GET NEXT MSG
   476	001060'	001354				BNE	30$			; MORE
   477	001062'				60$:	RETURN				; EXIT
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 10
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   479					;+
   480					; NURD Control Message Handler
   481					;
   482					;	R0	Buffer ptr: ->nurd msg type
   483					;	R4	CCB
   484					;	R5	Database address
   485					;	KISAR6	Mapped to buffer
   486					;
   487					; Control msg format:	<seq no.><command><result>
   488					;-
   489					.enabl	lsb
   490	001064'	126427	000013	000004	MSGCTL:	CMPB	C.MOD(R4),#S$INT	; CHECK FOR INTERRUPT MSG
   491	001072'	001402				BEQ	5$			; THEY ARE PROCESSED NOW
   492	001074'					CALLR	MSGQUE			; OTHERS ARE SYNCH'D WITH DATA STREAM
   493
   494	001100'				5$:	ENQ$	C.CMSQ			; Queue CCB til resources are checked
   495	001112'	022764	000004	000022		CMP	#N.CCMD+1,C.CNT(R4)	; CHECK TO SEE IF ENOUGH SENT
   496	001120'	003077				BGT	100$			; NOT EVEN 4 LOUSY BYTES!
   497	001122'	116001	000003			MOVB	N.CCMD(R0),R1		; GET CONTROL COMMAND BYTE
   498	001126'	003474				BLE	100$			; SKIP OUT ON ILLEGAL CODE
   499	001130'	022701	000012			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   500	001134'	101471				BLOS	100$			; OUT OF RANGE, SKIP OUT
   501	001136'	006301				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   502	001140'	005000				CLR	R0			; INITIALIZE CODE
   503	001142'	004771	001370'			CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   504	001146'	020027	177777			CMP	R0,#-1			; ANY MESSAGE TO DO ?
   505	001152'	001405				BEQ	6$			; NO
   506
   507					; Here when finished, or when performing a retry to get a resource
   508	001154'	004767	002230		MSGFIN:	CALL	BF$SDB			; GET A RESPONSE BUFFER
   509	001160'	103003				BCC	10$			; Ok
   510	001162'	105265	000116			INCB	C.RECO(R5)		; Control resource error flag
   511	001166'				6$:	RETURN
   512
   513	001170'	103453			10$:	BCS	100$			; OOPS
   514	001172'					PUSH$S	R4			; SAVE THE RESPONSE CCB
   515	001174'					DEQ$	C.CMSQ			; GET THE MSG CCB BACK
   516	001212'					MAP$	C.BUF(R4)		; R0/RESULT
   517	001220'	016401	000020			MOV	C.BUF+2(R4),R1
   518	001224'	116102	000003			MOVB	N.CCMD(R1),R2		; R2/COMMAND
   519	001230'	116101	000002			MOVB	N.CSEQ(R1),R1		; R1/SEQ NO. OF CONTROL MSG
   520	001234'	005064	000014			CLR	C.STS(R4)		; ACK THE CONTROL MESSAGE
   521	001240'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)	;  ...
   522	001246'	004767	000000G			CALL	$SCHED			;   ...
   523	001252'					POP$S	R4			; GET THE RESPONSE CCB BACK
   524	001254'					MAP$	C.BUF(R4)		; MAP TO THE BUFFER
   525	001262'	016403	000020			MOV	C.BUF+2(R4),R3		; GET BUF PTR
   526	001266'	112723	000003			MOVB	#NM.CTL,(R3)+		; FORMAT A NURD CONTROL MSG
   527	001272'	105023				CLRB	(R3)+			; NO MSG FLAGS
   528	001274'	110123				MOVB	R1,(R3)+		; SEQ NO.
   529	001276'	110223				MOVB	R2,(R3)+		; COMMAND
   530	001300'	110013				MOVB	R0,(R3)			; RESULT
   531	001302'	012764	000005	000022		MOV	#N.CRES+1,C.CNT(R4)	; SET THE BUFFER COUNT
   532	001310'	005265	000106			INC	C.IOCN(R5)		; COUNT THE I/O
   533	001314'					CALLR	$SCHED
   534
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 10-1
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   535					; Illegal function
   536	001320'				100$:	DEQ$	C.CMSQ			; GET THE CCB BACK
   537	001336'	052765	000004	000102		BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
   538	001344'	012764	177754	000014		MOV	#S.ERBO,C.STS(R4)	; REJECT(?) THIS ONE
   539	001352'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)	; ACK THE MESSAGE
   540	001360'	012700	177777			MOV	#-1,R0			; SET FLAG CODE
   541	001364'					CALLR	$SCHED
   542
   543					; THE DISPATCH TABLE
   544	001370'	001320'			CTLDSP:	.word	100$		;  0 - CODE ZERO IS RESERVED
   545	001372'	001662'				.word	CTLABE		;  1 - ABORT TO END OF FILE
   546	001374'	001672'				.word	CTLABT		;  2 - ABORT ALL
   547	001376'	001634'				.word	CTLABC		;  3 - ABORT CLEAR
   548	001400'	002062'				.word	CTLSTS		;  4 - STATUS REQUESTED, SEND ATTENTION
   549	001402'	001744'				.word	CTLDMP		;  5 - DUMP OUTPUT BUFFERS
   550	001404'	001766'				.word	CTLPAU		;  6 - PAUSE
   551	001406'	002014'				.word	CTLRSM		;  7 - RESUME FROM ERROR OR PAUSE
   552	001410'	001320'				.word	100$		;  8 - UNDEFINED
   553	001412'	001736'				.word	CTLCPB		;  9 - SEND CAPABILITIES MESSAGE
   554		000012			CTLOTR = <. - CTLDSP>/2
   555					.dsabl	lsb
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 11
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   557					;+
   558					; Non-interrupt control message processing
   559					;-
   560	001414'	004767	002366		CTLSYN:	CALL	RD$BYT			; GET SEQ NO.
   561	001420'	110065	000140			MOVB	R0,C.DMSQ(R5)		; SAVE IT FOR RESPONSE
   562	001424'	004767	002356			CALL	RD$BYT			; GET COMMAND
   563	001430'	010001				MOV	R0,R1
   564	001432'	003472				BLE	50$			; SKIP OUT ON ILLEGAL CODE
   565	001434'	022701	000012			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   566	001440'	101467				BLOS	50$			; OUT OF RANGE, SKIP OUT
   567	001442'					PUSH$S	R1			; SAVE COMMAND CODE FOR RESPONSE
   568	001444'	006301				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   569	001446'	005000				CLR	R0			; INITIALIZE FLAG
   570	001450'	004771	001370'			CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   571	001454'					POP$S	R1			; GET COMMAND CODE BACK
   572	001456'	020027	177777			CMP	R0,#-1			; ANY MESSAGE STILL TO DO ?
   573	001462'	001463				BEQ	60$			; NO
   574	001464'					PUSH$S	R0			; SAVE RESPONSE CODE
   575	001466'	004767	002454			CALL	RD$DQX			; ACK THE MSG
   576	001472'	012700	000003			MOV	#NM.CTL,R0		; CONSTRUCT A CONTROL MSG
   577	001476'	004767	001766			CALL	MS$BYT			; CONTROL CODE
   578	001502'	005000				CLR	R0
   579	001504'	004767	001760			CALL	MS$BYT			; NULL MSG FLAGS
   580	001510'	116500	000140			MOVB	C.DMSQ(R5),R0
   581	001514'	004767	001750			CALL	MS$BYT			; SEQ NO. OF ORIGINAL COMMAND
   582	001520'	010100				MOV	R1,R0
   583	001522'	004767	001742			CALL	MS$BYT			; COMMAND
   584	001526'					POP$S	R0
   585	001530'	004767	001734			CALL	MS$BYT			; RESPONSE CODE
   586	001534'					DEQ$	C.MSGQ			; GET MESSAGE OFF QUEUE
   587	001552'	166564	000154	000022		SUB	C.MSGS(R5),C.CNT(R4)	; CALCULATE MESSAGE SIZE
   588	001560'	005065	000154			CLR	C.MSGS(R5)		; COVER OUR TRACKS
   589	001564'	005265	000106			INC	C.IOCN(R5)		; COUNT THIS I/O
   590	001570'	004767	000000G			CALL	$SCHED			; SEND IT OFF
   591	001574'	105765	000117			TSTB	C.RATT(R5)		; CHECK FOR OTHER MESSAGES TO GOE OUT
   592	001600'	001402				BEQ	20$			; NO ATTENTION MSGS
   593	001602'	004767	002462			CALL	SN$ATT			; PENDING ATTENTION MSG
   594
   595	001606'	105765	000120		20$:	TSTB	C.CAPP(R5)		; TRY CAPABILITIES MSG
   596	001612'	001407				BEQ	60$
   597	001614'					CALLR	SN$CAP			; PENDING CAPABILITIES MSG
   598
   599	001620'	052765	000004	000102	50$:	BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
   600	001626'	004767	002314			CALL	RD$DQX			; ACK THE MSG AND WAIT FOR DEATH
   601	001632'				60$:	RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 12
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   603					;+
   604					; Clear abort status
   605					;-
   606	001634'	032765	000030	000102	CTLABC:	BIT	#CA.ABE!CA.ABO,C.ASTS(R5) ; ABORT SET?
   607	001642'	001404				BEQ	10$			; NO
   608	001644'	042765	000030	000102		BIC	#CA.ABE!CA.ABO,C.ASTS(R5) ; CLEAR ABORTING
   609	001652'					RETURN
   610
   611	001654'	012700	000001		10$:	MOV	#NR.ACN,R0		; NOT IN ABORT STATE
   612	001660'					RETURN
   613
   614					;+
   615					; Abort to end of file
   616					;-
   617	001662'	052765	000020	000102	CTLABE:	BIS	#CA.ABE,C.ASTS(R5)	; SET THE FLAG FOR READER
   618	001670'					RETURN
   619
   620					;+
   621					; Abort until clear received
   622					;-
   623	001672'	004767	003340		CTLABT:	CALL	$CRSTP			; FLUSH THE DEVICE
   624	001676'	052765	000010	000102		BIS	#CA.ABO,C.ASTS(R5)	; NOTE ABORTING
   625	001704'	016501	000076			MOV	C.DDMQ(R5),R1		; CHECK ALL QUEUES TO SEE IF
   626	001710'	056501	000122			BIS	C.DLCQ(R5),R1		;  ANYTHING HAPPENING
   627	001714'	056501	000144			BIS	C.MSGQ(R5),R1
   628	001720'	156501	000044			BISB	C.DTXL(R5),R1		; CHECK SUSPENDED PROCESSES
   629	001724'	001002				BNE	10$			; NR.ABS
   630	001726'	012700	000001			MOV	#NR.NAB,R0		; NOTHING TO ABORT
   631	001732'				10$:	CALLR	Q$PURG			; CLEAR THE WORLD
   632
   633					;+
   634					; Request capabilities message
   635					;-
   636	001736'	105265	000120		CTLCPB:	INCB	C.CAPP(R5)		; SET CAPABILITIES PENDING FLAG
   637	001742'					RETURN
   638
   639					;+
   640					; Dump output buffers
   641					;-
   642	001744'	105765	000117		CTLDMP:	TSTB	C.RATT(R5)		; PENDING ATTENTION?
   643	001750'	001005				BNE	10$			; YES
   644	001752'	105765	000120			TSTB	C.CAPP(R5)		; PENDING CAPABILITIES?
   645	001756'	001002				BNE	10$			; YES
   646	001760'	012700	000001			MOV	#NR.NOB,R0		; NOTHING TO DUMP
   647	001764'				10$:	RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 13
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   649					;+
   650					; Pause input
   651					;-
   652	001766'	032765	000006	000102	CTLPAU:	BIT	#CA.PAU!CA.ADN,C.ASTS(R5) ; ALREADY PAUSED/PAUSING?
   653	001774'	001004				BNE	20$			; YES
   654	001776'	052765	000002	000102	10$:	BIS	#CA.PAU,C.ASTS(R5)	; PAUSE NO MATTER WHAT
   655	002004'					RETURN
   656
   657	002006'	012700	000001		20$:	MOV	#NR.PAU,R0		; ALREADY PAUSED
   658	002012'					RETURN
   659
   660
   661					;+
   662					; Resume input
   663					;-
   664	002014'	032765	004006	000102	CTLRSM:	BIT	#CA.PAU!CA.ADN!CA.TMO,C.ASTS(R5); CHECK PAUSEDNESS
   665	002022'	001414				BEQ	20$			; NOTHING HUNG
   666	002024'	032765	000040	000102		BIT	#CA.EOF,C.ASTS(R5)	; EOF ?
   667	002032'	001402				BEQ	10$
   668	002034'	005065	000104			CLR	C.CDCT(R5)		; IF SO, CLEAR CARD COUNT FOR NEW FILE
   669
   670	002040'	042765	004776	000102	10$:	BIC	#CA.PAU!CA.ADN!CA.TMO!CA.ERR!CA.EOF!CA.ABO!CA.ABE,C.ASTS(R5)
   671	002046'	004767	003002			CALL	$CRSTR			; TURN ON DEVICE AGAIN
   672	002052'	000402				BR	30$
   673
   674	002054'	012700	000001		20$:	MOV	#NR.NPS,R0		; NOT PAUSED
   675	002060'				30$:	RETURN
   676
   677
   678					;+
   679					; Status request
   680					;-
   681	002062'	105765	000117		CTLSTS:	TSTB	C.RATT(R5)		; CHECK ATTENTION ALREADY PENDING
   682	002066'	001003				BNE	10$			; DON'T MUNGE ORIGNAL REASON
   683	002070'	112765	000003	000117		MOVB	#N.ARQS,C.RATT(R5)	; SET ATTENTION PENDING FLAG
   684	002076'				10$:	RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 14
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   686
   687					;+
   688					; NURD Features message handlers
   689					;
   690					; Feature msg format:
   691					;  <seq no.><no. feature specs><...feature specs...>
   692					;
   693					; Feature spec format:
   694					;  <feature id><feature flags><class><response>[<feature data>]
   695					;
   696					; Feature data format:
   697					;  <cnt><...data...>
   698					;
   699					; NOTE: Incoming message has only one feature spec.
   700					;
   701					; Buffer has been set up and nurd type and flags bytes
   702					; (1st & 2nd bytes) have been extracted.
   703					;
   704					;	R4	CCB AT TOP OF C.DLCQ
   705					;	R5	Database address
   706					;	KISAR6	Mapped to data buffer
   707					;-
   708					.enabl	LSB
   709	002100'	012700	000002		FTRSYN:	MOV	#NM.FTR,R0		; BEGIN A REPLY
   710	002104'	004767	001360			CALL	MS$BYT			; INSERT NURD MSG TYPE
   711	002110'	005000				CLR	R0
   712	002112'	004767	001352			CALL	MS$BYT			; INSERT MSG FLAGS
   713	002116'	004767	001664			CALL	RD$BYT			; GET SEQ NO.
   714	002122'	110065	000140			MOVB	R0,C.DMSQ(R5)
   715	002126'	004767	001336			CALL	MS$BYT			; SEND IT BACK
   716	002132'	004767	001650			CALL	RD$BYT			; GET NO. FEATURE SPECS
   717	002136'	005000				CLR	R0			;  BUT IGNORE IT
   718	002140'	110065	000130			MOVB	R0,C.NFSP(R5)		; SAVE IT FOR SOMTHING
   719	002144'	004767	001320			CALL	MS$BYT			; STUFF IT IN REPLY
   720	002150'	004767	001632			CALL	RD$BYT			; GET FEATURE ID
   721	002154'	010002				MOV	R0,R2
   722	002156'	004767	001624			CALL	RD$BYT			; GET FEATURE FLAGS
   723	002162'	010001				MOV	R0,R1
   724	002164'	004767	001616			CALL	RD$BYT			; GET CLASS
   725	002170'	000301				SWAB	R1
   726	002172'	050001				BIS	R0,R1			; R1/FLAGS,,CLASS
   727
   728	002174'	004767	001606			CALL	RD$BYT			; READ THE RESPONSE FIELD AND IGNORE IT
   729
   730	002200'	105065	000127			CLRB	C.CAPN(R5)		; INIT INDEX INTO CAPABILITIES LIST
   731	002204'	122702	000377			CMPB	#FE.ALL,R2		; CHECK FOR ALLNESS
   732	002210'	001036				BNE	30$			; SINGLE FEATURE
   733	002212'	005002				CLR	R2			; INIT COMMON FID'S
   734	002214'	116565	000156	000127		MOVB	C.CFET(R5),C.CAPN(R5)	; GET COUNT OF COMMON ENTRIES
   735	002222'	032701	000400			BIT	#NF.CMD*400,R1		; ALL FEATURES - CHECK READ/SET
   736	002226'	001403				BEQ	10$			; READ - CONTINUE
   737	002230'	122701	000002			CMPB	#FC.SST,R1		; SET - CHECK SET TO STD
   738	002234'	001107				BNE	FERERR			; NO - ILLEGAL COMBINATION
   739
   740	002236'	105202			10$:	INCB	R2			; ADVANCE THRU LIST
   741	002240'	100410				BMI	15$			; GRUBBLING THRU DEVICE FEATURES
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 14-1
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   742	002242'	120265	000127			CMPB	R2,C.CAPN(R5)		; CHECK RANGE
   743	002246'	101413				BLOS	20$			; OK
   744	002250'	116565	000170	000127		MOVB	C.DFET(R5),C.CAPN(R5)	; INIT FOR DEVICE SPECFIC FEATURES
   745	002256'	012702	000201			MOV	#201,R2
   746	002262'	010200			15$:	MOV	R2,R0			; DEVICE FEATURE - HACK OFF SIGN
   747	002264'	042700	177600			BIC	#^C177,R0
   748	002270'	120065	000127			CMPB	R0,C.CAPN(R5)		; CHECK RANGE
   749	002274'	101022				BHI	70$			; DONE
   750	002276'	004767	001024		20$:	CALL	FTRFND			; LOOK IT UP
   751	002302'	103004				BCC	40$			; SUPPORTED FEATURE
   752	002304'	000754				BR	10$			; TRY NEXT ONE
   753
   754	002306'	004767	001014		30$:	CALL	FTRFND			; LOOK UP FEATURE 
   755	002312'	103447				BCS	FERUSF			; UNSUPPORTED FEATURE
   756
   757					; AT THIS POINT:
   758					;	R1	Feature msg flags word(hi) + class(lo)
   759					;	R2	Feature id (byte)
   760					;	R3	Points to the feature status byte
   761					;	R5	Database address
   762					;	C.DMSQ	Seq no.
   763					;	C.NFSP	No. specs
   764
   765	002314'	132713	000040		40$:	BITB	#FB.CP,(R3)		; CHECK FOR CHANGE PENDING
   766	002320'	001060				BNE	FERCPN			; CAN'T READ OR SET IF SO
   767	002322'	032701	000400			BIT	#NF.CMD*400,R1		; FEATURE READ OR FEATURE SET?
   768	002326'	001505				BEQ	FTRSHO			; READ - GO PROCESS FEATURE READ
   769	002330'					CALLR	FTRSET			; SET - GO PROCESS IN FEATURE SET
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 15
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   771	002334'	105765	000127		FTRCON:	TSTB	C.CAPN(R5)		; CHECK FOR ALLNESS
   772	002340'	001336				BNE	10$			; YES
   773
   774	002342'	016504	000144		70$:	MOV	C.MSGQ(R5),R4		; GET BEG OF MSG
   775	002346'					MAP$	C.BUF(R4)
   776	002354'	016400	000020			MOV	C.BUF+2(R4),R0		; GET THE PTR
   777	002360'	116560	000130	000003		MOVB	C.NFSP(R5),N.NSPC(R0)	; SET IN THE FINAL SPEC COUNT
   778	002366'	004767	001554			CALL	RD$DQX			; RETURN ORIGNAL MSG TO NRD
   779	002372'					DEQ$	C.MSGQ			; GET MESSAGE OFF QUEUE
   780	002410'	166564	000154	000022		SUB	C.MSGS(R5),C.CNT(R4)	; CALCULATE MESSAGE SIZE
   781	002416'	005065	000154			CLR	C.MSGS(R5)		; COVER OUR TRACKS
   782	002422'	005265	000106			INC	C.IOCN(R5)		; COUNT THIS I/O
   783	002426'					CALLR	$SCHED			; SEND IT OFF
   784
   785
   786	002432'				FERUSF:	PUSH$S	#FR.USF
   787	002436'	000421				BR	200$
   788	002440'				FERBCL:	PUSH$S	#FR.BCL
   789	002444'	000416				BR	200$
   790	002446'				FERNST:	PUSH$S	#FR.NST
   791	002452'	000413				BR	200$
   792	002454'				FERERR:	PUSH$S	#FR.ERR
   793	002460'	000410				BR	200$
   794	002462'				FERCPN:	PUSH$S	#FR.CPN
   795	002466'	000405				BR	200$
   796	002470'				FERNEB:	PUSH$S	#FR.NEB
   797	002474'	000402				BR	200$
   798	002476'				FERDNP:	PUSH$S	#FR.DNP
   799	002502'	010200			200$:	MOV	R2,R0			; INSERT <FID><FLAGS><CLASS><ERROR>
   800	002504'	004767	000760			CALL	MS$BYT			; INSERT FID
   801	002510'	010100				MOV	R1,R0
   802	002512'	000300				SWAB	R0
   803	002514'	004767	000750			CALL	MS$BYT			; INSERT FLAGS
   804	002520'	010100				MOV	R1,R0
   805	002522'	004767	000742			CALL	MS$BYT			; INSERT CLASS
   806	002526'					POP$S	R0			; GET ERROR CODE
   807	002530'	004767	000734			CALL	MS$BYT			; INSERT RESP
   808	002534'	105265	000130			INCB	C.NFSP(R5)		; COUNT THE SPEC
   809	002540'	000675				BR	FTRCON
   810
   811					.dsabl	lsb
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 16
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   813					;+
   814					; Features Read
   815					;
   816					;R1	Feature msg flags word(hi) + class(lo)
   817					;R2	Feature id (byte)
   818					;R3	Points to the feature status byte
   819					;R5	Database address
   820					;
   821					; Reply has been formatted thru <no. specs>
   822					; insert in msg:
   823					;	<fid><flgs><class><resp><data>
   824					;-
   825
   826	002542'	010200			FTRSHO:	MOV	R2,R0
   827	002544'	004767	000720			CALL	MS$BYT			; INSERT FID
   828	002550'	010100				MOV	R1,R0			; GET READ/SET BIT
   829	002552'	000300				SWAB	R0
   830	002554'	042700	177776			BIC	#^C<NF.CMD>,R0		; NOW ISOLATED
   831	002560'	132713	000020			BITB	#FB.SST,(R3)		; FEATURE SET TO STD?
   832	002564'	001402				BEQ	10$			; NO
   833	002566'	052700	000002			BIS	#NF.STD,R0		; SET TO STD
   834	002572'	004767	000672		10$:	CALL	MS$BYT			; INSERT FLAGS
   835	002576'	105001				CLRB	R1			; SET FEATURE CLASS IN R1 (LO)
   836	002600'	132713	000001			BITB	#FB.CL1,(R3)		; CHECK CLASS 1
   837	002604'	001402				BEQ	20$			; TIS CLASS 0
   838	002606'	152701	000001			BISB	#FC.CL1,R1		; SET CLASS 1
   839	002612'	010100			20$:	MOV	R1,R0
   840	002614'	004767	000650			CALL	MS$BYT			; INSERT CLASS
   841
   842	002620'	005000				CLR	R0
   843	002622'	004767	000642			CALL	MS$BYT			; RESP - NO ERRORS
   844
   845	002626'	105701				TSTB	R1			; CHECK CLASS FOR LENGTH OF DATA
   846	002630'	001406				BEQ	30$			; 1 BIT
   847	002632'	132713	000006			BITB	#FB.WRD!FB.STR,(R3)	; MORE THAN 1 BYTE ?
   848	002636'	001012				BNE	60$			; YES
   849	002640'	005200				INC	R0			; COUNT = 1
   850	002642'	004767	000622			CALL	MS$BYT			; INSERT COUNT
   851
   852	002646'	116300	000001		30$:	MOVB	1(R3),R0		; COPY FEATURE TABLE DATA ENTRY
   853	002652'	004767	000612		40$:	CALL	MS$BYT			; INSERT DATA
   854	002656'	105265	000130		50$:	INCB	C.NFSP(R5)		; COUNT THE SPEC
   855	002662'	000624				BR	FTRCON			; CONTINUE FEATURE HACKING
   856
   857					; MULTIPLE BYTE VALUE
   858	002664'	132713	000004		60$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   859	002670'	001015				BNE	70$			; STRING 
   860					; WORD VALUE - F.FCV = DATABASE OFFSET TO WORD 
   861	002672'	012700	000002			MOV	#2,R0			; 2 BYTE VALUE
   862	002676'	004767	000566			CALL	MS$BYT			; INSERT CNT
   863
   864	002702'	005000				CLR	R0
   865	002704'	156300	000001			BISB	F.FCV(R3),R0
   866	002710'	060500				ADD	R5,R0
   867	002712'	011000				MOV	(R0),R0			; YES, READ SETTING FROM THE DATABASE
   868	002714'	004767	000550			CALL	MS$BYT			; INSERT LO BYTE
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 16-1
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   869	002720'	000300				SWAB	R0
   870	002722'	000753				BR	40$			; INSERT HI BYTE
   871
   872					; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   873	002724'	005203			70$:	INC	R3			; THIS DEPENDS ON F.FCV=1
   874	002726'	112300				MOVB	(R3)+,R0		; GET THE LENGTH
   875	002730'	004767	000534			CALL	MS$BYT			; INSERT IN MSG
   876	002734'	010004				MOV	R0,R4			; SAVE IT
   877	002736'	112300			80$:	MOVB	(R3)+,R0		; INSERT THE STRING IN MSG
   878	002740'	004767	000524			CALL	MS$BYT
   879	002744'	105304				DECB	R4			; COUNT THE BYTE
   880	002746'	001373				BNE	80$
   881	002750'	000742				BR	50$
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 17
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   883					;+
   884					; Features set
   885					;
   886					;	R1	Feature msg flags word(hi) + class(lo)
   887					;	R2	Feature id (byte)
   888					;	R3	Points to the feature status byte
   889					;	R5	Database address
   890					; 
   891					; Reply has been formatted thru <no. specs=1>
   892					;-
   893	002752'	122701	000002		FTRSET:	CMPB	#FC.SST,R1		; CHECK STDNESS
   894	002756'	001501				BEQ	40$			; STD RESULT
   895	002760'	132713	000100			BITB	#FB.CA,(R3)		; REAL SET - CHECK IF SETABLE
   896	002764'	001633				BEQ	FERERR			; NO
   897	002766'	111300				MOVB	(R3),R0			; FEATURE IS SETTABE
   898	002770'	074100				XOR	R1,R0			; CHECK CLASS SPEC
   899	002772'	042700	177776			BIC	#^C<FB.CL1>,R0		; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
   900	002776'	001220				BNE	FERBCL			; RESULT SHOULD BE 0
   901	003000'	122701	000001			CMPB	#FC.CL1,R1		; CHECK DATA CLASS
   902	003004'	001010				BNE	10$			; CLASS 0
   903	003006'	004767	000774			CALL	RD$BYT			; CLASS 1 - FEATURE DEPENDENT DATA
   904										; CHECK EXPLICITLY FOR ALL > 1
   905	003012'	132713	000006			BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE DATA
   906	003016'	001012				BNE	30$			; GO DO IT
   907										; ONLY ONE BYTE FEATURES LEFT
   908	003020'	122700	000001			CMPB	#1,R0			; SEE IF IT IS
   909	003024'	001213				BNE	FERERR			; LOSER
   910										; YES - GO SET THE FEATURE
   911	003026'	004767	000754		10$:	CALL	RD$BYT			; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
   912	003032'	110063	000001			MOVB	R0,1(R3)		; SET FEATURE CURRENT VALUE
   913	003036'	142713	000020		12$:	BICB	#FB.SST,(R3)		; NOT SET TO STD
   914	003042'	000637				BR	FTRSHO			; NOW READ THE FEATURE
   915
   916					; MULTIPLE BYTE VALUES
   917	003044'	132713	000004		30$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   918	003050'	001023				BNE	35$			; STRING VALUE
   919	003052'	122700	000002			CMPB	#2,R0			; 2 BYTE LENGTH
   920	003056'	001025				BNE	36$			; SCREWED IT UP
   921	003060'	004767	000722			CALL	RD$BYT			; GET THE PAGE LIMIT
   922	003064'	110065	000142			MOVB	R0,C.PBRC(R5)		; HIDE THE LO PART 
   923	003070'	004767	000712			CALL	RD$BYT			; GET THE HI PART
   924	003074'	000300				SWAB	R0
   925	003076'	156500	000142			BISB	C.PBRC(R5),R0		; R0/NEW WORD VALUE
   926	003102'	010046				MOV	R0,-(SP)
   927	003104'	005000				CLR	R0
   928	003106'	156300	000001			BISB	F.FCV(R3),R0
   929	003112'	060500				ADD	R5,R0
   930	003114'	012610				MOV	(SP)+,(R0)		; SET THE NEW VALUE IN WORD
   931	003116'	000747				BR	12$
   932
   933					; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   934	003120'				35$:	PUSH$S	R3			; SAVE THE FEATURE BLOCK PTR
   935	003122'	005203				INC	R3			; THIS DEPENDS ON F.FCV=1
   936	003124'	120023				CMPB	R0,(R3)+		; CHECK THE LENGTH
   937	003126'	001403				BEQ	37$			; OK
   938	003130'					POP$S	R3			; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 17-1
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   939	003132'				36$:	CALLR	FERERR			; AND REPORT THE ERROR
   940	003136'				37$:	PUSH$S	R1			; SAVE THE VARIABLES
   941	003140'	010001				MOV	R0,R1			; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
   942	003142'	004767	000640		38$:	CALL	RD$BYT			; XFER THE NEW VALUE TO THE CURRENT VALUE
   943	003146'	110023				MOVB	R0,(R3)+		; STUFF THE BYTE
   944	003150'	077104				SOB	R1,38$			; AND COUNT IT
   945	003152'					POP$S	<R1,R3>
   946	003156'					CALLR	FTRSHO			; NOW READ THE FEATURE
   947
   948	003162'	004767	000012		40$:	CALL	SETSTD			; SET FEATURE TO STD
   949	003166'	103002				BCC	45$
   950	003170'					CALLR	FERNST			; NO STD TO SET
   951	003174'				45$:	CALLR	FTRCON			; DON'T READ IT
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 18
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   953					;+
   954					; Set feature to its standard value
   955					;
   956					;	R3	Ptr to feature block in database
   957					;	R5	Database address
   958					;-
   959	003200'	132713	000010		SETSTD:	BITB	#FB.STE,(R3)		; SEE IF IT HAS ONE
   960	003204'	001002				BNE	10$			; YES
   961	003206'	000261				SEC				; NO STD TO SET
   962	003210'					RETURN
   963	003212'	132713	000006		10$:	BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE VALUES
   964	003216'	001006				BNE	20$			; YES
   965	003220'	116363	000002	000001		MOVB	F.FSV(R3),F.FCV(R3)	; SET CURRENT VALUE = STD VALUE
   966	003226'	152713	000020			BISB	#FB.SST,(R3)		; MARK FEATURE AS SET TO STD
   967	003232'	000433				BR	50$
   968
   969					; MULTIPLE BYTE VALUE
   970	003234'	132713	000004		20$:	BITB	#FB.STR,(R3)		; DELINEATE WORD AND LONGER STRINGS
   971	003240'	001013				BNE	40$			; STRING
   972	003242'					PUSH$S	R5			; WORD VALUE
   973	003244'	005046				CLR	-(SP)
   974	003246'	116316	000001			MOVB	F.FCV(R3),(SP)
   975	003252'	062605				ADD	(SP)+,R5		; R5 /PTR TO CURRENT VALUE
   976	003254'	116325	000002			MOVB	F.FSV(R3),(R5)+		; XFER LO BYTE
   977	003260'	116315	000003			MOVB	F.FSV+1(R3),(R5)	; XFER HI BYTE
   978	003264'					POP$S	R5
   979	003266'	000415				BR	50$
   980
   981					; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   982					; STD VALUE BEGINS AT F.FCV+1+(F.FCV)
   983	003270'				40$:	PUSH$S	<R0,R1,R3>
   984	003276'	005203				INC	R3			; DEPENDS ON F.FCV=1
   985	003300'	005000				CLR	R0
   986	003302'	152300				BISB	(R3)+,R0		; GET THE COUNT
   987	003304'	010001				MOV	R0,R1
   988	003306'	060301				ADD	R3,R1			; R0/COUNT
   989										; R1/SOURCE ADDRESS
   990										; R3/DESTINATION ADDRESS
   991	003310'	112123			45$:	MOVB	(R1)+,(R3)+		; XFER THE STD VALUE
   992	003312'	077002				SOB	R0,45$			; COUNT IT
   993	003314'					POP$S	<R3,R1,R0>
   994	003322'	000241			50$:	CLC
   995	003324'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 19
CR.M11    30-DEC-82 02:07		MESSAGE RECEIVED  (FC.RCP)

   997					;+
   998					; FTRFND looks for a feature with fid in r2 and returns ptr
   999					; to feature block in r3 if successful normal carry flag
  1000					; condition for success or failure
  1001					;-
  1002	003326'	012703	000156		FTRFND:	MOV	#C.CFET,R3		; TRY COMMON FEATURE 1ST
  1003	003332'					PUSH$S	R2			; SAVE FID CAUSE IT WILL BE MANGLED
  1004	003334'	105702				TSTB	R2			; CHECK IF DEVICE SPECIFIC FTR
  1005	003336'	100004				BPL	10$			; COMMON, SKIP
  1006	003340'	012703	000170			MOV	#C.DFET,R3		; DEVICE SPECIFIC, GET POINTER
  1007	003344'	042702	177600			BIC	#177600,R2		; TRUNCATE TO JUST OFFSET ABOVE 128
  1008	003350'	001414			10$:	BEQ	20$			; ZERO IS AN ILLEGAL FEATURE CODE
  1009	003352'	060503				ADD	R5,R3			; R3 -> FEATURE LIST IN DATABASE
  1010	003354'	020213				CMP	R2,(R3)			; CHECK ON ID RANGE
  1011	003356'	103011				BHIS	20$			; SKIP IF OUT OF RANGE
  1012										; R3 IS POINTING TO THE BASE OF THE
  1013										;   FEATURES LIST, WHICH HOLDS HIGHEST
  1014										;   STORED FEATURE CODE
  1015	003360'	060203				ADD	R2,R3			; ADD THE FID TO POINT TO ADDRESS
  1016										;   OF FEATURE BLOCK
  1017	003362'	111303				MOVB	(R3),R3			; ENTRY IS DB OFFSET TO FEATURE BLOCK
  1018	003364'	001406				BEQ	20$			; UNSUPPORTED FEATURE
  1019	003366'	042703	177400			BIC	#^C377,R3		; FLUSH SIGN EXTENSION
  1020	003372'	060503				ADD	R5,R3			; R3 -> FEATURE BLOCK
  1021	003374'					POP$S	R2
  1022	003376'	000241				CLC
  1023	003400'					RETURN
  1024
  1025	003402'				20$:	POP$S	R2			; UNSUPPORTED FEATURE
  1026	003404'	000261				SEC
  1027	003406'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 20
CR.M11    30-DEC-82 02:07		SUPPORT ROUTINES

  1029					.sbttl	Support Routines
  1030					;+
  1031					; The following pages, up to start of interrupt handler code,
  1032					; contain the various support routines needed in CR.
  1033					;
  1034					; The routines are arranged in alphabetical order.
  1035					;-
  1036
  1037
  1038
  1039
  1040					;+
  1041					; Get a small data buffer
  1042					;-
  1043	003410'				BF$SDB:	PUSH$S	R1			; SAVE R1
  1044	003412'	012701	000074			MOV	#60.,R1			; BUFFER SIZE WANTED
  1045	003416'	004767	000000G			CALL	$CBBGT			; GET A MESSAGE BUFFER
  1046	003422'	103420				BCS	10$			; LOSE
  1047	003424'	010164	000022			MOV	R1,C.CNT(R4)		; SET SIZE
  1048	003430'	005064	000026			CLR	C.PRM2(R4)		; IDENTIFY AS A MESSAGE BUFFER
  1049	003434'	112764	000004	000025		MOVB	#S$PEOM,C.PRM1+1(R4)	; INIT AS A WHOLE MSG
  1050	003442'	112764	000002	000012		MOVB	#FC.XME,C.FNC(R4)	; INIT FUNCTION AND MOD
  1051	003450'	112764	000006	000013		MOVB	#S$SND,C.MOD(R4)	; ...
  1052	003456'	116564	000001	000011		MOVB	C.NRD(R5),C.PIX(R4)	; SET NRD'S PIX
  1053	003464'				10$:	POP$S	R1			; RESTORE R1
  1054	003466'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 21
CR.M11    30-DEC-82 02:07		SUPPORT ROUTINES

  1056					;+
  1057					; NURD message builder
  1058					;
  1059					;	R0	Byte to put into buffer
  1060					;	R5	Database address
  1061					;-
  1062	003470'	005365	000154		MS$BYT:	DEC	C.MSGS(R5)		; COUNT IT
  1063	003474'	002410				BLT	20$			; BUFFER ALREADY FULL
  1064	003476'					MAP$	C.MSGA(R5)		; MAP TO BUFFER
  1065	003504'	110075	000152			MOVB	R0,@C.MSGA+2(R5)	; INSERT CHAR
  1066	003510'	005265	000152			INC	C.MSGA+2(R5)		; ADVANCE PTR
  1067	003514'					RETURN
  1068
  1069	003516'	005065	000154		20$:	CLR	C.MSGS(R5)		; RESET THE COUNT
  1070	003522'				25$:	PUSH$S	R4
  1071	003524'	004767	177660			CALL	BF$SDB			; GET A BUFFER
  1072	003530'	103422				BCS	30$			; OOPS
  1073	003532'	005064	000014			CLR	C.STS(R4)		; INIT THE STATUS
  1074	003536'	016465	000016	000150		MOV	C.BUF(R4),C.MSGA(R5)	; MAKE IT THE CURRENT BUFFER
  1075	003544'	016465	000020	000152		MOV	C.BUF+2(R4),C.MSGA+2(R5)
  1076	003552'	016465	000022	000154		MOV	C.CNT(R4),C.MSGS(R5)
  1077	003560'					ENQ$	C.MSGQ			; ADD IT TO END OF LIST
  1078	003572'					POP$S	R4
  1079	003574'	000735				BR	MS$BYT			; NOW STUFF THE CHAR
  1080
  1081	003576'				30$:	POP$S	R4
  1082	003600'	004767	001124			CALL	ZZ$SLP			; ZZZzzz
  1083	003604'	000746				BR	25$
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 22
CR.M11    30-DEC-82 02:07		SUPPORT ROUTINES

  1085					;+
  1086					; Purge the queues
  1087					;
  1088					;   Abort all from  <DDMQ>, <DLCQ>, and <MSGQ>   (in that order).
  1089					;-
  1090	003606'				Q$PURG:	PUSH$S	<R0,R1,R3,R4>		; SAVE CURRENT CCB, DATABASE ADDR, ETC
  1091	003616'	004767	001414			CALL	$CRSTP			; Stop the reader
  1092
  1093	003622'				10$:	DEQ$	C.DDMQ,20$		; RETURN CURRENT READ BUFFERS TO POOL
  1094	003642'	004767	000000G			CALL	$RDBRT			; ...
  1095	003646'	000765				BR	10$
  1096
  1097	003650'				20$:	DEQ$	C.DLCQ,30$		; ABORT ANY MSGS WAITING TO BE DONE
  1098	003670'	012764	177767	000014		MOV	#S.EABO,C.STS(R4)
  1099	003676'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)
  1100	003704'	004767	000000G			CALL	$SCHED
  1101	003710'	000757				BR	20$
  1102
  1103	003712'				30$:	DEQ$	C.MSGQ,40$		; FLUSH ANYTHING GOING OUT
  1104	003732'	012701	000074			MOV	#60.,R1
  1105	003736'	004767	000000G			CALL	$CBBRT			; ...
  1106	003742'	000763				BR	30$
  1107
  1108	003744'	105065	000044		40$:	CLRB	C.DTXL(R5)		; Clear any suspended processing
  1109	003750'	005065	000064			CLR	C.PUBP+2(R5)		; NO CURRENT READ BUFFER
  1110	003754'	005065	000134			CLR	C.DMAD+2(R5)		; NO CURRENT SOURCE BUFFER
  1111	003760'	005065	000132			CLR	C.DMAD(R5)
  1112	003764'	005065	000136			CLR	C.DMBS(R5)		; MAY HAVE BEEN A MESSAGE IN PROGRESS
  1113	003770'	005065	000154			CLR	C.MSGS(R5)		; ...
  1114
  1115	003774'					POP$S	<R4,R3,R1,R0>		; DONE
  1116	004004'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 23
CR.M11    30-DEC-82 02:07		GET AND PUT DATA BYTES

  1118					.sbttl	Get and Put Data Bytes
  1119					;+
  1120					; USED BY "DATA" AND BY "FTRSYN".
  1121					; A FTRSYN MSG IS SHUFFLED THRU DDM (AS AN EMPTY BUFFER) SO THAT
  1122					; IT IS RETURNED IN THE SAME SEQUENCE RELATIVE TO DATA THAT IT
  1123					; WAS RECEIVED.
  1124					;-
  1125	004006'	005365	000136		RD$BYT:	DEC	C.DMBS(R5)		; DECREMENT COUNTER
  1126	004012'	002411				BLT	5$			; BUFFER EMPTIED ALREADY
  1127	004014'					MAP$	C.DMAD(R5)		; MAP IF NEED BE
  1128	004022'	005000				CLR	R0
  1129	004024'	157500	000134			BISB	@C.DMAD+2(R5),R0	; GET BYTE FROM PHYSICAL BUFFER
  1130	004030'	005265	000134			INC	C.DMAD+2(R5)		; INCREMENT POINTER
  1131	004034'					RETURN
  1132
  1133	004036'	005765	000134		5$:	TST	C.DMAD+2(R5)		; IS A BUFFER IN PROCESS?
  1134	004042'	001421				BEQ	10$			; NO BUF IN USE
  1135	004044'	016504	000122			MOV	C.DLCQ(R5),R4		; CHECK FOR MSG CONTINUITY
  1136	004050'	132764	000004	000025		BITB	#S$PEOM,C.PRM1+1(R4)
  1137	004056'	001403				BEQ	9$
  1138	004060'	052765	000004	000102		BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
  1139	004066'	004767	000054		9$:	CALL	RD$DQX			; EMPTIED BUF ON TOP
  1140	004072'	032700	000004			BIT	#S$PEOM,R0		; CHECK STATUS OF MSG DEQUEUED
  1141	004076'	001403				BEQ	10$
  1142	004100'	016506	000046			MOV	C.DFSP(R5),SP		; GET THE STACK ORIGIN BACK SO CAN QUIT
  1143	004104'					RETURN				; EXIT
  1144
  1145	004106'	016504	000122		10$:	MOV	C.DLCQ(R5),R4		; IS THERE A QUEUED ENTRY?
  1146	004112'	001003				BNE	15$			; YES, SET UP POINTER AND COUNTER
  1147	004114'	004767	000610			CALL	ZZ$SLP			; Wait til next segment arrives
  1148	004120'	000772				BR	10$
  1149
  1150	004122'	016465	000016	000132	15$:	MOV	C.BUF(R4),C.DMAD(R5)	; GET ADDRESS DOUBLEWORD AS PTR
  1151	004130'	016465	000020	000134		MOV	C.BUF+2(R4),C.DMAD+2(R5)
  1152	004136'	016465	000022	000136		MOV	C.CNT(R4),C.DMBS(R5)	; GET BUFFER COUNT AS SIZE COUNTER
  1153	004144'	000720				BR	RD$BYT			; TRY AGAIN
  1154
  1155
  1156					;+
  1157					; Dequeue and return a source buffer to NRD
  1158					;-
  1159	004146'	005065	000134		RD$DQX:	CLR	C.DMAD+2(R5)		; INDICATE "NO BUFFER IN USE"
  1160	004152'	005065	000136			CLR	C.DMBS(R5)
  1161	004156'					DEQ$	C.DLCQ			; DEQUEUE MSG JUST DONE
  1162	004174'					PUSH$S	C.STS(R4)		; SAVE MSG STAUS
  1163	004200'	005064	000014			CLR	C.STS(R4)		;  AND ACK IT
  1164	004204'	112764	000004	000012		MOVB	#FC.RCE,C.FNC(R4)	;   ...
  1165	004212'	004767	000000G			CALL	$SCHED
  1166	004216'					POP$S	R0
  1167	004220'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 24
CR.M11    30-DEC-82 02:07		GET AND PUT DATA BYTES

  1169					;+
  1170					; Send alert message
  1171					;-
  1172	004222'	004767	177162		SN$ALR:	CALL	BF$SDB			; GET A MESSAGE BUFFER
  1173	004226'	103417				BCS	10$			; COULDN'T
  1174	004230'	016401	000020			MOV	C.BUF+2(R4),R1		; GET BUFFER PTR
  1175	004234'	112721	000004			MOVB	#NM.ALR,(R1)+		; BUILD ALERT MSG IN SINGLE WORD
  1176	004240'	105021				CLRB	(R1)+			; CLEAR NURD MSG FLGS
  1177	004242'	012764	000002	000022		MOV	#2,C.CNT(R4)
  1178	004250'	112764	000014	000013		MOVb	#S$SNI,C.MOD(R4)	; ALERT IS AN INTERRUPT MSG
  1179	004256'	005265	000106			INC	C.IOCN(R5)
  1180	004262'					CALLR	$SCHED
  1181	004266'				10$:	RETURN
  1182
  1183
  1184
  1185					;+
  1186					; Send attention message
  1187					;
  1188					; Allocate an sdb and build an attention message.
  1189					; Reason code is in C.RATT.
  1190					; 
  1191					;  format: <1><0><last seq #><rsn code><flags: 1-3 bytes><card count: 2 bytes>
  1192					;-
  1193	004270'				SN$ATT:	PUSH$S	<R0,R1,R2,R3,R4>	; PRESERVE THE REGISTERS
  1194	004302'	116502	000117			MOVB	C.RATT(R5),R2		; GET EXCUSE CODE FOR ATTENTION MSG
  1195	004306'	001525				BEQ	110$			; NO ATTENTION IS PENDING, LEAVE
  1196
  1197					; BUILD AND SEND AN ATTENTION MESSAGE
  1198	004310'	004767	177074			CALL	BF$SDB			; GET A MESSAGE BUFFER
  1199	004314'	103522				BCS	110$			; FAILED, EXIT - WE'LL BE BACK
  1200	004316'	016401	000020			MOV	C.BUF+2(R4),R1		; GET POINTER TO START OF BUFFER
  1201	004322'	112721	000001			MOVB	#NM.ATT,(R1)+		; LOAD MSG TYPE TO BUFFER
  1202	004326'	105021				CLRB	(R1)+			; CLEAR NURD MSG FLGS
  1203	004330'	116521	000104			MOVB	C.CDCT(R5),(R1)+	; STORE LAST GOOD SEQ NUMBER IN ATTENTION
  1204	004334'	110221				MOVB	R2,(R1)+		; LOAD ATTENTION CODE
  1205										; BUILD FLAGS FIELD
  1206	004336'	005002				CLR	R2			; CLEAR FLAGS ACCUMULATOR
  1207	004340'	016500	000102			MOV	C.ASTS(R5),R0		; GET DEVICE STATUS
  1208	004344'	032700	000604			BIT	#CA.ADN!CA.MOT!CA.TER,R0 ; FATAL ERRORS ?
  1209	004350'	001402				BEQ	10$
  1210	004352'	052702	000001			BIS	#NA.FAT,R2		; SOME FATAL ERROR - USUALLY USER'S
  1211
  1212	004356'	032700	001000		10$:	BIT	#CA.OFL,R0		; READER OFFLINE ?
  1213	004362'	001402				BEQ	11$			; NO
  1214	004364'	052702	000002			BIS	#NA.OFL,R2		; YES, NOTE OFFLINE
  1215
  1216	004370'	032700	000002		11$:	BIT	#CA.PAU,R0		; PAUSED?
  1217	004374'	001402				BEQ	12$			; NO
  1218	004376'	052702	000004			BIS	#NA.PAU,R2		; YES
  1219
  1220	004402'	032700	000100		12$:	BIT	#CA.HOP,R0		; HOPPER EMPTY ?
  1221	004406'	001402				BEQ	20$
  1222	004410'	052702	000010			BIS	#NA.OMD,R2		; MAYBE - SETS NA.OUF ALSO
  1223
  1224	004414'	052702	000200		20$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 24-1
CR.M11    30-DEC-82 02:07		GET AND PUT DATA BYTES

  1225	004420'	110221				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 1 FLAGS
  1226	004422'	005002				CLR	R2			; CLEAR FOR BYTE 2 FLAGS
  1227	004424'	032700	000100			BIT	#CA.HOP,R0		; OUTPUT HOPPER FULL ?
  1228	004430'	001402				BEQ	21$
  1229	004432'	052702	000001			BIS	#NA.OUF,R2		; MAYBE
  1230
  1231	004436'	032700	004000		21$:	BIT	#CA.TMO,R0		; HUNG?
  1232	004442'	001402				BEQ	22$			; NO
  1233	004444'	052702	000004			BIS	#NA.DTO,R2		; YES
  1234
  1235	004450'	032700	000200		22$:	BIT	#CA.MOT,R0		; PICK FAILURE ?
  1236	004454'	001402				BEQ	30$
  1237	004456'	052702	000020			BIS	#NA.PF,R2		; MAYBE
  1238
  1239	004462'	052702	000200		30$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
  1240	004466'	110221				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 2
  1241	004470'	005002				CLR	R2			; CLEAR FOR BYTE 3 FLAGS
  1242	004472'	032700	002000			BIT	#CA.IVP,R0		; INVALID PUNCH ?
  1243	004476'	001402				BEQ	40$
  1244	004500'	052702	000001			BIS	#NA.IVP,R2		; YES
  1245
  1246	004504'	110211			40$:	MOVB	R2,(R1)			; THAT'S IT FOR BYTE 3 FLAGS
  1247	004506'	001005				BNE	50$			; 3 BYTE FEILD
  1248	004510'	142741	000200			BICB	#200,-(R1)		; NOT MORE THAN 2 BYTES
  1249	004514'	001002				BNE	50$			; 2 BYTER
  1250	004516'	142741	000200			BICB	#200,-(R1)		; ONLY 1 BYTE
  1251
  1252	004522'	005201			50$:	INC	R1			; ADVANCE R1 TO NEXT AVAILABLE BYTE
  1253	004524'	016503	000104			MOV	C.CDCT(R5),R3		; GET CARD COUNT ACCUMULATOR
  1254	004530'	110321				MOVB	R3,(R1)+		; STORE LOW BYTE OF COUNT
  1255	004532'	000303				SWAB	R3			; GET HIGH BYTE
  1256	004534'	110321				MOVB	R3,(R1)+		; STORE IT TOO
  1257	004536'	166401	000020			SUB	C.BUF+2(R4),R1		; COMPUTE MSG SIZE
  1258	004542'	010164	000022			MOV	R1,C.CNT(R4)		; STUFF IT INTO CCB
  1259	004546'	005265	000106			INC	C.IOCN(R5)
  1260	004552'	004767	000000G			CALL	$SCHED
  1261	004556'	105065	000117			CLRB	C.RATT(R5)		; CLEAR PENDING REQUEST FOR ATTENTION
  1262	004562'				110$:	POP$S	<R4,R3,R2,R1,R0>	; RESTORE REGS
  1263	004574'					RETURN				; EXIT SEND ATTENTION
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 25
CR.M11    30-DEC-82 02:07		GET AND PUT DATA BYTES

  1265					;+
  1266					; Send capabilities message
  1267					;
  1268					; message format: <no. features><...fid's...>
  1269					;-
  1270	004576'	004767	176606		SN$CAP:	CALL	BF$SDB			; GET A MSG BUFFER
  1271	004602'	103451				BCS	100$
  1272	004604'	016403	000020			MOV	C.BUF+2(R4),R3		; GET BUFFER ADDRESS
  1273										; FORMAT A NURD MESSAGE
  1274	004610'	112723	000005			MOVB	#NM.CAP,(R3)+		; NURD MSG TYPE = CAPABILITIES
  1275	004614'	105023				CLRB	(R3)+			; NO FLAGS
  1276	004616'					PUSH$S	R3			; SAVE PTR TO CNT
  1277	004620'	105023				CLRB	(R3)+			; INIT CNT
  1278	004622'	012764	000003	000022		MOV	#3,C.CNT(R4)		; SET BUFFER CNT = BYTES INSERTED
  1279	004630'					PUSH$S	R5			; SAVE THE DATABASE PTR
  1280	004632'	062705	000156			ADD	#C.CFET,R5		; GET R5 -> COMMON FEATURES LIST
  1281	004636'	005001				CLR	R1			; INIT THE FID
  1282
  1283	004640'	005000			10$:	CLR	R0			; GET LENGTH OF FEATURE LIST
  1284	004642'	152500				BISB	(R5)+,R0
  1285	004644'	001407				BEQ	31$			; NO FEATURES!!
  1286
  1287	004646'	005201			20$:	INC	R1			; ADVANCE THE FID
  1288	004650'	105725				TSTB	(R5)+			; CHECK FOR SUPPORT OF IT
  1289	004652'	001403				BEQ	30$			; NOPE
  1290	004654'	110123				MOVB	R1,(R3)+		; YES - STORE FID IN MSG
  1291	004656'	005264	000022			INC	C.CNT(R4)		; COUNT IT
  1292	004662'	077007			30$:	SOB	R0,20$
  1293
  1294	004664'	105701			31$:	TSTB	R1			; CHECK WHICH FEATURE LIST
  1295	004666'	100403				BMI	40$			; DEVICE SPECIFIC - DONE
  1296	004670'	012701	000200			MOV	#200,R1			; INIT FID FOR DEVICE SPECIFIC FEATURES
  1297	004674'	000761				BR	10$			; PROCESS THAT LIST
  1298
  1299	004676'				40$:	POP$S	R5			; GET THE DATABASE PTR BACK
  1300	004700'	016400	000022			MOV	C.CNT(R4),R0		; GET THE BUFFER CNT
  1301	004704'	162700	000003			SUB	#3,R0			; CALC NO. FEATURES FOUND
  1302	004710'	110036				MOVB	R0,@(SP)+		; STORE CNT IN CNT BYTE OF MSG
  1303	004712'	005265	000106			INC	C.IOCN(R5)
  1304	004716'	004767	000000G			CALL	$SCHED
  1305	004722'	105065	000120			CLRB	C.CAPP(R5)		; FLUSH THE FLAG
  1306	004726'				100$:	RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 26
CR.M11    30-DEC-82 02:07		GET AND PUT DATA BYTES

  1308					;+
  1309					; Data / Features hiber function
  1310					; Called by process to wait for a clock tick.
  1311					;-
  1312	004730'	010065	000004		ZZ$SLP:	MOV	R0,C.DTXT(R5)		; STORE THE REGISTERS 1ST
  1313	004734'	012700	000006			MOV	#C.DTXT+2,R0
  1314	004740'	060500				ADD	R5,R0			; R0 -> R1 SLOT
  1315	004742'	010120				MOV	R1,(R0)+
  1316	004744'	010220				MOV	R2,(R0)+
  1317	004746'	010320				MOV	R3,(R0)+
  1318	004750'	010420				MOV	R4,(R0)+
  1319	004752'	105065	000044			CLRB	C.DTXL(R5)		; INIT THE COUNT
  1320
  1321	004756'	122765	000013	000044	10$:	CMPB	#DTXTSZ-5,C.DTXL(R5)	; CHECK INCIPIENT OVERFLOW
  1322	004764'	101001				BHI	20$
  1323	004766'	000003				BPT				; PROGRAM BUG
  1324	004770'	012620			20$:	MOV	(SP)+,(R0)+		; XFER NEXT STACK WORD
  1325	004772'	105265	000044			INCB	C.DTXL(R5)		; COUNT IT
  1326	004776'	026506	000046			CMP	C.DFSP(R5),SP		; CHECK ORIGIN
  1327	005002'	001365				BNE	10$			; MORE
  1328	005004'					RETURN				; DONE
  1329
  1330
  1331					;+
  1332					; Clock has ticked.
  1333					;-
  1334	005006'	010665	000046		ZZ$WAK:	MOV	SP,C.DFSP(R5)		; Set the new stack origin
  1335	005012'	005000				CLR	R0			; Get the number of 
  1336	005014'	156500	000044			BISB	C.DTXL(R5),R0		;   words to return to stack
  1337	005020'	006300				ASL	R0			;   as word offset
  1338	005022'	062700	000016			ADD	#C.DTXT+12,R0		; This is where they are at
  1339	005026'	060500				ADD	R5,R0			; R0 -> 1st word to return to stack
  1340
  1341	005030'	014046			10$:	MOV	-(R0),-(SP)		; Xfer the stack contents
  1342	005032'	105365	000044			DECB	C.DTXL(R5)		; Count them
  1343	005036'	001374				BNE	10$
  1344
  1345	005040'	014004				MOV	-(R0),R4		; Restore the registers
  1346	005042'	014003				MOV	-(R0),R3
  1347	005044'	014002				MOV	-(R0),R2
  1348	005046'	014001				MOV	-(R0),R1
  1349	005050'	014000				MOV	-(R0),R0
  1350	005052'					RETURN				; RETURN TO ORIGINAL CALLER OF ZZ$SLP
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 27
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1352					.sbttl	Interrupt Service
  1353					;+
  1354					; Configuration stuff
  1355					;-
  1356		000005				CRHNG	=	5		; HUNG DEVICE TIME CONSTANT
  1357		000005				RDAHD	=	5		; C.IOCN LIMIT WHEN CA.XOF SET
  1358
  1359					;+
  1360					; CR11 Hardware device register definitions
  1361					;-
  1362		000000				CRS	= 0		; CARD READER STATUS REGISTER
  1363
  1364		000001				READ	=	1	; (W)  FEED A CARD TO THE READ STATION
  1365		000002				EJECT	=	2	; (R/W) INHIBIT COLUMN DONE & TIMERR
  1366		000100				INTENB	=	100	; (R/W) INTERRUPT ENABLE
  1367									;      (ERROR,CARD DONE,COLUMN DONE,
  1368									; 	 OFFLINE OR ONLINE TRANSITION)
  1369		000200				COLDN	=	200	; (R:I) COLUMN DONE - DATA READY
  1370		000400				RDROFL	=	400	; (R)   READER IS OFFLINE
  1371		001000				BUSY	=	1000	; (R)   READER BUSY
  1372		002000				RDRONL	=	2000	; (R:I)   READER TRANSITION TO ONLINE
  1373		004000				TIMERR	=	4000	; (R)   TIMING ERROR - SERVICE TOO SLOW
  1374		010000				MOCHK	=	10000	; (R)   MOTION CHECK -FORCES OFFLINE
  1375									;       (FEED ERROR,MOTION ERROR,STACK FAIL)
  1376		020000				HOCHK	=	20000	; (R)   HOPPER CHECK - INPUT EMPTY/OUTPUT FULL
  1377									; 	FORCES OFFLINE
  1378		040000				CARDN	=	40000	; (R:I) CARD DONE
  1379		100000				ERROR	=	100000	; (R:I) SUMMARY ERROR BIT
  1380									; 	SET BY:	TRANSITION TO OFFLINE
  1381									; 		TIMING ERROR AT CARD DONE TIME
  1382
  1383		000002				CRB1	=	CRS+2	; IMAGE DATA REGISTER
  1384									;  BIT 11   = ZONE 12
  1385									;  BIT 10   = ZONE 11
  1386									;  BIT  9   = ZONE  0
  1387									;  BITS 8-0 = ROWS 1-9
  1388
  1389		000004				CRB2	=	CRB1+2	; COMPRESSED DATA REGISTER
  1390									;  BIT 7    = ZONE 12
  1391									;  BIT 6    = ZONE 11
  1392									;  BIT 5    = ZONE  0
  1393									;  BIT 4    = ROW   9
  1394									;  BIT 3    = ROW   8
  1395									;  BITS 2-0 = ROWS 1-7 ENCODED(SINGLE PUNCH)
  1396									; 	MULTIPUNCH IN 1-7 OR'S
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 28
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1398					;+
  1399					; Start reader
  1400					;-
  1401	005054'	032765	000042	000102	$CRSTR:	BIT	#CA.PAU!CA.EOF,C.ASTS(R5) ; START THE CARD READER
  1402	005062'	001012				BNE	6$			; CAN'T YET
  1403	005064'	022765	000005	000106		CMP	#RDAHD,C.IOCN(R5)	; YES - CHECK READ AHEAD LIMIT
  1404	005072'	003406				BLE	6$			; STOP READING
  1405
  1406	005074'	005765	000076		5$:	TST	C.DDMQ(R5)		; CHECK FOR BUFFERS
  1407	005100'	001036				BNE	10$			; YES - CAN PROCEED
  1408	005102'	004767	000000G			CALL	$RDBGT			; GET A BUFFER
  1409	005106'	103004				BCC	7$			; OK
  1410	005110'	112765	000001	000121	6$:	MOVB	#1,C.STRT(R5)		; SET PENDING READ
  1411	005116'					RETURN				; WAIT TIL ANOTHER TIME
  1412
  1413	005120'	112764	000004	000025	7$:	MOVB	#S$PEOM,C.PRM1+1(R4)
  1414	005126'	012764	177777	000026		MOV	#-1,C.PRM2(R4)		; Identify as an RDB
  1415	005134'	016764	000000G	000022		MOV	.RDBSZ,C.CNT(R4)	; Set size
  1416	005142'	112764	000002	000012		MOVB	#FC.XME,C.FNC(R4)
  1417	005150'	112764	000006	000013		MOVB	#S$SND,C.MOD(R4)
  1418	005156'	116564	000001	000011		MOVB	C.NRD(R5),C.PIX(R4)
  1419	005164'					ENQ$	C.DDMQ			; Queue it
  1420	005176'	005065	000064		10$:	CLR	C.PUBP+2(R5)		; INIT THINGS TO CAUSE COLD STARTUP
  1421	005202'	105065	000121			CLRB	C.STRT(R5)		; FLUSH THE PENDING READ
  1422	005206'	105065	000060			CLRB	C.COLC(R5)		; CLEAR COLUMN COUNT FOR CLEAN START
  1423	005212'	042765	007700	000102		BIC	#CA.ERR!CA.OFL!CA.TMO!CA.IVP,C.ASTS(R5)
  1424										; FLUSH CONDITIONS OF LAST CARD
  1425
  1426
  1427	005220'	112765	000005	000061	$CRGO:	MOVB	#CRHNG,C.HUNG(R5)	; SET THE HUNG TIMER
  1428	005226'	012775	000101	000002		MOV	#INTENB!READ,@C.CSR(R5)	; GOOSE IT
  1429	005234'					RETURN
  1430
  1431	005236'	005075	000002		$CRSTP:	CLR	@C.CSR(R5)		; STOP THE INTERRUPTS
  1432	005242'	105065	000061			CLRB	C.HUNG(R5)		; AND FLUSH THE HUNG TIMER
  1433	005246'	105065	000121			CLRB	C.STRT(R5)		; FLUSH ANY PENDING READS
  1434	005252'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 29
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1436					;+
  1437					; Interrupt service routine
  1438					;
  1439					;	R5	Database address
  1440					; 
  1441					; NURD msg format:  <0><msg flags><seq><data flags><seg cnt><...segs...>
  1442					; 
  1443					; Segment format:   <cnt><...cnt data items> or <200!cnt><data item>
  1444					; EOR segment:      <0>
  1445					;-
  1446	005254'				$CRINT::
  1447	005254'	105065	000061			CLRB	C.HUNG(R5)		; Make sure hung timer is off
  1448	005260'					SMAP$S
  1449	005264'					PUSH$S	<R0,R1,R2,R3>
  1450	005274'	016503	000002			MOV	C.CSR(R5),R3		; R3/CSR ADR
  1451	005300'	012365	000056			MOV	(R3)+,C.RST(R5)		; READ THE STATUS
  1452	005304'	003411				BLE	25$
  1453	005306'	032765	000200	000056		BIT	#COLDN,C.RST(R5)	; CHECK COLUMN DONE
  1454	005314'	001002				BNE	20$
  1455	005316'					CALLR	CRDEND			; MUST BE CARD DONE
  1456
  1457					; COLUMN DONE - READ DATA
  1458	005322'	105365	000060		20$:	DECB	C.COLC(R5)		; COUNT THE COLUMN
  1459	005326'	001002				BNE	30$
  1460	005330'				25$:	CALLR	INTERR			; READING BEYOND DEVICE WIDTH
  1461
  1462	005334'	012300			30$:	MOV	(R3)+,R0		; R0/IMAGE DATA
  1463	005336'	105765	000177			TSTB	CR.EOF+F.FCV(R5)	; CHECK EOF?
  1464	005342'	001421				BEQ	50$			; NOT INTERESTED
  1465	005344'	032765	000040	000102		BIT	#CA.EOF,C.ASTS(R5)	; EOF ALREADY ENCOUNTERED ?
  1466	005352'	001402				BEQ	40$			; NO
  1467	005354'	000167	000522			JMP	190$			; YES, SKIP JUNK
  1468
  1469	005360'	022700	007417		40$:	CMP	#EOFASC,R0		; CHECK FOR EOF PUNCH
  1470	005364'	001010				BNE	50$
  1471	005366'	005765	000064			TST	C.PUBP+2(R5)		; CHECK COLUMN 1
  1472	005372'	001005				BNE	50$
  1473	005374'	052765	000042	000102		BIS	#CA.EOF!CA.PAU,C.ASTS(R5) ; SET EOF AND PAUSE
  1474	005402'	005046				CLR	-(SP)			; PUT A FAKE DATA MODE INDICATOR ON
  1475	005404'	000465				BR	100$			;   STACK FOR LATER CODE TO CLEAN OFF
  1476
  1477	005406'	116504	000174		50$:	MOVB	CR.DAT+F.FCV(R5),R4	; CHECK DATA MODE
  1478	005412'	162704	000002			SUB	#DM.CLI,R4		; CREATE 3 STATE FLAG FOR LATER USE
  1479	005416'	010446				MOV	R4,-(SP)		; TOP OF STACK = DATA MODE FLAG:
  1480										; 	< 0 => ASCII MODE
  1481										; 	= 0 => COLUMN IMAGE MODE
  1482										; 	> 0 => AUGMENTED COLUMN IMAGE MODE
  1483	005420'	001457				BEQ	100$			; IMAGE
  1484	005422'	012301				MOV	(R3)+,R1		; R1/CODED DATA
  1485	005424'	010102				MOV	R1,R2
  1486	005426'	042702	177770			BIC	#^C7,R2
  1487	005432'	006302				ASL	R2			; MAKE WORD OFFSET
  1488	005434'	042701	000007			BIC	#7,R1
  1489	005440'	006201				ASR	R1
  1490	005442'	006201				ASR	R1			; R1/Z<12,11,0,9,8>*2, R2/<Z1-Z7 CODE>*2
  1491	005444'	005716				TST	(SP)			; CHECK DATA MODE
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 29-1
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1492	005446'	002024				BGE	80$			; AUGMENTED COLUMN IMAGE MODE
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 30
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1494					; ASCII MODE
  1495	005450'	006000				ROR	R0			; CHECK FOR MULTIPUNCH
  1496	005452'	000241				CLC
  1497	005454'	106000				RORB	R0			; LO R0/0+Z1-Z7
  1498	005456'	146200	007210'			BICB	ZTAB(R2),R0		; FLUSH SINGLE ZONE
  1499	005462'	001003				BNE	60$			; NONZERO => MULTIPUNCH
  1500	005464'	016101	007110'			MOV	ZONTAB(R1),R1		; GET TABLET
  1501	005470'	001006				BNE	70$			; ZONES OK
  1502										; ILLEGAL ZONE COMBINATION
  1503	005472'	012700	000334		60$:	MOV	#ERRCHR,R0		; ILLEGAL CHARACTER
  1504	005476'	052765	002000	000102		BIS	#CA.IVP,C.ASTS(R5)	; SET INVALID PUNCH FLAG
  1505	005504'	000425				BR	100$
  1506
  1507	005506'	006202			70$:	ASR	R2			; GET BYTE OFFSET BACK
  1508	005510'	060201				ADD	R2,R1			; R1/TABLET ENTRY
  1509	005512'	005000				CLR	R0			; MAKE FULL WORD DATA ITEM
  1510	005514'	151100				BISB	(R1),R0			; R0/TRANSLATED CHARACTER
  1511	005516'	000420				BR	100$
  1512
  1513					; AUGMENTED COLUMN IMAGE
  1514	005520'	010004			80$:	MOV	R0,R4			; CHECK ERRORS
  1515	005522'	006004				ROR	R4
  1516	005524'	000241				CLC
  1517	005526'	106004				RORB	R4			; LO R4/0+Z1-Z7
  1518	005530'	146204	007210'			BICB	ZTAB(R2),R4		; FLUSH ZONE BIT
  1519	005534'	001405				BEQ	90$			; ZERO => SINGLE PUNCH
  1520	005536'	052700	100000			BIS	#100000,R0		; MULTIPUNCH
  1521	005542'	052765	002000	000102		BIS	#CA.IVP,C.ASTS(R5)	; SET INVALID PUNCH FLAG
  1522	005550'	000300			90$:	SWAB	R0			; STUFF Z1-Z7 CODE IN UPPER HALF
  1523	005552'	156200	007211'			BISB	ZTAB+1(R2),R0
  1524	005556'	000300				SWAB	R0
  1525
  1526					; WE NOW HAVE THE DECODED CHARACTER
  1527					; COLUMN IMAGE
  1528	005560'				100$:	MAP$	C.PUBP(R5)		; MAP THE BUFFER
  1529	005566'	016503	000064			MOV	C.PUBP+2(R5),R3		; R3/CURRENT BUFFER PTR
  1530	005572'	001412				BEQ	110$			; 1ST COLUMN
  1531	005574'	016502	000066			MOV	C.SGHD(R5),R2		; GET SEGMENT HEAD ADR
  1532	005600'	001451				BEQ	120$			; NONE IN PROGRESS
  1533	005602'	105712				TSTB	(R2)
  1534	005604'	100066				BPL	130$			; CHECK FOR COMPRESSION
  1535
  1536					; COMPRESSED SEGMENT
  1537	005606'	020065	000070			CMP	R0,C.LDAT(R5)		; CHECK CONTINUITY
  1538	005612'	001044				BNE	120$			; END OF SEQUENCE
  1539	005614'	105212				INCB	(R2)			; COUNT ANOTHER - ASSUME 127 COL LIMIT HERE
  1540	005616'	000530				BR	180$
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 31
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1542					; NEW CARD, SO SET UP THE BUFFER
  1543	005620'	016503	000076		110$:	MOV	C.DDMQ(R5),R3		; 1ST COLUMN - SET UP PTRS
  1544	005624'	016365	000020	000064		MOV	C.BUF+2(R3),C.PUBP+2(R5); BUFFER ADDRESS
  1545	005632'	016365	000016	000062		MOV	C.BUF(R3),C.PUBP(R5)	; BUFFER  VIRTUAL  ADDRESS
  1546	005640'					MAP$	C.BUF(R3)
  1547	005646'	016503	000064			MOV	C.PUBP+2(R5),R3		; GET R3/BUFFER ADDRESS
  1548	005652'	010365	000074			MOV	R3,C.NRDA(R5)		; SAVE BEG OF NURD MSG
  1549	005656'	116565	000201	000060		MOVB	CR.DWD+F.FCV(R5),C.COLC(R5) ; SET COLUMN COUNTER
  1550
  1551					; FORMAT A NURD MESSAGE
  1552	005664'	112723	000000			MOVB	#NM.DAT,(R3)+		; MSGTYPE = DATA
  1553	005670'	105023				CLRB	(R3)+			; NO MSG FLAGS
  1554	005672'	105265	000104			INCB	C.CDCT(R5)		; COUNT THE CARD
  1555	005676'	116523	000104			MOVB	C.CDCT(R5),(R3)+	; INSERT SEQ NO. = LO CARD COUNT
  1556	005702'	105023				CLRB	(R3)+			; INIT DATA FLAGS
  1557	005704'	105023				CLRB	(R3)+			; INIT SEGMENT COUNT
  1558	005706'	005065	000066			CLR	C.SGHD(R5)		; FLUSH C.SGHD
  1559	005712'	005065	000070			CLR	C.LDAT(R5)		; FLUSH C.LDAT
  1560	005716'	012765	000005	000072		MOV	#N.DDAT,C.PUBS(R5)	; SET BUFFER COUNT TO MSG OVERHEAD
  1561
  1562	005724'	010302			120$:	MOV	R3,R2			; BEGIN NEW SEGMENT
  1563	005726'	105023				CLRB	(R3)+			; INIT NEW SEGMENT HEADER
  1564	005730'	005265	000072			INC	C.PUBS(R5)		; COUNT SEG HEAD IN BUFFER
  1565	005734'	010265	000066			MOV	R2,C.SGHD(R5)		; SAVE NEW HDR ADR
  1566	005740'	016504	000074			MOV	C.NRDA(R5),R4		; GET MSG BEG
  1567	005744'	105264	000004			INCB	N.DSGC(R4)		; INCREMENT TOTAL SEGMENT COUNT
  1568	005750'	032765	000040	000102		BIT	#CA.EOF,C.ASTS(R5)	; DID WE GET EOF CHARACTER ?
  1569	005756'	001432				BEQ	160$			; NO
  1570	005760'	000445				BR	170$			; YES, LEAVE
  1571
  1572	005762'	020065	000070		130$:	CMP	R0,C.LDAT(R5)		; SEE IF NEW COMPR SEQ
  1573	005766'	001026				BNE	160$			; NO - JUST BUFFER THE COL
  1574	005770'	005716				TST	(SP)			; REMOVE DATA ITEM FROM BUFFER
  1575	005772'	002403				BLT	140$
  1576	005774'	005303				DEC	R3			; WORD
  1577	005776'	005365	000072			DEC	C.PUBS(R5)		; REM FROM BUFFER
  1578	006002'	005303			140$:	DEC	R3			; BYTE
  1579	006004'	005365	000072			DEC	C.PUBS(R5)		; REM FROM BUFFER
  1580	006010'	105312				DECB	(R2)			; REMOVE PREVIOUS DATA ITEM FROM LAST SEG
  1581	006012'	001411				BEQ	150$			; REMOVED WHOLE SEGMENT
  1582	006014'	010302				MOV	R3,R2			; BEGIN NEW SEGMENT
  1583	006016'	010265	000066			MOV	R2,C.SGHD(R5)		; SAVE NEW HDR ADR
  1584	006022'	016504	000074			MOV	C.NRDA(R5),R4
  1585	006026'	105264	000004			INCB	N.DSGC(R4)		; INCREMENT TOTAL SEGMENT COUNT
  1586	006032'	005265	000072			INC	C.PUBS(R5)		; COUNT NEW SEG HEAD IN BUFFER
  1587
  1588	006036'	010203			150$:	MOV	R2,R3			; SET BUFFER PTR BACK TO SEG HEAD
  1589	006040'	112723	000201			MOVB	#ND.CMP+1,(R3)+		; NEW SEGMENT - INIT AS A COMPRESSED SEG
  1590	006044'	010065	000070		160$:	MOV	R0,C.LDAT(R5)		; SAVE NEW DATA ITEM IN C.LDAT
  1591	006050'	110023				MOVB	R0,(R3)+		; INSERT NEW DATA ITEM(LO) IN BUFFER
  1592	006052'	005265	000072			INC	C.PUBS(R5)		; COUNT IT IN BUFFER
  1593	006056'	105212				INCB	(R2)			; COUNT IT IN SEGMENT
  1594	006060'	005716				TST	(SP)			; CHECK DATA MODE => DATA LENGTH
  1595	006062'	002404				BLT	170$			; ASCII - 1 BYTE
  1596	006064'	000300				SWAB	R0			; OTHERWISE - 2 BYTES
  1597	006066'	110023				MOVB	R0,(R3)+		; INSERT NEW DATA ITEM(HI) IN BUFFER
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 31-1
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1598	006070'	005265	000072			INC	C.PUBS(R5)		; COUNT IT IN BUFFER
  1599										; BUT NOT IN SEGMENT
  1600	006074'	010365	000064		170$:	MOV	R3,C.PUBP+2(R5)		; SAVE UPDATED BUFFER PTR
  1601	006100'	005726			180$:	TST	(SP)+			; FLUSH DATA MODE FLAG
  1602	006102'	032765	040000	000056	190$:	BIT	#CARDN,C.RST(R5)
  1603	006110'	001057				BNE	CRDEND			; CARD FINISHED ALSO
  1604	006112'	112765	000005	000061		MOVB	#CRHNG,C.HUNG(R5)	; EXIT - SET TIMER
  1605	006120'					POP$S	<R3,R2,R1,R0>
  1606	006130'					MAP$S
  1607	006134'					RETURN
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 32
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1609	006136'	016501	000056		INTERR:	MOV	C.RST(R5),R1		; ERROR-INTERRUPT ENTRY POINT
  1610	006142'	012700	000002			MOV	#CA.PAU,R0		; DETECT INDIVIDUAL ERRORS
  1611	006146'	032701	020000			BIT	#HOCHK,R1
  1612	006152'	001402				BEQ	11$
  1613	006154'	052700	000100			BIS	#CA.HOP,R0		; HOPPER CHECK
  1614
  1615	006160'	032701	010000		11$:	BIT	#MOCHK,R1
  1616	006164'	001402				BEQ	12$
  1617	006166'	052700	000200			BIS	#CA.MOT,R0		; MOTION CHECK
  1618
  1619	006172'	032701	004000		12$:	BIT	#TIMERR,R1
  1620	006176'	001402				BEQ	13$
  1621	006200'	052700	000400			BIS	#CA.TER,R0		; TIMING ERROR
  1622
  1623	006204'	032701	000400		13$:	BIT	#RDROFL,R1
  1624	006210'	001402				BEQ	14$
  1625	006212'	052700	001000			BIS	#CA.OFL,R0		; READER OFFLINE
  1626
  1627	006216'	050065	000102		14$:	BIS	R0,C.ASTS(R5)		; MARK ERROR => PAUSE ALSO
  1628	006222'	005765	000064			TST	C.PUBP+2(R5)		; CHECK FOR EXISTING BUFFER
  1629	006226'	001410				BEQ	CRDEND			; NO CARD TO MARK ERRORS
  1630	006230'					MAP$	C.PUBP(R5)		; MAP TO THE BUFFER
  1631	006236'	016501	000074			MOV	C.NRDA(R5),R1		;  AND GET PTR TO PLACE IN BUFFER
  1632	006242'	152761	000002	000003		BISB	#ND.IER,N.DFLG(R1)	; SET ERROR STATUS FLAG IN NURD MSG
  1633					;	CALLR	CRDEND				; FALL INTO CRDEND
  1634
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 33
CR.M11    30-DEC-82 02:07		INTERRUPT SERVICE

  1636					; CARD DONE
  1637	006250'				CRDEND:
  1638	006250'	005075	000002			CLR	@C.CSR(R5)		; STOP THE READER
  1639	006254'					POP$S	<R3,R2,R1,R0>		; RESTORE INTERRUPT LEVEL REGISTERS
  1640	006264'					MAP$S
  1641	006270'	032765	010000	000102		bit	#ca.syn,c.asts(r5)	; synch requested in progress
  1642	006276'	001401				beq	3$			; no so do synch request
  1643	006300'					return
  1644	006302'	052765	010000	000102	3$:	bis	#ca.syn,c.asts(r5)	; set requesting synch
  1645	006310'	010504				MOV	R5,R4			; Calculate synch block
  1646	006312'	062704	000050			ADD	#C.SYN,R4		;   address
  1647	006316'	012764	006330'	000004		MOV	#5$,S.DSP(R4)		; Set resumption address
  1648	006324'					CALLR	$SYNCH			; Go
  1649
  1650					; Here at synch level
  1651	006330'				5$:
  1652	006330'	042765	010000	000102		bic	#ca.syn,c.asts(r5)	; clear synch request flag
  1653	006336'					MAP$	C.PUBP(R5)
  1654	006344'	016503	000064			MOV	C.PUBP+2(R5),R3		; GET THE BUFFER PTR
  1655	006350'	001464				BEQ	20$			; NULL CARD
  1656	006352'	105013				CLRB	(R3)			; INSERT EOR = NULL SGMENT
  1657	006354'	016501	000072			MOV	C.PUBS(R5),R1		; GET THE BUFFER CNT
  1658	006360'	005201				INC	R1			; COUNT THE EOR IN THE BUFFER
  1659	006362'	016504	000074			MOV	C.NRDA(R5),R4		; GET THE MSG PTR
  1660	006366'	105264	000004			INCB	N.DSGC(R4)		; COUNT THE EOR IN MSG SEGMENT CNT
  1661	006372'					DEQ$	C.DDMQ
  1662	006410'	010164	000022			MOV	R1,C.CNT(R4)		; STUFF FINAL BUFFER CNT IN CCB
  1663	006414'	032765	000040	000102		BIT	#CA.EOF,C.ASTS(R5)	; CHECK FOR EOF
  1664	006422'	001405				BEQ	10$
  1665	006424'	016501	000074			MOV	C.NRDA(R5),R1		; INSERT EOF IN MSG
  1666	006430'	152761	000004	000003		BISB	#ND.EOF,N.DFLG(R1)
  1667
  1668	006436'	032765	000020	000102	10$:	BIT	#CA.ABE,C.ASTS(R5)	; CHECK ABORTS
  1669	006444'	001417				BEQ	14$
  1670	006446'					MAP$	C.BUF(R4)		; ABORTING
  1671	006454'	016400	000020			MOV	C.BUF+2(R4),R0
  1672	006460'	132760	000004	000003		BITB	#ND.EOF,N.DFLG(R0)	; CHECK THIS CARD FOR EOF
  1673	006466'	001003				BNE	12$			; YES!
  1674	006470'	004767	000000G			CALL	$RDBRT			; No, return the buffer
  1675	006474'	000412				BR	20$
  1676
  1677	006476'	042765	000020	000102	12$:	BIC	#CA.ABE,C.ASTS(R5)	; ABORT CONDITION FULFILLED
  1678	006504'	005265	000106		14$:	INC	C.IOCN(R5)		; COUNT THE BUFFER
  1679	006510'	112764	000002	000012		MOVB	#FC.XME,C.FNC(R4)
  1680	006516'	004767	000000G			CALL	$SCHED
  1681	006522'	032765	000046	000102	20$:	BIT	#CA.PAU!CA.ADN!CA.EOF,C.ASTS(R5) ; DO WE NEED TO PAUSE ?
  1682	006530'	001411				BEQ	30$				 ; NO
  1683	006532'	105765	000117			TSTB	C.RATT(R5)		; PAUSING, ATTN ALREADY PENDING ?
  1684	006536'	001005				BNE	25$			; YES, DON'T OVERWRITE CODE
  1685	006540'	112765	000001	000117		MOVB	#N.ASTC,C.RATT(R5)	; SET THE CODE
  1686	006546'	004767	175516			CALL	SN$ATT			; INSTIGATE THE ATTN MESSAGE
  1687	006552'				25$:	RETURN				; GET ON OUT
  1688
  1689	006554'				30$:	CALLR	$CRSTR			; START NEXT CARD
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 34
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1691					.sbttl	Hollerith - ASCII Conversion Tables
  1692
  1693					; CONVERSION IS ZONE ORIENTED
  1694					; ZONE LABELS ARE CONSTRUCTED BY APPENDING TO "ZON"
  1695					; THE OCTAL CODE FOR CARD ZONES(ROWS)
  1696					;	ZONE 12	=	20
  1697					;	ZONE 11	=	10
  1698					;	ZONE  0	=	 4
  1699					;	ZONE  9	=	 2
  1700					;	ZONE  8	=	 1
  1701
  1702	006560'				ZON0:			;NO ZONE PUNCHES
  1703	006560'	   040				.byte	40	;NO ROW PUNCHES
  1704	006561'	   061				.byte	'1	;ROW 1
  1705	006562'	   062				.byte	'2	;ROW 2
  1706	006563'	   063				.byte	'3	;ROW 3
  1707	006564'	   064				.byte	'4	;ROW 4
  1708	006565'	   065				.byte	'5	;ROW 5
  1709	006566'	   066				.byte	'6	;ROW 6
  1710	006567'	   067				.byte	'7	;ROW 7
  1711
  1712	006570'				ZON20:			;ZONE 12
  1713	006570'	   046				.byte	'&	;NO ROW PUNCHES
  1714	006571'	   101				.byte	'A	;ROW 1
  1715	006572'	   102				.byte	'B	;ROW 2
  1716	006573'	   103				.byte	'C	;ROW 3
  1717	006574'	   104				.byte	'D	;ROW 4
  1718	006575'	   105				.byte	'E	;ROW 5
  1719	006576'	   106				.byte	'F	;ROW 6
  1720	006577'	   107				.byte	'G	;ROW 7
  1721
  1722	006600'				ZON10:			;ZONE 11
  1723	006600'	   055				.byte	'-	;NO ROW PUNCHES
  1724	006601'	   112				.byte	'J	;ROW 1
  1725	006602'	   113				.byte	'K	;ROW 2
  1726	006603'	   114				.byte	'L	;ROW 3
  1727	006604'	   115				.byte	'M	;ROW 4
  1728	006605'	   116				.byte	'N	;ROW 5
  1729	006606'	   117				.byte	'O	;ROW 6
  1730	006607'	   120				.byte	'P	;ROW 7
  1731
  1732	006610'				ZON4:			;ZONE 0
  1733	006610'	   060				.byte	'0	;NO ROW PUNCHES
  1734	006611'	   057				.byte	'/	;ROW 1
  1735	006612'	   123				.byte	'S	;ROW 2
  1736	006613'	   124				.byte	'T	;ROW 3
  1737	006614'	   125				.byte	'U	;ROW 4
  1738	006615'	   126				.byte	'V	;ROW 5
  1739	006616'	   127				.byte	'W	;ROW 6
  1740	006617'	   130				.byte	'X	;ROW 7
  1741
  1742	006620'				ZON1:			;ZONE 8
  1743	006620'	   070				.byte	'8	;NO ROW PUNCHES
  1744	006621'	   140				.byte	140	;ROW 1
  1745	006622'	   072				.byte	':	;ROW 2
  1746	006623'	   043				.byte	'#	;ROW 3
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 34-1
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1747	006624'	   100				.byte	'@	;ROW 4
  1748	006625'	   047				.byte	''	;ROW 5
  1749	006626'	   075				.byte	'=	;ROW 6
  1750	006627'	   042				.byte	'"	;ROW 7
  1751
  1752	006630'				ZON2:			;ZONE 9
  1753	006630'	   071				.byte	'9	;NO ROW PUNCHES
  1754	006631'	   334				.byte	ERRCHR	;ROW 1
  1755	006632'	   026				.byte	SYN	;ROW 2
  1756	006633'	   334				.byte	ERRCHR	;ROW 3
  1757	006634'	   334				.byte	ERRCHR	;ROW 4
  1758	006635'	   334				.byte	ERRCHR	;ROW 5
  1759	006636'	   334				.byte	ERRCHR	;ROW 6
  1760	006637'	   004				.byte	EOT	;ROW 7
  1761
  1762	006640'				ZON30:			;ZONE 12-11
  1763	006640'	   174				.byte	174	;NO ROW PUNCHES
  1764	006641'	   112				.byte	'J	;ROW 1
  1765	006642'	   113				.byte	'K	;ROW 2
  1766	006643'	   114				.byte	'L	;ROW 3
  1767	006644'	   115				.byte	'M	;ROW 4
  1768	006645'	   116				.byte	'N	;ROW 5
  1769	006646'	   117				.byte	'O	;ROW 6
  1770	006647'	   120				.byte	'P	;ROW 7
  1771
  1772	006650'				ZON24:			;ZONE 12-0
  1773	006650'	   173				.byte	173	;NO ROW PUNCHES
  1774	006651'	   101				.byte	'A	;ROW 1
  1775	006652'	   102				.byte	'B	;ROW 2
  1776	006653'	   103				.byte	'C	;ROW 3
  1777	006654'	   104				.byte	'D	;ROW 4
  1778	006655'	   105				.byte	'E	;ROW 5
  1779	006656'	   106				.byte	'F	;ROW 6
  1780	006657'	   107				.byte	'G	;ROW 7
  1781
  1782	006660'				ZON21:			;ZONE 12-8
  1783	006660'	   110				.byte	'H	;NO ROW PUNCHES
  1784	006661'	   334				.byte	ERRCHR	;ROW 1
  1785	006662'	   133				.byte	'[	;ROW 2
  1786	006663'	   056				.byte	'.	;ROW 3
  1787	006664'	   074				.byte	'<	;ROW 4
  1788	006665'	   050				.byte	'(	;ROW 5
  1789	006666'	   053				.byte	'+	;ROW 6
  1790	006667'	   041				.byte	'!	;ROW 7
  1791
  1792	006670'				ZON22:			;ZONE 12-9
  1793	006670'	   111				.byte	'I	;NO ROW PUNCHES
  1794	006671'	   001				.byte	SOH	;ROW 1
  1795	006672'	   002				.byte	STX	;ROW 2
  1796	006673'	   003				.byte	ETX	;ROW 3
  1797	006674'	   334				.byte	ERRCHR	;ROW 4
  1798	006675'	   011				.byte	HT	;ROW 5
  1799	006676'	   334				.byte	ERRCHR	;ROW 6
  1800	006677'	   177				.byte	DEL	;ROW 7
  1801
  1802	006700'				ZON14:			;ZONE 11-0
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 34-2
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1803	006700'	   175				.byte	175	;NO ROW PUNCHES
  1804	006701'	   176				.byte	176	;ROW 1
  1805	006702'	   123				.byte	'S	;ROW 2
  1806	006703'	   124				.byte	'T	;ROW 3
  1807	006704'	   125				.byte	'U	;ROW 4
  1808	006705'	   126				.byte	'V	;ROW 5
  1809	006706'	   127				.byte	'W	;ROW 6
  1810	006707'	   130				.byte	'X	;ROW 7
  1811
  1812	006710'				ZON11:			;ZONE 11-8
  1813	006710'	   121				.byte	'Q	;NO ROW PUNCHES
  1814	006711'	   334				.byte	ERRCHR	;ROW 1
  1815	006712'	   135				.byte	']	;ROW 2
  1816	006713'	   044				.byte	'$	;ROW 3
  1817	006714'	   052				.byte	'*	;ROW 4
  1818	006715'	   051				.byte	')	;ROW 5
  1819	006716'	   073				.byte	';	;ROW 6
  1820	006717'	   136				.byte	'^	;ROW 7
  1821
  1822	006720'				ZON12:			;ZONE 11-9
  1823	006720'	   122				.byte	'R	;NO ROW PUNCHES
  1824	006721'	   021				.byte	DC1	;ROW 1
  1825	006722'	   022				.byte	DC2	;ROW 2
  1826	006723'	   023				.byte	DC3	;ROW 3
  1827	006724'	   334				.byte	ERRCHR	;ROW 4
  1828	006725'	   334				.byte	ERRCHR	;ROW 5
  1829	006726'	   010				.byte	BS	;ROW 6
  1830	006727'	   334				.byte	ERRCHR	;ROW 7
  1831
  1832	006730'				ZON5:			;ZONE 0-8
  1833	006730'	   131				.byte	'Y	;NO ROW PUNCHES
  1834	006731'	   334				.byte	ERRCHR	;ROW 1
  1835	006732'	   134				.byte	'\	;ROW 2
  1836	006733'	   054				.byte	',	;ROW 3
  1837	006734'	   045				.byte	'%	;ROW 4
  1838	006735'	   137				.byte	'_	;ROW 5
  1839	006736'	   076				.byte	'>	;ROW 6
  1840	006737'	   077				.byte	'?	;ROW 7
  1841	006740'				ZON6:			;ZONE 0-9
  1842	006740'	   132				.byte	'Z	;NO ROW PUNCHES
  1843	006741'	   334				.byte	ERRCHR	;ROW 1
  1844	006742'	   334				.byte	ERRCHR	;ROW 2
  1845	006743'	   334				.byte	ERRCHR	;ROW 3
  1846	006744'	   334				.byte	ERRCHR	;ROW 4
  1847	006745'	   012				.byte	LF	;ROW 5
  1848	006746'	   027				.byte	ETB	;ROW 6
  1849	006747'	   033				.byte	ESC	;ROW 7
  1850
  1851	006750'				ZON3:			;ZONE 9-8
  1852	006750'	   334				.byte	ERRCHR	;NO ROW PUNCHES
  1853	006751'	   334				.byte	ERRCHR	;ROW 1
  1854	006752'	   334				.byte	ERRCHR	;ROW 2
  1855	006753'	   334				.byte	ERRCHR	;ROW 3
  1856	006754'	   024				.byte	DC4	;ROW 4
  1857	006755'	   025				.byte	NAK	;ROW 5
  1858	006756'	   334				.byte	ERRCHR	;ROW 6
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 34-3
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1859	006757'	   032				.byte	SUB	;ROW 7
  1860
  1861	006760'				ZON23:			;ZONE 12-9-8
  1862	006760'	   334				.byte	ERRCHR	;NO ROW PUNCHES
  1863	006761'	   334				.byte	ERRCHR	;ROW 1
  1864	006762'	   334				.byte	ERRCHR	;ROW 2
  1865	006763'	   013				.byte	VT	;ROW 3
  1866	006764'	   014				.byte	FF	;ROW 4
  1867	006765'	   015				.byte	CR	;ROW 5
  1868	006766'	   016				.byte	SO	;ROW 6
  1869	006767'	   017				.byte	SI	;ROW 7
  1870
  1871	006770'				ZON13:			;ZONE 11-9-8
  1872	006770'	   030				.byte	CAN	;NO ROW PUNCHES
  1873	006771'	   031				.byte	EM	;ROW 1
  1874	006772'	   334				.byte	ERRCHR	;ROW 2
  1875	006773'	   334				.byte	ERRCHR	;ROW 3
  1876	006774'	   034				.byte	FS	;ROW 4
  1877	006775'	   035				.byte	GS	;ROW 5
  1878	006776'	   036				.byte	RS	;ROW 6
  1879	006777'	   037				.byte	US	;ROW 7
  1880
  1881	007000'				ZON7:			;ZONE 0-9-8
  1882	007000'	   334				.byte	ERRCHR	;NO ROW PUNCHES
  1883	007001'	   334				.byte	ERRCHR	;ROW 1
  1884	007002'	   334				.byte	ERRCHR	;ROW 2
  1885	007003'	   334				.byte	ERRCHR	;ROW 3
  1886	007004'	   334				.byte	ERRCHR	;ROW 4
  1887	007005'	   005				.byte	ENQ	;ROW 5
  1888	007006'	   006				.byte	ACK	;ROW 6
  1889	007007'	   007				.byte	BEL	;ROW 7
  1890
  1891	007010'				ZON25:			;ZONE 12-0-8
  1892	007010'	   110				.byte	'H	;NO ROW PUNCHES
  1893	007011'	   334				.byte	ERRCHR	;ROW 1
  1894	007012'	   334				.byte	ERRCHR	;ROW 2
  1895	007013'	   334				.byte	ERRCHR	;ROW 3
  1896	007014'	   334				.byte	ERRCHR	;ROW 4
  1897	007015'	   334				.byte	ERRCHR	;ROW 5
  1898	007016'	   334				.byte	ERRCHR	;ROW 6
  1899	007017'	   334				.byte	ERRCHR	;ROW 7
  1900
  1901	007020'				ZON26:			;ZONE 12-0-9
  1902	007020'	   111				.byte	'I	;NO ROW PUNCHES
  1903	007021'	   334				.byte	ERRCHR	;ROW 1
  1904	007022'	   334				.byte	ERRCHR	;ROW 2
  1905	007023'	   334				.byte	ERRCHR	;ROW 3
  1906	007024'	   334				.byte	ERRCHR	;ROW 4
  1907	007025'	   334				.byte	ERRCHR	;ROW 5
  1908	007026'	   334				.byte	ERRCHR	;ROW 6
  1909	007027'	   334				.byte	ERRCHR	;ROW 7
  1910
  1911	007030'				ZON31:			;ZONE 12-11-8
  1912	007030'	   121				.byte	'Q	;NO ROW PUNCHES
  1913	007031'	   334				.byte	ERRCHR	;ROW 1
  1914	007032'	   334				.byte	ERRCHR	;ROW 2
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 34-4
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1915	007033'	   334				.byte	ERRCHR	;ROW 3
  1916	007034'	   334				.byte	ERRCHR	;ROW 4
  1917	007035'	   334				.byte	ERRCHR	;ROW 5
  1918	007036'	   334				.byte	ERRCHR	;ROW 6
  1919	007037'	   334				.byte	ERRCHR	;ROW 7
  1920
  1921	007040'				ZON32:			;ZONE 12-11-9
  1922	007040'	   122				.byte	'R	;NO ROW PUNCHES
  1923	007041'	   334				.byte	ERRCHR	;ROW 1
  1924	007042'	   334				.byte	ERRCHR	;ROW 2
  1925	007043'	   334				.byte	ERRCHR	;ROW 3
  1926	007044'	   334				.byte	ERRCHR	;ROW 4
  1927	007045'	   334				.byte	ERRCHR	;ROW 5
  1928	007046'	   334				.byte	ERRCHR	;ROW 6
  1929	007047'	   334				.byte	ERRCHR	;ROW 7
  1930
  1931	007050'				ZON15:			;ZONE 11-0-8
  1932	007050'	   131				.byte	'Y	;NO ROW PUNCHES
  1933	007051'	   334				.byte	ERRCHR	;ROW 1
  1934	007052'	   334				.byte	ERRCHR	;ROW 2
  1935	007053'	   334				.byte	ERRCHR	;ROW 3
  1936	007054'	   334				.byte	ERRCHR	;ROW 4
  1937	007055'	   334				.byte	ERRCHR	;ROW 5
  1938	007056'	   334				.byte	ERRCHR	;ROW 6
  1939	007057'	   334				.byte	ERRCHR	;ROW 7
  1940
  1941	007060'				ZON16:			;ZONE 11-0-9
  1942	007060'	   132				.byte	'Z	;NO ROW PUNCHES
  1943	007061'	   334				.byte	ERRCHR	;ROW 1
  1944	007062'	   334				.byte	ERRCHR	;ROW 2
  1945	007063'	   334				.byte	ERRCHR	;ROW 3
  1946	007064'	   334				.byte	ERRCHR	;ROW 4
  1947	007065'	   334				.byte	ERRCHR	;ROW 5
  1948	007066'	   334				.byte	ERRCHR	;ROW 6
  1949	007067'	   334				.byte	ERRCHR	;ROW 7
  1950
  1951	007070'				ZON33:			;ZONE 12-11-9-8
  1952	007070'	   334				.byte	ERRCHR	;NO ROW PUNCHES
  1953	007071'	   020				.byte	DLE	;ROW 1
  1954	007072'	   334				.byte	ERRCHR	;ROW 2
  1955	007073'	   334				.byte	ERRCHR	;ROW 3
  1956	007074'	   334				.byte	ERRCHR	;ROW 4
  1957	007075'	   334				.byte	ERRCHR	;ROW 5
  1958	007076'	   334				.byte	ERRCHR	;ROW 6
  1959	007077'	   334				.byte	ERRCHR	;ROW 7
  1960
  1961	007100'				ZON27:			;ZONE 12-0-9-8
  1962	007100'	   334				.byte	ERRCHR	;NO ROW PUNCHES
  1963	007101'	   000				.byte	NUL	;ROW 1
  1964	007102'	   334				.byte	ERRCHR	;ROW 2
  1965	007103'	   334				.byte	ERRCHR	;ROW 3
  1966	007104'	   334				.byte	ERRCHR	;ROW 4
  1967	007105'	   334				.byte	ERRCHR	;ROW 5
  1968	007106'	   334				.byte	ERRCHR	;ROW 6
  1969	007107'	   334				.byte	ERRCHR	;ROW 7
  1970
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 35
CR.M11    30-DEC-82 02:07		HOLLERITH - ASCII CONVERSION TABLES

  1972					; ZONE INDEX TABLE
  1973						.even
  1974	007110'				ZONTAB:
  1975		000000				$$=0
  1976		000040				.rept 32.
  1977						.irp	Z,<$$>
  1978						.if df,	ZON'Z
  1979							.word	ZON'Z
  1980						.iff
  1981							.word	0
  1982						.endc
  1983						.endm
  1984						$$=$$+1
  1985						.endr
  1986
  1987
  1988
  1989					; ZTAB IS INDEXED BY Z1-Z7 CODE FOR PUNCH BIT.
  1990					;   LO BYTE IS ZONE PUNCH MASK,  HI BYTE IS ZONE CODE SHIFTED FOR AUG COL
  1991	007210'	   000	   000		ZTAB:	.byte	0,0			; NO PUNCHES
  1992	007212'	   100	   020			.byte	100,1*20		; ZONE 1
  1993	007214'	   040	   040			.byte	40,2*20			; ZONE 2
  1994	007216'	   020	   060			.byte	20,3*20			; ZONE 3
  1995	007220'	   010	   100			.byte	10,4*20			; ZONE 4
  1996	007222'	   004	   120			.byte	4,5*20			; ZONE 5
  1997	007224'	   002	   140			.byte	2,6*20			; ZONE 6
  1998	007226'	   001	   160			.byte	1,7*20			; ZONE 7
  1999						.even
  2000
  2001		000001				.end
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

ACK   = 000006        	 1888
BEL   = 000007        	 1889
BF$SDB  003410R    003	  508*	 1043#	 1071*	 1172*	 1198*	 1270*
BS    = 000010        	 1829
BUSY  = 001000        	 1371#
CAN   = 000030        	 1872
CARDN = 040000        	 1378#	 1602
CA.ABE= 000020        	  148#	  606	  608	  617	  670	 1668	 1677
CA.ABO= 000010        	  147#	  452	  606	  608	  624	  670
CA.ADN= 000004        	  146#	  537	  599	  652	  664	  670	 1138	 1208	 1681
CA.CLO= 000001 G      	  144#	  257	  289	  314	  419
CA.EOF= 000040        	  149#	  666	  670	 1401	 1465	 1473	 1568	 1663	 1681
CA.ERR= 000700        	  153#	  357	  363	  670	 1423
CA.HOP= 000100        	  150#	  153	 1220	 1227	 1613
CA.IVP= 002000        	  155#	 1242	 1423	 1504	 1521
CA.MOT= 000200        	  151#	  153	 1208	 1235	 1617
CA.OFL= 001000        	  154#	  357	  363	 1212	 1423	 1625
CA.PAU= 000002        	  145#	  260	  652	  654	  664	  670	 1216	 1401	 1473	 1610	 1681
CA.SYN= 010000        	  157#	 1641	 1644	 1652
CA.TER= 000400        	  152#	  153	 1208	 1621
CA.TMO= 004000        	  156#	  373	  664	  670	 1231	 1423
CA.XOF= 100000        	  158#
CCFETL= 000011 G      	  199#
CDFETL= 000002 G      	  204#
CD.CWD= 000202        	   67#
CE.ABO= 177770        	   68#
CE.BUF= 177600        	   68#
CE.DCR= 177570        	   68#
CE.DEV= 177532        	   68#
CE.DIS= 177520        	   68#
CE.ERR= 177760        	   68#
CE.HFE= 177560        	   68#
CE.MOP= 177750        	   68#
CE.MTL= 177550        	   68#
CE.NTE= 177720        	   68#
CE.ROV= 177540        	   68#
CE.RTE= 177730        	   68#
CE.SRC= 177740        	   68#
CE.TMO= 177710        	   68#
CE.UDR= 177510        	   68#
CH.64 = 000001        	   67#
CH.96 = 000002        	   67#
CLOCK   000370R    003	  113	  345#
COLDN = 000200        	 1369#	 1453
CR    = 000015        	 1867
CRB1  = 000002        	 1383#	 1389
CRB2  = 000004        	 1389#
CRCTL   000024R    002	   89	  100#
CRCWDS= 000131 G      	  241#
CRDATS= 000131 G      	  225#
CRDEND  006250R    003	 1455	 1603	 1629	 1637#
CRDONE  000566R    003	   91	  394#
CRDSP   000622R    003	   92	  419#
CREOFS= 000101 G      	  231#
CRHNG = 000005        	 1356#	 1427	 1604
CRMCB   000000R    002	   76	   84#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-1
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

CRS   = 000000        	 1362#	 1383
CRTIM   000036R    002	   90	  110#
CR.CWD  000202 G      	  240#
CR.DAT  000173 G      	  224#	 1477
CR.DWD  000200 G      	  235#	 1549
CR.EOF  000176 G      	  230#	 1463
CS.SUC= 000001        	   68#
CTLABC  001634R    003	  547	  606#
CTLABE  001662R    003	  545	  617#
CTLABT  001672R    003	  546	  623#
CTLCPB  001736R    003	  553	  636#
CTLDMP  001744R    003	  549	  642#
CTLDSP  001370R    003	  503*	  544#	  554	  570*
CTLOTR= 000012        	  499	  554#	  565
CTLPAU  001766R    003	  550	  652#
CTLRSM  002014R    003	  551	  664#
CTLSTS  002062R    003	  548	  681#
CTLSYN  001414R    003	  471*	  560#
CTLXIT  000352R    003	  292	  337#
C.ASTS  000102        	  143#	  257	  260*	  289*	  314*	  357	  363*	  373*	  419	  452	  537*	  599*	  606
			  608*	  617*	  624*	  652	  654*	  664	  666	  670*	 1138*	 1207	 1401	 1423*	 1465
			 1473*	 1504*	 1521*	 1568	 1627*	 1641	 1644*	 1652*	 1663	 1668	 1677*	 1681
C.BUF   000016        	   68#	  421	  422	  516	  517	  524	  525	  775	  776	 1074	 1075	 1150	 1151
			 1174	 1200	 1257	 1272	 1544	 1545	 1546	 1670	 1671
C.CAPN  000127        	  175#	  730*	  734*	  742	  744*	  748	  771
C.CAPP  000120        	  169#	  275*	  382	  595	  636*	  644	 1305*
C.CDCT  000104        	  159#	  277*	  668*	 1203	 1253	 1554*	 1555
C.CFET  000156        	  189#	  199	  280	  734	 1002	 1280
C.CHN   000002        	   68#
C.CMSQ  000112        	  166#	  318	  494*	  515	  536
C.CNT   000022        	   68#	  495	  531*	  587*	  780*	 1047*	 1076	 1152	 1177*	 1258*	 1278*	 1291*	 1300
			 1415*	 1662*
C.COLC  000060        	  135#	  271*	 1422*	 1458*	 1549*
C.CSR   000002        	  126#	  259*	  359	 1428*	 1431*	 1450	 1638*
C.DDMQ  000076        	  142#	  625	 1093	 1406	 1419*	 1543	 1661
C.DFET  000170        	  201#	  204	  282	  744	 1006
C.DFSP  000046        	  131#	  464*	 1142	 1326	 1334*
C.DLCQ  000122        	  173#	  458*	  459	  475	  626	 1097	 1135	 1145	 1161
C.DMAD  000132        	  178#	  263*	  264*	 1110*	 1111*	 1127	 1129	 1130*	 1133	 1150*	 1151*	 1159*
C.DMBS  000136        	  179#	  265*	 1112*	 1125*	 1152*	 1160*
C.DMSQ  000140        	  180#	  561*	  580	  714*
C.DTXL  000044        	  129#	  262*	  354	  461	  628	 1108*	 1319*	 1321	 1325*	 1336	 1342*
C.DTXT  000004        	  128#	 1312*	 1313	 1338
C.FNC   000012        	   68#	  319*	  338*	  443*	  455*	  521*	  539*	 1050*	 1099*	 1164*	 1416*	 1679*
C.HUNG  000061        	  136#	  272*	  369	  371*	 1427*	 1432*	 1447*	 1604*
C.IOCN  000106        	  162#	  269*	  327	  394*	  396*	  532*	  589*	  782*	 1179*	 1259*	 1303*	 1403	 1678*
C.IOWT  000110        	  163#	  270*	  324*	  333	  334*	  345
C.LDAT  000070        	  139#	 1537	 1559*	 1572	 1590*
C.LIN   000010        	   68#
C.LIX   000010        	   68#
C.LNK   000000        	   68#
C.MFLG  000126        	  174#	  468*
C.MOD   000013        	   68#	  490	 1051*	 1178*	 1417*
C.MSGA  000150        	  184#	  266*	  267*	 1064	 1065*	 1066*	 1074*	 1075*
C.MSGQ  000144        	  183#	  586	  627	  774	  779	 1077*	 1103
C.MSGS  000154        	  185#	  268*	  587	  588*	  780	  781*	 1062*	 1069*	 1076*	 1113*
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-2
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

C.NFSP  000130        	  176#	  718*	  777	  808*	  854*
C.NRD   000001        	  125#	  256*	 1052	 1418
C.NRDA  000074        	  141#	 1548*	 1566	 1584	 1631	 1659	 1665
C.OWN   000006        	   68#
C.PBRC  000142        	  181#	  922*	  925
C.PIX   000011        	   68#	  256	 1052*	 1418*
C.PRM   000024        	   68#
C.PRM1  000024        	   68#	 1049*	 1136	 1413*
C.PRM2  000026        	   68#	  398	 1048*	 1414*
C.PRM3  000030        	   68#
C.PRM4  000032        	   68#
C.PRM5  000034        	   68#
C.PUBP  000062        	  137#	  261*	 1109*	 1420*	 1471	 1528	 1529	 1544*	 1545*	 1547	 1600*	 1628	 1630
			 1653	 1654
C.PUBS  000072        	  140#	 1560*	 1564*	 1577*	 1579*	 1586*	 1592*	 1598*	 1657
C.RATT  000117        	  168#	  274*	  374	  376*	  378	  591	  642	  681	  683*	 1194	 1261*	 1683	 1685*
C.RECO  000116        	  167#	  273*	  349	  351*	  510*
C.RST   000056        	  134#	 1451*	 1453	 1602	 1609
C.SGHD  000066        	  138#	 1531	 1558*	 1565*	 1583*
C.STK   000004        	   68#
C.STRT  000121        	  170#	  276*	  365	 1410*	 1421*	 1433*
C.STS   000014        	   68#	  337*	  440*	  442*	  454*	  520*	  538*	 1073*	 1098*	 1162	 1163*
C.SYN   000050        	  133#	 1646
C.TIMC  000000        	  124#
DC1   = 000021        	 1824
DC2   = 000022        	 1825
DC3   = 000023        	 1826
DC4   = 000024        	 1856
DEL   = 000177        	 1800
DLE   = 000020        	 1953
DM.ASC= 000001        	   67#
DM.AS8= 000005        	   67#
DM.AUG= 000004        	   67#
DM.CLI= 000002        	   67#	 1478
DM.EBC= 000003        	   67#
DTXTSZ= 000020        	  127#	  128	 1321
DVCLOS  000236R    003	  104	  312#
DVOPEN  000000R    003	  103	  255#
EJECT = 000002        	 1365#
EM    = 000031        	 1873
ENQ   = 000005        	 1887
EOFASC= 007417        	   67#	 1469
EOT   = 000004        	 1760
EO.ASC= 000001        	   67#
EO.IMG= 000002        	   67#
ERRCHR= 000334        	 1503	 1754	 1756	 1757	 1758	 1759	 1784	 1797	 1799	 1814	 1827	 1828	 1830
			 1834	 1843	 1844	 1845	 1846	 1852	 1853	 1854	 1855	 1858	 1862	 1863	 1864
			 1874	 1875	 1882	 1883	 1884	 1885	 1886	 1893	 1894	 1895	 1896	 1897	 1898
			 1899	 1903	 1904	 1905	 1906	 1907	 1908	 1909	 1913	 1914	 1915	 1916	 1917
			 1918	 1919	 1923	 1924	 1925	 1926	 1927	 1928	 1929	 1933	 1934	 1935	 1936
			 1937	 1938	 1939	 1943	 1944	 1945	 1946	 1947	 1948	 1949	 1952	 1954	 1955
			 1956	 1957	 1958	 1959	 1962	 1964	 1965	 1966	 1967	 1968	 1969
ERROR = 100000        	 1379#
ESC   = 000033        	 1849
ETB   = 000027        	 1848
ETX   = 000003        	 1796
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-3
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

FB.CA = 000100        	  219#	  225	  231	  241	  895
FB.CL0= 000000        	  208#
FB.CL1= 000001 G      	  209#	  225	  231	  241	  836	  899
FB.CP = 000040        	  218#	  765
FB.SST= 000020        	  217#	  225	  241	  831	  913	  966
FB.STE= 000010        	  216#	  225	  241	  959
FB.STR= 000004        	  212#	  847	  858	  905	  917	  963	  970
FB.WRD= 000002        	  210#	  847	  905	  963
FC.AST= 000000        	   68#
FC.CCP= 000022        	   68#	   94	  338
FC.CLM= 000003        	   67#
FC.CL0= 000000        	   67#
FC.CL1= 000001        	   67#	  838	  901
FC.CTL= 000010        	   68#	   89
FC.KCP= 000020        	   68#	   93
FC.KIL= 000006        	   68#	   88
FC.RCE= 000004        	   68#	   87	  319	  443	  455	  521	  539	 1099	 1164
FC.RCP= 000016        	   68#	   92
FC.SST= 000002        	   67#	  737	  893
FC.SYS= 000012        	   68#
FC.TIM= 000012        	   68#	   90
FC.XCP= 000014        	   68#	   91
FC.XME= 000002        	   68#	   86	 1050	 1416	 1679
FD.AST= 000000        	   68#
FD.CCP= 000014        	   68#
FD.CTL= 000014        	   68#
FD.KCP= 000004        	   68#
FD.KIL= 000004        	   68#
FD.RCE= 000004        	   68#
FD.RCP= 000004        	   68#
FD.SYS= 000012        	   68#
FD.TIM= 000012        	   68#
FD.XCP= 000000        	   68#
FD.XME= 000000        	   68#
FERBCL  002440R    003	  788#	  900
FERCPN  002462R    003	  766	  794#
FERDNP  002476R    003	  798#
FERERR  002454R    003	  738	  792#	  896	  909	  939
FERNEB  002470R    003	  796#
FERNST  002446R    003	  790#	  950
FERUSF  002432R    003	  755	  786#
FE.ALL= 000377        	   67#	  731
FE.DAT= 000001        	   67#
FE.DVT= 000006        	   67#
FE.DWD= 000011        	   67#
FE.EOF= 000005        	   67#
FE.ESC= 000000        	   67#
FE.FNM= 000010        	   67#
FE.FWD= 000004        	   67#
FE.LCR= 000003        	   67#
FE.SER= 000002        	   67#
FE.TRN= 000007        	   67#
FF    = 000014        	 1866
FM.CCB= 000010        	   68#
FM.CRA= 000002        	   68#
FM.DAT= 000000        	   68#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-4
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

FM.GET= 000014        	   68#
FM.KIL= 000000        	   68#
FM.LTM= 000002        	   68#	  113
FM.NM = 000006        	   68#
FM.PIN= 000006        	   68#	  115
FM.PWF= 000004        	   68#	  114
FM.RDB= 000012        	   68#
FM.RTN= 000002        	   68#
FM.SET= 000012        	   68#
FM.STM= 000000        	   68#	  112
FM.STP= 000004        	   68#	  104
FM.STR= 000002        	   68#	  103
FM.SYN= 000004        	   68#
FM.XKL= 000004        	   68#
FR.BCL= 000002        	   67#	  788
FR.CPN= 000005        	   67#	  794
FR.DNP= 000007        	   67#	  798
FR.ERR= 000004        	   67#	  792
FR.NEB= 000006        	   67#	  796
FR.NST= 000003        	   67#	  790
FR.USF= 000001        	   67#	  786
FS    = 000034        	 1876
FTRCON  002334R    003	  771#	  809	  855	  951
FTRFND  003326R    003	  750*	  754*	 1002#
FTRSET  002752R    003	  769	  893#
FTRSHO  002542R    003	  768	  826#	  914	  946
FTRSYN  002100R    003	  474*	  709#
F.FCV = 000001        	  220#	  865	  928	  965*	  974	 1463	 1477	 1549
F.FSB = 000000        	  207#
F.FSV = 000002        	  221#	  965	  976	  977
GS    = 000035        	 1877
HOCHK = 020000        	 1376#	 1611
HT    = 000011        	 1798
INTENB= 000100        	 1366#	 1428
INTERR  006136R    003	 1460	 1609#
KISAR6= ****** G      	  421#*	  516#*	  524#*	  775#*	 1064#*	 1127#*	 1448#	 1528#*	 1546#*	 1606#*	 1630#*	 1640#*	 1653#*
			 1670#*
K.ACNT  000114        	   70#
K.ACTL  000112        	   70#
K.DES   000002        	   70#
K.DFMT  000006        	   70#
K.DGRP  000010        	   70#
K.DOBJ  000007        	   70#
K.DPL1  000010        	   70#
K.DPL2  000014        	   70#
K.DPR1  000012        	   70#
K.DPR2  000016        	   70#
K.DST   000010        	   70#
K.DUSR  000012        	   70#
K.ENDD  000156        	   70#
K.FMT   000000        	   70#
K.GRP   000002        	   70#
K.LEN   000002        	   70#
K.LN2   000006        	   70#
K.NAM   000004        	   70#
K.NM2   000010        	   70#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-5
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

K.NODE  000000        	   70#
K.OBJ   000001        	   70#
K.OPDL  000134        	   70#
K.OPTD  000136        	   70#
K.PASL  000100        	   70#
K.PASW  000102        	   70#
K.RQDL  000056        	   70#
K.RQID  000060        	   70#
K.SFMT  000032        	   70#
K.SGRP  000034        	   70#
K.SIZE  000156        	   70#
K.SOBJ  000033        	   70#
K.SPL1  000034        	   70#
K.SPL2  000040        	   70#
K.SPR1  000036        	   70#
K.SPR2  000042        	   70#
K.SRC   000034        	   70#
K.SUSR  000036        	   70#
K.USR   000004        	   70#
LF    = 000012        	 1847
LP.CHS= 000210        	   67#
LP.CVF= 000205        	   67#
LP.FCC= 000206        	   67#
LP.HT = 000202        	   67#
LP.OPV= 000212        	   67#
LP.OVP= 000204        	   67#
LP.PLE= 000211        	   67#
LP.SFC= 000203        	   67#
LP.VFR= 000207        	   67#
MCB$V0= ****** G      	   75#
MCB$V1= ****** G      	   75#
MOCHK = 010000        	 1374#	 1615
MSGCTL  001064R    003	  436	  490#
MSGDAT  000734R    003	  435	  452#
MSGFIN  001154R    003	  352*	  508#
MSGQUE  000764R    003	  453	  458#	  492
MS$BYT  003470R    003	  577*	  579*	  581*	  583*	  585*	  710*	  712*	  715*	  719*	  800*	  803*	  805*	  807*
			  827*	  834*	  840*	  843*	  850*	  853*	  862*	  868*	  875*	  878*	 1062#	 1079
NAK   = 000025        	 1857
NA.DTO= 000004        	   67#	 1233
NA.FAT= 000001        	   67#	 1210
NA.INK= 000040        	   67#
NA.IVP= 000001        	   67#	 1244
NA.JAM= 000020        	   67#
NA.NAC= 000002        	   67#
NA.NOE= 000100        	   67#
NA.OFL= 000002        	   67#	 1214
NA.OMD= 000010        	   67#	 1222
NA.OOF= 000040        	   67#
NA.OUF= 000001        	   67#	 1229
NA.OVP= 000001        	   67#
NA.PAU= 000004        	   67#	 1218
NA.PF = 000020        	   67#	 1237
NA.PSE= 000020        	   67#
NA.RAP= 000040        	   67#
NA.REG= 000100        	   67#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-6
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

NA.RNA= 000010        	   67#
NC.AUC= 000002        	   67#
NC.AUE= 000001        	   67#
NC.CAB= 000003        	   67#
NC.DMP= 000005        	   67#
NC.PAU= 000006        	   67#
NC.RES= 000007        	   67#
NC.RQC= 000011        	   67#
NC.RQS= 000004        	   67#
ND.ACK= 000001        	   67#
ND.CMP= 000200        	   67#	 1589
ND.EOF= 000004        	   67#	 1666	 1672
ND.IER= 000002        	   67#	 1632
NF.CMD= 000001        	   67#	  735	  767	  830
NF.STD= 000002        	   67#	  833
NM.ALR= 000004        	   67#	 1175
NM.ATT= 000001        	   67#	 1201
NM.CAP= 000005        	   67#	 1274
NM.CTL= 000003        	   67#	  469	  526	  576
NM.DAT= 000000        	   67#	 1552
NM.FTR= 000002        	   67#	  709
NM.OTR= 000006        	   67#
NM.TYP= 000017        	   67#	  424
NOOP    000234R    003	  114	  304#
NRDOTR= 000004        	  425	  427	  437#
NR.ABS= 000000        	   67#
NR.ACC= 000000        	   67#
NR.ACN= 000001        	   67#	  611
NR.ATT= 000000        	   67#
NR.CAP= 000000        	   67#
NR.DMP= 000000        	   67#
NR.DPS= 000000        	   67#
NR.NAB= 000001        	   67#	  630
NR.NDP= 000002        	   67#
NR.NDR= 000002        	   67#
NR.NOB= 000001        	   67#	  646
NR.NOE= 000002        	   67#
NR.NPS= 000001        	   67#	  674
NR.PAU= 000001        	   67#	  657
NR.RES= 000000        	   67#
NUL   = 000000        	 1963
N.AABC= 000004        	   67#
N.AACK= 000002        	   67#
N.ACOD= 000003        	   67#
N.AFLG= 000004        	   67#
N.ALGD= 000002        	   67#
N.APLE= 000005        	   67#
N.ARQS= 000003        	   67#	  683
N.ASTC= 000001        	   67#	  376	 1685
N.CCMD= 000003        	   67#	  495	  497	  518
N.CRES= 000004        	   67#	  531
N.CSEQ= 000002        	   67#	  519
N.DDAT= 000005        	   67#	 1560
N.DFLG= 000003        	   67#	 1632*	 1666*	 1672
N.DSEQ= 000002        	   67#
N.DSGC= 000004        	   67#	 1567*	 1585*	 1660*
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-7
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

N.FCLS= 000002        	   67#
N.FDAT= 000004        	   67#
N.FFLG= 000001        	   67#
N.FID = 000000        	   67#
N.FRSP= 000003        	   67#
N.FSEQ= 000002        	   67#
N.FSPC= 000004        	   67#
N.MFL = 000001        	   67#
N.NSPC= 000003        	   67#	  777*
N.PCAP= 000003        	   67#
N.PCNT= 000002        	   67#
N.TYP = 000000        	   67#
PHD$A   000000R       	   75#	   76	   77
Q$PURG  003606R    003	  315*	  631	 1090#
RDAHD = 000005        	 1357#	 1403
RDROFL= 000400        	  359	 1370#	 1623
RDRONL= 002000        	 1372#
RD$BYT  004006R    003	  465*	  467*	  560*	  562*	  713*	  716*	  720*	  722*	  724*	  728*	  903*	  911*	  921*
			  923*	  942*	 1125#	 1153
RD$DQX  004146R    003	  575*	  600*	  778*	 1139*	 1159#
READ  = 000001        	 1364#	 1428
RS    = 000036        	 1878
SETSTD  003200R    003	  302*	  948*	  959#
SI    = 000017        	 1869
SN$ALR  004222R    003	  361*	 1172#
SN$ATT  004270R    003	  380*	  593*	 1193#	 1686*
SN$CAP  004576R    003	  384*	  597	 1270#
SO    = 000016        	 1868
SOH   = 000001        	 1794
STOPWT  000322R    003	  327#	  347
STX   = 000002        	 1795
SUB   = 000032        	 1859
SYN   = 000026        	 1755
S$ABO = 000022        	   70#
S$ACC = 000002        	   70#
S$CNR = 000000        	   70#
S$CON = 000000        	   70#
S$DAT = 000002        	   70#
S$DIS = 000020        	   70#
S$DRQ = 000012        	   70#
S$DSR = 000006        	   70#
S$GLN = 000024        	   70#
S$INT = 000004        	   70#	  490
S$IRQ = 000016        	   70#
S$MRQ = 000010        	   70#
S$PBOM= 000001        	   70#
S$PEOM= 000004        	   70#	 1049	 1136	 1140	 1413
S$PMOM= 000002        	   70#
S$PMSG= 000002        	   70#
S$PSEG= 000001        	   70#
S$REJ = 000004        	   70#
S$SND = 000006        	   70#	 1051	 1417
S$SNI = 000014        	   70#	 1178
S.DSP   000004        	   69#	 1647*
S.EABL= 177755        	   70#
S.EABM= 177770        	   70#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-8
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

S.EABO= 177767        	   70#	  442	  454	 1098
S.EABS= 177771        	   70#
S.EACR= 177736        	   70#
S.ECBE= 177764        	   70#
S.EDBO= 177754        	   70#
S.EERR= 177763        	   70#
S.EIDM= 177762        	   70#	  440
S.EINF= 177766        	   70#
S.EIOF= 177773        	   70#
S.ELNS= 177765        	   70#
S.ELST= 177761        	   70#
S.ELWS= 177760        	   70#
S.EMTL= 177757        	   70#
S.ENOF= 177732        	   70#
S.ENRO= 177732        	   70#
S.ENSL= 177756        	   70#
S.ENUR= 177731        	   70#
S.EOTB= 177772        	   70#
S.ERBO= 177754        	   70#	  290	  538
S.ERES= 177777        	   70#
S.ERNS= 177775        	   70#
S.ETMI= 177753        	   70#
S.EUNN= 177776        	   70#
S.EURO= 177774        	   70#
S.LNK   000000        	   69#
S.PDB   000002        	   69#
S.SEOM= 000002        	   70#
S.SSUC= 000001        	   70#	  284	  335
TIMERR= 004000        	 1373#	 1619
TIMPIN= ****** GX     	  115
US    = 000037        	 1879
VF.6LI= 000001        	   67#
VF.8LI= 000002        	   67#
VT    = 000013        	 1865
ZONTAB  007110R    003	 1500	 1974#
ZON$$ = ****** U      	 1985
ZON0    006560R    003	 1702#
ZON1    006620R    003	 1742#
ZON10   006600R    003	 1722#
ZON11   006710R    003	 1812#
ZON12   006720R    003	 1822#
ZON13   006770R    003	 1871#
ZON14   006700R    003	 1802#
ZON15   007050R    003	 1931#
ZON16   007060R    003	 1941#
ZON2    006630R    003	 1752#
ZON20   006570R    003	 1712#
ZON21   006660R    003	 1782#
ZON22   006670R    003	 1792#
ZON23   006760R    003	 1861#
ZON24   006650R    003	 1772#
ZON25   007010R    003	 1891#
ZON26   007020R    003	 1901#
ZON27   007100R    003	 1961#
ZON3    006750R    003	 1851#
ZON30   006640R    003	 1762#
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 36-9
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- USER SYMBOLS

ZON31   007030R    003	 1911#
ZON32   007040R    003	 1921#
ZON33   007070R    003	 1951#
ZON4    006610R    003	 1732#
ZON5    006730R    003	 1832#
ZON6    006740R    003	 1841#
ZON7    007000R    003	 1881#
ZTAB    007210R    003	 1498	 1518	 1523	 1991#
ZZ$SLP  004730R    003	 1082*	 1147*	 1312#
ZZ$WAK  005006R    003	  356*	 1334#
$CBBGT= ****** GX     	 1045*
$CBBRT= ****** GX     	  402	 1105*
$CMQRM= ****** GX     	  318	  515	  536	  586	  779	 1093	 1097	 1103	 1161	 1661
$CRGO   005220R    003	 1427#
$CRINT  005254RG   003	 1446#
$CRSTP  005236R    003	  312*	  623*	 1091*	 1431#
$CRSTR  005054R    003	  367*	  671*	 1401#	 1689
$DSPCR= ****** G      	   85#	   86#	   87#	   88#	   93#	   94#	  102#	  112#
$LTMEN= ****** GX     	  286*
$RDBGT= ****** GX     	 1408*
$RDBRT= ****** GX     	  400	 1094*	 1674*
$SCHED= ****** GX     	  320*	  339	  444	  456	  522*	  533	  541	  590*	  783	 1100*	 1165*	 1180	 1260*
			 1304*	 1680*
$SYNCH= ****** GX     	 1648
$$    = 000040        	 1975#	 1985#
$$DAT = 000000        	  123#	  245
$$LVL = 000000        	  123#	  245
$$TABG= 000042R    002	   84#	   86	   87	   88	   89	   90	   91	   92	   93	   94	  101#	  103	  104
			  111#	  112	  113	  114	  115
.     = 007230R    003	   68#	   69#	   70#	   76#	   77#	   84	   86	   87	   88	   89	   90	   91	   92
			   93	   94	  101	  103	  104	  111	  112	  113	  114	  115	  123#	  124#	  125#
			  126#	  128#	  129#	  130#	  131#	  133#	  134#	  135#	  136#	  137#	  138#	  139#	  140#
			  141#	  142#	  143#	  159#	  162#	  163#	  166#	  167#	  168#	  169#	  170#	  173#	  174#
			  175#	  176#	  177#	  178#	  179#	  180#	  181#	  182#	  183#	  184#	  185#	  189#	  190#
			  191#	  192#	  193#	  194#	  195#	  196#	  197#	  198#	  199	  201#	  202#	  203#	  204
			  224#	  226#	  227#	  230#	  232#	  235#	  236#	  240#	  242#	  243#	  245#	  437	  554
.DSPCR= ****** G      	   76#
.RDBSZ= ****** GX     	 1415
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 37
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- MACRO NAMES

CALLR	  100	  110	  339	  347	  400	  402	  429	  444	  456	  492	  533	  541	  597	  631	  769
	  783	  939	  946	  950	  951	 1180	 1455	 1460	 1648	 1689
CCBDF$	   65#	   68
CHR$B	  123#
CHR$W	  123#
COR$D	  123#
CSR$W	  123#	  126
CTL$B	  123#
CTL$W	  123#
DAT$	   66#	  123
DAT$DF	  123#
DEQ$	  318	  515	  536	  586	  779	 1093	 1097	 1103	 1161	 1661
DSP$	   66#	   84#	   85	   86	   87	   88	   89	   90	   91	   92	   93	   94	  101#	  102	  103
	  104	  111#	  112	  113	  114	  115
DSP$B	   66#	   84	  101	  111
DSP$E	   66#	   84#	   95	  101#	  105	  111#	  116
DSR$W	  123#
END$	   66#	  123#	  245
ENQ$	  458	  494	 1077	 1419
LIX$B	  123#
LIX$W	  123#
LST$D	  123#	  142	  166	  173	  183
MAP$	   66#	  421	  516	  524	  775	 1064	 1127	 1528	 1546	 1630	 1653	 1670
MAP$S	 1606	 1640
NURDF$	   65#	   67
PHD$B	   66#	   75
PHD$D	   75#	   76
PHD$E	   75#	   77
PHD$I	   75#
PHD$S	   75#
POP$S	   66#	  291	  323	  523	  571	  584	  806	  938	  945	  978	  993	 1021	 1025	 1053	 1078
	 1081	 1115	 1166	 1262	 1299	 1605	 1639
PUSH$S	   66#	  255	  316	  514	  567	  574	  786	  788	  790	  792	  794	  796	  798	  934	  940
	  972	  983	 1003	 1043	 1070	 1090	 1162	 1193	 1276	 1279	 1449
RETURN	  304	  330	  387	  477	  511	  601	  609	  612	  618	  637	  647	  655	  658	  675	  684
	  962	  995	 1023	 1027	 1054	 1067	 1116	 1131	 1143	 1167	 1181	 1263	 1306	 1328	 1350
	 1411	 1429	 1434	 1607	 1643	 1687
SCDF$	   65#	   70
SMAP$	   66#
SMAP$S	 1448
STA$B	  123#
STA$W	  123#
SYNDF$	   65#	   69
SYN$X	  123#	  133
TMB$X	  123#
TRB$B	  123#
TRB$W	  123#
UNT$B	  123#
UNT$W	  123#
VFY$	  123#


. ABS.  000205     000	   OVR   RW    ABS   LCL   D  
        000040     001	   CON   RW    REL   LCL   I  
$PLIT$  000052     002	   CON   RO    REL   LCL   D  
$CODE$  007230     003	   CON   RO    REL   LCL   I  
CR	CR11 LLC AND DRIVER	DNMAC X24.07-563  04-JAN-83  16:25  PAGE 37-1
CR.M11    30-DEC-82 02:07		CROSS REFERENCE TABLE -- MACRO NAMES



 ERRORS DETECTED:  0
 DEFAULT GLOBALS GENERATED:  10

 CR,CR/CRF=MCB:MCBLIB.M11/PA:1,MCB:SCLIB.M11/PA:1,DSK:URDLIB.M11/PA:1,CR
 RUN-TIME: 5 6 1 SECONDS
 RUN-TIME RATIO: 72/13=5.2
 CORE USED:  13K  (25 PAGES)