MFM Reader/Emulator Tested Configuration
This is the results people have sent me for my MFM hard disk reader/emulator. If a known problem exists it will be listed. If says working for X that just indicates the person only tested X and doesn't imply Y doesn't work.If you wish to add support for a new format see adding new formats.
Computer |
Controller |
Drive |
Notes |
MFM Version |
---|---|---|---|---|
Symbolics 3640 | Standard | Unknown | Reading working. Emulation works with the front end processor but the Lisp processor can't access the second drive. Reading was incorrectly decoding with versions prior to listed version. | 2.17 |
Compaq Plus | OMTI 5510 | Tulin |
Reading Working Emulation mostly working | 1.0pre9 | S-100 | OMTI 5400 | Unknown | Emulation working. Reading not reported. | 1.0pre9 |
Z80 CP/M | OMTI 5510 | ST225 | Reading working | 1.0pre9 |
MSDOS PC | WD1003 | ST225 | Reading working | 1.0pre9 |
Genie3s CP/M | OMTI5528 | ST225 | Unsupported, RLL | 1.0pre9 |
VAXStation | RQDX3 | RD53 |
Reading and emulation working. See note 1.
Here is a formatted RD53 emulator image.
Here is a formatted RD54 emulator image.
This board drives the signals with TTL tri-state drivers which can cause
Ethernet or other startup issues. Pulling the resistor packs will not work
due to the tri-state drivers. Schottky diodes with reasonable drop at 150mA
would need to be inserted between RN1 and RN2 pin 1 and the board.
Fixed with rev D board.
See TTL driver support page
I found that if I remove the first 136 sectors from the image it can be used by SIMH to boot. Likely any spared sector will not be properly corrected. Some info | Early |
DEC VS2000 | Built in | RD54 | Works for emulation and reading. For two drive emulation use drive selects 3 and 4. | 4.14 |
PDP-11/73 | RQDX3 | RD5x | Working for reading and emulation. See note 1. Also see Info 1 and Info 2 | 1.0pre9 |
PDP-11/23 | RQDX1 and RQDX2 | ST412/RD51 | Working for reading and emulation. Controllers were running 10.0D firmware. The probably 7.0 firmware on the RQDX1 did not work with the ST412 disk. For emulation the beaglebone green flash was too slow and caused occasional errors from the controller. Copying the emulator file to a ram disk and back to flash on shutdown solved this problem. See note 1. | 1.17 |
NorthStar Advantage | NorthStar | ST-506 & others | Reading a disk works. The N* does not always like the emulator file created directly from the read. Drives that the rotation is a little slow have problems. Creating an extracted data file then using ext2emu creates a file the N* likes better. The N* does not like to format a newly initialized image. Use an image read from a drive or created with ext2emu. There is a Northstar Emulator that the in progress Advantage emulator can use the extracted data files. | 1.0pre9 and 1.0pre12 |
Corvus H-Series Flat-Cable Drive | Corvus | IMI 5018 | Working for reading and emulation. | 1.0pre9 |
TRS-80 Model 4P | WD1010A | Tandon TM503 | Working for reading and emulation. Drive is an external Tandy Fifteen Meg Disk System. mfm_read reports controller type WD_1006 | 1.0pre9 |
DEC Rainbow 100 | WD1010 | RD53/1325 67MB | Working for emulation. See forum posting. | 1.0pre9 |
Cromemco 68000 | STDC | N/A | Working for emulation and reading with 16 head and 3200 cylinder image. For extracting files from disk images see https://smpl.fyi/2023/02/listing-cromemco-files/. You don't need to build the pasm stuff. Until I update makefile just remove the references from the makefile and then make mfm_util. | 1.0pre11 (earlier had some problems). Not sure what version added decode support. |
IBM 3174-61R | N/A | N/A | Working for emulation and reading. | 1.33 |
Xerox 6085 Daybreak running Interlisp-D/Medley and Viewpoint 2.1 | N/A | Maxtor XT2190 | Working for emulation and reading disk. One machine needed -w .005 parameter on powerfail to see power loss quick enough to not get confused by write going low on power off. Fixed by setting PowerFailOptions="-w .005" in /etc/mfm_emu.conf | 1.0pre9 |
Xerox 1108 Dandelion/8010 Star running Interlisp-D and Viewpoint | N/A | Quantum 2040 |
Working for emulation and reading disk. Have not checked if powerfail write
issue of 6085 exists. One of the drives needed --begin_time 55000 to read
correctly. tomfmext.c will convert Darkstar emulator
disk images to format ext2emu can use. To use with ext2emu heads and cyl set properly for the image.
gcc -o tomfmext tomfmext.c ./tomfmext < /tmp/ViewPoint-2.0-11-9-1990-18-38.img ext2emu --ext tomfmext.ext --emu tomfmext.emu --format xerox_8010 --heads 8 --cyl 512 todarkstar.c will convert the extracted data file from mfm tools to darkstar format. ./todarkstar > /tmp/dark.img Both have hardcoded file names of convert.ext and convert.ext.metadata for the data files its converting. The image converted from darkstar to emulator file didn't boot properly so more work is needed. | 2.16 |
AT&T 7300 & 3B1 | WD1010 chip | Seagate ST-4096 |
Working for emulation and reading disk. The operating system reserves one spare
sector on each track for bad block handling. The sparing is not marked in
the sector headers so the extracted data file will not be corrected for the
spare sectors. Some tools for working with 3B1 extracted data files
are here.
Drive image for emulator here
This machine uses TTL drivers which interfere with the automatic shutdown and power on function. See TTL driver support page for more information. | 1.0pre15. 2.10 for 4 head select with motherboard p5.1 |
AT&T 3B2 running SVR3 3.2 | N/A | N/A | Working for emulation, ex2emu and reading. With mfm_util and ext2emu can move images from and to the SIMH 3B2 software emulator. | 1.2 (Earlier unreliable). 1.16 added reading support. 4.21 added ext2emu support. |
Motorola MVME131, MVME147, MVME167, MVME187, and MVME197 | MVME320A and MVME320B | Miniscribe 6085 | Working for emulation and reading disk. | 1.0pre19 (Earlier doesn't work) |
Kaypro 10 | Standard | Tandon |
Reading and emulating working. One person reported that they needed to change
R13 to 33 ohms to prevent the power supply from shutting down at initial
turn on. Another Kaypro 10 with 55W Astec AA12450 power supply started up
fine with 10 ohm resistor
I made some Kaypro 10 disk images for a machine I was working on. This as made from mixture of 2.2G and 2.2H disk images. Found later other choices. My notes from creating the image. Emulator image kaypro10gh.zip and Directory listing. Also blank formatted emulator image disk Set P7 to drive 2. Remove or set P8 to other than drive 2. | 1.0 |
Kaypro 10 | Standard | NEC D5124 | Reading and emulating working. Trying to read drive gave write fault error in versions prior to 3.01. | 3.01 |
Televideo | 22986-00 | Miniscribe 3425 | Reading and emulating working | 1.0 |
ICL Personal Computer running Concurrent CP/M-86 release 3.1.R | Xebec S1410 | Rodime RO202 | Reading and emulating working. May need to specify --begin_time 220000 if initializing emulation file. | 1.4 |
Apple IIe | Sider SASI with Xebec 1410A | ST125 | Reading and emulating working. May need to specify --begin_time 100500 if initializing emulation file. | 1.5 (Earlier doesn't work) |
Intercontinental Micro Systems S-100, model CPZ-186 | OMTI 5200 | N/A | Mostly working for emulation and read likely works but not tested with real drive. Emulation works fine except that creating an empty emulation file and then low level formatting the drive doesn't work. On cylinders >= 128 only the last head gets formatted. | 1.4 & 1.26 |
Victor 9000/Sirius 1. | Xebec S1410 | Rodime RO202 | Reading disk and emulating working. ZIP file of some disk images. This image gives bad disk label on some machines. And smaller disk image. This doesn't give bad disk label but doesn't work on some machines. Image from Victor with Xebec 104527 controller. This image needed --begin_time 240000. This machine wouldn't work with the first two images. | 1.5 |
TRS-80 Model 16 & 16B | Type 2, 3, and 4 | N/A | Emulating working with XENIX, TRSDOS-II, LS_DOS, and P&T CP/M 2.2m. TRSDOS-II requires correct version for host adapter. User found 4.2.5 worked with type 4 and 4.2.6 worked with type 2. | 1.14. ext2emu support for 16B added in 2.39. |
Tandy 6000 | Type 4/WD1010 | N/A | Emulating working with XENIX. Emulation not working with TRSDOS-II. TRSDOS-II didn't work but likely TRSDOS-II version issue seen with model 16. | 1.14 |
TRS-80 Model II | 8 Meg hard drive | Shugart SA1004 | Reading working. Emulating working with TRSDOS-II 4.2.6. Radio Shack soldered wires to the SA1004 electronics board. See these instructions for how to move the wires. | 1.29 |
E-mu Emulator II sampling keyboard | Unknown | N/A | Working for emulation. Reading not tested. | 1.14 |
Compupro 8-16 | Compupro Disk-3 | Quantum Q-540 | Working for emulation and reading. | 1.16 |
NCR DM-V | WD 1002-HD0 | Unknown | Working for emulation and reading with MSDOS 2.11, CP/M 2.1, CP/M 86 | 1.16 |
Industrial Equipment | OMTI 5200 | ST225 |
Reading working and emulation mostly working. The computer timed out the
hard drive
at about 8 seconds. The beaglebone takes 12+ seconds to be ready so
host computer needs to be reset after power on to boot.
Circuit to power on beaglebone needed modification since 3.3V rises to about 1.9V when host computer is powered on. This is still being investigated but likely due to the OMTI 5200 using push pull instead of open collector drivers and feeding power through RN1 to the beaglebone. Fixed with rev D board This machine uses TTL drivers which interfere with the automatic shutdown and power on function. See TTL driver support page for more information. Recommend using fix in previous link. Users fix was to cut the trace going from U17 pin 1 to R3 and solder two series diodes (type 1n4148 or equivalent) from R3 (first diode Anode) to U17 pin 1 (second diode Cathode), From the junction between the two diodes solder a 47K 1/8 W resistor to ground. The function of this little circuit is to drop the 1.9 Volts, present during the power up problem, to a logic low level at U17 pin 1. Thread reporting and discussing issues" | 1.16 |
Elektronika 85 (Russian clone of DECpro 350). Also verified on real DECpro. | Unknown | Russian Seagate clone | Working for reading and emulation. | 1.11 |
MVME319 | ACB 4000 | None | Working for emulation. | 1.11 |
Altos 886 | WD 2010-AL based. | Unknown | Working for emulation and reading. | 1.16 |
Wang 2275 | Unknown | Unknown | Working for reading. | 1.20 |
Intel 310 | iSBC 215 | Computer Memories CM5619 | Working for reading and emulation. Note the alternate cylinders at the end are not formatted so analyze will detect the wrong number of cylinders. It appears you need to manually specify the read parameters to read all cylinders to get a good image. ext2emu doesn't currently work. | 1.22 |
Intel 310 | iSBC 214 | Unknown | Working for reading and emulation. May have the same issue with the alternate cylinders at the end as the iSBC_215. ext2emu works. | 1.39 |
Soviet SM 1810 | Format similar to iSBC 215. Said to be clone of iSBC 214. | ST-225 | Working for reading. Machine writes 16 bit words that the extracted data file needs to be byte swapped to view. | 2.17 |
TI-99/4A | Myarc HFDC | ST-225 | Working for reading and emulation. Controller uses 0xfb and 0xf8 for data address mark but does not seem to depend on the value. Ext2emu always uses 0xf8. | 2.24 |
TI 99 | WDS-100 | Unknown | Working for reading. Fails with emulation when written to. Have not been able to collect enough information to determine cause. | 1.20 |
Tracor Northern TN 5502 | Digital Logic (DILOG) DQ614 | ST-225 | Working for reading and mostly for emulation. Emulation only works with --drive 0 which is only usable if no other drive is on the 34 pin cable. | 1.23 |
VT103 | Digital Logic (DILOG) DQ604 | ST-412 | Works for emulation. | 1.23 |
PERQ T2 | Standard for machine | Unknown | Unreliably for emulation if you specify --begin_time 494932. Reading is working. ext2emu has not been tested on actual machine. | 2.09 |
General Processor GPS 5 | Xebec 104788D | Rodime 252 |
Works for emulation and reading disk with format xebec_104786 and --begin_time 241000. The Beaglebone won't power up if the 5V takes too long to rise which
is triggered by the power supply in this computer. Installing 5.1k resistor
for R25 and 1K resistor for R24 fixes the power up problem. BOM has been
updated with these resistor values.
The computer inverts the data bytes. See shell script below which can be used to invert extracted data file. | 1.33 |
HP 9133A, 9133H HPIB drive used with HP85 | Standard for machine | ST-506 | Working for emulation and reading. | Unknown |
SAGA FOX 80 | Standard for machine | Olivetti OPE HD562/13 | Working for reading. Emulation doesn't seem to be working. No investigation has been done. ext2emu also doesn't work. | 1.39 |
Wang SVP | Standard for machine | None |
Working for for emulation of SA1004. Emulation file created with:
./mfm_emu --initialize --heads 4 --cylinders 256 --drive 1 --file ../emufile_a --rate 8600000 | 2.01 |
PDP-11/23 | Data Technology Corp DTC 520-1 | ST-506 | Working for emulation and reading. | 2.00. Needs revision C board |
Whitechapel Computer Works MG-1 | Unknown | Rodime RO204E | Working for emulation and reading. | Around 2.04 |
Atari ST | Atari SH205 Megafile? | Tandon TM262 | Working for reading. | 2.12 |
Ferguson Big Board with Delphi/WinIF SASI adapter to Shugart 1610 | Shugart 1610 | ST-225 | Working for reading and emulation. Controller manual in black & white and in grey scale. | 2.20 |
General Processor Model T (T10) | Shugart SA1400 / Data Technology | Shugart SA1004 | Working for reading. | 2.20 |
Acorn A310 | Computerware MFM Podule | ST-151 | Working for reading and emulating. !hform won't format emulator image but formatted disk image can be created using ext2emu. Machine writes 16 bit words that the extracted data file needs to be byte swapped to view. | 2.25 |
Commodore 900 | Standard | ST-225 | Working for reading and emulating. | 2.30 |
HP9133XV | Standard | ST-419 | Working for reading and emulation. The controller formats 32 sectors per track but one has sector number 255. This is likely reserved for bad sector replacement. The drive read didn't seem to have any bad sectors so unable to determine how it is used. mfm_read will detect 31 sectors per track and discard the sectors with sector number 255 with a warning message. Creating a emulator file will include sector 255 so should work for emulation. | 2.34 |
Tektronix 6130 | Standard | XT-1105 | Working for reading if you manually specify --format tektronix_6130 instead of analyze or --analyze=5,8. Analyze will misidentify as Intel_iSBC_214_512B and heads >= 8 will be ignored with normal command line. If drive has less than 8 heads shouldn't matter if it picks the Intel format. Image here   Info | 2.38 |
IBM RT 6150 | Standard | Original drive dead |
Working for emulation. Unable to test reading.
When emulation only one drive the 6150 seemed to hang when it was checking
for second drive. Moving P7 to 1 and back to 2 got it passed the hang but
OS didn't want to install in space of single disk.
Worked fine with second data cable connected to J6 emulating two drive. Set drive select
1 jumper P7 to 2 and drive select 2 P8 jumper to 1. Emulator images with base OS install of AIX 2.2.1 on R40/R44 drive.
mfm_emu --file ibm_aix-2.2.1-drive1.emu,ibm_aix-2.2.1-drive2.emu --drive 1,2
| 2.38 |
Siemens PC-X | Standard | BASF 6188 | Working for reading and emulating. | 2.38 |
Superbrain | SuperFive | ST-506 | Working for reading. | 2.38 |
SGI IRIS 2400 | DSD 5215 or 5217 | Vertex V170 and DK511-8 | Working for reading. Needs bytes swapped in extracted data for strings to be readable. | 2.38 |
Amiga 2000 | A2090 rev 5 | Miniscribe 8425 20MB | Working for emulation and reading | 2.43 |
IBM 5150 | IBM 62X0786 | ST-225 | Working for emulation and reading | 2.43 |
IBM 5364 | N/A | IBM 0665-53 | Working for reading. Note strings in extracted data will be EBCDIC. | 2.39 | Macintosh 512k with Hyperdrive | Hyperdrive | unknown | Working for emulation. | 2.13 | Iskra Delta Triglav (Trident) computer | WD1010 based | FUJITSU M2243AS2 | Working for reading and emulating. Needs --head_3bit and bytes swapped in extracted data file. | 2.51 | ES-1841 and IBM PC XT | Xebec-3198 | Various | Working for reading, emulating, and ext2emu. This format the sector number in the header is not the logical sector number for the data that follows. The code attempts to correct for that but did not have documentation so may not always get it correct. | 2.53 | Tektronix 4404 | Adaptec based | Various |
Working for emulating.
Emulator image of OS version 2.0 with network on 20MB disk that works.
Since I was last on here, I've implemented and included in the image source+binaries for: - dhcp client - telnetd - ifdump (reverse engineered the network params) - window manager - ported uemacs - whereis & tee - binary patched 'ls' to work on a pseudo-terminalA larger disk was created but there are some unexpected sector headers where it is unclear if the host is writing them that way or some other issues is causing duplicate and missing LBA address at about the same interval across the disk. Heavy writes seem to cause write errors on the host. Probably best not to use this image. Emulator image of OS version 2.0 on 40 MB disk that has issues discussed. | 2.53 | Unknown | Seagate ST11M and unknown variant which I called ST11MB | Various |
Should be working for reading, emulating, and ext2emu for ST11M but don't
have conformation. ST11MB not supported currently for ext2emu.
Both uses first cylinder for storing disk format information. First
two tracks has the format information. Rest of track on cylinder had
different format so controller probably didn't format those tracks.
If you are trying to use the extracted data file you will likely need
to remove the first cylinder. Calculate cylinder size = bytes per sector *
sectors per track * heads. For example 512*17*4 = 34816. Use dd to remove
cylinder.
To use ext2emu the cylinder with the format information needs to be at the start of the extracted data file. | 2.53 | Amstrad 1512 | Xebec? | ST225 |
Only read disk. Emulator code can decode format but needs modifying to make
image useable to tools to looks at the image file.
The sector header shows sectors on each track (they are also interleaved not
shown).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MSDOS sees the sectors as 14 15 16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Also there seems to be a special boot sector on the first sector and a second one that is the normal MSDOS one with BIOS parameter block as the second sector. This is script I used to fix the images. It remaps the sectors, copies the second sector to the first and modifies the number of reserved sectors to two. tmp=`basename $1 .ext` ./remap < $1 > $tmp-remap.ext dd if=$tmp-remap.ext of=/tmp/sect bs=512c count=1 skip=1 dd of=$tmp-remap.ext if=/tmp/sect bs=512c count=1 conv=notrunc # two is file with just byte 2 in it. dd of=$tmp-remap.ext if=two bs=1c count=1 seek=14 conv=notruncAnd remap c code // Remap sectors for Amstrad 1512 with ST225 drive. No error handling #include | 2.53 |
Note 1: The DEC RQDX1-RQDX3 controller uses mixed format on the tracks. My software doesn't handle it well. When reading an existing disk it will report errors on the alternate format used for most of the disk. The data will be read and the emulation file will have the data though the alternate format not be checked for errors. When creating an extracted data file only the data for the format detected will be extracted. You can use the analyze on a track with the alternate format to extract those areas. You will manually need to put the extracted data files into one good file.
To invert all the bytes in a file use the shell script below (saved as invert)
bash invert < infile > outfile
#!/bin/bash chr() { printf '\%03o' "$1" } za="$(for charNum in $(seq 255 -1 0) do chr "$charNum" done)" tr '\000-\377' "$za"
To swap pairs of bytes
dd if=infile of=outfile conv=swab
Email me any test results you have.