@Override
    public void reset(Object param) {
        SEI();				/* IRQ disabled */

        m6800.pc = RM16(0xfffe);
        CHANGE_PC();

        /* HJB 990417 set CPU subtype (other reset functions override this) */
//	m6800.subtype   = SUBTYPE_M6800;
        m6800.insn = m6800_insn;
        m6800.cycles = cycles_6800;

        m6800.wai_state = 0;
        m6800.nmi_state = 0;
        m6800.irq_state[M6800_IRQ_LINE] = 0;
        m6800.irq_state[M6800_TIN_LINE] = 0;
        m6800.ic_eddge = 0;

        m6800.port1_ddr = 0x00;
        m6800.port2_ddr = 0x00;
        /* TODO: on reset port 2 should be read to determine the operating mode (bits 0-2) */
        m6800.tcsr = 0x00;
        m6800.pending_tcsr = 0x00;
        m6800.irq2 = 0;
        m6800.counter.SetD(0x0000);
        m6800.output_compare.SetD(0xffff);
        m6800.timer_over.SetD(0xffff);
        m6800.ram_ctrl |= 0x40;
    }