home *** CD-ROM | disk | FTP | other *** search
- ; update.a
- ;──────────────────────────────────────────────────────────────────────────────
- ; LHARC self extraction code for C64/C128 - Copyright 1990 Chris Smeets
- ;──────────────────────────────────────────────────────────────────────────────
- ; Update() is the function responsible for the majority of the execution time
- ; during extraction.
-
- INSTXT "sfx.i"
-
- EXT freq
- EXT prnt
- EXT son
- EXT Reconst
-
- PUBLIC Update
-
- PNT EQU T0 ; Zpage temps
- I EQU T1
- C EQU T2
- J EQU T3
- K EQU T4
- L EQU T5
- C2 EQU T6 ; 2*c
- L2 EQU T7 ; 2*l
-
- Update
- lda freq+Rstar2 ; if (freq[R] == 0x8000)
- cmp #<MAX_FREQ ; reconst();
- bne upd0
- lda freq+Rstar2+1
- cmp #>MAX_FREQ
- bne upd0
- txa
- pha
- tya
- pha
- jsr Reconst
- pla
- tay
- pla
- tax
-
- upd0 stx C
- sty C+1
- ldx #0
- ldy #1
- asl C
- rol C+1
- clc ; C = prnt[T+c]
- lda #<prnt+Tstar2
- adc C
- sta PNT
- lda #>prnt+Tstar2
- adc C+1
- sta PNT+1
- lda (PNT,x)
- asl a
- sta C
- lda (PNT),y
- rol a
- sta C+1
-
- do clc ; k = ++freq[c]
- lda #<freq
- adc C
- sta PNT
- lda #>freq
- adc C+1
- sta PNT+1
- clc
- lda (PNT,x)
- adc #1
- sta (PNT,x)
- sta K
- lda (PNT),y
- adc #0
- sta (PNT),y
- sta K+1
-
- if clc ; l = c+1
- lda C
- adc #2
- sta L
- lda C+1
- adc #0
- sta L+1
-
- clc
- lda L
- adc #<freq
- sta PNT ; if (k>freq[l])
- lda L+1
- adc #>freq
- sta PNT+1
- upd1 lda (PNT,x)
- cmp K
- lda (PNT),y
- sbc K+1
- bcc while
- jmp endif
-
- while clc ; while(k>freq[++l])
- lda L ; ;
- adc #2
- sta L
- bcc upd2
- inc L+1
- upd2 clc
- lda L
- adc #<freq
- sta PNT
- lda L+1
- adc #>freq
- sta PNT+1
- lda (PNT,x)
- cmp K
- lda (PNT),y
- sbc K+1
- bcc while
-
- sec
- lda L ; l--
- sbc #2
- sta L
- lda L+1
- sbc #0
- sta L+1
-
- clc ; freq[c] = freq[l]
- lda C
- adc #<freq
- sta C2
- lda C+1
- adc #>freq
- sta C2+1
- clc
- lda L
- adc #<freq
- sta L2
- lda L+1
- adc #>freq
- sta L2+1
- lda (L2,x)
- sta (C2,x)
- lda (L2),y
- sta (C2),y
-
- lda K ; freq[l] = k
- sta (L2,x)
- lda K+1
- sta (L2),y
-
- ì2j EXT p
- 0e PNT adc #>freq
- sta PNT+1
- lda freq+Rstar2+1
- CC2
- lda L+1
- sta Lmí+1
- xpsC+1
- clc ; C = prc lda K T+1
- l sbc #2
- 7#2
- nlp sta L
- sta L bcc upd2
- o T+1
- J#c#<freq
-
- sta (C2,x)
- (#SÆM+╩lép╙í╜L2
- lda L+1
- +s T+1
- l╤£P-K~of the execution tYnπ lda L+1
- Kûr╬£ i ócPNT
- or the majority of the e ; freq[l] h ; while(k>freq[++l])<freS ócPNT
- or the major╒R; sta K
- lda (PNT),y
- rcPNT
- or the majo
- j lda L+1
- ae adc #>freq
- sta PNT+1
- lda frea (L2
- lda L+1
- )Rhlpr╙nm#2
- 7#2
- nl│
- cif+1
- ± inc L+1 sbc #2
- sta L
- lda L+1
- ),y
- lda L+1
- adc #>freq
- d-EQU T3
- K D É Kûr╬£ i ócPNT
- or lda L+1
- ),y
- ae adc #>freq
- sta PNT+1
- ldaå sta PNT+
- or lda L+1
- ),y
- aeÆtC_ C = prc lda K T+1
- #C 2eC;B),y
- lda L+1
- ) T+1
- ╢ ⌐ ) T+1
- inc L+ adc #>freq
- b ) T+1
- inc L+ ╒Ie ) T+1
- inc L+(C2 sta PNT+
- orp+(C2 st(2j EXTî sCalda +aq|#>freq
- b ) T+1
- K2ynô"u #C 2eC;B),y
- lda LK
- xia lda
- 0mÑ0l]c
- £ -πsT+1/
- JZs╗EXT+
- n╜ e
- C
- ldaå sta PNT+
- or lda L+1
- )eq
- d-EQU T3
- adc #<02p lda LK
- xia l&QiL &QiKTupd2 íÅrBp+(C2 &QiLei(PNTu0 2ynôea P adc #>freq
- sta PNT+1
- ldaå {Có£╟da +aq|#>freq
- b ) T+1
- K2ynô"u #C 2eC;B),M sbSZ42Hnô"u #C 2eC;B),M st(2j EXb ) T+1
- K2yn)p;nna--╥╖òöñ┴æ¡áÄÿºïèëêç¬àäâ┐üÇ║}ªÜz┌╠╧vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvƒ╛▐ⁿ¢█▌╞╘╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓╓δ└¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿╝ΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩ`Γ^τ\Φ≤╣┤WVε÷√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√⌡∙O╨╕╚≡≥≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈═ß²»╦°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°@?▀µΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ:⌠╔∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∩╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┘α░■╫Θφ▄······················································'¥%$σ┬!½.Ö▒▓¼=Gù├ú[kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkìììììììììììììììììììììììììììì ─╩é«3╤Y ₧û╬╬╬╬╬╬╬╬╬╬╬~wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww│±gåDÉ*#hhhhhhhhhhhhhhPR("⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐⌐