summaryrefslogtreecommitdiff
path: root/Readme.md
blob: 9f2c932e0628c2f6303a56b71ce6d19a91498afa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# MCS51 emulator

## TODO for MVP of MCS51 emulator

- Fully implements ISA of Atmel 8051.
- Seek to implement compatibility with AT89S52.
- Internal Flash ROM (8K to 64K).
- Internal RAM (256 byte).
- External ROM (up to 64K).
- Interrupts support.
- Peripherals:
  - At least one I/O Port (P0)
  - Timer (with interrupts)
  - Serial UART (with interrupts)
- Cycle accurate emulation of program execution with synchronization of all the
  peripherals.
- Can bind execution speed to real host machine time with speed multiplier (e.g.
  1 instruction per second, 1000 cycles per second).
- Every peripheral produces event with information of it's state if it changes.
  CPU produces events on each step while in single step mode or when pause
  occurs.
- Emulator consumes control events for changing peripherals state, controlling
  execution speed or stepping CPU.
- CLI controller.

## TODO Beyond MVP

- Full compatibility with AT89S52.
- CPU step back command and reverse execution for some amount of steps (from few
  to billions).
- TUI controller.
- Comprehensive GUI in web-browser.