===================================
= +++ MRB Z 1013 +++ =
= AUTOSTART BEIM TINY-INTERPRETER =
= =
= (c) by rehn-soft FEB/88 =
===================================
Der 3k-BASIC-Interpreter von RIESA benutzt nicht den Bereich
von BA6-FFFh. Programme werden von diesem Interpreter erst
ab 1152h abgelegt. Damit kann der Interpreter im Bereich von
BA6-FFFh erweitert werden. Solche Erweiterungen sind jedoch
genau zu durchdenken. Durch eine Reihe von Basic-Befehlen
laesst sich der Interpreter steuern. Diese Befehle koennen nur
im Direkt-Modus, also ohne Zeilennummer, abgearbeitet werden.
Es sind dies die Befehle:
LIST , RUN , NEW , END , CSAVE , CLOAD , BYE
Alle anderen Befehle koennen zwar auch im Direkt-Modus abgear-
beitet werden (mit Einschraenkungen) , stellen aber im allge-
meinen Programmanweisungen dar und werden unter einer Zeilen-
nummer als Programm abgelegt. Damit wird deutlich, dass Aen-
derungen in der Bearbeitung solcher Anweisungen zu Veraen-
derungen des Interpreters fuehren, die meist keine Kompatibi-
litaet zu eigenen oder zu fremden Programmen gewaehrleisten.
Ergaenzungen, die die Interpretersteuerung betreffen, sind
dagegen problemlos implementierbar. Die Moeglichkeit des
"AUTO-STARTs" soll gezeigt werden. Da hier aus Gruenden der
Einfachheit der Interpreter waerend der Bearbeitung des
"CLOAD"-Befehls veraendert wird, ist der Interpreter aller-
dings nicht mehr ROM-faehig.
PRINZIP:
--------
Nach Bearbeitung eines Basic-Befehls kehrt der Interpeter
stets zur RESTART-Routine zurueck. Das wird mit der Meldung
"READY,>" deutlich. So auch nach Laden eines Programms von der
Kassette. Durch die unten beschriebenen Veraenderungen wird
das fuer den "CLOAD"-Befehl anders gestaltet. Die erste Ver-
aenderung betrifft diesen Ruecksprung zum RESTART. An dessen
Stelle wird ein anderer Sprung eingetragen. Und zwar soll der
Interpreter nach dem "CLOAD"-Befehl zuerst pruefen, ob ein
AUTO-START vorgesehen wurde. Ist das der Fall, erfolgt ein
Sprung zur RUN-Routine. Falls nicht, kehrt der Interpreter wie
ueblich zum RESTART zurueck. Die zweite Veraenderung betrifft
jetzt den Test und die Ausfuehrung des AUTO-STARTs. Da neben
dem eigentlichen Basic-Programm auch alle Merkzellen des
Interpreters bei "CSAVE" mit ueberspielt werden, ist es so
moeglich, in einer dieser Merkzellen eine Information ueber
einen vorgesehenen AUTO-START dem Programm hinzuzufuegen. Als
AUTO-START-Zelle fungiert hier die Zelle 1050h. Wird hier
eine "0" eingetragen, so wird nach dem Laden des Programms der
AUTO-START verhindert. Alle anderen Werte erzeugen den AUTO-
START. Die AUTO-START-Information kann also vor dem Abspei-
chern eines Programms mit "POKE HEX (1050),X" ( x=0.....kein
AUTO-START , x<>0.....AUTO-START) festgelegt werden. Nach
Laden eines Programms springt der Interpreter also zur AUTO-
START-Routine. Hier erfolgt zuerst ein Test, ob der AUTO-START
erlaubt ist. Ist das der Fall, wird die RESTART-Routine so
veraendert, dass der Interpreter das Programm selbstaendig
startet. Die Aenderung in der RESTART-Routine wird jedoch so-
fort wieder rueckgaengig gemacht, um nach der selbstgestar-
teten Abarbeitung eines Programms die originale RESTART-
Routine wieder vorliegen zu haben. Wenn der AUTO-START nicht
erlaubt ist, wird die RESTART-Routine nicht veraendert.
AENDERUNGEN:
------------
1.: Auf Adresse A09h sind folgende 3 Bytes einzutragen:
C3 A7 0B
2.: Ab Adresse BA7h ist die AUTO-START-Routine neu aufzu-
nehmen:
BA7: 3A 50 10 LD A,(1050H)
BAA: B7 OR A
BAB: CA BB 01 JPZ RESTART
BAE: 21 DE 01 LD HL,01DEH
BB1: 36 C3 LD (HL),0C3H
BB3: 23 INC HL
BB4: 11 BD 0B LD DE,0BBDH
BB7: 73 LD (HL),E
BB8: 23 INC HL
BB9: 72 LD (HL),D
BBA: C3 BB 01 JMP RESTART
BBD: 21 DE 01 LD HL,01DEH
BC0: 36 CD LD (HL),0CDH
BC2: 23 INC HL
BC3: 11 6C 06 LD DE,066CH
BC6: 73 LD (HL),E
BC7: 23 INC HL
BC8: 72 LD (HL),D
BC9: C3 4F 02 JMP 024FH
Die Aenderungen am Interpreter sind mit dem M-Kommando des
Monitors vorzunehmen. Danach ist der geaenderte Interpreter
im Bereich von 100h-BCFh neu zu ueberspielen.
Beim Autor steht eine bereits weiter bearbeitete Variante des
3k-Interpreters zur Verfuegung.
SCHWARZENBERG, FEB/88
UWE REHN