Browse Source

*** empty log message ***

keie 39 years ago
parent
commit
4a085a558a
7 changed files with 711 additions and 0 deletions
  1. 26 0
      etc/Makefile
  2. 175 0
      etc/em_table
  3. 71 0
      etc/new_table
  4. 289 0
      etc/pc_errors
  5. 107 0
      etc/pc_rt_errors
  6. 15 0
      etc/pop_push
  7. 28 0
      etc/traps

+ 26 - 0
etc/Makefile

@@ -0,0 +1,26 @@
+d=..
+h=$d/h
+c=$d/util/data
+
+FILES= \
+$h/em_spec.h \
+$h/em_pseu.h \
+$h/em_mnem.h \
+$c/em_flag.c \
+$c/em_pseu.c \
+$c/em_mnem.c
+
+$(FILES):       em_table
+		new_table $h $c
+
+install:	$(FILES)
+
+opr:
+		make pr ^ opr
+pr:
+		@pr Makefile em_table new_table pop_push traps
+
+clean:
+		-rm -f *.old
+
+cmp :           # do nothing

+ 175 - 0
etc/em_table

@@ -0,0 +1,175 @@
+magic	173
+fmnem	1
+nmnem	149
+fpseu	150
+npseu	30
+filb0	180
+nilb0	60
+fcst0	0
+zcst0	120
+ncst0	240
+fspec	240
+nspec	16
+ilb1	240
+ilb2	241
+dlb1	242
+dlb2	243
+dnam	244
+cst2	245
+cst4	246
+cst8	247
+doff	248
+pnam	249
+scon	250
+icon	251
+ucon	252
+fcon	253
+cend	255
+
+bss	0
+con	1
+end	2
+exa	3
+exc	4
+exp	5
+hol	6
+ina	7
+inp	8
+mes	9
+pro	10
+rom	11
+
+aar	w-	-p-a-p+p
+adf	w-	-a-a+a
+adi	w-	-a-a+a
+adp	f-	-p+p
+ads	w-	-a-p+p
+adu	w-	-a-a+a
+and	w-	-a-a+a
+asp	f-	-a
+ass	w-	-a-x
+beq	bc	-w-w
+bge	bc	-w-w
+bgt	bc	-w-w
+ble	bc	-w-w
+blm	z-	-p-p
+bls	w-	-a-p-p
+blt	bc	-w-w
+bne	bc	-w-w
+bra	bt	0
+cai	-p	-p
+cal	pp	0
+cff	--	-w-w-y+x
+cfi	--	-w-w-y+x
+cfu	--	-w-w-y+x
+cif	--	-w-w-y+x
+cii	--	-w-w-y+x
+ciu	--	-w-w-y+x
+cmf	w-	-a-a+w
+cmi	w-	-a-a+w
+cmp	--	-p-p+w
+cms	w-	-a-a+w
+cmu	w-	-a-a+w
+com	w-	-a-a+a
+csa	wt	-p-a
+csb	wt	-p-a
+cuf	--	-w-w-y+x
+cui	--	-w-w-y+x
+cuu	--	-w-w-y+x
+dch	--	-p+p
+dec	--	-w+w
+dee	g-	0
+del	l-	0
+dup	s-	-a+a+a
+dus	w-	-a-x+x+x
+dvf	w-	-a-a+a
+dvi	w-	-a-a+a
+dvu	w-	-a-a+a
+exg	w-	-a-a+a+a
+fef	w-	-a+a+w
+fif	w-	-a-a+a+a
+fil	g-	0
+gto	gt	-p-?
+inc	--	-w+w
+ine	g-	0
+inl	l-	0
+inn	w-	-w-a+w
+ior	w-	-a-a+a
+lae	g-	+p
+lal	l-	+p
+lar	w-	-p-a-p+?
+ldc	d-	+d
+lde	g-	+d
+ldf	f-	-p+d
+ldl	l-	+d
+lfr	s-	+a
+lil	l-	+w
+lim	--	+w
+lin	n-	0
+lni	--	0
+loc	c-	+w
+loe	g-	+w
+lof	f-	-p+w
+loi	o-	-p+a
+lol	l-	+w
+lor	r-	+p
+los	w-	-a-p+x
+lpb	--	-p+p
+lpi	p-	+p
+lxa	n-	+p
+lxl	n-	+p
+mlf	w-	-a-a+a
+mli	w-	-a-a+a
+mlu	w-	-a-a+a
+mon	--	-?+?
+ngf	w-	-a+a
+ngi	w-	-a+a
+nop	--	0
+rck	w-	-p-a+a
+ret	zt	-a-?
+rmi	w-	-a-a+a
+rmu	w-	-a-a+a
+rol	w-	-w-a+a
+ror	w-	-w-a+a
+rtt	-t	-?
+sar	w-	-p-a-p-?
+sbf	w-	-a-a+a
+sbi	w-	-a-a+a
+sbs	w-	-p-p+a
+sbu	w-	-a-a+a
+sde	g-	-d
+sdf	f-	-p-d
+sdl	l-	-d
+set	w-	-w+a
+sig	--	-p-p+p+p
+sil	l-	-w
+sim	--	-w
+sli	w-	-w-a+a
+slu	w-	-w-a+a
+sri	w-	-w-a+a
+sru	w-	-w-a+a
+ste	g-	-w
+stf	f-	-p-w
+sti	o-	-p-a
+stl	l-	-w
+str	r-	-p
+sts	w-	-a-p-x
+teq	--	-w+w
+tge	--	-w+w
+tgt	--	-w+w
+tle	--	-w+w
+tlt	--	-w+w
+tne	--	-w+w
+trp	-p	-w+?
+xor	w-	-a-a+a
+zeq	bc	-w
+zer	w-	+a
+zge	bc	-w
+zgt	bc	-w
+zle	bc	-w
+zlt	bc	-w
+zne	bc	-w
+zre	g-	0
+zrf	w-	+a
+zrl	l-	0
+

+ 71 - 0
etc/new_table

@@ -0,0 +1,71 @@
+h=${1-.}
+d=${2-.}
+
+set `grep fpseu em_table`
+p=$2
+set `grep fmnem em_table`
+m=$2
+
+ed - em_table <<'A' > X
+1,/^$/g/	/s// /gp
+A
+
+ed - em_table <<'A' | awk '{print $1,$2+'$p'}' > Y
+1,/^$/d
+1,/^$/g/	/s// /gp
+A
+
+ed - em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
+1,/^$/d
+1,/^$/d
+1,/^$/g/	/s// /gp
+A
+
+i=`wc -l <Y`
+echo 'lpseu' `expr $i + $p - 1` >>X
+i=`wc -l <Z`
+echo 'lmnem' `expr $i + $m - 1` >>X
+
+ed - X <<'A' > $h/em_spec.h
+g/^/s//#define sp_/p
+A
+
+ed - Y <<'A' > $h/em_pseu.h
+g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
+A
+
+ed - Z <<'A' > $h/em_mnem.h
+g/ .* /s// /
+g/\(.*\) \(.*\)/s//#define op_\1 \2/p
+A
+
+(
+echo 'char em_pseu[][4] = {'
+ed - Y <<'A'
+g/\(...\).*/s//	"\1",/p
+A
+echo '};'
+) > $d/em_pseu.c
+
+(
+echo 'char em_mnem[][4] = {'
+ed - Z <<'A'
+g/\(...\).*/s//	"\1",/p
+A
+echo '};'
+) > $d/em_mnem.c
+
+(
+echo '#include	<em_flag.h>
+char em_flag[] = {'
+ed - Z <<'A' | tr a-z A-Z
+g/^... /s///
+g/ .*/s///
+g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
+g/-/s//NO/g
+g/.*/s//	&,/p
+A
+echo '};'
+) > $d/em_flag.c
+
+rm X Y Z

+ 289 - 0
etc/pc_errors

@@ -0,0 +1,289 @@
+non-standard feature used
+identifier '%s' declared twice
+end of file encountered
+bad line directive
+unsigned real: digit of fraction expected
+unsigned real: digit of exponent expected
+unsigned real: too many digits (>72)
+unsigned integer: too many digits (>72)
+unsigned integer: overflow (>32767)
+string constant: must not exceed one line
+string constant: at least one character expected
+string constant: double quotes not allowed (see c option)
+string constant: too long (>72 chars)
+bad character
+identifier '%s' not declared
+location counter overflow: arrays too big
+location counter overflow: arrays too big
+arraysize too big
+variable '%s' never used
+variable '%s' never assigned
+the files contained in '%s' are not closed automatically
+constant expected
+constant: only integers and reals may be signed
+constant: out of bounds
+simple type expected
+enumerated type: element identifier expected
+enumerated type: ',' or ')' expected
+enumerated type: ',' expected
+enumerated type: ')' expected
+subrange type: type must be scalar, but not real
+subrange type: '..' expected
+subrange type: type of lower and upper bound incompatible
+subrange type: lower bound exceeds upper bound
+array type: '[' expected
+conformant array: low bound identifier expected
+conformant array: '..' expected
+conformant array: high bound identifier expected
+conformant array: ':' expected
+conformant array: index type identifier expected
+array type: index type not bounded
+array type: index separator or ']' expected
+array type: index separator expected
+array type: ']' expected
+array type: 'of' expected
+record variant part: tag type identifier expected
+record variant part: tag type identifier expected
+record variant part: type must be bounded
+record variant part: 'of' expected
+record variant: type of case label and tag incompatible
+record variant: multiple defined case label
+record variant: ',' or ':' expected
+record variant: ',' expected
+record variant: ':' expected
+record variant: '(' expected
+record variant: ')' expected
+record variant part: ';' or end of variant list expected
+record variant part: ';' expected
+record variant part: end of variant list expected
+record variant part: there must be a variant for each tag value
+field list: record section expected
+record section: field identifier expected
+record section: ',' or ':' expected
+record section: ',' expected
+record section: ':' expected
+field list: ';' or end of record section list expected
+field list: ';' expected
+field list: end of record section list expected
+type expected
+type: simple and pointer type may not be packed
+pointer type: type identifier expected
+pointer type: type identifier expected
+record type: 'end' expected
+set type: 'of' expected
+set type: too many elements in set
+set type: bad subrange of integer
+set of integer: the i option dictates the number of bits (default 16)
+set type: base type not bounded
+file type: 'of' expected
+file type: files within files not allowed
+var parameter: type identifier or conformant array expected
+var parameter: type identifier expected
+label declaration: unsigned integer expected
+label declaration: label '%i' multiple declared
+label declaration: ',' or ';' expected
+label declaration: ',' expected
+label declaration: ';' expected
+const declaration: constant identifier expected
+const declaration: '=' expected
+const declaration: ';' expected
+const declaration: constant identifier or 'type', 'var', 'procedure', 'function' or 'begin' expected
+type declaration: type identifier expected
+type declaration: '=' expected
+type declaration: ';' expected
+type declaration: type identifier or 'var', 'procedure', 'function' or 'begin' expected
+var declaration: var identifier expected
+var declaration: ',' or ':' expected
+var declaration: ',' expected
+var declaration: ':' expected
+var declaration: ';' expected
+var declaration: var identifier or 'procedure', 'function' or 'begin' expected
+parameter list: 'var','procedure','function' or identifier expected
+parameter list: parameter identifier expected
+parameter list: ',' or ':' expected
+parameter list: ',' expected
+parameter list: ':' expected
+parameter list: type identifier expected
+parameter list: ';' or ')' expected
+parameter list: ';' expected
+proc/func declaration: proc/func identifier expected
+proc/func declaration: previous declaration of '%s' was not forward
+proc/func declaration: parameter list expected
+parameterlist: ')' expected
+func declaration: ':' expected
+func declaration: result type identifier expected
+func declaration: result type must be scalar, subrange or pointer
+proc/func declaration: ';' expected
+proc/func declaration: block or directive expected
+proc/func declaration: '%s' unknown directive
+proc/func declaration: '%s' again forward declared
+proc/func declaration: ';' expected
+indexed variable: '[' only allowed following array variables
+indexed variable: index type not compatible with declaration
+indexed variable: ',' or ']' expected
+indexed variable: ',' expected
+assignment: standard function not allowed as destination
+assignment: cannot store the function result
+assignment: formal parameter function not allowed as destination
+assignment: function identifier may not be de-referenced
+variable: '[', '.', '^' or end of variable expected
+indexed variable: ']' expected
+field designator: field identifier expected
+field designator: '.' only allowed following record variables
+field designator: no field '%s' in this record
+referenced variable: '^' not allowed following zero-terminated strings
+referenced variable: '^' only allowed following pointer or file variables
+variable: var or field identifier expected
+call: too many actual parameters supplied
+call: proc/func identifier expected
+call: standard proc/func may not be used as parameter
+call: parameter lists of actual and formal proc/func incompatible
+call: type of actual and formal value parameter not compatible
+call: array parameter not conformable
+call: type of actual and formal variable parameter not similar
+call: packed elements not allowed as variable parameter
+call: ',' or ')' expected
+call: too few actual parameters supplied
+read(ln): type must be integer, char or real
+write(ln): type must be integer, char, real, string or boolean
+write(ln): ':', ',' or ')' expected
+write(ln): field width must be integer
+write(ln): ':', ',' or ')' expected
+write(ln): precision must be integer
+write(ln): precision may only be specified for reals
+read/write: too few actual parameters supplied
+read/write: standard input/output not mentioned in program heading
+read/write: ',' or ')' expected
+read/write: type of parameter not the same as that of the file elements
+read/write: parameter list expected
+readln/writeln: standard input/output not mentioned in program heading
+readln/writeln: only allowed on text files
+new/dispose: C-type strings not allowed here
+new/dispose: ',' or ')' expected
+new/dispose: too many actual parameters supplied
+new/dispose: type of tagfield value is incompatible with declaration
+call: '(' or end of call expected
+standard proc/func: parameter list expected
+standard input/output not mentioned in program heading
+file variable expected
+pointer variable expected
+pack: ',' expected
+pack: ',' expected
+unpack: ',' expected
+unpack: ',' expected
+standard proc/func: parameter type incompatible with specification
+eoln/page: text file variable expected
+pack/unpack: array types are incompatible
+pack/unpack: only for arrays
+abs: integer or real expected
+sqr: integer or real expected
+ord: type must be scalar or subrange, but not real
+pred/succ: type must be scalar or subrange, but not real
+trunc/round: real argument required
+call: ')' expected
+expression: left and right operand are incompatible
+set: incompatible elements
+set: base type must be bounded or of type integer
+set: base type upper bound exceeds maximum set element number
+set: element out of range
+set: ']' or element list expected
+set: '..', ',' or ']' expected
+set: ',' or ']' expected
+set: ',' expected
+factor expected
+factor: ')' expected
+factor: type of factor must be boolean
+set: ']' expected
+term: multiplying operator or end of term expected
+term: '*' only defined for integers, reals and sets
+term: '/' only defined for integers and reals
+term: 'div' only defined for integers
+term: 'mod' only defined for integers
+term: 'and' only defined for booleans
+simple expression: only integers and reals may be signed
+simple expression: adding operator or end of simple expression expected
+simple expression: '+' only defined for integers, reals and sets
+simple expression: '-' only defined for integers, reals and sets
+simple expression: 'or' only defined for booleans
+expression: relational operator or end of expression expected
+expression: set expected
+expression: left operand of 'in' not compatible with base type of right operand
+expression: only '=' and '<>' allowed on pointers
+expression: '<' and '>' not allowed on sets
+expression: comparison of arrays only allowed for strings
+expression: comparison of records not allowed
+expression: comparison of files not allowed
+assignment: ':=' expected
+assignment: left and right hand side incompatible
+goto statement: unsigned integer expected
+goto statement: label '%i' not declared
+if statement: type of expression must be boolean
+if statement: 'then' expected
+if statement: 'else' or end of if statement expected
+case statement: type must be scalar or subrange, but not real
+case statement: 'of' expected
+case statement: incompatible case label
+case statement: multiple defined case label
+case statement: ',' or ':' expected
+case statement: ',' expected
+case statement: ':' expected
+case statement: ';' or 'end' expected
+case statement: ';' expected
+case statement: 'end' expected
+repeat statement: ';' or 'until' expected
+repeat statement: ';' expected
+repeat statement: 'until' expected
+repeat statement: type of expression must be boolean
+while statement: type of expression must be boolean
+while statement: 'do' expected
+for statement: type of bound and control variable incompatible
+for statement: control variable expected
+for statement: control variable must be local
+for statement: type must be scalar or subrange, but not real
+for statement: ':=' expected
+for statement: 'to' or 'downto' expected
+for statement: upper bound not assignment compatible
+for statement: 'do' expected
+with statement: record variable expected
+with statement: ',' or 'do' expected
+with statement: ',' expected
+with statement: 'do' expected
+assertion: type of expression must be boolean
+statement expected
+label '%i' not declared
+label '%i' multiple defined
+statement: ':' expected
+unlabeled statement expected
+compound statement: ';' or 'end' expected
+compound statement: ';' expected
+compound statement: 'end' expected
+case statement: 'end' expected
+body: ';' or 'end' expected
+body: ';' expected
+body: label '%i' declared, but never defined
+program parameter '%s' not declared
+function '%s' never assigned
+block: declaration or body expected
+block: 'const', 'type', 'var', 'procedure', 'function' or 'begin' expected
+block: 'type', 'var', 'procedure', 'function' or 'begin' expected
+block: 'var', 'procedure', 'function' or 'begin' expected
+block: 'procedure', 'function' or 'begin' expected
+block: unsatisfied forward proc/func declaration(s)
+block: 'begin' expected
+block: 'end' expected
+program heading: 'program' expected
+program heading: program identifier expected
+program heading: file identifier list expected
+program heading: file identifier expected
+program heading: ',' or ')' expected
+program heading: ',' expected
+program heading: maximum number of file arguments exceeded (12)
+program heading: ')' expected
+program heading: ';' expected
+program: '.' expected
+'program' expected
+module: 'const', 'type', 'var', 'procedure' or 'function' expected
+module: 'type', 'var', 'procedure' or 'function' expected
+module: 'var', 'procedure' or 'function' expected
+module: 'procedure' or 'function' expected
+garbage at end of program

+ 107 - 0
etc/pc_rt_errors

@@ -0,0 +1,107 @@
+array bound error
+range bound error
+set bound error
+integer overflow
+real overflow
+real underflow
+divide by 0
+divide by 0.0
+undefined integer
+real undefined
+conversion error
+error 11
+error 12
+error 13
+error 14
+error 15
+stack overflow
+heap error
+illegal instruction
+odd or zero byte count
+case error
+memory fault
+bad pointer
+bad program counter
+bad external address
+bad monitor call
+bad line number
+error 27
+error 28
+error 29
+error 30
+error 31
+error 32
+error 33
+error 34
+error 35
+error 36
+error 37
+error 38
+error 39
+error 40
+error 41
+error 42
+error 43
+error 44
+error 45
+error 46
+error 47
+error 48
+error 49
+error 50
+error 51
+error 52
+error 53
+error 54
+error 55
+error 56
+error 57
+error 58
+error 59
+error 60
+error 61
+error 62
+error 63
+more args expected
+error in exp
+error in ln
+error in sqrt
+assertion failed
+array bound error in pack
+array bound error in unpack
+only positive j in 'i mod j'
+file not yet open
+dispose error
+error 74
+error 75
+error 76
+error 77
+error 78
+error 79
+error 80
+error 81
+error 82
+error 83
+error 84
+error 85
+error 86
+error 87
+error 88
+error 89
+error 90
+error 91
+error 92
+error 93
+error 94
+error 95
+not writable
+not readable
+end of file
+truncated
+reset error
+rewrite error
+close error
+read error
+write error
+digit expected
+non-ASCII char read

+ 15 - 0
etc/pop_push

@@ -0,0 +1,15 @@
+description of third column of em_table:
+
+	-: pop item indicated by next character
+	+: push item indicated by next character
+	0: no effect on the stack
+
+characters describing items:
+
+	w: target machine word (1, 2 or 4)
+	d: double target machine word (2, 4 or 8)
+	p: target machine address
+	a: item with size specified in argument
+	x: item with size specified by top item of stack
+	y: item with size specified by second item on stack
+	?: one or more items of unknown size

+ 28 - 0
etc/traps

@@ -0,0 +1,28 @@
+~ Array bound error
+~ Range bound error
+~ Set bound error
+~ Integer overflow
+~ Floating overflow
+~ Floating underflow
+~ Divide by 0
+~ Divide by 0.0
+~ Integer undefined
+~ Floating undefined
+~ Conversion error
+
+
+
+
+
+* Stack overflow
+* Heap overflow
+* Illegal instruction
+* Illegal odd or zero argument
+* Case error
+* Addressing non existent memory
+* Bad pointer used
+* Program counter out of range
+* Bad argument of LAE
+* Bad monitor call
+* Argument of LIN too high
+* Bad GTO descriptor