From d4db5090af3a5c742ac234e7606fb7fb91aa682d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 31 Aug 2017 17:35:15 +0200 Subject: [PATCH] Kernel 0.9.1 : Code reorganization & move to CSTR (PS & Stacks) --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/A2osX.I.txt | 37 ++++---- INC/MACROS.I.txt | 15 ++-- SYS/KERNEL.S.CORE.txt | 184 ++++++++++++++++++++------------------- SYS/KERNEL.S.GP.txt | 10 ++- SYS/KERNEL.S.INIT.txt | 36 ++++---- SYS/KERNEL.S.MEM.txt | 15 ++-- SYS/KERNEL.S.PS.txt | 79 +++++++++++------ SYS/KERNEL.S.txt | 1 - 10 files changed, 205 insertions(+), 172 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ac0c090a027dd932d8ed946f5b70f251ccd1dc93..93a31c8d32beaa4f54a07f5abe6b4211a799002f 100644 GIT binary patch delta 18503 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 S_=w>nfsg;6@p}Q&Z~Z?!tD|xN delta 18277 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 O_i@nM_+#1Rd;bsj+I1!X diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index a06631aae041471e8b42ef44eb71f4828d8848e7..e6c6392f9be75d3c068ca73066ba9f81d6f072e0 100644 GIT binary patch delta 26842 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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 1e488d6d..2eb3b2c4 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -17,27 +17,24 @@ K.PS.MAX .EQ 32 *-------------------------------------- ZPKERNEL .EQ $0 *-------------------------------------- -ZPMEMMGR .EQ $10 +ZPMEMMGR .EQ $8 *-------------------------------------- -pCode .EQ $20 -pData .EQ $22 -pStack .EQ $24 +pCode .EQ $10 +pData .EQ $12 +pLocal .EQ $14 +pStack .EQ $16 -*pLib .EQ $26 -pDrv .EQ $28 - -pPs .EQ $2A -pDev .EQ $2C -pEvent .EQ $2E +pDrv .EQ $18 +pPs .EQ $1A +pDev .EQ $1C +pEvent .EQ $1E *-------------------------------------- -ZPBIN .EQ $30 +ZPBIN .EQ $20 +ZPDRV .EQ $30 +ZPLIB .EQ $40 32 bytes for TCPIP *-------------------------------------- * $42-$47 ProDOS Block Device Drivers Main -*-------------------------------------- -* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) -*-------------------------------------- -ZPDRV .EQ $D0 -ZPLIB .EQ $E0 32 bytes for TCPIP +* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- * Memory Map *-------------------------------------- @@ -65,7 +62,7 @@ K.MLI.PATH .EQ $03B0 64+1 -> $03D0 *-------------------------------------- K.Buf256 .EQ $0D00 Main *-------------------------------------- -K.STACK .EQ $0F00 Up to $0FFF +K.STACK .EQ $0F00 from $0fff down to $f00 *-------------------------------------- *** Z80 Reserved $0F00-10FF*** *-------------------------------------- @@ -101,7 +98,7 @@ DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC A2osX.SYSCALL .EQ $BD00 A2osX.LIBCALL .EQ $BD03 A2osX.MLICALL .EQ $BD06 -* +A2osX.ROMCALL .EQ $BD09 A2osX.BADCALL .EQ $BD0C *-------------------------------------- pCodeJmp .EQ $BD10 @@ -452,8 +449,8 @@ S.PS.CPID .EQ 3 S.PS.hCS .EQ 4 S.PS.hDS .EQ 5 S.PS.hSS .EQ 6 -S.PS.hENV .EQ 7 -* +S.PS.SP .EQ 7 +S.PS.hENV .EQ 8 S.PS.hPREFIX .EQ 9 S.PS.hStdIn .EQ 10 S.PS.hStdOut .EQ 11 diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 64a4d296..27321882 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -26,6 +26,12 @@ AUTO 6 ldx #SYS.]1 jsr A2osX.SYSCALL .EM +*-------------------------------------- + .MA LIBCALL + ldy ]1 + ldx #]2 + jsr A2osX.LIBCALL + .EM *-------------------------------------- .MA MLICALL ldx #]1 @@ -103,16 +109,9 @@ AUTO 6 .FIN .DO ]1=MLIGETBUF lda #2 - .FIN - + .FIN jsr A2osX.MLICALL .EM -*-------------------------------------- - .MA LIBCALL - ldy ]1 - ldx #]2 - jsr A2osX.LIBCALL - .EM *-------------------------------------- * D.STACK PUSH/PULL Macros *-------------------------------------- diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 4144031b..41449888 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -17,8 +17,7 @@ CORE.Run jsr CORE.TskMgrRun jsr CORE.DispatchEvents bcc .4 CC=All Events Dispatched - >LDYAI TskMgr.Table Select PS0 - >STYA pPs + jsr PS.Select0 lda #EvtMgr.Table sta pEvent @@ -48,7 +47,9 @@ CORE.Run jsr CORE.TskMgrRun sta SYS.BASL0+38 dex bpl .5 + ldx #3 + .5 stx SYS.CPULOADI .6 bit OPENAPPLE @@ -63,27 +64,8 @@ CORE.Run jsr CORE.TskMgrRun cmp #"5" bcs CORE.Run - sta KBDSTROBE - - and #$0F - cmp A2osX.ASCREEN Same as active screen...nothing to do - beq CORE.Run - - tax - - lda A2osX.SCRNDEVS-1,x - beq CORE.Run No device claimed this screen - - jsr K.GetDevByID.A x unmodified..... - bcs CORE.Run ??? - - stx A2osX.ASCREEN - - >STYA pDev - - ldx #DEVMGR.CONTROL - jsr pDevJmp - jmp CORE.Run + jsr CORE.ScreenSelect + bra CORE.Run *-------------------------------------- CORE.DumpEvent ldy #S.EVT-1 @@ -96,6 +78,30 @@ CORE.DumpEvent ldy #S.EVT-1 .2 >CSTR "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" *-------------------------------------- +CORE.ScreenSelect + sta KBDSTROBE + + and #$0F + cmp A2osX.ASCREEN Same as active screen...nothing to do + beq .8 + + tax + + lda A2osX.SCRNDEVS-1,x + beq .8 No device claimed this screen + + jsr K.GetDevByID.A x unmodified..... + bcs .8 ??? + + stx A2osX.ASCREEN + + >STYA pDev + + ldx #DEVMGR.CONTROL + jmp pDevJmp + +.8 rts +*-------------------------------------- SYS.CPULOADI .BS 1 SYS.CPULOADC .AS "|/-\" *-------------------------------------- @@ -185,6 +191,70 @@ CORE.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0 .8 clc rts *-------------------------------------- +* CORE.GetEvents : +* IN : +* OUT : +* CS = no event, A = ERROR +* CC * event in YA +* (pEvent) +*-------------------------------------- +CORE.GetEvents lda #EvtMgr.Table + sta pEvent point to start of event list + + stz EvtMgr.Count reset Size + + lda K.IrkMgr.VBL do we have IRQ enabled for VBL ? + bpl .10 no, regular poll + + lda K.IrkMgr.VBLINT + beq .3 no + + dec K.IrkMgr.VBLINT + bra .11 + +.10 lda VBL get VLINE status + tax + eor EvtMgr.VBLState + bpl .3 no change,no tick + txa + sta EvtMgr.VBLState save new + bpl .3 Up2down transition,no tick + +.11 inc A2osX.TIMER16 + bne .1 + inc A2osX.TIMER16+1 + +.1 dec EvtMgr.HZ.CNT + bne .3 not yet 100ms + + ldx A2osX.HZ + stx EvtMgr.HZ.CNT + + lda #S.EVT.F.T10TH + + dec EvtMgr.10TH.CNT + bne .2 + + ldx #10 + stx EvtMgr.10TH.CNT + + ora #S.EVT.F.T1SEC + +.2 sta (pEvent) + inc EvtMgr.Count Add one event to Queue + + lda pEvent + clc + adc #S.EVT + sta pEvent if CS, EVT queue full!!! ($100) + +.3 sec + lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event" + beq .9 + +.8 clc +.9 rts +*-------------------------------------- CORE.PSWakeUp and #$FF^S.PS.F.SLEEP unmark as SLEEP sta (pPS) @@ -280,74 +350,6 @@ CORE.TskMgrQuit clc TskMgr.Idx .BS 1 TSKMGR.EVENTCNT .BS 1 *-------------------------------------- -* CORE.GetEvents : -* IN : -* OUT : -* CS = no event, A = ERROR -* CC * event in YA -* (pEvent) -*-------------------------------------- -CORE.GetEvents lda #EvtMgr.Table - sta pEvent point to start of event list - - stz EvtMgr.Count reset Size - - lda K.IrkMgr.VBL do we have IRQ enabled for VBL ? - bpl .10 no, regular poll - - lda K.IrkMgr.VBLINT - beq .3 no - - dec K.IrkMgr.VBLINT - bra .11 - -.10 lda VBL get VLINE status - tax - eor EvtMgr.VBLState - bpl .3 no change,no tick - txa - sta EvtMgr.VBLState save new - bpl .3 Up2down transition,no tick - -.11 inc A2osX.TIMER16 - bne .1 - inc A2osX.TIMER16+1 - -.1 dec EvtMgr.HZ.CNT - bne .3 not yet 100ms - - ldx A2osX.HZ - stx EvtMgr.HZ.CNT - - lda #S.EVT.F.T10TH - - dec EvtMgr.10TH.CNT - bne .2 - - ldx #10 - stx EvtMgr.10TH.CNT - - ora #S.EVT.F.T1SEC - -.2 sta (pEvent) - jsr CORE.GetEvents.Add -.3 - sec - lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event" - beq .9 - -.8 clc -.9 rts -*-------------------------------------- -CORE.GetEvents.Add - inc EvtMgr.Count Add one event to Queue - - lda pEvent - clc - adc #S.EVT - sta pEvent - rts if CS, EVT queue full!!! ($100) -*-------------------------------------- CORE.DestroyEvent lda (pEvent) beq .9 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 80b551c3..098cbc55 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -29,7 +29,13 @@ AUTO 6 *-------------------------------------- jmp A2osX.MLICALL1 *-------------------------------------- - jmp * SPARE +* MLICALL (AUXLC to MAINLC) +* Used by Kernel +* In: +* X = MLI Function +* A = Param Count +*-------------------------------------- + jmp A2osX.ROMCALL1 *-------------------------------------- * BADCALL *-------------------------------------- @@ -95,6 +101,8 @@ A2osX.MLICALL1 stx .1 jsr GO.A2osX rts *-------------------------------------- +A2osX.ROMCALL1 bra * +*-------------------------------------- * A2osX.DIIDrv * X = DEVMGR.cmd * Y,A = PTR to Params diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 5ec5082d..e99c9a60 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -77,7 +77,7 @@ Kernel.Init2 >LDAXI MSG.Init2 jsr Kernel.Move >LDYAI K.STACK - >STYA pStack init Soft Stack + >STYA pStack init Kernel Soft Stack sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F @@ -107,28 +107,18 @@ Kernel.Init3 sta SETALTZP >LDYAI MSG.Init3 >SYSCALL PrintF.YA - >LDYAI MSG.DEV - >SYSCALL PrintF.YA jsr DevMgrInit bcs * - >LDYAI MSG.IRQ - >SYSCALL PrintF.YA jsr IrqMgrInit bcs * - >LDYAI MSG.EVT - >SYSCALL PrintF.YA jsr EvtMgrInit bcs * - >LDYAI MSG.FLT - >SYSCALL PrintF.YA jsr FltMgrInit bcs * - >LDYAI MSG.TSK - >SYSCALL PrintF.YA jsr TskMgrInit bcs * @@ -463,7 +453,9 @@ SETMOUSE .EQ $12 Sets mouse mode SERVEMOUSE .EQ $13 Services mouse interrupt READMOUSE .EQ $14 Reads mouse position *-------------------------------------- -IrqMgrInit php +IrqMgrInit >LDYAI MSG.IRQ + >SYSCALL PrintF.YA + php sei >LDYA $FFFE >STYA K.IrqMgrOldFFFE @@ -548,13 +540,18 @@ IrqMgrInit php inc K.IrkMgr.VBL set=1 awaiting IrqMgr confirmation plp + >LDYAI MSG.IRQ.VBL + >SYSCALL PrintF.YA clc rts *-------------------------------------- Mouse.OFS .HS 05070B0CFB Mouse.SIG .HS 38180120D6 *-------------------------------------- -DevMgrInit stz ZPPtr1 +DevMgrInit >LDYAI MSG.DEV + >SYSCALL PrintF.YA + + stz ZPPtr1 lda #$C1 sta ZPPtr1+1 lda #1 @@ -729,7 +726,9 @@ SP.DEV.STATUS.DEVID SP.DEV.STATUS.DATA .BS S.DEVSTAT *-------------------------------------- -EvtMgrInit lda #$A5 +EvtMgrInit >LDYAI MSG.EVT + >SYSCALL PrintF.YA + lda #$A5 sta A2osX.TIMER16 lda #$9B sta A2osX.TIMER16+1 @@ -739,11 +738,15 @@ EvtMgrInit lda #$A5 clc rts *-------------------------------------- -FltMgrInit stz FltMgr.Table +FltMgrInit >LDYAI MSG.FLT + >SYSCALL PrintF.YA + stz FltMgr.Table clc rts *-------------------------------------- -TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0 +TskMgrInit >LDYAI MSG.TSK + >SYSCALL PrintF.YA + >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0 >STYA .2+1 ldx #K.PS.MAX-1 @@ -813,6 +816,7 @@ MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n" MSG.Init3 >CSTR "A2osX[Stage3]:Init\r\n" MSG.DEV >CSTR "-Device Manager...\r\n" MSG.IRQ >CSTR "-Interrupt Manager...\r\n" +MSG.IRQ.VBL >CSTR " (VBL IRQ Activated)\r\n" MSG.EVT >CSTR "-Event Manager...\r\n" MSG.FLT >CSTR "-Path Filter...\r\n" MSG.TSK >CSTR "-Task Manager...\r\n" diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index b3daf690..af17d536 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -8,11 +8,8 @@ AUTO 6 *-------------------------------------- ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected ZPMemMgrTmp1 .EQ ZPMEMMGR+2 -ZPMemMgrSrcPtr .EQ ZPMEMMGR+4 -ZPMemMgrDstPtr .EQ ZPMEMMGR+6 -*-------------------------------------- -MemMgr.ReqSize .EQ ZPMEMMGR+8 store requested Size -MemMgr.ReqFlags .EQ ZPMEMMGR+10 store requested Flags +MemMgr.ReqSize .EQ ZPMEMMGR+4 store requested Size +MemMgr.ReqFlags .EQ ZPMEMMGR+6 store requested Flags *-------------------------------------- * TODO : * - Create a 256 bytes table @@ -456,12 +453,12 @@ K.SetLoMem * ## Out: * Buffer filled with memory stats *\-------------------------------------- -K.GetMemStat.YA >STYA ZPMemMgrDstPtr +K.GetMemStat.YA >STYA ZPMemMgrTmp1 ldy #6 .1 lda MemMgr.Table,y - sta (ZPMemMgrDstPtr),y + sta (ZPMemMgrTmp1),y dey bpl .1 @@ -472,7 +469,7 @@ K.GetMemStat.YA >STYA ZPMemMgrDstPtr sta SETREADAUX .2 lda MemMgr.Table,x - sta (ZPMemMgrDstPtr),y + sta (ZPMemMgrTmp1),y dey dex bpl .2 @@ -483,7 +480,7 @@ K.GetMemStat.YA >STYA ZPMemMgrDstPtr ldy #22 .3 lda DevMgr.Stat,x - sta (ZPMemMgrDstPtr),y + sta (ZPMemMgrTmp1),y dey dex bpl .3 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index efb90522..871cce82 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -92,25 +92,15 @@ K.CreateProcess.YA stx K.CreateProcess.Flags >STYA K.CreateProcess.CmdLine - jsr PS.CreateChild + jsr PS.CreateChild Child S.PS at ZPPtr3 bcs .9 sta .8+1 >LDYA K.CreateProcess.CmdLine - jsr PS.CmdLine2Args + jsr PS.CmdLine2Args Y,A = Args[0] bcs .9 - - phy save PTR to Args[0]... - pha - - txa - ldy #S.PS.hARGS - sta (ZPPtr3),y - - pla Restore PTR... - ply - + jsr PS.Init bcc .8 @@ -190,7 +180,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS ldy #S.PS.hPREFIX copy hPREFIX... lda (pPs),y jsr K.GetMemPtr.A - jsr K.NewPStr.YA + jsr K.NewCStr.YA bcs .9 txa @@ -267,11 +257,15 @@ PS.CmdLine2Args >STYA ZPPtr1 .3 jsr K.GetMem.YA bcs .9 - phx save hMem + phy save PTR.LO pha save PTR.HI >STYA ZPPtr2 + txa + ldy #S.PS.hARGS + sta (ZPPtr3),y + stz PS.CmdLine2Args.bInQuote ldy #0 @@ -306,9 +300,13 @@ PS.CmdLine2Args >STYA ZPPtr1 .8 lda #0 sta (ZPPtr2) set Array Ending 0 + txa + ldy #S.PS.ARGC + sta (ZPPtr3),y + pla get back PTR.HI ply get back PTR.LO - plx get back hMem + clc .9 rts @@ -341,18 +339,21 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path ldy #S.PS.hDS sta (ZPPtr3),y save DS hMem in TSKSLOT -.2 ldy #H.BIN.EXE.SS.SIZE+1 - lda (ZPPtr4),y Load DS.SIZE HI - tax - dey - ora (ZPPtr4),y +.2 ldy #H.BIN.EXE.SS.SIZE + lda (ZPPtr4),y Load SS.SIZE.LO + pha - beq * SS.SIZE=0!!!! + dec - lda (ZPPtr4),y - tay - txa Y,A = DS.SIZE - jsr K.GetMem0.YA + ldy #S.PS.SP + sta (ZPPtr3),y + + phy SS.SIZE.LO.... + + bne .3 SS.SIZE=0, set as default $100 + inc SS.SIZE.HI + +.3 jsr K.GetMem0.YA bcs .9 txa @@ -399,6 +400,13 @@ PS.Free.A.PsY lda (ZPPtr1),y beq PS.Free.A.RTS jmp K.FreeMem.A *-------------------------------------- +PS.Select0 >LDYAI TskMgr.Table Select PS0 + >STYA pPs + + lda K.STACK+$ff + >STYA pStack + rts +*-------------------------------------- PS.Select ldy #S.PS.hCS lda (pPs),y @@ -419,7 +427,26 @@ PS.Select ldy #S.PS.hCS jsr K.GetMemPtr.A >STYA pStack + iny +* ldy #S.PS.SP + lda pStack + clc + adc (pPs),y + sta pStack + bcc .8 + inc pStack+1 + .8 clc + rts +*-------------------------------------- +PS.Leave ldy #S.PS.hSS + lda (pPs),y + jsr K.GetMemPtr.A + + + + + rts *-------------------------------------- * PS.DupEnv.A diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 725a34e2..d34688c2 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -18,7 +18,6 @@ ZPPtr1 .EQ ZPKERNEL ZPPtr2 .EQ ZPKERNEL+2 ZPPtr3 .EQ ZPKERNEL+4 ZPPtr4 .EQ ZPKERNEL+6 -ZPPStr1 .EQ ZPKERNEL+8 .INB /A2OSX.SRC/SYS/KERNEL.S.INIT .INB /A2OSX.SRC/X.PRINTF.S