Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-14 17:58:16 +02:00
parent 5b653c3e4b
commit 203010d907
6 changed files with 105 additions and 47 deletions

Binary file not shown.

View File

@ -287,8 +287,14 @@ CS.RUN.FILE jsr FilterMatch
bra .9 bra .9
.2 jsr CS.RUN.Pak .2 jsr CS.RUN.Pak
* >DEBUG bcs .3
jsr CS.RUN.WriteArcData
jsr CS.RUN.WritePakData
bcc .1
bra .4
.3 jsr CS.RUN.WriteSrcData
bcc .1 bcc .1
.4 pha .4 pha
@ -367,8 +373,6 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
>LIBCALL hLIB,LIBPAK.Pak >LIBCALL hLIB,LIBPAK.Pak
>STYA.G Shunk.DstSize >STYA.G Shunk.DstSize
txa
>STA.G Shunk.Alg
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.OpenArc >PUSHWZ Aux type CS.RUN.OpenArc >PUSHWZ Aux type
@ -475,11 +479,34 @@ CS.RUN.WriteArcHdr
CS.RUN.WriteArcHdr.9 CS.RUN.WriteArcHdr.9
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.WriteArcData CS.RUN.WriteSrcData
lda #CHNK.T.DATA lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9
>LDA.G Shunk.SrcSize
jsr CS.RUN.WriteArcByteA
bcs .9
>LDA.G Shunk.SrcSize+1
jsr CS.RUN.WriteArcByteA
bcs .9
lda #0 NO COMPRESSION
jsr CS.RUN.WriteArcByteA
bcs .9
>PUSHW.G Shunk.SrcSize
>PUSHW ZPSrcBufPtr
>LDA.G hArcFile
>SYSCALL fwrite
.9 rts
*--------------------------------------
CS.RUN.WritePakData
lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA
bcs .9
>LDA.G Shunk.DstSize >LDA.G Shunk.DstSize
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9
@ -487,11 +514,7 @@ CS.RUN.WriteArcData
>LDA.G Shunk.DstSize+1 >LDA.G Shunk.DstSize+1
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9
lda Shunk.Alg
jsr CS.RUN.WriteArcByteA
bcs .9
>PUSHW.G Shunk.DstSize >PUSHW.G Shunk.DstSize
>PUSHW ZPDstBufPtr >PUSHW ZPDstBufPtr
>LDA.G hArcFile >LDA.G hArcFile
@ -595,7 +618,6 @@ hDstBuf .BS 1
Shunk.SrcSize .BS 2 Shunk.SrcSize .BS 2
Shunk.DstSize .BS 2 Shunk.DstSize .BS 2
Shunk.Alg .BS 1
PAKSTAT .BS S.PAKSTAT PAKSTAT .BS S.PAKSTAT

View File

@ -16,17 +16,21 @@ ZS.START
ZPPtr1 .BS 2 ZPPtr1 .BS 2
ZPPtr2 .BS 2 ZPPtr2 .BS 2
ZPFullPathPtr .BS 2
ZPRelPathPtr .BS 2
ZPInBufPtr .BS 2 ZPInBufPtr .BS 2
ZPOutBufPtr .BS 2 ZPOutBufPtr .BS 2
ZPULen .BS 2
ZPnCnt .BS 2 ZPnCnt .BS 2
ZPInMask .BS 1 ZPInMask .BS 1
ZPBLOfsLBits .BS 1 ZPBLOfsLBits .BS 1
ZPBLOfsHBits .BS 1 ZPBLOfsHBits .BS 1
ZPBLLenBits .BS 1 ZPBLLenBits .BS 1
ZPInBufLen .BS 2
ZPOutBufLen .BS 2
ZPFullPathPtr .BS 2
ZPRelPathPtr .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -69,18 +73,23 @@ CS.RUN >LDYAI CHNK.SIZE
lda #1 lda #1
>SYSCALL Argv >SYSCALL Argv
bcs .9 bcs .99
jsr CS.RUN.OpenArc jsr CS.RUN.OpenArc
bcs .9 bcs .9
>LDYAI 256 >LDYAI 256
>SYSCALL getmem >SYSCALL getmem
bcs .9 bcs .9
>STYA ZPFullPathPtr >STYA ZPFullPathPtr
txa txa
>STA.G hFullPath >STA.G hFullPath
lda #2 lda #2
>SYSCALL Argv >SYSCALL Argv
bcc .1 bcc .1
ldy #S.PS.hCWD ldy #S.PS.hCWD
lda (pPS),y lda (pPS),y
>SYSCALL getmemptr >SYSCALL getmemptr
@ -151,6 +160,7 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
.99 rts .99 rts
.9 jmp CS.RUN.E.IARC .9 jmp CS.RUN.E.IARC
.1 cmp #CHNK.T.FILE .1 cmp #CHNK.T.FILE
bne .9 bne .9
@ -170,32 +180,38 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
.2 cmp #CHNK.T.DATA .2 cmp #CHNK.T.DATA
bne .3 Could be a 0 byte file bne .3 Could be a 0 byte file
.20 jsr CS.RUN.GetByte ULEN LO .20 jsr CS.RUN.GetByte DataLen LO
bcs .9 bcs .9
sta ZPULen sta ZPInBufLen
jsr CS.RUN.GetByte ULEN HI jsr CS.RUN.GetByte DataLen HI
bcs .9 bcs .9
sta ZPULen+1 sta ZPInBufLen+1
jsr CS.RUN.GetByte ALG
bcs .9
>DEBUG
cmp #0 STORE
bne .9
jsr CS.RUN.ReadData jsr CS.RUN.ReadData
bcs .9 bcs .9
lda (ZPInBufPtr)
sta ZPOutBufLen
ldy #1
lda (ZPInBufPtr),y
sta ZPOutBufLen+1
>DEBUG
jsr X.Unpak
bcs .9
jsr CS.RUN.WriteFile jsr CS.RUN.WriteFile
bcs .9 bcs .9
jsr CS.RUN.GetByte jsr CS.RUN.GetByte
bcs .8 bcs .8
cmp #CHNK.T.DATA cmp #CHNK.T.DATA
beq .20 beq .20
.3 pha .3 pha
jsr .8 jsr .8
pla pla
jmp .10 jmp .10
.8 >LDA.G hFile .8 >LDA.G hFile
>SYSCALL fclose >SYSCALL fclose
@ -266,7 +282,7 @@ CS.RUN.GetFileName
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.ReadData >PUSHW ZPULen CS.RUN.ReadData >PUSHW ZPInBufLen
>PUSHW ZPInBufPtr >PUSHW ZPInBufPtr
>LDA.G hArcFile >LDA.G hArcFile
>SYSCALL fread >SYSCALL fread
@ -307,8 +323,8 @@ CS.RUN.OpenFile >PUSHW.G FileAuxType
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.WriteFile CS.RUN.WriteFile
>PUSHW ZPULen >PUSHW ZPOutBufLen
>PUSHW ZPInBufPtr >PUSHW ZPOutBufPtr
>LDA.G hFile >LDA.G hFile
>SYSCALL fwrite >SYSCALL fwrite
rts rts

View File

@ -15,9 +15,7 @@ CHNK.FILE.FNLEN .EQ 4
* *
CHNK.DIR.FNLEN .EQ 1 CHNK.DIR.FNLEN .EQ 1
* *
CHNK.DATA.ULEN .EQ 1 CHNK.DATA.LEN .EQ 1
CHNK.DATA.PAK.BLBITS .EQ 3
CHNK.DATA.PAK.TOPLEN .EQ 1
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/PAK.I SAVE INC/PAK.I

View File

@ -479,7 +479,15 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.ULEN
jsr Pak.Out.PutByte
bcs .9
lda Pak.Shnk+S.PAKSHNK.ULEN+1
jsr Pak.Out.PutByte
bcs .9
lda Pak.Shnk+S.PAKSHNK.BLBITS
jsr Pak.Out.PutByte jsr Pak.Out.PutByte
bcs .9 bcs .9
@ -487,14 +495,16 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS
jsr Pak.Out.PutByte jsr Pak.Out.PutByte
bcs .9 bcs .9
tax
ldy #0 ldy #0
.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES .1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES,y
jsr Pak.Out.PutByte jsr Pak.Out.PutByte
bcs .9 bcs .9
iny iny
cpy Pak.Shnk+S.PAKSHNK.TOPCNT dex
bne .1 bne .1
lda #$80 lda #$80
@ -522,11 +532,13 @@ Pak.Out.PutYBits
bra .1 bra .1
.2 ply .2 ply
asl
.3 pha .3 asl
pha
bcc .4 bcc .4
lda Pak.Out.Mask lda Pak.Out.Mask
tsb Pak.Out.Byte tsb Pak.Out.Byte
@ -536,13 +548,14 @@ Pak.Out.PutYBits
ror Pak.Out.Mask ror Pak.Out.Mask
lda Pak.Out.Byte lda Pak.Out.Byte
stz Pak.Out.Byte
jsr Pak.Out.PutByte jsr Pak.Out.PutByte
.5 pla .5 pla
bcs .9 bcs .9
dey dey
bne Pak.Out.PutYBits bne .3
* clc * clc

View File

@ -61,15 +61,24 @@ X.Unpak.PAK pha A = BLBITS
sta ZPBLOfsHBits sta ZPBLOfsHBits
jsr X.Unpak.NextByte get TOPCNT jsr X.Unpak.NextByte get TOPCNT
lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN
tax
jsr X.Unpak.NextByte get TOPCNT
lda ZPInBufPtr
sta ZPPtr1
lda ZPInBufPtr+1
sta ZPPtr1+1
txa
clc clc
adc ZPInBufPtr skip TOP table adc ZPInBufPtr skip TOP table
sta ZPPtr1 sta ZPInBufPtr
lda ZPInBufPtr+1 ZPInBufPtr = TOPs lda ZPInBufPtr+1
adc #0 adc #0
sta ZPPtr1+1 ZPPtr1 = DATA sta ZPInBufPtr+1
lda #$80 lda #$80
sta ZPInMask sta ZPInMask
@ -112,7 +121,7 @@ X.Unpak.PAK pha A = BLBITS
ora #32 ora #32
.51 tay .51 tay
lda (ZPInBufPtr),y lda (ZPPtr1),y
.52 jsr X.Unpak.PutByte .52 jsr X.Unpak.PutByte
bne .2 bne .2
@ -174,7 +183,7 @@ X.Unpak.GetXBitInA
X.Unpak.GetBitInC X.Unpak.GetBitInC
pha pha
clc clc
lda (ZPPtr1) lda (ZPInBufPtr)
and ZPInMask and ZPInMask
beq .1 beq .1
sec sec
@ -193,9 +202,9 @@ X.Unpak.GetBitInC
rts rts
*-------------------------------------- *--------------------------------------
X.Unpak.NextByte X.Unpak.NextByte
inc ZPPtr1 inc ZPInBufPtr
bne .8 bne .8
inc ZPPtr1+1 inc ZPInBufPtr+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------