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
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