root/platform/a3000/sub/100c/stubs_entry.S

/* [<][>][^][v][top][bottom][index][help] */
   1 // !!! THIS FILE IS GENERATED. DO NOT EDIT. !!!
   2 #include "stubs_asm.h"
   3 
   4 // Camera info:
   5 //   DRYOS R43 (DRYOS version 2.3, release #0043)
   6 //   Firmware Ver GM1.00C   // Found @ 0xffc6b6c0, "GM1.00C" @ 0xffc6b6cd
   7 //   Firmware build timestamp: Jan  7 2010 13:32:44
   8 //   Canon PowerShot A3000 IS
   9 
  10 // Values for makefile.inc
  11 //   DIGIC = 30# DIGIC III
  12 //   PLATFORMOSVER = 43
  13 //   PLATFORMID = 12786# (0x31f2) Found @ 0xfffe0130
  14 //   MAXRAMADDR = 0x01ffffff
  15 //   MEMISOSTART = 0x00133d38
  16 //   KEYSYS = d4a# Found @ 0xffff1aac
  17 //   NEED_ENCODED_DISKBOOT = 4# Found @ 0xffff1abc
  18 //   ARAM_HEAP_START = 0x2ce000# Found @ 0xffd1f374
  19 //   ARAM_HEAP_SIZE  = 0x32000# Found @ 0xffd1f334
  20 
  21 // Detected address ranges:
  22 // ROM      0xffc00000 - 0xffffffff (4194304 bytes)
  23 // RAM data 0x00001900 - 0x0000b294 copied from 0xfff036c8 (  39316 bytes)
  24 
  25 // Stubs below should be checked. Stub not matched 100%, or difference found to current 'stubs_entry_2.S'
  26 //    Name                                     Address      Rule  %  Comp to stubs_entry_2.S
  27 //NHSTUB(DoAFLock                             ,0xffc27744) //120        *** != 0xffc59f78
  28 //NHSTUB(LEDDrive                             ,0xffc43a04) //120        *** != 0xffc43acc
  29 //NHSTUB(ScreenLock                           ,0xffd86d9c) //117        *** != 0xffd86fa4
  30 //NHSTUB(ScreenUnlock                         ,0xffd86de0) //117        *** != 0xffd85c54
  31 //NHSTUB(SetScriptMode                        ,0xffc6fd38) //120        *** != 0xffc00f70
  32 //NHSTUB(UnlockAF                             ,0xffc2777c) //120        *** != 0xffc59f88
  33 //NHSTUB(kbd_pwr_off                          ,0xffc445a0) //  2 64%    *** != 0x00000000
  34 NHSTUB(kbd_pwr_on                             ,0xffc44560) //  2 82%
  35 
  36 // Check of modemap from 'platform/CAMERA/shooting.c':
  37 // Firmware modemap table found @ffe16228 -> ffeddb84
  38 // Mode  2609 in firmware but not in current modemap
  39 
  40 // Values below can be overridden in 'stubs_min.S':
  41 DEF(physw_status                            ,0x0002eed4) // Found @0xffc23cd4
  42 DEF(physw_run                               ,0x00001bf0) // Found @0xffc23938
  43 DEF(physw_sleep_delay                       ,0x00001bf8) // Found @0xffc23938
  44 DEF(levent_table                            ,0xffeafe20) // Found @0xffeafe20
  45 DEF(FlashParamsTable                        ,0xffeddd7c) // Found @0xffeddd7c
  46 DEF(movie_status                            ,0x000056f8) // Found @0xffd13678
  47 DEF(full_screen_refresh                     ,0x000076cc) // Found @0xffd8520c
  48 DEF(canon_menu_active                       ,0x00002b7c) // Found @0xffc6d20c
  49 DEF(canon_shoot_menu_active                 ,0x000068b1) // Found @0xffd4825c
  50 DEF(playrec_mode                            ,0x000028d8) // Found @0xffc60944
  51 DEF(zoom_status                             ,0x00009cd8) // Found @0xffe18568
  52 DEF(some_flag_for_af_scan                   ,0x00005aa0) // Found @0xffd16004
  53 // focus_len_table contains zoom focus lengths for use in 'get_focal_length' (main.c).
  54 // each entry contains 3 int value(s), the first is the zoom focus length.
  55 // there are 8 entries in the table - set NUM_FL to 8
  56 DEF(focus_len_table                         ,0xfffe29b0) // Found @0xfffe29b0
  57 DEF(zoom_busy                               ,0x00005648) // Found @0xffd0f784
  58 DEF(focus_busy                              ,0x000054ec) // Found @0xffd0b1b0
  59 //DEF(recreview_hold                          ,0x00003174) // Found @0xffc78d30, ** != ** stubs_min = 0x00006598 (0x64CC+0xCC)
  60 DEF(viewport_buffers                        ,0xffe98618) // Found @0xffcb932c
  61 DEF(active_viewport_buffer                  ,0x00004290) // Found @0xffcb9174
  62 // Camera appears to have only 1 RAW buffer @ 0x10e59860 (Found @0xffe65a8c)
  63 DEF(fileio_semaphore                        ,0x000025d0) // Found @0xffc5093c
  64 DEF(exmem_alloc_table                       ,0x00034ac0) // Found @0xffc66d0c
  65 DEF(exmem_types_table                       ,0xfff04794) // Found @0x000029cc
  66 DEF_CONST(exmem_type_count                  ,0x00000012)
  67 DEF(imager_active                           ,0x00001ecc) // Found @0xffc38604 (0x1ec8 + 4)
  68 DEF_CONST(uiprop_count                      ,0x00000074) // Found @0xffd3630c
  69 
  70 // Values below go in 'lib.c':
  71 //void *vid_get_bitmap_fb()        { return (void*)0x10361000; }             // Found @0xffc3fc80
  72 //void *vid_get_viewport_fb()      { return (void*)0x10650100; }             // Found @0xffe62758
  73 DEF(viewport_fb_d                           ,0x00002674) // Found 0x2620 (@0xffc53a98) + 0x54 (@0xffc53ad0)
  74 //void *vid_get_viewport_fb_d()    { return (void*)(*(int*)(0x2620+0x54)); } // Found @0xffc53a98 & 0xffc53ad0
  75 DEF(jpeg_count_str                          ,0x00075120) // Found @0xffd7bd90
  76 //char *camera_jpeg_count_str()    { return (char*)0x00075120; }             // Found @0xffd7bd90
  77 //int get_flash_params_count(void) { return 0x94; }                          // Found @0xffd36d50
  78 
  79 // Bitmap masks and physw_status index values for SD_READONLY and USB power flags (for kbd.c).
  80 //#define SD_READONLY_FLAG    0x00020000 // Found @0xffe9177c, levent 0x90a
  81 //#define SD_READONLY_IDX     2
  82 //#define USB_MASK            0x00040000 // Found @0xffe91788, levent 0x902
  83 //#define USB_IDX             2
  84 //#define BATTCOVER_FLAG      0x00008000 // Found @0xffe91764, levent 0x905
  85 //#define BATTCOVER_IDX       2
  86 //#define ANALOG_AV_FLAG      0x10000000 // Found @0xffe91680, levent 0x900 (non-inverted logic)
  87 //#define ANALOG_AV_IDX       1
  88 
  89 // Keymap values for kbd.c. Additional keys may be present, only common values included here.
  90 //static KeyMap keymap[] = {
  91 //    { 1, KEY_POWER           ,0x00000400 }, // Found @0xffe91674, levent 0x600
  92 //    { 1, KEY_PLAYBACK        ,0x20000000 }, // Found @0xffe9168c, levent 0x601
  93 //    { 2, KEY_SHOOT_FULL      ,0x00000003 }, // Found @0xffe916bc, levent 0x01
  94 //    { 2, KEY_SHOOT_FULL_ONLY ,0x00000002 }, // Found @0xffe916bc, levent 0x01
  95 //    { 2, KEY_SHOOT_HALF      ,0x00000001 }, // Found @0xffe916b0, levent 0x00
  96 //    { 2, KEY_ZOOM_IN         ,0x00000004 }, // Found @0xffe916c8, levent 0x02
  97 //    { 2, KEY_ZOOM_OUT        ,0x00000008 }, // Found @0xffe916d4, levent 0x03
  98 //    { 2, KEY_UP              ,0x00000010 }, // Found @0xffe916e0, levent 0x04
  99 //    { 2, KEY_DOWN            ,0x00000020 }, // Found @0xffe916ec, levent 0x05
 100 //    { 2, KEY_RIGHT           ,0x00000040 }, // Found @0xffe916f8, levent 0x07
 101 //    { 2, KEY_LEFT            ,0x00000080 }, // Found @0xffe91704, levent 0x06
 102 //    { 2, KEY_SET             ,0x00000100 }, // Found @0xffe91710, levent 0x08
 103 //    { 2, KEY_MENU            ,0x00000200 }, // Found @0xffe9171c, levent 0x09
 104 //    { 2, KEY_DISPLAY         ,0x00000400 }, // Found @0xffe91728, levent 0x0a
 105 //    { 0, 0, 0 }
 106 //};
 107 
 108 // Values below go in 'platform_camera.h':
 109 //#define CAM_DRYOS         1
 110 //#define CAM_DRYOS_2_3_R39 1 // Defined for cameras with DryOS version R39 or higher
 111 //#define CAM_RAW_ROWPIX    3720 // Found @0xffcee63c
 112 //#define CAM_RAW_ROWS      2772 // Found @0xffcee648
 113 //#undef  CAM_UNCACHED_BIT
 114 //#define CAM_UNCACHED_BIT  0x10000000 // Found @0xffc296f0
 115 //#define CAM_DATE_FOLDER_NAMING 0x100 // Found @0xffde5f1c (pass as 3rd param to GetImageFolder)
 116 //#define PARAM_CAMERA_NAME 4 // Found @0xffedffdc
 117 
 118 // Known propcases
 119 // //      PROPCASE_AFSTEP 13
 120 // #define PROPCASE_FOCUS_STATE 18
 121 // #define PROPCASE_AV 23
 122 // #define PROPCASE_BV 34
 123 // //      PROPCASE_DELTA_DIGITALGAIN 77
 124 // #define PROPCASE_DELTA_SV 79
 125 // //      PROPCASE_DELTA_ND 80
 126 // #define PROPCASE_EV_CORRECTION_2 209
 127 // #define PROPCASE_ORIENTATION_SENSOR 221
 128 // #define PROPCASE_SV_MARKET 248
 129 // //      PROPCASE_SVFIX 249
 130 // #define PROPCASE_TV 264
 131 // Guessed propset: 3
 132 
 133 // Misc stuff
 134 DEF(ctypes, 0xffe90f92)
 135 
 136 // EXMEM types:
 137 // EXMEM_RAMDISK        0
 138 // EXMEM_COM            1
 139 // EXMEM_FORMATTER      2
 140 // EXMEM_SHADING        3
 141 // EXMEM_FAMODE         4
 142 // EXMEM_FIRMUP         5
 143 // EXMEM_FIRMUP_VRAM    6
 144 // EXMEM_FIRMUP_INFLATE 7
 145 // EXMEM_DVLPWORK       8
 146 // EXMEM_EVF            9
 147 // EXMEM_SCRIPT         10
 148 // EXMEM_FILESTORE      11
 149 // EXMEM_MOVIE_REC      12
 150 // EXMEM_MOVIE_PLY      13
 151 // EXMEM_WIDE           14
 152 // EXMEM_NARROW         15
 153 // EXMEM_CRAW_REC       16
 154 // EXMEM_PCEVF          17
 155 
 156 // ISR flag: 0x1964, pointer to current task's control block: 0x1960
 157 // pointer to TCB area: 0x19f4, found @ 0xffc06efc
 158 
 159 // LED table init @ 0xffcd6858
 160 // LED #1: 0xc0220010, offset 0x170
 161 // LED #2: 0xc0220008, offset 0x1d8
 162 
 163 // For capt_seq.c
 164 DEF(_nrflag,0x5a80) // Found @ ffd17f90 (0x5a88) & ffd17fb0 (-0x08)
 165 //static long *nrflag = (long*)(0x5a88-0x08);  // Found @ ffd17f90 & ffd17fac
 166 
 167 // Stubs below matched 100%.
 168 //    Name                                     Address                Comp to stubs_entry_2.S
 169 NHSTUB(AllocateUncacheableMemory              ,0xffc296ac) //112
 170 NHSTUB(Close                                  ,0xffc262b8) //120
 171 NHSTUB(CreateBinarySemaphore                  ,0xffc0ee30) //115
 172 NHSTUB(CreateTask                             ,0xffc0f110) //120
 173 NHSTUB(DebugAssert                            ,0xffc0f5e8) //107
 174 NHSTUB(DeleteDirectory_Fut                    ,0xffc25d14) //116
 175 NHSTUB(DeleteFile_Fut                         ,0xffc25c30) //112
 176 NHSTUB(DoAELock                               ,0xffc2788c) //120
 177 NHSTUB(EnterToCompensationEVF                 ,0xffc277f4) //104
 178 NHSTUB(ExecuteEventProcedure                  ,0xffc68958) //104
 179 NHSTUB(ExitFromCompensationEVF                ,0xffc27838) //104
 180 NHSTUB(ExitTask                               ,0xffc0f3a0) //120
 181 NHSTUB(ExpCtrlTool_StartContiAE               ,0xffc35110) //104
 182 NHSTUB(ExpCtrlTool_StopContiAE                ,0xffc351e8) //104
 183 NHSTUB(Fclose_Fut                             ,0xffc25dac) //120
 184 NHSTUB(Feof_Fut                               ,0xffc25f98) //  1
 185 NHSTUB(Fflush_Fut                             ,0xffc25fd4) //  1
 186 NHSTUB(Fgets_Fut                              ,0xffc25f00) //  1
 187 NHSTUB(Fopen_Fut                              ,0xffc25d6c) //120
 188 NHSTUB(Fread_Fut                              ,0xffc25e58) //120
 189 NHSTUB(FreeUncacheableMemory                  ,0xffc296ec) //112
 190 NHSTUB(Fseek_Fut                              ,0xffc25f4c) //120
 191 NHSTUB(Fwrite_Fut                             ,0xffc25eac) //120
 192 NHSTUB(GetBatteryTemperature                  ,0xffc46680) //102
 193 NHSTUB(GetCCDTemperature                      ,0xffc4660c) //102
 194 NHSTUB(GetCurrentAvValue                      ,0xffd0ca30) //120
 195 NHSTUB(GetCurrentShutterSpeed                 ,0xffc846d8) //120
 196 NHSTUB(GetDrive_ClusterSize                   ,0xffc52440) //122
 197 //NHSTUB(GetDrive_FreeClusters                ,0xffc524a0) //  4            == 0xffc524a0
 198 NHSTUB(GetDrive_TotalClusters                 ,0xffc52474) //  3
 199 NHSTUB(GetFocusLensSubjectDistance            ,0xffd0bd28) //102
 200 NHSTUB(GetFocusLensSubjectDistanceFromLens    ,0xffd0c180) //  3
 201 NHSTUB(GetImageFolder                         ,0xffcf55f8) //122
 202 NHSTUB(GetKbdState                            ,0xffc4452c) //109
 203 NHSTUB(GetMemInfo                             ,0xffc0a760) //115
 204 NHSTUB(GetOpticalTemperature                  ,0xffc466f4) //120
 205 NHSTUB(GetParameterData                       ,0xffd36d10) //101
 206 NHSTUB(GetPropertyCase                        ,0xffc6c664) //102
 207 NHSTUB(GetSystemTime                          ,0xffe082b8) //120
 208 NHSTUB(GetVRAMHPixelsSize                     ,0xffcba764) //120
 209 NHSTUB(GetVRAMVPixelsSize                     ,0xffcba770) //120
 210 NHSTUB(GetZoomLensCurrentPoint                ,0xffd0fafc) //120
 211 NHSTUB(GetZoomLensCurrentPosition             ,0xffdff8ec) //102
 212 NHSTUB(GiveSemaphore                          ,0xffc0f06c) //120
 213 NHSTUB(IsStrobeChargeCompleted                ,0xffcaac70) //102
 214 NHSTUB(LocalTime                              ,0xffc66668) //115
 215 NHSTUB(LockMainPower                          ,0xffc6ff70) //120
 216 NHSTUB(MakeDirectory_Fut                      ,0xffc25ca4) //116
 217 NHSTUB(MoveFocusLensToDistance                ,0xffe5f1d8) //102
 218 NHSTUB(MoveIrisWithAv                         ,0xffe050ac) //120
 219 NHSTUB(MoveZoomLensWithPoint                  ,0xffe0563c) //120
 220 NHSTUB(MoveOpticalZoomAt                      ,0xffc27304) //109
 221 NHSTUB(Open                                   ,0xffc2624c) //120
 222 NHSTUB(PB2Rec                                 ,0xffc72d38) //104
 223 NHSTUB(PT_MoveDigitalZoomToWide               ,0xffc59f28) //120
 224 NHSTUB(PT_MoveOpticalZoomAt                   ,0xffc59f00) //120
 225 NHSTUB(PT_PlaySound                           ,0xffc624e8) //122
 226 NHSTUB(PostLogicalEventForNotPowerType        ,0xffc6f7a0) //120
 227 NHSTUB(PostLogicalEventToUI                   ,0xffc6f7ec) //120
 228 NHSTUB(PutInNdFilter                          ,0xffe054a0) //102
 229 NHSTUB(PutOutNdFilter                         ,0xffe054c4) //102
 230 NHSTUB(Read                                   ,0xffc0b270) //120
 231 NHSTUB(ReadFastDir                            ,0xffdf6414) //  4
 232 NHSTUB(Rec2PB                                 ,0xffc72d78) //104
 233 NHSTUB(RefreshPhysicalScreen                  ,0xffd85bf0) //104
 234 NHSTUB(RenameFile_Fut                         ,0xffc25b9c) //116
 235 NHSTUB(Restart                                ,0xffc2ae90) //122
 236 NHSTUB(SetAE_ShutterSpeed                     ,0xffe61968) //102
 237 NHSTUB(SetAutoShutdownTime                    ,0xffc6ffe4) //120
 238 NHSTUB(SetCurrentCaptureModeType              ,0xffc76674) //120
 239 NHSTUB(SetFileAttributes                      ,0xffc265b0) //  3
 240 NHSTUB(SetFileTimeStamp                       ,0xffc26554) //  4
 241 NHSTUB(SetLogicalEventActive                  ,0xffc6fce8) //120
 242 NHSTUB(SetParameterData                       ,0xffd36c80) //101
 243 NHSTUB(SetPropertyCase                        ,0xffc6c534) //102
 244 NHSTUB(SleepTask                              ,0xffc29530) //120
 245 NHSTUB(TakeSemaphore                          ,0xffc0ef9c) //120
 246 NHSTUB(TurnOffBackLight                       ,0xffc7b440) //104
 247 NHSTUB(TurnOnBackLight                        ,0xffc7b428) //104
 248 NHSTUB(TurnOnDisplay                          ,0xffc3ff5c) //120
 249 NHSTUB(TurnOffDisplay                         ,0xffc3ff88) //120
 250 NHSTUB(UIFS_WriteFirmInfoToFile               ,0xffd27398) //120
 251 NHSTUB(UnlockAE                               ,0xffc278b0) //120
 252 NHSTUB(UnlockMainPower                        ,0xffc6fec4) //120
 253 NHSTUB(UnsetZoomForMovie                      ,0xffd3cc54) //104
 254 NHSTUB(UpdateMBROnFlash                       ,0xffc522c0) //105
 255 NHSTUB(VbattGet                               ,0xffc22cf0) //120
 256 NHSTUB(Write                                  ,0xffc26348) //120
 257 NHSTUB(WriteSDCard                            ,0xffd00d4c) //108
 258 NHSTUB(_log                                   ,0xffe8eaf4) //111
 259 NHSTUB(_log10                                 ,0xffe8da38) //112
 260 NHSTUB(_pow                                   ,0xffe8dba8) //121
 261 NHSTUB(_sqrt                                  ,0xffe8fe5c) //  1
 262 NHSTUB(add_ptp_handler                        ,0xffdc8e94) //121
 263 NHSTUB(apex2us                                ,0xffd880ec) //121
 264 NHSTUB(close                                  ,0xffc0b088) //109
 265 NHSTUB(err_init_task                          ,0xffc05f50) //111
 266 NHSTUB(exmem_alloc                            ,0xffc67308) //103
 267 NHSTUB(exmem_ualloc                           ,0xffc6715c) //103
 268 NHSTUB(exmem_ufree                            ,0xffc672a8) //103
 269 NHSTUB(free                                   ,0xffc04160) //112
 270 NHSTUB(get_nd_value                           ,0xffdfdbc0) //123
 271 NHSTUB(get_current_nd_value                   ,0xffdfdb7c) //122
 272 NHSTUB(kbd_p1_f                               ,0xffc23d54) //109
 273 NHSTUB(kbd_p1_f_cont                          ,0xffc23d60) //109
 274 NHSTUB(kbd_p2_f                               ,0xffc23604) //109
 275 NHSTUB(kbd_read_keys                          ,0xffc23cd4) //109
 276 NHSTUB(kbd_read_keys_r2                       ,0xffc43eac) //109
 277 NHSTUB(lseek                                  ,0xffc263d4) //120
 278 NHSTUB(malloc                                 ,0xffc04104) //112
 279 NHSTUB(memcmp                                 ,0xffc11280) //120
 280 NHSTUB(memcpy                                 ,0xffc2ec8c) //120
 281 NHSTUB(memset                                 ,0xffd87124) //120
 282 NHSTUB(mkdir                                  ,0xffc26754) //109
 283 NHSTUB(mktime_ext                             ,0xffc806fc) //  1
 284 NHSTUB(open                                   ,0xffc0afd8) //109
 285 NHSTUB(OpenFastDir                            ,0xffdf62c0) //  4
 286 NHSTUB(closedir                               ,0xffdf6270) //121
 287 NHSTUB(get_fstype                             ,0xffc524c4) //122
 288 NHSTUB(qsort                                  ,0xffe4724c) //  4
 289 NHSTUB(rand                                   ,0xffc11388) //121
 290 NHSTUB(realloc                                ,0xffd871a0) //115
 291 NHSTUB(reboot_fw_update                       ,0xffdf7c88) //106
 292 NHSTUB(set_control_event                      ,0xffc6fa08) //111
 293 NHSTUB(srand                                  ,0xffc1137c) //122
 294 NHSTUB(stat                                   ,0xffc2641c) //109
 295 NHSTUB(strcat                                 ,0xffc7feb8) //  1
 296 NHSTUB(strchr                                 ,0xffc03fe8) //  1
 297 NHSTUB(strcmp                                 ,0xffc1123c) //120
 298 NHSTUB(strcpy                                 ,0xffc11224) //120
 299 NHSTUB(strftime                               ,0xffc80104) //113
 300 NHSTUB(strlen                                 ,0xffc04034) //120
 301 NHSTUB(strncmp                                ,0xffc03f9c) //  1
 302 NHSTUB(strncpy                                ,0xffc03f60) //  1
 303 NHSTUB(strrchr                                ,0xffc0400c) //  1
 304 NHSTUB(strtol                                 ,0xffc2ef6c) //101
 305 NHSTUB(strtolx                                ,0xffc2ed70) //109
 306    DEF(task_CaptSeq                           ,0xffc5c1e8) //120
 307    DEF(task_DvlpSeqTask                       ,0xffd18bcc) //120
 308    DEF(task_ExpDrv                            ,0xffc95048) //120
 309    DEF(task_FileWrite                         ,0xffdf0eec) //120
 310    DEF(task_InitFileModules                   ,0xffc736c4) //120
 311    DEF(task_MovieRecord                       ,0xffd138cc) //120
 312    DEF(task_PhySw                             ,0xffc23934) //120
 313 NHSTUB(time                                   ,0xffc6651c) //109
 314 NHSTUB(vsprintf                               ,0xffc111e8) //115
 315 NHSTUB(EngDrvRead                             ,0xffc24ba8) //102
 316 NHSTUB(PTM_GetCurrentItem                     ,0xffc709a4) //105
 317 NHSTUB(DisableISDriveError                    ,0xffe05e70) //120
 318 NHSTUB(CancelHPTimer                          ,0xffc68040) //119
 319 NHSTUB(SetHPTimerAfterNow                     ,0xffc67f38) //119
 320 NHSTUB(PT_MFOn                                ,0xffc59fb8) //120
 321 NHSTUB(PT_MFOff                               ,0xffc59fc8) //120
 322 NHSTUB(GetAdChValue                           ,0xffc41690) //120
 323 NHSTUB(get_ptp_buf_size                       ,0xffcbd61c) //122
 324 NHSTUB(get_ptp_file_buf                       ,0xffdca82c) //121
 325 NHSTUB(SetVideoOutType                        ,0xffe62154) //109
 326 NHSTUB(GetVideoOutType                        ,0xffe620b8) //120

/* [<][>][^][v][top][bottom][index][help] */