Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/netgen/netmac.mac
There are no other files named netmac.mac in the archive.
;     NETMAC - NETGEN common universal file
;
;
;                    COPYRIGHT (c) 1980, 1981, 1982, 1985
;                    DIGITAL EQUIPMENT CORPORATION
;
;     This software is furnished under a license and may  be  used
;     and copied only in accordance with the terms of such license
;     and with the inclusion of the above copyright notice.   This
;     software  or any other copies thereof may not be provided or
;     otherwise made available to any other person.  No  title  to
;     and ownership of the software is hereby transferred.
;
;     The information  in  this  software  is  subject  to  change
;     without  notice  and should not be construed as a commitment
;     by DIGITAL EQUIPMENT CORPORATION.
;
;     DIGITAL assumes no responsibility for the use or reliability
;     of  its  software  on  equipment  which  is  not supplied by
;     DIGITAL.
;
	UNIVERSAL NETMAC
	SEARCH	GLXMAC			; General GLXLIB definitions
	SEARCH	ORNMAC			; Command block definitions
	SEARCH	MACSYM			; General macro defs
TOPS20<	SEARCH	MONSYM>
;
;   Set up NETGEN
;
DEFINE INIGEN(MODNAM,PFX),<
	SALL				; Make nice clean listings
	.DIRECTIVE FLBLST		; List only 1st binary word in multi
					;  word text strings
	SEARCH	GLXMAC			; General GLXLIB definitions
	SEARCH	ORNMAC			; Command block definitions
	SEARCH	MACSYM			; General macro defs
TOPS20<	SEARCH	MONSYM>
IFNB <PFX>,<
 DEFINE VOUTX($S2,$S3,$S4),<
  IFE $S3,<TITLE MODNAM $S2'('$S4')>
  IFN $S3,<TITLE MODNAM $S2'.'$S3'('$S4')>>
 IF1,<VOUTX(\NGNVER,\NGNMIN,\NGNEDT)>>
;
; PRTVER (MAJ,MIN,EDT) - Print out a version number in listing
;
DEFINE PRTVER (MAJ,MIN,EDT,DOT<.>), <
	IF1 <
	PRINTX MODNAM - Assembled using GLXMAC version: 'MAJ'DOT'MIN('EDT)>>
;	PRTVER (\GLXMAJ,\GLXMIN,\GLXEDT)
	PROLOGUE (MODNAM)
		>
;
; Initialize GLXLIB assembly options
;
;	.REQUIRE OPRPAR			; Where all the parser routines live
;
;   Internal macros
;
;   GLXMAC suplements
;
OPDEF	SETT	[SETO]
;
OPDEF	SETF	[SETZ]
;
OPDEF	SETTM	[SETOM]
;
OPDEF	SETFM	[SETZM]
;
DEFINE $DEFFAIL (TXT) <
	$TEXT	,<?TXT>
	$RETF>
;
DEFINE $DEFWARN (TXT) <
	$TEXT	,<%TXT>
	$RETT>
;
DEFINE $SYNFAIL (TXT) <
	MOVEI	S1,0
	MOVEI	S2,[ASCIZ\TXT\]
	$RETF>
;
DEFINE $SEMFAIL (TXT) <
	$TEXT	,<?TXT>
	$RETT>
;
DEFINE $SEMWARN (TXT) <
	$TEXT	,<%TXT>
	$RETT>
;
;  STRUCTURES:
;
;     Parse block
;
	XP	PRSFLG, 0
	DEFSTR	(PRSENT, 0,  5,  1) 	; Entity block flag
	DEFSTR	(PRSQUA, 0,  7,  1) 	; Qualifier block flag
	DEFSTR	(PRSPRV, 0,  8,  1)	; Privledge parameter flag
	DEFSTR	(PRSTYP, 0, 12,  4) 	; Node type applicability
	DEFSTR	(PRSMIN, 1, 17, 18)	; Low limit for number or string length
	DEFSTR	(PRSMAX, 1, 35, 18)	; Hi limit for number or string length
;
;     Entity/Qualifier block
;
;	DEFSTR	(PRSENT, 0,  5,  1) 	; Entity block flag
;	DEFSTR	(PRSPRV, 0,  8,  1)	; Privledge parameter flag
;	DEFSTR	(PRSTYP, 0, 12,  4) 	; Node type applicability
	DEFSTR	(ENTNUM, 0, 17,  4)	; Entity number
	DEFSTR	(ENTADR, 0, 35, 18)	; Entity address
;	DEFSTR	(PRSMIN, 1, 17, 18)	; Low limit for number or string length
;	DEFSTR	(PRSMAX, 1, 35, 18)	; Hi limit for number or string length
	XP	ENTDSP, 2		; Optional display routine address
					;  *OR*
	DEFSTR	(ENTTXT, ENTDSP, 35, 18) ; Text for entity display
	XP	ENTDEF, 3		; JRST to store routine for entity
	XP	ENTKNO, 4		; JRST to set KNOWN for entity
	XP	ENTLIS, 5		; JRST to list routine for entity
	XP	ENTSIZ, 6		;  (number of entries for $BUILD)
;
;     Entity/Qualifier list extension
;
	XP	EMAX, 6			; Address of maximum number of entries
	XP	ECUR, 7			; Address of current number of entries
	XP	EPTR,10			; Identifier list address offset
	DEFSTR	(EADR, EPTR, 35, 23)	; Identifier list address
	XP	EINC,11			; Secondary index increment
	DEFSTR	(EPRM,12, 35, 18)	; Address of associated parameter list.
	XP	LSTSIZ,13		;  (number of entries for $BUILD)
;
;     Parameter block
;
;	DEFSTR	(PRSPRV, 0,  8,  1)	; Privledge parameter flag
;	DEFSTR	(PRSTYP, 0, 12,  4) 	; Node type applicability
	XP	PRMPTR, 0		; Offset to pointer for data item
	DEFSTR	(PRMADR, PRMPTR, 35, 23)
;	DEFSTR	(PRSMIN, 1, 17, 18)	; Low limit for number or string length
;	DEFSTR	(PRSMAX, 1, 35, 18)	; Hi limit for number or string length
	XP	PRMDSP, 2		; Optional display routine address
					;  *OR*
	DEFSTR	(PRMTXT, PRMDSP, 17, 18) ; Text for parameter display
	DEFSTR	(PRMINI, 3, 35, 18)	; Initial value
	DEFSTR	(PRMDFL, 3, 17, 18)	; Address of default indicator
	XP	PRMDEF, 4		; JRST to routine for DEFINE
	XP	PRMPUR, 5		; JRST to routine for PURGE
	XP	PRMSTR, 6		; JRST to routine to store value
	XP	PRMSIZ,	7		;  (number of entries for $BUILD)
;
;   Parse block extensions
;
	XP	PAR.SM, 4		; Semantic processing routine
	XP	PAR.PV, 5		; Parse parameter vector
	XP	PARSIZ, 6		;  (number of entries for $BUILD)
;
DEFINE PVLIST (ENT<0>,PRM<0>,QUA<0>),<[EXP ENT,PRM,QUA]>
;
;   The use of the following ACs can be phased in
;
	I1==13				; Parameter table index registers
	I2==14				; not to conflict with GLXLIB ACs.
	LP==P4				; List pointer

	C1==T1				; For extended instructions
	C2==C1+1			;  (string manipulation)
	C3==C2+1			; six (6) ACs
	C4==C3+1
	C5==C4+1
	C6==C5+1

DEFINE $SAVEC,<$CALL .SAVE6##>

;
;   Local variables
;

; Define the fields of the version number

	VI%WHO==7B2			;WHO EDITTED LAST
	VI%MAJ==777B11			;MAJOR VERSION NUMBER
	VI%MIN==77B17			;MINOR VERSION NUMBER
	VI%EDT==777777B35		;EDIT NUMBER

;	GLXMAJ==:<GLXVRS&077700000000>_-^D24 ; Get major version number
;	GLXMIN==:<GLXVRS&000077000000>_-^D18 ; Get minor version number
;	GLXEDT==:<GLXVRS&000000777777> ; Get edit number
;
;  FLAGS:
;
F.DEV==1B1				;SENT A DEV MACRO TO CETAB
F.ALPH==1B2				;ALPHA CHAR SEEN IN NODE NAME
;
; Keyword values
;
	XP	.DMY,	0		; Dummy keyword
	XP	.EXC,	1		;	EXCLUDE
	XP	.EXI,	2		;	EXIT
	XP	.FIN,	3		;	FINISHED
	XP	.HLP,	4		;	HELP
	XP	.INC,	5		;	INCLUDE
	XP	.INF,	6		;	INFORMATION
	XP	.NOD,	7		;	NODE
	XP	.PUS,	10		;	PUSH
	XP	.RES,	11		;	RESTORE
	XP	.SAV,	12		;	SAVE
	XP	.TAK,	13		;	TAKE
	XP	.LOG,	14		; Log input
	XP	.STR,	15		; Start dialog
	XP	.DEF,	16		; DEFINE
	XP	.PUR,	17		; PURGE
	XP	.LIS,	20		; LIST
	XP	.PRV,	21		; WHEEL
	 XP	TOPMAX,	22		;  (number of entries for $BUILD)
;
;for general use
;
	XP	NAY,	0		; NO value
	XP	YEA,	1		; YES value
;
;INCLUDE command
;
	XP	BD.12,	7		; 1200 baud
	XP	BD.18,	10		; 1800 baud
	XP	BD.24,	12		; 2400 baud
	XP	BD.36,	13		; 3600 baud
	XP	BD.48,	14		; 4800 baud
	XP	BD.72,	15		; 7200 baud
	XP	BD.96,	16		; 9600 baud
	XP	BD.192,	17		; 19200 baud
	XP	 BD.MAX, 20		;  (number of entries for $BUILD)
;
;   Devices
;
	XP	DTE,	0		; DTE20
	XP	DMC,	1		; DMC11
	XP	DMR,	2		; DMR11
	XP	KDP,	3		; KDP
	XP	CDR,	4		; CDR
	XP	LPT,	5		; LPT
	XP	 DEVMAX, 6		;  (number of entries for $BUILD)
;
;INFORMATION Command
;
	XP	CDR.I,	4		; Information about Card-Reader
	XP	LPT.I,	5		;	"	"   Line-Printer
	XP	NOD.I,	6		;	"	"   Node
	XP	NTP.I,	7		;	"	"   Node-type
	XP	 MAX.I,  10		;  (number of entries for $BUILD)
TOPS10	<
;DEFINE BREAK MASKS

	BRINI.			;INITIALIZE BREAK MASK FOR STANDARD FIELD
	BRKCH. (0,37)		;ALL CONTROL CHARACTERS
	BRKCH. (40,54)		;SPACE THROUGH COMMA
	BRKCH. (56,57)		;DOT AND SLASH
	BRKCH. (72,77)		;COLON THROUGH QUESTION MARK
	BRKCH. (100)		;ATSIGN
	BRKCH. (133,140)	;OPEN BRACKET THROUGH ACCENT GRAVE
	BRKCH. (173,177)	;CLOSE BRACKET THROUGH TILDE

FLDB0.==W0.			;STANDARD FIELD BREAK MASK
FLDB1.==W1.
FLDB2.==W2.
FLDB3.==W3.
> ; End of TOPS10

	END