Trailing-Edge
-
PDP-10 Archives
-
bb-m403a-bk
-
logxfr.l20
There are 2 other files named logxfr.l20 in the archive. Click here to see a list.
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29
TABLE OF CONTENTS
4- 42 DEFINITIONS -- MACRO AND PARAMETER DEFINITIONS
5- 92 LOGXFR -- TRANSFER ROUTINE
6- 156 XFRBLK -- TRANSFER THE BLOCK TO THE KL
7- 224 TYPERR -- TYPE OUT ERROR CODE
10- 40 FILE INTERFACE DATA
11- 138 .FNDIR -- ROUTINE TO FIND DIRECTORY FILE ID
12- 201 .LOKUP -- ROUTINE TO LOOK UP A FILE TO GET ITS FID
13- 265 .ENTER -- ROUTINE TO ENTER A FILE
14- 315 .OPEN -- ROUTINE TO OPEN A FILE
15- 370 .EXTND -- ROUTINE TO EXTEND A FILE
16- 419 .CLOSE -- ROUTINE TO CLOSE A FILE
17- 483 .SETFN -- ROUTINE TO SET A FILE NAME IN A FILE NAME BLOCK
18- 522 .READR -- ROUTINE TO READ A RECORD
19- 578 .READW -- READ A WORD FROM A FILE
20- 615 .READB -- READ A BYTE FROM A FILE
21- 648 .READ -- ROUTINE TO READ A BLOCK
22- 696 .WRITR -- ROUTINE TO WRITE A RECORD
23- 752 .WRITW -- WRITE A WORD TO A FILE
24- 788 .WRITB -- WRITE A BYTE TO A FILE
25- 819 .WRITZ -- WRITE OUT CURRENT BLOCK
26- 860 .WRITE -- ROUTINE TO WRITE A BLOCK
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 2
1 .TITLE LOGXFR -- PARSER.LOG ERROR FILE TRANSFER PROGRAM
2 .IDENT /014430/
3 .LIST MEB,SYM
4 .NLIST CND
5 .ENABL AMA
6 ; COPYRIGHT (C) 1980 BY
7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
8 ;
9 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
10 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
11 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
12 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
13 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
14 ;
15 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
16 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
17 ; CORPORATION.
18 ;
19 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
20 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
21 ;
22 ; MODULE: PARSER.LOG TRANSFER PROGRAM
23 ;
24 ; VERSION: 14-43
25 ;
26 ; AUTHOR: K. LEFEBVRE
27 ;
28 ; DATE: 11-FEB-80
29 ;
30 ;
31 ; MODIFIED BY:
32 ;
33 ; 29-MAY-80 S. LEAPLINE FIX TRANSFERR SIZE TO XFERR 4 PACKETS/BLOCK
34 ; 12-NOV-80 S. LEAPLINE ONLY XFERR 1 BLOCK PER SECOND TO TRY TO SOLVE
35 ; A TOPS-20 BUG OR DEFICENCY
36 ; 04-MAR-81 S. LEAPLINE CUT THE DATA SIZE PER XFERR TO 64 SO RELEASE
37 ; 4 WON'T HAVE TO BE PATCHED FOR FILED TEST.
38 ; 08-JUN-81 S. LEAPLINE ADD CONDITIONAL SLEEP FOR TOPS-20/TOPS-10
39 ;
40 .MCALL DIR$,QIOW$,EXIT$S,ALUN$,CLEF$S,WSIG$S,MRKT$S,WTSE$S
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 3
DEFINITIONS -- MACRO AND PARAMETER DEFINITIONS
42 .SBTTL DEFINITIONS -- MACRO AND PARAMETER DEFINITIONS
43
44 .MACRO ERROR$ CODE
45 MOV #^R'CODE,ERRCOD
46 SEC
47 RETURN
48 .ENDM ERROR$
49
50 .MACRO ERRENT CODE,MES
51 .PSECT DATA
52 .IF B,CODE
53 .WORD 0
54 .IFF
55 .WORD ^R'CODE
56 .ENDC
57 .WORD ERR'CODE
58 .WORD LEN'CODE
59 .PSECT MESSAG
60 ERR'CODE: .ASCII %MES%
61 LEN'CODE=.-ERR'CODE
62 .PSECT DATA
63 .ENDM ERRENT
64
65 .MACRO PUSH ARG
66 .IRP A,<ARG>
67 MOV A,-(SP)
68 .ENDR
69 .ENDM PUSH
70
71 .MACRO POP ARG
72 .IRP A,<ARG>
73 MOV (SP)+,A
74 .ENDR
75 .ENDM POP
76
77 000001 TTYLUN=1
78 000002 INDLUN=2
79 000003 LOGLUN=3
80
81 000006 E.FFIL=6
82
83 100000 BIT15=100000
84
85 000000 .PSECT DATA
86
87 000000 000000 .OUTLG: .WORD 0 ; DUMMY VARIABLE
88 000002 000207 .TYMSG: RETURN ; DUMMY ROUTINE
89
90 000000 .PSECT
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 4
LOGXFR -- TRANSFER ROUTINE
92 .SBTTL LOGXFR -- TRANSFER ROUTINE
93
94 ;+
95 ;
96 ; LOGXFR -- ROUTINE TO TRANSFER PARSER.LOG ERROR FILE TO KL
97 ;
98 ; THIS ROUTINE WHEN REQUESTED TO RUN WILL LOOKUP THE FILE PARSER.LOG.
99 ; IF THE FILE EXISTS IT WILL TRANSFER IT ACROSS THE DTE TO THE KL AND
100 ; THEN DELETE THE FILE. IF IT DOESN'T EXIST THEN THE PROGRAM EXITS.
101 ;
102 ; INPUT ARGUMENTS:
103 ;
104 ; NONE
105 ;
106 ; OUTPUT ARGUMENTS:
107 ;
108 ; NONE
109 ;
110 ; ERRORS RETURNED:
111 ;
112 ; NONE
113 ;-
114
115 000000 LOGXFR::
116 000000 DIR$ #.ASCTY ; ASSIGN CTY
000000 012746 000000' MOV #.ASCTY,-(SP)
000004 104375 EMT 375
117 000006 103444 BCS 5$ ; PROCESS ERROR
118 000010 012737 062072 001054' MOV #^RPAR,.INFN ; ERROR LOG FILE NAME
119 000016 012737 073632 001056' MOV #^RSER,.INFN+2 ; PARSER
120 000024 012737 046537 001062' MOV #^RLOG,.INFN+6 ; .LOG
121 000032 012700 001054' MOV #.INFN,R0 ; INPUT FILE NAME PTR
122 000036 012701 002104' MOV #.INFNB,R1 ; INPUT FILE NAME BLOCK PTR
123 000042 012702 000002 MOV #INDLUN,R2 ; INPUT FILE LUN
124 000046 012704 000000G MOV #IO.ACR,R4 ; READ ACCESS
125 000052 004737 001002' CALL .REMOV ; LOOK UP INPUT FILE AND REMOVE
126 000056 103420 BCS 5$ ; PROCESS ERROR
127 000060 004737 001164' CALL .OPEN ; OPEN FILE FOR READ
128 000064 103560 BCS TYPERR ; PROCESS ERROR
129 000066 005237 001046' INC .INDFG ; FLAG FILE OPEN
130 000072 013737 002144' 000014' MOV .INATT+6,TOTBLK ; GET TOTAL BLOCK SIZE
131 000100 006337 000014' ASL TOTBLK ; THAT WILL BE TRANSFERRED
132 000104 006337 000014' ASL TOTBLK ;
133 000110 006337 000014' ASL TOTBLK ;
134 000114 004737 001336' CALL .DELET ; MARK FILE FOR DELETE ON CLOSE
135 000120 103542 5$: BCS TYPERR ; PROCESS ERROR
136 000122 005737 002150' TST .INATT+12 ; EMPTY FILE?
137 000126 001007 BNE 10$ ; NO -- GO ON
138 000130 005737 002146' TST .INATT+10 ; MAYBE -- FILE HUGE?
139 000134 001004 BNE 10$ ; YES -- GO ON
140 000136 012737 020446 000004' MOV #^RELF,ERRCOD ; NO -- EMPTY LOG FILE ERROR
141 000144 000530 BR TYPERR ; GO PROCESS ERROR
142 000146 005037 001074' 10$: CLR .INVBN ; READ FIRST BLOCK
143 000152 005037 001076' CLR .INVBN+2 ; READ FIRST BLOCK
144 000156 004737 001702' 20$: CALL .READ ; READ A BLOCK
145 000162 103521 BCS TYPERR ; PROCESS ERROR
146 000164 004737 000172' CALL XFRBLK ; TRANSFER BLOCK TO KL
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 4-1
LOGXFR -- TRANSFER ROUTINE
147 000170 000772 BR 20$ ; NEXT BLOCK
148
149 000004 .PSECT DATA
150
151 000004 ERRCOD:: ; ERROR CODE
152 000004 000000 .WORD 0
153
154 000172 .PSECT
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 5
XFRBLK -- TRANSFER THE BLOCK TO THE KL
156 .SBTTL XFRBLK -- TRANSFER THE BLOCK TO THE KL
157
158 ;+
159 ;
160 ; XFRBLK -- ROUTINE TO TRANSFER A BLOCK TO THE KL ACROSS THE DTE
161 ;
162 ; THIS ROUTINE WILL TRANSFER THE BLOCK IN .INBUF WITH A BLOCK NUMBER
163 ; IN .INPOS TO THE KL FOR ADDITION TO SYSERR.
164 ;
165 ; INPUT ARGUMENTS:
166 ;
167 ; NONE
168 ;
169 ; OUTPUT ARGUMENTS:
170 ;
171 ; NONE
172 ;
173 ; ERRORS RETURNED:
174 ;
175 ; NONE
176 ;-
177
178 000172 XFRBLK:
179 000172 012700 000400 MOV #400,R0 ; BLOCK SIZE
180 000176 012701 001104' MOV #.INBUF,R1 ; CURRENT BLOCK ADDR
181 000202 012702 000016' MOV #XFRBUF,R2 ; TRANSFER BUFFER
182 000206 012122 5$: MOV (R1)+,(R2)+ ; MOV MORD TO TRANSMIT BUFFER
183 000210 077002 SOB R0,5$ ; DONE?
184 000212 012701 100000G MOV #BIT15+BC.HDS,R1 ; SET FUNCTION
185 000216 012702 000002 MOV #2,R2 ; SET EVENT FLAG FOR ..STIN
186 000222 012703 000000G MOV #D.CLOG,R3 ; SET DEVICE CODE
187 000226 CLEF$S R2 ; INITIALIZE FUNCTION EVENT FLAG
000226 010246 MOV R2,-(SP)
000230 012746 MOV (PC)+,-(SP)
000232 037 002 .BYTE 31.,2
000234 104375 EMT 375
188 000236 012700 000006' MOV #HEADER,R0 ; POINT TO BUFFER
189 000242 012704 000010 MOV #512./64.,R4 ; SET LOOP COUNT
190 000246 012710 000106 7$: MOV #64.+6.,(R0) ; SET BYTE SIZE OF XFERR
191 000252 012760 000000G 000002 MOV #DV.LOG,2(R0) ; ALSO INDICATE ERROR LOG REQUEST
192 000260 005237 000012' INC BLKNUM ; COUNT THIS BLOCK
193 000264 013760 000012' 000004 MOV BLKNUM,4(R0) ; SET IN BUFFER
194 000272 013760 000014' 000006 MOV TOTBLK,6(R0) ; OF TOTAL BLOCKS
195 000300 004737 000000G CALL ..STIN ; SEND TO KL
196 000304 103004 BCC 10$ ; NO ERROR
197 000306 012737 035545 000004' MOV #^RITE,ERRCOD ; INDIRECT TRANSFER ERROR
198 000314 000444 BR TYPERR ; PROCESS ERROR
199 000316 10$: CLEF$S R2 ; TEST AND CLEAR FUNCTION EVENT FLAG
000316 010246 MOV R2,-(SP)
000320 012746 MOV (PC)+,-(SP)
000322 037 002 .BYTE 31.,2
000324 104375 EMT 375
200 000326 022737 000000G 000000G CMP #IS.SET,$DSW ; WAS IT SET ?
201 000334 001412 BEQ 20$ ; YES -- GO ON TO NEXT
202 000336 WSIG$S ; NO -- WAIT FOR THE BIG EVENT
000336 012746 MOV (PC)+,-(SP)
000340 061 001 .BYTE 49.,1
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 5-1
XFRBLK -- TRANSFER THE BLOCK TO THE KL
000342 104375 EMT 375
203 000344 005737 000002G TST .COMEF+2 ; PRIMARY PROTOCOL RUNNING ?
204 000350 100762 BMI 10$ ; BRANCH IF YES
205 000352 012737 063102 000004' MOV #^RPNR,ERRCOD ; PROTOCOL NOT RUNNING
206 000360 000422 BR TYPERR ; PROCESS THE ERROR
207 000362 062700 000100 20$: ADD #64.,R0 ; BUMP THE BUFFER ADDRESS
208 000366 077451 SOB R4,7$ ; DO ALL THE BUFFER
210 000370 MRKT$S #7,#180. ;WAIT FOR 3 SECONDS
000370 005046 CLR -(SP)
000372 005046 CLR -(SP)
000374 012746 000264 MOV #180.,-(SP)
000400 012746 000007 MOV #7,-(SP)
000404 012746 MOV (PC)+,-(SP)
000406 027 005 .BYTE 23.,5
000410 104375 EMT 375
211 000412 WTSE$S #7
000412 012746 000007 MOV #7,-(SP)
000416 012746 MOV (PC)+,-(SP)
000420 051 002 .BYTE 41.,2
000422 104375 EMT 375
213 000424 000207 RETURN ; YES -- DONE
214
215 000006 .PSECT DATA
216
217 000006 HEADER: .BLKW 2 ; PACKET HEADER
218 000012 000000 BLKNUM: .WORD 0 ; BLOCK NO.
219 000014 000000 TOTBLK: .WORD 0 ; TOTAL BLOCK SIZE OF FILE*4
220 000016 XFRBUF: .BLKW 400 ; TRANSMIT BUFFER
221
222 000426 .PSECT
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 6
TYPERR -- TYPE OUT ERROR CODE
224 .SBTTL TYPERR -- TYPE OUT ERROR CODE
225
226 ;+
227 ;
228 ; TYPERR -- ROUTINE TO TYPE OUT ERROR CODE ON CTY
229 ;
230 ; THIS ROUTINE WILL ATTACH THE CTY AND TYPE OUT A RAD50 ERROR
231 ; CODE. IT ALSO CLOSES/DELETES THE LOG FILE AND EXITS FROM THE TASK.
232 ;
233 ; INPUT ARGUMENTS:
234 ;
235 ; NONE
236 ;
237 ; OUTPUT ARGUMENTS:
238 ;
239 ; NONE
240 ;
241 ; ERRORS RETURNED:
242 ;
243 ; NONE
244 ;-
245
246 000426 TYPERR:
247 000426 005737 000004' TST ERRCOD ; ANY ERROR CODE?
248 000432 001455 BEQ 10$ ; NO -- EXIT
249 000434 DIR$ #.ATCTY ; YES -- ATTACH CTY
000434 012746 000010' MOV #.ATCTY,-(SP)
000440 104375 EMT 375
250 000442 103451 BCS 10$ ; PROCESS ERROR
251 000444 012737 000116' 000040' MOV #PRE,.CDOBP ; PREAMBLE PTR
252 000452 012737 000007 000042' MOV #PRELEN,.CDOBC ; BYTE COUNT
253 000460 DIR$ #.CDOUT ; OUTPUT IT
000460 012746 000024' MOV #.CDOUT,-(SP)
000464 104375 EMT 375
254 000466 103437 BCS 10$ ; PROCESS ERROR
255 000470 012700 001016' MOV #ERRTAB,R0 ; ERROR TABLE
256 000474 012001 5$: MOV (R0)+,R1 ; ERROR CODE
257 000476 001406 BEQ 7$ ; END OF TABLE
258 000500 023701 000004' CMP ERRCOD,R1 ; THIS ERROR?
259 000504 001403 BEQ 7$ ; YES -- OUTPUT IT
260 000506 062700 000004 ADD #4,R0 ; NO -- NEXT CODE
261 000512 000770 BR 5$ ; NEXT
262 000514 012037 000040' 7$: MOV (R0)+,.CDOBP ; MESSAGE ADDRESS
263 000520 011037 000042' MOV (R0),.CDOBC ; MESSAGE BYTE COUNT
264 000524 DIR$ #.CDOUT ; OUTPUT BUFFER
000524 012746 000024' MOV #.CDOUT,-(SP)
000530 104375 EMT 375
265 000532 103415 BCS 10$ ; PROCESS ERROR
266 000534 012737 000125' 000040' MOV #CR,.CDOBP ; MESSAGE ADDRESS
267 000542 012737 000002 000042' MOV #CRLEN,.CDOBC ; MESSAGE BYTE COUNT
268 000550 DIR$ #.CDOUT ; OUTPUT BUFFER
000550 012746 000024' MOV #.CDOUT,-(SP)
000554 104375 EMT 375
269 000556 103403 BCS 10$ ; PROCESS ERROR
270 000560 DIR$ #.DTCTY ; DETACH CTY
000560 012746 000046' MOV #.DTCTY,-(SP)
000564 104375 EMT 375
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 6-1
TYPERR -- TYPE OUT ERROR CODE
271 000566 005737 001046' 10$: TST .INDFG ; FILE OPEN
272 000572 001427 BEQ 20$ ; NO -- EXIT
273 000574 005037 001046' CLR .INDFG ; YES -- CLEAR FLAG
274 000600 012701 100000G MOV #BIT15+BC.HDS,R1 ; SET FUNCTION
275 000604 012700 000006' MOV #HEADER,R0 ; POINT TO BUFFER
276 000610 012710 000004 MOV #4,(R0) ; SET BYTE COUNT
277 000614 012703 000000G MOV #D.CLOG,R3 ; SET DEVICE CODE
278 000620 012760 000000C 000002 MOV #DV.LOG!DV.EOF,2(R0) ; INDICATE ERROR LOG REQUEST AND EOF
279 000626 005002 CLR R2 ; NO EVENT FLAG
280 000630 004737 000000G CALL ..STIN ; SEND TO KL
281 000634 012701 002136' MOV #.INATT,R1 ; FILE ATTRIBUTE BLOCK
282 000640 012702 000002 MOV #INDLUN,R2 ; FILE LUN
283 000644 004737 001352' CALL .CLOSE ; DEACCESS FILE AND CLOSE/DELETE
284 000650 103666 BCS TYPERR ; PROCESS ERROR
285 000652 20$: EXIT$S ; EXIT
000652 012746 MOV (PC)+,-(SP)
000654 063 001 .BYTE 51.,1
000656 104375 EMT 375
286
287 001016 .PSECT DATA
288
289 001016 ERRTAB:
290 001016 ERRENT ELF,<EMPTY LOG FILE>
001016 020446 .WORD ^RELF
001020 000000' .WORD ERRELF
001022 000016 .WORD LENELF
000000 105 115 120 ERRELF: .ASCII %EMPTY LOG FILE%
000003 124 131 040
000006 114 117 107
000011 040 106 111
000014 114 105
291 001024 ERRENT ITE,<INDIRECT TRANSFER ERROR>
001024 035545 .WORD ^RITE
001026 000016' .WORD ERRITE
001030 000027 .WORD LENITE
000016 111 116 104 ERRITE: .ASCII %INDIRECT TRANSFER ERROR%
000021 111 122 105
000024 103 124 040
000027 124 122 101
000032 116 123 106
000035 105 122 040
000040 105 122 122
000043 117 122
292 001032 ERRENT PNR,<PRIMARY PROTOCOL NOT RUNNING>
001032 063102 .WORD ^RPNR
001034 000045' .WORD ERRPNR
001036 000034 .WORD LENPNR
000045 120 122 111 ERRPNR: .ASCII %PRIMARY PROTOCOL NOT RUNNING%
000050 115 101 122
000053 131 040 120
000056 122 117 124
000061 117 103 117
000064 114 040 116
000067 117 124 040
000072 122 125 116
000075 116 111 116
000100 107
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 6-2
TYPERR -- TYPE OUT ERROR CODE
293 001040 ERRENT ,<UNKNOWN ERROR>
001040 000000 .WORD 0
001042 000101' .WORD ERR
001044 000015 .WORD LEN
000101 125 116 113 ERR: .ASCII %UNKNOWN ERROR%
000104 116 117 127
000107 116 040 105
000112 122 122 117
000115 122
294
295 000116 .PSECT MESSAG
296
297 000116 130 106 122 PRE: .ASCII %XFR -- %
000121 040 055 055
000124 040
298 000007 PRELEN=.-PRE
299 000125 015 012 CR: .BYTE 15,12
300 000002 CRLEN=.-CR
301
302 000660 .PSECT
LOGXFR -- PARSER.LOG ERROR FILE MACRO M1113 11-NOV-81 10:29 PAGE 7
TYPERR -- TYPE OUT ERROR CODE
304 000000 .PSECT DPBS
305
306 000000 .ASCTY: ; ASSIGN LUN TO CTY
307
308 000000 ALUN$ TTYLUN,TT,0
000000 007 004 .BYTE 7,4
000002 000001 .WORD TTYLUN
000004 124 .ASCII /T/
000005 124 .ASCII /T/
000006 000000 .WORD 0
309
310 000010 .ATCTY: ; ATTACH CTY
311
312 000010 QIOW$ IO.ATT,TTYLUN,1,0,0,0
000010 003 006 .BYTE 3,$$$ARG
000012 000000G .WORD IO.ATT
000014 000001 .WORD TTYLUN
000016 001 000 .BYTE 1,0
000020 000000 .WORD 0
000022 000000 .WORD 0
313
314 000024 .CDOUT: ; OUTPUT TO CTY
315
316 000024 QIOW$ IO.WLB,TTYLUN,1,0,0,0,<0,0,0>
000024 003 011 .BYTE 3,$$$ARG
000026 000000G .WORD IO.WLB
000030 000001 .WORD TTYLUN
000032 001 000 .BYTE 1,0
000034 000000 .WORD 0
000036 000000 .WORD 0
000040 000000 .WORD 0
000042 000000 .WORD 0
000044 000000 .WORD 0
317
318 000040' .CDOBP=.CDOUT+Q.IOPL ; CONSOLE OUTPUT BYTE POINTER
319 000042' .CDOBC=.CDOUT+Q.IOPL+2 ; CONSOLE OUTPUT BYTE COUNT
320
321 000046 .DTCTY: ; DETACH CTY
322
323 000046 QIOW$ IO.DET,TTYLUN,1,0,0,0
000046 003 006 .BYTE 3,$$$ARG
000050 000000G .WORD IO.DET
000052 000001 .WORD TTYLUN
000054 001 000 .BYTE 1,0
000056 000000 .WORD 0
000060 000000 .WORD 0
324
325 000660 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 8
TYPERR -- TYPE OUT ERROR CODE
1 .TITLE FILIO -- FILE INTERFACE ROUTINES
2
3 .IDENT "006150"
4
5 ; COPYRIGHT (C) 1975, 1978, 1979 BY
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
9 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
10 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
11 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
12 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
13 ;
14 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
15 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
16 ; CORPORATION.
17 ;
18 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
19 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
20 ;
21 ; MODULE: PARSER FILE INTERFACE ROUTINES
22 ;
23 ; VERSION: 06-15
24 ;
25 ; AUTHOR: K. LEFEBVRE
26 ;
27 ; DATE: 29-AUG-79
28 ;
29 ; THIS MODULE CONTAINS:
30 ;
31 ; 1) FILE ACCESSING ROUTINES
32 ; 2) FILE READ ROUTINES
33 ; 3) FILE WRITE ROUTINES
34 ;
35 ;
36 ; THESE ROUTINES WERE ADDED FOR TCO 5.1000
37
38 .MCALL DIR$,ALUN$,QIOW$,QIOW$S
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 9
FILE INTERFACE DATA
40 .SBTTL FILE INTERFACE DATA
41
42 001046 .PSECT DATA
43
45
46 001046 .INDFG:: ; INDIRECT COMMAND FILE FLAG
47 001046 000000 .WORD 0
48
50 001050 .FISTS:: ; FILE I/O STATUS BLOCK
51 001050 000000 000000 .WORD 0,0
52
53 001000 .BUFSZ==1000 ; BUFFER SIZE
54
56
57 001054 .INFN:: ; INDIRECT COMMAND FILE NAME
58 001054 000000 000000 000000 .WORD 0,0,0 ; FILE NAME
59 001062 012314 .RAD50 /CMD/ ; EXTENSION
60 001064 000000 .WORD 0 ; VERSION
61 001066 005 005 .BYTE 5,5 ; OWNER
62 001070 054523 .WORD "SY ; DEVICE
63 001072 000000 .WORD 0 ; UNIT
64
65 001074 .INVBN:: ; CURRENT VIRTUAL BLOCK NO.
66 001074 000000 000000 .WORD 0,0
67 001100 .INBBC:: ; INPUT BUFFER BYTE COUNT
68 001100 000000 .WORD 0
69 001102 .INPOS:: ; INPUT BUFFER CURRENT POSITION
70 001102 000000 .WORD 0
71 001104 .INBUF:: ; INPUT BUFFER
72 001104 .BLKW .BUFSZ/2
73
74 002104 .INFNB:: ; INPUT FILE NAME BLOCK
75 002104 000000 000000 000000 .WORD 0,0,0 ; N.FID
76 002112 140123 140123 000000 .RAD50 /005005 / ; N.FNAM
77 002120 015172 .RAD50 /DIR/ ; N.FTYP
78 002122 000000 .WORD 0 ; N.FVER
79 002124 000000 .WORD 0 ; N.STAT
80 002126 000000 .WORD 0 ; N.NEXT
81 002130 177777 177777 .WORD -1,-1 ; DIRECTORY FID
82 002134 005 005 .BYTE 5,5 ; OWNER
83
84 002136 .INATT:: ; FILE ATTRIBUTES
85 002136 000 .BYTE 0 ; RECORD TYPE
86 002137 000 .BYTE 0 ; RECORD ATTRIBUTES
87 002140 000000 .WORD 0 ; LARGEST RECORD SIZE
88 002142 000000 000000 .WORD 0,0 ; HIGHEST ALLOCATED BLOCK
89 002146 000000 000000 .WORD 0,0 ; HIGHEST USED BLOCK
90 002152 000000 .WORD 0 ; FIRST FREE BYTE
91
93
94 002154 .OTFN:: ; LOG FILE NAME
95 002154 062072 073632 000000 .RAD50 /PARSER / ; FILE NAME
96 002162 046537 .RAD50 /LOG/ ; EXTENSION
97 002164 000000 .WORD 0 ; VERSION
98 002166 005 005 .BYTE 5,5 ; OWNER
99 002170 054523 .WORD "SY ; DEVICE
100 002172 000000 .WORD 0 ; UNIT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 9-1
FILE INTERFACE DATA
101
102 002174 .OTVBN:: ; CURRENT VIRTUAL BLOCK NO.
103 002174 000000 000000 .WORD 0,0
104 002200 .OTBBC:: ; OUTPUT BUFFER BYTE COUNT
105 002200 000000 .WORD 0
106 002202 .OTPOS:: ; OUTPUT BUFFER CURRENT POSITION
107 002202 000000 .WORD 0
108 002204 .OTBUF:: ; OUTPUT BUFFER
109 002204 .BLKW .BUFSZ/2
110
111 003204 .OTFNB:: ; OUTPUT FILE NAME BLOCK
112 003204 000000 000000 000000 .WORD 0,0,0 ; N.FID
113 003212 140123 140123 000000 .RAD50 /005005 / ; N.FNAM
114 003220 015172 .RAD50 /DIR/ ; N.FTYP
115 003222 000000 .WORD 0 ; N.FVER
116 003224 000000 .WORD 0 ; N.STAT
117 003226 000000 .WORD 0 ; N.NEXT
118 003230 177777 177777 .WORD -1,-1 ; DIRECTORY FID
119 003234 005 005 .BYTE 5,5 ; OWNER
120
121 003236 .OTATT:: ; FILE ATTRIBUTES
122 003236 000 .BYTE 0 ; RECORD TYPE
123 003237 000 .BYTE 0 ; RECORD ATTRIBUTES
124 003240 000000 .WORD 0 ; LARGEST RECORD SIZE
125 003242 000000 000000 .WORD 0,0 ; HIGHEST ALLOCATED BLOCK
126 003246 000000 000000 .WORD 0,0 ; HIGHEST USED BLOCK
127 003252 000000 .WORD 0 ; FIRST FREE BYTE
128
129 003254 .RECNT:: ; CURRENT RECORD SIZE
130 003254 000000 .WORD 0
131 003256 .RECPT:: ; CURRENT RECORD POSITION POINTER
132 003256 003260' .WORD .RECRD
133 003260 .RECRD::
134 003260 .BLKB 80. ; CURRENT RECORD
135
136 000660 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 10
.FNDIR -- ROUTINE TO FIND DIRECTORY FILE ID
138 .SBTTL .FNDIR -- ROUTINE TO FIND DIRECTORY FILE ID
139
140 ;+
141 ;
142 ; .FNDIR -- ROUTINE TO FIND THE [5,5] DIRECTORY FILE ID
143 ;
144 ; THIS ROUTINE WILL FIND THE FILE ID FOR THE [5,5] DIRECTORY IF
145 ; IT HAS NOT ALREADY BEEN FOUND. IT WILL ALSO ASSIGN A LUN TO THE
146 ; SYSTEM DEVICE.
147 ;
148 ; INPUT ARGUMENTS:
149 ;
150 ; R1=FILE NAME BLOCK
151 ; R2=LUN
152 ;
153 ; OUTPUT ARGUMENTS:
154 ;
155 ; NONE
156 ;
157 ; ERROR CODES RETURNED:
158 ;
159 ; CAL -- CAN'T ASSIGN LUN
160 ; DNF -- DIRECTORY FILE NOT FOUND
161 ;-
162
163 000660 .FNDIR::
164 000660 026127 000024 177777 CMP 24(R1),#-1 ; DIRECTORY FID ALREADY FOUND?
165 000666 001032 BNE 10$ ; YES -- EXIT
166 000670 010237 000064' MOV R2,FNDALU ; NO -- SET UP LUN
167 000674 DIR$ #FNDALN ; ASSIGN LUN
000674 012746 000062' MOV #FNDALN,-(SP)
000700 104375 EMT 375
168 000702 103425 BCS FNDCAL ; ERROR IF CC-C IS SET
169 000704 010237 000076' MOV R2,FNDLUN ; SET LUN
170 000710 010137 000120' MOV R1,FNDFNB ; SET FNB
171 000714 DIR$ #FNDFNA ; GET FID
000714 012746 000072' MOV #FNDFNA,-(SP)
000720 104375 EMT 375
172 000722 103422 BCS FNDDNF ; ERROR IF CC-C IS SET
173 000724 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
174 000730 002417 BLT FNDDNF ; NO -- ERROR
175 000732 016161 000000 000024 MOV 0(R1),24(R1) ; SAVE DIRECTORY FID
176 000740 016161 000002 000026 MOV 2(R1),26(R1) ; SAVE DIRECTORY FID
177 000746 016161 000004 000030 MOV 4(R1),30(R1) ; SAVE DIRECTORY FID
178 000754 000207 10$: RETURN ; DONE
179 ;
180 000756 FNDCAL:
181 000756 ERROR$ CAL ; ERROR -- CAN'T ASSIGN LUN
000756 012737 011364 000004' MOV #^RCAL,ERRCOD
000764 000261 SEC
000766 000207 RETURN
182 000770 FNDDNF:
183 000770 ERROR$ DNF ; ERROR -- DIRECTORY FILE NOT FOUND
000770 012737 015466 000004' MOV #^RDNF,ERRCOD
000776 000261 SEC
001000 000207 RETURN
184 ;
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 10-1
.FNDIR -- ROUTINE TO FIND DIRECTORY FILE ID
185
186 000062 .PSECT DPBS
187
188 000062 FNDALN: ; ASSIGN LUN DIRECTIVE
189 000062 ALUN$ 0,SY,0
000062 007 004 .BYTE 7,4
000064 000000 .WORD 0
000066 123 .ASCII /S/
000067 131 .ASCII /Y/
000070 000000 .WORD 0
190
191 000064' FNDALU=FNDALN+A.LULU
192
193 000072 FNDFNA: ; FIND FID DIRECTIVE
194 000072 QIOW$ IO.FNA,,E.FFIL,,.FISTS,,<,,,,,0>
000072 003 014 .BYTE 3,$$$ARG
000074 000000G .WORD IO.FNA
000076 000000 .WORD
000100 006 000 .BYTE E.FFIL,
000102 001050' .WORD .FISTS
000104 000000 .WORD
000106 000000 .WORD
000110 000000 .WORD
000112 000000 .WORD
000114 000000 .WORD
000116 000000 .WORD
000120 000000 .WORD 0
195
196 000076' FNDLUN=FNDFNA+Q.IOLU
197 000120' FNDFNB=FNDFNA+Q.IOPL+12
198
199 001002 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 11
.LOKUP -- ROUTINE TO LOOK UP A FILE TO GET ITS FID
201 .SBTTL .LOKUP -- ROUTINE TO LOOK UP A FILE TO GET ITS FID
202
203 ;+
204 ; .LOKUP -- ROUTINE TO LOOK UP A FILE TO GET ITS FILE ID
205 ;
206 ; THIS ROUTINE WILL LOOK UP A FILE TO GET ITS FILE ID SO THAT ALL
207 ; FUTURE OPERATIONS CAN BE DONE BY FILE ID. IF THE FILE IS NOT
208 ; FOUND THEN THE CC-C BIT IS SET AND THE ROUTINE RETURNS.
209 ;
210 ; INPUT ARGUMENTS:
211 ;
212 ; R0=FILE NAME
213 ; R1=FILE NAME BLOCK
214 ; R2=LUN
215 ;
216 ; OUTPUT ARGUMENTS:
217 ;
218 ; CC-C IS SET IF FILE NOT FOUND
219 ;
220 ; ERROR CODES RETURNED:
221 ;
222 ; CAL -- CAN'T ASSIGN LUN
223 ; DNF -- DIRECTORY FILE NOT FOUND
224 ; FLF -- FILE LOOKUP FAILURE
225 ;-
226
227 .ENABL LSB
228
229 001002 .REMOV::
230 001002 012737 000000G 000124' MOV #IO.RNA,LOKIOF ; REMOVE FROM DIRECTORY
231 001010 000403 BR 3$ ; GO ON
232 001012 .LOKUP::
233 001012 012737 000000G 000124' MOV #IO.FNA,LOKIOF ; FIND DIRECTORY
234 001020 004737 000660' 3$: CALL .FNDIR ; FIND THE DIRECTORY FID
235 001024 004737 001430' CALL .SETFN ; SET THE FILE NAME IN THE FNB
236 001030 010237 000126' MOV R2,LOKLUN ; SET LUN
237 001034 010137 000150' MOV R1,LOKFNB ; SET FNB
238 001040 DIR$ #LOKFNA ; GET FID
001040 012746 000122' MOV #LOKFNA,-(SP)
001044 104375 EMT 375
239 001046 103412 BCS LOKFLF ; ERROR IF CC-C IS SET
240 001050 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
241 001054 002401 BLT 10$ ; NO -- SEE WHY
242 001056 000207 5$: RETURN ; YES -- RETURN
243 001060 122737 000000G 001050' 10$: CMPB #IE.NSF,.FISTS ; NO SUCH FILE?
244 001066 001002 BNE LOKFLF ; NO -- ERROR
245 001070 000261 SEC ; YES -- SET CC-C
246 001072 000207 RETURN ; DONE
247
248 .DSABL LSB
249 ;
250 001074 LOKFLF:
251 001074 ERROR$ FLF ; ERROR -- FILE LOOKUP FAILURE
001074 012737 023546 000004' MOV #^RFLF,ERRCOD
001102 000261 SEC
001104 000207 RETURN
252 ;
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 11-1
.LOKUP -- ROUTINE TO LOOK UP A FILE TO GET ITS FID
253
254 000122 .PSECT DPBS
255
256 000122 LOKFNA: ; GET FID DIRECTIVE
257 000122 QIOW$ 0,,E.FFIL,,.FISTS,,<,,,,,0>
000122 003 014 .BYTE 3,$$$ARG
000124 000000 .WORD 0
000126 000000 .WORD
000130 006 000 .BYTE E.FFIL,
000132 001050' .WORD .FISTS
000134 000000 .WORD
000136 000000 .WORD
000140 000000 .WORD
000142 000000 .WORD
000144 000000 .WORD
000146 000000 .WORD
000150 000000 .WORD 0
258
259 000124' LOKIOF=LOKFNA+Q.IOFN
260 000126' LOKLUN=LOKFNA+Q.IOLU
261 000150' LOKFNB=LOKFNA+Q.IOPL+12
262
263 001106 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 12
.ENTER -- ROUTINE TO ENTER A FILE
265 .SBTTL .ENTER -- ROUTINE TO ENTER A FILE
266
267 ;+
268 ; .ENTER -- ROUTINE TO ENTER A FILE INTO A DIRECTORY
269 ;
270 ; THIS ROUTINE WILL CREATE A FILE OF A GIVEN NAME AND THEN ENTER IT
271 ; INTO A DIRECTORY.
272 ;
273 ; INPUT ARGUMENTS:
274 ;
275 ; NONE
276 ;
277 ; OUTPUT ARGUMENTS:
278 ;
279 ; NONE
280 ;
281 ; ERROR CODES RETURNED:
282 ;
283 ; FEN -- FILE ENTER FAILURE
284 ;-
285
286 001106 .ENTER::
287 001106 DIR$ #ENTCRE ; CREATE THE FILE
001106 012746 000152' MOV #ENTCRE,-(SP)
001112 104375 EMT 375
288 001114 103416 BCS ENTFEN ; ERROR IF CC-C IS SET
289 001116 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
290 001122 002413 BLT ENTFEN ; NO -- ERROR
291 001124 DIR$ #ENTENA ; YES -- ENTER THE FILE IN A DIRECTORY
001124 012746 000176' MOV #ENTENA,-(SP)
001130 104375 EMT 375
292 001132 103404 BCS 10$ ; ERROR IF CC-C IS SET
293 001134 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED
294 001140 002401 BLT 10$ ; NO -- ERROR
295 001142 000207 RETURN ; RETURN
296 001144 10$: DIR$ #ENTDEL ; DELETE NEW FILE
001144 012746 000226' MOV #ENTDEL,-(SP)
001150 104375 EMT 375
297 ;
298 001152 ENTFEN:
299 001152 ERROR$ FEN ; ERROR -- FILE ENTER FAILURE
001152 012737 023126 000004' MOV #^RFEN,ERRCOD
001160 000261 SEC
001162 000207 RETURN
300 ;
301
302 000152 .PSECT DPBS
303
304 000152 ENTCRE: ; CREATE FILE DIRECTIVE
305 000152 QIOW$ IO.CRE,LOGLUN,E.FFIL,,.FISTS,,<.OTFNB,,BIT15,1>
000152 003 012 .BYTE 3,$$$ARG
000154 000000G .WORD IO.CRE
000156 000003 .WORD LOGLUN
000160 006 000 .BYTE E.FFIL,
000162 001050' .WORD .FISTS
000164 000000 .WORD
000166 003204' .WORD .OTFNB
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 12-1
.ENTER -- ROUTINE TO ENTER A FILE
000170 000000 .WORD
000172 100000 .WORD BIT15
000174 000001 .WORD 1
306
307 000176 ENTENA: ; ENTER FILE DIRECTIVE
308 000176 QIOW$ IO.ENA,LOGLUN,E.FFIL,,.FISTS,,<,,,,,.OTFNB>
000176 003 014 .BYTE 3,$$$ARG
000200 000000G .WORD IO.ENA
000202 000003 .WORD LOGLUN
000204 006 000 .BYTE E.FFIL,
000206 001050' .WORD .FISTS
000210 000000 .WORD
000212 000000 .WORD
000214 000000 .WORD
000216 000000 .WORD
000220 000000 .WORD
000222 000000 .WORD
000224 003204' .WORD .OTFNB
309
310 000226 ENTDEL: ; DELETE FILE DIRECTIVE
311 000226 QIOW$ IO.DEL,LOGLUN,E.FFIL
000226 003 006 .BYTE 3,$$$ARG
000230 000000G .WORD IO.DEL
000232 000003 .WORD LOGLUN
000234 006 000 .BYTE E.FFIL,
000236 000000 .WORD
000240 000000 .WORD
312
313 001164 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 13
.OPEN -- ROUTINE TO OPEN A FILE
315 .SBTTL .OPEN -- ROUTINE TO OPEN A FILE
316
317 ;+
318 ; .OPEN -- ROUTINE TO OPEN A FILE WITH SOME ACCESS FUNCTION
319 ;
320 ; THIS ROUTINE WILL OPEN A FILE WITH SOME SPECIFIED ACCESS RIGHTS.
321 ; IT WILL ALSO READ THE FILE ATTRIBUTES.
322 ;
323 ; INPUT ARGUMENTS:
324 ;
325 ; R1=FILE NAME BLOCK (FIRST 2 WORDS ARE FILE ID)
326 ; R2=LUN
327 ; R4=ACCESS FUNCTION
328 ;
329 ; OUTPUT ARGUMENTS:
330 ;
331 ; NONE
332 ;
333 ; ERROR CODES RETURNED:
334 ;
335 ; FOF -- FILE OPEN FAILURE
336 ;-
337
338 001164 .OPEN::
339 001164 010437 000244' MOV R4,OPEFUN ; SET FUNCTION
340 001170 010237 000246' MOV R2,OPELUN ; SET LUN
341 001174 010137 000256' MOV R1,OPEFID ; SET FID
342 001200 010137 000272' MOV R1,OPEATT ; SET FILE ATTRIBUTES
343 001204 062737 000032 000272' ADD #32,OPEATT ; POINT TO CORRECT ADDR
344 001212 DIR$ #OPEACC ; OPEN THE FILE WITH SOME ACCESS
001212 012746 000242' MOV #OPEACC,-(SP)
001216 104375 EMT 375
345 001220 103401 BCS OPEFOF ; ERROR IF CC-C IS SET
346 001222 000207 RETURN
347 ;
348 001224 OPEFOF:
349 001224 ERROR$ FOF ; ERROR -- FILE OPEN FAILURE
001224 012737 023736 000004' MOV #^RFOF,ERRCOD
001232 000261 SEC
001234 000207 RETURN
350 ;
351
352 000242 .PSECT DPBS
353
354 000242 OPEACC: ; OPEN FILE DIRECTIVE
355 000242 QIOW$ 0,0,E.FFIL,,.FISTS,,<0,OPERAT,,,BIT15>
000242 003 013 .BYTE 3,$$$ARG
000244 000000 .WORD 0
000246 000000 .WORD 0
000250 006 000 .BYTE E.FFIL,
000252 001050' .WORD .FISTS
000254 000000 .WORD
000256 000000 .WORD 0
000260 000270' .WORD OPERAT
000262 000000 .WORD
000264 000000 .WORD
000266 100000 .WORD BIT15
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 13-1
.OPEN -- ROUTINE TO OPEN A FILE
356
357 000244' OPEFUN=OPEACC+Q.IOFN
358 000246' OPELUN=OPEACC+Q.IOLU
359 000256' OPEFID=OPEACC+Q.IOPL
360
361 000270 OPERAT:
362 000270 374 016 .BYTE -4,16
363 000272 000000 .WORD 0
364 000274 000 000 .BYTE 0,0
365
366 000272' OPEATT=OPERAT+2
367
368 001236 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 14
.EXTND -- ROUTINE TO EXTEND A FILE
370 .SBTTL .EXTND -- ROUTINE TO EXTEND A FILE
371
372 ;+
373 ; .EXTND -- ROUTINE TO EXTEND A FILE BY ONE BLOCK
374 ;
375 ; THIS ROUTINE WILL EXTEND A CURRENTLY OPEN FILE WITH EXTEND ACCESS
376 ; BY ONE BLOCK.
377 ;
378 ; INPUT ARGUMENTS:
379 ;
380 ; NONE
381 ;
382 ; OUTPUT ARGUMENTS:
383 ;
384 ; NONE
385 ;
386 ; ERROR CODES RETURNED:
387 ;
388 ; FEF -- FILE EXTEND FAILURE
389 ;-
390
391 001236 .EXTND::
392 001236 DIR$ #EXTEXT ; EXTEND THE FILE
001236 012746 000276' MOV #EXTEXT,-(SP)
001242 104375 EMT 375
393 001244 103411 BCS EXTFEF ; ERROR IF CC-C IS SET
394 001246 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
395 001252 002406 BLT EXTFEF ; NO -- ERROR
396 001254 062737 000001 003244' ADD #1,.OTATT+6 ; INCREASE BLOCKS ALLOCATED
397 001262 005537 003242' ADC .OTATT+4 ; PROPAGATE CARRY
398 001266 000207 RETURN ; DONE
399 ;
400 001270 EXTFEF:
401 001270 013737 002202' 003252' MOV .OTPOS,.OTATT+14 ; SET NEXT FREE BYTE
402 001276 162737 002204' 003252' SUB #.OTBUF,.OTATT+14 ; MAKE RELATIVE
403 001304 012701 003236' MOV #.OTATT,R1 ; SET ATTRIBUTE ADDR
404 001310 012702 000003 MOV #LOGLUN,R2 ; SET LUN
406 001314 105037 000000' CLRB .OUTLG ; INDICATE FILE CLOSED
408 001320 004737 001352' CALL .CLOSE ; CLOSE FILE
409 001324 ERROR$ FEF ; ERROR -- FILE EXTEND FAILURE
001324 012737 023116 000004' MOV #^RFEF,ERRCOD
001332 000261 SEC
001334 000207 RETURN
410 ;
411
412 000276 .PSECT DPBS
413
414 000276 EXTEXT: ; FILE EXTEND DIRECTIVE
415 000276 QIOW$ IO.EXT,LOGLUN,E.FFIL,,.FISTS,,<,,BIT15,1>
000276 003 012 .BYTE 3,$$$ARG
000300 000000G .WORD IO.EXT
000302 000003 .WORD LOGLUN
000304 006 000 .BYTE E.FFIL,
000306 001050' .WORD .FISTS
000310 000000 .WORD
000312 000000 .WORD
000314 000000 .WORD
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 14-1
.EXTND -- ROUTINE TO EXTEND A FILE
000316 100000 .WORD BIT15
000320 000001 .WORD 1
416
417 001336 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 15
.CLOSE -- ROUTINE TO CLOSE A FILE
419 .SBTTL .CLOSE -- ROUTINE TO CLOSE A FILE
420
421 ;+
422 ; .CLOSE -- ROUTINE TO CLOSE A SPECIFIED FILE
423 ;
424 ; THIS ROUTINE WILL CLOSE AND DEACCESS A SPECIFIED FILE.
425 ; IT WILL ALSO WRITE OUT THE CURRENT ATTRIBUTES.
426 ;
427 ; INPUT ARGUMENTS:
428 ;
429 ; R1=ATTRIBUTE BLOCK
430 ; R2=LUN
431 ;
432 ; OUTPUT ARGUMENTS:
433 ;
434 ; NONE
435 ;
436 ; ERROR CODES RETURNED:
437 ;
438 ; FCF -- FILE CLOSE FAILURE
439 ;-
440
441 .ENABL LSB
442
443 001336 .DELET::
444 001336 012737 000000G 000324' MOV #IO.DEL,CLOIOF ; I/O FUNCTION FOR DELETE
445 001344 005037 000340' CLR CLOATR ; NO ATTRIBUTES
446 001350 000406 BR 5$ ; DO IT
447 001352 .CLOSE::
448 001352 012737 000000G 000324' MOV #IO.DAC,CLOIOF ; I/O FUNCTION FOR DEACCESS
449 001360 012737 000342' 000340' MOV #CLOWAT,CLOATR ; WRITE ATTRIBUTES
450 001366 010237 000326' 5$: MOV R2,CLOLUN ; SET LUN
451 001372 010137 000344' MOV R1,CLOATT ; SET FILE ATTRIBUTES
452 001376 DIR$ #CLODAC ; CLOSE FILE
001376 012746 000322' MOV #CLODAC,-(SP)
001402 104375 EMT 375
453 001404 103404 BCS CLOFCF ; ERROR IF CC-C IS SET
454 001406 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
455 001412 002401 BLT CLOFCF ; NO -- ERROR
456 001414 000207 RETURN ; YES -- DONE
457 ;
458
459 .DSABL LSB
460
461 001416 CLOFCF:
462 001416 ERROR$ FCF ; ERROR -- FILE CLOSE FAILURE
001416 012737 022776 000004' MOV #^RFCF,ERRCOD
001424 000261 SEC
001426 000207 RETURN
463 ;
464
465 000322 .PSECT DPBS
466
467 000322 CLODAC: ; FILE CLOSE DIRECTIVE
468 000322 QIOW$ 0,0,E.FFIL,,.FISTS,,<0,0>
000322 003 010 .BYTE 3,$$$ARG
000324 000000 .WORD 0
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 15-1
.CLOSE -- ROUTINE TO CLOSE A FILE
000326 000000 .WORD 0
000330 006 000 .BYTE E.FFIL,
000332 001050' .WORD .FISTS
000334 000000 .WORD
000336 000000 .WORD 0
000340 000000 .WORD 0
469
470 000324' CLOIOF=CLODAC+Q.IOFN
471 000326' CLOLUN=CLODAC+Q.IOLU
472 000340' CLOATR=CLODAC+Q.IOPL+2
473
474 000342 CLOWAT:
475 000342 004 016 .BYTE 4,16
476 000344 000000 .WORD 0
477 000346 000 000 .BYTE 0,0
478
479 000344' CLOATT=CLOWAT+2
480
481 001430 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 16
.SETFN -- ROUTINE TO SET A FILE NAME IN A FILE NAME BLOCK
483 .SBTTL .SETFN -- ROUTINE TO SET A FILE NAME IN A FILE NAME BLOCK
484
485 ;+
486 ; .SETFN -- ROUTINE TO SET A FILE NAME IN A FILE NAME BLOCK
487 ;
488 ; THIS ROUTINE WILL INITIALIZE A FILE NAME BLOCK WITH A FILE NAME,
489 ; VERSION NUMBER, AND STATUS VALUES.
490 ;
491 ; INPUT ARGUMENTS:
492 ;
493 ; R0=FILE NAME PTR
494 ; R1=FILE NAME BLOCK ADDR
495 ;
496 ; OUTPUT ARGUMENTS:
497 ;
498 ; NONE
499 ;
500 ; ERROR CODES RETURNED:
501 ;
502 ; NONE
503 ;-
504
505 001430 .SETFN::
506 001430 PUSH <R1,R0> ; SAVE R0,R1
001430 010146 MOV R1,-(SP)
001432 010046 MOV R0,-(SP)
507 001434 005021 CLR (R1)+ ; CLEAR FID
508 001436 005021 CLR (R1)+ ; CLEAR FID
509 001440 005021 CLR (R1)+ ; CLEAR FID
510 001442 012021 MOV (R0)+,(R1)+ ; FILE NAME
511 001444 012021 MOV (R0)+,(R1)+ ; FILE NAME
512 001446 012021 MOV (R0)+,(R1)+ ; FILE NAME
513 001450 012021 MOV (R0)+,(R1)+ ; EXTENSION
514 001452 012021 MOV (R0)+,(R1)+ ; VERSION
515 001454 005021 CLR (R1)+ ; STATUS
516 001456 005011 CLR (R1) ; NEXT PTR
517 001460 POP <R0,R1> ; RESTORE R0,R1
001460 012600 MOV (SP)+,R0
001462 012601 MOV (SP)+,R1
518 001464 000207 RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 17
.SETFN -- ROUTINE TO SET A FILE NAME IN A FILE NAME BLOCK
521
522 .SBTTL .READR -- ROUTINE TO READ A RECORD
523
524 ;+
525 ; .READR -- ROUTINE TO READ A RECORD FROM THE INDIRECT COMMAND FILE.
526 ;
527 ; THIS ROUTINE WILL GET A RECORD (EQUIVILENT TO A TYPED COMMAND) FROM
528 ; THE CURRENTLY OPEN INDIRECT COMMAND FILE. IT WILL INVISIBLY READ
529 ; VIRTUAL BLOCKS INORDER TO BLOCK THE RECORDS. IF AN E-O-F IS
530 ; ENCOUNTERED THE OPEN FILE IS CLOSED AND INPUT IS REDIRECTED TO CTY.
531 ;
532 ; INPUT ARGUMENTS:
533 ;
534 ; R2=OUTPUT BUFFER
535 ; R3=STATUS BLOCK
536 ;
537 ; OUTPUT ARGUMENTS:
538 ; R2 POINTS TO END OF RECORD
539 ; 2(R3) CONTAINS BYTE COUNT OF RECORD
540 ;
541 ; ERROR CODES RETURNED:
542 ;
543 ; FRD -- FILE READ FAILURE
544 ;-
545
546 001466 .READR::
547 001466 PUSH <R0,R1> ; SAVE R1 AND R0
001466 010046 MOV R0,-(SP)
001470 010146 MOV R1,-(SP)
548 001472 004737 001572' 10$: CALL .READW ; READ RECORD LENGTH FROM FILE
549 001476 103415 BCS 30$ ; EOF IF CC-C IS SET
550 001500 005700 TST R0 ; SEE IF A NULL RECORD?
551 001502 001773 BEQ 10$ ; YES -- READ NEXT RECORD
552 001504 010001 MOV R0,R1 ; NO -- SAVE BYTE COUNT
553 001506 010063 000002 MOV R0,2(R3) ; SET RETURNED BYTE COUNT
554 001512 004737 001650' 20$: CALL .READB ; READ CHARACTER
555 001516 103405 BCS 30$ ; EOF IF CC-C IS SET
556 001520 110022 MOVB R0,(R2)+ ; SAVE CHARACTER
557 001522 077105 SOB R1,20$ ; DONE?
558 001524 25$: POP <R1,R0> ; YES -- RESTORE R1 AND R0
001524 012601 MOV (SP)+,R1
001526 012600 MOV (SP)+,R0
559 001530 000207 RETURN ; RETURN
560 001532 005037 001046' 30$: CLR .INDFG ; REDIRECT INPUT TO CTY
561 001536 012701 002104' MOV #.INFNB,R1 ; INPUT FILE NAME BLOCK
562 001542 012702 000002 MOV #INDLUN,R2 ; FILE LUN
563 001546 004737 001352' CALL .CLOSE ; CLOSE FILE AND DEACCESS
564 001552 012700 000127' MOV #EOFMSG,R0 ; E-O-F MESSAGE PTR
565 001556 004737 000002' CALL .TYMSG ; OUTPUT MESSAGE
566 001562 005063 000002 40$: CLR 2(R3) ; CLEAR BYTE COUNT
567 001566 000261 SEC ; SET CC-C BIT
568 001570 000755 BR 25$ ; DONE
569 ;
570
571 000127 .PSECT MESSAG
572
573 000127 EOFMSG:
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 17-1
.READR -- ROUTINE TO READ A RECORD
574 000127 040 074 105 .ASCIZ % <EOF> %
000132 117 106 076
000135 040 000
575
576 001572 .PSECT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 18
.READW -- READ A WORD FROM A FILE
578 .SBTTL .READW -- READ A WORD FROM A FILE
579
580 ;+
581 ; .READW -- ROUTINE TO READ A WORD FROM A FILE
582 ;
583 ; THIS ROUTINE WILL READ A WORD FROM THE CURRENTLY OPEN INDIRECT
584 ; COMMAND FILE. IF THE CURRENT BLOCK IS EMPTY IT WILL READ IN THE
585 ; NEXT ONE. THE WORD READ MUST BE WORD ALIGNED. IF AN E-O-F IS
586 ; ENCOUNTERED THE CC-C BIT IS SET AND THE ROUTINE RETURNS.
587 ;
588 ; INPUT ARGUMENTS:
589 ;
590 ; NONE
591 ;
592 ; OUTPUT ARGUMENTS:
593 ;
594 ; R0 CONTAINS WORD READ
595 ;
596 ; ERROR CODES RETURNED:
597 ;
598 ; FRD -- FILE READ FAILURE
599 ;-
600
601 001572 .READW::
602 001572 032737 000001 001102' BIT #1,.INPOS ; ARE WE ON A WORD BOUNDRY?
603 001600 001404 BEQ 10$ ; YES -- GO ON
604 001602 005237 001102' INC .INPOS ; NO -- GET ON A WORD BOUNDRY
605 001606 005337 001100' DEC .INBBC ; DECREMENT BYTE COUNT
606 001612 005737 001100' 10$: TST .INBBC ; IS CURRENT BUFFER EMPTY?
607 001616 003003 BGT 20$ ; NO -- GO ON
608 001620 004737 001702' CALL .READ ; YES -- READ NEXT BLOCK
609 001624 103410 BCS 30$ ; EOF IF CC-C IS SET
610 001626 017700 001102' 20$: MOV @.INPOS,R0 ; GET WORD INTO R0
611 001632 062737 000002 001102' ADD #2,.INPOS ; UPDATE BUFFER POSITION PTR
612 001640 162737 000002 001100' SUB #2,.INBBC ; UPDATE BUFFER BYTE COUNT
613 001646 000207 30$: RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 19
.READB -- READ A BYTE FROM A FILE
615 .SBTTL .READB -- READ A BYTE FROM A FILE
616
617 ;+
618 ; .READB -- ROUTINE TO READ A BYTE FROM A FILE
619 ;
620 ; THIS ROUTINE WILL READ A BYTE FROM THE CURRENTLY OPEN INDIRECT
621 ; COMMAND FILE. IF THE CURRENT BLOCK IS EMPTY IT WILL READ IN THE
622 ; NEXT ONE. IF AN E-O-F IS ENCOUNTERED THE CC-C BIT IS SET AND THE
623 ; ROUTINE RETURNS.
624 ;
625 ; INPUT ARGUMENTS:
626 ;
627 ; NONE
628 ;
629 ; OUTPUT ARGUMENTS:
630 ;
631 ; R0 CONTAINS BYTE READ
632 ;
633 ; ERROR CODES RETURNED:
634 ;
635 ; FRD -- FILE READ FAILURE
636 ;-
637
638 001650 .READB::
639 001650 005737 001100' TST .INBBC ; IS CURRENT BUFFER EMPTY?
640 001654 003003 BGT 10$ ; NO -- GO ON
641 001656 004737 001702' CALL .READ ; YES -- READ NEXT BLOCK
642 001662 103406 BCS 20$ ; EOF IF CC-C IS SET
643 001664 117700 001102' 10$: MOVB @.INPOS,R0 ; GET WORD INTO R0
644 001670 005237 001102' INC .INPOS ; UPDATE BUFFER POSITION PTR
645 001674 005337 001100' DEC .INBBC ; UPDATE BUFFER BYTE COUNT
646 001700 000207 20$: RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 20
.READ -- ROUTINE TO READ A BLOCK
648 .SBTTL .READ -- ROUTINE TO READ A BLOCK
649
650 ;+
651 ; .READ -- ROUTINE TO READ A BLOCK FROM INDIRECT COMMAND FILE
652 ;
653 ; THIS ROUTINE WILL READ A BLOCK FROM THE CURRENTLY OPEN INDIRECT
654 ; COMMAND FILE. THE BUFFER COUNTS AND POINTERS WILL THEN BE SET.
655 ; IF AN E-O-F IS ENCOUNTERED THE CC-C BIT IS SET AND THE ROUTINE
656 ; RETURNS.
657 ;
658 ; INPUT ARGUMENTS:
659 ;
660 ; NONE
661 ;
662 ; OUTPUT ARGUMENTS:
663 ;
664 ; NONE
665 ;
666 ; ERROR CODES RETURNED:
667 ;
668 ; FRD -- FILE READ FAILURE
669 ;-
670
671 001702 .READ::
672 001702 062737 000001 001076' ADD #1,.INVBN+2 ; NEXT VIRTUAL BLOCK
673 001710 005537 001074' ADC .INVBN ; PROPAGATE CARRY
674 001714 023737 001076' 002150' CMP .INVBN+2,.INATT+12 ; EOF?
675 001722 003041 BGT 10$ ; YES -- EXIT
676 001724 QIOW$S #IO.RVB,#INDLUN,#E.FFIL,,#.FISTS,,<#.INBUF,#.BUFSZ,,.INVBN,.INVBN+2>
001724 013746 001076' MOV .INVBN+2,-(SP)
001730 013746 001074' MOV .INVBN,-(SP)
001734 005046 CLR -(SP)
001736 012746 001000 MOV #.BUFSZ,-(SP)
001742 012746 001104' MOV #.INBUF,-(SP)
001746 005046 CLR -(SP)
001750 012746 001050' MOV #.FISTS,-(SP)
001754 005046 CLR -(SP)
001756 112716 000006 MOVB #E.FFIL,(SP)
001762 012746 000002 MOV #INDLUN,-(SP)
001766 012746 000000G MOV #IO.RVB,-(SP)
001772 012746 MOV (PC)+,-(SP)
001774 003 013 .BYTE 3,$$$T1
001776 104375 EMT 375
677 002000 103414 BCS REAFRD ; ERROR IF CC-C IS SET
678 002002 105737 001050' TSTB .FISTS ; SEE IF WE REALLY SUCCEEDED?
679 002006 002411 BLT REAFRD ; NO -- CHECK ERROR
680 002010 012737 001104' 001102' MOV #.INBUF,.INPOS ; YES -- SET BUFFER POSITION PTR
681 002016 013737 001052' 001100' MOV .FISTS+2,.INBBC ; SET BUFFER BYTE COUNT
682 002024 000207 RETURN ; DONE
683 002026 000261 10$: SEC ; YES -- SET CC-C
684 002030 000207 RETURN ; DONE
685 ;
686 002032 REAFRD:
687 002032 012701 002136' MOV #.INATT,R1 ; SET ATTRIBUTE ADDR
688 002036 012702 000002 MOV #INDLUN,R2 ; SET LUN
689 002042 005037 001046' CLR .INDFG ; INDICATE FILE CLOSED
690 002046 004737 001352' CALL .CLOSE ; CLOSE FILE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 20-1
.READ -- ROUTINE TO READ A BLOCK
691 002052 20$: ERROR$ FRD ; ERROR -- FILE READ FAILURE
002052 012737 024124 000004' MOV #^RFRD,ERRCOD
002060 000261 SEC
002062 000207 RETURN
692 ;
693
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 21
.WRITR -- ROUTINE TO WRITE A RECORD
696 .SBTTL .WRITR -- ROUTINE TO WRITE A RECORD
697
698 ;+
699 ; .WRITR -- ROUTINE TO WRITE A RECORD TO THE LOG FILE
700 ;
701 ; THIS ROUTINE WILL WRITE A RECORD TO THE FILE PARSER.LOG WHEN
702 ; OUTPUT IS DIRECTED TO THE LOG FILE.
703 ;
704 ; INPUT ARGUMENTS:
705 ;
706 ; R2=RECORD PTR
707 ; R1=BYTE COUNT
708 ;
709 ; OUTPUT ARGUMENTS:
710 ;
711 ; NONE
712 ;
713 ; ERROR CODES RETURNED:
714 ;
715 ; FEF -- FILE EXTEND FAILURE
716 ; FWT -- FILE WRITE FAILURE
717 ;-
718
719 002064 .WRITR::
720 002064 PUSH R0 ; SAVE R0
002064 010046 MOV R0,-(SP)
721 002066 121227 000012 5$: CMPB (R2),#12 ; CHARACTER A <LF>?
722 002072 001414 BEQ 7$ ; YES -- WRITE OUT RECORD
723 002074 121227 000015 CMPB (R2),#15 ; NO -- CHARACTER A <CR>?
724 002100 001444 BEQ 40$ ; YES -- PROCESS IT
725 002102 112277 003256' MOVB (R2)+,@.RECPT ; NO -- WRITE CHAR TO RECORD
726 002106 005237 003256' INC .RECPT ; UPDATE POINTER
727 002112 005237 003254' INC .RECNT ; INCREMENT COUNT
728 002116 077115 SOB R1,5$ ; DONE?
729 002120 6$: POP R0 ; YES -- RESTORE R0
002120 012600 MOV (SP)+,R0
730 002122 000207 RETURN ; EXIT
731 002124 7$: PUSH <R2,R1> ; SAVE R2,R1
002124 010246 MOV R2,-(SP)
002126 010146 MOV R1,-(SP)
732 002130 012702 003260' MOV #.RECRD,R2 ; R2 POINTS TO RECORD
733 002134 013701 003254' MOV .RECNT,R1 ; R1 HAS RECORD COUNT
734 002140 020137 003240' CMP R1,.OTATT+2 ; IS THIS THE BIGGEST RECORD?
735 002144 101402 BLOS 10$ ; NO -- GO ON
736 002146 010137 003240' MOV R1,.OTATT+2 ; YES -- SAVE IT
737 002152 010100 10$: MOV R1,R0 ; WRITE OUT RECORD BYTE COUNT
738 002154 004737 002222' CALL .WRITW ; WRITE IT
739 002160 005701 TST R1 ; IS THIS A NULL RECORD?
740 002162 001404 BEQ 30$ ; YES -- DONE
741 002164 112200 20$: MOVB (R2)+,R0 ; NO -- GET NEXT BYTE OF RECORD
742 002166 004737 002276' CALL .WRITB ; WRITE IT
743 002172 077104 SOB R1,20$ ; ALL BYTES WRITTEN?
744 002174 30$: POP <R1,R2> ; YES -- RESTORE R2,R1
002174 012601 MOV (SP)+,R1
002176 012602 MOV (SP)+,R2
745 002200 012737 003260' 003256' MOV #.RECRD,.RECPT ; RESET RECORD POINTER
746 002206 005037 003254' CLR .RECNT ; CLEAR RECORD COUNT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 21-1
.WRITR -- ROUTINE TO WRITE A RECORD
747 002212 105722 40$: TSTB (R2)+ ; REMOVE NEW LINE CHARACTER
748 002214 005301 DEC R1 ; REMOVE FROM COUNT
749 002216 001323 BNE 5$ ; NO -- GO ON
750 002220 000737 BR 6$ ; YES -- EXIT
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 22
.WRITW -- WRITE A WORD TO A FILE
752 .SBTTL .WRITW -- WRITE A WORD TO A FILE
753
754 ;+
755 ; .WRITW -- ROUTINE TO WRITE A WORD TO A FILE
756 ;
757 ; THIS ROUTINE WILL WRITE A WORD TO A CURRENTLY OPEN FILE. IF THE
758 ; CURRENT BLOCK IS FULL THEN THE BLOCK WILL BE WRITTEN TO DISK AND
759 ; THE WORD WILL BE WRITTEN TO THE NEW BLOCK.
760 ;
761 ; INPUT ARGUMENTS:
762 ;
763 ; R0=WORD TO WRITE
764 ;
765 ; OUTPUT ARGUMENTS:
766 ;
767 ; NONE
768 ;
769 ; ERROR CODES RETURNED:
770 ;
771 ; FEF -- FILE EXTEND FAILURE
772 ; FWT -- FILE WRITE FAILURE
773 ;-
774
775 002222 .WRITW::
776 002222 032737 000001 002202' BIT #1,.OTPOS ; ARE WE ON A WORD BOUNDRY?
777 002230 001404 BEQ 10$ ; YES -- GO ON
778 002232 005237 002202' INC .OTPOS ; NO -- POSITION TO WORD BOUNDRY
779 002236 005337 002200' DEC .OTBBC ; DECREMENT FREE BYTE COUNT
780 002242 005737 002200' 10$: TST .OTBBC ; BLOCK FULL?
781 002246 003002 BGT 20$ ; NO -- GO ON
782 002250 004737 002426' CALL .WRITE ; YES -- WRITE OUT BLOCK
783 002254 010077 002202' 20$: MOV R0,@.OTPOS ; WRITE WORD TO BUFFER
784 002260 062737 000002 002202' ADD #2,.OTPOS ; UPDATE BUFFER POINTER
785 002266 162737 000002 002200' SUB #2,.OTBBC ; UPDATE BYTE COUNT
786 002274 000207 RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 23
.WRITB -- WRITE A BYTE TO A FILE
788 .SBTTL .WRITB -- WRITE A BYTE TO A FILE
789
790 ;+
791 ; .WRITB -- ROUTINE TO WRITE A BYTE TO A FILE
792 ;
793 ; THIS ROUTINE WILL WRITE A BYTE TO A BUFFER THAT WILL THEN BE WRITTEN
794 ; TO DISK WHEN IT IS FULL.
795 ;
796 ; INPUT ARGUMENTS:
797 ;
798 ; R0=BYTE TO WRITE
799 ;
800 ; OUTPUT ARGUMENTS:
801 ;
802 ; NONE
803 ;
804 ; ERROR CODES RETURNED:
805 ;
806 ; FEF -- FILE EXTEND FAILURE
807 ; FWT -- FILE WRITE FAILURE
808 ;-
809
810 002276 .WRITB::
811 002276 005737 002200' TST .OTBBC ; BUFFER FULL?
812 002302 003002 BGT 10$ ; NO -- GO ON
813 002304 004737 002426' CALL .WRITE ; YES -- WRITE OUT BLOCK
814 002310 110077 002202' 10$: MOVB R0,@.OTPOS ; WRITE BYE TO BUFFER
815 002314 005237 002202' INC .OTPOS ; UPDATE POSITION
816 002320 005337 002200' DEC .OTBBC ; UPDATE BYTE COUNT
817 002324 000207 RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 24
.WRITZ -- WRITE OUT CURRENT BLOCK
819 .SBTTL .WRITZ -- WRITE OUT CURRENT BLOCK
820
821 ;+
822 ; .WRITZ -- ROUTINE TO WRITE OUT CURRENT BUFFER
823 ;
824 ; THIS ROUTINE WILL WRITE OUT THE CURRENT BUFFER TO THE DISK FILE.
825 ; IF THE BUFFER IS NOT FULL THE THE EXCESS SPACE IS ZEROED.
826 ;
827 ; INPUT ARGUMENTS:
828 ;
829 ; NONE
830 ;
831 ; OUTPUT ARGUMENTS:
832 ;
833 ; NONE
834 ;
835 ; ERROR CODES RETURNED:
836 ;
837 ; FEF -- FILE EXTEND FAILURE
838 ; FWT -- FILE WRITE FAILURE
839 ;-
840
841 002326 .WRITZ::
842 002326 013737 002202' 003252' MOV .OTPOS,.OTATT+14 ; NEXT FREE BYTE
843 002334 162737 002204' 003252' SUB #.OTBUF,.OTATT+14 ; MAKE RELATIVE ADDR
844 002342 023727 002200' 000002 CMP .OTBBC,#2 ; MORE THAN 1 BYTE LEFT?
845 002350 002413 BLT 10$ ; NO -- JUST ZERO BUFFER
846 002352 013700 002200' MOV .OTBBC,R0 ; YES -- WRITE ZERO RECORD
847 002356 032737 000001 002202' BIT #1,.OTPOS ; ON WORD BOUNDRY?
848 002364 001401 BEQ 5$ ; YES -- GO ON
849 002366 005300 DEC R0 ; NO -- DECREMENT COUNT
850 002370 162700 000002 5$: SUB #2,R0 ; DISCOUNT RECORD COUNT FIELD
851 002374 004737 002222' CALL .WRITW ; WRITE COUNT
852 002400 005737 002200' 10$: TST .OTBBC ; BUFFER FULL?
853 002404 001405 BEQ 20$ ; YES -- DONE
854 002406 112700 000000 MOVB #0,R0 ; WRITE OUT ZEROS
855 002412 004737 002276' 12$: CALL .WRITB ; NO -- FILL BUFFER
856 002416 000770 BR 10$ ; NEXT
857 002420 004737 002426' 20$: CALL .WRITE ; WRITE OUT BUFFER
858 002424 000207 RETURN ; DONE
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 25
.WRITE -- ROUTINE TO WRITE A BLOCK
860 .SBTTL .WRITE -- ROUTINE TO WRITE A BLOCK
861
862 ;+
863 ; .WRITE -- ROUTINE TO WRITE A BLOCK TO A FILE
864 ;
865 ; THIS ROUTINE WILL WRITE A BLOCK TO A CURRENTLY OPEN FILE ON DISK.
866 ; IF THE FILE SPACE IS FULL THE FILE WILL BE EXTENDED.
867 ;
868 ; INPUT ARGUMENTS:
869 ;
870 ; NONE
871 ;
872 ; OUTPUT ARGUMENTS:
873 ;
874 ; NONE
875 ;
876 ; ERROR CODES RETURNED:
877 ;
878 ; FEF -- FILE EXTEND FAILURE
879 ; FWT -- FILE WRITE FAILURE
880 ;-
881
882 002426 .WRITE::
883 002426 062737 000001 002176' ADD #1,.OTVBN+2 ; NEXT VIRTUAL BLOCK
884 002434 005537 002174' ADC .OTVBN ; PROPAGATE CARRY
885 002440 10$: QIOW$S #IO.WVB,#LOGLUN,#E.FFIL,,#.FISTS,,<#.OTBUF,#.BUFSZ,,.OTVBN,.OTVBN+2>
002440 013746 002176' MOV .OTVBN+2,-(SP)
002444 013746 002174' MOV .OTVBN,-(SP)
002450 005046 CLR -(SP)
002452 012746 001000 MOV #.BUFSZ,-(SP)
002456 012746 002204' MOV #.OTBUF,-(SP)
002462 005046 CLR -(SP)
002464 012746 001050' MOV #.FISTS,-(SP)
002470 005046 CLR -(SP)
002472 112716 000006 MOVB #E.FFIL,(SP)
002476 012746 000003 MOV #LOGLUN,-(SP)
002502 012746 000000G MOV #IO.WVB,-(SP)
002506 012746 MOV (PC)+,-(SP)
002510 003 013 .BYTE 3,$$$T1
002512 104375 EMT 375
886 002514 103427 BCS WRIFWT ; ERROR IF CC-C IS SET
887 002516 105737 001050' TSTB .FISTS ; DID WE REALLY SUCCEED?
888 002522 002415 BLT 20$ ; NO -- SEE WHY
889 002524 013737 002176' 003250' MOV .OTVBN+2,.OTATT+12 ; SET HIGHEST USED BLOCK
890 002532 013737 002174' 003246' MOV .OTVBN,.OTATT+10 ; SET HIGHEST USED BLOCK
891 002540 012737 002204' 002202' MOV #.OTBUF,.OTPOS ; YES -- SET BUFFER POINTER
892 002546 012737 001000 002200' MOV #.BUFSZ,.OTBBC ; SET BYTE COUNT
893 002554 000207 RETURN ; DONE
894 002556 122737 000000G 001050' 20$: CMPB #IE.EOF,.FISTS ; E-O-F FOUND?
895 002564 001003 BNE WRIFWT ; NO -- ERROR
896 002566 004737 001236' CALL .EXTND ; YES -- EXTEND FILE
897 002572 000722 BR 10$ ; TRY AGAIN
898 ;
899 002574 WRIFWT:
900 002574 ERROR$ FWT ; ERROR -- FILE WRITE FAILURE
002574 012737 024454 000004' MOV #^RFWT,ERRCOD
002602 000261 SEC
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 25-1
.WRITE -- ROUTINE TO WRITE A BLOCK
002604 000207 RETURN
901 ;
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 28
.WRITE -- ROUTINE TO WRITE A BLOCK
1 000000' .END LOGXFR
FILIO -- FILE INTERFACE ROUTINE MACRO M1113 11-NOV-81 10:29 PAGE 28-1
SYMBOL TABLE
A.LULU= 000002 E.FFIL= 000006 LOGXFR 000000RG $CD11 = 000001 .INDFG 001046RG 002
A.LUNA= 000004 FNDALN 000062R 004 LOKFLF 001074R $DBDTE= 000001 .INFN 001054RG 002
A.LUNU= 000006 FNDALU= 000064R 004 LOKFNA 000122R 004 $DH11 = 000001 .INFNB 002104RG 002
BC.HDS= ****** GX FNDCAL 000756R LOKFNB= 000150R 004 $DSW = ****** GX .INPOS 001102RG 002
BIT15 = 100000 FNDDNF 000770R LOKIOF= 000124R 004 $DTE = 000001 .INVBN 001074RG 002
BLKNUM 000012R 002 FNDFNA 000072R 004 LOKLUN= 000126R 004 $FE = 000001 .LOKUP 001012RG
CLOATR= 000340R 004 FNDFNB= 000120R 004 L$$P20= 000002 $F11 = 000001 .OPEN 001164RG
CLOATT= 000344R 004 FNDLUN= 000076R 004 OPEACC 000242R 004 $LP20 = 000001 .OTATT 003236RG 002
CLODAC 000322R 004 HEADER 000006R 002 OPEATT= 000272R 004 $RP04 = 000001 .OTBBC 002200RG 002
CLOFCF 001416R IE.EOF= ****** GX OPEFID= 000256R 004 $RX11 = 000001 .OTBUF 002204RG 002
CLOIOF= 000324R 004 IE.NSF= ****** GX OPEFOF 001224R $TOP20= 000001 .OTFN 002154RG 002
CLOLUN= 000326R 004 INDLUN= 000002 OPEFUN= 000244R 004 $$$ARG= 000005 .OTFNB 003204RG 002
CLOWAT 000342R 004 IO.ACR= ****** GX OPELUN= 000246R 004 $$$OST= 000014 .OTPOS 002202RG 002
CR 000125R 003 IO.ATT= ****** GX OPERAT 000270R 004 $$$T1 = 000013 .OTVBN 002174RG 002
CRLEN = 000002 IO.CRE= ****** GX PRE 000116R 003 .ASCTY 000000R 004 .OUTLG 000000R 002
DV.EOF= ****** GX IO.DAC= ****** GX PRELEN= 000007 .ATCTY 000010R 004 .READ 001702RG
DV.LOG= ****** GX IO.DEL= ****** GX Q.IOAE= 000012 .BUFSZ= 001000 G .READB 001650RG
D$$H11= 000010 IO.DET= ****** GX Q.IOEF= 000006 .CDOBC= 000042R 004 .READR 001466RG
D.CLOG= ****** GX IO.ENA= ****** GX Q.IOFN= 000002 .CDOBP= 000040R 004 .READW 001572RG
ENTCRE 000152R 004 IO.EXT= ****** GX Q.IOLU= 000004 .CDOUT 000024R 004 .RECNT 003254RG 002
ENTDEL 000226R 004 IO.FNA= ****** GX Q.IOPL= 000014 .CLOSE 001352RG .RECPT 003256RG 002
ENTENA 000176R 004 IO.RNA= ****** GX Q.IOPR= 000007 .COMEF= ****** GX .RECRD 003260RG 002
ENTFEN 001152R IO.RVB= ****** GX Q.IOSB= 000010 .DELET 001336RG .REMOV 001002RG
EOFMSG 000127R 003 IO.WLB= ****** GX REAFRD 002032R .DTCTY 000046R 004 .SETFN 001430RG
ERR 000101R 003 IO.WVB= ****** GX R$$11D= 000001 .ENTER 001106RG .TYMSG 000002R 002
ERRCOD 000004RG 002 IS.SET= ****** GX TOTBLK 000014R 002 .EXTND 001236RG .WRITB 002276RG
ERRELF 000000R 003 LEN = 000015 TTYLUN= 000001 .FISTS 001050RG 002 .WRITE 002426RG
ERRITE 000016R 003 LENELF= 000016 TYPERR 000426R .FNDIR 000660RG .WRITR 002064RG
ERRPNR 000045R 003 LENITE= 000027 WRIFWT 002574R .INATT 002136RG 002 .WRITW 002222RG
ERRTAB 001016R 002 LENPNR= 000034 XFRBLK 000172R .INBBC 001100RG 002 .WRITZ 002326RG
EXTEXT 000276R 004 LOGLUN= 000003 XFRBUF 000016R 002 .INBUF 001104RG 002 ..STIN= ****** GX
EXTFEF 001270R
. ABS. 000000 000
002606 001
DATA 003400 002
MESSAG 000137 003
DPBS 000350 004
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 3284 WORDS ( 13 PAGES)
DYNAMIC MEMORY: 4622 WORDS ( 17 PAGES)
ELAPSED TIME: 00:00:43
[47,10]LOGXFR,[47,20]LOGXFR/-SP/CR=[20,30]RSXFC/PA:1,[47,30]LOGXFR,[51,30]FILIO,[47,30]ES
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
A.LULU = 000002 #7-308 #10-189 10-191
A.LUNA = 000004 #7-308 #10-189
A.LUNU = 000006 #7-308 #10-189
BC.HDS = ****** GX 5-184 6-274
BIT15 = 100000 #3-83 5-184 6-274 12-305 13-355 14-415
BLKNUM 000012 R *5-192 5-193 #5-218
CLOATR = 000340 R *15-445 *15-449 #15-472
CLOATT = 000344 R *15-451 #15-479
CLODAC 000322 R 15-452 #15-467 15-470 15-471 15-472
CLOFCF 001416 R 15-453 15-455 #15-461
CLOIOF = 000324 R *15-444 *15-448 #15-470
CLOLUN = 000326 R *15-450 #15-471
CLOWAT 000342 R 15-449 #15-474 15-479
CR 000125 R 6-266 #6-299 6-300
CRLEN = 000002 6-267 #6-300
DV.EOF = ****** GX 6-278
DV.LOG = ****** GX 5-191 6-278
D.CLOG = ****** GX 5-186 6-277
ENTCRE 000152 R 12-287 #12-304
ENTDEL 000226 R 12-296 #12-310
ENTENA 000176 R 12-291 #12-307
ENTFEN 001152 R 12-288 12-290 #12-298
EOFMSG 000127 R 17-564 #17-573
ERR 000101 R 6-293 #6-293 6-293
ERRCOD 000004 RG *4-140 #4-151 *5-197 *5-205 6-247 6-258 *10-181 *10-183 *11-251
*12-299 *13-349 *14-409 *15-462 *20-691 *25-900
ERRELF 000000 R 6-290 #6-290 6-290
ERRITE 000016 R 6-291 #6-291 6-291
ERRPNR 000045 R 6-292 #6-292 6-292
ERRTAB 001016 R 6-255 #6-289
EXTEXT 000276 R 14-392 #14-414
EXTFEF 001270 R 14-393 14-395 #14-400
E.FFIL = 000006 #3-81 10-194 11-257 12-305 12-308 12-311 13-355 14-415 15-468
20-676 25-885
FNDALN 000062 R 10-167 #10-188 10-191
FNDALU = 000064 R *10-166 #10-191
FNDCAL 000756 R 10-168 #10-180
FNDDNF 000770 R 10-172 10-174 #10-182
FNDFNA 000072 R 10-171 #10-193 10-196 10-197
FNDFNB = 000120 R *10-170 #10-197
FNDLUN = 000076 R *10-169 #10-196
FTKLI = ****** 9-44 9-55 14-405 17-520
HEADER 000006 R 5-188 #5-217 6-275
IE.EOF = ****** GX 25-894
IE.NSF = ****** GX 11-243
INDLUN = 000002 #3-78 4-123 6-282 17-562 20-676 20-688
IO.ACR = ****** GX 4-124
IO.ATT = ****** GX 7-312
IO.CRE = ****** GX 12-305
IO.DAC = ****** GX 15-448
IO.DEL = ****** GX 12-311 15-444
IO.DET = ****** GX 7-323
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
IO.ENA = ****** GX 12-308
IO.EXT = ****** GX 14-415
IO.FNA = ****** GX 10-194 11-233
IO.RNA = ****** GX 11-230
IO.RVB = ****** GX 20-676
IO.WLB = ****** GX 7-316
IO.WVB = ****** GX 25-885
IS.SET = ****** GX 5-200
LEN = 000015 6-293 #6-293
LENELF = 000016 6-290 #6-290
LENITE = 000027 6-291 #6-291
LENPNR = 000034 6-292 #6-292
LOGLUN = 000003 #3-79 12-305 12-308 12-311 14-404 14-415 25-885
LOGXFR 000000 RG #4-115 28-1
LOKFLF 001074 R 11-239 11-244 #11-250
LOKFNA 000122 R 11-238 #11-256 11-259 11-260 11-261
LOKFNB = 000150 R *11-237 #11-261
LOKIOF = 000124 R *11-230 *11-233 #11-259
LOKLUN = 000126 R *11-236 #11-260
OPEACC 000242 R 13-344 #13-354 13-357 13-358 13-359
OPEATT = 000272 R *13-342 *13-343 #13-366
OPEFID = 000256 R *13-341 #13-359
OPEFOF 001224 R 13-345 #13-348
OPEFUN = 000244 R *13-339 #13-357
OPELUN = 000246 R *13-340 #13-358
OPERAT 000270 R 13-355 #13-361 13-366
PRE 000116 R 6-251 #6-297 6-298
PRELEN = 000007 6-252 #6-298
Q.IOAE = 000012 #7-312 #7-316 #7-323 #10-194 #11-257 #12-305 #12-308 #12-311 #13-355
#14-415 #15-468
Q.IOEF = 000006 #7-312 #7-316 #7-323 #10-194 #11-257 #12-305 #12-308 #12-311 #13-355
#14-415 #15-468
Q.IOFN = 000002 #7-312 #7-316 #7-323 #10-194 #11-257 11-259 #12-305 #12-308 #12-311
#13-355 13-357 #14-415 #15-468 15-470
Q.IOLU = 000004 #7-312 #7-316 #7-323 #10-194 10-196 #11-257 11-260 #12-305 #12-308
#12-311 #13-355 13-358 #14-415 #15-468 15-471
Q.IOPL = 000014 #7-312 #7-316 7-318 7-319 #7-323 #10-194 10-197 #11-257 11-261
#12-305 #12-308 #12-311 #13-355 13-359 #14-415 #15-468 15-472
Q.IOPR = 000007 #7-312 #7-316 #7-323 #10-194 #11-257 #12-305 #12-308 #12-311 #13-355
#14-415 #15-468
Q.IOSB = 000010 #7-312 #7-316 #7-323 #10-194 #11-257 #12-305 #12-308 #12-311 #13-355
#14-415 #15-468
REAFRD 002032 R 20-677 20-679 #20-686
TOTBLK 000014 R *4-130 *4-131 *4-132 *4-133 5-194 #5-219
TTYLUN = 000001 #3-77 7-308 7-312 7-316 7-323
TYPERR 000426 R 4-128 4-135 4-141 4-145 5-198 5-206 #6-246 6-284
WRIFWT 002574 R 25-886 25-895 #25-899
XFRBLK 000172 R 4-146 #5-178
XFRBUF 000016 R 5-181 #5-220
$DSW = ****** GX 5-200
$TOP20 = 000001 5-209
$$$ARG = 000005 #5-210 5-210 5-210 5-210 5-210 5-210 5-210 5-210 5-210
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
5-210 5-210 #7-308 7-308 #7-308 7-308 #7-308 7-308 #7-312
7-312 #7-316 7-316 #7-316 7-316 #7-316 7-316 #7-316 7-316
#7-323 7-323 #10-189 10-189 #10-189 10-189 #10-189 10-189 #10-194
10-194 #10-194 10-194 #10-194 10-194 #10-194 10-194 #10-194 10-194
#10-194 10-194 #10-194 10-194 #11-257 11-257 #11-257 11-257 #11-257
11-257 #11-257 11-257 #11-257 11-257 #11-257 11-257 #11-257 11-257
#12-305 12-305 #12-305 12-305 #12-305 12-305 #12-305 12-305 #12-305
12-305 #12-308 12-308 #12-308 12-308 #12-308 12-308 #12-308 12-308
#12-308 12-308 #12-308 12-308 #12-308 12-308 #12-311 12-311 #13-355
13-355 #13-355 13-355 #13-355 13-355 #13-355 13-355 #13-355 13-355
#13-355 13-355 #14-415 14-415 #14-415 14-415 #14-415 14-415 #14-415
14-415 #14-415 14-415 #15-468 15-468 #15-468 15-468 #15-468 15-468
#20-676 20-676 20-676 20-676 20-676 20-676 20-676 20-676 20-676
20-676 20-676 20-676 #25-885 25-885 25-885 25-885 25-885 25-885
25-885 25-885 25-885 25-885 25-885 25-885
$$$GLB = ****** 7-308 7-308 7-308 7-308 7-312 7-312 7-312 7-312 7-312
7-312 7-312 7-312 7-316 7-316 7-316 7-316 7-316 7-316
7-316 7-316 7-323 7-323 7-323 7-323 7-323 7-323 7-323
7-323 10-189 10-189 10-189 10-189 10-194 10-194 10-194 10-194
10-194 10-194 10-194 10-194 11-257 11-257 11-257 11-257 11-257
11-257 11-257 11-257 12-305 12-305 12-305 12-305 12-305 12-305
12-305 12-305 12-308 12-308 12-308 12-308 12-308 12-308 12-308
12-308 12-311 12-311 12-311 12-311 12-311 12-311 12-311 12-311
13-355 13-355 13-355 13-355 13-355 13-355 13-355 13-355 14-415
14-415 14-415 14-415 14-415 14-415 14-415 14-415 15-468 15-468
15-468 15-468 15-468 15-468 15-468 15-468
$$$OST = 000014 #7-308 7-308 7-308 #7-308 7-308 7-308 #7-308 7-308 7-308
#7-308 #7-312 7-312 7-312 #7-312 7-312 7-312 #7-312 7-312
7-312 #7-312 7-312 7-312 #7-312 7-312 7-312 #7-312 7-312
7-312 #7-312 7-312 #7-316 7-316 7-316 #7-316 7-316 7-316
#7-316 7-316 7-316 #7-316 7-316 7-316 #7-316 7-316 7-316
#7-316 7-316 7-316 #7-316 7-316 #7-323 7-323 7-323 #7-323
7-323 7-323 #7-323 7-323 7-323 #7-323 7-323 7-323 #7-323
7-323 7-323 #7-323 7-323 7-323 #7-323 7-323 #10-189 10-189
10-189 #10-189 10-189 10-189 #10-189 10-189 10-189 #10-189 #10-194
10-194 10-194 #10-194 10-194 10-194 #10-194 10-194 10-194 #10-194
10-194 10-194 #10-194 10-194 10-194 #10-194 10-194 10-194 #10-194
10-194 #11-257 11-257 11-257 #11-257 11-257 11-257 #11-257 11-257
11-257 #11-257 11-257 11-257 #11-257 11-257 11-257 #11-257 11-257
11-257 #11-257 11-257 #12-305 12-305 12-305 #12-305 12-305 12-305
#12-305 12-305 12-305 #12-305 12-305 12-305 #12-305 12-305 12-305
#12-305 12-305 12-305 #12-305 12-305 #12-308 12-308 12-308 #12-308
12-308 12-308 #12-308 12-308 12-308 #12-308 12-308 12-308 #12-308
12-308 12-308 #12-308 12-308 12-308 #12-308 12-308 #12-311 12-311
12-311 #12-311 12-311 12-311 #12-311 12-311 12-311 #12-311 12-311
12-311 #12-311 12-311 12-311 #12-311 12-311 12-311 #12-311 12-311
#13-355 13-355 13-355 #13-355 13-355 13-355 #13-355 13-355 13-355
#13-355 13-355 13-355 #13-355 13-355 13-355 #13-355 13-355 13-355
#13-355 13-355 #14-415 14-415 14-415 #14-415 14-415 14-415 #14-415
14-415 14-415 #14-415 14-415 14-415 #14-415 14-415 14-415 #14-415
14-415 14-415 #14-415 14-415 #15-468 15-468 15-468 #15-468 15-468
15-468 #15-468 15-468 15-468 #15-468 15-468 15-468 #15-468 15-468
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
15-468 #15-468 15-468 15-468 #15-468 15-468
$$$T1 = 000013 #7-308 7-308 7-308 #7-308 7-308 7-308 #7-308 7-308 7-308
#10-189 10-189 10-189 #10-189 10-189 10-189 #10-189 10-189 10-189
#20-676 20-676 #25-885 25-885
.ASCTY 000000 R 4-116 #7-306
.ATCTY 000010 R 6-249 #7-310
.BUFSZ = 001000 G #9-53 9-72 9-109 20-676 25-885 25-892
.CDOBC = 000042 R *6-252 *6-263 *6-267 #7-319
.CDOBP = 000040 R *6-251 *6-262 *6-266 #7-318
.CDOUT 000024 R 6-253 6-264 6-268 #7-314 7-318 7-319
.CLOSE 001352 RG 6-283 14-408 #15-447 17-563 20-690
.COMEF = ****** GX 5-203
.DELET 001336 RG 4-134 #15-443
.DTCTY 000046 R 6-270 #7-321
.ENTER 001106 RG #12-286
.EXTND 001236 RG #14-391 25-896
.FISTS 001050 RG #9-50 10-173 10-194 11-240 11-243 11-257 12-289 12-293 12-305
12-308 13-355 14-394 14-415 15-454 15-468 20-676 20-678 20-681
25-885 25-887 25-894
.FNDIR 000660 RG #10-163 11-234
.INATT 002136 RG 4-130 4-136 4-138 6-281 #9-84 20-674 20-687
.INBBC 001100 RG #9-67 *18-605 18-606 *18-612 19-639 *19-645 *20-681
.INBUF 001104 RG 5-180 #9-71 20-676 20-680
.INDFG 001046 RG *4-129 6-271 *6-273 #9-46 *17-560 *20-689
.INFN 001054 RG *4-118 *4-119 *4-120 4-121 #9-57
.INFNB 002104 RG 4-122 #9-74 17-561
.INPOS 001102 RG #9-69 18-602 *18-604 18-610 *18-611 19-643 *19-644 *20-680
.INVBN 001074 RG *4-142 *4-143 #9-65 *20-672 *20-673 20-674 20-676 20-676
.LOKUP 001012 RG #11-232
.OPEN 001164 RG 4-127 #13-338
.OTATT 003236 RG #9-121 *14-396 *14-397 *14-401 *14-402 14-403 21-734 *21-736 *24-842
*24-843 *25-889 *25-890
.OTBBC 002200 RG #9-104 *22-779 22-780 *22-785 23-811 *23-816 24-844 24-846 24-852
*25-892
.OTBUF 002204 RG #9-108 14-402 24-843 25-885 25-891
.OTFN 002154 RG #9-94
.OTFNB 003204 RG #9-111 12-305 12-308
.OTPOS 002202 RG #9-106 14-401 22-776 *22-778 22-783 *22-784 23-814 *23-815 24-842
24-847 *25-891
.OTVBN 002174 RG #9-102 *25-883 *25-884 25-885 25-885 25-889 25-890
.OUTLG 000000 R #3-87 *14-406
.READ 001702 RG 4-144 18-608 19-641 #20-671
.READB 001650 RG 17-554 #19-638
.READR 001466 RG #17-546
.READW 001572 RG 17-548 #18-601
.RECNT 003254 RG #9-129 *21-727 21-733 *21-746
.RECPT 003256 RG #9-131 21-725 *21-726 *21-745
.RECRD 003260 RG 9-132 #9-133 21-732 21-745
.REMOV 001002 RG 4-125 #11-229
.SETFN 001430 RG 11-235 #16-505
.TYMSG 000002 R #3-88 17-565
.WRITB 002276 RG 21-742 #23-810 24-855
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.WRITE 002426 RG 22-782 23-813 24-857 #25-882
.WRITR 002064 RG #21-719
.WRITW 002222 RG 21-738 #22-775 24-851
.WRITZ 002326 RG #24-841
..STIN = ****** GX 5-195 6-280
LOGXFR CREATED BY MACRO ON 11-NOV-81 AT 10:30 PAGE 6
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$ #2-40 #7-308 #8-38 #10-189
CLEF$S #2-40 #5-187 #5-199
DIR$ #2-40 #4-116 #5-187 #5-187 #5-199 #5-199 #5-202 #5-202 #5-210 #5-210
#5-211 #5-211 #6-249 #6-253 #6-264 #6-268 #6-270 #6-285 #6-285 #8-38
#10-167 #10-171 #11-238 #12-287 #12-291 #12-296 #13-344 #14-392 #15-452 #20-676
#20-676 #25-885 #25-885
ERRENT #3-50 6-290 6-291 6-292 6-293
ERROR$ #3-44 10-181 10-183 11-251 12-299 13-349 14-409 15-462 20-691 25-900
ERR$ #4-116 #5-187 #5-199 #5-202 #5-210 #5-211 #6-249 #6-253 #6-264 #6-268
#6-270 #6-285 #10-167 #10-171 #11-238 #12-287 #12-291 #12-296 #13-344 #14-392
#15-452 #20-676 #25-885
EXIT$S #2-40 6-285
MOV$ #5-187 5-187 #5-199 5-199 #5-210 5-210 5-210 5-210 5-210 #5-211
5-211 #20-676 #20-676 20-676 20-676 20-676 20-676 20-676 20-676 20-676
20-676 20-676 #25-885 #25-885 25-885 25-885 25-885 25-885 25-885 25-885
25-885 25-885 25-885
MRKT$S #2-40 5-210
MVB$ #20-676 #20-676 #25-885 #25-885
NBL$ #7-308 7-308 #10-189 10-189
OFF$ #7-308 7-308 7-308 7-308 7-308 #7-312 7-312 7-312 7-312 7-312
7-312 7-312 7-312 7-312 #7-316 7-316 7-316 7-316 7-316 7-316
7-316 7-316 7-316 #7-323 7-323 7-323 7-323 7-323 7-323 7-323
7-323 7-323 #10-189 10-189 10-189 10-189 10-189 #10-194 10-194 10-194
10-194 10-194 10-194 10-194 10-194 10-194 #11-257 11-257 11-257 11-257
11-257 11-257 11-257 11-257 11-257 #12-305 12-305 12-305 12-305 12-305
12-305 12-305 12-305 12-305 #12-308 12-308 12-308 12-308 12-308 12-308
12-308 12-308 12-308 #12-311 12-311 12-311 12-311 12-311 12-311 12-311
12-311 12-311 #13-355 13-355 13-355 13-355 13-355 13-355 13-355 13-355
13-355 #14-415 14-415 14-415 14-415 14-415 14-415 14-415 14-415 14-415
#15-468 15-468 15-468 15-468 15-468 15-468 15-468 15-468 15-468
POP #3-71 #16-517 #17-558 #21-729 #21-744
PUSH #3-65 #16-506 #17-547 #21-720 #21-731
QDPB$ #7-312 #7-312 #7-316 #7-316 #7-323 #7-323 #10-194 #10-194 #11-257 #11-257
#12-305 #12-305 #12-308 #12-308 #12-311 #12-311 #13-355 #13-355 #14-415 #14-415
#15-468 #15-468
QDPB$S #20-676 20-676 #25-885 25-885
QIOW$ #2-40 7-312 7-316 7-323 #8-38 10-194 11-257 12-305 12-308 12-311
13-355 14-415 15-468
QIOW$S #8-38 20-676 25-885
RVP$ #5-210 5-210 #20-676 20-676 #25-885 25-885
WSIG$S #2-40 #5-202
WTSE$S #2-40 #5-211