mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
Kernel version 0.8 : Kernel OK, now fixing DRV,BIN...
This commit is contained in:
parent
e30dfc0eb4
commit
00f9fe267e
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -32,14 +32,14 @@ PP.RxCFG.LID .EQ %00000000.00000011
|
||||
PP.RxCTL .EQ $0104 Receiver Control (RW)
|
||||
PP.RxCTL.LID .EQ %00000000.00000101
|
||||
PP.RxCTL.IAHashA .EQ %00000000.01000000
|
||||
PP.RxCTL.PromisA .EQ %00000000.10000000
|
||||
*PP.RxCTL.PromisA .EQ %00000000.10000000
|
||||
PP.RxCTL.RxOKA .EQ %00000001.00000000
|
||||
PP.RxCTL.MulticastA .EQ %00000010.00000000
|
||||
PP.RxCTL.IA .EQ %00000100.00000000
|
||||
PP.RxCTL.BroadcastA .EQ %00001000.00000000
|
||||
PP.RxCTL.CRCerrorA .EQ %00010000.00000000
|
||||
PP.RxCTL.RuntA .EQ %00100000.00000000
|
||||
PP.RxCTL.ExtradataA .EQ %01000000.00000000
|
||||
*PP.RxCTL.CRCerrorA .EQ %00010000.00000000
|
||||
*PP.RxCTL.RuntA .EQ %00100000.00000000
|
||||
*PP.RxCTL.ExtradataA .EQ %01000000.00000000
|
||||
PP.TxCFG .EQ $0106 Transmit Configuration (RW)
|
||||
PP.TxCMD .EQ $0108 Receiver Control (RW)
|
||||
PP.TxCMD.LID .EQ %00000000.00001001
|
||||
@ -63,12 +63,12 @@ PP.SelfCTL .EQ $0114 Self Control (RW)
|
||||
PP.SelfCTL.LID .EQ %00000000.00010101
|
||||
PP.SelfCTL.RESET .EQ %00000000.01000000
|
||||
PP.SelfCTL.SWSuspnd .EQ %00000000.10000000
|
||||
PP.SelfCTL.HWSleepE .EQ %00000001.00000000
|
||||
PP.SelfCTL.HWStndby .EQ %00000010.00000000
|
||||
*PP.SelfCTL.HWSleepE .EQ %00000001.00000000
|
||||
*PP.SelfCTL.HWStndby .EQ %00000010.00000000
|
||||
PP.BufCTL .EQ $0116
|
||||
PP.TestCTL .EQ $0118
|
||||
PP.TestCTL.LID .EQ %00000000.00011001
|
||||
PP.TestCTL.DisLT .EQ %00000000.10000000
|
||||
*PP.TestCTL.LID .EQ %00000000.00011001
|
||||
*PP.TestCTL.DisLT .EQ %00000000.10000000
|
||||
PP.TestCTL.FDX .EQ %01000000.00000000
|
||||
PP.ISQ .EQ $0120
|
||||
PP.RxEvent .EQ $0124 Receiver Event (RO)
|
||||
|
@ -285,7 +285,7 @@ S.MEM.BIN .EQ 3
|
||||
S.MEM.PTR .EQ 4
|
||||
S.MEM.LEN .EQ 6
|
||||
*
|
||||
S.MEM.SIZE .EQ 8
|
||||
S.MEM .EQ 8
|
||||
*--------------------------------------
|
||||
* DEV STRUCT
|
||||
*--------------------------------------
|
||||
@ -303,7 +303,7 @@ S.DEV.F.BLOCK .EQ %00000010
|
||||
S.DEV.F.CHAR .EQ %00000001
|
||||
S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx
|
||||
*
|
||||
S.DEV.SIZE .EQ 16
|
||||
S.DEV .EQ 16
|
||||
*--------------------------------------
|
||||
S.DEVINFO.TYPE .EQ 0
|
||||
S.DEVINFO.TYPE.CHAR .EQ %00000001
|
||||
@ -369,7 +369,7 @@ S.PS.CID .EQ 12
|
||||
S.PS.LASTERROR .EQ 13
|
||||
S.PS.PC .EQ 14
|
||||
*
|
||||
S.PS.SIZE .EQ 16
|
||||
S.PS .EQ 16
|
||||
*--------------------------------------
|
||||
* LIB Function Indexes
|
||||
*--------------------------------------
|
||||
|
@ -111,9 +111,10 @@ CS.DOEVENT sec
|
||||
*--------------------------------------
|
||||
CS.QUIT ldy #hBinName
|
||||
lda (pData),y
|
||||
beq .1
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
ldx #DEVMGR.CLOSE
|
||||
.1 ldx #DEVMGR.CLOSE
|
||||
* jsr pDevJmp
|
||||
|
||||
clc
|
||||
|
@ -226,7 +226,7 @@ BIN.MoveDRV ldy #H.BIN.DRV.DEVCTRLBLK.O
|
||||
jsr K.GetDevByIDA
|
||||
>STYA pDev
|
||||
|
||||
ldy #S.DEV.SIZE Make sure DevMgr.Table Ends with 0
|
||||
ldy #S.DEV Make sure DevMgr.Table Ends with 0
|
||||
lda #0
|
||||
sta (pDev),y
|
||||
|
||||
|
@ -72,7 +72,7 @@ K.GetDevByNameYA
|
||||
|
||||
.3 lda ZPQuickPtr2
|
||||
clc
|
||||
adc #S.DEV.SIZE
|
||||
adc #S.DEV
|
||||
sta ZPQuickPtr2
|
||||
bcc .4
|
||||
|
||||
|
@ -24,7 +24,7 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray
|
||||
jsr K.FileSearch find libname in $DRV
|
||||
bcs .99
|
||||
stx K.LoadDrv.hFullName
|
||||
|
||||
|
||||
jsr K.LoadExeYA Y,A =filename full path
|
||||
bcs .98
|
||||
|
||||
|
@ -114,7 +114,7 @@ EVT.GetEvents.DEV
|
||||
|
||||
.2 lda pDev
|
||||
clc
|
||||
adc #S.DEV.SIZE
|
||||
adc #S.DEV
|
||||
sta pDev
|
||||
bcc .3
|
||||
inc pDev+1
|
||||
|
@ -15,7 +15,7 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
|
||||
>PULLYA Get Search list
|
||||
jsr K.ExpandPStrYA Expand it
|
||||
>SYSCALL SYS.ExpandPStrYA Expand it (SYSCALL to BNK1)
|
||||
bcs .99
|
||||
|
||||
stx K.FileSearch.hSrch
|
||||
@ -64,7 +64,9 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
|
||||
lda K.FileSearch.hSrch Discard Expanded hSrch list
|
||||
jsr K.FreeMemA
|
||||
>LDYAI KrnBuf256
|
||||
jmp K.NewPStrYA
|
||||
>SYSCALL SYS.NewPStrYA
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 lda K.FileSearch.hSrch Discard Expanded hSrch list
|
||||
jsr K.FreeMemA
|
||||
|
@ -77,13 +77,13 @@ Kernel.Init3 jsr K.DevMgrInit
|
||||
*--------------------------------------
|
||||
* K.DevMgrInit
|
||||
*--------------------------------------
|
||||
K.DevMgrInit ldx #S.DEV.SIZE*DevMgr.Count
|
||||
K.DevMgrInit ldx #S.DEV*DevMgr.Count
|
||||
.1 lda DevMgr.NUL-1,x
|
||||
sta DevMgr.Table-1,x
|
||||
dex
|
||||
bne .1
|
||||
|
||||
stz DevMgr.Table+S.DEV.SIZE*DevMgr.Count+1
|
||||
stz DevMgr.Table+S.DEV*DevMgr.Count+1
|
||||
|
||||
lda #DevMgr.Count-1
|
||||
sta DevMgr.LastDevID
|
||||
@ -198,7 +198,7 @@ K.TskMgrInit stz TSKMGR.LASTID
|
||||
ldx #K.PS.MAX
|
||||
|
||||
.1 lda #0
|
||||
ldy #S.PS.SIZE-1
|
||||
ldy #S.PS-1
|
||||
|
||||
.2 sta (pPs),y
|
||||
dey
|
||||
@ -206,7 +206,7 @@ K.TskMgrInit stz TSKMGR.LASTID
|
||||
|
||||
lda pPs
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
adc #S.PS
|
||||
sta pPs
|
||||
bcc .3
|
||||
|
||||
|
@ -52,7 +52,7 @@ K.IrqHandlerAuxLC
|
||||
bcc .8 CC, IRQ cleared by device
|
||||
|
||||
.2 lda $fe CS,
|
||||
adc #S.DEV.SIZE-1
|
||||
adc #S.DEV-1
|
||||
sta $fe
|
||||
bcc .1
|
||||
inc $ff
|
||||
|
@ -5,7 +5,6 @@ INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* !!!!!!!! DO NOT USE VCPU16 !!!!!!!!
|
||||
* !!!!!! DO NOT USE ZPQuickPTRs !!!!!
|
||||
*--------------------------------------
|
||||
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
|
||||
@ -19,6 +18,10 @@ ZPMemMgrTmp3 .EQ ZPMEMMGR+6
|
||||
* Garbage collector move blocks
|
||||
* - mem.ID=0 always used! useful to test if hMem=0
|
||||
*--------------------------------------
|
||||
MemMgr.SlotCnt .BS 1
|
||||
MemMgr.ReqFlags .BS 1 store requested Flags
|
||||
MemMgr.ReqSize .BS 2 store requested Size
|
||||
*--------------------------------------
|
||||
* PUBLIC
|
||||
*--------------------------------------
|
||||
* K.GetMem
|
||||
@ -155,26 +158,24 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size
|
||||
lda MemMgr.Free Compute base PTR=FREE-REQ size
|
||||
sec
|
||||
sbc ZPMemMgrTmp1
|
||||
sta ZPMemMgrTmp2 store new MemMgr.Free in ZPMemMgrTmp2
|
||||
tay save new MemMgr.Free LO
|
||||
lda MemMgr.Free+1
|
||||
sbc ZPMemMgrTmp1+1
|
||||
sta ZPMemMgrTmp2+1
|
||||
pha save new MemMgr.Free HI
|
||||
|
||||
lda ZPMemMgrTmp2 ensure new MemMgr.Free is not lower
|
||||
sec than LoMem
|
||||
sbc MemMgr.LoMem
|
||||
lda ZPMemMgrTmp2+1
|
||||
cpy MemMgr.LoMem
|
||||
sbc MemMgr.LoMem+1
|
||||
bcc .98 ERR out of mem
|
||||
|
||||
jsr MemMgr.NextSlot
|
||||
jsr MemMgr.NextSlot X,Y unmodified
|
||||
|
||||
tya get back MemMgr.Free LO
|
||||
|
||||
ldy #S.MEM.PTR
|
||||
lda ZPMemMgrTmp2 get new MemMgr.Free
|
||||
sta MemMgr.Free set as system MemMgr.Free value
|
||||
sta (ZPMemMgrSPtr),y store is as base address of new slot
|
||||
iny
|
||||
lda ZPMemMgrTmp2+1
|
||||
pla get back MemMgr.Free HI
|
||||
sta MemMgr.Free+1
|
||||
sta (ZPMemMgrSPtr),y
|
||||
|
||||
@ -189,7 +190,8 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 lda #MemMgr.ERROOM
|
||||
.98 pla discard new MemMgr.Free HI
|
||||
lda #MemMgr.ERROOM
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -199,7 +201,7 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size
|
||||
*--------------------------------------
|
||||
MemMgr.NextSlot lda ZPMemMgrSPtr
|
||||
clc
|
||||
adc #S.MEM.SIZE
|
||||
adc #S.MEM
|
||||
sta ZPMemMgrSPtr
|
||||
bcc .8
|
||||
inc ZPMemMgrSPtr+1
|
||||
@ -237,10 +239,6 @@ MemMgr.Init0 ldy #S.MEM.PTR
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MemMgr.SlotCnt .BS 1
|
||||
MemMgr.ReqFlags .BS 1 store requested Flags
|
||||
MemMgr.ReqSize .BS 2 store requested Size
|
||||
*--------------------------------------
|
||||
* K.FreeMemA
|
||||
* In:
|
||||
* A = hMem To Free
|
||||
@ -248,13 +246,13 @@ MemMgr.ReqSize .BS 2 store requested Size
|
||||
* X,Y unmodified
|
||||
*--------------------------------------
|
||||
K.FreeMemA phy
|
||||
phx
|
||||
tax
|
||||
beq .8 Slot=0, reserved by Kernel
|
||||
tay
|
||||
|
||||
jsr K.GetMemByIDA
|
||||
beq * Slot=0, reserved by Kernel
|
||||
|
||||
jsr K.GetMemByIDA X unmodified
|
||||
lda (ZPMemMgrSPtr)
|
||||
bpl * In use ?
|
||||
bpl .9 In use ?
|
||||
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
|
||||
@ -269,7 +267,7 @@ K.FreeMemA phy
|
||||
pha save hMem
|
||||
>PUSHW ZPMemMgrSPtr
|
||||
pla
|
||||
jsr K.GetMemByIDA
|
||||
jsr K.GetMemByIDA X unmodified
|
||||
lda (ZPMemMgrSPtr)
|
||||
bpl * ***MUST BE ALLOCATED***
|
||||
|
||||
@ -283,7 +281,7 @@ K.FreeMemA phy
|
||||
.2 lda MemMgr.LastSlot
|
||||
beq .8
|
||||
|
||||
jsr K.GetMemByIDA
|
||||
jsr K.GetMemByIDA X unmodified
|
||||
lda (ZPMemMgrSPtr)
|
||||
bmi .8
|
||||
|
||||
@ -300,10 +298,35 @@ K.FreeMemA phy
|
||||
dec MemMgr.LastSlot discard last slot
|
||||
bne .2 no slot left, exit
|
||||
|
||||
.8 plx
|
||||
ply
|
||||
.8 ply
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.9 ply discard saved Y
|
||||
|
||||
lda $D000
|
||||
sta .91+1
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
jsr PS.Select0
|
||||
|
||||
pla Get PC and sub 2 for calling address
|
||||
sec
|
||||
sbc #2
|
||||
tay
|
||||
pla
|
||||
sbc #0
|
||||
|
||||
>PUSHYA
|
||||
|
||||
>LDYAI K.FreeMemA.ERR
|
||||
jsr K.PStrOutYA
|
||||
|
||||
.91 ldx #$ff
|
||||
bit $C000,x
|
||||
bit $C000,x
|
||||
bra *
|
||||
*--------------------------------------
|
||||
* K.GetMemPtrA
|
||||
* In:
|
||||
@ -327,27 +350,49 @@ K.GetMemPtrA jsr K.GetMemByIDA
|
||||
* Out:
|
||||
* Y,A = ZPMemMgrSPtr = PTR to S.MEM
|
||||
* X unmodified
|
||||
* *** Optimized for :
|
||||
* MemMgr.Table is page aligned at $1800
|
||||
* S.MEM is 8 bytes
|
||||
*--------------------------------------
|
||||
K.GetMemByIDA stz ZPMemMgrSPtr+1
|
||||
|
||||
asl
|
||||
rol ZPMemMgrSPtr+1
|
||||
asl
|
||||
rol ZPMemMgrSPtr+1
|
||||
asl
|
||||
rol ZPMemMgrSPtr+1
|
||||
|
||||
* clc IMPLICIT
|
||||
|
||||
adc #MemMgr.Table
|
||||
tay
|
||||
lda ZPMemMgrSPtr+1
|
||||
adc /MemMgr.Table
|
||||
|
||||
sty ZPMemMgrSPtr
|
||||
.DO MemMgr.Table=$1800
|
||||
.ELSE
|
||||
!!!!!WARNING!!!!!
|
||||
.FIN
|
||||
.DO S.MEM=8
|
||||
.ELSE
|
||||
!!!!!WARNING!!!!!
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
K.GetMemByIDA sta ZPMemMgrSPtr
|
||||
lda /MemMgr.Table/8
|
||||
asl ZPMemMgrSPtr
|
||||
rol
|
||||
asl ZPMemMgrSPtr
|
||||
rol
|
||||
asl ZPMemMgrSPtr
|
||||
rol
|
||||
sta ZPMemMgrSPtr+1
|
||||
ldy ZPMemMgrSPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
* OLD CODE
|
||||
*--------------------------------------
|
||||
* stz ZPMemMgrSPtr+1
|
||||
* asl
|
||||
* rol ZPMemMgrSPtr+1
|
||||
* asl
|
||||
* rol ZPMemMgrSPtr+1
|
||||
* asl
|
||||
* rol ZPMemMgrSPtr+1
|
||||
** clc IMPLICIT
|
||||
* adc #MemMgr.Table
|
||||
* tay
|
||||
* lda ZPMemMgrSPtr+1
|
||||
* adc /MemMgr.Table
|
||||
* sty ZPMemMgrSPtr
|
||||
* sta ZPMemMgrSPtr+1
|
||||
* rts
|
||||
*--------------------------------------
|
||||
* In:
|
||||
* Y,A = BINPATH (PSTR)
|
||||
* Out:
|
||||
@ -355,15 +400,16 @@ K.GetMemByIDA stz ZPMemMgrSPtr+1
|
||||
* X = hMem
|
||||
*--------------------------------------
|
||||
K.GetMemByNameYA
|
||||
ldx MemMgr.LastSlot
|
||||
beq .9
|
||||
|
||||
>STYA ZPMemMgrTmp1 save BINPATH
|
||||
>LDYAI MemMgr.Table
|
||||
>STYA ZPMemMgrTmp2
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 cpx MemMgr.LastSlot
|
||||
beq .9
|
||||
|
||||
lda (ZPMemMgrTmp2)
|
||||
.1 lda (ZPMemMgrTmp2)
|
||||
bpl .6 In Use?
|
||||
|
||||
ldy #S.MEM.BIN any BIN PATH in this slot?
|
||||
@ -393,14 +439,14 @@ K.GetMemByNameYA
|
||||
|
||||
.6 lda ZPMemMgrTmp2
|
||||
clc
|
||||
adc #S.MEM.SIZE
|
||||
adc #S.MEM
|
||||
sta ZPMemMgrTmp2
|
||||
bcc .7
|
||||
bcc .8
|
||||
inc ZPMemMgrTmp2+1
|
||||
|
||||
.7 inx
|
||||
|
||||
bra .1
|
||||
.8 inx
|
||||
.81 cpx MemMgr.LastSlot
|
||||
bne .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
@ -419,6 +465,8 @@ K.GarbageCollector
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMemA.ERR >PSTRING "***MemMgr:Attempted to Free an already freed hMem at $%H"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.MEM
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -81,7 +81,7 @@ K.GetPSByIDA sta K.GetPSByIDA.PS
|
||||
.1 inx
|
||||
lda ZPQuickPtr1
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
adc #S.PS
|
||||
sta ZPQuickPtr1
|
||||
bcc .2
|
||||
inc ZPQuickPtr1+1
|
||||
@ -130,7 +130,7 @@ K.Sleep pla get PC LO
|
||||
* we cannot use ZPQuickPtrs1 & 2
|
||||
* because of calling K.NewPStrYA & S.DupEnvA
|
||||
*--------------------------------------
|
||||
PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE
|
||||
PS.CreateChild >LDYAI TskMgr.Table+S.PS
|
||||
>STYA ZPQuickPtr3
|
||||
|
||||
ldx #0
|
||||
@ -143,7 +143,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE
|
||||
bpl .3
|
||||
lda ZPQuickPtr3
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
adc #S.PS
|
||||
sta ZPQuickPtr3
|
||||
bcc .1
|
||||
inc ZPQuickPtr3+1
|
||||
@ -174,7 +174,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE
|
||||
|
||||
.5 sta (ZPQuickPtr3),y Blank Everything in this S.PS
|
||||
iny
|
||||
cpy #S.PS.SIZE
|
||||
cpy #S.PS
|
||||
bne .5
|
||||
|
||||
lda #S.PS.F.ENV
|
||||
|
@ -29,10 +29,7 @@ K.NewPStrYA >STYA ZPQuickPtr1
|
||||
>LDYA ZPQuickPtr2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* K.PStrCpy
|
||||
* IN:
|
||||
|
@ -7,7 +7,7 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
* TSK.TskMgrRun
|
||||
*--------------------------------------
|
||||
TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0
|
||||
TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
|
||||
>STYA pPs
|
||||
|
||||
lda TSKMGR.SIZE
|
||||
@ -78,7 +78,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0
|
||||
|
||||
.7 lda pPs
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
adc #S.PS
|
||||
sta pPs
|
||||
bcc .71
|
||||
inc pPs+1
|
||||
@ -96,7 +96,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0
|
||||
* CC: Event Cleared
|
||||
*--------------------------------------
|
||||
TSK.DispatchEvents
|
||||
>LDYAI TskMgr.Table+S.PS.SIZE
|
||||
>LDYAI TskMgr.Table+S.PS
|
||||
>STYA pPs
|
||||
|
||||
lda TSKMGR.SIZE
|
||||
@ -146,7 +146,7 @@ TSK.DispatchEvents
|
||||
|
||||
.4 lda pPs
|
||||
clc
|
||||
adc #S.PS.SIZE
|
||||
adc #S.PS
|
||||
sta pPs
|
||||
bcc .1
|
||||
inc pPs+1
|
||||
|
Loading…
Reference in New Issue
Block a user