############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 14/May/2008 12:49:24 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\optio # # n_menu.c # # Command line = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\optio # # n_menu.c -D NEWSGOLD -D ELKA -lC # # D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\List\ -o D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_ # # Editor\Release\Obj\ -s9 --no_unroll --cpu_mode arm # # --endian little --cpu ARM926EJ-S --stack_align 4 # # --interwork -e --fpu None --dlib_config # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\List\option_menu.lst # # Object file = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\Obj\option_menu.r79 # # # # # ############################################################################## D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\option_menu.c 1 #include "swilib.h" 2 #include "type.h" 3 #include "rect_patcher.h" 4 #include "lang.h" 5 6 extern void save_file(void); 7 extern int menu_item_n; 8 extern MENU_LIST *ml_edit_tmp; 9 extern MENU_LIST *mltop; 10 extern void edit_ml(MENU_LIST *ml); 11 extern unsigned int MAIN_GUI_ID; 12 extern void AddtoMenuList(char *name, int name_len, char *func, int func_len, int type, int IsEdited); 13 14 15 #define MAIN_MENU_ITEMS_N 6 16 \ In segment DATA_C, align 4, align-sorted 17 const int mmenusoftkeys[]={0,1,2}; \ mmenusoftkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 18 \ In segment DATA_C, align 4, align-sorted 19 const SOFTKEY_DESC mmenu_sk[]= \ mmenu_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 20 { 21 {0x0018,0x0000,(int)LGP_SELECT}, 22 {0x0001,0x0000,(int)LGP_BACK}, 23 {0x003D,0x0000,(int)LGP_DOIT_PIC} 24 }; 25 \ In segment DATA_C, align 4, align-sorted 26 const SOFTKEYSTAB mmenu_skt= \ mmenu_skt: \ 00000000 ........0000 DC32 mmenu_sk, 0 \ 0000 27 { 28 mmenu_sk,0 29 }; 30 31 const HEADER_DESC option_menu_header={0, 0, 0, 0,NULL,(int)LGP_OPTIONS,LGP_NULL}; 32 \ In segment CODE, align 4, keep-with-next 33 int option_menu_keyhook(void *data, GUI_MSG *msg) 34 { 35 return(0); \ option_menu_keyhook: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 36 } 37 \ In segment CODE, align 4, keep-with-next 38 void option_menu_ghook(void *data, int cmd) 39 { \ option_menu_ghook: \ 00000000 00402DE9 PUSH {LR} 40 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 41 { 42 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 43 } 44 } \ 00000010 0080BDE8 POP {PC} ;; return 45 \ In segment CODE, align 4, keep-with-next 46 void menu_edit(GUI *gui) 47 { 48 edit_ml(ml_edit_tmp); \ menu_edit: \ 00000000 ........ LDR R0,??DataTable13 ;; ml_edit_tmp \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF edit_ml,??edit_ml??rA 49 GeneralFuncF1(1); \ 00000010 0100A0E3 MOV R0,#+1 \ 00000014 3B0100EF SWI +315 50 } \ 00000018 0080BDE8 POP {PC} ;; return 51 \ In segment CODE, align 4, keep-with-next 52 void menu_add(GUI *gui) 53 { \ menu_add: \ 00000000 30402DE9 PUSH {R4,R5,LR} 54 MENU_LIST *ml=malloc(sizeof(MENU_LIST)); \ 00000004 2000A0E3 MOV R0,#+32 \ 00000008 140000EF SWI +20 \ 0000000C 0040A0E1 MOV R4,R0 55 char *name=malloc(128); \ 00000010 8000A0E3 MOV R0,#+128 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 56 char *func=malloc(128); \ 0000001C 8000A0E3 MOV R0,#+128 \ 00000020 140000EF SWI +20 57 ml->next=0; \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 001084E5 STR R1,[R4, #+0] 58 ml->prev=0; \ 0000002C 041084E5 STR R1,[R4, #+4] 59 ml->name=name; \ 00000030 085084E5 STR R5,[R4, #+8] 60 ml->func=func; \ 00000034 100084E5 STR R0,[R4, #+16] 61 ml->name_len=0; \ 00000038 0C1084E5 STR R1,[R4, #+12] 62 ml->func_len=0; \ 0000003C 141084E5 STR R1,[R4, #+20] 63 ml->type=0; \ 00000040 181084E5 STR R1,[R4, #+24] 64 ml->IsEdited=1; \ 00000044 0100A0E3 MOV R0,#+1 \ 00000048 1C0084E5 STR R0,[R4, #+28] 65 if(!mltop) \ 0000004C ........ LDR R0,??DataTable14 ;; mltop \ 00000050 001090E5 LDR R1,[R0, #+0] \ 00000054 000051E3 CMP R1,#+0 66 { 67 mltop=ml; \ 00000058 00408005 STREQ R4,[R0, #+0] \ 0000005C 0800000A BEQ ??menu_add_0 68 } 69 else 70 { 71 MENU_LIST *ml_t=mltop; \ 00000060 000091E5 LDR R0,[R1, #+0] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0300000A BEQ ??menu_add_1 72 while(ml_t->next) 73 ml_t=ml_t->next; \ ??menu_add_2: \ 0000006C 001091E5 LDR R1,[R1, #+0] \ 00000070 000091E5 LDR R0,[R1, #+0] \ 00000074 000050E3 CMP R0,#+0 \ 00000078 FBFFFF1A BNE ??menu_add_2 74 ml_t->next=ml; \ ??menu_add_1: \ 0000007C 004081E5 STR R4,[R1, #+0] 75 ml->prev=ml_t; \ 00000080 041084E5 STR R1,[R4, #+4] 76 } 77 menu_item_n++; \ ??menu_add_0: \ 00000084 ........ LDR R0,??DataTable8 ;; menu_item_n \ 00000088 001090E5 LDR R1,[R0, #+0] \ 0000008C 011081E2 ADD R1,R1,#+1 \ 00000090 001080E5 STR R1,[R0, #+0] 78 edit_ml(ml); \ 00000094 0400A0E1 MOV R0,R4 \ 00000098 ........ _BLF edit_ml,??edit_ml??rA 79 GeneralFuncF1(1); \ 0000009C 0100A0E3 MOV R0,#+1 \ 000000A0 3B0100EF SWI +315 80 } \ 000000A4 3080BDE8 POP {R4,R5,PC} ;; return 81 \ In segment CODE, align 4, keep-with-next 82 void menu_insert(GUI *gui) 83 { \ menu_insert: \ 00000000 30402DE9 PUSH {R4,R5,LR} 84 MENU_LIST *ml=malloc(sizeof(MENU_LIST)); \ 00000004 2000A0E3 MOV R0,#+32 \ 00000008 140000EF SWI +20 \ 0000000C 0040A0E1 MOV R4,R0 85 char *name=malloc(128); \ 00000010 8000A0E3 MOV R0,#+128 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 86 char *func=malloc(128); \ 0000001C 8000A0E3 MOV R0,#+128 \ 00000020 140000EF SWI +20 87 ml->next=0; \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 001084E5 STR R1,[R4, #+0] 88 ml->prev=0; \ 0000002C 041084E5 STR R1,[R4, #+4] 89 ml->name=name; \ 00000030 085084E5 STR R5,[R4, #+8] 90 ml->func=func; \ 00000034 100084E5 STR R0,[R4, #+16] 91 ml->name_len=0; \ 00000038 0C1084E5 STR R1,[R4, #+12] 92 ml->func_len=0; \ 0000003C 141084E5 STR R1,[R4, #+20] 93 ml->type=0; \ 00000040 181084E5 STR R1,[R4, #+24] 94 ml->IsEdited=1; \ 00000044 0100A0E3 MOV R0,#+1 \ 00000048 1C0084E5 STR R0,[R4, #+28] 95 if (ml_edit_tmp) \ 0000004C ........ LDR R0,??DataTable13 ;; ml_edit_tmp \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 000050E3 CMP R0,#+0 \ 00000058 0700000A BEQ ??menu_insert_0 96 { 97 MENU_LIST *ml_t=ml_edit_tmp->next; \ 0000005C 001090E5 LDR R1,[R0, #+0] 98 ml->next=ml_t; \ 00000060 001084E5 STR R1,[R4, #+0] 99 ml_edit_tmp->next=ml; \ 00000064 004080E5 STR R4,[R0, #+0] 100 ml->prev=ml_edit_tmp; \ 00000068 040084E5 STR R0,[R4, #+4] 101 if(ml_t) \ 0000006C 000051E3 CMP R1,#+0 \ 00000070 0F00000A BEQ ??menu_insert_1 102 ml_t->prev=ml; \ 00000074 044081E5 STR R4,[R1, #+4] \ 00000078 0D0000EA B ??menu_insert_1 103 } 104 else 105 { 106 if (!mltop) \ ??menu_insert_0: \ 0000007C ........ LDR R0,??DataTable14 ;; mltop \ 00000080 001090E5 LDR R1,[R0, #+0] \ 00000084 000051E3 CMP R1,#+0 107 { 108 mltop=ml; \ 00000088 00408005 STREQ R4,[R0, #+0] \ 0000008C 0800000A BEQ ??menu_insert_1 109 } 110 else 111 { 112 MENU_LIST *ml_t=mltop; \ 00000090 000091E5 LDR R0,[R1, #+0] \ 00000094 000050E3 CMP R0,#+0 \ 00000098 0300000A BEQ ??menu_insert_2 113 while(ml_t->next) 114 ml_t=ml_t->next; \ ??menu_insert_3: \ 0000009C 001091E5 LDR R1,[R1, #+0] \ 000000A0 000091E5 LDR R0,[R1, #+0] \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 FBFFFF1A BNE ??menu_insert_3 115 ml_t->next=ml; \ ??menu_insert_2: \ 000000AC 004081E5 STR R4,[R1, #+0] 116 ml->prev=ml_t; \ 000000B0 041084E5 STR R1,[R4, #+4] 117 } 118 } 119 menu_item_n++; \ ??menu_insert_1: \ 000000B4 ........ LDR R0,??DataTable8 ;; menu_item_n \ 000000B8 001090E5 LDR R1,[R0, #+0] \ 000000BC 011081E2 ADD R1,R1,#+1 \ 000000C0 001080E5 STR R1,[R0, #+0] 120 edit_ml(ml); \ 000000C4 0400A0E1 MOV R0,R4 \ 000000C8 ........ _BLF edit_ml,??edit_ml??rA 121 GeneralFuncF1(1); \ 000000CC 0100A0E3 MOV R0,#+1 \ 000000D0 3B0100EF SWI +315 122 } \ 000000D4 3080BDE8 POP {R4,R5,PC} ;; return 123 \ In segment CODE, align 4, keep-with-next 124 void menu_del(GUI *gui) 125 { \ menu_del: \ 00000000 70402DE9 PUSH {R4-R6,LR} 126 void *igui; 127 if (ml_edit_tmp==mltop) \ 00000004 ........ LDR R4,??DataTable13 ;; ml_edit_tmp \ 00000008 ........ LDR R5,??DataTable14 ;; mltop \ 0000000C 001094E5 LDR R1,[R4, #+0] \ 00000010 003095E5 LDR R3,[R5, #+0] \ 00000014 080091E5 LDR R0,[R1, #+8] \ 00000018 1C2091E5 LDR R2,[R1, #+28] \ 0000001C 006091E5 LDR R6,[R1, #+0] \ 00000020 030051E1 CMP R1,R3 \ 00000024 0C00001A BNE ??menu_del_0 128 { 129 mltop=ml_edit_tmp->next; \ 00000028 006085E5 STR R6,[R5, #+0] 130 mltop->prev=0; \ 0000002C 0030A0E3 MOV R3,#+0 \ 00000030 043086E5 STR R3,[R6, #+4] 131 if(ml_edit_tmp->IsEdited) \ 00000034 000052E3 CMP R2,#+0 \ 00000038 0300000A BEQ ??menu_del_1 132 { 133 mfree(ml_edit_tmp->name); \ 0000003C 150000EF SWI +21 134 mfree(ml_edit_tmp->func); \ 00000040 000094E5 LDR R0,[R4, #+0] \ 00000044 100090E5 LDR R0,[R0, #+16] \ 00000048 150000EF SWI +21 135 } 136 mfree(ml_edit_tmp); \ ??menu_del_1: \ 0000004C 000094E5 LDR R0,[R4, #+0] \ 00000050 150000EF SWI +21 137 ml_edit_tmp=mltop; \ 00000054 005095E5 LDR R5,[R5, #+0] \ 00000058 0E0000EA B ??menu_del_2 138 } 139 else if (ml_edit_tmp) \ ??menu_del_0: \ 0000005C 000051E3 CMP R1,#+0 \ 00000060 1C00000A BEQ ??menu_del_3 140 { 141 MENU_LIST *ml_n=ml_edit_tmp->next; 142 MENU_LIST *ml_p=ml_edit_tmp->prev; \ 00000064 045091E5 LDR R5,[R1, #+4] 143 if(ml_edit_tmp->IsEdited) \ 00000068 000052E3 CMP R2,#+0 \ 0000006C 0300000A BEQ ??menu_del_4 144 { 145 mfree(ml_edit_tmp->name); \ 00000070 150000EF SWI +21 146 mfree(ml_edit_tmp->func); \ 00000074 000094E5 LDR R0,[R4, #+0] \ 00000078 100090E5 LDR R0,[R0, #+16] \ 0000007C 150000EF SWI +21 147 } 148 if(ml_p) \ ??menu_del_4: \ 00000080 000055E3 CMP R5,#+0 149 ml_p->next=ml_n; \ 00000084 00608515 STRNE R6,[R5, #+0] 150 if(ml_n) \ 00000088 000056E3 CMP R6,#+0 151 ml_n->prev=ml_p; \ 0000008C 04508615 STRNE R5,[R6, #+4] 152 mfree(ml_edit_tmp); \ 00000090 000094E5 LDR R0,[R4, #+0] \ 00000094 150000EF SWI +21 153 ml_edit_tmp=ml_p; \ ??menu_del_2: \ 00000098 005084E5 STR R5,[R4, #+0] 154 } 155 else 156 goto end; 157 if (menu_item_n) \ 0000009C ........ LDR R4,??DataTable8 ;; menu_item_n \ 000000A0 000094E5 LDR R0,[R4, #+0] \ 000000A4 000050E3 CMP R0,#+0 158 menu_item_n--; \ 000000A8 01004012 SUBNE R0,R0,#+1 \ 000000AC 00008415 STRNE R0,[R4, #+0] 159 save_file(); \ 000000B0 ........ _BLF save_file,??save_file??rA 160 igui=FindGUIbyId(MAIN_GUI_ID, NULL); \ 000000B4 ........ LDR R0,??DataTable15 ;; MAIN_GUI_ID \ 000000B8 0010A0E3 MOV R1,#+0 \ 000000BC 000090E5 LDR R0,[R0, #+0] \ 000000C0 090200EF SWI +521 161 if (igui) \ 000000C4 000050E3 CMP R0,#+0 \ 000000C8 0200000A BEQ ??menu_del_3 162 { 163 Menu_SetItemCountDyn(igui, menu_item_n); \ 000000CC 001094E5 LDR R1,[R4, #+0] \ 000000D0 E60100EF SWI +486 164 RefreshGUI(); \ 000000D4 960100EF SWI +406 165 } 166 end: 167 GeneralFuncF1(1); \ ??menu_del_3: \ 000000D8 0100A0E3 MOV R0,#+1 \ 000000DC 3B0100EF SWI +315 168 } \ 000000E0 7080BDE8 POP {R4-R6,PC} ;; return 169 \ In segment CODE, align 4, keep-with-next 170 void menu_moveup(GUI *gui) 171 { 172 MENU_LIST *ml_n; 173 MENU_LIST *ml_p; 174 void *igui; 175 if (ml_edit_tmp==mltop) \ menu_moveup: \ 00000000 ........ LDR R0,??DataTable14 ;; mltop \ 00000004 ........ LDR R2,??DataTable13 ;; ml_edit_tmp \ 00000008 00402DE9 PUSH {LR} \ 0000000C 001090E5 LDR R1,[R0, #+0] \ 00000010 002092E5 LDR R2,[R2, #+0] \ 00000014 010052E1 CMP R2,R1 176 goto end; 177 if (!ml_edit_tmp) \ 00000018 00005213 CMPNE R2,#+0 \ 0000001C 1800000A BEQ ??menu_moveup_0 178 goto end; 179 ml_p=ml_edit_tmp->prev; \ 00000020 043092E5 LDR R3,[R2, #+4] 180 if(!(ml_n=ml_edit_tmp->next)) \ 00000024 00C092E5 LDR R12,[R2, #+0] \ 00000028 00005CE3 CMP R12,#+0 181 ml_p->next=0; 182 else 183 { ml_n->prev=ml_p; \ 0000002C 04308C15 STRNE R3,[R12, #+4] 184 ml_p->next=ml_n; \ 00000030 00C083E5 STR R12,[R3, #+0] 185 } 186 if(ml_p==mltop) \ 00000034 010053E1 CMP R3,R1 \ 00000038 0400001A BNE ??menu_moveup_1 187 { 188 mltop=ml_edit_tmp; \ 0000003C 002080E5 STR R2,[R0, #+0] 189 ml_edit_tmp->prev=0; \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 040082E5 STR R0,[R2, #+4] 190 ml_edit_tmp->next=ml_p; \ 00000048 003082E5 STR R3,[R2, #+0] 191 ml_p->prev=ml_edit_tmp; \ 0000004C 030000EA B ??menu_moveup_2 192 } 193 else 194 { 195 MENU_LIST *ml=ml_p->prev; \ ??menu_moveup_1: \ 00000050 040093E5 LDR R0,[R3, #+4] 196 ml->next=ml_edit_tmp; \ 00000054 002080E5 STR R2,[R0, #+0] 197 ml_edit_tmp->next=ml_p; \ 00000058 003082E5 STR R3,[R2, #+0] 198 ml_edit_tmp->prev=ml; \ 0000005C 040082E5 STR R0,[R2, #+4] 199 ml_p->prev=ml_edit_tmp; \ ??menu_moveup_2: \ 00000060 042083E5 STR R2,[R3, #+4] 200 } 201 save_file(); \ 00000064 ........ _BLF save_file,??save_file??rA 202 igui=FindGUIbyId(MAIN_GUI_ID, NULL); 203 if (igui) \ 00000068 ........ LDR R0,??DataTable15 ;; MAIN_GUI_ID \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 000090E5 LDR R0,[R0, #+0] \ 00000074 090200EF SWI +521 \ 00000078 000050E3 CMP R0,#+0 \ 0000007C 0000000A BEQ ??menu_moveup_0 204 { 205 RefreshGUI(); \ 00000080 960100EF SWI +406 206 } 207 end: 208 GeneralFuncF1(1); \ ??menu_moveup_0: \ 00000084 0100A0E3 MOV R0,#+1 \ 00000088 3B0100EF SWI +315 209 } \ 0000008C 0080BDE8 POP {PC} ;; return 210 211 \ In segment CODE, align 4, keep-with-next 212 void menu_movedown(GUI *gui) 213 { 214 MENU_LIST *ml_n; 215 MENU_LIST *ml_p; 216 void *igui; 217 if (!ml_edit_tmp) \ menu_movedown: \ 00000000 ........ LDR R0,??DataTable13 ;; ml_edit_tmp \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 218 goto end; 219 if(!(ml_n=ml_edit_tmp->next)) \ 00000010 00109015 LDRNE R1,[R0, #+0] \ 00000014 00005113 CMPNE R1,#+0 \ 00000018 1B00000A BEQ ??menu_movedown_0 220 goto end; 221 ml_p=ml_edit_tmp->prev; 222 if(ml_edit_tmp==mltop) \ 0000001C ........ LDR R3,??DataTable14 ;; mltop \ 00000020 042090E5 LDR R2,[R0, #+4] \ 00000024 004093E5 LDR R4,[R3, #+0] \ 00000028 00C0A0E3 MOV R12,#+0 \ 0000002C 040050E1 CMP R0,R4 223 { 224 mltop=ml_n; \ 00000030 00108305 STREQ R1,[R3, #+0] 225 ml_n->prev=0; \ 00000034 04C08105 STREQ R12,[R1, #+4] 226 } 227 else 228 { 229 ml_n->prev=ml_p; \ 00000038 04208115 STRNE R2,[R1, #+4] 230 ml_p->next=ml_n; \ 0000003C 00108215 STRNE R1,[R2, #+0] 231 } 232 if(!(ml_n->next)) \ 00000040 002091E5 LDR R2,[R1, #+0] \ 00000044 000052E3 CMP R2,#+0 \ 00000048 0300001A BNE ??menu_movedown_1 233 { 234 ml_edit_tmp->next=0; \ 0000004C 00C080E5 STR R12,[R0, #+0] 235 ml_n->next=ml_edit_tmp; \ 00000050 000081E5 STR R0,[R1, #+0] 236 ml_edit_tmp->prev=ml_n; \ 00000054 041080E5 STR R1,[R0, #+4] \ 00000058 030000EA B ??menu_movedown_2 237 } 238 else 239 { 240 MENU_LIST *ml=ml_n->next; 241 ml->prev=ml_edit_tmp; \ ??menu_movedown_1: \ 0000005C 040082E5 STR R0,[R2, #+4] 242 ml_edit_tmp->next=ml; \ 00000060 002080E5 STR R2,[R0, #+0] 243 ml_edit_tmp->prev=ml_n; \ 00000064 041080E5 STR R1,[R0, #+4] 244 ml_n->next=ml_edit_tmp; \ 00000068 000081E5 STR R0,[R1, #+0] 245 } 246 save_file(); \ ??menu_movedown_2: \ 0000006C ........ _BLF save_file,??save_file??rA 247 igui=FindGUIbyId(MAIN_GUI_ID, NULL); 248 if (igui) \ 00000070 ........ LDR R0,??DataTable15 ;; MAIN_GUI_ID \ 00000074 0010A0E3 MOV R1,#+0 \ 00000078 000090E5 LDR R0,[R0, #+0] \ 0000007C 090200EF SWI +521 \ 00000080 000050E3 CMP R0,#+0 \ 00000084 0000000A BEQ ??menu_movedown_0 249 { 250 RefreshGUI(); \ 00000088 960100EF SWI +406 251 } 252 end: 253 GeneralFuncF1(1); \ ??menu_movedown_0: \ 0000008C 0100A0E3 MOV R0,#+1 \ 00000090 3B0100EF SWI +315 254 } \ 00000094 1080BDE8 POP {R4,PC} ;; return \ In segment DATA_C, align 4, align-sorted \ option_menu_header: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, `?`, 2147483647 \ ....FFFFFF7F 255 256 const MENUPROCS_DESC option_menu_HNDLS[MAIN_MENU_ITEMS_N]= 257 { 258 menu_edit, 259 menu_add, 260 menu_insert, 261 menu_del, 262 menu_moveup, 263 menu_movedown 264 }; 265 266 const MENUITEM_DESC option_menu_ITEMS[MAIN_MENU_ITEMS_N]= 267 { 268 {NULL,(int)LGP_EDIT, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 269 {NULL,(int)LGP_ADD, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 270 {NULL,(int)LGP_INSERT, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 271 {NULL,(int)LGP_DELETE, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 272 {NULL,(int)LGP_UP, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 273 {NULL,(int)LGP_DOWN, LGP_NULL, 0, NULL, MENU_FLAG3, MENU_FLAG2}, 274 }; 275 276 const MENU_DESC option_menu= \ option_menu: \ 00000014 08000000.... DC32 8, option_menu_keyhook, option_menu_ghook, 0H, mmenusoftkeys \ ............ \ 00000000.... \ .... \ 00000028 ........1000 DC32 mmenu_skt, 16, 0H, option_menu_ITEMS, option_menu_HNDLS, 6 \ 000000000000 \ ............ \ ....06000000 \ In segment DATA_C, align 4, align-sorted \ option_menu_HNDLS: \ 00000000 ............ DC32 menu_edit, menu_add, menu_insert, menu_del, menu_moveup \ ............ \ ............ \ .... \ 00000014 ........ DC32 menu_movedown \ In segment DATA_C, align 4, align-sorted \ option_menu_ITEMS: \ 00000000 00000000.... DC32 0H, `?`, 2147483647, 0, 0H, 3, 1442, 0H \ ....FFFFFF7F \ 000000000000 \ 000003000000 \ A20500000000 \ 0000 \ 00000020 ........FFFF DC32 `?`, 2147483647, 0, 0H, 3, 1442, 0H \ FF7F00000000 \ 000000000300 \ 0000A2050000 \ 00000000 \ 0000003C ........FFFF DC32 `?`, 2147483647, 0, 0H, 3, 1442, 0H \ FF7F00000000 \ 000000000300 \ 0000A2050000 \ 00000000 \ 00000058 ........FFFF DC32 `?`, 2147483647, 0, 0H, 3, 1442, 0H \ FF7F00000000 \ 000000000300 \ 0000A2050000 \ 00000000 \ 00000074 ........FFFF DC32 `?`, 2147483647, 0, 0H, 3, 1442, 0H \ FF7F00000000 \ 000000000300 \ 0000A2050000 \ 00000000 \ 00000090 ........FFFF DC32 `?`, 2147483647, 0, 0H, 3, 1442 \ FF7F00000000 \ 000000000300 \ 0000A2050000 277 { 278 8,option_menu_keyhook,option_menu_ghook,NULL, 279 mmenusoftkeys, 280 &mmenu_skt, 281 0x10,//MENU_FLAG, 282 NULL, 283 option_menu_ITEMS,//menuitems, 284 option_menu_HNDLS,//menuprocs, 285 MAIN_MENU_ITEMS_N 286 }; 287 \ In segment CODE, align 4, keep-with-next 288 void show_option_menu(void) 289 { \ show_option_menu: \ 00000000 10402DE9 PUSH {R4,LR} 290 patch_header(&option_menu_header); \ 00000004 54409FE5 LDR R4,??show_option_menu_0 ;; option_menu_header \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C B000C4E1 STRH R0,[R4, #+0] \ 00000010 1800A0E3 MOV R0,#+24 \ 00000014 B200C4E1 STRH R0,[R4, #+2] \ 00000018 888100EF SWI +33160 \ 0000001C 010040E2 SUB R0,R0,#+1 \ 00000020 B400C4E1 STRH R0,[R4, #+4] \ 00000024 8A8100EF SWI +33162 \ 00000028 170080E2 ADD R0,R0,#+23 \ 0000002C B600C4E1 STRH R0,[R4, #+6] 291 CreateMenu(0, 0, &option_menu, &option_menu_header, 0, MAIN_MENU_ITEMS_N, 0, 0); \ 00000030 0000A0E3 MOV R0,#+0 \ 00000034 01002DE9 PUSH {R0} \ 00000038 01002DE9 PUSH {R0} \ 0000003C 0430A0E1 MOV R3,R4 \ 00000040 142084E2 ADD R2,R4,#+20 \ 00000044 0010A0E3 MOV R1,#+0 \ 00000048 0600A0E3 MOV R0,#+6 \ 0000004C 01002DE9 PUSH {R0} \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 01002DE9 PUSH {R0} \ 00000058 520100EF SWI +338 292 } \ 0000005C 1F80BDE8 POP {R0-R4,PC} ;; return \ ??show_option_menu_0: \ 00000060 ........ DC32 option_menu_header \ In segment CODE, align 4, keep-with-next \ ??DataTable8: \ 00000000 ........ DC32 menu_item_n \ In segment CODE, align 4, keep-with-next \ ??DataTable13: \ 00000000 ........ DC32 ml_edit_tmp \ In segment CODE, align 4, keep-with-next \ ??DataTable14: \ 00000000 ........ DC32 mltop \ In segment CODE, align 4, keep-with-next \ ??DataTable15: \ 00000000 ........ DC32 MAIN_GUI_ID \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 53656C656374 DC8 "Select" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4261636B00 DC8 "Back" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4F7074696F6E DC8 "Option" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4564697400 DC8 "Edit" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 41646400 DC8 "Add" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 496E73657274 DC8 "Insert" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 44656C657465 DC8 "Delete" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 557000 DC8 "Up" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 446F776E00 DC8 "Down" \ 00000005 000000 DC8 0, 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ menu_add 12 menu_del 16 menu_edit 4 menu_insert 12 menu_movedown 8 menu_moveup 4 option_menu_ghook 4 option_menu_keyhook 0 show_option_menu 24 Segment part sizes: Function/Label Bytes -------------- ----- mmenusoftkeys 12 mmenu_sk 24 mmenu_skt 8 option_menu_keyhook 8 option_menu_ghook 20 menu_edit 28 menu_add 168 menu_insert 216 menu_del 228 menu_moveup 144 menu_movedown 152 option_menu_header 64 option_menu_HNDLS 24 option_menu_ITEMS 168 show_option_menu 100 ??DataTable8 4 ??DataTable13 4 ??DataTable14 4 ??DataTable15 4 ? 8 ? 8 ? 8 ? 8 ? 4 ? 8 ? 8 ? 3 ? 8 Others 60 1 140 bytes in segment CODE 363 bytes in segment DATA_C 1 080 bytes of CODE memory (+ 60 bytes shared) 363 bytes of CONST memory Errors: none Warnings: none