home *** CD-ROM | disk | FTP | other *** search
- {
- 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;