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 12:54] – [ASGN-Kommando] volkerpz9001:software:os:geraetetreiber [2015/04/29 14:18] – [Aufbau] volkerp
Zeile 151: Zeile 151:
   * Welchem log. Gerät darf die Treiberroutine zugeordnet werden?    * Welchem log. Gerät darf die Treiberroutine zugeordnet werden? 
   * Die Startadresse des Treiberteils    * Die Startadresse des Treiberteils 
-  * Auf welchem Platz der Zuordnungstabelle (Tafel 5) soll der Eintrag erfolgen (physisches Gerät 0...3)? +  * Auf welchem Platz der Zuordnungstabelle (s.u.) soll der Eintrag erfolgen (physisches Gerät 0...3)? 
   * Die Adresse des symbolischen Gerätenamens (8-Byte-String).   * Die Adresse des symbolischen Gerätenamens (8-Byte-String).
  
Zeile 157: Zeile 157:
  
 Ein physisches Gerät mit der Nr. 1 kann auch immer dem LIST-Kanal zugeordnet werden (Beispiel: residenter CRT-Treiber). Ein physisches Gerät mit der Nr. 1 kann auch immer dem LIST-Kanal zugeordnet werden (Beispiel: residenter CRT-Treiber).
- 
-Die Parameterübergabe erfolgt über die folgenden Register: 
- 
-H: log. Gerätenr. kennzeichnet den log. Kanal, dem die Treiberroutine zugeordnet werden kann. \\   
-0 - CONST: 2 - READER: 4 - PUNCH: 6 - LIST: \\   
-L: phys. Gerät (0,...,3) \\   
-BC: Adresse der Treiberroutine \\   
-DE: Adresse der Zeichenkette (symbolischer Gerätename) 
  
 Beispielsweise wird ein Druckertreiber mit der Bezeichnung "LX86" wie folgt in das OS eingebunden: Mit der Anweisung Beispielsweise wird ein Druckertreiber mit der Bezeichnung "LX86" wie folgt in das OS eingebunden: Mit der Anweisung
Zeile 179: Zeile 171:
 Der Drucker kann jetzt mit CTRL/P zum Bildschirm parallel geschaltet werden (auch im BASIC) oder über den LIST-Kanal (Ruf-Nr. 5) direkt angesprochen werden. Der Drucker kann jetzt mit CTRL/P zum Bildschirm parallel geschaltet werden (auch im BASIC) oder über den LIST-Kanal (Ruf-Nr. 5) direkt angesprochen werden.
  
-===== Druckertreiber =====+Die meisten Treiber umgehen den Aufruf über ASGN. Statt
  
-Was erwartet das Betriebssystem?+  ASGN LIST:=LX86
  
-Das OS des Z9001 ist basierend auf CP/M entwickelt worden und hat dessen +wird der Druckertreiber dann mit 
-Treiberkonzept übernommen. So gibt es 4 logische Geräte, die von den +
-Anwendungsprogrammen genutzt werden können: CONST, READER, PUNCH, LIST. Diesen +
-logischen Geräten werden nun physische Gerätetreiber zugeordnet. Das erfolgt +
-mittels Kommando ASGN. Üblicherweise wird CONST der Tastatur und dem Bildschirm +
-zugeordnet und LIST dem Drucker.+
  
-Damit ein physischer Gerätetreiber so zugeordnet werden kann, muss er einige +  LX86
-Eigenschaften erfüllen:+
  
-1. Treiberadresse muss in der Adresstabelle für Gerätetreiber eingetragen sein +geladen.
-(0EFC9H-0EFE8H) +
-2. der Treiber muss eine 8 Byte lange Bezeichnung bereitstellen +
-3. der Treiber muss die Systemkommandos für Gerätetreiber umsetzen.+
  
-Für einen Druckertreiber reichen folgende Systemkommandos aus: +Ein guter Treiber sollte beide Varianten ermöglichen!
- +
-1. Initialisieren/Rücksetzen des Gerätes (A=0FFh) +
-2. Abfrage Status (A=0) +
-3. Ausgabe Zeichen (A=0, Zeichen in C) +
- +
-Das Ganze ist in der Betriebssystembeschreibung ausführlicher erklärt. Ebenfalls +
-gibt es in mp 10/87 S. 311 ff. Erläuterungen zum Gerätetreiber-Handling des +
-Z9001. +
- +
-Hinweis: Die Robotron-Treiber umgehen den Mechanismus von ASGN und tragen sich +
-selbst in die internen Gerätetreiberlisten ein; ein Robotron-Druckertreiber wird +
-also ganz normal im OS geladen; NICHT mit ASGN. +
- +
- +
-===== CRT-Teiber ===== +
- +
-für KRT wurden von mir CRT-Treiber entwickelt. Es gab keine Vorbilder wie bei den Druckertreibern. +
- +
- +
-===== ZM ===== +
- +
-:!: Schlechtes Vorbild!!! +
- +
-Es wird nicht alles umgesetzt, so fehlt die Initialisierung und die Anzeige der Treibernamen etc. +
- +
-Im Zusatzmonitor sind verschiedene Gerätetreiber enthalten. s. auch Artikel über +
-mp 10/87 S. 311 ff.. Den logischen Geräten Console, Reader, Punch, List können +
-verschiedene physische Treiber zugeordnet werden. Im ZM sind physische Treiber +
-für Tastatur mit Beep, SIF-1000 Lochbandleser und -stanzer, V24-Drucker und +
-Kassettenzugriff enthalten. +
- +
-Das Kommando A<logisches Gerät>=<physisches Gerät> dient der Zuweisung eines +
-vorhandenen Gerätes zu einem logischen Gerät. Folgende Zuordnungen sind +
-angebbar: +
- +
- +
- +
-CONSOLE  +
- +
-READER  +
- +
-PUNCH  +
- +
-LIST  +
- +
- +
-AC=C für Konsole (mit Tastatur-Beep)  AR=C für Konsole  AP=C für Konsole  AL=C für Konsole   +
-AC=V für Konsole (ohne Tastatur-Beep)  AR=P für LB-Leser (SIF-1000)  AP=P für LB-Stanzer (SIF-1000)  AL=V für Konsole   +
-AC=B für BATCH  AR=T für Kassette (Tape)  AP=T für Kassette  AL=L für V24-Drucker (TD40)   +
-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. +
- +
- +
- +
-====== OS ====== +
- +
-<code> +
-;der folgende Speicherbereich ist durch den Nutzer für eigene Treiber verwendbar +
-0280 RTTYC BER 4 ;RAM TTY-Treiber für CONST +
-0284 RCRTC: BER 4 ;RAM CRT-Treiber für CONST +
-0288 RBATC: BER 4 ;RAM BAT-Treiber für CONST +
-028C RUC: BER 4 ;RAM UC-Treiber für CONST +
-0290 PTTYR: BER 4 ;RAM TTY-Treiber für READER +
-0294 RRDR: BER 4 ;RAM RDR-Treiber für READER +
-0298 RUR1: BER 4 ;RAM UR1-Treiber für READER +
-029C RUR2: BER 4 ;RAM UR2-Treiber für READER +
-02A0 RTTYP: BER 4 ;RAM TTY-Treiber für PUNCH +
-02A4 RPUN: BER 4 ;RAM PUN-Treiber für PUNCH +
-02A8 RUP1: BER 4 ;RAM UP1-Treiber für PUNCH +
-02AC RUP2: BER 4 ;RAM UP2-Treiber für PUNCH +
-02B0 RTTYL: BER 4 ;RAM TTY-Treiber für LIST +
-02B4 RCRTL: BER 4 ;RAM CRT-Treiber für LIST +
-02B8 RLST: BER 4 ;RAM LST-Treiber für LIST +
-02BC RUL: BER 4 ;RAM UL-Treiber für LIST +
-02C0 SYSR: BER 40H ;reserviert für Systemerweiterung +
- +
-;Adreßtabelle der Gerätetreiber +
-EFC9 ATTYC: DA -1 ;Adresse TTY-Treiber für CONST +
-EFCB ACRTC: DA CRT ;Adresse CRT-Treiber für CONST +
-EFCD ABATC: DA BAT ;Adresse BAT-Treiber für CONST +
-EFCF AUC: DA -1 ;Adresse UC-Treiber für CONST +
-EFD1 ATTYR: DA -1 ;Adresse TTY-Treiber für READER +
-EFD3 ARDR: DA -1 ;Adresse RDR-Treiber für READER +
-EFD5 AUR1: DA -1 ;Adresse UR1-Treiber für READER +
-EFD7 AUR2: DA -1 ;Adresse UR2-Treiber für READER +
-EFD9 ATTYP: DA -1 ;Adresse TTY-Treiber für PUNCH +
-EFDB APUN: DA -1 ;Adresse PUN-Treiber für PUNCH +
-EFDD AUP1: DA -1 ;Adresse UP1-Treiber für PUNCH +
-EFDF AUP2: DA -1 ;Adresse UP2-Treiber für PUNCH +
-EFE1 ATTYL: DA -1 ;Adresse TTY-Treiber für LIST +
-EFE3 ACRTL: DA CRT ;Adresse CRT-Treiber für LIST +
-EFE5 ALST: DA -1 ;Adresse LST-Treiber für LIST +
-EFE7 AUL: DA -1 ;Adresse UL-Treiber für LIST +
-;Zeichenkettenadreßtabelle +
-EFE9 TXCON: DA PHYDV+2 ;Adresse einer Zeichenkette des aktuellen CONST-Gerätes, +
- ;Zeichenkette wird im ASGN-Kommando ausgegeben +
-EFEB TXRDR: DA PHYDV ; +
-EFED TXPUN: DA PHYDV ;entsprechend TXCON +
-EFEF TXLST: DA PHYDV ; +
-</code>+
  
  
 +===== Aufbau =====
  
-3. Zusätzliche Treiber+Ein Treiber-Programm besteht aus mehreren Teilen
  
-Der Monitor des Z 9001 bietet dem Anwender über das ASGN-Kommando die +  * OS-Kommandorahmen (enthält den Kommando-Namen, z.B. "LX86") 
-Möglichkeitden logischen Geräten jeweils 4 physische Geräte mit beliebigen +  * Kommando-Verteiler für die Treiber-Kommandos wie EingabeStatusabfrage und Initialisierung  
-Treiberroutinen zuzuweisen. Um die Zusammenarbeit mit allen anderen +  die interne Logik zur Umsetzung der Treiber-Kommandos (z.B. mit Sonderbehandlung von Steuerzeichen) 
-Systemkomponenten zu gewährleisten, sind dabei besondere Randbedingungen zu +  * die physischen Treiber zur Ansteuerung des Gerätes 
-beachten.+  * die Initialisierung der Systemzellen und die Parameterbereitstellung für ASGN
  
 Treibereingangsparameter: Treibereingangsparameter:
- * A Kommando (siehe 3.2.) (für CONST, READER, LIST)+ * A Kommando (siehe Tabelle) (für CONST, READER, LIST)
  * C Zeichen (bei Kommando AUSGABE)  * C Zeichen (bei Kommando AUSGABE)
  * DE Adresse bei Cursorkommandos  * DE Adresse bei Cursorkommandos
Zeile 335: Zeile 205:
 Hinweis: Vordergrundregister müssen bei Eintritt in das Treiberprogramm nicht gerettet werden (erfolgt bereits im BOS) Hinweis: Vordergrundregister müssen bei Eintritt in das Treiberprogramm nicht gerettet werden (erfolgt bereits im BOS)
  
 +Hinweis:
 + * TTY-Treiber (L=0) können beliebigen logischen Geräten zugewiesen werden
 + * CRT-Treiber (L=1) können CONST und LIST zugewiesen werden
 + * alle anderen nur dem im H-Register angegebenen logischen Gerät (sonst Fehlermeldung im ASGN-Kommando)
  
-3.1Treiberinitialisierung+**Treiber-Kommandos** 
 + 
 +^ Code ^ Funktion ^ Eingang ^ Return ^ 
 +| 00 | Abfrage Status | | A Status\\ 0 kein Zeichen bei Eingabegerät,\\ nicht bereit bei Ausgabegerät\\ sonst Zeichen liegt an bei Eingabegerät,\\ (im installierten CRT-Treiber wird der Zeichencode übergeben) | 
 +| 01 | Eingabe Zeichen | | A Zeichen | 
 +| 02 | Ausgabe Zeichen | C Zeichen | | 
 +| 03 | Cursor löschen | | | 
 +| 04 | Cursor anzeigen | | HL physische Cursoradresse | 
 +| 05 | Abfrage logische und physische Cursoradresse | | HL physische Cursoradresse\\ DE logische Cursoradresse | 
 +| 06 | Setzen Cursor auf logische Adresse | DE logische Cursoradresse | | 
 +| 07 | Abfrage physische Cursoradresse | | HL physische Cursoradresse | 
 +| 08 | Setzen Cursor auf physische Adresse | DE physische Cursoradresse | | 
 +| FF | Initialisieren/Rücksetzen des Gerätes | | | 
 + 
 +Hinweis: 
 + * werden verschiedene Kommandos durch den Anwender nicht benötigt, kann dafür ein Sprung zum Fehlerausgang des Treibers programmiert werden 
 + * korrespondierende System- und Direktrufe sind dann nicht mehr verwendbar 
 + 
 + 
 +**Treiberinitialisierung** 
 + 
 +Dem OS (bzwdem ASGN-Kommando) müssen einige Informationen übermittelt werden: 
 + 
 +  * Welchem log. Gerät darf die Treiberroutine zugeordnet werden?  
 +  * Die Startadresse des Treiberteils  
 +  * Auf welchem Platz der Zuordnungstabelle soll der Eintrag erfolgen (physisches Gerät 0...3)?  
 +  * Die Adresse des symbolischen Gerätenamens (8-Byte-String).
  
 Die Initialisierung sollte grundsätzlich über das ASGN-Kommando erfolgen. Eine Die Initialisierung sollte grundsätzlich über das ASGN-Kommando erfolgen. Eine
-automatische Initialisierung über die Nutzung des Kommandos (siehe 2.1.2.) und+automatische Initialisierung über die Nutzung des Kommandos und
 Direktzugriff auf entsprechende Systemzellen ist zu vermeiden. Direktzugriff auf entsprechende Systemzellen ist zu vermeiden.
  
Zeile 353: Zeile 253:
 Treiberroutine eines physischen Gerätes stehen im System-RAM (ab 280H) 4 Bytes Treiberroutine eines physischen Gerätes stehen im System-RAM (ab 280H) 4 Bytes
 Speicher zur Verfügung. Speicher zur Verfügung.
 +
  
 Die Treiberinitialisierung muß der ASGN-Routine folgende Parameter übergeben: Die Treiberinitialisierung muß der ASGN-Routine folgende Parameter übergeben:
Zeile 363: Zeile 264:
  6 LIST  6 LIST
  - L physische Gerätenummer (0, 1 .... 3)  - L physische Gerätenummer (0, 1 .... 3)
- - BC Adresse der E/A-Routine + - BC Adresse der Treiberroutine 
- - DE Adresse einer Zeichenkette (wird nach der Zuweisung durch ASGN angezeigt)+ - DE Adresse einer Zeichenkette (symbolischer Gerätename, wird nach der Zuweisung durch ASGN angezeigt)
 </code> </code>
 +
 +:!: sollen Gerätetreiber auch für OS 1.1 nutzbar sein, muss man auf einen Bug des Systems Rücksicht nehmen!
 +
 Beispiel: Beispiel:
 +
 <code> <code>
  ;PROM-Transientkommandoprogramm zur Initialisierung eines Druckers als TTY-Gerät  ;PROM-Transientkommandoprogramm zur Initialisierung eines Druckers als TTY-Gerät
Zeile 384: Zeile 289:
  LD BC,OUTZ ;Adresse der Zeichenausgabe  LD BC,OUTZ ;Adresse der Zeichenausgabe
  LD DE,TEXT  LD DE,TEXT
- OR A ;kein Fehler + or a CY=0, kein Fehler 
- RET+
 + ex (sp), hl ; ++ dieser Teil 
 + inc hl ; ++ ist nur bei OS Version 1.1 
 + inc hl ; ++ noetig (wegen eines Fehlers 
 + ex (sp), hl ; ++ in der ASGN-Routine) 
 +
 + ret
  ;  ;
  FEHL: SCF ;Fehler  FEHL: SCF ;Fehler
Zeile 399: Zeile 310:
 </code> </code>
  
-Hinweis: +Beim eigenständigen Eintragen der Treiber unter Umgehung des ASGN-Kommandos gilt:
- * TTY-Treiber (L=0) können beliebigen logischen Geräten zugewiesen werden +
- * CRT-Treiber (L=1) können CONST und LIST zugewiesen werden +
- * alle anderen nur dem im H-Register angegebenen logischen Gerät (sonst Fehlermeldung im ASGN-Kommando)+
  
 +  - Treiberadresse muss in der Adresstabelle für Gerätetreiber eingetragen sein (0EFC9H-0EFE8H)
 +  - der Treiber muss eine 8 Byte lange Bezeichnung bereitstellen
 +  - der Treiber muss die Systemkommandos für Gerätetreiber umsetzen.
  
-3.2. Besonderheiten der Treiber für CONST+**Treiber für LIST (Druckertreiber)** 
 + 
 +Für einen Druckertreiber reichen folgende Treiber-Kommandos aus: 
 + 
 +  * Initialisieren/Rücksetzen des Gerätes (A=0FFh) 
 +  * Abfrage Status (A=0, Rückgabe 0 bei nicht bereit, sonst <> 0) 
 +  * Ausgabe Zeichen (A=2, Zeichen in C) 
 + 
 +**Treiber für READER** 
 + 
 +Für einen Treiber für READER reichen folgende Treiber-Kommandos aus: 
 + 
 +  * Initialisieren/Rücksetzen des Gerätes (A=0FFh) 
 +  * Abfrage Status (A=0, Rückgabe 0, wenn kein Zeichen einzulesen ist, sonst <> 0) 
 +  * Eingabe Zeichen (A=1, Rückgabe Zeichen in A) 
 + 
 +**Treiber für CONST**
  
 An die Treiber der für CONST möglichen Geräte (TTY, CRT, BAT, UC) werden An die Treiber der für CONST möglichen Geräte (TTY, CRT, BAT, UC) werden
Zeile 412: Zeile 339:
 erfüllende Aufgabe durch spezielle Kommandocodes im A - Register übergeben. erfüllende Aufgabe durch spezielle Kommandocodes im A - Register übergeben.
  
-Kommandocodetabelle+**Kommandocodetabelle**
- +
-^ Code ^ Funktion ^ Eingang ^ Return ^ +
-| 00 | Abfrage Status | | A Status\\ 0 kein Zeichen bei Eingabegerät,\\ nicht bereit bei Ausgabegerät\\ sonst Zeichen liegt an bei Eingabegerät,\\ (im installierten CRT-Treiber wird der Zeichencode übergeben) | +
-| 01 | Eingabe Zeichen | | A Zeichen | +
-| 02 | Ausgabe Zeichen | C Zeichen | | +
-| 03 | Cursor löschen | | | +
-| 04 | Cursor anzeigen | | HL physische Cursoradresse | +
-| 05 | Abfrage logische und physische Cursoradresse | | HL physische Cursoradresse\\ DE logische Cursoradresse | +
-| 06 | Setzen Cursor auf logische Adresse | DE logische Cursoradresse | | +
-| 07 | Abfrage physische Cursoradresse | | HL physische Cursoradresse | +
-| 08 | Setzen Cursor auf physische Adresse | DE physische Cursoradresse | | +
-| FF | Initialisieren/Rücksetzen des Gerätes | | | +
- +
-Hinweis: +
- werden verschiedene Kommandos durch den Anwender nicht benötigt, kann dafür ein Sprung zum Fehlerausgang des Treibers programmiert werden +
- korrespondierende System- und Direktrufe sind dann nicht mehr verwendbar+
  
 Beispiel: Beispiel:
Zeile 457: Zeile 368:
 </code> </code>
  
-3.3. Besonderheiten der Treiber für READER und LIST 
  
-Soll ein READER-Gerät Im Zusammenhang mit dem BATCH-Mode von CONST betrieben 
-werden, so müssen im Treiber für das READER-Gerät (RDR, UR1, UR2) die Kommandos 
-Eingabe, Statusabfrage und Initialisierung programmiert sein. Bei Treibern für 
-das LIST-Gerät müssen die Kommandos Ausgabe, Statusabfrage und Initialisierung 
-in jedem Falle programmiert werden. 
  
 +===== Speicherzellen =====
  
-====== Hinweise ======+Im Betriebssystem sind einige Speicherzellen für Treiber freigehalten. 
 +Anwenderprogramme dürfen daher den Bereich 280h..2BFh auch nicht nutzen, sondern erst ab 300h!
  
 +<code>
  
-:!: sollen Gerätetreiber auch für OS 1.1 nutzbar sein, muss man auf einen Bug des Systems Rücksicht nehmen!+0004 IOBYT DB  ;I/O-Byte zur Zuweisung log.Gerät phys. Gerät
  
-<code> +;der folgende Speicherbereich ist durch den Nutzer für eigene Treiber verwendbar 
-;Ende der Initialisierung. Bei OS 1.1. muss eine Return-Adresskorrektur erfolgen! +0280 RTTYC BER 4 ;RAM TTY-Treiber für CONST 
-;Übergabe an ASGN+0284 RCRTC: BER 4 ;RAM CRT-Treiber für CONST 
-;H = logische Gerätenummer +0288 RBATC BER 4 ;RAM BAT-Treiber für CONST 
-;L = physische Gerätenummer +028C RUC: BER 4 ;RAM UC-Treiber für CONST 
-;BC = Treiberadresse +0290 PTTYR: BER 4 ;RAM TTY-Treiber für READER 
-;DE = Adr. des symb. Namens+0294 RRDR: BER 4 ;RAM RDR-Treiber für READER 
 +0298 RUR1: BER 4 ;RAM UR1-Treiber für READER 
 +029C RUR2: BER 4 ;RAM UR2-Treiber für READER 
 +02A0 RTTYP: BER 4 ;RAM TTY-Treiber für PUNCH 
 +02A4 RPUN: BER 4 ;RAM PUN-Treiber für PUNCH 
 +02A8 RUP1: BER 4 ;RAM UP1-Treiber für PUNCH 
 +02AC RUP2: BER 4 ;RAM UP2-Treiber für PUNCH 
 +02B0 RTTYL: BER 4 ;RAM TTY-Treiber für LIST 
 +02B4 RCRTL: BER 4 ;RAM CRT-Treiber für LIST 
 +02B8 RLST: BER 4 ;RAM LST-Treiber für LIST 
 +02BC RUL: BER 4 ;RAM UL-Treiber für LIST
  
- or a CY=0, kein Fehler + 
- ex (sp), hl dieser Teil +;Adreßtabelle der Gerätetreiber 
- inc hl ist nur bei OS Version 1.+EFC9  ATTYC:  DA -1 ;Adresse TTY-Treiber für CONST 
- inc hl noetig (wegen eines Fehlers +EFCB ACRTC: DA CRT ;Adresse CRT-Treiber für CONST 
- ex (sp)hl in der ASGN-Routine) +EFCD  ABATC: DA BAT ;Adresse BAT-Treiber für CONST 
- ret+EFCF AUC: DA - ;Adresse UC-Treiber für CONST 
 +EFD1 ATTYR: DA - ;Adresse TTY-Treiber für READER 
 +EFD3  ARDR: DA -1 ;Adresse RDR-Treiber für READER 
 +EFD5 AUR1: DA -1 ;Adresse UR1-Treiber für READER 
 +EFD7 AUR2: DA -1 ;Adresse UR2-Treiber für READER 
 +EFD9 ATTYP: DA -1 ;Adresse TTY-Treiber für PUNCH 
 +EFDB APUN: DA -1 ;Adresse PUN-Treiber für PUNCH 
 +EFDD AUP1: DA -1 ;Adresse UP1-Treiber für PUNCH 
 +EFDF AUP2: DA -1 ;Adresse UP2-Treiber für PUNCH 
 +EFE1 ATTYL: DA -1 ;Adresse TTY-Treiber für LIST 
 +EFE3 ACRTL: DA CRT ;Adresse CRT-Treiber für LIST 
 +EFE5 ALST: DA -1 ;Adresse LST-Treiber für LIST 
 +EFE7 AUL: DA -1 ;Adresse UL-Treiber für LIST 
 + 
 +;Zeichenkettenadreßtabelle 
 +EFE9 TXCON: DA PHYDV+2 ;Adresse einer Zeichenkette des aktuellen CONST-Gerätes, 
 + ;Zeichenkette wird im ASGN-Kommando ausgegeben 
 +EFEB TXRDR: DA PHYDV ; 
 +EFED TXPUN: DA PHYDV ;entsprechend TXCON 
 +EFEF TXLST: DA PHYDV ;
 </code> </code>
  
  
 +
 +====== CRT-Teiber ======
 +
 +für KRT wurden von mir CRT-Treiber entwickelt. Es gab keine Vorbilder wie bei den Druckertreibern.
 +
 +
 +======= ZM =======
 +
 +:!: der ZM ist ein schlechtes Vorbild in Sachen Gerätetreiber!
 +
 +  * 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 überschreibt die komplette Adresstabelle der Gerätetreiber (ab 0EFC9h). Eigene vorher eingetragene Treiber werden damit aus dem System geworfen!
 +  * Die Treiber für TAPE sind keine zeichenorientierten Treiber und manipulieren gehörig das System (s. Sourcecode)
 +
 +
 +Im [[z9001:software:zm]] sind verschiedene Gerätetreiber enthalten.
 +Den logischen Geräten Console, Reader, Punch, List können
 +verschiedene physische Treiber zugeordnet werden. Im ZM sind physische Treiber
 +für Tastatur mit Beep, SIF-1000 Lochbandleser und -stanzer, V24-Drucker und
 +Kassettenzugriff enthalten.
 +
 +Das Kommando A<logisches Gerät>=<physisches Gerät> dient der Zuweisung eines
 +vorhandenen Gerätes zu einem logischen Gerät. Folgende Zuordnungen sind
 +angebbar:
 +
 +
 +^ CONSOLE ^ READER ^ PUNCH ^ LIST ^
 +| AC=C für Konsole (mit Tastatur-Beep) | AR=C für Konsole | AP=C für Konsole | AL=C für Konsole |
 +| AC=V für Konsole (ohne Tastatur-Beep) | AR=P für LB-Leser (SIF-1000) | AP=P für LB-Stanzer (SIF-1000) | AL=V für Konsole |
 +| AC=B für BATCH | AR=T für Kassette (Tape) | AP=T für Kassette | AL=L für V24-Drucker (TD40) |
 +| 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