Difference between revisions of "83Plus:BCALLs:50EC"
From WikiTI
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 == | ||
| − | ''' | + | '''Unofficial Name:''' RunAppLib |
'''BCALL Address:''' 50EC | '''BCALL Address:''' 50EC | ||
Revision as of 08:27, 9 March 2007
Synopsis
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.
Inputs
- 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.
Outputs
- None
Destroys
- All
Comments
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".
Example
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
ret
sMyApp:
DB AppObj,"MyApp",0
sIsDevice:
DB "IsDevice",0