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
z9001:grafik [2010/07/23 11:15] – Links to z9001:krtgrafik changed to z9001:erweiterungen:krtgrafik volkerpz9001:grafik [2022/10/28 11:57] (aktuell) – [Nutzung mit BASIC] volkerp
Zeile 3: Zeile 3:
 Der Z9001 ist im Standard-Zustand nicht vollgrafikfähig, da er lediglich Textmodus mit 40x24 bzw. 40x20 Zeichen bietet. Gleichwohl bietet das BASIC des Plotter-Moduls bzw. das im KC87.2x eingebaute BASIC86 jedoch Grafikbefehle. Allerdings sind dies nur Platzhalter in der Liste der verfügbaren BASIC-Befehle; ein vollständiger Code für diese Befehle muss außerhalb des BASIC als Treiber {{grafik.zip|}} hinzugeladen werden. Der Z9001 ist im Standard-Zustand nicht vollgrafikfähig, da er lediglich Textmodus mit 40x24 bzw. 40x20 Zeichen bietet. Gleichwohl bietet das BASIC des Plotter-Moduls bzw. das im KC87.2x eingebaute BASIC86 jedoch Grafikbefehle. Allerdings sind dies nur Platzhalter in der Liste der verfügbaren BASIC-Befehle; ein vollständiger Code für diese Befehle muss außerhalb des BASIC als Treiber {{grafik.zip|}} hinzugeladen werden.
  
-{{uhr_4tel_grafik.jpg?100 }} Solche Treiber gibt es von Robotron für **[[z9001:plotter|]]**, den bei U. Zander beschrieben **{{http://www.sax.de/~zander/z9001/module/pixgraf.html|Grafik-Zusatz}}** sowie von mir für den **unverbauten KC87** mit einer Auflösung von 40x24 "Pixeln" und 80x48 Pixeln (Viertel-Grafik, im Bild eine Analog-Uhr mit diesem Treiber). Neu hinzugekommen ist auch ein Treiber für die [[z9001:erweiterungen:krtgrafik|]].+{{uhr_4tel_grafik.jpg?100 }} Solche Treiber gibt es  
 +  * von Robotron für [[z9001:plotter|]],  
 +  für den Grafikzusatz http://www.sax.de/~zander/z9001/module/pixgraf.html 
 +  * von mir einen **Viertel-Grafik**-Treiber für den unverbauten KC87 mit einer Auflösung von 80x48 Pixeln (, im Bild eine Analog-Uhr mit diesem Treiber).  
 +  * und einen Treiber für die [[z9001:erweiterungen:krtgrafik|]].
  
    
Zeile 10: Zeile 14:
 Hinweis: der Nachbau dieser Vollgrafik ist nicht mehr empfehlenswert. Einfacher und vielseitiger ist die neu entwickelte [[z9001:erweiterungen:krtgrafik|]]. Hinweis: der Nachbau dieser Vollgrafik ist nicht mehr empfehlenswert. Einfacher und vielseitiger ist die neu entwickelte [[z9001:erweiterungen:krtgrafik|]].
  
-{{grafz.jpg?100 |}} Der Grafik-Zusatz wurde leider nie von Robotron produziert, sondern stand nur zur Nachnutzung zur Verfügung. Technisch gesehen ist der Grafik-Zusatz eine zusätzliche Grafikkarte mit einer Auflösung von 256x192 Pixel und einer Farbtiefe von 1 Bit; es können eine Vorder- und eine Hintergrundfarbe aus 8 Farben gewählt werden; diese Farben gelten dann für das gesamte Bild. Die Umschaltung zwischen interner Bildausgabe und Grafik-Zusatz erfolgt im Original über Relais. Es ist entweder die interne Bildausgabe aktiv oder der Grafik-Zusatz, eine Overlay-Möglichkeit besteht nicht. Zur Textausgabe besitzt der Treiber für den Grafik-Zusatz einen 6x8-Pixel-Zeichensatz; damit sind 42 Zeichen/Zeile möglich.+{{:z9001:grafz.jpg?100 |}} Der Grafik-Zusatz wurde leider nie von Robotron produziert, sondern stand nur zur Nachnutzung zur Verfügung (s. {{:z9001:nutzerkatalog2.pdf|Nutzerkatalog 2}}, Blatt 4). Technisch gesehen ist der Grafik-Zusatz eine zusätzliche Grafikkarte mit einer Auflösung von 256x192 Pixel und einer Farbtiefe von 1 Bit; es können eine Vorder- und eine Hintergrundfarbe aus 8 Farben gewählt werden; diese Farben gelten dann für das gesamte Bild. Die Umschaltung zwischen interner Bildausgabe und Grafik-Zusatz erfolgt im Original über Relais. Es ist entweder die interne Bildausgabe aktiv oder der Grafik-Zusatz, eine Overlay-Möglichkeit besteht nicht. Zur Textausgabe besitzt der Treiber für den Grafik-Zusatz einen 6x8-Pixel-Zeichensatz; damit sind 42 Zeichen/Zeile möglich.
  
 {{z9001_vollgrafik_robotron.jpg?400}}\\ KC mit originalem Grafikzusatz. Besitzer R. Kurth {{z9001_vollgrafik_robotron.jpg?400}}\\ KC mit originalem Grafikzusatz. Besitzer R. Kurth
Zeile 16: Zeile 20:
 Im aktuellen JKCEMU von J. Müller (ab Version 0.6) http://www.jens-mueller.org/jkcemu/index.html wird der Robotron-Grafik-Zusatz emuliert: Im aktuellen JKCEMU von J. Müller (ab Version 0.6) http://www.jens-mueller.org/jkcemu/index.html wird der Robotron-Grafik-Zusatz emuliert:
  
-{{grafik_test.gif}} {{grafik_sinus.gif}}\\ Beispiel-Grafiken mit R+GRDEM2, meiner Adaption des Plotter-Demo-Programms. Das originale Testprogramm R+GRDEMO.SSS gilt als verschollen.+{{grafik_test.gif}} {{grafik_sinus.gif}}\\ Beispiel-Grafiken mit R+GRDEM2, meiner Adaption des Plotter-Demo-Programms. (Ein originales Testprogramm GRDEMO.SSS ist erst 2011 aufgetaucht)
  
 Der Grafikzusatz enthält einen externen Pixelspeicher von 6144 Byte (0..17FFh) (= 256x192 Pixel / 8 Pixel/Byte ). Der Grafikzusatz enthält einen externen Pixelspeicher von 6144 Byte (0..17FFh) (= 256x192 Pixel / 8 Pixel/Byte ).
Zeile 40: Zeile 44:
 port    0B8h            ; Farbe + Grafik ein/aus port    0B8h            ; Farbe + Grafik ein/aus
                         ; 7 6 5 4 3 2 1 0                         ; 7 6 5 4 3 2 1 0
-                        ; | | | | | | | | +                        ; | +-+-+ +-+-+ 
-                        ; | --|-- --|--+                        ; |       |
                         ; |       PAPER (BGR)                         ; |       PAPER (BGR)
                         ; |     Grafik ein/aus                         ; |     Grafik ein/aus
Zeile 71: Zeile 75:
 ===== Der Plotter ===== ===== Der Plotter =====
  
-{{a_XY4131b.jpg?100 }}  Der Treiber unterstützt auch die alternative Grafikausgabe auf einen angeschlossenen Kleinplotter, s. [[z9001:plotter|]].+{{a_XY4131b.jpg?100 }} Der Treiber unterstützt auch die alternative Grafikausgabe auf einen angeschlossenen Kleinplotter, s. [[z9001:plotter|]].
  
    
 +<WRAP clear></WRAP>
  
 ===== Nutzung mit BASIC ===== ===== Nutzung mit BASIC =====
Zeile 81: Zeile 86:
 Folgende Grafikbefehle gibt es im BASIC:\\ PSET, LINE, CIRCLE, PAINT, LABEL, SIZE, ZERO, HOME, GCLS, SCALE, SCREEN, POINT, XPOS, YPOS. Folgende Grafikbefehle gibt es im BASIC:\\ PSET, LINE, CIRCLE, PAINT, LABEL, SIZE, ZERO, HOME, GCLS, SCALE, SCREEN, POINT, XPOS, YPOS.
  
-Im Gegensatz zur Plotter-Anleitung können auch  XPOS, YPOS und (wenig sinnvoll) PAINT und POINT genutzt werden: **XPOS** liefert als Rückgabeparameter die x-Koordinate des letzten erreichten Punktes, **YPOS** die entsprechende y-Koordinate. **POINT(x,y)** liefert als Rückgabeparameter 0, wenn der Abfragepunkt x,y die Hintergrundfarbe, und 1, wenn der Abfragepunkt die Vordergrundfarbe hat. **PAINT (x,y)[,c[,d]]** ist undokumentiert, und weder im Plotter- noch im Vollgrafiktreiber realisiert. Im Plottertreiber ist PAINT im physischen Treiber mit einem Return kurzgeschlossen, POINT liefert immer 0. **LINE** akzeptiert neben dem Parameter B auch den Parameter BF.+Im Erweiterung zur Plotter-Anleitung können auch  XPOS, YPOS und (wenig sinnvoll) PAINT und POINT genutzt werden: 
  
-Für die gemeinsame Programmierung von Vollgrafik und Plotter ist der **unterschiedlich große Zeichenbereich** zu beachten: Plotter: 2550x1800, Vollgrafik: 256x192. Zur Initialisierung beider Geräte dient der Befehl **SCREEN**: SCREEN 0,0 - Standardbildschirm, SCREEN 0,1 - Plotter (am E/A-Port) aktivieren, SCREEN 1 - Vollgrafik. Ein gleichzeitiger paralleler Betrieb von Vollgrafik und Plotter funktioniert nicht; es kann aber wechselweise auf beide Geräte (mit entsprechender Skalierung) derselbe Zeichenvorgang wiederholt werden.+  * **XPOS** liefert als Rückgabeparameter die x-Koordinate des letzten erreichten Punktes,  
 +  * **YPOS** die entsprechende y-Koordinate.  
 +  * **POINT(x,y)** liefert als Rückgabeparameter 0, wenn der Abfragepunkt x,y die Hintergrundfarbe, und 1, wenn der Abfragepunkt die Vordergrundfarbe hat. Im Plottertreiber liefert POINT immer 0.  
 +  * **PAINT (x,y)[,c[,d]]** ist undokumentiert, und weder im Plotter- noch im Vollgrafiktreiber realisiert. Im Plottertreiber ist PAINT im physischen Treiber mit einem Return kurzgeschlossen.  
 +  * **LINE** akzeptiert neben dem Parameter B auch den Parameter BF (box filled). Das ist jedoch nicht implementiert. 
 + 
 +Für die gemeinsame Programmierung von Vollgrafik und Plotter ist der **unterschiedlich große Zeichenbereich** zu beachten:  
 +  * Plotter: 2550x1800,  
 +  * Vollgrafik: 256x192.  
 +Zur Initialisierung beider Geräte dient der Befehl **SCREEN**:  
 +  * SCREEN 0,0 - Standardbildschirm,  
 +  * SCREEN 0,1 - Plotter (am E/A-Port) aktivieren,  
 +  * SCREEN 1 - Vollgrafik.  
 +Ein gleichzeitiger paralleler Betrieb von Vollgrafik und Plotter funktioniert nicht; es kann aber wechselweise auf beide Geräte (mit entsprechender Skalierung) derselbe Zeichenvorgang wiederholt werden.
  
 Die BASIC-Befehle sind bezogen auf die Vollgrafik in z9_gbas.pdf ({{http://www.sax.de/~zander/z9001/module/pixgraf.html|Grafik-Zusatz}} bei U. Zander beschrieben. Für die Plotter stehen die Befehle in den zugehörigen Handbüchern {{xy4131.pdf}} bzw. {{xy4140.pdf}} (s.a. [[z9001:plotter|]]). Die BASIC-Befehle sind bezogen auf die Vollgrafik in z9_gbas.pdf ({{http://www.sax.de/~zander/z9001/module/pixgraf.html|Grafik-Zusatz}} bei U. Zander beschrieben. Für die Plotter stehen die Befehle in den zugehörigen Handbüchern {{xy4131.pdf}} bzw. {{xy4140.pdf}} (s.a. [[z9001:plotter|]]).
  
-Mai 2009: Vermutlich stand das MSX-BASIC Vorlage für die Grafikbefehle. Auch die Auflösung von 256x192 Pixeln entspricht dem MSX-1-Standard. Die Befehle sind offenbar genauso wie im MSX-Standard definiert. (Quelle: MSX2 TECHNICAL HANDBOOK). In der  Ergänzung zur Bedienungsanleitung des KC87.2x {{:z9001:anleitung_kc87_2x.pdf|}} steht dazu: "Die Syntax und Semantik der Grafik-Anweisungen entsprechen weitgehend dem internationalen Standard und sind im Detail den Bedienungsanleitungen der grafischen Ausgabegeräte zu entnehmen."+Mai 2009: Vermutlich stand das MSX-BASIC Vorlage für die Grafikbefehle. Auch die Auflösung von 256x192 Pixeln entspricht dem MSX-1-Standard. Die Befehle sind offenbar genauso wie im MSX-Standard definiert. (Quelle: MSX2 TECHNICAL HANDBOOK). In der  Ergänzung zur Bedienungsanleitung des KC87.2x {{:z9001:anleitung_kc87_2x.pdf|}} steht dazu: "//Die Syntax und Semantik der Grafik-Anweisungen entsprechen weitgehend dem internationalen Standard// und sind im Detail den Bedienungsanleitungen der grafischen Ausgabegeräte zu entnehmen."\ Der MSX1-Standard beschreibt folgende Befehle:
  
   * **PSET %%{(%%X,Y) | STEP(X,Y)}[, <colour>[, <logical operation>]]** Draws the dot in the coordinate specified by (X,Y) on the graphic screen.   * **PSET %%{(%%X,Y) | STEP(X,Y)}[, <colour>[, <logical operation>]]** Draws the dot in the coordinate specified by (X,Y) on the graphic screen.
Zeile 111: Zeile 129:
 prinzipieller Aufbau des Treibers GRAF.COM: prinzipieller Aufbau des Treibers GRAF.COM:
  
-Sprungverteiler physische Treiber Treiber für Plotter, im Anschluss Zeichentabelle Treiber für Vollgrafik BASIC-Erweiterung (logischer Treiber) Zeichensatztabelle f. Treiber für Vollgrafik Sprungverteiler BASIC-Erweiterung (Adresse 0A7D6h) +Sprungverteiler physische Treiber 
 +Treiber für Plotter, im Anschluss Zeichentabelle 
 +Treiber für Vollgrafik BASIC-Erweiterung (logischer Treiber) 
 +Zeichensatztabelle f. Treiber für Vollgrafik 
 +Sprungverteiler BASIC-Erweiterung (Adresse 0A7D6h) |
  
 Folgende Grafikbefehle gibt es im BASIC: PSET, LINE, CIRCLE, PAINT, LABEL, SIZE, ZERO, HOME, GCLS, SCALE, SCREEN, POINT, XPOS, YPOS. Alle diese Befehle werden vom logischen Treiber vollständig verarbeitet und führen deswegen nicht zu BASIC-Fehlern. Der BASIC-Treiber übernimmt die Analyse der Befehlszeile und die Skalierung der Koordinaten. Dann wird der Sprungverteiler für die physischen Treiber aufgerufen. Folgende Grafikbefehle gibt es im BASIC: PSET, LINE, CIRCLE, PAINT, LABEL, SIZE, ZERO, HOME, GCLS, SCALE, SCREEN, POINT, XPOS, YPOS. Alle diese Befehle werden vom logischen Treiber vollständig verarbeitet und führen deswegen nicht zu BASIC-Fehlern. Der BASIC-Treiber übernimmt die Analyse der Befehlszeile und die Skalierung der Koordinaten. Dann wird der Sprungverteiler für die physischen Treiber aufgerufen.
  
-^GRPLOT.BIN\\ Adr.^9800-A7FF\\ BASIC-Befehl->^Plotter phys. Treiber, Startcode\\ ruft Sprungverteiler phys. Treiber Nr.^Bemerkung|+^GRPLOT.BIN\\ Adr. 9800-A7FF BASIC-Befehl ^ phys. Treiber Nr. ^ Bemerkung|
 |0A7D6h|pset|1| | |0A7D6h|pset|1| |
 |0A7D9h|line|2|LINE kennt den BOXED-Mode BF, dieser ist aber nicht implementiert| |0A7D9h|line|2|LINE kennt den BOXED-Mode BF, dieser ist aber nicht implementiert|
  • z9001/grafik.1279883732.txt.gz
  • Zuletzt geändert: 2010/07/22 22:00
  • (Externe Bearbeitung)