Beiträge von WebFritzi im Thema „Bytes aus File und Diskettengröße auslesen“

    Hi, danke. Aber das kannte ich schon (Bitte melde dich an, um diesen Link zu sehen.). Allerdings war mir nicht ersichtlich, wo am Ende die ominöse Zahl (00, 01, 41, etc.) drin stehen soll.

    Ich möchte, dass GUI64 mit allen gängigen Laufwerkstypen arbeitet, also mit 1541, 1570, 1571 und 1581. Wenn's mit anderem Zeugs (SD2IEC, Festplatten etc.) auch klappt, wunderbar - muss aber nicht. Das können dann gerne andere machen.

    Die meisten zu startenden Programme dürften nach $0801 geladen werden, müssen dann aber mit RUN oder SYS20xx gestartet werden - nicht mit SYS2049.

    Ah, ja, richtig. Also, entweder ich parse den BASIC-Stub, oder ich zapfe den Befehl RUN an.

    Was meinst du mit "mit RTSs quittieren"? Überflüssige Rücksprungadressen holt man normalerweise mit PLA vom Stack.

    Oder so. Ich würde ihn wohl eher in die Game-Loop zurückschicken und die mit einem Exit-Code verlassen. Dann ist nichts Überflüssiges mehr auf dem Stack.

    Laufwerke musst du sowieso identifizieren - es war ja die Rede von einem Schnelllader

    Das habe ich erstmal begraben. Es sei denn, ich bekomme Hilfe. Alleine werde ich das wohl nicht hinkriegen.

    Mit der BAM kenne ich mich nicht aus.

    Ich hab's jetzt doch erstmal so gemacht, dass ich alles zusammen zähle. Wenn die Diskette manipuliert ist, dann hat der User eben Pech gehabt. Wenn die BAM allerdings zuverlässiger sein sollte, wäre ich gewillt zu lernen. :smile:

    Ist hier nicht goloMAK der BAM-König?

    Wenn man weiß, wie man die BAM auslesen muss, dann weiß man auch, mit welchem Laufwerk man es zu tun hat, dann braucht man auch keine BAM mehr. :)

    Es geht ja um die Gesamtanzahl der Blöcke ("Sektoren?) und nicht um das Laufwerk.

    Oder man holt sich das Directory und zählt die belegten Blöcke und die freien zusammen?

    Dazu bin ich zu faul. Außerdem bin ich nicht sicher, ob man dem dann auch trauen kann.

    das Floppy-ROM auf ein paar typische Bytefolgen hin zu untersuchen und damit das Laufwerk zu identifizieren.

    Ja, das geht z.B. so relativ zuverlässig:

    Hab ich aus dem Forum von lemon64.com kopiert. Hatte nur gehofft, dass die Größe irgendwo hinterlegt ist. Du hast mir die Frage beantwortet: Nein. Vielen Dank dafür.

    goloMAK Danke für deine aufschlussreiche Antwort.

    Wenn ich mein DOS-Listing richtig lese, kann man sich nach dem Aufruf des Directory die Blockanzahl in den Speicherstellen $02FA (lo) und $02FC (hi) abholen.

    Das sind aber laut Bitte melde dich an, um diesen Link zu sehen. nur die freien Blocks, die ich ja auch beim Einlesen der Directory mitgeliefert kriege. Ich bin aber an der Gesamtgröße interessiert.

    Ich möchte gerne aus GUI64 heraus beliebige PRG-Dateien starten können. Mein Plan dafür:

    1. Auslesen der ersten zwei Bytes aus der PRG-Datei. Das ist ja die Adresse, an die die Datei mit LOAD"...",8,1 geladen wird.
    2. Den Code zum Laden und Ausführen der Datei irgendwo in den Speicher schreiben, wo er von der geladenen Datei nicht überschrieben wird.
    3. Alle JSRs mit RTSs quittieren (Stack frei machen) und per JMP in den Lade- und Ausführcode springen --> Datei wird an die in Schritt 1 ermittelte Adresse geladen und ausgeführt.

    Die Schritte 2 und 3 kriege ich schon hin. Es hapert bei Schritt 1. Könnte mir dabei bitte jemand helfen?

    Noch eine Zusatzfrage: Ist auf einer Diskette irgendwo hinterlegt, wie viele Blocks insgesamt darauf passen? Und wenn ja, wie kann ich das einlesen?