00100     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
00110 (**)
00140 (*-87()      (*EXTERNALS TO CODE EMITTER*)
00144 (**)
00150 PROCEDURE FIXUPF(ALABL: LABL); EXTERN;
00152 FUNCTION FIXUPM:LABL; EXTERN;
00160 PROCEDURE EMITX1 (OPCOD:POP;TYP1:OPDTYP;OPND1:ADDRINT); EXTERN;
00170 PROCEDURE EMITX2 (OPCOD:POP;TYP1:OPDTYP;OPND1:ADDRINT;TYP2:OPDTYP;OPND2:ADDRINT); EXTERN;
00180 PROCEDURE EMITX3(OPCOD:POP;TYP1:OPDTYP;OPND1:ADDRINT;TYP2:OPDTYP;OPND2:ADDRINT;TYP3:OPDTYP;OPND3:ADDRINT); EXTERN;
00190 PROCEDURE EMITX4(OPCOD:POP;TYP1:OPDTYP;OPND1:ADDRINT;TYP2:OPDTYP;OPND2:ADDRINT;
00200                            TYP3:OPDTYP;OPND3:ADDRINT;TYP4:OPDTYP;OPND4:ADDRINT); EXTERN;
00210 (*+86()      (*FOR CODE GENERATOR ONLY*)
00212  PROCEDURE SETTEXTSTATE; EXTERN;
00220  PROCEDURE EMITX5(OPCOD:POP;TYP1:OPDTYP;OPND1:ADDRINT;TYP2:OPDTYP;OPND2:ADDRINT;TYP3:OPDTYP;OPND3:ADDRINT;
00230                          TYP4:OPDTYP;OPND4:ADDRINT;TYP5:OPDTYP;OPND5:ADDRINT); EXTERN;
00240 PROCEDURE EMITX0(OPCOD: POP); EXTERN;
00250 (*+02()
00260 PROCEDURE WRITEBYTE(BYT: BYTE); EXTERN;
00270 ()+02*)
00280 PROCEDURE EMITXWORD(TYP: OPDTYP; OPERAND: ADDRINT); EXTERN;
00281 (*+02() PROCEDURE EMITXPROC(TYP :OPDTYP; OPERAND :ADDRINT); EXTERN;
00282         PROCEDURE EMITRNTAIL(LEN :INTEGER); EXTERN;
00283         FUNCTION LENOF(SB :PSB) :INTEGER; EXTERN; ()+02*)
00284 (*+05() PROCEDURE EMITXPROC(TYP: OPDTYP; OPERAND: ADDRINT); EXTERN; ()+05*)
00290 PROCEDURE EMITALF(OPERAND: BIGALFA); EXTERN;
00300 FUNCTION GETNEXTLABEL: LABL; EXTERN;
00320 PROCEDURE FIXUPFIM(ALABL: LABL; VALUE: INTEGER); EXTERN;
00330 PROCEDURE FIXLABL(OLDLABL,NEWLABL: LABL; KNOWN: BOOLEAN); EXTERN;
00340 FUNCTION NORMAL(SB: PSB): SBTTYP; EXTERN;
00360 PROCEDURE LOAD(WHERE:SBTTYP; SB: PSB); EXTERN;
00364 PROCEDURE UNSTKP1(TYP: OPDTYP; OPND: PSB); EXTERN;
00370 PROCEDURE EMITBEG; EXTERN;
00372 FUNCTION EMITRTNHEAD: LABL; EXTERN;
00380 PROCEDURE EMITEND; EXTERN;
00400 FUNCTION GETCASE(M: MODE; OLST: OLSTTYP; SB: PSB): STATE; EXTERN;
00410 FUNCTION GENLCLGBL(VAR OPCOD: POP; SB: PSB): INTEGER; EXTERN;
00411 ()+86*)
00412 (*+05()
00413 PROCEDURE HOIST(HOISTLEN, LEN: INTEGER; ALIGN: BOOLEAN); EXTERN;
00414 ()+05*)
00420 PROCEDURE CLEAR(SB: PSB); EXTERN;
00430 PROCEDURE FILL(WHERE: SBTTYP; SB: PSB); EXTERN;
00440 PROCEDURE TWIST; EXTERN;
00450 PROCEDURE LOADSTK(SB: PSB); EXTERN;
00460 PROCEDURE GENOP(VAR OPCOD: POP; M: MODE; VAR OLIST: OLSTTYP; SB: PSB); EXTERN;
00470 PROCEDURE GENDP(M: MODE); EXTERN;
00472 (*+32() PROCEDURE ASERT(ASERTION: BOOLEAN; REASON:ALFA); EXTERN; ()+32*)
00480  ()-87*)
00490 (**)
00520 (*+04()
00530 MODULE A68S1;
00540 EXPORTS
00550 PROCEDURE S1;
00560 PRIVATE
00570 IMPORTS A68SCOM FROM A68DEC;
00580 ()+04*)
12000             (* EXTERNALS TO THE LEXICAL ANALYSER *)
12002 PROCEDURE FIND(VAR SEARCHLIST: MODE; RECURSIVE: BOOLEAN; LENGTH: CNTR); EXTERN;
12010 PROCEDURE FINDPRC(RESMD: MODE; CNT: CNTR; CP:CODEPROC); EXTERN;
12020 PROCEDURE FINSTRUCT(CNT: CNTR); EXTERN;
12030 FUNCTION FINDREF(M: MODE): MODE; EXTERN;
12040 FUNCTION FINDROW(M: MODE; CNT:CNTR): MODE; EXTERN;
12050 PROCEDURE NEWFIELD(LEX: PLEX); EXTERN;
12060 PROCEDURE RECURFIX(VAR BASEM: MODE); EXTERN;
12090 (*+05() PROCEDURE OPENLOADFILE(VAR F: LOADFILE; PARAM: INTEGER; WRITING: BOOLEAN); EXTERN;
12100         PROCEDURE OPENTEXT(VAR F: TEXT; PARAM: INTEGER; WRITING: BOOLEAN); EXTERN;
12110 ()+05*)
12120 PROCEDURE CHECKPAGE; EXTERN;
12130 PROCEDURE OUTLST(LINE: INTEGER; VAR BUF: BUFFER; PTR: INTEGER); EXTERN;
12140 PROCEDURE OUTERR(N: INTEGER; LEV: ERRLEV; LEX: PLEX); EXTERN;
12150 PROCEDURE SEMERR(N: INTEGER); EXTERN;
12160 PROCEDURE INITIO; EXTERN;
12170 PROCEDURE SEMERRP(N: INTEGER; LEX: PLEX); EXTERN;
12180 PROCEDURE SUBREST; EXTERN;
12190 PROCEDURE SUBSAVE; EXTERN;
12200 PROCEDURE SCPUSH(M: MODE); EXTERN;
12210 FUNCTION SCPOP: MODE; EXTERN;
12220 FUNCTION SRPOPMD: MODE; EXTERN;
12230 PROCEDURE MODERR(M: MODE; N: INTEGER); EXTERN;
12240 FUNCTION HASHIN: PLEX; EXTERN;
12270 PROCEDURE INITLX; EXTERN;
12280 PROCEDURE NEXTCH(LEVEL: INDEXTYPE); EXTERN;
12290 PROCEDURE LXERR(N: INTEGER); EXTERN;
12300 PROCEDURE LEXALF(LEX: PLEX; VAR ALF: ALFA);  EXTERN;
12310 FUNCTION PARSIN: PLEX; EXTERN;
18808 (**)
18810 (*-86()      (*EXTERNALS TO CODE GENERATOR*)
18811 (**)
18812 PROCEDURE STACKSB (SB:PSB);  EXTERN;
18814 PROCEDURE UNSTACKSB ;  EXTERN;
18816 (*+05() FUNCTION SUBSTLEN(SBTS: SBTTYPSET): INTEGER; EXTERN; ()+05*)
18820 (*+85()      (*FOR SEMANTIC ROUTINES ONLY*)
18840 PROCEDURE CGRTE(R: PROUTN); EXTERN;
18850 PROCEDURE CGOPAB(OPCOD: POP; RESMODE: MODE); EXTERN;
18860 PROCEDURE CGRGID(STB: PSTB); EXTERN;
18870 PROCEDURE CGRGN; EXTERN;
18880 PROCEDURE CGRGXA(LOCRNG: BOOLEAN); EXTERN;
18890 PROCEDURE CGOPCALL; EXTERN;
18900 PROCEDURE CGOPDA; EXTERN;
18910 PROCEDURE CGOPDC; EXTERN;
18920 PROCEDURE CGOPDD; EXTERN;
18930 PROCEDURE CGOPDE(SBLH: PSB); EXTERN;
18940 PROCEDURE CGLABA(P: PSTB); EXTERN;
18950 PROCEDURE CGLABB(P: PSTB; WHICH: INTEGER); EXTERN;
18960 PROCEDURE CGLABC(P: PSTB; WHICH: INTEGER); EXTERN;
18970 PROCEDURE CGLABD(P: PSTB); EXTERN;
18980 PROCEDURE CGLABE(P: PSTB; LEVEL: DEPTHR; LEB: OFFSETR); EXTERN;
18990 ()+85*)
19000 (*+84()      (*FOR MODE HANDLING ONLY*)
19010 PROCEDURE GENFLAD; EXTERN;
19020 PROCEDURE STARTCHAIN; EXTERN;
19030 PROCEDURE COMBINE; EXTERN;
19040 PROCEDURE LOADTOTAL(SB: PSB); EXTERN;
19050 PROCEDURE CGBALC; EXTERN;
19060 PROCEDURE SETTEXTSTATE; EXTERN;
19070 ()+84*)
19080 (*+83()      (*FOR SEMANTICROUTINE ONLY*)
19090 PROCEDURE CGRTB; EXTERN;
19100 PROCEDURE CGRTD(PROCPTR: LABL); EXTERN;
19110 PROCEDURE CGRTA; EXTERN;
19120 PROCEDURE CGRTC; EXTERN;
19130 PROCEDURE CGLEFTCOLL(SB: PSB); EXTERN;
19140 PROCEDURE CGLEAPGEN(HEAP: BOOLEAN); EXTERN;
19150 PROCEDURE CGLPA(SB: PSB); EXTERN;
19160 PROCEDURE CGLPB(SB: PSB); EXTERN;
19170 PROCEDURE CGLPC(SB: PSB); EXTERN;
19180 PROCEDURE CGLPD; EXTERN;
19190 PROCEDURE CGLPE; EXTERN;
19210 PROCEDURE CGIFA; EXTERN;
19220 PROCEDURE CGINIT; EXTERN;
19230 PROCEDURE CGDEST; EXTERN;
19240 PROCEDURE CGFINCOLL(DEPTH: INTEGER); EXTERN;
19250 PROCEDURE CGACTBNDS(SB:PSB; N: CNTR); EXTERN;
19260 PROCEDURE CGASSIGN; EXTERN;
19270 PROCEDURE CGCALL(SB, SBR: PSB); EXTERN;
19280 PROCEDURE CGCASA; EXTERN;
19290 PROCEDURE CGCASC; EXTERN;
19300 PROCEDURE MARK(L: LABL); EXTERN;
19310 PROCEDURE CGCOLLUNIT; EXTERN;
19312 PROCEDURE CGPARM(VAR PTR:PSTB); EXTERN;
19320 PROCEDURE CGSELECT(OFFST: OFFSETR; M: MODE; SECDRY: INTEGER); EXTERN;
19330 PROCEDURE CGSLICE(SB: PSB; REFED: BOOLEAN); EXTERN;
19340 PROCEDURE CGEND; EXTERN;
19350 ()+83*)
19360 FUNCTION PUSHSB (PARAM:MODE) :PSB; EXTERN;
19370 PROCEDURE ASSIGNFLAD; EXTERN;
19380 PROCEDURE POPUNITS; EXTERN;
19390 PROCEDURE GETTOTAL(SB: PSB); EXTERN;
19400 PROCEDURE CGFIRM; EXTERN;
19430 PROCEDURE BRKASCR; EXTERN;
19440 PROCEDURE CGDEPROC (SB:PSB); EXTERN;
19442 PROCEDURE CGFIXRG; EXTERN;
19450 PROCEDURE CGFLADJUMP; EXTERN;
19460 PROCEDURE CGIBAL; EXTERN;
19470 PROCEDURE CGLPG; EXTERN;
19480 PROCEDURE CGOPR(OPCOD: POP; RESMODE: MODE; DYADIC: BOOLEAN); EXTERN;
19482 PROCEDURE CGPASC(SB, SBR: PSB); EXTERN;
19490 PROCEDURE CGRGXB(SB: PSB); EXTERN;
19492 PROCEDURE CGFLINE; EXTERN;
19500 ()-86*)
19506 (**)
19507 (*-84()      (*EXTERNALS FOR MODE HANDLING*)
19508 (**)
19509 FUNCTION TX(M: MODE): XTYPE; EXTERN;
19510 FUNCTION COERCE(M:MODE):MODE; EXTERN;
29500 FUNCTION LENGTHEN(M: MODE; COUNT: INTEGER): MODE; EXTERN;
29502 FUNCTION COFIRM(SRCM,DSTM: MODE): MODE; EXTERN;
29504 FUNCTION COMEEK(SRCM: MODE): MODE; EXTERN;
29510 (*+85()      (*FOR SEMANTIC ROUTINES ONLY*)
29530 PROCEDURE GETOPDM(PROCM: MODE); EXTERN;
29540 ()+85*)
29550 FUNCTION BALMOIDS(M1, M2: MODE): MODE; EXTERN;
29560 FUNCTION BALANCE(STRENGTH: STRTYP): MODE; EXTERN;
29570 FUNCTION SOFT: MODE; EXTERN;
29580 FUNCTION WEAK: MODE; EXTERN;
29590 PROCEDURE STRONG; EXTERN;
29600 PROCEDURE SETBALFLAG; EXTERN;
29610 PROCEDURE INNERBAL; EXTERN;
29620 PROCEDURE LASTIBAL; EXTERN;
29630 PROCEDURE MEEKLOAD(M: MODE; ERR: INTEGER); EXTERN;
29640 FUNCTION FIRMBAL:MODE; EXTERN;
50010 FUNCTION MEEK: MODE; EXTERN;
50012 ()-84*)
50018 (**)
50020 (*-85()      (*EXTERNALS FOR SEMANTIC ROUTINES*)
50022 (**)
50030 (*+83()      (*FOR SEMANTICROUTINE ONLY*)
50040 FUNCTION MAKESUBSTACK(N: INTEGER; M:MODE):PSB; EXTERN;
50050 FUNCTION ALLOC(N: OFFSETR): OFFSETR; EXTERN;
50052 PROCEDURE DISALLOCIND; EXTERN;
50060 PROCEDURE RANGENT; EXTERN;
50070 PROCEDURE ROUTNNT; EXTERN;
50080 PROCEDURE NECENV(STB: PSTB); EXTERN;
50090 PROCEDURE RANGEXT; EXTERN;
50100 PROCEDURE ROUTNXT; EXTERN;
50110 FUNCTION GETSTB(LEX: PLEX; DEF: DEFTYP; BLK: BLKTYP):PSTB; EXTERN;
50120 PROCEDURE FILLSTB(STB: PSTB); EXTERN;
50130 FUNCTION APPLAB(LEX: PLEX): PSTB; EXTERN;
50140 FUNCTION APPID(LEX: PLEX): PSTB; EXTERN;
50150 PROCEDURE DEFMI(LEX: PLEX); EXTERN;
50160 PROCEDURE DEFPRIO(LEX,PRIO: PLEX); EXTERN;
50170 PROCEDURE DEFLAB(LEX: PLEX); EXTERN;
50180 PROCEDURE PUTIND(STB: PSTB); EXTERN;
50190 PROCEDURE PUTDEN(LEX: PLEX); EXTERN;
50200 PROCEDURE PUTLOOP(LEX: PLEX); EXTERN;
50210 PROCEDURE ELABMI(LEX: PLEX); EXTERN;
50220 PROCEDURE PARMSC; EXTERN;
50230 PROCEDURE OPDSAVE(M: MODE); EXTERN;
50240 PROCEDURE BALOPR; EXTERN;
50250 PROCEDURE LHOPBAL(M: MODE); EXTERN;
50260 PROCEDURE PUTMD(LHM,RHM: MODE); EXTERN;
50270 PROCEDURE OPIDENT(MONADIC: BOOLEAN); EXTERN;
50280 PROCEDURE DEFOPM(OP: PSTB; M: MODE); EXTERN;
50290 PROCEDURE COLLSC(SB: PSB); EXTERN;
50300 PROCEDURE DEFID(LEX: PLEX); EXTERN;
50310 PROCEDURE DEFOP(LEX: PLEX); EXTERN;
50320 ()+83*)
50322 (*+82()      (*FOR PARSER ONLY*)
50324 PROCEDURE INITSR; EXTERN;
50326 FUNCTION APPMI(LEX: PLEX): PSTB; EXTERN;
50328 ()+82*)
50330 ()-85*)
50332 (**)
71290 (*-83() (*+82()
71292 PROCEDURE SEMANTICROUTINE(SRTN: RTNTYPE); EXTERN;
71294 (*+21() PROCEDURE MONITORSEMANTIC(SRTN: RTNTYPE); EXTERN; ()+21*)
71296 ()+82*) ()-83*)
73918 (**)
