A DIY true single-chip computer with video and C interpreter

Public Chat
Similar projects worth following
Starting from
KnivD has 60 orders / 0reviews
Ships from United Kingdom
ELLO 1A is the simplest full computer built from atomic parts and without use of preassembled modules.
It is a retro style machine running a built-in interpreter, not BASIC but C !!

What is ELLO about?

In one sentence – to have fun building, and learn in the process.

The focus is away from competing with the big guns, such as Raspberry and the likes, but rather an alternative option to enjoy building and programming a small and very unpretentious computing system, entirely from scratch.

So, what are the goals?

When started with the project, I set several important goals ahead:

1. To let the user be able to build the entire computer themselves.

This means to be as simple as possible hardware, built only with atomic components (no pre-assembled modules), and without significant compromises on its basic functionality.

As “basic functionality” I defined the following set of parameters:

a)  To be able to use standard input and output devices – keyboard and monitor.

b)  To have some available non-volatile storage.

c)  To have some reasonable minimum amount of RAM.

d)  To have some means to produce sound.

e)  To have some expansion capabilities.

f)  To be built only with parts which are large enough for handling even by the most inexperienced user. This significantly complicates the choice of components as it excludes almost every available modern microprocessor or microcontroller as they are all manufactured only as small surface-mount packages.

2. Not to use a heavy and resource consuming operating system.

Trumpeting about great hardware and then leave the user banging his or her head in the wall, and having to search the Internet every time they need to write something, gives no pleasure to the user nor teaches them anything other than developing proficiency in using search engines. Hence, anything including the word “Linux” falls automatically into the “no-no” category of choices.

I decided to make the ELLO in the same proven way as the early personal computers – a built-in interpreter to allow immediate integration with the system.

3. To offer a “meaningful” programming language.

The opinions what programming language should such small computer include, vary a lot indeed. About 99% of all similar systems today run some dialect of BASIC, which by itself is an excellent and powerful programming language.

In contrast to all, ELLO includes a tiny C interpreter!

In my view and with the full respect to BASIC, which was my first, just like to many others, C is the one truly “universal” programming language, and worthy to be learnt by anyone who wants to have a closer contact with programming. C is also much more “dangerous” language with significantly lower tolerance for errors than BASIC or other alternatives, especially when working with direct access to the memory and the other hardware resources. While that might sound scary, it is also beneficial for the user to learn and experiment without having an error net which would always save them from mistakes.

Due to its powerful features and loose syntax, C is extremely difficult for implementation as a runtime interpreter – only a handful ever written, none of which able to work well in a small bare-metal OS-less system like the ELLO. I jumped on this additional challenge with great enthusiasm, but it still took many months of hard work and debugging to get it to the current level.

Of course, the C dialect running on the ELLO is much simpler than its typical desktop equivalents, but still includes all the original language elements and even adding some limited compliance with the C99 standard. Its execution speed is of course far from what a compiled program would be like, but it still serves quite well its purpose in this case.

Most recent version of the firmware for PIC32MX170/270

application/x-zip-compressed - 2.33 MB - 03/01/2021 at 11:47


ELLO 1A L2.pdf


Adobe Portable Document Format - 189.60 kB - 02/28/2021 at 10:06


Assembly Drawings.pdf

Assembly drawing

Adobe Portable Document Format - 100.09 kB - 02/28/2021 at 10:06



BOM for through-hole assembly

application/ - 33.00 kB - 02/28/2021 at 10:06



BOM for surface-mount assembly

application/ - 32.50 kB - 02/28/2021 at 10:06


  • R120

    Kn/vD03/07/2022 at 14:03 0 comments

    After almost a year, just updated the ELLO 1A's firmware to R120

  • R114

    Kn/vD06/16/2021 at 07:52 0 comments

    Updated C.impl to R114.

    This is a larger update although not visible on the surface. I have fixed many bugs and have added the roots of an internal driver system as well as BIOS entries.
    Another thing, now there is a port of C.impl that works on a PIC32MZ chip. I have used my own Rittle Board but it will work on any other compatible board. I will release DIY PCBs for the Rittle Board on my Tindie store in the next couple of days.

  • Sources now on Github

    Kn/vD05/03/2021 at 13:07 0 comments

    Today I decided to release the full sources on Github

    These include the C.impl interpreter, RIDE, all libraries, and everything else

  • Full font now

    Kn/vD04/13/2021 at 18:27 0 comments

  • R110

    Kn/vD04/03/2021 at 12:29 0 comments

    Just released on the website a new software update - R110
    Many improvements and some important changes too.
    Here is the screen immediately after first programming.

  • Now available on Tindie!

    Kn/vD03/31/2021 at 08:20 0 comments

    ELLO 1A PCBs are now available on Tindie

  • First "official" release

    Kn/vD03/16/2021 at 12:11 0 comments

    Just updated the project website with the files of the first release

View all 7 project logs

  • 1
    Making the PCB with SEEED

    A great possible option for making the PCB for ELLO 1A (as well as pretty much any other PCB), is SEEED Studio

    SEEED is a one-stop shop for PCB and assembly, and delivers great quality at great price. They also offer 3D printing service (which I am planning to test soon), as well as an internal market for projects.

    For the ELLO's board, the quote I get from SEEED's online system matches the JLC's which I used with the prototypes, so thumbs up for that too.

View all instructions

Enjoy this project?



M.NOORI wrote 09/30/2022 at 08:04 point

hello .

 it is fun. but I need and want this project with AVR ATmega8. is it possible change project? can  you help me? have this project with AVR in this site?

 I want build with mega8.

  Are you sure? yes | no

Kn/vD wrote 09/30/2022 at 08:49 point

Sorry, I don't have a version with AVR for this board

  Are you sure? yes | no

PixelDud wrote 07/17/2021 at 06:47 point

How is the screen resolution set, would it be possible to make it lower than what it currently is? Also, could one expand the color palette to be 11, 10 colors, 1 transparency?

  Are you sure? yes | no

PixelDud wrote 07/17/2021 at 06:50 point

Another question, would it be possible to make a game with custom sprites and such for this computer?

  Are you sure? yes | no

Kn/vD wrote 07/17/2021 at 07:21 point

Yes. The speed is not huge, something like the early PC/XT, but that is as much as this CPU can give on an interpreted C code

  Are you sure? yes | no

Kn/vD wrote 07/17/2021 at 15:13 point

Not 11, but a palette of 4 out of 16 would have been possible in such case

  Are you sure? yes | no

PixelDud wrote 07/17/2021 at 15:25 point

That 4 being 3 colors and a transparency or 4 colors and a transparency, also what do you mean by "out of 16"?

  Are you sure? yes | no

Kn/vD wrote 07/18/2021 at 09:30 point

The transparency doesn't need a physical colour. Out of 16 means that out of 16 possible physical colours, 4 can be used at a time. If you look at CGA cards they do that.

  Are you sure? yes | no

PixelDud wrote 07/18/2021 at 18:59 point

I see what you mean now, thanks for the clarification.

  Are you sure? yes | no

Kn/vD wrote 07/17/2021 at 07:21 point

The screen resolution can be lower. In fact, there could be several screen resolutions, however I have selected only one for now. It is defined in the source file platform.c. Transparent colour is already supported (-2).

As to more colours, this PIC has only two SPI channels and one of them is needed for the SD card, so that make generating colours almost impossible. I experimented with some tricks and got 4 shades of the main colour, but the results were not good enough. SQI could have been a good solution, but is also missing from the chip

  Are you sure? yes | no

PixelDud wrote 07/17/2021 at 14:53 point

What if the SD card reader wasn't used? Say, one was to use ROM chips instead, would there be the possibility of the 11 colors then?

  Are you sure? yes | no

Justin Davis wrote 03/08/2021 at 21:16 point

I love it.  But I'd prefer to have three bit color instead of RX/TX or I2C.  I see RB15 is unused - maybe route that over to get at least 2 bit color?  To get one more pin, do you need HSYNC to run to both of those two pins?  Is RA0 being used for something?

  Are you sure? yes | no

Kn/vD wrote 03/08/2021 at 21:48 point

The problem is a bit more complex. This mcu has only two spi channels. One is needed for the SD card, and the other for the video. That renders RB15 unusable because it produces the SPI clock and unfortunately can't be disabled when the SPI is on. On top of that, the memory claimed for video buffer would have been so large, that there wouldn't be much or any left for the actual program. This chip is simply not suitable for that sort of upgrade, but I have made every possible effort to provide more than just pixel on/pixel off in a mono video.

  Are you sure? yes | no

Geek Centric wrote 03/08/2021 at 17:45 point

This is really cool, thanks.

  Are you sure? yes | no

Kn/vD wrote 03/08/2021 at 17:59 point

Thanks for liking it

  Are you sure? yes | no


[this comment has been deleted]

Kn/vD wrote 02/28/2021 at 21:35 point

No, it's not.

  Are you sure? yes | no

Kn/vD wrote 03/07/2021 at 19:24 point

Wrong model. You should look at PIC32MX170 or PIC32MX270

  Are you sure? yes | no

marazm wrote 02/28/2021 at 15:46 point

it is so small, it fit in keyboard ;-) many people need qmk keyboard + simple system

  Are you sure? yes | no


[this comment has been deleted]

Kn/vD wrote 02/28/2021 at 15:20 point

The system has only 64k RAM. In theory it could be possible to have some sort of a rudimentary GUI, but that is not the main goal of this project. It was to create a minimalistic retro style computer with C interpreter. Hasn't been done before.

  Are you sure? yes | no

Kn/vD wrote 02/28/2021 at 16:34 point

None other than this particular model PIC32 can achieve a full system with 64k RAM in a single DIP package. That was a major reason why it is not ARM or RISC-V

  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