mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-20 11:29:29 +00:00
Kernel 0.93+
This commit is contained in:
parent
b9c6c178a9
commit
18f087ddcc
Binary file not shown.
|
@ -328,7 +328,7 @@ CS.RUN.REQUEST jsr Init.Timeout
|
||||||
|
|
||||||
jsr .8
|
jsr .8
|
||||||
bcc .1
|
bcc .1
|
||||||
tay
|
inc
|
||||||
bne .99
|
bne .99
|
||||||
>SLEEP
|
>SLEEP
|
||||||
jsr Wait.TimeOut
|
jsr Wait.TimeOut
|
||||||
|
|
290
LIB/LIBPAK.S.txt
290
LIB/LIBPAK.S.txt
|
@ -10,13 +10,14 @@ NEW
|
||||||
.INB INC/LIBPAK.I
|
.INB INC/LIBPAK.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPSrcPtr .EQ ZPLIB
|
ZPSrcPtr .EQ ZPLIB
|
||||||
ZPCnt .EQ ZPLIB+2
|
ZPDstPtr .EQ ZPLIB+2
|
||||||
ZPSrcBLPtr .EQ ZPLIB+4
|
ZPStatPtr .EQ ZPLIB+4
|
||||||
ZPBLCnt .EQ ZPLIB+6
|
|
||||||
ZPCntTmp .EQ ZPLIB+8
|
ZPSrcBLPtr .EQ ZPLIB+8
|
||||||
|
ZPCnt .EQ ZPLIB+10
|
||||||
|
ZPBLCnt .EQ ZPLIB+12
|
||||||
|
|
||||||
|
|
||||||
ZPDstPtr .EQ ZPLIB+16
|
|
||||||
ZPStatPtr .EQ ZPLIB+18
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -110,8 +111,6 @@ Pak >PULLW Pak.SrcPtr
|
||||||
|
|
||||||
jsr Pak.Out.Init Initialize properly for first "PutBit" Call
|
jsr Pak.Out.Init Initialize properly for first "PutBit" Call
|
||||||
|
|
||||||
stz Pak.StringLen
|
|
||||||
|
|
||||||
jsr Pak.Run
|
jsr Pak.Run
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -129,6 +128,111 @@ Pak >PULLW Pak.SrcPtr
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Pak.Run >LDYA Pak.SrcPtr
|
||||||
|
>STYA ZPSrcPtr
|
||||||
|
|
||||||
|
lda Pak.Shnk+S.PAKSHNK.ULEN
|
||||||
|
eor #$ff
|
||||||
|
sta Pak.SrcCnt
|
||||||
|
sta Pak.DstCnt
|
||||||
|
|
||||||
|
lda Pak.Shnk+S.PAKSHNK.ULEN+1
|
||||||
|
eor #$ff
|
||||||
|
sta Pak.SrcCnt+1
|
||||||
|
sta Pak.DstCnt+1
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror Pak.RepCnt
|
||||||
|
stz Pak.LastByte
|
||||||
|
|
||||||
|
ldx #S.PAKSTAT.PASS1
|
||||||
|
bit Pak.bPass2
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
|
||||||
|
.1 stz Pak.Stat,x Reset Stats
|
||||||
|
inx
|
||||||
|
cpx #S.PAKSTAT
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
stz Pak.BL.Longest
|
||||||
|
stz Pak.BL.Farest
|
||||||
|
stz Pak.BL.Farest+1
|
||||||
|
|
||||||
|
Pak.Run.1 inc Pak.SrcCnt
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc Pak.SrcCnt+1
|
||||||
|
beq .8 0 byte left...
|
||||||
|
|
||||||
|
.1 jsr Pak.ScanBL
|
||||||
|
bcs .4
|
||||||
|
|
||||||
|
ldx #S.PAKSTAT.BL
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
|
* jsr PrintBL
|
||||||
|
|
||||||
|
lda Pak.BestBLLen
|
||||||
|
cmp Pak.BL.Longest
|
||||||
|
bcc .10
|
||||||
|
|
||||||
|
sta Pak.BL.Longest
|
||||||
|
|
||||||
|
.10 bit Pak.bPass2
|
||||||
|
bmi .11
|
||||||
|
|
||||||
|
ldx #S.PAKSTAT.PASS1 Assume 1 BL worse case is 3 bytes
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.11 sec
|
||||||
|
lda Pak.Out.PutBitC
|
||||||
|
|
||||||
|
ldy Pak.BL.BitCntH
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda Pak.BestBL+1
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
|
||||||
|
.2 ldy Pak.BL.BitCntL
|
||||||
|
lda Pak.BestBL
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
|
||||||
|
ldy #6
|
||||||
|
lda Pak.BestBLLen
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
|
||||||
|
lda Pak.BestBLLen
|
||||||
|
clc
|
||||||
|
adc ZPSrcPtr
|
||||||
|
sta ZPSrcPtr
|
||||||
|
bcc .3
|
||||||
|
inc ZPSrcPtr+1
|
||||||
|
|
||||||
|
.3 lda Pak.BestBLLen
|
||||||
|
clc
|
||||||
|
adc Pak.SrcCnt
|
||||||
|
sta Pak.SrcCnt
|
||||||
|
bcc .1
|
||||||
|
inc Pak.SrcCnt+1
|
||||||
|
bmi .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.4 lda (ZPSrcPtr)
|
||||||
|
jsr Pak.PutA
|
||||||
|
|
||||||
|
inc ZPSrcPtr
|
||||||
|
bne Pak.Run.1
|
||||||
|
inc ZPSrcPtr+1
|
||||||
|
bra Pak.Run.1
|
||||||
|
*--------------------------------------
|
||||||
Pak.BuildTOPTable
|
Pak.BuildTOPTable
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
|
@ -178,110 +282,15 @@ Pak.BuildTOPTable
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.Run jsr Pak.InitPass
|
Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf
|
||||||
|
|
||||||
Pak.Run.1 inc Pak.SrcCnt
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc Pak.SrcCnt+1
|
|
||||||
beq .8 0 byte left...
|
|
||||||
|
|
||||||
.1 jsr Pak.ScanBL
|
|
||||||
bcs .4
|
|
||||||
|
|
||||||
bit Pak.bPass2
|
|
||||||
bmi .11
|
|
||||||
|
|
||||||
ldx #S.PAKSTAT.PASS1
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.11 sec
|
|
||||||
lda Pak.Out.PutBitC
|
|
||||||
|
|
||||||
ldy Pak.BL.BitCntH
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
lda Pak.BestBL+1
|
|
||||||
jsr Pak.Out.PutYBits
|
|
||||||
|
|
||||||
.2 ldy Pak.BL.BitCntL
|
|
||||||
lda Pak.BestBL
|
|
||||||
jsr Pak.Out.PutYBits
|
|
||||||
|
|
||||||
ldy #6
|
|
||||||
lda Pak.BestBLLen
|
|
||||||
jsr Pak.Out.PutYBits
|
|
||||||
|
|
||||||
lda Pak.BestBLLen
|
|
||||||
clc
|
|
||||||
adc ZPSrcPtr
|
|
||||||
sta ZPSrcPtr
|
|
||||||
bcc .3
|
|
||||||
inc ZPSrcPtr+1
|
|
||||||
|
|
||||||
.3 ldx #S.PAKSTAT.BL
|
|
||||||
jsr Pak.UpdateStats
|
|
||||||
|
|
||||||
lda Pak.BestBLLen
|
|
||||||
clc
|
|
||||||
adc Pak.SrcCnt
|
|
||||||
sta Pak.SrcCnt
|
|
||||||
bcc .1
|
|
||||||
inc Pak.SrcCnt+1
|
|
||||||
bmi .1
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
.4 lda (ZPSrcPtr)
|
|
||||||
jsr Pak.PutA
|
|
||||||
|
|
||||||
inc ZPSrcPtr
|
|
||||||
bne Pak.Run.1
|
|
||||||
inc ZPSrcPtr+1
|
|
||||||
bra Pak.Run.1
|
|
||||||
*--------------------------------------
|
|
||||||
Pak.InitPass >LDYA Pak.SrcPtr
|
|
||||||
>STYA ZPSrcPtr
|
|
||||||
|
|
||||||
lda Pak.Shnk+S.PAKSHNK.ULEN
|
|
||||||
eor #$ff
|
|
||||||
sta Pak.SrcCnt
|
|
||||||
|
|
||||||
lda Pak.Shnk+S.PAKSHNK.ULEN+1
|
|
||||||
eor #$ff
|
|
||||||
sta Pak.SrcCnt+1
|
|
||||||
|
|
||||||
sec
|
|
||||||
ror Pak.RepCnt
|
|
||||||
stz Pak.LastByte
|
|
||||||
|
|
||||||
ldx #S.PAKSTAT.PASS1
|
|
||||||
bit Pak.bPass2
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
|
|
||||||
.1 stz Pak.Stat,x Reset Stats
|
|
||||||
inx
|
|
||||||
cpx #S.PAKSTAT
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
Pak.ScanBL >LDYA Pak.SrcPtr
|
|
||||||
>STYA ZPSrcBLPtr
|
>STYA ZPSrcBLPtr
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ror Pak.bBLFound
|
ror Pak.bBLFound
|
||||||
|
stz Pak.BestBLLen
|
||||||
|
|
||||||
.1 sec
|
.1 lda ZPSrcBLPtr
|
||||||
lda ZPSrcBLPtr
|
sec
|
||||||
sbc ZPSrcPtr
|
sbc ZPSrcPtr
|
||||||
sta ZPBLCnt
|
sta ZPBLCnt
|
||||||
|
|
||||||
|
@ -290,8 +299,8 @@ Pak.ScanBL >LDYA Pak.SrcPtr
|
||||||
sta ZPBLCnt+1 ZPSrcBLPtr < !BlCnt < ZPSrcPtr
|
sta ZPBLCnt+1 ZPSrcBLPtr < !BlCnt < ZPSrcPtr
|
||||||
bcs .8 ZPSrcBLPtr = ZPSrcPtr, exit
|
bcs .8 ZPSrcBLPtr = ZPSrcPtr, exit
|
||||||
|
|
||||||
>LDYA ZPCnt
|
>LDYA Pak.SrcCnt make sure not going past End Buffer
|
||||||
>STYA ZPCntTmp Stop at end of Src Data
|
>STYA ZPCnt while reading ahead
|
||||||
|
|
||||||
ldy #0 ...or Y = BL.MAX
|
ldy #0 ...or Y = BL.MAX
|
||||||
|
|
||||||
|
@ -309,9 +318,9 @@ Pak.ScanBL >LDYA Pak.SrcPtr
|
||||||
cpy #BL.MAX
|
cpy #BL.MAX
|
||||||
beq .4 Max BL len
|
beq .4 Max BL len
|
||||||
|
|
||||||
inc ZPCntTmp
|
inc ZPCnt
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPCntTmp+1
|
inc ZPCnt+1
|
||||||
bne .2 Last Src Data
|
bne .2 Last Src Data
|
||||||
|
|
||||||
.4 dey Adjust BL len Range
|
.4 dey Adjust BL len Range
|
||||||
|
@ -319,29 +328,30 @@ Pak.ScanBL >LDYA Pak.SrcPtr
|
||||||
dey
|
dey
|
||||||
|
|
||||||
bmi .5 not long enough
|
bmi .5 not long enough
|
||||||
|
|
||||||
cpy Pak.BestBLLen
|
cpy Pak.BestBLLen
|
||||||
bcc .5 not better ...
|
bcc .5 not better ...
|
||||||
beq .5 same...
|
beq .5 same...
|
||||||
|
|
||||||
sty Pak.BestBLLen
|
sty Pak.BestBLLen
|
||||||
>LDYA ZPBLCnt
|
>LDYA ZPSrcBLPtr
|
||||||
>STYA Pak.BestBL
|
>STYA Pak.BestBL
|
||||||
|
|
||||||
stz Pak.bBLFound
|
stz Pak.bBLFound
|
||||||
|
|
||||||
jsr PrintBL
|
|
||||||
|
|
||||||
.5 inc ZPSrcBLPtr
|
.5 inc ZPSrcBLPtr
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPSrcBLPtr+1
|
inc ZPSrcBLPtr+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 rol Pak.bBLFound
|
.8 rol Pak.bBLFound
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintBl lda #'{'
|
PrintBl >LDYA Pak.BestBL
|
||||||
|
>STYA ZPSrcBLPtr
|
||||||
|
|
||||||
|
lda #'{'
|
||||||
>SYSCALL putchar
|
>SYSCALL putchar
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -370,7 +380,7 @@ PrintBl lda #'{'
|
||||||
>SYSCALL putchar
|
>SYSCALL putchar
|
||||||
lda #C.LF
|
lda #C.LF
|
||||||
>SYSCALL putchar
|
>SYSCALL putchar
|
||||||
>DEBUG
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.PutA bit Pak.bPass2
|
Pak.PutA bit Pak.bPass2
|
||||||
|
@ -382,9 +392,7 @@ Pak.PutA bit Pak.bPass2
|
||||||
|
|
||||||
inc Pak.CntH,x
|
inc Pak.CntH,x
|
||||||
|
|
||||||
.1 ldx #S.PAKSTAT.PASS1
|
.1 ldx #S.PAKSTAT.BYTE8
|
||||||
jsr Pak.UpdateStats
|
|
||||||
ldx #S.PAKSTAT.BYTE8
|
|
||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -441,7 +449,7 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
.1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y
|
.1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y
|
||||||
beq .3
|
beq .3
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bne .1
|
||||||
|
|
||||||
ldx #S.PAKSTAT.BYTE8
|
ldx #S.PAKSTAT.BYTE8
|
||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
|
@ -449,7 +457,9 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
clc
|
clc
|
||||||
jmp Pak.Out.PutCA
|
jmp Pak.Out.PutCA
|
||||||
|
|
||||||
.3 tya Range 0-23
|
.3 dey Range 0-23
|
||||||
|
|
||||||
|
tya
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
@ -462,7 +472,6 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
lda TOP.Stat,x
|
lda TOP.Stat,x
|
||||||
tax
|
tax
|
||||||
pla
|
pla
|
||||||
|
|
||||||
jsr Pak.UpdateStats
|
jsr Pak.UpdateStats
|
||||||
jmp Pak.Out.PutYBits
|
jmp Pak.Out.PutYBits
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -509,6 +518,8 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
cpy Pak.Shnk+S.PAKSHNK.TOPCNT
|
cpy Pak.Shnk+S.PAKSHNK.TOPCNT
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
stz Pak.StringLen
|
||||||
|
|
||||||
lda #$80
|
lda #$80
|
||||||
sta Pak.Out.Mask
|
sta Pak.Out.Mask
|
||||||
stz Pak.Out.Byte
|
stz Pak.Out.Byte
|
||||||
|
@ -596,14 +607,22 @@ Pak.UpdateStats inc Pak.Stat,x
|
||||||
inc Pak.Stat+1,x
|
inc Pak.Stat+1,x
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.PrintStats ldx #14
|
Pak.PrintStats lda Pak.BL.BitCntL
|
||||||
|
clc
|
||||||
|
adc Pak.BL.BitCntH
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
lda Pak.BL.Longest
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
ldx #14
|
||||||
|
|
||||||
.1 >PUSHW Pak.Stat,x
|
.1 >PUSHW Pak.Stat,x
|
||||||
dex
|
dex
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
>PUSHBI 16
|
>PUSHBI 18
|
||||||
>LDYA L.MSG.Stats
|
>LDYA L.MSG.Stats
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
|
@ -628,7 +647,7 @@ MSG.Stats .AS "\r\nPass 1 : %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\r\n"
|
||||||
.AZ "BLNK : %5D\r\n"
|
.AZ "BLNK : %5D, Longest : %d bytes, ptr witdh : %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 (%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"
|
||||||
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 #5,#6,#7
|
TOP.BitCnt .DA #5,#6,#7
|
||||||
|
@ -639,8 +658,10 @@ Pak.SrcPtr .BS 2
|
||||||
Pak.SrcCnt .BS 2
|
Pak.SrcCnt .BS 2
|
||||||
Pak.DstCnt .BS 2
|
Pak.DstCnt .BS 2
|
||||||
|
|
||||||
Pak.RepCnt .BS 1
|
Pak.bPass2 .BS 1
|
||||||
Pak.LastByte .BS 1
|
|
||||||
|
Pak.BL.Longest .BS 1
|
||||||
|
Pak.BL.Farest .BS 2
|
||||||
|
|
||||||
Pak.BL.BitCntL .BS 1
|
Pak.BL.BitCntL .BS 1
|
||||||
Pak.BL.BitCntH .BS 1
|
Pak.BL.BitCntH .BS 1
|
||||||
|
@ -649,13 +670,14 @@ Pak.bBLFound .BS 1
|
||||||
Pak.BestBLLen .BS 1
|
Pak.BestBLLen .BS 1
|
||||||
Pak.BestBL .BS 2
|
Pak.BestBL .BS 2
|
||||||
|
|
||||||
Pak.StringLen .BS 1
|
|
||||||
Pak.StringBuf .BS STRING.MAX
|
|
||||||
|
|
||||||
Pak.Cnt .BS 2
|
Pak.Cnt .BS 2
|
||||||
Pak.bStop .BS 1
|
Pak.bStop .BS 1
|
||||||
|
|
||||||
Pak.bPass2 .BS 1
|
Pak.RepCnt .BS 1
|
||||||
|
Pak.LastByte .BS 1
|
||||||
|
|
||||||
|
Pak.StringLen .BS 1
|
||||||
|
Pak.StringBuf .BS STRING.MAX
|
||||||
|
|
||||||
Pak.Out.Byte .BS 1
|
Pak.Out.Byte .BS 1
|
||||||
Pak.Out.Mask .BS 1
|
Pak.Out.Mask .BS 1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user