home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_26_1988_Transactor_Publishing.d64 / dynaborder.pal (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  2KB  |  122 lines

  1. 1000 sys700
  2. 1010 ; * dynaborder           *
  3. 1020 ; * pal source code      *
  4. 1030 ; * by jean-yves lemieux *
  5. 1040 ; * rimouski (qc) dec 88 *
  6. 1050 ; ************************
  7. 1060 ;
  8. 1070 .opt oo
  9. 1080 ;
  10. 1090 tem    =$254    ;temporary storage
  11. 1100 irqold =$257
  12. 1110 irqvec =$314    ;irq vector
  13. 1120 rashi  =$d011   ;raster line
  14. 1130 raslo  =$d012   ;registers
  15. 1140 irr    =$d019   ;int. request reg
  16. 1150 imr    =$d01a   ;int. mask reg
  17. 1160 bcol   =$d020   ;border color
  18. 1170 icr    =$dc0d   ;int. cntrl reg
  19. 1180 ;
  20. 1190 *=$3000
  21. 1200 ;
  22. 1210 sei
  23. 1220 lda irqvec      ;prepare new
  24. 1230 ldy irqvec+1    ;interrupt
  25. 1240 sta irqold      ;procedure
  26. 1250 sty irqold+1
  27. 1260 lda #<newirq
  28. 1270 ldy #>newirq
  29. 1280 di sta irqvec
  30. 1290 sty irqvec+1
  31. 1300 cli
  32. 1310 lda #1          ;enable raster
  33. 1320 sta imr         ;line interrupt
  34. 1330 sta irr         ;reset irr
  35. 1340 lda #$1b        ;clear raster
  36. 1350 sta rashi       ;compare bit (8)
  37. 1360 lda #$7f        ;clear irq
  38. 1370 sta icr         ;flag bit
  39. 1380 lda #$00
  40. 1390 sta tem         ;prepare
  41. 1400 sta tem+2       ;self-modifying
  42. 1410 lda #$05        ;routine
  43. 1420 sta tem+1
  44. 1430 lda #$d7
  45. 1440 sta n6+1
  46. 1450 rts
  47. 1460 ;
  48. 1470 newirq =*
  49. 1480 ;
  50. 1490 lda #$32        ;first interrupt
  51. 1500 sta raslo       ;at line 50
  52. 1510 ldx #1          ;reset
  53. 1520 stx irr         ;register
  54. 1530 ldy #0
  55. 1540 n1 adc #2       ;if a raster line
  56. 1550 n2 cmp raslo    ;has been reached
  57. 1560 bne n2          ;we display
  58. 1570 stx bcol        ;a color stripe
  59. 1580 n3 inx
  60. 1590 adc tem+1       ;separated by
  61. 1600 n4 cmp raslo
  62. 1610 bne n4
  63. 1620 sty bcol        ;a black line
  64. 1630 n5 cpx #$05
  65. 1640 bne n1
  66. 1650 bit tem
  67. 1660 bvs rest
  68. 1670 ;
  69. 1680 ldx #0          ;modify prior
  70. 1690 stx n5+1        ;routine
  71. 1700 ldx #$ca        ;'dex' opcode
  72. 1710 stx n3
  73. 1720 n6 lda #$00     ;display bottom
  74. 1730 sta raslo       ;rainbow
  75. 1740 ldx #1
  76. 1750 stx irr
  77. 1760 dec tem
  78. 1770 ldx #4
  79. 1780 bne n1
  80. 1790 ;
  81. 1800 rest =*         ;restore newirq
  82. 1810 ;                routine
  83. 1820 lda #$e8        ;'inx' opcode
  84. 1830 sta n3
  85. 1840 lda #5
  86. 1850 sta n5+1
  87. 1860 inc tem
  88. 1870 lda tem+2
  89. 1880 beq r1
  90. 1890 sec             ;modify raster
  91. 1900 lda n6+1        ;line value
  92. 1910 sbc #4
  93. 1920 sta n6+1
  94. 1930 ldx tem+1       ;and stripe width
  95. 1940 inx
  96. 1950 cpx #$16
  97. 1960 bne cirq
  98. 1970 inc tem+2
  99. 1980 beq cirq
  100. 1990 r1 ldx tem+1
  101. 2000 clc
  102. 2010 lda n6+1
  103. 2020 adc #$04
  104. 2030 sta n6+1
  105. 2040 dex
  106. 2050 bne cirq
  107. 2060 dec tem+2
  108. 2070 ;
  109. 2080 cirq =*         ;continue irq
  110. 2090 ;
  111. 2100 stx tem+1
  112. 2110 lda #$30        ;next raster line
  113. 2120 sta raslo       ;interrupt
  114. 2130 lda #1
  115. 2140 sta irr
  116. 2150 jmp (irqold)
  117. 2160 disable =*
  118. 2170 sei
  119. 2180 lda irqold
  120. 2190 ldy irqold+1
  121. 2200 jmp di
  122.