MBASIC macht Probleme mit Color-Esc-Sequenzen auf FabGL ANSI Terminal

  • Ich probiere mich gerade ein wenig am "Farb"-Design des RunCPM BootScreens auf dem FabGL ANSI Terminal.


    Solange ich die Escape-Sequenzen von innerhalb des RunCPM.ino "ausgebe" (wie z.B. \e[41m ] klappt dies einwandfrei (soweit ich es beurteilen kann).


    Versuche ich die selben Sequenzen per MBASIC zu "emulieren", klappt die nur bis ca. 5-8 Sequenzen lang, dann bekomme ich meist einen unerwarteten Zeilenumbruch - egalb ob auf dem VGA-Screen des TTGO VGA32 ANSI Terminal oder ueber die serielle USB-Console unter (Extra)putty oder Tera Term :(

    Hat jemand evtl. eine Idee, warum die Escape-Color-Sequenzen unter MBASIC sich anders verhalten gegenueber der puren Programmierung innerhalb des RunCPM.ino?




    Escape_Colors.jpg

    • Offizieller Beitrag

    MBASIC schickt nach einer bestimmten Anzahl an geprinteten Zeichen automatisch ein CR LF.

    Versuch mal den Befehl "WIDTH 255", das sollte helfen.


    Mach nach dem WIDTH 255 mal den Befehl FILES (entspricht dem DIR Befehl von CP/M), lachst du dich schlapp!

  • MBASIC schickt nach einer bestimmten Anzahl an geprinteten Zeichen automatisch ein CR LF.

    Versuch mal den Befehl "WIDTH 255", das sollte helfen.


    Mach nach dem WIDTH 255 mal den Befehl FILES (entspricht dem DIR Befehl von CP/M), lachst du dich schlapp!

    BINGO :) Danke!
    MBASIC zaehlt wohl auch die nicht prontbaren Zeichen und bricht um.
    Deine Info kam zeitgleich mit dem selben Befehl als Hilfe in der CP/M-FB-Gruppe ;)


    Mit dem schlapp lachen von DIR konnte ich nur kurz ;) Erst war alles verschoben, weil ich Putty mehr Zeichen Breite angab.

    Wenn ich aber das Fenster nur maximierte und als Einstellung (war gerade als Zufall drin) 80x39 hatte kommt doch war sehr sinnvolles raus :)



    Einmal editiert, zuletzt von guidol ()

    • Offizieller Beitrag

    BINGO :) Danke!
    MBASIC zaehlt wohl auch die nicht prontbaren Zeichen und bricht um.

    Gerne doch. Den Fehler hab ich auch mal ein paar Stunden gesucht.


    Woher soll MBASIC wissen, was druckbar ist und was nicht?

    Aber warum MBASIC überhaupt einen Zeilenumbruch einfügt ist schon ziemlich einzigartig. Und sich bei FILES / DIR sich darauf verlässt.

    Aber Microsoft war schon immer etwas anders.

  • Das geht bestimmt noch feiner, wenn es da diese Grafiksymbole wie bei den Commodores auch gibt oder der Zeichensatz änderbar ist. Effektiv benötigt man nur diese Icons, die die vier Ecken ausmalen und dazu jeweils eine halbhohe Blocklinie oben im Symbol und eine unten im Symbol sowie seitlich auch jeweils halb und das gekreuzte Eckenblockmuster. Man muß dann zwar immer drei Zeilenergebnisse merken, kann damit aber die mittlere Zeile dann in doppelter Auflösung malen - und hat plötzlich statt 80x25 gewaltige 160x50 "Pixel".


    ( Das Spiel läßt sich auch weitertreiben, wird dann aber deutlich komplexer. Es gibt ein sehr schönes relativ aktuelles 64er Demo, was das mit einer Welle macht. )

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

  • Man muß dann zwar immer drei Zeilenergebnisse merken, kann damit aber die mittlere Zeile dann in doppelter Auflösung malen - und hat plötzlich statt 80x25 gewaltige 160x50 "Pixel".

    ( Das Spiel läßt sich auch weitertreiben, wird dann aber deutlich komplexer. Es gibt ein sehr schönes relativ aktuelles 64er Demo, was das mit einer Welle macht. )

    Ha :) mit einer einfachen Idea, die jemand in der CP/M-FB-Gruppe hatte...

    (wir merken uns einfach die aktuelle Farbe - und wenn die nochmal kommt geben wir den Color-Escape-Code nicht nochmal aus)

    Siehe dazu Zeile 181,182 und 205 ;)


    Dann bleiben uns bei "WIDTH 255" neben den 200 "Pixeln" - die ich jetzt genutzt habe pro Zeile - noch 55 fuer die Farbwechsel ;)


    Zusaetzlich habe ich 99 Zeilen eingestellt, also haben wir nun 200x99 - dazu musste ich dann die "Pixel-Groesse" als 6px Char-Groesse einstellen.

    Aber hat sich gegen vorher gelohnt! :)


    • Offizieller Beitrag

    Dann bleiben uns bei "WIDTH 255" neben den 200 "Pixeln"

    Ich bin jetzt nicht ganz bei der Sache, aber wenn du das WIDTH 255 von MBASIC meinst, schaltet WIDTH 255 den Zwangs-Zeilenumbruch komplett aus.

    Du kannst also soviel Zeichen schicken wie du moechtest.


    Aber auch so sehen die Bilder schon gut aus.

  • Ich bin jetzt nicht ganz bei der Sache, aber wenn du das WIDTH 255 von MBASIC meinst, schaltet WIDTH 255 den Zwangs-Zeilenumbruch komplett aus.

    Du kannst also soviel Zeichen schicken wie du moechtest.

    Ach so :)

    Ok - laut MBASIC/BASIC-80 Handbuch:


    BASIC-80 COMMANDOS AND STATEMENTS

    Page 2-84

    2.66 WIDTH


    < integer expression> must have a value in the range 15 to 255.


    The default width is 72 characters.

    If <integer expression> is 255, the line width is "infinite" then BASIC never inserts a carriage return.

  • dann könnte man aber auch mit WIDTH 255 beliebig lange Zeilen drucken und wenn man fertig ist das WIDTH wieder auf normal zurückstellen und das Ganze dann wieder von vorn

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