• Please review our updated Terms and Rules here

IBM System/36 5364 - Imaging and Emulating Physical Disks

peclark

Member
Joined
Apr 24, 2015
Messages
38
Location
Kansas City
I've been working on my IBM System/36 lately, and one of the projects I had for myself was upgrading the version of SSP (from V4 to V5). Before I did this, I really wanted to back up the hard disks in my machine, just in case anything went wrong.

IMG_2866.jpeg

Based on poking around the internet, I had thought the hard disks in this computer were ESDI, but turns out they are MFM hard disks. My computer has two 42MB hard disks that the software manages as one logical disk. I believe the disk part # is 080885-ESP145-0665-53, and searching for 0665-53 turns up info on these disks. I believe these same disks may have been used in IBM AT machines.

IMG_2705.jpegIMG_2706.jpeg

So - being MFM disks, I figured I'd try David Gesswein's MFM emulator to read/image these drives. Imaging them worked flawlessly as best I can tell. Here's the log of reading the first disk.
debian@BeagleBone:/opt/mfm$ mfm_read --analyze --transitions_file sys36_right_transitions --extracted_data_file sys36_right_drive_extracted_data
Board revision C detected
Found drive at select 2
Drive RPM 3599.5
Found matching format Intel_iSBC_214_256B: good count difference 0
Interleave mismatch previous entry 0, 8 was 8 now 0
Selected head 8 found 0, last good head found 6
Read errors trying to determine sector numbering, results may be in error
Number of heads 7 number of sectors 32 first sector 0
Unable to determine interleave. Interleave value is not required
Drive supports buffered seeks (ST412)
Disk has recalibrated to track 0
Stopping end of disk search due to recalibration
Number of cylinders 733, 42.0 MB
Command line to read disk:
--format Intel_iSBC_214_256B --sectors 32,0 --heads 7 --cylinders 733 --header_crc 0xffff,0x1021,16,0 --data_crc 0xffffffff,0x140a0445,32,6 --sector_length 256 --retries 50,4 --drive 2
Bad block set on cyl 223, head 2, sector 29
Bad block set on cyl 366, head 3, sector 30
Bad block set on cyl 367, head 3, sector 30
Bad block set on cyl 368, head 3, sector 30
Bad block set on cyl 369, head 3, sector 30
Bad block set on cyl 370, head 3, sector 30
Bad block set on cyl 371, head 3, sector 30
Bad block set on cyl 372, head 3, sector 30
Bad block set on cyl 373, head 3, sector 30
Bad block set on cyl 374, head 3, sector 30
Bad block set on cyl 375, head 3, sector 30
Bad block set on cyl 376, head 3, sector 30
Bad block set on cyl 377, head 3, sector 30
Bad block set on cyl 590, head 5, sector 5
Bad block set on cyl 616, head 5, sector 30
Bad block set on cyl 641, head 2, sector 23
Found cyl 0 to 732, head 0 to 6, sector 0 to 31
Expected 164192 sectors got 164176 good sectors, 0 bad header, 0 bad data
16 sectors marked bad or spare
0 sectors corrected with ECC. Max bits in burst corrected 0
Track read time in ms min 28.741375 max 722.401875 avg 36.591816
The bad block list exactly matched the printed back block list from the top of the hard disk which gave me a lot of confidence.
IMG_2708.jpeg

Here's the emulator cabled for reading a hard disk.
IMG_2871.jpeg

After successfully backing up both disks, I went ahead and performed the SSP V5 upgrade, which went great. I backed up the disks again with the V5 software.

I thought I would see how the emulator worked with the System/36.

I converted both of the extracted data file backups to emufiles w/the below commands:
ext2emu -h 7 -c 733 -f Intel_iSBC_214_256B -e sys36_right_drive_extracted_data -m sys36_right_emufile
ext2emu -h 7 -c 733 -f Intel_iSBC_214_256B -e sys36_left_drive_extracted_data -m sys36_left_emufile
I mounted the emulator in one of the drive bays using a 3d printed model I found here: https://www.tinkercad.com/things/4DHmHDMOgek-st506-simulator-mount-5-without-faceplate I stole the sleds from one of the hard disks and used those to mount the bracket w/the emulator mounted to it. When using the emulator w/this computer, the control cable should have no twist, and connect to J2. The Drive A connector to J1, and Drive B to J6 (need a 20 pin female to 20 pin female for this one). Leave the P7 and P8 set to drive 1 and drive 2.
IMG_2874 2.jpegIMG_2896.jpegIMG_2897.jpeg

I followed David's instructions on how to set up the emulator to automatically start up on power up, and shutdown on power off. This involves using systemctl to enable the emulator as a service that starts up when the os boots, and changing the jumper on P9 to "Fill" to allow the hardware to charge the capacitors, that then provide power for the os to shut down gracefully when power to the emulator is lost. This feature works great, and allows you to put the emulator in a computer w/no access to the hardware, and it starts up and shuts down just fine on its own. It seems to start up very fast, about 12 seconds for me. I did add the optional step to have the emulator back-up the emulator files each time it starts up. I have it keeping 4 backups. I figure if I ever completely mess up my 5364 software, I can restore a previous backup to recover.

One note to be aware of - if you have upgraded to the latest beaglebone image, some of the directories have changed slightly from the instructions... for example:
cd ~/mfm
./setup_mfm_read
is now:
cd /opt/mfm
./setup_mfm_read

The 5364 runs so much quieter without the two full height MFM hard disks, and performance appears identical, although that is a subjective judgement as I have done no testing of the relative performance.

Here's the S/36 running off the mfm emulator. I've done about a total of 4 hours of testing across a week, and so far the emulator is working perfectly. At some point I want to test the experimental write feature of the mfm emulator to write my emulated drives back to the physical disks to see how that works, but for now I'm happy having a quiet and reliable 5364 to use.

IMG_2878.jpeg

Pete
 
Good to hear its all working well for you

is now:
cd /opt/mfm
./setup_mfm_read

FYI: You don't need to do that now since executables are in path of latest images. You can just
setup_mfm_read
mfm_read
from any directory.

I updated wording in

** Changes to instructions **​

here to be clearer. http://test/mfm/revb/revb_board_build.shtml
 
Good to hear its all working well for you

is now:


FYI: You don't need to do that now since executables are in path of latest images. You can just
setup_mfm_read
mfm_read
from any directory.

I updated wording in

** Changes to instructions **​

here to be clearer. http://test/mfm/revb/revb_board_build.shtml
Ok, thanks for the correction - I didn't even think to check if the commands were on the path.

Thanks very much for creating the emulator, it makes such a huge difference in being able to save these old machines!
 
I can echo peclark's sucess to a point - I have a copy of his images and they also work fine (so far) on an emulator here on my 5364. That's great if you have working disks that you want to archive and replace. What I'm trying to do is actually do a scratch install on an emulated disk image starting from a blank image. Running into some issues with that but I haven't really looked into them too far yet (I really only got the machine working reliably yesterday afternoon, there's been a lot of other stuff to fix with it). one thing I find odd is that I can initialize the "blank" image on the s/36 but when I re-IPL the machine thinks the disk isn't formatted, so ui think there's something the 36 is trying to write to the image that's not getting put down. i haven't looked at the images yet to compare them, that's next on my list.
 
I can echo peclark's sucess to a point - I have a copy of his images and they also work fine (so far) on an emulator here on my 5364. That's great if you have working disks that you want to archive and replace. What I'm trying to do is actually do a scratch install on an emulated disk image starting from a blank image. Running into some issues with that but I haven't really looked into them too far yet (I really only got the machine working reliably yesterday afternoon, there's been a lot of other stuff to fix with it). one thing I find odd is that I can initialize the "blank" image on the s/36 but when I re-IPL the machine thinks the disk isn't formatted, so ui think there's something the 36 is trying to write to the image that's not getting put down. i haven't looked at the images yet to compare them, that's next on my list.
It's awesome to hear those images are working ! I'm really glad you're working on getting a scratch install going - as I was really curious if that was possible. I'm not very knowledgeable about MFM hard disks (was an apple guy back in the day, so never used them when they were popular), but I do remember you have to low level format these I think - so I'm wondering, maybe if you low level format these in a PC first, and then try to do the system36 initialize if that would make any difference... Or perhaps start with an already low level formatted emulator image file if one is out there...

Pete
 
I've never had to do this, but it came up in another context.
Can emulated images be written back to a physical drive
with the emulator board?
 
It does support this, but it's experimental, and I haven't tried it yet, but am keen to. Here's the documentation
Had to make me look at the documentation. It was wrong to out of date. I have updated it and made precompensation selectable from the command line. A few people have successfully used it. It is missing handling bad sectors on the target disk. For most of the format either the controller doesn't do bad sector handling or I don't know how it does it so I can't do anything to avoid bad sectors. For formats that do support bad sector hiding I haven't written code to avoid bad sectors. Probably ext2emu would be where that should be done so you can remove any existing bad sectors and generate an emulator file that avoids sectors listed.
 
Peter:

Thanks for all the help is getting my drives imaged and my 5364 running on the emulator. David, thank you, what a fantastic product.

I have imaged 6 disks, R3M0 with two disks installed, R5M1 two disks installed in both English and Italian. Version 3 has both BASIC and COBOL installed. The Italian Version also has BASIC installed.

I am considering initializing the second Italian hard disk drive. Then imaging the newly initialized disk. This hopefully would provide a blank initialized disk but would contain the bad sector map from the original drive.
 
Back
Top