/*
	For disassembling the text segment.
*/

/* $Header$ */

#include	"global.h"
#include	"opcode.h"
#include	"memdirect.h"
#include	"proctab.h"
#include	"alloc.h"

PRIVATE ptr TC;
PRIVATE do_pr_instr();

/* 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 PrAARl2(arg) long arg; 
{
	printf(" AAR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrAARm(arg) long arg; 
{
	printf(" AAR %ld\n", arg);
}

PRIVATE PrAARz() {
	printf(" AAR\n");
}

PRIVATE PrADFl2(arg) long arg; 
{
	printf(" ADF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrADFs(hob, wfac) long hob; size wfac; 
{
	printf(" ADF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrADFz() {
	printf(" ADF\n");
}

PRIVATE PrADIl2(arg) long arg; 
{
	printf(" ADI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrADIm(arg) long arg; 
{
	printf(" ADI %ld\n", arg);
}

PRIVATE PrADIz() {
	printf(" ADI\n");
}

PRIVATE PrADPl2(arg) long arg; 
{
	printf(" ADP %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrADPl4(arg) long arg; 
{
	printf(" ADP %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrADPm(arg) long arg; 
{
	printf(" ADP %ld\n", arg);
}

PRIVATE PrADPs(hob, wfac) long hob; size wfac; 
{
	printf(" ADP %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrADSl2(arg) long arg; 
{
	printf(" ADS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrADSm(arg) long arg; 
{
	printf(" ADS %ld\n", arg);
}

PRIVATE PrADSz() {
	printf(" ADS\n");
}

PRIVATE PrADUl2(arg) long arg; 
{
	printf(" ADU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrADUz() {
	printf(" ADU\n");
}

PRIVATE PrANDl2(arg) long arg; 
{
	printf(" AND %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrANDm(arg) long arg; 
{
	printf(" AND %ld\n", arg);
}

PRIVATE PrANDz() {
	printf(" AND\n");
}

PRIVATE PrASPl2(arg) long arg; 
{
	printf(" ASP %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrASPl4(arg) long arg; 
{
	printf(" ASP %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrASPm(arg) long arg; 
{
	printf(" ASP %ld\n", arg);
}

PRIVATE PrASPs(hob, wfac) long hob; size wfac; 
{
	printf(" ASP %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrASSl2(arg) long arg; 
{
	printf(" ASS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrASSz() {
	printf(" ASS\n");
}

PRIVATE PrBEQl2(arg) long arg; 
{
	printf(" BEQ %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBEQl4(arg) long arg; 
{
	printf(" BEQ %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBEQs(hob, wfac) long hob; size wfac; 
{
	printf(" BEQ %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBGEl2(arg) long arg; 
{
	printf(" BGE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBGEl4(arg) long arg; 
{
	printf(" BGE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBGEs(hob, wfac) long hob; size wfac; 
{
	printf(" BGE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBGTl2(arg) long arg; 
{
	printf(" BGT %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBGTl4(arg) long arg; 
{
	printf(" BGT %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBGTs(hob, wfac) long hob; size wfac; 
{
	printf(" BGT %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBLEl2(arg) long arg; 
{
	printf(" BLE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBLEl4(arg) long arg; 
{
	printf(" BLE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBLEs(hob, wfac) long hob; size wfac; 
{
	printf(" BLE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBLMl2(arg) long arg; 
{
	printf(" BLM %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBLMl4(arg) long arg; 
{
	printf(" BLM %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBLMs(hob, wfac) long hob; size wfac; 
{
	printf(" BLM %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBLSl2(arg) long arg; 
{
	printf(" BLS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBLSz() {
	printf(" BLS\n");
}

PRIVATE PrBLTl2(arg) long arg; 
{
	printf(" BLT %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBLTl4(arg) long arg; 
{
	printf(" BLT %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBLTs(hob, wfac) long hob; size wfac; 
{
	printf(" BLT %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBNEl2(arg) long arg; 
{
	printf(" BNE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBNEl4(arg) long arg; 
{
	printf(" BNE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBNEs(hob, wfac) long hob; size wfac; 
{
	printf(" BNE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrBRAl2(arg) long arg; 
{
	printf(" BRA %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrBRAl4(arg) long arg; 
{
	printf(" BRA %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrBRAs(hob, wfac) long hob; size wfac; 
{
	printf(" BRA %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrCAIz() {
	printf(" CAI\n");
}

PRIVATE PrCALl2(arg) long arg; 
{
	printf(" CAL %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCALl4(arg) long arg; 
{
	printf(" CAL %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrCALm(arg) long arg; 
{
	printf(" CAL %ld\n", arg);
}

PRIVATE PrCALs(hob, wfac) long hob; size wfac; 
{
	printf(" CAL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrCFFz() {
	printf(" CFF\n");
}

PRIVATE PrCFIz() {
	printf(" CFI\n");
}

PRIVATE PrCFUz() {
	printf(" CFU\n");
}

PRIVATE PrCIFz() {
	printf(" CIF\n");
}

PRIVATE PrCIIz() {
	printf(" CII\n");
}

PRIVATE PrCIUz() {
	printf(" CIU\n");
}

PRIVATE PrCMFl2(arg) long arg; 
{
	printf(" CMF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCMFs(hob, wfac) long hob; size wfac; 
{
	printf(" CMF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrCMFz() {
	printf(" CMF\n");
}

PRIVATE PrCMIl2(arg) long arg; 
{
	printf(" CMI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCMIm(arg) long arg; 
{
	printf(" CMI %ld\n", arg);
}

PRIVATE PrCMIz() {
	printf(" CMI\n");
}

PRIVATE PrCMPz() {
	printf(" CMP\n");
}

PRIVATE PrCMSl2(arg) long arg; 
{
	printf(" CMS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCMSs(hob, wfac) long hob; size wfac; 
{
	printf(" CMS %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrCMSz() {
	printf(" CMS\n");
}

PRIVATE PrCMUl2(arg) long arg; 
{
	printf(" CMU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCMUz() {
	printf(" CMU\n");
}

PRIVATE PrCOMl2(arg) long arg; 
{
	printf(" COM %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCOMz() {
	printf(" COM\n");
}

PRIVATE PrCSAl2(arg) long arg; 
{
	printf(" CSA %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCSAm(arg) long arg; 
{
	printf(" CSA %ld\n", arg);
}

PRIVATE PrCSAz() {
	printf(" CSA\n");
}

PRIVATE PrCSBl2(arg) long arg; 
{
	printf(" CSB %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrCSBm(arg) long arg; 
{
	printf(" CSB %ld\n", arg);
}

PRIVATE PrCSBz() {
	printf(" CSB\n");
}

PRIVATE PrCUFz() {
	printf(" CUF\n");
}

PRIVATE PrCUIz() {
	printf(" CUI\n");
}

PRIVATE PrCUUz() {
	printf(" CUU\n");
}

PRIVATE PrDCHz() {
	printf(" DCH\n");
}

PRIVATE PrDECz() {
	printf(" DEC\n");
}

PRIVATE PrDEEl2(arg) long arg; 
{
	printf(" DEE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDEEl4(arg) long arg; 
{
	printf(" DEE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrDEEs(hob, wfac) long hob; size wfac; 
{
	printf(" DEE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrDELn2(arg) long arg; 
{
	printf(" DEL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrDELn4(arg) long arg; 
{
	printf(" DEL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrDELp2(arg) long arg; 
{
	printf(" DEL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrDELp4(arg) long arg; 
{
	printf(" DEL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrDELs(hob, wfac) long hob; size wfac; 
{
	printf(" DEL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrDUPl2(arg) long arg; 
{
	printf(" DUP %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDUPm(arg) long arg; 
{
	printf(" DUP %ld\n", arg);
}

PRIVATE PrDUSl2(arg) long arg; 
{
	printf(" DUS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDUSz() {
	printf(" DUS\n");
}

PRIVATE PrDVFl2(arg) long arg; 
{
	printf(" DVF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDVFs(hob, wfac) long hob; size wfac; 
{
	printf(" DVF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrDVFz() {
	printf(" DVF\n");
}

PRIVATE PrDVIl2(arg) long arg; 
{
	printf(" DVI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDVIm(arg) long arg; 
{
	printf(" DVI %ld\n", arg);
}

PRIVATE PrDVIz() {
	printf(" DVI\n");
}

PRIVATE PrDVUl2(arg) long arg; 
{
	printf(" DVU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrDVUz() {
	printf(" DVU\n");
}

PRIVATE PrEXGl2(arg) long arg; 
{
	printf(" EXG %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrEXGs(hob, wfac) long hob; size wfac; 
{
	printf(" EXG %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrEXGz() {
	printf(" EXG\n");
}

PRIVATE PrFEFl2(arg) long arg; 
{
	printf(" FEF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrFEFz() {
	printf(" FEF\n");
}

PRIVATE PrFIFl2(arg) long arg; 
{
	printf(" FIF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrFIFz() {
	printf(" FIF\n");
}

PRIVATE PrFILu(arg) long arg; 
{
	printf(" FIL %ld\n", Ut_arg() * arg);
}

PRIVATE PrFILl4(arg) long arg; 
{
	printf(" FIL %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrGTOu(arg) long arg; 
{
	printf(" GTO %ld\n", Ut_arg() * arg);
}

PRIVATE PrGTOl4(arg) long arg; 
{
	printf(" GTO %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrINCz() {
	printf(" INC\n");
}

PRIVATE PrINEl2(arg) long arg; 
{
	printf(" INE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrINEl4(arg) long arg; 
{
	printf(" INE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrINEs(hob, wfac) long hob; size wfac; 
{
	printf(" INE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrINLm(arg) long arg; 
{
	printf(" INL %ld\n", arg);
}

PRIVATE PrINLn2(arg) long arg; 
{
	printf(" INL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrINLn4(arg) long arg; 
{
	printf(" INL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrINLp2(arg) long arg; 
{
	printf(" INL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrINLp4(arg) long arg; 
{
	printf(" INL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrINLs(hob, wfac) long hob; size wfac; 
{
	printf(" INL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrINNl2(arg) long arg; 
{
	printf(" INN %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrINNs(hob, wfac) long hob; size wfac; 
{
	printf(" INN %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrINNz() {
	printf(" INN\n");
}

PRIVATE PrIORl2(arg) long arg; 
{
	printf(" IOR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrIORm(arg) long arg; 
{
	printf(" IOR %ld\n", arg);
}

PRIVATE PrIORs(hob, wfac) long hob; size wfac; 
{
	printf(" IOR %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrIORz() {
	printf(" IOR\n");
}

PRIVATE PrLAEu(arg) long arg; 
{
	printf(" LAE %ld\n", Ut_arg() * arg);
}

PRIVATE PrLAEl4(arg) long arg; 
{
	printf(" LAE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLAEs(hob, wfac) long hob; size wfac; 
{
	printf(" LAE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLALm(arg) long arg; 
{
	printf(" LAL %ld\n", arg);
}

PRIVATE PrLALn2(arg) long arg; 
{
	printf(" LAL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrLALn4(arg) long arg; 
{
	printf(" LAL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrLALp2(arg) long arg; 
{
	printf(" LAL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrLALp4(arg) long arg; 
{
	printf(" LAL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrLALs(hob, wfac) long hob; size wfac; 
{
	printf(" LAL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLARl2(arg) long arg; 
{
	printf(" LAR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLARm(arg) long arg; 
{
	printf(" LAR %ld\n", arg);
}

PRIVATE PrLARz() {
	printf(" LAR\n");
}

PRIVATE PrLDCl2(arg) long arg; 
{
	printf(" LDC %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLDCl4(arg) long arg; 
{
	printf(" LDC %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLDCm(arg) long arg; 
{
	printf(" LDC %ld\n", arg);
}

PRIVATE PrLDEl2(arg) long arg; 
{
	printf(" LDE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLDEl4(arg) long arg; 
{
	printf(" LDE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLDEs(hob, wfac) long hob; size wfac; 
{
	printf(" LDE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLDFl2(arg) long arg; 
{
	printf(" LDF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLDFl4(arg) long arg; 
{
	printf(" LDF %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLDLm(arg) long arg; 
{
	printf(" LDL %ld\n", arg);
}

PRIVATE PrLDLn2(arg) long arg; 
{
	printf(" LDL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrLDLn4(arg) long arg; 
{
	printf(" LDL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrLDLp2(arg) long arg; 
{
	printf(" LDL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrLDLp4(arg) long arg; 
{
	printf(" LDL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrLDLs(hob, wfac) long hob; size wfac; 
{
	printf(" LDL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLFRl2(arg) long arg; 
{
	printf(" LFR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLFRm(arg) long arg; 
{
	printf(" LFR %ld\n", arg);
}

PRIVATE PrLFRs(hob, wfac) long hob; size wfac; 
{
	printf(" LFR %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLILm(arg) long arg; 
{
	printf(" LIL %ld\n", arg);
}

PRIVATE PrLILn2(arg) long arg; 
{
	printf(" LIL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrLILn4(arg) long arg; 
{
	printf(" LIL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrLILp2(arg) long arg; 
{
	printf(" LIL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrLILp4(arg) long arg; 
{
	printf(" LIL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrLILs(hob, wfac) long hob; size wfac; 
{
	printf(" LIL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLIMz() {
	printf(" LIM\n");
}

PRIVATE PrLINl2(arg) long arg; 
{
	printf(" LIN %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLINl4(arg) long arg; 
{
	printf(" LIN %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLINs(hob, wfac) long hob; size wfac; 
{
	printf(" LIN %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLNIz() {
	printf(" LNI\n");
}

PRIVATE PrLOCl2(arg) long arg; 
{
	printf(" LOC %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLOCl4(arg) long arg; 
{
	printf(" LOC %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLOCm(arg) long arg; 
{
	printf(" LOC %ld\n", arg);
}

PRIVATE PrLOCs(hob, wfac) long hob; size wfac; 
{
	printf(" LOC %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLOEl2(arg) long arg; 
{
	printf(" LOE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLOEl4(arg) long arg; 
{
	printf(" LOE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLOEs(hob, wfac) long hob; size wfac; 
{
	printf(" LOE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLOFl2(arg) long arg; 
{
	printf(" LOF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLOFl4(arg) long arg; 
{
	printf(" LOF %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLOFm(arg) long arg; 
{
	printf(" LOF %ld\n", arg);
}

PRIVATE PrLOFs(hob, wfac) long hob; size wfac; 
{
	printf(" LOF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLOIl2(arg) long arg; 
{
	printf(" LOI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLOIl4(arg) long arg; 
{
	printf(" LOI %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLOIm(arg) long arg; 
{
	printf(" LOI %ld\n", arg);
}

PRIVATE PrLOIs(hob, wfac) long hob; size wfac; 
{
	printf(" LOI %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLOLm(arg) long arg; 
{
	printf(" LOL %ld\n", arg);
}

PRIVATE PrLOLn2(arg) long arg; 
{
	printf(" LOL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrLOLn4(arg) long arg; 
{
	printf(" LOL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrLOLp2(arg) long arg; 
{
	printf(" LOL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrLOLp4(arg) long arg; 
{
	printf(" LOL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrLOLs(hob, wfac) long hob; size wfac; 
{
	printf(" LOL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLORs(hob, wfac) long hob; size wfac; 
{
	printf(" LOR %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrLOSl2(arg) long arg; 
{
	printf(" LOS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLOSz() {
	printf(" LOS\n");
}

PRIVATE PrLPBz() {
	printf(" LPB\n");
}

PRIVATE PrLPIl2(arg) long arg; 
{
	printf(" LPI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLPIl4(arg) long arg; 
{
	printf(" LPI %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrLXAl2(arg) long arg; 
{
	printf(" LXA %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLXAm(arg) long arg; 
{
	printf(" LXA %ld\n", arg);
}

PRIVATE PrLXLl2(arg) long arg; 
{
	printf(" LXL %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrLXLm(arg) long arg; 
{
	printf(" LXL %ld\n", arg);
}

PRIVATE PrMLFl2(arg) long arg; 
{
	printf(" MLF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrMLFs(hob, wfac) long hob; size wfac; 
{
	printf(" MLF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrMLFz() {
	printf(" MLF\n");
}

PRIVATE PrMLIl2(arg) long arg; 
{
	printf(" MLI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrMLIm(arg) long arg; 
{
	printf(" MLI %ld\n", arg);
}

PRIVATE PrMLIz() {
	printf(" MLI\n");
}

PRIVATE PrMLUl2(arg) long arg; 
{
	printf(" MLU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrMLUz() {
	printf(" MLU\n");
}

PRIVATE PrMONz() {
	printf(" MON\n");
}

PRIVATE PrNGFl2(arg) long arg; 
{
	printf(" NGF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrNGFz() {
	printf(" NGF\n");
}

PRIVATE PrNGIl2(arg) long arg; 
{
	printf(" NGI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrNGIz() {
	printf(" NGI\n");
}

PRIVATE PrNOPz() {
	printf(" NOP\n");
}

PRIVATE PrRCKl2(arg) long arg; 
{
	printf(" RCK %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrRCKm(arg) long arg; 
{
	printf(" RCK %ld\n", arg);
}

PRIVATE PrRCKz() {
	printf(" RCK\n");
}

PRIVATE PrRETl2(arg) long arg; 
{
	printf(" RET %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrRETm(arg) long arg; 
{
	printf(" RET %ld\n", arg);
}

PRIVATE PrRETs(hob, wfac) long hob; size wfac; 
{
	printf(" RET %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrRMIl2(arg) long arg; 
{
	printf(" RMI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrRMIm(arg) long arg; 
{
	printf(" RMI %ld\n", arg);
}

PRIVATE PrRMIz() {
	printf(" RMI\n");
}

PRIVATE PrRMUl2(arg) long arg; 
{
	printf(" RMU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrRMUz() {
	printf(" RMU\n");
}

PRIVATE PrROLl2(arg) long arg; 
{
	printf(" ROL %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrROLz() {
	printf(" ROL\n");
}

PRIVATE PrRORl2(arg) long arg; 
{
	printf(" ROR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrRORz() {
	printf(" ROR\n");
}

PRIVATE PrRTTz() {
	printf(" RTT\n");
}

PRIVATE PrSARl2(arg) long arg; 
{
	printf(" SAR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSARm(arg) long arg; 
{
	printf(" SAR %ld\n", arg);
}

PRIVATE PrSARz() {
	printf(" SAR\n");
}

PRIVATE PrSBFl2(arg) long arg; 
{
	printf(" SBF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSBFs(hob, wfac) long hob; size wfac; 
{
	printf(" SBF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSBFz() {
	printf(" SBF\n");
}

PRIVATE PrSBIl2(arg) long arg; 
{
	printf(" SBI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSBIm(arg) long arg; 
{
	printf(" SBI %ld\n", arg);
}

PRIVATE PrSBIz() {
	printf(" SBI\n");
}

PRIVATE PrSBSl2(arg) long arg; 
{
	printf(" SBS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSBSz() {
	printf(" SBS\n");
}

PRIVATE PrSBUl2(arg) long arg; 
{
	printf(" SBU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSBUz() {
	printf(" SBU\n");
}

PRIVATE PrSDEu(arg) long arg; 
{
	printf(" SDE %ld\n", Ut_arg() * arg);
}

PRIVATE PrSDEl4(arg) long arg; 
{
	printf(" SDE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrSDFl2(arg) long arg; 
{
	printf(" SDF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSDFl4(arg) long arg; 
{
	printf(" SDF %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrSDLn2(arg) long arg; 
{
	printf(" SDL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrSDLn4(arg) long arg; 
{
	printf(" SDL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrSDLp2(arg) long arg; 
{
	printf(" SDL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrSDLp4(arg) long arg; 
{
	printf(" SDL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrSDLs(hob, wfac) long hob; size wfac; 
{
	printf(" SDL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSETl2(arg) long arg; 
{
	printf(" SET %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSETs(hob, wfac) long hob; size wfac; 
{
	printf(" SET %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSETz() {
	printf(" SET\n");
}

PRIVATE PrSIGz() {
	printf(" SIG\n");
}

PRIVATE PrSILn2(arg) long arg; 
{
	printf(" SIL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrSILn4(arg) long arg; 
{
	printf(" SIL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrSILp2(arg) long arg; 
{
	printf(" SIL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrSILp4(arg) long arg; 
{
	printf(" SIL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrSILs(hob, wfac) long hob; size wfac; 
{
	printf(" SIL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSIMz() {
	printf(" SIM\n");
}

PRIVATE PrSLIl2(arg) long arg; 
{
	printf(" SLI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSLIm(arg) long arg; 
{
	printf(" SLI %ld\n", arg);
}

PRIVATE PrSLIz() {
	printf(" SLI\n");
}

PRIVATE PrSLUl2(arg) long arg; 
{
	printf(" SLU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSLUz() {
	printf(" SLU\n");
}

PRIVATE PrSRIl2(arg) long arg; 
{
	printf(" SRI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSRIz() {
	printf(" SRI\n");
}

PRIVATE PrSRUl2(arg) long arg; 
{
	printf(" SRU %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSRUz() {
	printf(" SRU\n");
}

PRIVATE PrSTEl2(arg) long arg; 
{
	printf(" STE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSTEl4(arg) long arg; 
{
	printf(" STE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrSTEs(hob, wfac) long hob; size wfac; 
{
	printf(" STE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSTFl2(arg) long arg; 
{
	printf(" STF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSTFl4(arg) long arg; 
{
	printf(" STF %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrSTFm(arg) long arg; 
{
	printf(" STF %ld\n", arg);
}

PRIVATE PrSTFs(hob, wfac) long hob; size wfac; 
{
	printf(" STF %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSTIl2(arg) long arg; 
{
	printf(" STI %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSTIl4(arg) long arg; 
{
	printf(" STI %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrSTIm(arg) long arg; 
{
	printf(" STI %ld\n", arg);
}

PRIVATE PrSTIs(hob, wfac) long hob; size wfac; 
{
	printf(" STI %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSTLm(arg) long arg; 
{
	printf(" STL %ld\n", arg);
}

PRIVATE PrSTLn2(arg) long arg; 
{
	printf(" STL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrSTLn4(arg) long arg; 
{
	printf(" STL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrSTLp2(arg) long arg; 
{
	printf(" STL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrSTLp4(arg) long arg; 
{
	printf(" STL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrSTLs(hob, wfac) long hob; size wfac; 
{
	printf(" STL %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSTRs(hob, wfac) long hob; size wfac; 
{
	printf(" STR %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrSTSl2(arg) long arg; 
{
	printf(" STS %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrSTSz() {
	printf(" STS\n");
}

PRIVATE PrTEQz() {
	printf(" TEQ\n");
}

PRIVATE PrTGEz() {
	printf(" TGE\n");
}

PRIVATE PrTGTz() {
	printf(" TGT\n");
}

PRIVATE PrTLEz() {
	printf(" TLE\n");
}

PRIVATE PrTLTz() {
	printf(" TLT\n");
}

PRIVATE PrTNEz() {
	printf(" TNE\n");
}

PRIVATE PrTRPz() {
	printf(" TRP\n");
}

PRIVATE PrXORl2(arg) long arg; 
{
	printf(" XOR %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrXORz() {
	printf(" XOR\n");
}

PRIVATE PrZEQl2(arg) long arg; 
{
	printf(" ZEQ %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZEQl4(arg) long arg; 
{
	printf(" ZEQ %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZEQs(hob, wfac) long hob; size wfac; 
{
	printf(" ZEQ %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZERl2(arg) long arg; 
{
	printf(" ZER %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZERs(hob, wfac) long hob; size wfac; 
{
	printf(" ZER %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZERz() {
	printf(" ZER\n");
}

PRIVATE PrZGEl2(arg) long arg; 
{
	printf(" ZGE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZGEl4(arg) long arg; 
{
	printf(" ZGE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZGEs(hob, wfac) long hob; size wfac; 
{
	printf(" ZGE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZGTl2(arg) long arg; 
{
	printf(" ZGT %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZGTl4(arg) long arg; 
{
	printf(" ZGT %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZGTs(hob, wfac) long hob; size wfac; 
{
	printf(" ZGT %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZLEl2(arg) long arg; 
{
	printf(" ZLE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZLEl4(arg) long arg; 
{
	printf(" ZLE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZLEs(hob, wfac) long hob; size wfac; 
{
	printf(" ZLE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZLTl2(arg) long arg; 
{
	printf(" ZLT %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZLTl4(arg) long arg; 
{
	printf(" ZLT %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZLTs(hob, wfac) long hob; size wfac; 
{
	printf(" ZLT %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZNEl2(arg) long arg; 
{
	printf(" ZNE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZNEl4(arg) long arg; 
{
	printf(" ZNE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZNEs(hob, wfac) long hob; size wfac; 
{
	printf(" ZNE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZREl2(arg) long arg; 
{
	printf(" ZRE %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZREl4(arg) long arg; 
{
	printf(" ZRE %ld\n", Lt_arg_4() * arg);
}

PRIVATE PrZREs(hob, wfac) long hob; size wfac; 
{
	printf(" ZRE %ld\n", St_arg(hob) * wfac);
}

PRIVATE PrZRFl2(arg) long arg; 
{
	printf(" ZRF %ld\n", Lt_arg_2() * arg);
}

PRIVATE PrZRFz() {
	printf(" ZRF\n");
}

PRIVATE PrZRLm(arg) long arg; 
{
	printf(" ZRL %ld\n", arg);
}

PRIVATE PrZRLn2(arg) long arg; 
{
	printf(" ZRL %ld\n", Nt_arg_2() * arg);
}

PRIVATE PrZRLn4(arg) long arg; 
{
	printf(" ZRL %ld\n", Nt_arg_4() * arg);
}

PRIVATE PrZRLp2(arg) long arg; 
{
	printf(" ZRL %ld\n", Pt_arg_2() * arg);
}

PRIVATE PrZRLp4(arg) long arg; 
{
	printf(" ZRL %ld\n", Pt_arg_4() * arg);
}

PRIVATE PrZRLs(hob, wfac) 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;
};

disassemble()
{
	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 do_pr_instr(opcode)
	unsigned int opcode;
{
	switch (opcode) {
#include	"switch/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 %d at PC = %lu <<<<\n",
					opcode, TC);
			break;
	}
}



