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.2.1 * Manager Trap  - Trap #1



 
sms.info MT.INF 1 / 0  
Angaben zum System
  IN:   OUT:  
D1 aktuelle Job-ID
D2 D2 ASCII-Version des System-ROM
A0 Basis der Systemvariablen
 
 NOERR
 

 
sms.crjob MT.CJOB 1 / 1  
Job anlegen, nicht aktivieren
  IN:   OUT:  
D1 Besitzerjob-ID D1 Job-ID
D2 Länge des Codebereichs
D3 Länge des Datenbereichs
A0 Basis des Job-Speichers
A1 Null oder abs Startadresse, bis QDOS 1.03 stets Nul
 
ERR.OM -3
ERR.NJ -2 zuviele Jobs oder D1 ist kein Job
Der Stack-Ptr im Job zeigt auf zwei Langworte mit Inhalt Null, weitere Initialisierung findet nicht statt. Nur Aufnahme in die Schedulerliste und Speicherzuweisung.
Besitzer kann jeder Job werden. Null erzeugt einen unabhängigen Job.


sms.injb MT.JINF 1 / 2  
Angaben zum Jobstatus holen
  IN:   OUT:  
D1 Job-ID D1 nächster Job im Zweig
D2 letzter Job im Zweig / 0 D2 Besitzer-Job
D3 MSB negativ suspendiert 
LSB Prioritätszahl
A0 Startadresse des Jobs
A1 verdorben
 
ERR.NJ -2
D1 muß nicht unbedingt mit der eigenen ID besetzt werden. So kann wenn das Ergebnis eines Aufrufs dort stehenbleibt, successive ein ganzer Zweig untersucht werden.
D2.L enthält Null oder die ID des letzen Jobs im Zweig.
Zum Schluß kehrt D1 mit 0 (Basic) zurück.
 


 
 -   nicht dokumentiert 1 / 3  


 
sms.rmjb MT.RJOB 1 / 4  
Entfernt einen inaktiven Job. Nicht sicher "atomic"
sms.frjb MT.FRJOB 1 / 5  
Entfernen eines Jobs zwangsweise. Nicht sicher "atomic"
  IN:   OUT:  
D1  Job ID D1 verdorben
D2 verdorben
D3 Fehlercode D3 verdorben
A0 - A3 verdorben
 
ERR.NJ -2
ERR.NC -1 Job noch aktiv (Nur RJOB)
Nur FRJOB: Ein gesamter Jobzweig wird aufgegeben. Noch aktive Jobs werden inaktiviert und dann auch entfernt. Mit dem Job gehen zugleich alle dahin, deren Besitzer er ist. Job Null (Basic) ist geschützt, kann nicht entfernt werden. Wenn ein Job auf irgendeinen der zu Entfernenden wartet, so wird dessen Suspendierung aufgehoben und der vorgelegte Fehlercode an ihn in D0 weitergegeben.
 
 

 
sms.frtp MT.FREE 1 / 6  
Ermittelt größten freien Anschlußbereich in der tpa
  IN:   OUT:  
D1 gefundene Länge
D2, D3 verdorben
A0 - A3 verdorben
 
NOERR


 
sms.exv MT.TRAPV 1 / 7  
Jobeigene Traptabelle einrichten (exception & #5 - #15) {3.2.3}
  IN:   OUT:  
D1 Job-ID D1
A0 Ptr auf Tabelle  A0 Jobbasis
A1 verdorben
 
NOERR
Die Vectoren werden an untergeordnete Jobs weitergegeben. Neue Jobs erhalten die Tabelle desjenigen, der ihre Einrichtung veranlaßt hat, auch wenn er nicht Besitzer ist.
 

 
sms.ssjb MT.SUSJB 1 / 8  
Suspendieren eines Jobs. Nicht "atomic"
sms.usjb MT.RELJB 1 / 9  
Aufheben der Suspendierung. Nicht "atomic"
  IN:   OUT:  
D1 Job-ID D1 Job-ID
D3.W Dauer
A0 Ptr auf Jobkontrollblock
A1 Ptr auf Flagbyte oder Null A1
 
ERR.NJ -2
Nur MT.SUSJB: Ein mögliches Flagbyte wird bei Freigabe auf Null gesetzt. Sonst ist für den Ptr Null anzugeben. Der Scheduler wird neu geordnet.
Nur MT.RELJB: D3, A1 belanglos.
 

 
sms.acjb MT.ACTIV 1 / 10  
Aktiviert einen Job. Nicht "atomic"
  IN:   OUT:  
D0 Fehler des aktivierten Jobs
D1 Job-ID D1 Job-ID
D2.B Prioritätszahl 0 - 127
D3.W Wartezeit -1 oder 0
A0 Basis des Jobkontrollblocks
A3 verdorben bei D3 =/= 0
 
ERR.NJ -2
ERR.NC -1 Job ist schon aktiv
Mit D3 = 0 wird ein freilaufender Job erzeugt. Der aktuelle Job wird unmittelbar nach dem Aufruf fortgesetzt. Da bereits die Installation im multitasking geschachtelt wird, empfielt es sich bei Systemen mit hoher Ausführungsgeschwindigkeit, den aufrufenden Job kurzzeitig (ca 1/2 sec) zu suspendieren.
Bei D3 = -1 wird der aufrufende Job bis Beendigung des Aktivierten suspendiert.



 
sms.spjb MT.PRIOR 1 / 11  
Prioritätszahl eines Jobs ändern. Nicht "atomic"
  IN:   OUT:  
D1 Job-ID D1 Job-ID
D2.B Prioritätszahl 0 - 127
A0 Basis des Jobkontrollblocks
 
ERR.NJ -2
Nach {15} wird A0 in SMS2 und SMSQ/E durch den Aufruf verdorben.



 
sms.alhp MT.ALLOC 1 / 12  
Speicherbereich im Heap zuweisen. Adressierung rel A6 
Einzige "atomic" Zuweisung
  IN:   OUT:  
D1 Geforderte Länge D1 Gewährte Länge
D2 verdorben
D3 verdorben
A0 Ptr zum Ptr in den A0 Anfangsadresse des Blockes 
übergeordneten Speicherbereich  A1 - A3 verdorben
A6 Referenzadresse
 
ERR.OM -3


 
sms.rehp MT.LNKFR 1 / 13  
Teilbereich dem Heap eingliedern. Adressierung rel A6 
Einzige "atomic" Freigabe
  IN:   OUT:  
D1 Länge der Rückgabe D1 - D3 verdorben
A0 Basis des neuen Bereichs A0 verdorben
A1 Ptr auf den Ptr zum Rückgabebereich  A1 - A3 verdorben
A6 Referenzadresse
 
 NOERR


 
sms.arpa MT.ALRES 1 / 14  
Speicherzuweisung im residenten Bereich
  IN:   OUT:  
D1 Geforderte Länge
A0 Basisadresse des Blockes
 
ERR.OM -3
ERR.NC -2 transiente Programme vorhanden
Der Aufruf wirkt nur, wenn keine Jobs geladen sind.
Bei SQ wird (fälschlich!) auch RAMTOP auf die Untergrenze des hierdurch reservierten Speicherbereichs gesetzt.



 
{nicht smsq}   MT.RERES 1 / 15  
Freigabe des residenten Bereichs. Nur in MINERVA
  IN:   OUT:  
Keine Übergabedaten D1 - D3  verdorben
A0 - A3 verdorben
 
 ERR.NC -2 transiente Programme vorhanden
{MGG} ohne Ergebnis, auch, wenn kein Fehlercode zurückkommt.
Diese Trap ist angeblich bei allen regulären Betriebssystemen wirkungslos,
bei MINERVA ist der Aufruf in Ordnung.
MT.RERES ist lt. {15} für SMSQ(/E) nicht spezifiziert



 
sms.dmod MT.DMODE 1 / 16  
Setzen oder Lesen der Bildschirm-Betriebsart
  IN:   OUT:  
D1.B -1 nur Lesen D1.B Darstellung
0 4-Farben-Auflösung
8 8-Farben-Auflösung
D2.B -1 nur Lesen D2
0  Monitor
1 FS-Gerät
A3 verdorben
A4 JS, SQ: verdorben
 
NOERR
Die gesamte Bildausgabe wird eingestellt, die Fenster werden neu gezeichnet.
"Jobs, die währenddessen auf den Bildschirm zugreifen, sind ernstlich gefährdet.

Bei SQ Wirkung nur auf den aktuellen Job {15}.

MINERVA hat die wesentlich erweiterten Angaben {3}:
 

D1 Bit Gesetzt Ungesetzt
0 "anderes Bild" sichtbar.. ..unsichtbar machen
1
dto, aktuelles Bild
 
2 "anderes Bild" MODE 4 "anderes Bild" MODE 8
3
dto., aktuelles Bild
 
4 Anzeige in Bild 0 Anzeige in Bild 1
5 Vorgabe ist Bild 0 Vorgabe ist Bild 1
6 D1 gilt als Byte D1 gilt als Wort (16-Bit)
7
Komplement zu Bit 6
 
8...15 belanglos nächste Tabelle gilt zusätzlich
8...13 Bits 0..5 gelten absolut ..schalten um
14   MODE wirkt im "anderen" BIld
15   MODE wirkt im Vorgabebild
 
Für die Bits 0 .. 5, hier mit "x" bezeichnet, gilt:

Sind die Bits 6 und x+8 gelöscht, bewirkt Bit x die absolute Auswahl.
Für x gilt in allen anderen Fällen, daß die Einstellungen den Bitpositionen entsprechend bei gesetztem x umgeschaltet werden.
Sind Bit 6 und 14 oder 15 gelöscht, wird das betr. Bild neu gezeichnet.
Die ursprünglichen Einstellungen -1, 0 und 8 entsprechen den Registerwerten
 $0040 = %0000000001000000 = 64
 $0080 = %1111111110000000 = -128 (?)
 $7780 = %0111011110001000 = 30592
Das Vorgabebild gilt auch bei den Werten 0 oder 8 in D1.b.

D1 nach den erweiterten Aufrufen:
 

Bit 0 1 Bild Name
0 sichtbar ausgeblendet "anderes"
1 dto. dto. Vorgabe
2 MODE 4 MODE 8 "anderes"
3 dto. dto. Vorgabe MC..M256
4 Bild 0 Bild 1 "anderes"
5 dto. dto. Vorgabe
6 -/- -/- -/-
7 einfach zweifach verfügbar MC..SCRN
 


 
sms.hdop MT.IPCOM 1 / 17  
 Sendet einen Befehl zum IPC. Ausführlich in {3.7.5}
  IN:   OUT:  
D1 D1.B Antwort
D5 verdorben (nicht MI)
D7 verdorben (nicht MI)
A3 Ptr auf Befehl mit Parametertabelle
 
NOERR

A3 geradzahlig!
D5 und D7 bleiben bei MINERVA erhalten, die Adresse in A3 kann auch ungerade sein.
MT.IPCOM eignet sich nur für Operationen, die nicht mehr als acht Bits zurückgeben.

 

 
sms.comm MT.BAUD 1 / 18  
Baudrate einstellen
  IN:   OUT:  
D1.W Baudrate lt. Handbuch D1.L  verdorben
 
NOERR


 
sms.rrtc MT.RCLCK 1 / 19  
Uhr lesen 
sms.srtc MT.SCLCK 1 / 20  
Uhr stellen
sms.artc MT.ACLCK 1 / 21  
Uhr weiterstellen
  IN:   OUT:  
D1 ggf. Zeit in Sekunden D1 Zeit in Sekunden
A0 verdorben
 
 NOERR
 

 
sms.ampa MT.ALBAS 1 / 22  
Programmspeicher des Basic erweitern
sms.rmpa MT.REBAS 1 / 23  
Programmspeicher des Basic verkürzen
  IN:   OUT:  
D1 geforderte Länge D1 akzeptierte Länge
D2, D3 verdorben 
A0 - A3 verdorben 
A6 Referenzadresse A6 neue Referenzadresse
A7 User-Stackptr A7 neuer Stackptr
 
ERR.OM -3 ( nur MT.ALBAS)
NOERR  (nur MT.REBAS)
Freigabe wird erst nach NEW oder CLEAR gesichert wirksam.
Funktion in SQ zweifelhaft (rsp. nicht in compatibler Form gegeben).

Wenngleich vornehmlich zur Unterstützung der verlagerbaren SBasic-Jobs gedacht, und dazu auf deren Datenstruktur spezialisiert, kann diese Paarung in wirklichen QDOS-Rechnern jedoch auch bei anderen Programmen problemlos und mit großem Nutzen eingesetzt werden.
 



 
sms.achp MT.ALCHP 1 / 24  
Speicherzuweisung für einen Job im Common Heap
  IN:   OUT:  
D1 geforderte Länge D1 gegebene Länge
D2 Besitzerjob-ID D2, D3 verdorben
A0 Basisadresse des Blocks
A1 - A3 verdorben
 
ERR.OM -3
ERR.NJ -2
Der Speicherbereich ab A0 ist  in der gesamten Länge gelöscht und frei nutzbar.



 
sms.rchp MT.RECHP 1 / 25  
Rückgabe eines Blocks an den Common Heap 
  IN:   OUT:  
D1 - D3 verdorben
A0 Basisadresse des A0 - A3 verdorben
zurückzugebenden Blocks
 
NOERR

Gleichartige Aufrufe zum Einfügen der Link-Adresse in eine der verketteten Listen des QDOS und zum Entfernen dieser Adresse; s. {3.3}, {3.5}, {4.2}, {4.4.}
 

sms.lexi MT.LXINT 1 / 26  
 Behandlung eines Externen Interrupt aufnehmen
sms.rexi MT.RXINT 1 / 27  
Dto. wegnehmen
sms.lpol MT.LPOLL 1 / 28  
Behandlung eines Polled (50 Hz) Interrupt aufnehmen
sms.rpol MT.RPOLL 1 / 29  
Dto. wegnehmen.
sms.lshd MT.LSCHD 1 / 30  
Scheduler-Aufruf aufnehmen.
sms.rshd MT.RSCHD 1 / 31  
Dto. wegnehmen.
sms.liod MT.LIOD 1 / 32  
Einfachen Device Handler aufnehmen
sms.riod MT.RIOD 1 / 33  
Dto. wegnehmen
sms.lfsd MT.LDD 1 / 34  
Directory Device Handler aufnehmen
sms.rfsd MT.RDD 1 / 35  
Dto. wegnehmen
  IN:   OUT:  
A0 Link-Adresse 
A1 (geradzahlig!) A1 verdorben 
 
NOERR
A0 zeigt auf Link-Feld, das vom Sytem besetzt wird.
4(A0) muß vorher die Aufrufadresse erhalten.
A1 ist belanglos, in machen QDOS-Versionen wird jedoch bei ungeraden Werten darin ein "address-error" ausgelöst.

 



 
sms.trns MT.TRA 1 / 36  
 TRA-Tabellen einfügen (MT.CNTRY) {3.8}
  IN:   OUT:  
D1 Null oder Ptr auf 
Zeichenumsetzungstabelle
D1 verdorben
D2 Null oder Ptr auf 
Tabelle der Systemmeldungen
D2 verdorben
D3 verdorben
A0 - A3 verdorben
 
 NOERR


 
Kein Name   1 / 37  
Von Sinclair reserviert, QDOS-Verwendung ist nicht bekannt
Nur in den SMSQ-Varianten:
 
sms.xtop SMS.XTOP 1 / 37  
  frei definierbare Manager-Trap, nur User-Mode
  IN:   OUT:  
im Innern des Aufrufs:
D7 verdorben
A5 Ptr auf Ablage D7/A5/A6
A6 Adresse der Systemvariablen
 
Aufruf NUR im User-Modus, muß mit RTS abgeschlossen werden.
Ausführung im Supervisor-Modus, Rückkehr stets in den User-Modus.


Für QDOS-Systeme überflüssig:
Trap #0 verändert keines der Register und die Systemvariablen können mit MT.INF problemlos auch im Supervisor-Modus ermittelt werden. Rückkehr aus dem Aufruf erfolgt dann in geordneter Form und die o.g. Restriktionen kommen nicht in Betracht.



 

Die folgenden Aufrufe der Trap #1 sind nur in SMS2 rsp. SMSQ/E verfügbar {15}, in QDOS und SMSQ nur mit der Thing-Emulation {4.6} bei Zugriff über TH.ENTRY.

Die Angaben zum Erhalt der Register sind je nach (Alter der) Quelle unterschiedlich. Bei Anwendung der Thing-Emulation sind eigene Prüfungen ratsam.

Alle können als Fehlercode zurückgeben:

ERR.NF -7 Thing nicht gefunden.

 



 

sms.lthg MT.LTHG 1 / 38  
 Thing aufnehmen TG {4.6}
  IN:   OUT:  
A0 Link-Adresse
A1 verdorben

 Nach {15} bleibt auch A1 erhalten.

ERR.EX -8 Thing existiert bereits


 

sms.rthg MT.RTHG 1 / 39  
Thing wegnehmen, sofern es nicht gerade benutzt wird
  IN:   OUT:  
A0 Link-Adresse
A1 verdorben

 

ERR.IU -9

 



 

sms.uthg MT.UTHG 1 / 40  
 Thing benutzen TG {4.6}
  IN:   OUT:  
D1 Job-ID D1 Job-ID
D2 zusätzl. Daten D2 Datenrückgabe
D3.W Wartezeit D3 Version
A0 Ptr auf den Thing-Namen
A1 Adresse des Thing
A2 Parameter A2 Datenrückgabe

 
A1 wird lt. {15} verdorben.

ERR.xx alle Werte aus der USE-Routine

 



 

sms.fthg MT.FTHG 1 / 41  
 Thing freigeben TG {4.6}
  IN:   OUT:  
D1 Benutzerjob-ID
D2 zusätzl. Daten D2 Datenrückgabe
D3 dto.
A0 Ptr zum Namen
A1 zusätzl. Daten
A2 dto.

 

ERR.xx alle Werte aus der FREE-Routine


 

sms.zthg MT.ZTHG 1 / 42  
Thing wegnehmen. Nur User-Mode
  IN:   OUT:  
A0 Ptr zum Namen

 
Mit dem Thing werden alle Jobs aufgegeben, die es bei Aufruf benutzen.
Aufruf ohne Wiederkehr, wenn der rufende Job mit entfernt wurde.
Der Linkblock wird automatisch dem Heap wieder eingegliedert.
 



 

sms.nthg MT.NTHG 1 / 43  
 Nächstes Thing in der Reihenfolge auswählen
  IN:   OUT:  
A0 Ptr zum Namen oder Null
A1 nächster Linkblock oder Null

 
Mit Angabe Null zu Beginn kann eine gesamte Thing-Liste abgesucht werden.
Am Ende kommt in A1 Null zurück.
 



 

sms.sthg MT.STHG 1 / 44  
sms.nthu SMS.NTHU 1 / 44 lt {15}
Nächsten Benutzer des angegebenen Thing aufspüren
  IN:   OUT:  
  D2 Besitzer des usage block 
A0 Name des Thing
A1 Ptr zum usage block oder Null A1 Nächster usage block / Null

 

ERR.NJ -2 usage block nicht gefunden

Der usage block kann seine Größe verändern. Auch mag zwischen den Aufrufen einer der verzeichneten Jobs ganz verschwinden. Darum sollten die Daten nicht anderweitig benutzt werden.



 

Die folgenden Traps stehen nur in den SMSQ-Varianten zur Verfügung:
 

Die Aufrufe sind soweit erkärt, wie zum Erhalt der QDOS-Kompatibilität erforderlich. Weitergehende Informationen sind den SQ-Dokumenten zu entnehmen. Quelle hier nur {15}, außer (1/47) ist nichts davon überprüft worden.

Syteme, wo sie nicht definiert sind, geben ERR.BP zurück, sodaß die Traps zusammen mit geeigneten Ersatz-Aktionen stets gefahrlos eingesetzt werden können. In manchen Fällen bedarf es nicht einmal solcher Zusätze, wie z.B. bei SMS.CACH, denn wo diese Trap fehlt, kommt ihre Wirkung ohnehin nicht in Betracht.
 



 

sms.iopr SMS.IOPR 1 / 46  
i/o-Priorität einstellen
  IN:   OUT:  
D2.W Prioritätszahl D2

 

NOERR
Nutzlos: Weder Sinn noch Bezug oder Wirkung dieser Trap werden erklärt.



 

sms.cach SMS.CACH 1 / 47  
Processor-Cache schalten 
  IN:   OUT:  
D1 -1: nur lesen D1 alter Zustand
  1: ein- 0: ausschalten

 

NOERR

Die Angabe zum nur Lesen des Zustandes mit D1 = -1 basiert auf mündlicher überlieferung. Diese Möglichkeit soll in den jüngeren Varianten vorhanden sein, sie ist in {15} aber (noch?) nicht dokumentiert.



 

sms.lldm SMS.LLDM 1 / 48  
"sprachenabhängiges Modul" einfügen 
  IN:   OUT:  
D1 D1
A1 Ptr zum Modul A1

 
Alle Module der der Liste (A1) werden in die Liste der sprachenabhängigen Module aufgenommen. Was solch ein "Modul" ist, wird in {15} beschrieben.



 

sms.lenq SMS.LENQ 1 / 49  
Sprachencode ermitteln 
  IN:   OUT:  
D1 wenn =/= 0, ret code D1 Telephon-Landescode
D2 wenn =/= 0, ret Zeichen D2 KFZ-Nationalitätenzeichen

 

NOERR

Rückgabe jeweils ergänzend zum Eingabewert, rsp. beider Angaben.
Bei ungültiger Eingabecodierung kommt die aktuelle Standardvorgabe zurück.
D2 wird in den niederwertigen Bytes ggf. mit <BL> aufgefüllt.
 



 

sms.lset SMS.LSET 1 / 50  
Sprachencode einstellen 
 

Angaben wie SMS.LENQ
 



 

sms.pset SMS.PSET 1 / 51  
Druckerausgabe-Umsetzung einstellen/aktivieren 
  IN:   OUT:  
D1 Übersetzungs-Code D1 verdorben
0: wie TRA 0
1: wie TRA 1
adresse: TRA adresse
zusätzlich
2: IBM-Typ TRA
3: GEM-Typ TRA
code.W | $ffff.W: Sprachenmodul
code.W | 0001.W: aktivieren

 



 

sms.mptr SMS.MPTR 1 / 52  
Adresse einer Systemmeldung ermitteln 
  IN:   OUT:  
A1 Meldungscode (negativ) A1 Ptr auf den Text

 

NOERR


 

sms.fprm SMS.FPRM 1 / 53  
Sprachenmodul suchen 
  IN:   OUT:  
D1 0 oder Sprachencode
D2 0 oder KFZ-Kennung
D3 Gruppe | Modul-Typ

 

NOERR

Soll das Vorzugs-Modul entsprechend den Angaben in D1-D3 finden.
Dabei bleibt unklar, wie ein Resultat übergeben wird, oder ob es überhaupt eines gibt. Möglicherweise soll die Trap dazu dienen, das betr. Modul zum "Vorzugsmodul" zu machen, dem von da an die betr. Daten entnommen werden.
 



 

sms.schp SMS.SCHP 1 / 56  
reservierten Speicherblock verkleinern 
  IN:   OUT:  
D1 neue Größe D1 gegebene Größe
A0 Basisadresse A0 unveränderte Basisadresse

 

ERR.NJ wenn der Besitzerjob nicht (mehr) existiert

Ein sinnfälliges Gegenstück zum verlustfreien Vergrößern eines Bereichs fehlt.
Die beide Fälle abdeckende Paarung MT.ALBAS/MT.REBAS ist im SQ, wenn überhaupt, nur teilweise und fehlerhaft rsp. derart restriktiv gegeben, daß sie kaum mehr nutzbar ist.
 



 

sms.s evt SMS.SEVT 1 / 58  
"event" an einen Job senden
sms.wevt SMS.WEVT 1 / 59  
auf einen "event" warten 
  IN:   OUT:  
D1 Ziel-.Job ID D1 gegebene Größe
D2 "events" D2 auslösender "event"
D3 Wartezeit

 
SMS.SEVT:

D2 bleibt erhalten, D3 nicht ausgewertet.

ERR.NJ wenn der Besitzerjob nicht (mehr) existiert

SMS.WEVT:

NOERR

 



 

5.2.2 ** I/O-Zuweisung Trap #2

 



 

ioa.open IO.OPEN 2 / 1  
Einen Kanal eröffnen
  IN:   OUT:  
D1 Job-ID D1 wirkliche Job-ID
D3 Open-Typ (s.u.) D3 verdorben
D2 e.32, MGG: verdorben
A0 Ptr zum Kanalnamen A0 Kanal-ID
A1 verdorben

 
Jeder Fehlercode bedeutet, daß der Kanal nicht geöffnet wurde.

ERR.NO  -6  Öffnen mißlungen, zuviele Kanäle
ERR.NJ   -2
ERR.OM  -3
ERR.NF   -7  zum Namen nichts gefunden
ERR.EX   -8  File existiert schon
ERR.IU   -9   File oder Device in Betrieb
ERR.BN -12  Filename unbrauchbar (Device gefunden)

OPEN-Typ:

0 OPEN        altes File oder Device I/O
1 OPEN_IN   altes File zum geteilten Zugriff, nur Lesen
2 OPEN_NEW neues File I/O, TK MI
3 OPEN_OVER neues File anlegen, altes überschreiben, LV
4 OPEN_DIR File zum Directory machen, LV SM
KANAL-ID     zum Öffnen der Sendeseite einer PIPE

Lt. {15} steht der OPEN_OVER-Modus für MDV nicht zur Verfügung. Betreffs SQ wird das schon allein deshalb zutreffen, da dort die MDVs vollständig ignoriert werden.
Im wirklichen QL aber, z.B. bei MGG oder MINERVA mit GC, sind alle genannten OPEN-Modi durchaus auch auf MDV anwendbar.
 
 



 

ioa.clos IO.CLOSE 2 / 2  
 Schließt einen Kanal
  IN:   OUT:  
A0 Kanal-ID A0 verdorben
A1 verdorben

 

NOERRR

CLOSE gilt immer als erfolgreich abgeschlossen.
 



 

ioa.frmt IO.FORMT 2 / 3  
Formatiert einen sectorisierten Datenträger
  IN:   OUT:  
D1.W Anzahl brauchbarer Sectoren
D2.W Gesamtzahl Sectoren
A0 Ptr zum Namen A0 verdorben
A1 verdorben

 

ERR.OM -3
ERR.FF -14 Fehler beim Formatieren
ERR.NF -7
ERR.IU -9

IO.FORMAT arbeitet auch, wenn zugleich ein Kanal für den TK2-Direktzugriff auf den betr. Datenträger offen ist.
 



 

ioa.delf IO.DELET 2 / 4  
Ein File löschen
  IN:   OUT:  
D1 Job-IDdes Kanal-Besitzers D1, D3 SQ: verdorben
A0 Ptr zum Filenamen A0-A3 verdorben

 

ERR.NO -6 zu viele Kanäle offen
ERR.OM -3
ERR.NF  -7
ERR.BN -12

 


Nur SQ:

 

ioa.sown IOA.SOWN 2 / 5  
neuen Kanalbesitzer festlegen
  IN:   OUT:  
D1 Job-IDdes neuen Besitzers D1 verdorben
A0 Kanal-ID

 

ERR.NJ  Jobangabe ungültig
ERR.NO Kanal-ID ungültig

Die Trap kann leicht nachgebildet werden:
Man trägt dazu lediglich die Job-ID des neuen Besitzers an Position 8 des Heap-Headers der cdt ein.

 
 


  oben : zurück : weiter : inhalt 

(count)