Trailing-Edge
-
PDP-10 Archives
-
bb-x141b-bb
-
copy.lst
There are 2 other files named copy.lst in the archive. Click here to see a list.
.MAIN. MACRO M1113 27-FEB-85 12:21
TABLE OF CONTENTS
19- 1 TITLE PAGE
20- 44 MACROS AND PARAMETERS
21- 91 COPY TASK IMPURE DATA AREA
22- 144 INITIALIZATION
23- 203 PARSE COMMAND LINE
24- 310 CHECK OUT OUR DEVICES
25- 329 DISPATCH TO ACTION ROUTINES
26- 358 COPY, VERIFY, COPY & VERIFY (/CP, /VF, /CP/VF)
27- 448 SPECIFICATION ERRORS
28- 462 READ, ZERO (/RD, /ZE)
29- 504 ^C CHECK AND DONE
30- 529 I/O ROUTINES
31- 644 COMMAND PARSER ROUTINES
32- 728 TYPEOUT ROUTINES
33- 913 END STATEMENT
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 17
DTE20 HARDWARE BITS
701 .LIST MEB
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 19
TITLE PAGE
1 .SBTTL TITLE PAGE
2 .TITLE COPY -- MCR FUNCTION 'COP' FOR RSX-20F
3 .IDENT "V003B"
4 ;
5 ;
6 ;
7 ;
8 ; COPYRIGHT (C) 1975, 1978, 1985 BY
9 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
10 ; ALL RIGHTS RESERVED.
11 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
12 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
13 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
14 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
15 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
16 ;
17 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
18 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
19 ; CORPORATION.
20 ;
21 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
22 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
23 ;
24 ;
25 ;
26 ;
27 ;
28 ;
29 ; MODULE: MCR FUNCTION -- COP
30 ;
31 ; VERSION: V003B
32 ;
33 ; AUTHOR: TOM PORCHER
34 ;
35 ; DATE: 29-APR-76
36 ;
37 ;
38 ; THIS MODULE CONTAINS:
39 ;
40 ; -- COMMAND PARSER FOR COP
41 ;
42 ; TCO 4.1.1105 20-MAY-80 S. LEAPLINE CHANGE CONTROL-C RECOG.
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 20
MACROS AND PARAMETERS
44 .SBTTL MACROS AND PARAMETERS
45 ;
46 ; ASSEMBLY CONDITIONS
47 ;
48 .LIST MEB
49 .ENABLE AMA
50 ;
51 ; MISC. .MCALLS
52 ;
53 .MCALL ALUN$S,CLEF$S,EXIT$S,GPRT$S,QIOW$S,QIO$S,WTSE$S,CALL,RETURN,PUSH,POP
54 ;
55 ; MACROS
56 ;
57 .MACRO TYPE MSG,ARG
58 .PSECT TEXT
59 $$$=.
60 .ASCIZ "MSG"
61 .PSECT
62 PUSH #$$$
63 .IF NB <ARG>
64 CALL TYP'ARG
65 .IFF
66 CALL TYPMSG
67 .ENDC
68 .ENDM TYPE
69 ;
70 .MACRO ERROR MSG
71 TYPE <"<11>"MSG"<5>">
72 .ENDM ERROR
73 ;
74 .MACRO WARN MSG
75 TYPE <"<12>"MSG"<1>">
76 .ENDM WARN
77 ;
78 ;
79 ; PARAMETERS
80 ;
81 ;
82 ; LOGICAL UNIT AND EVENT FLAG ASSIGNMENTS
83 ;
84 000001 CTYLUN= 1 ;LUN FOR CTY
85 000001 E.FCTY= CTYLUN ;ALSO EFN FOR CTY
86 000002 SRCLUN= 2 ;LUN FOR INPUT
87 000002 E.FSRC= SRCLUN ;ALSO EFN FOR INPUT
88 000003 DSTLUN= 3 ;LUN FOR OUTPUT
89 000003 E.FDST= DSTLUN ;ALSO EFN FOR OUTPUT
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 21
COPY TASK IMPURE DATA AREA
91 .SBTTL COPY TASK IMPURE DATA AREA
92 ;
93 ; VARIBLES
94 ;
95 000000 SPSAVE: .BLKW 1 ;STACK POINTER SAVE
96 000002 RADIX: .BLKW 1 ;OUTPUT NUMBER RADIX
97 000004' CMDCLR=.
98 000004 QIOSTS: .BLKW 2 ;QIO STATUS BLOCK
99 ;
100 ; *** SRCXXX AND DSTXXX MUST REMAIN IN SAME ORDER
101 ;
102 000010 SRCBLK: .BLKW 2 ;INPUT BLOCK #
103 000014 SRCDEV: .BLKW 1 ;INPUT DEVICE IN ASCII
104 000016 SRCUNT: .BLKB 1 ;INPUT UNIT #
105 000017 SRCNBF: .BLKB 1 ;1-- DON'T BLOCK (DO QIO$)
106 ;0-- BLOCK (DO QIOW$)
107 ;-1-- WAIT FOR LAST NON-BLOCK REQUEST (DO WTSE$)
108 .EVEN
109 000020 DSTBLK: .BLKW 2 ;OUTPUT BLOCK #
110 000024 DSTDEV: .BLKW 1 ;OUTPUT DEVICE
111 000026 DSTUNT: .BLKB 1 ; . .
112 000027 DSTNBF: .BLKB 1 ;OUTPUT NO-BLOCK FLAG
113 ;
114 000030 EOVFLG: .BLKB 1 ;1-- END-OF-VOLUME REACHED ON A DEVICE
115 000031 CTZFLG: .BLKB 1 ;^Z SEEN ON INPUT-- EXIT WHEN DONE
116 000032 HEFLAG: .BLKB 1 ;1-- TYPE HELP MESSAGE
117 .EVEN
118 000034 CPVFLG:
119 000034 CPFLAG: .BLKB 1 ;1-- COPY FILES
120 000035 VFFLAG: .BLKB 1 ;1-- VERIFY
121 .EVEN
122 000036 RDZFLG:
123 000036 RDFLAG: .BLKB 1 ;1-- JUST READ
124 000037 ZEFLAG: .BLKB 1 ;1-- ZERO DESTINATION DEVICE
125 000034 CMDCLN=.-CMDCLR
126 ;
127 ; BUFFERS
128 ;
129 000040 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
130 000204 CTYBUF: .BLKB 80. ;BUFFER FOR INPUT FROM CTY
131 000120 CTYBFL= .-CTYBUF
132 000324 000 .BYTE 0 ;TO MAKE ASCIZ ALWAYS
133 .EVEN
134 ;
135 ; BUFFER POINTERS TO THE END OF OUR TASK PARTITION
136 ;
137 000326 BUFSIZ: .BLKW 1 ;BUFFER SIZE
138 000330 BUFSZ2: .BLKW 1 ;BUFFER SIZE/2
139 000332 BUFSZ4: .BLKW 1 ;BUFFER SIZE/4
140 000334 BUFBL4: .BLKW 1 ;BUFFER SIZE IN BLOCKS/4
141 000336 000000 000000 BUFEND: .LIMIT ;END OF BUFFER
142 000340' BUFADR=.-2 ;BUFFER ADDRESS (STORED BY TASK BUILDER)
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 22
INITIALIZATION
144 .SBTTL INITIALIZATION
145 ;
146 ; REQUEST FOR COPY BY MCR COP COMMAND CALLS COPY HERE
147 ;
148 000342 COPY:
149 000342 010637 000000' MOV SP,SPSAVE ;SAVE CURRENT STACK POINTER
150 ;
151 ; SETUP COMMAND DEFAULTS
152 ;
153 000346 012701 000004' MOV #CMDCLR,R1 ;GET START OF AREA TO CLEAR
154 000352 012705 000034 MOV #CMDCLN,R5 ;AND LENGTH OF AREA, IN BYTES
155 000356 10$:
156 000356 105021 CLRB (R1)+ ;CLEAR A BYTE
157 000360 077502 SOB R5,10$ ;CLEAR 'EM ALL
158 ;
159 ; GET BUFFER SIZE
160 ;
161 000362 012700 000326' MOV #BUFSIZ,R0 ;GET ADDRESS OF BUFFER SIZE AREA
162 000366 GPRT$S ,R0 ;GET OUR PARTITION PARAMETERS
000366 010046 MOV R0,-(SP)
000370 005046 CLR -(SP)
000372 005046 CLR -(SP)
000374 012746 MOV (PC)+,-(SP)
000376 101 004 .BYTE 65.,4
000400 104375 EMT 375
163 000402 103466 BCS EXITC ;BLEAH!!
164 000404 013720 000000G MOV @#$DSW,(R0)+ ;WE WANT VIRTUAL ADDRESS
165 000006 .REPT 6
166 ASL (R0) ;SHIFT TO BYTES FROM 1/64
167 .ENDR
000410 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
000412 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
000414 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
000416 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
000420 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
000422 006310 ASL (R0) ;SHIFT TO BYTES FROM 1/64
168 000424 061040 ADD (R0),-(R0) ;GET LAST ADDRESS IN PARITION
169 000426 163710 000340' SUB BUFADR,(R0) ;COMPUTE BUFFER SIZE
170 000432 042710 003777 BIC #<4*1000>-1,(R0) ;(BUFSIZ) ROUND DOWN TO 4 BLOCK BOUNDARY
171 000436 011001 MOV (R0),R1 ;COPY THAT
172 000440 012010 MOV (R0)+,(R0) ;(BUFSZ2) COPY SIZE
173 000442 000241 CLC ;CLEAR THE NEW BIT
174 000444 006010 ROR (R0) ;(BUFSZ2) MAKE THAT SIZE/2
175 000446 012010 MOV (R0)+,(R0) ;(BUFSZ4) COPY IT AGAIN
176 000450 006010 ROR (R0) ;(BUFSZ4) SIZE/4
177 000452 012010 MOV (R0)+,(R0) ;(BUFBL4) AND AGAIN
178 000454 000310 SWAB (R0) ;(BUFBL4) MAKE THAT # BLOCKS IN BUFFER/2
179 000456 006020 ROR (R0)+ ;(BUFBL4) BLOCKS/4
180 000460 010120 MOV R1,(R0)+ ;(BUFEND) GET SIZE AGAIN
181 000462 061040 ADD (R0),-(R0) ;(BUFEND) COMPUTE END OF BUFFER
182 ;
183 ; SETUP TO READ A LINE FROM THE CTY
184 ;
185 000464 ALUN$S #CTYLUN,#"TT,#0 ;ASSIGN CTY TO LUN 1
000464 005046 CLR -(SP)
000466 012746 052124 MOV #"TT,-(SP)
000472 012746 000001 MOV #CTYLUN,-(SP)
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 22-1
INITIALIZATION
000476 012746 MOV (PC)+,-(SP)
000500 007 004 .BYTE 7.,4
000502 104375 EMT 375
186 000504 103425 BCS EXITC ;GIVE UP IF NO CTY!!!!
187 000506 TYPE ^\COP>\ ;TYPE PROMPT MESSAGE
000000 103 117 120 .ASCIZ "COP>"
000003 076 000
000506 012746 000000' MOV #$$$,-(SP)
000512 004737 002754' JSR PC,TYPMSG
188 000516 QIOW$S #IO.RLB,#CTYLUN,#E.FCTY,,#QIOSTS,,<#CTYBUF,#CTYBFL>
000516 012746 000120 MOV #CTYBFL,-(SP)
000522 012746 000204' MOV #CTYBUF,-(SP)
000526 005046 CLR -(SP)
000530 012746 000004' MOV #QIOSTS,-(SP)
000534 005046 CLR -(SP)
000536 112716 000001 MOVB #E.FCTY,(SP)
000542 012746 000001 MOV #CTYLUN,-(SP)
000546 012746 000000G MOV #IO.RLB,-(SP)
000552 012746 MOV (PC)+,-(SP)
000554 003 010 .BYTE 3,$$$T1
000556 104375 EMT 375
189 000560 EXITC:
190 000560 103571 BCS EXITA ;GIVE UP IF FAILURE
191 000562 105737 000004' TSTB QIOSTS+0 ;ERROR STATUS
192 000566 003006 BGT 10$ ;NO-- GO ON
193 000570 123727 000004' 000000G CMPB QIOSTS+0,#IE.EOF ;^Z??
194 000576 001162 BNE EXITA ;NO-- GIVE UP NOW
195 000600 105237 000031' INCB CTZFLG ;YES-- SAY TO EXIT WHEN DONE
196 000604 10$:
197 000604 TYPE <"<1>"> ;INSURE A <CR><LF>
000005 001 000 .ASCIZ ""<1>""
000604 012746 000005' MOV #$$$,-(SP)
000610 004737 002754' JSR PC,TYPMSG
198 000614 013704 000006' MOV QIOSTS+2,R4 ;GET # CHARACTERS TYPED AT ME
199 000620 105064 000204' CLRB CTYBUF(R4) ;CLEAR LAST BYTE OF INPUT (MAKE ASCIZZZ)
200 000624 012704 000204' MOV #CTYBUF,R4 ;POINT TO START OF INPUT TO PARSE
201 ; BR PARSE ;PARSE THE LINE
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 23
PARSE COMMAND LINE
203 .SBTTL PARSE COMMAND LINE
204 ;
205 ; NOW TO PARSE THE LINE, BUFFER ADDRESS IN R4
206 ;
207 000630 PARSE:
208 000630 CALL GETNB ;GET NON-BLANK CHARACTER
000630 004737 002622' JSR PC,GETNB
209 000634 001002 BNE 10$ ;GOT SOMETHING-- GO ON
210 000636 000137 002152' JMP DONE ;NULL COMMAND-- JUST DONE
211 000642 10$:
212 000642 CALL GETNAM ;GET A DEVICE NAME
000642 004737 002644' JSR PC,GETNAM
213 000646 103552 BCS SYNERR ;NO SUCH LUCK
214 000650 010037 000024' MOV R0,DSTDEV ;COPY THE TYPED NAME
215 000654 001411 BEQ 20$ ;NOT SPEC-- SEE IF =
216 000656 CALL GETNUM ;GET UNIT NUMBER OF DEVICE (IF ANY)
000656 004737 002710' JSR PC,GETNUM
217 000662 103544 BCS SYNERR ;TOO BIG-- COMPLAIN
218 000664 110037 000026' MOVB R0,DSTUNT ;COPY THE UNIT NUMBER
219 000670 122724 000072 CMPB #':,(R4)+ ; : FOLLOWING DEVICE?
220 000674 001401 BEQ 20$ ;YES-- IGNORE IT
221 000676 105744 TSTB -(R4) ;NO-- GO BACK TO LOOK AT IT AGAIN
222 000700 20$:
223 000700 CALL GETNB ;GET NON-BLANK CHARACTER
000700 004737 002622' JSR PC,GETNB
224 000704 001540 BEQ CMDONE ;ALL DONE IF EOL
225 000706 122700 000075 CMPB #'=,R0 ;THIS = SPEC?
226 000712 001023 BNE 25$ ;NO-- TRY FOR SWITCHES
227 000714 105724 TSTB (R4)+ ;YES-- SKIP IT
228 000716 CALL GETNB ;GET NON-BLANK
000716 004737 002622' JSR PC,GETNB
229 000722 001531 BEQ CMDONE ;EOL-- ALL DONE
230 000724 CALL GETNAM ;GET A DEVICE NAME
000724 004737 002644' JSR PC,GETNAM
231 000730 103521 BCS SYNERR ;NO SUCH LUCK
232 000732 010037 000014' MOV R0,SRCDEV ;COPY THE TYPED NAME
233 000736 001411 BEQ 25$ ;NONE-- TRY FOR SWITCHES
234 000740 CALL GETNUM ;GET UNIT NUMBER OF DEVICE (IF ANY)
000740 004737 002710' JSR PC,GETNUM
235 000744 103513 BCS SYNERR ;TOO BIG-- COMPLAIN
236 000746 110037 000016' MOVB R0,SRCUNT ;COPY THE UNIT NUMBER
237 000752 122724 000072 CMPB #':,(R4)+ ; : FOLLOWING DEVICE?
238 000756 001401 BEQ 25$ ;YES-- IGNORE IT
239 000760 105744 TSTB -(R4) ;NO-- GO BACK TO LOOK AT IT AGAIN
240 ;
241 ; LOOK FOR ALL SWITCHES
242 ;
243 000762 25$:
244 000762 CALL GETNB ;SKIP BLANKS AFTER UNIT
000762 004737 002622' JSR PC,GETNB
245 000766 001507 BEQ CMDONE ;END OF COMMAND-- ALL OK
246 000770 122700 000057 CMPB #'/,R0 ;THIS A SWITCH?
247 000774 001077 BNE SYNERR ;NO-- BAD CHARACTER
248 000776 105724 TSTB (R4)+ ;YES-- SKIP OVER IT
249 001000 012702 000001 MOV #1,R2 ;ASSUME NOT /-(SW)
250 001004 122714 000055 CMPB #'-,(R4) ;THIS /-(SW)?
251 001010 001002 BNE 30$ ;NO-- GO ON
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 23-1
PARSE COMMAND LINE
252 001012 105724 TSTB (R4)+ ;YES-- SKIP OVER -
253 001014 005002 CLR R2 ;AND SET TO CLEAR THE FLAG
254 001016 30$:
255 001016 CALL GETNAM ;GET THE SWITCH
001016 004737 002644' JSR PC,GETNAM
256 001022 103464 BCS SYNERR ;TOO LONG-- GIVE UP
257 001024 022700 046102 CMP #"BL,R0 ;/BL:NNNN?
258 001030 001027 BNE 39$ ;NO-- GO ON
259 001032 122714 000072 CMPB #':,(R4) ;THIS /BL:?
260 001036 001056 BNE SYNERR ;NO DICE
261 001040 32$:
262 001040 105724 TSTB (R4)+ ;YES-- OK
263 001042 CALL GETNB ;GET THE BLANKS
001042 004737 002622' JSR PC,GETNB
264 001046 001452 BEQ SYNERR ;OOPS
265 001050 CALL GETNUM ;GET THE NUMBER
001050 004737 002710' JSR PC,GETNUM
266 001054 103447 BCS SYNERR ;OOPS
267 001056 122714 000054 CMPB #',,(R4) ;THIS N,NNN?
268 001062 001005 BNE 35$ ;NO-- GO ON
269 001064 110037 000010' MOVB R0,SRCBLK+0 ;YES-- SET SRC BLOCK (HIGH PART)
270 001070 110037 000020' MOVB R0,DSTBLK+0 ; AND DESTINATION
271 001074 000761 BR 32$ ;LOOP FOR LOW PART
272 ;
273 001076 35$:
274 001076 010037 000012' MOV R0,SRCBLK+2 ;SAVE LOW PART
275 001102 010037 000022' MOV R0,DSTBLK+2 ; . .
276 001106 000725 BR 25$ ;LOOP FOR MORE SWITCHES
277 ;
278 001110 39$:
279 001110 012701 001150' MOV #MODTBL,R1 ;GET ADDRESS OF SWITCH TABLE
280 001114 012705 000005 MOV #MODTLN,R5 ; AND LENGTH OF IT
281 001120 40$:
282 001120 020021 CMP R0,(R1)+ ;THIS SWITCH MATCH?
283 001122 001002 BNE 50$ ;NO-- LOOP FOR MORE
284 001124 110231 MOVB R2,@(R1)+ ;YES-- SET THE FLAG AS REQUESTED
285 001126 000715 BR 25$ ;LOOP FOR ALL SWITCHES
286 ;
287 001130 50$:
288 001130 005721 TST (R1)+ ;NO-- SKIP OVER FLAG ADDRESS
289 001132 077506 SOB R5,40$ ;NO-- LOOP FOR ALL SWITCHES
290 001134 ERROR <Illegal switch /"<2>">
000007 011 111 154 .ASCIZ ""<11>"Illegal switch /"<2>""<5>""
000012 154 145 147
000015 141 154 040
000020 163 167 151
000023 164 143 150
000026 040 057 002
000031 005 000
001134 012746 000007' MOV #$$$,-(SP)
001140 004737 002754' JSR PC,TYPMSG
291 001144 EXITA:
292 001144 000137 003406' JMP EXIT ;TOO FAR TO HOP
293 ;
294 ; SWITCH TABLE
295 ;
296 001150 MODTBL:
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 23-2
PARSE COMMAND LINE
297 .IRP ARG,<CP,HE,RD,VF,ZE>
298 .ASCII /ARG/
299 .EVEN
300 .WORD ARG'FLAG
301 .ENDM
001150 103 120 .ASCII /CP/
001152 000034' .WORD CPFLAG
001154 110 105 .ASCII /HE/
001156 000032' .WORD HEFLAG
001160 122 104 .ASCII /RD/
001162 000036' .WORD RDFLAG
001164 126 106 .ASCII /VF/
001166 000035' .WORD VFFLAG
001170 132 105 .ASCII /ZE/
001172 000037' .WORD ZEFLAG
302 000005 MODTLN=<.-MODTBL>/4
303 ;
304 ; COMMAND ERRORS
305 ;
306 001174 SYNERR:
307 001174 010400 MOV R4,R0 ;POINT INPUT STRING TO OUTPUT STRING
308 001176 ERROR <Syntax error: "<4>">
000033 011 123 171 .ASCIZ ""<11>"Syntax error: "<4>""<5>""
000036 156 164 141
000041 170 040 145
000044 162 162 157
000047 162 072 040
000052 004 005 000
001176 012746 000033' MOV #$$$,-(SP)
001202 004737 002754' JSR PC,TYPMSG
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 24
CHECK OUT OUR DEVICES
310 .SBTTL CHECK OUT OUR DEVICES
311 ;
312 ; THE COMMAND STRING IS NOW PARSED. CHECK OUT THE DEVICE HE SPECIFIED.
313 ;
314 001206 CMDONE:
315 001206 012705 000014' MOV #SRCDEV,R5 ;ALSO INPUT
316 001212 005725 TST (R5)+ ;SPECIFIED?
317 001214 001410 BEQ 10$ ;NO-- SKIP IT
318 001216 ALUN$S #SRCLUN,-(R5),(R5)
001216 011546 MOV (R5),-(SP)
001220 014546 MOV -(R5),-(SP)
001222 012746 000002 MOV #SRCLUN,-(SP)
001226 012746 MOV (PC)+,-(SP)
001230 007 004 .BYTE 7.,4
001232 104375 EMT 375
319 001234 103414 BCS DNSERR ;OOPS
320 001236 10$:
321 001236 012705 000024' MOV #DSTDEV,R5 ;POINT TO OUTPUT DEVICE
322 001242 005725 TST (R5)+ ;SPEC?
323 001244 001414 BEQ GOTDEV ;NO-- SKIP IT
324 001246 ALUN$S #DSTLUN,-(R5),(R5) ;ASSIGN IT
001246 011546 MOV (R5),-(SP)
001250 014546 MOV -(R5),-(SP)
001252 012746 000003 MOV #DSTLUN,-(SP)
001256 012746 MOV (PC)+,-(SP)
001260 007 004 .BYTE 7.,4
001262 104375 EMT 375
325 001264 103004 BCC GOTDEV ;GOT IT-- OK
326 001266 DNSERR:
327 001266 ERROR <Device "<3>" not in system>
000055 011 104 145 .ASCIZ ""<11>"Device "<3>" not in system"<5>""
000060 166 151 143
000063 145 040 003
000066 040 156 157
000071 164 040 151
000074 156 040 163
000077 171 163 164
000102 145 155 005
000105 000
001266 012746 000055' MOV #$$$,-(SP)
001272 004737 002754' JSR PC,TYPMSG
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 25
DISPATCH TO ACTION ROUTINES
329 .SBTTL DISPATCH TO ACTION ROUTINES
330 ;
331 ; HERE WHEN DEVICES FOUND TO EXIST
332 ;
333 001276 GOTDEV:
334 001276 CLEF$S #E.FCTC ;[4.1.1105]
001276 012746 000000G MOV #E.FCTC,-(SP)
001302 012746 MOV (PC)+,-(SP)
001304 037 002 .BYTE 31.,2
001306 104375 EMT 375
335 ;
336 001310 013702 000340' MOV BUFADR,R2
337 001314 013703 000326' MOV BUFSIZ,R3
338 ;
339 001320 105737 000032' TSTB HEFLAG ;/HE???
340 001324 001405 BEQ GOTDV1 ;NO-- GO ON
341 001326 TYPE ^\COP> dest-dev: = src-dev: /sw -- Switches: /BL:N,N /CP /HE /RD /VF /ZE"<1>"\
000106 103 117 120 .ASCIZ "COP> dest-dev: = src-dev: /sw -- Switches: /BL:N,N /CP /HE /RD /VF /ZE"<1>""
000111 076 040 144
000114 145 163 164
000117 055 144 145
000122 166 072 040
000125 075 040 163
000130 162 143 055
000133 144 145 166
000136 072 040 057
000141 163 167 040
000144 055 055 040
000147 123 167 151
000152 164 143 150
000155 145 163 072
000160 040 057 102
000163 114 072 116
000166 054 116 040
000171 057 103 120
000174 040 057 110
000177 105 040 057
000202 122 104 040
000205 057 126 106
000210 040 057 132
000213 105 001 000
001326 012746 000106' MOV #$$$,-(SP)
001332 004737 002754' JSR PC,TYPMSG
342 001336 000575 BR DONEA ;HELP IS ON THE WAY . . .
343 ;
344 001340 GOTDV1:
345 001340 005737 000034' TST CPVFLG ;/CP OR /VF SPECIFIED?
346 001344 001012 BNE COPVFY ;YES-- CHECK IT OUT
347 001346 005737 000036' TST RDZFLG ;/ZE OR /RD?
348 001352 001003 BNE 10$ ;YES-- DO THEM
349 001354 005737 000024' TST DSTDEV ;NO SWITCHES-- DESTINATION SPEC?
350 001360 001002 BNE 20$ ;YES-- MUST WANT COPY & VERIFY
351 001362 10$:
352 001362 000137 002004' JMP RDZERO ;GO READ OR ZERO
353 ;
354 001366 20$:
355 001366 005137 000034' COM CPVFLG ;OUTPUT SPEC-- ASSUME COPY & VERIFY
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 25-1
DISPATCH TO ACTION ROUTINES
356 ; BR COPVFY ;SO DO COPY
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 26
COPY, VERIFY, COPY & VERIFY (/CP, /VF, /CP/VF)
358 .SBTTL COPY, VERIFY, COPY & VERIFY (/CP, /VF, /CP/VF)
359 ;
360 ;
361 001372 COPVFY:
362 001372 005737 000036' TST RDZFLG ;/RD OR /ZE?
363 001376 001156 BNE CFMERR ;YES-- CONFLICTING SWITCHES
364 001400 005737 000014' TST SRCDEV ;INPUT NEEDED
365 001404 001563 BEQ NISERR ; . .
366 001406 005737 000024' TST DSTDEV ;MAKE SURE OUTPUT
367 001412 001554 BEQ NOSERR ;NO-- NEED OUTPUT
368 001414 105737 000034' TSTB CPFLAG ;/CP?
369 001420 001430 BEQ VERIFY ;NO-- JUST DO VERIFY
370 ;
371 001422 10$: CALL SRCRD
001422 004737 002174' JSR PC,SRCRD
372 001426 CALL DSTWT
001426 004737 002220' JSR PC,DSTWT
373 001432 105737 000030' TSTB EOVFLG
374 001436 001771 BEQ 10$
375 001440 105737 000035' TSTB VFFLAG ;/VF SPEC ALSO?
376 001444 001532 BEQ DONEA
377 001446 TYPE <COP -- Starting verify"<1>">
000216 103 117 120 .ASCIZ "COP -- Starting verify"<1>""
000221 040 055 055
000224 040 123 164
000227 141 162 164
000232 151 156 147
000235 040 166 145
000240 162 151 146
000243 171 001 000
001446 012746 000216' MOV #$$$,-(SP)
001452 004737 002754' JSR PC,TYPMSG
378 001456 005037 000010' CLR SRCBLK
379 001462 005037 000012' CLR SRCBLK+2
380 001466 005037 000020' CLR DSTBLK
381 001472 005037 000022' CLR DSTBLK+2
382 001476 105037 000030' CLRB EOVFLG
383 ; BR VERIFY ;DO THE VERIFY
384 ;
385 ; VERIFY (/VF)
386 ;
387 001502 VERIFY:
388 001502 013703 000332' MOV BUFSZ4,R3
389 ;
390 001506 VFY1: CALL SRCRD
001506 004737 002174' JSR PC,SRCRD
391 001512 PUSH R2 ;SAVE BUFFER ADDRESS
001512 010246 MOV R2,-(SP)
392 001514 060302 ADD R3,R2
393 001516 CALL DSTRD
001516 004737 002212' JSR PC,DSTRD
394 001522 060302 ADD R3,R2 ;BUMP TO NEXT BUFFER
395 001524 105737 000030' TSTB EOVFLG ;END-OF-VOLUME REACHED?
396 001530 001017 BNE 20$ ;YES-- DON'T READ NEXT BUFFER AHEAD
397 001532 020237 000336' CMP R2,BUFEND ;AT END?
398 001536 103402 BLO 10$ ;NO-- GO ON
399 001540 013702 000340' MOV BUFADR,R2 ;YES-- RECYCLE
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 26-1
COPY, VERIFY, COPY & VERIFY (/CP, /VF, /CP/VF)
400 001544 10$:
401 001544 105237 000017' INCB SRCNBF ;DON'T BLOCK
402 001550 CALL SRCRD ;START READ OF NEXT BLOCK
001550 004737 002174' JSR PC,SRCRD
403 001554 060302 ADD R3,R2 ;BUMP TO NEXT BUFFER (DEST)
404 001556 105237 000027' INCB DSTNBF ;DON'T BLOCK
405 001562 CALL DSTRD ;START READ OF NEXT BLOCK
001562 004737 002212' JSR PC,DSTRD
406 001566 160302 SUB R3,R2 ;BACK DO BUFFER START
407 001570 20$:
408 001570 POP R1 ;RESTORE CURRENT BUFFER ADDRESS
001570 012601 MOV (SP)+,R1
409 001572 PUSH R2 ;SAVE NEXT ONE
001572 010246 MOV R2,-(SP)
410 001574 010102 MOV R1,R2 ;COPY ADDRESS
411 001576 060302 ADD R3,R2 ;MAKE THAT DEST BUFFER ADDRESS
412 001600 010204 MOV R2,R4 ;COPY THAT FOR TERMINATION
413 001602 010100 MOV R1,R0 ;COPY INIT ADDRESS IN CASE OF ERROR
414 001604 VFY2:
415 001604 022122 CMP (R1)+,(R2)+ ;MATCH?
416 001606 001443 BEQ VFY3 ;YES-- OK
417 001610 005741 TST -(R1) ;NO-- VERIFY ERROR-- GET US BACK INTO THE BLOCK WITH THE ERROR
418 001612 160001 SUB R0,R1 ;COMPUTE BYTES INTO BUFFER
419 001614 010146 MOV R1,-(SP) ;COPY THAT COUNT
420 001616 062701 001000 ADD #1000,R1 ;ROUND UP
421 001622 042701 000777 BIC #1000-1,R1 ; TO NEXT BLOCK
422 001626 060001 ADD R0,R1 ;THEN TO BUFFER ADDRESS OF SAME
423 001630 010102 MOV R1,R2 ;COPY ADDRESS
424 001632 063702 000332' ADD BUFSZ4,R2 ;MAKE THAT INTO DESTINATION BUFFER
425 001636 105016 CLRB (SP) ;ZERO THE UNUSED BITS
426 001640 000316 SWAB (SP) ;MAKE THAT BYTES/400
427 001642 006216 ASR (SP) ; BYTES/1000 =BLOCKS
428 001644 063716 000012' ADD SRCBLK+2,(SP) ;COMPUTE BLOCK IN ERROR
429 001650 013746 000010' MOV SRCBLK+0,-(SP) ; . .
430 001654 005516 ADC (SP) ; YOU TOO
431 001656 163766 000334' 000002 SUB BUFBL4,2(SP) ;DOWN BY A BUFFER-SIZE OF BLOCKS
432 001664 005616 SBC (SP) ;YOU TOO
433 001666 010605 MOV SP,R5 ;THAT'S WHERE OUR BLOCK # IS
434 001670 062705 000004 ADD #SRCDEV-SRCBLK,R5 ;POINT TO RIGHT PLACE
435 001674 WARN <Verify error"<10>">
000246 012 126 145 .ASCIZ ""<12>"Verify error"<10>""<1>""
000251 162 151 146
000254 171 040 145
000257 162 162 157
000262 162 010 001
000265 000
001674 012746 000246' MOV #$$$,-(SP)
001700 004737 002754' JSR PC,TYPMSG
436 001704 162705 000004 SUB #SRCDEV-SRCBLK,R5 ;BACK AGAIN FOR CTCCHK
437 001710 CALL CTCCHK ;CHECK FOR ^C JUST IN CASE NOW
001710 004737 002112' JSR PC,CTCCHK
438 001714 022626 CMP (SP)+,(SP)+ ;PHEW!
439 001716 VFY3:
440 001716 020104 CMP R1,R4 ;DONE YET?
441 001720 103731 BLO VFY2 ;NO-- BACK FOR ANOTHER WORD
442 001722 POP R2 ;RESTORE NEXT BUFFER ADDRESS
001722 012602 MOV (SP)+,R2
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 26-2
COPY, VERIFY, COPY & VERIFY (/CP, /VF, /CP/VF)
443 001724 105737 000030' TSTB EOVFLG ;YES-- DONE WITH VOLUME YET?
444 001730 001666 BEQ VFY1 ;NO-- KEEP ON READING
445 001732 DONEA:
446 001732 000507 BR DONE ;YES-- ALL DONE WITH VERIFY
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 27
SPECIFICATION ERRORS
448 .SBTTL SPECIFICATION ERRORS
449 ;
450 ;
451 001734 CFMERR:
452 001734 ERROR <Conflicting switches>
000266 011 103 157 .ASCIZ ""<11>"Conflicting switches"<5>""
000271 156 146 154
000274 151 143 164
000277 151 156 147
000302 040 163 167
000305 151 164 143
000310 150 145 163
000313 005 000
001734 012746 000266' MOV #$$$,-(SP)
001740 004737 002754' JSR PC,TYPMSG
453 001744 NOSERR:
454 001744 ERROR <No destination device specified for /CP or /VF or /ZE>
000315 011 116 157 .ASCIZ ""<11>"No destination device specified for /CP or /VF or /ZE"<5>""
000320 040 144 145
000323 163 164 151
000326 156 141 164
000331 151 157 156
000334 040 144 145
000337 166 151 143
000342 145 040 163
000345 160 145 143
000350 151 146 151
000353 145 144 040
000356 146 157 162
000361 040 057 103
000364 120 040 157
000367 162 040 057
000372 126 106 040
000375 157 162 040
000400 057 132 105
000403 005 000
001744 012746 000315' MOV #$$$,-(SP)
001750 004737 002754' JSR PC,TYPMSG
455 001754 NISERR:
456 001754 ERROR <No source device specified for /CP or /VF or /RD>
000405 011 116 157 .ASCIZ ""<11>"No source device specified for /CP or /VF or /RD"<5>""
000410 040 163 157
000413 165 162 143
000416 145 040 144
000421 145 166 151
000424 143 145 040
000427 163 160 145
000432 143 151 146
000435 151 145 144
000440 040 146 157
000443 162 040 057
000446 103 120 040
000451 157 162 040
000454 057 126 106
000457 040 157 162
000462 040 057 122
000465 104 005 000
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 27-1
SPECIFICATION ERRORS
001754 012746 000405' MOV #$$$,-(SP)
001760 004737 002754' JSR PC,TYPMSG
457 001764 TMSERR:
458 001764 ERROR <Source device specified for /ZE>
000470 011 123 157 .ASCIZ ""<11>"Source device specified for /ZE"<5>""
000473 165 162 143
000476 145 040 144
000501 145 166 151
000504 143 145 040
000507 163 160 145
000512 143 151 146
000515 151 145 144
000520 040 146 157
000523 162 040 057
000526 132 105 005
000531 000
001764 012746 000470' MOV #$$$,-(SP)
001770 004737 002754' JSR PC,TYPMSG
459 001774 TMDERR:
460 001774 ERROR <Destination device specified for /RD>
000532 011 104 145 .ASCIZ ""<11>"Destination device specified for /RD"<5>""
000535 163 164 151
000540 156 141 164
000543 151 157 156
000546 040 144 145
000551 166 151 143
000554 145 040 163
000557 160 145 143
000562 151 146 151
000565 145 144 040
000570 146 157 162
000573 040 057 122
000576 104 005 000
001774 012746 000532' MOV #$$$,-(SP)
002000 004737 002754' JSR PC,TYPMSG
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 28
READ, ZERO (/RD, /ZE)
462 .SBTTL READ, ZERO (/RD, /ZE)
463 ;
464 ;
465 002004 RDZERO:
466 002004 105737 000037' TSTB ZEFLAG ;ZERO?
467 002010 001424 BEQ READ ;NO-- TRY FOR READ
468 ; BR ZERO ;YES-- ZERO
469 ;
470 ; ZERO (/ZE)
471 ;
472 002012 ZERO:
473 002012 105737 000036' TSTB RDFLAG ;/RD????
474 002016 001346 BNE CFMERR ;YES-- CONFLICT
475 002020 005737 000024' TST DSTDEV ;OUTPUT SPEC?
476 002024 001747 BEQ NOSERR ;NO-- WE NEED IT
477 002026 005737 000014' TST SRCDEV ;HOW 'BOUT INPUT?
478 002032 001354 BNE TMSERR ;THAT'S NOT NEEDED
479 ;
480 002034 010200 MOV R2,R0 ;COPY BUFFER ADDRESS
481 002036 013701 000330' MOV BUFSZ2,R1 ;GET BUFFER SIZE IN WORDS
482 002042 10$:
483 002042 005020 CLR (R0)+ ;ZERO A WORD
484 002044 077102 SOB R1,10$ ;LOOP FOR WHOLE BUFFER
485 002046 20$:
486 002046 CALL DSTWT ;WRITE A BUFFER OF ZEROS
002046 004737 002220' JSR PC,DSTWT
487 002052 105737 000030' TSTB EOVFLG ;DONE?
488 002056 001773 BEQ 20$ ;NO-- KEEP ON WRITING
489 002060 000434 BR DONE ;YES-- ALLL DONE
490 ;
491 ; READ (/RD)
492 ;
493 002062 READ:
494 002062 005737 000024' TST DSTDEV ;DSTDEV SPEC??
495 002066 001342 BNE TMDERR ;YES-- WE CAN'T USE IT
496 002070 005737 000014' TST SRCDEV ;INPUT SPEC?
497 002074 001727 BEQ NISERR ;NO-- REQUIRED FOR /RD
498 ;
499 002076 10$: CALL SRCRD
002076 004737 002174' JSR PC,SRCRD
500 002102 105737 000030' TSTB EOVFLG
501 002106 001773 BEQ 10$
502 002110 000420 BR DONE
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 29
^C CHECK AND DONE
504 .SBTTL ^C CHECK AND DONE
505 ;
506 ; CTCCHK -- CHECK FOR ^C TYPED
507 ;
508 002112 CTCCHK:
509 002112 CLEF$S #E.FCTC ;[4.1.1105]
002112 012746 000000G MOV #E.FCTC,-(SP)
002116 012746 MOV (PC)+,-(SP)
002120 037 002 .BYTE 31.,2
002122 104375 EMT 375
510 002124 023727 000000G 000000G CMP @#$DSW,#IS.SET
511 002132 001401 BEQ 10$ ;SET-- ABORT NOW
512 002134 RETURN ;NOT SET-- RETURN FROM CTCCHK
002134 000207 RTS PC
513 ;
514 002136 10$:
515 002136 062705 000004 ADD #SRCDEV-SRCBLK,R5
516 002142 WARN <Aborted by ^C"<10>">
000601 012 101 142 .ASCIZ ""<12>"Aborted by ^C"<10>""<1>""
000604 157 162 164
000607 145 144 040
000612 142 171 040
000615 136 103 010
000620 001 000
002142 012746 000601' MOV #$$$,-(SP)
002146 004737 002754' JSR PC,TYPMSG
517 ; BR DONE
518 ;
519 ; DONE -- HERE WHEN ALL DONE WITH COMMAND
520 ;
521 002152 DONE:
522 002152 013706 000000' MOV SPSAVE,SP
523 002156 105737 000031' TSTB CTZFLG ;^Z TYPED?
524 002162 001002 BNE 10$ ;YES-- GO AWAY
525 002164 000137 000342' JMP COPY
526 002170 10$:
527 002170 000137 003406' JMP EXIT
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 30
I/O ROUTINES
529 .SBTTL I/O ROUTINES
530 ;
531 ; SRCRD -- READ FROM SRCLUN
532 ;
533 002174 SRCRD:
534 002174 012704 000000G MOV #IO.RLB,R4
535 002200 012701 000002 MOV #SRCLUN,R1
536 002204 012705 000010' MOV #SRCBLK,R5
537 002210 000411 BR DEVOP
538 ;
539 ; DSTRD -- READ FROM DSTLUN
540 ;
541 002212 DSTRD:
542 002212 012704 000000G MOV #IO.RLB,R4
543 002216 000402 BR DSTOP
544 ;
545 ; DSTWT -- WRITE TO DSTLUN
546 ;
547 002220 DSTWT:
548 002220 012704 000000G MOV #IO.WLB,R4
549 002224 DSTOP:
550 002224 012701 000003 MOV #DSTLUN,R1
551 002230 012705 000020' MOV #DSTBLK,R5
552 ; BR DEVOP
553 ;
554 ; DEVOP -- PERFORM I/O ON A DEV
555 ; R1 -- LUN (ALSO EFN)
556 ; R2 -- ADDR OF BUFFER
557 ; R3 -- SIZE OF BUFFER
558 ; R4 -- I/O FUNCTION
559 ; R5 -- ADDR OF CURRENT BLOCK #
560 ;
561 ; RETURNS:
562 ; EOVFLG -- NON-ZERO IF EOV ENCOUNTERED (ON ANY OPERATION)
563 ;
564 002234 DEVOP:
565 002234 PUSH <R2,R3>
002234 010246 MOV R2,-(SP)
002236 010346 MOV R3,-(SP)
566 002240 010200 MOV R2,R0
567 002242 060300 ADD R3,R0
568 ;
569 002244 105765 000007 TSTB SRCNBF-SRCBLK(R5) ;NO BLOCK MODE?
570 002250 002007 BGE DEVOP1 ;NO, OR NOT TIME TO BLOCK-- GO ON
571 002252 105065 000007 CLRB SRCNBF-SRCBLK(R5) ;YES-- CLEAR FLAG
572 002256 WTSE$S R1 ; AND BLOCK NOW
002256 010146 MOV R1,-(SP)
002260 012746 MOV (PC)+,-(SP)
002262 051 002 .BYTE 41.,2
002264 104375 EMT 375
573 002266 000451 BR DEVOP2 ;ONWARD!
574 ;
575 002270 DEVOP1:
576 002270 CALL CTCCHK ;CHECK FOR ^C
002270 004737 002112' JSR PC,CTCCHK
577 ;
578 002274 105765 000007 TSTB SRCNBF-SRCBLK(R5) ;NO BLOCK?
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 30-1
I/O ROUTINES
579 002300 003424 BLE 10$ ;NO-- GO ON AND DO QIOW$
580 002302 105465 000007 NEGB SRCNBF-SRCBLK(R5) ;YES-- SET FLAG TO BLOCK NEXT CALL
581 002306 QIO$S R4,R1,R1,,#QIOSTS,,<R2,R3,,(R5),2(R5)>
002306 016546 000002 MOV 2(R5),-(SP)
002312 011546 MOV (R5),-(SP)
002314 005046 CLR -(SP)
002316 010346 MOV R3,-(SP)
002320 010246 MOV R2,-(SP)
002322 005046 CLR -(SP)
002324 012746 000004' MOV #QIOSTS,-(SP)
002330 005046 CLR -(SP)
002332 110116 MOVB R1,(SP)
002334 010146 MOV R1,-(SP)
002336 010446 MOV R4,-(SP)
002340 012746 MOV (PC)+,-(SP)
002342 001 013 .BYTE 1,$$$T1
002344 104375 EMT 375
582 002346 103500 BCS FTLERR ;OOPS!!!
583 002350 000474 BR DEVOP9 ;GO NOW, RETURN LATER TO COMPLETE WAIT
584 ;
585 002352 10$:
586 002352 QIOW$S R4,R1,R1,,#QIOSTS,,<R2,R3,,(R5),2(R5)>
002352 016546 000002 MOV 2(R5),-(SP)
002356 011546 MOV (R5),-(SP)
002360 005046 CLR -(SP)
002362 010346 MOV R3,-(SP)
002364 010246 MOV R2,-(SP)
002366 005046 CLR -(SP)
002370 012746 000004' MOV #QIOSTS,-(SP)
002374 005046 CLR -(SP)
002376 110116 MOVB R1,(SP)
002400 010146 MOV R1,-(SP)
002402 010446 MOV R4,-(SP)
002404 012746 MOV (PC)+,-(SP)
002406 003 013 .BYTE 3,$$$T1
002410 104375 EMT 375
587 002412 DEVOP2:
588 002412 103456 BCS FTLERR
589 002414 123727 000004' 000000G CMPB QIOSTS+0,#IE.BLK
590 002422 001411 BEQ 20$
591 ;
592 002424 020327 001000 CMP R3,#1000
593 002430 003416 BLE 40$
594 ;
595 002432 105737 000004' TSTB QIOSTS+0
596 002436 003005 BGT 30$
597 002440 012703 001000 MOV #1000,R3
598 002444 000711 BR DEVOP1
599 ;
600 002446 105237 000030' 20$: INCB EOVFLG
601 ;
602 002452 000303 30$: SWAB R3
603 002454 006203 ASR R3
604 002456 060365 000002 ADD R3,2(R5)
605 002462 105515 ADCB (R5)
606 002464 000426 BR DEVOP9
607 ;
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 30-2
I/O ROUTINES
608 002466 105737 000004' 40$: TSTB QIOSTS+0
609 002472 003014 BGT DEVOP8
610 ;
611 002474 123727 000004' 000000G 50$: CMPB QIOSTS+0,#IE.VER
612 002502 001022 BNE FTLERR
613 002504 PUSH R5
002504 010546 MOV R5,-(SP)
614 002506 062705 000004 ADD #SRCDEV-SRCBLK,R5
615 002512 WARN <I/O error on "<3><10>">
000622 012 111 057 .ASCIZ ""<12>"I/O error on "<3><10>""<1>""
000625 117 040 145
000630 162 162 157
000633 162 040 157
000636 156 040 003
000641 010 001 000
002512 012746 000622' MOV #$$$,-(SP)
002516 004737 002754' JSR PC,TYPMSG
616 002522 POP R5
002522 012605 MOV (SP)+,R5
617 ;
618 002524 060302 DEVOP8: ADD R3,R2
619 002526 062765 000001 000002 ADD #1,2(R5)
620 002534 105515 ADCB (R5)
621 002536 020200 CMP R2,R0
622 002540 103653 BLO DEVOP1
623 ;
624 002542 DEVOP9:
625 002542 POP <R3,R2>
002542 012603 MOV (SP)+,R3
002544 012602 MOV (SP)+,R2
626 002546 RETURN
002546 000207 RTS PC
627 ;
628 002550 FTLERR:
629 002550 013706 000000' MOV SPSAVE,SP
630 002554 113700 000004' MOVB QIOSTS+0,R0
631 002560 001404 BEQ 10$
632 002562 120027 000000G CMPB R0,#IE.WLK ;WRITE-LOCK?
633 002566 001411 BEQ WLKERR ;YES-- SAY THAT
634 002570 000402 BR 20$ ;NO-- GO ON
635 ;
636 002572 10$:
637 002572 013700 000000G MOV @#$DSW,R0
638 002576 20$:
639 002576 062705 000004 ADD #SRCDEV-SRCBLK,R5
640 002602 ERROR <Fatal I/O error "<7>" on "<3><10>">
000644 011 106 141 .ASCIZ ""<11>"Fatal I/O error "<7>" on "<3><10>""<5>""
000647 164 141 154
000652 040 111 057
000655 117 040 145
000660 162 162 157
000663 162 040 007
000666 040 157 156
000671 040 003 010
000674 005 000
002602 012746 000644' MOV #$$$,-(SP)
002606 004737 002754' JSR PC,TYPMSG
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 30-3
I/O ROUTINES
641 002612 WLKERR:
642 002612 ERROR <Device "<3>" is write-locked>
000676 011 104 145 .ASCIZ ""<11>"Device "<3>" is write-locked"<5>""
000701 166 151 143
000704 145 040 003
000707 040 151 163
000712 040 167 162
000715 151 164 145
000720 055 154 157
000723 143 153 145
000726 144 005 000
002612 012746 000676' MOV #$$$,-(SP)
002616 004737 002754' JSR PC,TYPMSG
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 31
COMMAND PARSER ROUTINES
644 .SBTTL COMMAND PARSER ROUTINES
645 ;
646 ; GENERAL NOTES:
647 ;
648 ; R4 IS ALWAYS USED AS A POINTER TO THE COMMAND STRING. ON CALL,
649 ; IT POINTS TO THE NEXT CHARACTER TO BE PROCESSED. ON RETURN, R4
650 ; ALWAYS POINTS TO THE CHARACTER AFTER THE LAST ONE PROCESSED, I.E.
651 ; THE NEXT ONE TO BE PROCESSED.
652 ;
653 ; NOTE THAT END-OF-LINE IS A ZERO BYTE
654 ;
655 ;
656 ; GETNB -- GET NEXT NON-BLANK CHARACTER
657 ;
658 ; RETURNS WITH R4 POINTING TO THE NEXT NON-BLANK CHARACTER
659 ; R0 -- NON-BLANK CHARACTER
660 ; CC-Z SET IF END-OF-LINE
661 ;
662 002622 GETNB:
663 002622 112400 MOVB (R4)+,R0 ;GET A CHARACTER
664 002624 122700 000040 CMPB #' ,R0 ;THIS BLANK?
665 002630 001774 BEQ GETNB ;YES-- LOOK SOME MORE
666 002632 122700 000011 CMPB #' ,R0 ;OR A TAB?
667 002636 001771 BEQ GETNB ;YES-- LOOK SOME MORE
668 002640 10$:
669 002640 105744 TSTB -(R4) ;NON-BLANK-- BACK OVER IT (MAY BE EOL)
670 002642 RETURN ; FROM GETNB
002642 000207 RTS PC
671 ;
672 ; GETNAM -- GET TWO-CHARACTER ALPHABETIC NAME
673 ;
674 ; RETURNS AFTER TWO CHARCTERS OR NON-ALPHABETIC
675 ; R0 -- (LOW) FIRST CHARACTER (HIGH) SECOND CHARACTER
676 ; CC-C SET IF MORE THAN TWO CHARACTERS
677 ;
678 002644 GETNAM:
679 002644 005000 CLR R0 ;CLEAR ANSWER
680 002646 10$:
681 002646 122714 000101 CMPB #'A,(R4) ;BELOW A?
682 002652 101015 BHI 50$ ;YES-- RETURN CC-C CLEAR
683 002654 121427 000132 CMPB (R4),#'Z ;OR ABOVE Z?
684 002660 101012 BHI 50$ ;YES-- RETURN CC-C CLEAR
685 002662 005700 TST R0 ;GOT A BYTE YET?
686 002664 001002 BNE 20$ ;YES-- STORE SECOND BYTE
687 002666 112400 MOVB (R4)+,R0 ;NO-- GET LOW BYTE
688 002670 000766 BR 10$ ;LOOP FOR NEXT CHARACTER
689 ;
690 002672 20$:
691 002672 000300 SWAB R0 ;GET HIGH BYTE
692 002674 001003 BNE 40$ ;ALREADY THERE-- ERROR
693 002676 152400 BISB (R4)+,R0 ;OK-- SET SECOND CHARACTER
694 002700 000300 SWAB R0 ;RESTORE R0 TO PROPER ORIENTATION
695 002702 000761 BR 10$ ;LOOP FOR ANOTHER (?)
696 ;
697 002704 40$:
698 002704 000261 SEC ;ERROR
699 002706 50$:
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 31-1
COMMAND PARSER ROUTINES
700 002706 RETURN ; FROM GETNAM
002706 000207 RTS PC
701 ;
702 ; GETNUM -- GET OCTAL NUMBER
703 ;
704 ; RETURNS WITH NON-DIGIT OR IF MORE THAN A WORD'S WORTH
705 ; R0 -- NUMBER
706 ; CC-C SET IF LARGER THAN ONE WORD
707 ;
708 002710 GETNUM:
709 002710 005000 CLR R0 ;CLEAR RESULT
710 002712 10$:
711 002712 112401 MOVB (R4)+,R1 ;GET A DIGIT
712 002714 162701 000060 SUB #'0,R1 ;TRIM DOWN TO DIGIT
713 002720 103413 BLO 40$ ;NOT A DIGIT-- GIVE UP
714 002722 022701 000007 CMP #7,R1 ;TOO HIGH?
715 002726 103410 BLO 40$ ;YES-- GIVE UP WITH CC-C CLEAR
716 000003 .REPT 3
717 ASL R0 ;SHIFT OLD NUMBER A BIT
718 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
719 .ENDR
002730 006300 ASL R0 ;SHIFT OLD NUMBER A BIT
002732 103407 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
002734 006300 ASL R0 ;SHIFT OLD NUMBER A BIT
002736 103405 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
002740 006300 ASL R0 ;SHIFT OLD NUMBER A BIT
002742 103403 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
720 002744 060100 ADD R1,R0 ;ACCUMULATE THIS DIGIT
721 002746 000761 BR 10$ ;FETCH ANOTHER DIGIT
722 ;
723 002750 40$:
724 002750 105744 TSTB -(R4) ;BACK OVER BAD CHARACTER
725 002752 50$:
726 002752 RETURN ;FROM GETNUM
002752 000207 RTS PC
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 32
TYPEOUT ROUTINES
728 .SBTTL TYPEOUT ROUTINES
729 ;
730 ; TYPMSG -- TYPE A RANDOM ASCIZ STRING
731 ;
732 ; CALL:
733 ; PUSH #<ADDRESS OF ASCIZ STRING>
734 ; CALL TYPMSG
735 ;
736 ; SPECIAL CHARACTER CODES IN TEXT:
737 ; 0 -- END OF TEXT
738 ; 1 -- TYPE <CR><LF>
739 ; 2 -- TYPE TWO CHARACTERS FROM R0 (SAVED ON STACK)
740 ; 3 -- TYPE DEVICE NAME AND UNIT FROM PUD ENTRY (R5)
741 ; 4 -- TYPE ASCIZ STRING BY R0
742 ; 5 -- TYPE <CR><LF> AND RETURN TO COPY
743 ; 6 -- OCTAL NUMBER IN R0 (SAVED ON STACK)
744 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
745 ; 10 -- BLOCK # AT SRCBLK-SRCDEV(R5)
746 ; 11 -- FATAL ERROR PREFIX
747 ; 12 -- WARNING ERROR PREFIX
748 ;
749 002754 TYPMSG:
750 002754 PUSH <R3,R2,R1,R0> ;COPY USED REGISTERS
002754 010346 MOV R3,-(SP)
002756 010246 MOV R2,-(SP)
002760 010146 MOV R1,-(SP)
002762 010046 MOV R0,-(SP)
751 002764 016600 000012 MOV 12(SP),R0 ;GET ADDRESS OF STRING
752 002770 012702 000040' MOV #TYPBUF,R2 ;POINT TO OUTPUT BUFFER
753 ;
754 ; ENTER HERE AT TYPMS1:
755 ; R0 -- POINTER TO STRING TO BE OUTPUT (AND FOLLOWING CODE)
756 ; R2 -- CURRENT POINTER TO OUTPUT BUFFER FOR LOADING CHARACTERS
757 ;
758 002774 TYPMS1:
759 002774 112012 MOVB (R0)+,(R2) ;GET A CHARACTER FROM STRING
760 002776 122227 000013 CMPB (R2)+,#TYPMAX ;SPECIAL CODE?
761 003002 103374 BHIS TYPMS1 ;NO-- JUST GET NEXT CHARACTER
762 003004 114203 MOVB -(R2),R3 ;YES-- GET THE CODE
763 003006 006303 ASL R3 ;MAKE IT WORDS
764 003010 011601 MOV (SP),R1 ;GET R0 FROM STACK BACK TO R1
765 003012 CALL @TYPTAB(R3) ;CALL ROUTINE TO PROCESS
003012 004773 003020' JSR PC,@TYPTAB(R3)
766 003016 000766 BR TYPMS1 ;BACK FOR MORE
767 ;
768 ; DISPATCH TABLE FOR SPECIAL CODES
769 ;
770 003020 TYPTAB:
771 003020 003046' 003140' 003144' .WORD TYPDON,TYPCR,TYPTXT,TYPDEV,TYPSTR,TYPCOP,TYPOCT,TYPDEC,TYPBLK,TYPERR,TYPWRN
003026 003156' 003214' 003132'
003034 003322' 003224' 003244'
003042 003202' 003210'
772 000013 TYPMAX=<.-TYPTAB>/2
773 ;
774 ; 0 -- END OF MESSAGE
775 ;
776 003046 TYPDON:
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 32-1
TYPEOUT ROUTINES
777 003046 005726 TST (SP)+ ;POP THE RETURN ADDRESS OFF TO NOWHERE
778 003050 162702 000040' SUB #TYPBUF,R2 ;END OF STRING-- FIND LENGTH
779 003054 QIOW$S #IO.WLB,#CTYLUN,#E.FCTY,,,,<#TYPBUF,R2,#0> ;TYPE STRING ON CTY
003054 005046 CLR -(SP)
003056 010246 MOV R2,-(SP)
003060 012746 000040' MOV #TYPBUF,-(SP)
003064 005046 CLR -(SP)
003066 005046 CLR -(SP)
003070 005046 CLR -(SP)
003072 112716 000001 MOVB #E.FCTY,(SP)
003076 012746 000001 MOV #CTYLUN,-(SP)
003102 012746 000000G MOV #IO.WLB,-(SP)
003106 012746 MOV (PC)+,-(SP)
003110 003 011 .BYTE 3,$$$T1
003112 104375 EMT 375
780 003114 103534 BCS EXIT ;GIVE UP IF FAILURE
781 003116 POP <R0,R1,R2,R3> ;RESTORE REGISTERS
003116 012600 MOV (SP)+,R0
003120 012601 MOV (SP)+,R1
003122 012602 MOV (SP)+,R2
003124 012603 MOV (SP)+,R3
782 003126 POP (SP) ;RESTORE PC OVER ADDRESS OF STRING
003126 012616 MOV (SP)+,(SP)
783 003130 RETURN ;FROM TYPMSG
003130 000207 RTS PC
784 ;
785 ; 5 -- TYPE <CR><LF> AND RETURN TO COPY
786 ;
787 003132 TYPCOP:
788 003132 012766 002152' 000012 MOV #DONE,12(SP) ;SET RETURN PC TO GO BACK TO COPY
789 ; BR TYPCR ;FINISH OFF WITH <CR><LF>
790 ;
791 ; 1 -- TYPE CRLF
792 ;
793 003140 TYPCR:
794 003140 012701 MOV (PC)+,R1 ;GET <CR> AND <LF>
795 003142 015 012 .BYTE 15,12 ; . .
796 ; BR TYPTXT ;TYPE WHAT'S IN R1
797 ;
798 ; 2 -- TYPE TEXT IN R0 (SAVED ON STACK)
799 ;
800 003144 TYPTXT:
801 003144 110122 MOVB R1,(R2)+ ;STORE LOW BYTE FIRST
802 003146 000301 SWAB R1 ;GET HIGH BYTE
803 003150 001401 BEQ 90$ ;NULL-- IGNORE IT
804 003152 110122 MOVB R1,(R2)+ ;STORE SECOND CHARACTER
805 003154 90$:
806 003154 RETURN ; FROM TYPTXT
003154 000207 RTS PC
807 ;
808 ; 3 -- DEVICE AND UNIT # FROM (R5)
809 ;
810 003156 TYPDEV:
811 003156 011501 MOV (R5),R1 ;GET THE NAME
812 003160 CALL TYPTXT ;TYPE THE NAME
003160 004737 003144' JSR PC,TYPTXT
813 003164 116501 000002 MOVB 2(R5),R1 ;GET THE UNIT
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 32-2
TYPEOUT ROUTINES
814 003170 CALL TYPOCT ;TYPE THE NUMBER
003170 004737 003322' JSR PC,TYPOCT
815 003174 112722 000072 MOVB #':,(R2)+ ;MAKE IT A DEVICE
816 003200 RETURN ;BACK FOR MORE
003200 000207 RTS PC
817 ;
818 ; 11 -- FATAL ERROR PREFIX
819 ;
820 003202 TYPERR:
821 003202 012701 000731' MOV #ERRMSG,R1 ;GET ERROR PREFIX
822 003206 000402 BR TYPSTR ;TYPE IT
823 000731 .PSECT TEXT
824 000731 103 117 120 ERRMSG: .ASCIZ \COP -- *Fatal* -- \
000734 040 055 055
000737 040 052 106
000742 141 164 141
000745 154 052 040
000750 055 055 040
000753 000
825 003210 .PSECT
826 ;
827 ; 12 -- WARNING ERROR PREFIX
828 ;
829 003210 TYPWRN:
830 003210 012701 000754' MOV #WRNMSG,R1 ;GET WARNING PREFIX
831 ; BR TYPMSG ;TYPE IT
832 ;
833 000754 .PSECT TEXT
834 000754 103 117 120 WRNMSG: .ASCIZ \COP -- *Diag* -- \
000757 040 055 055
000762 040 052 104
000765 151 141 147
000770 052 040 055
000773 055 040 000
835 003214 .PSECT
836 ;
837 ; 4 -- STRING FROM R1
838 ;
839 003214 TYPSTR:
840 003214 112122 MOVB (R1)+,(R2)+ ;MOVE A CHARACTER
841 003216 001376 BNE TYPSTR ;LOOP TILL END OF COMMAND
842 003220 105742 TSTB -(R2) ;BACK OVER NULL BYTE
843 003222 RETURN ;BACK FOR MORE
003222 000207 RTS PC
844 ;
845 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
846 ;
847 003224 TYPDEC:
848 003224 012737 000012 000002' MOV #10.,RADIX ;SET RADIX TO 10
849 003232 CALL TYPNUM ;TYEP THE NUMBER
003232 004737 003330' JSR PC,TYPNUM
850 003236 112722 000056 MOVB #'.,(R2)+ ;STORE A . TO INDICATE DECIMAL
851 003242 RETURN ;BACK FOR ANOTHER CHAR OF STRING
003242 000207 RTS PC
852 ;
853 ; 10 -- BLOCK # AT SRCBLK-SRCDEV(R5)
854 ;
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 32-3
TYPEOUT ROUTINES
855 003244 TYPBLK:
856 003244 012701 003306' MOV #BLKMSG,R1 ;GET START TEXT
857 003250 CALL TYPSTR ;PUT IT AWAY
003250 004737 003214' JSR PC,TYPSTR
858 003254 116501 177774 MOVB SRCBLK-SRCDEV(R5),R1 ;GET HIGH PART
859 003260 001404 BEQ 10$ ;ZERO-- SKIP IT
860 003262 CALL TYPOCT ;TYPE HIGH PART
003262 004737 003322' JSR PC,TYPOCT
861 003266 112722 000054 MOVB #',,(R2)+ ;SEPERATE IT
862 003272 10$:
863 003272 016501 177776 MOV SRCBLK-SRCDEV+2(R5),R1 ;GET LOW PART
864 003276 012737 000010 000002' MOV #8.,RADIX ;OCTAL
865 003304 000416 BR TYPNM1 ;TYPE UNSIGNED NUMBER AND RETURN
866 ;
867 003306 040 141 164 BLKMSG: .ASCIZ / at block /
003311 040 142 154
003314 157 143 153
003317 040 000
868 .EVEN
869 ;
870 ; 6 -- OCTAL # IN R0
871 ;
872 003322 TYPOCT:
873 003322 012737 000010 000002' MOV #8.,RADIX ;OCTAL
874 ; BR TYPNUM ;AWAY
875 ;
876 ; TYPNUM -- TYPE A NUMBER
877 ; R1 -- NUMBER TO BE TYPED
878 ; RADIX -- OUTPUT RADIX
879 ;
880 ; USES R1,R2,R3
881 ;
882 003330 TYPNUM:
883 003330 005701 TST R1 ;NEGATIVE #?
884 003332 002003 BGE TYPNM1 ;NO-- OK
885 003334 005401 NEG R1 ;YES-- MAKE IT POSITIVE
886 003336 112722 000055 MOVB #'-,(R2)+ ; AND STORE -VE IN STRING
887 003342 TYPNM1:
888 003342 005003 CLR R3 ;CLEAR REMAINDER
889 003344 15$:
890 003344 020137 000002' CMP R1,RADIX ;CAN WE DIVIDE?
891 003350 103404 BLO 20$ ;NO-- DIVIDE DONE
892 003352 163701 000002' SUB RADIX,R1 ;YES-- FORM REMAINDER
893 003356 005203 INC R3 ; AND QUOTIENT
894 003360 000771 BR 15$ ;LOOP TO DIVIDE R1 BY RADIX
895 ;
896 003362 20$:
897 003362 PUSH R1 ;COPY REMAINDER AS A DIGIT
003362 010146 MOV R1,-(SP)
898 003364 010301 MOV R3,R1 ;GO BACK AND DIVIDE AGAIN
899 003366 001402 BEQ 30$ ; UNLESS ALL DONE
900 003370 CALL TYPNM1 ;EXTRACT ANOTHER DIGIT ONTO STACK
003370 004737 003342' JSR PC,TYPNM1
901 003374 30$:
902 003374 POP R1 ;DONE-- GET A DIGIT FROM STACK
003374 012601 MOV (SP)+,R1
903 003376 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 32-4
TYPEOUT ROUTINES
904 003402 110122 MOVB R1,(R2)+ ;STORE IT IN OUTPUT STRING
905 003404 RETURN ;FOR ANOTHER DIGIT OR THE END
003404 000207 RTS PC
906 ;
907 ; EXIT HERE
908 ;
909 003406 EXIT:
910 003406 EXIT$S ;TASK EXIT
003406 012746 MOV (PC)+,-(SP)
003410 063 001 .BYTE 51.,1
003412 104375 EMT 375
911 003414 000774 BR EXIT ;JUST IN CASE . . . .
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 33
END STATEMENT
913 .SBTTL END STATEMENT
914 000342' .END COPY
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 33-1
SYMBOL TABLE
BLKMSG 003306R CLKVEC= 000100 DH..MM= 001000 DONE 002152R LP1DAT= 177522
BR0 = 000000 CLKWRD= 177546 DH..OP= 000040 DONEA 001732R LP1STS= 177520
BR1 = 000040 CMDCLN= 000034 DH..PE= 010000 DSTBLK 000020R L2.A16= 000020
BR2 = 000100 CMDCLR= 000004R DH..RI= 000200 DSTDEV 000024R L2.A17= 000040
BR3 = 000140 CMDONE 001206R DH..SI= 040000 DSTLUN= 000003 L2.BCM= 007777
BR4 = 000200 COPVFY 001372R DH..TI= 100000 DSTNBF 000027R L2.DB = 000377
BR5 = 000240 COPY 000342R DH.2SB= 000004 DSTOP 002224R L2.DEL= 002000
BR6 = 000300 CO.INE= 000100 DLDADR= 175610 DSTRD 002212R L2.DH = 002000
BR7 = 000340 CO..MM= 000004 DLDSIZ= 000010 DSTUNT 000026R L2.DL = 000010
BUFADR= 000340R CPFLAG 000034R DLRBUF= 000002 DSTWT 002220R L2.DNR= 000100
BUFBL4 000334R CPVFLG 000034R DLRSTS= 000000 EOVFLG 000030R L2.DON= 000200
BUFEND 000336R CTCCHK 002112R DLXBUF= 000006 ERRMSG 000731R 002 L2.DR = 010000
BUFSIZ 000326R CTICHR= 177562 DLXSTS= 000004 EXIT 003406R L2.DTE= 000002
BUFSZ2 000330R CTILVL= 000004 DL.BRK= 000001 EXITA 001144R L2.ENB= 000100
BUFSZ4 000332R CTISTS= 177560 DL.CAR= 010000 EXITC 000560R L2.ERE= 001000
B.DM11= 170500 CTIVEC= 000060 DL.CTS= 020000 E.FCTC= ****** GX L2.ERR= 100000
B0 = 000001 CTOCHR= 177566 DL.DIE= 000040 E.FCTY= 000001 L2.GER= 000001
B1 = 000002 CTOLVL= 000004 DL.DSC= 100000 E.FDST= 000003 L2.GO = 000001
B10 = 002000 CTOSTS= 177564 DL.DTR= 000002 E.FSRC= 000002 L2.INI= 000400
B11 = 004000 CTOVEC= 000064 DL.ERR= 100000 FTASRT= 000001 L2.INT= 004000
B12 = 010000 CTYBFL= 000120 DL.LVL= 000004 FTECHO= 000000 L2.LDP= 010000
B13 = 020000 CTYBUF 000204R DL.OVR= 040000 FTETR = 000000 L2.LPE= 000040
B14 = 040000 CTYLUN= 000001 DL.RGO= 004000 FTGLOM= 000000 L2.LVL= 000004
B15 = 100000 CTZFLG 000031R DL.RIE= 000100 FTLERR 002550R L2.MPE= 000020
B2 = 000004 DEVOP 002234R DL.RNG= 040000 FT.CHK= 000001 L2.MST= 000004
B3 = 000010 DEVOP1 002270R DL.ROK= 000200 FT.DDT= 000000 L2.ONL= 004000
B4 = 000020 DEVOP2 002412R DL.RTS= 000004 FT.D75= 000000 L2.OVF= 004000
B5 = 000040 DEVOP8 002524R DL.XIE= 000100 FT.HLP= 000001 L2.PCM= 007777
B6 = 000100 DEVOP9 002542R DL.XOK= 000200 GETNAM 002644R L2.PEN= 000002
B7 = 000200 DGUTS = 000000 DL..FE= 020000 GETNB 002622R L2.PI = 000400
B8 = 000400 DHBASE= 160020 DL..MM= 000004 GETNUM 002710R L2.PNR= 020000
B9 = 001000 DHRFER= 020000 DL..PE= 010000 GOTDEV 001276R L2.POL= 000200
CD.CHK= 040000 DHROVR= 040000 DL..RC= 000377 GOTDV1 001340R L2.PZE= 040000
CD.DAT= 177162 DH.AEE= 100000 DL..RE= 000001 G.PRFW= 000004 L2.RDB= 007777
CD.DTE= 004000 DH.BAR= 000012 DL..XC= 000377 G.PRPB= 000000 L2.RPB= 010000
CD.DTL= 002000 DH.BCR= 000010 DL.2RC= 002000 G.PRPS= 000002 L2.RPE= 000010
CD.EOF= 020000 DH.BRK= 000014 DL.2XM= 000010 HEFLAG 000032R L2.SPR= 040000
CD.ERR= 100000 DH.CAR= 000006 DMBASE= 170500 IE.BLK= ****** GX L2.TB0= 000400
CD.GO = 000001 DH.CL5= 000000 DM.ALI= 000017 IE.EOF= ****** GX L2.TB1= 001000
CD.HEM= 000004 DH.CL6= 000001 DM.BSY= 000020 IE.VER= ****** GX L2.TB2= 002000
CD.INE= 000100 DH.CL7= 000002 DM.CAR= 000100 IE.WLK= ****** GX L2.TM = 000004
CD.LVL= 000006 DH.CL8= 000003 DM.CTS= 000040 IO.RLB= ****** GX L2.TRN= 001000
CD.NXM= 001000 DH.CNX= 000400 DM.DNE= 000200 IO.WLB= ****** GX L2.UCD= 020000
CD.OFL= 010000 DH.DOV= 040000 DM.DTR= 000002 IS.SET= ****** GX L2.VD = 100000
CD.ONL= 000010 DH.LPR= 000004 DM.ENB= 000040 KL.LVL= 000004 L2.VEC= 000754
CD.PAK= 000002 DH.LVL= 000005 DM.IEN= 000100 KPAR0 = 172340 L20ADR= 000004
CD.PWR= 000400 DH.NRC= 000002 DM.INI= 002000 KW.INE= 000100 L20BCT= 000006
CD.RDY= 000200 DH.NXM= 002000 DM.LE = 000001 KW.TIC= 000200 L20BUF= 000014
CD.STS= 177160 DH.PEN= 000020 DM.LVL= 000004 LP.DAT= 177516 L20CHK= 000017
CD.VEC= 000230 DH.RIE= 000100 DM.RNG= 000200 LP.DNE= 000200 L20COL= 000015
CD.XAD= 000060 DH.SIE= 010000 DM.RTS= 000004 LP.ERR= 100000 L20CRA= 000000
CD0DAT= 177162 DH.SSR= 000016 DM.SCN= 004000 LP.INE= 000100 L20CRB= 000002
CD0STS= 177160 DH.TIE= 020000 DM.SR = 000020 LP.LVL= 000004 L20PCT= 000010
CFMERR 001734R DH.VDP= 100000 DM.ST = 000010 LP.STS= 177514 L20PDA= 000016
CI.INE= 000100 DH..FE= 020000 DM.STP= 000400 LP.VEC= 000200 L20RAM= 000012
CLKENB= 000100 DH..HD= 040000 DM..MM= 001000 LP0DAT= 177516 L20STS= 175400
CLKLVL= 000006 DH..MC= 004000 DNSERR 001266R LP0STS= 177514 L21STS= 175420
COPY -- MCR FUNCTION 'COP' FOR MACRO M1113 27-FEB-85 12:21 PAGE 33-2
SYMBOL TABLE
MM.SR0= 177572 R$$20F= 000001 TC.MTE= 020000 TE.EDT= 000026 TS.XER= 020000
MODTBL 001150R SPSAVE 000000R TC.NXM= 000400 TE.LVL= 000006 TS.XNT= 100000
MODTLN= 000005 SRCBLK 000010R TC.PAR= 040000 TE.NNN= 000004 TS.XTS= 040000
MP.ENB= 000001 SRCDEV 000014R TC.RDA= 000006 TE.STW= 000034 TS.ZST= 040000
MP.ERR= 100000 SRCLUN= 000002 TC.RDY= 000200 TE.VEC= 000774 TYPBLK 003244R
MP.LVL= 000007 SRCNBF 000017R TC.REV= 004000 TE.XAD= 000020 TYPBUF 000040R
MP.REG= 172100 SRCRD 002174R TC.RMT= 000002 TE.XA1= 000010 TYPCOP 003132R
MP.VEC= 000114 SRCUNT 000016R TC.SAT= 000000 TE.XA2= 000012 TYPCR 003140R
MP.WWP= 000004 STKLEN= 000200 TC.SST= 000010 TE.XBC= 000014 TYPDEC 003224R
NISERR 001754R SYNERR 001174R TC.STS= 177340 TE.XDT= 000024 TYPDEV 003156R
NOSERR 001744R S..AMC= 000000 TC.UPS= 000200 TE.XW1= 000006 TYPDON 003046R
NXMVEC= 000004 S..BDT= 000011 TC.US0= 000000 TE.XW2= 000004 TYPERR 003202R
OB0 = 000001 S..CHK= 000012 TC.US1= 000400 TE.XW3= 000002 TYPMAX= 000013
OB1 = 000002 S..CNK= 000003 TC.US2= 001000 TMDERR 001774R TYPMSG 002754R
OB10 = 000400 S..CTY= 000005 TC.US3= 001400 TMSERR 001764R TYPMS1 002774R
OB11 = 001000 S..DCP= 000013 TC.US4= 002000 TRPVEC= 000034 TYPNM1 003342R
OB12 = 002000 S..DL1= 000002 TC.US5= 002400 TS.CET= 000001 TYPNUM 003330R
OB13 = 004000 S..DTE= 000002 TC.US6= 003000 TS.DEI= 000010 TYPOCT 003322R
OB14 = 010000 S..ILS= 000004 TC.US7= 003400 TS.DEP= 010000 TYPSTR 003214R
OB15 = 020000 S..KW1= 000007 TC.VEC= 000214 TS.EBM= 020000 TYPTAB 003020R
OB16 = 040000 S..MEM= 000006 TC.WCR= 177344 TS.EEE= 000040 TYPTXT 003144R
OB17 = 100000 S..NCN= 000010 TC.WRA= 000016 TS.EET= 000002 TYPWRN 003210R
OB2 = 000004 S..NXM= 000001 TC.WTM= 000012 TS.EEX= 000400 VERIFY 001502R
OB3 = 000010 TC.A16= 000020 TC..BM= 002000 TS.EIS= 002000 VFFLAG 000035R
OB4 = 000020 TC.A17= 000040 TC..DI= 010000 TS.ENT= 000100 VFY1 001506R
OB5 = 000040 TC.BAR= 177346 TC..DM= 001000 TS.EPE= 000020 VFY2 001604R
OB6 = 000100 TC.CLK= 000100 TC..EZ= 100000 TS.ETD= 000200 VFY3 001716R
OB7 = 000200 TC.CMD= 177342 TC..MM= 020000 TS.IEN= 000001 VRS = 000022
PARSE 000630R TC.DAT= 177350 TC..RD= 000004 TS.IFB= 100000 WLKERR 002612R
PASS = 000002 TC.DT0= 000020 TC..SE= 004000 TS.MPE= 001000 WRNMSG 000754R 002
PDP11 = 000040 TC.DT1= 000010 TC..WR= 000014 TS.PEX= 100000 ZEFLAG 000037R
QIOSTS 000004R TC.DT2= 000004 TE.BAS= 174400 TS.POF= 004000 ZERO 002012R
RADIX 000002R TC.D16= 000001 TE.BNX= 000040 TS.RES= 004000 $DSW = ****** GX
RDFLAG 000036R TC.D17= 000002 TE.DG1= 000030 TS.RM = 000010 $$ = 000037
RDZERO 002004R TC.ERR= 100000 TE.DG2= 000032 TS.RST= 000100 $$$ = 000676R 002
RDZFLG 000036R TC.ILO= 010000 TE.DG3= 000036 TS.TBM= 000001 $$$ARG= 000003
RD.LVL= 000004 TC.INE= 000100 TE.DYC= 000000 TS.XDN= 000004 $$$OST= 000006
READ 002062R TC.LVL= 000006 TE.EAD= 000022 TS.XEC= 010000 $$$T1 = 000011
R$$11M= 000001 TC.MMT= 000040 TE.EBC= 000016 TS.XEE= 004000
. ABS. 000000 000
003416 001
TEXT 000776 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 6189 WORDS ( 25 PAGES)
DYNAMIC MEMORY: 7046 WORDS ( 27 PAGES)
ELAPSED TIME: 00:00:41
[52,10]COPY,[52,20]COPY/-SP=[52,30]RSXDC,COPY