Eigenen Charset in $2000 von Basic aus aufrufen auf dem C16 / 116 / Plus4

Es gibt 18 Antworten in diesem Thema, welches 3.187 mal aufgerufen wurde. Der letzte Beitrag (24. Januar 2017 um 16:25) ist von RKSoft.

  • Wie kann ich von Basic aus auf dem Plus 4 einen eigenen Charset in $2000 oder von mir aus auch $3000 aufrufen bzw. einschalten?

    GruĂź & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Du brauchst dazu TED-Register $FF12 und $FF13.

    In $FF12 musst du Bit 2 auf 0 setzen damit TED das Charset aus dem RAM benutzt

    In $FF13 sind es die Bits 2 bis 7 die die oberen 6 Bits der Adresse des Charsets ergeben.

    $3000 ergibt also 001100

    Dann gibts noch $FF07 Bit 7. Wenn 0 dann erzeugt TED die reversen Chars selbst und damit ist das Charset nur 1KB groĂź. Wenn 1 dann ist das Charset 2 KB groĂź und du kannst alle 256 Zeichen selbst definieren.

    Registerliste von TED: Bitte melde dich an, um diesen Link zu sehen.

    Du solltest das Charset aber erstmal aus dem ROM ins RAM kopieren.

  • Vielen Dank Gerrit, ich probiere damit mal ein bisschen rum.

    Schon echt eine merkwĂĽrdige Sache, diese 264er Reihe. :S


    EDIT:

    Funzt super. Schade, das ich beim +4 insgesamt zwei Bytes ändern muss, und nicht nur eines, wie z.B. $d018 beim C64.

    Ach so Gerrit, auf welchen Speicherbereich verweist denn der voreingestellte Wert in $ff13 nach dem einschalten des Rechners? Auf $e000?

    Gibt es keine Möglichkeit einen eigenen 256-Zeichen Charset zu verwenden, bei dem ich nur mit einem Byte arbeiten muss, um diesen zu aktivieren?

    GruĂź & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

    4 Mal editiert, zuletzt von HOLY MOSES/ROLE (23. Januar 2017 um 19:00)

  • Nein, der Default ist 128 Zeichen mit Reverse in Hardware und Charset aus dem ROM. Du musst also 3 Register umsetzen wenn du ein 256 Zeichen Charset im RAM an anderer Adresse haben willst.

    Wo das Default-Charset liegt weiss ich nicht auswendig, aber du kannst doch $FF13 nach einem Reset einfach auslesen und nachsehen. BASIC 3.5 hat Befehle um DEC nach HEX und umgekehrt zu wandeln.

  • Aber ich will ich will ich will...

    Habe ich das also richtig verstanden: Es gibt keine Möglichkeit einen eigenen Charset zu aktivieren mittels lediglich nur einem Byte (vergleichbar mit $d018 auf dem 64), auch von mir aus nur mit 128 Zeichen???

    GruĂź & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Doch: Wenn du den anderen Charset ins RAM nach $D000 packst. Dann brauchst du nur $FF12 schalten.

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Doch: Wenn du den anderen Charset ins RAM nach $D000 packst. Dann brauchst du nur $FF12 schalten.

    Ja, okay, coole Idee... aber um in $d000 zu schreiben muss ich ja vorher auch noch ein Byte ändern (ROM/RAM), gelle?

    GruĂź & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Doch: Wenn du den anderen Charset ins RAM nach $D000 packst. Dann brauchst du nur $FF12 schalten.

    Dann hat er aber nur ein Charset mit 128 Zeichen und Reverse in Hardware. Will er 256 selbst definierte Zeichen muss er noch auf ein zweites Register zugreifen.

    TED kann in dieser Richtung nunmal etwas mehr als VIC, macht dann eben auch mehr Arbeit.

  • Ja, okay, coole Idee... aber um in $d000 zu schreiben muss ich ja vorher auch noch ein Byte ändern (ROM/RAM), gelle?

    Nein, Schreibzugriffe gehen immer ins RAM und der Default ist meines Wissens beim Lesen das ROM zu lesen. Also ist eine Kopierschleife um das Charset zu kopieren kein Problem.

  • Dann hat er aber nur ein Charset mit 128 Zeichen und Reverse in Hardware.

    Er schrieb ja, das 128 auch reichen wĂĽrden.

    Wobei ich das Geknauser mit den 1/2 Befehlen auch noch nicht verstanden habe.

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Wobei ich das Geknauser mit den 1/2 Befehlen auch noch nicht verstanden habe.

    Viel wichtiger ist daran zu denken das BASIC-Ende hochzusetzen, sonst überschreiben ihm früher oder später die Strings das Charset.

  • das BASIC-Ende hochzusetzen

    Runter, oder?

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Viel wichtiger ist daran zu denken das BASIC-Ende hochzusetzen, sonst ĂĽberschreiben ihm frĂĽher oder später die Strings das Charset.

    Cool, funxt. Char nach $d000 und Bit 2 von $ff12 löschen. Scheint der einzige Weg zu sein.

    Geknauser: Noch Geheim :smile:

    Basic-Ende: Egal :smile:

    JUUUUUUUUUUUUUUUUHHHHHHHHHUUUUUUUUUUUUUUUUUUUUUUUU!!!

    GruĂź & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Unter $8000 liest der TED soweit ich das verstanden habe immer aus dem RAM. Das RAM/ROM-Bit wäre dann egal. Einfach asuprobieren. Und nicht SHIFT-CBM drĂĽcken oder CHAR verwenden, die wollen IIRC die neue Adresse in der erweiterten Zeropage hinterlegt haben...

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • Also, ungeschĂĽtzt mitten im BASIC-RAM hat der Charset nichts verloren. Wenn er nicht durch Variablen oder das Programm von unten her geschossen wird, machen ihm spätestens die Strings von oben her den Garaus.

    Das Speichermaximum absenken ist auf dem System hier auch nicht so prall. Macht man es so, daß der Zeichensatz (auch) mit 16K RAM läuft, sperrt man sich *allen* Extra-Speicher einer 64K Maschine weg!

    Idealerweise gehört der Zeichensatz *unter* das BASIC-Programm. Wie's geht steht in einem noch gar nicht so alten Thread hier: Bitte melde dich an, um diesen Link zu sehen.

    Und die nötigen Änderungen für 256 Zeichen überlasse ich mal dem geneigten Leser. :D

  • sperrt man sich *allen* Extra-Speicher einer 64K Maschine weg!

    Warum ALLEN?

    Bin nicht ganz firm auf der Maschine, aber ich komme auf rd. 11K, die max. verloren gehen. Oder hab ich einen Denkfehler?

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Vor meinem Zitat steht noch "Macht man es so, daĂź der Zeichensatz (auch) mit 16K RAM läuft, ...". Dazu muĂź der Zeichensatz unter $4000 liegen. Damit ist der Speicher ab $4000 definitiv weggesperrt. Und der ist mit "Extra-Speicher einer 64K-Maschine" gemeint.

  • Ah! Nun verstanden, Mike :winke: .

    Edit Bitte melde dich an, um diesen Link zu sehen.: Gewohnt schöne Lösung in deinem Link. Prima.

    Edit Bitte melde dich an, um diesen Link zu sehen.: Holy schrieb in Bitte melde dich an, um diesen Link zu sehen. nur noch von Plus/4. Soll er also machen, wie er meint.

    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.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

    Einmal editiert, zuletzt von Hexworx (23. Januar 2017 um 22:55)

  • Dieses Thema hatten wir letztes Jahr schon mal ;). Ergebnis war dann eine Liste von nĂĽtzlichen POKEs usw.

    Einmal der Verweis zur +4 World: Bitte melde dich an, um diesen Link zu sehen.
    Thema hier im Forum: Bitte melde dich an, um diesen Link zu sehen. (etwas tiefer in diesem Thema)