Die Floppy des Commodore 64

Aus C64-Wiki
Zur Navigation springenZur Suche springen


Die Floppy des Commodore 64 und VC-20: Für Einsteiger und Aufsteiger
Cover/Buchdeckel
Sprache deutsch
Autor(en) Hans Riedel, Claus Hentschel
Verlag Friedrich Kiehl Verlag GmbH, Ludwigshafen
Jahr 1984
ISBN ISBN 3-470-80431-1
Neupreis ATS 232,- DM 29,80,-
Datenträger
Seitenzahl 156
letzte Auflage 1. Auflage
Genre Programmieren, Hardware
Information





Das Buch "DIE FLOPPY DES COMMODORE 64 und VC-20" von Hans Riedel und Claus Hentschel versteht sich als Ergänzung zum Bedienungshandbuch der Floppy 1541.

Beschreibung[Bearbeiten | Quelltext bearbeiten]

Was im Handbuch bereits ausführlich behandelt wurde, ist hier nur kurz zitiert. Andere Fragen, z.B. aus den Bereichen

werden dagegen ausführlich behandelt. Auch über die Technik der 1541 wird mit Abbildungen und Fotos informiert. Zu allen Themen gibt es dabei ausführliche Beispiele. Auf 156 Seiten findet man so viel Nützliches zum Lernen oder Nachschlagen. Der Anhang enthält verschiedene Programme in Basic oder Maschinensprache zum Eintippen, die zum Üben und Weiterentwickeln gedacht sind:

  • Backup
  • Datei-Kopierer
  • Relativ-Datei-Kopierer
  • Dis-Assembler
  • Hardcopy VC1526
  • Diskmonitor 1541


Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]

                                      Seite
Vorwort .................................................................  5 
Einführung...............................................................  9 

1   Beschreibung der 1541................................................ 10
    1.1 Die Hardware .................................................... 10
    1.2 Die Verbindung zum Commodore 64 ................................. 10
    1.3 Anschluß und Inbetriebnahme...................................... 13

2   Die Diskette ........................................................ 14
    2.1 Physikalischer Aufbau der Diskette .............................. 14
    2.2 Logischer Aufbau der Diskette ................................... 15
    2.3 Die Blockverkettung ............................................. 16
    2.4 Die BAM (Block Availabilitiy Map)................................ 17
    2.5 Das Directory (Inhaltsverzeichnis)............................... 22

3   Was speichert die 1541 .............................................. 25
    3.1 Programmdateien ................................................. 25
        3.1.1 BASIC-Programme ........................................... 26
        3.1.2 Maschinenprogramme ........................................ 26
    3.2 Sequentielle Dateien ............................................ 29
    3.3 Relative Dateien ................................................ 32
        3.3.1 Aufbau der relativen Datei ................................ 33
        3.3.2 Arbeiten mit relativen Dateien ............................ 37 

4   Wie arbeitet die 1541? .............................................. 44
    4.1 Die Kanäle der 1541 ............................................. 44
    4.2 Die Datenpuffer der 1541 ........................................ 47
    4.3 Der Datentransport .............................................. 48
    4.4 Der Fehlerkanal 15 .............................................. 50
    4.5 Der Status ...................................................... 52

5   Die BASIC-Befehle zur Diskettenverwaltung ........................... 53
    5.1 Allgemeiner Aufbau des Kommandos ................................ 53
    5.2 Die Disketten-Kommandos ......................................... 55
        5.2.1 Disketten anlegen/löschen ................................. 55
        5.2.2 Disketten initialisieren .................................. 56
        5.2.3 Disketten bereinigen ...................................... 57
    5.3 Die Datei-Kommandos ............................................. 57
        5.3.1 Dateien umbenennen auf der Diskette ....................... 57
        5.3.2 Dateien kopieren auf der Diskette.......................... 58
        5.3.3 Dateien löschen auf der Diskette .......................... 59

6   Die BASIC-Befehle zur Dateibearbeitung .............................. 60
    6.1 Datenkanal öffnen ............................................... 60
    6.2 Daten schreiben und lesen ....................................... 62
    6.3 Umgang mit Status und Fehlermeldung ............................. 64
    6.4 Datenkanal schließen ............................................ 65 

7   Der Direktzugriff auf die Diskette .................................. 65
    7.1 Vorbereitungen .................................................. 66
    7.2 Der Ablauf des Direktzugriffs ................................... 70
    7.3 Allgemeiner Aufbau der Kommandos ................................ 75
        7.3.1 Block-Read................................................. 77
        7.3.2 Block-Write................................................ 78
        7.3.3 Block-Execute.............................................. 79
        7.3.4 Buffer-Pointer............................................. 80
        7.3.5 Block-Allocate............................................. 81
        7.3.6 Block-Free................................................. 82
        7.3.7 Memory-Read................................................ 83
        7.3.8 Memory-Write............................................... 84
        7.3.9 Memory-Execute............................................. 85
        7.3.10 Der U1-Befehl ............................................ 86
        7.3.11 Der U2-Befehl ............................................ 87
        7.3.12 Die Sprungbefehle ........................................ 88
    7.4 Anwendung der Kommandos ......................................... 89

8   Anwendungen des Direktzugriffs ...................................... 91
    8.1 Ein Inhaltsverzeichnis .......................................... 92
    8.2 Sortieren der Directory ......................................... 96
    8.3 Ein Datei-Bett-Programm ......................................... 98
    8.4 Ein Datei-Sicherungs-Programm ................................... 99
    8.5 Ein Disketten-Manager .......................................... 100

9   Programmierung der 1541 in Maschinensprache ........................ 103
    9.1 Der Zugriff über logische Kanäle ............................... 104
    9.2 Dateiverwaltung in Maschinensprache ............................ 109
        9.2.1 Das "Umschalten" zwischen dem Benutzer und der 1541 ...... 109
        9.2.2 Relative Dateien in Maschinensprache ..................... 111
        9.2.3 Der Direktzugriff in Maschinensprache .................... 113
    9.3 Das Zusammenspiel mit BASIC .................................... 115
    9.4 Anwendungen .................................................... 117
        9.4.1 Lesen eines Blocks in den Bildschirm ..................... 118
        9.4.2 Schreiben eines Blocks vom Bildschirm .................... 123
        9.4.3 Darstellen der gelesenen Bytes ........................... 127

10  Die 1541 am VC20 ................................................... 131

Anhang ................................................................. 133
Sachwortregister ....................................................... 154
Händler-Verzeichnis .................................................... 156


Leseprobe[Bearbeiten | Quelltext bearbeiten]

9.1 Der Zugriff über logische Kanäle

Wir wollen in diesem Abschnitt die Routinen des Betriebssystems des Commodore 64 besprechen, die eine Umsetzung der BASIC-Befehle in Maschinensprache ermöglichen. Wir werden also Befehle wie OPEN, PRINT#Z, GET#, INPUT# und CLOSE in Maschinensprache nachbilden.

Beginnen wir mit der Beschreibung der Betriebssystem-Routinen des Commodore 64. Wir werden zuerst den Namen der Routine, dann die Ansprungadresse und anschließend eine Funktions-Beschreibung der Routine geben.

OPEN    $FFC0   Öffnen eines Kanals im [[Commodore 64]]
SETIN   $FFC6   Kanalfestlegung für nachfolgende Lesezugriffe
SETOUT  $FFC9   Kanalfestlegung für nachfolgende Schreibzugriffe
CLRCHN  $FFCC   Rücksetzen der Kanäle auf Tastatur und Bildschirm
CHRIN   $FFCF   Lesen eines Zeichens über den Lesekanal
CHROUT  $FFD2   Schreiben eines Zeichens über den Schreibkanal
CLOSE   $FFC3   Schließen eines Kanals
SETLFS  $FFBA   Setzen der OPEN-Parameter
SETNAM  $FFBD   Setzen des Kommando-Strings

Dies sind die Routinen, die es ermöglichen, die BASIC-Befehle zur Datei- und Disketten-Verwaltung nachzubilden. Sie werden im folgenden beschrieben und anhand von Beispielen erklärt.

Sämtliche Beispiele sind für den Commodore-Assembler aufgeführt. Bei Benutzung anderer Assembler für den Commodore 64, wie z.B. des MAE der Firma SM sind nur minimale Änderungen in der Syntax vorzunehmen. Grundsätzlich ist es ratsam, Maschinenprogrammierung nur mit einem Assembler vorzunehmen. Dies ist wesentlich übersichtlicher und vereinfacht die Programmierung ungemein.

OPEN

Diese Routine bildet exakt den BASIC-Befehl OPEN nach.
Wie in BASIC benötigt auch diese Routine Parameter, und zwar

die Kanalnummer         LFN    (Logical File Number),
die Gerätenummer        DN     (Devise Number),
die Sekundäradresse     SA     (Secondary Adress),
den Kommando-String            (optional).

Diese Parameter müssen vor dem Aufruf der Routine OPEN feststehen!
Das Betriebssystem des Commodore 64 besitzt auch dafür zwei Routinen,
die die Parameter festlegen, also vorher aufgerufen werden massen.
Es sind dies

SETLFS                  und     SETNAM

SETLFS setzt beim Aufruf voraus, daß die Parameter LFN, DN und SA 
in dieser Reihenfolge im Akkumulator, dem X-Register und dem 
Y-Register stehen.

SETNAM benötigt die Länge des Strings im Akkumulator sowie die 
Adresse des Strings in der Darstellung LSB und MSB im X-Register
und im Y-Register.

Erst nach diesen beiden Routinen kann die OPEN-Routine aufgerufen werden. Soll kein Befehls-String übergeben werden, so ist die SETNAM-Routine vorsichtshalber vorher mit einer Stringlänge von 0 aufzurufen.

Beispiele:

1. Kanal öffnen: OPEN 2,8,5

 LDA #2                ;Kanal 2
 LDX #8                ;Geraetenummer 8 (Floppy 1541                  
 LDY #5                ;Sekundaeradresse 
 JSR SETLFS            ;Parameter setzen
 LDA #0                ;Stringlaenge 0 (Stringadresse kann entfallen)
 JSR SETNAM            ;Parameter setzen
;
 JSR OPEN              ;Kanal öffnen

2. Diskette formatieren: OPEN 15,8,15,"N:DISKETTE 2,D2"

        LDA #15               ;Kanal 15
        LDX #8                ;Geraeteadresse 8
        TAY                   ;Sekundaeradresse 15
        JSR SETLFS            ;Parameter setzen
       ;
        LDA #ENDKOM-KOMMND    ;Laenge des Stringes KOMMND
        LDX #<KOMMND          ;LSB der KOMMND-Adresse
        LDY #>KOMMND          ;MSB der KOMMND-Adresse
        JSR SETNAM            ;Parameter setzen
       ;
        JSR OPEN              ;Kanal oeffnen und Kommando KOMMND senden
        .
        .
        .
 KOMMND .BYTE 'N:DISKETTE 2,D2'
 ENDDOM

3. Sequentielle Datei zum Schreiben öffnen: OPEN 3,8,3,"DATEI,S,W"

      LDA #3
      LDX #8
      TAX
      JSR SETLFS
      LDA #NAMEND-NAME
      LDX #<NAME
      LDY #>NAME
      JSR SETNAM
      JSR OPEN
      .
      .
 NAME .BYTE 'DATEI,S,W'


Meinung[Bearbeiten | Quelltext bearbeiten]

Petrus: Dieses Buch habe ich immer gern benutzt, weil es übersichtlich gegliedert ist und - obwohl recht dünn - viele Informationen für die Programmierung der 1541 enthält. Einziger Wermutstropfen: die schlechte Schriftqualität der Listings.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Die Floppy 1541 von Karsten Schramm

Weblinks[Bearbeiten | Quelltext bearbeiten]