Krill Loader

Es gibt 113 Antworten in diesem Thema, welches 19.117 mal aufgerufen wurde. Der letzte Beitrag (30. Juli 2025 um 10:24) ist von TD1334.

  • Ich hab grad mal quer über den src gelesen... der Wahnsinn, wie man mit dem cc65 Sources aufblähen kann. Und meiner Meinung nach total unübersichtlich. Da bleib ich doch lieber beim Input-Ass oder Profi-Ass. Aber ich muss sagen, das ist schon interessant, sich mal anzusehen.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Inwiefern aufblähen? Also welche ca65-Konstrukte (ca65, wohlgemerkt, der Loader ist immer noch in Assembler geschrieben) machen es unnötig groß?

    Und beachte, dass der eigentliche Quelltext in loader/src liegt und eben aufgeteilt in bestimmte logische Einheiten (Host-Teil mit Hardware-Abstraktions-Schicht, Laufwerks-Teil, Entpacker usw.) ist.

  • Was den Code auf den ersten Blick schwer zu lesen macht ist aber nicht ca65 (die Syntax ist ja wirklich quasi identisch mit allen anderen Assemblern), sondern die ganzen .if-Statements. Die kommen naturgemäß vor bei einem sehr konfigurierbaren Sourcecode, wie es der Loader nun einmal ist. Ein Editor mit Code-Folding macht das ganze wesentlich übersichtlicher ;).

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Was den Code auf den ersten Blick schwer zu lesen macht ist aber nicht ca65 (die Syntax ist ja wirklich quasi identisch mit allen anderen Assemblern), sondern die ganzen .if-Statements. Die kommen naturgemäß vor bei einem sehr konfigurierbaren Sourcecode, wie es der Loader nun einmal ist. Ein Editor mit Code-Folding macht das ganze wesentlich übersichtlicher ;).

    Genau. Eine bessere Möglichkeit als Conditional Assembly, um eben diverse Optionen zur Bauzeit auszuwerten (und somit möglichst kleinen und performanten Code zu generieren), habe ich bisher nicht gefunden.

    Die Datei "resident.s" (Loader-Calls im C-64-RAM) ist da auch der Worst Case, im Installer und dem Laufwerkscode gibt es nicht so viele .if-Statements. :)

  • Krill :

    Mal ne Frage am Rande:

    Mit wie viel Speicherverbrauch auf c64 Seite muss ich rechnen, wenn ich den Loader verwenden würde?

    ____________________________________
    Bitte melde dich an, um diesen Link zu sehen.

  • Krill

    Ich habe das gerade mal unter WSL auf meinem W10 PC ausprobiert. Soweit hat es gut funktioniert, nur wie sage ich dem MAKE welchen Decruncher er verwenden soll?

    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.Bitte melde dich an, um diesen Link zu sehen.

  • Steht im Readme! :D

    Ich muss blind sein ... denn ich habe das README durchgelesen und finde den Punkt nicht


    EDIT: bin dann hier fündig geworden: loader\include\config.inc - Danke für nichts!

    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.Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von TD1334 (29. Juli 2025 um 15:11)


  • EDIT: bin dann hier fündig geworden: loader\include\config.inc - Danke für nichts!

    Zitat
    Code
    Configuration
    -------------
    The main configuration file is loader/include/config.inc. The individual
    settings of the options are evaluated at build time and directly control various
    aspects of the loader's functionality and its memory footprint.

    Gut, ich hatte das expliziter in Erinnerung - vllt könnte da noch n Nebensatz rein, der die Option für Dekompressoren erwähnt.


  • EDIT: bin dann hier fündig geworden: loader\include\config.inc - Danke für nichts!

    Zitat
    Code
    Configuration
    -------------
    The main configuration file is loader/include/config.inc. The individual
    settings of the options are evaluated at build time and directly control various
    aspects of the loader's functionality and its memory footprint.

    Gut, ich hatte das expliziter in Erinnerung - vllt könnte da noch n Nebensatz rein, der die Option für Dekompressoren erwähnt.

    Sorry für das Danke für nichts!. Ich war gestresst. War gestern kein guter Tag für mich gewesen, schlecht geschlafen, Übelkeit und dann habe ich die Info nicht gefunden und habe dann nur RTFM bekommen :smile:

    Vielleicht ein kleiner abgesetzter Text der nur kurz das mit den Dekompressoren erklärt.

    Ich bin vorher die ganze Zeit davon ausgegangen, dass ich das als Option beim MAKE angeben kann und klar habe ich dazu nichts gefunden.

    Sonst ist der Loader klasse. Habe ein wenig experimentiert. Ist es richtig, wenn mich meinen Augen nicht im stich gelassen haben, das der Loader nicht linear lädt?

    Ich schaue mir oft den Bitmapscreen an um zu sehen wie schnell etwas ist und bin der Meinung er hat die Blocks versetzt geladen.

    Eine Frage hätte ich noch. Ich teste mit Vice und dabei habe ich ein Laufwerk 9 als Verzeichnis auf dem PC gemappt. Da kommt immer die Meldung das er das Laufwerk nicht muten kann. Wird das Laufwerk codemässig stillgelegt, so das es nicht mehr auf den Bus reagiert?

    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.Bitte melde dich an, um diesen Link zu sehen.

  • Habe ein wenig experimentiert. Ist es richtig, wenn mich meinen Augen nicht im stich gelassen haben, das der Loader nicht linear lädt?

    Ich schaue mir oft den Bitmapscreen an um zu sehen wie schnell etwas ist und bin der Meinung er hat die Blocks versetzt geladen.

    Ja, es wird "out of order" geladen, also in quasi-zufälliger Reihenfolge - je nachdem, wie die Blöcke am Lesekopf vorbeigeflogen kommen.

    Dadurch ist es im Durchschnitt schneller und verzeiht besser schwankende/undefinierte Zeitfenster, in denen der Loader CPU-Zeit bekommt - er ist ja frei unterbrechbar und kann im Hintergrund laden.

    (Beim Entpacken während des Ladens wird dem Dekompressor aber normal ein linearer Byte-Strom zur Verfügung gestellt, und er wartet vor Lücken, bis diese geschlossen sind.)

    Eine Frage hätte ich noch. Ich teste mit Vice und dabei habe ich ein Laufwerk 9 als Verzeichnis auf dem PC gemappt. Da kommt immer die Meldung das er das Laufwerk nicht muten kann. Wird das Laufwerk codemässig stillgelegt, so das es nicht mehr auf den Bus reagiert?

    Normale/echte Laufwerke neben dem "aktiven" Laufwerk müssen codemäßig stillgelegt werden, damit sie dem Protokoll nicht dazwischenfunken.
    Das hat mit der sagenumwobenen ATN-Leitung und Bestätigung in Hardware (ATNA) zu tun.
    Virtuelle VICE-Laufwerke (ohne "True Drive Emulation") können nicht entsprechend zum Schweigen gebracht werden, weil dort kein 6502-Code ausführbar ist (analog auch Drucker am Bus oder SD2IEC ohne passende Firmware).

  • Ja, das mit der ATN Leitung dachte ich mir schon, ein Drucker stört ja ebenso.

    Das mit dem "out of order" ist cool! :biggrin:

    Als nächstes schau ich mir mal das Laden von komprimierten Files an ... :smile:

    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.Bitte melde dich an, um diesen Link zu sehen.