ASDIS für Anfänger - 2.Teil


Das Thema „lange REM-Zeile" berührt eigentlich jeden, der in Maschinensprache am ZX81 programmiert. Zum Ablegen eines Maschinenprogrammes gibt es bekanntlich mehrere Möglichkeiten: a) REM-Zeile, b) unterhalb RAMTOP, c) irgendwo anders (im RAM).

Die Lage in einer REM-Zeile hat den Vorteil, daß das Programm problemlos über SAVE mit abgespeichert werden kann (besonders früher: auf Kassette!). Diese Prozedur stellt einen aber immer vor die Mühe, eine der Programmlänge entsprechend lange oder längere REM-Zeile anzulegen. Dafür gibt es nun mehrere Routinen, wobei ich als Ergänzung zu Georgs Artikel einmal exemplarisch eine weitere vorstellen möchte. Es soll ja auch um die Kommentare und die Marken in ASDIS gehen...


Das Programm steht selbst in der ersten REM-Zeile und bewirkt eine Verlängerung derselben um den Wert, der mit RAND übergeben wird. Der Aufruf lautet daher z.B. RAND 1000 und dann RAND USR 16514. Wichtig ist noch, daß der Cursor in einer 2. REM-Zeile stehen muß!

Aus dem ersten Teil wissen wir bereits die nötigen Schritte bis hierher: REM-Zeile mit 61 Nullen anlegen, ASDIS für Ablegeadresse („I“) auf 16514 einstellen.

Eine neue Funktion ist nun die Laufadresse. Diese braucht ASDIS, um auch Absolutsprünge und CALLs richtig zu berechnen. Für die meisten Fälle ist Ablegeadresse=Laufadresse. Wir gehen deshalb im Menü auf „H“ und geben ebenfalls 16514 ein.

Dann nix wie hinein in den Editor! Die erste Zeile enthält bereits eine Marke: „FAST“. Marken sind wie Variablennamen und sollen die Lesbarkeit des Listings erleichtern. Unter FAST kann sich schließlich jeder etwas vorstellen!

Marken dürfen wie Labels nicht länger als 5 Zeichen sein. Zur Eingabe tippen wir die Zeile genauso ein: CALL FAST - fertig. Nach N/L steht aber dahinter nur CD0000, da ASDIS den Wert von FAST noch nicht kennt. Das geht nun wie folgt: FAST nochmal wie ein Label in der ersten Editorspalte entippen, N/L, und dann „=". Der Cursor wechselt auf ein m („Marke") und wir können jetzt den Wert eingeben. Wie gehabt in dezimaler Schreibweise oder in hex mit vorangestelltem $.

Die zweite Zeile tippen wir ebenso ein wie sie dasteht und definieren nachher EPPC mit $400A. Es geht noch anders: man darf auch erst das gesamte Listing einhacken und alle Marken abschließend definieren! Wurde eine Marke vergessen, moniert das ASDIS beim assemblieren und springt sofort in den Editor auf die Zeile mit der unbekannten Marke.

Kommentare sind relativ einfach: in der ersten Editorspalte ein Semikolon eintippen und ASDIS signalisiert mt einem k, daß er dann einen Kommentar erwartet. Als Kommentar ist jedes Zeichen zulässig.

Eine weitere Funktion brauchen wir für obiges Programm noch: die Datenfelder oder Tabellen. Ein Beispielprogramm für Tabellen denke ich mir für den 3.Teil aus, hier nur kurz zur Eingabe. Auf den Adressen $4095 und $40BD stehen Datenfelder, diese haben hier allerdings nur eine Länge von 1 Byte. Um Datenfelder einzugeben, wechselt man mit Shift+Leertaste in den Datenmodus -ASDIS zeigt ein d- und tippt dann die Werte einfach ein. Weil es sich hier um reine Bytes handelt, muß folglich eine gerade Anzahl Zeichen eingegeben werden, sonst meckert ASDIS. Desweiteren sind nur die Zeichen 0...9 und A...F zulässig, alles andere ergibt ja keinen gültigen Hex-Wert. Das „$“ vor den Hex-Werten ist in Datenfeldern nicht mehr erforderlich!

Daten- wie Kommentarzeilen dürfen zwar max. 255 Bytes lang sein, sollten aber besser auf Bildschirmbreite begrenzt werden.

Zum Löschen von Zeilen im Editor drückt man einfach auf die „0“. Die Zeile, in der der Cursor steht, wird damit gelöscht.

Zum Ändern einer Zeile drückt man im Editor einfach nur auf die „1“. Leider merkt sich ASDIS nicht die Funktion der Zeile. Das bedeutet, daß man zunächst z.B. das Semikolon bei Kommentarzeilen noch einmal drücken muß, bzw. Shift+Leertaste bei Tabellen.

Mitunter etwas bockig wird ASDIS wenn man versucht, ein bereits schon vorhandenes Label (z.B. von einem Sprung) noch einmal zu vergeben. Die Zeile wird dann einfach nicht akzeptiert. Das passiert mitunter auch, wenn man eine Zeile mit Label nachträglich editiert hat und dann wieder N/L drückt. ASDIS meint dann, daß das Label doppelt vergeben werden soll und nimmt das vermeintlich doppelte Label nicht an. Hier hilft nur, die Zeile zunächst ohne Label abzuspeichern, dann noch einmal zu editieren und das Label neu einzutragen.

Damit haben wir nun alle Funktionen komplett, um jede Art von Listings mit ASDIS einhacken zu können. Neben dem Beispielprogramm für größere Tabellen im 3.Teil werde ich dann noch auf die restlichen Funktionen von ASDIS eingehen und ein paar Tips zum effizienten Programmieren mit ASDIS geben.

Kai Fischer email: kai@zx81.de