INHALTSVERZEICHNIS
lowlevel.library/AddKBInt
lowlevel.library/AddTimerInt
lowlevel.library/AddVBlankInt
lowlevel.library/ElapsedTime
lowlevel.library/GetKey
lowlevel.library/GetLanguageSelection
lowlevel.library/QueryKeys
lowlevel.library/ReadJoyPort
lowlevel.library/RemKBInt
lowlevel.library/RemTimerInt
lowlevel.library/RemVBlankInt
lowlevel.library/SetJoyPortAttrsA
lowlevel.library/StartTimerInt
lowlevel.library/StopTimerInt
lowlevel.library/SystemControlA
lowlevel.library/AddKBInt lowlevel.library/AddKBInt
NAME
AddKBInt -- Fügt eine Routine zum Keyboard-Interrupt hinzu. (V40)
SYNOPSIS
intHandle = AddKBInt(intRoutine, intData);
D0 A0 A1
APTR AddKBInt(APTR, APTR);
FUNKTION
Diese Routine erweitert die Funktionalität des Keyboard-Interrupts
um den Zusatz intRoutine. Da dies eine Erweiterung des normalen
Keyboard-Interrupts ist, wird das gesamte Keyboard-Protokoll
bearbeitet. Die Fehlermeldungen des Keyboards werden ausgefiltert
und nicht an intRoutine gesandt.
Die Routine wird jedesmal aufgerufen, wenn der Anwender eine Taste
auf dem Keyboard drückt.
Die Routine wird aus einem Interrupt heraus aufgerufen, deshalb
gelten normale Einschränkungen. Die Routine muss die Inhalte
folgender Register erhalten: A2, A3, A4, A7, D2-D7. Andere
Register sind ohne Vorgabe (scratch) außer D0, welches beim
Verlassen AUF 0 GESETZT WERDEN MUSS. Beim Eintritt in die Routine
enthält A1 'intData', A5 enthält 'intRoutine' und D0 enthält den
Tastencode (rawkey code), der von der Tastatur gelesen wurde.
Die Routine wird nicht aufgerufen, wenn ein Keyboard-Reset
empfangen wurde.
Dies ist eine Low-Level-Funktion, die nicht in das normale Amiga-
Multitasking-Modell passt. Der installierte Interrupt hat keine
Kenntnis, welches Fenster/welcher Schirm aktuell Eingaben empfängt.
Wenn das Programm ohne Neustart des Systems endet, MUSS vor Ende
RemKBInt() aufgerufen werden.
Nur eine Interrupt-Routine darf zum System hinzu gefügt werden.
Es ist IMMER der Rückgabewert zu prüfen, ob ein anderer Prozess
diese Funktion bereits verwendet.
EINGABEN
intRoutine - Die Routine, die bei jeder vertikalen Austastlücke
(vblank) aufgerufen werden soll. Diese Routine sollte
so kurz wie möglich sein, um den Einfluss auf das
allgemeine Betriebsverhalten so gering wie möglich zu
halten.
intData - Daten, die der Routine im Register A1 übergeben werden.
Wenn mehr als ein Langwort benötigt wird, sollte dies
ein Zeiger auf eine Struktur sein, welche die
erforderlichen Daten enthält.
RÜCKGABE
intHandle - Eine Kennung (handle), um den Interrupt handhaben zu
können, oder NULL, wenn die Routine nicht angehängt
werden konnte.
SIEHE AUCH
RemKBInt()
lowlevel.library/AddTimerInt lowlevel.library/AddTimerInt
NAME
AddTimerInt -- Fügt einen Interrupt hinzu, der in regelmäßigen
Abständen ausgeführt wird. (V40)
SYNOPSIS
intHandle = AddTimerInt(intRoutine, intData);
D0 A0 A1
APTR AddTimerInt(APTR, APTR);
FUNKTION
Der Aufruf dieser Routine veranlasst das System einen CIA-Timer
zu belegen und eine 'intRoutine' einzurichten, die jeden Interrupt
bedient, der von diesem Timer verursacht wird. Obwohl der Timer
belegt wurde, läuft er nicht noch ist er aktiviert. Zunächst muss
StartIntTimer() aufgerufen werden, um die Zeitabstände einzurichten
und den Timer zu starten.
Die Routine wird aus einem Interrupt heraus aufgerufen, deshalb
gelten normale Einschränkungen. Die Routine muss die Inhalte
folgender Register erhalten: A2, A3, A4, A7, D2-D7. Andere
Register sind ohne Vorgabe (scratch) außer D0, welches beim
Verlassen AUF 0 GESETZT WERDEN MUSS. Beim Eintritt in die Routine
enthält A1 'intData', A5 enthält 'intRoutine'.
Nur ein einziger CIA-Timer wird durch diese Routine belegt. Deshalb
darf diese Routine nur einmal aufgerufen werden, wenn nicht
dazwischen ein Aufruf von RemTimerInt() erfolgt.
Der von dieser Routine verwendete CIA-Timer muss nicht bei jedem
Aufruf der Selbe sein. Die Routine greift auf die CIA-Resource zu
und verwendet einen nicht belegten Timer.
Wenn das Programm ohne Neustart des Systems endet, MÜSSEN vor Ende
alle Aufrufe dieser Funktion durch die gleiche Zahl von Aufrufen
von RemKBInt() ausgeglichen werden.
Selbst wenn die Funktion nur einmal im Programm verwendet wird,
macht die Prüfung der Rückgabe das Programm toleranter für das
Multitasking auf der Amiga-Computer-Platform.
EINGABEN
intRoutine - Die Routine, die bei Timer-Interrupt aufgerufen werden
soll. Diese Routine sollte so kurz wie möglich sein,
um den Einfluss auf das allgemeine Betriebsverhalten so
gering wie möglich zu halten.
intData - Daten, die der Routine im Register A1 übergeben werden.
Wenn mehr als ein Langwort benötigt wird, sollte dies
ein Zeiger auf eine Struktur sein, welche die
erforderlichen Daten enthält.
RÜCKGABE
intHandle - Eine Kennung (handle), um den Interrupt handhaben zu
können, oder NULL, wenn die Routine nicht angehängt
werden konnte.
SIEHE AUCH
RemTimerInt(), StopTimerInt(), StartTimerInt()
lowlevel.library/AddVBlankInt lowlevel.library/AddVBlankInt
NAME
AddVBlankInt -- Fügt eine Routine hinzu, die bei jedem vertikalen
Austastimpuls (vertical blank) ausgeführt wird. (V40)
SYNOPSIS
intHandle = AddVBlankInt(intRoutine, intData);
D0 a0 a1
APTR AddVBlankInt(APTR, APTR);
FUNKTION
Damit kann dem System eine Routine hinzugefügt werden, welche bei
jedem vertikalen Austastimpuls aufgerufen wird
Die Routine wird aus einem Interrupt heraus aufgerufen, deshalb
gelten normale Einschränkungen. Die Routine muss die Inhalte
folgender Register erhalten: A2, A3, A4, A7, D2-D7. Andere
Register sind ohne Vorgabe (scratch) außer D0, welches beim
Verlassen AUF 0 GESETZT WERDEN MUSS. Beim Eintritt in die Routine
enthält A1 'intData', A5 enthält 'intRoutine'.
Wenn das Programm ohne Neustart des Systems endet, MUSS vor Ende
RemVBlankInt() aufgerufen werden.
Nur eine Interrupt-Routine darf zum System hinzu gefügt werden.
Es ist IMMER der Rückgabewert zu prüfen, ob ein anderer Vorgang
diese Funktion bereits verwendet.
EINGABEN
intRoutine - Die Routine, die bei jeder vertikalen Austastung (vblank)
aufgerufen werden soll. Diese Routine sollte so kurz
wie möglich sein, um den Einfluss auf das allgemeine
Betriebsverhalten so gering wie möglich zu halten.
intData - Daten, die der Routine im Register A1 übergeben werden.
Wenn mehr als ein Langwort benötigt wird, sollte dies
ein Zeiger auf eine Struktur sein, welche die
erforderlichen Daten enthält.
RÜCKGABE
intHandle - Eine Kennung (handle), um den Interrupt handhaben zu
können, oder NULL, wenn die Routine nicht angehängt
werden konnte.
SIEHE AUCH
RemVBlankInt()
lowlevel.library/ElapsedTime lowlevel.library/ElapsedTime
NAME
ElapsedTime -- Gibt die Zeit zurück, die seit dem letzten Aufruf
vergangen ist. (V40)
SYNOPSIS
fractionalSeconds = ElapsedTime(context);
D0 A0
ULONG ElapsedTime(struct EClockVal *);
FUNKTION
Diese Funktion benützt die Funktion timer.device/ReadEClock(),
um den genauen Wert der vergangenen Zeit zu erhalten. Da mit dem
ersten Aufruf dieser Routine zunächst die Voraussetzungen geschaffen
werden müssen, wird dabei ein sinnloser Wert ausgegeben.
Der Rückgabewert für diese Funktion bietet nur einen Wert von
sechzehn Bit für die Ganzzahl der Sekunden und sechzehn Bit für
den gebrochenen Wert.
Mit einem Wert von 16 Bit für die ganze Zahl der Sekunden kann
diese Funktion als Timer bis zu ungefähr 16 Stunden verwendet
werden. Wenn die tatsächlich verflossenene Zeit größer ist, wird
dieser Maximalwert zurück gegeben.
Die sechzehn Bit für den gebrochenen Teil der Sekunden ergeben
eine Auflösung von ungefähr 20 Mikrosekunden. Jedoch wird nicht
empfohlen, diese Funktion bei Zeitintervallen von weniger als 200
Mikrosekunden als genau anzusehen.
EINGABEN
context - Zeiger auf eine Struktur EClockVal. Beim ersten Aufruf
dieser Funktion sollte die Struktur auf 0 Sekunden
initialisiert werden. Danach sollte die gleiche Struktur
bei folgenden Aufrufen der Funktion wieder verwendet
werden, denn so wird die vergangene Zeit berechnet.
RÜCKGABE
fractionalSeconds - Die vergangene Zeit als Festpunkt-32-Bit-Zahl
mit dem Dezimalpunkt fest in der Mitte. Das
bedeutet, das die oberen sechzehn Bit die Zahl
der verflossenen Sekunden darstellen. Die
unteren sechzehn Bit geben den Bruchteil der
vergangenen Sekunden an. Dieser Wert ist auf
ungefähr 16 Stunden begrenzt. Obwohl die
Zeitangabe auf etwa 20 Mikrosekunden genau
angegeben ist, liegt die tatsächliche Genauigkeit
nur bei etwa 200 Mikrosekunden.
WARNUNG
Der erste Aufruf dieser Funktion gibt einen sinnlosen Wert zurück.
Erst ab dem zweiten Aufruf erhält man verlässliche Werte.
SIEHE AUCH
timer.device/ReadEClock()
lowlevel.library/GetKey lowlevel.library/GetKey
NAME
GetKey -- Gibt die gerade gedrückte Taste im "rawkey code" und die
gedrückten Sondertasten (qualifiers) zurück. (V.40)
SYNOPSIS
key = GetKey();
D0
ULONG GetKey(VOID);
FUNKTION
Diese Funktion gibt die aktuell gedrückte normale Taste und alle
gedrückten Sondertasten zurück.
Diese Funktion ist sicher innerhalb eines Interrupts.
Dies ist eine Low-Level-Funktion, die nicht in das normale Amiga-
Multitasking-Modell passt. Der installierte Interrupt hat keine
Kenntnis, welches Fenster/welcher Schirm aktuell Eingaben empfängt.
RÜCKGABE
key - Tastaturcode der zuletzt gedrückten normalen Taste im
Wort niederer Ordnung. Wenn keine Taste gedrückt ist, ist
der Wert dieses Wortes FF. Das Wort hoher Ordnung enthält
die Sondertasten, die im Langwort wie folgt zu finden sind:
Markierung Taste
LLKB_LSHIFT Links Shift
LLKB_RSHIFT Rechts Shift
LLKB_CAPSLOCK Shift Feststeller
LLKB_CONTROL Control
LLKB_LALT Links Alt
LLKB_RALT Rechts Alt
LLKB_LAMIGA Links Amiga
LLKB_RAMIGA Rechts Amiga
SIEHE AUCH
lowlevel.library/GetLanguageSelection lowlevel.library/GetLanguageSelection
NAME
GetLanguageSelection -- Gibt die aktuelle Sprachauswahl zurück. (V40)
SYNOPSIS
language = GetLanguageSelection();
D0
ULONG GetLanguageSelection (VOID);
FUNKTION
Ermitteln, welche Sprache der Anwender eingestellt hat.
RÜCKGABE
language - Vom Anwender eingestellte Sprache oder Null, wenn bisher
keine ausgewählt wurde. Siehe
über zur Zeit unterstützte Sprachen.
SIEHE AUCH
, locale.doc
lowlevel.library/QueryKeys lowlevel.library/QueryKeys
NAME
QueryKeys -- Gibt den Zustand einer Gruppe von Tasten zurück. (V40)
SYNOPSIS
QueryKeys(queryArray, arraySize);
A0 D1
VOID QueryKeys(struct KeyQuery *, UBYTE);
FUNKTION
Durchsucht die Tastatur um zu ermitteln, welche der Tasten,
deren Codes (rawkey codes) im QueryArray aufgelistet sind, z.Zt.
gedrückt sind. Der Zustand jeder Taste wird im Array zurück gegeben.
Diese Funktion kann innerhalb eines Interrupts aufgerufen werden,
aber die Größe von QueryArray sollte so klein wie möglich gehalten
werden.
Dies ist eine Low-Level-Funktion, die nicht in das normale Amiga-
Multitasking-Modell passt. Die zurück gegebenen Werte haben keine
Kenntnis, welches Fenster/welcher Schirm aktuell Eingaben empfängt.
EINGABEN
queryArray - Ein Array von KeyQuery-Strukturen. Die kq_KeyCode-
Felder dieser Struktur sollten mit den Rawkey-Codes
gefüllt werden, die zu überprüfen sind. Nach der
Rückgabe aus dieser Funktion wird das Feld kq_Pressed
dieser Struktur auf TRUE gesetzt, wenn die zugehörige
Taste gedrückt ist und auf FALSE, wenn nicht.
arraySize - Zahl der Tastaturcode-Einträge in queryArray
SIEHE AUCH
lowlevel.library/ReadJoyPort lowlevel.library/ReadJoyPort
NAME
ReadJoyPort -- Gibt den Zustand des ausgewählten Joy-/Maus-Ports
zurück. (V40)
SYNOPSIS
portState = ReadJoyPort(portNumber);
D0 D0
ULONG ReadJoyPort(ULONG);
FUNKTION
Diese Funktion wird verwendet um festzustellen, welches Gerät an
den Joyport angeschlossen ist und wie der aktuelle Zustand der
Einstellungen und Knöpfe ist. Der Anwender kann eine Maus, einen
Spiel-Controller oder einen Joystick an den Port anschließen und
die Funktion ermittelt dynamisch, welches Gerät verbunden ist und
gibt den passend formatierten portState zurück.
Um die Art des angeschlossenen Controllers zu ermitteln, taktet
diese Funktion den Spiel-Controller und/oder übersetzt die
Änderungen der Joyport-Daten. Gültige getaktete Daten vom Spiel-
Controller werden sofort entschlüsselt. Um jedoch genau bestimmen
zu können, ob eine Maus oder ein Joystick angeschlossen ist, sind
mehrere Aufrufe dieser Funktion nötig, wobei gleichzeitig das Gerät
am Joyport durch den Anwender zu bewegen ist.
Diese Funktion läuft immer sofort ab.
Dies ist eine eingleisige Funktion, die nicht in das normale
Multitasking-Modell des Amiga passt. Nur ein Auftrag (task) kann
jeweils diese Routine ausführen. Alle anderen werden sofort mit
JP_TYPE_NOTAVAIL zurückgegeben.
Die Beschaffenheit dieser Routine soll nicht zu Multitasking-
unfreundlichen Programmierungs-Praktiken wie Abfrageschleifen
ermutigen. Wenn der Auftrag auf die Rückgabe eines Übergangs
wartet, sollte WaitTOF() zwischen den Aufrufen verwendet werden,
um den Einfluss auf das System möglichst klein zu halten.
Wenn diese Funktion für einen Port zum ersten Mal aufgerufen wird,
versucht sie bestimmte System-Resourcen zu übernehmen. Um diese
Resourcen zu bekommen, MUSS die Funktion aus einer Task oder aus
einem DOS-Prozess heraus aufgerufen sein. Wenn die Funktion die
notwendigen Resourcen nicht erhält, endet sie mit der Rückgabe
JP_TYPE_NOTAVAIL. Sobald die Resourcen übernommen sind (Rückgabewert
anders als JP_TYPE_NOTAVAIL), kann diese Funktion in Interrupts
verwendet werden.
EINGABEN
portNumber - port to read, in the range 0 to 3.
RÜCKGABE
portState - Bitmap, die das Gerät und seinen aktuellen Zustand
kennzeichnet. Das Format der Bitmap hängt von dem
Typ des angeschlossenen Geräts ab.
Die folgenden Konstanten aus
werden verwendet, um das angeschlossenen Gerät und
dessen Zustand zu bestimmen.
Der Typ des Geräts kann dadurch ermittelt werden,
dass die Maske JP_TYPE_MASK auf den Rückgabewert
angewendet wird und das Ergebnis mit dem Folgenden
verglichen wird:
JP_TYPE_NOTAVAIL Portdaten nicht vorhanden
JP_TYPE_GAMECTLR Spiel-Controller
JP_TYPE_MOUSE Maus
JP_TYPE_JOYSTK Joystick
JP_TYPE_UNKNOWN unbekanntes Gerät
Wenn Typ = JP_TYPE_GAMECTLR, ist die Bitmap von portState:
JPF_BUTTON_BLUE Blau - Stop (Blue - Stop)
JPF_BUTTON_RED Rot - Auswahl (Red - Select)
JPF_BUTTON_YELLOW Gelb - Wiederholung
(Yellow - Repeat)
JPF_BUTTON_GREEN Grün - Mischen
(Green - Shuffle)
JPF_BUTTON_FORWARD Tiefschwarz - Vorwärts
(Charcoal - Forward)
JPF_BUTTON_REVERSE Tiefschwarz - Rückwärts
(Charcoal - Reverse)
JPF_BUTTON_PLAY Grau - Spiel/Pause
(Grey - Play/Pause)
JPF_JOY_UP Auf (Up)
JPF_JOY_DOWN Ab (Down)
JPF_JOY_LEFT Links (Left)
JPF_JOY_RIGHT Rechts (Right)
Wenn Typ = JP_TYPE_JOYSTK, ist die Bitmap von portState:
JPF_BUTTON_BLUE Rechts (Right)
JPF_BUTTON_RED Feuer (Fire)
JPF_JOY_UP Auf (Up)
JPF_JOY_DOWN Ab (Down)
JPF_JOY_LEFT Links (Left)
JPF_JOY_RIGHT Rechts (Right)
Wenn Typ = JP_TYPE_MOUSE, ist die Bitmap von portState:
JPF_BUTTON_BLUE Rechte Maustaste (Right mouse)
JPF_BUTTON_RED Linke Maustaste (Left mouse)
JPF_BUTTON_PLAY Mittlere Maustaste
(Middle mouse)
JP_MVERT_MASK Maske für vertikalen Zähler
JP_MHORZ_MASK Maske für horizontalen Zähler
SIEHE AUCH
SetJoyPortAttrs()
lowlevel.library/RemKBInt lowlevel.library/RemKBInt
NAME
RemKBInt -- Entfernen eines vorher eingerichteten
Keyboard-Interrupts. (V40)
SYNOPSIS
RemKBInt(intHandle);
A1
VOID RemKBInt(APTR);
FUNKTION
Entfernen einer Keyboard-Interrupt-Routine, die vorher mit
AddKBInt() eingerichtet worden war.
EINGABEN
intHandle - Kennung (handle), die mit AddKBInt() übergeben worden
war. Sie kann NULL sein, in diesem Falle tut die
Funktion garnichts.
SIEHE AUCH
AddKBInt()
lowlevel.library/RemTimerInt lowlevel.library/RemTimerInt
NAME
RemTimerInt -- Entfernen eines vorher eingerichteten
Timer-Interrupts. (V40)
SYNOPSIS
RemTimerInt(intHandle);
A1
VOID RemTimerInt(APTR);
FUNKTION
Entfernen einer Timer-Interrupt-Routine, die vorher mit AddTimerInt
eingerichtet worden war.
EINGABEN
intHandle - Kennung (handle), die mit AddTimerInt() übergeben
worden war. Sie kann NULL sein, in diesem Falle tut die
Funktion garnichts.
SIEHE AUCH
AddTimerInt(), StopTimerInt(), StartTimerInt()
lowlevel.library/RemVBlankInt lowlevel.library/RemVBlankInt
NAME
RemVBlankInt -- Entfernen einer vorher eingerichteten Routine
für die vertikale Austastlücke (vertical blank).
(V40)
SYNOPSIS
RemVBlankInt(intHandle);
A1
VOID RemVBlankInt(APTR);
FUNKTION
Entfernen einer Routine für die vertikale Austastlücke (vertical
blank), die vorher mit AddVBlankInt() zugefügt worden war.
EINGABEN
intHandle - Kennung (handle), die mit AddVBlankInt() übergeben
worden war. Sie kann NULL sein, in diesem Falle tut die
Funktion garnichts.
SIEHE AUCH
AddVBlankInt()
lowlevel.library/SetJoyPortAttrsA lowlevel.library/SetJoyPortAttrsA
NAME
SetJoyPortAttrsA -- Änderung der Attribute eines Ports. (V40.27)
SetJoyPortAttrs -- Anhang für Variablen-Argumente (varargs stub)
für SetJoyPortAttrsA(). (V40.27)
SYNOPSIS
success = SetJoyPortAttrsA(portNumber, tagList);
D0 D0 A1
BOOL SetJoyPortAttrsA(ULONG, struct TagItem *);
Success = SetJoyPortAttrs(portNumber, firstTag, ...);
BOOL SetJoyPortAttrs(Tag, ...);
FUNKTION
Diese Funktion ermöglicht die Veränderung einiger Attribute, die
in ReadJoyPort() sowohl über die Operation wie auch über den
Typ des Controllers des Geräts, das zur Zeit im Port eingesteckt
ist.
ReadJoyPort() verhält sich grundsätzlich so, dass es automatisch
den Typ des Controllers festzustellen versucht, der in einem der
vorhandenen Ports eingesteckt ist, wenn es diesen Port auslesen
soll. Dieses Verhalten ist vorteilhaft und erlaubt eine einfache
Bestimmung des Controllertyps, der an dem Port angeschlossen ist.
Leider sind seltene Fälle möglich, bei denen extrem feine Bewegungen
mit der Maus als Joystick-Bewegungen gedeutet werden. Außerdem
dauern durch diese Fähigkeit zur automatischen Ermittlung des
Controllertyps die meisten Ablesungen länger, als wenn keine
automatische Prüfung vorhanden wäre.
SetJoyPortAttrs() soll für diese beiden Fälle Vorsorge treffen.
Es gestattet dem Programmierer ReadJoyPort() zu veranlassen,
die Prüfung auf den verwendeten Controllertyp abzubrechen --
und, wahlweise, ReadJoyPort() zu zwingen, einen bestimmten
Controllertyp zu verwenden.
EINGABEN
portNumber - Der fragliche Joyport (0-3).
tagList - Ein Zeiger auf ein Array von Kennunzeichen (tags), die
Parameter für SetJoyPortAttrs() enthalten; wenn NULL,
gibt die Funktion TRUE zurück, aber tut nichts weiter.
TAGS
SJA_Type (ULONG) - Setzt den aktuellen Controllertyp auf Maus,
Joystick oder Game-Controller. Eines der
folgenden ist anzugeben: SJA_TYPE_GAMECTLR,
SJA_TYPE_MOUSE, SJA_TYPE_JOYSTK oder
SJA_TYPE_AUTOSENSE. Wenn SJA_TYPE_AUTOSENSE
verwendet wird, versucht ReadJoyPort() den Typ
des am Port angeschlossenen Controller automatisch
zu ermitteln. Wenn einer der anderen Typen benutzt
wird, versucht ReadJoyPort() nicht, den angegebenen
Controller als etwas anderes zu lesen. Der
vorgegebene Typ der Einstellungen ist SJA_AUTOSENSE.
Anmerkung: Wenn der Typ auf etwas anderes als
automatische Prüfung gesetzt ist, liegt es in der
Verantwortung des Programmierers, ihn vor dem
Beenden auf automatische Prüfung zurück zu stellen.
SJA_Reinitialize (VOID) - Stellt einen bestimmten Port auf seinen
Initialisierungszustand zurück und erzwingt die
Freigabe aller übernommenen Resourcen; der Typ wird
auf SJA_TYPE_AUTOSENSE zurückgesetzt.
RÜCKGABE
success - TRUE, wenn alles nach Plan verlief, oder FALSE bei Fehler.
SIEHE AUCH
ReadJoyPort(),
lowlevel.library/StartTimerInt lowlevel.library/StartTimerInt
NAME
StartTimerInt -- Startet den Timer, der mit dem Timer-Interrupt
verbunden ist. (V40)
SYNOPSIS
StartTimerInt(intHandle, timeInterval, continuous);
A1 D0 D1
VOID StartTimerInt(APTR, ULONG, BOOL);
FUNKTION
Diese Routine startet einen angehaltenen Timer, der zu einem
Timer-Interrupt gehört, der mit AddTimerInt() erzeugt wurde.
EINGABEN
intHandle - Kennung (handle), die von AddTimerInt() übergeben wurde.
timeInterval - Zahl der Mikrosekunden zwischen den Interrupts. Der
zugelassene Höchstwert beträgt 90 000. Werden höhere
Werte übergeben, kann es zu unerwarteten Ergebnissen
kommen.
continuous - FALSE bei einem Einmal-Interrupt. TRUE bei Mehrfach-
Interrupts.
SIEHE AUCH
AddTimerInt(), RemTimerInt(), StopTimerInt()
lowlevel.library/StopTimerInt lowlevel.library/StopTimerInt
NAME
StopTimerInt -- Hält den Timer an, der zum Timer-Interrupt gehört.
(V40)
SYNOPSIS
StopTimerInt(intHandle);
A1
VOID StopTimerInt(APTR);
FUNKTION
Hält den Timer an, dessen Timer-Interrupt-Kennung (handle) übergeben
wurde. Damit wird ein Dauer-Timer angehalten, der mit StartTimerInt()
gestartet wurde.
EINGABEN
intHandle - Kennung (handle), die von AddTimerInt() übergeben wurde.
SIEHE AUCH
AddTimerInt(), RemTimerInt(), StartTimerInt()
lowlevel.library/SystemControlA lowlevel.library/SystemControlA
NAME
SystemControlA - Methode, um selektiv OS-Eigenschaften
abzuschalten. (V40)
SystemControl - Variablen-Argumente (varargs stub) für
SystemControlA().
SYNOPSIS
failTag = SystemControlA(tagList);
D0 A1
ULONG SystemControlA(struct TagItem *);
failTag = SystemControl(firstTag, ...);
ULONG SystemControl(Tag, ...);
FUNKTION
Diese Funktion wird verwendet, um die Möglichkeiten des Systems
zu verändern. Einige dieser Änderungen umfassen Kontrollen von dem,
was üblicherweise als System-Resourcen angesehen wird. Um
Verwechslungen zu vermeiden, darf nur ein Prozess irgend einen
Teil der System-Resourcen beeinflussen. Dadurch wird verhindert,
dass möglicherweise zwei Prozesse sich streiten, wobei jeder einen
Teil des Systems haben will. Wenn ein Kennzeichen (tag) als
ausschließlich (exclusive) markiert ist, bedeutet das, dass nur
ein Prozess dieses Kennzeichen (tag) übernehmen (auf TRUE setzen)
kann. Wenn ein anderer Prozess versucht das gleiche Kennzeichen auf
TRUE zu setzen, misslingt der Aufruf von SystemControl().
Es ist wichtig daran zu denken, dass SystemControl() fehlschlagen
kann.
Dieses ist eine Low-Level-Funktion und bestimmte Kennzeichen
passen nicht in das übliche Amiga-Multitasking-Modell.
EINGABEN
tagList - Zeiger auf ein Array von Kennzeichen (tags), die die
ein/auszuschaltenden Eigenschaften des Systems auflisten.
TAGS
SCON_TakeOverSys (BOOL)
TRUE - Übernimmt die CPU, um sicher zu stellen, dass ein
Programm jede Kleinigeit an CPU-Zeit (mit Ausnahme
von kritischen Interrupts) bekommt. In diesem
Modus gehört die CPU vollständig dem Programm.
Prozessumschaltung ist nicht möglich und das Programm
erhält die gesamte CPU-Bandbreite. Damit werden alle
Aufrufe an das OS, die irgendwie mit Multitasking
zu tun haben, nicht richtig ausgeführt werden.
Andere Prozesse laufen nicht, bis dieses Kennzeichen
mit FALSE aufgerufen wird. Allerdings wird während
eines Wait() auf ein Signal Multitasking automatisch
wieder eingeschaltet, bis das Signal empfangen wird.
Danach wird Multitasking wieder ausgeschaltet und
die CPU gehört wieder auschließlich dem eigenen
Programm.
FALSE - Gibt die CPU frei und gestattet wieder Multitasking.
Dieses Kennzeichen ist Prozess-exklusiv. Das
Kennzeichen arbeitet verschachtelt. Ein Prozess
kann die CPU mehrfach übernehmen, ehe sie sie
wieder frei gibt.
SCON_KillReq (BOOL)
TRUE - Schaltet Systemrequester ab. Das sind die Gründe, die
Systemrequester NICHT abzuschalten:
1- Keine Aufrufe im Programm verursachen einen
Systemrequester.
2- Das Einzige, was einen Requester aufrufen
könnte, ist eine fehlende CD im Laufwerk,
wenn SCON_CDReboot auf CDReboot_On gesetzt
ist, deshalb kann ein Requester nicht
erscheinen.
3- Die einzige Disk-I/O ist über eine CD, wenn
SCON_CDReboot auf CDReboot_On gestellt ist
und/oder nonvolatile.library.
Wann Requester nicht ausgeschaltet werden sollten:
SPIELPROGRAMME:
Nach dem Laden werden keine DOS-Aufrufe ausgeführt;
oder SCON_CDReboot ist CDReboot_On; und zum Laden und
Speichern von Anwenderdaten wird die nonvolatile.library
verwendet.
Das passt zu den oben genannten Fällen: Nach dem Laden
werden DOS-Aufrufe nicht benützt aus Grund 1 oder das
Spiel greift auf die CD zu und SCON_CDReboot ist auf
CDReboot_On gesetzt passend zu Grund 2. Das Spiel
übernimmt Hiscores, Spieleinstellungen usw. über die
nonvolatile.library entsprechend Grund 3.
FALSE - Erlaubt Requester für das Programm.
Dieses Kennzeichen arbeitet verschachtelt. Prozesse können
Requester mehrfach ausschalten, bevor sie wieder
eingeschaltet werden. Dazu gehört jedoch eine passende
Zahl von Aufrufen.
SCON_CDReboot (ULONG)
CDReboot_On - Auswerfen der Cd verursacht einen Reboot des
Systems. Dies ist nur zu verwenden, wenn das Programm
nicht mit Fehlerzuständen umgehen kann.
CDReboot_Off - Auswerfen der CD verursacht keinen Reboot
des Systems. Dies ist anzuwenden, wenn während des
Programmlaufs CDs eingelegt werden müssen.
CDReboot_Default - Setzt auf die Standardeinstellung des
Systems zurück. Das sollte am Ende verwendet werden,
wenn dieses Kennzeichen (tag) verwendet wurde, um das
Reboot-Verhalten zu verändern. Für CD32 ist dieser
Wert gleichwertig mit CDReboot_On. Für Amiga-Computer
ist der Wert gleichwertig mit CDReboot_Off.
Es ist zu berücksichtigen, dass das Standardverhalten beim
Reboot von der Plattform abhängt. Wenn ein Programm ein
bestimmtes Verhalten erfordert, muss es diese Funktion
verwenden, um das Verhalten einzustellen. Ein Audiomixer
würde z.B. dieses Kennzeichen mit den Daten CDReboot_Off
verwenden. Das erlaubt den Wechsel von Audio-CDs sowohl auf
Spiel-Maschinen wie auch auf Amiga-Computern.
Wenn jedoch überhaupt kein Code zur Fehlererkennung vorhanden
ist, sollte dieses Kennzeichen mit den Daten CDReboot_On
verwendet werden.
Hoffentlich wird kein Programm jemals CDReboot_On benötigen.
Wenn alle Programme die Fehlerbedingungen prüfen und so einen
Aufruf benutzerfreundlich erledigen, sollte dieser Befehl nie
notwendig sein. Mit seinem Standardverhalten wird der CD32 bei
CD-Auswurf immer einen Reset ausführen und Programme, die auf
Amiga-Computern laufen, machen keinen Reset. Durch Beibehalten
des Standardverhaltens vergrößert sich der Markt für ein
Programm auf beide Plattformtypen.
Dieses Kennzeichen kann nicht verschachtelt werden.
SCON_StopInput (BOOL) - Wenn TRUE, wird input.device davon
abgehalten, CPU-Zeit zu verwenden. Ebenso kann das input.device
weder Eingaben von der Tastatur noch vom Port 0 weiterleiten.
Dieses Kennzeichen ist exklusiv für den Prozess. Es kann nicht
zurück gesetzt werden. Der Versuch des Rücksetzens führt zu
unklaren/verzerrten Eingaben.
SCON_AddCreateKeys (ULONG) - Beginnt mit der Erzeugung von Rawkey-
Codes für Joystick/Game-Controller an der angegebenen Einheit
(unit). Der Wert der Einheit wird auf Gültigkeit geprüft und
muss entweder 0 oder 1 sein. Jede einzelne verwendete Einheit
ergibt einen gewissen Code, der zur Interrupt-Kette des
vertikalen Austastimpulses (VBlank interrupt chain) hinzu
gefügt wird. Dieses Kennzeichen (tag) kann verschachtelt werden.
Das Kennzeichen SCON_RemCreateKeys wird verwendet, um dieses
Kennzeichen zurück zu setzen. Prozesse können mehrfach Rawkey-
Codes erzeugen, ehe abgebrochen wird.
Bei der Arbeit in einem Intuition-Fenster ist zu beachten, dass
der blaue Knopf des Game-Controllers gleichwertig mit dem
Menüknopf der Maus ist. Deshalb fängt Intuition die meisten
Eingaben des blauen Knopfes ab. Wenn die Weitergabe dieses
Ereignisses wichtig ist, ist die Nachprüfung in der
Dokumentation für WFLG_RMBTRAP im Autodoc intuition.library/
OpenWindow() empfohlen.
SCON_RemCreateKeys (ULONG) - Beendet die Rawkey-Codes für Joystick/
Game-Controller von der angegebenen Einheit (unit). Der Wert
für die Einheit wird auf Gültigkeit geprüft und darf nur 0
oder 1 sein
RÜCKGABE
failTag - Null, wenn alle Kennzeichen (tags) erfolgreich waren.
Ein Rückgabe anders als Null zeigt ein Kennzeichen an,
dass misslungen ist. Es ist dann möglich, dass auch
andere Kennzeichen misslungen sind.
Wenn irgend ein Kennzeichen versagt, ändert sich das
System nicht durch andere Kennzeichen.
SIEHE AUCH
Nähste Seite
Vorige Seite