Darstellung von String-Zeichen im Basic Listing

Es gibt 53 Antworten in diesem Thema, welches 6.006 mal aufgerufen wurde. Der letzte Beitrag (8. Juni 2023 um 08:15) ist von 64erGrufti.

  • Ich hoffe dass ich hier in dem Bereich halbwegs richtig mit dem Thema bin.

    Ich kriege die Brücke von Hex zur Darstellung im Basic-Listing nicht hin. Wenn ich z.B. ein Basic Programm mit Sonderzeichen schreibe:


    10 print"{Commodore+4}" 

    Dann erscheint im Basic-Listing das Dreieck (PETSCII $7F). An der Speicherstelle steht aber in Wirklichkeit eine $9F. Nach welcher Übersetzungstabelle wird das dargestellt?

  • $7F ist der Petscii-Code eines Grafikzeichens. $9F ist der Code des Steuerzeichens, das Du haben willst und das im Quote-Modus durch ein reverses Grafikzeichen dargestellt wird.

    Wenn Du einfach PRINT ASC("{Steuerzeichen}") eingibst, bekommt Du den korrekten Code ausgegeben.

    (und ich nehme an, dass Du VICE benutzt, weil dort im Vergleich zu früher jetzt Control- und Commodoretaste vertauscht sind)

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • und ich nehme an, dass Du VICE benutzt

    Ja stimmt, hatte ich jetzt zum probieren benutzt.

    Wenn Du einfach PRINT ASC("{Steuerzeichen}") eingibst, bekommt Du den korrekten Code ausgegeben.

    Da bekomme ich auch nur 159 angezeigt, was auch wieder nur $9F ist. Meine Frage ist aber, wie komme ich auf das Zeichen, was am Bildschirm im Endeffekt angezeigt wird? Nach welcher Übersetzungstabelle läuft das?

  • Also bei mir ist Commodore+4 nicht $7F und auch nicht $9F und auch kein Dreieck, sondern ein inverser Kreis mit 151/$97.

    Und so steht das auch im Speicher. Irgendwie hast du da dich da vielleicht einfach vertippt?

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Und so steht das auch im Speicher. Irgendwie hast du da dich da vielleicht einfach vertippt?

    Nein, wie Mac Bacon schon schrieb, das habe ich im Vice probiert und wird am C64 nicht Commodore, sondern Control sein. Jedenfalls das Zeichen für Cyan.

  • Nein, wie Mac Bacon schon schrieb, das habe ich im Vice probiert und wird am C64 nicht Commodore, sondern Control sein. Jedenfalls das Zeichen für Cyan.

    Ok, dann ist es eben 159/$9F...aber das steht doch auch so im Speicher. 127/$7F ist das "normale" Dreieck, 159/$9F ist das invertierte, hier das Steuerzeichen für Cyan. Also eigentlich ist alles korrekt so. Oder verstehe ich die Frage nicht?

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Serviervorschlag:

    Bitte melde dich an, um diesen Anhang zu sehen.


    Nicht zu verwechseln mit Bitte melde dich an, um diesen Link zu sehen.  :prof:

    Speicheransicht:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Siehe Commodore 64 Handbuch Seite 136:

    $9F oder CHR$(159) ist die Farbe Cyan

    und der Bildschirmcode 159 (siehe Seite 133-134) ist der invertierte Pfeil nach links (POKE1024,159 (=31+128)).

  • Siehe Commodore 64 Handbuch Seite 136:

    $9F oder CHR$(159) ist die Farbe Cyan

    Evtl. kommt die Verwirrung genau daher. Das Handbuch stellt die gefüllten Flächen der Zeichen natürlich schwarz dar, der ungefüllte Teil ist weiß. Schaut man das Zeichen auf dem Bildschirm an, sieht das (zumindest in den Standardfarben) anders herum aus. Wenn man jetzt das Zeichen für CTRL+4 im Handbuch sucht, kommt man leicht auf die Idee, es wäre 127...

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Genau das ist es. Das dargestellte Dreieck ist aber PETSCII $7F. Aber laut welcher Übersetzungstabelle geschieht das?

    Edit: Bei der $97 ist das genau das gleiche. Das in Basic dargestellte Kreissymbol ist $77

  • Das dargestellte Dreieck ist aber PETSCII $7F.

    Nein, ist es nicht:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Evtl. kommt die Verwirrung genau daher. Das Handbuch stellt die gefüllten Flächen der Zeichen nätürlich schwarz dar, der ungefüllte Teil ist weiß. Schaut man das Zeichen auf dem Bildschirm an, sieht das (zumindest in den Standardfarben) anders herum aus. Wenn man jetzt das Zeichen für CTRL+4 im Handbuch sucht, kommt man leicht auf die Idee, es wäre 127...

    Bitte melde dich an, um diesen Anhang zu sehen.

      Screenshots by Konfuzius

  • Nein, ist es nicht:

    Das ist ja nur die inverse Variante. Aber trotzdem entspricht es nicht dem eigentlichen PETSCII-Code für den Wert im Speicher.

    Wie immer haben wir doch alles da: :D


    Umwandlung Bildschirmcodes in Ascii


    ASCII-Codes in Bildschirmcodes umrechnen (und umgekehrt)?

    Leider ist es das nicht. Die Bildschiemcodes siend wieder anders. Wenn man mal $9F in den Bildschirmspeicher schreibt, kommt wieder ein anderes Zeichen raus.

  • Ich möchte noch etwas zur Diskussion beitragen:

    Bitte melde dich an, um diesen Link zu sehen.


    Die Seite hatte ich mal zusammengestellt, als ich ähnliche Fragen hatte.


    In der ersten Spalte ist der Bildschirmcode, in der zweiten, was auf dem Bildschirm sichtbar ist und in der dritten der CHR$ code. Alles auf einen Blick. Interessante Erkenntnis war für mich noch, dass die CHR$ Codes 224-254 nicht benutzt werden sollten, da es zu Misstverständnissen kommen kann (z.B. bei GET A$).

    Bitte melde dich an, um diesen Anhang zu sehen.

    Sprich: Du kannst das Dreieck mit CHR$ nicht erzeugen. Es dient dort als Steuercode für die Farbe Cyan.

  • Einfach gesagt: Die Steuercodes 0 bis 31 werden im Quote-Modus als invertierte Kleinbuchstaben angezeigt, und die Steuercodes 128 bis 159 werden im Quote-Modus als invertierte Großbuchstaben angezeigt.

    Es ist sinnvoll, dafür auf Klein/Großschrift umzuschalten, damit man nicht in den Grafikzeichen herumsuchen muss. Außerdem sieht man dann, dass die Reihenfolge nicht beliebig ist.

    Besonders beachten muss man nur CR, CS, INST und DEL, da diese auch im Quote-Modus ausgeführt werden.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Ich möchte noch etwas zur Diskussion beitragen:

    Bitte melde dich an, um diesen Link zu sehen.


    Die Seite hatte ich mal zusammengestellt, als ich ähnliche Fragen hatte.


    In der ersten Spalte ist der Bildschirmcode, in der zweiten, was auf dem Bildschirm sichtbar ist und in der dritten der CHR$ code. Alles auf einen Blick. Interessante Erkenntnis war für mich noch, dass die CHR$ Codes 224-254 nicht benutzt werden sollten, da es zu Misstverständnissen kommen kann (z.B. bei GET A$).

    Sprich: Du kannst das Dreieck mit CHR$ nicht erzeugen. Es dient dort als Steuercode für die Farbe Cyan.

    Nicht schlecht die Tabelle. Allerdings verstehe ich die Beschriftungen nicht so ganz und weiß nicht, ob der Treffer nur Zufall ist.

    Wie in meinem Beispiel gezeigt, wird $9F als das Dreieck im Basic-Listing dargestellt. Laut Deiner Tabelle wäre das $DF als Peek-Code und $9F als ASC-Code. Das stimmt ja soweit überein, aber das, was in der Speicherstelle ja wirklich drin steht, ist ja das $9F. Ich würde aber als das, was in der Speicherstelle drin steht, als PEEK-Code von der Bezeichnung her verstehen. Zumindest scheint es (außer mit $00) in diese Richtung zu passen.

  • Ich würde aber als das, was in der Speicherstelle drin steht, als PEEK-Code von der Bezeichnung her verstehen.

    Aber warum? (um mal zum Kern des Problems vorzustoßen :D )

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..