PIXPUTER - computer on PIC17 microprocessor

"PIXPUTER" (or nedoPC-17) is based on PIC17C43 or PIC17C44 microcontroller that works in microprocessor mode with external program memory

Similar projects worth following
I started this project at the end of 2007 in order to participate in CircuitCellar / WizNet contest where I applied in the last moment on January 31st, 2008 and then got "Distinctive Excellence" diploma with $100 check from Circuit Cellar magazine :)

This particular contest entry was a single board computer on Microchip PIC17C4x microcontroller in microprocessor mode (with 16-bit external program memory) running on 20 MHz with 64 Kwords ROM divided to 8 pages, 8 Kwords RAM, MAX3232 to COM-port, Real-Time Clock DS1687-5, Ethernet+TCP/IP module with W5100 chip, 8 optoisolated inputs and 2 relays that could switch 120V AC.

In March 2008 WizNet showed this board along with other entries on some exhibition in California. In December 2009 I published documentation online (see PDF in file section below) and now I decided to resurrect this project to build true PIC17 computer with keyboard, display and storage.


Original PIXPUTER (codenamed nedoPC-17) was designed in 2007 around PIC17C4X - we can target PIC17C43 or PIC17C44 in PLCC44 that has the same number of data registers (454), but different amount of on-board ROM that we will NOT use anyway, because MCUs connected in microprocessor mode when program is running from external memory, not from on-board ROM (that is not even accessible in this mode) - so we may choose PIC17C43-25/L (PIXPUTER runs on 20 MHz) because it's cheaper than C44. External memory could be accessed by 16-bit multiplexed bus (16 bit address and 16 bit data) with 3 control outputs (ALE, /WR and /RD). PIC17 instruction set is having special commands that could read or write words from/to external memory (so program memory may be used as data memory). We split those 65536 directly addressable memory cells into 8 baskets 8 Kwords each:

#Address RangeDescription of Memory Region
00x0000...0x1FFFROM (unswitchable - always bank 0)
10x2000...0x3FFFExternal ROM (cartridge with 2 banks - 2x8Kwords)
30x6000...0x7FFFROM (switchable - any of 8 banks, switched by ROM_CTRL register)
40x8000...0x9FFFRegisters of WizNet W5100, RTC, ROM_CTRL, External buses
50xA000...0xBFFFReserved for future
60xC000...0xDFFFTX buffers of WizNet W5100
70xE000...0xFFFFRX buffers of WizNet W5100

This memory map is slightly different from what was initially designed in 2007 (and described in PDF from 2009), but thanks to Programmable Logic Array 16V8, which was used as address decoder, we can remap it without changing PCB or schematics. ROM is 64 Kwords chip (ultraviolet erasable) where 1st 8Kwords (bank 0) always mapped into 1st memory range of the PIC and 0x6000...0x7FFF may have any of 8Kwords mapped into it using register ROM_CTRL (it works as write only) - 3 lower bits set index of ROM bank that has to be mapped and 4th bit may swap banks in external ROM mapped into range 0x2000...0x3FFF. RAM is two 8-bit 8KB chips permanently mapped into range 0x4000...0x5FFF. WizNet chip W5100 mapped into higher half of the memory with some small gaps used for other purposes as RTC, ROM_CTRL 4-bit register and external buses (actually higher half of this region 0x9xxx is reserved for future along with next region 0xA000...0xBFFF - 12Kwords total).


JEDEC-file with PAL/GAL 16V8 image for PIXPUTER v1.1 (I used PALCE16V8)

jed - 1.80 kB - 05/19/2016 at 02:44



PIXPUTER board v1.1 (fixed oscillator and reset circuit) for Eagle v5 "standard" (4 layers, 16x10 cm)

brd - 164.66 kB - 05/19/2016 at 02:42



PIXPUTER schematics v1.1 (fixed oscillator and reset circuit) for Eagle v5 "standard" (2 pages)

sch - 327.81 kB - 05/19/2016 at 02:41



PDF created in 2009 from original contest entry document (with adding my name in it and word PIXPUTER)

force-download - 6.41 MB - 05/19/2016 at 02:37


  • PIC17 prices

    SHAOS12/22/2016 at 03:24 0 comments

    Here I combined screenshot from the datasheet with current prices (as available on DigiKey today):

    As you can see not all combinations of packages/frequencies/cores are available (I used price for single chip and in case of availability of both commercial and industrial temperature ranges I wrote commercial price otherwise price of any available one).

    Note: 33 MHz option is probably most problematic because of export regulations (too fast to ship outside of US?). Anyway it's obviously overkill in our case because according to datasheet for configuration with external program ROM the clock frequency of PIC17 should not exceed 25 MHz...

  • Shortened PCB

    SHAOS05/30/2016 at 01:37 0 comments

    I still have 3 green PIXPUTER boards from old batch, so I decided to make shortened version of PIXPUTER by removing WizNet, optocouplers, relays and wide extension bus on the right side:

    This shortened version still has the processor (diamond shaped PLCC socket in the middle), ROM (large DIP on the left), PAL address decoder (smaller DIP at left-upper corner), RAM and other SOIC ICs, RTC (DIP on the right) and RS-232 chip and socket (on the top). 8+2 IO on the bottom of the board can be used to connect 2-line LCD-display as showed on older pics:

    Also I want to connect little serial keyboard from Palm m100/m105 to it (people already connected this type of keyboards to DIY devices - it's called "Micro DataPad Mini Keyboard for Palm PDA" and it's still available on the Net here and there for about $10):

    After that my PIXPUTER could be truly called "a computer" :)

  • Red boards arrived

    SHAOS05/25/2016 at 02:34 6 comments

    Package from China arrived yesterday :)

  • Another PIC17s

    SHAOS05/23/2016 at 22:58 2 comments

    It's strange, but I didn't know about other PIC17s until recently - along with PIC17C4X models there are bigger family PIC17C7XX (also obsolete):

    with "monsterpic" PIC17C766 that has 66 IO-pins (ports from A to J)! Probably I'll try to build newer PIXPUTER around this one (with hope that all software from PIC17C4X will keep working). Another cool feature about them - ability to be programmed "In-Circuit" (but it's still one-timers that could not be re-programmed) and DigiKey even offers custom programming of PIC17C752 and PIC17C756A on order - in this case we can keep BIOS (and OS kernel) inside of the chip and all other software - outside (as pre-programmed into external 16-bit ROM or downloadable into external 16-bit RAM).

  • Ressurection

    SHAOS05/19/2016 at 03:23 4 comments

    As you probably know already I like to build computers from unusual things ;)

    I wanted to design and build computer on PIC17 microcontroller since may be 2006 and when I found Circuit Cellar article from November 2000 about PIC17C44-computer with ROM, RAM and RS232 I finally decided to do that and WizNet contest became perfect opportunity for that. So along with ROM and RAM I added "smart" address decoder on PAL 16V8 programmable logic, RTC, optoisolated inputs, couple relays and Ethernet module WIZ810MJ (with W5100 chip on it with 4 hardwired sockets and 2x8KB memory buffers) to build I/O-board with remote control by HTTP from any browser. I didn't win the contest, but got "Distinctive Excellence" diploma and $100 from Circuit Cellar for the rights to use this board in the magazine (as I know my little article was never published, but still). WizNet brought this board to some exhibition in California and presented me a gift in form of 1GB USB flash-drive that broke a few months after that ;)

    I still have 3 bare boards out of 4 manufactured in December 2007 (I paid $85 per board then):

    But they have 2 errors (crystal instead of oscillator that is required for unprogrammed PIC17 and lack of reset circuit for W5100 as described in IO_Board.pdf), so in 2016 I finally re-ordered v1.1 of the board in China with fixed errors and colored in RED (now I paid only $18 per board):

    On the right side you can see extension bus that could be used to connect other things as memory extension, game cartridge, videocard and floppy controller...

    Schematics of v1.1 with fixed errors:

View all 5 project logs

Enjoy this project?



jaromir.sukuba wrote 05/23/2016 at 11:19 point

I like this project, because it's weird.

PIC17Cxx, oh my! And they still manufacture it, such as relict.

Are you planning to run this one with some specific software?

  Are you sure? yes | no

SHAOS wrote 05/23/2016 at 14:35 point

I plan to run my own OS on it ( obviously it will be called ShaOS ; ) and different apps (system software, games, programming languages etc) - to make it true PC-like computer :)

P.S. At least as PC-like could be in 80s or early 90s ;)

  Are you sure? yes | no

jaromir.sukuba wrote 05/24/2016 at 08:57 point

Do you have any other development tools than assembler for this? Not that like I have problems with assembler, but some aspects of OS are easier to implement in higher level language.

By the way, I found PIC17C42 in local bargain sale under 1USD, so I bought the rest of their stock - 8 pieces. I know this project calls for 17C43 or 17C44, but I couldn't resist. My hoarding disorder is not completely gone.

  Are you sure? yes | no

SHAOS wrote 05/24/2016 at 15:19 point

Yes, PIC17C42A should be good also - actually I used it in that prototype :)

Now I moving to 43 or 44 because they have more data registers (454 vs 232)

I used open source GPASM and Linux to develop software for it ;)
Also I have plans to support PIXPUTER as a target in my NedoPC SDK that used simple C-like programming language (currently SDK supports z80 for ZX-Spectrum and 8080 for some Russian home computers as RK86, Orion and Specialist).

P.S. Question - did you get PIC17C42 or PIC17C42A? PIC17C42 is very old one
that didn't have 8x8 multiplier onboard and all other PIC17s have one...

  Are you sure? yes | no

jaromir.sukuba wrote 05/25/2016 at 13:55 point

I've got PIC17C42A. Manufactured in 2006, seems like those were stocked for a long time. But it is in DIP package, so unsuitable for board you designed, without fancy adapters.

Oh, GPASM, didn't check that one, shoul be my first bet.

  Are you sure? yes | no

SHAOS wrote 05/25/2016 at 14:16 point

GPASM is fully compatible with MPASM, but it is open source that could be compiled everywhere (not only Linux, but also in DOS for example)

DIP-package of PIC17C42A is good also - you can replicate PIXPUTER schematics on breadboard :)

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates