What About Software? Cromix Plus

The Cromemco GIT has a huge range of software, but being able to use it turned out to be somewhat more difficult than i had expected.

At this point i thought it may have been possible to run Z80 programs, but i didn’t know for sure, and i certainly didn’t know how to do it. I concentrated on 68000 software instead.

There is a huge catalogue that accompanies the hundreds of disk images in the archive. The range of software for 68000 is not huge, but there are some compilers, for example.

The catalogue also shows the disk format. It turned out that a lot of the disks with 68000 software were in a particular format referred to as Uniform, which i knew nothing about. As it turned out Cromix 20.09 knew nothing about it either, which left me with a problem.

By this stage searching the text catalogue was starting to get tedious, so i translated it to a spreadsheet. The repository is not static, so my spreadsheet is just a snap-shot:

Faced with this problem as i’m re-writing this a couple of years later, i would probably turn to Damian Wildie’s image manipulation program, cromix-fs, but that was beyond me back then.

I sought some help from the Cromemco google group and they were very helpful. They thought was that Uniform support was added at about version 31.50. This was much later than the simple 20.09. In fact, it had crossed over into Cromix Plus and into a new versioning scheme: Cromix Plus 150.

Things got very complex very fast at this point. For a start the boot and install disks were no longer 40 track images but RDOS 2.01 can only do 40 tracks so it would be necessary to construct a 40 track boot disk. (I could have made a new EPROM, but i was reluctant to mess with a working card.)

Also tricky is that Uniform support has to be included in the cromix.sys that is executed at boot. If the version in the repository has not included it, then it would need to be regenerated. And what if the install disks are actually in Uniform format?

And, wait, regeneration requires disk and memory space. Cromix Plus is bigger. The systems it supports are also bigger, and the configurations on the archives have more functions installed. That 512kB memory starts to look quite small, and the floppy disks claustrophobic.

The install itself is also larger. 20.09 essentials would fit on one 1.2MB disk. That’s not possible with Cromix Plus.

There was a lot of chicken and egg going on!

Just to add a little more complexity, somehow some of the archive disks had been archived with the wrong rotational speed, so before use it was necessary to “cleanse” them through the HxC software.

The speed should have been 360rpm, but was 300rpm.  This is obvious in the track viewer in the hxc software.  This can be corrected using the hxc software by converting IMD to raw and then importing the img as a raw file.  They can then be exported as hfe and scp for Greaseweazle or gotek/flashfloppy.

The cromix format uses 1 boot track of 26x128B sectors with FM and the rest of the 2*77-1 are 16x512B sectors with MFM.  The uniform format is 2*77*15*512B sectors with MFM. Getting the number of sectors wrong produces some odd results eg checksum errors on ftar/uniform disks!

After numerous attempts, i found a way through with the version 162 disks. These disks seemed to be close to original so that the existing cromix.sys was a bit smaller.

Three of the four installation disks were in uniform format (tarred). But the first one was not, and there was one more seemingly random disk that contained the regen directory for this version in the standard format. That was the “get out of gaol free card” that i needed.

Most of the Cromix Plus disks are 8”.  That means that I had to construct a boot disk by copying the cromix.sys from the 8” boot disk to a 360k disk.  Worse than that it turned out that bootloader from the 20.09 disks would not load the Cromix Plus cromix.sys. 

I was able to create a boot disk by getting a copy of the Cromix Plus fdboot file and popping it into the /etc directory of the 20.09 root disk.  Then I could use wboot to write the Cromix Plus bootloader to the 360k disk.  That gave a Cromix Plus loader and a Cromix Plus cromix.sys. Having made one boot disk it was easy to make boot disks for other versions just by copying the cromix.sys file.

Once the system booted, i updated the sysdef to add the Uniform driver (uflop), regenerated cromix.sys, updated the boot disk, and created the device files for uniform disk drives.

I set up the following drives.

SelectCurrent SetupPlayFinal?DrivesUse
05.25” 40 track DDGotekGotekfda/sfda/ufdaBoot initially and then access to images.  Good compromise because 360k works with RDOS 2.01 for boot and then the gotek switches format with the image
18”Gotek / 8”8”fda/sfda/ufda/
28”8”8”fda/ufda/usr
35.25” 80 track HD5.25” 80 track HD5.25” 80 track HDfda/ufdaTemporary mounts eg /usr/help /gen  

This gave an absolute minimum system that would allow software to be installed on disks on the fourth floppy drive. I could install from disk images that were in Uniform format. Software disks would need to be mounted prior to use and help would not be available.

Software on Cromix Plus

I found there are three classes of software that can be run:

  • Native 68000 Cromix programs
  • Z80 Cromix programs
  • Z80 Cromix/CP/M programs

The Cromix programs automatically invoke Sim.  The other Z80 programs automatically invoke Z80 which allocates the code to the Z80 processor.

Most of the applications for cromix that are available in github are languages.  Many of them seem to have been badged as Cromemco.   They install, predominantly, to /usr/pkg but not exclusively.  The installers often use links to make files appear in other places eg bin and cmd.  This is problematic because links can only be within a single device and there is not enough space to do this.

Each package really needs its own disk, which is mounted under the pkg folder. Because the links fail, it’s necessary to work just from each pkg folder.  This would be intolerable for serious work, but for demonstrating the system it’s fine.  Some of the command files need to be modified to work around the missing links.

The following cromix programs were installed:

  • 68000 C
  • Z80 C
  • 68000 Basic
  • 68000 Assembler

Wordstar and Dbase also worked fine, although there are some tricks with drive letters if needed.

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. 

Jade Double D FDC

The Jade Double D is notable for being an intelligent floppy disk controller. The onboard Western Digital FD1791 FDC chip is controlled by a Z80 processor. The CPU communicates with the DD through a 1kB window.

Although the card includes a processor and 2k of RAM it has no ROM. Instead, code must be injected by the CPU card. The code is embedded in the CPU boot ROM.

The boot code assumes that the window address must be set to F400. The jumpers were already correctly set.

This card supports 5.25″ drives on a 34 pin interface or 8″ drives on the 50 pin interface. Eventually i will use 8″ drives with this machine, but in the short term i just wanted to use a couple of goteks (with Flashfloppy).

The images that i wanted to use are from 8″ disks. These work fine in the gotek but because the gotek uses the 34 pin interface there were a couple of residual issues. There are a some signals expected by the boot ROM and the CP/M BIOS for the 8″ drives that are not on the 34 pin interface.

The first is the RDY signal which is supported by Flashfloppy on pin 34. This requires a link on the DD from pin 34 of the 34 pin interface to pin 22 of the 50 pin interface.

The second is that an 8″ drive can detect whether a disk is single or double-sided – the index hole is in a different location. For this, i added a switch to assert or negate the SIDES signal depending on which image i had loaded. I later copied all of the single sided disk images to double-sided disk images to make things a little simpler.

This card had a couple of hardware issues. The first was two shorted tantalums. The second was that, for whatever reason, two sockets had been butchered, and the chips soldered to the socket pins.

I replaced the sockets and devices.