mfm_write can write an emulator file to a disk drive. I got it to the state I could write the disk I needed but it is not a finished program. Currently it can only write an entire disk at once. You need to edit mfm_write.c main routine to set the parameters for your drive. I have not fixed command line parsing.

These command line options will be supported at some time along with options for setting the write precompensation. Currently only emulation_file, version, and quiet work. Emulation_file must be specified.


--begin_time -b #

The number of nanoseconds to delay from index to start reading track

--cylinders -c #

The number of cylinders.

--drive -d #

Drive number to select for reading. Only valid for read command. Drives are number 1 to 4.

--emulation_file -m filename

File name to write emulation bit data to. No file created if not specified

--heads -h #

The number of heads.

--quiet -q #h

Bit mask to select which messages don't print. 0 is print all messages. Default is 1 (no debug messages). Higher bits are more important messages in general.

--unbuffered_seek -u

Use unbuffered/ST506 seeks. Default is buffered/ST412.

--version -v

Print program version number.


To work mfm_read-00A0.dts line

0x190 0x07 // OUT P9_31 = gpio3_14

needs to be commented out and this line uncommented before running setup_mfm_read

//0x190 0x2d // OUT P9_31 = pr1_pru0_pru_30_0


Use mfm_read to verify the disk is properly written. The first attempt had a couple tracks that seem to be written to the wrong head. The next run worked ok. This program does not do anything to avoid using bad locations on the disk,