A JavaScript-based computer emulator focusing on ARM Thumb instruction set implementation. This project provides core components (CPU, RAM, ROM, DMA, UART) for building hardware emulators in the browser.
This emulator provides a foundation for building ARM Thumb-based computer systems in the browser. The core components are designed to work together via a common bus interface, allowing flexible hardware configurations.
Key features:
- Bus-based architecture connects all peripherals and CPUs
- Implements RAM and ROM storage
- Includes DMA controller for memory management
- Supports serial communication (UART)
- Designed for ARM Thumb instruction set emulation
The system is built around several core components:
- Handles address decoding and device discovery
- Routes read/write operations to the appropriate peripherals
- Core.js/src/bus.js
- RAM: Dynamic memory with bounds checking (src/ram.js)
- ROM: Read-only storage with validation (src/rom.js)
- Examples of C code used to interact with the block_input/block_output operations is available in usage_examples/