I've been working on building up a system for the past year or so. I've gotten it to a point that I feel comfortable creating a forum post for it.
The boards in the system are:
- OSI 502 CPU board (GlitchWorks reproduction)
- GW-OSI-RAM1 memory board
- Custom 6551 mezzanine for the GW-OSI-RAM1
- OSI 560Z Processor lab (GlitchWorks reproduction)
- 4-slot backplane (GlitchWorks reproduction)
- GW-OSI-RAM1 memory board
- OSI 580 backplane
The first board that I acquired and populated was the GW-OSI-RAM1 used on the MOS side. Initially, I used it as a RAM/ROM expansion for my AIM-65. To add a more reliable serial port to the AIM-65, I expanded the I/O mezzanine connector and created a 6551 mezzanine board to plug into it. The MOS GW-OSI-RAM1 is populated with 64K RAM and 32K ROM. I have a custom version of WOZMon in ROM that includes an Intel hex loader.
The second board to be built up was the 502 CPU board. Since I had a RAM/ROM board already, I omitted the RAM and ROM portions of the 502. Additionally, I replaced the multivibrator R/C clock with an adjustable clock module and added a reset/brownout circuit utilizing a DS1233. Initially I tried running the system using the 6850 ACIA but I was unable to due to the conflict between the upper 4K memory block and the ACIA at $FC00. To remedy this I removed the 6850 ACIA and installed my 6551 mezzanine. I would like to use the 6850 for full OSI compatibility but I don't have an easy way to do this at the moment.
The 560Z is pretty standard. The only modifications made to it include an LED on the 6551's RUN line for debugging and jumpers on the address select lines that move it to $A000.
The SYS GW-OSI-RAM1 is populated with 32K words of RAM.
I transposed the 560Z driver package into CC65 assembly and modified it to work with my personal setup. I also made a few improvements and changes. Once I clean it up a bit and get my system running with a 6850 ACIA I'll post the source code on Github.
On the Z80 side, I added a character driver to I/O address 0. IN 0 pulls a character from the keyboard and OUT 0 writes a character to the terminal. The host 6502 system does the actual ACIA status register checking and returns control to the Z80 once it finishes. I ported Glitch's GWMon-80 to the system using this character driver. I'll include my module with the 560Z sources.
The I6100 IOT drivers were left mostly unmodified. I rewrote the READOP and HANREQ routines, as they were extremely difficult to follow and needlessly complex. Once everything was verified, I was able to run FOCAL. I would like to eventually add IOTs for memory bank switching and mass-storage.
Future plans for the system include:
- Move back to the 6850 ACIA for full OSI compatibility
- Expand SYS RAM to 128K
- General-purpose IO card with 4 additional ACIAs and several free 6820 PIAs (in the design process)
- Run OS65-D
- Upgrade to a 510 CPU board
- Drive a PDP-8 replica front-panel for the whole PDP-8 front-panel experience