This is my entry to the Hackaday.io 1KB challenge. It is three games squeezed into a PIC17F1705 MCU using eight 14-segments displays, eight buttons and a rotary (aka quadrature) encoder.
In order to save some code space I implemented the character set in hardware with 200+ diodes and a chain of five 74HC595 shift registers. This gives me 5*8=40 characters so I have 0..9 A..Z and +-= and .
The hardware character ROM saves me 40 words of code space (70 bytes since each word in the PIC16 is 14 bits). I probably could have squeezed in those bytes in a table with the current three games, but it was a fun thing to design and build.
The three games I've implemented in the 970 bytes (554 code words) are:
1) A 8-button "Simon" (remember and repeat and ever-increasing sequence)
2) Convert decimal numbers into binary as fast as possible
3) Sort a list of 8 letters in descending order as fast as possible
Any PIC16F17xx can be used, and probably many more as well. I just happened to have a few of these
Any type of the 595 shift register should work
Any small signal NPN like 2n2222 would work as well
Any model should work good enough
I've been able to squeeze in three games in the allotted 1KB space. A Sort-the-letters-in-reverse game, a Convert-decimal-to-binary game, and a Eight-button-Simon game.
The Simon game still needs scoring added to it, but luckily I have a bit of space left since I'm only at 519 words out of the maximum 585. So I guess I'll be able to add that and clean up the code a bit before the contest deadline tomorrow.