Introduction: Build Your Own Z80 Microcomputer
First Efex computer designed in 1998 by myself and dedicated to my son Efe, initial version was 4Mhz, 4 kb memory and simple out of standard serial comunication protocols.
This winter I decided to re-design and improve this Project and let other hobbiests can build their own z-80 computers.
Current version is V2 and added following fetures;
-Standard 2400 baud software UART
-Moduler monitor software design
-RS-232 port
-Intel hex file download over serial port
-8K ROM, 8K RAM
-Cassette interface (under construction)
-LCD interface (under construction)
-Minimal chip count version (under construction) this 3 features will be added shortly and will be publish here
Step 1: Circuit
Circuit composed of clock circuit (74LS04), Adress decoder (74LS139),CPU, EPROM, RAM, two PIO’s (82c55), Rs-232 level converter (Max 232), 4x4 keypad encoder (74c922).
As you can see there is no critical and hard to find parts (may be 74c922 but I promise in newer versions it wont be necessary).
Main idea was simplicity so that I connected 7 segment displays directly to 82c55 outs. Dont worry there is enough sink current to drive leds. In new produced board I used common anode type displays but you can find common anode version rom program in software page below.
By software UART, maximum baudrate can achieve is 2400 BAUD.
For cassette interface recommended baudrate is 110.
I realised circuit by wire wrapping. (efex.dsn file is for proteus circuit design suite.)
Attachments
Step 2: Monitor Program
Here is Monitor program in intel hex format.
In test circuit I used AT29c010A instead of 27c64 EPROM.
You may use any kind of ROM (even NVRAMS)
Memory organisation is as follows;
0000H-1FFFH: ROM
2000H-3FFFH:RAM (Memory organisation is important for stack and system variables)
3FE0H: STACK START ADRESS
3F00H-3F45H: SYSTEM VARIABLES
Communication format is; 2400-8-N-1
INTEL HEX download routine: Display adress jumps automaticaly to downloaded program's start adress
NOTE: MONITOR PROGRAM IN THIS INSTRUCTABLE CHANGED. Please download new v3 hex file;
Whats new; Intel hex save added, User definable RUN adress added bug free version
Attachments
Step 3:
Operation;
Computer boots with a hot start. No memory change. This mean if you use battery backuped RAM, you may save your programs.
Display Shows version name shortly then 2100H and the data contained by prompted adress.
when you typed hex keypad, last two displays shows the data that you pressed.
if you press enter, computer writes the data into promt adress, shows shortly to verify then adress increases and shows its content again.
To run program, you wrote or download you must press 'Shift' key first and RUN key (on 3) simultaneously.
than follow messages on display. If you press reset button, no data loose. just starts from 0000h
RUN: SHIFT + 3 (Asks adress and Runs user programs)
LOAD: SHIFT + 2 (Downloads intelhex programs over serial port by terminal software)
SAVE : SHIFT +1 (Saves programs as intel hex file by serial port)
To change display adress: Press ADDRIN buton continously during typing in hex keypad
Whats Next: CSAVE and CLOAD (cassette saving), FILL and COPY commands, DUMP command and DISASSEMBLY coming soon.. :)
Step 4:
If you realise this Project, please inform me with pictures.
Prize will be source code of this version and some hiddedn features of ROM program.
Thank you for your interest
Dr.Mustafa Kemal PEKER
Aydin, Turkey
19 Comments
6 years ago
for latest version, please check this instructable;
https://www.instructables.com/id/Z80-Monitor-Type-Operating-System-and-SBC/
8 years ago on Introduction
Interesting. Why not use a hardware UART? Are parts hard to come by there?
I would think a cassette interface for a recent design would be something of a historical curiosity. Any particular rationale for that choice as opposed to simply loading over the serial port or some kind of removable storage (a lot of people seem to like sd cards)?
Reply 6 years ago
Hi Istarian,
At last my monitor type OS (with inline assembler and disassembler )is ready
Please setup and try this v1.0b
you can find all necessary information in my Efex pages;
https://mkpeker.wixsite.com/efex
please send me your comments than I can improve software
Thank you
Please note that new os is not for efexV3 hardware, you must change setup of circuit with new memory map
Reply 6 years ago
This is alternative server:
https://mkpeker.wixsite.com/efex
Reply 8 years ago
Thanx for your comment. I will add hardware uart in next version.
7 years ago
Really creative ;)
8 years ago on Introduction
Awesome build! I am trying to build one as advanced as you one day! I am currently just building one with real I/O and I am trying to program a basic monitor after I get that. Awesome build man!
8 years ago on Introduction
Fantastic trip down memory lane for me. I built a TEC-1b in '87 which is Z-80 based and it was the best fun. It still works too. http://en.wikipedia.org/wiki/TEC-1
Thank you
8 years ago
My dear followers. Im writing new tty rom for this microcomputer and trying to add inline one pass assembler to this project any help appreciated. Thank you
8 years ago on Introduction
Nice!
As a kid I used to go to my neighbor to play on ZX Spectrum.
His machine had some cool addons, like extra 64K of RAM, Beta Disk and external 5.25" floppy drive. That's how I got involved with programming: started with GWBASIC and TURTLE
8 years ago on Introduction
GENIUS!!!!.....
8 years ago on Introduction
Hocam gerçekten tebrik ederim, başarılarının devamını dilerim.
Reply 8 years ago on Introduction
Teşekkürler.
8 years ago
Very cool project. I'm studying the Z80 cpu at school. I think that I'll try to realise this awesome project. Thank you for sharing it.
Reply 8 years ago on Introduction
Thank you very much.
If you experience issues during realising this project, please dont hesitate to contact me. All queries will be answered.
8 years ago
very nice
8 years ago on Introduction
Pretty cool. I made a Z-80 computer in the 90s myself. It was hard back then being as I had no other computer to use while I was making it. Ever try to hand program an EPROM? I have. It didn't work for me. I did make an EEPROM work though. One pass is a lot easier.
8 years ago on Introduction
Great project. Thanks for sharing! I hope we see more from you on Instructables in the future!
Reply 8 years ago on Introduction
Thank you Amber, I will... :)