Kernel version 0.9 : Implementing Block Device Support

This commit is contained in:
Rémy GIBERT 2017-03-13 17:55:43 +01:00
parent 89058db18a
commit 89f0b22a7a
5 changed files with 47 additions and 65 deletions

Binary file not shown.

Binary file not shown.

View File

@ -125,11 +125,6 @@ CS.RUN ldy #bCANCEL
lda (pData),y lda (pData),y
bmi .99 bmi .99
ldy #bSTOP
lda (pData),y
bmi .8
.8 clc .8 clc
@ -139,42 +134,7 @@ CS.RUN ldy #bCANCEL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? CS.DOEVENT sec
lda (pEvent),y
ldy #S.PS.hStdIn
cmp (pPs),y
bne .9
lda (pEvent)
and #S.EVT.F.KEY is it a KEY event?
beq .9
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
lda (pEvent),y
bne .9
ldy #S.EVT.DATALO
lda (pEvent),y
cmp #$03 Ctrl-C
bne .1
lda #$FF
ldy #bCANCEL
sta (pData),y
bra .8
.1 cmp #$13 Ctrl-S
bne .8
ldy #bSTOP
lda (pData),y
eor #$FF
sta (pData),y
.8 clc
rts
.9 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hLIBBLKDEV CS.QUIT lda hLIBBLKDEV
@ -190,9 +150,9 @@ CS.END
OptionList >PSTR "L" OptionList >PSTR "L"
OptionVars .DA #bLL OptionVars .DA #bLL
*-------------------------------------- *--------------------------------------
MSG.USAGE >CSTR "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\n -L : Low-Level Format\n" MSG.USAGE >CSTR "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n -L : Low-Level Format\r\n"
MSG.OK >CSTR "[OK]\n" MSG.OK >CSTR "[OK]\r\n"
MSG.ERR >CSTR "[%h]\n" MSG.ERR >CSTR "[%h]\r\n"
*-------------------------------------- *--------------------------------------
LIBBLKDEV >PSTR "libblkdev.o" LIBBLKDEV >PSTR "libblkdev.o"
DefaultVolName >PSTR "BLANK" DefaultVolName >PSTR "BLANK"
@ -206,7 +166,6 @@ DS.START
VolName .BS 16 VolName .BS 16
DevName .BS 4 DevName .BS 4
bCANCEL .BS 1 bCANCEL .BS 1
bSTOP .BS 1
bLL .BS 1 bLL .BS 1
DS.END DS.END
.ED .ED

View File

@ -75,9 +75,13 @@ L.TrkWriter .DA TrkWriter
L.ProDOS.Boot .DA ProDOS.Boot L.ProDOS.Boot .DA ProDOS.Boot
.DA 0 .DA 0
*/-------------------------------------- */--------------------------------------
* In PUSHW = DevSize (in 512b blocks) * #GetProDOSCatSize
* Out: X=BlockCount (max 22) * Compute space needed for ProDOS Catalog
* A=PageCount (max 44) * ##In :
* PUSHW = DevSize (in 512b blocks)
* ##Out :
* X=BlockCount (max 22)
* A=PageCount (max 44)
*\-------------------------------------- *\--------------------------------------
GetProDOSCatSize GetProDOSCatSize
>PULLAX A=DevSizeLo >PULLAX A=DevSizeLo
@ -105,18 +109,19 @@ GetProDOSCatSizeAX
asl A = Total pages needed to build catalog. asl A = Total pages needed to build catalog.
rts rts
*/-------------------------------------- */--------------------------------------
* BuildProDOSCat * #BuildProDOSCat
* In: PUSHW = DevSize (in 512b blocks) * ##In :
* PUSHW = VolName (PSTR) * PUSHW = DevSize (in 512b blocks)
* PUSHW = DstBuf (Zero filled) * PUSHW = VolName (PSTR)
* Blk0 : ProDOS.BootBlk * PUSHW = DstBuf (Zero filled)
* Blk1 : SOS.BootBlk * Blk0 : ProDOS.BootBlk
* Blk2,3,4,5 : Volume Directory * Blk1 : SOS.BootBlk
* Blk6.... : Volume Bitmap (4096/Blk) * Blk2,3,4,5 : Volume Directory
* max devSize = 65535 -> max 16 Bitmap Blk * Blk6.... : Volume Bitmap (4096/Blk)
* absolute MAX DstBuf size= * max devSize = 65535 -> max 16 Bitmap Blk
* 7 for Disk II(280blk),3.5(1600),3.5HD(2880) * absolute MAX DstBuf size=
* 22 for 32mb Hardisk... * 7 for Disk II(280blk),3.5(1600),3.5HD(2880)
* 22 for 32mb Hardisk...
*\-------------------------------------- *\--------------------------------------
BuildProDOSCat >PULLW ZPPtr1 DstBuf BuildProDOSCat >PULLW ZPPtr1 DstBuf
>PULLW ZPPtr2 VolName >PULLW ZPPtr2 VolName

View File

@ -342,7 +342,7 @@ DevMgrInit.SP ldy #$ff
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DevMgrInit.DII DevMgrInit.DII
rts rts
*-------------------------------------- *--------------------------------------
DevMgrInit.BLK DevMgrInit.BLK
@ -353,8 +353,19 @@ DevMgrInit.AddDev
inc DevMgr.Count inc DevMgr.Count
jsr K.GetDevByIDA jsr K.GetDevByIDA
>STYA ZPPtr1 >STYA ZPPtr1
ldy #S.DEV-1
.1 lda SP.DEV,y
sta (ZPPtr1),y
dey
bne .1
rts rts
*-------------------------------------- *--------------------------------------
SP.DEV .BS 2 JMP
.DA #S.DEV.S.BLOCK S
>PSTR "S1D1" 5 bytes
*--------------------------------------
SmartPort.OFS .HS 07010305 SmartPort.OFS .HS 07010305
SmartPort.SIG .HS 00200003 SmartPort.SIG .HS 00200003
*-------------------------------------- *--------------------------------------
@ -369,10 +380,6 @@ SP.DEV.STATUS .DA #3
SP.STATUS1 .BS 4 SP.STATUS1 .BS 4
SP.STATUS2 .BS S.DEVSTAT SP.STATUS2 .BS S.DEVSTAT
*-------------------------------------- *--------------------------------------
SP.DEV .BS 2 JMP
.BS 1 S
>PSTR "S1D1" 5 bytes
*--------------------------------------
SP.DRV cld SP.DRV cld
ldy #7 ldy #7
lda (pDev),y lda (pDev),y
@ -382,6 +389,17 @@ SP.DRV.lo ldy #$ff
SP.DRV.hi lda #$ff SP.DRV.hi lda #$ff
jmp A2osX.PRTCALL jmp A2osX.PRTCALL
*-------------------------------------- *--------------------------------------
DII.DRV cld
lda #$ff DSSS0000
cpx #DEVMGR.CONTROL
bcs .9
.9 lda #MLI.ERR.BADCALL
rts
*--------------------------------------
BLK.DRV BLK.DRV
*-------------------------------------- *--------------------------------------
EvtMgrInit lda #$A5 EvtMgrInit lda #$A5