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