DUO EXECUTIVE The DUO Executive is an inexpensive computer based on the ATMega328. The computer has black and white VGA output and PS/2 keyboard input. Six female header pins are also available for digital output and analog input. Files are stored in a 128 KB EEPROM chip. Data may be written and read from a host computer through a serial interface. All programs on the computer are written in a proprietary language called DEPL (DUO Executive programming language). DEPL consists of plain ASCII commands interpreted by the ATMega328. 600 bytes of RAM are available for DEPL programs. Parts to use from Mouser (x2) Microcontroller: ATMEGA328P-PU (x2) Crystal oscillator: MP160B (x4) Capacitor: 140-100N2-200J-RC Serial EEPROM: 25LC1024-I/P Serial SRAM: 23LC1024-I/P FIFO: SN74ALS236N Buffer: SN74LV125ANE4 Resistor (1K ohm): 291-1K-RC Resistor (10K ohm): 291-10K-RC Diode: 1N4150TR Larger capacitor: UVR1H100MDD1TA Button: PTS645SH50-2 LFS Switch: EG1218 Parts to use from DigiKey D-sub connector: 1-1734530-1 Circular connector: MD-60SM (x2) IC socket (28 pins): 1-390261-9 (x2) IC socket (8 pins): 1-390261-2 IC socket (16 pins): 1-390261-4 IC socket (14 pins): 1-390261-3 Female header (6 pins): PPTC061LFBN-RC (x2) Female header (8 pins): PPTC081LFBN-RC Wall adapter: WSU050-1500-R Barrel connector: PJ-102A Communicating with the ATMega328 through USB http://arduino.cc/en/Main/Standalone https://www.sparkfun.com/products/718 USB interface chip: FT232RL-REEL ATMega328 pin connections Pin 0: RX Pin 1: TX Pin 2: EEPROM CS Pin 3: SRAM CS Pin 4: EEPROM + SRAM SCK Pin 5: EEPROM + SRAM SI Pin 6: EEPROM + SRAM SO and VGA intensity Pin 7: VGA SCK OE Pin 8: VGA VSYNC Pin 9: FIFO RST (necessary during power on) Pin 10: FIFO SO Pin 11: FIFO Q0 Pin 12: FIFO OR Pin 13: Device mode (VGA or serial) Pins 14-19: Program controllable VGA Pin connections GND X BLUE GREEN RED GND PWR GND GND GND X VSYNC HSYNC X X (front of female VGA connector) Sources for timing: http://www.javiervalcarce.eu/wiki/VGA_Video_Signal_Format_and_Timing_Specifications http://tinyvga.com/vga-timing/640x480@60Hz http://www.pyroelectro.com/tutorials/arduino_basic_vga/ http://garagelab.com/profiles/blogs/arduino-generated-vga-color-signal-complete File allocation table Each entry will be 32 bytes long. There will be a maximum of 128 entries occupying the first 4 KB of EEPROM. Entry format: [2 byte name length] [14 byte name characters] [2 byte file size] [2 byte type length] [6 byte type characters] [4 byte file address] [2 byte unused gap] If an entry is unused, the file size will be 0x0000 or 0xFFFF. Variable allocation table Each entry will be 14 bytes long. Entry format: [1 byte name length] [8 byte name characters] [1 byte variable type] [2 byte variable size] [2 byte variable address] If an entry is unused, the variable size will be 0. NOTES TO SELF: - Connect SRAM to VGA connector through a buffer. - Source the PS/2 clock with a 1K ohm resistor and use an inverter. - EEPROM must be sent a write enable command before EVERY write operation. - Add grounded diode between SRAM and microcontroller to prevent flurries.