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.FLT.MAX .EQ 4
K.EVT.MAX .EQ 4
K.NODE.MAX .EQ 128
K.DEV.MAX .EQ 32
K.PS.MAX .EQ 32
*--------------------------------------
ZPKERNEL .EQ $0
@ -93,7 +93,7 @@ A2osX.SaveSX .EQ $101 Aux
* Aux $3FE -> 3FF : IRQ Vector
*--------------------------------------
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.MLI.PATH .EQ $0369 64+1
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
*--------------------------------------
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
*--------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -19,7 +19,6 @@ AUTO 4,1
.INB /A2OSX.SRC/X.PRINTF.S
A2osX.MAIN .PH $1100
.INB /A2OSX.SRC/SYS/KERNEL.S.CORE
.INB /A2OSX.SRC/SYS/KERNEL.S.IO
.INB /A2OSX.SRC/SYS/KERNEL.S.DRV
.EP
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.PFT
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
.EP
A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2
@ -53,6 +51,8 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP
.INB /A2OSX.SRC/SYS/KERNEL.S.IRQ
.INB /A2OSX.SRC/SYS/KERNEL.S.MEM
.INB /A2OSX.SRC/SYS/KERNEL.S.IO
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
DevMgr.FreeMem .EQ *
.EP
A2osX.E0.E .EQ *