Z8000 Assembler anyone?

Oliver Lehmann lehmann at ans-netz.de
Fri Nov 13 16:30:41 CST 2015


Hi,

it is a working Z8000 system with a ZEUS clone (SYSIII UNIX).
Somehow the assembler must be able to put the segment information
for the absolute adress of this array in the object. No idea how tho,
as $abs will only work on segment 1.
I have the original .o file from Zilog and there is the fixed adress
already in it. But no idea how they did it. The assembler can not be
called with a segment number to work on. The linker can, but the linker
is not involved in creating the .o file....

the original object from the system:

#67 nm /usr/sys/conf/u.o
3e00f600 A _u
01000000 s u_d
     0000 s u_p


my object generated from my u.s:

#68 nm u.o
0100f600 A _u
01000000 s u_d
     0000 s u_p

Regards, Oliver


jwsmobile <jws at jwsss.com> wrote:

> Putting things at an absolute address requires putting things into  
> segments that are handle by the linker or loader (depending on what  
> era you are working in).
>
> the linker may place the output of your assembler into different  
> segments.  They may be set up to be relocatable at run time (most  
> OSs insist on this feature).
>
> Once you are dealing with either a debugger or loader, or OS you  
> have to find out how to get that segment assigned to the space you  
> desire in the absolute addressing space.
>
> Usually the assembler will have directives to direct things to I/O  
> or such depending on the architecture.
>
> I'd use this info to see if you have any luck figuring out what you  
> need to do.
>
> you didn't mention whether this is a cross assembly tool, or if you  
> have a working Z8000 OS with the tool.
>
> Others may infer that by knowing more about the things you refer to.  
>  however working Z8000 systems running an OS are a bit rare these  
> days.
>
> thanks
> Jim
>
>
> On 11/13/2015 12:06 PM, Oliver Lehmann wrote:
>> Hi,
>>
>> I found out so far, that %3e00.... means, that the data is put on
>> segment 62 (0x3e). Regarding to the Z8000 ASM handbook, segmented
>> adresses are notated as <<segment>>offset, so in my case
>> <<62>>%F600 - but of course it does not work and the assembler
>> yields and error :(
>>
>>
>> Oliver Lehmann <lehmann at ans-netz.de> wrote:
>>
>>> Hi,
>>>
>>> is someone on the list able to write Z8000 PLZ/ASM code? I have an
>>> the following source:
>>>
>>>  u module
>>>  $segmented
>>>  $abs %3E00F600
>>>
>>>    global
>>>
>>>  _u array [%572 byte]
>>>
>>>  end u
>>>
>>> The problem is, that it is vital that _u has to be located absolute
>>> on the virtual memory address 0x3E00F600. The problem is now, that
>>> the while the object is compiled, _u is available on 0x0100f600 and
>>> I have no clue why.....
>>
>>
>>




More information about the cctalk mailing list