From 832cb80c063647df7828d054637f7ef4e3eaa0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 20 Sep 2017 17:09:55 +0200 Subject: [PATCH] Kernel 0.9.1 : Code reorganization & move to CSTR (PS switcher) --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/A2osX.I.txt | 5 +- SBIN/SHELL.S.CSH.txt | 2 +- SYS/KERNEL.S.CORE.txt | 269 ++++++++++++++++++--------------------- SYS/KERNEL.S.INIT.txt | 17 +-- SYS/KERNEL.S.PS.txt | 44 +++++-- 7 files changed, 167 insertions(+), 170 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7193274ed9dd3fb0663132373220a1f14ae0dea8..92a0fc65a08e7525d616e7a99ab630c66bb265e5 100644 GIT binary patch delta 11907 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 R1g=21f{xz$IGFk3e*wtzIuif@ delta 11936 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index ab02b74215be35db99ab67d7f00451e31b3aa1d0..4687a3bddd6be283ccc624e74145f031ea7233de 100644 GIT binary patch delta 15506 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 delta 14891 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.G bCmdBufexec >LDA.G bEcho - beq .80 +* beq .80 >PUSHW ZPCMDBuf >LDYA L.MSG.ECHO diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 003736ec..08a5b6dc 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -8,89 +8,89 @@ SYS.BASL0 .EQ $800 *-------------------------------------- CORE.Run lda CORE.PSCount sta CORE.Counter - beq CORE.Events + bne .1 SHOULD NEVER HAPPEN!!! + jmp CORE.Events .1 ldx CORE.Counter - lda PS.Table.PID-1,x - beq .7 + beq .8 lda PS.Table.hMem-1,x jsr K.GetMemPtr.A >STYA pPS + lda (pPs) get S.PS.F bit #S.PS.F.HOLD Waiting for Another Task to Terminate? beq .2 ldy #S.PS.CPID lda (pPs),y jsr CORE.GetPSByID.A - bcc .7 yes, running.... + bcc .8 yes, still running.... - lda (pPs) get S.PS.F + lda (pPs) get S.PS.F again and #$FF^S.PS.F.HOLD unmark as HOLD sta (pPs) -.2 jsr CORE.PSSelect - - lda (pPS) - bit #S.PS.F.INIT - bne .30 +.2 jsr CORE.PSEnter Restore at least ZP & Ptrs + lda (pPs) get S.PS.F again bit #S.PS.F.SLEEP Is this PS sleeping? - beq .3 no, call TSKMGR.RUN + beq .3 no, call INIT/RUN - jsr CORE.PSWakeUp - bra .4 + and #$FF^S.PS.F.SLEEP unmark as SLEEP + sta (pPS) -.30 and #$FF^S.PS.F.INIT unmark as INIT + jsr CORE.PSResume Restore PC....and JMP to + bcc .7 + bcs .5 + +.3 bit #S.PS.F.INIT + beq .4 + + and #$FF^S.PS.F.INIT unmark as INIT sta (pPS) ldx #TSKMGR.INIT .HS 2C BIT abs -.3 ldx #TSKMGR.RUN +.4 ldx #TSKMGR.RUN -.31 jsr pCodeJmp Call INIT/RUN function + jsr pCodeJmp Call INIT/RUN function + bcc .7 INIT/RUN/RESUME said CS=QUIT? -.4 bcc .7 INIT/RUN said CS=QUIT? - - pha save RC +.5 tax save RC ldy #S.PS.PPID Notify Parent Process for exit code... lda (pPs),y - jsr CORE.GetPSByID.A - bcs .5 parent is dead.....skipping... + jsr CORE.GetPSByID.A X unmodified + bcs .6 parent is dead.....skipping... >STYA ZPPtr1 + lda (ZPPtr1) Parent PS is HOLD? bit #S.PS.F.HOLD - beq .5 no... + beq .6 no... eor #S.PS.F.HOLD yes, release hold... sta (ZPPtr1) - pla ...probably waiting for this PS to terminate.... + txa ...probably waiting for this PS to terminate.... ldy #S.PS.RC give it RC sta (ZPPtr1),y - .HS B0 BCS -.5 pla - -.6 ldx #TSKMGR.QUIT yes, quit this process +.6 ldx #TSKMGR.QUIT Quit this process jsr pCodeJmp Call QUIT function ldy #S.PS.PID lda (pPs),y jsr CORE.PSFree.A + bra .8 -.7 dec CORE.Counter +.7 jsr CORE.PSLeave Save ZP & Ptrs + +.8 dec CORE.Counter bne .1 *-------------------------------------- -CORE.Events stx A2osX.RANDOM16 +CORE.Events jsr CORE.GetEvents - jsr CORE.GetEvents - - txa - eor KBD - sta A2osX.RANDOM16+1 bcs .4 CS=no event jsr CORE.DispatchEvents @@ -116,7 +116,7 @@ CORE.Events stx A2osX.RANDOM16 sta pEvent lda EVTMGR.COUNT bne .1 - +*-------------------------------------- .4 lda A2osX.ASCREEN cmp #2 is SYS active? bne .6 @@ -143,6 +143,7 @@ CORE.Events stx A2osX.RANDOM16 cmp #"5" bcs .8 + sta KBDSTROBE jsr CORE.ScreenSelect .8 jmp CORE.Run *-------------------------------------- @@ -170,7 +171,7 @@ CORE.GetEvents lda #EvtMgr.Table .10 lda VBL get VLINE status tax eor EvtMgr.VBLState - bpl .3 no change,no tick + bpl .3 no change,no tick txa sta EvtMgr.VBLState save new bpl .3 Up2down transition,no tick @@ -224,7 +225,7 @@ CORE.DispatchEvents .1 ldx CORE.Counter lda PS.Table.PID-1,x - beq .4 + beq .5 lda PS.Table.hMem-1,x jsr K.GetMemPtr.A @@ -232,12 +233,12 @@ CORE.DispatchEvents lda (pPs) get S.PS.F bit #S.PS.F.INIT+S.PS.F.HOLD Init or Waiting for Another Task to Terminate? - bne .4 + bne .5 bit #S.PS.F.EVENT Accept Events ? - beq .4 + beq .5 - jsr CORE.PSSelect + jsr CORE.PSEnter lda #EvtMgr.Table sta pEvent Select first event in list @@ -248,10 +249,6 @@ CORE.DispatchEvents .2 lda (pEvent) Empty event, select next beq .3 - lda (pCode) - cmp #H.BIN.HEADER.BIN65 - bne * - ldx #TSKMGR.DOEVENT jsr pCodeJmp Call DOEVENT function bcs .3 not for this PS, try next event in list @@ -268,74 +265,29 @@ CORE.DispatchEvents adc #S.EVT sta pEvent bra .2 + +.4 jsr CORE.PSLeave -.4 dec CORE.Counter +.5 dec CORE.Counter bne .1 -.9 dec +.9 sec rts .8 clc rts *-------------------------------------- -CORE.DumpEvent ldy #S.EVT-1 - -.1 >PUSHB (pEvent),y - dey - bpl .1 - - >LDYAI .2 - jmp K.PrintF.YA - -.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 -*-------------------------------------- -CORE.GetPSByID.A - ldx CORE.PSCount - beq .9 - -.1 cmp PS.Table.PID-1,x - beq .2 - dex - bne .1 - -.9 lda #TSKMGR.ERRNSP - sec +CORE.Quit clc rts - -.2 lda PS.TABLE.hMem-1,x - jmp K.GetMemPtr.A *-------------------------------------- * PS.Free.A * In : A = PID to free *-------------------------------------- -CORE.PSFree.A jsr CORE.GetPSByID.A PS in ZPPtr1 +CORE.PSFree.A sta .1+1 Save PS ID + jsr CORE.GetPSByID.A PS in ZPPtr1 + bcs .9 >STYA ZPPtr1 - stx .1+1 Save Offset in PS.Table - + ldy #S.PS.hSS jsr .8 @@ -358,17 +310,74 @@ CORE.PSFree.A jsr CORE.GetPSByID.A PS in ZPPtr1 ldy #S.PS.hPREFIX jsr .8 -.1 ldx #$ff Self Modified - stz PS.Table.PID-1,x +.1 lda #$ff Self Modified + + ldx CORE.PSCount + +.2 cmp PS.Table.PID-1,x + beq .3 + dex + bne .2 + bra * + +.3 stz PS.Table.PID-1,x lda PS.TABLE.hMem-1,x -.7 jmp K.FreeMem.A + jmp K.FreeMem.A .8 lda (ZPPtr1),y bne .9 .9 rts *-------------------------------------- -CORE.Quit clc +* X unmodofied +*-------------------------------------- +CORE.GetPSByID.A + ldy CORE.PSCount + beq .9 + +.1 cmp PS.Table.PID-1,y + beq .2 + dey + bne .1 + +.9 lda #TSKMGR.ERRNSP + sec rts + +.2 lda PS.TABLE.hMem-1,y + jmp K.GetMemPtr.A +*-------------------------------------- +CORE.DumpEvent ldy #S.EVT-1 + +.1 >PUSHB (pEvent),y + dey + bpl .1 + + >LDYAI .2 + jmp K.PrintF.YA + +.2 >CSTR "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" +*-------------------------------------- +CORE.ScreenSelect + 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 *-------------------------------------- CORE.DestroyEvent lda (pEvent) @@ -397,35 +406,10 @@ CORE.DestroyEvent *-------------------------------------- CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0 >STYA pPs - - >LDYA K.STACK + + >LDYA CORE.S.PS0+S.PS.Context+4 >STYA pStack rts -*-------------------------------------- -CORE.PSSelect ldy #S.PS.hCS - lda (pPs),y - - jsr K.GetMemPtr.A - >STYA pCode - - ldy #S.PS.hDS - lda (pPs),y - beq .1 - - jsr K.GetMemPtr.A - >STYA pData - -.1 ldy #S.PS.hSS - lda (pPs),y - jsr K.GetMemPtr.A - sta pStack+1 - - ldy #S.PS.SP - lda (pPs),y - sta pStack - - clc - rts */-------------------------------------- * # Sleep * Make current process suspend until next RUN @@ -448,11 +432,11 @@ K.Sleep pla get PC LO lda (pPs) ora #S.PS.F.SLEEP sta (pPs) - +*-------------------------------------- CORE.PSLeave ldy #S.PS.Context+23 ldx #23 -.1 lda pPs,x +.1 lda pCode,x sta (pPs),y dey dex @@ -461,11 +445,17 @@ CORE.PSLeave ldy #S.PS.Context+23 clc No error, rts back to Kernel *-------------------------------------- -CORE.PSWakeUp lda (pPs) - and #$FF^S.PS.F.SLEEP unmark as SLEEP - sta (pPS) +CORE.PSEnter ldy #S.PS.Context+23 + ldx #23 - ldy #S.PS.PC +.1 lda (pPs),y + sta pCode,x + dey + dex + bpl .1 + rts +*-------------------------------------- +CORE.PSResume ldy #S.PS.PC lda (pPs),y sec Advance PC by one as it was saved by a JSR adc pCode setup by PS.Select @@ -474,15 +464,6 @@ CORE.PSWakeUp lda (pPs) lda (pPs),y adc pCode+1 sta .8+2 - - ldy #S.PS.Context+23 - ldx #23 - -.1 lda (pPs),y - sta pPs,x - dey - dex - bpl .1 .8 jmp $FFFF *-------------------------------------- diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index eff08a42..0a6adb5b 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -76,9 +76,6 @@ Kernel.Init2 >LDAXI MSG.Init2 >STYA ZPPtr3 jsr Kernel.Move - >LDYAI K.STACK - >STYA pStack init Kernel Soft Stack - sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F cli @@ -409,23 +406,23 @@ PS0Init ldx #S.DEV*2 NUL,SYS >LDYAI CORE.S.PS0 Select Process 0 (Kernel) >STYA pPs - ldy #S.PS-1 - lda #0 - -.2 sta (pPs),y Blank PS0 - dey - bpl .2 - + >LDYAI K.STACKTOP + >STYA pStack + >STYA CORE.S.PS0+S.PS.Context+4 init Kernel Soft Stack + >LDYAI DEV.SYS >SYSCALL MkNod.YA bcs .9 ldy #S.PS.hStdIn sta (pPs),y + sta CORE.S.PS0+S.PS.hStdIn ldy #S.PS.hStdOut sta (pPs),y + sta CORE.S.PS0+S.PS.hStdOut ldy #S.PS.hStdErr sta (pPs),y + sta CORE.S.PS0+S.PS.hStdErr clc .9 rts diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 00d69b5d..b18b1318 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -65,7 +65,7 @@ PS.CreateChild ldx #0 beq .2 lda PS.Table.PID,x - beq .3 Found an empty slot + beq .31 Found an empty slot inx bra .1 @@ -78,7 +78,7 @@ PS.CreateChild ldx #0 .3 inc CORE.PSCount - phx save PS inex +.31 phx save PS inex .4 inc CORE.LastPSID Get a PSID not alredy running beq .4 not = 0 @@ -251,11 +251,18 @@ PS.CmdLine2Args.bInQuote *-------------------------------------- PS.Init jsr BIN.Load.YA Y,A=filename full path bcs .9 - >STYA ZPPtr4 save PTR to Code Segment + + phy + ldy #S.PS.Context+1 + sta (ZPPtr3),y save pCode HI... + dey + pla + sta (ZPPtr3),y save pCode LO... + txa ldy #S.PS.hCS - sta (ZPPtr3),y save CS hMem in TSKSLOT + sta (ZPPtr3),y save CS hMem in S.PS ldy #H.BIN.EXE.DS.SIZE+1 lda (ZPPtr4),y Load DS.SIZE HI @@ -271,29 +278,40 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path jsr K.GetMem0.YA bcs .9 + phy + ldy #S.PS.Context+3 + sta (ZPPtr3),y save pData HI... + dey + pla + sta (ZPPtr3),y save pData LO... + txa ldy #S.PS.hDS - sta (ZPPtr3),y save DS hMem in TSKSLOT + sta (ZPPtr3),y save DS hMem in S.PS .2 ldy #H.BIN.EXE.SS.SIZE - lda (ZPPtr4),y Load SS.SIZE.LO + lda (ZPPtr4),y Load SS.SIZE + ldy #S.PS.Context+4 + sta (ZPPtr3),y save pStack LO... - ldy #S.PS.SP - sta (ZPPtr3),y Init SP to top of hSS + tay - lda #0 - tay bne .3 SS.SIZE.LO=0, set as default $100 - inc SS.SIZE.HI + lda #1 SS.SIZE.HI + .HS 2C bit abs +.3 lda #0 -.3 >PUSHYA + >PUSHYA >PUSHBI S.MEM.F.ALIGN jsr K.GetMem bcs .9 + ldy #S.PS.Context+5 + sta (ZPPtr3),y save pStack HI...(LO alredy set to Stack TOP) + txa ldy #S.PS.hSS - sta (ZPPtr3),y save SS hMem in TSKSLOT + sta (ZPPtr3),y save SS hMem in S.PS clc .9 rts