Kernel version 0.8 : switched BNK1 & BNK2 to add more API calls

This commit is contained in:
Rémy GIBERT 2016-10-07 17:28:17 +02:00
parent d0c5f1ce3b
commit 8e7092b3a3
15 changed files with 586 additions and 485 deletions

Binary file not shown.

Binary file not shown.

View File

@ -28,9 +28,9 @@ STARTPROC DHCPCLNT
#CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE
# End Network Section
# GUI Section
INSDRV DHGR.DRV
INSDRV MOUSE.DRV
STARTPROC DESKTOP
#INSDRV DHGR.DRV
#INSDRV MOUSE.DRV
#STARTPROC DESKTOP
# End GUI Section
ECHO *** End A2osX Startup file ***
MAN

View File

@ -80,10 +80,10 @@ TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k
*--------------------------------------
* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes)
*--------------------------------------
MemMgr.Table .EQ $1800
MemMgr.HiMem .EQ $1800 Slot 0 is Reserved
MemMgr.Table .EQ $1800 Slot 0 is Reserved
MemMgr.LoMem .EQ $1800
MemMgr.Free .EQ $1802
MemMgr.LoMem .EQ $1804
MemMgr.HiMem .EQ $1804
MemMgr.LastSlot .EQ $1806
*--------------------------------------
MemMgr.MLoMem .EQ $2000
@ -108,7 +108,7 @@ pDevJmp .EQ $BE19
* $BEE0->$BEEF : Public Variables
*--------------------------------------
A2osX.ASCREEN .EQ $BEE0 Active Screen
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 devices)
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 screen devices)
A2osX.CPUTYPE .EQ $BEE6
A2osX.CPUSPEED .EQ $BEE7 (->255.99 Mhz)
@ -143,109 +143,120 @@ H.BIN.DRV.REL.TABLE .EQ 0
*--------------------------------------
* A2osX.SYSCALL Functions Indexes
*--------------------------------------
SYS.COutA .EQ $00 SYS.FPUTCA
* .EQ $02 SYS.FGETC
SYS.PStrOutYA .EQ $04 SYS.FPUTSYA
* .EQ $06 SYS.FGETS
SYS.HexOutA .EQ $08
SYS.HexOutYA .EQ $0A
SYS.DecOutA .EQ $0C
SYS.DecOutYA .EQ $0E
*--------------------------------------
SYS.NewPStrYA .EQ $10
SYS.PStrCpy .EQ $12
SYS.PStrCat .EQ $14
SYS.PStrMatch .EQ $16
SYS.FileSearch .EQ $00
SYS.GetFullPathYA .EQ $02
SYS.LoadFile .EQ $04
SYS.SaveFile .EQ $06
SYS.PStrUprYA .EQ $18
SYS.PStrLwrYA .EQ $1A
SYS.PStrFTime .EQ $1C
SYS.PStr2StrArrayYA .EQ $1E
* .EQ $08
* .EQ $0A
* .EQ $0C
* .EQ $0E
*--------------------------------------
SYS.ExecProcessNewEnvYA .EQ $20
SYS.ExecProcessYA .EQ $22
SYS.CreateProcessNewEnvYA .EQ $24
SYS.CreateProcessYA .EQ $26
SYS.LoadDrvYA .EQ $10
SYS.LoadLibYA .EQ $12
SYS.UnloadLibA .EQ $14
SYS.LoadExeYA .EQ $16
SYS.GetPSByIDA .EQ $28
* .EQ $2A
SYS.Sleep .EQ $2C
* .EQ $2E
SYS.TimeYA .EQ $18
SYS.CTime2Time .EQ $1A
SYS.PTime2Time .EQ $1C
* .EQ $1E
*--------------------------------------
SYS.GetArgC .EQ $30
SYS.GetArgA .EQ $32
SYS.ExpandPStrYA .EQ $34
* .EQ $36
SYS.PutEnvYA .EQ $38
SYS.SetEnv .EQ $3A
SYS.GetEnvYA .EQ $3C
SYS.UnsetEnvYA .EQ $3E
*--------------------------------------
SYS.FileSearch .EQ $40
SYS.GetFullPathYA .EQ $42
SYS.LoadFile .EQ $44
SYS.SaveFile .EQ $46
* .EQ $48
* .EQ $4A
* .EQ $4C
* .EQ $4E
*--------------------------------------
SYS.LoadDrvYA .EQ $50
SYS.LoadLibYA .EQ $52
SYS.UnloadLibA .EQ $54
SYS.LoadExeYA .EQ $56
SYS.TimeYA .EQ $58
SYS.CTime2Time .EQ $5A
SYS.PTime2Time .EQ $5C
* .EQ $5E
*--------------------------------------
SYS.FOPEN .EQ $60
SYS.FOPEN .EQ $20
SYS.FOPEN.R .EQ $01 Open For Read
SYS.FOPEN.W .EQ $02 Open For Write
SYS.FOPEN.A .EQ $04 Append
SYS.FOPEN.T .EQ $08 Open/Append in Text mode
SYS.FOPEN.X .EQ $80 Create if not exists
SYS.FCLOSEA .EQ $62
SYS.FREAD .EQ $64
SYS.FWRITE .EQ $66
SYS.FCLOSEA .EQ $22
SYS.FREAD .EQ $24
SYS.FWRITE .EQ $26
SYS.FFLUSH .EQ $68
SYS.FSEEK .EQ $6A
SYS.FFLUSH .EQ $28
SYS.FSEEK .EQ $2A
SYS.FSEEK.SET .EQ $00
SYS.FSEEK.CUR .EQ $01
SYS.FSEEK.END .EQ $02
SYS.FTELL .EQ $6C
SYS.FEOF .EQ $6E
SYS.FTELL .EQ $2C
SYS.FEOF .EQ $2E
SYS.REMOVE .EQ $70
SYS.RENAME .EQ $72
SYS.STAT .EQ $74
SYS.REMOVE .EQ $30
SYS.RENAME .EQ $32
SYS.STAT .EQ $34
* .EQ $36
SYS.OPENDIRYA .EQ $38
SYS.READDIRA .EQ $3A
SYS.CLOSEDIRA .EQ $3C
SYS.MKDIRYA .EQ $3E
*--------------------------------------
SYS.COutA .EQ $40 SYS.FPUTCA
* .EQ $42 SYS.FGETC
SYS.PStrOutYA .EQ $44 SYS.FPUTSYA
* .EQ $46 SYS.FGETS
SYS.HexOutA .EQ $48
SYS.HexOutYA .EQ $4A
SYS.DecOutA .EQ $4C
SYS.DecOutYA .EQ $4E
*--------------------------------------
SYS.NewPStrYA .EQ $50
SYS.PStrCpy .EQ $52
SYS.PStrCat .EQ $54
SYS.PStrMatch .EQ $56
SYS.PStrUprYA .EQ $58
SYS.PStrLwrYA .EQ $5A
SYS.PStrFTime .EQ $5C
SYS.PStr2StrArrayYA .EQ $5E
*--------------------------------------
SYS.ExecProcessNewEnvYA .EQ $60
SYS.ExecProcessYA .EQ $62
SYS.CreateProcessNewEnvYA .EQ $64
SYS.CreateProcessYA .EQ $66
SYS.GetPSByIDA .EQ $68
* .EQ $6A
SYS.Sleep .EQ $6C
* .EQ $6E
*--------------------------------------
SYS.GetArgC .EQ $70
SYS.GetArgA .EQ $72
SYS.ExpandPStrYA .EQ $74
* .EQ $76
SYS.OPENDIRYA .EQ $78
SYS.READDIRA .EQ $7A
SYS.CLOSEDIRA .EQ $7C
SYS.MKDIRYA .EQ $7E
SYS.PutEnvYA .EQ $78
SYS.SetEnv .EQ $7A
SYS.GetEnvYA .EQ $7C
SYS.UnsetEnvYA .EQ $7E
*--------------------------------------
SYS.GetMem .EQ $80
SYS.FreeMemA .EQ $82
SYS.GetMemPtrA .EQ $84
SYS.GetMemByIDA .EQ $86
SYS.GetDevByIDA .EQ $80
SYS.GetDevByNameYA .EQ $82
SYS.GetDevInfoA .EQ $84
* .EQ $86
SYS.GetMemByNameYA .EQ $88
SYS.LoadStockObjectYA .EQ $8A
SYS.GetStockObjectA .EQ $8C
SYS.FreeStockObject .EQ $8E
* .EQ $88
* .EQ $8A
* .EQ $8C
* .EQ $8E
*--------------------------------------
SYS.GetDevByIDA .EQ $90
SYS.GetDevByNameYA .EQ $92
SYS.GetDevInfoA .EQ $94
SYS.GetMem .EQ $90
SYS.FreeMemA .EQ $92
SYS.GetMemPtrA .EQ $94
SYS.GetMemByIDA .EQ $96
SYS.GetMemByNameYA .EQ $98
SYS.LoadStockObjectYA .EQ $9A
SYS.GetStockObjectA .EQ $9C
SYS.FreeStockObject .EQ $9E
*--------------------------------------
SYS.SetLoMem .EQ $A0
SYS.GetMemStatYA .EQ $A2
*--------------------------------------
* TO DO :
*--------------------------------------
SYS.MKNOD .EQ $FF
SYS.MKFIFO .EQ $FF
*--------------------------------------

267
SYS/KERNEL.S.D01.txt Normal file
View File

@ -0,0 +1,267 @@
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
DevMgr.Count .EQ 2
DevMgr.SYS.BASL0 .EQ $800
*--------------------------------------
DevMgr.NUL.Code .DA DevMgr.Unsup OPEN
.DA DevMgr.Unsup GETEVENT
.DA .8 COUT
.DA DevMgr.Unsup CLOSE
.DA DevMgr.Unsup GETINFO
.DA DevMgr.Unsup IRQ
.DA DevMgr.Unsup SELECT
.8 clc
rts
*--------------------------------------
DevMgr.SYS.Code .DA DevMgr.SYS.Open
.DA DevMgr.SYS.GetEvent
.DA DevMgr.SYS.COut
.DA DevMgr.Unsup CLOSE
.DA DevMgr.Unsup GETINFO
.DA DevMgr.Unsup IRQ
.DA DevMgr.SYS.Select
*--------------------------------------
DevMgr.Unsup lda #DEVMGR.ERRUNSUP
sec
rts
*--------------------------------------
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
stz DevMgr.SYS.CH
stz DevMgr.SYS.CV
ldx #0
ldy #0
.1 lda DevMgr.SYS.TITLE,y
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 lda #$20
jsr DevMgr.SYS.SetCharAtYX
iny
cpy #80
bne .2
jsr DevMgr.SYS.Home
lda #1
sta A2osX.SCRNDEVS+1
jsr DevMgr.SYS.Select
clc
rts
*--------------------------------------
DevMgr.SYS.GetEvent
lda A2osX.ASCREEN
cmp #2 is SYS active?
bne .9
ldx DevMgr.SYS.CPULOADI
lda DevMgr.SYS.CPULOADC,x
sta DevMgr.SYS.BASL0+38
dex
bpl .1
ldx #3
.1 stx DevMgr.SYS.CPULOADI
lda OPENAPPLE
bmi .9 Open apple key, not for us...
lda KBD
bpl .9
sta KBDSTROBE
and #$7F
ldy #S.EVT.DATALO
sta (pEvent),y
iny S.EVT.DATAHI
lda #0
sta (pEvent),y
lda #S.EVT.F.KEY
sta (pEvent)
clc
rts
.9 lda #0 Error = no event
sec
rts
*--------------------------------------
DevMgr.SYS.COut phx
phy
cmp #' '
bcc .1
ldy DevMgr.SYS.CH
ldx DevMgr.SYS.CV
ora #$80
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
bra .8
.1 cmp #10
bne .2
jsr DevMgr.SYS.LF
bra .8
.2 cmp #13
bne .3
jsr DevMgr.SYS.CROut
bra .8
.3 ora #$20
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
.8 ply
plx
clc
rts
*--------------------------------------
DevMgr.SYS.Select
sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta SETPAGE2
clc
rts
*--------------------------------------
DevMgr.SYS.FSOut
lda DevMgr.SYS.CH
cmp #79
beq DevMgr.SYS.LF1
inc DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.CROut
jsr DevMgr.SYS.ClrEOL
stz DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.LF1 stz DevMgr.SYS.CH
DevMgr.SYS.LF ldx DevMgr.SYS.CV
cpx #23
beq DevMgr.SYS.Scroll
inc DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.ClrEOL
ldx DevMgr.SYS.CV
lda #$A0
ldy DevMgr.SYS.CH
.1 cpy #79
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 rts
*--------------------------------------
DevMgr.SYS.Scroll
ldx #1
.1 lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
inx
lda DevMgr.SYS.BASEL,x
sta ZPDRV+2
lda DevMgr.SYS.BASEH,x
sta ZPDRV+3
ldy #39
sta SETWRITEAUX
sta SETREADAUX
.2 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .2
ldy #39
sta CLRWRITEAUX
sta CLRREADAUX
.3 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .3
cpx #23
bne .1 Fall in ClrLineAtX for last line
*--------------------------------------
DevMgr.SYS.ClrLineAtX
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
lda #$A0
ldy #39
.1 sta SETWRITEAUX
sta (ZPDRV),y
sta CLRWRITEAUX
sta (ZPDRV),y
dey
bpl .1
rts
*--------------------------------------
DevMgr.SYS.Home ldx #23
.1 jsr DevMgr.SYS.ClrLineAtX
dex
bne .1
stz DevMgr.SYS.CH
lda #1
sta DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.SetCharAtYX
cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 phy
pha
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
tya
lsr
tay
bcs .2
sta SETWRITEAUX
.2 pla
sta (ZPDRV),y
sta CLRWRITEAUX
ply
rts
*--------------------------------------
DevMgr.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1
DevMgr.SYS.CPULOADI .BS 1
DevMgr.SYS.CPULOADC .AS -"|/-\"
*--------------------------------------
DevMgr.SYS.TITLE >CSTRING "A2osX System Screen"
DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
*--------------------------------------
DevMgr.LoMem .EQ *
MAN
SAVE SYS/KERNEL.S.D01
LOAD SYS/KERNEL.S
ASM

View File

@ -5,6 +5,11 @@ INC 1
AUTO 6
.LIST OFF
*--------------------------------------
DevMgr.Free .DA DevMgr.LoMem
DevMgr.LastDevID .DA #DevMgr.Count-1
TSKMGR.SIZE .BS 1
TSKMGR.LASTID .BS 1
*--------------------------------------
ENV.DRV >PSTRING "DRV"
ENV.LIB >PSTRING "LIB"
*--------------------------------------

View File

@ -91,266 +91,6 @@ K.GetDevInfoA jsr K.GetDevByIDA
ldx #DEVMGR.GETINFO
jmp (ZPQuickPtr1)
*--------------------------------------
DevMgr.Count .EQ 2
DevMgr.SYS.BASL0 .EQ $800
*--------------------------------------
DevMgr.Free .BS 2
DevMgr.DevID .BS 1
DevMgr.LastDevID .DA #DevMgr.Count-1
*--------------------------------------
DevMgr.NUL.Code .DA DevMgr.Unsup OPEN
.DA DevMgr.Unsup GETEVENT
.DA .8 COUT
.DA DevMgr.Unsup CLOSE
.DA DevMgr.Unsup GETINFO
.DA DevMgr.Unsup IRQ
.DA DevMgr.Unsup SELECT
.8 clc
rts
*--------------------------------------
DevMgr.SYS.Code .DA DevMgr.SYS.Open
.DA DevMgr.SYS.GetEvent
.DA DevMgr.SYS.COut
.DA DevMgr.Unsup CLOSE
.DA DevMgr.Unsup GETINFO
.DA DevMgr.Unsup IRQ
.DA DevMgr.SYS.Select
*--------------------------------------
DevMgr.Unsup lda #DEVMGR.ERRUNSUP
sec
rts
*--------------------------------------
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
stz DevMgr.SYS.CH
stz DevMgr.SYS.CV
ldx #0
ldy #0
.1 lda DevMgr.SYS.TITLE,y
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 lda #$20
jsr DevMgr.SYS.SetCharAtYX
iny
cpy #80
bne .2
jsr DevMgr.SYS.Home
lda #1
sta A2osX.SCRNDEVS+1
jsr DevMgr.SYS.Select
clc
rts
*--------------------------------------
DevMgr.SYS.GetEvent
lda A2osX.ASCREEN
cmp #2 is SYS active?
bne .9
ldx DevMgr.SYS.CPULOADI
lda DevMgr.SYS.CPULOADC,x
sta DevMgr.SYS.BASL0+38
dex
bpl .1
ldx #3
.1 stx DevMgr.SYS.CPULOADI
lda OPENAPPLE
bmi .9 Open apple key, not for us...
lda KBD
bpl .9
sta KBDSTROBE
and #$7F
ldy #S.EVT.DATALO
sta (pEvent),y
iny S.EVT.DATAHI
lda #0
sta (pEvent),y
lda #S.EVT.F.KEY
sta (pEvent)
clc
rts
.9 lda #0 Error = no event
sec
rts
*--------------------------------------
DevMgr.SYS.COut phx
phy
cmp #' '
bcc .1
ldy DevMgr.SYS.CH
ldx DevMgr.SYS.CV
ora #$80
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
bra .8
.1 cmp #10
bne .2
jsr DevMgr.SYS.LF
bra .8
.2 cmp #13
bne .3
jsr DevMgr.SYS.CROut
bra .8
.3 ora #$20
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
.8 ply
plx
clc
rts
*--------------------------------------
DevMgr.SYS.Select
sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta SETPAGE2
clc
rts
*--------------------------------------
DevMgr.SYS.FSOut
lda DevMgr.SYS.CH
cmp #79
beq DevMgr.SYS.LF1
inc DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.CROut
jsr DevMgr.SYS.ClrEOL
stz DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.LF1 stz DevMgr.SYS.CH
DevMgr.SYS.LF ldx DevMgr.SYS.CV
cpx #23
beq DevMgr.SYS.Scroll
inc DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.ClrEOL
ldx DevMgr.SYS.CV
lda #$A0
ldy DevMgr.SYS.CH
.1 cpy #79
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 rts
*--------------------------------------
DevMgr.SYS.Scroll
ldx #1
.1 lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
inx
lda DevMgr.SYS.BASEL,x
sta ZPDRV+2
lda DevMgr.SYS.BASEH,x
sta ZPDRV+3
ldy #39
sta SETWRITEAUX
sta SETREADAUX
.2 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .2
ldy #39
sta CLRWRITEAUX
sta CLRREADAUX
.3 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .3
cpx #23
bne .1 Fall in ClrLineAtX for last line
*--------------------------------------
DevMgr.SYS.ClrLineAtX
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
lda #$A0
ldy #39
.1 sta SETWRITEAUX
sta (ZPDRV),y
sta CLRWRITEAUX
sta (ZPDRV),y
dey
bpl .1
rts
*--------------------------------------
DevMgr.SYS.Home ldx #23
.1 jsr DevMgr.SYS.ClrLineAtX
dex
bne .1
stz DevMgr.SYS.CH
lda #1
sta DevMgr.SYS.CV
rts
*--------------------------------------
DevMgr.SYS.SetCharAtYX
cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 phy
pha
lda DevMgr.SYS.BASEL,x
sta ZPDRV
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
tya
lsr
tay
bcs .2
sta SETWRITEAUX
.2 pla
sta (ZPDRV),y
sta CLRWRITEAUX
ply
rts
*--------------------------------------
DevMgr.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1
DevMgr.SYS.CPULOADI .BS 1
DevMgr.SYS.CPULOADC .AS -"|/-\"
*--------------------------------------
DevMgr.SYS.TITLE >CSTRING "A2osX System Screen"
DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
*--------------------------------------
DevMgr.LoMem .EQ *
MAN
SAVE SYS/KERNEL.S.DEV
LOAD SYS/KERNEL.S

View File

@ -53,7 +53,7 @@ EVT.GetEvents.DEV
>LDYAI DevMgr.Table
>STYA pDev
stz DevMgr.DevID
stz EvtMgr.DevID
.1 ldy #S.DEV.F
lda (pDev),y get S.DEV.F
@ -70,7 +70,7 @@ EVT.GetEvents.DEV
bcs .2 no event
ldy #S.EVT.hDEV
lda DevMgr.DevID
lda EvtMgr.DevID
sta (pEvent),y
jsr EVT.GetEvents.Add
@ -84,8 +84,8 @@ EVT.GetEvents.DEV
bcc .3
inc pDev+1
.3 lda DevMgr.DevID
inc DevMgr.DevID
.3 lda EvtMgr.DevID
inc EvtMgr.DevID
cmp DevMgr.LastDevID
bne .1
@ -133,6 +133,7 @@ EVTMGR.VBLSTATE .BS 1
EVTMGR.10TH.CNT .BS 1
EVTMGR.HZ.CNT .BS 1
EVTMGR.COUNT .BS 1
EvtMgr.DevID .BS 1
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.EVT

View File

@ -7,7 +7,7 @@ AUTO 6
*--------------------------------------
Kernel.Init3 jsr K.DevMgrInit
bcs *
lda #1 SYS device
>SYSCALL SYS.GetDevByIDA
>STYA pDev
@ -71,6 +71,8 @@ Kernel.Init3 jsr K.DevMgrInit
>STYA pPs
>DEBUGOA
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
jmp K.KernelRun
.9 >PUSHA
@ -88,11 +90,11 @@ K.DevMgrInit ldx #S.DEV*DevMgr.Count
stz DevMgr.Table+S.DEV*DevMgr.Count
lda #DevMgr.Count-1
sta DevMgr.LastDevID
* >LDYAI DevMgr.LoMem Hard Coded
* >STYA DevMgr.Free
* lda #DevMgr.Count-1
* sta DevMgr.LastDevID
>LDYAI DevMgr.LoMem
>STYA DevMgr.Free
clc
rts
*--------------------------------------

View File

@ -11,45 +11,7 @@ KERNEL.SYSCALL
*--------------------------------------
* Bank 1
*--------------------------------------
.DA K.COutA $00
.DA 0
.DA K.PStrOutYA
.DA 0
.DA K.HexOutA
.DA K.HexOutYA
.DA K.DecOutA
.DA K.DecOutYA
*--------------------------------------
.DA K.NewPStrYA $10
.DA K.PStrCpy
.DA K.PStrCat
.DA K.PStrMatch
.DA K.PStrUprYA
.DA K.PStrLwrYA
.DA K.PStrFTime
.DA K.PStr2StrArrayYA
*--------------------------------------
.DA K.ExecProcessNewEnvYA $20
.DA K.ExecProcessYA
.DA K.CreateProcessNewEnvYA
.DA K.CreateProcessYA
.DA K.GetPSByIDA
.DA 0
.DA K.Sleep
.DA 0
*--------------------------------------
.DA K.GetArgC $30
.DA K.GetArgA
.DA K.ExpandPStrYA $32
.DA 0
.DA K.PutEnvYA
.DA K.SetEnv
.DA K.GetEnvYA
.DA K.UnsetEnvYA
*--------------------------------------
* Bank 2
*--------------------------------------
.DA K.FileSearch $40
.DA K.FileSearch $00
.DA K.GetFullPathYA
.DA K.LoadFile
.DA K.SaveFile
@ -58,7 +20,7 @@ KERNEL.SYSCALL
.DA 0
.DA 0
*--------------------------------------
.DA K.LoadDrvYA $50
.DA K.LoadDrvYA $10
.DA K.LoadLibYA
.DA K.UnloadLibA
.DA K.LoadExeYA
@ -67,7 +29,7 @@ KERNEL.SYSCALL
.DA K.PTime2Time
.DA 0
*--------------------------------------
.DA K.FOPEN $60
.DA K.FOPEN $20
.DA K.FCLOSEA
.DA K.FREAD
.DA K.FWRITE
@ -76,7 +38,7 @@ KERNEL.SYSCALL
.DA K.FTELLA
.DA K.FEOFA
*--------------------------------------
.DA K.REMOVEYA $70
.DA K.REMOVEYA $30
.DA K.RENAME
.DA K.STAT
.DA 0
@ -85,9 +47,56 @@ KERNEL.SYSCALL
.DA K.CLOSEDIRA
.DA K.MKDIRYA
*--------------------------------------
* Bank 2
*--------------------------------------
.DA K.COutA $40
.DA 0
.DA K.PStrOutYA
.DA 0
.DA K.HexOutA
.DA K.HexOutYA
.DA K.DecOutA
.DA K.DecOutYA
*--------------------------------------
.DA K.NewPStrYA $50
.DA K.PStrCpy
.DA K.PStrCat
.DA K.PStrMatch
.DA K.PStrUprYA
.DA K.PStrLwrYA
.DA K.PStrFTime
.DA K.PStr2StrArrayYA
*--------------------------------------
.DA K.ExecProcessNewEnvYA $60
.DA K.ExecProcessYA
.DA K.CreateProcessNewEnvYA
.DA K.CreateProcessYA
.DA K.GetPSByIDA
.DA 0
.DA K.Sleep
.DA 0
*--------------------------------------
.DA K.GetArgC $70
.DA K.GetArgA
.DA K.ExpandPStrYA
.DA 0
.DA K.PutEnvYA
.DA K.SetEnv
.DA K.GetEnvYA
.DA K.UnsetEnvYA
*--------------------------------------
.DA K.GetDevByIDA $80
.DA K.GetDevByNameYA
.DA K.GetDevInfoA
.DA 0
.DA 0
.DA 0
.DA 0
.DA 0
*--------------------------------------
* $E000
*--------------------------------------
.DA K.GetMem $80
.DA K.GetMem $90
.DA K.FreeMemA
.DA K.GetMemPtrA
.DA K.GetMemByIDA
@ -96,9 +105,8 @@ KERNEL.SYSCALL
.DA K.GetStockObjectA
.DA K.FreeStockObject
*--------------------------------------
.DA K.GetDevByIDA $90
.DA K.GetDevByNameYA
.DA K.GetDevInfoA
.DA K.SetLoMem
.DA K.GetMemStatYA
*--------------------------------------
* LO Byte :
* #RRAMWRAMBNK1 or #RRAMWRAMBNK2
@ -106,7 +114,7 @@ KERNEL.SYSCALL
*--------------------------------------
KERNEL.SYSCALL.FLAGS
*--------------------------------------
.DA #$80 $00 : CIO $D001
.DA #$80 $00
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
@ -124,7 +132,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK1
*--------------------------------------
.DA #$80 $10 : STR $D001
.DA #$80 $10
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
@ -142,7 +150,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK1
*--------------------------------------
.DA #$80 $20 :
.DA #$80 $20
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
@ -151,7 +159,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80 $28 :
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
@ -160,11 +168,11 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK1
*--------------------------------------
.DA #$80 $30 : ARG
.DA #$80 $30
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80 $32 : ENV
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
@ -178,9 +186,9 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK1
*--------------------------------------
* $40 -> $7E
* $40 -> $8E
*--------------------------------------
.DA #$80 $40 : FIO
.DA #$80 $40
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
@ -198,7 +206,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
.DA #$80 $50 :
.DA #$80 $50
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
@ -216,7 +224,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
.DA #$80 $60 :
.DA #$80 $60
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
@ -234,7 +242,7 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
.DA #$80 $70 :
.DA #$80 $70
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
@ -252,7 +260,25 @@ KERNEL.SYSCALL.FLAGS
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
.DA 0 $80 : MemMgr at $E000
.DA #$80 $80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
.DA 0 $90 : MemMgr at $E000
.DA 0
.DA 0
.DA 0
@ -261,13 +287,7 @@ KERNEL.SYSCALL.FLAGS
.DA 0
.DA 0
*--------------------------------------
.DA #$80 $90 :
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.JMP
LOAD SYS/KERNEL.S

View File

@ -9,8 +9,11 @@ AUTO 6
*--------------------------------------
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
ZPMemMgrTmp1 .EQ ZPMEMMGR+2
ZPMemMgrTmp2 .EQ ZPMEMMGR+4
ZPMemMgrTmp3 .EQ ZPMEMMGR+6
ZPMemMgrSrcPtr .EQ ZPMEMMGR+4
ZPMemMgrDstPtr .EQ ZPMEMMGR+6
*--------------------------------------
MemMgr.ReqSize .EQ ZPMEMMGR+8 store requested Size
MemMgr.ReqFlags .EQ ZPMEMMGR+10 store requested Flags
*--------------------------------------
* TODO :
* - Create a 256 bytes table
@ -18,10 +21,6 @@ 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
@ -40,11 +39,11 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
sta SETREADAUX Aux Mem requested,switch to AUX
sta SETWRITEAUX
.11 >PULLAX Store requested size
bit #$0F
beq .10
.11 >PULLAX get requested size
bit #$0F 16 bytes aligned ?
beq .10 yes, request it
and #$F0
and #$F0 align on 16 bytes
clc
adc #$10
bcc .10
@ -57,10 +56,7 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
ldx #0 Current slot=0
lda MemMgr.LastSlot Check if some free slot to reuse first
beq .41
sta MemMgr.SlotCnt
bra .4 skip slot 0, Check if some free slot to reuse first
.1 inx move to next slot
jsr MemMgr.NextSlot
@ -85,10 +81,11 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
cmp MemMgr.ReqSize+1
beq .7 requested size matches slot size !!!
.4 dec MemMgr.SlotCnt any other slot to check?
.4 cpx MemMgr.LastSlot any other slot to check?
bne .1 last one, create a new slot
*-------------- Create a New SLOT
.41 lda MemMgr.ReqFlags
lda MemMgr.ReqFlags
and #S.MEM.F.ALIGN is request needs a page align ?
beq .6
@ -105,6 +102,7 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
.6 >LDYA MemMgr.ReqSize
jsr MemMgr.AddSlot X = new slot
bcs .9
*-------------- Reuse this SLOT
.7 lda MemMgr.ReqFlags get requested flags
ora #S.MEM.F.INUSE mark as in use
@ -306,8 +304,8 @@ K.FreeMemA phy
lda $D000
sta .91+1
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
jsr PS.Select0
@ -328,6 +326,8 @@ K.FreeMemA phy
bit $C000,x
bra *
*--------------------------------------
K.FreeMemA.ERR >PSTRING "***MemMgr:Attempt to Free an already freed hMem at $%H"
*--------------------------------------
* K.GetMemPtrA
* In:
* A = hMem
@ -403,49 +403,48 @@ K.GetMemByNameYA
ldx MemMgr.LastSlot
beq .9
>STYA ZPMemMgrTmp1 save BINPATH
>STYA ZPMemMgrSrcPtr save BINPATH
>LDYAI MemMgr.Table
>STYA ZPMemMgrTmp2
>STYA ZPMemMgrTmp1
ldx #0
.1 lda (ZPMemMgrTmp2)
.1 lda (ZPMemMgrTmp1)
bpl .6 In Use?
ldy #S.MEM.BIN any BIN PATH in this slot?
lda (ZPMemMgrTmp2),y
lda (ZPMemMgrTmp1),y
beq .6
jsr K.GetMemPtrA get pathname
bcs *
>STYA ZPMemMgrTmp3
>STYA ZPMemMgrDstPtr
lda (ZPMemMgrTmp1)
cmp (ZPMemMgrTmp3)
lda (ZPMemMgrSrcPtr)
cmp (ZPMemMgrDstPtr)
bne .6
tay
.2 lda (ZPMemMgrTmp1),y
cmp (ZPMemMgrTmp3),y
.2 lda (ZPMemMgrSrcPtr),y
cmp (ZPMemMgrDstPtr),y
bne .6
dey
bne .2
>LDYA ZPMemMgrTmp2
>LDYA ZPMemMgrTmp1
clc
rts
.6 lda ZPMemMgrTmp2
.6 lda ZPMemMgrTmp1
clc
adc #S.MEM
sta ZPMemMgrTmp2
bcc .8
inc ZPMemMgrTmp2+1
sta ZPMemMgrTmp1
bcc .7
inc ZPMemMgrTmp1+1
.8 inx
.81 cpx MemMgr.LastSlot
.7 inx
cpx MemMgr.LastSlot
bne .1
.9 sec
@ -461,11 +460,62 @@ K.SetLoMem
clc
rts
*--------------------------------------
K.GarbageCollector
clc
K.GetMemStatYA >STYA ZPMemMgrDstPtr
ldy #7
.1 lda MemMgr.Table,y
sta (ZPMemMgrDstPtr),y
dey
bpl .1
ldx #7
ldy #15
sta SETREADAUX
.2 lda MemMgr.Table,x
sta (ZPMemMgrDstPtr),y
dey
dex
bpl .2
sta CLRREADAUX
ldy #16
lda #DevMgr.LoMem
sta (ZPMemMgrDstPtr),y
iny
lda /DevMgr.LoMem
sta (ZPMemMgrDstPtr),y
iny
lda DevMgr.Free
sta (ZPMemMgrDstPtr),y
iny
lda DevMgr.Free+1
sta (ZPMemMgrDstPtr),y
iny
lda #DevMgr.HiMem
sta (ZPMemMgrDstPtr),y
iny
lda /DevMgr.HiMem
sta (ZPMemMgrDstPtr),y
iny
lda DevMgr.LastDevID
sta (ZPMemMgrDstPtr),y
rts
*--------------------------------------
K.FreeMemA.ERR >PSTRING "***MemMgr:Attempted to Free an already freed hMem at $%H"
MEM.GarbageCollector
clc
rts
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.MEM

View File

@ -342,9 +342,8 @@ PS.Select0
>LDYAI TskMgr.Table Make PS #0 as current process
>STYA pPs
bra PS.SelectDev
PS.SelectN
>DEBUG
jsr K.GetPSByIDA
PS.SelectN jsr K.GetPSByIDA
bcs *
>STYA pPs

View File

@ -23,6 +23,13 @@ K.KernelRun jsr TSK.TskMgrRun
bmi .2 Ignore & Discard any timer event
ldy #S.EVT-1
.10 lda (pEvent),y
>PUSHA
dey
bpl .10
>LDYAI MSG.DumpEvent
jsr K.PStrOutYA

View File

@ -165,10 +165,8 @@ TSK.DispatchEvents
TSK.TskMgrQuit clc
rts
*--------------------------------------
TSKMGR.SIZE .BS 1
TSKMGR.COUNT .BS 1
TSKMGR.EVENTCNT .BS 1
TSKMGR.LASTID .BS 1
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.TSK

View File

@ -60,23 +60,6 @@ A2osX.BE00.END .EQ *
A2osX.D001 .EQ *
.PH $D000
.DA #RRAMWRAMBNK1
.INB SYS/KERNEL.S.CIO
.INB SYS/KERNEL.S.STR
.INB SYS/KERNEL.S.PS
.INB SYS/KERNEL.S.ARG
.INB SYS/KERNEL.S.ENV
*--------------------------------------
.INB SYS/KERNEL.S.RUN
.INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK
.EP
A2osX.D001.END .EQ *
*--------------------------------------
* LC AUX $D000 BANK2 API Calls $40-$7E
*--------------------------------------
A2osX.D002 .EQ *
.PH $D000
.DA #RRAMWRAMBNK2
.INB SYS/KERNEL.S.FIO
.INB SYS/KERNEL.S.DRV
.INB SYS/KERNEL.S.LIB
@ -87,6 +70,24 @@ A2osX.D002 .EQ *
.INB SYS/KERNEL.S.PFT
.INB SYS/KERNEL.S.BIN
.EP
A2osX.D001.END .EQ *
*--------------------------------------
* LC AUX $D000 BANK2 API Calls $40-$8E
*--------------------------------------
A2osX.D002 .EQ *
.PH $D000
.DA #RRAMWRAMBNK2
.INB SYS/KERNEL.S.CIO
.INB SYS/KERNEL.S.STR
.INB SYS/KERNEL.S.DEV
.INB SYS/KERNEL.S.PS
.INB SYS/KERNEL.S.ARG
.INB SYS/KERNEL.S.ENV
*--------------------------------------
.INB SYS/KERNEL.S.RUN
.INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK
.EP
A2osX.D002.END .EQ *
*--------------------------------------
* LC AUX $E000 API Calls $80-$FE
@ -98,9 +99,9 @@ A2osX.E000 .EQ *
.INB SYS/KERNEL.S.IRQ
.INB SYS/KERNEL.S.MEM
*--------------------------------------
* Make sure KERNEL.S.DEV is the last one
* Make sure KERNEL.S.D01 is the last one
*--------------------------------------
.INB SYS/KERNEL.S.DEV
.INB SYS/KERNEL.S.D01
.EP
A2osX.E000.END .EQ *
*--------------------------------------