Where did MEGA 65 get the characters from?

Es gibt 5 Antworten in diesem Thema, welches 1.943 mal aufgerufen wurde. Der letzte Beitrag (15. Juli 2020 um 02:00) ist von mega65.

  • As described Bitte melde dich an, um diesen Link zu sehen. and below and Bitte melde dich an, um diesen Link zu sehen., I'm searching for the reason, why MEGA 65 (in my case: Nexys board with new bitstream "nexys4ddr-widget-20200624.10-138-hd-27b1f22+DIRTY.bit") or xmega65 of Xemu emulator doesn't use the character datas of the C65 ROM for display them?

    In Bitte melde dich an, um diesen Link zu sehen. of the latest C65 ROM, I had change some char datas in the ROM for displaying german umlauts and the Euro symbol.

    Let me show the problem with some screenshots:

    As an example to show the problem, I want to display the german "Ä" and therefore I change the char data in ROM from position $09380 to $09387 - for CHR$(176) - with $66, $18, $3C, $66, $7E, $66, $66, $00.

    Bitte melde dich an, um diesen Anhang zu sehen.


    Starting xc65 of Xemu and let me see the CHR$(176) the "Ä" is correctly shown:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Using MONITOR to see the ROM memory of position $9380 (bank 2) shows the changed values for the "Ä" character:

    Bitte melde dich an, um diesen Anhang zu sehen.


    Then I do the same with xmega65 of Xemu the CHR$(176) is the symbol which is stored in the unpatched original ROM:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Using MONITOR to look at the ROM value $9380 in bank 2 I can see, that the changed char values are stored correct in the ROM:

    Bitte melde dich an, um diesen Anhang zu sehen.

    It's the same using the Nexys board with bitstream "nexys4ddr-widget-20200624.10-138-hd-27b1f22+DIRTY.bit".

    With MEGA 65 the char datas for CHR$(176) are obviously not from the (patched) C65 ROM.

    But where do MEGA 65 gets the datas for displaying the character from? :gruebel

  • Let's jump back to the C64/VIC-II a bit. There, VIC-II view on memory is interesting, the 16K "VIC-II bank" (set by a CIA port) has some dirty secrets to see the ROM in certain banks at certain addresses instead of the RAM. As we all know. This is kind of similar in case of C65 too, however there is an extra bit to choose for two location of the ROM denoted as C64 and C65 ROM.

    On MEGA65, internally it's a bit different. MEGA65 has its own "write-only-memory" ("WOM" for short), that is, CPU can only write it (surely, VIC-IV can only read it ...). That is the source of the "ROM charset" for real. It's @ $FF7E000 if I remember correctly.

    At this point my memory is kinda a faint a bit, to be honest ... In old kickstarts/Hyppos actually a file is loaded to WOM, so you need at least the 128K sized C65 ROM, and the character ROM as separated file on the SD-card. So not directly the ROM is being used as the source of "ROM charset". Now what I am not sure, how it changed lately (Xemu uses an older Hyppo ....). I think, the best would be, that Hyppo automatically copies the character set area from the C65 ROM to WOM, without the separated chargen ROM from SD-card. Now this is the point, I'm totally unsure how it works in a very recent Mega65 bitstream (and what Xemu will do as well, once I hit the point to be able to use a more decent Hyppo, but it needs some work on the hardware level emulation first that it can run ...).

  • So not directly the ROM is being used as the source of "ROM charset". Now what I am not sure, how it changed lately (Xemu uses an older Hyppo ....).

    Thanks for your answer!

    The latest bitstream don't use the old "CHARROM.M65" anymore.

    This is the content of my current SD card for the Nexys board:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Yes, I suspected, just now being at my workplace, I wrote everything just by heart :)

    Anyway, the key point here, that Xemu's hyppo is a bit old currently .... :-/ Till an update you can workaround things by using the right CHARROM file as well ... If you really want to do that, for a real software for MEGA65, you probably don't want to do that, but instead, overwrite the WOM by yourself in your program, or use a charset in the RAM (and on MEGA65 you can do it easily without even the need to be in any of the VIC banks, or specially aligned, etc ... the so called "precise address" feature of VIC-IV. Though be careful, Xemu has some weak points there too, _currently_, hopefully it will change soon!!!).

  • Oh and another point: if you use the UI menu in Xemu to update system files (in SD-card menu) Xemu will generate the CHARGEN file extracted from the selected ROM file automatically and updates that too, in the SD-card image. If it helps for you ...

  • I think HYPPO when it loads a ROM always loads the C64 version of the font into the WOM, not the C65 version. Try modifying the C64 font in the ROM and loading on the M65 hardware, and see if it works that way. Meanwhile, are you using latin-1 codes for the accented characters, or some other approach?

    LG

    Paul