home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
misc
/
bcpl.ark
/
COMPHDR
< prev
next >
Wrap
Text File
|
1988-11-27
|
4KB
|
123 lines
// Header for Z80 BCPL compiler
// Copyright 1987 S. Kelley
GET "LIBHDR"
MANIFEST $( // AE tree symbols operators, and instructions.
// Code-stream pseudo instrs.
S.ENDFILE=0
S.LABDEF=1; S.GORG=2; S.WALIGN=3
S.NEEDS=4; S.SECTION=5; S.STARTSECT=6
S.STARTFILE=7; S.GLOBSYM=8; S.LABSYM=9
S.NEWLAB=10
// Code-stream instructions.
S.DW=32; S.DWLAB=33; S.DB=34
S.LIMB=35; S.LIMDE=36; S.LIMBC=37
S.LIMHL=38; S.RTAP=39; S.LIMIY=40
S.GOTO=41; S.ADDHH=42; S.PLUS=43; S.LDBYTE=44
S.LDHIM=45; S.BIT=46; S.DECIX=47; S.RET=48
S.FINISH=49; S.ADDIYSP=50; S.ORA=51; S.ORH=52
S.MINUS=53; S.LDAL=54; S.JPZ=55; S.JPNZ=56
S.JPC=57; S.JPNC=58; S.JPPO=59; S.JPPE=60
S.DECA=61; S.SUBA=62; S.SWITCHON=63
S.PUSHHL=64; S.POPHL=65; S.PUSHDE=66; S.POPDE=67
S.NEG=68; S.ABS=69; S.NOT=70; S.RV=71; S.JPLAB=72
S.LDLIX=73; S.STLIX=74; S.LDHIX=75; S.STHIX=76
S.LDEIX=77; S.ADDHB=78; S.LDDIX=79; S.OFRV=80
S.LDHLGLB=81; S.STHLGLB=82; S.LDDEGLB=83; S.OFLV=84
S.LDHLLAB=85; S.STHLLAB=86; S.LDDELAB=87; S.VEC=88
S.BYTEAP=89; S.DIV=90; S.REM=91; S.MULT=92
S.LS=93; S.GR=94; S.LE=95; S.GE=96; S.EQ=97; S.NE=98
S.LSHIFT=99; S.RSHIFT=100; S.ORIX=101; S.LOGAND=102
S.LOGOR=103; S.EQV=104; S.NEQV=105; S.LOCADDR=106
S.GLBADDR=107; S.LABADDR=108; S.LABDEADR=109
S.EXCHG=110; S.STBYTE=111; S.STIND=112
S.INCHL=113; S.DECHL=114; S.INCDE=115; S.DECDE=116
S.SUBHH=117; S.JPM=118; S.JPP=119; S.LDSPIY=120
S.SKIP=121; S.INCLOC=122; S.SRTAP=123; S.TWODIV=124
S.ADDIXBC=125; S.LDAGLB=126; S.LDALAB=127; S.LIMA=128
S.LDAIX=129; S.STBYTEA=130; S.STBYTIM=131; S.STIXIM=132
S.SUBHB=133; S.SKIPZ=134; S.INCIX=135
// AE tree operators not encountered in output
S.NUMBER=200; S.NAME=201; S.STRING=202; S.TRUE=203
S.FALSE=204; S.VALOF=205; S.LV=206; S.FNAP=207; S.QUERY=208
S.COND=209; S.COMMA=210; S.AND=211; S.VALDEF=212
S.VECDEF=213; S.OF=214; S.FNDEF=215; S.RTDEF=216
S.ASS=217; S.TABLE=218; S.RESULTIS=219; S.COLON=220
S.TEST=221; S.FOR=222; S.IF=223; S.UNLESS=224; S.WHILE=225
S.UNTIL=226; S.REPEAT=227; S.REPEATWHILE=228
S.REPEATUNTIL=229; S.LOOP=230; S.BREAK=231; S.RETURN=232
S.ENDCASE=233; S.CASE=234; S.DEFAULT=235; S.SEQ=236
S.LET=237; S.MANIFEST=238; S.GLOBAL=239; S.LOCAL=240
S.LABEL=241; S.STATIC=242; S.BE=243; S.END=244; S.LSECT=245
S.RSECT=246; S.GET=247; S.SEMICOLON=248; S.INTO=249; S.TO=250
S.BY=251; S.DO=252; S.OR=253; S.RPAREN=254; S.LPAREN=255
S.VECAP=256; S.SLCT=257
$)
MANIFEST $( // selectors
H1=0; H2=1; H3=2; H4=3; H5=4; H6=5 $)
MANIFEST $( // assorted constants someone might want to change
NAMETABLESIZE=64
REPORTMAX=40
LITMAX=50
LG=FIRSTFREEGLOBAL // compiler global base
SG=LG+20
TG=SG+20
TG0=TG+20
TG1=TG0+20
TG2=TG1+20
$)
GLOBAL $( // LEX globals
DECVAL:LG+0; WORDNODE:LG+1; SYMB:LG+2; ABORT:LG+3
SOURCESTREAM:LG+4; OCODE:LG+5; REPORTCOUNT:LG+6
NEXTSYMB:LG+7; NLPENDING:LG+8; SYNREPORT:LG+9
$)
GLOBAL $( // SYN globals
TREEP:SG+0; TREETOP:SG+1; TREEPMAX:SG+2
RDBLOCKBODY:SG+3; NULLTAG:SG+4; RBEXP:SG+5
NEWVEC:SG+6; REC.P2:SG+7; LIST2:SG+8; LIST3:SG+9
LIST4:SG+10; LIST5:SG+11; LIST6:SG+12
REC.L:SG+13; REC.P1:SG+14
$)
GLOBAL $( // TRN globals
// Variables. These would be static if it
// all fitted into one section
CASEB:TG+0; DVECP:TG+1; CACHE.VAL:TG+2; CACHE.MODE:TG+3; SSP:TG+4
CURPROC:TG+5; CASESTACK:TG+6; LOOPSTACK:TG+7; RESULTSTACK:TG+8
BREAKLABEL:TG+9; RESULTLABEL:TG+10; DEFAULTLABEL:TG+11
ENDCASELABEL:TG+12; LOOPLABEL:TG+13; STKDEPTH:TG+14; ARGSSP:TG+15
SFSIZE:TG+16; RETTABLE:TG+17
$)
GLOBAL $( // Global routines exported by TRN0
TRANS:TG0+0; DECLLABELS:TG0+1
$)
GLOBAL $( // Global routines exported by TRN1
LOADHL:TG1+0; LOAD:TG1+1; LOADLR:TG1+2; LOADDE:TG1+3
TRANSOF:TG1+4; PUSHDE:TG1+5; POPDE:TG1+6; SWAPROUND:TG1+7
CONSTANT:TG1+8; ADDCONST:TG1+9; ASSIGN:TG1+10
TRANSCALL:TG1+11; STORELOCAL:TG1+12; LOADLIST:TG1+13
EVALCONST:TG1+14
$)
GLOBAL $( // Global routines exported by TRN2
OUT1:TG2+0; OUTB:TG2+1; OUT2:TG2+2
WRITE1:TG2+3; WRITEB:TG2+4; WRITE2:TG2+5
WRITESTRING:TG2+6; COMISJUMP:TG2+7
STOPFLOW:TG2+8; ADDNAME:TG2+9; CELLWITHNAME:TG2+10
COMPILEAE:TG2+11; CHECKDISTINCT:TG2+12; TRANSREPORT:TG2+13
NEXTPARAM:TG2+14; COMPRETURN:TG2+15; ADDLIT:TG2+16
COMPLAB:TG2+17; COMPJUMP:TG2+18; JUMPCOND:TG2+19
TRANSNAME:TG2+20; STACKTO:TG2+21; BUMPP:TG2+22
$)