############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 22/Sep/2009 22:24:50 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\pasha\elf\_MY_PROJECT_\weathe2\main.c # # Command line = D:\pasha\elf\_MY_PROJECT_\weathe2\main.c -D # # NEWSGOLD -D ELKA -lC D:\pasha\elf\_MY_PROJECT_\weath # # e2\Release_ELKA\List\ -o D:\pasha\elf\_MY_PROJECT_\w # # eathe2\Release_ELKA\Obj\ -s9 --no_unroll # # --no_clustering --cpu_mode arm --endian little # # --cpu ARM926EJ-S --stack_align 4 --interwork -e # # --fpu None -I "D:\pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\pasha\elf\_MY_PROJECT_\weathe2\Release_ELKA\List\ # # main.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\weathe2\Release_ELKA\Obj\m # # ain.r79 # # # # # ############################################################################## D:\pasha\elf\_MY_PROJECT_\weathe2\main.c 1 #include "..\inc\swilib.h" 2 #include "conf_loader.h" 3 #include "print.h" 4 5 #define IPC_WEATH_NAME "MailWeather" 6 #define IPC_UPDATE_STAT 1 7 #define BUFSIZE 16383 8 9 #define LOG 10 \ In segment DATA_C, align 4, align-sorted 11 const char ipc_my_name[32]=IPC_WEATH_NAME; \ ipc_my_name: \ 00000000 4D61696C5765 DC8 "MailWeather" \ 617468657200 \ 0000000C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 000000000000 \ 0000 \ In segment DATA_C, align 4, align-sorted 12 const IPC_REQ gipc={ipc_my_name,ipc_my_name,NULL}; \ gipc: \ 00000000 ............ DC32 ipc_my_name, ipc_my_name, 0H \ ....00000000 \ In segment DATA_C, align 4, align-sorted 13 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 14 15 typedef struct 16 { 17 CSM_RAM csm; 18 }MAIN_CSM; 19 20 21 extern void kill_data(void *p, void (*func_p)(void *)); 22 23 #pragma inline=forced 24 25 int toupper(int c) 26 { 27 if ((c>='a')&&(c<='z')) c+='A'-'a'; 28 return(c); 29 } 30 \ In segment CODE, align 4, keep-with-next 31 int strcmp_nocase(const char *s1,const char *s2) 32 { 33 int i; 34 int c; 35 while(!(i=(c=toupper(*s1++))-toupper(*s2++))) if (!c) break; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 0020D0E5 LDRB R2,[R0, #+0] \ 00000004 610052E3 CMP R2,#+97 \ 00000008 010000BA BLT ??strcmp_nocase_1 \ 0000000C 7B0052E3 CMP R2,#+123 \ 00000010 202042B2 SUBLT R2,R2,#+32 \ ??strcmp_nocase_1: \ 00000014 00C0D1E5 LDRB R12,[R1, #+0] \ 00000018 010080E2 ADD R0,R0,#+1 \ 0000001C 0230A0E1 MOV R3,R2 \ 00000020 61005CE3 CMP R12,#+97 \ 00000024 010000BA BLT ??strcmp_nocase_2 \ 00000028 7B005CE3 CMP R12,#+123 \ 0000002C 20C04CB2 SUBLT R12,R12,#+32 \ ??strcmp_nocase_2: \ 00000030 011081E2 ADD R1,R1,#+1 \ 00000034 0C2052E0 SUBS R2,R2,R12 \ 00000038 0100001A BNE ??strcmp_nocase_3 \ 0000003C 000053E3 CMP R3,#+0 \ 00000040 EEFFFF1A BNE ??strcmp_nocase_0 36 return(i); \ ??strcmp_nocase_3: \ 00000044 0200A0E1 MOV R0,R2 \ 00000048 1EFF2FE1 BX LR ;; return 37 } 38 \ In segment DATA_Z, align 4, align-sorted 39 char temp[32]; \ temp: \ 00000000 DS8 32 \ In segment DATA_Z, align 4, align-sorted 40 char speed[32]; \ speed: \ 00000000 DS8 32 \ In segment DATA_Z, align 4, align-sorted 41 char davlenie[32]; \ davlenie: \ 00000000 DS8 32 \ In segment DATA_Z, align 4, align-sorted 42 char vlaznost[32]; \ vlaznost: \ 00000000 DS8 32 \ In segment DATA_Z, align 4, align-sorted 43 char prognoze[128]; \ prognoze: \ 00000000 DS8 128 \ In segment DATA_Z, align 4, align-sorted 44 char ICON[128]; \ ICON: \ 00000000 DS8 128 \ In segment DATA_Z, align 4, align-sorted 45 char buf[BUFSIZE+1]; \ buf: \ 00000000 DS8 16384 46 /* 47 typedef struct 48 { 49 int daystate;//утро,день,вечер,ночь 50 char 51 52 }WEATHER; 53 */ \ In segment DATA_Z, align 4, align-sorted 54 int sock; \ sock: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 55 int connect_state=0; \ connect_state: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 56 int pbuf=0; \ pbuf: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 57 int traf=0; \ traf: \ 00000000 DS8 4 58 \ In segment DATA_C, align 1, align-sorted 59 const char per_d[]="%d"; \ per_d: \ 00000000 256400 DC8 "%d" \ In segment DATA_C, align 1, align-sorted 60 const char per_s[]="%s"; \ per_s: \ 00000000 257300 DC8 "%s" 61 62 extern const int fullfont; 63 64 extern const unsigned int date_X; 65 extern const unsigned int date_Y; 66 extern const unsigned int weather_X; 67 extern const unsigned int weather_Y; 68 extern const unsigned int date_X2; 69 extern const unsigned int date_Y2; 70 extern const unsigned int date_X3; 71 extern const unsigned int date_Y3; 72 extern const unsigned int date_X4; 73 extern const unsigned int date_Y4; 74 extern const unsigned int date_X5; 75 extern const unsigned int date_Y5; 76 extern const char color[]; 77 extern const unsigned int refresh; 78 extern const int ENA_HELLO_MSG; 79 extern const int ENA_MSG; 80 extern const int show_temp; 81 extern const int show_speed; 82 extern const int show_prognoze; 83 extern const int show_davlenie; 84 extern const int show_vlaznost; 85 86 extern const char str_vlaznost[]; 87 extern const char str_davlenie[]; 88 extern const char str_temp[]; 89 extern const char id_tower[]; 90 extern const char weather_img_path[]; 91 92 extern const int IKONA; 93 extern const int chekeris1; 94 extern const int chekeris2; 95 extern const int chekeris3; 96 extern const int chekeris4; 97 extern const int chekeris5; 98 99 //------------- pngfont -------------// 100 101 extern const char fontpath[]; 102 extern const int align1; 103 extern const int align2; 104 extern const int align3; 105 extern const int align4; 106 extern const int align5; 107 extern const unsigned int space; 108 extern const unsigned int font; 109 \ In segment DATA_Z, align 4, align-sorted 110 void *canvasdata; \ canvasdata: \ 00000000 DS8 4 111 112 //-------------pngfont end------------// 113 \ In segment DATA_Z, align 4, align-sorted 114 GBSTMR mytmr; \ mytmr: \ 00000000 DS8 16 115 116 void start_again(void); 117 \ In segment CODE, align 4, keep-with-next 118 void create_connect(void) 119 { 120 zeromem(buf,sizeof(buf)); \ create_connect: \ 00000000 ........ LDR R0,??DataTable20 ;; buf \ 00000004 F0472DE9 PUSH {R4-R10,LR} 121 SOCK_ADDR sa; 122 connect_state=0; \ 00000008 ........ LDR R4,??DataTable13 ;; connect_state 123 pbuf=0; 124 sock=socket(1,1,0); \ 0000000C ........ LDR R5,??DataTable14 ;; sock \ 00000010 10D04DE2 SUB SP,SP,#+16 125 if (sock!=-1) \ 00000014 ........ LDR R6,??DataTable27 ;; mytmr \ 00000018 ........ LDR R8,??DataTable19 ;; start_again \ 0000001C 401CA0E3 MOV R1,#+16384 \ 00000020 1D0100EF SWI +285 \ 00000024 ........ LDR R1,??DataTable15 ;; pbuf \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 000084E5 STR R0,[R4, #+0] \ 00000030 000081E5 STR R0,[R1, #+0] \ 00000034 0020A0E3 MOV R2,#+0 \ 00000038 0110A0E3 MOV R1,#+1 \ 0000003C 0100A0E1 MOV R0,R1 \ 00000040 730100EF SWI +371 \ 00000044 000085E5 STR R0,[R5, #+0] \ 00000048 A070A0E3 MOV R7,#+160 \ 0000004C C87D87E3 ORR R7,R7,#0x3200 \ 00000050 0090E0E3 MVN R9,#+0 \ 00000054 090050E1 CMP R0,R9 \ 00000058 1000000A BEQ ??create_connect_0 126 { 127 sa.family=1; \ 0000005C 01A0A0E3 MOV R10,#+1 \ 00000060 B0A0CDE1 STRH R10,[SP, #+0] 128 sa.port=htons(80); \ 00000064 5000A0E3 MOV R0,#+80 \ 00000068 7A0100EF SWI +378 \ 0000006C B200CDE1 STRH R0,[SP, #+2] 129 // sa.ip=htonl(IP_ADDR(194,67,45,236));//94.100.178.193 130 sa.ip=htonl(IP_ADDR(94,100,178,193)); \ 00000070 3C009FE5 LDR R0,??create_connect_1 ;; 0x5e64b2c1 \ 00000074 7B0100EF SWI +379 \ 00000078 04008DE5 STR R0,[SP, #+4] 131 if (connect(sock,&sa,sizeof(sa))!=-1) \ 0000007C 000095E5 LDR R0,[R5, #+0] \ 00000080 1020A0E3 MOV R2,#+16 \ 00000084 0D10A0E1 MOV R1,SP \ 00000088 740100EF SWI +372 \ 0000008C 090050E1 CMP R0,R9 132 { 133 connect_state=1; \ 00000090 00A08415 STRNE R10,[R4, #+0] \ 00000094 FF87BD18 POPNE {R0-R10,PC} 134 } 135 else 136 { 137 closesocket(sock); \ 00000098 000095E5 LDR R0,[R5, #+0] \ 0000009C 760100EF SWI +374 138 GBS_StartTimerProc(&mytmr, 12960, start_again); 139 } 140 } 141 else 142 GBS_StartTimerProc(&mytmr, 12960, start_again); \ ??create_connect_0: \ 000000A0 0820A0E1 MOV R2,R8 \ 000000A4 0710A0E1 MOV R1,R7 \ 000000A8 0600A0E1 MOV R0,R6 \ 000000AC 4D0000EF SWI +77 143 } \ 000000B0 FF87BDE8 POP {R0-R10,PC} ;; return \ ??create_connect_1: \ 000000B4 C1B2645E DC32 0x5e64b2c1 144 \ In segment CODE, align 4, keep-with-next 145 void start_again() 146 { \ start_again: \ 00000000 00402DE9 PUSH {LR} 147 if(IsGPRSConnected()) \ 00000004 A80000EF SWI +168 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0200000A BEQ ??start_again_0 148 { 149 SUBPROC((void *)create_connect); \ 00000010 ........ LDR R0,??DataTable6 ;; create_connect \ 00000014 710100EF SWI +369 \ 00000018 0080BDE8 POP {PC} 150 } 151 else 152 GBS_StartTimerProc(&mytmr, 2160, start_again); \ ??start_again_0: \ 0000001C ........ LDR R2,??DataTable19 ;; start_again \ 00000020 ........ LDR R0,??DataTable27 ;; mytmr \ 00000024 871EA0E3 MOV R1,#+2160 \ 00000028 4D0000EF SWI +77 153 } \ 0000002C 0080BDE8 POP {PC} ;; return 154 \ In segment CODE, align 4, keep-with-next 155 void send_req(void) 156 { \ send_req: \ 00000000 10402DE9 PUSH {R4,LR} 157 char *req_buf=malloc(1200); \ 00000004 4B0EA0E3 MOV R0,#+1200 \ 00000008 140000EF SWI +20 158 sprintf(req_buf,"GET /index.xhtml?&city=%s HTTP/1.1\n" 159 "Accept-Language: en-us\n" 160 "Accept-Encoding: gzip, deflate\n" 161 "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\n" 162 "Host: wap.weather.mail.ru\n" 163 "Connection: Close\n" 164 "\n" 165 , id_tower); \ 0000000C 40209FE5 LDR R2,??send_req_0 ;; id_tower \ 00000010 40109FE5 LDR R1,??send_req_0+0x4 ;; `?` \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 160000EF SWI +22 166 send(sock,req_buf,strlen(req_buf),0); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 \ 00000024 0020A0E1 MOV R2,R0 \ 00000028 ........ LDR R0,??DataTable14 ;; sock \ 0000002C 0030A0E3 MOV R3,#+0 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 0410A0E1 MOV R1,R4 \ 00000038 790100EF SWI +377 167 connect_state=2; \ 0000003C ........ LDR R0,??DataTable13 ;; connect_state \ 00000040 0210A0E3 MOV R1,#+2 \ 00000044 001080E5 STR R1,[R0, #+0] 168 mfree(req_buf); \ 00000048 0400A0E1 MOV R0,R4 \ 0000004C 150000EF SWI +21 169 } \ 00000050 1080BDE8 POP {R4,PC} ;; return \ ??send_req_0: \ 00000054 ........ DC32 id_tower \ 00000058 ........ DC32 `?` 170 \ In segment CODE, align 4, keep-with-next 171 void end_socket(void) 172 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 173 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable14 ;; sock \ 00000008 000094E5 LDR R0,[R4, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD48 POPMI {R4,PC} 174 { 175 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 176 closesocket(sock); \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 760100EF SWI +374 177 connect_state=0; \ 00000024 ........ LDR R0,??DataTable13 ;; connect_state \ 00000028 0010A0E3 MOV R1,#+0 \ 0000002C 001080E5 STR R1,[R0, #+0] 178 } 179 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 180 \ In segment DATA_Z, align 4, align-sorted 181 int buf_len=0; \ buf_len: \ 00000000 DS8 4 182 \ In segment CODE, align 4, keep-with-next 183 void get_answer(void) 184 { 185 int i=pbuf; 186 if (connect_state<2) return; \ get_answer: \ 00000000 ........ LDR R0,??DataTable13 ;; connect_state \ 00000004 00402DE9 PUSH {LR} \ 00000008 40DE4DE2 SUB SP,SP,#+1024 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 020050E3 CMP R0,#+2 \ 00000014 150000BA BLT ??get_answer_0 187 char s[1024]; 188 traf+=i=recv(sock,s,sizeof(s),0); \ 00000018 ........ LDR R0,??DataTable14 ;; sock \ 0000001C 0030A0E3 MOV R3,#+0 \ 00000020 000090E5 LDR R0,[R0, #+0] \ 00000024 402EA0E3 MOV R2,#+1024 \ 00000028 0D10A0E1 MOV R1,SP \ 0000002C 780100EF SWI +376 \ 00000030 40109FE5 LDR R1,??get_answer_1 ;; traf 189 if(i>0) \ 00000034 010050E3 CMP R0,#+1 \ 00000038 002091E5 LDR R2,[R1, #+0] \ 0000003C 022080E0 ADD R2,R0,R2 \ 00000040 002081E5 STR R2,[R1, #+0] \ 00000044 080000BA BLT ??get_answer_2 190 { 191 pbuf+=i; \ 00000048 ........ LDR R1,??DataTable15 ;; pbuf \ 0000004C 002091E5 LDR R2,[R1, #+0] \ 00000050 020080E0 ADD R0,R0,R2 \ 00000054 000081E5 STR R0,[R1, #+0] 192 strcat(buf,s); \ 00000058 ........ LDR R0,??DataTable20 ;; buf \ 0000005C 0D10A0E1 MOV R1,SP \ 00000060 170000EF SWI +23 \ 00000064 40DE8DE2 ADD SP,SP,#+1024 \ 00000068 0080BDE8 POP {PC} 193 } 194 else 195 { 196 end_socket(); \ ??get_answer_2: \ 0000006C ........ BL end_socket \ ??get_answer_0: \ 00000070 40DE8DE2 ADD SP,SP,#+1024 ;; stack cleaning \ 00000074 0080BDE8 POP {PC} ;; return \ ??get_answer_1: \ 00000078 ........ DC32 traf 197 } 198 } 199 200 201 #ifdef LOG \ In segment CODE, align 4, keep-with-next 202 void save_to_file() 203 { \ save_to_file: \ 00000000 10402DE9 PUSH {R4,LR} 204 volatile int hFile; 205 unsigned int io_error = 0; 206 unsigned int ul; 207 FSTATS stat; 208 GetFileStats("4:\\debug_weather.txt",&stat,&ul); \ 00000004 74409FE5 LDR R4,??save_to_file_0 ;; `?` \ 00000008 34D04DE2 SUB SP,SP,#+52 \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 00108DE5 STR R1,[SP, #+0] \ 00000014 08208DE2 ADD R2,SP,#+8 \ 00000018 0C108DE2 ADD R1,SP,#+12 \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 840000EF SWI +132 209 hFile = fopen("4:\\debug_weather.txt",A_ReadWrite+A_Create+A_Truncate,P_READ+P_WRITE, &io_error); \ 00000024 0D30A0E1 MOV R3,SP \ 00000028 602FA0E3 MOV R2,#+384 \ 0000002C 0210A0E3 MOV R1,#+2 \ 00000030 C01F81E3 ORR R1,R1,#0x300 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 0A0000EF SWI +10 \ 0000003C 04008DE5 STR R0,[SP, #+4] 210 if(hFile!=-1) \ 00000040 04009DE5 LDR R0,[SP, #+4] \ 00000044 010070E3 CMN R0,#+1 \ 00000048 0A00000A BEQ ??save_to_file_1 211 { 212 fwrite(hFile, buf, strlen(buf), &io_error); \ 0000004C ........ LDR R4,??DataTable20 ;; buf \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1B0000EF SWI +27 \ 00000058 0020A0E1 MOV R2,R0 \ 0000005C 04009DE5 LDR R0,[SP, #+4] \ 00000060 0D30A0E1 MOV R3,SP \ 00000064 0410A0E1 MOV R1,R4 \ 00000068 0C0000EF SWI +12 213 fclose(hFile, &io_error); \ 0000006C 04009DE5 LDR R0,[SP, #+4] \ 00000070 0D10A0E1 MOV R1,SP \ 00000074 0D0000EF SWI +13 214 } 215 } \ ??save_to_file_1: \ 00000078 34D08DE2 ADD SP,SP,#+52 ;; stack cleaning \ 0000007C 1080BDE8 POP {R4,PC} ;; return \ ??save_to_file_0: \ 00000080 ........ DC32 `?` 216 \ In segment CODE, align 4, keep-with-next 217 void log(const char *s) 218 { \ log: \ 00000000 30402DE9 PUSH {R4,R5,LR} 219 volatile int hFile; 220 unsigned int io_error = 0; 221 unsigned int ul; 222 FSTATS stat; 223 GetFileStats("4:\\weather.txt",&stat,&ul); \ 00000004 88509FE5 LDR R5,??log_0+0x4 ;; `?` \ 00000008 34D04DE2 SUB SP,SP,#+52 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 00108DE5 STR R1,[SP, #+0] \ 00000018 08208DE2 ADD R2,SP,#+8 \ 0000001C 0C108DE2 ADD R1,SP,#+12 \ 00000020 0500A0E1 MOV R0,R5 \ 00000024 840000EF SWI +132 224 hFile = fopen("4:\\weather.txt",A_ReadWrite+A_Create+A_Append,P_READ+P_WRITE, &io_error); \ 00000028 0D30A0E1 MOV R3,SP \ 0000002C 602FA0E3 MOV R2,#+384 \ 00000030 761042E2 SUB R1,R2,#+118 \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 0A0000EF SWI +10 \ 0000003C 04008DE5 STR R0,[SP, #+4] 225 if(hFile!=-1) \ 00000040 04009DE5 LDR R0,[SP, #+4] \ 00000044 010070E3 CMN R0,#+1 \ 00000048 0E00000A BEQ ??log_1 226 { 227 fwrite(hFile, s, strlen(s), &io_error); \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 1B0000EF SWI +27 \ 00000054 0D30A0E1 MOV R3,SP \ 00000058 0020A0E1 MOV R2,R0 \ 0000005C 04009DE5 LDR R0,[SP, #+4] \ 00000060 0410A0E1 MOV R1,R4 \ 00000064 0C0000EF SWI +12 228 fwrite(hFile, "\n", 1, &io_error); \ 00000068 04009DE5 LDR R0,[SP, #+4] \ 0000006C 0D30A0E1 MOV R3,SP \ 00000070 0120A0E3 MOV R2,#+1 \ 00000074 051F8FE2 ADR R1,??log_0 ;; "\n" \ 00000078 0C0000EF SWI +12 229 fclose(hFile, &io_error); \ 0000007C 04009DE5 LDR R0,[SP, #+4] \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 0D0000EF SWI +13 230 } 231 } \ ??log_1: \ 00000088 34D08DE2 ADD SP,SP,#+52 ;; stack cleaning \ 0000008C 3080BDE8 POP {R4,R5,PC} ;; return \ ??log_0: \ 00000090 0A000000 DC8 "\n",+0,+0 \ 00000094 ........ DC32 `?` 232 #endif 233 234 \ In segment CODE, align 4, keep-with-next 235 void utf82win(char*d,const char *s) 236 { \ utf82win: \ 00000000 0020D1E5 LDRB R2,[R1, #+0] \ 00000004 000052E3 CMP R2,#+0 \ 00000008 1700000A BEQ ??utf82win_0 237 for (; *s; s+=2) 238 { 239 unsigned char ub = *s, lb = *(s+1); \ ??utf82win_1: \ 0000000C 0020D1E5 LDRB R2,[R1, #+0] \ 00000010 0130D1E5 LDRB R3,[R1, #+1] 240 if (ub == 208) \ 00000014 D00052E3 CMP R2,#+208 \ 00000018 0400001A BNE ??utf82win_2 241 if (lb != 0x81) \ 0000001C 810053E3 CMP R3,#+129 \ 00000020 E820A003 MOVEQ R2,#+232 242 {*d = lb + 48; d++;} \ 00000024 30208312 ADDNE R2,R3,#+48 \ ??utf82win_3: \ 00000028 ........ STRB R2,[R0], #+1 \ 0000002C 0B0000EA B ??utf82win_4 243 else 244 {*d = 'и'; d++;} 245 246 if (ub == 209) \ ??utf82win_2: \ 00000030 D10052E3 CMP R2,#+209 \ 00000034 0500001A BNE ??utf82win_5 247 if (lb != 0x91) \ 00000038 910053E3 CMP R3,#+145 248 {*d = lb + 112; d++;} \ 0000003C 70208312 ADDNE R2,R3,#+112 \ 00000040 ........ STRBNE R2,[R0], #+1 \ 00000044 0500001A BNE ??utf82win_4 249 else 250 {*d = '¬'; d++;} \ 00000048 AC20A0E3 MOV R2,#+172 \ 0000004C F5FFFFEA B ??utf82win_3 \ ??utf82win_5: \ 00000050 5B0053E3 CMP R3,#+91 \ 00000054 51005313 CMPNE R3,#+81 251 252 if ((ub != 208) && (ub != 209) && (lb != 91) && (lb != 81)) 253 { 254 *d = ub; \ 00000058 ........ STRBNE R2,[R0], #+1 255 d++; 256 s--; \ 0000005C 01104112 SUBNE R1,R1,#+1 257 } 258 } \ ??utf82win_4: \ 00000060 0220F1E5 LDRB R2,[R1, #+2]! \ 00000064 000052E3 CMP R2,#+0 \ 00000068 E7FFFF1A BNE ??utf82win_1 259 *d = 0; \ ??utf82win_0: \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 0010C0E5 STRB R1,[R0, #+0] 260 } \ 00000074 1EFF2FE1 BX LR ;; return 261 \ In segment DATA_Z, align 4, align-sorted 262 GBSTMR delaytmr; \ delaytmr: \ 00000000 DS8 16 263 //int test=0; 264 /* 265
266

6.04, понедельник

267
268 Сейчасясно 269 +9° 270
271
272
757 mmHg, 42%, Ю 1 м/с
273 ясно 274
275 */ 276 //int forecast = 0, forecasttext = 0; 277 278 279 280 #define _pic 0 281 #define _temp 1 282 #define _dav 2 283 #define _speed 3 284 #define _vlaznost 4 285 #define _comfort 5 286 \ In segment DATA_Z, align 4, align-sorted 287 int flags[6]={0,0,0,0,0,0}; \ flags: \ 00000000 DS8 24 \ In segment CODE, align 4, keep-with-next 288 void Parsing() 289 { \ Parsing: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 290 #ifdef LOG 291 save_to_file(); 292 log("start parsing"); 293 #endif 294 for(int i=0;i<6;i++) flags[i] = 0; //сразу обнуляем \ 00000004 ........ LDR R6,??DataTable18 ;; flags \ 00000008 BCD04DE2 SUB SP,SP,#+188 \ 0000000C 0070A0E3 MOV R7,#+0 \ 00000010 ........ BL save_to_file \ 00000014 7C049FE5 LDR R0,??Parsing_0+0x4 ;; `?` \ 00000018 ........ BL log \ 0000001C 0000A0E3 MOV R0,#+0 \ ??Parsing_1: \ 00000020 007186E7 STR R7,[R6, +R0, LSL #+2] \ 00000024 010080E2 ADD R0,R0,#+1 \ 00000028 060050E3 CMP R0,#+6 \ 0000002C FBFFFFBA BLT ??Parsing_1 295 char *s1,*s2; 296 char forecast[]="forecast"; \ 00000030 64149FE5 LDR R1,??Parsing_0+0x8 ;; `?` 297 char forecasttext[]="forecasttext"; 298 int i = 0; 299 //если находим две половинка текста для парсинга... 300 if((s1=strstr(buf,forecast)) && (s2=strstr(buf,forecasttext))) \ 00000034 ........ LDR R8,??DataTable19 ;; start_again \ 00000038 1C0091E8 LDM R1,{R2-R4} \ 0000003C 5C149FE5 LDR R1,??Parsing_0+0xC ;; `?` \ 00000040 0D00A0E1 MOV R0,SP \ 00000044 1C0080E8 STM R0,{R2-R4} \ 00000048 3C0091E8 LDM R1,{R2-R5} \ 0000004C AC008DE2 ADD R0,SP,#+172 \ 00000050 3C0080E8 STM R0,{R2-R5} \ 00000054 ........ LDR R5,??DataTable20 ;; buf \ 00000058 00A0A0E3 MOV R10,#+0 \ 0000005C 0D10A0E1 MOV R1,SP \ 00000060 0500A0E1 MOV R0,R5 \ 00000064 180100EF SWI +280 \ 00000068 0040B0E1 MOVS R4,R0 \ 0000006C FE00000A BEQ ??Parsing_2 \ 00000070 AC108DE2 ADD R1,SP,#+172 \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 180100EF SWI +280 \ 0000007C 0050B0E1 MOVS R5,R0 \ 00000080 F900000A BEQ ??Parsing_2 301 { 302 if(s1=strstr(s1,"` \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 180100EF SWI +280 \ 00000090 0040B0E1 MOVS R4,R0 \ 00000094 0190A0E3 MOV R9,#+1 \ 00000098 2500000A BEQ ??Parsing_3 303 { 304 #ifdef LOG 305 log("pictures"); \ 0000009C 04049FE5 LDR R0,??Parsing_0+0x14 ;; `?` \ 000000A0 ........ BL log 306 #endif 307 flags[_pic] = 1; 308 s1+=strlen("` \ 000000B8 1B0000EF SWI +27 \ 000000BC 0B0080E0 ADD R0,R0,R11 \ 000000C0 040080E0 ADD R0,R0,R4 \ 000000C4 014080E2 ADD R4,R0,#+1 309 char picname[32]; 310 zeromem(picname,32); \ 000000C8 2010A0E3 MOV R1,#+32 \ 000000CC 8C008DE2 ADD R0,SP,#+140 \ 000000D0 1D0100EF SWI +285 \ 000000D4 0000D4E5 LDRB R0,[R4, #+0] \ 000000D8 2E0050E3 CMP R0,#+46 \ 000000DC 0600000A BEQ ??Parsing_4 311 while(*s1!='.') 312 { 313 picname[i] = *s1; \ ??Parsing_5: \ 000000E0 ........ LDRB R1,[R4], #+1 \ 000000E4 8C008DE2 ADD R0,SP,#+140 \ 000000E8 0010CAE7 STRB R1,[R10, +R0] 314 i++; 315 *s1++; 316 } \ 000000EC 0000D4E5 LDRB R0,[R4, #+0] \ 000000F0 01A08AE2 ADD R10,R10,#+1 \ 000000F4 2E0050E3 CMP R0,#+46 \ 000000F8 F8FFFF1A BNE ??Parsing_5 317 zeromem(ICON,sizeof(ICON)); \ ??Parsing_4: \ 000000FC ........ LDR R10,??DataTable21 ;; ICON \ 00000100 8010A0E3 MOV R1,#+128 \ 00000104 0A00A0E1 MOV R0,R10 \ 00000108 1D0100EF SWI +285 318 sprintf(ICON,"%s%s.png",weather_img_path,picname); \ 0000010C A0239FE5 LDR R2,??Parsing_0+0x20 ;; weather_img_path \ 00000110 A0139FE5 LDR R1,??Parsing_0+0x24 ;; `?` \ 00000114 8C308DE2 ADD R3,SP,#+140 \ 00000118 0A00A0E1 MOV R0,R10 \ 0000011C 160000EF SWI +22 319 ICON[strlen(ICON)]=0; \ 00000120 0A00A0E1 MOV R0,R10 \ 00000124 1B0000EF SWI +27 \ 00000128 0A70C0E7 STRB R7,[R0, +R10] 320 #ifdef LOG 321 log(ICON); \ 0000012C 0A00A0E1 MOV R0,R10 \ 00000130 ........ BL log 322 #endif 323 } 324 325 if(s1=strstr(s1,">"))//температура \ ??Parsing_3: \ 00000134 80139FE5 LDR R1,??Parsing_0+0x28 ;; `?">` \ 00000138 0400A0E1 MOV R0,R4 \ 0000013C 180100EF SWI +280 \ 00000140 0040B0E1 MOVS R4,R0 \ 00000144 1E00000A BEQ ??Parsing_6 326 { 327 #ifdef LOG 328 log("temperature"); \ 00000148 70039FE5 LDR R0,??Parsing_0+0x2C ;; `?` 329 #endif 330 flags[_temp] = 1; 331 i = 0; \ 0000014C 00A0A0E3 MOV R10,#+0 \ 00000150 ........ BL log 332 s1+=strlen(">` \ 00000168 1B0000EF SWI +27 \ 0000016C 0B0080E0 ADD R0,R0,R11 333 zeromem(temp,sizeof(temp)); \ 00000170 ........ LDR R11,??DataTable57 ;; temp \ 00000174 040080E0 ADD R0,R0,R4 \ 00000178 034080E2 ADD R4,R0,#+3 \ 0000017C 2010A0E3 MOV R1,#+32 \ 00000180 0B00A0E1 MOV R0,R11 \ 00000184 1D0100EF SWI +285 \ 00000188 0000D4E5 LDRB R0,[R4, #+0] \ 0000018C 260050E3 CMP R0,#+38 \ 00000190 0500000A BEQ ??Parsing_7 334 while(*s1 != '&') 335 { 336 temp[i] = *s1; \ ??Parsing_8: \ 00000194 ........ LDRB R0,[R4], #+1 \ 00000198 0B00CAE7 STRB R0,[R10, +R11] 337 *s1++; 338 i++; 339 } \ 0000019C 0000D4E5 LDRB R0,[R4, #+0] \ 000001A0 01A08AE2 ADD R10,R10,#+1 \ 000001A4 260050E3 CMP R0,#+38 \ 000001A8 F9FFFF1A BNE ??Parsing_8 340 temp[strlen(temp)+1] = 0; \ ??Parsing_7: \ 000001AC 0B00A0E1 MOV R0,R11 \ 000001B0 1B0000EF SWI +27 \ 000001B4 0B0080E0 ADD R0,R0,R11 \ 000001B8 0170C0E5 STRB R7,[R0, #+1] 341 #ifdef LOG 342 log(temp); \ 000001BC 0B00A0E1 MOV R0,R11 \ 000001C0 ........ BL log 343 #endif 344 } 345 346 //s2 += strlen(forecasttext); 347 if(s2) 348 { 349 //
350 //
757 mmHg, 42%, Ю 1 м/с
ясно 351 if(s2=strstr(s2,""))//давление \ ??Parsing_6: \ 000001C4 00439FE5 LDR R4,??Parsing_0+0x38 ;; `?">` \ 000001C8 0500A0E1 MOV R0,R5 \ 000001CC 0410A0E1 MOV R1,R4 \ 000001D0 180100EF SWI +280 \ 000001D4 00B0B0E1 MOVS R11,R0 \ 000001D8 1F00000A BEQ ??Parsing_9 352 { 353 #ifdef LOG 354 log("davlenie"); \ 000001DC EC029FE5 LDR R0,??Parsing_0+0x3C ;; `?` 355 #endif 356 flags[_dav] = 1; 357 s2+=strlen("")+1; 358 i=0; 359 zeromem(davlenie,sizeof(davlenie)); \ 000001E0 ........ LDR R5,??DataTable69 ;; davlenie \ 000001E4 ........ BL log \ 000001E8 089086E5 STR R9,[R6, #+8] \ 000001EC 0400A0E1 MOV R0,R4 \ 000001F0 1B0000EF SWI +27 \ 000001F4 0B0080E0 ADD R0,R0,R11 \ 000001F8 01B080E2 ADD R11,R0,#+1 \ 000001FC 2010A0E3 MOV R1,#+32 \ 00000200 0500A0E1 MOV R0,R5 \ 00000204 1D0100EF SWI +285 \ 00000208 0000DBE5 LDRB R0,[R11, #+0] \ 0000020C 00A0A0E3 MOV R10,#+0 \ 00000210 3C0050E3 CMP R0,#+60 \ 00000214 0500000A BEQ ??Parsing_10 360 while(*s2 != '<') 361 { 362 davlenie[i] = *s2; \ ??Parsing_11: \ 00000218 ........ LDRB R0,[R11], #+1 \ 0000021C 0500CAE7 STRB R0,[R10, +R5] 363 *s2++; 364 i++; 365 } \ 00000220 0000DBE5 LDRB R0,[R11, #+0] \ 00000224 01A08AE2 ADD R10,R10,#+1 \ 00000228 3C0050E3 CMP R0,#+60 \ 0000022C F9FFFF1A BNE ??Parsing_11 366 davlenie[strlen(davlenie)+1] = 0; \ ??Parsing_10: \ 00000230 0500A0E1 MOV R0,R5 \ 00000234 1B0000EF SWI +27 \ 00000238 050080E0 ADD R0,R0,R5 \ 0000023C 0170C0E5 STRB R7,[R0, #+1] 367 strcat((char*)(davlenie+strlen(davlenie))," mmHg"); \ 00000240 0500A0E1 MOV R0,R5 \ 00000244 1B0000EF SWI +27 \ 00000248 84129FE5 LDR R1,??Parsing_0+0x40 ;; `?` \ 0000024C 050080E0 ADD R0,R0,R5 \ 00000250 170000EF SWI +23 368 #ifdef LOG 369 log(davlenie); \ 00000254 0500A0E1 MOV R0,R5 \ 00000258 ........ BL log 370 #endif 371 } 372 373 if(s2=strstr(s2,""))//влажность \ ??Parsing_9: \ 0000025C 0410A0E1 MOV R1,R4 \ 00000260 0B00A0E1 MOV R0,R11 \ 00000264 180100EF SWI +280 \ 00000268 00B0B0E1 MOVS R11,R0 \ 0000026C 1F00000A BEQ ??Parsing_12 374 { 375 #ifdef LOG 376 log("vlaznost"); \ 00000270 60029FE5 LDR R0,??Parsing_0+0x44 ;; `?` 377 #endif 378 flags[_vlaznost] = 1; 379 s2+=strlen("")+1; 380 i=0; 381 zeromem(vlaznost,sizeof(vlaznost)); \ 00000274 ........ LDR R5,??DataTable60 ;; vlaznost \ 00000278 ........ BL log \ 0000027C 109086E5 STR R9,[R6, #+16] \ 00000280 0400A0E1 MOV R0,R4 \ 00000284 1B0000EF SWI +27 \ 00000288 0B0080E0 ADD R0,R0,R11 \ 0000028C 01B080E2 ADD R11,R0,#+1 \ 00000290 2010A0E3 MOV R1,#+32 \ 00000294 0500A0E1 MOV R0,R5 \ 00000298 1D0100EF SWI +285 \ 0000029C 0000DBE5 LDRB R0,[R11, #+0] \ 000002A0 00A0A0E3 MOV R10,#+0 \ 000002A4 3C0050E3 CMP R0,#+60 \ 000002A8 0500000A BEQ ??Parsing_13 382 while(*s2 != '<') 383 { 384 vlaznost[i] = *s2; \ ??Parsing_14: \ 000002AC ........ LDRB R0,[R11], #+1 \ 000002B0 0500CAE7 STRB R0,[R10, +R5] 385 *s2++; 386 i++; 387 } \ 000002B4 0000DBE5 LDRB R0,[R11, #+0] \ 000002B8 01A08AE2 ADD R10,R10,#+1 \ 000002BC 3C0050E3 CMP R0,#+60 \ 000002C0 F9FFFF1A BNE ??Parsing_14 388 vlaznost[strlen(vlaznost)+1] = 0; \ ??Parsing_13: \ 000002C4 0500A0E1 MOV R0,R5 \ 000002C8 1B0000EF SWI +27 \ 000002CC 050080E0 ADD R0,R0,R5 \ 000002D0 0170C0E5 STRB R7,[R0, #+1] 389 strcat((char*)(vlaznost+strlen(vlaznost))," %"); \ 000002D4 0500A0E1 MOV R0,R5 \ 000002D8 1B0000EF SWI +27 \ 000002DC 6C1F8FE2 ADR R1,??Parsing_0 ;; " %" \ 000002E0 050080E0 ADD R0,R0,R5 \ 000002E4 170000EF SWI +23 390 #ifdef LOG 391 log(vlaznost); \ 000002E8 0500A0E1 MOV R0,R5 \ 000002EC ........ BL log 392 #endif 393 } 394 395 if(s2=strstr(s2,""))//скорость ветра \ ??Parsing_12: \ 000002F0 0410A0E1 MOV R1,R4 \ 000002F4 0B00A0E1 MOV R0,R11 \ 000002F8 180100EF SWI +280 \ 000002FC 0050B0E1 MOVS R5,R0 \ 00000300 2700000A BEQ ??Parsing_15 396 { 397 #ifdef LOG 398 log("speed veter"); \ 00000304 D0019FE5 LDR R0,??Parsing_0+0x48 ;; `?` 399 #endif 400 char tmp[128]; 401 zeromem(tmp,128); 402 flags[_speed] = 1; 403 s2+=strlen("")+2; 404 i=0; \ 00000308 00A0A0E3 MOV R10,#+0 \ 0000030C ........ BL log \ 00000310 8010A0E3 MOV R1,#+128 \ 00000314 0C008DE2 ADD R0,SP,#+12 \ 00000318 1D0100EF SWI +285 \ 0000031C 0C9086E5 STR R9,[R6, #+12] \ 00000320 0400A0E1 MOV R0,R4 \ 00000324 1B0000EF SWI +27 \ 00000328 050080E0 ADD R0,R0,R5 \ 0000032C 025080E2 ADD R5,R0,#+2 \ 00000330 0000D5E5 LDRB R0,[R5, #+0] \ 00000334 3C0050E3 CMP R0,#+60 \ 00000338 0600000A BEQ ??Parsing_16 405 while(*s2 != '<') 406 { 407 tmp[i] = *s2; \ ??Parsing_17: \ 0000033C ........ LDRB R1,[R5], #+1 \ 00000340 0C008DE2 ADD R0,SP,#+12 \ 00000344 0010CAE7 STRB R1,[R10, +R0] 408 *s2++; 409 i++; 410 } \ 00000348 0000D5E5 LDRB R0,[R5, #+0] \ 0000034C 01A08AE2 ADD R10,R10,#+1 \ 00000350 3C0050E3 CMP R0,#+60 \ 00000354 F8FFFF1A BNE ??Parsing_17 411 412 tmp[strlen(tmp)] = 0; 413 strcat((char*)(tmp+strlen(tmp))," м/с"); 414 tmp[strlen(tmp)] = 0; 415 utf82win(speed,tmp); \ ??Parsing_16: \ 00000358 ........ LDR R4,??DataTable65 ;; speed \ 0000035C 0C008DE2 ADD R0,SP,#+12 \ 00000360 1B0000EF SWI +27 \ 00000364 0C108DE2 ADD R1,SP,#+12 \ 00000368 0170C0E7 STRB R7,[R0, +R1] \ 0000036C 0C008DE2 ADD R0,SP,#+12 \ 00000370 1B0000EF SWI +27 \ 00000374 64119FE5 LDR R1,??Parsing_0+0x4C ;; `?` \ 00000378 0C208DE2 ADD R2,SP,#+12 \ 0000037C 020080E0 ADD R0,R0,R2 \ 00000380 170000EF SWI +23 \ 00000384 0C008DE2 ADD R0,SP,#+12 \ 00000388 1B0000EF SWI +27 \ 0000038C 0C108DE2 ADD R1,SP,#+12 \ 00000390 0170C0E7 STRB R7,[R0, +R1] \ 00000394 0400A0E1 MOV R0,R4 \ 00000398 ........ BL utf82win 416 #ifdef LOG 417 log(speed); \ 0000039C 0400A0E1 MOV R0,R4 \ 000003A0 ........ BL log 418 #endif 419 } 420 421 if(s2=strstr(s2,"
"))//погода \ ??Parsing_15: \ 000003A4 38419FE5 LDR R4,??Parsing_0+0x50 ;; `?">` \ 000003A8 0500A0E1 MOV R0,R5 \ 000003AC 0410A0E1 MOV R1,R4 \ 000003B0 180100EF SWI +280 \ 000003B4 0050B0E1 MOVS R5,R0 \ 000003B8 1D00000A BEQ ??Parsing_18 422 { 423 #ifdef LOG 424 log("prognoze"); \ 000003BC 24019FE5 LDR R0,??Parsing_0+0x54 ;; `?` 425 #endif 426 char tmp[128]; 427 zeromem(tmp,128); 428 flags[_comfort] = 1; 429 s2+=strlen("
")+3;//+3 ибо \n\r + пробел 430 i=0; \ 000003C0 00A0A0E3 MOV R10,#+0 \ 000003C4 ........ BL log \ 000003C8 8010A0E3 MOV R1,#+128 \ 000003CC 0C008DE2 ADD R0,SP,#+12 \ 000003D0 1D0100EF SWI +285 \ 000003D4 149086E5 STR R9,[R6, #+20] \ 000003D8 0400A0E1 MOV R0,R4 \ 000003DC 1B0000EF SWI +27 \ 000003E0 050080E0 ADD R0,R0,R5 \ 000003E4 035080E2 ADD R5,R0,#+3 \ 000003E8 030000EA B ??Parsing_19 431 while(*s2 != '\n' && *(s2+1) != '\r') 432 { 433 tmp[i] = *s2; \ ??Parsing_20: \ 000003EC ........ LDRB R1,[R5], #+1 \ 000003F0 0C008DE2 ADD R0,SP,#+12 \ 000003F4 0010CAE7 STRB R1,[R10, +R0] 434 *s2++; 435 i++; \ 000003F8 01A08AE2 ADD R10,R10,#+1 436 } \ ??Parsing_19: \ 000003FC ........ LDRB R0,[R5], #+1 \ 00000400 0A0050E3 CMP R0,#+10 \ 00000404 ........ LDRBNE R0,[R5], #-1 \ 00000408 0D005013 CMPNE R0,#+13 \ 0000040C F6FFFF1A BNE ??Parsing_20 437 438 tmp[strlen(tmp)] = 0; 439 utf82win(prognoze,tmp); \ 00000410 ........ LDR R4,??DataTable67 ;; prognoze \ 00000414 0C008DE2 ADD R0,SP,#+12 \ 00000418 1B0000EF SWI +27 \ 0000041C 0C108DE2 ADD R1,SP,#+12 \ 00000420 0170C0E7 STRB R7,[R0, +R1] \ 00000424 0400A0E1 MOV R0,R4 \ 00000428 ........ BL utf82win 440 #ifdef LOG 441 log(prognoze); \ 0000042C 0400A0E1 MOV R0,R4 \ 00000430 ........ BL log 442 #endif 443 } 444 }//if(s2) 445 if(ENA_MSG) ShowMSG(1,(int)"All data reciev and parse!"); \ ??Parsing_18: \ 00000434 B0009FE5 LDR R0,??Parsing_0+0x58 ;; ENA_MSG \ 00000438 000090E5 LDR R0,[R0, #+0] \ 0000043C 000050E3 CMP R0,#+0 \ 00000440 0200000A BEQ ??Parsing_21 \ 00000444 A4109FE5 LDR R1,??Parsing_0+0x5C ;; `?` \ 00000448 0100A0E3 MOV R0,#+1 \ 0000044C 480100EF SWI +328 446 GBS_StartTimerProc(&mytmr, 60*216*refresh, start_again); \ ??Parsing_21: \ 00000450 9C009FE5 LDR R0,??Parsing_0+0x60 ;; refresh \ 00000454 A030A0E3 MOV R3,#+160 \ 00000458 000090E5 LDR R0,[R0, #+0] \ 0000045C C83D83E3 ORR R3,R3,#0x3200 \ 00000460 930001E0 MUL R1,R3,R0 \ 00000464 0820A0E1 MOV R2,R8 \ 00000468 050000EA B ??Parsing_22 447 } 448 else//if(strstr(buf,"forecast")) 449 { 450 ShowMSG(1,(int)"Wrong reciev data! Waiting 60 second!"); \ ??Parsing_2: \ 0000046C 84109FE5 LDR R1,??Parsing_0+0x64 ;; `?` \ 00000470 0100A0E3 MOV R0,#+1 \ 00000474 480100EF SWI +328 451 GBS_StartTimerProc(&mytmr, 60*216, start_again); \ 00000478 0820A0E1 MOV R2,R8 \ 0000047C A010A0E3 MOV R1,#+160 \ 00000480 C81D81E3 ORR R1,R1,#0x3200 \ ??Parsing_22: \ 00000484 ........ LDR R0,??DataTable27 ;; mytmr \ 00000488 4D0000EF SWI +77 452 } 453 454 // if(s1) mfree(s1); 455 // if(s2) mfree(s2); 456 } \ 0000048C BCD08DE2 ADD SP,SP,#+188 \ 00000490 F08FBDE8 POP {R4-R11,PC} ;; return \ ??Parsing_0: \ 00000494 20250000 DC8 " %",+0 \ 00000498 ........ DC32 `?` \ 0000049C ........ DC32 `?` \ 000004A0 ........ DC32 `?` \ 000004A4 ........ DC32 `?` \ 000004A8 ........ DC32 `?` \ 000004AC ........ DC32 `?` \ 000004B4 ........ DC32 weather_img_path \ 000004B8 ........ DC32 `?` \ 000004BC ........ DC32 `?">` \ 000004C0 ........ DC32 `?` \ 000004C4 ........ DC32 `?` \ 000004CC ........ DC32 `?">` \ 000004D0 ........ DC32 `?` \ 000004D4 ........ DC32 `?` \ 000004D8 ........ DC32 `?` \ 000004DC ........ DC32 `?` \ 000004E0 ........ DC32 `?` \ 000004E4 ........ DC32 `?">` \ 000004E8 ........ DC32 `?` \ 000004EC ........ DC32 ENA_MSG \ 000004F0 ........ DC32 `?` \ 000004F4 ........ DC32 refresh \ 000004F8 ........ DC32 `?` 457 \ In segment CODE, align 4, keep-with-next 458 void DrawTemp(void *canv)//Температура 459 { 460 if(!flags[_temp]) return; \ DrawTemp: \ 00000000 C8009FE5 LDR R0,??DrawTemp_0 ;; flags + 4 \ 00000004 F0432DE9 PUSH {R4-R9,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 F083BD08 POPEQ {R4-R9,PC} 461 char *tempera=malloc(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 140000EF SWI +20 462 sprintf(tempera, "%s%s%c", str_temp, temp,2224); \ 0000001C ........ LDR R3,??DataTable57 ;; temp \ 00000020 ........ LDR R2,??DataTable58 ;; str_temp \ 00000024 ........ LDR R1,??DataTable59 ;; `?` \ 00000028 0040A0E1 MOV R4,R0 \ 0000002C 8B0EA0E3 MOV R0,#+2224 \ 00000030 01002DE9 PUSH {R0} \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 160000EF SWI +22 463 if(chekeris1==0) \ 0000003C 90009FE5 LDR R0,??DrawTemp_0+0x4 ;; date_X \ 00000040 005090E5 LDR R5,[R0, #+0] \ 00000044 8C009FE5 LDR R0,??DrawTemp_0+0x8 ;; date_Y \ 00000048 006090E5 LDR R6,[R0, #+0] \ 0000004C ........ LDR R0,??DataTable50 ;; align1 \ 00000050 007090E5 LDR R7,[R0, #+0] \ 00000054 ........ LDR R0,??DataTable98 ;; font \ 00000058 008090E5 LDR R8,[R0, #+0] \ 0000005C ........ LDR R0,??DataTable55 ;; space \ 00000060 009090E5 LDR R9,[R0, #+0] \ 00000064 70009FE5 LDR R0,??DrawTemp_0+0xC ;; chekeris1 \ 00000068 000090E5 LDR R0,[R0, #+0] \ 0000006C 04D08DE2 ADD SP,SP,#+4 \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0A00000A BEQ ??DrawTemp_1 464 { 465 PrintField(date_X,date_Y, tempera, align1, font, space); 466 } 467 else 468 { 469 if((chekeris1==1)&&(IsUnlocked())) \ 00000078 010050E3 CMP R0,#+1 \ 0000007C 0300001A BNE ??DrawTemp_2 \ 00000080 430000EF SWI +67 \ 00000084 000050E3 CMP R0,#+0 \ 00000088 0D00000A BEQ ??DrawTemp_3 470 { 471 PrintField(date_X,date_Y, tempera, align1, font, space); \ 0000008C 040000EA B ??DrawTemp_1 472 } 473 else 474 if((chekeris1==2)&&(!IsUnlocked())) \ ??DrawTemp_2: \ 00000090 020050E3 CMP R0,#+2 \ 00000094 0A00001A BNE ??DrawTemp_3 \ 00000098 430000EF SWI +67 \ 0000009C 000050E3 CMP R0,#+0 \ 000000A0 0700001A BNE ??DrawTemp_3 475 { 476 PrintField(date_X,date_Y, tempera, align1, font, space); \ ??DrawTemp_1: \ 000000A4 00022DE9 PUSH {R9} \ 000000A8 00012DE9 PUSH {R8} \ 000000AC 0730A0E1 MOV R3,R7 \ 000000B0 0420A0E1 MOV R2,R4 \ 000000B4 0610A0E1 MOV R1,R6 \ 000000B8 0500A0E1 MOV R0,R5 \ 000000BC ........ _BLF PrintField,??PrintField??rA \ 000000C0 08D08DE2 ADD SP,SP,#+8 477 } 478 } 479 mfree(tempera); \ ??DrawTemp_3: \ 000000C4 0400A0E1 MOV R0,R4 \ 000000C8 150000EF SWI +21 480 } \ 000000CC F083BDE8 POP {R4-R9,PC} ;; return \ ??DrawTemp_0: \ 000000D0 ........ DC32 flags + 4 \ 000000D4 ........ DC32 date_X \ 000000D8 ........ DC32 date_Y \ 000000DC ........ DC32 chekeris1 481 \ In segment CODE, align 4, keep-with-next 482 void DrawSpeed(void *canv)//скорость ветра 483 { 484 if(!flags[_speed])return; \ DrawSpeed: \ 00000000 98009FE5 LDR R0,??DrawSpeed_0 ;; flags + 12 \ 00000004 F0432DE9 PUSH {R4-R9,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 F083BD08 POPEQ {R4-R9,PC} 485 if(chekeris2==0) \ 00000014 88009FE5 LDR R0,??DrawSpeed_0+0x4 ;; date_X2 \ 00000018 ........ LDR R9,??DataTable65 ;; speed \ 0000001C 004090E5 LDR R4,[R0, #+0] \ 00000020 80009FE5 LDR R0,??DrawSpeed_0+0x8 ;; date_Y2 \ 00000024 005090E5 LDR R5,[R0, #+0] \ 00000028 7C009FE5 LDR R0,??DrawSpeed_0+0xC ;; align2 \ 0000002C 006090E5 LDR R6,[R0, #+0] \ 00000030 ........ LDR R0,??DataTable98 ;; font \ 00000034 007090E5 LDR R7,[R0, #+0] \ 00000038 ........ LDR R0,??DataTable55 ;; space \ 0000003C 008090E5 LDR R8,[R0, #+0] \ 00000040 68009FE5 LDR R0,??DrawSpeed_0+0x10 ;; chekeris2 \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0A00000A BEQ ??DrawSpeed_1 486 { 487 PrintField(date_X2,date_Y2, speed, align2, font, space); 488 } 489 else 490 { 491 if((chekeris2==1)&&(IsUnlocked())) \ 00000050 010050E3 CMP R0,#+1 \ 00000054 0300001A BNE ??DrawSpeed_2 \ 00000058 430000EF SWI +67 \ 0000005C 000050E3 CMP R0,#+0 \ 00000060 F083BD08 POPEQ {R4-R9,PC} 492 { 493 PrintField(date_X2,date_Y2, speed, align2, font, space); \ ??DrawSpeed_3: \ 00000064 040000EA B ??DrawSpeed_1 494 } 495 else 496 if((chekeris2==2)&&(!IsUnlocked())) \ ??DrawSpeed_2: \ 00000068 020050E3 CMP R0,#+2 \ 0000006C F083BD18 POPNE {R4-R9,PC} \ 00000070 430000EF SWI +67 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 F083BD18 POPNE {R4-R9,PC} 497 { 498 PrintField(date_X2,date_Y2, speed, align2, font, space); \ ??DrawSpeed_1: \ 0000007C 00012DE9 PUSH {R8} \ 00000080 80002DE9 PUSH {R7} \ 00000084 0630A0E1 MOV R3,R6 \ 00000088 0920A0E1 MOV R2,R9 \ 0000008C 0510A0E1 MOV R1,R5 \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 ........ _BLF PrintField,??PrintField??rA \ 00000098 08D08DE2 ADD SP,SP,#+8 \ 0000009C F083BDE8 POP {R4-R9,PC} ;; return \ ??DrawSpeed_0: \ 000000A0 ........ DC32 flags + 12 \ 000000A4 ........ DC32 date_X2 \ 000000A8 ........ DC32 date_Y2 \ 000000AC ........ DC32 align2 \ 000000B0 ........ DC32 chekeris2 499 } 500 } 501 } 502 \ In segment CODE, align 4, keep-with-next 503 void DrawComfort(void *canv)//комфорт 504 { 505 if(!flags[_comfort])return; \ DrawComfort: \ 00000000 B8009FE5 LDR R0,??DrawComfort_0 ;; flags + 20 \ 00000004 F0432DE9 PUSH {R4-R9,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 F083BD08 POPEQ {R4-R9,PC} 506 if(chekeris3==0) \ 00000014 A8009FE5 LDR R0,??DrawComfort_0+0x4 ;; date_X3 \ 00000018 ........ LDR R8,??DataTable67 ;; prognoze \ 0000001C 004090E5 LDR R4,[R0, #+0] \ 00000020 A0009FE5 LDR R0,??DrawComfort_0+0x8 ;; date_Y3 \ 00000024 005090E5 LDR R5,[R0, #+0] \ 00000028 ........ LDR R0,??DataTable98 ;; font \ 0000002C 006090E5 LDR R6,[R0, #+0] \ 00000030 ........ LDR R0,??DataTable55 ;; space \ 00000034 007090E5 LDR R7,[R0, #+0] \ 00000038 8C009FE5 LDR R0,??DrawComfort_0+0xC ;; chekeris3 \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 000050E3 CMP R0,#+0 \ 00000044 0400001A BNE ??DrawComfort_1 507 { 508 PrintField(date_X3,date_Y3, prognoze, align1, font, space); \ 00000048 ........ LDR R0,??DataTable50 ;; align1 \ 0000004C 80002DE9 PUSH {R7} \ 00000050 40002DE9 PUSH {R6} \ 00000054 003090E5 LDR R3,[R0, #+0] \ 00000058 120000EA B ??DrawComfort_2 509 } 510 else 511 { 512 if((chekeris3==1)&&(IsUnlocked())) \ ??DrawComfort_1: \ 0000005C 6C109FE5 LDR R1,??DrawComfort_0+0x10 ;; align3 \ 00000060 010050E3 CMP R0,#+1 \ 00000064 009091E5 LDR R9,[R1, #+0] \ 00000068 0600001A BNE ??DrawComfort_3 \ 0000006C 430000EF SWI +67 \ 00000070 000050E3 CMP R0,#+0 \ 00000074 F083BD08 POPEQ {R4-R9,PC} 513 { 514 PrintField(date_X3,date_Y3, prognoze, align3, font, space); \ 00000078 80002DE9 PUSH {R7} \ 0000007C 40002DE9 PUSH {R6} \ 00000080 0930A0E1 MOV R3,R9 \ ??DrawComfort_4: \ 00000084 070000EA B ??DrawComfort_2 515 } 516 else 517 if((chekeris3==2)&&(!IsUnlocked())) \ ??DrawComfort_3: \ 00000088 020050E3 CMP R0,#+2 \ 0000008C F083BD18 POPNE {R4-R9,PC} \ 00000090 430000EF SWI +67 \ 00000094 000050E3 CMP R0,#+0 \ 00000098 F083BD18 POPNE {R4-R9,PC} 518 { 519 PrintField(date_X3,date_Y3, prognoze, align3, font, space); \ 0000009C 80002DE9 PUSH {R7} \ 000000A0 40002DE9 PUSH {R6} \ 000000A4 0930A0E1 MOV R3,R9 \ ??DrawComfort_2: \ 000000A8 0820A0E1 MOV R2,R8 \ 000000AC 0510A0E1 MOV R1,R5 \ 000000B0 0400A0E1 MOV R0,R4 \ 000000B4 ........ _BLF PrintField,??PrintField??rA \ 000000B8 08D08DE2 ADD SP,SP,#+8 \ 000000BC F083BDE8 POP {R4-R9,PC} ;; return \ ??DrawComfort_0: \ 000000C0 ........ DC32 flags + 20 \ 000000C4 ........ DC32 date_X3 \ 000000C8 ........ DC32 date_Y3 \ 000000CC ........ DC32 chekeris3 \ 000000D0 ........ DC32 align3 520 } 521 } 522 } 523 \ In segment CODE, align 4, keep-with-next 524 void DrawDavlenie(void *canv)//давление 525 { 526 if(!flags[_dav])return; \ DrawDavlenie: \ 00000000 B8009FE5 LDR R0,??DrawDavlenie_0 ;; flags + 8 \ 00000004 F0432DE9 PUSH {R4-R9,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 F083BD08 POPEQ {R4-R9,PC} 527 char *tempera=malloc(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 140000EF SWI +20 528 sprintf(tempera, "%s%s", str_davlenie, davlenie); \ 0000001C ........ LDR R3,??DataTable69 ;; davlenie \ 00000020 9C209FE5 LDR R2,??DrawDavlenie_0+0x4 ;; str_davlenie \ 00000024 ........ LDR R1,??DataTable62 ;; `?` \ 00000028 0040A0E1 MOV R4,R0 \ 0000002C 160000EF SWI +22 529 if(chekeris4==0) \ 00000030 90009FE5 LDR R0,??DrawDavlenie_0+0x8 ;; date_X4 \ 00000034 005090E5 LDR R5,[R0, #+0] \ 00000038 8C009FE5 LDR R0,??DrawDavlenie_0+0xC ;; date_Y4 \ 0000003C 006090E5 LDR R6,[R0, #+0] \ 00000040 88009FE5 LDR R0,??DrawDavlenie_0+0x10 ;; align4 \ 00000044 007090E5 LDR R7,[R0, #+0] \ 00000048 ........ LDR R0,??DataTable98 ;; font \ 0000004C 008090E5 LDR R8,[R0, #+0] \ 00000050 ........ LDR R0,??DataTable55 ;; space \ 00000054 009090E5 LDR R9,[R0, #+0] \ 00000058 74009FE5 LDR R0,??DrawDavlenie_0+0x14 ;; chekeris4 \ 0000005C 000090E5 LDR R0,[R0, #+0] \ 00000060 000050E3 CMP R0,#+0 \ 00000064 0A00000A BEQ ??DrawDavlenie_1 530 { 531 PrintField(date_X4,date_Y4, tempera, align4, font, space); 532 } 533 else 534 { 535 if((chekeris4==1)&&(IsUnlocked())) \ 00000068 010050E3 CMP R0,#+1 \ 0000006C 0300001A BNE ??DrawDavlenie_2 \ 00000070 430000EF SWI +67 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0D00000A BEQ ??DrawDavlenie_3 536 { 537 PrintField(date_X4,date_Y4, tempera, align4, font, space); \ 0000007C 040000EA B ??DrawDavlenie_1 538 } 539 else 540 if((chekeris4==2)&&(!IsUnlocked())) \ ??DrawDavlenie_2: \ 00000080 020050E3 CMP R0,#+2 \ 00000084 0A00001A BNE ??DrawDavlenie_3 \ 00000088 430000EF SWI +67 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 0700001A BNE ??DrawDavlenie_3 541 { 542 PrintField(date_X4,date_Y4, tempera, align4, font, space); \ ??DrawDavlenie_1: \ 00000094 00022DE9 PUSH {R9} \ 00000098 00012DE9 PUSH {R8} \ 0000009C 0730A0E1 MOV R3,R7 \ 000000A0 0420A0E1 MOV R2,R4 \ 000000A4 0610A0E1 MOV R1,R6 \ 000000A8 0500A0E1 MOV R0,R5 \ 000000AC ........ _BLF PrintField,??PrintField??rA \ 000000B0 08D08DE2 ADD SP,SP,#+8 543 } 544 } 545 mfree(tempera); \ ??DrawDavlenie_3: \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 150000EF SWI +21 546 } \ 000000BC F083BDE8 POP {R4-R9,PC} ;; return \ ??DrawDavlenie_0: \ 000000C0 ........ DC32 flags + 8 \ 000000C4 ........ DC32 str_davlenie \ 000000C8 ........ DC32 date_X4 \ 000000CC ........ DC32 date_Y4 \ 000000D0 ........ DC32 align4 \ 000000D4 ........ DC32 chekeris4 547 \ In segment CODE, align 4, keep-with-next 548 void DrawVlaznost(void *canv)//влажность 549 { 550 if(!flags[_vlaznost])return; \ DrawVlaznost: \ 00000000 C4009FE5 LDR R0,??DrawVlaznost_0 ;; flags + 16 \ 00000004 F0412DE9 PUSH {R4-R8,LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 F081BD08 POPEQ {R4-R8,PC} 551 char *tempera=malloc(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 140000EF SWI +20 552 sprintf(tempera, "%s%s", str_vlaznost, vlaznost); \ 0000001C ........ LDR R3,??DataTable60 ;; vlaznost \ 00000020 ........ LDR R2,??DataTable61 ;; str_vlaznost \ 00000024 ........ LDR R1,??DataTable62 ;; `?` \ 00000028 0040A0E1 MOV R4,R0 \ 0000002C 160000EF SWI +22 553 if(chekeris5==0) \ 00000030 98009FE5 LDR R0,??DrawVlaznost_0+0x4 ;; date_X5 \ 00000034 005090E5 LDR R5,[R0, #+0] \ 00000038 94009FE5 LDR R0,??DrawVlaznost_0+0x8 ;; date_Y5 \ 0000003C 006090E5 LDR R6,[R0, #+0] \ 00000040 ........ LDR R0,??DataTable98 ;; font \ 00000044 007090E5 LDR R7,[R0, #+0] \ 00000048 ........ LDR R0,??DataTable55 ;; space \ 0000004C 008090E5 LDR R8,[R0, #+0] \ 00000050 80009FE5 LDR R0,??DrawVlaznost_0+0xC ;; chekeris5 \ 00000054 000090E5 LDR R0,[R0, #+0] \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0100001A BNE ??DrawVlaznost_1 554 { 555 PrintField(date_X5,date_Y5, tempera, align5, font, space); \ ??DrawVlaznost_2: \ 00000060 74009FE5 LDR R0,??DrawVlaznost_0+0x10 ;; align5 \ 00000064 0D0000EA B ??DrawVlaznost_3 556 } 557 else 558 { 559 if((chekeris5==1)&&(IsUnlocked())) \ ??DrawVlaznost_1: \ 00000068 010050E3 CMP R0,#+1 \ 0000006C 0500001A BNE ??DrawVlaznost_4 \ 00000070 430000EF SWI +67 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 F8FFFF1A BNE ??DrawVlaznost_2 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 150000EF SWI +21 \ 00000084 F081BDE8 POP {R4-R8,PC} 560 { 561 PrintField(date_X5,date_Y5, tempera, align5, font, space); 562 } 563 else 564 if((chekeris5==2)&&(!IsUnlocked())) \ ??DrawVlaznost_4: \ 00000088 020050E3 CMP R0,#+2 \ 0000008C 0B00001A BNE ??DrawVlaznost_5 \ 00000090 430000EF SWI +67 \ 00000094 000050E3 CMP R0,#+0 \ 00000098 0800001A BNE ??DrawVlaznost_5 565 { 566 PrintField(date_X5,date_Y5, tempera, align1, font, space); \ 0000009C ........ LDR R0,??DataTable50 ;; align1 \ ??DrawVlaznost_3: \ 000000A0 00012DE9 PUSH {R8} \ 000000A4 80002DE9 PUSH {R7} \ 000000A8 003090E5 LDR R3,[R0, #+0] \ 000000AC 0420A0E1 MOV R2,R4 \ 000000B0 0610A0E1 MOV R1,R6 \ 000000B4 0500A0E1 MOV R0,R5 \ 000000B8 ........ _BLF PrintField,??PrintField??rA \ 000000BC 08D08DE2 ADD SP,SP,#+8 567 } 568 } 569 mfree(tempera); \ ??DrawVlaznost_5: \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 150000EF SWI +21 570 } \ 000000C8 F081BDE8 POP {R4-R8,PC} ;; return \ ??DrawVlaznost_0: \ 000000CC ........ DC32 flags + 16 \ 000000D0 ........ DC32 date_X5 \ 000000D4 ........ DC32 date_Y5 \ 000000D8 ........ DC32 chekeris5 \ 000000DC ........ DC32 align5 571 572 573 //----------------------------Scroll String---------------------------------// 574 575 576 //#define idlegui_id (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 577 578 //extern const unsigned int x; 579 //extern const unsigned int y; 580 extern const RECT pos1; 581 extern const int al; 582 //extern const unsigned int scrollsize; 583 extern const int ENA_SCROLL; 584 extern const unsigned int TimeUpdateScroll; 585 extern const char fontColor[];//Для системного фонта 586 extern const char bgrColor[];//Для системного фонта 587 extern const int isOutline;//Для системного фонта 588 extern const unsigned int scrollDelay; \ In segment DATA_Z, align 4, align-sorted 589 char *s; \ s: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 590 GBSTMR scrollTmr; \ scrollTmr: \ 00000000 DS8 16 \ In segment DATA_Z, align 4, align-sorted 591 CSM_RAM *icsm; \ icsm: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 592 GUI *igui; \ igui: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 593 char scrollstr[256]; \ scrollstr: \ 00000000 DS8 256 594 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) \ In segment CODE, align 4, keep-with-next 595 int checkGui(int id) 596 { \ checkGui: \ 00000000 10402DE9 PUSH {R4,LR} 597 int retval = 0; \ 00000004 0040A0E3 MOV R4,#+0 598 if (IsGuiOnTop(id)) \ 00000008 350100EF SWI +309 \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0600000A BEQ ??checkGui_0 599 { 600 GUI* igui = GetTopGUI(); 601 if (igui) \ 00000014 4D0100EF SWI +333 \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0300000A BEQ ??checkGui_0 602 { 603 #ifdef ELKA 604 canvasdata = BuildCanvas(); \ 00000020 F18000EF SWI +33009 \ 00000024 ........ LDR R1,??DataTable86 ;; canvasdata 605 retval = 1; \ 00000028 0140A0E3 MOV R4,#+1 \ 0000002C 000081E5 STR R0,[R1, #+0] 606 #else 607 void *idata = GetDataOfItemByID(igui, 2); 608 if (idata) 609 { 610 canvasdata = ((void **)idata)[DISPLACE_OF_IDLECANVAS / 4]; 611 retval = 1; 612 } 613 #endif 614 } 615 } 616 return retval; \ ??checkGui_0: \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 1080BDE8 POP {R4,PC} ;; return 617 } 618 619 \ In segment CODE, align 4, keep-with-next 620 void DrawScrollStr() 621 { \ DrawScrollStr: \ 00000000 30402DE9 PUSH {R4,R5,LR} 622 int isScroll=1; 623 char *buf; 624 icsm=FindCSMbyID(CSM_root()->idle_id); \ 00000004 ........ LDR R4,??DataTable85 ;; icsm \ 00000008 068100EF SWI +33030 \ 0000000C 040090E5 LDR R0,[R0, #+4] \ 00000010 080100EF SWI +264 \ 00000014 000084E5 STR R0,[R4, #+0] 625 /* if(IsGuiOnTop(idlegui_id)&&!IsScreenSaver()) 626 { 627 igui=GetTopGUI(); 628 if(igui) 629 {*/ 630 icsm=FindCSMbyID(CSM_root()->idle_id); \ 00000018 068100EF SWI +33030 \ 0000001C 040090E5 LDR R0,[R0, #+4] \ 00000020 080100EF SWI +264 \ 00000024 000084E5 STR R0,[R4, #+0] 631 if (icsm && checkGui(idlegui_id(icsm))) \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 3080BD08 POPEQ {R4,R5,PC} \ 00000030 2C0090E5 LDR R0,[R0, #+44] \ 00000034 ........ BL checkGui \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 3080BD08 POPEQ {R4,R5,PC} 632 { 633 canvasdata=BuildCanvas(); 634 buf=malloc(strlen(scrollstr)+1); \ 00000040 ........ LDR R5,??DataTable71 ;; scrollstr \ 00000044 F18000EF SWI +33009 \ 00000048 ........ LDR R1,??DataTable86 ;; canvasdata \ 0000004C 000081E5 STR R0,[R1, #+0] \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 1B0000EF SWI +27 \ 00000058 010080E2 ADD R0,R0,#+1 \ 0000005C 140000EF SWI +20 \ 00000060 0040A0E1 MOV R4,R0 635 strcpy(buf,scrollstr); \ 00000064 0510A0E1 MOV R1,R5 \ 00000068 1A0000EF SWI +26 636 PrintText(pos1.x,pos1.y,buf,al,font,space,0,isScroll,0,pos1.x2); \ 0000006C 5C009FE5 LDR R0,??DrawScrollStr_0 ;; pos1 \ 00000070 0420A0E1 MOV R2,R4 \ 00000074 F410D0E1 LDRSH R1,[R0, #+4] \ 00000078 02002DE9 PUSH {R1} \ 0000007C 0010A0E3 MOV R1,#+0 \ 00000080 02002DE9 PUSH {R1} \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 02002DE9 PUSH {R1} \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 02002DE9 PUSH {R1} \ 00000094 ........ LDR R1,??DataTable55 ;; space \ 00000098 001091E5 LDR R1,[R1, #+0] \ 0000009C 02002DE9 PUSH {R1} \ 000000A0 ........ LDR R1,??DataTable98 ;; font \ 000000A4 001091E5 LDR R1,[R1, #+0] \ 000000A8 02002DE9 PUSH {R1} \ 000000AC 20109FE5 LDR R1,??DrawScrollStr_0+0x4 ;; al \ 000000B0 003091E5 LDR R3,[R1, #+0] \ 000000B4 F210D0E1 LDRSH R1,[R0, #+2] \ 000000B8 F000D0E1 LDRSH R0,[R0, #+0] \ 000000BC ........ _BLF PrintText,??PrintText??rA 637 mfree(buf); \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 150000EF SWI +21 \ 000000C8 18D08DE2 ADD SP,SP,#+24 638 } 639 //} 640 } \ 000000CC 3080BDE8 POP {R4,R5,PC} ;; return \ ??DrawScrollStr_0: \ 000000D0 ........ DC32 pos1 \ 000000D4 ........ DC32 al 641 \ In segment CODE, align 4, keep-with-next 642 void SaveWeath() 643 { 644 // return; 645 #ifdef LOG 646 log("saveweath"); \ SaveWeath: \ 00000000 60019FE5 LDR R0,??SaveWeath_0+0x4 ;; `?` \ 00000004 70402DE9 PUSH {R4-R6,LR} \ 00000008 ........ BL log 647 #endif 648 char *s=malloc(256), *s2=malloc(256); \ 0000000C 400FA0E3 MOV R0,#+256 \ 00000010 140000EF SWI +20 \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 140000EF SWI +20 \ 00000020 0050A0E1 MOV R5,R0 649 #ifdef LOG 650 log("malloc"); \ 00000024 40019FE5 LDR R0,??SaveWeath_0+0x8 ;; `?` 651 #endif 652 sprintf(s, "%s%s%c", str_temp, temp,2224); 653 sprintf(s2, "%s%s", str_vlaznost, vlaznost); 654 #ifdef LOG 655 log("s s2"); 656 #endif 657 //if(test==5) 658 { 659 if(show_temp) \ 00000028 4D6F8FE2 ADR R6,??SaveWeath_0 ;; " | " \ 0000002C ........ BL log \ 00000030 ........ LDR R3,??DataTable57 ;; temp \ 00000034 ........ LDR R2,??DataTable58 ;; str_temp \ 00000038 ........ LDR R1,??DataTable59 ;; `?` \ 0000003C 8B0EA0E3 MOV R0,#+2224 \ 00000040 01002DE9 PUSH {R0} \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 160000EF SWI +22 \ 0000004C ........ LDR R3,??DataTable60 ;; vlaznost \ 00000050 ........ LDR R2,??DataTable61 ;; str_vlaznost \ 00000054 ........ LDR R1,??DataTable62 ;; `?` \ 00000058 0500A0E1 MOV R0,R5 \ 0000005C 160000EF SWI +22 \ 00000060 08019FE5 LDR R0,??SaveWeath_0+0xC ;; `?` \ 00000064 ........ BL log \ 00000068 ........ LDR R0,??DataTable87 ;; show_temp \ 0000006C 000090E5 LDR R0,[R0, #+0] \ 00000070 04D08DE2 ADD SP,SP,#+4 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0400000A BEQ ??SaveWeath_1 660 { 661 //strcat(s,s2); 662 strcat(s," | "); \ 0000007C 0610A0E1 MOV R1,R6 \ 00000080 0400A0E1 MOV R0,R4 \ 00000084 170000EF SWI +23 663 #ifdef LOG 664 log("show temp"); \ 00000088 E4009FE5 LDR R0,??SaveWeath_0+0x10 ;; `?` \ 0000008C ........ BL log 665 #endif 666 } 667 668 if(show_speed) \ ??SaveWeath_1: \ 00000090 ........ LDR R0,??DataTable88 ;; show_speed \ 00000094 000090E5 LDR R0,[R0, #+0] \ 00000098 000050E3 CMP R0,#+0 \ 0000009C 0700000A BEQ ??SaveWeath_2 669 { 670 #ifdef LOG 671 log("show_speed"); \ 000000A0 D0009FE5 LDR R0,??SaveWeath_0+0x14 ;; `?` \ 000000A4 ........ BL log 672 #endif 673 strcat(s,speed); \ 000000A8 ........ LDR R1,??DataTable65 ;; speed \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 170000EF SWI +23 674 strcat(s," | "); \ 000000B4 0610A0E1 MOV R1,R6 \ 000000B8 0400A0E1 MOV R0,R4 \ 000000BC 170000EF SWI +23 675 } 676 677 if(show_prognoze) \ ??SaveWeath_2: \ 000000C0 ........ LDR R0,??DataTable89 ;; show_prognoze \ 000000C4 000090E5 LDR R0,[R0, #+0] \ 000000C8 000050E3 CMP R0,#+0 \ 000000CC 0700000A BEQ ??SaveWeath_3 678 { 679 #ifdef LOG 680 log("show prognoze"); \ 000000D0 A4009FE5 LDR R0,??SaveWeath_0+0x18 ;; `?` \ 000000D4 ........ BL log 681 #endif 682 strcat(s,prognoze); \ 000000D8 ........ LDR R1,??DataTable67 ;; prognoze \ 000000DC 0400A0E1 MOV R0,R4 \ 000000E0 170000EF SWI +23 683 strcat(s," | "); \ 000000E4 0610A0E1 MOV R1,R6 \ 000000E8 0400A0E1 MOV R0,R4 \ 000000EC 170000EF SWI +23 684 } 685 686 if(show_davlenie) \ ??SaveWeath_3: \ 000000F0 ........ LDR R0,??DataTable90 ;; show_davlenie \ 000000F4 000090E5 LDR R0,[R0, #+0] \ 000000F8 000050E3 CMP R0,#+0 \ 000000FC 0700000A BEQ ??SaveWeath_4 687 { 688 #ifdef LOG 689 log("show davl"); \ 00000100 78009FE5 LDR R0,??SaveWeath_0+0x1C ;; `?` \ 00000104 ........ BL log 690 #endif 691 strcat(s,davlenie); \ 00000108 ........ LDR R1,??DataTable69 ;; davlenie \ 0000010C 0400A0E1 MOV R0,R4 \ 00000110 170000EF SWI +23 692 strcat(s," | "); \ 00000114 0610A0E1 MOV R1,R6 \ 00000118 0400A0E1 MOV R0,R4 \ 0000011C 170000EF SWI +23 693 } 694 695 if(show_vlaznost) \ ??SaveWeath_4: \ 00000120 ........ LDR R0,??DataTable91 ;; show_vlaznost \ 00000124 000090E5 LDR R0,[R0, #+0] \ 00000128 000050E3 CMP R0,#+0 \ 0000012C 0400000A BEQ ??SaveWeath_5 696 { 697 #ifdef LOG 698 log("show_vlazn"); \ 00000130 4C009FE5 LDR R0,??SaveWeath_0+0x20 ;; `?` \ 00000134 ........ BL log 699 #endif 700 strcat(s,s2); \ 00000138 0510A0E1 MOV R1,R5 \ 0000013C 0400A0E1 MOV R0,R4 \ 00000140 170000EF SWI +23 701 } 702 } 703 strcpy(scrollstr,s); \ ??SaveWeath_5: \ 00000144 ........ LDR R0,??DataTable71 ;; scrollstr \ 00000148 0410A0E1 MOV R1,R4 \ 0000014C 1A0000EF SWI +26 704 mfree(s); \ 00000150 0400A0E1 MOV R0,R4 \ 00000154 150000EF SWI +21 705 mfree(s2); \ 00000158 0500A0E1 MOV R0,R5 \ 0000015C 150000EF SWI +21 706 } \ 00000160 7080BDE8 POP {R4-R6,PC} ;; return \ ??SaveWeath_0: \ 00000164 207C2000 DC8 " | " \ 00000168 ........ DC32 `?` \ 0000016C ........ DC32 `?` \ 00000170 ........ DC32 `?` \ 00000174 ........ DC32 `?` \ 00000178 ........ DC32 `?` \ 0000017C ........ DC32 `?` \ 00000180 ........ DC32 `?` \ 00000184 ........ DC32 `?` 707 708 709 //-------------------------------------------------------------// 710 \ In segment CODE, align 4, keep-with-next 711 void TimerProc()// Перерисовка по таймеру 712 { \ TimerProc: \ 00000000 00402DE9 PUSH {LR} 713 DrawScrollStr(); \ 00000004 ........ BL DrawScrollStr 714 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_UPDATE_STAT,&gipc); \ 00000008 ........ LDR R3,??DataTable84 ;; gipc \ 0000000C 0120A0E3 MOV R2,#+1 \ 00000010 B010A0E3 MOV R1,#+176 \ 00000014 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000018 0900A0E3 MOV R0,#+9 \ 0000001C 420C80E3 ORR R0,R0,#0x4200 \ 00000020 000100EF SWI +256 715 } \ 00000024 0080BDE8 POP {PC} ;; return 716 717 \ In segment CODE, align 4, keep-with-next 718 int maincsm_onmessage(CSM_RAM* data,GBS_MSG* msg) 719 { \ maincsm_onmessage: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0CD04DE2 SUB SP,SP,#+12 720 if(msg->msg == MSG_RECONFIGURE_REQ) \ 00000008 ........ LDR R5,??DataTable73 ;; create_connect \ 0000000C ........ LDR R6,??DataTable94 ;; scrollTmr \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 040094E5 LDR R0,[R4, #+4] \ 00000018 AF10A0E3 MOV R1,#+175 \ 0000001C DE1C81E3 ORR R1,R1,#0xDE00 \ 00000020 010050E1 CMP R0,R1 \ 00000024 1E00001A BNE ??maincsm_onmessage_0 721 { 722 extern const char *successed_config_filename; 723 if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) \ 00000028 ........ LDR R0,??DataTable99 ;; successed_config_filename \ 0000002C 0C1094E5 LDR R1,[R4, #+12] \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 ........ BL strcmp_nocase \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 6400001A BNE ??maincsm_onmessage_1 724 { 725 ShowMSG(1,(int)"MailWeather 2.4 config updated!"); \ 00000040 DC129FE5 LDR R1,??maincsm_onmessage_2 ;; `?` \ 00000044 0100A0E3 MOV R0,#+1 \ 00000048 480100EF SWI +328 726 InitConfig(); \ 0000004C ........ _BLF InitConfig,??InitConfig??rA 727 PrintLibFree(); \ 00000050 ........ _BLF PrintLibFree,??PrintLibFree??rA 728 PrintLibInit(1); \ 00000054 0100A0E3 MOV R0,#+1 \ 00000058 ........ _BLF PrintLibInit,??PrintLibInit??rA 729 FontPathInit((char*)fontpath, fullfont); \ 0000005C ........ LDR R0,??DataTable101 ;; fullfont \ 00000060 001090E5 LDR R1,[R0, #+0] \ 00000064 ........ LDR R0,??DataTable97 ;; fontpath \ 00000068 ........ _BLF FontPathInit,??FontPathInit??rA 730 SetScrollEdgeDelay(1); \ 0000006C 0100A0E3 MOV R0,#+1 \ 00000070 ........ _BLF SetScrollEdgeDelay,??SetScrollEdgeDelay??rA 731 SetFontColor((char*)fontColor,(char*)bgrColor,isOutline); \ 00000074 ........ LDR R0,??DataTable102 ;; isOutline \ 00000078 ........ LDR R1,??DataTable103 ;; bgrColor \ 0000007C 002090E5 LDR R2,[R0, #+0] \ 00000080 ........ LDR R0,??DataTable104 ;; fontColor \ 00000084 FF2002E2 AND R2,R2,#0xFF \ 00000088 ........ _BLF SetFontColor,??SetFontColor??rA 732 GBS_DelTimer(&mytmr); \ 0000008C ........ LDR R0,??DataTable95 ;; mytmr \ 00000090 8C0100EF SWI +396 733 GBS_DelTimer(&scrollTmr); \ 00000094 0600A0E1 MOV R0,R6 \ 00000098 8C0100EF SWI +396 734 SUBPROC((void *)create_connect); \ 0000009C 0500A0E1 MOV R0,R5 \ 000000A0 710100EF SWI +369 735 } 736 } 737 738 if (msg->msg==MSG_IPC)// IPC \ ??maincsm_onmessage_0: \ 000000A4 040094E5 LDR R0,[R4, #+4] \ 000000A8 B070A0E3 MOV R7,#+176 \ 000000AC DE7C87E3 ORR R7,R7,#0xDE00 \ 000000B0 070050E1 CMP R0,R7 \ 000000B4 0F00001A BNE ??maincsm_onmessage_3 739 { 740 IPC_REQ *ipc; 741 if ((ipc=(IPC_REQ*)msg->data0)) \ 000000B8 0C0094E5 LDR R0,[R4, #+12] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 4300000A BEQ ??maincsm_onmessage_1 742 { 743 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0)// Если приняли собственное сообщение \ 000000C4 000090E5 LDR R0,[R0, #+0] \ 000000C8 58129FE5 LDR R1,??maincsm_onmessage_2+0x4 ;; ipc_my_name \ 000000CC ........ BL strcmp_nocase \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 3E00001A BNE ??maincsm_onmessage_1 744 { 745 switch (msg->submess) \ 000000D8 080094E5 LDR R0,[R4, #+8] \ 000000DC 010050E3 CMP R0,#+1 \ 000000E0 0400001A BNE ??maincsm_onmessage_3 746 { 747 case IPC_UPDATE_STAT: 748 GBS_StartTimerProc(&scrollTmr,TimeUpdateScroll, TimerProc); \ 000000E4 40029FE5 LDR R0,??maincsm_onmessage_2+0x8 ;; TimeUpdateScroll \ 000000E8 40229FE5 LDR R2,??maincsm_onmessage_2+0xC ;; TimerProc \ 000000EC 001090E5 LDR R1,[R0, #+0] \ 000000F0 0600A0E1 MOV R0,R6 \ 000000F4 4D0000EF SWI +77 749 break; 750 } 751 } 752 } 753 } 754 755 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_3: \ 000000F8 040094E5 LDR R0,[R4, #+4] \ 000000FC 021047E2 SUB R1,R7,#+2 \ 00000100 010050E1 CMP R0,R1 \ 00000104 3200001A BNE ??maincsm_onmessage_1 756 { 757 if ((int)msg->data1==sock) \ 00000108 ........ LDR R6,??DataTable82 ;; sock \ 0000010C 100094E5 LDR R0,[R4, #+16] \ 00000110 001096E5 LDR R1,[R6, #+0] \ 00000114 010050E1 CMP R0,R1 \ 00000118 2D00001A BNE ??maincsm_onmessage_1 758 { 759 //Если наш сокет 760 switch((int)msg->data0) \ 0000011C ........ LDR R8,??DataTable83 ;; connect_state \ 00000120 0C2094E5 LDR R2,[R4, #+12] \ 00000124 08029FE5 LDR R0,??maincsm_onmessage_2+0x10 ;; end_socket \ 00000128 001098E5 LDR R1,[R8, #+0] \ 0000012C 8C2052E2 SUBS R2,R2,#+140 \ 00000130 0B00000A BEQ ??maincsm_onmessage_4 \ 00000134 012052E2 SUBS R2,R2,#+1 \ 00000138 0400000A BEQ ??maincsm_onmessage_5 \ 0000013C 012052E2 SUBS R2,R2,#+1 \ 00000140 1000000A BEQ ??maincsm_onmessage_6 \ 00000144 012052E2 SUBS R2,R2,#+1 \ 00000148 0B00000A BEQ ??maincsm_onmessage_7 \ 0000014C 200000EA B ??maincsm_onmessage_1 761 { 762 case ENIP_SOCK_CONNECTED: 763 if (connect_state==1) \ ??maincsm_onmessage_5: \ 00000150 010051E3 CMP R1,#+1 764 { 765 //ShowMSG(1,(int)"send req"); 766 //Если посылали запрос 767 SUBPROC((void *)send_req); \ 00000154 DC019F05 LDREQ R0,??maincsm_onmessage_2+0x14 ;; send_req \ 00000158 0500A011 MOVNE R0,R5 \ ??maincsm_onmessage_8: \ 0000015C 710100EF SWI +369 \ 00000160 1B0000EA B ??maincsm_onmessage_1 768 } 769 else 770 { 771 // ShowMSG(1,(int)"create connect"); 772 SUBPROC((void *)create_connect); 773 } 774 break; 775 case ENIP_SOCK_DATA_READ: 776 if (connect_state==2) \ ??maincsm_onmessage_4: \ 00000164 020051E3 CMP R1,#+2 \ 00000168 0100001A BNE ??maincsm_onmessage_9 777 { 778 // ShowMSG(1,(int)"get_answer"); 779 //Если посылали send 780 SUBPROC((void *)get_answer); \ 0000016C C8019FE5 LDR R0,??maincsm_onmessage_2+0x18 ;; get_answer \ 00000170 F9FFFFEA B ??maincsm_onmessage_8 781 } 782 else 783 { 784 // ShowMSG(1,(int)"create_connect"); 785 SUBPROC((void *)create_connect); \ ??maincsm_onmessage_9: \ 00000174 0500A0E1 MOV R0,R5 \ 00000178 F7FFFFEA B ??maincsm_onmessage_8 786 } 787 break; 788 case ENIP_SOCK_REMOTE_CLOSED: 789 // ShowMSG(1,(int)"sock remote closed"); 790 //Закрыт со стороны сервера 791 if (connect_state) SUBPROC((void *)end_socket); \ ??maincsm_onmessage_7: \ 0000017C 000051E3 CMP R1,#+0 \ 00000180 1300000A BEQ ??maincsm_onmessage_1 \ 00000184 F4FFFFEA B ??maincsm_onmessage_8 792 break; 793 case ENIP_SOCK_CLOSED: 794 // ShowMSG(1,(int)"sock closed"); 795 //Закрыт вызовом closesocket 796 if (connect_state) SUBPROC((void *)end_socket); \ ??maincsm_onmessage_6: \ 00000188 000051E3 CMP R1,#+0 \ 0000018C 0000000A BEQ ??maincsm_onmessage_10 \ 00000190 710100EF SWI +369 797 connect_state=3; \ ??maincsm_onmessage_10: \ 00000194 0300A0E3 MOV R0,#+3 \ 00000198 000088E5 STR R0,[R8, #+0] 798 // GBS_StartTimerProc(&delaytmr, 262*10,Parsing); 799 Parsing(); \ 0000019C ........ BL Parsing 800 // ShowMSG(1,(int)"all recv!"); 801 if(ENA_SCROLL) \ 000001A0 98019FE5 LDR R0,??maincsm_onmessage_2+0x1C ;; ENA_SCROLL \ 000001A4 000090E5 LDR R0,[R0, #+0] \ 000001A8 000050E3 CMP R0,#+0 \ 000001AC 0600000A BEQ ??maincsm_onmessage_11 802 { 803 SaveWeath(); \ 000001B0 ........ BL SaveWeath 804 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_UPDATE_STAT,&gipc); \ 000001B4 ........ LDR R3,??DataTable84 ;; gipc \ 000001B8 0120A0E3 MOV R2,#+1 \ 000001BC 0710A0E1 MOV R1,R7 \ 000001C0 0900A0E3 MOV R0,#+9 \ 000001C4 420C80E3 ORR R0,R0,#0x4200 \ 000001C8 000100EF SWI +256 805 } 806 sock=-1; \ ??maincsm_onmessage_11: \ 000001CC 0000E0E3 MVN R0,#+0 \ 000001D0 000086E5 STR R0,[R6, #+0] 807 break; 808 } 809 } 810 } 811 812 813 /* if(msg->msg == MSG_IPC) 814 { 815 IPC_REQ *ipc; 816 if ((ipc=(IPC_REQ*)msg->data0)) 817 { 818 if (strcmp_nocase(ipc->name_to,"IdleUpd")==0) 819 { 820 switch (msg->submess) 821 { 822 case 0: 823 {*/ 824 icsm=FindCSMbyID(CSM_root()->idle_id); \ ??maincsm_onmessage_1: \ 000001D4 ........ LDR R4,??DataTable85 ;; icsm \ 000001D8 068100EF SWI +33030 \ 000001DC 040090E5 LDR R0,[R0, #+4] \ 000001E0 080100EF SWI +264 \ 000001E4 000084E5 STR R0,[R4, #+0] 825 if (icsm && checkGui(idlegui_id(icsm))) \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 4A00000A BEQ ??maincsm_onmessage_12 \ 000001F0 2C0090E5 LDR R0,[R0, #+44] \ 000001F4 ........ BL checkGui \ 000001F8 000050E3 CMP R0,#+0 \ 000001FC 4600000A BEQ ??maincsm_onmessage_12 826 { 827 canvasdata=BuildCanvas(); \ 00000200 ........ LDR R4,??DataTable86 ;; canvasdata \ 00000204 F18000EF SWI +33009 \ 00000208 000084E5 STR R0,[R4, #+0] 828 // { 829 if(!(ENA_SCROLL)/* && (test==5)*/) \ 0000020C 2C019FE5 LDR R0,??maincsm_onmessage_2+0x1C ;; ENA_SCROLL \ 00000210 000090E5 LDR R0,[R0, #+0] \ 00000214 000050E3 CMP R0,#+0 \ 00000218 1D00001A BNE ??maincsm_onmessage_13 830 { 831 if(show_temp) \ 0000021C ........ LDR R0,??DataTable87 ;; show_temp \ 00000220 000090E5 LDR R0,[R0, #+0] \ 00000224 000050E3 CMP R0,#+0 \ 00000228 0100000A BEQ ??maincsm_onmessage_14 832 DrawTemp(canvasdata); \ 0000022C 000094E5 LDR R0,[R4, #+0] \ 00000230 ........ BL DrawTemp 833 if(show_speed) \ ??maincsm_onmessage_14: \ 00000234 ........ LDR R0,??DataTable88 ;; show_speed \ 00000238 000090E5 LDR R0,[R0, #+0] \ 0000023C 000050E3 CMP R0,#+0 \ 00000240 0100000A BEQ ??maincsm_onmessage_15 834 DrawSpeed(canvasdata); \ 00000244 000094E5 LDR R0,[R4, #+0] \ 00000248 ........ BL DrawSpeed 835 if(show_prognoze) \ ??maincsm_onmessage_15: \ 0000024C ........ LDR R0,??DataTable89 ;; show_prognoze \ 00000250 000090E5 LDR R0,[R0, #+0] \ 00000254 000050E3 CMP R0,#+0 \ 00000258 0100000A BEQ ??maincsm_onmessage_16 836 DrawComfort(canvasdata); \ 0000025C 000094E5 LDR R0,[R4, #+0] \ 00000260 ........ BL DrawComfort 837 if(show_davlenie) \ ??maincsm_onmessage_16: \ 00000264 ........ LDR R0,??DataTable90 ;; show_davlenie \ 00000268 000090E5 LDR R0,[R0, #+0] \ 0000026C 000050E3 CMP R0,#+0 \ 00000270 0100000A BEQ ??maincsm_onmessage_17 838 DrawDavlenie(canvasdata); \ 00000274 000094E5 LDR R0,[R4, #+0] \ 00000278 ........ BL DrawDavlenie 839 if(show_vlaznost) \ ??maincsm_onmessage_17: \ 0000027C ........ LDR R0,??DataTable91 ;; show_vlaznost \ 00000280 000090E5 LDR R0,[R0, #+0] \ 00000284 000050E3 CMP R0,#+0 \ 00000288 0100000A BEQ ??maincsm_onmessage_13 840 DrawVlaznost(canvasdata); \ 0000028C 000094E5 LDR R0,[R4, #+0] \ 00000290 ........ BL DrawVlaznost 841 } 842 843 if(IKONA && flags[_pic]) \ ??maincsm_onmessage_13: \ 00000294 A8009FE5 LDR R0,??maincsm_onmessage_2+0x20 ;; IKONA \ 00000298 000090E5 LDR R0,[R0, #+0] \ 0000029C 000050E3 CMP R0,#+0 \ 000002A0 1D00000A BEQ ??maincsm_onmessage_12 \ 000002A4 ........ LDR R0,??DataTable92 ;; flags \ 000002A8 000090E5 LDR R0,[R0, #+0] \ 000002AC 000050E3 CMP R0,#+0 \ 000002B0 1900000A BEQ ??maincsm_onmessage_12 844 { 845 DrawCanvas(canvasdata,weather_X,weather_Y,weather_X+GetImgWidth((int)ICON)-1,weather_Y+GetImgHeight((int)ICON)-1,1); \ 000002B4 ........ LDR R5,??DataTable93 ;; ICON \ 000002B8 0500A0E1 MOV R0,R5 \ 000002BC 210000EF SWI +33 \ 000002C0 0060A0E1 MOV R6,R0 \ 000002C4 0500A0E1 MOV R0,R5 \ 000002C8 220000EF SWI +34 \ 000002CC 74109FE5 LDR R1,??maincsm_onmessage_2+0x24 ;; weather_X \ 000002D0 007091E5 LDR R7,[R1, #+0] \ 000002D4 70109FE5 LDR R1,??maincsm_onmessage_2+0x28 ;; weather_Y \ 000002D8 070080E0 ADD R0,R0,R7 \ 000002DC 008091E5 LDR R8,[R1, #+0] \ 000002E0 0110A0E3 MOV R1,#+1 \ 000002E4 02002DE9 PUSH {R1} \ 000002E8 013040E2 SUB R3,R0,#+1 \ 000002EC 0820A0E1 MOV R2,R8 \ 000002F0 081086E0 ADD R1,R6,R8 \ 000002F4 011041E2 SUB R1,R1,#+1 \ 000002F8 02002DE9 PUSH {R1} \ 000002FC 000094E5 LDR R0,[R4, #+0] \ 00000300 0710A0E1 MOV R1,R7 \ 00000304 250000EF SWI +37 846 DrawImg(weather_X,weather_Y,(int)ICON); \ 00000308 0520A0E1 MOV R2,R5 \ 0000030C 0810A0E1 MOV R1,R8 \ 00000310 0700A0E1 MOV R0,R7 \ 00000314 230000EF SWI +35 \ 00000318 08D08DE2 ADD SP,SP,#+8 847 } 848 } 849 /* } 850 } 851 } 852 } 853 }*/ 854 855 856 return (1); \ ??maincsm_onmessage_12: \ 0000031C 0100A0E3 MOV R0,#+1 \ 00000320 FE81BDE8 POP {R1-R8,PC} ;; return \ ??maincsm_onmessage_2: \ 00000324 ........ DC32 `?` \ 00000328 ........ DC32 ipc_my_name \ 0000032C ........ DC32 TimeUpdateScroll \ 00000330 ........ DC32 TimerProc \ 00000334 ........ DC32 end_socket \ 00000338 ........ DC32 send_req \ 0000033C ........ DC32 get_answer \ 00000340 ........ DC32 ENA_SCROLL \ 00000344 ........ DC32 IKONA \ 00000348 ........ DC32 weather_X \ 0000034C ........ DC32 weather_Y 857 } 858 \ In segment CODE, align 4, keep-with-next 859 static void maincsm_oncreate(CSM_RAM *data) 860 { 861 // GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_UPDATE_STAT,&gipc); 862 } \ maincsm_oncreate: \ 00000000 1EFF2FE1 BX LR ;; return 863 \ In segment CODE, align 4, keep-with-next 864 static void Killer(void) 865 { \ Killer: \ 00000000 00402DE9 PUSH {LR} 866 PrintLibFree(); \ 00000004 ........ _BLF PrintLibFree,??PrintLibFree??rA 867 GBS_DelTimer(&scrollTmr); \ 00000008 ........ LDR R0,??DataTable94 ;; scrollTmr \ 0000000C 8C0100EF SWI +396 868 GBS_DelTimer(&mytmr); \ 00000010 ........ LDR R0,??DataTable95 ;; mytmr \ 00000014 8C0100EF SWI +396 869 extern void *ELF_BEGIN; 870 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); \ 00000018 158000EF SWI +32789 \ 0000001C 0010A0E1 MOV R1,R0 \ 00000020 04009FE5 LDR R0,??Killer_0 ;; ELF_BEGIN \ 00000024 0040BDE8 POP {LR} ;; Pop \ 00000028 ........ _BF kill_data,??kill_data??rA ;; tailcall \ ??Killer_0: \ 0000002C ........ DC32 ELF_BEGIN 871 } 872 \ In segment CODE, align 4, keep-with-next 873 static void maincsm_onclose(CSM_RAM *csm) 874 { 875 SUBPROC((void *)Killer); \ maincsm_onclose: \ 00000000 ........ LDR R0,??DataTable100 ;; Killer \ 00000004 00402DE9 PUSH {LR} \ 00000008 710100EF SWI +369 876 } \ 0000000C 0080BDE8 POP {PC} ;; return 877 \ In segment DATA_Z, align 4, align-sorted 878 static unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 879 880 static const struct 881 { 882 CSM_DESC maincsm; 883 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted 884 }MAINCSM = \ MAINCSM: \ 00000000 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 0000001C 280000000100 DC32 40, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 00000038 8B00 DC16 139 \ 0000003A 0000 DC8 0, 0 885 { 886 { 887 maincsm_onmessage, 888 maincsm_oncreate, 889 #ifdef NEWSGOLD 890 0, 891 0, 892 0, 893 0, 894 #endif 895 maincsm_onclose, 896 sizeof(MAIN_CSM), 897 1, 898 &minus11 899 }, 900 { 901 maincsm_name_body, 902 NAMECSM_MAGIC1, 903 NAMECSM_MAGIC2, 904 0x0, 905 139 906 } 907 }; 908 909 static void UpdateCSMname(void) 910 { 911 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"MailWeather v3.0"); 912 } 913 914 915 \ In segment CODE, align 4, keep-with-next 916 int main(char *filename) 917 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 918 //char *s; 919 // int len; 920 extern const char *successed_config_filename; 921 WSHDR *ws; 922 923 InitConfig(); 924 //s=strrchr(filename,'\\'); 925 //len=(s-filename)+1; 926 //strncpy(elf_path,filename,len); 927 // elf_path[len]=0; 928 if(strlen(fontpath)==0 && font<100) \ 00000004 ........ LDR R4,??DataTable97 ;; fontpath \ 00000008 28D04DE2 SUB SP,SP,#+40 \ 0000000C ........ _BLF InitConfig,??InitConfig??rA \ 00000010 0400A0E1 MOV R0,R4 \ 00000014 1B0000EF SWI +27 \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 1900001A BNE ??main_0 \ 00000020 ........ LDR R0,??DataTable98 ;; font \ 00000024 000090E5 LDR R0,[R0, #+0] \ 00000028 640050E3 CMP R0,#+100 \ 0000002C 1500002A BCS ??main_0 929 { 930 LockSched(); \ 00000030 460100EF SWI +326 931 ShowMSG(1,(int)"Please set config!"); \ 00000034 FC109FE5 LDR R1,??main_1 ;; `?` \ 00000038 0100A0E3 MOV R0,#+1 \ 0000003C 480100EF SWI +328 932 ws=AllocWS(150); \ 00000040 9600A0E3 MOV R0,#+150 \ 00000044 250100EF SWI +293 \ 00000048 0040A0E1 MOV R4,R0 933 str_2ws(ws,successed_config_filename,128); \ 0000004C ........ LDR R0,??DataTable99 ;; successed_config_filename \ 00000050 8020A0E3 MOV R2,#+128 \ 00000054 001090E5 LDR R1,[R0, #+0] \ 00000058 0400A0E1 MOV R0,R4 \ 0000005C 6C0100EF SWI +364 934 ExecuteFile(ws,0,0); \ 00000060 0020A0E3 MOV R2,#+0 \ 00000064 0010A0E3 MOV R1,#+0 \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C 940000EF SWI +148 935 UnlockSched(); \ 00000070 470100EF SWI +327 936 SUBPROC((void *)Killer); \ 00000074 ........ LDR R0,??DataTable100 ;; Killer \ 00000078 710100EF SWI +369 937 return 0; \ 0000007C 0000A0E3 MOV R0,#+0 \ 00000080 28D08DE2 ADD SP,SP,#+40 \ 00000084 F080BDE8 POP {R4-R7,PC} 938 } 939 CSMROOT *csmr; 940 CSM_RAM *save_cmpc; 941 CSM_RAM main_csm; 942 UpdateCSMname(); \ ??main_0: \ 00000088 AC509FE5 LDR R5,??main_1+0x4 ;; MAINCSM \ 0000008C AC109FE5 LDR R1,??main_1+0x8 ;; `?` \ 00000090 280085E2 ADD R0,R5,#+40 \ 00000094 240100EF SWI +292 943 LockSched(); \ 00000098 460100EF SWI +326 944 csmr=CSM_root(); \ 0000009C 068100EF SWI +33030 \ 000000A0 0060A0E1 MOV R6,R0 945 save_cmpc=csmr->csm_q->current_msg_processing_csm; \ 000000A4 080096E5 LDR R0,[R6, #+8] 946 csmr->csm_q->current_msg_processing_csm=csmr->csm_q->csm.first; 947 CreateCSM(&MAINCSM.maincsm,&main_csm,0); \ 000000A8 0020A0E3 MOV R2,#+0 \ 000000AC 081090E5 LDR R1,[R0, #+8] \ 000000B0 047090E5 LDR R7,[R0, #+4] \ 000000B4 041080E5 STR R1,[R0, #+4] \ 000000B8 0D10A0E1 MOV R1,SP \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 070100EF SWI +263 948 csmr->csm_q->current_msg_processing_csm=save_cmpc; \ 000000C4 080096E5 LDR R0,[R6, #+8] \ 000000C8 047080E5 STR R7,[R0, #+4] 949 UnlockSched(); \ 000000CC 470100EF SWI +327 950 if(ENA_HELLO_MSG) \ 000000D0 6C009FE5 LDR R0,??main_1+0xC ;; ENA_HELLO_MSG \ 000000D4 000090E5 LDR R0,[R0, #+0] \ 000000D8 000050E3 CMP R0,#+0 \ 000000DC 0200000A BEQ ??main_2 951 ShowMSG(1,(int)"MailWeather v3.0 (c)evilfox, kluchnik"); \ 000000E0 60109FE5 LDR R1,??main_1+0x10 ;; `?` \ 000000E4 0100A0E3 MOV R0,#+1 \ 000000E8 480100EF SWI +328 952 953 PrintLibInit(1); \ ??main_2: \ 000000EC 0100A0E3 MOV R0,#+1 \ 000000F0 ........ _BLF PrintLibInit,??PrintLibInit??rA 954 FontPathInit((char *)fontpath, fullfont); \ 000000F4 ........ LDR R0,??DataTable101 ;; fullfont \ 000000F8 001090E5 LDR R1,[R0, #+0] \ 000000FC 0400A0E1 MOV R0,R4 \ 00000100 ........ _BLF FontPathInit,??FontPathInit??rA 955 SetScrollEdgeDelay(scrollDelay); \ 00000104 40009FE5 LDR R0,??main_1+0x14 ;; scrollDelay \ 00000108 000090E5 LDR R0,[R0, #+0] \ 0000010C ........ _BLF SetScrollEdgeDelay,??SetScrollEdgeDelay??rA 956 SetFontColor((char*)fontColor,(char*)bgrColor,isOutline); \ 00000110 ........ LDR R0,??DataTable102 ;; isOutline \ 00000114 ........ LDR R1,??DataTable103 ;; bgrColor \ 00000118 002090E5 LDR R2,[R0, #+0] \ 0000011C ........ LDR R0,??DataTable104 ;; fontColor \ 00000120 FF2002E2 AND R2,R2,#0xFF \ 00000124 ........ _BLF SetFontColor,??SetFontColor??rA 957 start_again(); \ 00000128 ........ BL start_again 958 return 0; \ 0000012C 0000A0E3 MOV R0,#+0 \ 00000130 28D08DE2 ADD SP,SP,#+40 \ 00000134 F080BDE8 POP {R4-R7,PC} ;; return \ ??main_1: \ 00000138 ........ DC32 `?` \ 0000013C ........ DC32 MAINCSM \ 00000140 ........ DC32 `?` \ 00000144 ........ DC32 ENA_HELLO_MSG \ 00000148 ........ DC32 `?` \ 0000014C ........ DC32 scrollDelay 959 } \ In segment CODE, align 4, keep-with-next \ ??DataTable6: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable13: \ 00000000 ........ DC32 connect_state \ In segment CODE, align 4, keep-with-next \ ??DataTable14: \ 00000000 ........ DC32 sock \ In segment CODE, align 4, keep-with-next \ ??DataTable15: \ 00000000 ........ DC32 pbuf \ In segment CODE, align 4, keep-with-next \ ??DataTable18: \ 00000000 ........ DC32 flags \ In segment CODE, align 4, keep-with-next \ ??DataTable19: \ 00000000 ........ DC32 start_again \ In segment CODE, align 4, keep-with-next \ ??DataTable20: \ 00000000 ........ DC32 buf \ In segment CODE, align 4, keep-with-next \ ??DataTable21: \ 00000000 ........ DC32 ICON \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 mytmr \ In segment CODE, align 4, keep-with-next \ ??DataTable50: \ 00000000 ........ DC32 align1 \ In segment CODE, align 4, keep-with-next \ ??DataTable55: \ 00000000 ........ DC32 space \ In segment CODE, align 4, keep-with-next \ ??DataTable57: \ 00000000 ........ DC32 temp \ In segment CODE, align 4, keep-with-next \ ??DataTable58: \ 00000000 ........ DC32 str_temp \ In segment CODE, align 4, keep-with-next \ ??DataTable59: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable60: \ 00000000 ........ DC32 vlaznost \ In segment CODE, align 4, keep-with-next \ ??DataTable61: \ 00000000 ........ DC32 str_vlaznost \ In segment CODE, align 4, keep-with-next \ ??DataTable62: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable65: \ 00000000 ........ DC32 speed \ In segment CODE, align 4, keep-with-next \ ??DataTable67: \ 00000000 ........ DC32 prognoze \ In segment CODE, align 4, keep-with-next \ ??DataTable69: \ 00000000 ........ DC32 davlenie \ In segment CODE, align 4, keep-with-next \ ??DataTable71: \ 00000000 ........ DC32 scrollstr \ In segment CODE, align 4, keep-with-next \ ??DataTable73: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable82: \ 00000000 ........ DC32 sock \ In segment CODE, align 4, keep-with-next \ ??DataTable83: \ 00000000 ........ DC32 connect_state \ In segment CODE, align 4, keep-with-next \ ??DataTable84: \ 00000000 ........ DC32 gipc \ In segment CODE, align 4, keep-with-next \ ??DataTable85: \ 00000000 ........ DC32 icsm \ In segment CODE, align 4, keep-with-next \ ??DataTable86: \ 00000000 ........ DC32 canvasdata \ In segment CODE, align 4, keep-with-next \ ??DataTable87: \ 00000000 ........ DC32 show_temp \ In segment CODE, align 4, keep-with-next \ ??DataTable88: \ 00000000 ........ DC32 show_speed \ In segment CODE, align 4, keep-with-next \ ??DataTable89: \ 00000000 ........ DC32 show_prognoze \ In segment CODE, align 4, keep-with-next \ ??DataTable90: \ 00000000 ........ DC32 show_davlenie \ In segment CODE, align 4, keep-with-next \ ??DataTable91: \ 00000000 ........ DC32 show_vlaznost \ In segment CODE, align 4, keep-with-next \ ??DataTable92: \ 00000000 ........ DC32 flags \ In segment CODE, align 4, keep-with-next \ ??DataTable93: \ 00000000 ........ DC32 ICON \ In segment CODE, align 4, keep-with-next \ ??DataTable94: \ 00000000 ........ DC32 scrollTmr \ In segment CODE, align 4, keep-with-next \ ??DataTable95: \ 00000000 ........ DC32 mytmr \ In segment CODE, align 4, keep-with-next \ ??DataTable97: \ 00000000 ........ DC32 fontpath \ In segment CODE, align 4, keep-with-next \ ??DataTable98: \ 00000000 ........ DC32 font \ In segment CODE, align 4, keep-with-next \ ??DataTable99: \ 00000000 ........ DC32 successed_config_filename \ In segment CODE, align 4, keep-with-next \ ??DataTable100: \ 00000000 ........ DC32 Killer \ In segment CODE, align 4, keep-with-next \ ??DataTable101: \ 00000000 ........ DC32 fullfont \ In segment CODE, align 4, keep-with-next \ ??DataTable102: \ 00000000 ........ DC32 isOutline \ In segment CODE, align 4, keep-with-next \ ??DataTable103: \ 00000000 ........ DC32 bgrColor \ In segment CODE, align 4, keep-with-next \ ??DataTable104: \ 00000000 ........ DC32 fontColor \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 7370656300 DC8 "spec" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6461766C656E DC8 "davlenie" \ 696500 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?">`: \ 00000000 3C7374726F6E DC8 "" \ 673E00 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 206D6D486700 DC8 " mmHg" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766C617A6E6F DC8 "vlaznost" \ 737400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 202500 DC8 " %" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 737065656420 DC8 "speed veter" \ 766574657200 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 20EC2FF100 DC8 " \354/\361" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?">`: \ 00000000 3E3C7370616E DC8 ">" \ 3E00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 70726F676E6F DC8 "prognoze" \ 7A6500 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?">`: \ 00000000 3C2F6469763E DC8 "" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 416C6C206461 DC8 "All data reciev and parse!" \ 746120726563 \ 69657620616E \ 642070617273 \ 652100 \ 0000001B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 57726F6E6720 DC8 "Wrong reciev data! Waiting 60 second!" \ 726563696576 \ 206461746121 \ 205761697469 \ 6E6720363020 \ 7365636F6E64 \ 2100 \ 00000026 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 257325732563 DC8 "%s%s%c" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 2573257300 DC8 "%s%s" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 736176657765 DC8 "saveweath" \ 61746800 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6D616C6C6F63 DC8 "malloc" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 7320733200 DC8 "s s2" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 207C2000 DC8 " | " \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73686F775F73 DC8 "show_speed" \ 7065656400 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73686F772070 DC8 "show prognoze" \ 726F676E6F7A \ 6500 \ 0000000E 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73686F772064 DC8 "show davl" \ 61766C00 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73686F775F76 DC8 "show_vlazn" \ 6C617A6E00 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4D61696C5765 DC8 "MailWeather 2.4 config updated!" \ 617468657220 \ 322E3420636F \ 6E6669672075 \ 706461746564 \ 2100 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4D61696C5765 DC8 "MailWeather v3.0" \ 617468657220 \ 76332E3000 \ 00000011 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 506C65617365 DC8 "Please set config!" \ 207365742063 \ 6F6E66696721 \ 00 \ 00000013 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4D61696C5765 DC8 "MailWeather v3.0 (c)evilfox, kluchnik" \ 617468657220 \ 76332E302028 \ 63296576696C \ 666F782C206B \ 6C7563686E69 \ 6B00 \ 00000026 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 706963747572 DC8 "pictures" \ 657300 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 474554202F69 DC8 47H, 45H, 54H, 20H, 2FH, 69H, 6EH, 64H \ 6E64 \ 00000008 65782E786874 DC8 65H, 78H, 2EH, 78H, 68H, 74H, 6DH, 6CH \ 6D6C \ 00000010 3F2663697479 DC8 3FH, 26H, 63H, 69H, 74H, 79H, 3DH, 25H \ 3D25 \ 00000018 732048545450 DC8 73H, 20H, 48H, 54H, 54H, 50H, 2FH, 31H \ 2F31 \ 00000020 2E310A416363 DC8 2EH, 31H, 0AH, 41H, 63H, 63H, 65H, 70H \ 6570 \ 00000028 742D4C616E67 DC8 74H, 2DH, 4CH, 61H, 6EH, 67H, 75H, 61H \ 7561 \ 00000030 67653A20656E DC8 67H, 65H, 3AH, 20H, 65H, 6EH, 2DH, 75H \ 2D75 \ 00000038 730A41636365 DC8 73H, 0AH, 41H, 63H, 63H, 65H, 70H, 74H \ 7074 \ 00000040 2D456E636F64 DC8 2DH, 45H, 6EH, 63H, 6FH, 64H, 69H, 6EH \ 696E \ 00000048 673A20677A69 DC8 67H, 3AH, 20H, 67H, 7AH, 69H, 70H, 2CH \ 702C \ 00000050 206465666C61 DC8 20H, 64H, 65H, 66H, 6CH, 61H, 74H, 65H \ 7465 \ 00000058 0A557365722D DC8 0AH, 55H, 73H, 65H, 72H, 2DH, 41H, 67H \ 4167 \ 00000060 656E743A204D DC8 65H, 6EH, 74H, 3AH, 20H, 4DH, 6FH, 7AH \ 6F7A \ 00000068 696C6C612F34 DC8 69H, 6CH, 6CH, 61H, 2FH, 34H, 2EH, 30H \ 2E30 \ 00000070 2028636F6D70 DC8 20H, 28H, 63H, 6FH, 6DH, 70H, 61H, 74H \ 6174 \ 00000078 69626C653B20 DC8 69H, 62H, 6CH, 65H, 3BH, 20H, 4DH, 53H \ 4D53 \ 00000080 494520362E30 DC8 49H, 45H, 20H, 36H, 2EH, 30H, 3BH, 20H \ 3B20 \ 00000088 57696E646F77 DC8 57H, 69H, 6EH, 64H, 6FH, 77H, 73H, 20H \ 7320 \ 00000090 4E5420352E31 DC8 4EH, 54H, 20H, 35H, 2EH, 31H, 3BH, 20H \ 3B20 \ 00000098 535631290A48 DC8 53H, 56H, 31H, 29H, 0AH, 48H, 6FH, 73H \ 6F73 \ 000000A0 743A20776170 DC8 74H, 3AH, 20H, 77H, 61H, 70H, 2EH, 77H \ 2E77 \ 000000A8 656174686572 DC8 65H, 61H, 74H, 68H, 65H, 72H, 2EH, 6DH \ 2E6D \ 000000B0 61696C2E7275 DC8 61H, 69H, 6CH, 2EH, 72H, 75H, 0AH, 43H \ 0A43 \ 000000B8 6F6E6E656374 DC8 6FH, 6EH, 6EH, 65H, 63H, 74H, 69H, 6FH \ 696F \ 000000C0 6E3A20436C6F DC8 6EH, 3AH, 20H, 43H, 6CH, 6FH, 73H, 65H \ 7365 \ 000000C8 0A0A00 DC8 0AH, 0AH, 0 \ 000000CB 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 343A5C646562 DC8 "4:\\debug_weather.txt" \ 75675F776561 \ 746865722E74 \ 787400 \ 00000015 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 343A5C776561 DC8 "4:\\weather.txt" \ 746865722E74 \ 787400 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 0A00 DC8 "\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 737461727420 DC8 "start parsing" \ 70617273696E \ 6700 \ 0000000E 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 666F72656361 DC8 "forecast" \ 737400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 666F72656361 DC8 "forecasttext" \ 737474657874 \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73686F772074 DC8 "show temp" \ 656D7000 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 2F696D672F6E DC8 "/img/new/" \ 65772F00 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 257325732E70 DC8 "%s%s.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 3C696D672073 DC8 "`: \ 00000000 74656D706572 DC8 "temperature" \ 617475726500 \ In segment DATA_C, align 4, align-sorted \ `? 8 ? 12 ?"> 12 ? 8 ? 12 ? 3 ? 12 ? 8 ?"> 8 ? 12 ?"> 8 ? 28 ? 40 ? 8 ? 8 ? 12 ? 8 ? 8 ? 4 ? 12 ? 16 ? 12 ? 12 ? 32 ? 20 ? 20 ? 40 ? 12 ? 204 ? 24 ? 16 ? 2 ? 16 ? 12 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ?