.. 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 :)