/** @file * For disassembling the text segment. */ /* $Id$ */ #include "global.h" #include "opcode.h" #include "memdirect.h" #include "proctab.h" #include "alloc.h" #include "whatever.h" PRIVATE ptr TC; PRIVATE void do_pr_instr(unsigned int); /* This text is copied and modified from text.h */ #define text_loc(a) (*(text + (p2i(a)))) /* Reading the opcode. */ #define nextTCbyte() (TC+=1, btou(text_loc(TC-1))) /* Shortie arguments consist of the high order value, derived from the opcode and passed as a parameter, and the following byte. */ #define St_arg(h) (TC+=1, ((h)<<8) + btol(text_loc(TC-1))) /* Two-byte arguments consist of the following two bytes. */ #define Lt_arg_2() (TC+=2, (btol(text_loc(TC-1)) | \ (btos(text_loc(TC-2)) << 8))) #define Pt_arg_2() (TC+=2, (btol(text_loc(TC-1)) | \ (btos(text_loc(TC-2)) << 8)))/* should test */ #define Nt_arg_2() (TC+=2, (btol(text_loc(TC-1)) | \ (btos(text_loc(TC-2)) << 8)))/* should test */ #define Ut_arg() (TC+=2, (btol(text_loc(TC-1)) | \ (btol(text_loc(TC-2)) << 8))) /* The L-, P-, and N-4-bytes #defines are all equal, because we assume our longs to be 4 bytes long. */ #define Lt_arg_4() (TC+=4, (btol(text_loc(TC-1)) | \ (btol(text_loc(TC-2)) << 8) | \ (btol(text_loc(TC-3)) << 16) | \ (btos(text_loc(TC-4)) << 24))) #define Pt_arg_4() (TC+=4, (btol(text_loc(TC-1)) | \ (btol(text_loc(TC-2)) << 8) | \ (btol(text_loc(TC-3)) << 16) | \ (btos(text_loc(TC-4)) << 24)))/* should test */ #define Nt_arg_4() (TC+=4, (btol(text_loc(TC-1)) | \ (btol(text_loc(TC-2)) << 8) | \ (btol(text_loc(TC-3)) << 16) | \ (btos(text_loc(TC-4)) << 24)))/* should test */ /* This text was generated by mkswitch Pr and then modified */ PRIVATE void PrAARl2(long arg) { printf(" AAR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrAARm(long arg) { printf(" AAR %ld\n", arg); } PRIVATE void PrAARz(void) { printf(" AAR\n"); } PRIVATE void PrADFl2(long arg) { printf(" ADF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrADFs(long hob, size wfac) { printf(" ADF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrADFz(void) { printf(" ADF\n"); } PRIVATE void PrADIl2(long arg) { printf(" ADI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrADIm(long arg) { printf(" ADI %ld\n", arg); } PRIVATE void PrADIz(void) { printf(" ADI\n"); } PRIVATE void PrADPl2(long arg) { printf(" ADP %ld\n", Lt_arg_2() * arg); } PRIVATE void PrADPl4(long arg) { printf(" ADP %ld\n", Lt_arg_4() * arg); } PRIVATE void PrADPm(long arg) { printf(" ADP %ld\n", arg); } PRIVATE void PrADPs(long hob, size wfac) { printf(" ADP %ld\n", St_arg(hob) * wfac); } PRIVATE void PrADSl2(long arg) { printf(" ADS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrADSm(long arg) { printf(" ADS %ld\n", arg); } PRIVATE void PrADSz(void) { printf(" ADS\n"); } PRIVATE void PrADUl2(long arg) { printf(" ADU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrADUz(void) { printf(" ADU\n"); } PRIVATE void PrANDl2(long arg) { printf(" AND %ld\n", Lt_arg_2() * arg); } PRIVATE void PrANDm(long arg) { printf(" AND %ld\n", arg); } PRIVATE void PrANDz(void) { printf(" AND\n"); } PRIVATE void PrASPl2(long arg) { printf(" ASP %ld\n", Lt_arg_2() * arg); } PRIVATE void PrASPl4(long arg) { printf(" ASP %ld\n", Lt_arg_4() * arg); } PRIVATE void PrASPm(long arg) { printf(" ASP %ld\n", arg); } PRIVATE void PrASPs(long hob, size wfac) { printf(" ASP %ld\n", St_arg(hob) * wfac); } PRIVATE void PrASSl2(long arg) { printf(" ASS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrASSz(void) { printf(" ASS\n"); } PRIVATE void PrBEQl2(long arg) { printf(" BEQ %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBEQl4(long arg) { printf(" BEQ %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBEQs(long hob, size wfac) { printf(" BEQ %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBGEl2(long arg) { printf(" BGE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBGEl4(long arg) { printf(" BGE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBGEs(long hob, size wfac) { printf(" BGE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBGTl2(long arg) { printf(" BGT %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBGTl4(long arg) { printf(" BGT %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBGTs(long hob, size wfac) { printf(" BGT %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBLEl2(long arg) { printf(" BLE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBLEl4(long arg) { printf(" BLE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBLEs(long hob, size wfac) { printf(" BLE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBLMl2(long arg) { printf(" BLM %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBLMl4(long arg) { printf(" BLM %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBLMs(long hob, size wfac) { printf(" BLM %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBLSl2(long arg) { printf(" BLS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBLSz(void) { printf(" BLS\n"); } PRIVATE void PrBLTl2(long arg) { printf(" BLT %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBLTl4(long arg) { printf(" BLT %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBLTs(long hob, size wfac) { printf(" BLT %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBNEl2(long arg) { printf(" BNE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBNEl4(long arg) { printf(" BNE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBNEs(long hob, size wfac) { printf(" BNE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrBRAl2(long arg) { printf(" BRA %ld\n", Lt_arg_2() * arg); } PRIVATE void PrBRAl4(long arg) { printf(" BRA %ld\n", Lt_arg_4() * arg); } PRIVATE void PrBRAs(long hob, size wfac) { printf(" BRA %ld\n", St_arg(hob) * wfac); } PRIVATE void PrCAIz(void) { printf(" CAI\n"); } PRIVATE void PrCALl2(long arg) { printf(" CAL %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCALl4(long arg) { printf(" CAL %ld\n", Lt_arg_4() * arg); } PRIVATE void PrCALm(long arg) { printf(" CAL %ld\n", arg); } PRIVATE void PrCALs(long hob, size wfac) { printf(" CAL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrCFFz(void) { printf(" CFF\n"); } PRIVATE void PrCFIz(void) { printf(" CFI\n"); } PRIVATE void PrCFUz(void) { printf(" CFU\n"); } PRIVATE void PrCIFz(void) { printf(" CIF\n"); } PRIVATE void PrCIIz(void) { printf(" CII\n"); } PRIVATE void PrCIUz(void) { printf(" CIU\n"); } PRIVATE void PrCMFl2(long arg) { printf(" CMF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCMFs(long hob, size wfac) { printf(" CMF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrCMFz(void) { printf(" CMF\n"); } PRIVATE void PrCMIl2(long arg) { printf(" CMI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCMIm(long arg) { printf(" CMI %ld\n", arg); } PRIVATE void PrCMIz(void) { printf(" CMI\n"); } PRIVATE void PrCMPz(void) { printf(" CMP\n"); } PRIVATE void PrCMSl2(long arg) { printf(" CMS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCMSs(long hob, size wfac) { printf(" CMS %ld\n", St_arg(hob) * wfac); } PRIVATE void PrCMSz(void) { printf(" CMS\n"); } PRIVATE void PrCMUl2(long arg) { printf(" CMU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCMUz(void) { printf(" CMU\n"); } PRIVATE void PrCOMl2(long arg) { printf(" COM %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCOMz(void) { printf(" COM\n"); } PRIVATE void PrCSAl2(long arg) { printf(" CSA %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCSAm(long arg) { printf(" CSA %ld\n", arg); } PRIVATE void PrCSAz(void) { printf(" CSA\n"); } PRIVATE void PrCSBl2(long arg) { printf(" CSB %ld\n", Lt_arg_2() * arg); } PRIVATE void PrCSBm(long arg) { printf(" CSB %ld\n", arg); } PRIVATE void PrCSBz(void) { printf(" CSB\n"); } PRIVATE void PrCUFz(void) { printf(" CUF\n"); } PRIVATE void PrCUIz(void) { printf(" CUI\n"); } PRIVATE void PrCUUz(void) { printf(" CUU\n"); } PRIVATE void PrDCHz(void) { printf(" DCH\n"); } PRIVATE void PrDECz(void) { printf(" DEC\n"); } PRIVATE void PrDEEl2(long arg) { printf(" DEE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDEEl4(long arg) { printf(" DEE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrDEEs(long hob, size wfac) { printf(" DEE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrDELn2(long arg) { printf(" DEL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrDELn4(long arg) { printf(" DEL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrDELp2(long arg) { printf(" DEL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrDELp4(long arg) { printf(" DEL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrDELs(long hob, size wfac) { printf(" DEL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrDUPl2(long arg) { printf(" DUP %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDUPm(long arg) { printf(" DUP %ld\n", arg); } PRIVATE void PrDUSl2(long arg) { printf(" DUS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDUSz(void) { printf(" DUS\n"); } PRIVATE void PrDVFl2(long arg) { printf(" DVF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDVFs(long hob, size wfac) { printf(" DVF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrDVFz(void) { printf(" DVF\n"); } PRIVATE void PrDVIl2(long arg) { printf(" DVI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDVIm(long arg) { printf(" DVI %ld\n", arg); } PRIVATE void PrDVIz(void) { printf(" DVI\n"); } PRIVATE void PrDVUl2(long arg) { printf(" DVU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrDVUz(void) { printf(" DVU\n"); } PRIVATE void PrEXGl2(long arg) { printf(" EXG %ld\n", Lt_arg_2() * arg); } PRIVATE void PrEXGs(long hob, size wfac) { printf(" EXG %ld\n", St_arg(hob) * wfac); } PRIVATE void PrEXGz(void) { printf(" EXG\n"); } PRIVATE void PrFEFl2(long arg) { printf(" FEF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrFEFz(void) { printf(" FEF\n"); } PRIVATE void PrFIFl2(long arg) { printf(" FIF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrFIFz(void) { printf(" FIF\n"); } PRIVATE void PrFILu(long arg) { printf(" FIL %ld\n", Ut_arg() * arg); } PRIVATE void PrFILl4(long arg) { printf(" FIL %ld\n", Lt_arg_4() * arg); } PRIVATE void PrGTOu(long arg) { printf(" GTO %ld\n", Ut_arg() * arg); } PRIVATE void PrGTOl4(long arg) { printf(" GTO %ld\n", Lt_arg_4() * arg); } PRIVATE void PrINCz(void) { printf(" INC\n"); } PRIVATE void PrINEl2(long arg) { printf(" INE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrINEl4(long arg) { printf(" INE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrINEs(long hob, size wfac) { printf(" INE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrINLm(long arg) { printf(" INL %ld\n", arg); } PRIVATE void PrINLn2(long arg) { printf(" INL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrINLn4(long arg) { printf(" INL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrINLp2(long arg) { printf(" INL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrINLp4(long arg) { printf(" INL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrINLs(long hob, size wfac) { printf(" INL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrINNl2(long arg) { printf(" INN %ld\n", Lt_arg_2() * arg); } PRIVATE void PrINNs(long hob, size wfac) { printf(" INN %ld\n", St_arg(hob) * wfac); } PRIVATE void PrINNz(void) { printf(" INN\n"); } PRIVATE void PrIORl2(long arg) { printf(" IOR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrIORm(long arg) { printf(" IOR %ld\n", arg); } PRIVATE void PrIORs(long hob, size wfac) { printf(" IOR %ld\n", St_arg(hob) * wfac); } PRIVATE void PrIORz(void) { printf(" IOR\n"); } PRIVATE void PrLAEu(long arg) { printf(" LAE %ld\n", Ut_arg() * arg); } PRIVATE void PrLAEl4(long arg) { printf(" LAE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLAEs(long hob, size wfac) { printf(" LAE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLALm(long arg) { printf(" LAL %ld\n", arg); } PRIVATE void PrLALn2(long arg) { printf(" LAL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrLALn4(long arg) { printf(" LAL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrLALp2(long arg) { printf(" LAL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrLALp4(long arg) { printf(" LAL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrLALs(long hob, size wfac) { printf(" LAL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLARl2(long arg) { printf(" LAR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLARm(long arg) { printf(" LAR %ld\n", arg); } PRIVATE void PrLARz(void) { printf(" LAR\n"); } PRIVATE void PrLDCl2(long arg) { printf(" LDC %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLDCl4(long arg) { printf(" LDC %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLDCm(long arg) { printf(" LDC %ld\n", arg); } PRIVATE void PrLDEl2(long arg) { printf(" LDE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLDEl4(long arg) { printf(" LDE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLDEs(long hob, size wfac) { printf(" LDE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLDFl2(long arg) { printf(" LDF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLDFl4(long arg) { printf(" LDF %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLDLm(long arg) { printf(" LDL %ld\n", arg); } PRIVATE void PrLDLn2(long arg) { printf(" LDL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrLDLn4(long arg) { printf(" LDL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrLDLp2(long arg) { printf(" LDL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrLDLp4(long arg) { printf(" LDL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrLDLs(long hob, size wfac) { printf(" LDL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLFRl2(long arg) { printf(" LFR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLFRm(long arg) { printf(" LFR %ld\n", arg); } PRIVATE void PrLFRs(long hob, size wfac) { printf(" LFR %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLILm(long arg) { printf(" LIL %ld\n", arg); } PRIVATE void PrLILn2(long arg) { printf(" LIL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrLILn4(long arg) { printf(" LIL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrLILp2(long arg) { printf(" LIL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrLILp4(long arg) { printf(" LIL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrLILs(long hob, size wfac) { printf(" LIL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLIMz(void) { printf(" LIM\n"); } PRIVATE void PrLINl2(long arg) { printf(" LIN %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLINl4(long arg) { printf(" LIN %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLINs(long hob, size wfac) { printf(" LIN %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLNIz(void) { printf(" LNI\n"); } PRIVATE void PrLOCl2(long arg) { printf(" LOC %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLOCl4(long arg) { printf(" LOC %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLOCm(long arg) { printf(" LOC %ld\n", arg); } PRIVATE void PrLOCs(long hob, size wfac) { printf(" LOC %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLOEl2(long arg) { printf(" LOE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLOEl4(long arg) { printf(" LOE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLOEs(long hob, size wfac) { printf(" LOE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLOFl2(long arg) { printf(" LOF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLOFl4(long arg) { printf(" LOF %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLOFm(long arg) { printf(" LOF %ld\n", arg); } PRIVATE void PrLOFs(long hob, size wfac) { printf(" LOF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLOIl2(long arg) { printf(" LOI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLOIl4(long arg) { printf(" LOI %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLOIm(long arg) { printf(" LOI %ld\n", arg); } PRIVATE void PrLOIs(long hob, size wfac) { printf(" LOI %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLOLm(long arg) { printf(" LOL %ld\n", arg); } PRIVATE void PrLOLn2(long arg) { printf(" LOL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrLOLn4(long arg) { printf(" LOL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrLOLp2(long arg) { printf(" LOL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrLOLp4(long arg) { printf(" LOL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrLOLs(long hob, size wfac) { printf(" LOL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLORs(long hob, size wfac) { printf(" LOR %ld\n", St_arg(hob) * wfac); } PRIVATE void PrLOSl2(long arg) { printf(" LOS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLOSz(void) { printf(" LOS\n"); } PRIVATE void PrLPBz(void) { printf(" LPB\n"); } PRIVATE void PrLPIl2(long arg) { printf(" LPI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLPIl4(long arg) { printf(" LPI %ld\n", Lt_arg_4() * arg); } PRIVATE void PrLXAl2(long arg) { printf(" LXA %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLXAm(long arg) { printf(" LXA %ld\n", arg); } PRIVATE void PrLXLl2(long arg) { printf(" LXL %ld\n", Lt_arg_2() * arg); } PRIVATE void PrLXLm(long arg) { printf(" LXL %ld\n", arg); } PRIVATE void PrMLFl2(long arg) { printf(" MLF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrMLFs(long hob, size wfac) { printf(" MLF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrMLFz(void) { printf(" MLF\n"); } PRIVATE void PrMLIl2(long arg) { printf(" MLI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrMLIm(long arg) { printf(" MLI %ld\n", arg); } PRIVATE void PrMLIz(void) { printf(" MLI\n"); } PRIVATE void PrMLUl2(long arg) { printf(" MLU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrMLUz(void) { printf(" MLU\n"); } PRIVATE void PrMONz(void) { printf(" MON\n"); } PRIVATE void PrNGFl2(long arg) { printf(" NGF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrNGFz(void) { printf(" NGF\n"); } PRIVATE void PrNGIl2(long arg) { printf(" NGI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrNGIz(void) { printf(" NGI\n"); } PRIVATE void PrNOPz(void) { printf(" NOP\n"); } PRIVATE void PrRCKl2(long arg) { printf(" RCK %ld\n", Lt_arg_2() * arg); } PRIVATE void PrRCKm(long arg) { printf(" RCK %ld\n", arg); } PRIVATE void PrRCKz(void) { printf(" RCK\n"); } PRIVATE void PrRETl2(long arg) { printf(" RET %ld\n", Lt_arg_2() * arg); } PRIVATE void PrRETm(long arg) { printf(" RET %ld\n", arg); } PRIVATE void PrRETs(long hob, size wfac) { printf(" RET %ld\n", St_arg(hob) * wfac); } PRIVATE void PrRMIl2(long arg) { printf(" RMI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrRMIm(long arg) { printf(" RMI %ld\n", arg); } PRIVATE void PrRMIz(void) { printf(" RMI\n"); } PRIVATE void PrRMUl2(long arg) { printf(" RMU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrRMUz(void) { printf(" RMU\n"); } PRIVATE void PrROLl2(long arg) { printf(" ROL %ld\n", Lt_arg_2() * arg); } PRIVATE void PrROLz(void) { printf(" ROL\n"); } PRIVATE void PrRORl2(long arg) { printf(" ROR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrRORz(void) { printf(" ROR\n"); } PRIVATE void PrRTTz(void) { printf(" RTT\n"); } PRIVATE void PrSARl2(long arg) { printf(" SAR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSARm(long arg) { printf(" SAR %ld\n", arg); } PRIVATE void PrSARz(void) { printf(" SAR\n"); } PRIVATE void PrSBFl2(long arg) { printf(" SBF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSBFs(long hob, size wfac) { printf(" SBF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSBFz(void) { printf(" SBF\n"); } PRIVATE void PrSBIl2(long arg) { printf(" SBI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSBIm(long arg) { printf(" SBI %ld\n", arg); } PRIVATE void PrSBIz(void) { printf(" SBI\n"); } PRIVATE void PrSBSl2(long arg) { printf(" SBS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSBSz(void) { printf(" SBS\n"); } PRIVATE void PrSBUl2(long arg) { printf(" SBU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSBUz(void) { printf(" SBU\n"); } PRIVATE void PrSDEu(long arg) { printf(" SDE %ld\n", Ut_arg() * arg); } PRIVATE void PrSDEl4(long arg) { printf(" SDE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrSDFl2(long arg) { printf(" SDF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSDFl4(long arg) { printf(" SDF %ld\n", Lt_arg_4() * arg); } PRIVATE void PrSDLn2(long arg) { printf(" SDL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrSDLn4(long arg) { printf(" SDL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrSDLp2(long arg) { printf(" SDL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrSDLp4(long arg) { printf(" SDL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrSDLs(long hob, size wfac) { printf(" SDL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSETl2(long arg) { printf(" SET %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSETs(long hob, size wfac) { printf(" SET %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSETz(void) { printf(" SET\n"); } PRIVATE void PrSIGz(void) { printf(" SIG\n"); } PRIVATE void PrSILn2(long arg) { printf(" SIL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrSILn4(long arg) { printf(" SIL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrSILp2(long arg) { printf(" SIL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrSILp4(long arg) { printf(" SIL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrSILs(long hob, size wfac) { printf(" SIL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSIMz(void) { printf(" SIM\n"); } PRIVATE void PrSLIl2(long arg) { printf(" SLI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSLIm(long arg) { printf(" SLI %ld\n", arg); } PRIVATE void PrSLIz(void) { printf(" SLI\n"); } PRIVATE void PrSLUl2(long arg) { printf(" SLU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSLUz(void) { printf(" SLU\n"); } PRIVATE void PrSRIl2(long arg) { printf(" SRI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSRIz(void) { printf(" SRI\n"); } PRIVATE void PrSRUl2(long arg) { printf(" SRU %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSRUz(void) { printf(" SRU\n"); } PRIVATE void PrSTEl2(long arg) { printf(" STE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSTEl4(long arg) { printf(" STE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrSTEs(long hob, size wfac) { printf(" STE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSTFl2(long arg) { printf(" STF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSTFl4(long arg) { printf(" STF %ld\n", Lt_arg_4() * arg); } PRIVATE void PrSTFm(long arg) { printf(" STF %ld\n", arg); } PRIVATE void PrSTFs(long hob, size wfac) { printf(" STF %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSTIl2(long arg) { printf(" STI %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSTIl4(long arg) { printf(" STI %ld\n", Lt_arg_4() * arg); } PRIVATE void PrSTIm(long arg) { printf(" STI %ld\n", arg); } PRIVATE void PrSTIs(long hob, size wfac) { printf(" STI %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSTLm(long arg) { printf(" STL %ld\n", arg); } PRIVATE void PrSTLn2(long arg) { printf(" STL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrSTLn4(long arg) { printf(" STL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrSTLp2(long arg) { printf(" STL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrSTLp4(long arg) { printf(" STL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrSTLs(long hob, size wfac) { printf(" STL %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSTRs(long hob, size wfac) { printf(" STR %ld\n", St_arg(hob) * wfac); } PRIVATE void PrSTSl2(long arg) { printf(" STS %ld\n", Lt_arg_2() * arg); } PRIVATE void PrSTSz(void) { printf(" STS\n"); } PRIVATE void PrTEQz(void) { printf(" TEQ\n"); } PRIVATE void PrTGEz(void) { printf(" TGE\n"); } PRIVATE void PrTGTz(void) { printf(" TGT\n"); } PRIVATE void PrTLEz(void) { printf(" TLE\n"); } PRIVATE void PrTLTz(void) { printf(" TLT\n"); } PRIVATE void PrTNEz(void) { printf(" TNE\n"); } PRIVATE void PrTRPz(void) { printf(" TRP\n"); } PRIVATE void PrXORl2(long arg) { printf(" XOR %ld\n", Lt_arg_2() * arg); } PRIVATE void PrXORz(void) { printf(" XOR\n"); } PRIVATE void PrZEQl2(long arg) { printf(" ZEQ %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZEQl4(long arg) { printf(" ZEQ %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZEQs(long hob, size wfac) { printf(" ZEQ %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZERl2(long arg) { printf(" ZER %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZERs(long hob, size wfac) { printf(" ZER %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZERz(void) { printf(" ZER\n"); } PRIVATE void PrZGEl2(long arg) { printf(" ZGE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZGEl4(long arg) { printf(" ZGE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZGEs(long hob, size wfac) { printf(" ZGE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZGTl2(long arg) { printf(" ZGT %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZGTl4(long arg) { printf(" ZGT %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZGTs(long hob, size wfac) { printf(" ZGT %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZLEl2(long arg) { printf(" ZLE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZLEl4(long arg) { printf(" ZLE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZLEs(long hob, size wfac) { printf(" ZLE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZLTl2(long arg) { printf(" ZLT %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZLTl4(long arg) { printf(" ZLT %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZLTs(long hob, size wfac) { printf(" ZLT %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZNEl2(long arg) { printf(" ZNE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZNEl4(long arg) { printf(" ZNE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZNEs(long hob, size wfac) { printf(" ZNE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZREl2(long arg) { printf(" ZRE %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZREl4(long arg) { printf(" ZRE %ld\n", Lt_arg_4() * arg); } PRIVATE void PrZREs(long hob, size wfac) { printf(" ZRE %ld\n", St_arg(hob) * wfac); } PRIVATE void PrZRFl2(long arg) { printf(" ZRF %ld\n", Lt_arg_2() * arg); } PRIVATE void PrZRFz(void) { printf(" ZRF\n"); } PRIVATE void PrZRLm(long arg) { printf(" ZRL %ld\n", arg); } PRIVATE void PrZRLn2(long arg) { printf(" ZRL %ld\n", Nt_arg_2() * arg); } PRIVATE void PrZRLn4(long arg) { printf(" ZRL %ld\n", Nt_arg_4() * arg); } PRIVATE void PrZRLp2(long arg) { printf(" ZRL %ld\n", Pt_arg_2() * arg); } PRIVATE void PrZRLp4(long arg) { printf(" ZRL %ld\n", Pt_arg_4() * arg); } PRIVATE void PrZRLs(long hob, size wfac) { printf(" ZRL %ld\n", St_arg(hob) * wfac); } /* Original code! */ /******** Disassembly of Text Segment ********/ struct ep { /* procedure entry points */ int ep_idf; ptr ep_ep; size ep_nloc; }; void disassemble(void) { register ptr low = 0; register ptr high = DB; register int idf; register int cnt; struct ep *ep; /* list of entry points */ /* collect the entry points */ ep = (struct ep *) Malloc((size) (NProc * sizeof(struct ep)), "entry points"); for (idf = 0; idf < NProc; idf++) { register struct proc *pr = &proctab[idf]; ep[idf].ep_idf = idf; ep[idf].ep_ep = pr->pr_ep; ep[idf].ep_nloc = pr->pr_nloc; } /* a very naive sorting algorithm */ for (idf = 0; idf < NProc; idf++) { register int jdf; for (jdf = 0; jdf < NProc; jdf++) { if ((ep[idf].ep_ep < ep[jdf].ep_ep) != (idf < jdf)) { struct ep p; p = ep[idf]; ep[idf] = ep[jdf]; ep[jdf] = p; } } } TC = low; cnt = 0; idf = 0; while (TC < high) { if (cnt == 0) { printf("%lu\n", TC); } cnt = (cnt + 1) % 10; if (idf < NProc && TC >= ep[idf].ep_ep) { register struct ep *p = &ep[idf]; printf("P[%d]+%lu: ; %ld %s\n", p->ep_idf, TC - p->ep_ep, p->ep_nloc, p->ep_nloc == 1 ? "local" : "locals"); idf++; } do_pr_instr(nextTCbyte()); /* advances TC */ } } /* See switch.c */ PRIVATE void do_pr_instr(unsigned int opcode) { switch (opcode) { #include "PrCases" /* for the muscle */ case SECONDARY: do_pr_instr(SEC_BASE + nextTCbyte()); break; case TERTIARY: do_pr_instr(TERT_BASE + nextTCbyte()); break; default: printf(">>>> bad opcode %u at PC = %lu <<<<\n", opcode, TC); break; } }