izapple2/memoryTracer.go
2024-10-18 23:56:46 +02:00

37 lines
654 B
Go

package izapple2
import (
"fmt"
)
type memoryTracer struct {
memory memoryHandler
name string
}
func traceMemory(memory memoryHandler, name string, trace bool) memoryHandler {
if !trace {
return memory
}
if memory == nil {
return nil
}
return &memoryTracer{
memory: memory,
name: name,
}
}
func (m *memoryTracer) peek(address uint16) uint8 {
value := m.memory.peek(address)
fmt.Printf("Memory %s: peek($%04X) = $%02X\n", m.name, address, value)
return value
}
func (m *memoryTracer) poke(address uint16, value uint8) {
fmt.Printf("Memory %s: poke($%04X, $%02X)\n", m.name, address, value)
m.memory.poke(address, value)
}