•  Back 
  •  Schnittstellenprogrammierung 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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:  Binding   Bconout   Bconin   Bcostat   Bconstat   Iorec 
                 Rsconf