8085/86 Compupro/Jade System

An enthusiast build – and i couldn’t even be sure that it’s complete.

Andrew, a friend from the ARC Group, has supplied me with a lot of funky gear including a box of S-100 cards, a couple of chassis, several 8″ floppy disk drives, and about 500 8″ floppy disks.

One of the challenges is that the relationships between all this kit was not obvious. This one i was only able to sort out because i found the source for some boot ROMs on one of the floppy disks. Even now i’m not sure if i have the original RAM card but the one i’m using does just fine.

It uses the following cards:

  • Compupro 8085/86 CPU Card
  • Jade DD Floppy Disk Controller
  • A handcrafted wire-wrapped Serial & Parallel I/O and Speech Synthesiser card
  • A parallel card with real-time clock
  • Intersystems 256KDR
  • A recently constructed EPROM Card

I have not connected an 8″ drive to it as yet, but it boots JADE CP/M 2.2 from a gotek. The disk images are from the original floppy disks.

8085/86 Getting Started

This machine is a reconstruction of a hobbyist built machine from the early eighties. It came to me in pieces in amongst a lot of other gear, so it wasn’t obvious to me that there was a complete computer there at all.

I had already rediscovered a Cromemco based computer which used half a dozen of the 29 S-100 cards that i’d received. I also had a rack, some 8″ drives, and a lot of 8″ disks which i had previously imaged.

Many of the disks were labelled as being Jade, and there was indeed a JADE DD Floppy Disk Controller amongst the cards. There were many more disks that used the JADE format.

There was also a Versafloppy II Floppy Disk Controller card, for which there were also a number of disks.

These were all CP/M disks so i was looking for a 8080, 8085 or Z80 processor board. The candidates were a Cromemco SBC which wasn’t a great fit with CP/M or a CompuPro 8085/88 CPU card which would work.

I also expected there to be some I/O and a card for a boot ROM. And RAM of course. There weren’t a lot of clues from the cards themselves.

Fortunately there was a disk labelled “Jade System BIOS Development which contained some assembler files for the CP/M bios and the boot ROM. At this point, i ruled the Versafloppy II out.

The boot ROM code had some comments identifying key components (8251, 8255 and 8253) on a W/W card. Once i found the card with that combination of components, i realised that W/W stood for wire-wrap. It was a hand-crafted board. It also has a speech synthesiser chip!

Looking at the chassis, i could see that the wires dangling from the back panel married up with empty sockets on the board.

A little while later i realised that there a couple more ports which may belong to this unidentified card:

It has a real-time clock on it.

I had several memory cards that could potentially be used, but given that the CPU card is capable of addressing more than 64k, i started with an Intersystems 256KDR.

This card is probably overkill, and i may swap it out in the future.

I do have an EPROM card, but it is made for 2708 EPROMs which i can’t program at present – i would need a new programmer.

Instead, i built a new card using a modern S-100 prototype card.

These cards for the basis for the system.

8085/86 An EPROM Board

I needed an EPROM board to complete this computer and i could not see any easy way to obtain an eighties era card, so i had to knock one together myself.

I started with an S-100 Prototype board designed by John Monahan. This has all the buffers etc that end up on nearly every S-100 card, so a lot of the hard work is done.

http://www.s100computers.com/My%20System%20Pages/Prototype%20Board/Prototype%20Board.htm

John’s board designs are available for anyone to produce (as far as i can tell) and they are easy to get in the States. Not so easy in Australia, but on this occasion a batch turned up in Australia so a bought a few.

I had what i thought was the boot ROM code on an 8″ floppy disk. I’d previously extracted the files so i could have a good look.

The boot code indicated that the boot ROM would be located at F800 and occupy 2k. The Jade DD floppy disk controller uses a 1k window at F000. CP/M is set up for 60k, so there is also 1k free at F000. The boot allocates this to a Micropolis boot ROM similar to the one in the Sorcerer/Micropolis System.

I allowed for an 8kB EPROM (2764). J1-3 sets which address lines are used for decoding.  To get just the top 2k, J1=J2.

Switch 1 sets the address of the ROM: in this case 00F800: 0000 0000 0000 1111 1000 0000 0000.

The highest address line decoded is A18, so the ROM will reappear at 04F800 but I don’t expect to ever have that much memory. That allows room for 256k of RAM.

My design worked immediately … no, of course it didn’t! I made several mistakes and i had trouble driving the phantom line (which disable RAM at the EPROM address). I eventually settled on the following:

I programmed an EPROM with the boot code that i found on the floppy disk.

There’s plenty of space left on the prototype card for some I/O if i ever run out of things to do.

8085/86 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.

8085/88 First Boot

The cards were popped into the rack, including a partially tested EPROM card with a boot ROM programmed using a file from one of the 8″ floppy disks.

The source showed that on start-up the first serial port to receive a space character would become the console and offer to boot from the Jade DD.

The boot ROM source indicated a serial port speed of 9600. I used an IBM terminal setup accordingly.

I started with a CPU, EPROM, and I/O cards and proceeded to discover the various mistakes i had made with the EPROM card!

Once i could see that code was being read from the EPROM i added the RAM board and the Jade Double FDC. I could see data coming out of the UART, but it wasn’t making it to the terminal and that was because a shorted tantalum on the Jade board had blown the -12V fuse.

Once repaired, i got the boot screen.

I hooked up a couple of goteks and on the second image it booted.

Credit to the original builder/owner/operator.

Ampro Little Board Plus

This is one of my current projects. It is based on the Ampro Little Board Plus which is a single board computer designed to be mounted on the back of a 5.25″ floppy disk drive.

It uses a Z80 processor running at 4MHz and includes two serial ports, one parallel port, a floppy disk controller and a SCSI controller. It runs CP/M 2.2 and is happy to boot off a floppy or hard disk. I’ve added a SCSI2SD to emulate several 20MB hard disk drives.

The user interacts with the machine using a serial terminal.

I started off with the two 40 track Mitsubishi drives shown but have been using a gotek (with FlashFloppy) for the software load.

Currently, i’m loading up a whole bunch of software from images created using cpmtools. Eventually this will be mounted in an external drive enclosure.

AMPRO Little Board – SCSI2SD

I used a scsi2sd card with a 256MB sd card.

This took me a bit longer than I expected because I didn’t read the instructions.  CP/M needs to be configured to have some hard disk buffer space, otherwise the format fails mysteriously.  I changed it from 60k to 56k.  That allows room for the maximum 88MB of total disk storage.

The hformat program allowed for different controllers but after some experimenting I found success with the Seagate ST-225N hard disk. 

+-----

Form                 5.25"/HH              Cylinders     615|     |     |

Capacity form/unform    21/   25 MB        Heads           4|     |     |

Seek time   / track  65.0/20.0 ms          Sector/track   17|     |     |

Controller           SCSI1 SINGLE-ENDED    Precompensation

Cache/Buffer               KB              Landing Zone      670

Data transfer rate          MB/S int       Bytes/Sector      512

                      1.500 MB/S ext ASYNC

I set up sd2scsi with 7 drives each with 615 x 4 x 17 = 41820 sectors of 512 bytes.

I used hinit (with burst mode) to set up 2 partitions on drive 0 and drive 1:

  • 8192k
  • 8192k

This needs to be done on every boot (really? yes) but an alias can be created:

alias

HINIT YD010 AF8192 AG8192, YD110 AF8192 AG8192,.

hardinit

then another alias that does this and swaps the drives over:

alias

HARDINIT; SWAP AF BG CH DI; STARTUP

HSTART

Startup can contain whatever is wanted, eg a menu program.

HSTART can be run on boot by adding at item 5 in the config program.

Copy the system track from the boot floppy to the hard disk using SYSGEN (watch out for the letter swapping).

Less than obvious (it’s in a separate section of the hard disk software manual right at the end) are instructions for autostart, noting HGEN in particular.:

When the system starts, it looks for a boot floppy. If it finds it, then it will boot from it.  If it doesn’t find it, in about 10 seconds it will boot from the first hard disk partition.  For some reason it keeps looking for a disk in the first floppy disk drive.  If you give it one it stops but does nothing with the disk.

AMPRO Little Board – Enclosure

The Little Board was designed so that it could be mounted to a 5.25″ floppy disk drive. In keeping with this vibe, it uses a floppy disk drive power connector with just 12V and 5V; -12V for RS232 is generated on the board itself.

With this in mind, i thought that perhaps a disk drive enclosure could be a useful starting point. I had bought a hard disk in an external enclosure at a swap meet, but i was unable to find any information on the interface. I figured that the drive within would not be reliable in any case.

The enclosure has a heavy linear supply providing +5V and +12V. The drive itself is a full height 5.25″ drive, so there is sufficient accommodation for two half height floppy disk drives.

I figured that i could sequester unused parts, including the hard disk, just in case i wanted to return it to its original state.

I wanted to include a physical floppy disk drive, a gotek emulator, the Little Board, and a SCSI2SD card. If i mounted the Little Card to the floppy drive then it would have been underneath which would make it difficult to access the connectors.

Instead, i created a “baseplate” to accommodate the Little Board and the SCSI2SD. I mounted the baseplate on the top cover.

I replaced the perspex front panel with a new aluminium panel with a cutout for the drives and holes for power and hard disk lights and a reset switch.

Both the front panel and the baseplate were earthed. I used metal standoffs and cleared paint so that they would ground the cards.

The front panel got a couple of coats of gloss Bermuda blue.

The enclosure had a couple of cutouts for connectors, which gave enough space for two 9 pin serial ports and the 25 pin printer port. I made up a custom panel to overlay the existing cutouts.

Using Greaseweazle with Sorcerer/Micropolis Disks

The Micropolis disk system uses hard sectored disks. This is particularly challenging for disk imaging systems.

Release 1.20 of Greaseweazle included hard sector support, so i gave it a try. I was able to read and write disk images with moderate success. Without a codec for the disk formats the software could not check each track and retry if necessary.

The Greaseweazle developer, Keir Fraser offered to add the fluxengine codec into the code which he did very rapidly.

I tried it out and found it worked very well.

I did find that some of the default parameters didn’t work well with my drives, but these were changed with the delays option.

The relevant commands are:

Get helpgw -h
Speed testgw rpm –-drive=0
Head cleangw clean –-drive=0
Set some safe drive parametersgw delays –-step=30000 –-settle=10
Reads a micropolis disk into an scp file.  The raw option keeps the sector pulses and allows reprocessing.  Without the raw option the files are more easily viewed with the HxC tools.gw read –hard-sectors –-drive=0 –revs=5 –tracks=”c=0-76:h=0″ –-raw %1.scp
Writes a micropolis scp file to a diskgw write –hard-sectors –-drive=0 –tracks=”c=0-76:h=0″ –-raw %1.scp
Reads a SS 100TPI 256 byte sector micropolis disk and decodes it into an IMG file.gw read –hard-sectors –drive=0 –format=micropolis.100tpi.ss –retries=8 %1.img
Writes a SS 100TPI 256 byte sector micropolis IMG file to a diskgw write –hard-sectors –drive=0 –format=micropolis.100tpi.ss –retries=8 %1.img
Reads a SS 100TPI 275 byte sector micropolis disk and decodes it into an IMG file.gw read –hard-sectors –drive=0 –format=micropolis.100tpi.ss.275 –retries=8 %1.img
Writes a SS 100TPI 275 byte sector micropolis IMG file to a diskgw write –hard-sectors –drive=0 –format=micropolis.100tpi.ss.275 –retries=8 %1.img

CP/M files are read with the 256 byte option format=micropolis.100tpi.ss

When creating the image files, the sector integrity is checked and if the sector is bad it is retried. It was common for multiple retries to be required.

I did try to adjust some parameters (i had to with fluxengine) but i could not get much improvement. Nevertheless, it was quite satisfactory.

The actual system does better, so it often helps to make a fresh copy of a disk on the Sorcerer before trying to image with either FluxEngine or Greaseweazle.

I also tried using Greaseweazle to write micropolis images to soft sectored disks with a Virtual Sector Generator. It also works fine.

What i have not been able to do, so far, is to trick the Sorcerer into using a Gotek/Flashfloppy either with or without the Virtual Sector Generator.

As at V1.22 Greaseweazle includes the micropolis codec.

I use Greaseweazle a lot so i really appreciate the effort that Keir and others have put into its development.