Advertisement
Guest User

Untitled

a guest
Feb 6th, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .file [name="out.prg", segments="Default,STD_LIBRARY"]
  2. .segmentdef STD_LIBRARY [start=$3000]
  3.  
  4. //------------------------------------
  5. .var libAddr = Hashtable()
  6.  
  7. .macro proc(macroName) {
  8.   .if (libAddr.get(macroName) == null) {
  9.     .segment STD_LIBRARY
  10.     // Macro name be logged as a bonus
  11.     .memblock macroName
  12.    .eval libAddr.put(macroName, *)
  13.     // Need to map manually since calling macros dynamically is out of scope
  14.     .if (macroName == "setColors") setColors()
  15.     .if (macroName == "setSpriteColors") setSpriteColors()
  16.     .segment Default
  17.   }
  18.   jsr libAddr.get(macroName)
  19. }
  20.  
  21. //------------------------------------
  22.  
  23. .macro setColors() {
  24.   stx $d020
  25.   sty $d021
  26.   rts
  27. }
  28.  
  29. .macro setSpriteColors() {
  30.   sta $d027
  31.   sta $d028
  32.   sta $d029
  33.   sta $d02a
  34.   sta $d02b
  35.   sta $d02c
  36.   sta $d02e
  37.   sta $d02f
  38.   rts
  39. }
  40.  
  41. //------------------------------------
  42. * = $1000 "Code"
  43.  
  44.   ldx #2
  45.   ldy #4
  46.   proc("setColors")
  47.  
  48.   lda #7
  49.   proc("setSpriteColors")
  50.  
  51.   ldx #2
  52.   ldy #4
  53.   proc("setColors")
  54.  
  55.   jmp *
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement