zurück : weiter : Inhalt =

 

* 6 Tabellen


 

HINWEIS:
Die Daten sind in Klartextformat zur direkten Übernahme als Assembler-Quelle in <pre>-Tags eingefaßt. Manche HTML-Programme können sie durch absurde "Korrekturmaßnahmen" dafür u.U. gänzlich unbrauchbar machen, z.B. ältere (vor 1.4a) Amaja und insbes. "Netscape": Bereits Sichern durch den Netscape'schen "Composer" füllt den Text mit einer Unzahl sinnloser und störender HTML-"tags".
Wer den Text in Assemblies weiterverwenden will, sichert die Seite zunächst, und geht sie dann ggf. mit einem ordentlichen Editor durch. Auch mit Amaya (1.4a+) oder Lynx können gut brauchbare Texte erzeugt werden.
 
 


* 6.1.1 *        Fixzahlen-Definitionen, Übergabe-Constante, NICHT Adressen
SV.ID     EQU    $D254     Bitmuster grün, rot, blau, schwarz, blinkend
sysid.ql  equ    sv.id   - alias -
sysid.at  equ    'S2AT'    SMS-Atari-Systemidentifikation        
SV.IDENT  EQU    sv.id   - alias -
RA.BOT    EQU    $20000    Untergrenze des RAM
RA.MIN    EQU    $20000    Mindestgröße 128K Bytes
RA.SSIZE  EQU    $8000     (Standard-)Größe des Bildschirmspeichers
sys.rdel  equ    25        Vorgabe SV.ARDEL
sys.rtim  equ    2         Vorgabe SV.ARFRQ
sys.nfsd  equ    16        Höchstzahl an Laufwerken im FSS
SV.TRAPO  EQU    2*($28+2) Abstand der Trap-Vectoren-Tabelle von (SV.TRAPV)

* 6.1.2        * Hardware-Register (je 8 Bit)

        
MC.STAT   EQU    $18063        Steuerregister zur Bildausgabe
* PC *        Peripheral Chip Register (R lesen / W schreiben)
PC.CLOCK  EQU    $18000 .l Uhr in Sekunden (R - 4 Bytes einzeln)
*                $18000    Uhr rücksetzen        (W)
*                $18001    Zählschritt der Uhr   (W)
PC.TCTRL  EQU    $18002    Sende-Steuerung       (W - Bits s. u.)
PC.IPCWR  EQU    $18003    Steuerung der IPC-Verbidung (W)
PC.IPCRD  EQU    $18020    Status MDV & RS232 (R)
PC.MCTRL  EQU    $18020    MDV Steuerregistre    (W)
PC.INTR   EQU    $18021    Interrupt-Register    (R/W Bits s.u.)
PC.TDATA  EQU    $18022    Sende-Daten		 (W)
PC.TRAK1  EQU    $18022    Mdv Spur 1		 (R)
PC.TRAK2  EQU    $18023    Mdv Spur 2 (R) Display-Steuerung (W)
* PC.INTR (R/W) Bitwertigkeit im Interrupt-Register
PC.INTRG  EQU $01 mdv-Spielraum (gap interrupt) <-,   Masken 
PC.INTRI  EQU $02 Interface-Interrupt		<-+-, hierzu 
PC.INTRT  EQU $04 Sende-Interrupt		<-+-+-, 
PC.INTRF  EQU $08 Bildwechsel-Interrupt (20 ms)   | | | 
PC.INTRE  EQU $10 Externer Interrupt 		  | | | 
PC.MASKG  EQU $20 Maske für mdv-Spielraum	--' | | 
PC.MASKI  EQU $40 Interface Maskierung		----' | 
PC.MASKT  EQU $80 Sende-Maskierung		------'
* MC.STAT (W) Bits zur Bildschirmsteuerung 
MC..BLNK  EQU $1 schaltet Bildausgabe ab 
MC..M256  EQU $3 setzt 256-Mode 
MC..SCRN  EQU $7 schaltet zweiten Bildschirm ein 
* PC.TCTRL (W) Bits zur Sende-Steuerung 
PC..SERN  EQU 3 ser-Nummer 0->1, 1->2; Auswahl MDV(0) oder NET(1)
PC..SERB  EQU 4 0 -> SER-Betrieb; 1-> MDV mit PC..SERN=0, sonst NET
PC..DIRO  EQU 7 Datenrichtung
* PC.TCTRL (W) Bitmasken 
PC.BMASK  EQU %00000111 Maske für Baudrate 
PC.NOTMD  EQU %11100111 alle Bits außer Betriebsartensteuerung 
PC.MDVMD  EQU %00010000 mdv-Betrieb 
PC.NETMD  EQU %00011000 Netzwerk-Betrieb 
* PC.MCTRL (W) Bitnummern 
PC..SEL   EQU 0 Auswahlsignal 
PC..SCLK  EQU 1 Übernahme Auswahlsignal 
PC..WRIT  EQU 2 Schreiben 
PC..ERAS  EQU 3 Löschen 
* PC.MCTRL (W) Bitmasken 
PC.READ   EQU %0010 mdv läuft leer oder zum Lesen 
PC.SELEC  EQU %0011 Auswahlsignal zum Schieben gesetzt 
PC.DESEL  EQU %0010 Auswahlsignal abgeschaltet 
PC.ERASE  EQU %1010 löschen und nicht schreiben 
PC.WRITE  EQU %1110 löschen und schreiben 
* PC.IPCRD (R) Bitnummern 
PC..TXFL  EQU 1 Sendepuffer voll 
PC..RXRD  EQU 2 Freigabe Lesepuffer 
PC..GAP   EQU 3 Zwischenraum (Anlauf-/Abklingzeit, "gap") 
PC..DTR1  EQU 4 DTR ser1 
PC..CTS2  EQU 5 CTS ser2 
PC..IPCA  EQU 6 IPC Übernahme (Taktung) 
PC..IPCD  EQU 7 IPC Datenbit 

* 6.1.3 QIMI-Interface-Register, je 8 Bit: 
qi.butn equ $1bf9c Tasten-Status 
; Bit	4: linke Taste 
; 	5: rechte Taste
qi.stat equ $1bfbc Statuseregister 
; Bit	0: senkrechte Bewegung 
;	2: dto., Abbruch 
;	4: waagerechte Bewegung 
;	5: dto., Abbruch 
qi.eint equ $1bfbe Interruptfreigabe 

* 6.2 * Software-Adressen 

* 6.2.1 * SV * Systemvariable, allgemein ab SV.BASE $28000, NICHT festgelegt. 
* Variable mit Offset zu SV.BASE und Bedeutung:

SV.BASE  EQU $00 .w enthält 
SV.ID=$D254 für Farben gn, rt, sw, blinken 
SV.CHEAP EQU $04 Basis des common heap 
SV.CHPFR EQU $08 Erste freie Stelle darin 
SV.FREE  EQU $0C Basis des freien Bereiches 
SV.BASIC EQU $10 Basis des Basic-Bereiches 
SV.TRNSP EQU $14 Basis des transienten Programm-Bereiches (tpa) 
SV.TRNFR EQU $18 Erste freie Stelle darin 
SV.RESPR EQU $1C Basis des Bereiches residenter Proceduren 
SV.RAMT  EQU $20 Obergrenze des RAM (+1) 
* sv.ramt wird bei SQ falsch (und unsinnig!) besetzt: 
* ist dort ein "user ramtop" und zeigt sich identisch mit SV.RESPR. 
sys.mxfr equ $24 SM Maximalwert für Abfrage nach freiem Speicher 
sys.rtc  equ $28 SM Zeit in Sekunden 
sys.rtcf equ $2C .w SM Rest des Zeitzählers 
SV.RAND  EQU $2E .w (Pseudo-)Zufallszahl 
SV.POLLM EQU $30 .w Anzahl ausgelassener poll-Interrupts 
SV.TVMOD EQU $32 .b Fernsehbild, 0 bei Monitorbild 
SV.SCRST EQU $33 .b Bildschirmstatus (0=aktiv) 
SV.MCSTA EQU $34 .b aktueller Inhalt des MC Statusregisters 
SV.PCINT EQU $35 .b dto., PC Interruptregister 
sys.rshd equ $36 .b SM Flag zur Scheduler-Neuordnung 
SV.NETNR EQU $37 .b Eigene Netzwerk-Stationsnummer 
SV.I2LST EQU $38 Ptr auf Liste der Interrupt-2-Handler 
SV.PLIST EQU $3C Ptr auf Liste der "polled tasks" 
SV.SHLST EQU $40 Ptr auf Liste der "scheduler tasks" 
SV.DRLST EQU $44 Ptr auf Liste der Device-Handler 
SV.DDLST EQU $48 Ptr auf Liste der Directory-Device-Handler 
SV.KEYQ  EQU $4C Ptr auf aktive Tastatur-Queue 
SV.TRAPV EQU $50 Ptr auf Tabelle zur Trap-Umleitung (redirection) 
SV.BTPNT EQU $54 Ptr auf jüngste slave-block-Eintragung 
SV.BTBAS EQU $58 Ptr auf Basis der slave-block-Tabelle 
SV.BTTOP EQU $5C Ptr auf Obergrenze der slave-block-Tabelle 
SV.JBTAG EQU $60 .w Aktuelle Job-Kontrollzahl (Job tag) 
SV.JBMAX EQU $62 .w Aktuelle Jobnummer - mit sv.jbtag die jüngste Job-ID 
SV.JBPNT EQU $64 Ptr auf aktuelle Eintragung in der Job-Tabelle 
SV.JBBAS EQU $68 Ptr auf Basis der Job-Tabelle 
SV.JBTOP EQU $6C Ptr auf Obergrenze der Job-Tabelle 
SV.CHTAG EQU $70 .w Aktuelle Kanal-Kontrollzahl (channel tag) 
SV.CHMAX EQU $72 .w Höchste aktuelle Kanalnummer 
SV.CHPNT EQU $74 Ptr auf jüngste geprüfte Kanaleintragung 
SV.CHBAS EQU $78 Ptr auf Basis der Kanaltabelle 
SV.CHTOP EQU $7C Ptr hinter Obergrenze der Kanaltabelle 
* Minerva hält in SV.CHTOP den Ptr in einen weiteren Bereich an Systemvariablen 
sys.frbl equ $80 SM Liste von Speicherblöcken zur Rückgabe an den Heap 
sys.tsdd equ $84    Thor Systemflag
sv.pifql equ $85 .b PIF: -1=flg für wirklichen QL (z.b. im PIF 1.71)
SV.CAPS  EQU $88 .w Flag Feststeller der Großschreibung (caps lock) 
SV.ARBUF EQU $8A .w Puffer für automatische Tastenwiederholung 
SV.ARDEL EQU $8C .w Verzögerungszeit (dafür) in Vielfachen von 20 ms 
SV.ARFRQ EQU $8E .w Wiederhol-Intervall in Vielfachen von 20 ms 
SV.ARCNT EQU $90 .w Zähler der automatischen Tastenwiederholungen 
SV.CQCH  EQU $92 .w Zeichencode zur Job-Umschaltung - i/o-queue 
SV.WP    EQU $94 .w Schreibschutz 
SV.SOUND EQU $96 .w Status des Tongenerators 
SV.SER1C EQU $98 Ptr auf Empfänger-Queue Kanal 1 (ser1) 
SV.SER2C EQU $9C Ptr auf Empfänger-Queue Kanal 2 (ser2) 
SV.TMODE EQU $A0 .b ZX8302 Sender-Betriebsart (mit Baudrate) 
sys.ptyp equ $A1 .b SM processortyp in bits 7..4 
;        Bits 3..0
;                x0: MMU  
:                x2: 68851-MMU
;                x4: FPU
;                x8: 6881/2-FPU
;        Bits 7..4 
;                00: 6800x 
;                1x: 6801x 
;                2x: 68020 
;                3x: 68030 
;                4x: 68040, 
;                   etc.                        
SV.CSUB   EQU    $A2        Null oder Ptr auf Subroutine bei CAPSLOCK
; ! Fehlerhaft; ohne codeaenderung in den QDOS-ROMS (samt Minerva!) nicht nutzbar.
SV.TIMO   EQU    $A6  .w    lfd. Zeitbegrenzung zum Umschalten des Sendebetriebs
; ! SQ nicht QDOS-compatibel: SV.TIMO dort im BYTE auf $A6
; ! $A6/$A7 koennen im QL nicht dauerhaft veraendert werden
sys.dmiu  equ    $A6  .b SM        Flag bei DMA
sys.mtyp  equ    $A7  .b SQ (seit e.20, SQ) gerätetyp
;        Bit 0
;                 1: Hermes vorhanden, oder Atari mit "blitter"
;        Bits 4..1
;                 0: QL, GC-QL, Atari ohne Uhr
;                 2: Atari Mega ST mit Uhr
;                 4: Stacy
;                 6: Atari STE
;                 8: Atari Mega STE
;                10: GoldCard mit SQ(?) - GC/MGG liefert 0
;                12: Super-GC
;                14: -/-
;                16: Falcon 030
;        18, 20, 22: -/-
;                24: Atari TT
;                26: -/-
;                28: QXL
;                30: QPC
;        Bits 7..5 
;                 0: Atari "futura"-Emulator
;                 1: Atari mono-Mode
;                 2: E4-Emulator
;                 3: -/-
;                 4: QVME
;                 5: -/-
;                 6: EGA/VGA-Bild (z.B. QXL)
SV.TIMOV  EQU    $A8  .w    Wert der Zeitbegrenzung (zwei Zeichen)
SV.FSTAT  EQU    $AA  .w    Zustand des blinkenden Cursor
SV.PRGD   EQU    $AC     TK Ptr auf Vorgabe-Device für Programme / Jobs
SV.DATD   EQU    $B0     TK dto., Daten-Files
SV.DSTD   EQU    $B4     TK dto., Zieldevice
SV.THGL   EQU    $B8    THG Ptr in die gefädelte Thing-Liste
*        bis $ed        Reservebereich
 und undokumentiert Possten
sys.attr  equ    $BC -extra- in "system" zur Devicekontrolle
sys.psf   equ    $bc      SQ "primary stack frame ptr"
;                                z.B. stackptr. in trap#1
sys.200i  equ    $c0 .b   SQ 200cs-Taktung
sys.50i   equ    $c1 .b   SQ 50cs-Taktung
sys.10i   equ    $c2 .b   SQ 10cs-Taktung
sys.plrq  equ    $c3 .b   SQ -ve bei poll-Anforderung
sys.clnk  equ    $c4 .b   SQ q.kanal 0 Handler
sqx.castat equ   $c8 .b   SQ -1 bei cache on, 1 bei befristeter Abschaltung
sys.casup equ    $c9 .b   SQ Timer fr Cache-Unterdrckung, Vogabewert 2
sqx.iopr  equ    $ca .b   SQ i/o-Prioritaet, $ff nach "cache_on"
sqx.cbas  equ    $cc      SQ aktueller Basic-Job, sv.jbpnt aus trap (1/3)
sys.fpu   equ    $d0 .l*4 SQ (nicht erklaert)
sys.prtc  equ    $e0 .b   SQ =/= 0 bei geschuetzer Uhr
sys.pmem  equ    $e1 .b      Speicher-Schutzstufe
sys.slug  equ    $e2 .w      "slug"-Stufe (GC?)
* MDV in SQ nicht verfuegbar
SV.MDRUN  EQU    $EE  .b     Nummer des Microdrive in Betrieb oder Null
SV.MDCNT  EQU    $EF  .b     An- und Auslaufzähler für Microdrive
SV.MDDID  EQU    $F0   8.b   Drive-Identifikation * 4 für jeden Microdrive
SV.MDSTA  EQU    $F8   8.b   Status - Null, wenn keine Operationen anstehen
SV.FSDEF  EQU    $100 16.l   Ptr in den Block physischer Drive-Definitionen
SV.FSLST  EQU    $140        Ptr auf gefädelte Liste der pdt zu den File-Handlern
SV.TRAN   EQU    $144 .b     Flag zur Ein-Ausgabe-Umsetzung (=/= 0 TRAnslate)
SV.ICHAR  EQU    $145 .b     Ein Zeichen Eingabepuffer
SV.TRTAB  EQU    $146        Ptr auf Umsetzungstabelle
SV.MGTAB  EQU    $14A        Ptr auf Tabelle der Fehlermeldungen
sys.mstab equ    $14e        SQ        Ptr auf Meldungstextabellen
* undokumentiert:
sv.taskm  equ    $154 .l*4(!) -taskmaster-
sv.turbo  equ    $160        -tubo-compiler-
sv.qsound equ    $164        -qsound-
*
sys.ldmst equ    $168     SQ Ptr auf sprachenabhaengige Module
sys.lang  equ    $16c     SQ aktuelles Modul
*            bis $17f Reservebereich & undokumentierte Posten
sv.qxlv   equ    $170     QXL/SQ        version
*
SV.STACB  EQU    $180     Untergrenze des Supervisor-Stack
sys.top   equ    $180 SQ        dasselbe
sv.lng    equ    $180        "lightning"-Referenz
SV.STACT  EQU    $480        (unbewachte) Obergrenze Supervisor-Stack

* SX *        Erweiterte Systemvariable von MINERVA (1.82) auf SV.CHTOP(sb)
SX.CASE   EQU     00        =/= 0 als Tastatur-Aufruf CTR/ALT/SH/ENTER
SX.ITRAN  EQU     04        Aufruf zur Eingabe-Übersetzung bei ser-Queues
SX.OTRAN  EQU     08        dto., bei der Ausgabe
SX.DRIV   EQU    $0C        CLOSE-Einsprung von MM.RECHP
SX.KBENC  EQU    $10        Aufruf einer Tastatur-Codierung
SX.IPCOM  EQU    $14        MT.IPCOM-Aufruf
*                        Reserve
SX.TRN    EQU    $20        Vorgabeadresse der TRA-Tabelle
SX.MSG    EQU    $24        Vorgabeadresse der Fehlermeldungen
SX.F0     EQU    $28        erster Zeichensatz
SX.F1     EQU    $2C        zweiter Zeichensatz
SX.DSPM   EQU    $30  .b        Bildausgabe-Betriebsart
SX.TOE    EQU    $31  .b        "Verbesserungen"/"Erweiterungen" abschalten
SX.EVENT  EQU    $32  .b        Break und CTR/ALT/SH/ESC Tastatur-Flag
;        Bit:        0-3        -/-
;                4        SBasic <break>
;                5        SBasic-Job <break>
;                6        CTR oder SHIFT oder SPACE
;                7        dto. mit ALT
SX.FSTAT  EQU    $33  .b  %bbbbgfff  Cursor  (b)linken (g)röße (f)arbe
SX.KBSTE  EQU    $34 12.b    Umlenktabelle für Sondertasten
SX.QDOS   EQU    $40  4.b    Qdos-Version in ASCII
SX.BASIC  EQU    $44 2+4.b   VER$
sx.nix01  equ    $4A  3 .w   reserviert (benutzt!)
* zum RAM ausgelagerte Verkettungsadressen.
* BASE ist unklar, koennte die basisadresse des heap-blocks sein.
;               $50  2.l        Null
;               $58  6.l        Base+$60
;                        	00000000  IO.SCAN
;               $70  4.l        BASE+$80
;                        	OD.SERIO  OD.SEROP  OD.SERCL
;               $80  4.l        BASE+$90
;                        	IO.SERQ   OD.PIPOP  OD.PIPCL
SX.CON    EQU   $90  4.l	BASE+$A0
;                        	OD.CONIO  OD.CONOP  OD.CONCL
;               $A0  4.l        00000000
;                        	OD.NETIO  OD.NETOP  OD.NETCL
;               $B0  8.l        00000000
;                        	DD.MDVIO  DD.MDVOP  DD.MDVCL
;                        	MD.SLAVE  0         0         MD.FORMT
;               $D0        	MD.END
;                  .w        	3
;                  .b        	'MDV'
sx.nix02  equ   $D9  7.b        reserviert
sx.nixmer equ   $E0        	Ende der Erweiterung

* 6.2.2        * HP * Speicherreservierung (common heap header definition)

HP.LEN    EQU    $00        Länge des Definitionsblockes
HP.DRIVR  EQU    $04        Freigabehandler zum Aufruf bei DELETE des Besitzers
*                        (negativ CH.CLOSE)
HP.NEXT   EQU    $04        Ptr auf nächste freie Speicherstelle
HP.OWNER  EQU    $08        Besitzerjob (0 wenn der Platz frei ist)
HP.RFLAG  EQU    $0C        bei Freigabe zu setzende Adresse
;        SQ: leer(!) bei Standardzuweisungen
;        zeigt bei Kanälen auf den SV.CHBAS-Tabelleneintrag der cdt
HP.CLOSE  EQU    $0C        {2} offset of close entry point WRT hdl add

* 6.2.3        * JB * Job-Header und zugehöriger Daten-Sicherungsbereich
* Job Control Block (jcb) oder Job Definition Table (jdt)
* Job-Steuerblock                Job-Definitionsblock
* Mit Hilfe der Systemvariablen SV.JBBAS und SV.JBTOP ist die jdt zu finden, die
* die niederwertigen 16 Bits der Job-ID zeigen nach Multiplikation mit 4 auf die
* Tabellen-Eintragung (Offset), in der die Basisadresse der jdt steht.
* Weist der Offset zu SV.JBBAS über SV.JBTOP hinaus, ist die ID ungültig.
* Ist die Adresse selbst negativ, existiert der Job nicht mehr.
* {*} nicht ändern  {?} durch Trap oder mit Vorsicht auch direkt änderbar

JB.LEN    EQU    $00     *        Länge des gesamten Speicherbereichs
JB.START  EQU    $04        Startadresse bei Aktivierung, gewöhnlich Null
JB.OWNER  EQU    $08     ?        Besitzer dieses Jobs
JB.HOLD   EQU    $0C     ?        Ptr auf ein bei Aufgabe des Jobs zu löschendes Byte
JB.TAG    EQU    $10  .w *        Prüfzahl für diesen Job
;                        SQ: negative tag-Nummern sind ungltig.
JB.PRIOR  EQU    $12  .b ?        Laufzähler für die Priorität
JB.PRINC  EQU    $13  .b ?        Prioritätszahl, bei Null ist der Job nicht aktiv
JB.STAT   EQU    $14  .w *        Job-Status        = 0 freigegeben
*                                > 0 Wartezeit in Vielfachen von 20 ms
*                                - 1 Job gesperrt
*                                - 2 Freigabe durch anderen Job abwarten
JB.RELA6  EQU    $16  .b ?  bit 7 Flag nächste trap #2/#3 adressiert relativ(A6)
*			    bit 6 MINERVA-S.Basic-Job
JB.WFLAG  EQU    $17  .b ?        Flag gesetzt, wenn ein Job auf diesen wartet
JB.WJOB   EQU    $18     ?        Identitätszahl des wartenden Job
JB.TRAPV  EQU    $1C     ?        Ptr auf umgeleitete Trap-Vectoren (trap redirection)
JB.D0     EQU    $20        Sicherungs-Speicher für D0
JB.D7     EQU    $3C                bis          D7
JB.A1     EQU    $40        Sicherungs-Speicher für A1
JB.A7     EQU    $5C                bis          A7
JB.USP    EQU    $5C        - alias für USP -
JB.SR     EQU    $60        	    dto., SR
JB.PC     EQU    $62		    dto., PC
jcb.reln  equ    $66 .b   SM        Flag relative Adressierung des nächsten I/O-Aufrufs

jcb.evts  equ    $66 .b   SQ        "event vector", eigene gesetzte Marken
jcb.evtw  equ    $67 .b   SQ        dto., zur Bearbeitung erwartete
JB.END    EQU    $68        Länge des Job-Steuerblocks (jcb)


* 6.2.4.1 * BV * Variable des Basic-Jobs relativ zur Basisadresse in A6.
* Die jdt selbst beginnt $68 (104) Bytes davor, ist dort aber nicht verankert.
* Die Basic-Fehlercodes sind den Trap-Beschreibungen vorangestellt.

* SQ belegt viele der Variablen nicht, oder nur in undokumentierter Form

BV.START  EQU    0          Beginn der Tabelle mit Anfangs-/End-Ptr
BV.BFBAS  EQU    0          Puffer Basis
BV.BFP    EQU    4          Puffer Laufpointer
BV.TKBAS  EQU    8          Token-Liste
BV.TKP    EQU    $C
BV.PFBAS  EQU    $10        Programm
BV.PFP    EQU    $14
BV.NTBAS  EQU    $18        Namen-Tabelle
BV.NTP    EQU    $1C        dto., Obergrenze
* Die 8 Bytes einer Eintragung bedeuten:
;0 Verwendung
;    0 Variable nicht besetzt (use)
;    1 Ausdruck
;    2 Einfache Variable
;    3 Dimensionierte Variable
;    4 Procedur in Basic
;    5 Funktion in Basic
;    6 Schleifenindex in REPeat
;    7 Schleifenindex in FOR
;    8 residente Procedur
;    9 residente Funktion
;1 Typ
;    0 abhängig von der Verwendung:
;	3 Teilstring
;	4 Procedur in Basic
;	8 residente Procedur
;	9 residente Funktion
;	- sonst Fehler
;    1 String
;    2 f.p.-Zahl
;    3 Integer
;    zusätzlich bei der Parameterübergabe:
;	Bit  7	gesetzt bei führendem Nummernzeichen '#' ("hash").
;	Bits 4 bis 6 für ein ggf. folgendes Trennzeichen:
;		%.000.... 0 ohne Trennzeichen
;		%.001.... 1 Komma
;		%.010.... 2 Semicolon
;		%.011.... 3 Schrägstrich '\' ("backslash")
;		%.100.... 4 Ausrufezeichen
;		%.101.... 5 'TO'
;    	Bits 0 bis 3
;    		Typ wie oben beschrieben.
;2-3 Ptr
;	auf den Namen innerhalb der Name List.
;    sonst:
;    -1 bei Ausdrücken, geschnittenen Strings,
;	Bytes 4-7 rel (BV.VVBAS(bp)) zeigen auf den Ausdruck.
;    Unsicher, und in keinem dem Verfasser bekannten QL-System auswertbar:
;	Andere negative Angabe bedeutet einen Ptr auf den 
;	Originaleintrag, von dem der Vorgefundene copiert ist.
;4-7
;    Basic-Definitionszeile im höherwertigen Wort (Bytes 6 und 7).
;    sonst:
;    Bei Ausdrücken der Ptr in den RI-Stack.
;    Bei residenten Befehlen deren absolute Aufrufadresse.;
;    In allen anderen Fällen der Ptr auf den Variablenwert.
;    -1 steht hier, wenn der Wert noch undefiniert ist.
*
BV.NLBAS  EQU    $20        Namen-Liste
BV.NLP    EQU    $24        dto., Obergrenze
BV.VVBAS  EQU    $28        Variablenwerte
BV.VVP    EQU    $2C        dto., Obergrenze
BV.CHBAS  EQU    $30        Kanal-Tabelle
BV.CHP    EQU    $34        dto., Obergrenze
BV.RTBAS  EQU    $38        Return Tabelle innerhalb von Proceduren
BV.RTP    EQU    $3C
BV.LNBAS  EQU    $40        Tabelle der Zeilennummern
BV.LNP    EQU    $44
* mt.albas addiert D1 zu (BV.PFP) und justiert die Pointer ab BV.BTP
*	SQ (2.76) _ohne_ Pointer-Anpassung 
BV.BTP    EQU    $48        Stack zur Rückverfolgung des Parser-Weges
BV.CHANGE EQU    $48        Markiert Richtungswechsel
BV.BTBAS  EQU    $4C
BV.TGP    EQU    $50        Parser-Stack, zeitweise Syntax-Graph
BV.TGBAS  EQU    $54
BV.RIP    EQU    $58        Arithmetik-Stack
BV.RIBAS  EQU    $5C
BV.SSP    EQU    $60        der wirkliche System-Stack (geht nach USP)
BV.SSBAS  EQU    $64
BV.ENDPT  EQU    $64        Ende der Pointerliste 
* SQ besetzt nur wenige der folgenden Posten,
*	dokumentiert wird dazu (fast) nichts, rsp. Falsches {15}.
BV.LINUM  EQU    $68  .w        lfd. Zeilennummer
BV.LENGTH EQU    $6A  .w        Länge der lfd. Zeile
BV.STMNT  EQU    $6C  .b        augenblickliches Kommando darin
BV.CONT   EQU    $6D  .b        Flag CONTINUE($80) oder STOP(0)
BV.INLIN  EQU    $6E  .b        Ausführung einer einzeiligen Struktur
*                                 Schleife(1), Sonstige($FF), Nichts(0)
BV.SING   EQU    $6F  .b        Einzeiler ausführen($FF) oder nicht(0)
BV.INDEX  EQU    $70  .w        Zeile des jüngsten Einzeiler-Schleifen-Index
BV.VVFREE EQU    $72        erste freie Stelle in Tabelle der Variablen-Werte
BV.SSSAV  EQU    $76        Gesicherter rp
*                6 Bytes Arbeitsbereich
bv.uproc  equ	 $7c		MINERVA: trace-vector, bit#31 set
BV.RAND   EQU    $80		"Zufalls"-Zahl
BV.COMCH  EQU    $84		Befehlskanal (nicht immer) setzbar
BV.NXLIN  EQU    $88  .w        Zeilennummer, nach der es weitergeht
BV.NXSTM  EQU    $8A  .b        dto., Kommando darin
BV.COMLN  EQU    $8B  .b        Befehlszeile gesichert($FF) oder nicht(0)
BV.STOPN  EQU    $8C  .w        welche Stop-Nummer gesetzt ist [?] für Basic ]
BV.EDIT   EQU    $8E  .b        Programm wurde editiert($FF) oder nicht(0)
BV.BRK    EQU    $8F  .b        Unterbrechung mit {BREAK}(0) oder nicht ($80)
BV.UNRVL  EQU    $90  .b        auffriemeln($FF) oder nicht(0)
BV.CNSTM  EQU    $91  .b        Befehl, wo mit CONTINUE weiterzumachen ist
BV.CNLNO  EQU    $92  .w        dto., Zeile
BV.DALNO  EQU    $94  .w        lfd. Zeile des aktuellen DATA-Kommandos
BV.DASTM  EQU    $96  .b        dto., Nummer in der Zeile
BV.DAITM  EQU    $97  .b        dto., darin nächster zu lesender Posten
BV.CNIND  EQU    $98  .w        Einzeiler-Schleifenindex nach CONTINUE
BV.CNINL  EQU    $9A  .b        Flag dazu
BV.LSANY  EQU    $9B  .b        LIST wird geprüft($FF) oder nicht(0)
BV.LSBEF  EQU    $9C  .w        nicht sichtbare obere Zeile
BV.LSBAS  EQU    $9E  .w        untere Zeile im Fenster
BV.LSAFT  EQU    $A0  .w        nicht sichtbare untere Zeile
BV.LENLN  EQU    $A2  .w        Länge einer Zeile im Fenster
BV.MAXLN  EQU    $A4  .w        größtmögliche Anzahl Zeilen im Fenster
* Die 4 folgenden Bytes werden bei Änderungen von lenln und maxln überschrieben.
BV.TOTLN  EQU    $A6  .w        wirkliche Anzahl Zeilen im Fenster
*                A8 (?für INSTR_CASE in m89m?) - nee!
BV.AUTO   EQU    $AA  .b        AUTO/EDIT eingeschaltet($FF) oder nicht(0)
BV.PRINT  EQU    $AB  .b        PRINT aus prtok($FF) oder im Puffer belassen(0)
BV.EDLIN  EQU    $AC  .w        Nummer der nächsten zu editierende Zeile
BV.EDINC  EQU    $AE  .w        Schrittweite bei AUTO/EDIT
BV.TKPOS  EQU    $B0        Pos. von A4 in tklist beim Einsprung in PROC
BV.PTEMP  EQU    $B4        flüchtiger Ptr für GO_PROC
BV.UNDO   EQU    $B8  .b        rp umgehend verwerfen und Procedur wiederholen
BV.ARROW  EQU    $B9  .b        Peil runter($FF) rauf(01) oder ohne(0)
BV.LSFIL  EQU    $BA  .w        Fenster bei wiederholtem LIST bis hierhin füllen
*        Vari. fuer WHEN-Behandlung nicht SQ:
BV.WRLNO  EQU    $BC  .w        Zeilennummer von WHEN ERRor
BV.WRSTM  EQU    $BE  .b        WHEN ERRor Kommando
BV.WRINL  EQU    $BF  .b        WHEN ERRor einzeilig($FF) oder nicht(0)
BV.WHERR  EQU    $C0  .b        WHEN ERRor aktiv($FF) oder nicht(0)
bv.erstm  equ	 $C1  .b MI ausloesendes statement in zeile ERLIN
BV.ERROR  EQU    $C2  .l (!)    jüngster Fehlercode
BV.ERLIN  EQU    $C6  .w        Zeilennummer, wo der jüngste Fehler vorkam
BV.WVNUM  EQU    $C8  .w        Anzahl überwachter {WHEN variable}-Klauseln
BV.WVBAS  EQU    $CA        Basis der {WHEN variable}-Tabelle bezügl. BV.VVBAS
*        reserve und undokumentierte posten
bv.qchan  equ    $bc -extra- qlib kanaltabelle
bv.qrate  equ    $db -extra- .b qlib in "liberate"
bv.qerrl  equ    $dc -extra- qlib error trapping linkage
bv.cheap  equ    $E0     TK2 Verkettungsadresse für ALCHP & RECHP
bv.qlovl  equ    $E8 -extra- im Job 0 QLIB-Overlay-Tabelle
bv.qlrun  equ    $EC -extra- im Job 0 Basisadresse der QLIB-runtimes
bv.qstak  equ    $f4 -extra- qlib system-stack
bv.qintp  equ    $f8 -extra- qlib interpreter-pointer
BV.END    EQU    $100      Obergrenze der Basic-Variablen

* 6.2.4.2        Token für Basic-Interpreter und -Parser
* SHI.B und LGI.B werden erst von MINERVA-Interpretern benutzt.
* Codierung tokenisierter Programme, aus mi.91 ermittelt.
* Die kleingeschriebenen Namen wurden willkürlich gewählt.
* SQ definiert auch sedezimale und binaere zahlen,
*    dokumentiert ist dazu nichts (wieso denn auch...)!

* Basic-Zeile
LEN.L     equ 0 Zeilenlänge als Differenz zur Länge der vorangehenden Zeile.
TNM.L     equ 2 Token $8D00 kündigt Zeilennummer an
NUM.L     equ 4 Zeilennummer
END.L     equ -2 EOL-Token $840A

* Basic-Interpreter-Token
SPC.B     equ $80nn  Leerzeichen, Anzahl {nn} max 255
*
KEY.B     equ $81{kk} Befehle {kk} von 1 bis $1f:
end.k     equ   1 END
for.k     equ   2 FOR
if.k      equ   3 IF
rpt.k     equ   4 REPeat
sct.k     equ   5 SELect
whn.k     equ   6 WHEN
def.k     equ   7 DEFine
prc.k     equ   8 PROCedure
fun.k     equ   9 FuNktion
go.k   equ 10 $0a GO
to.k   equ 11 $0b TO
sub.k  equ 12 $0c SUB
; jm:      13 $0d WHEN (vorbereitet)
err.k  equ 14 $0e ERRor
; jm:      15 $0f EOF index 0067 in mi91
; jm:      16 $10 INPUT index 0003
rst.k     equ $11 RESTORE
nxt.k     equ $12 NEXT
xit.k     equ $13 EXIT
els.k     equ $14 ELSE
on.k      equ $15 ON
ret.k     equ $16 RETurn
rmd.k     equ $17 REMAINDER
dta.k     equ $18 DATA
dim.k     equ $19 DIM
loc.k     equ $1a LOCal
let.k     equ $1b LET
thn.k     equ $1c THEN
stp.k     equ $1d STEP
rem.k     equ $1e REMark
mst.k     equ $1f MISTake
BIP.B     equ $8200 residente Procedur, folgt Posten-Nr. der Name-Table
BIF.B     equ $8300 residente Funktion, dto.
*
SYM.B     equ $84ss Symbole {ss} 1 bis 10:
alc.s     equ 1 = als Zuweisung oder bei Select-Auswertung
col.s     equ 2 Doppelpunkt
hsh.s     equ 3 '#'
com.s     equ 4 Komma
brl.s     equ 5 Klammer links (
brr.s     equ 6 Klammer rechts )
bkl.s     equ 7 geringelte Klammer links { 
bkr.s     equ 8 dto. rechts } 
fsp.s     equ 9 erzwungenes Leerzeichen 
eol.s     equ 10 <NL> Ende einer Basiczeile
* 
OPS.B     equ $85oo Operationen {oo} 1 bis $16:
add.o     equ 1 + 
sub.o     equ 2 - 
mul.o     equ 3 * 
dvs.o     equ 4 / 
geq.o     equ 5 >= 
gt.o      equ 6 > 
seq.o     equ 7 ==
equ.o     equ 8 =
neq.o     equ 9 <> 
leq.o     equ 10 <= 
lt.o      equ 11 < 
or.o      equ 12 $0c || 
and.o     equ 13 $0d && 
eor.o     equ 14 $0e ^^ 
exp.o     equ 15 $0f ^ 
cnc.o     equ $10 & 
or.l      equ $11 OR 
and.l     equ $12 AND 
eor.l     equ $13 XOR 
mod.o     equ $14 MOD 
div.o     equ $15 DIV 
ins.o     equ $16 INSTR 
* 
MON.B     equ $86 monadische Operation 1 bis 4: 
nve.m     equ 1 - als vorzeichen 
pve.m     equ 2 + als vorzeichen 
not.m     equ 3 ~~ 
not.l     equ 4 NOT 
SYV.B     equ $87 Systemvariable (nicht benutzt) 
* 
NAM.B     equ $8800 Name 
nam.e     equ 0 +4 Bytes Posn. in der Name-Table 
* 
SHI.B     equ $89nn kurze Integer, 8 l.s. Bits im Token-Word
* 
LGI.B     equ $8a lange Integer 
lgi.n     equ 2 folgen 16 Bit 
* 
STR.B     equ $8bxx String mit Begrenzung char. {xx} 
dqe.c     equ $22 xx für {"} 
sqe.c     equ $27 xx für {'} 
str.l     equ 2 folgt Länge.w und die Zeichen, geradzahlig justiert 
TXT.B     equ $8c Text (z.B. nach REMark) 
txt.l     equ 2 folgt Länge, wie Strings 
* 
LNO.B     equ $8d Zeilennummer 
lno.l     equ 2 +nnnn als positive 16-Bit-Zahl 
* 
SEP.B     equ $8e PRINT-Separator: 
com.p     equ 1 Komma 
smc.p     equ 2 Semicolon 
bks.p     equ 3 backslash 
xkm.l     equ 4 Ausrufezeichen 
to.p      equ 5 TO 
*
FP.B	equ $Fxxx f.p.-Zahl mit 12 Bit Exponent und 32 Bit Mantisse 
fp.l	equ 6 f.p.-Länge
*

* 6.2.4.3        * LP * Offsets innerhalb einer Schleifenindex-Beschreibung
LP.IEXP   EQU    0    .w        Index Exponent
LP.IMANT  EQU    2                dto., Mantisse
LP.SL     EQU    6    .w        Anfangszeile
LP.EL     EQU    8    .w        Endzeile
LP.SS     EQU    $A   .b        Kommando in der Anfangszeile
LP.ES     EQU    $B   .b        dto., Endzeile
LP.EEXP   EQU    $C   .w        Schlußwert Exponent
LP.EMANT  EQU    $E                dto., Mantisse
LP.SEXP   EQU    $12  .w        Schrittweite Exponent
LP.SMANT  EQU    $14        dto., Mantisse
LP.CHPOS  EQU    $18  .w        Zeichenposition innerhalb der lfd. Zeile

LP.LNVAR  EQU      6     Länge einer gewöhnlichen Variablen
LP.LNFOR  EQU    $1A     Länge einer FOR-Beschreibung
LP.LNREP  EQU    $0C     Länge einer REPeat-Beschreibung
* 6.2.4.4        * RT * rp-Offset in Proceduraufrufen bezüglich BV.RTBAS(A6)
RT.SVBA   EQU    0        Basis der Argumente
RT.SVBL   EQU    4        Basis der Localen
RT.SVTL   EQU    8        Bereichsende dto.
RT.SVDFL  EQU    $C   .w        Nummer der DEFinitons-Zeile
RT.SVFNT  EQU    $E   .b        Funktionstyp
RT.SVSWP  EQU    $F   .b        Argumente getauscht($FF) oder nicht(0)

* Für Gesamt-Offset zur Basis sind ab hier bis rt.svsta $10 zu addieren
RT.SVRTT  EQU    0    .b        Return-Typ aus gosub(0) proc(1) fn(2)
RT.SVSTM  EQU    1    .b        Befehl, auf den bei Return zu springen ist
RT.SVLNO  EQU    2    .w        Zeilennummer dto.
RT.SVSTA  EQU    4        Statusflags  inline, single, index

RT.LENPR  EQU    $10        Länge der PROC/FN-Angaben
RT.LENTL  EQU    $18        Länge der "return table"

* Gewinnung der aktuellen Daten erfordert negative Indizierung zu BV.RTP(A6)
RT.RSBA   EQU    $18        Argumenten-Basis (Übergabe-Parameter)
RT.RSBL   EQU    $14        dto., Ende, zugleich Localen-Basis
RT.RSTL   EQU    $10        dto., Ende
RT.RSDFL  EQU    $C        Definitionszeile
RT.RSFNT  EQU    $A        Funktions-Typ
RT.RSSWP  EQU    9        Swap-Flag
RT.RSRTT  EQU    8        Returntyp
RT.RSSTM  EQU    7        Befehl (statement)
RT.RSLNO  EQU    6        Zeile
RT.RSSTA  EQU    4        Statusflags

* 6.2.4.5        Basic-Kanäle erhalten in der eigenen Tabelle aus BV.CHBAS(A6)
* CH * SD *        neben denen der QDOS-Tabellen eine Anzahl eigener Angaben.
CH.ID     EQU     0        Kanal-Identifikation
CH.CCPY   EQU    $4  .fp        Turtle Graphik, aktueller Cursor, Abszisse
CH.CCPX   EQU    $A  .fp        dto., Ordinate
CH.ANGLE  EQU    $10 .fp        dto., Winkel der Kröte in Grad
CH.PEN    EQU    $16 .b        PENUP(0) PENDOWN(1)
CH.CHPOS  EQU    $20 .w        aktuelle Ausgabespalte für Schriftzeichen
CH.WIDTH  EQU    $22 .w        Breite der Zeile in Anzahl Spalten
CH.SPARE  EQU    $24        Reserve

CH.LENCH  EQU    $28        Länge des Basic-Kanal-Definitionsblocks

* 6.2.5        Jedem Kanal wird ein Definitionsblock (cdt) zugewiesen, der die
* erforderlichen Angaben enthält. Die Basisadresse wird mit den Systemvariablen
* SV.CHBAS und SV.CHMAX in gleicher Weise, wie bei den Jobs ermittelt.
* Zuerst die Grundlage, wie sie allen cdt gemeinsam ist.
CH.LEN          EQU    $00        Länge des Definitionsblocks
CH.DRIVR  EQU    $04        Adresse des zugehörigen Device-Handlers
CH.OWNER  EQU    $08        Besitzer-Job
CH.RFLAG  EQU    $0C        Adresse einer Markierung für die Speicherfreigabe
CH.TAG          EQU    $10 .w        Prüfzahl für diesen Kanal
;        die "tag"-Nummer kann bei Kanaelen auch negativ werden! (z.B. MGG)
CH.STAT          EQU    $12 .b        Status
*                                0        in Ordnung
*                                Negativ        Kanal wartet
*                                -1        A1 gilt absolut
*                                $80        A1 gilt relativ zu A6
CH.ACTN        EQU    $13 .b        gespeicherte Aktion für wartenden Job
CH.JOBWT EQU   $14        ID des auf I/O wartenden Jobs
CH.END        EQU    $18        Länge dieser cdt (channel definition Tabelle)

* 6.2.5.1        Erweiterte Definition für einfache serielle Queues
CH.QIN         EQU    $18        Ptr auf Eingabe-Queue (oder Null)
CH.QOUT        EQU    $1C        Ptr auf Ausgabe-Queue (oder Null)
CH.QEND EQU    $20

* 6.2.5.2        Erweiterte Definition für Fensterkanäle, auf Pixel bezogen.
* Diese Offsetangaben gelten immer zusammen mit dem sd.extop-Aufruf.
* Der Anordnung nach zunächst die Erweiterung des Pointer Interface:

SD.XHITS        EQU        $-18 .w        x hit size        - Trefferbereich
SD.YHITS        EQU        $-16 .w        y
SD.XHITO        EQU        $-14 .w        x hit origin (Bildkoordinaten)
SD.YHITO        EQU        $-12 .w        y
SD.XOUTS        EQU        $-10 .w        x-Abmessung (Breite)
SD.YOUTS        EQU        $-0E .w        y         (Höhe)
SD.XOUTO        EQU        $-0C .w        x-Ursprung         (Bildkoordinaten)
SD.YOUTO        EQU        $-0A .w        y
SD.PRWLB        EQU        $-08        Primärfenster  : Aufwärts-Ptr Link-Liste
SD.PPRWN        EQU        $-08        Secundärfenster: Ptr auf Primärfenster
SD.PRWLT        EQU        $-04        Primärfenster  : Abwärts-Ptr Link-Liste
SD.SEWLL        EQU        $00        Ptr in Link-Liste der Secundärfenster
SD.WSAVE        EQU        $04        Ptr auf Sicherungsbereich für das Fenster
SD.WSSIZ        EQU        $08        dessen Größe
SD.WWDEF        EQU        $0C        Ptr auf Arbeitsdefiniton für das Fenster
SD.WLSTT        EQU        $10  .b        Status der Fenster-Verriegelung
;         01        fenster nicht verriegelt
;        $81        freigabe vorbereiten, wird 00
:        $80        verriegeln vorbereiten, wird $ff
;        $ff        verriegelt und gesperrt
SD.PRWIN        EQU        $11  .b        Primärfenster hat hier Bit 7 gesetzt
SD.BEHAV        EQU        $11  .b        Fenster-Arbeitstyp (Bit 0 "gut")
SD.WMODE        EQU        $12  .b        MODE für dieses Fenster
SD.MYSAV        EQU        $13  .b        =/= 0 eigener Sicherungsbereich angegeben
SD.WMOVE        EQU        $14  .b        Fensterbewegung
SD.PICK         EQU        $15  .b        Pick-Status
* Die allgemein ab JS-Rom gültigen Fensterparameter
SD.XMIN         EQU        $18  .w        oben LINKS (Abstand zum linken Rand)
SD.YMIN         EQU        $1A  .w        OBEN links (Abstand zum oberen Bildschirmrand)
SD.XSIZE        EQU        $1C  .w        Höhe
SD.YSIZE        EQU        $1E  .w        Breite
SD.BORWD        EQU        $20  .w        Rand-Breite um das Fenster (BORDER)
SD.XPOS         EQU        $22  .w        Cursor Horizontalposition
SD.YPOS         EQU        $24  .w        dto., vertikal
SD.XINC         EQU        $26  .w        Zeichenbreite
SD.YINC         EQU        $28  .w        Zeichenhöhe
SD.FONT         EQU        $2A        Adressen beider Zeichensätze
SD.SCRB         EQU        $32        Bildschirmspeicher Basisadresse
SD.PMASK        EQU        $36        Maske für Papierfarbe
SD.SMASK        EQU        $3A        dto., Schrifthintergrund
SD.IMASK        EQU        $3E        dto., Tinte
SD.CATTR        EQU        $42  .b        Zeichenattribute (s. unten)
SD.CURF         EQU        $43  .b        Flag Cursor unterdrückt(0) oder sichtbar(>0)
SD.PCOLR        EQU        $44  .b        Papierfarbe      (PAPER)
SD.SCOLR        EQU        $45  .b        Hintergrundfarbe (STRIP)
SD.ICOLR        EQU        $46  .b        Tinte            (INK)
SD.BCOLR        EQU        $47  .b        Randfarbe        (BORDER)
SD.NLSTA        EQU        $48  .b        Newline-Status  automatisch >0  nur bei Angabe <0 
SD.FMOD  EQU $49 .b Fill ein(1) aus (0) 
SD.YORG  EQU $4A .fp Graphik-Fenster, Abszissen-Ursprung im Graphikmaß 
SD.XORG  EQU $50 .fp dto., Ordinatenursprung 
SD.SCAL  EQU $56 .fp dto., Maßstab 
SD.FBUF  EQU $5C Ptr auf Fill-Puffer 
SD.FUSE  EQU $60 Ptr auf frei definierten Fill-Vector, sonst 0 
SD.LINEL EQU $64 .w Länge einer ganzen Bildschirmzeile in Bytes
sd.event equ $66 .w bitfeld für 2*8 job-"events" (PIF 1.71+)
* sd.event.b wird mit iop.rptr an posn 12.b im "event-vector" übergeben
SD.END   EQU $68 I/O-Puffer bei con-Device (als queue) 

* Bitnummern zu SD.CATTR 
SD..ULIN EQU 0 UNDER 
SD..FLSH EQU 1 FLASH 
SD..TRNS EQU 2 OVER 0 und 1 
SD..XOR  EQU 3 OVER -1 (XOR) 
SD..DBHT EQU 4 Doppelte Zeichenhöhe 
SD..EXWD EQU 5 erhöhte Breite 
SD..DBWD EQU 6 doppelte Breite 
SD..GCHR EQU 7 Zeichen werden graphisch positioniert. 

* Werte zu SD.WLSTT 
SD..WLOCK EQU -1 verriegelt 
SD..WUNLK EQU 0 freigegeben 
SD..WNOLK EQU 1 keine Verriegelung 
SD..SLOCK EQU $FFFFFF80 verriegeln 
SD..SUNLK EQU $FFFFFF81 freigeben 

* Werte zu SD.BEHAV auf bit 0 eigene Marke für "gutes" Fenster 
SD..WBSEC EQU 1 "braves" Secundärfenster 
SD..WBPRM EQU $81 "braves" Primärfenster 
SD..BBSEC EQU 0 "unartiges" Secundärfenster 
SD..BBPRM EQU $80 "unartiges" Primärfenster 

* 6.2.5.3 * SER * Definitionen für serielle Ein-/Ausgabe 

SER.RXQL EQU 81 Länge Empfänger-Puffer (ungeradzahlig !) 
SER.TXQL EQU 81 dto., Sender 
* abweichend bei SQ in QXL: 
ser.qrxq equ $28 ptr auf (empfangsqueue-16) 
ser.qtxq equ $2c ptr auf (sendequeue-16) 
* Kanal-Definitionsblock - NICHT SQ/QXL 
SER.CHNO EQU 24 Kanalnummer (1 oder 2) 
SER.PAR EQU 26 Parityermittlung 
SER.TXHS EQU 28 Sender-Handshake-Flag 
SER.PROT EQU 30 Protokoll CR/LF positiv, CTRLZ null, RAW negativ 
SER.RXQ EQU 32 Header der Empfänger-Queue 
SER.TXQ EQU 32+SER.RXQL+Q.QUEUE+1 Header der Sender-Queue 
SER.END EQU SER.TXQ+SER.TXQL+Q.QUEUE+1 erforderlicher Speicher 

* 6.2.5.4 * FS * File-System Kanal-Definitionsblock (fs cdt) 

FS.NEXT         EQU    $18    *   Link in nächsten fs-Kanal
FS.ACCES        EQU    $1C .b *   Art des Zugriffs
FS.DRIVE        EQU    $1D .b *   Laufwerk ID
FS.FILNR        EQU    $1E .w     File-Nummer
FS.NBLOK        EQU    $20 .w     Blocknummer für nächstes Byte
FS.NBYTE        EQU    $22 .w     Bytenummer darin
FS.EBLOK        EQU    $24 .w     EOF in Blocknummer
FS.EBYTE        EQU    $26 .w     EOF Bytenummer darin
FS.CBLOK        EQU    $28        Ptr auf Tabelle für aktuellen Hilfsblock
FS.UPDT         EQU    $2C .b     gesetzt bei gültig verändertem File
*
FS.FNAME        EQU    $32  2 + max 36 .b * Filename
FS.SPARE        EQU    $58  72 bytes        Reserve
*        _minimale_ Lnge der FS-cdt ist 160 ($a0)
*                Eintragungen {*} vom IOSS bedient.

* 6.2.6                * CH * Header der Device-Handler
* Im Handler:
* Die Systemvariablen-Basis wird mit A6 übergeben, A7 ist der Supervisor-Stack.
* Die Geräte-Verwaltung (durch die Device-Handler) ist gewöhnlich interrupt-
* gesteuert. D3 bei Scheduler-Aufruf hat die Anzahl fehlender 20-ms-Interrupts.
* die Basisadresse des Handler-Definitionsblocks steht in A3.
* Namen für die Posten ch.lxint bis ch.aclos sind in {1} & {2} nicht angegeben.

* Verkettung und Installation der Interrupt-Bearbeitung im Bereich des
* physischen Geräte-Zugriffs. Adressen .L.. & .A.. paarweise einzutragen.
CH.LXINT  EQU    $00       link auf nächste Bearbeitung f. Externen Interrupt
CH.AXINT  EQU    $04       der hier gültige Aufruf
CH.LPOLL  EQU    $08       link auf nächste Bearbeitung eines Poll-Interrupt
CH.APOLL  EQU    $0C       der hier gültige Aufruf
CH.LSCHD  EQU    $10       link auf nächsten Scheduler-Interrupt
CH.ASCHD  EQU    $14       der hier gültige Aufruf
* In jedem Handler erforderlich ist die Einfügung CH.LIO, darauf
* folgend die drei Adressen für den Geräte-Zugriff (als Access Layer).
CH.LIO    EQU    $18       link zum nächsten I/O-Handler
CH.AIO    EQU    $1C       Adresse der Ein-/Ausgabe-Routine
CH.AOPEN  EQU    $20       Adresse der OPEN-Routine
CH.ACLOS  EQU    $24       Adresse der CLOSE-Routine
* Alias-Benennung zu den Labels ch.lio bis ch.aclos für einfache Devices
ch.next   EQU    $0        Ptr auf nächste Handler-Definition
ch.inout  EQU    $4        Einsprung für I/O (aus Trap #3)
ch.open   EQU    $8        OPEN-Einsprung    (aus Trap #2)
cj.close  EQU    $C        CLOSE-Einsprung   (dto.)

* 6.2.6.1        Nur für Directory-Devices (File System)

CH.SLAVE  EQU    $10       Einsprung zum Einrichten von Hilfsblöcken
CH.RENAM  EQU    $14       Einsprung reserviert für 'rename'
*                 18
CH.FORMT  EQU    $1C       Einsprung zum Formatieren
CH.DFLEN  EQU    $20       Länge des physischen Definitionsblocks
CH.DRNAM  EQU    $24 2+n .b Filename aus Länge.w und bis zu 36 Zeichen

* 6.2.6.2        * Q * Queue-Standardheader (bei MINERVA Q.NEXTIN auf Anfang)

Q.EOFF    EQU    $0 .b     EOF-Flag (höchstwertiges Bit)
Q.NEXTQ   EQU    $0        (Rest) Null oder link zur nächsten Queue
Q.END     EQU    $4        Ptr hinter das Ende des Queue-Pufferbereiches
Q.NEXTIN  EQU    $8        Ptr auf nächste Schreibposition (init. Ende)
Q.NXTOUT  EQU    $C        Ptr auf nächste Leseposition    (init. Ende)
Q.QUEUE   EQU    $10       Beginn des Puffers

* 6.2.6.3        * BT * Organisation eines "slave block"

BT.STAT   EQU    $00 .b        drive-ID & status byte (s. u.)
BT.PRIOR  EQU    $01 .b        Prioritätszahl für diesen Block
BT.SECTR  EQU    $02 .w        Sector-Nummer (Microdrive * 2)
BT.FILNR  EQU    $04 .w        File-Nummer  (mdv)  } logische
BT.BLOCK  EQU    $06 .w        Block-Nummer (mdv)  }  Adresse
BT.END    EQU    $08

* Zu BT.STAT:
* Die höchstwertigen vier Bits enthalten den Ptr auf den physischen
* Geräte-Block SV.FSDEF, die anderen Bits haben folgende Bedeutung:

*          Statuscodes:
BT.UNAV   EQU    %0000        Block für File-System nicht verfügbar
BT.EMPTY  EQU    %0001        Block leer
BT.RREQ   EQU    %1001        Anforderung, diesen Block vom mdv zu lesen
BT.TRUE   EQU    %0011        Block ist wahres Abbild des File-Inhalts
BT.AVER   EQU    %1011        Block erwartet Verifikation
BT.UPDT   EQU    %0111        Block ist verändert worden (updated)

*          Statuscode-Masken:
BT.ACTN   EQU    %00001100    Lese- oder Schreibanforderung prüfen
BT.INUSE  EQU    %00001110    prüfen, ob ein File-Block besetzt ist

*          Bedeutung gesetzter Bits des Statuscode:
BT..FILE  EQU        0        bezeichnet einen File-Block
BT..ACCS  EQU        1        Zugriff auf den Inhalt freigegeben
BT..WREQ  EQU        2        Schreibanforderung
BT..RDVR  EQU        3        Anforderung zum Lesen oder Verifizieren

* 6.2.6.4                gemeinsamer Teil im physischen Filesystem-Definitionsblock

FS.DRIVR  EQU    $10    *        Ptr auf Handler
FS.DRIVN  EQU    $14 .b *        Laufwerk Nummer
FS.MNAME  EQU    $16  2 + max 10 .b  * Mediumname
FS.FILES  EQU    $22 .b        Anzahl offener Files

* Positionen * werden bei Einrichtung der Tabelle  vom IOSS belegt.

* 6.2.6.5        * MD * Physische mdv-Definitionen

MD.DRIVR  EQU    $10        Ptr auf Handler
MD.DRIVN  EQU    $14 .b        Laufwerksnummer
MD.MNAME  EQU    $16 2 + 10 .b        Mediumname und Prüfzahl
MD.FILES  EQU    $22 .b        Anzahl offener Files
MD.ESTAT  EQU    $23 .b        Fehlerzustand  okay(0) fehlerhaft(-1)
MD.FAIL   EQU    $24 .b        Zähler für Fehlversuche
MD.MAP    EQU    $28 256*2 bytes        Sector-Plan (mdv map)
MD.FILMP  EQU    $28        darin Files in Sectoren * 2
*                                schlecht $FE, frei $FD
*                                während des Löschens $FC
MD.BLKMP  EQU    $29        Block in Sectoren * 2
MD.LSECT  EQU    $226 .w        letzter zugewiesener Sector
MD.PENDG  EQU    $228 256.w Je Sector * 2  Verzeichnis anstehender Operationen
*        keine(0), slave block nr(>0), schreiben(-1), verifizieren(-2)
MD.END    EQU    $428

* 6.2.6.6        Definitionen zur Directory-Struktur - Namen frei gewählt

MD.FLEN   EQU    $00        Filelänge
MD.FACS   EQU    $04  .b        File-Zugriffsschlüssel
MD.FTYP   EQU    $05  .b        File-Typ
MD.FINF   EQU    $06  8.b        Fileinformation
MD.FNAM   EQU    $0E  2+36 .b Filename
MD.FUPDT  EQU    $34        Datum des jüngsten Schreibvorganges
MD.FREAD  EQU    $38        dto., Lesevorgang
MD.FCOPY  EQU    $3C        dto., Copieren
MD.DEND   EQU    $40        Länge des Directory-Blocks

* 6.2.6.7 erweiterter Dfinitionsblock des Pointer-Device (CON- und SCR-Kanäle)

PT_WMAN   EQU        $28        Ptr auf WINDOW MANAGER VERSION / VECTOR
PT_WMOVE  EQU        $2C  .b        TOP WINDOW MOVE / RESIZE STATUS (0, $80, $81) 
PT_KEYRW  EQU        $2D  .b        jüngste KEYROW
PT_XICNT  EQU        $2E  .w        Zähler der EXTERNAL INTERRUPTS
PT_ACCEL  EQU        $30  .w        ACCELERATOR (Gaspedal für den Tastatur-Cursor)
PT_KACCL  EQU        $32  .w        ACCELERATOR Cont. (D=1+TICKS/KACCL)
PT.KACCL  EQU        8                Vorgabewert zu pt_kaccl
PT_XACCL  EQU        $34  .w        X-MAUS-ACCELERATOR(X=X+(XINC*(XACCL+XINCT)/(XACCL+1)
PT.XACCL  EQU        4                Vorgabewert
PT_YACCL  EQU        $36                Y-MAUS-ACCELERATOR
PT.YACCL  EQU        8                Vorgabewert
PT_NPOS   EQU        $38                Neue Position (aus polled Int.)
PT_NXPOS  EQU        $38  .w        X
PT_NYPOS  EQU        $3A  .w        Y
PT_POS    EQU        $3C                aktuelle Position
PT_XPOS   EQU        $3C  .w        X
PT_YPOS   EQU        $3E  .w        Y
PT_INC    EQU        $40                Schrittweite für die Position
PT_XINC   EQU        $40  .w        X
PT_YINC   EQU        $42  .w        Y
PT_ADDR   EQU        $44                Bildschirmadresse des Pointers
PT_BSTAT  EQU        $48  .b        BUTTON STATUS
PTB.BNCE  EQU        -2                ... BUTTON BOUNCING
PTB.UP    EQU         0                ... BUTTON UP
PTB.PRES  EQU         1                ... BUTTON PRESSED
PT_BSUPP  EQU        $49  .b        BUTTON unterdrückt
PTB.PSUP  EQU        -1                ... Taste unterdrückt
PTB.SSUP  EQU         1                ... Berührung (Überfahren) unterdrückt
PT_BPRES  EQU        $4A  .b        BUTTON getastet (SPACE/HIT oder ENTER/DO)
;        0        keine taste
;        1        linke maus
;        2        rechte maus
PT_BCURR  EQU        $4B  .b        BUTTON just getastet (wird als berührt gelten)
PT_WAKE   EQU        $4C  .b        EXTERNAL INTERRUPTS zum Aufwecken des Pointers
PT.WAKE   EQU        8                Vorgabe für die Anzahl
PT_RELAX  EQU        $4D  .b        Abklingzeit für Tastaturübernahme
PT.RELAX  EQU        25                Vorgabe
PT_RELTM  EQU        $4E  .b        Timer (Zähler) für die Abklingzeit
PT_KPRTM  EQU        $4F  .b        Timer für Tastaturbetätigung
PT_PSTAT  EQU        $50  .b        POINTER - 0 sichtbar, <0 wartend,>0 unbeweglich
PT.SUPKY  EQU         1                ganz unterdrücken bei Tastatureingabe
PT.SHOW   EQU        -1                POINTER beim nächsten Aufruf anzeigen
PT.SUPIO  EQU         1                IO - dauerhaft unterdrücken (<0 NIE freigeben) 
PT.SUPMD EQU 1 desgleichen bei MODE 
PT.SUPCC EQU -2 Unteerdrückung bei CTRL/C 
PT.SUPSR EQU -2 auch für SAVE oder RESTORE - 2 TICKS 
PT.CLRDM EQU 20 Wartezeit zum Löschen der DUMMY QUEUE 
PT_PMODE EQU $51 alte MODE 
PT_SCHFG EQU $52 SCHEDULER FLAG,=/=0 nach erneuertem Pointer-Record 
PT_FREEZ EQU $53 POINTER einfrieren 
PT.FREEZ EQU 5 Vorgabe 1/10 SEC 
PT_CLINK EQU $54 Adresse der CON-Device-Handler-Verkettung, PIF hilfskanal-handler 
PT_MTEST EQU $58 Adresse MODE CHANGE CHANNEL TEST, cdt des hilfskanals 
PT_PSPRT EQU $60 Ptr zum SPRITE 
PT_SPSAV EQU $64 Bereich für SPRITE-SAVE 
PT.SPSLN EQU $360 Vorgabe 64X48 PIXELS 18X48 BYTES 
PT_HEAD EQU $68 Ptr zum Kopf der Liste der PRIMARY WINDOWS 
PT_TAIL EQU $6C dto. zum Ende 
PT_LIODM EQU $70 DUMMY IO LINKAGE (INITIAL OPEN) 
PT_AIODM EQU $74 DUMMY IO ENTRY POINT 
PT_AOPDM EQU $78 DUMMY OPEN (STANDARD CON, abgeändert) 
PT_ACLDM EQU $7C DUMMY CLOSE (abgekoppelte CON) 
PT_DUMQ1 EQU $80 Ptr auf 1. DUMMY QUEUE (des hilfskanals, ohne PIF-disp.) * pt_dumq1 gilt bei maus-daten 
PT_KQOFF EQU $84 Ofs. der der Tastatur-QUEUE zu (A0) 
PT_COPEN EQU $88 Ptr auf standard CONSOLE OPEN 
PT_LSTUF EQU $8C .b Letze Button-Taste für den STUFFER 
PT_STUF1 EQU $8D .b 1. CHARACTER TO STUFF 
PT_STUF2 EQU $8E .b 2. dto. 
PT_REC EQU $90 aktueller POINTER RECORD (Bericht) 
PT_CCHAD EQU $A8 Adresse des Fensterkanals unter dem Pointer 
PT_CWSTT EQU $AC .b aktueller Fensterstatus +1 flasche MODE, -1 Taste 
PT_CWBSY EQU $AD .b Zähler für besetztes Fenster 
PT.CWBSY EQU 10 Anzahl SCHEDULER-Aufrufe vor BUSY-Zustand 
PT_SUPCR EQU $AE .b CURSOR KEY STUFFING unterdrücken 
PT_KYPOL EQU $AF .b Taste polled 
PT_SVERS EQU $B0 .b DYNAMIC SPRITE VERSION ( = zähler für zappel-sprites) 
PT_MVERS EQU $B1 .b Zählermaximum dazu 
PT_RANDI EQU $B2 .w Anfangswert der Zufallszahl für SPRAY 
PT.RANDM EQU $E72B Multiplikator dafür 
PT.RANDA EQU 3 Zugabe dafür 
PT_SPBUF EQU $B4 Ptr auf PIXEL SPRAY Puffer 
PT_SPBSZ EQU $B8 dessen Größe 
PT_HBASE EQU $BC HARDWARE Basisadresse 
PT_KYRWR EQU $C0 Ptr auf Routine für KEYROW 
PT_PTROK EQU $C4 Ptr auf OK 
PT_AIORM EQU $C8 Ptr auf ROM I/O ROUTINE 
PT_AOPRM EQU $CC Ptr auf ROM OPEN ROUTINE 
PT_ACLRM EQU $D0 Ptr auf ROM CLOSE ROUTINE 
PT_OCHAD EQU $D4 OLD CURRENT CHANNEL ADDRESS 
* 6 .b Reserve 
pt.filf equ $dd .b flag zur datenuebernahme aus iop.film, trap#3 
PT_CKEYW EQU $DE .b 0, wenn Cursor den Pointer fensterbezogen bewegt, -1 ohne tastenauswertung
PT_CKEY EQU $DF .b Einstellung durch "CKEYON"/"CKEYOFF":
* P.E.: 0, wenn Cursor den Pointer bewegen kann, sonst $ff
* .hpr: %1101.0111 (keyrow#1:dn,spc,rgt,up,lft,enter), sonst %0100.0001
PT_END EQU $E0 Länge des Pointer Linkblockes 
* weitere posten, nicht dokumentiert, ermittelt aus PIF 1.48..1.71
pt.minxy equ $e0 \in iop.film
pt.maxxy equ $e4 /besetzt (und pt.filf:=-1, s.o.)
pt.vram equ $e8 videoram-adresse 
pt.vsiz equ $ec groesze des vram-bereichs 
pt.linl equ $f0 .w sd.linel-vorgabe fuer ganzes bild 
pt.xmax equ $f2 .w maximale breite in pixel 
pt.ymax equ $f4 .w max. hoehe

* 
* 6.2.7 * NET 
* Netzwerk-Datenblock 
NET.HEDR EQU $18 8.b Vorspann für Datenpaket (header) : 
NET.DEST EQU $18 .b Nummer der Zielstation 
NET.SELF EQU $19 .b Nummer der eigenen Station 
NET.BLKL EQU $1A .b Datenblock-Nummer lo (low byte) 
NET.BLKH EQU $1B .b dto., hi (high byte) 
NET.TYPE EQU $1C .b Blöcke senden, EOF(1), nicht EOF(0) 
NET.NBYT EQU $1D .b Anzahl übertragener Bytes 
NET.DCHK EQU $1E .b Daten-Prüfsumme 
NET.HCHK EQU $1F .b Vorspann-Prüfsumme 
NET.DATA EQU $20 255.b Datenblock 
NET.RPNT EQU $11F .b Laufpointer auf Datenblock 

* 6.2.8 * CMD 
* IPC-Befehle für MT.IPCOM 
* nach dem Befehl folgt vor den Parametern in einem Byte die Angabe, wieviele 
* Parameter vorhanden sind, dann in je 2 Bits für die einzelnen Bytes, wie mit 
* den möglichen sechzehn Bytes der Parameter-Tabelle zu verfahren ist : 
* %00 die niederwertigen 4 Bits senden 
* %01 nichts zu senden 
* %10 alle 8 Bits senden 
* %11 nichts senden 
* Alle 16 Angaben sind einzutragen, auch, wo der Befehl das nicht erfordert. 
* Nach den Parametern steht in Bits 0 und 1 eines Byte. Gleiches gilt für die Antwort. 
* Kommandos, die mehr als 8 Bits zurueckgeben, sind nur direkt ueber die Hardware-Register 
* oder die ROM-spezifischen internen Sytemaufrufe ausfuehrbar, da dem IPC immer erst 
* alle Bits abgenommen werden muessen, bevor er neue Kommandos empfangen kann. 

RSET.CMD EQU 0 Systemreset für CoProc 
STAT.CMD EQU 1 Report Input-Status: 
* Bit Bedeutung 
STAT.KPN EQU 0 Tastenpuffer enthält Zeichen 
STAT.SON EQU 1 Tongenerator ist in Betrieb 
STAT.IP1 EQU 4 ser1-Puffer enthält Daten 
STAT.IP2 EQU 5 ser2-Puffer dto. 
STAT.WP  EQU 6 mdv-Schreibfreigabe 
OPS1.CMD EQU 2 RS232 Kanal 1 öffnen 
OPS2.CMD EQU 3 dto., 2 
CLS1.CMD EQU 4 RS232 Kanal 1 schließen 
CLS2.CMD EQU 5 dto., 2 
RDS1.CMD EQU 6 RS232 Kanal 1 lesen 
RDS2.CMD EQU 7 dto., 2 
* RDSx.CMD Bitmasken: vor den Zeichen wird erst ein Statusbyte empfangen. 
RSST.NO  EQU %00111111 Anzahl der übertragenen Bytes 
RSST.FE1 EQU %01000000 ser1-Fehler - Stop-Bit fehlte 
RSST.FE2 EQU %10000000 ser2 dto. 
RDKB.CMD EQU 8 Tastatur lesen 
* RDKB.CMD zuerst vier Statusbits (Bitmasken) 
RDKB.NO  EQU %0111 Anzahl Zeichen im Puffer des CoProc 
RDKB.RPT EQU %1000 Bit gesetzt bei Tastenwiederholung 
* dann vor jedem 8-Bit-Zeichen 4 Bits für die Sondertasten (Bitnummern) 
RDKB.ALT EQU 0 ALT-Taste 
RDKB.CTL EQU 1 CTRL-Taste 
RDKB.SFT EQU 2 SHIFT-Taste 
RDKB.OVF EQU 3 vor letzem Zeichen bei Pufferüberlauf 
KBDR.CMD EQU 9 Tastaturmatrix Zeilenweise lesen 
* Zeilennummer ist in 4 Bits anzugeben, 8-Bit-Zeichen kommt wie bei KEYROW
* KEYROW-WERTE
*		JM-/JS							MGG
* 	1    2    4    8    16   32   64   128		   1    2    4    8    16   32   64   128
*    0: F4   F1   5    F2   F3   F5   4    7		0: F4   F1   5    F2   F3   F5   4    7
*    1: RTN  lft  up   ESC  rgt  \    SPC  dwn		1: RTN  li   hoch ESC  re   < SPC  runter
*    2: [    Z    .    C    B    £    M    ;		2: +    Y    .    C    B    \    M    Ä
*    3: ]    LOK  K    S    F    =    G    ~		3: Ü    LOK  K    S    F    #    G    Ö
*    4: L    3    H    1    A    P    D    J		4: L    3    H    1    A    P    D    J
*    5: 9    W    I    TAB  R    -    Y    O		5: 9    W    I    TAB  R    ß    Z    O
*    6: 8    2    6    Q    E    0    T    U		6: 8    2    6    Q    E    0    T    U
*    7: SH   CTRL ALT  X    V    /    N    ,		7: SH   CTRL ALT  X    V    -    N    ,
* 
INSO.CMD EQU 10 Tongenerator starten 
* INSO.CMD 8 Parameterbytes 
INSO.FRL EQU 0 niedrigster Ton 
INSO.FRH EQU 1 höchster Ton 
INSO.FXL EQU 2 Dauer.w eines Tones, lo-Byte 
INSO.FXH EQU 3 dto., hi-Byte 
INSO.MXL EQU 4 Dauer.w des gesamten Klanges, lo-Byte 
INSO.MXH EQU 5 dto., hi-Byte 
INSO.FRY EQU 6 
* %00001111 Wiederholungsrate 
* %11110000 Schrittweite zur nächsten Frequenz 
INSO.RND EQU 7 
* %00001111 Verzerrrung der Widerholungsrate 
* %11110000 dto., Schrittweite 
KISO.CMD EQU 11 Tongenerator abschalten 
MDRS.CMD EQU 12 %0001 - verminderte Mdv-Empfindlichkeit 
BAUD.CMD EQU 13 Baudrate einstellen 
* BAUD.CMD in 4 Bits ist die Potenz von 2 anzugeben, durch die 19200 für die 
* einzustellende Baudrate geteilt werden muß, statt 150 Baud gelten 75 Baud. 
BAUD.192 EQU %0000 19200=19200 2^0 
BAUD.96  EQU %0001 9600=19200 2^1 
* und weiter bis 
BAUD.3   EQU %0101 300=19200 2^6 
BAUD.1   EQU %0111 75=19200  2^7 2 - als Sonderfall 
RAND.CMD EQU 14 Erzeugen einer 16-Bit-"Zufalls"-Zahl 
TEST.CMD EQU 15 Test durch unveränderte Rückgabe eines 8-Bit-Wertes 

* 6.3 * TRAP 
* 
* 6.3.1 TRAP #0 Supervisor-Mode einstellen 
* Processor-Status geht verloren.
* Nur MINERVA setzt S-Bit direkt & erhält den alten Status.

* 6.3.2 TRAP #1 Manager - Systemverwaltung 
MT.INF   EQU $00 Systeminformation 
MT.CJOB  EQU $01 Job einrichten 
MT.JINF  EQU $02 Angaben zu einem Job 
MT.RJOB  EQU $04 Job entfernen 
MT.FRJOB EQU $05 Job unter allen Umständen entfernen 
MT.FREE  EQU $06 größten zusammenhängenden freien Speicher ermitteln 
MT.TRAPV EQU $07 Liste neuer Trap-Vectoren einfügen 
MT.SUSJB EQU $08 Job sperren (suspendieren) 
MT.RELJB EQU $09 Suspendierung eines Job aufheben 
MT.ACTIV EQU $0A Job aktivieren 
MT.PRIOR EQU $0B Prioritätszahl eintragen 
MT.ALLOC EQU $0C Abschnitt des Heap reservieren 
MT.LNKFR EQU $0D dto., freigeben 
MT.ALRES EQU $0E Abschnitt im Bereich residenter Proceduren reservieren 
MT.RERES EQU $0F dto., freigeben 
MT.DMODE EQU $10 Bildschirm-Betriebsart festlegen 
MT.IPCOM EQU $11 IPC-Kommando senden 
MT.BAUD  EQU $12 Baudrate festlegen 
MT.RCLCK EQU $13 Uhr lesen 
MT.SCLCK EQU $14 Uhr auf einen Zählerstand setzen 
MT.ACLCK EQU $15 Uhr stellen 
MT.ALBAS EQU $16 Basic-Speicher erweitern (rel A6) 
MT.REBAS EQU $17 Basic-Speicher zurückgeben (rel A6) 
MT.ALCHP EQU $18 Bereich im Common Heap reservieren 
MT.RECHP EQU $19 dto., freigeben 
MT.LXINT EQU $1A Handler in Extern-Interrupt-Liste einfügen 
MT.RXINT EQU $1B dto., entfernen 
MT.LPOLL EQU $1C (polled) Task in Liste für Abfrage-Interrupt einfügen 
MT.RPOLL EQU $1D dto., entfernen 
MT.LSCHD EQU $1E Task in Scheduler-Liste einfügen 
MT.RSCHD EQU $1F dto., Handler entfernen 
MT.LIOD  EQU $20 Liste der I/O-Device-Handler erweitern 
MT.RIOD  EQU $21 I/O-Handler entfernen 
MT.LDD   EQU $22 Liste der Directory-Device-Handler erweitern 
MT.RDD   EQU $23 dto., Handler entfernen 
MT.CNTRY EQU $24 TRA-Tabellen einfügen 
MT.TRA   EQU mt.cntry 
MT.NIX   EQU $25 Sinclair reserviert, ohne bekannte Verwendung 
* mit der Thing-Erweiterung in SMS2 und EMU zusätzlich 
SMS.LTHG EQU $26 Thing einfügen 
SMS.RTHG EQU $27 nicht benutztes Thing entfernen 
SMS.UTHG EQU $28 Thing benutzen 
SMS.FTHG EQU $29 freigeben 
SMS.ZTHG EQU $2A wegnehmen 
SMS.NTHG EQU $2B nächstes in der Reihenfolge 
SMS.STHG EQU $2C nächsten Benutzer angeben 
SMS.NTHU EQU sms.sthg 

* 6.3.3 Trap #2 - I/O-Zuweisung 
IO.OPEN EQU 1 OPEN abhängig von D3 (s.u.) 
IO.CLOSE EQU 2 CLOSE 
IO.FORMT EQU 3 FORMAT 
IO.DELET EQU 4 DELETE 
* D3-Codierung IO.OPEN 
IO.OLD EQU 0 OPEN vorhandenes File oder Gerät 
IO.SHARE EQU 1 OPEN_IN File, mehrere Kanäle zum selben File möglich 
IO.NEW EQU 2 OPEN_NEW File 
IO.OVERW EQU 3 TK OPEN_OVER File neu eröffnen, altes überschreiben 
IO.DIR EQU 4 TK OPEN_DIR Directory aufmachen 

* 6.3.4 Trap #3 - I/O allgemein, Bildschirm, Fenster, Files 

* 6.3.4.1 I/O 
IO.PEND EQU 0 auf vorhandene Eingabe prüfen 
IO.FBYTE EQU 1 ein Byte holen 
IO.FLINE EQU 2 eine Zeile Bytes holen 
IO.FSTRG EQU 3 eine Kette Bytes holen (string) 
IO.EDLIN EQU 4 eine Zeile editieren 
IO.SBYTE EQU 5 ein Byte senden 
IO.SSTRG EQU 7 eine Kette Bytes senden 

* 6.3.4.2 Bildschirm und Fenster 
SD.EXTOP EQU 9 frei Definierte Operation, Adresse(A3) 
SD.PXENQ EQU $0A Fenstermaße & Cursor in Pixel-Daten 
SD.CHENQ EQU $0B dto., auf Zeichen bezogen 
SD.BORDR EQU $0C BORDER 
SD.WDEF  EQU $0D WINDOW 
SD.CURE  EQU $0E Cursor freigeben 
SD.CURS  EQU $0F Cursor unterdrücken 
SD.POS   EQU $10 Cursor auf Zeile/Spalte in Zeichen 
SD.TAB   EQU $11 Cursor auf Spalte 
SD.NL    EQU $12 neue Zeile 
SD.PCOL  EQU $13 vorige Spalte 
SD.NCOL  EQU $14 nächste Spalte 
SD.PROW  EQU $15 vorige Zeile 
SD.NROW  EQU $16 nächste Zeile - ohne SCROLL am Bildende 
SD.PIXP  EQU $17 Cursor auf Pixel-Position 
SD.SCROL EQU $18 SCROLL 
SD.SCRTP EQU $19 SCROLL oberes Teilfenster 
SD.SCRBT EQU $1A SCROLL unteres Teilfenster 
SD.PAN   EQU $1B PAN 
SD.PANLN EQU $1E PAN Cursorzeile 
SD.PANRT EQU $1F PAN rechten Teil der Cursorzeile 
SD.CLEAR EQU $20 CLS 
SD.CLRTP EQU $21 CLS oberes Teilfenster 
SD.CLRBT EQU $22 CLS unteres Teilfenster 
SD.CLRLN EQU $23 CLS Cursorzeile 
SD.CLRRT EQU $24 CLS rechten Teil der Cursorzeile 
SD.FOUNT EQU $25 Adressen für die Zeichensätze eintragen 
SD.RECOL EQU $26 RECOL 
SD.SETPA EQU $27 PAPER 
SD.SETST EQU $28 STRIP 
SD.SETIN EQU $29 INK 
SD.SETFL EQU $2A FLASH 
SD.SETUL EQU $2B UNDER 
SD.SETMD EQU $2C OVER 
SD.SETSZ EQU $2D CSIZE 
SD.FILL  EQU $2E BLOCK 
SD.BLOK  EQU sd.fill 
SD.DONL  EQU $2F anstehenden Zeilenvorschub ausführen 
SD.POINT EQU $30 POINT 
SD.DOT   EQU sd.point 
SD.LINE  EQU $31 LINE 
SD.ARC   EQU $32 ARC 
SD.ELIPS EQU $33 ELLIPSE 
SD.SCALE EQU $34 SCALE 
SD.FLOOD EQU $35 FILL 
SD.GCUR  EQU $36 CURSOR mit vier Parametern 
* weiter nicht dokumentiert $37 bis $39 
sd.rop   equ $37 Rasteroperation - Verwendung nicht bekannt 
sd.dot   equ $38 POINT in Pixel-Koordinaten, dto. 
sd.lin   equ $39 LINE, dto. 

* 6.3.4.3 file system 
FS.CHECK EQU $40 auf zur Bearbeitung anstehende Operationen prüfen 
FS.FLUSH EQU $41 FLUSH - alle Puffer abschließend sichern 
FS.POSAB EQU $42 setzt File-Pointer Position absolut 
FS.POSRE EQU $43 dto., relativ zur aktuellen Position 
FS.POSV  EQU $44 SM (unsichere Angabe zu sms2 : auf virtuelle Adresse) 
FS.MDINF EQU $45 Information über ein Medium holen 
FS.HEADS EQU $46 File-Header eintragen 
FS.HEADR EQU $47 dto., lesen 
FS.LOAD  EQU $48 LBYTES - File laden 
FS.SAVE  EQU $49 SBYTES - File sichern 
* dazu mit Trumpcard Toolkit II 
FS.RENAME EQU $4A RENAME - File umbenennen 
FS.TRUNC EQU $4B TRUNCATE - File an aktueller Position kappen 
* mit Level 2 Device-Handler (TrumpCard, GoldCard, SMS2) 
FS.DATE  EQU $4C Lesen/Eintragen des Update- oder Backup-Datums 
FS.MKDR  EQU $4D (leeres) File zum Directory machen * 4E "Wasserstand" bei Thor 
FS.VERS  EQU $4E Lesen/Eintragen der File-Versionsnummer 
FS.XINF  EQU $4F erweiterte Angaben zu Device- und Mediumnamen holen 

* 6.3.4.4 Pointer - Traps 
IOP.FLIM EQU $6C Fensterbegrenzung holen 
IOP.SVPW EQU $6D Teil eines Fensters sichern 
IOP.RSPW EQU $6E Teil eines Fensters zurückholen 
IOP.SLNK EQU $6F Bytes in den Link-Block eintragen 
IOP.PINF EQU $70 PIF vorhanden, oder nicht 
IOP.RPTR EQU $71 Pointer lesen 
IOP.RPXL EQU $72 Pixel lesen: 
* IOP.RPXL Bits Anforderung 
IOP..GCL EQU 16 mit angegebener Farbe 
IOP..SDR EQU 17 nach unten rechts abtasten 
IOP..SLR EQU 18 von links nach rechts abtasten 
IOP..SSC EQU 19 dieselbe Farbe suchen 
IOP..SCN EQU 31 Abtastung freigeben 
IOP.WBLB EQU $73 ein Ei legen: 'Blob' ist ein rundliches Muster 
IOP.LBLB EQU $74 eine Line Blobs zeichnen 
IOP.WSPT EQU $76 Sprite schreiben 
IOP.SPRY EQU $77 Pixels versprühen 
IOP.FILM EQU $79 FILL innerhalb einer Maske 
IOP.OUTL EQU $7A Fenstermaße setzen: 
* IOP.OUTL mit den Werten 
IOP..SET EQU 0 gerade erledigt 
IOP..MOV EQU 1 Inhalt umsetzen und Maße einrichten 
IOP.SPTR EQU $7B Pointer-Position setzen: 
* IOP.SPTR mit den Werten 
IOP..REW EQU -1 Pointer relativ zum Fenster 
IOP..ABS EQU 0 mit absoluter Position 
IOP..REH EQU 1 relativ zum "hit"-Bereich 
IOP.PICK EQU $7C Fenster hervorholen (pick) oder verbergen: 
* IOP.PICK mit den Werten 
IOP..BOT EQU -1 Unteren Bereich holen 
IOP..NLK EQU -2 Verriegelbarkeit aufheben 
iop..frz equ -3 Bildzustand einfrieren (wie CTR/F5) 
IOP.SWDF EQU $7D "sub-window"-Liste uebergeben 
IOP.WSAV EQU $7E ganzes Fenster sichern 
IOP.WRST EQU $7F ganzes Fenster wiederherstellen 

* 6.4.1 * Qdos-Vectoren alphabetisch (MINERVA-Teile klein geschrieben) 
* B spez. zum Basic-Interpreter 
* S NUR im Supervisor-Betrieb und NICHT aus Interrupt-Routine heraus 
* U NICHT im Supervisor-Betrieb aufzurufen. 
* + Vectoren ab $124 sind mit $4000(An) aufzurufen. 

* BP * BV * 
bp.chan  equ $140 + Parameter als Kanalnummer holen, Vorgabe #1 
bp.chand equ $142 + dto., Vorgabe wählbar 
bp.chnew equ $146 + neuen Basic-Kanal aufmachen 
bp.chnid equ $144 + Kanal-ID überprüfen 
bp.fname equ $148 + Parameter als Filenamen holen 
BP.INIT  EQU $110 Einfügen neuer Basic-Proceduren (und Funktionen) 
BP.LET   EQU $120 Variablenzuweisung 
BV.CHRIX EQU $11A Platz im Rechnerstack prüfen & freimachen 
; BV.CH.. undokumentiert; ..0 mit D1:=len, sonst vorgabe s.u.:
BV.CHRRX	equ BV.CHRIX-2	RI Stack - 60.b (NUR MINERVA(?) ptr: bv.rip
BV.CHBTX 	equ BV.CHRIX+4  Backtrack Stack - 12.b : bv.btp
BV.CHBTX0	equ BV.CHRIX+6
BV.CHTGX	equ BV.CHRIX+10 Temp. (syntax) Graph Stack - 4.b : bv.tgp
BV.CHTGX0	equ BV.CHRIX+12
BV.CHNTX	equ BV.CHRIX+16 Name Table - 8.b : bv.ntp
BV.CHNTX0	equ BV.CHRIX+18
BV.CHRTX	equ BV.CHRIX+22 Return Table  - 24.b (MI) : bv.rtp
;						22.b (MGG)
BV.CHRTX0 	equ BV.CHRIX+24
BV.CHBFX0 	equ BV.CHRIX+28 Basic-Puffer : bv.bfp
BV.CHTKX0 	equ BV.CHRIX+32 Token-Liste : bv.tkp
BV.CHNLX0 	equ BV.CHRIX+36 Namen-Liste : bv.nlp
BV.CHVVX0 	equ BV.CHRIX+40 Variablenwerte (nicht SQ) : bv.vvp
BV.CHCHX0 	equ BV.CHRIX+44 Kanaltabelle : bv.chp
BV.CHLNX0 	equ BV.CHRIX+48 Zeilennummern (nicht SQ) : bv.lnp
BV.CHPFX0	equ BV.CHRIX+52 Programm : bv.pfp
* CA * CN *
CA.GTFP  EQU $114 f.p.-Zahl holen 
CA.GTINT EQU $112  16-Bit-Ganzzahl holen 
CA.GTLIN EQU $118  32-Bit-Ganzzahl holen 
CA.GTSTR EQU $116  Zeichenstrang holen 
ca.cnvrt equ $14a + Datentyp umwandeln 
ca.eval  equ $14e + (nicht erklärt, re ROM-code)
ca.opexe equ $14c + (dto.) 
CN.BTOIB EQU $104 ASCII nach Binär, 8-Bit-Zahl 
CN.BTOIL EQU $108 dto., 32-Bit 
CN.BTOIW EQU $106 dto., 16-Bit 
CN.DATE  EQU $EC Datum in sec als 32-Bit-Zahl 
CN.DAY   EQU $EE Wochentag 
CN.DTOF  EQU $100 ASCII nach f.p.-Zahl 
CN.DTOI  EQU $102 dto., 16-Bit 
CN.FTOD  EQU $F0 f.p. nach ASCII 
CN.HTOIB EQU $10A ASCII nach sedecimal, 8-Bit-Zahl 
CN.HTOIL EQU $10E dto., 32-Bit 
CN.HTOIW EQU $10C dto., 16-Bit 
CN.ITOBB EQU $F4 binär nach ASCII, 8-Bit-Zahl 
CN.ITOBL EQU $F8 dto., 32-Bit 
CN.ITOBW EQU $F6 dto., 16-Bit 
CN.ITOD  EQU $F2 16-Bit-Ganzzahl nach ASCII 
CN.ITOHB EQU $FA sedecimal nach ASCII, 8-Bit-Zahl 
CN.ITOHL EQU $FE dto., 32-Bit 
CN.ITOHW EQU $FC dto., 16-Bit 
* GO * 
go.new equ $13e + NEW ausführen 
* IO * IP * 
IO.NAME  EQU $122 Prüfen eines Devicenamen 
IO.QEOF  EQU $E4 Queue EOF markieren 
IO.QIN   EQU $E0 Byte in Queue ablegen 
IO.QOUT  EQU $E2 Byte einer Queue entnehmen 
IO.QSET  EQU $DC Queue einrichten 
IO.QTEST EQU $DE Status einer Queue prüfen 
IO.SERIO EQU $EA S Allgemeine I/O-Bearbeitung 
IO.SERQ  EQU $EB S Direkte Queue-Bearbeitung 
ip.kbend equ $152 S + abschließende Tastatur-Auswertung 
ip.kbrd  equ $150 S + Tastatur lesen 
* 
MD.READ  EQU $124 + einen Sector lesen 
MD.SECTR EQU $12A + Sectorheader lesen 
MD.VERIN EQU $128 + einen Sector mit eigenen Daten vergleichen 
MD.WRITE EQU $126 + einen Sector schreiben 
mi.muell equ $156 NIE ! hier steht -1, Aufruf bewirkt Adressierungsfehler 
MM.ALCHP EQU $C0 S Bereich aus dem Common Heap zuweisen 
MM.ALLOC EQU $D8 Heap-Bereich reservieren 
MM.LNKFR EQU $DA freien Speicher an Heap zurückgeben 
mm.move  equ $158 + Speichertransfer absolut 
mm.mrtoa equ $15a U + dto., rel nach abs 
mm.mator equ $15c U + dto., abs nach rel 
mm.mrtor equ $15e U + dto., rel nach rel 
MM.RECHP EQU $C2 S Bereich des Common Heap freigeben 
* RI 
RI.EXEC  EQU $11C eine Rechneroperation ausführen 
RI.EXECB EQU $11E eine Liste Rechneroperationen ausführen 
* SB 
sb.expgr equ $130 B + "expression"-Graph 
sb.expnd equ $138 B + Klartext-Zeile ausgeben 
sb.graph equ $12e B + Syntax-Graph, s. {22} 
sb.ledit equ $136 B + Basic-Zeileneditor (Beispiele z.B. in ED des TK2) 
sb.pearr equ $134 B + Parser-Fehler 
sb.paini equ $13a B + Parser initiieren 
sb.parse equ $12c B + Basic-Parser 
sb.start equ $154 + Basic-Job starten 
sb.strip equ $132 B + Leezeichen einer tokenisierten Zeile entfernen 
* UT 
UT.CON   EQU $C6 Consolfenster einrichten 
UT.CSTR  EQU $E6 zwei Strings vergleichen 
UT.ERR0  EQU $CA Fehlermeldung an Kanal 0 oder 1 (fehlerhaft !) 
UT.ERR   EQU $CC dto., an beliebigen Kanal 
ut.istr  equ $13c + INSTR-Operation ausführen 
UT.LINK  EQU $D2 einen Posten einer gefädelten Liste zufügen 
UT.MINT  EQU $CE Integer nach ASCII 
UT.MTEXT EQU $D0 einen Text ausgeben 
UT.SCR   EQU $C8 Bildschirmfenster einrichten 
UT.UNLNK EQU $D4 Listenelement entfernen 
UT.WINDW EQU $C4 Fenster beliebiger Art einrichten 

* 6.4.2 * Hotkey-Vectoren, nur innerhalb des Hotkey-Systems. 
HK.CRJOB EQU $018 Job einrichten 
hk.cjob  equ hk.crjob 
HK.DO    EQU $028 HK ausführen 
HK.FITEM EQU $014 einen Posten heraussuchen 
HK.GTBUF EQU $030 D0=0 aktuellen, -1 alten Puffer holen 
hk.getbf equ hk.gtbuf 
HK.GUARD EQU $034 ab Version 1.04 
HK.KJOB  EQU $01C Job löschen 
HK.REMOV EQU $024 HK entfernen 
hk.remv  equ hk.remov 
HK.SET   EQU $020 HK Zustand bestimmen: 
HKS.OFF  EQU -1 abschalten 
HKS.ON   EQU 0 einschalten 
HKS.RSET EQU 1 zurückstellen 
HKS.SET  EQU 2 einstellen 
HK.STBUF EQU $02C Ablagepuffer 
hk.sstbf equ hk.stbuf 

* 6.5 * Angaben zu RI.EXEC und RI.EXECB 
* (Ungerade codierte kleingeschriebene Operationen gelten nur in MINERVA.) 
* Name Op-Code A1-Stack Funktion - f.p.-Zahlen, wo nicht anders bezeichnet 
RI.TERM   EQU 00 0 Rechner verlassen 
ri.one    EQU 01 -6 Constante Eins eintragen 
RI.NINT   EQU 02 +4 gerundete Ganzzahl (16-Bit Integer) 
ri.zero   EQU 03 -6 Constante Null eintragen 
RI.INT	  EQU 04 +4 gekappte Ganzzahl 
ri.n	  EQU 05 -6 signed byte in f.p.-Zahl -128 bis 127 
RI.NLINT  EQU 06 +2 gerundete 32-Bit-Ganzzahl 
ri.k	  EQU 07 -6 (sehr dubios beschrieben, s. Handbuch) 
RI.FLOAT  EQU 08 -4 16-Bit-Integer nach f.p. 
ri.flong  EQU 09 -2 32-Bit-Integer nach f.p. 
RI.ADD    EQU $0A +6 t.o.s. + n.o.s. 
RI.SUB    EQU $0C +6 t.o.s. - n.o.s. 
ri.halve  EQU $0D 0 t.o.s. halbieren 
RI.MULT   EQU $0E +6 t.o.s. * n.o.s. 
ri.doubl  EQU $0F 0 t.o.s. verdoppeln 
RI.DIV	  EQU $10 +6 t.o.s. n.o.s. 
ri.recip  EQU $11 0 1 t.o.s. 
RI.ABS	  EQU $12 0 positiver Wert 
ri.roll	  EQU $13 0 fp1 fp2 fp3> fp2 fp3 fp1
RI.NEG    EQU    $14    0        t.o.s. negieren
ri.over   EQU    $15   -6        n.o.s. holen
RI.DUP    EQU    $16   -6        t.o.s. copieren
ri.swap   EQU    $17    0        t.o.s. mit n.o.s. vertauschen
RI.COS    EQU    $18    0        cosinus
RI.SIN    EQU    $1A    0        sinus
RI.TAN    EQU    $1C    0        tangens
RI.COT    EQU    $1E    0        cotangens
RI.ASIN   EQU    $20    0        arcus sinus
RI.ACOS   EQU    $22    0        arcus cosinus
RI.ATAN   EQU    $24    0        arcus tangens
ri.arg    EQU    $25   +6        t.o.s=k*cos(a) n.o.s.=k*sin(a) aus arg(tos,nos)=a
RI.ACOT   EQU    $26    0        arcus cotangens
ri.mod    EQU    $27   +6        sqrt(tos^2 + nos^2)
RI.SQRT   EQU    $28    0        Quadratwurzel
ri.sqar   EQU    $29    0        Quadrat
RI.LN     EQU    $2A    0        logarithmus naturalis
RI.LOG10  EQU    $2C    0        lg (Logarithmus zur Basis 10)
RI.EXP    EQU    $2E    0        Exponentialfunktion
ri.power  EQU    $2F   +2        n.o.s.(fp) ^ t.o.s.(integer)
RI.POWFP  EQU    $30   +6        n.o.s. ^ t.o.s.

RI.MAXOP  EQU    $30                höchster Op-Code
* Code negativ mit Bit 0 als Marke für Variablenspeicher (A4,A6.l)
RI.LOAD   EQU      0        Wert holen
RI.STORE  EQU      1        Wert ablegen

* 6.2.6.8 	MT.TRAPV-Tabelle


* 6.6 *        Extension Thing Parameter

* Thing Header, alle Abstände auf die Postion thh.flag bezogen.
thh.flag     equ         00       Standardeintragung "THG%"
thh.type     equ         04       Typ $01000003
thh.next     equ         08       Null oder Abstand zum nächsten Thing der Liste
thh.exid     equ        $0C       zusätzliche Identifizierung
thh.pdef     equ        $10       Null oder Abstand zur Parameterdeefinition
thh.desc     equ        $14       Null oder Abstand zur Beschreibung
thh.code     equ        $18       Einsprungstelle der Erweiterung

* Aufruf-Werte und Schlüsselcodes
* Typenmarkierung für die Parameter als Bitmasken
thp.key      equ         0001     Schlüssel
thp.char     equ         0004     Schriftzeichen
thp.ubyt     equ         0008     Byte
thp.sbyt     equ        $000A     vorzeichenbehaftetes Byte
thp.uwrd     equ        $0010     Word (16-Bit-Zahl)
thp.swrd     equ        $0012     vorzeichenbehaftetes Wort
thp.ulng     equ        $0020     Langwort (32.Bit-Zahl)
thp.slng     equ        $0022     vorzeichenbehaftetes Langwort
thp.fp8      equ        $0042     8-Byte Fließkommazahl
thp.str      equ        $0100     String
thp.sstr     equ        $0200     Teilstring
thp.arr      equ        $0800     Array-Parameter
thp.opt      equ        $1000     optionaler Parameter
thp.ptr      equ        $8000     Aufruf- oder Rückkehr-Parameter
thp.ret      equ        $A000     Return-Parameter
thp.call     equ        $C000     Aufruf-Parameter
thp.updt     equ        $E000     aktualisierter Parameter
* Typenmarkierung für die Parameter als Einzelbits (Bitnummern)
thp..sgn     equ         1        vorzeichenbehafteter Parameter
thp..chr     equ         2        Schriftzeichen erlaubt
thp..byt     equ         3        Byte-Wert erlaubt oder gefordert
thp..wrd     equ         4        Wort-Wert dto.
thp..lng     equ         5        Lagwort-Wert dto.
thp..str     equ         8        Standard-String
thp..sst     equ         9        Teilstring
thp..nnl     equ        11        negativer (-1) Null-Parameter
thp..arr     equ        11        Array-Parameter
thp..opt     equ        12        Parameter ist optional
thp..ret     equ        13        Rückgabe-Parameter
thp..call    equ        14        Aufruf-Parameter
thp..ptr     equ        15        Pointer-Parameter


* Vectoren nach (und mit) Adressen

* Vector        decimal sedecimal     MF & MG,          MINERVA v1.82 :  : JM
mm.alchp  equ       192 $00C0       12330 $302A :  14066 $36F2         : 2EC0
mm.rechp  equ       194 $00C2       12506 $30DA :  13874 $3632         : 2F70
ut.windw  equ       196 $00C4       14966 $3A76 :  16110 $3EEE         : 3A60
ut.con    equ       198 $00C6       14970 $3A7A :  16118 $3EF6         : 3A64
ut.scr    equ       200 $00C8       14976 $3A80 :  16134 $3F06         : 3A6A
ut.err0   equ       202 $00CA       14818 $39E2 :  15948 $3E4C         : 3868
ut.err    equ       204 $00CC       14828 $39EC :  15958 $3E56         : 3872
ut.mint   equ       206 $00CE       14868 $3A14 :  16026 $3E9A         : 3A00
ut.mtext  equ       208 $00D0       14902 $3A36 :  16060 $3EBC         : 3A22
ut.link   equ       210 $00D2       14944 $3A60 :  16006 $3E86         : 3A4A
ut.unlk   equ       212 $00D4       14950 $3A66 :  16014 $3E8E         : 3A50
sx.nix03  equ       214 $00D6           0 $0000 :      0 $0000
mm.alloc  equ       216 $00D8       12672 $3180 :  13776 $35D0         : 3016
mm.lkfr   equ       218 $00DA       12766 $31DE :  13702 $3586         : 3070
io.qset   equ       220 $00DC       14456 $3878 :   2882 $0B42         : 36FE
io.qtest  equ       222 $00DE       14478 $388E :   2900 $0B54         : 3714
io.qin    equ       224 $00E0       14524 $38BC :   2940 $0B7C         : 3742
io.qout   equ       226 $00E2       14562 $38E2 :   2974 $0B9E         : 3768
io.qeof   equ       228 $00E4       14604 $390C :   3002 $0BBA         : 3792
ut.cstr   equ       230 $00E6       15164 $3B3C :  15602 $3CF2         : 3B0A
io.serq   equ       232 $00E8       14416 $3850 :  25824 $64E0         : 36D6
io.serio  equ       234 $00EA       14608 $3910 :   3168 $0C60         : 3796
cn.date   equ       236 $00EC       16460 $404C :  15300 $3BC4         : 40CE
cn.day    equ       238 $00EE       16556 $40AC :  15352 $3BF8         : 4122
cn.ftod   equ       240 $00F0       16100 $3EE4 :  14926 $3A4E         : 3766
cn.itod   equ       242 $00F2       15938 $3E42 :  14784 $39C0         : 3EC4
cn.itobb  equ       244 $00F4       16074 $3ECA :  14900 $3A34         : 3F4C
cn.itibw  equ       246 $00F6       16070 $3EC6 :  14896 $3A30         : 3F48
cn.itobl  equ       248 $00F8       16066 $3EC2 :  14892 $3A2C         : 3F44
cn.itohb  equ       250 $00FA       16030 $3E9E :  14856 $3A08         : 3720
cn.itohw  equ       252 $00FC       16026 $3E9A :  14852 $3A04         : 3F1C
cn.itohl  equ       254 $00FE       16022 $3E96 :  14848 $3A00         : 3F18
cn.dtof   equ       256 $0100       15620 $3D04 :  14380 $382C         : 3D84
cn.dtoi   equ       258 $0102       15792 $3DB0 :  14646 $3936         : 3E30
cn.btoib  equ       260 $0104       15906 $3E22 :  14752 $39A0         : 3EA4
cn.btoiw  equ       262 $0106       15910 $3E26 :  14756 $39A4         : 3EA8
cn.btoil  equ       264 $0108       15914 $3E2A :  14760 $39A8         : 3EAC
cn.htoib  equ       266 $010A       15810 $3DC2 :  14664 $3948         : 3E42
cn.htoiw  equ       268 $010C       15814 $3DC6 :  14668 $394C         : 3E46
cn.htoil  equ       270 $010E       15818 $3DCA :  14672 $3950         : 3E4A
bp.init   equ       272 $0110       28076 $6DAC :   9550 $254E         : 67EC
ca.gtint  equ       274 $0112       25048 $61D8 :  22032 $5610         : 5C44
ca.gtfp   equ       276 $0114       25052 $61DC :  22036 $5614         : 5C48
ca.gtstr  equ       278 $0116       25044 $61D4 :  22028 $560C         : 5C40
ca.gtlin  equ       280 $0118       25056 $61E0 :  22040 $5618         : 5C4C
bv.chrix  equ       282 $011A       20028 $4E3C :  16512 $4080         : 4F48
ri.exec   equ       284 $011C       16794 $419A :  25368 $6318         : 423E
ri.execb  equ       286 $011E       16802 $41A2 :  25382 $6326         : 4246
bp.let    equ       288 $0120       29384 $72C8 :  11426 $2CA2         : 6C12
io.name   equ       290 $0122       14256 $37B0 :   2736 $0AB0         : 3636
* AB HIER GELTEN ALLE ADRESSEN MIT OFFSET $4000  - $4000(An)
md.read   equ       292 $0124        4750 $128E :   1618 $0652         : 69D4
md.write  equ       294 $0126        4578 $11E2 :   2112 $0840         : 692A
md.verin  equ       296 $0128        4756 $1294 :   1624 $0658         : 69DA
md.sectr  equ       298 $012A        4716 $126C :   1584 $0630         : 69B4
* zusätzliche Vectoren in MINERVA 1.82                          wirkliche Adr.
*nn                       12c                             3b42 ?  7b42
*nn                       12e                             3a30    7a30
*nn                       130                             3905 [?]7905
*nn                       132                             3a38    3a38
*nn                       134                             3a96    3a96
*nn                       136                             3fec    3fec
*nn                       138                             4180    8180
*nn                       13a                             3c5a    3c5a
ut.istr   equ       316 $013C                   :        $FCBE ? $3CBE
go.new    equ       318 $013E                   :        $6356   $A356
bp.chan   equ       320 $0140                   :        $E49A   $249A
bp.chand  equ       322 $0142                   :        $E49C   $249C
bp.chnid  equ       324 $0144                   :        $E47C   $247C
bp.chnew  equ       326 $0146                   :        $E44E   $244E
bp.fname  equ       328 $0148                   :        $E1AC   $21AC
ca.cnvrt  equ       330 $014A                   :        $0C3E   $4C3E
ca.opexe  equ       332 $014C                   :        $0D6C   $4D6C
ca.eval   equ       334 $014E                   :        $10D8   $50D8
ip.kbrd   equ       336 $0150                   :        $D07C   $107C
ip.kbend  equ       338 $0152                   :        $D0C0   $10C0
sb.start  equ       340 $0154                   :        $4190   $8190
mi.muell  equ       342 $0156  VORSICHT: man trug -1 ein.
mm.move   equ       344 $0158                   :        $F796 ? $3796
mm.mrtoa  equ       346 $015A                   :        $F72C   $372C
mm.mator  equ       348 $015C                   :        $F726   $3726
mm.mrtor  equ       350 $015E                   :        $F736   $3736
*nn                                                       C772    0772
*nn                                                       C78E    078E
*nn                                                       0420    4420
*nn                                                       0426    4426
*

 


oben : zurück : weiter : inhalt

= (count)