[fpc-pascal] Metaware
Daniël Mantione
daniel.mantione at freepascal.org
Mon Jun 18 22:05:25 CEST 2007
Op Mon, 18 Jun 2007, schreef Tom Walsh:
> Heh, if you are reading this then you may know what Metaware is?
> =
> I've a large(!) body of code written over the years under the Metaware
> Professional Pascal compiler. This code is to be translated to run on th=
e fpc
> compiler.
>
> I wonder if anyone out there has attempted such an endeavor and might giv=
e me
> some suggestions, or even some warnings about what I should watch out for=
? =
From time to time we meet people who are trying to bring new life into old =
Pascal code bases. Generally the experience is that is a lot of work since =
even the lack of small feature might involve rewriting a lot of code. The =
biggest risk with these projects is that the original developer(s) are =
gone and the people doing the port lack the knowledge about the code to do =
it properly. Success means a lot of benefits, like supporting many =
platforms to many new possibilites due to interoperation with other code =
in the Free Pascal world.
I'm not aware of anyone who has ported code from Metaware Pascal.
> I have found that there are some functional differences that Metaware has=
over
> fpc, one example is the yield() function which returns the intermediate r=
esult
> of a function call.
?
> There are a few other functional differences, these
> should be able to be (re)written out.
> =
> Another "interesting feature" is a #define statement which is very much l=
ike a
> C macro:
> #define ChMap(A,C) Vt220Map[A] :=3D chr(c)
> There are quite a bit of these '#defines' throughout this source. I'm
> thinking that the fpc alias is not going to work very well here and that I
> would have to recode these defines as functions / procedures?
Yes, while Free Pascal can do macros, we do not support macro's with =
parameters, please convert them to inline procedures.
> I had considered building a pre-processor to reformat the input to ppcx64=
into
> a delphi style construction, but there are enough significant differences=
in
> source file structure and declarations that would make this a whole lot of
> work. Probably would also be a headache to maintain such an animal as we=
ll
> (yacc?).
> =
> Here is a snippet of the first few lines of a pascal source:
Wow... I doubt I would recognize that code as Pascal if I wasn't told it =
was. Free Pascal implements the UCSD-Pascal derived dialects of the =
language (Turbo Pascal, Delphi, Metrowerks Pascal).
Dani=EBl
=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D begin =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> export (libdos4);
> =
> { Include MetaWare libraries }
> pragma c_include('implement.pf');
> pragma c_include('language.pf');
> ...
> ...
> pragma c_include('dospriv.inc');
> =
> { C routine package }
> package FromC;
> pragma calling_convention(language.C);
> pragma routine_aliasing_convention(implement.global_aliasing_convention);
> =
> type
> int =3D LongInt;
> =
> program libdos4_unit;
> =
> with
> defstd4,
> dospriv;
> =
> var
> KeySaveChar: char;
> =
> function DosKeyCharHave:
> boolean;
> begin
> return(FromC.rdchk(0) =3D 1);
> end;
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D snip =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> =
> Anyhow, any thoughts that someone may have would be greatly appreciated!
> =
> TIA,
> =
> -- =
> Tom Walsh - WN3L - Embedded Systems Consultant
> http://openhardware.net http://cyberiansoftware.com http://openzipit.org
> "Windows? No thanks, I have work to do..."
> ----------------------------------------------------
> =
> =
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> =
>=20
More information about the fpc-pascal
mailing list