PseudoCmds.lib 902 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #importonce
  2. //------------------------------------
  3. // Basic commands
  4. //------------------------------------
  5. .pseudocommand mov arg1:arg2 {
  6. lda arg1
  7. sta arg2
  8. }
  9. .pseudocommand incLim tar:lim {
  10. inc tar
  11. lda tar
  12. cmp lim
  13. bne exit
  14. lda #0
  15. sta tar
  16. exit:
  17. }
  18. .pseudocommand mov16 src:tar {
  19. lda src
  20. sta tar
  21. lda _16bit_nextArgument(src)
  22. sta _16bit_nextArgument(tar)
  23. }
  24. .function _16bit_nextArgument(arg) {
  25. .if (arg.getType()==AT_IMMEDIATE) .return CmdArgument(arg.getType(),>arg.getValue())
  26. .return CmdArgument(arg.getType(),arg.getValue()+1)
  27. }
  28. //------------------------------------
  29. // Irq commands
  30. //------------------------------------
  31. .pseudocommand irqStart {
  32. pha
  33. txa
  34. pha
  35. tya
  36. pha
  37. mov #$ff : $d019
  38. }
  39. .pseudocommand irqEnd line : addr {
  40. .if (line.getType()!=AT_NONE) mov line : $d012
  41. .if (addr.getType()!=AT_NONE) mov addr : $fffe
  42. pla
  43. tay
  44. pla
  45. tax
  46. pla
  47. rti
  48. }