It could be reasonable to assume that applications 
  parameters match the parameters sent to addins. This is from the default 
  C-file from the SDK explaining the parameters:
  
  Calling the functions below with 1 in r4 ('isAppli') seems to start 
  them in a state similar or identical to what the main menu does.
  
 
Scans the storage memory for G1A-files and updates the 
  addin array.
  Example: copy a file from SD-card to storage memory, register addins and start 
  the new addin with App_Start. 
  
 
Returns the next free addin slot (position in the addin 
  array, see RAM).
  The addin array index starts with 0.
  
 
addinno is the index of an registered addin. 
  The first addin has the index 0.
  Returns 1 if the addin with the required index exists, else returns 0.
  If the addin exists, result is set to the pointer to the addin-header 
  increased by offset.
  F. i. with offset = 0x1D4, result would contain a pointer to 
  the application's name.
  
 
addinno is the index of the addin to query.
  estripno is the index of the estrp to query (0..5).
  returns 1 if estripno is in the range 0..5.
  returns 0 if not.
  
  
 
Returns the number of built-in applications.
  
 
Jumps to a registered application.
  index is the index of the application. Starts at zero. The maximum 
  number of built-in applications can be retrieved with 0x46B.
  The user apps start with the next number.
  If force!=0, a consecutive start of the same addin is allowed!
  R4 and R5 have to be zero.
  
  An addin started from MAIN MENU cannot be restarted immediately after is has 
  been finished, t. i. not staying in a while(1)...GetKey()...loop.
  This allows an immediate restart:
short*APP_EnableRestart(){
      short*pEnableRestartFlag;
      switch 
  ( OSVersionAsInt() ){
           
  case 0x01020000:
  case 0x01030000: 
  pEnableRestartFlag =  (short*)0x88006970;
  break;
            
  case 0x01040000: case
  0x01050000: case
  0x01051000: pEnableRestartFlag = 
  (short*)0x88006974;
  break;
           
  case 0x01100000:
  case 0x01110000: 
  pEnableRestartFlag =  (short*)0x88006CC4;
  break;
           
  case 0x02000000: 
  pEnableRestartFlag =  (short*)0x8800773C;
  break;
            
  default : pEnableRestartFlag = 0;
      }
      if ( 
  pEnableRestartFlag ) *pEnableRestartFlag =
  1;
      return 
  pEnableRestartFlag;
  }
  
  Has to be called before returning from an addin.
Does not complain with R4=0 and R5=0. Further 
  investigation might be neccessary.
  
 
 
 
skips some normally displayed intermediate dialog
  Does not complain with R4=0 and R5=0 and starts with "Simultaneous". Further 
  investigation might be neccessary.
  
 
This call is not rejected by the SDK emulator. Instead 
  it runs BASIC.
  
 
Does not complain with R4=0 and R5=0. Further 
  investigatione might be neccessary.
  
 
Displays "Condition error" with R4=0 and R5=0 but starts 
  anyhow.
  Does not complain with R4=0 and R5=1 and enters GRAPH-app. Further 
  investigation might be neccessary.
  
 
 
Executes MEMORY's Optimization. If no SD-slot is present, 
  the optimization starts immediately. Otherwise, if the intermediate dialog 
  should be answered automatically, KBD_PutKey 
  has to push either '1' or '2' into the keybuffer beforehand.
  The SD-slot can be detected with 0x468.
  Example:
  
  This piece cannot be called out of an storage-memory-addin without special 
  precautions; see SMEM_Optimitation for 
  details.
  
 
 
Does not complain with R4=0 and R5=0. Further 
  investigation might be neccessary.
  
 
Does not complain with R4=0 and R5=0. Further 
  investigation might be neccessary.
  
 
Displays "Dimension error" with R4=0 and R5=0 but starts 
  anyhow.
  Does not complain with R4=0 and R5=1. Further investigation might be 
  neccessary.
  
 
(31.07.2012 06:04:15)