/go8051

8051 asm virtual machine by Golang

Primary LanguageGoMIT LicenseMIT

go8051

made-with-Go godoc last-commit Go GoReportCard

8051 asm virtual machine by Golang

Just to learn the hardware

Example

package main

import (
	"log"

	"github.com/ma6254/go8051/asm"
)

var b = []byte{
	0x75, 0x80, 0xAA, // MOV	P0,	#0AAH
	0x00,             // NOP
	0x75, 0x80, 0x55, // MOV	P0,	#055H
	0x80, 0xF7, 0x00, // JMP #F7H
}

func main() {
	m := asm.NewMachine(asm.Frequency10Hz)
	m.ROM = b

	// dump disassembly fakecode string
	s,err := m.DumpFakeCode()
	if err != nil {
		fmt.Printf("%s\n",err)
		return
	}
	fmt.Printf("%s\n", s)

	// add breakpoint and run
	m.Trace(0x00, func(m *asm.Machine) {
		log.Printf("%04X P0: %02X\n", m.PC, m.DATA[asm.P0])
	})
	m.Trace(0x04, func(m *asm.Machine) {
		log.Printf("%04X P0: %02X\n", m.PC, m.DATA[asm.P0])
	})
	m.Trace(0x07, func(m *asm.Machine) {
		log.Printf("%04X R0: %02X\n", m.PC, m.DATA[asm.R0])
	})
	log.Printf("8051 Machine Running")
	m.Start()
}