Laufwerke tauschen mit Freezer?
von Beetle » Do 17. Aug 2006, 10:56Hallo,
Das SpOS und auch das QMEG haben ja eine "Laufwerkstabelle". Wenn man von Basic oder übers DOS auf D1 zugreift, in der Laufwerkstabelle aber das logische D1 auf das physikalische D3 gemappt ist, greift das Programm auf D3 zu, ohne es zu merken.
Komplizierte Erklärung eines einfachen Ereignisses
Diese Laufwerkstabelle liegt beim Speeder plus OS auf den Adressen $3f0 bis $3f7, entsprechend physikalisch D1 - D8. Laut Profibuch sind das "für Testzwecke reservierte Bytes".
Lower Nibble: Logisches Laufwerk (ich hoffe, diese Bezeichnung ist so richtig)
Upper Nibble: Laufwerksstatus
Vor dem Booten: 01 02 03 04 05 06 07 08
Nach dem Booten von D1: A1 02 03 04 05 06 07 08 (Laufwerk 1 ist auf High-Speed (SIO2IDE))
(Kaltstart)
D1 und D2 getauscht: 02 01 03 04 05 06 07 08
Von D2 gebootet: 12 01 03 04 05 06 07 08 (Laufwerk 2 ist normale 1050)
Von D1 gelesen: 12 A1 03 04 05 06 07 08
(Kaltstart, 1050 mit Speedy angeschlossen, ist als D3: geschaltet)
D3 und D1 getauscht: 93 02 01 04 05 06 07 08
Fakten: Lowernibble zeigt, als welches logisches Laufwerk das jeweilige Drive agieren soll.
Uppernibble : 0 Laufwerk ungeprüft
1 Laufwerk Normalspeed
A Laufwerk Highspeed Mode "A"
9 Laufwerk Highspeed Mode "9"
usw... wahrscheinlich gibt's auch noch Werte für SIO2PC/Warpspeed/1050 Turbo.
Ist also ganz logisch.
Jetzt wäre ein Freezer-Befehl gut, mit dem man die Tabelle ändern kann. Er sollte aber im Main Menü liegen. Ist das machbar? Eine Routine, die abfragt welche Bytes (Drives) getauscht werden sollen, und dann die entsprechenden Bytes der Tabelle tauscht. Oft möchte man die Laufwerkstabelle ändern, ohne neu zu booten.
Für das QMEG hab ich die Tabelle noch nicht gefunden, aber Dietrich weiss bestimmt wo sie liegt.
Ich habe ein Turbobasic-Progrämmchen geschrieben, das genau diese Aufgabe erfüllt.
Bei Interesse PM, dann schicke ich es zu.
Gruss,
Stefan
Das SpOS und auch das QMEG haben ja eine "Laufwerkstabelle". Wenn man von Basic oder übers DOS auf D1 zugreift, in der Laufwerkstabelle aber das logische D1 auf das physikalische D3 gemappt ist, greift das Programm auf D3 zu, ohne es zu merken.
Komplizierte Erklärung eines einfachen Ereignisses

Diese Laufwerkstabelle liegt beim Speeder plus OS auf den Adressen $3f0 bis $3f7, entsprechend physikalisch D1 - D8. Laut Profibuch sind das "für Testzwecke reservierte Bytes".
Lower Nibble: Logisches Laufwerk (ich hoffe, diese Bezeichnung ist so richtig)
Upper Nibble: Laufwerksstatus
Vor dem Booten: 01 02 03 04 05 06 07 08
Nach dem Booten von D1: A1 02 03 04 05 06 07 08 (Laufwerk 1 ist auf High-Speed (SIO2IDE))
(Kaltstart)
D1 und D2 getauscht: 02 01 03 04 05 06 07 08
Von D2 gebootet: 12 01 03 04 05 06 07 08 (Laufwerk 2 ist normale 1050)
Von D1 gelesen: 12 A1 03 04 05 06 07 08
(Kaltstart, 1050 mit Speedy angeschlossen, ist als D3: geschaltet)
D3 und D1 getauscht: 93 02 01 04 05 06 07 08
Fakten: Lowernibble zeigt, als welches logisches Laufwerk das jeweilige Drive agieren soll.
Uppernibble : 0 Laufwerk ungeprüft
1 Laufwerk Normalspeed
A Laufwerk Highspeed Mode "A"
9 Laufwerk Highspeed Mode "9"
usw... wahrscheinlich gibt's auch noch Werte für SIO2PC/Warpspeed/1050 Turbo.
Ist also ganz logisch.
Jetzt wäre ein Freezer-Befehl gut, mit dem man die Tabelle ändern kann. Er sollte aber im Main Menü liegen. Ist das machbar? Eine Routine, die abfragt welche Bytes (Drives) getauscht werden sollen, und dann die entsprechenden Bytes der Tabelle tauscht. Oft möchte man die Laufwerkstabelle ändern, ohne neu zu booten.
Für das QMEG hab ich die Tabelle noch nicht gefunden, aber Dietrich weiss bestimmt wo sie liegt.
Ich habe ein Turbobasic-Progrämmchen geschrieben, das genau diese Aufgabe erfüllt.
Bei Interesse PM, dann schicke ich es zu.
Gruss,
Stefan