|
|
|
Dieser Anhang bietet eine kurze Übersicht über die Befehle des Commodore 1541 Diskettenlaufwerks. Er ist nicht als Lehrbuch gedacht, sondern soll dazu dienen lange ungenutztes Wissen wieder aufzufrischen.
Falls Sie eine genauere Erklärung der Funktionsweise des Diskettenlaufwerks und eine detailierte Beschreibung aller Befehle mit zahlreichen Beispielen suchen, sollten Sie einen Blick auf das original C1541 Handbuch werfen. Es ist (in englischer Sprache) als e-Text bei Project64 (http://project64.c64.org), sowie in anderen Sprachen (u.a. Deutsch) bei iDoc (http://www.softwolves.pp.se/idoc/) verfügbar.
Das 1541 Disketten Laufwerk ist ein sehr flexibles Gerät. Es enthält eine CPU, RAM und ROM und stellt somit einen kleinen Computer dar, der viele verschiedene Befehle ausführen kann.
Verwenden Sie folgendes Programm um einen Befehl an das Diskettenlaufwerk zu senden:
10 OPEN 1, 8, 15 ; Befehlskanal öffnen 20 PRINT#1, Command$ ; Befehl schicken 30 CLOSE 1 ; Kanal wieder schließen
Mit dem folgenden Programm können Sie den Status des Diskettenlaufwerks anzeigen:
10 OPEN 1, 8, 15 ; Fehlerkanal öffnen 20 INPUT#1, EN$, ER$, TR$, SC$ ; Status lesen 30 CLOSE 1 ; Kanal schließen 40 PRINT "ErrNr: "; EN$ ; Ergebnisse anzeigen 50 PRINT "Error: "; ER$ 60 PRINT "Track: "; TR$ 70 PRINT "Sector:"; SC$
Power20 bietet folgende Befehle für die emulierten Diskettenlaufwerke:
OPEN 15, 8, 15 ; Befehlskanal öffnen
OPEN 5, 8, 5, "RelativeFile,L,";CHR$(40)
; Erstelle eine relative Datei mit
; 40 Byte Recordgröße
PRINT#15,"P"+CHR$(5)+CHR$(17)+CHR$(0)+CHR$(1)
; Setze die Dateiposition auf das erste
; Byte von Record 17 (Die Nummerierung
; von Records und der BytePos beginnt
; mit 1 (nicht 0))
PRINT#5,"Wichtige Daten" ; Daten schreiben
PRINT#15,"P"+CHR$(5)+CHR$(9)+CHR$(0)+CHR$(4)
; Setze die Dateiposition auf das vierte
; Byte von Record 9 (Die Nummerierung
; von Records und der BytePos beginnt
; mit 1 (nicht 0))
INPUT#5,X$ ; Daten lesen
CLOSE 5 ; Datei schließen
CLOSE 15 ; Befehlskanal schließen
OPEN 15, 8, 15 ; Befehlskanal öffnen
OPEN 5, 8, 5, "#" ; Kanal 5 als RAM Puffer öffnen
PRINT#15,"B-R: 5 0 18 2" ; Track 18 / Sector 2 in den Puffer von
; Kanal 5 einlesen
PRINT#15,"B-P: 5 0" ; Zeiger auf den Anfang des Blocks
FOR I = 0 TO 253 ; Ein Block ist max. 254 Byte
GET#5, A$ ; Ein Byte holen
IF (ST <> 0) THEN ... ; Auf Ende des Blocks prüfen
... ; Byte verarbeiten
NEXT I
CLOSE 5 ; Datenkanal schließen
CLOSE 15 ; Befehlskanal schließen
OPEN 15, 8, 15 ; Befehlskanal öffnen
OPEN 5, 8, 5, "#" ; Kanal 5 als RAM Puffer öffnen
PRINT#5, X$ ; Schreibt Daten ins RAM
PRINT#5, Y$ ; Schreibt mehr Daten ins RAM
PRINT#5, Z$ ; Schreibt noch mehr Daten ins RAM
(insgesamt: max. 254 Byte)
PRINT#15,"B-W: 5 0 18 2" ; Schreibt den RAM Puffer für Kanal 5
; auf Track 18 / Sector 2
CLOSE 5 ; Datenkanal schließen
CLOSE 15 ; Befehlskanal schließen
OPEN 1, 8, 15 ; Befehlskanal öffnen
PRINT#1,"B-A: 0 12 7" ; Block (Track 12 / Sector 7) belegen
INPUT#1, EN$, ER$, TR$, SC$ ; Fehlermeldung lesen - Ergibt
; den tatsächlich belegten Block
CLOSE 1 ; Befehlskanal schließen
PRINT "Track:;TR$;"Sector";SC$
OPEN 1, 8, 15 ; Befehlskanal öffnen
PRINT#1,"B-F: 0 12 7" ; Block (Track 12 / Sector 7)
; als frei markieren
CLOSE 1 ; Befehlskanal schließen
OPEN 1, 8, 15 ; Befehlskanal öffnen
PRINT#1, "M-R"+CHR$(52)+CHR$(18)+CHR$(3) ; 3 Bytes ab Addr. $1234
; lesen
GET#1, A$, B$, C$ ; Alle Werte auf EINMAL lesen
CLOSE 1 ; Befehlskanal schließen
OPEN 1, 8, 15 ; Befehlskanal öffnen
PRINT#1, "I" ; Floppy erst initialisieren!
PRINT#1, "M-W"+CHR$(52)+CHR$(18)+CHR$(8)
; 8 Byte ab Adresse $1234
PRINT#1, "POWER20" ; 8 Byte schreiben (inkl. CR)
CLOSE 1 ; Befehlskanal schließen
|
|
|
|
|
Quelle: http://www.salto.at/Power20/Documentation/Power20-LiesMich/AB-Floppy_Befehle.html Power20 Homepage: http://www.infinite-loop.at und http://www.salto.at - EMail: © Roland Lieger, Goethegasse 39, A-2340 Mödling, Österreich Letzte Änderung: 29. Feb. 2008 |
|