From 5e9259f25026bb147e8aeaf9b03340b6b0274c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 16 Oct 2019 16:31:49 +0200 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/PAK.S.txt | 15 +++++- BIN/UNPAK.S.txt | 34 +++++++++---- LIB/LIBPAK.S.txt | 16 +++--- SHARED/X.UNPAK.S.txt | 106 +++++++++++++-------------------------- 5 files changed, 80 insertions(+), 91 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9878e7dea87bd75ccca487fcfe5584551d1c31b5..75b1ed405fe6debdd5e16a9fe44ec3be1956158f 100644 GIT binary patch delta 30150 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 E2mSXRB>(^b delta 21212 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 diff --git a/BIN/PAK.S.txt b/BIN/PAK.S.txt index 7d63a5c1..b7355305 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -63,6 +63,7 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR L.MSG.E.IARC .DA MSG.E.IARC L.ARC.Header .DA ARC.Header +L.MSG.DBG .DA MSG.DBG .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBPAK @@ -372,8 +373,9 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT >PUSHW.G Shunk.SrcSize >PUSHW ZPSrcBufPtr >LIBCALL hLIB,LIBPAK.Pak + bcs .9 >STYA.G Shunk.DstSize - rts +.9 rts *-------------------------------------- CS.RUN.OpenArc >PUSHWZ Aux type >PUSHBI $CF PAK @@ -484,6 +486,11 @@ CS.RUN.WriteSrcData jsr CS.RUN.WriteArcByteA bcs .9 + >PUSHW.G Shunk.SrcSize + >PUSHBI 2 + >LDYA L.MSG.DBG + >SYSCALL printf + >LDA.G Shunk.SrcSize jsr CS.RUN.WriteArcByteA bcs .9 @@ -506,6 +513,11 @@ CS.RUN.WritePakData lda #CHNK.T.DATA jsr CS.RUN.WriteArcByteA bcs .9 + +* >PUSHW.G Shunk.DstSize +* >PUSHBI 2 +* >LDYA L.MSG.DBG +* >SYSCALL printf >LDA.G Shunk.DstSize jsr CS.RUN.WriteArcByteA @@ -598,6 +610,7 @@ MSG.ERR .AZ "[%h]\r\n" MSG.E.IARC .AZ "Invalid/corrupt archive" MSG.DIR .AZ "Reading Dir:%s..." MSG.FILE .AZ "Adding File:%s..." +MSG.DBG .AZ "%H" ARC.Header .AZ "PAK" *-------------------------------------- LIBPAK .AZ "libpak" diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index 2d2378ab..518750aa 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -59,7 +59,7 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR L.MSG.E.IARC .DA MSG.E.IARC L.MSG.E.OFS .DA MSG.E.OFS -L.DBG .DA DBG +L.MSG.DBG .DA MSG.DBG .DA 0 *-------------------------------------- CS.INIT clc @@ -182,35 +182,46 @@ CS.RUN.LOOP jsr CS.RUN.GetByte .2 cmp #CHNK.T.DATA bne .3 Could be a 0 byte file -.20 jsr CS.RUN.GetByte DataLen LO +.20 lda #'.' + >SYSCALL putchar + + jsr CS.RUN.GetByte DataLen LO bcs .9 sta ZPInBufLen jsr CS.RUN.GetByte DataLen HI bcs .9 sta ZPInBufLen+1 - + jsr CS.RUN.ReadData bcs .9 - lda (ZPInBufPtr) - sta ZPOutBufLen - ldy #1 lda (ZPInBufPtr),y + sta ZPOutBufLen + + iny + lda (ZPInBufPtr),y sta ZPOutBufLen+1 +* >PUSHW ZPOutBufLen +* >PUSHBI 2 +* >LDYA L.MSG.DBG +* >SYSCALL printf + >LDA.G hOutBuf >SYSCALL getmemptr >STYA ZPOutBufPtr jsr X.Unpak - bcs .9 +.90 bcs .9 jsr CS.RUN.WriteFile - bcs .9 + bcs .90 + jsr CS.RUN.GetByte bcs .8 + cmp #CHNK.T.DATA beq .20 @@ -289,7 +300,10 @@ CS.RUN.GetFileName .9 rts *-------------------------------------- CS.RUN.ReadData >PUSHW ZPInBufLen - >PUSHW ZPInBufPtr + >LDA.G hInBuf + >SYSCALL getmemptr + >STYA ZPInBufPtr + >PUSHYA >LDA.G hArcFile >SYSCALL fread rts @@ -375,7 +389,7 @@ MSG.ERR .AZ "[%h]\r\n" MSG.E.IARC .AZ "Invalid/corrupt archive" MSG.E.OFS .AZ "UnPak Error at Offset : %L\r\n" MSG.PAK .AS "PAK" -DBG .AZ "\r\n\e[7m[L=%h,O=%H]\e[0m" +MSG.DBG .AZ "%H" *-------------------------------------- .DUMMY .OR 0 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 4139cc51..472f5467 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -9,7 +9,7 @@ NEW .INB INC/A2OSX.I .INB INC/LIBPAK.I *-------------------------------------- -STATS .EQ 1 +STATS .EQ 0 *-------------------------------------- ZPSrcPtr .EQ ZPLIB ZPDstPtr .EQ ZPLIB+2 @@ -70,6 +70,12 @@ Pak >PULLW Pak.SrcPtr stz Pak.CntH,x inx bne .1 + + ldx #S.PAKSTAT.PASS2+1 + +.2 stz Pak.Stat,x Reset Stats + dex + bpl .2 * PASS #1 : no store, update byte counters @@ -100,7 +106,6 @@ Pak >PULLW Pak.SrcPtr .DO STATS=1 jsr Pak.PrintStats - >DEBUG .FIN ldy #S.PAKSTAT-1 @@ -132,12 +137,7 @@ Pak.Run >LDYA Pak.SrcPtr sta Pak.SrcCnt+1 sta Pak.DstCnt+1 - ldx #S.PAKSTAT.PASS1 - bit Pak.bPass2 - bpl .1 - - inx - inx + ldx #S.PAKSTAT.TOP8 .1 stz Pak.Stat,x Reset Stats inx diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt index 9a9d98e2..03bb32fd 100644 --- a/SHARED/X.UNPAK.S.txt +++ b/SHARED/X.UNPAK.S.txt @@ -10,8 +10,8 @@ NEW * ZPPtr2 * ZPInMask,ZPBLOfsLBits,ZPBLOfsHBits,ZPBLLenBits *-------------------------------------- -X.Unpak >DEBUG - lda (ZPInBufPtr) CHNK.DATA.T +X.Unpak jsr X.Unpak.GetNextByte CHNK.DATA.T + tax bne X.Unpak.PAK *-------------------------------------- X.Unpak.STORE ldy #0 @@ -25,7 +25,6 @@ X.Unpak.STORE ldy #0 jsr X.Unpak.PutByte bne .1 -X.Unpak.STORE.8 clc rts *-------------------------------------- @@ -38,42 +37,38 @@ X.Unpak.PAK pha A = BLBITS sta ZPBLLenBits pla - ldx #8 and #$0f - tax + + ldx #0 + cmp #8 bcc .10 - - ldx #8 + and #7 + tax + lda #8 -.10 stx ZPBLOfsLBits - sta ZPBLOfsHBits - - jsr X.Unpak.NextByte get TOPCNT +.10 sta ZPBLOfsLBits + stx ZPBLOfsHBits - lda (ZPInBufPtr) ULEN LO + jsr X.Unpak.GetNextByte ULEN LO + sec + adc #0 eor #$ff sta ZPnCnt - jsr X.Unpak.NextByte - - lda (ZPInBufPtr) ULEN HI + jsr X.Unpak.GetNextByte ULEN HI + adc #0 eor #$ff sta ZPnCnt+1 - jsr X.Unpak.NextByte + jsr X.Unpak.GetNextByte get TOPCNT - lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN - tax - jsr X.Unpak.NextByte get TOPCNT + ldx ZPInBufPtr ZPPtr1 = TOP table + stx ZPPtr1 + ldx ZPInBufPtr+1 + stx ZPPtr1+1 - lda ZPInBufPtr - sta ZPPtr1 - lda ZPInBufPtr+1 - sta ZPPtr1+1 - - txa clc adc ZPInBufPtr skip TOP table sta ZPInBufPtr @@ -84,10 +79,6 @@ X.Unpak.PAK pha A = BLBITS .11 lda #$80 sta ZPInMask *-------------------------------------- -.1 lda ZPnCnt - ora ZPnCnt+1 - beq X.Unpak.STORE.8 -*-------------------------------------- .2 jsr X.Unpak.GetBitInC bcs .3 ->TOP * BYTE8 @@ -131,9 +122,9 @@ X.Unpak.PAK pha A = BLBITS * BACKLINK : 1111 OfsLBits OfsHBits LenBits .6 ldx ZPBLOfsLBits - + jsr X.Unpak.GetXBitInA - tay + eor #$ff sec adc ZPOutBufPtr @@ -147,10 +138,7 @@ X.Unpak.PAK pha A = BLBITS jsr X.Unpak.GetXBitInA plp -.61 pha - >PUSHYA - pla - eor #$ff +.61 eor #$ff adc ZPOutBufPtr+1 sta ZPPtr2+1 @@ -160,16 +148,7 @@ X.Unpak.PAK pha A = BLBITS inc +1 inc +1 inc +1 - >PUSHA - pha - - >PUSHBI 3 - - >LDYA L.DBG - >SYSCALL printf - - pla tax ldy #0 @@ -181,14 +160,12 @@ X.Unpak.PAK pha A = BLBITS dex bne .62 - lda #'\' - >SYSCALL putchar - lda #C.CR - >SYSCALL putchar - lda #C.LF - >SYSCALL putchar + lda ZPnCnt + ora ZPnCnt+1 + bne .2 - jmp .1 + clc + rts .99 sec rts @@ -224,6 +201,8 @@ X.Unpak.GetBitInC pla rts *-------------------------------------- +X.Unpak.GetNextByte + lda (ZPInBufPtr) X.Unpak.NextByte inc ZPInBufPtr bne .8 @@ -232,32 +211,15 @@ X.Unpak.NextByte .8 rts *-------------------------------------- X.Unpak.PutByte sta (ZPOutBufPtr) - - pha - phx - phy - - lda (ZPOutBufPtr) - >SYSCALL putchar - - lda (ZPOutBufPtr) - cmp #C.CR - bne .6 - lda #C.LF - >SYSCALL putchar -.6 - ply - plx - pla - + inc ZPOutBufPtr bne .1 inc ZPOutBufPtr+1 - + .1 inc ZPnCnt - bne .2 + bne .8 inc ZPnCnt+1 -.2 rts +.8 rts *-------------------------------------- .LIST ON X.Unpak.Size .EQ *-X.Unpak