.MCALL .MODULE .MODULE TPMAC,VERSION=02,COMMENT=,IDENT=NO ; Copyright (c) 1998 by Mentec, Inc., Nashua, NH. ; All rights reserved ; ; This software is furnished under a license for use only on a ; single computer system and may be copied only 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 except for use on such ; system and to one who agrees to these license terms. Title ; to and ownership of the software shall at all times remain ; in Mentec, Inc. ; ; The information in this document is subject to change without ; notice and should not be construed as a commitment by Digital ; Equipment Corporation, or Mentec, Inc. ; ; Digital and Mentec assume no responsibility for the use or ; reliability of its software on equipment which is not supplied ; by Digital or Mentec, and listed in the Software Product ; Description. ; ANDREW C. GOLDSTEIN 8 OCT 76 13:53 ; INITIALIZE TABLE GENERATION - CALL ONCE AT START OF EACH ; FINITE STATE MACHINE DESCRIPTION. USER MUST SUPPLY LABELS ; FOR THE STATE AND KEYWORD TABLES. .MACRO ISTAT$ STTBL,KEYTBL .MCALL MTRAN$ .IF DF $RONLY .PSECT $STATE,D,RO .IFF .PSECT $STATE,D .ENDC STTBL:: .IF DF $RONLY .PSECT $KTAB,D,RO .IFF .PSECT $KTAB,D .ENDC KEYTBL:: .IF DF $RONLY .PSECT $KSTR,D,RO .IFF .PSECT $KSTR,D .ENDC $$$KEY = -1 $$$FLG = -1 $EXIT = 0 $LAMDA = 300 $NUMBR = 302 $STRNG = 304 $BLANK = 306 $SUBXP = 310 $EOS = 312 $DNUMB = 314 $RAD50 = 316 $ANY = 320 $ALPHA = 322 $DIGIT = 324 .PSECT .ENDM ISTAT$ ; DECLARE A STATE .MACRO STATE$ LABEL .PSECT $STATE $$$FLG = $$$FLG!200 MTRAN$ .IF NB LABEL LABEL: .ENDC $$$FLG = -1 .PSECT .ENDM STATE$ ; SPECIFY A STATE TRANSITION .MACRO TRAN$ TYPE,LABEL,ACTION,MASK,ADDR .PSECT $STATE MTRAN$ .IF NB ACTION $$$FLG = $$$FLG!2 .MACRO $$$ACT .WORD ACTION .ENDM $$$ACT .ENDC .IF NB MASK $$$FLG = $$$FLG!30 .IF B ADDR .ERROR "MASK ADDRESS NOT PRESENT" .ENDC .MACRO $$$BIT .WORD MASK,ADDR .ENDM $$$BIT .ENDC .IF NB LABEL $$$FLG = $$$FLG!4 $$$STA = LABEL .ENDC .IRPC X, .IF IDN ,<"> .PSECT $KSTR $$$TMP = . .ASCII TYPE<377> .PSECT $KTAB .WORD $$$TMP .MACRO $$$TYP .BYTE $$$KEY!200 .ENDM $$$TYP $$$KEY = $$$KEY+1 .IF GT $$$KEY-63. .ERROR "TOO MANY KEYWORDS" .ENDC .MEXIT .ENDC .IF IDN , $$$FLG = $$$FLG!1 .MACRO $$$EXT .WORD 0'TYPE .ENDM $$$EXT .MACRO $$$TYP .BYTE $SUBXP .ENDM $$$TYP .MEXIT .ENDC .MACRO $$$TYP .BYTE TYPE .ENDM $$$TYP .MEXIT .ENDM .PSECT .ENDM TRAN$ ; OUTPUT LAST TRANSITION ENTRY .MACRO MTRAN$ .PSECT $STATE .IF EQ $$$FLG+1 $$$FLG = 0 .MEXIT .ENDC $$$TYP .BYTE $$$FLG .IF NE $$$FLG&1 $$$EXT .ENDC .IF NE $$$FLG&2 $$$ACT .ENDC .IF NE $$$FLG&10 $$$BIT .ENDC .IF NE $$$FLG&4 .WORD $$$STA .IFF .IF EQ $$$FLG&200 .ERROR "BAD DEFAULT TRANSITION" .ENDC .ENDC $$$FLG = 0 .ENDM MTRAN$ .LIST