zurück : weiter : inhalt =
(Just characters displaying browsers, "Lynx" etc, might not show the tables properly)
(Lynx u.a. Browser, die nur Schriftzeichen darstellen, geben u.U. die Tabllen verzogen wieder)

 

5 *** Systemaufrufe

Gelegentlich wurde moniert, daß nicht in jeder Tabelle alle Register abgehandelt werden, und daß manche Traps zu Gruppen zusammengefaßt sind. Das soll lästiges Blättern erparen. Aus demselben Grunde, da Vieles für nahezu alle Aufrufe gleichermaßen gilt, werden die allen QDOS-Traps rsp -Vectoren, oder einer großen Gruppe daraus, gemeinsamen Details im Anschluß zunächst ausführlich beschrieben und später dann nicht mehr wiederholt - ebensowenig wie erneute Hinweise auf diese Tatsache.
 

5.1 ** Vorbemerkungen

5.1.1 * Allgemein

Kurz geklärt:
RI.. Bezug auf den virtuellen Arithmetik-Processor
Hash das Zeichen '#'
MI Hinweis auf MINERVA {3}
TG Thing-System
SMS2 bedeutet dasselbe wie SMSQ/E oder teils auch SMSQ
SQ steht für alle Varianten SMS2, SMSQ und SMSQ/E
Register A1:
Allzu pauschale Adressenbearbeitung und Trap-Decodierung in den Sytem-Roms (MGG, MINERVA, andere nicht geprüft) erfordert in den Speicheroperationen und sonst überall, wo das Register verändert zurückkommen kann, Angabe von A1 mit gerader Adresse, auch, wenn das Register keine Eingangsdaten liefert.

In der Kopfzeile finden sich die Angaben zum Namen und dem Operationscode, der die betreffende Ausführung aktiviert, ggf. auch einer Stelle im Text, an der Ausführlicheres zum Stichwort zu finden ist.

Muster für die Trap-Aufrufe:

{smsq-Name} {QDOS-Name} {Trap}/{Code dez. sedez.}
Kurzbeschreibung ggf. wichtige Anmerkungen

Muster für die Vectoren:

{smsq-Name} {QDOS-Name} {Kathegorie} {dez.} {sedez.}
Kurzbeschreibung ggf. wichtige Anmerkungen

Es folgen Registerbelegung für Übergabe und zurückgegebene Werte.
Dann der bei einem Fehler in D0 ankommende Code. und nötigenfalls noch ein paar erklärende Worte. Besondere Hinweise sind zu den Fehlercodes nur gegeben, wenn deren Bedeutung von der Standarddefinition abweicht.


Fehlercodierung:
 
 
SMSQ CODE QDOS-Name Bedeutung
err.nc -1 ERR.NC Unterbrechung
err.ijob -2 ERR.NJ ungültiger Job
err.imem -3 ERR.OM Speicher reicht nicht
rr.ornge -4 ERR.OR Bereichsüberschreitung
err.bffl -5 ERR.BO Puffer voll
err.ichn -6 ERR.NO Kanal nicht offen
err.fdnf -7 ERR.NF File nicht gefunden
err.itnf -7 ERR.NF Posten nicht gefunden
err.fex -8 ERR.EX existiert bereits
err.fdiu -9 ERR.IU  in Betrieb
err.eof -10 ERR.EF Fileende
err.drfl -11 ERR.DF Datenträger voll
err.inam -12 ERR.BN unbrauchbarer Name
err.trns -13 ERR.TE Übertragungsfehler
err.prty -13 ERR.TE Parity-Fehler
err.fmtf -14 ERR.FF Formatierungsfehler
err.ipar -15 ERR.BP ungeeigenter Parameter
err.mchk -16  ERR.FE Datenträger unbrauchbar
err.iexp -17 ERR.XP Fehler im Ausdruck
err.ovfl -18  ERR.OV arithmetischer Überlauf
err.nimp -19 ERR.NI  unbekannte Operation
err.rdo -20 ERR.RO nur Lesen
err.isyn -21 ERR.BL Syntaktischer Fehler
err.rwf -22  {15} Lese-/Schreibfehler 
 
Systemmeldungen {MGG}    
-22 "in Zeile"
-23 "Sektoren"
-24 "F1... F2...
-25 "Sinclair ...
-26 "Verarbeitung läuft"
-27 "Proc/Fn gelöscht"
 
Anmerkung NOERR, wenn es keine Fehlermeldung gibt.
 



 

5.1.2.1 * Zu den QDOS-Traps

Dies sind die Aufrufe der Processor-Traps #1 bis #3. Eingeteilt in die Gruppe der Managertraps zur Systembetreuung, der Zuweisung von Hilfsmitteln der Ein- und Ausgabe und schließlich der Ein- und Ausgabe-Operationen sowie der Bildschirmsteuerung. Auch Minerva-, Thing- und SMSQ-Aufrufe sind angeführt.

Allgemein gilt für den Aufruf

D0 Op-Code
D1 Job-ID, für den eigenen (aktiven) Job kann -1 angegeben werden
D2 div. Daten
D3 div. Daten, Wartezeit bei Aufrufen der Trap #3
A0 Ptr oder Kanal-ID, stets Kanal-ID bei I/O der Trap #3
A1 Ptr
A2 zumeist unbenutzt, ggf. Ptr
Der Inhalt nicht notierter Register ist gleichgültig.
Wo nicht anders spezifiziert werden alle Register lang (.L) besetzt.

Den I/O-Operationen sind in Trap #3 stets in
D3.W die Wartezeit und in
A0 die Kanal-ID zu übergeben.
Dies wird nicht mehr gesondert verzeichnet.

Bei Rückkehr enthalten die Register

D0 Fehlercode oder Null
D1 div. Daten, Job-ID
D2 zumeist unbenutzt
D3 in I/O-Traps Flag zur Anzahl I/O-Operationen
A0 div. Daten, Kanal-ID
A1 Ptr, nach Möglichkeit aktualisiert
A2 zumeist unbenutzt, ggf. Ptr
A3 dto.
Der Inhalt nicht notierter Register ist unverändert (oder nicht dokumentiert).
Wo nicht anders spezifiziert gelten alle Register als Langworte (.L).
Dies wird nicht mehr gesondert verzeichnet.

Jeder Aufruf kann den Fehlercode

ERR.BP -15
zurückgeben.

Allen Aufrufen der Trap #3 ist anzugeben

D3.w Wartezeit,
A0 Kanal-ID,
beide Register bleiben unverändert. Dort kann auch stets der Fehler
ERR.NO -6 Kanal nicht offen
zurückkommen. Dies wird nicht mehr gesondert verzeichnet.

ERR.NC ist das Vehikel zur Verwaltung der i/o-Wartezeit (D3.W) im QDOS.
Ggf. muß zwischen erstmaligem oder wiederholtem Einsprung unterschieden werden. Hierzu dient der Eingangswert von D3 (anfangs 0, sonst -1).
 

Unbenutzt sind die Codes:

Trap #1:

03 nicht dokumentiert
15 $0F fehlt in SMSx {15}
37 $25 benannt, aber nie definiert
38 $26 Schluß in einfachen Systemen
45 $2D  Schluß bei SMS2, Thing, EMU
Trap #2:
0 nicht besetzt
5 Schluß
Trap #3:
6, 8, 28, 29 nicht definiert
55, 56, 57 nicht dokumentiert
80 Schluß für Standardsysteme
80 - 107 nicht besetzt
127 $7F höchster möglicher Code
 

5.1.2.2 * Zu den Pointer-Traps

Die Aufrufe ergänzen die i/o-Traps für CON- und SCR-Kanäle. Sie gelten mit der üblichen Notierung. Sie sind nur aktivierbar, wenn das Pointer Environment vorhanden ist. Zum Verständnis werden die Erläuterungen und Tabellen dazu als bekannt vorausgesetzt.

Alle Bild-Koordinaten werden im Pixelraster angegeben, dies ist nicht auf die Größe des Bildschirms im QL begrenzt. Eine Beziehung zum System der scalierten Graphik des QL gibt es nicht.

Abkürzungen und Notierung nur für diesen Teil der Trap-Zusammenstellung:
 
OL Outline - Außenmaße eines Fensters
PE Pointer Environment
PIF Pointer Interface
PRW Primary Window - Primärfenster, Erstes eines Jobs
SCW Secondary Window - Secundärfenster, weitere Fenster 
SW Sub-Window - Teilfenster innerhalb der OL eines Fensters
{wert} | {wert} Aufteilung eines (Lang)wortes in gleichgroße Hälften
Bildschirm... als Hinweis auf absolut zum Gesamtbild geltende Daten 
Breite als Maß notiert
Maß 16-Bit-Zahl, positiv und nicht Null
Größe dto., einschließlich Null
Höhe als Maß notiert
Pointer hier nun nur noch für das über die Fenster flitzende Bildchen
Ptr einzige Schreibweise für den Pointer als Adresse einer Adresse
Punkt Koordinatenpaar in beliebigen 16-Bit-Zahlen
Ursprung als Punkt mit horizontaler Position im höchstwertigen Wort
Zahl stets im binären Zweier-Complement
 

5.1.3 * Zu den QDOS-Vectoren

In Form einer Tabelle im Bereich $00C0 bis $012B, bei MINERVA bis $015E, sind die 16-Bit-Adressen verschiedener System-Aufrufe gespeichert. Dies sind die QDOS-Vectoren.

Sie lassen sich in folgenden Kathegorien zusammenfassen:

sm Supervisor-Routinen
Sie dürfen nur im Supervisor-Mode und nicht aus einem Interruptaufruf heraus aufgerufen werden. A6 ist auf die Basis der Systemvariablen zu stellen.
st vereinfachte Trap-Aufrufe
Nur im User-Mode aufzurufen.
gu allgemeine Hilfsprogramme
Hier bestehen keine Einschränkungen.
bu Basic-Unterstützung
Aus beliebigem Aufruf, Adressen gelten stets rel A6.
SQ: Aufrufe werden dort nur ausgeführt, wenn an der Stelle -4(A6) das Langwort "SBAS" eingetragen ist.
bp Basic-Parameter
- wie Basic -
ar Arithmetik (innerhalb Basic)
- wie Basic; SQ: ohne die zusätzliche "SBAS"-Bedingung -
md Microdrivebedienung
Vectoren mit Offset $4000. Interrupts abgeschaltet.
SQ: MDV-Vectoren und System-Routinen dazu fehlen.
$0124 und alle folgenden Vectoren, auch bei MINERVA, sind mit Offset $4000 aufzurufen.
$00D6 (0000) in allen Roms und $0156 (FFFF) in MINERVA sind nicht besetzt.

Die Routinen setzen zumeist auch einen Fehlercode in D0. Dann sind auch die Flags im Statusregister des Processors entsprechend gesetzt {1}. Bei den Vectoren, wo das nicht geschieht, oder zweifelhaft ist, findet sich ein entsprechender Hinweis.
 
 

5.2 ** QDOS-Traps

Die Qdos-Namen und ihre OP-Codes:
 
FS.CHECK 064 $40    IOP..REH 001 $01    MT.JINF 002 $02    sd.dot 056 $38
FS.DATE 076 $4C    IOP..REW -01 $FF    MT.LDD 034 $22    SD.ELIPS 051 $33
FS.FLUSH 065 $41    IOP..SCN 031 $1F    MT.LIOD 032 $20    SD.EXTOP 009 $09
FS.HEADR 071 $47    IOP..SDR 017 $11    MT.LNKFR 013 $0D    SD.FILL 046 $2E
FS.HEADS 070 $46    IOP..SET 000 $00    MT.LPOLL 028 $1C    SD.FLOOD 053 $35
FS.LOAD 072 $48    IOP..SLR 018 $12    MT.LSCHD 030 $1E    SD.FOUNT 037 $25
FS.MDINF 069 $45    IOP..SSC 019 $13    MT.LXINT 026 $1A    SD.GCUR 054 $36
FS.MKDR 077 $4D    IOP.FILM 120 $78    MT.NIX 037 $25    sd.lin 057 $39
FS.POSAB 066 $42    IOP.FLIM 108 $6C    MT.PRIOR 011 $0B    SD.LINE 049 $31
FS.POSRE 067 $43    IOP.LBLB 116 $74    MT.RCLCK 019 $13    SD.NCOL 020 $14
FS.POSV 068 $44    IOP.OUTL 122 $7A    MT.RDD 035 $23    SD.NL 018 $12
FS.RENAME 074 $4A    IOP.PICK 124 $7C    MT.REBAS 023 $17    SD.NROW 022 $16
FS.SAVE 073 $49    IOP.RPTR 112 $70    MT.RECHP 025 $19    SD.PAN 027 $1B
FS.TRUNC 075 $4B    IOP.RPXL 113 $71    MT.RELJB 009 $09    SD.PANLN 030 $1E
FS.VERS 078 $4E    IOP.RSPW 110 $6E    MT.RERES 015 $0F    SD.PANRT 031 $1F
FS.XINF 079 $4F    IOP.SLNK 111 $6F    MT.RIOD 033 $21    SD.PCOL 019 $13
IO.CLOSE 002 $02    IOP.SPRY 119 $77    MT.RJOB 004 $04    SD.PIXP 023 $17
IO.DELET 004 $04    IOP.SPTR 123 $7B    MT.RPOLL 029 $1D    SD.POINT 048 $30
IO.DIR 004 $04    IOP.SVPW 109 $6D    MT.RSCHD 031 $1F    SD.POS 016 $10
IO.EDLIN 004 $04    IOP.SWDF 126 $7E    MT.RXINT 027 $1B    SD.PROW 021 $15
IO.FBYTE 001 $01    IOP.WBLB 115 $73    MT.SCLCK 020 $14    SD.PXENQ 010 $0A
IO.FLINE 002 $02    IOP.WRST 127 $7F    MT.SUSJB 008 $08    SD.RECOL 038 $26
IO.FORMT 003 $03    IOP.WSPT 118 $76    MT.TRA 036 $24    sd.rop 055 $37
IO.FSTRG 003 $03    MT.ACLCK 021 $15    MT.TRAPV 007 $07    SD.SCALE 052 $34
IO.NEW 002 $02    MT.ACTIV 010 $0A    SD.ARC 050 $32    SD.SCRBT 026 $1A
IO.OLD 000 $00    MT.ALBAS 022 $16    SD.BLOK 046 $2E    SD.SCROL 024 $18
IO.OPEN 001 $01    MT.ALCHP 024 $18    SD.BORDR 012 $0C    SD.SCRTP 025 $19
IO.OVERW 003 $03    MT.ALLOC 012 $0C    SD.CHENQ 011 $0B    SD.SETFL 042 $2A
IO.PEND 000 $00    MT.ALRES 014 $0E    SD.CLEAR 032 $20    SD.SETIN 041 $29
IO.SBYTE 005 $05    MT.BAUD 018 $12    SD.CLRBT 034 $22    SD.SETMD 044 $2C
IO.SHARE 001 $01    MT.CJOB 001 $01    SD.CLRLN 035 $23    SD.SETPA 039 $27
IO.SSTRG 007 $07    MT.CNTRY 036 $24    SD.CLRRT 036 $24    SD.SETST 040 $28
IOP..ABS 000 $00    MT.DMODE 016 $10    SD.CLRTP 033 $21    SD.SETSZ 045 $2D
IOP..BOT -01 $FF    MT.FREE 006 $06    SD.CURE 014 $0E    SD.SETUL 043 $2B
IOP..GCL 016 $10    MT.FRJOB 005 $05    SD.CURS 015 $0F    SD.TAB 017 $11
IOP..MOV 001 $01    MT.INF 000 $00    SD.DONL 047 $2F    SD.WDEF 013 $0D
IOP..NLK -02 $FE    MT.IPCOM 017 $11    SD.DOT 048 $30    SMS.NTHU 044 $2C
 
Namen, die mit "MT." beginnen, gehören zur Trap #1,
die Namen IO.OPEN. IO.CLOSE, IO.FORMT, IO.DELET zur Trap #2,
alle anderen Trap-Namen sind Aufrufe der Trap #3.
 
 
 

Die SMSQ-Namen und ihre OP-Codes:
 
ioa.clos 002 $02    iog.fill 053 $35    iopp.nlk -02 $FE    iow.xtop 009 $09
ioa.delf 004 $04    iog.line 049 $31    iops.abs 000 $00    sms.achp 024 $18
ioa.frmt 003 $03    iog.scal 052 $34    iops.reh 001 $01    sms.acjb 010 $0A
ioa.kdir 004 $04    iog.sgcr 054 $36    iops.rew -01 $FF    sms.alhp 012 $0C
ioa.kexc 000 $00    ioi.blkl 100 $64    iow.blok 046 $2E    sms.ampa 022 $16
ioa.knew 002 $02    ioi_allc 030 $1E    iow.chrq 011 $0B    sms.arpa 014 $0E
ioa.kovr 003 $03    ioi_dnam 022 $16    iow.clra 032 $20    sms.artc 021 $15
ioa.krnm 005 $05    ioi_dnum 028 $1C    iow.clrb 034 $22    sms.comm 018 $12
ioa.kshr 001 $01    ioi_free 036 $24    iow.clrl 035 $23    sms.crjb 001 $01
ioa.open 001 $01    ioi_hdrl 040 $28    iow.clrr 036 $24    sms.dmod 016 $10
iob.elin 004 $04    ioi_name 000 $00    iow.clrt 033 $21    sms.exv 007 $07
iob.fbyt 001 $01    ioi_rdon 029 $1D    iow.dcur 015 $0F    sms.frjb 005 $05
iob.flin 002 $02    ioi_totl 032 $20    iow.defb 012 $0C    sms.frtp 006 $06
iob.fmul 003 $03    ioi_xxxx 044 $2C    iow.defw 013 $0D    sms.fthg 041 $29
iob.sbyt 005 $05    iop..gcl 016 $10    iow.donl 047 $2F    sms.hdop 017 $11
iob.smul 007 $07    iop..scn 031 $1F    iow.ecur 014 $0E    sms.info 000 $00
iob.test 000 $00    iop..sdr 017 $11    iow.font 037 $25    sms.injb 002 $02
iof.chek 064 $40    iop..slr 018 $12    iow.ncol 020 $14    sms.lexi 026 $1A
iof.date 076 $4C    iop..ssc 019 $13    iow.newl 018 $12    sms.lfsd 034 $22
iof.flsh 065 $41    iop.film 120 $78    iow.nrow 022 $16    sms.liod 032 $20
iof.load 072 $48    iop.flim 108 $6C    iow.pana 027 $1B    sms.lpol 028 $1C
iof.minf 069 $45    iop.lblb 116 $74    iow.panl 030 $1E    sms.lshd 030 $1E
iof.mkdr 077 $4D    iop.outl 122 $7A    iow.panr 031 $1F    sms.lthg 038 $26
iof.posa 066 $42    iop.pick 124 $7C    iow.pcol 019 $13    sms.rchp 025 $19
iof.posr 067 $43    iop.pinf 112 $70    iow.pixq 010 $0A    sms.rehp 013 $0D
iof.posv 068 $44    iop.rptr 113 $71    iow.prow 021 $15    sms.rexi 027 $1B
iof.rhdr 071 $47    iop.rpxl 114 $72    iow.rclr 038 $26    sms.rfsd 035 $23
iof.rnam 074 $4A    iop.rspw 110 $6E    iow.scol 017 $11    sms.riod 033 $21
iof.save 073 $49    iop.slnk 111 $6F    iow.scra 024 $18    sms.rmjb 004 $04
iof.shdr 070 $46    iop.spry 119 $77    iow.scrb 026 $1A    sms.rmpa 023 $17
iof.trnc 075 $4B    iop.sptr 123 $7B    iow.scrt 025 $19    sms.rpol 029 $1D
iof.vers 078 $4E    iop.svpw 109 $6D    iow.scur 016 $10    sms.rrtc 019 $13
iof.xinf 079 $4F    iop.swdf 125 $7D    iow.sfla 042 $2A    sms.rshd 031 $1F
iofd.bak 002 $02    iop.wblb 115 $73    iow.sink 041 $29    sms.rthg 039 $27
iofd.cur 000 $00    iop.wrst 127 $7F    iow.sova 044 $2C    sms.spjb 011 $0B
iofd.get -01 $FF    iop.wsav 126 $7E    iow.spap 039 $27    sms.srtc 020 $14
iofd.upd 000 $00    iop.wspt 118 $76    iow.spix 023 $17    sms.ssjb 008 $08
iog.arc 050 $32    iopo.mov 001 $01    iow.ssiz 045 $2D    sms.usjb 009 $09
iog.dot 048 $30    iopo.set 000 $00    iow.sstr 040 $28    sms.uthg 040 $28
iog.elip 051 $33    iopp.bot -01 $FF    iow.sula 043 $2B    sms.zthg 042 $2A
 
Namen, die mit "sms." beginnen, gehören zur Trap #1,
die Namen "ioa." zur Trap #2,
alle anderen Trap-Namen sind Aufrufe der Trap #3.
 
 
 


  oben : zurück : weiter : inhalt 

(count)