Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-07 17:49:03 +02:00
parent 8737f2669d
commit 0c35012171
4 changed files with 209 additions and 178 deletions

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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