home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
DEVELOP
/
EXTCALL
/
GFA
/
EXTCALL.BAK
(
.txt
)
next >
Wrap
GFA-BASIC Atari
|
2000-05-02
|
1KB
|
56 lines
'
' Extern Call for GFA
' (c)2000 Richard Gordon Faika
'
@init_inlines
@main
'
PROCEDURE init_inlines
'
PRINT "init_inlines()"
' ## INLINE:
' $0000: 60 1a 00 00 00 36 00 00 00 00 00 00 3f dc 00 00
' $0010: 00 00 00 00 00 00 00 00 00 07 00 00 30 2f 00 04
' $0020: 41 fa 00 20 0c 40 ff 9d 66 04 20 08 4e 75 30 fc
' $0030: ff ff 30 ef 00 04 20 ef 00 06 30 af 00 0a 42 80
' $0040: 4e 75 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' $0050: 00 00 00 00 00 00
' 86 Bytes.
INLINE excall%,86
'
varbuf%=C:excall%(-99) ! dummy-call and get adress varbuffer
PRINT "Adress of callable Routine: $";HEX$(excall%)
PRINT "Enter this Adress in the extern Testprogram."
'
ABSOLUTE call.flag&,varbuf% ! set flag
ABSOLUTE call.par1&,varbuf%+2 ! set par1
ABSOLUTE call.par2%,varbuf%+4 ! set par2
ABSOLUTE call.par3&,varbuf%+8 ! set par2
'
RETURN
PROCEDURE main
PRINT "wait for extern call..."
PRINT "(press any key to quit)"
DO
~EVNT_TIMER(25) ! give up CPU-Time in Multitasking
IF call.flag& ! Routine called?
@my_routine(call.par1&,call.par2%,call.par3&)
ENDIF
LOOP UNTIL INP?(2) ! wait for key
~INP(2)
RETURN
'
> PROCEDURE my_routine(a&,b%,c&)
PRINT
PRINT "===================="
PRINT "called: my_routine()"
PRINT "===================="
PRINT "par 1 (WORD): ";a&
PRINT "par 2 (LONG): ";b%
PRINT "par 3 (WORD): ";c&
PRINT "===================="
'
CLR call.flag& ! clear flag
'
RETURN