Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/cr.list
There are no other files named cr.list in the archive.
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29
TABLE OF CONTENTS

     4-   93	MACRO DEFINITIONS
     4-   94	GENERAL MACROS
     4-  111	CR11 DRIVER PARAMETERS
     5-  116	CR11 LINE TABLE OFFSETS
     6-  122	NURD MESSAGE DEFINITIONS
     7-  128	LOCAL MACROS
     7-  157	MCB DLC TO LLC INTERFACE MACRO
     8-  169	QUEUE HANDLING MACROS
     9-  199	CR11 DRIVER CONSTANTS
    10-  238	HOLLERITH - ASCII CONVERSION TABLES
    12-  549	DISPATCH TABLES
    13-  602	NRD INTERPROCESS COMMUNICATION CONVENTIONS
    14-  633	NURD MESSAGE DECODER
    15-  683	QUEUE UP INCOMING NURD DATA AND FEATURES
    16-  727	DATA/FEATURES HYBER FUNCTION
    17-  774	GET AND PUT DATA BYTES
    18-  822	NURD FEATURES MESSAGE HANDLERS
    20-  944	FEATURES READ
    21- 1014	FEATURES SET
    22- 1128	NURD MESSAGE BUILDER
    23- 1174	FEATURE FINDER
    24- 1208	NURD CONTROL MESSAGE HANDLER
    25- 1293	NON-INTERRUPT CONTROL MESSAGE PROCESSING
    26- 1345	CONTROL - REQUEST STATUS
    26- 1355	SEND ATTENTION MESSAGE
    27- 1439	CONTROL - DUMP OUTPUT BUFFERS
    27- 1451	CONTROL - PAUSE
    28- 1462	CONTROL - RESUME OUTPUT
    29- 1483	CONTROL - ABORT COMMAND SET
    30- 1515	CONTROL - REQUEST CAPABILITIES
    30- 1524	SEND CAPABILITIES MESSAGE
    31- 1567	SEND ALERT MESSAGE
    32- 1580	TIMER HANDLER
    33- 1632	RESOURCE RETURN
    34- 1657	OPEN/CLOSE DEVICE
    36- 1737	PHYSICAL BUFFER MANAGEMENT
    37- 1760	DDM RECEIVE COMPLETE
    38- 1789	FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES
    39- 1820	INPUT ENABLE
    40- 1866	CR11 HARDWARE DEVICE REGISTER DEFINITIONS
    41- 1904	INTERRUPT SERVICE ROUTINE
    43- 2146	THE END
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 3


      1						.TITLE CR	- NURD CR11 CARD READER DLC/DDM PROCESS
      2						.IDENT "X01017"
      3						.ENABL	LC
      4
      5					;		COPYRIGHT (C) 1976, 1977, 1978, 1979
      6					;
      7					;		DIGITAL EQUIPMENT CORPORATION (DEC)
      8					;		122A MAIN STREET
      9					;		MAYNARD, MASSACHUSETTS 01754
     10					;
     11					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
     12					; SINGLE  COMPUTER  SYSTEM  AND  MAY  BE  COPIED ONLY WITH THE
     13					; INCLUSION OF DEC'S COPYRIGHT NOTICE AND ONLY FOR USE ON SAID
     14					; SYSTEM.   THIS  SOFTWARE AND ANY SUCH COPIES IN ANY FORM MAY
     15					; NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY PERSON OR
     16					; GROUP  NOT A PARTY TO THE LICENSING AGREEMENT.  TITLE TO AND
     17					; OWNERSHIP OF THIS SOFTWARE SHALL AT ALL  TIMES  REMAIN  WITH
     18					; DEC.
     19					;
     20					; THE INFORMATION  IN  THIS  DOCUMENT  IS  SUBJECT  TO  CHANGE
     21					; WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
     22					; TO FORM OR FUNCTION BY DEC.
     23					;
     24					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF
     25					; ITS SOFTWARE ON EQUIPMENT NOT SUPPLIED BY DEC.
     26					;
     27					;
     28					;
     29					;
     30					; THIS CROCK WAS ORIGINALLY FOISTED UPON THE  UNSUSPECTING
     31					;	WORLD IN JUNE, 1978 BY R.SOUTH WHO WAS PREOCCUPIED
     32					;	BY TRAVELS THROUGH THE LEGENDARY DUNGEON OF MORDATZ IDU.
     33					;
     34					; X01001	19-MAR-79 SCOTT G. ROBINSON
     35					;		MODIFY CONTROL START/STOP TO NOT MUNDGE
     36					;		A CCB.
     37					;
     38					; X01002	22-MAR-79 SCOTT G. ROBINSON
     39					;		MODIFY INTERRUPT SERVICE TO NOT GENERATE A
     40					;		MESSAGE LENGTH GREATER THAN WHAT THE NURD
     41					;		MESSAGE REALLY IS.
     42					;
     43					; X01003	22-MAR-79 SCOTT G. ROBINSON
     44					;		MODIFY CODE TO UNDERSTAND WHAT ONLINE/OFFLINE
     45					;		REALLY MEANS ON A CR11.
     46					;
     47					; X01004	1-MAY-79  BUREN W. HOFFMAN
     48					;		CLEAR BUFFER COUNT (L.MSGS) ON ABRTAL.  ALSO, SET
     49					;		RESPONSE CODE PROPERLY IN SAME ROUTINE.  FIXED TYPO
     50					;		IN SNDCAP.
     51					;
     52					; X01005	3-MAY-79  BUREN W. HOFFMAN
     53					;		CLEAR DATA MESSAGE BUFFER SIZE (C.DMBS) ON ABRTAL.
     54					;
     55					; X01006	18-MAY-79 BUREN W. HOFFMAN
     56					;		FIXED GLITCH IN STATE CODE REPORTING IN ABRTEF, AND
     57					;		CORRECTED TYPO IN FLUSHQ.
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 3-1


     58					;
     59					; X01007	23-MAY-79 BUREN W. HOFFMAN
     60					;		CLEAN UP FOLLOWING CLOSE, SO THAT MCBDA DOESN'T FIND
     61					;		CCB POINTER REMNANTS.
     62					;
     63					; X01010	11-JUN-79 BUREN W. HOFFMAN
     64					;		MODIFIED INTERRUPT ROUTINE TO NOT REPORT EOF CARD AS
     65					;		INVALID PUNCH, AND NOT TO DELIVER THE CARD IMAGE -
     66					;		IT MERELY NOTES THE EOF IN BUFFER.
     67					;
     68					; X01011	22-JUN-79 BUREN W. HOFFMAN
     69					;		FURTHER MODIFIED INTERRUPT ROUTINE TO DO WHAT X01010
     70					;		INTENDED TO DO.
     71					;
     72					; X01012	18-JUL-79 BUREN W. HOFFMAN
     73					;		REWROTE INTERRUPT ROUTINE TO USE OFFSETS INTO DLT, RATHER
     74					;		THAN CHANGING THE POINTER. ALSO PERFORMED OTHER COSMETIC
     75					;		CODE CLEANUPS.
     76					;
     77					; X01013	25-JUL-79 BUREN W. HOFFMAN
     78					;		FIXED A TYPO INTRODUCED IN X01012.
     79					;
     80					; X01014	27-JUL-79  BUREN W. HOFFMAN
     81					;		BUG FIX IN INTERRUPT SERVICE, INTRODUCED IN X01012.
     82					;
     83					; X01015	31-JUL-79  BUREN W. HOFFMAN
     84					;		IBID
     85					;
     86					; X01016	02-AUG-79  BUREN W. HOFFMAN
     87					;		APR6 MAPPING WAS NOT BEING PRESERVED FOLLOWING $INTSX
     88					;		IN INTERRUPT SERVICE.  SO, FIXXED IT.
     89					;
     90					; X01017	06-AUG-79  BUREN W. HOFFMAN
     91					;		BUFFER MAPPING WAS NOT BEING DONE FOR ERROR REPORTING.
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 4
MACRO DEFINITIONS

     93						.SBTTL	MACRO DEFINITIONS
     94						.SBTTL	GENERAL MACROS
     95
     96						.MCALL	INHIB$,ENABL$
     97						.MCALL	HWDDF$,NSPDF$,CCBDF$,CRDLT$,$INTSX,$INTXT,MAP,SAVMAP,RESMAP,NURDF$,NRDIN$
     98	000000					HWDDF$				; DEFINE THE HARDWARE SYMBOLS
     99	000000					NSPDF$				; DEFINE NSP SYMBOLS
    100	000000					CCBDF$				; DEFINE THE CCB SYMBOLS
    101
    102
    103
    104					.LIST	ME
    105	000000					NRDIN$
					;	CCB STATUS CODES : DLC ->NRD
		100201 			LS.ABO	=	100201		;ABORTING(COMPLIANCE WITH HIGHER (POWERS)
		100202 			LS.REJ	=	100202		;REJECTING MSG
		100203 			LS.CLO	=	100203		;DEVICE IS CLOSED,REJECTING
		100204 			LS.ILM	=	100204		;ILLEGAL NURD MSG
		100205 			LS.BOM	=	100205		;DLC IS ABORTING THE LINK DUE TO USER ERROR
					;	CCB STATUS CODES : NRD -> NRM
		100377 			NR.NDV	=	100377		;NOT A NURD DEVICE
    106					.NLIST	ME
    107
    108
    109
    110
    111						.SBTTL	CR11 DRIVER PARAMETERS
    112
    113		000005 				CRHNG	=	5		; HUNG DEVICE TIME CONSTANT
    114		000005 				RDAHD	=	5		; OUTSTANDING C.IOCN LIMIT WHEN CA.XOF SET
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 5
CR11 LINE TABLE OFFSETS

    116						.SBTTL	CR11 LINE TABLE OFFSETS
    117
    118					.LIST	ME
    119	000000					CRDLT$ <:>,<=>
						.MCALL	TMPDF$
	000000					TMPDF$
						.MCALL	.BIN,.CNB,.CNW,.CORE,.CSR,.DVCHA,.INT,.INT1,.INT2,.INT3
						.MCALL	.LIBR,.LINKS,.LFLHD,.LSTHD,.LTAB,.MPLHD,.POOL,.PRI,.SCOM
						.MCALL	.SECSR,.SLNB,.SLNW,.STNB,.STNW,.UNB,.UNW,.VFY
					;
					; NURD CR11 DEVICE DRIVER LINE TABLE TEMPLATE
					;
	000000					.ASECT
		000000 				.=0
	000000				C.TIMC::	.BLKB	1		;TWO BYTE TIMER ENTRY, CURRENT VALUE
	000001				C.TIMI::	.BLKB	1		;  AND INITIAL TIMER VALUE
	000002				C.CALL::	.INT			;INTERRUPT DISPATCH CALL
						.EVEN
						.IF DF	M$$MGE
	000002					.BLKW	7
						.IFF
						.BLKW	2
						.ENDC
	000020				C.PRI::	.PRI			;SCHEDULING PRIORITY
						.EVEN
	000020					.BLKW	1
										;DDM LEVEL DATA BASE
										;ORDER FOR THIS SECTION IS CRITICAL
	000022				C.CSR::	.CSR			;ONE WORD CSR POINTER
						.EVEN
	000022					.BLKW	1
	000024				C.RST::	.BLKW	1		;CR11 STATUS READ AT INTERRUPT
	000026				C.COLC::	.BLKB	1		;PHYSICAL COLUMN COUNT
	000027				C.HUNG::	.BLKB	1		;DEVICE HUNG TIMER
	000030				C.PUBP::	.BLKW	2		;BUFFER PTR DOUBLEWORD
	000034				C.SGHD::	.BLKW	1		;CURRENT SEGMENT HEADER ADDRESS
	000036				C.LDAT::	.BLKW	1		;LAST DATA ITEM READ
	000040				C.PUBS::	.BLKW	1		;BUFFER INPUT COUNTER
	000042				C.NRDA::	.BLKW	1		;BEG OF NURD MESSAGE(ADDRESS)
	000044				C.DDMQ::	.LSTHD			;CCB'S QUEUED FOR INPUT
						.EVEN
	000044					.BLKW	2
	000050				C.ASTS::	.BLKW	1		;ACTION STATUS BIT MAP
		000001 				CA.CLO	==	1		;CLOSED
		000002 				CA.PAU	==	2		;PAUSED
		000004 				CA.ADN	==	4		;ABORT WHEN DONE WITH DDM QUEUE
		000010 				CA.ABO	==	10		;ABORTING
		000020 				CA.ABE	==	20		;CLEAR ABORT ON EOF (ELSE ON CLEAR)
		000040 				CA.EOF	==	40		;CURRENT MESSAGE HAS EOF
		000100 				CA.HOP	==	100		;HOPPER CHECK - EMPTY INPUT OR FULL OUTPUT
		000200 				CA.MOT	==	200		;MOTION CHECK - PICK FAIL,STACK FAIL,MOTION ERROR
		000400 				CA.TER	==	400		;TIMING ERROR - DATA OVERRUN CONDITION
		000700 				   CA.ERR==	CA.HOP!CA.MOT!CA.TER	;SUMMARY - HARD ERROR
		001000 				CA.OFL	==	1000		;READER OFFLINE
		002000 				CA.IVP	==	2000		;INVALID PUNCH - MULTIPUNCH
		004000 				CA.TMO	==	4000		;DEVICE TIME OUT
		100000 				CA.XOF	==	100000		;READER XOF'D
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 5-1
CR11 LINE TABLE OFFSETS

	000052				C.CDCT::	.BLKW	1		;PHYSICAL CARD COUNT
										;MISCELLANEOUS ITEMS
						.EVEN
	000054				C.SLN::	.SLNW			;DEVICE SYSTEM LINE NUMBER
						.EVEN
	000054					.BLKW	1
	000056				C.IOCN::	.BLKW	1		;OUTSTANDING IO COUNT
	000060				C.IOWT::	.BLKW	1		;CLOSE WAIT FLAG = CLOSE CCB
										;CONTROL MESSAGE PROCESSING DATA BASE
						.EVEN
	000062				C.CMSQ::	.LSTHD			;CONTROL MESSAGE QUEUE
						.EVEN
	000062					.BLKW	2
	000066				C.RECO::	.BLKB	1		;CONTROL MESSAGE RESOURCE ERROR FLAG
	000067				C.RATT::	.BLKB	1		;PENDING ATTENTION MESSAGE FLAG - REASON CODE
	000070				C.CAPP::	.BLKB	1		;PENDING CAPABILITIES MESSAGE FLAG
	000071				C.STRT::	.BLKB	1		;PENDING READ START
										;DATA & FEATURES PROCESSING DATA BASE
						.EVEN
	000072				C.DLCQ::	.LSTHD			;CCB'S QUEUED INTO DLC
						.EVEN
	000072					.BLKW	2
	000076				C.MFLG::	.BLKB	1		;CURRENT NURD MESSAGE FLAGS
	000077				C.CAPN::	.BLKB	1		;CURRENT INDEX INTO CAPABILITIES LIST
	000100				C.NFSP::	.BLKB	1		;NO. FEATURE SPECS IN CURRENT MSG
						.EVEN
	000102				C.DMAD::	.BLKW	2		;DATA MSG ADDRESS DOUBLEWORD (PTR)
	000106				C.DMBS::	.BLKW	1		;DATA MSG BUFFER SIZE
	000110				C.DMSQ::	.BLKB	2		;LAST GOOD, CURRENT DATA SEQ NUMBERS
	000112				C.PBRC::	.BLKB	1		;TEMP BYTE
						.EVEN
	000114				C.MSGQ::	.LSTHD			;OUTGOING MSG QUEUE
						.EVEN
	000114					.BLKW	2
	000120				C.MSGA::	.BLKW	2		;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
	000124				C.MSGS::	.BLKW	1		;CURRENT MSG BUFFER SIZE
										;DATA/FEATURES PROCESS HYBER CONTEXT
	000126				C.DWAK::	.BLKB	1		;WAKE CONDITION
		000001 				DWAKS	==	1		;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
		000002 				DWAKP	==	2		;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
		000003 				DWAKT	==	3		;WAKE ON CLOCK TOCK
		000004 				DWAKR	==	4		;WAKE WHEN RESUME CONTROL FCN DONE
	000127				C.DTXL::	.BLKB	1		;NO. WORDS ON STACK AT SLEEP TIME
						.EVEN
	000130				C.DFSP::	.BLKW	1		;STACK ORIGIN
		000020 			DTXTSZ	==	16.			;DATA/FEATURES PROCESS CONTEXT ALLOCATED
	000132				C.DTXT::	.BLKW	DTXTSZ		;CONTEXT BLOCK FOR DA/FEATURES PROCESS
										;FEATURE CRUFT
	000172				C.CFET::				;LP11 COMMON FEATURE LIST
	000172					.BLKB	1			;NUMBER OF COMMON FEATURES
	000173					.BLKB	1			;FEATURE FE.DAT     SUPPORTED
	000174					.BLKB	1			;FEATURE FE.SER NOT SUPPORTED
	000175					.BLKB	1			;FEATURE FE.LCR NOT SUPPORTED
	000176					.BLKB	1			;FEATURE FE.FWD NOT SUPPORTED
	000177					.BLKB	1			;FEATURE FE.EOF     SUPPORTED
	000200					.BLKB	1			;FEATURE FE.DVT NOT SUPPORTED
	000201					.BLKB	1			;FEATURE FE.TRN NOT SUPPORTED
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 5-2
CR11 LINE TABLE OFFSETS

	000202					.BLKB	1			;FEATURE FE.FNM NOT SUPPORTED
	000203					.BLKB	1			;FEATURE FE.DWD     SUPPORTED
		000011 			CCFETL	==	.-C.CFET-1
	000204				C.DFET::	.BLKB	1		;NUMBER OF DEVICE SPECIFIC FEATURES
	000205					.BLKB	1			;FEATURE 129    NOT DEFINED
	000206					.BLKB	1			;FEATURE CD.CWD     SUPPORTED
		000002 			CDFETL	==	.-C.DFET-1
										;FEATURE BLOCKS
		000000 			F.FSB	==	0			;(BM)FEATURES STATUS BYTE
		000000 				FB.CL0	== 0			;CLASS 0 FEATURE => <BIT> FORM
		000001 				FB.CL1	== 1			;CLASS 1 FEATURE => <CNT><...> FORM
		000002 				FB.WRD	== 2			;FEATURE IS A WORD AND
										; F.FCV IS A DLT OFFSET TO IT
		000004 				FB.STR	== 4			;FEATURE IS A STRING
										;F.FCV IS THE LENGTH
										;CURRENT VALUE BEGINS AT F.FCV+1
										;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
		000010 				FB.STE	== 10			;STANDARD VALUE EXISTS
		000020 				FB.SST	== 20			;STANDARD IS SET
		000040 				FB.CP	== 40			;CHANGE PENDING
		000100 				FB.CA	== 100			;CHANGE ALLOWED
		000001 			F.FCV	==	1			;FEATURE CURRENT VALUE BYTE
		000002 			F.FSV	==	2			;FEATURE STANDARD VALUE BYTE
	000207				CR.DAT::					;DATA MODE
	000207					.BLKB	1
		000131 				CRDATS	==	FB.CL1!FB.CA!FB.SST!FB.STE	;INITIAL STATUS OF LE.DOF LE.DAT
	000210					.BLKB	1				;ASCII
	000211					.BLKB	1				;ASCII IS STD
					;CR.SER::					;SERIAL NUMBER
					;CR.LCR::					;LOWER CASE RAISE
					;CR.FWD::					;FORM WIDTH
	000212				CR.EOF::						;EOF RECOGNITION
	000212					.BLKB	1
		000101 				CREOFS	==	FB.CL1!FB.CA		;INITIAL STATUS OF CR.EOF
	000213					.BLKB	1
					;CR.DVT::					;DEVICE TYPE
					;CR.TRN::					;RECORD TRUNCATION
					;CR.FNM::					;FORM NAME
	000214				CR.DWD::					;DEVICE WIDTH
	000214					.BLKB	1
	000215					.BLKB	1				;STD WIDTH
					;	DEVICE SPECIFIC FEATURES
	000216				CR.CWD::					;CARD WIDTH
	000216					.BLKB	1
		000131 				CRCWDS	==	FB.CL1!FB.CA!FB.STE!FB.SST	;INITIAL STATUS OF CR.CWD
	000217					.BLKB	1
	000220					.BLKB	1
	000000					.PSECT
    120					.NLIST	ME
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 6
NURD MESSAGE DEFINITIONS

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

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

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

    128						.SBTTL	LOCAL MACROS
    129
    130					.MACRO	PUSH	LIST
    131						.IRP	.A,<LIST>
    132						MOV	.A,-(SP)
    133						.ENDR
    134					.ENDM	PUSH
    135
    136
    137					.MACRO	POP	LIST
    138						.IRP	.A,<LIST>
    139						MOV	(SP)+,.A
    140						.ENDR
    141					.ENDM	POP
    142
    143
    144					.MACRO	CRASH
    145						IOT
    146					.ENDM	CRASH
    147
    148
    149					.MACRO	DFHYBER	WAKE
    150						MOVB	#200!WAKE,C.DWAK(R5)
    151						CALL	DFSLEP
    152					.ENDM
    153
    154
    155
    156
    157						.SBTTL	MCB DLC TO LLC INTERFACE MACRO
    158
    159					.MACRO	$TOBDM	WHICH,SFC
    160						.IF NB	<SFC>
    161						MOV	SFC,R3			; LOAD SUCCESS/FAILURE CODE
    162						.IFF
    163						CLR	R3			; DEFAULT IS SUCCESS
    164						.ENDC ;NB <SFC>
    165						MOV	C.SLN(R5),C.LIN(R4)	; IDENTIFY SENDER
    166						CALL	$'WHICH'CMP		; DISPATCH TO COMMEXEC
    167					.ENDM	$TOBDM
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 8
QUEUE HANDLING MACROS

    169						.SBTTL	QUEUE HANDLING MACROS
    170
    171					.MACRO	DEQ$	OFFSET,TAG,?TAG2,?TAG1
    172						INHIB$
    173						MOV	OFFSET(R5),R4
    174						.IF NB	<TAG>
    175						BNE	TAG1
    176						ENABL$
    177						BR	TAG
    178					TAG1:
    179						.IFF
    180						BEQ	TAG2+2
    181						.ENDC
    182						MOV	@R4,OFFSET(R5)
    183						BNE	TAG2
    184						MOV	R5,OFFSET+2(R5)
    185						.IIF NB <OFFSET>, ADD #OFFSET,OFFSET+2(R5)
    186					TAG2:	CLR	@R4
    187						ENABL$
    188					.ENDM	DEQ$
    189
    190
    191					.MACRO	ENQ$	OFFSET
    192						INHIB$
    193						CLR	@R4
    194						MOV	R4,@OFFSET+2(R5)
    195						MOV	R4,OFFSET+2(R5)
    196						ENABL$
    197					.ENDM	ENQ$
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 9
CR11 DRIVER CONSTANTS

    199						.SBTTL	CR11 DRIVER CONSTANTS
    200
    201
    202		000000 			NUL	=	0
    203		000001 			SOH	=	1
    204		000002 			STX	=	2
    205		000003 			ETX	=	3
    206		000004 			EOT	=	4
    207		000005 			ENQ	=	5
    208		000006 			ACK	=	6
    209		000007 			BEL	=	7
    210		000010 			BS	=	10
    211		000011 			HT	=	11
    212		000012 			LF	=	12
    213		000013 			VT	=	13
    214		000014 			FF	=	14
    215		000015 			CR	=	15
    216		000016 			SO	=	16
    217		000017 			SI	=	17
    218		000020 			DLE	=	20
    219		000021 			DC1	=	21
    220		000022 			DC2	=	22
    221		000023 			DC3	=	23
    222		000024 			DC4	=	24
    223		000025 			NAK	=	25
    224		000026 			SYN	=	26
    225		000027 			ETB	=	27
    226		000030 			CAN	=	30
    227		000031 			EM	=	31
    228		000032 			SUB	=	32
    229		000033 			ESC	=	33
    230		000034 			FS	=	34
    231		000035 			GS	=	35
    232		000036 			RS	=	36
    233		000037 			US	=	37
    234		000040 			SPA	=	40
    235		000177 			DEL	=	177
    236		000334 			ERRCHR	=	'\!200			; DEC STD ERROR CHARACTER
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 10
HOLLERITH - ASCII CONVERSION TABLES

    238						.SBTTL	HOLLERITH - ASCII CONVERSION TABLES
    239
    240					; CONVERSION IS ZONE ORIENTED
    241					; ZONE LABELS ARE CONSTRUCTED BY APPENDING TO "ZON"
    242					; THE OCTAL CODE FOR CARD ZONES(ROWS)
    243					;	ZONE 12	=	20
    244					;	ZONE 11	=	10
    245					;	ZONE  0	=	 4
    246					;	ZONE  9	=	 2
    247					;	ZONE  8	=	 1
    248
    249	000000				ZON0:			;NO ZONE PUNCHES
    250	000000	   040 				.BYTE	40	;NO ROW PUNCHES
    251	000001	   061 				.BYTE	'1	;ROW 1
    252	000002	   062 				.BYTE	'2	;ROW 2
    253	000003	   063 				.BYTE	'3	;ROW 3
    254	000004	   064 				.BYTE	'4	;ROW 4
    255	000005	   065 				.BYTE	'5	;ROW 5
    256	000006	   066 				.BYTE	'6	;ROW 6
    257	000007	   067 				.BYTE	'7	;ROW 7
    258
    259	000010				ZON20:			;ZONE 12
    260	000010	   046 				.BYTE	'&	;NO ROW PUNCHES
    261	000011	   101 				.BYTE	'A	;ROW 1
    262	000012	   102 				.BYTE	'B	;ROW 2
    263	000013	   103 				.BYTE	'C	;ROW 3
    264	000014	   104 				.BYTE	'D	;ROW 4
    265	000015	   105 				.BYTE	'E	;ROW 5
    266	000016	   106 				.BYTE	'F	;ROW 6
    267	000017	   107 				.BYTE	'G	;ROW 7
    268
    269	000020				ZON10:			;ZONE 11
    270	000020	   055 				.BYTE	'-	;NO ROW PUNCHES
    271	000021	   112 				.BYTE	'J	;ROW 1
    272	000022	   113 				.BYTE	'K	;ROW 2
    273	000023	   114 				.BYTE	'L	;ROW 3
    274	000024	   115 				.BYTE	'M	;ROW 4
    275	000025	   116 				.BYTE	'N	;ROW 5
    276	000026	   117 				.BYTE	'O	;ROW 6
    277	000027	   120 				.BYTE	'P	;ROW 7
    278
    279	000030				ZON4:			;ZONE 0
    280	000030	   060 				.BYTE	'0	;NO ROW PUNCHES
    281	000031	   057 				.BYTE	'/	;ROW 1
    282	000032	   123 				.BYTE	'S	;ROW 2
    283	000033	   124 				.BYTE	'T	;ROW 3
    284	000034	   125 				.BYTE	'U	;ROW 4
    285	000035	   126 				.BYTE	'V	;ROW 5
    286	000036	   127 				.BYTE	'W	;ROW 6
    287	000037	   130 				.BYTE	'X	;ROW 7
    288
    289	000040				ZON1:			;ZONE 8
    290	000040	   070 				.BYTE	'8	;NO ROW PUNCHES
    291	000041	   140 				.BYTE	140	;ROW 1
    292	000042	   072 				.BYTE	':	;ROW 2
    293	000043	   043 				.BYTE	'#	;ROW 3
    294	000044	   100 				.BYTE	'@	;ROW 4
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 10-1
HOLLERITH - ASCII CONVERSION TABLES

    295	000045	   047 				.BYTE	''	;ROW 5
    296	000046	   075 				.BYTE	'=	;ROW 6
    297	000047	   042 				.BYTE	'"	;ROW 7
    298
    299	000050				ZON2:			;ZONE 9
    300	000050	   071 				.BYTE	'9	;NO ROW PUNCHES
    301	000051	   334 				.BYTE	ERRCHR	;ROW 1
    302	000052	   026 				.BYTE	SYN	;ROW 2
    303	000053	   334 				.BYTE	ERRCHR	;ROW 3
    304	000054	   334 				.BYTE	ERRCHR	;ROW 4
    305	000055	   334 				.BYTE	ERRCHR	;ROW 5
    306	000056	   334 				.BYTE	ERRCHR	;ROW 6
    307	000057	   004 				.BYTE	EOT	;ROW 7
    308
    309	000060				ZON30:			;ZONE 12-11
    310	000060	   174 				.BYTE	'|	;NO ROW PUNCHES
    311	000061	   152 				.BYTE	'j	;ROW 1
    312	000062	   153 				.BYTE	'k	;ROW 2
    313	000063	   154 				.BYTE	'l	;ROW 3
    314	000064	   155 				.BYTE	'm	;ROW 4
    315	000065	   156 				.BYTE	'n	;ROW 5
    316	000066	   157 				.BYTE	'o	;ROW 6
    317	000067	   160 				.BYTE	'p	;ROW 7
    318
    319	000070				ZON24:			;ZONE 12-0
    320	000070	   173 				.BYTE	'{	;NO ROW PUNCHES
    321	000071	   141 				.BYTE	'a	;ROW 1
    322	000072	   142 				.BYTE	'b	;ROW 2
    323	000073	   143 				.BYTE	'c	;ROW 3
    324	000074	   144 				.BYTE	'd	;ROW 4
    325	000075	   145 				.BYTE	'e	;ROW 5
    326	000076	   146 				.BYTE	'f	;ROW 6
    327	000077	   147 				.BYTE	'g	;ROW 7
    328
    329	000100				ZON21:			;ZONE 12-8
    330	000100	   110 				.BYTE	'H	;NO ROW PUNCHES
    331	000101	   334 				.BYTE	ERRCHR	;ROW 1
    332	000102	   133 				.BYTE	'[	;ROW 2
    333	000103	   056 				.BYTE	'.	;ROW 3
    334	000104	   074 				.BYTE	'<	;ROW 4
    335	000105	   050 				.BYTE	'(	;ROW 5
    336	000106	   053 				.BYTE	'+	;ROW 6
    337	000107	   041 				.BYTE	'!	;ROW 7
    338
    339	000110				ZON22:			;ZONE 12-9
    340	000110	   111 				.BYTE	'I	;NO ROW PUNCHES
    341	000111	   001 				.BYTE	SOH	;ROW 1
    342	000112	   002 				.BYTE	STX	;ROW 2
    343	000113	   003 				.BYTE	ETX	;ROW 3
    344	000114	   334 				.BYTE	ERRCHR	;ROW 4
    345	000115	   011 				.BYTE	HT	;ROW 5
    346	000116	   334 				.BYTE	ERRCHR	;ROW 6
    347	000117	   177 				.BYTE	DEL	;ROW 7
    348
    349	000120				ZON14:			;ZONE 11-0
    350	000120	   175 				.BYTE	'}	;NO ROW PUNCHES
    351	000121	   176 				.BYTE	'~	;ROW 1
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 10-2
HOLLERITH - ASCII CONVERSION TABLES

    352	000122	   163 				.BYTE	's	;ROW 2
    353	000123	   164 				.BYTE	't	;ROW 3
    354	000124	   165 				.BYTE	'u	;ROW 4
    355	000125	   166 				.BYTE	'v	;ROW 5
    356	000126	   167 				.BYTE	'w	;ROW 6
    357	000127	   170 				.BYTE	'x	;ROW 7
    358
    359	000130				ZON11:			;ZONE 11-8
    360	000130	   121 				.BYTE	'Q	;NO ROW PUNCHES
    361	000131	   334 				.BYTE	ERRCHR	;ROW 1
    362	000132	   135 				.BYTE	']	;ROW 2
    363	000133	   044 				.BYTE	'$	;ROW 3
    364	000134	   052 				.BYTE	'*	;ROW 4
    365	000135	   051 				.BYTE	')	;ROW 5
    366	000136	   073 				.BYTE	';	;ROW 6
    367	000137	   136 				.BYTE	'^	;ROW 7
    368
    369	000140				ZON12:			;ZONE 11-9
    370	000140	   122 				.BYTE	'R	;NO ROW PUNCHES
    371	000141	   021 				.BYTE	DC1	;ROW 1
    372	000142	   022 				.BYTE	DC2	;ROW 2
    373	000143	   023 				.BYTE	DC3	;ROW 3
    374	000144	   334 				.BYTE	ERRCHR	;ROW 4
    375	000145	   334 				.BYTE	ERRCHR	;ROW 5
    376	000146	   010 				.BYTE	BS	;ROW 6
    377	000147	   334 				.BYTE	ERRCHR	;ROW 7
    378
    379	000150				ZON5:			;ZONE 0-8
    380	000150	   131 				.BYTE	'Y	;NO ROW PUNCHES
    381	000151	   334 				.BYTE	ERRCHR	;ROW 1
    382	000152	   134 				.BYTE	'\	;ROW 2
    383	000153	   054 				.BYTE	',	;ROW 3
    384	000154	   045 				.BYTE	'%	;ROW 4
    385	000155	   137 				.BYTE	'_	;ROW 5
    386	000156	   076 				.BYTE	'>	;ROW 6
    387	000157	   077 				.BYTE	'?	;ROW 7
    388	000160				ZON6:			;ZONE 0-9
    389	000160	   132 				.BYTE	'Z	;NO ROW PUNCHES
    390	000161	   334 				.BYTE	ERRCHR	;ROW 1
    391	000162	   334 				.BYTE	ERRCHR	;ROW 2
    392	000163	   334 				.BYTE	ERRCHR	;ROW 3
    393	000164	   334 				.BYTE	ERRCHR	;ROW 4
    394	000165	   012 				.BYTE	LF	;ROW 5
    395	000166	   027 				.BYTE	ETB	;ROW 6
    396	000167	   033 				.BYTE	ESC	;ROW 7
    397
    398	000170				ZON3:			;ZONE 9-8
    399	000170	   334 				.BYTE	ERRCHR	;NO ROW PUNCHES
    400	000171	   334 				.BYTE	ERRCHR	;ROW 1
    401	000172	   334 				.BYTE	ERRCHR	;ROW 2
    402	000173	   334 				.BYTE	ERRCHR	;ROW 3
    403	000174	   024 				.BYTE	DC4	;ROW 4
    404	000175	   025 				.BYTE	NAK	;ROW 5
    405	000176	   334 				.BYTE	ERRCHR	;ROW 6
    406	000177	   032 				.BYTE	SUB	;ROW 7
    407
    408	000200				ZON23:			;ZONE 12-9-8
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 10-3
HOLLERITH - ASCII CONVERSION TABLES

    409	000200	   334 				.BYTE	ERRCHR	;NO ROW PUNCHES
    410	000201	   334 				.BYTE	ERRCHR	;ROW 1
    411	000202	   334 				.BYTE	ERRCHR	;ROW 2
    412	000203	   013 				.BYTE	VT	;ROW 3
    413	000204	   014 				.BYTE	FF	;ROW 4
    414	000205	   015 				.BYTE	CR	;ROW 5
    415	000206	   016 				.BYTE	SO	;ROW 6
    416	000207	   017 				.BYTE	SI	;ROW 7
    417
    418	000210				ZON13:			;ZONE 11-9-8
    419	000210	   030 				.BYTE	CAN	;NO ROW PUNCHES
    420	000211	   031 				.BYTE	EM	;ROW 1
    421	000212	   334 				.BYTE	ERRCHR	;ROW 2
    422	000213	   334 				.BYTE	ERRCHR	;ROW 3
    423	000214	   034 				.BYTE	FS	;ROW 4
    424	000215	   035 				.BYTE	GS	;ROW 5
    425	000216	   036 				.BYTE	RS	;ROW 6
    426	000217	   037 				.BYTE	US	;ROW 7
    427
    428	000220				ZON7:			;ZONE 0-9-8
    429	000220	   334 				.BYTE	ERRCHR	;NO ROW PUNCHES
    430	000221	   334 				.BYTE	ERRCHR	;ROW 1
    431	000222	   334 				.BYTE	ERRCHR	;ROW 2
    432	000223	   334 				.BYTE	ERRCHR	;ROW 3
    433	000224	   334 				.BYTE	ERRCHR	;ROW 4
    434	000225	   005 				.BYTE	ENQ	;ROW 5
    435	000226	   006 				.BYTE	ACK	;ROW 6
    436	000227	   007 				.BYTE	BEL	;ROW 7
    437
    438	000230				ZON25:			;ZONE 12-0-8
    439	000230	   150 				.BYTE	'h	;NO ROW PUNCHES
    440	000231	   334 				.BYTE	ERRCHR	;ROW 1
    441	000232	   334 				.BYTE	ERRCHR	;ROW 2
    442	000233	   334 				.BYTE	ERRCHR	;ROW 3
    443	000234	   334 				.BYTE	ERRCHR	;ROW 4
    444	000235	   334 				.BYTE	ERRCHR	;ROW 5
    445	000236	   334 				.BYTE	ERRCHR	;ROW 6
    446	000237	   334 				.BYTE	ERRCHR	;ROW 7
    447
    448	000240				ZON26:			;ZONE 12-0-9
    449	000240	   151 				.BYTE	'i	;NO ROW PUNCHES
    450	000241	   334 				.BYTE	ERRCHR	;ROW 1
    451	000242	   334 				.BYTE	ERRCHR	;ROW 2
    452	000243	   334 				.BYTE	ERRCHR	;ROW 3
    453	000244	   334 				.BYTE	ERRCHR	;ROW 4
    454	000245	   334 				.BYTE	ERRCHR	;ROW 5
    455	000246	   334 				.BYTE	ERRCHR	;ROW 6
    456	000247	   334 				.BYTE	ERRCHR	;ROW 7
    457
    458	000250				ZON31:			;ZONE 12-11-8
    459	000250	   161 				.BYTE	'q	;NO ROW PUNCHES
    460	000251	   334 				.BYTE	ERRCHR	;ROW 1
    461	000252	   334 				.BYTE	ERRCHR	;ROW 2
    462	000253	   334 				.BYTE	ERRCHR	;ROW 3
    463	000254	   334 				.BYTE	ERRCHR	;ROW 4
    464	000255	   334 				.BYTE	ERRCHR	;ROW 5
    465	000256	   334 				.BYTE	ERRCHR	;ROW 6
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 10-4
HOLLERITH - ASCII CONVERSION TABLES

    466	000257	   334 				.BYTE	ERRCHR	;ROW 7
    467
    468	000260				ZON32:			;ZONE 12-11-9
    469	000260	   162 				.BYTE	'r	;NO ROW PUNCHES
    470	000261	   334 				.BYTE	ERRCHR	;ROW 1
    471	000262	   334 				.BYTE	ERRCHR	;ROW 2
    472	000263	   334 				.BYTE	ERRCHR	;ROW 3
    473	000264	   334 				.BYTE	ERRCHR	;ROW 4
    474	000265	   334 				.BYTE	ERRCHR	;ROW 5
    475	000266	   334 				.BYTE	ERRCHR	;ROW 6
    476	000267	   334 				.BYTE	ERRCHR	;ROW 7
    477
    478	000270				ZON15:			;ZONE 11-0-8
    479	000270	   171 				.BYTE	'y	;NO ROW PUNCHES
    480	000271	   334 				.BYTE	ERRCHR	;ROW 1
    481	000272	   334 				.BYTE	ERRCHR	;ROW 2
    482	000273	   334 				.BYTE	ERRCHR	;ROW 3
    483	000274	   334 				.BYTE	ERRCHR	;ROW 4
    484	000275	   334 				.BYTE	ERRCHR	;ROW 5
    485	000276	   334 				.BYTE	ERRCHR	;ROW 6
    486	000277	   334 				.BYTE	ERRCHR	;ROW 7
    487
    488	000300				ZON16:			;ZONE 11-0-9
    489	000300	   172 				.BYTE	'z	;NO ROW PUNCHES
    490	000301	   334 				.BYTE	ERRCHR	;ROW 1
    491	000302	   334 				.BYTE	ERRCHR	;ROW 2
    492	000303	   334 				.BYTE	ERRCHR	;ROW 3
    493	000304	   334 				.BYTE	ERRCHR	;ROW 4
    494	000305	   334 				.BYTE	ERRCHR	;ROW 5
    495	000306	   334 				.BYTE	ERRCHR	;ROW 6
    496	000307	   334 				.BYTE	ERRCHR	;ROW 7
    497
    498	000310				ZON33:			;ZONE 12-11-9-8
    499	000310	   334 				.BYTE	ERRCHR	;NO ROW PUNCHES
    500	000311	   020 				.BYTE	DLE	;ROW 1
    501	000312	   334 				.BYTE	ERRCHR	;ROW 2
    502	000313	   334 				.BYTE	ERRCHR	;ROW 3
    503	000314	   334 				.BYTE	ERRCHR	;ROW 4
    504	000315	   334 				.BYTE	ERRCHR	;ROW 5
    505	000316	   334 				.BYTE	ERRCHR	;ROW 6
    506	000317	   334 				.BYTE	ERRCHR	;ROW 7
    507
    508	000320				ZON27:			;ZONE 12-0-9-8
    509	000320	   334 				.BYTE	ERRCHR	;NO ROW PUNCHES
    510	000321	   000 				.BYTE	NUL	;ROW 1
    511	000322	   334 				.BYTE	ERRCHR	;ROW 2
    512	000323	   334 				.BYTE	ERRCHR	;ROW 3
    513	000324	   334 				.BYTE	ERRCHR	;ROW 4
    514	000325	   334 				.BYTE	ERRCHR	;ROW 5
    515	000326	   334 				.BYTE	ERRCHR	;ROW 6
    516	000327	   334 				.BYTE	ERRCHR	;ROW 7
    517
    518						.EVEN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 11
HOLLERITH - ASCII CONVERSION TABLES

    520					; * ZONE INDEX TABLE
    521
    522	000330				ZONTAB:
    523		000000 				$$=0
    524		000040 				.REPT 32.
    525						.IRP	Z,\$$
    526						.IF DF,	ZON'Z
    527							.WORD	ZON'Z
    528						.IFF
    529							.WORD	0
    530						.ENDC
    531						.ENDM
    532						$$=$$+1
    533						.ENDR
    534
    535
    536
    537					; * ZTAB IS INDEXED BY Z1-Z7 CODE FOR PUNCH BIT.
    538					;   LO BYTE IS ZONE PUNCH MASK,  HI BYTE IS ZONE CODE SHIFTED FOR AUG COL
    539	000430	   000 	   000 		ZTAB:	.BYTE	0,0			; NO PUNCHES
    540	000432	   100 	   020 			.BYTE	100,1*20		; ZONE 1
    541	000434	   040 	   040 			.BYTE	40,2*20			; ZONE 2
    542	000436	   020 	   060 			.BYTE	20,3*20			; ZONE 3
    543	000440	   010 	   100 			.BYTE	10,4*20			; ZONE 4
    544	000442	   004 	   120 			.BYTE	4,5*20			; ZONE 5
    545	000444	   002 	   140 			.BYTE	2,6*20			; ZONE 6
    546	000446	   001 	   160 			.BYTE	1,7*20			; ZONE 7
    547						.EVEN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 12
DISPATCH TABLES

    549						.SBTTL	DISPATCH TABLES
    550
    551					;+
    552					; MCB INCOMING DISPATCH
    553					;-
    554
    555					; * MAIN ENTRY POINT DLC DISPATCH TABLE
    556	000450	000600'			$CRTB::	.WORD	CRNURD		; FC.XME - NURD MESSAGE ENTRY (TRANSMIT ENABLE)
    557	000452	005242'				.WORD	CRDLRE		; FC.RCE - RECEIVE (RESOURCE RETURN)
    558	000454	000472'				.WORD	CRASH		; FC.KIL - KILL
    559	000456	000474'				.WORD	CRCTL		; FC.CTL - CONTROL ENABLE
    560	000460	005042'				.WORD	CRTIM		; FC.TIM - DLC TIMEOUT
    561	000462	000472'				.WORD	CRASH		; FC.XCP - TRANSMIT COMPLETE
    562	000464	000472'				.WORD	CRASH		; FC.RCP - RECEIVE COMPLETE
    563	000466	000472'				.WORD	CRASH		; FC.KCP - KILL COMPLETE
    564	000470	000532'				.WORD	CRCCP		; FC.CCP - CONTROL COMPLETE
    565		000022 			 FNCOTR = . - $CRTB
    566
    567	000472	000004 			CRASH:	IOT			; DIE IGNOMINEOUSLY
    568
    569
    570					; * CONTROL ENABLE DISPATCH
    571
    572	000474				CRCTL:	CALLR	@1$(R3)
    573	000500	000472'			1$:	.WORD	CRASH		; FS.INI
    574	000502	005314'				.WORD	CTLSTR		; FS.STR(OPEN)
    575	000504	005544'				.WORD	CTLSTP		; FS.STP(CLOSE)
    576	000506	000472'				.WORD	CRASH		; FS.TRM
    577	000510	000472'				.WORD	CRASH
    578	000512	000472'				.WORD	CRASH		; FS.SET
    579	000514	000472'				.WORD	CRASH		; FS.GET
    580	000516	000472'				.WORD	CRASH		; NT$XON
    581	000520	000472'				.WORD	CRASH		; NT$XOF
    582	000522	000560'				.WORD	NRMACK		; FS.RNG NRM
    583	000524	000560'				.WORD	NRMACK		; FS.ENB NRM
    584	000526	000560'				.WORD	NRMACK		; FS.DIS NRM
    585	000530	000560'				.WORD	NRMACK		; FS.MSN NRM
    586
    587
    588	000532				CRCCP:	CALLR	@1$(R3)
    589	000536	000472'			1$:	.WORD	CRASH		; FS.INI
    590	000540	000472'				.WORD	CRASH		; FS.STR(OPEN)
    591	000542	000472'				.WORD	CRASH		; FS.STP(CLOSE)
    592	000544	000472'				.WORD	CRASH		; FS.TRM
    593	000546	000472'				.WORD	CRASH
    594	000550	000472'				.WORD	CRASH		; FS.SET
    595	000552	000472'				.WORD	CRASH		; FS.GET
    596	000554	006652'				.WORD	CRXON		; NT$XON
    597	000556	006640'				.WORD	CRXOF		; NT$XOF
    598
    599	000560				NRMACK: $TOBDM	CT,#1		; RETURN SUC
    600	000576					RETURN			; ...
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 13
NRD INTERPROCESS COMMUNICATION CONVENTIONS

    602						.SBTTL	NRD INTERPROCESS COMMUNICATION CONVENTIONS
    603
    604
    605					; NURD INTERFACE PROTOCOL
    606					;
    607					; USER INITIATED:
    608					;
    609					;		 FC.RCP,NT$DAT     FC.XME,NT$DAT
    610					;	USER/NSP ------------->NRD ------------->DLC       (NON INTERRUPT)
    611					;		<------------- NRD<------------- DLC
    612					;		 FC.RCE,NT$RTN     FC.XCP,NT$DAT
    613					;
    614					;
    615					;		 FC.RCP,NT$INT     FC.XME,NT$INT
    616					;	USER/NSP ------------->NRD ------------->DLC	   (INTERRUPT)
    617					;		<------------- NRD<------------- DLC
    618					;		 FC.RCE,NT$RTI     FC.XCP,NT$INT DLC
    619					;
    620					;
    621					; DLC INITIATED:
    622					;
    623					;		 FC.XME,NT$DAT     FC.RCP,NT$DAT
    624					;	USER/NSP<------------- NRD<------------- DLC	   (NON INTERRUPT)
    625					;		 ------------->NRD ------------->DLC
    626					;		 FC.XCP,NT$DAT     FC.RCE,NT$DAT
    627					;
    628					;		 FC.XME,NT$INT     FC.RCP,NT$INT
    629					;	USER/NSP<------------- NRD<------------- DLC	   (INTERRUPT)
    630					;		 ------------->NRD ------------->DLC
    631					;		 FC.XCP,NT$INT     FC.RCE,NT$INT
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 14
NURD MESSAGE DECODER

    633						.SBTTL	NURD MESSAGE DECODER
    634
    635					;+
    636					; DISPATCH BASED ON THE TYPE OF NURD MESSAGE CONNECTED
    637					; TO THE CURRENT CCB (CHAIN), WHICH CONSISTS OF BUT A SINGLE MSG
    638					;
    639					; INPUTS:	R4 - POINTS TO CCB (CHAIN)
    640					;		R5 - POINTS TO PROPER DEVICE LINE TABLE
    641					; OUTPUTS:	THIS DISPATCHES TO PROPER NURD MESSAGE HANDLER, OR RETURNS
    642					;		AN ERROR IF TYPE ILLEGAL OR OUT OF RANGE.
    643					;		REGISTERS ARE NOT PRESERVED.
    644					;		THE CALLED ROUTINE IS RESPONSIBLE FOR QUEUING
    645					;		MESSAGES TO BE RETURNED TO THE HIGHER LEVEC.
    646					;
    647					; MSG FORMAT:	<MSGTYPE><MSGFLGS><MSGTXT.....>
    648					;-
    649
    650	000600	032765 	000001 	000050 	CRNURD:	BIT	#CA.CLO,C.ASTS(R5)	; DEVICE CLOSED?
    651	000606	001037 				BNE	62$			; YES, HENCE INACCESSIBLE
    652	000610					MAP	C.BUF(R4)		; GET MAPPING
    653	000616	016400 	000016 			MOV	C.BUF+2(R4),R0		; POINT TO CCB DATA BUFFER
    654	000622	111001 				MOVB	(R0),R1			; GET NURD MESSAGE TYPE
    655	000624	042701 	177760 			BIC	#^C<NM.TYP>,R1		; ISOLATE JUST MESSAGE TYPE
    656	000630	020127 	000006 			CMP	R1,#NRDOTR		; TYPE OUT OF RANGE?
    657	000634	103402 				BLO	30$			; NO, OKAY TO DISPATCH
    658	000636	012701 	000006 			MOV	#NRDOTR,R1		; YES, SPECIFY ILLEGAL NURD HANDLER
    659	000642	006301 			30$:	ASL	R1			; GET WORD OFFSET
    660	000644					CALLR	@40$(R1)		; DISPATCH TO MESSAGE PROCESSOR
    661
    662	000650	000666'			40$:	.WORD	50$			; 0 - DATA MESSAGE
    663	000652	000666'				.WORD	50$			; 1 - ATTENTION (ILLEGAL IF REC'D)
    664	000654	000726'				.WORD	QTODLC			; 2 - FEATURES MESSAGE
    665	000656	003260'				.WORD	CONTRL			; 3 - CONTROL MESSAGE
    666	000660	000666'				.WORD	50$			; 4 - ALERT (ILLEGAL IF REC'D)
    667	000662	000666'				.WORD	50$			; 5 - CAPABILITIES (ILLEGAL IF REC'D)
    668		000006 			 NRDOTR = <.-40$>/2
    669	000664	000666'				.WORD	50$			; N - ILLEGAL NURD TYPE SPEC
    670										; STATE OF REGISTERS AT POINT OF CALL:
    671										;  R0 - POINTS TO NURD MESSAGE TYPE BYTE
    672										;  R1 - HAS DISPATCH INDEX
    673										;  R2, R3 - UNSPECIFIED
    674										;  R4, R5 - AS UNDER "INPUTS" ABOVE
    675										;  R0-R3 ARE AVAILABLE FOR USE BY
    676										;    CALLED ROUTINE WITHOUT RESTRICTION
    677
    678	000666				50$:	$TOBDM	XM,#LS.ILM		; ZING IT BACK
    679	000704					RETURN
    680	000706				62$:	$TOBDM	XM,#LS.ABO		; RETURN DATA MSG VIA $XMCMP
    681	000724					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 15
QUEUE UP INCOMING NURD DATA AND FEATURES

    683						.SBTTL	QUEUE UP INCOMING NURD DATA AND FEATURES
    684
    685					;+
    686					; QUEUE UP FOLLOWING NURD MSG TYPES:
    687					;	DATA
    688					;	FEATURES
    689					; R4/CCB TO QUEUE
    690					; R5/DLT
    691					;-
    692
    693	000726	032765 	000010 	000050 	QTODLC:	BIT	#CA.ABO,C.ASTS(R5)	; CHECK FOR ABORT STATE
    694	000734	001405 				BEQ	QDLC			; OK TO PROCEED
    695	000736	012764 	000100 	000012 		MOV	#CS.ABO,C.STS(R4)	; DROP DATA ON THE FLOOR
    696	000744					CALLR	NRDRET
    697
    698	000750	010403 			QDLC:	MOV	R4,R3			; COPY TOP CCB POINTER
    699	000752	011302 			10$:	MOV	(R3),R2			; FOLLOW CCB CHAIN
    700	000754	001402 				BEQ	20$			;   TO NULL LINK
    701	000756	010203 				MOV	R2,R3			;     TO GET FULL MSG
    702	000760	000774 				BR	10$			;
    703
    704	000762	010475 	000074 		20$:	MOV	R4,@C.DLCQ+2(R5)	; LINK CHAIN TO END OF CURRENT QUEUE
    705	000766	010365 	000074 			MOV	R3,C.DLCQ+2(R5)		; SET NEW END OF QUEUE
    706	000772	020465 	000072 			CMP	R4,C.DLCQ(R5)		; NEW CHAIN AT HEAD OF QUEUE?
    707	000776	001032 				BNE	60$			; NO, ROUTINES OF INTEREST ARE WORKING
    708	001000	122765 	000001 	000126 		CMPB	#DWAKS,C.DWAK(R5)	; YES - CHECK IF THIS IS DESIRED WAKE CONDITION
    709	001006	001002 				BNE	30$			; NO
    710	001010					CALLR	DFWAKE			; GO WAKE THE PROCESS
    711
    712	001014	010665 	000130 		30$:	MOV	SP,C.DFSP(R5)		; SET THE STACK ORIGIN FOR THIS PROCESS
    713	001020					CALL	GB			; EXTRACT MSG TYPE
    714	001024	010001 				MOV	R0,R1
    715	001026					CALL	GB			; EXTRACT MSG FLAGS
    716	001032	010065 	000076 			MOV	R0,C.MFLG(R5)
    717	001036	122701 	000003 			CMPB	#NM.CTL,R1		; DISTINGUISH CONTROL AND FEATURES
    718	001042	001003 				BNE	40$			; FEATURES
    719	001044					CALL	CONSYN			; NON-INTERRUPT CONTROL
    720	001050	000402 				BR	50$
    721
    722	001052				40$:	CALL	FEATRS			; FEATURES
    723	001056	016504 	000072 		50$:	MOV	C.DLCQ(R5),R4		; GET NEXT MSG
    724	001062	001354 				BNE	30$			; MORE
    725	001064				60$:	RETURN				; EXIT
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 16
DATA/FEATURES HYBER FUNCTION

    727						.SBTTL	DATA/FEATURES HYBER FUNCTION
    728
    729					;+
    730					; CALLED BY PROCESS TO WAIT FOR A NEW DAY. INTERRUPTS HAVE BEEN DISABLED.
    731					; C.DWAK HAS BEEN SET TO WAKE CONDITION, CONTEXT WILL NOW BE SAVED.
    732					;-
    733
    734	001066	010065 	000132 		DFSLEP:	MOV	R0,C.DTXT(R5)		; STORE THE REGISTERS 1ST
    735	001072	012700 	000134 			MOV	#C.DTXT+2,R0
    736	001076	060500 				ADD	R5,R0			; R0 -> R1 SLOT
    737	001100	010120 				MOV	R1,(R0)+
    738	001102	010220 				MOV	R2,(R0)+
    739	001104	010320 				MOV	R3,(R0)+
    740	001106	010420 				MOV	R4,(R0)+
    741	001110	105065 	000127 			CLRB	C.DTXL(R5)		; INIT THE COUNT
    742
    743	001114	122765 	000013 	000127 	10$:	CMPB	#DTXTSZ-5,C.DTXL(R5)	; CHECK INCIPIENT OVERFLOW
    744	001122	101001 				BHI	20$
    745	001124					CRASH				; PROGRAM BUG
    746	001126	012620 			20$:	MOV	(SP)+,(R0)+		; XFER NEXT STACK WORD
    747	001130	105265 	000127 			INCB	C.DTXL(R5)		; COUNT IT
    748	001134	026506 	000130 			CMP	C.DFSP(R5),SP		; CHECK ORIGIN
    749	001140	001365 				BNE	10$			; MORE
    750	001142	142765 	000200 	000126 		BICB	#200,C.DWAK(R5)		; ENABLE WAKE CONDITION
    751	001150					RETURN				; DONE - START THE DEVICE IF IT WAS GOING
    752										;  AND EXIT TO ORIGINAL CALLER
    753
    754					; * COME HERE WHEN WAKE CONDITION HAS BEEN MET, SP IS NEW STACK ORIGIN
    755	001152	105065 	000126 		DFWAKE:	CLRB	C.DWAK(R5)		; FLUSH THE WAKE CONDITION
    756	001156	005000 				CLR	R0
    757	001160	156500 	000127 			BISB	C.DTXL(R5),R0		; GET THE NO. OF WORDS TO RETURN TO STACK
    758	001164	006300 				ASL	R0
    759	001166	062700 	000144 			ADD	#C.DTXT+12,R0
    760	001172	060500 				ADD	R5,R0			; R0 -> 1ST WOD TO RETURN TO STACK
    761	001174	010665 	000130 			MOV	SP,C.DFSP(R5)		; SET THE NEW STACK ORIGIN
    762
    763	001200	014046 			10$:	MOV	-(R0),-(SP)		; XFER THE STACK CONTENTS
    764	001202	105365 	000127 			DECB	C.DTXL(R5)		; COUNT THEM
    765	001206	001374 				BNE	10$
    766
    767	001210	014004 				MOV	-(R0),R4		; RESTORE THE REGISTERS
    768	001212	014003 				MOV	-(R0),R3
    769	001214	014002 				MOV	-(R0),R2
    770	001216	014001 				MOV	-(R0),R1
    771	001220	014000 				MOV	-(R0),R0
    772	001222					RETURN				; RETURN TO ORIGINAL CALLER OF DFSLEP
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 17
GET AND PUT DATA BYTES

    774						.SBTTL	GET AND PUT DATA BYTES
    775
    776					;+
    777					; USED BY "DATA" AND BY "FEATRS".
    778					; A FEATRS MSG IS SHUFFLED THRU DDM (AS AN EMPTY BUFFER) SO THAT
    779					; IT IS RETURNED IN THE SAME SEQUENCE RELATIVE TO DATA THAT IT
    780					; WAS RECEIVED.
    781					;-
    782
    783	001224	005365 	000106 		GB:	DEC	C.DMBS(R5)		; DECREMENT COUNTER
    784	001230	002411 				BLT	5$			; BUFFER EMPTIED ALREADY
    785	001232					MAP	C.DMAD(R5)		; MAP IF NEED BE
    786	001240	005000 				CLR	R0
    787	001242	157500 	000104 			BISB	@C.DMAD+2(R5),R0	; GET BYTE FROM PHYSICAL BUFFER
    788	001246	005265 	000104 			INC	C.DMAD+2(R5)		; INCREMENT POINTER
    789	001252					RETURN
    790
    791	001254	005765 	000104 		5$:	TST	C.DMAD+2(R5)		; IS A BUFFER IN PROCESS?
    792	001260	001421 				BEQ	10$			; NO BUF IN USE
    793	001262	016504 	000072 			MOV	C.DLCQ(R5),R4		; CHECK FOR MSG CONTINUITY
    794	001266	032764 	000100 	000012 		BIT	#NT.EOM,C.STS(R4)
    795	001274	001403 				BEQ	9$
    796	001276	052765 	000004 	000050 		BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
    797	001304				9$:	CALL	GBDQ			; EMPTIED BUF ON TOP
    798	001310	032700 	000100 			BIT	#NT.EOM,R0		; CHECK STATUS OF MSG DEQUEUED
    799	001314	001403 				BEQ	10$
    800	001316	016506 	000130 			MOV	C.DFSP(R5),SP		; GET THE STACK ORIGIN BACK SO CAN QUIT
    801	001322					RETURN				; EXIT
    802
    803	001324	016504 	000072 		10$:	MOV	C.DLCQ(R5),R4		; IS THERE A QUEUED ENTRY?
    804	001330	001006 				BNE	15$			; YES, SET UP POINTER AND COUNTER
    805	001332					DFHYBER	DWAKS			; WAIT TIL NEXT SEGMENT ARRIVES
    806	001344	000767 				BR	10$
    807
    808	001346	016465 	000014 	000102 	15$:	MOV	C.BUF(R4),C.DMAD(R5)	; GET ADDRESS DOUBLEWORD AS PTR
    809	001354	016465 	000016 	000104 		MOV	C.BUF+2(R4),C.DMAD+2(R5)
    810	001362	016465 	000020 	000106 		MOV	C.CNT(R4),C.DMBS(R5)	; GET BUFFER COUNT AS SIZE COUNTER
    811	001370	000715 				BR	GB			; TRY AGAIN
    812
    813					; * EXTERNAL ENTRY TO FORCE DEQUEUE
    814	001372	005065 	000104 		GBDQ:	CLR	C.DMAD+2(R5)		; INDICATE "NO BUFFER IN USE"
    815	001376	005065 	000106 			CLR	C.DMBS(R5)
    816	001402					DEQ$	C.DLCQ			; DEQUEUE MSG JUST DONE
    817	001450					PUSH	C.STS(R4)		; SAVE MSG STAUS
    818	001454					CALL	NRDACK			; AND ACK IT
    819	001460					POP	R0			; RETURN MSG STATUS
    820	001462					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 18
NURD FEATURES MESSAGE HANDLERS

    822						.SBTTL	NURD FEATURES MESSAGE HANDLERS
    823
    824					;+
    825					; FEATURE MSG FORMAT:
    826					;  <SEQ NO.><NO. FEATURE SPECS><...FEATURE SPECS...>
    827					;
    828					; FEATURE SPEC FORMAT:
    829					;  <FEATURE ID><FEATURE FLAGS><CLASS><RESPONSE>[<FEATURE DATA>]
    830					;
    831					; FEATURE DATA FORMAT:
    832					;  <CNT><...DATA...>
    833					;
    834					; NOTE: INCOMING MSG HAS ONLY 1 FEATURE SPEC.
    835					; BUFFER HAS BEEN SET UP, AND NURD TYPE AND FLAGS BYTES(1ST & 2ND BYTES)
    836					; HAVE BEEN EXTRACTED.
    837					;
    838					;	R4/CCB AT TOP OF C.DLCQ
    839					;	R5/DLT
    840					;	KISAR6/ MAPPED TO DATA BUFFER
    841					;-
    842						.ENABL	LSB
    843
    844	001464	012700 	000002 		FEATRS:	MOV	#NM.FTR,R0		; BEGIN A REPLY
    845	001470					CALL	MB			; INSERT NURD MSG TYPE
    846	001474	005000 				CLR	R0
    847	001476					CALL	MB			; INSERT MSG FLAGS
    848	001502					CALL	GB			; GET SEQ NO.
    849	001506	110065 	000110 			MOVB	R0,C.DMSQ(R5)
    850	001512					CALL	MB			; SEND IT BACK
    851	001516					CALL	GB			; GET NO. FEATURE SPECS
    852	001522	005000 				CLR	R0			;  BUT IGNORE IT
    853	001524	110065 	000100 			MOVB	R0,C.NFSP(R5)		; SAVE IT FOR SOMTHING
    854	001530					CALL	MB			; STUFF IT IN REPLY
    855	001534					CALL	GB			; GET FEATURE ID
    856	001540	010002 				MOV	R0,R2
    857	001542					CALL	GB			; GET FEATURE FLAGS
    858	001546	010001 				MOV	R0,R1
    859	001550					CALL	GB			; GET CLASS
    860	001554	000301 				SWAB	R1
    861	001556	050001 				BIS	R0,R1			; R1/FLAGS,,CLASS
    862
    863	001560					CALL	GB			; READ THE RESPONSE FIELD AND IGNORE IT
    864
    865	001564	105065 	000077 			CLRB	C.CAPN(R5)		; INIT INDEX INTO CAPABILITIES LIST
    866	001570	122702 	000377 			CMPB	#FE.ALL,R2		; CHECK FOR ALLNESS
    867	001574	001036 				BNE	30$			; SINGLE FEATURE
    868	001576	005002 				CLR	R2			; INIT COMMON FID'S
    869	001600	116565 	000172 	000077 		MOVB	C.CFET(R5),C.CAPN(R5)	; GET COUNT OF COMMON ENTRIES
    870	001606	032701 	000400 			BIT	#NF.CMD*400,R1		; ALL FEATURES - CHECK READ/SET
    871	001612	001403 				BEQ	10$			; READ - CONTINUE
    872	001614	122701 	000002 			CMPB	#FC.SST,R1		; SET - CHECK SET TO STD
    873	001620	001071 				BNE	FERERR			; NO - ILLEGAL COMBINATION
    874
    875	001622	105202 			10$:	INCB	R2			; ADVANCE THRU LIST
    876	001624	100410 				BMI	15$			; GRUBBLING THRU DEVICE FEATURES
    877	001626	120265 	000077 			CMPB	R2,C.CAPN(R5)		; CHECK RANGE
    878	001632	101413 				BLOS	20$			; OK
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 18-1
NURD FEATURES MESSAGE HANDLERS

    879	001634	116565 	000204 	000077 		MOVB	C.DFET(R5),C.CAPN(R5)	; INIT FOR DEVICE SPECFIC FEATURES
    880	001642	012702 	000201 			MOV	#201,R2
    881	001646	010200 			15$:	MOV	R2,R0			; DEVICE FEATURE - HACK OFF SIGN
    882	001650	042700 	177600 			BIC	#^C177,R0
    883	001654	120065 	000077 			CMPB	R0,C.CAPN(R5)		; CHECK RANGE
    884	001660	101022 				BHI	70$			; DONE
    885	001662				20$:	CALL	FEFND			; LOOK IT UP
    886	001666	103004 				BCC	40$			; SUPPORTED FEATURE
    887	001670	000754 				BR	10$			; TRY NEXT ONE
    888
    889	001672				30$:	CALL	FEFND			; LOOK UP FEATURE
    890	001676	103431 				BCS	FERUSF			; UNSUPPORTED FEATURE
    891
    892									; * AT THIS POINT:
    893									;  R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
    894									;  R2 HAS THE FEATURE ID (BYTE)
    895									;  R3 POINTS TO THE FEATURE STATUS BYTE
    896									;  R5 STILL POINTS TO THE DEVICE LINE TBL
    897									;  C.DMSQ\SEQ NO.
    898									;  C.NFSP\NO. SPECS
    899
    900	001700	132713 	000040 		40$:	BITB	#FB.CP,(R3)		; CHECK FOR CHANGE PENDING
    901	001704	001042 				BNE	FERCPN			; CAN'T READ OR SET IF SO
    902	001706	032701 	000400 			BIT	#NF.CMD*400,R1		; FEATURE READ OR FEATURE SET?
    903	001712	001467 				BEQ	FREAD			; READ - GO PROCESS FEATURE READ
    904	001714					CALLR	FSET			; SET - GO PROCESS IN FEATURE SET
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 19
NURD FEATURES MESSAGE HANDLERS

    906	001720	105765 	000077 		FEACON:	TSTB	C.CAPN(R5)		; CHECK FOR ALLNESS
    907	001724	001336 				BNE	10$			; YES
    908
    909	001726	016504 	000114 		70$:	MOV	C.MSGQ(R5),R4		; GET BEG OF MSG
    910	001732					MAP	C.BUF(R4)
    911	001740	016400 	000016 			MOV	C.BUF+2(R4),R0		; GET THE PTR
    912	001744	116560 	000100 	000003 		MOVB	C.NFSP(R5),N.NSPC(R0)	; SET IN THE FINAL SPEC COUNT
    913	001752					CALL	GBDQ			; RETURN ORIGNAL MSG TO NRD
    914	001756					CALLR	MBSND			; SEND OFF COMPLETED MSG
    915
    916
    917	001762				FERUSF:	PUSH	#FR.USF
    918	001766	000421 				BR	200$
    919	001770				FERBCL:	PUSH	#FR.BCL
    920	001774	000416 				BR	200$
    921	001776				FERNST:	PUSH	#FR.NST
    922	002002	000413 				BR	200$
    923	002004				FERERR:	PUSH	#FR.ERR
    924	002010	000410 				BR	200$
    925	002012				FERCPN:	PUSH	#FR.CPN
    926	002016	000405 				BR	200$
    927	002020				FERNEB:	PUSH	#FR.NEB
    928	002024	000402 				BR	200$
    929	002026				FERDNP:	PUSH	#FR.DNP
    930	002032	010200 			200$:	MOV	R2,R0			; INSERT <FID><FLAGS><CLASS><ERROR>
    931	002034					CALL	MB			; INSERT FID
    932	002040	010100 				MOV	R1,R0
    933	002042	000300 				SWAB	R0
    934	002044					CALL	MB			; INSERT FLAGS
    935	002050	010100 				MOV	R1,R0
    936	002052					CALL	MB			; INSERT CLASS
    937	002056					POP	R0			; GET ERROR CODE
    938	002060					CALL	MB			; INSERT RESP
    939	002064	105265 	000100 			INCB	C.NFSP(R5)		; COUNT THE SPEC
    940	002070	000713 				BR	FEACON
    941
    942						.DSABL	LSB
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 20
FEATURES READ

    944						.SBTTL	FEATURES READ
    945
    946					;+
    947					; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
    948					; R2 HAS THE FEATURE ID (BYTE)
    949					; R3 POINTS TO THE FEATURE STATUS BYTE
    950					; R5 STILL POINTS TO THE DEVICE LINE TBL
    951					;
    952					; REPLY HAS BEEN FORMATTED THRU <NO. SPECS>
    953					; INSERT IN MSG:
    954					;	<FID><FLGS><CLASS><RESP><DATA>
    955					;-
    956
    957	002072	010200 			FREAD:	MOV	R2,R0
    958	002074					CALL	MB			; INSERT FID
    959	002100	010100 				MOV	R1,R0			; GET READ/SET BIT
    960	002102	000300 				SWAB	R0
    961	002104	042700 	177776 			BIC	#^C<NF.CMD>,R0		; NOW ISOLATED
    962	002110	132713 	000020 			BITB	#FB.SST,(R3)		; FEATURE SET TO STD?
    963	002114	001402 				BEQ	10$			; NO
    964	002116	052700 	000002 			BIS	#NF.STD,R0		; SET TO STD
    965	002122				10$:	CALL	MB			; INSERT FLAGS
    966	002126	105001 				CLRB	R1			; SET FEATURE CLASS IN R1 (LO)
    967	002130	132713 	000001 			BITB	#FB.CL1,(R3)		; CHECK CLASS 1
    968	002134	001402 				BEQ	20$			; TIS CLASS 0
    969	002136	152701 	000001 			BISB	#FC.CL1,R1		; SET CLASS 1
    970	002142	010100 			20$:	MOV	R1,R0
    971	002144					CALL	MB			; INSERT CLASS
    972
    973	002150	005000 				CLR	R0
    974	002152					CALL	MB			; RESP - NO ERRORS
    975
    976	002156	105701 				TSTB	R1			; CHECK CLASS FOR LENGTH OF DATA
    977	002160	001406 				BEQ	30$			; 1 BIT
    978	002162	132713 	000006 			BITB	#FB.WRD!FB.STR,(R3)	; MORE THAN 1 BYTE ?
    979	002166	001012 				BNE	60$			; YES
    980	002170	005200 				INC	R0			; COUNT = 1
    981	002172					CALL	MB			; INSERT COUNT
    982
    983	002176	116300 	000001 		30$:	MOVB	1(R3),R0		; COPY FEATURE TABLE DATA ENTRY
    984	002202				40$:	CALL	MB			; INSERT DATA
    985	002206	105265 	000100 		50$:	INCB	C.NFSP(R5)		; COUNT THE SPEC
    986	002212	000642 				BR	FEACON			; CONTINUE FEATURE HACKING
    987
    988					; * MULTIPLE BYTE VALUE
    989	002214	132713 	000004 		60$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
    990	002220	001015 				BNE	70$			; STRING
    991					; * WORD VALUE - F.FCV = DLT OFFSET TO WORD
    992	002222	012700 	000002 			MOV	#2,R0			; 2 BYTE VALUE
    993	002226					CALL	MB			; INSERT CNT
    994
    995	002232	005000 				CLR	R0
    996	002234	156300 	000001 			BISB	F.FCV(R3),R0
    997	002240	060500 				ADD	R5,R0
    998	002242	011000 				MOV	(R0),R0			; YES, READ THE SETTING FROM THE DLT
    999	002244					CALL	MB			; INSERT LO BYTE
   1000	002250	000300 				SWAB	R0
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 20-1
FEATURES READ

   1001	002252	000753 				BR	40$			; INSERT HI BYTE
   1002
   1003					; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   1004	002254	005203 			70$:	INC	R3			; THIS DEPENDS ON F.FCV=1
   1005	002256	112300 				MOVB	(R3)+,R0		; GET THE LENGTH
   1006	002260					CALL	MB			; INSERT IN MSG
   1007	002264	010004 				MOV	R0,R4			; SAVE IT
   1008	002266	112300 			80$:	MOVB	(R3)+,R0		; INSERT THE STRING IN MSG
   1009	002270					CALL	MB
   1010	002274	105304 				DECB	R4			; COUNT THE BYTE
   1011	002276	001373 				BNE	80$
   1012	002300	000742 				BR	50$
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 21
FEATURES SET

   1014						.SBTTL	FEATURES SET
   1015
   1016					;+
   1017					;  R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
   1018					;  R2 HAS THE FEATURE ID (BYTE)
   1019					;  R3 POINTS TO THE FEATURE STATUS BYTE
   1020					;  R5 STILL POINTS TO THE DEVICE LINE TBL
   1021					;
   1022					;  REPLY HAS BEEN FORMATTED THRU <NO. SPECS=1>
   1023					;-
   1024
   1025	002302	122701 	000002 		FSET:	CMPB	#FC.SST,R1		; CHECK STDNESS
   1026	002306	001502 				BEQ	40$			; STD RESULT
   1027	002310	132713 	000100 			BITB	#FB.CA,(R3)		; REAL SET - CHECK IF SETABLE
   1028	002314	001633 				BEQ	FERERR			; NO
   1029	002316	111300 				MOVB	(R3),R0			; FEATURE IS SETTABE
   1030	002320	074100 				XOR	R1,R0			; CHECK CLASS SPEC
   1031	002322	042700 	177776 			BIC	#^C<FB.CL1>,R0		; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
   1032	002326	001220 				BNE	FERBCL			; RESULT SHOULD BE 0
   1033	002330	122701 	000001 			CMPB	#FC.CL1,R1		; CHECK DATA CLASS
   1034	002334	001010 				BNE	10$			; CLASS 0
   1035	002336					CALL	GB			; CLASS 1 - FEATURE DEPENDENT DATA
   1036										; CHECK EXPLICITLY FOR ALL > 1
   1037	002342	132713 	000006 			BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE DATA
   1038	002346	001012 				BNE	30$			; GO DO IT
   1039										; ONLY ONE BYTE FEATURES LEFT
   1040	002350	122700 	000001 			CMPB	#1,R0			; SEE IF IT IS
   1041	002354	001213 				BNE	FERERR			; LOSER
   1042										; YES - GO SET THE FEATURE
   1043	002356				10$:	CALL	GB			; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
   1044	002362	110063 	000001 			MOVB	R0,1(R3)		; SET FEATURE CURRENT VALUE
   1045	002366	142713 	000020 		12$:	BICB	#FB.SST,(R3)		; NOT SET TO STD
   1046	002372	000637 				BR	FREAD			; NOW READ THE FEATURE
   1047
   1048					; * MULTIPLE BYTE VALUES
   1049	002374	132713 	000004 		30$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   1050	002400	001023 				BNE	35$			; STRING VALUE
   1051	002402	122700 	000002 			CMPB	#2,R0			; 2 BYTE LENGTH
   1052	002406	001025 				BNE	36$			; SCREWED IT UP
   1053	002410					CALL	GB			; GET THE PAGE LIMIT
   1054	002414	110065 	000112 			MOVB	R0,C.PBRC(R5)		; HIDE THE LO PART
   1055	002420					CALL	GB			; GET THE HI PART
   1056	002424	000300 				SWAB	R0
   1057	002426	156500 	000112 			BISB	C.PBRC(R5),R0		; R0/NEW WORD VALUE
   1058	002432	010046 				MOV	R0,-(SP)
   1059	002434	005000 				CLR	R0
   1060	002436	156300 	000001 			BISB	F.FCV(R3),R0
   1061	002442	060500 				ADD	R5,R0
   1062	002444	012610 				MOV	(SP)+,(R0)		; SET THE NEW VALUE IN WORD
   1063	002446	000747 				BR	12$
   1064
   1065					; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   1066	002450				35$:	PUSH	R3			; SAVE THE FEATURE BLOCK PTR
   1067	002452	005203 				INC	R3			; THIS DEPENDS ON F.FCV=1
   1068	002454	120023 				CMPB	R0,(R3)+		; CHECK THE LENGTH
   1069	002456	001403 				BEQ	37$			; OK
   1070	002460					POP	R3			; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 21-1
FEATURES SET

   1071	002462				36$:	CALLR	FERERR			; AND REPORT THE ERROR
   1072	002466				37$:	PUSH	R1			; SAVE THE VARIABLES
   1073	002470	010001 				MOV	R0,R1			; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
   1074	002472				38$:	CALL	GB			; XFER THE NEW VALUE TO THE CURRENT VALUE
   1075	002476	110023 				MOVB	R0,(R3)+		; STUFF THE BYTE
   1076	002500					SOB	R1,38$			; AND COUNT IT
   1077	002504					POP	<R1,R3>
   1078	002510					CALLR	FREAD			; NOW READ THE FEATURE
   1079
   1080	002514				40$:	CALL	SETSTD			; SET FEATURE TO STD
   1081	002520	103002 				BCC	45$
   1082	002522					CALLR	FERNST			; NO STD TO SET
   1083	002526				45$:	CALLR	FEACON			; DON'T READ IT
   1084
   1085
   1086					;  SET FEATURE TO ITS STANDARD VALUE
   1087					;  R3/PTR TO FEATURE BLOCK IN DLT
   1088					;  R5/PTR TO DLT
   1089	002532	132713 	000010 		SETSTD:	BITB	#FB.STE,(R3)		; SEE IF IT HAS ONE
   1090	002536	001002 				BNE	10$			; YES
   1091	002540	000261 				SEC				; NO STD TO SET
   1092	002542					RETURN
   1093	002544	132713 	000006 		10$:	BITB	#FB.WRD!FB.STR,(R3)	; CHECK MULTIPLE BYTE VALUES
   1094	002550	001006 				BNE	20$			; YES
   1095	002552	116363 	000002 	000001 		MOVB	F.FSV(R3),F.FCV(R3)	; SET CURRENT VALUE = STD VALUE
   1096	002560	152713 	000020 			BISB	#FB.SST,(R3)		; MARK FEATURE AS SET TO STD
   1097	002564	000415 				BR	30$
   1098
   1099					; * MULTIPLE BYTE VALUE
   1100	002566	132713 	000004 		20$:	BITB	#FB.STR,(R3)		; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
   1101	002572	001014 				BNE	40$			; STRING
   1102	002574					PUSH	R5			; WORD VALUE
   1103	002576	005046 				CLR	-(SP)
   1104	002600	116316 	000001 			MOVB	F.FCV(R3),(SP)
   1105	002604	062605 				ADD	(SP)+,R5		; R5 /PTR TO CURRENT VALUE
   1106	002606	116325 	000002 			MOVB	F.FSV(R3),(R5)+		; XFER LO BYTE
   1107	002612	116315 	000003 			MOVB	F.FSV+1(R3),(R5)	; XFER HI BYTE
   1108	002616					POP	R5
   1109	002620	000241 			30$:	CLC
   1110	002622					RETURN
   1111
   1112					; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
   1113					; * STD VALUE BEGINS AT F.FCV+1+(F.FCV)
   1114	002624				40$:	PUSH	<R0,R1,R3>
   1115	002632	005203 				INC	R3			; DEPENDS ON F.FCV=1
   1116	002634	005000 				CLR	R0
   1117	002636	152300 				BISB	(R3)+,R0		; GET THE COUNT
   1118	002640	010001 				MOV	R0,R1
   1119	002642	060301 				ADD	R3,R1			; R0/COUNT
   1120										; R1/SOURCE ADDRESS
   1121										; R3/DESTINATION ADDRESS
   1122	002644	112123 			45$:	MOVB	(R1)+,(R3)+		; XFER THE STD VALUE
   1123	002646					SOB	R0,45$			; COUNT IT
   1124	002652					POP	<R3,R1,R0>
   1125	002660	000241 				CLC
   1126	002662					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 22
NURD MESSAGE BUILDER

   1128						.SBTTL	NURD MESSAGE BUILDER
   1129
   1130					;  R0/BYTE TO STUFF IN BUFFER
   1131					;  R5/DLT
   1132
   1133	002664	005365 	000124 		MB:	DEC	C.MSGS(R5)		; COUNT IT
   1134	002670	002410 				BLT	20$			; BUFFER ALREADY FULL
   1135	002672					MAP	C.MSGA(R5)		; MAP TO BUFFER
   1136	002700	110075 	000122 			MOVB	R0,@C.MSGA+2(R5)	; INSERT CHAR
   1137	002704	005265 	000122 			INC	C.MSGA+2(R5)		; ADVANCE PTR
   1138	002710					RETURN
   1139
   1140	002712	005065 	000124 		20$:	CLR	C.MSGS(R5)		; RESET THE COUNT
   1141	002716				25$:	PUSH	R4
   1142	002720					CALL	GETMBF			; GET A BUFFER
   1143	002724	103431 				BCS	30$			; SCREW
   1144	002726	005064 	000012 			CLR	C.STS(R4)		; INIT THE STATUS
   1145	002732	016465 	000014 	000120 		MOV	C.BUF(R4),C.MSGA(R5)	; MAKE IT THE CURRENT BUFFER
   1146	002740	016465 	000016 	000122 		MOV	C.BUF+2(R4),C.MSGA+2(R5)
   1147	002746	016465 	000020 	000124 		MOV	C.CNT(R4),C.MSGS(R5)
   1148	002754					ENQ$	C.MSGQ			; ADD IT TO END OF LIST
   1149	003004					POP	R4
   1150	003006	000726 				BR	MB			; NOW STUFF THE CHAR
   1151
   1152	003010				30$:	POP	R4
   1153	003012					DFHYBER	DWAKT			; WAIT A SEC AND TRY AGAIN
   1154	003024	000734 				BR	25$
   1155
   1156
   1157					; * SEND A BUILT MESSAGE TO NURD
   1158	003026	016504 	000114 		MBSND:	MOV	C.MSGQ(R5),R4		; GET THE FIRST BUFFER IN MSG
   1159	003032	001456 				BEQ	20$			; NULL MSG
   1160	003034	052764 	000040 	000012 		BIS	#NT.BOM,C.STS(R4)	; MARK IT AS BEG OF MSG
   1161	003042	016504 	000116 			MOV	C.MSGQ+2(R5),R4		; GET THE LAST BUFFER IN MSG
   1162	003046	052764 	000100 	000012 		BIS	#NT.EOM,C.STS(R4)	; MARK IT AS THE END OF MSG
   1163	003054	166564 	000124 	000020 		SUB	C.MSGS(R5),C.CNT(R4)	; SET LAST BUFFER COUNT TO CORRECT AMOUNT
   1164
   1165	003062				10$:	DEQ$	C.MSGQ,20$		; DEQUEUE AND SEND ALL  BUFFERS
   1166	003136	112764 	000002 	000011 		MOVB	#NT$DAT,C.MOD(R4)	; ADDRESS IT PROPERLY
   1167	003144					$TOBDM	RC,C.STS(R4)		; C.STS ALREADY CORRECT
   1168	003162	005265 	000056 			INC	C.IOCN(R5)		; COUNT THE IO
   1169	003166	000735 				BR	10$
   1170
   1171	003170	005065 	000124 		20$:	CLR	C.MSGS(R5)		; CLEAN UP DEBRIS
   1172	003174					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 23
FEATURE FINDER

   1174						.SBTTL	FEATURE FINDER
   1175
   1176					;+
   1177					; FEFND LOOKS FOR A FEATURE WITH FID IN R2
   1178					; AND RETURNS PTR TO FEATURE BLOCK IN R3 IF SUCCESSFUL
   1179					; NORMAL CARRY FLAG CONDITION FOR SUCCESS OR FAILURE
   1180					;-
   1181
   1182	003176	012703 	000172 		FEFND:	MOV	#C.CFET,R3		; TRY COMMON FEATURE 1ST
   1183	003202					PUSH	R2			; SAVE FID CAUSE IT WILL BE MANGLED
   1184	003204	105702 				TSTB	R2			; CHECK IF DEVICE SPECIFIC FTR
   1185	003206	100004 				BPL	10$			; COMMON, SKIP
   1186	003210	012703 	000204 			MOV	#C.DFET,R3		; DEVICE SPECIFIC, GET POINTER
   1187	003214	042702 	177600 			BIC	#177600,R2		; TRUNCATE TO JUST OFFSET ABOVE 128
   1188	003220	001414 			10$:	BEQ	20$			; ZERO IS AN ILLEGAL FEATURE CODE
   1189	003222	060503 				ADD	R5,R3			; R3 -> FEATURE LIST IN DLT
   1190	003224	020213 				CMP	R2,(R3)			; CHECK ON ID RANGE
   1191	003226	103011 				BHIS	20$			; SKIP IF OUT OF RANGE
   1192										; R3 IS POINTING TO THE BASE OF THE
   1193										;   FEATURES LIST, WHICH HOLDS THE HIGHEST
   1194										;  STORED FEATURE CODE
   1195	003230	060203 				ADD	R2,R3			; ADD THE FID TO POINT TO ADDRESS OF FEATURE BLOCK
   1196	003232	111303 				MOVB	(R3),R3			; LIST ENTRY IS DLT OFFSET TO FEATURE BLOCK
   1197	003234	001406 				BEQ	20$			; UNSUPPORTED FEATURE
   1198	003236	042703 	177400 			BIC	#^C377,R3		; FLUSH SIGN EXTENSION
   1199	003242	060503 				ADD	R5,R3			; R3 -> FEATURE BLOCK
   1200	003244					POP	R2
   1201	003246	000241 				CLC
   1202	003250					RETURN
   1203
   1204	003252				20$:	POP	R2			; UNSUPPORTED FEATURE
   1205	003254	000261 				SEC
   1206	003256					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 24
NURD CONTROL MESSAGE HANDLER

   1208						.SBTTL	NURD CONTROL MESSAGE HANDLER
   1209
   1210					;+
   1211					; THIS ROUTINE IS CALLED FROM CRNURD - REFER TO THE CALLING
   1212					; POINT IN THAT ROUTINE FOR THE REQUIRED REGISTER SETUP
   1213					;
   1214					; R0/BUFFER PTR: ->NURD MSG TYPE
   1215					; R4/CCB
   1216					; R5/DLT
   1217					; KISAR6/MAPPED TO BUFFER
   1218					;
   1219					; CONTROL MSG FORMAT:	<SEQ NO.><COMMAND><RESULT>
   1220					;-
   1221
   1222	003260	122764 	000004 	000011 	CONTRL:	CMPB	#NT$INT,C.MOD(R4)	; CHECK FOR INTERRUPT MSG
   1223	003266	001402 				BEQ	CONINT			; THEY ARE PROCESSED NOW
   1224	003270					CALLR	QDLC			; OTHERS ARE SYNCH'D WITH DATA STREAM
   1225
   1226	003274	022764 	000004 	000020 	CONINT:	CMP	#N.CCMD+1,C.CNT(R4)	; CHECK TO SEE IF ENOUGH SENT
   1227	003302	003123 				BGT	BADCON			; NOT EVEN 4 LOUSY BYTES!
   1228	003304	116001 	000003 			MOVB	N.CCMD(R0),R1		; GET CONTROL COMMAND BYTE
   1229	003310	003520 				BLE	BADCON			; SKIP OUT ON ILLEGAL CODE
   1230	003312	022701 	000012 			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   1231	003316	101515 				BLOS	BADCON			; OUT OF RANGE, SKIP OUT
   1232	003320	006301 				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   1233										; DO THE CONTROL FUNCTION IMMEDIATELY
   1234										;   AND WORRY ABOUT RESPONSE LATER
   1235	003322					ENQ$	C.CMSQ			; QUEUE THE MSG CCB TIL RESOURCES ARE CHECKED
   1236	003352					CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   1237										;   CALLABLE ROUTINES:
   1238										; 	ABRTEF - INTERRUPT
   1239										; 	ABRTAL - INTERRUPT
   1240										; 	ABRTCL
   1241										; 	SNDSTS - SPECIAL RESULT
   1242										; 	DUMP
   1243										; 	PAUSE - INTERRUPT
   1244										; 	RESUME - INTERRUPT
   1245										; 	SNDCAP - SPECIAL RESULT
   1246										; RETURN WITH R0/RESULT CODE
   1247
   1248					; * RESOURCE ERROR RETRY ENTRY
   1249	003356				RECON:	CALL	GETMBF			; GET A RESPONSE BUFFER
   1250	003362	103470 				BCS	100$			; SCREW
   1251	003364					PUSH	R4			; SAVE THE RESPONSE CCB
   1252	003366					DEQ$	C.CMSQ			; GET THE MSG CCB BACK
   1253	003434					MAP	C.BUF(R4)		; R0/RESULT
   1254	003442	016401 	000016 			MOV	C.BUF+2(R4),R1
   1255	003446	116102 	000003 			MOVB	N.CCMD(R1),R2		; R2/COMMAND
   1256	003452	116101 	000002 			MOVB	N.CSEQ(R1),R1		; R1/SEQ NO. OF CONTROL MSG
   1257	003456					CALL	NRDACK			; ACK THE CONTROL MSG
   1258
   1259	003462					POP	R4			; GET THE RESPONSE CCB BACK
   1260	003464					MAP	C.BUF(R4)		; MAP TO THE BUFFER
   1261	003472	016403 	000016 			MOV	C.BUF+2(R4),R3		; GET BUF PTR
   1262	003476	112723 	000003 			MOVB	#NM.CTL,(R3)+		; FORMAT A NURD CONTROL MSG
   1263	003502	105023 				CLRB	(R3)+			; NO MSG FLAGS
   1264	003504	110123 				MOVB	R1,(R3)+		; SEQ NO.
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 24-1
NURD CONTROL MESSAGE HANDLER

   1265	003506	110223 				MOVB	R2,(R3)+		; COMMAND
   1266	003510	110013 				MOVB	R0,(R3)			; RESULT
   1267	003512	012764 	000005 	000020 		MOV	#N.CRES+1,C.CNT(R4)	; SET THE BUFFER COUNT
   1268	003520					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND IT!
   1269	003536	005265 	000056 			INC	C.IOCN(R5)		; COUNT THE IO
   1270	003542					RETURN
   1271
   1272	003544	105265 	000066 		100$:	INCB	C.RECO(R5)		; SET THE CONTROL RESOURCE ERR FLAG
   1273	003550					RETURN
   1274
   1275	003552	012764 	100202 	000012 	BADCON:	MOV	#LS.REJ,C.STS(R4)	; REJECT(?) THIS ONE
   1276	003560					CALL	NRDRET			; ACK THE CRUFTY MSG
   1277	003564	052765 	000004 	000050 		BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
   1278	003572					RETURN
   1279
   1280					; * THE DISPATCH TABLE
   1281	003574	003552'			CTLDSP:	.WORD	BADCON		;  0 - CODE ZERO IS RESERVED
   1282	003576	004474'				.WORD	ABRTEF		;  1 - ABORT TO END OF FILE
   1283	003600	004506'				.WORD	ABRTAL		;  2 - ABORT ALL
   1284	003602	004554'				.WORD	ABRTCL		;  3 - ABORT CLEAR
   1285	003604	003774'				.WORD	SNDSTS		;  4 - STATUS REQUESTED, SEND ATTENTION
   1286	003606	004334'				.WORD	DUMP		;  5 - DUMP OUTPUT BUFFERS
   1287	003610	004356'				.WORD	PAUSE		;  6 - PAUSE
   1288	003612	004406'				.WORD	RESUME		;  7 - RESUME FROM ERROR OR PAUSE
   1289	003614	003552'				.WORD	BADCON		;  8 - UNDEFINED
   1290	003616	004604'				.WORD	CAPREQ		;  9 - SEND CAPABILITIES MESSAGE
   1291		000012 			CTLOTR = <. - CTLDSP>/2
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 25
NON-INTERRUPT CONTROL MESSAGE PROCESSING

   1293						.SBTTL	NON-INTERRUPT CONTROL MESSAGE PROCESSING
   1294
   1295					;  CONSYN CALLED FROM QTODLC, PROCESS A NON-INTERRUPT CONTROL MESSAGE
   1296
   1297	003620				CONSYN:	CALL	GB			; GET SEQ NO.
   1298	003624	110065 	000110 			MOVB	R0,C.DMSQ(R5)		; SAVE IT FOR RESPONSE
   1299	003630					CALL	GB			; GET COMMAND
   1300	003634	010001 				MOV	R0,R1
   1301	003636	003450 				BLE	50$			; SKIP OUT ON ILLEGAL CODE
   1302	003640	022701 	000012 			CMP	#CTLOTR,R1		; CHECK RANGE OF COMMAND
   1303	003644	101445 				BLOS	50$			; OUT OF RANGE, SKIP OUT
   1304	003646					PUSH	R1			; SAVE COMMAND CODE FOR RESPONSE
   1305	003650	006301 				ASL	R1			; IN RANGE, GET AS WORD OFFSET
   1306										; DO THE CONTROL FUNCTION IMMEDIATELY
   1307										;   AND WORRY ABOUT RESPONSE LATER
   1308	003652					CALL	@CTLDSP(R1)		; EXECUTE DETAILED CONTROL ROUTINE
   1309										;   CALLABLE ROUTINES:
   1310										; 	ABRTEF - INTERRUPT
   1311										; 	ABRTAL - INTERRUPT
   1312										; 	ABRTCL
   1313										; 	SNDSTS - SPECIAL RESULT
   1314										; 	DUMP
   1315										; 	PAUSE - INTERRUPT
   1316										; 	RESUME - INTERRUPT
   1317										; 	SNDCAP - SPECIAL RESULT
   1318										; RETURN WITH R0/RESULT CODE
   1319	003656					POP	R1			; GET COMMAND CODE BACK
   1320	003660					PUSH	R0			; SAVE RESPONSE CODE
   1321	003662					CALL	GBDQ			; ACK THE MSG
   1322	003666	012700 	000003 			MOV	#NM.CTL,R0		; CONSTRUCT A CONTROL MSG
   1323	003672					CALL	MB			; CONTROL CODE
   1324	003676	005000 				CLR	R0
   1325	003700					CALL	MB			; NULL MSG FLAGS
   1326	003704	116500 	000110 			MOVB	C.DMSQ(R5),R0
   1327	003710					CALL	MB			; SEQ NO. OF ORIGINAL COMMAND
   1328	003714	010100 				MOV	R1,R0
   1329	003716					CALL	MB			; COMMAND
   1330	003722					POP	R0
   1331	003724					CALL	MB			; RESPONSE CODE
   1332	003730					CALL	MBSND			; SEND THE RESPONSE
   1333	003734	105765 	000067 			TSTB	C.RATT(R5)		; CHECK FOR OTHER MESSAGES TO GOE OUT
   1334	003740	001402 				BEQ	20$			; NO ATTENTION MSGS
   1335	003742					CALL	SNDATT			; PENDING ATTENTION MSG
   1336
   1337	003746	105765 	000070 		20$:	TSTB	C.CAPP(R5)		; TRY CAPABILITIES MSG
   1338	003752	001407 				BEQ	60$
   1339	003754					CALLR	SNDCAP			; PENDING CAPABILITIES MSG
   1340
   1341	003760	052765 	000004 	000050 	50$:	BIS	#CA.ADN,C.ASTS(R5)	; PAUSE AND COMPLAIN
   1342	003766					CALLR	GBDQ			; ACK THE MSG AND WAIT FOR DEATH
   1343	003772				60$:	RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 26
CONTROL - REQUEST STATUS

   1345						.SBTTL	CONTROL - REQUEST STATUS
   1346
   1347					; * ENTRY FROM CONTRL (ATTENTION REQUESTED)
   1348	003774	005000 			SNDSTS:	CLR	R0			; SET RESULT(NR.ATT) FOR CNTROL RESPONSE
   1349	003776	105765 	000067 			TSTB	C.RATT(R5)		; CHECK ATTENTION ALREADY PENDING
   1350	004002	001003 				BNE	10$			; DON'T MUNG ORIGNAL REASON
   1351	004004	112765 	000003 	000067 		MOVB	#N.ARQS,C.RATT(R5)	; SET ATTENTION PENDING FLAG(REASON = REQUESTED)
   1352	004012				10$:	RETURN
   1353
   1354
   1355						.SBTTL	SEND ATTENTION MESSAGE
   1356
   1357					;+
   1358					;  THIS ROUTINE ALLOCATES AN SDB AND BUILDS AN ATTENTION MESSAGE USING
   1359					;  THE REASON CODE FOUND IN C.RATT OF THE DLT.  IF FOR SOME REASON
   1360					;  (LIKE NO CCB'S) THE MESSAGE CANNOT BE BUILT, THE RATT CODE STAYS
   1361					;  AROUND FOR THE NEXT ATTEMPT.
   1362					;
   1363					;  FORMAT: <1><0><LAST SEQ #><RSN CODE><FLAGS: 1-3 BYTES><CARD COUNT: 2 BYTES>
   1364					;-
   1365
   1366	004014				SNDATT:	PUSH	<R0,R1,R2,R3,R4>	; MAGNANIMOUSLY PRESERVE THE REGISTERS
   1367	004026	116502 	000067 			MOVB	C.RATT(R5),R2		; GET EXCUSE CODE FOR ATTENTION MSG
   1368	004032	001532 				BEQ	110$			; NO ATTENTION IS PENDING, LEAVE
   1369
   1370					; * BUILD AND SEND AN ATTENTION MESSAGE
   1371	004034					CALL	GETMBF			; GET A MESSAGE BUFFER
   1372	004040	103527 				BCS	110$			; FAILED, EXIT - WE'LL BE BACK
   1373	004042	016401 	000016 			MOV	C.BUF+2(R4),R1		; GET POINTER TO START OF BUFFER
   1374	004046	112721 	000001 			MOVB	#NM.ATT,(R1)+		; LOAD MSG TYPE TO BUFFER
   1375	004052	105021 				CLRB	(R1)+			; CLEAR NURD MSG FLGS
   1376	004054	116521 	000052 			MOVB	C.CDCT(R5),(R1)+	; STORE LAST GOOD SEQ NUMBER IN ATTENTION
   1377	004060	110221 				MOVB	R2,(R1)+		; LOAD ATTENTION CODE
   1378										; BUILD FLAGS FIELD
   1379	004062	005002 				CLR	R2			; CLEAR FLAGS ACCUMULATOR
   1380	004064	016500 	000050 			MOV	C.ASTS(R5),R0		; GET DEVICE STATUS
   1381	004070	032700 	000604 			BIT	#CA.ADN!CA.MOT!CA.TER,R0 ; FATAL ERRORS ?
   1382	004074	001402 				BEQ	10$
   1383	004076	052702 	000001 			BIS	#NA.FAT,R2		; SOME FATAL ERROR - USUALLY USER'S
   1384
   1385	004102	032700 	001000 		10$:	BIT	#CA.OFL,R0		; READER OFFLINE ?
   1386	004106	001402 				BEQ	11$			; NO
   1387	004110	052702 	000002 			BIS	#NA.OFL,R2		; YES, NOTE OFFLINE
   1388
   1389	004114	032700 	000002 		11$:	BIT	#CA.PAU,R0		; PAUSED?
   1390	004120	001402 				BEQ	12$			; NO
   1391	004122	052702 	000004 			BIS	#NA.PAU,R2		; YES
   1392
   1393	004126	032700 	000100 		12$:	BIT	#CA.HOP,R0		; HOPPER EMPTY ?
   1394	004132	001402 				BEQ	20$
   1395	004134	052702 	000010 			BIS	#NA.OMD,R2		; MAYBE - SETS NA.OUF ALSO
   1396
   1397	004140	052702 	000200 		20$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
   1398	004144	110221 				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 1 FLAGS
   1399	004146	005002 				CLR	R2			; CLEAR FOR BYTE 2 FLAGS
   1400	004150	032700 	000100 			BIT	#CA.HOP,R0		; OUTPUT HOPPER FULL ?
   1401	004154	001402 				BEQ	21$
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 26-1
SEND ATTENTION MESSAGE

   1402	004156	052702 	000001 			BIS	#NA.OUF,R2		; MAYBE
   1403
   1404	004162	032700 	004000 		21$:	BIT	#CA.TMO,R0		; HUNG?
   1405	004166	001402 				BEQ	22$			; NO
   1406	004170	052702 	000004 			BIS	#NA.DTO,R2		; YES
   1407
   1408	004174	032700 	000200 		22$:	BIT	#CA.MOT,R0		; PICK FAILURE ?
   1409	004200	001402 				BEQ	30$
   1410	004202	052702 	000020 			BIS	#NA.PF,R2		; MAYBE
   1411
   1412	004206	052702 	000200 		30$:	BIS	#200,R2			; TENTATIVELY SET EXTEND FLAG
   1413	004212	110221 				MOVB	R2,(R1)+		; THAT'S IT FOR BYTE 2
   1414	004214	005002 				CLR	R2			; CLEAR FOR BYTE 3 FLAGS
   1415	004216	032700 	002000 			BIT	#CA.IVP,R0		; INVALID PUNCH ?
   1416	004222	001402 				BEQ	40$
   1417	004224	052702 	000001 			BIS	#NA.IVP,R2		; YES
   1418
   1419	004230	110211 			40$:	MOVB	R2,(R1)			; THAT'S IT FOR BYTE 3 FLAGS
   1420	004232	001005 				BNE	50$			; 3 BYTE FEILD
   1421	004234	142741 	000200 			BICB	#200,-(R1)		; NOT MORE THAN 2 BYTES
   1422	004240	001002 				BNE	50$			; 2 BYTER
   1423	004242	142741 	000200 			BICB	#200,-(R1)		; ONLY 1 BYTE
   1424
   1425	004246	005201 			50$:	INC	R1			; ADVANCE R1 TO NEXT AVAILABLE BYTE
   1426	004250	016503 	000052 			MOV	C.CDCT(R5),R3		; GET CARD COUNT ACCUMULATOR
   1427	004254	110321 				MOVB	R3,(R1)+		; STORE LOW BYTE OF COUNT
   1428	004256	000303 				SWAB	R3			; GET HIGH BYTE
   1429	004260	110321 				MOVB	R3,(R1)+		; STORE IT TOO
   1430	004262	166401 	000016 			SUB	C.BUF+2(R4),R1		; COMPUTE MSG SIZE
   1431	004266	010164 	000020 			MOV	R1,C.CNT(R4)		; STUFF IT INTO CCB
   1432										; READY TO GO
   1433	004272					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND UP ATTENTION MSG FROM HERE
   1434	004310	005265 	000056 			INC	C.IOCN(R5)		; COUNT THE IO
   1435	004314	105065 	000067 			CLRB	C.RATT(R5)		; CLEAR PENDING REQUEST FOR ATTENTION
   1436	004320				110$:	POP	<R4,R3,R2,R1,R0>	; RESTORE REGS
   1437	004332					RETURN				; EXIT SEND ATTENTION
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 27
CONTROL - DUMP OUTPUT BUFFERS

   1439						.SBTTL	CONTROL - DUMP OUTPUT BUFFERS
   1440
   1441	004334	005000 			DUMP:	CLR	R0			; SET RESPONSE (NR.DMP)
   1442	004336	105765 	000067 			TSTB	C.RATT(R5)		; PENDING ATTENTION?
   1443	004342	001004 				BNE	10$			; YES
   1444	004344	105765 	000070 			TSTB	C.CAPP(R5)		; PENDING CAPABILITIES?
   1445	004350	001001 				BNE	10$			; YES
   1446	004352	005200 				INC	R0			; NOTHING TO DUMP
   1447	004354				10$:	RETURN
   1448
   1449
   1450
   1451						.SBTTL	CONTROL - PAUSE
   1452
   1453	004356	005000 			PAUSE:	CLR	R0			; SET RESPONSE (NR.DPS)
   1454	004360	032765 	000006 	000050 		BIT	#CA.PAU!CA.ADN,C.ASTS(R5) ; ALREADY PAUSED/PAUSING?
   1455	004366	001004 				BNE	20$			; YES
   1456	004370	052765 	000002 	000050 	10$:	BIS	#CA.PAU,C.ASTS(R5)	; PAUSE NO MATTER WHAT
   1457	004376					RETURN
   1458
   1459	004400	012700 	000001 		20$:	MOV	#NR.PAU,R0		; ALREADY PAUSED
   1460	004404					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 28
CONTROL - RESUME OUTPUT

   1462						.SBTTL	CONTROL - RESUME OUTPUT
   1463
   1464	004406	005000 			RESUME:	CLR	R0			; SET RESPONSE(NR.RES)
   1465	004410	032765 	004006 	000050 		BIT	#CA.PAU!CA.ADN!CA.TMO,C.ASTS(R5); CHECK PAUSEDNESS
   1466	004416	001414 				BEQ	20$			; NOTHING HUNG
   1467	004420	032765 	000040 	000050 		BIT	#CA.EOF,C.ASTS(R5)	; EOF ?
   1468	004426	001402 				BEQ	10$
   1469	004430	005065 	000052 			CLR	C.CDCT(R5)		; IF SO, CLEAR CARD COUNT FOR NEW FILE
   1470
   1471					; * FLUSH PAUSING CONDITIONS
   1472	004434	042765 	004776 	000050 	10$:	BIC	#CA.PAU!CA.ADN!CA.TMO!CA.ERR!CA.EOF!CA.ABO!CA.ABE,C.ASTS(R5)
   1473	004442					CALL	STRTCR			; TURN ON DEVICE AGAIN
   1474	004446	000402 				BR	30$
   1475
   1476	004450	012700 	000001 		20$:	MOV	#NR.NPS,R0		; NOT PAUSED
   1477	004454	122765 	000004 	000126 	30$:	CMPB	#DWAKR,C.DWAK(R5)	; CHECK FOR DESIRED WAKE CONDITION
   1478	004462	001003 				BNE	40$			; NO
   1479	004464	112765 	000003 	000126 		MOVB	#DWAKT,C.DWAK(R5)	; MAP TO A CLOCK TOCK WAKE
   1480										; THIS ALLOWS CONTROL PROCESS TO PROCEED
   1481	004472				40$:	RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 29
CONTROL - ABORT COMMAND SET

   1483						.SBTTL	CONTROL - ABORT COMMAND SET
   1484
   1485					;  ABRTEF(NC.AUE) IS AN INTERRUPT MSG
   1486					;  ABRTAL(NC.AUC) IS AN INTRRUPT MSG
   1487
   1488					; * ABORT TO END OF FILE
   1489	004474	052765 	000020 	000050 	ABRTEF:	BIS	#CA.ABE,C.ASTS(R5)	; SET THE FLAG FOR READER
   1490	004502	005000 				CLR	R0			; SET NR.ABE
   1491	004504					RETURN
   1492
   1493					; * ABORT UNTIL CLEAR RECEIVED
   1494	004506				ABRTAL:	CALL	STOPCR			; FLUSH THE DEVICE
   1495	004512	052765 	000010 	000050 		BIS	#CA.ABO,C.ASTS(R5)	; NOTE ABORTING
   1496	004520	005000 				CLR	R0			; SET NR.ABS
   1497	004522	016501 	000044 			MOV	C.DDMQ(R5),R1		; CHECK ALL QUEUES TO SEE IF
   1498	004526	056501 	000072 			BIS	C.DLCQ(R5),R1		;  ANYTHING HAPPENING
   1499	004532	056501 	000114 			BIS	C.MSGQ(R5),R1
   1500	004536	156501 	000126 			BISB	C.DWAK(R5),R1		; CHECK SUSPENDED PROCESSES
   1501	004542	001002 				BNE	10$			; NR.ABS
   1502	004544	012700 	000001 			MOV	#NR.NAB,R0		; NOTHING TO ABORT
   1503	004550				10$:	CALLR	FLUSHQ			; CLEAR THE WORLD
   1504
   1505					; * CLEAR ABORT STATUS
   1506	004554	005000 			ABRTCL:	CLR	R0			; SET RESPONSE CODE
   1507	004556	032765 	000030 	000050 		BIT	#CA.ABE!CA.ABO,C.ASTS(R5) ; ABORT SET?
   1508	004564	001404 				BEQ	10$			; NO
   1509	004566	042765 	000030 	000050 		BIC	#CA.ABE!CA.ABO,C.ASTS(R5) ; CLEAR ABORTING
   1510	004574					RETURN
   1511
   1512	004576	012700 	000001 		10$:	MOV	#NR.ACN,R0		; NOT IN ABORT STATE
   1513	004602					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 30
CONTROL - REQUEST CAPABILITIES

   1515						.SBTTL	CONTROL - REQUEST CAPABILITIES
   1516
   1517					; * CONTROL FCN TO SET UP CAPABILITIES MSG
   1518	004604	005000 			CAPREQ:	CLR	R0			; SET RESPONSE CODE
   1519	004606	105265 	000070 			INCB	C.CAPP(R5)		; SET CAPABILITIES PENDING FLAG
   1520	004612					RETURN
   1521
   1522
   1523
   1524						.SBTTL	SEND CAPABILITIES MESSAGE
   1525
   1526					;  TRY TO SEND A CAPABILITIES MESSAGE
   1527					;  MESSAGE FORMAT: <NO. FEATURES><...FID'S...>
   1528
   1529	004614				SNDCAP:	CALL	GETMBF			; GET A MSG BUFFER
   1530	004620	103457 				BCS	100$
   1531	004622	016403 	000016 			MOV	C.BUF+2(R4),R3		; GET BUFFER ADDRESS
   1532										; FORMAT A NURD MESSAGE
   1533	004626	112723 	000005 			MOVB	#NM.CAP,(R3)+		; NURD MSG TYPE = CAPABILITIES
   1534	004632	105023 				CLRB	(R3)+			; NO FLAGS
   1535	004634					PUSH	R3			; SAVE PTR TO CNT
   1536	004636	105023 				CLRB	(R3)+			; INIT CNT
   1537	004640	012764 	000003 	000020 		MOV	#3,C.CNT(R4)		; SET BUFFER CNT = BYTES ALREADY INSERTED
   1538	004646					PUSH	R5			; SAVE THE DLT PTR
   1539	004650	062705 	000172 			ADD	#C.CFET,R5		; GET R5 -> COMMON FEATURES LIST
   1540	004654	005001 				CLR	R1			; INIT THE FID
   1541
   1542	004656	005000 			10$:	CLR	R0			; GET LENGTH OF FEATURE LIST
   1543	004660	152500 				BISB	(R5)+,R0
   1544	004662	001410 				BEQ	31$			; NO FEATURES!!
   1545
   1546	004664	005201 			20$:	INC	R1			; ADVANCE THE FID
   1547	004666	105725 				TSTB	(R5)+			; CHECK FOR SUPPORT OF IT
   1548	004670	001403 				BEQ	30$			; NOPE
   1549	004672	110123 				MOVB	R1,(R3)+		; YES - STORE FID IN MSG
   1550	004674	005264 	000020 			INC	C.CNT(R4)		; COUNT IT
   1551	004700				30$:	SOB	R0,20$
   1552
   1553	004704	105701 			31$:	TSTB	R1			; CHECK WHICH FEATURE LIST
   1554	004706	100403 				BMI	40$			; DEVICE SPECIFIC - DONE
   1555	004710	012701 	000200 			MOV	#200,R1			; INIT FID FOR DEVICE SPECIFIC FEATURES
   1556	004714	000760 				BR	10$			; PROCESS THAT LIST
   1557
   1558	004716				40$:	POP	R5			; GET THE DLT PTR BACK
   1559	004720	016400 	000020 			MOV	C.CNT(R4),R0		; GET THE BUFFER CNT
   1560	004724	162700 	000003 			SUB	#3,R0			; CALC NO. FEATURES FOUND
   1561	004730	110036 				MOVB	R0,@(SP)+		; STORE CNT IN CNT BYTE OF MSG
   1562	004732					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND IT
   1563	004750	005265 	000056 			INC	C.IOCN(R5)		; COUNT IT
   1564	004754	105065 	000070 			CLRB	C.CAPP(R5)		; FLUSH THE FLAG
   1565	004760				100$:	RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 31
SEND ALERT MESSAGE

   1567						.SBTTL	SEND ALERT MESSAGE
   1568
   1569	004762				SNDALR:	CALL	GETMBF			; GET A MESSAGE BUFFER
   1570	004766	103424 				BCS	10$			; COULDN'T
   1571	004770	016401 	000016 			MOV	C.BUF+2(R4),R1		; GET BUFFER PTR
   1572	004774	112721 	000004 			MOVB	#NM.ALR,(R1)+		; BUILD COMPLETE ALERT MSG IN A SINGLE WORD
   1573	005000	105021 				CLRB	(R1)+			; CLEAR NURD MSG FLGS
   1574	005002	012764 	000002 	000020 		MOV	#2,C.CNT(R4)
   1575	005010	112764 	000004 	000011 		MOVB	#NT$INT,C.MOD(R4)	; ALERT IS AN INTERRUPT MSG
   1576	005016					$TOBDM	RC,#NT.BOM!NT.EOM	; SEND UP ALERT MSG
   1577	005034	005265 	000056 			INC	C.IOCN(R5)		; COUNT THE IO
   1578	005040				10$:	RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 32
TIMER HANDLER

   1580						.SBTTL	TIMER HANDLER
   1581
   1582					;+
   1583					;  R4/FAKE CCB
   1584					;  R5/DLT
   1585					;-
   1586
   1587	005042	005765 	000060 		CRTIM:	TST	C.IOWT(R5)		; CHECK FOR CLOSE-WAIT
   1588	005046	001402 				BEQ	5$
   1589	005050					CALLR	CLOSWT			; PREEMPTS ALL ELSE
   1590
   1591	005054	105765 	000066 		5$:	TSTB	C.RECO(R5)		; CHECK CONTROL RESOURCE ERROR
   1592	005060	001404 				BEQ	10$
   1593	005062	105065 	000066 			CLRB	C.RECO(R5)		; YES - FLUSH THE FLAG
   1594	005066					CALL	RECON			; RESTART THE PROCESS
   1595
   1596	005072	122765 	000003 	000126 	10$:	CMPB	#DWAKT,C.DWAK(R5)	; CHECK TIMESLEEP
   1597	005100	001002 				BNE	20$
   1598	005102					CALL	DFWAKE			; RESTART THE PROCESS
   1599										; IT WILL RETURN HERE
   1600	005106	032765 	001700 	000050 	20$:	BIT	#CA.ERR!CA.OFL,C.ASTS(R5) ; CHECK DEVICE PROBLEMS
   1601	005114	001412 				BEQ	30$			; NOT BECAUSE OF DEVICE ERROR
   1602	005116	032775 	000400 	000022 		BIT	#RDROFL,@C.CSR(R5)	; DEVICE ERROR WAS REASON
   1603	005124	001006 				BNE	30$			; NOT YET RESTORED TO ONLINE
   1604	005126					CALL	SNDALR			; CURE HS BEEN EFFECTED, NOTIFY USER
   1605	005132	103403 				BCS	30$			; COULDN'T SEND ONE, COME BACK LATER
   1606	005134	042765 	001700 	000050 		BIC	#CA.ERR!CA.OFL,C.ASTS(R5) ; FLUSH ERROR BUT LEAVE CA.PAU
   1607										; USER MUST RESUME
   1608	005142	105765 	000071 		30$:	TSTB	C.STRT(R5)		; CHECK PENDING READ START
   1609	005146	001402 				BEQ	40$
   1610	005150					CALL	STRTCR			; START THE READER
   1611
   1612	005154	105765 	000027 		40$:	TSTB	C.HUNG(R5)		; CHECK HUNG TIMER
   1613	005160	001414 				BEQ	50$			; NOT SET
   1614	005162	105365 	000027 			DECB	C.HUNG(R5)		; COUNT THE TOCK
   1615	005166	001011 				BNE	50$			; STILL OK
   1616	005170	052765 	004000 	000050 		BIS	#CA.TMO,C.ASTS(R5)	; DEVICE IS COMATOSE
   1617	005176	105765 	000067 			TSTB	C.RATT(R5)		; CHECK PENDING ATTENTION MSG
   1618	005202	001006 				BNE	55$			; YES - DON'T GENERATE ANOTHER
   1619	005204	112765 	000001 	000067 		MOVB	#N.ASTC,C.RATT(R5)	; SET PENDING ATTENTION FLAG(REASON CODE)
   1620
   1621	005212	105765 	000067 		50$:	TSTB	C.RATT(R5)		; CHECK PENDING ATTENTION MSG
   1622	005216	001402 				BEQ	60$
   1623	005220				55$:	CALL	SNDATT			; TRY TO SEND ONE
   1624
   1625	005224	105765 	000070 		60$:	TSTB	C.CAPP(R5)		; CHECK PENDING CAPABILITIES MSG
   1626	005230	001402 				BEQ	70$
   1627	005232					CALL	SNDCAP			; TRY TO SEND ONE
   1628
   1629	005236	105215 			70$:	INCB	(R5)			; RESET THE DLT CLOCK FOR THE NEXT TOCK
   1630	005240					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 33
RESOURCE RETURN

   1632						.SBTTL	RESOURCE RETURN
   1633
   1634					;+
   1635					;  RESOURCE RETURN ENTRY (RECEIVE ENABLE).  IT IS HERE THAT NURD
   1636					;  MESSAGES SENT BY RECEIVE COMPLETE ($RCCMP), ARE RETURNED BY THE
   1637					;  DRIVER TO THE PROPER CORE POOL OR TO THEIR MESSAGE SPECIFIC
   1638					;  LOCATIONS.  MESSAGES SO HANDLED INCLUDE ATTENTION, CAPABILITIES,
   1639					;  ALERT, AND AUGMENTED BUFFERS OF FEATURES READ MESSAGES.
   1640					;-
   1641
   1642	005242	005365 	000056 		CRDLRE:	DEC	C.IOCN(R5)		; COUNT THE RETURNED RESOURCE
   1643	005246	002002 				BGE	FLSBUF
   1644	005250	005065 	000056 			CLR	C.IOCN(R5)		; BLEW IT SOMEWHERE
   1645
   1646	005254	122764 	000004 	000003 	FLSBUF:	CMPB	#CB.RDB,C.BID(R4)	; DISCERN BUFFER TYPE BEING DELIVERED
   1647	005262	001412 				BEQ	20$			; READ DATA BUFFER
   1648	005264	005764 	000016 			TST	C.BUF+2(R4)		; CHECK FOR PRESENCE OF A BUFFER
   1649	005270	001002 				BNE	10$			; SMALL DATA BUFFER/CCB COMBO
   1650	005272					CALLR	$CCBRT			; DEALLOCATE NAKED CCB AND RETURN
   1651
   1652	005276	016464 	000026 	000016 	10$:	MOV	C.BUF2+2(R4),C.BUF+2(R4) ; CAREFULLY RESTORE BUFFER PTR
   1653	005304					CALLR	$CSBRT			; DEALLOCATE SDB/CCB AND RETURN
   1654
   1655	005310				20$:	CALLR	$RDBRT			; DEALLOCATE RDB AND RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 34
OPEN/CLOSE DEVICE

   1657						.SBTTL	OPEN/CLOSE DEVICE
   1658
   1659					;+
   1660					; INITIALIZE UNIT
   1661					; R4/CCB
   1662					; R5/DLT
   1663					;-
   1664
   1665	005314				CTLSTR:					; START DEVICE
   1666	005314				CROPEN:	PUSH	R4			; SAVE INCOMING CCB POINTER
   1667	005316	032765 	000001 	000050 		BIT	#CA.CLO,C.ASTS(R5)	; CLOSED?
   1668	005324	001463 				BEQ	10$			; NO, THEN HOW CAN IT BE OPENED?
   1669	005326	005075 	000022 			CLR	@C.CSR(R5)		; BE VERY PESSIMISTIC
   1670	005332	012765 	000002 	000050 		MOV	#CA.PAU,C.ASTS(R5)	; INIT THE ACTION STATUS WORD
   1671					; * USER MUST RESUME TO START READING (ALLOWS INITIAL FEATURE HACKING)
   1672	005340	005065 	000032 			CLR	C.PUBP+2(R5)		; FLUSH CURRENT READ BUFFER(SHOULD BE CLEAR)
   1673	005344	105065 	000126 			CLRB	C.DWAK(R5)		; INIT THE DATA/FEATURES HYBER FCN
   1674	005350	005065 	000102 			CLR	C.DMAD(R5)		; FLUSH SOURCE BUF IN USE
   1675	005354	005065 	000104 			CLR	C.DMAD+2(R5)
   1676	005360	005065 	000106 			CLR	C.DMBS(R5)
   1677	005364	005065 	000120 			CLR	C.MSGA(R5)		; INIT CURRENT OUT MSG CRUFT
   1678	005370	005065 	000122 			CLR	C.MSGA+2(R5)
   1679	005374	005065 	000124 			CLR	C.MSGS(R5)
   1680	005400	005065 	000056 			CLR	C.IOCN(R5)		; INIT OUTSTANDING IO COUNT
   1681	005404	005065 	000060 			CLR	C.IOWT(R5)		; INIT THE CLOSE WAIT FLAG
   1682	005410	105065 	000026 			CLRB	C.COLC(R5)		; INIT THE COLUMN COUNT
   1683	005414	105065 	000027 			CLRB	C.HUNG(R5)		; INIT THE HUNG DEVICE TIMER
   1684	005420	105065 	000066 			CLRB	C.RECO(R5)		; INIT THE CONTROL RESOURCE ERROR FLAG
   1685	005424	105065 	000067 			CLRB	C.RATT(R5)		; INIT THE PENDING ATTENTION MSG FLAG
   1686	005430	105065 	000070 			CLRB	C.CAPP(R5)		; INIT THE PENDING CAPABILITIES MSG FLAG
   1687	005434	105065 	000071 			CLRB	C.STRT(R5)		; INIT THE PENDING READ FLAG
   1688	005440	005065 	000052 			CLR	C.CDCT(R5)		; INIT THE CARD COUNTER
   1689					; * SET ALL FEATURES WITH STANDARDS TO STD
   1690	005444	012700 	000172 			MOV	#C.CFET,R0		; COMMON FEATURES
   1691	005450					CALL	100$			; DOO ALL
   1692	005454	012700 	000204 			MOV	#C.DFET,R0		; DEVICE SPECIFIC FEATURES
   1693	005460					CALL	100$			; ALL OF THEM TOO
   1694	005464	005003 				CLR	R3			; RETURN SUCCESS
   1695	005466	116515 	000001 			MOVB	C.TIMI(R5),(R5)		; START THE TIMER FCNS
   1696	005472	000405 				BR	20$
   1697
   1698	005474	012703 	100202 		10$:	MOV	#LS.REJ,R3		; FAILED TO OPEN
   1699	005500	052765 	000001 	000050 		BIS	#CA.CLO,C.ASTS(R5)	; NOTE REMAINING CLOSED
   1700	005506				20$:	POP	R4			; RESTORE POINTER FOR COMMAND CCB
   1701	005510					CALLR	$CTCMP			; SEND COMMAND BACK
   1702
   1703	005514	060500 			100$:	ADD	R5,R0			; R0/FEATURE LIST OFFSET
   1704	005516	005001 				CLR	R1
   1705	005520	152001 				BISB	(R0)+,R1		; GET NO. OF FEATURES
   1706	005522	005003 			110$:	CLR	R3
   1707	005524	152003 				BISB	(R0)+,R3		; GET ADDRESS OF FEATURE BLOCK
   1708	005526	001403 				BEQ	120$			; EMPTY SLOT
   1709	005530	060503 				ADD	R5,R3
   1710	005532					CALL	SETSTD			; SET IT TO STD
   1711	005536				120$:	SOB	R1,110$
   1712	005542					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 35
OPEN/CLOSE DEVICE

   1714	005544				CTLSTP:					; STOP DEVICE
   1715	005544				CRCLOS:	CALL	STOPCR			; STOP THE READER DEAD
   1716	005550	052765 	000001 	000050 		BIS	#CA.CLO,C.ASTS(R5)	; MARK AS CLOSED
   1717	005556					CALL	FLUSHQ			; FLUSH THE QUEUES
   1718	005562					PUSH	R4			; SAVE COMMAND CCB POINTER
   1719	005564				10$:	DEQ$	C.CMSQ,20$		; FLUSH ANY OUTSTANDING CONTROL MSGS
   1720	005640					CALL	NRDACK			; RETURN THEM
   1721	005644	000747 				BR	10$
   1722	005646				20$:	POP	R4			; RESTORE COMMAND CCB POINTER
   1723	005650	010465 	000060 			MOV	R4,C.IOWT(R5)		; SET THE CLOSE WAIT FLAG
   1724
   1725					; * COMPLETE CLOSE ONLY WHEN ALL CCB'S RETURNED
   1726	005654	005765 	000056 		CLOSWT:	TST	C.IOCN(R5)
   1727	005660	001402 				BEQ	10$
   1728	005662	105215 				INCB	(R5)
   1729	005664					RETURN
   1730
   1731	005666	105015 			10$:	CLRB	(R5)			; FLUSH THE TIMER FCNS
   1732	005670	016504 	000060 			MOV	C.IOWT(R5),R4		; GET THE CLOSE CCB BACK
   1733	005674	005065 	000060 			CLR	C.IOWT(R5)		; CLEAN UP BEHIND OURSELVES
   1734	005700	005003 				CLR	R3			; CLOSE NEVER FAILS - IT JUST TAKES A WHILE!
   1735	005702					CALLR	$CTCMP			; RETURN THE COMMAND
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 36
PHYSICAL BUFFER MANAGEMENT

   1737						.SBTTL	PHYSICAL BUFFER MANAGEMENT
   1738
   1739					; * PHYSICAL BUFFERS ARE RDB'S
   1740	005706				GETPBF:	CALL	$RDBGT			; GET A PHYSICAL BUFFER
   1741	005712	103411 				BCS	10$			; LOSE
   1742	005714	012764 	000140 	000012 		MOV	#NT.BOM!NT.EOM,C.STS(R4) ; INIT STATUS
   1743	005722	016564 	000054 	000006 		MOV	C.SLN(R5),C.LIN(R4)	; IDENTIFY THE BUFFER OWNER
   1744	005730	016764 	000000G	000020 		MOV	$RDBSZ,C.CNT(R4)	; INIT THE CNT TO BUF SIZE
   1745	005736				10$:	RETURN
   1746
   1747
   1748
   1749	005740				GETMBF:	CALL	$CSBGT			; GET A MESSAGE BUFFER
   1750	005744	103425 				BCS	10$			; LOSE
   1751	005746	016564 	000054 	000006 		MOV	C.SLN(R5),C.LIN(R4) 	; MARK THE CCB AS BELONGING TO THIS SYSTEM LINE NO.
   1752	005754	016464 	000014 	000024 		MOV	C.BUF(R4),C.BUF2(R4)	; PRESERVE BUFFER DESCRIPTOR
   1753	005762	016464 	000016 	000026 		MOV	C.BUF+2(R4),C.BUF2+2(R4)
   1754	005770	016764 	000000G	000030 		MOV	$SDBSZ,C.CNT2(R4)	; GET SIZE
   1755	005776	016464 	000030 	000020 		MOV	C.CNT2(R4),C.CNT(R4)	; SET BUF SIZE FOR USER
   1756	006004	012764 	000140 	000012 		MOV	#NT.BOM!NT.EOM,C.STS(R4)	; INIT AS A WHOLE MSG
   1757	006012	012764 	001014 	000010 		MOV	#NT$DAT*400!FC.RCP,C.FNC(R4)	; INIT FUNCTION AND MOD
   1758	006020				10$:	RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 37
DDM RECEIVE COMPLETE

   1760						.SBTTL	DDM RECEIVE COMPLETE
   1761
   1762					;+
   1763					;  CALLED FROM INTERRUPT SERVICE TO SEND OUT A CARD
   1764					;
   1765					;  R4/CCB
   1766					;  R5/DLT
   1767					;-
   1768
   1769	006022	032765 	000020 	000050 	DDMRCP:	BIT	#CA.ABE,C.ASTS(R5)	; CHECK ABORTS
   1770	006030	001416 				BEQ	20$
   1771	006032					MAP	C.BUF(R4)		; ABORTING
   1772	006040	016400 	000016 			MOV	C.BUF+2(R4),R0
   1773	006044	132760 	000004 	000003 		BITB	#ND.EOF,N.DFLG(R0)	; CHECK THIS CARD FOR EOF
   1774	006052	001002 				BNE	10$			; YES!
   1775	006054					CALLR	FLSBUF			; NO - FLUSH THE BUFFER
   1776
   1777	006060	042765 	000020 	000050 	10$:	BIC	#CA.ABE,C.ASTS(R5)	; ABORT CONDITION FULFILLED
   1778	006066	112764 	000002 	000011 	20$:	MOVB	#NT$DAT,C.MOD(R4)	; ADDRESS THE MSG
   1779	006074					$TOBDM	RC,C.STS(R4)		; SEND BUFFER OUT
   1780	006112	005265 	000056 			INC	C.IOCN(R5)		; COUNT IT
   1781	006116					RETURN
   1782
   1783
   1784	006120	005064 	000012 		NRDACK:	CLR	C.STS(R4)		; ACK A NRD MSG
   1785
   1786	006124				NRDRET:	$TOBDM	XM,C.STS(R4)		; RETURN MESSAGE WITH C.MOD AND C.STS
   1787	006142					RETURN				;  IT CAME WITH
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 38
FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES

   1789						.SBTTL	FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES
   1790
   1791					;+
   1792					;   ABORT ALL FROM 1) DDMQ, 2) DLCQ ,3) MSGQ (IN THAT ORDER)
   1793					;-
   1794
   1795	006144				FLUSHQ:	PUSH	<R0,R3,R4>		; SAVE CURRENT CCB, DLT POINTERS, ETC
   1796	006152					CALL	STOPCR			; FLUSH THE DEVICE
   1797
   1798	006156				10$:	DEQ$	C.DDMQ,20$		; RETURN CURRENT READ BUFFERS TO POOL
   1799	006232					CALL	FLSBUF
   1800	006236	000747 				BR	10$
   1801
   1802	006240				20$:	DEQ$	C.DLCQ,30$		; ABORT ANY MSGS WAITING TO BE DONE
   1803	006314					$TOBDM	XM,#LS.ABO
   1804	006332	000742 				BR	20$
   1805
   1806	006334				30$:	DEQ$	C.MSGQ,40$		; FLUSH ANYTHING GOING OUT
   1807	006410					CALL	FLSBUF			; DUMP IT
   1808	006414	000747 				BR	30$
   1809
   1810	006416	105065 	000126 		40$:	CLRB	C.DWAK(R5)		; FLUSH ANY SUSPENDED PROCESSING
   1811	006422	005065 	000032 			CLR	C.PUBP+2(R5)		; NO CURRENT READ BUFFER
   1812	006426	005065 	000104 			CLR	C.DMAD+2(R5)		; NO CURRENT SOURCE BUFFER
   1813	006432	005065 	000102 			CLR	C.DMAD(R5)
   1814	006436	005065 	000106 			CLR	C.DMBS(R5)		; MAY HAVE BEEN A MESSAGE IN PROGRESS
   1815	006442	005065 	000124 			CLR	C.MSGS(R5)		; ...
   1816
   1817	006446					POP	<R4,R3,R0>		; DONE
   1818	006454					RETURN
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 39
INPUT ENABLE

   1820						.SBTTL	INPUT ENABLE
   1821
   1822	006456	032765 	000042 	000050 	STRTCR:	BIT	#CA.PAU!CA.EOF,C.ASTS(R5) ; START THE CARD READER
   1823	006464	001016 				BNE	6$			; CAN'T YET
   1824	006466	032765 	100000 	000050 		BIT	#CA.XOF,C.ASTS(R5)	; CHECK XOF CONDITION
   1825	006474	001404 				BEQ	5$
   1826	006476	022765 	000005 	000056 		CMP	#RDAHD,C.IOCN(R5)	; YES - CHECK READ AHEAD LIMIT
   1827	006504	003406 				BLE	6$			; STOP READING
   1828
   1829	006506	005765 	000044 		5$:	TST	C.DDMQ(R5)		; CHECK FOR BUFFERS
   1830	006512	001023 				BNE	10$			; YES - CAN PROCEED
   1831	006514					CALL	GETPBF			; GET A BUFFER
   1832	006520	103004 				BCC	7$			; OK
   1833	006522	112765 	000001 	000071 	6$:	MOVB	#1,C.STRT(R5)		; SET PENDING READ
   1834	006530					RETURN				; WAIT TIL ANOTHER TIME
   1835
   1836	006532				7$:	ENQ$	C.DDMQ			; Q IT
   1837	006562	005065 	000032 		10$:	CLR	C.PUBP+2(R5)		; INIT SOME THINGS TO CAUSE COLD STARTUP
   1838	006566	105065 	000071 			CLRB	C.STRT(R5)		; FLUSH THE PENDING READ
   1839	006572	105065 	000026 			CLRB	C.COLC(R5)		; CLEAR COLUMN COUNT FOR CLEAN START
   1840	006576	042765 	007700 	000050 		BIC	#CA.ERR!CA.OFL!CA.TMO!CA.IVP,C.ASTS(R5)	; FLUSH CONDITIONS OF LAST CARD
   1841
   1842
   1843	006604	112765 	000005 	000027 	GOOSCR:	MOVB	#CRHNG,C.HUNG(R5)	; SET THE HUNG TIMER
   1844	006612	012775 	000101 	000022 		MOV	#INTENB!READ,@C.CSR(R5)	; GOOSE IT
   1845	006620					RETURN
   1846
   1847
   1848	006622	005075 	000022 		STOPCR:	CLR	@C.CSR(R5)		; STOP THE INTERRUPTS
   1849	006626	105065 	000027 			CLRB	C.HUNG(R5)		; AND FLUSH THE HUNG TIMER
   1850	006632	105065 	000071 			CLRB	C.STRT(R5)		; FLUSH ANY PENDING READS
   1851	006636					RETURN
   1852
   1853
   1854					; * SUSPEND READING - USER IS CONSTIPATED
   1855	006640	052765 	100000 	000050 	CRXOF:	BIS	#CA.XOF,C.ASTS(R5)
   1856	006646					CALLR	$CCBRT			; JUST THROW AWAY THE CCB
   1857
   1858					; * USER IS HUNGRY AGAIN
   1859	006652				CRXON:	CALL	$CCBRT			; FLUSH THE CCB
   1860	006656	042765 	100000 	000050 		BIC	#CA.XOF,C.ASTS(R5)
   1861	006664	105765 	000071 			TSTB	C.STRT(R5)		; CHECK FOR PENDING READS
   1862	006670	001001 				BNE	10$			; IF NONE, DON'T START
   1863	006672					RETURN
   1864	006674				10$:	CALLR	STRTCR			; TRY TO START IMMEDIATELY
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 40
CR11 HARDWARE DEVICE REGISTER DEFINITIONS

   1866						.SBTTL	CR11 HARDWARE DEVICE REGISTER DEFINITIONS
   1867
   1868		000000 				CRS	= 0		; CARD READER STATUS REGISTER
   1869
   1870		000001 				READ	=	1	; (W)  FEED A CARD TO THE READ STATION
   1871		000002 				EJECT	=	2	; (R/W) INHIBIT COLUMN DONE & TIMERR
   1872		000100 				INTENB	=	100	; (R/W) INTERRUPT ENABLE
   1873									;      (ERROR,CARD DONE,COLUMN DONE,
   1874									; 	 OFFLINE OR ONLINE TRANSITION)
   1875		000200 				COLDN	=	200	; (R:I) COLUMN DONE - DATA READY
   1876		000400 				RDROFL	=	400	; (R)   READER IS OFFLINE
   1877		001000 				BUSY	=	1000	; (R)   READER BUSY
   1878		002000 				RDRONL	=	2000	; (R:I)   READER TRANSITION TO ONLINE
   1879		004000 				TIMERR	=	4000	; (R)   TIMING ERROR - SERVICE TOO SLOW
   1880		010000 				MOCHK	=	10000	; (R)   MOTION CHECK -FORCES OFFLINE
   1881									;       (FEED ERROR,MOTION ERROR,STACK FAIL)
   1882		020000 				HOCHK	=	20000	; (R)   HOPPR CHECK - INPUT EMPTY OR OUTPUT FULL
   1883									; 	FORCES OFFLINE
   1884		040000 				CARDN	=	40000	; (R:I) CARD DONE
   1885		100000 				ERROR	=	100000	; (R:I) SUMMARY ERROR BIT
   1886									; 	SET BY:	TRANSITION TO OFFLINE(HOCHK,MOCHK)
   1887									; 		TIMING ERROR(TIMERR) AT CARD DONE TIME
   1888
   1889		000002 				CRB1	=	CRS+2	; IMAGE DATA REGISTER
   1890									;  BIT 11   = ZONE 12
   1891									;  BIT 10   = ZONE 11
   1892									;  BIT  9   = ZONE  0
   1893									;  BITS 8-0 = ROWS 1-9
   1894
   1895		000004 				CRB2	=	CRB1+2	; COMPRESSED DATA REGISTER
   1896									;  BIT 7    = ZONE 12
   1897									;  BIT 6    = ZONE 11
   1898									;  BIT 5    = ZONE  0
   1899									;  BIT 4    = ROW   9
   1900									;  BIT 3    = ROW   8
   1901									;  BITS 2-0 = ROWS 1-7 ENCODED(SINGLE PUNCH)
   1902									; 	MULTIPUNCH IN 1-7 OR'S
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 41
INTERRUPT SERVICE ROUTINE

   1904						.SBTTL	INTERRUPT SERVICE ROUTINE
   1905
   1906					;+
   1907					;  R5/PTR TO DLT+C.PRI
   1908					;
   1909					;  NURD MSG FORMAT:  <0><MSG FLAGS><SEQ><DATA FLAGS><SEG CNT><...SEGS...>
   1910					;
   1911					;  SEGMENT FORMAT:   <CNT><...CNT DATA ITEMS> OR <200!CNT><DATA ITEM>
   1912					;  EOR SEGMENT:      <0>
   1913					;-
   1914
   1915	006700	162705 	000020 		$CRINT::SUB	#C.PRI,R5		; POINT TO TOP OF DLT
   1916	006704	105065 	000027 			CLRB	C.HUNG(R5)		; MAKE SURE HUNG TIMER IS OFF
   1917	006710					SAVMAP
   1918	006714					PUSH	<R0,R1,R2,R3,R4>
   1919	006726	016503 	000022 			MOV	C.CSR(R5),R3		; R3/CSR ADR
   1920	006732	012365 	000024 			MOV	(R3)+,C.RST(R5)		; READ THE STATUS
   1921	006736	100002 				BPL	10$
   1922	006740					CALLR	INTERR			; ERRORS
   1923
   1924	006744	032765 	000200 	000024 	10$:	BIT	#COLDN,C.RST(R5)	; CHECK COLUMN DONE
   1925	006752	001002 				BNE	20$
   1926	006754					CALLR	CRDEND			; MUST BE CARD DONE
   1927
   1928					; * COLUMN DONE - READ DATA
   1929	006760	105365 	000026 		20$:	DECB	C.COLC(R5)		; COUNT THE COLUMN
   1930	006764	001002 				BNE	30$
   1931	006766					CALLR	INTERR			; READING BEYOND DEVICE WIDTH
   1932
   1933	006772	012300 			30$:	MOV	(R3)+,R0		; R0/IMAGE DATA
   1934	006774	105765 	000213 			TSTB	CR.EOF+F.FCV(R5)	; CHECK EOF?
   1935	007000	001421 				BEQ	50$			; NOT INTERESTED
   1936	007002	032765 	000040 	000050 		BIT	#CA.EOF,C.ASTS(R5)	; EOF ALREADY ENCOUNTERED ?
   1937	007010	001402 				BEQ	40$			; NO
   1938	007012	000167 	000522 			JMP	190$			; YES, SKIP JUNK
   1939
   1940	007016	022700 	007417 		40$:	CMP	#EOFASC,R0		; CHECK FOR EOF PUNCH
   1941	007022	001010 				BNE	50$
   1942	007024	005765 	000032 			TST	C.PUBP+2(R5)		; CHECK COLUMN 1
   1943	007030	001005 				BNE	50$
   1944	007032	052765 	000042 	000050 		BIS	#CA.EOF!CA.PAU,C.ASTS(R5) ; SET EOF AND PAUSE
   1945	007040	005046 				CLR	-(SP)			; PUT A FAKE DATA MODE INDICATOR ON
   1946	007042	000465 				BR	100$			;   STACK FOR LATER CODE TO CLEAN OFF
   1947
   1948	007044	116504 	000210 		50$:	MOVB	CR.DAT+F.FCV(R5),R4	; CHECK DATA MODE
   1949	007050	162704 	000002 			SUB	#DM.CLI,R4		; CREATE 3 STATE FLAG FOR LATER USE
   1950	007054	010446 				MOV	R4,-(SP)		; TOP OF STACK = DATA MODE FLAG:
   1951										; 	< 0 => ASCII MODE
   1952										; 	= 0 => COLUMN IMAGE MODE
   1953										; 	> 0 => AUGMENTED COLUMN IMAGE MODE
   1954	007056	001457 				BEQ	100$			; IMAGE
   1955	007060	012301 				MOV	(R3)+,R1		; R1/CODED DATA
   1956	007062	010102 				MOV	R1,R2
   1957	007064	042702 	177770 			BIC	#^C7,R2
   1958	007070	006302 				ASL	R2			; MAKE WORD OFFSET
   1959	007072	042701 	000007 			BIC	#7,R1
   1960	007076	006201 				ASR	R1
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 41-1
INTERRUPT SERVICE ROUTINE

   1961	007100	006201 				ASR	R1			; R1/Z<12,11,0,9,8>*2, R2/<Z1-Z7 CODE>*2
   1962	007102	005716 				TST	(SP)			; CHECK DATA MODE
   1963	007104	002024 				BGE	80$			; AUGMENTED COLUMN IMAGE MODE
   1964
   1965					; * ASCII MODE
   1966	007106	006000 				ROR	R0			; CHECK FOR MULTIPUNCH
   1967	007110	000241 				CLC
   1968	007112	106000 				RORB	R0			; LO R0/0+Z1-Z7
   1969	007114	146200 	000430'			BICB	ZTAB(R2),R0		; FLUSH SINGLE ZONE
   1970	007120	001003 				BNE	60$			; NONZERO => MULTIPUNCH
   1971	007122	016101 	000330'			MOV	ZONTAB(R1),R1		; GET TABLET
   1972	007126	001006 				BNE	70$			; ZONES OK
   1973										; ILLEGAL ZONE COMBINATION
   1974	007130	012700 	000334 		60$:	MOV	#ERRCHR,R0		; ILLEGAL CHARACTER
   1975	007134	052765 	002000 	000050 		BIS	#CA.IVP,C.ASTS(R5)	; SET INVALID PUNCH FLAG
   1976	007142	000425 				BR	100$
   1977
   1978	007144	006202 			70$:	ASR	R2			; GET BYTE OFFSET BACK
   1979	007146	060201 				ADD	R2,R1			; R1/TABLET ENTRY
   1980	007150	005000 				CLR	R0			; MAKE FULL WORD DATA ITEM
   1981	007152	151100 				BISB	(R1),R0			; R0/TRANSLATED CHARACTER
   1982	007154	000420 				BR	100$
   1983
   1984					; * AUGMENTED COLUMN IMAGE
   1985	007156	010004 			80$:	MOV	R0,R4			; CHECK ERRORS
   1986	007160	006004 				ROR	R4
   1987	007162	000241 				CLC
   1988	007164	106004 				RORB	R4			; LO R4/0+Z1-Z7
   1989	007166	146204 	000430'			BICB	ZTAB(R2),R4		; FLUSH ZONE BIT
   1990	007172	001405 				BEQ	90$			; ZERO => SINGLE PUNCH
   1991	007174	052700 	100000 			BIS	#100000,R0		; MULTIPUNCH
   1992	007200	052765 	002000 	000050 		BIS	#CA.IVP,C.ASTS(R5)	; SET INVALID PUNCH FLAG
   1993	007206	000300 			90$:	SWAB	R0			; STUFF Z1-Z7 CODE IN UPPER HALF
   1994	007210	156200 	000431'			BISB	ZTAB+1(R2),R0
   1995	007214	000300 				SWAB	R0
   1996
   1997					; * WE NOW HAVE THE DECODED CHARACTER
   1998	007216				100$:	MAP	C.PUBP(R5)		; MAP THE BUFFER
   1999	007224	016503 	000032 			MOV	C.PUBP+2(R5),R3		; R3/CURRENT BUFFER PTR
   2000	007230	001412 				BEQ	110$			; 1ST COLUMN
   2001	007232	016502 	000034 			MOV	C.SGHD(R5),R2		; GET SEGMENT HEAD ADR
   2002	007236	001451 				BEQ	120$			; NONE IN PROGRESS
   2003	007240	105712 				TSTB	(R2)
   2004	007242	100066 				BPL	130$			; CHECK FOR COMPRESSION
   2005
   2006					; * COMPRESSED SEGMENT
   2007	007244	020065 	000036 			CMP	R0,C.LDAT(R5)		; CHECK CONTINUITY
   2008	007250	001044 				BNE	120$			; END OF SEQUENCE
   2009	007252	105212 				INCB	(R2)			; COUNT ANOTHER - ASSUME 127 COL LIMIT HERE
   2010	007254	000530 				BR	180$
   2011
   2012					; * NEW CARD, SO SET UP THE BUFFER
   2013	007256	016503 	000044 		110$:	MOV	C.DDMQ(R5),R3		; 1ST COLUMN - SET UP PTRS
   2014	007262	016365 	000016 	000032 		MOV	C.BUF+2(R3),C.PUBP+2(R5); BUFFER ADDRESS
   2015					.IF DF	M$$MGE
   2016	007270	016365 	000014 	000030 		MOV	C.BUF(R3),C.PUBP(R5)	; BUFFER  VIRTUAL  ADDRESS
   2017	007276	016367 	000014 	172354 		MOV	C.BUF(R3),KISAR6
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 41-2
INTERRUPT SERVICE ROUTINE

   2018					.ENDC
   2019	007304	016503 	000032 			MOV	C.PUBP+2(R5),R3		; GET R3/BUFFER ADDRESS
   2020	007310	010365 	000042 			MOV	R3,C.NRDA(R5)		; SAVE BEG OF NURD MSG
   2021	007314	116565 	000215 	000026 		MOVB	CR.DWD+F.FCV(R5),C.COLC(R5) ; SET COLUMN COUNTER
   2022
   2023					; * FORMAT A NURD MESSAGE
   2024	007322	112723 	000000 			MOVB	#NM.DAT,(R3)+		; MSGTYPE = DATA
   2025	007326	105023 				CLRB	(R3)+			; NO MSG FLAGS
   2026	007330	105265 	000052 			INCB	C.CDCT(R5)		; COUNT THE CARD
   2027	007334	116523 	000052 			MOVB	C.CDCT(R5),(R3)+	; INSERT SEQ NO. = LO CARD COUNT
   2028	007340	105023 				CLRB	(R3)+			; INIT DATA FLAGS
   2029	007342	105023 				CLRB	(R3)+			; INIT SEGMENT COUNT
   2030	007344	005065 	000034 			CLR	C.SGHD(R5)		; FLUSH C.SGHD
   2031	007350	005065 	000036 			CLR	C.LDAT(R5)		; FLUSH C.LDAT
   2032	007354	012765 	000005 	000040 		MOV	#N.DDAT,C.PUBS(R5)	; SET BUFFER COUNT TO MSG OVERHEAD
   2033
   2034	007362	010302 			120$:	MOV	R3,R2			; BEGIN NEW SEGMENT
   2035	007364	105023 				CLRB	(R3)+			; INIT NEW SEGMENT HEADER
   2036	007366	005265 	000040 			INC	C.PUBS(R5)		; COUNT SEG HEAD IN BUFFER
   2037	007372	010265 	000034 			MOV	R2,C.SGHD(R5)		; SAVE NEW HDR ADR
   2038	007376	016504 	000042 			MOV	C.NRDA(R5),R4		; GET MSG BEG
   2039	007402	105264 	000004 			INCB	N.DSGC(R4)		; INCREMENT TOTAL SEGMENT COUNT
   2040	007406	032765 	000040 	000050 		BIT	#CA.EOF,C.ASTS(R5)	; DID WE GET EOF CHARACTER ?
   2041	007414	001432 				BEQ	160$			; NO
   2042	007416	000445 				BR	170$			; YES, LEAVE
   2043
   2044	007420	020065 	000036 		130$:	CMP	R0,C.LDAT(R5)		; SEE IF NEW COMPR SEQ
   2045	007424	001026 				BNE	160$			; NO - JUST BUFFER THE COL
   2046	007426	005716 				TST	(SP)			; REMOVE DATA ITEM FROM BUFFER
   2047	007430	002403 				BLT	140$
   2048	007432	005303 				DEC	R3			; WORD
   2049	007434	005365 	000040 			DEC	C.PUBS(R5)		; REM FROM BUFFER
   2050	007440	005303 			140$:	DEC	R3			; BYTE
   2051	007442	005365 	000040 			DEC	C.PUBS(R5)		; REM FROM BUFFER
   2052	007446	105312 				DECB	(R2)			; REMOVE PREVIOUS DATA ITEM FROM LAST SEG
   2053	007450	001411 				BEQ	150$			; REMOVED WHOLE SEGMENT
   2054	007452	010302 				MOV	R3,R2			; BEGIN NEW SEGMENT
   2055	007454	010265 	000034 			MOV	R2,C.SGHD(R5)		; SAVE NEW HDR ADR
   2056	007460	016504 	000042 			MOV	C.NRDA(R5),R4
   2057	007464	105264 	000004 			INCB	N.DSGC(R4)		; INCREMENT TOTAL SEGMENT COUNT
   2058	007470	005265 	000040 			INC	C.PUBS(R5)		; COUNT NEW SEG HEAD IN BUFFER
   2059
   2060	007474	010203 			150$:	MOV	R2,R3			; SET BUFFER PTR BACK TO SEG HEAD
   2061	007476	112723 	000201 			MOVB	#ND.CMP+1,(R3)+		; NEW SEGMENT - INIT AS A COMPRESSED SEG
   2062	007502	010065 	000036 		160$:	MOV	R0,C.LDAT(R5)		; SAVE NEW DATA ITEM IN C.LDAT
   2063	007506	110023 				MOVB	R0,(R3)+		; INSERT NEW DATA ITEM(LO) IN BUFFER
   2064	007510	005265 	000040 			INC	C.PUBS(R5)		; COUNT IT IN BUFFER
   2065	007514	105212 				INCB	(R2)			; COUNT IT IN SEGMENT
   2066	007516	005716 				TST	(SP)			; CHECK DATA MODE => DATA LENGTH
   2067	007520	002404 				BLT	170$			; ASCII - 1 BYTE
   2068	007522	000300 				SWAB	R0			; OTHERWISE - 2 BYTES
   2069	007524	110023 				MOVB	R0,(R3)+		; INSERT NEW DATA ITEM(HI) IN BUFFER
   2070	007526	005265 	000040 			INC	C.PUBS(R5)		; COUNT IT IN BUFFER
   2071										; BUT NOT IN SEGMENT
   2072	007532	010365 	000032 		170$:	MOV	R3,C.PUBP+2(R5)		; SAVE UPDATED BUFFER PTR
   2073	007536	005726 			180$:	TST	(SP)+			; FLUSH DATA MODE FLAG
   2074	007540	032765 	040000 	000024 	190$:	BIT	#CARDN,C.RST(R5)
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 41-3
INTERRUPT SERVICE ROUTINE

   2075	007546	001061 				BNE	CRDEND			; CARD FINISHED ALSO
   2076	007550	112765 	000005 	000027 		MOVB	#CRHNG,C.HUNG(R5)	; EXIT - SET TIMER
   2077	007556					POP	<R4,R3,R2,R1,R0>
   2078	007570					RESMAP
   2079	007574					$INTXT
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 42
INTERRUPT SERVICE ROUTINE

   2081	007600	016501 	000024 		INTERR:	MOV	C.RST(R5),R1		; ERROR-INTERRUPT ENTRY POINT
   2082	007604	012700 	000002 			MOV	#CA.PAU,R0		; DETECT INDIVIDUAL ERRORS
   2083	007610	032701 	020000 			BIT	#HOCHK,R1
   2084	007614	001402 				BEQ	11$
   2085	007616	052700 	000100 			BIS	#CA.HOP,R0		; HOPPER CHECK
   2086
   2087	007622	032701 	010000 		11$:	BIT	#MOCHK,R1
   2088	007626	001402 				BEQ	12$
   2089	007630	052700 	000200 			BIS	#CA.MOT,R0		; MOTION CHECK
   2090
   2091	007634	032701 	004000 		12$:	BIT	#TIMERR,R1
   2092	007640	001402 				BEQ	13$
   2093	007642	052700 	000400 			BIS	#CA.TER,R0		; TIMING ERROR
   2094
   2095	007646	032701 	000400 		13$:	BIT	#RDROFL,R1
   2096	007652	001402 				BEQ	14$
   2097	007654	052700 	001000 			BIS	#CA.OFL,R0		; READER OFFLINE
   2098
   2099	007660	050065 	000050 		14$:	BIS	R0,C.ASTS(R5)		; MARK ERROR => PAUSE ALSO
   2100	007664	005765 	000032 			TST	C.PUBP+2(R5)		; CHECK FOR EXISTING BUFFER
   2101	007670	001410 				BEQ	CRDEND			; NO CARD TO MARK ERRORS
   2102	007672					MAP	C.PUBP(R5)		; MAP TO THE BUFFER
   2103	007700	016501 	000042 			MOV	C.NRDA(R5),R1		;  AND GET PTR TO PLACE IN BUFFER
   2104	007704	152761 	000002 	000003 		BISB	#ND.IER,N.DFLG(R1)	; SET ERROR STATUS FLAG IN NURD MSG
   2105					;	CALLR	CRDEND				; FALL INTO CRDEND
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 43
INTERRUPT SERVICE ROUTINE

   2107					; * CARD DONE
   2108	007712	005075 	000022 		CRDEND:	CLR	@C.CSR(R5)		; STOP THE READER
   2109	007716					POP	<R4,R3,R2,R1,R0>	; RESTORE INTERRUPT LEVEL REGISTERS
   2110	007730					RESMAP
   2111	007734	062705 	000020 			ADD	#C.PRI,R5		; POINT AT C.PRI IN DLT, FOR $INTSX
   2112	007740					$INTSX				; RE-SCHEDULE AND DROP PRIORITY.
   2113	007744	162705 	000022 			SUB	#<C.PRI+2>,R5		; BACK TO FRONT OF DLT
   2114	007750					SAVMAP				; SAVE APR6
   2115	007754					PUSH	<R0,R1,R2,R3>		; SAVE TASK LEVEL REGISTERS
   2116	007764					MAP	C.PUBP(R5)
   2117	007772	016503 	000032 			MOV	C.PUBP+2(R5),R3		; GET THE BUFFER PTR
   2118	007776	001450 				BEQ	20$			; NULL CARD
   2119	010000	105013 				CLRB	(R3)			; INSERT EOR = NULL SGMENT
   2120	010002	016501 	000040 			MOV	C.PUBS(R5),R1		; GET THE BUFFER CNT
   2121	010006	005201 				INC	R1			; COUNT THE EOR IN THE BUFFER
   2122	010010	016504 	000042 			MOV	C.NRDA(R5),R4		; GET THE MSG PTR
   2123	010014	105264 	000004 			INCB	N.DSGC(R4)		; COUNT THE EOR IN MSG SEGMENT CNT
   2124	010020					DEQ$	C.DDMQ
   2125	010066	010164 	000020 			MOV	R1,C.CNT(R4)		; STUFF FINAL BUFFER CNT IN CCB
   2126	010072	032765 	000040 	000050 		BIT	#CA.EOF,C.ASTS(R5)	; CHECK FOR EOF
   2127	010100	001405 				BEQ	10$
   2128	010102	016501 	000042 			MOV	C.NRDA(R5),R1		; INSERT EOF IN MSG
   2129	010106	152761 	000004 	000003 		BISB	#ND.EOF,N.DFLG(R1)
   2130
   2131	010114				10$:	CALL	DDMRCP			; SEND OFF THE CARD
   2132	010120	032765 	000046 	000050 	20$:	BIT	#CA.PAU!CA.ADN!CA.EOF,C.ASTS(R5) ; DO WE NEED TO PAUSE ?
   2133	010126	001411 				BEQ	30$				 ; NO
   2134	010130	105765 	000067 			TSTB	C.RATT(R5)		; PAUSING, ATTN ALREADY PENDING ?
   2135	010134	001010 				BNE	40$			; YES, DON'T OVERWRITE CODE
   2136	010136	112765 	000001 	000067 		MOVB	#N.ASTC,C.RATT(R5)	; SET THE CODE
   2137	010144					CALL	SNDATT			; INSTIGATE THE ATTN MESSAGE
   2138	010150	000402 				BR	40$			; GET ON OUT
   2139
   2140	010152				30$:	CALL	STRTCR			; START NEXT CARD
   2141	010156				40$:	POP	<R3,R2,R1,R0>		; RESTORE REGISTERS
   2142	010166					RESMAP				; RESTORE APR6
   2143	010172					RETURN
   2144
   2145
   2146						.SBTTL	THE END
   2147		000001 				.END
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 43-1
SYMBOL TABLE

ABRTAL  004506R  	CRASH   000472R  	C.CNT1  000020   	DM.AS8= 000005   	FERNST  001776R
ABRTCL  004554R  	CRB1  = 000002   	C.CNT2  000030   	DM.AUG= 000004   	FERUSF  001762R
ABRTEF  004474R  	CRB2  = 000004   	C.COLC  000026 G 	DM.CLI= 000002   	FE.ALL= 000377
ACK   = 000006   	CRCCP   000532R  	C.CSR   000022 G 	DM.EBC= 000003   	FE.CAL= 000040
A$$CHK= 000000   	CRCLOS  005544R  	C.DDMQ  000044 G 	DTXTSZ= 000020 G 	FE.DAT= 000001
A$$CPS= 000000   	CRCTL   000474R  	C.DFET  000204 G 	DUMP    004334R  	FE.DRV= 000010
A$$PRI= 000000   	CRCWDS= 000131 G 	C.DFSP  000130 G 	DWAKP = 000002 G 	FE.DVT= 000006
A$$TRP= 000000   	CRDATS= 000131 G 	C.DLCQ  000072 G 	DWAKR = 000004 G 	FE.DWD= 000011
BADCON  003552R  	CRDEND  007712R  	C.DMAD  000102 G 	DWAKS = 000001 G 	FE.EOF= 000005
BEL   = 000007   	CRDLRE  005242R  	C.DMBS  000106 G 	DWAKT = 000003 G 	FE.ESC= 000000
BS    = 000010   	CREOFS= 000101 G 	C.DMSQ  000110 G 	D$$BUG= 177514   	FE.EXP= 000200
BUSY  = 001000   	CRHNG = 000005   	C.DTXL  000127 G 	D$$ISK= 000000   	FE.EXT= 000001
CAN   = 000030   	CRNURD  000600R  	C.DTXT  000132 G 	D$$L11= 000001   	FE.EXV= 000004
CAPREQ  004604R  	CROPEN  005314R  	C.DWAK  000126 G 	D$$YNC= 000000   	FE.FNM= 000010
CARDN = 040000   	CRS   = 000000   	C.FLG   000022   	D$$YNM= 000000   	FE.FWD= 000004
CA.ABE= 000020 G 	CRTIM   005042R  	C.FLG1  000022   	EJECT = 000002   	FE.LCR= 000003
CA.ABO= 000010 G 	CRXOF   006640R  	C.FLG2  000032   	EM    = 000031   	FE.LSI= 000400
CA.ADN= 000004 G 	CRXON   006652R  	C.FNC   000010   	ENQ   = 000005   	FE.MUP= 000002
CA.CLO= 000001 G 	CR.CWD  000216 G 	C.HUNG  000027 G 	EOFASC= 007417   	FE.MXT= 040000
CA.EOF= 000040 G 	CR.DAT  000207 G 	C.IOCN  000056 G 	EOT   = 000004   	FE.NLG= 100000
CA.ERR= 000700 G 	CR.DWD  000214 G 	C.IOWT  000060 G 	EO.ASC= 000001   	FE.PKT= 000100
CA.HOP= 000100 G 	CR.EOF  000212 G 	C.LDAT  000036 G 	EO.IMG= 000002   	FE.PLA= 000020
CA.IVP= 002000 G 	CS.ABO= 000100   	C.LIN   000006   	ERRCHR= 000334   	FE.SER= 000002
CA.MOT= 000200 G 	CS.BUF= 000200   	C.LNK   000000   	ERROR = 100000   	FE.TRN= 000007
CA.OFL= 001000 G 	CS.DCR= 000400   	C.MFLG  000076 G 	ESC   = 000033   	FF    = 000014
CA.PAU= 000002 G 	CS.DEV= 000002   	C.MOD   000011   	ETB   = 000027   	FLSBUF  005254R
CA.TER= 000400 G 	CS.DIS= 000040   	C.MSGA  000120 G 	ETX   = 000003   	FLUSHQ  006144R
CA.TMO= 004000 G 	CS.ENB= 000020   	C.MSGQ  000114 G 	E$$XPR= 000000   	FNCOTR= 000022
CA.XOF= 100000 G 	CS.EOF= 000001   	C.MSGS  000124 G 	FB.CA = 000100 G 	FREAD   002072R
CB.CCB= 000002   	CS.ERR= 100000   	C.NFSP  000100 G 	FB.CL0= 000000 G 	FR.BCL= 000002
CB.RDB= 000004   	CS.HFE= 002000   	C.NRDA  000042 G 	FB.CL1= 000001 G 	FR.CPN= 000005
CCFETL= 000011 G 	CS.LST= 040000   	C.NSP   000004   	FB.CP = 000040 G 	FR.DNP= 000007
CDFETL= 000002 G 	CS.MTL= 004000   	C.PBRC  000112 G 	FB.SST= 000020 G 	FR.ERR= 000004
CD.CWD= 000202   	CS.RNG= 000010   	C.PRI   000020 G 	FB.STE= 000010 G 	FR.NEB= 000006
CE.ABO= 100362   	CS.ROV= 000004   	C.PUBP  000030 G 	FB.STR= 000004 G 	FR.NST= 000003
CE.DIS= 100366   	CS.RSN= 010000   	C.PUBS  000040 G 	FB.WRD= 000002 G 	FR.USF= 000001
CE.ERR= 100370   	CS.SUC= 000001   	C.RATT  000067 G 	FC.CCP= 000020   	FS    = 000034
CE.MOP= 100372   	CS.TMO= 020000   	C.RECO  000066 G 	FC.CLM= 000003   	FSET    002302R
CE.NTE= 100361   	CTLDSP  003574R  	C.RST   000024 G 	FC.CL0= 000000   	FS.AST= 000000
CE.RTE= 100376   	CTLOTR= 000012   	C.RSV   000002   	FC.CL1= 000001   	FS.CIB= 002000
CE.SRC= 100364   	CTLSTP  005544R  	C.SGHD  000034 G 	FC.CTL= 000006   	FS.CRA= 001000
CE.TMO= 100374   	CTLSTR  005314R  	C.SLN   000054 G 	FC.KCP= 000016   	FS.DIS= 013000
CF.EOM= 000004   	C$$CKP= 000000   	C.STA   000007   	FC.KIL= 000004   	FS.DVC= 001000
CF.HDR= 000020   	C$$ORE= 000400   	C.STRT  000071 G 	FC.RCE= 000002   	FS.ENB= 012000
CF.LB = 100000   	C$$RSH= 177564   	C.STS   000012   	FC.RCP= 000014   	FS.GET= 006000
CF.SOM= 000010   	C.ASTS  000050 G 	C.TIMC  000000 G 	FC.SST= 000002   	FS.INI= 000000
CF.SYN= 000040   	C.BID   000003   	C.TIMI  000001 G 	FC.TIM= 000010   	FS.KIL= 000000
CF.TRN= 000100   	C.BUF   000014   	DC1   = 000021   	FC.XCP= 000012   	FS.LTM= 001000
CH.64 = 000001   	C.BUF1  000014   	DC2   = 000022   	FC.XME= 000000   	FS.MNT= 004000
CH.96 = 000002   	C.BUF2  000024   	DC3   = 000023   	FEACON  001720R  	FS.MSN= 014000
CLOSWT  005654R  	C.CALL  000002 G 	DC4   = 000024   	FEATRS  001464R  	FS.RNG= 011000
CMODE = 140000   	C.CAPN  000077 G 	DDMRCP  006022R  	FEFND   003176R  	FS.RTN= 001000
COLDN = 000200   	C.CAPP  000070 G 	DEL   = 000177   	FERBCL  001770R  	FS.SET= 005000
CONINT  003274R  	C.CDCT  000052 G 	DFSLEP  001066R  	FERCPN  002012R  	FS.STM= 000000
CONSYN  003620R  	C.CFET  000172 G 	DFWAKE  001152R  	FERDNP  002026R  	FS.STP= 002000
CONTRL  003260R  	C.CMSQ  000062 G 	DLE   = 000020   	FERERR  002004R  	FS.STR= 001000
CR    = 000015   	C.CNT   000020   	DM.ASC= 000001   	FERNEB  002020R  	FS.TRM= 003000
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 43-2
SYMBOL TABLE

FS.XKL= 002000   	MBSND   003026R  	NM.CAP= 000005   	NT.EOM= 000100   	N.NSPC= 000003
FS.XOF= 010000   	MOCHK = 010000   	NM.CTL= 000003   	NT.FCN= 037400   	N.OPDL  000136
FS.XON= 007000   	MPAR  = 172100   	NM.DAT= 000000   	NT.MD1= 000420   	N.OPTD  000140
F$$LVL= 000001   	MPCSR = 177746   	NM.FTR= 000002   	NT.MFL= 000002   	N.PASL  000102
F.FCV = 000001 G 	M$$CRB= 000124   	NM.OTR= 000006   	NT.MOD= 000020   	N.PASS  000104
F.FSB = 000000 G 	M$$CRX= 000000   	NM.TYP= 000017   	NT.MOM= 000000   	N.PCAP= 000003
F.FSV = 000002 G 	M$$FCS= 000000   	NP$RTR= 000003   	NT.NAK= 000002   	N.PCNT= 000002
GB      001224R  	M$$MGE= 000000   	NRDACK  006120R  	NT.NFL= 000000   	N.RQDL  000060
GBDQ    001372R  	M$$OVR= 000000   	NRDOTR= 000006   	NT.SFL= 000001   	N.RQID  000062
GETMBF  005740R  	NAK   = 000025   	NRDRET  006124R  	NT.SOL= 000140   	N.RSRV= 000030
GETPBF  005706R  	NA.DTO= 000004   	NRMACK  000560R  	NT.XOF= 000004   	N.SDL1  000036
GOOSCR  006604R  	NA.FAT= 000001   	NR.ABS= 000000   	NT.XON= 000010   	N.SDL2  000042
GS    = 000035   	NA.INK= 000040   	NR.ACC= 000000   	NUL   = 000000   	N.SDS1  000040
G$$TPP= 000000   	NA.IVP= 000001   	NR.ACN= 000001   	N$$DAT= 000030   	N.SDS2  000056
G$$TSS= 000000   	NA.JAM= 000020   	NR.ATT= 000000   	N$$DIS= 000020   	N.SEG   000006
G$$TTK= 000000   	NA.NAC= 000002   	NR.CAP= 000000   	N$$INT= 000020   	N.SFMT  000034
G$$WRD= 000000   	NA.NOE= 000100   	NR.DMP= 000000   	N$$LDV= 000001   	N.SGRP  000036
HOCHK = 020000   	NA.OFL= 000002   	NR.DPS= 000000   	N$$MOV= 000010   	N.SOBJ  000035
HT    = 000011   	NA.OMD= 000010   	NR.NAB= 000001   	N$$OPT= 000020   	N.SUSR  000040
INTENB= 000100   	NA.OOF= 000040   	NR.NDP= 000002   	N$$OVR= 000042   	N.TYP = 000000
INTERR  007600R  	NA.OUF= 000001   	NR.NDR= 000002   	N$$SYS= 000001   	PAUSE   004356R
I$$RAR= 000000   	NA.OVP= 000001   	NR.NDV= 100377   	N$$USR= 000001   	PIRQ  = 177772
I$$RDN= 000000   	NA.PAU= 000004   	NR.NOB= 000001   	N.AABC= 000004   	PMODE = 030000
KDSAR0= 172360   	NA.PF = 000020   	NR.NOE= 000002   	N.AACK= 000002   	PR0   = 000000
KDSDR0= 172320   	NA.PSE= 000020   	NR.NPS= 000001   	N.ACNT  000116   	PR1   = 000040
KISAR0= 172340   	NA.RAP= 000040   	NR.PAU= 000001   	N.ACOD= 000003   	PR4   = 000200
KISAR5= 172352   	NA.REG= 000100   	NR.RES= 000000   	N.ACTL  000114   	PR5   = 000240
KISAR6= 172354   	NA.RNA= 000010   	NS.BOM= 000040   	N.AFLG= 000004   	PR6   = 000300
KISAR7= 172356   	NC.AUC= 000002   	NS.EOM= 000100   	N.ALGD= 000002   	PR7   = 000340
KISDR0= 172300   	NC.AUE= 000001   	NS.MFL= 000003   	N.APLE= 000005   	PS    = 177776
KISDR6= 172314   	NC.CAB= 000003   	NS.MOM= 000000   	N.ARQS= 000003   	P$$DDC= 000001
KISDR7= 172316   	NC.DMP= 000005   	NS.NFL= 000001   	N.ASTC= 000001   	P$$P45= 000000
K$$CNT= 177546   	NC.FM0= 000000   	NS.SET= 000002   	N.CCMD= 000003   	P$$WRD= 000000
K$$CSR= 177546   	NC.FM1= 000001   	NS.SFL= 000002   	N.CRES= 000004   	QDLC    000750R
K$$LDC= 000000   	NC.FM2= 000002   	NS.SOL= 000140   	N.CSEQ= 000002   	QTODLC  000726R
K$$TPS= 000074   	NC.PAU= 000006   	NS.SUC= 000001   	N.DDAT= 000005   	Q$$OPT= 000010
LD$LP = 000000   	NC.RES= 000007   	NT$ABO= 000022   	N.DDL1  000012   	RDAHD = 000005
LF    = 000012   	NC.RQC= 000011   	NT$ACC= 000002   	N.DDL2  000016   	RDROFL= 000400
LP.CHS= 000210   	NC.RQS= 000004   	NT$ADS= 000000   	N.DDS1  000014   	RDRONL= 002000
LP.CVF= 000205   	ND.ACK= 000001   	NT$CON= 000000   	N.DDS2  000020   	READ  = 000001
LP.FCC= 000206   	ND.CMP= 000200   	NT$DAT= 000002   	N.DFLG= 000003   	RECON   003356R
LP.HT = 000202   	ND.EOF= 000004   	NT$DIS= 000010   	N.DFMT  000010   	RESUME  004406R
LP.OPV= 000212   	ND.IER= 000002   	NT$INT= 000004   	N.DGRP  000012   	RS    = 000036
LP.OVP= 000204   	NE.ABO= 177776   	NT$MOD= 000012   	N.DOBJ  000011   	R$$DER= 000000
LP.PLE= 000211   	NE.ACT= 177771   	NT$NAK= 000022   	N.DSEQ= 000002   	R$$K11= 000001
LP.SFC= 000203   	NE.CLS= 177767   	NT$OFF= 000026   	N.DSGC= 000004   	R$$SND= 000000
LP.VFR= 000207   	NE.DIS= 177777   	NT$ON = 000002   	N.DUSR  000014   	R$$11M= 000000
LS.ABO= 100201   	NE.FMT= 177770   	NT$QRY= 000014   	N.FCLS= 000002   	SETSTD  002532R
LS.BOM= 100205   	NE.NDT= 177766   	NT$REJ= 000004   	N.FDAT= 000004   	SI    = 000017
LS.CLO= 100203   	NE.NOD= 177774   	NT$RTI= 000010   	N.FFLG= 000001   	SISDR0= 172200
LS.ILM= 100204   	NE.REJ= 177775   	NT$RTN= 000000   	N.FID = 000000   	SNDALR  004762R
LS.REJ= 100202   	NE.RES= 177773   	NT$SNG= 000006   	N.FRSP= 000003   	SNDATT  004014R
L$$ASG= 000000   	NE.TIM= 177772   	NT$STP= 000004   	N.FSEQ= 000002   	SNDCAP  004614R
L$$DRV= 000000   	NF.CMD= 000001   	NT$XOF= 000020   	N.FSPC= 000004   	SNDSTS  003774R
L$$P11= 000001   	NF.STD= 000002   	NT$XON= 000016   	N.LGTH= 000160   	SO    = 000016
L$$11R= 000000   	NM.ALR= 000004   	NT.ACK= 000001   	N.MFL = 000001   	SOH   = 000001
MB      002664R  	NM.ATT= 000001   	NT.BOM= 000040   	N.NODE  000000   	SPA   = 000040
CR	- NURD CR11 CARD READER	MACRO M1110  13-OCT-79 08:29  PAGE 43-3
SYMBOL TABLE

SR0   = 177572   	UDSDR0= 177620   	X$$DBT= 000000   	ZON23   000200R  	$CCBRT= ****** GX
SR3   = 172516   	UISAR0= 177640   	ZONTAB  000330R  	ZON24   000070R  	$CRINT  006700RG
STOPCR  006622R  	UISAR4= 177650   	ZON0    000000R  	ZON25   000230R  	$CRTB   000450RG
STRTCR  006456R  	UISAR5= 177652   	ZON1    000040R  	ZON26   000240R  	$CSBGT= ****** GX
STX   = 000002   	UISAR6= 177654   	ZON10   000020R  	ZON27   000320R  	$CSBRT= ****** GX
SUB   = 000032   	UISAR7= 177656   	ZON11   000130R  	ZON3    000170R  	$CTCMP= ****** GX
SWR   = 177570   	UISDR0= 177600   	ZON12   000140R  	ZON30   000060R  	$INTSX= ****** GX
SYN   = 000026   	UISDR4= 177610   	ZON13   000210R  	ZON31   000250R  	$INTX7= ****** GX
S$$WRG= 000000   	UISDR5= 177612   	ZON14   000120R  	ZON32   000260R  	$RCCMP= ****** GX
S$$YSZ= 007600   	UISDR6= 177614   	ZON15   000270R  	ZON33   000310R  	$RDBGT= ****** GX
TIMERR= 004000   	UISDR7= 177616   	ZON16   000300R  	ZON4    000030R  	$RDBRT= ****** GX
TPS   = 177564   	US    = 000037   	ZON2    000050R  	ZON5    000150R  	$RDBSZ= ****** GX
T$$KMG= 000000   	VF.6LI= 000001   	ZON20   000010R  	ZON6    000160R  	$SDBSZ= ****** GX
T$$MIN= 000000   	VF.8LI= 000002   	ZON21   000100R  	ZON7    000220R  	$XMCMP= ****** GX
UBMPR = 170200   	VT    = 000013   	ZON22   000110R  	ZTAB    000430R  	$$    = 000040
UDSAR0= 177660   	V$$CTR= 001000

. ABS.	000221	   000
      	010174	   001
ERRORS DETECTED:  0

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

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ABRTAL	  004506 R	 24-1283   #29-1494   
ABRTCL	  004554 R	 24-1284   #29-1506   
ABRTEF	  004474 R	 24-1282   #29-1489   
ACK   	= 000006	#9-208      10-435    
BADCON	  003552 R	 24-1227    24-1229    24-1231   #24-1275    24-1281    24-1289   
BEL   	= 000007	#9-209      10-436    
BS    	= 000010	#9-210      10-376    
BUSY  	= 001000	#40-1877   
CAN   	= 000030	#9-226      10-419    
CAPREQ	  004604 R	 24-1290   #30-1518   
CARDN 	= 040000	#40-1884    41-2074   
CA.ABE	= 000020  G	#5-119      28-1472    29-1489    29-1507    29-1509    37-1769    37-1777   
CA.ABO	= 000010  G	#5-119      15-693     28-1472    29-1495    29-1507    29-1509   
CA.ADN	= 000004  G	#5-119      17-796     24-1277    25-1341    26-1381    27-1454    28-1465    28-1472    43-2132   
CA.CLO	= 000001  G	#5-119      14-650     34-1667    34-1699    35-1716   
CA.EOF	= 000040  G	#5-119      28-1467    28-1472    39-1822    41-1936    41-1944    41-2040    43-2126    43-2132   
CA.ERR	= 000700  G	#5-119      28-1472    32-1600    32-1606    39-1840   
CA.HOP	= 000100  G	#5-119      5-119      26-1393    26-1400    42-2085   
CA.IVP	= 002000  G	#5-119      26-1415    39-1840    41-1975    41-1992   
CA.MOT	= 000200  G	#5-119      5-119      26-1381    26-1408    42-2089   
CA.OFL	= 001000  G	#5-119      26-1385    32-1600    32-1606    39-1840    42-2097   
CA.PAU	= 000002  G	#5-119      26-1389    27-1454    27-1456    28-1465    28-1472    34-1670    39-1822    41-1944   
                         42-2082    43-2132   
CA.TER	= 000400  G	#5-119      5-119      26-1381    42-2093   
CA.TMO	= 004000  G	#5-119      26-1404    28-1465    28-1472    32-1616    39-1840   
CA.XOF	= 100000  G	#5-119      39-1824    39-1855    39-1860   
CB.RDB	= 000004	 33-1646   
CCFETL	= 000011  G	#5-119     
CDFETL	= 000002  G	#5-119     
CD.CWD	= 000202	#6-125     
CH.64 	= 000001	#6-125     
CH.96 	= 000002	#6-125     
CLOSWT	  005654 R	 32-1589   #35-1726   
COLDN 	= 000200	#40-1875    41-1924   
CONINT	  003274 R	 24-1223   #24-1226   
CONSYN	  003620 R	 15-719    #25-1297   
CONTRL	  003260 R	 14-665    #24-1222   
CR    	= 000015	#9-215      10-414    
CRASH 	  000472 R	 12-558     12-561     12-562     12-563    #12-567     12-573     12-576     12-577     12-578    
                         12-579     12-580     12-581     12-589     12-590     12-591     12-592     12-593     12-594    
                         12-595    
CRB1  	= 000002	#40-1889    40-1895   
CRB2  	= 000004	#40-1895   
CRCCP 	  000532 R	 12-564    #12-588    
CRCLOS	  005544 R	#35-1715   
CRCTL 	  000474 R	 12-559    #12-572    
CRCWDS	= 000131  G	#5-119     
CRDATS	= 000131  G	#5-119     
CRDEND	  007712 R	 41-1926    41-2075    42-2101   #43-2108   
CRDLRE	  005242 R	 12-557    #33-1642   
CREOFS	= 000101  G	#5-119     
CRHNG 	= 000005	#4-113      39-1843    41-2076   
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

CRNURD	  000600 R	 12-556    #14-650    
CROPEN	  005314 R	#34-1666   
CRS   	= 000000	#40-1868    40-1889   
CRTIM 	  005042 R	 12-560    #32-1587   
CRXOF 	  006640 R	 12-597    #39-1855   
CRXON 	  006652 R	 12-596    #39-1859   
CR.CWD	  000216  G	#5-119     
CR.DAT	  000207  G	#5-119      41-1948   
CR.DWD	  000214  G	#5-119      41-2021   
CR.EOF	  000212  G	#5-119      41-1934   
CS.ABO	= 000100	 15-695    
CTLDSP	  003574 R	 24-1236   #24-1281    24-1291    25-1308   
CTLOTR	= 000012	 24-1230   #24-1291    25-1302   
CTLSTP	  005544 R	 12-575    #35-1714   
CTLSTR	  005314 R	 12-574    #34-1665   
C.ASTS	  000050  G	#5-119      14-650     15-693    *17-796    *24-1277   *25-1341    26-1380    27-1454   *27-1456   
                         28-1465    28-1467   *28-1472   *29-1489   *29-1495    29-1507   *29-1509    32-1600   *32-1606   
                        *32-1616    34-1667   *34-1670   *34-1699   *35-1716    37-1769   *37-1777    39-1822    39-1824   
                        *39-1840   *39-1855   *39-1860    41-1936   *41-1944   *41-1975   *41-1992    41-2040   *42-2099   
                         43-2126    43-2132   
C.BID 	  000003	 33-1646   
C.BUF 	  000014	 14-652     14-653     17-808     17-809     19-910     19-911     22-1145    22-1146    24-1253   
                         24-1254    24-1260    24-1261    26-1373    26-1430    30-1531    31-1571    33-1648   *33-1652   
                         36-1752    36-1753    37-1771    37-1772    41-2014    41-2016    41-2017   
C.BUF2	  000024	 33-1652   *36-1752   *36-1753   
C.CALL	  000002  G	#5-119     
C.CAPN	  000077  G	#5-119     *18-865    *18-869     18-877    *18-879     18-883     19-906    
C.CAPP	  000070  G	#5-119      25-1337    27-1444   *30-1519   *30-1564    32-1625   *34-1686   
C.CDCT	  000052  G	#5-119      26-1376    26-1426   *28-1469   *34-1688   *41-2026    41-2027   
C.CFET	  000172  G	#5-119      5-119      18-869     23-1182    30-1539    34-1690   
C.CMSQ	  000062  G	#5-119      24-1235   *24-1235    24-1252   *24-1252   *24-1252    24-1252   *24-1252    35-1719   
                        *35-1719   *35-1719    35-1719   *35-1719   
C.CNT 	  000020	 17-810     22-1147   *22-1163    24-1226   *24-1267   *26-1431   *30-1537   *30-1550    30-1559   
                        *31-1574   *36-1744   *36-1755   *43-2125   
C.CNT2	  000030	*36-1754    36-1755   
C.COLC	  000026  G	#5-119     *34-1682   *39-1839   *41-1929   *41-2021   
C.CSR 	  000022  G	#5-119      32-1602    34-1669    39-1844    39-1848    41-1919    43-2108   
C.DDMQ	  000044  G	#5-119      29-1497    38-1798   *38-1798   *38-1798    38-1798   *38-1798    39-1829    39-1836   
                        *39-1836    41-2013    43-2124   *43-2124   *43-2124    43-2124   *43-2124   
C.DFET	  000204  G	#5-119      5-119      18-879     23-1186    34-1692   
C.DFSP	  000130  G	#5-119     *15-712     16-748    *16-761     17-800    
C.DLCQ	  000072  G	#5-119      15-704    *15-705     15-706     15-723     17-793     17-803     17-816    *17-816    
                        *17-816     17-816    *17-816     29-1498    38-1802   *38-1802   *38-1802    38-1802   *38-1802   
C.DMAD	  000102  G	#5-119      17-785     17-787    *17-788     17-791    *17-808    *17-809    *17-814    *34-1674   
                        *34-1675   *38-1812   *38-1813   
C.DMBS	  000106  G	#5-119     *17-783    *17-810    *17-815    *34-1676   *38-1814   
C.DMSQ	  000110  G	#5-119     *18-849    *25-1298    25-1326   
C.DTXL	  000127  G	#5-119     *16-741     16-743    *16-747     16-757    *16-764    
C.DTXT	  000132  G	#5-119     *16-734     16-735     16-759    
C.DWAK	  000126  G	#5-119      15-708    *16-750    *16-755    *17-805    *22-1153    28-1477   *28-1479    29-1500   
                         32-1596   *34-1673   *38-1810   
C.FNC 	  000010	*36-1757   
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

C.HUNG	  000027  G	#5-119      32-1612   *32-1614   *34-1683   *39-1843   *39-1849   *41-1916   *41-2076   
C.IOCN	  000056  G	#5-119     *22-1168   *24-1269   *26-1434   *30-1563   *31-1577   *33-1642   *33-1644   *34-1680   
                         35-1726   *37-1780    39-1826   
C.IOWT	  000060  G	#5-119      32-1587   *34-1681   *35-1723    35-1732   *35-1733   
C.LDAT	  000036  G	#5-119      41-2007   *41-2031    41-2044   *41-2062   
C.LIN 	  000006	*12-599    *14-678    *14-680    *22-1167   *24-1268   *26-1433   *30-1562   *31-1576   *36-1743   
                        *36-1751   *37-1779   *37-1786   *38-1803   
C.MFLG	  000076  G	#5-119     *15-716    
C.MOD 	  000011	*22-1166    24-1222   *31-1575   *37-1778   
C.MSGA	  000120  G	#5-119      22-1135    22-1136   *22-1137   *22-1145   *22-1146   *34-1677   *34-1678   
C.MSGQ	  000114  G	#5-119      19-909     22-1148   *22-1148    22-1158    22-1161    22-1165   *22-1165   *22-1165   
                         22-1165   *22-1165    29-1499    38-1806   *38-1806   *38-1806    38-1806   *38-1806   
C.MSGS	  000124  G	#5-119     *22-1133   *22-1140   *22-1147    22-1163   *22-1171   *34-1679   *38-1815   
C.NFSP	  000100  G	#5-119     *18-853     19-912    *19-939    *20-985    
C.NRDA	  000042  G	#5-119     *41-2020    41-2038    41-2056    42-2103    43-2122    43-2128   
C.PBRC	  000112  G	#5-119     *21-1054    21-1057   
C.PRI 	  000020  G	#5-119      41-1915    43-2111    43-2113   
C.PUBP	  000030  G	#5-119     *34-1672   *38-1811   *39-1837    41-1942    41-1998    41-1999   *41-2014   *41-2016   
                         41-2019   *41-2072    42-2100    42-2102    43-2116    43-2117   
C.PUBS	  000040  G	#5-119     *41-2032   *41-2036   *41-2049   *41-2051   *41-2058   *41-2064   *41-2070    43-2120   
C.RATT	  000067  G	#5-119      25-1333    26-1349   *26-1351    26-1367   *26-1435    27-1442    32-1617   *32-1619   
                         32-1621   *34-1685    43-2134   *43-2136   
C.RECO	  000066  G	#5-119     *24-1272    32-1591   *32-1593   *34-1684   
C.RST 	  000024  G	#5-119     *41-1920    41-1924    41-2074    42-2081   
C.SGHD	  000034  G	#5-119      41-2001   *41-2030   *41-2037   *41-2055   
C.SLN 	  000054  G	#5-119      12-599     14-678     14-680     22-1167    24-1268    26-1433    30-1562    31-1576   
                         36-1743    36-1751    37-1779    37-1786    38-1803   
C.STRT	  000071  G	#5-119      32-1608   *34-1687   *39-1833   *39-1838   *39-1850    39-1861   
C.STS 	  000012	*15-695     17-794     17-817    *22-1144   *22-1160   *22-1162    22-1167   *24-1275   *36-1742   
                        *36-1756    37-1779   *37-1784    37-1786   
C.TIMC	  000000  G	#5-119     
C.TIMI	  000001  G	#5-119      34-1695   
DC1   	= 000021	#9-219      10-371    
DC2   	= 000022	#9-220      10-372    
DC3   	= 000023	#9-221      10-373    
DC4   	= 000024	#9-222      10-403    
DDMRCP	  006022 R	#37-1769    43-2131   
DEL   	= 000177	#9-235      10-347    
DFSLEP	  001066 R	#16-734     17-805     22-1153   
DFWAKE	  001152 R	 15-710    #16-755     32-1598   
DLE   	= 000020	#9-218      10-500    
DM.ASC	= 000001	#6-125     
DM.AS8	= 000005	#6-125     
DM.AUG	= 000004	#6-125     
DM.CLI	= 000002	#6-125      41-1949   
DM.EBC	= 000003	#6-125     
DTXTSZ	= 000020  G	#5-119      5-119      16-743    
DUMP  	  004334 R	 24-1286   #27-1441   
DWAKP 	= 000002  G	#5-119     
DWAKR 	= 000004  G	#5-119      28-1477   
DWAKS 	= 000001  G	#5-119      15-708     17-805    
DWAKT 	= 000003  G	#5-119      22-1153    28-1479    32-1596   
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

EJECT 	= 000002	#40-1871   
EM    	= 000031	#9-227      10-420    
ENQ   	= 000005	#9-207      10-434    
EOFASC	= 007417	#6-125      41-1940   
EOT   	= 000004	#9-206      10-307    
EO.ASC	= 000001	#6-125     
EO.IMG	= 000002	#6-125     
ERRCHR	= 000334	#9-236      10-301     10-303     10-304     10-305     10-306     10-331     10-344     10-346    
                         10-361     10-374     10-375     10-377     10-381     10-390     10-391     10-392     10-393    
                         10-399     10-400     10-401     10-402     10-405     10-409     10-410     10-411     10-421    
                         10-422     10-429     10-430     10-431     10-432     10-433     10-440     10-441     10-442    
                         10-443     10-444     10-445     10-446     10-450     10-451     10-452     10-453     10-454    
                         10-455     10-456     10-460     10-461     10-462     10-463     10-464     10-465     10-466    
                         10-470     10-471     10-472     10-473     10-474     10-475     10-476     10-480     10-481    
                         10-482     10-483     10-484     10-485     10-486     10-490     10-491     10-492     10-493    
                         10-494     10-495     10-496     10-499     10-501     10-502     10-503     10-504     10-505    
                         10-506     10-509     10-511     10-512     10-513     10-514     10-515     10-516     41-1974   
ERROR 	= 100000	#40-1885   
ESC   	= 000033	#9-229      10-396    
ETB   	= 000027	#9-225      10-395    
ETX   	= 000003	#9-205      10-343    
FB.CA 	= 000100  G	#5-119      5-119      5-119      5-119      21-1027   
FB.CL0	= 000000  G	#5-119     
FB.CL1	= 000001  G	#5-119      5-119      5-119      5-119      20-967     21-1031   
FB.CP 	= 000040  G	#5-119      18-900    
FB.SST	= 000020  G	#5-119      5-119      5-119      20-962     21-1045    21-1096   
FB.STE	= 000010  G	#5-119      5-119      5-119      21-1089   
FB.STR	= 000004  G	#5-119      20-978     20-989     21-1037    21-1049    21-1093    21-1100   
FB.WRD	= 000002  G	#5-119      20-978     21-1037    21-1093   
FC.CLM	= 000003	#6-125     
FC.CL0	= 000000	#6-125     
FC.CL1	= 000001	#6-125      20-969     21-1033   
FC.RCP	= 000014	 36-1757   
FC.SST	= 000002	#6-125      18-872     21-1025   
FEACON	  001720 R	#19-906     19-940     20-986     21-1083   
FEATRS	  001464 R	 15-722    #18-844    
FEFND 	  003176 R	 18-885     18-889    #23-1182   
FERBCL	  001770 R	#19-919     21-1032   
FERCPN	  002012 R	 18-901    #19-925    
FERDNP	  002026 R	#19-929    
FERERR	  002004 R	 18-873    #19-923     21-1028    21-1041    21-1071   
FERNEB	  002020 R	#19-927    
FERNST	  001776 R	#19-921     21-1082   
FERUSF	  001762 R	 18-890    #19-917    
FE.ALL	= 000377	#6-125      18-866    
FE.DAT	= 000001	#6-125     
FE.DVT	= 000006	#6-125     
FE.DWD	= 000011	#6-125     
FE.EOF	= 000005	#6-125     
FE.ESC	= 000000	#6-125     
FE.FNM	= 000010	#6-125     
FE.FWD	= 000004	#6-125     
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 5

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

FE.LCR	= 000003	#6-125     
FE.SER	= 000002	#6-125     
FE.TRN	= 000007	#6-125     
FF    	= 000014	#9-214      10-413    
FLSBUF	  005254 R	 33-1643   #33-1646    37-1775    38-1799    38-1807   
FLUSHQ	  006144 R	 29-1503    35-1717   #38-1795   
FNCOTR	= 000022	#12-565    
FREAD 	  002072 R	 18-903    #20-957     21-1046    21-1078   
FR.BCL	= 000002	#6-125      19-919    
FR.CPN	= 000005	#6-125      19-925    
FR.DNP	= 000007	#6-125      19-929    
FR.ERR	= 000004	#6-125      19-923    
FR.NEB	= 000006	#6-125      19-927    
FR.NST	= 000003	#6-125      19-921    
FR.USF	= 000001	#6-125      19-917    
FS    	= 000034	#9-230      10-423    
FSET  	  002302 R	 18-904    #21-1025   
F.FCV 	= 000001  G	#5-119      20-996     21-1060   *21-1095    21-1104    41-1934    41-1948    41-2021   
F.FSB 	= 000000  G	#5-119     
F.FSV 	= 000002  G	#5-119      21-1095    21-1106    21-1107   
GB    	  001224 R	 15-713     15-715    #17-783     17-811     18-848     18-851     18-855     18-857     18-859    
                         18-863     21-1035    21-1043    21-1053    21-1055    21-1074    25-1297    25-1299   
GBDQ  	  001372 R	 17-797    #17-814     19-913     25-1321    25-1342   
GETMBF	  005740 R	 22-1142    24-1249    26-1371    30-1529    31-1569   #36-1749   
GETPBF	  005706 R	#36-1740    39-1831   
GOOSCR	  006604 R	#39-1843   
GS    	= 000035	#9-231      10-424    
HOCHK 	= 020000	#40-1882    42-2083   
HT    	= 000011	#9-211      10-345    
INTENB	= 000100	 39-1844   #40-1872   
INTERR	  007600 R	 41-1922    41-1931   #42-2081   
KISAR6	= 172354	*14-652    *17-785    *19-910    *22-1135   *24-1253   *24-1260   *37-1771    41-1917   *41-1998   
                        *41-2017   *41-2078   *42-2102   *43-2110    43-2114   *43-2116   *43-2142   
LF    	= 000012	#9-212      10-394    
LP.CHS	= 000210	#6-125     
LP.CVF	= 000205	#6-125     
LP.FCC	= 000206	#6-125     
LP.HT 	= 000202	#6-125     
LP.OPV	= 000212	#6-125     
LP.OVP	= 000204	#6-125     
LP.PLE	= 000211	#6-125     
LP.SFC	= 000203	#6-125     
LP.VFR	= 000207	#6-125     
LS.ABO	= 100201	#4-105      14-680     38-1803   
LS.BOM	= 100205	#4-105     
LS.CLO	= 100203	#4-105     
LS.ILM	= 100204	#4-105      14-678    
LS.REJ	= 100202	#4-105      24-1275    34-1698   
L$$SI1	= ******	 17-816     17-816     22-1148    22-1148    22-1165    22-1165    22-1165    24-1235    24-1235   
                         24-1252    24-1252    35-1719    35-1719    35-1719    38-1798    38-1798    38-1798    38-1802   
                         38-1802    38-1802    38-1806    38-1806    38-1806    39-1836    39-1836    43-2124    43-2124   
MB    	  002664 R	 18-845     18-847     18-850     18-854     19-931     19-934     19-936     19-938     20-958    
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 6

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         20-965     20-971     20-974     20-981     20-984     20-993     20-999     20-1006    20-1009   
                        #22-1133    22-1150    25-1323    25-1325    25-1327    25-1329    25-1331   
MBSND 	  003026 R	 19-914    #22-1158    25-1332   
MOCHK 	= 010000	#40-1880    42-2087   
M$$MGE	= 000000	 5-119      14-652     17-785     19-910     22-1135    24-1253    24-1260    37-1771    41-1917   
                         41-1998    41-2015    41-2078    42-2102    43-2110    43-2114    43-2116    43-2142   
NAK   	= 000025	#9-223      10-404    
NA.DTO	= 000004	#6-125      26-1406   
NA.FAT	= 000001	#6-125      26-1383   
NA.INK	= 000040	#6-125     
NA.IVP	= 000001	#6-125      26-1417   
NA.JAM	= 000020	#6-125     
NA.NAC	= 000002	#6-125     
NA.NOE	= 000100	#6-125     
NA.OFL	= 000002	#6-125      26-1387   
NA.OMD	= 000010	#6-125      26-1395   
NA.OOF	= 000040	#6-125     
NA.OUF	= 000001	#6-125      26-1402   
NA.OVP	= 000001	#6-125     
NA.PAU	= 000004	#6-125      26-1391   
NA.PF 	= 000020	#6-125      26-1410   
NA.PSE	= 000020	#6-125     
NA.RAP	= 000040	#6-125     
NA.REG	= 000100	#6-125     
NA.RNA	= 000010	#6-125     
NC.AUC	= 000002	#6-125     
NC.AUE	= 000001	#6-125     
NC.CAB	= 000003	#6-125     
NC.DMP	= 000005	#6-125     
NC.PAU	= 000006	#6-125     
NC.RES	= 000007	#6-125     
NC.RQC	= 000011	#6-125     
NC.RQS	= 000004	#6-125     
ND.ACK	= 000001	#6-125     
ND.CMP	= 000200	#6-125      41-2061   
ND.EOF	= 000004	#6-125      37-1773    43-2129   
ND.IER	= 000002	#6-125      42-2104   
NF.CMD	= 000001	#6-125      18-870     18-902     20-961    
NF.STD	= 000002	#6-125      20-964    
NM.ALR	= 000004	#6-125      31-1572   
NM.ATT	= 000001	#6-125      26-1374   
NM.CAP	= 000005	#6-125      30-1533   
NM.CTL	= 000003	#6-125      15-717     24-1262    25-1322   
NM.DAT	= 000000	#6-125      41-2024   
NM.FTR	= 000002	#6-125      18-844    
NM.OTR	= 000006	#6-125     
NM.TYP	= 000017	#6-125      6-125      6-125      6-125      6-125      6-125      6-125      6-125      14-655    
NRDACK	  006120 R	 17-818     24-1257    35-1720   #37-1784   
NRDOTR	= 000006	 14-656     14-658    #14-668    
NRDRET	  006124 R	 15-696     24-1276   #37-1786   
NRMACK	  000560 R	 12-582     12-583     12-584     12-585    #12-599    
NR.ABS	= 000000	#6-125     
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 7

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

NR.ACC	= 000000	#6-125     
NR.ACN	= 000001	#6-125      29-1512   
NR.ATT	= 000000	#6-125     
NR.CAP	= 000000	#6-125     
NR.DMP	= 000000	#6-125     
NR.DPS	= 000000	#6-125     
NR.NAB	= 000001	#6-125      29-1502   
NR.NDP	= 000002	#6-125     
NR.NDR	= 000002	#6-125     
NR.NDV	= 100377	#4-105     
NR.NOB	= 000001	#6-125     
NR.NOE	= 000002	#6-125     
NR.NPS	= 000001	#6-125      28-1476   
NR.PAU	= 000001	#6-125      27-1459   
NR.RES	= 000000	#6-125     
NT$DAT	= 000002	 22-1166    36-1757    37-1778   
NT$INT	= 000004	 24-1222    31-1575   
NT.BOM	= 000040	 22-1160    24-1268    26-1433    30-1562    31-1576    36-1742    36-1756   
NT.EOM	= 000100	 17-794     17-798     22-1162    24-1268    26-1433    30-1562    31-1576    36-1742    36-1756   
NUL   	= 000000	#9-202      10-510    
N.AABC	= 000004	#6-125     
N.AACK	= 000002	#6-125     
N.ACOD	= 000003	#6-125     
N.AFLG	= 000004	#6-125     
N.ALGD	= 000002	#6-125     
N.APLE	= 000005	#6-125     
N.ARQS	= 000003	#6-125      26-1351   
N.ASTC	= 000001	#6-125      32-1619    43-2136   
N.CCMD	= 000003	#6-125      24-1226    24-1228    24-1255   
N.CRES	= 000004	#6-125      24-1267   
N.CSEQ	= 000002	#6-125      24-1256   
N.DDAT	= 000005	#6-125      41-2032   
N.DFLG	= 000003	#6-125      37-1773   *42-2104   *43-2129   
N.DSEQ	= 000002	#6-125     
N.DSGC	= 000004	#6-125     *41-2039   *41-2057   *43-2123   
N.FCLS	= 000002	#6-125     
N.FDAT	= 000004	#6-125     
N.FFLG	= 000001	#6-125     
N.FID 	= 000000	#6-125     
N.FRSP	= 000003	#6-125     
N.FSEQ	= 000002	#6-125     
N.FSPC	= 000004	#6-125     
N.MFL 	= 000001	#6-125     
N.NSPC	= 000003	#6-125     *19-912    
N.PCAP	= 000003	#6-125     
N.PCNT	= 000002	#6-125     
N.TYP 	= 000000	#6-125     
PAUSE 	  004356 R	 24-1287   #27-1453   
PR7   	= 000340	 17-816     22-1148    22-1165    24-1235    24-1252    35-1719    38-1798    38-1802    38-1806   
                         39-1836    43-2124   
PS    	= 177776	 17-816     17-816     17-816     22-1148    22-1148    22-1148    22-1165    22-1165    22-1165   
                         22-1165    24-1235    24-1235    24-1235    24-1252    24-1252    24-1252    35-1719    35-1719   
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 8

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

                         35-1719    35-1719    38-1798    38-1798    38-1798    38-1798    38-1802    38-1802    38-1802   
                         38-1802    38-1806    38-1806    38-1806    38-1806    39-1836    39-1836    39-1836    43-2124   
                         43-2124    43-2124   
QDLC  	  000750 R	 15-694    #15-698     24-1224   
QTODLC	  000726 R	 14-664    #15-693    
RDAHD 	= 000005	#4-114      39-1826   
RDROFL	= 000400	 32-1602   #40-1876    42-2095   
RDRONL	= 002000	#40-1878   
READ  	= 000001	 39-1844   #40-1870   
RECON 	  003356 R	#24-1249    32-1594   
RESUME	  004406 R	 24-1288   #28-1464   
RS    	= 000036	#9-232      10-425    
SETSTD	  002532 R	 21-1080   #21-1089    34-1710   
SI    	= 000017	#9-217      10-416    
SNDALR	  004762 R	#31-1569    32-1604   
SNDATT	  004014 R	 25-1335   #26-1366    32-1623    43-2137   
SNDCAP	  004614 R	 25-1339   #30-1529    32-1627   
SNDSTS	  003774 R	 24-1285   #26-1348   
SO    	= 000016	#9-216      10-415    
SOH   	= 000001	#9-203      10-341    
SPA   	= 000040	#9-234     
STOPCR	  006622 R	 29-1494    35-1715    38-1796   #39-1848   
STRTCR	  006456 R	 28-1473    32-1610   #39-1822    39-1864    43-2140   
STX   	= 000002	#9-204      10-342    
SUB   	= 000032	#9-228      10-406    
SYN   	= 000026	#9-224      10-302    
TIMERR	= 004000	#40-1879    42-2091   
US    	= 000037	#9-233      10-426    
VF.6LI	= 000001	#6-125     
VF.8LI	= 000002	#6-125     
VT    	= 000013	#9-213      10-412    
ZONTAB	  000330 R	#11-522     41-1971   
ZON0  	  000000 R	#10-249     11-533     11-533    
ZON1  	  000040 R	#10-289     11-533     11-533    
ZON10 	  000020 R	#10-269     11-533     11-533    
ZON11 	  000130 R	#10-359     11-533     11-533    
ZON12 	  000140 R	#10-369     11-533     11-533    
ZON13 	  000210 R	#10-418     11-533     11-533    
ZON14 	  000120 R	#10-349     11-533     11-533    
ZON15 	  000270 R	#10-478     11-533     11-533    
ZON16 	  000300 R	#10-488     11-533     11-533    
ZON17 	= ******	 11-533    
ZON2  	  000050 R	#10-299     11-533     11-533    
ZON20 	  000010 R	#10-259     11-533     11-533    
ZON21 	  000100 R	#10-329     11-533     11-533    
ZON22 	  000110 R	#10-339     11-533     11-533    
ZON23 	  000200 R	#10-408     11-533     11-533    
ZON24 	  000070 R	#10-319     11-533     11-533    
ZON25 	  000230 R	#10-438     11-533     11-533    
ZON26 	  000240 R	#10-448     11-533     11-533    
ZON27 	  000320 R	#10-508     11-533     11-533    
ZON3  	  000170 R	#10-398     11-533     11-533    
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 9

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ZON30 	  000060 R	#10-309     11-533     11-533    
ZON31 	  000250 R	#10-458     11-533     11-533    
ZON32 	  000260 R	#10-468     11-533     11-533    
ZON33 	  000310 R	#10-498     11-533     11-533    
ZON34 	= ******	 11-533    
ZON35 	= ******	 11-533    
ZON36 	= ******	 11-533    
ZON37 	= ******	 11-533    
ZON4  	  000030 R	#10-279     11-533     11-533    
ZON5  	  000150 R	#10-379     11-533     11-533    
ZON6  	  000160 R	#10-388     11-533     11-533    
ZON7  	  000220 R	#10-428     11-533     11-533    
ZTAB  	  000430 R	#11-539     41-1969    41-1989    41-1994   
$CCBRT	= ******  GX	 33-1650    39-1856    39-1859   
$CRINT	  006700 RG	#41-1915   
$CRTB 	  000450 RG	#12-556     12-565    
$CSBGT	= ******  GX	 36-1749   
$CSBRT	= ******  GX	 33-1653   
$CTCMP	= ******  GX	 12-599     34-1701    35-1735   
$INTSX	= ******  GX	 43-2112   
$INTX7	= ******  GX	 41-2079   
$RCCMP	= ******  GX	 22-1167    24-1268    26-1433    30-1562    31-1576    37-1779   
$RDBGT	= ******  GX	 36-1740   
$RDBRT	= ******  GX	 33-1655   
$RDBSZ	= ******  GX	 36-1744   
$SDBSZ	= ******  GX	 36-1754   
$XMCMP	= ******  GX	 14-678     14-680     37-1786    38-1803   
$$    	= 000040	#11-523     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533     11-533     11-533    
                        #11-533     11-533     11-533    #11-533     11-533     11-533    #11-533    
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 10

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 12-599     14-678     14-680     15-713     15-715     15-719     15-722     17-797     17-805     17-818    
                 18-845     18-847     18-848     18-850     18-851     18-854     18-855     18-857     18-859     18-863    
                 18-885     18-889     19-913     19-931     19-934     19-936     19-938     20-958     20-965     20-971    
                 20-974     20-981     20-984     20-993     20-999     20-1006    20-1009    21-1035    21-1043    21-1053   
                 21-1055    21-1074    21-1080    22-1142    22-1153    22-1167    24-1236    24-1249    24-1257    24-1268   
                 24-1276    25-1297    25-1299    25-1308    25-1321    25-1323    25-1325    25-1327    25-1329    25-1331   
                 25-1332    25-1335    26-1371    26-1433    28-1473    29-1494    30-1529    30-1562    31-1569    31-1576   
                 32-1594    32-1598    32-1604    32-1610    32-1623    32-1627    34-1691    34-1693    34-1710    35-1715   
                 35-1717    35-1720    36-1740    36-1749    37-1779    37-1786    38-1796    38-1799    38-1803    38-1807   
                 39-1831    39-1859    43-2131    43-2137    43-2140   
CALLR 		#12-572    #12-588    #14-660    #15-696    #15-710    #18-904    #19-914    #21-1071   #21-1078   #21-1082   
                #21-1083   #24-1224   #25-1339   #25-1342   #29-1503   #32-1589   #33-1650   #33-1653   #33-1655   #34-1701   
                #35-1735   #37-1775   #39-1856   #39-1864   #41-1922   #41-1926   #41-1931   #41-2079   
CCBDF$		#4-97      #4-100     
CRASH 		#7-144     #16-745    
CRDLT$		#4-97      #5-119     
DEQ$  		#8-171      17-816     22-1165    24-1252    35-1719    38-1798    38-1802    38-1806    43-2124   
DFHYBE		#7-149     #17-805    #22-1153   
ENABL$		#4-96      #17-816    #22-1148   #22-1165   #22-1165   #24-1235   #24-1252   #35-1719   #35-1719   #38-1798   
                #38-1798   #38-1802   #38-1802   #38-1806   #38-1806   #39-1836   #43-2124   
ENQ$  		#8-191     #22-1148   #24-1235   #39-1836   
HWDDF$		#4-97       4-98      #14-652     14-652    #17-785     17-785    #19-910     19-910    #22-1135    22-1135   
                #24-1253    24-1253   #24-1260    24-1260   #37-1771    37-1771   #41-1917    41-1917   #41-1998    41-1998   
                #41-2078    41-2078   #42-2102    42-2102   #43-2110    43-2110   #43-2114    43-2114   #43-2116    43-2116   
                #43-2142    43-2142   
INHIB$		#4-96       17-816     22-1148    22-1165    24-1235    24-1252    35-1719    38-1798    38-1802    38-1806   
                 39-1836    43-2124   
MAP   		#4-97       14-652     17-785     19-910     22-1135    24-1253    24-1260    37-1771    41-1998    42-2102   
                 43-2116   
NRDIN$		#4-97       4-105     
NSPDF$		#4-97       4-99      
NURDF$		#4-97       6-125     
POP   		#7-137     #17-819    #19-937    #21-1070   #21-1077   #21-1108   #21-1124   #22-1149   #22-1152   #23-1200   
                #23-1204   #24-1259   #25-1319   #25-1330   #26-1436   #30-1558   #34-1700   #35-1722   #38-1817   #41-2077   
                #43-2109   #43-2141   
PUSH  		#7-130     #17-817    #19-917    #19-919    #19-921    #19-923    #19-925    #19-927    #19-929    #21-1066   
                #21-1072   #21-1102   #21-1114   #22-1141   #23-1183   #24-1251   #25-1304   #25-1320   #26-1366   #30-1535   
                #30-1538   #34-1666   #35-1718   #38-1795   #41-1918   #43-2115   
RESMAP		#4-97      #41-2078   #43-2110   #43-2142   
RETURN		#12-600    #14-679    #14-681    #15-725    #16-751    #16-772    #17-789    #17-801    #17-820    #21-1092   
                #21-1110   #21-1126   #22-1138   #22-1172   #23-1202   #23-1206   #24-1270   #24-1273   #24-1278   #25-1343   
                #26-1352   #26-1437   #27-1447   #27-1457   #27-1460   #28-1481   #29-1491   #29-1510   #29-1513   #30-1520   
                #30-1565   #31-1578   #32-1630   #34-1712   #35-1729   #36-1745   #36-1758   #37-1781   #37-1787   #38-1818   
                #39-1834   #39-1845   #39-1851   #39-1863   #43-2143   
SAVMAP		#4-97       41-1917    43-2114   
SOB   		#21-1076   #21-1123   #30-1551   #34-1711   
TMPDF$		#5-119     #5-119     
$INTSX		#4-97       43-2112   
$INTXT		#4-97       41-2079   
$TOBDM		#7-159     #12-599    #14-678    #14-680    #22-1167   #24-1268   #26-1433   #30-1562   #31-1576   #37-1779   
                #37-1786   #38-1803   
.BIN  		#5-119     
CR         CREATED BY  MACRO  ON 13-OCT-79 AT 08:31	PAGE 11

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

.CNB  		#5-119     
.CNW  		#5-119     
.CORE 		#5-119     
.CSR  		#5-119     #5-119     
.DVCHA		#5-119     
.INT  		#5-119     #5-119     
.INT1 		#5-119     
.INT2 		#5-119     
.INT3 		#5-119     
.LFLHD		#5-119     
.LIBR 		#5-119     
.LINKS		#5-119     
.LSTHD		#5-119     #5-119     #5-119     #5-119     #5-119     
.LTAB 		#5-119     
.MPLHD		#5-119     
.POOL 		#5-119     
.PRI  		#5-119      5-119     
.SCOM 		#5-119     
.SECSR		#5-119     
.SLNB 		#5-119     
.SLNW 		#5-119      5-119     
.STNB 		#5-119     
.STNW 		#5-119     
.UNB  		#5-119     
.UNW  		#5-119     
.VFY  		#5-119