• Bconmap | Auswählen einer seriellen Schnittstelle. |
• Dosound | Soundgenerator programmieren. |
• ExtRsConf | Konfiguration der RS232/RS485-Schnittstelle |
• Giaccess | Register des GI-Soundchips lesen und schreiben. |
• Ikbdws | Programmierung des Tastatur-Chips. |
• Iorec | Interruptpuffer für RS232, Tastatur-Chip und MIDI-Schnittstelle abfragen. |
• Kbdvbase | Puffer und Interruptvektoren für Maus-, MIDI- und Tastaturschnittstelle abfragen. |
• Mfpint | Programmierung des Multifunktionsperipherie-Chips. |
• Midiws | Strings lesen und schreiben auf MIDI-Schnittstelle. |
• Offgibit | Bit im Port A-Register des GI-Chips löschen. |
• Ongibit | Bit im Port A-Register des GI-Chips setzen. |
• Rsconf | Konfiguration der RS232-Schnittstelle. |
Querverweis: Interruptfunktionen
Name: | »Select serial port« - wählt eine Default-Schnittstelle aus. | ||||||||||||||||||||||||
Xbiosnummer: | 44 | ||||||||||||||||||||||||
Deklaration: | int32_t Bconmap( int16_t devno ); | ||||||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Bconmap wählt eine der seriellen
Schnittstellen für die Biosausgabe aus. Darüber hinaus kann ein Zeiger
auf die BCONMAP-Struktur abgefragt werden, über die man die maximale
BIOS Gerätenummer abfragen und außerdem neue Gerätetreiber
installieren kann. devno kann die folgenden Werte annehmen:
Die Funktion beeinflußt sowohl die BIOS-Vektortabelle in den Systemvariablen, als auch das Verhalten der Funktionen Rsconf und Iorec. HSMODA Diese Funktionen sind nur vorhanden falls das Paket HSMODA installiert ist. int32_t Bconmap((int16_t)-400, (int16_t)dev_nr, (int32_t)ptr_to_6_longs) Die Konstante MAPT_OVE wird als -400 definiert. Diese Funktion dient dem Überschreiben bereits existierender MAPTAB-Einträge. dev_nr ist eine Gerätenummer ab 6 aufwärts, die in der MAPTAB bereits existieren muá, andernfalls wird der Fehlercode -15 EUNDEV zurückgegeben. ptr_to_6_longs zeigt auf eine Struktur, die einem MAPTAB-Eintrag entspricht. Diese Struktur wird auf den entsprechenden Platz in der MAPTAB kopiert. Ist das angesprochende Gerät das aktuell per Bconmap für AUX eingestellte, so werden die eben eingehängten Routinen auch nach xco* und in die aktuellen Rsconf und Iorec-Zellen kopiert. Diese Funktion dient nur zum Einhängen MagiC-freundlicher Routinen. Als Erfolgsmeldung wird die Gerätenummer zurückgegeben, auf die der Eintrag erfolgte, also dev_nr. Um Geräte auf den BIOS-Nummern zu installieren, die fest zu einem Computer gehören, ist immer MAPT_OVE zu benutzen. Für den ST betrifft das z.B. #6, beim MegaSTE #6 bis #8 und beim TT #6 bis #9. int32_t Bconmap((int16_t)-401, (int32_t)ptr_to_6_longs) Die Konstante MAPT_APP wird als -401 definiert. Diese Funktion dient dem Anfügen eines Kanals an die MAPTAB oder dem Beschreiben eines leeren Kanals. ptr_to_6_longs zeigt auf eine Struktur, die einem MAPTAB-Eintrag entspricht. Rückmeldung ist entweder die von dieser Funktion für den Eintrag gewählte Kanalnummer, oder der Fehlercode -12 EGENRL, falls kein Platz für eine MAPTAB-Vergröáerung ist. Hier kann es nicht vorkommen, das die Vektoren sofort nach xco* übertragen werden, da ein bisher nicht vorhandener oder belegter Kanal nicht als AUX eingestellt sein kann. MAPT_APP sucht sich den ersten freien Kanal hinter den fest zum Computer gehörenden BIOS-Nummern und kann deshalb nur zum Installieren zusätzlicher Geräte benutzt werden. int32_t Bconmap((int16_t)-402, (int16_t)dev_nr, (int32_t)ptr_to_listentry) Die Konstante MAPT_DEL wird als -402 definiert. Diese Funktion dient zum Löschen eines Gerätes aus der MAPTAB und zum Aushängen einer RSVF-Liste aus der RSVF-Verkettung. dev_nr ist entweder die BIOS-Kanalnummer des aus der MAPTAB zu entfernenden Gerätes oder -1 für Nichtstun. Der entsprechende MAPTAB-Eintrag wird freigeben indem spezielle Dummy-Routinenzeiger eingetragen werden, die auf den Assemblerbefehl RTS zeigen. Der Iorec-Zeiger-Eintrag wird auf 0 gesetzt. Ist der gelöschte Kanal auch als BIOS-AUX-Device eingestellt gewesen, so wird BIOS-AUX auf Nummer 6 umgestellt, auch wenn gerade Nummer 6 gelöscht wurde. ptr_to_listentry ist entweder der Zeiger auf die auszuhängende RSVF-Liste oder 0 für Nichtstun. Der Zeiger muß auf den Anfang einer Liste verweisen, die daraufhin komplett entfernt wird, auch wenn sie mehr als ein Schnittstellenobjekt und End- oder Verkettungsobjekt enthält. Im Erfolgsfall gibt MAPT_DEL 1 zurück, im Fehlerfall -1. | ||||||||||||||||||||||||
Ergebnis: | Bconmap liefert die alte Einstellung. Falls devno gleich -2 ist liefert die Funktion einen Zeiger auf BCONMAP zurück. | ||||||||||||||||||||||||
Verfügbar: | Laut Atari sollte man seine TOS-Version folgendermaßen auf das
Vorhandensein von Bconmap testen:WORD has_bconmap ( VOID ) { return (0L == Bconmap (0)); } | ||||||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||||||
Querverweis: | Binding Bconout Bconin Bcostat Bconstat Iorec Rsconf |
C: | #include int32_t Bconmap( int16_t devno ); |
Assembler: | move.w devno,-(sp) ; Offset 2 move.w #44,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dosound« - programmiert den Sound-Generator. | ||||||||||||||||||||
Xbiosnummer: | 32 | ||||||||||||||||||||
Deklaration: | void Dosound( const int8_t *buf ); | ||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Dosound startet einen Prozeß zur Steuerung
des Soundgenerators. Der Puffer buf enthält Befehle für die
Programmierung des Sound-Generators. Die folgenden Befehle werden
unterstützt:
| ||||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||
Querverweis: | Binding |
C: | #include void Dosound( const int8_t *buf ); |
Assembler: | pea buf ; Offset 2 move.w #32,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »RS-232/RS485 configuration« - konfiguriert die RS-232/RS485-Schnittstelle. | ||||||||||||||||||||||
Xbiosnummer: | 162 | ||||||||||||||||||||||
Deklaration: | int32_t Xbios( 162, int16_t command, int16_t device, int32_t param ); | ||||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine ExtRsConf konfiguriert die serielle
Schnittstelle
Hinweis: Die Funktion ist für die Hardware des Milans 2.1. Die Version gibt es allerdings nur als Spezialversion und ist nicht frei verfügbar. | ||||||||||||||||||||||
Ergebnis: | E_OK (0) - OK
EUNCMD (-3) - unknown command ERROR (-1) - general error EUNDEV (-15) - unknown device | ||||||||||||||||||||||
Verfügbar: | Die Funktion ist ab dem MilanTOS mit dem Datum 9.6.2002 vorhanden. | ||||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||||
Querverweis: | Binding |
C: | #include int32_t Xbios( 162, int16_t command, int16_t device, int32_t param ); |
Assembler: | move.l param,-(sp) ; Offset 6 move.w device,-(sp) ; Offset 4 move.w command,-(sp) ; Offset 2 move.w #162,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea 10(sp),sp ; Stack korrigieren |
Name: | »access GI sound chip« - ermöglicht den Zugriff auf die Register des GI-Sound-Chips. | ||||||||
Xbiosnummer: | 28 | ||||||||
Deklaration: | int8_t Giaccess( int16_t data, int16_t regno ); | ||||||||
Beschreibung: | Die XBIOS-Routine Giaccess liest bzw. setzt Register im
GI-Soundchip. Es gilt:
| ||||||||
Ergebnis: | Die Funktion liefert als Ergebnis den Inhalt des angegebenen Registers. | ||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||
Querverweis: | Binding |
C: | #include int8_t Giaccess( int16_t data, int16_t regno ); |
Assembler: | move.w regno,-(sp) ; Offset 4 move.w data,-(sp) ; Offset 2 move.w #28,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »write string to keyboard« - programmiert den Tastatur-Chip. | ||||||
Xbiosnummer: | 25 | ||||||
Deklaration: | void Ikbdws( int16_t count, const int8_t *ptr ); | ||||||
Beschreibung: | Die XBIOS-Routine Ikbdws übergibt einen String an die
intelligente Tastatur. Es gilt:
| ||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||
Verfügbar: | Alle TOS Versionen. | ||||||
Gruppe: | Schnittstellenprogrammierung | ||||||
Querverweis: | Binding |
C: | #include void Ikbdws( int16_t count, const int8_t *ptr ); |
Assembler: | pea ptr ; Offset 4 move.w count,-(sp) ; Offset 2 move.w #25,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »input output record« - Adresse des Ein-/Ausgabepuffers ermitteln. | ||||||||
Xbiosnummer: | 14 | ||||||||
Deklaration: | IOREC *Iorec( int16_t dev ); | ||||||||
Beschreibung: | Die XBIOS-Routine Iorec liefert die Adresse des
Ein-/Ausgabe-Puffers eines seriellen Gerätes. Der Parameter
dev kann folgende Werte annehmen:
| ||||||||
Ergebnis: | Die Funktion liefert als Ergebnis einen Zeiger auf die Struktur IOREC. | ||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||
Querverweis: | Binding Bconmap |
C: | #include IOREC *Iorec( int16_t dev ); |
Assembler: | move.w dev,-(sp) ; Offset 2 move.w #14,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »keyboard vectors« - liefert einen Zeiger auf die Tastatur-Interruptvektoren. |
Xbiosnummer: | 34 |
Deklaration: | KBDVBASE *Kbdvbase( void ); |
Beschreibung: | Die XBIOS-Routine Kbdvbase liefert einen Zeiger auf eine
KBDVBASE Struktur. Hinweis: Bevor einer der in der Struktur angegebenen Vektoren verändert wird, muß sichergestellt sein, daß nicht gerade ein Paket verschickt wird (Komponente drvstat = 0). Anschließend sollten alle Interrupts gesperrt, und dann getestet werden ob wirklich kein Paket mehr unterwegs ist. |
Ergebnis: | Die Funktion liefert einen Zeiger auf eine KBDVBASE Struktur zurück. |
Verfügbar: | Alle TOS Versionen. |
Gruppe: | Schnittstellenprogrammierung |
Querverweis: | Binding |
C: | #include KBDVBASE *Kbdvbase( void ); |
Assembler: | move.w #34,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »init MFP interrupt« - Interrupt initialisieren. | ||||||||||||||||||||||||||||||||||
Xbiosnummer: | 13 | ||||||||||||||||||||||||||||||||||
Deklaration: | void Mfpint( int16_t number, int16_t (*vector)() ); | ||||||||||||||||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Mfpint initialisiert den
Multifunktions-Interrupt für die angeschlossenen Peripherie-Geräte.
Damit können Hardware-Interrupts abgefangen werden. Das Argument
vector gibt die Interrupt-Service-Routine an. Im Parameter
number wird die Nummer des Interrupt von 0 bis 15 angegeben:
| ||||||||||||||||||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||||||||||||||||
Querverweis: | Binding Jdisint Jenabint |
C: | #include void Mfpint( int16_t number, int16_t (*vector)() ); |
Assembler: | pea vector ; Offset 4 move.w number,-(sp) ; Offset 2 move.w #13,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Midi write string« - gibt eine Zeichenfolge über die Midi-Schnittstelle aus. | ||||||||
Xbiosnummer: | 12 | ||||||||
Deklaration: | void Midiws( int16_t cnt, void *ptr ); | ||||||||
Beschreibung: | Die XBIOS-Routine Midiws gibt einen String über die
Midi-Schnittstelle aus. Es gilt:
| ||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||
Querverweis: | Binding |
C: | #include void Midiws( int16_t cnt, void *ptr ); |
Assembler: | pea ptr ; Offset 4 move.w cnt,-(sp) ; Offset 2 move.w #12,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »GI bit off« - löscht ein Bit im Register A des Soundchips. | ||||||||||||||||||||
Xbiosnummer: | 29 | ||||||||||||||||||||
Deklaration: | void Offgibit( int16_t bitno ); | ||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Offgibit löscht ein Bit im Register A des
Soundchips GI. bitno gibt den Wert an, mit dem das Register
verUNDet werden soll. Die Bits in diesem Register haben folgende
Bedeutung:
| ||||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||
Querverweis: | Binding Ongibit |
C: | #include void Offgibit( int16_t bitno ); |
Assembler: | move.w bitno,-(sp) ; Offset 2 move.w #29,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »GI bit on« - setzt ein Bit im Register A des Soundchips. | ||||||||||||||||||||
Xbiosnummer: | 30 | ||||||||||||||||||||
Deklaration: | void Ongibit( int16_t bitno ); | ||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Ongibit setzt ein Bit im Register A des
Soundchips GI. bitno gibt den Wert an, mit dem das Register
verODERt werden soll. Die Bits in diesem Register haben folgende
Bedeutung:
| ||||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||
Querverweis: | Binding Offgibit |
C: | #include void Ongibit( int16_t bitno ); |
Assembler: | move.w bitno,-(sp) ; Offset 2 move.w #30,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »RS-232 configuration« - konfiguriert die RS-232-Schnittstelle. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Xbiosnummer: | 15 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deklaration: | int32_t Rsconf( int16_t baud, int16_t ctr, int16_t ucr, int16_t rsr, int16_t tsr, int16_t scr ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beschreibung: | Die XBIOS-Routine Rsconf konfiguriert die serielle
Schnittstelle. Da auf unterschiedlichen Rechnern unterschiedliche
Hardwarebausteine zum Einsatz kommen können, muß die Funktion
vorsichtig eingesetzt werden, d.h:
Aufgrund der Möglichkeit unterschiedliche Bausteine zum Einsatz kommen zu lassen, wurden die benutzbaren Werte folgendermaßen eingeschränkt:
Technisch nicht möglich Werte müssen daher ignoriert werden. Ansonsten gilt folgende Belegung:
Hinweis: Ab TOS 1.04 kann die zuletzt eingestellte Baudrate per Rsconf (-2,-1,-1,-1,-1) abgefragt werden. Man sollte sich niemals darauf verlassen, daß alle Einstellungen tatsächlich wie gewünscht vorgenommen werden konnten, und deshalb den Rückgabewert der Funktion beachten. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ergebnis: | Die Funktion liefert in gepackter Form die Werte der Register
ucr, rsr, scr, tsr und zwar wie folgt:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Querverweis: | Binding Bconmap |
C: | #include int32_t Rsconf( int16_t baud, int16_t ctr, int16_t ucr, int16_t rsr, int16_t tsr, int16_t scr ); |
Assembler: | move.w scr,-(sp) ; Offset 12 move.w tsr,-(sp) ; Offset 10 move.w rsr,-(sp) ; Offset 8 move.w ucr,-(sp) ; Offset 6 move.w ctr,-(sp) ; Offset 4 move.w baud,-(sp) ; Offset 2 move.w #15,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $E(sp),sp ; Stack korrigieren |