home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
apps
/
telecomm
/
hsmoda06
/
hsm_doku
/
drvin.ger
< prev
next >
Wrap
Text File
|
1994-12-30
|
10KB
|
226 lines
DRVIN.PRG
=========
(Ich habe keine Zeit, alles ausführlich einzutippen. Wenn jemand Treiber
für andere Hardware oder einen "Treiberadapter" für Mint schreiben will,
kann er sich gern an mich wenden. Assemblerkenntnis setze ich allerdings
voraus. Irgendwann wird hier die vollständige Doku der Funktionen
erscheinen.)
Dieses Programm (DRVIN) unterstützt nachladbare Gerätetreiber. Es muß vor
diesen Treibern geladen werden. DRVIN und Treiber müssen vor den
Programmen geladen werden, die die Treiber nutzen sollen. DRVIN gehört in
den AUTO-Ordner (für Spezialisten: oder in eine äquivalente
Programmsammelecke). Man kann es zu Testzwecken auch vom Desktop aus
starten. Es sollte aus Geschwindigkeitsgründen möglichst weit hinten im
AUTO-Ordner stehen.
TOS
---
DRVIN läuft unter allen mir bekannten TOS-Versionen.
Mag!X, MagiC
------------
DRVIN läuft unter Mag!X ab Version 2.00. Mit älteren Mag!X-Versionen müßte
es ebenfalls funktionieren, dies wurde aber nicht getestet. Bei
MagiC-Versionen >2.00 sind einige Funktionen von DRVIN unnötig und werden
nicht verwendet. Es wird ein MagiC geben, wahrscheinlich MagiC3, das alle
Funktionen von DRVIN enthält. Dann ist DRVIN überflüssig 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, Schlafenlegen oder sonstige unter TOS nicht
ferfügbare Funktionen sind mit den Filehandles dieser Geräte nicht
möglich. Ich weiß nicht, ob die Umschaltung des AUX-Gerätes für den
aktuellen Prozeß dann noch funktioniert. Ich benutze weder MiNT noch
MultiTOS. Solange sich kein MiNT-Freak findet, der die Anpassung und
Unterstützung übernimmt, wird es wohl kaum speziell an MiNT angepaßte
Versionen geben.
Die Konfiguration
-----------------
Die Konfiguration erfolgt durch das SETTER.TTP. Zur Bedienung siehe
SETTER.TXT.
FASTINT:
MFP.PRG kann den Timerinterrupt des TOS modifizieren, um so 57600Bd mit
8MHz-68000 über MODEM1 zu ermöglichen. Auch auf MegaSTE, TT und Falcon
kann es noch positive Wirkungen haben. Unter MagiC wird die Modifikation
nicht durchgeführt, da MagiC (ab Version 2.0) bereits eine "freundliche"
Timerroutine besitzt. Bei Experimenten mit anderen Betriebssystemen oder
seltsamen Fehlern sollte man zuerst FASTINT abschalten.
Funktionsweise (für Interessenten):
Es hat sich gezeigt, daß es ausreichend ist, wenn die Routine (GEMDOS-Uhr)
in NEXT_TIM (negative LineA-Variable) mit einem IPL < 6 aufgerufen wird,
um auf 68000/8MHz den 57600Bd-Empfang zu ermöglichen. Also hänge ich ein
Programmstück ein, daß den IPL auf 5 heruntersetzt. Diese Vorgehensweise
ist nicht völlig unkritisch, bringt aber nur Probleme, wenn andere
Programme ebenfalls derartige Fummeleinen anstellen.
EXOPEN:
(Wirkt nur, wenn der GEMDOS-Teil des DRVIN benutzt wird, also nicht unter
Magic Version3.)
Mit "Ja" wird eine strenge Überwachung der GEMDOS-Funktion Fopen
aktiviert, die verhindert, daß ein Gerät mehrmals gleichzeitig geöffnet
ist. Damit kann man benutzte (geöffnete) Geräte gegen unbeabsichtigte
Eingriffe durch andere Programme schützen, aber nur auf GEMDOS-Ebene.
Normalerweise sollte man "Nein" benutzen, da einerseits einige Programme
mit einer Fehlermeldung bei Fopen nicht klarkommen (unsinnige Anzeigen bis
zum Abturz) und andererseits die Beendigung von Programmen nicht überwacht
wird, so daß im Gegensatz zum sonstigen GEMDOS-Verhalten das Gerät
geöffnet bleibt (auch bei anormalem Programmende = Absturz)! (Kurzfassung:
Momentan mehr ein Spielzeug für Entwickler.)
Aufbau
------
DRVIN besteht aus drei wesentlichen Teilen: dem Anlegen des RSVF-Cookies,
der neuen Bconmap- und MAPTAB-Verwaltung für BIOS und XBIOS sowie den
Basisroutinen für die Installation einfacher Mag!X-kompatibler
Gerätetreiber.
RSVF-Cookie
-----------
Es wird ein RSVF-Cookie angelegt, dessen Wert auf zwei 0-LONGs zeigt, also
auf ein Ende-Objekt. So brauchen Gerätetreiber keinen Cookie mehr
anzulegen, sondern sich nur noch in die RSVF-Listen einzuhängen. 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 hängt im BIOS- und XBIOS-Trap und bearbeitet die
XBIOS-Funktionen Bconmap, Rsconf und Iorec(für AUX). Es werden die
BIOS-Funktionen Bconstat, Bconin, Bcostat und Bconout für Gerät AUX sowie
alle Geräte ab einschließlich 6 aufwärts bearbeitet. Bconmap und eine
MAPTAB werden unter jeder TOS-Version angelegt. Die Routinen des aktuell
per Bconmap eingestellten Gerätes werden zusätzlich in die xco*-Vektoren
(außer bei TOS1.00) kopiert, dort aber nicht benutzt. Es werden zwei neue
Bconmap-Unterfunktionen mit den Opcodes -400 und -401 zum Überschreiben
eines MAPTAB-Eintrages und zum Anhängen an die MAPTAB bereitgestellt.
Die Länge der MAPTAB ist nicht mehr fest begrenzt. ### Momentan liegt die
Maximallänge in DRVIN.PRG bei 10 Einträgen, ist aber nur eine konstante
Variable in der Assemblerquelle und jederzeit erweiterbar.
GEMDOS-Teil
-----------
Der sieht von außen aus wie die bisherigen HSMODEM1-Versionen und von
innen wie eine (### momentan noch) stark abgerüstete 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
---------------------------------------------
veränderbare Register A0-A2/D0-D2 (auch bei Rsconf)
Bconout muß mit dem Befehl
lea 6(sp),a0
beginnen und wird meist hinter diesem (Startadr+4) mit A0 als Zeiger auf
das WORD mit dem Parameter aufgerufen
Neue XBIOS-Bconmap-Funktionen (-400, -401)
------------------------------------------
Diese Funktionen dürfen nur zur Installation Mag!X-freundlicher Funktionen
benutzt werden.
In der MAPTAB ist Platz für mehr als 4 Geräte. Der Lieferant dieser
XBIOS-Funktionen (DRVIN oder zukünftiges Mag!X) sorgt für ausreichend
Platz zur Installation neuer Geräte 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
ausgelöst sein könnte, 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 zurück.
LONG Bconmap((WORD)-400, (WORD) dev_nr, (LONG) ptr_to_6_longs)
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 Mag!X-freundlicher Routinen. Als Erfolgsmeldung wird die
Gerätenummer zurückgegeben, auf die der Eintrag erfolgte, also dev_nr ist
Rückgabewert.
LONG Bconmap((WORD)-401, (LONG) ptr_to_6_longs)
ähnlich -400, fügt aber einen Kanal an die MAPTAB an. 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. Logischerweise kann es hier nicht vorkommen, das
die Vektoren sofort nach xco* übertragen werden.
Treiber
-------
DRVIN bietet im GEMDOS-Bereich nicht alle Möglichkeiten 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
GEMDOS-Trap modifiziert nur A0/D0 als Anpassung an die vielen unsauberen
Programme.
Fopen und Fclose werden an Devices weitergereicht
1993-11-28
Fehler unter TOS1.00 bei XBIOS-Bconmap beseitigt
eigener Env-String _PNAM=DRVIN.PRG
1994-06-17
Zeigerblock für Dcntl DEV_M_INSTALL auf das Format von MagiC Version 3
(früher Mag!X) geändert. INKOMPATIBEL zu früheren Versionen von DRVIN und
Treibern.
1994-08-13
Wie unter MagiC wird nur Zeiger auf den Treiberblock bei Dcntl
DEV_M_INSTALL gespeichert, nicht der Block selbst. Es ist Platz für 16
GEMDOS-Geräte.
1994-08-18
FASTINT Konfigurationspunkt vom MFP* hierher verschoben und IPL4 statt
IPL5
1994-08-25
interne Änderung
1994-10-12
EXOPEN Option
1994-10-29
Dcntl verändert, liefert jetzt -36 beim Versuch, schon installierte Geräte
nochmal zu installieren. Fdelete eingebaut. Falls sich ein Treiber löschen
läßt, müßte jetzt Löschen und Neuinstallation wie unter MagiC3 gehen.
FASTINT unter MagiC automatisch abgeschaltet.
1994-12-30
schnelle Bconmap-Parameterübergabe geändert, deshalb MAPT_APP/MAPT_OVE mit
neuer Funktionsnummer
Harun Scheutzow, 21.11.1993 und später
(Harun_Scheutzow@B.maus.de)
---EOF---