mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-12 17:30:23 +00:00
Kernel 0.93+
This commit is contained in:
parent
8737f2669d
commit
0c35012171
Binary file not shown.
@ -106,17 +106,10 @@ Dev.Detect >STYA ARGS
|
||||
Dev.ParseArgs >LDYA ARGS
|
||||
>STYA ZPArgPTR
|
||||
lda (ZPArgPTR)
|
||||
bne .1
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
.1 >PUSHW L.MAC5
|
||||
|
||||
beq .8 No user MAC specified
|
||||
|
||||
>PUSHW L.MAC5
|
||||
>PUSHW L.MAC4
|
||||
>PUSHW L.MAC3
|
||||
>PUSHW L.MAC2
|
||||
@ -126,10 +119,16 @@ Dev.ParseArgs >LDYA ARGS
|
||||
>PUSHW L.SSCANF.MAC
|
||||
>LDYA ZPArgPtr
|
||||
>SYSCALL sscanf
|
||||
bcc .8
|
||||
lda #E.SYN
|
||||
bcs .9
|
||||
|
||||
dec USERMAC
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
.8 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
ARGS .BS 2
|
||||
@ -286,6 +285,7 @@ OPEN lda #S.DIB.S.OPENED
|
||||
bne .2
|
||||
|
||||
.3 ldx DEVSLOTx0
|
||||
|
||||
lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
|
||||
sta L91C96.1.CTR,x
|
||||
lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
|
||||
@ -311,8 +311,6 @@ CLOSE ldx DEVSLOTx0
|
||||
.1 eor $C019
|
||||
bpl .1
|
||||
|
||||
lda $C019
|
||||
|
||||
.2 eor $C019
|
||||
bpl .2
|
||||
|
||||
@ -384,23 +382,11 @@ READ php
|
||||
ldy #0
|
||||
|
||||
.2 inc Counter
|
||||
bne .21
|
||||
inc Counter+1
|
||||
beq .4
|
||||
|
||||
.21 lda L91C96.2.DATA,x
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
bne .3
|
||||
|
||||
inc ZPBufPtr+1
|
||||
|
||||
.3 inc Counter
|
||||
bne .31
|
||||
inc Counter+1
|
||||
beq .4
|
||||
|
||||
.31 lda L91C96.2.DATA,x
|
||||
.3 lda L91C96.2.DATA,x
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
bne .2
|
||||
@ -480,16 +466,17 @@ WRITE php
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
|
||||
ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
||||
ldx #5
|
||||
* ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
||||
* ldx #5
|
||||
|
||||
.4 lda S.DCB.NIC.MAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .4
|
||||
*.4 lda S.DCB.NIC.MAC,x
|
||||
* sta (ZPBufPtr),y
|
||||
* dey
|
||||
* dex
|
||||
* bpl .4
|
||||
|
||||
* ldx DEVSLOTx0
|
||||
|
||||
ldx DEVSLOTx0
|
||||
stz L91C96.2.DATA,x write fake status word
|
||||
stz L91C96.2.DATA,x
|
||||
|
||||
|
@ -3,9 +3,8 @@ NEW
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
REP.MAX .EQ 16
|
||||
STRING.MAX .EQ 16
|
||||
BL.MAX .EQ 66
|
||||
WSIZE .EQ 4096
|
||||
STRING.MAX .EQ 255
|
||||
BL.MAX .EQ 252
|
||||
*--------------------------------------
|
||||
PAK.B.STRING .EQ %0
|
||||
PAK.B.BYTE8 .EQ %0
|
||||
@ -23,7 +22,7 @@ PAK.B.BACKLINK .EQ %1
|
||||
* TOP24 : 1110 xxx
|
||||
* REPn : 1111 xxxx (1-16)
|
||||
* }
|
||||
* BACKLINK : 1 !BitCntWidePtr llllll (3-66)
|
||||
* BACKLINK : 1 OfsPtr Len
|
||||
*--------------------------------------
|
||||
* Shunk Header :
|
||||
* WORD : Target UNCompressed Length
|
||||
|
319
LIB/LIBPAK.S.txt
319
LIB/LIBPAK.S.txt
@ -69,31 +69,6 @@ Pak >PULLW Pak.SrcPtr
|
||||
inx
|
||||
bne .1
|
||||
|
||||
* Select best BL.BitCnt
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
|
||||
lda Pak.Shnk+S.PAKSHNK.ULEN+1
|
||||
beq .22
|
||||
|
||||
ldy #8
|
||||
|
||||
.2 asl
|
||||
bcs .4
|
||||
dey
|
||||
bra .2
|
||||
|
||||
.22 lda Pak.Shnk+S.PAKSHNK.ULEN
|
||||
|
||||
.3 asl
|
||||
bcs .4
|
||||
dex
|
||||
bra .3
|
||||
|
||||
.4 stx Pak.BL.BitCntL
|
||||
sty Pak.BL.BitCntH
|
||||
|
||||
* PASS #1 : no store, update byte counters
|
||||
|
||||
stz Pak.bPass2
|
||||
@ -101,6 +76,7 @@ Pak >PULLW Pak.SrcPtr
|
||||
jsr Pak.Run
|
||||
bcs .9
|
||||
|
||||
jsr Pak.ComputeBLBits
|
||||
jsr Pak.BuildTOPTable
|
||||
|
||||
jsr Pak.PrintStats
|
||||
@ -131,6 +107,10 @@ Pak >PULLW Pak.SrcPtr
|
||||
Pak.Run >LDYA Pak.SrcPtr
|
||||
>STYA ZPSrcPtr
|
||||
|
||||
stz Pak.BL.Longest
|
||||
stz Pak.BL.Farest
|
||||
stz Pak.BL.Farest+1
|
||||
|
||||
lda Pak.Shnk+S.PAKSHNK.ULEN
|
||||
eor #$ff
|
||||
sta Pak.SrcCnt
|
||||
@ -157,10 +137,6 @@ Pak.Run >LDYA Pak.SrcPtr
|
||||
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
|
||||
|
||||
@ -168,44 +144,19 @@ Pak.Run.1 inc Pak.SrcCnt
|
||||
beq .8 0 byte left...
|
||||
|
||||
.1 jsr Pak.ScanBL
|
||||
bcs .4
|
||||
|
||||
ldx #S.PAKSTAT.BL
|
||||
jsr Pak.UpdateStats
|
||||
|
||||
* jsr PrintBL
|
||||
bcc .2
|
||||
|
||||
lda Pak.BestBLLen
|
||||
cmp Pak.BL.Longest
|
||||
bcc .10
|
||||
lda (ZPSrcPtr) Not found...
|
||||
jsr Pak.PutA
|
||||
bcs .9
|
||||
|
||||
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
|
||||
inc ZPSrcPtr
|
||||
bne Pak.Run.1
|
||||
inc ZPSrcPtr+1
|
||||
bra Pak.Run.1
|
||||
|
||||
.2 jsr Pak.PutBL
|
||||
bcs .9
|
||||
|
||||
lda Pak.BestBLLen
|
||||
clc
|
||||
@ -224,14 +175,45 @@ Pak.Run.1 inc Pak.SrcCnt
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Pak.ComputeBLBits
|
||||
ldx #8
|
||||
lda Pak.BL.Longest
|
||||
|
||||
dec
|
||||
dec
|
||||
dec
|
||||
|
||||
.4 lda (ZPSrcPtr)
|
||||
jsr Pak.PutA
|
||||
.1 asl
|
||||
bcs .10
|
||||
dex
|
||||
bra .1
|
||||
|
||||
inc ZPSrcPtr
|
||||
bne Pak.Run.1
|
||||
inc ZPSrcPtr+1
|
||||
bra Pak.Run.1
|
||||
.10 stx Pak.BL.LenBits
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
|
||||
lda Pak.BL.Farest+1
|
||||
beq .22
|
||||
|
||||
ldy #8
|
||||
|
||||
.2 asl
|
||||
bcs .4
|
||||
dey
|
||||
bra .2
|
||||
|
||||
.22 lda Pak.BL.Farest
|
||||
|
||||
.3 asl
|
||||
bcs .4
|
||||
dex
|
||||
bra .3
|
||||
|
||||
.4 stx Pak.BL.OfsBitsL
|
||||
sty Pak.BL.OfsBitsH
|
||||
rts
|
||||
*--------------------------------------
|
||||
Pak.BuildTOPTable
|
||||
ldy #0
|
||||
@ -285,8 +267,8 @@ Pak.BuildTOPTable
|
||||
Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf
|
||||
>STYA ZPSrcBLPtr
|
||||
|
||||
sec
|
||||
ror Pak.bBLFound
|
||||
lda #$ff
|
||||
sta Pak.bBLFound
|
||||
stz Pak.BestBLLen
|
||||
|
||||
.1 lda ZPSrcBLPtr
|
||||
@ -303,43 +285,48 @@ Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf
|
||||
>STYA ZPCnt while reading ahead
|
||||
|
||||
ldy #0 ...or Y = BL.MAX
|
||||
|
||||
|
||||
.2 inc ZPBLCnt
|
||||
bne .3
|
||||
|
||||
inc ZPBLCnt+1
|
||||
beq .4 ZPSrcBLPtr = ZPSrcPtr
|
||||
beq .6 ZPSrcBLPtr = ZPSrcPtr
|
||||
|
||||
.3 lda (ZPSrcPtr),y
|
||||
cmp (ZPSrcBLPtr),y
|
||||
bne .4 End of string matching
|
||||
|
||||
iny
|
||||
cpy #BL.MAX
|
||||
beq .4 Max BL len
|
||||
|
||||
inc ZPCnt
|
||||
bne .2
|
||||
.3 inc ZPCnt
|
||||
bne .4
|
||||
|
||||
inc ZPCnt+1
|
||||
bne .2 Last Src Data
|
||||
beq .6 Last Src Data
|
||||
|
||||
.4 dey Adjust BL len Range
|
||||
dey (0 = 3 matching chars...etc..)
|
||||
dey
|
||||
.4 lda (ZPSrcPtr),y
|
||||
cmp (ZPSrcBLPtr),y
|
||||
bne .6 End of string matching
|
||||
|
||||
bmi .5 not long enough
|
||||
.5 iny
|
||||
cpy #BL.MAX
|
||||
bne .2 Max BL len
|
||||
|
||||
.6 cpy #4
|
||||
bcc .7 not long enough
|
||||
|
||||
cpy Pak.BestBLLen
|
||||
bcc .5 not better ...
|
||||
beq .5 same...
|
||||
bcc .7 not better ...
|
||||
* beq .7 !!! same...but closer !!!
|
||||
|
||||
sty Pak.BestBLLen
|
||||
>LDYA ZPSrcBLPtr
|
||||
>STYA Pak.BestBL
|
||||
|
||||
lda ZPSrcPtr
|
||||
sec
|
||||
sbc ZPSrcBLPtr
|
||||
sta Pak.BestBL
|
||||
|
||||
lda ZPSrcPtr+1
|
||||
sbc ZPSrcBLPtr+1
|
||||
sta Pak.BestBL+1
|
||||
|
||||
stz Pak.bBLFound
|
||||
|
||||
.5 inc ZPSrcBLPtr
|
||||
.7 inc ZPSrcBLPtr
|
||||
bne .1
|
||||
inc ZPSrcBLPtr+1
|
||||
bra .1
|
||||
@ -348,40 +335,61 @@ Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintBl >LDYA Pak.BestBL
|
||||
>STYA ZPSrcBLPtr
|
||||
Pak.PutBL ldx #S.PAKSTAT.BL
|
||||
jsr Pak.UpdateStats
|
||||
|
||||
lda #'{'
|
||||
>SYSCALL putchar
|
||||
|
||||
ldy #0
|
||||
ldx Pak.BestBLLen
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
|
||||
.40 lda (ZPSrcBLPtr),y
|
||||
phy
|
||||
phx
|
||||
cmp #C.SPACE
|
||||
bcs .41
|
||||
|
||||
lda #'_'
|
||||
.41 >SYSCALL putchar
|
||||
plx
|
||||
ply
|
||||
iny
|
||||
dex
|
||||
bne .40
|
||||
|
||||
lda #'}'
|
||||
>SYSCALL putchar
|
||||
lda #C.CR
|
||||
>SYSCALL putchar
|
||||
lda #C.LF
|
||||
>SYSCALL putchar
|
||||
* jsr PrintBL
|
||||
|
||||
lda Pak.BestBLLen
|
||||
cmp Pak.BL.Longest
|
||||
bcc .10
|
||||
|
||||
sta Pak.BL.Longest
|
||||
|
||||
.10 ldy Pak.BestBL
|
||||
cpy Pak.BL.Farest
|
||||
|
||||
lda Pak.BestBL+1
|
||||
pha
|
||||
sbc Pak.BL.Farest+1
|
||||
pla
|
||||
bcc .11
|
||||
|
||||
>STYA Pak.BL.Farest
|
||||
|
||||
.11 bit Pak.bPass2
|
||||
bmi .20
|
||||
|
||||
ldx #S.PAKSTAT.PASS1 Assume 1 BL worse case is 3 bytes
|
||||
jsr Pak.UpdateStats
|
||||
jsr Pak.UpdateStats
|
||||
jsr Pak.UpdateStats
|
||||
clc
|
||||
rts
|
||||
|
||||
.20 sec
|
||||
lda Pak.Out.PutBitC
|
||||
|
||||
ldy Pak.BL.OfsBitsH
|
||||
beq .2
|
||||
|
||||
lda Pak.BestBL+1
|
||||
jsr Pak.Out.PutYBits
|
||||
bcs .9
|
||||
|
||||
.2 ldy Pak.BL.OfsBitsL
|
||||
lda Pak.BestBL
|
||||
jsr Pak.Out.PutYBits
|
||||
bcs .9
|
||||
|
||||
ldy Pak.BL.LenBits
|
||||
lda Pak.BestBLLen
|
||||
dec
|
||||
dec
|
||||
dec
|
||||
jsr Pak.Out.PutYBits
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Pak.PutA bit Pak.bPass2
|
||||
bmi Pak.PutA.2
|
||||
@ -390,9 +398,12 @@ Pak.PutA bit Pak.bPass2
|
||||
inc Pak.CntL,x
|
||||
bne .1
|
||||
|
||||
inc Pak.CntH,x
|
||||
inc Pak.CntH,x
|
||||
|
||||
.1 ldx #S.PAKSTAT.BYTE8
|
||||
.1 ldx #S.PAKSTAT.PASS1
|
||||
jsr Pak.UpdateStats
|
||||
|
||||
ldx #S.PAKSTAT.BYTE8
|
||||
jsr Pak.UpdateStats
|
||||
|
||||
clc
|
||||
@ -607,13 +618,15 @@ Pak.UpdateStats inc Pak.Stat,x
|
||||
inc Pak.Stat+1,x
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
Pak.PrintStats lda Pak.BL.BitCntL
|
||||
Pak.PrintStats lda Pak.BL.OfsBitsL
|
||||
clc
|
||||
adc Pak.BL.BitCntH
|
||||
adc Pak.BL.OfsBitsH
|
||||
>PUSHA
|
||||
|
||||
lda Pak.BL.Longest
|
||||
>PUSHA
|
||||
>PUSHW Pak.BL.Farest
|
||||
|
||||
>PUSHB Pak.BL.LenBits
|
||||
>PUSHB Pak.BL.Longest
|
||||
|
||||
ldx #14
|
||||
|
||||
@ -622,7 +635,7 @@ Pak.PrintStats lda Pak.BL.BitCntL
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>PUSHBI 18
|
||||
>PUSHBI 21
|
||||
>LDYA L.MSG.Stats
|
||||
>SYSCALL printf
|
||||
|
||||
@ -635,7 +648,38 @@ Pak.PrintStats lda Pak.BL.BitCntL
|
||||
>PUSHBI 25
|
||||
>LDYA L.MSG.Top24
|
||||
>SYSCALL printf
|
||||
|
||||
>DEBUG
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintBl >LDYA Pak.BestBL
|
||||
>STYA ZPSrcBLPtr
|
||||
|
||||
lda #'{'
|
||||
>SYSCALL putchar
|
||||
|
||||
ldy #0
|
||||
ldx Pak.BestBLLen
|
||||
|
||||
.40 lda (ZPSrcBLPtr),y
|
||||
phy
|
||||
phx
|
||||
cmp #C.SPACE
|
||||
bcs .41
|
||||
|
||||
lda #'_'
|
||||
.41 >SYSCALL putchar
|
||||
plx
|
||||
ply
|
||||
iny
|
||||
dex
|
||||
bne .40
|
||||
|
||||
lda #'}'
|
||||
>SYSCALL putchar
|
||||
lda #C.CR
|
||||
>SYSCALL putchar
|
||||
lda #C.LF
|
||||
>SYSCALL putchar
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
@ -647,7 +691,7 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n"
|
||||
.AS "Top 16 : %5D\r\n"
|
||||
.AS "Top 24 : %5D\r\n"
|
||||
.AS "Rep N : %5D\r\n"
|
||||
.AZ "BLNK : %5D, Longest : %d bytes, ptr witdh : %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"
|
||||
TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24
|
||||
TOP.BitCnt .DA #5,#6,#7
|
||||
@ -663,8 +707,9 @@ Pak.bPass2 .BS 1
|
||||
Pak.BL.Longest .BS 1
|
||||
Pak.BL.Farest .BS 2
|
||||
|
||||
Pak.BL.BitCntL .BS 1
|
||||
Pak.BL.BitCntH .BS 1
|
||||
Pak.BL.LenBits .BS 1
|
||||
Pak.BL.OfsBitsL .BS 1
|
||||
Pak.BL.OfsBitsH .BS 1
|
||||
|
||||
Pak.bBLFound .BS 1
|
||||
Pak.BestBLLen .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user