Difference between revisions of "83Plus:BCALLs:50EC"

From WikiTI
Jump to: navigation, search
m (Official -> Unofficial)
Line 1: Line 1:
[[Category:83Plus:BCALLs:By Name:Other|RunAppLib]] [[Category:83Plus:BCALLs:By Name|RunAppLib]] [[Category:83Plus:BCALLs:By Address|50EC - RunAppLib]]
[[Category:83Plus:BCALLs:By Name:Other|RunAppLib]] [[Category:83Plus:BCALLs:By Name|RunAppLib]] [[Category:83Plus:BCALLs:By Address|50EC - RunAppLib]]
== Synopsis ==
== Synopsis ==
'''Official Name:''' RunAppLib
'''Unofficial Name:''' RunAppLib
'''BCALL Address:''' 50EC
'''BCALL Address:''' 50EC

Revision as of 08:27, 9 March 2007


Unofficial Name: RunAppLib

BCALL Address: 50EC

Minimum OS Version: 2.30

Calls a function directly, by offset, or by name within a compatible Flash application.


  • A = 0: call routine directly
    • B: Flash page of routine
    • DE: address of routine
  • A = 1: call routine by offset
    • B: Flash page of table pointer
    • HL: address of table pointer (this is the output from FindSpecialAppHeader)
    • DE: zero-based function to call (0000h, 0001h, 0002h, etc.)
  • A = 2: call routine by name
    • B: Flash page of table pointer
    • HL: address of table pointer (this is the output from (FindSpecialAppHeader)
    • OP1: zero-terminated name of function to call. This can be the same as the application or all uppercase.


  • None


  • All


You must search for a Flash application using FindSpecialAppHeader with DE = 1 before BCALLing this. When an application is found, HL will be the input to this routine. B must be the base page of the application.

When A = 1, push the address of an error handler before BCALLing this routine. If there are problems, the BCALL will return to your error handler.

The format of the table data for the Flash application is below.

 DW wNumberOfEntryPoints
 DB "Call1",0,0,0 ;make sure this fills 8 bytes
 DW wCall1Address
 DB "Call2",0,0,0 ;make sure this fills 8 bytes
 DW wCall2Address
 DB "LastCall" ;make sure this fills 8 bytes
 DW wLastCallAddress

OS 2.41, at least, has inactive code which uses this and searches for "IsDevice".


Call routine "IsDevice" from Flash application "MyApp":

     ld hl,sMyApp
     rst 20h
     ld de,1
     B_CALL FindSpecialAppHeader
     ret nz
     push hl
     push bc
     ld hl,sIsDevice
     rst 20h
     pop bc
     pop hl
     ld a,2
     B_CALL RunAppLib
     DB AppObj,"MyApp",0
     DB "IsDevice",0