DOS Wedge
C-64 Wedge / DOS Wedge / DOS Manager 5.1 | |
---|---|
Entwickler | Bob Fairbairn |
Verleger | Commodore |
Release | 1982 |
Lizenz | Vollversion |
Plattform(en) | C64 |
Steuerung | |
Medien | |
Sprache(n) | |
Information | Verschiedene Versionen Bestandteil des Commodore Assembly Development System Package, aber auch der Commodore Test-/Demodisketten |
Zu den meisten Commodore-Laufwerken gibt es ein kleines Programm namens DOS Wedge, das als kleine BASIC-Erweiterung folgenden Eigenschaften aufweist:
- Der Fehlerstatus des Floppy-Laufwerks kann mit einem einfachen Befehl ausgelesen werden.
- Das Inhaltsverzeichnis einer Diskette kann angezeigt werden, ohne das im Speicher befindliche BASIC-Programm zu zerstören.
- Eine kompakte Befehlssyntax erlaubt das komfortable Absenden von Floppy-Befehlen.
DOS Wedge für den C64[Bearbeiten | Quelltext bearbeiten]
Die DOS Wedge für den C64 ist ein von Bob Fairbairn geschriebenes Maschinenspracheprogramm, das den Speicherbereich $CC00–$CFFF (52224–53247) belegt.
Laden der Erweiterung[Bearbeiten | Quelltext bearbeiten]
Die DOS Wedge von der Test-/Demodiskette (1541, 1570/1571) wird auf die folgende Weise im C64 aktiviert:
- Laden und Starten des BASIC-Programms "C-64 Wedge"
- C-64 Wedge lädt nun den Maschinenspracheteil "DOS 5.1" in den Speicher $CC00-$CF58 (52224-53080) und startet ihn, woraufhin die Einschaltmeldung "DOS MANAGER V5.1" erscheint.
Die neuen Befehle[Bearbeiten | Quelltext bearbeiten]
Statt @ kann alternativ immer > genommen werden. Ein Wert in eckigen Klammern ist optional.
@ | Fehlerkanal auslesen (Achtung, Gerät muss bereit sein, sonst hängt der Befehl) |
@$ | Directory verlustfrei anzeigen |
@#gnr | Festlegen der Gerätenummer der anzusprechenden Floppy, z.B. @#8 oder @#9 |
/dateiname | Laden eines BASIC-Programms |
↑dateiname | Laden und Starten eines BASIC-Programms |
%dateiname | Laden eines Maschinenspracheprogramms |
←dateiname | Speichern eines BASIC-Programms |
@diskbefehl | Floppy-Befehl senden, z.B. @N:diskname[,id] - Formatieren (ohne ID Schnellformatieren) einer Diskette (NEW) |
@Q | Wedge deaktivieren |
Anmerkungen[Bearbeiten | Quelltext bearbeiten]
- Syntax
- Wie andere BASIC-Befehle können die neuen Befehle auch eingerückt in eine Zeile geschrieben werden.
- Führende Leerzeichen werden ignoriert.
SYS 52224
schaltet DOS Wedge wieder ein, wenn er mit @Q deaktiviert worden ist.
- Will man die DOS-Befehle auch in Programmen verwenden, so müssen die Namen der Befehle hinter dem jeweiligen ersten Zeichen in Anführungszeichen eingegeben werden, also z.B. @"$", /"DOS*" oder ←"Test".
- Die Befehle der DOS Wedge sind praktisch zu einem Standard geworden und sind z.B. im Befehlsvorrat vieler Floppyspeeder enthalten, teils in erweiterter oder verbesserter Form. Auch manche Maschinensprachemonitore haben die '@'-Syntax in ihren Befehlsschatz aufgenommen.
- DOS Wedge gibt es auch als Teil der BASIC-Erweiterung TSB. Mit dem Befehl INST lädt TSB DOS Wedge nach.
Eckige Klammern[Bearbeiten | Quelltext bearbeiten]
Vollkommen undokumentiert ist die Eckige-Klammer-Funktion, die allerdings auch nie richtig zu Ende programmiert wurde. Beim Laden, Speichern und beim Anzeigen des Directorys, kann man mithilfe der eckigen Klammern Dateinamen von 16 Zeichen Länge verkürzt eingeben. Innerhalb zweier eckiger Klammern steht dabei das letzte Zeichen des Dateinamens, davor dürfen mehrere Zeichen stehen (zusammen mit dem Zeichen in der Klammer aber nicht mehr als 16). Durch die Klammer wird der Teil zwischen den Zeichen vor der Klammer und dem Zeichen in der Klammer aufgefüllt mit Leerzeichen oder - wenn das letzte Zeichen vor der Klammer ein Stern war - mit Fragezeichen.
Da diese Funktion ausschließlich mit Dateinamen von 16 Zeichen Länge arbeitet, ist der Nutzen eher gering. Man kann allerdings mit einem POKE nach $CF24 die Länge der Auffüllung manipulieren und hinter die Klammer einen Stern (oder andere Zeichen) setzen für (beliebige) Zeichen nach dem letzten. Der Standardwert an $CF24 ist 15.
Beispiele:
@$:a*[b] gibt alle Dateinamen aus, die 16 Zeichen aufweisen, mit "a" beginnen und mit "b" enden. ←datei[1] speichert eine Datei namens "datei 1" (Namenslänge: 16 Zeichen) POKE $CF24,3:@$:*[.]* gibt alle Dateien aus, die an vierter Stelle einen Punkt im Namen tragen.
Interna[Bearbeiten | Quelltext bearbeiten]
Die Wedge integriert sich ins BASIC durch einen Patch der CHRGET-Unterroutine im RAM ab $0073 (115). Dabei wird jedes Zeichen geprüft, das der BASIC-Interpreter verarbeitet. Ist es ein Befehl der Wedge, wird die zugehörige DOS-Wedge-Routine aufgerufen. Wichtig für Programmierer: In der gepatchten CHRGET-Routine werden die beiden Zeropage-Adressen $A6 und $A7 als Zwischenspeicher für Akku und X-Register verwendet.
Die geänderte CHRGET-Subroutine als SMON Disassembler-Listing. Rechts im Kommentar die Originalwerte.
,0073 E6 7A INC 7A ,0075 D0 02 BNE 0079 ,0077 E6 7B INC 7B ,0079 AD 08 02 LDA 0208 ,007C 4C F3 CC JMP CCF3 ;,007C C9 3A CMP #3A ,007F 0A ASL ;,007E B0 0A BCS 008A ,0080 C9 20 CMP #20 ; Wiedereinsprung aus dem Wedge ,0082 F0 EF BEQ 0073 ,0084 38 SEC ,0085 E9 30 SBC #30 ,0087 38 SEC ,0088 E9 D0 SBC #D0 ,008A 60 RTS
Rücksprung in die CHRGET-Routine:
,CD1E C9 3A CMP #3A ,CD20 B0 03 BCS CD25 ,CD22 4C 80 00 JMP 0080 ; CHRGET Rest ausführen ----------------------------------- ,CD25 4C 8A 00 JMP 008A
DOS Wedge v5.2[Bearbeiten | Quelltext bearbeiten]
Auf der Begleitdiskette zur 1764 REU befindet sich die neuere Version 5.2 der DOS Wedge aus dem Jahr 1986, die im Gegensatz zur Version 5.1 mit dem RAMDOS zusammenarbeitet. Sie ist nicht über eine modifizierte CHRGET-Routine ins System eingebunden, sondern über den umgeleiteten Vektor $0300 auf die Fehlerausgabe-Routine. Fehler 11 (Syntax-Error) wird abgefangen und statt dessen auf einen Befehl des DOS v5.2 geprüft. Die DOS-Befehle stimmen mit denen des DOS Managers 5.1 weitgehend überein bis auf die folgenden Besonderheiten:
- @#gr (gr = 8,9,...) gibt es nicht mehr.
Statt dessen wird die Laufwerksnummer einfach im Befehl mit angegeben, z.B.
- @9
- @9$
- /9"dateiname"
Die zuletzt benutzte Laufwerksnummer bleibt dann solange aktiv, bis eine andere benutzt wird.
Fehler: Die Ladebefehle "/" bzw. "↑" und "%" sind nicht mehr aus der Directory-Anzeige heraus nutzbar und führen dort zu einem ?FILE NOT FOUND ERROR. Nur wenn der Dateiname ohne Anführungszeichen direkt hinter dem Befehl steht, wird geladen.
Artikel[Bearbeiten | Quelltext bearbeiten]
- "Das DOS 5.1 auf der Demo-Diskette" im 64'er Sonderheft 1986-05 auf archive.org
- Macro Assembler Development System (Kap. 5.0 ff.)
Siehe auch[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
Wikipedia: DOS Wedge |
- Commodore DOS Wedges: An Overview von Jim Butterflield in Compute! 41
- project64 MAPPING THE Commodore 64 siehe CHRGET
- CBM 2040/3040/4040/8050 Disk Drive Manual (PDF) (für Doppellaufwerksbefehle)
DOS Wedge erweitern:
- Enhanced Commodore 64 DOS Support von Stephen S. Melsheimer in Compute! 54
- CBM DOS Wedge für BASIC V2 und V4 (von Nils Eilers)
- SmallDOS