mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-03-16 23:31:59 +00:00
asm_routines: update lz4 comments
This commit is contained in:
parent
ae638b8a37
commit
da04382c18
@ -72,7 +72,7 @@ lz4_decode:
|
|||||||
|
|
||||||
|
|
||||||
unpmain:
|
unpmain:
|
||||||
ldy #0 ; used to index
|
ldy #0 ; used to index, always zero
|
||||||
|
|
||||||
parsetoken:
|
parsetoken:
|
||||||
jsr getsrc ; get next token
|
jsr getsrc ; get next token
|
||||||
@ -83,12 +83,15 @@ parsetoken:
|
|||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
beq copymatches ; if zero, then no literals
|
beq copymatches ; if zero, then no literals
|
||||||
|
; jump ahead and copy
|
||||||
|
|
||||||
jsr buildcount
|
jsr buildcount ; add up all the literal sizes
|
||||||
tax
|
; result is in ram[count+1]-1:A
|
||||||
jsr docopy
|
tax ; now in ram[count+1]-1:X
|
||||||
lda src
|
jsr docopy ; copy the literals
|
||||||
cmp end
|
|
||||||
|
lda src ; 16-bit compare
|
||||||
|
cmp end ; to see if we have reached the end
|
||||||
lda src+1
|
lda src+1
|
||||||
sbc end+1
|
sbc end+1
|
||||||
bcs done
|
bcs done
|
||||||
@ -103,45 +106,51 @@ copymatches:
|
|||||||
and #$0f ; get bottom 4 bits
|
and #$0f ; get bottom 4 bits
|
||||||
; match count. 0 means 4
|
; match count. 0 means 4
|
||||||
; 15 means 19+, must be calculated
|
; 15 means 19+, must be calculated
|
||||||
jsr buildcount
|
|
||||||
|
jsr buildcount ; add up count bits, in ram[count+1]-:A
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #4 ; adjust count by 4 (minmatch)
|
adc #4 ; adjust count by 4 (minmatch)
|
||||||
|
|
||||||
tax
|
tax ; now in ramp[count+1]-1:X
|
||||||
beq copy_skip ; BUGFIX
|
|
||||||
bcc copy_skip
|
|
||||||
|
|
||||||
inc count+1
|
beq copy_no_adjust ; BUGFIX, don't increment if
|
||||||
copy_skip:
|
; exactly a multiple of 0x100
|
||||||
lda src+1
|
bcc copy_no_adjust
|
||||||
|
|
||||||
|
inc count+1 ; increment if we overflowed
|
||||||
|
copy_no_adjust:
|
||||||
|
|
||||||
|
lda src+1 ; save src on stack
|
||||||
pha
|
pha
|
||||||
lda src
|
lda src
|
||||||
pha
|
pha
|
||||||
sec
|
|
||||||
lda dst
|
sec ; subtract delta
|
||||||
|
lda dst ; from destination, make new src
|
||||||
sbc delta
|
sbc delta
|
||||||
sta src
|
sta src
|
||||||
lda dst+1
|
lda dst+1
|
||||||
sbc delta+1
|
sbc delta+1
|
||||||
sta src+1
|
sta src+1
|
||||||
jsr docopy
|
|
||||||
pla
|
jsr docopy ; do the copy
|
||||||
|
|
||||||
|
pla ; restore the src
|
||||||
sta src
|
sta src
|
||||||
pla
|
pla
|
||||||
sta src+1
|
sta src+1
|
||||||
jmp parsetoken
|
|
||||||
|
jmp parsetoken ; back to parsing tokens
|
||||||
|
|
||||||
done:
|
done:
|
||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=========
|
;=========
|
||||||
; getsrc
|
; getsrc
|
||||||
;=========
|
;=========
|
||||||
|
; gets byte from src into A, increments pointer
|
||||||
getsrc:
|
getsrc:
|
||||||
lda (src), Y ; get a byte from src
|
lda (src), Y ; get a byte from src
|
||||||
inc src ; increment pointer
|
inc src ; increment pointer
|
||||||
@ -183,10 +192,11 @@ getput:
|
|||||||
;=============
|
;=============
|
||||||
; putdst
|
; putdst
|
||||||
;=============
|
;=============
|
||||||
|
; store A into destination
|
||||||
putdst:
|
putdst:
|
||||||
sta (dst), Y
|
sta (dst), Y ; store A into destination
|
||||||
inc dst
|
inc dst ; increment 16-bit pointer
|
||||||
bne putdst_end
|
bne putdst_end ; if overflow, increment top byte
|
||||||
inc dst+1
|
inc dst+1
|
||||||
putdst_end:
|
putdst_end:
|
||||||
rts
|
rts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user