162
|
1 ********************************************************************
|
|
2 * Format - Initialize disk media
|
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
|
8 * 18 Original Dragon Data distribution version
|
|
9
|
|
10 * The Dragon edition is slightly different from the Color Computer's
|
|
11 * Even though the strings "Change from 96tpi to 48tpi? "
|
|
12 * and "Double sided? " are in here Dragon doesn't use them.
|
|
13
|
|
14 nam Format
|
|
15 ttl Initialize disk media
|
|
16
|
|
17 * Disassembled 02/07/09 18:53:41 by Disasm v1.6 (C) 1988 by RML
|
|
18
|
|
19 ifp1
|
|
20 use defsfile
|
|
21 endc
|
|
22 tylg set Prgrm+Objct
|
|
23 atrv set ReEnt+rev
|
|
24 rev set $01
|
|
25 mod eom,name,tylg,atrv,start,size
|
|
26 u0000 rmb 1
|
|
27 u0001 rmb 1
|
|
28 PathNm rmb 1
|
|
29 u0003 rmb 1
|
|
30 u0004 rmb 1
|
|
31 u0005 rmb 2
|
|
32 u0007 rmb 1
|
|
33 u0008 rmb 1
|
|
34 u0009 rmb 1
|
|
35 u000A rmb 1
|
|
36 u000B rmb 1
|
|
37 u000C rmb 2
|
|
38 u000E rmb 1
|
|
39 u000F rmb 1
|
|
40 u0010 rmb 1
|
|
41 u0011 rmb 1
|
|
42 u0012 rmb 1
|
|
43 u0013 rmb 2
|
|
44 u0015 rmb 1
|
|
45 u0016 rmb 1
|
|
46 u0017 rmb 1
|
|
47 u0018 rmb 1
|
|
48 u0019 rmb 1
|
|
49 u001A rmb 1
|
|
50 u001B rmb 1
|
|
51 u001C rmb 1
|
|
52 u001D rmb 2
|
|
53 u001F rmb 1
|
|
54 u0020 rmb 2
|
|
55 u0022 rmb 1
|
|
56 u0023 rmb 1
|
|
57 u0024 rmb 1
|
|
58 ClustSz rmb 1
|
|
59 u0026 rmb 1
|
|
60 u0027 rmb 1
|
|
61 u0028 rmb 1
|
|
62 u0029 rmb 1
|
|
63 u002A rmb 1
|
|
64 u002B rmb 1
|
|
65 u002C rmb 1
|
|
66 u002D rmb 2
|
|
67 u002F rmb 1
|
|
68 u0030 rmb 1
|
|
69 u0031 rmb 1
|
|
70 u0032 rmb 1
|
|
71 u0033 rmb 1
|
|
72 u0034 rmb 2
|
|
73 u0036 rmb 2
|
|
74 u0038 rmb 2
|
|
75 u003A rmb 1
|
|
76 u003B rmb 2
|
|
77 u003D rmb 2
|
|
78 u003F rmb 4
|
|
79 u0043 rmb 1
|
|
80 u0044 rmb 2
|
|
81 u0046 rmb 1
|
|
82 DevPath rmb 1 Contains "/"
|
|
83 Device rmb 13
|
|
84 u0055 rmb 15
|
|
85 u0064 rmb 3
|
|
86 u0067 rmb 32
|
|
87 u0087 rmb 40
|
|
88 u00AF rmb 14
|
|
89 u00BD rmb 12
|
|
90 DateBf rmb 5
|
|
91 u00CE rmb 9
|
|
92 u00D7 rmb 17
|
|
93 u00E8 rmb 6
|
|
94 u00EE rmb 177
|
|
95 u019F rmb 2
|
|
96 u01A1 rmb 2
|
|
97 u01A3 rmb 12
|
|
98 DDBuf rmb 256
|
|
99 u02AF rmb 3
|
|
100 u02B2 rmb 9924
|
|
101 u2976 rmb 451
|
|
102 size equ .
|
|
103 name fcs /Format/
|
|
104 fcb $12
|
|
105 L0014 fcb $00
|
|
106 fcb $00
|
|
107 L0016 fcb $00
|
|
108 fcb $00
|
|
109 L0018 fcb $00
|
|
110 fcb $00
|
|
111 L001A fcb $80
|
|
112 fcb $E5 e
|
|
113 fcb $80
|
|
114 fcb $E5 e
|
|
115 fcb $00
|
|
116 fcb $00
|
|
117 L0020 fcb $01
|
|
118 fcb $00
|
|
119 fcb $28 (
|
|
120 fcb $FF
|
|
121 fcb $06
|
|
122 fcb $00
|
|
123 fcb $01
|
|
124 fcb $FC
|
|
125 fcb $0C
|
|
126 fcb $FF
|
|
127 fcb $00
|
|
128 fcb $00
|
|
129 fcb $06
|
|
130 fcb $00
|
|
131 fcb $01
|
|
132 fcb $FE
|
|
133 fcb $04
|
|
134 fcb $00
|
|
135 fcb $01
|
|
136 fcb $F7 w
|
|
137 fcb $0A
|
|
138 fcb $FF
|
|
139 fcb $06
|
|
140 fcb $00
|
|
141 fcb $01
|
|
142 fcb $FB
|
|
143 fcb $80
|
|
144 fcb $E5 e
|
|
145 fcb $80
|
|
146 fcb $E5 e
|
|
147 fcb $01
|
|
148 fcb $F7 w
|
|
149 fcb $0A
|
|
150 fcb $FF
|
|
151 fcb $00
|
|
152 fcb $00
|
|
153 fcb $FF
|
|
154 fcb $00
|
|
155 fcb $43 C
|
|
156 fcb $01
|
|
157 fcb $28 (
|
|
158 L0049 fcb $50 P
|
|
159 fcb $4E N
|
|
160 fcb $0C
|
|
161 fcb $00
|
|
162 fcb $03
|
|
163 fcb $F6 v
|
|
164 fcb $01
|
|
165 fcb $FC
|
|
166 fcb $20
|
|
167 fcb $4E N
|
|
168 fcb $00
|
|
169 fcb $00
|
|
170 fcb $0C
|
|
171 fcb $00
|
|
172 fcb $03
|
|
173 fcb $F5 u
|
|
174 fcb $01
|
|
175 fcb $FE
|
|
176 fcb $04
|
|
177 fcb $00
|
|
178 fcb $01
|
|
179 fcb $F7 w
|
|
180 fcb $16
|
|
181 fcb $4E N
|
|
182 fcb $0C
|
|
183 fcb $00
|
|
184 fcb $03
|
|
185 fcb $F5 u
|
|
186 fcb $01
|
|
187 fcb $FB
|
|
188 fcb $80
|
|
189 fcb $E5 e
|
|
190 fcb $80
|
|
191 fcb $E5 e
|
|
192 fcb $01
|
|
193 fcb $F7 w
|
|
194 fcb $16
|
|
195 fcb $4E N
|
|
196 fcb $00
|
|
197 fcb $00
|
|
198 fcb $4E N
|
|
199 fcb $00
|
|
200 fcb $90
|
|
201 fcb $01
|
|
202 fcb $52 R
|
|
203 L0076 fcb $20
|
|
204 fcb $4E N
|
|
205 fcb $00
|
|
206 fcb $00
|
|
207 fcb $08
|
|
208 fcb $00
|
|
209 fcb $03
|
|
210 fcb $F5 u
|
|
211 fcb $01
|
|
212 fcb $FE
|
|
213 fcb $04
|
|
214 fcb $00
|
|
215 fcb $01
|
|
216 fcb $F7 w
|
|
217 fcb $16
|
|
218 fcb $4E N
|
|
219 fcb $0C
|
|
220 fcb $00
|
|
221 fcb $03
|
|
222 fcb $F5 u
|
|
223 fcb $01
|
|
224 fcb $FB
|
|
225 fcb $80
|
|
226 fcb $E5 e
|
|
227 fcb $80
|
|
228 fcb $E5 e
|
|
229 fcb $01
|
|
230 fcb $F7 w
|
|
231 fcb $18
|
|
232 fcb $4E N
|
|
233 fcb $00
|
|
234 fcb $00
|
|
235 fcb $4E N
|
|
236 fcb $00
|
|
237 fcb $2C ,
|
|
238 fcb $01
|
|
239 fcb $50 P
|
|
240 start equ *
|
|
241 stu <u0000
|
|
242 bsr L00BE
|
|
243 bsr L00CF
|
|
244 bsr L011A
|
|
245 lbsr L0295
|
|
246 lbsr AskBoth
|
|
247 lbsr L04A9
|
|
248 lbsr L0589
|
|
249 lbsr L05BF
|
|
250 lbsr L07C0
|
|
251 ldu <u0044
|
|
252 os9 I$Detach
|
|
253 clrb
|
|
254 Exit os9 F$Exit
|
|
255
|
|
256 L00BE leay PathNm,u
|
|
257 pshs y
|
|
258 leay >u00AF,u
|
|
259 L00C6 clr ,-y
|
|
260 cmpy ,s
|
|
261 bhi L00C6
|
|
262 puls pc,y
|
|
263
|
|
264 L00CF lda ,x+
|
|
265 cmpa #'/
|
|
266 beq L00DA
|
|
267 L00D5 ldb #E$BPNam
|
|
268 lbra ErrExit
|
|
269 L00DA os9 F$PrsNam
|
|
270 lbcs ErrExit
|
|
271 lda #'/
|
|
272 cmpa ,y
|
|
273 beq L00D5
|
|
274 sty <u0020
|
|
275 *
|
|
276 * Copy device name from arg to DevPath
|
|
277 leay <DevPath,u
|
|
278 L00ED sta ,y+
|
|
279 lda ,x+
|
|
280 decb
|
|
281 bpl L00ED
|
|
282 leax <Device,u
|
|
283 lda #$20
|
|
284 sta ,y
|
|
285
|
|
286 clra 0 = Use device capabilities
|
|
287 os9 I$Attach
|
|
288 lbcs ErrExit
|
|
289 stu <u0044
|
|
290 ldu <u0000
|
|
291 lda #$40
|
|
292 ldb #$20
|
|
293 std ,y
|
|
294 lda #WRITE.
|
|
295 leax <DevPath,u
|
|
296 os9 I$Open
|
|
297 bcs Exit
|
|
298 sta <PathNm
|
|
299 rts
|
|
300 L011A bsr L0122
|
|
301 bsr L015D
|
|
302 lbsr L0216
|
|
303 rts
|
|
304
|
|
305 L0122 leax >DDBuf,u
|
|
306 clrb
|
|
307 os9 I$GetStt
|
|
308 bcs Exit
|
|
309 ldb $07,x
|
|
310 stb <u0012
|
|
311 ldb $04,x
|
|
312 pshs b
|
|
313 andb #$01
|
|
314 stb <u0010
|
|
315 puls b
|
|
316 lsrb
|
|
317 andb #$01
|
|
318 stb <u0011
|
|
319 ldd $05,x
|
|
320 std <u0013
|
|
321 ldb $03,x
|
|
322 stb <u001B
|
|
323 andb #$20
|
|
324 stb <u0046
|
|
325 ldd $09,x
|
|
326 std <u0017
|
|
327 ldd $0B,x
|
|
328 std <u0019
|
|
329 ldb $0D,x
|
|
330 stb <u001F
|
|
331 ldb #$01
|
|
332 stb <ClustSz
|
|
333 clrb
|
|
334 rts
|
|
335 L015D ldx <u0020
|
|
336 L015F leay >L0188,pcr
|
|
337 bsr L0176
|
|
338 bcs L017F
|
|
339 pshs b,a
|
|
340 ldd $02,y
|
|
341 leay d,y
|
|
342 puls b,a
|
|
343 jsr ,y
|
|
344 bcc L015F
|
|
345 lbra Exit
|
|
346 L0176 lda ,x+
|
|
347 L0178 cmpa ,y
|
|
348 bne L0180
|
|
349 ldb $01,y
|
|
350 clra
|
|
351 L017F rts
|
|
352 L0180 leay $04,y
|
|
353 tst ,y
|
|
354 bne L0178
|
|
355 coma
|
|
356 rts
|
|
357 L0188 fdb $5259,$002c,$7259,$0028
|
|
358 fdb $2200,$002d,$3a00,$005d,$4300,$0022,$6300,$001e
|
|
359 fdb $2800,$0013,$2900,$000f,$2c00,$000b,$2000,$0007
|
|
360 fdb $00d7,$1039,$d71c,$39d7,$1239,$0c46,$3931,$c867
|
|
361
|
|
362 ldb #$20
|
|
363 L01C2 lda ,x+
|
|
364 cmpa #$22
|
|
365 beq L01D9
|
|
366 sta ,y+
|
|
367 decb
|
|
368 bne L01C2
|
|
369 L01CD ldb ,x+
|
|
370 cmpb #$22
|
|
371 beq L01DF
|
|
372 cmpb #$20
|
|
373 bcc L01CD
|
|
374 bra L01DF
|
|
375 L01D9 lda #$20
|
|
376 cmpb #$20
|
|
377 beq L01E3
|
|
378 L01DF leay -$01,y
|
|
379 lda ,y
|
|
380 L01E3 adda #$80
|
|
381 sta ,y
|
|
382 clrb
|
|
383 rts
|
|
384 lbsr L08AF
|
|
385 ldd <u001D
|
|
386 std <u0013
|
|
387 rts
|
|
388 lbsr L08AF
|
|
389 ldd <u001D
|
|
390 tsta
|
|
391 beq L01FB
|
|
392 ldb #$01
|
|
393 L01FB stb <u001F
|
|
394 L01FD rts
|
|
395 lbsr L08AF
|
|
396 ldd <u001D
|
|
397 tsta
|
|
398 beq L0208
|
|
399 ldb #$01
|
|
400 L0208 stb <ClustSz
|
|
401 negb
|
|
402 decb
|
|
403 andb <ClustSz
|
|
404 beq L0214
|
|
405 ldb #$01
|
|
406 stb <ClustSz
|
|
407 L0214 clrb
|
|
408 rts
|
|
409 L0216 leax >Title,pcr
|
|
410 lbsr L0272
|
|
411 leay >DDBuf,u
|
|
412 ldx $0B,y
|
|
413 tst <u0010
|
|
414 beq L0229
|
|
415 ldx $09,y
|
|
416 L0229 stx <u0017
|
|
417 leax >FmtMsg,pcr
|
|
418 ldy #FmtMLen
|
|
419 lbsr L0276
|
|
420 leax <DevPath,u
|
|
421 tfr x,y
|
|
422 L023B lda ,y+
|
|
423 cmpa #$40
|
|
424 bne L023B
|
|
425 pshs y
|
|
426 lda #$0D
|
|
427 sta -$01,y
|
|
428 lbsr L0272
|
|
429 puls y
|
|
430 lda #$40
|
|
431 sta -$01,y
|
|
432 lda <u001C
|
|
433 bne L01FD
|
|
434 L0254 leax >Query,pcr
|
|
435 ldy #QueryLen
|
|
436 lbsr GetYN
|
|
437 anda #$DF
|
|
438 cmpa #'Y
|
|
439 beq L01FD
|
|
440 clrb
|
|
441 cmpa #'N
|
|
442 lbeq Exit
|
|
443 bra L0254
|
|
444 L026E leax >HelpCR,pcr
|
|
445 L0272 ldy #$0050
|
|
446 L0276 lda #$01
|
|
447 os9 I$WritLn
|
|
448 rts
|
|
449 *
|
|
450 * Read a one-byte answer
|
|
451 *
|
|
452 GetYN pshs u,y,x,b,a
|
|
453 bsr L0276
|
|
454 leax ,s
|
|
455 ldy #$0001
|
|
456 clra
|
|
457 os9 I$Read
|
|
458 lbcs Exit
|
|
459 bsr L026E
|
|
460 puls u,y,x,b,a
|
|
461 anda #$7F
|
|
462 rts
|
|
463
|
|
464 L0295 leax >L001A,pcr
|
|
465 stx <u000A
|
|
466 ldb <u001B
|
|
467 bitb #$C0
|
|
468 bne L02B9
|
|
469 ldb <u0046
|
|
470 beq L02AB
|
|
471 leax >L0076,pcr
|
|
472 bra L02B9
|
|
473 L02AB leax >L0020,pcr
|
|
474 stx <u000A
|
|
475 tst <u0010
|
|
476 beq L02B9
|
|
477 leax >L0049,pcr
|
|
478 L02B9 stx <u000C
|
|
479 clra
|
|
480 ldb <u0012
|
|
481 tfr d,y
|
|
482 clrb
|
|
483 ldx <u0013
|
|
484 bsr L0303
|
|
485 exg d,x
|
|
486 subd #$0001
|
|
487 bcc L02CE
|
|
488 leax -$01,x
|
|
489 L02CE exg d,x
|
|
490 ldy <u0017
|
|
491 bsr L0303
|
|
492 exg d,x
|
|
493 addd <u0019
|
|
494 std <u0023
|
|
495 exg d,x
|
|
496 adcb #$00
|
|
497 stb <u0022
|
|
498 lda #$08
|
|
499 pshs a
|
|
500 ldx <u0023
|
|
501 ldb <u0022
|
|
502 bsr L034C
|
|
503 lda <ClustSz
|
|
504 pshs a
|
|
505 bsr L034C
|
|
506 tstb
|
|
507 beq L02FE
|
|
508 leax >ClustMsg,pcr
|
|
509 lbsr L0272
|
|
510 lbra L0528
|
|
511 L02FE leas $02,s
|
|
512 stx <u0026
|
|
513 rts
|
|
514 L0303 lda #$08
|
|
515 L0305 clr ,-s
|
|
516 deca
|
|
517 bne L0305
|
|
518 sty ,s
|
|
519 stb $02,s
|
|
520 stx $03,s
|
|
521 L0311 ldd ,s
|
|
522 beq L0334
|
|
523 lsra
|
|
524 rorb
|
|
525 std ,s
|
|
526 bcc L0327
|
|
527 ldd $03,s
|
|
528 addd $06,s
|
|
529 std $06,s
|
|
530 lda $02,s
|
|
531 adca $05,s
|
|
532 sta $05,s
|
|
533 L0327 ldd $03,s
|
|
534 lslb
|
|
535 rola
|
|
536 std $03,s
|
|
537 lda $02,s
|
|
538 rola
|
|
539 sta $02,s
|
|
540 bra L0311
|
|
541 L0334 leas $05,s
|
|
542 puls pc,x,b
|
|
543 L0338 pshs x,b
|
|
544 lsr ,s
|
|
545 ror $01,s
|
|
546 ror $02,s
|
|
547 puls x,b
|
|
548 exg d,x
|
|
549 adcb #$00
|
|
550 adca #$00
|
|
551 exg d,x
|
|
552 adcb #$00
|
|
553 L034C lsr $02,s
|
|
554 bne L0338
|
|
555 rts
|
|
556
|
|
557 AskBoth tst <u001B
|
|
558 bpl L036B
|
|
559 leax >Both,pcr
|
|
560 ldy #BothLen
|
|
561 lbsr GetYN
|
|
562 anda #$DF
|
|
563 cmpa #'Y
|
|
564 beq L036B
|
|
565 cmpa #'N
|
|
566 bne AskBoth
|
|
567 rts
|
|
568
|
|
569 L036B lda <PathNm
|
|
570 ldb #SS.Reset
|
|
571 os9 I$SetStt
|
|
572 lbcs Exit
|
|
573 ldd #$0000
|
|
574 std <u0003
|
|
575 inca
|
|
576 sta <u0007
|
|
577 L037E clr <u0005
|
|
578 L0380 bsr L03DA
|
|
579 leax >u00AF,u
|
|
580 ldu <u0003
|
|
581 clrb
|
|
582 tst <u0010
|
|
583 beq L039B
|
|
584 tst <u0046
|
|
585 bne L0399
|
|
586 tst <u0004
|
|
587 bne L0399
|
|
588 tst <u0005
|
|
589 beq L039B
|
|
590 L0399 orb #$02
|
|
591 L039B tst <u0011
|
|
592 beq L03A1
|
|
593 orb #$04
|
|
594 L03A1 lda <u0005
|
|
595 beq L03A7
|
|
596 orb #$01
|
|
597 L03A7 tfr d,y
|
|
598 lda <PathNm
|
|
599 ldb #SS.WTrk
|
|
600 os9 I$SetStt
|
|
601 lbcs Exit
|
|
602 ldu <u0000
|
|
603 ldb <u0005
|
|
604 incb
|
|
605 stb <u0005
|
|
606 cmpb <u0012
|
|
607 bcs L0380
|
|
608 ldd <u0003
|
|
609 addd #$0001
|
|
610 std <u0003
|
|
611 cmpd <u0013
|
|
612 bcs L037E
|
|
613 rts
|
|
614 L03CC ldy <u000E
|
|
615 L03CF ldd ,y++
|
|
616 beq L03E9
|
|
617 L03D3 stb ,x+
|
|
618 deca
|
|
619 bne L03D3
|
|
620 bra L03CF
|
|
621 L03DA lda <u001B
|
|
622 bita #$C0
|
|
623 beq L03EA
|
|
624 ldy <u000C
|
|
625 leax >u00AF,u
|
|
626 bsr L03CF
|
|
627 L03E9 rts
|
|
628 L03EA ldy <u000C
|
|
629 ldb <u0018
|
|
630 tst <u0046
|
|
631 bne L0400
|
|
632 tst <u0004
|
|
633 bne L0400
|
|
634 tst <u0005
|
|
635 bne L0400
|
|
636 ldy <u000A
|
|
637 ldb <u001A
|
|
638 L0400 sty <u000E
|
|
639 stb <u0009
|
|
640 stb <u0016
|
|
641 bsr L0466
|
|
642 leax >u00AF,u
|
|
643 bsr L03CF
|
|
644 sty <u000E
|
|
645 L0412 bsr L03CC
|
|
646 dec <u0009
|
|
647 bne L0412
|
|
648 lda ,y+
|
|
649 sty <u000E
|
|
650 stx <u003B
|
|
651 leay >u2976,u
|
|
652 sty <u001D
|
|
653 tfr a,b
|
|
654 L0428 std ,x++
|
|
655 cmpx <u001D
|
|
656 bcs L0428
|
|
657 ldy <u000E
|
|
658 ldd ,y++
|
|
659 std <u003D
|
|
660 ldd ,y
|
|
661 std <u003F
|
|
662 clr <u0009
|
|
663 leax >u00AF,u
|
|
664 ldd <u003D
|
|
665 leay >u0087,u
|
|
666 L0445 leax d,x
|
|
667 ldd <u0004
|
|
668 std ,x
|
|
669 ldb <u0009
|
|
670 lda b,y
|
|
671 incb
|
|
672 stb <u0009
|
|
673 ldb <u0007
|
|
674 tst <u0046
|
|
675 beq L0459
|
|
676 inca
|
|
677 L0459 std $02,x
|
|
678 lda <u0009
|
|
679 cmpa <u0016
|
|
680 bcc L0465
|
|
681 ldd <u003F
|
|
682 bra L0445
|
|
683 L0465 rts
|
|
684 L0466 pshs y,b
|
|
685 tfr b,a
|
|
686 ldb <u0004
|
|
687 cmpb #$01
|
|
688 bhi L0492
|
|
689 leax >u0087,u
|
|
690 leay a,x
|
|
691 ldb <u001F
|
|
692 bne L0481
|
|
693 L047A leax >Abort,pcr
|
|
694 lbra L0676
|
|
695 L0481 cmpb <u0016
|
|
696 bhi L047A
|
|
697 nega
|
|
698 pshs y,x,b,a
|
|
699 clra
|
|
700 L0489 sta ,x
|
|
701 inca
|
|
702 cmpa <u0016
|
|
703 bne L0494
|
|
704 leas $06,s
|
|
705 L0492 puls pc,y,b
|
|
706 L0494 ldb <u001F
|
|
707 abx
|
|
708 cmpx $04,s
|
|
709 bcs L049F
|
|
710 ldb ,s
|
|
711 leax b,x
|
|
712 L049F cmpx $02,s
|
|
713 bne L0489
|
|
714 leax $01,x
|
|
715 stx $02,s
|
|
716 bra L0489
|
|
717 L04A9 lbsr L081B
|
|
718 ldd <u0023
|
|
719 std $01,x DD.TOT+1
|
|
720 ldb <u0022
|
|
721 stb ,x DD.TOT?
|
|
722 ldd <u0017
|
|
723 std <$11,x DD.SPT?
|
|
724 stb $03,x DD.TKS?
|
|
725 lda <ClustSz
|
|
726 sta $07,x DD.BIT+1
|
|
727 clra
|
|
728 ldb <u0026
|
|
729 tst <u0027
|
|
730 beq L04C9
|
|
731 addd #$0001
|
|
732 L04C9 addd #$0001
|
|
733 addd #$0010
|
|
734 std $09,x DD.DIR?
|
|
735 clra
|
|
736 tst <u0010
|
|
737 beq L04D8
|
|
738 ora #$02
|
|
739 L04D8 ldb <u0012
|
|
740 cmpb #$01
|
|
741 beq L04E0
|
|
742 ora #$01
|
|
743 L04E0 tst <u0011
|
|
744 beq L04E6
|
|
745 ora #$04
|
|
746 L04E6 sta <$10,x DD.FMT?
|
|
747 ldd <u0026
|
|
748 std $04,x
|
|
749 lda #$FF
|
|
750 sta $0D,x Is FF always put in DD.ATT?
|
|
751 leax >DateBf,u
|
|
752 os9 F$Time
|
|
753 leax >u00CE,u
|
|
754 leay <u0067,u
|
|
755 tst ,y
|
|
756 beq L050B
|
|
757 L0503 lda ,y+
|
|
758 sta ,x+
|
|
759 bpl L0503
|
|
760 bra L053E
|
|
761 L050B leax >DName,pcr
|
|
762 ldy #DNameLen
|
|
763 lbsr L0276
|
|
764 leax >u00CE,u
|
|
765 ldy #$0021
|
|
766 clra
|
|
767 os9 I$ReadLn
|
|
768 bcc L052F
|
|
769 cmpa #$D3
|
|
770 bne L050B
|
|
771 L0528 leax >Aborted,pcr
|
|
772 lbra L0676
|
|
773 L052F tfr y,d
|
|
774 leax d,x
|
|
775 clr ,-x
|
|
776 decb
|
|
777 beq L050B
|
|
778 lda ,-x
|
|
779 ora #$80
|
|
780 sta ,x
|
|
781 L053E leax >DateBf,u
|
|
782 leay <$40,x
|
|
783 pshs y
|
|
784 ldd #$0000
|
|
785 L054A addd ,x++
|
|
786 cmpx ,s
|
|
787 bcs L054A
|
|
788 leas $02,s
|
|
789 std >u00BD,u
|
|
790 ldd >L0014,pcr
|
|
791 std >u019F,u
|
|
792 ldd >L0016,pcr
|
|
793 std >u01A1,u
|
|
794 ldd >L0018,pcr
|
|
795 std >u01A3,u
|
|
796 lda <PathNm
|
|
797 ldb #SS.Opt
|
|
798 leax >u00EE,u
|
|
799 os9 I$GetStt
|
|
800 ldb #SS.Reset
|
|
801 os9 I$SetStt
|
|
802 lbcs Exit
|
|
803 leax >u00AF,u
|
|
804 lbra L0827
|
|
805 L0589 lda <PathNm
|
|
806 os9 I$Close
|
|
807 leax <DevPath,u
|
|
808 lda #READ.
|
|
809 os9 I$Open
|
|
810 lbcs L0672
|
|
811 sta <PathNm
|
|
812 leax >u00AF,u
|
|
813 ldy #$0100
|
|
814 os9 I$Read
|
|
815 lbcs L0672
|
|
816 lda <PathNm
|
|
817 os9 I$Close
|
|
818 leax <DevPath,u
|
|
819 lda #UPDAT.
|
|
820 os9 I$Open
|
|
821 lbcs L0672
|
|
822 sta <PathNm
|
|
823 rts
|
|
824 L05BF lda <u001B
|
|
825 clr <u0043
|
|
826 bita #$80
|
|
827 beq L05DE
|
|
828 L05C7 leax >Verify,pcr
|
|
829 ldy #VerifyLen
|
|
830 lbsr GetYN
|
|
831 anda #$DF
|
|
832 cmpa #'Y
|
|
833 beq L05DE
|
|
834 cmpa #'N
|
|
835 bne L05C7
|
|
836
|
|
837 sta <u0043
|
|
838 L05DE ldd <u0019
|
|
839 std <u0015
|
|
840 clra
|
|
841 clrb
|
|
842 std <u0034
|
|
843 std <u0003
|
|
844 std <u0008
|
|
845 std <u0030
|
|
846 stb <u002F
|
|
847 sta <u003A
|
|
848 leax >DDBuf,u
|
|
849 stx <u0036
|
|
850 lbsr L081F
|
|
851 leax >$0100,x
|
|
852 stx <u0038
|
|
853 clra
|
|
854 ldb #$01
|
|
855 std <u0032
|
|
856 lda <ClustSz
|
|
857 sta <u0029
|
|
858 clr <u0028
|
|
859 clra
|
|
860 ldb <u0026
|
|
861 tst <u0027
|
|
862 beq L0614
|
|
863 addd #$0001
|
|
864 L0614 addd #$0009
|
|
865 addd #$0010
|
|
866 std <u002B
|
|
867 lda <ClustSz
|
|
868 L061E lsra
|
|
869 bcs L062F
|
|
870 lsr <u002B
|
|
871 ror <u002C
|
|
872 bcc L061E
|
|
873 inc <u002C
|
|
874 bne L061E
|
|
875 inc <u002B
|
|
876 bra L061E
|
|
877 L062F ldb <u002C
|
|
878 stb <u002D
|
|
879 lda <ClustSz
|
|
880 mul
|
|
881 std <u002B
|
|
882 subd #$0001
|
|
883 subb <u0026
|
|
884 sbca #$00
|
|
885 subd #$0010
|
|
886 tst <u0027
|
|
887 beq L0649
|
|
888 subd #$0001
|
|
889 L0649 stb <u002A
|
|
890 L064B tst <u0043
|
|
891 bne L067D
|
|
892 lda <PathNm
|
|
893 leax >u00AF,u
|
|
894 ldy #$0100
|
|
895 os9 I$Read
|
|
896 bcc L067D
|
|
897 os9 F$PErr
|
|
898 lbsr L084B
|
|
899 lda #$FF
|
|
900 sta <u0028
|
|
901 tst <u002F
|
|
902 bne L067D
|
|
903 ldx <u0030
|
|
904 cmpx <u002B
|
|
905 bhi L067D
|
|
906 L0672 leax >BadSect,pcr
|
|
907 L0676 lbsr L0272
|
|
908 clrb
|
|
909 lbra Exit
|
|
910 L067D ldd <u0008
|
|
911 addd #$0001
|
|
912 std <u0008
|
|
913 cmpd <u0015
|
|
914 bcs L06C2
|
|
915 clr <u0008
|
|
916 clr <u0009
|
|
917 tst <u0043
|
|
918 bne L06B7
|
|
919 lda #$20
|
|
920 pshs a
|
|
921 lda <u0004
|
|
922 lbsr L0724
|
|
923 pshs b,a
|
|
924 lda <u0003
|
|
925 lbsr L0724
|
|
926 pshs b
|
|
927 tfr s,x
|
|
928 ldy #$0004
|
|
929 lbsr L0276
|
|
930 lda $02,s
|
|
931 cmpa #$46
|
|
932 bne L06B5
|
|
933 lbsr L026E
|
|
934 L06B5 leas $04,s
|
|
935 L06B7 ldd <u0003
|
|
936 addd #$0001
|
|
937 std <u0003
|
|
938 ldd <u0017
|
|
939 std <u0015
|
|
940 L06C2 dec <u0029
|
|
941 bne L06D8
|
|
942 bsr L0701
|
|
943 tst <u0028
|
|
944 bne L06D2
|
|
945 ldx <u0034
|
|
946 leax $01,x
|
|
947 stx <u0034
|
|
948 L06D2 clr <u0028
|
|
949 lda <ClustSz
|
|
950 sta <u0029
|
|
951 L06D8 ldb <u002F
|
|
952 ldx <u0030
|
|
953 leax $01,x
|
|
954 bne L06E1
|
|
955 incb
|
|
956 L06E1 cmpb <u0022
|
|
957 bcs L06E9
|
|
958 cmpx <u0023
|
|
959 bcc L06F0
|
|
960 L06E9 stb <u002F
|
|
961 stx <u0030
|
|
962 lbra L064B
|
|
963 L06F0 lda #$FF
|
|
964 sta <u0028
|
|
965 leay >DDBuf,u
|
|
966 L06F8 cmpy <u0036
|
|
967 beq L073C
|
|
968 bsr L0701
|
|
969 bra L06F8
|
|
970 L0701 ldx <u0036
|
|
971 lda <u0028
|
|
972 rora
|
|
973 rol ,x+
|
|
974 inc <u003A
|
|
975 lda <u003A
|
|
976 cmpa #$08
|
|
977 bcs L0723
|
|
978 clr <u003A
|
|
979 stx <u0036
|
|
980 cmpx <u0038
|
|
981 bne L0723
|
|
982 bsr L0780
|
|
983 leax >DDBuf,u
|
|
984 stx <u0036
|
|
985 lbsr L081F
|
|
986 L0723 rts
|
|
987 L0724 tfr a,b
|
|
988 lsra
|
|
989 lsra
|
|
990 lsra
|
|
991 lsra
|
|
992 andb #$0F
|
|
993 addd #$3030
|
|
994 cmpa #$39
|
|
995 bls L0735
|
|
996 adda #$07
|
|
997 L0735 cmpb #$39
|
|
998 bls L073B
|
|
999 addb #$07
|
|
1000 L073B rts
|
|
1001 L073C lbsr L026E
|
|
1002 leax >NumGood,pcr
|
|
1003 ldy #NumGoodLen
|
|
1004 lbsr L0276
|
|
1005 ldb <ClustSz
|
|
1006 clra
|
|
1007 ldx <u0034
|
|
1008 pshs x,a
|
|
1009 L0751 lsrb
|
|
1010 bcs L075C
|
|
1011 lsl $02,s
|
|
1012 rol $01,s
|
|
1013 rol ,s
|
|
1014 bra L0751
|
|
1015 L075C puls x,a
|
|
1016 ldb #$0D
|
|
1017 pshs b
|
|
1018 tfr d,y
|
|
1019 tfr x,d
|
|
1020 tfr b,a
|
|
1021 bsr L0724
|
|
1022 pshs b,a
|
|
1023 tfr x,d
|
|
1024 bsr L0724
|
|
1025 pshs b,a
|
|
1026 tfr y,d
|
|
1027 bsr L0724
|
|
1028 pshs b,a
|
|
1029 tfr s,x
|
|
1030 lbsr L0272
|
|
1031 leas $07,s
|
|
1032 rts
|
|
1033 L0780 pshs y
|
|
1034 clra
|
|
1035 ldb #$01
|
|
1036 cmpd <u0032
|
|
1037 bne L079B
|
|
1038 leax >DDBuf,u
|
|
1039 clra
|
|
1040 ldb <u002D
|
|
1041 tfr d,y
|
|
1042 clrb
|
|
1043 os9 F$AllBit
|
|
1044 lbcs L0672
|
|
1045 L079B lbsr L0835
|
|
1046 leax >DDBuf,u
|
|
1047 lbsr L0827
|
|
1048 ldd <u0022
|
|
1049 cmpd <u002F
|
|
1050 bcs L07B7
|
|
1051 bhi L07B4
|
|
1052 ldb <u0024
|
|
1053 cmpb <u0031
|
|
1054 bcc L07B7
|
|
1055 L07B4 lbsr L084B
|
|
1056 L07B7 ldd <u0032
|
|
1057 addd #$0001
|
|
1058 std <u0032
|
|
1059 puls pc,y
|
|
1060 L07C0 ldd #$0010
|
|
1061 addd <u0032
|
|
1062 std <u0032
|
|
1063 bsr L0835
|
|
1064 leax >u02AF,u
|
|
1065 bsr L081F
|
|
1066 leax >u02B2,u
|
|
1067 os9 F$Time
|
|
1068 leax >u02AF,u
|
|
1069 lda #$BF
|
|
1070 sta ,x
|
|
1071 lda #$02
|
|
1072 sta $08,x
|
|
1073 clra
|
|
1074 ldb #$40
|
|
1075 std $0B,x
|
|
1076 ldb <u002A
|
|
1077 decb
|
|
1078 stb <$14,x
|
|
1079 ldd <u0032
|
|
1080 addd #$0001
|
|
1081 std <$11,x
|
|
1082 bsr L0827
|
|
1083 bsr L081B
|
|
1084 ldd #$2EAE
|
|
1085 std ,x
|
|
1086 stb <$20,x
|
|
1087 ldd <u0032
|
|
1088 std <$1E,x
|
|
1089 std <$3E,x
|
|
1090 bsr L0827
|
|
1091 bsr L081B
|
|
1092 ldb <u002A
|
|
1093 L080F decb
|
|
1094 bne L0813
|
|
1095 rts
|
|
1096 L0813 pshs b
|
|
1097 bsr L0827
|
|
1098 puls b
|
|
1099 bra L080F
|
|
1100 L081B leax >u00AF,u
|
|
1101 L081F clra
|
|
1102 clrb
|
|
1103 L0821 sta d,x
|
|
1104 decb
|
|
1105 bne L0821
|
|
1106 rts
|
|
1107 L0827 lda <PathNm
|
|
1108 ldy #$0100
|
|
1109 os9 I$Write
|
|
1110 lbcs Exit
|
|
1111 rts
|
|
1112 L0835 clra
|
|
1113 ldb <u0032
|
|
1114 tfr d,x
|
|
1115 lda <u0033
|
|
1116 clrb
|
|
1117 tfr d,u
|
|
1118 L083F lda <PathNm
|
|
1119 os9 I$Seek
|
|
1120 ldu <u0000
|
|
1121 lbcs Exit
|
|
1122 rts
|
|
1123 L084B ldx <u002F
|
|
1124 lda <u0031
|
|
1125 clrb
|
|
1126 addd #$0100
|
|
1127 tfr d,u
|
|
1128 bcc L083F
|
|
1129 leax $01,x
|
|
1130 bra L083F
|
|
1131 ldd ,y
|
|
1132 leau >u00AF,u
|
|
1133 leax >L08A3,pcr
|
|
1134 ldy #$2F20
|
|
1135 L0869 leay >$0100,y
|
|
1136 subd ,x
|
|
1137 bcc L0869
|
|
1138 addd ,x++
|
|
1139 pshs b,a
|
|
1140 ldd ,x
|
|
1141 tfr y,d
|
|
1142 beq L0891
|
|
1143 ldy #$2F30
|
|
1144 cmpd #$3020
|
|
1145 bne L088B
|
|
1146 ldy #$2F20
|
|
1147 tfr b,a
|
|
1148 L088B sta ,u+
|
|
1149 puls b,a
|
|
1150 bra L0869
|
|
1151 L0891 sta ,u+
|
|
1152 lda #$0D
|
|
1153 sta ,u
|
|
1154 ldu <u0000
|
|
1155 leas $02,s
|
|
1156 leax >u00AF,u
|
|
1157 lbsr L0272
|
|
1158 rts
|
|
1159 L08A3
|
|
1160 fdb $2710,$03e8,$0064,$000a,$0001,$0000
|
|
1161
|
|
1162 L08AF ldd #$0000
|
|
1163 L08B2 bsr L08C2
|
|
1164 bcs L08BC
|
|
1165 bne L08B2
|
|
1166 std <u001D
|
|
1167 bne L08C1
|
|
1168 L08BC ldd #$0001
|
|
1169 std <u001D
|
|
1170 L08C1 rts
|
|
1171 L08C2 pshs y,b,a
|
|
1172 ldb ,x+
|
|
1173 subb #$30
|
|
1174 cmpb #$0A
|
|
1175 bcc L08E0
|
|
1176 lda #$00
|
|
1177 ldy #$000A
|
|
1178 L08D2 addd ,s
|
|
1179 bcs L08DE
|
|
1180 leay -$01,y
|
|
1181 bne L08D2
|
|
1182 std ,s
|
|
1183 andcc #$FB
|
|
1184 L08DE puls pc,y,b,a
|
|
1185 L08E0 orcc #$04
|
|
1186 puls pc,y,b,a
|
|
1187
|
|
1188 ErrExit lda #$02
|
|
1189 os9 F$PErr
|
|
1190 leax <HelpMsg,pcr
|
|
1191 ldy #$0154
|
|
1192 lda #$02
|
|
1193 os9 I$WritLn
|
|
1194 clrb
|
|
1195 os9 F$Exit
|
|
1196
|
|
1197 Title fcb C$LF
|
|
1198 fcc "DRAGON FORMAT UTILITY"
|
|
1199 HelpCR fcb C$CR
|
|
1200 HelpMsg fcc "Use: FORMAT /devname <opts>"
|
|
1201 fcb C$LF
|
|
1202 fcc " opts: R - Ready"
|
|
1203 fcb C$LF
|
|
1204 fcc / "disk name"/
|
|
1205 fcb C$LF,C$CR
|
|
1206 FmtMsg fcc "Formatting drive "
|
|
1207 FmtMLen equ *-FmtMsg
|
|
1208
|
|
1209 Query fcc "y (yes) or n (no)"
|
|
1210 fcb C$LF
|
|
1211 fcc "Ready? "
|
|
1212 QueryLen equ *-Query
|
|
1213
|
|
1214 Abort fcc "ABORT Interleave value out of range"
|
|
1215 fcb C$CR
|
|
1216 DName fcc "Disk name: "
|
|
1217 DNameLen equ *-DName
|
|
1218 fcc "How many Cylinders (Tracks?) : "
|
|
1219 BadSect fcc "Bad system sector, "
|
|
1220 Aborted fcc "FORMAT ABORTED"
|
|
1221 fcb C$CR
|
|
1222 ClustMsg fcc "Cluster size mismatch"
|
|
1223 fcb C$CR
|
|
1224 fcc "Double density? "
|
|
1225 TPIChg fcc "Change from 96tpi to 48tpi? "
|
|
1226 DSided fcc "Double sided? "
|
|
1227 NumGood fcc "Number of good sectors: $"
|
|
1228 NumGoodLen equ *-NumGood
|
|
1229 Both fcc "Both PHYSICAL and LOGICAL format? "
|
|
1230 BothLen equ *-Both
|
|
1231 Verify fcc "Physical Verify desired? "
|
|
1232 VerifyLen equ *-Verify
|
|
1233
|
|
1234 emod
|
|
1235 eom equ *
|
|
1236 end
|