Over the years personal computers have become more difficult to interface to specialized hardware devices. The simple connections such as RS232 serial ports, IEEE parallel ports and even analog joysticks are being removed from modern personal computer designs. Recently the USB, "universal serial buss" has become the best solution to connect specialized hardware to the personal computer.
As a hobbyist I find the USB buss limiting; the maximum cable length of USB is to short, every USB device manufacturer having there own software driver, the complex driver API when more then rudimentary access is required. I have and will continue to use USB to connect simple hardware projects to my personal computer but for many of my planned projects I wanted a better way to connect to a host computer.
This project got started after I helped a friend who was working on a networked controller for an industrial application. The core of the controller used a Zilog SBC, "Single Board Computer" based on the Zilog EZ80F91 CPU. The EZ80 is an 8 bit CPU that runs at 50MHz and has on-board EMAC, dual serial ports, SPI, I2C, RTC, IRDA as well as other built in peripherals. All CPU pins not assigned to on-board peripherals can be used as GPIO. The Zilog EZ80F91 CPU can address up to 16MB of memory and has 256K internal flash memory. The Zilog SBC adds 512K SRAM, IMB of flash memory, and IRDA transceiver to the Zilog EZ80F91 CPU's base features. Overall a feature rich SBC with low power requirements.
The goal of this project is to develop a network device based on the EZ80 SBC that could be used to control specilize hardware on behalf of a host computer using standard IP protocols over Ethernet. The final controller would; start-up, connect to the "main" computer over a standard Ethernet network, download an application and data, then act as a remote interface to some specialized hardware. At the same time the controller board needs an interactive mode allowing for the testing and exercising of any hardware connected to the controller.
Zilog supplies a good C / assembler compiler IDE for the EZ80 CPU. They also provide an excellent multi-tasking run time environment with full UDP/TCP support. As a hobbyist I am always working with new IC devices. The long compile, link, and download, test cycle is not the fastest way to go when learning to control new IC devices. What I really need is an interactive system monitor for the SBC. This would allow me to learn how to control a given IC without the constant compile, link, and download, test cycle.
The EZ80 CPU is binary compatible with the old Z80 CPU. Having completed a Windows Z80/CPM emulator software project I thought it should be possible to use the old CPM operating system on the new EZ80 hardware. The CPM operating system would allow the interactive aspect of the controller board without a lot of memory or complexity.
I started this project over a year ago. Since that time I have developed a CPM2.2 monitor that loads from the EZ80 built in flash. The CPM monitor has an extended BIOS that allows for UPD/IP over Ethernet. The monitor supports the 1MB external flash chip on the SBC as a read only disk and the extra 512K on the Zilog development board as a ram disk. Using the UDP protocol I have added support for the CPM monitor program to mount a disk image file stored on a personal computer as a valid CPM disk. To develop the semantics of the extended BIOS I developed test applications in Borland's Turbo Pascal 3.0a for CPM on the SBC. Once the pascal code worked I would recode it into EZ80 assembler code using the Zilog compiler IDE. At the start of the project the RAM disk was heavily used to develop the Ethernet IP stack. The test code on the RAM disk was saved by sending the text files to a host computer using the serial port on on the SBC. Once the UDP stack worked I wrote a TFTP client program to allow the ram disk to be quickly saved and restored from a host computer. The current CPM monitor can mount a remote disk image file as a CPM disk so the RAM disk is not used a lot at this point..
At this point it is time to make a carrier board to hold the SBC and provide power and connectivity to the SBC. Once the printed circuit board is completed the final version of the monitor software can be completed. The current system when connect to my PropTerm ANSI terminal makes a fine CPM system able to run most of the development tools from the days of the Z80 and CPM2.2. The system runs Z80 code on average 30 times faster then a 4MHz Z80 did.
There is a bit of cleanup to be done to the monitor once that is completed I would like to be able to have the monitor load an ADL memory mode program. I believe the Zilog C compiler could be configured to allow the generation of an ADL program that could load at a fixed address and either take over the SBC or use the functions of both CPM and my extended monitor.
I have posted the current MIC80 project source files to compile the project. At the present time the CPM monitor and support programs require a Zilog SBC mounted on a EZ80 development board. Any of the available EZ80 programing devices should work to transfer the compiled code to the EZ80 CPU on the SBC. I have also include a disk image in Intel 32 bit hex format that can be loaded into the SBC 1MB flash that contains the current CPM based support utilities.