public void handler() {
            int/*UINT8*/ msn, lsn;
            int/*UINT16*/ t, cf = 0;
            msn = m6800.a & 0xf0;
            lsn = m6800.a & 0x0f;
            if (lsn > 0x09 || (m6800.cc & 0x20) != 0) {
                cf |= 0x06;
            }
            if (msn > 0x80 && lsn > 0x09) {
                cf |= 0x60;
            }
            if (msn > 0x90 || (m6800.cc & 0x01) != 0) {
                cf |= 0x60;
            }
            t = cf + m6800.a;
            CLR_NZV(); /* keep carry from previous operation */

            SET_NZ8(/*(UINT8)*/t & 0xFF);
            SET_C8(t);
            m6800.a = t & 0xFF;
        }