Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/utilities/nurd.lst
There are no other files named nurd.lst in the archive.
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 1
NURD	MAC	21-Mar-80 10:15	

     1						TITLE	NURD20 Module for Readers and Printers
     2
     3					; COPYRIGHT (C) 1978, 1979 BY
     4					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
     5					;
     6					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
     7					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
     8					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY  OTHER
     9					; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
    10					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE  SOFTWARE  IS  HEREBY
    11					; TRANSFERRED.
    12					;
    13					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  NOTICE
    14					; AND  SHOULD  NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT
    15					; CORPORATION.
    16					;
    17					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF  ITS
    18					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
    19
    20
    21
    22
    23
    24					; ++
    25					; Facility: GALAXY for DN200
    26					;
    27					; Abstract:
    28					;  This module implements the DECnet network unit record device protocol
    29					;  (NURD).  It simulates TOPS-20 JSYS calls for card readers and line
    30					;  printers.  The simulated JSYS's include GTJFN, OPENF, SINR, SOUT, MTOPR,
    31					;  and CLOSF.  Interrupt processing is similar to that observed for the
    32					;  local card reader and line printer.
    33					;
    34					; Environment: TOPS-20 user mode
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 2
NURD	MAC	21-Mar-80 10:15	

    35					; Modified:
    36					;  16	Add copyright and other information so that this turkey can
    37					;	be released into loadtest.
    38					;
    39					;  17	XLIST the literals, etc.
    40					;
    41					;  20	Restore registers before turning on interrupt system, so that
    42					;	interrupts into the GALAXY context have the GALAXY registers.
    43					;
    44					;  21	Make sure that certain "OWN" locations get a separate copy in
    45					;	each fork where we execute.  This prevents some interesting
    46					;	problems with multiple DN200s.
    47					;
    48					;  22	Fix MTOPR status problem and put ERJMP following SNDINT MTOPR.
    49					;	 Interrupt setup code did not save AC3.
    50					;
    51					;  23	Fix bug in LMOFLO where confusion over dump buffers and control
    52					;	responses were causing problems.
    53					;
    54					;  24	Resolve further problems with flushing buffers.
    55					;
    56					;  25	Do effective address calculation on user byte pointer in USIN.
    57					;
    58					;  26	Do more effective effective-address calculation on user byte
    59					;	pointers.  Provided routine EFADBY, which alters byte pointer
    60					;	to reflect effective address.  Also, changed USIN, USOUT, and
    61					;	MAPDEV to use this routine.
    62					;
    63					;  27	Put SETER JSYS in NURD error return, at ERRTN.
    64					;
    65					;  30	Changed reader input (USIN) so that EOF detection causes
    66					;	ERJMP/ERCAL processing.  Also fixed EOF detection code.
    67					;
    68					;  31	Fixed bug introduced in edit #27 - a clumsy typo.
    69					;
    70					;  32	Fixed addressing error in TYPATT, and also repaired trivial typo.
    71					;
    72					;  33	Fix logic to process disconnects on links correctly.
    73					;
    74					;  34	Fix NRM and NRD file spec generators to use different control ID's.
    75					;
    76					;  35	Fix UGTJFN to get rid of aborted NRM JFN's.
    77					;
    78					;  36	Fix UCLOSF to close JFN's with CZ%ABT, so that JFN's go away
    79					;	correctly.
    80					;
    81					;  37	Fix bug in USIN which caused loss of last card read if reader went
    82					;	offline.
    83					;
    84					;  40	Change usage of IOX69 error code to DCNx8 because IOX69 is no longer
    85					;	valid.
    86					;
    87					;  41	Allow 8-bit ASCII mode.
    88					;
    89					;  42	Code cleanup, reformatting, and general bug-fixup.
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 2-1
NURD	MAC	21-Mar-80 10:15	

    90					;
    91					;  43	Rewrote interrupt handling code.
    92					;
    93					;  44	Fixed glitch in UOPENF, where legal device/mode checked.
    94					;
    95					;  45	Changed exit-time handling of interrupts because LPTSPL calls
    96					;	us back recursively, causing an endless set of IIC's when the
    97					;	device goes offline.
    98					;
    99					;  46	Added defensive code in the interrupt handler routines.
   100					;
   101					;  47	Fixed handling of device-online interrupt.  Wrong R value
   102					;	was being used to load interrupt channel number.
   103					;
   104					;  50	Added code to solve race condition occurring when online
   105					;	indication arrives before offline indication.
   106					;
   107					;  51	Fixed NRDR macro code generation - it caused improper setting
   108					;	of info on stack, subsequently causing program execution to
   109					;	be improperly dispatched. Also did away with the NRDRJ macro,
   110					;	as it is not needed. Fixed bug in SOUTR error handling.
   111					;
   112					;  52	Repaired typo in USOUT which caused illegal instruction trap
   113					;	whenever output error was processed for the network.
   114					;
   115					;  53	Fixed bug in data message processing for USIN. This bug caused
   116					;	the message length to always appear to be zero.
   117					;
   118					;  54	Fixed problem caused by double edit to fix previous bug
   119
   120
   121					; VERSION NUMBER:
   122			000000			NRDWHO==0			; WHO LAST EDITED
   123			000001			NRDMAJ==1			; MAJOR VERSION NUMBER
   124			000002			NRDMIN==2			; MINOR VERSION NUMBER
   125			000054			NRDEDT==54			; EDIT NUMBER
   126
   127		000102	000054		%%.NRD==BYTE (3)NRDWHO (9)NRDMAJ (6)NRDMIN (18)NRDEDT	; OUR VERSION NUMBER
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 3
NURD	MAC	21-Mar-80 10:15		AC's, Parameters, Constants, etc.

   128					SUBTTL	AC's, Parameters, Constants, etc.
   129
   130						SEARCH	GLXMAC
   131						PROLOG	(NURD20)^
   132
   133					^
   134
   135					; *****	Accumulators
   136
   137			000001			J1=1		; JSYS AC'S
   138			000002			J2=2		; ...
   139			000003			J3=3		; ...
   140			000004			J4=4		; ...
   141
   142			000005			A=5		; General usage
   143			000006			B=A+1		;   and function
   144			000007			C=B+1		;   arguments
   145			000010			D=C+1		;   ...
   146
   147			000011			T1=D+1		; Temporaries
   148			000012			T2=T1+1		; ...
   149
   150			000013			LS=T2+1		; Data Link Status (NRDSTS)
   151			000014			DS=LS+1		; Device Status    (NRDDST)
   152			000015			R=DS+1		; RDDB Pointer
   153
   154			000017			P=17		; Stack Pointer
   155
   156
   157					; *****	Configuration Parameters
   158
   159			001000			NRDBSZ==^D512	; NURD MSG BUFFER SIZE
   160			000020			IMSGSZ==^D16	; NSP INTERRUPT MSG SIZE(MAX)
   161			000020			NURDL==^D16	; LENGTH OF NRDR ERROR HISTORY
   162			000001			NRDLVL==1	; NURD PRIORITY INT LEVEL
   163			000043			NRDICH==^D35	; NRD DATA LINK INT CHANNEL FOR INTERRUPT MESSAGES
   164			000042			NRDDCH==^D34	; NRD DATA LINK INT CHANNEL FOR DATA RECEIVED INT
   165			000012			NRDTMO==^D10	; NUMBER OF HALF-SECOND INTERVALS FOR TIMEOUT
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 4
NURD	MAC	21-Mar-80 10:15		AC's, Parameters, Constants, etc.

   166					; *****	Constants and Other Such Trivia
   167
   168			000002			URS==2		; THE NURD DECNET OBJECT TYPE
   169
   170
   171					; *****	NRM Resource Types
   172
   173			000102			NRDLP==102	; REMOTE LINE PRINTER
   174			000103			NRDCR==103	; REMOTE CARD READER
   175
   176
   177					; *****	NRM Function Codes
   178
   179			000041			NRMRID==41	; NRM REQUESTOR-ID CODE
   180			000050			NRMSPC==50	; NRM SPECIFY CODE
   181			000001			    SPCRES==1		; RESERVE SUBCODE
   182			000003			    SPCREF==3		; REFER SUBCODE
   183			000004			    SPCOFF==4		; OFFER SUBCODE
   184			000051			NRMACC==51	; NRM ACCESS CODE
   185			000002			    ACCOPN==2		; OPEN SUBCODE
   186			000003			    ACCCLO==3		; CLOSE SUBCODE
   187			000004			    ACCREL==4		; RELEASE SUBCODE
   188			000052			NRMASN==52	; NRM ASSIGN CODE
   189			000003			    ASNHDN==3		; HANDOFF SUBCODE
   190			000004			    ASNACK==4		; ACKNOWLEDGE SUBCODE
   191			000047			NRMRSP==47	; NRM RESPONSE CODE
   192			000053			NRMSTA==53	; NRM STATUS CODE
   193			000001			    STAQRY==1		; QUERY SUBCODE
   194			000002			    STAREP==2		; REPORT SUBCODE
   195			000003			    STALTR==3		; ALTER SUBCODE
   196			000020			 STARLS==20	; PERFORM AUTOMATIC RELEASE FLAG
   197
   198
   199					; *****	NRM Status Report Codes
   200					;   Device Status
   201					;	    1	CLOSE PENDING
   202					;	    2	OPEN PENDING
   203					;	    4	OPEN COMPLETE
   204					;	  100	RELEASE PENDING
   205					;	  200	RESERVED
   206					;	  400	HANDOFF PENDING
   207					;	 2000	STATUS-REPORT PENDING
   208					;	 4000	OPERATIONAL STATUS PENDING
   209					;	10000	START ERROR PENDING
   210					;
   211					;   Asynchronous Report Status
   212					;	 1	RECEIVE ERROR THRESHOLD EXCEEDED
   213					;	 2	REPLY THRESHOLD EXCEEDED
   214					;	 3	NAK THRESHOLD EXCEEDED
   215					;	 4	DEVICE PROTOCOL ERROR - FATAL
   216					;	 5	INTERVENTION REQUIRED AT DEVICE
   217					;	 6	POWERFAIL
   218					;	 7	DATA PIPE DISCONNECTED
   219					;	10	DIAL-IN TERMINAL ATTACHED
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 5
NURD	MAC	21-Mar-80 10:15		Local Macros

   220					SUBTTL	Local Macros
   221
   222		254000	000000			OPDEF	$CALLR	[ JRST ]
   223
   224					;***
   225					;   NRDR	Dispatch to processing code via $CALL.
   226					;   NRDRC	   "     "      "       "    "  ERCAL.
   227					;
   228					;	ERRLOC = Error location, defaulting to NRDR invocation address.
   229					;	ERRCOD = Error code, defaulting to DCNX8.
   230					;		 A dot "." will cause the current value in J1 to be used.
   231					;	ERRDSP = Where to go after recording error.
   232					;		 Defaults to location following NRDR invocation.
   233					;***
   234
   235					DEFINE	NRDR.	(ERRLOC,ERRCOD,ERRDSP) <
   236					    $DSP [
   237						IFB  <ERRLOC>,<			;; If errloc not spec, use from stack
   238						    IFB	 <ERRCOD>,<		    ;; If no errcod, then
   239							HRLZ  J1,(P)		    ;;   just set pc
   240							SUB   J1,[1,,0]>	    ;;   & correct it to actual loc
   241						    IFNB <ERRCOD>,<		    ;; If errcod, then it may
   242							HRL   J1,(P)		    ;;    already be in J1 - save
   243							SUB   J1,[1,,0]		    ;;    J1 right half, and correct pc
   244										    ;;    Finally, set error code
   245							IFDIF <ERRCOD><(J1)>,<IFDIF <ERRCOD><.>,<HRRI J1,ERRCOD>>>>
   246						IFNB <ERRLOC>,<			;; If errloc specified
   247						    IFB  <ERRCOD>,<		    ;; If no errcod specified
   248							MOVSI J1,ERRLOC>	    ;;     simply set specified loc
   249						    IFNB <ERRCOD>,<		    ;; If errcod specified, then it may
   250							HRLI  J1,ERRLOC		    ;;     already be in J1
   251										    ;;    Finally, set error code
   252							IFDIF <ERRCOD><(J1)>,<IFDIF <ERRCOD><.>,<HRRI J1,ERRCOD>>>>
   253					
   254						IFNB <ERRDSP>,<			;; If errdsp specified, we want to
   255						    MOVEM J1,(P)		;;     go to somewhere special after
   256						    MOVEI J1,ERRDSP		;;     error processing. So replace
   257						    EXCH  J1,(P)>		;;     return addr on stack.
   258					    JRST  NRDERR]
   259					>
   260
   261					DEFINE	NRDR	(ERRLOC,ERRCOD,ERRDSP) <
   262					    DEFINE $DSP(DEST)<$CALL DEST>
   263						NRDR.	ERRLOC,ERRCOD,ERRDSP
   264					>
   265					DEFINE	NRDRC	(ERRLOC,ERRCOD,ERRDSP) <
   266					    DEFINE $DSP(DEST)<ERCAL DEST>
   267						NRDR.	ERRLOC,ERRCOD,ERRDSP
   268					>
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 6
NURD	MAC	21-Mar-80 10:15		Local Macros

   269					;***
   270					;   ERR		Dispatch to literal code via JRST.
   271					;   ERRC	   "     "     "     "    "  ERCAL.
   272					;   ERRJ	   "     "     "     "    "  ERJMP.
   273					;   ERRI	Generate in-line code.
   274					;
   275					;	ERRCOD = Error code to be loaded into J1.
   276					;	ERRDSP = Where to go after loading code into J1.
   277					;		 If not specified, J1 is simply loaded.
   278					;***
   279
   280					DEFINE	ERR.	(ERRCOD,ERRDSP) <
   281					    IFB  <ERRDSP>,<MOVEI J1,ERRCOD>
   282					    IFNB <ERRDSP>,<
   283						$DSP [ MOVEI J1,ERRCOD
   284						    IFIDN <ERRDSP><CPOPJ>,<$RET>
   285						    IFDIF <ERRDSP><CPOPJ>,<JRST  ERRDSP>]>
   286					>
   287
   288					DEFINE	ERR	(ERRCOD,ERRDSP) <
   289					    DEFINE $DSP(DEST)<JRST DEST>
   290						ERR.	ERRCOD,ERRDSP
   291					>
   292
   293					DEFINE	ERRC	(ERRCOD,ERRDSP) <
   294					    DEFINE $DSP(DEST)<ERCAL DEST>
   295						ERR.	ERRCOD,ERRDSP
   296					>
   297
   298					DEFINE	ERRJ	(ERRCOD,ERRDSP) <
   299					    DEFINE $DSP(DEST)<ERJMP DEST>
   300						ERR.	ERRCOD,ERRDSP
   301					>
   302
   303					DEFINE	ERRI	(ERRCOD,ERRDSP) <
   304						MOVEI J1,ERRCOD
   305					    IFNB <ERRDSP>,<
   306						IFIDN <ERRDSP><CPOPJ>,<$RET>
   307						IFDIF <ERRDSP><CPOPJ>,<JRST  ERRDSP>>
   308					>
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 7
NURD	MAC	21-Mar-80 10:15		Local Macros

   309					;***
   310					;   TYPE
   311					;
   312					;    STRING = The ASCII string to be output via PSOUT.  For example
   313					;		TYPE (This is the string to be typed.)
   314					;***
   315
   316					DEFINE	TYPE	(STRING) <
   317					LSTOF.
   318					    IFNB <STRING>,<MOVEI J1,[ASCIZ /STRING/]>
   319						PSOUT
   320					LSTON.
   321					>
   322						SALL			; DON'T LIST MACRO EXPANSIONS
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 8
NURD	MAC	21-Mar-80 10:15		Remote Device Data Base Definition

   323					SUBTTL	Remote Device Data Base Definition
   324
   325					; ***	IMPURE DATA  - PER FORK
   326	000000'				SUBJFN:: BLOCK	1	; SUBSTITUTE JFN FOR THIS FORK & PTR TO DATA BASE
   327	000001'	000000	000000		DEBUGF:	 0		; DEBUG FLAGS
   328	000002'	000000	000000		DEBUGR:	 0		; RCVMSG MONITOR WORD
   329
   330
   331
   332					; *** Remote Device Data Base (RDDB)
   333	000000					LOC	0
   334
   335					; * GENERAL AREA OF RDDB
   336	000000				RDSAVE:! BLOCK	17	; USER ACCUMULATOR SAVE AREA (0-16)
   337	000017				RDEPDL:! BLOCK	1	; U-JSYS ENTRY PDL
   338	000020				RDHOST:! BLOCK	2	; ASCIZ	<NODE>
   339	000022				RDDEV:!	 BLOCK	1	; ASCIZ	<DEV><UNIT>
   340	000023				RDSTS:!	 BLOCK	1	; JSYS SIMULATOR FLAGS
   341			000001		    UJ.XT2==      1		; (rh) JSYS HAS SKIP EXIT FOR SUCCESS
   342			000002		    UJ.INT==      2		;      INTERRUPTS ARE ENABLED BY USER
   343			000004		    UJ.TDS==      4		;      INTS ARE TEMPORARILY DISABLED BY NURD
   344			000010		    UJ.NRD==     10		;      NURD'S AC'S ARE LOADED, NOT USER'S
   345			100000		    UJ.RCV== 100000		;      DATA RECIEVED INTERRUPT HAS OCCURRED
   346			200000		    UJ.SSO== 200000		;      SOUTR SUSPENDED BEFORE COMPLETION
   347			400000		    UJ.FLS== 400000		;      FLUSH DATA BASE ON THE WAY OUT
   348	000024				RDERT:!	BLOCK	1	; PLACE TO REMEMBER ERROR RETURN ADDRESS
   349	000025				RDINTB:! BLOCK	1	; OLD PC SAVE ADDR ,, PLEVTB
   350
   351					; * NRM AREA OF RDDB
   352	000026				NRMJFN:! BLOCK	1	; NRM CONTROL LINK JFN
   353	000027				NRMID:!	 BLOCK	1	; CONTROL ID FOR DATA LINK
   354	000030				NRMSTS:! BLOCK	1	; CONTROL LINK STATUS
   355			000001		    NRM.CP== 1			; (rh) NRM CONNECT PENDING
   356			000002		    NRM.CC== 2			;      NRM CONNECT COMPLETE
   357			000004		    NRM.RS== 4			;      DEVICE RESERVED BY NRM
   358	000031				NRMCFL:! BLOCK	1	; NRM CONNECT FAILURE CODE
   359	000032				NRMAST:! BLOCK	1	; DEVICE STATUS FROM STATUS-REPORT
   360	000033				NRMASR:! BLOCK	1	; REASON CODE FOR ASYNCHRONOUS STATUS-REPORT
   361
   362					;(Cont'd)
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 9
NURD	MAC	21-Mar-80 10:15		Remote Device Data Base Definition

   363					; * NRD AREA OF RDDB
   364	000034				NRDJFN:! BLOCK	1	; NRD DATA LINK JFN
   365	000035				NRDULA:! BLOCK	1	; BULA FOR DATA LINK
   366	000036				NRDSTS:! BLOCK	1	; DATA LINK STATUS
   367			000001		    NRD.CP==      1		; (rh) NRD CONNECT PENDING
   368			000002		    NRD.CC==      2		;      NRD CONNECT COMPLETE
   369			000004		    NRD.LP==      4		;      SET=> DEVICE=LPT, NOT SET=> DEVICE=CDR
   370			000010		    NRD.IM==     10		;      COLUMN IMAGE MODE SET
   371			000020		    NRD.AI==     20		;      AUGMENTED COLUMN IMAGE MODE SET
   372			000040		    NRD.OP==     40		;      DEVICE OPEN PENDING
   373			000100		    NRD.OC==    100		;      DEVICE OPEN COMPLETE
   374			000200		    NRD.EN==    200		;      INTERRUPTS ARE ENABLED FOR SOFT ERRORS
   375			000400		    NRD.EO==    400		;      EOF DETECTED(CDR) OR SET(LPT)
   376			001000		    NRD.ER==   1000		;      DATA ERROR DETECTED(CDR)
   377			002000		    NRD.PL==   2000		;      PAGE LIMIT EXCEEDED
   378			004000		    NRD.AB==   4000		;      ABORT COMPLETE RECEIVED
   379			010000		    NRD.FE==  10000		;      FATAL ERROR AT REMOTE DEVICE
   380			020000		    NRD.PS==  20000		;      DEVICE PAUSED
   381			040000		    NRD.TO==  40000		;      DEVICE TIMED OUT
   382			100000		    NRD.RS== 100000		;      RESUME ISSUED
   383		000001	000000		    NRD.OF== 1,,0		; (lh) DEVICE IS OFFLINE
   384		000002	000000		    NRD.ON== 2,,0		;      ONLINE RCVD, OFFLINE NOT HERE YET
   385		000004	000000		    NRD.NO== 4,,0		;      ONLINE RCVD, BUT REPORTING DEFERRED
   386	000037				NRDDST:! BLOCK	1	; DEVICE STATUS CODE - KEPT IN MTOPR FLAGS
   387	000040				NRDCFL:! BLOCK	1	; NRD CONNECT FAILURE CODE
   388	000041				NRDSEQ:! BLOCK	1	; DATA MSG SEQUENCE NO.
   389	000042				NRDSGC:! BLOCK	1	; PTR TO SEGMENT COUNT
   390	000043				NRDSEG:! BLOCK	1	; PTR TO CURRENT SEGMENT HEAD
   391	000044				NRDSGS:! BLOCK	1	; NO. SEGMENTS LEFT TO PROCESS
   392	000045				NRDSGN:! BLOCK	1	; CURRENT SEGMENT COUNT
   393	000046				NRDREP:! BLOCK	1	; REPEATED DATA ITEM
   394	000047				NRDTMC:! BLOCK	1	; TIMEOUT COUNTER
   395	000050				NRDATT:! BLOCK	1	; LAST ATTENTION MSG REASON CODE
   396	000051				NRDASQ:! BLOCK	1	; LAST ATTENTION MSG SEQUENCE NUMBER
   397	000052				NRDLPC:! BLOCK	1	; PAGE COUNT AT LAST ATTENTION MSG
   398	000053				NRDCSQ:! BLOCK	1	; LAST CONTROL MSG SEQ NO. (RCVD,,SENT)
   399	000054				NRDCCR:! BLOCK	1	; LAST CONTROL MSG RECIEVED: COMMAND,,RESPONSE
   400	000055				NRDCAP:! BLOCK	1	; DEVICE CAPAB. LIST  (LENGTH,,ADDRESS)
   401	000056				NRDIER:! BLOCK	1	; PTR TO  LAST INTERNAL ERROR ENTRY
   402	000057				NRDERH:! BLOCK	NURDL	; NRDR ERROR HISTORY - LOCATIONS OF DETECTED ERRORS
   403	000077				NRDCHN:! BLOCK	1	; INTERRUPT CHANNEL ENABLED MASK
   404	000100				NRDRPT:! BLOCK	1	; NRDRBF PTR	(RECEIVE MSG BUFFER)
   405	000101				NRDRCN:! BLOCK	1	; NUMBER OF BYTES IN NRDRBF
   406	000102				NRDSPT:! BLOCK	1	; NRDSBF PTR	(SEND MSG BUFFER)
   407	000103				NRDSCN:! BLOCK	1	; NUMBER OF BYTES IN NRDSBF
   408	000104				NRDLIM:! BLOCK	1	; MAX BLOCK SIZE REMOTE CAN TAKE
   409
   410					;(Cont'd)
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 10
NURD	MAC	21-Mar-80 10:15		Remote Device Data Base Definition

   411					; ***	NURD DEVICE FEATURES
   412					; FORMAT OF ENTRY:
   413					;	WORD 1:	  8B7 - FID OF UNKNOWN FID	(NRDUFE ONLY)
   414					;		  1B8 - FEATURE READ FLAG
   415					;		 8B17 - NUMBER OF BYTES IN VALUE
   416					;		18B35 - VALUE IF CLASS 0 OR CLASS 1 WITH 2 OR LESS BYTES
   417					;			  ADDRESS OF STRING IF MORE THAN 2 BYTES
   418					;
   419					;	WORD 2:	  9B8 - FEATURE FLAGS RETURNED
   420					;		 9B17 - FEATURE CLASS RETURNED
   421					;		18B35 - RESPONSE RETURNED
   422	000105				NRDFET:!		; COMMON DEVICE FEATURES
   423	000105					 BLOCK	2	; FE.ESC	RESERVED FOR FUTURE ESCAPE CODE
   424	000107					 BLOCK	2	; FE.DAT	DATA MODE
   425	000111					 BLOCK	2	; FE.SER	SERIAL NUMBER
   426	000113				NFELCR:! BLOCK	2	; FE.LCR	LOWER CASE RAISE
   427	000115					 BLOCK	2	; FE.FWD	FORM WIDTH
   428	000117					 BLOCK	2	; FE.EOF	EOF RECOGNITION
   429	000121					 BLOCK	2	; FE.DVT	DEVICE TYPE
   430	000123					 BLOCK	2	; FE.TRN	RECORD TRUNCATION
   431	000125					 BLOCK	2	; FE.FNM	FORM NAME
   432	000127					 BLOCK	2	; FE.DWD	DEVICE WIDTH
   433
   434	000131				NRDLPF:!		; LPT SPECIFIC FEATURES
   435	000131					 BLOCK	2	; LP.HT		HORIZONTAL TABS
   436	000133					 BLOCK	2	; LP.SFC	STANDARD VERTICAL FORMS CONTROL
   437	000135					 BLOCK	2	; LP.OVP	OVERPRINT LIMIT
   438	000137					 BLOCK	2	; LP.CVF	CUSTOM VFU
   439	000141					 BLOCK	2	; LP.FCC	FORTRAN CARRIAGE CONTROL
   440	000143					 BLOCK	2	; LP.VFR	VARIABLE FORMS RATIO
   441	000145					 BLOCK	2	; LP.CHS	CHARACTER SET
   442	000147					 BLOCK	2	; LP.PLE	PAGE LIMIT ENFORCEMENT
   443	000151					 BLOCK	2	; LP.OPV	OPTICAL VFU
   444
   445	000153				NRDCRF:!		; CDR SPECIFIC FEATURES
   446	000153					 BLOCK	2	; CD.CWD	CARD WIDTH
   447	000155				NRDUFE:! BLOCK	2	; CATCHES ANY UNKNOWN FID'S
   448	000157				NRDFSN:! BLOCK	1	; SEQ NO. OF LAST FEATURE MSG SENT
   449	000160				NRDFSQ:! BLOCK	1	; SEQ NO. OF LAST FEATURE MSG RECEIVED
   450
   451					; * BUFFERS
   452	000161				NRDRBF:! BLOCK	NRDBSZ/4 ; NURD RECEIVE MSG BUFFER
   453	000361				NRDSBF:! BLOCK	NRDBSZ/4 ; NURD SEND MSG BUFFER
   454	000561				NRDIBF:! BLOCK	IMSGSZ/4 ; INTERRUPT MESSAGE BUFFER
   455	000565				RDDBSZ:!		 ; SIZE OF RDDB
   456	000003'					RELOC
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 11
NURD	MAC	21-Mar-80 10:15		NURD Message Definition

   457					SUBTTL	NURD Message Definition
   458
   459					; *****	NURD Message Format
   460					; MESSAGE TYPE (1):B
   461			000017			NM.TYP==17	; MESSAGE TYPE MASK
   462			000000			NM.DAT== 0	; DATA MESSAGE
   463			000001			NM.ATT== 1	; ATTENTION MESSAGE
   464			000002			NM.FTR== 2	; FEATURES MESSAGE
   465			000003			NM.CTL== 3	; CONTROL MESSAGE
   466			000004			NM.ALR== 4	; ALERT MESSAGE
   467			000005			NM.CAP== 5	; CAPABILITIES MESSAGE
   468			000006			NM.OTR== 6	; ***CURRENT OUT OF RANGE VALUE***
   469					; MESSAGE FLAGS (1):BM
   470					; TYPE-DEPENDENT MESSAGE DATA <MSGDATA>
   471
   472					; *** DATA MESSAGE <MSGDATA>
   473					; SEQUENCE NUMBER (1):B
   474					; DATA FLAGS (1):BM
   475			000001			ND.ACK== 1	; ACKNOWLEDGE REQD
   476			000002			ND.IER== 2	; INPUT ERROR
   477			000004			ND.EOF== 4	; SEGMENT IS END OF FILE
   478					; SEGMENT COUNT (1):B
   479					; START OF DATA (COUNTED FIELD)
   480
   481					; *** ATTENTION MESSAGE <MSGDATA>
   482					; LAST GOOD ID (1):B
   483					; ATTENTION CODE (1):B
   484			000001			N.ASTC== 1	; STATUS CHANGE
   485			000002			N.AACK== 2	; DATA ACKNOWLEDGEMENT
   486			000003			N.ARQS== 3	; REQUESTED
   487			000004			N.AABC== 4	; OUTPUT ABORT RECEIVED OR INPUT ABORT COMPLETE
   488			000005			N.APLE== 5	; PAGE LIMIT EXCEEDED
   489					; ATTENTION FLAGS, UP TO 3 BYTES (EX):BM
   490			000001			NA.FAT==  1	; <1>FATAL ERROR
   491			000002			NA.OFL==  2	;    OFFLINE
   492			000004			NA.PAU==  4	;    PAUSED
   493			000010			NA.OMD== 10	;    OUT OF MEDIA
   494			000020			NA.JAM== 20	;    JAMMED
   495			000040			NA.OOF== 40	;    OPERATOR OFFLINE
   496			000100			NA.NOE==100	;    NON OPERATOR ERROR
   497			000001			NA.OUF==  1	; <2>OUTPUT FULL
   498			000002			NA.NAC==  2	;    DEVICE NOT ACCESSIBLE
   499			000004			NA.DTO==  4	;    DEVICE TIME OUT
   500			000010			NA.RNA== 10	;    RESOURCE NOT AVAILABLE
   501			000020			NA.PF==	 20	;    (CR) PICK FAILURE
   502			000020			NA.PSE== 20	;    (LP) PAPER SLEW ERROR
   503			000040			NA.RAP== 40	;    (CR) READ AFTER PUNCH ERROR
   504			000040			NA.INK== 40	;    (LP) OUT OF INK
   505			000100			NA.REG==100	;    (CR) REGISTRATION ERROR
   506			000001			NA.OVP== 1	; <3>(CR) ILLEGAL OVERPRINT
   507			000001			NA.IVP== 1	;    (LP) INVALID PUNCH ERROR
   508					; PAGE/CARD COUNTER (2):B
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 12
NURD	MAC	21-Mar-80 10:15		NURD Message Definition

   509					; *** FEATURES MESSAGE <MSGDATA>
   510					; SEQUENCE NUMBER (1):B
   511					; NUMBER OF FEATURES SPECS IN MSG (1):B
   512					; FEATURES IDENTIFIER (1):B
   513						RADIX	10
   514			000001			FE.DAT==  1	; (C1) DATA MODE
   515			000001			    DM.ASC==1		; 7 BIT ASCII
   516			000002			    DM.CLI==2		; COLUMNIMAGE
   517			000003			    DM.EBC==3		; EBCDIC
   518			000004			    DM.AUG==4		; AUGMENTED COLUMNIMAGE
   519			000005			    DM.AS8==5		; 8 BIT ASCII
   520			000002			FE.SER==  2	; (C1) SERIAL NUMBER
   521			000003			FE.LCR==  3	; (C0) LOWER CASE RAISE
   522			000004			FE.FWD==  4	; (C1) FORM WIDTH
   523			000005			FE.EOF==  5	; (C1) EOF RECOGNITION
   524			000001			    EO.ASC==1		; ASCII
   525			000002			    EO.IMG==2		; IMAGE
   526			000006			FE.DVT==  6	; (C1) DEVICE TYPE
   527			000007			FE.TRN==  7	; (C0) RECORD TRUNCATION
   528			000010			FE.FNM==  8	; (C1) FORM NAME
   529			000011			FE.DWD==  9	; (C1) DEVICE WIDTH
   530			000202			LP.HT== 130	; (C1) HORIZONTAL TAB STOP
   531			000203			LP.SFC==131	; (C0) STANDARD VERTICAL FORMS CONTROL
   532			000204			LP.OVP==132	; (C1) OVERPRINT LIMIT
   533			000205			LP.CVF==133	; (C1) CUSTOM VFU
   534			000206			LP.FCC==134	; (C0) FORTRAN CARRIAGE CONTROL
   535			000207			LP.VFR==135	; (C1) VARIABLE FORMS RATIO
   536			000001			    VF.6LI==1		; 6 LINES PER INCH
   537			000002			    VF.8LI==2		; 8 LINES PER INCH
   538			000210			LP.CHS==136	; (C1) CHARACTER SET
   539			000001			    CH.64== 1		; 64 CHARACTER SET
   540			000002			    CH.96== 2		; 96 CHARACTER SET
   541			000211			LP.PLE==137	; (C1) PAGE LIMIT ENFORCEMENT
   542			000212			LP.OPV==138	; (C1) OPTICAL VFU NAME
   543			000202			CD.CWD==130	; (C1) CARD WIDTH
   544			000377			FE.ALL==255	; AFFECTS ALL FEATURES(READ OR SET TO STD.)
   545						RADIX	8
   546					; FEATURES FLAGS (1):BM
   547			000001			NF.CMD== 1	; 0 = READ,  1 = SET FEATURES.
   548			000002			NF.STD== 2	; STANDARD FLAG
   549					; FEATURE CLASS (1):B
   550			000000			FC.CL0== 0	; (C0) CLASS 0 => <BIT> FORM
   551			000001			FC.CL1== 1	; (C1) CLASS 1 => <CNT><...> FORM
   552			000002			FC.SST== 2	; SET TO STANDARD
   553					; FEATURE RESPONSE FIELD (1):B
   554			000001			FR.USF== 1	; UNSUPPORTED FEATURE
   555			000002			FR.BCL== 2	; BAD CLASS SPEC'D
   556			000003			FR.NST== 3	; NO STANDARD VALUE
   557			000004			FR.ERR== 4	; FEATURE DATA OR FORMAT ERROR
   558			000005			FR.CPN== 5	; CHANGE PENDING
   559			000006			FR.NEB== 6	; NOT ENOUGH BUFFER (FOR REPORT)
   560			000007			FR.DNP== 7	; DEVICE NOT PAUSED
   561					; FEATURES DATA (CLASS DEPENDENT)
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 13
NURD	MAC	21-Mar-80 10:15		NURD Message Definition

   562					; *** CONTROL MESSAGE <MSGDATA>
   563					; SEQUENCE NUMBER (1):B
   564					; COMMAND (1):B
   565			000001			NC.AUE== 1	; (INT) ABORT UNTIL EOF
   566			000002			NC.AUC== 2	; (INT) ABORT UNTIL CLEARED
   567			000003			NC.CAB== 3	; CLEAR OUTPUT ABORT/ACK INPUT ABORT
   568			000004			NC.RQS== 4	; REQUEST STATUS
   569			000005			NC.DMP== 5	; DUMP OUTPUT BUFFERS
   570			000006			NC.PAU== 6	; (INT) PAUSE
   571			000007			NC.RES== 7	; (INT) RESUME
   572			000010			NC.RQC==10	; REQUEST CAPABILITIES
   573					; RESULT CODE (1):B
   574			000000			NR.ABS== 0	; (AUE,AUC) ABORT STATE
   575			000001			NR.NAB== 1	; (AUE,AUC) NOTHING TO ABORT
   576			000002			NR.NOE== 2	; (AUE)     NO EOF DEFINED
   577			000000			NR.ACC== 0	; (CAB)     ABORT COMPLETE CLEARED
   578			000001			NR.ACN== 1	; (CAB)     ABORT COMPLETE NOT SET
   579			000000			NR.ATT== 0	; (RQS)     ATTENTION MSG FOLLOWS
   580			000000			NR.DMP== 0	; (DMP)     OUTPUT BEING DUMPED
   581			000001			NR.NOB== 1	; (DMP)     NO OUTPUT BUFFERED
   582			000000			NR.DPS== 0	; (PAU)     DEVICE WILL PAUSE
   583			000001			NR.PAU== 1	; (PAU)     DEVICE ALREADY PAUSED
   584			000002			NR.NDP== 2	; (PAU)     NO DATA TRANSFER TO PAUSE
   585			000000			NR.RES== 0	; (RES)     DEVICE WILL RESUME
   586			000001			NR.NPS== 1	; (RES)     DEVICE NOT PAUSED
   587			000002			NR.NDR== 2	; (RES)     NO DATA TRANSFER TO RESUME
   588			000000			NR.CAP== 0	; (RQC)     CAPABILITIES FOLLOWS
   589
   590
   591					; *** CAPABILITIES MESSAGE <MSGDATA>
   592					; NUMBER OF CAPABILITY CODES IN LIST (1):B
   593					; LIST OF CAPABILITY CODES ():B
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 14
NURD	MAC	21-Mar-80 10:15		UGTJFN

   594					SUBTTL	UGTJFN
   595
   596					;	UGTJFN SIMULATES A GTJFN FOR A REMOTE DEVICE
   597					;	AC1 = GJ%SHT+[GJ%FOU]
   598					;	AC2 = PTR TO DEVICE SPEC: "<NODE>::P<DEV>[<UNIT>]:"
   599					;		DEFAULT UNIT= 0
   600					;
   601					;	CALL:	PUSHJ	P,UGTJFN
   602					;		ERROR RETURN - AC1 = ERROR CODE
   603					;		SUCCESS RETURN - AC1 = JFN SUBSTITUTE(ADR OF RDDB FOR DEVICE)
   604
   605	000003'	260 17 0 00 000140'	UGTJFN::$CALL	MKRDDB			; CREATE DATA BASE & SAVE REGS
   606	000004'	263 17 0 00 000000 		  $RET				; PROBLEMS
   607	000005'	260 17 0 00 002260'		$CALL	USETUP			; NOW DO SETUPS
   608	000006'	200 02 0 15 000002 		MOVE	J2,RDSAVE+J2(R)		; GET DEVICE PTR AGAIN
   609	000007'	260 17 0 00 002107'		$CALL	MAPDEV			; MAP DEVICE SPEC INTO NSP FORMAT
   610	000010'	254 00 0 00 000103'		  JRST	UGTR3			; J1 = ERROR CODE
   611
   612					; ESTABLISH CONTROL LINK TO NRM
   613	000011'	260 17 0 00 002163'		$CALL	GNRMSP			; GENERATE DEV SPEC FOR NRM
   614	000012'	200 02 0 00 000005 		MOVE	J2,A			; GET PTR TO SPEC
   615	000013'	205 01 0 00 000001 		MOVX	J1,GJ%SHT		; GET NRM JFN
   616	000014'	104 00 0 00 000020 		GTJFN				; ...
   617						  ERJMP	[	MOVE	P,-1(A)		; RESTORE STACK PTR
   618	000015'	320 16 0 00 003616'				JRST	UGTR3]		; ERROR CODE IS IN J1
   619	000016'	200 17 0 05 777777 		MOVE	P,-1(A)			; FLUSH NRM SPEC FROM PDL
   620	000017'	201 11 0 00 000001 		MOVEI	T1,NRM.CP		; SET CONNECT PENDING
   621	000020'	436 11 0 15 000030 		IORM	T1,NRMSTS(R)		; ...
   622	000021'	552 01 0 15 000026 		HRRZM	J1,NRMJFN(R)		; SAVE NRM JFN
   623	000022'	553 00 0 00 000001 		HRRZS	J1			; NOW TO CONNECT TO NRM
   624	000023'	200 02 0 00 003620'		MOVX	J2,10B5+OF%RD+OF%WR+OF%NWT+OF%PLN ; ...
   625	000024'	104 00 0 00 000021 		OPENF				; ...
   626	000025'	320 16 0 00 000102'		  ERJMP	UGTR2			; ? NO NRM
   627	000026'	260 17 0 00 000121'		$CALL	CONWAT			; WAIT FOR CONNECT COMPLETE
   628						  JRST	[	MOVEM	J3,NRMCFL(R)	; ? FAILED - SAVE STATUS
   629	000027'	254 00 0 00 003621'				ERRI	OPNX21,UGTR2]	; CONNECT REFUSED
   630	000030'	201 11 0 00 000003 		MOVX	T1,NRM.CP!NRM.CC	; CLEAR CONNECT PENDING,
   631	000031'	432 11 0 15 000030 		XORM	T1,NRMSTS(R)		;   & SET CONNECT COMPLETE
   632	000032'	550 11 0 00 000015 		HRRZ	T1,R			; USE UPPER 16 BITS
   633	000033'	242 11 0 00 777776 		LSH	T1,-2			;   OF RDDB ADR AS
   634	000034'	202 11 0 15 000027 		MOVEM	T1,NRMID(R)		;   CONTROL ID
   635	000035'	260 17 0 00 001067'		$CALL	DEVRSR			; RESERVE THE DEVICE
   636	000036'	254 00 0 00 000102'		  JRST	UGTR2			; NOT AVAILABLE
   637	000037'	201 11 0 00 000004 		MOVEI	T1,NRM.RS		; SET DEVICE RESERVED
   638	000040'	436 11 0 15 000030 		IORM	T1,NRMSTS(R)		; ...
   639	000041'	200 01 0 15 000026 		MOVE	J1,NRMJFN(R)		; DETERMINE MAXIMUM BUFFER
   640	000042'	201 02 0 00 000042 		MOVEI	J2,.MORSS		;   SIZE OF REMOTE NODE
   641	000043'	104 00 0 00 000077 		MTOPR				; ...
   642	000044'	303 03 0 00 001000 		CAILE	J3,NRDBSZ		; WE WILL USE THE SMALLER OF
   643	000045'	201 03 0 00 001000 		MOVEI	J3,NRDBSZ		;   REMOTE'S BUFFER SIZE
   644	000046'	202 03 0 15 000104 		MOVEM	J3,NRDLIM(R)		;   OR OURS.
   645
   646					; ESTABLISH DATA LINK TO NRD
   647	000047'	260 17 0 00 002164'		$CALL	GNRDSP			; GENERATE DEV SPEC FOR NRD
   648	000050'	200 02 0 00 000005 		MOVE	J2,A			; COPY THE POINTER TO SPEC
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 14-1
NURD	MAC	21-Mar-80 10:15		UGTJFN

   649	000051'	205 01 0 00 000001 		MOVX	J1,GJ%SHT		; GET NRD JFN
   650	000052'	104 00 0 00 000020 		GTJFN				; ...
   651						  ERJMP	[	MOVE	P,-1(A)
   652	000053'	320 16 0 00 003624'				JRST	UGTR2]
   653	000054'	200 17 0 05 777777 		MOVE	P,-1(A)			; FLUSH NRD SPEC FROM PDL
   654	000055'	660 13 0 00 000001 		TXO	LS,NRD.CP		; SET CONNECT PENDING
   655	000056'	552 01 0 15 000034 		HRRZM	J1,NRDJFN(R)		; SAVE NRD JFN
   656	000057'	553 00 0 00 000001 		HRRZS	J1			; CONNECT TO NRD
   657	000060'	200 02 0 00 003620'		MOVX	J2,10B5+OF%RD+OF%WR+OF%NWT+OF%PLN ; ...
   658	000061'	104 00 0 00 000021 		OPENF				; ...
   659	000062'	320 16 0 00 003626'		  ERRJ	BOTX05,UGTR1		; ? NO NURD
   660	000063'	260 17 0 00 000121'		$CALL	CONWAT			; WAIT FOR CONNECT COMPLETE
   661						  JRST	[	MOVEM	J3,NRDCFL(R)	; ? FAILED - SAVE STATUS
   662	000064'	254 00 0 00 003630'				ERRI	OPNX21,UGTR1]	; CONNECT REFUSED
   663	000065'	640 13 0 00 000003 		TXC	LS,NRD.CP!NRD.CC	; CLEAR CONNECT PENDING &
   664										; SET CONNECT COMPLETE
   665
   666					; GET THE BULA SUPPLIED IN OPTIONAL DATA OF CONNECT CONFIRM
   667	000066'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)
   668	000067'	201 02 0 00 000033 		MOVEI	J2,.MORDA
   669	000070'	205 03 0 00 441000 		MOVSI	J3,(POINT 8)
   670	000071'	541 03 0 15 000161 		HRRI	J3,NRDRBF(R)		; RESULT STRING PTR
   671	000072'	104 00 0 00 000077 		MTOPR
   672	000073'	305 04 0 00 000001 		CAIGE	J4,1			; CHECK THE AMT RETURNED
   673	000074'	260 17 0 00 003634'		NRDR	,,UGTR1			; NONE ?
   674	000075'	135 11 0 00 003642'		LDB	T1,[POINT 8,NRDRBF(R),7] ; 1ST BYTE = BULA
   675	000076'	202 11 0 15 000035 		MOVEM	T1,NRDULA(R)
   676	000077'	202 15 0 15 000001 		MOVEM	R,RDSAVE+J1(R)		; DONE WITH UGTJFN, SO RETURN
   677	000100'	254 00 0 00 002367'		JRST	SUCRTN			;   JFN SUBSTITUTE IN CALLER J1
   678
   679					; NRD AND NRM JFNS ASSIGNED - FLUSH BOTH
   680	000101'	260 17 0 00 000110'	UGTR1:	$CALL	FLSNRD			; FLUSH NRD JFN
   681
   682					; NRM JFN ASSIGNED - FLUSH IT
   683	000102'	260 17 0 00 000111'	UGTR2:	$CALL	FLSNRM			; FLUSH THE NRM JFN
   684
   685					; NO JFN'S ASSIGNED
   686	000103'	403 13 0 15 000036 	UGTR3::	SETZB	LS,NRDSTS(R)		; A CLEAN SLATE
   687	000104'	403 14 0 15 000037 		SETZB	DS,NRDDST(R)		; ...
   688	000105'	201 11 0 00 400000 		MOVEI	T1,UJ.FLS		; SET THE "FLUSH" FLAG
   689	000106'	436 11 0 15 000023 		IORM	T1,RDSTS(R)		; ...
   690	000107'	254 00 0 00 002312'		JRST 	ERRTN			; ERROR RETURN TO THE USER
   691
   692	000110'	334 11 0 15 000034 	FLSNRD:	SKIPA	T1,NRDJFN(R)		; DISCONNECT NRD CONTROL LINK
   693	000111'	200 11 0 15 000026 	FLSNRM:	MOVE	T1,NRMJFN(R)		; DISCONNECT NRM CONTROL LINK
   694	000112'	260 17 0 00 003502'		$CALL	SAV1J			; PRESERVE J1
   695	000113'	200 01 0 00 000011 		MOVE	J1,T1			; SET TO DO CLOSE
   696	000114'	104 00 0 00 000022 		CLOSF				; CLOSE THE LINK
   697	000115'	200 01 0 00 000011 		  MOVE	J1,T1			; ??
   698	000116'	104 00 0 00 000023 		RLJFN				; RELEASE THE JFN
   699	000117'	263 17 0 00 000000 		  $RET				; ??
   700	000120'	263 17 0 00 000000 		$RET				; ALL DONE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 15
NURD	MAC	21-Mar-80 10:15		UGTJFN

   701					; WAIT FOR CONNECT EVENT FOR JFN IN J1
   702	000121'	201 02 0 00 000012 	CONWAT:	MOVEI	J2,NRDTMO		; BOUND OUR WAIT TIME
   703	000122'	202 02 0 15 000047 		MOVEM	J2,NRDTMC(R)		; ...
   704	000123'	201 02 0 00 000025 	CONW1:	MOVEI	J2,.MORLS		; READ LINK STATUS
   705	000124'	104 00 0 00 000077 		MTOPR				; ...
   706	000125'	320 17 0 00 003643'		  NRDRC	,,CPOPJ			; ? OOPS
   707	000126'	603 03 0 00 400000 		TXNE	J3,MO%CON		; J3 = LINK STATUS
   708	000127'	254 00 0 00 002161'		PJRST	CPOPJ1			; CONNECTED
   709	000130'	603 03 0 00 140000 		TXNE	J3,MO%WFC+MO%WCC	; WAITING FOR ONE ?
   710	000131'	375 00 0 15 000047 		SOSGE	NRDTMC(R)		; YES, MORE TIME LEFT ?
   711	000132'	263 17 0 00 000000 		$RET				; NOPE - SOMETHING WRONG, RET STATUS
   712	000133'	261 17 0 00 000001 		PUSH	P,J1			; WAIT HAF A SECOND
   713	000134'	201 01 0 00 000764 		MOVEI	J1,^D500		; ...
   714	000135'	104 00 0 00 000167 		DISMS				; ...
   715	000136'	262 17 0 00 000001 		POP	P,J1			; ...
   716	000137'	254 00 0 00 000123'		JRST	CONW1			; CHECK IT AGAIN
   717
   718
   719					; GET SPACE FOR A REMOTE DEVICE DATA BASE AND INIT IT
   720	000140'	261 17 0 00 000002 	MKRDDB:	PUSH	P,J2			; SAVE COUPLE OF REGS
   721	000141'	261 17 0 00 000001 		PUSH	P,J1			; ...
   722
   723					; THE FOLLOWING CODE ENSURES THAT THE PAGE CONTAINING "SUBJFN" IS COPIED
   724					;  INTO EACH FORK WHERE NURD20 RUNS.
   725	000142'	201 01 0 00 000000'		MOVEI	J1,SUBJFN		; FORM PAGE NUMBER
   726	000143'	242 01 0 00 777767 		ADR2PG	J1			; ...
   727	000144'	505 01 0 00 400000 		HRLI	J1,.FHSLF		; FORK IS THE CURRENT ONE
   728	000145'	205 02 0 00 160400 		MOVX	J2,PA%RD+PA%WT+PA%EX+PA%CPY ; SET ACCESS ATTRIBUTES
   729	000146'	104 00 0 00 000060 		SPACS
   730						  ERJMP	[	MOVEI	J1,.FHSLF	; GET ERROR CODE
   731								GETER			; ...
   732								MOVE	J1,J2		; PUT CODE INTO J1
   733								POP	P,J2		; THROW AWAY SAVED J1
   734								POP	P,J2		; RESTORE J2
   735	000147'	320 16 0 00 003651'				$RET]			; LEAVE
   736	000150'	201 01 0 00 000565 		MOVEI	J1,RDDBSZ		; RDDB BLOCK SIZE
   737	000151'	260 17 1 00 400137 		$CALL	M%GMEM			; GET DATABASE MEMORY
   738	000152'	202 16 0 02 000016 		MOVEM	16,RDSAVE+16(J2)	; STASH USER AC'S IN SAVE AREA
   739	000153'	201 16 0 02 000000 		MOVEI	16,RDSAVE(J2)		; ...
   740	000154'	251 16 0 02 000015 		BLT	16,RDSAVE+15(J2)	; ...
   741	000155'	262 17 0 02 000001 		POP	P,RDSAVE+J1(J2)		; COMPLETE USER AC SAVING OPERATION
   742	000156'	262 17 0 02 000002 		POP	P,RDSAVE+J2(J2)		; ...
   743	000157'	205 01 0 00 000100 		MOVX	J1,1B<.ICDAE>		; SET DEFAULT SOFT INTERRUPT CHANNEL
   744	000160'	202 01 0 02 000077 		MOVEM	J1,NRDCHN(J2)		; ...
   745
   746	000161'	200 15 0 00 000002 		MOVE	R,J2			; R = PTR TO NEW RDDB
   747	000162'	202 15 0 00 000000'		MOVEM	R,SUBJFN		; PRESERVE THE RDDB PTR FOR THIS FORK
   748	000163'	254 00 0 00 002161'		PJRST	CPOPJ1			; THUS CAUSING THE PAGE TO BE COPIED
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 16
NURD	MAC	21-Mar-80 10:15		UOPENF

   749					SUBTTL	UOPENF
   750
   751					; UOPENF SIMULATES AN OPENF FOR A REMOTE DEVICE
   752					; USER MUST HAVE PREVIOUSLY USED UGTJFN TO MAKE THINGS WORK
   753					;
   754					;	AC1 = JFN SUBSTITUTE
   755					;	AC2 = FLAGS
   756					;		OF%BSZ	-	6 BIT BYTE SIZE FIELD
   757					;				7,8,12,16 SUPPORTED
   758					;		OF%MOD	-	4 BIT DATA MODE FIELD
   759					;				0=> ASCII
   760					;				8=> IMAGE
   761					;		OF%RD	-	READ ACCESS
   762					;		OF%WR	-	WRITE ACCESS
   763					;		OF%OFL	-	OPEN DEVICE EVEN IF OFFLINE
   764					;
   765					;	LEGAL DATA MODE/BYTE SIZE COMBINATIONS
   766					;	SIZE	MODE CODE	MODE
   767					;	   7	    0		ASCII
   768					;	   8	    0		ASCII
   769					;	  12	    8		COLUMN IMAGE
   770					;	  16	    8		AUGMENTED COLUMN IMAGE
   771
   772	000164'	260 17 0 00 002245'	UOPENF::$CALL	SETUP2			; SETUP FOR SKIP RETURN JSYS
   773	000165'	254 00 0 00 002312'		  JRST	ERRTN			; JFN NOT ASSIGNED
   774	000166'	135 11 0 00 003657'		LDB	T1,[POINT 6,J2,5]	; GET BYTE SIZE
   775	000167'	135 12 0 00 003660'		LDB	T2,[POINT 4,J2,9]	;   AND DATA MODE
   776						JUMPE	T2,[	CAIE	T1,7		; ASCII MODE - CHECK BYTE SIZE
   777								CAIN	T1,10		; ...
   778								SKIPA			; TIS TRULY LEGAL SIZE
   779								ERR	SFBSX2,ERRTN	; OOPS !
   780								TXNN	LS,NRD.LP	; FOR LPT ?
   781								JRST	UOPNC		; NO, CDR THEN
   782								TXNE	J2,OF%RD	; MUST WRITE TO LPT
   783								ERR	OPNX13,ERRTN	; TUT,TUT - TRYING TO READ
   784								TXNE	J2,OF%WR	; BETTER SAY WRITE
   785								JRST	UOPNX		; AWRIGHT !
   786	000170'	322 12 0 00 003665'				ERRI	OPNX4,ERRTN]	; A BUMMER
   787	000171'	306 12 0 00 000010 		CAIN	T2,^D8			; THE ONLY OTHER LEGAL MODE IS 8
   788	000172'	602 13 0 00 000004 		TXNE	LS,NRD.LP		;   AND ONLY FOR CDR
   789	000173'	254 00 0 00 003701'		ERR	OPNX14,ERRTN		; INVALID MODE
   790	000174'	306 11 0 00 000014 		CAIN	T1,^D12			; IMAGE MODE - CHECK BYTE SIZE
   791	000175'	254 00 0 00 000201'		JRST	UOPN1			; COLUMN IMAGE
   792	000176'	302 11 0 00 000020 		CAIE	T1,^D16			; AUG COL IMAGE ?
   793	000177'	254 00 0 00 003661'		ERR	SFBSX2,ERRTN		; NO, SO BYTE SIZE ERROR
   794	000200'	664 13 0 00 000020 		TXOA	LS,NRD.AI		; AUGMENTED COLUMN IMAGE MODE
   795	000201'	660 13 0 00 000010 	UOPN1:	TXO	LS,NRD.IM		; COLUMN IMAGE MODE
   796
   797	000202'	602 02 0 00 100000 	UOPNC:	TXNE	J2,OF%WR		; TRYING TO WRITE TO CDR ?
   798	000203'	254 00 0 00 003663'		ERR	OPNX13,ERRTN		; DUMMY !
   799	000204'	606 02 0 00 200000 		TXNN	J2,OF%RD		; WE ARE SUPPOSED TO READ FROM IT
   800	000205'	254 00 0 00 003703'		ERR	OPNX3,ERRTN		; ! READ I SAID
   801
   802	000206'	660 13 0 00 000040 	UOPNX:	TXO	LS,NRD.OP		; OPEN DEVICE NOW
   803	000207'	260 17 0 00 001135'		$CALL	OPNDEV			; SEND ACCESS-OPEN TO NRM
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 16-1
NURD	MAC	21-Mar-80 10:15		UOPENF

   804	000210'	254 00 0 00 002312'		  JRST	ERRTN
   805	000211'	640 13 0 00 000140 		TXC	LS,NRD.OP!NRD.OC	; FLUSH DEV OPEN PENDING
   806										;   AND SET DEVICE OPENED
   807	000212'	402 00 0 15 000101 		SETZM	NRDRCN(R)		; INIT FOR IO
   808	000213'	402 00 0 15 000103 		SETZM	NRDSCN(R)		; INIT FOR IO
   809	000214'	476 00 0 15 000052 		SETOM	NRDLPC(R)		; SET PAGE COUNT AS FLAG THAT
   810										;   NO STATUS HAS BEEN RECEIVED
   811	000215'	260 17 0 00 001750'		$CALL	SNDRQS			; REQUEST STATUS
   812	000216'	260 17 0 00 001702'		$CALL	RCVRQS			; AND WAIT FOR IT
   813	000217'	260 17 0 00 003705'		  NRDR	,,ERRTN			; DATA MSG BLOCKING STATUS RSP
   814	000220'	260 17 0 00 002005'		$CALL	SETMOD			; SET DATA MODE
   815	000221'	602 13 0 00 000004 		TXNE	LS,NRD.LP
   816						$CALL	[	TXO	DS,MO%LVU	; ONLY OPTICAL VFU AVAIL
   817	000222'	260 17 0 00 003713'				$CALLR	SETLCR]		; INIT THE LPT AS UPPER CASE
   818	000223'	260 17 0 00 002073'		$CALL	RDFTRS			; READ DEVICE FEATURES
   819	000224'	260 17 0 00 003705'		  NRDR	,,ERRTN			; DATA MSG BLOCKING ??
   820	000225'	254 00 0 00 002367'		JRST	SUCRTN			; ALL DONE !!
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 17
NURD	MAC	21-Mar-80 10:15		USOUT

   821					SUBTTL	USOUT
   822
   823					; USOUT SIMULATES A SOUT FOR A REMOTE DEVICE(LPT)
   824					;
   825					;	AC1 = JFN SUBSTITUTE
   826					;	AC2 = PTR TO STRING
   827					;	AC3 = COUNT
   828					;	AC4 = TERMINATION CHAR IF COUNT>0
   829					;
   830					;	STRING TERMINATION CONVENTION:
   831					;		COUNT > 0=> TERMINATE ON COUNT OR CHAR= (AC4)
   832					;		COUNT= 0=> TERMINATE ON CHAR= 0
   833					;		COUNT < 0=> TERMINATE ON COUNT
   834					;
   835					;	DATA MESSAGE FORMAT:
   836					;		<0><MSG FLGS><SEQ. NO.><DATA FLGS><SEG. CNT>[SEGMENTS]
   837					;	SEGMENT FORMENT:
   838					;		<CNT><... CNT DATA ITEMS ...> OR <200!CNT><DATA ITEM>
   839
   840	000226'	260 17 0 00 002243'	USOUT::	$CALL	SETUP1			; NON-SKIP JSYS
   841	000227'	254 00 0 00 002312'		  JRST	ERRTN			; NO SUCH JFN
   842	000230'	602 13 0 00 000002 		TXNE	LS,NRD.CC		; CHECK LINK STILL CONNECTED
   843	000231'	606 13 0 00 000100 		TXNN	LS,NRD.OC		; CHECK DEVICE OPENED
   844	000232'	254 00 0 00 003715'		ERR	DESX5,ERRTN		; "FILE" NOT OPEN
   845	000233'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; CHECK THAT DEVICE IS AN LPT
   846	000234'	254 00 0 00 003717'		ERR	IOX2,ERRTN		; "FILE" NOT OPEN FOR WRITING
   847	000235'	641 02 0 00 777777 		TLC	J2,-1			; GENERIC POINTER ?
   848	000236'	647 02 0 00 777777 		TLCN	J2,-1			;   BACK TO ORIG, SKIP IF WAS NONZERO
   849	000237'	505 02 0 00 440700 		HRLI	J2,(POINT 7)		; IT WAS GENERIC - MAKE IT SPECIFIC
   850	000240'	260 17 0 00 002236'		$CALL	EFADBY			; DO BYTE POINTER EFFECTIVE ADDR CALC
   851	000241'	334 00 0 00 000000 		SKIPA				; J2 IS NOW A PROPER PTR
   852
   853	000242'	260 17 0 00 000326'	USO0:	$CALL	USYCLE			; START NEW BUFFER
   854	000243'	260 17 0 00 001233'	USO1:	$CALL	RCVNRM			; CHECK FOR ASYNCHRONOUS NRM MESSAGES
   855	000244'	260 17 0 00 003705'		  NRDR	,,ERRTN			; NRM ERROR
   856	000245'	326 05 0 00 000243'		JUMPN	A,USO1			; READ ALL OF THEM
   857	000246'	260 17 0 00 001300'	USO2:	$CALL	RCVMSG			; CHECK FOR INCOMING MSGS 1ST
   858	000247'	260 17 0 00 003705'		  NRDR	,,ERRTN			; READ ERROR
   859	000250'	322 05 0 00 003726'		JUMPE	A,[NRDR .,,ERRTN]	; DATA MSG SHOULDN'T BE HERE!!
   860	000251'	327 05 0 00 000246'		JUMPG	A,USO2			; PROCESS EVERYTHING ELSE IN SIGHT
   861	000252'	603 13 0 00 000001 		TXNE	LS,NRD.OF		; CHECK FOR OFFLINE
   862						$CALL	[	MOVX	T1,NRD.ON	; WE ARE OFF, BUT
   863								TDNE	T1,NRDSTS(R)	;   ALREADY BACK ?
   864								$CALLR	SNDRES		; YES, SO TELL DN200 TO RESUME
   865	000253'	260 17 0 00 003727'				ERRI	GJFX28,ERRTN]	; DEVICE WENT OFFLINE
   866	000254'	612 14 0 00 003734'		TXNE	DS,MO%FER!MO%HE!MO%SER!MO%LCI!MO%HEM!MO%LPC
   867	000255'	254 00 0 00 003735'		ERR	IOX5,ERRTN		; DEVICE ERROR
   868	000256'	602 13 0 00 020000 		TXNE	LS,NRD.PS		; NO ERRORS - PAUSED ?
   869	000257'	260 17 0 00 001765'		$CALL	SNDRES			; YES - TRY TO RESUME
   870	000260'	260 17 0 00 002100'		$CALL	SBFINI			; INIT MSG BUF
   871	000261'	200 10 0 15 000104 		MOVE	D,NRDLIM(R)		; GET MAX MSG SIZE
   872	000262'	403 11 0 00 000012 		SETZB	T1,T2			; INIT NRD DATA MSG
   873	000263'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; NURD MSG TYPE
   874	000264'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; NURD MSG FLAGS
   875	000265'	350 11 0 15 000041 		AOS	T1,NRDSEQ(R)
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 17-1
NURD	MAC	21-Mar-80 10:15		USOUT

   876	000266'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; MSG SEQUENCE NO.
   877	000267'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; DATA MSG FLAGS
   878	000270'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; MSG SEGMENT COUNT
   879	000271'	200 11 0 15 000102 		MOVE	T1,NRDSPT(R)
   880	000272'	202 11 0 15 000042 		MOVEM	T1,NRDSGC(R)		; SAV PTR TO SEG CNT
   881	000273'	275 10 0 00 000005 		SUBI	D,5			; SUB MSG OVERHEAD FROM CNT
   882	000274'	307 10 0 00 000002 	USO3:	CAIG	D,2			; MAKE SURE THERE IS ROOM FOR A SEGMENT
   883	000275'	254 00 0 00 000242'		JRST	USO0			; CYCLE THE MSG BUFFER
   884	000276'	400 07 0 00 000000 		SETZ	C,			; BEGIN NEW SEGMENT
   885	000277'	136 07 0 15 000102 		IDPB	C,NRDSPT(R)		; SEGMENT HEAD
   886	000300'	200 11 0 15 000102 		MOVE	T1,NRDSPT(R)
   887	000301'	202 11 0 15 000043 		MOVEM	T1,NRDSEG(R)		; SAV PTR TO SEGMENT HEAD
   888	000302'	135 11 0 15 000042 		LDB	T1,NRDSGC(R)		; COUNT THE SEGMENT IN MSG
   889	000303'	350 00 0 00 000011 		AOS	T1
   890	000304'	137 11 0 15 000042 		DPB	T1,NRDSGC(R)
   891	000305'	364 10 0 00 000310'		SOJA	D,USO5			; COUNT SEGMENT HEAD IN BUFFER
   892
   893	000306'	301 07 0 00 000177 	USO4:	CAIL	C,^D127			; CHECK SEGMENT SIZE LIMIT
   894	000307'	254 00 0 00 000274'		JRST	USO3			; BEGIN NEW SEGMENT
   895	000310'	134 11 0 00 000002 	USO5:	ILDB	T1,J2			; STUFF THE SEGMENT FROM STRING
   896	000311'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; STRING CHARACTER
   897	000312'	350 00 0 00 000007 		AOS	C
   898	000313'	137 07 0 15 000043 		DPB	C,NRDSEG(R)		; COUNT THE CHAR IN SEGMENT
   899						JUMPL	J3,[	AOJL	J3,USO7		; TERMINATE BY COUNT
   900	000314'	321 03 0 00 003737'				JRST	USO9]		; ...
   901						JUMPG	J3,[	SOJE	J3,USO8		; TERMINATE BY COUNT
   902								CAME	J4,T1		;   OR BY CHARACTER
   903								JRST	USO7		; NOPE
   904	000315'	327 03 0 00 003741'				JRST	USO8]		; STOP NOW
   905	000316'	322 11 0 00 000321'		JUMPE	T1,USO8			; TERMINATE BY CHAR= 0
   906
   907	000317'	367 10 0 00 000306'	USO7:	SOJG	D,USO4			; COUNT CHAR IN BUFFER
   908	000320'	254 00 0 00 000242'		JRST	USO0			; CYCLE BUFFER & BEGIN NEW NURD MSG
   909
   910	000321'	211 11 0 00 000001 	USO8:	MOVNI	T1,1			; SOURCE TERMINATED BY BYTE
   911	000322'	133 11 0 00 000002 		ADJBP	T1,J2			; BACK UP PTR
   912	000323'	200 02 0 00 000011 		MOVE	J2,T1
   913	000324'	260 17 0 00 000326'	USO9:	$CALL	USYCLE			; SOURCE DONE - FLUSH OUT BUFFER
   914	000325'	254 00 0 00 002367'		JRST	SUCRTN
   915
   916	000326'	260 17 0 00 003532'	USYCLE:	$CALL	SAV4J			; SAVE J1-J4
   917	000327'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; SET THE OUTPUT JFN
   918	000330'	260 17 0 00 000752'		$CALL	SNDBUF			; SEND THE STUFF
   919						  JRST	[	DMOVEM	J2,RDSAVE+J2(R)	; SET RETURN J2 & J3, BECAUSE
   920	000331'	254 00 0 00 003745'				JRST	ERRTN]		;   SOUTR ABORT
   921	000332'	124 02 0 15 000002 		DMOVEM	J2,RDSAVE+J2(R)		; SET RETURN VALUE OF J2,J3
   922	000333'	332 00 0 00 000001'		SKIPE	DEBUGF
   923	000334'	260 17 0 00 002633'		$CALL	TYBUF
   924	000335'	661 14 0 00 000020 		TXO	DS,MO%IOP		; SET IO IN PROGRESS FOR LPT
   925	000336'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 18
NURD	MAC	21-Mar-80 10:15		USIN

   926					SUBTTL	USIN
   927
   928					; USIN SIMULATES A SIN FOR A REMOTE DEVICE(CDR)
   929					;
   930					;	AC1 = JFN SUBSTITUTE
   931					;	AC2 = PTR TO STRING
   932					;	AC3 = COUNT
   933					;	AC4 = TERMINATION CHAR IF COUNT>0
   934					;
   935					;	STRING TERMINATION CONVENTION:
   936					;		COUNT > 0=> TERMINATE ON COUNT OR CHAR= (AC4)
   937					;		COUNT= 0=> TERMINATE ON CHAR= 0
   938					;		COUNT < 0=> TERMINATE ON COUNT
   939					;
   940					;	DATA MESSAGE FORMAT:
   941					;		<0><MSG FLGS><SEQ. NO.><DATA FLGS><SEG. CNT>[SEGMENTS]
   942					;	SEGMENT FORMENT:
   943					;		<CNT><... CNT DATA ITEMS ...> OR <200!CNT><DATA ITEM>
   944
   945	000337'	260 17 0 00 002243'	USIN::	$CALL	SETUP1			; NON-SKIP JSYS
   946	000340'	254 00 0 00 002312'		  JRST	ERRTN			; BAD JFN
   947	000341'	602 13 0 00 000002 		TXNE	LS,NRD.CC		; CHECK LINK STILL CONNECTED
   948	000342'	606 13 0 00 000100 		TXNN	LS,NRD.OC		; CHECK DEVICE OPENED
   949	000343'	254 00 0 00 003715'		ERR	DESX5,ERRTN		; "FILE" NOT OPEN
   950	000344'	602 13 0 00 000004 		TXNE	LS,NRD.LP		; CHECK THAT DEVICE IS A CDR
   951	000345'	254 00 0 00 003747'		ERR	IOX3,ERRTN		; "FILE" NOT OPEN FOR READING
   952	000346'	260 17 0 00 002524'		$CALL	INTOFF
   953	000347'	630 13 0 00 003751'		TXZ	LS,NRD.FE!NRD.TO!NRD.OF!NRD.PL
   954	000350'	202 13 0 15 000036 		MOVEM	LS,NRDSTS(R)		; UPDATE LINK STATUS
   955	000351'	630 14 0 00 003752'		TXZ	DS,MO%FER!MO%HE!MO%SER!MO%RCK!MO%PCK!MO%SFL!MO%HEM!MO%LCI!MO%LPC!MO%EOF
   956	000352'	202 14 0 15 000037 		MOVEM	DS,NRDDST(R)		; UPDATE DEVICE STATUS
   957	000353'	260 17 0 00 002514'		$CALL	INTON
   958	000354'	641 02 0 00 777777 		TLC	J2,-1			; GENERIC POINTER ?
   959	000355'	643 02 0 00 777777 		TLCE	J2,-1			;   BACK TO ORIG, SKIP IF WAS ZERO
   960	000356'	254 00 0 00 000364'		JRST	SIN0			; IT'S ALRIGHT LIKE IT IS
   961	000357'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI	; CHECK IMAGE MODES
   962						JRST	[	HRLI	J2,(POINT 7)	; ASCII
   963	000360'	254 00 0 00 003753'				JRST	SIN0]		; ...
   964	000361'	606 13 0 00 000020 		TXNN	LS,NRD.AI
   965						JRST	[	HRLI	J2,(POINT 12)	; COLUMN IMAGE MODE
   966	000362'	254 00 0 00 003755'				JRST	SIN0]		; ...
   967	000363'	505 02 0 00 442000 		HRLI	J2,(POINT 16)		; AUGMENTED COLUMN IMAGE MODE
   968	000364'	260 17 0 00 002236'	SIN0:	$CALL	EFADBY			; DO BYTE POINTER EFFECTIVE ADDR CALC
   969	000365'	332 10 0 15 000101 		SKIPE	D,NRDRCN(R)		; CHECK FOR CURRENT BUFFER
   970	000366'	254 00 0 00 000433'		JRST	USIN1			; BUFFER IN PROGRESS
   971	000367'	603 13 0 00 000001 	SIN1:	TXNE	LS,NRD.OF		; CHECK FOR OFFLINENESS
   972						JRST	[	TXNE	LS,NRD.EO	; BUT DO WE HAVE EOF TOO ?
   973								JRST	USIEF1		; YEP, SO JUST EOF
   974								MOVX	T1,NRD.ON	; SEE IF ALREADY BACK
   975								TDNN	T1,NRDSTS(R)	; ...
   976								ERR	GJFX28,USINER	; DEVICE IS REALLY OFFLINE
   977								$CALL	SNDRES		; TRY TO RERSUME IT
   978	000370'	254 00 0 00 003761'				JRST	.+1]		; THEN GO ON
   979	000371'	612 14 0 00 003770'		TXNE	DS,MO%FER!MO%HE!MO%SER!MO%LCI!MO%HEM!MO%SFL!MO%PCK!MO%RCK
   980	000372'	254 00 0 00 003771'		ERR	IOX5,USINER		; DEVICE ERROR
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 18-1
NURD	MAC	21-Mar-80 10:15		USIN

   981	000373'	602 13 0 00 020000 		TXNE	LS,NRD.PS		; NO ERRORS - PAUSED ?
   982	000374'	260 17 0 00 001765'		$CALL	SNDRES			; YES - TRY TO RESUME
   983	000375'	260 17 0 00 001233'	SIN2:	$CALL	RCVNRM			; CHECK FOR NRM ASYNCHRONOUS MESSAGES
   984	000376'	260 17 0 00 003773'		  NRDR	,,USINER		; NRM ERROR
   985	000377'	326 05 0 00 000375'		JUMPN	A,SIN2			; GOT 1 - READ ALL OF THEM
   986	000400'	260 17 0 00 001300'		$CALL	RCVMSG			; READ A MSG
   987	000401'	254 00 0 00 000521'		  JRST	USINER			; READ ERROR
   988						JUMPL	A,[	MOVEI	J1,^D250	; NOTHING - TRY AGAIN LATER
   989								DISMS			; ZZZ
   990	000402'	321 05 0 00 004001'				JRST 	SIN1]		; ...
   991	000403'	327 05 0 00 000367'		JUMPG	A,SIN1			; SOMETHING BESIDES DATA
   992	000404'	211 10 0 00 000005 		MOVNI	D,5			; DATA MSG IN NRDRBF
   993	000405'	273 10 0 15 000101 		ADDB	D,NRDRCN(R)		; GET BUFFER COUNT
   994	000406'	321 10 0 00 004011'		JUMPL	D,[NRDR .,,USINER]	; INSUFF DATA FOR NURD MSG
   995	000407'	133 00 0 15 000100 		IBP	NRDRPT(R)		; ADVANCE PAST NURD MSG FLAGS
   996	000410'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; MSG SEQUENCE NO.
   997	000411'	202 11 0 15 000041 		MOVEM	T1,NRDSEQ(R)
   998	000412'	134 12 0 15 000100 		ILDB	T2,NRDRPT(R)		; DATA FLAGS
   999	000413'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; GET NO. SEGMENTS
  1000	000414'	202 11 0 15 000044 		MOVEM	T1,NRDSGS(R)
  1001	000415'	402 00 0 15 000045 		SETZM	NRDSGN(R)		; INIT CURRENT SEG CNT
  1002	000416'	606 12 0 00 000004 		TXNN	T2,ND.EOF		; EOF ?
  1003	000417'	254 00 0 00 000425'		JRST	SIN3
  1004	000420'	660 13 0 00 000400 		TXO	LS,NRD.EO
  1005	000421'	661 14 0 00 000040 		TXO	DS,MO%EOF
  1006	000422'	606 13 0 00 000030 		TXNN	LS,NRD.AI!NRD.IM	; CHECK ASCII OR IMAGE
  1007	000423'	254 00 0 00 000511'		JRST	USIEOF			; ASCII EOF MSG GETS SPECIAL TREATMENT
  1008	000424'	620 12 0 00 000002 		TXZ	T2,ND.IER		; IMAGE - IGNORE DATA ERRORS
  1009	000425'	602 12 0 00 000002 	SIN3:	TXNE	T2,ND.IER		; DATA ERROR DETECTED
  1010	000426'	664 13 0 00 001000 		TXOA	LS,NRD.ER		; YES
  1011	000427'	624 13 0 00 001000 		TXZA	LS,NRD.ER
  1012	000430'	664 14 0 00 000001 		TXOA	DS,MO%RCK
  1013	000431'	624 14 0 00 000001 		TXZA	DS,MO%RCK
  1014	000432'	254 00 0 00 004012'		ERR	IOX5,USINR1		; DATA ERROR - USER CAN READ THIS
  1015										;   CARD BY REISSUING ANOTHER USIN
  1016	000433'	200 07 0 15 000045 	USIN1:	MOVE	C,NRDSGN(R)		; GET CURRENT SEGMENT  BYTE CNT
  1017	000434'	321 07 0 00 000457'		JUMPL	C,USIN4			; MORE LEFT IN COMPRESSION SEQUENCE
  1018	000435'	327 07 0 00 000465'		JUMPG	C,USIN6			; MORE LEFT IN NORMAL SEQUENCE
  1019	000436'	375 00 0 15 000044 	USIN2:	SOSGE	NRDSGS(R)		; COUNT SEGMENTS
  1020	000437'	254 00 0 00 000367'		JRST	SIN1			; MSG DONE
  1021	000440'	361 10 0 00 004021'		SOJL	D,[NRDR .,,USINER]	; INSUFF DATA FOR SEG HEADER
  1022	000441'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; GET NEXT SEGMENT HEAD
  1023	000442'	626 11 0 00 000200 		TXZN	T1,200			; CHECK FOR COMPRESSION SEQUENCE
  1024	000443'	334 07 0 00 000011 		SKIPA	C,T1			; NORMAL
  1025	000444'	210 07 0 00 000011 		MOVN	C,T1			; COMPRESSION SEQUENCE
  1026	000445'	322 07 0 00 000367'		JUMPE	C,SIN1			; EOR=> MSG DONE
  1027	000446'	327 07 0 00 000465'		JUMPG	C,USIN6			; BEGIN NEW NORMAL SEQUENCE
  1028					; BEGIN NEW COMPRESSION SEQUENCE
  1029	000447'	361 10 0 00 004027'		SOJL	D,[NRDR .,,USINER]	; INSUFF DATA FOR LOW DATA BYTE
  1030	000450'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; GET REPEATED DATA ITEM
  1031	000451'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI	; CHECK SIZE OF DATA ITEM
  1032	000452'	254 00 0 00 000456'		JRST	USIN3			; ASCII MODE
  1033	000453'	361 10 0 00 004035'		SOJL	D,[NRDR .,,USINER]	; INSUFF DATA FOR HIGH BYTE
  1034	000454'	134 12 0 15 000100 		ILDB	T2,NRDRPT(R)		; GET HIGH PART
  1035	000455'	137 12 0 00 004036'		DPB	T2,[POINT 8,T1,27]
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 18-2
NURD	MAC	21-Mar-80 10:15		USIN

  1036	000456'	202 11 0 15 000046 	USIN3:	MOVEM	T1,NRDREP(R)		; SAVE REPEAT ITEM
  1037	000457'	200 11 0 15 000046 	USIN4:	MOVE	T1,NRDREP(R)		; GET REPEAT ITEM
  1038	000460'	136 11 0 00 000002 		IDPB	T1,J2			; STUFF THE ITEM
  1039						JUMPL	J3,[	AOJL	J3,USIN5	; TERMINATE ON COUNT
  1040	000461'	321 03 0 00 004037'				AOJA	C,USINX]	; DEST SURFEITED
  1041						JUMPG	J3,[	SOSE	J3		; STOP ON COUNT OR BYTE= (AC4)
  1042								CAMN	T1,J4		; ...
  1043								AOJA	C,USINX		; FULL
  1044							USIN5:	AOJL	C,USIN4		; MORE - COUNT ITEM IN SEGMENT
  1045	000462'	327 03 0 00 004041'				JRST	USIN2]		; NEED NEW SEGMENT
  1046	000463'	326 11 0 00 000000*		JUMPN	T1,USIN5			; MORE
  1047	000464'	344 07 0 00 000501'		AOJA	C,USIN9			; SATISFIED
  1048
  1049	000465'	361 10 0 00 004053'	USIN6:	SOJL	D,[NRDR .,,USINER]	; INSUFF DATA FOR LOW DATA BYTE
  1050	000466'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; GET NEXT DATA ITEM
  1051	000467'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI	; CHECK SIZE OF DATA ITEM
  1052	000470'	254 00 0 00 000474'		JRST	USIN7			; ASCII
  1053	000471'	361 10 0 00 004061'		SOJL	D,[NRDR .,,USINER]	; INSUFF DATA FOR HIGH BYTE
  1054	000472'	134 12 0 15 000100 		ILDB	T2,NRDRPT(R)		; GET HIGH PART
  1055	000473'	137 12 0 00 004036'		DPB	T2,[POINT 8,T1,27]
  1056	000474'	136 11 0 00 000002 	USIN7:	IDPB	T1,J2			; STUFF THE DATA ITEM
  1057						JUMPL	J3,[	AOJL	J3,USIN8	; TERMINATED BY COUNT
  1058	000475'	321 03 0 00 004062'				SOJA	C,USINX]	; STUFFED
  1059						JUMPG	J3,[	SOSE	J3		; STOP BY COUNT OR BYTE=(AC4)
  1060								CAMN	T1,J4
  1061								SOJA	C,USINX		; SATIATED
  1062							USIN8:	SOJG	C,USIN6		; COUNT DATA ITEM IN SEGMENT
  1063	000476'	327 03 0 00 004064'				JRST	USIN2]		; NEED NEW SEGMENT
  1064	000477'	326 11 0 00 000000*		JUMPN	T1,USIN8			; TERMINATED BY BYTE= 0
  1065	000500'	275 07 0 00 000001 		SUBI	C,1			; FULL
  1066	000501'	211 05 0 00 000001 	USIN9:	MOVNI	A,1			; TERMINATED ON ZERO BYTE - BACK UP PTR
  1067	000502'	133 05 0 00 000002 		ADJBP	A,J2
  1068	000503'	200 02 0 00 000005 		MOVE	J2,A
  1069
  1070					; END OF DEST BUFFER
  1071	000504'	202 07 0 15 000045 	USINX:	MOVEM	C,NRDSGN(R)		; DESTINATION STRING TERMINATED
  1072	000505'	202 10 0 15 000101 		MOVEM	D,NRDRCN(R)		; SAVE CURRENT MSG STATUS
  1073	000506'	124 02 0 15 000002 		DMOVEM	J2,RDSAVE+J2(R)		; SET RETURN VALUE OF J2,J3
  1074	000507'	606 13 0 00 000400 		TXNN	LS,NRD.EO		; IF EOF SET (IMAGE EOF) FALL THRU
  1075	000510'	254 00 0 00 002367'		JRST	SUCRTN
  1076
  1077					; EOF - FLUSH MESSAGE, SET EOF CONDITION
  1078	000511'	260 17 0 00 001704'	USIEOF:	$CALL	RCVRQ			; WAIT FOR ATTENTION MSG WHICH FOLLOWS
  1079	000512'	260 17 0 00 004071'		  NRDR				; READ ERROR OR DATA BLOCKING
  1080	000513'	620 13 0 00 051000 	USIEF1:	TXZ	LS,NRD.ER!NRD.FE!NRD.TO	; IGNORE HARD ERRORS
  1081	000514'	630 14 0 00 003770'		TXZ	DS,MO%FER!MO%HE!MO%SER!MO%LCI!MO%HEM!MO%SFL!MO%PCK!MO%RCK
  1082	000515'	201 01 0 00 600220 		ERR	IOX4			; OK TO PROCEED NOW
  1083	000516'	402 00 0 15 000101 		SETZM	NRDRCN(R)		; MESSAGE FAULT EXIT- FLUSH MSG
  1084	000517'	602 13 0 00 000030 		TXNE	LS,NRD.AI!NRD.IM	; CHECK ASCII OR IMAGE
  1085	000520'	254 00 0 00 002312'		JRST	ERRTN			; LET USER KNOW ABOUT IT
  1086
  1087	000521'	402 00 0 15 000101 	USINER:	SETZM	NRDRCN(R)		; MESSAGE FAULT EXIT- FLUSH MSG
  1088	000522'	124 02 0 15 000002 	USINR1:	DMOVEM	J2,RDSAVE+J2(R)		; SET RETURN VALUE OF J2,J3
  1089	000523'	254 00 0 00 002312'		JRST	ERRTN
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 19
NURD	MAC	21-Mar-80 10:15		UMTOPR

  1090					SUBTTL	UMTOPR
  1091
  1092					; UMTOPR SIMULATES MTOPR JSYS FOR REMOTE DEIVCES
  1093					;
  1094					;	AC1 = JFN SUBSTITUTE
  1095					;	AC2 = FUNCTION CODE
  1096					;	AC3 = ARG OR PTR TO ARG BLOCK
  1097
  1098	000524'	260 17 0 00 002243'	UMTOPR::$CALL	SETUP1			; NON-SKIP JSYS
  1099	000525'	254 00 0 00 002312'		  JRST	ERRTN			; BAD JFN
  1100	000526'	602 13 0 00 000002 		TXNE	LS,NRD.CC		; CHECK LINK STILL CONNECTED
  1101	000527'	606 13 0 00 000100 		TXNN	LS,NRD.OC		; MAKE SURE DEVICE IS OPENED
  1102	000530'	254 00 0 00 003715'		ERR	DESX5,ERRTN		; "FILE" NOT OPENED
  1103	000531'	602 13 0 00 000004 		TXNE	LS,NRD.LP		; LPT ?
  1104						JRST	[	SKIPE	NRDSCN(R)	; YES, SO FLUSH OUTPUT
  1105								$CALL	SNDNRD		; ...
  1106								MOVE	T1,[-LTOPRL,,LTOPR]
  1107	000532'	254 00 0 00 004075'				JRST	UMT1]
  1108	000533'	200 11 0 00 004101'		MOVE	T1,[-CTOPRL,,CTOPR]	; CDR
  1109
  1110	000534'	554 12 0 11 000000 	UMT1:	HLRZ	T2,(T1)			; SCAN DEV TABLE FOR FUNCTION
  1111	000535'	316 12 0 00 000002 		CAMN	T2,J2
  1112						JRST	[	HRRZ	T1,(T1)		; DISPATCH TO FUNC PROCESSOR
  1113	000536'	254 00 0 00 004102'				JRST	(T1)]		; ...
  1114	000537'	253 11 0 00 000534'		AOBJN	T1,UMT1			; CHECK ALL POSSIBILITIES
  1115	000540'	201 01 0 00 601210 		ERRI	MTOX1,ERRTN		; INVALID FUNCTION
  1116	000541'	254 00 0 00 002312'
  1117
  1118					; LPT MTOPR FUNCTIONS
  1119	000542'	000027	000555'		LTOPR:	.MOPSI,,LMOPSI		; ENABLE SOFTWARE INTERRUPTS
  1120	000543'	000031	000611'			.MONOP,,LMONOP		; IO WAIT
  1121	000544'	000032	000624'			.MOLVF,,LMOLVF		; LOAD VFU
  1122	000545'	000033	000624'			.MORVF,,LMORVF		; READ VFU NAME
  1123	000546'	000034	000624'			.MOLTR,,LMOLTR		; LOAD TRANSLATION RAM
  1124	000547'	000035	000624'			.MORTR,,LMORTR		; READ NAME OF TRANSLATION RAM
  1125	000550'	000036	000626'			.MOSTS,,LMOSTS		; SET LPT STATUS
  1126	000551'	000037	000567'			.MORST,,LMORST		; READ LPT STATUS
  1127	000552'	000040	000701'			.MOFLO,,LMOFLO		; ABORT LPT OUTPUT
  1128			000011		LTOPRL==.-LTOPR
  1129
  1130					; CDR MTOPR FUNCTIONS
  1131	000553'	000027	000555'		CTOPR:	.MOPSI,,CMOPSI		; ENABLE SOFTWARE INTERRUPTS
  1132	000554'	000037	000577'			.MORST,,CMORST		; READ CDR STATUS
  1133			000002		CTOPRL==.-CTOPR
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 20
NURD	MAC	21-Mar-80 10:15		UMTOPR

  1134					; ENABLE INTERRUPTS FOR DEVICE CHANGES:
  1135					;	DEVICE ONLINE STATE OR PAGE COUNTER OVERFLOW
  1136	000555'				LMOPSI:
  1137	000555'	200 12 0 00 000003 	CMOPSI:	MOVE	T2,J3			; GET ARG BLOCK PTR
  1138	000556'	260 17 0 00 002220'		$CALL	EFADR			; FIND IT
  1139	000557'	210 12 0 11 000001 		MOVN	T2,1(T1)		; GET CHANNEL NUMBER - IGNORE FLAGS
  1140	000560'	205 11 0 00 400000 		MOVX	T1,1B0			; ...
  1141	000561'	241 11 0 12 000000 		ROT	T1,(T2)			; ...
  1142	000562'	202 11 0 15 000077 		MOVEM	T1,NRDCHN(R)		; SET CHANNEL ENABLE MASK
  1143	000563'	201 11 0 00 000200 		MOVEI	T1,NRD.EN		; SET INTERRUPT ENABLED FLAG
  1144	000564'	436 11 0 15 000036 		IORM	T1,NRDSTS(R)		; ...
  1145	000565'	660 13 0 00 000200 		TXO	LS,NRD.EN		;   BOTH PLACES
  1146	000566'	254 00 0 00 002367'		JRST	SUCRTN			; THAT'S ALL FOLKS
  1147
  1148					; READ LPT STATUS
  1149	000567'	200 11 0 15 000041 	LMORST:	MOVE	T1,NRDSEQ(R)		; CHECK AGE OF CURRENT STATUS
  1150	000570'	430 11 0 15 000051 		XOR	T1,NRDASQ(R)		; ...
  1151	000571'	602 11 0 00 000377 		TXNE	T1,377			; SKIP IF ATT MSG WAS FOR LAST DATA MSG
  1152	000572'	602 13 0 00 020000 		TXNE	LS,NRD.PS		; NO USE  IF PAUSED
  1153	000573'	254 00 0 00 000577'		JRST	LMORS1			; CURRENT STATUS WILL SUFFICE
  1154	000574'	260 17 0 00 001750'		$CALL	SNDRQS			; REQUEST STATUS
  1155	000575'	260 17 0 00 001702'		$CALL	RCVRQS			; WAIT FOR IT
  1156	000576'	260 17 0 00 003705'		  NRDR	,,ERRTN			; DATA MSG BLOCKING STATUS RSP
  1157
  1158					; MO%LCP IS AUTOMATICALLY MAINTAINED IN FEATURE MSG RPOCESSING BASED ON
  1159					; CURRENT VALUE OF FE.LCR AS THE STATUS OF THIS FEATURE WILL DETERMINE
  1160					; WHETHER LOWER CASE CHARACTERS WILL PRINT.  UOPENF INITS THE LPT BY SETTING
  1161					; FE.LCR=1=> MO%LCP=0.
  1162					; LMOSTS CAN ATTEMPT TO SET FE.LCR=0 AND MO%LCP WILL BE SET ONLY IF THAT
  1163					; SUCCEEDS.
  1164	000577'				LMORS1:
  1165
  1166					; CDR CAN'T SEND STATUS BECAUSE OF POSSIBLE DEADLOCK IN RETURN DATA STREAM
  1167	000577'	200 12 0 00 000003 	CMORST:	MOVE	T2,J3			; RETURN UPDATED STATUS TO USER
  1168	000600'	260 17 0 00 002220'		$CALL	EFADR			; FIND IT
  1169	000601'	261 17 0 00 000011 		PUSH	P,T1
  1170	000602'	260 17 0 00 000714'		$CALL	SETDST			; UPDATE DEVICE STATUS
  1171	000603'	262 17 0 00 000012 		POP	P,T2
  1172	000604'	261 12 0 00 000014 		PUSH	T2,DS			; STORE DEVICE STATUS
  1173	000605'	200 11 0 12 777777 		MOVE	T1,-1(T2)		; CHECK BLOCK LENGTH
  1174	000606'	303 11 0 00 000002 		CAILE	T1,2
  1175	000607'	261 12 0 15 000052 		PUSH	T2,NRDLPC(R)		; WANTS PAGE COUNT ALSO
  1176	000610'	254 00 0 00 002367'		JRST	SUCRTN
  1177
  1178	000611'	260 17 0 00 000614'	LMONOP:	$CALL	LPTIOW			; IO WAIT FOR LPTSO WAIT
  1179	000612'	260 17 0 00 004104'		  NRDR	,(J1),ERRTN		; DATA MSG BLOCKING DUMP RSP
  1180	000613'	254 00 0 00 002367'		JRST	SUCRTN			; THEN GO AWAY
  1181
  1182					; IO WAIT FUNCTION FOR LPT
  1183	000614'	260 17 0 00 001747'	LPTIOW:	$CALL	SNDDMP			; DUMP OUTPUT BUFFERS
  1184	000615'	260 17 0 00 001670'		$CALL	RCVCRS			; GET THE RESPONSE
  1185	000616'	263 17 0 00 000000 		  $RET				; DUMP RESPONSE IS BLOCKED BY DATA MSG
  1186	000617'	306 05 0 00 000001 		CAIN	A,NR.NOB		; A = RESULT RETURNED BY DUMP MSG
  1187	000620'	254 00 0 00 002161'		PJRST	CPOPJ1			; NO OUTPUT BUFFERED - DONE
  1188	000621'	201 01 0 00 001750 		MOVEI	J1,^D1000		; WAIT A SEC
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 20-1
NURD	MAC	21-Mar-80 10:15		UMTOPR

  1189	000622'	104 00 0 00 000167 		DISMS
  1190	000623'	254 00 0 00 000614'		JRST	LPTIOW			; TRY AGAIN
  1191
  1192	000624'				LMOLVF:					; LOAD THE VFU
  1193	000624'				LMORVF:					; READ THE VFU NAME
  1194	000624'				LMOLTR:					; LOAD THE TRANSLATION RAM
  1195	000624'				LMORTR:					; READ THE TRANSLATION RAM NAME
  1196	000624'	201 01 0 00 601340 		ERRI	DESX9,ERRTN		; INVALID OPERATION FOR DEVICE
  1197	000625'	254 00 0 00 002312'
  1198
  1199	000626'	200 12 0 00 000003 	LMOSTS:	MOVE	T2,J3			; SET LPT STATUS
  1200	000627'	260 17 0 00 002220'		$CALL	EFADR			; FIND IT
  1201	000630'	200 10 0 00 000011 		MOVE	D,T1			; SAVE PTR FOR A WHILE
  1202	000631'	205 11 0 00 000040 		MOVX	T1,MO%EOF		; SET EOF ? - IF SO, MUST BE DONE 1ST
  1203	000632'	616 11 0 10 000001 		TDNN	T1,1(D)
  1204	000633'	254 00 0 00 000653'		JRST	LMOST1			; NOPE
  1205										; YES - CONSTRUCT NULL DATA MSG
  1206	000634'	260 17 0 00 002100'		$CALL	SBFINI			; INIT THE BUFFER
  1207	000635'	400 12 0 00 000000 		SETZ	T2,
  1208	000636'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; DATA MSG
  1209	000637'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NO NURD FLAGS
  1210	000640'	350 11 0 15 000041 		AOS	T1,NRDSEQ(R)
  1211	000641'	405 11 0 00 000377 		ANDI	T1,377
  1212	000642'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; SEQUENCE NO.
  1213	000643'	201 11 0 00 000005 		MOVEI	T1,ND.ACK!ND.EOF
  1214	000644'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; SET EOF AND ACK THIS MSG !!
  1215	000645'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NO DATA SEGMENTS
  1216	000646'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; SEND IT
  1217	000647'	260 17 0 00 000752'		$CALL	SNDBUF
  1218	000650'	254 00 0 00 002312'		  JRST	ERRTN			; DEVICE WENT OFFLINE
  1219	000651'	661 14 0 00 000040 		TXO	DS,MO%EOF		; SET EOF FLAGS, SINCE RESPONSE WON'T
  1220	000652'	660 13 0 00 000400 		TXO	LS,NRD.EO		;   INDICATE EOF STATE(NURD SPEC CROCK)
  1221
  1222	000653'	205 11 0 00 400000 	LMOST1:	MOVX	T1,MO%LCP		; LOWER CASE ?
  1223	000654'	616 11 0 10 000001 		TDNN	T1,1(D)
  1224	000655'	254 00 0 00 000662'		JRST	LMOST2			; NO
  1225										; SET LOWER CASE RAISE OFF
  1226	000656'	201 05 0 00 000003 		MOVEI	A,FE.LCR		; FEATURE ID
  1227	000657'	201 06 0 00 000000 		MOVEI	B,0			; VALUE
  1228	000660'	201 07 0 00 000000 		MOVEI	C,0			; NO. BYTES IN VALUE(CLASS 0)
  1229	000661'	260 17 0 00 002017'		$CALL	SETFTR			; ONLY SUCCESS WILL SET MO%LCP=1
  1230
  1231	000662'	200 06 0 10 000002 	LMOST2:	MOVE	B,2(D)			; SET THE PAGE LIMIT ??
  1232	000663'	316 06 0 00 004112'		CAMN	B,[-1]
  1233	000664'	254 00 0 00 000670'		JRST	LMOST3			; NO
  1234										; YES, B = VALUE (0 => TURN OFF)
  1235	000665'	201 05 0 00 000211 		MOVEI	A,LP.PLE		; FEATURE ID
  1236	000666'	201 07 0 00 000002 		MOVEI	C,2			; NO. BYTES IN VALUE
  1237	000667'	260 17 0 00 002017'		$CALL	SETFTR			; SET PAGE LIMIT ENFORCEMENT
  1238
  1239	000670'	205 11 0 00 000010 	LMOST3:	MOVX	T1,MO%SER		; RESET SOFT ERROR
  1240	000671'	616 11 0 10 000001 		TDNN	T1,1(D)
  1241	000672'	254 00 0 00 000676'		JRST	LMOST4
  1242	000673'	630 14 0 00 000011 		TDZ	DS,T1			; RESET THE FLAG
  1243	000674'	202 14 0 15 000037 		MOVEM	DS,NRDDST(R)		; UPDATE ENTRY STATE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 20-2
NURD	MAC	21-Mar-80 10:15		UMTOPR

  1244	000675'	260 17 0 00 001765'		$CALL	SNDRES			; ATTEMPT RESUME - CLEAR ERROR FLAGS
  1245
  1246	000676'	260 17 0 00 000614'	LMOST4:	$CALL	LPTIOW			; WAIT TIL ALL STATE CHANGES PROCESSED
  1247	000677'	260 17 0 00 003705'		  NRDR	,,ERRTN			; OH?
  1248	000700'	254 00 0 00 002367'		JRST	SUCRTN			; AWRIGHT !
  1249
  1250					; FLUSH LPT OUTPUT
  1251	000701'	260 17 0 00 001760'	LMOFLO:	$CALL	SNDAUC			; SEND ABORT UNTIL CLEAR
  1252	000702'	260 17 0 00 001670'		$CALL	RCVCRS			; WAIT FOR CONTROL RESPONSE
  1253	000703'	260 17 0 00 003705'		  NRDR	,,ERRTN			; DATA MSG BLOCKING CONTROL RSP
  1254	000704'	302 05 0 00 000001 		CAIE	A,NR.NAB		; WHEN NOTHING TO ABORT CONTINUE ON
  1255						JRST	[	MOVEI	J1,^D1000	; WAIT A SECOND
  1256								DISMS			;  ZZZ
  1257	000705'	254 00 0 00 004113'				JRST	LMOFLO]		;   AND TRY AGAIN
  1258	000706'	260 17 0 00 001757'		$CALL	SNDCAB			; CLEAR THE ABORT
  1259	000707'	260 17 0 00 001670'		$CALL	RCVCRS			; WAIT FOR RESPONSE
  1260	000710'	260 17 0 00 003705'		  NRDR	,,ERRTN			; DATA MSG BLOCKING CONTROL RSP
  1261	000711'	302 05 0 00 000000 		CAIE	A,NR.ACC		; ABORT CLEARED?
  1262	000712'	260 17 0 00 003705'		NRDR	,,ERRTN			; NO, THEN PROTOCOL ERROR
  1263	000713'	254 00 0 00 002367'		JRST	SUCRTN
  1264
  1265					; SET DEVICE STATUS TO CURRENT STATE
  1266	000714'	554 11 0 15 000036 	SETDST:	HLRZ	T1,NRDSTS(R)		; GET CONDITIONS FROM INT LEVEL
  1267	000715'	661 13 0 11 000000 		TLO	LS,(T1)
  1268	000716'	603 13 0 00 000001 		TXNE	LS,NRD.OF
  1269	000717'	665 14 0 00 000002 		TXOA	DS,MO%OL
  1270	000720'	621 14 0 00 000002 		TXZ	DS,MO%OL
  1271	000721'	332 00 0 15 000033 		SKIPE	NRMASR(R)		; CHECK NRM REPORTED PROBLEM
  1272	000722'	661 14 0 00 000210 		TXO	DS,MO%FER!MO%SER	; ALWAYS FATAL
  1273	000723'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 21
NURD	MAC	21-Mar-80 10:15		UCLOSF

  1274					SUBTTL	UCLOSF
  1275
  1276					; UCLOSF SIMULATES A CLOSF JFN FOR REMOTE DEVICES
  1277					;	AC1 = FLAGS,,SUBSTITUTE JFN
  1278					; CLOSE DEVICE=>	CLOSE NRD DATA LINK
  1279					;			CLOSE NRM CONTROL LINK
  1280					;			RELEASE JFNS
  1281					;			FLUSH DATA BASE
  1282
  1283	000724'	260 17 0 00 002245'	UCLOSF::$CALL	SETUP2			; SKIP TYPE JSYS
  1284	000725'	254 00 0 00 002312'		  JRST	ERRTN			; OOPS!
  1285	000726'	260 17 0 00 002524'		$CALL	INTOFF			; FLUSH INTS
  1286	000727'	474 05 0 00 000000 		SETO	A,			; ASSUME WE WILL BE SUCCESSFUL
  1287	000730'	205 01 0 00 004000 		MOVX	J1,CZ%ABT		; ABORT THE JFNS ANYWAY
  1288	000731'	540 01 0 15 000034 		HRR	J1,NRDJFN(R)		; GET NRD'S JFN
  1289	000732'	104 00 0 00 000022 		CLOSF				; CLOSE NRD LINK WITH FLAGS
  1290	000733'	400 05 0 00 000000 		  SETZ	A,			; ? AN ERROR
  1291	000734'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; NOW TO RELEASE
  1292	000735'	104 00 0 00 000023 		RLJFN				;   THE JFN
  1293	000736'	400 05 0 00 000000 		  SETZ	A,			; ??
  1294	000737'	205 01 0 00 004000 		MOVX	J1,CZ%ABT		; NOW THE SAME TREATMENT FOR NRM
  1295	000740'	540 01 0 15 000026 		HRR	J1,NRMJFN(R)		; GET THE JFN
  1296	000741'	104 00 0 00 000022 		CLOSF				; CLOSE NRM LINK
  1297	000742'	400 05 0 00 000000 		  SETZ	A,			; PECULIAR !
  1298	000743'	200 01 0 15 000026 		MOVE	J1,NRMJFN(R)		; GET RID OF JFN
  1299	000744'	104 00 0 00 000023 		RLJFN				; ...
  1300	000745'	400 05 0 00 000000 		  SETZ	A,			; ?
  1301	000746'	201 11 0 00 400000 		MOVEI	T1,UJ.FLS		; NOW TO GET RID OF DATABASE
  1302	000747'	436 11 0 15 000023 		IORM	T1,RDSTS(R)		; SET THE FLUSH FLAG
  1303	000750'	322 05 0 00 002312'		JUMPE	A,ERRTN			; ERROR OCCURED IF ZERO FLAG
  1304	000751'	254 00 0 00 002367'		JRST	SUCRTN			; AHA !!
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 22
NURD	MAC	21-Mar-80 10:15		NSP Support Functions

  1305					SUBTTL	NSP Support Functions
  1306
  1307					; J1 = JFN FOR DEST
  1308					; CLOBBERED T1,J2,J3,J4
  1309	000752'	205 02 0 00 441000 	SNDBUF:	MOVSI	J2,(POINT 8)		; POINT TO THE BUFFER
  1310	000753'	541 02 0 15 000361 		HRRI	J2,NRDSBF(R)		;   IN NRDSBF
  1311	000754'	201 03 0 15 000361 		MOVEI	J3,NRDSBF(R)		; CALC NO. BYTES
  1312	000755'	275 03 1 15 000102 		SUBI	J3,@NRDSPT(R)		; J3 = -NO. WORDS
  1313	000756'	240 03 0 00 000002 		ASH	J3,2			; 4 BYTES PER WORD
  1314	000757'	135 04 0 00 004116'		LDB	J4,[POINT 6,NRDSPT(R),5] ; DET PARTIAL WORD BYTES
  1315	000760'	571 04 0 04 777734 		HRREI	J4,-^D36(J4)		; [0,-8,-16,-24,-32]
  1316	000761'	240 04 0 00 777775 		ASH	J4,-3			; [0,-1,-2,-3,-4]
  1317	000762'	270 03 0 00 000004 		ADD	J3,J4			; J3 =  -<NO. BYTES IN MSG>
  1318	000763'	325 03 0 00 002161'		JUMPGE	J3,CPOPJ1		; FORGET IT
  1319
  1320	000764'	201 11 0 00 200000 	SENDER:	MOVEI	T1,UJ.SSO		; FLUSH SUSPENDED SOUTR FLAG
  1321	000765'	413 11 0 15 000023 		ANDCAB	T1,RDSTS(R)		; ...
  1322	000766'	602 11 0 00 100000 		TXNE	T1,UJ.RCV		; CHECK FOR MSG ARRIVING VERY RECENTLY
  1323	000767'	254 00 0 00 001017'		JRST	BRKS			; SEEMS SO
  1324	000770'	104 00 0 00 000532 		SOUTR				; SEND THE BUFFER
  1325	000771'	320 16 0 00 000774'	USOWTR:	  ERJMP	SOERR			; SOUTR ERROR! - PROBABLY LINK BROKEN
  1326	000772'	402 00 0 15 000103 		SETZM	NRDSCN(R)		; MAKE THE BUFFER EMPTY
  1327	000773'	254 00 0 00 002161'		PJRST	CPOPJ1
  1328
  1329	000774'	261 17 0 00 000002 	SOERR:	PUSH	P,J2			; SAVE USER J2
  1330	000775'	261 17 0 00 000003 		PUSH	P,J3			;   AND J3
  1331	000776'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; SOUTR ERROR EXIT
  1332	000777'	104 00 0 00 000012 		GETER				; DETERMINE ERROR CONDITION
  1333	001000'	261 17 0 00 000002 		PUSH	P,J2			; SAVE ERROR CODE FOR LATER
  1334	001001'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; CHECK CONDITION OF LINK
  1335	001002'	201 02 0 00 000025 		MOVEI	J2,.MORLS
  1336	001003'	104 00 0 00 000077 		MTOPR
  1337	001004'	607 03 0 00 014000 		TXNN	J3,MO%ABT!MO%SYN
  1338	001005'	607 03 0 00 400000 		TXNN	J3,MO%CON
  1339	001006'	624 13 0 00 000102 		TXZA	LS,NRD.CC!NRD.OC	; LINK BROKEN
  1340	001007'	665 14 0 00 000010 		TXOA	DS,MO%SER		; SOFT ERROR?
  1341	001010'	665 14 0 00 000200 		TXOA	DS,MO%FER		; BROKEN LINK IS FATAL
  1342	001011'	334 00 0 00 000000 		SKIPA
  1343	001012'	621 14 0 00 000002 		TXZ	DS,MO%OL		; DON'T GET CONFUSED BY OFFLINE
  1344	001013'	262 17 0 00 000001 		POP	P,J1			; GET ERROR CODE TO J1
  1345	001014'	262 17 0 00 000003 		POP	P,J3			; RESTORE USER J3
  1346	001015'	262 17 0 00 000002 		POP	P,J2			; AND J2
  1347	001016'	263 17 0 00 000000 		$RET				; LEAVE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 23
NURD	MAC	21-Mar-80 10:15		NSP Support Functions

  1348					; PROCESS RECEIVED DATA IN CASE DEVICE WENT OFFLINE
  1349					; NOTE: INTERRUPTS ARE NOT ENABLED UNTIL ALL INITIAL NRM EXCHANGES ARE COMPLETE
  1350					; AND DEVICE IS SUCCESSFULLY OPENED.  THEREFORE(INVOKE IMPLACABLE LOGIC HERE)
  1351					; ANY NRM MESSAGES RECEIVED HERE MUST NECESSARILY BE ASYNCHRONOUS ERROR
  1352					; REPORTS - HENCE SHOULD ALWAYS TAKE NONSKIP RETURN FROM RCVNRM!
  1353
  1354	001017'	261 17 0 00 000005 	BRKS:	PUSH	P,A			; SAVE A COUPLE OF REGS
  1355	001020'	261 17 0 00 000006 		PUSH	P,B			; ...
  1356
  1357	001021'	260 17 0 00 001233'	BR1:	$CALL	RCVNRM			; CHECK NRM DISASTERS
  1358	001022'	260 17 0 00 004117'		  NRDR	,,BR3
  1359	001023'	326 05 0 00 001021'		JUMPN	A,BR1			; JUST IN CASE LOGIC FAILS
  1360
  1361	001024'	260 17 0 00 001300'	BR2:	$CALL	RCVMSG			; PROCESS DATA LINK MSGS
  1362	001025'	260 17 0 00 004117'		  NRDR	,,BR3
  1363	001026'	327 05 0 00 001024'		JUMPG	A,BR2			; GOBBLE ALL
  1364	001027'	616 13 0 00 004125'		TXNN	LS,NRD.OF!NRD.PS	; DO WE STILL HAVE A DEVICE ?
  1365						JRST	[	POP	P,B		; YES, RESTORE REGS
  1366								POP	P,A		; ...
  1367	001030'	254 00 0 00 004126'				JRST	SENDER]		; EVERYTHING OK - TRY AGAIN
  1368
  1369					; DEVICE FELL OVER - SUSPEND SOUTR
  1370	001031'	262 17 0 00 000006 	BR3:	POP	P,B			; RESTORE REGS
  1371	001032'	262 17 0 00 000005 		POP	P,A			; ...
  1372	001033'	402 00 0 15 000103 		SETZM	NRDSCN(R)		; FLUSH THE BUFFER
  1373	001034'	201 01 0 00 600110 		ERRI	GJFX28,CPOPJ		; DEV OFFLINE - RET TO CALLER OF SNDBUF
  1374	001035'	263 17 0 00 000000 
  1375
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 24
NURD	MAC	21-Mar-80 10:15		NSP Support Functions

  1376					; SEND THE CURRENT BUFFER AS AN INTERRUPT MSG
  1377					;	J1 = JFN FOR DEST
  1378	001036'	201 04 0 15 000361 	SNDINT:	MOVEI	J4,NRDSBF(R)		; CALC NO. BYTES
  1379	001037'	275 04 1 15 000102 		SUBI	J4,@NRDSPT(R)		; J4 = -NO. WORDS
  1380	001040'	240 04 0 00 000002 		ASH	J4,2			; 4 BYTES PER WORD
  1381	001041'	135 03 0 00 004116'		LDB	J3,[POINT 6,NRDSPT(R),5] ; DET PARTIAL WORD BYTES
  1382	001042'	571 03 0 03 777734 		HRREI	J3,-^D36(J3)		; [0,-8,-16,-24,-32]
  1383	001043'	240 03 0 00 777775 		ASH	J3,-3			; [0,-1,-2,-3,-4]
  1384	001044'	270 04 0 00 000003 		ADD	J4,J3			; J4 =  -<NO. BYTES IN MSG>
  1385	001045'	325 04 0 00 002162'		JUMPGE	J4,CPOPJ		; FORGET IT
  1386	001046'	217 00 0 00 000004 		MOVMS	J4			; POSITIVE BYTE COUNT
  1387	001047'	201 03 0 15 000361 		MOVEI	J3,NRDSBF(R)		; OUTPUT STRING PTR
  1388	001050'	505 03 0 00 441000 		HRLI	J3,(POINT 8)
  1389	001051'	201 02 0 00 000036 		MOVEI	J2,.MOSIM
  1390	001052'	104 00 0 00 000077 		MTOPR				; SEND THE BUFFER
  1391	001053'	320 16 0 00 002162'		  ERJMP	CPOPJ			; RETURN ON AN ERROR
  1392	001054'	402 00 0 15 000103 		SETZM	NRDSCN(R)		; MAKE THE BUFFER EMPTY
  1393	001055'	263 17 0 00 000000 		$RET
  1394
  1395
  1396					; READ A MSG INTO NRDRBF
  1397					;	J1 = JFN
  1398	001056'	205 02 0 00 441000 	RCVBUF:	MOVSI	J2,(POINT 8)		; BUILD BYTE POINTER
  1399	001057'	541 02 0 15 000161 		HRRI	J2,NRDRBF(R)		;   INTO BUFFER
  1400	001060'	202 02 0 15 000100 		MOVEM	J2,NRDRPT(R)		; SAVE PTR FOR CALLER'S USE
  1401	001061'	211 03 0 00 001000 		MOVNI	J3,NRDBSZ
  1402	001062'	104 00 0 00 000531 		SINR				; READ A MSG
  1403	001063'	320 16 0 00 002162'		  ERJMP	CPOPJ			; ?
  1404	001064'	271 03 0 00 001000 		ADDI	J3,NRDBSZ		; CALC NO. BYTES READ
  1405	001065'	202 03 0 15 000101 		MOVEM	J3,NRDRCN(R)
  1406	001066'	254 00 0 00 002161'		PJRST	CPOPJ1
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 25
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1407					SUBTTL	NURD Support Functions
  1408
  1409					; SEND A SPECIFY-RESERVE MSG TO NRM
  1410					;	CLOBBERS J1,J2,*J3,*J4,T1,T2
  1411
  1412	001067'	260 17 0 00 002100'	DEVRSR:	$CALL	SBFINI			; INIT BUFFER FOR USE
  1413	001070'	200 02 0 15 000102 		MOVE	J2,NRDSPT(R)		; PICK UP BYTE PTR
  1414	001071'	201 11 0 00 000050 		MOVEI	T1,NRMSPC		; INSERT SPECIFY CODE
  1415	001072'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1416	001073'	201 11 0 00 000001 		MOVEI	T1,SPCRES		; INSERT RESERVE SUBCODE
  1417	001074'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1418	001075'	200 11 0 15 000027 		MOVE	T1,NRMID(R)		; PUT IN THE CONTROL ID
  1419	001076'	136 11 0 00 000002 		IDPB	T1,J2			; FIRST THE LOW BYTE
  1420	001077'	242 11 0 00 777770 		LSH	T1,-10			;  THEN THE HIGH BYTE
  1421	001100'	136 11 0 00 000002 		IDPB	T1,J2			;  ...
  1422	001101'	201 11 0 00 000102 		MOVEI	T1,NRDLP		; ASSUME WE ARE RESERVING A LP
  1423	001102'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; IS IT AN LP ?
  1424	001103'	201 11 0 00 000103 		MOVEI	T1,NRDCR		; NOPE, IT IS A CR, SO GUESSED WRONG
  1425	001104'	136 11 0 00 000002 		IDPB	T1,J2			; INSERT THE RESOURCE CODE
  1426	001105'	201 12 0 00 000003 		MOVEI	T2,3			; THERE ARE 3 CHARS IN
  1427	001106'	136 12 0 00 000002 		IDPB	T2,J2			;   THE DEVICE NAME
  1428	001107'	200 01 0 00 004131'		MOVE	J1,[POINT 7,RDDEV(R)]	; POINT AT THE DEVICE NAME
  1429	001110'	134 11 0 00 000001 		ILDB	T1,J1			; GET A CHARACTER OF NAME
  1430	001111'	136 11 0 00 000002 		IDPB	T1,J2			; DEV NAME CH
  1431	001112'	367 12 0 00 001110'		SOJG	T2,.-2			; DO EM ALL
  1432	001113'	202 02 0 15 000102 		MOVEM	J2,NRDSPT(R)		; UPDATE THE BYTE PTR IN DATABASE
  1433	001114'	200 01 0 15 000026 		MOVE	J1,NRMJFN(R)
  1434	001115'	260 17 0 00 000752'		$CALL	SNDBUF			; SEND THE MSG TO NRM
  1435	001116'	263 17 0 00 000000 		  $RET				; DEVICE WENT OFFLINE
  1436	001117'	260 17 0 00 001206'		$CALL	RCVRSP			; WAIT FOR RESPONSE
  1437	001120'	263 17 0 00 000000 		  $RET				; BAD RESPONSE - J1 = ERROR CODE
  1438
  1439					; A = ORIGINAL REQUEST CODE  -  B = RESPONSE CODE
  1440	001121'	302 05 0 00 000050 		CAIE	A,NRMSPC		; CHECK IF RIGHT RESPONSE
  1441	001122'	260 17 0 00 004132'		NRDR	,BOTX05,CPOPJ		; NRM NOT RESPONDING TO REQUEST
  1442	001123'	305 06 0 00 000024 		CAIGE	B,^D20			; CHECK RESPONSE CODE
  1443	001124'	254 00 0 00 002161'		PJRST	CPOPJ1			; OK
  1444
  1445					; RESPONSE ERROR
  1446	001125'	306 06 0 00 000024 	RSPERR:	CAIN	B,^D20			; ACCESS NOT PERMITTED
  1447	001126'	254 00 0 00 004141'		ERR	DESX2,CPOPJ		; TERMINAL NOT AVAIL
  1448	001127'	306 06 0 00 000031 		CAIN	B,^D25			; RESOURCE NON-EXISTENT
  1449	001130'	254 00 0 00 004143'		ERR	GJFX16,CPOPJ		; NO SUCH DEVICE
  1450	001131'	306 06 0 00 000032 		CAIN	B,^D26			; RESOURCE NOT AVAILABLE
  1451	001132'	254 00 0 00 004145'		ERR	OPNX7,CPOPJ		; DEVICE ASSIGNED TO ANOTHER JOB
  1452	001133'	201 01 0 00 602132 		ERRI	BOTX05,CPOPJ		; ELSE - PROTOCOL INITIALIZATION FAILED
  1453	001134'	263 17 0 00 000000 
  1454
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 26
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1455					; SEND AN ACCESS-OPEN TO NRM
  1456					;	CLOBBERS: J1,J2,*J3,*J4,T1,T2
  1457	001135'	260 17 0 00 002100'	OPNDEV:	$CALL	SBFINI			; INIT BUFFER FOR USE
  1458	001136'	200 02 0 15 000102 		MOVE	J2,NRDSPT(R)		; GET BYTE PTR
  1459	001137'	201 11 0 00 000051 		MOVEI	T1,NRMACC		; INSERT ACCESS CODE
  1460	001140'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1461	001141'	201 11 0 00 000002 		MOVEI	T1,ACCOPN		; PUT IN OPEN SUBCODE
  1462	001142'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1463	001143'	200 11 0 15 000027 		MOVE	T1,NRMID(R)		; INSERT THE NRM ID
  1464	001144'	136 11 0 00 000002 		IDPB	T1,J2			;   THE LOW BYTE
  1465	001145'	242 11 0 00 777770 		LSH	T1,-10			;     AND
  1466	001146'	136 11 0 00 000002 		IDPB	T1,J2			;       THE HIGH BYTE
  1467	001147'	201 11 0 00 000002 		MOVEI	T1,URS			; SET THE SERVER PROCESS TYPE
  1468	001150'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1469	001151'	400 11 0 00 000000 		SETZ	T1,			; NO SERVER DESCRIPTOR FIELD
  1470	001152'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1471	001153'	201 11 0 00 000001 		MOVEI	T1,1			; SERVER PROCESS OPTIONS FIELD LENGTH
  1472	001154'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1473	001155'	200 11 0 15 000035 		MOVE	T1,NRDULA(R)		; SET LINK ADDR
  1474	001156'	136 11 0 00 000002 		IDPB	T1,J2			; ...
  1475	001157'	202 02 0 15 000102 		MOVEM	J2,NRDSPT(R)		; UPDATE BYTE POINTER
  1476	001160'	200 01 0 15 000026 		MOVE	J1,NRMJFN(R)		; GET NRM'S JFN
  1477	001161'	260 17 0 00 000752'		$CALL	SNDBUF			; SEND THE MSG TO NRM
  1478	001162'	263 17 0 00 000000 		  $RET				; DEVICE WENT OFFLINE
  1479	001163'	260 17 0 00 001206'		$CALL	RCVRSP			; WAIT FOR RESPONSE
  1480	001164'	263 17 0 00 000000 		  $RET				; BAD RESPONSE - J1 = ERROR CODE
  1481
  1482					; A = ORIGINAL REQUEST CODE  -  B = RESPONSE CODE
  1483	001165'	302 05 0 00 000051 		CAIE	A,NRMACC		; CHECK RIGHT RESPONSE
  1484	001166'	260 17 0 00 004132'		NRDR	,BOTX05,CPOPJ		; NRM NOT RESPONDING TO REQUEST
  1485	001167'	301 06 0 00 000024 		CAIL	B,^D20			; CHECK RESPONSE
  1486	001170'	254 00 0 00 001125'		JRST	RSPERR			; ERROR RESPONSE
  1487	001171'	200 11 0 15 000101 		MOVE	T1,NRDRCN(R)		; RESPONSE OK - CHECK BULA RETURNED
  1488	001172'	134 12 0 15 000100 		ILDB	T2,NRDRPT(R)
  1489	001173'	301 11 0 00 000004 		CAIL	T1,4			; MUST BE AT LEAST 4 BYTES LEFT
  1490	001174'	305 12 0 00 000003 		CAIGE	T2,3			; FIELD MUST BE AT LEAST 3 BYTES LONG
  1491	001175'	260 17 0 00 004132'		NRDR	,BOTX05,CPOPJ		; GARBAGE
  1492	001176'	133 00 0 15 000100 		IBP	NRDRPT(R)		; SKIP BTN
  1493	001177'	133 00 0 15 000100 		IBP	NRDRPT(R)
  1494	001200'	134 11 0 15 000100 		ILDB	T1,NRDRPT(R)		; GET BULA
  1495	001201'	211 12 0 00 000004 		MOVNI	T2,4
  1496	001202'	272 12 0 15 000101 		ADDM	T2,NRDRCN(R)		; FOR DEBUGGING
  1497	001203'	312 11 0 15 000035 		CAME	T1,NRDULA(R)		; BETTER BE US
  1498	001204'	260 17 0 00 004132'		NRDR	,BOTX05,CPOPJ		; LOSER
  1499	001205'	254 00 0 00 002161'		PJRST	CPOPJ1			; OK
  1500
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 27
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1501					; RECEIVE A RESPONSE MSG FROM NRM
  1502	001206'	260 17 0 00 003532'	RCVRSP:	$CALL	SAV4J			; SAVE J1-J4
  1503	001207'	201 01 0 00 000012 		MOVEI	J1,NRDTMO		; SET TIMEOUT THING
  1504	001210'	202 01 0 15 000047 		MOVEM	J1,NRDTMC(R)		; ...
  1505	001211'	260 17 0 00 001233'	RCVRS1:	$CALL	RCVNRM			; GO GET A MSG FROM NRM
  1506	001212'	260 17 0 00 004147'		  NRDR	,DCNX11,STASHJ		; LINK ABORTED
  1507						JUMPE	A,[	SOSGE	NRDTMC(R)	; HAVE WE MESSED LONG ENUF ?
  1508								NRDR	.,BOTX05,STASHJ	; YES, SO GIVE UP
  1509								MOVEI	J1,^D500	; NOTHING, SO WAIT
  1510								DISMS			; ...
  1511	001213'	322 05 0 00 004164'				JRST RCVRS1]		; CHECK AGAIN
  1512	001214'	200 04 0 15 000101 		MOVE	J4,NRDRCN(R)		; CHECK MINIMUM LENGTH
  1513	001215'	301 04 0 00 000005 		CAIL	J4,5			;   FOR RESPONSE MSG
  1514	001216'	302 05 0 00 000047 		CAIE	A,NRMRSP		; CHECK RIGHT MSG TYPE
  1515	001217'	260 17 0 00 004171'		NRDR	,BOTX05,STASHJ		; THINGS ARE IN A BAD WAY
  1516	001220'	200 05 0 00 000006 		MOVE	A,B			; A = ORIGINAL REQUEST CODE
  1517	001221'	260 17 0 00 001274'		$CALL	GETWRD			; GET CONTROL-ID
  1518	001222'	312 03 0 15 000027 		CAME	J3,NRMID(R)		; CHECK THAT IT IS FOR THIS FORK
  1519	001223'	260 17 0 00 004200'		NRDR	,,STASHJ		; WRONG FORK ???
  1520	001224'	260 17 0 00 001274'		$CALL	GETWRD			; GET RESPONSE CODE
  1521	001225'	200 06 0 00 000003 		MOVE	B,J3			;   AND SAVE IN B
  1522	001226'	211 04 0 00 000006 		MOVNI	J4,6			; ADJUST BUFFER COUNT
  1523	001227'	272 04 0 15 000101 		ADDM	J4,NRDRCN(R)		; ...
  1524	001230'	254 00 0 00 002161'		PJRST 	CPOPJ1			; RETURN  A = ORIGINAL REQUEST CODE
  1525										;	  B = RESPONSE CODE
  1526										;	  NRDRPT POINTING AT OPT DATA
  1527
  1528					; STASHJ
  1529					; THIS EXIT ROUTINE ASSUMES THE STACK HAS BEEN MOST RECENTLY CHANGED
  1530					; BY A CALL TO SAV4J.  IT STORES THE CURRENT J1 INTO SAVED J1, SO THE
  1531					; CURRENT J1 WILL BE RETURNED TO CALLER.
  1532	001231'	202 01 0 17 777774 	STASHJ:	MOVEM	J1,-4(P)		; OVERWRITE STORED J1
  1533	001232'	263 17 0 00 000000 		$RET				; AND LEAVE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 28
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1534	001233'	260 17 0 00 003532'	RCVNRM:	$CALL	SAV4J			; RECEIVE A MSG FROM NRM
  1535	001234'	200 01 0 15 000026 	RCVN0:	MOVE	J1,NRMJFN(R)		; CHECK FOR INPUT
  1536	001235'	104 00 0 00 000102 		SIBE
  1537	001236'	254 00 0 00 001246'		  JRST	RCVN1			; SOMETHING
  1538	001237'	403 05 0 00 000006 		SETZB	A,B			; RET NOTHING
  1539	001240'	201 02 0 00 000025 		MOVX	J2,.MORLS		; READ LINK STATUS
  1540	001241'	104 00 0 00 000077 		MTOPR
  1541	001242'	320 16 0 00 001231'		  ERJMP	STASHJ			; ERROR RETURN
  1542	001243'	603 03 0 00 400000 		TXNE	J3,MO%CON		; ARE WE CONNECTED STILL?
  1543	001244'	350 00 0 17 000000 		AOS	(P)			; YES, SET FOR SUC RETURN
  1544	001245'	263 17 0 00 000000 		$RET				; GO BACK
  1545
  1546	001246'	260 17 0 00 001056'	RCVN1:	$CALL	RCVBUF			; RECEIVE THE MSG
  1547	001247'	254 00 0 00 001231'		  PJRST	STASHJ			; READ ERROR
  1548	001250'	134 05 0 15 000100 		ILDB	A,NRDRPT(R)		; A = MSG FUNCTION(BYTE 1)
  1549	001251'	134 06 0 15 000100 		ILDB	B,NRDRPT(R)		; B = SUBCODE(BYTE 2)
  1550	001252'	306 05 0 00 000053 		CAIN	A,NRMSTA		; SPECIAL CHECK FOR STATUS-REPORT
  1551	001253'	302 06 0 00 000002 		CAIE	B,STAREP
  1552	001254'	254 00 0 00 002161'		PJRST	CPOPJ1			; NOPE - LET CALLER INTERPRET THE MSG
  1553
  1554					; STATUS-REPORT
  1555	001255'	260 17 0 00 001274'		$CALL	GETWRD			; GET CONTROL-ID
  1556	001256'	312 03 0 15 000027 		CAME	J3,NRMID(R)		; IS IT US ??
  1557	001257'	254 00 0 00 004206'		ERR	DCNX8,STASHJ		; NO !
  1558	001260'	133 00 0 15 000100 		IBP	NRDRPT(R)		; SKIP STSTYPE FIELD
  1559	001261'	134 03 0 15 000100 		ILDB	J3,NRDRPT(R)		; GET COUNT OF STSDAT FIELD
  1560	001262'	302 03 0 00 000004 		CAIE	J3,4			; MUST BE 4
  1561	001263'	254 00 0 00 004206'		ERR	DCNX8,STASHJ
  1562	001264'	260 17 0 00 001274'		$CALL	GETWRD			; GET J3 = STATUS ASSOC WITH THE DEVICE
  1563	001265'	202 03 0 15 000032 		MOVEM	J3,NRMAST(R)
  1564	001266'	260 17 0 00 001274'		$CALL	GETWRD			; GET J3 = NRM DEVICE STATUS
  1565	001267'	202 03 0 15 000033 		MOVEM	J3,NRMASR(R)
  1566	001270'	322 03 0 00 001234'		JUMPE	J3,RCVN0
  1567	001271'	665 14 0 00 000210 		TXOA	DS,MO%FER!MO%SER
  1568	001272'	201 01 0 00 602025 		ERRI	DCNX8			; MSG FORMAT ERROR
  1569	001273'	254 00 0 00 001231'		PJRST	STASHJ
  1570
  1571	001274'	134 03 0 15 000100 	GETWRD:	ILDB	J3,NRDRPT(R)		; GET WORD FROM NRDRBF
  1572	001275'	134 04 0 15 000100 		ILDB	J4,NRDRPT(R)
  1573	001276'	137 04 0 00 004210'		DPB	J4,[POINT 8,J3,27]
  1574	001277'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 29
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1575					; GENERAL MSG RECEIVER - PROCESSES ALL BUT DATA MSGS
  1576	001300'	260 17 0 00 003532'	RCVMSG:	$CALL	SAV4J
  1577	001301'	201 05 0 00 100000 		MOVEI	A,UJ.RCV		; FLUSH DATA RECEIVED FALG
  1578	001302'	412 05 0 15 000023 		ANDCAM	A,RDSTS(R)
  1579	001303'	474 05 0 00 000000 		SETO	A,			; INIT LAST MSG READ FLAG
  1580	001304'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; CHECK FOR INPUT
  1581	001305'	104 00 0 00 000102 		SIBE
  1582	001306'	254 00 0 00 001316'		  JRST	RCVM1			; SOMETHING THERE
  1583	001307'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; SEE IF LINK STILL CONNECTED
  1584	001310'	201 02 0 00 000025 		MOVX	J2,.MORLS		; READ LINK STATUS
  1585	001311'	104 00 0 00 000077 		MTOPR
  1586	001312'	320 16 0 00 001231'		  ERJMP	STASHJ			; ERROR RETURN
  1587	001313'	607 03 0 00 400000 		TXNN	J3,MO%CON		; ARE WE CONNECTED STILL?
  1588	001314'	254 00 0 00 001231'		PJRST	STASHJ			; NO,SO GIVE ERROR RETURN
  1589	001315'	254 00 0 00 002161'		PJRST	CPOPJ1			; YES, BUT NO DATA AT PRESENT
  1590
  1591	001316'	200 01 0 15 000034 	RCVM1:	MOVE	J1,NRDJFN(R)		; SET APPROP JFN
  1592	001317'	260 17 0 00 001056'		PUSHJ	P,RCVBUF		; RECEIVE IT!
  1593	001320'	254 00 0 00 001231'		  PJRST	STASHJ			; READ ERROR
  1594	001321'	332 00 0 00 000002'		SKIPE	DEBUGR
  1595	001322'	260 17 0 00 002702'		PUSHJ	P,RCVTYP
  1596
  1597					; CHECK TYPE
  1598	001323'	134 05 0 15 000100 		ILDB	A,NRDRPT(R)		; GET NURD MSG TYPE BYTE
  1599	001324'	301 05 0 00 000006 		CAIL	A,NM.OTR		; CHECK RANGE
  1600	001325'	201 05 0 00 000006 		MOVEI	A,NM.OTR		; OOPS, MAP TO KNOWN ILLEGAL VALUE
  1601	001326'	260 17 1 05 001332'		$CALL	@RCVMT(A)		; DO THE REQUESTED THING
  1602	001327'	332 00 0 00 000005 		SKIPE	A			; IF NOT A DATA MESSAGE THEN
  1603	001330'	402 00 0 15 000101 		SETZM	NRDRCN(R)		;   ZERO THE MESSAGE LENGTH
  1604	001331'	254 00 0 00 002161'		PJRST	CPOPJ1			; GET OUT
  1605
  1606	001332'	000000	002162'		RCVMT:	CPOPJ				; DATA MSG
  1607	001333'	000000	001341'			ATTMSG				; ATTENTION MSG
  1608	001334'	000000	001462'			FTRMSG				; FEATURES MSG
  1609	001335'	000000	001627'			CTLMSG				; CONTROL MSG
  1610	001336'	000000	004216'			[NRDR	.,,CPOPJ]		; ALERT MSG - ILLEGAL HERE
  1611	001337'	000000	001637'			CAPMSG				; CAPABILITIES MSG
  1612	001340'	000000	004225'			[NRDR	.,IOX5,CPOPJ]		; SOMEONE CHANGING REMOTE NURD
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 30
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1613					; ATTENTION MSG FORMAT:
  1614					;   <NM.ATT><NURD FLGS><LAST SEQ NO.><ATT. REASON CODE><DEVSTS 1-3><PAGE CNT 2>
  1615					;
  1616					; PROCESS AN ATTENTION MSG IN NRDRBF.  NRDRPT IS POINTING TO NURD MSG TYPE BYTE
  1617	001341'	133 00 0 15 000100 	ATTMSG:	IBP	NRDRPT(R)		; SKIP NURD MSG FLAGS
  1618	001342'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; GET SEQ. NO.
  1619	001343'	202 01 0 15 000051 		MOVEM	J1,NRDASQ(R)		; SAVE AS INDICATOR OF STATUS CURRENCY
  1620	001344'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; ATTENTION REASON CODE
  1621	001345'	202 01 0 15 000050 		MOVEM	J1,NRDATT(R)		; SAVE FOR POSTERITY
  1622	001346'	303 01 0 00 000005 		CAILE	J1,N.APLE		; CHECK LIMIT
  1623	001347'	400 01 0 00 000000 		SETZ	J1,			; A BAD ONE
  1624	001350'	254 00 1 01 001351'		$CALLR	@.+1(J1)		; DISPATCH TO REASON CODE PROCESSOR
  1625	001351'	000000	004233'			 [NRDR	.,,ATTM]		; BAD CODE
  1626	001352'	000000	001357'			 ATTM				; STATUS CHANGE
  1627	001353'	000000	001357'			 ATTM				; DATA ACKNOWLEDGE
  1628	001354'	000000	001357'			 ATTM				; REQUESTED
  1629						 [	TXO	LS,NRD.AB		; ABORT COMPLETE
  1630							TXZ	DS,MO%IOP		; CLEAR IO IN PROGRESS
  1631	001355'	000000	004234'				JRST	ATTM]
  1632						 [	TXO	LS,NRD.PL		; PAGE LIMIT EXCEEDED
  1633							TXO	DS,MO%LPC+MO%SER	; ...
  1634	001356'	000000	004240'				JRST	ATTM]
  1635
  1636	001357'	134 01 0 15 000100 	ATTM:	ILDB	J1,NRDRPT(R)		; BYTE 1 FLAGS
  1637	001360'	602 01 0 00 000001 		TXNE	J1,NA.FAT		; FATAL ERROR ?
  1638	001361'	664 13 0 00 010000 		TXOA	LS,NRD.FE
  1639	001362'	624 13 0 00 010000 		TXZA	LS,NRD.FE
  1640	001363'	665 14 0 00 000200 		TXOA	DS,MO%FER
  1641	001364'	621 14 0 00 000200 		TXZ	DS,MO%FER
  1642	001365'	602 01 0 00 000006 		TXNE	J1,NA.OFL!NA.PAU	; DEVICE OFFLINE OR PAUSED ?
  1643	001366'	665 13 0 00 000001 		TXOA	LS,NRD.OF
  1644	001367'	625 13 0 00 000001 		TXZA	LS,NRD.OF
  1645	001370'	665 14 0 00 000002 		TXOA	DS,MO%OL
  1646	001371'	621 14 0 00 000002 		TXZ	DS,MO%OL
  1647	001372'	602 01 0 00 000004 		TXNE	J1,NA.PAU		; DEVICE PAUSED ?
  1648	001373'	664 13 0 00 020000 		TXOA	LS,NRD.PS
  1649	001374'	624 13 0 00 020000 		TXZA	LS,NRD.PS
  1650	001375'	621 14 0 00 000020 		TXZ	DS,MO%IOP		; FLUSH IO IN PROGRESS
  1651	001376'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; SKIP IF LPT
  1652	001377'	254 00 0 00 001421'		JRST	ATTMC			;  TIS A CDR
  1653
  1654					; LPT
  1655	001400'	602 01 0 00 000170 		TXNE	J1,NA.OMD!NA.JAM!NA.OOF!NA.NOE
  1656	001401'	661 14 0 00 000004 		TXO	DS,MO%HE
  1657	001402'	606 01 0 00 000200 		TXNN	J1,200			; CHECK EXTENSION
  1658	001403'	254 00 0 00 001455'		JRST	ATTMX
  1659	001404'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; BYTE 2 FLAGS
  1660	001405'	602 01 0 00 000004 		TXNE	J1,NA.DTO		; DEVICE TIME OUT
  1661	001406'	664 13 0 00 040000 		TXOA	LS,NRD.TO
  1662	001407'	624 13 0 00 040000 		TXZA	LS,NRD.TO
  1663	001410'	661 14 0 00 000200 		TXO	DS,MO%FER
  1664	001411'	602 01 0 00 000073 		TXNE	J1,NA.OUF!NA.NAC!NA.RNA!NA.PSE!NA.INK
  1665	001412'	661 14 0 00 000004 		TXO	DS,MO%HE
  1666	001413'	606 01 0 00 000200 		TXNN	J1,200			; CHECK EXTENSION
  1667	001414'	254 00 0 00 001455'		JRST 	ATTMX
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 30-1
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1668	001415'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; BYTE 3 FLAGS
  1669	001416'	602 01 0 00 000001 		TXNE	J1,NA.OVP		; OVERPRINT
  1670	001417'	661 14 0 00 000004 		TXO	DS,MO%HE
  1671	001420'	254 00 0 00 001455'		JRST	ATTMX
  1672
  1673					; CDR
  1674	001421'	602 01 0 00 000010 	ATTMC:	TXNE	J1,NA.OMD		; OUT OF MEDIA
  1675	001422'	664 14 0 00 000010 		TXOA	DS,MO%HEM
  1676	001423'	620 14 0 00 000010 		TXZ	DS,MO%HEM
  1677	001424'	602 01 0 00 000160 		TXNE	J1,NA.JAM!NA.OOF!NA.NOE	; MISC GARBAGE
  1678	001425'	661 14 0 00 000004 		TXO	DS,MO%HE
  1679	001426'	606 01 0 00 000200 		TXNN	J1,200			; CHECK EXTENSION
  1680	001427'	254 00 0 00 001455'		JRST 	ATTMX
  1681	001430'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; BYTE 2 FLAGS
  1682	001431'	602 01 0 00 000001 		TXNE	J1,NA.OUF		; OUTPUT FULL
  1683	001432'	664 14 0 00 000020 		TXOA	DS,MO%SFL
  1684	001433'	620 14 0 00 000020 		TXZ	DS,MO%SFL
  1685	001434'	602 01 0 00 000012 		TXNE	J1,NA.NAC!NA.RNA
  1686	001435'	661 14 0 00 000004 		TXO	DS,MO%HE
  1687	001436'	602 01 0 00 000004 		TXNE	J1,NA.DTO		; DEVICE TIME OUT
  1688	001437'	664 13 0 00 040000 		TXOA	LS,NRD.TO
  1689	001440'	624 13 0 00 040000 		TXZA	LS,NRD.TO
  1690	001441'	661 14 0 00 000200 		TXO	DS,MO%FER
  1691	001442'	602 01 0 00 000020 		TXNE	J1,NA.PF		; PICK FAILURE
  1692	001443'	664 14 0 00 000002 		TXOA	DS,MO%PCK
  1693	001444'	620 14 0 00 000002 		TXZ	DS,MO%PCK
  1694	001445'	602 01 0 00 000140 		TXNE	J1,NA.REG!NA.RAP	; MISC MUNG
  1695	001446'	661 14 0 00 000200 		TXO	DS,MO%FER
  1696	001447'	606 01 0 00 000200 		TXNN	J1,200			; CHECK EXTENSION
  1697	001450'	254 00 0 00 001455'		JRST	ATTMX
  1698	001451'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; BYTE 3 FLAGS
  1699	001452'	602 01 0 00 000001 		TXNE	J1,NA.IVP		; INVALID PUNCH ERROR
  1700	001453'	664 14 0 00 000001 		TXOA	DS,MO%RCK
  1701	001454'	620 14 0 00 000001 		TXZ	DS,MO%RCK
  1702
  1703					; DONE WITH DEVICE STATUS
  1704	001455'	134 01 0 15 000100 	ATTMX:	ILDB	J1,NRDRPT(R)		; GET LOW PAGE COUNT
  1705	001456'	134 02 0 15 000100 		ILDB	J2,NRDRPT(R)		; GET HIGH PAGE COUNT
  1706	001457'	137 02 0 00 004243'		DPB	J2,[POINT 8,J1,27]
  1707	001460'	202 01 0 15 000052 		MOVEM	J1,NRDLPC(R)		; SAVE COUNT FOR THIS UPDATE
  1708	001461'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 31
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1709					; FEATURES MESSAGE FORMAT:
  1710					;	<NM.FTR><NURD FLAGS><SEQ NO.><NO. FEATURE SPECS>[...<FEATURE SPEC>...]
  1711					;
  1712					;   FEATURE SPEC FORMAT:
  1713					;	<FEATURE ID><FLAGS><CLASS><RESPONSE>[<VALUE>]
  1714					;	VALUE FORMAT:
  1715					;	CLASS 0:	<VALUE>			(LSB)
  1716					;	CLASS 1:	<CNT><CNT BYTES>	(LEAST SIGNIFICANT BYTE 1ST)
  1717
  1718	001462'	260 17 0 00 003600'	FTRMSG:	$CALL	SAV4
  1719	001463'	133 00 0 15 000100 		IBP	NRDRPT(R)		; SKIP NURD FLAGS
  1720	001464'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; GET SEQ NO.
  1721	001465'	202 01 0 15 000160 		MOVEM	J1,NRDFSQ(R)
  1722	001466'	134 07 0 15 000100 		ILDB	C,NRDRPT(R)		; GET NO. FEATURE SPECS
  1723	001467'	200 10 0 15 000101 		MOVE	D,NRDRCN(R)		; MSG LENGTH
  1724	001470'	275 10 0 00 000003 		SUBI	D,3			; SUBSTRACT MSG OVERHEAD
  1725	001471'	321 10 0 00 004251'		JUMPL	D,[NRDR .,,CPOPJ]	; PRETTY SHORT FEATURE MSG
  1726
  1727					; PROCESS NEXT FEATURE SPEC
  1728	001472'	361 07 0 00 001605'	FTRM1:	SOJL	C,FTRXIT
  1729	001473'	361 10 0 00 004257'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1730	001474'	134 05 0 15 000100 		ILDB	A,NRDRPT(R)		; GET FEATURE ID
  1731	001475'	303 05 0 00 000011 		CAILE	A,FE.DWD
  1732	001476'	254 00 0 00 001502'		JRST	FTRM2
  1733	001477'	242 05 0 00 000001 		LSH	A,1			; CALC CELL LOC
  1734	001500'	271 05 0 15 000105 		ADDI	A,NRDFET(R)
  1735	001501'	254 00 0 00 001534'		JRST	FTRM6
  1736
  1737					; NOT A COMMON FEATURE - TRY DEVICE SPECIFIC
  1738	001502'	606 13 0 00 000004 	FTRM2:	TXNN	LS,NRD.LP
  1739	001503'	254 00 0 00 001513'		JRST	FTRM3			; CDR
  1740	001504'	301 05 0 00 000202 		CAIL	A,LP.HT			; LPT
  1741	001505'	303 05 0 00 000212 		CAILE	A,LP.OPV
  1742	001506'	254 00 0 00 001521'		JRST	FTRM4			; NOT LPT
  1743	001507'	275 05 0 00 000202 		SUBI	A,LP.HT
  1744	001510'	242 05 0 00 000001 		LSH	A,1
  1745	001511'	271 05 0 15 000131 		ADDI	A,NRDLPF(R)
  1746	001512'	254 00 0 00 001534'		JRST	FTRM6
  1747
  1748	001513'	302 05 0 00 000202 	FTRM3:	CAIE	A,CD.CWD		; CDR
  1749	001514'	254 00 0 00 001521'		JRST	FTRM4			; NOT CDR
  1750	001515'	275 05 0 00 000202 		SUBI	A,CD.CWD
  1751	001516'	242 05 0 00 000001 		LSH	A,1
  1752	001517'	271 05 0 15 000153 		ADDI	A,NRDCRF(R)
  1753	001520'	254 00 0 00 001534'		JRST	FTRM6
  1754
  1755	001521'	302 05 0 00 000377 	FTRM4:	CAIE	A,FE.ALL		; ALLNESS ?
  1756	001522'	254 00 0 00 001530'		JRST	FTRM5			; NO -  A MYSTERY FID
  1757	001523'	133 00 0 15 000100 		IBP	NRDRPT(R)		; FLUSH FLAGS
  1758	001524'	133 00 0 15 000100 		IBP	NRDRPT(R)		; FLUSH CLASS
  1759	001525'	133 00 0 15 000100 		IBP	NRDRPT(R)		; FLUSH RESPONSE
  1760	001526'	275 10 0 00 000003 		SUBI	D,3
  1761	001527'	254 00 0 00 001472'		JRST	FTRM1
  1762
  1763	001530'	402 00 0 15 000155 	FTRM5:	SETZM	NRDUFE(R)		; UNKNOWN FID
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 31-1
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1764	001531'	137 05 0 00 004260'		DPB	A,[POINT 8,NRDUFE(R),7]	; SAVE ID FOR LAUGHS
  1765	001532'	201 05 0 15 000155 		MOVEI	A,NRDUFE(R)
  1766	001533'	334 00 0 00 000000 		SKIPA
  1767
  1768	001534'	402 00 0 05 000000 	FTRM6:	SETZM	(A)			; A = PTR TO FEATURE CELL
  1769	001535'	402 00 0 05 000001 		SETZM	1(A)			; INIT THE CELL AND LOAD NEW STUFF
  1770	001536'	201 01 0 00 000001 		MOVEI	J1,1
  1771	001537'	137 01 0 00 001617'		DPB	J1,FRDP			; SET FEATURE READ FLAG
  1772	001540'	361 10 0 00 004266'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1773	001541'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; GET FLAGS
  1774	001542'	137 01 0 00 001624'		DPB	J1,FFLP
  1775	001543'	361 10 0 00 004274'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1776	001544'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; GET CLASS
  1777	001545'	137 01 0 00 001625'		DPB	J1,FCLP
  1778	001546'	361 10 0 00 004302'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1779	001547'	134 02 0 15 000100 		ILDB	J2,NRDRPT(R)		; GET RESPONSE
  1780	001550'	137 02 0 00 001626'		DPB	J2,FRSP
  1781	001551'	326 02 0 00 001472'		JUMPN	J2,FTRM1		; NON-ZERO RESPONSE(ERROR)==> NO VALUE
  1782										; EXTRACT THE FEATURE VALUE
  1783	001552'	361 10 0 00 004310'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1784	001553'	134 06 0 15 000100 		ILDB	B,NRDRPT(R)		; GET LOW VALUE
  1785	001554'	322 01 0 00 001563'		JUMPE	J1,FTRM7			; CLASS 0=> B = VALUE
  1786	001555'	361 10 0 00 004316'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1787	001556'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; CLASS 1=> B = CNT, GET J1 = LOW VALUE
  1788	001557'	250 06 0 00 000001 		EXCH	B,J1			; B = LOW VALUE, J1 = CNT
  1789	001560'	137 01 0 00 001620'		DPB	J1,FLNP			; SAVE LENGTH OF VALUE
  1790	001561'	303 01 0 00 000002 		CAILE	J1,2
  1791	001562'	254 00 0 00 001571'		JRST	FTRM8			; STRING
  1792
  1793	001563'	137 06 0 00 001622'	FTRM7:	DPB	B,FVLPL			; DEP LOW VALUE
  1794	001564'	363 01 0 00 001472'		SOJLE	J1,FTRM1			; COUNT THE BYTES
  1795	001565'	361 10 0 00 004324'		SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1796	001566'	134 06 0 15 000100 		ILDB	B,NRDRPT(R)		; GET HIGH VALUE
  1797	001567'	137 06 0 00 001623'		DPB	B,FVLPH
  1798	001570'	254 00 0 00 001472'		JRST	FTRM1
  1799
  1800	001571'	271 01 0 00 000003 	FTRM8:	ADDI	J1,3			; ROUND NUMBER OF BYTES TO FULL WORD
  1801	001572'	242 01 0 00 777776 		LSH	J1,-2			;   AND GET NUMBER OF WORDS NEEDED
  1802	001573'	260 17 1 00 400137 		$CALL	M%GMEM			; GET THE MEMORY
  1803	001574'	250 01 0 00 000002 		EXCH	J1,J2			; J1 = ADDR, J2 = LENGTH
  1804	001575'	542 01 0 05 000000 		HRRM	J1,(A)			; SAVE PTR TO STRING
  1805	001576'	505 01 0 00 441000 		HRLI	J1,(POINT 8)
  1806	001577'	254 00 0 00 001602'		JRST	FTRM9A
  1807
  1808	001600'	361 10 0 00 004332'	FTRM9:	SOJL	D,[NRDR .,,FTRXIT]	; MSG TOO SHORT
  1809	001601'	134 06 0 15 000100 		ILDB	B,NRDRPT(R)		; GET NEXT VALUE BYTE
  1810	001602'	136 06 0 00 000001 	FTRM9A:	IDPB	B,J1			; STUFF IT
  1811	001603'	367 02 0 00 001600'		SOJG	J2,FTRM9
  1812	001604'	254 00 0 00 001472'		JRST	FTRM1
  1813
  1814					; SPECIAL FEATURE VALUE CHECKS
  1815	001605'	201 05 0 15 000113 	FTRXIT:	MOVEI	A,NFELCR(R)		; CHECK FE.LCR=> MO%LCP STATE
  1816	001606'	135 01 0 00 001617'		LDB	J1,FRDP			; CHECK IF DEFINED YET
  1817	001607'	322 01 0 00 002162'		JUMPE	J1,CPOPJ		; NOT READ YET
  1818	001610'	135 01 0 00 001626'		LDB	J1,FRSP			; CHECK RESPONSE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 31-2
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1819	001611'	326 01 0 00 002162'		JUMPN	J1,CPOPJ		; ERROR RSP INVALIDATES FEATURE VALUE,
  1820										;   PROBABLY=> VALUE CAN'T BE CHANGED,
  1821										;   OR DOESN'T EXIST=> UPPER CASE ONLY
  1822	001612'	135 01 0 00 001621'		LDB	J1,FVLP			; GET THE FEATURE VALUE
  1823	001613'	332 00 0 00 000001 		SKIPE	J1
  1824	001614'	625 14 0 00 400000 		TXZA	DS,MO%LCP		; UPPER CASE
  1825	001615'	661 14 0 00 400000 		TXO	DS,MO%LCP		; LOWER CASE
  1826	001616'	263 17 0 00 000000 		$RET
  1827
  1828
  1829	001617'	33 01 0 05 000000 	FRDP:	POINT	1,(A),8		; FEATURE READ FLAG
  1830	001620'	22 10 0 05 000000 	FLNP:	POINT	8,(A),17	; FEATURE VALUE LENGTH
  1831	001621'	00 22 0 05 000000 	FVLP:	POINT	18,(A),35	; FEATURE VALUE
  1832	001622'	00 10 0 05 000000 	FVLPL:	POINT	8,(A),35	; LOW FEATURE VALUE
  1833	001623'	10 10 0 05 000000 	FVLPH:	POINT	8,(A),27	; HIGH FEATURE VALUE
  1834	001624'	33 11 0 05 000001 	FFLP:	POINT	9,1(A),8	; FEATURE FLAGS
  1835	001625'	22 11 0 05 000001 	FCLP:	POINT	9,1(A),17	; FEATURE CLASS
  1836	001626'	00 22 0 05 000001 	FRSP:	POINT	18,1(A),35	; FEATURE RESPONSE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 32
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1837					; CONTROL MESSAGE FORMAT:
  1838					;	<NM.CTL><NURD FLAGS><SEQ NO.><COMMAND><RESPONSE>
  1839
  1840	001627'	133 00 0 15 000100 	CTLMSG:	IBP	NRDRPT(R)		; SKIP NURD FLAGS
  1841	001630'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; SEQ NO.
  1842	001631'	506 01 0 15 000053 		HRLM	J1,NRDCSQ(R)		; SAVE
  1843	001632'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; COMMAND
  1844	001633'	206 01 0 15 000054 		MOVSM	J1,NRDCCR(R)
  1845	001634'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; RESPONSE
  1846	001635'	542 01 0 15 000054 		HRRM	J1,NRDCCR(R)		; SAVE IT TOO
  1847	001636'	263 17 0 00 000000 		$RET
  1848
  1849
  1850					; CAPABILITIES MESSAGE FORMAT:
  1851					;	<NM.CAP><NURD FLAGS><LIST BYTE COUNT>< COUNT FID'S>
  1852
  1853	001637'	133 00 0 15 000100 	CAPMSG:	IBP	NRDRPT(R)		; SKIP	NURD FLAGS
  1854	001640'	134 01 0 15 000100 		ILDB	J1,NRDRPT(R)		; BYTE COUNT
  1855	001641'	350 00 0 00 000001 		AOS	J1			; TOTAL LIST LENGTH
  1856	001642'	271 01 0 00 000003 		ADDI	J1,3			; CALC NUMBER OF WORDS NEEDED
  1857	001643'	242 01 0 00 777776 		LSH	J1,-2			; ...
  1858	001644'	554 02 0 15 000055 		HLRZ	J2,NRDCAP(R)		; CHECK FOR PREVIOUS LIST
  1859	001645'	322 02 0 00 001655'		JUMPE	J2,CAPM1		; VIRGIN
  1860	001646'	317 01 0 00 000002 		CAMG	J1,J2			; IS IT BIG ENOUGH ?
  1861	001647'	254 00 0 00 001660'		JRST	CAPM2			; OK
  1862	001650'	261 17 0 00 000001 		PUSH	P,J1			; TOO SHORT - SAVE NEW LENGTH
  1863	001651'	200 01 0 00 000002 		MOVE	J1,J2			; GET OLD LENGTH
  1864	001652'	550 02 0 15 000055 		HRRZ	J2,NRDCAP(R)		;   AND ADDRESS
  1865	001653'	260 17 1 00 400140 		$CALL	M%RMEM			; SEND IT BACK
  1866	001654'	262 17 0 00 000001 		POP	P,J1			; GET NEW LENGTH BACK
  1867
  1868	001655'	260 17 1 00 400137 	CAPM1:	$CALL	M%GMEM			; GET A NEW BLOCK
  1869	001656'	504 02 0 00 000001 		HRL	J2,J1			; J2 = SIZE,,ADDR
  1870	001657'	202 02 0 15 000055 		MOVEM	J2,NRDCAP(R)		; SAVE IT
  1871
  1872	001660'	135 02 0 15 000100 	CAPM2:	LDB	J2,NRDRPT(R)		; GET NUMBER OF BYTES AGAIN
  1873	001661'	205 11 0 00 441000 		MOVSI	T1,(POINT 8)		; MAKE PTR TO XFER INTO BLOCK
  1874	001662'	540 11 0 15 000055 		HRR	T1,NRDCAP(R)		; ...
  1875	001663'	334 01 0 00 000002 		SKIPA	J1,J2			; SKIP INTO CAPM3 WITH LENGTH IN J1
  1876
  1877	001664'	134 01 0 15 000100 	CAPM3:	ILDB	J1,NRDRPT(R)		; GET NEXT BYTE
  1878	001665'	136 01 0 00 000011 		IDPB	J1,T1			; XFER IT
  1879	001666'	365 02 0 00 001664'		SOJGE	J2,CAPM3		; MOVE EM ALL
  1880	001667'	263 17 0 00 000000 		$RET				; DONE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 33
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1881					; WAIT FOR RESPONSE OF JUST ISSUED DUMP OR CONTROL MSG
  1882	001670'	201 11 0 00 000012 	RCVCRS:	MOVEI	T1,NRDTMO		; SET TIMEOUT COUNTER
  1883	001671'	202 11 0 15 000047 		MOVEM	T1,NRDTMC(R)		; ...
  1884	001672'	200 11 0 15 000053 	RCVC1:	MOVE	T1,NRDCSQ(R)		; TEST IF LAST RCVD SEQ=LAST ISSUED SEQ
  1885	001673'	651 11 0 00 000011 		TSC	T1,T1			; ...
  1886						JUMPE	T1,[	HRRZ	A,NRDCCR(R)	; YES, GET RESPONSE
  1887	001674'	322 11 0 00 004333'				PJRST	CPOPJ1]		;   AND LEAVE
  1888	001675'	260 17 0 00 001300'		$CALL	RCVMSG			; RECEIVE SOME MORE MSGS
  1889	001676'	263 17 0 00 000000 		  $RET				; READ ERROR
  1890						JUMPL	A,[	SOSGE	NRDTMC(R)	; NOTHING - COUNT THIS LOOP
  1891								$RET			; GIVE UP
  1892								MOVEI	J1,^D500	; WAIT .5 SEC
  1893								DISMS			; ZZZ
  1894	001677'	321 05 0 00 004335'				JRST	RCVC1]		; GO CHECK AGAIN
  1895	001700'	327 05 0 00 001672'		JUMPG	A,RCVC1			; SOMETHING - GO SEE
  1896	001701'	260 17 0 00 003643'		NRDR	,,CPOPJ			; DATA MSG BLOCKING CONTROL MSG
  1897
  1898					; WAIT FOR ATTENTION MSG RESPONSE TO JUST ISSUED STATUS REQUEST
  1899	001702'	260 17 0 00 001670'	RCVRQS:	$CALL	RCVCRS			; WAIT FOR RESPONSE TO STATUS REQUEST
  1900	001703'	263 17 0 00 000000 		  $RET				; BLOCKED OR READ ERROR
  1901					;	$CALLR	RCVRQ			; FINISH UP
  1902
  1903					; RECEIVE AN ATTENTION MSG
  1904	001704'	201 11 0 00 000012 	RCVRQ:	MOVEI	T1,NRDTMO		; SET TIMEOUT COUNTER
  1905	001705'	202 11 0 15 000047 		MOVEM	T1,NRDTMC(R)		; ...
  1906	001706'	260 17 0 00 001300'	RCVR1:	$CALL	RCVMSG			; JUST WAIT TIL NEXT ATTN MSG ARRIVES
  1907	001707'	263 17 0 00 000000 		  $RET				; READ ERROR
  1908						JUMPL	A,[	SOSGE	NRDTMC(R)	; SPUN OUR WHEELS LONG ENUF ?
  1909								$RET			; YES, SO GIVE UP
  1910								MOVEI	J1,^D500	; NO - WAIT A WHILE
  1911								DISMS			; YAWN
  1912	001710'	321 05 0 00 004342'				JRST	RCVR1]		;   AND TRY AGAIN
  1913	001711'	322 05 0 00 004354'		JUMPE	A,[NRDR .,,CPOPJ]	; DATA MSG BLOCKING RSP
  1914	001712'	302 05 0 00 000001 		CAIE	A,NM.ATT		; CHECK IF ATT MSG RECEIVED
  1915	001713'	254 00 0 00 001706'		JRST	RCVR1			; NOPE - TRY AGAIN
  1916	001714'	254 00 0 00 002161'		PJRST	CPOPJ1			; GOT IT
  1917
  1918					; WAIT FOR RESPONSE TO JUST ISSUED FEATURE MSG
  1919	001715'	201 11 0 00 000012 	FTRWAT:	MOVEI	T1,NRDTMO		; SET TIMEOUT COUNTER
  1920	001716'	202 11 0 15 000047 		MOVEM	T1,NRDTMC(R)		; ...
  1921	001717'	260 17 0 00 001300'	FTRW1:	$CALL	RCVMSG			; RECEIVE SOMETHING
  1922	001720'	263 17 0 00 000000 		  $RET				; READ ERROR
  1923						JUMPL	A,[	SOSGE	NRDTMC(R)	; NOTHING - TRY AGAIN ?
  1924								$RET			; NOPE, GIVE UP
  1925								MOVEI	J1,^D500	; YES, LETS WAIT
  1926								DISMS			; ...
  1927	001721'	321 05 0 00 004355'				JRST	FTRW1]		; GO AGAIN
  1928	001722'	322 05 0 00 004367'		JUMPE	A,[NRDR .,,CPOPJ]	; FTR RSP BLOCKED BY DATA MSG
  1929	001723'	302 05 0 00 000002 		CAIE	A,NM.FTR		; FEATURE MSG ?
  1930	001724'	254 00 0 00 001717'		JRST	FTRW1			; NO, LOOK FURTHER
  1931	001725'	200 11 0 15 000157 		MOVE	T1,NRDFSN(R)		; COMPARE LAST SEQ RECEIVED
  1932	001726'	316 11 0 15 000160 		CAMN	T1,NRDFSQ(R)		;   TO LAST ONE SENT
  1933	001727'	254 00 0 00 002161'		PJRST	CPOPJ1			; THIS IS IT !
  1934	001730'	254 00 0 00 001717'		JRST	FTRW1			; DRUDGERY
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 34
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1935					; CONTROL MESSAGE FORMAT:
  1936					;	<NM.CTL><NURD MSG FLGS><SEQ NO.><COMMAND><RESULT>
  1937
  1938	001731'	261 17 0 00 000011 	MKCMSG:	PUSH	P,T1			; SAVE THE COMMAND
  1939	001732'	260 17 0 00 002100'		$CALL	SBFINI			; INIT THE BUFFER
  1940	001733'	201 11 0 00 000003 		MOVEI	T1,NM.CTL
  1941	001734'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; CONTROL MSG TYPE
  1942	001735'	400 12 0 00 000000 		SETZ	T2,
  1943	001736'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NURD MSG FLAGS
  1944	001737'	350 11 0 15 000041 		AOS	T1,NRDSEQ(R)		; GEN NEXT CONTROL SEQ NO.
  1945	001740'	405 11 0 00 000377 		ANDI	T1,377			; 8 BIT WRAP
  1946	001741'	542 11 0 15 000053 		HRRM	T1,NRDCSQ(R)		; SAVE LAST SENT SEQ NO.
  1947	001742'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; NEXT CONTROL SEQ NO.
  1948	001743'	262 17 0 00 000011 		POP	P,T1
  1949	001744'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; COMMAND
  1950	001745'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NULL RESULT
  1951	001746'	263 17 0 00 000000 		$RET				; DONE
  1952
  1953	001747'	334 11 0 00 004370'	SNDDMP:	SKIPA	T1,[NC.DMP]		; SEND A DUMP OUT BUFFER MSG
  1954	001750'	201 11 0 00 000004 	SNDRQS:	MOVEI	T1,NC.RQS		; SEND A STATUS REQUEST MSG
  1955	001751'	260 17 0 00 001731'		$CALL	MKCMSG			; MAKE THE MSG
  1956	001752'	260 17 0 00 003532'		$CALL	SAV4J
  1957	001753'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)
  1958	001754'	260 17 0 00 000752'		$CALL	SNDBUF			; NORMAL MSG
  1959	001755'	254 00 0 00 002312'		  JRST	ERRTN			; PROBLEMS
  1960	001756'	263 17 0 00 000000 		$RET
  1961
  1962	001757'	334 11 0 00 004371'	SNDCAB:	SKIPA	T1,[NC.CAB]		; SEND A CLEAR ABORT MSG
  1963	001760'	201 11 0 00 000002 	SNDAUC:	MOVEI	T1,NC.AUC		; SEND AN ABORT UNTIL CLEAR MSG
  1964	001761'	260 17 0 00 001731'	MSNDIC:	$CALL	MKCMSG			; MAKE THE MSG
  1965	001762'	260 17 0 00 003532'		$CALL	SAV4J
  1966	001763'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)
  1967	001764'	254 00 0 00 001036'		$CALLR	SNDINT			; DO THE INTERRUPT MSG AND RETURN
  1968
  1969	001765'	201 11 0 00 000007 	SNDRES:	MOVEI	T1,NC.RES		; SEND A RESUME MSG
  1970	001766'	260 17 0 00 001761'		$CALL	MSNDIC			; INTERRUPT MSG
  1971	001767'	660 13 0 00 100000 		TXO	LS,NRD.RS		; SET RESUME ISSUED FLAG
  1972	001770'	260 17 0 00 002524'		$CALL	INTOFF			; CLEAR ERR FLAGS - FIXED BY ATTN MSG
  1973	001771'	630 13 0 00 004372'		TXZ	LS,NRD.FE!NRD.PS!NRD.TO!NRD.OF!NRD.ON!NRD.PL
  1974	001772'	202 13 0 15 000036 		MOVEM	LS,NRDSTS(R)		; UPDATE LINK STATUS
  1975						TXZ	DS,MO%FER!MO%HE!MO%SER!MO%RCK!MO%PCK!MO%SFL!MO%HEM!MO%LCI!MO%LPC!MO%EOF!MO%O
  1976	001773'	630 14 0 00 004373'	L
  1977	001774'	661 14 0 00 000020 		TXO	DS,MO%IOP		; SET IO IN PROGRESS AGAIN
  1978	001775'	202 14 0 15 000037 		MOVEM	DS,NRDDST(R)		; UPDATE DEVICE STATUS
  1979	001776'	254 00 0 00 002514'		$CALLR	INTON
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 35
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  1980					; SET LOWER CASE RAISE=> UPPER CASE ONLY PRINTER
  1981	001777'	260 17 0 00 003567'	SETLCR:	$CALL	SAV3			; SAVE A-C
  1982	002000'	621 14 0 00 400000 		TXZ	DS,MO%LCP
  1983	002001'	201 05 0 00 000003 		MOVEI	A,FE.LCR		; FID
  1984	002002'	201 06 0 00 000001 		MOVEI	B,1			; ITS VALUE
  1985	002003'	201 07 0 00 000000 		MOVEI	C,0			; 1 BIT VALUE
  1986	002004'	254 00 0 00 002017'		$CALLR	SETFTR
  1987
  1988
  1989					; SET THE DATA MODE
  1990	002005'	260 17 0 00 003567'	SETMOD:	$CALL	SAV3
  1991	002006'	201 05 0 00 000001 		MOVEI	A,FE.DAT		; FEATURE ID
  1992	002007'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI	; DETERMINE DATA MODE
  1993	002010'	254 00 0 00 002015'		JRST	SETMDA			; ASCII
  1994	002011'	606 13 0 00 000020 		TXNN	LS,NRD.AI
  1995	002012'	334 06 0 00 004374'		SKIPA	B,[DM.CLI]		; COLUMN IMAGE
  1996	002013'	201 06 0 00 000004 		MOVEI	B,DM.AUG		; AUGMENTED COLUMN IMAGE
  1997	002014'	334 00 0 00 000000 		SKIPA
  1998	002015'	201 06 0 00 000001 	SETMDA:	MOVEI	B,DM.ASC		; ASCII
  1999	002016'	201 07 0 00 000001 		MOVEI	C,1			; NO. BYTES IN VALUE
  2000					;	$CALLR	SETFTR			; SET THE FEATURE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 36
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  2001					; FEATURE MESSAGE FORMAT:
  2002					;	<NM.FTR><NURD FLAGS><SEQ NO.><NO. FEATURE SPECS>[...<FEATURE SPEC>...]
  2003					;
  2004					;   FEATURE SPEC FORMAT:
  2005					;	<FEATURE ID><FLAGS><CLASS><RESPONSE>[<VALUE>]
  2006					;	VALUE FORMAT:
  2007					;	CLASS 0		<VALUE - LOW ORDER BIT OF BYTE>
  2008					;	CLASS 1		<COUNT><...COUNT BYTES...> (LEAST SIGNIFICANT BYTE 1ST)
  2009					;
  2010					;	A = FEATURE ID
  2011					;	B = VALUE
  2012					;	C = NO. BYTES IN VALUE
  2013
  2014	002017'	260 17 0 00 002100'	SETFTR:	$CALL	SBFINI			; INIT THE BUFFER
  2015	002020'	201 11 0 00 000002 		MOVEI	T1,NM.FTR
  2016	002021'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; MSG TYPE
  2017	002022'	400 12 0 00 000000 		SETZ	T2,
  2018	002023'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NURD FLAGS
  2019	002024'	350 11 0 15 000041 		AOS	T1,NRDSEQ(R)		; GEN NEXT DATA SEQ NO.
  2020	002025'	405 11 0 00 000377 		ANDI	T1,377
  2021	002026'	202 11 0 15 000157 		MOVEM	T1,NRDFSN(R)		; SAVE NO. OF LAST FEATURE MSG SENT
  2022	002027'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; SEQ NO.
  2023	002030'	201 11 0 00 000001 		MOVEI	T1,1			; ONLY ALLOWED TO SET  1 AT A TIME
  2024	002031'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; NO. FEATURE SPECS
  2025					; NOW FORMAT FEATURE SPEC
  2026	002032'	136 05 0 15 000102 		IDPB	A,NRDSPT(R)		; FEATURE ID
  2027	002033'	201 11 0 00 000001 		MOVEI	T1,NF.CMD		; BIT SET=> SET FEATURE
  2028	002034'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; FLAGS
  2029	002035'	332 11 0 00 000007 		SKIPE	T1,C			; DETERMINE FEATURE CLASS
  2030	002036'	201 11 0 00 000001 		MOVEI	T1,FC.CL1
  2031	002037'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; FEATURE CLASS
  2032	002040'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NULL RESPONSE FIELD
  2033	002041'	332 00 0 00 000007 		SKIPE	C			; CLASS 0=> INSERT VALUE ONLY
  2034	002042'	136 07 0 15 000102 		IDPB	C,NRDSPT(R)		; CLASS 1=> INSERT COUNT THEN VALUE
  2035	002043'	136 06 0 15 000102 	SETFTV:	IDPB	B,NRDSPT(R)		; INSERT NEXT LOWEST BYTE
  2036	002044'	242 06 0 00 777770 		LSH	B,-10
  2037	002045'	367 07 0 00 002043'		SOJG	C,SETFTV
  2038	002046'	254 00 0 00 002066'		$CALLR	SNDNRD			; SEND THE MESSAGE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 37
NURD	MAC	21-Mar-80 10:15		NURD Support Functions

  2039					; FEATURE MESSAGE FORMAT:
  2040					;	<NM.FTR><NURD FLAGS><SEQ NO.><NO. FEATURE SPECS>[...<FEATURE SPEC>...]
  2041					;
  2042					;   FEATURE SPEC FORMAT:
  2043					;	<FEATURE ID><FLAGS><CLASS><RESPONSE>[<VALUE>]
  2044					;	VALUE FORMAT:
  2045					;	CLASS 0		<VALUE - LOW ORDER BIT OF BYTE>
  2046					;	CLASS 1		<COUNT><...COUNT BYTES...> (LEAST SIGNIFICANT BYTE 1ST)
  2047					;
  2048					;	A = FEATURE ID
  2049					;	B = FLAG FIELD
  2050					;	C = CLASS FIELD
  2051
  2052	002047'	260 17 0 00 002100'	REDFTR:	$CALL	SBFINI			; INIT THE BUFFER
  2053	002050'	201 11 0 00 000002 		MOVEI	T1,NM.FTR
  2054	002051'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; MSG TYPE
  2055	002052'	400 12 0 00 000000 		SETZ	T2,
  2056	002053'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NURD FLAGS
  2057	002054'	350 11 0 15 000041 		AOS	T1,NRDSEQ(R)		; GEN NEXT DATA SEQ NO.
  2058	002055'	405 11 0 00 000377 		ANDI	T1,377
  2059	002056'	202 11 0 15 000157 		MOVEM	T1,NRDFSN(R)		; SAVE NO. OF LAST FEATURE MSG SENT
  2060	002057'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; SEQ NO.
  2061	002060'	201 11 0 00 000001 		MOVEI	T1,1			; ONLY ALLOWED TO SET  1 AT A TIME
  2062	002061'	136 11 0 15 000102 		IDPB	T1,NRDSPT(R)		; NO. FEATURE SPECS
  2063					; NOW FORMAT FEATURE SPEC
  2064	002062'	136 05 0 15 000102 		IDPB	A,NRDSPT(R)		; FEATURE ID
  2065	002063'	136 06 0 15 000102 		IDPB	B,NRDSPT(R)		; FLAGS
  2066	002064'	136 07 0 15 000102 		IDPB	C,NRDSPT(R)		; FEATURE CLASS
  2067	002065'	136 12 0 15 000102 		IDPB	T2,NRDSPT(R)		; NULL RESPONSE FIELD
  2068					;	$CALLR	SNDNRD			; SEND THE MESSAGE
  2069
  2070	002066'	260 17 0 00 003532'	SNDNRD:	$CALL	SAV4J			; SEND REMAINING OUTPUT
  2071	002067'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)
  2072	002070'	260 17 0 00 000752'		$CALL	SNDBUF
  2073	002071'	254 00 0 00 002312'		  JRST	ERRTN			; DEVICE WENT OFFLINE
  2074	002072'	263 17 0 00 000000 		$RET
  2075
  2076					; READ ALL THE DEVICE FEATURES
  2077	002073'	260 17 0 00 003567'	RDFTRS:	$CALL	SAV3
  2078	002074'	201 05 0 00 000377 		MOVEI	A,FE.ALL		; FEATURE ID
  2079	002075'	403 06 0 00 000007 		SETZB	B,C			; B = FLAG FIELD, C = CLASS FIELD
  2080	002076'	260 17 0 00 002047'		$CALL	REDFTR			; SEND A READ FEATURE MSG
  2081	002077'	254 00 0 00 001715'		$CALLR	FTRWAT			; WAIT ON RESPONSE
  2082
  2083					; INIT NRDSBF FOR USE
  2084	002100'	201 11 0 15 000362 	SBFINI:	MOVEI	T1,NRDSBF+1(R)
  2085	002101'	505 11 0 11 777777 		HRLI	T1,-1(T1)
  2086	002102'	402 00 0 11 777777 		SETZM	-1(T1)
  2087	002103'	251 11 0 15 000560 		BLT	T1,NRDSBF+NRDBSZ/4-1(R)
  2088	002104'	200 11 0 00 004375'		MOVE	T1,[POINT 8,NRDSBF(R)]
  2089	002105'	202 11 0 15 000102 		MOVEM	T1,NRDSPT(R)
  2090	002106'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 38
NURD	MAC	21-Mar-80 10:15		Miscellaneous Support Functions

  2091					SUBTTL	Miscellaneous Support Functions
  2092
  2093					; MAP A DEVICE SPEC
  2094					;
  2095					; INPUT:  J2 = PTR TO DEVICE SPEC: "<NODE>::P<DEV>[<UNIT>]:"
  2096					;
  2097					; OUTPUT: DEVICE SPEC IN RDHOST(R)
  2098					;	  T1,T2,J1,J2 = CLOBBERED
  2099	002107'	641 02 0 00 777777 	MAPDEV:	TLC	J2,-1			; GENERIC POINTER ?
  2100	002110'	647 02 0 00 777777 		TLCN	J2,-1			;   BACK TO ORIG, SKIP IF WAS NONZERO
  2101	002111'	505 02 0 00 440700 		HRLI	J2,(POINT 7)		; IT WAS GENERIC - MAKE IT SPECIFIC
  2102	002112'	260 17 0 00 002236'		$CALL	EFADBY			; CALC EFFECTIVE ADDR
  2103	002113'	201 01 0 00 000006 		MOVEI	J1,6			; LIMIT FOR HOST NAME
  2104	002114'	334 11 0 00 004376'		SKIPA	T1,[POINT 7,RDHOST(R)]
  2105	002115'	136 12 0 00 000011 	MAPD1:	IDPB	T2,T1
  2106	002116'	134 12 0 00 000002 		ILDB	T2,J2			; NEXT CH
  2107	002117'	322 12 0 00 002145'		JUMPE	T2,MAPD4		; END OF STRING
  2108	002120'	302 12 0 00 000072 		CAIE	T2,":"
  2109						JRST	[	SOJGE	J1,MAPD1	; END OF HOST NAME
  2110	002121'	254 00 0 00 004377'				ERRI	NODX01,CPOPJ]	; HOST NAME TOO LONG
  2111	002122'	200 11 0 00 004131'		MOVE	T1,[POINT 7,RDDEV(R)]
  2112	002123'	201 01 0 00 000004 		MOVEI	J1,4			; ALLOW 3 DEV + 1 UNIT
  2113	002124'	134 12 0 00 000002 		ILDB	T2,J2
  2114	002125'	322 12 0 00 002145'		JUMPE	T2,MAPD4
  2115	002126'	306 12 0 00 000072 		CAIN	T2,":"
  2116	002127'	134 12 0 00 000002 		ILDB	T2,J2			; FLUSH EXTRA :
  2117	002130'	322 12 0 00 002145'		JUMPE	T2,MAPD4
  2118	002131'	306 12 0 00 000120 		CAIN	T2,"P"			; FLUSH LEADING P
  2119	002132'	134 12 0 00 000002 	MAPD3:	ILDB	T2,J2
  2120	002133'	322 12 0 00 002145'		JUMPE	T2,MAPD4
  2121	002134'	306 12 0 00 000072 		CAIN	T2,":"
  2122	002135'	254 00 0 00 002145'		JRST	MAPD4
  2123	002136'	302 12 0 00 000124 		CAIE	T2,"T"			; FLUSH T FROM LPT
  2124	002137'	306 12 0 00 000104 		CAIN	T2,"D"			; FLUSH D FROM CDR
  2125	002140'	334 00 0 00 000000 		SKIPA
  2126	002141'	136 12 0 00 000011 		IDPB	T2,T1
  2127	002142'	365 01 0 00 002132'		SOJGE	J1,MAPD3
  2128	002143'	201 01 0 00 602033 		ERRI	ARGX19,CPOPJ		; INVALID UNIT NO.
  2129	002144'	263 17 0 00 000000 
  2130
  2131	002145'	135 12 0 00 000011 	MAPD4:	LDB	T2,T1			; GET LAST CH
  2132	002146'	301 12 0 00 000060 		CAIL	T2,"0"
  2133	002147'	303 12 0 00 000071 		CAILE	T2,"9"
  2134	002150'	201 12 0 00 000060 		MOVEI	T2,"0"			; USE A DEFAULT OF ZERO
  2135	002151'	136 12 0 00 000011 		IDPB	T2,T1
  2136	002152'	135 11 0 00 004402'		LDB	T1,[POINT 14,RDDEV(R),13] ; GET 1ST 2 CHARS OF DEV NAME
  2137	002153'	306 11 0 00 020722 		CAIN	T1,"CR"
  2138	002154'	254 00 0 00 002160'		JRST	MAPD5
  2139	002155'	302 11 0 00 023120 		CAIE	T1,"LP"
  2140	002156'	254 00 0 00 004143'		ERR	GJFX16,CPOPJ		; NO SUCH DEVICE
  2141	002157'	664 13 0 00 000004 		TXOA	LS,NRD.LP		; SET DEVICE= LPT
  2142	002160'	620 13 0 00 000004 	MAPD5:	TXZ	LS,NRD.LP		; SET DEVICE= CDR
  2143	002161'	350 00 0 17 000000 	CPOPJ1:	AOS	(P)			; MAKE IT A SKIP RETURN
  2144	002162'	263 17 0 00 000000 	CPOPJ:	$RET				; RETURN
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 39
NURD	MAC	21-Mar-80 10:15		Miscellaneous Support Functions

  2145					; GNRxSP
  2146					; GNRMSP - CREATE AN NRM JFN SPEC
  2147					; GNRDSP - CREATE AN NRD JFN SPEC
  2148					;
  2149					; INPUT:  DEVICE SPEC IN RDHOST(R)
  2150					;
  2151					; OUTPUT: A = PTR TO THE SPEC ON STACK
  2152					;	  -1(A) = PTR TO RESTORE PDL FROM
  2153					;	  T1,T2 = CLOBBERED
  2154
  2155	002163'	634 12 0 00 000012 	GNRMSP:	TDZA	T2,T2			; ZERO SIGNALS NRM SPEC
  2156	002164'	201 12 0 00 000001 	GNRDSP:	MOVEI	T2,1			; ONE SIGNALS JFN SPEC
  2157	002165'	262 17 0 00 000011 		POP	P,T1			; REMOVE THE RETURN ADR
  2158	002166'	200 05 0 00 000017 		MOVE	A,P			; GET RESTORATION PDL PTR
  2159	002167'	261 17 0 00 000005 		PUSH	P,A			; SAVE IT ON STACK
  2160	002170'	205 05 0 00 440700 		MOVSI	A,(POINT 7)		; A = PTR TO BEG OF SPEC
  2161	002171'	541 05 0 17 000001 		HRRI	A,1(P)
  2162	002172'	270 17 0 00 004403'		ADD	P,[6,,6]		; 30 BYTE SPEC
  2163	002173'	261 17 0 00 000011 		PUSH	P,T1			; PUT RETURN ADR BACK ON
  2164	002174'	260 17 0 00 003557'		$CALL	SAV2			; SAVE A & B
  2165	002175'	200 06 0 00 004405'		MOVE	B,[POINT 7,[ASCIZ .DCN:.]]
  2166	002176'	260 17 0 00 002214'		$CALL	INSTR			; INSERT NSP DEV TYPE
  2167	002177'	200 06 0 00 004376'		MOVE	B,[POINT 7,RDHOST(R)]
  2168	002200'	260 17 0 00 002214'		$CALL	INSTR			; INSERT NODE NAME
  2169	002201'	200 06 0 12 002212'		MOVE	B,GNRTB(T2)		; GET ID STRING
  2170	002202'	260 17 0 00 002214'		$CALL	INSTR			; INSERT OBJECT AND ATRIB.
  2171	002203'	201 11 0 00 000060 		MOVEI	T1,"0"			; USERID OF 20 MEANS LP
  2172	002204'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; LPT?
  2173	002205'	201 11 0 00 000061 		MOVEI	T1,"1"			; NO,USERID OF 21 MEANS CR
  2174	002206'	136 11 0 00 000005 		IDPB	T1,A			; STORE FINAL CHARACTER
  2175	002207'	400 11 0 00 000000 		SETZ	T1,			; MAKE IT ASCIZ STRING
  2176	002210'	136 11 0 00 000005 		IDPB	T1,A			; ...
  2177	002211'	263 17 0 00 000000 		$RET				; RET NRM JFN SPEC ON STACK,
  2178
  2179	002212'	44 07 0 00 004406'	GNRTB:	POINT 7,[ASCIZ .-NRM;USERID:2.]
  2180	002213'	44 07 0 00 004411'		POINT 7,[ASCIZ .-002;USERID:2.]
  2181
  2182	002214'	134 11 0 00 000006 	INSTR:	ILDB	T1,B			; A = DEST PTR, B = SRC PTR
  2183	002215'	322 11 0 00 002162'		JUMPE	T1,CPOPJ		; QUIT ON NULL BYTE
  2184	002216'	136 11 0 00 000005 		IDPB	T1,A			; INSERT THIS BYTE IN DEST STRING
  2185	002217'	254 00 0 00 002214'		JRST	INSTR			; HOHUM
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 40
NURD	MAC	21-Mar-80 10:15		Miscellaneous Support Functions

  2186					; EFADR - EFFECTIVE ADDRESS CALCULATION FUNCTION
  2187					;	ENTRY:	T2 = WORD TO BEGIN EFFECTIVE ADR CALC ON
  2188					;		REGS 0-R SAVED AT RDSAVE(R)
  2189					;	EXIT:	T1 = EFFECTIVE ADDRESS
  2190
  2191	002220'	135 11 0 00 004414'	EFADR:	LDB	T1,[POINT 4,T2,17]	; GET INDEX FIELD
  2192	002221'	322 11 0 00 002227'		JUMPE	T1,EFAD1		; NO INDEXING
  2193	002222'	307 11 0 00 000016 		CAIG	T1,16			; CHECK FOR T1 -> SAVED AC
  2194	002223'	271 11 0 15 000000 		ADDI	T1,RDSAVE(R)		; T1 = PTR TO REG SLOT
  2195	002224'	306 11 0 00 000017 		CAIN	T1,P			; CHECK FOR STACK REFERENCE
  2196						JRST	[	MOVE	T1,RDEPDL(R)	; YES, GET CONTENT BEFORE NURD
  2197	002225'	254 00 0 00 004415'				SOJA	T1,.]		; ...
  2198	002226'	550 11 0 11 000000 		HRRZ	T1,(T1)			; T1 = PTR TO INDEX REG - GET CONTENTS
  2199	002227'	271 11 0 12 000000 	EFAD1:	ADDI	T1,(T2)			; T1 = INDEXED ADDRESS
  2200	002230'	307 11 0 00 000015 		CAIG	T1,R			; CHECK FOR T1 -> SAVED AC
  2201	002231'	271 11 0 15 000000 		ADDI	T1,RDSAVE(R)		; T1 = PTR TO REG SLOT
  2202	002232'	607 12 0 00 000020 		TLNN	T2,(@)			; CHECK FOR INDIRECT ADDRESSING
  2203	002233'	263 17 0 00 000000 		$RET				; ALL DONE
  2204	002234'	200 12 0 11 000000 		MOVE	T2,(T1)			; ANOTHER ROUND
  2205	002235'	254 00 0 00 002220'		JRST	EFADR			; ...
  2206
  2207					; BYTE POINTER EFFECTIVE ADDRESS CALCULATION
  2208					;
  2209					; INPUT:  J2 = BYTE POINTER (NOT THE -1,,ADDR THING)
  2210					;
  2211					; OUTPUT: J2 = APPROPRIATELY MODIFIED BYTE POINTER
  2212					;
  2213					; ALL OTHER CONDITIONS ARE EXACTLY AS FOR EFADR, ABOVE.
  2214
  2215	002236'	200 12 0 00 000002 	EFADBY:	MOVE	T2,J2			; COPY THE INPUT ARG
  2216	002237'	621 02 0 00 000037 		TLZ	J2,(@(17))		; TURN OFF INDIR AND INDEX IN RETURN
  2217	002240'	260 17 0 00 002220'		$CALL	EFADR			; DO THE EFFECTIVE ADDR CALCULATION
  2218	002241'	540 02 0 00 000011 		HRR	J2,T1			; ADD THE ADDR HALFWORD
  2219	002242'	263 17 0 00 000000 		$RET				; ALL DONE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 41
NURD	MAC	21-Mar-80 10:15		Entry Setup

  2220					SUBTTL	Entry Setup
  2221
  2222					; USER ENTRY REGISTER SETUP
  2223					;
  2224					; INPUT:  CALL WITH USER REGS UNMODIFIED
  2225					;
  2226					; OUTPUT: LS = DATA LINK STATUS - NRDSTS(R)
  2227					;	  DS = DEVICE STATUS - NRDDST(R)
  2228					;	  R  = RDDB PTR
  2229					;	  J1,T1,T2 = CLOBBERED
  2230
  2231	002243'	261 17 0 00 004417'	SETUP1:	PUSH	P,[0]			; NON-SKIP TYPE JSYS
  2232	002244'	334 00 0 00 000000 		SKIPA
  2233	002245'	261 17 0 00 004420'	SETUP2:	PUSH	P,[UJ.XT2]		; SKIP TYPE JSYS
  2234	002246'	430 01 0 00 000000'		XOR	J1,SUBJFN		; SEE IF AN OK JFN
  2235	002247'	602 01 0 00 777777 		TRNE	J1,-1			; ...
  2236						JRST	[	POP	P,J1		; NO, CLEAN UP STACK
  2237	002250'	254 00 0 00 004421'				ERRI	DESX3,CPOPJ]	; SAY WE HAVE A PROBLEM
  2238	002251'	430 01 0 00 000000'		XOR	J1,SUBJFN		; BACK TO ORIGINAL J1
  2239	002252'	202 16 0 01 000016 		MOVEM	16,RDSAVE+16(J1)	; SAVE THE CALLER AC'S
  2240	002253'	201 16 0 01 000000 		MOVEI	16,RDSAVE(J1)		; ...
  2241	002254'	251 16 0 01 000015 		BLT	16,RDSAVE+15(J1)	; ...
  2242	002255'	550 15 0 00 000001 		HRRZ	R,J1			; SET THE DATABASE POINTER
  2243	002256'	262 17 0 00 000012 		POP	P,T2			; GET THE ENTRY FLAG
  2244	002257'	354 00 0 17 000000 		AOSA	(P)			; SKIP EXIT
  2245										; SKIP INTO FOLLOWING CODE
  2246					; SPECIAL ENTRY FOR UGTJFN
  2247					; INPUTS AND OUTPUTS SAME AS SETUPx, ABOVE.
  2248	002260'	201 12 0 00 000001 	USETUP:	MOVEI	T2,UJ.XT2		; SET FOR SKIP TYPE JSYS
  2249	002261'	262 17 0 00 000011 		POP	P,T1			; SAVE INITIAL STATE OF PDL
  2250	002262'	202 17 0 15 000017 		MOVEM	P,RDEPDL(R)		;   FOR ERROR EXITS
  2251	002263'	261 17 0 00 000011 		PUSH	P,T1			; PUT RETURN ADDRESS BACK ONTO STACK
  2252	002264'	200 11 0 15 000023 		MOVE	T1,RDSTS(R)		; RECORD ENTRY STATUS
  2253	002265'	620 11 0 00 000001 		TXZ	T1,UJ.XT2		; SET EXIT TYPE
  2254	002266'	434 11 0 00 000012 		IOR	T1,T2			; ...
  2255	002267'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; DETERMINE SOFTWARE INTERRUPT STATE
  2256	002270'	104 00 0 00 000127 		SKPIR				; SKIP IF ON
  2257	002271'	624 11 0 00 000002 		  TXZA	T1,UJ.INT		; INTERRUPTS NOT ON
  2258	002272'	660 11 0 00 000002 		TXO	T1,UJ.INT		; INTERRUPTS ARE ON
  2259	002273'	620 11 0 00 000004 		TXZ	T1,UJ.TDS		; FLUSH TEMP DISABLE FLAG
  2260	002274'	202 11 0 15 000023 		MOVEM	T1,RDSTS(R)		; SAVE ENTRY STATE
  2261	002275'	260 17 0 00 002524'		$CALL	INTOFF			; DISABLE INTERRUPTS
  2262	002276'	201 11 0 00 000010 		MOVEI	T1,UJ.NRD		; PROCLAIM THAT WE
  2263	002277'	436 11 0 15 000023 		IORM	T1,RDSTS(R)		;   IS PROCESSING
  2264	002300'	200 13 0 15 000036 		MOVE	LS,NRDSTS(R)		; LOAD DATA LINK STATUS
  2265	002301'	200 14 0 15 000037 		MOVE	DS,NRDDST(R)		; LOAD DEVICE STATUS
  2266	002302'	260 17 0 00 000714'		$CALL	SETDST			; UPDATE DEVICE STATUS
  2267	002303'	202 14 0 15 000037 		MOVEM	DS,NRDDST(R)		;   TO ENTRY STATE
  2268	002304'	260 17 0 00 002514'		$CALL	INTON			; ENABLE INTERRUPTS
  2269	002305'	602 13 0 00 000100 		TXNE	LS,NRD.OC		; OPEN COMPLETE?
  2270	002306'	260 17 0 00 002465'		$CALL	INRDIN			; YES,INIT FOR NURD INTERRUPT MESSAGES
  2271	002307'	402 00 0 15 000056 		SETZM	NRDIER(R)		; INIT OUR ERROR PTR AT UJSYS ENTRY
  2272	002310'	402 00 0 15 000024 		SETZM	RDERT(R)		; NO ERROR RETURN YET SPECIFIED
  2273	002311'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 42
NURD	MAC	21-Mar-80 10:15		Exit Routes & Error Processing

  2274					SUBTTL	Exit Routes & Error Processing
  2275
  2276					; USER LEVEL ERROR EXIT
  2277	002312'	261 17 0 00 000002 	ERRTN:	PUSH	P,J2			; J1 = ERROR CODE
  2278	002313'	200 02 0 00 000001 		MOVE	J2,J1			; COPY ERROR CODE
  2279	002314'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; SO CAN DO SETER
  2280	002315'	104 00 0 00 000336 		SETER				;  ...
  2281	002316'	200 01 0 00 000002 		MOVE	J1,J2			; RESTORE J1
  2282	002317'	262 17 0 00 000002 		POP	P,J2			;   AND J2
  2283	002320'	312 15 0 00 000000'		CAME	R,SUBJFN		; DO WE HAVE A DATABASE ?
  2284	002321'	263 17 0 00 000000 		$RET				; NO, LEAVE - NO AC'S SAVED
  2285	002322'	260 17 0 00 002524'		$CALL	INTOFF			; DISALLOW INTERRUPTS FOR AWHILE
  2286	002323'	200 17 0 15 000017 		MOVE	P,RDEPDL(R)		; RESTORE ENTRY PDL
  2287	002324'	202 01 0 15 000001 		MOVEM	J1,RDSAVE+J1(R)		; SET ERROR CODE RETURN
  2288	002325'	135 12 0 00 004424'		LDB	T2,[POINT 23,@(P),35]	; GET POSSIBLE ERJMP/ERCAL DISP ADDR
  2289	002326'	260 17 0 00 002220'		$CALL	EFADR			;   AND CALC THE EFFECTIVE ADDR TO T1
  2290	002327'	135 12 0 00 004425'		LDB	T2,[POINT 13,@(P),12]	; GET OPCODE TO SEE IF ERJMP OR ERCAL
  2291	002330'	306 12 0 00 006417 		CAIN	T2,<ERCAL>_-^D23	; HAS CALLER SPECIFIED ERCAL ?
  2292	002331'	552 11 0 15 000024 		HRRZM	T1,RDERT(R)		; SET ADDRESS, WITH  0 FLAG
  2293	002332'	306 12 0 00 006416 		CAIN	T2,<ERJMP>_-^D23	; WAS AN ERJMP SPECIFIED ?
  2294	002333'	562 11 0 15 000024 		HRROM	T1,RDERT(R)		; SET ADDRESS, WITH -1 FLAG
  2295	002334'	260 17 0 00 000714'		$CALL	SETDST			; UPDATE DEVICE STATUS
  2296	002335'	603 13 0 00 000001 		TXNE	LS,NRD.OF		; IS DEVICE OFFLINE ?
  2297						JRST	[	MOVEM	LS,NRDSTS(R)	; UPDATE STS BEFORE INT
  2298								MOVEM	DS,NRDDST(R)	; ...
  2299								MOVX	J1,NRD.EN	; SEE IF USER IS ENABLED
  2300								TDNE	J1,NRDSTS(R)	;   FOR THIS INTERRUPT
  2301								JRST	CKI3		; SEEMS TO BE
  2302	002336'	254 00 0 00 004426'				JRST	ERRTX]		; NOPE, JUST BE QUIET
  2303	002337'	200 01 0 15 000037 		MOVE	J1,NRDDST(R)		; GET DEVICE STATUS AT ENTRY
  2304	002340'	430 01 0 00 000014 		XOR	J1,DS			; J1 = BITS CHANGED SINCE ENTRY
  2305	002341'	200 02 0 00 000014 		MOVE	J2,DS
  2306	002342'	404 02 0 00 000001 		AND	J2,J1			; J2 = BITS GONE HIGH
  2307	002343'	612 02 0 00 004434'		TXNE	J2,MO%FER!MO%HE!MO%LCI	; CHECK FOR HARD ERRORS
  2308	002344'	254 00 0 00 002354'		JRST	CKI2			; HARD ERROR
  2309	002345'	612 02 0 00 004237'		TXNE	J2,MO%SER!MO%LPC	; CHECK SOFT ERRORS
  2310	002346'	254 00 0 00 002355'		JRST	CKI3			; SOFT ERROR
  2311	002347'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; DO WE HAVE LPT ?
  2312	002350'	607 01 0 00 000040 		TXNN	J1,MO%EOF		; NO, SEE IF EOF ON CDR
  2313	002351'	254 00 0 00 002362'		JRST	ERRTX			; NEITHER LPT, OR EOF ON CDR
  2314	002352'	205 02 0 00 000200 		MOVX	J2,1B<.ICEOF>		; EOF IT IS!
  2315	002353'	254 00 0 00 002356'		JRST	CKI4			; GO DO IT TO IT
  2316	002354'	334 02 0 00 004435'	CKI2:	SKIPA	J2,[1B<.ICDAE>]		; HARD=> DATA ERROR
  2317	002355'	200 02 0 15 000077 	CKI3:	MOVE	J2,NRDCHN(R)		; SOFT=> USE USER DEFINED CHANNEL
  2318	002356'	201 01 0 00 400000 	CKI4:	MOVEI	J1,.FHSLF
  2319	002357'	104 00 0 00 000132 		IIC				; GEN AN INTERRUPT
  2320	002360'	320 16 0 00 002362'		  ERJMP	ERRTX			; ??
  2321	002361'	402 00 0 15 000024 		SETZM	RDERT(R)		; CLEAR ERCAL/ERJMP INDICATOR
  2322	002362'	336 01 0 15 000024 	ERRTX:	SKIPN	J1,RDERT(R)		; DO WE HAVE ERJMP/ERCAL TO SIMULATE ?
  2323	002363'	254 00 0 00 002374'		JRST	UEXIT			; NOPE
  2324						JUMPG	J1,[	AOS	(P)		; ERCAL, FIX USER'S RETURN ADDR
  2325								PUSH	P,J1		; PUT ERCAL LOC ON STACK
  2326	002364'	327 01 0 00 004436'				JRST	UEXIT]		; OK
  2327	002365'	542 01 0 17 000000 		HRRM	J1,(P)			; ERJMP, SET APPROP DISPATCH ADDRESS
  2328	002366'	254 00 0 00 002374'		$CALLR	UEXIT			; FINISH UP AND LEAVE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 43
NURD	MAC	21-Mar-80 10:15		Exit Routes & Error Processing

  2329					; ***	SUCRTN
  2330					; THIS IS NORMAL (SUCCESS) EXIT FROM NURD20
  2331	002367'	201 11 0 00 000001 	SUCRTN:	MOVEI	T1,UJ.XT2		; SUCCESS EXIT
  2332	002370'	200 17 0 15 000017 		MOVE	P,RDEPDL(R)		; RESTORE ENTRY PDL
  2333	002371'	612 11 0 15 000023 		TDNE	T1,RDSTS(R)		; CHECK EXIT TYPE
  2334	002372'	350 00 0 17 000000 		AOS	(P)			; A SKIP RETURN
  2335	002373'	260 17 0 00 002524'		$CALL	INTOFF			; TURN OFF INTERRUPTS
  2336
  2337	002374'	620 13 0 00 100000 	UEXIT:	TXZ	LS,NRD.RS		; FLUSH RESUME ISSUED FLAG
  2338	002375'	542 13 0 15 000036 		HRRM	LS,NRDSTS(R)		; DATA LINK STATUS, RESTORE USER FLAGS
  2339	002376'	202 14 0 15 000037 		MOVEM	DS,NRDDST(R)		; DEVICE STATUS
  2340	002377'	200 03 0 15 000036 		MOVE	J3,NRDSTS(R)		; SEE IF WE HAVE
  2341	002400'	627 03 0 00 000004 		TXZN	J3,NRD.NO		;   AN ALERT TO REPORT
  2342	002401'	254 00 0 00 002411'		JRST	UEX0			; NOPE
  2343	002402'	202 03 0 15 000036 		MOVEM	J3,NRDSTS(R)		; CLEAR THE FLAG
  2344	002403'	606 03 0 00 000200 		TXNN	J3,NRD.EN		; DOES USER WANT TO KNOW ?
  2345	002404'	254 00 0 00 002411'		JRST	UEX0			; NOPE
  2346	002405'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; YES, SO WE WILL
  2347	002406'	200 02 0 15 000077 		MOVE	J2,NRDCHN(R)		;   INTERRUPT
  2348	002407'	104 00 0 00 000132 		IIC				;      HIM
  2349	002410'	320 16 0 00 002411'		  ERJMP	UEX0			; ? WELL, WE REALLY TRIED
  2350
  2351	002411'	201 11 0 00 000010 	UEX0:	MOVEI	T1,UJ.NRD		; UNPROCLAIM NURD PROCESSING
  2352	002412'	412 11 0 15 000023 		ANDCAM	T1,RDSTS(R)		; ...
  2353	002413'	205 16 0 15 000000 		MOVSI	16,RDSAVE(R)		; RESTORE AC'S
  2354	002414'	251 16 0 00 000016 		BLT	16,16			; ...
  2355	002415'	260 17 0 00 003511'		$CALL	SAV2J			; SAVE SOME REGISTERS TEMPORARILY
  2356	002416'	200 02 0 00 000000'		MOVE	J2,SUBJFN		; GET DATA BASE POINTER
  2357	002417'	200 01 0 02 000023 		MOVE	J1,RDSTS(J2)		; GET RDSTS
  2358	002420'	261 17 0 00 000001 		PUSH	P,J1			; FOR LATER PROCESSING
  2359	002421'	606 01 0 00 400000 		TXNN	J1,UJ.FLS		; ARE WE FLUSHING THE DATA BASE?
  2360	002422'	254 00 0 00 002443'		$CALLR	UEXX			; NO, ENABLE INTERRUPTS AND GET OUT
  2361	002423'	336 01 0 02 000025 		SKIPN	J1,RDINTB(J2)		; HAVE WE FOOLED WITH INT SYSTEM ?
  2362	002424'	254 00 0 00 002437'		JRST	UEX1			; NOPE
  2363	002425'	556 01 0 01 000000 		HLRZM	J1,NRDLVL-1(J1)		; YES, SO RESTORE INT PC LOCATION
  2364	002426'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; TURN OFF OUR INTERRUPTS
  2365	002427'	201 02 0 00 000003 		MOVX	J2,1B<NRDICH>+1B<NRDDCH>;   BOTH CHANNELS
  2366	002430'	104 00 0 00 000133 		DIC				; ...
  2367	002431'	200 02 0 00 000000'		MOVE	J2,SUBJFN		; GET RDDB PTR AGAIN
  2368	002432'	336 02 0 02 000055 		SKIPN	J2,NRDCAP(J2)		; NOW, CLEAN UP CORE CHUNKS
  2369	002433'	254 00 0 00 002437'		JRST	UEX1			; NONE THERE
  2370	002434'	554 01 0 00 000002 		HLRZ	J1,J2			; GET LENGTH
  2371	002435'	553 00 0 00 000002 		HRRZS	J2			;   AND ISOLATE ADDRESS
  2372	002436'	260 17 1 00 400140 		$CALL	M%RMEM			; GIVE IT BACK
  2373	002437'	201 01 0 00 000565 	UEX1:	MOVEI	J1,RDDBSZ		; NOW FOR MAIN DATABASE
  2374	002440'	200 02 0 00 000000'		MOVE	J2,SUBJFN		; GET ADDRESS OF IT
  2375	002441'	476 00 0 00 000000'		SETOM	SUBJFN			; CLOBBER POINTER
  2376	002442'	260 17 1 00 400140 		$CALL	M%RMEM			; GIVE UP MEMORY
  2377
  2378	002443'	201 01 0 00 400000 	UEXX:	MOVEI	J1,.FHSLF		; SET TO TURN ON INTERRUPT SYS
  2379	002444'	262 17 0 00 000002 		POP	P,J2			; GET BACK THE RDSTS WORD
  2380	002445'	602 02 0 00 000004 		TXNE	J2,UJ.TDS		; DID WE DISABLE THE INT SYSTEM ?
  2381	002446'	104 00 0 00 000126 		EIR				; YES, TURN IT BACK ON
  2382	002447'	263 17 0 00 000000 		$RET				;   AND LEAVE	
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 44
NURD	MAC	21-Mar-80 10:15		Exit Routes & Error Processing

  2383					; INTERNAL ERROR PROCESSOR
  2384					; CALL:	INVOKED BY NRDR MACRO
  2385					;	SAVES LOCATION OF ERROR IN NRDIER
  2386					;
  2387					; IN:	 J1 = Error location ,, Error code
  2388					;	(P) = Continuation address (return)
  2389					;
  2390					; OUT:	 J1 = Error code
  2391
  2392	002450'	606 01 0 00 777777 	NRDERR:	TRNN	J1,-1			; ANY CODE SET ?
  2393	002451'	541 01 0 00 602025 		HRRI	J1,DCNX8		; NO, SUPPLY THE DEFAULT
  2394	002452'	261 17 0 00 000001 		PUSH	P,J1			; SAVE INPUT ARG
  2395	002453'	332 01 0 15 000056 		SKIPE	J1,NRDIER(R)		; GET ERR BUFFER PTR
  2396	002454'	253 01 0 00 002457'		AOBJN	J1,NR1			; OK, ADVANCE PTR
  2397	002455'	205 01 0 00 777760 		MOVSI	J1,-NURDL		; WRAPAROUND
  2398	002456'	541 01 0 15 000057 		HRRI	J1,NRDERH(R)		; ...
  2399	002457'	262 17 0 01 000000 	NR1:	POP	P,(J1)			; SAVE LOCATION,,CODE FOR ERROR
  2400	002460'	202 01 0 15 000056 		MOVEM	J1,NRDIER(R)		; UPDATE NRDERH PTR
  2401	002461'	550 01 0 01 000000 		HRRZ	J1,(J1)			; ISOLATE CODE IN J1
  2402	002462'	661 14 0 00 000210 		TXO	DS,MO%FER!MO%SER	; ALL NRDR'S ARE FATAL
  2403	002463'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 45
NURD	MAC	21-Mar-80 10:15		Interrupt Processing

  2404					SUBTTL	Interrupt Processing
  2405
  2406	002464'				NURDPC:	BLOCK	1			; NURD INTERRUPT LEVEL PC SAVER
  2407
  2408					; INIT NURD INTERRUPT SERVICE
  2409
  2410	002465'	332 00 0 15 000025 	INRDIN:	SKIPE	RDINTB(R)		; INTERRUPTS ALREADY ENABLED?
  2411	002466'	263 17 0 00 000000 		$RET				; YES, JUST EXIT
  2412	002467'	260 17 0 00 003521'		$CALL	SAV3J
  2413	002470'	201 01 0 00 400000 		MOVEI	J1,.FHSLF
  2414	002471'	104 00 0 00 000144 		RIR				; READ USER'S INTERRUPT DATA
  2415	002472'	322 02 0 00 002162'		JUMPE	J2,CPOPJ		; SIR HAS NOT BEEN DONE
  2416	002473'	200 11 0 00 004441'		MOVE	T1,[NRDLVL,,INRD]
  2417	002474'	202 11 0 02 000043 		MOVEM	T1,NRDICH(J2)		; SET NRD SERVICE IN PCHNTB
  2418	002475'	200 11 0 00 004442'		MOVE	T1,[NRDLVL,,DNRD]
  2419	002476'	202 11 0 02 000042 		MOVEM	T1,NRDDCH(J2)
  2420	002477'	201 11 0 00 002464'		MOVEI	T1,NURDPC
  2421	002500'	207 00 0 00 000002 		MOVSS	J2
  2422	002501'	504 02 0 02 000000 		HRL	J2,NRDLVL-1(J2)		; REMEMBER OLD CONTENTS OF PLEVTB
  2423	002502'	202 11 0 02 000000 		MOVEM	T1,NRDLVL-1(J2)		; SET NURD PC SAVE LOC IN PLEVTB
  2424	002503'	202 02 0 15 000025 		MOVEM	J2,RDINTB(R)		; SAVE THIS INFO FOR LATER FIXUP
  2425	002504'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; ENABLE INTS FOR DATA LINK MSGS
  2426	002505'	201 02 0 00 000024 		MOVEI	J2,.MOACN
  2427	002506'	200 03 0 00 004443'		MOVX	J3,<.MOCIA>B8+<NRDICH>B17+<NRDDCH>B26
  2428	002507'	104 00 0 00 000077 		MTOPR
  2429	002510'	201 01 0 00 400000 		MOVEI	J1,.FHSLF
  2430	002511'	201 02 0 00 000003 		MOVX	J2,1B<NRDICH>+1B<NRDDCH>
  2431	002512'	104 00 0 00 000131 		AIC				; ACTIVATE NRD CHANNEL
  2432	002513'	263 17 0 00 000000 		$RET
  2433
  2434					; TURN ON INTERRUPTS
  2435	002514'	260 17 0 00 003502'	INTON:	$CALL	SAV1J			; SAVE J1
  2436	002515'	201 01 0 00 000004 		MOVEI	J1,UJ.TDS		; CHECK FOR
  2437	002516'	616 01 0 15 000023 		TDNN	J1,RDSTS(R)		;   INTERRUPT DISABLE
  2438	002517'	263 17 0 00 000000 		$RET				; NOT DISABLED
  2439	002520'	412 01 0 15 000023 		ANDCAM	J1,RDSTS(R)		; CLEAR DISABLED FLAG
  2440	002521'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; TURN THE INT SYSTEM
  2441	002522'	104 00 0 00 000126 		EIR				;   BACK ON
  2442	002523'	263 17 0 00 000000 		$RET				; LEAVE
  2443
  2444					; TURN OFF INTERRUPTS
  2445	002524'	260 17 0 00 003502'	INTOFF:	$CALL	SAV1J			; SAVE J1
  2446	002525'	201 01 0 00 000002 		MOVEI	J1,UJ.INT		; IS THE INT SYSTEM OFF
  2447	002526'	616 01 0 15 000023 		TDNN	J1,RDSTS(R)		; ?
  2448	002527'	263 17 0 00 000000 		$RET				; YES, IT IS OFF - GO AWAY
  2449	002530'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; NO, TURN IT OFF
  2450	002531'	104 00 0 00 000130 		DIR				; ...
  2451	002532'	201 01 0 00 000004 		MOVEI	J1,UJ.TDS		; REMEMBER THAT WE DID IT
  2452	002533'	436 01 0 15 000023 		IORM	J1,RDSTS(R)		; ...
  2453	002534'	263 17 0 00 000000 		$RET				; LEAVE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 46
NURD	MAC	21-Mar-80 10:15		Interrupt Processing

  2454					; RECEIVED A DATA INTERRUPT
  2455					; WE MUST BE CAREFUL TO PRESERVE USER AC'S
  2456
  2457	002535'	261 17 0 00 000005 	DNRD:	PUSH	P,A			; SAVE A COUPLE
  2458	002536'	261 17 0 00 000006 		PUSH	P,B			;   OF AC'S
  2459	002537'	337 06 0 00 000000'		SKIPG	B,SUBJFN		; GET RDDB POINTER
  2460	002540'	254 00 0 00 002557'		JRST	DNRDX			; DEFENSIVE
  2461	002541'	201 05 0 00 100000 		MOVEI	A,UJ.RCV		; SET RCV DATA INT FLAG
  2462	002542'	436 05 0 06 000023 		IORM	A,RDSTS(B)		; ...
  2463	002543'	550 05 0 00 002464'		HRRZ	A,NURDPC		; CHECK FOR POSSIBLE WAIT CONDITIONS
  2464	002544'	301 05 0 00 000764'		CAIL	A,SENDER		; ARE WE IN REGION OF INTEREST ?
  2465	002545'	303 05 0 00 000771'		CAILE	A,USOWTR		; SOUTR WAIT
  2466	002546'	254 00 0 00 002557'		JRST	DNRDX			; NOT IN  SOUTR REGION
  2467	002547'	306 05 0 00 000771'		CAIN	A,USOWTR		; AT ACTUAL SOUTR WAIT ?
  2468						JUMPE	J3,[	MOVE	A,NURDPC	; SOUTR IS DONE
  2469	002550'	322 03 0 00 004444'				JRST	DNBRK]		; GO SET APPROP PC
  2470	002551'	201 05 0 00 200000 		MOVEI	A,UJ.SSO		; SET SUSPENDED SOUTR  FLAG
  2471	002552'	436 05 0 06 000023 		IORM	A,RDSTS(B)		; ...
  2472	002553'	201 05 0 00 001017'		MOVEI	A,BRKS			; SET BREAK PC
  2473	002554'	500 05 0 00 002464'		HLL	A,NURDPC		; ...
  2474
  2475	002555'	661 05 0 00 010000 	DNBRK:	TXO	A,1B5			; SET USER MODE
  2476	002556'	202 05 0 00 002464'		MOVEM	A,NURDPC		; TOP LEVEL WILL RESUME
  2477	002557'	262 17 0 00 000006 	DNRDX:	POP	P,B			; RESTORE CLOBBERED AC'S
  2478	002560'	262 17 0 00 000005 		POP	P,A			; ...
  2479	002561'	104 00 0 00 000136 		DEBRK				; DISMISS INTERRUPT
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 47
NURD	MAC	21-Mar-80 10:15		Interrupt Processing

  2480					; NURD INTERRUPT MESSAGE PROCESSOR
  2481	002562'	261 17 0 00 000001 	INRD:	PUSH	P,J1			; SAVE SOME
  2482	002563'	261 17 0 00 000002 		PUSH	P,J2			;   AC'S FOR
  2483	002564'	261 17 0 00 000003 		PUSH	P,J3			;    WHILE WE
  2484	002565'	261 17 0 00 000004 		PUSH	P,J4			;     ARE WORKING
  2485	002566'	261 17 0 00 000015 		PUSH	P,R			;       ...
  2486	002567'	337 15 0 00 000000'		SKIPG	R,SUBJFN		; GET RDDB FOR THIS FORK
  2487	002570'	254 00 0 00 002625'		JRST	INRDX			; DEFENSIVE
  2488	002571'	200 01 0 15 000034 		MOVE	J1,NRDJFN(R)		; READ THE MESSAGE
  2489	002572'	201 02 0 00 000035 		MOVEI	J2,.MORIM
  2490	002573'	201 03 0 15 000561 		MOVEI	J3,NRDIBF(R)
  2491	002574'	505 03 0 00 441000 		HRLI	J3,(POINT 8)		; J3 = PTR TO BUFFER
  2492	002575'	261 17 0 00 000003 		PUSH	P,J3			; SAVE IT FOR READING
  2493	002576'	104 00 0 00 000077 		MTOPR				; GET IT - J4 = NO. CHARS READ
  2494	002577'	262 17 0 00 000003 		POP	P,J3
  2495	002600'	322 04 0 00 002625'		JUMPE	J4,INRDX		; VACUOUS MSG
  2496	002601'	134 01 0 00 000003 		ILDB	J1,J3			; GET MSG TYPE
  2497	002602'	302 01 0 00 000004 		CAIE	J1,NM.ALR		; BETTER BE AN ALERT MSG!
  2498	002603'	254 00 0 00 002625'		JRST	INRDX			; IGNORE  ???
  2499
  2500					; ALERT - DEVICE CLAIMS TO BE FIXED
  2501	002604'	205 01 0 00 000001 		MOVX	J1,NRD.OF		; WE ARE NO LONGER OFFLINE
  2502	002605'	616 01 0 15 000036 		TDNN	J1,NRDSTS(R)		; SEE IF WE EVER KNEW WE WERE OFFLINE
  2503						JRST	[	MOVX	J1,NRD.ON	; NO, OFFLINE NOT HERE YET
  2504								IORM	J1,NRDSTS(R)	; LETS REMEMBER THIS
  2505	002606'	254 00 0 00 004446'				JRST	INRDX]		;   FOR LATER
  2506	002607'	413 01 0 15 000036 		ANDCAB	J1,NRDSTS(R)		; WE ARE OFFLINE, SO CLEAR IT
  2507	002610'	606 01 0 00 000200 		TXNN	J1,NRD.EN		; DOES USER WANT TO KNOW ?
  2508	002611'	254 00 0 00 002625'		JRST	INRDX			; NOPE
  2509	002612'	201 01 0 00 000010 		MOVX	J1,UJ.NRD		; CHECK FOR
  2510	002613'	612 01 0 15 000023 		TDNE	J1,RDSTS(R)		;   NURD PROCESSING
  2511						JRST	[	MOVX	J1,NRD.NO	; WE WANT TO
  2512								IORM	J1,NRDSTS(R)	;   SAY ONLINE
  2513	002614'	254 00 0 00 004451'				JRST	INRDX]		;     AS WE LEAVE
  2514	002615'	201 01 0 00 400000 		MOVEI	J1,.FHSLF		; ISSUE AN INTERRUPT
  2515	002616'	200 02 0 15 000077 		MOVE	J2,NRDCHN(R)		;    ON USER'S CHANNEL
  2516	002617'	262 17 0 00 000015 		POP	P,R			; BUT FIRST, BACK TO
  2517	002620'	262 17 0 00 000004 		POP	P,J4			;   USER'S AC'S
  2518	002621'	262 17 0 00 000003 		POP	P,J3			;   ...
  2519	002622'	104 00 0 00 000132 		IIC				; TICKLE !
  2520	002623'	320 16 0 00 002630'		  ERJMP	INRDXX			; ??
  2521	002624'	254 00 0 00 002630'		JRST	INRDXX			; LEAVE
  2522
  2523	002625'	262 17 0 00 000015 	INRDX:	POP	P,R			; RESTORE AC'S
  2524	002626'	262 17 0 00 000004 		POP	P,J4			; ...
  2525	002627'	262 17 0 00 000003 		POP	P,J3			; ...
  2526	002630'	262 17 0 00 000002 	INRDXX:	POP	P,J2			; ...
  2527	002631'	262 17 0 00 000001 		POP	P,J1			; ...
  2528	002632'	104 00 0 00 000136 		DEBRK				; DISMISS INTERRUPT
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 48
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2529					SUBTTL	Debug Typeout Routines
  2530
  2531	002633'	260 17 0 00 003532'	TYBUF:	$CALL	SAV4J
  2532	002634'	260 17 0 00 003600'		$CALL	SAV4
  2533	002635'	260 17 0 00 002666'		$CALL	TCRLF
  2534						TYPE	(Seq: )
  2535	002640'	201 05 0 15 000361 		MOVEI	A,NRDSBF(R)
  2536	002641'	505 05 0 00 441000 		HRLI	A,(POINT 8)
  2537	002642'	133 00 0 00 000005 		IBP	A			; SKIP NURD MSG TYPE
  2538	002643'	133 00 0 00 000005 		IBP	A			; SKIP NURD FLGS
  2539	002644'	134 02 0 00 000005 		ILDB	J2,A
  2540	002645'	260 17 0 00 002672'		$CALL	NUMO			; SEQ NUMBER
  2541						TYPE	(   Flags: )
  2542	002650'	134 02 0 00 000005 		ILDB	J2,A
  2543	002651'	260 17 0 00 002671'		$CALL	ONUMO			; DATA FLAGS
  2544						TYPE	(   Segs: )
  2545	002654'	134 02 0 00 000005 		ILDB	J2,A
  2546	002655'	200 06 0 00 000002 		MOVE	B,J2			; SAVE IT
  2547	002656'	260 17 0 00 002672'		$CALL	NUMO			; NO. SEGMENTS
  2548	002657'	260 17 0 00 002666'		$CALL	TCRLF			; B = NO. OF SEGMENTS
  2549	002660'	361 06 0 00 002162'	TYBUF1:	SOJL	B,CPOPJ			; DONE
  2550	002661'	134 07 0 00 000005 		ILDB	C,A			; GET NEXT SEGMENT HEAD
  2551
  2552	002662'	361 07 0 00 002660'	TYBUF2:	SOJL	C,TYBUF1		; SEG DONE
  2553	002663'	134 01 0 00 000005 		ILDB	J1,A
  2554	002664'	104 00 0 00 000074 		PBOUT
  2555	002665'	254 00 0 00 002662'		JRST	TYBUF2
  2556
  2557					TCRLF:	TYPE	(
  2558					)
  2559	002670'	263 17 0 00 000000 		$RET
  2560
  2561					; CALL WITH NUMBER IN J2, CLOBBERS J1
  2562	002671'	334 01 0 00 004464'	ONUMO:	SKIPA	J1,[^D8]		; OCTAL OUT
  2563	002672'	201 01 0 00 000012 	NUMO:	MOVEI	J1,^D10			; DECIMAL OUT
  2564	002673'	261 17 0 00 000003 		PUSH	P,J3			; SAVE J3
  2565	002674'	200 03 0 00 000001 		MOVE	J3,J1			; SET RADIX
  2566	002675'	201 01 0 00 000101 		MOVEI	J1,.PRIOU		; SEND TO TTY
  2567	002676'	104 00 0 00 000224 		NOUT				; SEND THE NUMBER
  2568	002677'	255 00 0 00 000000 		  JFCL				; ??
  2569	002700'	262 17 0 00 000003 		POP	P,J3			; RESTORE J3
  2570	002701'	263 17 0 00 000000 		$RET
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 49
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2571					; MONITOR RECEIVED NURD MESSAGES
  2572	002702'	260 17 0 00 003532'	RCVTYP:	$CALL	SAV4J
  2573	002703'	260 17 0 00 003600'		$CALL	SAV4
  2574	002704'	200 10 0 15 000101 		MOVE	D,NRDRCN(R)		; GET BUFFER COUNT
  2575	002705'	200 05 0 15 000100 		MOVE	A,NRDRPT(R)		; GET PTR
  2576						SOJL	D,[	TYPE	(Empty message !!)
  2577	002706'	361 10 0 00 004471'				$CALLR	TCRLF]
  2578	002707'	134 06 0 00 000005 		ILDB	B,A			; GET MSG TYPE
  2579	002710'	301 06 0 00 000006 		CAIL	B,NM.OTR
  2580	002711'	263 17 0 00 000000 		$RET				; ILLEGAL TYPE
  2581	002712'	200 01 0 06 002735'		MOVE	J1,RMONTP(B)		; CHECK IF THIS TYPE MONITORED
  2582	002713'	616 01 0 00 000002'		TDNN	J1,DEBUGR
  2583	002714'	263 17 0 00 000000 		$RET				; NO
  2584	002715'	260 17 0 00 002666'		$CALL	TCRLF
  2585	002716'	200 01 0 06 002743'		MOVE	J1,MSGTYP(B)		; TYPE
  2586						TYPE
  2587						TYPE	(   NURD msg flags: )
  2588						SOJL	D,[	TYPE	(...Insuff data)
  2589	002722'	361 10 0 00 004503'				$CALLR	TCRLF]
  2590	002723'	134 02 0 00 000005 		ILDB	J2,A
  2591	002724'	260 17 0 00 002671'		$CALL	ONUMO
  2592	002725'	260 17 0 00 002666'		$CALL	TCRLF
  2593	002726'	254 00 1 06 002727'		$CALLR	@MTYPER(B)		; DISPATCH TO INDIVIDUAL MSG TYPER
  2594
  2595	002727'	000000	002751'		MTYPER:	TYPDAT			; DATA
  2596	002730'	000000	003066'			TYPATT			; ATTENTION
  2597	002731'	000000	003203'			TYPFTR			; FEATURES
  2598	002732'	000000	003420'			TYPCTL			; CONTROL
  2599	002733'	000000	003065'			TYPALR			; ALERT
  2600	002734'	000000	003065'			TYPCAP			; CAPABILITIES
  2601
  2602			000001		MONDAT==1
  2603			000002		MONATT==2
  2604			000004		MONFTR==4
  2605			000010		MONCTL==10
  2606			000020		MONALR==20
  2607			000040		MONCAP==40
  2608
  2609	002735'	000000	000001		RMONTP:	MONDAT
  2610	002736'	000000	000002			MONATT
  2611	002737'	000000	000004			MONFTR
  2612	002740'	000000	000010			MONCTL
  2613	002741'	000000	000020			MONALR
  2614	002742'	000000	000040			MONCAP
  2615
  2616	002743'	000000	004506'		MSGTYP:	[ASCIZ /Data msg: /]
  2617	002744'	000000	004511'			[ASCIZ /Attention msg: /]
  2618	002745'	000000	004515'			[ASCIZ /Feature msg: /]
  2619	002746'	000000	004520'			[ASCIZ /Control msg: /]
  2620	002747'	000000	004523'			[ASCIZ /Alert msg: /]
  2621	002750'	000000	004526'			[ASCIZ /Capabilities msg: /]
  2622
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 50
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2623					; DATA MESSAGE FORMAT:
  2624					;	<0><MSG FLGS><SEQ. NO.><DATA FLGS><SEG. CNT>[SEGMENTS]
  2625					; SEGMENT FORMENT:
  2626					;	<CNT><... CNT DATA ITEMS ...> OR <200!CNT><DATA ITEM>
  2627					;
  2628					;	A = PTR TO <SEQ NO.>
  2629					;	D = REMAINING BUFFER COUNT
  2630
  2631	002751'	361 10 0 00 003043'	TYPDAT:	SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2632	002752'	260 17 0 00 003047'		$CALL	TYPSEQ			; SEQ NO.
  2633						TYPE	(   Flags: )
  2634	002755'	361 10 0 00 003043'		SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2635	002756'	134 06 0 00 000005 		ILDB	B,A
  2636	002757'	200 07 0 00 004532'		MOVE	C,[-DMFL,,DMFTX]
  2637	002760'	260 17 0 00 003143'		$CALL	TYPAFL			; TYPE THE FLAGS
  2638						TYPE	(   Segment count: )
  2639	002763'	361 10 0 00 003043'		SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2640	002764'	134 07 0 00 000005 		ILDB	C,A			; GET SEG CNT
  2641	002765'	200 02 0 00 000007 		MOVE	J2,C
  2642	002766'	260 17 0 00 002672'		$CALL	NUMO
  2643	002767'	211 07 0 07 000001 		MOVNI	C,1(C)
  2644	002770'	205 07 0 07 000000 		MOVSI	C,(C)			; C = -<CNT+1>,,0
  2645
  2646	002771'	260 17 0 00 002666'	TYPSEG:	$CALL	TCRLF			; END LAST SEQUENCE
  2647	002772'	252 07 0 00 003046'		AOBJP	C,TYPDON		; NO MORE SEGS
  2648						TYPE	(Segment: )
  2649	002775'	550 02 0 00 000007 		HRRZ	J2,C
  2650	002776'	260 17 0 00 002672'		$CALL	NUMO
  2651						TYPE	(   Count: )
  2652	003001'	361 10 0 00 003043'		SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2653	003002'	134 06 0 00 000005 		ILDB	B,A			; GET SEG SIZE
  2654	003003'	200 02 0 00 000006 		MOVE	J2,B
  2655	003004'	260 17 0 00 002672'		$CALL	NUMO
  2656	003005'	260 17 0 00 002666'		$CALL	TCRLF
  2657	003006'	326 06 0 00 003012'		JUMPN	B,TYPSG1
  2658						TYPE	(EOR)
  2659	003011'	254 00 0 00 002771'		JRST TYPSEG
  2660
  2661	003012'	626 06 0 00 000200 	TYPSG1:	TXZN	B,200			; CHECK FOR COMPRESSED
  2662	003013'	254 00 0 00 003030'		JRST	TYPSG2
  2663						TYPE	(Compressed segment: )
  2664	003016'	200 02 0 00 000006 		MOVE	J2,B
  2665	003017'	260 17 0 00 002672'		$CALL	NUMO
  2666	003020'	201 01 0 00 000074 		MOVEI	J1,"<"
  2667	003021'	104 00 0 00 000074 		PBOUT
  2668	003022'	602 13 0 00 000030 		TXNE	LS,NRD.IM!NRD.AI
  2669	003023'	361 10 0 00 003043'		SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2670	003024'	260 17 0 00 003053'		$CALL	TYPITM
  2671	003025'	201 01 0 00 000076 		MOVEI	J1,">"
  2672	003026'	104 00 0 00 000074 		PBOUT
  2673	003027'	254 00 0 00 002771'		JRST	TYPSEG
  2674
  2675	003030'	361 06 0 00 002771'	TYPSG2:	SOJL	B,TYPSEG		; UNCOMPRESSED
  2676	003031'	361 10 0 00 003043'	TYPSG3:	SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2677	003032'	602 13 0 00 000030 		TXNE	LS,NRD.IM!NRD.AI
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 50-1
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2678	003033'	361 10 0 00 003043'		SOJL	D,TYPDXR		; NOT ENOUGH FOR NEXT BYTE
  2679	003034'	260 17 0 00 003053'		$CALL	TYPITM
  2680	003035'	361 06 0 00 002771'		SOJL	B,TYPSEG
  2681	003036'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI
  2682	003037'	254 00 0 00 003031'		JRST	TYPSG3
  2683	003040'	201 01 0 00 000054 		MOVEI	J1,","			; SEPARATE IMAGE ITEMS BY COMMAS
  2684	003041'	104 00 0 00 000074 		PBOUT
  2685	003042'	254 00 0 00 003031'		JRST	TYPSG3
  2686
  2687	003043'				TYPDXR:	TYPE	(...Insuff data)
  2688	003045'	260 17 0 00 002666'		$CALL	TCRLF
  2689	003046'	263 17 0 00 000000 	TYPDON:	$RET
  2690
  2691	003047'				TYPSEQ:	TYPE	(Sequence: )
  2692	003051'	134 02 0 00 000005 		ILDB	J2,A
  2693	003052'	254 00 0 00 002672'		$CALLR	NUMO
  2694
  2695	003053'	134 01 0 00 000005 	TYPITM:	ILDB	J1,A			; TYPE A DATA ITEM
  2696	003054'	606 13 0 00 000030 		TXNN	LS,NRD.IM!NRD.AI	; CHECK TWO BYTES
  2697						JRST	[	PBOUT			; ASCII
  2698	003055'	254 00 0 00 004555'				$RET]			; ...
  2699	003056'	134 02 0 00 000005 		ILDB	J2,A			; IMAGE MODE
  2700	003057'	137 02 0 00 004243'		DPB	J2,[POINT 8,J1,27]
  2701	003060'	200 02 0 00 000001 		MOVE	J2,J1
  2702	003061'	254 00 0 00 002671'		$CALLR	ONUMO
  2703
  2704
  2705					DEFINE	DATXT (FLAG,TEXT) <
  2706						ND.'FLAG,,[ASCIZ /'TEXT'/]
  2707					>
  2708	003062'	000001	004557'		DMFTX:	DATXT	ACK,Acknowledge
  2709	003063'	000002	004562'			DATXT	IER,Input-error
  2710	003064'	000004	004565'			DATXT	EOF,EOF
  2711			000003		DMFL==.-DMFTX
  2712
  2713	003065'				TYPALR:
  2714	003065'	254 00 0 00 002666'	TYPCAP:	JRST	TCRLF
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 51
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2715					; ATTENTION MSG FORMAT:
  2716					;   <NM.ATT><NURD FLGS><LAST SEQ NO.><ATT. REASON CODE><DEVSTS 1-3><PAGE CNT 2>
  2717					;
  2718					;	A = PTR TO <LAST SEQ NO.>
  2719					;	D = REMAINING BYTES IN BUFFER
  2720
  2721	003066'	361 10 0 00 003043'	TYPATT:	SOJL	D,TYPDXR
  2722	003067'	260 17 0 00 003047'		$CALL	TYPSEQ			; SEQ NO.
  2723						TYPE	(   Reason: )
  2724	003072'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2725	003073'	134 06 0 00 000005 		ILDB	B,A			; GET REASON
  2726	003074'	307 06 0 00 000005 		CAIG	B,N.APLE
  2727	003075'	334 01 0 06 003153'		SKIPA	J1,RESNCD(B)		; EXPLAIN WHY
  2728	003076'	201 01 0 00 004571'		MOVEI	J1,[ASCIZ /Apparently just for kicks/]
  2729						TYPE
  2730	003100'	260 17 0 00 002666'		$CALL	TCRLF			; BEGIN FLAGS ON NEW LINE
  2731						TYPE	(Flags: )
  2732	003103'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2733	003104'	134 06 0 00 000005 		ILDB	B,A			; GET FLAGS
  2734	003105'	200 07 0 00 004601'		MOVE	C,[-BYT1L,,BYT1TB]
  2735	003106'	260 17 0 00 003143'		$CALL	TYPAFL
  2736	003107'	606 06 0 00 000200 		TXNN	B,200			; CHECK EXTENSION
  2737	003110'	254 00 0 00 003131'		JRST	TYPAPG
  2738	003111'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2739	003112'	134 06 0 00 000005 		ILDB	B,A
  2740	003113'	200 07 0 00 004602'		MOVE	C,[-BYT2L,,BYT2TB]
  2741	003114'	260 17 0 00 003143'		$CALL	TYPAFL
  2742					; DEVICE SPECIFIC FLAGS
  2743	003115'	606 13 0 00 000004 		TXNN	LS,NRD.LP
  2744	003116'	334 07 0 00 004603'		SKIPA	C,[-CBYT2L,,CBYT2T]
  2745	003117'	200 07 0 00 004604'		MOVE	C,[-LBYT2L,,LBYT2T]
  2746	003120'	260 17 0 00 003143'		$CALL	TYPAFL
  2747	003121'	606 06 0 00 000200 		TXNN	B,200			; CHECK FOR THIRD BYTE
  2748	003122'	254 00 0 00 003131'		JRST	TYPAPG
  2749	003123'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2750	003124'	134 06 0 00 000005 		ILDB	B,A
  2751	003125'	606 13 0 00 000004 		TXNN	LS,NRD.LP
  2752	003126'	334 07 0 00 004605'		SKIPA	C,[-CBYT3L,,CBYT3T]
  2753	003127'	200 07 0 00 004606'		MOVE	C,[-LBYT3L,,LBYT3T]
  2754	003130'	260 17 0 00 003143'		$CALL	TYPAFL
  2755
  2756	003131'	260 17 0 00 002666'	TYPAPG:	$CALL	TCRLF			; PAGE COUNT ON NEW LINE
  2757						TYPE	(Page count: )
  2758	003134'	370 00 0 00 000010 		SOS	D
  2759	003135'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2760	003136'	134 02 0 00 000005 		ILDB	J2,A
  2761	003137'	134 01 0 00 000005 		ILDB	J1,A
  2762	003140'	137 01 0 00 004612'		DPB	J1,[POINT 8,J2,27]
  2763	003141'	260 17 0 00 002672'		$CALL	NUMO
  2764	003142'	254 00 0 00 002666'		$CALLR	TCRLF
  2765
  2766	003143'	617 06 0 07 000000 	TYPAFL:	TSNN	B,(C)			; CHECK FOR BIT SET
  2767	003144'	254 00 0 00 003151'		JRST	TYPAFX			;   B = FLAGS, C = TABLE
  2768	003145'	550 01 0 07 000000 		HRRZ	J1,(C)			; YES - GET TEXT
  2769						TYPE
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 51-1
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2770	003147'	201 01 0 00 000040 		MOVEI	J1," "
  2771	003150'	104 00 0 00 000074 		PBOUT
  2772	003151'	253 07 0 00 003143'	TYPAFX:	AOBJN	C,TYPAFL
  2773	003152'	263 17 0 00 000000 		$RET
  2774
  2775	003153'	000000	004613'		RESNCD:	[ASCIZ /No reason at all, really/] ; RESERVED
  2776	003154'	000000	004620'			[ASCIZ /Device status change/]
  2777	003155'	000000	004625'			[ASCIZ /Data acknowledgement/]
  2778	003156'	000000	004632'			[ASCIZ /Requested/]
  2779	003157'	000000	004634'			[ASCIZ /Abort received/]
  2780	003160'	000000	004637'			[ASCIZ /Page limit exceeded/]
  2781
  2782					DEFINE	ATTXT (FLAG,TEXT) <
  2783						NA.'FLAG,,[ASCIZ /'TEXT'/]
  2784					>
  2785	003161'	000001	004643'		BYT1TB:	ATTXT	FAT,Fatal
  2786	003162'	000002	004645'			ATTXT	OFL,Offline
  2787	003163'	000004	004647'			ATTXT	PAU,Paused
  2788	003164'	000010	004651'			ATTXT	OMD,Out-of-media
  2789	003165'	000020	004654'			ATTXT	JAM,Jam
  2790	003166'	000040	004655'			ATTXT	OOF,Opr-offline
  2791	003167'	000100	004660'			ATTXT	NOE,Non-opr-error
  2792			000007		BYT1L==.-BYT1TB
  2793
  2794	003170'	000001	004663'		BYT2TB:	ATTXT	OUF,Output-full
  2795	003171'	000002	004666'			ATTXT	NAC,Device-not-accessible
  2796	003172'	000004	004673'			ATTXT	DTO,Device-timeout
  2797	003173'	000010	004676'			ATTXT	RNA,Resource-not-avail
  2798			000004		BYT2L==.-BYT2TB
  2799
  2800	003174'	000020	004702'		LBYT2T:	ATTXT	PSE,Paper-slew
  2801	003175'	000040	004705'			ATTXT	INK,Ink
  2802			000002		LBYT2L==.-LBYT2T
  2803
  2804	003176'	000001	004706'		LBYT3T:	ATTXT	OVP,Overprint
  2805			000001		LBYT3L==.-LBYT3T
  2806
  2807	003177'	000020	004710'		CBYT2T:	ATTXT	PF,Pick-fail
  2808	003200'	000040	004712'			ATTXT	RAP,Read-after-punch-error
  2809	003201'	000100	004717'			ATTXT	REG,Registration-error
  2810			000003		CBYT2L==.-CBYT2T
  2811
  2812	003202'	000001	004723'		CBYT3T:	ATTXT	IVP,Invalid-punch
  2813			000001		CBYT3L==.-CBYT3T
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 52
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2814					; FEATURES MESSAGE FORMAT:
  2815					;	<NM.FTR><NURD FLAGS><SEQ NO.><NO. FEATURE SPECS>[...<FEATURE SPEC>...]
  2816					;
  2817					;   FEATURE SPEC FORMAT:
  2818					;	<FEATURE ID><FLAGS><CLASS><RESPONSE>[<VALUE>]
  2819					;	VALUE FORMAT:
  2820					;	CLASS 0:	<VALUE>			(LSB)
  2821					;	CLASS 1:	<CNT><CNT BYTES>	(LEAST SIGNIFICANT BYTE 1ST)
  2822					;
  2823					;	A = PTR  TO <SEQ NO.>
  2824					;	D = REMAINING BYTES IN BUFFER
  2825
  2826	003203'	361 10 0 00 003043'	TYPFTR:	SOJL	D,TYPDXR
  2827	003204'	260 17 0 00 003047'		$CALL	TYPSEQ			; SEQ NO.
  2828						TYPE	(   No. feature specs: )
  2829	003207'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2830	003210'	134 07 0 00 000005 		ILDB	C,A			; GET NO. SPECS
  2831	003211'	200 02 0 00 000007 		MOVE	J2,C
  2832	003212'	260 17 0 00 002672'	TYPFT0:	$CALL	NUMO
  2833	003213'	260 17 0 00 002666'	TYPFT1:	$CALL	TCRLF			; FEATURE SPEC LOOP
  2834	003214'	361 07 0 00 002162'		SOJL	C,CPOPJ
  2835						TYPE	(Feature ID: )
  2836	003217'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2837	003220'	134 06 0 00 000005 		ILDB	B,A			; GET FID
  2838	003221'	200 03 0 00 004736'		MOVE	J3,[-TCMNL,,TCMNF]
  2839	003222'	554 04 0 03 000000 	TYPFT2:	HLRZ	J4,(J3)
  2840	003223'	316 06 0 00 000004 		CAMN	B,J4
  2841	003224'	254 00 0 00 003236'		JRST	TYPFID
  2842	003225'	253 03 0 00 003222'		AOBJN	J3,TYPFT2
  2843	003226'	606 13 0 00 000004 		TXNN	LS,NRD.LP		; CHECK DEVICE SPECIFIC FID'S
  2844	003227'	334 03 0 00 004737'		SKIPA	J3,[-TCDRL,,TCDRF]
  2845	003230'	200 03 0 00 004740'		MOVE	J3,[-TLPTL,,TLPTF]
  2846	003231'	554 04 0 03 000000 	TYPFT3:	HLRZ	J4,(J3)
  2847	003232'	316 06 0 00 000004 		CAMN	B,J4
  2848	003233'	254 00 0 00 003236'		JRST	TYPFID
  2849	003234'	253 03 0 00 003231'		AOBJN	J3,TYPFT3
  2850	003235'	201 03 0 00 004746'		MOVEI	J3,[0,,[[ASCIZ /Mystery feature/],,0]]
  2851	003236'	550 03 0 03 000000 	TYPFID:	HRRZ	J3,(J3)
  2852	003237'	554 01 0 03 000000 		HLRZ	J1,(J3)			; GET FEATURE NAME
  2853						TYPE
  2854						TYPE	(   Flags: )
  2855	003243'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2856	003244'	134 06 0 00 000005 		ILDB	B,A
  2857	003245'	606 06 0 00 000001 		TXNN	B,NF.CMD
  2858	003246'	334 01 0 00 004750'		SKIPA	J1,[[ASCIZ /READ/]]
  2859	003247'	201 01 0 00 004751'		MOVEI	J1,[ASCIZ /SET/]
  2860						TYPE
  2861	003251'	201 01 0 00 004752'		MOVEI	J1,[ASCIZ / STD/]
  2862	003252'	602 06 0 00 000002 		TXNE	B,NF.STD
  2863						TYPE
  2864						TYPE	(   Class: )
  2865	003256'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2866	003257'	134 06 0 00 000005 		ILDB	B,A
  2867	003260'	303 06 0 00 000001 		CAILE	B,FC.CL1
  2868	003261'	254 00 0 00 003265'		JRST	TYPFC2
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 52-1
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2869	003262'	200 02 0 00 000006 		MOVE	J2,B
  2870	003263'	260 17 0 00 002672'		$CALL	NUMO
  2871	003264'	254 00 0 00 003271'		JRST	TYPFRS
  2872
  2873	003265'	302 06 0 00 000002 	TYPFC2:	CAIE	B,FC.SST
  2874	003266'	334 01 0 00 004762'		SKIPA	J1,[[ASCIZ /No class at all/]]
  2875	003267'	201 01 0 00 004763'		MOVEI	J1,[ASCIZ /Set-to-std/]
  2876						TYPE
  2877
  2878	003271'	200 04 0 00 000006 	TYPFRS:	MOVE	J4,B			; SAVE CLASS FOR VALUE
  2879						TYPE	(   Response: )
  2880	003274'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2881	003275'	134 06 0 00 000005 		ILDB	B,A
  2882	003276'	303 06 0 00 000010 		CAILE	B,TRSPL
  2883	003277'	201 06 0 00 000010 		MOVEI	B,TRSPL
  2884	003300'	200 01 0 06 003410'		MOVE	J1,TRSPT(B)
  2885						TYPE
  2886	003302'	326 06 0 00 003213'		JUMPN	B,TYPFT1		; NO VALUE IF ERROR RESPONSE
  2887	003303'	303 04 0 00 000001 		CAILE	J4,FC.CL1
  2888	003304'	254 00 0 00 003213'		JRST	TYPFT1			; SET TO STD=> NO VALUE
  2889						TYPE	(   Value: )
  2890	003307'	302 04 0 00 000000 		CAIE	J4,FC.CL0
  2891	003310'	254 00 0 00 003320'		JRST	TYPVC1
  2892	003311'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2893	003312'	134 01 0 00 000005 		ILDB	J1,A
  2894	003313'	606 01 0 00 000001 		TXNN	J1,1			; 1 BIT VALUE
  2895	003314'	334 01 0 00 004775'		SKIPA	J1,[[ASCIZ /OFF/]]
  2896	003315'	201 01 0 00 004776'		MOVEI	J1,[ASCIZ /ON/]
  2897						TYPE
  2898	003317'	254 00 0 00 003213'		JRST	TYPFT1
  2899
  2900	003320'	361 10 0 00 003043'	TYPVC1:	SOJL	D,TYPDXR		; TYPE CLASS 1 VALUE,
  2901										;   J3->[[NAME],,VALUE TABLE]
  2902	003321'	134 06 0 00 000005 		ILDB	B,A			; GET FIELD SIZE
  2903	003322'	322 06 0 00 003213'		JUMPE	B,TYPFT1		; NULL VALUE ??
  2904	003323'	361 10 0 00 003043'		SOJL	D,TYPDXR
  2905	003324'	134 02 0 00 000005 		ILDB	J2,A			; LOW ORDER BYTE
  2906	003325'	362 06 0 00 003332'		SOJE	B,TYPVLW		; 1 BYTE
  2907						SOJG	B,[	AOS	B		; STRING
  2908								MOVE	J1,J2
  2909							TYPST:	PBOUT			; TYPE AS ASCII
  2910								SOJL	B,TYPFT1	; STRING DONE
  2911								SOJL	D,TYPDXR
  2912								ILDB	J1,A
  2913	003326'	367 06 0 00 004777'				JRST	TYPST]
  2914	003327'	361 10 0 00 003043'		SOJL	D,TYPDXR		; ASSUME 16 BIT NUM
  2915	003330'	134 04 0 00 000005 		ILDB	J4,A
  2916	003331'	137 04 0 00 004612'		DPB	J4,[POINT 8,J2,27]
  2917
  2918	003332'	550 03 0 03 000000 	TYPVLW:	HRRZ	J3,(J3)			; TYPE BYTE/WORD VALUE,
  2919										;   J3->[[NAME],,VALUE TABLE]
  2920	003333'	322 03 0 00 003212'		JUMPE	J3,TYPFT0		; NO INTERPRETATION - TYPE NUMBER
  2921
  2922	003334'	336 04 0 03 000000 	TPVLW1:	SKIPN	J4,(J3)			; SEARCH VALUE TABLE
  2923	003335'	254 00 0 00 003212'		JRST	TYPFT0			; UNKNOWN VALUE - TYPE NUMERIC
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 52-2
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2924	003336'	557 00 0 00 000004 		HLRZS	J4
  2925	003337'	312 04 0 00 000002 		CAME	J4,J2
  2926	003340'	344 03 0 00 003334'		AOJA	J3,TPVLW1
  2927	003341'	550 01 0 03 000000 		HRRZ	J1,(J3)			; GET STR PTR
  2928						TYPE
  2929	003343'	254 00 0 00 003213'		JRST	TYPFT1
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 53
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2930					DEFINE	FENAM (FTR,TEXT,VALTBL) <
  2931						FTR,,[[ASCIZ /'TEXT'/],,VALTBL]
  2932					>
  2933	003344'	000000	005010'		TCMNF:	FENAM 0,<Reserved>		; RESERVED FOR FUTURE ESCAPE CODE
  2934	003345'	000001	005013'			FENAM FE.DAT,<Data mode>,DATVL	; (CLASS 1)
  2935					;	   DM.ASC==		1	; 7 BIT ASCII
  2936					;	   DM.CLI==		2	; COLUMNIMAGE
  2937					;	   DM.EBC==		3	; EBCDIC
  2938					;	   DM.AUG==		4	; AUGMENTED COLUMNIMAGE
  2939					;	   DM.AS8==		5	; 8 BIT ASCII
  2940	003346'	000002	005017'			FENAM FE.SER,<Serial number>	; (CLASS 1)
  2941	003347'	000003	005024'			FENAM FE.LCR,<Lower case raise>	; (CLASS 0)
  2942	003350'	000004	005030'			FENAM FE.FWD,<Form width>	; (CLASS 1)
  2943	003351'	000005	005035'			FENAM FE.EOF,<EOF recognition>,EOFVL	; (CLASS 1)
  2944					;	   EO.ASC==		1	; ASCII
  2945					;		EOFASC==		7417	; ASCII EOF (COLUMN 1) PUNCH
  2946					;	   EO.IMG==		2	; IMAGE
  2947	003352'	000006	005041'			FENAM FE.DVT,<Device type>	; (CLASS 1)
  2948	003353'	000007	005046'			FENAM FE.TRN,<Record truncation>; (CLASS 0)
  2949	003354'	000010	005051'			FENAM FE.FNM,<Form name>	; (CLASS 1)
  2950	003355'	000011	005055'			FENAM FE.DWD,<Device width>	; (CLASS 1)
  2951	003356'	000377	005057'			FENAM FE.ALL,<All>
  2952			000013		TCMNL==.-TCMNF
  2953
  2954					DEFINE	FEVAL (VAL,TEXT) <
  2955						VAL,,[ASCIZ \'TEXT'\]
  2956					>
  2957	003357'	000001	005060'		DATVL:	FEVAL	DM.ASC,<ASCII>
  2958	003360'	000002	005062'			FEVAL	DM.CLI,<Column-image>
  2959	003361'	000003	005065'			FEVAL	DM.EBC,<EBCDIC>
  2960	003362'	000004	005067'			FEVAL	DM.AUG,<Augmented-column-image>
  2961	003363'	000005	005074'			FEVAL	DM.AS8,<ASCII(8)>
  2962	003364'	000000	000000			0				; TABLE TERMINATOR
  2963	003365'	000001	005060'		EOFVL:	FEVAL	EO.ASC,<ASCII>
  2964	003366'	000002	005076'			FEVAL	EO.IMG,<Image>
  2965	003367'	000000	000000			0				; TABLE TERMINATOR
  2966
  2967	003370'	000202	005104'		TLPTF:	FENAM LP.HT,<Horizontal tab stop>	; (CLASS 1)
  2968	003371'	000203	005113'			FENAM LP.SFC,<Std vertical forms control>	; (CLASS 0)
  2969	003372'	000204	005120'			FENAM LP.OVP,<Overprint limit>	; (CLASS 1)
  2970	003373'	000205	005124'			FENAM LP.CVF,<Custom VFU>	; (CLASS 1)
  2971	003374'	000206	005132'			FENAM LP.FCC,<FORTRAN carriage control>	; (CLASS 0)
  2972	003375'	000207	005140'			FENAM LP.VFR,<Variable forms ratio>,VFRVL	; (CLASS 1)
  2973					;	   VF.6LI==		1	; 6 LINES PER INCH
  2974					;	   VF.8LI==		2	; 8 LINES PER INCH
  2975	003376'	000210	005144'			FENAM LP.CHS,<Character set>,CHSVL	; (CLASS 1)
  2976					;	   CH.64==		1	; 64 CHARACTER SET
  2977					;	   CH.96==		2	; 96 CHARACTER SET
  2978	003377'	000211	005152'			FENAM LP.PLE,<Page limit enforcement>	; (CLASS 1)
  2979	003400'	000212	005157'			FENAM LP.OPV,<Optical VFU name>	; (CLASS 1)
  2980			000011		TLPTL==.-TLPTF
  2981
  2982	003401'	000001	005160'		VFRVL:	FEVAL	VF.6LI,<6 lpi>
  2983	003402'	000002	005162'			FEVAL	VF.8LI,<8 lpi>
  2984	003403'	000000	000000			0				; TABLE TERMINATOR
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 53-1
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  2985
  2986	003404'	000001	005164'		CHSVL:	FEVAL	CH.64,<64 char set>
  2987	003405'	000002	005167'			FEVAL	CH.96,<96 char set>
  2988	003406'	000000	000000			0				; TABLE TERMINATOR
  2989
  2990	003407'	000202	005175'		TCDRF:	FENAM CD.CWD,<Card width>	; (CLASS 1)
  2991			000001		TCDRL==.-TCDRF
  2992
  2993	003410'	000000	005176'		TRSPT:	[ASCIZ /0/]
  2994	003411'	000000	005177'			[ASCIZ /Unsupported feature/]
  2995	003412'	000000	005203'			[ASCIZ /Bad class specified/]
  2996	003413'	000000	005207'			[ASCIZ /No standard value/]
  2997	003414'	000000	005213'			[ASCIZ /Data or format error/]
  2998	003415'	000000	005220'			[ASCIZ /Change pending/]
  2999	003416'	000000	005223'			[ASCIZ /Insufficient buffer space to send this message !!/]
  3000	003417'	000000	005235'			[ASCIZ /Device not paused/]
  3001			000010		TRSPL==.-TRSPT
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 54
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  3002					; CONTROL MESSAGE FORMAT:
  3003					;	<NM.CTL><NURD FLAGS><SEQ NO.><COMMAND><RESPONSE>
  3004					;
  3005					;	A = PTR TO <SEQ NO.>
  3006					;	D = REMAINING BYTES IN BUFFER
  3007
  3008	003420'	361 10 0 00 003043'	TYPCTL:	SOJL	D,TYPDXR
  3009	003421'	260 17 0 00 003047'		$CALL	TYPSEQ			; SEQUENCE NO.
  3010						TYPE	(   Command: )
  3011	003424'	361 10 0 00 003043'		SOJL	D,TYPDXR
  3012	003425'	134 06 0 00 000005 		ILDB	B,A			; GET COMMAND
  3013	003426'	303 06 0 00 000010 		CAILE	B,NC.RQC
  3014	003427'	201 06 0 00 003456'		MOVEI	B,ILCMD
  3015	003430'	200 01 0 06 003446'		MOVE	J1,TYPCTB(B)		; GET TEXT
  3016						TYPE
  3017						TYPE	(   Response: )
  3018	003434'	361 10 0 00 003043'		SOJL	D,TYPDXR
  3019	003435'	134 07 0 00 000005 		ILDB	C,A			; GET RESPONSE CODE
  3020	003436'	137 06 0 00 005244'		DPB	B,[POINT 8,C,27]	; MAKE COM.RES CODE
  3021	003437'	200 06 0 00 005245'		MOVE	B,[-CRESL,,CRESTB]
  3022
  3023	003440'	554 01 0 06 000000 	TYPCT1:	HLRZ	J1,(B)
  3024	003441'	312 01 0 00 000007 		CAME	J1,C
  3025	003442'	253 06 0 00 003440'		AOBJN	B,TYPCT1
  3026	003443'	550 01 0 06 000000 		HRRZ	J1,(B)
  3027						TYPE
  3028	003445'	254 00 0 00 002666'		$CALLR	TCRLF
  3029
  3030	003446'	000000	005246'		TYPCTB:	[ASCIZ /Undefined command(0)/]
  3031	003447'	000000	005253'			[ASCIZ /Abort til EOF/]
  3032	003450'	000000	005256'			[ASCIZ /Abort til clear/]
  3033	003451'	000000	005262'			[ASCIZ /Clear abort/]
  3034	003452'	000000	005265'			[ASCIZ /Request status/]
  3035	003453'	000000	005270'			[ASCIZ /Dump output buffers/]
  3036	003454'	000000	005274'			[ASCIZ /Pause/]
  3037	003455'	000000	005276'			[ASCIZ /Resume/]
  3038	003456'	000000	005300'		ILCMD:	[ASCIZ /Undefined command/]
  3039	003457'	000000	005304'			[ASCIZ /Request capabilities/]
  3040
  3041					DEFINE	CTXT (COM,RES,TEXT) <
  3042						<NC.'COM>B27!<NR.'RES>B35,,[ASCIZ /'TEXT'/]
  3043					>
  3044	003460'	000400	005311'		CRESTB:	CTXT	AUE,ABS,<Abort state>
  3045	003461'	000401	005314'			CTXT	AUE,NAB,<Nothing to abort>
  3046	003462'	000402	005320'			CTXT	AUE,NOE,<No EOF defined!>
  3047	003463'	001000	005311'			CTXT	AUC,ABS,<Abort state>
  3048	003464'	001001	005314'			CTXT	AUC,NAB,<Nothing to abort>
  3049	003465'	001400	005324'			CTXT	CAB,ACC,<Abort cleared>
  3050	003466'	001401	005327'			CTXT	CAB,ACN,<Abort not set>
  3051	003467'	002000	005332'			CTXT	RQS,ATT,<Attention message follows>
  3052	003470'	002400	005340'			CTXT	DMP,DMP,<Dumping>
  3053	003471'	002401	005342'			CTXT	DMP,NOB,<No output buffered>
  3054	003472'	003000	005346'			CTXT	PAU,DPS,<Device will pause>
  3055	003473'	003001	005352'			CTXT	PAU,PAU,<Device already paused>
  3056	003474'	003002	005357'			CTXT	PAU,NDP,<No data transfer to pause>
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 54-1
NURD	MAC	21-Mar-80 10:15		Debug Typeout Routines

  3057	003475'	003400	005365'			CTXT	RES,RES,<Device will resume>
  3058	003476'	003401	005235'			CTXT	RES,NPS,<Device not paused>
  3059	003477'	003402	005371'			CTXT	RES,NDR,<No data xfer to resume>
  3060	003500'	004000	005376'			CTXT	RQC,CAP,<Capabilities message follows>
  3061			000021		CRESL==.-CRESTB
  3062	003501'	000000	005404'			[ASCIZ /Undefined response code/]
  3063
  3064
  3065					IFNDEF	DEBUG,<LSTON.> ;   INTERESTING TO LOOK AT, SO XLIST THEM
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 55
NURD	MAC	21-Mar-80 10:15		AC Save Coroutines

  3066					SUBTTL	AC Save Coroutines
  3067
  3068					; These routines (SAVxx) act as co-routines to the routines which
  3069					; call them, thus no corresponding "restore" routines are needed.
  3070					; When the calling routine returns to its caller, it returns via
  3071					; the appropriate restore routine, automatically.
  3072
  3073	003502'	250 01 0 17 000000 	SAV1J:	EXCH	J1,(P)			; SAVE J1 GET CALLERS ADDRESS
  3074	003503'	261 17 0 00 003506'		PUSH	P,.+3			; SAVE RETURN ADDRESS FOR CALLER
  3075	003504'	505 01 0 17 777777 		HRLI	J1,-1(P)		; MAKE IT LOOK LIKE RESULT OF JSA
  3076	003505'	267 01 0 01 000000 		JRA	J1,(J1)			; CALL THE CALLER
  3077	003506'	304 00 0 00 003506'		  CAIA	.			; NON-SKIP RETURN
  3078	003507'	350 00 0 17 777777 		AOS	-1(P)			; SKIP RETURN
  3079	003510'	254 00 0 00 003546'		JRST	RES1J			; RESTORE J1
  3080
  3081	003511'	250 01 0 17 000000 	SAV2J:	EXCH	J1,(P)			; SAVE J1 GET CALLERS ADDRESS
  3082	003512'	261 17 0 00 000002 		PUSH	P,J2			; SAVE J2
  3083	003513'	261 17 0 00 003516'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3084	003514'	505 01 0 17 777776 		HRLI	J1,-2(P)		; SETUP FOR THE JRA
  3085	003515'	267 01 0 01 000000 		JRA	J1,(J1)			; CALL THE CALLER
  3086	003516'	304 00 0 00 003516'		  CAIA	.			; NON-SKIP RETURN
  3087	003517'	350 00 0 17 777776 		AOS	-2(P)			; SKIP RETURN
  3088	003520'	254 00 0 00 003545'		JRST	RES2J			; RESTORE J2,J1
  3089
  3090	003521'	250 01 0 17 000000 	SAV3J:	EXCH	J1,(P)			; SAVE J1 GET RETURN ADDRESS
  3091	003522'	261 17 0 00 000002 		PUSH	P,J2			; SAVE J2
  3092	003523'	261 17 0 00 000003 		PUSH	P,J3			; SAVE J3
  3093	003524'	261 17 0 00 003527'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3094	003525'	505 01 0 17 777775 		HRLI	J1,-3(P)		; SETUP FOR JRA
  3095	003526'	267 01 0 01 000000 		JRA	J1,(J1)			; AND CALL THE CALLER
  3096	003527'	304 00 0 00 003527'		  CAIA	.			; NON-SKIP
  3097	003530'	350 00 0 17 777775 		AOS	-3(P)			; SKIP RETURN
  3098	003531'	254 00 0 00 003544'		JRST	RES3J			; AND RESTORE J3,J2,J1
  3099
  3100	003532'	250 01 0 17 000000 	SAV4J:	EXCH	J1,(P)			; SAVE J1 GET RETURN ADDRESS
  3101	003533'	261 17 0 00 000002 		PUSH	P,J2			; SAVE J2
  3102	003534'	261 17 0 00 000003 		PUSH	P,J3			; SAVE J3
  3103	003535'	261 17 0 00 000004 		PUSH	P,J4			; SAVE J4
  3104	003536'	261 17 0 00 003541'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3105	003537'	505 01 0 17 777774 		HRLI	J1,-4(P)		; SETUP FOR RETURN
  3106	003540'	267 01 0 01 000000 		JRA	J1,(J1)			; AND RETURN
  3107	003541'	304 00 0 00 003541'		  CAIA	.			; NON-SKIP RETURN
  3108	003542'	350 00 0 17 777774 		AOS	-4(P)			; SKIP RETURN
  3109
  3110	003543'	262 17 0 00 000004 		POP	P,J4			; RESTORE J4
  3111	003544'	262 17 0 00 000003 	RES3J:	POP	P,J3			; RESTORE J3
  3112	003545'	262 17 0 00 000002 	RES2J:	POP	P,J2			; RESTORE J2
  3113	003546'	262 17 0 00 000001 	RES1J:	POP	P,J1			; RESTORE J1
  3114	003547'	263 17 0 00 000000 		$RET				; AND RETURN
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page 56
NURD	MAC	21-Mar-80 10:15		AC Save Coroutines

  3115	003550'	250 05 0 17 000000 	SAV1:	EXCH	A,(P)			; SAVE A GET CALLERS ADDRESS
  3116	003551'	261 17 0 00 003554'		PUSH	P,.+3			; SAVE RETURN ADDRESS FOR CALLER
  3117	003552'	505 05 0 17 777777 		HRLI	A,-1(P)			; MAKE IT LOOK LIKE RESULT OF JSA
  3118	003553'	267 05 0 05 000000 		JRA	A,(A)			; CALL THE CALLER
  3119	003554'	304 00 0 00 003554'		  CAIA	.			; NON-SKIP RETURN
  3120	003555'	350 00 0 17 777777 		AOS	-1(P)			; SKIP RETURN
  3121	003556'	254 00 0 00 003614'		JRST	RES1			; RESTORE A
  3122
  3123	003557'	250 05 0 17 000000 	SAV2:	EXCH	A,(P)			; SAVE A GET CALLERS ADDRESS
  3124	003560'	261 17 0 00 000006 		PUSH	P,B			; SAVE B
  3125	003561'	261 17 0 00 003564'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3126	003562'	505 05 0 17 777776 		HRLI	A,-2(P)			; SETUP FOR THE JRA
  3127	003563'	267 05 0 05 000000 		JRA	A,(A)			; CALL THE CALLER
  3128	003564'	304 00 0 00 003564'		  CAIA	.			; NON-SKIP RETURN
  3129	003565'	350 00 0 17 777776 		AOS	-2(P)			; SKIP RETURN
  3130	003566'	254 00 0 00 003613'		JRST	RES2			; RESTORE B,A
  3131
  3132	003567'	250 05 0 17 000000 	SAV3:	EXCH	A,(P)			; SAVE A GET RETURN ADDRESS
  3133	003570'	261 17 0 00 000006 		PUSH	P,B			; SAVE B
  3134	003571'	261 17 0 00 000007 		PUSH	P,C			; SAVE C
  3135	003572'	261 17 0 00 003575'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3136	003573'	505 05 0 17 777775 		HRLI	A,-3(P)			; SETUP FOR JRA
  3137	003574'	267 05 0 05 000000 		JRA	A,(A)			; AND CALL THE CALLER
  3138	003575'	304 00 0 00 003575'		  CAIA	.			; NON-SKIP
  3139	003576'	350 00 0 17 777775 		AOS	-3(P)			; SKIP RETURN
  3140	003577'	254 00 0 00 003612'		JRST	RES3			; AND RESTORE C,B,A
  3141
  3142	003600'	250 05 0 17 000000 	SAV4:	EXCH	A,(P)			; SAVE A GET RETURN ADDRESS
  3143	003601'	261 17 0 00 000006 		PUSH	P,B			; SAVE B
  3144	003602'	261 17 0 00 000007 		PUSH	P,C			; SAVE C
  3145	003603'	261 17 0 00 000010 		PUSH	P,D			; SAVE D
  3146	003604'	261 17 0 00 003607'		PUSH	P,.+3			; SAVE RETURN ADDRESS
  3147	003605'	505 05 0 17 777774 		HRLI	A,-4(P)			; SETUP FOR RETURN
  3148	003606'	267 05 0 05 000000 		JRA	A,(A)			; AND RETURN
  3149	003607'	304 00 0 00 003607'		  CAIA	.			; NON-SKIP RETURN
  3150	003610'	350 00 0 17 777774 		AOS	-4(P)			; SKIP RETURN
  3151
  3152	003611'	262 17 0 00 000010 		POP	P,D			; RESTORE D
  3153	003612'	262 17 0 00 000007 	RES3:	POP	P,C			; RESTORE C
  3154	003613'	262 17 0 00 000006 	RES2:	POP	P,B			; RESTORE B
  3155	003614'	262 17 0 00 000005 	RES1:	POP	P,A			; RESTORE A
  3156	003615'	263 17 0 00 000000 		$RET				; AND RETURN
  3157
  3158						END

NO ERRORS DETECTED

PROGRAM BREAK IS 005411
ABSOLUTE BREAK IS 000565
CPU TIME USED 00:37.227

95P CORE USED
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page S-1
NURD	MAC	21-Mar-80 10:15		SYMBOL TABLE

A		000005		DEBRK	104000	000136	int	FR.NEB		000006	spd	LBYT3T		003176'		
ACCCLO		000003	spd	DEBUGF		000001'		FR.NST		000003	spd	LMOFLO		000701'		
ACCOPN		000002	spd	DEBUGR		000002'		FR.USF		000001	spd	LMOLTR		000624'		
ACCREL		000004	spd	DESX2		600151	int	FRDP		001617'		LMOLVF		000624'		
AIC	104000	000131	int	DESX3		600152	int	FRSP		001626'		LMONOP		000611'		
ARGX19		602033	int	DESX5		600154	int	FTJSYS	777777	777777	sin	LMOPSI		000555'		
ASNACK		000004	spd	DESX9		601340	int	FTRM1		001472'		LMORS1		000577'		
ASNHDN		000003	spd	DEVRSR		001067'		FTRM2		001502'		LMORST		000567'		
ATTM		001357'		DIC	104000	000133	int	FTRM3		001513'		LMORTR		000624'		
ATTMC		001421'		DIR	104000	000130	int	FTRM4		001521'		LMORVF		000624'		
ATTMSG		001341'		DISMS	104000	000167	int	FTRM5		001530'		LMOST1		000653'		
ATTMX		001455'		DM.AS8		000005	spd	FTRM6		001534'		LMOST2		000662'		
B		000006		DM.ASC		000001	spd	FTRM7		001563'		LMOST3		000670'		
BOTX05		602132	int	DM.AUG		000004	spd	FTRM8		001571'		LMOST4		000676'		
BR1		001021'		DM.CLI		000002	spd	FTRM9		001600'		LMOSTS		000626'		
BR2		001024'		DM.EBC		000003	spd	FTRM9A		001602'		LP.CHS		000210	spd	
BR3		001031'		DMFL		000003	spd	FTRMSG		001462'		LP.CVF		000205	spd	
BRKS		001017'		DMFTX		003062'		FTRW1		001717'		LP.FCC		000206	spd	
BYT1L		000007	spd	DNBRK		002555'		FTRWAT		001715'		LP.HT		000202	spd	
BYT1TB		003161'		DNRD		002535'		FTRXIT		001605'		LP.OPV		000212	spd	
BYT2L		000004	spd	DNRDX		002557'		FTUUOS		000000	sin	LP.OVP		000204	spd	
BYT2TB		003170'		DS		000014		FVLP		001621'		LP.PLE		000211	spd	
C		000007		EFAD1		002227'		FVLPH		001623'		LP.SFC		000203	spd	
CAPM1		001655'		EFADBY		002236'		FVLPL		001622'		LP.VFR		000207	spd	
CAPM2		001660'		EFADR		002220'		GETER	104000	000012	int	LPTIOW		000614'		
CAPM3		001664'		EIR	104000	000126	int	GETWRD		001274'		LS		000013		
CAPMSG		001637'		EO.ASC		000001	spd	GJ%SHT	000001	000000	sin	LSTIN.		000000	spd	
CBYT2L		000003	spd	EO.IMG		000002	spd	GJFX16		600074	int	LTOPR		000542'		
CBYT2T		003177'		EOFVL		003365'		GJFX28		600110	int	LTOPRL		000011	spd	
CBYT3L		000001	spd	ERCAL	320740	000000	int	GLXPUR	777777	777777	spd	MAPD1		002115'		
CBYT3T		003202'		ERJMP	320700	000000	int	GNRDSP		002164'		MAPD3		002132'		
CD.CWD		000202	spd	ERRTN		002312'		GNRMSP		002163'		MAPD4		002145'		
CH.64		000001	spd	ERRTX		002362'		GNRTB		002212'		MAPD5		002160'		
CH.96		000002	spd	FC.CL0		000000	spd	GTJFN	104000	000020	int	MAPDEV		002107'		
CHSVL		003404'		FC.CL1		000001	spd	IIC	104000	000132	int	MKCMSG		001731'		
CKI2		002354'		FC.SST		000002	spd	ILCMD		003456'		MKRDDB		000140'		
CKI3		002355'		FCLP		001625'		IMSGSZ		000020	spd	MO%ABT	010000	000000	sin	
CKI4		002356'		FE.ALL		000377	spd	INRD		002562'		MO%CON	400000	000000	sin	
CLOSF	104000	000022	int	FE.DAT		000001	spd	INRDIN		002465'		MO%EOF	000040	000000	sin	
CMOPSI		000555'		FE.DVT		000006	spd	INRDX		002625'		MO%FER	000200	000000	sin	
CMORST		000577'		FE.DWD		000011	spd	INRDXX		002630'		MO%HE	000004	000000	sin	
CONW1		000123'		FE.EOF		000005	spd	INSTR		002214'		MO%HEM		000010	sin	
CONWAT		000121'		FE.FNM		000010	spd	INTOFF		002524'		MO%IOP	000020	000000	sin	
CPOPJ		002162'		FE.FWD		000004	spd	INTON		002514'		MO%LCI		000002	spd	
CPOPJ1		002161'		FE.LCR		000003	spd	IOX2		600216	int	MO%LCP	400000	000000	sin	
CRESL		000021	spd	FE.SER		000002	spd	IOX3		600217	int	MO%LPC		000001	spd	
CRESTB		003460'		FE.TRN		000007	spd	IOX4		600220	int	MO%LVU		000020	spd	
CTLMSG		001627'		FFLP		001624'		IOX5		600221	int	MO%OL	000002	000000	sin	
CTOPR		000553'		FLNP		001620'		J1		000001		MO%PCK		000002	sin	
CTOPRL		000002	spd	FLSNRD		000110'		J2		000002		MO%RCK		000001	sin	
CZ%ABT	004000	000000	sin	FLSNRM		000111'		J3		000003		MO%SER	000010	000000	sin	
D		000010		FR.BCL		000002	spd	J4		000004		MO%SFL		000020	sin	
DATVL		003357'		FR.CPN		000005	spd	LBYT2L		000002	spd	MO%SYN	004000	000000	sin	
DCNX11		602026	int	FR.DNP		000007	spd	LBYT2T		003174'		MO%WCC	040000	000000	sin	
DCNX8		602025	int	FR.ERR		000004	spd	LBYT3L		000001	spd	MO%WFC	100000	000000	sin	
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page S-2
NURD	MAC	21-Mar-80 10:15		SYMBOL TABLE

MONALR		000020	spd	NM.TYP		000017	spd	NRDFSQ		000160	spd	OPNX13		600134	int	
MONATT		000002	spd	NODX01		602115	int	NRDIBF		000561	spd	OPNX14		600135	int	
MONCAP		000040	spd	NOUT	104000	000224	int	NRDICH		000043	spd	OPNX21		600144	int	
MONCTL		000010	spd	NR.ABS		000000	spd	NRDIER		000056	spd	OPNX3		600122	int	
MONDAT		000001	spd	NR.ACC		000000	spd	NRDJFN		000034	spd	OPNX4		600123	int	
MONFTR		000004	spd	NR.ACN		000001	spd	NRDLIM		000104	spd	OPNX7		600126	int	
MSGTYP		002743'		NR.ATT		000000	spd	NRDLP		000102	spd	P		000017		
MSNDIC		001761'		NR.CAP		000000	spd	NRDLPC		000052	spd	PA%CPY	000400	000000	sin	
MTOPR	104000	000077	int	NR.DMP		000000	spd	NRDLPF		000131	spd	PA%EX	020000	000000	sin	
MTOX1		601210	int	NR.DPS		000000	spd	NRDLVL		000001	spd	PA%RD	100000	000000	sin	
MTYPER		002727'		NR.NAB		000001	spd	NRDMAJ		000001	spd	PA%WT	040000	000000	sin	
N.AABC		000004	spd	NR.NDP		000002	spd	NRDMIN		000002	spd	PBOUT	104000	000074	int	
N.AACK		000002	spd	NR.NDR		000002	spd	NRDRBF		000161	spd	PJRST	254000	000000		
N.APLE		000005	spd	NR.NOB		000001	spd	NRDRCN		000101	spd	PSOUT	104000	000076	int	
N.ARQS		000003	spd	NR.NOE		000002	spd	NRDREP		000046	spd	R		000015		
N.ASTC		000001	spd	NR.NPS		000001	spd	NRDRPT		000100	spd	RCVBUF		001056'		
NA.DTO		000004	spd	NR.PAU		000001	spd	NRDSBF		000361	spd	RCVC1		001672'		
NA.FAT		000001	spd	NR.RES		000000	spd	NRDSCN		000103	spd	RCVCRS		001670'		
NA.INK		000040	spd	NR1		002457'		NRDSEG		000043	spd	RCVM1		001316'		
NA.IVP		000001	spd	NRD.AB		004000	spd	NRDSEQ		000041	spd	RCVMSG		001300'		
NA.JAM		000020	spd	NRD.AI		000020	spd	NRDSGC		000042	spd	RCVMT		001332'		
NA.NAC		000002	spd	NRD.CC		000002	spd	NRDSGN		000045	spd	RCVN0		001234'		
NA.NOE		000100	spd	NRD.CP		000001	spd	NRDSGS		000044	spd	RCVN1		001246'		
NA.OFL		000002	spd	NRD.EN		000200	spd	NRDSPT		000102	spd	RCVNRM		001233'		
NA.OMD		000010	spd	NRD.EO		000400	spd	NRDSTS		000036	spd	RCVR1		001706'		
NA.OOF		000040	spd	NRD.ER		001000	spd	NRDTMC		000047	spd	RCVRQ		001704'		
NA.OUF		000001	spd	NRD.FE		010000	spd	NRDTMO		000012	spd	RCVRQS		001702'		
NA.OVP		000001	spd	NRD.IM		000010	spd	NRDUFE		000155	spd	RCVRS1		001211'		
NA.PAU		000004	spd	NRD.LP		000004	spd	NRDULA		000035	spd	RCVRSP		001206'		
NA.PF		000020	spd	NRD.NO	000004	000000	spd	NRDWHO		000000	spd	RCVTYP		002702'		
NA.PSE		000020	spd	NRD.OC		000100	spd	NRM.CC		000002	spd	RDDBSZ		000565	spd	
NA.RAP		000040	spd	NRD.OF	000001	000000	spd	NRM.CP		000001	spd	RDDEV		000022	spd	
NA.REG		000100	spd	NRD.ON	000002	000000	spd	NRM.RS		000004	spd	RDEPDL		000017	spd	
NA.RNA		000010	spd	NRD.OP		000040	spd	NRMACC		000051	spd	RDERT		000024	spd	
NC.AUC		000002	spd	NRD.PL		002000	spd	NRMASN		000052	spd	RDFTRS		002073'		
NC.AUE		000001	spd	NRD.PS		020000	spd	NRMASR		000033	spd	RDHOST		000020	spd	
NC.CAB		000003	spd	NRD.RS		100000	spd	NRMAST		000032	spd	RDINTB		000025	spd	
NC.DMP		000005	spd	NRD.TO		040000	spd	NRMCFL		000031	spd	RDSAVE		000000	spd	
NC.PAU		000006	spd	NRDASQ		000051	spd	NRMID		000027	spd	RDSTS		000023	spd	
NC.RES		000007	spd	NRDATT		000050	spd	NRMJFN		000026	spd	REDFTR		002047'		
NC.RQC		000010	spd	NRDBSZ		001000	spd	NRMRID		000041	spd	RES1		003614'		
NC.RQS		000004	spd	NRDCAP		000055	spd	NRMRSP		000047	spd	RES1J		003546'		
ND.ACK		000001	spd	NRDCCR		000054	spd	NRMSPC		000050	spd	RES2		003613'		
ND.EOF		000004	spd	NRDCFL		000040	spd	NRMSTA		000053	spd	RES2J		003545'		
ND.IER		000002	spd	NRDCHN		000077	spd	NRMSTS		000030	spd	RES3		003612'		
NF.CMD		000001	spd	NRDCR		000103	spd	NUMO		002672'		RES3J		003544'		
NF.STD		000002	spd	NRDCRF		000153	spd	NURDL		000020	spd	RESNCD		003153'		
NFELCR		000113	spd	NRDCSQ		000053	spd	NURDPC		002464'		RIR	104000	000144	int	
NM.ALR		000004	spd	NRDDCH		000042	spd	OF%NWT		000200	sin	RLJFN	104000	000023	int	
NM.ATT		000001	spd	NRDDST		000037	spd	OF%PLN		000040	sin	RMONTP		002735'		
NM.CAP		000005	spd	NRDEDT		000054	spd	OF%RD		200000	sin	RSPERR		001125'		
NM.CTL		000003	spd	NRDERH		000057	spd	OF%WR		100000	sin	SAV1		003550'		
NM.DAT		000000	spd	NRDERR		002450'		ONUMO		002671'		SAV1J		003502'		
NM.FTR		000002	spd	NRDFET		000105	spd	OPENF	104000	000021	int	SAV2		003557'		
NM.OTR		000006	spd	NRDFSN		000157	spd	OPNDEV		001135'		SAV2J		003511'		
NURD20 Module for Readers and Printers	MACRO %53A(1152) 11:39  2-Apr-80 Page S-3
NURD	MAC	21-Mar-80 10:15		SYMBOL TABLE

SAV3		003567'		TRSPT		003410'		URS		000002	spd	.MORSS		000042	sin	
SAV3J		003521'		TYBUF		002633'		USETUP		002260'		.MORST		000037	sin	
SAV4		003600'		TYBUF1		002660'		USIEF1		000513'		.MORTR		000035	sin	
SAV4J		003532'		TYBUF2		002662'		USIEOF		000511'		.MORVF		000033	sin	
SBFINI		002100'		TYPAFL		003143'		USIN		000337'	int	.MOSIM		000036	sin	
SENDER		000764'		TYPAFX		003151'		USIN1		000433'		.MOSTS		000036	sin	
SETDST		000714'		TYPALR		003065'		USIN2		000436'		.PRIOU		000101	sin	
SETER	104000	000336	int	TYPAPG		003131'		USIN3		000456'		
SETFTR		002017'		TYPATT		003066'		USIN4		000457'		
SETFTV		002043'		TYPCAP		003065'		USIN5		004044'		
SETLCR		001777'		TYPCT1		003440'		USIN6		000465'		
SETMDA		002015'		TYPCTB		003446'		USIN7		000474'		
SETMOD		002005'		TYPCTL		003420'		USIN8		004067'		
SETUP1		002243'		TYPDAT		002751'		USIN9		000501'		
SETUP2		002245'		TYPDON		003046'		USINER		000521'		
SFBSX2		600211	int	TYPDXR		003043'		USINR1		000522'		
SIBE	104000	000102	int	TYPFC2		003265'		USINX		000504'		
SIN0		000364'		TYPFID		003236'		USO0		000242'		
SIN1		000367'		TYPFRS		003271'		USO1		000243'		
SIN2		000375'		TYPFT0		003212'		USO2		000246'		
SIN3		000425'		TYPFT1		003213'		USO3		000274'		
SINR	104000	000531	int	TYPFT2		003222'		USO4		000306'		
SKPIR	104000	000127	int	TYPFT3		003231'		USO5		000310'		
SNDAUC		001760'		TYPFTR		003203'		USO7		000317'		
SNDBUF		000752'		TYPITM		003053'		USO8		000321'		
SNDCAB		001757'		TYPSEG		002771'		USO9		000324'		
SNDDMP		001747'		TYPSEQ		003047'		USOUT		000226'	int	
SNDINT		001036'		TYPSG1		003012'		USOWTR		000771'		
SNDNRD		002066'		TYPSG2		003030'		USYCLE		000326'		
SNDRES		001765'		TYPSG3		003031'		VF.6LI		000001	spd	
SNDRQS		001750'		TYPST		005001'		VF.8LI		000002	spd	
SOERR		000774'		TYPVC1		003320'		VFRVL		003401'		
SOUTR	104000	000532	int	TYPVLW		003332'		VORG		400010	spd	
SPACS	104000	000060	int	UCLOSF		000724'	int	ZZ		400303	spd	
SPCOFF		000004	spd	UEX0		002411'		$CALL	260740	000000		
SPCREF		000003	spd	UEX1		002437'		$CALLR	254000	000000		
SPCRES		000001	spd	UEXIT		002374'		$RET	263740	000000		
STALTR		000003	spd	UEXX		002443'		$RETF	254020	400026		
STAQRY		000001	spd	UGTJFN		000003'	int	$RETT	254020	400025		
STAREP		000002	spd	UGTR1		000101'		%%.GLX		000007	sin	
STARLS		000020	spd	UGTR2		000102'		%%.MOD	566562	442220	spd	
STASHJ		001231'		UGTR3		000103'	int	%%.NRD	000102	000054	spd	
SUBJFN		000000'	int	UJ.FLS		400000	spd	.FHSLF		400000	sin	
SUCRTN		002367'		UJ.INT		000002	spd	.ICDAE		000013	sin	
T1		000011		UJ.NRD		000010	spd	.ICEOF		000012	sin	
T2		000012		UJ.RCV		100000	spd	.MOACN		000024	sin	
TCDRF		003407'		UJ.SSO		200000	spd	.MOCIA		000776	sin	
TCDRL		000001	spd	UJ.TDS		000004	spd	.MOFLO		000040	sin	
TCMNF		003344'		UJ.XT2		000001	spd	.MOLTR		000034	sin	
TCMNL		000013	spd	UMT1		000534'		.MOLVF		000032	sin	
TCRLF		002666'		UMTOPR		000524'	int	.MONOP		000031	sin	
TLPTF		003370'		UOPENF		000164'	int	.MOPSI		000027	sin	
TLPTL		000011	spd	UOPN1		000201'		.MORDA		000033	sin	
TPVLW1		003334'		UOPNC		000202'		.MORIM		000035	sin	
TRSPL		000010	spd	UOPNX		000206'		.MORLS		000025	sin	
A	   142#	   143	   614	   617	   619	   648	   651	   653	   856	   859	   860	   985	   988	   991
	  1066	  1067	  1068	  1186	  1226	  1235	  1254	  1261	  1286	  1290	  1293	  1297	  1300	  1303
	  1354	  1359	  1363	  1366	  1371	  1440	  1483	  1507	  1514	  1516	  1538	  1548	  1550	  1577
	  1578	  1579	  1598	  1599	  1600	  1601	  1602	  1730	  1731	  1733	  1734	  1740	  1741	  1743
	  1744	  1745	  1748	  1750	  1751	  1752	  1755	  1764	  1765	  1768	  1769	  1804	  1815	  1829
	  1830	  1831	  1832	  1833	  1834	  1835	  1836	  1886	  1890	  1895	  1908	  1913	  1914	  1923
	  1928	  1929	  1983	  1991	  2026	  2064	  2078	  2158	  2159	  2160	  2161	  2174	  2176	  2184
	  2457	  2461	  2462	  2463	  2464	  2465	  2467	  2468	  2470	  2471	  2472	  2473	  2475	  2476
	  2478	  2535	  2536	  2537	  2538	  2539	  2542	  2545	  2550	  2553	  2575	  2578	  2590	  2635
	  2640	  2653	  2692	  2695	  2699	  2725	  2733	  2739	  2750	  2760	  2761	  2830	  2837	  2856
	  2866	  2881	  2893	  2902	  2905	  2912	  2915	  3012	  3019	  3115	  3117	  3118	  3123	  3126
	  3127	  3132	  3136	  3137	  3142	  3147	  3148	  3155
ACCCLO	   186#
ACCOPN	   185#	  1461
ACCREL	   187#
ARGX19	  2128
ASNACK	   190#
ASNHDN	   189#
ATTM	  1625	  1626	  1627	  1628	  1631	  1634	  1636#
ATTMC	  1652	  1674#
ATTMSG	  1607	  1617#
ATTMX	  1658	  1667	  1671	  1680	  1697	  1704#
B	   143#	   144	  1227	  1231	  1232	  1355	  1365	  1370	  1442	  1446	  1448	  1450	  1485	  1516
	  1521	  1538	  1549	  1551	  1784	  1788	  1793	  1796	  1797	  1809	  1810	  1984	  1995	  1996
	  1998	  2035	  2036	  2065	  2079	  2165	  2167	  2169	  2182	  2458	  2459	  2462	  2471	  2477
	  2546	  2549	  2578	  2579	  2581	  2585	  2593	  2635	  2653	  2654	  2657	  2661	  2664	  2675
	  2680	  2725	  2726	  2727	  2733	  2736	  2739	  2747	  2750	  2766	  2837	  2840	  2847	  2856
	  2857	  2862	  2866	  2867	  2869	  2873	  2878	  2881	  2882	  2883	  2884	  2886	  2902	  2903
	  2906	  2907	  2910	  3012	  3013	  3014	  3015	  3020	  3021	  3023	  3025	  3026	  3124	  3133
	  3143	  3154
BOTX05	   659	  1441	  1452	  1484	  1491	  1498	  1508	  1515
BR1	  1357#	  1359
BR2	  1361#	  1363
BR3	  1358	  1362	  1370#
BRKS	  1323	  1354#	  2472
BYT1L	  2734	  2792#
BYT1TB	  2734	  2785#	  2792
BYT2L	  2740	  2798#
BYT2TB	  2740	  2794#	  2798
C	   144#	   145	   884	   885	   893	   897	   898	  1016	  1017	  1018	  1024	  1025	  1026	  1027
	  1040	  1043	  1044	  1047	  1058	  1061	  1062	  1065	  1071	  1228	  1236	  1722	  1728	  1985
	  1999	  2029	  2033	  2034	  2037	  2066	  2079	  2550	  2552	  2636	  2640	  2641	  2643	  2644
	  2647	  2649	  2734	  2740	  2744	  2745	  2752	  2753	  2766	  2768	  2772	  2830	  2831	  2834
	  3019	  3020	  3024	  3134	  3144	  3153
CAPM1	  1859	  1868#
CAPM2	  1861	  1872#
CAPM3	  1877#	  1879
CAPMSG	  1611	  1853#
CBYT2L	  2744	  2810#
CBYT2T	  2744	  2807#	  2810
CBYT3L	  2752	  2813#
CBYT3T	  2752	  2812#	  2813
CD.CWD	   543#	  1748	  1750	  2990
CH.64	   539#	  2986
CH.96	   540#	  2987
CHSVL	  2975	  2986#
CKI2	  2308	  2316#
CKI3	  2301	  2310	  2317#
CKI4	  2315	  2318#
CMOPSI	  1131	  1137#
CMORST	  1132	  1167#
CONW1	   704#	   716
CONWAT	   627	   660	   702#
CPOPJ	   706	  1385	  1391	  1403	  1441	  1484	  1491	  1498	  1606	  1610	  1612	  1725	  1817	  1819
	  1896	  1913	  1928	  2144#	  2183	  2415	  2549	  2834
CPOPJ1	   708	   748	  1187	  1318	  1327	  1406	  1443	  1499	  1524	  1552	  1589	  1604	  1887	  1916
	  1933	  2143#
CRESL	  3021	  3061#
CRESTB	  3021	  3044#	  3061
CTLMSG	  1609	  1840#
CTOPR	  1108	  1131#	  1133
CTOPRL	  1108	  1133#
CZ%ABT	  1287	  1294
D	   145#	   147	   871	   881	   882	   891	   907	   969	   992	   993	   994	  1021	  1029	  1033
	  1049	  1053	  1072	  1201	  1203	  1223	  1231	  1240	  1723	  1724	  1725	  1729	  1760	  1772
	  1775	  1778	  1783	  1786	  1795	  1808	  2574	  2576	  2588	  2631	  2634	  2639	  2652	  2669
	  2676	  2678	  2721	  2724	  2732	  2738	  2749	  2758	  2759	  2826	  2829	  2836	  2855	  2865
	  2880	  2892	  2900	  2904	  2911	  2914	  3008	  3011	  3018	  3145	  3152
DATVL	  2934	  2957#
DCNX11	  1506
DCNX8	  1557	  1561	  1568	  2393
DEBUG	  3065
DEBUGF	   327#	   922
DEBUGR	   328#	  1594	  2582
DESX2	  1447
DESX3	  2237
DESX5	   844	   949	  1102
DESX9	  1196
DEVRSR	   635	  1412#
DM.AS8	   519#	  2961
DM.ASC	   515#	  1998	  2957
DM.AUG	   518#	  1996	  2960
DM.CLI	   516#	  1995	  2958
DM.EBC	   517#	  2959
DMFL	  2636	  2711#
DMFTX	  2636	  2708#	  2711
DNBRK	  2469	  2475#
DNRD	  2418	  2457#
DNRDX	  2460	  2466	  2477#
DS	   151#	   152	   687	   816	   866	   924	   955	   956	   979	  1005	  1012	  1013	  1081	  1172
	  1219	  1242	  1243	  1269	  1270	  1272	  1340	  1341	  1343	  1567	  1630	  1633	  1640	  1641
	  1645	  1646	  1650	  1656	  1663	  1665	  1670	  1675	  1676	  1678	  1683	  1684	  1686	  1690
	  1692	  1693	  1695	  1700	  1701	  1824	  1825	  1976	  1977	  1978	  1982	  2265	  2267	  2298
	  2304	  2305	  2339	  2402
EFAD1	  2192	  2199#
EFADBY	   850	   968	  2102	  2215#
EFADR	  1138	  1168	  1200	  2191#	  2205	  2217	  2289
EO.ASC	   524#	  2963
EO.IMG	   525#	  2964
EOFVL	  2943	  2963#
ERRTN	   690	   773	   779	   783	   786	   789	   793	   798	   800	   804	   813	   819	   841	   844
	   846	   855	   858	   859	   865	   867	   920	   946	   949	   951	  1085	  1089	  1099	  1102
	  1116	  1156	  1179	  1197	  1218	  1247	  1253	  1260	  1262	  1284	  1303	  1959	  2073	  2277#
ERRTX	  2302	  2313	  2320	  2322#
FC.CL0	   550#	  2890
FC.CL1	   551#	  2030	  2867	  2887
FC.SST	   552#	  2873
FCLP	  1777	  1835#
FE.ALL	   544#	  1755	  2078	  2951
FE.DAT	   514#	  1991	  2934
FE.DVT	   526#	  2947
FE.DWD	   529#	  1731	  2950
FE.EOF	   523#	  2943
FE.FNM	   528#	  2949
FE.FWD	   522#	  2942
FE.LCR	   521#	  1226	  1983	  2941
FE.SER	   520#	  2940
FE.TRN	   527#	  2948
FFLP	  1774	  1834#
FLNP	  1789	  1830#
FLSNRD	   680	   692#
FLSNRM	   683	   693#
FR.BCL	   555#
FR.CPN	   558#
FR.DNP	   560#
FR.ERR	   557#
FR.NEB	   559#
FR.NST	   556#
FR.USF	   554#
FRDP	  1771	  1816	  1829#
FRSP	  1780	  1818	  1836#
FTRM1	  1728#	  1761	  1781	  1794	  1798	  1812
FTRM2	  1732	  1738#
FTRM3	  1739	  1748#
FTRM4	  1742	  1749	  1755#
FTRM5	  1756	  1763#
FTRM6	  1735	  1746	  1753	  1768#
FTRM7	  1785	  1793#
FTRM8	  1791	  1800#
FTRM9	  1808#	  1811
FTRM9A	  1806	  1810#
FTRMSG	  1608	  1718#
FTRW1	  1921#	  1927	  1930	  1934
FTRWAT	  1919#	  2081
FTRXIT	  1728	  1729	  1772	  1775	  1778	  1783	  1786	  1795	  1808	  1815#
FVLP	  1822	  1831#
FVLPH	  1797	  1833#
FVLPL	  1793	  1832#
GETWRD	  1517	  1520	  1555	  1562	  1564	  1571#
GJ%SHT	   615	   649
GJFX16	  1449	  2140
GJFX28	   865	   976	  1373
GNRDSP	   647	  2156#
GNRMSP	   613	  2155#
GNRTB	  2169	  2179#
ILCMD	  3014	  3038#
IMSGSZ	   160#	   454
INRD	  2416	  2481#
INRDIN	  2270	  2410#
INRDX	  2487	  2495	  2498	  2505	  2508	  2513	  2523#
INRDXX	  2520	  2521	  2526#
INSTR	  2166	  2168	  2170	  2182#	  2185
INTOFF	   952	  1285	  1972	  2261	  2285	  2335	  2445#
INTON	   957	  1979	  2268	  2435#
IOX2	   846
IOX3	   951
IOX4	  1082
IOX5	   867	   980	  1014	  1612
J1	   137#	   615	   622	   623	   629	   639	   649	   655	   656	   659	   662	   667	   673	   676
	   695	   697	   706	   712	   713	   715	   721	   725	   726	   727	   730	   732	   736	   741
	   743	   744	   779	   783	   786	   789	   793	   798	   800	   813	   819	   844	   846	   855
	   858	   859	   865	   867	   917	   949	   951	   976	   980	   984	   988	   994	  1014	  1021
	  1029	  1033	  1049	  1053	  1079	  1082	  1102	  1115	  1156	  1179	  1188	  1196	  1216	  1247
	  1253	  1255	  1260	  1262	  1287	  1288	  1291	  1294	  1295	  1298	  1331	  1334	  1344	  1358
	  1362	  1373	  1428	  1429	  1433	  1441	  1447	  1449	  1451	  1452	  1476	  1484	  1491	  1498
	  1503	  1504	  1506	  1508	  1509	  1515	  1519	  1532	  1535	  1557	  1561	  1568	  1580	  1583
	  1591	  1610	  1612	  1618	  1619	  1620	  1621	  1622	  1623	  1624	  1625	  1636	  1637	  1642
	  1647	  1655	  1657	  1659	  1660	  1664	  1666	  1668	  1669	  1674	  1677	  1679	  1681	  1682
	  1685	  1687	  1691	  1694	  1696	  1698	  1699	  1704	  1706	  1707	  1720	  1721	  1725	  1729
	  1770	  1771	  1772	  1773	  1774	  1775	  1776	  1777	  1778	  1783	  1785	  1786	  1787	  1788
	  1789	  1790	  1794	  1795	  1800	  1801	  1803	  1804	  1805	  1808	  1810	  1816	  1817	  1818
	  1819	  1822	  1823	  1841	  1842	  1843	  1844	  1845	  1846	  1854	  1855	  1856	  1857	  1860
	  1862	  1863	  1866	  1869	  1875	  1877	  1878	  1892	  1896	  1910	  1913	  1925	  1928	  1957
	  1966	  2071	  2103	  2109	  2110	  2112	  2127	  2128	  2140	  2234	  2235	  2236	  2237	  2238
	  2239	  2240	  2241	  2242	  2255	  2278	  2279	  2281	  2287	  2299	  2300	  2303	  2304	  2306
	  2312	  2318	  2322	  2324	  2325	  2327	  2346	  2357	  2358	  2359	  2361	  2363	  2364	  2370
	  2373	  2378	  2392	  2393	  2394	  2395	  2396	  2397	  2398	  2399	  2400	  2401	  2413	  2425
	  2429	  2436	  2437	  2439	  2440	  2446	  2447	  2449	  2451	  2452	  2481	  2488	  2496	  2497
	  2501	  2502	  2503	  2504	  2506	  2507	  2509	  2510	  2511	  2512	  2514	  2527	  2535	  2542
	  2545	  2553	  2559	  2562	  2563	  2565	  2566	  2576	  2581	  2582	  2585	  2588	  2634	  2639
	  2649	  2652	  2659	  2664	  2666	  2671	  2683	  2688	  2692	  2695	  2700	  2701	  2724	  2727
	  2728	  2732	  2758	  2761	  2762	  2768	  2770	  2829	  2836	  2852	  2855	  2858	  2859	  2861
	  2865	  2874	  2875	  2880	  2884	  2890	  2893	  2894	  2895	  2896	  2908	  2912	  2927	  3011
	  3015	  3018	  3023	  3024	  3026	  3073	  3075	  3076	  3081	  3084	  3085	  3090	  3094	  3095
	  3100	  3105	  3106	  3113
J2	   138#	   608	   614	   624	   640	   648	   657	   668	   702	   703	   704	   720	   728	   732
	   733	   734	   738	   739	   740	   741	   742	   744	   746	   774	   775	   782	   784	   797
	   799	   847	   848	   849	   895	   911	   912	   919	   921	   958	   959	   962	   965	   967
	  1038	  1056	  1067	  1068	  1073	  1088	  1111	  1309	  1310	  1329	  1333	  1335	  1346	  1389
	  1398	  1399	  1400	  1413	  1415	  1417	  1419	  1421	  1425	  1427	  1430	  1432	  1458	  1460
	  1462	  1464	  1466	  1468	  1470	  1472	  1474	  1475	  1539	  1584	  1705	  1706	  1779	  1780
	  1781	  1803	  1811	  1858	  1859	  1860	  1863	  1864	  1869	  1870	  1872	  1875	  1879	  2099
	  2100	  2101	  2106	  2113	  2116	  2119	  2215	  2216	  2218	  2277	  2278	  2281	  2282	  2305
	  2306	  2307	  2309	  2314	  2316	  2317	  2347	  2356	  2357	  2361	  2365	  2367	  2368	  2370
	  2371	  2374	  2379	  2380	  2415	  2417	  2419	  2421	  2422	  2423	  2424	  2426	  2430	  2482
	  2489	  2515	  2526	  2539	  2542	  2545	  2546	  2590	  2641	  2649	  2654	  2664	  2692	  2699
	  2700	  2701	  2760	  2762	  2831	  2869	  2905	  2908	  2916	  2925	  3082	  3091	  3101	  3112
J3	   139#	   628	   642	   643	   644	   661	   669	   670	   707	   709	   899	   901	  1039	  1041
	  1057	  1059	  1137	  1167	  1199	  1311	  1312	  1313	  1317	  1318	  1330	  1337	  1338	  1345
	  1381	  1382	  1383	  1384	  1387	  1388	  1401	  1404	  1405	  1518	  1521	  1542	  1556	  1559
	  1560	  1563	  1565	  1566	  1571	  1573	  1587	  2340	  2341	  2343	  2344	  2427	  2468	  2483
	  2490	  2491	  2492	  2494	  2496	  2518	  2525	  2564	  2565	  2569	  2838	  2839	  2842	  2844
	  2845	  2846	  2849	  2850	  2851	  2852	  2918	  2920	  2922	  2926	  2927	  3092	  3102	  3111
J4	   140#	   672	   902	  1042	  1060	  1314	  1315	  1316	  1317	  1378	  1379	  1380	  1384	  1385
	  1386	  1512	  1513	  1522	  1523	  1572	  1573	  2484	  2495	  2517	  2524	  2839	  2840	  2846
	  2847	  2878	  2887	  2890	  2915	  2916	  2922	  2924	  2925	  3103	  3110
LBYT2L	  2745	  2802#
LBYT2T	  2745	  2800#	  2802
LBYT3L	  2753	  2805#
LBYT3T	  2753	  2804#	  2805
LMOFLO	  1127	  1251#	  1257
LMOLTR	  1123	  1194#
LMOLVF	  1121	  1192#
LMONOP	  1120	  1178#
LMOPSI	  1119	  1136#
LMORS1	  1153	  1164#
LMORST	  1126	  1149#
LMORTR	  1124	  1195#
LMORVF	  1122	  1193#
LMOST1	  1204	  1222#
LMOST2	  1224	  1231#
LMOST3	  1233	  1239#
LMOST4	  1241	  1246#
LMOSTS	  1125	  1199#
LP.CHS	   538#	  2975
LP.CVF	   533#	  2970
LP.FCC	   534#	  2971
LP.HT	   530#	  1740	  1743	  2967
LP.OPV	   542#	  1741	  2979
LP.OVP	   532#	  2969
LP.PLE	   541#	  1235	  2978
LP.SFC	   531#	  2968
LP.VFR	   535#	  2972
LPTIOW	  1178	  1183#	  1190	  1246
LS	   150#	   151	   654	   663	   686	   780	   788	   794	   795	   802	   805	   815	   842	   843
	   845	   861	   868	   947	   948	   950	   953	   954	   961	   964	   971	   972	   981	  1004
	  1006	  1010	  1011	  1031	  1051	  1074	  1080	  1084	  1100	  1101	  1103	  1145	  1152	  1220
	  1267	  1268	  1339	  1364	  1423	  1629	  1632	  1638	  1639	  1643	  1644	  1648	  1649	  1651
	  1661	  1662	  1688	  1689	  1738	  1971	  1973	  1974	  1992	  1994	  2141	  2142	  2172	  2264
	  2269	  2296	  2297	  2311	  2337	  2338	  2668	  2677	  2681	  2696	  2743	  2751	  2843
LSTIN.	   132	  2534	  2535	  2535#	  2541	  2542	  2542#	  2544	  2545	  2545#	  2558	  2559	  2559#	  2576
	  2576#	  2586	  2587	  2587#	  2588	  2588#	  2633	  2634	  2634#	  2638	  2639	  2639#	  2648	  2649
	  2649#	  2651	  2652	  2652#	  2658	  2659	  2659#	  2663	  2664	  2664#	  2687	  2688	  2688#	  2691
	  2692	  2692#	  2723	  2724	  2724#	  2729	  2730	  2730#	  2731	  2732	  2732#	  2757	  2758	  2758#
	  2769	  2770	  2770#	  2828	  2829	  2829#	  2835	  2836	  2836#	  2853	  2854	  2854#	  2855	  2855#
	  2860	  2861	  2861#	  2863	  2864	  2864#	  2865	  2865#	  2876	  2877	  2877#	  2879	  2880	  2880#
	  2885	  2886	  2886#	  2889	  2890	  2890#	  2897	  2898	  2898#	  2928	  2929	  2929#	  3010	  3011
	  3011#	  3016	  3017	  3017#	  3018	  3018#	  3027	  3028	  3028#	  3065
LTOPR	  1106	  1119#	  1128
LTOPRL	  1106	  1128#
MAPD1	  2105#	  2109
MAPD3	  2119#	  2127
MAPD4	  2107	  2114	  2117	  2120	  2122	  2131#
MAPD5	  2138	  2142#
MAPDEV	   609	  2099#
MKCMSG	  1938#	  1955	  1964
MKRDDB	   605	   720#
MO%ABT	  1337
MO%CON	   707	  1338	  1542	  1587
MO%EOF	   955	  1005	  1202	  1219	  1976	  2312
MO%FER	   866	   955	   979	  1081	  1272	  1341	  1567	  1640	  1641	  1663	  1690	  1695	  1976	  2307
	  2402
MO%HE	   866	   955	   979	  1081	  1656	  1665	  1670	  1678	  1686	  1976	  2307
MO%HEM	   866	   955	   979	  1081	  1675	  1676	  1976
MO%IOP	   924	  1630	  1650	  1977
MO%LCI	   866	   955	   979	  1081	  1976	  2307
MO%LCP	  1222	  1824	  1825	  1982
MO%LPC	   866	   955	  1633	  1976	  2309
MO%LVU	   816
MO%OL	  1269	  1270	  1343	  1645	  1646	  1976
MO%PCK	   955	   979	  1081	  1692	  1693	  1976
MO%RCK	   955	   979	  1012	  1013	  1081	  1700	  1701	  1976
MO%SER	   866	   955	   979	  1081	  1239	  1272	  1340	  1567	  1633	  1976	  2309	  2402
MO%SFL	   955	   979	  1081	  1683	  1684	  1976
MO%SYN	  1337
MO%WCC	   709
MO%WFC	   709
MONALR	  2606#	  2613
MONATT	  2603#	  2610
MONCAP	  2607#	  2614
MONCTL	  2605#	  2612
MONDAT	  2602#	  2609
MONFTR	  2604#	  2611
MSGTYP	  2585	  2616#
MSNDIC	  1964#	  1970
MTOX1	  1115
MTYPER	  2593	  2595#
N.AABC	   487#
N.AACK	   485#
N.APLE	   488#	  1622	  2726
N.ARQS	   486#
N.ASTC	   484#
NA.DTO	   499#	  1660	  1687	  2796
NA.FAT	   490#	  1637	  2785
NA.INK	   504#	  1664	  2801
NA.IVP	   507#	  1699	  2812
NA.JAM	   494#	  1655	  1677	  2789
NA.NAC	   498#	  1664	  1685	  2795
NA.NOE	   496#	  1655	  1677	  2791
NA.OFL	   491#	  1642	  2786
NA.OMD	   493#	  1655	  1674	  2788
NA.OOF	   495#	  1655	  1677	  2790
NA.OUF	   497#	  1664	  1682	  2794
NA.OVP	   506#	  1669	  2804
NA.PAU	   492#	  1642	  1647	  2787
NA.PF	   501#	  1691	  2807
NA.PSE	   502#	  1664	  2800
NA.RAP	   503#	  1694	  2808
NA.REG	   505#	  1694	  2809
NA.RNA	   500#	  1664	  1685	  2797
NC.AUC	   566#	  1963	  3047	  3048
NC.AUE	   565#	  3044	  3045	  3046
NC.CAB	   567#	  1962	  3049	  3050
NC.DMP	   569#	  1953	  3052	  3053
NC.PAU	   570#	  3054	  3055	  3056
NC.RES	   571#	  1969	  3057	  3058	  3059
NC.RQC	   572#	  3013	  3060
NC.RQS	   568#	  1954	  3051
ND.ACK	   475#	  1213	  2708
ND.EOF	   477#	  1002	  1213	  2710
ND.IER	   476#	  1008	  1009	  2709
NF.CMD	   547#	  2027	  2857
NF.STD	   548#	  2862
NFELCR	   426#	  1815
NM.ALR	   466#	  2497
NM.ATT	   463#	  1914
NM.CAP	   467#
NM.CTL	   465#	  1940
NM.DAT	   462#
NM.FTR	   464#	  1929	  2015	  2053
NM.OTR	   468#	  1599	  1600	  2579
NM.TYP	   461#
NODX01	  2110
NR.ABS	   574#	  3044	  3047
NR.ACC	   577#	  1261	  3049
NR.ACN	   578#	  3050
NR.ATT	   579#	  3051
NR.CAP	   588#	  3060
NR.DMP	   580#	  3052
NR.DPS	   582#	  3054
NR.NAB	   575#	  1254	  3045	  3048
NR.NDP	   584#	  3056
NR.NDR	   587#	  3059
NR.NOB	   581#	  1186	  3053
NR.NOE	   576#	  3046
NR.NPS	   586#	  3058
NR.PAU	   583#	  3055
NR.RES	   585#	  3057
NR1	  2396	  2399#
NRD.AB	   378#	  1629
NRD.AI	   371#	   794	   961	   964	  1006	  1031	  1051	  1084	  1992	  1994	  2668	  2677	  2681	  2696
NRD.CC	   368#	   663	   842	   947	  1100	  1339
NRD.CP	   367#	   654	   663
NRD.EN	   374#	  1143	  1145	  2299	  2344	  2507
NRD.EO	   375#	   972	  1004	  1074	  1220
NRD.ER	   376#	  1010	  1011	  1080
NRD.FE	   379#	   953	  1080	  1638	  1639	  1973
NRD.IM	   370#	   795	   961	  1006	  1031	  1051	  1084	  1992	  2668	  2677	  2681	  2696
NRD.LP	   369#	   780	   788	   815	   845	   950	  1103	  1423	  1651	  1738	  2141	  2142	  2172	  2311
	  2743	  2751	  2843
NRD.NO	   385#	  2341	  2511
NRD.OC	   373#	   805	   843	   948	  1101	  1339	  2269
NRD.OF	   383#	   861	   953	   971	  1268	  1364	  1643	  1644	  1973	  2296	  2501
NRD.ON	   384#	   862	   974	  1973	  2503
NRD.OP	   372#	   802	   805
NRD.PL	   377#	   953	  1632	  1973
NRD.PS	   380#	   868	   981	  1152	  1364	  1648	  1649	  1973
NRD.RS	   382#	  1971	  2337
NRD.TO	   381#	   953	  1080	  1661	  1662	  1688	  1689	  1973
NRDASQ	   396#	  1150	  1619
NRDATT	   395#	  1621
NRDBSZ	   159#	   452	   453	   642	   643	  1401	  1404	  2087
NRDCAP	   400#	  1858	  1864	  1870	  1874	  2368
NRDCCR	   399#	  1844	  1846	  1886
NRDCFL	   387#	   661
NRDCHN	   403#	   744	  1142	  2317	  2347	  2515
NRDCR	   174#	  1424
NRDCRF	   445#	  1752
NRDCSQ	   398#	  1842	  1884	  1946
NRDDCH	   164#	  2365	  2419	  2427	  2430
NRDDST	   386#	   687	   956	  1243	  1978	  2265	  2267	  2298	  2303	  2339
NRDEDT	   125#	   127
NRDERH	   402#	  2398
NRDERR	   673	   706	   813	   819	   855	   858	   859	   984	   994	  1021	  1029	  1033	  1049	  1053
	  1079	  1156	  1179	  1247	  1253	  1260	  1262	  1358	  1362	  1441	  1484	  1491	  1498	  1506
	  1508	  1515	  1519	  1610	  1612	  1625	  1725	  1729	  1772	  1775	  1778	  1783	  1786	  1795
	  1808	  1896	  1913	  1928	  2392#
NRDFET	   422#	  1734
NRDFSN	   448#	  1931	  2021	  2059
NRDFSQ	   449#	  1721	  1932
NRDIBF	   454#	  2490
NRDICH	   163#	  2365	  2417	  2427	  2430
NRDIER	   401#	  2271	  2395	  2400
NRDJFN	   364#	   655	   667	   692	   917	  1216	  1288	  1291	  1334	  1580	  1583	  1591	  1957	  1966
	  2071	  2425	  2488
NRDLIM	   408#	   644	   871
NRDLP	   173#	  1422
NRDLPC	   397#	   809	  1175	  1707
NRDLPF	   434#	  1745
NRDLVL	   162#	  2363	  2416	  2418	  2422	  2423
NRDMAJ	   123#	   127
NRDMIN	   124#	   127
NRDRBF	   452#	   670	   674	  1399
NRDRCN	   405#	   807	   969	   993	  1072	  1083	  1087	  1405	  1487	  1496	  1512	  1523	  1603	  1723
	  2574
NRDREP	   393#	  1036	  1037
NRDRPT	   404#	   995	   996	   998	   999	  1022	  1030	  1034	  1050	  1054	  1400	  1488	  1492	  1493
	  1494	  1548	  1549	  1558	  1559	  1571	  1572	  1598	  1617	  1618	  1620	  1636	  1659	  1668
	  1681	  1698	  1704	  1705	  1719	  1720	  1722	  1730	  1757	  1758	  1759	  1773	  1776	  1779
	  1784	  1787	  1796	  1809	  1840	  1841	  1843	  1845	  1853	  1854	  1872	  1877	  2575
NRDSBF	   453#	  1310	  1311	  1378	  1387	  2084	  2087	  2088	  2535
NRDSCN	   407#	   808	  1104	  1326	  1372	  1392
NRDSEG	   390#	   887	   898
NRDSEQ	   388#	   875	   997	  1149	  1210	  1944	  2019	  2057
NRDSGC	   389#	   880	   888	   890
NRDSGN	   392#	  1001	  1016	  1071
NRDSGS	   391#	  1000	  1019
NRDSPT	   406#	   873	   874	   876	   877	   878	   879	   885	   886	   896	  1208	  1209	  1212	  1214
	  1215	  1312	  1314	  1379	  1381	  1413	  1432	  1458	  1475	  1941	  1943	  1947	  1949	  1950
	  2016	  2018	  2022	  2024	  2026	  2028	  2031	  2032	  2034	  2035	  2054	  2056	  2060	  2062
	  2064	  2065	  2066	  2067	  2089
NRDSTS	   366#	   686	   863	   954	   975	  1144	  1266	  1974	  2264	  2297	  2300	  2338	  2340	  2343
	  2502	  2504	  2506	  2512
NRDTMC	   394#	   703	   710	  1504	  1507	  1883	  1890	  1905	  1908	  1920	  1923
NRDTMO	   165#	   702	  1503	  1882	  1904	  1919
NRDUFE	   447#	  1763	  1764	  1765
NRDULA	   365#	   675	  1473	  1497
NRDWHO	   122#	   127
NRM.CC	   356#	   630
NRM.CP	   355#	   620	   630
NRM.RS	   357#	   637
NRMACC	   184#	  1459	  1483
NRMASN	   188#
NRMASR	   360#	  1271	  1565
NRMAST	   359#	  1563
NRMCFL	   358#	   628
NRMID	   353#	   634	  1418	  1463	  1518	  1556
NRMJFN	   352#	   622	   639	   693	  1295	  1298	  1433	  1476	  1535
NRMRID	   179#
NRMRSP	   191#	  1514
NRMSPC	   180#	  1414	  1440
NRMSTA	   192#	  1550
NRMSTS	   354#	   621	   631	   638
NUMO	  2540	  2547	  2563#	  2642	  2650	  2655	  2665	  2693	  2763	  2832	  2870
NURDL	   161#	   402	  2397
NURDPC	  2406#	  2420	  2463	  2468	  2473	  2476
OF%NWT	   624	   657
OF%PLN	   624	   657
OF%RD	   624	   657	   782	   799
OF%WR	   624	   657	   784	   797
ONUMO	  2543	  2562#	  2591	  2702
OPNDEV	   803	  1457#
OPNX13	   783	   798
OPNX14	   789
OPNX21	   629	   662
OPNX3	   800
OPNX4	   786
OPNX7	  1451
P	   154#	   617	   619	   651	   653	   673	   706	   712	   715	   720	   721	   733	   734	   741
	   742	   813	   819	   855	   858	   859	   984	   994	  1021	  1029	  1033	  1049	  1053	  1079
	  1156	  1169	  1171	  1179	  1247	  1253	  1260	  1262	  1329	  1330	  1333	  1344	  1345	  1346
	  1354	  1355	  1358	  1362	  1365	  1366	  1370	  1371	  1441	  1484	  1491	  1498	  1506	  1508
	  1515	  1519	  1532	  1543	  1592	  1595	  1610	  1612	  1625	  1725	  1729	  1772	  1775	  1778
	  1783	  1786	  1795	  1808	  1862	  1866	  1896	  1913	  1928	  1938	  1948	  2143	  2157	  2158
	  2159	  2161	  2162	  2163	  2195	  2231	  2233	  2236	  2243	  2244	  2249	  2250	  2251	  2277
	  2282	  2286	  2288	  2290	  2324	  2325	  2327	  2332	  2334	  2358	  2379	  2394	  2399	  2457
	  2458	  2477	  2478	  2481	  2482	  2483	  2484	  2485	  2492	  2494	  2516	  2517	  2518	  2523
	  2524	  2525	  2526	  2527	  2564	  2569	  3073	  3074	  3075	  3078	  3081	  3082	  3083	  3084
	  3087	  3090	  3091	  3092	  3093	  3094	  3097	  3100	  3101	  3102	  3103	  3104	  3105	  3108
	  3110	  3111	  3112	  3113	  3115	  3116	  3117	  3120	  3123	  3124	  3125	  3126	  3129	  3132
	  3133	  3134	  3135	  3136	  3139	  3142	  3143	  3144	  3145	  3146	  3147	  3150	  3152	  3153
	  3154	  3155
PA%CPY	   728
PA%EX	   728
PA%RD	   728
PA%WT	   728
R	   152#	   608	   621	   622	   628	   631	   632	   634	   638	   639	   644	   655	   661	   667
	   670	   674	   675	   676	   686	   687	   689	   692	   693	   703	   710	   746	   747	   807
	   808	   809	   863	   871	   873	   874	   875	   876	   877	   878	   879	   880	   885	   886
	   887	   888	   890	   896	   898	   917	   919	   921	   954	   956	   969	   975	   993	   995
	   996	   997	   998	   999	  1000	  1001	  1016	  1019	  1022	  1030	  1034	  1036	  1037	  1050
	  1054	  1071	  1072	  1073	  1083	  1087	  1088	  1104	  1142	  1144	  1149	  1150	  1175	  1208
	  1209	  1210	  1212	  1214	  1215	  1216	  1243	  1266	  1271	  1288	  1291	  1295	  1298	  1302
	  1310	  1311	  1312	  1314	  1321	  1326	  1334	  1372	  1378	  1379	  1381	  1387	  1392	  1399
	  1400	  1405	  1413	  1418	  1428	  1432	  1433	  1458	  1463	  1473	  1475	  1476	  1487	  1488
	  1492	  1493	  1494	  1496	  1497	  1504	  1507	  1512	  1518	  1523	  1535	  1548	  1549	  1556
	  1558	  1559	  1563	  1565	  1571	  1572	  1578	  1580	  1583	  1591	  1598	  1603	  1617	  1618
	  1619	  1620	  1621	  1636	  1659	  1668	  1681	  1698	  1704	  1705	  1707	  1719	  1720	  1721
	  1722	  1723	  1730	  1734	  1745	  1752	  1757	  1758	  1759	  1763	  1764	  1765	  1773	  1776
	  1779	  1784	  1787	  1796	  1809	  1815	  1840	  1841	  1842	  1843	  1844	  1845	  1846	  1853
	  1854	  1858	  1864	  1870	  1872	  1874	  1877	  1883	  1884	  1886	  1890	  1905	  1908	  1920
	  1923	  1931	  1932	  1941	  1943	  1944	  1946	  1947	  1949	  1950	  1957	  1966	  1974	  1978
	  2016	  2018	  2019	  2021	  2022	  2024	  2026	  2028	  2031	  2032	  2034	  2035	  2054	  2056
	  2057	  2059	  2060	  2062	  2064	  2065	  2066	  2067	  2071	  2084	  2087	  2088	  2089	  2104
	  2111	  2136	  2167	  2194	  2196	  2200	  2201	  2242	  2250	  2252	  2260	  2263	  2264	  2265
	  2267	  2271	  2272	  2283	  2286	  2287	  2292	  2294	  2297	  2298	  2300	  2303	  2317	  2321
	  2322	  2332	  2333	  2338	  2339	  2340	  2343	  2347	  2352	  2353	  2395	  2398	  2400	  2410
	  2424	  2425	  2437	  2439	  2447	  2452	  2485	  2486	  2488	  2490	  2502	  2504	  2506	  2510
	  2512	  2515	  2516	  2523	  2535	  2574	  2575
RCVBUF	  1398#	  1546	  1592
RCVC1	  1884#	  1894	  1895
RCVCRS	  1184	  1252	  1259	  1882#	  1899
RCVM1	  1582	  1591#
RCVMSG	   857	   986	  1361	  1576#	  1888	  1906	  1921
RCVMT	  1601	  1606#
RCVN0	  1535#	  1566
RCVN1	  1537	  1546#
RCVNRM	   854	   983	  1357	  1505	  1534#
RCVR1	  1906#	  1912	  1915
RCVRQ	  1078	  1904#
RCVRQS	   812	  1155	  1899#
RCVRS1	  1505#	  1511
RCVRSP	  1436	  1479	  1502#
RCVTYP	  1595	  2572#
RDDBSZ	   455#	   736	  2373
RDDEV	   339#	  1428	  2111	  2136
RDEPDL	   337#	  2196	  2250	  2286	  2332
RDERT	   348#	  2272	  2292	  2294	  2321	  2322
RDFTRS	   818	  2077#
RDHOST	   338#	  2104	  2167
RDINTB	   349#	  2361	  2410	  2424
RDSAVE	   336#	   608	   676	   738	   739	   740	   741	   742	   919	   921	  1073	  1088	  2194	  2201
	  2239	  2240	  2241	  2287	  2353
RDSTS	   340#	   689	  1302	  1321	  1578	  2252	  2260	  2263	  2333	  2352	  2357	  2437	  2439	  2447
	  2452	  2462	  2471	  2510
REDFTR	  2052#	  2080
RES1	  3121	  3155#
RES1J	  3079	  3113#
RES2	  3130	  3154#
RES2J	  3088	  3112#
RES3	  3140	  3153#
RES3J	  3098	  3111#
RESNCD	  2727	  2775#
RMONTP	  2581	  2609#
RSPERR	  1446#	  1486
SAV1	  3115#
SAV1J	   694	  2435	  2445	  3073#
SAV2	  2164	  3123#
SAV2J	  2355	  3081#
SAV3	  1981	  1990	  2077	  3132#
SAV3J	  2412	  3090#
SAV4	  1718	  2532	  2573	  3142#
SAV4J	   916	  1502	  1534	  1576	  1956	  1965	  2070	  2531	  2572	  3100#
SBFINI	   870	  1206	  1412	  1457	  1939	  2014	  2052	  2084#
SENDER	  1320#	  1367	  2464
SETDST	  1170	  1266#	  2266	  2295
SETFTR	  1229	  1237	  1986	  2014#
SETFTV	  2035#	  2037
SETLCR	   817	  1981#
SETMDA	  1993	  1998#
SETMOD	   814	  1990#
SETUP1	   840	   945	  1098	  2231#
SETUP2	   772	  1283	  2233#
SFBSX2	   779	   793
SIN0	   960	   963	   966	   968#
SIN1	   971#	   990	   991	  1020	  1026
SIN2	   983#	   985
SIN3	  1003	  1009#
SNDAUC	  1251	  1963#
SNDBUF	   918	  1217	  1309#	  1434	  1477	  1958	  2072
SNDCAB	  1258	  1962#
SNDDMP	  1183	  1953#
SNDINT	  1378#	  1967
SNDNRD	  1105	  2038	  2070#
SNDRES	   864	   869	   977	   982	  1244	  1969#
SNDRQS	   811	  1154	  1954#
SOERR	  1325	  1329#
SPCOFF	   183#
SPCREF	   182#
SPCRES	   181#	  1416
STALTR	   195#
STAQRY	   193#
STAREP	   194#	  1551
STARLS	   196#
STASHJ	  1506	  1508	  1515	  1519	  1532#	  1541	  1547	  1557	  1561	  1569	  1586	  1588	  1593
SUBJFN	   326#	   725	   747	  2234	  2238	  2283	  2356	  2367	  2374	  2375	  2459	  2486
SUCRTN	   677	   820	   914	  1075	  1146	  1176	  1180	  1248	  1263	  1304	  2331#
T1	   147#	   148	   620	   621	   630	   631	   632	   633	   634	   637	   638	   674	   675	   688
	   689	   692	   693	   695	   697	   774	   776	   777	   790	   792	   862	   863	   872	   873
	   874	   875	   876	   879	   880	   886	   887	   888	   889	   890	   895	   896	   902	   905
	   910	   911	   912	   974	   975	   996	   997	   999	  1000	  1022	  1023	  1024	  1025	  1030
	  1035	  1036	  1037	  1038	  1042	  1046	  1050	  1055	  1056	  1060	  1064	  1106	  1108	  1110
	  1112	  1113	  1114	  1139	  1140	  1141	  1142	  1143	  1144	  1149	  1150	  1151	  1169	  1173
	  1174	  1201	  1202	  1203	  1210	  1211	  1212	  1213	  1214	  1222	  1223	  1239	  1240	  1242
	  1266	  1267	  1301	  1302	  1320	  1321	  1322	  1414	  1415	  1416	  1417	  1418	  1419	  1420
	  1421	  1422	  1424	  1425	  1429	  1430	  1459	  1460	  1461	  1462	  1463	  1464	  1465	  1466
	  1467	  1468	  1469	  1470	  1471	  1472	  1473	  1474	  1487	  1489	  1494	  1497	  1873	  1874
	  1878	  1882	  1883	  1884	  1885	  1886	  1904	  1905	  1919	  1920	  1931	  1932	  1938	  1940
	  1941	  1944	  1945	  1946	  1947	  1948	  1949	  1953	  1954	  1962	  1963	  1969	  2015	  2016
	  2019	  2020	  2021	  2022	  2023	  2024	  2027	  2028	  2029	  2030	  2031	  2053	  2054	  2057
	  2058	  2059	  2060	  2061	  2062	  2084	  2085	  2086	  2087	  2088	  2089	  2104	  2105	  2111
	  2126	  2131	  2135	  2136	  2137	  2139	  2157	  2163	  2171	  2173	  2174	  2175	  2176	  2182
	  2183	  2184	  2191	  2192	  2193	  2194	  2195	  2196	  2197	  2198	  2199	  2200	  2201	  2204
	  2218	  2249	  2251	  2252	  2253	  2254	  2257	  2258	  2259	  2260	  2262	  2263	  2292	  2294
	  2331	  2333	  2351	  2352	  2416	  2417	  2418	  2419	  2420	  2423
T2	   148#	   150	   775	   776	   787	   872	   877	   878	   998	  1002	  1008	  1009	  1034	  1035
	  1054	  1055	  1110	  1111	  1137	  1139	  1141	  1167	  1171	  1172	  1173	  1175	  1199	  1207
	  1208	  1209	  1215	  1426	  1427	  1431	  1488	  1490	  1495	  1496	  1942	  1943	  1950	  2017
	  2018	  2032	  2055	  2056	  2067	  2105	  2106	  2107	  2108	  2113	  2114	  2115	  2116	  2117
	  2118	  2119	  2120	  2121	  2123	  2124	  2126	  2131	  2132	  2133	  2134	  2135	  2155	  2156
	  2169	  2191	  2199	  2202	  2204	  2215	  2243	  2248	  2254	  2288	  2290	  2291	  2293
TCDRF	  2844	  2990#	  2991
TCDRL	  2844	  2991#
TCMNF	  2838	  2933#	  2952
TCMNL	  2838	  2952#
TCRLF	  2533	  2548	  2557#	  2577	  2584	  2589	  2592	  2646	  2656	  2688	  2714	  2730	  2756	  2764
	  2833	  3028
TLPTF	  2845	  2967#	  2980
TLPTL	  2845	  2980#
TPVLW1	  2922#	  2926
TRSPL	  2882	  2883	  3001#
TRSPT	  2884	  2993#	  3001
TYBUF	   923	  2531#
TYBUF1	  2549#	  2552
TYBUF2	  2552#	  2555
TYPAFL	  2637	  2735	  2741	  2746	  2754	  2766#	  2772
TYPAFX	  2767	  2772#
TYPALR	  2599	  2713#
TYPAPG	  2737	  2748	  2756#
TYPATT	  2596	  2721#
TYPCAP	  2600	  2714#
TYPCT1	  3023#	  3025
TYPCTB	  3015	  3030#
TYPCTL	  2598	  3008#
TYPDAT	  2595	  2631#
TYPDON	  2647	  2689#
TYPDXR	  2631	  2634	  2639	  2652	  2669	  2676	  2678	  2687#	  2721	  2724	  2732	  2738	  2749	  2759
	  2826	  2829	  2836	  2855	  2865	  2880	  2892	  2900	  2904	  2911	  2914	  3008	  3011	  3018
TYPFC2	  2868	  2873#
TYPFID	  2841	  2848	  2851#
TYPFRS	  2871	  2878#
TYPFT0	  2832#	  2920	  2923
TYPFT1	  2833#	  2886	  2888	  2898	  2903	  2910	  2929
TYPFT2	  2839#	  2842
TYPFT3	  2846#	  2849
TYPFTR	  2597	  2826#
TYPITM	  2670	  2679	  2695#
TYPSEG	  2646#	  2659	  2673	  2675	  2680
TYPSEQ	  2632	  2691#	  2722	  2827	  3009
TYPSG1	  2657	  2661#
TYPSG2	  2662	  2675#
TYPSG3	  2676#	  2682	  2685
TYPST	  2909#	  2913
TYPVC1	  2891	  2900#
TYPVLW	  2906	  2918#
UCLOSF	  1283#
UEX0	  2342	  2345	  2349	  2351#
UEX1	  2362	  2369	  2373#
UEXIT	  2323	  2326	  2328	  2337#
UEXX	  2360	  2378#
UGTJFN	   605#
UGTR1	   659	   662	   673	   680#
UGTR2	   626	   629	   636	   652	   683#
UGTR3	   610	   618	   686#
UJ.FLS	   347#	   688	  1301	  2359
UJ.INT	   342#	  2257	  2258	  2446
UJ.NRD	   344#	  2262	  2351	  2509
UJ.RCV	   345#	  1322	  1577	  2461
UJ.SSO	   346#	  1320	  2470
UJ.TDS	   343#	  2259	  2380	  2436	  2451
UJ.XT2	   341#	  2233	  2248	  2253	  2331
UMT1	  1107	  1110#	  1114
UMTOPR	  1098#
UOPENF	   772#
UOPN1	   791	   795#
UOPNC	   781	   797#
UOPNX	   785	   802#
URS	   168#	  1467
USETUP	   607	  2248#
USIEF1	   973	  1080#
USIEOF	  1007	  1078#
USIN	   945#
USIN1	   970	  1016#
USIN2	  1019#	  1045	  1063
USIN3	  1032	  1036#
USIN4	  1017	  1037#	  1044
USIN5	  1039	  1044#	  1045	  1046
USIN6	  1018	  1027	  1049#	  1062
USIN7	  1052	  1056#
USIN8	  1057	  1062#	  1063	  1064
USIN9	  1047	  1066#
USINER	   976	   980	   984	   987	   994	  1021	  1029	  1033	  1049	  1053	  1087#
USINR1	  1014	  1088#
USINX	  1040	  1043	  1058	  1061	  1071#
USO0	   853#	   883	   908
USO1	   854#	   856
USO2	   857#	   860
USO3	   882#	   894
USO4	   893#	   907
USO5	   891	   895#
USO7	   899	   903	   907#
USO8	   901	   904	   905	   910#
USO9	   900	   913#
USOUT	   840#
USOWTR	  1325#	  2465	  2467
USYCLE	   853	   913	   916#
VF.6LI	   536#	  2982
VF.8LI	   537#	  2983
VFRVL	  2972	  2982#
%%.NRD	   127#
..MX1	   615#	   615	   616	   624#	   624	   625	   630#	   630	   631	   649#	   649	   650	   657#	   657
	   658	   728#	   728	   729	   743#	   743	   744	   862#	   862	   974#	   974	  1140#	  1140	  1141
	  1202#	  1202	  1203	  1222#	  1222	  1223	  1239#	  1239	  1240	  1287#	  1287	  1288	  1294#	  1294
	  1295	  1539#	  1539	  1540	  1584#	  1584	  1585	  2299#	  2299	  2314#	  2314	  2315	  2365#	  2365
	  2366	  2427#	  2427	  2428	  2430#	  2430	  2431	  2501#	  2501	  2502	  2503#	  2503	  2509#	  2509
	  2510	  2511#	  2511
..MX2	   615#	   615	   616	   624#	   624	   625	   630#	   631	   649#	   649	   650	   657#	   657	   658
	   728#	   728	   729	   743#	   743	   744	   862#	   862	   974#	   974	  1140#	  1140	  1141	  1202#
	  1202	  1203	  1222#	  1222	  1223	  1239#	  1239	  1240	  1287#	  1287	  1288	  1294#	  1294	  1295
	  1539#	  1540	  1584#	  1585	  2299#	  2299	  2314#	  2314	  2315	  2365#	  2366	  2427#	  2427	  2428
	  2430#	  2431	  2501#	  2501	  2502	  2503#	  2503	  2509#	  2510	  2511#	  2511
..TX1	   654#	   654	   655	   663#	   663	   664	   707#	   707	   708	   709#	   709	   710	   780#	   780
	   782#	   782	   784#	   784	   788#	   788	   789	   794#	   794	   795	   795#	   796	   797#	   797
	   798	   799#	   799	   800	   802#	   802	   803	   805#	   805	   806	   815#	   815	   816	   816#
	   842#	   842	   843	   843#	   844	   845#	   845	   846	   861#	   861	   862	   866#	   866	   867
	   868#	   868	   869	   924#	   924	   925	   947#	   947	   948	   948#	   949	   950#	   950	   951
	   953#	   953	   954	   955#	   955	   956	   961#	   961	   962	   964#	   964	   965	   971#	   971
	   972	   972#	   979#	   979	   980	   981#	   981	   982	  1002#	  1002	  1003	  1004#	  1004	  1005
	  1005#	  1006	  1006#	  1007	  1008#	  1008	  1009	  1009#	  1010	  1010#	  1011	  1011#	  1012	  1012#
	  1013	  1013#	  1014	  1023#	  1023	  1024	  1031#	  1031	  1032	  1051#	  1051	  1052	  1074#	  1074
	  1075	  1080#	  1080	  1081	  1081#	  1082	  1084#	  1084	  1085	  1100#	  1100	  1101	  1101#	  1102
	  1103#	  1103	  1104	  1145#	  1145	  1146	  1151#	  1151	  1152	  1152#	  1153	  1219#	  1219	  1220
	  1220#	  1221	  1268#	  1268	  1269	  1269#	  1270	  1270#	  1271	  1272#	  1272	  1273	  1322#	  1322
	  1323	  1337#	  1337	  1338	  1338#	  1339	  1339#	  1340	  1340#	  1341	  1341#	  1342	  1343#	  1343
	  1344	  1364#	  1364	  1365	  1423#	  1423	  1424	  1542#	  1542	  1543	  1567#	  1567	  1568	  1587#
	  1587	  1588	  1629#	  1629	  1630#	  1630	  1632#	  1632	  1633#	  1633	  1637#	  1637	  1638	  1638#
	  1639	  1639#	  1640	  1640#	  1641	  1641#	  1642	  1642#	  1643	  1643#	  1644	  1644#	  1645	  1645#
	  1646	  1646#	  1647	  1647#	  1648	  1648#	  1649	  1649#	  1650	  1650#	  1651	  1651#	  1652	  1655#
	  1655	  1656	  1656#	  1657	  1657#	  1658	  1660#	  1660	  1661	  1661#	  1662	  1662#	  1663	  1663#
	  1664	  1664#	  1665	  1665#	  1666	  1666#	  1667	  1669#	  1669	  1670	  1670#	  1671	  1674#	  1674
	  1675	  1675#	  1676	  1676#	  1677	  1677#	  1678	  1678#	  1679	  1679#	  1680	  1682#	  1682	  1683
	  1683#	  1684	  1684#	  1685	  1685#	  1686	  1686#	  1687	  1687#	  1688	  1688#	  1689	  1689#	  1690
	  1690#	  1691	  1691#	  1692	  1692#	  1693	  1693#	  1694	  1694#	  1695	  1695#	  1696	  1696#	  1697
	  1699#	  1699	  1700	  1700#	  1701	  1701#	  1702	  1738#	  1738	  1739	  1824#	  1824	  1825	  1825#
	  1826	  1971#	  1971	  1972	  1973#	  1973	  1974	  1976#	  1976	  1977	  1977#	  1978	  1982#	  1982
	  1983	  1992#	  1992	  1993	  1994#	  1994	  1995	  2141#	  2141	  2142	  2142#	  2143	  2172#	  2172
	  2173	  2253#	  2253	  2254	  2257#	  2257	  2258	  2258#	  2259	  2259#	  2260	  2269#	  2269	  2270
	  2296#	  2296	  2297	  2307#	  2307	  2308	  2309#	  2309	  2310	  2311#	  2311	  2312	  2312#	  2313
	  2337#	  2337	  2338	  2341#	  2341	  2342	  2344#	  2344	  2345	  2359#	  2359	  2360	  2380#	  2380
	  2381	  2402#	  2402	  2403	  2475#	  2475	  2476	  2507#	  2507	  2508	  2661#	  2661	  2662	  2668#
	  2668	  2669	  2677#	  2677	  2678	  2681#	  2681	  2682	  2696#	  2696	  2697	  2736#	  2736	  2737
	  2743#	  2743	  2744	  2747#	  2747	  2748	  2751#	  2751	  2752	  2843#	  2843	  2844	  2857#	  2857
	  2858	  2862#	  2862	  2863	  2894#	  2894	  2895
..TX2	   654#	   655	   663#	   664	   707#	   707	   708	   709#	   709	   710	   780#	   780	   782#	   782
	   784#	   784	   788#	   789	   794#	   795	   795#	   796	   797#	   798	   799#	   800	   802#	   803
	   805#	   806	   815#	   816	   816#	   842#	   843	   843#	   844	   845#	   846	   861#	   861	   862
	   866#	   866	   867	   868#	   869	   924#	   924	   925	   947#	   948	   948#	   949	   950#	   951
	   953#	   953	   954	   955#	   955	   956	   961#	   962	   964#	   965	   971#	   971	   972	   972#
	   979#	   979	   980	   981#	   982	  1002#	  1003	  1004#	  1005	  1005#	  1006	  1006#	  1007	  1008#
	  1009	  1009#	  1010	  1010#	  1011	  1011#	  1012	  1012#	  1013	  1013#	  1014	  1023#	  1024	  1031#
	  1032	  1051#	  1052	  1074#	  1075	  1080#	  1081	  1081#	  1082	  1084#	  1085	  1100#	  1101	  1101#
	  1102	  1103#	  1104	  1145#	  1146	  1151#	  1152	  1152#	  1153	  1219#	  1219	  1220	  1220#	  1221
	  1268#	  1268	  1269	  1269#	  1270	  1270#	  1271	  1272#	  1272	  1273	  1322#	  1323	  1337#	  1337
	  1338	  1338#	  1339	  1339#	  1340	  1340#	  1341	  1341#	  1342	  1343#	  1343	  1344	  1364#	  1364
	  1365	  1423#	  1424	  1542#	  1542	  1543	  1567#	  1567	  1568	  1587#	  1587	  1588	  1629#	  1629
	  1630#	  1630	  1632#	  1632	  1633#	  1633	  1637#	  1638	  1638#	  1639	  1639#	  1640	  1640#	  1641
	  1641#	  1642	  1642#	  1643	  1643#	  1644	  1644#	  1645	  1645#	  1646	  1646#	  1647	  1647#	  1648
	  1648#	  1649	  1649#	  1650	  1650#	  1651	  1651#	  1652	  1655#	  1656	  1656#	  1657	  1657#	  1658
	  1660#	  1661	  1661#	  1662	  1662#	  1663	  1663#	  1664	  1664#	  1665	  1665#	  1666	  1666#	  1667
	  1669#	  1670	  1670#	  1671	  1674#	  1675	  1675#	  1676	  1676#	  1677	  1677#	  1678	  1678#	  1679
	  1679#	  1680	  1682#	  1683	  1683#	  1684	  1684#	  1685	  1685#	  1686	  1686#	  1687	  1687#	  1688
	  1688#	  1689	  1689#	  1690	  1690#	  1691	  1691#	  1692	  1692#	  1693	  1693#	  1694	  1694#	  1695
	  1695#	  1696	  1696#	  1697	  1699#	  1700	  1700#	  1701	  1701#	  1702	  1738#	  1739	  1824#	  1824
	  1825	  1825#	  1826	  1971#	  1972	  1973#	  1973	  1974	  1976#	  1976	  1977	  1977#	  1978	  1982#
	  1982	  1983	  1992#	  1993	  1994#	  1995	  2141#	  2142	  2142#	  2143	  2172#	  2173	  2253#	  2254
	  2257#	  2258	  2258#	  2259	  2259#	  2260	  2269#	  2270	  2296#	  2296	  2297	  2307#	  2307	  2308
	  2309#	  2309	  2310	  2311#	  2312	  2312#	  2313	  2337#	  2338	  2341#	  2341	  2342	  2344#	  2345
	  2359#	  2360	  2380#	  2381	  2402#	  2402	  2403	  2475#	  2475	  2476	  2507#	  2508	  2661#	  2662
	  2668#	  2669	  2677#	  2678	  2681#	  2682	  2696#	  2697	  2736#	  2737	  2743#	  2744	  2747#	  2748
	  2751#	  2752	  2843#	  2844	  2857#	  2858	  2862#	  2863	  2894#	  2895
.FHSLF	   727	   730	  1331	  2255	  2279	  2318	  2346	  2364	  2378	  2413	  2429	  2440	  2449	  2514
.ICDAE	   743	  2316
.ICEOF	  2314
.MOACN	  2426
.MOCIA	  2427
.MOFLO	  1127
.MOLTR	  1123
.MOLVF	  1121
.MONOP	  1120
.MOPSI	  1119	  1131
.MORDA	   668
.MORIM	  2489
.MORLS	   704	  1335	  1539	  1584
.MORSS	   640
.MORST	  1126	  1132
.MORTR	  1124
.MORVF	  1122
.MOSIM	  1389
.MOSTS	  1125
.PRIOU	  2566
.PSECT	   615	   616	   624	   625	   630	   631	   649	   650	   654	   655	   657	   658	   663	   664
	   707	   708	   709	   710	   728	   729	   743	   744	   780	   782	   784	   788	   789	   794
	   795	   796	   797	   798	   799	   800	   802	   803	   805	   806	   815	   816	   842	   843
	   844	   845	   846	   861	   862	   866	   867	   868	   869	   924	   925	   947	   948	   949
	   950	   951	   953	   954	   955	   956	   961	   962	   964	   965	   971	   972	   974	   979
	   980	   981	   982	  1002	  1003	  1004	  1005	  1006	  1007	  1008	  1009	  1010	  1011	  1012
	  1013	  1014	  1023	  1024	  1031	  1032	  1051	  1052	  1074	  1075	  1080	  1081	  1082	  1084
	  1085	  1100	  1101	  1102	  1103	  1104	  1140	  1141	  1145	  1146	  1151	  1152	  1153	  1202
	  1203	  1219	  1220	  1221	  1222	  1223	  1239	  1240	  1268	  1269	  1270	  1271	  1272	  1273
	  1287	  1288	  1294	  1295	  1322	  1323	  1337	  1338	  1339	  1340	  1341	  1342	  1343	  1344
	  1364	  1365	  1423	  1424	  1539	  1540	  1542	  1543	  1567	  1568	  1584	  1585	  1587	  1588
	  1629	  1630	  1632	  1633	  1637	  1638	  1639	  1640	  1641	  1642	  1643	  1644	  1645	  1646
	  1647	  1648	  1649	  1650	  1651	  1652	  1655	  1656	  1657	  1658	  1660	  1661	  1662	  1663
	  1664	  1665	  1666	  1667	  1669	  1670	  1671	  1674	  1675	  1676	  1677	  1678	  1679	  1680
	  1682	  1683	  1684	  1685	  1686	  1687	  1688	  1689	  1690	  1691	  1692	  1693	  1694	  1695
	  1696	  1697	  1699	  1700	  1701	  1702	  1738	  1739	  1824	  1825	  1826	  1971	  1972	  1973
	  1974	  1976	  1977	  1978	  1982	  1983	  1992	  1993	  1994	  1995	  2141	  2142	  2143	  2172
	  2173	  2253	  2254	  2257	  2258	  2259	  2260	  2269	  2270	  2296	  2297	  2299	  2307	  2308
	  2309	  2310	  2311	  2312	  2313	  2314	  2315	  2337	  2338	  2341	  2342	  2344	  2345	  2359
	  2360	  2365	  2366	  2380	  2381	  2402	  2403	  2427	  2428	  2430	  2431	  2475	  2476	  2501
	  2502	  2503	  2507	  2508	  2509	  2510	  2511	  2661	  2662	  2668	  2669	  2677	  2678	  2681
	  2682	  2696	  2697	  2736	  2737	  2743	  2744	  2747	  2748	  2751	  2752	  2843	  2844	  2857
	  2858	  2862	  2863	  2894	  2895
ADR2PG	   726
AIC	  2431
ATTXT	  2782#	  2785	  2786	  2787	  2788	  2789	  2790	  2791	  2794	  2795	  2796	  2797	  2800	  2801
	  2804	  2807	  2808	  2809	  2812
CLOSF	   696	  1289	  1296
CTXT	  3041#	  3044	  3045	  3046	  3047	  3048	  3049	  3050	  3051	  3052	  3053	  3054	  3055	  3056
	  3057	  3058	  3059	  3060
DATXT	  2705#	  2708	  2709	  2710
DEBRK	  2479	  2528
DIC	  2366
DIR	  2450
DISMS	   714	   989	  1189	  1256	  1510	  1893	  1911	  1926
EIR	  2381	  2441
ERCAL	   706	  2291
ERJMP	   617	   626	   651	   659	   730	  1325	  1391	  1403	  1541	  1586	  2293	  2320	  2349	  2520
ERR	   288#	   779	   783	   789	   793	   798	   800	   844	   846	   867	   949	   951	   976	   980
	  1014	  1082	  1102	  1447	  1449	  1451	  1557	  1561	  2140
ERR.	   280#	   659	   779	   783	   789	   793	   798	   800	   844	   846	   867	   949	   951	   976
	   980	  1014	  1082	  1102	  1447	  1449	  1451	  1557	  1561	  2140
ERRC	   293#
ERRI	   303#	   629	   662	   786	   865	  1115	  1196	  1373	  1452	  1568	  2110	  2128	  2237
ERRJ	   298#	   659
FENAM	  2930#	  2933	  2934	  2940	  2941	  2942	  2943	  2947	  2948	  2949	  2950	  2951	  2967	  2968
	  2969	  2970	  2971	  2972	  2975	  2978	  2979	  2990
FEVAL	  2954#	  2957	  2958	  2959	  2960	  2961	  2963	  2964	  2982	  2983	  2986	  2987
GETER	   731	  1332
GTJFN	   616	   650
IIC	  2319	  2348	  2519
LSTOF.	   132	  2534	  2541	  2544	  2558	  2576	  2586	  2587	  2588	  2633	  2638	  2648	  2651	  2658
	  2663	  2687	  2691	  2723	  2729	  2731	  2757	  2769	  2828	  2835	  2853	  2854	  2860	  2863
	  2864	  2876	  2879	  2885	  2889	  2897	  2928	  3010	  3016	  3017	  3027
LSTON.	  2535	  2542	  2545	  2559	  2576	  2587	  2588	  2634	  2639	  2649	  2652	  2659	  2664	  2688
	  2692	  2724	  2730	  2732	  2758	  2770	  2829	  2836	  2854	  2855	  2861	  2864	  2865	  2877
	  2880	  2886	  2890	  2898	  2929	  3011	  3017	  3018	  3028	  3065
M%GMEM	   737	  1802	  1868
M%RMEM	  1865	  2372	  2376
MOVX	   615	   624	   630	   649	   657	   728	   743	   862	   974	  1140	  1202	  1222	  1239	  1287
	  1294	  1539	  1584	  2299	  2314	  2365	  2427	  2430	  2501	  2503	  2509	  2511
MTOPR	   641	   671	   705	  1336	  1390	  1540	  1585	  2428	  2493
NOUT	  2567
NRDR	   261#	   673	   813	   819	   855	   858	   859	   984	   994	  1021	  1029	  1033	  1049	  1053
	  1079	  1156	  1179	  1247	  1253	  1260	  1262	  1358	  1362	  1441	  1484	  1491	  1498	  1506
	  1508	  1515	  1519	  1610	  1612	  1625	  1725	  1729	  1772	  1775	  1778	  1783	  1786	  1795
	  1808	  1896	  1913	  1928
NRDR.	   235#	   673	   706	   813	   819	   855	   858	   859	   984	   994	  1021	  1029	  1033	  1049
	  1053	  1079	  1156	  1179	  1247	  1253	  1260	  1262	  1358	  1362	  1441	  1484	  1491	  1498
	  1506	  1508	  1515	  1519	  1610	  1612	  1625	  1725	  1729	  1772	  1775	  1778	  1783	  1786
	  1795	  1808	  1896	  1913	  1928
NRDRC	   265#	   706
OPENF	   625	   658
PBOUT	  2554	  2667	  2672	  2684	  2697	  2771	  2909
PJRST	   708	   748	  1187	  1327	  1406	  1443	  1499	  1524	  1547	  1552	  1569	  1588	  1589	  1593
	  1604	  1887	  1916	  1933
PROLOG	   131
PSOUT	  2535	  2542	  2545	  2559	  2576	  2587	  2588	  2634	  2639	  2649	  2652	  2659	  2664	  2688
	  2692	  2724	  2730	  2732	  2758	  2770	  2829	  2836	  2854	  2855	  2861	  2864	  2865	  2877
	  2880	  2886	  2890	  2898	  2929	  3011	  3017	  3018	  3028
RIR	  2414
RLJFN	   698	  1292	  1299
SETER	  2280
SIBE	  1536	  1581
SINR	  1402
SKPIR	  2256
SOUTR	  1324
SPACS	   729
TXC	   663	   805
TXNE	   707	   709	   782	   784	   788	   797	   815	   842	   861	   866	   868	   947	   950	   971
	   972	   979	   981	  1009	  1084	  1100	  1103	  1151	  1152	  1268	  1322	  1542	  1637	  1642
	  1647	  1655	  1660	  1664	  1669	  1674	  1677	  1682	  1685	  1687	  1691	  1694	  1699	  2269
	  2296	  2307	  2309	  2380	  2668	  2677	  2862
TXNN	   780	   799	   843	   845	   948	   961	   964	  1002	  1006	  1031	  1051	  1074	  1101	  1337
	  1338	  1364	  1423	  1587	  1651	  1657	  1666	  1679	  1696	  1738	  1992	  1994	  2172	  2311
	  2312	  2344	  2359	  2507	  2681	  2696	  2736	  2743	  2747	  2751	  2843	  2857	  2894
TXO	   654	   795	   802	   816	   924	  1004	  1005	  1145	  1219	  1220	  1272	  1629	  1632	  1633
	  1656	  1663	  1665	  1670	  1678	  1686	  1690	  1695	  1825	  1971	  1977	  2258	  2402	  2475
TXOA	   794	  1010	  1012	  1269	  1340	  1341	  1567	  1638	  1640	  1643	  1645	  1648	  1661	  1675
	  1683	  1688	  1692	  1700	  2141
TXZ	   953	   955	  1008	  1080	  1081	  1270	  1343	  1630	  1641	  1646	  1650	  1676	  1684	  1693
	  1701	  1973	  1975	  1982	  2142	  2253	  2259	  2337
TXZA	  1011	  1013	  1339	  1639	  1644	  1649	  1662	  1689	  1824	  2257
TXZN	  1023	  2341	  2661
TYPE	   316#	  2534	  2541	  2544	  2557	  2576	  2586	  2587	  2588	  2633	  2638	  2648	  2651	  2658
	  2663	  2687	  2691	  2723	  2729	  2731	  2757	  2769	  2828	  2835	  2853	  2854	  2860	  2863
	  2864	  2876	  2879	  2885	  2889	  2897	  2928	  3010	  3016	  3017	  3027
$CALL	   605	   607	   609	   613	   627	   635	   647	   660	   673	   680	   683	   694	   737	   772
	   803	   811	   812	   813	   814	   816	   818	   819	   840	   850	   853	   854	   855	   857
	   858	   859	   862	   869	   870	   913	   916	   918	   923	   945	   952	   957	   968	   977
	   982	   983	   984	   986	   994	  1021	  1029	  1033	  1049	  1053	  1078	  1079	  1098	  1105
	  1138	  1154	  1155	  1156	  1168	  1170	  1178	  1179	  1183	  1184	  1200	  1206	  1217	  1229
	  1237	  1244	  1246	  1247	  1251	  1252	  1253	  1258	  1259	  1260	  1262	  1283	  1285	  1357
	  1358	  1361	  1362	  1412	  1434	  1436	  1441	  1457	  1477	  1479	  1484	  1491	  1498	  1502
	  1505	  1506	  1508	  1515	  1517	  1519	  1520	  1534	  1546	  1555	  1562	  1564	  1576	  1601
	  1610	  1612	  1625	  1718	  1725	  1729	  1772	  1775	  1778	  1783	  1786	  1795	  1802	  1808
	  1865	  1868	  1888	  1896	  1899	  1906	  1913	  1921	  1928	  1939	  1955	  1956	  1958	  1964
	  1965	  1970	  1972	  1981	  1990	  2014	  2052	  2070	  2072	  2077	  2080	  2102	  2164	  2166
	  2168	  2170	  2217	  2261	  2266	  2268	  2270	  2285	  2289	  2295	  2335	  2355	  2372	  2376
	  2412	  2435	  2445	  2531	  2532	  2533	  2540	  2543	  2547	  2548	  2572	  2573	  2584	  2591
	  2592	  2632	  2637	  2642	  2646	  2650	  2655	  2656	  2665	  2670	  2679	  2688	  2722	  2730
	  2735	  2741	  2746	  2754	  2756	  2763	  2827	  2832	  2833	  2870	  3009
$CALLR	   222#	   817	   864	  1624	  1967	  1979	  1986	  2038	  2081	  2328	  2360	  2577	  2589	  2593
	  2693	  2702	  2764	  3028
$DSP	   659#	   659	   673#	   673	   706#	   706	   779#	   779	   783#	   783	   789#	   789	   793#	   793
	   798#	   798	   800#	   800	   813#	   813	   819#	   819	   844#	   844	   846#	   846	   855#	   855
	   858#	   858	   859#	   859	   867#	   867	   949#	   949	   951#	   951	   976#	   976	   980#	   980
	   984#	   984	   994#	   994	  1014#	  1014	  1021#	  1021	  1029#	  1029	  1033#	  1033	  1049#	  1049
	  1053#	  1053	  1079#	  1079	  1082#	  1102#	  1102	  1156#	  1156	  1179#	  1179	  1247#	  1247	  1253#
	  1253	  1260#	  1260	  1262#	  1262	  1358#	  1358	  1362#	  1362	  1441#	  1441	  1447#	  1447	  1449#
	  1449	  1451#	  1451	  1484#	  1484	  1491#	  1491	  1498#	  1498	  1506#	  1506	  1508#	  1508	  1515#
	  1515	  1519#	  1519	  1557#	  1557	  1561#	  1561	  1610#	  1610	  1612#	  1612	  1625#	  1625	  1725#
	  1725	  1729#	  1729	  1772#	  1772	  1775#	  1775	  1778#	  1778	  1783#	  1783	  1786#	  1786	  1795#
	  1795	  1808#	  1808	  1896#	  1896	  1913#	  1913	  1928#	  1928	  2140#	  2140
$RET	   606	   699	   700	   711	   735	   925	  1185	  1273	  1347	  1374	  1393	  1435	  1437	  1447
	  1449	  1451	  1453	  1478	  1480	  1533	  1544	  1574	  1708	  1826	  1847	  1880	  1889	  1891
	  1900	  1907	  1909	  1922	  1924	  1951	  1960	  2074	  2090	  2110	  2129	  2140	  2144	  2177
	  2203	  2219	  2237	  2273	  2284	  2382	  2403	  2411	  2432	  2438	  2442	  2448	  2453	  2559
	  2570	  2580	  2583	  2689	  2698	  2773	  3114	  3156
..TX	   654	   663	   707	   709	   780	   782	   784	   788	   794	   795	   797	   799	   802	   805
	   815	   816	   842	   843	   845	   861	   866	   868	   924	   947	   948	   950	   953	   955
	   961	   964	   971	   972	   979	   981	  1002	  1004	  1005	  1006	  1008	  1009	  1010	  1011
	  1012	  1013	  1023	  1031	  1051	  1074	  1080	  1081	  1084	  1100	  1101	  1103	  1145	  1151
	  1152	  1219	  1220	  1268	  1269	  1270	  1272	  1322	  1337	  1338	  1339	  1340	  1341	  1343
	  1364	  1423	  1542	  1567	  1587	  1629	  1630	  1632	  1633	  1637	  1638	  1639	  1640	  1641
	  1642	  1643	  1644	  1645	  1646	  1647	  1648	  1649	  1650	  1651	  1655	  1656	  1657	  1660
	  1661	  1662	  1663	  1664	  1665	  1666	  1669	  1670	  1674	  1675	  1676	  1677	  1678	  1679
	  1682	  1683	  1684	  1685	  1686	  1687	  1688	  1689	  1690	  1691	  1692	  1693	  1694	  1695
	  1696	  1699	  1700	  1701	  1738	  1824	  1825	  1971	  1973	  1976	  1977	  1982	  1992	  1994
	  2141	  2142	  2172	  2253	  2257	  2258	  2259	  2269	  2296	  2307	  2309	  2311	  2312	  2337
	  2341	  2344	  2359	  2380	  2402	  2475	  2507	  2661	  2668	  2677	  2681	  2696	  2736	  2743
	  2747	  2751	  2843	  2857	  2862	  2894