Diskwechsel unter Basic erkennen

Es gibt 5 Antworten in diesem Thema, welches 884 mal aufgerufen wurde. Der letzte Beitrag (16. September 2024 um 16:56) ist von BIF.

  • Hallo,

    ich tüftle gerade daran, eine bequeme Lade-Speicherfunktion in einem Basic Programm einzubauen.

    Dh die Datei soll aus einer Directory-Liste ausgewählt werden können.

    Zum Listen des Verzeichnisses hab ich schon diesen Code gefunden, der sich hervorragend für meine Zwecke anpassen lässt (Danke EgonOlsen71:sad:

    Hier ein kurzes Listing, was das Directory in BASIC anzeigt, ohne alles zu zerstören:

    Code
    10 gosub 10000:end
    10000 ep$=chr$(0):open 1,8,0,"$"
    10010 poke 781,1:sys 65478:get a$,a$
    10020 get a$,a$,h$,l$:if st then sys 65484:close 1:return
    10030 print asc(h$+ep$)+256*asc(l$+ep$);
    10040 get a$,b$:if b$ then print a$b$;:if st=0 then 10040
    10050 print a$:goto 10020

    Bei langen Verzeichnissen kann das schon etwas dauern, bis das alles eingelesen ist.

    Deshalb meine Frage:

    kann man unter Basic erkennen (bzw aus dem Laufwerk abfragen), ob ein Diskettenwechsel stattgefunden hat?

    Die Daten halte ich mir ja im Speicher.

    Wäre kein Diskettenwechsel erfolgt, könnte ich die Daten erneut anzeigen, ohne von der Disk einlesen zu müssen

    Danke!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Hallo,
    eine Möglichkeit wäre, die ID der Diskette abzufragen.

    Hat aber den Nachteil dass das Programm dann bei Disketten mit der gleichen ID aus dem Tritt kommt.

    Gruß C-Man

  • Die Zeropage-Adresse $1C in der 1541 dürfte Dir anzeigen, ob ein Diskwechsel stattgefunden hat.

    Also kannst Du ja mal mit einem M-R auf diese Adresse herumexperimentieren. =)

  • Man könnte den Namen, die ID und den ersten Dateinamen zusammen abfragen. Dann hat man mehr Sicherheit.

    Aber am besten verwendest du TSB. Da kann man das Inhaltsverzeichnis schnell und einfach mit nur einem einzigen Befehl anzeigen lassen (dir). :)

  • eine Möglichkeit wäre, die ID der Diskette abzufragen.

    Hat aber den Nachteil dass das Programm dann bei Disketten mit der gleichen ID aus dem Tritt kommt.

    Daran hatte ich auch schon gedacht, aber das mit der ID ist wirklich so eine Sache.

    Ich selber formatiere alle Disks immer mit der selben ID, bin also hier der schlechteste Patient von allen :biggrin:

    Aber am besten verwendest du TSB.

    Ich warte täglich darauf, dass endlich die C128 Version davon erscheint. Darauf soll das Programm nämlich laufen. :smile:

    Darüberhinaus ist dir ja für die Ausgabe am Bildschirm gemacht.

    Die Routine von oben konnte ich ganz einfach so umbauen, dass die Daten in einem Array landen.

    Damit hab ich 100% unter Kontrolle, wie ich damit arbeite - selbst wenn das Directory länger als der Bildschirm ist.

    Die Zeropage-Adresse $1C in der 1541 dürfte Dir anzeigen, ob ein Diskwechsel stattgefunden hat.

    Also kannst Du ja mal mit einem M-R auf diese Adresse herumexperimentieren. =)

    Vielen Dank, das klingt nach dem, wonach ich gesucht hab :smile:

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Grundsätzlich habe ich mir überlegt, kann man den Fehlerkanal der Floppy in einer Schleife abfragen.
    Falls die Diskette entfernt wird, sollte ein Fehler auftreten.

    1 :close1:open1,8,15:close1:on-(st=0)goto1:if st then print"diskwechsel"

    (Nicht getestet)

    Schönen Gruß.