Skip to content
Branch: master
Go to file

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time


An JavaScript emulation of Motorola 6809 CPU

Used in all emulations at ASM80 online IDE

You can use 6809js also as Node.js or AMD module.


(a.k.a. The API)

  • window.CPU6809 - main object (instantiated at the start - it shall change)
  • CPU6809.init(memoryTo,memoryAt,ticker) - Initializes the whole system. All parameters are callback functions for port / memory access:
    • memoryTo(addr,value) - store byte to given address
    • memoryAt(addr) - read byte from given address
    • ticker(T) - unused now. For future use
  • CPU6809.T() - returns clock ticks count from last init (or reset)
  • CPU6809.reset() - does a CPU reset
  • CPU6809.set(register, value) - sets internal register (named PC, SP, U, A, B, X, Y, DP, FLAGS) to a given value (SP means S, it's for compatibility)
  • CPU6809.status() - Returns a object {pc, sp, u, a, b, x, y, dp, flags} with actual state of internal registers
  • CPU6809.steps(N) - Execute instructions as real CPU, which takes "no less than N" clock ticks.
  • CPU6809.disasm(a, b, c, d, e, pc) - Disassembler. Takes 5 successive values (the longest 6809 opcode takes 5 bytes) and value of program counter (for evaluating relative jumps). Returns array of two values - mnemo code and instruction length in bytes, eg. ["TFR X,S",2].


6809js is slightly tested with qUnit - just a basic functionality at this moment


  • full interrupts support
  • full CWAI emulation
  • HD6309 extended mode


Become a Patron!

You can’t perform that action at this time.