2. Generelle Eigenschaften

Aus CBMPET.DE

Wechseln zu: Navigation, Suche
2. Generelle Eigenschaften

2.1 Auto-Start

Wenn LOS-96 die erste Datei auf Diskette ist, kann nach
dem Einschalten der Anlage LOS-96 mit SHIFT/RUN geladen
und gestartet werden.

Anderenfalls wird LOS-96 aus BASIC-4 durch DLOAD "LOS*"
geladen und mit RUN gestartet.

In jedem Fall versucht LOS-96 nach seinem Start das
Programm "START*" von einer der beiden Disketten von
Gerät 8 zu laden und zu starten. Dadurch kann das 8096-
System nach dem Einschalten durch einen Tastendruck bis
auf Anwenderprogrammebene gebracht werden.

Ist das Programm "START*" nicht vorhanden, wird mit FILE
NOT FOUND ERROR abgebrochen. Diese Meldung hat für
Rechner und Floppy keine weiteren Konsequenzen; der
Rechner wartet im Direktmodus auf Anweisungen.

Durch READY (ohne Punkt) können Sie sehen, daß der
Rechner nicht unter BASIC-4 (READY.) arbeitet.

2.2 BASIC-4-Programme laden

BASIC-4 Programme laufen unter LOS-96, sofern
ausschließlich in BASIC programmiert wurde. Da aber
BASIC-4 Programme ab Adresse 1025 geladen werden und LOS-
96-Programme normalerweise ab 65537, muß durch ein Komma
unmittelbar nach LOAD erzwungen werden, daß das Programm
an den aktuellen Anfang des BASIC-Programmbereiches
geladen wird:

load , "altes programm"

ACHTUNG:

Wenn 'alte' BASIC-Programme durch load ohne Komma geladen
werden, stürzt LOS-96 ab, da das BASIC-Programm ins
Betriebssystem geladen wird!
  __________________________________________________________________________
2.3 Aufteilung des Speicherplatzes


                                              physik.   logisch
128K   ------------------------------------    65536     131072
                     Vektoren und
                     Umschalter
                     ---------------------     65520     131056
                     ---------------------    (52/53)
                     Strings
                     ---------------------    (48/49)
      Variablenspe-  ---------------------    (46/47)
      icher          Indizierte Variable
                     (Felder)
                     ---------------------    (44/45)
                     Einfache Variable        (42/43)
96K    ------------------------------------    32768     98304
96K    ------------------------------------    65536     98304
                     Vektoren und
                     Umschalter
                     ---------------------     65520     98288
                     ---------------------   (241/242)
      Programmspe-   BASIC - Stack
      icher          ---------------------   (239/240)
                     ---------------------   (248/249)
                     BASIC - Programm
                     ---------------------    (40/41)
64K    ------------------------------------    32768     65536
64K    ------------------------------------    65536     65536
      ROM - Bereich (ungenutzt) / E-A-
      Ports / Bildschirm (wie 8032)
32K    ------------------------------------    32768     32768
                     Verlängerung für
                     BASIC-PRG oder
                     Variable oder eigene
                     Maschinenprog. oder
                     System-Erweiterungen
                     ---------------------  (1252/1253)
                     Betriebssystem
      Betriebssystem ---------------------     1024
                     BS-Arbeitsbereich
                     ---------------------      768
                     Input-Puffer
                     ---------------------      512
                     Prozessor-Stack
                     ---------------------      256
                     Zeropage
0      ------------------------------------                0
  __________________________________________________________________________
2.4   Logische und physikalische Adressen

Da der Prozessor 6502 nur 64K adressieren kann, muß der
logische Adressraum von 128K durch Umschalten (Paging)
von Speicherbereichen auf den physikalischen Adressraum
von 64K abgebildet werden. Eine kleine Skizze soll die
Anordnung der Speicherbänke veranschaulichen:



    32 - 64    64 - 96   96 - 128
64K--------- ---------- ----------
      ROM   :    PRG   :   VAR
32K-------------------------------
     B E T R I E B S S Y S T E M
0  -------------------------------


Der gesamte logische Adressraum kann durch die BASIC-
Befehle POKE, PEEK, SYS und WAIT erreicht werden. Die
erforderlichen Umschaltungen werden automatisch
vorgenommen.

Dagegen enthalten alle Zeiger (z.B. 52/53) physikalische
Adressen! Diese Diskrepanz ist unbedingt zu beachten,
wenn durch Zeiger die Aufteilung des Arbeitsspeichers
manipuliert werden soll.


2.5 Änderung der Aufteilung des BASIC-Speicherbereiches

Der 8096 verfügt über 96K RAM. Davon benötigt das
Betriebssystem 32K. Die 64K für das BASIC-Programm teilen
sich auf in 32K für das Programm und 32K für die
Variablen.

Für Sonderfälle sind folgende Änderungen der Standard-
Einteilung möglich:

Zwischen der Obergrenze der Variablenverwaltung (52/53)
und der Adresse 65520 kann ein vor BASIC geschützter
Bereich gebildet werden, indem (52/53) entsprechend
heruntergesetzt wird. Wollen Sie z.B. 10K reservieren,
schreiben Sie an den Anfang Ihres Programmes die
Befehlsfolge:

10 a = 20000
 : int(a/256)
 : poke 52,a-h*256
 : poke 53,h
 : clr

Achten Sie unbedingt darauf, daß a nicht größer als 65519
sein darf; dies würde zum Absturz des Systems führen!

Analog dazu können Sie am oberen Ende des
Programmbereiches ebenfalls einen geschützten Bereich
reservieren, indem Sie die Zellen (241/242) mit den
entsprechenden Werten versehen. Die Grenze 65519 gilt
hier ebenfalls.

Alternativ oder zusätzlich zur Reservierung am oberen
Ende kann durch Änderung der Werte in (42/43) bzw.
(40/41) am unteren Ende ein reservierter Bereich
geschaffen werden, indem die Inhalte der Zeiger größer
als 32766 gemacht werden.

Umgekehrt kann entweder der Programm oder
Variablenbereich (exklusiv!) nach unten verlängert
werden, indem die Inhalte der Zeiger kleiner als 32768
gemacht werden. Dabei dürfen aber das Betriebssystem
selbst und eventuelle Erweiterungsbereiche nicht verletzt
werden.
  __________________________________________________________________________
Bei Änderung des Programm-Anfanges ist folgendes zu
beachten:

In die Zelle Untergrenze-1 muß 0 gepokt werden:

10 a = 30000
 : int(a/256)
 : pake 40,a-h*256
 : poke 41,h
 : if a-1 (kleiner als) 32768 then of=0
 : eise of=32768
20 poke a-l+of,0
 : new

Diese Anweisungen können Sie nur dann im Programm
ausführen, wenn a nicht inner-
halb des jetzigen Programmbereiches (40/41) - (248/249)
liegt. Anderenfalls müssen Sie diese Befehle im
Direktmodus ausführen.

LOAD lädt Programme normalerweise ab der Stelle, ab der
sie abgespeichert wurden. Wenn Sie nicht sicher sind, ob
ein zu ladendes Programm ab der Stelle (40/41)
abgespeichert wurde, müssen Sie es durch 'load , "name'
(mit Komma) laden!


2.6 BASIC-Stack

Die Verwaltung der GOSUB-RETURN und FOR-NEXT Strukturen
liegt nicht mehr wie beim 8032 im Prozessorstack, sondern
in einem eigenen BASIC-Stack. Dieser Stack wächst ab der
Obergrenze des Programmspeichers nach unten dem
Programmende entgegen. Ähnlich wie bei der
Stringverwaltung teilt sich also das Programm und der
Stack dynamisch einen Speicherbereich.

Dies hat folgende Konsequenzen: Die beim 8032 vorhandene
Begrenzung auf z.B. maximal 26 GOSUB-Ebenen entfällt. In
der Regel wird die neue Fehlermeldung

BASIC STACK OVERFLOW ERROR

also kaum vorkommen. Andererseits haben Sie nicht eine
einzige Ebene zur Verfügung, wenn Sie den BASIC-Speicher
bis zum letzten Byte mit Programm vollstopfen. Achten Sie
also darauf, da_ Sie nach dem Laden eines Programms
wenigstens 200 Bytes frei haben (fre(0)). Exakt benötigt
wie beim 8032 jedes GOSUB 5 Bytes und jede FOR-Schleife
18 Bytes auf dem Stack. Für 20 Unterprogramm-Ebenen und 5
Schleifen-Ebenen benötigen Sie also 190 Bytes
(20*5+10*18) für den Stack.

Die Abwicklung der Ausdrucksauswertung liegt weiterhin im
Prozessor-Stack, hier gilt also noch die Einschränkung
auf 10 Klammerebenen.

Der Zeiger auf die Untergrenze des Stack steht in
(239/240). Der Stack kann nach unten wachsen bis
(248/249), der Obergrenze des BASIC-Programms.

Beachten Sie in Zusammenhang mit dem Stack die neue
Anweisung DISPOSE.
  __________________________________________________________________________
2.7      Programmänderung ohne Variablenveriust / Overlay

Durch die aus anderen Gründen erforderliche Trennung von
Programm- und Variablenspeicher ergibt sich zwangsläufig,
daß Variable wegen Programmänderungen nicht
notwendigerweise gelöscht werden müssen. Dies bringt sehr
große Annehmlichkeiten in der Testphase.

Aus den-selben Grund ist für Programmoverlay nun nicht
mehr die Reservierung des benötigten Speicherplatzes
erforderlich.

In der Stringverwaltung mußte die Piatz-Optimierung
entfallen, die String-Konstante im Programm verwaltet
hat. Ausnahmslos jeder Inhalt von Stringvariablen steht
nun im Stringarbeitsbereich! Damit ist eine für Overlay
tückische Eigenschaft der Speicherverwaltung entfernt
worden.

Trotzdem sind bei Overlay bzw. nach Programmänderungen
einige Punkte zu beachten:

Wie beim 8032 legt die Definition einer Funktion (DEF FN)
einen Zeiger in einer Pseudovariablen ab. Dieser Zeiger
kennzeichnet die Stelle, wo die Funktion im
Programmspeicher beginnt. Wird nun nach Abarbeitung der
Definition das Programm geändert, sei es durch Änderungen
von Hand oder durch LOAD beim Overlay, wird bei Aufruf
der Funktion eine Fehlermeidung erfolgen, da an der durch
den Zeiger gemerkten Stelle nun etwas nicht verwertbares
steht.

Funktionsdefinitionen müssen also nach Programmänderungen
wiederholt werden!

Für READ-DATA, GOSUB-RETURN und FOR-NEXT existieren
ebenfalls Zeiger, die durch Programmänderungen nicht
verändert werden, also potentiell falsch sein werden.
Wenn also das Programm nach Änderungen auf READ, RETURN
oder NEXT läuft, kann es zu Fehlermeldungen kommen.

Strenggenommen sind zwei Fälle zu unterscheiden. Bei
Änderungen am Programm verschiebt sich nur der
Programmbereich ab der Änderungsstelle bis zum
Programmende. Der Bereich vom Programmanfang bis zur
Änderungsstelle bleibt dagegen unverändert. Wenn die
entsprechenden Zeiger auf den vorderen Bereich verweisen,
gibt es beim Weiterlauf keine Komplikationen.

Schließlich ist noch CONT zu erwähnen. Sogar diese
Anweisung ist nach Programmänderungen prinzipiell
zugelassen. Selbstverständlich gelten die eben gemachten
Hinweise entsprechend.

Zusammenfassend kann man sagen: Wenn Sie die gemachten
Hinweise und Unterscheidungen verstehen und in jedem
Einzelfall anwenden, können Sie nach Änderungen am
Programm das Programm durch CONT oder GOTO warm starten.

Sollten Sie aber diese Überlegungen nicht durchführen
wollen, können Sie, wie bisher ausschlie_lich möglich,
das Programm durch RUN kalt starten. Allerdings dürfen
Sie in diesem Fall nicht RUN zeile durch GOTO zeile
ersetzen, da sonst doch warm gestartet wird.
  __________________________________________________________________________
2.8 Neue Tasten-Funktionen durch ESC

Die ESC-Taste wird wie eine CONTROL-Taste behandelt; wird
sie gleichzeitig mit anderen Tasten gedrückt, haben diese
eine Sonderbedeutung bzw. erzeugen andere Codes als sie
bisher über die Tastatur erreichbar waren:

ESC

CURS UP          Bildschirm nach unten rollen
CURS DOWN        Bildschirm nach oben rollen
(SHIFT)
CURS RIGHT       Zeile rechts vom Cursor löschen
CURS LEFT        Zeile links vom Cursor löschen
(SHIFT)
DEL              Zeile löschen
INST (SHIFT)     Zeile einfügen
HOME             Bildschirmfenster links oben definieren
CLR (SHIFT)      Bildschirmfenster rechts unten
                 definieren
TAB              nächstes Blank suchen
TAB (SHIFT)      nächstes Nicht-Blank suchen
STOP             Sprung in Monitor (wird im Interrupt
                 abgefragt)
RETURN           Cursor in erste Spalte der nächsten
                 Zeile, Flags löschen, Zeile nicht
                 übernehmen

Bei diesen Funktionen ist die automatische Dauerfunktion
unterbunden, da ihr unbeabsichtigtes Einsetzen Ärger
verursachen kann. Mit der REPEAT-Taste ist aber auch hier
Dauerfunktion möglich.

Werden die Buchstabentasten gleichzeitig mit ESC
gedrückt, so ergeben sich die ASCII-Control-Codes von 0
bis 31 (z.B. ESC a = 1).

Wird die ESC-Taste alleine gedrückt, so hat sie dieselbe
Wirkung wie beim 8032. Wird sie zusammen mit anderen
Tasten gedrückt, so hat sie nicht diese flag-löschende
Wirkung! (Ausnahme: RETURN)


2.9 Automatische Zeilennummerierung

Bei der Eingabe von Programmzeilen wird die nächste
Zeilennummer automatisch vorgegeben, wenn die
Zeilennummer der gerade durch RETURN übergebenen Zeile in
der ersten Spalte beginnt. Dies ist bei der Eingabe von
neuen Zeilen die Regel.

Die Differenz aus der gerade eingegebenen Nummer zur
vorhergehenden im Programm bestimmt die Differenz zur
nächsten Nummer. Vorgegebene Nummern können bei Bedarf
ohne weiteres geändert werden.

Beispiel:

Die Zeile 15 ist bereits eingegeben und Sie übergeben
durch RETURN die Zeile
20.Als Vorgabe erhalten Sie Zeile 25:

15 ... (bereits eingegeben)
20     (gerade durch RETURN übergeben)
25     (Vorgabe durch auto-number)

Die nächste Nummer wird nicht vorgegeben, wenn sie
bereits im Programm existiert, oder wenn zwischen der
vorzugebenden und der eben durch RETURN Übergebenen
bereits eine im Programm vorkommt.
  __________________________________________________________________________
Beispiel:

15 ... (bereits vorhanden)
25 ... (bereits vorhanden)
20 ... (gerade durch RETURN übergeben)

25 wird nicht vorgegeben, da sonst unbeabsichtigt eine
Zeile gelöscht bzw. überschrieben werden könnte.

15 ... (bereits vorhanden)
25 ... (bereits vorhanden)
21 ... (gerade durch RETURN übergeben)

27 müsste vorgegeben werden. Da dann aber die Zeile 25
zwischen 21 und 27 liegen würde, wird nichts vorgegeben,
da es normalerweise nicht beabsichtigt ist, zwischen
automatisch nummerierten Zeilen 'heimlich' noch andere zu
haben.

Die automatische Auto-Funktion ist anfangs etwas
ungewohnt, wenn Sie gewöhnt sind, in Nummern-Blöcken zu
programmieren.

Beispiel:

Die Zeilen 10,20 und 30 seien vorhanden und Sie geben
Zeile 100 ein, weil ein neuer Programmabschnitt beginnt.
Dann wird als nächste Zeile 170 vorgegeben. Überschreiben
Sie die 170 einfach durch 110 und die nächste Vorgabe
wird die dadurch definierte Schrittweite enthalten.

Sobald die Zeilennummer nicht in der ersten Spalte steht
(z.B. nach LIST), ist Auto abgeschaltet. Dadurch werden
u.a. unbeabsichtigte Vorgaben beim Edieren von bereits
vorhandenen Programmen vermieden.

Eine Zeilennummer mit leerer Zeile dahinter löscht die
entsprechende Zeile und schaltet AUTO ab.

2.10 Eingabe überlanger Zeilen

Der Interpreter des 8096 ist in der Lage, bis zu 250
Bytes lange Zeilen zu verarbeiten. Diese Länge bezieht
sich auf den übersetzten Zustand, wenn die Befehlswörter
in jeweils 1 Byte codiert sind. Eine derart lange Zeile
wird auf dem Bildschirm mehrere Zeilen in Anspruch
nehmen. Um sie dennoch ein- und ausgeben zu können, sind
die folgenden Regeln wichtig:

Der Anfang einer Programmzeile, also die erste
Bildschirmzeile von mehreren, die eine Programmzeile
bilden sollen, muß in Spalte 1 oder 2 beginnen! Alle
Folgezeilen müssen in Spalte 3 oder dahinter beginnen.
Das Ende einer Programmzeile wird durch eine Leerzeile
oder durch eine Zeile, die in Spalte 1 oder 2 beginnt,
angegeben.

Die Tastenfunktionen DEL und INST beziehen sich immer auf
eine ganze Programmzeile. Wenn in Spalte 80 ein Zeichen
geschrieben wurde, wird das nächste automatisch in Spalte
3 (nicht 1) geschrieben.
  __________________________________________________________________________
Bei der Eingabe werden alle Blanks, die nicht zwischen
Anführungszeichen oder hinter REM stehen, ignoriert. Dies
hat zwei Konsequenzen: Erstens kann nun LIST Blanks nach
Statements und einigen bestimmten Zeichen ausgeben,
wodurch die Lesbarkeit wesentlich verbessert wird.
Trotzdem artet die Übernahme solcher Zeilen nicht in
Platzverschwendung aus. Zweitens können Sie z.B.
Statement für Statement untereinander schreiben und
trotzdem wird eine kompakte Programmzeile daraus. Die
Sonderform LIST, (Komma nach LIST) gibt Programmzeiien
sogar in dieser Form aus:

10 for i = 1 to 20
 : a = a-5
 : next

In derselben Form kann die Zeile wieder durch RETURN
übernommen werden.

Es hat keinen Sinn, hier alle Einzelheiten des Programm-
Zeilen-Editors zu erklären. Geben Sie einfach
Programmzeilen verschiedener Längen ein. Sie werden
sehen, der Editor denkt ganz brauchbar mit.

Drei Anmerkungen zu Sonderfällen sollen aber
Überraschungen vermeiden helfen:

Wenn die Zeile intern länger als 250 Bytes würde, darf
sie nicht übernommen werden. In diesem Fall blinkt der
Cursor auf dem letztmöglichen Zeichen, und ein Läuten
ertönt. Gehen Sie dann mit dem Cursor so weit nach links,
bis Sie eine passende Stelle für das Zeilenende finden
und löschen Sie den überstehenden Teil z.B. durch ESC
CURSOR RECHTS und drücken RETURN.

Innerhalb von Anführungszeichen werden Blanks nicht
ignoriert. Wenn Sie nun innerhalb einer überlangen
Proqrammzeile zusätzlich eine Stringkonstante einbauen
wollen, und nach dem öffnen der Anführungszeichen INST
drücken, um Platz zu schaffen, werden sofort alle
Folgezeilen mitgeschoben, obwohl in derselben Zelle noch
genügend Platz wäre. Diese Reaktion zeigt, daß der Editor
ohne weiteres zeilenüberlappende Stringkonstanten
behandeln kann.

Da eine Programmzeile mehr als 25 Statements haben kann,
kann eine durch LIST, (LIST und Komma) ausgegebene Zeile
nicht immer übernommen werden.

Wenn Sie anfangs noch unsicher sind, wo Zeilen enden,
schaffen Sie einfach über und unter den einzugebenden
Zeilen Leerzeilen. Dieses Kriterium ist am leichtesten zu
verstehen. Vor allem bei Kommandos im Direktmodus
übersieht man manchmal in der Eile eine ungewoilte
Zusammengehörigkeit von Zeilen und handelt sich dadurch
Fehlermeidungen ein.

Die Taste RETURN hat zusammen mit zwei anderen Tasten
drei verschiedene Wirkungen: RETURN alleine übernimmt
eine evt. überlange Programmzeile und stellt den Cursor
in die erste oder zweite Spalte der nächsten
Programmzeile (s. Auto).

SHIFT-RETURN übernimmt nicht, löscht keine Flags und
bringt den Cursor in die dritte Spalte der nächsten
Bildschirmzeile.

ESC-RETURN übernimmt nicht, löscht das Control- und RVS-
Flag (Anführungszeichen /lnsert) und bringt den Cursor in
die erste Spalte der nächsten Bildschirmzeile.

Den gleichen Effekt können Sie auch mit Hilfe der Cursor-
Tasten erzielen. Die letzten beiden RETURN-Funktionen
sollen nur ein Sonder-'Tabulator' sein.

Achtung: Die Eigenschaften bezüglich überlanger Zeilen
hat der Editor nur im Direktmodus, nicht aber im INPUT-
Modus!
  __________________________________________________________________________
2.11 Über den Gebrauch von vielen Statements in einer
Prograrnm-Zeile

Manche Programmierer lehnen mehrere Statements hinter
einer Zeilennummer ab, weil das Programm dadurch
unleserlich werde. Abgesehen davon, daß man von dieser
Möglichkeit nicht Gebrauch machen muß, wird die
Leserlichkeit durch die Funktion 'LIST,100-300'
mindestens gleichgestellt der Nummerierung jeder
einzelnen Anweisung.

Und abgesehen davon, daß mehrere Statements pro
Zeilennummer aufgrund der internen Organisation Platz und
Ausführungszeit sparen, kann so ein Programm durchaus
logisch übersichtlicher sein- Ein BASIC-Programm ist u.a.
deshalb schwer zu lesen, weil an jede Stelle ein Sprung
erfolgen kann und u.a. dadurch Anweisungs-Blöcke nicht zu
erkennen sind. Wenn man nun konsequent ganze Blöcke
hinter eine Zeilennummer schreibt, sind sie ohne weiteres
als Einheit zu erkennen. Vor allem bei FOR-NEXT Schleifen
oder IF THEN ELSE Entscheidungen wird dadurch auch
optisch Struktur geschaffen (IF THEN ELSE muß sogar in 1
Zeile stehen).

Die Möglichkeiten des Programm-Editors machen ein
nachträgliches Teilen oder Zusammenfügen von Zeilen zu
einer Angelegenheit von Sekunden. Deshalb können unnötig
getrennte Zeilen jederzeit zusammengefügt, bzw. zu lange
Zeilen leicht getrennt werden.

2.12 Fehlermeidungen

Wenn das Programm mit einer Fehlermeldung 'aussteigt',
wird automatisch die betreffende Programmzeile gelistet
und der Cursor an die Stelle gesetzt, die den Interpreter
zu dieser üblicherweise nervenaufreibenden Maßnahme
getrieben hat. Damit sollten Sie in der Lage sein, sich
in seine Schwierigkeiten zu versetzen. Natürlich dürfen
Sie die angezeigte Fehlerstelle nicht zu wörtlich nehmen,
sie ist nur ein ungefährer Hinweis.


2.13 Rekorderverwaltung und Floppy-Voreinstellung

Die Rekorderverwaltung wurde vollständig entfernt, da
dieses Speichermedium den Anforderungen eines Systems mit
64K Arbeitsspeicher nicht mehr gewachsen ist.

Für die Befehle LOAD, SAVE und VERIFY bedeutet dies, daß
der Ersatzwert für die nicht angegebene Gerätenummer
nicht mehr 1, sondern 8 ist.

2.14 INPUT kann 255 Bytes lesen

Da dieBegrenzung auf 80 Zeichen vor allem in Zusammenhang
mit REL-Dateien einige Probleme gebracht hat, wurde der
BASIC-INPUT-BUFFER auf 1 Page (256 Bytes) verlängert,
wodurch nun der maximale Inhalt eines Strings gelesen
werden kann. (Trotzdem wurde durch GET$ eine
bemerkenswerte Alternative zum INPUT implementiert)

2.15 Zero-Page u.a. Adressen

Die Verwendung der Zero-Page ist in wesentlichen Teilen
gleich geblieben. Einige Zellen haben zusätzlich zu ihrer
bisherigen Bedeutung neue Verwendungen erfahren. Die
Zellen für die Rekorderverwaltung wurden zum Teil neu
belegt.

Der Input-Buffer belegt die ganze Page 2.
Der Tastaturpuffer liegt ab Zelle 798.
  __________________________________________________________________________
2.16     ROM

Zweck

ROM schaltet das ROM-Betriebssystem (BASIC-4) ein und
dadurch das RAM-Betriebssystem (LOS-96) aus.

Format

ROM

Anmerkungen

Beim Start von LOS-96 wird Zera-Page und Stack gerettet.
Durch ROM werden diese geretteten Bereiche gegen
diejenigen von LOS-96 ausgetauscht. Dadurch kann man
zwischen den beiden Maschinen umschalten, ohne RESET
machen zu müssen.

Wird diese Möglichkeit nicht benötigt, kann der für den
Austausch benötigte Speicherbereich für andere Zwecke
verwendet werden. ROM wird dann normalerweise zum Absturz
führen, so daß man besser gleich durch SYS 64790 in die
RESET-Routine springt.

Der Austauschbereich ist 784 Bytes lang und liegt ab
(1252/1253).

Sofern nicht durch USR o.ä. der Sprung in den Zellen
0,1,2 verändert wurde, kann durch SYS 0 nach ROM von
BASIC-4 aus wieder ein Warmstart von LOS-96 durchgeführt
werden. Die 96-er BASIC-Maschine wird dadurch wieder in
den Zustand versetzt, den sie bei ROM hatte.

Wurde allerdings nach dem Start von LOS-96 der
Austauschbereich anderweitig verwendet, so werden diese
Informationen zerstört!
Persönliche Werkzeuge