From dc36e6373d0e295e236cdff15461e219f1bad321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 15 May 2021 16:35:24 +0200 Subject: [PATCH] Kernel 0.94++ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SH.S.CMD.txt | 9 ++-- BIN/SH.S.HIS.txt | 9 ++-- SYS/KERNEL.S.CORE.txt | 9 ++++ SYS/KERNEL.S.INIT.txt | 1 + SYS/KERNEL.S.MD5X.txt | 39 ++++++++-------- SYS/KERNEL.S.MEM.txt | 13 +++--- SYS/KERNEL.S.STRVX.txt | 94 +++++++++++++++++++-------------------- 8 files changed, 90 insertions(+), 84 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3c64be386e2c0a6e365ac8ac284541395fdf0551..d32b6355a4e484ae2f4b8883ef59494ee21f6bdc 100644 GIT binary patch delta 30503 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 delta 30864 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 A6951J diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 975b6169..3f317c62 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -245,24 +245,23 @@ CMD.SET.GET >PUSHW ZPVarNamePtr rts .8 clc - rts +CMD.SET.RTS rts *-------------------------------------- CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`" jsr IO.Pipe.Out - bcs .9 + bcs CMD.SET.RTS jsr IO.Exec - bcs .9 + bcs CMD.SET.RTS jsr IO.Pipe.In - bcs .9 + bcs CMD.SET.RTS * clc Silent Mode jsr CL.ReadReset jmp CMD.READ.VAR -.9 rts *-------------------------------------- CMD.DATE >PUSHEA.G TimeBuf >SYSCALL Time diff --git a/BIN/SH.S.HIS.txt b/BIN/SH.S.HIS.txt index 8d1e0351..72e14a82 100644 --- a/BIN/SH.S.HIS.txt +++ b/BIN/SH.S.HIS.txt @@ -29,15 +29,13 @@ HIS.Add >LDA.G HIS.hBuf .1 inc >STA.G HIS.LRU - tax - >DEBUG bra .7 .2 inc >STA.G HIS.Count - tax -.7 >PUSHB.G HIS.hBuf +.7 tax + >PUSHB.G HIS.hBuf >PUSHBI 0 txa >PUSHA @@ -80,6 +78,9 @@ HIS.Select >LDA.G HIS.Count >STZ.G HIS.Index + lda #0 + sta (ZPCLBuf) + >SYSCALL GetChar bcs HIS.Select.RTS diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 1ea8a324..6d596390 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -546,6 +546,7 @@ CORE.IRQ.Switch inc IRQ.Tick lda (pPS),y eor #S.PS.S.RUN bne .9 + lda IRQ.InLib bmi .9 we are in LIB, no switching @@ -553,20 +554,28 @@ CORE.IRQ.Switch inc IRQ.Tick rts *-------------------------------------- CORE.IRQ.DEV ldx #0 + .1 lda IRQ.Vectors+1,x beq .9 + sta .10+2 lda IRQ.Vectors,x sta .10+1 + phx + .10 jsr $ffff SELF MODIFIED + plx bcc .8 CC, IRQ cleared by device + .2 inx inx .3 cpx #K.IRQDEV.MAX*2 bne .1 + .9 sec + .8 clv clear V (no task switching) rts *-------------------------------------- diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index e4f652a7..acef9551 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -1018,6 +1018,7 @@ IrqMgrInit.Mouse sec rts + .4 lda ZPPtr1+1 sta .11+2 diff --git a/SYS/KERNEL.S.MD5X.txt b/SYS/KERNEL.S.MD5X.txt index 94c79849..3e96cc4a 100644 --- a/SYS/KERNEL.S.MD5X.txt +++ b/SYS/KERNEL.S.MD5X.txt @@ -4,6 +4,7 @@ NEW .DUMMY ZPTMP,6 .OR ZPTMP 29 bytes ZPCtxPtr .BS 2 +ZPDataLen .BS 2 ZPChunkLen .BS 2 .ED *-------------------------------------- @@ -82,23 +83,21 @@ MD5X.MD5 ldy #$ff jsr SHARED.TXTPTRgY bne .1 - sty FORPNT - stz FORPNT+1 + sty ZPDataLen + stz ZPDataLen+1 jsr MD5X.Init - bcs .9 + bcs MD5X.RTS pha save MD5 Context hMem jsr MD5X.Update.I jmp MD5X.Finalize.I - -.9 rts *-------------------------------------- MD5X.Init >LDYAI S.MD5 jsr K.GetMem - bcs .9 + bcs MD5X.RTS >STYA ZPCtxPtr @@ -120,28 +119,28 @@ MD5X.Init >LDYAI S.MD5 txa clc -.9 rts + +MD5X.RTS rts *-------------------------------------- MD5X.Update jsr K.GetMemPtr get MD5 Context >STYA ZPCtxPtr + >LDYA FORPNT + >STYA ZPDataLen + MD5X.Update.I ldy #S.MD5.FINALIZED lda (ZPCtxPtr),y - beq .1 - sec - rts + bne MD5X.RTS -.1 lda FORPNT+1 More than 256 Bytes remaining to hash ? +.1 lda ZPDataLen+1 More than 256 Bytes remaining to hash ? bne .3 yes - lda FORPNT - bne .2 Len = O ? + lda ZPDataLen + clc + beq MD5X.RTS Len = O, all data processed - clc All data processed - rts - -.2 cmp #64 More than 64 Bytes remaining to hash ? + cmp #64 More than 64 Bytes remaining to hash ? bcc .50 yes .3 lda #64 @@ -181,13 +180,13 @@ MD5X.Update.I ldy #S.MD5.FINALIZED .58 jsr MD5Transform jsr MD5UpdateABCD0 -.8 lda FORPNT Substract Bytes processed from LEN +.8 lda ZPDataLen Substract Bytes processed from LEN sec sbc ZPChunkLen get back chunk Len - sta FORPNT + sta ZPDataLen bcs .81 - dec FORPNT+1 + dec ZPDataLen+1 .81 lda TXTPTR Add Bytes processed to DATA clc diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index ac2742cb..8ff1c165 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -360,7 +360,10 @@ K.FreeMem tay lda (ZPMemMgrSPtr) In use ? bpl K.FreeMem.ERR - jsr MEM.DecRefCnt only one left ? + ldy #S.MEM.REFCNT + lda (ZPMemMgrSPtr),y + dec only one left ? + sta (ZPMemMgrSPtr),y bne .8 no, must be a code segment loaded several times lda (ZPMemMgrSPtr) @@ -458,12 +461,6 @@ Mem.IncRefCnt ldy #S.MEM.REFCNT inc sta (ZPMemMgrSPtr),y rts -*-------------------------------------- -Mem.DecRefCnt ldy #S.MEM.REFCNT - lda (ZPMemMgrSPtr),y - dec - sta (ZPMemMgrSPtr),y - rts */-------------------------------------- * # NewStkObj * Y,A = Size Requested @@ -659,11 +656,13 @@ MEM.GetKrnlBuf pha pla adc DevMgr.Free+1 bcs .99 we crossed $FFFF, out of mem + cpx #DevMgr.HiMem pha sbc /DevMgr.HiMem pla bcs .99 No More Room... + ldy DevMgr.Free stx DevMgr.Free ldx DevMgr.Free+1 diff --git a/SYS/KERNEL.S.STRVX.txt b/SYS/KERNEL.S.STRVX.txt index de89d7a8..502a8c03 100644 --- a/SYS/KERNEL.S.STRVX.txt +++ b/SYS/KERNEL.S.STRVX.txt @@ -22,7 +22,7 @@ STRVX.StrVNew jsr K.GetMem *-------------------------------------- STRVX.StrVSet jsr STRVX.GetID bcs .7 - + ldy #$ff .1 iny @@ -31,70 +31,68 @@ STRVX.StrVSet jsr STRVX.GetID tya -* clc +* clc adc #4 LEN+IDlo+IDhi+\0 - bcs .99 - + bcs .9 + cmp (ZPPtr1) bne .4 - + lda ZPPtr1 Same Length, replace clc adc #3 sta ZPPtr1 bcc .2 - + inc ZPPtr1+1 - + .2 ldy #$ff .3 iny jsr SHARED.FORPNTgY sta (ZPPtr1),y bne .3 - + clc - rts +.9 rts *-------------------------------------- .4 >LDYA ZPPtr1 >STYA ZPPtr2 - + jsr STRVX.Next .40 lda (ZPPtr1) - beq .7 - - ldy #2 LEN+IDlo+IDhi + beq .6 + + tax + + ldy #0 .5 lda (ZPPtr1),y sta (ZPPtr2),y - dey - bpl .5 - - ldy #2 - -.6 iny - - lda (ZPPtr1),y - sta (ZPPtr2),y - bne .6 - - jsr SHARED.AddYp12P1 - jsr SHARED.AddYp12P2 + iny + dex + bne .5 + + jsr SHARED.AddY2P1 + jsr SHARED.AddY2P2 bra .40 + +.6 >LDYA ZPPtr2 + >STYA ZPPtr1 *-------------------------------------- .7 ldy #$ff .8 iny jsr SHARED.FORPNTgY bne .8 - + tya clc adc #4 bcs .99 - + sta (ZPPtr1) ldy #1 lda TXTPTR @@ -102,25 +100,25 @@ STRVX.StrVSet jsr STRVX.GetID iny lda TXTPTR+1 sta (ZPPtr1),y - + lda ZPPtr1 clc adc #3 sta ZPPtr1 bcc .10 - + inc ZPPtr1+1 - + .10 ldy #$ff .11 iny jsr SHARED.FORPNTgY sta (ZPPtr1),y bne .11 - + iny sta (ZPPtr1),y StrV Ending \0 - + clc rts @@ -130,51 +128,51 @@ STRVX.StrVSet jsr STRVX.GetID *-------------------------------------- STRVX.StrVGet jsr STRVX.GetID bcs .9 - + lda ZPPtr1 * clc adc #3 sta ZPPtr1 bcc .1 - + inc ZPPtr1+1 - + .1 ldy #$ff .5 iny lda (ZPPtr1),y jsr SHARED.FORPNTpY - bne .5 - + bne .5 + >LDYA FORPNT clc rts - + .8 >LDYA ZPPtr1 clc -.9 rts +.9 rts *-------------------------------------- STRVX.GetID jsr K.GetMemPtr >STYA ZPPtr1 strV - + .1 lda (ZPPtr1) beq .9 - + ldy #1 - + lda (ZPPtr1),y cmp TXTPTR bne .2 - + iny lda (ZPPtr1),y cmp TXTPTR+1 beq .8 - + .2 jsr STRVX.Next bra .1 - -.8 clc + +.8 clc rts .9 lda #E.NOKEY @@ -186,7 +184,7 @@ STRVX.Next lda (ZPPtr1) adc ZPPtr1 sta ZPPtr1 bcc .8 - + inc ZPPtr1+1 .8 rts