(* MPL - MICRO PROGRAMMING LANGUAGE / COPYRIGHT (C) 2017-2018 DEREK JOHN EVANS *)
{$I PASCAL.INC}
{$I MPLTYPE.PAS}
TYPE FAIL=(ESYN,EDUP,EMIS); KIND=(K0,K1,K2,K3,K4,K5,K6,K7,K8);
VAR GX:CODE; GR:REF; GZ,GI,GE,GP:SHORT; GK:KIND; GO:OPER; GT:PTEXT;
GC:CHAR; GS:STR127; GV:PACKED ARRAY[0..511] OF SHORT;
PROCEDURE ARGV(VAR S:STR127; I:SHORT); BEGIN
S:=PARAMSTR(I); FOR I:=1 TO LENGTH(S) DO S[I]:=UPCASE(S[I])
END;
FUNCTION ENTER:BOOL; BEGIN ENTER:=TRUE;
ASSIGN(GT^,MPLPATH+GS+MPLFEXT); RESET(GT^); IF IORESULT<>0 THEN
BEGIN ASSIGN(GT^,GS+MPLFEXT); RESET(GT^); ENTER:=IORESULT=0 END END;
PROCEDURE LEAVE; BEGIN
CLOSE(GT^) (* BUG: MUST REMOVE CLOSE() FOR AMIGA HSPASCAL (?) *)
END;
PROCEDURE RDCH; BEGIN GC:=CHR(0); IF NOT EOF(GT^) THEN READ(GT^,GC) END;
{$I MPLSCAN.PAS} (* SOURCE SCANNER/PARSER *)
{$I MPLSYMB.PAS} (* SYMBOL TABLE & ERROR LOG *)
{$I MPLOPER.PAS} (* CODE GENERATION *)
{$I MPLCOMP.PAS} (* MPL COMPILER *)
{$I MPLMAIN.PAS} (* FRONT END *)
BEGIN
MAIN;
{$IFDEF FPC}READLN;{$ENDIF}
END.