Mercurial > hg > Members > kono > nitros9-code
changeset 162:3310d08dd353
Analysis of format.
They are different due to differences in hardware
author | roug |
---|---|
date | Tue, 09 Jul 2002 21:05:30 +0000 |
parents | fed96c42e0b4 |
children | 03bb361a6a42 |
files | level1/cmds/format.asm level1/cmds/format_d64.asm |
diffstat | 2 files changed, 1330 insertions(+), 80 deletions(-) [+] |
line wrap: on
line diff
--- a/level1/cmds/format.asm Mon Jul 08 20:10:06 2002 +0000 +++ b/level1/cmds/format.asm Tue Jul 09 21:05:30 2002 +0000 @@ -24,7 +24,7 @@ u0000 rmb 1 u0001 rmb 1 -u0002 rmb 1 +PathNm rmb 1 u0003 rmb 1 u0004 rmb 1 u0005 rmb 2 @@ -54,7 +54,7 @@ u0022 rmb 1 u0023 rmb 1 u0024 rmb 1 -u0025 rmb 1 +ClustSz rmb 1 u0026 rmb 1 u0027 rmb 1 u0028 rmb 1 @@ -78,15 +78,15 @@ u0043 rmb 1 u0044 rmb 2 u0046 rmb 1 -u0047 rmb 1 -u0048 rmb 13 +DevPath rmb 1 Contains "/" +Device rmb 13 u0055 rmb 15 u0064 rmb 3 u0067 rmb 32 u0087 rmb 40 u00AF rmb 14 u00BD rmb 12 -u00C9 rmb 5 +DateBf rmb 5 u00CE rmb 9 u00D7 rmb 17 u00E8 rmb 6 @@ -94,7 +94,7 @@ u019F rmb 2 u01A1 rmb 2 u01A3 rmb 12 -u01AF rmb 256 +DDBuf rmb 256 u02AF rmb 3 u02B2 rmb 9924 u2976 rmb 451 @@ -244,7 +244,7 @@ bsr L00CF bsr L011A lbsr L0295 - lbsr L0351 + lbsr AskBoth lbsr L04A9 lbsr L0586 lbsr L05BC @@ -252,55 +252,61 @@ ldu <u0044 os9 I$Detach clrb -L00BB os9 F$Exit -L00BE leay u0002,u +Exit os9 F$Exit + +L00BE leay PathNm,u pshs y leay >u00AF,u L00C6 clr ,-y cmpy ,s bhi L00C6 puls pc,y + L00CF lda ,x+ - cmpa #$2F + cmpa #'/ beq L00DA -L00D5 ldb #$D7 - lbra L08D3 +L00D5 ldb #E$BPNam + lbra ErrExit L00DA os9 F$PrsNam - lbcs L08D3 - lda #$2F + lbcs ErrExit + lda #'/ cmpa ,y beq L00D5 sty <u0020 - leay <u0047,u +* +* Copy device name from arg to DevPath + leay <DevPath,u L00ED sta ,y+ lda ,x+ decb bpl L00ED - leax <u0048,u + leax <Device,u lda #$20 sta ,y - clra + + clra 0 = Use device capabilities os9 I$Attach - lbcs L08D3 + lbcs ErrExit stu <u0044 ldu <u0000 lda #$40 ldb #$20 std ,y - lda #$02 - leax <u0047,u + lda #WRITE. + leax <DevPath,u os9 I$Open - bcs L00BB - sta <u0002 + bcs Exit + sta <PathNm rts L011A bsr L0122 bsr L015D lbsr L0216 rts -L0122 leax >u01AF,u + +L0122 leax >DDBuf,u clrb os9 I$GetStt - bcs L00BB + bcs Exit ldb $07,x stb <u0012 ldb $04,x @@ -324,7 +330,7 @@ ldb $0D,x stb <u001F ldb #$01 - stb <u0025 + stb <ClustSz clrb rts L015D ldx <u0020 @@ -337,7 +343,7 @@ puls b,a jsr ,y bcc L015F - lbra L00BB + lbra Exit L0176 lda ,x+ L0178 cmpa ,y bne L0180 @@ -394,18 +400,18 @@ tsta beq L0208 ldb #$01 -L0208 stb <u0025 +L0208 stb <ClustSz negb decb - andb <u0025 + andb <ClustSz beq L0214 ldb #$01 - stb <u0025 + stb <ClustSz L0214 clrb rts L0216 leax >Title,pcr lbsr L0272 - leay >u01AF,u + leay >DDBuf,u ldx $0B,y tst <u0010 beq L0229 @@ -414,7 +420,7 @@ leax >FmtMsg,pcr ldy #FmtMLen lbsr L0276 - leax <u0047,u + leax <DevPath,u tfr x,y L023B lda ,y+ cmpa #$40 @@ -430,30 +436,34 @@ bne L01FD L0254 leax >Query,pcr ldy #QueryLen - lbsr L027C + lbsr GetYN anda #$DF - cmpa #$59 + cmpa #'Y beq L01FD clrb - cmpa #$4E - lbeq L00BB + cmpa #'N + lbeq Exit bra L0254 L026E leax >HelpCR,pcr L0272 ldy #$0050 L0276 lda #$01 os9 I$WritLn rts -L027C pshs u,y,x,b,a +* +* Read a one-byte answer +* +GetYN pshs u,y,x,b,a bsr L0276 leax ,s ldy #$0001 clra os9 I$Read - lbcs L00BB + lbcs Exit bsr L026E puls u,y,x,b,a anda #$7F rts + L0295 leax >L001A,pcr stx <u000A ldb <u001B @@ -493,7 +503,7 @@ ldx <u0023 ldb <u0022 bsr L034C - lda <u0025 + lda <ClustSz pshs a bsr L034C tstb @@ -546,21 +556,23 @@ L034C lsr $02,s bne L0338 rts -L0351 tst <u001B + +AskBoth tst <u001B bpl L036B leax >Both,pcr ldy #BothLen - lbsr L027C + lbsr GetYN anda #$DF - cmpa #$59 + cmpa #'Y beq L036B - cmpa #$4E - bne L0351 + cmpa #'N + bne AskBoth rts -L036B lda <u0002 + +L036B lda <PathNm ldb #SS.Reset os9 I$SetStt - lbcs L00BB + lbcs Exit ldd #$0000 std <u0003 inca @@ -586,10 +598,10 @@ beq L03A7 orb #$01 L03A7 tfr d,y - lda <u0002 + lda <PathNm ldb #SS.WTrk os9 I$SetStt - lbcs L00BB + lbcs Exit ldu <u0000 ldb <u0005 incb @@ -713,7 +725,7 @@ ldd <u0017 std <$11,x stb $03,x - lda <u0025 + lda <ClustSz sta $07,x clra ldb <u0026 @@ -738,7 +750,7 @@ std $04,x lda #$FF sta $0D,x - leax >u00C9,u + leax >DateBf,u os9 F$Time leax >u00CE,u leay <u0067,u @@ -768,7 +780,7 @@ lda ,-x ora #$80 sta ,x -L053B leax >u00C9,u +L053B leax >DateBf,u leay <$40,x pshs y ldd #$0000 @@ -783,33 +795,33 @@ std >u01A1,u ldd >L0018,pcr std >u01A3,u - lda <u0002 + lda <PathNm ldb #SS.Opt leax >u00EE,u os9 I$GetStt ldb #SS.Reset os9 I$SetStt - lbcs L00BB + lbcs Exit leax >u00AF,u lbra L0816 -L0586 lda <u0002 +L0586 lda <PathNm os9 I$Close - leax <u0047,u - lda #$01 + leax <DevPath,u + lda #READ. os9 I$Open lbcs L0669 - sta <u0002 + sta <PathNm leax >u00AF,u ldy #$0100 os9 I$Read lbcs L0669 - lda <u0002 + lda <PathNm os9 I$Close - leax <u0047,u - lda #$03 + leax <DevPath,u + lda #UPDAT. os9 I$Open lbcs L0669 - sta <u0002 + sta <PathNm rts L05BC lda <u001B clr <u0043 @@ -817,12 +829,13 @@ beq L05DB L05C4 leax >Verify,pcr ldy #VerifyLen - lbsr L027C + lbsr GetYN anda #$DF - cmpa #$59 + cmpa #'Y beq L05DB - cmpa #$4E + cmpa #'N bne L05C4 + sta <u0043 L05DB ldd <u0019 std <u0015 @@ -834,7 +847,7 @@ std <u0030 stb <u002F sta <u003A - leax >u01AF,u + leax >DDBuf,u stx <u0036 lbsr L080E leax >$0100,x @@ -842,7 +855,7 @@ clra ldb #$01 std <u0032 - lda <u0025 + lda <ClustSz sta <u0029 clr <u0028 clra @@ -852,7 +865,7 @@ addd #$0001 L0611 addd #$0009 std <u002B - lda <u0025 + lda <ClustSz L0618 lsra bcs L0629 lsr <u002B @@ -864,7 +877,7 @@ bra L0618 L0629 ldb <u002C stb <u002D - lda <u0025 + lda <ClustSz mul std <u002B subd #$0001 @@ -876,7 +889,7 @@ L0640 stb <u002A L0642 tst <u0043 bne L0674 - lda <u0002 + lda <PathNm leax >u00AF,u ldy #$0100 os9 I$Read @@ -893,7 +906,7 @@ L0669 leax >BadSect,pcr L066D lbsr L0272 clrb - lbra L00BB + lbra Exit L0674 ldd <u0008 addd #$0001 std <u0008 @@ -933,7 +946,7 @@ leax $01,x stx <u0034 L06C9 clr <u0028 - lda <u0025 + lda <ClustSz sta <u0029 L06CF ldb <u002F ldx <u0030 @@ -949,7 +962,7 @@ lbra L0642 L06E7 lda #$FF sta <u0028 - leay >u01AF,u + leay >DDBuf,u L06EF cmpy <u0036 beq L0733 bsr L06F8 @@ -967,7 +980,7 @@ cmpx <u0038 bne L071A bsr L0777 - leax >u01AF,u + leax >DDBuf,u stx <u0036 lbsr L080E L071A rts @@ -989,7 +1002,7 @@ leax >NumGood,pcr ldy #NumGoodLen lbsr L0276 - ldb <u0025 + ldb <ClustSz clra ldx <u0034 pshs x,a @@ -1022,7 +1035,7 @@ ldb #$01 cmpd <u0032 bne L0792 - leax >u01AF,u + leax >DDBuf,u clra ldb <u002D tfr d,y @@ -1030,7 +1043,7 @@ os9 F$AllBit lbcs L0669 L0792 lbsr L0824 - leax >u01AF,u + leax >DDBuf,u bsr L0816 ldd <u0022 cmpd <u002F @@ -1088,10 +1101,10 @@ decb bne L0810 rts -L0816 lda <u0002 +L0816 lda <PathNm ldy #$0100 os9 I$Write - lbcs L00BB + lbcs Exit rts L0824 clra ldb <u0032 @@ -1099,10 +1112,10 @@ lda <u0033 clrb tfr d,u -L082E lda <u0002 +L082E lda <PathNm os9 I$Seek ldu <u0000 - lbcs L00BB + lbcs Exit rts L083A ldx <u002F lda <u0031 @@ -1170,7 +1183,8 @@ L08CD puls pc,y,b,a L08CF orcc #$04 puls pc,y,b,a -L08D3 lda #$02 + +ErrExit lda #$02 os9 F$PErr leax <HelpMsg,pcr ldy #$0154
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/cmds/format_d64.asm Tue Jul 09 21:05:30 2002 +0000 @@ -0,0 +1,1236 @@ +******************************************************************** +* Format - Initialize disk media +* +* $Id$ +* +* Ed. Comments Who YY/MM/DD +* ------------------------------------------------------------------ +* 18 Original Dragon Data distribution version + +* The Dragon edition is slightly different from the Color Computer's +* Even though the strings "Change from 96tpi to 48tpi? " +* and "Double sided? " are in here Dragon doesn't use them. + + nam Format + ttl Initialize disk media + +* Disassembled 02/07/09 18:53:41 by Disasm v1.6 (C) 1988 by RML + + ifp1 + use defsfile + endc +tylg set Prgrm+Objct +atrv set ReEnt+rev +rev set $01 + mod eom,name,tylg,atrv,start,size +u0000 rmb 1 +u0001 rmb 1 +PathNm rmb 1 +u0003 rmb 1 +u0004 rmb 1 +u0005 rmb 2 +u0007 rmb 1 +u0008 rmb 1 +u0009 rmb 1 +u000A rmb 1 +u000B rmb 1 +u000C rmb 2 +u000E rmb 1 +u000F rmb 1 +u0010 rmb 1 +u0011 rmb 1 +u0012 rmb 1 +u0013 rmb 2 +u0015 rmb 1 +u0016 rmb 1 +u0017 rmb 1 +u0018 rmb 1 +u0019 rmb 1 +u001A rmb 1 +u001B rmb 1 +u001C rmb 1 +u001D rmb 2 +u001F rmb 1 +u0020 rmb 2 +u0022 rmb 1 +u0023 rmb 1 +u0024 rmb 1 +ClustSz rmb 1 +u0026 rmb 1 +u0027 rmb 1 +u0028 rmb 1 +u0029 rmb 1 +u002A rmb 1 +u002B rmb 1 +u002C rmb 1 +u002D rmb 2 +u002F rmb 1 +u0030 rmb 1 +u0031 rmb 1 +u0032 rmb 1 +u0033 rmb 1 +u0034 rmb 2 +u0036 rmb 2 +u0038 rmb 2 +u003A rmb 1 +u003B rmb 2 +u003D rmb 2 +u003F rmb 4 +u0043 rmb 1 +u0044 rmb 2 +u0046 rmb 1 +DevPath rmb 1 Contains "/" +Device rmb 13 +u0055 rmb 15 +u0064 rmb 3 +u0067 rmb 32 +u0087 rmb 40 +u00AF rmb 14 +u00BD rmb 12 +DateBf rmb 5 +u00CE rmb 9 +u00D7 rmb 17 +u00E8 rmb 6 +u00EE rmb 177 +u019F rmb 2 +u01A1 rmb 2 +u01A3 rmb 12 +DDBuf rmb 256 +u02AF rmb 3 +u02B2 rmb 9924 +u2976 rmb 451 +size equ . +name fcs /Format/ + fcb $12 +L0014 fcb $00 + fcb $00 +L0016 fcb $00 + fcb $00 +L0018 fcb $00 + fcb $00 +L001A fcb $80 + fcb $E5 e + fcb $80 + fcb $E5 e + fcb $00 + fcb $00 +L0020 fcb $01 + fcb $00 + fcb $28 ( + fcb $FF + fcb $06 + fcb $00 + fcb $01 + fcb $FC + fcb $0C + fcb $FF + fcb $00 + fcb $00 + fcb $06 + fcb $00 + fcb $01 + fcb $FE + fcb $04 + fcb $00 + fcb $01 + fcb $F7 w + fcb $0A + fcb $FF + fcb $06 + fcb $00 + fcb $01 + fcb $FB + fcb $80 + fcb $E5 e + fcb $80 + fcb $E5 e + fcb $01 + fcb $F7 w + fcb $0A + fcb $FF + fcb $00 + fcb $00 + fcb $FF + fcb $00 + fcb $43 C + fcb $01 + fcb $28 ( +L0049 fcb $50 P + fcb $4E N + fcb $0C + fcb $00 + fcb $03 + fcb $F6 v + fcb $01 + fcb $FC + fcb $20 + fcb $4E N + fcb $00 + fcb $00 + fcb $0C + fcb $00 + fcb $03 + fcb $F5 u + fcb $01 + fcb $FE + fcb $04 + fcb $00 + fcb $01 + fcb $F7 w + fcb $16 + fcb $4E N + fcb $0C + fcb $00 + fcb $03 + fcb $F5 u + fcb $01 + fcb $FB + fcb $80 + fcb $E5 e + fcb $80 + fcb $E5 e + fcb $01 + fcb $F7 w + fcb $16 + fcb $4E N + fcb $00 + fcb $00 + fcb $4E N + fcb $00 + fcb $90 + fcb $01 + fcb $52 R +L0076 fcb $20 + fcb $4E N + fcb $00 + fcb $00 + fcb $08 + fcb $00 + fcb $03 + fcb $F5 u + fcb $01 + fcb $FE + fcb $04 + fcb $00 + fcb $01 + fcb $F7 w + fcb $16 + fcb $4E N + fcb $0C + fcb $00 + fcb $03 + fcb $F5 u + fcb $01 + fcb $FB + fcb $80 + fcb $E5 e + fcb $80 + fcb $E5 e + fcb $01 + fcb $F7 w + fcb $18 + fcb $4E N + fcb $00 + fcb $00 + fcb $4E N + fcb $00 + fcb $2C , + fcb $01 + fcb $50 P +start equ * + stu <u0000 + bsr L00BE + bsr L00CF + bsr L011A + lbsr L0295 + lbsr AskBoth + lbsr L04A9 + lbsr L0589 + lbsr L05BF + lbsr L07C0 + ldu <u0044 + os9 I$Detach + clrb +Exit os9 F$Exit + +L00BE leay PathNm,u + pshs y + leay >u00AF,u +L00C6 clr ,-y + cmpy ,s + bhi L00C6 + puls pc,y + +L00CF lda ,x+ + cmpa #'/ + beq L00DA +L00D5 ldb #E$BPNam + lbra ErrExit +L00DA os9 F$PrsNam + lbcs ErrExit + lda #'/ + cmpa ,y + beq L00D5 + sty <u0020 +* +* Copy device name from arg to DevPath + leay <DevPath,u +L00ED sta ,y+ + lda ,x+ + decb + bpl L00ED + leax <Device,u + lda #$20 + sta ,y + + clra 0 = Use device capabilities + os9 I$Attach + lbcs ErrExit + stu <u0044 + ldu <u0000 + lda #$40 + ldb #$20 + std ,y + lda #WRITE. + leax <DevPath,u + os9 I$Open + bcs Exit + sta <PathNm + rts +L011A bsr L0122 + bsr L015D + lbsr L0216 + rts + +L0122 leax >DDBuf,u + clrb + os9 I$GetStt + bcs Exit + ldb $07,x + stb <u0012 + ldb $04,x + pshs b + andb #$01 + stb <u0010 + puls b + lsrb + andb #$01 + stb <u0011 + ldd $05,x + std <u0013 + ldb $03,x + stb <u001B + andb #$20 + stb <u0046 + ldd $09,x + std <u0017 + ldd $0B,x + std <u0019 + ldb $0D,x + stb <u001F + ldb #$01 + stb <ClustSz + clrb + rts +L015D ldx <u0020 +L015F leay >L0188,pcr + bsr L0176 + bcs L017F + pshs b,a + ldd $02,y + leay d,y + puls b,a + jsr ,y + bcc L015F + lbra Exit +L0176 lda ,x+ +L0178 cmpa ,y + bne L0180 + ldb $01,y + clra +L017F rts +L0180 leay $04,y + tst ,y + bne L0178 + coma + rts +L0188 fdb $5259,$002c,$7259,$0028 + fdb $2200,$002d,$3a00,$005d,$4300,$0022,$6300,$001e + fdb $2800,$0013,$2900,$000f,$2c00,$000b,$2000,$0007 + fdb $00d7,$1039,$d71c,$39d7,$1239,$0c46,$3931,$c867 + + ldb #$20 +L01C2 lda ,x+ + cmpa #$22 + beq L01D9 + sta ,y+ + decb + bne L01C2 +L01CD ldb ,x+ + cmpb #$22 + beq L01DF + cmpb #$20 + bcc L01CD + bra L01DF +L01D9 lda #$20 + cmpb #$20 + beq L01E3 +L01DF leay -$01,y + lda ,y +L01E3 adda #$80 + sta ,y + clrb + rts + lbsr L08AF + ldd <u001D + std <u0013 + rts + lbsr L08AF + ldd <u001D + tsta + beq L01FB + ldb #$01 +L01FB stb <u001F +L01FD rts + lbsr L08AF + ldd <u001D + tsta + beq L0208 + ldb #$01 +L0208 stb <ClustSz + negb + decb + andb <ClustSz + beq L0214 + ldb #$01 + stb <ClustSz +L0214 clrb + rts +L0216 leax >Title,pcr + lbsr L0272 + leay >DDBuf,u + ldx $0B,y + tst <u0010 + beq L0229 + ldx $09,y +L0229 stx <u0017 + leax >FmtMsg,pcr + ldy #FmtMLen + lbsr L0276 + leax <DevPath,u + tfr x,y +L023B lda ,y+ + cmpa #$40 + bne L023B + pshs y + lda #$0D + sta -$01,y + lbsr L0272 + puls y + lda #$40 + sta -$01,y + lda <u001C + bne L01FD +L0254 leax >Query,pcr + ldy #QueryLen + lbsr GetYN + anda #$DF + cmpa #'Y + beq L01FD + clrb + cmpa #'N + lbeq Exit + bra L0254 +L026E leax >HelpCR,pcr +L0272 ldy #$0050 +L0276 lda #$01 + os9 I$WritLn + rts +* +* Read a one-byte answer +* +GetYN pshs u,y,x,b,a + bsr L0276 + leax ,s + ldy #$0001 + clra + os9 I$Read + lbcs Exit + bsr L026E + puls u,y,x,b,a + anda #$7F + rts + +L0295 leax >L001A,pcr + stx <u000A + ldb <u001B + bitb #$C0 + bne L02B9 + ldb <u0046 + beq L02AB + leax >L0076,pcr + bra L02B9 +L02AB leax >L0020,pcr + stx <u000A + tst <u0010 + beq L02B9 + leax >L0049,pcr +L02B9 stx <u000C + clra + ldb <u0012 + tfr d,y + clrb + ldx <u0013 + bsr L0303 + exg d,x + subd #$0001 + bcc L02CE + leax -$01,x +L02CE exg d,x + ldy <u0017 + bsr L0303 + exg d,x + addd <u0019 + std <u0023 + exg d,x + adcb #$00 + stb <u0022 + lda #$08 + pshs a + ldx <u0023 + ldb <u0022 + bsr L034C + lda <ClustSz + pshs a + bsr L034C + tstb + beq L02FE + leax >ClustMsg,pcr + lbsr L0272 + lbra L0528 +L02FE leas $02,s + stx <u0026 + rts +L0303 lda #$08 +L0305 clr ,-s + deca + bne L0305 + sty ,s + stb $02,s + stx $03,s +L0311 ldd ,s + beq L0334 + lsra + rorb + std ,s + bcc L0327 + ldd $03,s + addd $06,s + std $06,s + lda $02,s + adca $05,s + sta $05,s +L0327 ldd $03,s + lslb + rola + std $03,s + lda $02,s + rola + sta $02,s + bra L0311 +L0334 leas $05,s + puls pc,x,b +L0338 pshs x,b + lsr ,s + ror $01,s + ror $02,s + puls x,b + exg d,x + adcb #$00 + adca #$00 + exg d,x + adcb #$00 +L034C lsr $02,s + bne L0338 + rts + +AskBoth tst <u001B + bpl L036B + leax >Both,pcr + ldy #BothLen + lbsr GetYN + anda #$DF + cmpa #'Y + beq L036B + cmpa #'N + bne AskBoth + rts + +L036B lda <PathNm + ldb #SS.Reset + os9 I$SetStt + lbcs Exit + ldd #$0000 + std <u0003 + inca + sta <u0007 +L037E clr <u0005 +L0380 bsr L03DA + leax >u00AF,u + ldu <u0003 + clrb + tst <u0010 + beq L039B + tst <u0046 + bne L0399 + tst <u0004 + bne L0399 + tst <u0005 + beq L039B +L0399 orb #$02 +L039B tst <u0011 + beq L03A1 + orb #$04 +L03A1 lda <u0005 + beq L03A7 + orb #$01 +L03A7 tfr d,y + lda <PathNm + ldb #SS.WTrk + os9 I$SetStt + lbcs Exit + ldu <u0000 + ldb <u0005 + incb + stb <u0005 + cmpb <u0012 + bcs L0380 + ldd <u0003 + addd #$0001 + std <u0003 + cmpd <u0013 + bcs L037E + rts +L03CC ldy <u000E +L03CF ldd ,y++ + beq L03E9 +L03D3 stb ,x+ + deca + bne L03D3 + bra L03CF +L03DA lda <u001B + bita #$C0 + beq L03EA + ldy <u000C + leax >u00AF,u + bsr L03CF +L03E9 rts +L03EA ldy <u000C + ldb <u0018 + tst <u0046 + bne L0400 + tst <u0004 + bne L0400 + tst <u0005 + bne L0400 + ldy <u000A + ldb <u001A +L0400 sty <u000E + stb <u0009 + stb <u0016 + bsr L0466 + leax >u00AF,u + bsr L03CF + sty <u000E +L0412 bsr L03CC + dec <u0009 + bne L0412 + lda ,y+ + sty <u000E + stx <u003B + leay >u2976,u + sty <u001D + tfr a,b +L0428 std ,x++ + cmpx <u001D + bcs L0428 + ldy <u000E + ldd ,y++ + std <u003D + ldd ,y + std <u003F + clr <u0009 + leax >u00AF,u + ldd <u003D + leay >u0087,u +L0445 leax d,x + ldd <u0004 + std ,x + ldb <u0009 + lda b,y + incb + stb <u0009 + ldb <u0007 + tst <u0046 + beq L0459 + inca +L0459 std $02,x + lda <u0009 + cmpa <u0016 + bcc L0465 + ldd <u003F + bra L0445 +L0465 rts +L0466 pshs y,b + tfr b,a + ldb <u0004 + cmpb #$01 + bhi L0492 + leax >u0087,u + leay a,x + ldb <u001F + bne L0481 +L047A leax >Abort,pcr + lbra L0676 +L0481 cmpb <u0016 + bhi L047A + nega + pshs y,x,b,a + clra +L0489 sta ,x + inca + cmpa <u0016 + bne L0494 + leas $06,s +L0492 puls pc,y,b +L0494 ldb <u001F + abx + cmpx $04,s + bcs L049F + ldb ,s + leax b,x +L049F cmpx $02,s + bne L0489 + leax $01,x + stx $02,s + bra L0489 +L04A9 lbsr L081B + ldd <u0023 + std $01,x DD.TOT+1 + ldb <u0022 + stb ,x DD.TOT? + ldd <u0017 + std <$11,x DD.SPT? + stb $03,x DD.TKS? + lda <ClustSz + sta $07,x DD.BIT+1 + clra + ldb <u0026 + tst <u0027 + beq L04C9 + addd #$0001 +L04C9 addd #$0001 + addd #$0010 + std $09,x DD.DIR? + clra + tst <u0010 + beq L04D8 + ora #$02 +L04D8 ldb <u0012 + cmpb #$01 + beq L04E0 + ora #$01 +L04E0 tst <u0011 + beq L04E6 + ora #$04 +L04E6 sta <$10,x DD.FMT? + ldd <u0026 + std $04,x + lda #$FF + sta $0D,x Is FF always put in DD.ATT? + leax >DateBf,u + os9 F$Time + leax >u00CE,u + leay <u0067,u + tst ,y + beq L050B +L0503 lda ,y+ + sta ,x+ + bpl L0503 + bra L053E +L050B leax >DName,pcr + ldy #DNameLen + lbsr L0276 + leax >u00CE,u + ldy #$0021 + clra + os9 I$ReadLn + bcc L052F + cmpa #$D3 + bne L050B +L0528 leax >Aborted,pcr + lbra L0676 +L052F tfr y,d + leax d,x + clr ,-x + decb + beq L050B + lda ,-x + ora #$80 + sta ,x +L053E leax >DateBf,u + leay <$40,x + pshs y + ldd #$0000 +L054A addd ,x++ + cmpx ,s + bcs L054A + leas $02,s + std >u00BD,u + ldd >L0014,pcr + std >u019F,u + ldd >L0016,pcr + std >u01A1,u + ldd >L0018,pcr + std >u01A3,u + lda <PathNm + ldb #SS.Opt + leax >u00EE,u + os9 I$GetStt + ldb #SS.Reset + os9 I$SetStt + lbcs Exit + leax >u00AF,u + lbra L0827 +L0589 lda <PathNm + os9 I$Close + leax <DevPath,u + lda #READ. + os9 I$Open + lbcs L0672 + sta <PathNm + leax >u00AF,u + ldy #$0100 + os9 I$Read + lbcs L0672 + lda <PathNm + os9 I$Close + leax <DevPath,u + lda #UPDAT. + os9 I$Open + lbcs L0672 + sta <PathNm + rts +L05BF lda <u001B + clr <u0043 + bita #$80 + beq L05DE +L05C7 leax >Verify,pcr + ldy #VerifyLen + lbsr GetYN + anda #$DF + cmpa #'Y + beq L05DE + cmpa #'N + bne L05C7 + + sta <u0043 +L05DE ldd <u0019 + std <u0015 + clra + clrb + std <u0034 + std <u0003 + std <u0008 + std <u0030 + stb <u002F + sta <u003A + leax >DDBuf,u + stx <u0036 + lbsr L081F + leax >$0100,x + stx <u0038 + clra + ldb #$01 + std <u0032 + lda <ClustSz + sta <u0029 + clr <u0028 + clra + ldb <u0026 + tst <u0027 + beq L0614 + addd #$0001 +L0614 addd #$0009 + addd #$0010 + std <u002B + lda <ClustSz +L061E lsra + bcs L062F + lsr <u002B + ror <u002C + bcc L061E + inc <u002C + bne L061E + inc <u002B + bra L061E +L062F ldb <u002C + stb <u002D + lda <ClustSz + mul + std <u002B + subd #$0001 + subb <u0026 + sbca #$00 + subd #$0010 + tst <u0027 + beq L0649 + subd #$0001 +L0649 stb <u002A +L064B tst <u0043 + bne L067D + lda <PathNm + leax >u00AF,u + ldy #$0100 + os9 I$Read + bcc L067D + os9 F$PErr + lbsr L084B + lda #$FF + sta <u0028 + tst <u002F + bne L067D + ldx <u0030 + cmpx <u002B + bhi L067D +L0672 leax >BadSect,pcr +L0676 lbsr L0272 + clrb + lbra Exit +L067D ldd <u0008 + addd #$0001 + std <u0008 + cmpd <u0015 + bcs L06C2 + clr <u0008 + clr <u0009 + tst <u0043 + bne L06B7 + lda #$20 + pshs a + lda <u0004 + lbsr L0724 + pshs b,a + lda <u0003 + lbsr L0724 + pshs b + tfr s,x + ldy #$0004 + lbsr L0276 + lda $02,s + cmpa #$46 + bne L06B5 + lbsr L026E +L06B5 leas $04,s +L06B7 ldd <u0003 + addd #$0001 + std <u0003 + ldd <u0017 + std <u0015 +L06C2 dec <u0029 + bne L06D8 + bsr L0701 + tst <u0028 + bne L06D2 + ldx <u0034 + leax $01,x + stx <u0034 +L06D2 clr <u0028 + lda <ClustSz + sta <u0029 +L06D8 ldb <u002F + ldx <u0030 + leax $01,x + bne L06E1 + incb +L06E1 cmpb <u0022 + bcs L06E9 + cmpx <u0023 + bcc L06F0 +L06E9 stb <u002F + stx <u0030 + lbra L064B +L06F0 lda #$FF + sta <u0028 + leay >DDBuf,u +L06F8 cmpy <u0036 + beq L073C + bsr L0701 + bra L06F8 +L0701 ldx <u0036 + lda <u0028 + rora + rol ,x+ + inc <u003A + lda <u003A + cmpa #$08 + bcs L0723 + clr <u003A + stx <u0036 + cmpx <u0038 + bne L0723 + bsr L0780 + leax >DDBuf,u + stx <u0036 + lbsr L081F +L0723 rts +L0724 tfr a,b + lsra + lsra + lsra + lsra + andb #$0F + addd #$3030 + cmpa #$39 + bls L0735 + adda #$07 +L0735 cmpb #$39 + bls L073B + addb #$07 +L073B rts +L073C lbsr L026E + leax >NumGood,pcr + ldy #NumGoodLen + lbsr L0276 + ldb <ClustSz + clra + ldx <u0034 + pshs x,a +L0751 lsrb + bcs L075C + lsl $02,s + rol $01,s + rol ,s + bra L0751 +L075C puls x,a + ldb #$0D + pshs b + tfr d,y + tfr x,d + tfr b,a + bsr L0724 + pshs b,a + tfr x,d + bsr L0724 + pshs b,a + tfr y,d + bsr L0724 + pshs b,a + tfr s,x + lbsr L0272 + leas $07,s + rts +L0780 pshs y + clra + ldb #$01 + cmpd <u0032 + bne L079B + leax >DDBuf,u + clra + ldb <u002D + tfr d,y + clrb + os9 F$AllBit + lbcs L0672 +L079B lbsr L0835 + leax >DDBuf,u + lbsr L0827 + ldd <u0022 + cmpd <u002F + bcs L07B7 + bhi L07B4 + ldb <u0024 + cmpb <u0031 + bcc L07B7 +L07B4 lbsr L084B +L07B7 ldd <u0032 + addd #$0001 + std <u0032 + puls pc,y +L07C0 ldd #$0010 + addd <u0032 + std <u0032 + bsr L0835 + leax >u02AF,u + bsr L081F + leax >u02B2,u + os9 F$Time + leax >u02AF,u + lda #$BF + sta ,x + lda #$02 + sta $08,x + clra + ldb #$40 + std $0B,x + ldb <u002A + decb + stb <$14,x + ldd <u0032 + addd #$0001 + std <$11,x + bsr L0827 + bsr L081B + ldd #$2EAE + std ,x + stb <$20,x + ldd <u0032 + std <$1E,x + std <$3E,x + bsr L0827 + bsr L081B + ldb <u002A +L080F decb + bne L0813 + rts +L0813 pshs b + bsr L0827 + puls b + bra L080F +L081B leax >u00AF,u +L081F clra + clrb +L0821 sta d,x + decb + bne L0821 + rts +L0827 lda <PathNm + ldy #$0100 + os9 I$Write + lbcs Exit + rts +L0835 clra + ldb <u0032 + tfr d,x + lda <u0033 + clrb + tfr d,u +L083F lda <PathNm + os9 I$Seek + ldu <u0000 + lbcs Exit + rts +L084B ldx <u002F + lda <u0031 + clrb + addd #$0100 + tfr d,u + bcc L083F + leax $01,x + bra L083F + ldd ,y + leau >u00AF,u + leax >L08A3,pcr + ldy #$2F20 +L0869 leay >$0100,y + subd ,x + bcc L0869 + addd ,x++ + pshs b,a + ldd ,x + tfr y,d + beq L0891 + ldy #$2F30 + cmpd #$3020 + bne L088B + ldy #$2F20 + tfr b,a +L088B sta ,u+ + puls b,a + bra L0869 +L0891 sta ,u+ + lda #$0D + sta ,u + ldu <u0000 + leas $02,s + leax >u00AF,u + lbsr L0272 + rts +L08A3 + fdb $2710,$03e8,$0064,$000a,$0001,$0000 + +L08AF ldd #$0000 +L08B2 bsr L08C2 + bcs L08BC + bne L08B2 + std <u001D + bne L08C1 +L08BC ldd #$0001 + std <u001D +L08C1 rts +L08C2 pshs y,b,a + ldb ,x+ + subb #$30 + cmpb #$0A + bcc L08E0 + lda #$00 + ldy #$000A +L08D2 addd ,s + bcs L08DE + leay -$01,y + bne L08D2 + std ,s + andcc #$FB +L08DE puls pc,y,b,a +L08E0 orcc #$04 + puls pc,y,b,a + +ErrExit lda #$02 + os9 F$PErr + leax <HelpMsg,pcr + ldy #$0154 + lda #$02 + os9 I$WritLn + clrb + os9 F$Exit + +Title fcb C$LF + fcc "DRAGON FORMAT UTILITY" +HelpCR fcb C$CR +HelpMsg fcc "Use: FORMAT /devname <opts>" + fcb C$LF + fcc " opts: R - Ready" + fcb C$LF + fcc / "disk name"/ + fcb C$LF,C$CR +FmtMsg fcc "Formatting drive " +FmtMLen equ *-FmtMsg + +Query fcc "y (yes) or n (no)" + fcb C$LF + fcc "Ready? " +QueryLen equ *-Query + +Abort fcc "ABORT Interleave value out of range" + fcb C$CR +DName fcc "Disk name: " +DNameLen equ *-DName + fcc "How many Cylinders (Tracks?) : " +BadSect fcc "Bad system sector, " +Aborted fcc "FORMAT ABORTED" + fcb C$CR +ClustMsg fcc "Cluster size mismatch" + fcb C$CR + fcc "Double density? " +TPIChg fcc "Change from 96tpi to 48tpi? " +DSided fcc "Double sided? " +NumGood fcc "Number of good sectors: $" +NumGoodLen equ *-NumGood +Both fcc "Both PHYSICAL and LOGICAL format? " +BothLen equ *-Both +Verify fcc "Physical Verify desired? " +VerifyLen equ *-Verify + + emod +eom equ * + end