Author: ray (rl185.isis.de)
Date: 12-19-2002 00:40
heya elliot
>Why not ask the makers of Steem or other >STE emulator, they should have C code to do >the routines (i.e. Blits).
yeah, sounds neat...
>I have never used the PMMU so I do not know >how hard it is to re-map.
well it isn't, that's what it was designed for :) - just mind the TT's as well as the falcon's logical $ffffxxxx shadow register space which remaps (the st's) physical $00ffxxxx space for compatibility. this is done by the pmmu. just imagine it as a sort of address-lookup implemented on hardwarelevel, i think peylow has once written a tutorial on that topic if i remember correctly
>The problem would be the constant checking >of the active flag, it would use a lot of >CPU time
well, run an tt-mfp rout at let's say 50Hz or something the check would basically something like
blit_emu_isr btst.b #7,$ffff8a3c.w
beq.s .inactive
....
.inactive rte
now, does that cost that much cpu-time? :)
nonetheless, that wouldn't make the emulated blitter as responsive as the original one, so thing relying on timing heavily would probably not work.
> not sure how the tt-mfp works.
for simplicity think of the tt-mfp as a second st-mfp having a second set of (st-mfp independent) timers. as this chip is mapped from a diffrent addressbase it seems natural that it won't be affected by st-proggies (however by the ipl mask though, eventually :/).
last little listing coming up (hopefully, this won't be screwed up :)
blit_emu_isr btst.b #7,$ffff8a3c.w ; Check the busy flag
beq.s .inactive
pea.l blit_emu(pc) ; Run the bitter emulator and leave the isr
; in case of a blit request
.inactive rte
blit_emu disable blit_emu_isr to avoid disturbances here...
....blah ; Check for the blitter regs and perform blit, accordingly
; notice: this is happening _not_ within the irq above
reanable blit_emu_isr here
rts ; Return to the main program
that's what i envisage it to work like, just an idea again so don't bother....
regards
|