2020-09-20 21:49:36 +00:00
|
|
|
%import syslib
|
2022-04-12 21:58:19 +00:00
|
|
|
%import math
|
2019-01-12 00:59:32 +00:00
|
|
|
|
2019-07-29 21:11:13 +00:00
|
|
|
main {
|
2019-01-12 00:59:32 +00:00
|
|
|
|
|
|
|
sub start() {
|
2021-02-21 21:17:28 +00:00
|
|
|
c64.SCROLY &= %11101111 ; blank the screen
|
2023-11-21 21:33:37 +00:00
|
|
|
sys.set_rasterirq(&irq.irqhandler, 40) ; register exclusive raster irq handler
|
2019-01-12 00:59:32 +00:00
|
|
|
|
2020-07-25 14:25:02 +00:00
|
|
|
repeat {
|
2019-07-10 01:57:03 +00:00
|
|
|
; enjoy the moving bars :)
|
2019-01-15 20:35:15 +00:00
|
|
|
}
|
2019-01-12 00:59:32 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-07-29 21:11:13 +00:00
|
|
|
irq {
|
2019-01-12 00:59:32 +00:00
|
|
|
|
2021-03-16 00:02:29 +00:00
|
|
|
const ubyte barheight = 3 ; should be big enough to re-trigger the Raster irq properly.
|
2019-04-15 23:19:51 +00:00
|
|
|
ubyte[] colors = [6,2,4,5,15,7,1,13,3,12,8,11,9]
|
2019-01-25 00:35:46 +00:00
|
|
|
ubyte color = 0
|
2019-07-10 01:57:03 +00:00
|
|
|
ubyte yanim = 0
|
2019-01-12 00:59:32 +00:00
|
|
|
|
2023-11-21 21:33:37 +00:00
|
|
|
sub irqhandler() -> bool {
|
2019-01-12 00:59:32 +00:00
|
|
|
if color!=len(colors) {
|
|
|
|
c64.EXTCOL = colors[color]
|
2019-07-10 01:57:03 +00:00
|
|
|
c64.RASTER += barheight ; next raster Irq for next color
|
2019-01-12 00:59:32 +00:00
|
|
|
color++
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
c64.EXTCOL = 0
|
2019-01-25 00:35:46 +00:00
|
|
|
color = 0
|
2019-07-10 01:57:03 +00:00
|
|
|
yanim += 2
|
2022-04-12 21:58:19 +00:00
|
|
|
c64.RASTER = math.sin8u(yanim)/2+30 ; new start of raster Irq
|
2019-01-12 00:59:32 +00:00
|
|
|
}
|
2019-07-10 01:57:03 +00:00
|
|
|
c64.SCROLY &= $7f ; set high bit of the raster pos to zero
|
2023-11-21 21:33:37 +00:00
|
|
|
return false
|
2019-01-12 00:59:32 +00:00
|
|
|
}
|
|
|
|
}
|