Print Code.
Close Window.

  1. int_addr equ $8f8f
  2. ;===============================
  3. ; Install IM 2 Grayscale Routine
  4. ;===============================
  5. OpenGray:
  6. ld hl,$ce00
  7. ld de, SixBytes
  8. ld bc, 6
  9. ldir
  10. ld hl,$8e00
  11. ld de,$8e01
  12. ld (hl),$8f
  13. ld bc,256
  14. ldir
  15. ld hl,int_copy
  16. ld de,int_addr
  17. ld bc,int_end-int_start
  18. ldir
  19. call _runindicoff
  20. ;================================================
  21. ; Set up parameters to pass the interrupt handler
  22. ; via the alternate register set
  23. ;================================================
  24. di
  25. exx
  26. ld b,$3c
  27. ld c,0
  28. ld d,5
  29. ld e,%110110
  30. ld hl,UserCounter
  31. exx
  32. xor a
  33. ld (UserCounter),a
  34. ld a,$8e
  35. ld i,a
  36. im 2
  37. ei
  38. ret
  39. ;==================================
  40. ; Close Grayscale Handler
  41. ;==================================
  42. CloseGray:
  43. im 1
  44. ld a,$3c
  45. out (0),a
  46. call _clrLCD
  47. ld hl,_plotSScreen
  48. ld de,_plotSScreen+1
  49. ld (hl), 0
  50. ld bc,1024
  51. ldir
  52. ld hl, SixBytes
  53. ld de, $ce00
  54. ld bc, 6
  55. ldir
  56. ret
  57. org $8f8f
  58. int_copy:
  59. int_start:
  60. ex af,af'
  61. exx
  62. in a,(3)
  63. bit 1,a
  64. jr z,leave_int
  65. inc (hl)
  66. out (c),b
  67. dec d
  68. call z,reset_int_counter
  69. ld a,d
  70. cp 2
  71. call z,change_pages
  72. leave_int:
  73. in a,(3)
  74. rra
  75. ld a,c
  76. adc a,9
  77. out (3),a
  78. ld a,$0b
  79. out (3),a
  80. ex af,af'
  81. exx
  82. ei
  83. reti
  84. reset_int_counter:
  85. ld d,5
  86. change_pages:
  87. ld a,e
  88. xor b
  89. ld b,a
  90. ret
  91. int_end:
  92. UserCounter: .db 5
  93. SixBytes: .db 0,0,0,0,0,0
  94. .end