Hello, Guest the thread was called385 times and contains 8 replays

last post from dg5kr at the

Suche Hilfe bei der Disassemblierung für "BASIC 3.5 für C64" aus 64er, 1990, Ausgabe 6

  • Hallo zusammen,

    in dem Thread klick hier wurde über ein BASIC 3.5 (entnommen vom PLUS/4) für den C64 gesprochen und auf das Programm zum Laden verlinkt.
    Da ich mich in eineigen anderen Threads im Assemblerforum mit BASIC Erweiterungen beschäftige, interessierte mich das sehr.

    Leider habe ich ausser den HEXDUMP kein Assebmbler Listing

    Bei der heutigemn Nachfrage beim Markt&Technik Verlag, ob aus dem Heft "64er" aus 1990, Ausgabe 6 "BASIC für alle" ein Sourcecoe vorhanden ist musste man mir leider eine Absage erteilen.

    Nun versuche ich mittels Disassembler ein paar Routinen ausfindig zu machen.


    z.B. der Teil, wo die Vektoren für den Tokenizer und Detokenizer verbogen werden. Weiter wird beim betätigen der RESTORE Teste ein Reset ausgelöst und das BASIC Programm ist futsch. Das würde ich auch gerne ändern.

    Dann such ich den Teil, wo die Funktionstasten mit dem Text beim Start vorbelegt werden.


    Nun kommt die Frage warum. Nun, BASIC 3.5 war schon um Welten besser als V2. Ich möchte aber gerne aus meine EXBASIC V2+ Erweiterung einige Funktionen dort "einpflanzen".


    Wer hat Lust mir zu helfen?


    Lieben Gruß und schönen Rutsch...

  • Hi,
    bist du schon weiter gekommen?

    Gruß Höp

  • Hi,

    das ist der erste Lauf mit Regeneratror V1.7,
    der erstellt Sourcen für 64tass.

    64TASS.zip

    Gruß Höp

  • das ist der erste Lauf mit Regeneratror V1.7,
    der erstellt Sourcen für 64tass.

    64TASS.zip

    Das ursprüngliche Programm besteht aus:

    1. Basic-Header mit SYS zu Teil 2

    2. Verschieberoutine, endet mit Sprung zu $c000

    3. zu verschiebender Code, der erst nach $a000 verschoben wird


    Mit dem Disassemblieren von Teil 3 kann man also eigentlich erst dann sinnvoll anfangen, wenn man die Teile 1 und 2 entfernt und die Ladeadresse entsprechend auf $a000 angepasst hat - ansonsten werden sämtliche Sprünge innerhalb von Teil 3 als "external jumps" behandelt, da die Code-Verschiebung nicht beachtet wird.

  • Du bist durch die Tür gegangen. ;)
    Ich hatte nur den Eingang gezeigt, wie er es selbst machen kann.

    Der andere Ansatz wäre gewesen ein Vice-Image zu nehmen und sich dann dort die
    Routinen anzuschauen.

    Gruß Höp


    PS: Frohes neues Bacon.

  • Den Basic Teil mit dem SYS und die Verschiebe Routine habe ich schon rausgenommen. Das war recht einfacht.

    Problematisch ist der Rest. Soweit ich festgestellt habe wurde das BASIC versucht an den PLUS/4 anzupassen. Selbst große Teile der Zeropage wurden dazu dem PLUS/4 angepasst. Das heißt das Memorymap der Zeropage vom C64 ist danach nicht mehr anzuwenden. Ein Großteil der BASIC 3.5 Erweiterung läuft ab $C000. Problematisch wird aber der Teil ab $A000. Hier wurde das C64 BASIC nicht einfach nur ins RAM Kopiert und ein wenig verändert. Es liegt in $A000 ein völlig neues BASIC. Das heißt die Einsprungadressen der V2 BASIC Befehle befinden sich nun woanders. Aber wo? Leider sind die Analogien zum PLUS/4 nicht zu finden. Ein BASIC Befehl DIRECTORY zum Beispiel scheint bei DIESEM BASIC dann doch nicht da zu liegen wo es beim PLUS/4 liegt.

    Dann kommt noch das Problem das ich nicht weiß wie ich mit SMON zum Beispiel mir das RAM unter dem ROM $A000 anschaue. Also wie bekomme ich es hin, das ich beim SMON das Bankswitching aufs RAM einstelle?


    Es sieht wohl so aus, das ein "Reverse Engineering" dafür einfach zuviel Aufwand benötigen würde. Schade...

  • Ich weiß nicht, ob Dich das weiterbringt, aber Du kannst mal bei Github in die cbmsrc von Michael Steil (mist) schauen.

    Dort sind auch die Basic 3.5 Sourcen des Plus/4, C16 enthalten - ich meine dass die 64'er Basic 3.5 hieraus Basic-Befehle auf den C64 "portiert".


    Ebenso ist hier das Basic 7.0 vom C128 enthalten, was ja auch auf dem 3.5 des C16 basiert.

    https://github.com/mist64/cbmsrc