lxl.s 509 B

123456789101112131415161718192021222324252627282930
  1. .define Lxl
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! This subroutine loads LB n (255 => n > 0) static levels back.
  8. Lxl:
  9. lda LB
  10. sta ADDR ! address of localbase (lowbyte)
  11. lda LB+1
  12. sta ADDR+1 ! address of localbase (highbyte)
  13. 1: ldy #2
  14. lda (ADDR),y ! get localbase (lowbyte) 1 level back
  15. pha
  16. iny
  17. lda (ADDR),y ! get localbase (highbyte) 1 level back
  18. sta ADDR+1 ! new localbase (highbyte)
  19. pla
  20. sta ADDR ! new localbase (lowbyte)
  21. dex
  22. bne 1b ! n levels
  23. tax
  24. lda ADDR+1
  25. rts