• 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. Note: In TOS 4.04, und wenn kein TT-MFP vorhanden ist, wird SCC Kanal A als Device #8 bereitgestellt. 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 <tos.h>
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 den momentan abgespielten Sound-Puffer.
| ||||||||||||||||||||
Verfügbar: | Alle TOS Versionen.
| ||||||||||||||||||||
Gruppe: | Schnittstellenprogrammierung
| ||||||||||||||||||||
Querverweis: | Binding
|
C: | #include <tos.h>
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 move.l d0,a0 |
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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 |