mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel 0.93+
This commit is contained in:
parent
577850daa6
commit
3ac336ccd1
Binary file not shown.
@ -23,11 +23,12 @@ PAK.B.BL.W .EQ 5
|
|||||||
* !!! USED TO STOP UNPACK,NO EOF TOKEN!!!
|
* !!! USED TO STOP UNPACK,NO EOF TOKEN!!!
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.PAKSHNK.ULEN .EQ 0 Uncompressed length
|
S.PAKSHNK.ULEN .EQ 0 Uncompressed length
|
||||||
S.PAKSHNK.TOPCNT .EQ 2
|
S.PAKSHNK.BLBITS .EQ 2 1.lll.oooo
|
||||||
S.PAKSHNK.TOPBYTES .EQ 3
|
S.PAKSHNK.TOPCNT .EQ 3
|
||||||
|
S.PAKSHNK.TOPBYTES .EQ 4
|
||||||
* TOP Bytes ....
|
* TOP Bytes ....
|
||||||
* DATA
|
* DATA
|
||||||
S.PAKSHNK .EQ 2+1+24 Max
|
S.PAKSHNK .EQ 2+1+1+24 Max
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.PAKSTAT.PASS1 .EQ 0
|
S.PAKSTAT.PASS1 .EQ 0
|
||||||
S.PAKSTAT.PASS2 .EQ 2
|
S.PAKSTAT.PASS2 .EQ 2
|
||||||
|
158
LIB/LIBPAK.S.txt
158
LIB/LIBPAK.S.txt
@ -99,7 +99,7 @@ Pak >PULLW Pak.SrcPtr
|
|||||||
dey
|
dey
|
||||||
bpl .7
|
bpl .7
|
||||||
|
|
||||||
>DEBUG
|
* >DEBUG
|
||||||
|
|
||||||
>LDYA Pak.Stat+S.PAKSTAT.PASS2
|
>LDYA Pak.Stat+S.PAKSTAT.PASS2
|
||||||
clc
|
clc
|
||||||
@ -109,6 +109,8 @@ Pak >PULLW Pak.SrcPtr
|
|||||||
Pak.Run >LDYA Pak.SrcPtr
|
Pak.Run >LDYA Pak.SrcPtr
|
||||||
>STYA ZPSrcPtr
|
>STYA ZPSrcPtr
|
||||||
|
|
||||||
|
stz Pak.Rep.Longest
|
||||||
|
|
||||||
stz Pak.BL.Longest
|
stz Pak.BL.Longest
|
||||||
stz Pak.BL.Farest
|
stz Pak.BL.Farest
|
||||||
stz Pak.BL.Farest+1
|
stz Pak.BL.Farest+1
|
||||||
@ -145,34 +147,31 @@ Pak.Run.1 inc Pak.SrcCnt
|
|||||||
inc Pak.SrcCnt+1
|
inc Pak.SrcCnt+1
|
||||||
beq .8 0 byte left...
|
beq .8 0 byte left...
|
||||||
|
|
||||||
.1 Pak.ScanRep
|
.1 jsr Pak.ScanRep
|
||||||
bcs .10
|
bcs .10
|
||||||
|
|
||||||
|
jsr Pak.PutRep
|
||||||
|
|
||||||
10 jsr Pak.ScanBL
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
lda (ZPSrcPtr) Not found...
|
|
||||||
jsr Pak.PutByte
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
ldy Pak.RepCnt
|
||||||
|
bra .6
|
||||||
|
|
||||||
inc ZPSrcPtr
|
.10 jsr Pak.ScanBL
|
||||||
bne Pak.Run.1
|
bcs .20
|
||||||
inc ZPSrcPtr+1
|
|
||||||
bra Pak.Run.1
|
|
||||||
|
|
||||||
.2 jsr Pak.PutBL
|
.2 jsr Pak.PutBL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda Pak.BestBLLen
|
ldy Pak.BestBLLen
|
||||||
|
|
||||||
|
.6 tya
|
||||||
clc
|
clc
|
||||||
adc ZPSrcPtr
|
adc ZPSrcPtr
|
||||||
sta ZPSrcPtr
|
sta ZPSrcPtr
|
||||||
bcc .3
|
bcc .7
|
||||||
inc ZPSrcPtr+1
|
inc ZPSrcPtr+1
|
||||||
|
|
||||||
.3 lda Pak.BestBLLen
|
.7 tya
|
||||||
clc
|
clc
|
||||||
adc Pak.SrcCnt
|
adc Pak.SrcCnt
|
||||||
sta Pak.SrcCnt
|
sta Pak.SrcCnt
|
||||||
@ -182,11 +181,20 @@ Pak.Run.1 inc Pak.SrcCnt
|
|||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.20 lda (ZPSrcPtr) Not found...
|
||||||
|
jsr Pak.PutByte8
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
inc ZPSrcPtr
|
||||||
|
bne Pak.Run.1
|
||||||
|
inc ZPSrcPtr+1
|
||||||
|
bra Pak.Run.1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.ScanRep >LDYA Pak.SrcCnt make sure not going past End Buffer
|
Pak.ScanRep >LDYA Pak.SrcCnt make sure not going past End Buffer
|
||||||
>STYA ZPCnt while reading ahead
|
>STYA ZPCnt while reading ahead
|
||||||
|
|
||||||
lda (ZPSrcPtr)
|
lda Pak.LastByte
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
@ -194,19 +202,25 @@ Pak.ScanRep >LDYA Pak.SrcCnt make sure not going past End Buffer
|
|||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc ZPCnt+1
|
inc ZPCnt+1
|
||||||
beq .3 Last Src Data
|
beq .4 Last Src Data
|
||||||
|
|
||||||
.2 iny
|
.2 cmp (ZPSrcPtr),y
|
||||||
cmp (ZPSrcPtr),y
|
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
.3 cpy #REP.MAX
|
iny
|
||||||
|
cpy #REP.MAX
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.4 dey
|
.4 tya
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
clc
|
sty Pak.RepCnt
|
||||||
|
cpy Pak.Rep.Longest
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
sty Pak.Rep.Longest
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
@ -320,6 +334,18 @@ Pak.ComputeBLBits
|
|||||||
|
|
||||||
.4 stx Pak.BL.OfsBitsL
|
.4 stx Pak.BL.OfsBitsL
|
||||||
sty Pak.BL.OfsBitsH
|
sty Pak.BL.OfsBitsH
|
||||||
|
|
||||||
|
lda Pak.BL.LenBits
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
|
||||||
|
adc Pak.BL.OfsBitsL
|
||||||
|
adc Pak.BL.OfsBitsH
|
||||||
|
ora #$80
|
||||||
|
sta Pak.Shnk+S.PAKSHNK.BLBITS
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.BuildTOPTable
|
Pak.BuildTOPTable
|
||||||
@ -371,14 +397,30 @@ Pak.BuildTOPTable
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.PutRep bit Pak.bPass2
|
Pak.PutRep ldx #S.PAKSTAT.REPN
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
|
bit Pak.bPass2
|
||||||
bmi Pak.PutRep.2
|
bmi Pak.PutRep.2
|
||||||
|
|
||||||
|
ldx #S.PAKSTAT.BYTE8
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
|
ldx #S.PAKSTAT.PASS1
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
Pak.PutRep.2
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
Pak.PutRep.2 lda Pak.RepCnt
|
||||||
|
dec remap 1-8 to 0-7 range
|
||||||
|
|
||||||
|
ldy #PAK.B.REPn.W
|
||||||
|
ora #PAK.B.REPn
|
||||||
|
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.PutBL ldx #S.PAKSTAT.BL
|
Pak.PutBL ldx #S.PAKSTAT.BL
|
||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
@ -437,37 +479,18 @@ Pak.PutBL ldx #S.PAKSTAT.BL
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.PutByte bit Pak.bPass2
|
Pak.PutByte8 sta Pak.LastByte
|
||||||
|
|
||||||
|
bit Pak.bPass2
|
||||||
bmi Pak.PutByte.2
|
bmi Pak.PutByte.2
|
||||||
|
|
||||||
bra .5
|
|
||||||
|
|
||||||
cmp Pak.LastByte
|
|
||||||
sta Pak.LastByte
|
|
||||||
bne .5
|
|
||||||
|
|
||||||
inc Pak.RepCnt
|
|
||||||
lda Pak.RepCnt
|
|
||||||
cmp #REP.MAX
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr Pak.FlushREP
|
|
||||||
|
|
||||||
.1 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.5 tax
|
.5 tax
|
||||||
inc Pak.CntL,x
|
inc Pak.CntL,x
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
inc Pak.CntH,x
|
inc Pak.CntH,x
|
||||||
|
|
||||||
.6 lda Pak.RepCnt
|
.6 ldx #S.PAKSTAT.PASS1
|
||||||
beq .8 No pending RepN
|
|
||||||
|
|
||||||
jsr Pak.FlushREP
|
|
||||||
|
|
||||||
.8 ldx #S.PAKSTAT.PASS1
|
|
||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
ldx #S.PAKSTAT.BYTE8
|
ldx #S.PAKSTAT.BYTE8
|
||||||
@ -507,25 +530,11 @@ Pak.PutByte.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT
|
|||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
jmp Pak.Out.PutYBits
|
jmp Pak.Out.PutYBits
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.FlushREP bit Pak.bPass2
|
Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS
|
||||||
bmi Pak.FlushREP.2
|
jsr Pak.Out.PutByte
|
||||||
|
bcs .9
|
||||||
ldx #S.PAKSTAT.REPN
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
|
|
||||||
ldx #S.PAKSTAT.PASS1
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
|
|
||||||
stz Pak.RepCnt
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
Pak.FlushREP.2
|
|
||||||
|
|
||||||
clc
|
lda Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.TOPCNT
|
|
||||||
jsr Pak.Out.PutByte
|
jsr Pak.Out.PutByte
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -633,18 +642,21 @@ Pak.PrintStats lda Pak.BL.OfsBitsL
|
|||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW Pak.BL.Farest
|
>PUSHW Pak.BL.Farest
|
||||||
|
|
||||||
>PUSHB Pak.BL.LenBits
|
>PUSHB Pak.BL.LenBits
|
||||||
>PUSHB Pak.BL.Longest
|
>PUSHB Pak.BL.Longest
|
||||||
|
>PUSHW Pak.Stat+S.PAKSTAT.BL
|
||||||
ldx #14
|
|
||||||
|
>PUSHB Pak.REP.Longest
|
||||||
|
>PUSHW Pak.Stat+S.PAKSTAT.REPN
|
||||||
|
|
||||||
|
ldx #10
|
||||||
|
|
||||||
.1 >PUSHW Pak.Stat,x
|
.1 >PUSHW Pak.Stat,x
|
||||||
dex
|
dex
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
>PUSHBI 21
|
>PUSHBI 22
|
||||||
>LDYA L.MSG.Stats
|
>LDYA L.MSG.Stats
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
@ -698,9 +710,9 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n"
|
|||||||
.AS "Top 8 : %5D\r\n"
|
.AS "Top 8 : %5D\r\n"
|
||||||
.AS "Top 16 : %5D\r\n"
|
.AS "Top 16 : %5D\r\n"
|
||||||
.AS "Top 24 : %5D\r\n"
|
.AS "Top 24 : %5D\r\n"
|
||||||
.AS "Rep N : %5D\r\n"
|
.AS "Rep N : %5D, Longest : %d\r\n"
|
||||||
.AZ "BLNK : %5D, Longest : %d (%d bits), Farest : %D (%d bits)\r\n"
|
.AZ "BLNK : %5D, Longest : %d (%d bits), Farest : %D (%d bits)\r\n"
|
||||||
MSG.Top24 .AZ "Top (%2d) : %h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h\r\n"
|
MSG.Top24 .AZ "Top : %d, %h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h\r\n"
|
||||||
TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24
|
TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24
|
||||||
TOP.BitCnt .DA #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W
|
TOP.BitCnt .DA #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W
|
||||||
TOP.Stat .DA #S.PAKSTAT.TOP8,#S.PAKSTAT.TOP16,#S.PAKSTAT.TOP24
|
TOP.Stat .DA #S.PAKSTAT.TOP8,#S.PAKSTAT.TOP16,#S.PAKSTAT.TOP24
|
||||||
@ -726,6 +738,8 @@ Pak.BestBL .BS 2
|
|||||||
Pak.Cnt .BS 2
|
Pak.Cnt .BS 2
|
||||||
Pak.bStop .BS 1
|
Pak.bStop .BS 1
|
||||||
|
|
||||||
|
Pak.Rep.Longest .BS 1
|
||||||
|
|
||||||
Pak.RepCnt .BS 1
|
Pak.RepCnt .BS 1
|
||||||
Pak.LastByte .BS 1
|
Pak.LastByte .BS 1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user