Posts by GoDot

    Ist noch ein Fehler drin (Basic-RAM-Ende wird falsch gesetzt). Sorry. :-( Ich melde mich später.


    Arndt


    Edit: Nein, falscher Alarm. Muss einen anderen Grund gehabt haben. Kann mal einer ein bisschen rumprobieren, ob bei Basic-Programmen OUT OF MEMORY auftaucht?

    Fehler gefunden! War kein Problem der Cartridge, sondern ein (aus Simons' Basic übriggebliebenes) TSB-Problem! Im COLD-Befehl, der eigentlich einen vollständigen Reset machen sollte (und danach die SB-typischen Sachen), wurde der Interrupt zu früh freigegeben (bevor alle Pointer gesetzt waren), was zum ersten Hänger führte. Außerdem wurde der Tastaturpuffer nicht initialisiert, was beim Start zur fälschlichen Annahme von 255 gedrückten Tasten führte, die dann alle ab $0277 auch eingetragen wurden (was die soeben gesetzten Pointer ab $0300 weder zerstörte) und den zweiten Hänger verursachten.


    Behoben!


    Das Einzige, was mich noch stört, ist, dass der CLR-Code ($93) am Anfang der Einschaltmeldung nur als Herzchen ausgegeben wird. Und weil PAGE ja hier nicht vom Booter gesetzt wird, hab ich es auf die Taste F1 gelegt. Also nach dem Booten F1 drücken, dann ist PAGE wieder aktiviert.


    CRT mit TSB hängt hier dran (und wird aktualisiert, wenn sich was ändert, das kündige ich aber hier dann an).


    Viel Spaß!

    Arndt

    Files

    • tsb.crt

      (32.9 kB, downloaded 11 times, last: )

    tsb.ext.prg und tsb.mem.prg liegen beide bei $CC00 .

    Wäre es nicht möglich, beides gleichzeitig im RAM zu lagern ab $C900 ?

    Möglich schon, das sind Nachlader für die Befehle MEM (verlegt den Bildschirmspeicher nach $cc00) und INST (lädt tsb.ext nach $cc00). Wenn die beiden mit NRM beendet werden, lädt TSB die Datei tsb.mem nach, um den Code an $cc00 zu reparieren. Auch am $c900 ist TSB-Code, daher ist ein Auslagern irgendwo im $C-Bereich auch nicht möglich (allenfalls direkt an $c000 bis $c3ff, da ist nach HIRES der Farbspeicher).

    kommt nach dem RESET nicht erstmal ein Hardware-INIT ?

    Der Sprung nach $8147 führt auf COLD, das ist das System-Init.

    nicht sicher, ob sich nach dem Ausschalten des MagicDesk-Moduls es sich wieder einschalten lässt

    Doch, da ich es ja in meinem Code oben ständig aus- und wieder einschalte.


    die Pokes mit im Modulcode drin, bevor Du TSB startest

    Die POKEs setzen die durch das Init verlorengegangenen Parameter für PAGE (schaltet PAGE ein und setzt die Seitenlänge auf 23).


    Ich hab das Einschalten des Moduls (im Code oben) kurz vor JMP $8147 rausgenommen (das Modul ist dann aus). Keine Änderung, VICE hängt, obwohl alles so ist, wie es soll...


    Arndt


    Edit: Auch die Modulkennung ("CBM80") hab ich mal unkenntlich gemacht. Keine Wirkung, nach einem Reset hängt VICE.

    Ich poste hier mal meinen Code:



    Vor dem Aufruf von TSB schaltet die Routine hier die Cartridge ein, sollte ich das mal lassen?


    Arndt

    Habe gerade mal in die vice-sourcen geschaut - die MagicDesk-Karte lässt sich doch abschalten mit BIT7 von $DE00:

    Ja, das hab ich für das Zusammenbasteln des TSB-Codes auch verwendet. Am Schluss hängt sich VICE dann auf, wenn ich TSB initialisieren will.


    Arndt

    Allerdings: wenn Du 3x 8kb - Bänke brauchst, dann sollte eigentlich /game auf HIGH bleiben und Du kannst (im MagicDesk-CRT) die Bänke mit LDA#$00 (| 01 | 02) , STA $DE00 anwählen können.

    Dein ProgrammCounter muss sich dafür natürlich ausserhalb von $8000-9FFF befinden aber da sist Dir bestimmt schon klar denke ich :)

    Ja, genau so hab ich das gemacht und die 20K geschlossen in den C64 übertragen. Am Schluss will ich aber das Ganze starten, wozu aber dann die Cartridge im Wege ist. Bit 0 ausschalten (hast du in Post#14 gesagt)? Ok, versuche ich!


    Arndt

    Vielleicht liest ja noch einer der Experten hier im Forum mit und hat zu deinen letzten Fragen ein Idee.

    Ja, ich sprech sie mal an. Danke für den Hinweis! Auf das Naheliegendste verfällt man ja erst am Schluss...


    Stand der Dinge ist, das ich versucht habe, meine erste Idee aus Post #10 umzusetzen (also TSB aus der Cartridge in den C64 umkopieren und dann starten). Das hab ich sogar zur ersten Hälfte hingekriegt. Dazu hab ich das CRT als Magic Desk mit drei 8K-Bänken deklariert (Magic Desk kann man auf RAM schalten) und TSB vollständig herübergeholt (der VICE-Monitor sagt, dass alles angekommen ist). Beim Booten von TSB über JMP ($8000) hängt sich VICE aber auf. Ich nehme an, ich muss irgendwie die Cartridge abgeschaltet kriegen, da sie "hardwaremäßig" noch da ist und sich mit TSB streitet. Kann man eine Cartridge per Software abschalten?


    Arndt

    Ein Simons Basic-Modul kann bei $c000 kein ROM einblenden, im besten Fall ignoriert VICE den Datenblock einfach.

    Hm, da TSB nun aber 20KB lang ist ($8000 bis $cfff), müsste man in der Cartridge ein Programm starten können, das den Inhalt der Cartridge in den Raum des C64 kopiert? Geht das?

    Oder die Cartridge zum Teil crunchen, damit sie in 16KB passt, und dann mittels eines Booters in den C64 hinein entpacken, wo TSB dann (eigentlich wie gewohnt) unabhängig läuft? Geht das?


    Wenn nicht: tecman dann seh ich kein Land...


    Arndt

    Ich hab jetzt ein CRT-File zusammengebastelt, das 20KB umfasst, Einstellungen laut dieser Seite. Die 20 Kb sind aufgeteilt in drei Bereiche zu 8 (Start bei $8000), 8 (Start bei $a000) und 4 KB (Start bei $c000). Die jeweiligen Header hab ich eingebaut. EXROM ist on und GAME ist off.


    VICE bleibt im Reset stecken, die beiden hinteren Bereiche ($a000 bis $cfff) kommen laut VICE-Monitor nicht an.


    Was muss ich ändern?


    Arndt


    Edit:

    43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20

    00 00 00 40 01 00 00 04 01 00 00 00 00 00 00 00

    54 55 4e 45 44 20 53 49 4d 4f 4e 53 27 20 42 41

    53 49 43 00 00 00 00 00 00 00 00 00 00 00 00 00


    43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00


    Der CRT-Header


    43 48 49 50 00 00 20 10 00 00 00 00 a0 00 20 00


    Der Header vom 2. Teil


    43 48 49 50 00 00 10 10 00 00 00 00 c0 00 10 00


    und der dritte

    Arndt, wenn ich mir dein TSB D64 Image anschaue, läd TSB aus mehreren Dateien heraus, richtig?

    Genau, die Startdatei "tsb" und der Objekt-Code "tsb.obj". Dann noch drei Nachlader für bestimmte Befehle (MEM und wenn MEM verwendet, dann auch für NRM, sowie für HSG, die Hochgeschwindigkeitsgrafik. Das sind die Dateien, die mit "tsb." anfangen).

    Könntest du daraus ein CRT Image generieren und bereitstellen?

    Klar. Muss ich mir aber erstmal näher anschauen, hab ich noch nie gemacht... ;-) Letztendlich landet TSB an $8000 und wird vom System eh wie eine Cartridge behandelt.


    Arndt

    Das einzige, was ich bislang gefunden habe, ist GoDot. Nichts gegen das Tools, da es aber recht viele Dateien sind würde ich es gerne aus einer Batch-Datei automatisiert machen.

    Wenn du nicht fündig wirst, könnte ich mal versuchen, einen Batch-Prozessor in Angriff zu nehmen, also sowas: 1. Welches Quellformat brauchst du? 2. Welche Disk soll deine Quelldisk sein? 3. Welche Dateien darauf willst du konvertieren? 4. Auf welche Zieldisk? 5. In welchem Zielformat? Dann müsste es 6. überwachen, wieviel auf die Zieldisk draufpasst und evtl. 7. zum Nachlegen auffordern.


    Meinst du sowas?


    Arndt

    dass hier viele Custom-Chars eingesetzt werden, die ja am Ende auch wieder "Grafik" erzeugen, und das ganze nicht wirklich REIN Text- oder ASCII/PETSCII-basiert ist...

    Natürlich ist das textbasiert! Der C64 hat eben die unschlagbare Eigenschaft, seinen Zeichensatz auf einfachste Weise manipulieren zu können, sodass eine textbasierte Benutzeroberfläche so aussehen kann wie eine grafische, siehe GoDot!


    Arndt

    Und zwischendurch mal wieder was Erbauliches :-) Damit man GoDot auch mal in Aktion sieht:


    Dies Bild hier hab ich vor ein paar Tagen auf Twitter gepostet (zeigt Nick, den Weltraumfahrer von Hansrudi Wäscher - ein Jugendidol von mir). Ist von einem gescannten Titlebild der "Sprechblase" entnommen und so vorbearbeitet, dass es in Multicolor gut rüberkommt (was bei HRW nicht so einfach ist, der strichelt nämlich viel in seinen Comics, was am C64 naturgemäß alles verlorengeht):



    Jetzt aber die eigentliche Aktion! Ich dachte mir, wie wäre es, wenn man das Ganze nur als Hintergrund verwendet und den Schriftzug in groß davorlegt? Dann müsste man dieses Bild möglichst unscharf und abgeschwächt erscheinen lassen. Wie geht das?


    Zuerst mit Blur High, und zwar (damit es *richtig* unscharf ist) gleich 9 Mal (!). Das Ergebnis ist ein Graustufenbild (also ohne Farben). Für eine brauchbare Darstellung auf dem C64 konvertieren wir das in die 5 Hardwaregraustufen (mit ApplyDither, Einstellung: Hires, 5 Cols). Fehlen immer noch die Ursprungsfarben, es ist ja jetzt Grau in Grau. Die werden ganz schwach wieder rein"dotiert" mit Membrane, Einstellung Multi, 87.5%) und dann 4Bit&Mask. Je kleiner die Prozentzahl hier, desto mehr vom Original wird wieder ins Bild gepumpt (ist hier also wenig, nur ein Achtel der Originalfarben). - Für den Schriftzug hab ich eine größere Version des Logos genommen (den Schatten auch ein wenig durchlässig gemacht, wie eben beschrieben) und dann ebenfalls mit 4Bit&Mask darübergelegt (und mithilfe von QuickMask). Kommt das dabei raus:



    Gefällt mir irgendwie... ;-) Vor allem: Alles (!) mit GoDot gemacht!


    Wäre ja vielleicht ein Bastelprojekt für die Hardcore-Harwareentwickler hier. Leider gibt es zu dem ganzen proprietären Kram heutzutage keine ordentliche Doku mehr und jede Cam dürfte da ihren eigenen Raw-Code produzieren. GGf. kann da aber die Linux-Gemeinde mit Infos aushelfen.

    Ich hab von Vanessa auch die Platinendatei und eine professionelle Blockzeichnung der Schaltung bekommen. Da müsste doch was zu machen sein!


    Arndt