.. Original article at http://text.maze.io/2010/02/23/micro-electonics:-parallax-propeller
_______
____________ _______ _\__ /_________ ___ _____
| _ _ \ _ | ____\ _ / | |/ _ \
| / / / / | | | /___/ _ | | / /
|___/___/ /___/____|________|___ | |_| |___|_____/
\__/ |___|
(c) 2010 Wijnand 'maze' Modderman - http://maze.io/
Micro electonics: Parallax Propeller
====================================
.. image:: http://i.maze.io/32a9e945.jpg
:align: right
:alt: Parallax Propeller
:width: 200
:height: 150
Recently I have acquired a `Parallax Propeller `_ development board. I am investigating how to emulate DOS text mode (80x25 @ 16 colors) on this device, and ran into a few problems.
The specs of the Parallax Propeller:
* 8 x 10 MHz RISC processor
* 32 kB EEPROM
* 32 kB RAM
* 512 x 32 bit RAM per core
* USB/Serial interface
* 32 digitial I/O ports
* VGA-ready
* PS2-ready
So, a quick calculation shows that this is by far not enough for even simple 16 color ANSI rendition. This would require at least (80 * 25 * 16 * 2 = 64000 =~ ) 64 kB of memory to buffer the characters and their foreground and background colors.
I have ordered 256 kB of RAM which will serve as a video buffer, and 128 kB of EEPROM to store the Code Page 437 character sets. The video output will be using approximately 5 to 6 CPU cores, which leaves 1 core for interfacing the SD card and 1 core for handling the PS/2 inputs.
Secondly, I have never done any true multi-processor programming! This nifty little device has 8 cores or `cogs` which are signalled by the `hub`. The `hub` takes care of invoking each active `cog` in a round-robin fashion, allowing all cogs to share 32 I/O pins, 2 shared video memory buffers and the built-in clock.
It's nice to learn about VGA signaling, but it's quite complex. Here are the parameters I try to emulate on my Parallax Propeller board::
______________________ ________
________| VIDEO |________| VIDEO (next line)
|-C-|----------D-----------|-E-|
__ ______________________________ ___________
|_| |_|
|B|
|---------------A----------------|
A: scanline time
B: sync pulse length
C: back porch
D: active video time
E: front porch
The default `Propeller OBEX `_ `VGA Tile Driver `_ delivers 1280x768 pixels and is a good basis for writing my own version of a VGA driver.
Hopefully this project results in a working demo, I will keep you posted :)