diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index e883a991..5a861fcc 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index d0cf3a96..0caf1ddf 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ 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 * *--------------------------------------