Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!comp.vuw.ac.nz!virtue!canterbury.ac.nz!phys169 From: phys169@canterbury.ac.nz Newsgroups: comp.os.msdos.programmer Subject: Re: Reading antiquated disk formats Message-ID: <1990Sep20.114227.9192@canterbury.ac.nz> Date: 20 Sep 90 06:28:15 GMT References: <85968@aerospace.AERO.ORG> Organization: University of Canterbury Lines: 46 In article , otto@tukki.jyu.fi (Otto J. Makela) writes: > In article <85968@aerospace.AERO.ORG> goldstein@arecibo.aero.org (Fogbound Child) writes: >} I've got 5.25" disks from a variety of old machines, which are not MSDOS >} format compatible. I would like very much to be able to read some of the >} stuff and convert it to a MSDOS-readable format. >} >} The formats and machines are as follows: >} >} FORMAT OPERATING SYSTEM MACHINE >} --------------------------------------------------------------- >} 30 track, SS, SD MOS SysTek I >} 35 track, SS, DD MOS+ SysTek I >} 40 track, SS, DD Newdos 80 v2 TRS-80 Mod I >} 40 track, DS, DD Newdos 80 v2 TRS-80 Mod I > > I tried once doing low-level stuff like this and quit in disgust. > You need to wank the BIOS and MS-DOS incredibly before things work... > and most of the strokes are undocumented :-) Okay, here are the clues you need: (1) To read single density on a 360K drive, you need to set it to FM instead of MFM, and use 125KHz mode, all of which is undocumented, and not supported by the BIOS. I've found the easiest way to be to try to read the track using the normal BIOS call, (which sets up the transfer addresses, etc, before failing), then output the appropriate bytes to the diskette controller, and read in the status. I can read TRS-DOS and NewDos 80, and Gimix-Flex diskettes this way, with only a few problems. I'll tidy up my code a bit and send you some (I'm posting my reply so others who might want it can e-mail me - if there is enough interest I'll post a decent bit of Turbo Pascal source, perhaps my DISKEDIT program). (2) TRS-80 systems with DD drives still write the first (boot) track in low density, because the hardware starts up in low density, and cannot change until the nooted program tells it to. Luckily, this track is fairly unimportant so long as the diskette has been formatted in the "normal" way, but of course Apparat's NewDos in particular has many options in formatting diskettes, so you cannot always assume important things. (3) Several machines (e.g. Pet & Apple) use variable-frequency recording, changing things from one track to another, so PC's cannot read them without special hardware (possibly bit 3 of the port at 3F1 on a PS2, the Read Data bit, being read in a very tight loop with interrupts turned off, might do some good, but only a masocist would attempt such a program! Any masocists out there? Please send me the code if it works! ;-) Mark Aitchison, Physics, University of Canterbury, New Zealand.