Das ST-Betriebssystem (7)

In diesem siebten Teil unserer ST-Betriebssystem-Serie werden wir uns weiter mit den Routinen des XBIOS beschäftigen; und die Serie dann in der nächsten Ausgabe abschließen.

$15 Cursconf.

Durch diese Funktion kann man eine Beeinflussung des Cursor erreichen. Zwei Parameter werden auf den Stack übergeben. Zuerst muß man die gewünschte 'Funktion' definieren. Ein zweiter Parameter stellt die Blinkrate ein. Dabei ist dieser zweite Parameter optional und wird nur dann gebraucht, wenn die Blinkrate neu gesetzt werden soll.

Funktion:

0 Cursor abschalten
1 Cursor einschalten
2 Cursorblinken ein
3 Cursorblinken aus
4 Cursorblinkrate bestimmen
5 Cursorblinkrate holen

$15 Cursconf.

Move.w  #50,-(sp>   ;   Neue   Blinkrate   wird  gesetzt
Move.w   #4,-(sp)
Move.w #21,-<sp) ; Funktionsnummer
Trap #14
Addq.l #6,sp
Move.w #0,-(sp)  ; Cursorblinken stoppen
Move.w #3,-Csp)
Move.w #21,-(sp) ; Funktionsnummer
Trap #14
Addq.l #S,sp
Move.w #0,-(sp)  ; Blinkrate holen
Move.w #5,-(sp)
Move.w #21,-(sp) ; Funktionsnummer
Trap #14
Addq.l #6,sp

$16 Settime.

Durch diese Routine lassen sich Uhrzeit und Datum neu setzen. Das neue Datum bzw. die neue Zeit werden als Langwort übergeben. Das Datum wird in das obere Wort des benötigten Parameters geschrieben und die neue Zeit in das untere Wort. Das Langwort ist folgendermaßen eingeteilt:

Bit 0- 4 Sekunden in Zweierschritten
Bit 5-10 Minuten Bit 11-15 Stunden
Bit 16-20 Tag
Bit 21-24 Monat
Bit 25-31 Jahr minus Offsetwert von 1980

$16 Settime.

Move.l   #$2798002f,-(sp)      ; Zeit   und   Datum   neu   setzen 
Move.w   #22,-(sp)             ; Funktionsnummer
Trap   #14 
Addq.l   #6,sp

$17 Gettime.

Die Funktion GETTIME bildet das Gegenteil der Funktion SETTIME. Nach Aufruf werden Datum und Uhrzeit im obigen Binärformat übergeben. Man erhält im unteren Wortteil des Langworts des Registers DO die Uhrzeit und im oberen Wort das Datum zurück.

$17 Gettime.

Move.w #23,-(sp)    ; Zeit und Datum holen 
Trap #14 
Addq.l #2,sp

$18 Bioskeys.

Wir haben bei der XBIOS-Funktion KEYTBL gesehen, wie man die Tasten neu belegen kann. Die Funktion BIOSKEY setzt die Tastaturbelegung in den Einschaltzustand zurück.

$18 Bioskeys.

Move.w #24,-(sp)    ; Offsetbelegung der Tastatur Trap #14
Addq.l #2,sp

$19 Ikbdws.

Mit Hilfe dieser Funktion ist es möglich, Befehle an den Tastaturprozessor zu übergeben. Der erste Parameter ist die Adresse eines Strings, der zum Tastaturprozessor übermittelt wird. Der zweite Parameter gibt die Länge des Strings minus l an.

$19 Ikbdws.

Move.l   #Tab,-(sp)     ; Befehl   zu   Tastaturprozessor  schicken 
Move.l   #Tab-l,-(sp)   ; Länge  des   Befehls   -1 
Move.w   #25,-(sp)      ; Funktionsnummer
Trap  #14 
Add.l   #10,sp

$20 Jdisint.

Durch diese Funktion läßt sich ein Interrupt des MFP 68901 sperren. Dieser Baustein kann 16 verschiedene Interrupts verwalten. Die Interruptnummer, die gesperrt werden soll, wird im Stack abgelegt.

$20 Jdisint.

Move.w   #Nummer,-(sp)  ;   Nummer  des Interrupts 
Move.w  #26,-(sp)       ;   Funktionsnummer
Trap   #14 
Addq.l   #4,sp

$21 Jenabint.

Ein gesperrter Interrupt des MFP 68901 wird wieder freigegeben (siehe auch obige Funktion).

$21 Jenabint.

Move.w  #Nummer,-(sp)  ;   Nummer  des   Interrupts 
Move.w  #27,-(sp)      ;   Funktionsnummer
Trap  #14
Addq.l   #4,sp

$22 Giaccess.

Diese Routine erlaubt den Zugriff auf die Register des Soundchips. Die Register werden dabei entweder nur abgefragt oder neu gesetzt. Der erste Parameter ist die Registernummer. Der zweite Parameter enthält den Wert, der in das Register geschrieben wird.

In Bit 7 des ersten Parameters wird bestimmt, ob das Register nur gelesen oder neu gesetzt werden soll. Ist dieses Bit gesetzt (1), so wird das Register neu eingestellt. Ist aber Bit 7 nicht gesetzt (0), so wird nur gelesen.

Die Register des Soundchips:

Register 0,1: bestimmen die Periodendauer des Tons am Kanal A
Register 2,3: bestimmen die Periodendauer des Tons am Kanal B
Register 4,5: bestimmen die Periodendauer des Tons am Kanal C
Register 6: schaltet den Rausch-Generator
Register 7: In den verschiedenen Bits (8) werden mehrere Vorgänge kontrolliert.
Bit 0 = Ein/Ausschalten Kanal A
Bit l = Ein/Ausschalten Kanal B
Bit 2 = Ein/Ausschalten Kanal C
Bit 3 = Ein/Ausschalten Rauschgenerator A
Bit 4 = Ein/Ausschalten Rauschgenerator B
Bit 5 = Ein/Ausschalten Rauschgenerator C
Bit 6 = Ein/Ausgang Port A
Bit 7 = Ein/Ausgang Port B

Register 8: bestimmt die Lautstärke von Kanal A
Register 9: bestimmt die Lautstärke von Kanal B
Register 10: bestimmt die Lautstärke von Kanal C

Register 11,12: bestimmen die Periodendauer der Hüllkurve
Register 13: bestimmt die Kurvenform der Hüllkurve - :

Register 14,15: diese zwei Register bilden die eigentlichen Ports des Sound-Chips. Port A entspricht dem Register 14 und Port B dem Register 15.

$22 Giaccess.

Move.w #Regsound,-(sp) ; Registernummer
Move.W #Dat, -(sp) ; Daten
Move.w #28, -(sp) ; Funktionsnummer
Trap #14 
Addq.l #6, sp

$1D Offgibit.

Durch die Routine läßt sich selektiv jedes Bit (8) des Ports A im Soundchip setzen. Das Bit, das gesetzt werden soll, muß auf den Stack übergeben werden.

Port A

Bit 0 Floppy Seite 0 / Seite 1
Bit l Laufwerk A
Bit 2 Laufwerk B
Bit 3 RTS-Signal für RS232-Schnittstelle
Bit 4 DTR-Signal für RS232-Schnittstelle
Bit 5 Strobe-Signal für Parallel-Schnittstelle
Bit 6 für allgemeine Ausgabe Bit 7 unbenutzt

$1D Offgibit.

Move.w  #2,-(sp)        ;   Floppy  B aus 
Move.w   #29,-(sp);      ;   Funktionsnummer
Trap #14 Addq.l #4,sp

$1E Ongibit.

Die Funktion ONGIBIT bildet das Gegenteil von OFFGIBIT. Ein Bit des Ports A im Soundchip wird gelöscht (siehe auch obige Routine). Das Bit, das gelöscht werden soll, muß auf den Stack übergeben werden.

$1E Ongibit.

Move.w   #2,-(sp)         ;   Floppy  B  ein 
Move.w  #30,~(sp)      ;   Funktionsnummer 
Trap  #14 
Addq.l   #4,sp

$1F Xbtimer.

Diese Funktion erlaubt die Aktivierung eines Timers des MFP 68901 und ordnet ihm eine Interruptroutine zu.

Verschiedene Parameter werden auf den Stack abgelegt. Sie haben folgende Bedeutung:

Adresse:
Adresse der Interruptroutine, die angesprungen werden soll

Daten:
Wert für das Datenregister des Timers

Kontroll:
Wert für das Kontrollregister des Timers

Timer:
Nummer des Timers im MFP. Der MFP 68901 verfügt über vier Timer. Sie sind aber schon teilweise vom Betriebssystem benutzt.

Timer A (0):
für Anwender reserviert

Timer B (1):
horizontale Synchronisation

Timer C (2):
System-Timer

Timer D (3):
kontrolliert Baudrate

$1F Xbtimer.

Move.l #Vek,-(sp)      ;   Vektorennummer
Move.w #Dat,-(sp)      ;   Datenregister
Move.w #Kon,-(sp)      ;   Kontrollregister
Move.w #0,-(sp)          ;   Timer A
Move.w #31,-(sp)        ;   Funktionsnummer
Trap #14
Add.l #12,sp


Aus: ST-Computer 12 / 1986, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite