Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
z9001:software:os:geraetetreiber [2015/04/28 13:56] – [ZM] volkerp | z9001:software:os:geraetetreiber [2015/11/12 09:50] – [logische und physische Geräte] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Gerätetreiber ====== | ====== Gerätetreiber ====== | ||
- | |||
- | FIXME | ||
Das OS des KC85/1 unterstützt leistungsfähig das Einbinden neuer Gerätetreiberroutinen für die sog. zeichenorientierten logischen Ein- / | Das OS des KC85/1 unterstützt leistungsfähig das Einbinden neuer Gerätetreiberroutinen für die sog. zeichenorientierten logischen Ein- / | ||
Zeile 10: | Zeile 8: | ||
* " | * " | ||
* und weitere Quellen | * und weitere Quellen | ||
+ | |||
+ | **Kritik** (vp) Leider ist das I/O-Konzept nicht bis zum Ende durchdacht und implementiert: | ||
+ | * Das I/O-Byte liegt auf einer anderen Adresse als in CP/M üblich | ||
+ | * Es gibt keine Systemaufrufe (über CALL 5), um die Treiber direkt anzusprechen. Die Systemaufrufe nutzen nur die Treiberfunktionen Zeichenein- und -ausgabe | ||
+ | * Die Einbindung der Treiber ins I/O-Byte und Übergabe der Zeichenkettenadressen erfolgt nur beim Laden des Treibers, nicht über einen späteren Funktionsaufruf des Treibers | ||
+ | * Die Zuweisung des Treibers auf eine physische Gerätenummer kann nicht frei gewählt werden. Das macht der Treiber intern, das ist aber nirgends ersichtlich. Auch bei ASGN wird das nicht angezeigt. | ||
+ | * Die Adresse des aktiven Treibers ist nur über die interne Systemfunktion EXIO ermittelbar. | ||
+ | * Beim Warmstart (nach STOP) wird das I/O-Byte auf den Standardwert 01h zurückgesetzt. | ||
+ | * Im OS 1.1 ist BAT nicht nutzbar. | ||
+ | * Die Zeichenketten der nicht initialisierten phys. Treiber zeigen auf Adresse LOGDV (0FC24h). Dort steht 01 00, das ist zufälligerweise ein gültiger String, aber eigentlich müsste nur auf ein Nullbyte (leerer String) verwiesen werden. | ||
+ | * Obwohl als Zusatz zum Monitor mitgeliefert, | ||
+ | * So wie ASGN arbeitet und zu nutzen ist, hätte auf das Konzept des I/O-Byte und der 4 verschiedenen physischen Treiber verzichtet werden können. Mit jedem Aufruf von ASGN wird einfach der übergebene Treiber aktiv, egal, welche physische Nummer er tatsächlich hat. | ||
+ | |||
===== logische und physische Geräte ===== | ===== logische und physische Geräte ===== | ||
Zeile 34: | Zeile 45: | ||
| 11 | CSTS | Abfrage Status CONST | | | 11 | CSTS | Abfrage Status CONST | | ||
- | In BASIC können diese Geräte über Kanäle #1..#4 angesprochen werden (allg. geht das nur mit verändertem Lutz-Elßner-Basic)! | + | In BASIC können diese Geräte über Kanäle #1..#4 angesprochen werden (allg. geht das nur mit verändertem Lutz-Elßner-Basic, s. [[z9001: |
===== Das I/O-Byte ===== | ===== Das I/O-Byte ===== | ||
Zeile 66: | Zeile 77: | ||
< | < | ||
- | log. Gerät | + | log. Gerät |
- | CONST: 1 - CRT, 2 - BAT | + | CONST: 1 - CRT |
+ | | ||
LIST: 1 - CRT | LIST: 1 - CRT | ||
</ | </ | ||
Zeile 320: | Zeile 332: | ||
Für einen Druckertreiber reichen folgende Treiber-Kommandos aus: | Für einen Druckertreiber reichen folgende Treiber-Kommandos aus: | ||
- | | + | |
- | | + | |
- | | + | |
**Treiber für READER** | **Treiber für READER** | ||
Zeile 328: | Zeile 340: | ||
Für einen Treiber für READER reichen folgende Treiber-Kommandos aus: | Für einen Treiber für READER reichen folgende Treiber-Kommandos aus: | ||
- | | + | |
- | | + | |
- | | + | |
**Treiber für CONST** | **Treiber für CONST** | ||
Zeile 436: | Zeile 448: | ||
* Der ZM enthält ein eigenes ASGN-Kommando ' | * Der ZM enthält ein eigenes ASGN-Kommando ' | ||
+ | * Die Gerätenamen beim Kommando A entsprechen nicht denen des OS | ||
* Der ZM überschreibt die komplette Adresstabelle der Gerätetreiber (ab 0EFC9h). Eigene vorher eingetragene Treiber werden damit aus dem System geworfen! | * Der ZM überschreibt die komplette Adresstabelle der Gerätetreiber (ab 0EFC9h). Eigene vorher eingetragene Treiber werden damit aus dem System geworfen! | ||
+ | * Die Treiber unterstützen keine Treiber-Kommandos (Initialisierung, | ||
+ | * Die Zuweisungsbeschränkung des CRT-Treibers wird nicht beachtet | ||
* Die Treiber für TAPE sind keine zeichenorientierten Treiber und manipulieren gehörig das System (s. Sourcecode) | * Die Treiber für TAPE sind keine zeichenorientierten Treiber und manipulieren gehörig das System (s. Sourcecode) | ||
+ | * Positiv, aber eben nicht zum OS-Konzept passend, ist, dass die Benutzung des I/O-Bytes logischer und mehr an CP/M angelehnt ist | ||
Im [[z9001: | Im [[z9001: | ||
Zeile 449: | Zeile 464: | ||
vorhandenen Gerätes zu einem logischen Gerät. Folgende Zuordnungen sind | vorhandenen Gerätes zu einem logischen Gerät. Folgende Zuordnungen sind | ||
angebbar: | angebbar: | ||
- | |||
^ CONSOLE ^ READER ^ PUNCH ^ LIST ^ | ^ CONSOLE ^ READER ^ PUNCH ^ LIST ^ | ||
Zeile 457: | Zeile 471: | ||
| AC=U für User-Konsole | AR=U für User-Read-Gerät | AP=U für V24-Ausgabegerät (TD40) | AL=U für SIF-1000-Ausgabegerät | | | AC=U für User-Konsole | AR=U für User-Read-Gerät | AP=U für V24-Ausgabegerät (TD40) | AL=U für SIF-1000-Ausgabegerät | | ||
- | |||
- | Nach Anlauf des Monitors gilt die Zuordnung AC=V, AR=C, AP=C und AL=C (alles auf Konsole).\\ | ||
- | Soll z.B. ein über den freien PIO-Port angeschlossener V24-Drucker verwendet | ||
- | werden, so muss vorher AL=L gegeben werden. AC=C bewirkt, dass jeder | ||
- | Tastendruck mit einem Ton quittiert wird. | ||
- | |||
- | Für den BATCH-Modus muss ein SIF-1000-Lesegerät an den PIO-Port angeschlossen | ||
- | werden. Ferner sind die Zuweisungen AR=P und AL=C (oder V) vorher unbedingt | ||
- | erforderlich! Nach AC=B werden jetzt alle Eingaben nicht mehr von der Tastatur, | ||
- | sondern vom angeschlossenen Lesegerät angefordert. Protokolliert wird infolge | ||
- | der Zuweisung AL=C nach wie vor auf dem Bildschirm. Eine Zuweisung AL=L oder U | ||
- | ist in diesem Fall nicht möglich, da an den PIO-Port zusätzlich zum Lesegerät | ||
- | kein LIST-Gerät anschließbar ist. Sollte der Druckermodul gesteckt sein, so wird | ||
- | bei AC=C auf dem Drucker protokolliert, |