
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 $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 $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 8: bestimmt die Lautstärke von Kanal A Register 11,12: bestimmen die Periodendauer 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 $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: Daten: Kontroll: Timer: Timer A (0): Timer B (1): Timer C (2): Timer D (3): $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 |