diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3ffe52bb..ccc1869c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 9527bb13..b4ae6af5 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 38e354b6..ca020ddf 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -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 *-------------------------------------- diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 5571b091..afbf757f 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -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 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 5731465b..197fff33 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -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 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 8537f795..954511d2 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -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 diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 8d8074ff..163309c2 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 3c1eadb7..c73df61a 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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 diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index aba99006..4beaf605 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -2,6 +2,8 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- +IO.OPEN +*-------------------------------------- IO.SELECT jsr K.GetMemPtr >STYA pNode rts diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 8d127484..c8f99472 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -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 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 05d73931..a092f0ae 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -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 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index e07bc241..c6272bd7 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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 *