Case Study - Restoring an Intel MDS-225

A horizontal ribbon.

Introduction

This is the story of my work to get an Intel MDS-225 up and running under ISIS-II on 8-inch FDDs. This machine consists of two multibus boards: MDS-225 IPC and ZX-200A DSDD FDC. I got the MDS-225 board from Richard Main who was also designer of the Zendex ZX-200A.

This has been updated with hardware and software changes as I make them. I have been doing battle with this system and software for several months. The constant changes represent findings and fixes I have done along the way.

The Hardware Reference Manual (HRM) for the Intel MDS-225 I have is Intel Order Number 9800556B.
The Schematic Diagrams for the Intel MDS-225 I have is Intel Order Number 9800544D.
The Hardware Interface Manual for the Intel MDS-225 I have is Intel Order Number 9800555C.
The Hardware Reference Manual (HRM) for the Zendex ZX-200A I have here.
The Hardware Reference Manual (HRM) for the iSBC 202 I have is Intel Order Number 9800420A.
The ISIS-II User's Guide I have is Intel Order Number 9800305F.

Try One

To do this I initially had:
1) A known good MDS-225 IPC board with jumpers set for ZX-200A (Picture).
2) An unknown Zendex ZX-200A (Equivalent of the iSBC 202).
3) An new ATX Power Supply. (Picture)
4) My homebrew MDS-225 Adapter (MDS-225 P2 Adapter).
5) Bootable 8-inch ISIS-II, Ver 4.3, M2FM media.
6) 8-inch floppy disk drives.
7) The manuals listed above.
8) MDS-225 Monitor Version 1.3 EPROM on the MDS-225.
9) An unknown MDS-22X/23X Card Cage. (Picture 1) (Picture 2) (Picture 3)

I spent several months messing with this board set and the 8-inch drives. I had one disk from Richard that would ocassionally boot. But not reliably. And the other disks did not boot at all. It was frustrating, to say the least! It turns out the problem was with the priority bus request not being implimented. I found this out after I switched to 3.5-inch FDDs.

During the time I was messing with the 8-inch drives, Richard had developed an adapter board that drove 4 each 3.5-inch drives at 360 RPM (1.6MB) that emualted exactly the 8-inch double density M2FM drives on the original MDS-225. He had created bootable disks that worked with this system. He was able to copy between 8- and 3.5-inch DD media.

Also during this time, Richard had designed an MDS-225 P2 Adapter which would replaced my homebrew adaptor. This made the conversion of the MDS-IPC cleaner than it was before.

He sells these adapters on his site, www.zedex.us.

One thing I noticed on the new ATX power supply label was that the 3.3V, 5V and 12V supplies required a minimum load (see picture of ATX PS above). The system will load the 5V supply correctly, but the 3.3V supply is not used so a resistor load must be provided for it. I may use an SATA drive to load the 12V supply for initial tests. I had not noticed this requirement on the older ATX power supplies.

The minimum load has been with us for a long time. The standard says it is required to maintain regulation. So bear this in mind. In these old systems the 3.3V is not used and has no load.

Also, the MDS-225 requires a source of -10V used to create -5V for the onboard RAM. I do not have -5V or -10V on the new ATX power supply so I used the -12V to supply this need. -5V used to be common on older ATX power supplies.

Standard 24-pin ATX Power Connector.

        Pin     Function    Function    Pin
        1       +3.3V          +3.3V     13
        2       +3.3V           -12V     14
        3       GND              GND     15
        4       +5V            PS ON     16
        5       GND              GND     17
        6       +5V              GND     18
        7       GND              GND     19
        8       PWR OK            NC     20
        9       +5VSB            +5V     21
        10      +12V             +5V     22
        11      +12V             +5V     23
        12      +3.3V            GND     24
        

MDS-22X/23X 4-slot Card Cage and ATX Power Supply

The MDS-22X/23X 4-slot multibus card cage I had P2 connector and cable on it. The P2 adapter mounts on the end of the cable and provides the connections to the two serial connectors (10-pin headers) and for parallel priority (10-pin header).

I connected the RS-232 lines off the P2 adapter to two DE-9/DB-25 RS-232 connectors I pulled from old PC serial boards. The original IOC board provided some jumpers to reverse or loopback the TXD/RXD and CTS/RTS pairs.

Old PC DB-25 to 10-pin Header.

        DB-25       Signal     10-Pin
          2           TXD         3
          3           RXD         2
          4           RTS         7
          5           CTS         8
          6           DSR         6
          7           SG          5
          8           DCD         1
          20          DTR         4
          22          RI          9
        

Old PC DE-9 to 10-pin Header.

        DE-9       Signal     10-Pin
          1           DCD         1
          2           RXD         2
          3           TXD         3
          4           DTR         4
          5           SG          5
          6           DSR         6
          7           RTS         7
          8           CTS         8
          9           RI          9
        

These DE-9 and DB-25 cables are interchangable as needed for off board connections.

Here are the MDS-225 P2 Connections. I built a hand wired adapter to test the system. These connections are at the P14 IDC connector off the end of the cable from the P2 connector.

	 1	SEL PIO/		31	TTY-REC CLK
	 2	SID			32	TTY-XMT CLK
	 3	SEL CRT/		33	TTY-CTS
	 4	DAT 7/			34	TTY-RxD DATA RTN
	 5	DAT 6/			35	TTY-DSR
	 6	DAT 5/			36	TTY-TxD
	 7	DAT 4/			37	TTY-RTS
	 8	DAT 0/			38	TTY-RDR CTL RTN
	 9	DAT 1/			39	TTY-EXT XMT CLK/TTY DATA RTN
	10	DAT 2/			40	TTY-DATA RTN
	11	DAT 3/			41	TTY-RDR CTL
	12	CRT INT			42	TTY-DTR
	13	EXT IORC/		43	CRT-RxD
	14	EXT IOWC/		44	BPRN 8/
	15	EXT ADR0		45	BPRN 7/
	16	EXT INIT/		46	BPRN 6/
	17	PIO INT			47	BPRN 5/
	18				48	BPRN 4/
	19	CRT-TxD			49	BPRN 3/
	20	TTY-TxD DATA RTN	50	BPRN 2/
	21	CRT-DTR			51	BPRN 1/
	22	CRT-RTS			52	BREQ 9/
	23	CRT-DSR			53	BREQ 8/
	24	CRT-REC CLK		54	BREQ 7/
	25	TTY-RxD			55	BREQ 6/
	26	GND			56	BREQ 5/
	27	GND			57	BREQ 4/		
	28	CRT-XMT CLK		58	BREQ 3/
	29	SOD			59	BREQ 2/
	30	CRT-CTS			60	BREQ 1/
	

The P2 adapter and wiring is shown here:

P-2 60-pin Header Definitions for the CRT Port. These are the 7 wires that need to be connected to provide the complete CRT port.

         P-2        Signal      10-Pin
          19        CRT-TXD       3
          43        CRT-RXD       2
          22        CRT-RTS       7
          30        CRT-CTS       8
          23        CRT-DSR       6
          21        CRT-DTR       4
          26/27       GND         5
        

P-2 60-pin Header Definitions for the TTY Port. These are the 7 wires that need to be connected to provide the complete TTY port.

         P-2        Signal      10-Pin
          36        S1-TXD        3
          25        S1-RXD        2
          37        S1-RTS        7
          33        S1-CTS        8
          35        S1-DSR        6
          42        S1-DTR        4
          26/27       GND         5
        

At this point, I was able to apply power to the MDS-225 system. On a 3-wire RS-232 cable I got the system prompt the first try. With the original ROM I found out the TTY serial port ran at 110 baud. The CRT serial port ran at 2400 baud. You had to hit the space bar to get the monitor to operate on the selected port. These clues came from Richard.

Monitor Software

I have the source code for several versions of the monitor software for the MDS-225 here in the 8080 section. The MDS-225 came with Monitor Version 1.3.

I modified the Monitor to Version N1.0 as follows:
1) made both ports 9600 baud
2) added functionality to the Monitor code (I/O port read and write, separate BOOT)
3) removed all support for the IOC board from the Monitor code.
The new Monitor ROM is also located here in the 8080 section. Still need to hit the space bar to select the operating port.

The Monitor has the capability to load Intel hex files into memory and execute those programs. It does not provide any way to save those files to the ISIS-II file system. It's only knowledge of ISIS-II is the ability to boot it up from :F0:.

ZX-200A FDC Board [1979]

8-Inch Floppy Drives

Initially, I tried to connect one or two 8-inch floppy drives to the controller. I had a set of 8-inch boot disks from Richard. I connected it all up as I thought it should be done.

I did battle with the 8-inch drives for several months. I spent a great deal of time messing with the FDD jumper settings. Almost any attempt to boot ended in a hang with the INT2 LED lit. Occasionally, one disk would boot into ISIS-II. The LED should have told me I had an interrupt or bus request problem. It did not. It turned out this was a problem with the Parallel Priority not being wired on the backplane. On newer versions of Richards MDS-225 P2 Adapter he brings out the necessary wire connections to connect to the proper two backplane pins.

Try Two

When Richard returned my IPC and ZX-200A boards, he included all the material to build a system using 3.5-inch disks to emulate the 8-inch disk drives. It included:

1) Richards MDS-225 Adapter (MDS-225 P2 Adapter). (Board Layout)
2) Richards MDS-SA-850-FD235HG Adapter (8-inch to 5.25-/3.5-inch FDDs Adapter). (Board Layout)
3) Bootable 3.5-inch ISIS-II, Ver 4.3, M2FM media.
4) 4 each 3.5-inch FDDs to replace the 8-inch drives.
5) A complete disk cable set to hook it all up.

In my stash of multibus material I had:

6) An unknown Electronic Solutions 7-slot multibus card cage

Electronic Solutions 7-slot Card Cage and ATX Power Supply

The Electronic Solutions 7-slot multibus card cage I has no P2 connectors on it. Richards P2 adapter mounts in the card cage and provides the connections to the P2 connector for the two serial connectors (10-pin headers) and for parallel priority (10-pin header). This adapter and wiring is shown here:

P-2 60-pin Header Definitions for the CRT Port. These are the 7 wires that need to be connected to provide the complete CRT port.

         P-2        Signal      10-Pin
          19        CRT-TXD       3
          43        CRT-RXD       2
          22        CRT-RTS       7
          30        CRT-CTS       8
          23        CRT-DSR       6
          21        CRT-DTR       4
          26/27       GND         5
        

P-2 60-pin Header Definitions for the TTY Port. These are the 7 wires that need to be connected to provide the complete TTY port.

         P-2        Signal      10-Pin
          36        S1-TXD        3
          25        S1-RXD        2
          37        S1-RTS        7
          33        S1-CTS        8
          35        S1-DSR        6
          42        S1-DTR        4
          26/27       GND         5
        

P-2 60-pin Header Definitions for the BPRN/BPRQ Port. These are the wires that need to be connected to provide the complete bus priority connections.

         P-2        Signal      10-Pin
          48        BPRN 4/     10
          49        BPRN 3/      9
          50        BPRN 2/      8
          51        BPRN 1/      7
          57        BREQ 4/      4	
          58        BREQ 3/      3
          59        BREQ 2/      2
          60        BREQ 1/      1
        

Electronic Solutions 7-slot Card Cage and Power Supply

The Electronic Solutions 7-slot multibus card cage I has no P2 connectors on it. The P2 adapter mounts in the card cage and provides the connections to the P2 connector for the two serial connectors (10-pin headers) and for parallel priority (10-pin header). This adapter and wiring is discussed at the top of Try Two above.

I again used the cables and connectors from old AT power supplies to connect power to the Molex connectors on the card cage. The card cage has more pins on both connectors, J-12 and J-13, than the 6-pins on the old AT cables, but we do not need to use the extra pins. I still have not determined how to attach the ATX power connector physically to the card cage. I placed a 10 ohm 10 W resistor on the connector to load the 3.3V supply. I was able to test the card cage and power supply without any boards in the card cage.

The ATX power supply and the card cage tested good!

MDS-225 IPC Board [1982]

I connected the RS-232 lines off the P2 adapter to two DE-9/DB-25 RS-232 connectors I pulled from old PCs. The original IOC board provided some jumpers to reverse or loopback the TXD/RXD and CTS/RTS pairs. I used Richards adapter to test the system.

At this point, I was again able to apply power to the MDS-225 system. THE system ran as expected.

ZX-200A FDC Board [1979]

3.5-Inch Floppy Drives

So I took the complete system Richard had sent me and put it together. I had to wire a power connection for the backplane to ATX as this is not on Richards MDS-225 P-2 Adapter. I connected all of the equipment and cables and the system booted up.

WE ARE UP! Thanks Richard!

Later on, I placed all the components on a 1/2-inch MDF board to keep them all in one place and no shorts. Makes moving the system much easier!

Operational ISIS-II, Version 4.3

What I was able to boot was a full ISIS-II Version 4.3. The system boots reliably and runs correctly. I have many disks that Richard sent as a "Starter Set" with a lot of different MDS programs and differeing versions of programs on them.

Archive

I am going to archive the software I have on this web site. I have acquired material from the WEB and some people that had small archives. We are both looking for more ISIS-II (MDS, MDS-II, MDS-III, MDS-IV, and iPDS-100) software to add to the archive.

Working with the Modified MDS-225

Having an operational system with bootable disks has changed the emphasis on how I approach the debugging of the system. In going through the code Richard sent me I find I am missing SYSTEM.LIB, required to link PLM80 programs, and LINK.OVL, required to link object modules into executable utilities on the MDS-225. I have these files on my PC but still lack the ability to move them from the PC to the MDS in a usable form. This is part of the Real Problem discussed below.

I got the missing files from Richard on a floppy disk. I am now able to build CUSPs (ISIS-II Utilities) from source code in both assembler and PLM80.

ISIS-II Source Code

I have been in contact with Mark Ogden. He has provided his latest build tree for ISIS-II Version 4.1. It works on a 32-bit Win7 system with 7Z, VS Redistribution 2013, VS Redistribution 2015, and VS Express 2013. It compiles the ISIS.T0 boot file, the ISIS.BIN OS file and both SYSTEM.LIB and PLM80.LIB. It uses the Thames ISIS Emulator to actually execute the compilier and assemblier commands required to build these key parts of the ISIS-II Version 4.1 Operating System. These builds are automatically validated against the original ISIS-II code. The new ISIS-II Version 4.1 build tree archive is located here in the ISIS-II section.

The Real Problem

The real problem is still the same. Someone purchases a complete operational MDS system. There are bootable disk images on my site and others. The images need to be placed on a disk (8-inch or 3.5-/5.25-inch emulating an 8-inch drive) in M2FM (a recording format not used in 30 years) as the MDS media. The current generation of integrated floppy disk controllers cannot read or write in the M2FM format. The tools used to make the disk images 30 years ago are unavailable today. We need to find a solution to this problem!

Tools Available on ISIS-II

The COPY command on ISIS-II can be used to copy ASCII files to the MDS. The command is of the form: "COPY :CI: to :F1:TEST.TXT". Then send the file from the console emulator to the MDS. When the transmission is complete, send a control-Z to the console to signal EOF to COPY. Note: I had to use 20ms character pacing and 200 ms line pacing to assure the text was received at 9600 baud correctly.

The COPY command can also send ISIS-II text and hex files to the console so they can be captured. The command is of the form: "COPY :F1:TEST.TXT to :CO:". Then send the file from the PC using the DOS COPY command.

The COPY command can be used to read input from the other serial port. The command is of the form: "COPY :TR: to TEST.TXT". Then send the file out the COM port on the PC to the MDS with DOS COPY command. Again, when the transmission is complete, send a control-Z to the serial port to signal EOF to COPY.

The COPY command can be used to send output to the other serial port. The command is of the form: "COPY TEST.TXT to :TP:".

The HEXOBJ and OBJHEX files in ISIS-II work on Absolute Object Module Format (AOMF) files. This is the executable file format used by ISIS-II for all programs. These commands will not work to or from binary files because they are built to work with AOMF.

COPY will work fine with ASCII text files like source code and hex files. With hex files you need to be able to convert from hex to binary or binary to hex on the MDS. I did not have a HEXBIN or BINHEX command on my MDS images nor on the MDS disks I have.

I have been working on backing up the floppies Richard sent me with the system. I have been having trouble formatting new disks and copying files to them. Looking through the material on using 3.5-inch drives to emulate 8-inch drives I find that pullups are required on the lines from the FDD to the controller. I put 4 each 150 ohm pullups to +5VDC on Read Data, Write Protect, Index, and Track 00 on the Disk Adapter Board.

I have reviewed several 3.5-inch FDD manuals. They pullup the input lines with 1K ohm resistors. The outputs are driven by open-collector TTL NAND gates without pullups. This means on my MDS system, these lines were floating! Not good! The pullups improved the operation of the system when formatting disks and copying files to them.

I am still having a problem with formatting and copying files to new disks. I occasionally get an error writing to the disk. If I repeat the format operation a time or two on the same floppy disk, it will complete with no errors. The floppy disk works correctly in any of the 4 drives on the system. I don't understand this.

KERMIT

I have found Kermit for the MDS at Columbia University. I moved the four source files to the MDS-225 from the PC with COPY discussed above. They were all ASCII PLM80 source files. I was able to compile and link them, and load the result to build an operational ISIS-II Kermit.

With this I am now able to move files of any type either way on my MDS-225. This is still not an answer to the Real Problem above!

Where Are We Now?

I have an operational MDS-225 software development system. I have 4 floppy drives on it and two serial ports. I can freely move files between my PC and the MDS. I am running ISIS-II Version 4.3. This system DOES NOT support the new hard drives. To use them, I need to run ISIS-II Version 4.3(W). I have files for V4.3(W) on my PC which replace some files from the base V4.3 load and add others. The next step is to try and build a bootable ISIS-II Version 4.3(W) disk on my system.

SYSGEN Program Description

When I have done this on a CPM-80 system I use two files. One contains the System Image in a known format (like the MOVCPM format). The other is SYSGEN which will format the media on the Target System and copy the System Image to the media to make a bootable Target System Disk. This is a complicated program and varies drastically with different Operating Systems and Target System Disk Formats.

ISIS-II systems for the MDS Family of processors used 8-inch disks in either SSSD or SSDD format. These were 256256B or 512512B, respectively, long. The OS was placed on the disk as follows:

		Disk Layout SSSD 2002 blocks, 256256 bytes total:
	
	FILE          LB        START        END
	ISIS.T0     0   24      0   1       0   23      23 sectors + LB
	ISIS.DIR    1   1       1   2       1   26      25 sectors + LB
	ISIS.MAP    2   1       2   2       2   3       2 sectors + LB
	ISIS.LAB    0   25      0   26      0   26      1 sector + LB
	ISIS.BIN    2   4       2   5       2   26      22
	                        3   1       3   26      26
	                        4   1       4   14      14
	            4   15      4   16      4   26      11
	                        5   1       5   19      19 = 92 sectors + LBs
	ISIS.CLI    5   20      5   21      5   26      6 
	                        6   1       6   15      15 = 21 sectors + LB
	
	Disk Layout SSDD 4004 blocks, 512512 bytes total:
	
	FILE          LB        START        END
	ISIS.T0     0   24      0   1       0   23      23 sectors + LB
	ISIS.DIR    1   1       1   2       1   26      25 sectors + LB
	ISIS.MAP    2   1       2   2       2   5       4 sectors + LB
	ISIS.LAB    0   25      0   26      0   26      1 sector + LB
	ISIS.BIN    2   6       2   7       2   52      46
	                        3   1       3   16      16
	            3   17      3   18      3   47      30 = 92 sectors + LBs
	ISIS.CLI    3   48      3   49      3   52      4
	                        4   1       4   17      17 = 21 sectors + LB
        

Since I am only dealing with emulated DD media, I will need to 5 complete tracks of ISIS-II to the newly initialized disk to create a bootable floppy disk. Track 0 is only 26 sectors, while tracks 1-4 are 52 sectors. With sectors 128B, this requires a file 29,952 decimal (0x7500) bytes long. This is doable in a 64KB MDS-225 memory map.

The 3.5-inch disk emulation only handles 8-inch DD disk emulation. All data is written in M2FM which cannot be read or written by by any of the available single-chip disk controllers. It must be done by an Intel SBC-202 or Zendex ZX-200A.

SYSGEN Program Development

The two acceptable DD disk controllers (SBC-202 or ZX-200A) are identical in programming. Commands are entered into an 7-byte I/O Parameter Block (IOPB) and the address of the IOPB is written to I/O ports on the controller. Reading the status port will report the end of operation with or without errors. The ZX-200A will also provide SD disk operation while the SBC-202 will not.

I am in the process of manually formatting a 3.5-inch floppy on the ZX-200A disk controller using console commands in the Monitor. I need to figure this out before I can actually create code for this function of SYSGEN. I have not been successful in getting this to work at this time. But this is a learning experience for me. I have never had an operational ISIS-II system before this.

Place Holders while I develop page

ISIS-II System Calls

I need a place to hold the ISIS-II system calls.

        OPEN 	0 	CONSOL 	8 
	CLOSE 	1 	EXIT 	9 
	DELETE 	2 	ATTRIB 	10 
	READ 	3 	RESCAN 	11 
	WRITE 	4 	ERROR 	12 
	SEEK 	5 	WHOCON 	13 
	LOAD 	6 	SPATH 	14 
	RENAME 	7	XEQIOPB	68
        

A horizontal ribbon.

Last updated: 10 December 2015