mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.1 : FORMAT, Added cmd line switch to specify catalog size in block.
allow saving 3 blocks (1,5k) on 5.25 floppies.
This commit is contained in:
parent
df9f1d6ac0
commit
34d6dbf42a
Binary file not shown.
Binary file not shown.
Binary file not shown.
129
BIN/FORMAT.S.txt
129
BIN/FORMAT.S.txt
@ -41,14 +41,15 @@ L.MSG.ERR .DA MSG.ERR
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
beq .99
|
||||
|
||||
beq .90
|
||||
|
||||
.1 >INC.G ArgIndex
|
||||
|
||||
>SYSCALL GetArg.A
|
||||
bcs .7
|
||||
bcc .11
|
||||
jmp .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
.11 >STYA ZPPtr1
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
@ -56,20 +57,24 @@ CS.INIT ldy #S.PS.ARGC
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq .99
|
||||
beq .90
|
||||
|
||||
ldx OptionList
|
||||
cmp #'0'
|
||||
bcc .20
|
||||
cmp #'9'+1
|
||||
bcs .20
|
||||
|
||||
and #$0F
|
||||
>STA.G CatSize
|
||||
bra .1
|
||||
|
||||
.20 ldx OptionList
|
||||
|
||||
.2 cmp OptionList,x
|
||||
beq .3
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.99 >LDYA L.MSG.USAGE
|
||||
>SYSCALL PrintF.YA
|
||||
lda #K.E.SYN
|
||||
sec
|
||||
rts
|
||||
.90 bra .99
|
||||
|
||||
.3 ldy OptionVars-1,x
|
||||
lda #$80
|
||||
@ -99,18 +104,63 @@ CS.INIT ldy #S.PS.ARGC
|
||||
>PUSHEA.G VolName
|
||||
>SYSCALL StrCpy
|
||||
jmp .1 success, scan for any other args
|
||||
|
||||
.8 >LDYA L.LIBBLKDEV
|
||||
>SYSCALL LoadLib.YA
|
||||
sta hLIBBLKDEV
|
||||
|
||||
.7 >LDA.G VolName
|
||||
* lda (pPs)
|
||||
* ora #S.PS.F.EVENT Now accept events
|
||||
* sta (pPs)
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 >LDYA L.MSG.USAGE
|
||||
>SYSCALL PrintF.YA
|
||||
lda #K.E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN jsr CS.RUN.InitCat
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.BuildCat
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.WriteCat
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.OK
|
||||
>SYSCALL PrintF.YA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>PUSHA
|
||||
>LDYA L.MSG.ERR
|
||||
>SYSCALL PrintF.YA
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.InitCat >LDA.G CatSize
|
||||
bne .1
|
||||
lda #4
|
||||
sta (pData),y
|
||||
|
||||
.1 >LDA.G VolName
|
||||
bne .8 Volume name ok
|
||||
|
||||
ldx #$ff
|
||||
ldy #VolName-1
|
||||
|
||||
.71 inx
|
||||
.2 inx
|
||||
iny
|
||||
lda BLANK,x
|
||||
sta (pData),y
|
||||
bne .71
|
||||
bne .2
|
||||
|
||||
lda A2osX.TIMER16
|
||||
jsr A2CharAX
|
||||
@ -147,35 +197,7 @@ CS.INIT ldy #S.PS.ARGC
|
||||
lda #0
|
||||
sta (pData),y
|
||||
|
||||
.8 >LDYA L.LIBBLKDEV
|
||||
>SYSCALL LoadLib.YA
|
||||
sta hLIBBLKDEV
|
||||
|
||||
* lda (pPs)
|
||||
* ora #S.PS.F.EVENT Now accept events
|
||||
* sta (pPs)
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN jsr CS.RUN.BuildCat
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.WriteCat
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.OK
|
||||
>SYSCALL PrintF.YA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>PUSHA
|
||||
>LDYA L.MSG.ERR
|
||||
>SYSCALL PrintF.YA
|
||||
pla
|
||||
sec
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.BuildCat >LDA.G hDev
|
||||
@ -210,7 +232,8 @@ CS.RUN.BuildCat >LDA.G hDev
|
||||
>SYSCALL PrintF.YA
|
||||
.99 bcs .9
|
||||
|
||||
>PUSHW.G SizeInBlocks
|
||||
jsr .7
|
||||
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.GetProDOSCatSize
|
||||
bcs .9
|
||||
|
||||
@ -221,7 +244,7 @@ CS.RUN.BuildCat >LDA.G hDev
|
||||
pla
|
||||
ply
|
||||
|
||||
>SYSCALL GetMem0.YA BufferSize
|
||||
>SYSCALL GetMem0.YA BufferSize
|
||||
bcs .9
|
||||
|
||||
phx
|
||||
@ -229,11 +252,17 @@ CS.RUN.BuildCat >LDA.G hDev
|
||||
pla
|
||||
>STA.G hBuf
|
||||
|
||||
>PUSHW.G SizeInBlocks
|
||||
jsr .7
|
||||
|
||||
>PUSHEA.G VolName
|
||||
>PUSHW.G BlkParams.Ptr
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
|
||||
.9 rts
|
||||
|
||||
.7 >PUSHW.G SizeInBlocks
|
||||
>PUSHB.G CatSize
|
||||
>PUSHB.G CatOptions
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WriteCat >PUSHB.G hDev
|
||||
>PUSHBI DEVMGR.WRITEBLOCK
|
||||
@ -297,7 +326,9 @@ CS.END
|
||||
OptionList >PSTR "Ll"
|
||||
OptionVars .DA #bLL,#bLL
|
||||
*--------------------------------------
|
||||
MSG.USAGE .AZ "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n -L : Low-Level Format\r\n"
|
||||
MSG.USAGE .AS "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n"
|
||||
.AS " -L : Low-Level Format\r\n"
|
||||
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
||||
MSG.OK .AZ "[OK]\r\n"
|
||||
MSG.ERR .AZ "[%h]\r\n"
|
||||
MSG.INIT .AZ "Formatting %s (%D Blks),Volname:%s..."
|
||||
@ -314,6 +345,8 @@ bLL .BS 1
|
||||
VolName .BS 16
|
||||
hDev .BS 5
|
||||
SizeInBlocks .BS 2
|
||||
CatSize .BS 1
|
||||
CatOptions .BS 1
|
||||
BlkCnt .BS 1
|
||||
BlkParams.Ptr .BS 2
|
||||
BlkParams.Num .BS 2
|
||||
|
@ -81,25 +81,26 @@ LIB.UNLOAD clc
|
||||
* Compute space needed for ProDOS Catalog
|
||||
* ## In :
|
||||
* PUSHW = DevSize (in 512b blocks)
|
||||
* PUSHB = Catalog Size (in blocks)
|
||||
* PUSHB = Options
|
||||
* ## Out :
|
||||
* X=BlockCount (max 22)
|
||||
* Y,A=BufSize (max $4400)
|
||||
*\--------------------------------------
|
||||
GetProDOSCatSize
|
||||
>PULLA
|
||||
pha
|
||||
>PULLA
|
||||
tax
|
||||
pla A=DevSizeLo
|
||||
>PULLB VolDirHdr.Options
|
||||
>PULLB VolDirHdr.CatSize
|
||||
>PULLW VolDirHdr.TB
|
||||
|
||||
GetProDOSCatSizeAX
|
||||
GetProDOSCatSize.I
|
||||
lda VolDirHdr.TB Get DevSizeLo
|
||||
clc for now, no partial bitmap blk to add
|
||||
|
||||
tay DevSize is xxxxxxxx00000000 ?
|
||||
beq .1
|
||||
sec
|
||||
|
||||
.1 txa Get DevSizeHI
|
||||
.1 lda VolDirHdr.TB+1 Get DevSizeHI
|
||||
bit #$0f DevSize is xxxx000000000000 ?
|
||||
beq .2
|
||||
sec
|
||||
@ -110,7 +111,9 @@ GetProDOSCatSizeAX
|
||||
lsr
|
||||
lsr
|
||||
plp
|
||||
adc #6 at least, 1(ProDOS)+1(SOS)+4(VolDir)
|
||||
inc +1 (ProDOS)
|
||||
inc +1 (SOS)
|
||||
adc VolDirHdr.CatSize +x (VolDir)
|
||||
tax X = Total blocks needed for header (used)
|
||||
asl A = Total pages needed to build catalog.
|
||||
rts
|
||||
@ -118,12 +121,14 @@ GetProDOSCatSizeAX
|
||||
* # BuildProDOSCat
|
||||
* ## In :
|
||||
* PUSHW = DevSize (in 512b blocks)
|
||||
* PUSHB = Catalog Size (in blocks)
|
||||
* PUSHB = Options
|
||||
* PUSHW = VolName (PSTR)
|
||||
* PUSHW = DstBuf (Zero filled)
|
||||
* Blk0 : ProDOS.BootBlk
|
||||
* Blk1 : SOS.BootBlk
|
||||
* Blk2,3,4,5 : Volume Directory
|
||||
* Blk6.... : Volume Bitmap (4096/Blk)
|
||||
* Blk2...n : Volume Directory
|
||||
* Blkn+1.. : Volume Bitmap (4096/Blk)
|
||||
* max devSize = 65535 -> max 16 Bitmap Blk
|
||||
* absolute MAX DstBuf size=
|
||||
* 7 for Disk II(280blk),3.5(1600),3.5HD(2880)
|
||||
@ -131,6 +136,12 @@ GetProDOSCatSizeAX
|
||||
*\--------------------------------------
|
||||
BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
>PULLW ZPPtr2 VolName
|
||||
|
||||
>PULLB VolDirHdr.Options
|
||||
>PULLB VolDirHdr.CatSize
|
||||
inc
|
||||
inc
|
||||
sta VolDirHdr.BMPtr
|
||||
>PULLW VolDirHdr.TB
|
||||
|
||||
ldx #3
|
||||
@ -140,7 +151,8 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
* Boot Code
|
||||
* Blk 0 : ProDOS Boot Code
|
||||
|
||||
>LDYA L.ProDOS.Boot
|
||||
>STYA ZPPtr3
|
||||
|
||||
@ -158,11 +170,28 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
dex
|
||||
bne .2
|
||||
|
||||
inc ZPPtr1+1 Skip Blk 2 (SOS boot code)
|
||||
* Blk 1 : (SOS boot code)
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1
|
||||
|
||||
* Directory Blocks
|
||||
* Blk 2 : First Directory Block
|
||||
|
||||
* ldy #0
|
||||
|
||||
stz VolDirHdr.Prev
|
||||
* stz VolDirHdr.Prev+1 always 0
|
||||
|
||||
lda #3 next block
|
||||
|
||||
ldx VolDirHdr.CatSize
|
||||
|
||||
dex
|
||||
bne .30
|
||||
txa
|
||||
|
||||
.30 sta VolDirHdr.next
|
||||
* stz VolDirHdr.next+1
|
||||
|
||||
.3 lda (ZPPtr2),y
|
||||
beq .31
|
||||
@ -183,38 +212,32 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
dey
|
||||
bpl .4
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Blk 3
|
||||
* Blk 3...n : additional Directory Blocks
|
||||
|
||||
lda #3 Actual Block ID
|
||||
ldy #2 next blk ptr
|
||||
|
||||
.41 inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Next Block
|
||||
|
||||
dex
|
||||
bmi .40
|
||||
|
||||
ldy #2
|
||||
|
||||
lda #2
|
||||
dec Previous Blk ID
|
||||
sta (ZPPtr1)
|
||||
lda #4
|
||||
sta (ZPPtr1),y
|
||||
inc
|
||||
inc next blk id
|
||||
phx
|
||||
plx
|
||||
bne .42
|
||||
txa
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Blk 4
|
||||
|
||||
lda #3
|
||||
sta (ZPPtr1)
|
||||
lda #5
|
||||
sta (ZPPtr1),y
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Blk 5
|
||||
|
||||
lda #4
|
||||
sta (ZPPtr1)
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1 Blk 6
|
||||
.42 sta (ZPPtr1),y
|
||||
bra .41
|
||||
|
||||
* BitMap Blocks : 0=Used 1=free
|
||||
|
||||
lda VolDirHdr.TB
|
||||
ldx VolDirHdr.TB+1
|
||||
jsr GetProDOSCatSizeAX X=blk used for boot/dir/bitmap
|
||||
.40 jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap
|
||||
|
||||
lda VolDirHdr.TB
|
||||
eor #$ff
|
||||
@ -412,15 +435,6 @@ DrvSelect pha
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
DiskII.OFS .HS 010305FF
|
||||
DiskII.SIG .HS 20000300
|
||||
|
||||
DrvSlt .BS 1
|
||||
TrkNum .BS 1
|
||||
*--------------------------------------
|
||||
Status .BS 1
|
||||
DrvSltInUse .BS 1
|
||||
Count .BS 2
|
||||
*--------------------------------------
|
||||
* TrkWriter
|
||||
* X = Slot Cn
|
||||
@ -527,17 +541,33 @@ ProDOS.Boot .HS 01.38.b0.03.4c.32.a1.86.43.c9.03.08.8a.29.70.4a
|
||||
.HS d0.e3.a0.7f.84.52.08.28.38.c6.52.f0.ce.18.08.88
|
||||
.HS f0.f5.bd.8c.c0.10.fb.00.00.00.00.00.00.00.00.00
|
||||
*--------------------------------------
|
||||
VolDirHdr .DA 0 pointer to previous block
|
||||
.DA 3 pointer to next block
|
||||
* Block 2 : First DIR block
|
||||
*--------------------------------------
|
||||
VolDirHdr
|
||||
VolDirHdr.Prev .BS 2 pointer to previous block
|
||||
VolDirHdr.Next .BS 2 pointer to next block
|
||||
VolDirHdr.Name .BS 16
|
||||
.HS 00.00.00.00.00.00.00.00
|
||||
VolDirHdr.CT .BS 4 Creation time
|
||||
.HS 01.00.C3.27.0D version/min version/access/EL/EPB
|
||||
.DA 0 File Count=0 (only VDH)
|
||||
.DA 6 bitmap pointer (Block 2..5 are Volume directory)
|
||||
VolDirHdr.BMPtr .BS 2 bitmap pointer (Block 2..n are Volume directory)
|
||||
VolDirHdr.TB .BS 2 Total Blocks
|
||||
VolDirHdr.size .EQ *-VolDirHdr
|
||||
*--------------------------------------
|
||||
VolDirHdr.Options .BS 1
|
||||
VolDirHdr.CatSize .BS 1
|
||||
*--------------------------------------
|
||||
DiskII.OFS .HS 010305FF
|
||||
DiskII.SIG .HS 20000300
|
||||
|
||||
DrvSlt .BS 1
|
||||
TrkNum .BS 1
|
||||
*--------------------------------------
|
||||
Status .BS 1
|
||||
DrvSltInUse .BS 1
|
||||
Count .BS 2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBBLKDEV.S
|
||||
ASM
|
||||
|
@ -234,6 +234,7 @@ note : '$VAR' does NOT expand Variable
|
||||
| CHGRP | In Progress | -C : Continue On Error | 0.9 |
|
||||
| | | -R : Recurse subdirectories | |
|
||||
| FORMAT | In Progress | -L : Low-Level Format | 0.9.1 |
|
||||
| | | -1..9 : Catalog Size (block count) | |
|
||||
| MD5 | In Progress | -D : String Input | 0.9.1 |
|
||||
| EDIT | Working | still missing : find/replace | 0.9.1 |
|
||||
| NSCUTIL | Working | Tool for setting time in NSC/DL1216E | 0.9 |
|
||||
|
Loading…
x
Reference in New Issue
Block a user