Hello, Guest the thread was called1.7k times and contains 16 replays

last post from mega65 at the

C65 ROM patch ("AE") with German umlauts

  • I patched a new version "AE" of the C65 ROM (911001.bin):



    First I removed the routine for changing the border color if a disc error occurs. This behaviour should be removed in the final ROM of the C65, because it was only for debugging help as long as the error LED of the disc drive works. And besides that, I don't like that a disc error changes the border color. ;)

    Quote from Source codes from C65 ROMs

    ;Turn error LED on

    ; (FLASH BORDER COLOR?????) leave in until ext. error led works


    Second I added German umlauts and an € character to both character sets. This is mainly interesting for German users, but I like the use of umlauts while typing German texts and I don't care much about the seldom used PETSCII symbols which I had changed for the umlauts.


    In the first (default) character set you can type the umlauts with this keys:


    Ä : C=/Mega + a

    Ö : C=/Mega + o

    Ü : C=/Mega + u

    € : C=/Mega + e


    In the second character set (press C=/Mega+SHIFT or PRINT CHR$(14) to switch to this set) you can type the umlauts with this keys:


    ä : C=/Mega + a

    ö : C=/Mega + o

    ü : C=/Mega + u


    Ä : C=/Mega + z (be aware that the 'z' is the key below 'a' on the US keyboard layout used by the Mega 65 / C65).

    Ö : C=/Mega + l

    Ü : C=/Mega + j


    ß : C=/Mega + s


    € : C=/Mega + e


    The capital umlauts are one row below the small umlauts, so you can remember the position easily.


    This is a German text with the new charset:




    This is the same text with the original ROM:


    You can use the new charcters also in filenames etc.:



    This patch includes the changes in patch "AB".


    The get the patched ROM see steps 1.) to 4.) in this post: Patch for C65 ROM


    ...


    5.) Patch the file with this command:


    bspatch 911001.bin 911001_ae.bin patch_ae.bin


    6.) The created file '911001_ae.bin' is the patched rom and you can rename and use it for your needs. E.g. for Xemu 'c65-system.rom' or 'MEGA65.ROM' for Mega65 or the Nexys board.

  • Sorry, aber ich muß Meckern weil:


    Nur das € kann natürlich wie von dir auf C=+e gesetzt werden, weil das ja auch die DIN entspricht.

    Verschmerzen könnte man auch das daß €-Zeichen auf die £-Taste legen, denn das £ brauchen eh nur die AngelSachsen und beide ja Währungssymbole sind.

    Btw.: In Japan haben die statt dem £-Zeichen dort das -> ¥-Zeichen (Yen).

  • Ich finde es nach wie vor unglücklich, dass es heutzutage noch national unterschiedliche ROMs geben soll, die es notwendig machen, Texte zwischen (europäischen) Sprachen zu konvertieren, um keinen Zeichensalat auf einem anderen ROM zu sehen. Sogar der 8-Bit-Guy hat anscheinend (ob durch meinen Vorschlag oder durch andere Einflüsse, weiß ich nicht) eingesehen, dass es heutzutage Sinn macht, einen internationalen Zeichensatz (auch auf einem Retro-Rechner) zu unterstützen. Er hat sich beim Commander X16, wie auch von mir vorgeschlagen (und für den PXL-Font auch schon umgesetzt), optional (also neben PETSCII) für ISO8859-15 (Latin-9) als Encoding entschieden, weil da die meisten westeuropäischen Sonderzeichen schon mit drin sind:

    In meinem Systemfont sieht das dann (in 80Z) so aus:


    PXLfont88665B-RF2.3beta2-ISO8859-15.png


    Invers-Darstellung müsste dann natürlich auf alternative Art und Weise realisiert werden – dafür sollte der Mega65 aber wohl die nötigen Fähigkeiten besitzen (entweder mit mehr Chars (Bis zu 8192 möglich), mit erweiterten Farbfähigkeiten oder On-the-fly-Invertierung (wie Atari 8-Bit) arbeiten).

  • Sorry, aber ich muß Meckern weil:

    Kein Problem! :)


    Ich habe mir das vorm Umsetzen auch durchgelesen und länger überlegt.

    Für mich war eher wichtig, dass ich die Umlaute unkompliziert eingeben kann und dafür keinerlei Änderungen im Tasturhandling bzw. dem Tastaturlayout vornehmen muss. Alles bleibt wie bisher (englische Tastaturbelegung), nur die Umlaute sind in jeder Anwendung sofort mit einfachen Tastendruck erreichbar und verwendbar.


    Und so ist dann die präsentierte Lösung rausgekommen mit der ich erstmal glücklich bin. Aber in Stein gemeißelt ist da ja nichts, zumal der Patch ja eh "freiwillig" ist. ;)

  • Ich finde es nach wie vor unglücklich, dass es heutzutage noch national unterschiedliche ROMs geben soll, die es notwendig machen, Texte zwischen (europäischen) Sprachen zu konvertieren, um keinen Zeichensalat auf einem anderen ROM zu sehen.

    Mir ging es hier "nur" um den C65, also den C65-Modus. Und der war original halt 1991.


    In dem Mega65-Modus sind sicherlich mehr Freiheiten möglich.

  • Für mich war eher wichtig, dass ich die Umlaute unkompliziert eingeben kann

    Klingt sinnvoll.

    und dafür keinerlei Änderungen im Tasturhandling bzw. dem Tastaturlayout vornehmen muss.

    wtf? Der C65 hat doch eine ALT-Taste, genau für sowas ist die da. Die Position von Zeichen im Zeichensatz nur aufgrund des Tastaturlayouts festzulegen, ist irgendwie um die falsche Ecke gedacht - damit zwingt man potentielle Benutzer dann auch dazu, sich zwischen Umlauten und z.B. Umrandungen entscheiden zu müssen.

  • Mir ging es hier "nur" um den C65, also den C65-Modus. Und der war original halt 1991.

    Wenn du möglichst original bzw. 1991 willst, dann geht es nicht um "einfache Eingabe", sondern um das, was Commodore gemacht hätte. Und das wäre entweder das gewesen, was sie beim C128 gemacht haben, also das bekannte C128-DIN-Charset oder aber (wahrscheinlicher, wegen des späten Releases), was sie beim Amiga gemacht haben, also einen auf ISO8859 basierenden Zeichensatz (genau Commodore Amiga Charset, das nur in 4 Zeichen von ISO8859-1 abweicht) nehmen. Da wäre dann der Schritt zu ISO8859-15 (welches ich für den Mega65-Modus empfehle) auch nicht mehr weit. Alles andere wären irgendwelche Fantasie-Belegungen, die vielleicht praktisch bei der Eingabe (auf einer US-Tastatur) sein mögen aber maximal entfernt von 1991 bzw. C65.

  • Thank you for doing this, again! But have you got a list of what exactly changed in each version? (Where are the AC and the AD?)


    If you are still planning to go on with this patching in the future, there is a particular thing you (or anyone else) could also investigate some day... Most of the newer Kernals (just except for the good old earliest 910111 which I seem to be stuck on mostly for some similar reasons by now) have got some strange system variable placements, which were certainly just meant to be temporary by the developers originally (but they finally remained so, unfinished), so that should be fixed, too.


    I mean they place some important variables in the stack page (within the $01xx in memory) at the initialization on powerup, which is obviously very dangerous, as they will be overwritten by the user application program, sooner or later. They would need to find a better placement instead (preferably in the $02xx or the $03xx pages, or if it is not possible, then in the $11xx or the $12xx pages at least).


    The best example of the above is the system DMA tables (which are being used for DMA operations all the time, so thus if they are damaged, then it is a serious problem).


    Those tables can be found at $03ce-$03e5 when using the the earliest (910111, Rev2B) Kernal, which is good... However all of the newer Kernals put them in the $01xx area instead. E.g. by the newest (911001, Rev5) it is at $0120-$015c.


    I wrote an article some years ago, where I described it in more detail, just read the following PDF at pages 44-48, please:


    http://istennyila.hu/dox/cbmcode.pdf


    Probably there are some more such cases, too (but I only found these ones). Yet maybe not so easy task to find and change all of them everywhere, of course...

  • But have you got a list of what exactly changed in each version? (Where are the AC and the AD?)

    Oh, I forgot the commented compare output in my first post.


    Most of the modifications are text changes and the new characters (umlauts) in the two charsets.


    "AC" and "AD" are only on my harddisc. There are only some minor changes, not worth for an own thread. "AE" has all changes from the original ROM 911001.bin, so no further patches are needed.

  • Yesterday I try to use the patched ROM (precisely: version AF with a very little and nonrelevant change to AE) on the Nexys board. The umlaut characters don't work on it with only the patched ROM.


    On the SD card there is a file named "CHARROM.M65" with a char set. I changed this file to use the umlaut chars as described in the first post.


    After this change I copied the file on the SD card an put it into the Nexys board. Switched it on and ... no umlauts after pressing Commodore+A, Commodore+O or Commodore+U:



    The char set was changed in the C65 ROM (called: MEGA65.ROM on the SD card) and in CHARROM.M65. Why does the Nexys not used these chars and where do the original chars come from?


    After pressing the RESTORE key to get into the FREEZE MENU ...



    ... and just leaving it again, the umlauts are shown as intended:



    Have I overlook something in the settings, so that the Nexsy board uses the new umlaut chars from beginning? Why are the umlauts available after going to the freeze menu and back without any other action? What was changed with this?


    This is the content of my used SD Card:


    I attached the changed and zipped CHARROM_AF file. Rename it to CHARROM.M65 before you use it for the Mega65/Nexys.

  • CHARROM.M65 is being obsoleted, to instead use the charrom part out of the main 128KB ROM. In the C65 ROM, did you replace the C64 or the C65 charset? There are two separate ones. The MEGA65 probably doesn't correctly handle them in all cases, which might be the issue. More generally: The VIC-IV has a 4KB font memory, that holds the charset, as well as it being in the CPUs memory space. This means that it is possible if you do things in particular orders for them to get out of sync, where the VIC-IV sees old data, while the CPU has new charset data. It also depends on the bitstream, as I think we fixed this up quite a lot in newer bitstreams.


    LG

    Paul

  • With this new bitstream the problem is the same. The new umlaut chars aren't shown right after turn on the Nexys board. I can recognize that the umlaut chars are displayed very short after pressing RESTORE before(!) the freeze menu appears.


    Besides that with the new bitstream the VGA picture on my display is blurred. With the older bitstream the picture is much more stable and clear.

  • Hi Snoopy,

    if you want you can test the other bitstreams from here. https://mega.scryptos.com/sharefolder/MEGA/MEGA65+filehost

    The correct one is always Nexys4DDR & widget.

    If you find one, that's working with the Umlauts, let us know.

  • Note that the video mode stuff is still under a bit of flux, as we move towards true 27MHz pixel clock and HDMI-compatible ED modes. So it might get worse for a while before it gets better.

    Now, back to the charset: Delete the CHARROM.M65 from the SD card, and have only your MEGA65.ROM with your changes inside it, and it should work, as there is no other source of characters to confuse things, then. Let me know how you go.


    LG

    Paul