[comp.lang.modula2] Btrieve and TopSpeed Modula-2

MISS034@ECNCDC.BITNET (Mark Morrell) (12/09/89)

I wrote a letter a little while ago concerning an interface into Btrieve
using TopSpeed Modula-2 indicating that I had some problems with it.  The
problems stemmed from my translation of the Logitech Modula-2 to TopSpeed.
Since I have only worked with TopSpeed, I misinterpreted part of the
program.  Boiled down, this is what I did, note that this is taken way
out of context, but this is the series of instructions that got me:

Original Logitech:
    A := ADR( XDATA );
    r.DX := A.Segment;       (*  This isn't entirely Logitech, but  *)
    r.DS := A.Offset;        (*  you get the drift . . .            *)
Which I interpreted as:
    A := ADR( XDATA );
    r.DX := SYSTEM.Seg( A );
    r.DS := SYSTEM.Ofs( A );
But really meant:
    r.DX := SYSTEM.Seg( XDATA );
    r.DS := SYSTEM.Ofs( XDATA );

In other words, I took the address of the address of a variable, rather
than taking the address of the variable.  Thanks to the person who
helped me out.  I forgot the node, but the name is Graham Wright; who
sent me working code, which I used to figure out what I was doing
wrong.  If anyone needs a copy of this just drop me a line.  Since
Graham Wright's interface uses calls to non-standard modules, I'll
send mine, which is functionally equivelant to his.  Thanks again
for the help.

Mark Morrell                                       MISS034 @ ECNCDC
Software Specialist
Student Residential Programs
Western Illinois University