System Requirements author Neil Franklin, last modification 2007.05.31 processor originally experiment with generating VGA video in software later run small 1980s style block graphic games such as pong, breakout, car race, space invaders, pacman, frogger later an simple "game" minimal basic interpreter possibly later an on-system small development system for faster editing them possibly later an small general purpose memory based OS this would be in the size category of the original palm OS possibly very later make OS large enough for surf/mail/irc initially 8bit enough 16bit or 32bit only if faster needed for generating MHz signals later possibly 32bit for OS experiments, second system needs to generate VGA video signal, 72/60 frames/s of 400/480 lines at lines 31.5kHz/31.75us -> picture 4/5line = 25.4us in text mode 28.32MHz, line 900pixel and picture 720pixel in graphics mode 25.18MHz, line 800pixel and picture 640pixel pix clk MHz [ 1 2 3 4 5 instr/pix MIPS ] comment 40 1.57 1.57 3.15 4.71 6.30 7.85 Atari VCS minimal backgr 64 2.52 2.52 5.04 7.56 10.08 12.60 only usable for backgr 80 3.15 3.15 6.30 9.45 12.59 15.75 Atari 800 16col, good backgr 128 5.04 5.04 10.08 15.12 20.16 25.18 about minimal decent game 160 6.30 6.30 12.59 18.90 25.18 31.50 Ata VCS sprite, 800+C64 4col 240 9.45 9.45 18.90 28.32 37.80 47.25 Apple ][ 40x6(?) 256 10.08 10.08 20.16 30.24 40.32 50.40 Nintendo NES 280 11.03 11.03 22.05 33.08 44.10 55.15 Apple ][ 40x7(?) 320 12.59 12.59 25.18 37.80 50.53 62.95 Atari 800 and C64 max, 2col 480 18.90 18.90 37.80 56.70 75.60 94.50 12"/72dpi 80x6pixel printer 512 20.16 20.16 40.32 60.48 80.64 100.80 early professional graphics 640 25.18 25.18 50.36 75.54 100.72 125.90 CGA 2colour, VGA grapphics 720 28.32 28.32 56.64 84.96 113.28 141.60 MDA and VGA text draw only each 2nd line (= 200 or 240 lines), make 320x240 or 256x192 picture to produce the 1970s TV missused as 50frames/s non-interlaced stripy effect this with 1/5 of all lines sync will give about 1/3 to 1/2 CPU left over some will be needed for line stuffing, modify on fly, as not full video mem still leaves >1MIPS, multiple times C64 0.3MIPS, enough for any gameplay memory memory internal, no off-chip delays, no many-line high speed wiring no external Flash and SRAM with many high speed timing signals so prefer microcontroller over simple CPU just power/clock/reset/GPIO off of chip, analog stuff, simpler board program internal Flash, for self programming, with ISP capability must run off of simple non-uC non-CPLD parport ISP or ZIF programmer Flash-less with ext boot ROM acceptable, but slow and low-pincount Flash if external Flash, large one, use it as Flash disk 1..16M for later OS experiments this would be neccessary, only SRAM intern space VGA video scanning and gameplay, at least 16k, preferably 64k possibly for multiple games and/or development system, then 128k or 256k data SRAM at least a few video lines, better entire picture, plus small bit 4k fits 160x200@1bpp video image, 32k fits 320x200@8bpp image at least 1k, preferably 8k, or at least 64k if code execution from SRAM or go for only a few lines buffered, modify in-time, then 1k is enough interfaces IO only GPIOs needed, as many as possible, no analog or special controllers exeption only UARTs if used for data copy to controller written Flash output 1 VGA 3*2 RGB + 2 HV, requires 2+6 GPIOs, ev 4*1 RGBI or RGBL, 2+4 GPIOs if 16/32bit poss 3*3 or 3*4 + 2 HV, requires 2+9 or 2+12 GPIOs input 1 joystick, possibly 2nd joystick, possibly 1 or 2 (unlikely even 4) paddles, digital joystick, Atari DB9 wiring, requires 1 (or 2) * 5 GPIOs paddles Atari DB9 wiring or analog joystick PC DB15 wiring, 1+(1|2|4) GPIOs poss 1 PS/2 keyboard, if development on system, poss 2nd PS/2 mouse requires 1 (or 2) * 2 GPIOs, better PS/2->DB9 adaptor to missuse 2nd joystick poss 1 RS232 mouse, or comms if development on system or boot-only Flash for loading software onto system if no ISP and intern Flash used (unlikely) only if boot-only Flash system USB host for USB Flash stick, or other disks or simply go for an serial boot Flash of large size, SPI are up to 16M requires 2 (or 4 or 6 if control) GPIOs, first 2 as 1 U(S)ART better RS232->DB9 adaptor to missuse 2nd joystick poss 1 parport, also usable as GPIOs, 8(I)O+5I+4(I)O+8GND, but no power 8 data, 8 for 4 status + 4 ctrl, ev 1 for 5th status (/error) possibly only partial implementation (drop 1 input, /select or /error) or 8 data, 8 for 5 status and 3 ctrl, ev 1 for 4th ctrl (/selectin) or 8 data, 5 status, 4 ctrl, but allways 2 partially used 8bit ports or simply regard joysticks as small 5 or 7 pin + power parports possibly only 1 (or 2) parports, everything else adaptors on that multiple interfaces, LED tester, 7-segment, keypad, joystick, PS/2, RS232 interfaces can be built as modules and tested on an PC software under linux needs to do iopl(3); or ioperm(0x378, 8, 1); microcontroller (or raw PC) then has advantage of no OS in the way and no interrupts disturbing timing, full hard real time possible alternative even only 2 (or 3) parports, also VGA from one of these most likely then also 1 or 2 PS/2 or mouse RS232 on same adaptor but does not offer a great advantage, and may distort signals and cost pins, 2 parports already fill an DIP40, 3 need an QFP64 big problem PC parport is lack of power out, missuse signal lines (low power) or jumper an GND (risk short), use an out (loses printer), jumper an out both power jumper versions are not PC compatible, so lose universality split uC pins so equal distribution of special functions (int, usart, etc) wiring old 386 parport 8* 374+244 + 33ohm short protect + 2.2nF static prot control are all from/to Winbond 16C451 (also 1st RS232), extended 16C450 requires 17 GPIOs per port, far the largest of all port types better an dedicated ca 8 pin expansion port standard, with power pins on it this would require an 40pin uC, with 4 8-date + power ports, rest modules possily use the Atari DB9 joystick connector, 5digi+2ana/digi+VCC+GND and then for PC parport use an demultiplexer on the module, if wanted case preferably DIP28 for small size and so more impressive if enough IOs present, max 23, realistic 21 (ATmega8 AVR + reset + ext clk) OTOH the connectors (DE15, 2*DE9, sound, power, IDC10) use space, chip fitting so can use DIP40, more IOs, 32 are given, also more Flash and SRAM space pin count analysis minimal VGA (3|4|)6(|8) + 2 = 8, sound (0|)1(..n) = 1 (1|)2 * joystick 5 = 10 (2nd=rs232|ps/2), paddles 1(|2) * 2..3 = 2 if only 1 joyst poss room for 1(|2) * PS/2 2, RS232 2(|4), audio tape 2 = 6 gives 9+8+6=23, merge sound + RS232 out + audio tape out, fits 21 AVR 28 pin 20..23 IO: vga 8, sound 1, joyst 5+5, paddle 2 = 21 -> ext 16|6.7 osc, so only 1 line PB6, reset PC6, prg shares 3 pins PB3..5 vga PB0..5+PD6/7, sound PB7, paddle PC4..5, joy1 PC0..3+PD5, joy2 PD0..4 AVR 40pin 32 IO: vga 8, sound 1, joyst 2*5, paddle 2*2 = 23 -> 9 unused, 3 prg separate, 4 adc and 2 other unused, rs232?, ps/2?, tape? prg PB5..7, vga PC0..7, sound PD7, paddle PA4..7, joy1 PB0..4, joy2 PD0..4