Guest User

Untitled

a guest
Jun 25th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Golomb-Rice Example
  2. lorom
  3.  
  4. org $3FFFFF
  5.   db $00
  6.  
  7. org $309000
  8.  
  9. incbin new.huf
  10. org $03B608
  11.   JMP $308000
  12.  
  13. org $308000
  14.  
  15. ;Clear the OR key, we will replace ORA $32
  16. ;with ORA #$2000 later in the code
  17. LDA #$0000
  18. STA $34
  19. SEP #$20
  20. STZ $33
  21.  
  22. SETUP_STUFF:
  23. SEP #$20                ;Switch to 8-Bit
  24. LDA #$03
  25. STZ $34
  26. STA $35
  27.  
  28.  
  29. READ_LETTER:
  30. ASL $33                 ;Shift Left
  31. BNE RELOAD_DONE_LETTER
  32. LDA $0000,y
  33. INY
  34. SEC
  35. ROL A
  36. STA $33
  37. RELOAD_DONE_LETTER:
  38. BCS READ_LITERAL        ;Read Literals if the Bit was 1...
  39. INC $34                 ;...else increase Zerocounter and
  40. JMP READ_LETTER         ;jump, to read the next Letter from bitstream
  41.  
  42. READ_LITERAL:
  43.  
  44. ASL $33                 ;Shift Bits
  45. BNE RELOAD_DONE_LITERAL
  46. LDA $0000,y
  47. INY
  48. SEC
  49. ROL A
  50. STA $33
  51. RELOAD_DONE_LITERAL:
  52. ROL $34                 ;Rotate Left, this shifts our Zerocount Lft and adds the Carry Bit
  53. DEC $35
  54. BNE READ_LITERAL
  55.  
  56. LDA $34
  57. PHX
  58. TAX
  59. LDA $309001,x
  60. STA $34
  61. PLX
  62.  
  63.  
  64. REP #$20
  65.  
  66.   CMP #$00FF              ; vergleichen ob der Wert in A $FF ist
  67.     BEQ END_FOUND           ; Wenn Ja (BRanch Equals), dann gehe zu END_FOUND (siehe weiter unten)
  68.   CMP #$00FE              ; vergleichen ob der Wert in A $FE ist
  69.     BEQ NEXT_LINE_FOUND     ; Wenn Ja (BRanch Equals), dann gehe zu NEXT_LINE_FOUND (siehe weiter unten)
  70.   PHX                     ; PusH index register X, speichern von X im Stack
  71.   TXA                     ; Transferiere X nach A
  72.   CLC                     ; CLear Carry
  73.   ADC $36                 ; ADd to Carry , adde das was an Ram Offset $36 steht zu A
  74.   TAX                     ; Transferiere A nach X
  75.   LDA $34                 ; LaDe nach A was an Ram Offset $34 steht (Unser Buchstabe)
  76.   ORA #$2000
  77.   STA $7F6000,x           ; Speichern von A an Ram Offset $7F6000+x
  78.   PLX                     ; PuLl X, jetzt holen wir uns unser Index Register X wieder zurück
  79.   INX                     ; INcrease X (Unser Schreiboffset für die Buchstaben)
  80.   INX                     ; INcrease X
  81.   LDA #$0000
  82. JMP SETUP_STUFF:
  83.  
  84. NEXT_LINE_FOUND:
  85.   LDA $36                 ; LaDe nach A was an Ram Offset $36 steht
  86.   CLC                     ; CLear Carry
  87.   ADC #$002E              ; AD to Carry, adde 002E zu A
  88.   STA $36                 ; Speicher A in Ram Offset $36
  89.   LDX #$0000              ; LaDe $0000 in X
  90.   LDA #$0000
  91. JMP SETUP_STUFF:
  92.  
  93. END_FOUND:
  94.   TXA                     ; Transferiere X nach A
  95.   CLC                     ; Clear Carry
  96.   ADC $36                 ; ADd to Carry , adde das was an Ram Offset $36 steht zu A
  97.   TAX                     ; Transferiere A nach X
  98.   LDA #$FFFF              ; LaDe $FFFF in A
  99.   STA $7F6000,x           ; Speicher A in Ram Offset $7F6000+x
  100.  
  101. JMP $03B653               ; Springt zu dem Punkt nach der Originalen Routine
Add Comment
Please, Sign In to add comment