 opt pag
 ttl system constants & storage
 pag

 name c_pass1
 text
 global pstrng,decst,rpterr,lstflg,keytab,error,ppcexp
 ext class,ident,line,pfile,rfiles
 ext prs,nxtfil,reset,nxtchr,pline

*
* system constants
*

 lib il.def

NL equ $d
EOF equ $ff end of file character
FSTARG equ 4 first passed arg stack offset
FSTAUT equ -4 first local var stack offset
SWSIZ equ 128 number of switch labels
FORSIZ equ 100 for stack size
STSIZ equ 500 total string storage
SUSIZ equ 100 number of structure table entries
MATLEN equ 200 number of tree nodes for expressions
MAXREG equ 1 maximum register variables

REGLOC equ 0 register
STKLOC equ 1 stack
MEMLOC equ 2 memory
CONLOC equ 6 constant
XLOC equ 8 x register
YLOC equ 9 y register
INDLOC equ 16 indirect
STRLOC equ 32 structure or union


*
* Data structure definitions
*

* struct symtab

 base 0

stype rmb 2 ident type (char, int, etc.)
sclass rmb 1 ident class (static, auto, etc.)
sflags rmb 1 ident flags
sname rmb 8 identifier name
ssubs rmb 2 ptr to array subscripts
sstrct rmb 2 ptr to structure def
sstore rmb 2 storage info
spshd rmb 2 ptr to pushed down def
sblklv rmb 1 block level of def
sspare rmb 1 spare byte

SYMSIZ equ *

* types

CHR equ 1 character
INT equ 2 integer
SHORT equ 3 short integer
UNSND equ 4 unsigned modifier
LONG equ 5 long integer
FLOAT equ 6 floating point
DUBLE equ 7 double floating
STRUCT equ 12 structure
CONST equ 14 constant
UNION equ STRUCT *************

* classes

AUTO equ 1 automatic
STAT equ 2 static
REG equ 3 register
EXTN equ 4 external
TYPDF equ 5 type define
STRTAG equ 6 structure tag
UNNTAG equ 7 union tag
MOS equ 8 member of structure
MOU equ 9 member of union

* type specifiers

PTR equ 1 pointer to
FNCT equ 2 function returning
ARAY equ 3 an array of

* flags

FLAB equ 1 label type
FUNION equ 2 union
FUND equ 4 undefined reference
FINIT equ 8 initialize
FFIELD equ 16 field
FPRM equ 32 parameter def
FPSHD equ 128 this guy pushed down a level


* struct emat (expression matrix)

 base 0

moprtr rmb 1 operator
mttype rmb 2 matrix line type
mo1loc rmb 2 location of oprnd 1
mo2loc rmb 2 location of oprnd 2

MATSIZ equ *


* struct type table

 base 0

cpt rmb 1 primary type
ctp rmb 2 full type
clc rmb 2 location

CLSSIZ equ * size of entry


*
* System storage (global)
*

 bss

char rmb 1 input character
token rmb 1 current token
toktyp rmb 2 token descriptor
idtyp rmb 1 id type
labels rmb 2 label counter
label1 rmb 2 secondary label counters
label2 rmb 2
label3 rmb 2
tos rmb 2 top of arithmetic stack
nxtcon rmb 2 next constant entry
nxtsym rmb 2 next symbol entry
nxtstr rmb 2 next string entry
nxtsst rmb 2 next string symbol entry
nxtmat rmb 2 next matrix entry
matlev rmb 1 matrix entry level
blklev rmb 1 block level
funnam rmb 2 temp pointer to function name
fndcf rmb 1 function def flag
pmlsf rmb 1 parameter list present flag
strflg rmb 1 structure table flag
nxtsu rmb 2 next structure table entry
absflg rmb 1 abstract declare flag
strofs rmb 2 structure offset
inaflg rmb 1 indirect address flag
lincnt rmb 2 line counter
comopt rmb 1 comment option flag
cmccnt rmb 1 comment char counter
pasptr rmb 2 comment buffer pointer
exitp rmb 2 exit function pointer
basize rmb 2 base type size
nxtdim rmb 2 next dim pointer
curstr rmb 2 current structure pointer
nxtlnk rmb 2 link pointer
strhdr rmb 2 structure header
sukey rmb 1 structure or union flag
conbuf rmb 8 constant temporary
contyp rmb 1 constant type
symloc rmb 2 symbol location
num rmb 4 number work area
errcnt rmb 2 error count
dtype rmb 2 declared type
dclass rmb 1 declared class
deftyp rmb 1 defined type flag
namdec rmb 1 name defined flag
nxtfor rmb 2 for stack pointer
brklab rmb 2 break label
conlab rmb 2 continue label
deflab rmb 2 default label
hdrlab rmb 2 function header labels
retlab rmb 2 return rouinte label
nxtarg rmb 2 next argument pointer
nxtaut rmb 2 next auto variable ptr
swflag rmb 1 switch level flag
nxtsw rmb 2 next switch stack pointer
nxtprm rmb 2 next slot for parameter list
fmrksy rmb 2 function symtab end marker
fmrksu rmb 2 function struct table end marker
conop1 rmb 2 constant operand 1
conop2 rmb 2 constant operand 2
conop3 rmb 2 constant temp
conwrk rmb 2 constant work reg
cnasn rmb 1 sign holder
cnrsn rmb 1 result sign
conres rmb 2 constant expression result
ccnt rmb 1 constant level counter
doqms rmb 1 qm suppress flag
qmsupf rmb 1 qm suppress flag
nxtreg rmb 2 next available register vriable number
nxtfrc rmb 2 next for constant pointer
nxtadim rmb 2 next abs dec dimension
cspace rmb 1 code space (0-txt,1-data,2-bss)
extspc rmb 1 external specified flag
intsym rmb 2 initializer symbol
autinf rmb 1 auto init flag
eltype rmb 1 element type
copr rmb 1 operator storage
cop1 rmb CLSSIZ operand 1 info
cop2 rmb CLSSIZ operand 2 info
initfl rmb 1 init flag
nxtdat rmb 2 next data pool item
eldptr rmb 2 element pointer
nxteld rmb 2 next element pointer
actary rmb 1 actual array size flag
aofchr rmb 1 array of char flag
adrofs rmb 2 address offset
istrfl rmb 1 initialize structure flag
totlct rmb 2 total element count for init
lstflg rmb 1 list option flag
nxtary rmb 2 next array pointer
erbuf rmb 16 error number buffer
absent rmb SYMSIZ abs dec symbol entry
sawtd rmb 1 saw type def flag
rcntpt rmb 2 most recent pointer var
dosize rmb 1 doing sizeof
newsym rmb 2 new symbol temp value
nochck rmb 1 no check flag

* I/O dependent storage

inchp rmb 2 input pointer
inche rmb 2 input end marker
infd rmb 2 input file desc
outchp rmb 2 output ptr
outche rmb 2 end marker
outfd rmb 2 file desc for output
argpt rmb 2 argument pointer
linptr rmb 2 line output pointer
linend rmb 2 line buffer end marker
perlin rmb 1 print error line flag

