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

Public Chat
Similar projects worth following
Starting from
KnivD has 19 orders / 0 reviews
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 - 826.95 kB - 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


View all 5 project logs

Enjoy this project?



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

KnivD 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

KnivD wrote 03/08/2021 at 17:59 point

Thanks for liking it

  Are you sure? yes | no

Kosma wrote 02/28/2021 at 20:04 point

PIC32 is arm

  Are you sure? yes | no

KnivD wrote 02/28/2021 at 21:35 point

No, it's not.

  Are you sure? yes | no

Kosma wrote 03/07/2021 at 17:31 point

  Are you sure? yes | no

KnivD 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

Kosma wrote 02/28/2021 at 14:18 point

teoreticaly questions. first acintosh 512K have more rom. If this device will have a gui and some bigest rom for libc, sound system functions and other

it is possible run system similar mac os 1.0 ? Meybe creating a test? 

  Are you sure? yes | no

KnivD 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

Kosma wrote 02/28/2021 at 15:32 point

I like this idea. ARM or RISC-V is good direction.

But why not completly? screen, sound, keyboard, power and usb for connecting disc etc. in future.

I would strt write a program for this platform but ... how I can to do this? Is emulator (QEMU?) or other way to compiling my program? Think about this. This is very nice system, very nice hardware and .... not mobile and not usefull for people without hardware.

  Are you sure? yes | no

KnivD 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