Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Z8000 Assembler » Themenansicht

Autor Thread - Seiten: -1-
000
13.11.2015, 21:11 Uhr
Olli

Avatar von Olli

Moin,

spricht hier irgendwer Z8000 Assembler?

Ich habe das Problem, das ich ein array auf eine bestimmte Adresse absolut verorten muss. Dazu gibt es in PLZ/ASM die $abs Direktive. Irgendwie arbeitet die aber nicht mit Segmenten zusammen.

Ich brauche das Array im Segment 62 auf Adresse 0xf600 (also in Gesamtnotation 0x3e00f600). Es landet bei mir aber immer auf 0x0100f600.

Mein Code:


Quellcode:

u module
$segmented
$abs %F600

  global

_u array [%572 byte]

end u



Was ich versucht habe ist %3e00f600 - ohne Erfolg.
Laut Zilog Z8000 PLZ/ASM Handbuch müssen Segmentadressierungen dem Stile <<Segment>>Offset folgen.

$abs <<62>>%f600 funktioniert aber auch nicht - das schmeisst mir einen Fehler. Es scheint, $abs wirkt sich immer nur auf ein Offset auf, und irgendwie muss ich erstmal in das Segment kommen - ich habe nur keinen Plan wie.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 13.11.2015 um 22:43 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
13.11.2015, 22:27 Uhr
Early8Bitz

Avatar von Early8Bitz

$abs platziert den 16bit <b>location counter</b> im maximal 64k großen Segment.
Der 7bit Segment-Teil einer Adresse addressiert ja nur eine Tabelle in der MMU,
erst dort entsteht die physische Adresse.
Mit 16bit Offset + 7bit Segmentnummer könntest Du maximal 2^23 Byte direkt adressieren (unter Umgehung einer MMU). Macht 0x7fffff.
Die von Dir gewünschte Adresse 0x3e00f600 ist im Z8000 also nicht direkt adressierbar.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
13.11.2015, 22:39 Uhr
Olli

Avatar von Olli

OK, muss aber "irgendwie" gehen. Im original-Objekt geht es ja auch...


Quellcode:

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



Bei mir wird halt nur im 1. Segment rumgewurschtelt


Quellcode:

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



Hexdump Vergleich der Objekte:


Quellcode:

--- u.o.orig.hd 2008-05-16 21:52:12.000000000 +0200
+++ u.o.hd      2008-05-16 21:52:16.000000000 +0200
@@ -3,6 +3,6 @@
00000020  00 00 00 01 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000030  00 00 00 02 00 00 00 00  00 00 00 00 1e 00 75 5f  |..............u_|
00000040  70 00 00 00 00 00 01 00  00 00 1e 01 75 5f 64 00  |p...........u_d.|
-00000050  00 00 00 00 3e 00 f6 00  61 3e 5f 75 00 00 00 00  |....>..a>_u....|
+00000050  00 00 00 00 01 00 f6 00  61 01 5f 75 00 00 00 00  |.......a._u....|
00000060  00 00                                             |..|
00000062


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 13.11.2015 um 22:40 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
13.11.2015, 22:48 Uhr
Enrico
Default Group and Edit


Da sind doch nur 2 Nullen zu viel.
Das muss 3ef600 heissen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
13.11.2015, 23:06 Uhr
Enrico
Default Group and Edit


Also im Brennstuhl hab ich mal schnell ein Bsp gefunden:

Quellcode:

LDB RL6, <<03>>%2200(R7)



Lade das Byteregister RL 6 mit dem Inhalt des durch die Addition der Basisadresse %2200 und dem im Register R7 stehenden Index im Segment 03 adressierten Speicherplatz

Demzufolge müsstest Du <<3e>>%f600 schreiben.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
14.11.2015, 00:07 Uhr
Olli

Avatar von Olli

Steht ja oben im 1. Post Enrico - habe ich bereits versucht, und - es müsste <<%3e>> oder <<62>> heissen. Hexadezimal mit % annotieren.

Segmentangaben klappen aber nur im ASM-Code selbst - nicht in den Assemblercompiler-Direktiven offensichtlich.

Habe Brennenstuhl durch, mein eigenes Z8000-ASM manual von Osborne und das Zilog ASM Manual - habe nix bzgl. Segmentangaben bei $ABS gefunden
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
14.11.2015, 11:58 Uhr
Enrico
Default Group and Edit


Komisch.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
14.11.2015, 12:40 Uhr
Olli

Avatar von Olli

jo
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
14.11.2015, 14:20 Uhr
Enrico
Default Group and Edit


Sag mal, dass mit dem "$" wird wohl richtig sein?
Ich habe hier noch Cross-Software U8000 für UDOS gefunden.
Danach wäre das kein Dollar sondern ein Kreis mit 4 Strichen dran.

Da steht leider auch nur lapidar ABS [Adresse] drin. Aber nicht wie.

Da gibts auch noch ein TRANS8000. Übersetzt U880 in U8000 Quellen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
14.11.2015, 14:33 Uhr
Olli

Avatar von Olli

Jo, wird richtig sein. Steht ja so auch im Brennenstuhl (und in meinen 2 anderen Büchern). Wird auch vom Assembler erkannt.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
14.11.2015, 16:18 Uhr
Zwangsrentner



¤
Ochsen-
auge Dieses ältere Tastaturzeichen gilt als allgem.Symbol für Währungen. (bezieht sich auf die ortsübliche Währung)
Die Position des Zeichens entspricht der des $-Zeichens
nur mal nebenbei erwähnt
Gruss aussem Harz
--
I'm just a truckle, but I don't like to truckle >TIMOTHY TRUCKLE<
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
14.11.2015, 16:21 Uhr
Enrico
Default Group and Edit


Also in einer Z8000ASM.PDF
http://oldcomputers.dyndns.org/public/pub/rechner/zilog/zds/z8000asm.pdf
Steht da auch nichts anderes drin.
Das soll aber gross geschrieben werden müssen?

$ABS <<%3e>>%f600

Kann doch eigentlich nicht falsch sein.
Oder muss noch eine 0 vor f600 ?

Hab aber noch was "externe Defintionen" gelesen.
Wenn es ausserhalb des eigenen Segments liegt?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
14.11.2015, 16:52 Uhr
Olli

Avatar von Olli

tjo... su tuts aber nicht


Quellcode:

#18 as -o u.o u.s
   3 $ABS <<$3e>>%f600
             **** ERROR     100
   3 $ABS <<$3e>>%f600
             **** ERROR     112
   3 $ABS <<$3e>>%f600
             **** ERROR     236
   3 $ABS <<$3e>>%f600
             **** ERROR     110

   4 errors
#19 cat u.s
u module
$segmented
$ABS <<$3e>>%f600

global
        _u array [%572 byte]
end u
#20


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 14.11.2015 um 16:52 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
14.11.2015, 17:43 Uhr
Enrico
Default Group and Edit


Aber was bedeuten denn die Fehler?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
14.11.2015, 19:31 Uhr
Olli

Avatar von Olli

WEGA Dienstprogramme Band A Abschnitt PLZ/ASM -> SYS

Ungueltige Variablen
100 Ungueltige Variable

Fehler in Ausdruecken
110 Ungueltiger arithmetischer Ausdruck
112 Ungueltiger Konstantenausdruck

Implementierungseinschraenkungen
236 Zu viele Konstanten im Ausdruck

Er versteht einfach die Syntax <<..>> nicht für $abs
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
14.11.2015, 19:44 Uhr
kaiOr

Avatar von kaiOr

Geht evtl. mit "$SECTION name" anstelle von "$ABS adresse". Also das man erst beim Linken die Adresse zugewiesen hat.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
14.11.2015, 19:47 Uhr
Olli

Avatar von Olli

Jo, damit könnte man eine Sektion vergeben auf die man beim linken referenzieren kann. Aber wie gesagt - das original von Zilog bereitgestellt Object-File hat bereits diese Adressierung "im Bauch". Daher frage ich mich wie es geht....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 14.11.2015 um 19:47 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
14.11.2015, 19:47 Uhr
Enrico
Default Group and Edit


Dann wirst Du das wohl anders lösen müssen.

Wenn Du Daten auf einem ganz anderen Segment anlegen willst,
müssen die doch da auch erstrmal hinkommen.

Das passiert doch bestimmt ganz woanders?
Und hier willst Du die nur lesen bzw. schreiben?
Das macht doch aber dann mit Befehlen mit LD etc...

???
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
14.11.2015, 19:48 Uhr
Olli

Avatar von Olli

Der Kernel erwartet an dieser Adresse im Speicher eine Datenstruktur mit der er arbeitet. Durch den kompletten Code hinweg wird mit einem externen Symbol gearbeitet. Dieses Symbol wird in dieser Datei hier definiert. Schreiben und lesen macht der Kernel dann.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
14.11.2015, 19:56 Uhr
Enrico
Default Group and Edit


Ja, schon aber das lesen und schreiben der Daten machst Du mit den Befehlen.
LD .., irgendwas.
Dort wird es dann sicherlich mit den Angaben der Segmente klappen.
Da ja ABS wohl nur innerhalb von so einem Segment gilt.
Macht ja eigentlich auch Sinn. Wenn Du da ab der Stelle Code hast, sollte
dieser ab der Adresse losgehen, die bei ABS angegeben ist. Davor sind dann ev. Nullen.

Aber ich kenne ich mich ja auch nicht mit dem PLZ/ASM aus.
Meine ja nur.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
20.11.2015, 19:55 Uhr
Enrico
Default Group and Edit



Zitat:
Olli schrieb
tjo... su tuts aber nicht


Quellcode:

#18 as -o u.o u.s
   3 $ABS <<$3e>>%f600
             **** ERROR     100
   3 $ABS <<$3e>>%f600
             **** ERROR     112
   3 $ABS <<$3e>>%f600
             **** ERROR     236
   3 $ABS <<$3e>>%f600
             **** ERROR     110

   4 errors
#19 cat u.s
u module
$segmented
$ABS <<$3e>>%f600

global
        _u array [%572 byte]
end u
#20




Ich denke Du hast den falschen Assembler erwischt.
Brennenstuhl S. 180
cas U8000-Assembler fir seg. Programme
as U8000-PLZ-Assembler für nichtsegmentierte Programme

Auf das fehlende "PLZ" bei cas würde ich auf die Entfernung erstmal nix geben.


Wo findet sich denn mal was komplettes an Doku vom PLZ/ASM auf deutsch?

Gibts den Assembler auch für DOS, Linux, ... ?
--
MFG
Enrico

Dieser Beitrag wurde am 20.11.2015 um 19:57 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
21.11.2015, 14:09 Uhr
Olli

Avatar von Olli

Nene... das ist schon der richtige Assembler. Der kann segmentiert und nicht segmentiert. CAS ist nur für Assembler-Code den der C-Compiler ausspukt. Der ist nämlich syntaktisch anders als PLZ/ASM. Eine PLZ/ASM Doku findest du im WEGA-Dienstprogramme Band B auf meiner Seite. Ansonten steht im Brennenstuhl eigentlich alles was man wissen muss. Es gibt ansonsten online noch ein z8000asm.pdf das ist aber englisch.

Nein - gibt es nicht für DOS oder Linux
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
21.11.2015, 14:17 Uhr
Enrico
Default Group and Edit


Komisch, dass das dan da aber so drin steht.


Schlecht.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek