Hello,

I am trying to recompile FD-KEYB using 16-bit DOS FreePascal, in order to
see if I can produce a FPC version and thus avoid using TPC for compiling.

I am not being very lucky with compiling itself, and I haven't raised too
much attention in the FPC lists, either because it is difficult, or most
probably, compiling for an old 16-bit OS does not raise too much interest.

So I am trying this list here, in case some of you have ever mangled 16-bit
FPC and know the answer.

The biggest problem I am having is with the procedural type variables.
Whereas TPC would swallow this:

VAR
   v: procedure;

procedure P;
begin
...
end;

v := P;

FPC does not like it, as it is trying to assign the RESULT of P (untyped)
to v.

KEYB.PAS(2960,21) Error: Incompatible types: got "untyped" expected
"<procedure variable type of procedure;Pascal>"

The documentation tells me to use

v := @P;

but it does not work, it gives:

KEYB.PAS(2960,21) Error: Illegal type conversion: "<address of
procedure;far;Pascal>" to "<procedure variable type of procedure;Pascal>"

which puzzles me, because to my  mind, they are the same thing.


Using -MTP compiler option does not help, I get lots of new errors, unless
I avoid it by

TYPE
        SimpleProc     = procedure; far;     { parameter-less callable
function }

(which is NOT standard TP language at all), but would in turn give me:

KEYB.PAS(2960,21) Error: Illegal type conversion: "<address of
procedure;far;Pascal>" to "NearCsPointer"

You can read the full thread here:
Far pointer versus Pointer in 16-bit DOS (freepascal.org)
<https://forum.lazarus.freepascal.org/index.php/topic,60973.0.html>


Any hints on how to circumvent this problem?

Thanks in advance,
Aitor
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to