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 rts
*-------------------------------------- *--------------------------------------
CS.RUN.WriteSrcData CS.RUN.WriteSrcData
>DEBUG
lda #CHNK.T.DATA lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9

View File

@ -59,6 +59,7 @@ L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
L.MSG.E.IARC .DA MSG.E.IARC L.MSG.E.IARC .DA MSG.E.IARC
L.MSG.E.OFS .DA MSG.E.OFS L.MSG.E.OFS .DA MSG.E.OFS
L.DBG .DA DBG
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -99,7 +100,7 @@ CS.RUN >LDYAI CHNK.SIZE
>LDYAI CHNK.SIZE >LDYAI CHNK.SIZE
>SYSCALL getmem >SYSCALL getmem
bcs .9 bcs .9
>STYA ZPOutBufPtr
txa txa
>STA.G hOutBuf >STA.G hOutBuf
@ -199,6 +200,10 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
lda (ZPInBufPtr),y lda (ZPInBufPtr),y
sta ZPOutBufLen+1 sta ZPOutBufLen+1
>LDA.G hOutBuf
>SYSCALL getmemptr
>STYA ZPOutBufPtr
jsr X.Unpak jsr X.Unpak
bcs .9 bcs .9
@ -325,7 +330,9 @@ CS.RUN.OpenFile >PUSHW.G FileAuxType
*-------------------------------------- *--------------------------------------
CS.RUN.WriteFile CS.RUN.WriteFile
>PUSHW ZPOutBufLen >PUSHW ZPOutBufLen
>PUSHW ZPOutBufPtr >LDA.G hOutBuf
>SYSCALL getmemptr
>PUSHYA
>LDA.G hFile >LDA.G hFile
>SYSCALL fwrite >SYSCALL fwrite
rts rts
@ -368,6 +375,7 @@ MSG.ERR .AZ "[%h]\r\n"
MSG.E.IARC .AZ "Invalid/corrupt archive" MSG.E.IARC .AZ "Invalid/corrupt archive"
MSG.E.OFS .AZ "UnPak Error at Offset : %L\r\n" MSG.E.OFS .AZ "UnPak Error at Offset : %L\r\n"
MSG.PAK .AS "PAK" MSG.PAK .AS "PAK"
DBG .AZ "\r\n\e[7m[L=%h,O=%H]\e[0m"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

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

View File

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