Roger Holmes wrote:
Three MMUs seems a bit weird. I last programmed a
Z8001 in 1979 so
maybe things have changed between then and when your machine was
built. If I remember correctly, the Z8010 MMU mapped 64 of the 128
segments, you could have one MMU and address 64 chunks of up to 64k
in the 16MB address range. With two MMUs you could access all 128
chunks. Are the MMUs set up for different processes, or are they
divided into instruction and data accesses or some other way?
The system has three MMUs because it may also run non-segmented software
even if it is a segmenting processor by having some hardware (break
registers, comperators, logic) in front of the 3 MMUs. Having this, the
system can work in 3 different modes:
(1) Operating system segmented (CPU works in system mode):
all 3 segments Code, Data and Stack are managed by MMU1, MMU2,
MMU3 and the break registers are not activated
(2) User process notsegmented (CPU works in normal-mode, segment number
63):
MMU1 handles the code-segment, MMU2 the data-segment and MMU3 the
stack-segment. the break regster is active and stears the data or
stack MMU
(3) User process segmented (CPU works in normal-mode):
MMU2 and MMU3 are used to address all the 128 memory segments which
may be code, data or stack segments. MU2 manages the segments 0...63,
MMU3 the segments 64...127.
I think you would have to be lucky to get your C code
to use exactly
the same registers as the original object code. Are you sure it was
originally C or could it have been assembly code?
Some parts C, some parts assembly. The assembly code was easy to get back
because it was just dissassembling + some comments ;)
Ok - disassembly was easy after I got a decent disassembler - the first
object generated originaly out of ASM code I disassembled by hand reading
the hexdump - this took hours which made me searching harder for a Z8001
disassembler ;) The C parts are a bit harder... actual status:
http://pofo.de/P8000/kernel.php
--
Oliver Lehmann
http://www.pofo.de/
http://wishlist.ans-netz.de/