DRVIN.PRG
=========

(Ich habe keine Zeit, alles ausfhrlich einzutippen. Wenn jemand Treiber 
fr andere Hardware oder einen "Treiberadapter" fr Mint schreiben will, 
kann er sich gern an mich wenden. Assemblerkenntnis setze ich allerdings 
voraus. Irgendwann wird hier die vollstndige Doku der Funktionen 
erscheinen.)


Dieses Programm untersttzt nachladbare Gertetreiber und mu vor diesen 
Treibern geladen werden. Dieses Programm gehrt wie die Treiber in den 
AUTO-Ordner (nur fr Spezialisten: oder in eine quivalente 
Programmsammelecke). Man kann es auch vom Desktop aus durch Anklicken 
starten, aber das ist nicht zu empfehlen. Es sollte aus 
Geschwindigkeitsgrnden mglichst weit hinten im AUTO-Ordner stehen. Dabei 
mssen dieses Programm und die Treiber auf jeden Fall vor den Programmen 
ausgefhrt werden, die die Treiber nutzen sollen.


TOS
---
DRVIN luft unter allen mir bekannten TOS-Versionen.

Mag!X
-----
DRVIN luft unter Mag!X ab Version 2.00. Mit lteren Mag!X-Versionen mte 
es ebenfalls funktionieren, dies wurde aber nicht getestet. Bei 
Mag!X-Versionen >2.00 sind einige Funktionen von DRVIN unntig und werden 
nicht verwendet. Mglicherweise wird es ein Mag!X geben, das alle 
Funktionen von DRVIN enthlt. Dann ist DRVIN berflssig und die Treiber 
werden ohne DRVIN gestartet.

MiNT
----
Wenn man DRVIN und die Treiber vor MiNT startet, bleibt nur wenig von den 
Funktionen brig. Deshalb sollte man DRVIN und die Treiber nach MiNT 
starten. Dabei realisieren sie alle ihre Funktionen wie unter TOS, aber 
nicht mehr. Umlenkungen oder sonstige Spielerchen sind mit den Filehandles 
dieser Gerte nicht mglich. Ich wei nicht, ob die Umschaltung des 
AUX-Gertes fr den aktuellen Proze dann noch funktioniert. Ich benutze 
weder MiNT noch MultiTOS. Solange sich kein MiNT-Freak findet, der die 
Anpassung und Untersttzung bernimmt, wird es wohl kaum speziell an MiNT 
angepate Versionen geben.


Aufbau
------
DRVIN besteht aus drei wesentlichen Teilen: dem Anlegen des RSVF-Cookies, 
der neuen Bconmap- und MAPTAB-Verwaltung fr BIOS und XBIOS sowie den 
Basisroutinen fr die Installation einfacher Mag!X-kompatibler 
Gertetreiber.


RSVF-Cookie
-----------
Es wird ein RSVF-Cookie angelegt, dessen Wert auf zwei 0-LONGs zeigt, also 
auf ein Ende-Objekt. So brauchen Gertetreiber keinen Cookie mehr 
anzulegen, sondern sich nur noch in die RSVF-Listen einzuhngen. Der 
RSVF-Cookie liefert eine Struktur zur Anzeige grundlegender Informationen 
ber Schnittstellen. Zur Beschreibung des RSVF-Cookies siehe Textfile 
RSVF_COO.TXT.


MAPTAB-Verwaltung
-----------------
Dieser Programmteil hngt im BIOS- und XBIOS-Trap und bearbeitet die 
XBIOS-Funktionen Bconmap, Rsconf und Iorec(fr AUX). Es werden die 
BIOS-Funktionen Bconstat, Bconin, Bcostat und Bconout fr Gert AUX sowie 
alle Gerte ab einschlielich 6 aufwrts bearbeitet. Bconmap und eine 
MAPTAB werden unter jeder TOS-Version angelegt. Die Routinen des aktuell 
per Bconmap eingestellten Gertes werden zustzlich in die xco*-Vektoren 
(auer bei TOS1.00) kopiert, dort aber nicht benutzt. Es werden zwei neue 
Bconmap-Unterfunktionen mit den Opcodes -300 und -301 zum berschreiben 
eines MAPTAB-Eintrages und zum Anhngen an die MAPTAB bereitgestellt.

Die Lnge der MAPTAB ist nicht mehr fest begrenzt. ### Momentan liegt die 
Maximallnge in DRVIN.PRG bei 10 Eintrgen, ist aber nur eine konstante 
Variable in der Assemblerquelle und jederzeit erweiterbar.


GEMDOS-Teil
-----------
Der sieht von auen aus wie die bisherigen HSMODEM1-Versionen und von 
innen wie eine (### momentan noch) stark abgerstete Mag!X-Beta. 
Es werden Fopen, Fread, Fwrite, Fclose, Fcntl an den Treiber 
weitergeleitet, aber alles mit fileptr == NULL.


Aktionen
--------
Wird DRVIN auf TOS > 2.00 oder auf Mag!X >= 2.00 losgelassen, dann kopiert 
es die alten Routinen aus den alten MAPTABs, so da eine Funktion der 
(X)BIOS-Aufrufe mit den alten TOS-Routinen gegeben ist, auch ohne 
installierte Treiber. Bei TOS1.00 sieht es ganz bel aus, man mu den 
MFP-Treiber nachladen, sonst geht SerialI/O nicht mehr (nur Zeiger auf 
IOREC wird bertragen). Bei 1.00 < TOS < 2.00 geht es etwas, da nur Rsconf 
nicht bertragen wird, aber deshalb mu man trotzdem den MFP-Treiber 
nachladen.


Mag!X- (und DRVIN-) freundliche Bco*-Routinen
---------------------------------------------
vernderbare Register A0-A2/D0-D2 (auch bei Rsconf)
Bconout mu mit dem Befehl
move.b 7(sp),d0
    oder auch:
move.w 6(sp),d0
beginnen und wird meist hinter diesem (Startadr+4) mit Parameter in d0.b 
aufgerufen


Neue XBIOS-Bconmap-Funktionen (300, 301)
----------------------------------------
Diese Funktionen drfen nur zur Installation Mag!X-freundlichen Funktionen 
benutzt werden.

In der MAPTAB ist Platz fr mehr als 4 Gerte. Der Lieferant dieser 
XBIOS-Funktionen (DRVIN oder zuknftiges Mag!X) sorgt fr ausreichend 
Platz zur Installation neuer Gerte in der MAPTAB. Entweder er schafft den 
Platz dynamisch oder er hat eine feste Obergrenze. Ein Treiber sollte 
trotzdem mit einer Fehlermeldung rechnen, die durch Speichermangel 
ausgelst sein knnte, aber auch ganz andere Ursachen haben kann.

Die XBIOS-Funktion Bconmap wird um zwei Unterfunktionen erweitert. Sind 
diese Erweiterungen nicht vorhanden, bekommt man beim Funktionsaufruf 
automatisch eine 0 als Fehlermeldung zurck.

Bconmap((WORD)-300, (WORD) dev_nr, (LONG) ptr_to_6_longs)
dev_nr ist eine Gertenummer ab 6 aufwrts, die in der MAPTAB bereits 
existieren mu, andernfalls wird der Fehlercode -15 EUNDEV zurckgegeben. 
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 Gert das aktuell per Bconmap fr AUX 
eingestellte, so werden die eben eingehngten Routinen auch nach xco* und 
in die aktuellen rsconf und iorec-Zellen kopiert. Diese Funktion dient nur 
zum Einhngen Mag!X-freundlicher Routinen. Als Erfolgsmeldung wird die 
Gertenummer zurckgegeben, auf die der Eintrag erfolgte, also dev_nr ist 
Rckgabewert.

Bconmap((WORD)-301, (LONG) ptr_to_6_longs)
hnlich -300, fgt aber einen Kanal an die MAPTAB an. Rckmeldung ist 
entweder die von dieser Funktion fr den Eintrag gewhlte Kanalnummer, 
oder der Fehlercode -12 EGENRL, falls kein Platz fr eine 
MAPTAB-Vergrerung ist. Logischerweise kann es hier nicht vorkommen, das 
die Vektoren sofort nach xco* bertragen werden.


Treiber
-------
DRVIN bietet im GEMDOS-Bereich nicht alle Mglichkeiten der 
Mag!X-(beta)Versionen. Wer einen Treiber schreiben will, der auch unter 
DRVIN funktioniert, kann sich wegen der Einzelheiten an mich wenden.


Versionen
---------
1993-11-23
im GEMDOS-Trap nun nur noch A0/D0 modifiziert, fr solche unsauberen 
Programme wie STZIP (mindestens bis Version 2.3), ZIPJR, das 
PureC-Hilfesystem, Teleoffice und ungezhlte andere.
Fopen und Fclose werden an Devices weitergereicht
1993-11-28
Fehler unter TOS1.00 bei XBIOS-Bconmap beseitigt
eigener Env-String _PNAM=DRVIN.PRG


Harun Scheutzow, 21.11.1993 und spter
(Harun_Scheutzow@B.maus.de)
