[CC65] C128er VDC und Uppercase PETSCII, Snippet gesucht

There are 5 replies in this Thread which has previously been viewed 1,167 times. The latest Post (October 4, 2023 at 7:46 PM) was by BastetFurry.

  • Die CC65 Runtime ist ja der Ansicht auf Mixed Case zu schalten und man muss wieder zurück auf Upper Case schalten wenn man PETSCII verwenden will.
    Da aber Conio auch beim VDC direkt auf selbigen zugreift kann ich hier lange versuchen mit dem entsprechendem Controlcode umzuschalten.
    Hat mal wer nen Snippet was unter C mitm CC65 den Zeichensatz wieder richtig stellt?

    Blog: Please login to see this link. - The Seventies Board: Please login to see this link. Please login to see this link.

    Ein Terminal und ein Z80 :D

  • Da aber Conio auch beim VDC direkt auf selbigen zugreift kann ich hier lange versuchen mit dem entsprechendem Controlcode umzuschalten.

    ...ich bin mir nicht sicher, was der Satz ausdrücken soll.

    Aber: Das aktuelle Attribute-Byte steht in Speicherstelle $f1, mit dem höchstwertigen Bit kann man also "zwischen den beiden Zeichensätzen wählen". Falls Dein Programm eh nur auf dem VDC laufen soll, dürfte diese Möglichkeit die simpelste sein.

    Yes, I'm the guy responsible for the Please login to see this link. cross assembler. And some Please login to see this link..

  • Ich habe aktuell fürs erste das hier:

    Code
    #ifdef __PET__
     POKE(59468L,12); // Make sure we are upper case with graphics
    #elif __C128__
     set_c128_speed(SPEED_FAST); 
     videomode(VIDEOMODE_80COL);
     cprintf("\x8e"); // <-- Fast, aber keine Zigarre...
    #endif


    Das geht aber so nicht. Deswegen fruch ich nach nem Snippet was ohne stdio printf auskommt und trotzdem über den Kernel umschaltet.
    Ich nehm auch ein Machinen-Snippet, das wird dann schön in ein asm volatile eingewickelt.

    Blog: Please login to see this link. - The Seventies Board: Please login to see this link. Please login to see this link.

    Ein Terminal und ein Z80 :D

  • SYS 51346 oder $C892 macht das in Basic.

    In Assembly sollte also ein JSR ebendorthin das selbige tun.

    Es wirkt immer auf dem aktuell aktiven Display.

    Programmierung C128, Mega65, X16
    Please login to see this link.

    Gopher Client für den C128
    Please login to see this link.

    3D Druck für Commodore 8-Bit
    Please login to see this link.

  • Ich habe aktuell fürs erste das hier:

    Code
     cprintf("\x8e"); // <-- Fast, aber keine Zigarre...

    Das geht aber so nicht.

    Aaahhh...

    Als ich MacBootMake auf cc65 umgestrickt habe, hatte ich das gleiche Problem. Ein Kommentar in meinem Source von damals besagt: "cc65 seems to garble some control codes when inside strings, so don't put them there".

    Beispiel: Der Code 0x92 für RVSOFF funktioniert wunderbar, der Code 0x8e für UPPERCASE geht nicht.

    Ich hab das nicht weiter untersucht und dann so gelöst: cbm_k_bsout(0x8e); - das funktioniert wie erwartet.

    Yes, I'm the guy responsible for the Please login to see this link. cross assembler. And some Please login to see this link..

  • Ich habs. Und zwar etwas extrem blödes was absolut nicht mit Conio oder sonst was zusammen hängt.

    Code
    cl65 test.c -t c128 -o test.prg -O2 -Wall



    Versus

    Code
    cl65 -t c128 test.c -o test.prg -O2 -Wall



    Der untere funktioniert jetzt wie gedacht, der obere nicht.
    GAH! :cursing:
    Da kann ich ja dreizig Jahre den C Code verfluchen wenn die Reihenfolge der Optionen beim cl65 wichtig ist.
    Hab ich auch nur dadurch heraus gefunden weil ich mal auf blauem Dunst den Code für den 128er aus dem Please login to see this link. heraus bewegt hatte und mir daraufhin Syntaxfehler bemängelt wurden.
    Und ich gehe wetten ein das durch ihre Position das -O2 und das -Wall auch nur Makulatur und Kunst sind.:wand:wand:wand

    Blog: Please login to see this link. - The Seventies Board: Please login to see this link. Please login to see this link.

    Ein Terminal und ein Z80 :D