Hallo Besucher, der Thread wurde 1,2k mal aufgerufen und enthält 8 Antworten

letzter Beitrag von JeeK am

Programm mit ASM speichern?

  • Hallo, guten Tag.
    Ich möchte diese Laderoutine nicht als Sys nutzen.
    Wer kann das bitte mal so kürzen ?
    Wo kommt bitte der Namensstring rein?


    Danke.
    Gruss


    --------------------
    SYS 49152 "NAME",4096,8192 (Programm NAME ab Adresse $1000-$2000 speichern)

  • Wo kommt bitte der Namensstring rein?

    In den unten stehenden Code nirgends.


    Die Sys-Zeile sagt ja folgendes:

    • Springe zu 49512 ($c000) wo ja der gepostete Code liegt
    • Speichere den Bereich von $1000 bis $2000 in eine neue Datei namens "NAME"
  • Die Routine FRMEVL = $e257 macht das. Die wertet einen Ausdruck (Dateinamen-Parameter) aus, ruft die Routine $B6A3 auf, die prüft, ob es sich um einen String handelt, liest den Stringdescriptor aus (Länge und Adresse des Strings) und gibt nebenbei auch den temporären String am Stringheap gleich wieder frei, falls dieser dort gelandet ist. Am Ende werden dort auch noch mit Aufruf von $FFBD die Dateinamenparameter gesetzt.


    Wenn man FRMEVL nicht verwendet, muss man die Dateinamenparameter selbst setzen,



    Code
    1. FNAME !text "NAME"
    2. lda #4 ; Namenslänge
    3. ldx #<FNAME ; Adresse low
    4. ldy #>FNAME ; Adresse high
    5. jsr $FFBD ; Set Filename

    (siehe $FFBD)

  • Hallo, guten Tag.


    Das einladen von 255 Bin Daten( 0- 255 der Wert) aus einer Datei funktioniert nicht so richtig.
    Die Daten sind auf der D64 in SEQ abgelegt.


    Es werden nur ca 90 Zeichen ab Adresse $400 angezeigt die aber nicht die Daten wiedergeben aus der Datei.
    Irgend etwas läuft nicht so...


    Funktioniert das Speichern vom C64 auf die D64 ähnlich ab ?



    Das Laden in den C64 :


    Danke.
    Gruss

  • Das ldy #$2000 wird vermutlich als #$00 verstanden. Schreibt man eigentlich als ldy #>$2000 (für das High-Byte).
    D.h. der Filename wird ab Adresse $0000. Wer weiß, was die Floppy dann damit macht, welche Datei da wirklich geladen wird ... (mich wundert's, dass da dann überhaupt etwas geladen wird).
    Wenn das vielleicht irgendwie auf "*" hinausläuft, dann wird das zuletzt geladene herangezogen.


    Außerdem sollte man die besser die Kernal-Sprungleiste verwenden, statt in der Zeropage herumzupfrimmeln - ist ja auch kompakter. Z.B. beim Laden $FFD5, dieser Einsprung erlaubt ohnehin gleich die Startadresse anzugeben und sie muss daher nicht extra in $C2/$C3 geladen werden, sondern werden recht bequem per Register übergeben. :D