z80.inc 781 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef __Z80_INC
  2. #define __Z80_INC
  3. ;;;
  4. ;;; Common defines
  5. ;;;
  6. #ifndef __Z80__
  7. # define __Z80__ 1
  8. #endif
  9. ;;;
  10. ;;; Macros to allow common simplified Z80 syntax
  11. ;;;
  12. .macro _M_add dst:req, src
  13. .ifb \src
  14. add a,\dst
  15. .else
  16. add \dst,\src
  17. .endif
  18. .endm
  19. #define add _M_add
  20. .macro _M_adc dst:req, src
  21. .ifb \src
  22. adc a,\dst
  23. .else
  24. adc \dst,\src
  25. .endif
  26. .endm
  27. #define adc _M_adc
  28. .macro _M_sbc dst:req, src
  29. .ifb \src
  30. sbc a,\dst
  31. .else
  32. sbc \dst,\src
  33. .endif
  34. .endm
  35. #define sbc _M_sbc
  36. ;;;
  37. ;;; Macro for optional byte argument after RST
  38. ;;;
  39. .macro _M_rst dst:req, arg
  40. rst \dst
  41. .ifnb \arg
  42. defb \arg
  43. .endif
  44. .endm
  45. #define rst _M_rst
  46. ;;;
  47. ;;; Hacks to simplify porting from z80asm
  48. ;;;
  49. #define defc /* Decays to a simple sym = val */
  50. #define ASMPC .
  51. #endif /* __Z80_INC */