Hello, Guest the thread was called416 times and contains 6 replays

last post from OliBoe at the

1581 an C128DCR -> "DIRECTORY D1,U9" zeigt keine Files, "Load "$",9 klappt

  • Moin,


    leider sind meine tage- und wochenlangen Programmierorgien mit dem C128 schon 22+ Jahre her und ich verzweifel an NOOB Dingen...

    Wollte gerade die 1581 in Basic 7 ansprechen und wenn ich "Directory D1,U9" eingebe, dann erscheint nur der Diskettenname und die Anzahl der freien Blöcke - KEINE Dateien...

    Gebe ich das altbekannte "Load"$",9" ein, dann klappt alles...

    ...dafür ist mein Basicprogramm überschrieben, warum ich eigentlich die neuen Basic 7 Befehle nutzen möchte.


    Jemand eine Idee?

    lg,

    Oliver

  • Danke, strik !

    Ich hätte wetten können, dass ich zumindest "D0,U9" ausprobiert habe. Anscheinend aber nicht...


    Wofür sind denn die "Drive" Unterscheidungen?

    Also "Unit" verstehe ich -> 8 ist die eingebaute 1571, 9 die 1581 etc.

    Drive hatte ich wie bei den 8-Bit Ataris verstanden - war daher auch etwas verwirrt, da bei den Floppybefehlen ich dachte, dass "D" und "U" quasi synonym wären und daher doppelt gemoppelt...

    lg,

    Oliver

  • Wofür sind denn die "Drive" Unterscheidungen?

    Also "Unit" verstehe ich -> 8 ist die eingebaute 1571, 9 die 1581 etc.

    Drive hatte ich wie bei den 8-Bit Ataris verstanden - war daher auch etwas verwirrt, da bei den Floppybefehlen ich dachte, dass "D" und "U" quasi synonym wären und daher doppelt gemoppelt...

    lg,

    Wie die anderen schon schrieben hat es mit Doppellaufwerken zu tun.


    Etwas ausführlicher: Bei Commodore sind die Laufwerke "intelligent". Sprich, sie haben einen eigenen Prozessor, ROM und RAM und arbeiten völlig autark. Der Commodore-Rechner weiß recht wenig vom Innenleben der Floppy, so kann jede Floppy theoretisch völlig unterschiedlich aufgebaut sein.

    Die Unit ist nun die Adresse auf dem BUS, auf dem die Laufwerke angesprochen werden. Sie können Adressen von 0 bis 15 haben (wobei der Commodore die Adressen 0 bis 3 anders handhabt, sie werden "normalerweise" nicht auf den Bus ausgegeben, es sei denn, man verwendet die Routinen für den Direktzugriff auf den Bus).

    Die Adressen können also 4 - 15 sein.

    Die 4 und 5 sind normalerweise für Drucker reserviert. 6 und 7 sind üblicherweise nicht benutzt, daher fangen die Diskettenlaufwerke bei 8 an.

    Du sagst mit dem "U" also, welcher "externe Computer" ("Diskettencomputer") angesprochen werden soll. Das ist die sogenannte Geräteadresse oder "Primary Address".


    Beim C64 mit dem eingeschränkten BASIC 2.0 ist das z.B. die "8" beim Kommando: LOAD "$",8

    Nun können einzelne "Diskettencomputer" mehrere Laufwerke haben. Das ist beispielsweise bei den alten IEEE-Laufwerken 4040, 8050, 8250 oder auch der 8280 der Fall. Auch die MSD-2 hatte zwei Laufwerke.

    Man kann sie nun aber nicht durch die Geräteadresse unterscheiden. Hierzu hätte Commodore pro Diskettencomputer zwei Adressen reservieren und handhaben müssen, was nicht vorgesehen ist. Damit man sie trotzdem unterscheiden kann wird dem Namen des Files die "Drive-Number" vorangestellt. Das wird mit dem "D" ausgedrückt. Diese Laufwerke werden mit 0 beginnend aufsteigend durchnummeriert.

    Die Diskettencomputer, die nur ein Laufwerk besitzen, können mit der Angabe trotzdem etwas anfangen.


    Man gibt das z.B. mit dem "U" an, oder (im älteren BASIC 2.0) beim Directory-Befehl mit LOAD "$0",8 (für Laufwerk 0) oder LOAD "$1",8 (für Laufwerk 1). Wenn man noch weitere Angaben benötigt, dann wurde ein Doppelpunkt und dann die weitere Angabe ergänzt: So listet LOAD "$0:A*",8 alle Dateien, die mit "A" beginnen und auf Laufwerk 0 liegen. Wenn man die "0" nicht ergänzt kann man das auch als LOAD "$A*",8 schreiben, eine Schreibweise, die früher wohl geläufiger war. (Es gibt einen subtilen Unterschied bei Doppel-Laufwerken, den ich jetzt mal ignoriere).


    Das zeigt auch die allgemeine Schreibweise für das Drive: Es wird mit Doppelpunkt vorangestellt. LOAD "0:ABC",8 lädt also die Datei mit Namen "ABC" von Laufwerk 0, LOAD "1:ABC",8 die gleiche Datei vom Laufwerk 1.