"Auf den Schirm!" - HPGL Dateien via Data Becker Grafikkarte und HSG auf dem CBM ausgeben

  • Wurstelwurstel, werte Computerschrottrecycler:


    SVG in Inkscape -> Ba‘s selbstprogrammierter Converter -> 8032 mit Data Becker Grafik :)


    Ratet mal... nächster Schritt: Einbindung HP Plotter. Dazu brauche ich aber erstmal den funktionsfähigen von Ralph_Ffm , welchen ich endlich mal kontaktieren muss. :D

    Einmal editiert, zuletzt von CBM_Ba ()

  • Ein paar neue Erkenntnisse schwirren durch meine wirren Windungen, Foristen!


    Zur Erläuterung:

    Die SVG-Datei wird natürlich in Inkscape in das HPGL-Dateiformat umgewandelt, um in einem Plotter verwurstelt werden zu können. HPGL ist eigentlich total simpel und besteht zu 95% aus stupiden Koordinatenangaben.

    Das aktuelle Basicprogramm ist relativ rudimentär und arbeitet Befehle mit "Pen DOWN" einfach als "grüne" (sichtbare) Linie mit vier Koordinaten (x1,y1 to x2,y2), sowie Befehle mit "Pen UP" als "schwarze" (unsichtbare) Linie mit ebenfalls vier Koordinaten ab.

    Man sieht es auch an diesem Saturn-Bild ganz gut, da zwischen den Linien im Ring außenrum Lücken sind. Ich muss die Software nun so umschreiben, dass sie auch die Verbindungen von Linie zu Linie als eigene Linie zeichnet. :)

    Klar: Im Rechner gibt es ja keinen "Pen", der permanent zeichnet. Deshalb die Unterbrechungen, wenn man stur nach vier Koordinaten einen neuen Linienbefehl beginnt. Denn dann beginnt die zweite Linie oftmals nicht da, wo die erste aufgehört hat- und es kommt zur Lückenbildung.

    Ich benötige also jetzt eine Verbindungslinie zwischen den zwei Linien, bestehend aus den Koordinaten x2 und y2 der ersten Linie, sowie x1 und y1 der zweiten Linie. Etwas wirr erklärt- evtl. könnt ihr dennoch folgen.

    Mal sehen, wie ich Programmiersprachenlegastheniker sowas hinbekomme.


    Evtl. mach ich dazu einen eigenen Thread auf.

  • Einfach jede Zeile zwei mal durchlaufen und beim zweiten Durchlauf Pen Up und Pen Down vertauschen. Wenn jede Zeile mit einem Pen down beginnt müsste das klappen.

    :tuschel: Suche: BeBox, Commodore 900, KIM-1 :tuschel:

  • Verstehe jetzt nicht ganz warum so ein Bild in einzelne Linien mit 2 Endpunkten aufgelöst wird.

    Normalerweise macht man einen Linienzug mit

    PU;PA<Anfang des Linienzuges>;PD;<2.Punkt>;PA<3.Punkt>;PA<4.Punkt> usw. und am Ende wieder PU

  • Einfach jede Zeile zwei mal durchlaufen und beim zweiten Durchlauf Pen Up und Pen Down vertauschen. Wenn jede Zeile mit einem Pen down beginnt müsste das klappen.

    Mmmh, das klappt so nicht, weil PU und PD wirklich nur sehr selten benutzt werden.

    Ich zeig demnächst mal so eine Datei. ;)

    Verstehe jetzt nicht ganz warum so ein Bild in einzelne Linien mit 2 Endpunkten aufgelöst wird.

    Normalerweise macht man einen Linienzug mit

    PU;PA<Anfang des Linienzuges>;PD;<2.Punkt>;PA<3.Punkt>;PA<4.Punkt> usw. und am Ende wieder PU

    Ja, das stimmt in etwa schon (bis auf das PA, das kommt nicht vor).

    Aaaaber: Welchen Befehl soll ich mit der Data Becker Grafik dafür verwenden? Ich bräuchte ja irgendeinen Befehl, der stur die Koordinatenwerte auf den Bildschirm zaubert. Es gibt aber meines Wissens nach nur Befehle mit Anfang und Endkoordinate.

  • Jungs, ich glaub, ich hab's!


    Der Saturn von weiter oben ist jedenfalls jetzt PERFEKT ohne Unterbrechungen. :)

    Ich probier noch ein wenig rum und melde mich später.


    Frohes Fest,

    der Grafikzwangauslebende

    Einmal editiert, zuletzt von CBM_Ba ()

  • Ok, die 8280 auf dem Tisch fotografiert, dann via Inkscape in ein SVG und danach in ein HPGL-File portiert, wirkt jetzt eher ein wenig abstrakt... ABER ES FUNKTIONIERT! :love:


    Original:


    SVG:


    Vor der Programmoptimierung:


    Ergebnis nach Programmoptimierung:


    Jetzt kann ich in aller Ruhe mit den Auflösungen der Bilder, sowie DPI-Einstellungen der zu generierenden HPGL Datei spielen, um das "Darstellungsoptimum" für die Data Becker Grafik rauszubekommen.


    HERRLICH! Unserem Hobby derart zu frönen, erquickt mich in einer nicht in Worte zu fassenden Art und Weise, holde Interessensteiler!


    Nun denn- lasst euch überraschen, ich werde euch baldigst mit weiterem Grafikzauber die Hosen ausziehen.


    Hochachtungsvoll,

    der Montagsmaler

    Einmal editiert, zuletzt von CBM_Ba ()

  • Sehr sehr sehr nice.

    Hauptsächlich dank deiner Grafikkartennachbauwilligkeit, werter Entflechter! :)


    Und jetzt stellt euch das Ganze in Kombination mit dem drangehängten 7475A Plotter vor?! Meine Entzückung würde Dimensionen erreichen, von denen keinesfalls mehr jugendfrei hier berichtet werden könnte. :D


    Über Nacht lass ich jetzt mal einen C64 aufs träge Phosphor zwirbeln... morgen gibts das Bild.


    Gutes Nächtle, Zunftgleiche.

    Einmal editiert, zuletzt von CBM_Ba ()

  • Pixelzauber AHOI!




    Und jetzt haltet euch fest: Mit !GSAV „Dateiname“ kann man das Bild in Sekunden sichern, es hat dann 64 Blocks. Geladen wird es mit !RECALL „Dateiname“- ebenso schnell.

    Da tun sich weitere Möglichkeiten auf! :)

  • Ich benötige also jetzt eine Verbindungslinie zwischen den zwei Linien, bestehend aus den Koordinaten x2 und y2 der ersten Linie, sowie x1 und y1 der zweiten Linie. Etwas wirr erklärt- evtl. könnt ihr dennoch folgen.

    Ich habe sowas vor einiger Zeit auch mal gemacht, für meine Genie III High Resolution Grafik.


    Ich habe den Code aus einem grösseren Projekt entnommen. Kreise habe ich m.W. noch gelassen, bei Beziere-Kurven habe ich kapituliert.

    Ist allerdings in C geschrieben und nicht pflegeleicht. Ich musste da einiges zusammenstauchen.


    Wenn ich da weiterhelfen kann, sag Bescheid.

    Dafür darfst du mit mal erklären, wie du das mit dem Inkscape gemacht hast. Das ist cool.


    HPGL ist eigentlich total simpel

    Wenn man nur mit Linien arbeitet stimmt das.

    Aber HPGL zeichnet Kreise, Bezier-Kurven und auch komplette Tortengrafiken in einem Befehl. Schraffur und solche Kleinigkeiten inclusive.

    Ausserdem unterscheidet es Plot- und Raster-Devices, also Bildschirme. Das ist allerdings meist nur wichtig wenn man mit Farbe arbeitet und sich um die richtige Hintergrundfarbe kümmern muss. Alles in schwarz zeichnen auf einem Bildschirm ist der berühmte schwarze Adler auf schwarzem Grund.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • funkenzupfer

    Ich geh dann später am Rechner drauf ein, bin schnell unterwegs! ;)


    Ein Bild möchte ich euch aber nicht vorenthalten- HPGL jetzt auch auf der Commodore Highres Karte in 512x512. Und da zeichnet er wirklich exakt so, wie ein Plotter es tun würde, denn die hat die passenden Befehle. :)


    Wenn sie fertig ist, die Columbia, dann gibts das Fertigbild:


    Ich bin aber guter Dinge, dass sie passend rauskommen wird.


    Edit: Ging doch schneller…




    Wahnsinn, ich teste später mal die angebliche Hardcopy Funktion mit 8023P Drucker. :D

  • Jungs…. Hardcopy mit nem 8023P funktioniert allen Ernstes?! :D

    Ok, es gibt während des Druckens irgendwie minimale Störungen, die dann als Punkte mitgedruckt werden (und man sie auch auf dem Bildschirm sieht)- aber hey!!! ES GEHT!


    Einfach nach Fertigstellung „HCOPY“ eingeben und der Drucker legt los. Ich fasse es nicht!?




    Und nein, kein Fake- der Drucker druckt es einfach aus.


    Heute war ein GUTER TAG, Foristen!


    edit - Thread ist hier zu finden:

    Einmal editiert, zuletzt von CBM_Ba ()

  • Jungs…. Hardcopy mit nem 8023P funktioniert allen Ernstes?! :D

    Ok, es gibt während des Druckens irgendwie minimale Störungen, die dann als Punkte mitgedruckt werden(und diese auch auf dem Bildschirm zu sehen sind)- aber hey!!! ES GEHT!


    Einfach nach Fertigstellung „HCOPY“ eingeben und der Drucker legt los. Ich fasse es nicht!?




    Und nein, kein Fake- der Drucker druckt es einfach aus.


    Heute war ein GUTER TAG, Foristen!

  • Sind die Bilder vom Drucker zu sehen im Post eins weiter oben?


    Für Alle, die hier mal basteln wollen, hänge ich meine HPGL Viewer Versionen an.

    Zum Einen den "HSG HPGL Viewer" inkl. der dazugehörigen Datei "COLUMBIA.HPGL", zum Anderen den "DB HPGL Viewer" inkl. der dazugehörigen Datei "C64.HPGL".


    Die Programme sind noch lange nicht fertig, ich wurstle ja erst seit zwei Tagen (und da nur bruchstückhaft) herum.

    Deshalb: Verändert sie gerne nach eigenem Gusto- oder verbessert sie gleich. ;)

    Ich geh das auch noch an, aber für die ersten Versuche reicht es so.


    Zur Erklärung:

    Nach Programmstart könnt ihr "CATALOG" oder die Kurzform "cA" eintippen, um das Directory des Laufwerks aufzurufen.

    Wenn ihr den Dateinamen aber schon wisst, könnt ihr den natürlich gleich direkt eintippen. Wichtig: OHNE die Dateieindung ".HPGL" !

    Einfach nur "C64" oder "COLUMBIA".

    Merke: Die beiden Dateien sind zum jeweilig anderen Reader inkompatibel!

    Die Reader sind- wie schon geschrieben- unfassbar rudimentär gehalten. Da ist Luft nach oben, grad bei der Auswertung der in der Datei befindlichen Befehle. Aber das seht ihr alles selbst in meinen Listings.


    Wie man das Ganze in Inkscape umwandelt, falls man selbst was zeichnen lassen möchte, ist einfach:

    - Inkscape starten, eine beliebige *.SVG - Datei öffnen (jpeg geht natürlich auch, die müsst ihr dann aber erst in eine SVG umwandeln).

    - Bild markieren und oben die Größe auf 639 x 199 für die Data Becker, bzw. 511 x 511 für die Commodore Karte ändern.

    Will man das Seitenverhältnis der Datei beibehalten, so klickt man das Schloßsymbol zwischen Breite und Höhe an, um die Höhe in passendem Verhältnis zur Breite mit zu ändern. Dann nur die Breite entsprechend auf die jeweiligen Maximalwerte ändern.

    - Datei jetzt "speichern unter" und als Format "HPGL" wählen

    Jetzt muss man für die Data Becker eine Drehung von 270°, für die CBM Karte eine Drehung von 0° (also keine) einstellen. Die Auflösungen sind so ein Thema... bei der Data Becker muss man spielen und erstmal mit kleinen Werten beginnen (am besten mit X-Achse 20 dpi, Y-Achse 40 dpi).

    Ist die Auflösung zu hoch, steigt euch das Programm aus, weil die Koordinatenwerte über dem erlaubten Maximum liegen (die Abfrage, ob die Werte zu groß sind, habe ich aus Performancegründen weggelassen).

    Bei der CBM-Karte müsst ihr symmetrische Werte einstellen, ich habe die Columbia beispielsweise mit 95 x 95 dpi erstellt.

    Aber auch hier könnt ihr spielen.


    Mehr gibt es erstmal nicht zu beachten, bzw. bin ich auch noch nicht weiter.


    Jetzt zu den Features:

    Mit der Data Becker Karte könnt ihr eine Hardcopy auf Datenträger speichern!

    !GSAV „Dateiname“ -> Bild in Sekunden sichern, es hat dann 64 Blocks. Geladen wird es mit !RECALL „Dateiname“- ebenso schnell.

    Ich hänge euch den C64 als Hardcopy mit in das ZIP-File, dann braucht ihr nur die Grafikkarte mit SYS 40960 starten und die Datei mit !RECALL "C64" laden. Vorher evtl. noch mit ?chr$(142) auf Großschrift umstellen, damit es besser aussieht.


    Die Commodore HSG kann das nicht, dafür kann man mit dem Befehl "HCOPY" eine Hardcopy auf nem 8023P ausgeben. Theoretisch müsste es auch auf dem MPP1361 gehen, der sollte baugleich sein.


    Eins noch: Die Columbia mit der CBM Karte ist in ca. 15 Minuten gezeichnet, der C64 mit der Data Becker in knapp unter zwei Stunden.

    Liegt aber daran, dass die Columbia quasi ein extra für Plotter erstelltes Modell ist, während der 64er ein umgewandeltes JPG ist.

    Die Data Becker kann schon auch deutlich schneller sein. Ich muss die Columbia mal passend umbasteln und dann testen.


    Viel Spass am Optimieren und Ausprobieren, holde Grafikjünger!

  • Juhu wertester Kollege! :)


    Ich denke nun zu wissen, was du meinst. Deine HPGL-Dateien nutzen neben den ganz einfachen Befehlen zum Zeichnen von Linien (Punkt zu Punkt) auch Kreise/Füllen/etc...

    Wenn man in Inkscape jedoch über die ganz normale "speichern unter"-Funktion ein HPGL-File generiert, so enthält dies einen "Header" mit ein paar Befehlen, die ich gleich "übersehen" lasse:

    Code
    IN;PU;SP1;PU0,0;

    Danach beginnt der für mich relevante Part. Pen down und Abfahrt mit dem Koordinatenwahn!

    Zum Ende hin wird es auch wieder "doof", deshalb müsste man da noch bisserl im Programm spielen... da kommt dann so Zeug wie:


    Code
    SP0;PU0,0;IN; 

    Das müsste ich noch sauber wegschneiden, meine Programme benötigen diese Infos nicht.


    Tja, dazwischen liegen wie bereits geschrieben nur stupide Koordinatenangaben mit wechselseitig Pen up/Pen down-Befehlen.

    Diese lasse ich entsprechend im Programm behandeln.

    Bei der HSG von Commodore reichen zwei Koordinaten, bei der Data Becker dürfen es vier sein. Deshalb ist die HSG ein wenig flotter, allerdings ist beides relativ träge, weil ich mit GET#1,A$ Zeichen für Zeichen einlesen und die Werte zwischen den Kommas dann eben zu einer Zahl umwandeln lasse. Schneller wäre wohl nur Assembler. Da bin ich mehr als raus. :D


    Aber BITTE GERNE meine Programme abändern und selbst ein bisserl spielen/verbessern!


    Viele Grüsse,

    der Dotanbeter

  • So, die Columbia nun auch auf der Data Becker:



    …und noch ein paar wirre Symbole. Die habe ich mal genommen, um mit den dpi Einstellungen zu spielen:



    Morgen mehr, Grafikliebhaber!

  • Sehr hübsch !


    Du könntest die Datei in Stücken einlesen, an definierter Stelle ins RAM schreiben und dann erst dort auswerten. Das könnte evtl. schneller sein und vielleicht schont es auch die Floppy.


    Also so in der Art:


    Schleife => GET#1,A$ : POKE Adresse+I,A$ : I=I+1 : Abbruch bei I >= gewünschter Wert (256 oder 1024 oder 4096)


    im Speicher von Adresse+I nach unten das letzte ";" suchen - das ist das Ende der aktuellen Auswerterunde

    Auswerten mit Schleife => PEEK Adresse+J bis ein ";" erreicht ist, Befehle PU und PD ausführen, ansonsten einfach weitermachen bis J=Endwert


    jetzt Umkopieren der verbliebenen Daten von > Endwert bis Imax (vom Einlesen) nach Adresse+ (POKE Adresse+ , PEEK Endwert+)


    wieder von vorn aber StartAdresse fürs weitere Einlesen von Floppy ist jetzt die erste Addresse hinter dem UmkopiertenTeil

    wieder (256,1024,4096) Byte einlesen


    Auswerten wie gehabt vom untersten Beginn des Addressbereiches (damit auch der umkopierte Teil ausgewertet wird)

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Das kann ich gerne so versuchen- und wäre für die Floppy in der Tat eine dezente Entspannung.

    In Summe wäre es aber ziemlich sicher deutlich langsamer, weil erst eine Speicherung im Rechner (zumindest in Teilen, denn die Modelle sind teilweise RIESIG) stattfindet, diese dann entsprechend aufbereitet und im Anschluss an die Grafik gesendet werden würde.

    Ach, ich kann da ja noch rumspielen! Heute war leider wenig Zeit und nächste Woche geht definitiv auch garnix (Workshop :( ).

    Da fällt mir grad ein, dass DU Mr. Assembler persönlich bist! Ich seh schon... da muss mal eine Kooperation her. :)

    CBM_Ba ich hab leider fachlich nichts beizutragen...wollt nur mal sagen das des total geil ist ! Classiccomputing vom Feinsten.

    Vielen Dank der erquicklichen Worte! :)

    Ich möchte dazu aber sagen, dass IHR ALLE HIER einen RIESENANTEIL habt, denn alleine macht es keinen Spaß!

    CBM_Ba : Meine Fresse, super klasse was Du da machst.


    Weiß nicht obs hilft: Ich hab bei meinen letzten Plotterspielen mit Autocad viel "sauberere" HPGL Files hinbekommen als mit vektorisierten Bitmaps...

    Autocad! Eine sehr gute Idee, da hast du recht. Vektorisierte Bitmaps sind ja in der Tat komplettes Chaos, siehe mein wahnwitziges Portrait, welches ich im Anfall vollkommenen Narzissmus' in 1:42h von mir zeichnen ließ, um die Macht über die CBM Rechner zu demonstrieren:


    HÄHÄHÄHÄHÄHHUHUHUHUHUUUGNGNGNGN?! :stupid::stupid::stupid:


    Frohes Fest, ich ruf jetzt in der Geschlossenen an... :D


    Im Anhang noch ein paar weitere Hardcopys mit der Data Becker Karte. Los, baut endlich eine auf!!! zitruskeks macht sich die Arbeit doch nicht, damit ich alleinig meine wirren Therapien durchziehen kann.

    zitruskeks : Wenn du magst, kannst du die Hardcopys mit in dein Github zur Karte hängen- dann kann man diese ganz schnell und unkompliziert testen. ;)

  • Ich habe gerade mal den Ausgangs-Thread recherchiert und quergelesen. So wie ich das sehe, ist das alles nicht geeignet für CBM-II. Ist das richtig?


    Das wäre schlecht und auch wieder gut. :grübel:


    Schlecht, weil ich ja nur CBM-IIs habe und so nicht mitspielen könnte. >:(


    Aber auch gut, weil ich eben nicht mitspielen kann und so nicht noch eine Baustelle bei mir eröffne!!! :neinnein:


    Macht mal weiter. Ich lese mit......................... ::pc::

  • Kommt Zeit, kommt CBM 80XX. Leider gilt das nicht für den Platz dafür in meinem Keller! Aber mal gucken...


    Der Plotter wäre ja noch mal größer (schätze ich jedenfalls). Habe irgendwo noch einen C= 1520. DIE Größe kriege ich noch gut unter! :nixwiss: