Senior Project




How ideas change

Originally, last spring, I thought it would be cool to build a very small lisp computer for use in embedded AI applications... you know, like game playing robots or sorting machines or whatever. Then I slowly realized how dull lisp is compared to other stuff. Slowly my project has turned into just a generic virtual machine. I'll probably write the language for it with basic-like syntax, simply since it's easy to use.

My last iteration in the design process, the device was going to have a call/local stack in SRAM, an arithmetic stack in local PIC registers, and about 8 instructions for execution. The "arithmetic" instruction encodes various operations such as addition and subtraction, sine, powers, etc. A function instruction is included for 'system' functions, such as I/O.

Description       | 15| 14| 13| 12| 11| 10| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
------------------|-----------------------------------------------------------|
Arithmetic        | 0   0   0 |    Operation      |      Stack Location       |
Assign            | 0   0   1 | X   X   X   X | S |      Stack Location       |
Constant          | 0   1   0 |                Literal                        |
Branch            | 0   1   1 | C*|          Relative Address                 |
...
* If conditional, only branch when top of stack is zero

Work in progress

Currently this is just a work in progress. Details are somewhat hush-hush since this could potentially be a small business venture for me. Perhaps I could sell these, make back some of my college costs. The estimated scale of this project is that the board would be the size of a small deck of cards, have a half megabyte of ram, and run instructions at about 50,000 lines of code per second (around 5 to 10 thousand per second for floating point operations). More to come in the future though.

Pictures: Early circuit layout