Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | Nächste ÜberarbeitungBeide Seiten der Revision | ||
z9001:software:os:geraetetreiber [2015/04/28 12:54] – [ASGN-Kommando] volkerp | z9001:software:os:geraetetreiber [2015/04/28 13:56] – [ZM] 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 " | Beispielsweise wird ein Druckertreiber mit der Bezeichnung " | ||
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 | + | |
- | 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 |
- | + | ||
- | 1. Initialisieren/ | + | |
- | 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 | + | |
- | 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< | + | |
- | vorhandenen Gerätes zu einem logischen Gerät. Folgende Zuordnungen sind | + | |
- | angebbar: | + | |
- | + | ||
- | + | ||
- | + | ||
- | CONSOLE | + | |
- | + | ||
- | READER | + | |
- | + | ||
- | PUNCH | + | |
- | + | ||
- | LIST | + | |
- | + | ||
- | + | ||
- | AC=C für Konsole (mit Tastatur-Beep) | + | |
- | AC=V für Konsole (ohne Tastatur-Beep) | + | |
- | AC=B für BATCH AR=T für Kassette (Tape) | + | |
- | AC=U für User-Konsole | + | |
- | + | ||
- | 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 | + | |
- | | + | |
- | | + | |
- | + | ||
- | 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, | + | |
- | + | ||
- | + | ||
- | + | ||
- | ====== OS ====== | + | |
- | + | ||
- | < | + | |
- | ;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 ; | + | |
- | + | ||
- | ; | + | |
- | 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 | + | |
- | ; | + | |
- | EFE9 TXCON: DA PHYDV+2 ;Adresse einer Zeichenkette des aktuellen CONST-Gerätes, | + | |
- | ; | + | |
- | EFEB TXRDR: DA PHYDV ; | + | |
- | EFED TXPUN: DA PHYDV ; | + | |
- | EFEF TXLST: DA PHYDV ; | + | |
- | </ | + | |
+ | ===== Aufbau ===== | ||
- | 3. Zusätzliche | + | Ein Treiber-Programm besteht aus mehreren Teilen |
- | Der Monitor des Z 9001 bietet dem Anwender über das ASGN-Kommando | + | * OS-Kommandorahmen (enthält den Kommando-Namen, z.B. " |
- | Möglichkeit, den logischen Geräten jeweils 4 physische Geräte mit beliebigen | + | * Kommando-Verteiler für die Treiber-Kommandos wie Eingabe, Statusabfrage und Initialisierung |
- | Treiberroutinen zuzuweisen. Um die Zusammenarbeit | + | |
- | Systemkomponenten zu gewährleisten, | + | * die physischen Treiber zur Ansteuerung des Gerätes |
- | beachten. | + | * die Initialisierung der Systemzellen und die Parameterbereitstellung für ASGN |
Treibereingangsparameter: | Treibereingangsparameter: | ||
- | * A Kommando (siehe | + | * A Kommando (siehe |
* 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.1. Treiberinitialisierung | + | **Treiber-Kommandos** |
+ | |||
+ | ^ Code ^ Funktion ^ Eingang ^ Return ^ | ||
+ | | 00 | Abfrage Status | | A Status\\ 0 kein Zeichen bei Eingabegerät, | ||
+ | | 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/ | ||
+ | |||
+ | 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 (bzw. dem 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 | + | 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, |
</ | </ | ||
+ | |||
+ | :!: sollen Gerätetreiber auch für OS 1.1 nutzbar sein, muss man auf einen Bug des Systems Rücksicht nehmen! | ||
+ | |||
Beispiel: | Beispiel: | ||
+ | |||
< | < | ||
; | ; | ||
Zeile 384: | Zeile 289: | ||
LD BC, | LD BC, | ||
LD DE, | LD DE, | ||
- | 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: | FEHL: | ||
Zeile 399: | Zeile 310: | ||
</ | </ | ||
- | Hinweis: | + | Beim eigenständigen Eintragen der Treiber |
- | * TTY-Treiber | + | |
- | * 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: | ||
+ | |||
+ | 1. Initialisieren/ | ||
+ | 2. Abfrage Status (A=0, Rückgabe 0 bei nicht bereit, sonst <> 0) | ||
+ | | ||
+ | |||
+ | **Treiber für READER** | ||
+ | |||
+ | Für einen Treiber für READER reichen folgende Treiber-Kommandos aus: | ||
+ | |||
+ | 1. Initialisieren/ | ||
+ | 2. Abfrage Status (A=0, Rückgabe 0, wenn kein Zeichen einzulesen ist, sonst <> 0) | ||
+ | 3. 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, | + | |
- | | 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/ | + | |
- | + | ||
- | 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: | ||
</ | </ | ||
- | 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! | ||
+ | < | ||
- | :!: sollen Gerätetreiber auch für OS 1.1 nutzbar sein, muss man auf einen Bug des Systems Rücksicht nehmen! | + | 0004 IOBYT: DB 1 ;I/O-Byte zur Zuweisung log.Gerät phys. Gerät |
- | < | + | ;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 | + | ; |
- | inc hl ; ist nur bei OS Version | + | EFC9 ATTYC: |
- | 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 -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 | ||
+ | |||
+ | ; | ||
+ | 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 ; | ||
+ | EFEF TXLST: DA PHYDV ; | ||
</ | </ | ||
+ | |||
+ | ====== 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 ' | ||
+ | * 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: | ||
+ | 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< | ||
+ | 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, |