Re: [hatari-devel] Blitter emulation corner case

[ Thread Index | Date Index | More 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 */
while (LINE_NUM & 0x80) {
	LINE_NUM = 0x80; /* restart Blitter */
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 >>>
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 Zietz  -  CHZ-Soft  -  czietz@xxxxxxx
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA

Attachment: BLTEM030.ZIP
Description: Zip archive

Mail converted by MHonArc 2.6.19+