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