Topic : TOS - das Betriebssystem
Author :
Version : tos.hyp (5. März 2013)
Subject : Programmieren/Atari
Nodes : 3001
Index Size : 93602
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default : Titel
@help :
@options : +g -i -s +x +zz -t4
@width : 70
View Ref-File4.16.1 Bconmap TOS 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:
devno Bedeutung
-402 device / RSVF-list remove (HSMODA)
-401 Eintrag anhängen (HSMODA)
-400 ausgewählten Eintrag überschreiben (HSMODA)
-2 Zeiger auf BCONMAP-Struktur liefern
-1 nur aktuellen Kanal abfragen
0 Test, ob Bconmap vorhanden ist
6 ST-kompatibler RS232-Port
7 SCC Kanal B
8 TTMFP RS232-Port
9 SCC Kanal A
>10 eigene Treiber
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: BindingBconoutBconinBcostatBconstatIorecRsconf