[Back to MISC SWAG index] [Back to Main SWAG index] [Original]
{
WILBERT VAN LEIJEN
> I want to pass its address to an external .obj procedure so I can set
> DS:SI to it... how do I do this? I know how to do this sort of think if I
> use the tp60 built in asmm thingy, and I know that I can pass values using
> arg like
You cannot export data from an .OBJ file to a Pascal program. The linker
cannot handle with public identifiers other than in a segment of class CODE,
alas.
Store the data in a File of Byte (DORK.BIN), convert it with BINOBJ to DORK.OBJ
(suggested identifier: Procedure DorkData), link it to your program.
}
Procedure DorkData; External;
{$L DORK.OBJ }
Type
TDork = Array[0..255] of Byte;
PDork = ^TDork;
Var
Dork : PDork;
i : Integer;
Begin
Dork := @DorkData;
For i := Low(TDork) to High(TDork) Do
Write(Dork^[i] : 4);
end.
{ If you want to use assembler to access DorkData: }
ASM
CLD
PUSH DS
PUSH CS { Using "LDS SI, DorkData" will not work! }
POP DS
LEA SI, DorkData { DS:SI points to DorkData }
MOV CX, Type(TDork) { = 256 }
@1: LODSB { TDork(DorkData[256-CX]) is now in AL }
{ other code }
LOOP @1
POP DS
end;
[Back to MISC SWAG index] [Back to Main SWAG index] [Original]