3000 614c 0000 T ... BASCOD 52-61
                            - 52 -
RESTORE verwenden.
Ein BASICODE-3-Programm kann mit der STOP-Taste abge-
brochen werden. Es ist dann zu empfehlen, sofort das
Kommando GOTO950 einzutippen, um auf diese Weise den
Computer in den normalen Zustand zu schalten. Wenn das
Programm die STOP-Taste ausgeschaltet hat (Subroutine
280), wird in den meisten Fällen auch STOP+RESTORE
nicht arbeiten, und das Abbrechen ist dann nur mög-
lich durch das Ausschalten des Computers.
Im C-64 ist das Lesen und Schreiben von Beständen auf
Kassette oder Diskette (anders als im BASICODE-Format,
also mit NF=2 oder grösser) nicht ganz gemäß dem Pro-
tokoll ausgeführt. In allen Fällen wird nämlich IN =
0 abgeliefert. Der Urheber/Verfasser des Üebersetzungs-
programms nimmt gern Vorschläge zur Verbesserung der
jeweiligen Subroutinen entgegen.
Die BASICODE-3-Subroutinen enthalten viel SYS-Aufträ-
ge nach Programmen in Maschinensprache im abgeschirm-
ten Gedächtnisbereich. Ein BASICODE-Programm wird al-
so nur arbeiten können, wenn in diesem Gedächnisbe-
reich die jeweilige Programmierung vor-
handen ist. Man bringe somit erst den Computer in den
BASICODE-Zustand, bevor man ein BASICODE-Programm ver-
wendet. Man lese also erst das Übersetzungsprogramm
ein und lasse dieses laufen, bevor man ein BASICODE-
3-Programm aufnimmt und startet.das ist vor allem
von Bedeutung, wenn man eingelesene BASICODE-Program-
me auf eigener Diskette speichert und sie später wie-
der von der Scheibe/Platte aus wieder einliest.
                            - 53 -
Or. S. 78 - 81
--------------
SINCLAIR ZX-SPECTRUM
--------------------
Einlesen
--------
Man lese das Übersetzungsprogramm ein mit LOAD "".
Das Übersetzungsprogramm besteht aus zwei Teilen,
die nacheinander eingelesen werden: die BASIC-Sub-
routinen und das eigentliche Übersetzungsprogramm.

Sobald das Ganze eingelesen ist, startet das Pro-
gramm von selbst und präsentiert sich. Danach gelan-
gen Sie zu BASIC. Das Programm ist jetzt fertig zum
Gebrauch.

Arbeitsweise und Wahlmöglichkeiten
----------------------------------
Die verschiedenen Teile des Übersetzungsprogramms
werden akttiviert duch das Eintippen eines Stern-
chens '*', dem ein Buchstabe folgt:
*L : Lesen Sie ein BASICODE-Programm ein.
*T : Übersetzen Sie das eingelesene Programm in
     Spectrum-BASIC.
*C : Verwandeln Sie ein Programm in Spectrum-BASIC
     zu BASICODE.
*W : Schreiben Sie das umgewandelte Programm in
     BASICODE um.
*K : 'LIST' das übersetzte Programm.
*S : 'SAVE' das übersetzte Programm in Spectrum-Format.
*B : 'Backup' des Übersetzungsprogramms.
Sie dürfen sowohl Großbuchstaben als auch Kleinbuch-
staben eintippen. Wenn Sie nur ein Sternchen oder ein 
nicht bestehendes Kommando eingeben, wird ein Menue mit
                            - 54 -
den obenstehenden Kommandos gezeigt. Sie können dann
die gewünschte Wahl treffen, inddem Sie auf die jewei-
lige Buchstabentaste drücken.
*L
Hiermit lesen Sie ein BASICODE-Programm ein. Setzen
Sie den Recorder auf den Anfangston der Aufnahme und
stellen Sie ihn auf das übliche Niveau ein. Sobald
das Einleseprogramm den Anfangston gefunden hat, er-
scheinen Streifen auf dem Schirmrand. Wenn das wirk-
liche Programm eingegeben wird, sehen Sie die Pro-
grammzeilen unten auf dem Schirm vorbeihuschen.
Solange das Einleseprogramm keinen BASICODE-Anfangs-
ton liest, wird der Schirmrand regelmaessig zwischen
Rot und Zyan flackern.
Das Einlesen hört auf, wenn Sie auf die Zwischenraum-
leiste drücken oder wenn das Gedächtnis voll ist oder
wenn das Ende des BASICODE-Programms erreicht ist.
Wenn das Einlesen erfolgreich verlaufen ist, macht
das Programm sofort weiter mit dem Übersetzen (der
nächste Schritt), sonst bekommen Sie eine Fehlermel-
dung 'BREAK into program', 'Out of memory' oder 'Ta-
pe loading error'. Sie können dann eventuell dennoch
übersetzen, indem Sie die *T-Option wählen.

*T
Diese Option wird normalerweise nach dem fehlerlosen
Einladen automatisch ausgeführt. Das in den freien Ge-
dächtnisbereich eingelesene BASICODE-Programm wird um-
gesetzt in ein Programm in Spectrum-BASIC. Jede über-
setzte Programmzeile wird auf dem Schirm gezeigt.

                            - 55 -
*C
Das ist das entgegengesetzte der Option *T: Das im
Spectrum vorhandene BASIC-Programm wird ab Zeile 1000
zu einem BASICODE-Programm im freien Gedächtnisbereich
umgesetzt.
Zuallererst sieht sich das Übersetzungsprogramm um,
ob Sie keine verbotenen Auftraege verwendet haben, wie
beispielsweise POKE, oder PLOT, und ob alle Funk-
tionen gefolgt werden durch ein Argument zwischen Klam-
mern (also nicht SIN X und TAB 10, sondern SIN (X) und
TAB (10). Sollte dennoch solch ein Fehler in Ihrem Pro-
gramm sitzen, so bekommen Sie die Meldung 'ERROR', der
die Zeile folgt, in der der Fehler steckt, mit einem
Fragezeichen hinter dem falschen Wort. Sie können dann
diese Zeile verbessern und die *C-Option aufs neue be-
ginnen.
Wenn das Programm keinen der oben genannten Fehler ent-
hält, so wird automatisch weitergemacht mit dem eigent-
lichen Übersetzen. Es ist hierbei möglich, daß Ssie ei-
ne Meldung ' Line too long at line', gefolgt von der
Zeilennummer, bekommen. Da ist dann eine Zeile entstan-
den, die länger ist als die zugelassenen 60 Zeichen.
Das Umsetzen wird hierdurch NICHT aufhören. Wenn das
Gedächtnis zu klein ist fuer das unübersetzte und über-
setzte Programm gleichzeitig, bekommen Sie nach dem
Umsetzen die Meldung 'BASIC PROGRAM OVERWRITTEN'; soll-
te das Gedächtnis auch zu klein sein fuer das äbersetz-
te Programm allein, so folgt die Fehlermeldung 'OUT
OF MEMORY'. In beiden Fällen sind Sie dann das ursprüng-
liche Programm los!
                            - 56 -

*W
Hiermit schreiben Sie das auf obige Weise umgesetz-
te Programm in BASICODE-Format in die Kassette. Sie
können das so viele Male machen wie Sie wollen. Das
in die Kassette weggeschriebene Signal wird auf dem
Schirmrand gezeigt wie beim Einlesen. Sie können das
unterbrechen mit der Zwischenraumleiste.

*K
Diese ist die List-Option (Wink: Das LIST-Schlüssel-
wort sitzt auf der K-Taste). Ein Programm, das in BA-
SICODE-Form (unmittelbar nach dem Einlesen oder vor
dem Wegschreiben) im Gedächtnis sitzt, können Sie nor-
malerweise nicht LISTen, und daher diese Option. Sie
können hiermit auch beurteilen, was nach einem Einlese-
fehler hineingekommen ist.

*S und *B
Mit der '*S'-Option können Sie das übersetzte BASICO-
de-Programm SAVEn in einem gewöhnlichen Spectrum-For-
mat, so daß Sie es später direkt einladen können. Mit
'*B' machen Sie ein 'backup' des Übersetzungsprogramms.
Sie haben bei diesen Optionen die Wahl zwischen Kas-
sette und Microdrive (sofern angeschlossen).
Anmerkung: Diese Optionen laufen über die BASIC-Zei-
len 960 bzw. 980, so daß Sie eventuell an Ihr ei-
genes Speicherungssystem anpassen können.

Arbeiten mit BASICODE-3-Beständen
---------------------------------
Die Bestandsroutinen arbeiten fuer NF=0 und NF=1 mit
BASICODE-Beständen gemäß dem Protokoll. Soll ein Da-
tenblock nach 'tape' abgeschrieben werden, so erscheint
                            - 57 -
auf der untersten Schirmzeile die Meldung 'PRESS
<PLAY> &> <REC> THEN ANY KEY' und wartet Spectrum auf einen
Tastendruck, bevor die Daten weggeschrie-
ben werden. Beim Eeinlesen bekommen Sie die Meldung
'START TAPE ...' Wenn ein Block eingelesen wird, der
neben dem erwarteten Block liegt, so erscheint die
Meldung 'WRONG RECORD - REWIND TTAPE' auf dem Schirm.

Wenn beim Einlesen eines Blocks ein Lesefehler ent-
deckt wird, kann einmal oder mehrmals die Meldung
LOAD ERROR - REWIND TAPE auf dem Schirm erscheinen.
Man spule in einem solchen Fall das Band ein Stueck-
chen zurueck, so daß der fehlerhaft gelesene Block
erneut gelesen werden kann.
Für die übrigen Werte von NF wird Microdrive als
Speicherungsmedium verwendet.
Arbeiten mit BASICODE-1
-----------------------
Es ist mit dem Übersetzungsprogramm möglich, ge-
mäß dem alten BASICODE-1-Standard alle Programmzei-
len ab Zeilennummer 2 auf Kassette zu schreiben. Da-
zu dienen zwei POKE-Aufträge, die eingetippt werden:

POKE 54580,2 und
POKE 5481,0.

Nach diesen Aufträgen ist das Arbeiten gemäß der
BASICODE-3-Norm nicht mehr möglich. Man muss das Über-
setzungsprogramm erneut einlesen.

Inbetriebnahme BASICODE-3
-------------------------
Der Textschirm umfasst 24 Zeilen mit 42 Zeichen. Ein
eventuell angeschlossener ZX-Printer oder damit ver-
gleichbarer Printer gibt ebenfalls 42 Zeichen je Re-
gel.
Der graphische Bildschirm umfaßt 192 Linien mit jeweils
256 Punkten je Linie (die zwei untersten Schirmzei-
len machen also auch mit).
Der graphische Schirm kann 24 Zeilen Text mit 42 Zei-
chen wiedergeben.
Das Geräusch umfaßt alle zugelassenen Werte von SP 
(0 bis 127); es ist jedoch nur ein Volumen möglich
(bei SV = 0 gibt Subroutine 400 kein Geräusch, bei
allen anderen Werten allerdings und in der gleichen
Stärke). Der Ton kann maximal 10 Sekunden dauern
(SD = 104).
Sie dürfen NICHT das Copyright-Symbol (Code 127) ver-
wenden, weil dieser Code in BASICODE-3 fuer die DELE-
TE-Funktion gebraucht wird. Die Kontroll-Codes der
42-zeiligen Schirmroutine sind folgendermassen:
  16 bis einschl. 23 als normal,
  24, gefolgt von N, stellt die Zahl der Schirmzei-
      len ein (...24),
  25 = PRINT Komma.
  26 = ständig 'scrollen',
  27 = man warte fuer 'scroll' auf Tastendruck,
  28 bis einschl. 31 und 127 gemaess BASICODE-3-Stan-
     dard.
Besonderheiten
--------------
Dieses Übersetzungsprogramm enthält einen speziellen
BASIC-Dolmetscher, der Spectrum-BASIC mit BASICO-
DE-3 in Übereinstimmung bringt. Sie dürfen jetzt al-
                            - 59 -
so Zeilenzahlen ueber 9999 sowie String-, Array- und
FOR-NNEXT-Variable namentlich mit maximal zwei Buch-
staben verwenden. Gleichzeitig brauchen Sie bei 'string-
arrays' nicht mehr eine Extra-Dimension anzugeben, und
es ist auch ein Index 0 zulässig.
Die Ffunktionen LEFT$, MID$ und RIGHT$ sind vorhanden,
jedoch in der Form von 'user-defined' Funktionen. Sie
müssen sie somit als FN LEFT$ usw. eintippen.
Nachbemerkung: Die bei Sinclair gebräuchliche Notie-
rung A$ (X TO Y) ist NICHT zulässig.
ON-GOTO und ON-GOSUB sind vorhanden in der Form GOTO/
GOSUB * V; 2000, 3000, 4000 ... anstelle der gebräuch-
lichen ON V GOTTO/GOSUB 2000, 3000, 4000 ... (man le-
se das Sternchen als ON).
Es ist nun aber wohl ein 'CLEAR, A' erforderlich (vgl.
Zeile 20), dessen Wert abhängig ist von dem gesamten
Gedächtnisraum an 'strings', die Sie mit INPUT und
'string'-Kopplung zusammenstellen. Fuer die meisten
Programme genügt ein Wert von 100 bis 250. Wenn Sie 
dieses zu klein wählen, bekommen Sie eine Fehlermel-
dung 'Out of string space'. Berücksichtigen Sie vor
allem die obenstehenden Dinge beim Schreiben eines
BASICODE-3-Programms. Das Umsetzprogramm kann nicht
alle Fehler aufstöbern!
Bei Verwendung von 'diskinterfaces' anders als
die Sinclair Interface1 können Sie Schwierigkeiten 
bekommen bei Aufträgen, die den Gebrauch der 'inter-
face' betreffen. Vermeiden Sie hierbei die Verwen-
dung von Variablen und tippen Sie Zahlen wie VAL
"getal" ein.
                            - 60 -
Nachbemerkung: Zeile 1 darf niemals aus dem Überset-
zungsprogramm entfernt werden!
Ohhne diese Zeile ist das Arbeiten mit BASICODE nicht
zuverlässig.
 

                     Jan Bredenbeek

                            - 61 -

Or. S. 104 - 113
----------------

Anhang 2
--------
Der Unterschied zwischen BASICODE-2 und BASICODE-3
--------------------------------------------------
Dieser Anhang behandelt die Unterschiede zwischen
BASICODE-2 und BASICODE-3. Das eine und das andere
wird speziell fuer diejenigen erwähnt, die mit BASI-
CODE-2 vertraut sind und in aller Kuerze überschauen
möchten, was sich an BASICODE-3 verändert hat und
was ihm hinzugefügt wurde.
A2.1 Allgemeine Vereinbarungen
------------------------------
In BASICODE-2 wurde der Bildschirm definiert als 24
Zeilen von 40 Zeichen. Die Computer, die mehr oder
weniger zu bieten hatten, erwiesen sich in einigen
Programmen als abweichend reagierend. In BA-
SICODE-3 ist daher das Maß von 24 zu 40 nur als ver-
nünftiger Durchschnitt erwähnt. Jedes Programm kann
sich jetzt einfach anpassen an das wirkliche Bild-
format und zwar dadurch, daß in Zeile 1010 in HO
und VE die maximal zulässigen Werte fuer die jewei-
ligen Computer verfügbar sind.
Neu ist der graphische Bildschirm, der ein eigenes
Koordinatensystem bekommen hat: (0,0) im linken obe-
eren Winkel, (1,0) genau neben dem rechten oberen
Winkel und (0,1) genau unter dem linken unteren Win-
kel. Des weiteren wurde festgelegt, daß die Höhe des
graphischen Bildschirms genau 3/4 der Breite beträgt.