GitHub - gianlucarea/m68k-interpreter: Bridging retro-computing and modern web development, this project brings the Motorola 68000 (m68k) assembly experience directly to your browser. Built with React 18 and TypeScript, it's a zero-setup, interactive learning environment where students, hobbyists, and computer architecture enthusiasts can write, execute, and debug m68k code in real-time

2 min read Original article ↗

A Motorola 68000 assembly emulator that runs entirely in the browser.
Write, step through, and debug m68k assembly — no installation needed.

→ Live demo

CI Pipeline codecov


Why this exists

Easy68K is the standard tool for learning m68k assembly in university courses. It's Windows-only, requires installation, and hasn't been updated in years. This runs in any browser, on any OS, with zero setup.


Features

  • Step-by-step execution with full undo/redo history
  • Live register viewer and memory inspector
  • Detailed error reporting with line context
  • Preloaded examples covering common patterns
  • Export register and memory state to file

Supported instructions

Data movementMOVE MOVEA MOVEQ MOVEM MOVEP LEA PEA CLR EXG SWAP
Integer arithmeticADD ADDA ADDI ADDQ ADDX SUB SUBA SUBI SUBQ SUBX MULS MULU DIVS DIVU NEG NEGX EXT CLR CMP CMPA CMPI CMPM TST
Logical operationsAND ANDI OR ORI EOR EORI NOT
Shift & rotateASL ASR LSL LSR ROL ROR ROXL ROXR
Bit manipulationBTST BSET BCLR BCHG
CCR operationsANDI to CCR ORI to CCR EORI to CCR MOVE to CCR MOVE from CCR
Program control & branchingBRA BSR Bcc (BHI BLS BCC BCS BNE BEQ BVC BVS BPL BMI BGE BLT BGT BLE) DBcc (DBHI DBLS DBCC DBCS DBNE DBEQ DBVC DBVS DBPL DBMI DBGE DBLT DBGT DBLE DBF DBT) Scc (SHI SLS SCC SCS SNE SEQ SVC SVS SPL SMI SGE SLT SGT SLE SF ST) JMP JSR RTS RTR RTD
System control & exceptionsRESET NOP STOP RTE TRAP TRAPV CHK LINK UNLK MOVE to SR MOVE from SR ORI to SR ANDI to SR EORI to SR TAS


Built with

React 18 · TypeScript · Vite 5 · Zustand · Vitest


Run locally

git clone https://github.com/gianlucarea/m68k-interpreter.git
cd m68k-interpreter
npm install
npm run dev
npm run build        # production build
npm run test         # run tests
npm run lint:fix     # lint and format

For educators

If you teach a course that uses Easy68K, this works as a drop-in browser-based alternative — no student setup required. If you use it in your course and want it listed here, open an issue or send an email.


Acknowledgments

Special thanks to MarkeyJester's Motorola 68000 Beginner's Tutorial — an excellent reference for instruction behavior, cycle times, and assembly fundamentals that informed this implementation.


Contributing

PRs welcome. See CONTRIBUTING.md.

License

MIT