Re: [hatari-devel] Blitter emulation corner case

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


markus@xxxxxxx schrieb:

> If you send me your code, I'll be happy to test it on my Falcon. I agree 
> we shouldn't bother Roger too much as he has to do precious work on 
> EmuTOS ;)

It is attached, incl. a version compiled for the 68030, i.e. with cache
handling. (Again, this won't run on a plain 68000.)

The code now is:

LINE_NUM = 0x80; /* set busy bit: start blitter: no HOG mode */
bltround++;
while (LINE_NUM & 0x80) {
	LINE_NUM = 0x80; /* restart Blitter */
	bltround++;
}
LINE_NUM = 0x80; /* restart Blitter one last time, like Atari code */

This is as closely as I can replicate the Atari code without using
assembler. Note that like it says in the comment, the Atari code sets
the Blitter BUSY bit one last time, even if it reads back as 0:

move.b    #fLineBusy,d2       ; fast refer to LineBusy flag
[...]
move.b    #mLineBusy,(a2)     ; <<< start the BLiTTER >>>
[...]
restart:
bset.b    d2,(a2)        ; Restart BLiTTER and test the BUSY
nop                      ; flag state.  The "nop" is executed
bne  restart             ; prior to the BLiTTER restarting.
                         ; Quit if the BUSY flag was clear.

Christian
-- 
Christian Zietz  -  CHZ-Soft  -  czietz@xxxxxxx
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA

Attachment: BLTEM030.ZIP
Description: Zip archive



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/