Topic : TOS - das Betriebssystem
Author :
Version : tos.hyp (5. März 2013)
Subject : Programmieren/Atari
Nodes : 3001
Index Size : 93602
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default : Titel
@help :
@options : +g -i -s +x +zz -t4
@width : 70
View Ref-File16.8.5 XHDI-Funktionen TOSAlle Funktionen müssen im Supervisor-Modus aufgerufen werden. Das
Verhalten für Aufrufe im User-Modus ist undefiniert. Bis auf D0 werden
keine Prozessorregister verändert. Undefinierte Opcodes führen zur
Fehlermeldung EINVFN.
Einige der Funktionsaufrufe - insbesondere XHReadWrite() - können zum
Aufruf von BIOS- oder XBIOS-Routinen im Betriebssystem und damit zur
Aktivierung des Critical Error Handler führen. Im Zweifel muß der CEH
also vom Aufrufer abgeschaltet werden.
Für alle Funktionen seien folgende Return-Werte definiert:
TOS-Fehlernummern: 0: OK (OK)
-1: unspezifizierter Fehler (ERROR)
-2: Gerät nicht bereit (EDRVNR)
-15: ungültige Device/Targetnummer (EUNDEV)
-32: falsche Funktionsnummer (EINVFN)
-36: Gerät ist zur Zeit 'reserved' (EACCDN)
-46: BIOS-Device wird vom Treiber nicht bedient (EDRIVE)
SCSI-Fehlernummern (Bereich von -200..-455) (-200 - N): SCSI-Errorcode N (der `Additional Sense Code' aus Byte
12 des `Extended Sense Format', siehe Anhang B in `draft
proposed American National Standard for information
systems - Revision 11a - SCSI-3 Primary Commands, 28
March 1997').
IDE-Fehlernummern (Bereich von -456..-711) (-456 - N): IDE-Errorcode N (Wert des IDE-Fehlerregisters).
Hinweis: SCSI-Fehlercodes können logischerweise nur bei ACSI-/SCSI-
Geräten auftreten. Für Platten am IDE-Interface des ST-Book oder
Falcon030 (oder Maschinen, bei denen ein derartiges Interface
nachgerüstet worden ist), kann auch optional folgende Zuordnung
benutzt werden:
Bit im IDE-
Fehlerregister Bedeutung SCSI-Fehler XHDI-Fehler
1 Track 0 not found $06 -206
0 DAM not found $13 -219
4 ID-Field not found $12 -218
7 Bad block mark $10 -216
6 Uncorrectable error $11 -217
2 Command aborted $20 -232
5 Media Change $28 -240
3 Media Change requested $5A -290
(Es empfiehlt sich, die einzelnen Bits in der angegebenen Reihenfolge
zu testen).
Bei andersartigen Geräten, wie zum Beispiel Diskettenlaufwerken an der
Floppy-Controller-Schnittstelle, können auch andere, hier noch nicht
spezifizierte Error-Codes zurückgeliefert werden.
Für die Parameterübergabe gilt die GEMDOS-Übergabe-Konvention. Alle
Parameter werden auf dem Stack abgelegt (zuletzt, also an der
niedrigsten Adresse, der Opcode als 16-Bit-Wert). Das 32 Bit große
Ergebnis wird in D0 zurückgeliefert.
Immer dann, wenn dokumentiert ist, daß der Aufrufer Nullzeiger
übergeben darf, bedeutet die Übergabe eines Nullzeigers, daß der
Aufrufer sich für den zurückzuliefernden Wert nicht interessiert.
Treibersoftware muß also solche Zeiger vor einer Dereferenzierung
immer überprüfen.
Querverweis: XHDI-Spezifikation SCSI-Spezifikation BIOS