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.