Of course it is possible, and it was done in many ZX clones since 1990! For example, such ZX clones as "Robic" (made at Selto-Rotor factory, Cherkassy, Ukraine), or "Orel BK-08" (made at DMZ factory, Dnepropetrovsk) all had a possibility to activate RAM in lower 16K of memory. All later popular russian ZX clones, including "Profi", "ATM-Turbo", possibly "KAY-256" and "Scorpion ZS-256" also have a possibility to activate RAM in lower 16K. Such ZX clones were therefore also able to run CP/M.
Unfortunately, there is no common standard for such "shadow RAM" system. The best way to design modern software is to make some hardware abstraction layer and let the people develop driver plugins with entry points to activate or deactivate lower 16K RAM. Some systems also had multiple RAM pages which could be paged into the lower 16K of Z80 address space. Or, in the simpler case, one could have just 4 values to type in the program configuration, such as:
Out(port1),val1 activates shadow RAM
Out(port2),val2 deactivates shadow RAM
One good example of system with hardware abstraction layer is IS-DOS which, under certain circumstances, uses shadow RAM and lets the user configure the above mentioned 4 values.
When the shadow RAM is activated, TR-DOS is usually disabled and does not activate its ROM or ports when code at location 3D00-3DFF is executed. This arrangement allows for proper functioning of CP/M.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 


