home *** CD-ROM | disk | FTP | other *** search
- // 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
- $)