Well, I wanted to do a proper release when this was ready to go, but it seems I can't get this to work for some strange reason. Long story short, if you visit WOS you know what is this: a way to display full colour blocky graphics (4x4 pixel "blocks") using the dual display in 128K models. Complete with converter and stuff. Could be nice for text adventures and stuff.
The finished product will have a way to specify the height of the graphics windows and its vertical position. But right away I'm struggling with odd behaviour. Look at this picture:
The top 16 lines are multi-colour (8x4 attributes). This is done by interrrupts: there's an ISR which just switches the visible screen each 228x4 T-states, that is, 4 pixel lines on a 128. Of course this takes quite a lot of frame time.
The strange stuff in the bottom part is supposed to be a bouncing "O". This program usually works:
Dim x, y, cx, cy, mx, my as Byte
cx = 16: cy = 20: mx = -1: my = -1: x = 16: y = 20
x = x + mx : If x = 0 Or x = 31 Then mx = -mx: End If
y = y + my : If y = 16 Or y = 23 Then my = -my: End If
Print At y, x; "o"; At cy, cx; " ";
cx = x: cy = y
But if I run it alongside my ISR, the odd pattern shown above is produced. The O is not an O, and the SPACE doesn't delete. It's like an OVER 1 with some strange symbols, so something is getting QUITE messed up. Maybe PRINT needs the BASIC ISR running to work properly?
Here is the test project -> http://www.mojontwins.com/warehouse/blo ... t-v0.2.zip
Compile with zxb.exe -t -B -a test_fb.bas
Run in a 128K model.