Zajímalo by mě, zda by se podařilo rozjet BSDOS nebo MDOS3 na ZX UNO. ZX UNO používá All Ram mode i při emulaci esxDOS (předpokládám), protože varují že se tam dá do paměti zapisovat což může vést k restartování systému.
Zde info ze článku
http://uto.speccy.org/zxunofaq_en.html#about :
There are three ways you can access additional memory when using ZX-Uno:
DivMMC memory
Timex MMU horizontal paging
Raw access to ZX-Uno memory vía MASTERMAPPER register
The ZX-Uno implements a DivMMC with 128K RAM, so it's possible to use that extra RAM for your developments if you know how to do it. This is a link to Velesoft's documentation
https://velesoft.speccy.cz/zx/divide/divide-memory.htm about DivIDE memory, compatible with DivMMC memory mapping.
The Timex machines emulated by the ZX-Uno feature a horizontal memory management unit.
The memory map of these computers is:
Kód:
EX-ROM HOME DOCK
0xffff +----------+----------+----------+
| Bank 7' | 32K RAM | Bank 7 |
| | | |
0xe000 +----------+ +----------+
| Bank 6' | | Bank 6 |
| | | |
0xc000 +----------+ +----------+
| Bank 5' | | Bank 5 |
| | | |
0xa000 +----------+ +----------+
| Bank 4' | | Bank 4 |
| | | |
0x8000 +----------+----------+----------+
| Bank 3' | Screen 1 | Bank 3 |
| | | |
0x6000 +----------+----------+----------+
| Bank 2' | Screen 0 | Bank 2 |
| | | |
0x4000 +----------+----------+----------+
| Bank 1' | 16K ROM | Bank 1 |
| | | |
0x2000 +----------+ +----------+
| Bank 0' | | Bank 0 |
| | | |
0x0000 +----------+----------+----------+
Memory is paged in 8K banks from either the DOCK or the EX-ROM, but these banks are mutually exclusive - you cannot page in a bank from both simultaneously. Bit 7 of port 0xff determines which bank to use (0=DOCK, 1=EX-ROM). Port 0xf4 determines which banks are to be paged in with each bit referring to the relevant bank (0-7 or 0'-7'). When memory is being paged, interrupts should be disabled and the stack should be in an area which is not going to change.
The HOME bank is the normal Spectrum memory area. The top 32K is uncontended but the 16K screen area below that is contended. Banks are overlaid on this bank, but paging over the screen area does not change the RAM used by the ULA. This does mean it is possible to set up a screen and page it out.
Reading this port returns the last byte sent to it.
Using standard 128K RAM + DivMMC 128K RAM + Timex MMU 128K RAM allows a programmer to use up to 384 RAM. In case you need more, you'll need RAW access to ZX-Uno's RAM:
Accessing ZX-Uno's memory in RAW mode is also possible using the MASTERMAPPER register (0x01). When writing to that register, the 16K bank selected (0 to 31 in the original ZX-Uno implementation with 512K) will be mapped at 0xC000-0xFFFF. That way you can access the whole memory. Sadly, this raw access is only possible using a rooted ROM at this very moment, as the LOCK bit in MASTERCONF record (0x00) disables both SPI Flash access and raw memory access. It's done like that cause having RAW memory acces is a bit dangerous:
Some of the RAM banks are used for storing ROMS (System ROMs and esxDOS ROMS). Mapping those banks at $C000 and modifying them modifies those ROMs, and won't reset them until a hard reset is made. Although that can be done on purpose, in general is a risky thing to do.
Also RAM is used by ESXDOS dot commands, they can be corrupted if you are not careful
Actually, if once started your software does not require system ROM nor esxDOS, you can use those slots, but in that case it would be good that what you write at system ROM bank, starts by a routine at 0x0000 that just tell the user to perform a hard reset.