[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