Sorry, it should stay **I regularly use...**, obviously not you.
Aley
-----Original Message-----
From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
On Behalf Of Aley Keprt
Sent: Monday, January 31, 2005 10:20 AM
To:
sam-users@nvg.ntnu.no
Subject: RE: Fastest memory transfer (on
Sam)
I really miss some features in that debugger, and documentation
as well.
**U regularly** use ZX Spin emulator.
It can't emulate Sam Coupe, but contains a very strong debugger, and also
assembler compiler.
But, of course, I use SimCoupe to develop my new
demo. It has so tight timings, that I wonder how it will look on the real
machine. (I will test
later.) ;-)
Aley
-----Original
Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
On Behalf Of Simon Owen
Sent: Monday, January 31, 2005 4:15 AM
To:
sam-users@nvg.ntnu.no
Subject: RE: Fastest memory transfer (on
Sam)
Aley Keprt wrote:
> I need to move (video) memory on Sam,
what's the fastest routine?
Despite its unfinished state, the SimCoupe
debugger can be used to time blocks of code. Whenever you enter the
debugger the T-diff value in the bottom right of the display shows the number of
_real_ tstates that have passed since the debugger was last active. If
you're single-stepping it shows the time for the previous instruction, and if
you step over a call or hit a breakpoint you'll get the time for the whole
block.
In the absence of a debugger page-change function, a DI and HALT
can be used to conveniently stop execution at the start of your code. Call
your code then enter the debugger and use Ctrl-Down to advance past the blocked
HALT. If you've followed that by a CALL to your test code, press '8' on the
numeric keypad to step over the CALL and read off the T-diff value for the
entire sub-routine (including the CALL and RET). Alternatively, scroll
down and double-click on the final RET to set a breakpoint, then press Esc to
exit the debugger and continue execution until the breakpoint is hit.
Of
course, the ASIC/memory contention will depend on the current raster position,
so you'll need to anchor the test starting point for consistent results.
You could perhaps use an EI/HALT/DI after the blocked HALT above or simply
disable the screen for the duration of the
test.
Si