############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 12/Aug/2008 18:43:58 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\feanor\bashorg\main.c # # Command line = D:\Pasha\elf\feanor\bashorg\main.c -D NEWSGOLD -D # # ELKA -lC D:\Pasha\elf\feanor\bashorg\Release_ELKA\Li # # st\ -o D:\Pasha\elf\feanor\bashorg\Release_ELKA\Obj\ # # -s9 --no_unroll --no_clustering --cpu_mode arm # # --endian little --cpu ARM7TDMI --stack_align 4 # # --interwork -e --fpu None --dlib_config # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl4tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\feanor\bashorg\Release_ELKA\List\main.l # # st # # Object file = D:\Pasha\elf\feanor\bashorg\Release_ELKA\Obj\main.r7 # # 9 # # # # # ############################################################################## D:\Pasha\elf\feanor\bashorg\main.c 1 #include "swilib.h" 2 #include "cfg_items.h" 3 #include "conf_loader.h" 4 5 \ In segment DATA_C, align 4, align-sorted 6 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 7 \ In segment DATA_Z, align 4, align-sorted 8 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 9 \ In segment DATA_Z, align 4, align-sorted 10 unsigned int MAINCSM_ID = 0; \ MAINCSM_ID: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 11 unsigned int MAINGUI_ID = 0; \ MAINGUI_ID: \ 00000000 DS8 4 12 13 14 15 16 extern const unsigned int ipp; 17 \ In segment DATA_Z, align 4, align-sorted 18 CSM_DESC icsmd; \ icsmd: \ 00000000 DS8 40 \ In segment DATA_Z, align 4, align-sorted 19 int (*old_icsm_onMessage)(CSM_RAM*,GBS_MSG*); \ old_icsm_onMessage: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 20 void (*old_icsm_onClose)(CSM_RAM*); \ old_icsm_onClose: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 21 int sock; \ sock: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 22 int connect_state; \ connect_state: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 23 char buf[65536]; \ buf: \ 00000000 DS8 65536 \ In segment DATA_Z, align 4, align-sorted 24 int pbuf; \ pbuf: \ 00000000 DS8 4 25 26 \ In segment DATA_Z, align 4, align-sorted 27 int receive; \ receive: \ 00000000 DS8 4 28 //intprogressbar=2; 29 30 31 32 typedef struct 33 { 34 CSM_RAM csm; 35 int gui_id; 36 }MAIN_CSM; 37 38 typedef struct 39 { 40 GUI gui; 41 WSHDR *ws1; 42 WSHDR *ws2; 43 int i1; 44 }MAIN_GUI; 45 \ In segment DATA_Z, align 4, align-sorted 46 int loaded; \ loaded: \ 00000000 DS8 4 47 48 typedef struct 49 { 50 //char author[32]; 51 char date[64]; 52 char comm[4096]; 53 char title[64]; 54 char link[64]; 55 56 int num; 57 char flag; 58 unsigned int mood; 59 60 61 }RSS; 62 \ In segment DATA_Z, align 4, align-sorted 63 RSS items[75]; \ items: \ 00000000 DS8 322500 \ In segment DATA_Z, align 4, align-sorted 64 char *item[75]; \ item: \ 00000000 DS8 300 \ In segment DATA_Z, align 4, align-sorted 65 int length; \ length: \ 00000000 DS8 4 66 67 \ In segment DATA_Z, align 4, align-sorted 68 int x,y; \ x: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted \ y: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 69 int mode; \ mode: \ 00000000 DS8 4 70 71 72 //================================================ 73 \ In segment DATA_C, align 4, align-sorted 74 const char wintranslation[128]= \ wintranslation: \ 00000000 5F5F275F223A DC8 95, 95, 39, 95, 34, 58, 197, 216, 95, 37, 95, 60, 95, 95, 95, 95 \ C5D85F255F3C \ 5F5F5F5F \ 00000010 5F2727222207 DC8 95, 39, 39, 34, 34, 7, 45, 45, 95, 84, 95, 62, 95, 95, 95, 95, 255 \ 2D2D5F545F3E \ 5F5F5F5FFF \ 00000021 F6F75FFD83B3 DC8 246, 247, 95, 253, 131, 179, 21, 240, 99, 242, 60, 191, 45, 82, 244 \ 15F063F23CBF \ 2D52F4 \ 00000030 F82B4969A3E7 DC8 248, 43, 73, 105, 163, 231, 20, 250, 241, 252, 243, 62, 95, 95, 95 \ 14FAF1FCF33E \ 5F5F5F \ 0000003F F58081828384 DC8 245, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 \ 85868788898A \ 8B \ 0000004C 8C8D8E8F9091 DC8 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152 \ 929394959697 \ 98 \ 00000059 999A9B9C9D9E DC8 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165 \ 9FA0A1A2A3A4 \ A5 \ 00000066 A6A7A8A9AAAB DC8 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 224, 225, 226 \ ACADAEAFE0E1 \ E2 \ 00000073 E3E4E5E6E7E8 DC8 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 \ E9EAEBECEDEE \ EF 75 { 76 0x5F,0x5F,0x27,0x5F,0x22,0x3A,0xC5,0xD8,0x5F,0x25,0x5F,0x3C,0x5F,0x5F,0x5F,0x5F, 77 0x5F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x5F,0x54,0x5F,0x3E,0x5F,0x5F,0x5F,0x5F, 78 0xFF,0xF6,0xF7,0x5F,0xFD,0x83,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4, 79 0xF8,0x2B,'I' ,'i' ,0xA3,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x5F,0x5F,0x5F,0xF5, 80 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 81 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 82 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 83 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF 84 }; \ In segment DATA_C, align 4, align-sorted 85 const unsigned short dos2unicode[128]= \ dos2unicode: \ 00000000 100411041204 DC16 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050 \ 130414041504 \ 160417041804 \ 19041A04 \ 00000016 1B041C041D04 DC16 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061 \ 1E041F042004 \ 210422042304 \ 24042504 \ 0000002C 260427042804 DC16 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072 \ 29042A042B04 \ 2C042D042E04 \ 2F043004 \ 00000042 310432043304 DC16 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083 \ 340435043604 \ 370438043904 \ 3A043B04 \ 00000058 3C043D043E04 DC16 1084, 1085, 1086, 1087, 45, 45, 45, 166, 43, 166, 166, 172, 172 \ 3F042D002D00 \ 2D00A6002B00 \ A600A600AC00 \ AC00 \ 00000072 A600A600AC00 DC16 166, 166, 172, 45, 45, 45, 172, 76, 43, 84, 43, 45, 43, 166, 166 \ 2D002D002D00 \ AC004C002B00 \ 54002B002D00 \ 2B00A600A600 \ 00000090 4C003304A600 DC16 76, 1075, 166, 84, 166, 61, 43, 166, 166, 84, 84, 76, 76, 45, 1075 \ 5400A6003D00 \ 2B00A600A600 \ 540054004C00 \ 4C002D003304 \ 000000AE 2B002B002D00 DC16 43, 43, 45, 45, 45, 45, 166, 166, 45, 1088, 1089, 1090, 1091, 1092 \ 2D002D002D00 \ A600A6002D00 \ 400441044204 \ 43044404 \ 000000CA 450446044704 DC16 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103 \ 480449044A04 \ 4B044C044D04 \ 4E044F04 \ 000000E0 010451040404 DC16 1025, 1105, 1028, 1108, 1031, 1111, 1038, 1118, 176, 8226, 183 \ 540407045704 \ 0E045E04B000 \ 2220B700 \ 000000F6 76001621A400 DC16 118, 8470, 164, 166, 160 \ A600A000 86 { 87 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 88 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 89 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 90 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 91 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 92 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 93 0x002D,0x002D,0x002D,0x00A6,0x002B,0x00A6,0x00A6,0x00AC, 94 0x00AC,0x00A6,0x00A6,0x00AC,0x002D,0x002D,0x002D,0x00AC, 95 0x004C,0x002B,0x0054,0x002B,0x002D,0x002B,0x00A6,0x00A6, 96 0x004C,0x0433,0x00A6,0x0054,0x00A6,0x003D,0x002B,0x00A6, 97 0x00A6,0x0054,0x0054,0x004C,0x004C,0x002D,0x0433,0x002B, 98 0x002B,0x002D,0x002D,0x002D,0x002D,0x00A6,0x00A6,0x002D, 99 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 100 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, 101 0x0401,0x0451,0x0404,0x0454,0x0407,0x0457,0x040E,0x045E, 102 0x00B0,0x2022,0x00B7,0x0076,0x2116,0x00A4,0x00A6,0x00A0 103 }; 104 \ In segment CODE, align 4, keep-with-next 105 unsigned int char8to16(int c) 106 { 107 if (c>=128) \ char8to16: \ 00000000 800050E3 CMP R0,#+128 \ 00000004 1EFF2FB1 BXLT LR 108 { 109 //Win->Dos 110 c=wintranslation[c-128]; \ 00000008 20109FE5 LDR R1,??char8to16_0 ;; wintranslation \ 0000000C 010080E0 ADD R0,R0,R1 \ 00000010 800050E5 LDRB R0,[R0, #-128] 111 if (c<128) return(c); \ 00000014 800050E3 CMP R0,#+128 \ 00000018 1EFF2FB1 BXLT LR 112 return(dos2unicode[c-128]); \ 0000001C FF10E0E3 MVN R1,#+255 \ 00000020 0C209FE5 LDR R2,??char8to16_0+0x4 ;; dos2unicode \ 00000024 800082E0 ADD R0,R2,R0, LSL #+1 \ 00000028 B00091E1 LDRH R0,[R1, +R0] 113 } 114 return(c); \ 0000002C 1EFF2FE1 BX LR ;; return \ ??char8to16_0: \ 00000030 ........ DC32 wintranslation \ 00000034 ........ DC32 dos2unicode 115 } 116 \ In segment CODE, align 4, keep-with-next 117 void ascii2ws(WSHDR *ws, const char *s) 118 { \ ascii2ws: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 119 char c; 120 CutWSTR(ws,0); \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 260100EF SWI +294 \ 00000014 050000EA B ??ascii2ws_0 121 while((c=*s++)) 122 { 123 if(c!=0xE) wsAppendChar(ws,char8to16(c)); \ ??ascii2ws_1: \ 00000018 0E0051E3 CMP R1,#+14 \ 0000001C 0300000A BEQ ??ascii2ws_0 \ 00000020 ........ BL char8to16 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 1C0000EF SWI +28 124 } \ ??ascii2ws_0: \ 00000030 ........ LDRB R1,[R5], #+1 \ 00000034 0100B0E1 MOVS R0,R1 \ 00000038 F6FFFF1A BNE ??ascii2ws_1 125 } \ 0000003C 3040BDE8 POP {R4,R5,LR} \ 00000040 1EFF2FE1 BX LR ;; return 126 //=========================================== 127 \ In segment CODE, align 4, keep-with-next 128 void create_connect(void) 129 { \ create_connect: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 10D04DE2 SUB SP,SP,#+16 130 SOCK_ADDR sa; 131 //Устанавливаем соединение 132 connect_state=0; \ 00000008 ........ LDR R4,??DataTable6 ;; connect_state \ 0000000C 0000A0E3 MOV R0,#+0 \ 00000010 000084E5 STR R0,[R4, #+0] 133 pbuf=0; \ 00000014 ........ LDR R1,??DataTable8 ;; pbuf \ 00000018 000081E5 STR R0,[R1, #+0] 134 sock=socket(1,1,0); \ 0000001C ........ LDR R5,??DataTable11 ;; sock \ 00000020 0020A0E3 MOV R2,#+0 \ 00000024 0110A0E3 MOV R1,#+1 \ 00000028 0100A0E1 MOV R0,R1 \ 0000002C 730100EF SWI +371 \ 00000030 000085E5 STR R0,[R5, #+0] 135 if (sock!=-1) \ 00000034 0060E0E3 MVN R6,#+0 \ 00000038 060050E1 CMP R0,R6 \ 0000003C 1500000A BEQ ??create_connect_0 136 { 137 sa.family=1; \ 00000040 0170A0E3 MOV R7,#+1 \ 00000044 B070CDE1 STRH R7,[SP, #+0] 138 sa.port=htons(80); \ 00000048 5000A0E3 MOV R0,#+80 \ 0000004C 7A0100EF SWI +378 \ 00000050 B200CDE1 STRH R0,[SP, #+2] 139 //sa.ip=htonl(IP_ADDR(83,222,3,55)); 140 //sa.ip=htonl(IP_ADDR(85,112,149,157)); 141 //sa.ip=htonl(IP_ADDR(74,55,2,115)); 142 sa.ip=htonl(ipp); \ 00000054 44009FE5 LDR R0,??create_connect_1 ;; ipp \ 00000058 000090E5 LDR R0,[R0, #+0] \ 0000005C 7B0100EF SWI +379 \ 00000060 04008DE5 STR R0,[SP, #+4] 143 144 145 if (connect(sock,&sa,sizeof(sa))!=-1) \ 00000064 1020A0E3 MOV R2,#+16 \ 00000068 0D10A0E1 MOV R1,SP \ 0000006C 000095E5 LDR R0,[R5, #+0] \ 00000070 740100EF SWI +372 \ 00000074 060050E1 CMP R0,R6 \ 00000078 0400000A BEQ ??create_connect_2 146 { 147 connect_state=1; \ 0000007C 007084E5 STR R7,[R4, #+0] 148 receive=1; \ 00000080 ........ LDR R0,??DataTable25 ;; receive \ 00000084 007080E5 STR R7,[R0, #+0] 149 REDRAW(); \ 00000088 720100EF SWI +370 \ 0000008C 010000EA B ??create_connect_0 150 } 151 else 152 closesocket(sock); \ ??create_connect_2: \ 00000090 000095E5 LDR R0,[R5, #+0] \ 00000094 760100EF SWI +374 153 } 154 } \ ??create_connect_0: \ 00000098 FF40BDE8 POP {R0-R7,LR} \ 0000009C 1EFF2FE1 BX LR ;; return \ ??create_connect_1: \ 000000A0 ........ DC32 ipp 155 \ In segment CODE, align 4, keep-with-next 156 void do_start_connection(void) 157 { \ do_start_connection: \ 00000000 00402DE9 PUSH {LR} 158 SUBPROC((void *)create_connect); \ 00000004 14009FE5 LDR R0,??do_start_connection_0 ;; create_connect \ 00000008 710100EF SWI +369 159 receive=0; \ 0000000C ........ LDR R0,??DataTable25 ;; receive \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 001080E5 STR R1,[R0, #+0] 160 } \ 00000018 0040BDE8 POP {LR} \ 0000001C 1EFF2FE1 BX LR ;; return \ ??do_start_connection_0: \ 00000020 ........ DC32 create_connect 161 \ In segment DATA_Z, align 4, align-sorted 162 char req_buf[256]; \ req_buf: \ 00000000 DS8 256 163 \ In segment CODE, align 4, keep-with-next 164 void send_req(void) 165 { \ send_req: \ 00000000 10402DE9 PUSH {R4,LR} 166 sprintf(req_buf,"GET /rss/ HTTP/1.0\r\nHost: www.bash.org.ru\r\n\r\n"); \ 00000004 3C409FE5 LDR R4,??send_req_0 ;; req_buf \ 00000008 3C109FE5 LDR R1,??send_req_0+0x4 ;; `?` \ 0000000C 0400A0E1 MOV R0,R4 \ 00000010 160000EF SWI +22 167 send(sock,req_buf,strlen(req_buf),0); \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 1B0000EF SWI +27 \ 0000001C 0030A0E3 MOV R3,#+0 \ 00000020 0020A0E1 MOV R2,R0 \ 00000024 0410A0E1 MOV R1,R4 \ 00000028 ........ LDR R0,??DataTable11 ;; sock \ 0000002C 000090E5 LDR R0,[R0, #+0] \ 00000030 790100EF SWI +377 168 connect_state=2; \ 00000034 ........ LDR R0,??DataTable6 ;; connect_state \ 00000038 0210A0E3 MOV R1,#+2 \ 0000003C 001080E5 STR R1,[R0, #+0] 169 } \ 00000040 1040BDE8 POP {R4,LR} \ 00000044 1EFF2FE1 BX LR ;; return \ ??send_req_0: \ 00000048 ........ DC32 req_buf \ 0000004C ........ DC32 `?` 170 171 172 \ In segment CODE, align 4, keep-with-next 173 void end_socket(void) 174 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 175 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable11 ;; sock \ 00000008 000094E5 LDR R0,[R4, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0300004A BMI ??end_socket_0 176 { 177 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 178 closesocket(sock); \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 760100EF SWI +374 179 180 } 181 } \ ??end_socket_0: \ 00000024 1040BDE8 POP {R4,LR} \ 00000028 1EFF2FE1 BX LR ;; return 182 183 extern const unsigned int limit; 184 185 \ In segment CODE, align 4, keep-with-next 186 void get_answer(void) 187 { \ get_answer: \ 00000000 10402DE9 PUSH {R4,LR} 188 int i=pbuf; \ 00000004 ........ LDR R4,??DataTable8 ;; pbuf \ 00000008 000094E5 LDR R0,[R4, #+0] 189 if (i==limit) \ 0000000C ........ LDR R1,??DataTable9 ;; limit \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 010050E1 CMP R0,R1 \ 00000018 0C00000A BEQ ??get_answer_0 190 end_socket(); 191 else 192 { 193 i=recv(sock,buf+i,limit-i,0); \ 0000001C 0030A0E3 MOV R3,#+0 \ 00000020 002041E0 SUB R2,R1,R0 \ 00000024 ........ LDR R1,??DataTable12 ;; buf \ 00000028 011080E0 ADD R1,R0,R1 \ 0000002C ........ LDR R0,??DataTable11 ;; sock \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 780100EF SWI +376 194 if (i>=0) \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 0300004A BMI ??get_answer_0 195 { 196 pbuf+=i; \ 00000040 001094E5 LDR R1,[R4, #+0] \ 00000044 010080E0 ADD R0,R0,R1 \ 00000048 000084E5 STR R0,[R4, #+0] \ 0000004C 000000EA B ??get_answer_1 197 } 198 else 199 { 200 end_socket(); \ ??get_answer_0: \ 00000050 ........ BL end_socket 201 } 202 } 203 } \ ??get_answer_1: \ 00000054 1040BDE8 POP {R4,LR} \ 00000058 1EFF2FE1 BX LR ;; return 204 205 //=========================================== 206 207 \ In segment CODE, align 4, keep-with-next 208 int atoi(char *attr) 209 { 210 int ret=0; \ atoi: \ 00000000 0010A0E3 MOV R1,#+0 211 for (int k=0; ; k++) \ 00000004 0020A0E3 MOV R2,#+0 \ 00000008 0AC0A0E3 MOV R12,#+10 \ 0000000C 020000EA B ??atoi_0 212 { 213 if ( attr[k]>0x2F && attr[k]<0x3A) {ret=ret*10+attr[k]-0x30;} else {return (ret);} \ ??atoi_1: \ 00000010 9C3121E0 MLA R1,R12,R1,R3 \ 00000014 301041E2 SUB R1,R1,#+48 \ 00000018 012082E2 ADD R2,R2,#+1 \ ??atoi_0: \ 0000001C 0030D2E7 LDRB R3,[R2, +R0] \ 00000020 300053E3 CMP R3,#+48 \ 00000024 0100003A BCC ??atoi_2 \ 00000028 3A0053E3 CMP R3,#+58 \ 0000002C F7FFFF3A BCC ??atoi_1 \ ??atoi_2: \ 00000030 0100A0E1 MOV R0,R1 \ 00000034 1EFF2FE1 BX LR ;; return 214 } 215 216 } 217 218 219 void GetMood(int xs); 220 \ In segment CODE, align 4, keep-with-next 221 void Parsing() 222 { \ Parsing: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 ........ LDR R4,??DataTable12 ;; buf \ 00000008 24539FE5 LDR R5,??Parsing_0+0x4 ;; `?">` \ 0000000C 0510A0E1 MOV R1,R5 \ 00000010 0400A0E1 MOV R0,R4 223 224 item[0]=strstr(buf,""); \ 00000014 180100EF SWI +280 \ 00000018 18139FE5 LDR R1,??Parsing_0+0x8 ;; item \ 0000001C 000081E5 STR R0,[R1, #+0] 225 226 for (int j=1; j!=75; j++) \ 00000020 0160A0E3 MOV R6,#+1 227 { 228 item[j]=strstr(item[j-1]+5,""); \ ??Parsing_1: \ 00000024 0C039FE5 LDR R0,??Parsing_0+0x8 ;; item \ 00000028 067180E0 ADD R7,R0,R6, LSL #+2 \ 0000002C 0510A0E1 MOV R1,R5 \ 00000030 040017E5 LDR R0,[R7, #-4] \ 00000034 050080E2 ADD R0,R0,#+5 \ 00000038 180100EF SWI +280 \ 0000003C 000087E5 STR R0,[R7, #+0] 229 } \ 00000040 016086E2 ADD R6,R6,#+1 \ 00000044 4B0056E3 CMP R6,#+75 \ 00000048 F5FFFF1A BNE ??Parsing_1 230 231 length=atoi(strstr(buf,"Content-Length: ")+16); \ 0000004C E8129FE5 LDR R1,??Parsing_0+0xC ;; `?` \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 180100EF SWI +280 \ 00000058 100080E2 ADD R0,R0,#+16 \ 0000005C ........ BL atoi \ 00000060 D8129FE5 LDR R1,??Parsing_0+0x10 ;; length \ 00000064 000081E5 STR R0,[R1, #+0] 232 233 for(int i=0; i!=75; i++) \ 00000068 0040A0E3 MOV R4,#+0 \ 0000006C ........ LDR R7,??DataTable27 ;; items 234 { 235 //snprintf(items[i].author,32,"%s",strstr(item[i],"")+8); 236 // for (int j=1; j!=33 ;j++) {if ((items[i].author)[j]=='<') {(items[i].author)[j]=0; break;}} 237 238 239 //snprintf(items[i].date,64,"%s",strstr(item[i],"Date")+5); 240 strncpy(items[i].date,strstr(item[i],"Date")+5,64); \ ??Parsing_2: \ 00000070 C0029FE5 LDR R0,??Parsing_0+0x8 ;; item \ 00000074 045180E0 ADD R5,R0,R4, LSL #+2 \ 00000078 C4129FE5 LDR R1,??Parsing_0+0x14 ;; `?` \ 0000007C 000095E5 LDR R0,[R5, #+0] \ 00000080 180100EF SWI +280 \ 00000084 CC10A0E3 MOV R1,#+204 \ 00000088 401D81E3 ORR R1,R1,#0x1000 \ 0000008C 910406E0 MUL R6,R1,R4 \ 00000090 078086E0 ADD R8,R6,R7 \ 00000094 4020A0E3 MOV R2,#+64 \ 00000098 051080E2 ADD R1,R0,#+5 \ 0000009C 0800A0E1 MOV R0,R8 \ 000000A0 160100EF SWI +278 241 242 items[i].flag = atoi(strstr(items[i].date,"+")+1); \ 000000A4 A11F8FE2 ADR R1,??Parsing_0 ;; "+" \ 000000A8 0800A0E1 MOV R0,R8 \ 000000AC 180100EF SWI +280 \ 000000B0 439D88E2 ADD R9,R8,#+4288 \ 000000B4 010080E2 ADD R0,R0,#+1 \ 000000B8 ........ BL atoi \ 000000BC 0400C9E5 STRB R0,[R9, #+4] 243 if (items[i].flag!=0) {loaded++;} \ 000000C0 0400D9E5 LDRB R0,[R9, #+4] \ 000000C4 000050E3 CMP R0,#+0 \ 000000C8 0300000A BEQ ??Parsing_3 \ 000000CC ........ LDR R0,??DataTable24 ;; loaded \ 000000D0 001090E5 LDR R1,[R0, #+0] \ 000000D4 011081E2 ADD R1,R1,#+1 \ 000000D8 001080E5 STR R1,[R0, #+0] 244 245 for (int j=1; j!=65 ;j++) {if ((items[i].date)[j]=='+') {(items[i].date)[j]=0; break;}} \ ??Parsing_3: \ 000000DC 0100A0E3 MOV R0,#+1 \ ??Parsing_4: \ 000000E0 0810D0E7 LDRB R1,[R0, +R8] \ 000000E4 2B0051E3 CMP R1,#+43 \ 000000E8 0010A003 MOVEQ R1,#+0 \ 000000EC 0810C007 STRBEQ R1,[R0, +R8] \ 000000F0 01008012 ADDNE R0,R0,#+1 \ 000000F4 41005013 CMPNE R0,#+65 \ 000000F8 F8FFFF1A BNE ??Parsing_4 246 247 248 249 250 //snprintf(items[i].comm,4096,"%s",strstr(item[i],"CDATA")+6); 251 strncpy(items[i].comm,strstr(item[i],"CDATA")+6,4096); \ 000000FC 44129FE5 LDR R1,??Parsing_0+0x18 ;; `?` \ 00000100 000095E5 LDR R0,[R5, #+0] \ 00000104 180100EF SWI +280 \ 00000108 402DA0E3 MOV R2,#+4096 \ 0000010C 061080E2 ADD R1,R0,#+6 \ 00000110 400088E2 ADD R0,R8,#+64 \ 00000114 160100EF SWI +278 252 for (int j=0; j!=4097 ;j++) { \ 00000118 0000A0E3 MOV R0,#+0 253 254 if ((items[i].comm)[j]==']' && (items[i].comm)[j+1]==']') {(items[i].comm)[j]=0; break;} \ ??Parsing_5: \ 0000011C 081080E0 ADD R1,R0,R8 \ 00000120 4010D1E5 LDRB R1,[R1, #+64] \ 00000124 012080E2 ADD R2,R0,#+1 \ 00000128 083082E0 ADD R3,R2,R8 \ 0000012C 5D0051E3 CMP R1,#+93 \ 00000130 40A0D305 LDRBEQ R10,[R3, #+64] \ 00000134 5D005A03 CMPEQ R10,#+93 \ 00000138 0400001A BNE ??Parsing_6 \ 0000013C 070080E0 ADD R0,R0,R7 \ 00000140 000086E0 ADD R0,R6,R0 \ 00000144 0010A0E3 MOV R1,#+0 \ 00000148 4010C0E5 STRB R1,[R0, #+64] \ 0000014C 3D0000EA B ??Parsing_7 255 if ((items[i].comm)[j]=='&' && (items[i].comm)[j+1]=='l') {(items[i].comm)[j]='«'; (items[i].comm)[j+1]=0xE; (items[i].comm)[j+2]=0xE; (items[i].comm)[j+3]=0xE; } \ ??Parsing_6: \ 00000150 03A080E2 ADD R10,R0,#+3 \ 00000154 08A08AE0 ADD R10,R10,R8 \ 00000158 02C080E2 ADD R12,R0,#+2 \ 0000015C 08C08CE0 ADD R12,R12,R8 \ 00000160 0EE0A0E3 MOV LR,#+14 \ 00000164 260051E3 CMP R1,#+38 \ 00000168 4010D305 LDRBEQ R1,[R3, #+64] \ 0000016C 6C005103 CMPEQ R1,#+108 \ 00000170 0500001A BNE ??Parsing_8 \ 00000174 081080E0 ADD R1,R0,R8 \ 00000178 ABB0A0E3 MOV R11,#+171 \ 0000017C 40B0C1E5 STRB R11,[R1, #+64] \ 00000180 40E0C3E5 STRB LR,[R3, #+64] \ 00000184 40E0CCE5 STRB LR,[R12, #+64] \ 00000188 40E0CAE5 STRB LR,[R10, #+64] 256 if ((items[i].comm)[j]=='<' && (items[i].comm)[j+1]=='b') {(items[i].comm)[j]=0xD; (items[i].comm)[j+1]=0xE; (items[i].comm)[j+2]=0xE; (items[i].comm)[j+3]=0xE; } \ ??Parsing_8: \ 0000018C 081080E0 ADD R1,R0,R8 \ 00000190 4010D1E5 LDRB R1,[R1, #+64] \ 00000194 3C0051E3 CMP R1,#+60 \ 00000198 4010D305 LDRBEQ R1,[R3, #+64] \ 0000019C 62005103 CMPEQ R1,#+98 \ 000001A0 0500001A BNE ??Parsing_9 \ 000001A4 081080E0 ADD R1,R0,R8 \ 000001A8 0DB0A0E3 MOV R11,#+13 \ 000001AC 40B0C1E5 STRB R11,[R1, #+64] \ 000001B0 40E0C3E5 STRB LR,[R3, #+64] \ 000001B4 40E0CCE5 STRB LR,[R12, #+64] \ 000001B8 40E0CAE5 STRB LR,[R10, #+64] 257 if ((items[i].comm)[j]=='&' && (items[i].comm)[j+1]=='g') {(items[i].comm)[j]='»'; (items[i].comm)[j+1]=0xE; (items[i].comm)[j+2]=0xE; (items[i].comm)[j+3]=0xE; } \ ??Parsing_9: \ 000001BC 081080E0 ADD R1,R0,R8 \ 000001C0 4010D1E5 LDRB R1,[R1, #+64] \ 000001C4 260051E3 CMP R1,#+38 \ 000001C8 4010D305 LDRBEQ R1,[R3, #+64] \ 000001CC 67005103 CMPEQ R1,#+103 \ 000001D0 0500001A BNE ??Parsing_10 \ 000001D4 081080E0 ADD R1,R0,R8 \ 000001D8 BBB0A0E3 MOV R11,#+187 \ 000001DC 40B0C1E5 STRB R11,[R1, #+64] \ 000001E0 40E0C3E5 STRB LR,[R3, #+64] \ 000001E4 40E0CCE5 STRB LR,[R12, #+64] \ 000001E8 40E0CAE5 STRB LR,[R10, #+64] 258 if ((items[i].comm)[j]=='&' && (items[i].comm)[j+1]=='q') {(items[i].comm)[j]='"'; (items[i].comm)[j+1]=0xE; (items[i].comm)[j+2]=0xE; (items[i].comm)[j+3]=0xE; (items[i].comm)[j+4]=0xE; (items[i].comm)[j+5]=0xE; } \ ??Parsing_10: \ 000001EC 081080E0 ADD R1,R0,R8 \ 000001F0 4010D1E5 LDRB R1,[R1, #+64] \ 000001F4 260051E3 CMP R1,#+38 \ 000001F8 4010D305 LDRBEQ R1,[R3, #+64] \ 000001FC 71005103 CMPEQ R1,#+113 \ 00000200 0B00001A BNE ??Parsing_11 \ 00000204 081080E0 ADD R1,R0,R8 \ 00000208 22B0A0E3 MOV R11,#+34 \ 0000020C 40B0C1E5 STRB R11,[R1, #+64] \ 00000210 40E0C3E5 STRB LR,[R3, #+64] \ 00000214 40E0CCE5 STRB LR,[R12, #+64] \ 00000218 40E0CAE5 STRB LR,[R10, #+64] \ 0000021C 041080E2 ADD R1,R0,#+4 \ 00000220 081081E0 ADD R1,R1,R8 \ 00000224 40E0C1E5 STRB LR,[R1, #+64] \ 00000228 050080E2 ADD R0,R0,#+5 \ 0000022C 080080E0 ADD R0,R0,R8 \ 00000230 40E0C0E5 STRB LR,[R0, #+64] 259 } \ ??Parsing_11: \ 00000234 0200A0E1 MOV R0,R2 \ 00000238 0110A0E3 MOV R1,#+1 \ 0000023C 401D81E3 ORR R1,R1,#0x1000 \ 00000240 010050E1 CMP R0,R1 \ 00000244 B4FFFF1A BNE ??Parsing_5 260 261 262 //snprintf(revis[i].elf,32,"%s",strstr(item[i],"/ARM/")+5); 263 // for (int j=1; ;j++) {if ((revis[i].elf)[j]=='/' || (revis[i].elf)[j]==' ') {(revis[i].elf)[j]=0; break;}} 264 265 //snprintf(items[i].title,64,"%s",strstr(item[i],"")+7); 266 strncpy(items[i].title,strstr(item[i],"<title>")+7,64); \ ??Parsing_7: \ 00000248 FC109FE5 LDR R1,??Parsing_0+0x1C ;; `?<Constant "<title>">` \ 0000024C 000095E5 LDR R0,[R5, #+0] \ 00000250 180100EF SWI +280 \ 00000254 41ADA0E3 MOV R10,#+4160 \ 00000258 4020A0E3 MOV R2,#+64 \ 0000025C 071080E2 ADD R1,R0,#+7 \ 00000260 08008AE0 ADD R0,R10,R8 \ 00000264 160100EF SWI +278 267 for (int j=1; j!=65 ;j++) {if ((items[i].title)[j]=='<') {(items[i].title)[j]=0; break;}} \ 00000268 0100A0E3 MOV R0,#+1 \ ??Parsing_12: \ 0000026C 081080E0 ADD R1,R0,R8 \ 00000270 0110DAE7 LDRB R1,[R10, +R1] \ 00000274 3C0051E3 CMP R1,#+60 \ 00000278 0400001A BNE ??Parsing_13 \ 0000027C 070080E0 ADD R0,R0,R7 \ 00000280 000086E0 ADD R0,R6,R0 \ 00000284 0010A0E3 MOV R1,#+0 \ 00000288 0010CAE7 STRB R1,[R10, +R0] \ 0000028C 020000EA B ??Parsing_14 \ ??Parsing_13: \ 00000290 010080E2 ADD R0,R0,#+1 \ 00000294 410050E3 CMP R0,#+65 \ 00000298 F3FFFF1A BNE ??Parsing_12 268 269 270 //snprintf(items[i].link,64,"%s",strstr(item[i],"<link>")+6); 271 strncpy(items[i].link,strstr(item[i],"<link>")+6,64); \ ??Parsing_14: \ 0000029C AC109FE5 LDR R1,??Parsing_0+0x20 ;; `?<Constant "<link>">` \ 000002A0 000095E5 LDR R0,[R5, #+0] \ 000002A4 180100EF SWI +280 \ 000002A8 42ADA0E3 MOV R10,#+4224 \ 000002AC 4020A0E3 MOV R2,#+64 \ 000002B0 061080E2 ADD R1,R0,#+6 \ 000002B4 08008AE0 ADD R0,R10,R8 \ 000002B8 160100EF SWI +278 272 for (int j=1; j!=65 ;j++) {if ((items[i].link)[j]=='<') {(items[i].link)[j]=0; break;}} \ 000002BC 0100A0E3 MOV R0,#+1 \ ??Parsing_15: \ 000002C0 081080E0 ADD R1,R0,R8 \ 000002C4 0110DAE7 LDRB R1,[R10, +R1] \ 000002C8 3C0051E3 CMP R1,#+60 \ 000002CC 0400001A BNE ??Parsing_16 \ 000002D0 070080E0 ADD R0,R0,R7 \ 000002D4 000086E0 ADD R0,R6,R0 \ 000002D8 0010A0E3 MOV R1,#+0 \ 000002DC 0010CAE7 STRB R1,[R10, +R0] \ 000002E0 020000EA B ??Parsing_17 \ ??Parsing_16: \ 000002E4 010080E2 ADD R0,R0,#+1 \ 000002E8 410050E3 CMP R0,#+65 \ 000002EC F3FFFF1A BNE ??Parsing_15 273 274 275 items[i].num=atoi(strstr(item[i],"uote/")+5); \ ??Parsing_17: \ 000002F0 5C109FE5 LDR R1,??Parsing_0+0x24 ;; `?<Constant "uote/">` \ 000002F4 000095E5 LDR R0,[R5, #+0] \ 000002F8 180100EF SWI +280 \ 000002FC 050080E2 ADD R0,R0,#+5 \ 00000300 ........ BL atoi \ 00000304 000089E5 STR R0,[R9, #+0] 276 items[i].mood=255; \ 00000308 FF00A0E3 MOV R0,#+255 \ 0000030C 080089E5 STR R0,[R9, #+8] 277 278 } \ 00000310 014084E2 ADD R4,R4,#+1 \ 00000314 4B0054E3 CMP R4,#+75 \ 00000318 54FFFF1A BNE ??Parsing_2 279 receive=2; \ 0000031C ........ LDR R0,??DataTable25 ;; receive \ 00000320 0210A0E3 MOV R1,#+2 \ 00000324 001080E5 STR R1,[R0, #+0] 280 } \ 00000328 F04FBDE8 POP {R4-R11,LR} \ 0000032C 1EFF2FE1 BX LR ;; return \ ??Parsing_0: \ 00000330 2B000000 DC8 "+",+0,+0 \ 00000334 ........ DC32 `?<Constant "<item>">` \ 00000338 ........ DC32 item \ 0000033C ........ DC32 `?<Constant "Content-Length: ">` \ 00000340 ........ DC32 length \ 00000344 ........ DC32 `?<Constant "Date">` \ 00000348 ........ DC32 `?<Constant "CDATA">` \ 0000034C ........ DC32 `?<Constant "<title>">` \ 00000350 ........ DC32 `?<Constant "<link>">` \ 00000354 ........ DC32 `?<Constant "uote/">` 281 282 283 284 //=========================================== 285 286 287 extern const char hist_path[64]; 288 extern const unsigned int ic; 289 \ In segment DATA_C, align 4, align-sorted 290 const char _fstr[]="%s\\q%i.bash"; \ _fstr: \ 00000000 25735C712569 DC8 "%s\\q%i.bash" \ 2E6261736800 \ In segment DATA_C, align 1, align-sorted 291 const char _oktotorp[]="#"; \ _oktotorp: \ 00000000 2300 DC8 "#" 292 293 \ In segment CODE, align 4, keep-with-next 294 void GetMood(int xs) 295 { \ GetMood: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 8CD04DE2 SUB SP,SP,#+140 296 if(items[xs].mood==255) \ 00000008 CC10A0E3 MOV R1,#+204 \ 0000000C 401D81E3 ORR R1,R1,#0x1000 \ 00000010 ........ LDR R2,??DataTable27 ;; items \ 00000014 912020E0 MLA R0,R1,R0,R2 \ 00000018 0410C1E3 BIC R1,R1,#0x4 \ 0000001C 004081E0 ADD R4,R1,R0 \ 00000020 001094E5 LDR R1,[R4, #+0] \ 00000024 FF0051E3 CMP R1,#+255 \ 00000028 2D00001A BNE ??GetMood_0 297 { 298 int xx=0; \ 0000002C 0050A0E3 MOV R5,#+0 299 char path[96]; 300 sprintf(path,"%s\\q%i.bash",hist_path,atoi(strstr(items[xs].title,_oktotorp)+1 ) ); \ 00000030 ........ LDR R1,??DataTable21 ;; _oktotorp \ 00000034 410D80E2 ADD R0,R0,#+4160 \ 00000038 180100EF SWI +280 \ 0000003C 010080E2 ADD R0,R0,#+1 \ 00000040 ........ BL atoi \ 00000044 0030A0E1 MOV R3,R0 \ 00000048 ........ LDR R2,??DataTable22 ;; hist_path \ 0000004C ........ LDR R1,??DataTable23 ;; `?<Constant "%s\\\\q%i.bash">` \ 00000050 04008DE2 ADD R0,SP,#+4 \ 00000054 160000EF SWI +22 301 unsigned int ul; 302 int f; 303 char* buffer; 304 FSTATS StatBuffer; 305 306 int size; 307 if ((f=fopen(path,A_ReadOnly,P_READ,&ul))!=-1) \ 00000058 0D30A0E1 MOV R3,SP \ 0000005C 8020A0E3 MOV R2,#+128 \ 00000060 0010A0E3 MOV R1,#+0 \ 00000064 04008DE2 ADD R0,SP,#+4 \ 00000068 0A0000EF SWI +10 \ 0000006C 0060A0E1 MOV R6,R0 \ 00000070 010076E3 CMN R6,#+1 \ 00000074 1900000A BEQ ??GetMood_1 308 { 309 GetFileStats(path,&StatBuffer,&ul); \ 00000078 0D20A0E1 MOV R2,SP \ 0000007C 64108DE2 ADD R1,SP,#+100 \ 00000080 04008DE2 ADD R0,SP,#+4 \ 00000084 840000EF SWI +132 310 size=StatBuffer.size; \ 00000088 68509DE5 LDR R5,[SP, #+104] 311 buffer=malloc(size); \ 0000008C 0500A0E1 MOV R0,R5 \ 00000090 140000EF SWI +20 \ 00000094 0070A0E1 MOV R7,R0 312 fread(f, buffer,size, &ul); \ 00000098 0D30A0E1 MOV R3,SP \ 0000009C 0520A0E1 MOV R2,R5 \ 000000A0 0710A0E1 MOV R1,R7 \ 000000A4 0600A0E1 MOV R0,R6 \ 000000A8 0B0000EF SWI +11 313 314 xx=atoi(strstr(buffer,"MOOD: ")+6); \ 000000AC 3C109FE5 LDR R1,??GetMood_2 ;; `?<Constant "MOOD: ">` \ 000000B0 0700A0E1 MOV R0,R7 \ 000000B4 180100EF SWI +280 \ 000000B8 060080E2 ADD R0,R0,#+6 \ 000000BC ........ BL atoi \ 000000C0 0050A0E1 MOV R5,R0 315 316 fclose(f,&ul); \ 000000C4 0D10A0E1 MOV R1,SP \ 000000C8 0600A0E1 MOV R0,R6 \ 000000CC 0D0000EF SWI +13 317 mfree(buffer); \ 000000D0 0700A0E1 MOV R0,R7 \ 000000D4 150000EF SWI +21 318 items[xs].mood=30; \ 000000D8 1E00A0E3 MOV R0,#+30 \ 000000DC 000084E5 STR R0,[R4, #+0] 319 } 320 items[xs].mood=xx; \ ??GetMood_1: \ 000000E0 005084E5 STR R5,[R4, #+0] 321 } 322 } \ ??GetMood_0: \ 000000E4 8CD08DE2 ADD SP,SP,#+140 ;; stack cleaning \ 000000E8 F040BDE8 POP {R4-R7,LR} \ 000000EC 1EFF2FE1 BX LR ;; return \ ??GetMood_2: \ 000000F0 ........ DC32 `?<Constant "MOOD: ">` 323 324 extern const char ic_path[64]; 325 \ In segment CODE, align 4, keep-with-next 326 void DrawMoodIcon(int x, int y, int ic) 327 { \ DrawMoodIcon: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 60D04DE2 SUB SP,SP,#+96 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 328 char pth[96]; 329 330 sprintf(pth,"%s\\%i.png",ic_path,ic); \ 00000010 0230A0E1 MOV R3,R2 \ 00000014 24209FE5 LDR R2,??DrawMoodIcon_0 ;; ic_path \ 00000018 24109FE5 LDR R1,??DrawMoodIcon_0+0x4 ;; `?<Constant "%s\\\\%i.png">` \ 0000001C 0D00A0E1 MOV R0,SP \ 00000020 160000EF SWI +22 331 DrawImg(x,y,(int)pth); \ 00000024 0D20A0E1 MOV R2,SP \ 00000028 0510A0E1 MOV R1,R5 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 230000EF SWI +35 332 } \ 00000034 60D08DE2 ADD SP,SP,#+96 ;; stack cleaning \ 00000038 3040BDE8 POP {R4,R5,LR} \ 0000003C 1EFF2FE1 BX LR ;; return \ ??DrawMoodIcon_0: \ 00000040 ........ DC32 ic_path \ 00000044 ........ DC32 `?<Constant "%s\\\\%i.png">` 333 334 335 \ In segment CODE, align 4, keep-with-next 336 void Save(int xs) 337 { \ Save: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 64D04DE2 SUB SP,SP,#+100 \ 00000008 40DD4DE2 SUB SP,SP,#+4096 338 const int def_mood=30; 339 340 char path[96]; 341 sprintf(path,"%s\\q%i.bash",hist_path,atoi(strstr(items[xs].title,_oktotorp)+1 ) ); \ 0000000C CC10A0E3 MOV R1,#+204 \ 00000010 401D81E3 ORR R1,R1,#0x1000 \ 00000014 ........ LDR R2,??DataTable27 ;; items \ 00000018 912024E0 MLA R4,R1,R0,R2 \ 0000001C ........ LDR R1,??DataTable21 ;; _oktotorp \ 00000020 410D84E2 ADD R0,R4,#+4160 \ 00000024 180100EF SWI +280 \ 00000028 010080E2 ADD R0,R0,#+1 \ 0000002C ........ BL atoi \ 00000030 0030A0E1 MOV R3,R0 \ 00000034 ........ LDR R2,??DataTable22 ;; hist_path \ 00000038 ........ LDR R1,??DataTable23 ;; `?<Constant "%s\\\\q%i.bash">` \ 0000003C 04008DE2 ADD R0,SP,#+4 \ 00000040 400D80E2 ADD R0,R0,#+4096 \ 00000044 160000EF SWI +22 342 343 char buff[4096]; 344 sprintf(buff,"QUOTE: %s\n\rDATE: %s\n\rMOOD: %i\n\r ",items[xs].comm,items[xs].date,def_mood); \ 00000048 1E00A0E3 MOV R0,#+30 \ 0000004C 01002DE9 PUSH {R0} \ 00000050 0430A0E1 MOV R3,R4 \ 00000054 402084E2 ADD R2,R4,#+64 \ 00000058 78109FE5 LDR R1,??Save_0 ;; `?<Constant "QUOTE: %s\\n\\rDATE: %s\\n\\r...">` \ 0000005C 08008DE2 ADD R0,SP,#+8 \ 00000060 160000EF SWI +22 345 items[xs].mood=def_mood; \ 00000064 C800A0E3 MOV R0,#+200 \ 00000068 400D80E3 ORR R0,R0,#0x1000 \ 0000006C 1E10A0E3 MOV R1,#+30 \ 00000070 041080E7 STR R1,[R0, +R4] 346 347 unsigned int ul; 348 int f=fopen(path,A_WriteOnly+A_Create,P_WRITE,&ul); \ 00000074 04308DE2 ADD R3,SP,#+4 \ 00000078 402FA0E3 MOV R2,#+256 \ 0000007C E31081E2 ADD R1,R1,#+227 \ 00000080 08008DE2 ADD R0,SP,#+8 \ 00000084 400D80E2 ADD R0,R0,#+4096 \ 00000088 0A0000EF SWI +10 \ 0000008C 0040A0E1 MOV R4,R0 349 if (f!=-1) \ 00000090 010074E3 CMN R4,#+1 \ 00000094 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning \ 00000098 0A00000A BEQ ??Save_1 350 { 351 fwrite(f,buff,strlen(buff),&ul); \ 0000009C 04008DE2 ADD R0,SP,#+4 \ 000000A0 1B0000EF SWI +27 \ 000000A4 0020A0E1 MOV R2,R0 \ 000000A8 0D30A0E1 MOV R3,SP \ 000000AC 04108DE2 ADD R1,SP,#+4 \ 000000B0 0400A0E1 MOV R0,R4 \ 000000B4 0C0000EF SWI +12 352 fclose(f,&ul); \ 000000B8 0D10A0E1 MOV R1,SP \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 0D0000EF SWI +13 353 REDRAW(); \ 000000C4 720100EF SWI +370 354 355 } 356 } \ ??Save_1: \ 000000C8 64D08DE2 ADD SP,SP,#+100 ;; stack cleaning \ 000000CC 40DD8DE2 ADD SP,SP,#+4096 \ 000000D0 1040BDE8 POP {R4,LR} \ 000000D4 1EFF2FE1 BX LR ;; return \ ??Save_0: \ 000000D8 ........ DC32 `?<Constant "QUOTE: %s\\n\\rDATE: %s\\n\\r...">` 357 358 359 \ In segment CODE, align 4, keep-with-next 360 void SaveAll(void) 361 { \ SaveAll: \ 00000000 30402DE9 PUSH {R4,R5,LR} 362 for (int h=0; h<(loaded-1); h++) \ 00000004 0040A0E3 MOV R4,#+0 \ 00000008 ........ LDR R5,??DataTable24 ;; loaded \ 0000000C 000095E5 LDR R0,[R5, #+0] \ 00000010 010040E2 SUB R0,R0,#+1 \ 00000014 010050E3 CMP R0,#+1 \ 00000018 030000AA BGE ??SaveAll_0 \ 0000001C 060000EA B ??SaveAll_1 363 { 364 Save(h); \ ??SaveAll_2: \ 00000020 0400A0E1 MOV R0,R4 \ 00000024 ........ BL Save 365 } \ 00000028 014084E2 ADD R4,R4,#+1 \ ??SaveAll_0: \ 0000002C 000095E5 LDR R0,[R5, #+0] \ 00000030 010040E2 SUB R0,R0,#+1 \ 00000034 000054E1 CMP R4,R0 \ 00000038 F8FFFFBA BLT ??SaveAll_2 366 REDRAW(); \ ??SaveAll_1: \ 0000003C 720100EF SWI +370 367 } \ 00000040 3040BDE8 POP {R4,R5,LR} \ 00000044 1EFF2FE1 BX LR ;; return 368 369 //=========================================== 370 \ In segment CODE, align 4, keep-with-next 371 void Info() 372 { \ Info: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 373 WSHDR *ws = AllocWS(128); \ 00000004 8000A0E3 MOV R0,#+128 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 374 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ 00000010 0100A0E3 MOV R0,#+1 \ 00000014 2E0100EF SWI +302 \ 00000018 0050A0E1 MOV R5,R0 \ 0000001C 1600A0E3 MOV R0,#+22 \ 00000020 2E0100EF SWI +302 \ 00000024 0060A0E1 MOV R6,R0 \ 00000028 898100EF SWI +33161 \ 0000002C 0070A0E1 MOV R7,R0 \ 00000030 888100EF SWI +33160 \ 00000034 20002DE9 PUSH {R5} \ 00000038 40002DE9 PUSH {R6} \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 02002DE9 PUSH {R1} \ 00000044 02002DE9 PUSH {R1} \ 00000048 02002DE9 PUSH {R1} \ 0000004C 013047E2 SUB R3,R7,#+1 \ 00000050 012040E2 SUB R2,R0,#+1 \ 00000054 0000A0E3 MOV R0,#+0 \ 00000058 500100EF SWI +336 375 if(receive==2) \ 0000005C ........ LDR R0,??DataTable25 ;; receive \ 00000060 000090E5 LDR R0,[R0, #+0] \ 00000064 020050E3 CMP R0,#+2 \ 00000068 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 0000006C 3600001A BNE ??Info_0 376 { 377 ascii2ws(ws,items[x].title); \ 00000070 ........ LDR R5,??DataTable41 ;; x \ 00000074 ........ LDR R6,??DataTable27 ;; items \ 00000078 000095E5 LDR R0,[R5, #+0] \ 0000007C CC10A0E3 MOV R1,#+204 \ 00000080 401D81E3 ORR R1,R1,#0x1000 \ 00000084 916020E0 MLA R0,R1,R0,R6 \ 00000088 411D80E2 ADD R1,R0,#+4160 \ 0000008C 0400A0E1 MOV R0,R4 \ 00000090 ........ BL ascii2ws 378 DrawString(ws,5,25,128,172,7,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000094 1700A0E3 MOV R0,#+23 \ 00000098 2E0100EF SWI +302 \ 0000009C 0070A0E1 MOV R7,R0 \ 000000A0 0000A0E3 MOV R0,#+0 \ 000000A4 2E0100EF SWI +302 \ 000000A8 80002DE9 PUSH {R7} \ 000000AC 01002DE9 PUSH {R0} \ 000000B0 0000A0E3 MOV R0,#+0 \ 000000B4 01002DE9 PUSH {R0} \ 000000B8 0700A0E3 MOV R0,#+7 \ 000000BC 01002DE9 PUSH {R0} \ 000000C0 AC00A0E3 MOV R0,#+172 \ 000000C4 01002DE9 PUSH {R0} \ 000000C8 8030A0E3 MOV R3,#+128 \ 000000CC 1920A0E3 MOV R2,#+25 \ 000000D0 0510A0E3 MOV R1,#+5 \ 000000D4 0400A0E1 MOV R0,R4 \ 000000D8 4C0100EF SWI +332 379 380 ascii2ws(ws,items[x].link); \ 000000DC 000095E5 LDR R0,[R5, #+0] \ 000000E0 CC10A0E3 MOV R1,#+204 \ 000000E4 401D81E3 ORR R1,R1,#0x1000 \ 000000E8 916020E0 MLA R0,R1,R0,R6 \ 000000EC 421D80E2 ADD R1,R0,#+4224 \ 000000F0 0400A0E1 MOV R0,R4 \ 000000F4 ........ BL ascii2ws 381 DrawString(ws,5,50,128,172,7,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000000F8 1700A0E3 MOV R0,#+23 \ 000000FC 2E0100EF SWI +302 \ 00000100 0050A0E1 MOV R5,R0 \ 00000104 0000A0E3 MOV R0,#+0 \ 00000108 2E0100EF SWI +302 \ 0000010C 20002DE9 PUSH {R5} \ 00000110 01002DE9 PUSH {R0} \ 00000114 0000A0E3 MOV R0,#+0 \ 00000118 01002DE9 PUSH {R0} \ 0000011C 0700A0E3 MOV R0,#+7 \ 00000120 01002DE9 PUSH {R0} \ 00000124 AC00A0E3 MOV R0,#+172 \ 00000128 01002DE9 PUSH {R0} \ 0000012C 8030A0E3 MOV R3,#+128 \ 00000130 3220A0E3 MOV R2,#+50 \ 00000134 0510A0E3 MOV R1,#+5 \ 00000138 0400A0E1 MOV R0,R4 \ 0000013C 4C0100EF SWI +332 \ 00000140 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 382 } 383 else {return;} 384 385 FreeWS(ws); \ 00000144 0400A0E1 MOV R0,R4 \ 00000148 290100EF SWI +297 386 } \ ??Info_0: \ 0000014C F040BDE8 POP {R4-R7,LR} \ 00000150 1EFF2FE1 BX LR ;; return 387 388 389 \ In segment CODE, align 4, keep-with-next 390 void OnRedraw(MAIN_GUI *data) 391 { \ OnRedraw: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 392 WSHDR *ws = AllocWS(4096); \ 00000008 400DA0E3 MOV R0,#+4096 \ 0000000C 250100EF SWI +293 \ 00000010 0040A0E1 MOV R4,R0 393 WSHDR *wsx = AllocWS(4096); \ 00000014 400DA0E3 MOV R0,#+4096 \ 00000018 250100EF SWI +293 \ 0000001C 0050A0E1 MOV R5,R0 394 DisableIconBar(1); \ 00000020 0100A0E3 MOV R0,#+1 \ 00000024 3B0200EF SWI +571 395 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 2E0100EF SWI +302 \ 00000030 0060A0E1 MOV R6,R0 \ 00000034 1600A0E3 MOV R0,#+22 \ 00000038 2E0100EF SWI +302 \ 0000003C 0070A0E1 MOV R7,R0 \ 00000040 898100EF SWI +33161 \ 00000044 0080A0E1 MOV R8,R0 \ 00000048 888100EF SWI +33160 \ 0000004C 40002DE9 PUSH {R6} \ 00000050 80002DE9 PUSH {R7} \ 00000054 0010A0E3 MOV R1,#+0 \ 00000058 02002DE9 PUSH {R1} \ 0000005C 02002DE9 PUSH {R1} \ 00000060 02002DE9 PUSH {R1} \ 00000064 013048E2 SUB R3,R8,#+1 \ 00000068 012040E2 SUB R2,R0,#+1 \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 500100EF SWI +336 396 397 int bar=7; \ 00000074 0780A0E3 MOV R8,#+7 398 399 if(receive==2) {bar=4;} \ 00000078 ........ LDR R6,??DataTable42 ;; receive \ 0000007C 000096E5 LDR R0,[R6, #+0] \ 00000080 020050E3 CMP R0,#+2 \ 00000084 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 00000088 0480A003 MOVEQ R8,#+4 \ 0000008C 0800000A BEQ ??OnRedraw_0 400 if(receive==0) {bar=2;} \ 00000090 000050E3 CMP R0,#+0 \ 00000094 0280A003 MOVEQ R8,#+2 \ 00000098 0500000A BEQ ??OnRedraw_0 401 if(receive==1) { if(pbuf==0) {bar=22;} else {bar=7;} } \ 0000009C 010050E3 CMP R0,#+1 \ 000000A0 0300001A BNE ??OnRedraw_0 \ 000000A4 ........ LDR R0,??DataTable32 ;; pbuf \ 000000A8 000090E5 LDR R0,[R0, #+0] \ 000000AC 000050E3 CMP R0,#+0 \ 000000B0 1680A003 MOVEQ R8,#+22 402 403 404 DrawRoundedFrame(ScreenW()/2,5,ScreenW()-2,10,0,0,0,GetPaletteAdrByColorIndex(bar),GetPaletteAdrByColorIndex(23)); \ ??OnRedraw_0: \ 000000B4 1700A0E3 MOV R0,#+23 \ 000000B8 2E0100EF SWI +302 \ 000000BC 0090A0E1 MOV R9,R0 \ 000000C0 0800A0E1 MOV R0,R8 \ 000000C4 2E0100EF SWI +302 \ 000000C8 00A0A0E1 MOV R10,R0 \ 000000CC 888100EF SWI +33160 \ 000000D0 0070A0E1 MOV R7,R0 \ 000000D4 888100EF SWI +33160 \ 000000D8 00022DE9 PUSH {R9} \ 000000DC 00042DE9 PUSH {R10} \ 000000E0 0010A0E3 MOV R1,#+0 \ 000000E4 02002DE9 PUSH {R1} \ 000000E8 02002DE9 PUSH {R1} \ 000000EC 02002DE9 PUSH {R1} \ 000000F0 0A30A0E3 MOV R3,#+10 \ 000000F4 022047E2 SUB R2,R7,#+2 \ 000000F8 0510A0E3 MOV R1,#+5 \ 000000FC A00F80E0 ADD R0,R0,R0, LSR #+31 \ 00000100 C000A0E1 ASR R0,R0,#+1 \ 00000104 500100EF SWI +336 405 DrawRoundedFrame(ScreenW()/2,5,ScreenW()/2+(pbuf*(ScreenW()/2)/limit),10,0,0,3,GetPaletteAdrByColorIndex(bar),GetPaletteAdrByColorIndex(23)); \ 00000108 1700A0E3 MOV R0,#+23 \ 0000010C 2E0100EF SWI +302 \ 00000110 0070A0E1 MOV R7,R0 \ 00000114 0800A0E1 MOV R0,R8 \ 00000118 2E0100EF SWI +302 \ 0000011C 00B0A0E1 MOV R11,R0 \ 00000120 888100EF SWI +33160 \ 00000124 0080A0E1 MOV R8,R0 \ 00000128 888100EF SWI +33160 \ 0000012C 0090A0E1 MOV R9,R0 \ 00000130 888100EF SWI +33160 \ 00000134 00A0A0E1 MOV R10,R0 \ 00000138 ........ LDR R1,??DataTable30 ;; limit \ 0000013C 001091E5 LDR R1,[R1, #+0] \ 00000140 14108DE5 STR R1,[SP, #+20] \ 00000144 80002DE9 PUSH {R7} \ 00000148 00082DE9 PUSH {R11} \ 0000014C 0300A0E3 MOV R0,#+3 \ 00000150 01002DE9 PUSH {R0} \ 00000154 0000A0E3 MOV R0,#+0 \ 00000158 01002DE9 PUSH {R0} \ 0000015C 01002DE9 PUSH {R0} \ 00000160 0A30A0E3 MOV R3,#+10 \ 00000164 A82F88E0 ADD R2,R8,R8, LSR #+31 \ 00000168 ........ LDR R0,??DataTable32 ;; pbuf \ 0000016C 000090E5 LDR R0,[R0, #+0] \ 00000170 A91F89E0 ADD R1,R9,R9, LSR #+31 \ 00000174 C110A0E1 ASR R1,R1,#+1 \ 00000178 910000E0 MUL R0,R1,R0 \ 0000017C 28109DE5 LDR R1,[SP, #+40] \ 00000180 ........ _BLF ??divu32_a,??rA??divu32_a \ 00000184 C22081E0 ADD R2,R1,R2, ASR #+1 \ 00000188 0510A0E3 MOV R1,#+5 \ 0000018C AA0F8AE0 ADD R0,R10,R10, LSR #+31 \ 00000190 C000A0E1 ASR R0,R0,#+1 \ 00000194 500100EF SWI +336 \ 00000198 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 406 407 wsprintf(ws, "%i/%i",pbuf,limit); \ 0000019C 00309DE5 LDR R3,[SP, #+0] \ 000001A0 ........ LDR R0,??DataTable32 ;; pbuf \ 000001A4 002090E5 LDR R2,[R0, #+0] \ 000001A8 98189FE5 LDR R1,??OnRedraw_1+0x8 ;; `?<Constant "%i/%i">` \ 000001AC 0400A0E1 MOV R0,R4 \ 000001B0 240100EF SWI +292 408 DrawString(ws,5,13,ScreenW()-3,ScreenH()-1,FONT_SMALL,4,GetPaletteAdrByColorIndex((receive==2)?4:22),GetPaletteAdrByColorIndex(23)); \ 000001B4 1700A0E3 MOV R0,#+23 \ 000001B8 2E0100EF SWI +302 \ 000001BC 0070A0E1 MOV R7,R0 \ 000001C0 000096E5 LDR R0,[R6, #+0] \ 000001C4 020050E3 CMP R0,#+2 \ 000001C8 0400A003 MOVEQ R0,#+4 \ 000001CC 1600A013 MOVNE R0,#+22 \ 000001D0 2E0100EF SWI +302 \ 000001D4 0090A0E1 MOV R9,R0 \ 000001D8 898100EF SWI +33161 \ 000001DC 0080A0E1 MOV R8,R0 \ 000001E0 888100EF SWI +33160 \ 000001E4 80002DE9 PUSH {R7} \ 000001E8 00022DE9 PUSH {R9} \ 000001EC 0410A0E3 MOV R1,#+4 \ 000001F0 02002DE9 PUSH {R1} \ 000001F4 0810A0E3 MOV R1,#+8 \ 000001F8 02002DE9 PUSH {R1} \ 000001FC 011048E2 SUB R1,R8,#+1 \ 00000200 02002DE9 PUSH {R1} \ 00000204 033040E2 SUB R3,R0,#+3 \ 00000208 0D20A0E3 MOV R2,#+13 \ 0000020C 0510A0E3 MOV R1,#+5 \ 00000210 0400A0E1 MOV R0,R4 \ 00000214 4C0100EF SWI +332 409 410 if(receive==2) \ 00000218 000096E5 LDR R0,[R6, #+0] \ 0000021C 020050E3 CMP R0,#+2 \ 00000220 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 00000224 E601001A BNE ??OnRedraw_2 411 { 412 if (mode==0) \ 00000228 ........ LDR R7,??DataTable41 ;; x \ 0000022C ........ LDR R8,??DataTable34 ;; items \ 00000230 ........ LDR R0,??DataTable40 ;; mode \ 00000234 000090E5 LDR R0,[R0, #+0] \ 00000238 000050E3 CMP R0,#+0 \ 0000023C 3901001A BNE ??OnRedraw_3 413 { 414 //------------------------------- 415 if (items[x-2].flag!=0 && x-2>-1) \ 00000240 000097E5 LDR R0,[R7, #+0] \ 00000244 CC20A0E3 MOV R2,#+204 \ 00000248 402D82E3 ORR R2,R2,#0x1000 \ 0000024C 928021E0 MLA R1,R2,R0,R8 \ 00000250 F4979FE5 LDR R9,??OnRedraw_1+0xC ;; `?<Constant "%i %w">` \ 00000254 D320E0E3 MVN R2,#+211 \ 00000258 402DC2E3 BIC R2,R2,#0x1000 \ 0000025C 0120D2E7 LDRB R2,[R2, +R1] \ 00000260 000052E3 CMP R2,#+0 \ 00000264 3000000A BEQ ??OnRedraw_4 \ 00000268 020050E2 SUBS R0,R0,#+2 \ 0000026C 2E00004A BMI ??OnRedraw_4 416 { 417 ascii2ws(ws,items[x-2].title); \ 00000270 5700E0E3 MVN R0,#+87 \ 00000274 440DC0E3 BIC R0,R0,#0x1100 \ 00000278 011080E0 ADD R1,R0,R1 \ 0000027C 0400A0E1 MOV R0,R4 \ 00000280 ........ BL ascii2ws 418 //DrawString(ws,35,20,128,35,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 419 420 if(ic) \ 00000284 C4079FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 00000288 000090E5 LDR R0,[R0, #+0] \ 0000028C 000050E3 CMP R0,#+0 \ 00000290 0C00000A BEQ ??OnRedraw_5 421 { 422 GetMood(x-2); \ 00000294 000097E5 LDR R0,[R7, #+0] \ 00000298 020040E2 SUB R0,R0,#+2 \ 0000029C ........ BL GetMood 423 DrawMoodIcon(110,19,items[x-2].mood); \ 000002A0 CF00E0E3 MVN R0,#+207 \ 000002A4 400DC0E3 BIC R0,R0,#0x1000 \ 000002A8 001097E5 LDR R1,[R7, #+0] \ 000002AC CC20A0E3 MOV R2,#+204 \ 000002B0 402D82E3 ORR R2,R2,#0x1000 \ 000002B4 928121E0 MLA R1,R2,R1,R8 \ 000002B8 012090E7 LDR R2,[R0, +R1] \ 000002BC 1310A0E3 MOV R1,#+19 \ 000002C0 6E00A0E3 MOV R0,#+110 \ 000002C4 ........ BL DrawMoodIcon 424 } 425 426 wsprintf(wsx, "%i %w",x-2,ws); \ ??OnRedraw_5: \ 000002C8 0430A0E1 MOV R3,R4 \ 000002CC 000097E5 LDR R0,[R7, #+0] \ 000002D0 022040E2 SUB R2,R0,#+2 \ 000002D4 0910A0E1 MOV R1,R9 \ 000002D8 0500A0E1 MOV R0,R5 \ 000002DC 240100EF SWI +292 427 DrawString(wsx,3,20,128,35,FONT_SMALL,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000002E0 1700A0E3 MOV R0,#+23 \ 000002E4 2E0100EF SWI +302 \ 000002E8 00A0A0E1 MOV R10,R0 \ 000002EC 0000A0E3 MOV R0,#+0 \ 000002F0 2E0100EF SWI +302 \ 000002F4 00042DE9 PUSH {R10} \ 000002F8 01002DE9 PUSH {R0} \ 000002FC 0100A0E3 MOV R0,#+1 \ 00000300 01002DE9 PUSH {R0} \ 00000304 0800A0E3 MOV R0,#+8 \ 00000308 01002DE9 PUSH {R0} \ 0000030C 2300A0E3 MOV R0,#+35 \ 00000310 01002DE9 PUSH {R0} \ 00000314 8030A0E3 MOV R3,#+128 \ 00000318 1420A0E3 MOV R2,#+20 \ 0000031C 0310A0E3 MOV R1,#+3 \ 00000320 0500A0E1 MOV R0,R5 \ 00000324 4C0100EF SWI +332 \ 00000328 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 428 } 429 //------------------------------- 430 if (items[x-1].flag!=0 && x-1>-1) \ ??OnRedraw_4: \ 0000032C 000097E5 LDR R0,[R7, #+0] \ 00000330 CC20A0E3 MOV R2,#+204 \ 00000334 402D82E3 ORR R2,R2,#0x1000 \ 00000338 928021E0 MLA R1,R2,R0,R8 \ 0000033C 082051E5 LDRB R2,[R1, #-8] \ 00000340 000052E3 CMP R2,#+0 \ 00000344 2D00000A BEQ ??OnRedraw_6 \ 00000348 010050E2 SUBS R0,R0,#+1 \ 0000034C 2B00004A BMI ??OnRedraw_6 431 { 432 ascii2ws(ws,items[x-1].title); \ 00000350 8B00E0E3 MVN R0,#+139 \ 00000354 011080E0 ADD R1,R0,R1 \ 00000358 0400A0E1 MOV R0,R4 \ 0000035C ........ BL ascii2ws 433 //DrawString(ws,35,40,128,55,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 434 435 if(ic) \ 00000360 E8069FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 00000364 000090E5 LDR R0,[R0, #+0] \ 00000368 000050E3 CMP R0,#+0 \ 0000036C 0A00000A BEQ ??OnRedraw_7 436 { 437 GetMood(x-1); \ 00000370 000097E5 LDR R0,[R7, #+0] \ 00000374 010040E2 SUB R0,R0,#+1 \ 00000378 ........ BL GetMood 438 DrawMoodIcon(110,39,items[x-1].mood); \ 0000037C 000097E5 LDR R0,[R7, #+0] \ 00000380 CC10A0E3 MOV R1,#+204 \ 00000384 401D81E3 ORR R1,R1,#0x1000 \ 00000388 918020E0 MLA R0,R1,R0,R8 \ 0000038C 042010E5 LDR R2,[R0, #-4] \ 00000390 2710A0E3 MOV R1,#+39 \ 00000394 6E00A0E3 MOV R0,#+110 \ 00000398 ........ BL DrawMoodIcon 439 } 440 wsprintf(wsx, "%i %w",x-1,ws); \ ??OnRedraw_7: \ 0000039C 0430A0E1 MOV R3,R4 \ 000003A0 000097E5 LDR R0,[R7, #+0] \ 000003A4 012040E2 SUB R2,R0,#+1 \ 000003A8 0910A0E1 MOV R1,R9 \ 000003AC 0500A0E1 MOV R0,R5 \ 000003B0 240100EF SWI +292 441 DrawString(wsx,3,40,128,55,FONT_SMALL,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000003B4 1700A0E3 MOV R0,#+23 \ 000003B8 2E0100EF SWI +302 \ 000003BC 00A0A0E1 MOV R10,R0 \ 000003C0 0000A0E3 MOV R0,#+0 \ 000003C4 2E0100EF SWI +302 \ 000003C8 00042DE9 PUSH {R10} \ 000003CC 01002DE9 PUSH {R0} \ 000003D0 0100A0E3 MOV R0,#+1 \ 000003D4 01002DE9 PUSH {R0} \ 000003D8 0800A0E3 MOV R0,#+8 \ 000003DC 01002DE9 PUSH {R0} \ 000003E0 3700A0E3 MOV R0,#+55 \ 000003E4 01002DE9 PUSH {R0} \ 000003E8 8030A0E3 MOV R3,#+128 \ 000003EC 2820A0E3 MOV R2,#+40 \ 000003F0 0310A0E3 MOV R1,#+3 \ 000003F4 0500A0E1 MOV R0,R5 \ 000003F8 4C0100EF SWI +332 \ 000003FC 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 442 } 443 //------------------------------- 444 445 ascii2ws(ws,items[x].title); \ ??OnRedraw_6: \ 00000400 000097E5 LDR R0,[R7, #+0] \ 00000404 CC10A0E3 MOV R1,#+204 \ 00000408 401D81E3 ORR R1,R1,#0x1000 \ 0000040C 918020E0 MLA R0,R1,R0,R8 \ 00000410 411D80E2 ADD R1,R0,#+4160 \ 00000414 0400A0E1 MOV R0,R4 \ 00000418 ........ BL ascii2ws 446 //DrawString(ws,35,60,128,75,7,32,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(0)); 447 448 if(ic){ \ 0000041C 2C069FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 00000420 00A090E5 LDR R10,[R0, #+0] \ 00000424 00005AE3 CMP R10,#+0 \ 00000428 0A00000A BEQ ??OnRedraw_8 449 GetMood(x); \ 0000042C 000097E5 LDR R0,[R7, #+0] \ 00000430 ........ BL GetMood 450 DrawMoodIcon(110,59,items[x].mood); \ 00000434 C800A0E3 MOV R0,#+200 \ 00000438 400D80E3 ORR R0,R0,#0x1000 \ 0000043C 001097E5 LDR R1,[R7, #+0] \ 00000440 042080E3 ORR R2,R0,#0x4 \ 00000444 928121E0 MLA R1,R2,R1,R8 \ 00000448 012090E7 LDR R2,[R0, +R1] \ 0000044C 3B10A0E3 MOV R1,#+59 \ 00000450 6E00A0E3 MOV R0,#+110 \ 00000454 ........ BL DrawMoodIcon 451 } 452 453 wsprintf(wsx, "%i %w",x,ws); \ ??OnRedraw_8: \ 00000458 0430A0E1 MOV R3,R4 \ 0000045C 002097E5 LDR R2,[R7, #+0] \ 00000460 0910A0E1 MOV R1,R9 \ 00000464 0500A0E1 MOV R0,R5 \ 00000468 240100EF SWI +292 454 DrawString(wsx,3,60,128,75,FONT_SMALL,32,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(0)); \ 0000046C 0000A0E3 MOV R0,#+0 \ 00000470 2E0100EF SWI +302 \ 00000474 00B0A0E1 MOV R11,R0 \ 00000478 0100A0E3 MOV R0,#+1 \ 0000047C 2E0100EF SWI +302 \ 00000480 00082DE9 PUSH {R11} \ 00000484 01002DE9 PUSH {R0} \ 00000488 2000A0E3 MOV R0,#+32 \ 0000048C 01002DE9 PUSH {R0} \ 00000490 0800A0E3 MOV R0,#+8 \ 00000494 01002DE9 PUSH {R0} \ 00000498 4B00A0E3 MOV R0,#+75 \ 0000049C 01002DE9 PUSH {R0} \ 000004A0 8030A0E3 MOV R3,#+128 \ 000004A4 3C20A0E3 MOV R2,#+60 \ 000004A8 0310A0E3 MOV R1,#+3 \ 000004AC 0500A0E1 MOV R0,R5 \ 000004B0 4C0100EF SWI +332 455 456 //------------------------------- 457 if (items[x+1].flag!=0) \ 000004B4 000097E5 LDR R0,[R7, #+0] \ 000004B8 CC10A0E3 MOV R1,#+204 \ 000004BC 401D81E3 ORR R1,R1,#0x1000 \ 000004C0 918020E0 MLA R0,R1,R0,R8 \ 000004C4 9010A0E3 MOV R1,#+144 \ 000004C8 841D81E3 ORR R1,R1,#0x2100 \ 000004CC 0010D1E7 LDRB R1,[R1, +R0] \ 000004D0 000051E3 CMP R1,#+0 \ 000004D4 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 000004D8 2C00000A BEQ ??OnRedraw_9 458 { 459 ascii2ws(ws,items[x+1].title); \ 000004DC 0C10A0E3 MOV R1,#+12 \ 000004E0 841D81E3 ORR R1,R1,#0x2100 \ 000004E4 001081E0 ADD R1,R1,R0 \ 000004E8 0400A0E1 MOV R0,R4 \ 000004EC ........ BL ascii2ws 460 //DrawString(ws,35,80,128,95,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 461 462 if(ic){ \ 000004F0 00005AE3 CMP R10,#+0 \ 000004F4 0C00000A BEQ ??OnRedraw_10 463 GetMood(x+1); \ 000004F8 000097E5 LDR R0,[R7, #+0] \ 000004FC 010080E2 ADD R0,R0,#+1 \ 00000500 ........ BL GetMood 464 DrawMoodIcon(110,79,items[x+1].mood); \ 00000504 9400A0E3 MOV R0,#+148 \ 00000508 840D80E3 ORR R0,R0,#0x2100 \ 0000050C 001097E5 LDR R1,[R7, #+0] \ 00000510 CC20A0E3 MOV R2,#+204 \ 00000514 402D82E3 ORR R2,R2,#0x1000 \ 00000518 928121E0 MLA R1,R2,R1,R8 \ 0000051C 012090E7 LDR R2,[R0, +R1] \ 00000520 4F10A0E3 MOV R1,#+79 \ 00000524 6E00A0E3 MOV R0,#+110 \ 00000528 ........ BL DrawMoodIcon 465 } 466 467 wsprintf(wsx, "%i %w",x+1,ws); \ ??OnRedraw_10: \ 0000052C 0430A0E1 MOV R3,R4 \ 00000530 000097E5 LDR R0,[R7, #+0] \ 00000534 012080E2 ADD R2,R0,#+1 \ 00000538 0910A0E1 MOV R1,R9 \ 0000053C 0500A0E1 MOV R0,R5 \ 00000540 240100EF SWI +292 468 DrawString(wsx,3,80,128,95,FONT_SMALL,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000544 1700A0E3 MOV R0,#+23 \ 00000548 2E0100EF SWI +302 \ 0000054C 00B0A0E1 MOV R11,R0 \ 00000550 0000A0E3 MOV R0,#+0 \ 00000554 2E0100EF SWI +302 \ 00000558 00082DE9 PUSH {R11} \ 0000055C 01002DE9 PUSH {R0} \ 00000560 0100A0E3 MOV R0,#+1 \ 00000564 01002DE9 PUSH {R0} \ 00000568 0800A0E3 MOV R0,#+8 \ 0000056C 01002DE9 PUSH {R0} \ 00000570 5F00A0E3 MOV R0,#+95 \ 00000574 01002DE9 PUSH {R0} \ 00000578 8030A0E3 MOV R3,#+128 \ 0000057C 5020A0E3 MOV R2,#+80 \ 00000580 0310A0E3 MOV R1,#+3 \ 00000584 0500A0E1 MOV R0,R5 \ 00000588 4C0100EF SWI +332 \ 0000058C 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 469 } 470 //------------------------------- 471 if (items[x+2].flag!=0) \ ??OnRedraw_9: \ 00000590 000097E5 LDR R0,[R7, #+0] \ 00000594 CC10A0E3 MOV R1,#+204 \ 00000598 401D81E3 ORR R1,R1,#0x1000 \ 0000059C 918020E0 MLA R0,R1,R0,R8 \ 000005A0 5C10A0E3 MOV R1,#+92 \ 000005A4 C81D81E3 ORR R1,R1,#0x3200 \ 000005A8 0010D1E7 LDRB R1,[R1, +R0] \ 000005AC 000051E3 CMP R1,#+0 \ 000005B0 2C00000A BEQ ??OnRedraw_11 472 { 473 ascii2ws(ws,items[x+2].title); \ 000005B4 D810A0E3 MOV R1,#+216 \ 000005B8 C41D81E3 ORR R1,R1,#0x3100 \ 000005BC 001081E0 ADD R1,R1,R0 \ 000005C0 0400A0E1 MOV R0,R4 \ 000005C4 ........ BL ascii2ws 474 //DrawString(ws,35,100,128,115,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 475 476 if(ic){ \ 000005C8 00005AE3 CMP R10,#+0 \ 000005CC 0C00000A BEQ ??OnRedraw_12 477 GetMood(x+2); \ 000005D0 000097E5 LDR R0,[R7, #+0] \ 000005D4 020080E2 ADD R0,R0,#+2 \ 000005D8 ........ BL GetMood 478 DrawMoodIcon(110,99,items[x+2].mood); \ 000005DC 6000A0E3 MOV R0,#+96 \ 000005E0 C80D80E3 ORR R0,R0,#0x3200 \ 000005E4 001097E5 LDR R1,[R7, #+0] \ 000005E8 CC20A0E3 MOV R2,#+204 \ 000005EC 402D82E3 ORR R2,R2,#0x1000 \ 000005F0 928121E0 MLA R1,R2,R1,R8 \ 000005F4 012090E7 LDR R2,[R0, +R1] \ 000005F8 6310A0E3 MOV R1,#+99 \ 000005FC 6E00A0E3 MOV R0,#+110 \ 00000600 ........ BL DrawMoodIcon 479 } 480 481 wsprintf(wsx, "%i %w",x+2,ws); \ ??OnRedraw_12: \ 00000604 0430A0E1 MOV R3,R4 \ 00000608 000097E5 LDR R0,[R7, #+0] \ 0000060C 022080E2 ADD R2,R0,#+2 \ 00000610 0910A0E1 MOV R1,R9 \ 00000614 0500A0E1 MOV R0,R5 \ 00000618 240100EF SWI +292 482 DrawString(wsx,3,100,128,115,FONT_SMALL,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 0000061C 1700A0E3 MOV R0,#+23 \ 00000620 2E0100EF SWI +302 \ 00000624 0090A0E1 MOV R9,R0 \ 00000628 0000A0E3 MOV R0,#+0 \ 0000062C 2E0100EF SWI +302 \ 00000630 00022DE9 PUSH {R9} \ 00000634 01002DE9 PUSH {R0} \ 00000638 0100A0E3 MOV R0,#+1 \ 0000063C 01002DE9 PUSH {R0} \ 00000640 0800A0E3 MOV R0,#+8 \ 00000644 01002DE9 PUSH {R0} \ 00000648 7300A0E3 MOV R0,#+115 \ 0000064C 01002DE9 PUSH {R0} \ 00000650 8030A0E3 MOV R3,#+128 \ 00000654 6420A0E3 MOV R2,#+100 \ 00000658 0310A0E3 MOV R1,#+3 \ 0000065C 0500A0E1 MOV R0,R5 \ 00000660 4C0100EF SWI +332 \ 00000664 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 483 } 484 //------------------------------- 485 DrawRoundedFrame(2,118,ScreenW()-3,173,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ ??OnRedraw_11: \ 00000668 0100A0E3 MOV R0,#+1 \ 0000066C 2E0100EF SWI +302 \ 00000670 0090A0E1 MOV R9,R0 \ 00000674 1600A0E3 MOV R0,#+22 \ 00000678 2E0100EF SWI +302 \ 0000067C 00A0A0E1 MOV R10,R0 \ 00000680 888100EF SWI +33160 \ 00000684 00022DE9 PUSH {R9} \ 00000688 00042DE9 PUSH {R10} \ 0000068C 0010A0E3 MOV R1,#+0 \ 00000690 02002DE9 PUSH {R1} \ 00000694 02002DE9 PUSH {R1} \ 00000698 02002DE9 PUSH {R1} \ 0000069C AD30A0E3 MOV R3,#+173 \ 000006A0 032040E2 SUB R2,R0,#+3 \ 000006A4 7610A0E3 MOV R1,#+118 \ 000006A8 0200A0E3 MOV R0,#+2 \ 000006AC 500100EF SWI +336 486 ascii2ws(ws,items[x].comm); \ 000006B0 000097E5 LDR R0,[R7, #+0] \ 000006B4 CC10A0E3 MOV R1,#+204 \ 000006B8 401D81E3 ORR R1,R1,#0x1000 \ 000006BC 918020E0 MLA R0,R1,R0,R8 \ 000006C0 401080E2 ADD R1,R0,#+64 \ 000006C4 0400A0E1 MOV R0,R4 \ 000006C8 ........ BL ascii2ws 487 DrawString(ws,4,120,128,119+4*GetFontYSIZE(7),7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000006CC 1700A0E3 MOV R0,#+23 \ 000006D0 2E0100EF SWI +302 \ 000006D4 0090A0E1 MOV R9,R0 \ 000006D8 0000A0E3 MOV R0,#+0 \ 000006DC 2E0100EF SWI +302 \ 000006E0 00A0A0E1 MOV R10,R0 \ 000006E4 0700A0E3 MOV R0,#+7 \ 000006E8 C50100EF SWI +453 \ 000006EC 00022DE9 PUSH {R9} \ 000006F0 00042DE9 PUSH {R10} \ 000006F4 0110A0E3 MOV R1,#+1 \ 000006F8 02002DE9 PUSH {R1} \ 000006FC 0710A0E3 MOV R1,#+7 \ 00000700 02002DE9 PUSH {R1} \ 00000704 7710A0E3 MOV R1,#+119 \ 00000708 000181E0 ADD R0,R1,R0, LSL #+2 \ 0000070C 01002DE9 PUSH {R0} \ 00000710 8030A0E3 MOV R3,#+128 \ 00000714 7820A0E3 MOV R2,#+120 \ 00000718 0410A0E3 MOV R1,#+4 \ 0000071C 0400A0E1 MOV R0,R4 \ 00000720 4C0100EF SWI +332 \ 00000724 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 488 }//if(mode==0) 489 490 491 if (mode==1) \ ??OnRedraw_3: \ 00000728 ........ LDR R0,??DataTable40 ;; mode \ 0000072C 000090E5 LDR R0,[R0, #+0] \ 00000730 010050E3 CMP R0,#+1 \ 00000734 A200001A BNE ??OnRedraw_2 492 { 493 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ 00000738 2E0100EF SWI +302 \ 0000073C 0090A0E1 MOV R9,R0 \ 00000740 1600A0E3 MOV R0,#+22 \ 00000744 2E0100EF SWI +302 \ 00000748 00A0A0E1 MOV R10,R0 \ 0000074C 898100EF SWI +33161 \ 00000750 00B0A0E1 MOV R11,R0 \ 00000754 888100EF SWI +33160 \ 00000758 00022DE9 PUSH {R9} \ 0000075C 00042DE9 PUSH {R10} \ 00000760 0010A0E3 MOV R1,#+0 \ 00000764 02002DE9 PUSH {R1} \ 00000768 02002DE9 PUSH {R1} \ 0000076C 02002DE9 PUSH {R1} \ 00000770 01304BE2 SUB R3,R11,#+1 \ 00000774 012040E2 SUB R2,R0,#+1 \ 00000778 0000A0E3 MOV R0,#+0 \ 0000077C 500100EF SWI +336 494 495 //ascii2ws(ws,items[x].author); 496 //DrawString(ws,5,3+y*GetFontYSIZE(8),128,174,8,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 497 498 ascii2ws(ws,"+1"); \ 00000780 AE1F8FE2 ADR R1,??OnRedraw_1 ;; "+1" \ 00000784 0400A0E1 MOV R0,R4 \ 00000788 ........ BL ascii2ws 499 DrawString(ws,5,3+(y-1)*GetFontYSIZE(8),128,174,FONT_SMALL_BOLD,1,GetPaletteAdrByColorIndex( !(y-3)?2:0 ),GetPaletteAdrByColorIndex(23)); \ 0000078C 1700A0E3 MOV R0,#+23 \ 00000790 2E0100EF SWI +302 \ 00000794 0090A0E1 MOV R9,R0 \ 00000798 ........ LDR R10,??DataTable39 ;; y \ 0000079C 00009AE5 LDR R0,[R10, #+0] \ 000007A0 030050E2 SUBS R0,R0,#+3 \ 000007A4 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 000007A8 0200A003 MOVEQ R0,#+2 \ 000007AC 0000A013 MOVNE R0,#+0 \ 000007B0 2E0100EF SWI +302 \ 000007B4 00B0A0E1 MOV R11,R0 \ 000007B8 0800A0E3 MOV R0,#+8 \ 000007BC C50100EF SWI +453 \ 000007C0 00022DE9 PUSH {R9} \ 000007C4 00082DE9 PUSH {R11} \ 000007C8 0110A0E3 MOV R1,#+1 \ 000007CC 02002DE9 PUSH {R1} \ 000007D0 0910A0E3 MOV R1,#+9 \ 000007D4 02002DE9 PUSH {R1} \ 000007D8 AE10A0E3 MOV R1,#+174 \ 000007DC 02002DE9 PUSH {R1} \ 000007E0 8030A0E3 MOV R3,#+128 \ 000007E4 00109AE5 LDR R1,[R10, #+0] \ 000007E8 011041E2 SUB R1,R1,#+1 \ 000007EC 900101E0 MUL R1,R0,R1 \ 000007F0 032081E2 ADD R2,R1,#+3 \ 000007F4 0510A0E3 MOV R1,#+5 \ 000007F8 0400A0E1 MOV R0,R4 \ 000007FC 4C0100EF SWI +332 500 501 ascii2ws(ws,"-1"); \ 00000800 8F1F8FE2 ADR R1,??OnRedraw_1+0x4 ;; "-1" \ 00000804 0400A0E1 MOV R0,R4 \ 00000808 ........ BL ascii2ws 502 DrawString(ws,5,3+(y-1)*GetFontYSIZE(8),128,174,FONT_SMALL_BOLD,4,GetPaletteAdrByColorIndex( !(y-2)?2:0 ),GetPaletteAdrByColorIndex(23)); \ 0000080C 1700A0E3 MOV R0,#+23 \ 00000810 2E0100EF SWI +302 \ 00000814 0090A0E1 MOV R9,R0 \ 00000818 00009AE5 LDR R0,[R10, #+0] \ 0000081C 020050E2 SUBS R0,R0,#+2 \ 00000820 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 00000824 0200A003 MOVEQ R0,#+2 \ 00000828 0000A013 MOVNE R0,#+0 \ 0000082C 2E0100EF SWI +302 \ 00000830 00B0A0E1 MOV R11,R0 \ 00000834 0800A0E3 MOV R0,#+8 \ 00000838 C50100EF SWI +453 \ 0000083C 00022DE9 PUSH {R9} \ 00000840 00082DE9 PUSH {R11} \ 00000844 0410A0E3 MOV R1,#+4 \ 00000848 02002DE9 PUSH {R1} \ 0000084C 0910A0E3 MOV R1,#+9 \ 00000850 02002DE9 PUSH {R1} \ 00000854 AE10A0E3 MOV R1,#+174 \ 00000858 02002DE9 PUSH {R1} \ 0000085C 8030A0E3 MOV R3,#+128 \ 00000860 00109AE5 LDR R1,[R10, #+0] \ 00000864 011041E2 SUB R1,R1,#+1 \ 00000868 900101E0 MUL R1,R0,R1 \ 0000086C 032081E2 ADD R2,R1,#+3 \ 00000870 0510A0E3 MOV R1,#+5 \ 00000874 0400A0E1 MOV R0,R4 \ 00000878 4C0100EF SWI +332 503 504 ascii2ws(ws,items[x].date); \ 0000087C 000097E5 LDR R0,[R7, #+0] \ 00000880 CC20A0E3 MOV R2,#+204 \ 00000884 402D82E3 ORR R2,R2,#0x1000 \ 00000888 928021E0 MLA R1,R2,R0,R8 \ 0000088C 0400A0E1 MOV R0,R4 \ 00000890 ........ BL ascii2ws 505 DrawString(ws,5,3+(y+1)*GetFontYSIZE(8),128,174,FONT_SMALL_BOLD,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000894 1700A0E3 MOV R0,#+23 \ 00000898 2E0100EF SWI +302 \ 0000089C 0090A0E1 MOV R9,R0 \ 000008A0 0000A0E3 MOV R0,#+0 \ 000008A4 2E0100EF SWI +302 \ 000008A8 00B0A0E1 MOV R11,R0 \ 000008AC 0800A0E3 MOV R0,#+8 \ 000008B0 C50100EF SWI +453 \ 000008B4 00022DE9 PUSH {R9} \ 000008B8 00082DE9 PUSH {R11} \ 000008BC 0110A0E3 MOV R1,#+1 \ 000008C0 02002DE9 PUSH {R1} \ 000008C4 0910A0E3 MOV R1,#+9 \ 000008C8 02002DE9 PUSH {R1} \ 000008CC AE10A0E3 MOV R1,#+174 \ 000008D0 02002DE9 PUSH {R1} \ 000008D4 8030A0E3 MOV R3,#+128 \ 000008D8 00109AE5 LDR R1,[R10, #+0] \ 000008DC 011081E2 ADD R1,R1,#+1 \ 000008E0 900101E0 MUL R1,R0,R1 \ 000008E4 032081E2 ADD R2,R1,#+3 \ 000008E8 0510A0E3 MOV R1,#+5 \ 000008EC 0400A0E1 MOV R0,R4 \ 000008F0 4C0100EF SWI +332 \ 000008F4 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 506 507 ascii2ws(ws,items[x].comm); \ 000008F8 000097E5 LDR R0,[R7, #+0] \ 000008FC CC10A0E3 MOV R1,#+204 \ 00000900 401D81E3 ORR R1,R1,#0x1000 \ 00000904 918020E0 MLA R0,R1,R0,R8 \ 00000908 401080E2 ADD R1,R0,#+64 \ 0000090C 0400A0E1 MOV R0,R4 \ 00000910 ........ BL ascii2ws 508 DrawString(ws,5,3+(y+3)*GetFontYSIZE(7),128,174,FONT_SMALL,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000914 1700A0E3 MOV R0,#+23 \ 00000918 2E0100EF SWI +302 \ 0000091C 0070A0E1 MOV R7,R0 \ 00000920 0000A0E3 MOV R0,#+0 \ 00000924 2E0100EF SWI +302 \ 00000928 0080A0E1 MOV R8,R0 \ 0000092C 0700A0E3 MOV R0,#+7 \ 00000930 C50100EF SWI +453 \ 00000934 80002DE9 PUSH {R7} \ 00000938 00012DE9 PUSH {R8} \ 0000093C 0110A0E3 MOV R1,#+1 \ 00000940 02002DE9 PUSH {R1} \ 00000944 0810A0E3 MOV R1,#+8 \ 00000948 02002DE9 PUSH {R1} \ 0000094C AE10A0E3 MOV R1,#+174 \ 00000950 02002DE9 PUSH {R1} \ 00000954 8030A0E3 MOV R3,#+128 \ 00000958 00109AE5 LDR R1,[R10, #+0] \ 0000095C 031081E2 ADD R1,R1,#+3 \ 00000960 900101E0 MUL R1,R0,R1 \ 00000964 032081E2 ADD R2,R1,#+3 \ 00000968 0510A0E3 MOV R1,#+5 \ 0000096C 0400A0E1 MOV R0,R4 \ 00000970 4C0100EF SWI +332 509 510 511 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(23)); \ 00000974 1700A0E3 MOV R0,#+23 \ 00000978 2E0100EF SWI +302 \ 0000097C 0080A0E1 MOV R8,R0 \ 00000980 1600A0E3 MOV R0,#+22 \ 00000984 2E0100EF SWI +302 \ 00000988 0090A0E1 MOV R9,R0 \ 0000098C 898100EF SWI +33161 \ 00000990 0070A0E1 MOV R7,R0 \ 00000994 888100EF SWI +33160 \ 00000998 00012DE9 PUSH {R8} \ 0000099C 00022DE9 PUSH {R9} \ 000009A0 0010A0E3 MOV R1,#+0 \ 000009A4 02002DE9 PUSH {R1} \ 000009A8 02002DE9 PUSH {R1} \ 000009AC 02002DE9 PUSH {R1} \ 000009B0 013047E2 SUB R3,R7,#+1 \ 000009B4 012040E2 SUB R2,R0,#+1 \ 000009B8 0000A0E3 MOV R0,#+0 \ 000009BC 500100EF SWI +336 \ 000009C0 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 512 513 //ascii2ws(ws,items[x].comm); 514 //DrawString(ws,5,3+(y+1)*GetFontYSIZE(7),128,174,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 515 } 516 }//if(recive==2) 517 518 519 if(receive==0) \ ??OnRedraw_2: \ 000009C4 000096E5 LDR R0,[R6, #+0] \ 000009C8 000050E3 CMP R0,#+0 \ 000009CC 1500001A BNE ??OnRedraw_13 520 { 521 wsprintf(ws, "No connect"); \ 000009D0 7C109FE5 LDR R1,??OnRedraw_1+0x14 ;; `?<Constant "No connect">` \ 000009D4 0400A0E1 MOV R0,R4 \ 000009D8 240100EF SWI +292 522 DrawString(ws,25,25,128,172,FONT_MEDIUM_BOLD,32,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(22)); \ 000009DC 1600A0E3 MOV R0,#+22 \ 000009E0 2E0100EF SWI +302 \ 000009E4 0060A0E1 MOV R6,R0 \ 000009E8 0000A0E3 MOV R0,#+0 \ 000009EC 2E0100EF SWI +302 \ 000009F0 40002DE9 PUSH {R6} \ 000009F4 01002DE9 PUSH {R0} \ 000009F8 2000A0E3 MOV R0,#+32 \ 000009FC 01002DE9 PUSH {R0} \ 00000A00 0500A0E3 MOV R0,#+5 \ 00000A04 01002DE9 PUSH {R0} \ 00000A08 AC00A0E3 MOV R0,#+172 \ 00000A0C 01002DE9 PUSH {R0} \ 00000A10 8030A0E3 MOV R3,#+128 \ 00000A14 1920A0E3 MOV R2,#+25 \ 00000A18 1910A0E3 MOV R1,#+25 \ 00000A1C 0400A0E1 MOV R0,R4 \ 00000A20 4C0100EF SWI +332 \ 00000A24 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 523 } 524 525 FreeWS(ws); \ ??OnRedraw_13: \ 00000A28 0400A0E1 MOV R0,R4 \ 00000A2C 290100EF SWI +297 526 FreeWS(wsx); \ 00000A30 0500A0E1 MOV R0,R5 \ 00000A34 290100EF SWI +297 527 } \ 00000A38 F14FBDE8 POP {R0,R4-R11,LR} \ 00000A3C 1EFF2FE1 BX LR ;; return \ ??OnRedraw_1: \ 00000A40 2B310000 DC8 "+1",+0 \ 00000A44 2D310000 DC8 "-1",+0 \ 00000A48 ........ DC32 `?<Constant "%i/%i">` \ 00000A4C ........ DC32 `?<Constant "%i %w">` \ 00000A50 ........ DC32 ic \ 00000A54 ........ DC32 `?<Constant "No connect">` 528 \ In segment CODE, align 4, keep-with-next 529 void onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 530 { 531 data->gui.state=1; \ onCreate: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 0C10C0E5 STRB R1,[R0, #+12] 532 } \ 00000008 1EFF2FE1 BX LR ;; return 533 \ In segment CODE, align 4, keep-with-next 534 void onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 535 { 536 data->gui.state=0; \ onClose: \ 00000000 0010A0E3 MOV R1,#+0 \ 00000004 0C10C0E5 STRB R1,[R0, #+12] 537 } \ 00000008 1EFF2FE1 BX LR ;; return 538 \ In segment CODE, align 4, keep-with-next 539 void onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 540 { \ onFocus: \ 00000000 00402DE9 PUSH {LR} 541 data->gui.state=2; \ 00000004 0210A0E3 MOV R1,#+2 \ 00000008 0C10C0E5 STRB R1,[R0, #+12] 542 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 543 } \ 00000010 0040BDE8 POP {LR} \ 00000014 1EFF2FE1 BX LR ;; return 544 \ In segment CODE, align 4, keep-with-next 545 void onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 546 { 547 if (data->gui.state!=2) return; \ onUnfocus: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 548 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 549 } \ 00000010 1EFF2FE1 BX LR ;; return 550 \ In segment CODE, align 4, keep-with-next 551 int OnKey(MAIN_GUI *data, GUI_MSG *msg) 552 { \ OnKey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 0140A0E1 MOV R4,R1 553 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000008 042094E5 LDR R2,[R4, #+4] \ 0000000C ........ LDR R5,??DataTable38 ;; loaded \ 00000010 ........ LDR R6,??DataTable39 ;; y \ 00000014 0070A0E3 MOV R7,#+0 \ 00000018 ........ LDR R8,??DataTable40 ;; mode \ 0000001C ........ LDR R9,??DataTable41 ;; x \ 00000020 040092E5 LDR R0,[R2, #+4] \ 00000024 9310A0E3 MOV R1,#+147 \ 00000028 401F81E3 ORR R1,R1,#0x100 \ 0000002C 010050E1 CMP R0,R1 \ 00000030 5900001A BNE ??OnKey_2 554 { 555 switch(msg->gbsmsg->submess) \ 00000034 001095E5 LDR R1,[R5, #+0] \ 00000038 003096E5 LDR R3,[R6, #+0] \ 0000003C 00C098E5 LDR R12,[R8, #+0] \ 00000040 000099E5 LDR R0,[R9, #+0] \ 00000044 ........ LDR R10,??DataTable42 ;; receive \ 00000048 00E09AE5 LDR LR,[R10, #+0] \ 0000004C 082092E5 LDR R2,[R2, #+8] \ 00000050 042042E2 SUB R2,R2,#+4 \ 00000054 3A0052E3 CMP R2,#+58 \ 00000058 4F00008A BHI ??OnKey_2 \ 0000005C 01BF8FE2 ADR R11,??OnKey_0 \ 00000060 02B0DBE7 LDRB R11,[R11, R2] \ 00000064 0BF18FE0 ADD PC,PC,R11, LSL #+2 \ ??OnKey_0: \ 00000068 0E4C4C4C DC8 +14,+76,+76,+76 \ 0000006C 4C4C4C13 DC8 +76,+76,+76,+19 \ 00000070 4C362B4C DC8 +76,+54,+43,+76 \ 00000074 4C4C4C4C DC8 +76,+76,+76,+76 \ 00000078 4C4C4C4C DC8 +76,+76,+76,+76 \ 0000007C 4C4C3F4C DC8 +76,+76,+63,+76 \ 00000080 4C4C4C4C DC8 +76,+76,+76,+76 \ 00000084 4C4C4C48 DC8 +76,+76,+76,+72 \ 00000088 4C4C4C4C DC8 +76,+76,+76,+76 \ 0000008C 4C4C444C DC8 +76,+76,+68,+76 \ 00000090 4C4C4C4C DC8 +76,+76,+76,+76 \ 00000094 4C4C364C DC8 +76,+76,+54,+76 \ 00000098 1C3F154C DC8 +28,+63,+21,+76 \ 0000009C 2B4C4C36 DC8 +43,+76,+76,+54 \ 000000A0 2B1C1500 DC8 +43,+28,+21,+0 556 { 557 case 4: if (mode==0) {return 1;} else {mode=0;} REDRAW(); break; \ ??OnKey_3: \ 000000A4 00005CE3 CMP R12,#+0 \ 000000A8 0100A003 MOVEQ R0,#+1 \ 000000AC 7900000A BEQ ??OnKey_4 \ 000000B0 007088E5 STR R7,[R8, #+0] \ 000000B4 370000EA B ??OnKey_5 558 559 case GREEN_BUTTON: do_start_connection(); break; \ ??OnKey_6: \ 000000B8 ........ BL do_start_connection \ 000000BC 360000EA B ??OnKey_2 560 561 case '6': case RIGHT_BUTTON: if (mode==1) {x=(x+1)%(loaded); y=0;} REDRAW(); break; \ ??OnKey_7: \ 000000C0 01005CE3 CMP R12,#+1 \ 000000C4 3300001A BNE ??OnKey_5 \ 000000C8 010080E2 ADD R0,R0,#+1 \ 000000CC ........ _BLF ??div32_a,??rA??div32_a \ 000000D0 000089E5 STR R0,[R9, #+0] \ ??OnKey_8: \ 000000D4 007086E5 STR R7,[R6, #+0] \ 000000D8 2E0000EA B ??OnKey_5 562 case '4': case LEFT_BUTTON: if (mode==1) {x=(x+loaded-1)%(loaded); y=0; REDRAW();} if (mode==0 && receive==2){Info();} break; \ ??OnKey_9: \ 000000DC 01005CE3 CMP R12,#+1 \ 000000E0 0500001A BNE ??OnKey_10 \ 000000E4 000081E0 ADD R0,R1,R0 \ 000000E8 010040E2 SUB R0,R0,#+1 \ 000000EC ........ _BLF ??div32_a,??rA??div32_a \ 000000F0 000089E5 STR R0,[R9, #+0] \ 000000F4 007086E5 STR R7,[R6, #+0] \ 000000F8 720100EF SWI +370 \ ??OnKey_10: \ 000000FC 000098E5 LDR R0,[R8, #+0] \ 00000100 000050E3 CMP R0,#+0 \ 00000104 00009A05 LDREQ R0,[R10, #+0] \ 00000108 02005003 CMPEQ R0,#+2 \ 0000010C 2200001A BNE ??OnKey_2 \ 00000110 ........ BL Info \ 00000114 200000EA B ??OnKey_2 563 564 case '8': case DOWN_BUTTON: case VOL_DOWN_BUTTON: if (mode==0) {x=(x+1)%(loaded);} if (mode==1) {y--;}REDRAW(); break; \ ??OnKey_11: \ 00000118 00005CE3 CMP R12,#+0 \ 0000011C 0300001A BNE ??OnKey_12 \ 00000120 010080E2 ADD R0,R0,#+1 \ ??OnKey_13: \ 00000124 ........ _BLF ??div32_a,??rA??div32_a \ 00000128 000089E5 STR R0,[R9, #+0] \ 0000012C 190000EA B ??OnKey_5 \ ??OnKey_12: \ 00000130 01005CE3 CMP R12,#+1 \ 00000134 1700001A BNE ??OnKey_5 \ 00000138 010043E2 SUB R0,R3,#+1 \ ??OnKey_14: \ 0000013C 000086E5 STR R0,[R6, #+0] \ 00000140 140000EA B ??OnKey_5 565 case '2': case UP_BUTTON: case VOL_UP_BUTTON: if (mode==0) {x=(x+loaded-1)%(loaded);} if (mode==1) {y++;}REDRAW(); break; \ ??OnKey_15: \ 00000144 00005CE3 CMP R12,#+0 \ 00000148 0200001A BNE ??OnKey_16 \ 0000014C 000081E0 ADD R0,R1,R0 \ 00000150 010040E2 SUB R0,R0,#+1 \ 00000154 F2FFFFEA B ??OnKey_13 \ ??OnKey_16: \ 00000158 01005CE3 CMP R12,#+1 \ 0000015C 0D00001A BNE ??OnKey_5 \ 00000160 010083E2 ADD R0,R3,#+1 \ 00000164 F4FFFFEA B ??OnKey_14 566 567 case '5': case ENTER_BUTTON: mode=!mode; y=0; REDRAW(); break; \ ??OnKey_17: \ 00000168 00005CE3 CMP R12,#+0 \ 0000016C 0100A003 MOVEQ R0,#+1 \ 00000170 0000A013 MOVNE R0,#+0 \ 00000174 000088E5 STR R0,[R8, #+0] \ 00000178 D5FFFFEA B ??OnKey_8 568 569 case '*': if(receive==2) {SaveAll(); REDRAW(); } break; \ ??OnKey_18: \ 0000017C 02005EE3 CMP LR,#+2 \ 00000180 0500001A BNE ??OnKey_2 \ 00000184 ........ BL SaveAll \ 00000188 020000EA B ??OnKey_5 570 case '#': if(receive==2) {Save(x); REDRAW();} break; \ ??OnKey_19: \ 0000018C 02005EE3 CMP LR,#+2 \ 00000190 0100001A BNE ??OnKey_2 \ 00000194 ........ BL Save \ ??OnKey_5: \ 00000198 720100EF SWI +370 571 } 572 573 } 574 575 if (msg->gbsmsg->msg==LONG_PRESS) \ ??OnKey_2: \ 0000019C 040094E5 LDR R0,[R4, #+4] \ 000001A0 041090E5 LDR R1,[R0, #+4] \ 000001A4 9520A0E3 MOV R2,#+149 \ 000001A8 402F82E3 ORR R2,R2,#0x100 \ 000001AC 020051E1 CMP R1,R2 \ 000001B0 3700001A BNE ??OnKey_20 576 { 577 switch(msg->gbsmsg->submess) \ 000001B4 001095E5 LDR R1,[R5, #+0] \ 000001B8 002099E5 LDR R2,[R9, #+0] \ 000001BC 003096E5 LDR R3,[R6, #+0] \ 000001C0 004098E5 LDR R4,[R8, #+0] \ 000001C4 080090E5 LDR R0,[R0, #+8] \ 000001C8 0D0040E2 SUB R0,R0,#+13 \ 000001CC 310050E3 CMP R0,#+49 \ 000001D0 2F00008A BHI ??OnKey_20 \ 000001D4 015F8FE2 ADR R5,??OnKey_1 \ 000001D8 0050D5E7 LDRB R5,[R5, R0] \ 000001DC 05F18FE0 ADD PC,PC,R5, LSL #+2 \ ??OnKey_1: \ 000001E0 23182C2C DC8 +35,+24,+44,+44 \ 000001E4 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001E8 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001EC 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001F0 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001F4 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001F8 2C2C2C2C DC8 +44,+44,+44,+44 \ 000001FC 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000200 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000204 2C232C13 DC8 +44,+35,+44,+19 \ 00000208 2C0C2C18 DC8 +44,+12,+44,+24 \ 0000020C 2C2C2318 DC8 +44,+44,+35,+24 \ 00000210 130C0000 DC8 +19,+12,+0,+0 578 { 579 580 581 case '6': case RIGHT_BUTTON: if (mode==1) {x=(x+1)%(loaded); y=0; REDRAW();} break; \ ??OnKey_21: \ 00000214 010054E3 CMP R4,#+1 \ 00000218 1D00001A BNE ??OnKey_20 \ 0000021C 010082E2 ADD R0,R2,#+1 \ ??OnKey_22: \ 00000220 ........ _BLF ??div32_a,??rA??div32_a \ 00000224 000089E5 STR R0,[R9, #+0] \ 00000228 007086E5 STR R7,[R6, #+0] \ 0000022C 170000EA B ??OnKey_23 582 case '4': case LEFT_BUTTON: if (mode==1) {x=(x+loaded-1)%(loaded); y=0; REDRAW();} break; \ ??OnKey_24: \ 00000230 010054E3 CMP R4,#+1 \ 00000234 1600001A BNE ??OnKey_20 \ 00000238 020081E0 ADD R0,R1,R2 \ 0000023C 010040E2 SUB R0,R0,#+1 \ 00000240 F6FFFFEA B ??OnKey_22 583 584 case '8': case DOWN_BUTTON: case VOL_DOWN_BUTTON: if (mode==0) {x=(x+1)%(loaded);} if (mode==1) {y--;}REDRAW(); break; \ ??OnKey_25: \ 00000244 000054E3 CMP R4,#+0 \ 00000248 0300001A BNE ??OnKey_26 \ 0000024C 010082E2 ADD R0,R2,#+1 \ ??OnKey_27: \ 00000250 ........ _BLF ??div32_a,??rA??div32_a \ 00000254 000089E5 STR R0,[R9, #+0] \ 00000258 0C0000EA B ??OnKey_23 \ ??OnKey_26: \ 0000025C 010054E3 CMP R4,#+1 \ 00000260 0A00001A BNE ??OnKey_23 \ 00000264 010043E2 SUB R0,R3,#+1 \ 00000268 000086E5 STR R0,[R6, #+0] \ 0000026C 070000EA B ??OnKey_23 585 case '2': case UP_BUTTON: case VOL_UP_BUTTON: if (mode==0) {x=(x+loaded-1)%(loaded);} if (mode==1) {y++;}REDRAW(); break; \ ??OnKey_28: \ 00000270 000054E3 CMP R4,#+0 \ 00000274 0200001A BNE ??OnKey_29 \ 00000278 020081E0 ADD R0,R1,R2 \ 0000027C 010040E2 SUB R0,R0,#+1 \ 00000280 F2FFFFEA B ??OnKey_27 \ ??OnKey_29: \ 00000284 010054E3 CMP R4,#+1 \ 00000288 01008302 ADDEQ R0,R3,#+1 \ 0000028C 00008605 STREQ R0,[R6, #+0] \ ??OnKey_23: \ 00000290 720100EF SWI +370 586 587 588 //case '*': if(receive==2) {SaveAll(); REDRAW(); } break; 589 //case '#': if(receive==2) {Save(x); REDRAW();} break; 590 } 591 592 } 593 return(0); \ ??OnKey_20: \ 00000294 0000A0E3 MOV R0,#+0 \ ??OnKey_4: \ 00000298 F04FBDE8 POP {R4-R11,LR} \ 0000029C 1EFF2FE1 BX LR ;; return 594 } 595 596 extern void kill_data(void *p, void (*func_p)(void *)); 597 /*void onDestroy(MAIN_GUI *data, void (*mfree_adr)(void *)) 598 { 599 kill_data(data,mfree_adr); 600 }*/ 601 \ In segment CODE, align 4, keep-with-next 602 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 603 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment DATA_C, align 4, align-sorted 604 const void * const gui_methods[11]={ \ gui_methods: \ 00000000 ............ DC32 OnRedraw, onCreate, onClose, onFocus, onUnfocus, OnKey, 0H \ ............ \ ............ \ ............ \ 00000000 \ 0000001C ............ DC32 kill_data, method8, method9, 0H \ ............ \ 00000000 605 (void *)OnRedraw, 606 (void *)onCreate, 607 (void *)onClose, 608 (void *)onFocus, 609 (void *)onUnfocus, 610 (void *)OnKey, 611 0, 612 (void *)kill_data, 613 (void *)method8, 614 (void *)method9, 615 0 616 }; 617 \ In segment DATA_C, align 4, align-sorted 618 const RECT Canvas={0,0,0,0}; \ Canvas: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ In segment CODE, align 4, keep-with-next 619 void maincsm_oncreate(CSM_RAM *data) 620 {/* \ maincsm_oncreate: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 621 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); 622 MAIN_CSM*csm=(MAIN_CSM*)data; 623 zeromem(main_gui,sizeof(MAIN_GUI)); 624 main_gui->gui.canvas=(void *)(&Canvas); 625 main_gui->gui.flag30=2; 626 main_gui->gui.methods=(void *)gui_methods; 627 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); 628 csm->csm.state=0; 629 csm->csm.unk1=0; 630 csm->gui_id=CreateGUI(main_gui); 631 */ 632 MAIN_CSM*csm=(MAIN_CSM*)data; 633 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000008 4000A0E3 MOV R0,#+64 \ 0000000C 140000EF SWI +20 \ 00000010 0050A0E1 MOV R5,R0 634 zeromem(main_gui,sizeof(MAIN_GUI)); \ 00000014 4010A0E3 MOV R1,#+64 \ 00000018 1D0100EF SWI +285 635 main_gui->gui.canvas=(void *)(&Canvas); \ 0000001C 3C009FE5 LDR R0,??maincsm_oncreate_0 ;; Canvas \ 00000020 000085E5 STR R0,[R5, #+0] 636 main_gui->gui.methods=(void *)gui_methods; \ 00000024 38009FE5 LDR R0,??maincsm_oncreate_0+0x4 ;; gui_methods \ 00000028 040085E5 STR R0,[R5, #+4] 637 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 0000002C 158000EF SWI +32789 \ 00000030 200085E5 STR R0,[R5, #+32] 638 //patch_rect((RECT*)&Canvas,0,YDISP,ScreenW()-1,ScreenH()-1); 639 csm->csm.state=0; \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 100084E5 STR R0,[R4, #+16] 640 csm->csm.unk1=0; \ 0000003C 140084E5 STR R0,[R4, #+20] 641 MAINGUI_ID=csm->gui_id=CreateGUI(main_gui); \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 370100EF SWI +311 \ 00000048 280084E5 STR R0,[R4, #+40] \ 0000004C 14109FE5 LDR R1,??maincsm_oncreate_0+0x8 ;; MAINGUI_ID \ 00000050 000081E5 STR R0,[R1, #+0] 642 do_start_connection(); \ 00000054 ........ BL do_start_connection 643 } \ 00000058 3040BDE8 POP {R4,R5,LR} \ 0000005C 1EFF2FE1 BX LR ;; return \ ??maincsm_oncreate_0: \ 00000060 ........ DC32 Canvas \ 00000064 ........ DC32 gui_methods \ 00000068 ........ DC32 MAINGUI_ID 644 \ In segment CODE, align 4, keep-with-next 645 void ElfKiller(void) 646 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 647 extern void *ELF_BEGIN; 648 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); \ 00000004 158000EF SWI +32789 \ 00000008 0010A0E1 MOV R1,R0 \ 0000000C 08009FE5 LDR R0,??ElfKiller_0 ;; ELF_BEGIN \ 00000010 ........ _BLF kill_data,??kill_data??rA 649 } \ 00000014 0040BDE8 POP {LR} \ 00000018 1EFF2FE1 BX LR ;; return \ ??ElfKiller_0: \ 0000001C ........ DC32 ELF_BEGIN 650 \ In segment CODE, align 4, keep-with-next 651 void maincsm_onclose(CSM_RAM *csm) 652 { \ maincsm_onclose: \ 00000000 00402DE9 PUSH {LR} 653 SUBPROC((void *)ElfKiller); \ 00000004 08009FE5 LDR R0,??maincsm_onclose_0 ;; ElfKiller \ 00000008 710100EF SWI +369 654 } \ 0000000C 0040BDE8 POP {LR} \ 00000010 1EFF2FE1 BX LR ;; return \ ??maincsm_onclose_0: \ 00000014 ........ DC32 ElfKiller 655 \ In segment CODE, align 4, keep-with-next 656 int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg) 657 { \ maincsm_onmessage: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0140A0E1 MOV R4,R1 658 MAIN_CSM *csm=(MAIN_CSM*)data; ^ Warning[Pe177]: variable "csm" was declared but never referenced 659 /*if ((msg->msg==MSG_GUI_DESTROYED)&&((int)msg->data0==csm->gui_id)) 660 { 661 csm->csm.state=-3; 662 } 663 */ 664 665 if(msg->msg == MSG_RECONFIGURE_REQ) \ 00000008 040094E5 LDR R0,[R4, #+4] \ 0000000C AF10A0E3 MOV R1,#+175 \ 00000010 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000014 010050E1 CMP R0,R1 \ 00000018 0000001A BNE ??maincsm_onmessage_0 666 { 667 InitConfig(); \ 0000001C ........ _BLF InitConfig,??InitConfig??rA 668 } 669 670 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_0: \ 00000020 040094E5 LDR R0,[R4, #+4] \ 00000024 AE10A0E3 MOV R1,#+174 \ 00000028 DE1C81E3 ORR R1,R1,#0xDE00 \ 0000002C 010050E1 CMP R0,R1 \ 00000030 1200001A BNE ??maincsm_onmessage_1 671 { 672 if ((int)msg->data1==sock) \ 00000034 ........ LDR R5,??DataTable43 ;; sock \ 00000038 100094E5 LDR R0,[R4, #+16] \ 0000003C 001095E5 LDR R1,[R5, #+0] \ 00000040 010050E1 CMP R0,R1 \ 00000044 0D00001A BNE ??maincsm_onmessage_1 673 { 674 //Если наш сокет 675 switch((int)msg->data0) \ 00000048 ........ LDR R0,??DataTable44 ;; connect_state \ 0000004C 0C1094E5 LDR R1,[R4, #+12] \ 00000050 8C1051E2 SUBS R1,R1,#+140 \ 00000054 0C00000A BEQ ??maincsm_onmessage_2 \ 00000058 011051E2 SUBS R1,R1,#+1 \ 0000005C 0400000A BEQ ??maincsm_onmessage_3 \ 00000060 011051E2 SUBS R1,R1,#+1 \ 00000064 1000000A BEQ ??maincsm_onmessage_4 \ 00000068 011051E2 SUBS R1,R1,#+1 \ 0000006C 0800000A BEQ ??maincsm_onmessage_5 \ 00000070 020000EA B ??maincsm_onmessage_1 676 { 677 case ENIP_SOCK_CONNECTED: 678 679 //Если посылали запрос 680 SUBPROC((void *)send_req); \ ??maincsm_onmessage_3: \ 00000074 48009FE5 LDR R0,??maincsm_onmessage_6 ;; send_req \ ??maincsm_onmessage_7: \ 00000078 710100EF SWI +369 681 //progressbar=7; 682 REDRAW(); \ 0000007C 720100EF SWI +370 \ ??maincsm_onmessage_1: \ 00000080 0100A0E3 MOV R0,#+1 \ 00000084 3040BDE8 POP {R4,R5,LR} \ 00000088 1EFF2FE1 BX LR 683 684 break; 685 case ENIP_SOCK_DATA_READ: 686 687 //Если посылали send 688 SUBPROC((void *)get_answer); \ ??maincsm_onmessage_2: \ 0000008C 34009FE5 LDR R0,??maincsm_onmessage_6+0x4 ;; get_answer \ 00000090 F8FFFFEA B ??maincsm_onmessage_7 689 //progressbar=4; 690 REDRAW(); 691 692 693 break; 694 case ENIP_SOCK_REMOTE_CLOSED: 695 //Закрыт со стороны сервера 696 if (connect_state) SUBPROC((void *)end_socket); \ ??maincsm_onmessage_5: \ 00000094 000090E5 LDR R0,[R0, #+0] \ 00000098 000050E3 CMP R0,#+0 \ 0000009C F7FFFF0A BEQ ??maincsm_onmessage_1 \ 000000A0 24009FE5 LDR R0,??maincsm_onmessage_6+0x8 ;; end_socket \ 000000A4 710100EF SWI +369 \ 000000A8 F4FFFFEA B ??maincsm_onmessage_1 697 break; 698 case ENIP_SOCK_CLOSED: 699 //Закрыт вызовом closesocket 700 connect_state=0; \ ??maincsm_onmessage_4: \ 000000AC 0010A0E3 MOV R1,#+0 \ 000000B0 001080E5 STR R1,[R0, #+0] 701 //progressbar=21; 702 //Save(); 703 Parsing(); \ 000000B4 ........ BL Parsing 704 //progressbar=22; 705 sock=-1; \ 000000B8 0000E0E3 MVN R0,#+0 \ 000000BC 000085E5 STR R0,[R5, #+0] 706 break; 707 } 708 } 709 710 } 711 return(1); \ ??maincsm_onmessage_8: \ 000000C0 EEFFFFEA B ??maincsm_onmessage_1 \ ??maincsm_onmessage_6: \ 000000C4 ........ DC32 send_req \ 000000C8 ........ DC32 get_answer \ 000000CC ........ DC32 end_socket 712 } 713 714 const struct 715 { 716 CSM_DESC maincsm; 717 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted 718 }MAINCSM = \ MAINCSM: \ 00000000 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 0000001C 2C0000000100 DC32 44, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 00000038 8B00 DC16 139 \ 0000003A 0000 DC8 0, 0 719 { 720 { 721 maincsm_onmessage, 722 maincsm_oncreate, 723 #ifdef NEWSGOLD 724 0, 725 0, 726 0, 727 0, 728 #endif 729 maincsm_onclose, 730 sizeof(MAIN_CSM), 731 1, 732 &minus11 733 }, 734 { 735 maincsm_name_body, 736 NAMECSM_MAGIC1, 737 NAMECSM_MAGIC2, 738 0x0, 739 139 740 } 741 }; 742 \ In segment CODE, align 4, keep-with-next 743 void UpdateCSMname(void) 744 { \ UpdateCSMname: \ 00000000 00402DE9 PUSH {LR} 745 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"Bash.org.ru"); \ 00000004 0C109FE5 LDR R1,??UpdateCSMname_0 ;; `?<Constant "Bash.org.ru">` \ 00000008 0C009FE5 LDR R0,??UpdateCSMname_0+0x4 ;; MAINCSM + 40 \ 0000000C 240100EF SWI +292 746 } \ 00000010 0040BDE8 POP {LR} \ 00000014 1EFF2FE1 BX LR ;; return \ ??UpdateCSMname_0: \ 00000018 ........ DC32 `?<Constant "Bash.org.ru">` \ 0000001C ........ DC32 MAINCSM + 40 747 748 \ In segment CODE, align 4, keep-with-next 749 int main(char *exename, char *fname) 750 { \ main: \ 00000000 00402DE9 PUSH {LR} \ 00000004 30D04DE2 SUB SP,SP,#+48 751 InitConfig(); \ 00000008 ........ _BLF InitConfig,??InitConfig??rA 752 753 unsigned int err=0; \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 00108DE5 STR R1,[SP, #+0] 754 mkdir(hist_path, &err); \ 00000014 0D10A0E1 MOV R1,SP \ 00000018 ........ LDR R0,??DataTable45 ;; hist_path \ 0000001C 100000EF SWI +16 755 /* 756 char dummy[sizeof(MAIN_CSM)]; 757 MAINCSM_ID = CreateCSM(&MAINCSM.maincsm,dummy,0); 758 UpdateCSMname(); 759 */ 760 MAIN_CSM main_csm; 761 LockSched(); \ 00000020 460100EF SWI +326 762 UpdateCSMname(); \ 00000024 ........ BL UpdateCSMname 763 CreateCSM(&MAINCSM.maincsm,&main_csm,0); \ 00000028 0020A0E3 MOV R2,#+0 \ 0000002C 04108DE2 ADD R1,SP,#+4 \ 00000030 14009FE5 LDR R0,??main_0 ;; MAINCSM \ 00000034 070100EF SWI +263 764 UnlockSched(); \ 00000038 470100EF SWI +327 765 return 0; \ 0000003C 0000A0E3 MOV R0,#+0 \ 00000040 30D08DE2 ADD SP,SP,#+48 ;; stack cleaning \ 00000044 0040BDE8 POP {LR} \ 00000048 1EFF2FE1 BX LR ;; return \ ??main_0: \ 0000004C ........ DC32 MAINCSM 766 } \ In segment CODE, align 4, keep-with-next \ ??DataTable6: \ 00000000 ........ DC32 connect_state \ In segment CODE, align 4, keep-with-next \ ??DataTable8: \ 00000000 ........ DC32 pbuf \ In segment CODE, align 4, keep-with-next \ ??DataTable9: \ 00000000 ........ DC32 limit \ In segment CODE, align 4, keep-with-next \ ??DataTable11: \ 00000000 ........ DC32 sock \ In segment CODE, align 4, keep-with-next \ ??DataTable12: \ 00000000 ........ DC32 buf \ In segment CODE, align 4, keep-with-next \ ??DataTable21: \ 00000000 ........ DC32 _oktotorp \ In segment CODE, align 4, keep-with-next \ ??DataTable22: \ 00000000 ........ DC32 hist_path \ In segment CODE, align 4, keep-with-next \ ??DataTable23: \ 00000000 ........ DC32 `?<Constant "%s\\\\q%i.bash">` \ In segment CODE, align 4, keep-with-next \ ??DataTable24: \ 00000000 ........ DC32 loaded \ In segment CODE, align 4, keep-with-next \ ??DataTable25: \ 00000000 ........ DC32 receive \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 items \ In segment CODE, align 4, keep-with-next \ ??DataTable30: \ 00000000 ........ DC32 limit \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 pbuf \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 items \ In segment CODE, align 4, keep-with-next \ ??DataTable38: \ 00000000 ........ DC32 loaded \ In segment CODE, align 4, keep-with-next \ ??DataTable39: \ 00000000 ........ DC32 y \ In segment CODE, align 4, keep-with-next \ ??DataTable40: \ 00000000 ........ DC32 mode \ In segment CODE, align 4, keep-with-next \ ??DataTable41: \ 00000000 ........ DC32 x \ In segment CODE, align 4, keep-with-next \ ??DataTable42: \ 00000000 ........ DC32 receive \ In segment CODE, align 4, keep-with-next \ ??DataTable43: \ 00000000 ........ DC32 sock \ In segment CODE, align 4, keep-with-next \ ??DataTable44: \ 00000000 ........ DC32 connect_state \ In segment CODE, align 4, keep-with-next \ ??DataTable45: \ 00000000 ........ DC32 hist_path \ In segment DATA_C, align 4, align-sorted \ `?<Constant "%i/%i">`: \ 00000000 25692F256900 DC8 "%i/%i" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "No connect">`: \ 00000000 4E6F20636F6E DC8 "No connect" \ 6E65637400 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 2D3100 DC8 "-1" \ In segment DATA_C, align 1, align-sorted \ 00000000 2B3100 DC8 "+1" \ In segment DATA_C, align 4, align-sorted \ `?<Constant "%i %w">`: \ 00000000 256920202577 DC8 "%i %w" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "QUOTE: %s\\n\\rDATE: %s\\n\\r...">`: \ 00000000 51554F54453A DC8 "QUOTE: %s\012\015DATE: %s\012\015MOOD: %i\012\015 " \ 2025730A0D44 \ 4154453A2025 \ 730A0D4D4F4F \ 443A2025690A \ 0D2000 \ 00000021 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "%s\\\\%i.png">`: \ 00000000 25735C25692E DC8 "%s\\%i.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "MOOD: ">`: \ 00000000 4D4F4F443A20 DC8 "MOOD: " \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "%s\\\\q%i.bash">`: \ 00000000 25735C712569 DC8 "%s\\q%i.bash" \ 2E6261736800 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "uote/">`: \ 00000000 756F74652F00 DC8 "uote/" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "<link>">`: \ 00000000 3C6C696E6B3E DC8 "<link>" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "<title>">`: \ 00000000 3C7469746C65 DC8 "<title>" \ 3E00 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "CDATA">`: \ 00000000 434441544100 DC8 "CDATA" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "<item>">`: \ 00000000 3C6974656D3E DC8 "<item>" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 2B00 DC8 "+" \ In segment DATA_C, align 4, align-sorted \ `?<Constant "Date">`: \ 00000000 4461746500 DC8 "Date" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "Content-Length: ">`: \ 00000000 436F6E74656E DC8 "Content-Length: " \ 742D4C656E67 \ 74683A2000 \ 00000011 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "GET /rss/ HTTP/1.0\\r\\nH...">`: \ 00000000 474554202F72 DC8 "GET /rss/ HTTP/1.0\015\012Host: www.bash.org.ru\015\012\015\012" \ 73732F204854 \ 54502F312E30 \ 0D0A486F7374 \ 3A207777772E \ 626173682E6F \ 72672E72750D \ 0A0D0A00 \ 0000002E 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?<Constant "Bash.org.ru">`: \ 00000000 426173682E6F DC8 "Bash.org.ru" \ 72672E727500 Maximum stack usage in bytes: Function CSTACK -------- ------ DrawMoodIcon 108 ElfKiller 4 GetMood 160 Info 60 OnKey 36 OnRedraw 80 Parsing 36 Save 4208 SaveAll 12 UpdateCSMname 4 ascii2ws 12 atoi 0 char8to16 0 create_connect 36 do_start_connection 4 end_socket 8 get_answer 8 main 52 maincsm_onclose 4 maincsm_oncreate 12 maincsm_onmessage 12 method8 0 method9 0 onClose 0 onCreate 0 onFocus 4 onUnfocus 0 send_req 8 Segment part sizes: Function/Label Bytes -------------- ----- minus11 4 maincsm_name_body 280 MAINCSM_ID 4 MAINGUI_ID 4 icsmd 40 old_icsm_onMessage 4 old_icsm_onClose 4 sock 4 connect_state 4 buf 65536 pbuf 4 receive 4 loaded 4 items 322500 item 300 length 4 x 4 y 4 mode 4 wintranslation 128 dos2unicode 256 char8to16 56 ascii2ws 68 create_connect 164 do_start_connection 36 req_buf 256 send_req 80 end_socket 44 get_answer 92 atoi 56 Parsing 856 _fstr 12 _oktotorp 2 GetMood 244 DrawMoodIcon 72 Save 220 SaveAll 72 Info 340 OnRedraw 2648 onCreate 12 onClose 12 onFocus 24 onUnfocus 20 OnKey 672 method8 8 method9 8 gui_methods 44 Canvas 8 maincsm_oncreate 108 ElfKiller 32 maincsm_onclose 24 maincsm_onmessage 208 MAINCSM 60 UpdateCSMname 32 main 80 ??DataTable6 4 ??DataTable8 4 ??DataTable9 4 ??DataTable11 4 ??DataTable12 4 ??DataTable21 4 ??DataTable22 4 ??DataTable23 4 ??DataTable24 4 ??DataTable25 4 ??DataTable27 4 ??DataTable30 4 ??DataTable32 4 ??DataTable34 4 ??DataTable38 4 ??DataTable39 4 ??DataTable40 4 ??DataTable41 4 ??DataTable42 4 ??DataTable43 4 ??DataTable44 4 ??DataTable45 4 ?<Constant "%i/%i"> 8 ?<Constant "No connect"> 12 ?<Constant "-1"> 3 ?<Constant "+1"> 3 ?<Constant "%i %w"> 8 ?<Constant "QUOTE: %s\n\rDATE: %s\n\r..."> 36 ?<Constant "%s\\%i.png"> 12 ?<Constant "MOOD: "> 8 ?<Constant "%s\\q%i.bash"> 12 ?<Constant "uote/"> 8 ?<Constant "<link>"> 8 ?<Constant "<title>"> 8 ?<Constant "CDATA"> 8 ?<Constant "<item>"> 8 ?<Constant "+"> 2 ?<Constant "Date"> 8 ?<Constant "Content-Length: "> 20 ?<Constant "GET /rss/ HTTP/1.0\r\nH..."> 48 ?<Constant "Bash.org.ru"> 12 Others 172 6 536 bytes in segment CODE 746 bytes in segment DATA_C 388 964 bytes in segment DATA_Z 12 bytes in segment INITTAB 6 376 bytes of CODE memory (+ 172 bytes shared) 746 bytes of CONST memory 388 964 bytes of DATA memory Errors: none Warnings: 1