mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel version 0.8 : switched BNK1 & BNK2 to add more API calls
This commit is contained in:
parent
d0c5f1ce3b
commit
8e7092b3a3
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -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
|
||||
|
183
INC/A2osX.I.txt
183
INC/A2osX.I.txt
@ -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
267
SYS/KERNEL.S.D01.txt
Normal 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
|
@ -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"
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 *
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user