Close
0%
0%

OMEN Alpha

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

Similar projects worth following
Starting from
$44.99
parallaxis has 40 orders / 2reviews
Ships from Czechia
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:

LED display and a hexadecimal keyboard 

Here is the classic peripheral device for a single board computer: LED 7segment display and a hexadecimal keyboard. 

Of course I can use the classic keyboard matrix and some 7segment displays, a bunch of resistors 

and transistors and solder a vintage one. Yes, I can, and it's easy. Instead I have used the cheap LED+key module from China. Its type is QYF-TM1638. 

This is it:

You can buy it on eBay or AliExpress for about 3 USD.

It provides the modern LED display driver and keyboard scanner. It has a serial interface - not an UART, but some kind of SPI with bidirectional data line.

You need three pins to connect this module: strobe pin (output from CPU), clock pin (output from CPU) and data (bidir). So there was a problem: How to achieve a bidir interface in the OMEN Alpha?

I have used the 82C55 parallel interface, port C. Port C can be split into two groups (higher and lower half, PC7-PC4 and PC3-PC0), which can be configured as input or output independently. Ports A and B has the same direction for the whole port.

So I have set the lower half of port C as output for STB and CLK, and the upper one I can switch between input and output. Data pin DIO is connected to port C pin 7.

Here is a source code for the driver. It is not optimized, straightforward and rather ugly, but it works!

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 

PCB - Issue 4

My Tindie shop is out of stock, so I decided to fabricate a new batch of PCBs. I have skipped the Issue 3 (backplane version) and made a new, slightly improved version, Issue 4. The improvements are:

  • Signals RESET and READY are added to the application / system bus
  • 10k pull-up resistor between READY and Vcc to drive this line with open collector drivers
  • Removed the LED and 330R resistor. Three pins are added: SID, SOD and GND to enjoy a serial port.
  • One place for 22pF capacitor was removed.

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,...
Read more »

manual.pdf

THE Manual

Adobe Portable Document Format - 249.34 kB - 08/18/2018 at 14:44

Preview
Download

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

View all 8 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 10 components

  • Become a supporter!

    Martin Maly08/30/2019 at 11:41 1 comment

    A new support page on Patreon is available now. Check your tiers and rewards...

  • Monitor v4

    Martin Maly06/15/2019 at 13:35 1 comment

    See GitHub page for details and download.

    Main feature is a concept of "memory modules", so you can mix up your own EEPROM with software you want to use. (At this moment, the only module I can provide is TINY BASIC, but I am working on the EEPROM Writer etc.)

  • "To Zilog, or not to Zilog?"

    Martin Maly06/13/2019 at 16:24 3 comments

    The question is simple: Do you want a Zilog Z80 based simple computer kit, similar to the OMEN Alpha? Please vote here.

  • Backplane and a Serial Ports

    Martin Maly08/25/2018 at 15:04 4 comments

    My goal is to make a computer you can extend with some peripherals devices. Of course, the modern ones, no vintage cassette tape or light pen. But there is a problem: a lot of them has a SPI or I2C interface.

    Of course you can simulate SPI and / or I2C by bit banging on 8255, but it is pretty slow.

    Of course you can use a few 74's to make a shift register and a glue logic to send and receive data on the full speed.

    You can use a buffer and a driver to bit-banged-but-faster solution.

    OR

    You can use a coprocessor.

    In my case the second processor is an ATMega88. Yes, it has more power than the whole OMEN Alpha, but never mind.

    I have used the ATMega as an peripheral. It is connect to the system bus as a regular peripheral device. Chip select makes ATMega interrupt, read data from data bus and let the firmware work. The firmware decide if it's data or controll byte, and make all necessary operations for SPI or TWI bus.

    Because there are no synchronization, I have to use simple "halt" mechanism by a simple R-S FF (1/2 of a 7400). Chip select set R-S to HALT (and drive the 8085's READY signal to low). ATMega can take its own time to read data from bus or write them back (regarding the /RD and /WR signals).

    When ready, ATmega sets R-S back to READY (and drive READY high). The 8085 CPU now can work...

    I will see if it works... It should...

  • PCB - Issue 4

    Martin Maly08/12/2018 at 14:29 0 comments

    My Tindie shop is out of stock, so I decided to fabricate a new batch of PCBs. I have skipped the Issue 3 (backplane version) and made a new, slightly improved version, Issue 4. The improvements are:

    • Signals RESET and READY are added to the application / system bus
    • 10k pull-up resistor between READY and Vcc to drive this line with open collector drivers
    • Removed the LED and 330R resistor. Three pins are added: SID, SOD and GND to enjoy a serial port.
    • One place for 22pF capacitor was removed.

  • Alpha kit is available on the Tindie now

    Martin Maly07/28/2018 at 11:46 0 comments

    Unfortunatelly sold out right now...

    You can select three kit variants: PCB only, PCB + parts or fully assembled.

    You can select no EEPROM, empty EEPROM or programmed EEPROM too.

  • LED display and a hexadecimal keyboard

    Martin Maly07/08/2018 at 17:30 0 comments

    Here is the classic peripheral device for a single board computer: LED 7segment display and a hexadecimal keyboard.

    Of course I can use the classic keyboard matrix and some 7segment displays, a bunch of resistors and transistors and solder a vintage one. Yes, I can, and it's easy. Instead I have used the cheap LED+key module from China. Its type is QYF-TM1638. This is it:

    You can buy it on eBay or AliExpress for about 3 USD.

    It provides the modern LED display driver and keyboard scanner. It has a serial interface - not an UART, but some kind of SPI with bidirectional data line.

    You need three pins to connect this module: strobe pin (output from CPU), clock pin (output from CPU) and data (bidir). So there was a problem: How to achieve a bidir interface in the OMEN Alpha?

    I have used the 82C55 parallel interface, port C. Port C can be split into two groups (higher and lower half, PC7-PC4 and PC3-PC0), which can be configured as input or output independently. Ports A and B has the same direction for the whole port.

    So I have set the lower half of port C as output for STB and CLK, and the upper one I can switch between input and output. Data pin DIO is connected to port C pin 7.

    Here is a source code for the driver. It is not optimized, straightforward and rather ugly, but it works!

  • "Sneak peek" - what's coming on?

    Martin Maly07/06/2018 at 13:39 1 comment

    Yes, this time it's compiled! 

    (I write this compiler from this Monday, so its output and the expression evaluation is not optimized at all...)

  • The first Alpha issue 2 assembled!

    Martin Maly06/17/2018 at 15:55 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...

View all 14 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

Kulicheg wrote 11/24/2019 at 13:09 point

Good thing. Now I trying make Alpha emulator. Little polish and it   32kb ROM, 32 kb RAM and running imsai 8k basic and Monitor4 =)

  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