Google
 

Trailing-Edge - PDP-10 Archives - AP-D480B-SB_1978 - qtab1.mac
There are 12 other files named qtab1.mac in the archive. Click here to see a list.
	TITLE QTABLE   THE BLISS I/O PACKAGE PRODUCTION TABLES



;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.

;COPYRIGHT (C) 1976,1977 BY DIGITAL EQUIPMENT CORPORATION
;****************************************************************
;;	THE FOLLOWING MACRO-10 CODE SHOULD BE MODIFIED ONLY
;	HERE AND COPIED TO A MACRO-10 FILE.
	RADIX 10   ; WE USE DECIMAL NUMBERS IN THE REAL WORLD
; HERE WE DEFINE THE METAVARIABLES:
;
.SG.=00 	; SIGMA---MATCHES ANYTHING
.LT.=01		; LETTER---MATCHES A-Z
.DG.=02		; DIGIT---MATCHES 0-9
.BI.=03		; BINARY---MATCHES 0 OR 1
.AN.=04		; ALPHANUMERIC---MATCHES A-Z OR 0-9;
.CR.=05		; MATCHES CR/LF
; HERE WE DESCRIBE THE SNA FLAG BITS
S=1
A=2
SA=3
AS=3
N=4
SN=5
NS=5
NA=6
AN=6
SNA=7
B=8  ; SUBROUTINE CALL BIT
BS=9
BA=10
BSA=11
BN=12
BSN=13
BNA=14
BSNA=15
X=0
; AN@ HERE WE MAKE THE NAME AVAILABLE TO BLISS
	ENTRY QMACH
; THE TRACE SWITCH IS USED TO ALLOW TRACING OF THE PRODUCTIONS
; ITS VALUES ARE:
;	0 -> NO TRACING
;	1 -> TRACE ALL PRODUCTIONS
;	2 -> TRACE ONLY MATCHING PRODUCTIONS
;	3 -> ILLEGAL
QTRSW::	0
QFIX::	0
;
;
; CONDITIONAL ASSEMBLY SWITCH: QTRC
;	SET = 1 TO INCLUDE TRACE TABLES
;	SET = 0 TO EXCLUDE TRACE TABLES
QTRC==0
IFNDEF QTRC,<QTRC==1>
;
; **************T H E   P R O D U C T I O N   T A B L E***************
;
QMACH:
EXP	01,  .SG.,   QSETUP    ,  SNA,   00
EXP	 0,  "?",   QNULL     ,   SN,  150

; STATE 19: WE ARE ABOUT TO START OR HAVE SEEN A , OR _
;	THIS CODE ALLOWS US TO BYPASS EMPTY SPECIFICATIONS

EXP	19,   ",",   QINCCHN   ,    S,   19
EXP	 0,   "_",   QINCCHN   ,    S,   19
EXP      0,   " ",   QNULL     ,    S,   19
EXP	 0,  .CR.,   QHALT     ,    X,   00

; STATE 20:  WE ARE ABOUT TO START PARSING AN ELEMENT  

EXP	20,   "*",   QPACK     ,    S,   32

; STATE 21: WE HAVE OTHER THAN "*" NAME OF FILE

EXP	21,  .LT.,   QPACK     ,    S,   40
EXP	 0,   " ",   QNULL     ,    S,   21
EXP	30,  .DG.,   QSETDIG   ,    X,   31
EXP	 0,  .LT.,   QPACK     ,   SN,   40
EXP	 0,   "=",   QSETCHN   ,  SNA,   50
EXP	 0,   " ",   QNULL     ,    S,   30

; IF WE GET HERE WE MAY HAVE A NUMERIC FILE OR DEVICE NAME

EXP	 0,  .SG.,   QINCCHN   ,    X,   51

; STATE 31: WE PACK NUMBERS AS ALPAH AS WELL AS NUMERIC

EXP	31,  .SG.,   QPACK     ,    S,   30

; STATE 32: WE HAVE HIT A "*" NAME WITHOUT A CHANNEL SPECIFIER

EXP	32,  .SG.,   QINCCHN   ,    X,   62

; STATE 40: WE DO NOT HAVE A CHANNEL SPECIFIER  

EXP	40,  .SG.,   QINCCHN   ,    X,   00

; STATE 50: WE HAVE JUST FINISHED A CHANNEL SPECIFIER  

EXP	50,  .AN.,   QPACK     ,    S,   50
EXP	 0,   " ",   QNULL     ,    S,   50

; STATE 51: WE COME HERE IF POSSIBLE NUMERIC NAME

EXP	51,   ":",   QDEVICE   ,   SA,   60
EXP	 0,   ".",   QFILE     ,   SA,   70
EXP	 0,   "[",   QFILE     ,  SNA,   80
EXP	 0,   ",",   QFILE     ,    X,   90
EXP	 0,   "/",   QFILE     ,    S,  130
EXP	 0,   "(",   QFILE     ,    S,  140
EXP      0,   "_",   QFILE     ,    X,   90
EXP	 0,   "<",   QFILE     ,   SN,  110
EXP	 0,  .CR.,   QFILE     ,    X,  100
EXP	 0,  .SG.,   QERROR    ,   02,   00

; STATE 60: WE HAVE JUST FINSIHED  A DEVICE SPECIFIER  

EXP	60,   "*",   QPACK     ,    S,   62

; STATE 61: WE HAVE OTHER THAN A "*" FILE NAME

EXP	61,  .AN.,   QPACK     ,    S,   61
EXP	 0,   " ",   QNULL     ,    S,   61

; STATE 62: WE HAVE COMPLETED A FILE NAME

EXP	62,   ".",   QFILE     ,   SA,   70
EXP	 0,   "[",   QFILE     ,  SNA,   80
EXP	 0,   ",",   QFILE     ,    X,   90
EXP 	 0,   "_",   QFILE     ,    X,   90
EXP	 0,   "/",   QFILE     ,    S,  130
EXP	 0,   "(",   QFILE     ,    S,  140
EXP	 0,   "<",   QFILE     ,   SN,  110
EXP	 0,  .CR.,   QFILE     ,    X,  100
EXP	 0,  .SG.,   QERROR    ,   03,   0

; STATE 70: WE HAVE JUST FINISHED A FILE SPECIFIER  WITH A "."

EXP	70,   "*",   QPACK     ,    S,   72

; STATE 71: WE HAVE OTHER THAN A "*" EXTENSION

EXP	71,  .AN.,   QPACK     ,    S,   71
EXP	 0,   " ",   QNULL     ,    S,   71

; STATE 72: WE HAVE ACCUMULATED AN EXTENSION NAME

EXP	72,   "[",   QEXT      ,  SNA,   80
EXP	 0,   ",",   QEXT      ,   NA,   90
EXP	 0,   "_",   QEXT      ,   NA,   90
EXP	 0,   "/",   QEXT      ,   SN,  130
EXP	 0,   "(",   QEXT      ,    S,  140
EXP	 0,   "<",   QEXT      ,   SN,  110
EXP	 0,  .CR.,   QEXT      ,    X,  100
EXP	 0,  .SG.,   QERROR    ,   04,   00

; STATE 80: WE HAVE DETECTED A [ IN A PPN SPECIFIER  

EXP	80,   "]",   QPPNL     ,    S,   83
EXP	 0,  .LT.,   QPACK     ,    S,   85

; STATE 84: WE HAVE A NON-NULL DEC PPN

EXP	84,  .DG.,   QSETOCT   ,    S,   84
EXP	 0,   " ",   QNULL     ,    S,   84
EXP	 0,   ",",   QPROJ     ,   SN,   81
EXP	 0,   "]",   QPROJ     ,    N,   82
EXP	 0,  .SG.,   QERROR    ,   05,   00

; STATE 85: WE HAVE A CMU PROJECT NUMBER

EXP	85,  .DG.,   QPACK     ,    S,  101
EXP	 0,   " ",   QNULL     ,    S,   85
EXP	 0,  .SG.,   QERROR    ,   17,   00

; STATE 101: WE HAVE LETTER + DIGIT OF ACCT NO

EXP	101, .DG.,   QPACK     ,    S,  102
EXP	 0,   " ",   QNULL     ,    S,  101
EXP	 0,  .SG.,   QERROR    ,   17,   00

; STATE 102: WE HAVE LETTER + 2 DIGITS OF ACCT NO

EXP	102, .DG.,   QPACK     ,    S,  103
EXP	 0,   " ",   QNULL     ,    S,  102
EXP	 0,  .SG.,   QERROR    ,   17,   00

; STATE 103: WE HAVE COMPLETE CMU ACCT NO.

EXP	103,  ",",   QCMUPJ    ,  SNA,   81
EXP	 0,   "]",   QCMUPJ    ,   NA,   82
EXP	 0,  .LT.,   QCMUPJ    ,   NA,   96
EXP	 0,  .SG.,   QERROR    ,   17,   00


; STATE 81: WE HAVE SCANNED THE , OF A PPN PAIR  

EXP	81,  .LT.,   QPACK     ,    S,   86

; STATE 88: WE HAVE EITHER DEC OR NULL PROG NO.

EXP	88,  .DG.,   QSETOCT   ,    S,   88
EXP	 0,   " ",   QNULL     ,    S,   88
EXP	 0,   "]",   QPROG     ,    S,   83
EXP	 0,  .SG.,   QERROR    ,   06,   00

; STATE 82: WE HAVE SCANNED PROJ, BUT NO PROG GIVEN  

EXP	82,  .SG.,   QPROG     ,    S,   00

; STATE 83: WE HAVE SCANNED ] OF PPN PAIR  

EXP	83,   " ",   QNULL     ,    S,    83
EXP	 0,   "<",   QNULL     ,   SN,  110
EXP	 0,   ",",   QSET      ,    X,   93
EXP	 0,   "_",   QSET      ,    X,   93
EXP	 0,   "/",   QNULL     ,    S,  130
EXP	 0,   "(",   QNULL     ,    S,  140
EXP	 0,  .CR.,   QNULL     ,    X,  100
EXP	 0,  .SG.,   QERROR    ,   07,   00

; STATE 96: WE HAVE CMU USERID WITHOUT COMMAS

EXP	96,  .SG.,   QPACK     ,    S,   86


; STATE 86: WE HAVE CMU MAN NUMBER

EXP	86,  .LT.,   QPACK     ,    S,   87
EXP	 0,   " ",   QNULL     ,    S,   86
EXP	 0,  .SG.,   QERROR    ,   18,   00

; STATE 87: WE HAVE LETTERS OF MAN NUMBER

EXP	87,  .DG.,   QPACK     ,    S,   89
EXP	 0,   " ",   QNULL     ,    S,   87
EXP	 0,  .SG.,   QERROR    ,   18,   00

; STATE 89: WE HAVE FIRST 3 CHARS OF MAN NO.

EXP	89,  .AN.,   QPACK     ,    S,   95
EXP	 0,   " ",   QNULL     ,    S,   89
EXP	 0,  .SG.,   QERROR    ,   18,   00

; STATE 95: WE HAVE 4 CHARS OF MAN NO.

EXP	95,   " ",   QNULL     ,    S,   95
EXP	 0,   "]",   QCMUPG    ,    S,   83
EXP	 0,  .SG.,   QERROR    ,   18,   00

; STATE 90: NO PPN GIVEN AND , OR _ ENCOUNTERED

EXP	90,  .SG.,   QSET      ,    X,   00

; STATE 93: WE HAVE TERMINATED A CHANNEL LIST WITH A "," OR A "_"  

EXP	93,  .SG.,   QRESET    ,  SNA,   19

; STATE 100: WE HAVE ENDED A CHANNEL LIST WITH A CR,   LF  

EXP	100, .SG.,   QSET      ,    X,   00
EXP	 0,  .SG.,   QHALT     ,    X,   00

; STATE 110: WE HAVE JUST SCANNED A "<" OF A STATUS SPEC   

EXP	110,  ",",   QNULL     ,    S,   111

; STATE 112:  WE HAVE A NON-NULL PROTECTION KEY

EXP	112, .DG.,   QSETOCT   ,    S,   112
EXP	 0,   " ",   QNULL     ,    S,   112
EXP	 0,   ">",   QSETPROT  ,    S,   120
EXP	 0,   ",",   QSETPROT  ,    S,   111
EXP	 0,  .SG.,   QERROR    ,   22,   00

; STATE 111: WE HAVE HIT THE , IN A STATUS SPEC


EXP	111, .BI.,   QSETBIN   ,    S,   111
EXP	 0,   " ",   QNULL     ,    S,   111
EXP	 0,   ">",   QSETSTAT  ,    S,   120
EXP	 0,  .SG.,   QERROR    ,   08,   00

; STATE 120: WE HAVE JUST SCANNED A ">" OF A STATUS SPEC  

EXP	120,  ",",   QSET      ,    X,   93
EXP	 0,   "_",   QSET      ,    X,   93
EXP	 0,   "/",   QNULL     ,    S,  130
EXP	 0,   "(",   QNULL     ,    S,  140
EXP	 0,  .CR.,   QNULL     ,    X,  100
EXP	 0,   " ",   QNULL     ,    S,  120
EXP	 0,  .SG.,   QERROR    ,   09,   0


; STATE 130: WE HAVE JUST SCANNED "/" OF A SWITCH SPEC

EXP	130, .AN.,   QSWITCH   ,    S,  131
EXP	 0,   " ",   QNULL     ,    S,  130
EXP	 0,   "-",   QNULL     ,    S,   133
EXP	 0,  .SG.,   QERROR    ,   13,   00

; STATE 133: WE HAVE JUST PROCESSED "-" OF SWITCH SPEC

EXP	133, .AN.,   QNOTSW    ,    S,   131
EXP	 0,   " ",   QNULL     ,    S,   133
EXP	 0,  .SG.,   QERROR    ,   23,    0

; STATE 131: WE HAVE JUST PROCESSED A SWITCH NAME

EXP	131,  "/",   QNULL     ,    S,  130
EXP	 0,   " ",   QNULL     ,    S,  131
EXP	132,  ",",   QSET      ,    X,   93
EXP	 0,   "_",   QSET      ,    X,   93
EXP	 0,  .CR.,   QNULL     ,    X,  100
EXP	 0,  .SG.,   QERROR    ,   15,   00

; STATE 140: WE HAVE JUST PROCESSED "(" OF SWITCH DECL

EXP	140, .AN.,   QSWITCH   ,    S,  140
EXP	 0,   " ",   QNULL     ,    S,  140
EXP	 0,   "-",   QNULL     ,    S,   141
EXP	 0,   ")",   QNULL     ,    S,  132
EXP	 0,  .SG.,   QERROR    ,   13,   00


; STATE 141: WE HAVE JUST SCANNED THE "-" IN A () SWITCH SPEC

EXP	141, .AN.,   QNOTSW    ,    S,   140
EXP	 0,   " ",   QNULL     ,    S,   141
EXP	 0,  .SG.,   QERROR    ,   23,    00

; STATE 150: WE HAVE DETECTED A "?" IN THE INPUT

EXP	150, .DG.,   QSETDIG   ,    S,  150
EXP	 0,   " ",   QNULL     ,    S,  150
EXP	 0,  .CR.,   QEXPLAIN  ,    X,   00
EXP	 0,  .SG.,   QERROR    ,   20,   00

; STATE 999: END OF TABLE  
EXP	999, .SG.,   QERROR    ,   99,   0 
;*******END OF THE TABLE********
; THIS TABLE IS USED BY THE TRACE ROUTINES TO OUTPUT TRACE INFO
; ITS FORMAT IS: 
;   NEMBER OF ENTRIES
;QTRACET: ADDRESS
;	ASCIZ /NAME/
;	...
ENTRY QTRACET
<ENT-.>/3		 ;*****THE NUMBER OF ENTR[ES *****
DEFINE X(A)<
EXTERNAL A
	IFN QTRC,<
A
ASCIZ /A/ >>
QTRACET:
X QCMUPG
X QCMUPJ
X QDEVICE 
X QERROR
X QEXPLAIN
X QEXT 
X QFILE
X QHALT 
X QINCCHN
X QNOTSW
X QNULL
X QPACK
X QPPNL
X QPROG
X QPROJ
X QRESET
X QSET 
X QSETUP
X QSETPROT
X QSETSTAT
X QSETDIG
X QSETBIN
X QSETCHN
X QSETOCT
X QSWITCH
ENT==.
ENTRY QMSG
<NMSG-.>-2
QMSG:	MSG0
	MSG1
	MSG2
	MSG3
	MSG4
	MSG5
	MSG6
	MSG7
	MSG8
	MSG9
	MSG10
	MSG11
	MSG12
	MSG13
	MSG14
	MSG15
	MSG16
	MSG17
	MSG18
	MSG19
	MSG20
	MSG21
	MSG22
	MSG23
NMSG==.
MSG0:	ASCIZ /MESSAGE NOT IN TABLE
/
MSG1:	ASCIZ /THIS MESSAGE DOES NOT EXIST. IGNORE IT
/
MSG2:	ASCIZ /ILLEGAL CHARACTER IN CHANNEL, DEVICE, OR FILE PART
/
MSG3:	ASCIZ /ILLEGAL CHARACTER IN FILE NAME
/
MSG4:	ASCIZ /ILLEGAL CHARACTER IN EXTENSION SPECIFIER
/
MSG5:	ASCIZ /ILLEGAL CHARACTER IN PROJECT SPECIFIER
/
MSG6:	ASCIZ /ILLEGAL CHARACTER IN PROGRAMMER SPECIFIER
/
MSG7:	ASCIZ /ILLEGAL CHARACTER FOLLOWING PPN SPECIFIER
/
MSG8:	ASCIZ /ILLEGAL CHARACTER IN STATUS SPECIFIER
/
MSG9:	ASCIZ /ILLEGAL CHARACTER FOLLOWING STATUS SPECIFIER
/
MSG10:	ASCIZ /MORE THAN 6 CHARACTERS IN DEVICE, FILE, OR EXTENSION SPECIFIER
/
MSG11:	ASCIZ /NUMBER GREATER THAN 2**18-1
/
MSG12:	ASCIZ /EXPLICIT OR IMPLICIT CHANNEL NO. >16 OR <0
/
MSG13:	ASCIZ /ILLEGAL CHARACTER IN SWITCH SPECIFIER
/
MSG14:	ASCIZ /EXTENSION NAME > 3 CHARACTERS
/
MSG15:	ASCIZ /ILLEGAL CHARACTER FOLLOWING SWITCH SPECIFICATION
/
MSG16:	ASCIZ /ILLEGAL OCTAL DIGIT IN DEC PPN SPECIFIER
/
MSG17:	ASCIZ /ILLEGAL CMU ACCOUNT NUMBER SYNTAX
/
MSG18:	ASCIZ /ILLEGAL CMU MAN NUMBER SYNTAX
/
MSG19: 	ASCIZ /[] USED BUT NO PPN PREVIOUSLY GIVEN
/
MSG20:	ASCIZ /ILLEGAL CHARACTER FOLLOWING "?"
/
MSG21: ASCIZ /ILLEGAL PROTECTION CODE
/
MSG22: ASCIZ /ILLEGAL CHARACTER IN PROTECTION CODE
/
MSG23: ASCIZ /ILLEGAL CHARACTER FOLLOWING "-" IN SWITCH
/
	END