Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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] volkerpz9001: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- /Ausgabekanäle. Vorbild für das im folgenden erläuterte Konzept ist das Betriebssystem CP/M.  Das OS des KC85/1 unterstützt leistungsfähig das Einbinden neuer Gerätetreiberroutinen für die sog. zeichenorientierten logischen Ein- /Ausgabekanäle. Vorbild für das im folgenden erläuterte Konzept ist das Betriebssystem CP/M. 
Zeile 10: Zeile 8:
   * "Betriebssystem Z9001" Beschreibung + Quelltext des OS   * "Betriebssystem Z9001" Beschreibung + Quelltext des OS
   * 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, missachtet der ZM das Assign-Konzept des OS fast vollständig (s.u.)
 +  * 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:basic#die_erweiterung_von_lutz_elssner|]])!
  
 ===== Das I/O-Byte ===== ===== Das I/O-Byte =====
Zeile 66: Zeile 77:
  
 <code> <code>
-  log. Gerät    phys. Treiber +  log. Gerät    Gerätenummer - phys. Treiber 
-  CONST: 1 - CRT2 - BAT+  CONST: 1 - CRT 
 +                2 - BAT
   LIST: 1 - CRT   LIST: 1 - CRT
 </code> </code>
Zeile 320: Zeile 332:
 Für einen Druckertreiber reichen folgende Treiber-Kommandos aus: Für einen Druckertreiber reichen folgende Treiber-Kommandos aus:
  
-  1. Initialisieren/Rücksetzen des Gerätes (A=0FFh) +  Initialisieren/Rücksetzen des Gerätes (A=0FFh) 
-  2. Abfrage Status (A=0, Rückgabe 0 bei nicht bereit, sonst <> 0) +  Abfrage Status (A=0, Rückgabe 0 bei nicht bereit, sonst <> 0) 
-  3. Ausgabe Zeichen (A=2, Zeichen in C)+  Ausgabe Zeichen (A=2, Zeichen in C)
  
 **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:
  
-  1. Initialisieren/Rücksetzen des Gerätes (A=0FFh) +  Initialisieren/Rücksetzen des Gerätes (A=0FFh) 
-  2. Abfrage Status (A=0, Rückgabe 0, wenn kein Zeichen einzulesen ist, sonst <> 0) +  Abfrage Status (A=0, Rückgabe 0, wenn kein Zeichen einzulesen ist, sonst <> 0) 
-  3. Eingabe Zeichen (A=1, Rückgabe Zeichen in A)+  Eingabe Zeichen (A=1, Rückgabe Zeichen in A)
  
 **Treiber für CONST** **Treiber für CONST**
Zeile 436: Zeile 448:
  
   * Der ZM enthält ein eigenes ASGN-Kommando 'A'. Hier wird nicht alles wie im OS umgesetzt, so fehlen etwa Treibernamen. Obwohl nach Verlassen des ZM zugewiesene Treiber weiterhin aktiv sind, ist dies nicht bei ASGN erkennbar.   * Der ZM enthält ein eigenes ASGN-Kommando 'A'. Hier wird nicht alles wie im OS umgesetzt, so fehlen etwa Treibernamen. Obwohl nach Verlassen des ZM zugewiesene Treiber weiterhin aktiv sind, ist dies nicht bei ASGN erkennbar.
 +  * 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, Statusabfrage etc.)
 +  * 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:software:zm]] sind verschiedene Gerätetreiber enthalten. Im [[z9001:software:zm]] sind verschiedene Gerätetreiber enthalten.
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, bei AL=V auf dem Bildschirm. 
  • z9001/software/os/geraetetreiber.txt
  • Zuletzt geändert: 2023/06/13 14:47
  • von volkerp