ASS_MAC ½ 1989,90 by Martin Birn, Knoblochstraže 51, D-7100 Heilbronn =============================================================================== Versionsnummer: 1.10 Datum der letzten Žnderung: 13.10.1990 Sprache: Assembler (GFA, V 1.5) =============================================================================== 1. Allgemeines -------------- Die im Ordner ASS_MAC.xxx befindlichen Dateien sind PUBLIC DOMAIN und drfen frei kopiert werden, solange diese Datei unver„ndert (!) mitkopiert wird. Aužerdem ist es untersagt, ASS_MAC zu verkaufen oder einem Programm beizu- legen, das nicht Public Domain ist. In solchen F„llen ist eine schriftliche Erlaubnis des Autors notwendig! Bei den Quelltexten handelt es sich um eine Macrosammlung fr den GFA- und andere Assembler, die die Aufrufe des Betriebssystems betr„chtlich vereinfacht. Sie sollten am Beginn des TEXT-Segmentes eines Assembler-Quelltextes mit INCLUDE eingefgt werden. Beide Macrosammlungen liegen sowohl in der kompri- mierten Form fr den GFA-Assembler (*.IS) als auch als normaler ASCII-Text (*.S) vor. Die Macros werden unter den g„ngigen Bezeichnungen aufzurufen. Die Parameter werden in der gleichen Reihenfolge wie in C bergeben (vgl. z.B. [I]). Dabei ist zu beachten, daž bei einigen Funktionen Rckgabewerte erwartet werden. In C wird hierzu je eine Rckgabevariable bergeben. Da sich die hier vorhandenen Macros jedoch nicht um die Rckgabe kmmern, sind auch keine Rckgabevariablen anzugeben. Die Rckgabe sollte vom Programm selbst organisiert werden, da ja meist nicht alle Rckgabeparameter ben”tigt werden. Die Werte k”nnen aus den GEM-Ausgabefeldern unter den unten angegebenen Namen angesprochen werden. Fr einige Funktionen existieren zwei Macros, da auch in den Dokumentationen oft verschiedene Namen angegeben werden oder weil sich diese ge„ndert haben. Aužerdem wurden auch die erst in GEM 2.0 bzw. TOS 1.4 (=GEM 1.3) implementier- ten Funktionen bercksichtigt. Die Macros entsprechen also genau den in [I] an- gegebenen Funktionen. Beachten Sie hierzu bitte die entsprechenden Hinweise im Quelltext. Neben den Macros wurden noch verschiedene Symbole fr den Zugriff auf AES- Funktionen vereinbart. An einigen Stellen mužten Žnderungen zu den in [I] an- gegebenen Namen vorgenommen werden, da z.B. 'move' als Opcode erkannt wird. Auch dies wurde im Quelltext vermerkt. GLEICH ZU BEGINN EIN WICHTIGER HINWEIS! Die vereinbarten Symbole wurden klein geschrieben. Sie sollten das also beim Aufruf ebenfalls tun, da es sonst Fehlermeldungen hagelt. Den GFA-Assembler k”nnen Sie im Men 6,1 anweisen, alle Symbole klein zu schreiben, dann ist dieses Problem endgltig erledigt. Sollten Sie ihn aber anweisen, alle Symbole GROSS zu schreiben, mssen Sie mit dieser Einstellung die Macros zuerst in das Sourcetext-Format und dann wieder in das Assembler-Format konvertieren, damit diese Anpassungen vorgenommen werden. Analoges gilt fr Macronamen, die ich grunds„tzlich GROSS schreibe - das dient der šbersicht. 2.1. Die AES-Macros ------------------- Der eigentliche Aufruf erfolgt mit dem Macro AES bzw. dem Unterprogramm AESTRAP. Dieser Labbel darf nicht weiter vergeben werden. Das Unterprogramm wird durch den Befehl SECTION 63,TEXT am Codeende abgelegt, da es sonst ja gleich nach dem Programmstart ausgefhrt werden wrde (-->Absturz!). Die Belegung des CONTROL-Feldes erfolgt mit dem MOVEP-Befehl, wie dies in [II] vorgeschlagen wird. Das entsprechende Langwort mit den kombinierten Parametern wird im Macroaufruf mit den SHIFTs berechnet. HINWEIS!! Bei Versionen vor 1.3 des GFA-Assemblers gibt es einen Fehler bei der Tokenisierung des MOVEP-Befehls, der in aestrap verwendet wird. Falls es da zu Fehlern kommen sollte, entweder die betreffende Zeile mit dem Cursor weitr„umig umfahren (damit nicht neu tokenisiert wird) oder sich fr nur 10 DM die neue Version bestellen (das lohnt sich auf jeden Fall wegen der Tastaturmacros und den - zumindest teilweise - beseitigten Fehlern). 2.2. Die VDI-Macros ------------------- Hier wird das contrl-Feld auf herk”mmliche Weise gefllt, da bei einigen Funk- tionen auch variable Werte eingesetzt werden mssen und man eh noch Handle und ggf. Unterfunktionsnummer eintragen muž. ACHTUNG!!!! - - - - - - Das intin- bzw. intout-Feld wurde fr maximal 256 Werte eingerichtet. Dies kann bei sehr langen Textausgaben zu wenig sein. In diesem Fall mssen Sie die Ver- einbarung in den Zeilen 24 bzw. 26 ab„ndern oder die Macros so umschreiben, daž andere Adressen eingesetzt werden. Letztere M”glichkeit hat aber den Nachteil, daž das VDI fr jedes Zeichen ein Wort (!) erwartet und die Texte nicht wie ge- wohnt (vom GEMDOS her) byteweise abgelegt werden k”nnen. 2.3. Die TOS-Macros ------------------- Hier gibt es eigentlich nicht viel zu sagen, aužer, daž auch alle dokumentier- ten Systemvariablen und die meisten Hardware-Registeradressen als Symbole ver- einbart wurden. 2.4. Die TOS030-Macros ---------------------- Tja, Sie lesen richtig! Auch die neuen Funktionen des im ATARI TT eingebauten TOS030 werden bereits untersttzt! Der Quelltext ist ZUSŽTZLICH zu TOS.IS bzw. TOS.S einzubinden, da nur die wirklich neuen Funktionen enthalten sind. Be- achten Sie aber bitte, daž Programme, die diese Funktionen verwenden, nicht mehr auf einem ST laufen. Bei der Namensgebung habe ich mich an die in [VII], [VIII] und [IX] angegebenen Namen gehalten; es kann aber durchaus sein, daž sich hier noch etwas „ndert. Auch das Parameterformat ist diesen Quellen ent- nommen worden. Da ich selbst noch keinen TT besitze, konnte ich die Richtig- keit dieser Angaben leider auch nicht berprfen. Sollten Sie also hier einen Fehler finden oder auf neuere Angaben stožen, setzen Sie sich bitte mit mir in Verbindung! 3. Globale Labbels ------------------ Die in den Macros verwendeten Feldnamen drfen ebenso wie die in den Bindings enthaltenen Symbole nicht weiter vergeben werden. Dies gilt grunds„tzlich fr ALLE entsprechenden Buchstabenfolgen, unabh„ngig von Grož- und Kleinschreibung! Auch 'aEsPB' ist also reserviert!! Daran sollte man sich auch bei anderen Labels halten - falls sich jemand vom GFA-Assembler die Labels in Grož- oder Kleinschreibung konvertieren l„žt kommt es sonst n„mlich zu Fehlern. Die Felder werden unter folgenden Namen angesprochen: aespb: AES-Parameter-Block control (MIT zwei 'o's): AES-Kontrollfeld addr_in, addr_out: AES-Adrežein- bzw. ausgabefeld int_in, int_out (MIT '_'): AES-Integerein- bzw. ausgabefeld pb: VDI-Parameterblock contrl (OHNE das 2. 'o'!): VDI-Kontrollfeld ptsin, ptsout: VDI-Koordinatenein- bzw. ausgabefeld intin, intout (OHNE '_'): VDI-Integerein- bzw. ausgabefeld aestrap, vditrap: Unterprogramme fr den Aufruf der Routinen 4. Andere Assembler ------------------- Falls Sie nicht im Besitz des GFA-Assemblers sind, mssen die Macro-Definitio- nen ggf. angepažt werden. Vorsicht ist vor allem mit den lokalen Labbels in den VDI-Textausgabe-Macros geboten. Diese Macros mssen Sie ggf. entsprechend der Angaben in Ihrem Handbuch ab„ndern. Selbverst„ndlich muž Ihr Assembler in der Lage sein, INCLUDE-Dateien und Macros zu verarbeiten, sonst l„uft rein gar nichts!! Dann kann man Ihnen nur raten, sich sofort einen vernnftigen Assemb- ler zu besorgen (lohnt sich!). Ansonsten hoffe ich, daž endlich auch benutzerfreundliche Programme in Assemb- ler geschrieben werden, zumal sich das wegen der Programml„nge vor allem bei Accessories anbietet. 5. Literaturhinweise -------------------- I. Jankowski/Reschke/Rabich: 'Das ATARI ST Profibuch', 2. Auflage Sybex-Verlag, Dsseldorf. ISBN 3-88745-501-0, 69.-- DM. Enth„lt u.a. eine komplette šbersicht ber alle Betriebssystem-Routi- nen, auch die des neuen TOS 1.4. Ist auf jeden Fall jedem, der sich ernsthaft mit dem ST besch„ftigen will, zu empfehlen. II. ST-Computer 7-8/89, Seite 161 ff. Enth„lt einen interessanten Artikel ber Assembler-Optimierung, wie sie auch von den hier vorgestellten Macros verwendet wird. III. ST-Computer 11/89, Seite 151 ff. Enth„lt einen Artikel ber die Neuheiten des TOS 1.4 im GEMDOS/ (X)BIOS. IV. ST-Computer 12/89, Seite 99 ff. Enth„lt einen Artikel ber die Žnderungen an AES und VDI im TOS 1.4. V. ST-Computer 1/90, Seite 122 ff. / 131 ff. Enth„lt einen Artikel ber die TOS-Versionen und ber den Einbau eines gepatchten TOS 1.4. VI. Claus Brod/Anton Stepper: Scheibenkleister II - Massenspeicher am ST Maxon-Computer GmbH, Eschborn (1989). ISBN 3-927065-00-5, 79.-- DM. Ein Buch fr alle, die (z.B. in Assembler) einen Massenspeicher an- sprechen wollen oder aber noch auf der Suche nach einem guten Disk- monitor oder Formatierprogramm sind (incl. Disk). VII. ST-Computer 12/89, Seite 37ff.: "Reise zum Mittelpunkt des TT" VIII. ST-Computer 5/90, Seite 182ff. "Atari TT - Neues von der Butterdose" IX. ST-Computer 10/90, Seite 52ff. und 57ff. "Atari TT, die dritte - Mit 32 MHz an den Start" bzw. "Wie ST-kompatibel ist der TT?" 6. TOS 1.4 ---------- Falls es sich noch nicht herumgesprochen hat: Das neue TOS gibt's fr knapp 200 DM zum Austauschen. Dies lohnt sich schon wegen der Verbesserungen am Desk- top (Dateien verschieben, GEM-Programme automatisch starten) und des schnelle- ren GEMDOS (vor allem fr Harddisk-Besitzer!!!). Achten Sie darauf, daž Sie die richtige Version bekommen (2 Chips fr neue oder 6 Chips fr alte STs). Der Einbau ist eigentlich problemlos, doch die 'Anleitung' ist zumindest bei der Ausfhrung mit 6 Chips fehlerhaft (es sind falsche Steckplatznummern an- gegeben). Tats„chlich mssen die Chips bei einem alten 1040 ST in die Steck- pl„tze U2-U7 hinten links unter dem Transformator eingebaut werden (die letzte Zahl der Chip-Nummer ist um 1 h”her als die des Steckplatzes!). Ob dies bei Ih- rem ST genauso ist, ist natrlich nicht gesagt (siehe auch [V]). Inzwischen werden die Chips auch von anderen Anbietern verkauft - teilweise schon mit ei- nigen Patches versehen. 7. Žnderungen seit der ersten Version der Macrosammlung: -------------------------------------------------------- - Der fehlerhafte Name von VSF_PERIMETER wurde verbessert. - Der fehlerhafte Aufruf von FSEL_EXINPUT wurde korrigiert (bei frheren Ver- sionen wurde weiterhin die alte Routine aufgerufen). - Das Macro FSEL_NEWINPUT wurde hinzugefgt. Es werden die Parameter von FSEL_EXINPUT bergeben. Die Titeladresse wird jedoch nur bercksichtigt, wenn eine TOS-Version ò 1.4 vorliegt. So funktionieren Ihre Programme automatisch auf allen TOS-Versionen. Durch die Versionsabfrage ist das Macro etwas lang geraten. Dies k”nnte vermieden werden, wenn die Funktion als Unterprogramm gestaltet worden w„re, was aber den Nachteil h„tte, daž dieses auch dann im Speicher w„re, wenn man die Funktion nicht ben”tigt. Aužerdem mžten die Pa- rameter dann ber den Stack bergeben werden. Sie k”nnen dies ja ggf. ab„n- dern. Oft wird es aber auch gnstig sein, diese Funktion innerhalb eines Un- terprogrammes nur einmal aufzurufen, da man so gleich noch den aktuellen Pfad und Namen retten kann (fr den Fall, daž der Benutzer Abbruch anw„hlt und man diese dann restaurieren will). FSEL_NEWINPUT wurde implementiert, wie in [IV] angegeben. - Aužerdem wurde das Macro VQ_GDOS aufgenommen [I, Seite 10), mit dem man ber- prfen kann, ob GDOS installiert worden ist. - Fehler bei VRT_CPYFM wurde behoben. - Fehler bei SHEL_FIND wurde behoben. - Bedingte Assemblierung bei EVNT_MULTI und einigen anderen Funktionen. Die Parameter werden nur noch dann bergeben, wenn sie auch angegeben sind. Es k”nnen also nicht benutzte Parameter einfach weggelassen werden. ACHTUNG: Die Kommata mssen aber trotzdem angegeben werden. - Da der Resource-Analyser und -Reassembler R_A_U_R von PD-Disk 228 der ST- Computer-Serie zum Grožteil - aber eben nicht ganz - die selben Vereinba- rungen an den Sourcetextbeginn schreibt (bis auf Grož- und Kleinschreibung, aber darauf kann man sich ja bei GFA-Assembler-Benutzern nicht verlassen), wie sie auch bereits in AES.IS enthalten sind und ich Ihnen nicht zumuten m”chte, jedesmal im Resource-Quelltext die doppelten Labels zu entfernen, habe ich die wenigen abweichenden Labels aufgenommen. Sie sind mit dem Kommentar ;1) versehen. Falls Sie also den Assembler angewiesen haben, alle Symbole in Kleinbuchstaben zu konvertieren und den Resource-Quelltext zu- sammen mit einem Programm assemblieren, das AES.IS benutzt (und NUR dann!), sollten Sie die am Anfang des R_A_U_R-Textes stehenden equ's entfernen. Wenn Sie den R_A_U_R-Quelltext in einen Assembler-Quelltext umwandeln, mssen Sie darauf achten, daž Sie sich ggf. die Labels anpassen lassen! ABER: Verwenden SIE diese abweichenden Bezeichnungen in IHREN Programmen nur, wenn sie uch noch mit einer ;2) gekennzeichnet sind, da man sich normaler- weise an die dokumentierten Bezeichnungen halten sollte. Nur so versteht auch jemand aužer Ihnen, was Sie da zusammenschreiben. 8. Sonstiges ------------ Falls Sie einen Fehler in dieser Macrosammlung finden oder ein Macro nicht funktionieren sollte (der Assembler meldet z.B. Fehler bei der Parameterber- gabe), so melden Sie sich bitte bei mir (meine Adresse folgt ganz unten). Insbesonders gilt das wie bereits erw„hnt fr die TOS030-Macros. Sollte Ihnen diese Macrosammlung aužerdem viel Arbeit abgenommen und Zeit ge- spart oder davor bewahrt haben, ein im Vergleich zu PD-Software doch relativ teures kommerzielles Produkt mit dem selben Zweck zu erstehen, so k”nnten Sie mir als kleine Anerkennung einen kleinen (oder auch grožen) Betrag auf mein Konto Nr. 004872485 bei der Kreissparkasse Heilbronn, Blz. 620 500 00 berwei- sen oder mir zuschicken. Sofern dieser Betrag so grož ist, daž ich davon eine Diskette und die Versandkosten finanzieren kann (ò10 DM), und ich Ihre An- schrift entziffern kann (!), so werde ich Ihnen eine 3.5"-Diskette mit dem Quellcode eines Uhr-Accessorys (eine resetfeste Uhr auch fr alte STs!, Assemb- ler!) und ggf. die neueste Version der Macrosammlung zuschicken. Auch ein Demo des u.g. Programmes ist darauf enthalten! Viel Spaž beim Programmieren wnscht Ihnen Der Autor =============================================================================== HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - =============================================================================== Ab sofort ist bei mir ein Programm zur komfortablen Steuerung von Modellbahnen erh„ltlich. Es verfgt ber eine Gleisplansteuerung, Fahrstražensteuerung, An- fahrverz”gerung fr Loks und vieles mehr. Auch das Erstellen von Fahrpl„nen ist m”glich. Die Ansteuerung der Anlage erfolgt interruptgesteuert, um Verz”ge- rungen zu minimieren. Das Programm l„uft auf allen STs (...und trotzdem ist es in Assembler geschrieben!!), auch unter TOS 1.4, erfordert aber die hohe Auf- l”sung. N„here Informationen, insbesonders ber anlagenseitige Hardwarevoraussetzungen, k”nnen bei mir kostenlos angefordert werden. Hier meine Adresse: Martin Birn Knoblochhstraže 51 7100 Heilbronn Wie bereits oben angekndigt, gibt es fr 10 DM eine Demo-Version zusammen mit dem Uhrprogramm und der evt. verbesserten Macrosammlung. Dieser Betrag kann sp„ter auf den Kaufpreis angerechnet werden.