mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel version 0.9 : MEDIA reorganisation, FORMAT Cmd
This commit is contained in:
parent
c20ea8b40f
commit
5284913187
BIN
A2OSX.BUILD.po
BIN
A2OSX.BUILD.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
189
BIN/FORMAT.S.txt
189
BIN/FORMAT.S.txt
@ -34,7 +34,11 @@ CS.START cld
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBBLKDEV .DA LIBBLKDEV
|
||||
L.BlkParams.Ptr .DA BlkParams.Ptr
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.INIT .DA MSG.INIT
|
||||
L.MSG.OK .DA MSG.OK
|
||||
L.MSG.ERR .DA MSG.ERR
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >SYSCALL GetArgC
|
||||
@ -82,27 +86,58 @@ CS.INIT >SYSCALL GetArgC
|
||||
sta (pData),y
|
||||
bra .1
|
||||
|
||||
.4 lda (pData)
|
||||
bne .99 Already have a vol name...syntax error
|
||||
.4 ldy #hDev
|
||||
lda (pData),y
|
||||
bne .5 Already have a dev name...go get VolName
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #4
|
||||
bne .99 DevName must be DxDy
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL GetDevByNameYA
|
||||
bcs .99
|
||||
txa
|
||||
ldy #hDev
|
||||
sta (pData),y
|
||||
bra .1
|
||||
|
||||
.5 lda (ZPPtr1)
|
||||
cmp #16
|
||||
bcc .5
|
||||
lda #15
|
||||
.5 sta (ZPPtr1)
|
||||
bcs .99 VolName too long
|
||||
|
||||
tay
|
||||
|
||||
.6 lda (ZPPtr1),y
|
||||
sta (pData),y
|
||||
dey
|
||||
bne .6
|
||||
bpl .6
|
||||
|
||||
bra .1 success, scan for any other args
|
||||
|
||||
|
||||
|
||||
.7 lda (pData)
|
||||
bne .8 Volume name ok
|
||||
|
||||
lda A2osX.TIMER16
|
||||
jsr A2CharAX
|
||||
sta DefaultVolName+6
|
||||
stx DefaultVolName+7
|
||||
|
||||
lda A2osX.TIMER16+1
|
||||
jsr A2CharAX
|
||||
sta DefaultVolName+8
|
||||
stx DefaultVolName+9
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
jsr A2CharAX
|
||||
sta DefaultVolName+10
|
||||
stx DefaultVolName+11
|
||||
|
||||
lda A2osX.RANDOM16+1
|
||||
jsr A2CharAX
|
||||
sta DefaultVolName+12
|
||||
stx DefaultVolName+13
|
||||
|
||||
ldy DefaultVolName
|
||||
|
||||
.71 lda DefaultVolName,y
|
||||
@ -121,23 +156,113 @@ CS.INIT >SYSCALL GetArgC
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #bCANCEL
|
||||
lda (pData),y
|
||||
bmi .99
|
||||
CS.RUN jsr CS.RUN.BuildCat
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.WriteCat
|
||||
bcs .9
|
||||
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.99 lda #0
|
||||
>LDYA L.MSG.OK
|
||||
>SYSCALL CPrintFYA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>PUSHA
|
||||
>LDYA L.MSG.ERR
|
||||
>SYSCALL CPrintFYA
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.BuildCat ldy #hDev
|
||||
lda (pData),y
|
||||
>SYSCALL GetDevStatusA
|
||||
|
||||
bcs .99
|
||||
>STYA ZPPtr1
|
||||
ldy #S.DEVSTAT.SIZE
|
||||
lda (ZPPtr1),y
|
||||
sta BlockSize
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta BlockSize+1
|
||||
|
||||
ldy #hDev
|
||||
lda (pData),y
|
||||
>SYSCALL GetDevByIDA
|
||||
bcs .99
|
||||
|
||||
pha
|
||||
tya
|
||||
adc #S.DEV.NAME
|
||||
sta ZPPtr2
|
||||
pla
|
||||
adc /S.DEV.NAME
|
||||
sta ZPPtr2+1
|
||||
|
||||
>PUSHW pData
|
||||
>PUSHW BlockSize
|
||||
>PUSHW ZPPtr2
|
||||
|
||||
>LDYA L.MSG.INIT
|
||||
>SYSCALL CPrintFYA
|
||||
bcs .9
|
||||
|
||||
>PUSHW BlockSize
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.GetProDOSCatSize
|
||||
|
||||
.99 bcs .9
|
||||
stx BlkCnt
|
||||
|
||||
>PUSHYA BufferSize
|
||||
>PUSHBI S.MEM.F.INIT0
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
>STYA BlkParams.Ptr
|
||||
txa
|
||||
ldy #hBuf
|
||||
sta (pData),y
|
||||
|
||||
>PUSHW BlockSize
|
||||
>PUSHW pData
|
||||
>PUSHW BlkParams.Ptr
|
||||
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WriteCat stz BlkParams.Num
|
||||
stz BlkParams.Num+1
|
||||
|
||||
ldy #hDev
|
||||
lda (pData),y
|
||||
>SYSCALL GetDevByIDA
|
||||
bcs .9
|
||||
>STYA pDev
|
||||
|
||||
.1 >LDYA L.BlkParams.Ptr
|
||||
ldx #DEVMGR.WRITEBLOCK
|
||||
|
||||
>DEBUG
|
||||
jsr pDevJmp
|
||||
bcs .9
|
||||
inc BlkParams.Ptr+1
|
||||
inc BlkParams.Ptr+1
|
||||
inc BlkParams.Num
|
||||
dec BlkCnt
|
||||
bne .1
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBBLKDEV
|
||||
CS.QUIT ldy #hBuf
|
||||
lda (pData),y
|
||||
beq .1
|
||||
>SYSCALL FreeMemA
|
||||
|
||||
.1 lda hLIBBLKDEV
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLibA
|
||||
@ -145,6 +270,25 @@ CS.QUIT lda hLIBBLKDEV
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2CharAX pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 tax
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .8
|
||||
adc #6
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
OptionList >PSTR "L"
|
||||
@ -153,19 +297,24 @@ OptionVars .DA #bLL
|
||||
MSG.USAGE >CSTR "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n -L : Low-Level Format\r\n"
|
||||
MSG.OK >CSTR "[OK]\r\n"
|
||||
MSG.ERR >CSTR "[%h]\r\n"
|
||||
MSG.INIT >CSTR "Formatting %S (%D Blks),Volname:%S..."
|
||||
*--------------------------------------
|
||||
LIBBLKDEV >PSTR "libblkdev.o"
|
||||
DefaultVolName >PSTR "BLANK"
|
||||
DefaultVolName >PSTR "BLANKXXXXXXXX"
|
||||
ArgCount .BS 1
|
||||
ArgIndex .BS 1
|
||||
hLIBBLKDEV .BS 1
|
||||
BlockSize .BS 2
|
||||
hBuf .BS 1
|
||||
BlkCnt .BS 1
|
||||
BlkParams.Ptr .BS 2
|
||||
BlkParams.Num .BS 2
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
VolName .BS 16
|
||||
DevName .BS 4
|
||||
bCANCEL .BS 1
|
||||
hDev .BS 5
|
||||
bLL .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
|
@ -81,7 +81,7 @@ L.ProDOS.Boot .DA ProDOS.Boot
|
||||
* PUSHW = DevSize (in 512b blocks)
|
||||
* ## Out :
|
||||
* X=BlockCount (max 22)
|
||||
* A=PageCount (max 44)
|
||||
* Y,A=BufSize (max $4400)
|
||||
*\--------------------------------------
|
||||
GetProDOSCatSize
|
||||
>PULLAX A=DevSizeLo
|
||||
@ -250,7 +250,8 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
inc ZPPtr1+1
|
||||
bra .7
|
||||
|
||||
.88 rts
|
||||
.88 clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
*\--------------------------------------
|
||||
D2TrkRNIB
|
||||
@ -493,7 +494,38 @@ TrkWriter.Start lda D2ReadMode,x
|
||||
TrkWriter.Size .EQ *-TrkWriter.Start
|
||||
.EP
|
||||
*--------------------------------------
|
||||
ProDOS.Boot .BS 512
|
||||
ProDOS.Boot .HS 01 38 b0 03 4c 32 a1 86 43 c9 03 08 8a 29 70 4a
|
||||
.HS 4a 4a 4a 09 c0 85 49 a0 ff 84 48 28 c8 b1 48 d0
|
||||
.HS 3a b0 0e a9 03 8d 00 08 e6 3d a5 49 48 a9 5b 48
|
||||
.HS 60 85 40 85 48 a0 63 b1 48 99 94 09 c8 c0 eb d0
|
||||
.HS f6 a2 06 bc 1d 09 bd 24 09 99 f2 09 bd 2b 09 9d
|
||||
.HS 7f 0a ca 10 ee a9 09 85 49 a9 86 a0 00 c9 f9 b0
|
||||
.HS 2f 85 48 84 60 84 4a 84 4c 84 4e 84 47 c8 84 42
|
||||
.HS c8 84 46 a9 0c 85 61 85 4b 20 12 09 b0 68 e6 61
|
||||
.HS e6 61 e6 46 a5 46 c9 06 90 ef ad 00 0c 0d 01 0c
|
||||
.HS d0 6d a9 04 d0 02 a5 4a 18 6d 23 0c a8 90 0d e6
|
||||
.HS 4b a5 4b 4a b0 06 c9 0a f0 55 a0 04 84 4a ad 02
|
||||
.HS 09 29 0f a8 b1 4a d9 02 09 d0 db 88 10 f6 29 f0
|
||||
.HS c9 20 d0 3b a0 10 b1 4a c9 ff d0 33 c8 b1 4a 85
|
||||
.HS 46 c8 b1 4a 85 47 a9 00 85 4a a0 1e 84 4b 84 61
|
||||
.HS c8 84 4d 20 12 09 b0 17 e6 61 e6 61 a4 4e e6 4e
|
||||
.HS b1 4a 85 46 b1 4c 85 47 11 4a d0 e7 4c 00 20 4c
|
||||
.HS 3f 09 26 50 52 4f 44 4f 53 20 20 20 20 20 20 20
|
||||
.HS 20 20 a5 60 85 44 a5 61 85 45 6c 48 00 08 1e 24
|
||||
.HS 3f 45 47 76 f4 d7 d1 b6 4b b4 ac a6 2b 18 60 4c
|
||||
.HS bc 09 a9 9f 48 a9 ff 48 a9 01 a2 00 4c 79 f4 20
|
||||
.HS 58 fc a0 1c b9 50 09 99 ae 05 88 10 f7 4c 4d 09
|
||||
.HS aa aa aa a0 d5 ce c1 c2 cc c5 a0 d4 cf a0 cc cf
|
||||
.HS c1 c4 a0 d0 d2 cf c4 cf d3 a0 aa aa aa a5 53 29
|
||||
.HS 03 2a 05 2b aa bd 80 c0 a9 2c a2 11 ca d0 fd e9
|
||||
.HS 01 d0 f7 a6 2b 60 a5 46 29 07 c9 04 29 03 08 0a
|
||||
.HS 28 2a 85 3d a5 47 4a a5 46 6a 4a 4a 85 41 0a 85
|
||||
.HS 51 a5 45 85 27 a6 2b bd 89 c0 20 bc 09 e6 27 e6
|
||||
.HS 3d e6 3d b0 03 20 bc 09 bc 88 c0 60 a5 40 0a 85
|
||||
.HS 53 a9 00 85 54 a5 53 85 50 38 e5 51 f0 14 b0 04
|
||||
.HS e6 53 90 02 c6 53 38 20 6d 09 a5 50 18 20 6f 09
|
||||
.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
|
||||
|
@ -146,6 +146,7 @@ note : '$VAR' does NOT expand Variable
|
||||
| CAT | Working | -A : Show All non printable caracters | 0.9 |
|
||||
| | | -N : Number all output lines | |
|
||||
| | | -S : Suppress repeated empty output lines | |
|
||||
| FORMAT | In Progress | -L : Low-Level Format | 0.9 |
|
||||
| EDIT | Working | still missing : find/replace | 0.9 |
|
||||
| NSCUTIL | Working | Tool for setting time in NSC/DL1216E | 0.9 |
|
||||
| ---- | ------ | ------- | ----- |
|
||||
|
@ -46,7 +46,7 @@ A2osX.PrtDrv.Go.Cmd
|
||||
*--------------------------------------
|
||||
A2osX.PrtDrv.GetParam
|
||||
>STYA ZPDRV Get Ptr To ParamList
|
||||
jsr A2osX.Blk.GetDev
|
||||
jsr A2osX.Blk.GetCmdAndDev
|
||||
|
||||
ldy #7
|
||||
|
||||
|
@ -89,10 +89,10 @@ A2osX.MLICALL1 stx .1
|
||||
jsr GO.A2osX
|
||||
rts
|
||||
*--------------------------------------
|
||||
* A2osX.DIIDrv,A2osX.BlkDrv
|
||||
* A2osX.DIIDrv
|
||||
* X = DEVMGR.cmd
|
||||
* Y,A = PTR to Params
|
||||
* pDev -> Dev Header
|
||||
* pDev -> Dev Header AUX!!!
|
||||
* $42 Command Number
|
||||
* $43 Unit Number
|
||||
* $44-$45 Buffer Pointer
|
||||
@ -102,21 +102,25 @@ A2osX.DIIDrv .DA A2osX.DIIDrv.S status
|
||||
.DA A2osX.DIIDrv.RW Read
|
||||
.DA A2osX.DIIDrv.RW Write
|
||||
.DA A2osX.DRV.BadCall Format
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
*--------------------------------------
|
||||
A2osX.DIIDrv.S >LDYAI A2osx.DIIStat
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2osX.DIIDrv.RW jsr A2osX.Blk.GetParam
|
||||
|
||||
A2osX.DIIDrv.RW >STYA A2osX.Blk.GetParam.1+1
|
||||
jsr A2osX.Blk.GetCmdAndDevAX
|
||||
jsr GO.ProDOS
|
||||
stx $42
|
||||
sta $43
|
||||
|
||||
jsr A2osX.Blk.GetParam
|
||||
jsr $D000
|
||||
jsr GO.A2osX
|
||||
rts
|
||||
@ -130,35 +134,47 @@ A2osx.DIIStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
|
||||
.DA #0
|
||||
.DA #0,#9
|
||||
*--------------------------------------
|
||||
* Generic Blk Device
|
||||
* A2osX.BlkDrv
|
||||
* X = DEVMGR.cmd
|
||||
* Y,A = PTR to Params
|
||||
* pDev -> Dev Header
|
||||
* $42 Command Number
|
||||
* $43 Unit Number
|
||||
* $44-$45 Buffer Pointer
|
||||
* $46-$47 Block Number
|
||||
*--------------------------------------
|
||||
A2osX.BlkDrv .DA A2osX.BlkDrv.S status
|
||||
.DA A2osX.BlkDrv.RW
|
||||
.DA A2osX.BlkDrv.RW
|
||||
.DA A2osX.BlkDrv.F
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
.DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
* .DA A2osX.DRV.BadCall
|
||||
*--------------------------------------
|
||||
A2osX.BlkDrv.S jsr A2osX.Blk.GetDev
|
||||
A2osX.BlkDrv.S jsr A2osX.Blk.GetCmdAndDev
|
||||
|
||||
jsr A2osX.BlkDrv.Go
|
||||
bcs *
|
||||
bcs .9
|
||||
stx A2osx.BlkStat+S.DEVSTAT.SIZE
|
||||
sty A2osx.BlkStat+S.DEVSTAT.SIZE+1
|
||||
|
||||
>LDYAI A2osX.BlkStat
|
||||
clc
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
A2osX.BlkDrv.RW jsr A2osX.Blk.GetParam
|
||||
A2osX.BlkDrv.RW >STYA A2osX.Blk.GetParam.1+1
|
||||
|
||||
jsr A2osX.Blk.GetCmdAndDev
|
||||
|
||||
jsr A2osX.Blk.GetParam
|
||||
bra A2osX.BlkDrv.Go
|
||||
*--------------------------------------
|
||||
A2osX.BlkDrv.F jsr A2osX.Blk.GetDev
|
||||
A2osX.BlkDrv.F jsr A2osX.Blk.GetCmdAndDev
|
||||
|
||||
A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP
|
||||
lda (pDev),y
|
||||
sta .8+1
|
||||
@ -175,21 +191,23 @@ A2osX.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
|
||||
.DA #0,#9
|
||||
*--------------------------------------
|
||||
A2osX.Blk.GetParam
|
||||
>STYA ZPDRV Get Ptr To ParamList
|
||||
jsr A2osX.Blk.GetDev
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda (ZPDRV),y
|
||||
A2osX.Blk.GetParam.1
|
||||
lda $ffff,y Self Modified
|
||||
sta $44,y
|
||||
dey
|
||||
bpl .1
|
||||
bpl A2osX.Blk.GetParam.1
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2osX.Blk.GetDev
|
||||
A2osX.Blk.GetCmdAndDev
|
||||
jsr A2osX.Blk.GetCmdAndDevAX
|
||||
stx $42
|
||||
sta $43
|
||||
rts
|
||||
A2osX.Blk.GetCmdAndDevAX
|
||||
txa
|
||||
asl
|
||||
sta $42 CMD
|
||||
lsr
|
||||
tax CMD
|
||||
|
||||
ldy #S.DEV.DEVID Drive 1, or 2
|
||||
lda (pDev),y
|
||||
@ -205,8 +223,7 @@ A2osX.Blk.GetDev
|
||||
asl
|
||||
asl
|
||||
plp
|
||||
ror
|
||||
sta $43 DSSS0000
|
||||
ror DSSS0000
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -98,21 +98,17 @@ A2osX.E0 .EQ *
|
||||
A2osX.E0.SIZE .EQ *-A2osX.E0
|
||||
|
||||
* CONTROL SECTION :
|
||||
.DO A2osX.GP.SIZE>$1E0
|
||||
.LIST ON
|
||||
.DO A2osX.GP.SIZE>$1E0
|
||||
* !!!!!!!!! ERROR:GP too big !!!!!!!!!!
|
||||
.LIST OFF
|
||||
.FIN
|
||||
.DO A2osX.D1.SIZE>$1000
|
||||
.LIST ON
|
||||
* !!!!!!!!! ERROR:BNK1 too big !!!!!!!!
|
||||
.LIST OFF
|
||||
.FIN
|
||||
.DO A2osX.D2.SIZE>$1000
|
||||
.LIST ON
|
||||
* !!!!!!!!! ERROR:BNK2 too big !!!!!!!!
|
||||
.LIST OFF
|
||||
.FIN
|
||||
.LIST OFF
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S
|
||||
ASM
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
## Out :
|
||||
+ X=BlockCount (max 22)
|
||||
+ A=PageCount (max 44)
|
||||
+ Y,A=BufSize (max $4400)
|
||||
|
||||
# BuildProDOSCat
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user