Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/le.list
There are no other files named le.list in the archive.
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26
TABLE OF CONTENTS
4- 73 MACRO DEFINITIONS
4- 74 GENERAL MACROS
4- 89 LP11 DRIVER PARAMETERS
5- 94 LP11 LINE TABLE OFFSETS
6- 100 NURD MESSAGE DEFINITIONS
7- 106 LOCAL MACROS
7- 135 MCB DLC TO LLC INTERFACE MACRO
8- 147 QUEUE HANDLING MACROS
9- 177 LP11 DRIVER CONSTANTS
10- 215 LP11 HARDWARE DEVICE REGISTER DEFINITIONS
10- 229 VERTICAL FORMAT UNIT MACROS
11- 255 DEFAULT VERTICAL FORMAT DATA
12- 388 DISPATCH TABLES
13- 440 NRD INTERPROCESS COMMUNICATION CONVENTIONS
14- 484 NURD MESSAGE DECODER
15- 533 QUEUE UP INCOMING NURD DATA AND FEATURES
16- 583 DATA/FEATURES HYBER FUNCTION
17- 627 NURD DATA MESSAGE HANDLER
18- 724 PUT A PRINTING CHARACTER TO THE BUFFER
19- 747 FORTRAN CARRIAGE CONTROL OUTPUT
20- 804 VERTICAL FORMS CONTROL TRANSLATION
20- 845 FORMS CONTROL XLATION
21- 851 HORIZONTAL FORMS CONTROL TRANSLATION
22- 893 WRAP TO THE NEXT LINE (OR PAGE)
23- 919 GET AND PUT DATA BYTES
26- 1030 PUT COMPRESSION PAIR TO PHYSICAL BUFFER
27- 1058 NURD FEATURES MESSAGE HANDLERS
29- 1178 FEATURES READ
30- 1259 FEATURES SET
31- 1373 NURD MESSAGE BUILDER
32- 1417 FEATURE FINDER
33- 1450 NURD CONTROL MESSAGE HANDLER
34- 1540 NON-INTERRUPT CONTROL MESSAGE PROCESSING
35- 1595 CONTROL - REQUEST STATUS
35- 1605 SEND ATTENTION MESSAGE
36- 1676 CONTROL - DUMP OUTPUT BUFFERS
36- 1691 CONTROL - PAUSE
37- 1708 CONTROL - RESUME OUTPUT
38- 1731 CONTROL - ABORT COMMAND SET
39- 1764 CONTROL - REQUEST CAPABILITIES
39- 1774 SEND CAPABILITIES MESSAGE
40- 1815 SEND ALERT MESSAGE
41- 1829 TIMER HANDLER
42- 1878 RESOURCE RETURN
43- 1903 OPEN/CLOSE DEVICE
45- 2023 PHYSICAL BUFFER MANAGEMENT
46- 2059 DDM AND DLC TRANSMIT COMPLETE
47- 2128 FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES
48- 2160 OUTPUT ENABLE
49- 2189 INTERRUPT SERVICE ROUTINE
50- 2342 THE END
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 3
1 .TITLE LE - NURD LP11 LINE PRINTER DLC
2 .IDENT "X01010"
3 ;
4 ; COPYRIGHT (C) 1976, 1977, 1978, 1979
5 ;
6 ; DIGITAL EQUIPMENT CORPORATION (DEC)
7 ; 122A MAIN STREET
8 ; MAYNARD, MASSACHUSETTS 01754
9 ;
10 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
11 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE
12 ; INCLUSION OF DEC'S COPYRIGHT NOTICE AND ONLY FOR USE ON SAID
13 ; SYSTEM. THIS SOFTWARE AND ANY SUCH COPIES IN ANY FORM MAY
14 ; NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY PERSON OR
15 ; GROUP NOT A PARTY TO THE LICENSING AGREEMENT. TITLE TO AND
16 ; OWNERSHIP OF THIS SOFTWARE SHALL AT ALL TIMES REMAIN WITH
17 ; DEC.
18 ;
19 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
20 ; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
21 ; TO FORM OR FUNCTION BY DEC.
22 ;
23 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
24 ; ITS SOFTWARE ON EQUIPMENT NOT SUPPLIED BY DEC.
25 ;
26 ;
27 ;
28 ;
29 ; TOM POWERS
30 ; DECEMBER, 1976
31 ;
32 ; EDIT HISTORY:
33 ;
34 ; CREATED FOR LP20 01-DEC-76
35 ; ADDED CD20 ELEMENTS 23-FEB-77
36 ; ADDED NURD ELEMENTS 01-MAR-77
37 ; ADDED FIRST LP11/CR11 ELEMENTS 17-MAY-77
38 ;
39 ; UPDATED FOR MCBBL5 BY ALAN D. PECKHAM 10-JAN-78
40 ;
41 ; MOLESTED BY R. SOUTH DURING THE RITES OF SPRING, 1978.
42 ;
43 ; X01001 19-MAR-79 SCOTT G. ROBINSON
44 ; CHANGE CONTROL START/STOP PROCESSING TO NOT
45 ; MUNDGE A CCB.
46 ;
47 ; X01002 19-APR-79 SCOTT G. ROBINSON
48 ; ENSURE CORRECT RESPONSE CODE TO "ABORT UNTIL
49 ; CLEAR".
50 ;
51 ; X01003 1-MAY-79 BUREN W. HOFFMAN
52 ; CLEAR BUFFER COUNT (L.MSGS) ON ABRTAL. ALSO, SET
53 ; RESPONSE CODE PROPERLY IN SAME ROUTINE. FIXED TYPO
54 ; IN SNDCAP.
55 ;
56 ; X01004 3-MAY-79 BUREN W. HOFFMAN
57 ; CLEAR DATA MESSAGE BUFFER SIZE (L.DMBS) ON ABRTAL.
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 3-1
58 ;
59 ; X01005 18-MAY-79 BUREN W. HOFFMAN
60 ; FIXED TYPO IN FLUSHQ, AND CORRECTED PAGE-LIMIT CHECKING.
61 ;
62 ; X01006 23-MAY-79 BUREN W. HOFFMAN
63 ; CLEAN UP CCB POINTERS AFTER THEY ARE RELEASED.
64 ;
65 ; X01007 19-JUL-79 BUREN W. HOFFMAN
66 ; REWROTE INTERRUPT ROUTINE TO USE OFFSETS INTO DLT DATA BASE
67 ; INSTEAD OF MOVING POINTER AROUND. ALSO, GENERAL COSMETICS
68 ; ON REST OF CODE.
69 ;
70 ; X01010 27-JUL-79 BUREN W. HOFFMAN
71 ; FIXED BUG IN INTERRUPT SERVICE, INTRODUCED IN X01007.
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 4
MACRO DEFINITIONS
73 .SBTTL MACRO DEFINITIONS
74 .SBTTL GENERAL MACROS
75
76 .MCALL INHIB$,ENABL$
77 .MCALL HWDDF$,NSPDF$,CCBDF$,LEDLT$,$INTSX,MAP,SAVMAP,RESMAP,NURDF$,NRDIN$
78 000000 HWDDF$ ; DEFINE THE HARDWARE SYMBOLS
79 000000 NSPDF$ ; DEFINE NSP SYMBOLS
80 000000 CCBDF$ ; DEFINE THE CCB SYMBOLS
81
82
83 .LIST ME
84 000000 NRDIN$
; CCB STATUS CODES : DLC ->NRD
100201 LS.ABO = 100201 ;ABORTING(COMPLIANCE WITH HIGHER (POWERS)
100202 LS.REJ = 100202 ;REJECTING MSG
100203 LS.CLO = 100203 ;DEVICE IS CLOSED,REJECTING
100204 LS.ILM = 100204 ;ILLEGAL NURD MSG
100205 LS.BOM = 100205 ;DLC IS ABORTING THE LINK DUE TO USER ERROR
; CCB STATUS CODES : NRD -> NRM
100377 NR.NDV = 100377 ;NOT A NURD DEVICE
85 .NLIST ME
86
87
88
89 .SBTTL LP11 DRIVER PARAMETERS
90
91 000004 LEPBFS = 4 ; NUMBER OF PHYSICAL BUFFERS TO HOARD
92 000005 LEHNG = 5 ; HUNG DEVICE TIME CONSTANT
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 5
LP11 LINE TABLE OFFSETS
94 .SBTTL LP11 LINE TABLE OFFSETS
95
96 .LIST ME
97 000000 LEDLT$ <:>,<=>
.MCALL TMPDF$
000000 TMPDF$
.MCALL .BIN,.CNB,.CNW,.CORE,.CSR,.DVCHA,.INT,.INT1,.INT2,.INT3
.MCALL .LIBR,.LINKS,.LFLHD,.LSTHD,.LTAB,.MPLHD,.POOL,.PRI,.SCOM
.MCALL .SECSR,.SLNB,.SLNW,.STNB,.STNW,.UNB,.UNW,.VFY
;
; NURD LP11 DEVICE DRIVER LINE TABLE TEMPLATE
;
000000 .ASECT
000000 .=0
000000 L.TIMC:: .BLKB 1 ;TWO BYTE TIMER ENTRY, CURRENT VALUE
000001 L.TIMI:: .BLKB 1 ; AND INITIAL TIMER VALUE
000002 L.CALL:: .INT ;INTERRUPT DISPATCH CALL
.EVEN
.IF DF M$$MGE
000002 .BLKW 7
.IFF
.BLKW 2
.ENDC
000020 L.PRI:: .PRI ;SCHEDULING PRIORITY
.EVEN
000020 .BLKW 1
;DDM LEVEL DATA BASE
;ORDER FOR THIS SECTION IS CRITICAL
000022 L.CSR:: .CSR ;ONE WORD CSR POINTER
.EVEN
000022 .BLKW 1
000024 L.ASTS:: .BLKW 1 ;ACTION STATUS BIT MAP
000001 LA.CLO == 1 ;CLOSED
000002 LA.PAU == 2 ;PAUSED
000004 LA.ADN == 4 ;ABORT WHEN DONE WITH DDM QUEUE
000010 LA.ABO == 10 ;ABORTING
000020 LA.ABE == 20 ;CLEAR ABORT ON EOF (ELSE ON CLEAR)
000040 LA.CPC == 40 ;CLEAR PAGE COUNTER ENABLE
000100 LA.AKR == 100 ;ACKNOWLEDGE REQUESTED
000200 LA.ERR == 200 ;AN ERROR HAS BEEN NOTED
000400 LA.EOF == 400 ;CURRENT MESSAGE HAS EOF
001000 LA.EOR == 1000 ;END OF RECORD ENCOUNTERED
002000 LA.CTL == 2000 ;CONTROL MESSAGE TO RETURN
004000 LA.TMO == 4000 ;DEVICE TIME OUT
010000 LA.PLE == 10000 ;PAGE LIMIT ERROR OCCURRED
000026 L.PUBP:: .BLKW 2 ;BUFFER PTR DOUBLEWORD
000032 L.PUBS:: .BLKW 1 ;BUFFER SIZE DOWN COUNTER
000034 L.DDMQ:: .LSTHD ;CCB'S QUEUED FOR OUTPUT
.EVEN
000034 .BLKW 2
000040 L.PGCT:: .BLKW 1 ;PHYSICAL PAGE COUNT
000042 L.PGLM:: .BLKW 1 ;PAGE LIMIT REGISTER
000044 L.PLNC:: .BLKB 1 ;PHYSICAL LINE COUNT
000045 L.HUNG:: .BLKB 1 ;DEVICE HUNG TIMER
;MISCELLANEOUS ITEMS
.EVEN
000046 L.SLN:: .SLNW ;DEVICE SYSTEM LINE NUMBER
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 5-1
LP11 LINE TABLE OFFSETS
.EVEN
000046 .BLKW 1
000050 L.IOCN:: .BLKW 1 ;OUTSTANDING IO COUNT
000052 L.IOWT:: .BLKW 1 ;CLOSE WAIT FLAG = CLOSE CCB
;CONTROL MESSAGE PROCESSING DATA BASE
.EVEN
000054 L.CMSQ:: .LSTHD ;CONTROL MESSAGE QUEUE
.EVEN
000054 .BLKW 2
000060 L.RECO:: .BLKB 1 ;CONTROL MESSAGE RESOURCE ERROR FLAG
000061 L.RATT:: .BLKB 1 ;PENDING ATTENTION MESSAGE FLAG - REASON CODE
000062 L.CAPP:: .BLKB 1 ;PENDING CAPABILITIES MESSAGE FLAG
;DATA & FEATURES PROCESSING DATA BASE
.EVEN
000064 L.CSMP:: .BLKW 1 ;CHARACTER SET MAP ADDRESS
000066 L.LNCT:: .BLKB 1 ;LINE COUNTER
000067 L.COCT:: .BLKB 1 ;COLUMN COUNTER
.EVEN
000070 L.VFUA:: .BLKW 1 ;ADDRESS OF VFU MAP IN USE
000072 L.DLCQ:: .LSTHD ;CCB'S QUEUED INTO DLC
.EVEN
000072 .BLKW 2
000076 L.MFLG:: .BLKB 1 ;CURRENT NURD MESSAGE FLAGS
000077 L.DMSQ:: .BLKB 1 ;LAST GOOD/CURRENT DATA SEQ NUMBERS
000100 L.DMSG:: .BLKB 1 ;DATA MESSAGE SEGMENT COUNT BYTE
000101 L.DMSS:: .BLKB 1 ;DATA MSG CURRENTSEGMENT SIZE
000102 L.CAPN:: .BLKB 1 ;CURRENT INDEX INTO CAPABILITIES LIST
000103 L.NFSP:: .BLKB 1 ;NO. FEATURE SPECS IN CURRENT MSG
.EVEN
000104 L.DMCR:: .BLKW 1 ;CHAR REPEAT COUNT, 2 BYTES USED AS WORD
000106 L.DMAD:: .BLKW 2 ;DATA MSG ADDRESS DOUBLEWORD (PTR)
000112 L.DMBS:: .BLKW 1 ;DATA MSG BUFFER SIZE
000114 L.PLBQ:: .LSTHD ;FREE PHYSICAL BUFFER QUEUE
.EVEN
000114 .BLKW 2
000120 L.PLBP:: .BLKW 2 ;CHARACTER POINTER DOUBLEWORD
000124 L.PLBS:: .BLKW 1 ;BUFFER SIZE DOWN COUNTER
000126 L.PBRC:: .BLKB 1 ;TEMP BYTE
.EVEN
000130 L.MSGQ:: .LSTHD ;OUTGOING MSG QUEUE
.EVEN
000130 .BLKW 2
000134 L.MSGA:: .BLKW 2 ;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
000140 L.MSGS:: .BLKW 1 ;CURRENT MSG BUFFER SIZE
;DATA/FEATURES PROCESS HYBER CONTEXT
000142 L.DWAK:: .BLKB 1 ;WAKE CONDITION
000001 DWAKS == 1 ;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
000002 DWAKP == 2 ;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
000003 DWAKT == 3 ;WAKE ON CLOCK TOCK
000004 DWAKR == 4 ;WAKE WHEN RESUME CONTROL FCN DONE
000143 L.DTXL:: .BLKB 1 ;NO. WORDS ON STACK AT SLEEP TIME
.EVEN
000144 L.DFSP:: .BLKW 1 ;STACK ORIGIN
000020 DTXTSZ == 16. ;DATA/FEATURES PROCESS CONTEXT ALLOCATED
000146 L.DTXT:: .BLKW DTXTSZ ;CONTEXT BLOCK FOR DA/FEATURES PROCESS
;FEATURE CRUFT
000206 L.CFET:: ;LP11 COMMON FEATURE LIST
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 5-2
LP11 LINE TABLE OFFSETS
000206 .BLKB 1 ;NUMBER OF COMMON FEATURES
000207 .BLKB 1 ;FEATURE FE.DAT SUPPORTED
000210 .BLKB 1 ;FEATURE FE.SER NOT SUPPORTED
000211 .BLKB 1 ;FEATURE FE.LCR SUPPORTED
000212 .BLKB 1 ;FEATURE FE.FWD SUPPORTED
000213 .BLKB 1 ;FEATURE FE.EOF NOT SUPPORTED
000214 .BLKB 1 ;FEATURE FE.DVT NOT SUPPORTED
000215 .BLKB 1 ;FEATURE FE.TRN SUPPORTED
000216 .BLKB 1 ;FEATURE FE.FNM NOT SUPPORTED
000217 .BLKB 1 ;FEATURE FE.DWD SUPPORTED
000011 LCFETL == .-L.CFET-1
000220 L.DFET:: .BLKB 1 ;NUMBER OF DEVICE SPECIFIC FEATURES
000221 .BLKB 1 ;FEATURE 129 NOT DEFINED
000222 .BLKB 1 ;FEATURE LP.HT SUPPORTED
000223 .BLKB 1 ;FEATURE LP.SFC SUPPORTED
000224 .BLKB 1 ;FEATURE LP.OVP NOT SUPPORTED
000225 .BLKB 1 ;FEATURE LP.CVF NOT SUPPORTED
000226 .BLKB 1 ;FEATURE LP.FCC SUPPORTED
000227 .BLKB 1 ;FEATURE LP.VFR NOT SUPPORTED
000230 .BLKB 1 ;FEATURE LP.CHS SUPPORTED
000231 .BLKB 1 ;FEATURE LP.PLE SUPPORTED
000232 .BLKB 1 ;FEATURE LP.OPV NOT SUPPORTED
000012 LDFETL == .-L.DFET-1
;FEATURE BLOCKS
000000 F.FSB == 0 ;(BM)FEATURES STATUS BYTE
000000 FB.CL0 == 0 ;CLASS 0 FEATURE => <BIT> FORM
000001 FB.CL1 == 1 ;CLASS 1 FEATURE => <CNT><...> FORM
000002 FB.WRD == 2 ;FEATURE IS A WORD AND
; F.FCV IS A DLT OFFSET TO IT
000004 FB.STR == 4 ;FEATURE IS A STRING
;F.FCV IS THE LENGTH
;CURRENT VALUE BEGINS AT F.FCV+1
;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
000010 FB.STE == 10 ;STANDARD VALUE EXISTS
000020 FB.SST == 20 ;STANDARD IS SET
000040 FB.CP == 40 ;CHANGE PENDING
000100 FB.CA == 100 ;CHANGE ALLOWED
000001 F.FCV == 1 ;FEATURE CURRENT VALUE BYTE
000002 F.FSV == 2 ;FEATURE STANDARD VALUE BYTE
000233 LE.DAT:: ;DATA MODE
000233 .BLKB 1
000031 LEDATS == FB.CL1!FB.SST!FB.STE ;INITIAL STATUS OF LE.DOF LE.DAT
000234 .BLKB 1 ;ASCII
000235 .BLKB 1 ;ASCII IS STD
;LE.SER:: ;SERIAL NUMBER
000236 LE.LCR:: ;LOWER CASE RAISE
000236 .BLKB 1
000100 LELCRS == FB.CL0!FB.CA ;INITIAL STATUS OF LE.LCR
000237 .BLKB 1 ;OFF
000240 LE.FWD:: ;FORM WIDTH
000240 .BLKB 1
000241 .BLKB 1
;LE.EOF: ;EOF RECOGNITION
;LE.DVT:: ;DEVICE TYPE
000242 LE.TRN:: ;RECORD TRUNCATION
000242 .BLKB 1
000130 LETRNS == FB.CL0!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.TRN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 5-3
LP11 LINE TABLE OFFSETS
000243 .BLKB 1 ;OFF
000244 .BLKB 1 ;OFF IS STD
;LE.FNM:: ;FORM NAME
000245 LE.DWD:: ;DEVICE WIDTH
000245 .BLKB 1
000246 .BLKB 1 ;STD WIDTH
; DEVICE SPECIFIC FEATURES
000247 LE.HT:: ;HORIZONTAL TAB
000247 .BLKB 1
000031 LEHTS == FB.CL1!FB.SST!FB.STE ;INITIAL STATUS OF LE.HT
000250 .BLKB 1 ;STD TABS ON
000251 .BLKB 1
000252 LE.SFC:: ;STD VFU
000252 .BLKB 1
000030 LESFCS == FB.CL0!FB.SST!FB.STE ;INITIAL STATUS OF LE.SFC
000253 .BLKB 1 ;ON
000254 .BLKB 1
;LE.OVP:: ;OVERPRINT LIMIT
;LE.CVF:: ;CUSTOM VFU
000255 LE.FCC:: ;FORTRAN CARRIAGE CONTROL
000255 .BLKB 1
000130 LEFCCS == FB.CL0!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.FCC
000256 .BLKB 1 ;OFF
000257 .BLKB 1
;LE.VFR:: ;VARIABLE FORMS RATIO
000260 LE.CHS:: ;CHARACTER SET
000260 .BLKB 1
000261 .BLKB 1 ;96 CHAR ASCII
000262 LE.PLE:: ;PAGE LIMIT ENFORCEMENT
000262 .BLKB 1
000133 LEPLES == FB.CL1!FB.WRD!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.PLE
000263 .BLKB 1 ;PAGE COUNTER
000264 .BLKB 2 ;STD = 0 => OFF
;LE.OPV:: ;OPTICAL VFU
000000 .PSECT
98 .NLIST ME
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 6
NURD MESSAGE DEFINITIONS
100 .SBTTL NURD MESSAGE DEFINITIONS
101
102 .LIST ME
103 000000 NURDF$
; GENERAL MESSAGE DEFINITIONS
000000 N.TYP = 0 ;(B)OFFSET TO MESSAGE TYPE
000017 NM.TYP = 17 ;MESSAGE TYPE MASK
000000 NM.DAT = 0&NM.TYP ;DATA MESSAGE
000001 NM.ATT = 1&NM.TYP ;ATTENTION MESSAGE
000002 NM.FTR = 2&NM.TYP ;FEATURES MESSAGE
000003 NM.CTL = 3&NM.TYP ;CONTROL MESSAGE
000004 NM.ALR = 4&NM.TYP ;ALERT MESSAGE
000005 NM.CAP = 5&NM.TYP ;CAPABILITIES MESSAGE
000006 NM.OTR = 6&NM.TYP ;***CURRENT OUT OF RANGE VALUE***
000001 N.MFL = 1 ;(BM)OFFSET TO MESSAGE FLAGS
; DATA MESSAGE DEFINITIONS
;DATA MESSAGE OFFSETS
000002 N.DSEQ = 2 ;(B)SEQUENCE NUMBER
000003 N.DFLG = 3 ;(BM)DATA FLAGS
000001 ND.ACK = 1 ;ACKNOWLEDGE REQD
000002 ND.IER = 2 ;INPUT ERROR
000004 ND.EOF = 4 ;SEGMENT IS END OF FILE
000004 N.DSGC = 4 ;(B)SEGMENT COUNT
000005 N.DDAT = 5 ;START OF DATA
;DATA SEGMENT CONTROL BYTE DEFINITIONS
000200 ND.CMP = 200 ;COMPRESSION FLAG
;CONTROL BYTE=0 => END OF RECORD MARK
; ATTENTION MESSAGE DEFINITIONS
;ATTENTION MESSAGE OFFSETS
000002 N.ALGD = 2 ;(B)"LAST GOOD" ID
000003 N.ACOD = 3 ;(B)ATTENTION CODE OFFSET
;ATTENTION CODE VALUES
;0 IS RESERVED
000001 N.ASTC = 1 ;STATUS CHANGE
000002 N.AACK = 2 ;DATA ACKNOWLEDGEMENT
000003 N.ARQS = 3 ;REQUESTED
000004 N.AABC = 4 ;OUTPUT ABORT RECEIVED OR INPUT ABORT COMPLETE
000005 N.APLE = 5 ;PAGE LIMIT EXCEEDED
000004 N.AFLG = 4 ;(BM)(EX)ATTENTION FLAGS (UP TO 3 BYTES REQ'D)
;COMMON FLAGS
;BYTE 1 FLAGS
000001 NA.FAT = 1 ;FATAL ERROR
000002 NA.OFL = 2 ;OFFLINE
000004 NA.PAU = 4 ;PAUSED
000010 NA.OMD = 10 ;OUT OF MEDIA
000020 NA.JAM = 20 ;JAMMED
000040 NA.OOF = 40 ;OPERATOR OFFLINE
000100 NA.NOE = 100 ;NON OPERATOR ERROR
;BYTE 2 FLAGS
000001 NA.OUF = 1 ;OUTPUT FULL
000002 NA.NAC = 2 ;DEVICE NOT ACCESSIBLE
000004 NA.DTO = 4 ;DEVICE TIME OUT
000010 NA.RNA = 10 ;RESOURCE NOT AVAILABLE
;LINE PRINTER SPECIFIC ERRORS
000020 NA.PSE = 20 ;PAPER SLEW ERROR
000040 NA.INK = 40 ;OUT OF INK
;RESERVED CODE
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 6-1
NURD MESSAGE DEFINITIONS
;BYTE 3 FLAGS
000001 NA.OVP = 1 ;ILLEGAL OVERPRINT
;PUNCHED CARD SPECIFIC ERRORS
;BYTE 2 FLAGS
000020 NA.PF = 20 ;PICK FAILURE
000040 NA.RAP = 40 ;READ AFTER PUNCH ERROR
000100 NA.REG = 100 ;REGISTRATION ERROR
;BYTE 3 FLAGS
000001 NA.IVP = 1 ;INVALID PUNCH ERROR
; N.APGC = ;(2B)PAGE CNTR (PREV FLD EXTNSBLE, NO FIXED OFFSET)
; FEATURES MESSAGES DEFINITIONS
;FEATURES MESSAGE OFFSETS
000002 N.FSEQ = 2 ;(B)FEATURES SEQUENCE NUMBER
000003 N.NSPC = 3 ;(B) NO. OF FEATURES SPECS IN MSG
000004 N.FSPC = 4 ;OFFSET TO 1ST FEATURE SPEC
;REMAINING OFFSETS RELATIVE TO BEG OF A FEATURE SPEC
000000 N.FID = 0 ;(B)FEATURES IDENTIFIER
;COMMON UNIT RECORD DEVICE FEATURES
000000 FE.ESC = 0 ;RESERVED FOR FUTURE ESCAPE CODE
000001 FE.DAT = 1 ;(CLASS 1) DATA MODE
000001 DM.ASC = 1 ;7 BIT ASCII
000002 DM.CLI = 2 ;COLUMNIMAGE
000003 DM.EBC = 3 ;EBCDIC
000004 DM.AUG = 4 ;AUGMENTED COLUMNIMAGE
000005 DM.AS8 = 5 ;8 BIT ASCII
000002 FE.SER = 2 ;(CLASS 1) SERIAL NUMBER
000003 FE.LCR = 3 ;(CLASS 0) LOWER CASE RAISE
000004 FE.FWD = 4 ;(CLASS 1) FORM WIDTH
000005 FE.EOF = 5 ;(CLASS 1) EOF RECOGNITION
000001 EO.ASC = 1 ;ASCII
007417 EOFASC = 7417 ;ASCII EOF (COLUMN 1) PUNCH
000002 EO.IMG = 2 ;IMAGE
000006 FE.DVT = 6 ;(CLASS 1) DEVICE TYPE
000007 FE.TRN = 7 ;(CLASS 0) RECORD TRUNCATION
000010 FE.FNM = 8. ;(CLASS 1) FORM NAME
000011 FE.DWD = 9. ;(CLASS 1) DEVICE WIDTH
;DEVICE SPECIFIC FEATURES
;LINE PRINTER
000202 LP.HT = 130. ;(CLASS 1) HORIZONTAL TAB STOP
000203 LP.SFC = 131. ;(CLASS 0) STANDARD VERTICAL FORMS CONTROL
000204 LP.OVP = 132. ;(CLASS 1) OVERPRINT LIMIT
000205 LP.CVF = 133. ;(CLASS 1) CUSTOM VFU
000206 LP.FCC = 134. ;(CLASS 0) FORTRAN CARRIAGE CONTROL
000207 LP.VFR = 135. ;(CLASS 1) VARIABLE FORMS RATIO
000001 VF.6LI = 1 ;6 LINES PER INCH
000002 VF.8LI = 2 ;8 LINES PER INCH
000210 LP.CHS = 136. ;(CLASS 1) CHARACTER SET
000001 CH.64 = 1 ;64 CHARACTER SET
000002 CH.96 = 2 ;96 CHARACTER SET
000211 LP.PLE = 137. ;(CLASS 1) PAGE LIMIT ENFORCEMENT
000212 LP.OPV = 138. ;(CLASS 1) OPTICAL VFU NAME
;CARD READER/PUNCH
000202 CD.CWD = 130. ;(CLASS 1) CARD WIDTH
;SPECIAL FEATURE ID
000377 FE.ALL = 255. ;AFFECTS ALL FEATURES(READ OR SET TO STD.)
000001 N.FFLG = 1 ;(BM)FEATURES FLAGS
000001 NF.CMD = 1 ;SET FEATURES=1, READ=0
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 6-2
NURD MESSAGE DEFINITIONS
000002 NF.STD = 2 ;STANDARD FLAG
000002 N.FCLS = 2 ;(B)FEATURE CLASS
000000 FC.CL0 = 0 ;CLASS 0 FEATURE => <BIT> FORM
000001 FC.CL1 = 1 ;CLASS 1 FEATURE => <CNT><...> FORM
000002 FC.SST = 2 ;SET TO STANDARD
000003 FC.CLM = 3 ;CLASS MASK
000003 N.FRSP = 3 ;FEATURE RESPONSE FIELD
000001 FR.USF = 1 ;UNSUPPORTED FEATURE
000002 FR.BCL = 2 ;BAD CLASS SPEC'D
000003 FR.NST = 3 ;NO STANDARD VALUE
000004 FR.ERR = 4 ;FEATURE DATA OR FORMAT ERROR
000005 FR.CPN = 5 ;CHANGE PENDING
000006 FR.NEB = 6 ;NOT ENOUGH BUFFER (FOR REPORT)
000007 FR.DNP = 7 ;DEVICE NOT PAUSED
000004 N.FDAT = 4 ;BEG FEATURES DATA(FORMAT CLASS DEPENDENT)
;CONTROL MESSAGE DEFINITIONS
;CONTROL MESSAGE OFFSETS
000002 N.CSEQ = 2 ;(B)CONTROL SEQUENCE NUMBER
000003 N.CCMD = 3 ;(B)CONTROL COMMAND
000001 NC.AUE = 1 ;(INTERRUPT) ABORT UNTIL EOF
000002 NC.AUC = 2 ;(INTERRUPT) ABORT UNTIL CLEARED
000003 NC.CAB = 3 ; CLEAR OUTPUT ABORT/ ACK INPUT ABORT
000004 NC.RQS = 4 ; REQUEST STATUS
000005 NC.DMP = 5 ; DUMP OUTPUT BUFFERS
000006 NC.PAU = 6 ;(INTERRUPT) PAUSE
000007 NC.RES = 7 ;(INTERRUPT) RESUME
000011 NC.RQC = 9. ; REQUEST CAPABILITIES
000004 N.CRES = 4 ;(B)CONTROL RESULT CODE
;NC.AUE,NC.AUC RESPONSE
000000 NR.ABS = 0 ;ABORT STATE
000001 NR.NAB = 1 ;NOTHING TO ABORT
;NC.AUE RESPONSE
000002 NR.NOE = 2 ;NO EOF DEFINED
;NC.CAB RESPONSE
000000 NR.ACC = 0 ;ABORT COMPLETE CLEARED
000001 NR.ACN = 1 ;ABORT COMPLETE NOT SET
;NC.RQS RESPONSE
000000 NR.ATT = 0 ;ATTENTION MSG FOLLOWS
;NC.DMP RESPONSE
000000 NR.DMP = 0 ;OUTPUT BEING DUMPED
000001 NR.NOB = 1 ;NO OUTPUT BUFFERED
;NC.PAU RESPONSE
000000 NR.DPS = 0 ;DEVICE WILL PAUSE
000001 NR.PAU = 1 ;DEVICE ALREADY PAUSED
000002 NR.NDP = 2 ;NO DATA TRANSFER TO PAUSE
;NC.RES RESPONSE
000000 NR.RES = 0 ;DEVICE WILL RESUME
000001 NR.NPS = 1 ;DEVICE NOT PAUSED
000002 NR.NDR = 2 ;NO DATA TRANSFER TO RESUME
;NC.RQC RESPONSE
000000 NR.CAP = 0 ;CAPABILITIES FOLLOWS
; CAPABILITIES MESSAGE DEFINITIONS
;CAPABILITIES MESSAGE OFFSETS
000002 N.PCNT = 2 ;LIST COUNT BYTE
000003 N.PCAP = 3 ;START OF CAPABILITIES LIST
104 .NLIST ME
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 7
LOCAL MACROS
106 .SBTTL LOCAL MACROS
107
108 .MACRO PUSH LIST
109 .IRP .A,<LIST>
110 MOV .A,-(SP)
111 .ENDR
112 .ENDM PUSH
113
114
115 .MACRO POP LIST
116 .IRP .A,<LIST>
117 MOV (SP)+,.A
118 .ENDR
119 .ENDM POP
120
121
122 .MACRO CRASH
123 IOT
124 .ENDM CRASH
125
126
127 .MACRO DFHYBER WAKE
128 CALL STOPLE
129 MOVB #WAKE,L.DWAK(R5)
130 CALL DFSLEP
131 .ENDM
132
133
134
135 .SBTTL MCB DLC TO LLC INTERFACE MACRO
136
137 .MACRO $TOBDM WHICH,SFC
138 .IF NB <SFC>
139 MOV SFC,R3 ; LOAD SUCCESS/FAILURE CODE
140 .IFF
141 CLR R3 ; DEFAULT IS SUCCESS
142 .ENDC ; NB <SFC>
143 MOV L.SLN(R5),C.LIN(R4) ; IDENTIFY SENDER
144 CALL $'WHICH'CMP ; DISPATCH TO COMMEXEC
145 .ENDM $TOBDM
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 8
QUEUE HANDLING MACROS
147 .SBTTL QUEUE HANDLING MACROS
148
149 .MACRO DEQ$ OFFSET,TAG,?TAG1,?TAG2
150 INHIB$
151 MOV OFFSET(R5),R4
152 .IF NB, TAG
153 BNE TAG1
154 ENABL$
155 BR TAG
156 TAG1:
157 .IFF
158 BEQ TAG2+2
159 .ENDC
160 MOV @R4,OFFSET(R5)
161 BNE TAG2
162 MOV R5,OFFSET+2(R5)
163 .IIF NB <OFFSET>, ADD #OFFSET,OFFSET+2(R5)
164 TAG2: CLR @R4
165 ENABL$
166 .ENDM DEQ$
167
168
169 .MACRO ENQ$ OFFSET
170 INHIB$
171 CLR @R4
172 MOV R4,@OFFSET+2(R5)
173 MOV R4,OFFSET+2(R5)
174 ENABL$
175 .ENDM ENQ$
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 9
LP11 DRIVER CONSTANTS
177 .SBTTL LP11 DRIVER CONSTANTS
178
179 000000 NUL = 0
180 000001 SOH = 1
181 000002 STX = 2
182 000003 ETX = 3
183 000004 EOT = 4
184 000005 ENQ = 5
185 000006 ACK = 6
186 000007 BEL = 7
187 000010 BS = 10
188 000011 HT = 11
189 000012 LF = 12
190 000013 VT = 13
191 000014 FF = 14
192 000015 CR = 15
193 000016 SO = 16
194 000017 SI = 17
195 000020 DLE = 20
196 000021 DC1 = 21
197 000022 DC2 = 22
198 000023 DC3 = 23
199 000024 DC4 = 24
200 000025 NAK = 25
201 000026 SYN = 26
202 000027 ETB = 27
203 000030 CAN = 30
204 000031 EM = 31
205 000032 SUB = 32
206 000033 ESC = 33
207 000034 FS = 34
208 000035 GS = 35
209 000036 RS = 36
210 000037 US = 37
211 000040 SPA = 40
212 000177 DEL = 177
213 000334 ERRCHR = '\!200 ; DEC STD ERROR CHARACTER
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 10
LP11 HARDWARE DEVICE REGISTER DEFINITIONS
215 .SBTTL LP11 HARDWARE DEVICE REGISTER DEFINITIONS
216
217 ; * LP11 HARDWARE DEVICE REGISTER DEFINITIONS
218 000000 LPS = 0 ; LINE PRINTER STATUS REGISTER
219 100000 ERROR = 100000 ; GENERAL (ONLY KNOWN) ERROR BIT
220 000200 DONE = 200 ; CHARACTER DONE/PRINTER READY
221 000100 INTENB = 100 ; INTERRUPT ENABLE
222 000002 LPB = 2 ; LINE PRINTER DATA BUFFER REGISTER
223 ; SEVEN BIT ASCII, WRITE ONLY
224 000004 LESZ = 4 ; SIZE OF LP11 REGISTER BLOCK IN BYTES
225
226
227
228
229 .SBTTL VERTICAL FORMAT UNIT MACROS
230
231 .MACRO .ZER $$
232 .P'$$=0
233 .ENDM .ZER
234
235
236
237 .MACRO SETCHN A,B ; 'OR' NEW CHANNEL SETTING INTO MAP WORD
238 .P'B = .P'B ! A
239 .ENDM SETCHN
240
241
242 .MACRO WRDVFU X
243 .WORD .P'X
244 .ENDM WRDVFU
245
246
247 .MACRO DEFPAR CHN,LINC,LAST
248 $$ = 1
249 .REPT LAST/LINC ; NUMBER OF STOPS IN CHANNEL
250 SETCHN CHN,\$$ ; 'OR' IN NEXT STOP
251 $$ = $$ + LINC
252 .ENDR ; R L-/L-
253 .ENDM DEFPAR
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 11
DEFAULT VERTICAL FORMAT DATA
255 .SBTTL DEFAULT VERTICAL FORMAT DATA
256
257 ;+
258 ; THE FOLLOWING TABLE DEFINES A DEFAULT CONTENT FOR THE VERTICAL
259 ; FORMAT UNIT OF THE LP11 FOR A 66 LINE PAGE (11 INCHES AT 6 LINES PER INCH).
260 ;
261 ; STANDARD NURD VERTICAL FORMAT UNIT DEFINITION
262 ;
263 ; CHANNEL 1 - (TOP OF FORM) LINE 1 ONLY
264 ; CHANNEL 2 - HALF OF FORM STOP
265 ; CHANNEL 3 - EVERY OTHER LINE FROM LINE 1 UP TO AND INCLUDING LINE 59
266 ; CHANNEL 4 - EVERY THIRD LINE FROM LINE 1 UP TO AND INCLUDING LINE 58
267 ; CHANNEL 5 - EVERY LINE
268 ; CHANNEL 6 - EVERY TENTH LINE FROM LINE 1 UP TO AND INCLUDING LINE 51
269 ; CHANNEL 7 - EVERY 20TH LINE FROM LINE 1 UP TO AND INCLUDING LINE 41
270 ; CHANNEL 8 - NEXT LINE IN FORM
271 ;
272 ; STANDARD EXTENSION TO STANDARD VERTICAL FORMAT UNIT
273 ;
274 ; CHANNEL 9 - EVERY FIFTH LINE FROM LINE 1 UP TO AND INCLUDING LINE 56
275 ; CHANNEL 10 - QUARTER OF FORM STOPS
276 ; CHANNEL 11 - ALTERNATE TOP OF FORM
277 ; CHANNEL 12 - (BOTTOM OF FORM) LINE 60 AT 6 LPI
278 ;-
279
280
281 ; * NOTE: ALL VFU ACTIONS ALSO PERFORM CARRIAGE RETURN ACTION.
282
283 000102 PGLEN = 66. ; 66 LINES PER PAGE
284 000074 FRMLEN = 60. ; 60 LINES OF FORM
285
286
287 .IF NDF VCH1 ; DEFINE VFU CHANNEL TAGS
288 $$ = 1
289 .IRP X,<1,2,3,4,5,6,7,8,9,10,11,12>
290 VCH'X = X'. - 1 ; NUMERIC CHANNEL TAGS
291 VFBP'X = $$ ; POSITIONAL CHANNEL TAGS
292 $$ = $$*2
293 .ENDR ; IRP X
294 .ENDC ; NDF VCH1
295
296
297 .IF NDF .P1
298 $$=0 ; INIT THE LINE SYMBOLS .P<NN>
299 .REPT PGLEN
300 $$=$$+1
301 .ZER \$$
302 .ENDR
303
304 ; * SET THE MASK BITS IN THE PARTITION WORDS ACCORDING TO
305 ; * THE FORMULA DEFINED IN THE ARGUMENTS TO DEFPAR
306 DEFPAR VFBP1,1,1 ; TOP OF FORM
307 DEFPAR VFBP2,<<FRMLEN/2>>,FRMLEN ; HALF OF FORM STOPS
308 DEFPAR VFBP3,2.,FRMLEN ; EVERY OTHER LINE
309 DEFPAR VFBP4,3.,FRMLEN ; EVERY THIRD LINE
310 DEFPAR VFBP5,1.,PGLEN ; EVERY LINE TO END
311 DEFPAR VFBP6,10.,FRMLEN ; EVERY TENTH LINE
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 11-1
DEFAULT VERTICAL FORMAT DATA
312 DEFPAR VFBP7,20.,FRMLEN ; EVERY TWENTIETH LINE
313 DEFPAR VFBP8,1.,FRMLEN ; SINGLE SPACE IN FORM
314 DEFPAR VFBP9,5.,FRMLEN ; EVERY FIFTH LINE
315 DEFPAR VFBP10,<<FRMLEN/4>>,FRMLEN ; QUARTER OF FORM STOPS
316 DEFPAR VFBP11,1,1 ; ALTERNATE TOP OF FORM
317 .P75 = .P75 ! VFBP12 ; SPECIAL CASE FOR BOF
318 .P102 = .P102 ! 100000 ; FLAG LAST WORD OF VFU IMAGE TABLE
319 .ENDC ; NDF .P1
320
321
322 ; * USE THE DEFINED PARTITION WORDS TO BUILD A COMPLETE VFU IMAGE, AND
323 ; * ASSIGN PARTITIONS FOR THE WHOLD PAGE.
324 000000 $VFU66::
325 000000 $$ = 0
326 000102 .REPT PGLEN
327 $$=$$+1
328 WRDVFU \$$
329 .ENDR ; R PGLEN
330 000204 VFU66S = . - $VFU66 ; SIZE OF VFU IMAGE
331
332
333 ; * $LERAM FCT INDEX TO CHANNEL MAP
334 000204 000001 CHMAP: .WORD VFBP1 ; 0
335 000206 000002 .WORD VFBP2 ; 1
336 000210 000004 .WORD VFBP3 ; 2
337 000212 000010 .WORD VFBP4 ; 3
338 000214 000020 .WORD VFBP5 ; 4
339 000216 000040 .WORD VFBP6 ; 5
340 000220 000100 .WORD VFBP7 ; 6
341 000222 000200 .WORD VFBP8 ; 7
342 000224 000400 .WORD VFBP9 ; 8
343 000226 001000 .WORD VFBP10 ; 9
344 000230 002000 .WORD VFBP11 ; 10
345 000232 004000 .WORD VFBP12 ; 11
346 000234 000000 .WORD 0 ; 12 UNUSED ENTRY (NO STOPS SET)
347 000236 000000 .WORD 0 ; 13 UNUSED ENTRY (NO STOPS SET)
348 000240 000000 .WORD 0 ; 14 UNUSED ENTRY (NO STOPS SET)
349 000242 000000 .WORD 0 ; 15 UNUSED ENTRY (NO STOPS SET)
350
351
352
353 ; * LP11 CHARACTER TRANSLATION MAP, INITIALIZED TO NURD ASCII BY OPEN.
354 ; * POTENTIALLY CHANGED BY FEATURES SETS. ROOM FOR A FULL SEVEN-BIT CODE.
355 000244 $LEASC::.BLKB 128.
356 .EVEN
357
358
359 ; * NAME THE FCXTB FLAGS
360 000200 FCCHR = 200 ; CHARACTER IS A FORMS CONTROL CHARACTER
361 000100 HFCHR = 100 ; CHARACTER IS A HORIZONTAL CONTROL CHARACTER
362 000040 HFCCR = 40 ; CHARACTER IS A CARRIAGE RETURN CHARACTER
363
364
365
366 ; * FORMS CONTROL EXCEPTION TABLE
367 ; * FORMAT: .BYTE <$LEASC OFFSET>,<TRANS CONTENTS>
368 000444 011 300 FCXTB: .BYTE HT,FCCHR!HFCHR
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 11-2
DEFAULT VERTICAL FORMAT DATA
369 000446 012 207 .BYTE LF,FCCHR!VCH8
370 000450 013 206 .BYTE VT,FCCHR!VCH7
371 000452 014 200 .BYTE FF,FCCHR!0
372 000454 015 340 .BYTE CR,FCCHR!HFCHR!HFCCR
373 000456 020 201 .BYTE DLE,FCCHR!VCH2
374 000460 021 202 .BYTE DC1,FCCHR!VCH3
375 000462 022 203 .BYTE DC2,FCCHR!VCH4
376 000464 023 204 .BYTE DC3,FCCHR!VCH5
377 000466 024 205 .BYTE DC4,FCCHR!VCH6
378
379 ; * CHANNELS 9-12 NOT SUPPORTED
380 ; .BYTE FS,FCCHR!VCH9
381 ; .BYTE GS,FCCHR!VCH10
382 ; .BYTE RS,FCCHR!VCH11
383 ; .BYTE US,FCCHR!VCH12
384 000470 177777 .WORD -1 ; TABLE ENDS ON NEGATIVE OFFSET BYTE
385
386
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 12
DISPATCH TABLES
388 .SBTTL DISPATCH TABLES
389
390 ;+
391 ; MCB INCOMING DISPATCH
392 ;-
393
394 ; * MAIN ENTRY POINT DLC DISPATCH TABLE
395 000472 000622' $LETB::.WORD LENURD ; FC.XME - NURD MESSAGE ENTRY (TRANSMIT ENABLE)
396 000474 007002' .WORD LEDLRE ; FC.RCE - RECEIVE (RESOURCE RETURN)
397 000476 000514' .WORD CRASH ; FC.KIL - KILL
398 000500 000516' .WORD LECTL ; FC.CTL - CONTROL ENABLE
399 000502 006616' .WORD LETIM ; FC.TIM - DLC TIMER
400 000504 010324' .WORD DLCXCP ; FC.XCP - TRANSMIT COMPLETE: RET OF PHYS> BUFS
401 000506 000514' .WORD CRASH ; FC.RCP - RECEIVE COMPLETE
402 000510 000514' .WORD CRASH ; FC.KCP - KILL COMPLETE
403 000512 000574' .WORD LECCP ; FC.CCP - CONTROL COMPLETE
404 000022 FNCOTR = . - $LETB
405
406 000514 000004 CRASH: IOT ; DIE IGNOMINEOUSLY
407
408
409 ; * CONTROL ENABLE DISPATCH
410 000516 LECTL: CALLR @1$(R3)
411 000522 000514' 1$: .WORD CRASH ; FS.INI
412 000524 007054' .WORD CTLSTR ; FS.STR(OPEN)
413 000526 007460' .WORD CTLSTP ; FS.STP(CLOSE)
414 000530 000514' .WORD CRASH ; FS.TRM
415 000532 000514' .WORD CRASH
416 000534 000514' .WORD CRASH ; FS.SET
417 000536 000514' .WORD CRASH ; FS.GET
418 000540 000514' .WORD CRASH ; NT$XON
419 000542 000514' .WORD CRASH ; NT$XOF
420 000544 000554' .WORD NRMACK ; FS.RNG NRM
421 000546 000554' .WORD NRMACK ; FS.ENB NRM
422 000550 000554' .WORD NRMACK ; FS.DIS NRM
423 000552 000554' .WORD NRMACK ; FS.MSN NRM
424
425 000554 NRMACK: $TOBDM CT,#1 ; RETURN SUC
426 000572 RETURN
427
428
429 000574 LECCP: CALLR @1$(R3)
430 000600 000514' 1$: .WORD CRASH ; FS.INI
431 000602 000514' .WORD CRASH ; FS.STR(OPEN)
432 000604 000514' .WORD CRASH ; FS.STP(CLOSE)
433 000606 000514' .WORD CRASH ; FS.TRM
434 000610 000514' .WORD CRASH
435 000612 000514' .WORD CRASH ; FS.SET
436 000614 000514' .WORD CRASH ; FS.GET
437 000616 000000G .WORD $CCBRT ; NT$XON - IGNORE
438 000620 000000G .WORD $CCBRT ; NT$XOF - IGNORE
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 13
NRD INTERPROCESS COMMUNICATION CONVENTIONS
440 .SBTTL NRD INTERPROCESS COMMUNICATION CONVENTIONS
441
442 ; DATA TO LE FROM NRD
443 ;
444 ; NRD SENDS CCB OWND BY NRD WITH FC.XME,NT$DAT AND HAS SAVED NSP
445 ; CCB IN C.FLG2. THE DATA BUFFER IS OWNED BY NSP.
446 ;
447 ;
448 ; DATA TO NRD FROM LE
449 ;
450 ; LE SENDS A CCB (OWNED BY LE) TO NRD WITH FC.RCP,NT$DAT
451 ; AND A DATA BUFFER OWNED BY LE.
452 ; NRD PASSES LE'S CCB THRU TO NSP,SAVING C.BUF+2 IN C.BUF2+2, AND
453 ; MAPPING C.FNC TO FC.XME. NRD,UPON RETURN OF THE CCB FROM NSP, RESTORES
454 ; C.BUF+2 AND RETURNS IT TO LE WITH FC.RCE,NT$DAT.
455 ;
456 ; NURD INTERFACE PROTOCOL
457 ;
458 ; USER INITIATED:
459 ;
460 ; FC.RCP,NT$DAT FC.XME,NT$DAT
461 ; USER/NSP ------------->NRD ------------->DLC (NON INTERRUPT)
462 ; <------------- NRD<------------- DLC
463 ; FC.RCE,NT$RTN FC.XCP,NT$DAT
464 ;
465 ;
466 ; FC.RCP,NT$INT FC.XME,NT$INT
467 ; USER/NSP ------------->NRD ------------->DLC (INTERRUPT)
468 ; <------------- NRD<------------- DLC
469 ; FC.RCE,NT$RTI FC.XCP,NT$INT DLC
470 ;
471 ;
472 ; DLC INITIATED:
473 ;
474 ; FC.XME,NT$DAT FC.RCP,NT$DAT
475 ; USER/NSP<------------- NRD<------------- DLC (NON INTERRUPT)
476 ; ------------->NRD ------------->DLC
477 ; FC.XCP,NT$DAT FC.RCE,NT$DAT
478 ;
479 ; FC.XME,NT$INT FC.RCP,NT$INT
480 ; USER/NSP<------------- NRD<------------- DLC (INTERRUPT)
481 ; ------------->NRD ------------->DLC
482 ; FC.XCP,NT$INT FC.RCE,NT$INT
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 14
NURD MESSAGE DECODER
484 .SBTTL NURD MESSAGE DECODER
485
486 ;+
487 ; DISPATCH BASED ON THE TYPE OF NURD MESSAGE CONNECTED
488 ; TO THE CURRENT CCB (CHAIN), WHICH CONSISTS OF BUT A SINGLE MSG
489 ; INPUTS: R4 - POINTS TO CCB (CHAIN)
490 ; R5 - POINTS TO PROPER DEVICE LINE TABLE
491 ; OUTPUTS: THIS DISPATCHES TO PROPER NURD MESSAGE HANDLER, OR RETURNS
492 ; AN ERROR IF TYPE ILLEGAL OR OUT OF RANGE.
493 ; REGISTERS ARE NOT PRESERVED.
494 ; THE CALLED ROUTINE IS RESPONSIBLE FOR QUEUING
495 ; MESSAGES TO BE RETURNED TO THE HIGHER LEVEL.
496 ;
497 ; MSG FORMAT: <MSGTYPE><MSGFLGS><MSGTXT.....>
498 ;-
499
500 000622 032765 000001 000024 LENURD: BIT #LA.CLO,L.ASTS(R5) ; DEVICE CLOSED?
501 000630 001037 BNE 60$ ; YES, HENCE INACCESSIBLE
502 000632 MAP C.BUF(R4) ; GET MAPPING
503 000640 016400 000016 MOV C.BUF+2(R4),R0 ; POINT TO CCB DATA BUFFER
504 000644 111001 MOVB (R0),R1 ; GET NURD MESSAGE TYPE
505 000646 042701 177760 BIC #^C<NM.TYP>,R1 ; ISOLATE JUST MESSAGE TYPE
506 000652 020127 000006 CMP R1,#NRDOTR ; TYPE OUT OF RANGE?
507 000656 103402 BLO 30$ ; NO, OKAY TO DISPATCH
508 000660 012701 000006 MOV #NRDOTR,R1 ; YES, SPECIFY ILLEGAL NURD HANDLER
509 000664 006301 30$: ASL R1 ; GET WORD OFFSET
510 000666 CALLR @40$(R1) ; DISPATCH TO MESSAGE PROCESSOR
511
512 000672 000750' 40$: .WORD QTODLC ; 0 - DATA MESSAGE
513 000674 000710' .WORD 50$ ; 1 - ATTENTION (ILLEGAL IF REC'D)
514 000676 000750' .WORD QTODLC ; 2 - FEATURES MESSAGE
515 000700 005016' .WORD CONTRL ; 3 - CONTROL MESSAGE
516 000702 000710' .WORD 50$ ; 4 - ALERT (ILLEGAL IF REC'D)
517 000704 000710' .WORD 50$ ; 5 - CAPABILITIES (ILLEGAL IF REC'D)
518 000006 NRDOTR = <.-40$>/2
519 000706 000710' .WORD 50$ ; N - ILLEGAL NURD TYPE SPEC
520 ; STATE OF REGISTERS AT POINT OF CALL:
521 ; R0 - POINTS TO NURD MESSAGE TYPE BYTE
522 ; R1 - HAS DISPATCH INDEX
523 ; R2, R3 - UNSPECIFIED
524 ; R4, R5 - AS UNDER "INPUTS" ABOVE
525 ; R0-R3 ARE AVAILABLE FOR USE BY
526 ; CALLED ROUTINE WITHOUT RESTRICTION
527
528 000710 50$: $TOBDM XM,#LS.ILM ; RETURN ERRANT MSG
529 000726 RETURN
530 000730 60$: $TOBDM XM,#LS.ABO ; RETURN DATA MSG VIA $XMCMP
531 000746 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 15
QUEUE UP INCOMING NURD DATA AND FEATURES
533 .SBTTL QUEUE UP INCOMING NURD DATA AND FEATURES
534
535 ;+
536 ; QUEUE UP FOLLOWING NURD MSG TYPES:
537 ; DATA
538 ; FEATURES
539 ;
540 ; R4/CCB TO QUEUE
541 ; R5/DLT
542 ;-
543
544 000750 032765 000010 000024 QTODLC: BIT #LA.ABO,L.ASTS(R5) ; CHECK FOR ABORT STATE
545 000756 001402 BEQ QDLC ; OK TO PROCEED
546 000760 CALLR DDMXCP
547
548 000764 010403 QDLC: MOV R4,R3 ; COPY TOP CCB POINTER
549 000766 011302 10$: MOV (R3),R2 ; FOLLOW CCB CHAIN
550 000770 001402 BEQ 20$ ; TO NULL LINK
551 000772 010203 MOV R2,R3 ; TO GET FULL MSG
552 000774 000774 BR 10$
553
554 000776 010475 000074 20$: MOV R4,@L.DLCQ+2(R5) ; LINK CHAIN TO END OF CURRENT QUEUE
555 001002 010365 000074 MOV R3,L.DLCQ+2(R5) ; SET NEW END OF QUEUE
556 001006 020465 000072 CMP R4,L.DLCQ(R5) ; NEW CHAIN AT HEAD OF QUEUE?
557 001012 001037 BNE 70$ ; NO, ROUTINES OF INTEREST ARE WORKING
558 001014 122765 000001 000142 CMPB #DWAKS,L.DWAK(R5) ; YES - CHECK IF THIS IS DESIRED WAKE CONDITION
559 001022 001002 BNE 30$ ; NO
560 001024 CALLR DFWAKE ; GO WAKE THE PROCESS
561
562 001030 010665 000144 30$: MOV SP,L.DFSP(R5) ; SET THE STACK ORIGIN FOR THIS PROCESS
563 001034 CALL GB ; EXTRACT MSG TYPE
564 001040 010001 MOV R0,R1
565 001042 CALL GB ; EXTRACT MSG FLAGS
566 001046 010065 000076 MOV R0,L.MFLG(R5)
567 001052 105701 TSTB R1 ; CHECK NURD MSG TYPE
568 001054 001406 BEQ 40$
569 001056 122701 000003 CMPB #NM.CTL,R1 ; DISTINGUISH CONTROL OR FEATURES
570 001062 001006 BNE 50$
571 001064 CALL CONSYN ; NON-INTERRUPT CONTROL MSG
572 001070 000405 BR 60$
573
574 001072 40$: CALL DATA ; DATA
575 001076 000402 BR 60$ ; EXIT THROUGH NO-ERROR RETURN
576
577 001100 50$: CALL FEATRS ; FEATURES
578 001104 016504 000072 60$: MOV L.DLCQ(R5),R4 ; GET NEXT MSG
579 001110 001347 BNE 30$ ; MORE
580
581 001112 70$: RETURN ; EXIT
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 16
DATA/FEATURES HYBER FUNCTION
583 .SBTTL DATA/FEATURES HYBER FUNCTION
584
585 ; * CALLED BY PROCESS TO WAIT FOR A NEW DAY. INTERRUPTS HAVE BEEN DISABLED,
586 ; * L.DWAK HAS BEEN SET TO WAKE CONDITION, SO CONTEXT WILL NOW BE SAVED.
587 001114 010065 000146 DFSLEP: MOV R0,L.DTXT(R5) ; STORE THE REGISTERS 1ST
588 001120 012700 000150 MOV #L.DTXT+2,R0
589 001124 060500 ADD R5,R0 ; R0 -> R1 SLOT
590 001126 010120 MOV R1,(R0)+
591 001130 010220 MOV R2,(R0)+
592 001132 010320 MOV R3,(R0)+
593 001134 010420 MOV R4,(R0)+
594 001136 105065 000143 CLRB L.DTXL(R5) ; INIT THE COUNT
595
596 001142 122765 000013 000143 10$: CMPB #DTXTSZ-5,L.DTXL(R5) ; CHECK INCIPIENT OVERFLOW
597 001150 101001 BHI 20$
598 001152 CRASH ; PROGRAM BUG
599
600 001154 012620 20$: MOV (SP)+,(R0)+ ; XFER NEXT STACK WORD
601 001156 105265 000143 INCB L.DTXL(R5) ; COUNT IT
602 001162 026506 000144 CMP L.DFSP(R5),SP ; CHECK ORIGIN
603 001166 001365 BNE 10$ ; MORE
604 001170 CALLR STRTLE ; DONE - START THE DEVICE IF IT WAS GOING
605 ; AND EXIT TO ORIGINAL CALLER
606
607 ; * COME HERE WHEN WAKE CONDITION HAS BEEN MET
608 ; * SP WILL BE THE NEW STACK ORIGIN
609 001174 105065 000142 DFWAKE: CLRB L.DWAK(R5) ; FLUSH THE WAKE CONDITION
610 001200 005000 CLR R0
611 001202 156500 000143 BISB L.DTXL(R5),R0 ; GET THE NO. OF WORDS TO RETURN TO STACK
612 001206 006300 ASL R0
613 001210 062700 000160 ADD #L.DTXT+12,R0
614 001214 060500 ADD R5,R0 ; R0 -> 1ST WOD TO RETURN TO STACK
615 001216 010665 000144 MOV SP,L.DFSP(R5) ; SET THE NEW STACK ORIGIN
616
617 001222 014046 10$: MOV -(R0),-(SP) ; XFER THE STACK CONTENTS
618 001224 105365 000143 DECB L.DTXL(R5) ; COUNT THEM
619 001230 001374 BNE 10$
620 001232 014004 MOV -(R0),R4 ; RESTORE THE REGISTERS
621 001234 014003 MOV -(R0),R3
622 001236 014002 MOV -(R0),R2
623 001240 014001 MOV -(R0),R1
624 001242 014000 MOV -(R0),R0
625 001244 RETURN ; RETURN TO ORIGINAL CALLER OF DFSLEP
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 17
NURD DATA MESSAGE HANDLER
627 .SBTTL NURD DATA MESSAGE HANDLER
628
629 ;+
630 ; VIRTUAL (NURD) TO PHYSICAL (LP11) DATA TRANSLATION -
631 ; UNLOAD NURD BUFFER INTO PHYSICAL BUFFER AND SHIP PHYSICAL BUFFERS
632 ; DOWN TO DDM AS FILLED, SAVING VIRTUAL MACHINE BUFFERS IN C.FLG2 OF
633 ; THE PHYSICAL BUFFER UNTIL THE CORRESPONDING PHYSICAL DATA HAS BEEN
634 ; OUTPUT OR ABORTED.
635 ;
636 ; THIS ROUTINE IS CALLED FROM QTODLC AT THE MAIN ENTRY, AND ENTERED AT
637 ; VARIOUS RECOVERY POINTS, DEPENDING UPON THE NATURE OF THE FAILURE
638 ; WHICH CAUSED THE SUSPENSION.
639 ;
640 ; SOURCE BUFFER HAS BEEN SET UP AND NURD TYPE AND MSG FLAG BYTES
641 ; (1ST & 2ND BYTES) HAVE BEEN EXTRACTED.
642 ; R4/CCB
643 ; R5/DLT
644 ;
645 ; DATA MSG FORMAT: <SEQ NO.><FLGS><SEG CNT><SEGS......>
646 ; DATA SEG FORMAT: <CNT><TXT....> OR <SIGN+CNT><REPEAT CHAR>
647 ;-
648
649 ; * MAIN ENTRY, NEW DATA MSG AT TOP OF QUEUE
650 001246 DATA: CALL GB ; GET SEQUENCE NUMBER
651 001252 110065 000077 MOVB R0,L.DMSQ(R5) ; SAVE THE CURRENT SEQ NUMBER
652 001256 CALL GB ; GET THE FLAGS BYTE
653 001262 032700 000001 BIT #ND.ACK,R0 ; CHECK FOR ACK REQ'D
654 001266 001403 BEQ 14$ ; NO ACK REQUEST
655 001270 052765 000100 000024 BIS #LA.AKR,L.ASTS(R5) ; NOTE ACK REQUESTED
656 001276 032700 000004 14$: BIT #ND.EOF,R0 ; CHECK FOR EOF
657 001302 001403 BEQ 16$
658 001304 052765 000400 000024 BIS #LA.EOF,L.ASTS(R5) ; SET THIS MESSAGE HAS EOF
659 001312 16$: CALL GB ; GET SEGMENT COUNT BYTE
660 001316 110065 000100 MOVB R0,L.DMSG(R5) ; SAVE THE SEGMENT COUNT OF MESSAGE
661 001322 001501 BEQ 60$ ; EMPTY MSG, SKIP DATA PROCESSING
662
663 ; * PROCESS MSG DATA
664 001324 20$: CALL GB ; GET NEXT SEGMENT HDR BYTE
665 001330 105700 TSTB R0 ; DISPATCH BASED ON SEGMENT TYPE
666 001332 100410 BMI 28$ ; THIS IS A COMPRESSED SEGMENT
667 001334 003017 BGT 32$ ; THIS IS A NORMAL DATA SEGMENT
668 ; * THIS IS AN EOR
669 001336 105765 000256 TSTB LE.FCC+F.FCV(R5) ; IS FORTRAN CARRIAGE CONTROL SET?
670 001342 001403 BEQ 24$ ; NO, EOR IS THEN NOT SIGNIFICANT
671 001344 052765 001000 000024 BIS #LA.EOR,L.ASTS(R5) ; YES, SET EOR TO FLAG NEXT CHAR AS CC
672 001352 000462 24$: BR 56$ ; PROCESS END OF SEGMENT
673
674 ; * PROCESS COMPRESSED DATA SEGMENT
675 001354 112765 000001 000101 28$: MOVB #1,L.DMSS(R5) ; SET SEGMENT SIZE TO ONE CHARACTER
676 001362 042700 177600 BIC #177600,R0 ; FLUSH COMPRESSION FLAG,LEAVE REPEAT COUNT
677 001366 010065 000104 MOV R0,L.DMCR(R5) ; SET REPEAT COUNT FOR THAT CHAR
678 001372 000404 BR 36$ ; PROCESS DATA IN NORMAL WAY
679
680 001374 110065 000101 32$: MOVB R0,L.DMSS(R5) ; SET SEGMENT SIZE OF NORMAL DATA SEGMENT
681 001400 005065 000104 CLR L.DMCR(R5) ; FLUSH REPEAT COUNT
682
683 001404 36$: CALL GB ; GET CHARACTER DATA BYTE FROM MSG
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 17-1
NURD DATA MESSAGE HANDLER
684 001410 042700 177600 BIC #^C177,R0 ; SAVE ONLY LOW SEVEN BITS OF CHARACTER
685 001414 066500 000064 ADD L.CSMP(R5),R0 ; ADD IN THE CURRENT CHARACTER MAP ADDRESS
686 001420 111000 MOVB (R0),R0 ; GET THE MAPPED VALUE OF THE CHARACTER
687 001422 110065 000126 MOVB R0,L.PBRC(R5) ; SAVE A COPY OF THE CHARACTER
688
689 001426 005000 40$: CLR R0 ; GET THE BYTE BACK
690 001430 156500 000126 BISB L.PBRC(R5),R0
691 001434 032765 001000 000024 BIT #LA.EOR,L.ASTS(R5) ; END OF RECORD ON?
692 001442 001406 BEQ 42$ ; NO, PROCEED WITHOUT INCIDENT
693 ; YES, BYTE IS FORTRAN CARRIAGE CHAR
694 001444 CALL FCC ; HANDLE FORTRAN CARRIAGE CONTROL
695 001450 042765 001000 000024 BIC #LA.EOR,L.ASTS(R5) ; FLUSH END OF RECORD
696 001456 000410 BR 52$ ; OKAY, DO NEXT BYTE
697
698 001460 105700 42$: TSTB R0 ; CHECK FOR CHARACTER TYPE
699 001462 001411 BEQ 54$ ; IGNORE CHARACTERS MAPPED TO ZERO
700 001464 100003 BPL 44$ ; DIRECTLY TRANSMIT PRINTING CHARACTERS
701 ; * MANIPULATIONS REQ'D ON FORMS CONTROL CHARS
702 001466 CALL FCT ; DO FORMS CONTROL TRANSLATION
703 001472 000402 BR 52$ ; SUCCEEDED, CONTINUE CURRENT PROCESSING
704
705 001474 44$: CALL PBCHR ; STUFF RESULTING CHAR TO OUTPUT
706 001500 005365 000104 52$: DEC L.DMCR(R5) ; DECREMENT CHAR REPEAT COUNT
707 001504 003350 BGT 40$ ; MORE TO DO ON CURRENT CHAR
708
709 001506 005065 000104 54$: CLR L.DMCR(R5) ; KEEP REPEAT CNT = 0
710 001512 105365 000101 DECB L.DMSS(R5) ; DECREMENT SEGMENT SIZE
711 001516 001332 BNE 36$ ; SEGMENT NOT EMPTY, GET NEXT CHAR
712
713 ; * SEGMENT FINISHED, CLEAN UP
714 001520 105365 000100 56$: DECB L.DMSG(R5) ; DECREMENT COUNT OF SEGMENTS
715 001524 001277 BNE 20$ ; NOT DONE, GO BACK FOR NEXT SEGMENT
716
717 ; * MSG COMPLETE, DROP INTO END-OF-MSG CODE
718 001526 016504 000114 60$: MOV L.PLBQ(R5),R4 ; GET PHYS BUFFER CCB ADDRESS
719 001532 016564 000024 000012 MOV L.ASTS(R5),C.STS(R4) ; MARK PHYSICAL BUF
720 001540 86$: CALL GBDQ ; PURGE
721 001544 042765 000500 000024 88$: BIC #LA.EOF!LA.AKR,L.ASTS(R5) ; CLEAR SAVED DATA FLAGS
722 001552 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 18
PUT A PRINTING CHARACTER TO THE BUFFER
724 .SBTTL PUT A PRINTING CHARACTER TO THE BUFFER
725
726 ; * PUT PRINTING CHAR TO BUFFER
727 001554 126565 000067 000241 PBCHR: CMPB L.COCT(R5),LE.FWD+F.FCV(R5) ; COL CT LE FORM WIDTH?
728 001562 103407 BLO 28$ ; YES, OKAY (UNSIGNED COMPARISON)
729 001564 105765 000243 TSTB LE.TRN+F.FCV(R5) ; LINE TRUNCATION ON?
730 001570 001020 BNE 35$ ; IF SO, EAT CHARACTERS TIL FC COMES
731
732 001572 21$: PUSH R0 ; SAVE CURRENT CHARACTER
733 001574 CALL PBLF ; FORCE WRAP TO NEXT LINE
734 001600 POP R0 ; RESTORE CHARACTER
735
736 001602 105765 000237 28$: TSTB LE.LCR+F.FCV(R5) ; UPPER CASE ONLY ON?
737 001606 001405 BEQ 30$ ; NO
738 001610 120027 000140 CMPB R0,#140 ; YES, IS CHAR LOWER CASE?
739 001614 103402 BLO 30$ ; NO
740 001616 042700 000040 BIC #40,R0 ; YES, CLEAR UNSHIFT BIT
741
742 001622 30$: CALL PB ; PUT CURRENT CHARACTER TO BUFFER
743 001626 105265 000067 INCB L.COCT(R5) ; COUNT THE COLUMN
744
745 001632 35$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 19
FORTRAN CARRIAGE CONTROL OUTPUT
747 .SBTTL FORTRAN CARRIAGE CONTROL OUTPUT
748
749 ;+
750 ; FORTRAN CARRIAGE CONTROL MAPS THE 1ST CHARACTER OF EACH "RECORD"
751 ; INTO ONE OR MORE FORMS CONTROL CHARACTERS:
752 ;
753 ; FCC VFU/HFC
754 ;
755 ; SPACE LF
756 ; * DC3
757 ; + CR
758 ; - DC3,DC3,LF
759 ; / DC4
760 ; 0 DC3,LF
761 ; 1 FF
762 ; 2 DLE
763 ; 3 VT
764 ; OTHER SPACE
765 ;-
766
767 001634 012701 001762' FCC: MOV #FCCTBL,R1 ; SCAN TABLE FOR 1 CHARACTER XLATIONS
768 001640 012702 000007 MOV #FCCTBN,R2
769 001644 122100 10$: CMPB (R1)+,R0
770 001646 001437 BEQ 100$ ; FOUND IT
771 001650 005201 INC R1 ; SKIP EQUIVALENT
772 001652 SOB R2,10$
773 001656 122700 000055 CMPB #'-,R0 ; CHECK MULTIPLE CHARACTER XLATIONS
774 001662 001407 BEQ 20$
775 001664 122700 000060 CMPB #'0,R0
776 001670 001414 BEQ 30$
777 001672 012700 000040 MOV #SPA,R0 ; NOT AN FCC CHARACTER
778 001676 CALLR PBCHR ; JUST PRINT A SPACE
779
780 001702 012700 000003 20$: MOV #3,R0 ; CHECK FOR ROOM IN CURRENT BUFFER
781 001706 CALL PBROOM ; GET RID OF THIS BUFFER IF NOT ENOUGH
782 001712 012700 000023 25$: MOV #DC3,R0 ; DO DC3,DC3,LF
783 001716 CALL 110$ ; PRINT THW DC3
784 001722 012700 000002 30$: MOV #2,R0 ; CHECK FOR ROOM IN CURRENT BUFFER
785 001726 CALL PBROOM ; GET RID OF THIS BUFFER IF NOT ENOUGH
786 001732 012700 000023 35$: MOV #DC3,R0 ; DO DC3,LF
787 001736 CALL 110$ ; PRINT THE DC3
788 001742 CALLR PBLF ; DO A LINE FEED
789
790 001746 111100 100$: MOVB (R1),R0 ; GET SINGLE CHARACTER EQUIVALENT
791 001750 066500 000064 110$: ADD L.CSMP(R5),R0 ; MAP THE FORMS CONTROL CHARACTER
792 001754 111000 MOVB (R0),R0
793 001756 CALLR FCT
794
795 001762 040 012 FCCTBL: .BYTE ' ,LF
796 001764 052 023 .BYTE '*,DC3
797 001766 053 015 .BYTE '+,CR
798 001770 057 024 .BYTE '/,DC4
799 001772 061 014 .BYTE '1,FF
800 001774 062 020 .BYTE '2,DLE
801 001776 063 013 .BYTE '3,VT
802 000007 FCCTBN=<.-FCCTBL>/2
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 20
VERTICAL FORMS CONTROL TRANSLATION
804 .SBTTL VERTICAL FORMS CONTROL TRANSLATION
805 ;+
806 ; R0/2*<TRANSLATED CHARACTER>
807 ; FCXTB HAS XLATION IMAGE OF ALL FC CHARACTERS
808 ;-
809
810 002000 105065 000067 VFC: CLRB L.COCT(R5) ; CLEAR COL COUNTER ON ALL VFE'S
811 002004 042700 177400 BIC #177400,R0 ; CLEAR HIGH BYTE OF R0
812 002010 001002 BNE 10$ ; NOT AN EXPLICIT FORM FEED
813 002012 CALLR PBFF ; EXPLICIT FORM FEED
814
815 002016 016000 000204' 10$: MOV CHMAP(R0),R0 ; GET CHANNEL MAP (R0 GOT WORD OFFSET IN FCT)
816 002022 116501 000066 MOVB L.LNCT(R5),R1 ; GET THE LINE COUNTER
817 002026 006301 ASL R1 ; AS A WORD OFFSET
818 002030 005002 CLR R2 ; CLEAR A LINE SPACING COUNTER
819 002032 066501 000070 ADD L.VFUA(R5),R1 ; ADD THE BASE ADDRESS OF THE CURRENT VFU
820 ; R1 NOW POINTS TO CURRENT LINE IN VFU
821 002036 005721 20$: TST (R1)+ ; UP THE LINE POINTER, CHECKING FOR END OF VFU
822 002040 100002 BPL 30$ ; NOT AT END OF VFU (MARKED AS MINUS)
823 002042 CALLR PBFF ; JUST DO AN FF AND QUIT
824
825 002046 005202 30$: INC R2 ; UP THE LINE SPACING COUNTER
826 002050 030011 BIT R0,(R1) ; STOP MATCH AT CURRENT LINE LOCATION?
827 002052 001771 BEQ 20$ ; NOT YET
828 002054 112700 000012 MOVB #LF,R0 ; SET LF CODE IN TO R0
829 002060 020227 000002 CMP R2,#2 ; 1 - 2 LF'S TO DO?
830 002064 003007 BGT 50$ ; MORE - DO AS COMPRESSION PAIRS
831 002066 40$: CALL PB ; YES, SEND THEM OUT INDIVIDUALLY
832 002072 105265 000066 INCB L.LNCT(R5) ; COUNT LINES AS WE GO
833 002076 SOB R2,40$
834 002102 RETURN
835
836 002104 50$: PUSH R2 ; SAVE NUMBER TO BE PUT
837 002106 CALL PCP ; PUT AS COMPRESSION PAIRS
838 002112 POP R2 ; RESTORE COUNT
839 002114 116500 000066 MOVB L.LNCT(R5),R0 ; UPDATE LINE COUNT BY NUMBER PUT
840 002120 060200 ADD R2,R0 ; ALL THIS BECAUSE THERE IS NO ADD BYTE
841 002122 110065 000066 MOVB R0,L.LNCT(R5) ; RESTORE LINE COUNT TO DLT
842 002126 RETURN
843
844
845 .SBTTL FORMS CONTROL XLATION
846
847 002130 106300 FCT: ASLB R0 ; HORIZONTAL FORMS CHAR ? (TAB OR CR)
848 002132 100322 BPL VFC ; NO
849 ; BR HFC ; YES, FALL INTO HFC
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 21
HORIZONTAL FORMS CONTROL TRANSLATION
851 .SBTTL HORIZONTAL FORMS CONTROL TRANSLATION
852
853 ;+
854 ; R0/2*<TRANSLATED CHARACTER>
855 ;-
856
857 002134 106300 HFC: ASLB R0 ; TEST FOR TAB OR CR
858 002136 100006 BPL 10$ ; HT
859 002140 105065 000067 CLRB L.COCT(R5) ; CLEAR COLUMN COUNT FOR CARRIAGE RETURN
860 002144 112700 000015 MOVB #CR,R0 ; SET CR CODE
861 002150 CALLR PB ; PUT IT DOWN
862
863 002154 116500 000067 10$: MOVB L.COCT(R5),R0 ; GET CURRENT COLUMN COUNT
864 002160 110003 MOVB R0,R3 ; NO REAL LIST EXISTS, TAB BY 8'S
865 002162 152703 000007 BISB #7,R3 ; SET COUNT HARD UP ON NEXT TAB STOP
866 ; GO AND INC TO STOP 8K, NEXT CHAR GOES INTO 8K+1
867 002166 105203 INCB R3 ; PLUS 1
868 002170 120365 000241 CMPB R3,LE.FWD+F.FCV(R5) ; STOP PAST FORM WIDTH?
869 002174 101410 BLOS 30$ ; NO (BYTES ARE ALL UNSIGNED NUMBERS)
870 002176 105765 000243 TSTB LE.TRN+F.FCV(R5) ; YES, LINE TRUNCATION ON?
871 002202 001003 BNE 20$ ; YES, TAB TO JUST EOL
872 002204 CALL PBLF ; NO, WRAP TO NEXT LINE
873 002210 000761 BR 10$ ; NOW DO TAB
874
875 002212 116503 000241 20$: MOVB LE.FWD+F.FCV(R5),R3 ; SET TAB STOP JUST AT FORMS WIDTH
876 002216 110302 30$: MOVB R3,R2 ; SAVE NEW COLUMN COUNT
877 002220 160002 SUB R0,R2 ; COMPUTE NUMBER OF SPACES TO DO
878 002222 001420 BEQ 60$ ; NONE! (CAN HAPPEN IF TRUNC ON AT EOL)
879 002224 112700 000040 MOVB #SPA,R0 ; SOME, SET SPACE CODE TO BE PUT
880 002230 042702 177400 BIC #177400,R2 ; PREVENT ANY GRUNDGY BYTE SIGN PROBLEMS
881 002234 020227 000002 CMP R2,#2 ; 1 - 2 SPACES?
882 002240 101403 BLOS 40$ ; YES
883 002242 CALL PCP ; NO, PUT A BUNCH OUT AS COMPR PAIR(S)
884 002246 000404 BR 50$
885
886 002250 40$: CALL PB ; MANUAL OUTPUT
887 002254 SOB R2,40$ ; DO UNTIL DONE
888
889 002260 110365 000067 50$: MOVB R3,L.COCT(R5) ; TAB STOP VALUE IS NEW COL COUNT POSITION
890
891 002264 60$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 22
WRAP TO THE NEXT LINE (OR PAGE)
893 .SBTTL WRAP TO THE NEXT LINE (OR PAGE)
894
895 ; * PUT BYTE A LINE FEED
896 002266 005001 PBLF: CLR R1
897 002270 156501 000066 BISB L.LNCT(R5),R1 ; GET LINE COUNTER BYTE
898 002274 006301 ASL R1 ; AS WORD OFFSET
899 002276 066501 000070 ADD L.VFUA(R5),R1 ; POINT INTO CURRENT VFU
900 002302 005721 TST (R1)+ ; UP LINE POINTER
901 002304 100414 BMI PBFF ; SKIP IF PAST END OF TABLE
902 002306 032711 000200 BIT #VFBP8,(R1) ; ***TABLE SPECIFIC HACK
903 002312 001411 BEQ PBFF ; APPARENTLY IN MARGIN, GO DO TOF
904 002314 112700 000012 MOVB #LF,R0 ; SET CHAR
905 002320 CALL PB ; DO IT
906 002324 105265 000066 INCB L.LNCT(R5) ; UP LINE COUNTER
907 002330 105065 000067 CLRB L.COCT(R5) ; CLEAR COL CTR WHEN GOING TO NEW LINE
908 002334 RETURN ; CARRY STAYS AS SET BY LAST CALL
909
910
911
912 ; * ADVANCE TO TOP OF FORM
913 002336 112700 000014 PBFF: MOVB #FF,R0 ; SET FF CHAR
914 002342 CALL PB ; TRY TO PUT IT
915 002346 105065 000066 CLRB L.LNCT(R5) ; CLEAR LINE COUNT
916 002352 105065 000067 CLRB L.COCT(R5) ; CLEAR COLUMN COUNTER WHEN GOING TO NEW LINE
917 002356 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 23
GET AND PUT DATA BYTES
919 .SBTTL GET AND PUT DATA BYTES
920
921 ;+
922 ; USED BY DATA AND BY FEATRS
923 ; A FEATRS MSG IS SHUFFLED THRU DDM, AS AN EMPTY BUFFER), SO THAT IT
924 ; IS RETURNED IN THE SAME SEQUENCE RELATIVE TO DATA THAT IT WAS RECEIVED.
925 ;-
926
927 002360 005365 000112 GB: DEC L.DMBS(R5) ; DECREMENT COUNTER
928 002364 002411 BLT 5$ ; BUFFER EMPTIED ALREADY
929 002366 MAP L.DMAD(R5) ; MAP IF NEED BE
930 002374 005000 CLR R0
931 002376 157500 000110 BISB @L.DMAD+2(R5),R0 ; GET BYTE FROM PHYSICAL BUFFER
932 002402 005265 000110 INC L.DMAD+2(R5) ; INCREMENT POINTER
933 002406 RETURN
934
935 002410 005765 000110 5$: TST L.DMAD+2(R5) ; IS A BUFFER IN PROCESS?
936 002414 001423 BEQ 10$ ; NO BUF IN USE
937 002416 016504 000072 MOV L.DLCQ(R5),R4 ; CHECK FOR MSG CONTINUITY
938 002422 032764 000100 000012 BIT #NT.EOM,C.STS(R4)
939 002430 001405 BEQ 9$
940 ; * LAST MSG FRAGMENT,CAN'T CONTINUE
941 002432 CALL STOPLE ; FLUSH THE DEVICE INTERRUPTS
942 002436 052765 000004 000024 BIS #LA.ADN,L.ASTS(R5) ; ABORT LINK WHEN DDM QUEUE IS EMPTY
943
944 002444 9$: CALL GBDQ ; EMPTIED BUF ON TOP
945 002450 032700 000100 BIT #NT.EOM,R0 ; CHECK STATUS OF MSG DEQUEUED
946 002454 001403 BEQ 10$
947 002456 016506 000144 MOV L.DFSP(R5),SP ; RECOVER STACK POINTER
948 002462 RETURN ; SO WE CAN QUIT
949
950 002464 016504 000072 10$: MOV L.DLCQ(R5),R4 ; IS THERE A QUEUED ENTRY?
951 002470 001010 BNE 15$ ; YES, SET UP POINTER AND COUNTER
952 002472 DFHYBER DWAKS ; WAIT TIL NEXT SEGMENT ARRIVES
953 002510 000765 BR 10$
954
955 002512 016465 000014 000106 15$: MOV C.BUF(R4),L.DMAD(R5) ; GET ADDRESS DOUBLEWORD AS PTR
956 002520 016465 000016 000110 MOV C.BUF+2(R4),L.DMAD+2(R5)
957 002526 016465 000020 000112 MOV C.CNT(R4),L.DMBS(R5) ; GET BUFFER COUNT AS SIZE COUNTER
958 002534 000711 BR GB ; TRY AGAIN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 24
GET AND PUT DATA BYTES
960 ; * EXTERNAL ENTRY TO FORCE DEQUEUE
961 002536 005065 000110 GBDQ: CLR L.DMAD+2(R5) ; INDICATE "NO BUFFER IN USE"
962 002542 005065 000112 CLR L.DMBS(R5)
963 002546 DEQ$ L.DLCQ ; DEQUEUE MSG JUST DONE
964 ; FOR FEATRS AND CONSYN THERE MUST BE
965 ; NO PHYS BUFFER IN USE AT THIS TIME
966 002614 005765 000122 TST L.PLBP+2(R5) ; CHECK FOR PHYSICAL BUF IN USE
967 002620 001412 BEQ 10$ ; HAVE TO MAKE DO WITHOUT ONE
968 002622 010446 MOV R4,-(SP) ; SAVE THE MSG BUF
969 002624 016504 000114 MOV L.PLBQ(R5),R4 ; GET CURRENT PHYSICAL BUF
970 002630 012664 000032 MOV (SP)+,C.FLG2(R4) ; MARK IT AS LAST(AND TO RET MSG BUF)
971 002634 PUSH C.STS(R4) ; SAVE MSG STATUS
972 002640 CALL PBDQ ; SEND IT DOWN IMMEDIATELY
973 002644 000404 BR 20$
974
975
976 ; * NO PHYSICAL BUF TO ATTACH SOURCE BUF TO
977 ; * SO FAKE IT BY SENDING IT TO PRINTER, WHICH WILL IGNORE IT
978 002646 10$: PUSH C.STS(R4) ; SAVE MSG STAUS
979 002652 CALL QDDM ; LET IT SHUFFLE THRU IN SEQUENCE
980 002656 20$: POP R0 ; RETURN MSG STATUS
981 002660 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 25
GET AND PUT DATA BYTES
983
984 ; * PUT BYTE TO PHYSICAL OUTPUT BUFFER
985 002662 005365 000124 PB: DEC L.PLBS(R5) ; DOWN THE COUNTER
986 002666 002410 BLT 10$ ; BUFFER FULL ALREADY
987 002670 MAP L.PLBP(R5) ; MAP IF NEED BE
988 002676 110075 000122 MOVB R0,@L.PLBP+2(R5) ; STASH BYTE IN PHYSICAL BUFFER
989 002702 005265 000122 INC L.PLBP+2(R5) ; UP THE POINTER
990 002706 RETURN
991
992 002710 005765 000122 10$: TST L.PLBP+2(R5) ; PHYSICAL BUFFER IN PROCESS?
993 002714 001404 BEQ 20$ ; NO, GO GET ONE
994 002716 005065 000124 CLR L.PLBS(R5) ; RESET CNT TO 0
995 002722 CALL PBDQ ; STUFF THE LP
996
997 002726 20$: CALL PBLOD ; SET UP A NEW BUFFER
998 002732 000753 BR PB ; TRY AGAIN
999
1000
1001 ; * CHECK IF R0/CNT BYTES LEFT IN CURRENT BUFFER
1002 002734 005765 000122 PBROOM: TST L.PLBP+2(R5) ; BUFFER IN USE ?
1003 002740 001406 BEQ PBLOD ; NOPE - GO GET ONE
1004 002742 020065 000124 CMP R0,L.PLBS(R5) ; ROOM ?
1005 002746 003001 BGT 10$
1006 002750 RETURN
1007 002752 10$: CALL PBDQ ; NO ROOM - FLUSH CURRENT
1008 ; AND GET NEW ONE
1009
1010 ; * SET UP NEW BUFFER
1011 002756 016504 000114 PBLOD: MOV L.PLBQ(R5),R4 ; IS ONE ENQUEUED?
1012 002762 001414 BEQ 10$ ; NO
1013 002764 CALL PBFINI ; BUT FIRST INIT IT FOR USE
1014 002770 016465 000014 000120 MOV C.BUF(R4),L.PLBP(R5) ; SET NEW ADDRESS DOUBLEWORD
1015 002776 016465 000016 000122 MOV C.BUF+2(R4),L.PLBP+2(R5)
1016 003004 016465 000020 000124 MOV C.CNT(R4),L.PLBS(R5) ; SET BUFFER MAX SIZE
1017 003012 RETURN
1018
1019 003014 10$: DFHYBER DWAKP ; SLEEP TIL A BUFFER MEANDERS BACK
1020 003032 000751 BR PBLOD
1021
1022
1023 ; * EXTERNAL ENTRY TO FORCE TRANSMIT
1024 003034 PBDQ: DEQ$ L.PLBQ ; DEQUEUE THE PHYSICAL BUFFER
1025 003102 166564 000124 000020 SUB L.PLBS(R5),C.CNT(R4) ; SUBTRACT UNUSED COUNT FROM BUFF SIZE
1026 003110 005065 000122 CLR L.PLBP+2(R5) ; FLUSH CURRENT BUFFER ALTOGETHER
1027 003114 005065 000124 CLR L.PLBS(R5) ; CLEAR CURRENT BUFFER SIZE
1028 003120 CALLR QDDM ; SEND PHYSICAL BUFFER DOWN AND START IT
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 26
PUT COMPRESSION PAIR TO PHYSICAL BUFFER
1030 .SBTTL PUT COMPRESSION PAIR TO PHYSICAL BUFFER
1031
1032 ;+
1033 ; R0/CHARACTER TO REPEAT
1034 ; R2/REPETITION COUNT
1035 ;-
1036
1037 003124 022702 000200 PCP: CMP #128.,R2 ; CAN ONLY DO 128 AT A PAIR
1038 003130 002011 BGE 10$ ; OK
1039 003132 PUSH R2
1040 003134 012702 000200 MOV #128.,R2 ; DO 128 1ST
1041 003140 CALL 10$
1042 003144 POP R2
1043 003146 162702 000200 SUB #128.,R2 ; WE DID SOME
1044 003152 000764 BR PCP ; NOW DO THE REST
1045
1046 003154 10$: PUSH R0
1047 003156 012700 000002 MOV #2,R0 ; CHECK FOR ROOM IN CURRENT BUFFER
1048 003162 CALL PBROOM ; GET RID OF THIS BUFFER IF NOT ENOUGH
1049 003166 POP R0
1050
1051 003170 20$: PUSH R0 ; PUT NEG COUNT IN BUF 1ST
1052 003172 010200 MOV R2,R0
1053 003174 005400 NEG R0
1054 003176 CALL PB ; THIS CAN FAIL
1055 003202 POP R0 ; NOW PUT CHAR IN BUF
1056 003204 CALLR PB
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 27
NURD FEATURES MESSAGE HANDLERS
1058 .SBTTL NURD FEATURES MESSAGE HANDLERS
1059
1060 ;+
1061 ; FEATURE MSG FORMAT:
1062 ; <SEQ NO.><NO. FEATURE SPECS><...FEATURE SPECS...>
1063 ;
1064 ; FEATURE SPEC FORMAT:
1065 ; <FEATURE ID><FEATURE FLAGS><CLASS><RESPONSE>[<FEATURE DATA>]
1066 ;
1067 ; FEATURE DATA FORMAT:
1068 ; <CNT><...DATA...>
1069 ;
1070 ; NOTE: INCOMING MSG HAS ONLY 1 FEATURE SPEC
1071 ;
1072 ; BUFFER HAS BEEN SET UP AND NURD TYPE AND FLAGS BYTES(1ST & 2ND BYTES)
1073 ; HAVE BEEN EXTRACTED.
1074 ;
1075 ; R4/CCB AT TOP OF L.DLCQ
1076 ; R5/DLT
1077 ; KISAR6/ MAPPED TO DATA BUFFER
1078 ;-
1079 .ENABL LSB
1080
1081 003210 012700 000002 FEATRS: MOV #NM.FTR,R0 ; BEGIN A REPLY
1082 003214 CALL MB ; INSERT NURD MSG TYPE
1083 003220 005000 CLR R0
1084 003222 CALL MB ; INSERT MSG FLAGS
1085 003226 CALL GB ; GET SEQ NO.
1086 003232 110065 000077 MOVB R0,L.DMSQ(R5)
1087 003236 CALL MB ; SEND IT BACK
1088 003242 CALL GB ; GET NO. FEATURE SPECS
1089 003246 005000 CLR R0 ; BUT IGNORE IT
1090 003250 110065 000103 MOVB R0,L.NFSP(R5) ; SAVE IT FOR SOMTHING
1091 003254 CALL MB ; STUFF IT IN REPLY
1092 003260 CALL GB ; GET FEATURE ID
1093 003264 010002 MOV R0,R2
1094 003266 CALL GB ; GET FEATURE FLAGS
1095 003272 010001 MOV R0,R1
1096 003274 CALL GB ; GET CLASS
1097 003300 000301 SWAB R1
1098 003302 050001 BIS R0,R1 ; R1/FLAGS,,CLASS
1099
1100 003304 CALL GB ; READ THE RESPONSE FIELD AND IGNORE IT
1101
1102 003310 105065 000102 CLRB L.CAPN(R5) ; INIT INDEX INTO CAPABILITIES LIST
1103 003314 122702 000377 CMPB #FE.ALL,R2 ; CHECK FOR ALLNESS
1104 003320 001036 BNE 30$ ; SINGLE FEATURE
1105 003322 005002 CLR R2 ; INIT COMMON FID'S
1106 003324 116565 000206 000102 MOVB L.CFET(R5),L.CAPN(R5) ; GET COUNT OF COMMON ENTRIES
1107 003332 032701 000400 BIT #NF.CMD*400,R1 ; ALL FEATURES - CHECK READ/SET
1108 003336 001403 BEQ 10$ ; READ - CONTINUE
1109 003340 122701 000002 CMPB #FC.SST,R1 ; SET - CHECK SET TO STD
1110 003344 001071 BNE FERERR ; NO - ILLEGAL COMBINATION
1111
1112 003346 105202 10$: INCB R2 ; ADVANCE THRU LIST
1113 003350 100410 BMI 15$ ; GRUBBLING THRU DEVICE FEATURES
1114 003352 120265 000102 CMPB R2,L.CAPN(R5) ; CHECK RANGE
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 27-1
NURD FEATURES MESSAGE HANDLERS
1115 003356 101413 BLOS 20$ ; OK
1116 003360 116565 000220 000102 MOVB L.DFET(R5),L.CAPN(R5) ; INIT FOR DEVICE SPECFIC FEATURES
1117 003366 012702 000201 MOV #201,R2
1118 003372 010200 15$: MOV R2,R0 ; DEVICE FEATURE - HACK OFF SIGN
1119 003374 042700 177600 BIC #^C177,R0
1120 003400 120065 000102 CMPB R0,L.CAPN(R5) ; CHECK RANGE
1121 003404 101022 BHI 70$ ; DONE
1122 003406 20$: CALL FEFND ; LOOK IT UP
1123 003412 103004 BCC 40$ ; SUPPORTED FEATURE
1124 003414 000754 BR 10$ ; TRY NEXT ONE
1125
1126 003416 30$: CALL FEFND ; LOOK UP FEATURE
1127 003422 103431 BCS FERUSF ; UNSUPPORTED FEATURE
1128 ; AT THIS POINT:
1129 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
1130 ; R2 HAS THE FEATURE ID (BYTE)
1131 ; R3 POINTS TO THE FEATURE STATUS BYTE
1132 ; R5 STILL POINTS TO THE DEVICE LINE TBL
1133 ; L.DMSQ\SEQ NO.
1134 ; L.NFSP\NO. SPECS
1135 003424 132713 000040 40$: BITB #FB.CP,(R3) ; CHECK FOR CHANGE PENDING
1136 003430 001042 BNE FERCPN ; CAN'T READ OR SET IF SO
1137 003432 032701 000400 BIT #NF.CMD*400,R1 ; FEATURE READ OR FEATURE SET?
1138 003436 001467 BEQ FREAD ; READ - GO PROCESS FEATURE READ
1139 003440 CALLR FSET ; SET - GO PROCESS IN FEATURE SET
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 28
NURD FEATURES MESSAGE HANDLERS
1141 003444 105765 000102 FEACON: TSTB L.CAPN(R5) ; CHECK FOR ALLNESS
1142 003450 001336 BNE 10$ ; YES
1143
1144 003452 016504 000130 70$: MOV L.MSGQ(R5),R4 ; GET BEG OF MSG
1145 003456 MAP C.BUF(R4)
1146 003464 016400 000016 MOV C.BUF+2(R4),R0 ; GET THE PTR
1147 003470 116560 000103 000003 MOVB L.NFSP(R5),N.NSPC(R0) ; SET IN THE FINAL SPEC COUNT
1148 003476 CALL GBDQ ; RETURN ORGINAL MSG TO NRD
1149 003502 CALLR MBSND ; SEND OFF COMPLETED MSG
1150
1151 003506 FERUSF: PUSH #FR.USF
1152 003512 000421 BR 100$
1153 003514 FERBCL: PUSH #FR.BCL
1154 003520 000416 BR 100$
1155 003522 FERNST: PUSH #FR.NST
1156 003526 000413 BR 100$
1157 003530 FERERR: PUSH #FR.ERR
1158 003534 000410 BR 100$
1159 003536 FERCPN: PUSH #FR.CPN
1160 003542 000405 BR 100$
1161 003544 FERNEB: PUSH #FR.NEB
1162 003550 000402 BR 100$
1163 003552 FERDNP: PUSH #FR.DNP
1164 003556 010200 100$: MOV R2,R0 ; INSERT <FID><FLAGS><CLASS><ERROR>
1165 003560 CALL MB ; INSERT FID
1166 003564 010100 MOV R1,R0
1167 003566 000300 SWAB R0
1168 003570 CALL MB ; INSERT FLAGS
1169 003574 010100 MOV R1,R0
1170 003576 CALL MB ; INSERT CLASS
1171 003602 POP R0 ; GET ERROR CODE
1172 003604 CALL MB ; INSERT RESP
1173 003610 105265 000103 INCB L.NFSP(R5) ; COUNT THE SPEC
1174 003614 000713 BR FEACON
1175
1176 .DSABL LSB
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 29
FEATURES READ
1178 .SBTTL FEATURES READ
1179
1180 ;+
1181 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
1182 ; R2 HAS THE FEATURE ID (BYTE)
1183 ; R3 POINTS TO THE FEATURE STATUS BYTE
1184 ; R5 STILL POINTS TO THE DEVICE LINE TBL
1185 ;
1186 ; REPLY HAS BEEN FORMATTED THRU <NO. SPECS>
1187 ; INSERT IN MSG:
1188 ; <FID><FLGS><CLASS><RESP><DATA>
1189 ;-
1190
1191 003616 010200 FREAD: MOV R2,R0
1192 003620 CALL MB ; INSERT FID
1193
1194 003624 010100 MOV R1,R0 ; GET READ/SET BIT
1195 003626 000300 SWAB R0
1196 003630 042700 177776 BIC #^C<NF.CMD>,R0 ; NOW ISOLATED
1197 003634 132713 000020 BITB #FB.SST,(R3) ; FEATURE SET TO STD?
1198 003640 001402 BEQ 10$ ; NO
1199 003642 052700 000002 BIS #NF.STD,R0 ; SET TO STD
1200 003646 10$: CALL MB ; INSERT FLAGS
1201
1202 003652 CALL GTCLS ; GET THE CLASS IN R1
1203 003656 010100 MOV R1,R0
1204 003660 CALL MB ; INSERT CLASS
1205
1206 003664 005000 CLR R0
1207 003666 CALL MB ; RESP - NO ERRORS
1208
1209 003672 105701 TSTB R1 ; CHECK CLASS FOR LENGTH OF DATA
1210 003674 001406 BEQ 20$ ; 1 BIT
1211 ; FEATURE DEPENDENT
1212 ; EXPLICITLY LOOK FOR THOSE MORE THAN 1 BYTE
1213 003676 132713 000006 BITB #FB.WRD!FB.STR,(R3)
1214 003702 001012 BNE 50$ ; YES
1215 ; IF NOT MULTIPLE BYTE DATA, THEN 1 BYTE
1216 003704 005200 INC R0 ; COUNT = 1
1217 003706 CALL MB ; INSERT COUNT
1218
1219 003712 116300 000001 20$: MOVB 1(R3),R0 ; COPY FEATURE TABLE DATA ENTRY
1220 003716 30$: CALL MB ; INSERT DATA
1221
1222 003722 105265 000103 40$: INCB L.NFSP(R5) ; COUNT THE SPEC
1223 003726 000646 BR FEACON ; CONTINUE FEATURE HACKING
1224
1225 003730 132713 000004 50$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
1226 003734 001015 BNE 60$ ; STRING
1227 ; WORD VALUE - F.FCV = DLT OFFSET TO WORD
1228 003736 012700 000002 MOV #2,R0 ; 2 BYTE VALUE
1229 003742 CALL MB ; INSERT CNT
1230
1231 003746 005000 CLR R0
1232 003750 156300 000001 BISB F.FCV(R3),R0
1233 003754 060500 ADD R5,R0
1234 003756 011000 MOV (R0),R0 ; YES, READ THE SETTING FROM THE DLT
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 29-1
FEATURES READ
1235 003760 CALL MB ; INSERT LO BYTE
1236
1237 003764 000300 SWAB R0
1238 003766 000753 BR 30$ ; INSERT HI BYTE
1239
1240 ; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
1241 003770 005203 60$: INC R3 ; THIS DEPENDS ON F.FCV=1
1242 003772 112300 MOVB (R3)+,R0 ; GET THE LENGTH
1243 003774 CALL MB ; INSERT IN MSG
1244 004000 010004 MOV R0,R4 ; SAVE IT
1245 004002 112300 70$: MOVB (R3)+,R0 ; INSERT THE STRING IN MSG
1246 004004 CALL MB
1247 004010 105304 DECB R4 ; COUNT THE BYTE
1248 004012 001373 BNE 70$
1249 004014 000742 BR 40$
1250
1251
1252
1253 004016 105001 GTCLS: CLRB R1 ; SET FEATURE CLASS IN R1(LO)
1254 004020 132713 000001 BITB #FB.CL1,(R3) ; CHECK CLASS 1
1255 004024 001402 BEQ 10$ ; CLASS 0
1256 004026 152701 000001 BISB #FC.CL1,R1 ; SET CLASS 1
1257 004032 10$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 30
FEATURES SET
1259 .SBTTL FEATURES SET
1260
1261 ;+
1262 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
1263 ; R2 HAS THE FEATURE ID (BYTE)
1264 ; R3 POINTS TO THE FEATURE STATUS BYTE
1265 ; R5 STILL POINTS TO THE DEVICE LINE TBL
1266 ; REPLY HAS BEEN FORMATTED THRU <NO. SPECS=1>
1267 ;-
1268
1269 004034 122701 000002 FSET: CMPB #FC.SST,R1 ; CHECK STDNESS
1270 004040 001502 BEQ 80$ ; STD RESULT
1271 004042 132713 000100 BITB #FB.CA,(R3) ; REAL SET - CHECK IF SETABLE
1272 004046 001630 BEQ FERERR ; NO
1273 004050 111300 MOVB (R3),R0 ; FEATURE IS SETTABE
1274 004052 074100 XOR R1,R0 ; CHECK CLASS SPEC
1275 004054 042700 177776 BIC #^C<FB.CL1>,R0 ; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
1276 004060 001215 BNE FERBCL ; RESULT SHOULD BE 0
1277 004062 122701 000001 CMPB #FC.CL1,R1 ; CHECK DATA CLASS
1278 004066 001010 BNE 10$ ; CLASS 0
1279 ; * CLASS 1 - FEATURE DEPENDENT
1280 004070 CALL GB ; FEATURE DEPENDENT DATA - GET THE LENGTH
1281 004074 132713 000006 BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE DATA
1282 004100 001012 BNE 30$ ; GO DO IT
1283 004102 122700 000001 CMPB #1,R0 ; ONE BYTER ?
1284 004106 001210 BNE FERERR ; NO
1285 004110 10$: CALL GB ; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
1286 004114 110063 000001 MOVB R0,1(R3) ; SET FEATURE CURRENT VALUE
1287 004120 142713 000020 20$: BICB #FB.SST,(R3) ; NOT SET TO STD
1288 004124 000634 BR FREAD ; NOW READ THE FEATURE
1289
1290 004126 132713 000004 30$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
1291 004132 001023 BNE 40$ ; STRING
1292 ; WORD VALUE
1293 004134 122700 000002 CMPB #2,R0 ; 2 BYTE LENGTH
1294 004140 001025 BNE 50$ ; SCREWED IT UP
1295 004142 CALL GB ; GET THE PAGE LIMIT
1296 004146 110065 000126 MOVB R0,L.PBRC(R5) ; HIDE THE LO PART
1297 004152 CALL GB ; GET THE HI PART
1298 004156 000300 SWAB R0
1299 004160 156500 000126 BISB L.PBRC(R5),R0 ; R0/NEW WORD VALUE
1300 004164 010046 MOV R0,-(SP)
1301 004166 005000 CLR R0
1302 004170 156300 000001 BISB F.FCV(R3),R0
1303 004174 060500 ADD R5,R0
1304 004176 012610 MOV (SP)+,(R0) ; SET THE NEW VALUE IN WORD
1305 004200 000747 BR 20$
1306
1307 ; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
1308 004202 40$: PUSH R3 ; SAVE THE FEATURE BLOCK PTR
1309 004204 005203 INC R3 ; THIS DEPENDS ON F.FCV=1
1310 004206 120023 CMPB R0,(R3)+ ; CHECK THE LENGTH
1311 004210 001403 BEQ 60$ ; OK
1312 004212 POP R3 ; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
1313 004214 50$: CALLR FERERR ; AND REPORT THE ERROR
1314 004220 60$: PUSH R1 ; SAVE THE VARIABLES
1315 004222 010001 MOV R0,R1 ; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 30-1
FEATURES SET
1316 004224 70$: CALL GB ; XFER THE NEW VALUE TO THE CURRENT VALUE
1317 004230 110023 MOVB R0,(R3)+ ; STUFF THE BYTE
1318 004232 SOB R1,70$ ; AND COUNT IT
1319 004236 POP <R1,R3>
1320 004242 CALLR FREAD ; NOW READ THE FEATURE
1321
1322 004246 80$: CALL SETSTD ; SET FEATURE TO STD
1323 004252 103002 BCC 90$
1324 004254 CALLR FERNST ; NO STD TO SET
1325 004260 90$: CALLR FEACON ; DON'T READ IT
1326
1327
1328 ; * SET FEATURE TO ITS STD VALUE
1329 ; * R3/PTR TO FEATURE BLOCK IN DLT
1330 ; * R5/PTR TO DLT
1331 004264 132713 000010 SETSTD: BITB #FB.STE,(R3) ; SEE IF IT HAS ONE
1332 004270 001002 BNE 10$ ; YES
1333 004272 000261 SEC ; NO STD TO SET
1334 004274 RETURN
1335
1336 004276 132713 000006 10$: BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE VALUES
1337 004302 001006 BNE 20$ ; YES
1338 ; SINGLE BYTE VALUE
1339 004304 116363 000002 000001 MOVB F.FSV(R3),F.FCV(R3) ; SET CURRENT VALUE = STD VALUE
1340 004312 152713 000020 BISB #FB.SST,(R3) ; MARK FEATURE AS SET TO STD
1341 004316 000415 BR 30$
1342
1343 ; * MULTIPLE BYTE VALUE
1344 004320 132713 000004 20$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
1345 004324 001014 BNE 40$ ; STRING
1346 004326 PUSH R5 ; WORD VALUE
1347 004330 005046 CLR -(SP)
1348 004332 116316 000001 MOVB F.FCV(R3),(SP)
1349 004336 062605 ADD (SP)+,R5 ; R5 /PTR TO CURRENT VALUE
1350 004340 116325 000002 MOVB F.FSV(R3),(R5)+ ; XFER LO BYTE
1351 004344 116315 000003 MOVB F.FSV+1(R3),(R5) ; XFER HI BYTE
1352 004350 POP R5
1353
1354 004352 000241 30$: CLC
1355 004354 RETURN
1356
1357 004356 40$: PUSH <R0,R1,R3> ; STRING - F.FCV HAS THE LENGTH
1358 ; CURRENT VALUE BEGINS AT F.FCV+1
1359 ; STD VALUE BEGINS AT F.FCV+1+(F.FCV)
1360 004364 005203 INC R3 ; DEPENDS ON F.FCV=1
1361 004366 005000 CLR R0
1362 004370 152300 BISB (R3)+,R0 ; GET THE COUNT
1363 004372 010001 MOV R0,R1
1364 004374 060301 ADD R3,R1 ; R0/COUNT
1365 ; R1/SOURCE ADDRESS
1366 ; R3/DESTINATION ADDRESS
1367 004376 112123 45$: MOVB (R1)+,(R3)+ ; XFER THE STD VALUE
1368 004400 SOB R0,45$ ; COUNT IT
1369 004404 POP <R3,R1,R0>
1370 004412 000241 CLC
1371 004414 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 31
NURD MESSAGE BUILDER
1373 .SBTTL NURD MESSAGE BUILDER
1374
1375 ; R0/BYTE TO STUFF IN BUFFER
1376 ; R5/DLT
1377 004416 005365 000140 MB: DEC L.MSGS(R5) ; COUNT IT
1378 004422 002410 BLT 20$ ; BUFFER ALREADY FULL
1379 004424 MAP L.MSGA(R5) ; MAP TO BUFFER
1380 004432 110075 000136 MOVB R0,@L.MSGA+2(R5) ; INSERT CHAR
1381 004436 005265 000136 INC L.MSGA+2(R5) ; ADVANCE PTR
1382 004442 RETURN
1383
1384 004444 005065 000140 20$: CLR L.MSGS(R5) ; RESET THE COUNT
1385 004450 25$: PUSH R4
1386 004452 CALL GETMBF ; GET A BUFFER
1387 004456 103431 BCS 30$ ; SCREW
1388 004460 005064 000012 CLR C.STS(R4) ; INIT THE STATUS
1389 004464 016465 000014 000134 MOV C.BUF(R4),L.MSGA(R5) ; MAKE IT THE CURRENT BUFFER
1390 004472 016465 000016 000136 MOV C.BUF+2(R4),L.MSGA+2(R5)
1391 004500 016465 000020 000140 MOV C.CNT(R4),L.MSGS(R5)
1392 004506 ENQ$ L.MSGQ ; ADD IT TO END OF LIST
1393 004536 POP R4
1394 004540 000726 BR MB ; NOW STUFF THE CHAR
1395
1396 004542 30$: POP R4
1397 004544 DFHYBER DWAKT ; WAIT A SEC AND TRY AGAIN
1398 004562 000732 BR 25$
1399
1400 ; * SEND A BUILT MESSAGE TO NURD
1401 004564 016504 000130 MBSND: MOV L.MSGQ(R5),R4 ; GET THE FIRST BUFFER IN MSG
1402 004570 001456 BEQ 20$ ; NULL MSG
1403 004572 052764 000040 000012 BIS #NT.BOM,C.STS(R4) ; MARK IT AS BEG OF MSG
1404 004600 016504 000132 MOV L.MSGQ+2(R5),R4 ; GET THE LAST BUFFER IN MSG
1405 004604 052764 000100 000012 BIS #NT.EOM,C.STS(R4) ; MARK IT AS THE END OF MSG
1406 004612 166564 000140 000020 SUB L.MSGS(R5),C.CNT(R4) ; SET LAST BUFFER COUNT TO CORRECT AMOUNT
1407
1408 004620 10$: DEQ$ L.MSGQ,20$ ; DEQUEUE AND SEND ALL BUFFERS
1409 004674 112764 000002 000011 MOVB #NT$DAT,C.MOD(R4) ; ADDRESS IT PROPERLY
1410 004702 $TOBDM RC,C.STS(R4) ; C.STS ALREADY CORRECT
1411 004720 005265 000050 INC L.IOCN(R5) ; COUNT THE IO
1412 004724 000735 BR 10$
1413
1414 004726 005065 000140 20$: CLR L.MSGS(R5) ; CLEAN UP DEBRIS
1415 004732 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 32
FEATURE FINDER
1417 .SBTTL FEATURE FINDER
1418
1419 ; FEFND LOOKS FOR A FEATURE WITH FID IN R2
1420 ; AND RETURNS PTR TO FEATURE BLOCK IN R3 IF SUCCESSFUL
1421 ; NORMAL CARRY FLAG CONDITION FOR SUCCESS OR FAILURE
1422
1423 004734 012703 000206 FEFND: MOV #L.CFET,R3 ; TRY COMMON FEATURE 1ST
1424 004740 PUSH R2 ; SAVE FID CAUSE IT WILL BE MANGLED
1425 004742 105702 TSTB R2 ; CHECK IF DEVICE SPECIFIC FTR
1426 004744 100004 BPL 10$ ; COMMON, SKIP
1427 004746 012703 000220 MOV #L.DFET,R3 ; DEVICE SPECIFIC, GET POINTER
1428 004752 042702 177600 BIC #177600,R2 ; TRUNCATE TO JUST OFFSET ABOVE 128
1429
1430 004756 001414 10$: BEQ 20$ ; ZERO IS AN ILLEGAL FEATURE CODE
1431 004760 060503 ADD R5,R3 ; R3 -> FEATURE LIST IN DLT
1432 004762 020213 CMP R2,(R3) ; CHECK ON ID RANGE
1433 004764 103011 BHIS 20$ ; SKIP IF OUT OF RANGE
1434 ; R3 IS POINTING TO THE BASE OF THE
1435 ; FEATURES LIST, WHICH HOLDS THE HIGHEST
1436 ; STORED FEATURE CODE
1437 004766 060203 ADD R2,R3 ; ADD THE FID TO POINT TO ADDRESS OF FEATURE BLOCK
1438 004770 111303 MOVB (R3),R3 ; LIST ENTRY IS DLT OFFSET TO FEATURE BLOCK
1439 004772 001406 BEQ 20$ ; UNSUPPORTED FEATURE
1440 004774 042703 177400 BIC #^C377,R3 ; FLUSH SIGN EXTENSION
1441 005000 060503 ADD R5,R3 ; R3 -> FEATURE BLOCK
1442 005002 POP R2
1443 005004 000241 CLC
1444 005006 RETURN
1445
1446 005010 20$: POP R2 ; UNSUPPORTED FEATURE
1447 005012 000261 SEC
1448 005014 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 33
NURD CONTROL MESSAGE HANDLER
1450 .SBTTL NURD CONTROL MESSAGE HANDLER
1451
1452 ;+
1453 ; THIS ROUTINE IS CALLED FROM LENURD - REFER TO THE CALLING
1454 ; POINT IN THAT ROUTINE FOR THE REQUIRED REGISTER SETUP
1455 ;
1456 ; R0/BUFFER PTR: ->NURD MSG TYPE
1457 ; R4/CCB
1458 ; R5/DLT
1459 ; KISAR6/MAPPED TO BUFFER
1460 ;
1461 ; CONTROL MSG FORMAT: <SEQ NO.><COMMAND><RESULT>
1462 ;-
1463
1464 005016 122764 000004 000011 CONTRL: CMPB #NT$INT,C.MOD(R4) ; CHECK FOR INTERRUPT MSG
1465 005024 001402 BEQ CONINT ; THEY ARE PROCESSED NOW
1466 005026 CALLR QDLC ; OTHERS ARE SYNCH'D WITH DATA STREAM
1467
1468 005032 022764 000004 000020 CONINT: CMP #N.CCMD+1,C.CNT(R4) ; CHECK TO SEE IF ENOUGH SENT
1469 005040 003123 BGT BADCON ; NOT EVEN 4 LOUSY BYTES!
1470 005042 116001 000003 MOVB N.CCMD(R0),R1 ; GET CONTROL COMMAND BYTE
1471 005046 003520 BLE BADCON ; SKIP OUT ON ILLEGAL CODE
1472 005050 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
1473 005054 101515 BLOS BADCON ; OUT OF RANGE, SKIP OUT
1474 005056 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
1475 ; DO THE CONTROL FUNCTION IMMEDIATELY
1476 ; AND WORRY ABOUT RESPONSE LATER
1477 005060 ENQ$ L.CMSQ ; QUEUE THE MSG CCB TIL RESOURCES ARE CHECKED
1478 005110 CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
1479 ; CALLABLE ROUTINES:
1480 ; ABRTEF - INTERRUPT
1481 ; ABRTAL - INTERRUPT
1482 ; ABRTCL
1483 ; SNDSTS - SPECIAL RESULT
1484 ; DUMP
1485 ; PAUSE - INTERRUPT
1486 ; RESUME - INTERRUPT
1487 ; SNDCAP - SPECIAL RESULT
1488 ;
1489 ; RETURN WITH R0/RESULT CODE
1490
1491 ; * RESOURCE ERROR RETRY ENTRY
1492 005114 RECON: CALL GETMBF ; GET A RESPONSE BUFFER
1493 005120 103003 BCC 10$ ; OK
1494 005122 105265 000060 INCB L.RECO(R5)
1495 005126 RETURN
1496
1497 005130 10$: PUSH R4 ; SAVE THE RESPONSE CCB
1498
1499 ; * RETURN CCB WITH COMPLETION
1500 005132 DEQ$ L.CMSQ ; GET THE MSG CCB BACK
1501 005200 MAP C.BUF(R4) ; R0/RESULT
1502 005206 016401 000016 MOV C.BUF+2(R4),R1
1503 005212 116102 000003 MOVB N.CCMD(R1),R2 ; R2/COMMAND
1504 005216 116101 000002 MOVB N.CSEQ(R1),R1 ; R1/SEQ NO. OF CONTROL MSG
1505 005222 CALL NRDACK ; ACK THE CONTROL MSG
1506 005226 POP R4 ; GET THE RESPONSE CCB BACK
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 33-1
NURD CONTROL MESSAGE HANDLER
1507 005230 MAP C.BUF(R4) ; MAP TO THE BUFFER
1508 005236 016403 000016 MOV C.BUF+2(R4),R3 ; GET BUF PTR
1509 005242 112723 000003 MOVB #NM.CTL,(R3)+ ; FORMAT A NURD CONTROL MSG
1510 005246 105023 CLRB (R3)+ ; NO MSG FLAGS
1511 005250 110123 MOVB R1,(R3)+ ; SEQ NO.
1512 005252 110223 MOVB R2,(R3)+ ; COMMAND
1513 005254 110013 MOVB R0,(R3) ; RESULT
1514 005256 012764 000005 000020 MOV #N.CRES+1,C.CNT(R4) ; SET THE BUFFER COUNT
1515 005264 $TOBDM RC,#NT.BOM!NT.EOM ; SEND IT!
1516 005302 005265 000050 INC L.IOCN(R5) ; COUNT THE IO
1517 005306 RETURN
1518
1519
1520 005310 012764 100202 000012 BADCON: MOV #LS.REJ,C.STS(R4) ; REJECT(?) THIS ONE
1521 005316 CALL NRDRET ; ACK THE CRUFTY MSG
1522 005322 CALL STOPLE ; FLUSH THE DEVICE INTERRUPTS
1523 005326 052765 000004 000024 BIS #LA.ADN,L.ASTS(R5) ; ABORT THE LINK WHEN CURRENT PRINT Q DONE
1524 005334 CALLR STRTLE ; TURN ON PRINTER SO IT CAN DIE
1525
1526
1527 ; * CONTROL DISPATCH TABLE
1528 005340 005310' CTLDSP: .WORD BADCON ; 0 - CODE ZERO IS RESERVED
1529 005342 006250' .WORD ABRTEF ; 1 - ABORT TO END OF FILE
1530 005344 006256' .WORD ABRTAL ; 2 - ABORT ALL
1531 005346 006330' .WORD ABRTCL ; 3 - ABORT CLEAR
1532 005350 005544' .WORD SNDSTS ; 4 - STATUS REQUESTED, SEND ATTENTION
1533 005352 006046' .WORD DUMP ; 5 - DUMP OUTPUT BUFFERS
1534 005354 006076' .WORD PAUSE ; 6 - PAUSE
1535 005356 006154' .WORD RESUME ; 7 - RESUME FROM ERROR OR PAUSE
1536 005360 005310' .WORD BADCON ; 8 - UNDEFINED
1537 005362 006360' .WORD CAPREQ ; 9 - SEND CAPABILITIES MESSAGE
1538 000012 CTLOTR = <. - CTLDSP>/2
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 34
NON-INTERRUPT CONTROL MESSAGE PROCESSING
1540 .SBTTL NON-INTERRUPT CONTROL MESSAGE PROCESSING
1541
1542 ; * CONSYN CALLED FROM QTODLC
1543
1544 ; * PROCESS A NON-INTERRUPT CONTROL MESSAGE
1545 005364 CONSYN: CALL GB ; GET SEQ NO.
1546 005370 110065 000077 MOVB R0,L.DMSQ(R5) ; SAVE IT FOR RESPONSE
1547 005374 CALL GB ; GET COMMAND
1548 005400 010001 MOV R0,R1
1549 005402 003451 BLE 50$ ; SKIP OUT ON ILLEGAL CODE
1550 005404 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
1551 005410 101446 BLOS 50$ ; OUT OF RANGE, SKIP OUT
1552 005412 PUSH R1 ; SAVE COMMAND CODE FOR RESPONSE
1553 005414 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
1554 ; DO THE CONTROL FUNCTION IMMEDIATELY
1555 ; AND WORRY ABOUT RESPONSE LATER
1556 005416 CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
1557 ; CALLABLE ROUTINES:
1558 ; ABRTEF - INTERRUPT
1559 ; ABRTAL - INTERRUPT
1560 ; ABRTCL
1561 ; SNDSTS - SPECIAL RESULT
1562 ; DUMP
1563 ; PAUSE - INTERRUPT
1564 ; RESUME - INTERRUPT
1565 ; SNDCAP - SPECIAL RESULT
1566 ;
1567 ; RETURN WITH R0/RESULT CODE
1568 005422 POP R1 ; GET COMMAND CODE BACK
1569 005424 PUSH R0 ; SAVE RESPONSE CODE
1570 005426 CALL GBDQ ; ACK THE MSG
1571 005432 012700 000003 MOV #NM.CTL,R0 ; CONSTRUCT A CONTROL MSG
1572 005436 CALL MB ; CONTROL CODE
1573 005442 005000 CLR R0
1574 005444 CALL MB ; NULL MSG FLAGS
1575 005450 116500 000077 MOVB L.DMSQ(R5),R0
1576 005454 CALL MB ; SEQ NO. OF ORIGINAL COMMAND
1577 005460 010100 MOV R1,R0
1578 005462 CALL MB ; COMMAND
1579 005466 POP R0
1580 005470 CALL MB ; RESPONSE CODE
1581 005474 CALL MBSND ; SEND THE RESPONSE
1582 005500 105765 000061 TSTB L.RATT(R5) ; CHECK FOR OTHER MESSAGES TO GOE OUT
1583 005504 001402 BEQ 20$ ; NO ATTENTION MSGS
1584 005506 CALL SNDATT ; PENDING ATTENTION MSG
1585
1586 005512 105765 000062 20$: TSTB L.CAPP(R5) ; TRY CAPABILITIES MSG
1587 005516 001001 BNE 30$
1588 005520 RETURN
1589 005522 30$: CALLR SNDCAP ; PENDING CAPABILITIES MSG
1590
1591 005526 50$: CALL STOPLE ; FLUSH THE DEVICE INTERRUPTS
1592 005532 052765 000004 000024 BIS #LA.ADN,L.ASTS(R5) ; ABORT THE LINK WHEN CURRENT PRINT Q DONE
1593 005540 CALLR GBDQ ; ACK THE MSG AND WAIT FOR DEATH
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 35
CONTROL - REQUEST STATUS
1595 .SBTTL CONTROL - REQUEST STATUS
1596
1597 ; * ENTRY FROM CONTRL (ATTENTION REQUESTED)
1598 005544 005000 SNDSTS: CLR R0 ; SET RESULT(NR.ATT) FOR CNTROL RESPONSE
1599 005546 105765 000061 TSTB L.RATT(R5) ; CHECK ATTENTION ALREADY PENDING
1600 005552 001003 BNE 10$ ; DON'T MUNG ORIGNAL REASON
1601 005554 112765 000003 000061 MOVB #N.ARQS,L.RATT(R5) ; SET ATTENTION PENDING FLAG(REASON = REQUESTED)
1602 005562 10$: RETURN
1603
1604
1605 .SBTTL SEND ATTENTION MESSAGE
1606
1607 ;+
1608 ; THIS ROUTINE ALLOCATES AN SDB AND BUILDS AN ATTENTION
1609 ; MESSAGE USING THE REASON CODE
1610 ; FOUND IN L.RATT OF THE DLT. IF FOR SOME REASON (LIKE
1611 ; NO CCB'S) THE MESSAGE CANNOT BE BUILT, THE RATT CODE
1612 ; STAYS AROUND FOR THE NEXT ATTEMPT.
1613 ;-
1614
1615 005564 SNDATT: PUSH <R0,R1,R2,R3,R4> ; MAGNANIMOUSLY PRESERVE THE REGISTERS
1616 005576 116502 000061 MOVB L.RATT(R5),R2 ; GET EXCUSE CODE FOR ATTENTION MSG
1617 005602 001513 BEQ 110$ ; NO ATTENTION IS PENDING, LEAVE
1618 ; BUILD AND SEND AN ATTENTION MESSAGE
1619 005604 CALL GETMBF ; GET A MESSAGE BUFFER
1620 005610 103510 BCS 110$ ; FAILED, EXIT - WE'LL BE BACK
1621 005612 016401 000016 MOV C.BUF+2(R4),R1 ; GET POINTER TO START OF BUFFER
1622 005616 112721 000001 MOVB #NM.ATT,(R1)+ ; LOAD MSG TYPE TO BUFFER
1623 005622 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1624 005624 116521 000077 MOVB L.DMSQ(R5),(R1)+ ; STORE LAST GOOD SEQ NUMBER IN ATTENTION
1625 005630 110221 MOVB R2,(R1)+ ; LOAD ATTENTION CODE
1626 ; * BUILD FLAGS FIELD
1627 005632 005002 CLR R2 ; CLEAR FLAGS ACCUMULATOR
1628 005634 016500 000024 MOV L.ASTS(R5),R0 ; GET DEVICE STATUS
1629
1630 005640 032700 000004 BIT #LA.ADN,R0 ; ABORT WHEN DONE ?
1631 005644 001402 BEQ 10$
1632 005646 052702 000001 BIS #NA.FAT,R2 ; SOME FATAL ERROR - USUALLY USER'S
1633
1634 005652 032700 000200 10$: BIT #LA.ERR,R0 ; PRINTER ERROR ON?
1635 005656 001402 BEQ 11$ ; NO
1636 005660 052702 000002 BIS #NA.OFL,R2 ; YES, NOTE OFFLINE
1637
1638 005664 032700 000002 11$: BIT #LA.PAU,R0 ; PAUSED?
1639 005670 001402 BEQ 20$ ; NO
1640 005672 052702 000004 BIS #NA.PAU,R2 ; YES
1641
1642 005676 052702 000200 20$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
1643 005702 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 1 FLAGS
1644 005704 005002 CLR R2 ; CLEAR FOR BYTE 2 FLAGS
1645 005706 032700 004000 BIT #LA.TMO,R0 ; HUNG?
1646 005712 001402 BEQ 30$ ; NO
1647 005714 052702 000004 BIS #NA.DTO,R2 ; YES
1648
1649 005720 052702 000200 30$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
1650 005724 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 2
1651 005726 005002 CLR R2 ; CLEAR FOR BYTE 3 FLAGS
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 35-1
SEND ATTENTION MESSAGE
1652 005730 032702 010000 BIT #LA.PLE,R2 ; PAGE LIMIT EXCEEDED ?
1653 005734 001402 BEQ 40$
1654 005736 052702 000001 BIS #NA.OVP,R2 ; YES
1655
1656 005742 110211 40$: MOVB R2,(R1) ; THAT'S IT FOR BYTE 3 FLAGS
1657 005744 001005 BNE 50$ ; 3 BYTE FEILD
1658 005746 142741 000200 BICB #200,-(R1) ; NOT MORE THAN 2 BYTES
1659 005752 001002 BNE 50$ ; 2 BYTER
1660 005754 142741 000200 BICB #200,-(R1) ; ONLY 1 BYTE
1661
1662 005760 005201 50$: INC R1 ; ADVANCE R1 TO NEXT AVAILABLE BYTE
1663 005762 016503 000040 MOV L.PGCT(R5),R3 ; GET PAGE COUNT ACCUMULATOR
1664 005766 110321 MOVB R3,(R1)+ ; STORE LOW BYTE OF COUNT
1665 005770 000303 SWAB R3 ; GET HIGH BYTE
1666 005772 110321 MOVB R3,(R1)+ ; STORE IT TOO
1667 005774 166401 000016 SUB C.BUF+2(R4),R1 ; COMPUTE MSG SIZE
1668 006000 010164 000020 MOV R1,C.CNT(R4) ; STUFF IT INTO CCB
1669 ; READY TO GO
1670 006004 $TOBDM RC,#NT.BOM!NT.EOM ; SEND UP ATTENTION MSG FROM HERE
1671 006022 005265 000050 INC L.IOCN(R5) ; COUNT THE IO
1672 006026 105065 000061 CLRB L.RATT(R5) ; CLEAR PENDING REQUEST FOR ATTENTION
1673 006032 110$: POP <R4,R3,R2,R1,R0> ; RESTORE REGS
1674 006044 RETURN ; EXIT SEND ATTENTION
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 36
CONTROL - DUMP OUTPUT BUFFERS
1676 .SBTTL CONTROL - DUMP OUTPUT BUFFERS
1677
1678 006046 005000 DUMP: CLR R0 ; SET RESPONSE (NR.DMP)
1679 006050 105765 000061 TSTB L.RATT(R5) ; PENDING ATTENTION?
1680 006054 001007 BNE 10$ ; YES
1681 006056 105765 000062 TSTB L.CAPP(R5) ; PENDING CAPABILITIES?
1682 006062 001004 BNE 10$ ; YES
1683 006064 005765 000034 TST L.DDMQ(R5) ; NOT TO DLC, CHECK ON PHYSICAL QUEUE
1684 006070 001001 BNE 10$ ; IT'S THERE, OKAY
1685 006072 005200 INC R0 ; NOTHING TO DUMP(NR.DMP)
1686 006074 10$: RETURN
1687
1688
1689
1690
1691 .SBTTL CONTROL - PAUSE
1692
1693 006076 005000 PAUSE: CLR R0 ; SET RESPONSE (NR.DPS)
1694 006100 032765 000006 000024 BIT #LA.PAU!LA.ADN,L.ASTS(R5) ; ALREADY PAUSED/PAUSING?
1695 006106 001017 BNE 20$ ; YES
1696 006110 005765 000072 TST L.DLCQ(R5) ; ANYTHING QUEUED?
1697 006114 001005 BNE 10$ ; YES, OKAY TO PAUSE
1698 006116 005765 000034 TST L.DDMQ(R5) ; NONE IN VIRTUAL, CHECK PHYSICAL
1699 006122 001002 BNE 10$
1700 006124 012700 000002 MOV #NR.NDP,R0 ; NOTHING TO PAUSE
1701 006130 10$: CALL STOPLE ; ENSURE ONLY ONE ATTENTION MSG
1702 006134 052765 000002 000024 BIS #LA.PAU,L.ASTS(R5) ; PAUSE NO MATTER WHAT
1703 006142 CALLR GOOSLE ; MAKE SURE IT HAPPENS
1704
1705 006146 012700 000001 20$: MOV #NR.PAU,R0 ; ALREADY PAUSED
1706 006152 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 37
CONTROL - RESUME OUTPUT
1708 .SBTTL CONTROL - RESUME OUTPUT
1709
1710 006154 005000 RESUME: CLR R0 ; SET RESPONSE(NR.RES)
1711 006156 032765 000006 000024 BIT #LA.PAU!LA.ADN,L.ASTS(R5) ; CHECK PAUSEDNESS
1712 006164 001417 BEQ 20$ ; NOTHING HUNG
1713 006166 042765 010206 000024 BIC #LA.PAU!LA.ADN!LA.ERR!LA.PLE,L.ASTS(R5) ; FLUSH PAUSING CONDITIONS
1714 006174 005765 000034 TST L.DDMQ(R5) ; CHECK FOR ANY CURRENT DATA XFER'S
1715 006200 001403 BEQ 10$ ; SOMETHING IN PRINT Q
1716 006202 CALL GOOSLE ; TURN ON DEVICE AGAIN
1717 006206 000410 BR 30$
1718 006210 005765 000072 10$: TST L.DLCQ(R5) ; THIS RESUMES ALL NON-INTERRUPT MSG PROCESSING
1719 006214 001005 BNE 30$ ; SOMETHING WAITING TO PROCESSED
1720 006216 012700 000002 MOV #NR.NDR,R0 ; NOTHING TO RESUME
1721 006222 000402 BR 30$
1722
1723 006224 012700 000001 20$: MOV #NR.NPS,R0 ; NOT PAUSED
1724
1725 006230 122765 000004 000142 30$: CMPB #DWAKR,L.DWAK(R5) ; CHECK FOR DESIRED WAKE CONDITION
1726 006236 001003 BNE 40$ ; NO
1727 006240 112765 000003 000142 MOVB #DWAKT,L.DWAK(R5) ; MAP TO A CLOCK TOCK WAKE
1728 ; THIS ALLOWS CONTROL PROCESS TO PROCEED
1729 006246 40$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 38
CONTROL - ABORT COMMAND SET
1731 .SBTTL CONTROL - ABORT COMMAND SET
1732
1733 ; ABRTEF(NC.AUE) IS AN INTERRUPT MSG
1734 ; ABRTAL(NC.AUC) IS AN INTRRUPT MSG
1735
1736
1737 ; * ABORT TO END OF FILE
1738 006250 012700 000002 ABRTEF: MOV #NR.NOE,R0 ; EOF NOT DEFINED FOR OUTPUT DEVICE
1739 006254 RETURN
1740
1741 ; * ABORT UNTIL CLEAR RECEIVED
1742 006256 ABRTAL: CALL STOPLE ; FLUSH THE DEVICE
1743 006262 052765 000010 000024 BIS #LA.ABO,L.ASTS(R5) ; NOTE ABORTING
1744 006270 005000 CLR R0 ; SET RESPONSE NR.ABS
1745 006272 016501 000034 MOV L.DDMQ(R5),R1 ; CHECK ALL QUEUES TO SEE IF ANYTHING HAPPENING
1746 006276 056501 000122 BIS L.PLBP+2(R5),R1
1747 006302 056501 000072 BIS L.DLCQ(R5),R1
1748 006306 056501 000130 BIS L.MSGQ(R5),R1
1749 006312 156501 000142 BISB L.DWAK(R5),R1 ; CHECK SUSPENDED PROCESSES
1750 006316 001002 BNE 10$ ; NR.ABS (ABORT STARTED)
1751 006320 012700 000001 MOV #NR.NAB,R0 ; NOTHING TO ABORT
1752 006324 10$: CALLR FLUSHQ ; CLEAR THE WORLD
1753
1754 ; * CLEAR ABORT STATUS
1755 006330 005000 ABRTCL: CLR R0 ; SET RESPONSE CODE
1756 006332 032765 000030 000024 BIT #LA.ABE!LA.ABO,L.ASTS(R5) ; ABORT SET?
1757 006340 001404 BEQ 10$ ; NO
1758 006342 042765 000030 000024 BIC #LA.ABE!LA.ABO,L.ASTS(R5) ; CLEAR ABORTING
1759 006350 RETURN
1760
1761 006352 012700 000001 10$: MOV #NR.ACN,R0 ; NOT IN ABORT STATE
1762 006356 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 39
CONTROL - REQUEST CAPABILITIES
1764 .SBTTL CONTROL - REQUEST CAPABILITIES
1765
1766 ; * CONTROL FCN TO SET UP CAPABILITIES MSG
1767 006360 005000 CAPREQ: CLR R0 ; SET RESPONSE CODE
1768 006362 105265 000062 INCB L.CAPP(R5) ; SET CAPABILITIES PENDING FLAG
1769 006366 RETURN
1770
1771
1772
1773
1774 .SBTTL SEND CAPABILITIES MESSAGE
1775
1776 ; * MESSAGE FORMAT: <NO. FEATURES><...FID'S...>
1777
1778 006370 SNDCAP: CALL GETMBF ; GET A MSG BUFFER
1779 006374 103457 BCS 100$
1780 006376 016403 000016 MOV C.BUF+2(R4),R3 ; GET BUFFER ADDRESS
1781 ; FORMAT A NURD MESSAGE
1782 006402 112723 000005 MOVB #NM.CAP,(R3)+ ; NURD MSG TYPE = CAPABILITIES
1783 006406 105023 CLRB (R3)+ ; NO FLAGS
1784 006410 PUSH R3 ; SAVE PTR TO CNT
1785 006412 105023 CLRB (R3)+ ; INIT CNT
1786 006414 012764 000003 000020 MOV #3,C.CNT(R4) ; SET BUFFER CNT = BYTES ALREADY INSERTED
1787 006422 PUSH R5 ; SAVE THE DLT PTR
1788 006424 062705 000206 ADD #L.CFET,R5 ; GET R5 -> COMMON FEATURES LIST
1789 006430 005001 CLR R1 ; INIT THE FID
1790
1791 006432 005000 10$: CLR R0 ; GET LENGTH OF FEATURE LIST
1792 006434 152500 BISB (R5)+,R0
1793 006436 001410 BEQ 31$ ; NO FEATURES!!
1794
1795 006440 005201 20$: INC R1 ; ADVANCE THE FID
1796 006442 105725 TSTB (R5)+ ; CHECK FOR SUPPORT OF IT
1797 006444 001403 BEQ 30$ ; NOPE
1798 006446 110123 MOVB R1,(R3)+ ; YES - STORE FID IN MSG
1799 006450 005264 000020 INC C.CNT(R4) ; COUNT IT
1800 006454 30$: SOB R0,20$
1801 006460 105701 31$: TSTB R1 ; CHECK WHICH FEATURE LIST
1802 006462 100403 BMI 40$ ; DEVICE SPECIFIC - DONE
1803 006464 012701 000200 MOV #200,R1 ; INIT FID FOR DEVICE SPECIFIC FEATURES
1804 006470 000760 BR 10$ ; PROCESS THAT LIST
1805
1806 006472 40$: POP R5 ; GET THE DLT PTR BACK
1807 006474 016400 000020 MOV C.CNT(R4),R0 ; GET THE BUFFER CNT
1808 006500 162700 000003 SUB #3,R0 ; CALC NO. FEATURES FOUND
1809 006504 110036 MOVB R0,@(SP)+ ; STORE CNT IN CNT BYTE OF MSG
1810 006506 $TOBDM RC,#NT.BOM!NT.EOM ; SEND IT
1811 006524 005265 000050 INC L.IOCN(R5) ; COUNT IT
1812 006530 105065 000062 CLRB L.CAPP(R5) ; FLUSH THE FLAG
1813 006534 100$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 40
SEND ALERT MESSAGE
1815 .SBTTL SEND ALERT MESSAGE
1816
1817 006536 SNDALR: CALL GETMBF ; GET A MESSAGE BUFFE
1818 006542 103424 BCS 10$ ; COULDN'T
1819 006544 016401 000016 MOV C.BUF+2(R4),R1 ; GET BUFFER PTR
1820 006550 112721 000004 MOVB #NM.ALR,(R1)+ ; BUILD COMPLETE ALERT MSG IN A SINGLE WORD
1821 006554 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1822 006556 012764 000002 000020 MOV #2,C.CNT(R4)
1823
1824 006564 112764 000004 000011 MOVB #NT$INT,C.MOD(R4) ; ALERT IS AN INTERRUPT MSG
1825 006572 $TOBDM RC,#NT.BOM!NT.EOM ; SEND UP ALERT MSG
1826 006610 005265 000050 INC L.IOCN(R5) ; COUNT THE IO
1827 006614 10$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 41
TIMER HANDLER
1829 .SBTTL TIMER HANDLER
1830
1831 ;+
1832 ; R4/FAKE CCB
1833 ; R5/DLT
1834 ;-
1835
1836 006616 005765 000052 LETIM: TST L.IOWT(R5) ; CHECK FOR CLOSE WAIT
1837 006622 001402 BEQ 5$
1838 006624 CALLR CLOSWT ; PREEMPTS ALL ELSE
1839
1840 006630 105765 000060 5$: TSTB L.RECO(R5) ; CHECK CONTROL RESOURCE ERROR
1841 006634 001404 BEQ 10$
1842 006636 105065 000060 CLRB L.RECO(R5) ; YES - FLUSH THE FLAG
1843 006642 CALL RECON ; RESTART THE PROCESS
1844
1845 006646 122765 000003 000142 10$: CMPB #DWAKT,L.DWAK(R5) ; CHECK TIMESLEEP
1846 006654 001002 BNE 20$
1847 006656 CALL DFWAKE ; RESTART THE PROCESS
1848 ; IT WILL RETURN HERE
1849
1850 006662 032765 000200 000024 20$: BIT #LA.ERR,L.ASTS(R5) ; CHECK DEVICE PROBLEMS
1851 006670 001411 BEQ 30$ ; NOT BECAUSE OF DEVICE ERROR
1852 006672 005775 000022 TST @L.CSR(R5) ; DEVICE ERROR WAS REASON
1853 006676 100406 BMI 30$ ; STILL HAVING PROBLEMS
1854 006700 CALL SNDALR ; CURE HS BEEN EFFECTED, NOTIFY USER
1855 006704 103403 BCS 30$ ; COULDN'T SEND ONE, COME BACK LATER
1856 006706 042765 000200 000024 BIC #LA.ERR,L.ASTS(R5) ; FLUSH ERROR BUT LEAVE LA.PAU
1857 ; USER MUST RESUME
1858
1859 006714 105765 000045 30$: TSTB L.HUNG(R5) ; CHECK HUNG TIMER
1860 006720 001414 BEQ 50$ ; NOT SET
1861 006722 105365 000045 DECB L.HUNG(R5) ; COUNT THE TOCK
1862 006726 001011 BNE 50$ ; STILL OK
1863 006730 052765 004000 000024 BIS #LA.TMO,L.ASTS(R5) ; DEVICE IS COMATOSE
1864 006736 105765 000061 TSTB L.RATT(R5) ; CHECK PENDING ATTENTION MSG
1865 006742 001006 BNE 55$ ; YES - DON'T GENERATE ANOTHER
1866 006744 112765 000001 000061 MOVB #N.ASTC,L.RATT(R5) ; SET PENDING ATTENTION FLAG(REASON CODE)
1867
1868 006752 105765 000061 50$: TSTB L.RATT(R5) ; CHECK PENDING ATTENTION MSG
1869 006756 001402 BEQ 60$
1870 006760 55$: CALL SNDATT ; TRY TO SEND ONE
1871
1872 006764 105765 000062 60$: TSTB L.CAPP(R5) ; CHECK PENDING CAPABILITIES MSG
1873 006770 001402 BEQ 70$
1874 006772 CALL SNDCAP ; TRY TO SEND ONE
1875 006776 105215 70$: INCB (R5) ; RESET THE DLT CLOCK FOR THE NEXT TOCK
1876 007000 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 42
RESOURCE RETURN
1878 .SBTTL RESOURCE RETURN
1879
1880 ;+
1881 ; * RESOURCE RETURN ENTRY (RECEIVE ENABLE). *** IT IS HERE THAT NURD
1882 ; * MESSAGES SENT BY RECEIVE COMPLETE ($RCCMP) ARE RETURNED BY THE
1883 ; * DRIVER TO THE PROPER CORE POOL OR TO THEIR MESSAGE SPECIFIC
1884 ; * LOCATIONS. MESSAGES SO HANDLED INCLUDE ATTENTION, CAPABILITIES,
1885 ; * ALERT, AND AUGMENTED BUFFERS OF FEATURES READ MESSAGES.
1886 ;-
1887
1888 007002 005365 000050 LEDLRE: DEC L.IOCN(R5) ; COUNT THE RETURNED RESOURCE
1889 007006 002002 BGE FLSBUF
1890 007010 005065 000050 CLR L.IOCN(R5) ; BLEW IT SOMEWHERE
1891
1892 007014 122764 000004 000003 FLSBUF: CMPB #CB.RDB,C.BID(R4) ; DISCERN BUFFER TYPE BEING DELIVERED
1893 007022 001412 BEQ 24$ ; READ DATA BUFFER
1894 007024 005764 000016 TST C.BUF+2(R4) ; CHECK FOR PRESENCE OF A BUFFER
1895 007030 001002 BNE 21$ ; SMALL DATA BUFFER/CCB COMBO
1896 007032 CALLR $CCBRT ; DEALLOCATE NAKED CCB AND RETURN
1897
1898 007036 016464 000026 000016 21$: MOV C.BUF2+2(R4),C.BUF+2(R4); CAREFULLY RESTORE BUFFER PTR
1899 007044 CALLR $CSBRT ; DEALLOCATE SDB/CCB AND RETURN
1900
1901 007050 24$: CALLR $RDBRT ; DEALLOCATE RDB AND RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 43
OPEN/CLOSE DEVICE
1903 .SBTTL OPEN/CLOSE DEVICE
1904
1905 ;+
1906 ; INITIALIZE UNIT
1907 ; R5/DLT
1908 ;-
1909
1910 007054 CTLSTR: ; START DEVICE
1911 007054 LEOPEN: PUSH R4 ; SAVE INCOMING CCB POINTER
1912 007056 032765 000001 000024 BIT #LA.CLO,L.ASTS(R5) ; CLOSED?
1913 007064 001550 BEQ 100$ ; NO, THEN HOW CAN IT BE OPENED?
1914 007066 005075 000022 CLR @L.CSR(R5) ; BE VERY PESSIMISTIC
1915 007072 005065 000024 CLR L.ASTS(R5) ; ZAP THE ACTION STATUS WORD
1916 007076 005065 000032 CLR L.PUBS(R5) ; FLUSH CURRENT PRINT BUFFER(SHOULD BE CLEAR)
1917 007102 105065 000142 CLRB L.DWAK(R5) ; INIT THE DATA/FEATURES HYBER FCN
1918 007106 005065 000106 CLR L.DMAD(R5) ; FLUSH SOURCE BUF IN USE
1919 007112 005065 000110 CLR L.DMAD+2(R5)
1920 007116 005065 000112 CLR L.DMBS(R5)
1921 007122 105065 000077 CLRB L.DMSQ(R5) ; INIT THE DATA MSG SEQ NO.
1922 007126 005065 000134 CLR L.MSGA(R5) ; INIT CURRENT OUT MSG CRUFT
1923 007132 005065 000136 CLR L.MSGA+2(R5)
1924 007136 005065 000140 CLR L.MSGS(R5)
1925 007142 005065 000050 CLR L.IOCN(R5) ; INIT OUTSTANDING IO COUNT
1926 007146 005065 000052 CLR L.IOWT(R5) ; INIT CLOSE-WAIT FLAG
1927 007152 105065 000045 CLRB L.HUNG(R5) ; INIT THE HUNG DEVICE TIMER
1928 007156 105065 000060 CLRB L.RECO(R5) ; INIT THE CONTROL RESOURCE ERROR FLAG
1929 007162 105065 000061 CLRB L.RATT(R5) ; INIT THE PENDING ATTENTION MSG FLAG
1930 007166 105065 000062 CLRB L.CAPP(R5) ; INIT THE PENDING CAPABILITIES MSG FLAG
1931 007172 005065 000040 CLR L.PGCT(R5) ; INIT THE PAGE COUNTER
1932 007176 012700 000177 MOV #DEL,R0 ; INITIALIZE LP11 XLATION TABLE
1933 007202 105060 000244' CLRB $LEASC(R0) ; SUPPRESS DEL
1934 007206 005300 DEC R0
1935
1936 007210 110060 000244' 10$: MOVB R0,$LEASC(R0) ; MOST OF TABLE IS ASCII TO ASCII
1937 007214 SOB R0,10$
1938 007220 012700 000037 MOV #US,R0 ; SUPPRESS CONTROL CODES
1939
1940 007224 105060 000244' 12$: CLRB $LEASC(R0)
1941 007230 SOB R0,12$
1942 007234 105067 171004 CLRB $LEASC ; SUPPRESS NUL
1943 007240 012700 000444' MOV #FCXTB,R0 ; GET ADDRESS OF EXCEPTION TABLE
1944 007244 112001 15$: MOVB (R0)+,R1 ; GET $LEASC OFFSET
1945 007246 100403 BMI 20$ ; DONE IF BYTE NEGATIVE
1946 007250 112061 000244' MOVB (R0)+,$LEASC(R1) ; STUFF IN REPLACEMENT DATA
1947 007254 000773 BR 15$
1948
1949 007256 012765 000244' 000064 20$: MOV #$LEASC,L.CSMP(R5) ; SET ADDRESS OF CHAR SET MAP
1950
1951 ; * SET ALL FEATURES WITH STANDARDS TO STD
1952 007264 012700 000206 MOV #L.CFET,R0 ; COMMON FEATURES
1953 007270 CALL 200$ ; DO ALL
1954 007274 012700 000220 MOV #L.DFET,R0 ; DEVICE SPECIFIC FEATURES
1955 007300 CALL 200$ ; ALL OF THEM TOO
1956
1957 ; * INIT PHYSICAL BUFFER POOL
1958 007304 012700 000004 MOV #LEPBFS,R0 ; RESERVE SEVERAL
1959 007310 55$: CALL GETPBF ; GET A PHYSICAL BUFFER
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 43-1
OPEN/CLOSE DEVICE
1960 007314 103417 BCS 70$ ; FAIL OPEN IF NOT AVAILABLE
1961 007316 005014 CLR (R4) ; CLEAR THE LINK
1962 007320 ENQ$ L.PLBQ ; QUEUE THE BUFFER TO THE FREE LIST
1963 007350 SOB R0,55$
1964
1965 007354 005765 000114 70$: TST L.PLBQ(R5) ; FAIL TO OPEN IF NONE AVAILABLE
1966 007360 001412 BEQ 100$
1967 007362 005065 000120 CLR L.PLBP(R5) ; INIT PHYSICAL BUFFER IN USE
1968 007366 005065 000122 CLR L.PLBP+2(R5)
1969 007372 005065 000124 CLR L.PLBS(R5)
1970 007376 005003 CLR R3 ; RETURN SUCCESS
1971 007400 116515 000001 MOVB L.TIMI(R5),(R5) ; START THE TIMER FCNS
1972 007404 000405 BR 104$
1973
1974 007406 012703 100202 100$: MOV #LS.REJ,R3 ; FAILED TO OPEN
1975 007412 052765 000001 000024 BIS #LA.CLO,L.ASTS(R5) ; NOTE REMAINING CLOSED
1976
1977 007420 104$: POP R4 ; RESTORE POINTER FOR COMMAND CCB
1978 007422 CALL $CTCMP ; SEND COMMAND BACK
1979 007426 RETURN
1980
1981
1982 007430 060500 200$: ADD R5,R0 ; R0/FEATURE LIST OFFSET
1983 007432 005001 CLR R1
1984 007434 152001 BISB (R0)+,R1 ; GET NO. OF FEATURES
1985 007436 005003 210$: CLR R3
1986 007440 152003 BISB (R0)+,R3 ; GET ADDRESS OF FEATURE BLOCK
1987 007442 001403 BEQ 220$ ; EMPTY SLOT
1988 007444 060503 ADD R5,R3
1989 007446 CALL SETSTD ; SET IT TO STD
1990 007452 220$: SOB R1,210$
1991 007456 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 44
OPEN/CLOSE DEVICE
1993 007460 CTLSTP: ; STOP DEVICE
1994 007460 005075 000022 LECLOS: CLR @L.CSR(R5) ; CLEAR PRINTER (SCREECHING HALT)
1995 007464 052765 000001 000024 BIS #LA.CLO,L.ASTS(R5) ; MARK AS CLOSED
1996 007472 CALL FLUSHQ ; FLUSH THE QUEUES
1997 007476 PUSH R4 ; SAVE COMMAND CCB POINTER
1998
1999 007500 10$: DEQ$ L.PLBQ,20$ ; GET NEXT PHYSICAL BUFFER FROM QUEUE
2000 007554 CALL PBFINI ; MAKE SURE BUFFER DESCRIPTOR IS PROPERLY SET
2001 007560 CALL FLSBUF ; RETURN BUFFER TO POOL
2002 007564 000745 BR 10$ ; TRY TO RETURN MORE
2003
2004 007566 20$: DEQ$ L.CMSQ,30$ ; FLUSH ANY OUTSTANDING CONTROL MSGS
2005 007642 CALL NRDACK ; RETURN THEM
2006 007646 000747 BR 20$
2007
2008 007650 30$: POP R4 ; RESTORE COMMAND CCB POINTER
2009 007652 010465 000052 MOV R4,L.IOWT(R5) ; SET CLOSE WAIT FLAG
2010
2011 ; * COMLPETE CLOSE ONLY WHEN ALL CCB'S RETURNED
2012 007656 005765 000050 CLOSWT: TST L.IOCN(R5)
2013 007662 001402 BEQ 10$
2014 007664 105215 INCB (R5)
2015 007666 RETURN
2016
2017 007670 105015 10$: CLRB (R5) ; FLUSH THE TIMER FCNS
2018 007672 016504 000052 MOV L.IOWT(R5),R4 ; GET THE CLOSE CCB BACK
2019 007676 005065 000052 CLR L.IOWT(R5) ; COVER OUR TRACKS
2020 007702 005003 CLR R3 ; CLOSE NEVER FAILS - IT JUST TAKES A WHILE!
2021 007704 CALLR $CTCMP ; RETURN THE COMMAND
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 45
PHYSICAL BUFFER MANAGEMENT
2023 .SBTTL PHYSICAL BUFFER MANAGEMENT
2024
2025 ; * PHYSICAL BUFFERS ARE RDB'S
2026 007710 GETPBF: CALL $RDBGT ; GET A PHYSICAL BUFFER
2027 007714 103417 BCS 10$ ; LOSE
2028 007716 005064 000012 CLR C.STS(R4) ; INIT STATUS
2029 007722 012764 177777 000006 MOV #-1,C.LIN(R4) ; MARK THE CCB AS STRICTLY LOCAL
2030 007730 012764 000012 000010 MOV #NT$RTN*400!FC.XCP,C.FNC(R4) ; ADDRESS TO SEND TO SELF
2031 007736 005064 000032 CLR C.FLG2(R4) ; DEMARK BUF BEFORE MAKING THEM AVAILABLE
2032
2033 ; * SECOND BUFFER DESCRIPTOR ASSUMED TO HAVE A COPY OF THE BUFFER ADDRESS
2034 007742 005064 000020 CLR C.CNT(R4) ; MAKE BUFFER EMPTY
2035 007746 016764 000000G 000030 MOV $RDBSZ,C.CNT2(R4) ; GET SIZE
2036 007754 10$: RETURN
2037
2038
2039 ; * INIT A PHYSICAL BUFFER FOR USE
2040 007756 005064 000012 PBFINI: CLR C.STS(R4) ; INIT STATUS
2041 007762 012764 177777 000006 MOV #-1,C.LIN(R4) ; MARK THE CCB AS STRICTLY LOCAL
2042 007770 016464 000026 000016 MOV C.BUF2+2(R4),C.BUF+2(R4); INIT BUFFER PTR
2043 007776 016464 000030 000020 MOV C.CNT2(R4),C.CNT(R4) ; SET BUF SIZE FOR USER
2044 010004 005064 000032 CLR C.FLG2(R4) ; DEMARK BUFFER BEFORE USE
2045 010010 RETURN
2046
2047
2048 010012 GETMBF: CALL $CSBGT ; GET A MESSAGE BUFFER
2049 010016 103425 BCS 10$ ; LOSE
2050 010020 016564 000046 000006 MOV L.SLN(R5),C.LIN(R4) ; MARK THE CCB AS BELONGING TO THIS SYSTEM LINE NO.
2051 010026 016464 000014 000024 MOV C.BUF(R4),C.BUF2(R4) ; PRESERVE BUFFER DESCRIPTOR
2052 010034 016464 000016 000026 MOV C.BUF+2(R4),C.BUF2+2(R4)
2053 010042 016764 000000G 000030 MOV $SDBSZ,C.CNT2(R4) ; GET SIZE
2054 010050 016464 000030 000020 MOV C.CNT2(R4),C.CNT(R4) ; SET BUF SIZE FOR USER
2055 010056 012764 000140 000012 MOV #NT.BOM!NT.EOM,C.STS(R4) ; INIT AS A WHOLE MSG
2056 010064 012764 001014 000010 MOV #NT$DAT*400!FC.RCP,C.FNC(R4) ; INIT FUNCTION AND MOD
2057 010072 10$: RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 46
DDM AND DLC TRANSMIT COMPLETE
2059 .SBTTL DDM AND DLC TRANSMIT COMPLETE
2060
2061 ;+
2062 ; CALLED FROM INTERRUPT SERVICE TO RETURN A DEAD DATA CCB
2063 ; R4/DEAD CCB
2064 ; R5/DLT
2065 ;
2066 ; THE DEAD CCB MAY BE A PHYSICAL BUFFER THAT HAS BEEN PRINTED AND MAY
2067 ; OR MAY NOT HAVE A PTR TO THE SOURCE BUFFER IN C.FLG2. IF SO, THEN
2068 ; THE END OF THE SOURCE BUFFER COINCIDES WITH THE PHYSICAL BUFFER AND
2069 ; IS TO BE RETURNED.
2070 ; THE DEAD CCB MAY BE SOME OTHER CCB THAN A PHYSICAL BUFFER AND IS
2071 ; ONLY CIRCULATED THROUGH THE DDM QUEUE IN ORDER TO SYNCHRONIZE ITS
2072 ; TRANSMISSION TO THE USER WITH ACTUALLY PRINTED DATA. PHYSICAL BUFFERS
2073 ; ARE UNIQUE BY VIRTUE OF HAVING C.LIN(WORD)=-1.
2074 ; PHYSICAL BUFFERS ARE RETURNED TO DLC LEVEL BY SENDING THEM IN ORDER TO
2075 ; DIVORCE THE POSSIBLY RESULTING DLC RESOURCE WAKE UP FROM THE INTERRUPT
2076 ; THREAD.
2077 ;-
2078
2079 010074 005764 000006 DDMXCP: TST C.LIN(R4) ; CHECK FOR HACK WHEN NO PHYSICAL BUFS TO CIRCULATE
2080 010100 100067 BPL 100$ ; BUF IS REALLY A SOURCE BUF IN DISGUISE
2081 010102 PUSH R4 ; SAVE THE PHYSICAL BUFFER
2082 010104 016404 000032 MOV C.FLG2(R4),R4 ; GET SOURCE BUF TO RETURN
2083 010110 001402 BEQ 26$ ; NO MARKS
2084 010112 CALL 100$ ; RETURN SOURCE BUF TO OWNER
2085
2086 010116 26$: POP R4 ; RESTORE THE RETURNING PHYSICAL BUFFER ADDR
2087 010120 032764 000400 000012 BIT #LA.EOF,C.STS(R4) ; CHECK THIS BUFFER FOR EOF CONDITION
2088 010126 001403 BEQ 30$
2089 010130 052765 000040 000024 BIS #LA.CPC,L.ASTS(R5) ; IF SO, SET FLAG TO CLEAR PAGE COUNT
2090 ; BEFORE NEXT OUTPUT
2091 010136 032764 000100 000012 30$: BIT #LA.AKR,C.STS(R4) ; BUFFER MARKED TO ACKNOWLEDGE DATA MSG?
2092 010144 001413 BEQ 45$ ; NO
2093 010146 116503 000061 MOVB L.RATT(R5),R3 ; ATTENT PENDING?
2094 010152 001403 BEQ 40$ ; NO, SET UP TO ACK
2095 010154 120327 000002 CMPB R3,#N.AACK ; YES, IS THE CURRENT REASON MORE IMPORTANT?
2096 010160 101005 BHI 45$ ; YES, LET THE PENDING REASON STAND
2097 010162 112765 000002 000061 40$: MOVB #N.AACK,L.RATT(R5) ; NO, USE ACKNOWLEDGE AS THE REASON
2098 010170 CALL SNDATT ; TRY TO SEND AN ATTENTION
2099 010174 122765 000002 000142 45$: CMPB #DWAKP,L.DWAK(R5) ; CHECK IF THIS A DESIRABLE WAKE CONDITION
2100 010202 001011 BNE 60$ ; NO - CAN JUST QUEUE IT IMMEDIATELY
2101 010204 016564 000046 000006 MOV L.SLN(R5),C.LIN(R4) ; IDENTIFY WHO WE ARE
2102 010212 005003 CLR R3
2103 010214 112764 000000 000011 MOVB #NT$RTN,C.MOD(R4) ; ADDRESS IT
2104 010222 CALLR $DDXMP ; SEND TO DLC VIA FC.XCP
2105
2106 010226 60$: ENQ$ L.PLBQ ; REQUEUE THE PHYSICAL BUFFER FOR FURTHER USE
2107 010256 RETURN
2108
2109 010260 032765 000010 000024 100$: BIT #LA.ABO,L.ASTS(R5) ; RETURN A BUFFER CALMLY UNLESS ABORTION IN PROGRESS
2110 010266 001404 BEQ NRDACK ; SERENITY
2111 010270 012764 100201 000012 MOV #LS.ABO,C.STS(R4) ; INDICATE PURGE
2112 010276 000402 BR NRDRET
2113
2114
2115
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 46-1
DDM AND DLC TRANSMIT COMPLETE
2116 010300 005064 000012 NRDACK: CLR C.STS(R4) ; ACK A NRD MSG
2117 010304 NRDRET: $TOBDM XM,C.STS(R4) ; RETURN MESSAGE WITH C.MOD AND C.STS IT CAME WITH
2118 010322 RETURN
2119
2120
2121 ; * PROCESS RETURNING PHYSICAL BUFFER, R4/PHYSICAL BUFFER
2122 010324 DLCXCP: ENQ$ L.PLBQ ; REQUEUE THE PHYSICAL BUFFER FOR FURTHER USE
2123 010354 122765 000002 000142 CMPB #DWAKP,L.DWAK(R5) ; CHECK IF THIS A DESIRABLE WAKE CONDITION
2124 010362 001401 BEQ 10$
2125 010364 RETURN
2126 010366 10$: CALLR DFWAKE ; WAKE THE SLEEPING TIGER
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 47
FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES
2128 .SBTTL FLUSH (ABORT) ALL MESSAGES FROM THE PRINTER QUEUES
2129
2130 ;+
2131 ; ABORT ALL FROM 1) DDMQ, 2) DLCQ ,3) MSGQ (IN THAT ORDER)
2132 ;-
2133
2134 010372 FLUSHQ: PUSH <R0,R3,R4> ; SAVE CURRENT CCB, DLT POINTERS, ETC
2135 010400 CALL STOPLE ; FLUSH THE DEVICE
2136
2137 010404 10$: DEQ$ L.DDMQ,20$ ; RETURN ALL PHYSICAL BUFFERS TO THE PB Q
2138 010460 CALL DDMXCP ; RETURN ANY MSG BUFS AND RESTORE PHYSICAL BUFS TO LIST
2139 010464 000747 BR 10$
2140
2141 010466 20$: DEQ$ L.DLCQ,30$ ; ABORT ANY MSGS WAITING TO BE DONE
2142 010542 $TOBDM XM,#LS.ABO
2143 010560 000742 BR 20$
2144
2145 010562 30$: DEQ$ L.MSGQ,40$ ; FLUSH ANYTHING GOING OUT
2146 010636 CALL FLSBUF ; DUMP IT
2147 010642 000747 BR 30$
2148
2149 010644 105065 000142 40$: CLRB L.DWAK(R5) ; FLUSH ANY SUSPENDED PROCESSING
2150 010650 005065 000032 CLR L.PUBS(R5) ; NO CURRENT PRRINT BUFFER
2151 010654 005065 000122 CLR L.PLBP+2(R5) ; NO PHYSICAL BUFFER IN USE
2152 010660 005065 000124 CLR L.PLBS(R5)
2153 010664 005065 000110 CLR L.DMAD+2(R5) ; NO CURRENT SOURCE BUFFER
2154 010670 005065 000106 CLR L.DMAD(R5)
2155 010674 005065 000112 CLR L.DMBS(R5) ; MAY HAVE BEEN A BUFFER IN PROGRESS
2156 010700 005065 000140 CLR L.MSGS(R5) ; ...
2157 010704 POP <R4,R3,R0>
2158 010712 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 48
OUTPUT ENABLE
2160 .SBTTL OUTPUT ENABLE
2161
2162 ;+
2163 ; QUEUE OUTPUT IMAGE BUFFERS TO BE SENT OUT
2164 ; UNDER INTERRUPT, START INTERRUPT PROCESSING IF APPROPRIATE
2165 ;
2166 ; R4/CCB
2167 ; R5/DLT
2168 ;-
2169 .ENABL LSB
2170
2171 010714 QDDM: CALL STOPLE ; FLUSH INTERRUPTS WHILE WE DIDDLE Q'S
2172 010720 ENQ$ L.DDMQ ; QUEUE UP INCOMING OUTPUT BUFFER
2173
2174 ; * START THE DEVICE IF IT SHOULD BE
2175 010750 032765 000002 000024 STRTLE: BIT #LA.PAU,L.ASTS(R5) ; ARE WE PAUSED?
2176 010756 001006 BNE 10$ ; EVERYTHING IS QUIESENT
2177
2178
2179 010760 112765 000005 000045 GOOSLE: MOVB #LEHNG,L.HUNG(R5) ; SET THE HUNG TIMER
2180 010766 012775 000100 000022 MOV #INTENB,@L.CSR(R5) ; GOOSE IT
2181 010774 10$: RETURN
2182 .DSABL LSB
2183
2184
2185 010776 005075 000022 STOPLE: CLR @L.CSR(R5) ; STOP THE INTERRUPTS
2186 011002 105065 000045 CLRB L.HUNG(R5) ; AND FLUSH THE HUNG TIMER
2187 011006 RETURN
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 49
INTERRUPT SERVICE ROUTINE
2189 .SBTTL INTERRUPT SERVICE ROUTINE
2190
2191 ;+
2192 ; FIELD INTERRUPTS, DISPATCH TO ERROR IF ERROR SET, ALTERNATE
2193 ; ERROR IF PAUSE SET, ELSE OUTPUT NEXT CHARACTER - IF
2194 ; LAST CHARACTER OF BUFFER SENT, GO TO INTERRUPT ON DONE
2195 ; TO RETURN USED BUFFER AND START NEXT ONE
2196 ;
2197 ; R5/PTR TO DLT+L.PRI (READY FOR $INTSX)
2198 ;-
2199
2200 011010 105065 000025 $LEINT::CLRB L.HUNG-L.PRI(R5) ; RESET THE HUNG TIMER
2201 011014 $INTSX ; RE-SCHEDULE AND DROP PRIORITY.
2202 011020 162705 000022 SUB #<L.PRI+2>,R5 ; POINT TO FIRST OF DLT
2203 011024 PUSH <R0,R1,R2,R3> ; ASSUME WE ARE HERE FOR THE LINE
2204 011034 SAVMAP
2205 011040 016503 000022 MOV L.CSR(R5),R3 ; R3/CSR ADR
2206 011044 005013 CLR (R3) ; FLUSH INTS SINCE WE ARE AT A LOWER LEVEL
2207 011046 032765 000002 000024 BIT #LA.PAU,L.ASTS(R5) ; OUGHT WE PAUSE?
2208 011054 001120 BNE 70$ ; YES, USE INTERR TO REPORT HAVING PAUSED
2209 011056 MAP L.PUBP(R5) ; SET MAPPING FOR PRESENT OUTPUT
2210 011064 016502 000030 MOV L.PUBP+2(R5),R2 ; R2/BUFFER PTR
2211 011070 016501 000032 MOV L.PUBS(R5),R1 ; R1/BUFFER CNT
2212 011074 001441 BEQ 40$ ; BUF NOW EMPTY
2213
2214 011076 005713 10$: TST (R3) ; CHECK LP
2215 011100 100564 BMI 170$ ; ERROR OF SOME KIND
2216 011102 001525 BEQ 110$ ; LP RUMINATING NOW
2217 011104 112200 MOVB (R2)+,R0 ; LP READY, GET NEXT CHAR
2218 011106 100504 BMI 80$ ; COMPRESSION PAIR COUNT
2219 011110 CALL LEPRT ; PRINT THE CHAR
2220 011114 103540 BCS 140$ ; PAGE LIMIT OCCURRED
2221 011116 20$: SOB R1,10$ ; KEEP GOING AS LONG AS LP IS HUNGRY
2222
2223 011122 30$: DEQ$ L.DDMQ ; TAKE JUST-FINISHED BUFFER OFF QUEUE
2224 011170 PUSH R3
2225 011172 CALL DDMXCP ; RETURN BUFFER VIA TRANSMIT COMPLETE
2226 011176 POP R3 ; GET LOCAL PTR BACK
2227 011200 016504 000034 40$: MOV L.DDMQ(R5),R4 ; GET ADDRESS OF TOP ELEMENT OF QUEUE
2228 011204 001433 BEQ 60$ ; NONE THERE, EXIT
2229 011206 005764 000006 TST C.LIN(R4) ; CHECK FOR CIRCULATING SOURCE BUFFER
2230 011212 100343 BPL 30$ ; IF SO, JUST RETURN IT
2231 ; * COPY DESCRIPTOR DATA INTO UNLOAD VARIABLES
2232 011214 062704 000014 ADD #C.BUF,R4 ; POINT TO DESCRIPTOR
2233 011220 032765 000040 000024 BIT #LA.CPC,L.ASTS(R5) ; CHECK IF LAST BUFFER HAD EOF
2234 011226 001402 BEQ 50$
2235 011230 005065 000040 CLR L.PGCT(R5) ; YES - CLEAR PAGET COUNTER
2236 011234 042765 000040 000024 50$: BIC #LA.CPC,L.ASTS(R5) ; FLUSH THE FLAG
2237 .IF DF M$$MGE
2238 011242 012465 000026 MOV (R4)+,L.PUBP(R5)
2239 011246 016567 000026 172354 MOV L.PUBP(R5),KISAR6
2240 .ENDC
2241 011254 012402 MOV (R4)+,R2 ; BUF PTR
2242 011256 010265 000030 MOV R2,L.PUBP+2(R5) ; SAVE IT
2243 011262 011401 MOV (R4),R1 ; BUF CNT
2244 011264 010165 000032 MOV R1,L.PUBS(R5) ; SAVE IT
2245 011270 001714 BEQ 30$ ; RETURN AN EMPTY BUFFER STRAIGHT AWAY
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 49-1
INTERRUPT SERVICE ROUTINE
2246 011272 000701 BR 10$ ; CONTINUE WHERE WE LEFT OFF
2247
2248 011274 005065 000032 60$: CLR L.PUBS(R5) ; CLEAR L.PUBS TO MAKE SURE NEXT STARTUP WORKS
2249 011300 032765 000004 000024 BIT #LA.ADN,L.ASTS(R5) ; CHECK FOR AUTO DEATH
2250 011306 001500 BEQ LEXIT
2251 011310 052765 000002 000024 BIS #LA.PAU,L.ASTS(R5) ; YES - PAUSE NOW
2252 011316 000464 70$: BR INTPAU ; SOME FATAL ERROR - USUALLY BAD USER MSG FORMAT
2253
2254 011320 010004 80$: MOV R0,R4 ; SAVE REPEAT COUNT
2255 011322 112200 MOVB (R2)+,R0 ; REPEATED CHAR FOLLOWS
2256 011324 90$: CALL LEPRT ; PRINT THE CHAR
2257 011330 103424 BCS 120$ ; PAGE LIMIT
2258 011332 005204 INC R4 ; COUNT IT
2259 011334 002403 BLT 100$
2260 011336 SOB R1,20$ ; COUNT OFF COMPRESSION PAIR
2261 011342 000667 BR 30$ ; ?CAN'T HAPPEN IN THEORY
2262 011344 005713 100$: TST (R3) ; CHECK LP
2263 011346 100437 BMI 160$ ; INDIGESTION MOST LIKELY
2264 011350 001365 BNE 90$ ; SHOVE IT TO THE LP
2265 011352 005302 DEC R2 ; PRINTED TEMPORARILY SATED
2266 011354 110442 MOVB R4,-(R2) ; SAVE UPDATED REPEAT COUNT
2267
2268 011356 010165 000032 110$: MOV R1,L.PUBS(R5) ; SAVE CUR BUF COUNT
2269 011362 010265 000030 MOV R2,L.PUBP+2(R5) ; SAVE CUR BUF PTR
2270 011366 112765 000005 000045 MOVB #LEHNG,L.HUNG(R5) ; SET THE HUNG TIMER
2271 011374 012713 000100 MOV #INTENB,(R3) ; TURN INTS BACK ON
2272 011400 000443 BR LEXIT
2273
2274 011402 005204 120$: INC R4 ; REPEAT CHAR - PLE HAPPENED
2275 011404 002003 BGE 130$ ; FINISHED REPEAT
2276 011406 005302 DEC R2 ; SAV REP
2277 011410 110442 MOVB R4,-(R2)
2278 011412 000402 BR 150$
2279
2280 011414 005301 130$: DEC R1 ; DONE WITH REPEAT
2281 011416 005301 140$: DEC R1 ; PLE EXIT - FF DONE
2282 011420 010165 000032 150$: MOV R1,L.PUBS(R5) ; SAVE STATE
2283 011424 010265 000030 MOV R2,L.PUBP+2(R5)
2284 011430 112765 000005 000061 MOVB #N.APLE,L.RATT(R5) ; SET REASON CODE FOR ATTENTION MSG
2285 011436 052765 010002 000024 BIS #LA.PLE!LA.PAU,L.ASTS(R5) ; PAUSE AND PLE
2286 011444 000411 BR INTPAU
2287
2288 011446 005302 160$: DEC R2 ; ERROR DURING EXPANSION OF PAIR
2289 011450 110442 MOVB R4,-(R2) ; SAVE CURRENT COUNT AS IT ISN'T DONE YET
2290 011452 010165 000032 170$: MOV R1,L.PUBS(R5) ; ERROR CONDITION HAS ARISEN
2291 011456 010265 000030 MOV R2,L.PUBP+2(R5) ; SAVE BUF CNT,BUF PTR
2292 ; CALLR INTERR
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 50
INTERRUPT SERVICE ROUTINE
2294 ; * ERROR-INTERRUPT ENTRY POINT
2295 011462 052765 000202 000024 INTERR: BIS #LA.ERR!LA.PAU,L.ASTS(R5) ; MARK ERROR => PAUSE ALSO
2296
2297 ; * ALTERNATE ENTRY WHEN PAUSING
2298 011470 105765 000061 INTPAU: TSTB L.RATT(R5) ; IS AN ATTENTION ALREADY PENDING?
2299 011474 001005 BNE LEXIT ; YES, DON'T OVERWRITE THE REASON CODE
2300 011476 112765 000001 000061 MOVB #N.ASTC,L.RATT(R5) ; NO, NOTE STATUS CHANGE
2301 011504 CALL SNDATT ; BUILD AND SEND ATTENTION MESSAGE
2302
2303 011510 LEXIT: RESMAP
2304 011514 POP <R3,R2,R1,R0>
2305 011524 RETURN ; EXIT ERROR/PAUSE INTERRUPT
2306
2307
2308
2309 ; * LP11 SPECIFIC CHARACTER PRINTER
2310 011526 122700 000012 LEPRT: CMPB #LF,R0 ; CHECK FOR LF'S AND FF'S
2311 011532 001025 BNE 30$
2312 011534 110063 000002 MOVB R0,2(R3) ; LF - PRINT IT
2313 011540 105265 000044 INCB L.PLNC(R5) ; COUNT IT
2314 011544 122765 000102 000044 CMPB #PGLEN,L.PLNC(R5) ; CHECK FOR PAGE BOUNDARY
2315 011552 003035 BGT 50$ ; OK
2316
2317 011554 105065 000044 20$: CLRB L.PLNC(R5) ; PAGE - CLEAR LINE COUNT
2318 011560 005265 000040 INC L.PGCT(R5) ; COUNT THE PAGE
2319 011564 005765 000042 TST L.PGLM(R5) ; CHECK PAGE LIMIT
2320 011570 001426 BEQ 50$ ; NOT SET
2321 011572 026565 000040 000042 CMP L.PGCT(R5),L.PGLM(R5) ; COMPARE COUNT TO LIM
2322 011600 003422 BLE 50$ ; STILL OK
2323 011602 000261 SEC ; TOO BAD
2324 011604 RETURN
2325
2326 011606 122700 000014 30$: CMPB #FF,R0 ; CHECK FF
2327 011612 001013 BNE 40$ ; NOT A CRITICAL CHARACTER
2328 011614 122765 000101 000044 CMPB #PGLEN-1,L.PLNC(R5) ; CHECK FOR LAST LINE
2329 011622 003403 BLE 35$ ; BOF - FF IS SPECIAL CASE
2330 011624 110063 000002 MOVB R0,2(R3) ; NOT BOF - JUST PRINT FF AND DO PAGE COUNTING
2331 011630 000751 BR 20$
2332
2333 011632 112763 000012 000002 35$: MOVB #LF,2(R3) ; DO A LINE FEED AT BOF TO AVOID A BLANK PAGE
2334 011640 000745 BR 20$ ; COUNT THE PAGE
2335
2336 011642 110063 000002 40$: MOVB R0,2(R3) ; JUST PRINT THE CHARACTER
2337 011646 000241 50$: CLC
2338 011650 RETURN
2339
2340
2341
2342 .SBTTL THE END
2343
2344 000001 .END
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 50-1
SYMBOL TABLE
ABRTAL 006256R CTLOTR= 000012 EO.IMG= 000002 FE.LCR= 000003 G$$TPP= 000000
ABRTCL 006330R CTLSTP 007460R ERRCHR= 000334 FE.LSI= 000400 G$$TSS= 000000
ABRTEF 006250R CTLSTR 007054R ERROR = 100000 FE.MUP= 000002 G$$TTK= 000000
ACK = 000006 C$$CKP= 000000 ESC = 000033 FE.MXT= 040000 G$$WRD= 000000
A$$CHK= 000000 C$$ORE= 000400 ETB = 000027 FE.NLG= 100000 HFC 002134R
A$$CPS= 000000 C$$RSH= 177564 ETX = 000003 FE.PKT= 000100 HFCCR = 000040
A$$PRI= 000000 C.BID 000003 E$$XPR= 000000 FE.PLA= 000020 HFCHR = 000100
A$$TRP= 000000 C.BUF 000014 FB.CA = 000100 G FE.SER= 000002 HT = 000011
BADCON 005310R C.BUF1 000014 FB.CL0= 000000 G FE.TRN= 000007 INTENB= 000100
BEL = 000007 C.BUF2 000024 FB.CL1= 000001 G FF = 000014 INTERR 011462R
BS = 000010 C.CNT 000020 FB.CP = 000040 G FLSBUF 007014R INTPAU 011470R
CAN = 000030 C.CNT1 000020 FB.SST= 000020 G FLUSHQ 010372R I$$RAR= 000000
CAPREQ 006360R C.CNT2 000030 FB.STE= 000010 G FNCOTR= 000022 I$$RDN= 000000
CB.CCB= 000002 C.FLG 000022 FB.STR= 000004 G FREAD 003616R KDSAR0= 172360
CB.RDB= 000004 C.FLG1 000022 FB.WRD= 000002 G FRMLEN= 000074 KDSDR0= 172320
CD.CWD= 000202 C.FLG2 000032 FCC 001634R FR.BCL= 000002 KISAR0= 172340
CE.ABO= 100362 C.FNC 000010 FCCHR = 000200 FR.CPN= 000005 KISAR5= 172352
CE.DIS= 100366 C.LIN 000006 FCCTBL 001762R FR.DNP= 000007 KISAR6= 172354
CE.ERR= 100370 C.LNK 000000 FCCTBN= 000007 FR.ERR= 000004 KISAR7= 172356
CE.MOP= 100372 C.MOD 000011 FCT 002130R FR.NEB= 000006 KISDR0= 172300
CE.NTE= 100361 C.NSP 000004 FCXTB 000444R FR.NST= 000003 KISDR6= 172314
CE.RTE= 100376 C.RSV 000002 FC.CCP= 000020 FR.USF= 000001 KISDR7= 172316
CE.SRC= 100364 C.STA 000007 FC.CLM= 000003 FS = 000034 K$$CNT= 177546
CE.TMO= 100374 C.STS 000012 FC.CL0= 000000 FSET 004034R K$$CSR= 177546
CF.EOM= 000004 DATA 001246R FC.CL1= 000001 FS.AST= 000000 K$$LDC= 000000
CF.HDR= 000020 DC1 = 000021 FC.CTL= 000006 FS.CIB= 002000 K$$TPS= 000074
CF.LB = 100000 DC2 = 000022 FC.KCP= 000016 FS.CRA= 001000 LA.ABE= 000020 G
CF.SOM= 000010 DC3 = 000023 FC.KIL= 000004 FS.DIS= 013000 LA.ABO= 000010 G
CF.SYN= 000040 DC4 = 000024 FC.RCE= 000002 FS.DVC= 001000 LA.ADN= 000004 G
CF.TRN= 000100 DDMXCP 010074R FC.RCP= 000014 FS.ENB= 012000 LA.AKR= 000100 G
CHMAP 000204R DEL = 000177 FC.SST= 000002 FS.GET= 006000 LA.CLO= 000001 G
CH.64 = 000001 DFSLEP 001114R FC.TIM= 000010 FS.INI= 000000 LA.CPC= 000040 G
CH.96 = 000002 DFWAKE 001174R FC.XCP= 000012 FS.KIL= 000000 LA.CTL= 002000 G
CLOSWT 007656R DLCXCP 010324R FC.XME= 000000 FS.LTM= 001000 LA.EOF= 000400 G
CMODE = 140000 DLE = 000020 FEACON 003444R FS.MNT= 004000 LA.EOR= 001000 G
CONINT 005032R DM.ASC= 000001 FEATRS 003210R FS.MSN= 014000 LA.ERR= 000200 G
CONSYN 005364R DM.AS8= 000005 FEFND 004734R FS.RNG= 011000 LA.PAU= 000002 G
CONTRL 005016R DM.AUG= 000004 FERBCL 003514R FS.RTN= 001000 LA.PLE= 010000 G
CR = 000015 DM.CLI= 000002 FERCPN 003536R FS.SET= 005000 LA.TMO= 004000 G
CRASH 000514R DM.EBC= 000003 FERDNP 003552R FS.STM= 000000 LCFETL= 000011 G
CS.ABO= 000100 DONE = 000200 FERERR 003530R FS.STP= 002000 LDFETL= 000012 G
CS.BUF= 000200 DTXTSZ= 000020 G FERNEB 003544R FS.STR= 001000 LD$LP = 000000
CS.DCR= 000400 DUMP 006046R FERNST 003522R FS.TRM= 003000 LECCP 000574R
CS.DEV= 000002 DWAKP = 000002 G FERUSF 003506R FS.XKL= 002000 LECLOS 007460R
CS.DIS= 000040 DWAKR = 000004 G FE.ALL= 000377 FS.XOF= 010000 LECTL 000516R
CS.ENB= 000020 DWAKS = 000001 G FE.CAL= 000040 FS.XON= 007000 LEDATS= 000031 G
CS.EOF= 000001 DWAKT = 000003 G FE.DAT= 000001 F$$LVL= 000001 LEDLRE 007002R
CS.ERR= 100000 D$$BUG= 177514 FE.DRV= 000010 F.FCV = 000001 G LEFCCS= 000130 G
CS.HFE= 002000 D$$ISK= 000000 FE.DVT= 000006 F.FSB = 000000 G LEHNG = 000005
CS.LST= 040000 D$$L11= 000001 FE.DWD= 000011 F.FSV = 000002 G LEHTS = 000031 G
CS.MTL= 004000 D$$YNC= 000000 FE.EOF= 000005 GB 002360R LELCRS= 000100 G
CS.RNG= 000010 D$$YNM= 000000 FE.ESC= 000000 GBDQ 002536R LENURD 000622R
CS.ROV= 000004 EM = 000031 FE.EXP= 000200 GETMBF 010012R LEOPEN 007054R
CS.RSN= 010000 ENQ = 000005 FE.EXT= 000001 GETPBF 007710R LEPBFS= 000004
CS.SUC= 000001 EOFASC= 007417 FE.EXV= 000004 GOOSLE 010760R LEPLES= 000133 G
CS.TMO= 020000 EOT = 000004 FE.FNM= 000010 GS = 000035 LEPRT 011526R
CTLDSP 005340R EO.ASC= 000001 FE.FWD= 000004 GTCLS 004016R LESFCS= 000030 G
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 50-2
SYMBOL TABLE
LESZ = 000004 L.HUNG 000045 G NC.FM0= 000000 NS.SET= 000002 N.CCMD= 000003
LETIM 006616R L.IOCN 000050 G NC.FM1= 000001 NS.SFL= 000002 N.CRES= 000004
LETRNS= 000130 G L.IOWT 000052 G NC.FM2= 000002 NS.SOL= 000140 N.CSEQ= 000002
LEXIT 011510R L.LNCT 000066 G NC.PAU= 000006 NS.SUC= 000001 N.DDAT= 000005
LE.CHS 000260 G L.MFLG 000076 G NC.RES= 000007 NT$ABO= 000022 N.DDL1 000012
LE.DAT 000233 G L.MSGA 000134 G NC.RQC= 000011 NT$ACC= 000002 N.DDL2 000016
LE.DWD 000245 G L.MSGQ 000130 G NC.RQS= 000004 NT$ADS= 000000 N.DDS1 000014
LE.FCC 000255 G L.MSGS 000140 G ND.ACK= 000001 NT$CON= 000000 N.DDS2 000020
LE.FWD 000240 G L.NFSP 000103 G ND.CMP= 000200 NT$DAT= 000002 N.DFLG= 000003
LE.HT 000247 G L.PBRC 000126 G ND.EOF= 000004 NT$DIS= 000010 N.DFMT 000010
LE.LCR 000236 G L.PGCT 000040 G ND.IER= 000002 NT$INT= 000004 N.DGRP 000012
LE.PLE 000262 G L.PGLM 000042 G NE.ABO= 177776 NT$MOD= 000012 N.DOBJ 000011
LE.SFC 000252 G L.PLBP 000120 G NE.ACT= 177771 NT$NAK= 000022 N.DSEQ= 000002
LE.TRN 000242 G L.PLBQ 000114 G NE.CLS= 177767 NT$OFF= 000026 N.DSGC= 000004
LF = 000012 L.PLBS 000124 G NE.DIS= 177777 NT$ON = 000002 N.DUSR 000014
LPB = 000002 L.PLNC 000044 G NE.FMT= 177770 NT$QRY= 000014 N.FCLS= 000002
LPS = 000000 L.PRI 000020 G NE.NDT= 177766 NT$REJ= 000004 N.FDAT= 000004
LP.CHS= 000210 L.PUBP 000026 G NE.NOD= 177774 NT$RTI= 000010 N.FFLG= 000001
LP.CVF= 000205 L.PUBS 000032 G NE.REJ= 177775 NT$RTN= 000000 N.FID = 000000
LP.FCC= 000206 L.RATT 000061 G NE.RES= 177773 NT$SNG= 000006 N.FRSP= 000003
LP.HT = 000202 L.RECO 000060 G NE.TIM= 177772 NT$STP= 000004 N.FSEQ= 000002
LP.OPV= 000212 L.SLN 000046 G NF.CMD= 000001 NT$XOF= 000020 N.FSPC= 000004
LP.OVP= 000204 L.TIMC 000000 G NF.STD= 000002 NT$XON= 000016 N.LGTH= 000160
LP.PLE= 000211 L.TIMI 000001 G NM.ALR= 000004 NT.ACK= 000001 N.MFL = 000001
LP.SFC= 000203 L.VFUA 000070 G NM.ATT= 000001 NT.BOM= 000040 N.NODE 000000
LP.VFR= 000207 MB 004416R NM.CAP= 000005 NT.EOM= 000100 N.NSPC= 000003
LS.ABO= 100201 MBSND 004564R NM.CTL= 000003 NT.FCN= 037400 N.OPDL 000136
LS.BOM= 100205 MPAR = 172100 NM.DAT= 000000 NT.MD1= 000420 N.OPTD 000140
LS.CLO= 100203 MPCSR = 177746 NM.FTR= 000002 NT.MFL= 000002 N.PASL 000102
LS.ILM= 100204 M$$CRB= 000124 NM.OTR= 000006 NT.MOD= 000020 N.PASS 000104
LS.REJ= 100202 M$$CRX= 000000 NM.TYP= 000017 NT.MOM= 000000 N.PCAP= 000003
L$$ASG= 000000 M$$FCS= 000000 NP$RTR= 000003 NT.NAK= 000002 N.PCNT= 000002
L$$DRV= 000000 M$$MGE= 000000 NRDACK 010300R NT.NFL= 000000 N.RQDL 000060
L$$P11= 000001 M$$OVR= 000000 NRDOTR= 000006 NT.SFL= 000001 N.RQID 000062
L$$11R= 000000 NAK = 000025 NRDRET 010304R NT.SOL= 000140 N.RSRV= 000030
L.ASTS 000024 G NA.DTO= 000004 NRMACK 000554R NT.XOF= 000004 N.SDL1 000036
L.CALL 000002 G NA.FAT= 000001 NR.ABS= 000000 NT.XON= 000010 N.SDL2 000042
L.CAPN 000102 G NA.INK= 000040 NR.ACC= 000000 NUL = 000000 N.SDS1 000040
L.CAPP 000062 G NA.IVP= 000001 NR.ACN= 000001 N$$DAT= 000030 N.SDS2 000056
L.CFET 000206 G NA.JAM= 000020 NR.ATT= 000000 N$$DIS= 000020 N.SEG 000006
L.CMSQ 000054 G NA.NAC= 000002 NR.CAP= 000000 N$$INT= 000020 N.SFMT 000034
L.COCT 000067 G NA.NOE= 000100 NR.DMP= 000000 N$$LDV= 000001 N.SGRP 000036
L.CSMP 000064 G NA.OFL= 000002 NR.DPS= 000000 N$$MOV= 000010 N.SOBJ 000035
L.CSR 000022 G NA.OMD= 000010 NR.NAB= 000001 N$$OPT= 000020 N.SUSR 000040
L.DDMQ 000034 G NA.OOF= 000040 NR.NDP= 000002 N$$OVR= 000042 N.TYP = 000000
L.DFET 000220 G NA.OUF= 000001 NR.NDR= 000002 N$$SYS= 000001 PAUSE 006076R
L.DFSP 000144 G NA.OVP= 000001 NR.NDV= 100377 N$$USR= 000001 PB 002662R
L.DLCQ 000072 G NA.PAU= 000004 NR.NOB= 000001 N.AABC= 000004 PBCHR 001554R
L.DMAD 000106 G NA.PF = 000020 NR.NOE= 000002 N.AACK= 000002 PBDQ 003034R
L.DMBS 000112 G NA.PSE= 000020 NR.NPS= 000001 N.ACNT 000116 PBFF 002336R
L.DMCR 000104 G NA.RAP= 000040 NR.PAU= 000001 N.ACOD= 000003 PBFINI 007756R
L.DMSG 000100 G NA.REG= 000100 NR.RES= 000000 N.ACTL 000114 PBLF 002266R
L.DMSQ 000077 G NA.RNA= 000010 NS.BOM= 000040 N.AFLG= 000004 PBLOD 002756R
L.DMSS 000101 G NC.AUC= 000002 NS.EOM= 000100 N.ALGD= 000002 PBROOM 002734R
L.DTXL 000143 G NC.AUE= 000001 NS.MFL= 000003 N.APLE= 000005 PCP 003124R
L.DTXT 000146 G NC.CAB= 000003 NS.MOM= 000000 N.ARQS= 000003 PGLEN = 000102
L.DWAK 000142 G NC.DMP= 000005 NS.NFL= 000001 N.ASTC= 000001 PIRQ = 177772
LE - NURD LP11 LINE PRINTE MACRO M1110 13-OCT-79 08:26 PAGE 50-3
SYMBOL TABLE
PMODE = 030000 STRTLE 010750R VCH9 = 000010 $XMCMP= ****** GX .P41 = 000224
PR0 = 000000 STX = 000002 VFBP1 = 000001 $$ = 000102 .P42 = 000230
PR1 = 000040 SUB = 000032 VFBP10= 001000 .P1 = 003777 .P43 = 000224
PR4 = 000200 SWR = 177570 VFBP11= 002000 .P10 = 000220 .P44 = 000620
PR5 = 000240 SYN = 000026 VFBP12= 004000 .P100 = 000020 .P45 = 000234
PR6 = 000300 S$$WRG= 000000 VFBP2 = 000002 .P101 = 000020 .P46 = 000220
PR7 = 000340 S$$YSZ= 007600 VFBP3 = 000004 .P102 = 100020 .P47 = 000224
PS = 177776 TPS = 177564 VFBP4 = 000010 .P11 = 000224 .P5 = 000224
P$$DDC= 000001 T$$KMG= 000000 VFBP5 = 000020 .P12 = 000230 .P50 = 000230
P$$P45= 000000 T$$MIN= 000000 VFBP6 = 000040 .P13 = 000664 .P51 = 000764
P$$WRD= 000000 UBMPR = 170200 VFBP7 = 000100 .P14 = 000220 .P52 = 000220
QDDM 010714R UDSAR0= 177660 VFBP8 = 000200 .P15 = 000234 .P53 = 000234
QDLC 000764R UDSDR0= 177620 VFBP9 = 000400 .P16 = 000220 .P54 = 000220
QTODLC 000750R UISAR0= 177640 VFC 002000R .P17 = 000224 .P55 = 000224
Q$$OPT= 000010 UISAR4= 177650 VFU66S= 000204 .P2 = 000220 .P56 = 001630
RECON 005114R UISAR5= 177652 VF.6LI= 000001 .P20 = 001630 .P57 = 000224
RESUME 006154R UISAR6= 177654 VF.8LI= 000002 .P21 = 000224 .P6 = 000620
RS = 000036 UISAR7= 177656 VT = 000013 .P22 = 000220 .P60 = 000220
R$$DER= 000000 UISDR0= 177600 V$$CTR= 001000 .P23 = 000234 .P61 = 000234
R$$K11= 000001 UISDR4= 177610 X$$DBT= 000000 .P24 = 000220 .P62 = 000220
R$$SND= 000000 UISDR5= 177612 $CCBRT= ****** GX .P25 = 000764 .P63 = 000664
R$$11M= 000000 UISDR6= 177614 $CSBGT= ****** GX .P26 = 000230 .P64 = 000230
SETSTD 004264R UISDR7= 177616 $CSBRT= ****** GX .P27 = 000224 .P65 = 000224
SI = 000017 US = 000037 $CTCMP= ****** GX .P3 = 000224 .P66 = 000220
SISDR0= 172200 VCH1 = 000000 $DDXMP= ****** GX .P30 = 000220 .P67 = 000234
SNDALR 006536R VCH10 = 000011 $INTSX= ****** GX .P31 = 000234 .P7 = 000234
SNDATT 005564R VCH11 = 000012 $LEASC 000244RG .P32 = 000620 .P70 = 000620
SNDCAP 006370R VCH12 = 000013 $LEINT 011010RG .P33 = 000224 .P71 = 000224
SNDSTS 005544R VCH2 = 000001 $LETB 000472RG .P34 = 000230 .P72 = 000230
SO = 000016 VCH3 = 000002 $RCCMP= ****** GX .P35 = 000224 .P73 = 000224
SOH = 000001 VCH4 = 000003 $RDBGT= ****** GX .P36 = 000220 .P74 = 000220
SPA = 000040 VCH5 = 000004 $RDBRT= ****** GX .P37 = 001676 .P75 = 004020
SR0 = 177572 VCH6 = 000005 $RDBSZ= ****** GX .P4 = 000230 .P76 = 000020
SR3 = 172516 VCH7 = 000006 $SDBSZ= ****** GX .P40 = 000220 .P77 = 000020
STOPLE 010776R VCH8 = 000007 $VFU66 000000RG
. ABS. 000266 000
011652 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 20304 WORDS ( 80 PAGES)
DYNAMIC MEMORY: 20620 WORDS ( 79 PAGES)
ELAPSED TIME: 00:03:02
LE,[131,34]LE/CR/-SP=[130,10]NETLIB/ML,RSXTMP/PA:1,[131,10]LE
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ABRTAL 006256 R 33-1530 #38-1742
ABRTCL 006330 R 33-1531 #38-1755
ABRTEF 006250 R 33-1529 #38-1738
ACK = 000006 #9-185
BADCON 005310 R 33-1469 33-1471 33-1473 #33-1520 33-1528 33-1536
BEL = 000007 #9-186
BS = 000010 #9-187
CAN = 000030 #9-203
CAPREQ 006360 R 33-1537 #39-1767
CB.RDB = 000004 42-1892
CD.CWD = 000202 #6-103
CHMAP 000204 R #11-334 20-815
CH.64 = 000001 #6-103
CH.96 = 000002 #6-103
CLOSWT 007656 R 41-1838 #44-2012
CONINT 005032 R 33-1465 #33-1468
CONSYN 005364 R 15-571 #34-1545
CONTRL 005016 R 14-515 #33-1464
CR = 000015 #9-192 11-372 19-797 21-860
CRASH 000514 R 12-397 12-401 12-402 #12-406 12-411 12-414 12-415 12-416 12-417
12-418 12-419 12-430 12-431 12-432 12-433 12-434 12-435 12-436
CTLDSP 005340 R 33-1478 #33-1528 33-1538 34-1556
CTLOTR = 000012 33-1472 #33-1538 34-1550
CTLSTP 007460 R 12-413 #44-1993
CTLSTR 007054 R 12-412 #43-1910
C.BID 000003 42-1892
C.BUF 000014 14-502 14-503 23-955 23-956 25-1014 25-1015 28-1145 28-1146 31-1389
31-1390 33-1501 33-1502 33-1507 33-1508 35-1621 35-1667 39-1780 40-1819
42-1894 *42-1898 *45-2042 45-2051 45-2052 49-2232
C.BUF2 000024 42-1898 45-2042 *45-2051 *45-2052
C.CNT 000020 23-957 25-1016 *25-1025 31-1391 *31-1406 33-1468 *33-1514 *35-1668 *39-1786
*39-1799 39-1807 *40-1822 *45-2034 *45-2043 *45-2054
C.CNT2 000030 *45-2035 45-2043 *45-2053 45-2054
C.FLG2 000032 *24-970 *45-2031 *45-2044 46-2082
C.FNC 000010 *45-2030 *45-2056
C.LIN 000006 *12-425 *14-528 *14-530 *31-1410 *33-1515 *35-1670 *39-1810 *40-1825 *45-2029
*45-2041 *45-2050 46-2079 *46-2101 *46-2117 *47-2142 49-2229
C.MOD 000011 *31-1409 33-1464 *40-1824 *46-2103
C.STS 000012 *17-719 23-938 24-971 24-978 *31-1388 *31-1403 *31-1405 31-1410 *33-1520
*45-2028 *45-2040 *45-2055 46-2087 46-2091 *46-2111 *46-2116 46-2117
DATA 001246 R 15-574 #17-650
DC1 = 000021 #9-196 11-374
DC2 = 000022 #9-197 11-375
DC3 = 000023 #9-198 11-376 19-782 19-786 19-796
DC4 = 000024 #9-199 11-377 19-798
DDMXCP 010074 R 15-546 #46-2079 47-2138 49-2225
DEL = 000177 #9-212 43-1932
DFSLEP 001114 R #16-587 23-952 25-1019 31-1397
DFWAKE 001174 R 15-560 #16-609 41-1847 46-2126
DLCXCP 010324 R 12-400 #46-2122
DLE = 000020 #9-195 11-373 19-800
DM.ASC = 000001 #6-103
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DM.AS8 = 000005 #6-103
DM.AUG = 000004 #6-103
DM.CLI = 000002 #6-103
DM.EBC = 000003 #6-103
DONE = 000200 #10-220
DTXTSZ = 000020 G #5-97 5-97 16-596
DUMP 006046 R 33-1533 #36-1678
DWAKP = 000002 G #5-97 25-1019 46-2099 46-2123
DWAKR = 000004 G #5-97 37-1725
DWAKS = 000001 G #5-97 15-558 23-952
DWAKT = 000003 G #5-97 31-1397 37-1727 41-1845
EM = 000031 #9-204
ENQ = 000005 #9-184
EOFASC = 007417 #6-103
EOT = 000004 #9-183
EO.ASC = 000001 #6-103
EO.IMG = 000002 #6-103
ERRCHR = 000334 #9-213
ERROR = 100000 #10-219
ESC = 000033 #9-206
ETB = 000027 #9-202
ETX = 000003 #9-182
FB.CA = 000100 G #5-97 5-97 5-97 5-97 5-97 30-1271
FB.CL0 = 000000 G #5-97 5-97 5-97 5-97 5-97
FB.CL1 = 000001 G #5-97 5-97 5-97 5-97 29-1254 30-1275
FB.CP = 000040 G #5-97 27-1135
FB.SST = 000020 G #5-97 5-97 5-97 5-97 5-97 5-97 5-97 29-1197 30-1287
30-1340
FB.STE = 000010 G #5-97 5-97 5-97 5-97 5-97 5-97 5-97 30-1331
FB.STR = 000004 G #5-97 29-1213 29-1225 30-1281 30-1290 30-1336 30-1344
FB.WRD = 000002 G #5-97 5-97 29-1213 30-1281 30-1336
FCC 001634 R 17-694 #19-767
FCCHR = 000200 #11-360 11-368 11-369 11-370 11-371 11-372 11-373 11-374 11-375
11-376 11-377
FCCTBL 001762 R 19-767 #19-795 19-802
FCCTBN = 000007 19-768 #19-802
FCT 002130 R 17-702 19-793 #20-847
FCXTB 000444 R #11-368 43-1943
FC.CLM = 000003 #6-103
FC.CL0 = 000000 #6-103
FC.CL1 = 000001 #6-103 29-1256 30-1277
FC.RCP = 000014 45-2056
FC.SST = 000002 #6-103 27-1109 30-1269
FC.XCP = 000012 45-2030
FEACON 003444 R #28-1141 28-1174 29-1223 30-1325
FEATRS 003210 R 15-577 #27-1081
FEFND 004734 R 27-1122 27-1126 #32-1423
FERBCL 003514 R #28-1153 30-1276
FERCPN 003536 R 27-1136 #28-1159
FERDNP 003552 R #28-1163
FERERR 003530 R 27-1110 #28-1157 30-1272 30-1284 30-1313
FERNEB 003544 R #28-1161
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FERNST 003522 R #28-1155 30-1324
FERUSF 003506 R 27-1127 #28-1151
FE.ALL = 000377 #6-103 27-1103
FE.DAT = 000001 #6-103
FE.DVT = 000006 #6-103
FE.DWD = 000011 #6-103
FE.EOF = 000005 #6-103
FE.ESC = 000000 #6-103
FE.FNM = 000010 #6-103
FE.FWD = 000004 #6-103
FE.LCR = 000003 #6-103
FE.SER = 000002 #6-103
FE.TRN = 000007 #6-103
FF = 000014 #9-191 11-371 19-799 22-913 50-2326
FLSBUF 007014 R 42-1889 #42-1892 44-2001 47-2146
FLUSHQ 010372 R 38-1752 44-1996 #47-2134
FNCOTR = 000022 #12-404
FREAD 003616 R 27-1138 #29-1191 30-1288 30-1320
FRMLEN = 000074 #11-284
FR.BCL = 000002 #6-103 28-1153
FR.CPN = 000005 #6-103 28-1159
FR.DNP = 000007 #6-103 28-1163
FR.ERR = 000004 #6-103 28-1157
FR.NEB = 000006 #6-103 28-1161
FR.NST = 000003 #6-103 28-1155
FR.USF = 000001 #6-103 28-1151
FS = 000034 #9-207
FSET 004034 R 27-1139 #30-1269
F.FCV = 000001 G #5-97 17-669 18-727 18-729 18-736 21-868 21-870 21-875 29-1232
30-1302 *30-1339 30-1348
F.FSB = 000000 G #5-97
F.FSV = 000002 G #5-97 30-1339 30-1350 30-1351
GB 002360 R 15-563 15-565 17-650 17-652 17-659 17-664 17-683 #23-927 23-958
27-1085 27-1088 27-1092 27-1094 27-1096 27-1100 30-1280 30-1285 30-1295
30-1297 30-1316 34-1545 34-1547
GBDQ 002536 R 17-720 23-944 #24-961 28-1148 34-1570 34-1593
GETMBF 010012 R 31-1386 33-1492 35-1619 39-1778 40-1817 #45-2048
GETPBF 007710 R 43-1959 #45-2026
GOOSLE 010760 R 36-1703 37-1716 #48-2179
GS = 000035 #9-208
GTCLS 004016 R 29-1202 #29-1253
HFC 002134 R #21-857
HFCCR = 000040 #11-362 11-372
HFCHR = 000100 #11-361 11-368 11-372
HT = 000011 #9-188 11-368
INTENB = 000100 #10-221 48-2180 49-2271
INTERR 011462 R #50-2295
INTPAU 011470 R 49-2252 49-2286 #50-2298
KISAR6 = 172354 *14-502 *23-929 *25-987 *28-1145 *31-1379 *33-1501 *33-1507 49-2204 *49-2209
*49-2239 *50-2303
LA.ABE = 000020 G #5-97 38-1756 38-1758
LA.ABO = 000010 G #5-97 15-544 38-1743 38-1756 38-1758 46-2109
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LA.ADN = 000004 G #5-97 23-942 33-1523 34-1592 35-1630 36-1694 37-1711 37-1713 49-2249
LA.AKR = 000100 G #5-97 17-655 17-721 46-2091
LA.CLO = 000001 G #5-97 14-500 43-1912 43-1975 44-1995
LA.CPC = 000040 G #5-97 46-2089 49-2233 49-2236
LA.CTL = 002000 G #5-97
LA.EOF = 000400 G #5-97 17-658 17-721 46-2087
LA.EOR = 001000 G #5-97 17-671 17-691 17-695
LA.ERR = 000200 G #5-97 35-1634 37-1713 41-1850 41-1856 50-2295
LA.PAU = 000002 G #5-97 35-1638 36-1694 36-1702 37-1711 37-1713 48-2175 49-2207 49-2251
49-2285 50-2295
LA.PLE = 010000 G #5-97 35-1652 37-1713 49-2285
LA.TMO = 004000 G #5-97 35-1645 41-1863
LCFETL = 000011 G #5-97
LDFETL = 000012 G #5-97
LECCP 000574 R 12-403 #12-429
LECLOS 007460 R #44-1994
LECTL 000516 R 12-398 #12-410
LEDATS = 000031 G #5-97
LEDLRE 007002 R 12-396 #42-1888
LEFCCS = 000130 G #5-97
LEHNG = 000005 #4-92 48-2179 49-2270
LEHTS = 000031 G #5-97
LELCRS = 000100 G #5-97
LENURD 000622 R 12-395 #14-500
LEOPEN 007054 R #43-1911
LEPBFS = 000004 #4-91 43-1958
LEPLES = 000133 G #5-97
LEPRT 011526 R 49-2219 49-2256 #50-2310
LESFCS = 000030 G #5-97
LESZ = 000004 #10-224
LETIM 006616 R 12-399 #41-1836
LETRNS = 000130 G #5-97
LEXIT 011510 R 49-2250 49-2272 50-2299 #50-2303
LE.CHS 000260 G #5-97
LE.DAT 000233 G #5-97
LE.DWD 000245 G #5-97
LE.FCC 000255 G #5-97 17-669
LE.FWD 000240 G #5-97 18-727 21-868 21-875
LE.HT 000247 G #5-97
LE.LCR 000236 G #5-97 18-736
LE.PLE 000262 G #5-97
LE.SFC 000252 G #5-97
LE.TRN 000242 G #5-97 18-729 21-870
LF = 000012 #9-189 11-369 19-795 20-828 22-904 50-2310 50-2333
LPB = 000002 #10-222
LPS = 000000 #10-218
LP.CHS = 000210 #6-103
LP.CVF = 000205 #6-103
LP.FCC = 000206 #6-103
LP.HT = 000202 #6-103
LP.OPV = 000212 #6-103
LP.OVP = 000204 #6-103
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LP.PLE = 000211 #6-103
LP.SFC = 000203 #6-103
LP.VFR = 000207 #6-103
LS.ABO = 100201 #4-84 14-530 46-2111 47-2142
LS.BOM = 100205 #4-84
LS.CLO = 100203 #4-84
LS.ILM = 100204 #4-84 14-528
LS.REJ = 100202 #4-84 33-1520 43-1974
L$$SI1 = ****** 24-963 24-963 25-1024 25-1024 31-1392 31-1392 31-1408 31-1408 31-1408
33-1477 33-1477 33-1500 33-1500 43-1962 43-1962 44-1999 44-1999 44-1999
44-2004 44-2004 44-2004 46-2106 46-2106 46-2122 46-2122 47-2137 47-2137
47-2137 47-2141 47-2141 47-2141 47-2145 47-2145 47-2145 48-2172 48-2172
49-2223 49-2223
L.ASTS 000024 G #5-97 14-500 15-544 *17-655 *17-658 *17-671 17-691 *17-695 17-719
*17-721 *23-942 *33-1523 *34-1592 35-1628 36-1694 *36-1702 37-1711 *37-1713
*38-1743 38-1756 *38-1758 41-1850 *41-1856 *41-1863 43-1912 *43-1915 *43-1975
*44-1995 *46-2089 46-2109 48-2175 49-2207 49-2233 *49-2236 49-2249 *49-2251
*49-2285 *50-2295
L.CALL 000002 G #5-97
L.CAPN 000102 G #5-97 *27-1102 *27-1106 27-1114 *27-1116 27-1120 28-1141
L.CAPP 000062 G #5-97 34-1586 36-1681 *39-1768 *39-1812 41-1872 *43-1930
L.CFET 000206 G #5-97 5-97 27-1106 32-1423 39-1788 43-1952
L.CMSQ 000054 G #5-97 33-1477 *33-1477 33-1500 *33-1500 *33-1500 33-1500 *33-1500 44-2004
*44-2004 *44-2004 44-2004 *44-2004
L.COCT 000067 G #5-97 18-727 *18-743 *20-810 *21-859 21-863 *21-889 *22-907 *22-916
L.CSMP 000064 G #5-97 17-685 19-791 *43-1949
L.CSR 000022 G #5-97 41-1852 43-1914 44-1994 48-2180 48-2185 49-2205
L.DDMQ 000034 G #5-97 36-1683 36-1698 37-1714 38-1745 47-2137 *47-2137 *47-2137 47-2137
*47-2137 48-2172 *48-2172 49-2223 *49-2223 *49-2223 49-2223 *49-2223 49-2227
L.DFET 000220 G #5-97 5-97 27-1116 32-1427 43-1954
L.DFSP 000144 G #5-97 *15-562 16-602 *16-615 23-947
L.DLCQ 000072 G #5-97 15-554 *15-555 15-556 15-578 23-937 23-950 24-963 *24-963
*24-963 24-963 *24-963 36-1696 37-1718 38-1747 47-2141 *47-2141 *47-2141
47-2141 *47-2141
L.DMAD 000106 G #5-97 23-929 23-931 *23-932 23-935 *23-955 *23-956 *24-961 *43-1918
*43-1919 *47-2153 *47-2154
L.DMBS 000112 G #5-97 *23-927 *23-957 *24-962 *43-1920 *47-2155
L.DMCR 000104 G #5-97 *17-677 *17-681 *17-706 *17-709
L.DMSG 000100 G #5-97 *17-660 *17-714
L.DMSQ 000077 G #5-97 *17-651 *27-1086 *34-1546 34-1575 35-1624 *43-1921
L.DMSS 000101 G #5-97 *17-675 *17-680 *17-710
L.DTXL 000143 G #5-97 *16-594 16-596 *16-601 16-611 *16-618
L.DTXT 000146 G #5-97 *16-587 16-588 16-613
L.DWAK 000142 G #5-97 15-558 *16-609 *23-952 *25-1019 *31-1397 37-1725 *37-1727 38-1749
41-1845 *43-1917 46-2099 46-2123 *47-2149
L.HUNG 000045 G #5-97 41-1859 *41-1861 *43-1927 *48-2179 *48-2186 *49-2200 *49-2270
L.IOCN 000050 G #5-97 *31-1411 *33-1516 *35-1671 *39-1811 *40-1826 *42-1888 *42-1890 *43-1925
44-2012
L.IOWT 000052 G #5-97 41-1836 *43-1926 *44-2009 44-2018 *44-2019
L.LNCT 000066 G #5-97 20-816 *20-832 20-839 *20-841 22-897 *22-906 *22-915
L.MFLG 000076 G #5-97 *15-566
L.MSGA 000134 G #5-97 31-1379 31-1380 *31-1381 *31-1389 *31-1390 *43-1922 *43-1923
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
L.MSGQ 000130 G #5-97 28-1144 31-1392 *31-1392 31-1401 31-1404 31-1408 *31-1408 *31-1408
31-1408 *31-1408 38-1748 47-2145 *47-2145 *47-2145 47-2145 *47-2145
L.MSGS 000140 G #5-97 *31-1377 *31-1384 *31-1391 31-1406 *31-1414 *43-1924 *47-2156
L.NFSP 000103 G #5-97 *27-1090 28-1147 *28-1173 *29-1222
L.PBRC 000126 G #5-97 *17-687 17-690 *30-1296 30-1299
L.PGCT 000040 G #5-97 35-1663 *43-1931 *49-2235 *50-2318 50-2321
L.PGLM 000042 G #5-97 50-2319 50-2321
L.PLBP 000120 G #5-97 24-966 25-987 25-988 *25-989 25-992 25-1002 *25-1014 *25-1015
*25-1026 38-1746 *43-1967 *43-1968 *47-2151
L.PLBQ 000114 G #5-97 17-718 24-969 25-1011 25-1024 *25-1024 *25-1024 25-1024 *25-1024
43-1962 *43-1962 43-1965 44-1999 *44-1999 *44-1999 44-1999 *44-1999 46-2106
*46-2106 46-2122 *46-2122
L.PLBS 000124 G #5-97 *25-985 *25-994 25-1004 *25-1016 25-1025 *25-1027 *43-1969 *47-2152
L.PLNC 000044 G #5-97 *50-2313 50-2314 *50-2317 50-2328
L.PRI 000020 G #5-97 *49-2200 49-2202
L.PUBP 000026 G #5-97 49-2209 49-2210 *49-2238 49-2239 *49-2242 *49-2269 *49-2283 *49-2291
L.PUBS 000032 G #5-97 *43-1916 *47-2150 49-2211 *49-2244 *49-2248 *49-2268 *49-2282 *49-2290
L.RATT 000061 G #5-97 34-1582 35-1599 *35-1601 35-1616 *35-1672 36-1679 41-1864 *41-1866
41-1868 *43-1929 46-2093 *46-2097 *49-2284 50-2298 *50-2300
L.RECO 000060 G #5-97 *33-1494 41-1840 *41-1842 *43-1928
L.SLN 000046 G #5-97 12-425 14-528 14-530 31-1410 33-1515 35-1670 39-1810 40-1825
45-2050 46-2101 46-2117 47-2142
L.TIMC 000000 G #5-97
L.TIMI 000001 G #5-97 43-1971
L.VFUA 000070 G #5-97 20-819 22-899
MB 004416 R 27-1082 27-1084 27-1087 27-1091 28-1165 28-1168 28-1170 28-1172 29-1192
29-1200 29-1204 29-1207 29-1217 29-1220 29-1229 29-1235 29-1243 29-1246
#31-1377 31-1394 34-1572 34-1574 34-1576 34-1578 34-1580
MBSND 004564 R 28-1149 #31-1401 34-1581
M$$MGE = 000000 5-97 14-502 23-929 25-987 28-1145 31-1379 33-1501 33-1507 49-2204
49-2209 49-2237 50-2303
NAK = 000025 #9-200
NA.DTO = 000004 #6-103 35-1647
NA.FAT = 000001 #6-103 35-1632
NA.INK = 000040 #6-103
NA.IVP = 000001 #6-103
NA.JAM = 000020 #6-103
NA.NAC = 000002 #6-103
NA.NOE = 000100 #6-103
NA.OFL = 000002 #6-103 35-1636
NA.OMD = 000010 #6-103
NA.OOF = 000040 #6-103
NA.OUF = 000001 #6-103
NA.OVP = 000001 #6-103 35-1654
NA.PAU = 000004 #6-103 35-1640
NA.PF = 000020 #6-103
NA.PSE = 000020 #6-103
NA.RAP = 000040 #6-103
NA.REG = 000100 #6-103
NA.RNA = 000010 #6-103
NC.AUC = 000002 #6-103
NC.AUE = 000001 #6-103
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
NC.CAB = 000003 #6-103
NC.DMP = 000005 #6-103
NC.PAU = 000006 #6-103
NC.RES = 000007 #6-103
NC.RQC = 000011 #6-103
NC.RQS = 000004 #6-103
ND.ACK = 000001 #6-103 17-653
ND.CMP = 000200 #6-103
ND.EOF = 000004 #6-103 17-656
ND.IER = 000002 #6-103
NF.CMD = 000001 #6-103 27-1107 27-1137 29-1196
NF.STD = 000002 #6-103 29-1199
NM.ALR = 000004 #6-103 40-1820
NM.ATT = 000001 #6-103 35-1622
NM.CAP = 000005 #6-103 39-1782
NM.CTL = 000003 #6-103 15-569 33-1509 34-1571
NM.DAT = 000000 #6-103
NM.FTR = 000002 #6-103 27-1081
NM.OTR = 000006 #6-103
NM.TYP = 000017 #6-103 6-103 6-103 6-103 6-103 6-103 6-103 6-103 14-505
NRDACK 010300 R 33-1505 44-2005 46-2110 #46-2116
NRDOTR = 000006 14-506 14-508 #14-518
NRDRET 010304 R 33-1521 46-2112 #46-2117
NRMACK 000554 R 12-420 12-421 12-422 12-423 #12-425
NR.ABS = 000000 #6-103
NR.ACC = 000000 #6-103
NR.ACN = 000001 #6-103 38-1761
NR.ATT = 000000 #6-103
NR.CAP = 000000 #6-103
NR.DMP = 000000 #6-103
NR.DPS = 000000 #6-103
NR.NAB = 000001 #6-103 38-1751
NR.NDP = 000002 #6-103 36-1700
NR.NDR = 000002 #6-103 37-1720
NR.NDV = 100377 #4-84
NR.NOB = 000001 #6-103
NR.NOE = 000002 #6-103 38-1738
NR.NPS = 000001 #6-103 37-1723
NR.PAU = 000001 #6-103 36-1705
NR.RES = 000000 #6-103
NT$DAT = 000002 31-1409 45-2056
NT$INT = 000004 33-1464 40-1824
NT$RTN = 000000 45-2030 46-2103
NT.BOM = 000040 31-1403 33-1515 35-1670 39-1810 40-1825 45-2055
NT.EOM = 000100 23-938 23-945 31-1405 33-1515 35-1670 39-1810 40-1825 45-2055
NUL = 000000 #9-179
N.AABC = 000004 #6-103
N.AACK = 000002 #6-103 46-2095 46-2097
N.ACOD = 000003 #6-103
N.AFLG = 000004 #6-103
N.ALGD = 000002 #6-103
N.APLE = 000005 #6-103 49-2284
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
N.ARQS = 000003 #6-103 35-1601
N.ASTC = 000001 #6-103 41-1866 50-2300
N.CCMD = 000003 #6-103 33-1468 33-1470 33-1503
N.CRES = 000004 #6-103 33-1514
N.CSEQ = 000002 #6-103 33-1504
N.DDAT = 000005 #6-103
N.DFLG = 000003 #6-103
N.DSEQ = 000002 #6-103
N.DSGC = 000004 #6-103
N.FCLS = 000002 #6-103
N.FDAT = 000004 #6-103
N.FFLG = 000001 #6-103
N.FID = 000000 #6-103
N.FRSP = 000003 #6-103
N.FSEQ = 000002 #6-103
N.FSPC = 000004 #6-103
N.MFL = 000001 #6-103
N.NSPC = 000003 #6-103 *28-1147
N.PCAP = 000003 #6-103
N.PCNT = 000002 #6-103
N.TYP = 000000 #6-103
PAUSE 006076 R 33-1534 #36-1693
PB 002662 R 18-742 20-831 21-861 21-886 22-905 22-914 #25-985 25-998 26-1054
26-1056
PBCHR 001554 R 17-705 #18-727 19-778
PBDQ 003034 R 24-972 25-995 25-1007 #25-1024
PBFF 002336 R 20-813 20-823 22-901 22-903 #22-913
PBFINI 007756 R 25-1013 44-2000 #45-2040
PBLF 002266 R 18-733 19-788 21-872 #22-896
PBLOD 002756 R 25-997 25-1003 #25-1011 25-1020
PBROOM 002734 R 19-781 19-785 #25-1002 26-1048
PCP 003124 R 20-837 21-883 #26-1037 26-1044
PGLEN = 000102 #11-283 11-326 50-2314 50-2328
PR7 = 000340 24-963 25-1024 31-1392 31-1408 33-1477 33-1500 43-1962 44-1999 44-2004
46-2106 46-2122 47-2137 47-2141 47-2145 48-2172 49-2223
PS = 177776 24-963 24-963 24-963 25-1024 25-1024 25-1024 31-1392 31-1392 31-1392
31-1408 31-1408 31-1408 31-1408 33-1477 33-1477 33-1477 33-1500 33-1500
33-1500 43-1962 43-1962 43-1962 44-1999 44-1999 44-1999 44-1999 44-2004
44-2004 44-2004 44-2004 46-2106 46-2106 46-2106 46-2122 46-2122 46-2122
47-2137 47-2137 47-2137 47-2137 47-2141 47-2141 47-2141 47-2141 47-2145
47-2145 47-2145 47-2145 48-2172 48-2172 48-2172 49-2223 49-2223 49-2223
QDDM 010714 R 24-979 25-1028 #48-2171
QDLC 000764 R 15-545 #15-548 33-1466
QTODLC 000750 R 14-512 14-514 #15-544
RECON 005114 R #33-1492 41-1843
RESUME 006154 R 33-1535 #37-1710
RS = 000036 #9-209
SETSTD 004264 R 30-1322 #30-1331 43-1989
SI = 000017 #9-194
SNDALR 006536 R #40-1817 41-1854
SNDATT 005564 R 34-1584 #35-1615 41-1870 46-2098 50-2301
SNDCAP 006370 R 34-1589 #39-1778 41-1874
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
SNDSTS 005544 R 33-1532 #35-1598
SO = 000016 #9-193
SOH = 000001 #9-180
SPA = 000040 #9-211 19-777 21-879
STOPLE 010776 R 23-941 23-952 25-1019 31-1397 33-1522 34-1591 36-1701 38-1742 47-2135
48-2171 #48-2185
STRTLE 010750 R 16-604 33-1524 #48-2175
STX = 000002 #9-181
SUB = 000032 #9-205
SYN = 000026 #9-201
US = 000037 #9-210 43-1938
VCH1 = 000000 11-287
VCH2 = 000001 11-373
VCH3 = 000002 11-374
VCH4 = 000003 11-375
VCH5 = 000004 11-376
VCH6 = 000005 11-377
VCH7 = 000006 11-370
VCH8 = 000007 11-369
VFBP1 = 000001 11-334
VFBP10 = 001000 11-343
VFBP11 = 002000 11-344
VFBP12 = 004000 11-345
VFBP2 = 000002 11-335
VFBP3 = 000004 11-336
VFBP4 = 000010 11-337
VFBP5 = 000020 11-338
VFBP6 = 000040 11-339
VFBP7 = 000100 11-340
VFBP8 = 000200 11-341 22-902
VFBP9 = 000400 11-342
VFC 002000 R #20-810 20-848
VFU66S = 000204 #11-330
VF.6LI = 000001 #6-103
VF.8LI = 000002 #6-103
VT = 000013 #9-190 11-370 19-801
$CCBRT = ****** GX 12-437 12-438 42-1896
$CSBGT = ****** GX 45-2048
$CSBRT = ****** GX 42-1899
$CTCMP = ****** GX 12-425 43-1978 44-2021
$DDXMP = ****** GX 46-2104
$INTSX = ****** GX 49-2201
$LEASC 000244 RG #11-355 *43-1933 *43-1936 *43-1940 *43-1942 *43-1946 43-1949
$LEINT 011010 RG #49-2200
$LETB 000472 RG #12-395 12-404
$RCCMP = ****** GX 31-1410 33-1515 35-1670 39-1810 40-1825
$RDBGT = ****** GX 45-2026
$RDBRT = ****** GX 42-1901
$RDBSZ = ****** GX 45-2035
$SDBSZ = ****** GX 45-2053
$VFU66 000000 RG #11-324 11-330
$XMCMP = ****** GX 14-528 14-530 46-2117 47-2142
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
$$ = 000102 #11-325 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329 11-329 #11-329 11-329 11-329 #11-329 11-329 11-329 #11-329
11-329
.P1 = 003777 11-297 11-329
.P10 = 000220 11-329
.P100 = 000020 11-329
.P101 = 000020 11-329
.P102 = 100020 11-329
.P11 = 000224 11-329
.P12 = 000230 11-329
.P13 = 000664 11-329
.P14 = 000220 11-329
.P15 = 000234 11-329
.P16 = 000220 11-329
.P17 = 000224 11-329
.P2 = 000220 11-329
.P20 = 001630 11-329
.P21 = 000224 11-329
.P22 = 000220 11-329
.P23 = 000234 11-329
.P24 = 000220 11-329
.P25 = 000764 11-329
.P26 = 000230 11-329
.P27 = 000224 11-329
.P3 = 000224 11-329
.P30 = 000220 11-329
.P31 = 000234 11-329
.P32 = 000620 11-329
.P33 = 000224 11-329
.P34 = 000230 11-329
.P35 = 000224 11-329
.P36 = 000220 11-329
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.P37 = 001676 11-329
.P4 = 000230 11-329
.P40 = 000220 11-329
.P41 = 000224 11-329
.P42 = 000230 11-329
.P43 = 000224 11-329
.P44 = 000620 11-329
.P45 = 000234 11-329
.P46 = 000220 11-329
.P47 = 000224 11-329
.P5 = 000224 11-329
.P50 = 000230 11-329
.P51 = 000764 11-329
.P52 = 000220 11-329
.P53 = 000234 11-329
.P54 = 000220 11-329
.P55 = 000224 11-329
.P56 = 001630 11-329
.P57 = 000224 11-329
.P6 = 000620 11-329
.P60 = 000220 11-329
.P61 = 000234 11-329
.P62 = 000220 11-329
.P63 = 000664 11-329
.P64 = 000230 11-329
.P65 = 000224 11-329
.P66 = 000220 11-329
.P67 = 000234 11-329
.P7 = 000234 11-329
.P70 = 000620 11-329
.P71 = 000224 11-329
.P72 = 000230 11-329
.P73 = 000224 11-329
.P74 = 000220 11-329
.P75 = 004020 11-329
.P76 = 000020 11-329
.P77 = 000020 11-329
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 12
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 12-425 14-528 14-530 15-563 15-565 15-571 15-574 15-577 17-650 17-652
17-659 17-664 17-683 17-694 17-702 17-705 17-720 18-733 18-742 19-781
19-783 19-785 19-787 20-831 20-837 21-872 21-883 21-886 22-905 22-914
23-941 23-944 23-952 23-952 24-972 24-979 25-995 25-997 25-1007 25-1013
25-1019 25-1019 26-1041 26-1048 26-1054 27-1082 27-1084 27-1085 27-1087 27-1088
27-1091 27-1092 27-1094 27-1096 27-1100 27-1122 27-1126 28-1148 28-1165 28-1168
28-1170 28-1172 29-1192 29-1200 29-1202 29-1204 29-1207 29-1217 29-1220 29-1229
29-1235 29-1243 29-1246 30-1280 30-1285 30-1295 30-1297 30-1316 30-1322 31-1386
31-1397 31-1397 31-1410 33-1478 33-1492 33-1505 33-1515 33-1521 33-1522 34-1545
34-1547 34-1556 34-1570 34-1572 34-1574 34-1576 34-1578 34-1580 34-1581 34-1584
34-1591 35-1619 35-1670 36-1701 37-1716 38-1742 39-1778 39-1810 40-1817 40-1825
41-1843 41-1847 41-1854 41-1870 41-1874 43-1953 43-1955 43-1959 43-1978 43-1989
44-1996 44-2000 44-2001 44-2005 45-2026 45-2048 46-2084 46-2098 46-2117 47-2135
47-2138 47-2142 47-2146 48-2171 49-2219 49-2225 49-2256 50-2301
CALLR #12-410 #12-429 #14-510 #15-546 #15-560 #16-604 #19-778 #19-788 #19-793 #20-813
#20-823 #21-861 #25-1028 #26-1056 #27-1139 #28-1149 #30-1313 #30-1320 #30-1324 #30-1325
#33-1466 #33-1524 #34-1589 #34-1593 #36-1703 #38-1752 #41-1838 #42-1896 #42-1899 #42-1901
#44-2021 #46-2104 #46-2126
CCBDF$ #4-77 #4-80
CRASH #7-122 #16-598
DEFPAR #10-247
DEQ$ #8-149 24-963 25-1024 31-1408 33-1500 44-1999 44-2004 47-2137 47-2141 47-2145
49-2223
DFHYBE #7-127 #23-952 #25-1019 #31-1397
ENABL$ #4-76 #24-963 #25-1024 #31-1392 #31-1408 #31-1408 #33-1477 #33-1500 #43-1962 #44-1999
#44-1999 #44-2004 #44-2004 #46-2106 #46-2122 #47-2137 #47-2137 #47-2141 #47-2141 #47-2145
#47-2145 #48-2172 #49-2223
ENQ$ #8-169 #31-1392 #33-1477 #43-1962 #46-2106 #46-2122 #48-2172
HWDDF$ #4-77 4-78 #14-502 14-502 #23-929 23-929 #25-987 25-987 #28-1145 28-1145
#31-1379 31-1379 #33-1501 33-1501 #33-1507 33-1507 #49-2204 49-2204 #49-2209 49-2209
#50-2303 50-2303
INHIB$ #4-76 24-963 25-1024 31-1392 31-1408 33-1477 33-1500 43-1962 44-1999 44-2004
46-2106 46-2122 47-2137 47-2141 47-2145 48-2172 49-2223
LEDLT$ #4-77 5-97
MAP #4-77 #14-502 #23-929 #25-987 #28-1145 #31-1379 #33-1501 #33-1507 #49-2209
NRDIN$ #4-77 #4-84
NSPDF$ #4-77 4-79
NURDF$ #4-77 6-103
POP #7-115 #18-734 #20-838 #24-980 #26-1042 #26-1049 #26-1055 #28-1171 #30-1312 #30-1319
#30-1352 #30-1369 #31-1393 #31-1396 #32-1442 #32-1446 #33-1506 #34-1568 #34-1579 #35-1673
#39-1806 #43-1977 #44-2008 #46-2086 #47-2157 #49-2226 #50-2304
PUSH #7-108 #18-732 #20-836 #24-971 #24-978 #26-1039 #26-1046 #26-1051 #28-1151 #28-1153
#28-1155 #28-1157 #28-1159 #28-1161 #28-1163 #30-1308 #30-1314 #30-1346 #30-1357 #31-1385
#32-1424 #33-1497 #34-1552 #34-1569 #35-1615 #39-1784 #39-1787 #43-1911 #44-1997 #46-2081
#47-2134 #49-2203 #49-2224
RESMAP #4-77 #50-2303
RETURN #12-426 #14-529 #14-531 #15-581 #16-625 #17-722 #18-745 #20-834 #20-842 #21-891
#22-908 #22-917 #23-933 #23-948 #24-981 #25-990 #25-1006 #25-1017 #29-1257 #30-1334
#30-1355 #30-1371 #31-1382 #31-1415 #32-1444 #32-1448 #33-1495 #33-1517 #34-1588 #35-1602
#35-1674 #36-1686 #36-1706 #37-1729 #38-1739 #38-1759 #38-1762 #39-1769 #39-1813 #40-1827
#41-1876 #43-1979 #43-1991 #44-2015 #45-2036 #45-2045 #45-2057 #46-2107 #46-2118 #46-2125
#47-2158 #48-2181 #48-2187 #50-2305 #50-2324 #50-2338
LE CREATED BY MACRO ON 13-OCT-79 AT 08:28 PAGE 13
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
SAVMAP #4-77 #49-2204
SETCHN #10-237
SOB #19-772 #20-833 #21-887 #30-1318 #30-1368 #39-1800 #43-1937 #43-1941 #43-1963 #43-1990
#49-2221 #49-2260
TMPDF$ #5-97 #5-97
WRDVFU #10-242 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329 11-329
11-329 11-329 11-329 11-329 11-329 11-329 11-329
$INTSX #4-77 49-2201
$TOBDM #7-137 #12-425 #14-528 #14-530 #31-1410 #33-1515 #35-1670 #39-1810 #40-1825 #46-2117
#47-2142
.BIN #5-97
.CNB #5-97
.CNW #5-97
.CORE #5-97
.CSR #5-97 #5-97
.DVCHA #5-97
.INT #5-97 #5-97
.INT1 #5-97
.INT2 #5-97
.INT3 #5-97
.LFLHD #5-97
.LIBR #5-97
.LINKS #5-97
.LSTHD #5-97 #5-97 #5-97 #5-97 #5-97 #5-97
.LTAB #5-97
.MPLHD #5-97
.POOL #5-97
.PRI #5-97 5-97
.SCOM #5-97
.SECSR #5-97
.SLNB #5-97
.SLNW #5-97 5-97
.STNB #5-97
.STNW #5-97
.UNB #5-97
.UNW #5-97
.VFY #5-97
.ZER #10-231