Hello, Guest the thread was viewed1.1k times and contains 11 replies

last post from olly at the

Nette Person mit 80 Zeichen, Farbe, CP/M und MBasic gesucht

  • Könnte mir eine nette Person mal ein kleines BASIC Programm unter CP/M in MBasic starten und davon einen Screenshot anfertigen damit ich eine Farbreferenz habe?

    Code
    1. 5 FOR B = 0 TO 15
    2. 10 FOR C = 0 TO 15
    3. 15 PRINT CHR$(27);CHR$(27);CHR$(27);CHR$(B+48);
    4. 20 PRINT CHR$(27);CHR$(27);CHR$(27);CHR$(C+32);CHR$(65+C);
    5. 30 NEXT C
    6. 35 PRINT CHR$(27);CHR$(27);CHR$(27);CHR$(7+32);
    7. 37 PRINT CHR$(27);CHR$(27);CHR$(27);CHR$(48);
    8. 38 PRINT
    9. 40 NEXT B


    Ich implementiere gerade einen Z80 Emulator auf einem RP2040 welcher unter anderem als Feature hat das er ADM-3x Kontrollcodes nach VT100/ANSI umsetzt.

    Da der C128 dabei wohl eine Erweiterung dieser Kontrollcodes für Farben hat, ich aber partout keine CP/M Disk mit MBasic drauf für den C128 finden kann, kann ich das Verhalten des Originals nicht testen.
    Meine Emulation bringt das hier hervor:

    [attach='450224','none',true][/attach]


    Und nun wollte ich halt gerne wissen wie nah ich dran bin.


    Kleine Randbemerkung die ich dabei herausgefunden habe, minicom ignoriert die "hohen" Farben, sprich die ANSI Codes ESC[90m und ESC[100m. :wand

  • Übrigens, der Versuch die C128 CP/M Disketten mit den cpmtools zu beackern fördert auch interesannte Ergebnisse zu Tage. :emojiSmiley-28:

    Code
    1. (base) ➜ Downloads cpmls cpm.622-5002336.d81 *.*
    2. cpmls: cpmfs.c:704: cpmglobfree: Assertion `dirent' failed.
    3. [1] 226022 IOT instruction (core dumped) cpmls cpm.622-5002336.d81 *.*



    Steht auch leider nix in der diskdef für...

  • Die 16 Farben des VDC sollten exakt den 16 CGA Farben entsprechen, bzw den ersten 16 EGA Farben.


    Es wird nämlich nur ausgegeben, wie hoch die RGB anteile sind und ein Intensitätslevel.
    So gesehen macht der Monitor die Farben, nicht der Chip

  • Was nachher im Bildschirmspeicher steht und vom KERNAL, oder hier vom BDOS, entgegengenommen wird hat bei Commodore ja traditionell wenig gemein.
    Zumindest sahen die Farben von Gorilla für CP/M wenn ich die Farben eins zu eins übernehme falsch aus, entsprachen nicht den Screenshots im Github des Projektes.
    Mit der Umsetzungstabelle hier funktionierten sie dann:

    Sprich die ADM-31 Emulationsschicht im 128er CP/M wandelt die so um das die Farbwerte zuerst für den VIC passen und übersetzt sie dann wohl für den VDC.

  • Könnte mir eine nette Person mal ein kleines BASIC Programm unter CP/M in MBasic starten und davon einen Screenshot anfertigen damit ich eine Farbreferenz habe?


    BastetFurry
    Leider kam bei Deinem Programm keine Farben bei mir raus :(

    Deshalb habe ich mal ein eigenes Programm geschrieben.



    ANSI-Farben habe ich nach folgender Seite genutzt (siehe Color Codes Bereich).


    Die normalen Vordergrund-Farben gehen von 30-39 und der normale Hintergrund von 40-49.

    In Bright-Modus geht fuer den Vordergrund von 90-97 und Hintergrund 100-107.

    Wobei im normalen Modus der erste (30 black) und letzte (39 default) Hintergrund gleich ist.


    PS: Die Umwandlung der Zahlen fuer die ANSI Codes mit STR$ und MID$ werden noetig, weil man die Zahlen nicht als Zahl/String direkt mit PRINT nutzen kann.

    Bei Zahlen wird ansonsten vorne und hinten ein Leerzeichen an die Zahl angehaent.
    Bei Strings (umgewandelte Zahlen per STR$) wird immer noch vorne ein Leerzeichen angehaengt.

    So wandle ich auf String und schneide mit dem MID$ vrone das eine Leezeichen ab.


    PS2: WIDTH 255 ist notwendig, da wir mit den ANSI-Codes mehr (versteckte) als 80 Zeichen pro Zeile ausgeben (255 ist der Maximal-Wert pro Zeile) - ansonsten kann die Zeile zerstueckelt werden. :(


    Das gibt dann (mit RunCPM v6.3 auf dem VGA32) und Tera Term folgenden Screenshot:



    In puTTY sehen die Farben kaum anders aus ;) :




    und auf dem VGA-TFT am VGA32 sieht das so aus:


  • guidol
    Deine Implementationen nutzen ja auch alle ein VT100 Terminal direkt, ich habe für meine Kiste hier einen ADM-3A/31 Übersetzungslayer geschrieben der von dem laufendem System die Controlcodes eines ADM Terminals auf VT100 übersetzt. Aber trotzdem danke für die Referenzscreenshots.

    RayJameson genau das hilft mir gerade! <3

    Erkenntnis Eins, der VDC kann wohl keine Hintergrundfarbe pro Zelle, Zeile 15 färbt einfach nur den ganzen Bildschirm.
    Erkenntnis Zwei, Farbe 3 sollte ich überdenken.


    Nebenerkenntnis, der VICE kann entweder nicht in den 80 Zeichen Bildschirm pasten oder nicht nach CP/M. :emojiSmiley-28:

  • RayJameson deiner Disk lag auch ein Tool "C128TERM.BAS" bei, sehr schön und praktisch.

    Bitte die Großkleinschreibung ignorieren, das ist beim kopieren ausm Vice passiert, der macht wohl aus allem Großbuchstaben wenn man da was ausm Bildschirmspeicher kopiert.


    128er im Vice:


    Meine Implementation im Gnome-Terminal:

    Die Farben sind wohl so richtig.

    Das ganze einmal im Cool-Retro-Term

    Der verfälscht ein wenig die Farben, kann ich also ignorieren.


  • Ich habe auf meinen c64 eingetippt, das kam bei mir raus: