So, another lunch time used constructively figuring out this lovely little language :-)
I've managed to get rid of my dirty lines, which has inevitably caused some more questions. Here's what I did first though:
As Graeme pointed out, I put the calculation for the blittersize into memory:
Code:
BlitterSize: dc.l h*bpls*64+bpl/2
and used it thus:
Code:
ClearScreen:
bsr WaitBlitter
clr.w BLTDMOD(a6)
move.l #$01000000,BLTCON0(a6)
move.l a1,BLTDPTH(a6)
move.w BlitterSize,BLTSIZE(a6)
rts
I also changed the DDFSTOP value:
I based this off the size of the fetches in 4x mode, basically it fetches 64bits instead of the normal 16bits (hence the 4x).
However, I know this is short of the full display width using my rudimentary table:
Code:
Address Locations: $38 $40 $48 $50 $58 $60 $68 $70 $78 $80 $88 $90 $98 $a0 $a8 $b0 $b8 $c0 $c8 $d0 $d8 $e0 $e8 $f0
x1 fetch mode: SRT| | | | | | | | | | |STP
x4 fethc mode: SRT| | | |
So the fetch (for DMA?) is 32bits short?
Shoot me down for the stupid assumptions and questions but:
1. How do I ensure that the fetch actually fetches to the end of the screen. I've already determined stopping later causes issues. Do we use $98?
2. I had a look at the BLTSIZV and BLTSIZH register documentation but couldn't find any examples. Can someone explain how they work? I think one is the width, and one the height. But in what? I'm assuming bits?
Thanks again for any help!