(* MPL - MICRO PROGRAMMING LANGUAGE / COPYRIGHT (C) 2017-2019 DEREK JOHN EVANS *)
CONST IMPL:SET OF TNAT=[
NARGC,NARGV,NCLWR,NCUPR,NFEND,NFNEW,NFOLD,NFRDC,NFRDS,NFWRC,NFWRS,NIABS,NIMAX,
NIMIN,NISQR,NSOFI,NMCPY,NMREV,NMSET,NRABS,NRADD,NRATN,NRCMP,NRCOS,NRCPY,NRDIV,
NREXP,NRFRA,NRINT,NRLOG,NRMAX,NRMIN,NRMUL,NRNEG,NRROU,NRSIN,NRSQR,NRSRT,NRSUB,
NIOFR,NSOFR,NSADD,NSCPY,NSDEL,NSINS,NSMID,NSCHR,NSSTR,NIOFS,NROFS,NTCLR,NTINS,
NTRDC,NTRDK,NTRDS,NTWRC,NTWRS,NTCLS,NTDEL,NTGXY,NTKEY,NSFIX,NFEOF,NROFI];
PROCEDURE LIBNAT(FN:TSTR); VAR T:TEXT; N:TNAT; O:TOPR;
PROCEDURE WRV(S:TSTR; I:TINT); BEGIN WRITELN(T,S,':',I) END;
PROCEDURE WRI(S:TSTR; I:TINT); BEGIN WRV('.'+S,I) END;
BEGIN
IF FNEW(T,FN) THEN BEGIN
WRV('TOM',ORD(VTOM)*2); WRV('AUX',ORD(VAUX)*2); WRV('TMP',ORD(VTMP)*2);
WRI('FMIN',ORD(FMIN)); WRI('FMAX',ORD(FMAX));
WRI('FINP',ORD(FINP)); WRI('FOUT',ORD(FOUT));
FOR N:=LOW(TNAT) TO HIGH(TNAT) DO IF N IN IMPL THEN BEGIN
STR(N,FN); DELETE(FN,1,1); WRI(FN,-ORD(N));
END;
WRITELN(T);
FEND(T)
END;
FN := 'mpldefs.h';
IF FNEW(T,FN) THEN
BEGIN
FOR O:=LOW(O) TO HIGH(O) DO BEGIN
STR(O,FN); WRITELN(T, '#define ',FN, ' ', ORD(O));
END;
WRITELN(T);
FOR N:=LOW(N) TO HIGH(N) DO BEGIN
STR(N,FN); WRITELN(T, '#define ',FN, ' ', ORD(N));
END;
WRITELN(T);
FEND(T);
END;
END;