Annotation of researchv10no/cmd/adb/seq/das.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * print an instruction
        !             3:  */
        !             4: 
        !             5: #include "defs.h"
        !             6: 
        !             7: typedef        unsigned char uchar;
        !             8: typedef        unsigned short ushort;
        !             9: typedef        unsigned long ulong;
        !            10: static ADDR    p;
        !            11: static int     isp;
        !            12: long   ddisp();
        !            13: 
        !            14: #define        IHEX    0       /* give up */
        !            15: #define        IDISP   1       /* 1 displacement op */
        !            16: #define        IFF     2       /* float, float */
        !            17: #define        IIF     3       /* int, float */
        !            18: #define        IFI     4       /* float, int */
        !            19: #define        III     5       /* int, int */
        !            20: #define        III3    6       /* int, int; 3 byte instr */
        !            21: #define        II      7       /* int */
        !            22: #define        IMD     8       /* enter: reg mask, disp */
        !            23: #define        IN      9       /* exit, restore: rev reg mask */
        !            24: #define        IQI     10      /* quick, int */
        !            25: #define        IIID3   11      /* int, int, disp; 3 byte instr */
        !            26: #define        INONE   12      /* no operands */
        !            27: #define        IDPC    13      /* pc-relative displacement */
        !            28: #define        II3     14      /* int; 3 byte */
        !            29: #define        IRII    15      /* reg, int, int */
        !            30: #define        IRIID   16      /* reg, int, int, disp */
        !            31: #define        IM      17      /* reg mask (save) */
        !            32: #define        IDMOD   18      /* disp which is really a module number */
        !            33: #define        INONE3  19      /* 3-byte no-operand (string stuff) */
        !            34: #define        II3X    20      /* 3 byte 1 operand sort of (sfsr) */
        !            35: #define        IMR     21      /* mem mgt instructions */
        !            36: #define        IPR     22      /* preg instructions */
        !            37: #define        ICFG    23      /* setcfg */
        !            38: 
        !            39: static
        !            40: struct
        !            41: {
        !            42:        uchar   f;
        !            43:        ushort  m;
        !            44:        ushort  v;
        !            45:        char    *s;
        !            46: } t[] = {
        !            47: /* begin */
        !            48:        III3, 0x3fff, 0x304e, "absb",
        !            49:        III3, 0x3fff, 0x334e, "absd",
        !            50:        IFF, 0x3fff, 0x35be, "absf",
        !            51:        IFF, 0x3fff, 0x34be, "absl",
        !            52:        III3, 0x3fff, 0x314e, "absw",
        !            53:        IQI, 0x3f, 0x4c, "acbb",
        !            54:        IQI, 0x3f, 0x4d, "acbw",
        !            55:        IQI, 0x3f, 0x4f, "acbd",
        !            56:        III, 0x3f, 0x00, "addb",
        !            57:        III, 0x3f, 0x01, "addw",
        !            58:        III, 0x3f, 0x03, "addd",
        !            59:        III, 0x3f, 0x10, "addcb",
        !            60:        III, 0x3f, 0x13, "addcd",
        !            61:        III, 0x3f, 0x11, "addcw",
        !            62:        IFF, 0x3fff, 0x01be, "addf",
        !            63:        IFF, 0x3fff, 0x00be, "addl",
        !            64:        III3, 0x3fff, 0x3c4e, "addpb",
        !            65:        III3, 0x3fff, 0x3f4e, "addpd",
        !            66:        III3, 0x3fff, 0x3d4e, "addpw",
        !            67:        IQI, 0x3f, 0x0c, "addqb",
        !            68:        IQI, 0x3f, 0x0d, "addqw",
        !            69:        IQI, 0x3f, 0x0f, "addqd",
        !            70:        III, 0x3f, 0x24, "addrb",
        !            71:        III, 0x3f, 0x27, "addrd",
        !            72:        III, 0x3f, 0x25, "addrw",
        !            73:        II, 0x7ff, 0x57c, "adjspb",
        !            74:        II, 0x7ff, 0x57f, "adjspd",
        !            75:        II, 0x7ff, 0x57d, "adjspw",
        !            76:        III, 0x3f, 0x28, "andb",
        !            77:        III, 0x3f, 0x2b, "andd",
        !            78:        III, 0x3f, 0x29, "andw",
        !            79:        III3, 0x3fff, 0x044e, "ashb",
        !            80:        III3, 0x3fff, 0x074e, "ashd",
        !            81:        III3, 0x3fff, 0x054e, "ashw",
        !            82:        IDPC, 0xff, 0x3a, "bcc",
        !            83:        IDPC, 0xff, 0x2a, "bcs",
        !            84:        IDPC, 0xff, 0x0a, "beq",
        !            85:        IDPC, 0xff, 0x1a, "bne",
        !            86:        IDPC, 0xff, 0x9a, "bfc",
        !            87:        IDPC, 0xff, 0x8a, "bfs",
        !            88:        IDPC, 0xff, 0xda, "bge",
        !            89:        IDPC, 0xff, 0x6a, "bgt",
        !            90:        IDPC, 0xff, 0x4a, "bhi",
        !            91:        IDPC, 0xff, 0xba, "bhs",
        !            92:        IDPC, 0xff, 0x5a, "bls",
        !            93:        IDPC, 0xff, 0x7a, "ble",
        !            94:        IDPC, 0xff, 0xaa, "blo",
        !            95:        IDPC, 0xff, 0xca, "blt",
        !            96:        III, 0x3f, 0x08, "bicb",
        !            97:        III, 0x3f, 0x09, "bicw",
        !            98:        III, 0x3f, 0x0b, "bicd",
        !            99:        II, 0x3ff, 0x17c, "bicpsrb",
        !           100:        II, 0x3ff, 0x17d, "bicpsrw",
        !           101:        II, 0x3ff, 0x37c, "bispsrb",
        !           102:        II, 0x3ff, 0x37d, "bispsrw",
        !           103:        INONE, 0xff, 0xf2, "bpt",
        !           104:        IDPC, 0xff, 0xea, "br",
        !           105:        IDPC, 0xff, 0x02, "bsr",
        !           106:        II, 0x7ff, 0x77c, "caseb",
        !           107:        II, 0x7ff, 0x77d, "casew",
        !           108:        II, 0x7ff, 0x77f, "cased",
        !           109:        III3, 0x3fff, 0x084e, "cbitb",
        !           110:        III3, 0x3fff, 0x0b4e, "cbitd",
        !           111:        III3, 0x3fff, 0x0c4e, "cbitib",
        !           112:        III3, 0x3fff, 0x0f4e, "cbitid",
        !           113:        III3, 0x3fff, 0x0d4e, "cbitiw",
        !           114:        III3, 0x3fff, 0x094e, "cbitw",
        !           115:        IRII, 0x7ff, 0x0ee, "checkb",
        !           116:        IRII, 0x7ff, 0x1ee, "checkw",
        !           117:        IRII, 0x7ff, 0x3ee, "checkd",
        !           118:        III, 0x3f, 0x04, "cmpb",
        !           119:        III, 0x3f, 0x05, "cmpw",
        !           120:        III, 0x3f, 0x07, "cmpd",
        !           121:        IFF, 0x3fff, 0x09be, "cmpf",
        !           122:        IFF, 0x3fff, 0x08be, "cmpl",
        !           123:        IIID3, 0x3fff, 0x04ce, "cmpmb",
        !           124:        IIID3, 0x3fff, 0x05ce, "cmpmw",
        !           125:        IIID3, 0x3fff, 0x07ce, "cmpmd",
        !           126:        IQI, 0x7f, 0x1c, "cmpqb",
        !           127:        IQI, 0x7f, 0x1d, "cmpqw",
        !           128:        IQI, 0x7f, 0x1f, "cmpqd",
        !           129:        INONE3, 0xffffff, 0x00040e, "cmpsb",
        !           130:        INONE3, 0xffffff, 0x00050e, "cmpsw",
        !           131:        INONE3, 0xffffff, 0x00070e, "cmpsd",
        !           132:        INONE3, 0xffffff, 0x00840e, "cmpst",
        !           133:        INONE3, 0xffffff, 0x01040e, "cmpsbb",
        !           134:        INONE3, 0xffffff, 0x01050e, "cmpswb",
        !           135:        INONE3, 0xffffff, 0x01070e, "cmpsdb",
        !           136:        INONE3, 0xffffff, 0x01840e, "cmpstb",
        !           137:        INONE3, 0xffffff, 0x02040e, "cmpsbw",
        !           138:        INONE3, 0xffffff, 0x02050e, "cmpsww",
        !           139:        INONE3, 0xffffff, 0x02070e, "cmpsdw",
        !           140:        INONE3, 0xffffff, 0x02840e, "cmpstw",
        !           141:        INONE3, 0xffffff, 0x03040e, "cmpsbbw",
        !           142:        INONE3, 0xffffff, 0x03050e, "cmpswbw",
        !           143:        INONE3, 0xffffff, 0x03070e, "cmpsdbw",
        !           144:        INONE3, 0xffffff, 0x03840e, "cmpstbw",
        !           145:        INONE3, 0xffffff, 0x06040e, "cmpsbu",
        !           146:        INONE3, 0xffffff, 0x06050e, "cmpswu",
        !           147:        INONE3, 0xffffff, 0x06070e, "cmpsdu",
        !           148:        INONE3, 0xffffff, 0x06840e, "cmpstu",
        !           149:        INONE3, 0xffffff, 0x07040e, "cmpsbbu",
        !           150:        INONE3, 0xffffff, 0x07050e, "cmpswbu",
        !           151:        INONE3, 0xffffff, 0x07070e, "cmpsdbu",
        !           152:        INONE3, 0xffffff, 0x07840e, "cmpstbu",
        !           153:        III3, 0x3fff, 0x344e, "comb",
        !           154:        III3, 0x3fff, 0x374e, "comd",
        !           155:        III3, 0x3fff, 0x354e, "comw",
        !           156:        IRII, 0x7ff, 0x36e, "cvtp",
        !           157:        IDMOD, 0xff, 0x22, "cxp",
        !           158:        II, 0x3ff, 0x07f, "cxpd",
        !           159:        III3, 0x3fff, 0x2cce, "deib",
        !           160:        III3, 0x3fff, 0x2dce, "deiw",
        !           161:        III3, 0x3fff, 0x2dce, "deid",
        !           162:        INONE, 0xff, 0xc2, "dia",
        !           163:        III3, 0x3fff, 0x3cce, "divb",
        !           164:        III3, 0x3fff, 0x3fce, "divd",
        !           165:        IFF, 0x3fff, 0x21be, "divf",
        !           166:        IFF, 0x3fff, 0x20be, "divl",
        !           167:        III3, 0x3fff, 0x3dce, "divw",
        !           168:        IMD, 0xff, 0x82, "enter",
        !           169:        IN, 0xff, 0x92, "exit",
        !           170:        IRIID, 0x7ff, 0x02e, "extb",
        !           171:        IRIID, 0x7ff, 0x12e, "extw",
        !           172:        IRIID, 0x7ff, 0x32e, "extd",
        !           173:        III3, 0x3fff, 0x0cce, "extsb",
        !           174:        III3, 0x3fff, 0x0dce, "extsw",
        !           175:        III3, 0x3fff, 0x0fce, "extsd",
        !           176:        III3, 0x3fff, 0x046e, "ffsb",
        !           177:        III3, 0x3fff, 0x056e, "ffsw",
        !           178:        III3, 0x3fff, 0x076e, "ffsd",
        !           179:        INONE, 0xff, 0xd2, "flag",
        !           180:        IFI, 0x3fff, 0x3c3e, "floorfb",
        !           181:        IFI, 0x3fff, 0x3f3e, "floorfd",
        !           182:        IFI, 0x3fff, 0x3d3e, "floorfw",
        !           183:        IFI, 0x3fff, 0x383e, "floorlb",
        !           184:        IFI, 0x3fff, 0x3b3e, "floorld",
        !           185:        IFI, 0x3fff, 0x393e, "floorlw",
        !           186:        III3, 0x3fff, 0x384e, "ibitb",
        !           187:        III3, 0x3fff, 0x3b4e, "ibitd",
        !           188:        III3, 0x3fff, 0x394e, "ibitw",
        !           189:        IRII, 0x7ff, 0x42e, "indexb",
        !           190:        IRII, 0x7ff, 0x52e, "indexw",
        !           191:        IRII, 0x7ff, 0x72e, "indexd",
        !           192:        IRIID, 0x7ff, 0x0ae, "insb",
        !           193:        IRIID, 0x7ff, 0x1ae, "insw",
        !           194:        IRIID, 0x7ff, 0x3ae, "insd",
        !           195:        III3, 0x3fff, 0x08ce, "inssb",
        !           196:        III3, 0x3fff, 0x09ce, "inssw",
        !           197:        III3, 0x3fff, 0x0bce, "inssd",
        !           198:        II, 0x7ff, 0x67f, "jsr",
        !           199:        II, 0x3ff, 0x27f, "jump",
        !           200:        II3, 0x7ffff, 0x00f3e, "lfsr",
        !           201:        IMR, 0x7fff, 0x0b1e, "lmr",
        !           202:        IPR, 0x7f, 0x6c, "lprb",
        !           203:        IPR, 0x7f, 0x6d, "lprw",
        !           204:        IPR, 0x7f, 0x6f, "lprd",
        !           205:        III3, 0x3fff, 0x144e, "lshb",
        !           206:        III3, 0x3fff, 0x174e, "lshd",
        !           207:        III3, 0x3fff, 0x154e, "lshw",
        !           208:        III3, 0x3ff, 0x24ce, "meib",
        !           209:        III3, 0x3ff, 0x25ce, "meiw",
        !           210:        III3, 0x3ff, 0x27ce, "meid",
        !           211:        III3, 0x3fff, 0x38ce, "modb",
        !           212:        III3, 0x3fff, 0x3bce, "modd",
        !           213:        III3, 0x3fff, 0x39ce, "modw",
        !           214:        III, 0x3f, 0x14, "movb",
        !           215:        IIF, 0x3fff, 0x043e, "movbf",
        !           216:        IIF, 0x3fff, 0x003e, "movbl",
        !           217:        III, 0x3f, 0x17, "movd",
        !           218:        IIF, 0x3fff, 0x073e, "movdf",
        !           219:        IIF, 0x3fff, 0x033e, "movdl",
        !           220:        IFF, 0x3fff, 0x05be, "movf",
        !           221:        IIF, 0x3fff, 0x1b3e, "movfl",
        !           222:        IFF, 0x3fff, 0x04be, "movl",
        !           223:        IIF, 0x3fff, 0x163e, "movlf",
        !           224:        III, 0x3f, 0x15, "movw",
        !           225:        IIF, 0x3fff, 0x053e, "movwf",
        !           226:        IIF, 0x3fff, 0x013e, "movwl",
        !           227:        III3, 0x3fff, 0x1cce, "movxbd",
        !           228:        III3, 0x3fff, 0x10ce, "movxbw",
        !           229:        III3, 0x3fff, 0x1dce, "movxwd",
        !           230:        III3, 0x3fff, 0x18ce, "movzbd",
        !           231:        III3, 0x3fff, 0x14ce, "movzbw",
        !           232:        III3, 0x3fff, 0x19ce, "movzwd",
        !           233:        III3, 0x3fff, 0x00ce, "movmb",
        !           234:        III3, 0x3fff, 0x01ce, "movmw",
        !           235:        III3, 0x3fff, 0x03ce, "movmd",
        !           236:        IQI, 0x7f, 0x5c, "movqb",
        !           237:        IQI, 0x7f, 0x5d, "movqw",
        !           238:        IQI, 0x7f, 0x5f, "movqd",
        !           239:        INONE3, 0xffffff, 0x00000e, "movsb",
        !           240:        INONE3, 0xffffff, 0x00010e, "movsw",
        !           241:        INONE3, 0xffffff, 0x00030e, "movsd",
        !           242:        INONE3, 0xffffff, 0x00800e, "movst",
        !           243:        INONE3, 0xffffff, 0x01000e, "movsbb",
        !           244:        INONE3, 0xffffff, 0x01010e, "movswb",
        !           245:        INONE3, 0xffffff, 0x01030e, "movsdb",
        !           246:        INONE3, 0xffffff, 0x01800e, "movstb",
        !           247:        INONE3, 0xffffff, 0x02000e, "movsbw",
        !           248:        INONE3, 0xffffff, 0x02010e, "movsww",
        !           249:        INONE3, 0xffffff, 0x02030e, "movsdw",
        !           250:        INONE3, 0xffffff, 0x02800e, "movstw",
        !           251:        INONE3, 0xffffff, 0x03000e, "movsbbw",
        !           252:        INONE3, 0xffffff, 0x03010e, "movswbw",
        !           253:        INONE3, 0xffffff, 0x03030e, "movsdbw",
        !           254:        INONE3, 0xffffff, 0x03800e, "movstbw",
        !           255:        INONE3, 0xffffff, 0x06000e, "movsbu",
        !           256:        INONE3, 0xffffff, 0x06010e, "movswu",
        !           257:        INONE3, 0xffffff, 0x06030e, "movsdu",
        !           258:        INONE3, 0xffffff, 0x06800e, "movstu",
        !           259:        INONE3, 0xffffff, 0x07000e, "movsbbu",
        !           260:        INONE3, 0xffffff, 0x07010e, "movswbu",
        !           261:        INONE3, 0xffffff, 0x07030e, "movsdbu",
        !           262:        INONE3, 0xffffff, 0x07800e, "movstbu",
        !           263:        III3, 0x3fff, 0x0cae, "movsub",
        !           264:        III3, 0x3fff, 0x0dae, "movsuw",
        !           265:        III3, 0x3fff, 0x0fae, "movsud",
        !           266:        III3, 0x3fff, 0x1cae, "movusb",
        !           267:        III3, 0x3fff, 0x1dae, "movusw",
        !           268:        III3, 0x3fff, 0x1fae, "movusd",
        !           269:        III3, 0x3fff, 0x20ce, "mulb",
        !           270:        III3, 0x3fff, 0x23ce, "muld",
        !           271:        IFF, 0x3fff, 0x31be, "mulf",
        !           272:        IFF, 0x3fff, 0x30be, "mull",
        !           273:        III3, 0x3fff, 0x21ce, "mulw",
        !           274:        III3, 0x3fff, 0x204e, "negb",
        !           275:        III3, 0x3fff, 0x234e, "negd",
        !           276:        IFF, 0x3fff, 0x15be, "negf",
        !           277:        IFF, 0x3fff, 0x14be, "negl",
        !           278:        III3, 0x3fff, 0x214e, "negw",
        !           279:        INONE, 0xff, 0xa2, "nop",
        !           280:        III3, 0x3fff, 0x244e, "notb",
        !           281:        III3, 0x3fff, 0x274e, "notd",
        !           282:        III3, 0x3fff, 0x254e, "notw",
        !           283:        III, 0x3f, 0x18, "orb",
        !           284:        III, 0x3f, 0x1b, "ord",
        !           285:        III, 0x3f, 0x19, "orw",
        !           286:        III3, 0x3fff, 0x30ce, "quob",
        !           287:        III3, 0x3fff, 0x33ce, "quod",
        !           288:        III3, 0x3fff, 0x31ce, "quow",
        !           289:        II3, 0x7ffff, 0x0031e, "rdval",
        !           290:        III3, 0x3fff, 0x34ce, "remb",
        !           291:        III3, 0x3fff, 0x37ce, "remd",
        !           292:        III3, 0x3fff, 0x35ce, "remw",
        !           293:        IN, 0xff, 0x72, "restore",
        !           294:        IDISP, 0xff, 0x12, "ret",
        !           295:        INONE, 0xff, 0x52, "reti",
        !           296:        INONE, 0xff, 0x42, "rett",
        !           297:        III3, 0x3fff, 0x004e, "rotb",
        !           298:        III3, 0x3fff, 0x034e, "rotd",
        !           299:        III3, 0x3fff, 0x014e, "rotw",
        !           300:        IFI, 0x3fff, 0x243e, "roundfb",
        !           301:        IFI, 0x3fff, 0x273e, "roundfd",
        !           302:        IFI, 0x3fff, 0x253e, "roundfw",
        !           303:        IFI, 0x3fff, 0x203e, "roundlb",
        !           304:        IFI, 0x3fff, 0x233e, "roundld",
        !           305:        IFI, 0x3fff, 0x213e, "roundlw",
        !           306:        IDISP, 0xff, 0x32, "rxp",
        !           307:        II, 0x7ff, 0x1bc, "sccb",
        !           308:        II, 0x7ff, 0x1bf, "sccd",
        !           309:        II, 0x7ff, 0x1bd, "sccw",
        !           310:        II, 0x7ff, 0x13c, "scsb",
        !           311:        II, 0x7ff, 0x13f, "scsd",
        !           312:        II, 0x7ff, 0x13d, "scsw",
        !           313:        II, 0x7ff, 0x03c, "seqb",
        !           314:        II, 0x7ff, 0x03f, "seqd",
        !           315:        II, 0x7ff, 0x03d, "seqw",
        !           316:        II, 0x7ff, 0x4bc, "sfcb",
        !           317:        II, 0x7ff, 0x4bf, "sfcd",
        !           318:        II, 0x7ff, 0x4bd, "sfcw",
        !           319:        II, 0x7ff, 0x43c, "sfsb",
        !           320:        II, 0x7ff, 0x43f, "sfsd",
        !           321:        II, 0x7ff, 0x43d, "sfsw",
        !           322:        II, 0x7ff, 0x6bc, "sgeb",
        !           323:        II, 0x7ff, 0x6bf, "sged",
        !           324:        II, 0x7ff, 0x6bd, "sgew",
        !           325:        II, 0x7ff, 0x33c, "sgtb",
        !           326:        II, 0x7ff, 0x33f, "sgtd",
        !           327:        II, 0x7ff, 0x33d, "sgtw",
        !           328:        II, 0x7ff, 0x23c, "shib",
        !           329:        II, 0x7ff, 0x23f, "shid",
        !           330:        II, 0x7ff, 0x23d, "shiw",
        !           331:        II, 0x7ff, 0x5bc, "shsb",
        !           332:        II, 0x7ff, 0x5bf, "shsd",
        !           333:        II, 0x7ff, 0x5bd, "shsw",
        !           334:        II, 0x7ff, 0x3bc, "sleb",
        !           335:        II, 0x7ff, 0x3bf, "sled",
        !           336:        II, 0x7ff, 0x3bd, "slew",
        !           337:        II, 0x7ff, 0x53c, "slob",
        !           338:        II, 0x7ff, 0x53f, "slod",
        !           339:        II, 0x7ff, 0x53d, "slow",
        !           340:        II, 0x7ff, 0x2bc, "slsb",
        !           341:        II, 0x7ff, 0x2bf, "slsd",
        !           342:        II, 0x7ff, 0x2bd, "slsw",
        !           343:        II, 0x7ff, 0x63c, "sltb",
        !           344:        II, 0x7ff, 0x63f, "sltd",
        !           345:        II, 0x7ff, 0x63d, "sltw",
        !           346:        II, 0x7ff, 0x0bc, "sneb",
        !           347:        II, 0x7ff, 0x0bf, "sned",
        !           348:        II, 0x7ff, 0x0bd, "snew",
        !           349:        IM, 0xff, 0x62, "save",
        !           350:        III3, 0x3fff, 0x184e, "sbitb",
        !           351:        III3, 0x3fff, 0x1b4e, "sbitd",
        !           352:        III3, 0x3fff, 0x1c4e, "sbitib",
        !           353:        III3, 0x3fff, 0x1f4e, "sbitid",
        !           354:        III3, 0x3fff, 0x1d4e, "sbitiw",
        !           355:        III3, 0x3fff, 0x194e, "sbitw",
        !           356:        ICFG, 0xf87fff, 0x000b0e, "setcfg",
        !           357:        II3X, 0xf83fff, 0x00373e, "sfsr",
        !           358:        INONE3, 0xffffff, 0x000c0e, "skpsb",
        !           359:        INONE3, 0xffffff, 0x000d0e, "skpsw",
        !           360:        INONE3, 0xffffff, 0x000f0e, "skpsd",
        !           361:        INONE3, 0xffffff, 0x008c0e, "skpst",
        !           362:        INONE3, 0xffffff, 0x010c0e, "skpsbb",
        !           363:        INONE3, 0xffffff, 0x010d0e, "skpswb",
        !           364:        INONE3, 0xffffff, 0x010f0e, "skpsdb",
        !           365:        INONE3, 0xffffff, 0x018c0e, "skpstb",
        !           366:        INONE3, 0xffffff, 0x020c0e, "skpsbw",
        !           367:        INONE3, 0xffffff, 0x020d0e, "skpsww",
        !           368:        INONE3, 0xffffff, 0x020f0e, "skpsdw",
        !           369:        INONE3, 0xffffff, 0x028c0e, "skpstw",
        !           370:        INONE3, 0xffffff, 0x030c0e, "skpsbbw",
        !           371:        INONE3, 0xffffff, 0x030d0e, "skpswbw",
        !           372:        INONE3, 0xffffff, 0x030f0e, "skpsdbw",
        !           373:        INONE3, 0xffffff, 0x038c0e, "skpstbw",
        !           374:        INONE3, 0xffffff, 0x060c0e, "skpsbu",
        !           375:        INONE3, 0xffffff, 0x060d0e, "skpswu",
        !           376:        INONE3, 0xffffff, 0x060f0e, "skpsdu",
        !           377:        INONE3, 0xffffff, 0x068c0e, "skpstu",
        !           378:        INONE3, 0xffffff, 0x070c0e, "skpsbbu",
        !           379:        INONE3, 0xffffff, 0x070d0e, "skpswbu",
        !           380:        INONE3, 0xffffff, 0x070f0e, "skpsdbu",
        !           381:        INONE3, 0xffffff, 0x078c0e, "skpstbu",
        !           382:        IMR, 0x7fff, 0x0f1e, "smr",
        !           383:        IPR, 0x7f, 0x2c, "sprb",
        !           384:        IPR, 0x7f, 0x2d, "sprw",
        !           385:        IPR, 0x7f, 0x2f, "sprd",
        !           386:        III, 0x3f, 0x20, "subb",
        !           387:        III, 0x3f, 0x30, "subcb",
        !           388:        III, 0x3f, 0x33, "subcd",
        !           389:        III, 0x3f, 0x31, "subcw",
        !           390:        III, 0x3f, 0x23, "subd",
        !           391:        IFF, 0x3fff, 0x11be, "subf",
        !           392:        IFF, 0x3fff, 0x10be, "subl",
        !           393:        III3, 0x3fff, 0x2c4e, "subpb",
        !           394:        III3, 0x3fff, 0x2f4e, "subpd",
        !           395:        III3, 0x3fff, 0x2d4e, "subpw",
        !           396:        III, 0x3f, 0x21, "subw",
        !           397:        INONE, 0xff, 0xe2, "svc",
        !           398:        III, 0x3f, 0x34, "tbitb",
        !           399:        III, 0x3f, 0x37, "tbitd",
        !           400:        III, 0x3f, 0x35, "tbitw",
        !           401:        IFI, 0x3fff, 0x2c3e, "truncfb",
        !           402:        IFI, 0x3fff, 0x2f3e, "truncfd",
        !           403:        IFI, 0x3fff, 0x2d3e, "truncfw",
        !           404:        IFI, 0x3fff, 0x283e, "trunclb",
        !           405:        IFI, 0x3fff, 0x2b3e, "truncld",
        !           406:        IFI, 0x3fff, 0x293e, "trunclw",
        !           407:        INONE, 0xff, 0xb2, "wait",
        !           408:        II3, 0x7ffff, 0x0071e, "wrval",
        !           409:        III, 0x3f, 0x38, "xorb",
        !           410:        III, 0x3f, 0x3b, "xord",
        !           411:        III, 0x3f, 0x39, "xorw",
        !           412: /* end */
        !           413:        IHEX, 0x0, 0x0, "hex",
        !           414: };
        !           415: 
        !           416: printins(asp)
        !           417: int asp;
        !           418: {
        !           419:        register long o;
        !           420:        register i, f;
        !           421:        ADDR orig;
        !           422: 
        !           423:        isp = asp;
        !           424:        o = ltow(lget(dot, asp));
        !           425:        p = dot;
        !           426:        orig = dot;
        !           427:        for(i=0; t[i].f; i++)
        !           428:                if((o&t[i].m) == t[i].v)
        !           429:                        break;
        !           430:        printf("%s      ", t[i].s);
        !           431:        switch(t[i].f) {
        !           432:        case IHEX:
        !           433:                p += 1;
        !           434:                printf("%02x", o & 0377);
        !           435:                break;
        !           436: 
        !           437:        case INONE:
        !           438:                p += 1;
        !           439:                break;
        !           440: 
        !           441:        case INONE3:
        !           442:                p += 3;
        !           443:                break;
        !           444: 
        !           445:        case IDISP:
        !           446:                p += 1;
        !           447:                psymoff((WORD)ddisp(), isp, "");
        !           448:                break;
        !           449: 
        !           450:        case IDMOD:
        !           451:                p += 1;
        !           452:                psymoff((WORD)mtotext(ddisp(), isp), isp, "");
        !           453:                break;
        !           454: 
        !           455:        case IDPC:
        !           456:                p += 1;
        !           457:                psymoff((WORD)(ddisp()+dot), isp, "");
        !           458:                break;
        !           459: 
        !           460:        case IFF:
        !           461:                p += 3;
        !           462:                f = (o>>8)|2;
        !           463:                addr2((int)(o>>14), f, f);
        !           464:                break;
        !           465: 
        !           466:        case IIF:
        !           467:                p += 3;
        !           468:                i = (o>>8);
        !           469:                f = (o>>10)|2;
        !           470:                addr2((int)(o>>14), i, f);
        !           471:                break;
        !           472: 
        !           473:        case IFI:
        !           474:                p += 3;
        !           475:                i = (o>>8);
        !           476:                f = (o>>10)|2;
        !           477:                addr2((int)(o>>14), f, i);
        !           478:                break;
        !           479: 
        !           480:        case III:
        !           481:                p += 2;
        !           482:                i = o;
        !           483:                addr2((int)(o>>6), i, i);
        !           484:                break;
        !           485: 
        !           486:        case III3:
        !           487:                p += 3;
        !           488:                i = (o>>8);
        !           489:                addr2((int)(o>>14), i, i);
        !           490:                break;
        !           491: 
        !           492:        case IIID3:
        !           493:                p += 3;
        !           494:                i = (o>>8);
        !           495:                addr2((int)(o>>14), i, i);
        !           496:                printf(",%r", ddisp());
        !           497:                break;
        !           498: 
        !           499:        case II:
        !           500:                p += 2;
        !           501:                i = o;
        !           502:                dgen((int)(o>>11), i, -1);
        !           503:                break;
        !           504: 
        !           505:        case II3:
        !           506:                p += 3;
        !           507:                dgen((int)(o>>19), 3, -1);
        !           508:                break;
        !           509: 
        !           510:        case II3X:
        !           511:                p += 3;
        !           512:                dgen((int)(o>>14), 3, -1);
        !           513:                break;
        !           514: 
        !           515:        case IMD:
        !           516:                p += 2;
        !           517:                mask((int)(o>>8)&0xff);
        !           518:                printf(",%R", ddisp());
        !           519:                break;
        !           520: 
        !           521:        case IM:
        !           522:                p += 2;
        !           523:                mask((int)(o>>8)&0xff);
        !           524:                break;
        !           525: 
        !           526:        case IN:
        !           527:                p += 2;
        !           528:                rmask((int)(o>>8)&0xff);
        !           529:                break;
        !           530: 
        !           531:        case IQI:
        !           532:                p += 2;
        !           533:                i = o;
        !           534:                printf("$");
        !           535:                quick((int)(o>>7));
        !           536:                printf(",");
        !           537:                dgen((int)(o>>11), o, -1);
        !           538:                break;
        !           539: 
        !           540:        case IRII:
        !           541:                p += 3;
        !           542:                printf("r%d,", (int)(o>>11)&0x7);
        !           543:                i = o;
        !           544:                addr2((int)(o>>14), i, i);
        !           545:                break;
        !           546: 
        !           547:        case IRIID:
        !           548:                p += 3;
        !           549:                printf("r%d,", (int)(o>>11)&0x7);
        !           550:                i = o;
        !           551:                addr2((int)(o>>14), i, i);
        !           552:                printf(",");
        !           553:                psymoff((WORD)ddisp(), isp, "");
        !           554:                break;
        !           555: 
        !           556:        case ICFG:
        !           557:                p += 3;
        !           558:                printf("[");
        !           559:                if (o & 0x8000)
        !           560:                        printf("I");
        !           561:                if (o & 0x10000)
        !           562:                        printf("F");
        !           563:                if (o & 0x20000)
        !           564:                        printf("M");
        !           565:                if (o & 0x40000)
        !           566:                        printf("C");
        !           567:                printf("]");
        !           568:                break;
        !           569: 
        !           570:        case IPR:
        !           571:                p += 2;
        !           572:                prreg((o >> 7) & 0xf);
        !           573:                printf(",");
        !           574:                dgen(o >> 11, o, -1);
        !           575:                break;
        !           576: 
        !           577:        case IMR:
        !           578:                p += 1;
        !           579:                prmr((o >> 15) & 0xf);
        !           580:                printf(",");
        !           581:                dgen(o >> 19, 3, -1);
        !           582:                break;
        !           583:        }
        !           584:        dotinc = p - orig;
        !           585: }
        !           586: 
        !           587: static
        !           588: addr2(o, i1, i2)
        !           589: {
        !           590:        register x1, x2, t;
        !           591: 
        !           592:        x1 = -1;
        !           593:        x2 = -1;
        !           594:        t = (o >> 5) & 0x1f;
        !           595:        if (28 <= t && t <= 31)         /* index mode */
        !           596:                x1 = cget(p++, isp);
        !           597:        t = o & 0x1f;
        !           598:        if (28 <= t && t <= 31)
        !           599:                x2 = cget(p++, isp);
        !           600:        dgen(o>>5, i1, x1);
        !           601:        printf(",");
        !           602:        dgen(o, i2, x2);
        !           603: }
        !           604: 
        !           605: static
        !           606: dgen(g, i, t)
        !           607: {
        !           608:        register long v, v1;
        !           609:        register uchar pp;
        !           610: 
        !           611:        switch(g &= 0x1f) {
        !           612:        default:
        !           613:                printf("gok%d", g & 0x1f);
        !           614:                break;
        !           615: 
        !           616:        case 0:
        !           617:        case 1:
        !           618:        case 2:
        !           619:        case 3:
        !           620:        case 4:
        !           621:        case 5:
        !           622:        case 6:
        !           623:        case 7:
        !           624:                printf("r%d", g);
        !           625:                break;
        !           626: 
        !           627:        case 8:
        !           628:        case 9:
        !           629:        case 10:
        !           630:        case 11:
        !           631:        case 12:
        !           632:        case 13:
        !           633:        case 14:
        !           634:        case 15:
        !           635:                v = ddisp();
        !           636:                psymoff((WORD)v, isp, "");
        !           637:                printf("(r%d)", g-8);
        !           638:                break;
        !           639: 
        !           640:        case 16:
        !           641:        case 17:
        !           642:        case 18:
        !           643:                v = ddisp();
        !           644:                v1 = ddisp();
        !           645:                psymoff((WORD)v1, isp, "(");
        !           646:                psymoff((WORD)v, isp, "");
        !           647:                printf("(%c%c))", "fss"[g-16], "ppb"[g-16]);
        !           648:                break;
        !           649: 
        !           650:        case 20:
        !           651:                v = 0;
        !           652:                pp = cget(p, isp);
        !           653:                if(pp & 0200)
        !           654:                switch(i & 3) {
        !           655:                case 2: break;
        !           656:                case 3: break;
        !           657:                case 1: v = 0xffff0000L; break;
        !           658:                case 0: v = 0xffffff00L; break;
        !           659:                }
        !           660:                switch(i & 3) {
        !           661:                case 2: p += 4;
        !           662:                case 3: v |= (long)cget(p++, isp) << 24;
        !           663:                        v |= (long)cget(p++, isp) << 16;
        !           664:                case 1: v |= (long)cget(p++, isp) << 8;
        !           665:                case 0: v |= (long)cget(p++, isp);
        !           666:                }
        !           667:                printf("$");
        !           668:                psymoff((WORD)v, isp, "");
        !           669:                break;
        !           670: 
        !           671:        case 21:
        !           672:                v = ddisp();
        !           673:                printf("*");
        !           674:                psymoff((WORD)v, isp, "");
        !           675:                break;
        !           676: 
        !           677:        case 22:
        !           678:                v = ddisp();
        !           679:                v1 = ddisp();
        !           680:                psymoff((WORD)(mtodata(v, isp)+v1), isp, "");
        !           681:                break;
        !           682: 
        !           683:        case 23:
        !           684:                printf("tos");
        !           685:                break;
        !           686: 
        !           687:        case 24:
        !           688:        case 25:
        !           689:        case 26:
        !           690:        case 27:
        !           691:                v = ddisp();
        !           692:                psymoff((WORD)v, isp, "");
        !           693:                printf("(%c%c)", "fssp"[g-24], "ppbp"[g-24]);
        !           694:                break;
        !           695: 
        !           696:        case 28:
        !           697:        case 29:
        !           698:        case 30:
        !           699:        case 31:
        !           700:                if (t == -1)
        !           701:                        t = cget(p++, isp);
        !           702:                dgen(t>>3, i, -1);
        !           703:                printf("[r%d:%c]", t&07, "bwdq"[g&03]);
        !           704:                break;
        !           705:        }
        !           706: }
        !           707: 
        !           708: static long
        !           709: ddisp()
        !           710: {
        !           711:        register long o;
        !           712: 
        !           713:        o = cget(p++, isp);
        !           714:        if(!(o & 0x80)) {
        !           715:                if(o & 0x40)
        !           716:                        o |= 0xffffff80;
        !           717:                return o;
        !           718:        }
        !           719:        o = (o<<8) | cget(p++, isp);
        !           720:        if(!(o & 0x4000)) {
        !           721:                o &= 0x3fff;
        !           722:                if(o & 0x2000)
        !           723:                        o |= 0xffffc000;
        !           724:                return o;
        !           725:        }
        !           726:        o = (o<<8) | cget(p++, isp);
        !           727:        o = (o<<8) | cget(p++, isp);
        !           728:        o &= 0x3fffffff;
        !           729:        if(o & 0x20000000)
        !           730:                o |= 0xc0000000;
        !           731:        return o;
        !           732: }
        !           733: 
        !           734: static
        !           735: mask(m)
        !           736: register int m;
        !           737: {
        !           738:        register int i;
        !           739:        int first = 0;
        !           740: 
        !           741:        m &= 0xff;
        !           742:        printf("[");
        !           743:        for (i = 0; m; i++) {
        !           744:                if (m & (1<<i)) {
        !           745:                        if (first++)
        !           746:                                printf(",");
        !           747:                        printf("r%d", i);
        !           748:                }
        !           749:                m &=~ (1<<i);
        !           750:        }
        !           751:        printf("]");
        !           752: }
        !           753: 
        !           754: static
        !           755: rmask(m)
        !           756: register int m;
        !           757: {
        !           758:        register int i;
        !           759:        int first = 0;
        !           760: 
        !           761:        m &= 0xff;
        !           762:        printf("[");
        !           763:        for (i = 0; m; i++) {
        !           764:                if (m & (0x80>>i)) {
        !           765:                        if (first++)
        !           766:                                printf(",");
        !           767:                        printf("r%d", i);
        !           768:                }
        !           769:                m &=~ (0x80>>i);
        !           770:        }
        !           771:        printf("]");
        !           772: }
        !           773: 
        !           774: static
        !           775: quick(q)
        !           776: register int q;
        !           777: {
        !           778: 
        !           779:        q &= 0xf;
        !           780:        if (q & 0x8)
        !           781:                q |= ~0x7;
        !           782:        printf("%r", q);
        !           783: }
        !           784: 
        !           785: static char *pmrtab[] = {
        !           786:        "bpr0", "bpr1", "2", "3",
        !           787:        "pf0", "pf1", "6", "7",
        !           788:        "sc", "9", "msr", "bcnt",
        !           789:        "ptb0", "ptb1", "#d", "eia",
        !           790: };
        !           791: 
        !           792: static
        !           793: prmr(r)
        !           794: int r;
        !           795: {
        !           796: 
        !           797:        printf("%s", pmrtab[r]);
        !           798: }
        !           799: 
        !           800: static char *pregtab[] = {
        !           801:        "upsr", "1", "2", "3",
        !           802:        "4", "5", "6", "7",
        !           803:        "fp", "sp", "sb", "#b",
        !           804:        "#c", "psr", "intbase", "mod",
        !           805: };
        !           806: 
        !           807: static
        !           808: prreg(r)
        !           809: int r;
        !           810: {
        !           811: 
        !           812:        printf("%s", pregtab[r]);
        !           813: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.