With the help of my new oscilloscope, and my friend and colleague Paulo (his YouTube channel), I have figured out that the glitch (see August 6, below) is due to noise on the data bus. The noise upsets the 32K RAM ICs from some manufacturers. The noise can be reduced by putting 100 or 56 ohm resistors in series with the data bus lines, or by shortening the ribbon cables. The noise may be caused by reflections in the long un-terminated data bus lines. For now, short cables is the fix.
For those who are interested in an improved system that will run CP/M, I am developing a single-board simple CP/M-capable Z80 computer. The kit should be available by the end of the year. No cables, so less noise.
I have completed the design of a set of circuit boards for the 8-bit processor. Here is a demo video, which includes a new pi calculation that outputs in decimal floating point:
The updated pi calculation code is on the 8-bit code page.
These circuit boards form the basis for a kit. You might also notice a single-board CP/M-capable Z80 computer in the video -- more about these things soon.
Using my old system to do some testing of new boards I noticed odd behavior. CP/M was not loading consistently. When I dumped high memory to see what was being loaded I got a screen that looked like this:
The memory dump was not working normally. The addresses are wrong, the memory contents here are irrelevant. The addresses are coming from a variable in high memory, so it seems that variable is getting corrupted somehow. The dump should look like this:
Only a dump of high memory in the system with the memory expansion was affected. Replacing ICs and much other troubleshooting did not solve the issue. Poking around I found that touching the Write (active-high) signal pins with my finger or a logic probe would suppress the glitch. So there was probably some kind of noise on that signal line. Further poking, I found that grasping the lower ribbon cable, which has the Write signal wire, with my thumb and forefinger suppressed the glitch. Putting a metal object on the cable, like a coin, or wrapping the cable in aluminum foil also suppressed the glitch. And, shorter cables suppressed the glitch:
I do not know the root cause of this glitch. I will do further testing with an oscilloscope in the future to see if I can figure it out. If anyone reading this has an idea why this might be happening, please let me know.
I have not heard from any customers that anyone else has this problem, so maybe it is just my very old system showing its age. If you think you may have this glitch, do the dump of high memory and see. If you have it, please let me know. Try wrapping the lower ribbon cable between the computer and memory expansion with foil. In the future, I will supply shorter cables with the kits.
In honor of Pi Day (March 14) I decided to write code for a pi calculation using the 8-bit processor. I had to learn binary floating point, and chose the IEEE-754 single-precision standard to do the calculation. The calculation is a numeric integration using the perimeters of polygons of increasing sides contained within the unit circle. The perimeter approaches 2 pi as the number of sides increases. I had to create subroutines for adding, subtracting, multiplying and dividing floating point numbers, and for doing square roots. Here is a screenshot of the calculation:
The output is two columns of 32-bit floating point numbers in IEEE-754 format. The left column is the number of sides in the polygon, and the number in the right column is the value of pi derived from the perimeter. The value of pi calculated is 0x40490FD7, which is 3.1415918 decimal. It reached this value when the polygon had 16384 sides. This value of pi is within the limits of the number of significant figures carried in the IEEE-754 format and the rounding errors of the subroutines in the algorithm. The code is a little less than 6 kilobytes long, and the calculation took about 2 minutes. I have placed the code files on the 8-bit code page.
Customer David Byres (his blog about gadgets is here) has made some 3D printed stands for the CPUville computer with the bus display attached:
They allow one to run the computer while holding it upright:
If you are interested in obtaining these stands, please let me know, and I will see if David will print some for you.
One of the criticisms of the CPUville Z80 computer kit is that the circuit board lacks mounting holes. But customer Ted McFadden has designed a 3D printed case (with mounting holes at the corners) for the computer board, and has posted the design on a Thingiverse page. He has offered the design for use under a Creative Commons license, available without charge if you print your own case. If you don't have a 3D printer, but want a case, contact me, and I will see if Ted can print one for you.
Due to an increase in the cost of the circuit board, I am forced to increase the price of the computer kit to $45.00, effective January 1, 2018. I could probably find a cheaper supplier abroad, but I would like to stick with an American manufacturer, Advanced Circuits in Aurora, Colorado. I hope you understand, and will continue to support CPUville (and Advanced Circuits) with your purchases. Thanks.
Many customers have contacted me wondering if there was a way to keep the bus display connected after adding the serial interface or disk and memory expansion boards to the basic computer. I had thought that no one would want to do this, since the serial interface and disk expansion boards need to run on the fast clock, so the bus display would just be a blur, but now I realize that especially with the serial interface, one might want to simply switch between the slow and fast clocks from time to time to demonstrate the bus activity on the slow clock without having to disconnect and reconnect the serial interface. So, I am offering for sale the custom cables shown in the photo above. These allow the bus display to remain connected while the serial interface is in use. They also work with the disk and memory board attached. If you would like a set of these cables, contact me. I will sell 11-inch cables for $6.50. I can make longer cables if you like, just tell me how long and I will quote you a price.
For those of you who have CP/M 2.2 running on the CPUville Z80 kit computer, you have no doubt noticed that adding files to the CP/M system from the PC is a bit awkward. One has to use the CP/M program MONITOR.COM to do a binary transfer of the file into the computer memory, then the CP/M built-in command SAVE to store the file onto the CP/M disk. I had sought to use any of several XMODEM-type CP/M programs to do file transfers, but they all required a system with two serial ports, one for the terminal, and one for a modem to do the file transfer.
However, customer Stephen Williams has modified two XMODEM CP/M utilities to perform file transfers from the PC to the CPUville Z80 kit computer over the single serial port. These utilities, PCGET and PCPUT were created by Mike Douglas for his Altair 8800 Clone computer. He derived them from the original XMODEM-based file transfer utilities created by Ward Christensen in 1977 for his early bulletin board systems. With the permission of both Mike Douglas and Stephen Williams I have placed the code for these utilities on the CPUville CP/M code page for download.
PCGET will transfer a file from the PC over the serial interface onto the CP/M disk, and PCPUT will transfer a file from the CP/M disk to the PC. To do this, one must be using a terminal emulation program with the ability to do XMODEM-protocol file transfers. In the Linux environment, minicom will do this. In the Mac environment, the serial program will work. In Windows however, the Realterm program recommended for use with the CPUville Z80 kit computer does not do XMODEM transfers. Instead, use the ExtraPuTTY program.
One last thing: to get PCGET.COM onto the CPUville computer you will have to do the MONITOR.COM binary transfer and CP/M SAVE procedure, as explained in the disk and memory expansion kit instructions. After that, you can use PCGET to do file transfers.
You probably noticed that I have redone the entire website. I made these improvements:
Let me know if you like it. Feel free to suggest improvements. If you find errors, or broken links, please let me know.
I have finished the 8-bit processor prototype. It is working well. Here is a demo video:
Note that the processor is connected by an adapter to the CPUville Z80 computer system board, plugged into the Z80 socket. I plan to put details of the design and construction of this processor on the web site in the future.
It has come to my attention that some 6116 2K RAM ICs that have been shipped with the CPUville Z80 computer kits may be defective. You can test yours by running the memory test program, located at 0x0074 in the v.7 EPROM. If you believe you have a defective 6116 RAM IC please let me know, and I will send you a replacement.
I am developing an 8-bit computer processor that I may offer as a kit.This processor is similar to the original CPUville TTL processor, with some important differences. First, it has an 8-bit data bus, and a 16-bit address bus (that is, a 64K address space), matching the Z80's data and address bus. This means it can use the same system as the CPUville Z80 computer, by plugging into the Z80 slot on the computer kit board (using a cable of course). Second, I fix some of problems with the original processor, in main, that the ALU size did not match the instruction size, preventing easy uploading of programs. Instructions on the 8-bit processor are of varying length, instead of the single size of the original processor. Also, I have strengthened some of the hardware issues, for instance, latching the controls that need to be held steady when the state changes for writing memory or ports. A kit for this processor may cost $80 to $100. Anyone interested?
Older News and Issues items moved here.