[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 the fpc
> compiler.
>
> I wonder if anyone out there has attempted such an endeavor and might give 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 result
> 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 like a
> C macro:
> #define ChMap(A,C) Vt220Map[A] := 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 well
> (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ël
 
> ========== begin ================
> 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 = LongInt;
> 
> program libdos4_unit;
> 
> with
> defstd4,
> dospriv;
> 
> var
> KeySaveChar: char;
> 
> function DosKeyCharHave:
> boolean;
> begin
>  return(FromC.rdchk(0) = 1);
>  end;
> ========== snip =================
> 
> 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
> 
> 


More information about the fpc-pascal mailing list