There's this page about the ZS Scorpion, and I'm reading about the way bankswitching works. Port 0x7ffd is the same as on western ZX Spectrums, but to double the amount of RAM to 256k and also the amount of ROM, this is augmented by another port, 0x1ffd.
Here is the copypasta:
*port 7ffd. full compatibility with Zx spectrum 128. digits are:
D0-D2 - number of RAM page to put in C000-FFFF
D3 - switch of address for RAM of screen. 0 - 4000, 1 - c000
D4 - switch of ROM : 0-zx128, 1-zx48
D5 - 1 in this bit will block further output in port 7FFD, until reset.
*port 1ffd - additional port for resources of computer.
D0 - block of ROM in 0-3fff. when set to 1 - allows read/write page 0 of RAM
D1 - selects ROM expansion. this rom contains main part of service monitor.
D2 - not used
D3 - used for output in RS-232C
D4 - extended RAM. set to 1 - connects RAM page with number 8-15 in
C000-FFFF. number of page is given in gidits D0-D2 of port 7FFD
D5 - signal of strobe for interface centronics. to form the strobe has to be
set to 1.
D6-D7 - not used. ( yet ? )
It's quite clear how 0x7ffd works. It is clearly documented in English and works in an obvious way.
But I'm struggling to really understand some details of what that second port does.
Is 0x1ffd:d1
active high or active low?
If 0x1ffd:d1
is true, such that ROM expansion is selected, then are 0x1ffd:d0
and 0x7ffd:d4
both don't-cares? How then can the TR-DOS ROM be selected?
Also, several of those bits are left unused. Are they the mechanism by which the Scorpion may be expanded to 2 megabytes of RAM, and ½ megabyte of ROM? Is it known how that works? I would appreciate some more unambiguous information.