- - - - - - - - > english version here
< - - - - - - - -
29.08.2010
1. Was ist ZSS?
'ZSS' ist ein unter DOS laufender 2 Pass (Cross-) Assembler. Eine
Portierung auf andere Plattformen sollte jedoch ziemlich einfach
sein, da keine DOS-Spezialitäten (wie z.B. EMS) verwendet werden.
Die Syntax ist dabei sehr stark angelehnt an die bei HP beschriebene
Syntax des Cross Assembler/Linkers für das 'HP 64000 Logic Development
System'. 'ZSS' erzeugt jedoch keine 'relocatable files', wie
bei HP beschrieben, sondern es wird direkt ein Objectfile im
HP64000-absolute Format generiert.
2. Was heißt ZSS?
'ZSS' ist die Abkürzung für (Z)u(s)ammen(s)etzer. Zugegebenermaßen
ist dies die etwas eigenwillige deutsche Übersetzung von 'Assembler'.
3. Was brauche ich sonst noch?
Wie bei HP auch, ist 'ZSS' darauf ausgelegt, mehr als nur einen
Prozessor unterstützen zu können. Das 'executable' alleine kennt aber
noch keine prozessorspezifische Information. Für den 8085 und den Z180
liegt diese Information in den Dateien 'mp8085b' bzw. 'mpz180' vor.
Andere Prozessoren werden im Moment nicht unterstützt. Für den Fall,
daß lediglich die keywords unterschiedlich sind, sollte es aber
ohne zu große Probleme möglich sein, durch Erstellen weiterer sol-
cher prozessorspezifischer Files auch andere Prozessoren unter-
stützen zu können.
4. Was muß ich alles beachten, wenn ich ein mit dem HP-Assembler erfolg-
reich assembliertes Programm mit 'ZSS' assemblieren möchte?
4.1. Im Gegensatz zu früheren Versionen von 'ZSS' kommt es nun nicht
mehr darauf an, ob die Quelltexte im DOS- oder UNIX-Textfomat
vorliegen. Beide Varianten sind erlaubt.
4.2. Ganz zu Beginn des Programms müssen dem Assembler die Prozessor-
befehle beigebracht werden, die er anschließend bearbeiten soll.
Dies geschieht am besten in der ersten Zeile mit dem Befehl
'PINCLUDE', etwa so: 'PINCLUDE <Pfad>/mp8085b' oder
'PINCLUDE <Pfad>/mpz180'. Die Files 'mp8085b' oder 'mpz180'
sind (Text-)Files, welche für jeden Prozessorbefehl ein
sogenanntes 'Prozessormacro' enthalten.
4.3. Nicht alle im HP-Assemblermanual beschriebenen Pseudobefehle
werden unterstützt. Z.B. 'REPT' ist einer davon. Hier muß sich
der Programmierer leider bequemen, die Codierung manuell oder
mit einem Macro zu erledigen. Andere nicht implementierte
Pseudobefehle sind z.B. 'ASC', 'BIN', 'DECIMAL', 'HEX', 'OCT'
u.a.. Sollten sie sehr dringend benötigt werden, müßte man
evtl. nochmal nachdenken... Einige davon können einfach durch
'DB' ersetzt werden (mit geeigneten Suffices an den Operanden).
4.4. INCLUDE-Pfade müssen ggf. angepaßt werden. Dabei können in den
Pfadangaben sowohl slashes '/' als auch backslashes '\' zur
Trennung der Directories verwendet werden, auch wenn man sich
in echten DOS-Hierarchien bewegt.
4.5. Die Ausdrücke 'HIGH EXPR' und 'LOW EXPR' sind unter 'ZSS' so
nicht gültig. Wir betrachten 'HIGH' und 'LOW' als Namen von
(vordefinierten) Funktionen und ein Funktionsaufruf sieht bei
uns so aus: 'FUNKTIONSNAME(EXPR)'. Zwischen 'FUNKTIONSNAME' und
'EXPR' darf kein whitespace stehen, sondern der Ausdruck, von
dem der Funktionswert zu ermitteln ist, muß in runde Klammern
eingeschlossen werden und muß unmittelbar auf 'FUNKTIONSNAME'
folgen. Dummerweise kommt der HP-Z180-Assembler (im Gegensatz
zum HP-8085-Assembler) mit dieser Syntax nicht mehr zurecht.
Um einen Quelltext ohne Änderung mit beiden Assemblern über-
setzen zu können, müssen die Funktionen 'HIGH' und 'LOW' ver-
mieden werden. Als gleichwertiger Ersatz kann dabei verwendet
werden:
anstatt 'HIGH EXPR': (0FF00H.AN.(EXPR)).SR.8
anstatt 'LOW EXPR': 0FFH.AN.(EXPR)
Hinweis: Falls EXPR aus mehr als einem Namen besteht, sind
die umschließenden runden Klammern dringend anzuraten, damit
es keine unangenehmen Überraschungen mit der Priorität bei
der Auswertung des Ausdrucks gibt.
4.6. Beim Vergleich zweier Ausdrücke mittels der Vergleichsoperatoren
'.GT.', '.GE.' usw. (im '.IF'-Befehl in Macros) darf zwischen
den Ausdrücken und den Operatoren kein whitespace stehen. Also
anstatt etwa 'VAR1 .EQ. VAR2' muß es heißen 'VAR1.EQ.VAR2'.
4.7. Das Quellfile muß die Extension '.u' haben.
5. Erzeugt 'ZSS' außer dem absoluten Objectfile ggf. weitere Files
oder irgendwelchen Output für Debugging?
Ausgehend von einem Quellfile 'file.u' erzeugt 'ZSS' im Normalfall
im ersten Lauf ein Zwischenfile 'file.t'. Im zweiten Lauf wird dann
ein Listfile 'file.l' und ein Objectfile 'file.o' erzeugt. Bei
Auftreten eines Fehlers wird die Assemblierung abgebrochen. Teil-
weise beschriebene Files werden im 'halbfertigen' Zustand belassen.
Außerdem werden im Fehlerfall einige weitere Informationen ausge-
geben:
a. alle 'lokalen Label-Tabellen' der gerade in Expansion
befindlichen Macros ('lltxxxx').
b. der gesamte bis zum Auftreten des Fehlers gelesene 'Macrotext',
so, wie er nach einem ersten internen Verarbeitungsschritt ge-
speichert ist ('macros').
c. alle zum Zeitpunkt des Fehlers bekannten Namen sowie deren Wert
und Typ ('namen').
6. Wie starte ich nun endlich meine erste Assemblierung?
Einfach mit: ZSS<vers> [<filename>[.u] {[/f | /nc | /ns]}]
Bei Aufruf von 'ZSS' ohne Parameter wird interaktiv nach dem Quell-
filenamen gefragt. Wird 'ZSS' mit einem Parameter aufgerufen, so wird
dieser Parameter als Quellfilename interpretiert. Bis zu drei weitere
Parameter können angegeben werden. Sie bedeuten:
/f (force assembly): die Assemblierung wird in jedem Fall begonnen,
auch wenn dabei ggf. Files mit den Extensions
'.t', '.l' oder '.o' (die aus einem früheren
Assemblerlauf stammen) überschrieben werden
sollten.
/nc (no cross ref.): die Erzeugung einer Querverweistabelle wird
unterdrückt.
/ns (no sym. tab.): die Erzeugung einer Symboltablle wird unterdrückt.
7. Solange 'ZSS' noch in der Betaphase ist, möchte ich überprüfen
können, ob 'ZSS' und der HP-Assembler wirklich gleiche Resultate
liefern, wie mache ich das?
Der Distribution liegt ein kleines Tool ('look1') bei, welches
die HP64000-absolute Files 'anschauen' kann. Es ist wirklich nur
ein ganz einfaches Programm, welches den Inhalt eines HP64000-absolute
Files in Textform ausgibt. Für jeden Record sind dies: Startadresse,
Anzahl der Datenbytes und die Datenbytes selbst. Nachdem mit 'look1'
also für die beiden zu vergleichenden HP64000-absolute Files jeweils
ein solches Textfile erzeugt wurde, kann etwa mit dem DOS-Befehl
'fc' ein ASCII-Vergleich dieser beiden Textdateien durchgeführt werden.
Hinweise:
1. Ein direkter Filevergleich der beiden HP64000-absolute Files
macht keinen Sinn. Es ist durchaus normal, daß die eigentliche
Programminformation identisch ist, die beiden HP64000-absolute
Files aber unterschiedlich sind, wenn man sie Byte für Byte
vergleicht!
2. Auch mit 'look1' steht noch kein allgemeines Tool zur Verfügung,
mit dem geprüft werden kann, ob zwei HP64000-absolute Files
gleichen Inhalt haben. Man denke z.B. etwa nur an die Vertau-
schung von zwei Records oder ein Aufspalten eines Records in
zwei Teilrecords. Da die zu vergleichenden Objectfiles aber
aus gleichen Sourcen hervorgegangen sind und 'ZSS' versucht,
die Recordgröße der bei HP verwendeten anzupassen, sollte
es dennoch keine Probleme geben. In jedem Fall kann man davon
ausgehen, daß der Inhalt zweier HP64000-absolute Files identisch
ist, wenn die mit 'look1' erzeugten Textfiles identisch sind.
8. Welche Files sind Bestandteil der Distribution?
DOS Binaries:
bin\zss3.exe: Assembler, Version 3
bin\look1.exe: Analyse von Objectfiles
Dokumentation:
doc\changes: Historie der Änderungen
doc\liesmich: diese File
doc\readme: englisches 'liesmich'
Prozessorunterstützung:
promac\mp8085b: Prozessormacros für 8085
promac\mpz180: Prozessormacros für Z180
Quellen:
src\ctvu1.pas: Unit der globalen Konstanten, Typen und
Variablen für 'zss3'
src\zss3.pas: Program Modul von 'zss3'
src\zss3u1.pas: Unit1 von 'zss3'
src\zss3u2.pas: Unit2 von 'zss3'
src\look1.pas: Analyse von Objectfiles
Beispiele:
examples\all8085.u alle 8085 Opcodes
examples\allz180.u alle Z180 Opcodes
examples\macro_ex.u ein paar Macros
9. Wer nimmt eigentlich meine Anregungen, Wünsche, Fehlerberichte oder
auch Bekundungen der Zufriedenheit entgegen?
Rudolf Schubert
Kirchstraße 18a
D-82054 Sauerlach
Tel. 08104/908311
EMail: rudolf@muc.de
10. Gibt es sonst noch irgendwelche Bemerkungen?
Ja: 'ZSS' ist freie Software. Es besteht keinerlei Verbindung zur
Firma HP oder deren Mitarbeitern. 'ZSS' wurde völlig eigenständig
und lediglich unter Zuhilfenahme diverser HP-Assemblermanuals
(und des auf einer HP Workstation laufenden HP-Assemblers) entwickelt.
Wie bei (freier) Software üblich, übernimmt der Autor keine Garantie
für das wunsch- und ordnungsgemäße Funktionieren. Da sich 'ZSS'
(immer) noch in der Betaphase befindet, werden alle Benutzer dringend
gebeten, die erzeugten Resultate mit gewisser Vorsicht zu genießen
(und am besten etwa mit dem Tool 'look1' gegenüber dem HP-Ergebnis
zu überprüfen (wozu brauchen wir dann eigentlich 'ZSS' noch?)).
Alles o.k.?
****** Anerkennung von Warenzeichen ******
Alle erwähnten Warenzeichen sind Eigentum des betreffenden Inhabers.
****** Anerkennung von Warenzeichen ******
Rudolf Schubert,
rudolf@muc.de ,
Mi 20. Mär 08:34:33 CET 2024