prog8/examples/rasterbars.p8

40 lines
923 B
Plaintext
Raw Normal View History

2019-01-12 00:59:32 +00:00
%import c64utils
%import c64lib
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() {
2019-07-10 01:57:03 +00:00
c64.SCROLY &= %11101111 ; blank the screen
c64utils.set_rasterirq_excl(40) ; register exclusive raster irq handler
2019-01-12 00:59:32 +00:00
2020-03-14 17:11:24 +00:00
forever {
2019-07-10 01:57:03 +00:00
; enjoy the moving bars :)
}
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
const ubyte barheight = 4 ; should be big enough to re-trigger the Raster irq properly.
ubyte[] colors = [6,2,4,5,15,7,1,13,3,12,8,11,9]
ubyte color = 0
2019-07-10 01:57:03 +00:00
ubyte yanim = 0
2019-01-12 00:59:32 +00:00
sub irq() {
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
color = 0
2019-07-10 01:57:03 +00:00
yanim += 2
c64.RASTER = 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
2019-01-12 00:59:32 +00:00
}
}