The Computer Guy
Remember, it takes hard work to make computers easy to use.
Do you consider yourself a hard-core computer nerd? Are computers more to you than a complex assemblage of unfathomable wires and parts? Do you feel an urgent need to write your own computer programming language?
Given a choice, would you prefer writing xor eax,eax over mov eax,0? Could your write 500 words as to why one is better than the other?
Well, you have come to the right place. The P2 Compiler Porting Club is an association of like-minded enthusiasts who appreciate computer history and a good hack.
The membership requirement is simple: write a program that compiles the P2 compiler, and then make the compiler compile itself. That's it. I've already done it. It's not trivial, but it isn't rocket science, either. I will say that any sufficiently motivated, persistent computer programmer should be able to whip it out in a week.
Sound a bit recursive? A fitting tribute to N. Wirth!
And the reward? Bragging rights, of course. Anyone who is familiar with the skills needed to pull this off will instantly know you are an excellent programmer. Once word of this club spreads, it will be a great resume enhancement. It will be a common achievement among us nerds to share knowingly among ourselves.
Download the P2 Compiler Source: p2.zip This zip contains two files: pcomp.pas and pint.pas The former is a Pascal compiler, written in a subset of standard Pascal, which can compile itself into a VM assembly language. The latter (pint.pas) is the assembler/interpreter of that VM assembly output. You'll have to make a few adjustments to pcomp.pas to get it to compile, but nothing major. The real work is in converting pint.pas to C and getting it to run correctly.
A good resource is www.threedee.com/jcm/psystem You can learn a lot about N. Wirth and the CDC 6000 series computers he developed Pascal on. B.T.W., its where I found p2.zip.
Have fun, and good luck!