--- np2/generic/unasm.c 2004/03/05 04:40:40 1.2 +++ np2/generic/unasm.c 2004/03/07 02:37:40 1.4 @@ -438,13 +438,24 @@ opeana_ea: break; case OP1_FAR: - ptr += 4; - if (ptr > term) { - return(0); + if (!(flag & (1 << UAFLAG_D))) { + ptr += 4; + if (ptr > term) { + return(0); + } + p = set_hex(p, LOADINTELWORD(ptr - 2), 16); + *p++ = ':'; + p = set_hex(p, LOADINTELWORD(ptr - 4), 16); + } + else { + ptr += 6; + if (ptr > term) { + return(0); + } + p = set_hex(p, LOADINTELWORD(ptr - 2), 16); + *p++ = ':'; + p = set_hex(p, LOADINTELDWORD(ptr - 6), 32); } - p = set_hex(p, LOADINTELWORD(ptr - 2), 16); - *p++ = ':'; - p = set_hex(p, LOADINTELWORD(ptr - 4), 16); break; case OP1_I10: @@ -476,7 +487,7 @@ opeana_ea: goto opeana_ea; case OP1_REx: - p = set_reg(p, RSTR_32 + (ope & 7)); + p = set_reg(p, (RSTR_32 << 3) + (ope & 7)); p[0] = ','; p[1] = ' '; p[2] = (char)mnemonic; @@ -493,7 +504,7 @@ opeana_ea: p[3] = ','; p[4] = ' '; p += 5; - p = set_reg(p, RSTR_32 + (ope & 7)); + p = set_reg(p, (RSTR_32 << 3) + (ope & 7)); mnemonic = RSTR_MOV; break;