Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/cr.list
There are no other files named cr.list in the archive.
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29
TABLE OF CONTENTS
4- 93 MACRO DEFINITIONS
4- 94 GENERAL MACROS
4- 111 CR11 DRIVER PARAMETERS
5- 116 CR11 LINE TABLE OFFSETS
6- 122 NURD MESSAGE DEFINITIONS
7- 128 LOCAL MACROS
7- 157 MCB DLC TO LLC INTERFACE MACRO
8- 169 QUEUE HANDLING MACROS
9- 199 CR11 DRIVER CONSTANTS
10- 238 HOLLERITH - ASCII CONVERSION TABLES
12- 549 DISPATCH TABLES
13- 602 NRD INTERPROCESS COMMUNICATION CONVENTIONS
14- 633 NURD MESSAGE DECODER
15- 683 QUEUE UP INCOMING NURD DATA AND FEATURES
16- 727 DATA/FEATURES HYBER FUNCTION
17- 774 GET AND PUT DATA BYTES
18- 822 NURD FEATURES MESSAGE HANDLERS
20- 944 FEATURES READ
21- 1014 FEATURES SET
22- 1128 NURD MESSAGE BUILDER
23- 1174 FEATURE FINDER
24- 1208 NURD CONTROL MESSAGE HANDLER
25- 1293 NON-INTERRUPT CONTROL MESSAGE PROCESSING
26- 1345 CONTROL - REQUEST STATUS
26- 1355 SEND ATTENTION MESSAGE
27- 1439 CONTROL - DUMP OUTPUT BUFFERS
27- 1451 CONTROL - PAUSE
28- 1462 CONTROL - RESUME OUTPUT
29- 1483 CONTROL - ABORT COMMAND SET
30- 1515 CONTROL - REQUEST CAPABILITIES
30- 1524 SEND CAPABILITIES MESSAGE
31- 1567 SEND ALERT MESSAGE
32- 1580 TIMER HANDLER
33- 1632 RESOURCE RETURN
34- 1657 OPEN/CLOSE DEVICE
36- 1737 PHYSICAL BUFFER MANAGEMENT
37- 1760 DDM RECEIVE COMPLETE
38- 1789 FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES
39- 1820 INPUT ENABLE
40- 1866 CR11 HARDWARE DEVICE REGISTER DEFINITIONS
41- 1904 INTERRUPT SERVICE ROUTINE
43- 2146 THE END
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 3
1 .TITLE CR - NURD CR11 CARD READER DLC/DDM PROCESS
2 .IDENT "X01017"
3 .ENABL LC
4
5 ; COPYRIGHT (C) 1976, 1977, 1978, 1979
6 ;
7 ; DIGITAL EQUIPMENT CORPORATION (DEC)
8 ; 122A MAIN STREET
9 ; MAYNARD, MASSACHUSETTS 01754
10 ;
11 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
12 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE
13 ; INCLUSION OF DEC'S COPYRIGHT NOTICE AND ONLY FOR USE ON SAID
14 ; SYSTEM. THIS SOFTWARE AND ANY SUCH COPIES IN ANY FORM MAY
15 ; NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY PERSON OR
16 ; GROUP NOT A PARTY TO THE LICENSING AGREEMENT. TITLE TO AND
17 ; OWNERSHIP OF THIS SOFTWARE SHALL AT ALL TIMES REMAIN WITH
18 ; DEC.
19 ;
20 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
21 ; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
22 ; TO FORM OR FUNCTION BY DEC.
23 ;
24 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
25 ; ITS SOFTWARE ON EQUIPMENT NOT SUPPLIED BY DEC.
26 ;
27 ;
28 ;
29 ;
30 ; THIS CROCK WAS ORIGINALLY FOISTED UPON THE UNSUSPECTING
31 ; WORLD IN JUNE, 1978 BY R.SOUTH WHO WAS PREOCCUPIED
32 ; BY TRAVELS THROUGH THE LEGENDARY DUNGEON OF MORDATZ IDU.
33 ;
34 ; X01001 19-MAR-79 SCOTT G. ROBINSON
35 ; MODIFY CONTROL START/STOP TO NOT MUNDGE
36 ; A CCB.
37 ;
38 ; X01002 22-MAR-79 SCOTT G. ROBINSON
39 ; MODIFY INTERRUPT SERVICE TO NOT GENERATE A
40 ; MESSAGE LENGTH GREATER THAN WHAT THE NURD
41 ; MESSAGE REALLY IS.
42 ;
43 ; X01003 22-MAR-79 SCOTT G. ROBINSON
44 ; MODIFY CODE TO UNDERSTAND WHAT ONLINE/OFFLINE
45 ; REALLY MEANS ON A CR11.
46 ;
47 ; X01004 1-MAY-79 BUREN W. HOFFMAN
48 ; CLEAR BUFFER COUNT (L.MSGS) ON ABRTAL. ALSO, SET
49 ; RESPONSE CODE PROPERLY IN SAME ROUTINE. FIXED TYPO
50 ; IN SNDCAP.
51 ;
52 ; X01005 3-MAY-79 BUREN W. HOFFMAN
53 ; CLEAR DATA MESSAGE BUFFER SIZE (C.DMBS) ON ABRTAL.
54 ;
55 ; X01006 18-MAY-79 BUREN W. HOFFMAN
56 ; FIXED GLITCH IN STATE CODE REPORTING IN ABRTEF, AND
57 ; CORRECTED TYPO IN FLUSHQ.
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 3-1
58 ;
59 ; X01007 23-MAY-79 BUREN W. HOFFMAN
60 ; CLEAN UP FOLLOWING CLOSE, SO THAT MCBDA DOESN'T FIND
61 ; CCB POINTER REMNANTS.
62 ;
63 ; X01010 11-JUN-79 BUREN W. HOFFMAN
64 ; MODIFIED INTERRUPT ROUTINE TO NOT REPORT EOF CARD AS
65 ; INVALID PUNCH, AND NOT TO DELIVER THE CARD IMAGE -
66 ; IT MERELY NOTES THE EOF IN BUFFER.
67 ;
68 ; X01011 22-JUN-79 BUREN W. HOFFMAN
69 ; FURTHER MODIFIED INTERRUPT ROUTINE TO DO WHAT X01010
70 ; INTENDED TO DO.
71 ;
72 ; X01012 18-JUL-79 BUREN W. HOFFMAN
73 ; REWROTE INTERRUPT ROUTINE TO USE OFFSETS INTO DLT, RATHER
74 ; THAN CHANGING THE POINTER. ALSO PERFORMED OTHER COSMETIC
75 ; CODE CLEANUPS.
76 ;
77 ; X01013 25-JUL-79 BUREN W. HOFFMAN
78 ; FIXED A TYPO INTRODUCED IN X01012.
79 ;
80 ; X01014 27-JUL-79 BUREN W. HOFFMAN
81 ; BUG FIX IN INTERRUPT SERVICE, INTRODUCED IN X01012.
82 ;
83 ; X01015 31-JUL-79 BUREN W. HOFFMAN
84 ; IBID
85 ;
86 ; X01016 02-AUG-79 BUREN W. HOFFMAN
87 ; APR6 MAPPING WAS NOT BEING PRESERVED FOLLOWING $INTSX
88 ; IN INTERRUPT SERVICE. SO, FIXXED IT.
89 ;
90 ; X01017 06-AUG-79 BUREN W. HOFFMAN
91 ; BUFFER MAPPING WAS NOT BEING DONE FOR ERROR REPORTING.
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 4
MACRO DEFINITIONS
93 .SBTTL MACRO DEFINITIONS
94 .SBTTL GENERAL MACROS
95
96 .MCALL INHIB$,ENABL$
97 .MCALL HWDDF$,NSPDF$,CCBDF$,CRDLT$,$INTSX,$INTXT,MAP,SAVMAP,RESMAP,NURDF$,NRDIN$
98 000000 HWDDF$ ; DEFINE THE HARDWARE SYMBOLS
99 000000 NSPDF$ ; DEFINE NSP SYMBOLS
100 000000 CCBDF$ ; DEFINE THE CCB SYMBOLS
101
102
103
104 .LIST ME
105 000000 NRDIN$
; CCB STATUS CODES : DLC ->NRD
100201 LS.ABO = 100201 ;ABORTING(COMPLIANCE WITH HIGHER (POWERS)
100202 LS.REJ = 100202 ;REJECTING MSG
100203 LS.CLO = 100203 ;DEVICE IS CLOSED,REJECTING
100204 LS.ILM = 100204 ;ILLEGAL NURD MSG
100205 LS.BOM = 100205 ;DLC IS ABORTING THE LINK DUE TO USER ERROR
; CCB STATUS CODES : NRD -> NRM
100377 NR.NDV = 100377 ;NOT A NURD DEVICE
106 .NLIST ME
107
108
109
110
111 .SBTTL CR11 DRIVER PARAMETERS
112
113 000005 CRHNG = 5 ; HUNG DEVICE TIME CONSTANT
114 000005 RDAHD = 5 ; OUTSTANDING C.IOCN LIMIT WHEN CA.XOF SET
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 5
CR11 LINE TABLE OFFSETS
116 .SBTTL CR11 LINE TABLE OFFSETS
117
118 .LIST ME
119 000000 CRDLT$ <:>,<=>
.MCALL TMPDF$
000000 TMPDF$
.MCALL .BIN,.CNB,.CNW,.CORE,.CSR,.DVCHA,.INT,.INT1,.INT2,.INT3
.MCALL .LIBR,.LINKS,.LFLHD,.LSTHD,.LTAB,.MPLHD,.POOL,.PRI,.SCOM
.MCALL .SECSR,.SLNB,.SLNW,.STNB,.STNW,.UNB,.UNW,.VFY
;
; NURD CR11 DEVICE DRIVER LINE TABLE TEMPLATE
;
000000 .ASECT
000000 .=0
000000 C.TIMC:: .BLKB 1 ;TWO BYTE TIMER ENTRY, CURRENT VALUE
000001 C.TIMI:: .BLKB 1 ; AND INITIAL TIMER VALUE
000002 C.CALL:: .INT ;INTERRUPT DISPATCH CALL
.EVEN
.IF DF M$$MGE
000002 .BLKW 7
.IFF
.BLKW 2
.ENDC
000020 C.PRI:: .PRI ;SCHEDULING PRIORITY
.EVEN
000020 .BLKW 1
;DDM LEVEL DATA BASE
;ORDER FOR THIS SECTION IS CRITICAL
000022 C.CSR:: .CSR ;ONE WORD CSR POINTER
.EVEN
000022 .BLKW 1
000024 C.RST:: .BLKW 1 ;CR11 STATUS READ AT INTERRUPT
000026 C.COLC:: .BLKB 1 ;PHYSICAL COLUMN COUNT
000027 C.HUNG:: .BLKB 1 ;DEVICE HUNG TIMER
000030 C.PUBP:: .BLKW 2 ;BUFFER PTR DOUBLEWORD
000034 C.SGHD:: .BLKW 1 ;CURRENT SEGMENT HEADER ADDRESS
000036 C.LDAT:: .BLKW 1 ;LAST DATA ITEM READ
000040 C.PUBS:: .BLKW 1 ;BUFFER INPUT COUNTER
000042 C.NRDA:: .BLKW 1 ;BEG OF NURD MESSAGE(ADDRESS)
000044 C.DDMQ:: .LSTHD ;CCB'S QUEUED FOR INPUT
.EVEN
000044 .BLKW 2
000050 C.ASTS:: .BLKW 1 ;ACTION STATUS BIT MAP
000001 CA.CLO == 1 ;CLOSED
000002 CA.PAU == 2 ;PAUSED
000004 CA.ADN == 4 ;ABORT WHEN DONE WITH DDM QUEUE
000010 CA.ABO == 10 ;ABORTING
000020 CA.ABE == 20 ;CLEAR ABORT ON EOF (ELSE ON CLEAR)
000040 CA.EOF == 40 ;CURRENT MESSAGE HAS EOF
000100 CA.HOP == 100 ;HOPPER CHECK - EMPTY INPUT OR FULL OUTPUT
000200 CA.MOT == 200 ;MOTION CHECK - PICK FAIL,STACK FAIL,MOTION ERROR
000400 CA.TER == 400 ;TIMING ERROR - DATA OVERRUN CONDITION
000700 CA.ERR== CA.HOP!CA.MOT!CA.TER ;SUMMARY - HARD ERROR
001000 CA.OFL == 1000 ;READER OFFLINE
002000 CA.IVP == 2000 ;INVALID PUNCH - MULTIPUNCH
004000 CA.TMO == 4000 ;DEVICE TIME OUT
100000 CA.XOF == 100000 ;READER XOF'D
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 5-1
CR11 LINE TABLE OFFSETS
000052 C.CDCT:: .BLKW 1 ;PHYSICAL CARD COUNT
;MISCELLANEOUS ITEMS
.EVEN
000054 C.SLN:: .SLNW ;DEVICE SYSTEM LINE NUMBER
.EVEN
000054 .BLKW 1
000056 C.IOCN:: .BLKW 1 ;OUTSTANDING IO COUNT
000060 C.IOWT:: .BLKW 1 ;CLOSE WAIT FLAG = CLOSE CCB
;CONTROL MESSAGE PROCESSING DATA BASE
.EVEN
000062 C.CMSQ:: .LSTHD ;CONTROL MESSAGE QUEUE
.EVEN
000062 .BLKW 2
000066 C.RECO:: .BLKB 1 ;CONTROL MESSAGE RESOURCE ERROR FLAG
000067 C.RATT:: .BLKB 1 ;PENDING ATTENTION MESSAGE FLAG - REASON CODE
000070 C.CAPP:: .BLKB 1 ;PENDING CAPABILITIES MESSAGE FLAG
000071 C.STRT:: .BLKB 1 ;PENDING READ START
;DATA & FEATURES PROCESSING DATA BASE
.EVEN
000072 C.DLCQ:: .LSTHD ;CCB'S QUEUED INTO DLC
.EVEN
000072 .BLKW 2
000076 C.MFLG:: .BLKB 1 ;CURRENT NURD MESSAGE FLAGS
000077 C.CAPN:: .BLKB 1 ;CURRENT INDEX INTO CAPABILITIES LIST
000100 C.NFSP:: .BLKB 1 ;NO. FEATURE SPECS IN CURRENT MSG
.EVEN
000102 C.DMAD:: .BLKW 2 ;DATA MSG ADDRESS DOUBLEWORD (PTR)
000106 C.DMBS:: .BLKW 1 ;DATA MSG BUFFER SIZE
000110 C.DMSQ:: .BLKB 2 ;LAST GOOD, CURRENT DATA SEQ NUMBERS
000112 C.PBRC:: .BLKB 1 ;TEMP BYTE
.EVEN
000114 C.MSGQ:: .LSTHD ;OUTGOING MSG QUEUE
.EVEN
000114 .BLKW 2
000120 C.MSGA:: .BLKW 2 ;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
000124 C.MSGS:: .BLKW 1 ;CURRENT MSG BUFFER SIZE
;DATA/FEATURES PROCESS HYBER CONTEXT
000126 C.DWAK:: .BLKB 1 ;WAKE CONDITION
000001 DWAKS == 1 ;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
000002 DWAKP == 2 ;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
000003 DWAKT == 3 ;WAKE ON CLOCK TOCK
000004 DWAKR == 4 ;WAKE WHEN RESUME CONTROL FCN DONE
000127 C.DTXL:: .BLKB 1 ;NO. WORDS ON STACK AT SLEEP TIME
.EVEN
000130 C.DFSP:: .BLKW 1 ;STACK ORIGIN
000020 DTXTSZ == 16. ;DATA/FEATURES PROCESS CONTEXT ALLOCATED
000132 C.DTXT:: .BLKW DTXTSZ ;CONTEXT BLOCK FOR DA/FEATURES PROCESS
;FEATURE CRUFT
000172 C.CFET:: ;LP11 COMMON FEATURE LIST
000172 .BLKB 1 ;NUMBER OF COMMON FEATURES
000173 .BLKB 1 ;FEATURE FE.DAT SUPPORTED
000174 .BLKB 1 ;FEATURE FE.SER NOT SUPPORTED
000175 .BLKB 1 ;FEATURE FE.LCR NOT SUPPORTED
000176 .BLKB 1 ;FEATURE FE.FWD NOT SUPPORTED
000177 .BLKB 1 ;FEATURE FE.EOF SUPPORTED
000200 .BLKB 1 ;FEATURE FE.DVT NOT SUPPORTED
000201 .BLKB 1 ;FEATURE FE.TRN NOT SUPPORTED
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 5-2
CR11 LINE TABLE OFFSETS
000202 .BLKB 1 ;FEATURE FE.FNM NOT SUPPORTED
000203 .BLKB 1 ;FEATURE FE.DWD SUPPORTED
000011 CCFETL == .-C.CFET-1
000204 C.DFET:: .BLKB 1 ;NUMBER OF DEVICE SPECIFIC FEATURES
000205 .BLKB 1 ;FEATURE 129 NOT DEFINED
000206 .BLKB 1 ;FEATURE CD.CWD SUPPORTED
000002 CDFETL == .-C.DFET-1
;FEATURE BLOCKS
000000 F.FSB == 0 ;(BM)FEATURES STATUS BYTE
000000 FB.CL0 == 0 ;CLASS 0 FEATURE => <BIT> FORM
000001 FB.CL1 == 1 ;CLASS 1 FEATURE => <CNT><...> FORM
000002 FB.WRD == 2 ;FEATURE IS A WORD AND
; F.FCV IS A DLT OFFSET TO IT
000004 FB.STR == 4 ;FEATURE IS A STRING
;F.FCV IS THE LENGTH
;CURRENT VALUE BEGINS AT F.FCV+1
;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
000010 FB.STE == 10 ;STANDARD VALUE EXISTS
000020 FB.SST == 20 ;STANDARD IS SET
000040 FB.CP == 40 ;CHANGE PENDING
000100 FB.CA == 100 ;CHANGE ALLOWED
000001 F.FCV == 1 ;FEATURE CURRENT VALUE BYTE
000002 F.FSV == 2 ;FEATURE STANDARD VALUE BYTE
000207 CR.DAT:: ;DATA MODE
000207 .BLKB 1
000131 CRDATS == FB.CL1!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.DOF LE.DAT
000210 .BLKB 1 ;ASCII
000211 .BLKB 1 ;ASCII IS STD
;CR.SER:: ;SERIAL NUMBER
;CR.LCR:: ;LOWER CASE RAISE
;CR.FWD:: ;FORM WIDTH
000212 CR.EOF:: ;EOF RECOGNITION
000212 .BLKB 1
000101 CREOFS == FB.CL1!FB.CA ;INITIAL STATUS OF CR.EOF
000213 .BLKB 1
;CR.DVT:: ;DEVICE TYPE
;CR.TRN:: ;RECORD TRUNCATION
;CR.FNM:: ;FORM NAME
000214 CR.DWD:: ;DEVICE WIDTH
000214 .BLKB 1
000215 .BLKB 1 ;STD WIDTH
; DEVICE SPECIFIC FEATURES
000216 CR.CWD:: ;CARD WIDTH
000216 .BLKB 1
000131 CRCWDS == FB.CL1!FB.CA!FB.STE!FB.SST ;INITIAL STATUS OF CR.CWD
000217 .BLKB 1
000220 .BLKB 1
000000 .PSECT
120 .NLIST ME
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 6
NURD MESSAGE DEFINITIONS
122 .SBTTL NURD MESSAGE DEFINITIONS
123
124 .LIST ME
125 000000 NURDF$
; GENERAL MESSAGE DEFINITIONS
000000 N.TYP = 0 ;(B)OFFSET TO MESSAGE TYPE
000017 NM.TYP = 17 ;MESSAGE TYPE MASK
000000 NM.DAT = 0&NM.TYP ;DATA MESSAGE
000001 NM.ATT = 1&NM.TYP ;ATTENTION MESSAGE
000002 NM.FTR = 2&NM.TYP ;FEATURES MESSAGE
000003 NM.CTL = 3&NM.TYP ;CONTROL MESSAGE
000004 NM.ALR = 4&NM.TYP ;ALERT MESSAGE
000005 NM.CAP = 5&NM.TYP ;CAPABILITIES MESSAGE
000006 NM.OTR = 6&NM.TYP ;***CURRENT OUT OF RANGE VALUE***
000001 N.MFL = 1 ;(BM)OFFSET TO MESSAGE FLAGS
; DATA MESSAGE DEFINITIONS
;DATA MESSAGE OFFSETS
000002 N.DSEQ = 2 ;(B)SEQUENCE NUMBER
000003 N.DFLG = 3 ;(BM)DATA FLAGS
000001 ND.ACK = 1 ;ACKNOWLEDGE REQD
000002 ND.IER = 2 ;INPUT ERROR
000004 ND.EOF = 4 ;SEGMENT IS END OF FILE
000004 N.DSGC = 4 ;(B)SEGMENT COUNT
000005 N.DDAT = 5 ;START OF DATA
;DATA SEGMENT CONTROL BYTE DEFINITIONS
000200 ND.CMP = 200 ;COMPRESSION FLAG
;CONTROL BYTE=0 => END OF RECORD MARK
; ATTENTION MESSAGE DEFINITIONS
;ATTENTION MESSAGE OFFSETS
000002 N.ALGD = 2 ;(B)"LAST GOOD" ID
000003 N.ACOD = 3 ;(B)ATTENTION CODE OFFSET
;ATTENTION CODE VALUES
;0 IS RESERVED
000001 N.ASTC = 1 ;STATUS CHANGE
000002 N.AACK = 2 ;DATA ACKNOWLEDGEMENT
000003 N.ARQS = 3 ;REQUESTED
000004 N.AABC = 4 ;OUTPUT ABORT RECEIVED OR INPUT ABORT COMPLETE
000005 N.APLE = 5 ;PAGE LIMIT EXCEEDED
000004 N.AFLG = 4 ;(BM)(EX)ATTENTION FLAGS (UP TO 3 BYTES REQ'D)
;COMMON FLAGS
;BYTE 1 FLAGS
000001 NA.FAT = 1 ;FATAL ERROR
000002 NA.OFL = 2 ;OFFLINE
000004 NA.PAU = 4 ;PAUSED
000010 NA.OMD = 10 ;OUT OF MEDIA
000020 NA.JAM = 20 ;JAMMED
000040 NA.OOF = 40 ;OPERATOR OFFLINE
000100 NA.NOE = 100 ;NON OPERATOR ERROR
;BYTE 2 FLAGS
000001 NA.OUF = 1 ;OUTPUT FULL
000002 NA.NAC = 2 ;DEVICE NOT ACCESSIBLE
000004 NA.DTO = 4 ;DEVICE TIME OUT
000010 NA.RNA = 10 ;RESOURCE NOT AVAILABLE
;LINE PRINTER SPECIFIC ERRORS
000020 NA.PSE = 20 ;PAPER SLEW ERROR
000040 NA.INK = 40 ;OUT OF INK
;RESERVED CODE
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 6-1
NURD MESSAGE DEFINITIONS
;BYTE 3 FLAGS
000001 NA.OVP = 1 ;ILLEGAL OVERPRINT
;PUNCHED CARD SPECIFIC ERRORS
;BYTE 2 FLAGS
000020 NA.PF = 20 ;PICK FAILURE
000040 NA.RAP = 40 ;READ AFTER PUNCH ERROR
000100 NA.REG = 100 ;REGISTRATION ERROR
;BYTE 3 FLAGS
000001 NA.IVP = 1 ;INVALID PUNCH ERROR
; N.APGC = ;(2B)PAGE CNTR (PREV FLD EXTNSBLE, NO FIXED OFFSET)
; FEATURES MESSAGES DEFINITIONS
;FEATURES MESSAGE OFFSETS
000002 N.FSEQ = 2 ;(B)FEATURES SEQUENCE NUMBER
000003 N.NSPC = 3 ;(B) NO. OF FEATURES SPECS IN MSG
000004 N.FSPC = 4 ;OFFSET TO 1ST FEATURE SPEC
;REMAINING OFFSETS RELATIVE TO BEG OF A FEATURE SPEC
000000 N.FID = 0 ;(B)FEATURES IDENTIFIER
;COMMON UNIT RECORD DEVICE FEATURES
000000 FE.ESC = 0 ;RESERVED FOR FUTURE ESCAPE CODE
000001 FE.DAT = 1 ;(CLASS 1) DATA MODE
000001 DM.ASC = 1 ;7 BIT ASCII
000002 DM.CLI = 2 ;COLUMNIMAGE
000003 DM.EBC = 3 ;EBCDIC
000004 DM.AUG = 4 ;AUGMENTED COLUMNIMAGE
000005 DM.AS8 = 5 ;8 BIT ASCII
000002 FE.SER = 2 ;(CLASS 1) SERIAL NUMBER
000003 FE.LCR = 3 ;(CLASS 0) LOWER CASE RAISE
000004 FE.FWD = 4 ;(CLASS 1) FORM WIDTH
000005 FE.EOF = 5 ;(CLASS 1) EOF RECOGNITION
000001 EO.ASC = 1 ;ASCII
007417 EOFASC = 7417 ;ASCII EOF (COLUMN 1) PUNCH
000002 EO.IMG = 2 ;IMAGE
000006 FE.DVT = 6 ;(CLASS 1) DEVICE TYPE
000007 FE.TRN = 7 ;(CLASS 0) RECORD TRUNCATION
000010 FE.FNM = 8. ;(CLASS 1) FORM NAME
000011 FE.DWD = 9. ;(CLASS 1) DEVICE WIDTH
;DEVICE SPECIFIC FEATURES
;LINE PRINTER
000202 LP.HT = 130. ;(CLASS 1) HORIZONTAL TAB STOP
000203 LP.SFC = 131. ;(CLASS 0) STANDARD VERTICAL FORMS CONTROL
000204 LP.OVP = 132. ;(CLASS 1) OVERPRINT LIMIT
000205 LP.CVF = 133. ;(CLASS 1) CUSTOM VFU
000206 LP.FCC = 134. ;(CLASS 0) FORTRAN CARRIAGE CONTROL
000207 LP.VFR = 135. ;(CLASS 1) VARIABLE FORMS RATIO
000001 VF.6LI = 1 ;6 LINES PER INCH
000002 VF.8LI = 2 ;8 LINES PER INCH
000210 LP.CHS = 136. ;(CLASS 1) CHARACTER SET
000001 CH.64 = 1 ;64 CHARACTER SET
000002 CH.96 = 2 ;96 CHARACTER SET
000211 LP.PLE = 137. ;(CLASS 1) PAGE LIMIT ENFORCEMENT
000212 LP.OPV = 138. ;(CLASS 1) OPTICAL VFU NAME
;CARD READER/PUNCH
000202 CD.CWD = 130. ;(CLASS 1) CARD WIDTH
;SPECIAL FEATURE ID
000377 FE.ALL = 255. ;AFFECTS ALL FEATURES(READ OR SET TO STD.)
000001 N.FFLG = 1 ;(BM)FEATURES FLAGS
000001 NF.CMD = 1 ;SET FEATURES=1, READ=0
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 6-2
NURD MESSAGE DEFINITIONS
000002 NF.STD = 2 ;STANDARD FLAG
000002 N.FCLS = 2 ;(B)FEATURE CLASS
000000 FC.CL0 = 0 ;CLASS 0 FEATURE => <BIT> FORM
000001 FC.CL1 = 1 ;CLASS 1 FEATURE => <CNT><...> FORM
000002 FC.SST = 2 ;SET TO STANDARD
000003 FC.CLM = 3 ;CLASS MASK
000003 N.FRSP = 3 ;FEATURE RESPONSE FIELD
000001 FR.USF = 1 ;UNSUPPORTED FEATURE
000002 FR.BCL = 2 ;BAD CLASS SPEC'D
000003 FR.NST = 3 ;NO STANDARD VALUE
000004 FR.ERR = 4 ;FEATURE DATA OR FORMAT ERROR
000005 FR.CPN = 5 ;CHANGE PENDING
000006 FR.NEB = 6 ;NOT ENOUGH BUFFER (FOR REPORT)
000007 FR.DNP = 7 ;DEVICE NOT PAUSED
000004 N.FDAT = 4 ;BEG FEATURES DATA(FORMAT CLASS DEPENDENT)
;CONTROL MESSAGE DEFINITIONS
;CONTROL MESSAGE OFFSETS
000002 N.CSEQ = 2 ;(B)CONTROL SEQUENCE NUMBER
000003 N.CCMD = 3 ;(B)CONTROL COMMAND
000001 NC.AUE = 1 ;(INTERRUPT) ABORT UNTIL EOF
000002 NC.AUC = 2 ;(INTERRUPT) ABORT UNTIL CLEARED
000003 NC.CAB = 3 ; CLEAR OUTPUT ABORT/ ACK INPUT ABORT
000004 NC.RQS = 4 ; REQUEST STATUS
000005 NC.DMP = 5 ; DUMP OUTPUT BUFFERS
000006 NC.PAU = 6 ;(INTERRUPT) PAUSE
000007 NC.RES = 7 ;(INTERRUPT) RESUME
000011 NC.RQC = 9. ; REQUEST CAPABILITIES
000004 N.CRES = 4 ;(B)CONTROL RESULT CODE
;NC.AUE,NC.AUC RESPONSE
000000 NR.ABS = 0 ;ABORT STATE
000001 NR.NAB = 1 ;NOTHING TO ABORT
;NC.AUE RESPONSE
000002 NR.NOE = 2 ;NO EOF DEFINED
;NC.CAB RESPONSE
000000 NR.ACC = 0 ;ABORT COMPLETE CLEARED
000001 NR.ACN = 1 ;ABORT COMPLETE NOT SET
;NC.RQS RESPONSE
000000 NR.ATT = 0 ;ATTENTION MSG FOLLOWS
;NC.DMP RESPONSE
000000 NR.DMP = 0 ;OUTPUT BEING DUMPED
000001 NR.NOB = 1 ;NO OUTPUT BUFFERED
;NC.PAU RESPONSE
000000 NR.DPS = 0 ;DEVICE WILL PAUSE
000001 NR.PAU = 1 ;DEVICE ALREADY PAUSED
000002 NR.NDP = 2 ;NO DATA TRANSFER TO PAUSE
;NC.RES RESPONSE
000000 NR.RES = 0 ;DEVICE WILL RESUME
000001 NR.NPS = 1 ;DEVICE NOT PAUSED
000002 NR.NDR = 2 ;NO DATA TRANSFER TO RESUME
;NC.RQC RESPONSE
000000 NR.CAP = 0 ;CAPABILITIES FOLLOWS
; CAPABILITIES MESSAGE DEFINITIONS
;CAPABILITIES MESSAGE OFFSETS
000002 N.PCNT = 2 ;LIST COUNT BYTE
000003 N.PCAP = 3 ;START OF CAPABILITIES LIST
126 .NLIST ME
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 7
LOCAL MACROS
128 .SBTTL LOCAL MACROS
129
130 .MACRO PUSH LIST
131 .IRP .A,<LIST>
132 MOV .A,-(SP)
133 .ENDR
134 .ENDM PUSH
135
136
137 .MACRO POP LIST
138 .IRP .A,<LIST>
139 MOV (SP)+,.A
140 .ENDR
141 .ENDM POP
142
143
144 .MACRO CRASH
145 IOT
146 .ENDM CRASH
147
148
149 .MACRO DFHYBER WAKE
150 MOVB #200!WAKE,C.DWAK(R5)
151 CALL DFSLEP
152 .ENDM
153
154
155
156
157 .SBTTL MCB DLC TO LLC INTERFACE MACRO
158
159 .MACRO $TOBDM WHICH,SFC
160 .IF NB <SFC>
161 MOV SFC,R3 ; LOAD SUCCESS/FAILURE CODE
162 .IFF
163 CLR R3 ; DEFAULT IS SUCCESS
164 .ENDC ;NB <SFC>
165 MOV C.SLN(R5),C.LIN(R4) ; IDENTIFY SENDER
166 CALL $'WHICH'CMP ; DISPATCH TO COMMEXEC
167 .ENDM $TOBDM
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 8
QUEUE HANDLING MACROS
169 .SBTTL QUEUE HANDLING MACROS
170
171 .MACRO DEQ$ OFFSET,TAG,?TAG2,?TAG1
172 INHIB$
173 MOV OFFSET(R5),R4
174 .IF NB <TAG>
175 BNE TAG1
176 ENABL$
177 BR TAG
178 TAG1:
179 .IFF
180 BEQ TAG2+2
181 .ENDC
182 MOV @R4,OFFSET(R5)
183 BNE TAG2
184 MOV R5,OFFSET+2(R5)
185 .IIF NB <OFFSET>, ADD #OFFSET,OFFSET+2(R5)
186 TAG2: CLR @R4
187 ENABL$
188 .ENDM DEQ$
189
190
191 .MACRO ENQ$ OFFSET
192 INHIB$
193 CLR @R4
194 MOV R4,@OFFSET+2(R5)
195 MOV R4,OFFSET+2(R5)
196 ENABL$
197 .ENDM ENQ$
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 9
CR11 DRIVER CONSTANTS
199 .SBTTL CR11 DRIVER CONSTANTS
200
201
202 000000 NUL = 0
203 000001 SOH = 1
204 000002 STX = 2
205 000003 ETX = 3
206 000004 EOT = 4
207 000005 ENQ = 5
208 000006 ACK = 6
209 000007 BEL = 7
210 000010 BS = 10
211 000011 HT = 11
212 000012 LF = 12
213 000013 VT = 13
214 000014 FF = 14
215 000015 CR = 15
216 000016 SO = 16
217 000017 SI = 17
218 000020 DLE = 20
219 000021 DC1 = 21
220 000022 DC2 = 22
221 000023 DC3 = 23
222 000024 DC4 = 24
223 000025 NAK = 25
224 000026 SYN = 26
225 000027 ETB = 27
226 000030 CAN = 30
227 000031 EM = 31
228 000032 SUB = 32
229 000033 ESC = 33
230 000034 FS = 34
231 000035 GS = 35
232 000036 RS = 36
233 000037 US = 37
234 000040 SPA = 40
235 000177 DEL = 177
236 000334 ERRCHR = '\!200 ; DEC STD ERROR CHARACTER
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 10
HOLLERITH - ASCII CONVERSION TABLES
238 .SBTTL HOLLERITH - ASCII CONVERSION TABLES
239
240 ; CONVERSION IS ZONE ORIENTED
241 ; ZONE LABELS ARE CONSTRUCTED BY APPENDING TO "ZON"
242 ; THE OCTAL CODE FOR CARD ZONES(ROWS)
243 ; ZONE 12 = 20
244 ; ZONE 11 = 10
245 ; ZONE 0 = 4
246 ; ZONE 9 = 2
247 ; ZONE 8 = 1
248
249 000000 ZON0: ;NO ZONE PUNCHES
250 000000 040 .BYTE 40 ;NO ROW PUNCHES
251 000001 061 .BYTE '1 ;ROW 1
252 000002 062 .BYTE '2 ;ROW 2
253 000003 063 .BYTE '3 ;ROW 3
254 000004 064 .BYTE '4 ;ROW 4
255 000005 065 .BYTE '5 ;ROW 5
256 000006 066 .BYTE '6 ;ROW 6
257 000007 067 .BYTE '7 ;ROW 7
258
259 000010 ZON20: ;ZONE 12
260 000010 046 .BYTE '& ;NO ROW PUNCHES
261 000011 101 .BYTE 'A ;ROW 1
262 000012 102 .BYTE 'B ;ROW 2
263 000013 103 .BYTE 'C ;ROW 3
264 000014 104 .BYTE 'D ;ROW 4
265 000015 105 .BYTE 'E ;ROW 5
266 000016 106 .BYTE 'F ;ROW 6
267 000017 107 .BYTE 'G ;ROW 7
268
269 000020 ZON10: ;ZONE 11
270 000020 055 .BYTE '- ;NO ROW PUNCHES
271 000021 112 .BYTE 'J ;ROW 1
272 000022 113 .BYTE 'K ;ROW 2
273 000023 114 .BYTE 'L ;ROW 3
274 000024 115 .BYTE 'M ;ROW 4
275 000025 116 .BYTE 'N ;ROW 5
276 000026 117 .BYTE 'O ;ROW 6
277 000027 120 .BYTE 'P ;ROW 7
278
279 000030 ZON4: ;ZONE 0
280 000030 060 .BYTE '0 ;NO ROW PUNCHES
281 000031 057 .BYTE '/ ;ROW 1
282 000032 123 .BYTE 'S ;ROW 2
283 000033 124 .BYTE 'T ;ROW 3
284 000034 125 .BYTE 'U ;ROW 4
285 000035 126 .BYTE 'V ;ROW 5
286 000036 127 .BYTE 'W ;ROW 6
287 000037 130 .BYTE 'X ;ROW 7
288
289 000040 ZON1: ;ZONE 8
290 000040 070 .BYTE '8 ;NO ROW PUNCHES
291 000041 140 .BYTE 140 ;ROW 1
292 000042 072 .BYTE ': ;ROW 2
293 000043 043 .BYTE '# ;ROW 3
294 000044 100 .BYTE '@ ;ROW 4
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 10-1
HOLLERITH - ASCII CONVERSION TABLES
295 000045 047 .BYTE '' ;ROW 5
296 000046 075 .BYTE '= ;ROW 6
297 000047 042 .BYTE '" ;ROW 7
298
299 000050 ZON2: ;ZONE 9
300 000050 071 .BYTE '9 ;NO ROW PUNCHES
301 000051 334 .BYTE ERRCHR ;ROW 1
302 000052 026 .BYTE SYN ;ROW 2
303 000053 334 .BYTE ERRCHR ;ROW 3
304 000054 334 .BYTE ERRCHR ;ROW 4
305 000055 334 .BYTE ERRCHR ;ROW 5
306 000056 334 .BYTE ERRCHR ;ROW 6
307 000057 004 .BYTE EOT ;ROW 7
308
309 000060 ZON30: ;ZONE 12-11
310 000060 174 .BYTE '| ;NO ROW PUNCHES
311 000061 152 .BYTE 'j ;ROW 1
312 000062 153 .BYTE 'k ;ROW 2
313 000063 154 .BYTE 'l ;ROW 3
314 000064 155 .BYTE 'm ;ROW 4
315 000065 156 .BYTE 'n ;ROW 5
316 000066 157 .BYTE 'o ;ROW 6
317 000067 160 .BYTE 'p ;ROW 7
318
319 000070 ZON24: ;ZONE 12-0
320 000070 173 .BYTE '{ ;NO ROW PUNCHES
321 000071 141 .BYTE 'a ;ROW 1
322 000072 142 .BYTE 'b ;ROW 2
323 000073 143 .BYTE 'c ;ROW 3
324 000074 144 .BYTE 'd ;ROW 4
325 000075 145 .BYTE 'e ;ROW 5
326 000076 146 .BYTE 'f ;ROW 6
327 000077 147 .BYTE 'g ;ROW 7
328
329 000100 ZON21: ;ZONE 12-8
330 000100 110 .BYTE 'H ;NO ROW PUNCHES
331 000101 334 .BYTE ERRCHR ;ROW 1
332 000102 133 .BYTE '[ ;ROW 2
333 000103 056 .BYTE '. ;ROW 3
334 000104 074 .BYTE '< ;ROW 4
335 000105 050 .BYTE '( ;ROW 5
336 000106 053 .BYTE '+ ;ROW 6
337 000107 041 .BYTE '! ;ROW 7
338
339 000110 ZON22: ;ZONE 12-9
340 000110 111 .BYTE 'I ;NO ROW PUNCHES
341 000111 001 .BYTE SOH ;ROW 1
342 000112 002 .BYTE STX ;ROW 2
343 000113 003 .BYTE ETX ;ROW 3
344 000114 334 .BYTE ERRCHR ;ROW 4
345 000115 011 .BYTE HT ;ROW 5
346 000116 334 .BYTE ERRCHR ;ROW 6
347 000117 177 .BYTE DEL ;ROW 7
348
349 000120 ZON14: ;ZONE 11-0
350 000120 175 .BYTE '} ;NO ROW PUNCHES
351 000121 176 .BYTE '~ ;ROW 1
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 10-2
HOLLERITH - ASCII CONVERSION TABLES
352 000122 163 .BYTE 's ;ROW 2
353 000123 164 .BYTE 't ;ROW 3
354 000124 165 .BYTE 'u ;ROW 4
355 000125 166 .BYTE 'v ;ROW 5
356 000126 167 .BYTE 'w ;ROW 6
357 000127 170 .BYTE 'x ;ROW 7
358
359 000130 ZON11: ;ZONE 11-8
360 000130 121 .BYTE 'Q ;NO ROW PUNCHES
361 000131 334 .BYTE ERRCHR ;ROW 1
362 000132 135 .BYTE '] ;ROW 2
363 000133 044 .BYTE '$ ;ROW 3
364 000134 052 .BYTE '* ;ROW 4
365 000135 051 .BYTE ') ;ROW 5
366 000136 073 .BYTE '; ;ROW 6
367 000137 136 .BYTE '^ ;ROW 7
368
369 000140 ZON12: ;ZONE 11-9
370 000140 122 .BYTE 'R ;NO ROW PUNCHES
371 000141 021 .BYTE DC1 ;ROW 1
372 000142 022 .BYTE DC2 ;ROW 2
373 000143 023 .BYTE DC3 ;ROW 3
374 000144 334 .BYTE ERRCHR ;ROW 4
375 000145 334 .BYTE ERRCHR ;ROW 5
376 000146 010 .BYTE BS ;ROW 6
377 000147 334 .BYTE ERRCHR ;ROW 7
378
379 000150 ZON5: ;ZONE 0-8
380 000150 131 .BYTE 'Y ;NO ROW PUNCHES
381 000151 334 .BYTE ERRCHR ;ROW 1
382 000152 134 .BYTE '\ ;ROW 2
383 000153 054 .BYTE ', ;ROW 3
384 000154 045 .BYTE '% ;ROW 4
385 000155 137 .BYTE '_ ;ROW 5
386 000156 076 .BYTE '> ;ROW 6
387 000157 077 .BYTE '? ;ROW 7
388 000160 ZON6: ;ZONE 0-9
389 000160 132 .BYTE 'Z ;NO ROW PUNCHES
390 000161 334 .BYTE ERRCHR ;ROW 1
391 000162 334 .BYTE ERRCHR ;ROW 2
392 000163 334 .BYTE ERRCHR ;ROW 3
393 000164 334 .BYTE ERRCHR ;ROW 4
394 000165 012 .BYTE LF ;ROW 5
395 000166 027 .BYTE ETB ;ROW 6
396 000167 033 .BYTE ESC ;ROW 7
397
398 000170 ZON3: ;ZONE 9-8
399 000170 334 .BYTE ERRCHR ;NO ROW PUNCHES
400 000171 334 .BYTE ERRCHR ;ROW 1
401 000172 334 .BYTE ERRCHR ;ROW 2
402 000173 334 .BYTE ERRCHR ;ROW 3
403 000174 024 .BYTE DC4 ;ROW 4
404 000175 025 .BYTE NAK ;ROW 5
405 000176 334 .BYTE ERRCHR ;ROW 6
406 000177 032 .BYTE SUB ;ROW 7
407
408 000200 ZON23: ;ZONE 12-9-8
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 10-3
HOLLERITH - ASCII CONVERSION TABLES
409 000200 334 .BYTE ERRCHR ;NO ROW PUNCHES
410 000201 334 .BYTE ERRCHR ;ROW 1
411 000202 334 .BYTE ERRCHR ;ROW 2
412 000203 013 .BYTE VT ;ROW 3
413 000204 014 .BYTE FF ;ROW 4
414 000205 015 .BYTE CR ;ROW 5
415 000206 016 .BYTE SO ;ROW 6
416 000207 017 .BYTE SI ;ROW 7
417
418 000210 ZON13: ;ZONE 11-9-8
419 000210 030 .BYTE CAN ;NO ROW PUNCHES
420 000211 031 .BYTE EM ;ROW 1
421 000212 334 .BYTE ERRCHR ;ROW 2
422 000213 334 .BYTE ERRCHR ;ROW 3
423 000214 034 .BYTE FS ;ROW 4
424 000215 035 .BYTE GS ;ROW 5
425 000216 036 .BYTE RS ;ROW 6
426 000217 037 .BYTE US ;ROW 7
427
428 000220 ZON7: ;ZONE 0-9-8
429 000220 334 .BYTE ERRCHR ;NO ROW PUNCHES
430 000221 334 .BYTE ERRCHR ;ROW 1
431 000222 334 .BYTE ERRCHR ;ROW 2
432 000223 334 .BYTE ERRCHR ;ROW 3
433 000224 334 .BYTE ERRCHR ;ROW 4
434 000225 005 .BYTE ENQ ;ROW 5
435 000226 006 .BYTE ACK ;ROW 6
436 000227 007 .BYTE BEL ;ROW 7
437
438 000230 ZON25: ;ZONE 12-0-8
439 000230 150 .BYTE 'h ;NO ROW PUNCHES
440 000231 334 .BYTE ERRCHR ;ROW 1
441 000232 334 .BYTE ERRCHR ;ROW 2
442 000233 334 .BYTE ERRCHR ;ROW 3
443 000234 334 .BYTE ERRCHR ;ROW 4
444 000235 334 .BYTE ERRCHR ;ROW 5
445 000236 334 .BYTE ERRCHR ;ROW 6
446 000237 334 .BYTE ERRCHR ;ROW 7
447
448 000240 ZON26: ;ZONE 12-0-9
449 000240 151 .BYTE 'i ;NO ROW PUNCHES
450 000241 334 .BYTE ERRCHR ;ROW 1
451 000242 334 .BYTE ERRCHR ;ROW 2
452 000243 334 .BYTE ERRCHR ;ROW 3
453 000244 334 .BYTE ERRCHR ;ROW 4
454 000245 334 .BYTE ERRCHR ;ROW 5
455 000246 334 .BYTE ERRCHR ;ROW 6
456 000247 334 .BYTE ERRCHR ;ROW 7
457
458 000250 ZON31: ;ZONE 12-11-8
459 000250 161 .BYTE 'q ;NO ROW PUNCHES
460 000251 334 .BYTE ERRCHR ;ROW 1
461 000252 334 .BYTE ERRCHR ;ROW 2
462 000253 334 .BYTE ERRCHR ;ROW 3
463 000254 334 .BYTE ERRCHR ;ROW 4
464 000255 334 .BYTE ERRCHR ;ROW 5
465 000256 334 .BYTE ERRCHR ;ROW 6
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 10-4
HOLLERITH - ASCII CONVERSION TABLES
466 000257 334 .BYTE ERRCHR ;ROW 7
467
468 000260 ZON32: ;ZONE 12-11-9
469 000260 162 .BYTE 'r ;NO ROW PUNCHES
470 000261 334 .BYTE ERRCHR ;ROW 1
471 000262 334 .BYTE ERRCHR ;ROW 2
472 000263 334 .BYTE ERRCHR ;ROW 3
473 000264 334 .BYTE ERRCHR ;ROW 4
474 000265 334 .BYTE ERRCHR ;ROW 5
475 000266 334 .BYTE ERRCHR ;ROW 6
476 000267 334 .BYTE ERRCHR ;ROW 7
477
478 000270 ZON15: ;ZONE 11-0-8
479 000270 171 .BYTE 'y ;NO ROW PUNCHES
480 000271 334 .BYTE ERRCHR ;ROW 1
481 000272 334 .BYTE ERRCHR ;ROW 2
482 000273 334 .BYTE ERRCHR ;ROW 3
483 000274 334 .BYTE ERRCHR ;ROW 4
484 000275 334 .BYTE ERRCHR ;ROW 5
485 000276 334 .BYTE ERRCHR ;ROW 6
486 000277 334 .BYTE ERRCHR ;ROW 7
487
488 000300 ZON16: ;ZONE 11-0-9
489 000300 172 .BYTE 'z ;NO ROW PUNCHES
490 000301 334 .BYTE ERRCHR ;ROW 1
491 000302 334 .BYTE ERRCHR ;ROW 2
492 000303 334 .BYTE ERRCHR ;ROW 3
493 000304 334 .BYTE ERRCHR ;ROW 4
494 000305 334 .BYTE ERRCHR ;ROW 5
495 000306 334 .BYTE ERRCHR ;ROW 6
496 000307 334 .BYTE ERRCHR ;ROW 7
497
498 000310 ZON33: ;ZONE 12-11-9-8
499 000310 334 .BYTE ERRCHR ;NO ROW PUNCHES
500 000311 020 .BYTE DLE ;ROW 1
501 000312 334 .BYTE ERRCHR ;ROW 2
502 000313 334 .BYTE ERRCHR ;ROW 3
503 000314 334 .BYTE ERRCHR ;ROW 4
504 000315 334 .BYTE ERRCHR ;ROW 5
505 000316 334 .BYTE ERRCHR ;ROW 6
506 000317 334 .BYTE ERRCHR ;ROW 7
507
508 000320 ZON27: ;ZONE 12-0-9-8
509 000320 334 .BYTE ERRCHR ;NO ROW PUNCHES
510 000321 000 .BYTE NUL ;ROW 1
511 000322 334 .BYTE ERRCHR ;ROW 2
512 000323 334 .BYTE ERRCHR ;ROW 3
513 000324 334 .BYTE ERRCHR ;ROW 4
514 000325 334 .BYTE ERRCHR ;ROW 5
515 000326 334 .BYTE ERRCHR ;ROW 6
516 000327 334 .BYTE ERRCHR ;ROW 7
517
518 .EVEN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 11
HOLLERITH - ASCII CONVERSION TABLES
520 ; * ZONE INDEX TABLE
521
522 000330 ZONTAB:
523 000000 $$=0
524 000040 .REPT 32.
525 .IRP Z,\$$
526 .IF DF, ZON'Z
527 .WORD ZON'Z
528 .IFF
529 .WORD 0
530 .ENDC
531 .ENDM
532 $$=$$+1
533 .ENDR
534
535
536
537 ; * ZTAB IS INDEXED BY Z1-Z7 CODE FOR PUNCH BIT.
538 ; LO BYTE IS ZONE PUNCH MASK, HI BYTE IS ZONE CODE SHIFTED FOR AUG COL
539 000430 000 000 ZTAB: .BYTE 0,0 ; NO PUNCHES
540 000432 100 020 .BYTE 100,1*20 ; ZONE 1
541 000434 040 040 .BYTE 40,2*20 ; ZONE 2
542 000436 020 060 .BYTE 20,3*20 ; ZONE 3
543 000440 010 100 .BYTE 10,4*20 ; ZONE 4
544 000442 004 120 .BYTE 4,5*20 ; ZONE 5
545 000444 002 140 .BYTE 2,6*20 ; ZONE 6
546 000446 001 160 .BYTE 1,7*20 ; ZONE 7
547 .EVEN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 12
DISPATCH TABLES
549 .SBTTL DISPATCH TABLES
550
551 ;+
552 ; MCB INCOMING DISPATCH
553 ;-
554
555 ; * MAIN ENTRY POINT DLC DISPATCH TABLE
556 000450 000600' $CRTB:: .WORD CRNURD ; FC.XME - NURD MESSAGE ENTRY (TRANSMIT ENABLE)
557 000452 005242' .WORD CRDLRE ; FC.RCE - RECEIVE (RESOURCE RETURN)
558 000454 000472' .WORD CRASH ; FC.KIL - KILL
559 000456 000474' .WORD CRCTL ; FC.CTL - CONTROL ENABLE
560 000460 005042' .WORD CRTIM ; FC.TIM - DLC TIMEOUT
561 000462 000472' .WORD CRASH ; FC.XCP - TRANSMIT COMPLETE
562 000464 000472' .WORD CRASH ; FC.RCP - RECEIVE COMPLETE
563 000466 000472' .WORD CRASH ; FC.KCP - KILL COMPLETE
564 000470 000532' .WORD CRCCP ; FC.CCP - CONTROL COMPLETE
565 000022 FNCOTR = . - $CRTB
566
567 000472 000004 CRASH: IOT ; DIE IGNOMINEOUSLY
568
569
570 ; * CONTROL ENABLE DISPATCH
571
572 000474 CRCTL: CALLR @1$(R3)
573 000500 000472' 1$: .WORD CRASH ; FS.INI
574 000502 005314' .WORD CTLSTR ; FS.STR(OPEN)
575 000504 005544' .WORD CTLSTP ; FS.STP(CLOSE)
576 000506 000472' .WORD CRASH ; FS.TRM
577 000510 000472' .WORD CRASH
578 000512 000472' .WORD CRASH ; FS.SET
579 000514 000472' .WORD CRASH ; FS.GET
580 000516 000472' .WORD CRASH ; NT$XON
581 000520 000472' .WORD CRASH ; NT$XOF
582 000522 000560' .WORD NRMACK ; FS.RNG NRM
583 000524 000560' .WORD NRMACK ; FS.ENB NRM
584 000526 000560' .WORD NRMACK ; FS.DIS NRM
585 000530 000560' .WORD NRMACK ; FS.MSN NRM
586
587
588 000532 CRCCP: CALLR @1$(R3)
589 000536 000472' 1$: .WORD CRASH ; FS.INI
590 000540 000472' .WORD CRASH ; FS.STR(OPEN)
591 000542 000472' .WORD CRASH ; FS.STP(CLOSE)
592 000544 000472' .WORD CRASH ; FS.TRM
593 000546 000472' .WORD CRASH
594 000550 000472' .WORD CRASH ; FS.SET
595 000552 000472' .WORD CRASH ; FS.GET
596 000554 006652' .WORD CRXON ; NT$XON
597 000556 006640' .WORD CRXOF ; NT$XOF
598
599 000560 NRMACK: $TOBDM CT,#1 ; RETURN SUC
600 000576 RETURN ; ...
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 13
NRD INTERPROCESS COMMUNICATION CONVENTIONS
602 .SBTTL NRD INTERPROCESS COMMUNICATION CONVENTIONS
603
604
605 ; NURD INTERFACE PROTOCOL
606 ;
607 ; USER INITIATED:
608 ;
609 ; FC.RCP,NT$DAT FC.XME,NT$DAT
610 ; USER/NSP ------------->NRD ------------->DLC (NON INTERRUPT)
611 ; <------------- NRD<------------- DLC
612 ; FC.RCE,NT$RTN FC.XCP,NT$DAT
613 ;
614 ;
615 ; FC.RCP,NT$INT FC.XME,NT$INT
616 ; USER/NSP ------------->NRD ------------->DLC (INTERRUPT)
617 ; <------------- NRD<------------- DLC
618 ; FC.RCE,NT$RTI FC.XCP,NT$INT DLC
619 ;
620 ;
621 ; DLC INITIATED:
622 ;
623 ; FC.XME,NT$DAT FC.RCP,NT$DAT
624 ; USER/NSP<------------- NRD<------------- DLC (NON INTERRUPT)
625 ; ------------->NRD ------------->DLC
626 ; FC.XCP,NT$DAT FC.RCE,NT$DAT
627 ;
628 ; FC.XME,NT$INT FC.RCP,NT$INT
629 ; USER/NSP<------------- NRD<------------- DLC (INTERRUPT)
630 ; ------------->NRD ------------->DLC
631 ; FC.XCP,NT$INT FC.RCE,NT$INT
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 14
NURD MESSAGE DECODER
633 .SBTTL NURD MESSAGE DECODER
634
635 ;+
636 ; DISPATCH BASED ON THE TYPE OF NURD MESSAGE CONNECTED
637 ; TO THE CURRENT CCB (CHAIN), WHICH CONSISTS OF BUT A SINGLE MSG
638 ;
639 ; INPUTS: R4 - POINTS TO CCB (CHAIN)
640 ; R5 - POINTS TO PROPER DEVICE LINE TABLE
641 ; OUTPUTS: THIS DISPATCHES TO PROPER NURD MESSAGE HANDLER, OR RETURNS
642 ; AN ERROR IF TYPE ILLEGAL OR OUT OF RANGE.
643 ; REGISTERS ARE NOT PRESERVED.
644 ; THE CALLED ROUTINE IS RESPONSIBLE FOR QUEUING
645 ; MESSAGES TO BE RETURNED TO THE HIGHER LEVEC.
646 ;
647 ; MSG FORMAT: <MSGTYPE><MSGFLGS><MSGTXT.....>
648 ;-
649
650 000600 032765 000001 000050 CRNURD: BIT #CA.CLO,C.ASTS(R5) ; DEVICE CLOSED?
651 000606 001037 BNE 62$ ; YES, HENCE INACCESSIBLE
652 000610 MAP C.BUF(R4) ; GET MAPPING
653 000616 016400 000016 MOV C.BUF+2(R4),R0 ; POINT TO CCB DATA BUFFER
654 000622 111001 MOVB (R0),R1 ; GET NURD MESSAGE TYPE
655 000624 042701 177760 BIC #^C<NM.TYP>,R1 ; ISOLATE JUST MESSAGE TYPE
656 000630 020127 000006 CMP R1,#NRDOTR ; TYPE OUT OF RANGE?
657 000634 103402 BLO 30$ ; NO, OKAY TO DISPATCH
658 000636 012701 000006 MOV #NRDOTR,R1 ; YES, SPECIFY ILLEGAL NURD HANDLER
659 000642 006301 30$: ASL R1 ; GET WORD OFFSET
660 000644 CALLR @40$(R1) ; DISPATCH TO MESSAGE PROCESSOR
661
662 000650 000666' 40$: .WORD 50$ ; 0 - DATA MESSAGE
663 000652 000666' .WORD 50$ ; 1 - ATTENTION (ILLEGAL IF REC'D)
664 000654 000726' .WORD QTODLC ; 2 - FEATURES MESSAGE
665 000656 003260' .WORD CONTRL ; 3 - CONTROL MESSAGE
666 000660 000666' .WORD 50$ ; 4 - ALERT (ILLEGAL IF REC'D)
667 000662 000666' .WORD 50$ ; 5 - CAPABILITIES (ILLEGAL IF REC'D)
668 000006 NRDOTR = <.-40$>/2
669 000664 000666' .WORD 50$ ; N - ILLEGAL NURD TYPE SPEC
670 ; STATE OF REGISTERS AT POINT OF CALL:
671 ; R0 - POINTS TO NURD MESSAGE TYPE BYTE
672 ; R1 - HAS DISPATCH INDEX
673 ; R2, R3 - UNSPECIFIED
674 ; R4, R5 - AS UNDER "INPUTS" ABOVE
675 ; R0-R3 ARE AVAILABLE FOR USE BY
676 ; CALLED ROUTINE WITHOUT RESTRICTION
677
678 000666 50$: $TOBDM XM,#LS.ILM ; ZING IT BACK
679 000704 RETURN
680 000706 62$: $TOBDM XM,#LS.ABO ; RETURN DATA MSG VIA $XMCMP
681 000724 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 15
QUEUE UP INCOMING NURD DATA AND FEATURES
683 .SBTTL QUEUE UP INCOMING NURD DATA AND FEATURES
684
685 ;+
686 ; QUEUE UP FOLLOWING NURD MSG TYPES:
687 ; DATA
688 ; FEATURES
689 ; R4/CCB TO QUEUE
690 ; R5/DLT
691 ;-
692
693 000726 032765 000010 000050 QTODLC: BIT #CA.ABO,C.ASTS(R5) ; CHECK FOR ABORT STATE
694 000734 001405 BEQ QDLC ; OK TO PROCEED
695 000736 012764 000100 000012 MOV #CS.ABO,C.STS(R4) ; DROP DATA ON THE FLOOR
696 000744 CALLR NRDRET
697
698 000750 010403 QDLC: MOV R4,R3 ; COPY TOP CCB POINTER
699 000752 011302 10$: MOV (R3),R2 ; FOLLOW CCB CHAIN
700 000754 001402 BEQ 20$ ; TO NULL LINK
701 000756 010203 MOV R2,R3 ; TO GET FULL MSG
702 000760 000774 BR 10$ ;
703
704 000762 010475 000074 20$: MOV R4,@C.DLCQ+2(R5) ; LINK CHAIN TO END OF CURRENT QUEUE
705 000766 010365 000074 MOV R3,C.DLCQ+2(R5) ; SET NEW END OF QUEUE
706 000772 020465 000072 CMP R4,C.DLCQ(R5) ; NEW CHAIN AT HEAD OF QUEUE?
707 000776 001032 BNE 60$ ; NO, ROUTINES OF INTEREST ARE WORKING
708 001000 122765 000001 000126 CMPB #DWAKS,C.DWAK(R5) ; YES - CHECK IF THIS IS DESIRED WAKE CONDITION
709 001006 001002 BNE 30$ ; NO
710 001010 CALLR DFWAKE ; GO WAKE THE PROCESS
711
712 001014 010665 000130 30$: MOV SP,C.DFSP(R5) ; SET THE STACK ORIGIN FOR THIS PROCESS
713 001020 CALL GB ; EXTRACT MSG TYPE
714 001024 010001 MOV R0,R1
715 001026 CALL GB ; EXTRACT MSG FLAGS
716 001032 010065 000076 MOV R0,C.MFLG(R5)
717 001036 122701 000003 CMPB #NM.CTL,R1 ; DISTINGUISH CONTROL AND FEATURES
718 001042 001003 BNE 40$ ; FEATURES
719 001044 CALL CONSYN ; NON-INTERRUPT CONTROL
720 001050 000402 BR 50$
721
722 001052 40$: CALL FEATRS ; FEATURES
723 001056 016504 000072 50$: MOV C.DLCQ(R5),R4 ; GET NEXT MSG
724 001062 001354 BNE 30$ ; MORE
725 001064 60$: RETURN ; EXIT
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 16
DATA/FEATURES HYBER FUNCTION
727 .SBTTL DATA/FEATURES HYBER FUNCTION
728
729 ;+
730 ; CALLED BY PROCESS TO WAIT FOR A NEW DAY. INTERRUPTS HAVE BEEN DISABLED.
731 ; C.DWAK HAS BEEN SET TO WAKE CONDITION, CONTEXT WILL NOW BE SAVED.
732 ;-
733
734 001066 010065 000132 DFSLEP: MOV R0,C.DTXT(R5) ; STORE THE REGISTERS 1ST
735 001072 012700 000134 MOV #C.DTXT+2,R0
736 001076 060500 ADD R5,R0 ; R0 -> R1 SLOT
737 001100 010120 MOV R1,(R0)+
738 001102 010220 MOV R2,(R0)+
739 001104 010320 MOV R3,(R0)+
740 001106 010420 MOV R4,(R0)+
741 001110 105065 000127 CLRB C.DTXL(R5) ; INIT THE COUNT
742
743 001114 122765 000013 000127 10$: CMPB #DTXTSZ-5,C.DTXL(R5) ; CHECK INCIPIENT OVERFLOW
744 001122 101001 BHI 20$
745 001124 CRASH ; PROGRAM BUG
746 001126 012620 20$: MOV (SP)+,(R0)+ ; XFER NEXT STACK WORD
747 001130 105265 000127 INCB C.DTXL(R5) ; COUNT IT
748 001134 026506 000130 CMP C.DFSP(R5),SP ; CHECK ORIGIN
749 001140 001365 BNE 10$ ; MORE
750 001142 142765 000200 000126 BICB #200,C.DWAK(R5) ; ENABLE WAKE CONDITION
751 001150 RETURN ; DONE - START THE DEVICE IF IT WAS GOING
752 ; AND EXIT TO ORIGINAL CALLER
753
754 ; * COME HERE WHEN WAKE CONDITION HAS BEEN MET, SP IS NEW STACK ORIGIN
755 001152 105065 000126 DFWAKE: CLRB C.DWAK(R5) ; FLUSH THE WAKE CONDITION
756 001156 005000 CLR R0
757 001160 156500 000127 BISB C.DTXL(R5),R0 ; GET THE NO. OF WORDS TO RETURN TO STACK
758 001164 006300 ASL R0
759 001166 062700 000144 ADD #C.DTXT+12,R0
760 001172 060500 ADD R5,R0 ; R0 -> 1ST WOD TO RETURN TO STACK
761 001174 010665 000130 MOV SP,C.DFSP(R5) ; SET THE NEW STACK ORIGIN
762
763 001200 014046 10$: MOV -(R0),-(SP) ; XFER THE STACK CONTENTS
764 001202 105365 000127 DECB C.DTXL(R5) ; COUNT THEM
765 001206 001374 BNE 10$
766
767 001210 014004 MOV -(R0),R4 ; RESTORE THE REGISTERS
768 001212 014003 MOV -(R0),R3
769 001214 014002 MOV -(R0),R2
770 001216 014001 MOV -(R0),R1
771 001220 014000 MOV -(R0),R0
772 001222 RETURN ; RETURN TO ORIGINAL CALLER OF DFSLEP
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 17
GET AND PUT DATA BYTES
774 .SBTTL GET AND PUT DATA BYTES
775
776 ;+
777 ; USED BY "DATA" AND BY "FEATRS".
778 ; A FEATRS MSG IS SHUFFLED THRU DDM (AS AN EMPTY BUFFER) SO THAT
779 ; IT IS RETURNED IN THE SAME SEQUENCE RELATIVE TO DATA THAT IT
780 ; WAS RECEIVED.
781 ;-
782
783 001224 005365 000106 GB: DEC C.DMBS(R5) ; DECREMENT COUNTER
784 001230 002411 BLT 5$ ; BUFFER EMPTIED ALREADY
785 001232 MAP C.DMAD(R5) ; MAP IF NEED BE
786 001240 005000 CLR R0
787 001242 157500 000104 BISB @C.DMAD+2(R5),R0 ; GET BYTE FROM PHYSICAL BUFFER
788 001246 005265 000104 INC C.DMAD+2(R5) ; INCREMENT POINTER
789 001252 RETURN
790
791 001254 005765 000104 5$: TST C.DMAD+2(R5) ; IS A BUFFER IN PROCESS?
792 001260 001421 BEQ 10$ ; NO BUF IN USE
793 001262 016504 000072 MOV C.DLCQ(R5),R4 ; CHECK FOR MSG CONTINUITY
794 001266 032764 000100 000012 BIT #NT.EOM,C.STS(R4)
795 001274 001403 BEQ 9$
796 001276 052765 000004 000050 BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
797 001304 9$: CALL GBDQ ; EMPTIED BUF ON TOP
798 001310 032700 000100 BIT #NT.EOM,R0 ; CHECK STATUS OF MSG DEQUEUED
799 001314 001403 BEQ 10$
800 001316 016506 000130 MOV C.DFSP(R5),SP ; GET THE STACK ORIGIN BACK SO CAN QUIT
801 001322 RETURN ; EXIT
802
803 001324 016504 000072 10$: MOV C.DLCQ(R5),R4 ; IS THERE A QUEUED ENTRY?
804 001330 001006 BNE 15$ ; YES, SET UP POINTER AND COUNTER
805 001332 DFHYBER DWAKS ; WAIT TIL NEXT SEGMENT ARRIVES
806 001344 000767 BR 10$
807
808 001346 016465 000014 000102 15$: MOV C.BUF(R4),C.DMAD(R5) ; GET ADDRESS DOUBLEWORD AS PTR
809 001354 016465 000016 000104 MOV C.BUF+2(R4),C.DMAD+2(R5)
810 001362 016465 000020 000106 MOV C.CNT(R4),C.DMBS(R5) ; GET BUFFER COUNT AS SIZE COUNTER
811 001370 000715 BR GB ; TRY AGAIN
812
813 ; * EXTERNAL ENTRY TO FORCE DEQUEUE
814 001372 005065 000104 GBDQ: CLR C.DMAD+2(R5) ; INDICATE "NO BUFFER IN USE"
815 001376 005065 000106 CLR C.DMBS(R5)
816 001402 DEQ$ C.DLCQ ; DEQUEUE MSG JUST DONE
817 001450 PUSH C.STS(R4) ; SAVE MSG STAUS
818 001454 CALL NRDACK ; AND ACK IT
819 001460 POP R0 ; RETURN MSG STATUS
820 001462 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 18
NURD FEATURES MESSAGE HANDLERS
822 .SBTTL NURD FEATURES MESSAGE HANDLERS
823
824 ;+
825 ; FEATURE MSG FORMAT:
826 ; <SEQ NO.><NO. FEATURE SPECS><...FEATURE SPECS...>
827 ;
828 ; FEATURE SPEC FORMAT:
829 ; <FEATURE ID><FEATURE FLAGS><CLASS><RESPONSE>[<FEATURE DATA>]
830 ;
831 ; FEATURE DATA FORMAT:
832 ; <CNT><...DATA...>
833 ;
834 ; NOTE: INCOMING MSG HAS ONLY 1 FEATURE SPEC.
835 ; BUFFER HAS BEEN SET UP, AND NURD TYPE AND FLAGS BYTES(1ST & 2ND BYTES)
836 ; HAVE BEEN EXTRACTED.
837 ;
838 ; R4/CCB AT TOP OF C.DLCQ
839 ; R5/DLT
840 ; KISAR6/ MAPPED TO DATA BUFFER
841 ;-
842 .ENABL LSB
843
844 001464 012700 000002 FEATRS: MOV #NM.FTR,R0 ; BEGIN A REPLY
845 001470 CALL MB ; INSERT NURD MSG TYPE
846 001474 005000 CLR R0
847 001476 CALL MB ; INSERT MSG FLAGS
848 001502 CALL GB ; GET SEQ NO.
849 001506 110065 000110 MOVB R0,C.DMSQ(R5)
850 001512 CALL MB ; SEND IT BACK
851 001516 CALL GB ; GET NO. FEATURE SPECS
852 001522 005000 CLR R0 ; BUT IGNORE IT
853 001524 110065 000100 MOVB R0,C.NFSP(R5) ; SAVE IT FOR SOMTHING
854 001530 CALL MB ; STUFF IT IN REPLY
855 001534 CALL GB ; GET FEATURE ID
856 001540 010002 MOV R0,R2
857 001542 CALL GB ; GET FEATURE FLAGS
858 001546 010001 MOV R0,R1
859 001550 CALL GB ; GET CLASS
860 001554 000301 SWAB R1
861 001556 050001 BIS R0,R1 ; R1/FLAGS,,CLASS
862
863 001560 CALL GB ; READ THE RESPONSE FIELD AND IGNORE IT
864
865 001564 105065 000077 CLRB C.CAPN(R5) ; INIT INDEX INTO CAPABILITIES LIST
866 001570 122702 000377 CMPB #FE.ALL,R2 ; CHECK FOR ALLNESS
867 001574 001036 BNE 30$ ; SINGLE FEATURE
868 001576 005002 CLR R2 ; INIT COMMON FID'S
869 001600 116565 000172 000077 MOVB C.CFET(R5),C.CAPN(R5) ; GET COUNT OF COMMON ENTRIES
870 001606 032701 000400 BIT #NF.CMD*400,R1 ; ALL FEATURES - CHECK READ/SET
871 001612 001403 BEQ 10$ ; READ - CONTINUE
872 001614 122701 000002 CMPB #FC.SST,R1 ; SET - CHECK SET TO STD
873 001620 001071 BNE FERERR ; NO - ILLEGAL COMBINATION
874
875 001622 105202 10$: INCB R2 ; ADVANCE THRU LIST
876 001624 100410 BMI 15$ ; GRUBBLING THRU DEVICE FEATURES
877 001626 120265 000077 CMPB R2,C.CAPN(R5) ; CHECK RANGE
878 001632 101413 BLOS 20$ ; OK
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 18-1
NURD FEATURES MESSAGE HANDLERS
879 001634 116565 000204 000077 MOVB C.DFET(R5),C.CAPN(R5) ; INIT FOR DEVICE SPECFIC FEATURES
880 001642 012702 000201 MOV #201,R2
881 001646 010200 15$: MOV R2,R0 ; DEVICE FEATURE - HACK OFF SIGN
882 001650 042700 177600 BIC #^C177,R0
883 001654 120065 000077 CMPB R0,C.CAPN(R5) ; CHECK RANGE
884 001660 101022 BHI 70$ ; DONE
885 001662 20$: CALL FEFND ; LOOK IT UP
886 001666 103004 BCC 40$ ; SUPPORTED FEATURE
887 001670 000754 BR 10$ ; TRY NEXT ONE
888
889 001672 30$: CALL FEFND ; LOOK UP FEATURE
890 001676 103431 BCS FERUSF ; UNSUPPORTED FEATURE
891
892 ; * AT THIS POINT:
893 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
894 ; R2 HAS THE FEATURE ID (BYTE)
895 ; R3 POINTS TO THE FEATURE STATUS BYTE
896 ; R5 STILL POINTS TO THE DEVICE LINE TBL
897 ; C.DMSQ\SEQ NO.
898 ; C.NFSP\NO. SPECS
899
900 001700 132713 000040 40$: BITB #FB.CP,(R3) ; CHECK FOR CHANGE PENDING
901 001704 001042 BNE FERCPN ; CAN'T READ OR SET IF SO
902 001706 032701 000400 BIT #NF.CMD*400,R1 ; FEATURE READ OR FEATURE SET?
903 001712 001467 BEQ FREAD ; READ - GO PROCESS FEATURE READ
904 001714 CALLR FSET ; SET - GO PROCESS IN FEATURE SET
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 19
NURD FEATURES MESSAGE HANDLERS
906 001720 105765 000077 FEACON: TSTB C.CAPN(R5) ; CHECK FOR ALLNESS
907 001724 001336 BNE 10$ ; YES
908
909 001726 016504 000114 70$: MOV C.MSGQ(R5),R4 ; GET BEG OF MSG
910 001732 MAP C.BUF(R4)
911 001740 016400 000016 MOV C.BUF+2(R4),R0 ; GET THE PTR
912 001744 116560 000100 000003 MOVB C.NFSP(R5),N.NSPC(R0) ; SET IN THE FINAL SPEC COUNT
913 001752 CALL GBDQ ; RETURN ORIGNAL MSG TO NRD
914 001756 CALLR MBSND ; SEND OFF COMPLETED MSG
915
916
917 001762 FERUSF: PUSH #FR.USF
918 001766 000421 BR 200$
919 001770 FERBCL: PUSH #FR.BCL
920 001774 000416 BR 200$
921 001776 FERNST: PUSH #FR.NST
922 002002 000413 BR 200$
923 002004 FERERR: PUSH #FR.ERR
924 002010 000410 BR 200$
925 002012 FERCPN: PUSH #FR.CPN
926 002016 000405 BR 200$
927 002020 FERNEB: PUSH #FR.NEB
928 002024 000402 BR 200$
929 002026 FERDNP: PUSH #FR.DNP
930 002032 010200 200$: MOV R2,R0 ; INSERT <FID><FLAGS><CLASS><ERROR>
931 002034 CALL MB ; INSERT FID
932 002040 010100 MOV R1,R0
933 002042 000300 SWAB R0
934 002044 CALL MB ; INSERT FLAGS
935 002050 010100 MOV R1,R0
936 002052 CALL MB ; INSERT CLASS
937 002056 POP R0 ; GET ERROR CODE
938 002060 CALL MB ; INSERT RESP
939 002064 105265 000100 INCB C.NFSP(R5) ; COUNT THE SPEC
940 002070 000713 BR FEACON
941
942 .DSABL LSB
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 20
FEATURES READ
944 .SBTTL FEATURES READ
945
946 ;+
947 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
948 ; R2 HAS THE FEATURE ID (BYTE)
949 ; R3 POINTS TO THE FEATURE STATUS BYTE
950 ; R5 STILL POINTS TO THE DEVICE LINE TBL
951 ;
952 ; REPLY HAS BEEN FORMATTED THRU <NO. SPECS>
953 ; INSERT IN MSG:
954 ; <FID><FLGS><CLASS><RESP><DATA>
955 ;-
956
957 002072 010200 FREAD: MOV R2,R0
958 002074 CALL MB ; INSERT FID
959 002100 010100 MOV R1,R0 ; GET READ/SET BIT
960 002102 000300 SWAB R0
961 002104 042700 177776 BIC #^C<NF.CMD>,R0 ; NOW ISOLATED
962 002110 132713 000020 BITB #FB.SST,(R3) ; FEATURE SET TO STD?
963 002114 001402 BEQ 10$ ; NO
964 002116 052700 000002 BIS #NF.STD,R0 ; SET TO STD
965 002122 10$: CALL MB ; INSERT FLAGS
966 002126 105001 CLRB R1 ; SET FEATURE CLASS IN R1 (LO)
967 002130 132713 000001 BITB #FB.CL1,(R3) ; CHECK CLASS 1
968 002134 001402 BEQ 20$ ; TIS CLASS 0
969 002136 152701 000001 BISB #FC.CL1,R1 ; SET CLASS 1
970 002142 010100 20$: MOV R1,R0
971 002144 CALL MB ; INSERT CLASS
972
973 002150 005000 CLR R0
974 002152 CALL MB ; RESP - NO ERRORS
975
976 002156 105701 TSTB R1 ; CHECK CLASS FOR LENGTH OF DATA
977 002160 001406 BEQ 30$ ; 1 BIT
978 002162 132713 000006 BITB #FB.WRD!FB.STR,(R3) ; MORE THAN 1 BYTE ?
979 002166 001012 BNE 60$ ; YES
980 002170 005200 INC R0 ; COUNT = 1
981 002172 CALL MB ; INSERT COUNT
982
983 002176 116300 000001 30$: MOVB 1(R3),R0 ; COPY FEATURE TABLE DATA ENTRY
984 002202 40$: CALL MB ; INSERT DATA
985 002206 105265 000100 50$: INCB C.NFSP(R5) ; COUNT THE SPEC
986 002212 000642 BR FEACON ; CONTINUE FEATURE HACKING
987
988 ; * MULTIPLE BYTE VALUE
989 002214 132713 000004 60$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
990 002220 001015 BNE 70$ ; STRING
991 ; * WORD VALUE - F.FCV = DLT OFFSET TO WORD
992 002222 012700 000002 MOV #2,R0 ; 2 BYTE VALUE
993 002226 CALL MB ; INSERT CNT
994
995 002232 005000 CLR R0
996 002234 156300 000001 BISB F.FCV(R3),R0
997 002240 060500 ADD R5,R0
998 002242 011000 MOV (R0),R0 ; YES, READ THE SETTING FROM THE DLT
999 002244 CALL MB ; INSERT LO BYTE
1000 002250 000300 SWAB R0
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 20-1
FEATURES READ
1001 002252 000753 BR 40$ ; INSERT HI BYTE
1002
1003 ; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
1004 002254 005203 70$: INC R3 ; THIS DEPENDS ON F.FCV=1
1005 002256 112300 MOVB (R3)+,R0 ; GET THE LENGTH
1006 002260 CALL MB ; INSERT IN MSG
1007 002264 010004 MOV R0,R4 ; SAVE IT
1008 002266 112300 80$: MOVB (R3)+,R0 ; INSERT THE STRING IN MSG
1009 002270 CALL MB
1010 002274 105304 DECB R4 ; COUNT THE BYTE
1011 002276 001373 BNE 80$
1012 002300 000742 BR 50$
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 21
FEATURES SET
1014 .SBTTL FEATURES SET
1015
1016 ;+
1017 ; R1 HAS THE FEATURE MSG FLAGS WORD(HI) + CLASS(LO)
1018 ; R2 HAS THE FEATURE ID (BYTE)
1019 ; R3 POINTS TO THE FEATURE STATUS BYTE
1020 ; R5 STILL POINTS TO THE DEVICE LINE TBL
1021 ;
1022 ; REPLY HAS BEEN FORMATTED THRU <NO. SPECS=1>
1023 ;-
1024
1025 002302 122701 000002 FSET: CMPB #FC.SST,R1 ; CHECK STDNESS
1026 002306 001502 BEQ 40$ ; STD RESULT
1027 002310 132713 000100 BITB #FB.CA,(R3) ; REAL SET - CHECK IF SETABLE
1028 002314 001633 BEQ FERERR ; NO
1029 002316 111300 MOVB (R3),R0 ; FEATURE IS SETTABE
1030 002320 074100 XOR R1,R0 ; CHECK CLASS SPEC
1031 002322 042700 177776 BIC #^C<FB.CL1>,R0 ; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
1032 002326 001220 BNE FERBCL ; RESULT SHOULD BE 0
1033 002330 122701 000001 CMPB #FC.CL1,R1 ; CHECK DATA CLASS
1034 002334 001010 BNE 10$ ; CLASS 0
1035 002336 CALL GB ; CLASS 1 - FEATURE DEPENDENT DATA
1036 ; CHECK EXPLICITLY FOR ALL > 1
1037 002342 132713 000006 BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE DATA
1038 002346 001012 BNE 30$ ; GO DO IT
1039 ; ONLY ONE BYTE FEATURES LEFT
1040 002350 122700 000001 CMPB #1,R0 ; SEE IF IT IS
1041 002354 001213 BNE FERERR ; LOSER
1042 ; YES - GO SET THE FEATURE
1043 002356 10$: CALL GB ; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
1044 002362 110063 000001 MOVB R0,1(R3) ; SET FEATURE CURRENT VALUE
1045 002366 142713 000020 12$: BICB #FB.SST,(R3) ; NOT SET TO STD
1046 002372 000637 BR FREAD ; NOW READ THE FEATURE
1047
1048 ; * MULTIPLE BYTE VALUES
1049 002374 132713 000004 30$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
1050 002400 001023 BNE 35$ ; STRING VALUE
1051 002402 122700 000002 CMPB #2,R0 ; 2 BYTE LENGTH
1052 002406 001025 BNE 36$ ; SCREWED IT UP
1053 002410 CALL GB ; GET THE PAGE LIMIT
1054 002414 110065 000112 MOVB R0,C.PBRC(R5) ; HIDE THE LO PART
1055 002420 CALL GB ; GET THE HI PART
1056 002424 000300 SWAB R0
1057 002426 156500 000112 BISB C.PBRC(R5),R0 ; R0/NEW WORD VALUE
1058 002432 010046 MOV R0,-(SP)
1059 002434 005000 CLR R0
1060 002436 156300 000001 BISB F.FCV(R3),R0
1061 002442 060500 ADD R5,R0
1062 002444 012610 MOV (SP)+,(R0) ; SET THE NEW VALUE IN WORD
1063 002446 000747 BR 12$
1064
1065 ; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
1066 002450 35$: PUSH R3 ; SAVE THE FEATURE BLOCK PTR
1067 002452 005203 INC R3 ; THIS DEPENDS ON F.FCV=1
1068 002454 120023 CMPB R0,(R3)+ ; CHECK THE LENGTH
1069 002456 001403 BEQ 37$ ; OK
1070 002460 POP R3 ; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 21-1
FEATURES SET
1071 002462 36$: CALLR FERERR ; AND REPORT THE ERROR
1072 002466 37$: PUSH R1 ; SAVE THE VARIABLES
1073 002470 010001 MOV R0,R1 ; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
1074 002472 38$: CALL GB ; XFER THE NEW VALUE TO THE CURRENT VALUE
1075 002476 110023 MOVB R0,(R3)+ ; STUFF THE BYTE
1076 002500 SOB R1,38$ ; AND COUNT IT
1077 002504 POP <R1,R3>
1078 002510 CALLR FREAD ; NOW READ THE FEATURE
1079
1080 002514 40$: CALL SETSTD ; SET FEATURE TO STD
1081 002520 103002 BCC 45$
1082 002522 CALLR FERNST ; NO STD TO SET
1083 002526 45$: CALLR FEACON ; DON'T READ IT
1084
1085
1086 ; SET FEATURE TO ITS STANDARD VALUE
1087 ; R3/PTR TO FEATURE BLOCK IN DLT
1088 ; R5/PTR TO DLT
1089 002532 132713 000010 SETSTD: BITB #FB.STE,(R3) ; SEE IF IT HAS ONE
1090 002536 001002 BNE 10$ ; YES
1091 002540 000261 SEC ; NO STD TO SET
1092 002542 RETURN
1093 002544 132713 000006 10$: BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE VALUES
1094 002550 001006 BNE 20$ ; YES
1095 002552 116363 000002 000001 MOVB F.FSV(R3),F.FCV(R3) ; SET CURRENT VALUE = STD VALUE
1096 002560 152713 000020 BISB #FB.SST,(R3) ; MARK FEATURE AS SET TO STD
1097 002564 000415 BR 30$
1098
1099 ; * MULTIPLE BYTE VALUE
1100 002566 132713 000004 20$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
1101 002572 001014 BNE 40$ ; STRING
1102 002574 PUSH R5 ; WORD VALUE
1103 002576 005046 CLR -(SP)
1104 002600 116316 000001 MOVB F.FCV(R3),(SP)
1105 002604 062605 ADD (SP)+,R5 ; R5 /PTR TO CURRENT VALUE
1106 002606 116325 000002 MOVB F.FSV(R3),(R5)+ ; XFER LO BYTE
1107 002612 116315 000003 MOVB F.FSV+1(R3),(R5) ; XFER HI BYTE
1108 002616 POP R5
1109 002620 000241 30$: CLC
1110 002622 RETURN
1111
1112 ; * STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
1113 ; * STD VALUE BEGINS AT F.FCV+1+(F.FCV)
1114 002624 40$: PUSH <R0,R1,R3>
1115 002632 005203 INC R3 ; DEPENDS ON F.FCV=1
1116 002634 005000 CLR R0
1117 002636 152300 BISB (R3)+,R0 ; GET THE COUNT
1118 002640 010001 MOV R0,R1
1119 002642 060301 ADD R3,R1 ; R0/COUNT
1120 ; R1/SOURCE ADDRESS
1121 ; R3/DESTINATION ADDRESS
1122 002644 112123 45$: MOVB (R1)+,(R3)+ ; XFER THE STD VALUE
1123 002646 SOB R0,45$ ; COUNT IT
1124 002652 POP <R3,R1,R0>
1125 002660 000241 CLC
1126 002662 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 22
NURD MESSAGE BUILDER
1128 .SBTTL NURD MESSAGE BUILDER
1129
1130 ; R0/BYTE TO STUFF IN BUFFER
1131 ; R5/DLT
1132
1133 002664 005365 000124 MB: DEC C.MSGS(R5) ; COUNT IT
1134 002670 002410 BLT 20$ ; BUFFER ALREADY FULL
1135 002672 MAP C.MSGA(R5) ; MAP TO BUFFER
1136 002700 110075 000122 MOVB R0,@C.MSGA+2(R5) ; INSERT CHAR
1137 002704 005265 000122 INC C.MSGA+2(R5) ; ADVANCE PTR
1138 002710 RETURN
1139
1140 002712 005065 000124 20$: CLR C.MSGS(R5) ; RESET THE COUNT
1141 002716 25$: PUSH R4
1142 002720 CALL GETMBF ; GET A BUFFER
1143 002724 103431 BCS 30$ ; SCREW
1144 002726 005064 000012 CLR C.STS(R4) ; INIT THE STATUS
1145 002732 016465 000014 000120 MOV C.BUF(R4),C.MSGA(R5) ; MAKE IT THE CURRENT BUFFER
1146 002740 016465 000016 000122 MOV C.BUF+2(R4),C.MSGA+2(R5)
1147 002746 016465 000020 000124 MOV C.CNT(R4),C.MSGS(R5)
1148 002754 ENQ$ C.MSGQ ; ADD IT TO END OF LIST
1149 003004 POP R4
1150 003006 000726 BR MB ; NOW STUFF THE CHAR
1151
1152 003010 30$: POP R4
1153 003012 DFHYBER DWAKT ; WAIT A SEC AND TRY AGAIN
1154 003024 000734 BR 25$
1155
1156
1157 ; * SEND A BUILT MESSAGE TO NURD
1158 003026 016504 000114 MBSND: MOV C.MSGQ(R5),R4 ; GET THE FIRST BUFFER IN MSG
1159 003032 001456 BEQ 20$ ; NULL MSG
1160 003034 052764 000040 000012 BIS #NT.BOM,C.STS(R4) ; MARK IT AS BEG OF MSG
1161 003042 016504 000116 MOV C.MSGQ+2(R5),R4 ; GET THE LAST BUFFER IN MSG
1162 003046 052764 000100 000012 BIS #NT.EOM,C.STS(R4) ; MARK IT AS THE END OF MSG
1163 003054 166564 000124 000020 SUB C.MSGS(R5),C.CNT(R4) ; SET LAST BUFFER COUNT TO CORRECT AMOUNT
1164
1165 003062 10$: DEQ$ C.MSGQ,20$ ; DEQUEUE AND SEND ALL BUFFERS
1166 003136 112764 000002 000011 MOVB #NT$DAT,C.MOD(R4) ; ADDRESS IT PROPERLY
1167 003144 $TOBDM RC,C.STS(R4) ; C.STS ALREADY CORRECT
1168 003162 005265 000056 INC C.IOCN(R5) ; COUNT THE IO
1169 003166 000735 BR 10$
1170
1171 003170 005065 000124 20$: CLR C.MSGS(R5) ; CLEAN UP DEBRIS
1172 003174 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 23
FEATURE FINDER
1174 .SBTTL FEATURE FINDER
1175
1176 ;+
1177 ; FEFND LOOKS FOR A FEATURE WITH FID IN R2
1178 ; AND RETURNS PTR TO FEATURE BLOCK IN R3 IF SUCCESSFUL
1179 ; NORMAL CARRY FLAG CONDITION FOR SUCCESS OR FAILURE
1180 ;-
1181
1182 003176 012703 000172 FEFND: MOV #C.CFET,R3 ; TRY COMMON FEATURE 1ST
1183 003202 PUSH R2 ; SAVE FID CAUSE IT WILL BE MANGLED
1184 003204 105702 TSTB R2 ; CHECK IF DEVICE SPECIFIC FTR
1185 003206 100004 BPL 10$ ; COMMON, SKIP
1186 003210 012703 000204 MOV #C.DFET,R3 ; DEVICE SPECIFIC, GET POINTER
1187 003214 042702 177600 BIC #177600,R2 ; TRUNCATE TO JUST OFFSET ABOVE 128
1188 003220 001414 10$: BEQ 20$ ; ZERO IS AN ILLEGAL FEATURE CODE
1189 003222 060503 ADD R5,R3 ; R3 -> FEATURE LIST IN DLT
1190 003224 020213 CMP R2,(R3) ; CHECK ON ID RANGE
1191 003226 103011 BHIS 20$ ; SKIP IF OUT OF RANGE
1192 ; R3 IS POINTING TO THE BASE OF THE
1193 ; FEATURES LIST, WHICH HOLDS THE HIGHEST
1194 ; STORED FEATURE CODE
1195 003230 060203 ADD R2,R3 ; ADD THE FID TO POINT TO ADDRESS OF FEATURE BLOCK
1196 003232 111303 MOVB (R3),R3 ; LIST ENTRY IS DLT OFFSET TO FEATURE BLOCK
1197 003234 001406 BEQ 20$ ; UNSUPPORTED FEATURE
1198 003236 042703 177400 BIC #^C377,R3 ; FLUSH SIGN EXTENSION
1199 003242 060503 ADD R5,R3 ; R3 -> FEATURE BLOCK
1200 003244 POP R2
1201 003246 000241 CLC
1202 003250 RETURN
1203
1204 003252 20$: POP R2 ; UNSUPPORTED FEATURE
1205 003254 000261 SEC
1206 003256 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 24
NURD CONTROL MESSAGE HANDLER
1208 .SBTTL NURD CONTROL MESSAGE HANDLER
1209
1210 ;+
1211 ; THIS ROUTINE IS CALLED FROM CRNURD - REFER TO THE CALLING
1212 ; POINT IN THAT ROUTINE FOR THE REQUIRED REGISTER SETUP
1213 ;
1214 ; R0/BUFFER PTR: ->NURD MSG TYPE
1215 ; R4/CCB
1216 ; R5/DLT
1217 ; KISAR6/MAPPED TO BUFFER
1218 ;
1219 ; CONTROL MSG FORMAT: <SEQ NO.><COMMAND><RESULT>
1220 ;-
1221
1222 003260 122764 000004 000011 CONTRL: CMPB #NT$INT,C.MOD(R4) ; CHECK FOR INTERRUPT MSG
1223 003266 001402 BEQ CONINT ; THEY ARE PROCESSED NOW
1224 003270 CALLR QDLC ; OTHERS ARE SYNCH'D WITH DATA STREAM
1225
1226 003274 022764 000004 000020 CONINT: CMP #N.CCMD+1,C.CNT(R4) ; CHECK TO SEE IF ENOUGH SENT
1227 003302 003123 BGT BADCON ; NOT EVEN 4 LOUSY BYTES!
1228 003304 116001 000003 MOVB N.CCMD(R0),R1 ; GET CONTROL COMMAND BYTE
1229 003310 003520 BLE BADCON ; SKIP OUT ON ILLEGAL CODE
1230 003312 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
1231 003316 101515 BLOS BADCON ; OUT OF RANGE, SKIP OUT
1232 003320 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
1233 ; DO THE CONTROL FUNCTION IMMEDIATELY
1234 ; AND WORRY ABOUT RESPONSE LATER
1235 003322 ENQ$ C.CMSQ ; QUEUE THE MSG CCB TIL RESOURCES ARE CHECKED
1236 003352 CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
1237 ; CALLABLE ROUTINES:
1238 ; ABRTEF - INTERRUPT
1239 ; ABRTAL - INTERRUPT
1240 ; ABRTCL
1241 ; SNDSTS - SPECIAL RESULT
1242 ; DUMP
1243 ; PAUSE - INTERRUPT
1244 ; RESUME - INTERRUPT
1245 ; SNDCAP - SPECIAL RESULT
1246 ; RETURN WITH R0/RESULT CODE
1247
1248 ; * RESOURCE ERROR RETRY ENTRY
1249 003356 RECON: CALL GETMBF ; GET A RESPONSE BUFFER
1250 003362 103470 BCS 100$ ; SCREW
1251 003364 PUSH R4 ; SAVE THE RESPONSE CCB
1252 003366 DEQ$ C.CMSQ ; GET THE MSG CCB BACK
1253 003434 MAP C.BUF(R4) ; R0/RESULT
1254 003442 016401 000016 MOV C.BUF+2(R4),R1
1255 003446 116102 000003 MOVB N.CCMD(R1),R2 ; R2/COMMAND
1256 003452 116101 000002 MOVB N.CSEQ(R1),R1 ; R1/SEQ NO. OF CONTROL MSG
1257 003456 CALL NRDACK ; ACK THE CONTROL MSG
1258
1259 003462 POP R4 ; GET THE RESPONSE CCB BACK
1260 003464 MAP C.BUF(R4) ; MAP TO THE BUFFER
1261 003472 016403 000016 MOV C.BUF+2(R4),R3 ; GET BUF PTR
1262 003476 112723 000003 MOVB #NM.CTL,(R3)+ ; FORMAT A NURD CONTROL MSG
1263 003502 105023 CLRB (R3)+ ; NO MSG FLAGS
1264 003504 110123 MOVB R1,(R3)+ ; SEQ NO.
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 24-1
NURD CONTROL MESSAGE HANDLER
1265 003506 110223 MOVB R2,(R3)+ ; COMMAND
1266 003510 110013 MOVB R0,(R3) ; RESULT
1267 003512 012764 000005 000020 MOV #N.CRES+1,C.CNT(R4) ; SET THE BUFFER COUNT
1268 003520 $TOBDM RC,#NT.BOM!NT.EOM ; SEND IT!
1269 003536 005265 000056 INC C.IOCN(R5) ; COUNT THE IO
1270 003542 RETURN
1271
1272 003544 105265 000066 100$: INCB C.RECO(R5) ; SET THE CONTROL RESOURCE ERR FLAG
1273 003550 RETURN
1274
1275 003552 012764 100202 000012 BADCON: MOV #LS.REJ,C.STS(R4) ; REJECT(?) THIS ONE
1276 003560 CALL NRDRET ; ACK THE CRUFTY MSG
1277 003564 052765 000004 000050 BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
1278 003572 RETURN
1279
1280 ; * THE DISPATCH TABLE
1281 003574 003552' CTLDSP: .WORD BADCON ; 0 - CODE ZERO IS RESERVED
1282 003576 004474' .WORD ABRTEF ; 1 - ABORT TO END OF FILE
1283 003600 004506' .WORD ABRTAL ; 2 - ABORT ALL
1284 003602 004554' .WORD ABRTCL ; 3 - ABORT CLEAR
1285 003604 003774' .WORD SNDSTS ; 4 - STATUS REQUESTED, SEND ATTENTION
1286 003606 004334' .WORD DUMP ; 5 - DUMP OUTPUT BUFFERS
1287 003610 004356' .WORD PAUSE ; 6 - PAUSE
1288 003612 004406' .WORD RESUME ; 7 - RESUME FROM ERROR OR PAUSE
1289 003614 003552' .WORD BADCON ; 8 - UNDEFINED
1290 003616 004604' .WORD CAPREQ ; 9 - SEND CAPABILITIES MESSAGE
1291 000012 CTLOTR = <. - CTLDSP>/2
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 25
NON-INTERRUPT CONTROL MESSAGE PROCESSING
1293 .SBTTL NON-INTERRUPT CONTROL MESSAGE PROCESSING
1294
1295 ; CONSYN CALLED FROM QTODLC, PROCESS A NON-INTERRUPT CONTROL MESSAGE
1296
1297 003620 CONSYN: CALL GB ; GET SEQ NO.
1298 003624 110065 000110 MOVB R0,C.DMSQ(R5) ; SAVE IT FOR RESPONSE
1299 003630 CALL GB ; GET COMMAND
1300 003634 010001 MOV R0,R1
1301 003636 003450 BLE 50$ ; SKIP OUT ON ILLEGAL CODE
1302 003640 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
1303 003644 101445 BLOS 50$ ; OUT OF RANGE, SKIP OUT
1304 003646 PUSH R1 ; SAVE COMMAND CODE FOR RESPONSE
1305 003650 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
1306 ; DO THE CONTROL FUNCTION IMMEDIATELY
1307 ; AND WORRY ABOUT RESPONSE LATER
1308 003652 CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
1309 ; CALLABLE ROUTINES:
1310 ; ABRTEF - INTERRUPT
1311 ; ABRTAL - INTERRUPT
1312 ; ABRTCL
1313 ; SNDSTS - SPECIAL RESULT
1314 ; DUMP
1315 ; PAUSE - INTERRUPT
1316 ; RESUME - INTERRUPT
1317 ; SNDCAP - SPECIAL RESULT
1318 ; RETURN WITH R0/RESULT CODE
1319 003656 POP R1 ; GET COMMAND CODE BACK
1320 003660 PUSH R0 ; SAVE RESPONSE CODE
1321 003662 CALL GBDQ ; ACK THE MSG
1322 003666 012700 000003 MOV #NM.CTL,R0 ; CONSTRUCT A CONTROL MSG
1323 003672 CALL MB ; CONTROL CODE
1324 003676 005000 CLR R0
1325 003700 CALL MB ; NULL MSG FLAGS
1326 003704 116500 000110 MOVB C.DMSQ(R5),R0
1327 003710 CALL MB ; SEQ NO. OF ORIGINAL COMMAND
1328 003714 010100 MOV R1,R0
1329 003716 CALL MB ; COMMAND
1330 003722 POP R0
1331 003724 CALL MB ; RESPONSE CODE
1332 003730 CALL MBSND ; SEND THE RESPONSE
1333 003734 105765 000067 TSTB C.RATT(R5) ; CHECK FOR OTHER MESSAGES TO GOE OUT
1334 003740 001402 BEQ 20$ ; NO ATTENTION MSGS
1335 003742 CALL SNDATT ; PENDING ATTENTION MSG
1336
1337 003746 105765 000070 20$: TSTB C.CAPP(R5) ; TRY CAPABILITIES MSG
1338 003752 001407 BEQ 60$
1339 003754 CALLR SNDCAP ; PENDING CAPABILITIES MSG
1340
1341 003760 052765 000004 000050 50$: BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
1342 003766 CALLR GBDQ ; ACK THE MSG AND WAIT FOR DEATH
1343 003772 60$: RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 26
CONTROL - REQUEST STATUS
1345 .SBTTL CONTROL - REQUEST STATUS
1346
1347 ; * ENTRY FROM CONTRL (ATTENTION REQUESTED)
1348 003774 005000 SNDSTS: CLR R0 ; SET RESULT(NR.ATT) FOR CNTROL RESPONSE
1349 003776 105765 000067 TSTB C.RATT(R5) ; CHECK ATTENTION ALREADY PENDING
1350 004002 001003 BNE 10$ ; DON'T MUNG ORIGNAL REASON
1351 004004 112765 000003 000067 MOVB #N.ARQS,C.RATT(R5) ; SET ATTENTION PENDING FLAG(REASON = REQUESTED)
1352 004012 10$: RETURN
1353
1354
1355 .SBTTL SEND ATTENTION MESSAGE
1356
1357 ;+
1358 ; THIS ROUTINE ALLOCATES AN SDB AND BUILDS AN ATTENTION MESSAGE USING
1359 ; THE REASON CODE FOUND IN C.RATT OF THE DLT. IF FOR SOME REASON
1360 ; (LIKE NO CCB'S) THE MESSAGE CANNOT BE BUILT, THE RATT CODE STAYS
1361 ; AROUND FOR THE NEXT ATTEMPT.
1362 ;
1363 ; FORMAT: <1><0><LAST SEQ #><RSN CODE><FLAGS: 1-3 BYTES><CARD COUNT: 2 BYTES>
1364 ;-
1365
1366 004014 SNDATT: PUSH <R0,R1,R2,R3,R4> ; MAGNANIMOUSLY PRESERVE THE REGISTERS
1367 004026 116502 000067 MOVB C.RATT(R5),R2 ; GET EXCUSE CODE FOR ATTENTION MSG
1368 004032 001532 BEQ 110$ ; NO ATTENTION IS PENDING, LEAVE
1369
1370 ; * BUILD AND SEND AN ATTENTION MESSAGE
1371 004034 CALL GETMBF ; GET A MESSAGE BUFFER
1372 004040 103527 BCS 110$ ; FAILED, EXIT - WE'LL BE BACK
1373 004042 016401 000016 MOV C.BUF+2(R4),R1 ; GET POINTER TO START OF BUFFER
1374 004046 112721 000001 MOVB #NM.ATT,(R1)+ ; LOAD MSG TYPE TO BUFFER
1375 004052 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1376 004054 116521 000052 MOVB C.CDCT(R5),(R1)+ ; STORE LAST GOOD SEQ NUMBER IN ATTENTION
1377 004060 110221 MOVB R2,(R1)+ ; LOAD ATTENTION CODE
1378 ; BUILD FLAGS FIELD
1379 004062 005002 CLR R2 ; CLEAR FLAGS ACCUMULATOR
1380 004064 016500 000050 MOV C.ASTS(R5),R0 ; GET DEVICE STATUS
1381 004070 032700 000604 BIT #CA.ADN!CA.MOT!CA.TER,R0 ; FATAL ERRORS ?
1382 004074 001402 BEQ 10$
1383 004076 052702 000001 BIS #NA.FAT,R2 ; SOME FATAL ERROR - USUALLY USER'S
1384
1385 004102 032700 001000 10$: BIT #CA.OFL,R0 ; READER OFFLINE ?
1386 004106 001402 BEQ 11$ ; NO
1387 004110 052702 000002 BIS #NA.OFL,R2 ; YES, NOTE OFFLINE
1388
1389 004114 032700 000002 11$: BIT #CA.PAU,R0 ; PAUSED?
1390 004120 001402 BEQ 12$ ; NO
1391 004122 052702 000004 BIS #NA.PAU,R2 ; YES
1392
1393 004126 032700 000100 12$: BIT #CA.HOP,R0 ; HOPPER EMPTY ?
1394 004132 001402 BEQ 20$
1395 004134 052702 000010 BIS #NA.OMD,R2 ; MAYBE - SETS NA.OUF ALSO
1396
1397 004140 052702 000200 20$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
1398 004144 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 1 FLAGS
1399 004146 005002 CLR R2 ; CLEAR FOR BYTE 2 FLAGS
1400 004150 032700 000100 BIT #CA.HOP,R0 ; OUTPUT HOPPER FULL ?
1401 004154 001402 BEQ 21$
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 26-1
SEND ATTENTION MESSAGE
1402 004156 052702 000001 BIS #NA.OUF,R2 ; MAYBE
1403
1404 004162 032700 004000 21$: BIT #CA.TMO,R0 ; HUNG?
1405 004166 001402 BEQ 22$ ; NO
1406 004170 052702 000004 BIS #NA.DTO,R2 ; YES
1407
1408 004174 032700 000200 22$: BIT #CA.MOT,R0 ; PICK FAILURE ?
1409 004200 001402 BEQ 30$
1410 004202 052702 000020 BIS #NA.PF,R2 ; MAYBE
1411
1412 004206 052702 000200 30$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
1413 004212 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 2
1414 004214 005002 CLR R2 ; CLEAR FOR BYTE 3 FLAGS
1415 004216 032700 002000 BIT #CA.IVP,R0 ; INVALID PUNCH ?
1416 004222 001402 BEQ 40$
1417 004224 052702 000001 BIS #NA.IVP,R2 ; YES
1418
1419 004230 110211 40$: MOVB R2,(R1) ; THAT'S IT FOR BYTE 3 FLAGS
1420 004232 001005 BNE 50$ ; 3 BYTE FEILD
1421 004234 142741 000200 BICB #200,-(R1) ; NOT MORE THAN 2 BYTES
1422 004240 001002 BNE 50$ ; 2 BYTER
1423 004242 142741 000200 BICB #200,-(R1) ; ONLY 1 BYTE
1424
1425 004246 005201 50$: INC R1 ; ADVANCE R1 TO NEXT AVAILABLE BYTE
1426 004250 016503 000052 MOV C.CDCT(R5),R3 ; GET CARD COUNT ACCUMULATOR
1427 004254 110321 MOVB R3,(R1)+ ; STORE LOW BYTE OF COUNT
1428 004256 000303 SWAB R3 ; GET HIGH BYTE
1429 004260 110321 MOVB R3,(R1)+ ; STORE IT TOO
1430 004262 166401 000016 SUB C.BUF+2(R4),R1 ; COMPUTE MSG SIZE
1431 004266 010164 000020 MOV R1,C.CNT(R4) ; STUFF IT INTO CCB
1432 ; READY TO GO
1433 004272 $TOBDM RC,#NT.BOM!NT.EOM ; SEND UP ATTENTION MSG FROM HERE
1434 004310 005265 000056 INC C.IOCN(R5) ; COUNT THE IO
1435 004314 105065 000067 CLRB C.RATT(R5) ; CLEAR PENDING REQUEST FOR ATTENTION
1436 004320 110$: POP <R4,R3,R2,R1,R0> ; RESTORE REGS
1437 004332 RETURN ; EXIT SEND ATTENTION
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 27
CONTROL - DUMP OUTPUT BUFFERS
1439 .SBTTL CONTROL - DUMP OUTPUT BUFFERS
1440
1441 004334 005000 DUMP: CLR R0 ; SET RESPONSE (NR.DMP)
1442 004336 105765 000067 TSTB C.RATT(R5) ; PENDING ATTENTION?
1443 004342 001004 BNE 10$ ; YES
1444 004344 105765 000070 TSTB C.CAPP(R5) ; PENDING CAPABILITIES?
1445 004350 001001 BNE 10$ ; YES
1446 004352 005200 INC R0 ; NOTHING TO DUMP
1447 004354 10$: RETURN
1448
1449
1450
1451 .SBTTL CONTROL - PAUSE
1452
1453 004356 005000 PAUSE: CLR R0 ; SET RESPONSE (NR.DPS)
1454 004360 032765 000006 000050 BIT #CA.PAU!CA.ADN,C.ASTS(R5) ; ALREADY PAUSED/PAUSING?
1455 004366 001004 BNE 20$ ; YES
1456 004370 052765 000002 000050 10$: BIS #CA.PAU,C.ASTS(R5) ; PAUSE NO MATTER WHAT
1457 004376 RETURN
1458
1459 004400 012700 000001 20$: MOV #NR.PAU,R0 ; ALREADY PAUSED
1460 004404 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 28
CONTROL - RESUME OUTPUT
1462 .SBTTL CONTROL - RESUME OUTPUT
1463
1464 004406 005000 RESUME: CLR R0 ; SET RESPONSE(NR.RES)
1465 004410 032765 004006 000050 BIT #CA.PAU!CA.ADN!CA.TMO,C.ASTS(R5); CHECK PAUSEDNESS
1466 004416 001414 BEQ 20$ ; NOTHING HUNG
1467 004420 032765 000040 000050 BIT #CA.EOF,C.ASTS(R5) ; EOF ?
1468 004426 001402 BEQ 10$
1469 004430 005065 000052 CLR C.CDCT(R5) ; IF SO, CLEAR CARD COUNT FOR NEW FILE
1470
1471 ; * FLUSH PAUSING CONDITIONS
1472 004434 042765 004776 000050 10$: BIC #CA.PAU!CA.ADN!CA.TMO!CA.ERR!CA.EOF!CA.ABO!CA.ABE,C.ASTS(R5)
1473 004442 CALL STRTCR ; TURN ON DEVICE AGAIN
1474 004446 000402 BR 30$
1475
1476 004450 012700 000001 20$: MOV #NR.NPS,R0 ; NOT PAUSED
1477 004454 122765 000004 000126 30$: CMPB #DWAKR,C.DWAK(R5) ; CHECK FOR DESIRED WAKE CONDITION
1478 004462 001003 BNE 40$ ; NO
1479 004464 112765 000003 000126 MOVB #DWAKT,C.DWAK(R5) ; MAP TO A CLOCK TOCK WAKE
1480 ; THIS ALLOWS CONTROL PROCESS TO PROCEED
1481 004472 40$: RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 29
CONTROL - ABORT COMMAND SET
1483 .SBTTL CONTROL - ABORT COMMAND SET
1484
1485 ; ABRTEF(NC.AUE) IS AN INTERRUPT MSG
1486 ; ABRTAL(NC.AUC) IS AN INTRRUPT MSG
1487
1488 ; * ABORT TO END OF FILE
1489 004474 052765 000020 000050 ABRTEF: BIS #CA.ABE,C.ASTS(R5) ; SET THE FLAG FOR READER
1490 004502 005000 CLR R0 ; SET NR.ABE
1491 004504 RETURN
1492
1493 ; * ABORT UNTIL CLEAR RECEIVED
1494 004506 ABRTAL: CALL STOPCR ; FLUSH THE DEVICE
1495 004512 052765 000010 000050 BIS #CA.ABO,C.ASTS(R5) ; NOTE ABORTING
1496 004520 005000 CLR R0 ; SET NR.ABS
1497 004522 016501 000044 MOV C.DDMQ(R5),R1 ; CHECK ALL QUEUES TO SEE IF
1498 004526 056501 000072 BIS C.DLCQ(R5),R1 ; ANYTHING HAPPENING
1499 004532 056501 000114 BIS C.MSGQ(R5),R1
1500 004536 156501 000126 BISB C.DWAK(R5),R1 ; CHECK SUSPENDED PROCESSES
1501 004542 001002 BNE 10$ ; NR.ABS
1502 004544 012700 000001 MOV #NR.NAB,R0 ; NOTHING TO ABORT
1503 004550 10$: CALLR FLUSHQ ; CLEAR THE WORLD
1504
1505 ; * CLEAR ABORT STATUS
1506 004554 005000 ABRTCL: CLR R0 ; SET RESPONSE CODE
1507 004556 032765 000030 000050 BIT #CA.ABE!CA.ABO,C.ASTS(R5) ; ABORT SET?
1508 004564 001404 BEQ 10$ ; NO
1509 004566 042765 000030 000050 BIC #CA.ABE!CA.ABO,C.ASTS(R5) ; CLEAR ABORTING
1510 004574 RETURN
1511
1512 004576 012700 000001 10$: MOV #NR.ACN,R0 ; NOT IN ABORT STATE
1513 004602 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 30
CONTROL - REQUEST CAPABILITIES
1515 .SBTTL CONTROL - REQUEST CAPABILITIES
1516
1517 ; * CONTROL FCN TO SET UP CAPABILITIES MSG
1518 004604 005000 CAPREQ: CLR R0 ; SET RESPONSE CODE
1519 004606 105265 000070 INCB C.CAPP(R5) ; SET CAPABILITIES PENDING FLAG
1520 004612 RETURN
1521
1522
1523
1524 .SBTTL SEND CAPABILITIES MESSAGE
1525
1526 ; TRY TO SEND A CAPABILITIES MESSAGE
1527 ; MESSAGE FORMAT: <NO. FEATURES><...FID'S...>
1528
1529 004614 SNDCAP: CALL GETMBF ; GET A MSG BUFFER
1530 004620 103457 BCS 100$
1531 004622 016403 000016 MOV C.BUF+2(R4),R3 ; GET BUFFER ADDRESS
1532 ; FORMAT A NURD MESSAGE
1533 004626 112723 000005 MOVB #NM.CAP,(R3)+ ; NURD MSG TYPE = CAPABILITIES
1534 004632 105023 CLRB (R3)+ ; NO FLAGS
1535 004634 PUSH R3 ; SAVE PTR TO CNT
1536 004636 105023 CLRB (R3)+ ; INIT CNT
1537 004640 012764 000003 000020 MOV #3,C.CNT(R4) ; SET BUFFER CNT = BYTES ALREADY INSERTED
1538 004646 PUSH R5 ; SAVE THE DLT PTR
1539 004650 062705 000172 ADD #C.CFET,R5 ; GET R5 -> COMMON FEATURES LIST
1540 004654 005001 CLR R1 ; INIT THE FID
1541
1542 004656 005000 10$: CLR R0 ; GET LENGTH OF FEATURE LIST
1543 004660 152500 BISB (R5)+,R0
1544 004662 001410 BEQ 31$ ; NO FEATURES!!
1545
1546 004664 005201 20$: INC R1 ; ADVANCE THE FID
1547 004666 105725 TSTB (R5)+ ; CHECK FOR SUPPORT OF IT
1548 004670 001403 BEQ 30$ ; NOPE
1549 004672 110123 MOVB R1,(R3)+ ; YES - STORE FID IN MSG
1550 004674 005264 000020 INC C.CNT(R4) ; COUNT IT
1551 004700 30$: SOB R0,20$
1552
1553 004704 105701 31$: TSTB R1 ; CHECK WHICH FEATURE LIST
1554 004706 100403 BMI 40$ ; DEVICE SPECIFIC - DONE
1555 004710 012701 000200 MOV #200,R1 ; INIT FID FOR DEVICE SPECIFIC FEATURES
1556 004714 000760 BR 10$ ; PROCESS THAT LIST
1557
1558 004716 40$: POP R5 ; GET THE DLT PTR BACK
1559 004720 016400 000020 MOV C.CNT(R4),R0 ; GET THE BUFFER CNT
1560 004724 162700 000003 SUB #3,R0 ; CALC NO. FEATURES FOUND
1561 004730 110036 MOVB R0,@(SP)+ ; STORE CNT IN CNT BYTE OF MSG
1562 004732 $TOBDM RC,#NT.BOM!NT.EOM ; SEND IT
1563 004750 005265 000056 INC C.IOCN(R5) ; COUNT IT
1564 004754 105065 000070 CLRB C.CAPP(R5) ; FLUSH THE FLAG
1565 004760 100$: RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 31
SEND ALERT MESSAGE
1567 .SBTTL SEND ALERT MESSAGE
1568
1569 004762 SNDALR: CALL GETMBF ; GET A MESSAGE BUFFER
1570 004766 103424 BCS 10$ ; COULDN'T
1571 004770 016401 000016 MOV C.BUF+2(R4),R1 ; GET BUFFER PTR
1572 004774 112721 000004 MOVB #NM.ALR,(R1)+ ; BUILD COMPLETE ALERT MSG IN A SINGLE WORD
1573 005000 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1574 005002 012764 000002 000020 MOV #2,C.CNT(R4)
1575 005010 112764 000004 000011 MOVB #NT$INT,C.MOD(R4) ; ALERT IS AN INTERRUPT MSG
1576 005016 $TOBDM RC,#NT.BOM!NT.EOM ; SEND UP ALERT MSG
1577 005034 005265 000056 INC C.IOCN(R5) ; COUNT THE IO
1578 005040 10$: RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 32
TIMER HANDLER
1580 .SBTTL TIMER HANDLER
1581
1582 ;+
1583 ; R4/FAKE CCB
1584 ; R5/DLT
1585 ;-
1586
1587 005042 005765 000060 CRTIM: TST C.IOWT(R5) ; CHECK FOR CLOSE-WAIT
1588 005046 001402 BEQ 5$
1589 005050 CALLR CLOSWT ; PREEMPTS ALL ELSE
1590
1591 005054 105765 000066 5$: TSTB C.RECO(R5) ; CHECK CONTROL RESOURCE ERROR
1592 005060 001404 BEQ 10$
1593 005062 105065 000066 CLRB C.RECO(R5) ; YES - FLUSH THE FLAG
1594 005066 CALL RECON ; RESTART THE PROCESS
1595
1596 005072 122765 000003 000126 10$: CMPB #DWAKT,C.DWAK(R5) ; CHECK TIMESLEEP
1597 005100 001002 BNE 20$
1598 005102 CALL DFWAKE ; RESTART THE PROCESS
1599 ; IT WILL RETURN HERE
1600 005106 032765 001700 000050 20$: BIT #CA.ERR!CA.OFL,C.ASTS(R5) ; CHECK DEVICE PROBLEMS
1601 005114 001412 BEQ 30$ ; NOT BECAUSE OF DEVICE ERROR
1602 005116 032775 000400 000022 BIT #RDROFL,@C.CSR(R5) ; DEVICE ERROR WAS REASON
1603 005124 001006 BNE 30$ ; NOT YET RESTORED TO ONLINE
1604 005126 CALL SNDALR ; CURE HS BEEN EFFECTED, NOTIFY USER
1605 005132 103403 BCS 30$ ; COULDN'T SEND ONE, COME BACK LATER
1606 005134 042765 001700 000050 BIC #CA.ERR!CA.OFL,C.ASTS(R5) ; FLUSH ERROR BUT LEAVE CA.PAU
1607 ; USER MUST RESUME
1608 005142 105765 000071 30$: TSTB C.STRT(R5) ; CHECK PENDING READ START
1609 005146 001402 BEQ 40$
1610 005150 CALL STRTCR ; START THE READER
1611
1612 005154 105765 000027 40$: TSTB C.HUNG(R5) ; CHECK HUNG TIMER
1613 005160 001414 BEQ 50$ ; NOT SET
1614 005162 105365 000027 DECB C.HUNG(R5) ; COUNT THE TOCK
1615 005166 001011 BNE 50$ ; STILL OK
1616 005170 052765 004000 000050 BIS #CA.TMO,C.ASTS(R5) ; DEVICE IS COMATOSE
1617 005176 105765 000067 TSTB C.RATT(R5) ; CHECK PENDING ATTENTION MSG
1618 005202 001006 BNE 55$ ; YES - DON'T GENERATE ANOTHER
1619 005204 112765 000001 000067 MOVB #N.ASTC,C.RATT(R5) ; SET PENDING ATTENTION FLAG(REASON CODE)
1620
1621 005212 105765 000067 50$: TSTB C.RATT(R5) ; CHECK PENDING ATTENTION MSG
1622 005216 001402 BEQ 60$
1623 005220 55$: CALL SNDATT ; TRY TO SEND ONE
1624
1625 005224 105765 000070 60$: TSTB C.CAPP(R5) ; CHECK PENDING CAPABILITIES MSG
1626 005230 001402 BEQ 70$
1627 005232 CALL SNDCAP ; TRY TO SEND ONE
1628
1629 005236 105215 70$: INCB (R5) ; RESET THE DLT CLOCK FOR THE NEXT TOCK
1630 005240 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 33
RESOURCE RETURN
1632 .SBTTL RESOURCE RETURN
1633
1634 ;+
1635 ; RESOURCE RETURN ENTRY (RECEIVE ENABLE). IT IS HERE THAT NURD
1636 ; MESSAGES SENT BY RECEIVE COMPLETE ($RCCMP), ARE RETURNED BY THE
1637 ; DRIVER TO THE PROPER CORE POOL OR TO THEIR MESSAGE SPECIFIC
1638 ; LOCATIONS. MESSAGES SO HANDLED INCLUDE ATTENTION, CAPABILITIES,
1639 ; ALERT, AND AUGMENTED BUFFERS OF FEATURES READ MESSAGES.
1640 ;-
1641
1642 005242 005365 000056 CRDLRE: DEC C.IOCN(R5) ; COUNT THE RETURNED RESOURCE
1643 005246 002002 BGE FLSBUF
1644 005250 005065 000056 CLR C.IOCN(R5) ; BLEW IT SOMEWHERE
1645
1646 005254 122764 000004 000003 FLSBUF: CMPB #CB.RDB,C.BID(R4) ; DISCERN BUFFER TYPE BEING DELIVERED
1647 005262 001412 BEQ 20$ ; READ DATA BUFFER
1648 005264 005764 000016 TST C.BUF+2(R4) ; CHECK FOR PRESENCE OF A BUFFER
1649 005270 001002 BNE 10$ ; SMALL DATA BUFFER/CCB COMBO
1650 005272 CALLR $CCBRT ; DEALLOCATE NAKED CCB AND RETURN
1651
1652 005276 016464 000026 000016 10$: MOV C.BUF2+2(R4),C.BUF+2(R4) ; CAREFULLY RESTORE BUFFER PTR
1653 005304 CALLR $CSBRT ; DEALLOCATE SDB/CCB AND RETURN
1654
1655 005310 20$: CALLR $RDBRT ; DEALLOCATE RDB AND RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 34
OPEN/CLOSE DEVICE
1657 .SBTTL OPEN/CLOSE DEVICE
1658
1659 ;+
1660 ; INITIALIZE UNIT
1661 ; R4/CCB
1662 ; R5/DLT
1663 ;-
1664
1665 005314 CTLSTR: ; START DEVICE
1666 005314 CROPEN: PUSH R4 ; SAVE INCOMING CCB POINTER
1667 005316 032765 000001 000050 BIT #CA.CLO,C.ASTS(R5) ; CLOSED?
1668 005324 001463 BEQ 10$ ; NO, THEN HOW CAN IT BE OPENED?
1669 005326 005075 000022 CLR @C.CSR(R5) ; BE VERY PESSIMISTIC
1670 005332 012765 000002 000050 MOV #CA.PAU,C.ASTS(R5) ; INIT THE ACTION STATUS WORD
1671 ; * USER MUST RESUME TO START READING (ALLOWS INITIAL FEATURE HACKING)
1672 005340 005065 000032 CLR C.PUBP+2(R5) ; FLUSH CURRENT READ BUFFER(SHOULD BE CLEAR)
1673 005344 105065 000126 CLRB C.DWAK(R5) ; INIT THE DATA/FEATURES HYBER FCN
1674 005350 005065 000102 CLR C.DMAD(R5) ; FLUSH SOURCE BUF IN USE
1675 005354 005065 000104 CLR C.DMAD+2(R5)
1676 005360 005065 000106 CLR C.DMBS(R5)
1677 005364 005065 000120 CLR C.MSGA(R5) ; INIT CURRENT OUT MSG CRUFT
1678 005370 005065 000122 CLR C.MSGA+2(R5)
1679 005374 005065 000124 CLR C.MSGS(R5)
1680 005400 005065 000056 CLR C.IOCN(R5) ; INIT OUTSTANDING IO COUNT
1681 005404 005065 000060 CLR C.IOWT(R5) ; INIT THE CLOSE WAIT FLAG
1682 005410 105065 000026 CLRB C.COLC(R5) ; INIT THE COLUMN COUNT
1683 005414 105065 000027 CLRB C.HUNG(R5) ; INIT THE HUNG DEVICE TIMER
1684 005420 105065 000066 CLRB C.RECO(R5) ; INIT THE CONTROL RESOURCE ERROR FLAG
1685 005424 105065 000067 CLRB C.RATT(R5) ; INIT THE PENDING ATTENTION MSG FLAG
1686 005430 105065 000070 CLRB C.CAPP(R5) ; INIT THE PENDING CAPABILITIES MSG FLAG
1687 005434 105065 000071 CLRB C.STRT(R5) ; INIT THE PENDING READ FLAG
1688 005440 005065 000052 CLR C.CDCT(R5) ; INIT THE CARD COUNTER
1689 ; * SET ALL FEATURES WITH STANDARDS TO STD
1690 005444 012700 000172 MOV #C.CFET,R0 ; COMMON FEATURES
1691 005450 CALL 100$ ; DOO ALL
1692 005454 012700 000204 MOV #C.DFET,R0 ; DEVICE SPECIFIC FEATURES
1693 005460 CALL 100$ ; ALL OF THEM TOO
1694 005464 005003 CLR R3 ; RETURN SUCCESS
1695 005466 116515 000001 MOVB C.TIMI(R5),(R5) ; START THE TIMER FCNS
1696 005472 000405 BR 20$
1697
1698 005474 012703 100202 10$: MOV #LS.REJ,R3 ; FAILED TO OPEN
1699 005500 052765 000001 000050 BIS #CA.CLO,C.ASTS(R5) ; NOTE REMAINING CLOSED
1700 005506 20$: POP R4 ; RESTORE POINTER FOR COMMAND CCB
1701 005510 CALLR $CTCMP ; SEND COMMAND BACK
1702
1703 005514 060500 100$: ADD R5,R0 ; R0/FEATURE LIST OFFSET
1704 005516 005001 CLR R1
1705 005520 152001 BISB (R0)+,R1 ; GET NO. OF FEATURES
1706 005522 005003 110$: CLR R3
1707 005524 152003 BISB (R0)+,R3 ; GET ADDRESS OF FEATURE BLOCK
1708 005526 001403 BEQ 120$ ; EMPTY SLOT
1709 005530 060503 ADD R5,R3
1710 005532 CALL SETSTD ; SET IT TO STD
1711 005536 120$: SOB R1,110$
1712 005542 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 35
OPEN/CLOSE DEVICE
1714 005544 CTLSTP: ; STOP DEVICE
1715 005544 CRCLOS: CALL STOPCR ; STOP THE READER DEAD
1716 005550 052765 000001 000050 BIS #CA.CLO,C.ASTS(R5) ; MARK AS CLOSED
1717 005556 CALL FLUSHQ ; FLUSH THE QUEUES
1718 005562 PUSH R4 ; SAVE COMMAND CCB POINTER
1719 005564 10$: DEQ$ C.CMSQ,20$ ; FLUSH ANY OUTSTANDING CONTROL MSGS
1720 005640 CALL NRDACK ; RETURN THEM
1721 005644 000747 BR 10$
1722 005646 20$: POP R4 ; RESTORE COMMAND CCB POINTER
1723 005650 010465 000060 MOV R4,C.IOWT(R5) ; SET THE CLOSE WAIT FLAG
1724
1725 ; * COMPLETE CLOSE ONLY WHEN ALL CCB'S RETURNED
1726 005654 005765 000056 CLOSWT: TST C.IOCN(R5)
1727 005660 001402 BEQ 10$
1728 005662 105215 INCB (R5)
1729 005664 RETURN
1730
1731 005666 105015 10$: CLRB (R5) ; FLUSH THE TIMER FCNS
1732 005670 016504 000060 MOV C.IOWT(R5),R4 ; GET THE CLOSE CCB BACK
1733 005674 005065 000060 CLR C.IOWT(R5) ; CLEAN UP BEHIND OURSELVES
1734 005700 005003 CLR R3 ; CLOSE NEVER FAILS - IT JUST TAKES A WHILE!
1735 005702 CALLR $CTCMP ; RETURN THE COMMAND
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 36
PHYSICAL BUFFER MANAGEMENT
1737 .SBTTL PHYSICAL BUFFER MANAGEMENT
1738
1739 ; * PHYSICAL BUFFERS ARE RDB'S
1740 005706 GETPBF: CALL $RDBGT ; GET A PHYSICAL BUFFER
1741 005712 103411 BCS 10$ ; LOSE
1742 005714 012764 000140 000012 MOV #NT.BOM!NT.EOM,C.STS(R4) ; INIT STATUS
1743 005722 016564 000054 000006 MOV C.SLN(R5),C.LIN(R4) ; IDENTIFY THE BUFFER OWNER
1744 005730 016764 000000G 000020 MOV $RDBSZ,C.CNT(R4) ; INIT THE CNT TO BUF SIZE
1745 005736 10$: RETURN
1746
1747
1748
1749 005740 GETMBF: CALL $CSBGT ; GET A MESSAGE BUFFER
1750 005744 103425 BCS 10$ ; LOSE
1751 005746 016564 000054 000006 MOV C.SLN(R5),C.LIN(R4) ; MARK THE CCB AS BELONGING TO THIS SYSTEM LINE NO.
1752 005754 016464 000014 000024 MOV C.BUF(R4),C.BUF2(R4) ; PRESERVE BUFFER DESCRIPTOR
1753 005762 016464 000016 000026 MOV C.BUF+2(R4),C.BUF2+2(R4)
1754 005770 016764 000000G 000030 MOV $SDBSZ,C.CNT2(R4) ; GET SIZE
1755 005776 016464 000030 000020 MOV C.CNT2(R4),C.CNT(R4) ; SET BUF SIZE FOR USER
1756 006004 012764 000140 000012 MOV #NT.BOM!NT.EOM,C.STS(R4) ; INIT AS A WHOLE MSG
1757 006012 012764 001014 000010 MOV #NT$DAT*400!FC.RCP,C.FNC(R4) ; INIT FUNCTION AND MOD
1758 006020 10$: RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 37
DDM RECEIVE COMPLETE
1760 .SBTTL DDM RECEIVE COMPLETE
1761
1762 ;+
1763 ; CALLED FROM INTERRUPT SERVICE TO SEND OUT A CARD
1764 ;
1765 ; R4/CCB
1766 ; R5/DLT
1767 ;-
1768
1769 006022 032765 000020 000050 DDMRCP: BIT #CA.ABE,C.ASTS(R5) ; CHECK ABORTS
1770 006030 001416 BEQ 20$
1771 006032 MAP C.BUF(R4) ; ABORTING
1772 006040 016400 000016 MOV C.BUF+2(R4),R0
1773 006044 132760 000004 000003 BITB #ND.EOF,N.DFLG(R0) ; CHECK THIS CARD FOR EOF
1774 006052 001002 BNE 10$ ; YES!
1775 006054 CALLR FLSBUF ; NO - FLUSH THE BUFFER
1776
1777 006060 042765 000020 000050 10$: BIC #CA.ABE,C.ASTS(R5) ; ABORT CONDITION FULFILLED
1778 006066 112764 000002 000011 20$: MOVB #NT$DAT,C.MOD(R4) ; ADDRESS THE MSG
1779 006074 $TOBDM RC,C.STS(R4) ; SEND BUFFER OUT
1780 006112 005265 000056 INC C.IOCN(R5) ; COUNT IT
1781 006116 RETURN
1782
1783
1784 006120 005064 000012 NRDACK: CLR C.STS(R4) ; ACK A NRD MSG
1785
1786 006124 NRDRET: $TOBDM XM,C.STS(R4) ; RETURN MESSAGE WITH C.MOD AND C.STS
1787 006142 RETURN ; IT CAME WITH
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 38
FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES
1789 .SBTTL FLUSH (ABORT) ALL MESSAGES FROM THE READER QUEUES
1790
1791 ;+
1792 ; ABORT ALL FROM 1) DDMQ, 2) DLCQ ,3) MSGQ (IN THAT ORDER)
1793 ;-
1794
1795 006144 FLUSHQ: PUSH <R0,R3,R4> ; SAVE CURRENT CCB, DLT POINTERS, ETC
1796 006152 CALL STOPCR ; FLUSH THE DEVICE
1797
1798 006156 10$: DEQ$ C.DDMQ,20$ ; RETURN CURRENT READ BUFFERS TO POOL
1799 006232 CALL FLSBUF
1800 006236 000747 BR 10$
1801
1802 006240 20$: DEQ$ C.DLCQ,30$ ; ABORT ANY MSGS WAITING TO BE DONE
1803 006314 $TOBDM XM,#LS.ABO
1804 006332 000742 BR 20$
1805
1806 006334 30$: DEQ$ C.MSGQ,40$ ; FLUSH ANYTHING GOING OUT
1807 006410 CALL FLSBUF ; DUMP IT
1808 006414 000747 BR 30$
1809
1810 006416 105065 000126 40$: CLRB C.DWAK(R5) ; FLUSH ANY SUSPENDED PROCESSING
1811 006422 005065 000032 CLR C.PUBP+2(R5) ; NO CURRENT READ BUFFER
1812 006426 005065 000104 CLR C.DMAD+2(R5) ; NO CURRENT SOURCE BUFFER
1813 006432 005065 000102 CLR C.DMAD(R5)
1814 006436 005065 000106 CLR C.DMBS(R5) ; MAY HAVE BEEN A MESSAGE IN PROGRESS
1815 006442 005065 000124 CLR C.MSGS(R5) ; ...
1816
1817 006446 POP <R4,R3,R0> ; DONE
1818 006454 RETURN
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 39
INPUT ENABLE
1820 .SBTTL INPUT ENABLE
1821
1822 006456 032765 000042 000050 STRTCR: BIT #CA.PAU!CA.EOF,C.ASTS(R5) ; START THE CARD READER
1823 006464 001016 BNE 6$ ; CAN'T YET
1824 006466 032765 100000 000050 BIT #CA.XOF,C.ASTS(R5) ; CHECK XOF CONDITION
1825 006474 001404 BEQ 5$
1826 006476 022765 000005 000056 CMP #RDAHD,C.IOCN(R5) ; YES - CHECK READ AHEAD LIMIT
1827 006504 003406 BLE 6$ ; STOP READING
1828
1829 006506 005765 000044 5$: TST C.DDMQ(R5) ; CHECK FOR BUFFERS
1830 006512 001023 BNE 10$ ; YES - CAN PROCEED
1831 006514 CALL GETPBF ; GET A BUFFER
1832 006520 103004 BCC 7$ ; OK
1833 006522 112765 000001 000071 6$: MOVB #1,C.STRT(R5) ; SET PENDING READ
1834 006530 RETURN ; WAIT TIL ANOTHER TIME
1835
1836 006532 7$: ENQ$ C.DDMQ ; Q IT
1837 006562 005065 000032 10$: CLR C.PUBP+2(R5) ; INIT SOME THINGS TO CAUSE COLD STARTUP
1838 006566 105065 000071 CLRB C.STRT(R5) ; FLUSH THE PENDING READ
1839 006572 105065 000026 CLRB C.COLC(R5) ; CLEAR COLUMN COUNT FOR CLEAN START
1840 006576 042765 007700 000050 BIC #CA.ERR!CA.OFL!CA.TMO!CA.IVP,C.ASTS(R5) ; FLUSH CONDITIONS OF LAST CARD
1841
1842
1843 006604 112765 000005 000027 GOOSCR: MOVB #CRHNG,C.HUNG(R5) ; SET THE HUNG TIMER
1844 006612 012775 000101 000022 MOV #INTENB!READ,@C.CSR(R5) ; GOOSE IT
1845 006620 RETURN
1846
1847
1848 006622 005075 000022 STOPCR: CLR @C.CSR(R5) ; STOP THE INTERRUPTS
1849 006626 105065 000027 CLRB C.HUNG(R5) ; AND FLUSH THE HUNG TIMER
1850 006632 105065 000071 CLRB C.STRT(R5) ; FLUSH ANY PENDING READS
1851 006636 RETURN
1852
1853
1854 ; * SUSPEND READING - USER IS CONSTIPATED
1855 006640 052765 100000 000050 CRXOF: BIS #CA.XOF,C.ASTS(R5)
1856 006646 CALLR $CCBRT ; JUST THROW AWAY THE CCB
1857
1858 ; * USER IS HUNGRY AGAIN
1859 006652 CRXON: CALL $CCBRT ; FLUSH THE CCB
1860 006656 042765 100000 000050 BIC #CA.XOF,C.ASTS(R5)
1861 006664 105765 000071 TSTB C.STRT(R5) ; CHECK FOR PENDING READS
1862 006670 001001 BNE 10$ ; IF NONE, DON'T START
1863 006672 RETURN
1864 006674 10$: CALLR STRTCR ; TRY TO START IMMEDIATELY
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 40
CR11 HARDWARE DEVICE REGISTER DEFINITIONS
1866 .SBTTL CR11 HARDWARE DEVICE REGISTER DEFINITIONS
1867
1868 000000 CRS = 0 ; CARD READER STATUS REGISTER
1869
1870 000001 READ = 1 ; (W) FEED A CARD TO THE READ STATION
1871 000002 EJECT = 2 ; (R/W) INHIBIT COLUMN DONE & TIMERR
1872 000100 INTENB = 100 ; (R/W) INTERRUPT ENABLE
1873 ; (ERROR,CARD DONE,COLUMN DONE,
1874 ; OFFLINE OR ONLINE TRANSITION)
1875 000200 COLDN = 200 ; (R:I) COLUMN DONE - DATA READY
1876 000400 RDROFL = 400 ; (R) READER IS OFFLINE
1877 001000 BUSY = 1000 ; (R) READER BUSY
1878 002000 RDRONL = 2000 ; (R:I) READER TRANSITION TO ONLINE
1879 004000 TIMERR = 4000 ; (R) TIMING ERROR - SERVICE TOO SLOW
1880 010000 MOCHK = 10000 ; (R) MOTION CHECK -FORCES OFFLINE
1881 ; (FEED ERROR,MOTION ERROR,STACK FAIL)
1882 020000 HOCHK = 20000 ; (R) HOPPR CHECK - INPUT EMPTY OR OUTPUT FULL
1883 ; FORCES OFFLINE
1884 040000 CARDN = 40000 ; (R:I) CARD DONE
1885 100000 ERROR = 100000 ; (R:I) SUMMARY ERROR BIT
1886 ; SET BY: TRANSITION TO OFFLINE(HOCHK,MOCHK)
1887 ; TIMING ERROR(TIMERR) AT CARD DONE TIME
1888
1889 000002 CRB1 = CRS+2 ; IMAGE DATA REGISTER
1890 ; BIT 11 = ZONE 12
1891 ; BIT 10 = ZONE 11
1892 ; BIT 9 = ZONE 0
1893 ; BITS 8-0 = ROWS 1-9
1894
1895 000004 CRB2 = CRB1+2 ; COMPRESSED DATA REGISTER
1896 ; BIT 7 = ZONE 12
1897 ; BIT 6 = ZONE 11
1898 ; BIT 5 = ZONE 0
1899 ; BIT 4 = ROW 9
1900 ; BIT 3 = ROW 8
1901 ; BITS 2-0 = ROWS 1-7 ENCODED(SINGLE PUNCH)
1902 ; MULTIPUNCH IN 1-7 OR'S
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 41
INTERRUPT SERVICE ROUTINE
1904 .SBTTL INTERRUPT SERVICE ROUTINE
1905
1906 ;+
1907 ; R5/PTR TO DLT+C.PRI
1908 ;
1909 ; NURD MSG FORMAT: <0><MSG FLAGS><SEQ><DATA FLAGS><SEG CNT><...SEGS...>
1910 ;
1911 ; SEGMENT FORMAT: <CNT><...CNT DATA ITEMS> OR <200!CNT><DATA ITEM>
1912 ; EOR SEGMENT: <0>
1913 ;-
1914
1915 006700 162705 000020 $CRINT::SUB #C.PRI,R5 ; POINT TO TOP OF DLT
1916 006704 105065 000027 CLRB C.HUNG(R5) ; MAKE SURE HUNG TIMER IS OFF
1917 006710 SAVMAP
1918 006714 PUSH <R0,R1,R2,R3,R4>
1919 006726 016503 000022 MOV C.CSR(R5),R3 ; R3/CSR ADR
1920 006732 012365 000024 MOV (R3)+,C.RST(R5) ; READ THE STATUS
1921 006736 100002 BPL 10$
1922 006740 CALLR INTERR ; ERRORS
1923
1924 006744 032765 000200 000024 10$: BIT #COLDN,C.RST(R5) ; CHECK COLUMN DONE
1925 006752 001002 BNE 20$
1926 006754 CALLR CRDEND ; MUST BE CARD DONE
1927
1928 ; * COLUMN DONE - READ DATA
1929 006760 105365 000026 20$: DECB C.COLC(R5) ; COUNT THE COLUMN
1930 006764 001002 BNE 30$
1931 006766 CALLR INTERR ; READING BEYOND DEVICE WIDTH
1932
1933 006772 012300 30$: MOV (R3)+,R0 ; R0/IMAGE DATA
1934 006774 105765 000213 TSTB CR.EOF+F.FCV(R5) ; CHECK EOF?
1935 007000 001421 BEQ 50$ ; NOT INTERESTED
1936 007002 032765 000040 000050 BIT #CA.EOF,C.ASTS(R5) ; EOF ALREADY ENCOUNTERED ?
1937 007010 001402 BEQ 40$ ; NO
1938 007012 000167 000522 JMP 190$ ; YES, SKIP JUNK
1939
1940 007016 022700 007417 40$: CMP #EOFASC,R0 ; CHECK FOR EOF PUNCH
1941 007022 001010 BNE 50$
1942 007024 005765 000032 TST C.PUBP+2(R5) ; CHECK COLUMN 1
1943 007030 001005 BNE 50$
1944 007032 052765 000042 000050 BIS #CA.EOF!CA.PAU,C.ASTS(R5) ; SET EOF AND PAUSE
1945 007040 005046 CLR -(SP) ; PUT A FAKE DATA MODE INDICATOR ON
1946 007042 000465 BR 100$ ; STACK FOR LATER CODE TO CLEAN OFF
1947
1948 007044 116504 000210 50$: MOVB CR.DAT+F.FCV(R5),R4 ; CHECK DATA MODE
1949 007050 162704 000002 SUB #DM.CLI,R4 ; CREATE 3 STATE FLAG FOR LATER USE
1950 007054 010446 MOV R4,-(SP) ; TOP OF STACK = DATA MODE FLAG:
1951 ; < 0 => ASCII MODE
1952 ; = 0 => COLUMN IMAGE MODE
1953 ; > 0 => AUGMENTED COLUMN IMAGE MODE
1954 007056 001457 BEQ 100$ ; IMAGE
1955 007060 012301 MOV (R3)+,R1 ; R1/CODED DATA
1956 007062 010102 MOV R1,R2
1957 007064 042702 177770 BIC #^C7,R2
1958 007070 006302 ASL R2 ; MAKE WORD OFFSET
1959 007072 042701 000007 BIC #7,R1
1960 007076 006201 ASR R1
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 41-1
INTERRUPT SERVICE ROUTINE
1961 007100 006201 ASR R1 ; R1/Z<12,11,0,9,8>*2, R2/<Z1-Z7 CODE>*2
1962 007102 005716 TST (SP) ; CHECK DATA MODE
1963 007104 002024 BGE 80$ ; AUGMENTED COLUMN IMAGE MODE
1964
1965 ; * ASCII MODE
1966 007106 006000 ROR R0 ; CHECK FOR MULTIPUNCH
1967 007110 000241 CLC
1968 007112 106000 RORB R0 ; LO R0/0+Z1-Z7
1969 007114 146200 000430' BICB ZTAB(R2),R0 ; FLUSH SINGLE ZONE
1970 007120 001003 BNE 60$ ; NONZERO => MULTIPUNCH
1971 007122 016101 000330' MOV ZONTAB(R1),R1 ; GET TABLET
1972 007126 001006 BNE 70$ ; ZONES OK
1973 ; ILLEGAL ZONE COMBINATION
1974 007130 012700 000334 60$: MOV #ERRCHR,R0 ; ILLEGAL CHARACTER
1975 007134 052765 002000 000050 BIS #CA.IVP,C.ASTS(R5) ; SET INVALID PUNCH FLAG
1976 007142 000425 BR 100$
1977
1978 007144 006202 70$: ASR R2 ; GET BYTE OFFSET BACK
1979 007146 060201 ADD R2,R1 ; R1/TABLET ENTRY
1980 007150 005000 CLR R0 ; MAKE FULL WORD DATA ITEM
1981 007152 151100 BISB (R1),R0 ; R0/TRANSLATED CHARACTER
1982 007154 000420 BR 100$
1983
1984 ; * AUGMENTED COLUMN IMAGE
1985 007156 010004 80$: MOV R0,R4 ; CHECK ERRORS
1986 007160 006004 ROR R4
1987 007162 000241 CLC
1988 007164 106004 RORB R4 ; LO R4/0+Z1-Z7
1989 007166 146204 000430' BICB ZTAB(R2),R4 ; FLUSH ZONE BIT
1990 007172 001405 BEQ 90$ ; ZERO => SINGLE PUNCH
1991 007174 052700 100000 BIS #100000,R0 ; MULTIPUNCH
1992 007200 052765 002000 000050 BIS #CA.IVP,C.ASTS(R5) ; SET INVALID PUNCH FLAG
1993 007206 000300 90$: SWAB R0 ; STUFF Z1-Z7 CODE IN UPPER HALF
1994 007210 156200 000431' BISB ZTAB+1(R2),R0
1995 007214 000300 SWAB R0
1996
1997 ; * WE NOW HAVE THE DECODED CHARACTER
1998 007216 100$: MAP C.PUBP(R5) ; MAP THE BUFFER
1999 007224 016503 000032 MOV C.PUBP+2(R5),R3 ; R3/CURRENT BUFFER PTR
2000 007230 001412 BEQ 110$ ; 1ST COLUMN
2001 007232 016502 000034 MOV C.SGHD(R5),R2 ; GET SEGMENT HEAD ADR
2002 007236 001451 BEQ 120$ ; NONE IN PROGRESS
2003 007240 105712 TSTB (R2)
2004 007242 100066 BPL 130$ ; CHECK FOR COMPRESSION
2005
2006 ; * COMPRESSED SEGMENT
2007 007244 020065 000036 CMP R0,C.LDAT(R5) ; CHECK CONTINUITY
2008 007250 001044 BNE 120$ ; END OF SEQUENCE
2009 007252 105212 INCB (R2) ; COUNT ANOTHER - ASSUME 127 COL LIMIT HERE
2010 007254 000530 BR 180$
2011
2012 ; * NEW CARD, SO SET UP THE BUFFER
2013 007256 016503 000044 110$: MOV C.DDMQ(R5),R3 ; 1ST COLUMN - SET UP PTRS
2014 007262 016365 000016 000032 MOV C.BUF+2(R3),C.PUBP+2(R5); BUFFER ADDRESS
2015 .IF DF M$$MGE
2016 007270 016365 000014 000030 MOV C.BUF(R3),C.PUBP(R5) ; BUFFER VIRTUAL ADDRESS
2017 007276 016367 000014 172354 MOV C.BUF(R3),KISAR6
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 41-2
INTERRUPT SERVICE ROUTINE
2018 .ENDC
2019 007304 016503 000032 MOV C.PUBP+2(R5),R3 ; GET R3/BUFFER ADDRESS
2020 007310 010365 000042 MOV R3,C.NRDA(R5) ; SAVE BEG OF NURD MSG
2021 007314 116565 000215 000026 MOVB CR.DWD+F.FCV(R5),C.COLC(R5) ; SET COLUMN COUNTER
2022
2023 ; * FORMAT A NURD MESSAGE
2024 007322 112723 000000 MOVB #NM.DAT,(R3)+ ; MSGTYPE = DATA
2025 007326 105023 CLRB (R3)+ ; NO MSG FLAGS
2026 007330 105265 000052 INCB C.CDCT(R5) ; COUNT THE CARD
2027 007334 116523 000052 MOVB C.CDCT(R5),(R3)+ ; INSERT SEQ NO. = LO CARD COUNT
2028 007340 105023 CLRB (R3)+ ; INIT DATA FLAGS
2029 007342 105023 CLRB (R3)+ ; INIT SEGMENT COUNT
2030 007344 005065 000034 CLR C.SGHD(R5) ; FLUSH C.SGHD
2031 007350 005065 000036 CLR C.LDAT(R5) ; FLUSH C.LDAT
2032 007354 012765 000005 000040 MOV #N.DDAT,C.PUBS(R5) ; SET BUFFER COUNT TO MSG OVERHEAD
2033
2034 007362 010302 120$: MOV R3,R2 ; BEGIN NEW SEGMENT
2035 007364 105023 CLRB (R3)+ ; INIT NEW SEGMENT HEADER
2036 007366 005265 000040 INC C.PUBS(R5) ; COUNT SEG HEAD IN BUFFER
2037 007372 010265 000034 MOV R2,C.SGHD(R5) ; SAVE NEW HDR ADR
2038 007376 016504 000042 MOV C.NRDA(R5),R4 ; GET MSG BEG
2039 007402 105264 000004 INCB N.DSGC(R4) ; INCREMENT TOTAL SEGMENT COUNT
2040 007406 032765 000040 000050 BIT #CA.EOF,C.ASTS(R5) ; DID WE GET EOF CHARACTER ?
2041 007414 001432 BEQ 160$ ; NO
2042 007416 000445 BR 170$ ; YES, LEAVE
2043
2044 007420 020065 000036 130$: CMP R0,C.LDAT(R5) ; SEE IF NEW COMPR SEQ
2045 007424 001026 BNE 160$ ; NO - JUST BUFFER THE COL
2046 007426 005716 TST (SP) ; REMOVE DATA ITEM FROM BUFFER
2047 007430 002403 BLT 140$
2048 007432 005303 DEC R3 ; WORD
2049 007434 005365 000040 DEC C.PUBS(R5) ; REM FROM BUFFER
2050 007440 005303 140$: DEC R3 ; BYTE
2051 007442 005365 000040 DEC C.PUBS(R5) ; REM FROM BUFFER
2052 007446 105312 DECB (R2) ; REMOVE PREVIOUS DATA ITEM FROM LAST SEG
2053 007450 001411 BEQ 150$ ; REMOVED WHOLE SEGMENT
2054 007452 010302 MOV R3,R2 ; BEGIN NEW SEGMENT
2055 007454 010265 000034 MOV R2,C.SGHD(R5) ; SAVE NEW HDR ADR
2056 007460 016504 000042 MOV C.NRDA(R5),R4
2057 007464 105264 000004 INCB N.DSGC(R4) ; INCREMENT TOTAL SEGMENT COUNT
2058 007470 005265 000040 INC C.PUBS(R5) ; COUNT NEW SEG HEAD IN BUFFER
2059
2060 007474 010203 150$: MOV R2,R3 ; SET BUFFER PTR BACK TO SEG HEAD
2061 007476 112723 000201 MOVB #ND.CMP+1,(R3)+ ; NEW SEGMENT - INIT AS A COMPRESSED SEG
2062 007502 010065 000036 160$: MOV R0,C.LDAT(R5) ; SAVE NEW DATA ITEM IN C.LDAT
2063 007506 110023 MOVB R0,(R3)+ ; INSERT NEW DATA ITEM(LO) IN BUFFER
2064 007510 005265 000040 INC C.PUBS(R5) ; COUNT IT IN BUFFER
2065 007514 105212 INCB (R2) ; COUNT IT IN SEGMENT
2066 007516 005716 TST (SP) ; CHECK DATA MODE => DATA LENGTH
2067 007520 002404 BLT 170$ ; ASCII - 1 BYTE
2068 007522 000300 SWAB R0 ; OTHERWISE - 2 BYTES
2069 007524 110023 MOVB R0,(R3)+ ; INSERT NEW DATA ITEM(HI) IN BUFFER
2070 007526 005265 000040 INC C.PUBS(R5) ; COUNT IT IN BUFFER
2071 ; BUT NOT IN SEGMENT
2072 007532 010365 000032 170$: MOV R3,C.PUBP+2(R5) ; SAVE UPDATED BUFFER PTR
2073 007536 005726 180$: TST (SP)+ ; FLUSH DATA MODE FLAG
2074 007540 032765 040000 000024 190$: BIT #CARDN,C.RST(R5)
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 41-3
INTERRUPT SERVICE ROUTINE
2075 007546 001061 BNE CRDEND ; CARD FINISHED ALSO
2076 007550 112765 000005 000027 MOVB #CRHNG,C.HUNG(R5) ; EXIT - SET TIMER
2077 007556 POP <R4,R3,R2,R1,R0>
2078 007570 RESMAP
2079 007574 $INTXT
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 42
INTERRUPT SERVICE ROUTINE
2081 007600 016501 000024 INTERR: MOV C.RST(R5),R1 ; ERROR-INTERRUPT ENTRY POINT
2082 007604 012700 000002 MOV #CA.PAU,R0 ; DETECT INDIVIDUAL ERRORS
2083 007610 032701 020000 BIT #HOCHK,R1
2084 007614 001402 BEQ 11$
2085 007616 052700 000100 BIS #CA.HOP,R0 ; HOPPER CHECK
2086
2087 007622 032701 010000 11$: BIT #MOCHK,R1
2088 007626 001402 BEQ 12$
2089 007630 052700 000200 BIS #CA.MOT,R0 ; MOTION CHECK
2090
2091 007634 032701 004000 12$: BIT #TIMERR,R1
2092 007640 001402 BEQ 13$
2093 007642 052700 000400 BIS #CA.TER,R0 ; TIMING ERROR
2094
2095 007646 032701 000400 13$: BIT #RDROFL,R1
2096 007652 001402 BEQ 14$
2097 007654 052700 001000 BIS #CA.OFL,R0 ; READER OFFLINE
2098
2099 007660 050065 000050 14$: BIS R0,C.ASTS(R5) ; MARK ERROR => PAUSE ALSO
2100 007664 005765 000032 TST C.PUBP+2(R5) ; CHECK FOR EXISTING BUFFER
2101 007670 001410 BEQ CRDEND ; NO CARD TO MARK ERRORS
2102 007672 MAP C.PUBP(R5) ; MAP TO THE BUFFER
2103 007700 016501 000042 MOV C.NRDA(R5),R1 ; AND GET PTR TO PLACE IN BUFFER
2104 007704 152761 000002 000003 BISB #ND.IER,N.DFLG(R1) ; SET ERROR STATUS FLAG IN NURD MSG
2105 ; CALLR CRDEND ; FALL INTO CRDEND
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 43
INTERRUPT SERVICE ROUTINE
2107 ; * CARD DONE
2108 007712 005075 000022 CRDEND: CLR @C.CSR(R5) ; STOP THE READER
2109 007716 POP <R4,R3,R2,R1,R0> ; RESTORE INTERRUPT LEVEL REGISTERS
2110 007730 RESMAP
2111 007734 062705 000020 ADD #C.PRI,R5 ; POINT AT C.PRI IN DLT, FOR $INTSX
2112 007740 $INTSX ; RE-SCHEDULE AND DROP PRIORITY.
2113 007744 162705 000022 SUB #<C.PRI+2>,R5 ; BACK TO FRONT OF DLT
2114 007750 SAVMAP ; SAVE APR6
2115 007754 PUSH <R0,R1,R2,R3> ; SAVE TASK LEVEL REGISTERS
2116 007764 MAP C.PUBP(R5)
2117 007772 016503 000032 MOV C.PUBP+2(R5),R3 ; GET THE BUFFER PTR
2118 007776 001450 BEQ 20$ ; NULL CARD
2119 010000 105013 CLRB (R3) ; INSERT EOR = NULL SGMENT
2120 010002 016501 000040 MOV C.PUBS(R5),R1 ; GET THE BUFFER CNT
2121 010006 005201 INC R1 ; COUNT THE EOR IN THE BUFFER
2122 010010 016504 000042 MOV C.NRDA(R5),R4 ; GET THE MSG PTR
2123 010014 105264 000004 INCB N.DSGC(R4) ; COUNT THE EOR IN MSG SEGMENT CNT
2124 010020 DEQ$ C.DDMQ
2125 010066 010164 000020 MOV R1,C.CNT(R4) ; STUFF FINAL BUFFER CNT IN CCB
2126 010072 032765 000040 000050 BIT #CA.EOF,C.ASTS(R5) ; CHECK FOR EOF
2127 010100 001405 BEQ 10$
2128 010102 016501 000042 MOV C.NRDA(R5),R1 ; INSERT EOF IN MSG
2129 010106 152761 000004 000003 BISB #ND.EOF,N.DFLG(R1)
2130
2131 010114 10$: CALL DDMRCP ; SEND OFF THE CARD
2132 010120 032765 000046 000050 20$: BIT #CA.PAU!CA.ADN!CA.EOF,C.ASTS(R5) ; DO WE NEED TO PAUSE ?
2133 010126 001411 BEQ 30$ ; NO
2134 010130 105765 000067 TSTB C.RATT(R5) ; PAUSING, ATTN ALREADY PENDING ?
2135 010134 001010 BNE 40$ ; YES, DON'T OVERWRITE CODE
2136 010136 112765 000001 000067 MOVB #N.ASTC,C.RATT(R5) ; SET THE CODE
2137 010144 CALL SNDATT ; INSTIGATE THE ATTN MESSAGE
2138 010150 000402 BR 40$ ; GET ON OUT
2139
2140 010152 30$: CALL STRTCR ; START NEXT CARD
2141 010156 40$: POP <R3,R2,R1,R0> ; RESTORE REGISTERS
2142 010166 RESMAP ; RESTORE APR6
2143 010172 RETURN
2144
2145
2146 .SBTTL THE END
2147 000001 .END
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 43-1
SYMBOL TABLE
ABRTAL 004506R CRASH 000472R C.CNT1 000020 DM.AS8= 000005 FERNST 001776R
ABRTCL 004554R CRB1 = 000002 C.CNT2 000030 DM.AUG= 000004 FERUSF 001762R
ABRTEF 004474R CRB2 = 000004 C.COLC 000026 G DM.CLI= 000002 FE.ALL= 000377
ACK = 000006 CRCCP 000532R C.CSR 000022 G DM.EBC= 000003 FE.CAL= 000040
A$$CHK= 000000 CRCLOS 005544R C.DDMQ 000044 G DTXTSZ= 000020 G FE.DAT= 000001
A$$CPS= 000000 CRCTL 000474R C.DFET 000204 G DUMP 004334R FE.DRV= 000010
A$$PRI= 000000 CRCWDS= 000131 G C.DFSP 000130 G DWAKP = 000002 G FE.DVT= 000006
A$$TRP= 000000 CRDATS= 000131 G C.DLCQ 000072 G DWAKR = 000004 G FE.DWD= 000011
BADCON 003552R CRDEND 007712R C.DMAD 000102 G DWAKS = 000001 G FE.EOF= 000005
BEL = 000007 CRDLRE 005242R C.DMBS 000106 G DWAKT = 000003 G FE.ESC= 000000
BS = 000010 CREOFS= 000101 G C.DMSQ 000110 G D$$BUG= 177514 FE.EXP= 000200
BUSY = 001000 CRHNG = 000005 C.DTXL 000127 G D$$ISK= 000000 FE.EXT= 000001
CAN = 000030 CRNURD 000600R C.DTXT 000132 G D$$L11= 000001 FE.EXV= 000004
CAPREQ 004604R CROPEN 005314R C.DWAK 000126 G D$$YNC= 000000 FE.FNM= 000010
CARDN = 040000 CRS = 000000 C.FLG 000022 D$$YNM= 000000 FE.FWD= 000004
CA.ABE= 000020 G CRTIM 005042R C.FLG1 000022 EJECT = 000002 FE.LCR= 000003
CA.ABO= 000010 G CRXOF 006640R C.FLG2 000032 EM = 000031 FE.LSI= 000400
CA.ADN= 000004 G CRXON 006652R C.FNC 000010 ENQ = 000005 FE.MUP= 000002
CA.CLO= 000001 G CR.CWD 000216 G C.HUNG 000027 G EOFASC= 007417 FE.MXT= 040000
CA.EOF= 000040 G CR.DAT 000207 G C.IOCN 000056 G EOT = 000004 FE.NLG= 100000
CA.ERR= 000700 G CR.DWD 000214 G C.IOWT 000060 G EO.ASC= 000001 FE.PKT= 000100
CA.HOP= 000100 G CR.EOF 000212 G C.LDAT 000036 G EO.IMG= 000002 FE.PLA= 000020
CA.IVP= 002000 G CS.ABO= 000100 C.LIN 000006 ERRCHR= 000334 FE.SER= 000002
CA.MOT= 000200 G CS.BUF= 000200 C.LNK 000000 ERROR = 100000 FE.TRN= 000007
CA.OFL= 001000 G CS.DCR= 000400 C.MFLG 000076 G ESC = 000033 FF = 000014
CA.PAU= 000002 G CS.DEV= 000002 C.MOD 000011 ETB = 000027 FLSBUF 005254R
CA.TER= 000400 G CS.DIS= 000040 C.MSGA 000120 G ETX = 000003 FLUSHQ 006144R
CA.TMO= 004000 G CS.ENB= 000020 C.MSGQ 000114 G E$$XPR= 000000 FNCOTR= 000022
CA.XOF= 100000 G CS.EOF= 000001 C.MSGS 000124 G FB.CA = 000100 G FREAD 002072R
CB.CCB= 000002 CS.ERR= 100000 C.NFSP 000100 G FB.CL0= 000000 G FR.BCL= 000002
CB.RDB= 000004 CS.HFE= 002000 C.NRDA 000042 G FB.CL1= 000001 G FR.CPN= 000005
CCFETL= 000011 G CS.LST= 040000 C.NSP 000004 FB.CP = 000040 G FR.DNP= 000007
CDFETL= 000002 G CS.MTL= 004000 C.PBRC 000112 G FB.SST= 000020 G FR.ERR= 000004
CD.CWD= 000202 CS.RNG= 000010 C.PRI 000020 G FB.STE= 000010 G FR.NEB= 000006
CE.ABO= 100362 CS.ROV= 000004 C.PUBP 000030 G FB.STR= 000004 G FR.NST= 000003
CE.DIS= 100366 CS.RSN= 010000 C.PUBS 000040 G FB.WRD= 000002 G FR.USF= 000001
CE.ERR= 100370 CS.SUC= 000001 C.RATT 000067 G FC.CCP= 000020 FS = 000034
CE.MOP= 100372 CS.TMO= 020000 C.RECO 000066 G FC.CLM= 000003 FSET 002302R
CE.NTE= 100361 CTLDSP 003574R C.RST 000024 G FC.CL0= 000000 FS.AST= 000000
CE.RTE= 100376 CTLOTR= 000012 C.RSV 000002 FC.CL1= 000001 FS.CIB= 002000
CE.SRC= 100364 CTLSTP 005544R C.SGHD 000034 G FC.CTL= 000006 FS.CRA= 001000
CE.TMO= 100374 CTLSTR 005314R C.SLN 000054 G FC.KCP= 000016 FS.DIS= 013000
CF.EOM= 000004 C$$CKP= 000000 C.STA 000007 FC.KIL= 000004 FS.DVC= 001000
CF.HDR= 000020 C$$ORE= 000400 C.STRT 000071 G FC.RCE= 000002 FS.ENB= 012000
CF.LB = 100000 C$$RSH= 177564 C.STS 000012 FC.RCP= 000014 FS.GET= 006000
CF.SOM= 000010 C.ASTS 000050 G C.TIMC 000000 G FC.SST= 000002 FS.INI= 000000
CF.SYN= 000040 C.BID 000003 C.TIMI 000001 G FC.TIM= 000010 FS.KIL= 000000
CF.TRN= 000100 C.BUF 000014 DC1 = 000021 FC.XCP= 000012 FS.LTM= 001000
CH.64 = 000001 C.BUF1 000014 DC2 = 000022 FC.XME= 000000 FS.MNT= 004000
CH.96 = 000002 C.BUF2 000024 DC3 = 000023 FEACON 001720R FS.MSN= 014000
CLOSWT 005654R C.CALL 000002 G DC4 = 000024 FEATRS 001464R FS.RNG= 011000
CMODE = 140000 C.CAPN 000077 G DDMRCP 006022R FEFND 003176R FS.RTN= 001000
COLDN = 000200 C.CAPP 000070 G DEL = 000177 FERBCL 001770R FS.SET= 005000
CONINT 003274R C.CDCT 000052 G DFSLEP 001066R FERCPN 002012R FS.STM= 000000
CONSYN 003620R C.CFET 000172 G DFWAKE 001152R FERDNP 002026R FS.STP= 002000
CONTRL 003260R C.CMSQ 000062 G DLE = 000020 FERERR 002004R FS.STR= 001000
CR = 000015 C.CNT 000020 DM.ASC= 000001 FERNEB 002020R FS.TRM= 003000
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 43-2
SYMBOL TABLE
FS.XKL= 002000 MBSND 003026R NM.CAP= 000005 NT.EOM= 000100 N.NSPC= 000003
FS.XOF= 010000 MOCHK = 010000 NM.CTL= 000003 NT.FCN= 037400 N.OPDL 000136
FS.XON= 007000 MPAR = 172100 NM.DAT= 000000 NT.MD1= 000420 N.OPTD 000140
F$$LVL= 000001 MPCSR = 177746 NM.FTR= 000002 NT.MFL= 000002 N.PASL 000102
F.FCV = 000001 G M$$CRB= 000124 NM.OTR= 000006 NT.MOD= 000020 N.PASS 000104
F.FSB = 000000 G M$$CRX= 000000 NM.TYP= 000017 NT.MOM= 000000 N.PCAP= 000003
F.FSV = 000002 G M$$FCS= 000000 NP$RTR= 000003 NT.NAK= 000002 N.PCNT= 000002
GB 001224R M$$MGE= 000000 NRDACK 006120R NT.NFL= 000000 N.RQDL 000060
GBDQ 001372R M$$OVR= 000000 NRDOTR= 000006 NT.SFL= 000001 N.RQID 000062
GETMBF 005740R NAK = 000025 NRDRET 006124R NT.SOL= 000140 N.RSRV= 000030
GETPBF 005706R NA.DTO= 000004 NRMACK 000560R NT.XOF= 000004 N.SDL1 000036
GOOSCR 006604R NA.FAT= 000001 NR.ABS= 000000 NT.XON= 000010 N.SDL2 000042
GS = 000035 NA.INK= 000040 NR.ACC= 000000 NUL = 000000 N.SDS1 000040
G$$TPP= 000000 NA.IVP= 000001 NR.ACN= 000001 N$$DAT= 000030 N.SDS2 000056
G$$TSS= 000000 NA.JAM= 000020 NR.ATT= 000000 N$$DIS= 000020 N.SEG 000006
G$$TTK= 000000 NA.NAC= 000002 NR.CAP= 000000 N$$INT= 000020 N.SFMT 000034
G$$WRD= 000000 NA.NOE= 000100 NR.DMP= 000000 N$$LDV= 000001 N.SGRP 000036
HOCHK = 020000 NA.OFL= 000002 NR.DPS= 000000 N$$MOV= 000010 N.SOBJ 000035
HT = 000011 NA.OMD= 000010 NR.NAB= 000001 N$$OPT= 000020 N.SUSR 000040
INTENB= 000100 NA.OOF= 000040 NR.NDP= 000002 N$$OVR= 000042 N.TYP = 000000
INTERR 007600R NA.OUF= 000001 NR.NDR= 000002 N$$SYS= 000001 PAUSE 004356R
I$$RAR= 000000 NA.OVP= 000001 NR.NDV= 100377 N$$USR= 000001 PIRQ = 177772
I$$RDN= 000000 NA.PAU= 000004 NR.NOB= 000001 N.AABC= 000004 PMODE = 030000
KDSAR0= 172360 NA.PF = 000020 NR.NOE= 000002 N.AACK= 000002 PR0 = 000000
KDSDR0= 172320 NA.PSE= 000020 NR.NPS= 000001 N.ACNT 000116 PR1 = 000040
KISAR0= 172340 NA.RAP= 000040 NR.PAU= 000001 N.ACOD= 000003 PR4 = 000200
KISAR5= 172352 NA.REG= 000100 NR.RES= 000000 N.ACTL 000114 PR5 = 000240
KISAR6= 172354 NA.RNA= 000010 NS.BOM= 000040 N.AFLG= 000004 PR6 = 000300
KISAR7= 172356 NC.AUC= 000002 NS.EOM= 000100 N.ALGD= 000002 PR7 = 000340
KISDR0= 172300 NC.AUE= 000001 NS.MFL= 000003 N.APLE= 000005 PS = 177776
KISDR6= 172314 NC.CAB= 000003 NS.MOM= 000000 N.ARQS= 000003 P$$DDC= 000001
KISDR7= 172316 NC.DMP= 000005 NS.NFL= 000001 N.ASTC= 000001 P$$P45= 000000
K$$CNT= 177546 NC.FM0= 000000 NS.SET= 000002 N.CCMD= 000003 P$$WRD= 000000
K$$CSR= 177546 NC.FM1= 000001 NS.SFL= 000002 N.CRES= 000004 QDLC 000750R
K$$LDC= 000000 NC.FM2= 000002 NS.SOL= 000140 N.CSEQ= 000002 QTODLC 000726R
K$$TPS= 000074 NC.PAU= 000006 NS.SUC= 000001 N.DDAT= 000005 Q$$OPT= 000010
LD$LP = 000000 NC.RES= 000007 NT$ABO= 000022 N.DDL1 000012 RDAHD = 000005
LF = 000012 NC.RQC= 000011 NT$ACC= 000002 N.DDL2 000016 RDROFL= 000400
LP.CHS= 000210 NC.RQS= 000004 NT$ADS= 000000 N.DDS1 000014 RDRONL= 002000
LP.CVF= 000205 ND.ACK= 000001 NT$CON= 000000 N.DDS2 000020 READ = 000001
LP.FCC= 000206 ND.CMP= 000200 NT$DAT= 000002 N.DFLG= 000003 RECON 003356R
LP.HT = 000202 ND.EOF= 000004 NT$DIS= 000010 N.DFMT 000010 RESUME 004406R
LP.OPV= 000212 ND.IER= 000002 NT$INT= 000004 N.DGRP 000012 RS = 000036
LP.OVP= 000204 NE.ABO= 177776 NT$MOD= 000012 N.DOBJ 000011 R$$DER= 000000
LP.PLE= 000211 NE.ACT= 177771 NT$NAK= 000022 N.DSEQ= 000002 R$$K11= 000001
LP.SFC= 000203 NE.CLS= 177767 NT$OFF= 000026 N.DSGC= 000004 R$$SND= 000000
LP.VFR= 000207 NE.DIS= 177777 NT$ON = 000002 N.DUSR 000014 R$$11M= 000000
LS.ABO= 100201 NE.FMT= 177770 NT$QRY= 000014 N.FCLS= 000002 SETSTD 002532R
LS.BOM= 100205 NE.NDT= 177766 NT$REJ= 000004 N.FDAT= 000004 SI = 000017
LS.CLO= 100203 NE.NOD= 177774 NT$RTI= 000010 N.FFLG= 000001 SISDR0= 172200
LS.ILM= 100204 NE.REJ= 177775 NT$RTN= 000000 N.FID = 000000 SNDALR 004762R
LS.REJ= 100202 NE.RES= 177773 NT$SNG= 000006 N.FRSP= 000003 SNDATT 004014R
L$$ASG= 000000 NE.TIM= 177772 NT$STP= 000004 N.FSEQ= 000002 SNDCAP 004614R
L$$DRV= 000000 NF.CMD= 000001 NT$XOF= 000020 N.FSPC= 000004 SNDSTS 003774R
L$$P11= 000001 NF.STD= 000002 NT$XON= 000016 N.LGTH= 000160 SO = 000016
L$$11R= 000000 NM.ALR= 000004 NT.ACK= 000001 N.MFL = 000001 SOH = 000001
MB 002664R NM.ATT= 000001 NT.BOM= 000040 N.NODE 000000 SPA = 000040
CR - NURD CR11 CARD READER MACRO M1110 13-OCT-79 08:29 PAGE 43-3
SYMBOL TABLE
SR0 = 177572 UDSDR0= 177620 X$$DBT= 000000 ZON23 000200R $CCBRT= ****** GX
SR3 = 172516 UISAR0= 177640 ZONTAB 000330R ZON24 000070R $CRINT 006700RG
STOPCR 006622R UISAR4= 177650 ZON0 000000R ZON25 000230R $CRTB 000450RG
STRTCR 006456R UISAR5= 177652 ZON1 000040R ZON26 000240R $CSBGT= ****** GX
STX = 000002 UISAR6= 177654 ZON10 000020R ZON27 000320R $CSBRT= ****** GX
SUB = 000032 UISAR7= 177656 ZON11 000130R ZON3 000170R $CTCMP= ****** GX
SWR = 177570 UISDR0= 177600 ZON12 000140R ZON30 000060R $INTSX= ****** GX
SYN = 000026 UISDR4= 177610 ZON13 000210R ZON31 000250R $INTX7= ****** GX
S$$WRG= 000000 UISDR5= 177612 ZON14 000120R ZON32 000260R $RCCMP= ****** GX
S$$YSZ= 007600 UISDR6= 177614 ZON15 000270R ZON33 000310R $RDBGT= ****** GX
TIMERR= 004000 UISDR7= 177616 ZON16 000300R ZON4 000030R $RDBRT= ****** GX
TPS = 177564 US = 000037 ZON2 000050R ZON5 000150R $RDBSZ= ****** GX
T$$KMG= 000000 VF.6LI= 000001 ZON20 000010R ZON6 000160R $SDBSZ= ****** GX
T$$MIN= 000000 VF.8LI= 000002 ZON21 000100R ZON7 000220R $XMCMP= ****** GX
UBMPR = 170200 VT = 000013 ZON22 000110R ZTAB 000430R $$ = 000040
UDSAR0= 177660 V$$CTR= 001000
. ABS. 000221 000
010174 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 18848 WORDS ( 74 PAGES)
DYNAMIC MEMORY: 20620 WORDS ( 79 PAGES)
ELAPSED TIME: 00:02:50
CR,[131,34]CR/CR/-SP=[130,10]NETLIB/ML,RSXTMP/PA:1,[131,10]CR
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ABRTAL 004506 R 24-1283 #29-1494
ABRTCL 004554 R 24-1284 #29-1506
ABRTEF 004474 R 24-1282 #29-1489
ACK = 000006 #9-208 10-435
BADCON 003552 R 24-1227 24-1229 24-1231 #24-1275 24-1281 24-1289
BEL = 000007 #9-209 10-436
BS = 000010 #9-210 10-376
BUSY = 001000 #40-1877
CAN = 000030 #9-226 10-419
CAPREQ 004604 R 24-1290 #30-1518
CARDN = 040000 #40-1884 41-2074
CA.ABE = 000020 G #5-119 28-1472 29-1489 29-1507 29-1509 37-1769 37-1777
CA.ABO = 000010 G #5-119 15-693 28-1472 29-1495 29-1507 29-1509
CA.ADN = 000004 G #5-119 17-796 24-1277 25-1341 26-1381 27-1454 28-1465 28-1472 43-2132
CA.CLO = 000001 G #5-119 14-650 34-1667 34-1699 35-1716
CA.EOF = 000040 G #5-119 28-1467 28-1472 39-1822 41-1936 41-1944 41-2040 43-2126 43-2132
CA.ERR = 000700 G #5-119 28-1472 32-1600 32-1606 39-1840
CA.HOP = 000100 G #5-119 5-119 26-1393 26-1400 42-2085
CA.IVP = 002000 G #5-119 26-1415 39-1840 41-1975 41-1992
CA.MOT = 000200 G #5-119 5-119 26-1381 26-1408 42-2089
CA.OFL = 001000 G #5-119 26-1385 32-1600 32-1606 39-1840 42-2097
CA.PAU = 000002 G #5-119 26-1389 27-1454 27-1456 28-1465 28-1472 34-1670 39-1822 41-1944
42-2082 43-2132
CA.TER = 000400 G #5-119 5-119 26-1381 42-2093
CA.TMO = 004000 G #5-119 26-1404 28-1465 28-1472 32-1616 39-1840
CA.XOF = 100000 G #5-119 39-1824 39-1855 39-1860
CB.RDB = 000004 33-1646
CCFETL = 000011 G #5-119
CDFETL = 000002 G #5-119
CD.CWD = 000202 #6-125
CH.64 = 000001 #6-125
CH.96 = 000002 #6-125
CLOSWT 005654 R 32-1589 #35-1726
COLDN = 000200 #40-1875 41-1924
CONINT 003274 R 24-1223 #24-1226
CONSYN 003620 R 15-719 #25-1297
CONTRL 003260 R 14-665 #24-1222
CR = 000015 #9-215 10-414
CRASH 000472 R 12-558 12-561 12-562 12-563 #12-567 12-573 12-576 12-577 12-578
12-579 12-580 12-581 12-589 12-590 12-591 12-592 12-593 12-594
12-595
CRB1 = 000002 #40-1889 40-1895
CRB2 = 000004 #40-1895
CRCCP 000532 R 12-564 #12-588
CRCLOS 005544 R #35-1715
CRCTL 000474 R 12-559 #12-572
CRCWDS = 000131 G #5-119
CRDATS = 000131 G #5-119
CRDEND 007712 R 41-1926 41-2075 42-2101 #43-2108
CRDLRE 005242 R 12-557 #33-1642
CREOFS = 000101 G #5-119
CRHNG = 000005 #4-113 39-1843 41-2076
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CRNURD 000600 R 12-556 #14-650
CROPEN 005314 R #34-1666
CRS = 000000 #40-1868 40-1889
CRTIM 005042 R 12-560 #32-1587
CRXOF 006640 R 12-597 #39-1855
CRXON 006652 R 12-596 #39-1859
CR.CWD 000216 G #5-119
CR.DAT 000207 G #5-119 41-1948
CR.DWD 000214 G #5-119 41-2021
CR.EOF 000212 G #5-119 41-1934
CS.ABO = 000100 15-695
CTLDSP 003574 R 24-1236 #24-1281 24-1291 25-1308
CTLOTR = 000012 24-1230 #24-1291 25-1302
CTLSTP 005544 R 12-575 #35-1714
CTLSTR 005314 R 12-574 #34-1665
C.ASTS 000050 G #5-119 14-650 15-693 *17-796 *24-1277 *25-1341 26-1380 27-1454 *27-1456
28-1465 28-1467 *28-1472 *29-1489 *29-1495 29-1507 *29-1509 32-1600 *32-1606
*32-1616 34-1667 *34-1670 *34-1699 *35-1716 37-1769 *37-1777 39-1822 39-1824
*39-1840 *39-1855 *39-1860 41-1936 *41-1944 *41-1975 *41-1992 41-2040 *42-2099
43-2126 43-2132
C.BID 000003 33-1646
C.BUF 000014 14-652 14-653 17-808 17-809 19-910 19-911 22-1145 22-1146 24-1253
24-1254 24-1260 24-1261 26-1373 26-1430 30-1531 31-1571 33-1648 *33-1652
36-1752 36-1753 37-1771 37-1772 41-2014 41-2016 41-2017
C.BUF2 000024 33-1652 *36-1752 *36-1753
C.CALL 000002 G #5-119
C.CAPN 000077 G #5-119 *18-865 *18-869 18-877 *18-879 18-883 19-906
C.CAPP 000070 G #5-119 25-1337 27-1444 *30-1519 *30-1564 32-1625 *34-1686
C.CDCT 000052 G #5-119 26-1376 26-1426 *28-1469 *34-1688 *41-2026 41-2027
C.CFET 000172 G #5-119 5-119 18-869 23-1182 30-1539 34-1690
C.CMSQ 000062 G #5-119 24-1235 *24-1235 24-1252 *24-1252 *24-1252 24-1252 *24-1252 35-1719
*35-1719 *35-1719 35-1719 *35-1719
C.CNT 000020 17-810 22-1147 *22-1163 24-1226 *24-1267 *26-1431 *30-1537 *30-1550 30-1559
*31-1574 *36-1744 *36-1755 *43-2125
C.CNT2 000030 *36-1754 36-1755
C.COLC 000026 G #5-119 *34-1682 *39-1839 *41-1929 *41-2021
C.CSR 000022 G #5-119 32-1602 34-1669 39-1844 39-1848 41-1919 43-2108
C.DDMQ 000044 G #5-119 29-1497 38-1798 *38-1798 *38-1798 38-1798 *38-1798 39-1829 39-1836
*39-1836 41-2013 43-2124 *43-2124 *43-2124 43-2124 *43-2124
C.DFET 000204 G #5-119 5-119 18-879 23-1186 34-1692
C.DFSP 000130 G #5-119 *15-712 16-748 *16-761 17-800
C.DLCQ 000072 G #5-119 15-704 *15-705 15-706 15-723 17-793 17-803 17-816 *17-816
*17-816 17-816 *17-816 29-1498 38-1802 *38-1802 *38-1802 38-1802 *38-1802
C.DMAD 000102 G #5-119 17-785 17-787 *17-788 17-791 *17-808 *17-809 *17-814 *34-1674
*34-1675 *38-1812 *38-1813
C.DMBS 000106 G #5-119 *17-783 *17-810 *17-815 *34-1676 *38-1814
C.DMSQ 000110 G #5-119 *18-849 *25-1298 25-1326
C.DTXL 000127 G #5-119 *16-741 16-743 *16-747 16-757 *16-764
C.DTXT 000132 G #5-119 *16-734 16-735 16-759
C.DWAK 000126 G #5-119 15-708 *16-750 *16-755 *17-805 *22-1153 28-1477 *28-1479 29-1500
32-1596 *34-1673 *38-1810
C.FNC 000010 *36-1757
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
C.HUNG 000027 G #5-119 32-1612 *32-1614 *34-1683 *39-1843 *39-1849 *41-1916 *41-2076
C.IOCN 000056 G #5-119 *22-1168 *24-1269 *26-1434 *30-1563 *31-1577 *33-1642 *33-1644 *34-1680
35-1726 *37-1780 39-1826
C.IOWT 000060 G #5-119 32-1587 *34-1681 *35-1723 35-1732 *35-1733
C.LDAT 000036 G #5-119 41-2007 *41-2031 41-2044 *41-2062
C.LIN 000006 *12-599 *14-678 *14-680 *22-1167 *24-1268 *26-1433 *30-1562 *31-1576 *36-1743
*36-1751 *37-1779 *37-1786 *38-1803
C.MFLG 000076 G #5-119 *15-716
C.MOD 000011 *22-1166 24-1222 *31-1575 *37-1778
C.MSGA 000120 G #5-119 22-1135 22-1136 *22-1137 *22-1145 *22-1146 *34-1677 *34-1678
C.MSGQ 000114 G #5-119 19-909 22-1148 *22-1148 22-1158 22-1161 22-1165 *22-1165 *22-1165
22-1165 *22-1165 29-1499 38-1806 *38-1806 *38-1806 38-1806 *38-1806
C.MSGS 000124 G #5-119 *22-1133 *22-1140 *22-1147 22-1163 *22-1171 *34-1679 *38-1815
C.NFSP 000100 G #5-119 *18-853 19-912 *19-939 *20-985
C.NRDA 000042 G #5-119 *41-2020 41-2038 41-2056 42-2103 43-2122 43-2128
C.PBRC 000112 G #5-119 *21-1054 21-1057
C.PRI 000020 G #5-119 41-1915 43-2111 43-2113
C.PUBP 000030 G #5-119 *34-1672 *38-1811 *39-1837 41-1942 41-1998 41-1999 *41-2014 *41-2016
41-2019 *41-2072 42-2100 42-2102 43-2116 43-2117
C.PUBS 000040 G #5-119 *41-2032 *41-2036 *41-2049 *41-2051 *41-2058 *41-2064 *41-2070 43-2120
C.RATT 000067 G #5-119 25-1333 26-1349 *26-1351 26-1367 *26-1435 27-1442 32-1617 *32-1619
32-1621 *34-1685 43-2134 *43-2136
C.RECO 000066 G #5-119 *24-1272 32-1591 *32-1593 *34-1684
C.RST 000024 G #5-119 *41-1920 41-1924 41-2074 42-2081
C.SGHD 000034 G #5-119 41-2001 *41-2030 *41-2037 *41-2055
C.SLN 000054 G #5-119 12-599 14-678 14-680 22-1167 24-1268 26-1433 30-1562 31-1576
36-1743 36-1751 37-1779 37-1786 38-1803
C.STRT 000071 G #5-119 32-1608 *34-1687 *39-1833 *39-1838 *39-1850 39-1861
C.STS 000012 *15-695 17-794 17-817 *22-1144 *22-1160 *22-1162 22-1167 *24-1275 *36-1742
*36-1756 37-1779 *37-1784 37-1786
C.TIMC 000000 G #5-119
C.TIMI 000001 G #5-119 34-1695
DC1 = 000021 #9-219 10-371
DC2 = 000022 #9-220 10-372
DC3 = 000023 #9-221 10-373
DC4 = 000024 #9-222 10-403
DDMRCP 006022 R #37-1769 43-2131
DEL = 000177 #9-235 10-347
DFSLEP 001066 R #16-734 17-805 22-1153
DFWAKE 001152 R 15-710 #16-755 32-1598
DLE = 000020 #9-218 10-500
DM.ASC = 000001 #6-125
DM.AS8 = 000005 #6-125
DM.AUG = 000004 #6-125
DM.CLI = 000002 #6-125 41-1949
DM.EBC = 000003 #6-125
DTXTSZ = 000020 G #5-119 5-119 16-743
DUMP 004334 R 24-1286 #27-1441
DWAKP = 000002 G #5-119
DWAKR = 000004 G #5-119 28-1477
DWAKS = 000001 G #5-119 15-708 17-805
DWAKT = 000003 G #5-119 22-1153 28-1479 32-1596
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EJECT = 000002 #40-1871
EM = 000031 #9-227 10-420
ENQ = 000005 #9-207 10-434
EOFASC = 007417 #6-125 41-1940
EOT = 000004 #9-206 10-307
EO.ASC = 000001 #6-125
EO.IMG = 000002 #6-125
ERRCHR = 000334 #9-236 10-301 10-303 10-304 10-305 10-306 10-331 10-344 10-346
10-361 10-374 10-375 10-377 10-381 10-390 10-391 10-392 10-393
10-399 10-400 10-401 10-402 10-405 10-409 10-410 10-411 10-421
10-422 10-429 10-430 10-431 10-432 10-433 10-440 10-441 10-442
10-443 10-444 10-445 10-446 10-450 10-451 10-452 10-453 10-454
10-455 10-456 10-460 10-461 10-462 10-463 10-464 10-465 10-466
10-470 10-471 10-472 10-473 10-474 10-475 10-476 10-480 10-481
10-482 10-483 10-484 10-485 10-486 10-490 10-491 10-492 10-493
10-494 10-495 10-496 10-499 10-501 10-502 10-503 10-504 10-505
10-506 10-509 10-511 10-512 10-513 10-514 10-515 10-516 41-1974
ERROR = 100000 #40-1885
ESC = 000033 #9-229 10-396
ETB = 000027 #9-225 10-395
ETX = 000003 #9-205 10-343
FB.CA = 000100 G #5-119 5-119 5-119 5-119 21-1027
FB.CL0 = 000000 G #5-119
FB.CL1 = 000001 G #5-119 5-119 5-119 5-119 20-967 21-1031
FB.CP = 000040 G #5-119 18-900
FB.SST = 000020 G #5-119 5-119 5-119 20-962 21-1045 21-1096
FB.STE = 000010 G #5-119 5-119 5-119 21-1089
FB.STR = 000004 G #5-119 20-978 20-989 21-1037 21-1049 21-1093 21-1100
FB.WRD = 000002 G #5-119 20-978 21-1037 21-1093
FC.CLM = 000003 #6-125
FC.CL0 = 000000 #6-125
FC.CL1 = 000001 #6-125 20-969 21-1033
FC.RCP = 000014 36-1757
FC.SST = 000002 #6-125 18-872 21-1025
FEACON 001720 R #19-906 19-940 20-986 21-1083
FEATRS 001464 R 15-722 #18-844
FEFND 003176 R 18-885 18-889 #23-1182
FERBCL 001770 R #19-919 21-1032
FERCPN 002012 R 18-901 #19-925
FERDNP 002026 R #19-929
FERERR 002004 R 18-873 #19-923 21-1028 21-1041 21-1071
FERNEB 002020 R #19-927
FERNST 001776 R #19-921 21-1082
FERUSF 001762 R 18-890 #19-917
FE.ALL = 000377 #6-125 18-866
FE.DAT = 000001 #6-125
FE.DVT = 000006 #6-125
FE.DWD = 000011 #6-125
FE.EOF = 000005 #6-125
FE.ESC = 000000 #6-125
FE.FNM = 000010 #6-125
FE.FWD = 000004 #6-125
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FE.LCR = 000003 #6-125
FE.SER = 000002 #6-125
FE.TRN = 000007 #6-125
FF = 000014 #9-214 10-413
FLSBUF 005254 R 33-1643 #33-1646 37-1775 38-1799 38-1807
FLUSHQ 006144 R 29-1503 35-1717 #38-1795
FNCOTR = 000022 #12-565
FREAD 002072 R 18-903 #20-957 21-1046 21-1078
FR.BCL = 000002 #6-125 19-919
FR.CPN = 000005 #6-125 19-925
FR.DNP = 000007 #6-125 19-929
FR.ERR = 000004 #6-125 19-923
FR.NEB = 000006 #6-125 19-927
FR.NST = 000003 #6-125 19-921
FR.USF = 000001 #6-125 19-917
FS = 000034 #9-230 10-423
FSET 002302 R 18-904 #21-1025
F.FCV = 000001 G #5-119 20-996 21-1060 *21-1095 21-1104 41-1934 41-1948 41-2021
F.FSB = 000000 G #5-119
F.FSV = 000002 G #5-119 21-1095 21-1106 21-1107
GB 001224 R 15-713 15-715 #17-783 17-811 18-848 18-851 18-855 18-857 18-859
18-863 21-1035 21-1043 21-1053 21-1055 21-1074 25-1297 25-1299
GBDQ 001372 R 17-797 #17-814 19-913 25-1321 25-1342
GETMBF 005740 R 22-1142 24-1249 26-1371 30-1529 31-1569 #36-1749
GETPBF 005706 R #36-1740 39-1831
GOOSCR 006604 R #39-1843
GS = 000035 #9-231 10-424
HOCHK = 020000 #40-1882 42-2083
HT = 000011 #9-211 10-345
INTENB = 000100 39-1844 #40-1872
INTERR 007600 R 41-1922 41-1931 #42-2081
KISAR6 = 172354 *14-652 *17-785 *19-910 *22-1135 *24-1253 *24-1260 *37-1771 41-1917 *41-1998
*41-2017 *41-2078 *42-2102 *43-2110 43-2114 *43-2116 *43-2142
LF = 000012 #9-212 10-394
LP.CHS = 000210 #6-125
LP.CVF = 000205 #6-125
LP.FCC = 000206 #6-125
LP.HT = 000202 #6-125
LP.OPV = 000212 #6-125
LP.OVP = 000204 #6-125
LP.PLE = 000211 #6-125
LP.SFC = 000203 #6-125
LP.VFR = 000207 #6-125
LS.ABO = 100201 #4-105 14-680 38-1803
LS.BOM = 100205 #4-105
LS.CLO = 100203 #4-105
LS.ILM = 100204 #4-105 14-678
LS.REJ = 100202 #4-105 24-1275 34-1698
L$$SI1 = ****** 17-816 17-816 22-1148 22-1148 22-1165 22-1165 22-1165 24-1235 24-1235
24-1252 24-1252 35-1719 35-1719 35-1719 38-1798 38-1798 38-1798 38-1802
38-1802 38-1802 38-1806 38-1806 38-1806 39-1836 39-1836 43-2124 43-2124
MB 002664 R 18-845 18-847 18-850 18-854 19-931 19-934 19-936 19-938 20-958
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
20-965 20-971 20-974 20-981 20-984 20-993 20-999 20-1006 20-1009
#22-1133 22-1150 25-1323 25-1325 25-1327 25-1329 25-1331
MBSND 003026 R 19-914 #22-1158 25-1332
MOCHK = 010000 #40-1880 42-2087
M$$MGE = 000000 5-119 14-652 17-785 19-910 22-1135 24-1253 24-1260 37-1771 41-1917
41-1998 41-2015 41-2078 42-2102 43-2110 43-2114 43-2116 43-2142
NAK = 000025 #9-223 10-404
NA.DTO = 000004 #6-125 26-1406
NA.FAT = 000001 #6-125 26-1383
NA.INK = 000040 #6-125
NA.IVP = 000001 #6-125 26-1417
NA.JAM = 000020 #6-125
NA.NAC = 000002 #6-125
NA.NOE = 000100 #6-125
NA.OFL = 000002 #6-125 26-1387
NA.OMD = 000010 #6-125 26-1395
NA.OOF = 000040 #6-125
NA.OUF = 000001 #6-125 26-1402
NA.OVP = 000001 #6-125
NA.PAU = 000004 #6-125 26-1391
NA.PF = 000020 #6-125 26-1410
NA.PSE = 000020 #6-125
NA.RAP = 000040 #6-125
NA.REG = 000100 #6-125
NA.RNA = 000010 #6-125
NC.AUC = 000002 #6-125
NC.AUE = 000001 #6-125
NC.CAB = 000003 #6-125
NC.DMP = 000005 #6-125
NC.PAU = 000006 #6-125
NC.RES = 000007 #6-125
NC.RQC = 000011 #6-125
NC.RQS = 000004 #6-125
ND.ACK = 000001 #6-125
ND.CMP = 000200 #6-125 41-2061
ND.EOF = 000004 #6-125 37-1773 43-2129
ND.IER = 000002 #6-125 42-2104
NF.CMD = 000001 #6-125 18-870 18-902 20-961
NF.STD = 000002 #6-125 20-964
NM.ALR = 000004 #6-125 31-1572
NM.ATT = 000001 #6-125 26-1374
NM.CAP = 000005 #6-125 30-1533
NM.CTL = 000003 #6-125 15-717 24-1262 25-1322
NM.DAT = 000000 #6-125 41-2024
NM.FTR = 000002 #6-125 18-844
NM.OTR = 000006 #6-125
NM.TYP = 000017 #6-125 6-125 6-125 6-125 6-125 6-125 6-125 6-125 14-655
NRDACK 006120 R 17-818 24-1257 35-1720 #37-1784
NRDOTR = 000006 14-656 14-658 #14-668
NRDRET 006124 R 15-696 24-1276 #37-1786
NRMACK 000560 R 12-582 12-583 12-584 12-585 #12-599
NR.ABS = 000000 #6-125
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
NR.ACC = 000000 #6-125
NR.ACN = 000001 #6-125 29-1512
NR.ATT = 000000 #6-125
NR.CAP = 000000 #6-125
NR.DMP = 000000 #6-125
NR.DPS = 000000 #6-125
NR.NAB = 000001 #6-125 29-1502
NR.NDP = 000002 #6-125
NR.NDR = 000002 #6-125
NR.NDV = 100377 #4-105
NR.NOB = 000001 #6-125
NR.NOE = 000002 #6-125
NR.NPS = 000001 #6-125 28-1476
NR.PAU = 000001 #6-125 27-1459
NR.RES = 000000 #6-125
NT$DAT = 000002 22-1166 36-1757 37-1778
NT$INT = 000004 24-1222 31-1575
NT.BOM = 000040 22-1160 24-1268 26-1433 30-1562 31-1576 36-1742 36-1756
NT.EOM = 000100 17-794 17-798 22-1162 24-1268 26-1433 30-1562 31-1576 36-1742 36-1756
NUL = 000000 #9-202 10-510
N.AABC = 000004 #6-125
N.AACK = 000002 #6-125
N.ACOD = 000003 #6-125
N.AFLG = 000004 #6-125
N.ALGD = 000002 #6-125
N.APLE = 000005 #6-125
N.ARQS = 000003 #6-125 26-1351
N.ASTC = 000001 #6-125 32-1619 43-2136
N.CCMD = 000003 #6-125 24-1226 24-1228 24-1255
N.CRES = 000004 #6-125 24-1267
N.CSEQ = 000002 #6-125 24-1256
N.DDAT = 000005 #6-125 41-2032
N.DFLG = 000003 #6-125 37-1773 *42-2104 *43-2129
N.DSEQ = 000002 #6-125
N.DSGC = 000004 #6-125 *41-2039 *41-2057 *43-2123
N.FCLS = 000002 #6-125
N.FDAT = 000004 #6-125
N.FFLG = 000001 #6-125
N.FID = 000000 #6-125
N.FRSP = 000003 #6-125
N.FSEQ = 000002 #6-125
N.FSPC = 000004 #6-125
N.MFL = 000001 #6-125
N.NSPC = 000003 #6-125 *19-912
N.PCAP = 000003 #6-125
N.PCNT = 000002 #6-125
N.TYP = 000000 #6-125
PAUSE 004356 R 24-1287 #27-1453
PR7 = 000340 17-816 22-1148 22-1165 24-1235 24-1252 35-1719 38-1798 38-1802 38-1806
39-1836 43-2124
PS = 177776 17-816 17-816 17-816 22-1148 22-1148 22-1148 22-1165 22-1165 22-1165
22-1165 24-1235 24-1235 24-1235 24-1252 24-1252 24-1252 35-1719 35-1719
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
35-1719 35-1719 38-1798 38-1798 38-1798 38-1798 38-1802 38-1802 38-1802
38-1802 38-1806 38-1806 38-1806 38-1806 39-1836 39-1836 39-1836 43-2124
43-2124 43-2124
QDLC 000750 R 15-694 #15-698 24-1224
QTODLC 000726 R 14-664 #15-693
RDAHD = 000005 #4-114 39-1826
RDROFL = 000400 32-1602 #40-1876 42-2095
RDRONL = 002000 #40-1878
READ = 000001 39-1844 #40-1870
RECON 003356 R #24-1249 32-1594
RESUME 004406 R 24-1288 #28-1464
RS = 000036 #9-232 10-425
SETSTD 002532 R 21-1080 #21-1089 34-1710
SI = 000017 #9-217 10-416
SNDALR 004762 R #31-1569 32-1604
SNDATT 004014 R 25-1335 #26-1366 32-1623 43-2137
SNDCAP 004614 R 25-1339 #30-1529 32-1627
SNDSTS 003774 R 24-1285 #26-1348
SO = 000016 #9-216 10-415
SOH = 000001 #9-203 10-341
SPA = 000040 #9-234
STOPCR 006622 R 29-1494 35-1715 38-1796 #39-1848
STRTCR 006456 R 28-1473 32-1610 #39-1822 39-1864 43-2140
STX = 000002 #9-204 10-342
SUB = 000032 #9-228 10-406
SYN = 000026 #9-224 10-302
TIMERR = 004000 #40-1879 42-2091
US = 000037 #9-233 10-426
VF.6LI = 000001 #6-125
VF.8LI = 000002 #6-125
VT = 000013 #9-213 10-412
ZONTAB 000330 R #11-522 41-1971
ZON0 000000 R #10-249 11-533 11-533
ZON1 000040 R #10-289 11-533 11-533
ZON10 000020 R #10-269 11-533 11-533
ZON11 000130 R #10-359 11-533 11-533
ZON12 000140 R #10-369 11-533 11-533
ZON13 000210 R #10-418 11-533 11-533
ZON14 000120 R #10-349 11-533 11-533
ZON15 000270 R #10-478 11-533 11-533
ZON16 000300 R #10-488 11-533 11-533
ZON17 = ****** 11-533
ZON2 000050 R #10-299 11-533 11-533
ZON20 000010 R #10-259 11-533 11-533
ZON21 000100 R #10-329 11-533 11-533
ZON22 000110 R #10-339 11-533 11-533
ZON23 000200 R #10-408 11-533 11-533
ZON24 000070 R #10-319 11-533 11-533
ZON25 000230 R #10-438 11-533 11-533
ZON26 000240 R #10-448 11-533 11-533
ZON27 000320 R #10-508 11-533 11-533
ZON3 000170 R #10-398 11-533 11-533
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ZON30 000060 R #10-309 11-533 11-533
ZON31 000250 R #10-458 11-533 11-533
ZON32 000260 R #10-468 11-533 11-533
ZON33 000310 R #10-498 11-533 11-533
ZON34 = ****** 11-533
ZON35 = ****** 11-533
ZON36 = ****** 11-533
ZON37 = ****** 11-533
ZON4 000030 R #10-279 11-533 11-533
ZON5 000150 R #10-379 11-533 11-533
ZON6 000160 R #10-388 11-533 11-533
ZON7 000220 R #10-428 11-533 11-533
ZTAB 000430 R #11-539 41-1969 41-1989 41-1994
$CCBRT = ****** GX 33-1650 39-1856 39-1859
$CRINT 006700 RG #41-1915
$CRTB 000450 RG #12-556 12-565
$CSBGT = ****** GX 36-1749
$CSBRT = ****** GX 33-1653
$CTCMP = ****** GX 12-599 34-1701 35-1735
$INTSX = ****** GX 43-2112
$INTX7 = ****** GX 41-2079
$RCCMP = ****** GX 22-1167 24-1268 26-1433 30-1562 31-1576 37-1779
$RDBGT = ****** GX 36-1740
$RDBRT = ****** GX 33-1655
$RDBSZ = ****** GX 36-1744
$SDBSZ = ****** GX 36-1754
$XMCMP = ****** GX 14-678 14-680 37-1786 38-1803
$$ = 000040 #11-523 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533 11-533 11-533
#11-533 11-533 11-533 #11-533 11-533 11-533 #11-533
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 10
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 12-599 14-678 14-680 15-713 15-715 15-719 15-722 17-797 17-805 17-818
18-845 18-847 18-848 18-850 18-851 18-854 18-855 18-857 18-859 18-863
18-885 18-889 19-913 19-931 19-934 19-936 19-938 20-958 20-965 20-971
20-974 20-981 20-984 20-993 20-999 20-1006 20-1009 21-1035 21-1043 21-1053
21-1055 21-1074 21-1080 22-1142 22-1153 22-1167 24-1236 24-1249 24-1257 24-1268
24-1276 25-1297 25-1299 25-1308 25-1321 25-1323 25-1325 25-1327 25-1329 25-1331
25-1332 25-1335 26-1371 26-1433 28-1473 29-1494 30-1529 30-1562 31-1569 31-1576
32-1594 32-1598 32-1604 32-1610 32-1623 32-1627 34-1691 34-1693 34-1710 35-1715
35-1717 35-1720 36-1740 36-1749 37-1779 37-1786 38-1796 38-1799 38-1803 38-1807
39-1831 39-1859 43-2131 43-2137 43-2140
CALLR #12-572 #12-588 #14-660 #15-696 #15-710 #18-904 #19-914 #21-1071 #21-1078 #21-1082
#21-1083 #24-1224 #25-1339 #25-1342 #29-1503 #32-1589 #33-1650 #33-1653 #33-1655 #34-1701
#35-1735 #37-1775 #39-1856 #39-1864 #41-1922 #41-1926 #41-1931 #41-2079
CCBDF$ #4-97 #4-100
CRASH #7-144 #16-745
CRDLT$ #4-97 #5-119
DEQ$ #8-171 17-816 22-1165 24-1252 35-1719 38-1798 38-1802 38-1806 43-2124
DFHYBE #7-149 #17-805 #22-1153
ENABL$ #4-96 #17-816 #22-1148 #22-1165 #22-1165 #24-1235 #24-1252 #35-1719 #35-1719 #38-1798
#38-1798 #38-1802 #38-1802 #38-1806 #38-1806 #39-1836 #43-2124
ENQ$ #8-191 #22-1148 #24-1235 #39-1836
HWDDF$ #4-97 4-98 #14-652 14-652 #17-785 17-785 #19-910 19-910 #22-1135 22-1135
#24-1253 24-1253 #24-1260 24-1260 #37-1771 37-1771 #41-1917 41-1917 #41-1998 41-1998
#41-2078 41-2078 #42-2102 42-2102 #43-2110 43-2110 #43-2114 43-2114 #43-2116 43-2116
#43-2142 43-2142
INHIB$ #4-96 17-816 22-1148 22-1165 24-1235 24-1252 35-1719 38-1798 38-1802 38-1806
39-1836 43-2124
MAP #4-97 14-652 17-785 19-910 22-1135 24-1253 24-1260 37-1771 41-1998 42-2102
43-2116
NRDIN$ #4-97 4-105
NSPDF$ #4-97 4-99
NURDF$ #4-97 6-125
POP #7-137 #17-819 #19-937 #21-1070 #21-1077 #21-1108 #21-1124 #22-1149 #22-1152 #23-1200
#23-1204 #24-1259 #25-1319 #25-1330 #26-1436 #30-1558 #34-1700 #35-1722 #38-1817 #41-2077
#43-2109 #43-2141
PUSH #7-130 #17-817 #19-917 #19-919 #19-921 #19-923 #19-925 #19-927 #19-929 #21-1066
#21-1072 #21-1102 #21-1114 #22-1141 #23-1183 #24-1251 #25-1304 #25-1320 #26-1366 #30-1535
#30-1538 #34-1666 #35-1718 #38-1795 #41-1918 #43-2115
RESMAP #4-97 #41-2078 #43-2110 #43-2142
RETURN #12-600 #14-679 #14-681 #15-725 #16-751 #16-772 #17-789 #17-801 #17-820 #21-1092
#21-1110 #21-1126 #22-1138 #22-1172 #23-1202 #23-1206 #24-1270 #24-1273 #24-1278 #25-1343
#26-1352 #26-1437 #27-1447 #27-1457 #27-1460 #28-1481 #29-1491 #29-1510 #29-1513 #30-1520
#30-1565 #31-1578 #32-1630 #34-1712 #35-1729 #36-1745 #36-1758 #37-1781 #37-1787 #38-1818
#39-1834 #39-1845 #39-1851 #39-1863 #43-2143
SAVMAP #4-97 41-1917 43-2114
SOB #21-1076 #21-1123 #30-1551 #34-1711
TMPDF$ #5-119 #5-119
$INTSX #4-97 43-2112
$INTXT #4-97 41-2079
$TOBDM #7-159 #12-599 #14-678 #14-680 #22-1167 #24-1268 #26-1433 #30-1562 #31-1576 #37-1779
#37-1786 #38-1803
.BIN #5-119
CR CREATED BY MACRO ON 13-OCT-79 AT 08:31 PAGE 11
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
.CNB #5-119
.CNW #5-119
.CORE #5-119
.CSR #5-119 #5-119
.DVCHA #5-119
.INT #5-119 #5-119
.INT1 #5-119
.INT2 #5-119
.INT3 #5-119
.LFLHD #5-119
.LIBR #5-119
.LINKS #5-119
.LSTHD #5-119 #5-119 #5-119 #5-119 #5-119
.LTAB #5-119
.MPLHD #5-119
.POOL #5-119
.PRI #5-119 5-119
.SCOM #5-119
.SECSR #5-119
.SLNB #5-119
.SLNW #5-119 5-119
.STNB #5-119
.STNW #5-119
.UNB #5-119
.UNW #5-119
.VFY #5-119