From 171189247a17d7b9ca51afd75af006d6d91c4dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 24 Sep 2019 17:25:07 +0200 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CMP.S.txt | 5 +- BIN/UNPAK.S.txt | 209 ++------------------------ SHARED/X.UNPAK.S.txt | 314 +++++++++++++++++++++++++++++++++++++++ SYS/KERNEL.S.STDIO.txt | 7 +- 5 files changed, 329 insertions(+), 206 deletions(-) create mode 100644 SHARED/X.UNPAK.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 32fc28977aa12e0544776ba781b095b069b6610f..1d8307270f5c8de49f2759b1f1c3e3dd2525e5d8 100644 GIT binary patch delta 15967 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 delta 6215 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 diff --git a/BIN/CMP.S.txt b/BIN/CMP.S.txt index 6a0bbefd..7bd7470b 100644 --- a/BIN/CMP.S.txt +++ b/BIN/CMP.S.txt @@ -190,7 +190,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn cmp (ZPBufPtr2),y beq .8 - lda #1 + lda #$E0 sta bDiff bit bVerbose @@ -225,7 +225,7 @@ CS.RUN.OPEN >PUSHWZ Aux type CS.RUN.SEEK >LDYA ZPPtr1 >SYSCALL atol bcs .9 - + >PULLL SeekOfs lda bSkip1 @@ -234,6 +234,7 @@ CS.RUN.SEEK >LDYA ZPPtr1 >PUSHBI SEEK.SET >PUSHL SeekOfs lda hFile1 + >SYSCALL fseek bcs .9 diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index cd2cf8b4..56329260 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -16,20 +16,17 @@ CHNK.SIZE .EQ 4096 .OR ZPBIN ZS.START ZPPtr1 .BS 2 -ZPInBufPtr .BS 2 -ZPULen .BS 2 +ZPPtr2 .BS 2 -ZPPakHdrPtr .BS 2 -ZPPakDataPtr .BS 2 -ZPPakSrcPtr .BS 2 ZPFullPathPtr .BS 2 ZPRelPathPtr .BS 2 -UNPAK.Mask .BS 2 -UNPAK.LastByte .BS 2 -UNPAK.Cnt .BS 2 -UNPAK.Ofs .BS 2 -UNPAK.BLOfs .BS 2 +ZPInBufPtr .BS 2 +ZPOutBufPtr .BS 2 +ZPULen .BS 2 +ZPnCnt .BS 2 +ZPInMask .BS 1 +ZPOutLastByte .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -342,196 +339,6 @@ CS.RUN.WriteFile >SYSCALL fwrite rts *-------------------------------------- -* Y,A = Ptr to Shunk Header: -* +0 : Flags -* 10000000 : LZ8 encoded, 1 byte (ESC) follow -* 01000000 : BS -*-------------------------------------- -CS.RUN.UnpakChnk - lda ZPPakHdrPtr - clc - adc #S.PAKSTAT - sta ZPPakDataPtr - - lda ZPPakHdrPtr+1 - adc /S.PAKSTAT - sta ZPPakDataPtr+1 - - lda (ZPPakHdrPtr) - eor #$ff - sta UNPAK.Cnt - - ldy #1 - lda (ZPPakHdrPtr),y - eor #$ff - sta UNPAK.Cnt+1 - - lda #$80 - sta UNPAK.Mask - - - stz UNPAK.Ofs - stz UNPAK.Ofs+1 - -.1 inc UNPAK.Cnt - bne .2 - inc UNPAK.Cnt+1 - bne .2 - - lda #0 - sec - rts - -.2 lda #'>' - >SYSCALL PutChar - - jsr CS.RUN.UnpakGetBitInC - bcs .3 -*-------------------------------------- -* SHORT3 - ldx #3 - jsr CS.RUN.UnpakGetXBitInA - clc -* adc #S.PAKHDR.SHORT3 - tay - lda (ZPPakHdrPtr),y - sta UNPAK.LastByte - - jsr CS.RUN.UnpakCmpA - bcs .9 - bra .1 - -.3 jsr CS.RUN.UnpakGetBitInC - bcs .4 -*-------------------------------------- -* SHORT4 - ldx #4 - jsr CS.RUN.UnpakGetXBitInA - clc -* adc #S.PAKHDR.SHORT4 - tay - lda (ZPPakHdrPtr),y - sta UNPAK.LastByte - jsr CS.RUN.UnpakCmpA - bcs .9 - bra .1 - -.4 jsr CS.RUN.UnpakGetBitInC - bcs .5 -*-------------------------------------- -* REPn - ldx #4 - jsr CS.RUN.UnpakGetXBitInA - tay - tax - lda UNPAK.LastByte - -.41 jsr CS.RUN.UnpakCmpA - bcs .9 - dey - bne .41 - -.42 txa - clc - adc UNPAK.Cnt - sta UNPAK.Cnt - bcc .2 - inc UNPAK.Cnt+1 - bra .2 - -.5 jsr CS.RUN.UnpakGetBitInC - bcs .6 -*-------------------------------------- -* BACKLINK - ldx #4 - jsr CS.RUN.UnpakGetXBitInA - sta UNPAK.BLOfs+1 - jsr CS.RUN.UnpakGetByteInA - sta UNPAK.BLOfs - jsr CS.RUN.UnpakGetByteInA - tax - tay - -.51 - bra .42 -*-------------------------------------- -* STOREn -.6 ldx #4 - jsr CS.RUN.UnpakGetXBitInA - tay - tax - -.61 jsr CS.RUN.UnpakGetByteInA - dey - bne .61 - - sta UNPAK.LastByte - - bra .42 - -.9 >PUSHW UNPAK.Ofs - >PUSHBI 2 - >LDYA L.MSG.ERR - >SYSCALL printf - - lda #0 - sec - rts -*-------------------------------------- -CS.RUN.UnpakGetByteInA - ldx #8 -*-------------------------------------- -CS.RUN.UnpakGetXBitInA - lda #0 - -.1 jsr CS.RUN.UnpakGetBitInC - rol - dex - bne .1 - - rts -*-------------------------------------- -CS.RUN.UnpakGetBitInC - pha - clc - lda (ZPPakDataPtr) - and UNPAK.Mask - beq .1 - sec - -.1 php - - lsr UNPAK.Mask - bne .8 - - lda #$80 - sta UNPAK.Mask - - inc ZPPakDataPtr - bne .8 - inc ZPPakDataPtr+1 - -.8 plp - pla - rts -*-------------------------------------- -CS.RUN.UnpakCmpA - cmp (ZPPakSrcPtr) - bne .9 - inc ZPPakSrcPtr - bne .1 - inc ZPPakSrcPtr+1 - -.1 inc UNPAK.Ofs - bne .8 - inc UNPAK.Ofs+1 - -.8 clc - rts - -.9 sec - rts -*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- @@ -562,6 +369,8 @@ CS.QUIT >LDA.G hFile .8 clc rts +*-------------------------------------- + .INB USR/SRC/SHARED/X.UNPAK.S *-------------------------------------- CS.END MSG.USAGE .AZ "Usage : UNPAK Archive [DstDir]\r\n" diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt new file mode 100644 index 00000000..a0d2d00c --- /dev/null +++ b/SHARED/X.UNPAK.S.txt @@ -0,0 +1,314 @@ +NEW + AUTO 3,1 + .LIST OFF +*-------------------------------------- +* ZPInBufPtr = Ptr to Shunk Data +* Header : 16 SHORT4 +* 8 SHORT3 +* ZPOutBufPtr = Ptr to Uncompressed Data +* ZPULen = Uncompressed length +*-------------------------------------- +* ZPPtr1 +* ZPPtr2 +* ZPnCnt = !ZPULen +* ZPInMask +* ZPOutLastByte +*-OLD---------------------------------- +* SHORT3 : 0 xxx +* SHORT4 : 10 xxxx +* REPn : 110 xxxx (1-16) +* BACKLINK : 1110 oooooooo OO llllll (3-66) +* STOREn : 1111 xxxx (1-16) +*-------------------------------------- +X.Unpak lda ZPInBufPtr + clc + adc #24 skip SHORT4 & SHORT3 + sta ZPPtr1 + + lda ZPInBufPtr+1 + adc #0 + sta ZPPtr1+1 + + lda ZPULen + eor #$ff + sta ZPnCnt + + lda ZPULen+1 + eor #$ff + sta ZPnCnt+1 + + lda #$80 + sta ZPInMask + +.1 lda ZPnCnt + ora ZPnCnt+1 + bne .2 + + clc + rts +*-------------------------------------- +.2 jsr X.Unpak.GetBitInC + bcs .3 +* SHORT3 : 0 xxx + ldx #3 + jsr X.Unpak.GetXBitInA + ora #$16 Skip SHORT4 (16 bytes) + bra .31 +*-------------------------------------- +.3 jsr X.Unpak.GetBitInC + bcs .4 +* SHORT4 : 10 xxxx + ldx #4 + jsr X.Unpak.GetXBitInA +.31 tay + lda (ZPInBufPtr),y + jsr X.Unpak.PutByte + bne .2 + clc + rts +*-------------------------------------- +.4 jsr X.Unpak.GetBitInC + bcs .5 +* REPn : 110 xxxx + ldx #4 + jsr X.Unpak.GetXBitInA + + tay + + lda ZPOutLastByte + +.41 jsr X.Unpak.PutByte.1 + beq .99 + dey + bpl .41 +1 + + bra .1 + +.99 sec + rts +*-------------------------------------- +.5 jsr X.Unpak.GetBitInC + bcs .6 +* BACKLINK : 1110 oooooooo OO llllll + jsr X.Unpak.GetByteInA + clc + adc ZPOutBufPtr + sta ZPPtr2 + php + ldx #2 + jsr X.Unpak.GetXBitInA + plp + adc ZPOutBufPtr+1 + sta ZPPtr2+1 + + jsr X.Unpak.GetByteInA + + inc +1 + inc +1 +* inc +1 + + tay + +.51 lda (ZPPtr2),y + jsr X.Unpak.PutByte + beq .99 + dey + bpl .51 +1 + + bra .1 +*-------------------------------------- +* STOREn : 1111 cccc Byte Byte Byte ... +.6 ldx #4 + jsr X.Unpak.GetXBitInA + + tay + +.61 jsr X.Unpak.GetByteInA + jsr X.Unpak.PutByte + beq .99 + dey + bpl .61 +1 + + bra .1 + +.9 sec + rts +*-NEW---------------------------------- +* STOREn : 0 xxxx +* { +* BYTE8 : 0 xxxxxxxx +* SHORT32 : 10 xxxx +* REPn : 11 xxxx (1-16) +* } +* BACKLINK : 1 oooooooo OOOO llllll (3-66) +*-------------------------------------- +X.Unpak2 lda ZPInBufPtr + clc + adc #24 skip SHORT32 + sta ZPPtr1 + + lda ZPInBufPtr+1 + adc #0 + sta ZPPtr1+1 + + lda ZPULen + eor #$ff + sta ZPnCnt + + lda ZPULen+1 + eor #$ff + sta ZPnCnt+1 + + lda #$80 + sta ZPInMask + +.1 lda ZPnCnt + ora ZPnCnt+1 + bne .2 + + clc + rts +*-------------------------------------- +.2 jsr X.Unpak.GetBitInC + bcs .3 +* SHORT3 : 0 xxx + ldx #3 + jsr X.Unpak.GetXBitInA + ora #$16 Skip SHORT4 (16 bytes) + bra .31 +*-------------------------------------- +.3 jsr X.Unpak.GetBitInC + bcs .4 +* SHORT4 : 10 xxxx + ldx #4 + jsr X.Unpak.GetXBitInA +.31 tay + lda (ZPInBufPtr),y + jsr X.Unpak.PutByte + bne .2 + clc + rts +*-------------------------------------- +.4 jsr X.Unpak.GetBitInC + bcs .5 +* REPn : 110 xxxx + ldx #4 + jsr X.Unpak.GetXBitInA + + tay + + lda ZPOutLastByte + +.41 jsr X.Unpak.PutByte.1 + beq .99 + dey + bpl .41 +1 + + bra .1 + +.99 sec + rts +*-------------------------------------- +.5 jsr X.Unpak.GetBitInC + bcs .6 +* BACKLINK : 1110 oooooooo OO llllll + jsr X.Unpak.GetByteInA + clc + adc ZPOutBufPtr + sta ZPPtr2 + php + ldx #2 + jsr X.Unpak.GetXBitInA + plp + adc ZPOutBufPtr+1 + sta ZPPtr2+1 + + jsr X.Unpak.GetByteInA + + inc +1 + inc +1 +* inc +1 + + tay + +.51 lda (ZPPtr2),y + jsr X.Unpak.PutByte + beq .99 + dey + bpl .51 +1 + + bra .1 +*-------------------------------------- +* STOREn : 1111 cccc Byte Byte Byte ... +.6 ldx #4 + jsr X.Unpak.GetXBitInA + + tay + +.61 jsr X.Unpak.GetByteInA + jsr X.Unpak.PutByte + beq .99 + dey + bpl .61 +1 + + bra .1 + +.9 sec + rts +*-------------------------------------- +X.Unpak.GetByteInA + ldx #8 + +X.Unpak.GetXBitInA + lda #0 + +.1 jsr X.Unpak.GetBitInC + rol + dex + bne .1 + + rts +*-------------------------------------- +X.Unpak.GetBitInC + pha + clc + lda (ZPPtr1) + and ZPInMask + beq .1 + sec + +.1 php + + lsr ZPInMask + bne .8 + + ror ZPInMask + + inc ZPPtr1 + bne .8 + inc ZPPtr1+1 + +.8 plp + pla + rts +*-------------------------------------- +X.Unpak.PutByte sta ZPOutLastByte +X.Unpak.PutByte.1 + sta (ZPOutBufPtr) + inc ZPOutBufPtr + bne .1 + inc ZPOutBufPtr+1 + +.1 inc ZPnCnt + bne .2 + inc ZPnCnt+1 +.2 rts +*-------------------------------------- + .LIST ON +X.Unpak.Size .EQ *-X.Unpak + .LIST OFF +*-------------------------------------- +MAN +SAVE USR/SRC/SHARED/X.UNPAK.S +LOAD USR/SRC/BIN/UNPAK.S +ASM diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 8cd91b48..256a373c 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1121,15 +1121,14 @@ K.FSeek jsr PFT.CheckNodeA .11 lda (pFD) bne STDIO.IOERR - >PULLA whence - tax >PULLL ACC32 + >PULLA whence - cpx #SEEK.END + cmp #SEEK.END beq .30 bcs .98 - dex + dec beq .20 stz K.MLI.PARAMS+2