A complete development environment and implementation for the F00 16-bit embedded CPU, originally designed by Jeff Davies in 1999. try IDE
- Open
web-ide/f00-web-ide.htmlin any modern web browser - Load an example by clicking the "Example" button
- Assemble the code with Ctrl+B or the "Assemble" button
- Run the program with Ctrl+R or the "Run" button
- Watch output in the UART terminal window
Try these sample programs in the examples/ folder:
hello-world.f00- Basic UART outputarithmetic-test.f00- Tests all arithmetic operationsmemory-test.f00- Memory read/write verificationfibonacci.f00- Fibonacci sequence generator
F00-CPU-Project/
├── README.md # This file
├── licence.htm # Original GPL license
├── web-ide/ # Complete web-based development environment
│ ├── f00-web-ide.html # Single-file IDE (assembler + simulator)
│ └── README.md # Web IDE documentation
├── examples/ # Sample F00 assembly programs
│ ├── arithmetic-test.f00 # Arithmetic operations test
│ ├── fibonacci.f00 # Fibonacci sequence
│ └── memory-test.f00 # Memory operations test
├── documentation/ # Technical documentation
│ ├── F00-CPU-Programmers-Reference.md # Complete ISA reference
│ └── ... # Additional docs
├── tools/ # Development tools (future)
└── archive/ # Historical/reference files
├── original-abel/ # Original Abel HDL source
├── original-c-tools/ # Original C assembler/simulator
├── vhdl-translation/ # Abel-to-VHDL translation
├── original-documentation/ # Original design docs
└── original-archive/ # Jeff Davies' original files
The F00 is a 16-bit Harvard architecture embedded CPU designed for:
- FPGA implementation (13,000 gates target)
- Real-time applications (no virtual memory overhead)
- Educational use (clean, simple instruction set)
- Embedded systems (multimedia, consumer electronics)
- 32 general-purpose registers (R0-R31)
- 64KB instruction space + 64KB data space
- Memory-mapped I/O with virtual UART
- Supervisor/user modes with MMU support
- Interrupt handling and system calls
- RISC-like instruction set with 16-bit fixed-width instructions
; Hello World in F00 Assembly
CODEORG 0
START: LOADIMM R0,32767 ; UART address
LOADIMM R1,72 ; 'H'
STORE R1,R0 ; Print character
; ... continue with more characters
JUMPRIMM START ; Loop- Syntax highlighting with line numbers
- Real-time assembly with error reporting
- Step-by-step debugging with register monitoring
- Memory visualization (ROM, RAM, hex dump)
- UART I/O terminal for program interaction
- Single-step execution to trace program flow
- Register monitoring with change highlighting
- Memory inspection in multiple formats
- Symbol table for label/address lookup
- F00 CPU Programmer's Reference - Complete instruction set and architecture guide
- Web IDE User Guide - How to use the development environment
- VHDL Implementation - Synthesizable VHDL translation
MOVE Ra,Rb- Copy register to registerLOAD Ra,Rb- Load from memory address in RaSTORE Ra,Rb- Store to memory address in RbLOADIMM Ra,#imm- Load 16-bit immediate value
ADD Ra,Rb- Add with carry/zero flagsSUB Ra,Rb- Subtract with flagsAND/OR/NOT Ra,Rb- Bitwise operationsSHIFTL/SHIFTR Ra,Rb- Single-bit shifts
JUMPABS Ra- Jump to address in registerJUMPRIMM #offset- Relative jump (-512 to +511)JUMPRIMMC/JUMPRIMMZ- Conditional jumps (carry/zero)SYSCALL- System call (supervisor mode)
- Any modern browser (Chrome, Firefox, Safari, Edge)
- No installation required - runs entirely in browser
- Offline capable - no internet connection needed
- Works on tablets - responsive design
- Xilinx Foundation (for original Abel/VHDL)
- GCC (for original C assembler/simulator)
- Linux/Windows (original development environment)
This is an educational and historical preservation project. Contributions welcome:
- Bug reports for the web IDE or simulator
- Example programs demonstrating F00 capabilities
- Documentation improvements and tutorials
- Tool enhancements (debugger features, optimizations)
- Designer: Jeff Davies (1999)
- License: GNU Public License (see
licence.htm) - Website: Originally hosted at jeff@llandre.freeserve.co.uk
- Web IDE: JavaScript translation of original C tools
- VHDL Translation: Modernized HDL implementation
- Documentation: Comprehensive programmer's reference
- Examples: Educational assembly programs
The F00 CPU represents an important milestone in open-source processor design, predating many modern RISC-V and open hardware initiatives. This project preserves Jeff Davies' pioneering work while making it accessible to modern developers and students.
Ready to start programming? Open web-ide/f00-web-ide.html and begin your F00 CPU journey!
"The F00 CPU - Where embedded processing meets educational excellence"
