Comal 2.01 - CRT auf Ultimate Geräten

Es gibt 52 Antworten in diesem Thema, welches 2.116 mal aufgerufen wurde. Der letzte Beitrag (26. August 2025 um 12:27) ist von markusC64.

  • Hm, schauen wir mal nach:

    case CART_COMAL80:

    if (total_read > 65536) {

    cart_type = CART_TYPE_OCEAN_16K | VARIANT_1; // Comal 80 Pakma // V5: Type = Ocean_16K, Variant = 1

    } else {

    cart_type = CART_TYPE_OCEAN_16K; // Comal 80 // V5: Type = Ocean_16K, Variant = 0

    }

    also schauen wir bei OCEAN_16K nach:

    if io_write='1' and io_addr(8)='0' then -- DE00 range

    -- variant sets max number of banks, 000 = 4, 001 = 8, 011 = 16, 111 = 32

    bank_bits(18 downto 14) <= io_wdata(4 downto 0) and (variant & "11"); -- max 32 banks of 16K

    end if;

    game_n <= '0';

    exrom_n <= '0';

    serve_rom <= '1';

    rom_mode <= "01"; -- 16K banks



    Hm, Game und EXROM beider auf Low ziehen, das ist das, was ich im Code finde. Ansonsten nur die Bankumschaltung und das wars.

    ---
    Meine Github-Projekte: Bitte melde dich an, um diesen Link zu sehen. Vice 3.2 Improved: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II / Ultimate 64 Firmware Releases: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II Update instructions: Bitte melde dich an, um diesen Link zu sehen.

  • Omega Dein Code produziert nur einen leeren Bildschirm. Ich sehe kein "Hallo" oben links. Egal, ob ich mit dem CRT File oder dem echten Modul probiere.

    Aha! Jetzt weiß ich, warum das kleine Testprogramm nur einen leeren Bildschirm erzeugt.

    Es schreibt nämlich einen blauen Text auf einen blauen Bildschirm. Deshalb sieht man nichts.

    Versuche es auf dem problematischen System bitte nochmal mit diesem Code

    Code
    0010 USE graphics
    0020 graphicscreen(0)
    0030 textstyle(1,1,0,1)
    0040 pencolor(1)
    0050 plottext(0,192,"Hallo!")
    0060 REPEAT  UNTIL KEY$<>""
    0070 textscreen

    Ich habe einfach die Textfarbe von Blau zu Weiß geändert. Siehst du jetzt das "Hallo" oben links in der Ecke? Und sehen die Buchstaben hier richtig aus?

  • Das liegt daran, dass die Hilfeseite auf dem Grafikbildschirm angezeigt wird und der eigentliche Texteditor läuft im Textbildschirm.

    Ja, da liegt der Biber im Busch begraben.

    Meine schöne Grafikdemo aus dem Bitte melde dich an, um diesen Link zu sehen. hat auf dem U64 unter Comal auch kaputte Grafik. Skandalös! :)

    C64/VICE:

    Bitte melde dich an, um diesen Anhang zu sehen.

    U64:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Omega Dein Code produziert nur einen leeren Bildschirm. Ich sehe kein "Hallo" oben links. Egal, ob ich mit dem CRT File oder dem echten Modul probiere.

    Aha! Jetzt weiß ich, warum das kleine Testprogramm nur einen leeren Bildschirm erzeugt.

    Es schreibt nämlich einen blauen Text auf einen blauen Bildschirm. Deshalb sieht man nichts.

    Versuche es auf dem problematischen System bitte nochmal mit diesem Code

    Code
    0010 USE graphics
    0020 graphicscreen(0)
    0030 textstyle(1,1,0,1)
    0040 pencolor(1)
    0050 plottext(0,192,"Hallo!")
    0060 REPEAT  UNTIL KEY$<>""
    0070 textscreen

    Ich habe einfach die Textfarbe von Blau zu Weiß geändert. Siehst du jetzt das "Hallo" oben links in der Ecke? Und sehen die Buchstaben hier richtig aus?

    Ja, jetzt sehe ich was. Leider nicht das, was ich sehen will...

  • Da bin ich froh, dass ich damit nicht allein bin.

    Ich habe ein Bitte melde dich an, um diesen Link zu sehen. aufgemacht. Wenn dir noch etwas einfällt, das du beitragen kannst...

  • Tja. Das ist ja schade, dass Ultimate64 Benutzer solche Probleme haben. Und da denkt man immer, FPGAs seien unfehlbar. - Vielleicht erstattet ja der Hersteller auf Anfrage das Geld zurück, damit man sich einen TheC64 Mini kaufen kann? :D

  • Tja. Das ist ja schade, dass Ultimate64 Benutzer solche Probleme haben. Und da denkt man immer, FPGAs seien unfehlbar. - Vielleicht erstattet ja der Hersteller auf Anfrage das Geld zurück, damit man sich einen TheC64 Mini kaufen kann? :D

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Bitte melde dich an, um diesen Anhang zu sehen.

    Ups, mein Kommentar war natürlich nicht böse gemeint. Respekt an alle, die sich ernsthaft mit dem Ultimate64 beschäftigen, ich zieh meinen Hut. Ich gebe zu: Heimlich beneide ich die FPGA-Fraktion ja ein bisschen. Ich hab natürlich großen Respekt, auch wenn mein kleiner Schelm im Hinterkopf ein bisschen gelächelt hat. :P

  • Bitte melde dich an, um diesen Anhang zu sehen.

    Ups, mein Kommentar war natürlich nicht böse gemeint. Respekt an alle, die sich ernsthaft mit dem Ultimate64 beschäftigen, ich zieh meinen Hut. Ich gebe zu: Heimlich beneide ich die FPGA-Fraktion ja ein bisschen. Ich hab natürlich großen Respekt, auch wenn mein kleiner Schelm im Hinterkopf ein bisschen gelächelt hat. :P

    Hab ich schon so verstanden. Alles gut! 😊

    Aber den Stempel wollte ich schon immer mal anwenden. Känguru rulez! :thumbsup:

  • Senfsosse Ich habe ein kleines Testprogramm geschrieben, das ein paar farbige Kreise auf den Bildschirm zeichnet und in die Mitte "Hallo" schreibt. Könntest du das bitte einmal auf dem Ultimate64 ausprobieren? Wenn die Kreise korrekt dargestellt werden, der Text aber fehlerhaft ist, wissen wir, dass der Grafikscreen selbst funktioniert und nur das Kopieren des Zeichensatzes in den Grafikbildschirm Probleme macht. Damit könnten wir den Fehler vielleicht noch etwas eingrenzen.

    Code
    0010 USE graphics
    0020 graphicscreen(0)
    0030 background(0)
    0040 border(6)
    0050 FOR i:=0 TO 5 DO
    0060  pencolor(i+1)
    0070  circle(160,100,99-i*15)
    0080 ENDFOR i
    0090 plottext(140,96,"Hallo")
    0100 WHILE KEY$="" DO NULL

    So sollte es aussehen:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Senfsosse Ich habe ein kleines Testprogramm geschrieben, das ein paar farbige Kreise auf den Bildschirm zeichnet und in die Mitte "Hallo" schreibt. Könntest du das bitte einmal auf dem Ultimate64 ausprobieren? Wenn die Kreise korrekt dargestellt werden, der Text aber fehlerhaft ist, wissen wir, dass der Grafikscreen selbst funktioniert und nur das Kopieren des Zeichensatzes in den Grafikbildschirm Probleme macht. Damit könnten wir den Fehler vielleicht noch etwas eingrenzen.

    Code
    0010 USE graphics
    0020 graphicscreen(0)
    0030 background(0)
    0040 border(6)
    0050 FOR i:=0 TO 5 DO
    0060  pencolor(i+1)
    0070  circle(160,100,99-i*15)
    0080 ENDFOR i
    0090 plottext(140,96,"Hallo")
    0100 WHILE KEY$="" DO NULL

    So sollte es aussehen:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Versuche ich morgen gern mal. Melde mich.

  • Senfsosse Ich habe ein kleines Testprogramm geschrieben, das ein paar farbige Kreise auf den Bildschirm zeichnet und in die Mitte "Hallo" schreibt. Könntest du das bitte einmal auf dem Ultimate64 ausprobieren? Wenn die Kreise korrekt dargestellt werden, der Text aber fehlerhaft ist, wissen wir, dass der Grafikscreen selbst funktioniert und nur das Kopieren des Zeichensatzes in den Grafikbildschirm Probleme macht. Damit könnten wir den Fehler vielleicht noch etwas eingrenzen.

    Code
    0010 USE graphics
    0020 graphicscreen(0)
    0030 background(0)
    0040 border(6)
    0050 FOR i:=0 TO 5 DO
    0060  pencolor(i+1)
    0070  circle(160,100,99-i*15)
    0080 ENDFOR i
    0090 plottext(140,96,"Hallo")
    0100 WHILE KEY$="" DO NULL

    So sollte es aussehen:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Cooli cool eigentlich nicht so kompliziert damit schnell was zu machen oder betrachte ich das zu einfach?

  • Ihr könnt Euch weitere Debugversuche sparen, ich habe durch Vergleich U2+ Quelltext und VICE das Problem gelöst. Dieser diff behebt das Problem, ist aber nur als POC brauchbar, weil er alle anderen OCEAN 16k Module mitändern würde.

    Aber so oder so, dadurch weiß man, woran es liegt: Die Bits 6 und 7 aus dem Schreiben in $DExx müssen so beachtet werden, wie ich das da reinkodiert habe:

    ---
    Meine Github-Projekte: Bitte melde dich an, um diesen Link zu sehen. Vice 3.2 Improved: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II / Ultimate 64 Firmware Releases: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II Update instructions: Bitte melde dich an, um diesen Link zu sehen.

  • Ihr könnt Euch weitere Debugversuche sparen, ich habe durch Vergleich U2+ Quelltext und VICE das Problem gelöst. Dieser diff behebt das Problem, ist aber nur als POC brauchbar, weil er alle anderen OCEAN 16k Module mitändern würde.

    Aber so oder so, dadurch weiß man, woran es liegt: Die Bits 6 und 7 aus dem Schreiben in $DExx müssen so beachtet werden, wie ich das da reinkodiert habe:

    Tjo wer kann der kann! Respekt! :schande:

    Schau ich nur so. Könnte man COMAL einsetzen für Demoscene Sachen oder ist das hinfällig ohne Assembler Kenntnisse?

  • farblich doch leicht anders. 🤔

    Ja genau, weil das U64 Bild hab ich (von weiter weg) schnell mal vom TV abfotografiert. :)

    Fazit: Bei der Comal "plottext" Ausgabe läuft auf dem U64/U2 etwas verkehrt.

    Ausserdem springt die Textfarbe 1 Byte nach links und färbt den Kreis gelb.

    Zusätzliche Erläuterung: In Hires gibt es nur eine Vordergrundfarbe in 8x8 Pixeln. Das "Hallo" in Omegas Version war zu nah am Kreis, daher wird da der Kreis auch vom plottext gefärbt. Weil Text und Kreis aber blau sind, sieht man es nicht. Darum hab ich den Text gelb gemacht und die Positionen entsprechend dem 8x8 Raster angepasst.

  • farblich doch leicht anders. 🤔

    Ja genau, weil das U64 Bild hab ich (von weiter weg) schnell mal vom TV abfotografiert. :)

    Fazit: Bei der Comal "plottext" Ausgabe läuft auf dem U64/U2 etwas verkehrt.

    Ausserdem springt die Textfarbe 1 Byte nach links und färbt den Kreis gelb.

    Zusätzliche Erläuterung: In Hires gibt es nur eine Vordergrundfarbe in 8x8 Pixeln. Das "Hallo" in Omegas Version war zu nah am Kreis, daher wird da der Kreis auch vom plottext gefärbt. Weil Text und Kreis aber blau sind, sieht man es nicht. Darum hab ich den Text gelb gemacht und die Positionen entsprechend dem 8x8 Raster angepasst.

    Ja alles ziemlich kompliziert. X/:S

  • Cooli cool eigentlich nicht so kompliziert damit schnell was zu machen oder betrachte ich das zu einfach?

    Nein, du hast vollkommen recht. COMAL ist einfach zu lernen. Genauso einfach wie BASIC. Und darüber hinaus bietet es auch die Möglichkeiten der strukturierten Programmierung mit Prozeduren, Funktionen und lokalen Gültigkeitsbereichen. Man kann also sagen: Sehr einfach zu lernen und trotzdem mächtig gut für komplexe Programme.

    Schau ich nur so. Könnte man COMAL einsetzen für Demoscene Sachen oder ist das hinfällig ohne Assembler Kenntnisse?

    Für Demos ist COMAL in keinster Weise geeignet. COMAL ist eine vergleichsweise langsame Interpretersprache mit der Möglichkeit zur strukturierten Programmierung. Für bestimmte Sorten von Spielen und Anwendungsprogrammen ist COMAL geeignet. (Textadventures, Quizprogramme, Knobelspiele usw.) . Aber für Demos und schnelle Actionspiele brauchst du Assembler. Da wollen wir uns mal nichts vormachen.

    Ihr könnt Euch weitere Debugversuche sparen, ich habe durch Vergleich U2+ Quelltext und VICE das Problem gelöst. Dieser diff behebt das Problem, ist aber nur als POC brauchbar, weil er alle anderen OCEAN 16k Module mitändern würde.

    Ich hab' keine Ahnung, was das bedeutet. Kann ich jetzt nach Hause gehen? :nixwiss: Ich muss nämlich mal ganz dringend aufs Klo. :emojiSmiley-51:

  • Ich hab' keine Ahnung, was das bedeutet. Kann ich jetzt nach Hause gehen? :nixwiss: Ich muss nämlich mal ganz dringend aufs Klo. :emojiSmiley-51:

    Gideon wird die Erkenntnisse daraus hoffentlich bald in seinen Quelltext aufnehmen - und dann später in einer neuen Firmware.

    ---
    Meine Github-Projekte: Bitte melde dich an, um diesen Link zu sehen. Vice 3.2 Improved: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II / Ultimate 64 Firmware Releases: Bitte melde dich an, um diesen Link zu sehen.
    1541 Ultimate II Update instructions: Bitte melde dich an, um diesen Link zu sehen.