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/