[prev in list] [next in list] [prev in thread] [next in thread] 

List:       classiccmp
Subject:    Re: Introduction
From:       Oliver Lehmann <lehmann () ans-netz ! de>
Date:       2008-05-30 21:27:18
Message-ID: 20080530232718.8a536ca6.lehmann () ans-netz ! de
[Download RAW message or body]

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/
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic