Gerätenummer
Die Gerätenummer (auch als Geräteadresse in der Literatur vertreten) dient zur Unterscheidung der verschiedenen Peripheriegeräte bzw. externen Geräte bei Commodore-Computersystemen.
Jede Gerätenummer darf nur einmal vorkommen, ansonsten werden die Geräte nicht korrekt angesprochen. Sollen zum Beispiel mehrere Drucker oder Diskettenlaufwerke gleichzeitig an der seriellen Schnittstelle des C64 betrieben werden, so müssen die werksseitig eingestellten Gerätenummern geändert werden. Das erste Diskettenlaufwerk wird dann typischerweise auf die Gerätenummer 8 eingestellt, das zweite auf die Gerätenummer 9; der erste Drucker bekommt die Gerätenummer 4, der zweite die 5. Das Ändern der Gerätenummern erfolgt entweder innerhalb des Gerätes durch Lötbrücken oder durch von außen zugängliche DIP-Schalter.
Bei Diskettenlaufwerken ist die Änderung auch durch entsprechende Softwarebefehle möglich. Weitere Informationen für die Einstellung der Gerätenummer des Diskettenlaufwerks 1541 findet man im Artikel 1541 und im Buch 64 noch mehr Tips & Tricks, Band 2. Typischerweise gehen die über Software gemachten Einstellungen jedoch bei einem Reset verloren, das Verfahren ist also eher nur für Testzwecke praktikabel.
Die Laufwerke von CMD besitzen eine SWAP-Taste, mit der die Gerätenummer des Laufwerks spontan mit einem anderen Laufwerk getauscht werden kann. Ein Großteil aller C64-Programme ist nämlich lediglich in der Lage, vom Laufwerk mit der Nr. 8 nachzuladen. Dank der SWAP-Taste kann z.B. ein FD-2000 auf Laufwerksnummer 10 kurzzeitig seine Nummer mit der 1541, Laufwerksnummer 8, tauschen und so das Nachladen von Dateien vom FD ermöglichen, ohne dass das entsprechende Programm eine andere Nummer als 8 unterstützen muss. Damit sind die CMD-Laufwerke für den Alltagsgebrauch weit besser geeignet als z.B. eine 1581, welche nur von den wenigen Programmen, die eine von 8 abweichende Laufwerksadresse unterstützen, angesprochen werden konnte.
Gerätenummern 0 bis 3 werden vom KERNAL und dementsprechend auch von den BASIC V2-Befehlen jeweils als Spezialfälle behandelt. Die Gerätenummern 4 bis 30 beziehen sich auf Peripheriegeräte, die an der seriellen Schnittstelle angeschlossen sind, die Nummerierung in dem Bereich ist also nur durch Konventionen bedingt; theoretisch wäre es also auch möglich, z.B. eine Floppy unter Gerätenummer 4 zu betreiben. Üblich ist folgende Belegung:
Nummer | Gerät | Bemerkung |
---|---|---|
0 | Tastatur | Sonderbehandlung durch KERNAL |
1 | Datasette | Sonderbehandlung durch KERNAL |
2 | RS-232 bzw. Modem | Sonderbehandlung durch KERNAL |
3 | Monitor bzw. Bildschirm | Sonderbehandlung durch KERNAL |
4 | erster Drucker | ab Nummer 4: über IEC angeschlossene Geräte |
5 | zweiter Drucker | |
6 | z.B. Plotter | |
7 | z.B. RAM-Disk | |
ab 8 | Diskettenlaufwerke, Festplatten | oder weitere Hardware wie SD2IEC usw. |
Programmierung[Bearbeiten | Quelltext bearbeiten]
- Zeropage $BA: die aktuelle Gerätenummer
- Kernal: Routine zum Setzen der Gerätenummer sowie der logischen Dateinummer und Sekundäradresse:
- BASIC: Der zulässige Wertebereich für die Angabe der Gerätenummer variiert in Abhängigkeit der Interpreterversion bzw. der dort verwendeten Befehlsgruppe:
- BASIC V2: Hier wird die Gerätenummer als 8-Bit-Wert im Bereich von 0 bis 255 akzeptiert (siehe OPEN).
- BASIC 3.5 und BASIC 4 (Varianten): Zusätzliche Diskettenbefehle wie z.B. COLLECT erlauben einen Wertebereich von 3 bis 31.
- BASIC 7.0 und höher: Die Gerätenummer bei diskettenorientierten Befehlen (z.B. APPEND) sind auf den Bereich von 4 bis 30 beschränkt.
BASIC V2: Geräteadresse für Floppy ändern
Der folgende BASIC-Programmcode führt zu einer temporären Änderung der Gerätenummer für ein Diskettenlaufwerk (bspw. die 1541 oder 1571), wobei die Auswahl zwischen 8 (Standardgerätenr.) und 30 erfolgen kann:
OPEN 15,8,15:PRINT#15,"M-W";CHR$(119);CHR$(0);CHR$(2);CHR$(Gerätenr+32);
CHR$(Gerätenr+64):CLOSE 15