Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Golomb-Rice Example
- lorom
- org $3FFFFF
- db $00
- org $309000
- incbin new.huf
- org $03B608
- JMP $308000
- org $308000
- ;Clear the OR key, we will replace ORA $32
- ;with ORA #$2000 later in the code
- LDA #$0000
- STA $34
- SEP #$20
- STZ $33
- SETUP_STUFF:
- SEP #$20 ;Switch to 8-Bit
- LDA #$03
- STZ $34
- STA $35
- READ_LETTER:
- ASL $33 ;Shift Left
- BNE RELOAD_DONE_LETTER
- LDA $0000,y
- INY
- SEC
- ROL A
- STA $33
- RELOAD_DONE_LETTER:
- BCS READ_LITERAL ;Read Literals if the Bit was 1...
- INC $34 ;...else increase Zerocounter and
- JMP READ_LETTER ;jump, to read the next Letter from bitstream
- READ_LITERAL:
- ASL $33 ;Shift Bits
- BNE RELOAD_DONE_LITERAL
- LDA $0000,y
- INY
- SEC
- ROL A
- STA $33
- RELOAD_DONE_LITERAL:
- ROL $34 ;Rotate Left, this shifts our Zerocount Lft and adds the Carry Bit
- DEC $35
- BNE READ_LITERAL
- LDA $34
- PHX
- TAX
- LDA $309001,x
- STA $34
- PLX
- REP #$20
- CMP #$00FF ; vergleichen ob der Wert in A $FF ist
- BEQ END_FOUND ; Wenn Ja (BRanch Equals), dann gehe zu END_FOUND (siehe weiter unten)
- CMP #$00FE ; vergleichen ob der Wert in A $FE ist
- BEQ NEXT_LINE_FOUND ; Wenn Ja (BRanch Equals), dann gehe zu NEXT_LINE_FOUND (siehe weiter unten)
- PHX ; PusH index register X, speichern von X im Stack
- TXA ; Transferiere X nach A
- CLC ; CLear Carry
- ADC $36 ; ADd to Carry , adde das was an Ram Offset $36 steht zu A
- TAX ; Transferiere A nach X
- LDA $34 ; LaDe nach A was an Ram Offset $34 steht (Unser Buchstabe)
- ORA #$2000
- STA $7F6000,x ; Speichern von A an Ram Offset $7F6000+x
- PLX ; PuLl X, jetzt holen wir uns unser Index Register X wieder zurück
- INX ; INcrease X (Unser Schreiboffset für die Buchstaben)
- INX ; INcrease X
- LDA #$0000
- JMP SETUP_STUFF:
- NEXT_LINE_FOUND:
- LDA $36 ; LaDe nach A was an Ram Offset $36 steht
- CLC ; CLear Carry
- ADC #$002E ; AD to Carry, adde 002E zu A
- STA $36 ; Speicher A in Ram Offset $36
- LDX #$0000 ; LaDe $0000 in X
- LDA #$0000
- JMP SETUP_STUFF:
- END_FOUND:
- TXA ; Transferiere X nach A
- CLC ; Clear Carry
- ADC $36 ; ADd to Carry , adde das was an Ram Offset $36 steht zu A
- TAX ; Transferiere A nach X
- LDA #$FFFF ; LaDe $FFFF in A
- STA $7F6000,x ; Speicher A in Ram Offset $7F6000+x
- JMP $03B653 ; Springt zu dem Punkt nach der Originalen Routine
Add Comment
Please, Sign In to add comment