Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-15 17:32:50 +02:00
parent 72a3544d20
commit 250b83a3b1
5 changed files with 100 additions and 47 deletions

Binary file not shown.

View File

@ -480,6 +480,7 @@ CS.RUN.WriteArcHdr.9
rts
*--------------------------------------
CS.RUN.WriteSrcData
>DEBUG
lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA
bcs .9

View File

@ -59,6 +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
.DA 0
*--------------------------------------
CS.INIT clc
@ -99,7 +100,7 @@ CS.RUN >LDYAI CHNK.SIZE
>LDYAI CHNK.SIZE
>SYSCALL getmem
bcs .9
>STYA ZPOutBufPtr
txa
>STA.G hOutBuf
@ -199,6 +200,10 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
lda (ZPInBufPtr),y
sta ZPOutBufLen+1
>LDA.G hOutBuf
>SYSCALL getmemptr
>STYA ZPOutBufPtr
jsr X.Unpak
bcs .9
@ -325,7 +330,9 @@ CS.RUN.OpenFile >PUSHW.G FileAuxType
*--------------------------------------
CS.RUN.WriteFile
>PUSHW ZPOutBufLen
>PUSHW ZPOutBufPtr
>LDA.G hOutBuf
>SYSCALL getmemptr
>PUSHYA
>LDA.G hFile
>SYSCALL fwrite
rts
@ -368,6 +375,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"
*--------------------------------------
.DUMMY
.OR 0

View File

@ -9,7 +9,7 @@ NEW
.INB INC/A2OSX.I
.INB INC/LIBPAK.I
*--------------------------------------
STATS .EQ 0
STATS .EQ 1
*--------------------------------------
ZPSrcPtr .EQ ZPLIB
ZPDstPtr .EQ ZPLIB+2
@ -90,6 +90,7 @@ Pak >PULLW Pak.SrcPtr
dec Pak.bPass2
jsr Pak.Out.Init Initialize properly for first "PutBit" Call
bcs .9
jsr Pak.Run
bcs .9
@ -258,11 +259,14 @@ Pak.ComputeLenBits
lda Pak.BL.Longest
beq .10
ldx #8
ldx #3
dec
dec
dec
beq .10
ldx #8
.1 asl
bcs .10
@ -357,7 +361,7 @@ Pak.BuildTOPTable
bne .1
.8 sty Pak.Shnk+S.PAKSHNK.TOPCNT
Pak.BuildTOPTable.RTS
rts
*--------------------------------------
Pak.PutBL ldx #S.PAKSTAT.BL
@ -367,23 +371,23 @@ Pak.PutBL ldx #S.PAKSTAT.BL
lda Pak.BestBLLen
cmp Pak.BL.Longest
bcc .10
bcc .1
sta Pak.BL.Longest
.10 ldy Pak.BestBL
.1 ldy Pak.BestBL
cpy Pak.BL.Farest
lda Pak.BestBL+1
pha
sbc Pak.BL.Farest+1
pla
bcc .11
bcc .2
>STYA Pak.BL.Farest
.11 bit Pak.bPass2
bmi .20
.2 bit Pak.bPass2
bmi .3
ldx #S.PAKSTAT.PASS1 Assume 1 BL worse case is 3 bytes
jsr Pak.UpdateStats
@ -392,31 +396,29 @@ Pak.PutBL ldx #S.PAKSTAT.BL
clc
rts
.20 ldy #PAK.B.BL.W
.3 ldy #PAK.B.BL.W
lda #PAK.B.BL
jsr Pak.Out.PutYBits
bcs .9
bcs Pak.BuildTOPTable.RTS
ldy Pak.BL.OfsBitsL
lda Pak.BestBL
jsr Pak.Out.PutYBits
bcs Pak.BuildTOPTable.RTS
ldy Pak.BL.OfsBitsH
beq .2
beq .4
lda Pak.BestBL+1
jsr Pak.Out.PutYBits
bcs .9
bcs Pak.BuildTOPTable.RTS
.2 ldy Pak.BL.OfsBitsL
lda Pak.BestBL
jsr Pak.Out.PutYBits
bcs .9
ldy Pak.BL.LenBits
.4 ldy Pak.BL.LenBits
lda Pak.BestBLLen
dec
dec
dec
jmp Pak.Out.PutYBits
.9 rts
*--------------------------------------
Pak.PutByte8 bit Pak.bPass2
bmi Pak.PutByte8.2
@ -435,7 +437,7 @@ Pak.PutByte8 bit Pak.bPass2
clc
rts
Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT
.1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y
@ -468,7 +470,8 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT
and #7
ora TOP.Bits,x
ldy TOP.BitCnt,x
pha
.4 pha
lda TOP.Stat,x
tax
@ -511,7 +514,7 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.ULEN
sta Pak.Out.Mask
stz Pak.Out.Byte
clc
* clc
.9 rts
*--------------------------------------
Pak.Out.Close bit Pak.Out.Mask
@ -549,6 +552,7 @@ Pak.Out.PutYBits
lda Pak.Out.Byte
stz Pak.Out.Byte
jsr Pak.Out.PutByte
.5 pla

View File

@ -62,6 +62,7 @@ X.Unpak.PAK pha A = BLBITS
sta ZPBLOfsHBits
jsr X.Unpak.NextByte get TOPCNT
>DEBUG
lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN
tax
@ -76,23 +77,20 @@ X.Unpak.PAK pha A = BLBITS
clc
adc ZPInBufPtr skip TOP table
sta ZPInBufPtr
bcc .11
lda ZPInBufPtr+1
adc #0
sta ZPInBufPtr+1
inc ZPInBufPtr+1
lda #$80
.11 lda #$80
sta ZPInMask
>DEBUG
*--------------------------------------
.1 lda ZPnCnt
ora ZPnCnt+1
beq X.Unpak.STORE.8
*--------------------------------------
.2 jsr X.Unpak.GetBitInC
bcs .3 ->TOP
.2 >DEBUG
jsr X.Unpak.GetBitInC
bcs .3 ->TOP
* BYTE8
ldx #8
jsr X.Unpak.GetXBitInA
@ -127,27 +125,34 @@ X.Unpak.PAK pha A = BLBITS
.52 jsr X.Unpak.PutByte
bne .2
clc
rts
*--------------------------------------
* BACKLINK : 1111 OfsLBits OfsHBits LenBits
.6 ldx ZPBLOfsLBits
jsr X.Unpak.GetXBitInA
tay
eor #$ff
sec
sbc ZPOutBufPtr
adc ZPOutBufPtr
sta ZPPtr2
php
lda ZPBLOfsHBits
beq .61
php
tax
jsr X.Unpak.GetXBitInA
plp
.61 plp
sbc ZPOutBufPtr+1
.61 pha
>PUSHYA
pla
eor #$ff
adc ZPOutBufPtr+1
sta ZPPtr2+1
ldx ZPBLLenBits
@ -156,18 +161,35 @@ X.Unpak.PAK pha A = BLBITS
inc +1
inc +1
inc +1
>PUSHA
pha
tay
>PUSHBI 3
.62 dey
lda (ZPPtr2),y
>LDYA L.DBG
>SYSCALL printf
pla
tax
ldy #0
.62 lda (ZPPtr2),y
jsr X.Unpak.PutByte
beq .99
tya
bne .62
bra .1
iny
dex
bne .62
lda #'\'
>SYSCALL putchar
lda #C.CR
>SYSCALL putchar
lda #C.LF
>SYSCALL putchar
jmp .1
.99 sec
rts
@ -211,6 +233,24 @@ 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