1981: right at the beginning of my specialisation as electronics engineer, 8-bit microprocessors were becoming affordable: we had the Intel 8008, Zilog 80 and Motorola 6809. We were two years ahead of MS-DOS and the invention of the "PC" by IBM. You could purchase small computers (using your TV set as display screen) like the Commodore and Amiga, else a do-it-yourself kit (the board, chips, and a soldering iron). I did the later although not directly: I purchased a board already assembled by an assistant professor of the university for 250$ - half its price. It was operating for 1 up to maximum 10 minutes and then was always crashing ....that was exactly what I needed: a problem to solve!

I spent my summer holidays at learning what is a CPU, discovered that RAM memory (at that time) had to be refreshed dynamically in between instruction fetches and many more such things, and then started to debug the "thing" with an...oscilloscope. I discovered the source of the problem: when the memory places data bit values on the bus there is an increased power consumption especially with 0 bit values (due to the open-collector logic). That was causing a local power draw, itself delaying the stabilisation of data signals, then causing false reads of the value by the CPU, randomly affecting data or instruction codes.

The solution was then simple: I introduced a 40 nanosecond delay on 4 out of the 8 bits by inserting a small resistor and capacitor on the lines, thus averaging the power consumption on a longer period and avoiding the oscillating effects.
How did I discover it? I made a memory test and got false reads on lower byte values, but never for the same address (so it was not a failing memory chip although I switched the chips to be sure), then I looked at what was happening on the bus by synchronizing the oscilloscope with simple program loops...

The picture shows my first computer after a few transformations: The original system comprised three boards. I mounted them vertically in a home-made wooden frame: one board is for the Zilog80 4 MHz CPU, EPROM, video memory and logic, a second as extension bus driver, and the third holding 8Kbytes of RAM).

I added my own designs: a memory expansion board allowing me to reach the incredible(!) value of 24 Kbytes, and an EPROM programmer, then allowing me to redesign and extend the Operating System (all on EPROM) from its original 2 Kbytes up to 4 Kbytes. The picture also shows the cheap black&white TV set on the top serving as display screen, the audio cassette recorder that was the only affordable long term storage media at the time, and the keyboard at the front.

I was able to play simple pacman-style and collision-avoidance games, and to develop software with a macro-assembler (see the stack of tapes on the recorder).


My first computer (1981) built around a NASCOM board.


Details of the main board. The CPU is at the bottom-centre of the picture.

Cabling at the rear of the home-made memory expansion board.



My second computer, a home-automaton (1984)



A view inside the box.

Three slots are available, two are used: one with a CPU board, one for memory and I/O logic. It features a Zilog 80 4Mhz CPU, 4K static RAM (2 chips), 4K EPROM (2 chips), and dedicated I/O in discrete logic. There was also a temperature sensor and AD converter.

Soon I used my first computer to build and program a second one. I made one able to control heating in my apartment, and also used it to switch on the lights randomly while out to simulate presence and thus prevent theft.
The system boots directly into the application in EPROM.

Looks simpler and cleaner isn't it? Indeed, in between these two computers static memory became available, allowing to get rid of the very heavy dynamic memory refresh logic. Moreover, the dedicated front panel interface saved me from building video control circuitry.



An extract of the circuit diagrams: the CPU board

...hand-made drawings...hey! even ink-jet printers were not existing yet.





[www.artofe.biz] © 2005 bernard Hauzeur • All rights reserved.