lily@haydn.kulesat.uucp (05/24/89)
Hello. Could someone out there help me with the following problem ? I wrote a routine in assembler to call interrupt 17H. When I assemble it (with MASM v3.00), and EXE2BIN it, it can be LOADed with dBaseIII+. CALLing it in dBase works fine , but when I try to link the .OBJ version with the PLINK86 linker, the undefined symbol error occurs. What did I do wrong ? Or, how to solve this ? This is how the .ASM-file looks like ( I ommited the actual code.) : ; ; WINDOWUP-routine ; TITLE windowup ; ORG 0 _prog SEGMENT BYTE ASSUME CS:_prog ; windowup PROC FAR ; ; ; RET windowup ENDP ; _prog ENDS END Thanks in advance. any help will be collected at this address : kulesat!lily (UUCP) or lily%kulesat.uucp@blekul60 (BITNET)
awd@dbase.UUCP (Alastair Dallas) (05/27/89)
I am sorry to post this, but we're having trouble with email (possibly caused by my stupidity). The subject line should warn away the uninterested. When dBASE loads a binary file, it just does a JUMP to the start of the file and starts executing, so the questioner's INT 17H program works. In a Clipper environment, however, the linker needs a label to identify where to JUMP to. Labels in a MASM program are not visible to the linker unless they are first declared with the PUBLIC directive, as in: PUBLIC Start Start Proc Far .... Now, PLINK will know about Start and when Clipper calls Start, you'll get to the same place. Note, however, that parameter-passing conventions are somewhat different. /alastair/