PIC16c5x Crossassembler 21. Mai 1993 Copyright Jürgen Eder Hermann-Hesse-Weg 7 W-7316 Köngen (neue Postleitzahl: 73257 Köngen) Auf dieser Diskette befindet sich nur eine DEMO-Version. Das heißt: Es können nur Quell-Programme mit max. 50 Quellcode-Zeilen assembliert werden, alle anderen Funktionen sind in keinster Weise beeinträchtigt. Sie können also den Crossassembler vor dem Kauf zunächst testen. Wenn Sie die Vollversion möchten, schicken Sie bitte 30.- DM (z.B. per Verrechnungsscheck) an obige Adresse. Sie bekommen dann umgehend: - Die aktuelle Vollversion - Die ausgedruckte Anleitung (Rücksendeadresse bitte nicht vergessen !!!) Anleitung: 1.0 Hard- und Softwareanforderung: Hardwareanforderung: 512 k RAM, Diskettenlaufwerk Softwareanforderung: Amiga-OS 2.04 ASCII-Editor Bemerkung: Der Assembler funktioniert auch unter Amiga-OS 1.2 und 1.3, wenn er im CLI aufgerufen wird. (siehe "Aufruf des Assemblers") 1.1 Installation: Zur Installation klicken Sie das Verzeichnis PICAss an und schieben es dorthin, wo Sie es haben wollen. (Drag- und Drop-Prinzip). Wenn Sie das Icon über dem Ziel wieder loslassen, wird der Assembler kopiert. (Anmerkung: Siehe auch Anleitung zum Amiga: "Kopieren von Verzeichnissen") Selbstverständlich kann auch die Originaldiskette bzw. die Sicherheitskopie zum Arbeiten verwendet werden. Bei Installation auf eine Diskette, ist es am besten, wenn Sie sich die Workbench-Diskette zuerst kopieren und dann nicht benötigte Dateien von dieser Diskette löschen (z.B. Zeichensätze...) um Platz zu schaffen. Dann braucht nur noch das Verzeichnis PicAss auf diese 'Arbeitsdiskette' kopiert werden. (Vorgehen siehe oben) 1.2 Aufruf des Assemblers 1.2.1 Aufruf aus dem CLI Der Assembler wird durch Angabe des Programmnamens "PICAss" und der Parameter aufgerufen. Folgende Syntax muß dabei eingehalten werden: PicAss [-behl?] Quellendateiname Die Angaben in der rechteckigen Klammer müssen nur mit angegeben werden, wenn eine Ausgabe erwünscht wird. Fehlen diese Angaben erfolgt keine Ausgabe. Es wird dann zwar der Assembler gestartet und die Quellendatei geladen aber der Quelltext wird nur auf Fehler überprüft und gegebenenfalls wird eine Fehlerdatei erzeugt. Fehlt auch die Angabe "Quellendateiname" so wird automatisch versucht ein Window auf der Workbench zu öffnen. Das weitere Vorgehen ist dann wie beim Aufruf von der Workbench. Das Ausgabeformat kann durch setzen verschiedener 'Schalter' angegeben werden. (Das Minuszeichen muß dann ebenfalls eingegeben werden!) Erklärung der Schalter: - ? Beschreibung aller möglichen Flags des Assemblers beim Aufruf. - b Es wird eine Binärdatei generiert. Diese Datei enthält den Maschinencode Ihres Programms. Der Dateiname ist derselbe wie der Name des Quellcodes, nur mit der Erweiterung ".bin". - e Es wird eine Epromdatei generiert. Diese Datei enthält den Maschinencode Ihres Programms und kann dann mit einem EPROM-Programmiergerät weiterverarbeitet werden. Der Dateiname ist derselbe wie der Name des Quellcodes, nur mit der Erweiterung ".epr". - h Es wird eine Hexdatei generiert. Der Dateiname ist derselbe wie der Name des Quellcodes, nur mit der Erweiterung ".hex". Diese Datei enthält Ihr eingebenes Programm ebenfalls als Maschinencode. Aber der Aufbau ist anders als bei einer Binärdatei. Der Maschinencode ist hier erstens Hexadezimal im ASCII Code abgespeichert, und zweitens steht am Anfang jeder Zeile die 16-Bit Adresse, an der die Daten dann nachher stehen sollen. - l Es wird ein Listing generiert. Der Dateiname ist derselbe wie der Name des Quellcodes, nur mit der Erweiterung ".lst". Außerdem wird noch eine Symboltabelle generiert mit der Erweiterung ".sym". Bemerkung: Der Aufruf aus einer Shell (CLI) funktioniert auch unter Betriebssystemen kleiner als 2.04 solange nicht versucht wird das Window zu öffnen. Das heißt: der Aufruf des Assemblers ohne jegliche Parameter funktioniert erst ab OS-2.04. Beispiel: PicAss -lb PICTest.asm Assembliert die Quellendatei "PICTest.asm" und erzeugt ein Listing, eine Symboltabelle und eine Binärdatei. PICAss ? oder PICAss -? Test.asm Es wird eine kurze Erklärung zur Aufrufkonvention des Assembler ausgegeben. Der Assemblerlauf wird nicht gestartet! PICAss Ab Amiga-OS 2.04 wird ein Window geöffnet, in dem Sie dann alle Eingaben komfortabel mit der Maus erledigen können. 1.2.2 Aufruf von der Workbench (ab Amiga-OS 2.04) Das Programm wird mit einem Doppelklick auf das Icon gestartet und öffnet dann ein Window in dem alle notwendigen Einstellungen ganz einfach und komfortabel durch Anklicken der entsprechenden "Schalter" ein- und ausgeschaltet werden können. Sie entsprechen den Schaltern, die auch beim Aufruf aus dem CLI mit angegeben werden können und sind im Abschnitt 1.2.1 bereits erklärt worden. Durch den Menüpunkt "Projekt->Laden" kann die Quellendatei einfach durch Anklicken ausgewählt werden. Gestartet wird der Assembler dann durch Anklicken von "Start". 1.3 Zeilensyntax und Eingabeformat Die Quellendatei ist eine normale Textdatei, die mit jedem beliebigen Texteditor erzeugt werden kann. Die einzige Bedingung ist, das der Editor die Ausgabedatei im ASCII-Code schreiben kann. (z.B.: Ed, der mit Amiga-OS 2.04 mitgeliefert wird) Es wird die offizielle PIC16c5x-Mnemonik-Schreibweise unterstützt. Um die Assemblerbefehle des PIC16c5x zu erlernen verwenden Sie bitte anderweitige Literatur zum PIC16c5x bzw. sehen Sie sich das Programm "PICAss-Hilfe" an. In diesem Programm werden alle Befehle des PIC16c5x kurz erklärt. Aufbau einer typischen Assemblerzeile: [Label[:]] PIC16c5x-Befehl [Parameter1,Paramter2] [;Kommentar] Beispiel: Loop: MOVLW 23H ;eine Beispielzeile Bemerkungen: - Die Zeilenlänge darf in der Version 1.0 die Länge von 255 Zeichen NICHT überschreiten ! - Bei Befehle mit ZWEI Parameter dürfen zwischen den Parametern KEINE Leerzeichen stehen! 1.4 Ausdrücke 1.4.1 Symbolsyntax Ein Label beginnt mit einem Buchstabe oder einem Unterstrich, die weitere Zeichenfolge ist dann beliebig. Ein Label kann beliebig lang sein, alle Zeichen sind dabei signifikant zur Unterscheidung. Die Groß- und Kleinschreibung ist dabei gleichwertig. d.h.: Loop oder loOP bezeichnen dieselbe Variable. Bemerkung: Variable dürfen nicht nach PIC16c5x-Befehle, oder den Direktiven benannt werden. Außerdem wird eine Variable Namens "PC" als Synonym für den "Programmcounter" verwendet. Der Zähler hat als aktuellen Wert immer den Counterinhalt, der am Beginn der aktuellen Zeile gültig war. Das gilt auch für die Direktiven. 1.4.2 Rechenregeln Wenn z.B. Zahlen als Parameter verwendet werden, kann durch Anhängen eines Buchstabens das Zahlensystem angegeben werden. Fehlt diese Angabe, wird das Dezimalsystem vorausgesetzt. Folgende Systeme können definiert werden: D oder kein Buchstabe : Dezimalzahl O : Oktalzahl H : Hexadezimalzahl B : Dualzahl Beispiel: 4dh ist eine Hexadezimalzahl, 10 oder 10d ist eine Dezimalzahl, 10011b ist eine Dualzahl usw.. Weiterhin kann ein String als Folge von ASCII-Codes in doppelten Hochkommas angegeben werden. Der Inhalt wird in die entsprechenden ASCII-Codes umgewandelt. Außerdem kann statt einer Zahl auch EIN Zeichen in einfachen Hochkommas verwendet werden. (auf deutschen Tastaturen ALT + ä) Der ASCII-Code dieses Zeichen wird dann behandelt wie eine Zahl. Man kann damit auch rechnen. Also 'a'+3*'j' ist ebenfalls ein gültiger Ausdruck. Bemerkung: Als Zahlen werden nur Zeichenketten erkannt, die auch mit einer Ziffer beginnen. Wenn also z.B. eine Hexadezimale Zahl F0H irgendwo in Ihrem Quellcode auftaucht, wird sie als Variable interpretiert, da das erste Zeichen ein Buchstabe ist. In solchen Fällen muß eine "0" (Null) vorangestellt werden. Hier in diesem Beispiel muß es dann also heißen: 0F0H. Der Assembler versteht die Grundrechenarten: Addition, Subtraktion, Multiplikation und Division außerdem weitere mathematische und logische Ausdrücke (siehe unten). Eine Formel wird nach Priorität ausgewertet, also die normale Punkt vor Strich Regelung. Durch Klammerung kann diese Regelung umgangen werden. Da aber eine normale runde Klammer '(' bzw. ')' bei manchen Befehlen für die indirekte Adressierungsart verwendet wird, sollte statt dessen in diesen Fällen die eckige Klammer verwendet werden, also '[' bzw. ']'. Um die Lesbarkeit eines Programmes zu erhöhen kann aber auch die eckige Klammer grundsätzlich immer verwendet werden. Der Assembler versteht beides. Beispiel: MOVLW 4*[3+2] oder MOVLW 'F'+3*2 usw. Hier die Auflistung aller mathematischen Ausdrücke, die der Assembler versteht. Sie ist nach der Priorität der einzelnen Operatoren sortiert. Die höchste Priorität hat der erste Operator in der Liste (Vorzeichen Plus). Die niedrigste Priorität hat der letzte Operator (Addition). Operator Bedeutung + Vorzeichen: Plus - Vorzeichen: Minus ~ Bitweises Negat < Low-Byte eines 16-Bit-Wertes (als Ergebnis bekommt man einen 8 Bit Wert) > High-Byte eines 16-Bit-Wertes (als Ergebnis bekommt man einen 8 Bit Wert) & Bitweises UND | Bitweises ODER ^ Potenzieren / Division * Multiplikation - Subtraktion + Addition Bemerkung: Leerzeichen innerhalb eines Ausdrucks sind verboten und führen zu einem falschen Ergebnis. Es wird jedoch nicht immer eine Fehlermeldung erzeugt! 1.5 Die Direktiven 1.5.1 Steuerungsdirektiven END Beendet den Assemblerlauf. Diese Direktive ist optional und muß nicht unbedingt angegeben werden. INCLUDE "Dateiname" Der Assembler unterbricht die Assemblierung der aktuellen Quelldatei und schiebt das Includefile "Dateiname" in den Assemblerlauf ein. Wenn diese neue Datei zu Ende ist, wird im alten Quellfile fortgefahren. 1.5.2 Zuweisungsdirektiven ORG xxxx Damit wird die Startadresse angegeben, an der das Programm später liegen soll. Es sind beliebig viele ORG Anweisungen innerhalb einer Datei möglich. Die Adressen müssen nicht unbedingt in aufsteigender Reihenfolge sein. d.h.: es kann eine ORG 2000H - Anweisung vor ORG 1000H stehen. EQU oder = Einem Label wird ein Wert zugewiesen. Dies kann aber pro Variable nur einmal verwendet werden! (Ansonsten Fehlermeldung: "Label doppelt definiert") Beispiel: Start equ 10 Daten = 2*8+3 usw. DEF Einem Label wird ein neuer Wert zugewiesen. Die Variable muß aber bereits durch EQU (bzw "=") eingeführt worden sein. DEF kann beliebig oft verwendet werden, man sollte aber vorsichtig damit umgehen, da man damit sehr schnell logische Fehler in den Quelltext einbauen kann, die sich nur sehr schwer finden lassen. Beispiel: Start equ 10 ... Start def 92 ... 1.5.3 Listingdirektiven NOLIST oder LISTOFF Da eine Listingdatei bedingt durch z.B.: Includefiles sehr groß werden kann, kann die Erzeugung des Listings durch diese Direktive ausgeschaltet werden. LIST oder LISTON Hiermit wird die Erzeugung des Listings wieder eingeschaltet. Falls das Listing davor nicht ausgeschaltet wurde, ändert diese Direktive am Ablauf jedoch nichts, da das Listing bereits ausgegeben wird. 1.5.4 Bedingte Assemblierung IFDEF xxxx Wenn der Ausdruck hinter IFDEF ungleich Null ist, wird weiterassembliert, also alle Befehle nach dieser Direktive ausgeführt bzw. assembliert. Wenn der Ausdruck gleich Null ist, werden alle Zeilen bis zum ENDIF des Quellcodes übersprungen. IFNDEF xxxx Wenn der Ausdruck hinter IFNDEF gleich Null ist, wird weiterassembliert. Falls der Ausdruck jedoch ungleich Null ist, werden alle Zeilen bis zum ENDIF übersprungen. ENDIF Nach jedem IFDEF bzw. IFNDEF sollte ein ENDIF folgen. Oder genauer gesagt, es sollten genau so viele ENDIF vorhanden sein wie IFDEF plus IFNDEF im Quelltext vorhanden sind. Ansonsten kommt es zu einer Fehlermeldung! Diese Direktiven sind rekursiv. Das heißt: es kann z.B. eine IFNDEF nach einer IFDEF Anweisung folgen. Sollte die IFDEF Direktive z.B. bereits ergeben, das nicht weiterassembliert wird (Ausdruck gleich Null), dann wird zwar die IFNDEF Anweisung nicht ausgeführt, aber es sollten in diesem Fall trotzdem zwei ENDIF-Direktiven folgen. Beispiel: definition EQU 1 .... CLRW ;Quelltext IFDEF definition .... ;wieder Quelltext (wird ausgeführt) IFNDEF definition RRF 3,W ;Text wird übersprungen .... ENDIF ;Ende von 'IFNDEF' RLF 3,W ;diese Zeile wird wieder assembliert ENDIF ;Ende von 'IFDEF' .... usw. 1.5.5 Makros Makros sind Zusammenfassungen mehrerer Quelltextzeilen, die nach ihrer Definition in den Assemblerlauf eingeschoben werden. Sie können mit Parametern versehen werden, so daß Sie immer wiederkehrende Sequenzen von Quellzeilen nur einmal eingeben müssen, auch wenn diese kleine Unterschiede aufweisen. Ein Makro wird aufgerufen, indem sein Name als 'Befehl' eingegeben wird. Dadurch kann der Quelltext kürzer und übersichtlicher gehalten werden. Aber wohlgemerkt, nur der Quelltext wird kleiner, das Programm selbst wird größer. Der Grund: bei jedem Makroaufruf wird die komplette Sequenz assembliert, genauso als wenn Sie die Zeilen dort stehen hätten. Um ein Makro verwenden zu können, muß es erst einmal definert werden. Label MAKRO Durch diese Direktive ('MAKRO') wird das Makro definiert. Der Name muß vor dieser Anweisung, am Beginn der Zeile stehen. Alle folgenden Quelltextzeilen gehören dann zu diesem Makro und werden jedesmal, wenn der Makroname als Befehl im Quelltext steht dann assembliert. Dem Makro können später beim Aufruf maximal 10 Argumente als Parameter angegeben werden. In den Quelltextzeilen während der Definition müssen diese Parameter durch eine Zahl von 0 bis 9 und einem Vorangestellten Backslash ('\') angegeben werden. Innerhalb einer Makrodefinition kann nicht mit einer neuen Makrodefinition begonnen werden. Die Verschachtelung von diesen Direktiven ist also unzulässig. ENDM ENDM beendet dann die aktuelle Makroaufnahme. Das Makro kann von nun an verwendet werden. Beispiel: MAK1 MAKRO INCFSZ 4,W ENDM Init MAKRO ;Makro mit 4 Parametern (0 bis 3) \3 MOVLW \0 ;hinter '\' steht die Parameternummer CALL \1 ANDLW \2 ENDM Aufgerufen werden diese Makros dann folgendermaßen: .... Init 1,h,2,Lab1 call u1prg Init h,test,0fh,Lab2 call ... .... ;irgend ein Quelltext MAK1 1.6 AREXX - Schnittstelle Durch eine AREXX-Schnittstelle läßt sich ein Programm sozusagen 'fernsteuern'. Ein anderes, gerade laufendes Programm (z.B. ein Editor) kann dann dadurch z.B. die Einstellungen vornehmen. (Datei angeben, Assembler starten usw.) Damit der Empfänger dieser 'Fernsteuerbefehle' eindeutig gekennzeichnet ist, wird ein Briefkasten benötigt. Dieser Briefkasten hat einen eindeutigen Namen und wird Port genannt. Der PICAss Crossassembler legt solch einen Port an, nachdem das Window geöffnet wurde. Das heißt, das der AREXX-Port erst ab Amiga-OS 2.04 verfügbar ist. Der Portname hat folgenden Aufbau: "REXX_PICASS_x" Das x bezeichnet eine Nummer. Beim ersten Start steht dort eine Null ('0'). Wenn der Assembler nun noch einmal gestartet wird, so das zwei Assembler gleichzeitig aktiv sind, bekommt der als zweiter gestartete Assembler die Nummer eins ('1') usw.. Insgesamt kennt der Assembler 7 AREXX-Befehle, die Teilweise noch Parameter haben. Folgende Befehle werden erkannt: REQUESTS ON/OFF: Wenn Fehler im Quelltext sind, erscheint normalerweise ein Requester ("Fehler im Quellcode..."), der darauf aufmerksam macht. Durch diesen Befehl kann der Requester unterdrückt werden (OFF). Oder falls er unterdrückt war, kann man ihn wieder einschalten (ON). DATEINAME 'Name': Dadurch wird der Dateiname übergeben. START: Der Assemblerlauf wird gestartet. BEENDEN: Der Assembler wird beendet, genauso als wenn im Menü der Punkt Ende angewählt worden wäre. Die Ausgabeformate (AREXX-Befehle): ASCII ON/OFF: ASCII-datei erzeugen. BINAER ON/OFF: Binärdatei erzeugen ein- oder ausschalten. EPROM ON/OFF: Epromdatei erzeugen ein- oder ausschalten. LISTING ON/OFF: Listing und Symboltabelle erzeugen ein- oder ausschalten. Beispiel für eine Steuerung aus einer Shell: Zunächst muß der Assembler gestartet werden. Dann kann aus einer Shell z.B. folgendes Kommando eingegeben werden: rx "address REXX_PICASS_0 DATEINAME XYZ.ASM" Als Ergebnis sollte jetzt dieser Dateiname im Assembler sichtbar werden. Als weitere Beispiele existieren im Verzeichnis die Dateien: Assemble.rexx und AssOut.rexx. Diese Dateien können aus dem Editor Ed aufgerufen werden und starten dann den Assembler (Assemble.rexx) bzw. schalten verschiedene Ausgabeformate ein und starten dann den Assembler (AssOut.rexx). 1.7 Ausgabeformate 1.7.1 Fehlermeldungen: In die Datei "PICAss.err" (im gleichem Verzeichnis, in dem der Assembler steht) werden alle Fehlermeldungen geschrieben. In einer Zeile werden alle wichtigen Informationen zu einem Fehler ausgegeben. Also Datei, Zeile, Fehlernummer und Fehlerursache als Klartext. Beispiel: PICTest.asm: Zeile 6: Error 6: Befehl unbekannt 1.7.2 Listing: Der Dateiname wird vom Quellfile abgeleitet, jedoch mit der Endung ".lst". Hier steht noch einmal Zeile für Zeile der Quelltext, die Zeilennummer und der Maschinencode. 1.7.3 Symboltabelle: Der Dateiname wird vom Quellfile abgeleitet, jedoch mit der Endung ".sym". Alle Label und Symbole werden mit den dazugehörigen Werten aufgelistet. Diese Datei kann dann z.B. in anderen Programmen wieder durch Include "xxx.sym" wieder eingeladen werden, wenn diese Symbole mit diesen Werten dort verwendet werden müssen. 1.7.4 (Hex.) ASCII Datei: Der Dateiname wird vom Quellfile abgeleitet, jedoch mit der Endung ".hex". Beispiel: ;0000cd4100....... ;001000c30000..... Durch ';' wird jede Zeile eingeleitet. Die nächsten 2 Bytes bezeichnen die Adresse für die darauffolgenden Daten. Dann folgen die Maschinendaten als Hexadezimale Zahlen (insgesamt 16 Bytes pro Zeile). 1.7.5 Binäre Datei: Der Dateiname wird vom Quellfile abgeleitet, jedoch mit der Endung ".bin". Diese Datei enthält den Maschinencode und eventuell auch Formatierungsanweisungen. 1.7.6 Eprom Datei: Der Dateiname wird vom Quellfile abgeleitet, jedoch mit der Endung ".epr". Diese Datei ist ähnlich aufgebaut wie die Datei ".hex". Der Aufbau dieser Datei entspricht dem Aufbau von INTEL INTELLEC-Dateien (16-Bit). Diese Datei kann in ein EPROM gebrannt werden. Aufbau dieser Datei: :BBAAAATTHHHHHHHH........HHHHCC :BBAAAATTHHHH...... :....... Dabei bedeutet: BB : Anzahl der 16-Bit Datenwörter in dieser Zeile. BB ist eine 2-stellige Hexadezimale Zahl! AAAA : Adresse ab der die folgenden Daten stehen. AAAA ist eine 4-stellige Hexadezimale Zahl! TT : TT ist immer '00', außer am Schluß dieser Datei. Dann wird sie auf '01' gesetzt. HHHH : 16-Bit-Daten. HHHH ist eine 4-stellige Hexadezimale Zahl! CC : Checksumme der kompletten Zeile. Also von BB, AAAA, TT und HHHH. CC ist das Zweierkomplement der Summe dieser Datenbytes. CC ist eine 2-stellige Hexadezimale Zahl! 1.8 Fehlermeldungen Fehlernummer: Bedeutung: 1 Org-Direktive ohne Parameter (es fehlt die Adresse) 2 EQU-Direktive ohne Parameter 3 EQU-Direktive ohne Label 4 QRG doppelt vorhanden (Die Adresse existiert zweimal) 5 Falscher Parameter 6 Befehl unbekannt 7 Bereichsüberschreitung bei 1-Byte Argument 8 Bereichsüberschreitung bei 2-Byte Argument 10 Parameterübergabe falsch 11 Label doppelt definiert 12 Ausdruck zu lang (es kann sich dabei eigentlich nur um eine Formel handeln. Kürzen Sie den Ausdruck auf max. 25 Zeichen) 13 Zu viele Argumente 14 Ausdruck falsch 15 Division durch NULL 16 Unerlaubtes Zeichen in Formel 17 Kann Variable nicht finden 19 Überlagerung der Binärdaten Abhilfe: Anpassung der Org-Anweisung, Beispiel siehe unten (Bemerkung: Dieser Fehler wird erst bei der nächsten ORG Anweisung bemerkt.) Fehlernummer: Bedeutung: 22 Es gibt mehr ENDM-Anweisungen als MAKRO- Anweisungen! 23 Es wird versucht eine Makrodefinition in einer Makrodefinition zu beginnen. 24 Der Makroname existiert bereits. 25 undefinierter Makroparameter. Es existiert hinter einem BACKSLASH '\' innerhalb einer Makrodefinition ein unzulässiges Zeihen. Es sind nur die Zeichen '0' bis '9' erlaubt! Beispiel zum Fehler 19: Beispiellisting: org 0H Start CLRW MOVLW 3 NOP NOP ANDWF 3,W org 3H ANDWF 4,W usw. org 1FFH GOTO START Dieses Listing führt zum Fehler 19. Die erste Anweisung beginnt bei 0H und belegt 5 Adressen (bis Adresse 4H). Die nächste Org-Anweisung soll aber bereits bei 3H beginnen. Dort stehen aber bereits andere Befehle. (= Überlagerung der Binärdaten) Bemerkung: Dieser Fehler wird erst bei nächsten org-Anweisung bemerkt (bzw. bei Dateiende wenn keine Org-Anweisung mehr folgt) hier in diesem Beispiel wird dieser Fehler erst in der Zeile bemerkt, in der org 1FFH steht. 2 Pic16c5x Hilfesystem 2.1 Aufruf Das Programm wurde bei der Installation des Assemblers mit installiert. Gestartet wird dieses Programm durch Doppelklick auf das Icon PicHilfe. Es lädt dann die Datei PicHilfe.txt, das sich im selben Verzeichnis befinden muß, und öffnet dann ein Window. 2.2 Funktion Nachdem das Programm gestartet wurde, wird in einem Window eine Auswahl angezeigt. Zur Zeit wird zu fast allen Pic16c5x-Befehlen eine kurze Erklärung angezeigt. Dazu muß einfach der Titel (Pic16c5x-Befehl) angeklickt werden, zu dem man fragen hat. Dieses Programm soll praktisch ein Nachschlagewerk zumindest teilweise ersetzen. Um die Pic16c5x-Befehle zu lernen, ist dieses Programm jedoch nicht geeignet! Wenn man sich die Informationen angesehen hat, kommt man durch Anklicken von OK wieder zurück zum Hauptmenü. 2.3 Aufbau der PicHilfe.txt-Datei Die Datei wurde durch einen normalen Editor erstellt und kann auch jederzeit von Ihnen ergänzt oder verbessert werden. Um die Menüstruktur zu erzeugen existieren vier Befehle. - \title\ - \subtitle\ - \text\ und - \newline\ Bemerkung: der Befehle \language\ wird noch nicht unterstützt, er steht jedoch bereits in der PicHilfe.txt-Datei! Jeder Befehl beginnt IMMER mit einem '\' und endet auch wieder mit einem '\'. Die Befehle \title\ und \subtitle\ untergliedern den Text wie in einem Buch mit einer 'großen' Überschrift und mit 'kleineren' Überschriften. Nach diesen beiden Befehlen muß die Überschrift in '{', '}' eingeschlossen werden. Der Befehl \text\ steht dann nach einem \title\- oder nach einem \subtitle\-Befehl. Nach dem \text\-Befehl steht dann wiederum der Text, der später nach dem Anklicken der Überschrift angezeigt werden soll. Die Nummerierung, die im Hauptmenü erscheint, wird automatisch generiert, und braucht nicht weiter beachtet werden. Da leere Zeilen ignoriert werden, muß der Befehl \newline\ verwendet werden, wenn eine Leerzeile eingeschoben werden soll. (Das gilt nur für den Text, und nicht für die Überschriften!) Text, Befehle oder irgendwelche sonstigen Zeichen nach dem \newline\-Befehl werden nicht beachtet! Bemerkung: - In einer Zeile darf maximal nur ein Befehl stehen! - Die TAB-Taste darf nicht verwendet werden! Beispiel: \title\{Das ist ein Test} \subtitle\{Das ist ein Untertitel} \text\{Hier könnte jetzt ein beliebiger Text stehen. \newline\ Nach einer Leerzeile geht der Text hier weiter.} \title\{Eine neue Überschrift} \text\{Auch nach 'title' darf ein 'text' stehen!} usw. 3 Editor 3.1 Aufruf Durch Doppelklick auf das Icon 'Editor' wird der Editor gestartet. Es handelt sich dabei jedoch nicht um einen mitgelieferten Editor, sondern es wird der Ed aufgerufen. Dieser Editor (Ed) wird mit dem Betriebssystem (Amiga-OS 2.04) geliefert. Eine genaue Anleitung zu diesem Editor kann deshalb der Anleitung zum Amiga entnommen werden. (Anleitung zur Workbench und Anleitung: AmigaDOS->Editoren) Selbstverständlich kann auch ein anderer (besserer) Editor verwendet werden. Bemerkung: Aus Ed können AREXX-Programme aufgerufen werden. Dazu existieren im Verzeichnis Examples zwei AREXX-Programme: Assemble.rexx und AssOut.rexx. Werden diese Programme aufgerufen, wird das derzeitig im Editor befindliche Programm abgespeichert und wenn der Assembler bereits aktiv ist, wird ein Assemblerlauf gestartet.