Spectrum memory.

ZXNet echo conference «real.speccy»

From Ivan Mak To All 23 March 2000


Greetings, Kirill!

<02:33> Kirill Frolov write to Ivan Mak:

KF> 256 is 16 by 16 bytes. And to switch 4 pages from 256
KF> you need only 4 bytes. What was the rest of the memory spent on? :-/

Each of the 16 pages connected via 7FFD, 1FFD in #C000 has its own byte.
Pages #0000, #4000, #8000, as well as TR-DOS, BASIC,
EXPANSION, etc. also have their own byte. Total 32 pages. In Pentagon-512 mode, another 16
bytes are occupied. In 1024 mode - another 32, i.e. up to 80 bytes.
The rest goes to the internal configuration of the ports. For HDD, for example...

KF> And you only need 256 bytes, which are available. I didn’t understand...
In your circuit there were 9 lines at the RAM address of the configuration, i.e. already 512 bytes.

KF> In general, I think it will be limited to the ability to address only 512-kb, and
KF> use one bit to allow writing to a RAM page.

In this case, IMHO, it is better to make two bytes per jar at once. So that the second
byte could only be changed by the system program. Then, there will be no
restrictions left for the system, and for tasks there will be 512Kb-max, and even if the ports are damaged, they will not fit into the system or into someone else's task.

[skip about RTC]
there is such a thing in the Z84C15. It's called Watch Dog Timer. So it allows
to reset after a specified number of clock cycles.
If you enable it, then you need to force the programsevery few seconds
(hundreds of milliseconds?) reset the WDT counter, if this is not the case, WDT will reset the
processor.

KF> It would be better to use the NMI signal instead of resetting, but
KF> a circuit is needed to correctly replace the RAM bank after NMI. After all, it seems there are no commands in the
KF> Z80 in which, after the write cycle to memory, there would be other operations
KF> reading the cop? The idea is this - the first operation of reading a copy from memory after
KF> writing to memory causes a bank switch. This way it will be possible
KF> to return to the interrupted program.

But this thing stupidly hangs on DI HALT, because only cops end up there.

KF> Moreover, I seem to have found a way to catch the terrible mistake
KF> of the Beta-Disk developers. You can make the magic button
KF> work correctly:

[skip diagram]
I have already tried to do something similar. Only the cop caught it, determined whether it was a prefix or
not, if not a prefix, it means you can give NMI and the next cop will be in 0066...
But, it didn’t work.. :(

Switching cans is not difficult to organize. You just need to accurately determine the moment
when the Z80 went to NMI. But for him this is not determined exactly.
IMHO, there may be a glitch similar to the detection of interrupts by ld a,r
The processor catches NMI, switches to an interrupt either on the next command
or after one...
And it’s too late to catch address 0066, because a word is written on the stack before it...

KF> The bank is switched after the PC writes to the stack of the interrupted program.

This is bad. If the program works with the stack differently, then it will be bad.
You need to catch the moment when the PC starts writing to the stack and substitute the page.

Wow! The Protoss are attacking my Zerlings! It's time to get going. Ivan.

- Divorce the scheme, big and small... [Sprinter-II] [Forth-CPU] [ZX]

... ivan...@mail.ru * http://st-rektal.chat.ru * http://www.atlant.ru/peters