Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
z9001:grafik [2010/11/07 15:30] – volkerp | z9001:grafik [2024/10/23 07:27] (aktuell) – [Grafikzusatz] volkerp |
---|
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|]]. |
| |
| Der Grafiktreiber wird im OS zuerst geladen (GRAF, GRAF14, ...), dann BASIC gestartet. Bei Memory end ist 32700 (oder kleiner) anzugeben. Dann kann man die Grafik-Programme laden und starten. |
| |
| Wird die Mega-Flash-Software genutzt, ist das analog, erst GRAF14 im OS laden, dann gleich das BASIC-Programm UHR14 laden. Die Mega-Flash-Software startet das Basic mit passendem memory end, lädt das Basic-Programm und startet es. |
===== Der Grafik-Zusatz von robotron ===== | ===== Der Grafik-Zusatz von robotron ===== |
| |
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|]]. |
| |
{{:z9001: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 |
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 ). |
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 |
| |
| |
| <WRAP clear></WRAP> |
| |
===== Nutzung mit BASIC ===== | ===== Nutzung mit BASIC ===== |
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: | Im Erweiterung 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, | * **XPOS** liefert als Rückgabeparameter die x-Koordinate des letzten erreichten Punktes, |
* **YPOS** die entsprechende y-Koordinate. | * **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. | * **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, POINT liefert 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. | * **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. | 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. |