CP/M-80-Erweiterung GSX - Quellcode?

  • Einer der "Mängel" an CP/M war und ist ja die zunächst mal fehlende Grafikfähigkeit.


    Dazu gab es dann die GSX Erweiterungen, auch für Drucker und Plotter. Ziemlich universell, aber sie brauchen auch relativ viel Speicher - vor allem wenn man ein normales CP/M System mit 64 kB Speicher und ohne Bankswitching hat.

    Andererseits gibt es grafikfähige Terminals und Emulationen (HP, Tektronix), die Liniengrafik darstellen können. Damit kann ich über eigene Routinen Grafiken ausgeben.

    Wenn man mit unterschiedlichen Programmiersprachen arbeitet, wäre eine BIOS-Erweiterung für Terminalgrafik über eine serielle Schnittstelle aber schön. Solche Ausgabegeräte waren in GSX nicht vorgesehen.


    Außer den Handbüchern und Schnittstellenbeschreibungen von Digital Research konnte ich keine Quellen für ein Ersatz-GSX finden - gibt es so etwas (mit ggf. reduziertem Funktionsumfang und Speicherbedarf)?

    Es geht also nicht um die modernen CP/M Rechner, sondern eher um ältere CP/M Rechner mit reiner Terminal I/O.


    Martin

  • Wer sagt das? Das GIOS von GSX-80 stellt durchaus nur Ansprüche an die Grafik-Primitive, die auch ein z.B. Tektronix 4110 (für das m.W. auch irgendwo ein Grafiktreiber für GSX-80 rumschwirrt) erfüllen könnte: Punkte zeichnen, (Poly-)Linien zeichnen, Marker zeichnen, Kreise und Ellipsen, usw. Bitmap-Grafik (die wirklich viel Speicher braucht - GSX nennt das "Cell Array") haben viele der existierenden Treiber sowieso nicht implementiert. Wenn man das wollte, unterstützen die Primitives auch durchaus eine Speicherung der Bitmaps auf dem Ausgabegerät (so dass man nicht jedesmal fürs Zeichnen die Bitmap neu übertragen muss). Für ein gefülltes Rechteck muss man z.B. nur die 4 Koordinaten und einen Füllmusterindex (und nicht etwa die ganzen Pixelchen) übertragen.


    Nur leider kann genau das eben ein Matrixdrucker oder ein einfacher Bildschirm nicht, weswegen die Treiber dafür gleich die ganze Ausgabeseite im Hauptspeicher halten müssen - Ein 4110 kann das schon, es hat einen "Raster Memory Buffer". Wenn man die 4110-Doku und die GSX-80-Doku nebeneinanderlegt, bekommt man auch schnell einen Eindruck, welches Ausgabegerät sich die GSX-Schreiber denn so vorgestellt haben - die Grafikprimitive passen exakt übereinander.

    Wenn man also ein 4110 statt eines Epson-Nadeldruckers nimmt, vermehrfacht sich der Hauptspeicher gleich - der Computer braucht keinen Bildschirmspeicher mehr, der liegt ja auf dem Terminal. Bitmaps transferiert man nur einmal (z. B. von Floppy) dahin in den Rasterbuffer (Hintergrundspeicher) und transferiert Ausschnitte davon in das gewünschte Bild. Braucht alles keinen Hauptspeicher.


    Der Fakt, dass real existierende GSX-Implementierungen (die verbreitetste dürfte die für die Amstrads sein) so viel Speicher brauchen, liegt einfach daran, dass sie eben nicht auf ein intelligentes Grafikterminal oder anderes Ausgabegerät mit lokalem Speicher zurückgreifen konnten.


    Tobias

  • Fritz, Danke, schau ich mir mal an, wenn es wieder möglich ist

    404 - Datei oder Verzeichnis wurde nicht gefunden.


    tofro Ah ja, so ein Tektronix-Treiber scheint zu esistieren.

    Ich habe inzwischen gefunden "xterm Tektronix 4014 Driver Version 1.2 - Copyright (C) 2014 by Udo Munk". Muss ich mal anschauen was da an Quellcode vorhanden ist.


    Danke für die weiteren Erklärungen - mein Wunsch wäre eine sehr kleine, eher subset GSX Erweiterung für vektororientierte Ausgabegeräte - bitmaps brauche ich nicht unbedingt. Wichtiger wäre mir das die Erweiterung mit gerätespezifischem Teil/Treiber möglichst weniger als 10 KB Speicher kostet, damit z.B. ein Turbo-Pascal noch passt und Luft hat.

    .

  • Auf einer meiner Disketten für die NCR DMV ist der Quellcode für den Grafiktreiber für den NEC 7220 drauf - allerdings für GSX-86 (also A86-Quellcode).


    Ebenfalls für die DMV gab es eine "kleine" Grafikerweiterung im CP/M-80-Modus, NCRGRAF. Auch hierfür scheint der Quellcode vorhanden zu sein, vielleicht kannst Du damit was anfangen.

    Man lädt den Treiber "NCRGRAF.COM", danach stehen in MBASIC zusätzliche Grafikbefehle zur Verfügung.





    Dann gab es auch eine Turbo-Pascal Grafik-Erweiterung, aber die liegt mir nur in kompilierter Form vor.

  • Danke für die INfo, Toast_r Soll ich das Verzeichnis synchronisieren ?


    Hier ist ein statischer Mirror.

    Mit freundlichen Grüßen


    fritz

  • Danke, fritzeflink ! Der andere Link funktioniert, wenn auch mich die DDNS-Domain wundert.


    Mein erster 16-bit-Computer war ja der Genie16, der in Wirklichkeit Advance86 hiess.

    Hergestellt von Ferranti, einem Player im britischen Militärisch-Industriellen Komplex.

    Mit einem typisch englischen Design...

    Den Rechner kaufte ich mir vom Erlös meines Apple II, welchen ich mit Glück noch zu einem guten Preis loswerden konnte, bevor die Preise wegen den Taiwan-Klons in den Keller gingen.


    Daran erinnerte ich mich erst das Ende des Genie-16-Handbuchs auf Deiner Seite wieder.

    Der war leider -im Gegensatz zu dem was in dem o.g. Link geschrieben wurde!- nicht völlig IBM-kompatibel.

    HDD wurde nämlich nicht unterstützt... weswegen ich das Ding bereits 1986 wieder verkaufte.


    Sorry für OT...

  • Danke, für das GSX-86 (CP/M-86) scheint es deutlich mehr Material zu geben - GSX-80 war ja auch nur relativ kurz auf dem Markt.


    Für GSX-80 ist die Lage wohl recht dünn, vor allem was Dokumentation und Beispiele zum Schreiben eigener Treiber angeht.

    Inzwischen habe ich mich auf der Suche nach GSX-80 Komponenten durch einige Archive mit CP/M Dateien gegraben.

    Gefunden habe ich einige Gerätetreiber in Form von .PRL modulen, leider aber keine Quelltexte oder weitere Erläuterungen dazu.

    Dabei handelt es sich wohl um zwei Generationen von Treibern (1982, 1983).


    In einem .dsk Image zum Z80Pack habe ich einen Treiber von Udo Munk für "xterm-Tektronix" gesichtet, konnte ihn aber bislang noch nicht extrahieren.

    Dem Namen nach scheint er Tektronix-Grafik zu unterstützen, wie sie vom Unix xterm implementiert ist.

    Das wär schon etwas - vielleicht komme ich ja noch an den Quellcode. Ich würde gerne noch einen einfachen für mein HP 2648A schreiben.


    Außerdem habe ich gelernt, dass ich zwei unterschiedliche GSX-80 Programmers Guides von DR habe.

    Der ältere enthält rudimentäre Quellen für einen Treiber in RATFOR (d.h. FORTRAN), im späteren wurden diese dann weggelassen.


    Einen GSX-80 Users Guide, den es geben soll, habe ich bislang nicht gefunden


    Weiterhin habe ich in c't Heften von 1982/83 eine Artikelserie zu GSX gefunden. Auch im BYTE Magazin gab es mal einen Übersichtsartikel.

    - Gibt es da vielleicht in anderen Zeitschriften mehr zum Schreiben von GSX-80 Treibern?


    Hier mal meine Tabelle was ich bislang an Treibern gefunden habe (für CP/M 2.2)


  • Du hast alle Treiber für die Amstrad CPCs nicht auf deiner Liste. Wohl am meisten Infos dazu gibt's hier


    Die Treiber für den Amstrad laufen allerdings nur mit CP/M 3, weil sie darunterliegende RSX-Extensions (die's nur dort gibt) aufrufen, um die Grafikroutinen im ROM anzusprechen.


    Tobias

  • Du hast alle Treiber für die Amstrad CPCs nicht auf deiner Liste. Wohl am meisten Infos dazu gibt's hier


    Die Treiber für den Amstrad laufen allerdings nur mit CP/M 3, weil sie darunterliegende RSX-Extensions (die's nur dort gibt) aufrufen, um die Grafikroutinen im ROM anzusprechen.


    Tobias

    Hilfe ... bin in der CP/M 2.2 Welt gefangen ...

  • GSS-4010 (aka DR Access 10) war der Terminal-Emulator, um Tektronix Grafik auf CP/M Rechner darstellen zu können.

    Afaik war auch ein passender GSX-80 Treiber dabei. Leider findet man aber die Software selbst überhaupt nicht mehr.

    Nur noch ein paar Newsmeldungen (GSS = Graphic Software Systems, Inc - Distributor war aber Digital Research):


    https://www.computerwoche.de/a…rodukt-ist-an-die,1177844


    und zu DR Access10: http://www.yqcomputer.com/479_1883_1.htm


    Es gibt wohl auch ein DR-Manual dazu: http://vekinis.com/Old_Softwar…dia/DSC01641/DSC01641.jpg


    Später noch hinzugefügt... fritzeflink hat wohl zumindest die Auflistung, was es alles für Versionen von DR Access-10 gab, in einem Dokument abgelegt:

    http://oldcomputers-ddns.org/p…es_vol2_1,2,3_bw_full.pdf <- auf Seite 10 unten

  • [...]

    In einem .dsk Image zum Z80Pack habe ich einen Treiber von Udo Munk für "xterm-Tektronix" gesichtet, konnte ihn aber bislang noch nicht extrahieren.

    [...]

    Inzwischen habe ich genügend Infos gefunden, vor allem dank Udo Munks Web-Site.


    Meine Probleme mit dem Lesen der extrahierten *.dsk Imagedateien konnte ich auch klären: mit gunzip und tar unter MSYS hat es funktioniert, vorher hatte ich die *.tar.gz Dateien mit WinZip geöffnet und das hat beim Extrahieren aus jeden CR (0x0D) ein CR/LF Pärchen gemacht - glaubte wohl dass die Image-Dateien Textdateien seien. Und damit hat dann natürlich nichts mehr gepasst. Ob das alle WinZip Versionen so machen, weiß ich nicht, aber im Zweifelsfall also lieber die Unix Tools verwenden.

  • Nachdem ich nun in Schwung gekommen war, habe ich schnell mal noch drei einfache GSX-80 Treiber für CP/M 2.2 geschrieben:

    Insbesondere der Postscript-Treiber hat mich ein paar Tage mit DDT gekostet, wegen der Sektor-orientierten Dateiausgabe in CP/M. Der GEM Treiber war dann relativ schnell implementiert.

    Für meine Zwecke habe ich vorrangig die Vektorgrafik- und Text-Funktionen implementiert, keine Bitmaps oder Füllungen. Bei den beiden Metafile Treibern sind die Cursorpositionierungsbefehle nicht so sinnvoll und deshalb weggelassen.

    Schließlich sollten die Treiber auch nicht zu groß werden.

    Getestet habe ich mit CBASIC und kleinen Turbo Pascal Progrämmchen. Die GEM und Postscript Metafiles habe ich mit Corel Draw einlesen können.

    Diese ersten Versionen absolvieren auch das DEMOGRAF Testprogramm (für Postscript und GEM muss man dort am Ende aber noch ein CLOSE WORKSTATION anfügen, damit die Datei vollständig ausgeschrieben und das Inhaltsverzeichnis aktualisiert wird).

    Ein paar kleine Unschönheiten werde ich noch gelegentlich ändern, aber im Großen und Ganzen sollten die Treiber funktionieren ("famous last words").

  • Als ich auf BITSAVERS nach neuen Dateien suchte, fand ich ein im August neu dazu gekommenes Quellcode Archiv mit vielen GSX-80 und GSX-86 Dateien.


    Neben den GSS/GKS Bibliotheken und und Tektronix Emulatoren sind dort auch viele gerätetreiber-Quellen enthalten, die vorher nicht verfügbar waren.

    Ich habe mal aus den Quellen eine Liste der GSX-80 Treiber zusammengestellt (die meisten oder alle sind auch als GSX-.86 Varianten verfügbar).

    Die Kerntreiber sind alle in RATFOR (FORTRAN) geschrieben.


    Martin


    GSX Sources BITSAVERS

    (http://bitsavers.informatik.un…/DigitalResearch/?C=M;O=D)


    Source code for GSX-80 device drivers


    sskeldd skeleton device driver for testing


    dd100v ID 100V terminal

    dd2647 HP2647

    dd4012 TEK 40xx

    dd4025 VT100 with Retrographics

    dd4662 Tektronix 4662 plotter

    dd512 AED 512 terminal

    dd6211 Ramtek 6211 terminal

    ddadvn Northstar Advantage

    ddaret ADM 3A with Retro-Graphics

    ddbtur Bascom-Turner 1100 plotter

    ddcsa1 Control Systems Artist I (NEC 7220)

    ddfcg Florida Computer Graphics terminal

    ddgn2a ADM 5 GEN II Digital Engineering Device Driver

    ddgn2a LSI ADM5 GEN.II Retro-Graphics

    ddgn2b ADDS Viewpoint GEN.II Retro-Graphics

    ddgn2c Televideo 910 GEN.II Retro-Graphics

    ddgn2d Datamedia Colorscan 10 terminal with

    ddgn2e Televideo 910 GEN.II Retro-Graphics

    ddtr24at Transiac TR1024

    ddtr24 VT125 terminal

    ddv185at VT185 terminal

    ddvret VT100 with Retrographics

    ddotrn Otrona Attache


    dd7220 Hewlett Packard 7220 pen plotter

    dd7470 Hewlett Packard 7470 pen plotter

    ddhi3m Houston Instruments HI PLOT DMP-3

    ddhi3m Houston Instruments DMP3

    ddhi7m Houston Instruments HI PLOT DMP-7

    ddw636 Watanabe WX 4636 Plotter

    ddw675 Watanabe WX4675 six pen plotter

    ddstrb Strobe pen plotter


    ddids IDS printer

    ddidsc IDS color printer

    ddmx80 Diablo 630 Daisy Wheel printer

    ddmx80 Epson MX-80 Printer

    ddokid Okidata Microline 92 Printer

    ddprtx Printronix P300 and P600 printers