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

View File

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

View File

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

View File

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

View File

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