DOS Wedge

Aus C64-Wiki
(Weitergeleitet von DOS-Wedge)
Zur Navigation springenZur Suche springen
DOS MANAGER V5.1 Startmeldung

Zu den meisten Commodore-Laufwerken gibt es ein kleines Programm namens DOS Wedge, das als kleine BASIC-Erweiterung folgenden Eigenschaften aufweist:


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:

  1. Laden und Starten des BASIC-Programms "C-64 Wedge"
    LOAD "C-64 WEDGE",8
    RUN
  2. 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]

DOS Wedge v.5.2 Startmeldung

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]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

  • 1541 mit Link für die Demo-Diskette
  • REU mit Link für die 1764-Utility-Diskette

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: DOS Wedge Sprache:english

DOS Wedge erweitern: