From 8e7092b3a34a4726bb693f34173308dee31bd6fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 7 Oct 2016 17:28:17 +0200 Subject: [PATCH] Kernel version 0.8 : switched BNK1 & BNK2 to add more API calls --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes A2osX.STARTUP.txt | 6 +- INC/A2osX.I.txt | 183 +++++++++++++++------------- SYS/KERNEL.S.D01.txt | 267 +++++++++++++++++++++++++++++++++++++++++ SYS/KERNEL.S.DAT.txt | 5 + SYS/KERNEL.S.DEV.txt | 260 --------------------------------------- SYS/KERNEL.S.EVT.txt | 9 +- SYS/KERNEL.S.INIT3.txt | 12 +- SYS/KERNEL.S.JMP.txt | 150 +++++++++++++---------- SYS/KERNEL.S.MEM.txt | 126 +++++++++++++------ SYS/KERNEL.S.PS.txt | 5 +- SYS/KERNEL.S.RUN.txt | 7 ++ SYS/KERNEL.S.TSK.txt | 2 - SYS/KERNEL.S.txt | 39 +++--- 15 files changed, 586 insertions(+), 485 deletions(-) create mode 100644 SYS/KERNEL.S.D01.txt diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index e883a99106e127aaa4d0ece148345cd5005e6f55..5a861fccf449ab7327c569bc3cf7ea90fe5df56f 100644 GIT binary patch delta 6116 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 delta 25224 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 PtSOghciL<6Pj~!3MK;JS diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index 4fc65ea2..e65f1fd7 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 0f18b00d..df8f1a11 100644 --- a/INC/A2osX.I.txt +++ b/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 *-------------------------------------- diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt new file mode 100644 index 00000000..fe6ae3b9 --- /dev/null +++ b/SYS/KERNEL.S.D01.txt @@ -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 diff --git a/SYS/KERNEL.S.DAT.txt b/SYS/KERNEL.S.DAT.txt index 18c4df5d..68bfc677 100644 --- a/SYS/KERNEL.S.DAT.txt +++ b/SYS/KERNEL.S.DAT.txt @@ -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" *-------------------------------------- diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index a0a5d9b3..e33c09f0 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -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 diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index b82019bd..da10b7aa 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 646663c2..e5aed817 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -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 *-------------------------------------- diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 5f9ea24e..eb71e108 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -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 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index ce376dc2..593b2e25 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 7b64cc52..4736c3c3 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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 diff --git a/SYS/KERNEL.S.RUN.txt b/SYS/KERNEL.S.RUN.txt index 0d9517c9..0971a0e4 100644 --- a/SYS/KERNEL.S.RUN.txt +++ b/SYS/KERNEL.S.RUN.txt @@ -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 diff --git a/SYS/KERNEL.S.TSK.txt b/SYS/KERNEL.S.TSK.txt index 19375387..61f138ce 100644 --- a/SYS/KERNEL.S.TSK.txt +++ b/SYS/KERNEL.S.TSK.txt @@ -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 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 073faa1d..3f3d885a 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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 * *--------------------------------------