TriOS R48 – Grafikmodus G0

Ich habe gerade R48 von TriOS released. Diese Version enthält nun den Grafikmodus G0 – neben den verschiedenen Textmodi der erste standardisierte Grafikmodus auf dem Hive. Mit dem Tool „g0test“ kann der Modus getestet werden und man bekommt dort auch einen Eindruck von den Möglichkeiten. Der G0-Modus ist über das IOS direkt und sehr komfortabel in Anwendungen nutzbar. Als Einstieg für erste Experimente mag der Quelltext von g0test dienen.

So, nun ist also auch Grafik auf dem Hive so einfach wie die verschiedenen Soundformate nutzbar: Egal ob Diagramme, Kurven, Animationen oder Games – das kann jetzt alles sehr einfach und mit ordentlicher Darstellungsgeschwindigkeit realisiert werden. Der G0-Modus ist rasterorientiert, aber mit seiner superschnellen Vektorengine primär in Richtung Vektorgrafik gedacht. Die maximale Leistung erreicht er bei Vektorobjekten (g0_vec) mit einer Leistung von ~18.000 Linien pro Sekunde. Das sind natürlich Maximalwerte, wenn man diese Funktion in einer Schleife mit festen Parametern aufruft. Aber durch entsprechende Parallelisierung kommt man mit den Propchips durchaus auch real in diese Nähe, wenn es nötig sein sollte. Das Testprogramm spricht die G0 Funktionen ganz klassisch in einer einfachen Routine unter Nutzung nur einer COG an.

Was kann der Treiber:

  • TV-Modus 256 x 192 Pixel
  • Farben: Tile (16×16 Pixel) sind 4 aus 64 Farbe wählbar
  • Einbindung des Graphics-Objektes für schnelle Vektorgrafik
  • Animation: zwei Screens für flickerfreie Darstellung von Animationen
  • Einbindung der Grafikfunktionen per IOS
  • Momentan ist nur eine Version mit Keyboard verfügbar, Maus folgt
  • Aufruf über IOS-Funktionen
  • Statischer Modus: Zeichenbefehle werden direkt in den Darstellungspuffer geschrieben und sind auch sofort sichtbar.
  • Dynamischer Modus: Es wird der Dualbuffer verwendet; Zeichenbefehle zeichnen in den Schattenpuffer, welcher erst mit der Funktion g0_copy in den Darstellungspuffer übertragen und sichtbar wird. Das ermöglicht bei Animationen flickerfreie Darstellung.
  • ~3,5 KByte freien Heapspeicher in Bellatrix für Vektorobjekte, Spriteobjekte und Stringpuffer

Die enthaltenen Funktionen:

  • g0_keystat:wert – tastaturstatus abfragen
  • g0_keycode:wert – tastaturcode abfragen
  • g0_keyspec:wert – sondertasten abfragen
  • g0_keywait:wert – warten auf taste
  • g0_clear – aktiven screenpuffer löschen
  • g0_copy – zeichenpuffer –> anzeigepuffer
  • g0_color(n) – zeichenfarbe wählen
  • g0_width(n) – stiftbreite setzen
  • g0_colorwidth(n,m) – zeichenfarbe/stiftbreite setzen
  • g0_plot(x,y) – punkt zeichen
  • g0_line(x,y) – linie zu punkt zeichnen
  • g0_arc(x,y,xr,yr,angle,anglestep,steps,arcmode) – kreis zeichnen
  • g0_vec(x,y,vecscale,vecangle,heap_index) – vektorsprite zeichnen
  • g0_vecarc(x,y,xr,yr,angle,vscale,vangle,heap_index) – vektorsprite an kreisposition zeichnen
  • g0_pix(x,y,pixrot,heap_index) – pixelsprite zeichnen
  • g0_pixarc(x,y,xr,yr,angle,pixrot,heap_index) – pixelsprite an kreisposition zeichnen
  • g0_text(x,y,heap_index) – text zeichnen
  • g0_textarc(x,y,xr,yr,angle,heap_index) – text an kreisposition zeichnen
  • g0_textmode(x_scale,y_scale,spacing,justification) – textparameter setzen
  • g0_box(x, y, box_width, box_height) – gefülltes rechteck zeichnen
  • g0_quad(x1, y1, x2, y2, x3, y3, x4, y4) – gefülltes viereck zeichnen
  • g0_tri(x1, y1, x2, y2, x3, y3) – gefülltes dreieck zeichnen
  • g0_printdec(x,y,n,digit,string_ptr,heap_index) – dezimalzahl ausgeben
  • g0_colortab(ptr) – farbtabelle senden
  • g0_screen(ptr) – tilescreen senden
  • g0_datblk(heapadr,index,len) – heapdaten senden
  • g0_datlen:len – heapgröße in bellatrix ermitteln
  • g0_dynamic – dynamischen modus aktivieren (double buffer)
  • g0_static – statischen modus aktivieren
  • g0_reboot – reboot chipcode
  • g0_load – g0-code laden
TriOS (PropForth, Standard Regime) Source (3450 Downloads )