Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » CP/M 2.2, Frage zum Parameter EXM im Disk Parameter Block » Themenansicht

Autor Thread - Seiten: -1-
000
23.04.2014, 20:49 Uhr
Micha

Avatar von Micha

eine Frage an die CP/M bzw. SCP - Experten.

Im "CP/M Alteration Guide" wird ab Seite 26 der Disk Parameter Block (DPB) besprochen. Eigentlich nur dann von Interesse, wenn man sich selber ein Diskettenformat zusammenschustern möchte. Die Erklärungen in jenem Kapitel des Alteration Guide sind allerdings lausig, wahrscheinlich hatte der Autor einen schlechten Tag oder keine Lust. Z.B. ist die Erklärung des Parameters BLM dort überhaupt nicht zu finden. Inzwischen hab ich mir allerdings alle Sachen soweit aus dem Web zusammengesucht, dass ich sie verstehe. Bis auf einen Parameter:

EXM - Extent Mask. Bei kleineren Datenträgern (bzw. in der Praxis fast immer) ist dieser Parameter 0. Manchmal, bei größeren Datenträgern, hab ich da auch eine 1 gesehen. Aber ich hab bisher nirgendwo eine schlüssige Erläuterung für EXM gefunden - ist das ein Freiheitsgrad, den man wählen kann beim Design eines Diskettenformats, oder ergibt sich EXM zwingend aus den anderen Parametern?

Wär schliesslich nicht die einzige Redundanz in den Parametern des DPB...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
23.04.2014, 21:27 Uhr
maleuma



Bei großen Laufwerken (Festplatte) kann dieser Parameter auch schon einmal 3 werden. Schön ist das eigentlich im D004-Handbuch erklärt:

Quellcode:

Extentmaske ist definiert durch die Blockgröße und die Anzahl der Blöcke pro Diskette. Ihre Größe hängt von der Organisation des Verzeichniseintrages ab. Dieser enthält als wesentlichsten Teil für die Speicherverwaltung die Nummern der jeweils belegten Blöcke:
16 Einträge zu je 1 Byte bei weniger als 256 Blöcken pro Diskette oder
8 Einträge zu je 2 Byte bei mehr als 255 Blöcken pro Diskette.
Im einzelnen bestehen die Beziehungen:
Blockgröße  EXM mehr als 255 Blöcke / weniger als 256 Blöcke
------------------------------------------------------------
1024                      -                        0
2048                      0                        1
4096                      1                        3
8192                      3                        7
16384                     7                       15


--
Mario.

Dieser Beitrag wurde am 24.04.2014 um 20:29 Uhr von maleuma editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
23.04.2014, 21:51 Uhr
Micha

Avatar von Micha

sorry, manchmal hab ich Tomaten auf den Augen, genau die Tabelle seh ich jetzt auch in dem "Alteration Guide".
Ist zwar keine Erklärung wieso weshalb warum, aber immerhin kann man da den passenden Wert auswählen. Danke!

EDIT:
beim nochmaligen Hinguggen hab ich allerdings festgestellt dass die Tabellen nicht übereinstimmen.
Aus dem Alteration Guide:

Quellcode:

BLS     DSM<256    DSM>255
1024       0        N/A
2048       1         0
4096       3         1
8192       7         3
16384     15         7


Dieser Beitrag wurde am 23.04.2014 um 22:06 Uhr von Micha editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
24.04.2014, 09:53 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

http://hc-ddr.hucki.net/wiki/doku.php/cpm:systemdoku#diskettenparameter
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
24.04.2014, 10:18 Uhr
Micha

Avatar von Micha

Vielen Dank Volker, auf Deiner Website ist es so beschrieben, dass ich jetzt endlich verstehe, was EXM bedeutet bzw. wie man es selber ermitteln kann:

Es ist die Information, wieviele 16KByte-Extends in einem Dir-Eintrag untergebracht werden können. Dieser Faktor muss abzüglich 1 im Disk Parameter Block als EXM angelegt werden.
Pro DIR-Eintrag stehen 16 Byte für die Referenzierung von Blöcken zur Verfügung. Damit kann man bei "kleinen" Datenträgern mit bis zu 255 Blöcken 16 Blöcke referenzieren, bei größeren Datenträgern sind es dann 8 Blöcke.
Wenn ich jetzt z.B. einen Datenträger mit 300 Blöcken a 4KByte Größe definiere, kann ich mit einem Directory-Eintrag 8 x 4KB = 32KB referenzieren, also zwei Extends. Der Parameter EXM ist dann also 2-1=1.

Edit: der Auszug aus dem Buch von Klaus Kämpf ist wirklich sehr lesenswert, wenn man zu den Interna von CP/M 2.2 nicht nur "irgendwie im Blindflug" Parameter zusammenschustern, sondern auch etwas Verständnis erlangen möchte.

Dieser Beitrag wurde am 24.04.2014 um 16:36 Uhr von Micha editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
24.04.2014, 20:31 Uhr
maleuma



Da ist mir doch beim Übertragen des D004-Handbuchs ein Fehler unterlaufen.
Habe das in 001 jetzt korrigiert, damit ist es identisch...
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek