• Please review our updated Terms and Rules here

Rebirth of an S100 System

mnc1959

Member
Joined
Aug 21, 2013
Messages
35
Location
Adelaide, South Australia
Martin,

I can easily generate a CP/M 2.2 disk for you, ready to run on the Micropolis drives. The only thing I'll need to configure is a simple patch for whatever serial port board you end up using. You'll need a monitor of some sort in order to jump to the boot ROM on the Micropolis FDC.

If you buy a Vector-Graphic ZCB (CPU), it has a built-in serial port and a ROM monitor for which I have a utility that can write Micropolis disk images transferred via the serial port from a PC - you could write the boot disk yourself!

Frankly, I could probably modify the utility to work with whatever CPU and serial port configuration you end up with if you'd rather write the boot disk yourself. I could create the disk image file for your machine and you could then use the utility to write the disk image to a floppy.

Mike

Hi Mike,

This is exactly what I was thinking. I would like to get a bootable image running and once I have that I can experiment and reconfigure the BIOS to add tweak the original hardware.

I'm pretty sure the Cromemco ZPU board can be configured to jump to a boot rom on the Micropolis FDC.

I've been looking for S100 serial IO boards, and there is almost nothing available (well at least on eBay). I'm not sure of any other sources?

So you can write Micropolis Hard Sectored floppy disks?

I wouldn't mind playing with MDOS either, but I'll leave that for another project

Whilst I have your attention, is there a preferred Z80 assembler and disassembler that runs under Windows?

I can copy the monitor rom off my RASE80 board and disassemble it , that should give me more of an idea of the hardware, I think the monitor might be a modified version of the Zapple monitor rom. I doubt if it was written from scratch.

I cant find a VG ZCB board anywhere ;-(, but it sounds like a great option.

Its a bit of a chicken and egg situation, I need something running, once I have that I can tweak settings and hardware to my hearts content.

Thanks and Cheers, Martin...
 
Mike,

I have confirmed and all 'missing' components are in transit.

This is what I have in the system so far:

Cromemco ZPU (Jumpered to jump to F000h on power up)
Thinker Toys 32K Static Ram board, 0000h-7FFFh
Thinker Toys 16K Static Ram board, 8000h-BFFFh
Wamenco IOB-1 (serial [8251A and 8255A) - In transit from USA
Micropolis FDC, Boot ROM jumpered to F000h

Unfortunately I do not have any means to have a Monitor ROM without assembling a new one.

However I have used the RASE80 board to verify RAM as it has a variation of the Zapple Monitor ROM.

Ideally I would like a bootable CP/M disk with some sort of file transfer utility. The basic MDOS disk would also be nice for, as you say a nice little mini project.

Whilst I have SimH running, I am not sure of the process for swapping from a virtual CP/M environment to a physical environment, would you have time to explain this process a little please?

Thanks and Cheers, Martin...
 
In order to have the fun of "cold starting" your machine from scratch, including get MDOS running from its original disk, you'll have to have a monitor ROM or a front panel. Do you have a board we can install a 2708 or 2716 in? We can probably run the Vector Graphic monitor on your ZPU with the 8251 on the Wameco IOB-1.

Mike
 
Hi Mike,

Yes no problems, The TANNER Static RAM board has locations for 32 6116/2716 devices. The top 8 positions in the address space, ie

C000-C7FF
C800-CFFF
D000-D7FF
D800-DFFF
E000-E7FF
E800-EFFF
F000-F7FF
F7FF-FFFF

These can all be configured for 2716 Eproms.

The RASE80 board has a variant of the Zapple monitor ROM. It also has spots for additional 2716 EPROMS.
The RASE80 monitor boot up at E000.

The RASE80 also has a WD2123 Dual UART (8251A code compatible).

I am using the first port to communicate at 9600 Baud.

I could connect a PC to the second port for the X-Modem transfer.

I could write the custom PC2FLOP code to EPROM and install at a free EPROM location, ie F000h

As the System has 48K of RAM, that should be more than enough to read the floppy image and write it to disk.

To test the system I would need to swap the RASE80 board with the ZPU and Wameco IOB-1 board, the ZPU would be configured to jump to F000 on the Micropolis FDC board and it should run the boot ROM code and hopefully start the Floppy boot process.

If I had more documentation on the RASE80 (ie I have none) I could use this as the main CPU card.
I think my approach to building the target image for the ZPU. FDC and IOB-1 cards but using the RASE80 monitor board to write the image has merit.

What do you think?

I just have to pickup my EPROM programmer and UV light from storage tomorrow and that side of things will be ready to go.

I need to verify the IO ports used by the WD2123, I'm pretty sure i know the addresses, but I will connect my PC to PORT 2 and try a read/write/echo test from the PC to confirm.

I want to learn and do as much as possible from this exercise and appreciate your help/expertise.

Cheers, Martin...
 
Martin,

If we install the Vector Graphic monitor (it runs at E000), it will have all the commands you'll need to bootstrap a cold system, and CP/M, MDOS, and the PC2Flop utility won't have to be modified to run since they expect the VG monitor to be present for console I/O.

The VG monitor requires a Z80 CPU. Is the RASE80 an 8080 or Z80 CPU? The one reason I'd consider using the RASE80 CPU is for the dual 8251 compatibility so we have two serial ports instead of just the one on the Wameco IOB-1.

For best compatibility, I'd use the Tanner board with RAM enabled 0-DFFF, a 2716 at E000-E7FF, and then "off" for E800-FFFF. Strap the Micropolis FDC at F800, and make sure the 4mhz jumper is installed (see manual, it's towards the top left corner of the board).

Let me know whether the RASE80 is a Z80, and if so, does it run at 2 or 4mhz? Also try to determine the I/O address of the two 8251 ports. Do you have documentation for the Wameco IOB-1? If so, see if the 8251 can be strapped at I/O address 2/3.

Mike
 
Martin,

If we install the Vector Graphic monitor (it runs at E000), it will have all the commands you'll need to bootstrap a cold system, and CP/M, MDOS, and the PC2Flop utility won't have to be modified to run since they expect the VG monitor to be present for console I/O.

Sounds too good to be true, shouldn't be an issue, is there a source code listing of the ROM anywhere.

The VG monitor requires a Z80 CPU. Is the RASE80 an 8080 or Z80 CPU? The one reason I'd consider using the RASE80 CPU is for the dual 8251 compatibility so we have two serial ports instead of just the one on the Wameco IOB-1.

Definately a Z80A, dual serial ports, software programmable baud rates.

For best compatibility, I'd use the Tanner board with RAM enabled 0-DFFF, a 2716 at E000-E7FF, and then "off" for E800-FFFF. Strap the Micropolis FDC at F800, and make sure the 4mhz jumper is installed (see manual, it's towards the top left corner of the board).

All sounds nice and simple. We would need to tweak the serial IO routines for address and UART type, hence my request for the ROM source code.

Let me know whether the RASE80 is a Z80, and if so, does it run at 2 or 4mhz? Also try to determine the I/O address of the two 8251 ports. Do you have documentation for the Wameco IOB-1? If so, see if the 8251 can be strapped at I/O address 2/3. [/QUOTE

Mike

So in summary, YES Z80, 4Mhz, working on the disassembled ROM listing to determine the serial IO addresses, YES I have full documentation for the IOB-1 (I've sent a copy to John on S100.com for inclusion with existing documentation). Their description of the switch setting seems a little cryptic:

View attachment 25063
View attachment 25064

They seem to use the upper address bits to further decode the 256 IO locations, I have never seen this before, but assuming i keep A11-A15 as all ZERO's (Switch configurable via a 6 bit comparator), then the IO address of the 8251A is determined by switch 5 positions 6, 7 and 8.

This doesn't make sense, I am thinking the documentation is wrong. A0-A2 decode the 8 IO locations used by the 8255A and the 8251A, A3-A7 set the address of the block of 8 IO ports, ie 1 of 32 locations (2^8 = 256, 256/8 = 32). I think A11-A15 should read A3-A7?

suggesting the Serial port can be at IO locations, 04h/05h, 0Ah/0Bh, 14h/15h, 1Ah/1Bh, 24h/25h, 2Ah/2Bh etc through F4h/F5h, FAh/F5h

This is assuming the Z80 accesses IO ports the same as the Intel 8080/85 does.

Cheers, Martin...
 
Hi Mike,

On further investigation of the Micropolis FDC the previous owner has fitted a DIP switch just below the 5V regulator [B1] and there are 8 jumpers to various parts of the board. I can only assume (at this point in time) that this has been done to make the address selection easier. As you would expect there is no documentation, so I have to go looking for the ROM code to work out where it has been mapped and then try and decode the switches. Interestingly enough some of the jumpers are still present in the address selection area [D4] (near the S100 connector).

Would it be asking too much for a hex dump of the roms or at least the first dozen or so bytes so I can be sure I have the correct address when i think I have found it.

I've been checking out the floppy drives, there is no data cable, but that's trivial to manufacture,.

I assume the cable is connected by removing the case to the drive and plugging it in. The cable then exits from the bottom of the drive
towards the rear?

These are the drives in question: https://www.flickr.com/photos/jeremybh1/13139828124/in/album-72157642321824905/

This is the modified Micropolis board: http://imgur.com/a/xuaxM

They have also modified the 34 way edge connector to the drives, looks like pin 16 (MTR_ON_B) ?

Any idea what this MOD might do?

Cheers, Martin...
 
Interesting mod. Yes, it looks like the DIP switches are wired to implement board address selection. The remaining resistors in the jumper area you mention are pull up resistors - they are not jumpers. From the pictures, it looks like it is wired such that S1-S4 correspond to W1-W4. Therefore, to strap the board at F800, you'll want S1-S3 off and S4 on.

S5 is a different story. Depending on how it's actually wired, it probably moves the board addressing range from C000-FC00 down to 8000-BC00. Look closely and tell me which pin the wire runs to, whether or not it looks like the trace between pin 2 and pin 4 has been cut, and where the resistor he installed connects on each end. Most likely, you'll want S5 off in order to address the board at F800.

The board has a mod to connect pin 9 of the DM8131 (board select output) to pin 21 on the S100 connector. This is an unused pin on the bus, so he probably ran it to a drive activity light he rigged up on his front panel or something.

The red wires are part of the Rev. 0 to Rev. 1 mod from Micropolis. This mod is in the FDC manual you'll find online. Without the mod, the drive motor runs all the time like most 8" drives did. With the mod, the motor shuts off after several seconds of inactivity. However, the mod doesn't look quite right. Use a meter and see if the big feed through on the top side of the board (opposite the pin 16 mod, towards the middle of card edge connector) is isolated from all the card fingers on the top (they're all common ground), or if not, is it isolated from pin 16 on the back. I can't see anything that connects all the top fingers to ground on the board. See if that is the case or not.

Finally, to make the motor mod work with CP/M, steps 4 and 5 in the Rev 0 to Rev 1 mod were required to permanently assert "ready" on the FDC. These steps of the mod weren't done. MDOS didn't require the "ready" part of the mod, but CP/M did.

You'll want to install jumper W9 to let software know your CPU is running at 4mhz. Look near the top left corner of the board, just to the right of the 5 pin header (missing one pin). W9 runs parallel to the resistors you see, between the top two resistors.

Mike
 
Hi Mike,

My mistake, it is missing.

I found the ROM it was at BC00h, switch 5 seemed to make no difference.
I will remove the mods around switch 5, i think there is a cut in the tracks around the DM8131.

Yes the trace between 2 and 4 was cut.

I replaced this (after removing the resistor and link to switch 5).
The added the 4Mhz jumper.

I can't find the ROM at all now. I have verified that SW4 works with a multimeter.

Ive also tried changing the switches to pick a different address.
I'm thinking the address is also being decoded by the RASE80 board, I'll try other addresses tonight in the C000 range (just to prove the decoding on the Micropolis FDC is working.

I noticed there is a short between pins 7 and 8 on the DM8131, Pin 7 is the Strobe, its not shown in the circuit diagram, I'm not sure if its meant to be there or not.

2 steps forward, 1 step backwards.

Stay tuned.

Cheers, Martin..
 
Hi Mike,

I moved the start address of the FDC to C800h (as a test) and I can see the ROM, so that strongly suggests the RASE80 is also decoding the F800h address range (the board has NO jumpers what so ever), there are 5 x 24 pin sockets on the RHS, I believe the first 4 are decoded at E000h, E800h, F000h and F800h, hence the clash, there is nothing in sockets 2, 3 and 4, and a 6116 RAM chip in socket 5 (I'm not sure where the RAM is being decoded in the address space). However I believe this will work using the ZPU board and the VG Monitor ROM at E000h on the 64K Static Ram board.

I'm trying to decode the addresses of the WD2123 DUART to work out where the Com Ports live. I think I have the addresses, 72h/73h and 78h/79h.

I will write a little bit of code to echo characters to the ports to ensure I have the correct addresses, my disassembly of the RASE80 monitor is very slow going.

Despite the UARTS of the WD2123 being compatible with the 8251A, I cannot find the initialization codes. The WD2123 has an onboard Baud rate generator, I hope to locate the setup of that to identify the ports in use.
Hopefully this weekend.

Cheers, Martin...
 
Last edited:
Assembling VG version 4 monitor

Assembling VG version 4 monitor

Hi Mike,

Progressing slowly, but progressing never the less.
I'm pretty sure I have worked out the serial port assignments, at least for the console port.

I want to re-assemble the VG monitor with my code changes.
I've tried a few Windows based Z80 assemblers with the original source code, but am getting hundreds of error, I suspect mainly from syntactical errors.

I think you suggested using the microsoft macro assembler in a SimH environment?

I have SimH running with the Altair Z80 configuration, It also has M80 and the R and W utilities.

Am I on the right track using the R utility to read the assembler code into the SimH environment and then assembling it, then exporting the successfully assembled code back to the windows environment using the W utility.

I can then use my eprom programmer to write the eprom and test.

My issue is i cant work out the assembler (M80) command line syntax.

Lets say I have monitor.mac i know i can run M80 and then type something like:

*=monitor/L

is there a way to add this to the M80 command line?

btw if I'm on the wrong track please feel free to enlighten me :)

Thanks and Cheers, Martin..
 
Martin,

Yes, Simh is a good way to go. And yes, R.COM and W.COM are used to read and write files between the CP/M file system and the PC file system.

The first few comments lines in the mon40c.mac file I sent you have the M80 and L80 command lines you'll need to assemble the program and generate hex output. Here they are for your reference:

; M80 MON40C,MON40C=MON40C
; L80 /P:E000,/D:FFDE,MON40C,MON40C/N/X/E
;
; Answer the L80 "Origin above loader..." error
; message with "Y" when prompted (3 times).
;
; Creates mon40c.hex. Edit the hex file and
; delete the line for data at FFDE.

Mike
 
Hi Mike,

I can't believe I missed that. I was only looking below the Opening banner.
;********* VECTOR MZ MONITOR - VERSION 4.0c ********
;* R. S. HARP 7/16/79 *
;* SYSTEM MZ VERSION *
;* ASSEMBLES AT C OR E *
;* ONLY FOR SERIAL CONSOLE *
;***************************************************

I've been adding all my code and comments below that, feeling suitably embarrassed :)

About to try my first transfer/assemble.

Cheers, Martin..
 
Back
Top