Elementare Hardware von Mikroprocessoren,.hpr 1991
Maschinen- und Assemblersprache des MC68000,
Osterman, 1987, Vogel-Verlag (QL-Programme mangelhaft bis
unbrauchbar)
Floppy Disc Standard, Sinclair
Relocatable Object File Standard, Sinclair,
deutsch im GST-ASSEMBLER-Handbuch, .hpr 1990
Trump Card Toolkit User Manual, Miracle Systems, 1987
QL Assembly Language Programming, Colin Opie, MacGraw-Hill, 1984
IO2, Code- und Assemblertext-Sammlung für den QL, 1990+
Sinclair Service Manual, Sinclair,
1985
QDOS Reference Manual, bei J.Merz, 1991
(Namen sind SMSx-Referenzen, die gesamte Dokumentation ist
stark
(SMSQ-lastig und das wirkliche QDOS betreffend mitunter
falsch.
Pointer Environment
mit ptr_gen 1.42 und wman 1.34, dazu Dokumente unklarer Herkunft.
The Hutchinson QL Series, 1984
Anleitungen zu Basic und den Psion-Programmen
Computer Kontakt, Jahrgang 1988
19.Das Internet
Sinclair QL User Guide, deutsche
Ausgabe
QL-Today, deutsch & englisch, seit 1997.
Jan Jones, "QL SuperBASIC, The Definitive
Handbook"
Verfügbarkeit entsprechender Quellen ist
unerläßlich
20. Sinclair QL User Guide, deutsche Ausgabe, zum MGG-ROM
6. MC68008, Motorola, s.o., zum 68008-Processor
1.2 ** Zur 2. Auflage, 6/1998
Es wurden Angaben zur QXL-Karte, dem QXL.WIN-Aufzeichnungsformat und zu
den Varianten des SMSQ rsp. SMSQ/E aufgenommen, Fehler korrigiert und
einiges inzwischen überflüssige entfernt.
Diese Textsammlung ist Tabellenwerk und Beschreibung zum QDOS, dem
Betriebssystem des QL, letztere vom persönlichen Umgang damit
geprägt und betreffs der dabei gewonnenen Eindrücke durchaus
subjektiv abgefaßt.
Der Text basiert auf der Sachlage Anfang 1995. Soweit es bei der
geringen Mitteilungsfreudigkeit der am QDOS herumbosselnden Autoren
möglich war, wurde er so gut es ging auf den Stand Anfang 1998
aktualisiert. Die Arbeiten am QDOS wurden 1985 mit der MGx-ROM-Serie
abgeschlossen. Seitdem sind etliche mehr oder weniger gelungene Nachahmungen
und Emulatoren für andere Rechner erschienen. Das Copyright zum QDOS
liegt inzwischen bei Amstrad, der Code des ROM-Originals in Variante JS(?)
wurde zur nichtkommerziellen Verwendung in Einzelfällen freigegeben.
Das QDOS ist ein offenes erweiterbares und eben darum umfassend
dokumentiertes System, das JEDEM zur Verfügung steht, der einen
entsprechenden Rechner betreibt. Daran sollten sich Nutzer und insbes.
Programmierer halten und es nicht unnötig verderben. Man wird sie an
ihren eigenen Verhalten messen dürfen: Versteckte "Neuerungen" und
Gemaule wegen fehlender Dokumentation anderer lassen eher ängstlich
verborgene Inkompetenz vermuten, als bahnbrechende Eigenentwicklungen, die
es zu sichern gilt.
In diesem Zusammenhang mag man auch die Anmerkungen zum SMSQ
sehen. Es wird zwar standhaft dessen QDOS-Compatibilität behauptet,
diese ist jedoch keineswegs gegeben! Weil aber neben den mittlerweile
ausgereiften und außerordentlich verläßlichen MINERVAe auch
das SMSQ in seinen zahllosen "Versionen" weite Verbreitung gefunden hat, und
da es Zweck der Arbeit ist, das zum Umgang mit den diversen QDOS-artigen
Systemen nötige Werkzeug zu liefern, finden sich vor allem kritische
Hinweise, die die "Ungereimtheiten" jenes Systems aufdecken und so den
QDOS-konformen Umgang damit erleichtern sollen. Nach Möglichkeit sind
Beispiele angegeben, mit Hilfe derer einerseits Unstimmigkeiten umgangen und
andererseits die immerhin auch vorhandenen Vorteile des SMSQ so genutzt
werden können, daß die resultierenden Programme für alle
QDOS-Typen verwendbar bleiben.
Es geht hier nicht um eine Werbemaßnahme zur Steigerung irgendwelcher
Verkaufszahlen, wo, wie in praxi zu beobachten, die Verhältnisse
mitunter deutlich "geschönt" wiedergegeben werden. Der Autor ist
vielmehr der Überzeugung, daß gerade klares Herausstellen von
Unterschieden und Schwächen der einzelnen Varianten es überhaupt
erst möglich machen, zuverlässig und über den Augenblick
hinaus in allen infragekommenden Systemen einsetzbare Programme zu
erzeugen.
Durch Tatsachen belegte Hinweise von Lesern betreffs neuer Varianten oder
im Text enthaltener Fehler werden dankbar aufgenommen und in der aktuellen
Bearbeitung berücksichtigt werden.
Und auch dies noch: Wenn relativ häufig irgendwelche Fehler
beschrieben werden, so entspringt das Wissen darum nicht zuletzt der
Selbsterkenntnis. Da die Wiederholung solcher Fehler aber zu den durchaus
entbehrlichen Erfahrungen zählt, finden sich entsprechende Notizen im
Text.
1.2.1 ** Voraussetzungen
Ziel der Arbeit ist, das in vielerlei Hinsicht außerordentliche
Betriebssystem des QL nach bestem Wissen des Autors offenzulegen und zu
erklären. In Konzeption und universeller Einsetzbarkeit ist es
beispielhaft. Fehlertoleranz, plausibler Aufbau und vollständige
Dokumentation erlauben weitgehend problemlose Programmierung.
So soll das über den Inhalt des zum QL mitgelieferten Handbuchs ("QL
User Guide") hinausgehende Material {20} zur Programmierung des QL
möglichst umfassend gesammelt in deutscher Sprache verfügbar
gemacht werden. Der Text beschreibt die Konzeption des QL zunächst
anhand grundlegender englischsprachiger Dokumentationen zum QL {1,2,6,9}.
Großenteils wurden auch die mit dem Toolkit II angebotenen
Besonderheiten aufgenommen. Varianten der Betriebssysteme, Korrekturen
offenkundiger Fehler und Ergebnisse eigener Untersuchungen sind
berücksichtigt. Weiter auch Pointer Environment und "Thing"-System,
wenn auch insbes. letzteres weniger eingehend, da es weder Bestandteil des
QDOS ist, noch jenes auf den darin vorgesehenen Wegen ergänzt, sondern
ähnlich dem ebenfalls kurz angerissenen "Hotkey-System" das QDOS
lediglich nutzt.
Literaturhinweise finden sich in {Klammern}, eigene Feststellungen mit
Angabe der Rom-Version, z.B. {MGG}. Als Referenz gelten sonst vor allem JS,
MINERVA(1.93) im QL (mit GC), und SMSQ(2.76) in der QXL. Die Beispiele sind
mit dem MGG-Rom geprüft worden, in den Neuauflagen dann
überwiegend mit MINERVA(1.93) und in der QXL; auf andere
Betriebssysteme wird besonders hingewiesen. Die daraus hervorgegangene IO2-Sammlung hat sich in den verschiedensten
Konstellationen von JM bis SMSQ und QXL bewährt. Ebenso die zur
Prüfung benutzen Programme, insbes. der Computer
One Monitor in einer für alle QDOS-Rechner geeignten Variante sowie
das F6 Forth-System des Autors.
MINERVA lag in Version 1.93 vor. Ergänzend finden sich Hinweise zum
SMSQ im Text, das dem Autor seit Version 2.16 vorliegt, aktuell SMSQ/E 2.89,
als SMSQ 2.76 in ständigem Gebrauch mit der QXL, in jeweils
jüngster Version gelegentlich im GC/QL.
Angaben zu den Systemzahlen stehen immer dort, wo sie dem Thema
entsprechend ihren Platz haben. Das Wichtigste ist in Anwendungsbeispielen
dargestellt. Ein ausführlicher Teil mit Tabellen zu den Traps und
Vectoren schließt Angaben zu "Pointer Interface" und "Thing" ein. Dort
wurde auch die Namensgebung nach "SMSQ"/"SMS2" {15} berücksichtigt.
Assemblerbeispiele und Tabellen sind passend für den
GST-Macro-Assembler aufgemacht und finden sich zusammen mit den
assemblierten Codefiles auf der beigefügten Discette rsp. im Archiv "PiQdsk".
"QDOS"-compatibel heißt hier alles, was den Angaben in {2,
20} genügt, ggf. um aktuelle Informationen aus dem Hause Sinclair
ergänzt, auch hinsichtlich Art und Ausführlichkeit der
Dokumentation.
Maßgebliche Referenz zum Basic-Interpreter des QL ist {22}.
Die Möglichkeiten, den QL (durch "Emulator"-Programme) auch auf
völlig anderen Rechnern nachzubilden, sind nur am Rande Gegenstand
dieser Schrift.
Ebensowenig war es Ziel, Grundkenntnisse in irgendeiner
Programmiersprache zu vermitteln. Das nötige Wissen um Mnemonics der
Assembler und Ähnliches wird vorausgesetzt, mag ansonsten einer
entsprechend spezialisierten Quelle entnommen werden.
Ein authentisches Handbuch zum Processor und seiner Programmierung
wird von dessen Hersteller angeboten {6}. - Aus eigener leidvoller Erfahrung
kann nur dazu geraten werden, sich unbedingt solcher Primärquellen zu
bedienen. Anderes wird ohnehin nur von dort abgeschrieben und weist oft
übelste Fehler auf (so ist insbes. bei Schriften aus dem
"Elektor"-Verlag größte Vorsicht geboten!).
Die vom Autor auf Datenträger verteilte rsp. im Internet angebotene
Version darf auf gleichartigen Medien zusammen mit einem Hinweis auf die
Quelle in unveränderter Form und nur kostenlos weitergegeben werden.
Wiedergabe in gedruckter Form und/oder in anderen Sprachen in
nicht-kommerziellen Publikationen ist auf Anfrage und unter der
Voraussetzung freigestellt, daß dem Autor ein Belegexemplar
übermittelt wird.
Verwendung der Tabellen und Beispiele für eigene Programme
unterliegt keiner Einschränkung; alles weitere bedarf der Genehmigung
durch den Autor; für ältere Auflagen bereits erteilte
Genehmigungen gelten nicht für diese Fassung.
Als authentisches Original ist "PiQ" gegen Freiumschlag nebst zwei DD
formatierten Disketten von ihm zu erhalten (Formate QL, **DOS, ext2), oder
von o.g. Internet-Adresse.
Das durch "PiQ" Mitgeteilte basiert auf Beobachtungen am eigenen
Gerät, gestützt durch o.g. Quellen, und ist experimenteller Natur,
Haftung für Korrektheit ist ausgeschlossen. Nennung von Namen und Algorithmen im Text bedeutet nicht, daß sie
frei von Rechten anderer sind.
1.3 ** Abkürzungen und Begriffe im
Text
Speicherzellen, Zahlen und Variable
gelten dezimal und in 32-Bit-Größe mit Vorzeichen, wenn nichts
anderes angegeben ist.
1K steht für 1024 Bytes.
(Trap-Nr/D0-Code)
für QDOS-TRAP-Aufrufe, (1/7) z.B. TRAP #1, D0=7 für
MT.TRAPV
%
vor Binärzahlen
&
vor Oktalzahlen
$
vor Sedezimalzahlen
abs
absolut
adr
Adresse
(adr)
Inhalt der Speicherzelle adr
AQ
Atari ST QL-Emulator
jcb
Job Control Block
jdt
Job Definition Table (alias jcb)
LV2, LV
"Level 2 Device Handler" in TK2, Trump/Gold Card, SM, AQ
u.a.
ofs
Offset - Abstand
PE
"Pointer Environment" Systemerweiterung
PIF
"Pointer Interface" im PE
ptr
Pointer (Zeiger als abs / rel Adr)
QL
nur(!) der schwarze QL
rel
relativ
rpa
Resident Program Area
SMS2, SM
ein Betriebssystem auf Grundlage des QDOS
SNG
Localmatador der QL-World ...
sp
Stackpointer (meist Register A7 des 6800x)
TK2, TK
"Toolkit 2" Systemerweiterung
tpa
Transient Program Area
Zahlenformate
.B
"Byte", "Zeichen", gilt für 8-Bit-Daten
.W
"Wort", "Zelle", dto., 16-Bit
.L
"Langwort", dto., 32-Bit, Standardformat im Text
f.p.
Fließkommazahl im QL 12-Bit-Exponent, 32-Bit-Mantisse
Integer
vorzeichenbehaftete 16-Bit-Ganzzahl
Lange Integer
dto., 32-Bit
Ein paar allgemeine Begriffe, wie sie in den angeführten Quellen
auftauchen:
Array Anordnung,
allgemein hier als Gruppe von Daten, in "höherer" Ordnung auch
Variablen
Byte
Ursprünglich die jeweilige Verarbeitungs"breite" der Datenbits.
Der 68000 hätte demnach 16-Bit-Bytes.
Der Begriff gilt jedoch inzwischen generell für ein
8-Bit-Byte.
Code-File
für Files mit Processorcode des 6800x
CPU
Central Processing Unit - der 6800x
Decrement(ieren)
Abwärtszählen, sonst s. Increment(ieren)
Device
Gerät (s. dort)
GAL
Gate Array Logic. Im QL als programmiertes Bauteil zur eingebauten
Peripherie
garbage collection
Müll einsammeln - Generalreinigung und ggf. Neuordnung des
Speichers
Gerät
Eine beliebige funktionale Einheit
GPIB
"General Purpose Interface Bus", auch HPIB, als "Universeller I.B." ist
genau dieses
Handler
Programm zur Verwaltung eines "Device"
Implementieren
einrichten, ausführen, durchführen, in Kraft setzen,
verwirklichen, herstellen
Implicit
inbegriffen, implizite - im OP-Code enthalten
Implied
gefolgert, indirekt (adressiert)
Incrementieren
das Weiterzählen um eine festgelegte Anzahl
Increment
Schrittweite, Stufung
Interrupt
Programmunterbrechung durch Hardwaresignal
I/O
steht für Input/Output - Ein-/Ausgabe
Job
Ein Programm, das unabhängig von anderen im selben Computer
ablaufen kann. (s. Task)
Kaltstart
der Start mit einem für das "leere" Gerät eindeutig
definierten Ausgangszustand
Langwort
Die Darstellung einer
Long Word
geschlossenen Gruppe von 32 Bits
Logic Array
In einem Bauteil enthaltene Anordnung von Logikschaltkreisen,
PLA für Programmable L.A., im QL z.B. als ZX8301 und ZX8302
Maschineein "mechanisches Arbeitsgerät" ...
Maschinencode
etwa die Steuerkurve einer Nockenscheibe
Multitasking
Gleichzeitiges Bearbeiten mehrerer Aufgaben; im QL mittels des
Zweitprocessors bei der Tastaturabfrage und der seriellen Eingabe; bei
Programmen durch zeitliche Schachtelung simuliert
PC z.B.
peripheral chip Peripherie-Bauteil
personal computer ein "persönlicher Computer", s.auch
Unterseite des QL
processor clock Processor-Takt (z.B. nicht Video)
program counter Programmzähler
program code das Programm selber
Peripherie
Umgebung, die zum Einsatz eines Gerätekerns erforderlichen
zusätzlichen Baugruppen
Pipe
Rohr, ein QL-Device zum Datentransport
Pointer mehrfach besetzt:
Zeiger auf die Adresse einer Adresse
Pointer Bildchen an der Cursorposition
Polled Interrupt
Interrupt, dessen Ursache abgefragt wird
Poll(ing)
Abfragen
Problem
eine zu lösende Aufgabe (s. Task)
Queue
Schlange, Struktur zur Datenspeicherung.
Reentrant
wiedereintrittstauglich; bezeichnet wiederholt und zu jeder Zeit
aufrufbare Programme, in denen es z.B. keine globalen Variablen
gibt.
Relocatible
(relocatibel) verlagerbar, lageunabhängig;
Relocatibel sind Programme mit relativer Adressierung: auf den
Programmzähler bezogen, darum an jeder Stelle einsetzbar
Single User System
Rechnersystem, bei dem mehrere Eingabegeräte auf dieselben Bereiche
zugreifen und getrennte Programme einander beeinflussen können
(QL).
Stack
Speicherstruktur, bei der die Daten in umgekehrter Reihenfolge der
Ablage entnommen werden.
Stapel
Stack, auch 'Kellerspeicher' oder LIFO
Start-up
Kaltstart.
Task
zu verrichtende Aufgabe,
in {2} besonders für Programmteile, die durch Interrupt aufgerufen
werden und genau einzuhaltenden Bedingungen zu genügen haben. (s.
Problem)
Text-File
File nur mit lesbaren QL- & ASCII-Zeichen.
Ein Filetyp beschreibt im QL allein die
Daten-Verwendung,
es gibt hier keine Dateien-Typisierung durch das System selbst.
Token
wörtl. Zeichen, Merkmal. Näheres im Text.
Toolkit
Werkzeugsatz, (geistiges) Rüstzeug.
Treiber
als Handler "treibt" er einem Gerät die Daten in der passenden Form
zu.
User
Benutzer (eines Rechnersystems)
Utility
Programmierhilfe, Hilfsprogramm.
Vector
Ein Pointer.
Die QDOS-Vectoren sind Wort-Adressen, die auf direkt ausführbaren
Code zeigen.
virtual
"such in practice though not in name"
virtuell
so erscheinend, nicht unbedingt so gestaltet.