@T MTL29(7,8)
@C 1S-2R-3R-4F
@F 1-2-3-4
@B1
MONITOR PRINTING
@B2
EXTERNAL ENVIRONMENT
MODULE HEADING
@B3
.1 OUT VAR ADDR
.2 OUT PROC ADDR
.3 OUT CODE ADDR
.4 OUT CODE
@B4
END
@B1.1
@B2.1
LSPEC OUTPROG($IN,$IN,$IN);
::PDP*CODE 2;
#MTL29/1
MODULE(OUT.VAR.ADDR,OUT.PROC.ADDR,OUT.CODE.ADDR,OUT.CODE);
PSPEC OUT.VAR.ADDR(ADDR VAR.E);
PSPEC OUT.PROC.ADDR(ADDR PROC.E);
PSPEC OUT.CODE.ADDR();
;PSPEC OUT.CODE($IN,$IN)
;
@B3.1
#MTL29.1
#MTL29.2
#MTL29.3
#MTL29.4
@B4.1
*END
@E



@T MTL29/1(7,8)
@C 1S-2R-3R-4R-5F
@F 1-2-3-4-5
@B1
EXTERNAL ENVIRONMENT
@B2
TYPES
@B3
VARIABLES AND LITERALS
@B4
PROCEDURES
@B5
END
@B2.1
TYPE STORE.ADDR.TY IS
$LO32 STORE.RA,STORE.CA,MUSS.SFNS
ADDR[$LO8] STORE.DESC;
TYPE STORE.E IS
   $IN STORE.I,STORE.Z,STORE.EQ.Z
   $LO8 STORE.KIND,SEG.NO
   STORE.ADDR.TY STORE.ADDR
   $LO8 STORE.TX
 ADDR STORE.C.ADDR
$LO32 STORE.R.ADDR
$LO8 STORE.BASE,STORE.ACCESS;

IMPORT TYPE VAR.UNDEF.TY;
TYPE VAR.ADDR.TY IS
ADDR STORE.E VAR.STORE.P
$IN VAR.OFF OR
VAR.UNDEF.TY VAR.UNDEF;
IMPORT TYPE TYPE.E;
TYPE VAR.E IS
 $LO16 VAR.TYP $IN VAR.DIM $LO16 VAR.F
 ADDR TYPE.E VAR.TYP.P
 VAR.ADDR.TY VAR.ADDR;

IMPORT TYPE FWDREFTYPE;
IMPORT TYPE PAR.E;
TYPE PROC.ADDR.TY IS
 $LO32 PROCADDRESS
 ADDR FWDREFTYPE PROCSFLIT, PROCFWDREF;
TYPE PROCENTRYTY IS
 PROCADDRTY PROCADDR OR
 $LO32 PROCFINDN;
TYPE PROC.E IS
 $LO8 PROC.NAT
 $LO8 PROC.RES.TYP
 $LO8 PROC.INFO
 ADDR PAR.E PROC.PAR.P
 ADDR TYPE.E PROC.RES.TYP.P
 PROCENTRYTY ENTRY;
@B3.1
IMPORT LITERAL SEGSHIFT;
ADDR STORE.E CODE.SEG.P
@B4.1
$LS OUTNAME($LO64);
$LS NEWLINES($IN);
$LS CAPTION(ADDR[$LO8]);
$LS OUTHEX($LO32,$IN);
$LS SPACES($IN);
$LS OUTCH($IN);
$LS OUTI($IN,$IN);
$PS RUNADDR(ADDR STOREE,$IN)/$IN;
@E
@TITLE MTL29.1(7,8)
@COL 1S-4T-5R-6F
@COL 7R
@ROW 5-7
@FLOW 1-4N-5-6
@FLOW 4Y-7-6
@BOX 1.0
OUT VAR ADDR(^VAR)
@BOX 4.0
ABSOLUTE ADDRESS?
@BOX 5.0
OUTPUT 'OFFSET/TLEV'
@BOX 6.0
END
@BOX 7.0
OUTPUT ADDRESS
@BOX 1.1
PROC OUTVARADDR(VAR);
SELECT VARADDR OF VAR^;
@BOX 4.1
SELECT VARSTOREP^;
IF STOREKIND & 1 /= 0,
@BOX 5.1
OUTHEX(VAROFF,8);
OUTCH(',);
OUTI(STORETX,1);
@BOX 6.1
END;
@BOX 7.1
OUTHEX(RUNADDR(VARSTOREP,VAROFF),8);
SPACES(3);
@END
@TITLE MTL29.2(7,8)
@COL 1S-2R-3F
@FLOW 1-2-3
@BOX 1.0
OUT PROC ADDR (^PROC)
@BOX 2.0
OUTPUT ADDRESS
@BOX 3.0
END
@BOX 1.1
PROC OUTPROCADDR(PPROC);
@BOX 2.1
OUTHEX(PROCADDRESS OF PROCADDR OF ENTRY OF PPROC^,8);
@BOX 3.1
END;
@END
@TITLE MTL29.3(7,8)
@COL 1S-2R-3F
@FLOW 1-2-3
@BOX 1.0
OUT CODE ADDR()
@BOX 2.0
OUTPUT CURRENT CODE ADDRESS
@BOX 3.0
END
@BOX 1.1
PROC OUTCODEADDR;
@BOX 2.1
OUTHEX(RUNADDR(CODESEGP,-1),8);
@BOX 3.1
END;
@END
@TITLE MTL29.4(7,8)
@COL 1S-2R-3F
@FLOW 1-2-3
@BOX 1.0
OUT CODE(START,FINISH)
@BOX 2.0
OUT PROG (CURRENT CODE SEGMENT, START, FINISH)
@BOX 3.0
END
@BOX 1.1
PROC OUTCODE(START,FINISH);
@BOX 2.1
OUTPROG(BYTE(STOREDESC OF STOREADDR OF CODESEGP^)->>SEGSHIFT, START,FINISH);
@BOX 3.1
END;
@END

