/* This file is in the public domain. */ #define NEED_EXTERN #include "instrtbl.h" #include "pdp11.h" #include "disas.h" #include "deftbl.h" static int adjust_adjacent(int dtx, INSTR_OPS opfwant) { int dtx2; for (dtx2=dtx;(dtx2>=0)&&(instr_defs[dtx2].value==instr_defs[dtx].value);dtx2--) if (instr_defs[dtx2].ops_format == opfwant) return(dtx2); for (dtx2=dtx;(dtx2>6); put(','); nw ++; nw += disas_g(inst,&pctemp); break; case OPS_G0_R6: nw += disas_g(inst,&pctemp); put(','); nw ++; nw += disas_r(inst>>6); break; case OPS_G6_G0: nw += disas_g(inst>>6,&pctemp); put(','); nw ++; nw += disas_g(inst,&pctemp); break; case OPS_R6_B60: nw += disas_r(inst>>6); put(','); nw ++; put_6(pctemp-((inst&077)<<1)); nw += 6; break; case OPS_O80: put_3(inst); nw += 3; break; case OPS_O60: put_2(inst); nw += 2; break; case OPS_F0: case OPS_D0: nw += disas_f(inst,&pctemp); break; case OPS_FA6_F0: case OPS_FA6_D0: nw += disas_fr((inst>>6)&3); put(','); nw ++; nw += disas_f(inst,&pctemp); break; case OPS_F0_FA6: case OPS_D0_FA6: nw += disas_f(inst,&pctemp); put(','); nw ++; nw += disas_fr((inst>>6)&3); break; case OPS_FA6_G0: nw += disas_fr((inst>>6)&3); put(','); nw ++; nw += disas_g(inst,&pctemp); break; case OPS_G0_FA6: nw += disas_g(inst,&pctemp); put(','); nw ++; nw += disas_fr((inst>>6)&3); break; default: bugchk("bad ops_format %d",(int)instr_defs[dtx].ops_format); break; } put(' '); nw ++; for (;nw<24;nw++) put(' '); for (;nw%8;nw++) put(' '); for (a=addr;a!=pctemp;a=(a+2)&0xffff) { put((a==addr)?'[':' '); put_6(fetchword(a,MMAN_ISPACE)); } put(']'); } return((pctemp-addr)&0xffff); }