8″ Disk Drive Unit

I had a badly deteriorated industrial computer chassis with accommodation for 2x 8” drives.  It also had a cutout for two 5.25” floppy drives.  I could have used it on an STD project, but I have another rack that I can use for that which is more compact and has an integrated power supply.

I figured that if i reduced the length of the chassis to get rid of some bulk, then it might make a good drive unit for the Cromix system above. 

It took a lot of mechanical work, but the result worked pretty well. I put a window in the top cover just so that the operations of the 8″ drives could be seen and enjoyed – not something i would have done with a vintage unit.

I added one more high density drive (Mitsubishi 4854) which is on the 5.25” cable but appears to the cromix to be another 8” drive. I had to make a small mod to the 16FDC board to route the pin 34 of the 5.25” interface (RDY) to pin 22 of the 8” drive interface.  This is because the high density 5.25” inch is treated as an 8” drive and Cromix expects a ready signal for those drives.

This particular Mitsubishi 4854 drive has a curious property whereby the reduced write current pin 2 has been disconnected – possibly because it was in a system which used pin 34 for a drive or side select.  The line is pulled up, but only when the terminator is in place.  That means this drive must carry the terminator because the line does have to be high.

Along the way I checked the alignment of the drive (which was good) but noticed that imagedisk could only make sense of the very first track on side 0.  Apparently this track is FM rather than MFM – probably for compatibility with the 16FDC ROM.

The Mitsubishi M4854 drive has a head solenoid.  The solenoid is probably unnecessary because the system seems to be ok with the drive spinning up on each access (this didn’t work with other high density drives or the 8″ drives). 

Currently, i use a gotek/flashfloppy in place of the 40 track 5.25″ boot drive. I start with an image of a 40 track boot disk and can then switch to any of the myriad of 8″ disk images from the GIT repository.

Drives/devices are arranged as follows:

 DriveMount PointSmallLargeUniform SmallUniform Large
0Gotekdasfdafdausfdaufda
18”dbsfdbfdbusfdbufdb
28”dcsfdcfdcusfdcufdc
35.25 80 Trackddsfddfddusfddufdd

I also expect to be able to use this unit with the Compupro/Jade CP/M machine. 

Solid State Storage

Cromix is really intended for operation with a hard disk.  I made it work with floppies, but it was always going to be a huge compromise.   In particular, it is common for software installations to add links and these links fail if they span physical volumes. And then there’s the general inconvenience of swapping floppy disks.

There were a few hard disk solutions offered in the 1980s, but these are largely unavailable now.  The closest that I thought I could get was a WDI II card and a hard disk emulator.  This would have been very expensive.

A little searching of the Cromemco google group yielded an alternative solution which did not seem to have a lot of discussion.  The S-100 community has created a lot of new board designs including a CF/IDE board designed by John Monahan.  This board has CP/M support but “out of the box” there is no Cromix support.  Fortunately, a talented chap, Damian Wildie up in Brisbane, has written a driver for Cromix.  I contacted him to see if he would help me to get a CF/IDE card up and running, and he agreed without hesitation.

That left me needing the card itself.  These cannot (as far as I know) be bought in an assembled or even kit state.  The PCB was available locally which was a bit of a fluke; not many S-100 boards are available in Australia.  I had already bought an extender card from the same seller.  The rest of the parts came from stock, element14, ebay and wherever I could find them.  Some of the parts are not easy to find here in Australia.

I built up the extender and the CF/IDE card and Damian came through with a disk image for the CF card and another for a boot floppy – the driver doesn’t allow for boot from the CF card but it can be the root filesystem.  Damian even customised it for my system which was above and beyond.

After some problems with the first image and a couple of mysteries with the card (one turned out to be a badly soldered artificial resistor pack) the other I’m not sure about.  I swapped out 54LS244s for 74F244s, and it got better – it may have been speed, but the sockets feel a little loose to me.

  • Does not support booting
  • The disks cannot be initialised from Cromix
  • Diskinfo does not seem to always work.

The size of the disks seems to cause some issues for my 512kB system eg dcheck and icheck don’t work.  This really means that the disk needs to be imaged regularly. (Resolved with increased memory – about 370k required to do the check!)

The major device number is 12.  The first partition on card A has a minor number of 0.  These need to be entered as the root device.

Damian has provided a customised gen directory at /usr/ide.  Regeneration works fine.

Installation of apps is now a lot easier.

The /etc/ttys has been edited to set the terminals to Televideo 925 (T925 in termcaps) which works with the IBM terminal.

Users Admin, Graham, User1, and User2 have been added.

Messages have been customised.  Damian (message is in ide_sysdef) and Vic have been acknowledged (/etc).

The help system works!

It is relatively easy to backup cards using dd even on Windows.  Writing seems to be easier with balenaEtcher.  I have bought some additional CF cards, but they seem to have some incompatibility.  I will try a different brand.

More Memory

Wishing to be able to run the disk checks properly to be able to run lots of processes, and haunted by the thought that more memory failures can be expected on the 512MSU, i again turned to a modern solution.

This time it was a static memory board designed by John Monahan:

http://s100computers.com/My System Pages/16MG RAM Board/16MG RAM Board.htm

I could have gone for the full 16MB and filled the address space but i wanted to keep the 512MSU so i built an 8MB version. The existing memory could be moved just by changing some DIP switches on the MCU.

This project would probably still be pending but for a bare board being up for sale in South Australia.

If a generic memory board is used instead of the MCU/512MSU then:

  1. It must support a Phantom signal
  2. The 16FDC needs to be modified to provide a Phantom signal
  3. The Phantom signal needs to either be on a different pin from the normal 67 or the DPU needs to be modified to not use pin 67 eg by cutting pin 6 of IC 41.  It’s probably better to modify the new board to use pin 69 and be consistent with other group members.

https://groups.google.com/g/cromemco/c/T_eui2YJEQ0/m/FkrSFaYtBwAJ

I think it may still be possible to use the DPU as well if the memory card is 4MB or 8MB.  It just needs to be located after the new board.  It can’t go before because the board boundaries are not fine enough.

The SRAM is expensive at over $10 per MB.  In the end it was easier to get the 4MB parts and two are required so I built an 8MB variant.

This card will be located at 0000H-7FFFFH. The 512MSU will be at 8000H-87FFH and the DIP switch will need to 01000.

The biggest challenge with building the board is mounting the TSSOP packages.  I used paste and hot air and cleaned up the excess with solder wick.  There were some troublesome bridges one of which only cleared after reflowing with hot air.

I had a look at the PAL equations just to make sure they would work with 8MB.

GAL5:

/BOARD_SELECT  =  sINTA  + sINP  + sOUT  + /PHANTOM@

bsMEMR@ =       /bsMEMR

GAL6:

/S100_8_RD_OE@      =      /RD8@  * bA0   * BOARD_SEL * /pSYNC                  ;U19, 8 Bits to CPU, odd/high address
                         + /RD16@         * BOARD_SEL * /pSYNC                  ;Any 16 bit data Read
                         + /WR16@         * BOARD_SEL * /pSYNC                  ;Any 16 bit data Write

/S100_8X_RD_OE@      =     /RD8@  * /bA0  * BOARD_SEL * /pSYNC                  ;U31, 8 Bits to CPU even/low address

There seemed to be no interest in the address lines ie this board is selected regardless of the address (except for the phantom).  For a 16MB card that would be correct. And it doesn’t matter for writes as long as all of the address lines are in use at P101 – this should just cause a write to RAM that isn’t loaded. But it would cause a read contention with a board in the top 8MB eg where I want the old 512kB to be.

I think that for my situation GAL5 so that /BOARD_SELECT is asserted only when the for the first 8MB.

/BOARD_SELECT  =  sINTA  + sINP  + sOUT  + /PHANTOM@ + A23

I made the change.

It took hours to run the 68k RAM test in CDOS, but it was successful. 8.5MB of RAM was good to go.

cromix.sys had to be regenerated with an updated sysdef. After this there was abundant memory! There are a bunch of tweaks that i could do to take further advantage of the memory and i think a RAM disk could also be added.