 |
EV_startApp |
Function (ROM Call 0xD4) |
Starts an application from any state.
EV_startApp is dedicated to "start the application". It changes current application to
TaskID and sends a sequence of messages to it (how they will be interpreted
depends on the concrete application), so this command may be used for changing the
current application.
It is not likely that following information will be very useful for you (except if
you are an expert who wants to make a new high perfomance flash application), but anyway
here is the pseudo-code which describes what exactly EV_startApp does:
if TaskID is equal to the current application
if StartType is AP_START_CURRENT
send CM_START_CURRENT to the current application
else {change task}
send CM_UNFOCUS, CM_DEACTIVATE and CM_ENDTASK to the current application
call EV_startTask, passing StartTask to it
send CM_ACTIVATE and CM_FOCUS to the current application
endif
else {new application}
send CM_UNFOCUS and CM_DEACTIVATE to the current application
if TaskID is equal to the application on the other side
and if the calculator is in "two-graph" mode
or TaskID is not "Graph", "Window Editor", "Table" nor "Y= Editor"
set current application to TaskID
invert current side
call EV_notifySwitchGraph
if StartType is not AP_START_CURRENT
send CM_ENDTASK to the new application
call EV_startTask, passing StartTask to it
endif
else
send CM_ENDTASK to the current application
set current application to TaskID
call EV_startTask, passing StartTask to it
endif
send CM_ACTIVATE and CM_FOCUS to the new application
endif
Under normal circumstances, you should start another application with
StartType set to AP_START_CURRENT.
Note: Task ID numbers are inconsistent between AMS versions (see EV_getAppID for
more info). So, if you, for example, want to start the "Numeric Solver" application, the AMS-independent
way to do this is
EV_startApp (EV_getAppID ("TIINSLVR"), AP_START_CURRENT);
Also, some common applications (like "Graph", "Table" or "Home screen") may be started
safely using some commands from bascmd.h header file.
Uses: EV_notifySwitchGraph, EV_sendEvent, EV_startTask, MO_isMultigraphTask, EV_appA, EV_appB, EV_appSide, EV_currentApp
Used by: EV_defaultHandler, EV_switch, cmd_disp, cmd_disphome, cmd_disptbl, cmd_input, cmd_inputstr, cmd_output, cmd_pause, cmd_prompt, cmd_table, ERD_process, HomeExecute, EV_quit, GraphActivate, ROM Call 0x455