Tiny BASIC! In discussion with another hobbyist I realized I could assemble Tiny BASIC and it would fit into the CPUville Z80 computer 2K ROM space, taking the place of the v.7 EPROM. I made a few modifications to the code to match the CPUville computer's port addresses and UART status bits, and it works fine:
This is Li-Chen Wang's original Tiny BASIC that was first published in Dr. Dobb's Journal of Computer Calisthenics and Orthodontia in May, 1976. Here is a link to a draft of the instruction manual I am preparing. If you would like the code, please email me. I can also sell you a pre-programmed EPROM with Tiny BASIC for $4.50.
Announcing version 2 of the Disk and Memory Expansion Kit! The kit now uses a programmed gate-array logic chip (GAL) to implement the memory configuration logic. This saves space, meaning a smaller circuit board, and fewer ICs to solder.
I had hoped this kit would be cheaper, but sadly the price of the memory ICs is going up, so it is still going to cost $36.00. Oh well...
I have heard from a customer that he has a Transcend flash module that does not work with the disk interface. The ones I had on hand worked fine. I think there are different electronics or manufacturers for some of these modules. The working modules have identification numbers with the format XXXXXXX XXXX XXXX XX XXXX. The non-working module has an identification number with the format XXXXXX XXXX XXXXXX XXXXX. I will try to get more information about this, but for now, it might be best to avoid buying a Transcend module. If you already have one, try it, and let me know if it works or not, that will help.
First the bad news, then the good news.
The bad news is I have been unable to get the Western Digital mechanical drives working on my IDE interface. I contacted the company, and they were gracious enough to share their OEM technical documents with me, but there wasn't anything there that helped me. I now suspect that there is a minor electrical difference between their drives and the others that work that makes them incompatible with my interface.
The good news is that I have tested an SD card to IDE adapter with my interface, and it works. The adapter I used is made by Soarland, model SLOA063. I found one on Amazon for $18.98.
I now have Disk and Memory Expansion kits for sale.
See the details page. The price is $36.00. I have tried using it with a number of different disk drives, including mechanical hard disks, solid-state IDE drives, and Compact Flash drives in an adapter. Most work fine, but I have trouble with Western Digital hard drives. I am trying to get information from the company to see if I can figure out why they don't work with this interface. I will post information here if and when I get it. There is a table of tested drives in the Disk and Memory Expansion instruction manual.
I have created a web page that explains how I got CP/M working on the computer. It has the details, and links to source files and manuals.
I have installed CP/M 2.2 on the system with the wire-wrap prototype disk and memory expansion board. Here is a screenshot of the CP/M directory listing:
With CP/M installed you have access to many hundreds of programs that will run on the computer. I found a chess playing program called Sargon. I installed it and it ran without problems. It has only text output, so I put up a graphical chess board next to it to track the moves. Here is a screenshot of me playing Sargon on my computer:
I have ordered prototype printed circuit boards for the disk and memory expansion. If all goes well, and the prototype works, I should have kits available in a few weeks. The price will probably $30, disk not included. You will be able to use any old IDE disk, but you will need to provide the 12V power if you use a mechanical disk. More soon.
I have finished a prototype disk drive interface and memory expansion board for the Z80 computer kit. The disk drive interface is a parallel ATA interface (also known as PATA, or IDE). This is the interface used for the hard disk in most PCs until the serial ATA interface was adopted. The memory expansion has two configurations. In configuration zero there is 2K of ROM from 0000h to 07FFh, and 62 K of RAM from 0800h to FFFFh. In configuration one, the memory is 64K of RAM only. A software-driven flip-flop selects the configuration. Here is a picture of the wire-wrap prototype, with a 1 Gb solid-state drive:
This expansion board will allow the Z80 computer to run the CP/M operating system. I am currently working on the CP/M BIOS and loader programs. I will update this page soon when I have more information.
The serial interface development is finished. The price will be $25.00. See the demo videos, or the serial interface kit details page for more information.
I am developing a serial interface board to use with the Z80 computer. This will allow you to use the serial port on a PC (or a dumb terminal like a DEC VT100 or Televideo 925) to communicate with the computer, using a keyboard and text display. I am in the process of refining the prototype and writing the software for the interface. The software includes a tiny monitor program that allows you to display blocks of the Z80 computer's memory on the display, and to load memory with bytes entered as hexadecimal characters, and jump to (run) programs you load. The software will also have some utility subroutines to make it easier for you to write programs. Here is a picture of the working prototype:
It will run at 2400 or 9600 baud. You need a straight-through serial cable to connect the interface to the serial port on the PC or to a dumb terminal. I have used it with a PC running Windows XP and the Hyperterminal program, and with Ubuntu Linux running minicom. I also used it with my Televideo 950. With a PC, you can dump a Z80 program to the screen as hexadecimal characters, and copy and paste this text into a file to save the program. Then, you can open this file in your PC's text editor, copy the text, and paste it back into the terminal program screen to load a program back into the Z80 computer. Not quite as good as the Z80 having its own disk, but close.
The serial interface kit will cost about $27.00. It should be ready in about a month.
There are still some switch noise issues. I have written a new ROM (version 6) with much longer debounce delays. I increased the delay time from approximately 1 msec to 16 msec. This seems to make the switches more reliable. This changes the entry addresses for the Memory Test, Peek and Poke routines. I have edited the kit instructions accordingly. Here are the new ROM files:ROM v. 6 assembly language file
I have become aware that the program loader program sometimes loads two bytes instead of one with each switch throw. The resulting programin RAM will not execute properly. This appears to be the result of excessive "switch bounce", or noise. This is a characteristic of all mechanical switches, and can result in a series of rapid open-close events that are detected by the very rapid polling of a computer system. The bounces are too fast to be seen by eye, but the computer detects them. One can compensate for switch bounce by creating a bounceless switch, using a flip-flop, or in software by a debounce delay loop. To save money, and make the project board as simple as possible, I chose the latter route. The debounce delay in the ROM software worked fine in the prototypes, and in a freshly built kits, but it seems as the kits age, the switches get bouncier (noisier) and the loop delay time is no longer adequate in some cases. I have increased the debounce delays in the program loader and poke programs in a new ROM version. If you can program your own ROM, you can download the files from this page (see below) and do it yourself. If you can't program your own ROM, and you want to change the software to the new version, send me your ROM and I will program it for you, and send it back to you (no charge of course). Just email me and let me know what you want to do.