| 1 | Goals |
| 2 | ===== |
| 3 | |
| 4 | * Build real hardware to maintain interest in software development. |
| 5 | * Sanity check before attempting a workstation-capable machine. |
| 6 | * Develop better hardware intuition. |
| 7 | * Include sufficient capability to handle a real application after completion |
| 8 | of experimentation. A calculator or instrument controller would be |
| 9 | satisfactory. |
| 10 | * Establish a performance mark against which to predict/compare future designs. |
| 11 | |
| 12 | Principles |
| 13 | ========== |
| 14 | |
| 15 | * Simplicity. |
| 16 | * Let the implementation guide the definition. |
| 17 | * Keep options open. Postpone decisions where possible. |
| 18 | * Design for debugging and rework. The CPU should be easily instrumented. |
| 19 | * Defining what IS NOT is as important as defining what IS. |
| 20 | * Don't add functionality unless a real application requires it. |
| 21 | * Don't get bogged down in I/O. Use modern hardware where helpful. |
| 22 | * Worse is better. If 90% functionality can be implemented for 10% effort, do |
| 23 | it and move on. |
| 24 | * The only thing worse than generalizing from a single example is generalizing |
| 25 | from no example at all. |