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.

Hard disk manual

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.

MFM emulator XENIX disk image

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 5364N/AIBM 0665-53Working 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-terminal
A 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.
dd if=infile of=outfile bs=34816c skip=1

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 104866 ST225 Only read disk. Emulator code can decode format (Xebec_104527_512B) but image needs to be modified to make image useable to tools to looks at file in the image. 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=notrunc
And remap c code
// Remap sectors for Amstrad 1512 with ST225 drive. No error handling
#include 
#include 
int main()
{
   unsigned char b1[512*17];
   unsigned char b2[512*17];
   int sn[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 1, 2};
   int rc;
   int i;

   while (1) {
      rc = read(STDIN_FILENO, b1, sizeof(b1));
      if (rc < sizeof(b1)) {
         break;
      }
      for (i = 0; i < 17; i++) {
         memcpy(&b2[i*512], &b1[sn[i]*512], 512);
      }
     write(STDOUT_FILENO, b2, sizeof(b2));
   }
}
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.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search