############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 12/Feb/2008 16:28:05 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT\MNUEdit\fileman.c # # Command line = D:\Pasha\elf\_MY_PROJECT\MNUEdit\fileman.c -D # # NEWSGOLD -D ELKA -D LANG_EN -lC # # D:\Pasha\elf\_MY_PROJECT\MNUEdit\Release_ELKA_EN\Lis # # t\ -o D:\Pasha\elf\_MY_PROJECT\MNUEdit\Release_ELKA_ # # EN\Obj\ -s9 --no_unroll --cpu_mode arm --endian # # little --cpu ARM926EJ-S --stack_align 4 --interwork # # -e --fpu None -I "D:\Pasha\ARM_Embedded_Workbench\Em # # bedded Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT\MNUEdit\Release_ELKA_EN\Lis # # t\fileman.lst # # Object file = D:\Pasha\elf\_MY_PROJECT\MNUEdit\Release_ELKA_EN\Obj # # \fileman.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT\MNUEdit\fileman.c 1 #include "../inc/swilib.h" 2 3 #pragma inline 4 void patch_header2(HEADER_DESC* head) 5 { 6 head->rc.x=0; 7 head->rc.y=YDISP; 8 head->rc.x2=ScreenW()-1; 9 head->rc.y2=HeaderH()+YDISP; 10 } 11 #pragma inline 12 void patch_input2(INPUTDIA_DESC* inp) 13 { 14 inp->rc.x=0; 15 inp->rc.y=HeaderH()+1+YDISP; 16 inp->rc.x2=ScreenW()-1; 17 inp->rc.y2=ScreenH()-SoftkeyH()-1; 18 } 19 20 #pragma inline 21 void patch_rect2(RECT*rc,int x,int y, int x2, int y2) 22 { 23 rc->x=x; 24 rc->y=y; 25 rc->x2=x2; 26 rc->y2=y2; 27 } 28 29 typedef struct 30 { 31 void *next; 32 char *fullname; 33 char *name; 34 int is_folder; 35 char *ext; 36 }FLIST; 37 38 typedef struct 39 { 40 void *gui; 41 int type; 42 }FVIEW; 43 \ In segment DATA_Z, align 4, align-sorted 44 volatile FLIST *fltop; \ fltop: \ 00000000 DS8 4 45 46 \ In segment CODE, align 4, keep-with-next 47 void Free_FLIST(void) 48 { \ Free_FLIST: \ 00000000 70402DE9 PUSH {R4-R6,LR} 49 LockSched(); \ 00000004 460100EF SWI +326 50 FLIST *fl=(FLIST *)fltop; \ 00000008 ........ LDR R0,??DataTable4 ;; fltop 51 fltop=0; \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 004090E5 LDR R4,[R0, #+0] \ 00000014 001080E5 STR R1,[R0, #+0] 52 UnlockSched(); \ 00000018 470100EF SWI +327 \ 0000001C 000054E3 CMP R4,#+0 \ 00000020 7080BD08 POPEQ {R4-R6,PC} 53 while(fl) 54 { 55 FLIST *fl_prev; 56 fl_prev=fl; \ ??Free_FLIST_0: \ 00000024 0450A0E1 MOV R5,R4 57 fl=fl->next; \ 00000028 004094E5 LDR R4,[R4, #+0] 58 mfree(fl_prev->fullname); \ 0000002C 046085E2 ADD R6,R5,#+4 \ 00000030 000096E5 LDR R0,[R6, #+0] \ 00000034 150000EF SWI +21 59 mfree(fl_prev->name); \ 00000038 040096E5 LDR R0,[R6, #+4] \ 0000003C 150000EF SWI +21 60 mfree(fl_prev); \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 150000EF SWI +21 61 } \ 00000048 000054E3 CMP R4,#+0 \ 0000004C F4FFFF1A BNE ??Free_FLIST_0 62 } \ 00000050 7080BDE8 POP {R4-R6,PC} ;; return 63 64 #define IS_FOLDER 1 65 #define IS_FILE 0 66 \ In segment DATA_C, align 4, align-sorted 67 const char back[]=".."; \ back: \ 00000000 2E2E00 DC8 ".." \ 00000003 00 DC8 0 \ 00000004 524F4F5400 DC8 "ROOT" \ 00000009 000000 DC8 0, 0, 0 \ In segment CODE, align 4, keep-with-next 68 int GetFListN() 69 { 70 int i=0; 71 FLIST *fl=(FLIST*)&fltop; \ GetFListN: \ 00000000 ........ LDR R1,??DataTable4 ;; fltop \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 000000EA B ??GetFListN_0 72 while((fl=fl->next)) i++; \ ??GetFListN_1: \ 0000000C 010080E2 ADD R0,R0,#+1 \ ??GetFListN_0: \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 FBFFFF1A BNE ??GetFListN_1 73 return (i); \ 0000001C 1EFF2FE1 BX LR ;; return 74 } 75 \ In segment CODE, align 4, keep-with-next 76 int GetFoldersLevel(char *name) 77 { 78 int i=0; \ GetFoldersLevel: \ 00000000 0010A0E3 MOV R1,#+0 79 char *s=name; \ 00000004 050000EA B ??GetFoldersLevel_0 80 while(*s++) 81 { 82 if (*s=='\\' &&*(s+1)!=0) i++; \ ??GetFoldersLevel_1: \ 00000008 0020D0E5 LDRB R2,[R0, #+0] \ 0000000C 5C0052E3 CMP R2,#+92 \ 00000010 0200001A BNE ??GetFoldersLevel_0 \ 00000014 0120D0E5 LDRB R2,[R0, #+1] \ 00000018 000052E3 CMP R2,#+0 \ 0000001C 01108112 ADDNE R1,R1,#+1 83 } \ ??GetFoldersLevel_0: \ 00000020 ........ LDRB R2,[R0], #+1 \ 00000024 000052E3 CMP R2,#+0 \ 00000028 F6FFFF1A BNE ??GetFoldersLevel_1 84 return (i); \ 0000002C 0100A0E1 MOV R0,R1 \ 00000030 1EFF2FE1 BX LR ;; return 85 } 86 \ In segment CODE, align 4, keep-with-next 87 int strcmp_nocase(const char *s, const char *d) 88 { 89 int cs; 90 int ds; 91 do 92 { 93 cs=*s++; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 ........ LDRB R2,[R0], #+1 94 if (cs&0x40) cs&=0xDF; 95 ds=*d++; \ 00000004 ........ LDRB R3,[R1], #+1 \ 00000008 400012E3 TST R2,#0x40 \ 0000000C DF200212 ANDNE R2,R2,#0xDF 96 if (ds&0x40) ds&=0xDF; \ 00000010 400013E3 TST R3,#0x40 \ 00000014 DF300312 ANDNE R3,R3,#0xDF 97 cs-=ds; \ 00000018 032052E0 SUBS R2,R2,R3 98 if (cs) break; \ 0000001C 0100001A BNE ??strcmp_nocase_1 99 } 100 while(ds); \ 00000020 000053E3 CMP R3,#+0 \ 00000024 F5FFFF1A BNE ??strcmp_nocase_0 101 return(cs); \ ??strcmp_nocase_1: \ 00000028 0200A0E1 MOV R0,R2 \ 0000002C 1EFF2FE1 BX LR ;; return 102 } 103 \ In segment CODE, align 4, keep-with-next 104 FLIST *AddToFList(const char* full_name, const char *name, int is_folder) 105 { \ AddToFList: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0050A0E1 MOV R5,R0 \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C 0270A0E1 MOV R7,R2 106 FLIST *fl; 107 FLIST *pr; 108 FLIST *fn=malloc(sizeof(FLIST)); \ 00000010 1400A0E3 MOV R0,#+20 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 109 fn->fullname=malloc(strlen(full_name)+1); \ 0000001C 0500A0E1 MOV R0,R5 \ 00000020 1B0000EF SWI +27 \ 00000024 010080E2 ADD R0,R0,#+1 \ 00000028 140000EF SWI +20 110 strcpy(fn->fullname,full_name); \ 0000002C 0510A0E1 MOV R1,R5 111 112 fn->name=malloc(strlen(name)+1); 113 strcpy(fn->name,name); 114 115 fn->is_folder=is_folder; 116 fn->next=0; 117 fl=(FLIST *)fltop; \ 00000030 ........ LDR R5,??DataTable4 ;; fltop \ 00000034 040084E5 STR R0,[R4, #+4] \ 00000038 1A0000EF SWI +26 \ 0000003C 0600A0E1 MOV R0,R6 \ 00000040 1B0000EF SWI +27 \ 00000044 010080E2 ADD R0,R0,#+1 \ 00000048 140000EF SWI +20 \ 0000004C 080084E5 STR R0,[R4, #+8] \ 00000050 0610A0E1 MOV R1,R6 \ 00000054 1A0000EF SWI +26 \ 00000058 0C7084E5 STR R7,[R4, #+12] \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 000084E5 STR R0,[R4, #+0] \ 00000064 006095E5 LDR R6,[R5, #+0] 118 if (fl) \ 00000068 000056E3 CMP R6,#+0 \ 0000006C 0A00000A BEQ ??AddToFList_0 119 { 120 pr=(FLIST *)&fltop; \ 00000070 087094E5 LDR R7,[R4, #+8] 121 while(strcmp_nocase(fl->name,fn->name)<0) \ ??AddToFList_1: \ 00000074 080096E5 LDR R0,[R6, #+8] \ 00000078 0710A0E1 MOV R1,R7 \ 0000007C ........ BL strcmp_nocase \ 00000080 000050E3 CMP R0,#+0 \ 00000084 0300005A BPL ??AddToFList_2 122 { 123 pr=fl; \ 00000088 0650A0E1 MOV R5,R6 124 fl=fl->next; \ 0000008C 006096E5 LDR R6,[R6, #+0] 125 if (!fl) break; \ 00000090 000056E3 CMP R6,#+0 \ 00000094 F6FFFF1A BNE ??AddToFList_1 126 } 127 fn->next=fl; \ ??AddToFList_2: \ 00000098 006084E5 STR R6,[R4, #+0] 128 pr->next=fn; 129 } 130 else 131 { 132 fltop=fn; \ ??AddToFList_0: \ 0000009C 004085E5 STR R4,[R5, #+0] 133 } 134 return (fn); \ 000000A0 0400A0E1 MOV R0,R4 \ 000000A4 F080BDE8 POP {R4-R7,PC} ;; return 135 } 136 \ In segment CODE, align 4, keep-with-next 137 void FindFiles(char *str, int type) // type == 0 SelectFolder, type == 1 SelectFile 138 { \ FindFiles: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 C8D04DE2 SUB SP,SP,#+200 \ 00000008 40DE4DE2 SUB SP,SP,#+1024 \ 0000000C 0050A0E1 MOV R5,R0 \ 00000010 0140A0E1 MOV R4,R1 139 DIR_ENTRY de; 140 // int type; 141 unsigned int err; 142 int i, c; 143 char name[256]; 144 char fname[128]; 145 146 Free_FLIST(); \ 00000014 ........ BL Free_FLIST 147 strcpy(name,str); \ 00000018 0510A0E1 MOV R1,R5 \ 0000001C D20F8DE2 ADD R0,SP,#+840 \ 00000020 1A0000EF SWI +26 148 strcat(name,"*"); \ 00000024 501F8FE2 ADR R1,??FindFiles_0 ;; "*" \ 00000028 D20F8DE2 ADD R0,SP,#+840 \ 0000002C 170000EF SWI +23 149 150 i=GetFoldersLevel(str); \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 ........ BL GetFoldersLevel 151 if (i==0) \ 00000038 ........ LDR R3,??DataTable5 ;; back \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 0300001A BNE ??FindFiles_1 152 { 153 AddToFList("ROOT",back,IS_FOLDER); \ 00000044 0120A0E3 MOV R2,#+1 \ 00000048 0310A0E1 MOV R1,R3 \ 0000004C 040083E2 ADD R0,R3,#+4 \ 00000050 110000EA B ??FindFiles_2 154 } 155 else 156 { 157 char *s=str; 158 char *d=fname; \ ??FindFiles_1: \ 00000054 48108DE2 ADD R1,SP,#+72 \ 00000058 401E81E2 ADD R1,R1,#+1024 159 for (int k=0; k!=i && *s; ) \ 0000005C 0020A0E3 MOV R2,#+0 \ ??FindFiles_3: \ 00000060 00C0D5E5 LDRB R12,[R5, #+0] \ 00000064 00005CE3 CMP R12,#+0 \ 00000068 0500000A BEQ ??FindFiles_4 160 { 161 c=*s++; \ 0000006C ........ LDRB R12,[R5], #+1 162 *d++=c; \ 00000070 ........ STRB R12,[R1], #+1 163 if (c=='\\') k++; \ 00000074 5C005CE3 CMP R12,#+92 \ 00000078 01208202 ADDEQ R2,R2,#+1 164 } \ 0000007C 00005201 CMPEQ R2,R0 \ 00000080 F6FFFF1A BNE ??FindFiles_3 165 *d=0; \ ??FindFiles_4: \ 00000084 0000A0E3 MOV R0,#+0 \ 00000088 0000C1E5 STRB R0,[R1, #+0] 166 AddToFList(fname,back,IS_FOLDER); \ 0000008C 0120A0E3 MOV R2,#+1 \ 00000090 0310A0E1 MOV R1,R3 \ 00000094 48008DE2 ADD R0,SP,#+72 \ 00000098 400E80E2 ADD R0,R0,#+1024 \ ??FindFiles_2: \ 0000009C ........ BL AddToFList 167 } 168 if (FindFirstFile(&de,name,&err)) \ 000000A0 0D20A0E1 MOV R2,SP \ 000000A4 D21F8DE2 ADD R1,SP,#+840 \ 000000A8 04008DE2 ADD R0,SP,#+4 \ 000000AC 6B0000EF SWI +107 \ 000000B0 000050E3 CMP R0,#+0 \ 000000B4 2D5F8FE2 ADR R5,??FindFiles_0+0x4 ;; "\\" \ 000000B8 2500000A BEQ ??FindFiles_5 169 { 170 do 171 { 172 strcpy(name,de.folder_name); \ ??FindFiles_6: \ 000000BC 38108DE2 ADD R1,SP,#+56 \ 000000C0 D20F8DE2 ADD R0,SP,#+840 \ 000000C4 1A0000EF SWI +26 173 strcat(name,"\\"); \ 000000C8 0510A0E1 MOV R1,R5 \ 000000CC D20F8DE2 ADD R0,SP,#+840 \ 000000D0 170000EF SWI +23 174 strcat(name,de.file_name); \ 000000D4 B9108DE2 ADD R1,SP,#+185 \ 000000D8 D20F8DE2 ADD R0,SP,#+840 \ 000000DC 170000EF SWI +23 175 176 if (de.file_attr&FA_DIRECTORY) \ 000000E0 F003DDE1 LDRSH R0,[SP, #+48] \ 000000E4 100010E3 TST R0,#0x10 \ 000000E8 0E00000A BEQ ??FindFiles_7 177 { 178 179 strcpy(fname,"\\"); \ 000000EC 0510A0E1 MOV R1,R5 \ 000000F0 48008DE2 ADD R0,SP,#+72 \ 000000F4 400E80E2 ADD R0,R0,#+1024 \ 000000F8 1A0000EF SWI +26 180 strcat(fname,de.file_name); \ 000000FC B9108DE2 ADD R1,SP,#+185 \ 00000100 48008DE2 ADD R0,SP,#+72 \ 00000104 400E80E2 ADD R0,R0,#+1024 \ 00000108 170000EF SWI +23 181 strcat(name,"\\"); \ 0000010C 0510A0E1 MOV R1,R5 \ 00000110 D20F8DE2 ADD R0,SP,#+840 \ 00000114 170000EF SWI +23 182 AddToFList(name,fname,IS_FOLDER); \ 00000118 0120A0E3 MOV R2,#+1 \ 0000011C 48108DE2 ADD R1,SP,#+72 \ 00000120 401E81E2 ADD R1,R1,#+1024 \ 00000124 030000EA B ??FindFiles_8 183 } 184 else 185 { 186 if (type!=0) \ ??FindFiles_7: \ 00000128 000054E3 CMP R4,#+0 \ 0000012C 0300000A BEQ ??FindFiles_9 187 { 188 AddToFList(name,de.file_name,IS_FILE); \ 00000130 0020A0E3 MOV R2,#+0 \ 00000134 B9108DE2 ADD R1,SP,#+185 \ ??FindFiles_8: \ 00000138 D20F8DE2 ADD R0,SP,#+840 \ 0000013C ........ BL AddToFList 189 } 190 } 191 } 192 while(FindNextFile(&de,&err)); \ ??FindFiles_9: \ 00000140 0D10A0E1 MOV R1,SP \ 00000144 04008DE2 ADD R0,SP,#+4 \ 00000148 6C0000EF SWI +108 \ 0000014C 000050E3 CMP R0,#+0 \ 00000150 D9FFFF1A BNE ??FindFiles_6 193 } 194 FindClose(&de,&err); \ ??FindFiles_5: \ 00000154 0D10A0E1 MOV R1,SP \ 00000158 04008DE2 ADD R0,SP,#+4 \ 0000015C 6D0000EF SWI +109 195 } \ 00000160 C8D08DE2 ADD SP,SP,#+200 \ 00000164 40DE8DE2 ADD SP,SP,#+1024 \ 00000168 3080BDE8 POP {R4,R5,PC} ;; return \ ??FindFiles_0: \ 0000016C 2A000000 DC8 "*",+0,+0 \ 00000170 5C000000 DC8 "\\",+0,+0 196 197 198 \ In segment CODE, align 4, keep-with-next 199 FLIST *FindFLISTtByNS(int *i, int si) 200 { 201 FLIST *fl; 202 fl=(FLIST *)fltop; \ FindFLISTtByNS: \ 00000000 ........ LDR R2,??DataTable4 ;; fltop \ 00000004 010000EA B ??FindFLISTtByNS_0 203 while(fl) 204 { 205 if (fl->is_folder==si) 206 { 207 if (!(*i)) return (fl); 208 (*i)--; \ ??FindFLISTtByNS_1: \ 00000008 013043E2 SUB R3,R3,#+1 \ 0000000C 003080E5 STR R3,[R0, #+0] 209 } 210 fl=fl->next; \ ??FindFLISTtByNS_0: \ 00000010 002092E5 LDR R2,[R2, #+0] \ 00000014 000052E3 CMP R2,#+0 \ 00000018 0700000A BEQ ??FindFLISTtByNS_2 \ 0000001C 0C3092E5 LDR R3,[R2, #+12] \ 00000020 010053E1 CMP R3,R1 \ 00000024 F9FFFF1A BNE ??FindFLISTtByNS_0 \ 00000028 003090E5 LDR R3,[R0, #+0] \ 0000002C 000053E3 CMP R3,#+0 \ 00000030 F4FFFF1A BNE ??FindFLISTtByNS_1 \ 00000034 0200A0E1 MOV R0,R2 \ 00000038 1EFF2FE1 BX LR 211 } 212 return fl; \ ??FindFLISTtByNS_2: \ 0000003C 0000A0E3 MOV R0,#+0 \ 00000040 1EFF2FE1 BX LR ;; return 213 } 214 \ In segment CODE, align 4, keep-with-next 215 FLIST *FindFLISTtByN(int n) 216 { \ FindFLISTtByN: \ 00000000 01402DE9 PUSH {R0,LR} 217 FLIST *fl; 218 fl=FindFLISTtByNS(&n,IS_FOLDER); if ((!n)&&(fl)) return(fl); \ 00000004 0110A0E3 MOV R1,#+1 \ 00000008 0D00A0E1 MOV R0,SP \ 0000000C ........ BL FindFLISTtByNS \ 00000010 00109DE5 LDR R1,[SP, #+0] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0100001A BNE ??FindFLISTtByN_0 \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0280BD18 POPNE {R1,PC} 219 fl=FindFLISTtByNS(&n,IS_FILE); if ((!n)&&(fl)) return(fl); \ ??FindFLISTtByN_0: \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 0D00A0E1 MOV R0,SP \ 0000002C ........ BL FindFLISTtByNS \ 00000030 0280BDE8 POP {R1,PC} 220 return fl; 221 } 222 \ In segment DATA_C, align 1, align-sorted 223 const char perc_t[]="%t"; \ perc_t: \ 00000000 257400 DC8 "%t" 224 //extern void LoadMNU(char *path); 225 //int type_f=0; \ In segment CODE, align 4, keep-with-next 226 void SavePath(void *ed_gui, FLIST *fl) 227 { \ SavePath: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 228 // if(type_f==0) 229 // { 230 EDITCONTROL ec; 231 EDIT_ExtractFocusedControl(ed_gui,&ec); \ 00000010 0D10A0E1 MOV R1,SP \ 00000014 C60100EF SWI +454 232 WSHDR *ws=AllocWS(256); \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 250100EF SWI +293 233 str_2ws(ws,fl->fullname,256); \ 00000020 041095E5 LDR R1,[R5, #+4] \ 00000024 0060A0E1 MOV R6,R0 \ 00000028 402FA0E3 MOV R2,#+256 \ 0000002C 6C0100EF SWI +364 234 EDIT_SetTextToFocused(ed_gui,ws); \ 00000030 0610A0E1 MOV R1,R6 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 810100EF SWI +385 235 FreeWS(ws); \ 0000003C 0600A0E1 MOV R0,R6 \ 00000040 290100EF SWI +297 236 // } 237 //else 238 //LoadMNU(fl->fullname); 239 } \ 00000044 2CD08DE2 ADD SP,SP,#+44 \ 00000048 7080BDE8 POP {R4-R6,PC} ;; return 240 241 char header[]; \ In segment CODE, align 4, keep-with-next 242 int filelist_menu_onkey(void *data, GUI_MSG *msg) 243 { \ filelist_menu_onkey: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0160A0E1 MOV R6,R1 244 FVIEW *fview=MenuGetUserPointer(data); \ 0000000C E00100EF SWI +480 \ 00000010 0070A0E1 MOV R7,R0 245 FLIST *fl; 246 int i; 247 i=GetCurMenuItem(data); \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 8F0100EF SWI +399 248 fl=FindFLISTtByN(i); \ 0000001C ........ BL FindFLISTtByN 249 250 if (msg->keys==0x3D) \ 00000020 ........ LDR R1,??DataTable5 ;; back \ 00000024 0050A0E1 MOV R5,R0 \ 00000028 F200D6E1 LDRSH R0,[R6, #+2] \ 0000002C 3D0050E3 CMP R0,#+61 \ 00000030 2400001A BNE ??filelist_menu_onkey_0 251 { 252 if (fl) \ 00000034 000055E3 CMP R5,#+0 \ 00000038 2000000A BEQ ??filelist_menu_onkey_1 253 { 254 if (fl->is_folder==IS_FOLDER) \ 0000003C 0C0095E5 LDR R0,[R5, #+12] \ 00000040 010050E3 CMP R0,#+1 \ 00000044 2700001A BNE ??filelist_menu_onkey_2 255 { 256 int len; 257 if (strcmp(fl->fullname,"ROOT")) \ 00000048 040095E5 LDR R0,[R5, #+4] \ 0000004C 041081E2 ADD R1,R1,#+4 \ 00000050 190000EF SWI +25 \ 00000054 000050E3 CMP R0,#+0 \ 00000058 0F00000A BEQ ??filelist_menu_onkey_3 258 { 259 strncpy(header,fl->fullname,127); \ 0000005C A0609FE5 LDR R6,??filelist_menu_onkey_4 ;; filelist_HDR \ 00000060 041095E5 LDR R1,[R5, #+4] \ 00000064 7F20A0E3 MOV R2,#+127 \ 00000068 140086E2 ADD R0,R6,#+20 \ 0000006C 160100EF SWI +278 260 len=strlen(fl->fullname); \ 00000070 040095E5 LDR R0,[R5, #+4] \ 00000074 1B0000EF SWI +27 261 header[len>127?127:len]=0; \ 00000078 800050E3 CMP R0,#+128 \ 0000007C 7F00A0A3 MOVGE R0,#+127 \ 00000080 060080E0 ADD R0,R0,R6 \ 00000084 0010A0E3 MOV R1,#+0 \ 00000088 1410C0E5 STRB R1,[R0, #+20] 262 FindFiles(fl->fullname,1); \ 0000008C 040095E5 LDR R0,[R5, #+4] \ 00000090 0110A0E3 MOV R1,#+1 \ 00000094 ........ BL FindFiles \ 00000098 000000EA B ??filelist_menu_onkey_5 263 } 264 else 265 { 266 void CreateRootMenu(); 267 CreateRootMenu(); \ ??filelist_menu_onkey_3: \ 0000009C ........ BL CreateRootMenu 268 } 269 Menu_SetItemCountDyn(data,GetFListN()); \ ??filelist_menu_onkey_5: \ 000000A0 ........ BL GetFListN \ 000000A4 0010A0E1 MOV R1,R0 \ 000000A8 0400A0E1 MOV R0,R4 \ 000000AC E60100EF SWI +486 270 SetCursorToMenuItem(data, 0); \ 000000B0 0010A0E3 MOV R1,#+0 \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 C40100EF SWI +452 271 RefreshGUI(); \ 000000BC 960100EF SWI +406 272 } 273 else 274 { 275 SavePath(fview->gui,fl); 276 return (1); 277 } 278 } 279 // GeneralFunc_F1(1); 280 return(-1); \ ??filelist_menu_onkey_1: \ 000000C0 0000E0E3 MVN R0,#+0 \ 000000C4 F080BDE8 POP {R4-R7,PC} 281 } 282 if (msg->keys==0x18) \ ??filelist_menu_onkey_0: \ 000000C8 180050E3 CMP R0,#+24 \ 000000CC 0A00001A BNE ??filelist_menu_onkey_6 283 { 284 if (fl) \ 000000D0 000055E3 CMP R5,#+0 \ 000000D4 F9FFFF0A BEQ ??filelist_menu_onkey_1 285 { 286 if (strcmp(fl->name,back)) \ 000000D8 080095E5 LDR R0,[R5, #+8] \ 000000DC 190000EF SWI +25 \ 000000E0 000050E3 CMP R0,#+0 \ 000000E4 F5FFFF0A BEQ ??filelist_menu_onkey_1 287 { 288 SavePath(fview->gui,fl); 289 return (1); 290 } 291 } 292 return (-1); 293 } \ ??filelist_menu_onkey_2: \ 000000E8 000097E5 LDR R0,[R7, #+0] \ 000000EC 0510A0E1 MOV R1,R5 \ 000000F0 ........ BL SavePath \ 000000F4 0100A0E3 MOV R0,#+1 \ 000000F8 F080BDE8 POP {R4-R7,PC} 294 return (0); \ ??filelist_menu_onkey_6: \ 000000FC 0000A0E3 MOV R0,#+0 \ 00000100 F080BDE8 POP {R4-R7,PC} ;; return \ ??filelist_menu_onkey_4: \ 00000104 ........ DC32 filelist_HDR 295 } 296 \ In segment CODE, align 4, keep-with-next 297 void filelist_menu_ghook(void *data, int cmd) 298 { \ filelist_menu_ghook: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0140A0E1 MOV R4,R1 299 FVIEW *fview=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0050A0E1 MOV R5,R0 300 if (cmd==3) \ 00000010 030054E3 CMP R4,#+3 \ 00000014 3080BD18 POPNE {R4,R5,PC} 301 { 302 Free_FLIST(); \ 00000018 ........ BL Free_FLIST 303 mfree(fview); \ 0000001C 0500A0E1 MOV R0,R5 \ 00000020 150000EF SWI +21 304 } 305 } \ 00000024 3080BDE8 POP {R4,R5,PC} ;; return 306 \ In segment CODE, align 4, keep-with-next 307 void filelist_menu_iconhndl(void *data, int curitem, void *user_pointer) 308 { \ filelist_menu_iconhndl: \ 00000000 F0432DE9 PUSH {R4-R9,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 309 FLIST *fl; 310 WSHDR *ws; 311 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 312 int len; 313 fl=FindFLISTtByN(curitem); \ 00000014 0500A0E1 MOV R0,R5 \ 00000018 ........ BL FindFLISTtByN \ 0000001C 0070B0E1 MOVS R7,R0 314 if (fl) \ 00000020 1900000A BEQ ??filelist_menu_iconhndl_0 315 { 316 len=strlen(fl->name); \ 00000024 080097E5 LDR R0,[R7, #+8] \ 00000028 1B0000EF SWI +27 \ 0000002C 0080A0E1 MOV R8,R0 317 ws=AllocMenuWS(data,len+4); \ 00000030 041088E2 ADD R1,R8,#+4 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 980100EF SWI +408 318 319 if (fl->is_folder) \ 0000003C 081097E5 LDR R1,[R7, #+8] \ 00000040 0090A0E1 MOV R9,R0 \ 00000044 0C0097E5 LDR R0,[R7, #+12] \ 00000048 0820A0E1 MOV R2,R8 \ 0000004C 000050E3 CMP R0,#+0 \ 00000050 0900A0E1 MOV R0,R9 \ 00000054 0A00000A BEQ ??filelist_menu_iconhndl_1 320 { 321 str_2ws(ws,fl->name,len); \ 00000058 6C0100EF SWI +364 322 wsInsertChar(ws,0x0002,1); \ 0000005C 0120A0E3 MOV R2,#+1 \ 00000060 0210A0E3 MOV R1,#+2 \ 00000064 0900A0E1 MOV R0,R9 \ 00000068 1D0000EF SWI +29 323 wsInsertChar(ws,0xE008,1); \ 0000006C 0120A0E3 MOV R2,#+1 \ 00000070 0810A0E3 MOV R1,#+8 \ 00000074 E01C81E3 ORR R1,R1,#0xE000 \ 00000078 0900A0E1 MOV R0,R9 \ 0000007C 1D0000EF SWI +29 \ 00000080 070000EA B ??filelist_menu_iconhndl_2 324 } 325 else 326 { 327 str_2ws(ws,fl->name,len); \ ??filelist_menu_iconhndl_1: \ 00000084 6C0100EF SWI +364 \ 00000088 050000EA B ??filelist_menu_iconhndl_2 328 } 329 } 330 else 331 { 332 ws=AllocMenuWS(data,10); \ ??filelist_menu_iconhndl_0: \ 0000008C 0A10A0E3 MOV R1,#+10 \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 980100EF SWI +408 333 wsprintf(ws, "Îøèáêà"); \ 00000098 1C109FE5 LDR R1,??filelist_menu_iconhndl_3 ;; `?` \ 0000009C 0090A0E1 MOV R9,R0 \ 000000A0 240100EF SWI +292 334 } 335 SetMenuItemText(data, item, ws, curitem); \ ??filelist_menu_iconhndl_2: \ 000000A4 0530A0E1 MOV R3,R5 \ 000000A8 0920A0E1 MOV R2,R9 \ 000000AC 0610A0E1 MOV R1,R6 \ 000000B0 0400A0E1 MOV R0,R4 \ 000000B4 9A0100EF SWI +410 336 } \ 000000B8 F083BDE8 POP {R4-R9,PC} ;; return \ ??filelist_menu_iconhndl_3: \ 000000BC ........ DC32 `?` 337 \ In segment DATA_I, align 4, align-sorted 338 int fmenusoftkeys[]={0,1,2}; \ fmenusoftkeys: \ 00000000 DS8 12 \ 0000000C REQUIRE `?` \ In segment DATA_I, align 4, align-sorted 339 SOFTKEY_DESC fmenu_sk[]= \ fmenu_sk: \ 00000000 DS8 24 \ 00000018 REQUIRE `?` 340 { 341 {0x0018,0x0000,(int)"Select"}, 342 {0x0001,0x0000,(int)"Close"}, 343 {0x003D,0x0000,(int)"+"} 344 }; 345 \ In segment DATA_I, align 4, align-sorted 346 SOFTKEYSTAB fmenu_skt= \ fmenu_skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 347 { 348 fmenu_sk,0 349 }; \ In segment DATA_I, align 4, align-sorted 350 char header[128]; 351 HEADER_DESC filelist_HDR={0,0,0,0,NULL,(int)header,LGP_NULL}; \ filelist_HDR: \ 00000000 DS8 20 \ 00000014 REQUIRE `?` \ header: \ 00000014 DS8 128 \ 00000094 REQUIRE `?` 352 353 354 MENU_DESC filelist_STRUCT= \ filelist_STRUCT: \ 00000094 DS8 44 \ 000000C0 REQUIRE `?` 355 { 356 8,filelist_menu_onkey,filelist_menu_ghook,NULL, 357 fmenusoftkeys, 358 &fmenu_skt, 359 0x10, 360 filelist_menu_iconhndl, 361 NULL, //Items 362 NULL, //Procs 363 0 //n 364 }; 365 \ In segment CODE, align 4, keep-with-next 366 void CreateRootMenu() 367 { \ CreateRootMenu: \ 00000000 00402DE9 PUSH {LR} 368 Free_FLIST(); \ 00000004 ........ BL Free_FLIST 369 AddToFList("0:\\","0:\\",IS_FOLDER); \ 00000008 120F8FE2 ADR R0,??CreateRootMenu_0 ;; "0:\\" \ 0000000C 0120A0E3 MOV R2,#+1 \ 00000010 0010A0E1 MOV R1,R0 \ 00000014 ........ BL AddToFList 370 AddToFList("1:\\","1:\\",IS_FOLDER); \ 00000018 0F0F8FE2 ADR R0,??CreateRootMenu_0+0x4 ;; "1:\\" \ 0000001C 0120A0E3 MOV R2,#+1 \ 00000020 0010A0E1 MOV R1,R0 \ 00000024 ........ BL AddToFList 371 AddToFList("2:\\","2:\\",IS_FOLDER); \ 00000028 0C0F8FE2 ADR R0,??CreateRootMenu_0+0x8 ;; "2:\\" \ 0000002C 0120A0E3 MOV R2,#+1 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 ........ BL AddToFList 372 AddToFList("4:\\","4:\\",IS_FOLDER); \ 00000038 090F8FE2 ADR R0,??CreateRootMenu_0+0xC ;; "4:\\" \ 0000003C 0120A0E3 MOV R2,#+1 \ 00000040 0010A0E1 MOV R1,R0 \ 00000044 ........ BL AddToFList 373 strcpy(header,"Root"); \ 00000048 18109FE5 LDR R1,??CreateRootMenu_0+0x10 ;; `?` \ 0000004C 18009FE5 LDR R0,??CreateRootMenu_0+0x14 ;; filelist_HDR + 20 \ 00000050 1A0000EF SWI +26 374 } \ 00000054 0080BDE8 POP {PC} ;; return \ ??CreateRootMenu_0: \ 00000058 303A5C00 DC8 "0:\\" \ 0000005C 313A5C00 DC8 "1:\\" \ 00000060 323A5C00 DC8 "2:\\" \ 00000064 343A5C00 DC8 "4:\\" \ 00000068 ........ DC32 `?` \ 0000006C ........ DC32 filelist_HDR + 20 375 \ In segment CODE, align 4, keep-with-next 376 void open_fm(void *ed_gui,int type) 377 { \ open_fm: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 ACD04DE2 SUB SP,SP,#+172 \ 00000008 0070A0E1 MOV R7,R0 \ 0000000C 0180A0E1 MOV R8,R1 378 //type_f=0; 379 EDITCONTROL ec; 380 FVIEW *fview; 381 char path[128]; 382 char *s, *rev=0; \ 00000010 0050A0E3 MOV R5,#+0 \ 00000014 0060A0E3 MOV R6,#+0 383 int c, len; 384 385 fview=malloc(sizeof(FVIEW)); \ 00000018 0800A0E3 MOV R0,#+8 \ 0000001C 140000EF SWI +20 \ 00000020 0040A0E1 MOV R4,R0 386 fview->gui=ed_gui; \ 00000024 007084E5 STR R7,[R4, #+0] 387 fview->type=type; \ 00000028 048084E5 STR R8,[R4, #+4] 388 EDIT_ExtractFocusedControl(ed_gui,&ec); \ 0000002C 80108DE2 ADD R1,SP,#+128 \ 00000030 0700A0E1 MOV R0,R7 \ 00000034 C60100EF SWI +454 389 ws_2str(ec.pWS,path,127); \ 00000038 A8009DE5 LDR R0,[SP, #+168] \ 0000003C 7F20A0E3 MOV R2,#+127 \ 00000040 0D10A0E1 MOV R1,SP \ 00000044 A30000EF SWI +163 390 s=path; \ 00000048 0D00A0E1 MOV R0,SP \ 0000004C 040000EA B ??open_fm_0 391 while((c=*s++)) 392 { 393 if (c=='\\' && *s!='\0') rev=s; \ ??open_fm_1: \ 00000050 5C0051E3 CMP R1,#+92 \ 00000054 0200001A BNE ??open_fm_0 \ 00000058 0010D0E5 LDRB R1,[R0, #+0] \ 0000005C 000051E3 CMP R1,#+0 \ 00000060 0060A011 MOVNE R6,R0 394 } \ ??open_fm_0: \ 00000064 ........ LDRB R1,[R0], #+1 \ 00000068 000051E3 CMP R1,#+0 \ 0000006C F7FFFF1A BNE ??open_fm_1 395 if (rev==0) \ 00000070 ........ LDR R7,??DataTable7 ;; filelist_HDR \ 00000074 000056E3 CMP R6,#+0 \ 00000078 0100001A BNE ??open_fm_2 396 CreateRootMenu(); \ 0000007C ........ BL CreateRootMenu \ 00000080 0A0000EA B ??open_fm_3 397 else 398 { 399 *rev=0; \ ??open_fm_2: \ 00000084 0050C6E5 STRB R5,[R6, #+0] 400 strncpy(header,path,sizeof(header)-1); \ 00000088 7F20A0E3 MOV R2,#+127 \ 0000008C 0D10A0E1 MOV R1,SP \ 00000090 140087E2 ADD R0,R7,#+20 \ 00000094 160100EF SWI +278 401 len=strlen(path); \ 00000098 0D00A0E1 MOV R0,SP \ 0000009C 1B0000EF SWI +27 402 header[len>sizeof(header)-1?sizeof(header)-1:len]=0; \ 000000A0 800050E3 CMP R0,#+128 \ 000000A4 7F00A023 MOVCS R0,#+127 \ 000000A8 070080E0 ADD R0,R0,R7 \ 000000AC 1450C0E5 STRB R5,[R0, #+20] 403 } 404 patch_header2(&filelist_HDR); \ ??open_fm_3: \ 000000B0 B050C7E1 STRH R5,[R7, #+0] \ 000000B4 1800A0E3 MOV R0,#+24 \ 000000B8 B200C7E1 STRH R0,[R7, #+2] \ 000000BC 888100EF SWI +33160 \ 000000C0 010040E2 SUB R0,R0,#+1 \ 000000C4 B400C7E1 STRH R0,[R7, #+4] \ 000000C8 8A8100EF SWI +33162 \ 000000CC 180080E2 ADD R0,R0,#+24 \ 000000D0 B600C7E1 STRH R0,[R7, #+6] 405 CreateMenu(0,0,&filelist_STRUCT,&filelist_HDR,0,GetFListN(),fview,0); \ 000000D4 ........ BL GetFListN \ 000000D8 0010A0E3 MOV R1,#+0 \ 000000DC 02002DE9 PUSH {R1} \ 000000E0 10002DE9 PUSH {R4} \ 000000E4 01002DE9 PUSH {R0} \ 000000E8 0730A0E1 MOV R3,R7 \ 000000EC 942087E2 ADD R2,R7,#+148 \ 000000F0 0100A0E1 MOV R0,R1 \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 520100EF SWI +338 406 } \ 000000FC BCD08DE2 ADD SP,SP,#+188 \ 00000100 F081BDE8 POP {R4-R8,PC} ;; return 407 408 \ In segment CODE, align 4, keep-with-next 409 void open_file() 410 { \ open_file: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 411 // type_f=1; 412 FVIEW *fview; 413 char *s; 414 WSHDR *ws=AllocWS(256); 415 fview=malloc(sizeof(FVIEW)); 416 if (ws->wsbody[0]==0) \ 00000004 ........ LDR R5,??DataTable7 ;; filelist_HDR \ 00000008 400FA0E3 MOV R0,#+256 \ 0000000C 0070A0E3 MOV R7,#+0 \ 00000010 250100EF SWI +293 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 0800A0E3 MOV R0,#+8 \ 0000001C 140000EF SWI +20 \ 00000020 0040A0E1 MOV R4,R0 \ 00000024 000096E5 LDR R0,[R6, #+0] \ 00000028 B000D0E1 LDRH R0,[R0, #+0] \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 0100001A BNE ??open_file_0 417 { 418 CreateRootMenu(); \ 00000034 ........ BL CreateRootMenu \ 00000038 110000EA B ??open_file_1 419 } 420 else 421 { 422 ws_2str(ws,header,127); \ ??open_file_0: \ 0000003C 7F20A0E3 MOV R2,#+127 \ 00000040 141085E2 ADD R1,R5,#+20 \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 A30000EF SWI +163 423 s=strrchr(header, '\\'); \ 0000004C 5C10A0E3 MOV R1,#+92 \ 00000050 140085E2 ADD R0,R5,#+20 \ 00000054 170100EF SWI +279 424 if (s) *(s+1)=0; \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0170C015 STRBNE R7,[R0, #+1] 425 int len=strlen(header); \ 00000060 140085E2 ADD R0,R5,#+20 \ 00000064 1B0000EF SWI +27 426 header[len>127?127:len]=0; \ 00000068 800050E3 CMP R0,#+128 \ 0000006C 7F00A0A3 MOVGE R0,#+127 \ 00000070 050080E0 ADD R0,R0,R5 \ 00000074 1470C0E5 STRB R7,[R0, #+20] 427 FindFiles(header,1); \ 00000078 0110A0E3 MOV R1,#+1 \ 0000007C 140085E2 ADD R0,R5,#+20 \ 00000080 ........ BL FindFiles 428 } 429 patch_header2(&filelist_HDR); \ ??open_file_1: \ 00000084 B070C5E1 STRH R7,[R5, #+0] \ 00000088 1800A0E3 MOV R0,#+24 \ 0000008C B200C5E1 STRH R0,[R5, #+2] \ 00000090 888100EF SWI +33160 \ 00000094 010040E2 SUB R0,R0,#+1 \ 00000098 B400C5E1 STRH R0,[R5, #+4] \ 0000009C 8A8100EF SWI +33162 \ 000000A0 180080E2 ADD R0,R0,#+24 \ 000000A4 B600C5E1 STRH R0,[R5, #+6] 430 CreateMenu(0,0,&filelist_STRUCT,&filelist_HDR,0,GetFListN(),fview,0); \ 000000A8 ........ BL GetFListN \ 000000AC 0010A0E3 MOV R1,#+0 \ 000000B0 02002DE9 PUSH {R1} \ 000000B4 10002DE9 PUSH {R4} \ 000000B8 01002DE9 PUSH {R0} \ 000000BC 0530A0E1 MOV R3,R5 \ 000000C0 942085E2 ADD R2,R5,#+148 \ 000000C4 0100A0E1 MOV R0,R1 \ 000000C8 01002DE9 PUSH {R0} \ 000000CC 520100EF SWI +338 431 } \ 000000D0 FF80BDE8 POP {R0-R7,PC} ;; return \ In segment CODE, align 4, keep-with-next \ ??DataTable4: \ 00000000 ........ DC32 fltop \ In segment CODE, align 4, keep-with-next \ ??DataTable5: \ 00000000 ........ DC32 back \ In segment CODE, align 4, keep-with-next \ ??DataTable7: \ 00000000 ........ DC32 filelist_HDR \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 ........ DC32 `?` \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 fmenu_sk, 0 \ 0000 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, header, 2147483647 \ ....FFFFFF7F \ `?`: \ 00000014 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000024 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000034 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000044 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000054 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000064 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000074 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000084 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000094 08000000.... DC32 8, filelist_menu_onkey, filelist_menu_ghook, 0H, fmenusoftkeys \ ............ \ 00000000.... \ .... \ 000000A8 ........1000 DC32 fmenu_skt, 16, filelist_menu_iconhndl, 0H, 0H, 0 \ 0000........ \ 000000000000 \ 000000000000 \ 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 436C6F736500 DC8 "Close" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 2B00 DC8 "+" \ In segment DATA_C, align 1, align-sorted \ 00000000 2A00 DC8 "*" \ In segment DATA_C, align 1, align-sorted \ 00000000 5C00 DC8 "\\" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CEF8E8E1EAE0 DC8 "\316\370\350\341\352\340" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 303A5C00 DC8 "0:\\" \ In segment DATA_C, align 4, align-sorted \ 00000000 313A5C00 DC8 "1:\\" \ In segment DATA_C, align 4, align-sorted \ 00000000 323A5C00 DC8 "2:\\" \ In segment DATA_C, align 4, align-sorted \ 00000000 343A5C00 DC8 "4:\\" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 526F6F7400 DC8 "Root" \ 00000005 000000 DC8 0, 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ AddToFList 20 CreateRootMenu 4 FindFLISTtByN 8 FindFLISTtByNS 0 FindFiles 1236 Free_FLIST 16 GetFListN 0 GetFoldersLevel 0 SavePath 60 filelist_menu_ghook 12 filelist_menu_iconhndl 28 filelist_menu_onkey 20 open_file 36 open_fm 212 strcmp_nocase 0 Segment part sizes: Function/Label Bytes -------------- ----- fltop 4 Free_FLIST 84 back 12 GetFListN 32 GetFoldersLevel 52 ??strcmp_nocase_0 48 AddToFList 168 FindFiles 372 FindFLISTtByNS 68 FindFLISTtByN 52 perc_t 3 SavePath 76 filelist_menu_onkey 264 filelist_menu_ghook 40 filelist_menu_iconhndl 192 fmenusoftkeys 12 fmenu_sk 24 fmenu_skt 8 filelist_HDR 192 CreateRootMenu 112 open_fm 260 open_file 212 ??DataTable4 4 ??DataTable5 4 ??DataTable7 4 ? 12 ? 24 ? 8 ? 192 ? 8 ? 8 ? 2 ? 2 ? 2 ? 8 ? 4 ? 4 ? 4 ? 4 ? 8 Others 84 2 104 bytes in segment CODE 69 bytes in segment DATA_C 236 bytes in segment DATA_I 236 bytes in segment DATA_ID 4 bytes in segment DATA_Z 24 bytes in segment INITTAB 2 044 bytes of CODE memory (+ 84 bytes shared) 305 bytes of CONST memory 240 bytes of DATA memory Errors: none Warnings: none