Spectrum memory.
ZXNet echo conference «real.speccy»
From Ivan Mak → To All 23 March 2000
Greetings, Kirill!
KF> 256 is 16 by 16 bytes. And to switch 4 pages from 256 Each of the 16 pages connected via 7FFD, 1FFD in #C000 has its own byte. KF> And you only need 256 bytes, which are available. I didn’t understand... KF> In general, I think it will be limited to the ability to address only 512-kb, and In this case, IMHO, it is better to make two bytes per jar at once. So that the second [skip about RTC] KF> It would be better to use the NMI signal instead of resetting, but 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 [skip diagram] Switching cans is not difficult to organize. You just need to accurately determine the moment 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. 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
KF> you need only 4 bytes. What was the rest of the memory spent on? :-/
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...
In your circuit there were 9 lines at the RAM address of the configuration, i.e. already 512 bytes.
KF> use one bit to allow writing to a RAM page.
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.
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> 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.
KF> of the Beta-Disk developers. You can make the magic button
KF> work correctly:
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.. :(
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...
You need to catch the moment when the PC starts writing to the stack and substitute the page.