000
09.11.2008, 15:35 Uhr
timetube
|
Hai 8bitter,
Ich befasse mich mal wieder mit der Emulation von Z80 (CP/M 2.2). Habe mir auch eine CPU zusammen programmier (class z80cpu) und möchte nun gerne auch die Imaged von Munk's SIMCPM verwenden können. Das sind im prinzip 8" IBM Images, bei denen die ersten beiden Sectoren als non interlaceds Systemspuren fungieren und der Rest dann ein normales 77 spuren, 26 Sectoren zu 128 byte CP/M 2.2 Filesystem enthällt. Er verwendet, wie ich auch, das Original CBIOS Die Sektoren sind also mit Faktor 6 interlaced.
Also mit den Images habe ich keine Probleme, ich habe auch schon einen Driver für das libdsk zusammen programmiert, so dass ich auf diese Munk Images (Filename.CPM) nun zugreifen kann. (Eine simple Umprogrammierung des myz80 drivers)
Was aber nicht geht ist der libdsk drvrcpm driver, der ein normales (Windows/Linux) Directory, also kein Image, als CP/M Filesystem erscheinen lässt. Es hat nichts mit Munk zu tun, nur eben das er auch dieses alte IBM 8" Format aus dem original CBIOS verwendet und welches wohl vom libdsk nicht unterstützt wird. Das hätte ich aber gerne, Es gibt für dieses Driver zwei Spezialfiles .libdsk.boot und .libdsk.ini. Das erste enthält schlicht das, was Munk in die ersten beiden Sectroren seiner Images schreibt, also der Bootsektor und das CP/M selber. Das zweite ist einer Art von Disk-Parameter-Block. Und hier scheint sich die Katze in den Schwanz zu beißen ich bekomme es nicht hin das er das IBM Format richtig vortäuscht.
Ich habe da bis jetzt folgendes "raus experimentiert"
[RCPMFS] BlockSize=1024 DirBlocks=2 TotalBlocks=243 SysTracks=2 Version=2 Description = CP/M 2.2 Sides = Alt Cylinders = 77 Heads = 1 Sectors = 26 SecBase = 1 SecSize = 128 DataRate = DD #RWGap = 12 #FmtGap = 23 fm = N MultiTrack = N
Das klapp auch teilweise, wenn ich das Sektrorremapping im CBIOS ausschalte, was ich aber letztlich nicht will, was aber erst einmal dieses kleinere Problem beseitigt, da dass libdsk drvrcpm offenbar kein Remapping zu unterstützen scheint.
Im CP/M Bios sieht das also nun so aus
TRANS: DEFB 1,2,3,4,5,6,7,8,9,10 DEFB 11,12,13,14,15,16,17,18,19,20 DEFB 21,22,23,24,25,26 ; DEFB 1,7,13,19 ;sectors 1,2,3,4 ; DEFB 25,5,11,17 ;sectors 5,6,7,8 ; DEFB 23,3,9,15 ;sectors 9,10,11,12 ; DEFB 21,2,8,14 ;sectors 13,14,15,16 ; DEFB 20,26,6,12 ;sectors 17,18,19,20 ; DEFB 18,24,4,10 ;sectors 21,22,23,24 ; DEFB 16,22 ;sectors 25,26 ; ; disk parameter block, common to all IBM 8" disks ; DPBLK: DEFW 26 ;128 bytes sectors per track DEFB 3 ;block shift factor 1k DEFB 7 ;block mask DEFB 0 ;extent mask DEFW 242 ;disk size-1 block DEFW 63 ;directory max DEFB 192 ;alloc 0 DEFB 0 ;alloc 1 DEFW 16 ;check size DEFW 2 ;track offset
Was passiert nun. Na-ja, ich kann auf das Directory wie auf Munk's Image zugreifen und natürlich auch daraus booten, weil ich ja die .libdsk.boot herstelle. Ich kann also mit DIR alles richtig sehen und auch jedes Programm starten. Nur, wenn ich versuche was zu kopieren PIP oder so, dann geht das schief. Lauter BDOS Errors wegen angeblicher Read-Only oder Media changed oder auch mal Sector not Found. Bei PIP b:=a:*.* klappen mal ein paar Files bis der BDOS Error dann zu schlägt,
Hat jemand da eine Idee zu. Hat jemand den drvrcpm vom libdsk schon mal fehlerfrei, vielleicht für anderer Formate hin bekommen. Es kann nämlich auch ein genereller Fehler dieses Drivers sein, der extrem Trickreich programmiert wurde und sicher noch nicht fertig ist.
gruß j.
PS:Auch ja, was ist mit dem z-fest 2009, ist da schon was durchgesickert, findet das wieder statt? -- "Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein. |