Close
0%
0%

OMEN Alpha

As-simple-as-possible computer with the 8085 CPU

Similar projects worth following
As-simple-as-possible computer with the 8085 CPU

I write a book about old computers. Oh, sorry: I mean "vintage computers" from 80's. My primary goal is to show how one can build a 8bit computer from scratch. It means: how to set up a CPU, how to connect memories, how to connect peripheral chips, and why to connect...

This computer is a "demo construction": A computer, based on 8085 CPU, with 32 kB of (EEP)ROM and 32 kB of RAM, serial connection and parallel ports. All should be as simple as possible. And here is a result.

Wait a moment - why OMEN?

It is simple. OMEN is an abbreviation (of course) of Czech expression "Osmibitový Mikropočítač pro Elektronické Nadšence", which means "an 8bit Microcomputer for Electro Enthusiasts".

Of course - when I have connected the speaker and played a tune, the first tune I have implemented was... right, "The Omen" by Prodigy!

Monitor

Monitor has four commands:

D is for memory dump

M is for memory change

G is for Go

: is for load a HEX file

EEPROM contains TINY BASIC at address 1000h, so enter G1000 to start BASIC.

Programming

As easy, just write a program in assembly language, compile it to the HEX and copy/paste to serial monitor. Then use G command (as GO) to run.

See this video:

OMEN Alpha, issue 2 

The second version of PCB has some new features: 

  • System connector (24 pins) with data bus, A0-A2, /RD and /WR, seven /CS (decoded), system clock and an interrupt 
  • Selectable IRQ (RST7.5) for external interrupt request 
  • Switchable /WE for EEPROM to enable in-place programming 

Parts placing on PCB 

Here is parts placing image: 

Jumpers etc. 

  • JP1 is a serial port. Pins are (from bottom to up): GND, TxD, RxD (next to "JP1" label) 
  • JP2, JP3, JP4: Parallel ports from 8255. A square marks pin 1, see below to schematics. JP2 is port PA, JP3 is for PB, JP4 is for PC 
  • JP5 is a EEPROM write enable. Connect pins 1-2 to disable writing, connect 2-3 to enable (pin 1 is the leftmost, pin 3 is next to the label "JP5") 
  • JP7 is RST7.5 enabler. Close to disable interrupt, open to enable.  

System connector (at the upper edge, square marks pin 1) 

  1. /WR 
  2. D0 
  3. D1
  4. D2 
  5. D3 
  6. D4 
  7. D5 
  8. D6 
  9. D7 
  10. A0 
  11. A1 
  12. A2 
  13. /RD 
  14. IO1 
  15. IO2 
  16. IO3 
  17. IO4 
  18. IO5 
  19. IO6 
  20. IO7 
  21. Vcc 
  22. GND 
  23. RST7.5 
  24. CLK 

Parallel ports: 

Square marks the "Vcc" pin.

JP2:

GNDPA7PA6PA5PA4
VccPA0PA1PA2PA3

JP3:

GNDPB7PB6PB5PB4
VccPB0PB1PB2PB3

JP4:

GNDPC7PC6PC5PC4
VccPC0PC1PC2PC3

Further plans

I plan more OMENs, named Bravo, Charlie, Delta, Echo... Bravo is simillar SBC, but with 65C02 CPU. And other ones? Stay tuned!

alpha85-places.png

Issue 2 component placing

Portable Network Graphics (PNG) - 52.16 kB - 06/17/2018 at 15:58

Preview
Download

alpha85-r23-full.png

Issue 2 full schematics

Portable Network Graphics (PNG) - 237.90 kB - 06/17/2018 at 15:58

Preview
Download

alpha85-full-10.png

Full schematics

Portable Network Graphics (PNG) - 111.71 kB - 05/07/2018 at 15:49

Preview
Download

Portable Network Graphics (PNG) - 178.73 kB - 05/07/2018 at 15:51

Preview
Download

alpha85-acia.png

Serial port

Portable Network Graphics (PNG) - 52.50 kB - 05/07/2018 at 15:50

Preview
Download

View all 7 files

  • 1 × M5L8085AP Microprocessors, Microcontrollers, DSPs / Microprocessors (MPUs)
  • 1 × 74HC245 Electronic Components / Misc. Electronic Components
  • 1 × 74HC00 Electronic Components / Misc. Electronic Components
  • 1 × 74HC573 Electronic Components / Misc. Electronic Components
  • 1 × 62256

View all 9 components

  • The first Alpha issue 2 assembled!

    Martin Maly4 days ago 0 comments

    The second version of PCB has some new features:

    • System connector (24 pins) with data bus, A0-A2, /RD and /WR, seven /CS (decoded), system clock and an interrupt
    • Selectable IRQ (RST7.5) for external interrupt request
    • Switchable /WE for EEPROM to enable in-place programming...

    Here are some photos:

  • 7segment display module and the Alpha

    Martin Maly06/02/2018 at 18:16 2 comments

    Just take the MAX7218 module and connect it to port C of 8255.  Of course, I could do it more "retro way", and maybe one day I will. But for now it's simple and working.

    Step 2: I try to use TM1638 module to control the Alpha in the SBC way. This module has 16 buttons only, so there is no extra buttons for "action keys". But Heathkit ET-3400 has 16 keys too...

  • A new PCB is on its way

    Martin Maly05/30/2018 at 16:29 1 comment

    I have reworked the Alpha PCB - some errors are fixed, the system bus connector is added. The batch of 10 pieces should arrive next week...

  • New monitor for Alpha

    Martin Maly05/26/2018 at 09:55 0 comments

    Today I have added the MON85 monitor by Dave Dunfield. Not the original one, but the improved version by Roman Borik.

    You can find all of the source codes and ready made images on GitHub.

    MON85 improvements:

    • Support for undocumented 8085 instructions DSUB B, ARHL, RDEL, LDHI d8, LDSI d8, LHLX D, SHLX D, JNK a16, JK a16, RSTV
    • Command R displays all flags of F register (SZKA3PVC). If flag is not set dash '-' is displayed.
    • Added restart vector RST 8 (0040h) for possibility to handle RSTV call.
    • Changed TRACE mode. After entering TRACE mode, instruction on actual PC and content of registers (if it is switched on) are displayed. Entering a space ' ' executes this instruction, and returns to the 'T>' prompt with the next instruction.
    • Instructions LXI, DAD, INX, DCX displays argument 'SP' rather than 'S'.
    • Commands that requires 1 byte parameter raises error if entered value not fit to 1 byte.
    • Command 'C' checks overlap of source and destination block and for copying uses appropriate direction.
    • Command 'F' checks <start> and <end> parameters and raises error,  if <end> is lower than <start>.
    • Added command 'H' to send out memory content in Intel HEX format.
    • Sending of LF and CR characters were reversed and are sent in the usual order - CR first and followed by LF.

  • Monitor v3

    Martin Maly05/19/2018 at 08:52 0 comments

    I have added the next version of monitor (v3).

    This version has a big feature: you can debug your software via breakpoints and register alteration.

    The whole breakpoint magic is done by RST 4 instruction. Monitor command X takes an address, save the value from this address and replace the original instruction by RST 4.

    RST 4 led to breakpoint routine, which save all registers, including SP and PC, and returns to the monitor. You can see or alter values of all registers using the command R. After all, press C to continue program...

    You can download Monitor v3 from GitHub. There is the source code as well as the bundled version with Tiny Basic (HEX or BIN). Enjoy.

  • A hard day for my PPIs

    Martin Maly05/08/2018 at 16:33 0 comments

    The goal was simple: blink a LED, connected to PPI 82C55.

    The program is straightforward: set all ports to output, change PC7 to 0, wait a moment, change PC7 to 1, wait a moment. Repeat.

    But...

    At first everything went OK: voltmeter shows me 0 V and 5 V at 1 sec frequency. Then I have connect a LED.

    And nothing happened.

    PC7 stays at 5V.

    Okay, let change PC7 to whole PC port. Blink, blink, voltmeter OK, connect LED... and died. The whole PC port was now dead. Some of pins were 0, some 1.

    No short connections. No "Vcc on GND". No such errors. But PPI was dead.

    Another chip, everything OK on the voltmeter, so connect wires (not any LED, just wires!), let's measure voltage on the other ends of wires... nothing... dead. The whole PPI seems to be dead!

    OMG OMG OMG!

    I throwed the NEC 82C55AP to the recyc... okay, not recycle bin, maybe the problem is outside the PPI. So I pulled out older Intersil 82C55, connect it...

    ... and everything is blinking, flashing and working!

    (Programmed in BASIC this time... Isn't it sweet?!)

    Two days ago: I pulled out the Intersil one, connected the NEC one, everything is working now... Hooray!

View all 6 project logs

Enjoy this project?

Share

Discussions

Mike M wrote 05/13/2018 at 00:53 point

I found what I was talking about. After reading it was an 8085, 8755, and a 8255.   Basically a 3 ship system.   https://en.wikipedia.org/wiki/Intel_8085    My first computer was a Trash 80 (TRS). 

  Are you sure? yes | no

Mike M wrote 05/10/2018 at 20:49 point

My boss at my first electronics job in 1984 built a 3 chip computer.   I wish I could remember exactly.  It was like an 8080, an 8255, and a 8755 chips I think it was.   He wrote the code for a terminal emulator for it.  I built one myself one time.  Wish I still had it.  I had a copy of his code too but that too is long since gone.   He would have loved to have all the new gadgets that are out these days.

  Are you sure? yes | no

Martin Maly wrote 05/12/2018 at 12:12 point

I understand. I was a child in 1984 (11 years old) and I desperatedly wanted a computer, but I lived in Eastern Europe, so it was totally impossible for young boy to get one. I read all articles about computers, all schematics published in local magazines, all constructions (mostly based on 8080 back in those times) and I had a dream that someday in future I will make my own computer and write my first program and develop my very own OS... So as I wrote: I understand!

  Are you sure? yes | no

Mike Szczys wrote 05/08/2018 at 15:13 point

I opened the schematic and expected a lot more complexity. This is so clean and easy to work your way through. Great job Martin.

PS- Martin's written a couple of awesome Hackaday articles you should check out: https://hackaday.com/author/martin-maly/

  Are you sure? yes | no

Martin Maly wrote 05/08/2018 at 16:42 point

Thanks, Mike. It is a construction from my new book ("How to construct an 8bit computer in the spirit of 80's") and my goal is: "Keep it as simple as possible, but it have to work!" I want to show some basic techniques, like data bus driving, memory connection, basic address decoding, how to connect peripherals etc.  and teach readers of my book how to make a such computer, based on their own dreams.

The second computer (OMEN Bravo) uses 6502 CPU, the third (OMEN Charlie) emulates CPU in the Atmel AVR (and works a little bit like Jupiter Ace or ZX-80)...

And of course I show how to connect a simple keyboard (SBC-like, 20 keys or so), 7segment LED display or LCD display, CF card, SD card, ... Everything will be under the MIT / CC / CERN license, so I will publish it here.

  Are you sure? yes | no

Mike Szczys wrote 05/08/2018 at 16:45 point

Nice! I'm excited to see the AVR-based emulator.

  Are you sure? yes | no

Martin Maly wrote 05/08/2018 at 16:54 point

Here is my first attempt made a few months ago: https://github.com/maly/arduino8080basic - it's just an 8080 CPU emulator, TINY BASIC image in FLASH and 1.5 kB RAM for BASIC program. Easy and straightforward, just download it, compile for your Arduino and program via serial terminal... 

(Charlie is based on this construction, but it comes with TV Out, SD Card, PS/2 keyboard, ...)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates