func (t *Timer) AddTo(em *emulator.Emulator) { t.em = em em.RegisterPortByName(fmt.Sprintf("TCCR%dA", t.digit), tccra{t}) em.RegisterPortByName(fmt.Sprintf("TCCR%dB", t.digit), tccrb{t}) em.RegisterPortByName(fmt.Sprintf("TCNT%d", t.digit), tcnt{t}) em.RegisterPortByName(fmt.Sprintf("OCR%dA", t.digit), ocra{t}) em.RegisterPortByName(fmt.Sprintf("OCR%dB", t.digit), ocrb{t}) em.RegisterPortByName(fmt.Sprintf("TIMSK%d", t.digit), timsk{t}) em.RegisterPortByName(fmt.Sprintf("TIFR%d", t.digit), tifr{t}) }
// Load parses an IHEX file from r and loads the program data contained in // it into em. func Load(em *emulator.Emulator, r io.Reader) (err error) { dec := ihex.NewDecoder(r) buf := make([]uint16, 0, 8) for dec.Scan() { rec := dec.Record() if rec.Type == ihex.Data { buf = buf[:0] for i := 0; i+1 < len(rec.Data); i += 2 { lo := uint16(rec.Data[i]) hi := uint16(rec.Data[i+1]) buf = append(buf, (hi<<8)|lo) } em.WriteProg(rec.Address>>1, buf) } } return dec.Err() }
func (g *GPIO) AddTo(em *emulator.Emulator) { em.RegisterPortByName(fmt.Sprintf("PORT%c", g.letter), port{g}) em.RegisterPortByName(fmt.Sprintf("DDR%c", g.letter), ddr{g}) em.RegisterPortByName(fmt.Sprintf("PIN%c", g.letter), pin{g}) }