Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-07-09 17:25:38 +02:00
parent 3b1a5ae4da
commit 4294752153
12 changed files with 89 additions and 93 deletions

Binary file not shown.

Binary file not shown.

View File

@ -8,7 +8,7 @@ AUTO 4,1
K.ENV.SIZE .EQ 256 K.ENV.SIZE .EQ 256
K.FLT.MAX .EQ 4 K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 4 K.EVT.MAX .EQ 4
K.NODE.MAX .EQ 128 K.DEV.MAX .EQ 32
K.PS.MAX .EQ 32 K.PS.MAX .EQ 32
*-------------------------------------- *--------------------------------------
ZPKERNEL .EQ $0 ZPKERNEL .EQ $0
@ -93,7 +93,7 @@ A2osX.SaveSX .EQ $101 Aux
* Aux $3FE -> 3FF : IRQ Vector * Aux $3FE -> 3FF : IRQ Vector
*-------------------------------------- *--------------------------------------
K.S.STAT .EQ $0300 S.STAT for internal kernel operations K.S.STAT .EQ $0300 S.STAT for internal kernel operations
K.S.DSTAT .EQ $0340 S.DSTAT=25 or higher depends on dev type *K.S.DSTAT .EQ $0340 S.DSTAT=25 or higher depends on dev type
K.S.IOCTL .EQ $0360 9 bytes K.S.IOCTL .EQ $0360 9 bytes
K.MLI.PATH .EQ $0369 64+1 K.MLI.PATH .EQ $0369 64+1
K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now) K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now)
@ -117,7 +117,7 @@ Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
*-------------------------------------- *--------------------------------------
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
*-------------------------------------- *--------------------------------------
Node.Table .EQ $0E00 K.NODE.MAX*2=128*2=256b Dev.Table .EQ $0E00 K.Dev.MAX*2=32*2=64b
*-------------------------------------- *--------------------------------------
K.IOBuf .EQ $0F00 K.IOBuf .EQ $0F00
*-------------------------------------- *--------------------------------------

View File

@ -315,8 +315,8 @@ K.InsDrv >STYA BIN.R.CS.Start
sbc /DevMgr.HiMem sbc /DevMgr.HiMem
bcs .9 No More Room to load Driver.... bcs .9 No More Room to load Driver....
lda DevMgr.NodeCount lda DevMgr.DevCnt
cmp #K.NODE.MAX cmp #K.DEV.MAX
bne .10 No Device Handle Left bne .10 No Device Handle Left
lda #K.E.OOH lda #K.E.OOH
@ -343,15 +343,15 @@ K.InsDrv >STYA BIN.R.CS.Start
>LDYA BIN.R.End >LDYA BIN.R.End
>STYA DevMgr.Free >STYA DevMgr.Free
ldx DevMgr.NodeCount ldx DevMgr.DevCnt
lda DevMgr.Free lda DevMgr.Free
sta Node.Table,x sta Dev.Table,x
inx inx
lda DevMgr.Free+1 lda DevMgr.Free+1
sta Node.Table,x sta Dev.Table,x
inx inx
stx DevMgr.NodeCount stx DevMgr.DevCnt
clc clc
rts rts

View File

@ -525,7 +525,7 @@ CORE.PSResume sei
DevMgr.Stat .DA DevMgr.FreeMem DevMgr.Stat .DA DevMgr.FreeMem
DevMgr.Free .DA DevMgr.FreeMem DevMgr.Free .DA DevMgr.FreeMem
.DA DevMgr.HiMem .DA DevMgr.HiMem
DevMgr.NodeCount .DA #0 DevMgr.DevCnt .DA #0
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
CORE.VBLState .BS 1 CORE.VBLState .BS 1

View File

@ -9,14 +9,13 @@ AUTO 4,1
* CC = OK, CS = ERROR * CC = OK, CS = ERROR
* Y,A = DEVSLOT * Y,A = DEVSLOT
*\-------------------------------------- *\--------------------------------------
K.GetDevByID cmp DevMgr.NodeCount K.GetDevByID cmp DevMgr.DevCnt
bcs K.GetDev.NODEV bcs K.GetDev.NODEV
tax tax
lda Node.Table+1,x lda Dev.Table,x
beq K.GetDev.NODEV jmp K.GetMemPtr
ldy Node.Table,x
* clc * clc
@ -34,9 +33,8 @@ K.GetDevByName >STYA ZPPtr1
ldx #0 ldx #0
lda Node.Table+1,x ldy Dev.Table,x
beq .4 jsr K.GetMemPtr
ldy Node.Table,x
>STYA ZPPtr2 >STYA ZPPtr2
@ -67,8 +65,7 @@ K.GetDevByName >STYA ZPPtr1
rts rts
.4 inx .4 inx
inx cpx DevMgr.DevCnt
cpx DevMgr.NodeCount
bne .1 bne .1
K.GetDev.NODEV lda #MLI.E.NODEV K.GetDev.NODEV lda #MLI.E.NODEV

View File

@ -7,19 +7,14 @@ AUTO 4,1
* Y,A = PTR to S.IOCTL * Y,A = PTR to S.IOCTL
*-------------------------------------- *--------------------------------------
DRV.DiskII cld DRV.DiskII cld
cpx #IOCTL.FORMAT
bcs .9
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) jmp (.1,x)
.1 .DA DRV.DiskII.STATUS .1 .DA DRV.DiskII.STATUS
.DA DRV.BLK READ .DA DRV.BLK READ
.DA DRV.BLK WRITE .DA DRV.BLK WRITE
.DA A2osX.BadCall FORMAT .9 jmp A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall IRQ
*-------------------------------------- *--------------------------------------
DRV.DiskII.STATUS DRV.DiskII.STATUS
>LDYAI DRV.DiskII.DSTAT >LDYAI DRV.DiskII.DSTAT
@ -40,19 +35,15 @@ DRV.DiskII.DSTAT
* Y,A = PTR to S.IOCTL * Y,A = PTR to S.IOCTL
*-------------------------------------- *--------------------------------------
DRV.RamDrive cld DRV.RamDrive cld
cpx #IOCTL.CONTROL
bcs .9
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) jmp (.1,x)
.1 .DA DRV.RamDrive.STATUS .1 .DA DRV.RamDrive.STATUS
.DA DRV.BLK READ .DA DRV.BLK READ
.DA DRV.BLK WRITE .DA DRV.BLK WRITE
.DA DRV.BLK FORMAT .DA DRV.BLK FORMAT
.DA A2osX.BadCall .9 jmp A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall IRQ
*-------------------------------------- *--------------------------------------
DRV.RamDrive.STATUS DRV.RamDrive.STATUS
jsr DRV.Blk jsr DRV.Blk
@ -78,19 +69,15 @@ DRV.RamDrive.DSTAT
* Y,A = PTR to S.IOCTL * Y,A = PTR to S.IOCTL
*-------------------------------------- *--------------------------------------
DRV.BlkDevice cld DRV.BlkDevice cld
cpx #IOCTL.CONTROL
bcs .9
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) jmp (.1,x)
.1 .DA DRV.BlkDevice.STATUS .1 .DA DRV.BlkDevice.STATUS
.DA DRV.BLK READ .DA DRV.BLK READ
.DA DRV.BLK WRITE .DA DRV.BLK WRITE
.DA DRV.BLK FORMAT .DA DRV.BLK FORMAT
.DA A2osX.BadCall .9 jmp A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall
.DA A2osX.BadCall IRQ
*-------------------------------------- *--------------------------------------
DRV.BlkDevice.STATUS DRV.BlkDevice.STATUS
jsr DRV.Blk jsr DRV.Blk
@ -273,9 +260,7 @@ DRV.SYS.CLOSE
clc clc
rts rts
*-------------------------------------- *--------------------------------------
DRV.SYS.Read >STYA pIOCTL DRV.SYS.Read lda A2osX.ASCREEN
lda A2osX.ASCREEN
cmp #2 is SYS active? cmp #2 is SYS active?
bne .9 bne .9
@ -294,9 +279,7 @@ DRV.SYS.Read >STYA pIOCTL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DRV.SYS.WRITE >STYA pIOCTL DRV.SYS.WRITE ldy #S.IOCTL.BUFPTR
ldy #S.IOCTL.BUFPTR
lda (pIOCTL),y lda (pIOCTL),y
sta ZPDRV+4 sta ZPDRV+4

View File

@ -135,8 +135,16 @@ Kernel.Init3 sta SETALTZP
sta IRQ.InKernel sta IRQ.InKernel
jsr MemMgrInit jsr MemMgrInit
>LDYAI NODE.NULL
jsr DevMgrInit.AddCDev
>LDYAI NODE.SYS
jsr DevMgrInit.AddCDev
jsr PS0Init jsr PS0Init
bcs * bcs *
>LDYAI MSG.Init3 >LDYAI MSG.Init3
>SYSCALL PrintF >SYSCALL PrintF
@ -182,6 +190,7 @@ Kernel.Init3 sta SETALTZP
>DEBUGOA >DEBUGOA
>DEBUG
jmp CORE.Run jmp CORE.Run
.9 >PUSHA .9 >PUSHA
@ -503,12 +512,6 @@ PS0Init ldx #0
>LDYAI K.STACKTOP >LDYAI K.STACKTOP
>STYA pStack >STYA pStack
>LDYAI NODE.NULL
jsr DevMgrInit.AddNode
>LDYAI NODE.SYS
jsr DevMgrInit.AddNode
lda #DEVID.SYS lda #DEVID.SYS
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
@ -526,24 +529,6 @@ PS0Init ldx #0
*-------------------------------------- *--------------------------------------
DevMgr.SYS.TITLE .AZ "A2osX System Screen" DevMgr.SYS.TITLE .AZ "A2osX System Screen"
*-------------------------------------- *--------------------------------------
NODE.NULL .DA #S.NODE.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.NULL
.DA DRV.NULL
.DA 0 ROMPTR
.AZ "NULL" NAME
.HS 000000
*--------------------------------------
NODE.SYS .DA #S.NODE.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.SYS
.DA DRV.SYS
.DA 0 ROMPTR
.AZ "SYS" NAME
.HS 00000000
*--------------------------------------
* Setup AuxLC $FFFE->Kernel IRQ Handler * Setup AuxLC $FFFE->Kernel IRQ Handler
* if irq not handled, jmp (S.IrqMgrOldFFFE) * if irq not handled, jmp (S.IrqMgrOldFFFE)
*-------------------------------------- *--------------------------------------
@ -873,20 +858,20 @@ DevMgrInit.DEVCNT
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
DevMgrInit.DII >LDYAI DRV.DiskII DevMgrInit.DII >LDYAI DRV.DiskII
jmp DevMgrInit.AddDev jmp DevMgrInit.AddBDev
*-------------------------------------- *--------------------------------------
DevMgrInit.RAM >LDYAI DRV.RamDrive DevMgrInit.RAM >LDYAI DRV.RamDrive
jmp DevMgrInit.AddDev jmp DevMgrInit.AddBDev
*-------------------------------------- *--------------------------------------
DevMgrInit.USR >LDYAI DRV.BlkDevice DevMgrInit.USR >LDYAI DRV.BlkDevice
jmp DevMgrInit.AddDev jmp DevMgrInit.AddBDev
*-------------------------------------- *--------------------------------------
DevMgrInit.BLK ldy #$ff DevMgrInit.BLK ldy #$ff
lda (ZPPtr1),y lda (ZPPtr1),y
sta NODE.BDEV+S.NODE.DEV.BUSPTR sta NODE.BDEV+S.NODE.DEV.BUSPTR
>LDYAI DRV.BlkDevice >LDYAI DRV.BlkDevice
jmp DevMgrInit.AddDev jmp DevMgrInit.AddBDev
*-------------------------------------- *--------------------------------------
DevMgrInit.SP ldy #$ff DevMgrInit.SP ldy #$ff
lda (ZPPtr1),y lda (ZPPtr1),y
@ -906,11 +891,11 @@ DevMgrInit.SP ldy #$ff
bcs .9 bcs .9
>LDYAI DRV.SmartPort >LDYAI DRV.SmartPort
jsr DevMgrInit.AddDev jsr DevMgrInit.AddBDev
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DevMgrInit.AddDev DevMgrInit.AddBDev
>STYA NODE.BDEV+S.NODE.DEV.DRVPTR >STYA NODE.BDEV+S.NODE.DEV.DRVPTR
lda NODE.BDEV+S.NODE.DEV.BUSID lda NODE.BDEV+S.NODE.DEV.BUSID
@ -921,16 +906,27 @@ DevMgrInit.AddDev
ora #$30 ora #$30
sta NODE.BDEV+S.NODE.DEV.NAME+3 SxDn sta NODE.BDEV+S.NODE.DEV.NAME+3 SxDn
>LDYAI NODE.BDEV >LDYAI DEV.BDEV
DevMgrInit.AddNode DevMgrInit.AddCDev
ldx DevMgr.NodeCount >STYA .1+1
sta Node.Table+1,x jsr K.GetMem
tya >STYA .2+1
sta Node.Table,x
txa
ldx DevMgr.DevCnt
sta Dev.Table,x
inx inx
inx stx DevMgr.DevCnt
stx DevMgr.NodeCount
ldx #S.NODE.DEV-1
.1 lda $ffff,x SELF MODIFIED
.2 sta $ffff,x SELF MODIFIED
dex
bpl .1
clc clc
rts rts
@ -938,7 +934,25 @@ DevMgrInit.AddNode
sec sec
rts rts
*-------------------------------------- *--------------------------------------
NODE.BDEV .DA #S.NODE.T.BDEV DEV.NULL .DA #S.NODE.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.NULL
.DA DRV.NULL
.DA 0 ROMPTR
.AZ "NULL" NAME
.HS 000000
*--------------------------------------
DEV.SYS .DA #S.NODE.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #DEVID.SYS
.DA DRV.SYS
.DA 0 ROMPTR
.AZ "SYS" NAME
.HS 00000000
*--------------------------------------
DEV.BDEV .DA #S.NODE.T.BDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #0 BUSID
.DA #0 DEVID .DA #0 DEVID

View File

@ -2,6 +2,8 @@ NEW
PREFIX /A2OSX.BUILD PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
*-------------------------------------- *--------------------------------------
IO.OPEN
*--------------------------------------
IO.SELECT jsr K.GetMemPtr IO.SELECT jsr K.GetMemPtr
>STYA pNode >STYA pNode
rts rts

View File

@ -35,7 +35,7 @@ K.IrqHAuxLC cld
lda RDREADAUX lda RDREADAUX
pha pha
sta CLRREADAUX Make sure we can access Node.Table sta CLRREADAUX Make sure we can access Dev.Table
lda RDWRITEAUX lda RDWRITEAUX
pha pha
@ -190,11 +190,11 @@ K.IrqH.Switch inc IRQ.Tick
*-------------------------------------- *--------------------------------------
K.IrqH.DEV ldx #0 K.IrqH.DEV ldx #0
.1 lda Node.Table+1,x .1 lda Dev.Table+1,x
beq .2 beq .2
sta $ff sta $ff
lda Node.Table,x lda Dev.Table,x
sta $fe sta $fe
ldy #S.NODE.DEV.DRVPTR ldy #S.NODE.DEV.DRVPTR
@ -225,7 +225,7 @@ K.IrqH.DEV ldx #0
.2 inx .2 inx
inx inx
.3 cpx DevMgr.NodeCount .3 cpx DevMgr.DevCnt
bne .1 bne .1
sec sec

View File

@ -121,7 +121,7 @@ K.MKDir jsr PFT.CheckPathYA
* CC = OK, CS = ERROR * CC = OK, CS = ERROR
* A = hFILE * A = hFILE
*\-------------------------------------- *\--------------------------------------
K.MkNod jsr K.GetDevByName Ptr1=NAME K.MkNod jsr K.GetDevByName Y,A=NAME
bcs .9 bcs .9
>STYA .1+1 >STYA .1+1
stx .2+1 stx .2+1

View File

@ -19,7 +19,6 @@ AUTO 4,1
.INB /A2OSX.SRC/X.PRINTF.S .INB /A2OSX.SRC/X.PRINTF.S
A2osX.MAIN .PH $1100 A2osX.MAIN .PH $1100
.INB /A2OSX.SRC/SYS/KERNEL.S.CORE .INB /A2OSX.SRC/SYS/KERNEL.S.CORE
.INB /A2OSX.SRC/SYS/KERNEL.S.IO
.INB /A2OSX.SRC/SYS/KERNEL.S.DRV .INB /A2OSX.SRC/SYS/KERNEL.S.DRV
.EP .EP
A2osX.AUX .PH $0C00 A2osX.AUX .PH $0C00
@ -37,7 +36,6 @@ A2osX.D1 .PH $D000
.INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB .INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB
.INB /A2OSX.SRC/SYS/KERNEL.S.PFT .INB /A2OSX.SRC/SYS/KERNEL.S.PFT
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV .INB /A2OSX.SRC/SYS/KERNEL.S.DEV
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
.EP .EP
A2osX.D2 .PH $D000 A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
@ -53,6 +51,8 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP .INB /A2OSX.SRC/SYS/KERNEL.S.JMP
.INB /A2OSX.SRC/SYS/KERNEL.S.IRQ .INB /A2OSX.SRC/SYS/KERNEL.S.IRQ
.INB /A2OSX.SRC/SYS/KERNEL.S.MEM .INB /A2OSX.SRC/SYS/KERNEL.S.MEM
.INB /A2OSX.SRC/SYS/KERNEL.S.IO
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
DevMgr.FreeMem .EQ * DevMgr.FreeMem .EQ *
.EP .EP
A2osX.E0.E .EQ * A2osX.E0.E .EQ *