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.

    .

  • Der oldcomputers-Server von Fritz ist auf meinen Webserver umgezogen.

    Fehler (vor allem 404), die dort auftauchen, bitte an mich melden, damit ich da eingreifen kann.

    Danke!

  • Geht wieder - ich hatte das gleiche Problem.


    In einem anderen Fall war das Problem der Cache meines FF, aber hier habe ich das Verzeichnis noch mal synchronisiert.

  • 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.

    Files

    • ncrgraf.zip

      (93.17 kB, downloaded 1 times, last: )
    • DMV GSX-86.zip

      (61.56 kB, downloaded 1 times, last: )

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

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


    Hier ist ein statischer Mirror.

  • 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...

  • Zu Genie 16 / TCS http://oldcomputers-ddns.org/public/pub/rechner/eaca/tcs/tcs_history_ger.pdf


    habe ich von Frank Seger auf einer CD mit Informationen zu seiner Sammlung und Geschichte bekommen. Leider habe ich Frank seit einigen Jahren nicht mehr erreichen können.


    OT Ende

  • 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").