From 6a25ed8ddbb8f63981aac526f6f70774acb26ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 20 Apr 2018 16:06:41 +0100 Subject: [PATCH] Kernel 0.9.1 : KERNEL, Preemtive mode, task switching debugging --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/PS.S.txt | 2 +- INC/A2osX.I.txt | 13 ++++--- SYS/KERNEL.S.CORE.txt | 78 +++++++++++++++++++++++++++------------ SYS/KERNEL.S.IRQ.txt | 33 +++++++++-------- 6 files changed, 80 insertions(+), 46 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 94940c0b0f846aa0b92711e46df75c3cb13cd4ec..d6ad568cc2e01902a37ec64907fec0c810bde7af 100644 GIT binary patch delta 6757 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 delta 6554 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 delta 7676 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 pPs @@ -26,7 +27,7 @@ CORE.Run lda CORE.PSCount bcc .8 yes, still running.... lda (pPs) get S.PS.F again - and #$FF^S.PS.F.HOLD unmark as HOLD + eor #S.PS.F.HOLD unmark as HOLD sta (pPs) .2 jsr CORE.PSSelect Restore at least ZP & Ptrs @@ -35,7 +36,7 @@ CORE.Run lda CORE.PSCount bit #S.PS.F.SLEEP Is this PS sleeping? beq .3 no, call INIT/RUN - and #$FF^S.PS.F.SLEEP unmark as SLEEP + eor #S.PS.F.SLEEP unmark as SLEEP sta (pPS) jsr CORE.Resume Restore PC....and JMP to @@ -46,8 +47,7 @@ CORE.Run lda CORE.PSCount .3 bit #S.PS.F.INIT beq .4 - and #$FF^S.PS.F.INIT unmark as INIT - ora #S.PS.F.RUN mark as RUN + eor #S.PS.F.INIT+S.PS.F.RUN unmark as INIT,mark as RUN sta (pPS) ldx #TSKMGR.INIT @@ -76,9 +76,14 @@ CORE.Run lda CORE.PSCount ldy #S.PS.RC give it RC sta (ZPPtr1),y -.6 ldx #TSKMGR.QUIT Quit this process +.6 lda (pPs) + eor #S.PS.F.RUN+S.PS.F.QUIT + sta (pPs) + + ldx #TSKMGR.QUIT Quit this process jsr CORE.pCodeJmp Call QUIT function dec IRQ.InKernel + ldy #S.PS.PID lda (pPs),y jsr CORE.PSFree.A @@ -218,10 +223,14 @@ CORE.GetEvents lda #Evt.Table * CS: Not Dispatched * CC: Event Cleared *-------------------------------------- -CORE.Dispatch lda CORE.PSCount - sta CORE.Counter +CORE.Dispatch lda CORE.EvtCount beq .9 + lda CORE.PSCount + beq .9 + + sta CORE.Counter + .1 ldx CORE.Counter lda PS.Table.PID-1,x @@ -249,9 +258,18 @@ CORE.Dispatch lda CORE.PSCount .2 lda (pEvent) Empty event, select next beq .3 + lda (pPs) + ora #S.PS.F.DOEVENT + sta (pPs) + ldx #TSKMGR.DOEVENT jsr CORE.pCodeJmp Call DOEVENT function dec IRQ.InKernel + + lda (pPs) + eor #S.PS.F.DOEVENT + sta (pPs) + bcs .3 not for this PS, try next event in list jsr CORE.DestroyEvent this PS handled the EVT, destroy it... @@ -447,12 +465,15 @@ CORE.Switch php CORE.Sleep php clc + sei + cld + phy ldy #S.PS.A sta (pPs),y lda #S.PS.F.SLEEP - adc #0 C=S.PS.F.PREEMPTED + ora (pPs) sta (pPs) @@ -469,13 +490,16 @@ CORE.Sleep php sta (pPs),y pla get PC LO - clc - adc #1 Advance one byte because of return by RTI - iny #S.PS.PC + plx get PC HI + + inc Advance one byte because of return by RTI + bne .1 + inx + +.1 iny #S.PS.PC sta (pPs),y - pla get PC HI - adc #0 + txa iny #S.PS.PC+1 sta (pPs),y @@ -489,25 +513,27 @@ CORE.Sleep php beq .8 -.1 pla +.2 pla >PUSHA inx - bne .1 + bne .2 -.8 tya push CPU Stack BC to restorre on top of Soft Stack +.8 tya push CPU Stack BC to restore on top of Soft Stack >PUSHA clc exit to kernel with CC rts *-------------------------------------- -CORE.Resume >PULLA Get !BC - tax +CORE.Resume sei + + >PULLA Get !BC + tay beq .2 .1 >PULLA pha - inx + iny bne .1 .2 ldy #S.PS.PC+1 @@ -537,8 +563,14 @@ CORE.Resume >PULLA Get !BC inc IRQ.InKernel rti *-------------------------------------- -CORE.pCodeJmp inc IRQ.InKernel - jmp (pCode) +CORE.pCodeJmp lda pCode+1 + pha + lda pCode + pha + php + sei + inc IRQ.InKernel + rti *-------------------------------------- TSKMGR.EVENTCNT .BS 1 *-------------------------------------- diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 28b88d87..8ae58dc1 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -68,29 +68,25 @@ K.IrqHAuxLC.3 pla pla sta $fe bvc K.IrqHAuxLC.4 no task switching - + php php make room for 2 additional bytes - php keep track of C - tsx - - sec - lda $105,x get RTI PC LO - sbc #1 back one byte, to make it a "RTS" return adddress - sta $105,x - bcs .1 - dec $106,x adjust RTI PC HI + tsx + + lda $104,x get RTI PC LO + bne .1 + dec $105,x adjust RTI PC HI -.1 lda $104,x get IRQ pushed P - sta $102,x down 2 bytes +.1 dec $104,x back one byte, to make it a "RTS" return adddress + + lda $103,x get IRQ pushed P + sta $101,x down 2 bytes lda #CORE.Switch make a RTI like "jsr CORE.Sleep" - sta $103,x + sta $102,x lda /CORE.Switch with RTS=PC IRQ-1 - sta $104,x - - plp + sta $103,x K.IrqHAuxLC.4 ldy #$ff Self Modified K.IrqHAuxLC.5 ldx #$ff Self Modified @@ -136,6 +132,10 @@ K.IrqH.Switch inc IRQ.Tick lda IRQ.InKernel keep V flag set bmi .9 + lda (pPs) + and #S.PS.F.DOEVENT + bne .9 + lda #$A0+'S eor SYS.BASL0+37 sta SYS.BASL0+37 @@ -144,6 +144,7 @@ K.IrqH.Switch inc IRQ.Tick lda (pPs),y inc sta (pPs),y + bvc * .8 clc exit with V flag set rts