[A83] Re: MirageOS remembering program location


[Prev][Next][Index][Thread]

[A83] Re: MirageOS remembering program location




> This resetting 'feature' how is it accomplished? My guess is that there is
> some little bit of hardware (inside or outside the Z80) that checks if:
>
> - the highest bit of the adress-bus is set (A0-pin?)
>    => read from / write to $8000-$FFFF
> - the processor requests data (MREQ- or RD-pin?)
>    => we now know the Z80 is reading
> - the R register gets an update (RFSH-pin?)
>    => gets only updated when an OP-code is requested
...Actually, it needs to be a bit more complicated because it's actually
dependant on what page the code is actually running from, not the mapped
address.  IE. if you load RAM page 0 into 4000h, and run some code there,
it'll still crash.  The same applies for the Flash ROM execution protection.

On a side note, here's a nifty quick way to "disable" the 8.8k limit on the
SE:
1) Enter calcsys port monitor.
2) Output a value of 87h to port 5
3) Go to the console and BC 404E.
4) RAM will be reset, but after this point code can run from higher than
0C000h with no problem.

....What's actually happening is that RAM page 87h is being loaded into
C000h instead of RAM page 80h.  The reset is to initialize all the TIOS data
on that page.  Alternatively you could copy all that data from 80h to 87h.
This will last until you have a full reset (as in, boot code
running...execute from 0000h), or a self test.


-Dan Englender





References: