Mercurial > hg > Members > kono > nitros9-code
annotate level1/cmds/backup.asm @ 1523:82200a2c5721
Added mpi utility
author | boisy |
---|---|
date | Wed, 17 Mar 2004 16:52:01 +0000 |
parents | 84ea83668304 |
children | a8bb0834424e |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
2 * Backup - Make a backup copy of a disk | |
3 * | |
4 * $Id$ | |
5 * | |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
6 * Edt/Rev YYYY/MM/DD Modified by |
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
7 * Comment |
0 | 8 * ------------------------------------------------------------------ |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
9 * 8 ????/??/?? |
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
10 * From Tandy OS-9 Level Two VR 02.00.01. |
0 | 11 |
12 nam Backup | |
13 ttl Make a backup copy of a disk | |
14 | |
15 * Disassembled 02/04/03 23:08:04 by Disasm v1.6 (C) 1988 by RML | |
16 | |
17 ifp1 | |
18 use defsfile | |
19 endc | |
20 | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
21 DOHELP set 0 |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
22 |
0 | 23 tylg set Prgrm+Objct |
24 atrv set ReEnt+rev | |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
25 rev set $00 |
200
e9ce43cc215e
Made major changes to headers for consistency and identification
boisy
parents:
0
diff
changeset
|
26 edition set $08 |
0 | 27 |
28 mod eom,name,tylg,atrv,start,size | |
29 | |
30 u0000 rmb 1 | |
31 u0001 rmb 1 | |
32 u0002 rmb 2 | |
33 u0004 rmb 5 | |
34 u0009 rmb 1 | |
35 u000A rmb 1 | |
36 u000B rmb 1 | |
37 u000C rmb 1 | |
38 u000D rmb 1 | |
39 u000E rmb 1 | |
40 u000F rmb 1 | |
41 u0010 rmb 1 | |
42 u0011 rmb 2 | |
43 u0013 rmb 1 | |
44 u0014 rmb 1 | |
45 u0015 rmb 32 | |
46 u0035 rmb 32 | |
47 u0055 rmb 2 | |
48 u0057 rmb 424 | |
49 u01FF rmb 81 | |
50 u0250 rmb 256 | |
51 u0350 rmb 3840 | |
52 size equ . | |
53 | |
54 name fcs /Backup/ | |
200
e9ce43cc215e
Made major changes to headers for consistency and identification
boisy
parents:
0
diff
changeset
|
55 fcb edition |
0 | 56 |
57 L0014 fcc "/d0 /d1" | |
58 fcb C$CR | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
59 IFNE DOHELP |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
60 HelpMsg fcb C$LF |
0 | 61 fcc "Use: Backup [e] [s] [-v]" |
62 fcb C$LF | |
63 fcc " [/dev1 [/dev2]]" | |
64 fcb C$LF | |
65 fcc " e - abort if read error" | |
66 fcb C$LF | |
67 fcc " s - single drive prompts" | |
68 fcb C$LF | |
69 fcc " -v - inhibit verify pass" | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
70 ENDC |
0 | 71 L00A0 fcb $8D |
72 L00A1 fcc "Ready to backup from" | |
73 L00B5 fcb $A0 | |
74 L00B6 fcc " to" | |
75 fcb $A0 | |
76 L00BA fcc "Ok" | |
77 L00BC fcc " ?:" | |
78 fcb $A0 | |
79 L00C0 fcc "Ready Source, hit a key:" | |
80 fcb $A0 | |
81 L00D9 fcc "Ready Destination, hit a key:" | |
82 fcb $A0 | |
83 L00F7 fcs "Sector $" | |
84 L00FF fcs "Sectors copied: $" | |
85 L0112 fcb C$LF | |
86 fcc "Verify pass" | |
87 fcb $8D | |
88 L011F fcs "Sectors verified: $" | |
89 L0132 fcb C$LF | |
90 fcc " is being scratched" | |
91 fcb $8D | |
92 L0147 fcc "Disks not formatted identically" | |
93 fcb C$LF | |
94 L0167 fcc "Backup Aborted" | |
95 fcb $8D | |
96 | |
97 start leas >u01FF,u | |
98 pshs b,a | |
99 pshs u | |
100 tfr y,d | |
101 subd ,s++ | |
102 subd #$0250 | |
103 sta <u0013 | |
104 clr <u000B | |
105 clr <u000A | |
106 clr <u000C | |
107 clr <u000D | |
108 leay <u0057,u | |
109 sty <u0055 | |
110 ldd ,s++ | |
111 beq L01E3 | |
112 L0199 ldd ,x+ | |
113 cmpa #C$SPAC | |
114 beq L0199 | |
115 cmpa #C$COMA | |
116 beq L0199 | |
117 eora #'E | |
118 anda #$DF | |
119 bne L01B1 | |
120 cmpb #$30 | |
121 bcc L01B1 | |
122 inc <u000A | |
123 bra L0199 | |
124 L01B1 lda -$01,x | |
125 eora #'S | |
126 anda #$DF | |
127 bne L01C1 | |
128 cmpb #$30 | |
129 bcc L01C1 | |
130 inc <u000B | |
131 bra L0199 | |
132 L01C1 ldd -$01,x | |
133 cmpa #'- | |
134 bne L01D7 | |
135 eorb #'V | |
136 andb #$DF | |
137 bne L01D7 | |
138 ldd ,x+ | |
139 cmpb #$30 | |
140 bcc L01D7 | |
141 inc <u000C | |
142 bra L0199 | |
143 L01D7 lda ,-x | |
144 cmpa #PDELIM | |
145 beq L01E7 | |
146 cmpa #C$CR | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
147 lbne ShowHelp |
0 | 148 L01E3 leax >L0014,pcr |
149 L01E7 leay >L00A1,pcr | |
150 lbsr L044B | |
151 ldy <u0055 | |
152 sty <u0002 | |
153 lbsr L043A | |
154 L01F7 lda ,x+ | |
155 cmpa #C$SPAC | |
156 beq L01F7 | |
157 cmpa #C$COMA | |
158 beq L01F7 | |
159 cmpa #C$CR | |
160 bne L020B | |
161 inc <u000B | |
162 ldx <u0002 | |
163 lda ,x+ | |
164 L020B cmpa #PDELIM | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
165 lbne ShowHelp |
0 | 166 leax -$01,x |
167 leay >L00B6,pcr | |
168 lbsr L044B | |
169 ldy <u0055 | |
170 sty <u0004 | |
171 lbsr L043A | |
172 leay >L00BC,pcr | |
173 lbsr L0421 | |
174 comb | |
175 eora #'Y | |
176 anda #$DF | |
177 lbne L03BA | |
178 ldx <u0002 | |
179 ldd #$4020 | |
180 L0238 cmpb ,x+ | |
181 bne L0238 | |
182 std -$01,x | |
183 ldx <u0002 | |
184 lda #READ. | |
185 os9 I$Open | |
186 bcs L027C | |
187 leax >u0350,u | |
188 ldy #$0100 | |
189 os9 I$Read | |
190 bcs L027C | |
191 os9 I$Close | |
192 ldx <u0002 | |
193 lda #READ. | |
194 os9 I$Open | |
195 bcs L027C | |
196 sta <u0000 | |
197 ldx <u0004 | |
198 leay <u0015,u | |
199 L0267 ldb ,x+ | |
200 stb ,y+ | |
201 cmpb #C$SPAC | |
202 bne L0267 | |
203 ldd #$4020 | |
204 std -$01,y | |
205 leax <u0015,u | |
206 lda #READ.+WRITE. | |
207 os9 I$Open | |
208 L027C lbcs L03AF | |
209 sta <u0001 | |
210 clr <u000E | |
211 clr <u000F | |
212 clr <u0010 | |
213 lbsr L0419 | |
214 lda <u0001 | |
215 leax >u0250,u | |
216 ldy #$0100 | |
217 os9 I$Read | |
218 pshs u,x | |
219 ldx #$0000 | |
220 leau ,x | |
221 os9 I$Seek | |
222 puls u,x | |
223 bcs L027C | |
224 ldd >$0100,x | |
225 cmpd ,x | |
226 bne L02B7 | |
227 ldb >$0102,x | |
228 cmpb $02,x | |
229 beq L02BE | |
230 L02B7 leay >L0147,pcr | |
231 lbra L03B6 | |
232 L02BE leax >u0250,u | |
233 lda #$BF | |
234 sta <$3F,x | |
235 leay <$1F,x | |
236 lbsr L044B | |
237 leay >L0132,pcr | |
238 lbsr L0456 | |
239 leay >L00BA,pcr | |
240 lbsr L0421 | |
241 comb | |
242 eora #'Y | |
243 anda #$DF | |
244 lbne L03BA | |
245 lda <u0001 | |
246 leax >u0350,u | |
247 ldy #$0100 | |
248 os9 I$Write | |
249 lbcs L03AF | |
250 pshs u | |
251 ldx #$0000 | |
252 leau ,x | |
253 os9 I$Seek | |
254 puls u | |
255 leax >u0350,u | |
256 os9 I$Read | |
257 lbcs L03AF | |
258 os9 I$Close | |
259 leax <u0015,u | |
260 lda #$02 | |
261 os9 I$Open | |
262 lbcs L03AF | |
263 sta <u0001 | |
264 leax <u0035,u | |
265 ldb #SS.OPT | |
266 os9 I$GetStt | |
267 ldb #$01 | |
268 stb $08,x | |
269 ldb #SS.OPT | |
270 os9 I$SetStt | |
271 lbcs L03AF | |
272 L0332 leay >L00C0,pcr | |
273 lbsr L041D | |
274 lda <u0013 | |
275 sta <u0014 | |
276 leax >u0250,u | |
277 lbsr L0403 | |
278 lbsr L0419 | |
279 ldd <u0011 | |
280 leax >u0250,u | |
281 stx <u0011 | |
282 subd <u0011 | |
283 beq L035C | |
284 tfr d,y | |
285 lda <u0001 | |
286 os9 I$Write | |
287 bcs L03AF | |
288 L035C lda <u000D | |
289 cmpa #E$EOF | |
290 bne L0332 | |
291 leay >L00FF,pcr | |
292 lbsr L0470 | |
293 tst <u000C | |
294 bne L03BA | |
295 leay >L0112,pcr | |
296 lbsr L0456 | |
297 lda <u0000 | |
298 os9 I$Close | |
299 bcs L03AF | |
300 lda <u0001 | |
301 os9 I$Close | |
302 bcs L03AF | |
303 leax <u0015,u | |
304 lda #READ. | |
305 os9 I$Open | |
306 bcs L03AF | |
307 sta <u0000 | |
308 clr <u000E | |
309 clr <u000F | |
310 clr <u0010 | |
311 clr <u000D | |
312 L0396 lda <u0013 | |
313 sta <u0014 | |
314 leax >u0250,u | |
315 bsr L0403 | |
316 lda <u000D | |
317 cmpa #E$EOF | |
318 bne L0396 | |
319 leay >L011F,pcr | |
320 lbsr L0470 | |
321 bra L03BA | |
322 L03AF os9 F$PErr | |
323 leay >L0167,pcr | |
324 L03B6 lbsr L0456 | |
325 comb | |
326 L03BA ldb #$00 | |
327 os9 F$Exit | |
328 L03BF ldy #$0100 | |
329 lda <u0000 | |
330 os9 I$Read | |
331 bcc L03DC | |
332 stb <u000D | |
333 cmpb #E$EOF | |
334 beq L040D | |
335 lbsr L046C | |
336 ldb <u000D | |
337 tst <u000A | |
338 bne L03AF | |
339 os9 F$PErr | |
340 L03DC ldd <u000F | |
341 addd #$0001 | |
342 std <u000F | |
343 bcc L03E7 | |
344 inc <u000E | |
345 L03E7 tst <u000D | |
346 beq L03FD | |
347 pshs u | |
348 ldx <u000E | |
349 tfr b,a | |
350 clrb | |
351 tfr d,u | |
352 lda <u0000 | |
353 os9 I$Seek | |
354 puls u | |
355 clr <u000D | |
356 L03FD ldx <u0011 | |
357 leax >$0100,x | |
358 L0403 stx <u0011 | |
359 lda <u0014 | |
360 suba #$01 | |
361 sta <u0014 | |
362 bcc L03BF | |
363 L040D rts | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
364 ShowHelp equ * |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
365 IFNE DOHELP |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
366 leax <u0057,u |
0 | 367 stx <u0055 |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
368 leay >HelpMsg,pcr |
0 | 369 bra L03B6 |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
370 ELSE |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
371 bra L03BA |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
372 ENDC |
0 | 373 L0419 leay >L00D9,pcr |
374 L041D tst <u000B | |
375 beq L0439 | |
376 L0421 bsr L0456 | |
377 pshs y,x,b,a | |
378 leax ,s | |
379 ldy #$0001 | |
380 clra | |
381 os9 I$Read | |
382 leay >L00A0,pcr | |
383 bsr L0456 | |
384 puls y,x,b,a | |
385 anda #$7F | |
386 L0439 rts | |
387 L043A pshs x | |
388 os9 F$PrsNam | |
389 puls x | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
200
diff
changeset
|
390 bcs ShowHelp |
0 | 391 L0443 lda ,x+ |
392 bsr L04A5 | |
393 decb | |
394 bpl L0443 | |
395 rts | |
396 L044B lda ,y | |
397 anda #$7F | |
398 bsr L04A5 | |
399 lda ,y+ | |
400 bpl L044B | |
401 L0455 rts | |
402 L0456 bsr L044B | |
403 pshs y,x,a | |
404 ldd <u0055 | |
405 leax <u0057,u | |
406 stx <u0055 | |
407 subd <u0055 | |
408 tfr d,y | |
409 lda #$02 | |
410 os9 I$WritLn | |
411 puls pc,y,x,a | |
412 L046C leay >L00F7,pcr | |
413 L0470 bsr L044B | |
414 lda <u000E | |
415 bsr L0486 | |
416 inc <u0009 | |
417 lda <u000F | |
418 bsr L0488 | |
419 lda <u0010 | |
420 bsr L0488 | |
421 leay >L00B5,pcr | |
422 bra L0456 | |
423 L0486 clr <u0009 | |
424 L0488 pshs a | |
425 lsra | |
426 lsra | |
427 lsra | |
428 lsra | |
429 bsr L0494 | |
430 puls a | |
431 anda #$0F | |
432 L0494 tsta | |
433 beq L0499 | |
434 sta <u0009 | |
435 L0499 tst <u0009 | |
436 beq L0455 | |
437 adda #$30 | |
438 cmpa #$39 | |
439 bls L04A5 | |
440 adda #$07 | |
441 L04A5 pshs x | |
442 ldx <u0055 | |
443 sta ,x+ | |
444 stx <u0055 | |
445 puls pc,x | |
446 | |
447 emod | |
448 eom equ * | |
449 end |