Es gab verschiedene Lösungen für Vollgrafik, ein Standard hat sich jedoch nicht durchgesetzt.
In practic 2/88, S. 87-90 wird eine Schwarz-Weiß-Vollgrafik von Andrea und Ulf Kindermann mit einer Auflösung von 256*192 Bildpunkten beschrieben. Der Aufbau des Grafikspeichers ist kompatibel zum ZX Spectrum.
Die Schaltung ist als separate Grafikkarte entworfen. Bis auf den Austausch einer Lötbrücke gegen einen Schalter sind auf der Grundplatine keine Eingriffe notwendig. Allerdings sind dafür auch 32 Schaltkreise notwendig!
Im Heft „Kleinstrechnertipps 11“ beschreiben Klaus Röbenack und Jork Hobohm eine Schwarz-Weiß-Vollgrafik-Hardware mit einer Auflösung von 256*256 Bildpunkten. Die Hardware selbst ist extrem minimalistisch, es werden nur 4 normale Schaltkreise benötigt. Leider wird keine Software mit veröffentlicht.
Basis ist ein 8K-SRAM.
In der Folge erscheinen 2 zusätzliche Beiträge im Funkamateur, die eine Leiterplattenvorlage und erste Software und im zweiten Artikel einen Zusatz für das HCBASIC+ beschreiben, mit dem vom BASIC aus komfortabel die Grafik genutzt werden kann.
Clever gelöst: Berechnen der Position im Bildspeicher, der Grafik-Block-Nr. und des zu bearbeitenden Bits. Mit selbstmodifizierendem Code genügt eine Routine zum Setzen und Löschen von Punkten. Dabei wird die Kodierung der Bitbefehle SET b,(HL) bzw. RES b,(HL) geschickt ausgenutzt:
;------------------------------------------------------------------------------- ; Punkt setzen ; in: L = X (Zeile), H = Y (Spalte) ;------------------------------------------------------------------------------- ; Adr := 0EC00h + 20h * (Zeile DIV 8) + Spalte DIV 8 ; Bit := 7-(Spalte MOD 8), Block := Zeile MOD 8 ; Punkt (0,0) ist links oben gpoint: call gr_on gpoint1: ld a, h ; Spalte and 7 ; Spalte MOD 8 rlca rlca rlca ; * 8 f. Befehlsberechnung ld b, a ; gpoint2: ld a, 0BEh ; Bitbefehl wird gepatcht ; 0BEh RES 7, (HL) Bit löschen, ; 0FEh SET 7, (HL) Bit setzen ; SET b,(HL) CB C6+8*b ; RES b,(HL) CB 86+8*b sub b ; Bit einrechnen (7-Bit) ld (gpoint4+1), a ; Befehl patchen ; srl h ; Spalte DIV 8 srl h srl h ld c, h ; merken ; ld a, l ; Zeile and 7 ; Block := Zeile MOD 8 out (8), a ; srl l ; Zeile srl l srl l ; Zeile DIV 8 ld b, l inc b ; um 1 erhöhen, damit bei 0. Zeile keine 256 ; Schleifendurchläufe ld hl, 0EC00h-20h ; und hier deshalb wieder 1x Länge Bildzeile abziehen ld de, 20h ; Länge Bildzeile gpoint3: add hl, de ; 20h * (Zeile DIV 8) djnz gpoint3 add hl, bc ; B=0; C=Spalte DIV 8 gpoint4: set 0, (hl) ; Befehl Set/Res und Bit-Nr. wird gepatcht ret
© 1988,1989 by Tino Sander, Springen
Diese Lösung hat als Kern den gleichen Ansatz wie die Vollgrafik aus Kleinstrechnertipps 11, erweitert um die Nutzung des 8K-SRAMs als programmierbarer Zeichengenerator.
Zur Vollgrafik von Tino Sander gibt es ein umfangreiches Paket an Dokumentation und Software.