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 cctech
mailing list