Login
Search for:


Previous | Next

From: Crown (all posts)
Date: 1998-06-05
Subject: Re: RAM refresh
Hi there,

>But this means that there is a big jump after line $137 or $105, just like
>with the VIC-II.
Yes, after $137 in PAL and after $105 in NTSC.

>So? :-) Well, you just have to skip the difficult cycles somehow. For
>instance, with an RTS (the stack is filled with a constant byte that makes
>the program return to open address space) or RTI you can skip 5 or 6
>difficult cycles, respectively. So, to skip the refresh cycles you could
>always do an RTS right before the refresh. No problem at all. But of
>course it would be nicer to also use the refresh cycles. And that's
>actually where all the action in my $dadb program takes place, as far as I
>remember.
Yes, RTS is a good solution, but I guess we should fill the stack not with one byte, but with a two byte seq, as there is only the
$fe00-$feff range is available as open address space. (Cartridge ROM can't be used, as in the FAST normal lines where the accesses for address $ffff are happening, open address space accesses would happen continously at least for 6 cycle, and as far as I know the data on the bus would degenerate. For the same reason this code should run in slow mode, as in a border line all acesses would be open address space acesses, well surely we could jump out to normal addresses at this zones, but I guess the goal is to run the whole thing in the open address space.) So if we fill the stack with $fe then there is only two cycles would be left so after the RTS seq a conditional branch instruction is needed to keep the code in open address space.
Also this means that RAM must be turned on, as at $FFFF $FC a NOP3
instruction is, and after the Refresh zone this byte would be used for the next instruction, and if it is a NOP3 than it will go out from open address space. So we would put an RTS into $ffff.

Also not all addresses are available at $fe00-$feff, if a 1551 is connected to the PLUS4. Actually I do not know exactly which addresses are used by different hardwares at this range. Does anybody have the detailed mapping of this address space? Also this request applies for the $fd00-$fdff range. I do know that some areas are used by the SID card ($fd40-...) etc, but would be nice to know the details for all hardware expansions which exists.

Tibor Biczo / Crown of GOTU

Copyright © Plus/4 World Team, 2001-2024