home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / DEVELOP / EXTCALL / GFA / EXTCALL.BAK (.txt) next >
GFA-BASIC Atari  |  2000-05-02  |  1KB  |  56 lines

  1. '
  2. ' Extern Call for GFA
  3. ' (c)2000 Richard Gordon Faika
  4. '
  5. @init_inlines
  6. @main
  7. '
  8. PROCEDURE init_inlines
  9.   '
  10.   PRINT "init_inlines()"
  11. ' ## INLINE:
  12. ' $0000: 60 1a 00 00 00 36 00 00 00 00 00 00 3f dc 00 00 
  13. ' $0010: 00 00 00 00 00 00 00 00 00 07 00 00 30 2f 00 04 
  14. ' $0020: 41 fa 00 20 0c 40 ff 9d 66 04 20 08 4e 75 30 fc 
  15. ' $0030: ff ff 30 ef 00 04 20 ef 00 06 30 af 00 0a 42 80 
  16. ' $0040: 4e 75 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  17. ' $0050: 00 00 00 00 00 00 
  18. ' 86  Bytes.
  19.   INLINE excall%,86
  20.   '
  21.   varbuf%=C:excall%(-99)    ! dummy-call and get adress varbuffer
  22.   PRINT "Adress of callable Routine: $";HEX$(excall%)
  23.   PRINT "Enter this Adress in the extern Testprogram."
  24.   '
  25.   ABSOLUTE call.flag&,varbuf%   ! set flag
  26.   ABSOLUTE call.par1&,varbuf%+2 ! set par1
  27.   ABSOLUTE call.par2%,varbuf%+4 ! set par2
  28.   ABSOLUTE call.par3&,varbuf%+8 ! set par2
  29.   '
  30. RETURN
  31. PROCEDURE main
  32.   PRINT "wait for extern call..."
  33.   PRINT "(press any key to quit)"
  34.   DO
  35.     ~EVNT_TIMER(25)                      ! give up CPU-Time in Multitasking
  36.     IF call.flag&                        ! Routine called?
  37.       @my_routine(call.par1&,call.par2%,call.par3&)
  38.     ENDIF
  39.   LOOP UNTIL INP?(2)                     ! wait for key
  40.   ~INP(2)
  41. RETURN
  42. '
  43. > PROCEDURE my_routine(a&,b%,c&)
  44.   PRINT
  45.   PRINT "===================="
  46.   PRINT "called: my_routine()"
  47.   PRINT "===================="
  48.   PRINT "par 1 (WORD): ";a&
  49.   PRINT "par 2 (LONG): ";b%
  50.   PRINT "par 3 (WORD): ";c&
  51.   PRINT "===================="
  52.   '
  53.   CLR call.flag&        ! clear flag
  54.   '
  55. RETURN
  56.