ATMega Console


This project is an effort to create a simple BASIC-capable console, using an Atmel microcontroller.
On this webpage you can review my project progress.

Objective

The objective is to have a tiny 8bit computer system in quality comparable with the Commodore 64, but not emulating it entirely. It will have its BASIC interpreter and will run code from either internal or external EEPROM, or from an external Flash drive (SD Card).

I'm planning to have it include instructions like PRINT, PEEK & POKE and other familiar BASIC commands. It should be able to handle a handful of integer and string variables and hopefully be still fast enough to create simple games on it with the ease of BASIC as its programming language. When using an external non-volatile memory, the internal EEPROM could be used to store cross-session variables, such as game highscores.

Interface

For the interface, i'm planning a full-screen (Commodore-like) text editor and using a standard PS/2 keyboard (it should be able to work with a USB keyboard using a USB-to-PS/2 interface supplied with most USB keyboards).

Memory

I remember clearly, the Commodore 64 had ample memory for storing complicated BASIC programs (38kB) and since the Atmels are 16 times faster, i see no problem using serial EEPROMs (24Cxx series). For example, the 24C256 has 32kB of EEPROM, and it allows 4 of those to take place on the same bus for a total of 128kB of BASIC programming memory. During testing i will use a 24C16 which can store up to 2kB of data.

Video output

I've considered 2 options: LCD output and TV output (either PAL or NTSC).
My objective has always been to get the best possible output, using only minimal external components (two 74xx chips and a few resisters). Of course i needed to consider the required system time for creating output, so enough time would be left for BASIC interpretation & execution, as well as the memory requirements. After testing several possibilities, i've chosen a 32x24 character, 16 colors PAL video output, requiring 1.5kB internal RAM. This meant a 40pin ATMega 32 would suffice.




Some screenshots






PAL Signals