############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 10/Feb/2008 21:38:03 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT\TextReader\main.c # # Command line = D:\Pasha\elf\_MY_PROJECT\TextReader\main.c -lC # # D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Li # # st\ -o D:\Pasha\elf\_MY_PROJECT\TextReader\Release_S # # GOLD\Obj\ -s9 --cpu_mode arm --endian little --cpu # # ARM926EJ-S --stack_align 4 --interwork -e --fpu # # None --dlib_config "D:\Pasha\ARM_Embedded_Workbench\ # # Embedded Workbench 4.0 Evaluation\ARM\LIB\dl5tpainl8 # # n.h" -I "D:\Pasha\ARM_Embedded_Workbench\Embedded # # Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Li # # st\main.lst # # Object file = D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Ob # # j\main.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT\TextReader\main.c 1 #include "..\inc\swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "conf_loader.h" 4 #include "main.h" 5 #include "strings.h" 6 #include "fileman.h" 7 #include "bookmarks.h" 8 //Исходники кривые, над ними еще работать и работать...а впадлу... 9 //[*]Если нажать на сам эльф то пикоффа не будет и откроется меню "Последние..." :) 10 //[+]Если размер файла нулевой то тоже откроется меню "Последние...". Если же эдитор запускается первый раз,то откроется меню. 11 int maincsm_id; \ In segment DATA_Z, align 4, align-sorted 12 int maingui_id; \ maingui_id: \ 00000000 DS8 4 \ In segment DATA_C, align 4, align-sorted 13 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 14 15 unsigned short maincsm_name_body[140]; 16 17 typedef struct 18 { 19 CSM_RAM csm; 20 int gui_id; 21 }MAIN_CSM; 22 23 typedef struct 24 { 25 GUI gui; 26 WSHDR *ws1; 27 WSHDR *ws2; 28 int i1; 29 }MAIN_GUI; 30 \ In segment DATA_Z, align 4, align-sorted 31 int my_csm_id=0; \ my_csm_id: \ 00000000 DS8 4 32 33 //----------------------------------// 34 35 extern const int screen_mode; 36 extern const int size_font; 37 extern const int pen_font; 38 extern const int brush_font; 39 extern void InitConfig(); 40 extern int codepage;//Кодировка 41 extern const int illum_mode;//постоянна подсветка али нет... 42 extern const int backup; 43 //extern const int codepg;//кодировка по умолчанию 44 //extern const int menu_codepg; 45 extern const int autosave; 46 extern const int scin_mode;//Юзать цвет,размер шрифта из скина... 47 extern const char IMG_PATH[128]; 48 49 //----------------------------------// 50 51 extern int last_id;//ид для меню посление... 52 extern void LoadINI(); 53 extern void SaveINI(); 54 55 //----------------------------------// 56 57 EDITCONTROL ec; 58 WSHDR *ws_edit = NULL; 59 60 int id_ed;//id drawtext 61 int id_ed2;//id ShowCodePage 62 extern int MenuCode_id; 63 64 int codepage; 65 int curpos=1;//Позиция курсора 66 int total_symb=0;//общее количество символов 67 int file_size; 68 int f; 69 GBSTMR tmr; 70 71 char *file_name;//Показываемое имя файла в заголовке окна,используется для истории и еще чего та =) 72 char *file; 73 char info[1024];//инфа по зеленой кнопке... \ In segment DATA_C, align 1, align-sorted 74 const char per_d[]="%d"; \ per_d: \ 00000000 256400 DC8 "%d" 75 const char per_t[]="%t"; 76 const char per_s[]="%s"; 77 const char empty_str[]=""; 78 char exe_name[128];//сохраняем путь эльфа для запуска второй копии из меню "последние..." по зеленой кнопке 79 80 //----------------------------------// 81 82 #pragma inline 83 void patch_header(const HEADER_DESC* head) 84 { 85 ((HEADER_DESC*)head)->rc.x=0; 86 ((HEADER_DESC*)head)->rc.y=YDISP; 87 ((HEADER_DESC*)head)->rc.x2=ScreenW()-1; 88 ((HEADER_DESC*)head)->rc.y2=HeaderH()+YDISP-1; 89 } 90 91 #pragma inline 92 void patch_input(const INPUTDIA_DESC* inp) 93 { 94 ((INPUTDIA_DESC*)inp)->rc.x=0; 95 ((INPUTDIA_DESC*)inp)->rc.y=HeaderH()+1+YDISP; 96 ((INPUTDIA_DESC*)inp)->rc.x2=ScreenW()-1; 97 ((INPUTDIA_DESC*)inp)->rc.y2=ScreenH()-SoftkeyH()-1; 98 } 99 100 #pragma inline 101 void patch_header_n(HEADER_DESC* head) 102 { 103 head->rc.x=0; 104 head->rc.y=0; 105 head->rc.x2=0; 106 head->rc.y2=0; 107 } 108 109 #pragma inline 110 void patch_input_n(INPUTDIA_DESC* inp) 111 { 112 inp->rc.x=0; 113 inp->rc.y=0; 114 inp->rc.x2=ScreenW()-1; 115 inp->rc.y2=ScreenH()-SoftkeyH()-1; 116 117 } 118 119 #pragma inline 120 void patch_rect(RECT*rc,int x,int y, int x2, int y2) 121 { 122 rc->x=x; 123 rc->y=y; 124 rc->x2=x2; 125 rc->y2=y2; 126 } 127 \ In segment DATA_Z, align 4, align-sorted 128 CSM_DESC icsmd; \ icsmd: \ 00000000 DS8 24 129 130 //------------------------------------// 131 \ In segment CODE, align 4, keep-with-next 132 void on_utf8ec(USR_MENU_ITEM *item) 133 { \ on_utf8ec: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 134 if (item->type==0) \ 00000008 0000D4E5 LDRB R0,[R4, #+0] \ 0000000C 000050E3 CMP R0,#+0 135 { 136 switch(item->cur_item) \ 00000010 B800D401 LDRHEQ R0,[R4, #+8] \ 00000014 00005003 CMPEQ R0,#+0 \ 00000018 0300001A BNE ??on_utf8ec_0 137 { 138 case 0: wsprintf(item->ws,per_t,LG_SAVE); break; \ 0000001C ........ LDR R1,??DataTable12 ;; per_t \ 00000020 0C0094E5 LDR R0,[R4, #+12] \ 00000024 382081E2 ADD R2,R1,#+56 \ 00000028 240100EF SWI +292 139 } 140 } 141 if (item->type==1) \ ??on_utf8ec_0: \ 0000002C 0000D4E5 LDRB R0,[R4, #+0] \ 00000030 010050E3 CMP R0,#+1 142 { 143 switch(item->cur_item) \ 00000034 B800D401 LDRHEQ R0,[R4, #+8] \ 00000038 00005003 CMPEQ R0,#+0 \ 0000003C 1080BD18 POPNE {R4,PC} 144 { 145 case 0: SaveFile(file); break; \ 00000040 08009FE5 LDR R0,??on_utf8ec_1 ;; pos_desc + 312 \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 ........ BL SaveFile 146 } 147 } 148 } \ 0000004C 1080BDE8 POP {R4,PC} ;; return \ ??on_utf8ec_1: \ 00000050 ........ DC32 pos_desc + 312 149 150 //-------------------------------Подсветка...---------------------------------// 151 \ In segment CODE, align 4, keep-with-next 152 void illum() 153 { 154 short light; 155 char *ram=(char*)0xA8000000; 156 long a; 157 unsigned char *l=(unsigned char*)0xA0FD435C; //Начальный указатель BFL(смещение) 158 a=l[2]*0x10000+l[1]*0x100+l[0]; 159 light=ram[a]; 160 SetIllumination(0,1,light,256); \ illum: \ 00000000 4C009FE5 LDR R0,??illum_0 ;; 0xffffffffa0fd435e \ 00000004 4C109FE5 LDR R1,??illum_0+0x4 ;; 0xffffffffa0fd435d \ 00000008 00402DE9 PUSH {LR} \ 0000000C 0000D0E5 LDRB R0,[R0, #+0] \ 00000010 0010D1E5 LDRB R1,[R1, #+0] \ 00000014 403FA0E3 MOV R3,#+256 \ 00000018 0114A0E1 LSL R1,R1,#+8 \ 0000001C 000881E0 ADD R0,R1,R0, LSL #+16 \ 00000020 34109FE5 LDR R1,??illum_0+0x8 ;; 0xffffffffa0fd435c \ 00000024 0010D1E5 LDRB R1,[R1, #+0] \ 00000028 000081E0 ADD R0,R1,R0 \ 0000002C A80480E2 ADD R0,R0,#-1476395008 \ 00000030 0020D0E5 LDRB R2,[R0, #+0] \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 0000A0E3 MOV R0,#+0 \ 0000003C 080000EF SWI +8 161 GBS_StartTimerProc(&tmr,216,illum); \ 00000040 18209FE5 LDR R2,??illum_0+0xC ;; illum \ 00000044 18009FE5 LDR R0,??illum_0+0x10 ;; pos_desc + 324 \ 00000048 D810A0E3 MOV R1,#+216 \ 0000004C 4D0000EF SWI +77 162 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??illum_0: \ 00000054 5E43FDA0 DC32 0xffffffffa0fd435e \ 00000058 5D43FDA0 DC32 0xffffffffa0fd435d \ 0000005C 5C43FDA0 DC32 0xffffffffa0fd435c \ 00000060 ........ DC32 illum \ 00000064 ........ DC32 pos_desc + 324 163 164 //--------------------------------GO TO LINE----------------------------------// 165 166 HEADER_DESC pos_hdr={0,0,131,21,NULL,0,LGP_NULL}; 167 \ In segment CODE, align 4, keep-with-next 168 int pos_onkey(GUI *data, GUI_MSG *msg) 169 { \ pos_onkey: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 38D04DE2 SUB SP,SP,#+56 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 170 WSHDR *ws=AllocWS(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 250100EF SWI +293 171 char num[10]; 172 if (msg->keys==0x0018)//0xFFF \ 00000018 F200D5E1 LDRSH R0,[R5, #+2] \ 0000001C 180050E3 CMP R0,#+24 \ 00000020 1400001A BNE ??pos_onkey_0 173 { 174 EDITCONTROL ec; 175 ExtractEditControl(data,1,&ec); \ 00000024 0C208DE2 ADD R2,SP,#+12 \ 00000028 0110A0E3 MOV R1,#+1 \ 0000002C 0400A0E1 MOV R0,R4 176 ws=ec.pWS; 177 ws_2str(ws,num,9); 178 curpos=atoi(num); \ 00000030 ........ LDR R4,??DataTable16 ;; pos_desc \ 00000034 690100EF SWI +361 \ 00000038 34009DE5 LDR R0,[SP, #+52] \ 0000003C 0920A0E3 MOV R2,#+9 \ 00000040 0D10A0E1 MOV R1,SP \ 00000044 A30000EF SWI +163 \ 00000048 0D00A0E1 MOV R0,SP \ 0000004C ........ _BLF atoi,??atoi??rA \ 00000050 240184E5 STR R0,[R4, #+292] 179 curpos*=20;//пока будем считать что в строке 20 символов...не так важно пока что... \ 00000054 1410A0E3 MOV R1,#+20 \ 00000058 910000E0 MUL R0,R1,R0 180 GeneralFunc_flag1(id_ed2,1); \ 0000005C 0110A0E3 MOV R1,#+1 \ 00000060 240184E5 STR R0,[R4, #+292] \ 00000064 1C0194E5 LDR R0,[R4, #+284] \ 00000068 3D0100EF SWI +317 181 DrawText(file,codepage); \ 0000006C 201194E5 LDR R1,[R4, #+288] \ 00000070 380194E5 LDR R0,[R4, #+312] \ 00000074 ........ BL DrawText 182 } 183 return(0); \ ??pos_onkey_0: \ 00000078 0000A0E3 MOV R0,#+0 \ 0000007C 38D08DE2 ADD SP,SP,#+56 \ 00000080 3080BDE8 POP {R4,R5,PC} ;; return 184 } 185 \ In segment CODE, align 4, keep-with-next 186 void pos_ghook(GUI *gui, int cmd) 187 { \ pos_ghook: \ 00000000 00402DE9 PUSH {LR} 188 static SOFTKEY_DESC sk={0x0018,0x0000,(int)"Go!"}; 189 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??pos_ghook_0 190 { 191 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000000C 2C109FE5 LDR R1,??pos_ghook_1 ;; ??sk \ 00000010 0120A0E3 MOV R2,#+1 \ 00000014 680100EF SWI +360 \ 00000018 0080BDE8 POP {PC} 192 } 193 if(cmd==0xA) \ ??pos_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??pos_ghook_2 194 { 195 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 196 } 197 if (cmd==0x0C) \ ??pos_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 198 { 199 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 200 } 201 if(cmd==0x03){} 202 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??pos_ghook_1: \ 00000040 ........ DC32 ??sk 203 \ In segment CODE, align 4, keep-with-next 204 void pos_locret(void){} \ pos_locret: \ 00000000 1EFF2FE1 BX LR ;; return 205 206 SOFTKEY_DESC menu_sk[]= 207 { 208 {0x0018,0x0000,(int)"Лев"}, 209 {0x0001,0x0000,(int)"Прав"}, 210 {0x003D,0x0000,(int)LGP_DOIT_PIC} 211 }; 212 213 SOFTKEYSTAB menu_skt= 214 { 215 menu_sk,0 216 }; 217 218 INPUTDIA_DESC pos_desc= 219 { 220 1, 221 pos_onkey, 222 pos_ghook, 223 (void *)pos_locret, 224 0, 225 &menu_skt, 226 {0,NULL,NULL,NULL}, 227 FONT_SMALL, 228 100, 229 101, 230 0, 231 0x00000000, 232 0x40000000 233 }; 234 235 \ In segment CODE, align 4, keep-with-next 236 void pos() 237 { \ pos: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 238 char *ss=malloc(64); 239 sprintf(ss,per_s,LG_LINE); 240 pos_hdr.lgp_id = (int)ss; \ 00000004 24519FE5 LDR R5,??pos_0 ;; pos_desc \ 00000008 10D04DE2 SUB SP,SP,#+16 \ 0000000C 4000A0E3 MOV R0,#+64 \ 00000010 140000EF SWI +20 \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 ........ LDR R0,??DataTable17 ;; per_t \ 0000001C 302080E2 ADD R2,R0,#+48 \ 00000020 031080E2 ADD R1,R0,#+3 \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 160000EF SWI +22 \ 0000002C B44085E5 STR R4,[R5, #+180] 241 EDITC_OPTIONS ec_options2; 242 void *ma=malloc_adr(); \ 00000030 148000EF SWI +32788 \ 00000034 0070A0E1 MOV R7,R0 243 void *eq=AllocEQueue(ma, mfree_adr()); \ 00000038 158000EF SWI +32789 \ 0000003C 0010A0E1 MOV R1,R0 \ 00000040 0700A0E1 MOV R0,R7 \ 00000044 630100EF SWI +355 \ 00000048 0060A0E1 MOV R6,R0 244 245 PrepareEditControl(&ec); \ 0000004C E40085E2 ADD R0,R5,#+228 \ 00000050 640100EF SWI +356 246 ConstructEditControl(&ec,ECT_NORMAL_NUM,ECF_APPEND_EOL|ECF_DISABLE_MINUS|ECF_DISABLE_POINT,ec.pWS,9); \ 00000054 0900A0E3 MOV R0,#+9 \ 00000058 01002DE9 PUSH {R0} \ 0000005C 0C3195E5 LDR R3,[R5, #+268] \ 00000060 4020A0E3 MOV R2,#+64 \ 00000064 602A82E3 ORR R2,R2,#0x60000 \ 00000068 0610A0E3 MOV R1,#+6 \ 0000006C E40085E2 ADD R0,R5,#+228 \ 00000070 650100EF SWI +357 247 PrepareEditCOptions(&ec_options2); \ 00000074 04008DE2 ADD R0,SP,#+4 \ 00000078 C80100EF SWI +456 248 SetFontToEditCOptions(&ec_options2,1);//Шрифт \ 0000007C 0110A0E3 MOV R1,#+1 \ 00000080 04008DE2 ADD R0,SP,#+4 \ 00000084 CA0100EF SWI +458 249 CopyOptionsToEditControl(&ec,&ec_options2);//Копируем настройки \ 00000088 04108DE2 ADD R1,SP,#+4 \ 0000008C E40085E2 ADD R0,R5,#+228 \ 00000090 CE0100EF SWI +462 250 AddEditControlToEditQend(eq,&ec,ma); \ 00000094 0720A0E1 MOV R2,R7 \ 00000098 E41085E2 ADD R1,R5,#+228 \ 0000009C 0600A0E1 MOV R0,R6 \ 000000A0 660100EF SWI +358 251 252 patch_header2(&pos_hdr); \ 000000A4 0070A0E3 MOV R7,#+0 \ 000000A8 A87085E5 STR R7,[R5, #+168] \ 000000AC 888100EF SWI +33160 \ 000000B0 010040E2 SUB R0,R0,#+1 \ 000000B4 BC0AC5E1 STRH R0,[R5, #+172] \ 000000B8 8A8100EF SWI +33162 \ 000000BC BE0AC5E1 STRH R0,[R5, #+174] 253 patch_input2(&pos_desc); \ 000000C0 B871C5E1 STRH R7,[R5, #+24] \ 000000C4 8A8100EF SWI +33162 \ 000000C8 010080E2 ADD R0,R0,#+1 \ 000000CC BA01C5E1 STRH R0,[R5, #+26] \ 000000D0 888100EF SWI +33160 \ 000000D4 010040E2 SUB R0,R0,#+1 \ 000000D8 BC01C5E1 STRH R0,[R5, #+28] \ 000000DC 898100EF SWI +33161 \ 000000E0 0070A0E1 MOV R7,R0 \ 000000E4 8B8100EF SWI +33163 \ 000000E8 000047E0 SUB R0,R7,R0 \ 000000EC 010040E2 SUB R0,R0,#+1 \ 000000F0 BE01C5E1 STRH R0,[R5, #+30] 254 255 GeneralFuncF1(1); \ 000000F4 0100A0E3 MOV R0,#+1 \ 000000F8 3B0100EF SWI +315 256 mfree_adr(); \ 000000FC 158000EF SWI +32789 257 mfree(ss); \ 00000100 0400A0E1 MOV R0,R4 \ 00000104 150000EF SWI +21 258 id_ed2=CreateInputTextDialog(&pos_desc,&pos_hdr,eq,1,0);//создаем диалоговое окно \ 00000108 0000A0E3 MOV R0,#+0 \ 0000010C 01002DE9 PUSH {R0} \ 00000110 0130A0E3 MOV R3,#+1 \ 00000114 0620A0E1 MOV R2,R6 \ 00000118 A81085E2 ADD R1,R5,#+168 \ 0000011C 0500A0E1 MOV R0,R5 \ 00000120 670100EF SWI +359 \ 00000124 1C0185E5 STR R0,[R5, #+284] 259 } \ 00000128 18D08DE2 ADD SP,SP,#+24 \ 0000012C F080BDE8 POP {R4-R7,PC} ;; return \ ??pos_0: \ 00000130 ........ DC32 pos_desc 260 261 //--------------------------------DRAW && EDIT TEXT---------------------------// 262 263 char hdr_txt[64]; 264 HEADER_DESC disk_prop_hdr={0,0,NULL,NULL,NULL,(int)hdr_txt,LGP_NULL}; 265 int empty_onkey(GUI *data, GUI_MSG *msg); \ In segment CODE, align 4, keep-with-next 266 void empty_locret(void){}; \ empty_locret: \ 00000000 1EFF2FE1 BX LR ;; return 267 void empty_ghook(GUI *gui, int cmd); 268 269 SOFTKEY_DESC sk[]= 270 { 271 {0x0018,0x0000,(int)"Лев"}, 272 {0x0001,0x0000,(int)"Прав"}, 273 {0x003D,0x0000,(int)LGP_DOIT_PIC} 274 }; 275 276 SOFTKEYSTAB skt= 277 { 278 sk,0 279 }; 280 281 INPUTDIA_DESC edit_desc=//Редактирование 282 { 283 1, 284 empty_onkey, 285 empty_ghook, 286 (void *)empty_locret, 287 0, 288 &skt, 289 {0,0,0,0}, 290 FONT_SMALL, 291 100, 292 101, 293 0, 294 0, 295 0x40000000 296 }; 297 \ In segment CODE, align 4, keep-with-next 298 int empty_onkey(GUI *data, GUI_MSG *msg) 299 { \ empty_onkey: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 300 if (msg->keys==0xFFF) \ 00000004 ........ LDR R5,??DataTable16 ;; pos_desc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0160A0E1 MOV R6,R1 \ 00000010 F200D6E1 LDRSH R0,[R6, #+2] \ 00000014 437FA0E3 MOV R7,#+268 \ 00000018 FF10A0E3 MOV R1,#+255 \ 0000001C F01E81E3 ORR R1,R1,#0xF00 \ 00000020 010050E1 CMP R0,R1 \ 00000024 0700001A BNE ??empty_onkey_0 301 { 302 ExtractEditControl(data,1,&ec); \ 00000028 E42085E2 ADD R2,R5,#+228 \ 0000002C 0110A0E3 MOV R1,#+1 \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 690100EF SWI +361 303 wstrcpy(ws_edit,ec.pWS);//сохраняем измененный текст в ws_edit на случай последующего сохранение в файл :) \ 00000038 051097E7 LDR R1,[R7, +R5] \ 0000003C 140195E5 LDR R0,[R5, #+276] \ 00000040 1F0100EF SWI +287 304 ShowMainMenu(); \ 00000044 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 305 } 306 307 if (msg->gbsmsg->msg==KEY_DOWN) \ ??empty_onkey_0: \ 00000048 040096E5 LDR R0,[R6, #+4] \ 0000004C 871087E2 ADD R1,R7,#+135 \ 00000050 F200D0E1 LDRSH R0,[R0, #+2] \ 00000054 010050E1 CMP R0,R1 \ 00000058 2500001A BNE ??empty_onkey_1 308 { 309 curpos=EDIT_GetCursorPos(data)-1; \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 D30100EF SWI +467 \ 00000064 010040E2 SUB R0,R0,#+1 \ 00000068 240185E5 STR R0,[R5, #+292] 310 switch(msg->gbsmsg->submess) \ 0000006C 040096E5 LDR R0,[R6, #+4] \ 00000070 040090E5 LDR R0,[R0, #+4] \ 00000074 0B0050E2 SUBS R0,R0,#+11 \ 00000078 0800000A BEQ ??empty_onkey_2 \ 0000007C 010050E2 SUBS R0,R0,#+1 \ 00000080 2F00000A BEQ ??empty_onkey_3 \ 00000084 010050E2 SUBS R0,R0,#+1 \ 00000088 3900000A BEQ ??empty_onkey_4 \ 0000008C 010050E2 SUBS R0,R0,#+1 \ 00000090 3E00000A BEQ ??empty_onkey_5 \ 00000094 0C0050E2 SUBS R0,R0,#+12 \ 00000098 3F00000A BEQ ??empty_onkey_6 \ 0000009C 140000EA B ??empty_onkey_1 311 { 312 case GREEN_BUTTON: 313 { 314 // SaveINI(); 315 sprintf(info,"%s%s %s%d b%s %d/%d","Файл:\n",file,"\nРазмер:",file_size,"\nПозиция:",curpos,total_symb); \ ??empty_onkey_2: \ 000000A0 281195E5 LDR R1,[R5, #+296] \ 000000A4 48019FE5 LDR R0,??empty_onkey_7 ;; `?` \ 000000A8 02002DE9 PUSH {R1} \ 000000AC 241195E5 LDR R1,[R5, #+292] \ 000000B0 557FA0E3 MOV R7,#+340 \ 000000B4 02002DE9 PUSH {R1} \ 000000B8 182080E2 ADD R2,R0,#+24 \ 000000BC 0010A0E1 MOV R1,R0 \ 000000C0 02002DE9 PUSH {R1} \ 000000C4 2C1195E5 LDR R1,[R5, #+300] \ 000000C8 02002DE9 PUSH {R1} \ 000000CC 0C1080E2 ADD R1,R0,#+12 \ 000000D0 02002DE9 PUSH {R1} \ 000000D4 383195E5 LDR R3,[R5, #+312] \ 000000D8 201080E2 ADD R1,R0,#+32 \ 000000DC 050087E0 ADD R0,R7,R5 \ 000000E0 160000EF SWI +22 316 ShowMSG(2,(int)info); \ 000000E4 051087E0 ADD R1,R7,R5 \ 000000E8 0200A0E3 MOV R0,#+2 \ 000000EC 480100EF SWI +328 \ 000000F0 14D08DE2 ADD SP,SP,#+20 317 } break; 318 case RED_BUTTON: 319 GeneralFunc_flag1(id_ed,1); 320 GeneralFunc_flag1(MenuCode_id,1); 321 GeneralFunc_flag1(last_id,1); 322 break; 323 case VOL_UP_BUTTON: curpos-=50; EDIT_SetCursorPos(data,curpos); DirectRedrawGUI(); break; 324 case VOL_DOWN_BUTTON: curpos+=50; EDIT_SetCursorPos(data,curpos); DirectRedrawGUI(); break; 325 case ENTER_BUTTON: 326 ExtractEditControl(data,1,&ec); 327 wstrcpy(ws_edit,ec.pWS);//сохраняем измененный текст в ws_edit на случай последующего сохранение в файл :) 328 EDIT_OpenOptionMenuWithUserItems(data,on_utf8ec,data,1); 329 return (-1); 330 } 331 } 332 333 if (msg->gbsmsg->msg==LONG_PRESS) \ ??empty_onkey_1: \ 000000F4 040096E5 LDR R0,[R6, #+4] \ 000000F8 9510A0E3 MOV R1,#+149 \ 000000FC F200D0E1 LDRSH R0,[R0, #+2] \ 00000100 401F81E3 ORR R1,R1,#0x100 \ 00000104 010050E1 CMP R0,R1 \ 00000108 3700001A BNE ??empty_onkey_8 334 { 335 curpos=EDIT_GetCursorPos(data); \ 0000010C 0400A0E1 MOV R0,R4 \ 00000110 D30100EF SWI +467 \ 00000114 240185E5 STR R0,[R5, #+292] 336 switch(msg->gbsmsg->submess) \ 00000118 040096E5 LDR R0,[R6, #+4] \ 0000011C 040090E5 LDR R0,[R0, #+4] \ 00000120 0D0050E2 SUBS R0,R0,#+13 \ 00000124 0300000A BEQ ??empty_onkey_9 \ 00000128 010050E2 SUBS R0,R0,#+1 \ 0000012C 2800000A BEQ ??empty_onkey_10 \ 00000130 0000A0E3 MOV R0,#+0 \ 00000134 F080BDE8 POP {R4-R7,PC} 337 { 338 case VOL_UP_BUTTON: curpos-=50; EDIT_SetCursorPos(data,curpos); DirectRedrawGUI(); break; \ ??empty_onkey_9: \ 00000138 240195E5 LDR R0,[R5, #+292] \ 0000013C 321040E2 SUB R1,R0,#+50 \ 00000140 250000EA B ??empty_onkey_11 \ ??empty_onkey_3: \ 00000144 180195E5 LDR R0,[R5, #+280] \ 00000148 0110A0E3 MOV R1,#+1 \ 0000014C 3D0100EF SWI +317 \ 00000150 ........ LDR R0,??DataTable9 ;; MenuCode_id \ 00000154 0110A0E3 MOV R1,#+1 \ 00000158 000090E5 LDR R0,[R0, #+0] \ 0000015C 3D0100EF SWI +317 \ 00000160 ........ LDR R0,??DataTable10 ;; last_id \ 00000164 0110A0E3 MOV R1,#+1 \ 00000168 000090E5 LDR R0,[R0, #+0] \ 0000016C 3D0100EF SWI +317 \ 00000170 DFFFFFEA B ??empty_onkey_1 \ ??empty_onkey_4: \ 00000174 240195E5 LDR R0,[R5, #+292] \ 00000178 321040E2 SUB R1,R0,#+50 \ ??empty_onkey_12: \ 0000017C 241185E5 STR R1,[R5, #+292] \ 00000180 0400A0E1 MOV R0,R4 \ 00000184 D40100EF SWI +468 \ 00000188 3F0100EF SWI +319 \ 0000018C D8FFFFEA B ??empty_onkey_1 \ ??empty_onkey_5: \ 00000190 240195E5 LDR R0,[R5, #+292] \ 00000194 321080E2 ADD R1,R0,#+50 \ 00000198 F7FFFFEA B ??empty_onkey_12 \ ??empty_onkey_6: \ 0000019C E42085E2 ADD R2,R5,#+228 \ 000001A0 0110A0E3 MOV R1,#+1 \ 000001A4 0400A0E1 MOV R0,R4 \ 000001A8 690100EF SWI +361 \ 000001AC 051097E7 LDR R1,[R7, +R5] \ 000001B0 140195E5 LDR R0,[R5, #+276] \ 000001B4 1F0100EF SWI +287 \ 000001B8 38109FE5 LDR R1,??empty_onkey_7+0x4 ;; on_utf8ec \ 000001BC 0130A0E3 MOV R3,#+1 \ 000001C0 0420A0E1 MOV R2,R4 \ 000001C4 0400A0E1 MOV R0,R4 \ 000001C8 E50100EF SWI +485 \ 000001CC 0000E0E3 MVN R0,#+0 \ 000001D0 F080BDE8 POP {R4-R7,PC} 339 case VOL_DOWN_BUTTON: curpos+=50; EDIT_SetCursorPos(data,curpos); DirectRedrawGUI(); break; \ ??empty_onkey_10: \ 000001D4 240195E5 LDR R0,[R5, #+292] \ 000001D8 321080E2 ADD R1,R0,#+50 \ ??empty_onkey_11: \ 000001DC 241185E5 STR R1,[R5, #+292] \ 000001E0 0400A0E1 MOV R0,R4 \ 000001E4 D40100EF SWI +468 \ 000001E8 3F0100EF SWI +319 340 } 341 } 342 return(0); \ ??empty_onkey_8: \ 000001EC 0000A0E3 MOV R0,#+0 \ 000001F0 F080BDE8 POP {R4-R7,PC} ;; return \ ??empty_onkey_7: \ 000001F4 ........ DC32 `?` \ 000001F8 ........ DC32 on_utf8ec 343 } 344 \ In segment CODE, align 4, keep-with-next 345 void empty_ghook(GUI *gui, int cmd) 346 { 347 static SOFTKEY_DESC sk2={0x0FFF, 0x0000,(int)LG_MENU}; 348 if (cmd==7) \ empty_ghook: \ 00000000 ........ LDR R3,??DataTable16 ;; pos_desc \ 00000004 00402DE9 PUSH {LR} \ 00000008 070051E3 CMP R1,#+7 \ 0000000C 0500001A BNE ??empty_ghook_0 349 { 350 SetSoftKey(gui,&sk2,SET_SOFT_KEY_N); \ 00000010 0120A0E3 MOV R2,#+1 \ 00000014 1410A0E3 MOV R1,#+20 \ 00000018 601E81E3 ORR R1,R1,#0x600 \ 0000001C 031081E0 ADD R1,R1,R3 \ 00000020 680100EF SWI +360 \ 00000024 0080BDE8 POP {PC} 351 } 352 353 if(cmd==0xA) \ ??empty_ghook_0: \ 00000028 0A0051E3 CMP R1,#+10 \ 0000002C 0100001A BNE ??empty_ghook_1 354 { 355 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000030 7F0100EF SWI +383 \ 00000034 0080BDE8 POP {PC} 356 } 357 if (cmd==0x0C) \ ??empty_ghook_1: \ 00000038 0C0051E3 CMP R1,#+12 \ 0000003C 0080BD18 POPNE {PC} 358 { 359 EDIT_SetCursorPos(gui,curpos); \ 00000040 241193E5 LDR R1,[R3, #+292] \ 00000044 D40100EF SWI +468 360 } 361 if(cmd==0x03){} 362 363 }; \ 00000048 0080BDE8 POP {PC} ;; return 364 365 //----------------------------------// 366 \ In segment CODE, align 4, keep-with-next 367 void SaveFile(char *filename) 368 { \ SaveFile: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 369 unsigned int err; 370 int f; 371 char *s=malloc(wstrlen(ws_edit)); \ 00000004 ........ LDR R5,??DataTable16 ;; pos_desc \ 00000008 84D04DE2 SUB SP,SP,#+132 \ 0000000C 140195E5 LDR R0,[R5, #+276] 372 int len; 373 int i; 374 len=ws_edit->wsbody[0]; 375 for(i=0;iwsbody[i+1]); \ ??SaveFile_1: \ 00000038 140195E5 LDR R0,[R5, #+276] \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 860080E0 ADD R0,R0,R6, LSL #+1 \ 00000044 B200D0E1 LDRH R0,[R0, #+2] \ 00000048 016086E2 ADD R6,R6,#+1 \ 0000004C ........ _BLF char16to8,??char16to8??rA \ 00000050 ........ STRB R0,[R8], #+1 \ 00000054 070056E1 CMP R6,R7 \ 00000058 F6FFFFBA BLT ??SaveFile_1 377 *(s+i++)=0; \ ??SaveFile_0: \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 0400C6E7 STRB R0,[R6, +R4] 378 if(backup) \ 00000064 B0009FE5 LDR R0,??SaveFile_2 ;; backup \ 00000068 B0609FE5 LDR R6,??SaveFile_2+0x4 ;; `?` \ 0000006C 000090E5 LDR R0,[R0, #+0] \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0900000A BEQ ??SaveFile_3 379 { 380 char ff[128]; 381 strcpy(ff,file); \ 00000078 381195E5 LDR R1,[R5, #+312] \ 0000007C 04008DE2 ADD R0,SP,#+4 \ 00000080 1A0000EF SWI +26 382 strcat(ff,".bkp"); \ 00000084 201086E2 ADD R1,R6,#+32 \ 00000088 04008DE2 ADD R0,SP,#+4 \ 0000008C 170000EF SWI +23 383 fmove(file,ff,&err);//переименовываем \ 00000090 380195E5 LDR R0,[R5, #+312] \ 00000094 0D20A0E1 MOV R2,SP \ 00000098 04108DE2 ADD R1,SP,#+4 \ 0000009C 8E0000EF SWI +142 384 } 385 unlink(file,&err); \ ??SaveFile_3: \ 000000A0 380195E5 LDR R0,[R5, #+312] \ 000000A4 0D10A0E1 MOV R1,SP \ 000000A8 6B0100EF SWI +363 386 if((f=fopen(file,A_Create+A_ReadWrite/*+A_Append*/+A_BIN,P_WRITE,&err))!=-1) \ 000000AC 380195E5 LDR R0,[R5, #+312] \ 000000B0 0D30A0E1 MOV R3,SP \ 000000B4 402FA0E3 MOV R2,#+256 \ 000000B8 0210A0E3 MOV R1,#+2 \ 000000BC 811C81E3 ORR R1,R1,#0x8100 \ 000000C0 0A0000EF SWI +10 \ 000000C4 0050A0E1 MOV R5,R0 \ 000000C8 010075E3 CMN R5,#+1 \ 000000CC 0800000A BEQ ??SaveFile_4 387 { 388 fwrite(f,s,strlen(s),&err); \ 000000D0 0400A0E1 MOV R0,R4 \ 000000D4 1B0000EF SWI +27 \ 000000D8 0020A0E1 MOV R2,R0 \ 000000DC 0D30A0E1 MOV R3,SP \ 000000E0 0410A0E1 MOV R1,R4 \ 000000E4 0500A0E1 MOV R0,R5 \ 000000E8 0C0000EF SWI +12 389 ShowMSG(1,(int)LG_FILESAVE); \ 000000EC 101086E2 ADD R1,R6,#+16 \ 000000F0 000000EA B ??SaveFile_5 390 } 391 else ShowMSG(1,(int)LG_NOTSAVE); \ ??SaveFile_4: \ 000000F4 0610A0E1 MOV R1,R6 \ ??SaveFile_5: \ 000000F8 0100A0E3 MOV R0,#+1 \ 000000FC 480100EF SWI +328 392 fclose(f,&err); \ 00000100 0D10A0E1 MOV R1,SP \ 00000104 0500A0E1 MOV R0,R5 \ 00000108 0D0000EF SWI +13 393 mfree(s); \ 0000010C 0400A0E1 MOV R0,R4 \ 00000110 150000EF SWI +21 394 } \ 00000114 84D08DE2 ADD SP,SP,#+132 \ 00000118 F081BDE8 POP {R4-R8,PC} ;; return \ ??SaveFile_2: \ 0000011C ........ DC32 backup \ 00000120 ........ DC32 `?` 395 396 //----------------------------------// 397 \ In segment CODE, align 4, keep-with-next 398 int get_file_size(char* fname) 399 { \ get_file_size: \ 00000000 00402DE9 PUSH {LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 400 unsigned int err; 401 FSTATS fs; 402 if ((GetFileStats(fname,&fs,&err))==-1) return 0; \ 00000008 0D20A0E1 MOV R2,SP \ 0000000C 04108DE2 ADD R1,SP,#+4 \ 00000010 840000EF SWI +132 \ 00000014 010070E3 CMN R0,#+1 403 return (fs.size); \ 00000018 08009D15 LDRNE R0,[SP, #+8] \ 0000001C 2CD08DE2 ADD SP,SP,#+44 \ 00000020 0000A003 MOVEQ R0,#+0 \ 00000024 0080BDE8 POP {PC} ;; return 404 } 405 406 //----------------------------------// 407 void Killer(void); \ In segment CODE, align 4, keep-with-next 408 int DrawText(char *filename,int cp)//Cобственно и вызов самого эдитконтроля:) 409 { \ DrawText: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 410 if(illum_mode) illum();//Подсветка постоянна или нет \ 00000004 ........ LDR R4,??DataTable16 ;; pos_desc \ 00000008 14D04DE2 SUB SP,SP,#+20 \ 0000000C 00B0A0E1 MOV R11,R0 \ 00000010 BC029FE5 LDR R0,??DrawText_1+0x4 ;; illum_mode \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0100000A BEQ ??DrawText_2 \ 00000024 ........ BL illum \ 00000028 010000EA B ??DrawText_3 411 else GBS_DelTimer(&tmr); \ ??DrawText_2: \ 0000002C 510F84E2 ADD R0,R4,#+324 \ 00000030 8C0100EF SWI +396 412 413 file_name=GetName(file,1);//Понятно из названия...получаем имя файла...:) \ ??DrawText_3: \ 00000034 380194E5 LDR R0,[R4, #+312] \ 00000038 0110A0E3 MOV R1,#+1 \ 0000003C ........ _BLF GetName,??GetName??rA \ 00000040 340184E5 STR R0,[R4, #+308] 414 strcpy(file,filename);//Чтоб при сохранении не было недоразумений с именем.... \ 00000044 380194E5 LDR R0,[R4, #+312] \ 00000048 0B10A0E1 MOV R1,R11 \ 0000004C 1A0000EF SWI +26 415 416 unsigned int err; 417 EDITC_OPTIONS ec_options; 418 PrepareEditControl(&ec); \ 00000050 E40084E2 ADD R0,R4,#+228 \ 00000054 640100EF SWI +356 419 void *ma=malloc_adr(); \ 00000058 148000EF SWI +32788 \ 0000005C 0060A0E1 MOV R6,R0 420 void *eq=AllocEQueue(ma, mfree_adr()); \ 00000060 158000EF SWI +32789 \ 00000064 0010A0E1 MOV R1,R0 \ 00000068 0600A0E1 MOV R0,R6 \ 0000006C 630100EF SWI +355 \ 00000070 0070A0E1 MOV R7,R0 421 unsigned int size=0; \ 00000074 0080A0E3 MOV R8,#+0 \ 00000078 0090A0E3 MOV R9,#+0 422 423 if((file_size=get_file_size(filename))==0)//Если размер файла равен нулю то выходим! \ 0000007C 0B00A0E1 MOV R0,R11 \ 00000080 ........ BL get_file_size \ 00000084 2C0184E5 STR R0,[R4, #+300] \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 1100001A BNE ??DrawText_4 424 { 425 ShowMSG(1,(int)"Zero lenght file!"); \ 00000090 40129FE5 LDR R1,??DrawText_1+0x8 ;; `?` \ 00000094 0100A0E3 MOV R0,#+1 \ 00000098 480100EF SWI +328 426 GeneralFunc_flag1(id_ed,1); \ 0000009C 180194E5 LDR R0,[R4, #+280] \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 3D0100EF SWI +317 427 GeneralFunc_flag1(MenuCode_id,1); \ 000000A8 ........ LDR R0,??DataTable9 ;; MenuCode_id \ 000000AC 0110A0E3 MOV R1,#+1 \ 000000B0 000090E5 LDR R0,[R0, #+0] \ 000000B4 3D0100EF SWI +317 428 GeneralFunc_flag1(last_id,1); \ 000000B8 ........ LDR R0,??DataTable10 ;; last_id \ 000000BC 0110A0E3 MOV R1,#+1 \ 000000C0 000090E5 LDR R0,[R0, #+0] \ 000000C4 3D0100EF SWI +317 429 ShowMainMenu(); \ 000000C8 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 430 return 1; \ 000000CC 0100A0E3 MOV R0,#+1 \ 000000D0 14D08DE2 ADD SP,SP,#+20 \ 000000D4 F08FBDE8 POP {R4-R11,PC} 431 } 432 433 char *s=malloc(file_size); \ ??DrawText_4: \ 000000D8 140000EF SWI +20 \ 000000DC 00A0A0E1 MOV R10,R0 434 if((f=fopen(filename,A_ReadOnly+A_BIN,P_READ,&err))!=-1) \ 000000E0 0D30A0E1 MOV R3,SP \ 000000E4 8020A0E3 MOV R2,#+128 \ 000000E8 801CA0E3 MOV R1,#+32768 \ 000000EC 0B00A0E1 MOV R0,R11 \ 000000F0 0A0000EF SWI +10 \ 000000F4 300184E5 STR R0,[R4, #+304] \ 000000F8 010070E3 CMN R0,#+1 \ 000000FC 0400000A BEQ ??DrawText_5 435 size=fread(f,s,file_size,&err); \ 00000100 2C2194E5 LDR R2,[R4, #+300] \ 00000104 0D30A0E1 MOV R3,SP \ 00000108 0A10A0E1 MOV R1,R10 \ 0000010C 0B0000EF SWI +11 \ 00000110 0090A0E1 MOV R9,R0 436 fclose(f,&err); \ ??DrawText_5: \ 00000114 300194E5 LDR R0,[R4, #+304] \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0D0000EF SWI +13 437 438 ws_edit=AllocWS(size);//Выделяем память столько,сколько прочитали данных из файла \ 00000120 0900A0E1 MOV R0,R9 \ 00000124 250100EF SWI +293 \ 00000128 140184E5 STR R0,[R4, #+276] 439 440 switch(cp)//выбор кодировки \ 0000012C 040055E3 CMP R5,#+4 \ 00000130 1800008A BHI ??DrawText_6 \ 00000134 010F8FE2 ADR R0,??DrawText_0 \ 00000138 0500D0E7 LDRB R0,[R0, R5] \ 0000013C 00F18FE0 ADD PC,PC,R0, LSL #+2 \ ??DrawText_0: \ 00000140 01050A0E DC8 +1,+5,+10,+14 \ 00000144 12000000 DC8 +18,+0,+0,+0 441 { 442 case 0: win1251_2ws(ws_edit,s);break; \ ??DrawText_7: \ 00000148 140194E5 LDR R0,[R4, #+276] \ 0000014C 0A10A0E1 MOV R1,R10 \ 00000150 ........ _BLF win1251_2ws,??win1251_2ws??rA \ 00000154 0F0000EA B ??DrawText_6 443 case 1: utf8_2ws(ws_edit,s,file_size); break; \ ??DrawText_8: \ 00000158 2C2194E5 LDR R2,[R4, #+300] \ 0000015C 140194E5 LDR R0,[R4, #+276] \ 00000160 0A10A0E1 MOV R1,R10 \ 00000164 E30100EF SWI +483 \ 00000168 0A0000EA B ??DrawText_6 444 case 2: koi2ws(ws_edit,s); break; \ ??DrawText_9: \ 0000016C 140194E5 LDR R0,[R4, #+276] \ 00000170 0A10A0E1 MOV R1,R10 \ 00000174 ........ _BLF koi2ws,??koi2ws??rA \ 00000178 060000EA B ??DrawText_6 445 case 3: ascii2ws(ws_edit,s); break; \ ??DrawText_10: \ 0000017C 140194E5 LDR R0,[R4, #+276] \ 00000180 0A10A0E1 MOV R1,R10 \ 00000184 ........ _BLF ascii2ws,??ascii2ws??rA \ 00000188 020000EA B ??DrawText_6 446 case 4: win1250_2ws(ws_edit,s); break; \ ??DrawText_11: \ 0000018C 140194E5 LDR R0,[R4, #+276] \ 00000190 0A10A0E1 MOV R1,R10 \ 00000194 ........ _BLF win1250_2ws,??win1250_2ws??rA 447 } 448 449 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_NORMAL_STR,ws_edit,size*2);//умножаем на 2 чтобы было место для редактирования... \ ??DrawText_6: \ 00000198 8900A0E1 LSL R0,R9,#+1 \ 0000019C 01002DE9 PUSH {R0} \ 000001A0 143194E5 LDR R3,[R4, #+276] \ 000001A4 0020A0E3 MOV R2,#+0 \ 000001A8 0310A0E3 MOV R1,#+3 \ 000001AC E40084E2 ADD R0,R4,#+228 \ 000001B0 650100EF SWI +357 450 451 if(scin_mode)//Исполузуем цвет и шрифт от скина \ 000001B4 20019FE5 LDR R0,??DrawText_1+0xC ;; scin_mode \ 000001B8 000090E5 LDR R0,[R0, #+0] \ 000001BC 04D08DE2 ADD SP,SP,#+4 \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 0E00000A BEQ ??DrawText_12 452 { 453 SetFontToEditCOptions(&ec_options,size_font); \ 000001C8 10019FE5 LDR R0,??DrawText_1+0x10 ;; size_font \ 000001CC 001090E5 LDR R1,[R0, #+0] \ 000001D0 04008DE2 ADD R0,SP,#+4 \ 000001D4 CA0100EF SWI +458 454 SetPenColorToEditCOptions(&ec_options,pen_font); \ 000001D8 04019FE5 LDR R0,??DrawText_1+0x14 ;; pen_font \ 000001DC 001090E5 LDR R1,[R0, #+0] \ 000001E0 04008DE2 ADD R0,SP,#+4 \ 000001E4 CC0100EF SWI +460 455 SetBrushColorToEditCOptions(&ec_options,brush_font); \ 000001E8 F8009FE5 LDR R0,??DrawText_1+0x18 ;; brush_font \ 000001EC 001090E5 LDR R1,[R0, #+0] \ 000001F0 04008DE2 ADD R0,SP,#+4 \ 000001F4 CD0100EF SWI +461 456 CopyOptionsToEditControl(&ec,&ec_options); \ 000001F8 04108DE2 ADD R1,SP,#+4 \ 000001FC E40084E2 ADD R0,R4,#+228 \ 00000200 CE0100EF SWI +462 457 } 458 AddEditControlToEditQend(eq,&ec,ma);//Добавляем в эдитконтрол \ ??DrawText_12: \ 00000204 0620A0E1 MOV R2,R6 \ 00000208 E41084E2 ADD R1,R4,#+228 \ 0000020C 0700A0E1 MOV R0,R7 \ 00000210 660100EF SWI +358 459 460 if(screen_mode)//Показывать заголовок :) \ 00000214 D0009FE5 LDR R0,??DrawText_1+0x1C ;; screen_mode \ 00000218 000090E5 LDR R0,[R0, #+0] \ 0000021C 000050E3 CMP R0,#+0 \ 00000220 1100000A BEQ ??DrawText_13 461 { 462 extern const char per_2s[]; 463 // snprintf(s,127,per_2s,IMG_PATH,"\\null.png"); 464 // *((int **)(&disk_prop_hdr.icon))=(int *)s; 465 sprintf(hdr_txt," %s",file_name); \ 00000224 342194E5 LDR R2,[R4, #+308] \ 00000228 281F8FE2 ADR R1,??DrawText_1 ;; " %s" \ 0000022C D400A0E3 MOV R0,#+212 \ 00000230 500E80E3 ORR R0,R0,#0x500 \ 00000234 040080E0 ADD R0,R0,R4 \ 00000238 160000EF SWI +22 466 patch_header(&disk_prop_hdr); \ 0000023C BC8084E5 STR R8,[R4, #+188] \ 00000240 888100EF SWI +33160 \ 00000244 010040E2 SUB R0,R0,#+1 \ 00000248 B00CC4E1 STRH R0,[R4, #+192] \ 0000024C 8A8100EF SWI +33162 \ 00000250 010040E2 SUB R0,R0,#+1 \ 00000254 B20CC4E1 STRH R0,[R4, #+194] 467 patch_input(&edit_desc); \ 00000258 B085C4E1 STRH R8,[R4, #+80] \ 0000025C 8A8100EF SWI +33162 \ 00000260 010080E2 ADD R0,R0,#+1 \ 00000264 B205C4E1 STRH R0,[R4, #+82] \ 00000268 020000EA B ??DrawText_14 468 } 469 else//или нет) 470 { 471 patch_header_n(&disk_prop_hdr); \ ??DrawText_13: \ 0000026C BC8084E5 STR R8,[R4, #+188] \ 00000270 C08084E5 STR R8,[R4, #+192] 472 patch_input_n(&edit_desc); \ 00000274 508084E5 STR R8,[R4, #+80] \ ??DrawText_14: \ 00000278 888100EF SWI +33160 \ 0000027C 010040E2 SUB R0,R0,#+1 \ 00000280 B405C4E1 STRH R0,[R4, #+84] \ 00000284 898100EF SWI +33161 \ 00000288 0050A0E1 MOV R5,R0 \ 0000028C 8B8100EF SWI +33163 \ 00000290 000045E0 SUB R0,R5,R0 \ 00000294 010040E2 SUB R0,R0,#+1 \ 00000298 B605C4E1 STRH R0,[R4, #+86] 473 } 474 mfree(s); \ 0000029C 0A00A0E1 MOV R0,R10 \ 000002A0 150000EF SWI +21 475 return id_ed=CreateInputTextDialog(&edit_desc,&disk_prop_hdr,eq,1,0); \ 000002A4 0000A0E3 MOV R0,#+0 \ 000002A8 01002DE9 PUSH {R0} \ 000002AC 0130A0E3 MOV R3,#+1 \ 000002B0 0720A0E1 MOV R2,R7 \ 000002B4 BC1084E2 ADD R1,R4,#+188 \ 000002B8 380084E2 ADD R0,R4,#+56 \ 000002BC 670100EF SWI +359 \ 000002C0 180184E5 STR R0,[R4, #+280] \ 000002C4 04D08DE2 ADD SP,SP,#+4 \ 000002C8 14D08DE2 ADD SP,SP,#+20 \ 000002CC F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawText_1: \ 000002D0 20257300 DC8 " %s" \ 000002D4 ........ DC32 illum_mode \ 000002D8 ........ DC32 `?` \ 000002DC ........ DC32 scin_mode \ 000002E0 ........ DC32 size_font \ 000002E4 ........ DC32 pen_font \ 000002E8 ........ DC32 brush_font \ 000002EC ........ DC32 screen_mode 476 //сохраняем ид для последующих махинаций))) 477 } 478 479 480 //-------------------------------Create new file------------------------------// 481 482 483 int new_file_id; \ In segment CODE, align 4, keep-with-next 484 void CreateNewFile(char *name,int size) 485 { \ CreateNewFile: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 486 int f; 487 unsigned int err; 488 if((f=fopen(name,A_ReadWrite+A_Create+A_Truncate,P_READ+P_WRITE,&err))!=-1) \ 00000010 0D30A0E1 MOV R3,SP \ 00000014 602FA0E3 MOV R2,#+384 \ 00000018 0210A0E3 MOV R1,#+2 \ 0000001C C01F81E3 ORR R1,R1,#0x300 \ 00000020 0A0000EF SWI +10 \ 00000024 0060A0E1 MOV R6,R0 \ 00000028 010076E3 CMN R6,#+1 \ 0000002C 7180BD08 POPEQ {R0,R4-R6,PC} 489 { 490 fwrite(f,"",size,&err); \ 00000030 0D30A0E1 MOV R3,SP \ 00000034 0520A0E1 MOV R2,R5 \ 00000038 071F8FE2 ADR R1,??CreateNewFile_0 ;; "" \ 0000003C 0C0000EF SWI +12 491 fclose(f,&err); \ 00000040 0D10A0E1 MOV R1,SP \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 0D0000EF SWI +13 492 DrawText(name,0); \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 ........ BL DrawText 493 } 494 } \ 00000058 7180BDE8 POP {R0,R4-R6,PC} ;; return \ ??CreateNewFile_0: \ 0000005C 00000000 DC8 "",+0,+0,+0 495 496 HEADER_DESC new_file_hdr={0,0,131,21,NULL,(int)LG_NEW_FILE,LGP_NULL}; 497 \ In segment CODE, align 4, keep-with-next 498 int new_file_onkey(GUI *data, GUI_MSG *msg) 499 { \ new_file_onkey: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 58D04DE2 SUB SP,SP,#+88 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 500 WSHDR *ws=AllocWS(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 250100EF SWI +293 501 char name[32]; 502 int size; 503 char s[9]; 504 if (msg->keys==0x0FFF)//0xFFF \ 00000018 F200D5E1 LDRSH R0,[R5, #+2] \ 0000001C FF10A0E3 MOV R1,#+255 \ 00000020 F01E81E3 ORR R1,R1,#0xF00 \ 00000024 010050E1 CMP R0,R1 \ 00000028 1800001A BNE ??new_file_onkey_0 505 { 506 EDITCONTROL ec; 507 ExtractEditControl(data,2,&ec); \ 0000002C 0C208DE2 ADD R2,SP,#+12 \ 00000030 0210A0E3 MOV R1,#+2 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 690100EF SWI +361 508 ws=ec.pWS; 509 ws_2str(ws,name,32);//Извлекаем имя \ 0000003C 34009DE5 LDR R0,[SP, #+52] \ 00000040 2020A0E3 MOV R2,#+32 \ 00000044 38108DE2 ADD R1,SP,#+56 \ 00000048 A30000EF SWI +163 510 511 ExtractEditControl(data,4,&ec);//извлекаем размер \ 0000004C 0C208DE2 ADD R2,SP,#+12 \ 00000050 0410A0E3 MOV R1,#+4 \ 00000054 0400A0E1 MOV R0,R4 \ 00000058 690100EF SWI +361 512 ws=ec.pWS; 513 ws_2str(ws,s,32); \ 0000005C 34009DE5 LDR R0,[SP, #+52] \ 00000060 2020A0E3 MOV R2,#+32 \ 00000064 0D10A0E1 MOV R1,SP \ 00000068 A30000EF SWI +163 514 size=atoi(s); \ 0000006C 0D00A0E1 MOV R0,SP \ 00000070 ........ _BLF atoi,??atoi??rA 515 516 CreateNewFile(name,size); \ 00000074 0010A0E1 MOV R1,R0 \ 00000078 38008DE2 ADD R0,SP,#+56 \ 0000007C ........ BL CreateNewFile 517 GeneralFunc_flag1(new_file_id,1); \ 00000080 14009FE5 LDR R0,??new_file_onkey_1 ;; pos_desc + 316 \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 000090E5 LDR R0,[R0, #+0] \ 0000008C 3D0100EF SWI +317 518 } 519 return(0); \ ??new_file_onkey_0: \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 58D08DE2 ADD SP,SP,#+88 \ 00000098 3080BDE8 POP {R4,R5,PC} ;; return \ ??new_file_onkey_1: \ 0000009C ........ DC32 pos_desc + 316 520 } 521 \ In segment CODE, align 4, keep-with-next 522 void new_file_ghook(GUI *gui, int cmd) 523 { \ new_file_ghook: \ 00000000 00402DE9 PUSH {LR} 524 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_CREATE}; 525 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??new_file_ghook_0 526 { 527 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000000C 2C109FE5 LDR R1,??new_file_ghook_1 ;; ??sk_1 \ 00000010 0120A0E3 MOV R2,#+1 \ 00000014 680100EF SWI +360 \ 00000018 0080BDE8 POP {PC} 528 } 529 if(cmd==0xA) \ ??new_file_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??new_file_ghook_2 530 { 531 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 532 } 533 if (cmd==0x0C) \ ??new_file_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 534 { 535 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 536 } 537 if(cmd==0x03){} 538 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??new_file_ghook_1: \ 00000040 ........ DC32 ??sk_1 539 \ In segment CODE, align 4, keep-with-next 540 void new_file_locret(void){} \ new_file_locret: \ 00000000 1EFF2FE1 BX LR ;; return 541 542 SOFTKEY_DESC new_file_sk[]= 543 { 544 {0x0018,0x0000,(int)"Лев"}, 545 {0x0001,0x0000,(int)"Прав"}, 546 {0x003D,0x0000,(int)LGP_DOIT_PIC} 547 }; 548 549 SOFTKEYSTAB new_file_skt= 550 { 551 menu_sk,0 552 }; 553 554 INPUTDIA_DESC new_file_desc= 555 { 556 1, 557 new_file_onkey, 558 new_file_ghook, 559 (void *)new_file_locret, 560 0, 561 &menu_skt, 562 {0,NULL,NULL,NULL}, 563 FONT_SMALL, 564 100, 565 101, 566 0, 567 0x00000000, 568 0x40000000 569 }; 570 \ In segment CODE, align 4, keep-with-next 571 void new_file_ec() 572 { \ new_file_ec: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 573 char *ss=malloc(64); 574 WSHDR *wss=AllocWS(64); 575 576 void *ma=malloc_adr(); 577 void *eq=AllocEQueue(ma, mfree_adr()); 578 579 PrepareEditControl(&ec); \ 00000004 ........ LDR R6,??DataTable16 ;; pos_desc 580 wsprintf(wss,per_t,"Имя:\n"); \ 00000008 ........ LDR R9,??DataTable12 ;; per_t \ 0000000C 4000A0E3 MOV R0,#+64 \ 00000010 140000EF SWI +20 \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 4000A0E3 MOV R0,#+64 \ 0000001C 250100EF SWI +293 \ 00000020 0070A0E1 MOV R7,R0 \ 00000024 148000EF SWI +32788 \ 00000028 0080A0E1 MOV R8,R0 \ 0000002C 158000EF SWI +32789 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0800A0E1 MOV R0,R8 \ 00000038 630100EF SWI +355 \ 0000003C 0050A0E1 MOV R5,R0 \ 00000040 E40086E2 ADD R0,R6,#+228 \ 00000044 640100EF SWI +356 \ 00000048 282089E2 ADD R2,R9,#+40 \ 0000004C 0910A0E1 MOV R1,R9 \ 00000050 0700A0E1 MOV R0,R7 \ 00000054 240100EF SWI +292 581 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,12); \ 00000058 0C00A0E3 MOV R0,#+12 \ 0000005C 01002DE9 PUSH {R0} \ 00000060 0730A0E1 MOV R3,R7 \ 00000064 0020A0E3 MOV R2,#+0 \ 00000068 0110A0E3 MOV R1,#+1 \ 0000006C E40086E2 ADD R0,R6,#+228 \ 00000070 650100EF SWI +357 582 AddEditControlToEditQend(eq,&ec,ma); \ 00000074 0820A0E1 MOV R2,R8 \ 00000078 E41086E2 ADD R1,R6,#+228 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 660100EF SWI +358 583 #ifdef NEWSGOLD 584 wsprintf(ec.pWS,per_s,"4:\\Temp\\"); 585 #else 586 wsprintf(ec.pWS,per_s,"0:\\Temp\\"); \ 00000084 43AFA0E3 MOV R10,#+268 \ 00000088 06009AE7 LDR R0,[R10, +R6] \ 0000008C 1C2089E2 ADD R2,R9,#+28 \ 00000090 031089E2 ADD R1,R9,#+3 \ 00000094 240100EF SWI +292 587 #endif 588 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_NORMAL_STR,ec.pWS,256); \ 00000098 400FA0E3 MOV R0,#+256 \ 0000009C 01002DE9 PUSH {R0} \ 000000A0 06309AE7 LDR R3,[R10, +R6] \ 000000A4 0020A0E3 MOV R2,#+0 \ 000000A8 0310A0E3 MOV R1,#+3 \ 000000AC E40086E2 ADD R0,R6,#+228 \ 000000B0 650100EF SWI +357 589 AddEditControlToEditQend(eq,&ec,ma); \ 000000B4 0820A0E1 MOV R2,R8 \ 000000B8 E41086E2 ADD R1,R6,#+228 \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 660100EF SWI +358 590 591 PrepareEditControl(&ec); \ 000000C4 E40086E2 ADD R0,R6,#+228 \ 000000C8 640100EF SWI +356 592 wsprintf(wss,per_t,"\nРазмер:\n"); \ 000000CC 102089E2 ADD R2,R9,#+16 \ 000000D0 0910A0E1 MOV R1,R9 \ 000000D4 0700A0E1 MOV R0,R7 \ 000000D8 240100EF SWI +292 593 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,12); \ 000000DC 0C00A0E3 MOV R0,#+12 \ 000000E0 01002DE9 PUSH {R0} \ 000000E4 0730A0E1 MOV R3,R7 \ 000000E8 0020A0E3 MOV R2,#+0 \ 000000EC 0110A0E3 MOV R1,#+1 \ 000000F0 E40086E2 ADD R0,R6,#+228 \ 000000F4 650100EF SWI +357 594 AddEditControlToEditQend(eq,&ec,ma); \ 000000F8 0820A0E1 MOV R2,R8 \ 000000FC E41086E2 ADD R1,R6,#+228 \ 00000100 0500A0E1 MOV R0,R5 \ 00000104 660100EF SWI +358 595 ConstructEditControl(&ec,ECT_NORMAL_NUM,ECF_APPEND_EOL|ECF_DISABLE_MINUS|ECF_DISABLE_POINT,ec.pWS,9); \ 00000108 0900A0E3 MOV R0,#+9 \ 0000010C 01002DE9 PUSH {R0} \ 00000110 06309AE7 LDR R3,[R10, +R6] \ 00000114 4020A0E3 MOV R2,#+64 \ 00000118 602A82E3 ORR R2,R2,#0x60000 \ 0000011C 0610A0E3 MOV R1,#+6 \ 00000120 E40086E2 ADD R0,R6,#+228 \ 00000124 650100EF SWI +357 596 AddEditControlToEditQend(eq,&ec,ma); \ 00000128 0820A0E1 MOV R2,R8 \ 0000012C E41086E2 ADD R1,R6,#+228 \ 00000130 0500A0E1 MOV R0,R5 \ 00000134 660100EF SWI +358 597 598 patch_header2(&new_file_hdr); \ 00000138 0070A0E3 MOV R7,#+0 \ 0000013C D07086E5 STR R7,[R6, #+208] \ 00000140 888100EF SWI +33160 \ 00000144 010040E2 SUB R0,R0,#+1 \ 00000148 B40DC6E1 STRH R0,[R6, #+212] \ 0000014C 8A8100EF SWI +33162 \ 00000150 B60DC6E1 STRH R0,[R6, #+214] 599 patch_input2(&new_file_desc); \ 00000154 B878C6E1 STRH R7,[R6, #+136] \ 00000158 8A8100EF SWI +33162 \ 0000015C 010080E2 ADD R0,R0,#+1 \ 00000160 BA08C6E1 STRH R0,[R6, #+138] \ 00000164 888100EF SWI +33160 \ 00000168 010040E2 SUB R0,R0,#+1 \ 0000016C BC08C6E1 STRH R0,[R6, #+140] \ 00000170 898100EF SWI +33161 \ 00000174 0070A0E1 MOV R7,R0 \ 00000178 8B8100EF SWI +33163 \ 0000017C 000047E0 SUB R0,R7,R0 \ 00000180 010040E2 SUB R0,R0,#+1 \ 00000184 BE08C6E1 STRH R0,[R6, #+142] 600 601 GeneralFuncF1(1); \ 00000188 0100A0E3 MOV R0,#+1 \ 0000018C 3B0100EF SWI +315 602 mfree(ss); \ 00000190 0400A0E1 MOV R0,R4 \ 00000194 150000EF SWI +21 603 new_file_id=CreateInputTextDialog(&new_file_desc,&new_file_hdr,eq,1,0);//создаем диалоговое окно \ 00000198 0000A0E3 MOV R0,#+0 \ 0000019C 01002DE9 PUSH {R0} \ 000001A0 0130A0E3 MOV R3,#+1 \ 000001A4 0520A0E1 MOV R2,R5 \ 000001A8 D01086E2 ADD R1,R6,#+208 \ 000001AC 700086E2 ADD R0,R6,#+112 \ 000001B0 670100EF SWI +359 \ 000001B4 3C0186E5 STR R0,[R6, #+316] 604 } \ 000001B8 14D08DE2 ADD SP,SP,#+20 \ 000001BC F087BDE8 POP {R4-R10,PC} ;; return 605 606 607 //-----------------------------------------------------------------------------// 608 609 610 const RECT Canvas={0,0,131,172}; 611 \ In segment CODE, align 4, keep-with-next 612 void Killer(void) 613 { 614 extern void seqkill(void *data, void(*next_in_seq)(CSM_RAM *), void *data_to_kill, void *seqkiller); 615 extern void *ELF_BEGIN; 616 } \ Killer: \ 00000000 1EFF2FE1 BX LR ;; return 617 \ In segment CODE, align 4, keep-with-next 618 void maincsm_oncreate(CSM_RAM *data) 619 { \ maincsm_oncreate: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 620 MAIN_CSM *csm=(MAIN_CSM*)data; 621 csm->gui_id=ShowMenuCode(); \ 00000008 ........ _BLF ShowMenuCode,??ShowMenuCode??rA \ 0000000C 280084E5 STR R0,[R4, #+40] 622 } \ 00000010 1080BDE8 POP {R4,PC} ;; return 623 \ In segment CODE, align 4, keep-with-next 624 void maincsm_onclose(CSM_RAM *csm) 625 { \ maincsm_onclose: \ 00000000 10402DE9 PUSH {R4,LR} 626 FreeWS(ws_edit); \ 00000004 ........ LDR R4,??DataTable16 ;; pos_desc \ 00000008 140194E5 LDR R0,[R4, #+276] \ 0000000C 290100EF SWI +297 627 GBS_DelTimer(&tmr); \ 00000010 510F84E2 ADD R0,R4,#+324 \ 00000014 8C0100EF SWI +396 628 SaveINI(); \ 00000018 ........ _BLF SaveINI,??SaveINI??rA 629 SUBPROC((void *)Killer); \ 0000001C 04009FE5 LDR R0,??maincsm_onclose_0 ;; Killer \ 00000020 710100EF SWI +369 630 } \ 00000024 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onclose_0: \ 00000028 ........ DC32 Killer 631 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 632 633 #pragma inline=forced 634 int toupper(int c) 635 { 636 if ((c>='a')&&(c<='z')) c+='A'-'a'; 637 return(c); 638 } 639 #pragma inline 640 int strcmp_nocase(const char *s1,const char *s2) 641 { 642 int i; 643 int c; 644 while(!(i=(c=toupper(*s1++))-toupper(*s2++))) if (!c) break; 645 return(i); 646 } 647 \ In segment CODE, align 4, keep-with-next 648 int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg) 649 { \ maincsm_onmessage: \ 00000000 10402DE9 PUSH {R4,LR} 650 MAIN_CSM *csm=(MAIN_CSM*)data; 651 if (msg->msg==MSG_GUI_DESTROYED) \ 00000004 F220D1E1 LDRSH R2,[R1, #+2] \ 00000008 980052E3 CMP R2,#+152 \ 0000000C 0500001A BNE ??maincsm_onmessage_0 652 { 653 if ((int)msg->data0==csm->gui_id) \ 00000010 082091E5 LDR R2,[R1, #+8] \ 00000014 283090E5 LDR R3,[R0, #+40] \ 00000018 030052E1 CMP R2,R3 \ 0000001C 2400001A BNE ??maincsm_onmessage_1 654 { 655 { 656 csm->csm.state=-3; \ 00000020 0220E0E3 MVN R2,#+2 \ 00000024 102080E5 STR R2,[R0, #+16] 657 } 658 } 659 } 660 if (msg->msg==MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_0: \ 00000028 F200D1E1 LDRSH R0,[R1, #+2] \ 0000002C F120A0E3 MOV R2,#+241 \ 00000030 C02F82E3 ORR R2,R2,#0x300 \ 00000034 020050E1 CMP R0,R2 \ 00000038 1D00001A BNE ??maincsm_onmessage_1 661 { 662 extern const char *successed_config_filename; 663 if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) \ 0000003C 080091E5 LDR R0,[R1, #+8] \ 00000040 74109FE5 LDR R1,??maincsm_onmessage_2 ;; successed_config_filename \ 00000044 001091E5 LDR R1,[R1, #+0] \ ??maincsm_onmessage_3: \ 00000048 0020D1E5 LDRB R2,[R1, #+0] \ 0000004C 610052E3 CMP R2,#+97 \ 00000050 010000BA BLT ??maincsm_onmessage_4 \ 00000054 7B0052E3 CMP R2,#+123 \ 00000058 202042B2 SUBLT R2,R2,#+32 \ ??maincsm_onmessage_4: \ 0000005C 0030D0E5 LDRB R3,[R0, #+0] \ 00000060 011081E2 ADD R1,R1,#+1 \ 00000064 610053E3 CMP R3,#+97 \ 00000068 010000BA BLT ??maincsm_onmessage_5 \ 0000006C 7B0053E3 CMP R3,#+123 \ 00000070 203043B2 SUBLT R3,R3,#+32 \ ??maincsm_onmessage_5: \ 00000074 010080E2 ADD R0,R0,#+1 \ 00000078 033052E0 SUBS R3,R2,R3 \ 0000007C 0C00001A BNE ??maincsm_onmessage_1 \ 00000080 000052E3 CMP R2,#+0 \ 00000084 EFFFFF1A BNE ??maincsm_onmessage_3 664 { 665 InitConfig(); 666 GeneralFunc_flag1(id_ed,1); \ 00000088 ........ LDR R4,??DataTable16 ;; pos_desc \ 0000008C ........ _BLF InitConfig,??InitConfig??rA \ 00000090 180194E5 LDR R0,[R4, #+280] \ 00000094 0110A0E3 MOV R1,#+1 \ 00000098 3D0100EF SWI +317 667 DrawText(file,codepage); \ 0000009C 201194E5 LDR R1,[R4, #+288] \ 000000A0 380194E5 LDR R0,[R4, #+312] \ 000000A4 ........ BL DrawText 668 ShowMSG(1,(int)"TextReader config updated!"); \ 000000A8 10109FE5 LDR R1,??maincsm_onmessage_2+0x4 ;; `?` \ 000000AC 0100A0E3 MOV R0,#+1 \ 000000B0 480100EF SWI +328 669 } 670 } 671 return(1); \ ??maincsm_onmessage_1: \ 000000B4 0100A0E3 MOV R0,#+1 \ 000000B8 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onmessage_2: \ 000000BC ........ DC32 successed_config_filename \ 000000C0 ........ DC32 `?` 672 } 673 \ In segment DATA_Z, align 4, align-sorted 674 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 \ In segment DATA_C, align 4, align-sorted \ per_t: \ 00000000 257400 DC8 "%t" \ per_s: \ 00000003 257300 DC8 "%s" \ 00000006 0000 DC8 0, 0 \ 00000008 54523A202577 DC8 "TR: %w" \ 00 \ 0000000F 00 DC8 0 \ 00000010 0AD0E0E7ECE5 DC8 "\012\320\340\347\354\345\360:\012" \ F03A0A00 \ 0000001A 0000 DC8 0, 0 \ 0000001C 303A5C54656D DC8 "0:\\Temp\\" \ 705C00 \ 00000025 000000 DC8 0, 0, 0 \ 00000028 C8ECFF3A0A00 DC8 "\310\354\377:\012" \ 0000002E 0000 DC8 0, 0 \ 00000030 6C696E652E2E DC8 "line..." \ 2E00 \ 00000038 5361766500 DC8 "Save" \ 0000003D 000000 DC8 0, 0, 0 675 676 const struct 677 { 678 CSM_DESC maincsm; 679 WSHDR maincsm_name; 680 }MAINCSM = \ MAINCSM: \ 00000040 ............ DC32 maincsm_onmessage, maincsm_oncreate, maincsm_onclose, 44, 1 \ ............ \ 2C0000000100 \ 0000 \ 00000054 ............ DC32 minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ ....CCCCAA55 \ 55AA33330000 \ 0000 \ 00000068 8B00 DC16 139 \ 0000006A 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ empty_str: \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ Canvas: \ 00000000 000000008300 DC16 0, 0, 131, 172 \ AC00 \ In segment DATA_I, align 4, align-sorted \ pos_desc: \ 00000000 DS8 56 \ 00000038 REQUIRE `?` \ edit_desc: \ 00000038 DS8 56 \ 00000070 REQUIRE `?` \ new_file_desc: \ 00000070 DS8 56 \ 000000A8 REQUIRE `?` \ pos_hdr: \ 000000A8 DS8 20 \ 000000BC REQUIRE `?` \ disk_prop_hdr: \ 000000BC DS8 20 \ 000000D0 REQUIRE `?` \ new_file_hdr: \ 000000D0 DS8 20 \ 000000E4 REQUIRE `?` \ ec: \ 000000E4 DS8 44 \ 00000110 REQUIRE `?` \ maincsm_id: \ 00000110 DS8 4 \ 00000114 REQUIRE `?` \ ws_edit: \ 00000114 DS8 4 \ 00000118 REQUIRE `?` \ id_ed: \ 00000118 DS8 4 \ 0000011C REQUIRE `?` \ id_ed2: \ 0000011C DS8 4 \ 00000120 REQUIRE `?` \ codepage: \ 00000120 DS8 4 \ 00000124 REQUIRE `?` \ curpos: \ 00000124 DS8 4 \ 00000128 REQUIRE `?` \ total_symb: \ 00000128 DS8 4 \ 0000012C REQUIRE `?` \ file_size: \ 0000012C DS8 4 \ 00000130 REQUIRE `?` \ f: \ 00000130 DS8 4 \ 00000134 REQUIRE `?` \ file_name: \ 00000134 DS8 4 \ 00000138 REQUIRE `?` \ file: \ 00000138 DS8 4 \ 0000013C REQUIRE `?` \ new_file_id: \ 0000013C DS8 4 \ 00000140 REQUIRE `?` 681 { 682 { 683 maincsm_onmessage, 684 maincsm_oncreate, 685 #ifdef NEWSGOLD 686 0, 687 0, 688 0, 689 0, 690 #endif 691 maincsm_onclose, 692 sizeof(MAIN_CSM), 693 1, 694 &minus11 695 }, 696 { 697 maincsm_name_body, 698 NAMECSM_MAGIC1, 699 NAMECSM_MAGIC2, 700 0x0, 701 139 702 } 703 }; 704 705 WSHDR *ws_name; \ ws_name: \ 00000140 DS8 4 \ 00000144 REQUIRE `?` \ tmr: \ 00000144 DS8 16 \ 00000154 REQUIRE `?` \ info: \ 00000154 DS8 1024 \ 00000554 REQUIRE `?` \ exe_name: \ 00000554 DS8 128 \ 000005D4 REQUIRE `?` \ hdr_txt: \ 000005D4 DS8 64 \ 00000614 REQUIRE `?` \ 00000614 DS8 8 \ 0000061C REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ ??sk: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ menu_sk: \ 00000000 DS8 24 \ 00000018 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ menu_skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ sk: \ 00000000 DS8 24 \ 00000018 REQUIRE `?_1` \ In segment DATA_I, align 4, align-sorted \ skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ ??sk_1: \ 00000000 DS8 8 \ 00000008 REQUIRE `?_2` \ In segment DATA_I, align 4, align-sorted \ new_file_sk: \ 00000000 DS8 24 \ 00000018 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ new_file_skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 706 \ In segment CODE, align 4, keep-with-next 707 void UpdateCSMname(void) 708 { 709 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"TR: %w",ws_name); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable17 ;; per_t \ 00000004 14109FE5 LDR R1,??UpdateCSMname_0 ;; pos_desc + 320 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 002091E5 LDR R2,[R1, #+0] \ 00000010 081080E2 ADD R1,R0,#+8 \ 00000014 580080E2 ADD R0,R0,#+88 \ 00000018 240100EF SWI +292 710 } \ 0000001C 0080BDE8 POP {PC} ;; return \ ??UpdateCSMname_0: \ 00000020 ........ DC32 pos_desc + 320 711 \ In segment CODE, align 4, keep-with-next 712 int main(char *exename, char *fname) 713 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 714 InitConfig(); 715 /* if(!(file_size=get_file_size(fname)))//Если размер файла равен нулю то выходим! 716 { 717 if(LoadHist()) ShowMenuLast();//Если есть файлы истории 718 else ShowMainMenu();//если нет,то окрываем главное меню) 719 return 1; 720 }*/ 721 file=malloc(128); \ 00000004 ........ LDR R6,??DataTable16 ;; pos_desc \ 00000008 2CD04DE2 SUB SP,SP,#+44 722 if (fname) \ 0000000C ........ LDR R7,??DataTable17 ;; per_t \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 ........ _BLF InitConfig,??InitConfig??rA \ 0000001C 8000A0E3 MOV R0,#+128 \ 00000020 140000EF SWI +20 \ 00000024 380186E5 STR R0,[R6, #+312] \ 00000028 000055E3 CMP R5,#+0 \ 0000002C 1700000A BEQ ??main_0 723 { 724 if (strlen(fname)<128) \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 1B0000EF SWI +27 \ 00000038 800050E3 CMP R0,#+128 \ 0000003C 1400002A BCS ??main_1 725 { 726 strcpy(file,fname); \ 00000040 380196E5 LDR R0,[R6, #+312] \ 00000044 0510A0E1 MOV R1,R5 \ 00000048 1A0000EF SWI +26 727 strcpy(exe_name,exename);//сохраняем путь эльфа для запуска второй копии из меню "последние..." по зеленой кнопке \ 0000004C 0410A0E1 MOV R1,R4 \ 00000050 5400A0E3 MOV R0,#+84 \ 00000054 500E80E3 ORR R0,R0,#0x500 \ 00000058 060080E0 ADD R0,R0,R6 \ 0000005C 1A0000EF SWI +26 728 729 file_name=GetName(file,1); \ 00000060 380196E5 LDR R0,[R6, #+312] \ 00000064 0110A0E3 MOV R1,#+1 \ 00000068 ........ _BLF GetName,??GetName??rA \ 0000006C 340186E5 STR R0,[R6, #+308] 730 731 ws_name=AllocWS(strlen(file_name)); \ 00000070 1B0000EF SWI +27 \ 00000074 250100EF SWI +293 732 wsprintf(ws_name,per_s,file_name); \ 00000078 342196E5 LDR R2,[R6, #+308] \ 0000007C 400186E5 STR R0,[R6, #+320] \ 00000080 031087E2 ADD R1,R7,#+3 \ 00000084 240100EF SWI +292 733 734 LoadINI(); \ 00000088 ........ _BLF LoadINI,??LoadINI??rA \ 0000008C 000000EA B ??main_1 735 } 736 } 737 else 738 { 739 // if(LoadHist()) ShowMenuLast();//Если есть файлы истории 740 // else 741 ShowMainMenu();//если нет,то окрываем главное меню) \ ??main_0: \ 00000090 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 742 } 743 744 MAIN_CSM main_csm; 745 UpdateCSMname(); \ ??main_1: \ 00000094 ........ BL UpdateCSMname 746 LockSched(); \ 00000098 460100EF SWI +326 747 maincsm_id=CreateCSM(&MAINCSM.maincsm,&main_csm,0); \ 0000009C 0020A0E3 MOV R2,#+0 \ 000000A0 0D10A0E1 MOV R1,SP \ 000000A4 400087E2 ADD R0,R7,#+64 \ 000000A8 070100EF SWI +263 \ 000000AC 100186E5 STR R0,[R6, #+272] 748 UnlockSched(); \ 000000B0 470100EF SWI +327 749 return 0; \ 000000B4 0000A0E3 MOV R0,#+0 \ 000000B8 2CD08DE2 ADD SP,SP,#+44 \ 000000BC F080BDE8 POP {R4-R7,PC} ;; return 750 } \ In segment CODE, align 4, keep-with-next \ ??DataTable9: \ 00000000 ........ DC32 MenuCode_id \ In segment CODE, align 4, keep-with-next \ ??DataTable10: \ 00000000 ........ DC32 last_id \ In segment CODE, align 4, keep-with-next \ ??DataTable12: \ 00000000 ........ DC32 per_t \ In segment CODE, align 4, keep-with-next \ ??DataTable16: \ 00000000 ........ DC32 pos_desc \ In segment CODE, align 4, keep-with-next \ ??DataTable17: \ 00000000 ........ DC32 per_t \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 01000000.... DC32 1, pos_onkey, pos_ghook, pos_locret, 0, menu_skt \ ............ \ ........0000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 070000006400 DC32 7, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ `?`: \ 00000038 01000000.... DC32 1, empty_onkey, empty_ghook, empty_locret, 0, skt \ ............ \ ........0000 \ 0000........ \ 00000050 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000058 070000006400 DC32 7, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ `?`: \ 00000070 01000000.... DC32 1, new_file_onkey, new_file_ghook, new_file_locret, 0, menu_skt \ ............ \ ........0000 \ 0000........ \ 00000088 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000090 070000006400 DC32 7, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ `?`: \ 000000A8 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 000000B0 000000000000 DC32 0H, 0, 32767 \ 0000FF7F0000 \ `?`: \ 000000BC 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 000000C4 00000000.... DC32 0H, hdr_txt, 32767 \ ....FF7F0000 \ `?`: \ 000000D0 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 000000D8 00000000.... DC32 0H, `?`, 32767 \ ....FF7F0000 \ `?`: \ 000000E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000104 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 00000110 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000114 00000000 DC32 0H \ `?`: \ 00000118 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000011C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000120 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000124 01000000 DC32 1 \ `?`: \ 00000128 00000000 DC32 0 \ `?`: \ 0000012C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000130 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000134 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000138 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000013C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000140 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000144 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000154 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000164 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000174 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000184 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000194 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000204 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000214 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000224 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000234 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000244 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000254 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000264 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000274 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000284 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000294 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000304 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000314 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000324 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000334 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000344 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000354 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000364 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000374 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000384 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000394 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000404 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000414 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000424 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000434 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000444 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000454 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000464 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000474 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000484 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000494 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000504 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000514 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000524 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000534 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000544 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000554 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000564 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000574 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000584 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000594 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000005D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000604 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000614 FF0F0000 DC16 4095, 0 \ 00000618 ........ DC32 `?` \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 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 FBC0FF7F DC32 2147467515 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 menu_sk, 0 \ 0000 \ In segment DATA_ID, align 4, align-sorted \ `?_1`: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 sk, 0 \ 0000 \ In segment DATA_ID, align 4, align-sorted \ `?_2`: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?` \ 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 FBC0FF7F DC32 2147467515 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 menu_sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E6577206669 DC8 "New file" \ 6C6500 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 20257300 DC8 " %s" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CFF0E0E200 DC8 "\317\360\340\342" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 546578745265 DC8 "TextReader config updated!" \ 616465722063 \ 6F6E66696720 \ 757064617465 \ 642100 \ 0000001B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 437265617465 DC8 "Create" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5A65726F206C DC8 "Zero lenght file!" \ 656E67687420 \ 66696C652100 \ 00000012 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 43616E277420 DC8 "Can't save!:(" \ 73617665213A \ 2800 \ 0000000E 0000 DC8 0, 0 \ 00000010 46696C652073 DC8 "File save!!!" \ 617665212121 \ 00 \ 0000001D 000000 DC8 0, 0, 0 \ 00000020 2E626B7000 DC8 ".bkp" \ 00000025 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4D656E7500 DC8 "Menu" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 0ACFEEE7E8F6 DC8 "\012\317\356\347\350\366\350\377:" \ E8FF3A00 \ 0000000A 0000 DC8 0, 0 \ 0000000C 0AD0E0E7ECE5 DC8 "\012\320\340\347\354\345\360:" \ F03A00 \ 00000015 000000 DC8 0, 0, 0 \ 00000018 D4E0E9EB3A0A DC8 "\324\340\351\353:\012" \ 00 \ 0000001F 00 DC8 0 \ 00000020 257325732025 DC8 "%s%s %s%d b%s %d/%d" \ 732564206225 \ 732025642F25 \ 6400 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CBE5E200 DC8 "\313\345\342" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 476F2100 DC8 "Go!" 751 752 Maximum stack usage in bytes: Function CSTACK -------- ------ CreateNewFile 20 DrawText 60 Killer 0 SaveFile 156 UpdateCSMname 4 empty_ghook 4 empty_locret 0 empty_onkey 40 get_file_size 48 illum 4 main 64 maincsm_onclose 8 maincsm_oncreate 8 maincsm_onmessage 8 new_file_ec 52 new_file_ghook 4 new_file_locret 0 new_file_onkey 100 on_utf8ec 8 pos 44 pos_ghook 4 pos_locret 0 pos_onkey 68 Segment part sizes: Function/Label Bytes -------------- ----- maingui_id 4 minus11 4 my_csm_id 4 per_d 3 icsmd 24 on_utf8ec 84 illum 104 pos_onkey 132 pos_ghook 68 pos_locret 4 pos 308 empty_locret 4 empty_onkey 508 empty_ghook 76 SaveFile 292 get_file_size 40 DrawText 752 CreateNewFile 96 new_file_onkey 160 new_file_ghook 68 new_file_locret 4 new_file_ec 448 Killer 4 maincsm_oncreate 20 maincsm_onclose 44 maincsm_onmessage 196 maincsm_name_body 280 per_t 108 empty_str 1 Canvas 8 pos_desc 1564 sk 8 menu_sk 24 menu_skt 8 sk 24 skt 8 sk 8 new_file_sk 24 new_file_skt 8 UpdateCSMname 36 main 192 ??DataTable9 4 ??DataTable10 4 ??DataTable12 4 ??DataTable16 4 ??DataTable17 4 ? 1564 ? 8 ? 24 ? 8 ?_1 24 ? 8 ?_2 8 ? 24 ? 8 ? 12 ? 4 ? 8 ? 28 ? 8 ? 1 ? 20 ? 40 ? 8 ? 52 ? 4 ? 4 Others 260 3 896 bytes in segment CODE 313 bytes in segment DATA_C 1 676 bytes in segment DATA_I 1 676 bytes in segment DATA_ID 312 bytes in segment DATA_Z 24 bytes in segment INITTAB 3 660 bytes of CODE memory (+ 260 bytes shared) 1 989 bytes of CONST memory 1 988 bytes of DATA memory Errors: none Warnings: none