Für viele Aufgaben reichen 8-Bit-Computer völlig. Dabei entwickeln Programmierer meist auf einem komfortablen 16/32-Bit-Rechner und übersetzen den Code mit einem Cross-Assembler wie z.B. den »xAsmll«.
Die Aachener Designgruppe Joachim Klein Hard& Software bietet mit dem tabellengesteuerten Cross-Assembler »xAsmll« ein komfortables Programmier-Tools im GEM-Gewand. Nach dem Start präsentiert sich Cross-Assembler auf dem Bildschirm mit Menüleiste und GEM-Fenster. Die Einträge sind übersichtlich in Funktionsgruppen untergliedert und verfügen über Tastenkürzel. Die Dialogboxen wirken in manchen Punkten ungewohnt und sollten schnell den nun allgemein zugänglichen Programmierrichtlinien angepaßt werden.
Die Menüeinträge sind sich kontextsensitiv, ändern sich also je nach Mode. Der Assembler beherrscht die übliche Arithmetik, also Grundrechenarten, Modulo, High- und Low-Byte eines Worts, Vergleichsoperationen und logische Operationen. Die üblichen Direktiven zum Ablegen von 8-, 16-und 32-Bit-Werten sind ebenso wie das obligatorische »ORG« für die Festlegung der Anfangsadresse des Objektcodes vorhanden.
Bedingte Assemblierung mit IF/ELSEIF/ELSE/ENDIF, mit bis zu 16fach verschachtelte Makros mit pseudolokalen Symbolen, sowie eine Include-Direktive runden das Bild ab. Im Anhang finden Sie die Beschreibung der Tabellensyntax — interessierten Programmierern steht somit die Implementation weiterer Prozessortypen frei.
Nach der Installation einer CPU-Tabelle und dem Laden der Quelldatei kann die Assemblierung beginnen. Enthält der Quelltext keine Fehler, wird im Meldefenster nach Abschluß der Assemblierung die Größe des Objektcodes gezeigt. Darüber hinaus gibt das Programm Auskunft über die Assemblierungsdauer. Treten Fehler auf, präsentiert das Programm die Warnbox ’Assemblierfehler’ mit dem Namen der betreffenden Datei und einer Zeilennummer. Sie können wählen, nach wie vielen Fehlern die Assemblierung abgebrochen werden soll. Dabei gibt es drei Alternativen:
Während der Assemblierung steht am rechten oberen Bildschirmrand der Name der aktuellen Datei; die Zeilennumer wird in Zehnerschritten angegeben. Fehler lassen sich im Protokoll an-zeigen, zusätzlich mit den erzeugten Hexcodes und den Quelltextbefehlen. Auch eine Kombination der drei Möglichkeiten wäre denkbar.
Bei einer fehlerfreien Assemblierung hat der Programmierer weitere Wahlmöglichkeiten:
Durch die ORG-Direktive können leere Stellen im Objektcode entstehen, die sich wahlweise mit 0- oder 255-Codes füllen lassen.
Für 16- oder 32-Bit-CPUs kann der Objektcode auf mehrere EPROMs aufgeteilt werden.
xAsm-II erlaubt die Ablage im Binärformat, als Moto-rola-S-Records, INTEL-Hex-sowie Tektronix-Format.
Ein automatischer Download nach der Assemblierung an einen EPROM-Emulator läßt sich unterdrücken oder über die serielle, parallele oder MIDI-Schnittstelle weiterleiten. Der Download kann jederzeit manuell ausgelöst werden. Bei einer Übertragung über die serielle Schnittstelle lassen sich alle relevanten Parameter einstellen.
Auch externe Programme können gestartet werden. Wie der Editor versteht auch die Kommandozeile Kürzel. Dem Editor wird so z.B. über die Kommandozeileneinstellung %S immer der aktuelle Source übergeben und mit %L das Protokoll. Wahlweise kann ein externes Programm sofort nach der Assemblierung automatisch gestartet werden — das ist besonders praktisch beim Nachstarten von EROMMER-Software.
Das größte Manko des Programms liegt in der Verarbeitungsgeschwindigkeit, die recht gemächlich ist. Auf einem 8-MHz-68000er werden auf einer RAM-Disk mit einem 1000-Zeilen-nop-Quelltext ca. 74 Zeilen pro Sekunde assembliert. Allerdings gibt es hier auch keine Vorwärtsreferenzen, so daß ein Paß II entfallt. Hier muß der Programmierer Optimierungen vornehmen. Ebenfalls unzureichend ist die Symbolverwaltung, die bei größeren Projekten zu einer weiteren Minderung der Geschwindigkeit führt.
Ein (schneller!) Linker würde diesem Notstand abhelfen. Nach Auskunft des Programmierers ist der bereits in Arbeit. Da xAsm-II in GFA-Basic entwickelt wurde, befinden sich leider die GFA-Internen LINE-A-Codes »Hide Mouse« und »Show Mouse« im Programm. Dies ist bedauerlich, kann dem Programmierer aber kaum angelastet werden. Abhilfe durch eine gecatchte Library steht in Aussicht.
Ansonsten läßt xAsm-II wenig Wünsche offen. Auf den ATARI-TOS-Rechner ist das Programm ohnehin der einzige tabellengesteuerte Cross-Assembler mit komfortabler GEM-Oberfläche. Insgesamt ist das Programm empfehlenswert. Seine vielfältigen Optionen, laufzeitstabiles Verhalten und ein günstiges Preis-Leistungsverhältnis rechtfertigen diese Kategorisierung. Der Programmierer zeigte sich gegenüber Verbesserungsvorschlägen aufgeschlossen und eliminiert bereitwillig und schnell Bugs.
Das Programm nimmt auch Anweisungen über eine Kommandozeile entgegen. Falls eine Konfigurationsdatei existiert, führt dies zum automatischen Laden des Quelltextes. Diese Datei enthält alle wesentlichen Einstellungen des Programmes und wird automatisch geladen, so daß die lästige Neueinstellung von Defaultparametern entfallt.
Im Lieferumfang befindet sich ein 84seitiges DIN-A5-Ringbuch mit Kurzreferenz, die alle wesentlichen Direktiven und Makros beinhaltet, eine nicht kopiergeschützte Programmdiskette, zwei Text-Files und folgende CPU-Tabellen: Z80, 8048, 8051, 6502, 6805, 6809, HC 11. In Kürze erscheint eine 8086-Tabelle, die für Programmierer des Portfolio sicherlich von großem Interesse sein dürfte. Das Handbuch vermittelt einen übersichtlichen Eindruck. Leider verwendet der Autor eine Kapitelnumerierung (1., 1.1, 1.1.2 etc.), eine Seitennumerierung fehlt. Das Auffinden bestimmter Stellen wird dadurch erschwert. Das Programm umfaßt 150 KByte, zuzüglich einer Resource von 13 KByte, (mn)
WERTUNG
xAsm-II
Hersteller: xDesign Joachim Klein Hard&Software
Preis: 160 Mark
Stärken: intuitive GEM-Oberfläche, günstiges Preis-Leistungs-Verhältnis, Flexibilität
Schwächen: hält sich nicht an GEM Richtlinien, dürftige Assembliergeschwindigkeit
Fazit: Für 8-Bit-Programmierer sehr empfehlenswert
Vertrieb: xDesign Joachim Klein Hard& Software, Süsterfeldstr. 30, W-5100 Aachen