Google
 

Trailing-Edge - PDP-10 Archives - AP-D471B-SB_1978 - mgnmac.bli
There are no other files named mgnmac.bli in the archive.
!***COPYRIGHT (C) 1974, 1975, 1976, 1977 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
! MGNMAC.BLI
! ====== ===
! MACROS AND OTHER GOOD THINGS REQUIRED BY ALL MCSGEN MODULES

! ***  LAST MODIFIED ON   27-MAY-76   ILG

! DONT BOTHER TO LIST THIS FILE

SWITCHES NOLIST;

STRUCTURE	FORMAT[WD,I,J] = (..FORMAT + .WD)<.I,.J>;
STRUCTURE	ROOTFORMAT[WD,I,J] = (.ROOTFORMAT + .WD)<.I,.J>;


BIND
	TRUE = 1,				! BLISS' VALUE OF TRUE
	FALSE = 0,				! BLISS' VALUE OF FALSE
	GOOD = TRUE,
	BAD = FALSE,
	ENABLED = TRUE,
	DISABLED = FALSE,
	CHKPNT = TRUE,

	MAXLEVEL = 4,
	ARGLISTSIZE = 19,
	YES = TRUE,
	NO =FALSE,
	NONEOK = TRUE,
	JUSTTELL = TRUE,
	BEFORE = 0,
	AFTER = 1,
	ICHAN = 1,
	OCHAN = 2,

	NC=CMDCOUNT,

	VIRGINBUFFER = #400000000000,
	BASE10 = 10,
	BASE8 = 8,
	DEFAULTOK = TRUE,
	CRONLY = TRUE,
	BIGNUMBER = #777777,
	KFLAG = #400000,

	PTLSIZE = 32,

	CMDTMPFILENAME = SIXBIT "MGC",
	IMAGETMPFILENAME = SIXBIT "MGI",

	BINFILEID = SIXBIT 'MCSGEN',

	MODTYPE = 1,
	NEWTYPE = 0;


MACRO
	FAILED = EQL BAD$,
	BIT(Z) = 35-(Z), 1$,					! USED TO DEFINE ONE BIT AS NUMBERED ON THE TEN
								! GIVES THE NUMBER OF BITS TO THE RIGHT OF IT
	BITS(A,B) = 35-(B),(B)-(A)+1$,				! LIKE BIT EXCEPT DEFINES BITS A THRU B INCLUSIVE
	COMMENT = SWITCHES NOINSPECT$,				! CAUSES BLISS TO GENERATE THE CODE FOR THE
								! PRECEEDING ROUTINES ( FOR PRETTY LISTINGS)
	REQ(A) = REQUIRE  A .BLI$,				! DOES REQUIRES, SAVES TYPING
	NOTE = !$,						! USED TO PUT A CREFED NOTE IN A MODULE
	PAZ = PLIT ASCIZ$,					! OBVIOUS
	REPEAT = WHILE TRUE DO$,				! INFINITE LOOP
	WORD = 0,36$,
	LH = 18,18$,
	RH = 0,18$,
	AFT = 18,18$,
	FORE = 0,18$,
	POS = 30,6$,
	SIZ = 24,6$,

	ASCIIPTR = 36,7$;


BIND	NONE = ( PAZ '<NONE>' )<36,7>;

!*********************************************************************
BIND	DEBUG = TRUE;

!*********************************************************************


BIND
	HYPEN = "-",
	TABCHAR = "?I",
	CRCHAR = "?M",
	LFCHAR = "?J",
	SPACE = " ",
	QMARK = "??",
	UPARROW = "^",
	DELLINE = "?U",
	RUBOUT = #177,
	CNTRLR="?R",
	LBRACKET="[",
	RBRACKET="]",
	LPAREN="(",
	RPAREN=")",
	NONETOKEN=-1,
	NULLCHAR=0;


BIND
	TTYCHANNEL = 0,
	LPTCHANNEL = 2,
	DSKCHANNEL = 3;

! CMDLINE IS WHERE COMMANDS ARE READ INTO
! ALINE IS WHERE SUPLEMENTARY INFO IS READ INTO

BIND	CMDLINELENGTH = 80,
	ALINELENGTH = 80;

BIND
	CONV = 1,
	MBM = 0;

MACRO
	CMDLINE = CMDBUFF,CMDBPTR,CMDCOUNT$,
	ALINE = ABUFF,ABPTR,ACOUNT$;

EXTERNAL	?.JBVER, ?.JBFF;

MACRO
	VGROUP = BITS(0,2)$,
	VMAJOR = BITS(3,11)$,
	VMINOR = BITS(12,17)$,
	VEDIT = BITS(18,35)$;

BIND VER=?.JBVER;

! SOME NICE MACROS:
 MACRO	EOL(CHAR)=(.CHAR EQL #15 %CR%
		OR .CHAR EQL #12 %LF%
		OR .CHAR EQL #14 %FF%
		OR .CHAR EQL "!" %COMMENT%)$,
	BLANK(CHAR)=(.CHAR EQL " " %SPACE%
		OR .CHAR EQL #11 %TAB%)$,
	SKIPBLANKS(BUFF,BPTR,BCOUNT,CHAR)=WHILE BLANK(CHAR) DO ADV(BUFF,BPTR,BCOUNT,CHAR)$,
	NUMERIC(CHAR)=(.CHAR GEQ "0" AND .CHAR LEQ "9")$,
	ALPHABETIC(CHAR)=(.CHAR GEQ "A" AND .CHAR LEQ "Z")$,
	ALPHANUMERIC(CHAR)=(NUMERIC(CHAR) OR ALPHABETIC(CHAR))$,
	NEWCMD(CHAR)=(.CHAR EQL ";")$,
	COMMNT(CHAR)=(.CHAR EQL "!")$,
	ADV(BUFF,PBUFF,NC,CHAR)=(NC_.NC+1; CHAR_SCANI(PBUFF))$;

! CLASSES OF OUTPUT COMMANDS:
! OUTS, OUTSA, OUTC, CRLF, TAB, CR, LF			GO TO THE CONTROLLING TTY
! TYPE, XTYPE, TYPECRLF, TYPETAB, TYPEBELL		CALL OUTC DEPENDING ON THE MSGLEVEL
! PUT, XPUT, PUTCOMMA, PUTWORD				GO TO A DEVICE
! OUTPUT, OUTPUTC, OUTPUTCRLF				DOES A PUT OR OUTC DEPENDING ON DCHANNEL


MACRO	TYPE(A) = XTYPE(PLIT ASCIZ A)$,
	TYPECRLF = XTYPE(PLIT ASCIZ '?M?J')$,
	TYPETAB = XTYPE(PLIT ASCIZ '?I')$,
	TYPEBELL = XTYPE(PLIT ASCIZ '?G')$,

	OUTPUT(Z) = XOUTPUT(PLIT ASCIZ Z)$,
	OUTPUTCRLF = OUTCRLF()$,
	OUTPUTTAB = OUTTAB()$,
	OUTPUTCOMMA = OUTCOM()$,
	PUT(Z) = XPUT(PLIT ASCIZ Z)$,
	PUTCOMMA = XPUT(PLIT ASCIZ ',')$,

	ASKSTR(A,B,C) = ASKS(PLIT ASCII A,B,C)$,
	ASKDNUM( Q, DFLAG, DVAL, MINVAL, MAXVAL ) = ASKNUM( BASE10, PAZ Q, DFLAG, DVAL, MINVAL, MAXVAL )$,
	ASKONUM( Q, DFLAG, DVAL, MINVAL, MAXVAL ) = ASKNUM( BASE8, PAZ Q, DFLAG, DVAL, MINVAL, MAXVAL )$,
	ASKSIZE( Q ) = ASKSZ( PAZ Q )$,
	NEWASKDNUM( Q, DFLAG, DVAL, SR, MINVAL, MAXVAL ) = NASKNUM( BASE10, PAZ Q, DFLAG, DVAL, SR, MINVAL, MAXVAL )$,
	NEWASKONUM( Q, DFLAG, DVAL, SR, MINVAL, MAXVAL ) = NASKNUM( BASE8, PAZ Q, DFLAG, DVAL, SR, MINVAL, MAXVAL )$,
	NEWASKSIZE( Q, S, D ) = NASKSZ( PAZ Q, S, D )$,
	ASKBITS( Q, A, L) = ASKBS( PAZ Q, A, L)$,
	ASKFSPEC( Q, SB) = ASKFD( PAZ Q, SB )$,
	NEWASKFSPEC( Q, SB, SR, OLD) = NASKFD( PAZ Q, SB, SR, OLD )$,
	ASKCHARS( Q, A, L) = ASKCS( PAZ Q, A, L)$,
	ASKNAME( Q, L ) = ASKNM( PAZ Q, L )$,
	ASKYESORNO( Q, DEF ) = ASKYN( PAZ Q, DEF )$,
	ASK2FSPEC( Q, SB1, SB2 ) = ASK2FD( PAZ Q, SB1, SB2 )$,
	NEWASK2FSPEC( Q, SB1, SB2 ) = NASK2FD( PAZ Q, SB1, SB2 )$,
	ASKSWITCH( Q, SW ) = ASKSW( PAZ Q, SW )$,
	ASKLINE( Q ) = ASKL( PAZ Q )$,
	DETACHNODE( NODE ) = DTCHND( NODE )$,
	ATTACHNODE( NODE, PARENTPTR, BEFOREFLG, SIBPTR ) = ATCHND( NODE, PARENTPTR, BEFOREFLG, SIBPTR )$,
	OUTPUTB( BOOL ) = OUTBOO( BOOL )$,
	OUTPUTO( NUM ) = OUTPUTN( NUM, BASE8, 1 )$,
	OUTPUTD( NUM ) = OUTPUTN( NUM, BASE10, 1 )$,
	OUTPUTC( CHAR ) = OUTTC( CHAR )$,
	OUTPUTN( BASE, NUM, SIZE ) = OUTTN( BASE, NUM ,SIZE )$,
	OUTPUTSWORD( WRD ) = OUTTSWORD( WRD )$,
	OUTPUTSHALF( WRD ) = OUTTSHALFW( WRD )$,
	OUTPUTM( C, N ) = OUTTM( C, N )$,
	OUTPUTFSPEC( SB ) = OUTTFSPEC( SB )$,
	OUTPUTFB( SB ) = OUTTFB( SB )$,
	OUTPUTBITS( WHERE, LEN ) = OUTTBS( WHERE, LEN )$,
	OUTPUTSTR( WHERE, LEN ) = OUTTST( WHERE, LEN )$,


	MAKEBUFFERRING( HDR, PTR, B1, B2, B3 ) =
		HDR[0] _ VIRGINBUFFERRING + B1<0,0> + 1;
		HDR[1] _ PTR;
		B1[1]<LH> _ BUFFSIZE - 2;
		B1[1]<RH> _ B2<0,0> + 1;
		B2[1]<LH> _ BUFFSIZE - 2;
		B2[1]<RH> _ B3<0,0> + 1;
		B3[1]<LH> _ BUFFSIZE - 2;
		B3[1]<RH> _ B1<0,0> + 1$;


!*********************************************************************
! DEFINE A PORT TABLE ENTRY FORMAT
!*********************************************************************

BIND
	PT0NAMESIZE=6,
	PT0NAMELEN=PT0NAMESIZE/5+1,
	PT0SIZE = PT0NAMELEN + 3;

MACRO

	! DEFINATION OF THE FIELDS OF A PORT TABLE ENTRY

	PT0LINKS = 0,WORD$,			! LINK POINTER FIELD
	    PT0FORE = 0,FORE$,			! FORWARD POINTER
	    PT0AFT = 0,AFT$,			! BACKWARD POINTER
	PT0NAME = 1,WORD$,			! PORT NAME FIELD
	PT0FLAGS = PT0NAMELEN+1,LH$,		! FLAGS FIELD
	PT0SRCPTR = PT0NAMELEN+1,RH$,		! POINTER TO ASSOCIATED TERMINAL 
	PT0PORTNO = PT0NAMELEN+2,RH$;		! NUMBER OF PORT FOR OUTPUT
!	UNUSED = PT0NAMELEN+2,LH$;		! UNUSED

!*********************************************************************
! DEFINE AN MPP TABLE ENTRY FORMAT
!*********************************************************************

BIND
	M0NAMESIZE=12,
	M0NAMELEN=M0NAMESIZE/5+1,
	M0SIZE=M0NAMELEN + 6;

MACRO

	! DEFINATION OF THE FIELDS OF AN MPP TABLE ENTRY

	M0LINKS = 0,WORD$,			! LINK POINTER FIELD
	    M0FORE = 0,FORE$,			! FORWARD POINTER
	    M0AFT = 0,AFT$,			! BACKWARD POINTER
	M0NAME = 1,WORD$,			! MPP NAME FIELD
	M0LISTPTRS = M0NAMELEN + 1, WORD$,		! MPP USERS POINTERS
	    M0FLIST = M0NAMELEN + 1, FORE$,		! FORWARD POINTER
	    M0LLIST = M0NAMELEN + 1, AFT$,		! BACKWARD POINTER
	M0EGOS = M0NAMELEN + 2, WORD$,		! MPP ALTEREGO POINTERS
	    M0FEGO = M0NAMELEN + 2, FORE$,	! FORWARD POINTER
	    M0LEGO = M0NAMELEN + 2, AFT$,	! BACKWARD POINTER
	M0MAX = M0NAMELEN + 3,LH$,		! MAXIMUM COPIES THAT MAY RUN
	M0MIN = M0NAMELEN + 3,RH$,		! MINIMUM COPIES THAT MUST RUN
	M0FLAGS = M0NAMELEN + 4,LH$,		! FLAGS FIELD
	    M0TOBEDEFINED = M0NAMELEN + 4,BIT(0)$,	! TO BE DEFINED FLAG, 1 IF ONLY NAME KNOWN
	    M0HPQ = M0NAMELEN + 4,BITS(1,4)$,		! HPQ THAT THE MPP IS TO BE RUN IN
	    M0LOCK = M0NAMELEN + 4,BIT(5)$,	! MPP TO BE LOCKED FLAG
	    M0IMMORTAL = M0NAMELEN + 4,BIT(6)$,	! MPP IS NOT TO BE KILLED FLAG
	M0INITIAL = M0NAMELEN + 4,RH$,		! INITIAL COPIES TO START
	M0MPPNO = M0NAMELEN + 5,RH$;		! MPP NUMBER
!	UNUSED = M0NAMELEN + 5,LH$;		! UNUSED



BIND
	E0SIZE = 5;			! THE ALTEREGO'S LENGTH IS

MACRO
	! ALTEREGO FIELD DEFINATIONS

	E0EGOS = 0, WORD$,		! MPP ALTEREGO POINTERS
	    E0FORE = 0, FORE$,		! FORWARD POINTER
	    E0AFT = 0, AFT$,		! BACKWARD POINTER
	E0SPECBLK = 1, WORD$,		! FILE SPEC BLK (MUST BE IN SAME ORDER AS SPECBLK)
	    E0DEVICE = 1, WORD$,		! DEVICE NAME
	    E0FILENAME = 2, WORD$,		! MPP EGO FILE NAME
	    E0EXT = 3, WORD$,		! MPP EGO EXTENSION
	    E0CORE = 3, RH$,		! MPP INITIAL CORE IN K
		E0KFLAG = 3, BIT(18)$,	! FLAG TO INDICATE WEITHER KCORE IS IN K OR P
		E0KCORE = 3, BITS(19,35)$,	! AMOUNT OF CORE
	    E0PPN = 4, WORD$,		! MPP FILE PROJ/PROG NUMBER
		E0PROJ = 4, LH$,		! PROJECT NUMBER PART OF PPN
		E0PROG = 4, RH$;		! PROGRAMMER NUMBER PART OF PPN

!*********************************************************************
! DEFINE A SPECBLK FORMAT
!*********************************************************************

BIND
	SPECBLKLEN = 4;

MACRO
	SB0DEVICE = 0, WORD$,		! DEVICE NAME
	SB0NAME = 1, WORD$,		! SPECBLK FILE NAME
	SB0EXT = 2, LH$,		! SPECBLK EXTENSION
	SB0CORE = 2, RH$,		! SPECBLK INITIAL CORE IN K
	    SB0KFLAG = 2, BIT(18)$,	! FLAG TO INDICATE WEITHER KCORE IS IN K OR P
	    SB0KCORE = 2, BITS(19,35)$,	! AMOUNT OF CORE
	SB0PPN = 3, WORD$,		! SPECBLK FILE PROJ/PROG NUMBER
	    SB0PROJ = 3, LH$,		! PROJECT NUMBER PART OF PPN
	    SB0PROG = 3, RH$;		! PROGRAMMER NUMBER PART OF PPN

!*********************************************************************
! DEFINE A TREE ENTRY FORMAT
!*********************************************************************

BIND
	N0NAMESIZE = 12 %CHARACTERS%,
	N0NAMELEN = N0NAMESIZE/5 + 1 %WORDS%,
	N0TRCODESIZE = 12 %CHARACTERS%,
	N0TRCODELEN = N0TRCODESIZE/5 + 1 %WORDS%,
	N0OPNAMESIZE = 12 %CHARACTERS%,
	N0OPNAMELEN = N0OPNAMESIZE/5 + 1 %WORDS%,
	N0SIZE = N0NAMELEN + N0TRCODELEN + N0OPNAMELEN + 8,
	LEVELMAX = 4;

MACRO
	N0SIBS = 0, WORD$,
	    N0LSIB = 0,LH$,
	    N0RSIB = 0,RH$,
	N0NAMEW = 1,WORD$,
	    N0NAME = 1, 36, 7$,
	N0CHILDREN = N0NAMELEN+1, WORD$,
	    N0FIRSTCHILD = N0NAMELEN+1,FORE$,
	    N0LASTCHILD = N0NAMELEN+1,AFT$,
	N0MPPOFFSETT = N0NAMELEN + 2$,
	N0MPPLINKS = N0MPPOFFSETT, WORD$,
	    N0MPPFORE = N0MPPOFFSETT,FORE$,
	    N0MPPAFT = N0MPPOFFSETT,AFT$,
	N0THRESH = N0NAMELEN+3,LH$,
	N0LEVEL = N0NAMELEN+3,RH$,
	N0FLAGS = N0NAMELEN+4,LH$,
	    N0TOBEDEFINED = N0NAMELEN+4,BIT(0)$,
	    N0STATUS = N0NAMELEN+4,BIT(1)$,
	    N0OPSTATUS = N0NAMELEN+4,BIT(2)$,
	    N0OPFLAG = N0NAMELEN+4,BIT(3)$,
	    N0CHKPNT = N0NAMELEN+4,BIT(4)$,
	N0PARENT = N0NAMELEN+4,RH$,
	N0QUOTA = N0NAMELEN+5,LH$,
	N0MPPPTR = N0NAMELEN+5,RH$,
	N0TRCODE = N0NAMELEN+6,WORD$,
	N0OPNAME = N0NAMELEN+N0TRCODELEN+6,WORD$,
	N0NO = N0NAMELEN+N0TRCODELEN+N0OPNAMELEN+6,LH$,
	N0LEAFNO = N0NAMELEN+N0TRCODELEN+N0OPNAMELEN+7,LH$;
!	UNUSED = N0NAMELEN+N0TRCODELEN+N0OPNAMELEN+7,RH$;

!*********************************************************************
! DEFINE A TERMINAL TABLE ENTRY FORMAT
!*********************************************************************

BIND
	T0CNAMESIZE = 12 %CHARACTERS%,
	T0CNAMELEN = T0CNAMESIZE/5 + 1 %WORDS%,
	T0TNAMESIZE = 5 %CHARACTERS%,
	T0TNAMELEN = T0TNAMESIZE/5 + 1 %WORDS%,
	T0SIZE = T0CNAMELEN + T0TNAMELEN +6;

MACRO
	T0LINKS = 0, WORD$,
	    T0FORE = 0, FORE$,
	    T0AFT = 0, AFT$,
	T0CNAME = 1,WORD$,
	T0TNAME = T0CNAMELEN+1, WORD$,
	T0TNAMEASCII = T0CNAMELEN+1, ASCIIPTR$,	! ANOTHER WAY OF LOOKING AT T0TNAME
	T0PORTPTR = T0CNAMELEN + T0TNAMELEN+1, LH$,
!	UNUSED = T0CNAMELEN + T0TNAMELEN+1,RH$,
	T0FLAGS = T0CNAMELEN + T0TNAMELEN+2,LH$,
	    T0TOBEDEFINED = T0CNAMELEN + T0TNAMELEN+2,BIT(1)$,
	    T0STATUS = T0CNAMELEN + T0TNAMELEN+2,BITS(2,3)$,
	    T0TNAMEGIVEN = T0CNAMELEN + T0TNAMELEN+2,BIT(4)$,
	    T0OSTAT = T0CNAMELEN + T0TNAMELEN+2,BIT(5)$,
	T0TTYNO = T0CNAMELEN + T0TNAMELEN+2,RH$,
	T0PHONE = T0CNAMELEN + T0TNAMELEN+3,WORD$,
	T0LEAFSTATTAB = T0CNAMELEN + T0TNAMELEN+4,WORD$,
	    T0FIRSTLEAF = T0CNAMELEN + T0TNAMELEN + 4, FORE$,
	    T0LASTLEAF = T0CNAMELEN + T0TNAMELEN + 4, AFT$,
	T0ALTERPTR = T0CNAMELEN + T0TNAMELEN+5,WORD$,
	    T0FIRSTALTERNATE = T0CNAMELEN + T0TNAMELEN+5,FORE$,
	    T0LASTALTERNATE = T0CNAMELEN + T0TNAMELEN+5,AFT$;

!*********************************************************************
! DEFINE A ALTERNATE TERMINAL ENTRY FORMAT
!*********************************************************************

BIND
	A0SIZE = T0CNAMELEN + 1;

MACRO
	A0LINKS = 0, WORD$,
	    A0FORE = 0, FORE$,
	    A0AFT = 0, AFT$,
	A0CNAME = 1, WORD$;

!*********************************************************************
! DEFINE A LEAFSTATUS INDICATOR ENTRY FORMAT
!*********************************************************************

BIND
	L0SIZE = N0NAMELEN * 4 + 2;

MACRO
	L0LINKS = 0, WORD$,
	    L0FORE = 0, FORE$,
	    L0AFT = 0, AFT$,
	L0STATUS = 1, LH$,
	L0TYPE = 1, RH$,
	L0NODENAME = 2, WORD$,
	    L0PRIM = 2, WORD$,
	    L0SUB1 = N0NAMELEN + 2, WORD$,
	    L0SUB2 = N0NAMELEN * 2 + 2, WORD$,
	    L0SUB3 = N0NAMELEN * 3 + 2, WORD$;

!*********************************************************************
! DEFINE A PASSWORD ENTRY FORMAT
!*********************************************************************

BIND
	PW0LEN = 10,
	PW0WORDSIZE = PW0LEN / 5 + 1,
	PW0SIZE = PW0WORDSIZE + 1;

MACRO
	PW0LINKS = 0, WORD$,
	    PW0FORE = 0, FORE$,
	    PW0AFT = 0, AFT$,
	PW0WORD = 1, WORD$;

!*********************************************************************
! DEFINE A LOCAL MPP ENTRY FORMAT
!*********************************************************************

BIND
	LMPP0LEN = 6,
	LMPP0NAMESIZE = LMPP0LEN / 5 + 1,
	LMPP0SIZE = LMPP0NAMESIZE + 1;

MACRO
	LMPP0LINKS = 0, WORD$,
	    LMPP0FORE = 0, FORE$,
	    LMPP0AFT = 0, AFT$,
	LMPP0NAME = 1, WORD$;

!*********************************************************************
! DEFINE A TRCODE ENTRY FORMAT
!*********************************************************************

MACRO
	TR0SIZE = 0, RH$,			! LENGTH OF TRCODE IN WORDS
	TR0CHAR = 0, LH$,			! LENGTH OF TRCODE IN CHARACTERS
	TR0CODE = 1, WORD$,			! TRCODE
	TR0CODEASCII = 1, ASCIIPTR$;		! SAME AS TRCODE BUT IN INCREMENT TYPE BYTE POINTER

!*********************************************************************
! SPECIAL RESPONSE PLIT FORMAT
!*********************************************************************

MACRO
	SRES0VAL = 0, WORD$,			! THE VALUE OF A SPECIAL RESPONSE
	SRES0LIT = 1, 36, 7$;			! THE LITERAL OF A SPECIAL RESPONSE

!*********************************************************************
! PHONE NUMBER SIZES
!*********************************************************************

BIND
	PN0LEN = 40,
	PN0SIZE = PN0LEN / 5 + 1;

!*********************************************************************
! TTCALLS
!*********************************************************************

MACHOP	TTCALL=#51,
	CALLI=#47,
	OPEN = #50,
	CLOSE = #70,
	IN = #56,
	OUT = #57,
	LOOKUP = #76,
	ENTER = #77,
	RENAME = #55;

MACRO	INC=(TTCALL(4,VREG);.VREG)$,
	OUTC(Z)=(VREG_Z; TTCALL(1,VREG))$,
	OUTSA(Z)=TTCALL(3,Z)$,
	OUTS(Z)=TTCALL(3,PLIT ASCIZ Z)$,
	OUTSN(AP,N)=BEGIN
			REGISTER BP;
			BP_AP;
			DECR I FROM (N)-1 TO 0
				DO OUTC(SCANI(BP));
		   END$,
	OUTM(C,N)=DECR I FROM (N)-1 TO 0 DO OUTC(C)$,
	CR=OUTC(#15)$, LF=OUTC(#12)$,
	CRLF=OUTS('?M?J')$,
	TAB=OUTC(#11)$,
	PROMPT=OUTC("*")$,
	CORE(Z)=CALLI(Z,#11)$,
	PJOB( A ) = CALLI( A, #30 )$,
	RUNUUO( A ) = CALLI( A, #35 )$,
	TMPCOR( A ) = CALLI( A, #44 )$,
	XIT=CALLI(0,#12)$;

MACRO	OUTD(Z)=OUTN(Z,10,1)$,
	OUTO(Z)=OUTN(Z,8,1)$,
	OUTDR(Z,N)=OUTN(Z,10,N)$,
	OUTOR(Z,N)=OUTN(Z,8,N)$;
SWITCHES LIST;

! END OF MGNMAC.BLI