Die Floppy des Commodore 64
Die Floppy des Commodore 64 und VC-20: Für Einsteiger und Aufsteiger | |||
---|---|---|---|
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
- Dateitypen,
- Programmierung der Floppy in Maschinensprache,
- Logik der Befehlsübermittlung
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