############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 12/Aug/2008 18:25:09 # # 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 -lC # # D:\Pasha\elf\feanor\bashorg\Release\List\ -o # # D:\Pasha\elf\feanor\bashorg\Release\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\List\main.lst # # Object file = D:\Pasha\elf\feanor\bashorg\Release\Obj\main.r79 # # # # # ############################################################################## 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 24 \ 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 297 298 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 299 { 300 int xx=0; \ 0000002C 0050A0E3 MOV R5,#+0 301 char path[96]; 302 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 303 unsigned int ul; 304 int f; 305 char* buffer; 306 FSTATS StatBuffer; 307 308 int size; 309 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 310 { 311 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 312 size=StatBuffer.size; \ 00000088 68509DE5 LDR R5,[SP, #+104] 313 buffer=malloc(size); \ 0000008C 0500A0E1 MOV R0,R5 \ 00000090 140000EF SWI +20 \ 00000094 0070A0E1 MOV R7,R0 314 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 315 316 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 317 318 fclose(f,&ul); \ 000000C4 0D10A0E1 MOV R1,SP \ 000000C8 0600A0E1 MOV R0,R6 \ 000000CC 0D0000EF SWI +13 319 mfree(buffer); \ 000000D0 0700A0E1 MOV R0,R7 \ 000000D4 150000EF SWI +21 320 items[xs].mood=30; \ 000000D8 1E00A0E3 MOV R0,#+30 \ 000000DC 000084E5 STR R0,[R4, #+0] 321 } 322 items[xs].mood=xx; \ ??GetMood_1: \ 000000E0 005084E5 STR R5,[R4, #+0] 323 } 324 } \ ??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: ">` 325 326 extern const char ic_path[64]; 327 \ In segment CODE, align 4, keep-with-next 328 void DrawMoodIcon(int x, int y, int ic) 329 { \ DrawMoodIcon: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 60D04DE2 SUB SP,SP,#+96 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 330 char pth[96]; 331 332 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 333 DrawImg(x,y,(int)pth); \ 00000024 0D20A0E1 MOV R2,SP \ 00000028 0510A0E1 MOV R1,R5 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 230000EF SWI +35 334 } \ 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">` 335 336 337 \ In segment CODE, align 4, keep-with-next 338 void Save(int xs) 339 { \ Save: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 64D04DE2 SUB SP,SP,#+100 \ 00000008 40DD4DE2 SUB SP,SP,#+4096 340 const int def_mood=30; 341 342 char path[96]; 343 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 344 345 char buff[4096]; 346 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 347 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] 348 349 unsigned int ul; 350 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 351 if (f!=-1) \ 00000090 010074E3 CMN R4,#+1 \ 00000094 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning \ 00000098 0A00000A BEQ ??Save_1 352 { 353 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 354 fclose(f,&ul); \ 000000B8 0D10A0E1 MOV R1,SP \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 0D0000EF SWI +13 355 REDRAW(); \ 000000C4 720100EF SWI +370 356 357 } 358 } \ ??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...">` 359 360 361 \ In segment CODE, align 4, keep-with-next 362 void SaveAll(void) 363 { \ SaveAll: \ 00000000 30402DE9 PUSH {R4,R5,LR} 364 365 366 367 368 369 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 370 { 371 Save(h); \ ??SaveAll_2: \ 00000020 0400A0E1 MOV R0,R4 \ 00000024 ........ BL Save 372 } \ 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 373 374 REDRAW(); \ ??SaveAll_1: \ 0000003C 720100EF SWI +370 375 } \ 00000040 3040BDE8 POP {R4,R5,LR} \ 00000044 1EFF2FE1 BX LR ;; return 376 377 //=========================================== 378 \ In segment CODE, align 4, keep-with-next 379 void Info() 380 { \ Info: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 381 WSHDR *ws = AllocWS(128); \ 00000004 8000A0E3 MOV R0,#+128 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 382 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 383 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 384 { 385 ascii2ws(ws,items[x].title); \ 00000070 ........ LDR R5,??DataTable39 ;; 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 386 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 387 388 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 389 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 390 } 391 392 else {return;} 393 394 395 396 FreeWS(ws); \ 00000144 0400A0E1 MOV R0,R4 \ 00000148 290100EF SWI +297 397 398 } \ ??Info_0: \ 0000014C F040BDE8 POP {R4-R7,LR} \ 00000150 1EFF2FE1 BX LR ;; return 399 400 401 \ In segment CODE, align 4, keep-with-next 402 void OnRedraw(MAIN_GUI *data) 403 { \ OnRedraw: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 404 WSHDR *ws = AllocWS(4096); \ 00000004 400DA0E3 MOV R0,#+4096 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 405 WSHDR *wsx = AllocWS(4096); \ 00000010 400DA0E3 MOV R0,#+4096 \ 00000014 250100EF SWI +293 \ 00000018 0050A0E1 MOV R5,R0 406 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ 0000001C 0100A0E3 MOV R0,#+1 \ 00000020 2E0100EF SWI +302 \ 00000024 0060A0E1 MOV R6,R0 \ 00000028 1600A0E3 MOV R0,#+22 \ 0000002C 2E0100EF SWI +302 \ 00000030 0070A0E1 MOV R7,R0 \ 00000034 898100EF SWI +33161 \ 00000038 0080A0E1 MOV R8,R0 \ 0000003C 888100EF SWI +33160 \ 00000040 40002DE9 PUSH {R6} \ 00000044 80002DE9 PUSH {R7} \ 00000048 0010A0E3 MOV R1,#+0 \ 0000004C 02002DE9 PUSH {R1} \ 00000050 02002DE9 PUSH {R1} \ 00000054 02002DE9 PUSH {R1} \ 00000058 013048E2 SUB R3,R8,#+1 \ 0000005C 012040E2 SUB R2,R0,#+1 \ 00000060 0000A0E3 MOV R0,#+0 \ 00000064 500100EF SWI +336 407 408 int bar=7; \ 00000068 0780A0E3 MOV R8,#+7 409 410 411 if(receive==2) {bar=4;} \ 0000006C ........ LDR R6,??DataTable40 ;; receive \ 00000070 000096E5 LDR R0,[R6, #+0] \ 00000074 ........ LDR R7,??DataTable29 ;; pbuf \ 00000078 020050E3 CMP R0,#+2 \ 0000007C 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 00000080 0480A003 MOVEQ R8,#+4 \ 00000084 0600000A BEQ ??OnRedraw_0 412 if(receive==0) {bar=2;} \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 0280A003 MOVEQ R8,#+2 \ 00000090 0300000A BEQ ??OnRedraw_0 413 if(receive==1) { if(pbuf==0) {bar=22;} else {bar=7;} } \ 00000094 010050E3 CMP R0,#+1 \ 00000098 00009705 LDREQ R0,[R7, #+0] \ 0000009C 00005003 CMPEQ R0,#+0 \ 000000A0 1680A003 MOVEQ R8,#+22 414 415 416 DrawRoundedFrame(60,5,125,10,0,0,0,GetPaletteAdrByColorIndex(bar),GetPaletteAdrByColorIndex(23)); \ ??OnRedraw_0: \ 000000A4 1700A0E3 MOV R0,#+23 \ 000000A8 2E0100EF SWI +302 \ 000000AC 0090A0E1 MOV R9,R0 \ 000000B0 0800A0E1 MOV R0,R8 \ 000000B4 2E0100EF SWI +302 \ 000000B8 00022DE9 PUSH {R9} \ 000000BC 01002DE9 PUSH {R0} \ 000000C0 0000A0E3 MOV R0,#+0 \ 000000C4 01002DE9 PUSH {R0} \ 000000C8 01002DE9 PUSH {R0} \ 000000CC 01002DE9 PUSH {R0} \ 000000D0 0A30A0E3 MOV R3,#+10 \ 000000D4 7D20A0E3 MOV R2,#+125 \ 000000D8 0510A0E3 MOV R1,#+5 \ 000000DC 3C00A0E3 MOV R0,#+60 \ 000000E0 500100EF SWI +336 417 DrawRoundedFrame(60,5,60+(pbuf*65/limit),10,0,0,3,GetPaletteAdrByColorIndex(bar),GetPaletteAdrByColorIndex(23)); \ 000000E4 1700A0E3 MOV R0,#+23 \ 000000E8 2E0100EF SWI +302 \ 000000EC 0090A0E1 MOV R9,R0 \ 000000F0 0800A0E1 MOV R0,R8 \ 000000F4 2E0100EF SWI +302 \ 000000F8 ........ LDR R1,??DataTable30 ;; limit \ 000000FC 008091E5 LDR R8,[R1, #+0] \ 00000100 00022DE9 PUSH {R9} \ 00000104 01002DE9 PUSH {R0} \ 00000108 0300A0E3 MOV R0,#+3 \ 0000010C 01002DE9 PUSH {R0} \ 00000110 0000A0E3 MOV R0,#+0 \ 00000114 01002DE9 PUSH {R0} \ 00000118 01002DE9 PUSH {R0} \ 0000011C 0A30A0E3 MOV R3,#+10 \ 00000120 000097E5 LDR R0,[R7, #+0] \ 00000124 000380E0 ADD R0,R0,R0, LSL #+6 \ 00000128 0810A0E1 MOV R1,R8 \ 0000012C ........ _BLF ??divu32_a,??rA??divu32_a \ 00000130 3C2081E2 ADD R2,R1,#+60 \ 00000134 0510A0E3 MOV R1,#+5 \ 00000138 3C00A0E3 MOV R0,#+60 \ 0000013C 500100EF SWI +336 \ 00000140 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 418 419 wsprintf(ws, "%i/%i",pbuf,limit); \ 00000144 0830A0E1 MOV R3,R8 \ 00000148 002097E5 LDR R2,[R7, #+0] \ 0000014C 98189FE5 LDR R1,??OnRedraw_1+0x8 ;; `?<Constant "%i/%i">` \ 00000150 0400A0E1 MOV R0,R4 \ 00000154 240100EF SWI +292 420 DrawString(ws,5,13,ScreenW()-3,ScreenH()-1,6,4,GetPaletteAdrByColorIndex((receive==2)?4:22),GetPaletteAdrByColorIndex(23)); \ 00000158 1700A0E3 MOV R0,#+23 \ 0000015C 2E0100EF SWI +302 \ 00000160 0070A0E1 MOV R7,R0 \ 00000164 000096E5 LDR R0,[R6, #+0] \ 00000168 020050E3 CMP R0,#+2 \ 0000016C 0400A003 MOVEQ R0,#+4 \ 00000170 1600A013 MOVNE R0,#+22 \ 00000174 2E0100EF SWI +302 \ 00000178 0090A0E1 MOV R9,R0 \ 0000017C 898100EF SWI +33161 \ 00000180 0080A0E1 MOV R8,R0 \ 00000184 888100EF SWI +33160 \ 00000188 80002DE9 PUSH {R7} \ 0000018C 00022DE9 PUSH {R9} \ 00000190 0410A0E3 MOV R1,#+4 \ 00000194 02002DE9 PUSH {R1} \ 00000198 0610A0E3 MOV R1,#+6 \ 0000019C 02002DE9 PUSH {R1} \ 000001A0 011048E2 SUB R1,R8,#+1 \ 000001A4 02002DE9 PUSH {R1} \ 000001A8 033040E2 SUB R3,R0,#+3 \ 000001AC 0D20A0E3 MOV R2,#+13 \ 000001B0 0510A0E3 MOV R1,#+5 \ 000001B4 0400A0E1 MOV R0,R4 \ 000001B8 4C0100EF SWI +332 421 422 423 424 425 426 427 if(receive==2) \ 000001BC 000096E5 LDR R0,[R6, #+0] \ 000001C0 020050E3 CMP R0,#+2 \ 000001C4 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 000001C8 E601001A BNE ??OnRedraw_2 428 { 429 430 if (mode==0) \ 000001CC ........ LDR R7,??DataTable39 ;; x \ 000001D0 ........ LDR R8,??DataTable32 ;; items \ 000001D4 ........ LDR R0,??DataTable38 ;; mode \ 000001D8 000090E5 LDR R0,[R0, #+0] \ 000001DC 000050E3 CMP R0,#+0 \ 000001E0 3901001A BNE ??OnRedraw_3 431 { 432 433 434 //------------------------------- 435 if (items[x-2].flag!=0 && x-2>-1) \ 000001E4 000097E5 LDR R0,[R7, #+0] \ 000001E8 CC20A0E3 MOV R2,#+204 \ 000001EC 402D82E3 ORR R2,R2,#0x1000 \ 000001F0 928021E0 MLA R1,R2,R0,R8 \ 000001F4 F4979FE5 LDR R9,??OnRedraw_1+0xC ;; `?<Constant "%i %w">` \ 000001F8 D320E0E3 MVN R2,#+211 \ 000001FC 402DC2E3 BIC R2,R2,#0x1000 \ 00000200 0120D2E7 LDRB R2,[R2, +R1] \ 00000204 000052E3 CMP R2,#+0 \ 00000208 3000000A BEQ ??OnRedraw_4 \ 0000020C 020050E2 SUBS R0,R0,#+2 \ 00000210 2E00004A BMI ??OnRedraw_4 436 { 437 ascii2ws(ws,items[x-2].title); \ 00000214 5700E0E3 MVN R0,#+87 \ 00000218 440DC0E3 BIC R0,R0,#0x1100 \ 0000021C 011080E0 ADD R1,R0,R1 \ 00000220 0400A0E1 MOV R0,R4 \ 00000224 ........ BL ascii2ws 438 //DrawString(ws,35,20,128,35,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 439 440 if(ic){ \ 00000228 C4079FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 0000022C 000090E5 LDR R0,[R0, #+0] \ 00000230 000050E3 CMP R0,#+0 \ 00000234 0C00000A BEQ ??OnRedraw_5 441 GetMood(x-2); \ 00000238 000097E5 LDR R0,[R7, #+0] \ 0000023C 020040E2 SUB R0,R0,#+2 \ 00000240 ........ BL GetMood 442 DrawMoodIcon(110,19,items[x-2].mood); \ 00000244 CF00E0E3 MVN R0,#+207 \ 00000248 400DC0E3 BIC R0,R0,#0x1000 \ 0000024C 001097E5 LDR R1,[R7, #+0] \ 00000250 CC20A0E3 MOV R2,#+204 \ 00000254 402D82E3 ORR R2,R2,#0x1000 \ 00000258 928121E0 MLA R1,R2,R1,R8 \ 0000025C 012090E7 LDR R2,[R0, +R1] \ 00000260 1310A0E3 MOV R1,#+19 \ 00000264 6E00A0E3 MOV R0,#+110 \ 00000268 ........ BL DrawMoodIcon 443 } 444 445 wsprintf(wsx, "%i %w",x-2,ws); \ ??OnRedraw_5: \ 0000026C 0430A0E1 MOV R3,R4 \ 00000270 000097E5 LDR R0,[R7, #+0] \ 00000274 022040E2 SUB R2,R0,#+2 \ 00000278 0910A0E1 MOV R1,R9 \ 0000027C 0500A0E1 MOV R0,R5 \ 00000280 240100EF SWI +292 446 DrawString(wsx,3,20,128,35,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000284 1700A0E3 MOV R0,#+23 \ 00000288 2E0100EF SWI +302 \ 0000028C 00A0A0E1 MOV R10,R0 \ 00000290 0000A0E3 MOV R0,#+0 \ 00000294 2E0100EF SWI +302 \ 00000298 00042DE9 PUSH {R10} \ 0000029C 01002DE9 PUSH {R0} \ 000002A0 0100A0E3 MOV R0,#+1 \ 000002A4 01002DE9 PUSH {R0} \ 000002A8 0700A0E3 MOV R0,#+7 \ 000002AC 01002DE9 PUSH {R0} \ 000002B0 2300A0E3 MOV R0,#+35 \ 000002B4 01002DE9 PUSH {R0} \ 000002B8 8030A0E3 MOV R3,#+128 \ 000002BC 1420A0E3 MOV R2,#+20 \ 000002C0 0310A0E3 MOV R1,#+3 \ 000002C4 0500A0E1 MOV R0,R5 \ 000002C8 4C0100EF SWI +332 \ 000002CC 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 447 } 448 //------------------------------- 449 if (items[x-1].flag!=0 && x-1>-1) \ ??OnRedraw_4: \ 000002D0 000097E5 LDR R0,[R7, #+0] \ 000002D4 CC20A0E3 MOV R2,#+204 \ 000002D8 402D82E3 ORR R2,R2,#0x1000 \ 000002DC 928021E0 MLA R1,R2,R0,R8 \ 000002E0 082051E5 LDRB R2,[R1, #-8] \ 000002E4 000052E3 CMP R2,#+0 \ 000002E8 2D00000A BEQ ??OnRedraw_6 \ 000002EC 010050E2 SUBS R0,R0,#+1 \ 000002F0 2B00004A BMI ??OnRedraw_6 450 { 451 ascii2ws(ws,items[x-1].title); \ 000002F4 8B00E0E3 MVN R0,#+139 \ 000002F8 011080E0 ADD R1,R0,R1 \ 000002FC 0400A0E1 MOV R0,R4 \ 00000300 ........ BL ascii2ws 452 //DrawString(ws,35,40,128,55,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 453 454 if(ic){ \ 00000304 E8069FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 00000308 000090E5 LDR R0,[R0, #+0] \ 0000030C 000050E3 CMP R0,#+0 \ 00000310 0A00000A BEQ ??OnRedraw_7 455 GetMood(x-1); \ 00000314 000097E5 LDR R0,[R7, #+0] \ 00000318 010040E2 SUB R0,R0,#+1 \ 0000031C ........ BL GetMood 456 DrawMoodIcon(110,39,items[x-1].mood); \ 00000320 000097E5 LDR R0,[R7, #+0] \ 00000324 CC10A0E3 MOV R1,#+204 \ 00000328 401D81E3 ORR R1,R1,#0x1000 \ 0000032C 918020E0 MLA R0,R1,R0,R8 \ 00000330 042010E5 LDR R2,[R0, #-4] \ 00000334 2710A0E3 MOV R1,#+39 \ 00000338 6E00A0E3 MOV R0,#+110 \ 0000033C ........ BL DrawMoodIcon 457 } 458 459 wsprintf(wsx, "%i %w",x-1,ws); \ ??OnRedraw_7: \ 00000340 0430A0E1 MOV R3,R4 \ 00000344 000097E5 LDR R0,[R7, #+0] \ 00000348 012040E2 SUB R2,R0,#+1 \ 0000034C 0910A0E1 MOV R1,R9 \ 00000350 0500A0E1 MOV R0,R5 \ 00000354 240100EF SWI +292 460 DrawString(wsx,3,40,128,55,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000358 1700A0E3 MOV R0,#+23 \ 0000035C 2E0100EF SWI +302 \ 00000360 00A0A0E1 MOV R10,R0 \ 00000364 0000A0E3 MOV R0,#+0 \ 00000368 2E0100EF SWI +302 \ 0000036C 00042DE9 PUSH {R10} \ 00000370 01002DE9 PUSH {R0} \ 00000374 0100A0E3 MOV R0,#+1 \ 00000378 01002DE9 PUSH {R0} \ 0000037C 0700A0E3 MOV R0,#+7 \ 00000380 01002DE9 PUSH {R0} \ 00000384 3700A0E3 MOV R0,#+55 \ 00000388 01002DE9 PUSH {R0} \ 0000038C 8030A0E3 MOV R3,#+128 \ 00000390 2820A0E3 MOV R2,#+40 \ 00000394 0310A0E3 MOV R1,#+3 \ 00000398 0500A0E1 MOV R0,R5 \ 0000039C 4C0100EF SWI +332 \ 000003A0 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 461 } 462 //------------------------------- 463 464 ascii2ws(ws,items[x].title); \ ??OnRedraw_6: \ 000003A4 000097E5 LDR R0,[R7, #+0] \ 000003A8 CC10A0E3 MOV R1,#+204 \ 000003AC 401D81E3 ORR R1,R1,#0x1000 \ 000003B0 918020E0 MLA R0,R1,R0,R8 \ 000003B4 411D80E2 ADD R1,R0,#+4160 \ 000003B8 0400A0E1 MOV R0,R4 \ 000003BC ........ BL ascii2ws 465 //DrawString(ws,35,60,128,75,7,32,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(0)); 466 467 if(ic){ \ 000003C0 2C069FE5 LDR R0,??OnRedraw_1+0x10 ;; ic \ 000003C4 00A090E5 LDR R10,[R0, #+0] \ 000003C8 00005AE3 CMP R10,#+0 \ 000003CC 0A00000A BEQ ??OnRedraw_8 468 GetMood(x); \ 000003D0 000097E5 LDR R0,[R7, #+0] \ 000003D4 ........ BL GetMood 469 DrawMoodIcon(110,59,items[x].mood); \ 000003D8 C800A0E3 MOV R0,#+200 \ 000003DC 400D80E3 ORR R0,R0,#0x1000 \ 000003E0 001097E5 LDR R1,[R7, #+0] \ 000003E4 042080E3 ORR R2,R0,#0x4 \ 000003E8 928121E0 MLA R1,R2,R1,R8 \ 000003EC 012090E7 LDR R2,[R0, +R1] \ 000003F0 3B10A0E3 MOV R1,#+59 \ 000003F4 6E00A0E3 MOV R0,#+110 \ 000003F8 ........ BL DrawMoodIcon 470 } 471 472 wsprintf(wsx, "%i %w",x,ws); \ ??OnRedraw_8: \ 000003FC 0430A0E1 MOV R3,R4 \ 00000400 002097E5 LDR R2,[R7, #+0] \ 00000404 0910A0E1 MOV R1,R9 \ 00000408 0500A0E1 MOV R0,R5 \ 0000040C 240100EF SWI +292 473 DrawString(wsx,3,60,128,75,7,32,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(0)); \ 00000410 0000A0E3 MOV R0,#+0 \ 00000414 2E0100EF SWI +302 \ 00000418 00B0A0E1 MOV R11,R0 \ 0000041C 0100A0E3 MOV R0,#+1 \ 00000420 2E0100EF SWI +302 \ 00000424 00082DE9 PUSH {R11} \ 00000428 01002DE9 PUSH {R0} \ 0000042C 2000A0E3 MOV R0,#+32 \ 00000430 01002DE9 PUSH {R0} \ 00000434 0700A0E3 MOV R0,#+7 \ 00000438 01002DE9 PUSH {R0} \ 0000043C 4B00A0E3 MOV R0,#+75 \ 00000440 01002DE9 PUSH {R0} \ 00000444 8030A0E3 MOV R3,#+128 \ 00000448 3C20A0E3 MOV R2,#+60 \ 0000044C 0310A0E3 MOV R1,#+3 \ 00000450 0500A0E1 MOV R0,R5 \ 00000454 4C0100EF SWI +332 474 475 //------------------------------- 476 if (items[x+1].flag!=0) \ 00000458 000097E5 LDR R0,[R7, #+0] \ 0000045C CC10A0E3 MOV R1,#+204 \ 00000460 401D81E3 ORR R1,R1,#0x1000 \ 00000464 918020E0 MLA R0,R1,R0,R8 \ 00000468 9010A0E3 MOV R1,#+144 \ 0000046C 841D81E3 ORR R1,R1,#0x2100 \ 00000470 0010D1E7 LDRB R1,[R1, +R0] \ 00000474 000051E3 CMP R1,#+0 \ 00000478 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 0000047C 2C00000A BEQ ??OnRedraw_9 477 { 478 ascii2ws(ws,items[x+1].title); \ 00000480 0C10A0E3 MOV R1,#+12 \ 00000484 841D81E3 ORR R1,R1,#0x2100 \ 00000488 001081E0 ADD R1,R1,R0 \ 0000048C 0400A0E1 MOV R0,R4 \ 00000490 ........ BL ascii2ws 479 //DrawString(ws,35,80,128,95,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 480 481 if(ic){ \ 00000494 00005AE3 CMP R10,#+0 \ 00000498 0C00000A BEQ ??OnRedraw_10 482 GetMood(x+1); \ 0000049C 000097E5 LDR R0,[R7, #+0] \ 000004A0 010080E2 ADD R0,R0,#+1 \ 000004A4 ........ BL GetMood 483 DrawMoodIcon(110,79,items[x+1].mood); \ 000004A8 9400A0E3 MOV R0,#+148 \ 000004AC 840D80E3 ORR R0,R0,#0x2100 \ 000004B0 001097E5 LDR R1,[R7, #+0] \ 000004B4 CC20A0E3 MOV R2,#+204 \ 000004B8 402D82E3 ORR R2,R2,#0x1000 \ 000004BC 928121E0 MLA R1,R2,R1,R8 \ 000004C0 012090E7 LDR R2,[R0, +R1] \ 000004C4 4F10A0E3 MOV R1,#+79 \ 000004C8 6E00A0E3 MOV R0,#+110 \ 000004CC ........ BL DrawMoodIcon 484 } 485 486 wsprintf(wsx, "%i %w",x+1,ws); \ ??OnRedraw_10: \ 000004D0 0430A0E1 MOV R3,R4 \ 000004D4 000097E5 LDR R0,[R7, #+0] \ 000004D8 012080E2 ADD R2,R0,#+1 \ 000004DC 0910A0E1 MOV R1,R9 \ 000004E0 0500A0E1 MOV R0,R5 \ 000004E4 240100EF SWI +292 487 DrawString(wsx,3,80,128,95,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000004E8 1700A0E3 MOV R0,#+23 \ 000004EC 2E0100EF SWI +302 \ 000004F0 00B0A0E1 MOV R11,R0 \ 000004F4 0000A0E3 MOV R0,#+0 \ 000004F8 2E0100EF SWI +302 \ 000004FC 00082DE9 PUSH {R11} \ 00000500 01002DE9 PUSH {R0} \ 00000504 0100A0E3 MOV R0,#+1 \ 00000508 01002DE9 PUSH {R0} \ 0000050C 0700A0E3 MOV R0,#+7 \ 00000510 01002DE9 PUSH {R0} \ 00000514 5F00A0E3 MOV R0,#+95 \ 00000518 01002DE9 PUSH {R0} \ 0000051C 8030A0E3 MOV R3,#+128 \ 00000520 5020A0E3 MOV R2,#+80 \ 00000524 0310A0E3 MOV R1,#+3 \ 00000528 0500A0E1 MOV R0,R5 \ 0000052C 4C0100EF SWI +332 \ 00000530 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 488 } 489 //------------------------------- 490 if (items[x+2].flag!=0) \ ??OnRedraw_9: \ 00000534 000097E5 LDR R0,[R7, #+0] \ 00000538 CC10A0E3 MOV R1,#+204 \ 0000053C 401D81E3 ORR R1,R1,#0x1000 \ 00000540 918020E0 MLA R0,R1,R0,R8 \ 00000544 5C10A0E3 MOV R1,#+92 \ 00000548 C81D81E3 ORR R1,R1,#0x3200 \ 0000054C 0010D1E7 LDRB R1,[R1, +R0] \ 00000550 000051E3 CMP R1,#+0 \ 00000554 2C00000A BEQ ??OnRedraw_11 491 { 492 ascii2ws(ws,items[x+2].title); \ 00000558 D810A0E3 MOV R1,#+216 \ 0000055C C41D81E3 ORR R1,R1,#0x3100 \ 00000560 001081E0 ADD R1,R1,R0 \ 00000564 0400A0E1 MOV R0,R4 \ 00000568 ........ BL ascii2ws 493 //DrawString(ws,35,100,128,115,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 494 495 if(ic){ \ 0000056C 00005AE3 CMP R10,#+0 \ 00000570 0C00000A BEQ ??OnRedraw_12 496 GetMood(x+2); \ 00000574 000097E5 LDR R0,[R7, #+0] \ 00000578 020080E2 ADD R0,R0,#+2 \ 0000057C ........ BL GetMood 497 DrawMoodIcon(110,99,items[x+2].mood); \ 00000580 6000A0E3 MOV R0,#+96 \ 00000584 C80D80E3 ORR R0,R0,#0x3200 \ 00000588 001097E5 LDR R1,[R7, #+0] \ 0000058C CC20A0E3 MOV R2,#+204 \ 00000590 402D82E3 ORR R2,R2,#0x1000 \ 00000594 928121E0 MLA R1,R2,R1,R8 \ 00000598 012090E7 LDR R2,[R0, +R1] \ 0000059C 6310A0E3 MOV R1,#+99 \ 000005A0 6E00A0E3 MOV R0,#+110 \ 000005A4 ........ BL DrawMoodIcon 498 } 499 500 wsprintf(wsx, "%i %w",x+2,ws); \ ??OnRedraw_12: \ 000005A8 0430A0E1 MOV R3,R4 \ 000005AC 000097E5 LDR R0,[R7, #+0] \ 000005B0 022080E2 ADD R2,R0,#+2 \ 000005B4 0910A0E1 MOV R1,R9 \ 000005B8 0500A0E1 MOV R0,R5 \ 000005BC 240100EF SWI +292 501 DrawString(wsx,3,100,128,115,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000005C0 1700A0E3 MOV R0,#+23 \ 000005C4 2E0100EF SWI +302 \ 000005C8 0090A0E1 MOV R9,R0 \ 000005CC 0000A0E3 MOV R0,#+0 \ 000005D0 2E0100EF SWI +302 \ 000005D4 00022DE9 PUSH {R9} \ 000005D8 01002DE9 PUSH {R0} \ 000005DC 0100A0E3 MOV R0,#+1 \ 000005E0 01002DE9 PUSH {R0} \ 000005E4 0700A0E3 MOV R0,#+7 \ 000005E8 01002DE9 PUSH {R0} \ 000005EC 7300A0E3 MOV R0,#+115 \ 000005F0 01002DE9 PUSH {R0} \ 000005F4 8030A0E3 MOV R3,#+128 \ 000005F8 6420A0E3 MOV R2,#+100 \ 000005FC 0310A0E3 MOV R1,#+3 \ 00000600 0500A0E1 MOV R0,R5 \ 00000604 4C0100EF SWI +332 \ 00000608 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 502 } 503 //------------------------------- 504 DrawRoundedFrame(2,118,ScreenW()-3,173,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ ??OnRedraw_11: \ 0000060C 0100A0E3 MOV R0,#+1 \ 00000610 2E0100EF SWI +302 \ 00000614 0090A0E1 MOV R9,R0 \ 00000618 1600A0E3 MOV R0,#+22 \ 0000061C 2E0100EF SWI +302 \ 00000620 00A0A0E1 MOV R10,R0 \ 00000624 888100EF SWI +33160 \ 00000628 00022DE9 PUSH {R9} \ 0000062C 00042DE9 PUSH {R10} \ 00000630 0010A0E3 MOV R1,#+0 \ 00000634 02002DE9 PUSH {R1} \ 00000638 02002DE9 PUSH {R1} \ 0000063C 02002DE9 PUSH {R1} \ 00000640 AD30A0E3 MOV R3,#+173 \ 00000644 032040E2 SUB R2,R0,#+3 \ 00000648 7610A0E3 MOV R1,#+118 \ 0000064C 0200A0E3 MOV R0,#+2 \ 00000650 500100EF SWI +336 505 ascii2ws(ws,items[x].comm); \ 00000654 000097E5 LDR R0,[R7, #+0] \ 00000658 CC10A0E3 MOV R1,#+204 \ 0000065C 401D81E3 ORR R1,R1,#0x1000 \ 00000660 918020E0 MLA R0,R1,R0,R8 \ 00000664 401080E2 ADD R1,R0,#+64 \ 00000668 0400A0E1 MOV R0,R4 \ 0000066C ........ BL ascii2ws 506 DrawString(ws,4,120,128,119+4*GetFontYSIZE(7),7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000670 1700A0E3 MOV R0,#+23 \ 00000674 2E0100EF SWI +302 \ 00000678 0090A0E1 MOV R9,R0 \ 0000067C 0000A0E3 MOV R0,#+0 \ 00000680 2E0100EF SWI +302 \ 00000684 00A0A0E1 MOV R10,R0 \ 00000688 0700A0E3 MOV R0,#+7 \ 0000068C C50100EF SWI +453 \ 00000690 00022DE9 PUSH {R9} \ 00000694 00042DE9 PUSH {R10} \ 00000698 0110A0E3 MOV R1,#+1 \ 0000069C 02002DE9 PUSH {R1} \ 000006A0 0710A0E3 MOV R1,#+7 \ 000006A4 02002DE9 PUSH {R1} \ 000006A8 7710A0E3 MOV R1,#+119 \ 000006AC 000181E0 ADD R0,R1,R0, LSL #+2 \ 000006B0 01002DE9 PUSH {R0} \ 000006B4 8030A0E3 MOV R3,#+128 \ 000006B8 7820A0E3 MOV R2,#+120 \ 000006BC 0410A0E3 MOV R1,#+4 \ 000006C0 0400A0E1 MOV R0,R4 \ 000006C4 4C0100EF SWI +332 \ 000006C8 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 507 } 508 509 510 if (mode==1) \ ??OnRedraw_3: \ 000006CC ........ LDR R0,??DataTable38 ;; mode \ 000006D0 000090E5 LDR R0,[R0, #+0] \ 000006D4 010050E3 CMP R0,#+1 \ 000006D8 A200001A BNE ??OnRedraw_2 511 { 512 513 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(1)); \ 000006DC 2E0100EF SWI +302 \ 000006E0 0090A0E1 MOV R9,R0 \ 000006E4 1600A0E3 MOV R0,#+22 \ 000006E8 2E0100EF SWI +302 \ 000006EC 00A0A0E1 MOV R10,R0 \ 000006F0 898100EF SWI +33161 \ 000006F4 00B0A0E1 MOV R11,R0 \ 000006F8 888100EF SWI +33160 \ 000006FC 00022DE9 PUSH {R9} \ 00000700 00042DE9 PUSH {R10} \ 00000704 0010A0E3 MOV R1,#+0 \ 00000708 02002DE9 PUSH {R1} \ 0000070C 02002DE9 PUSH {R1} \ 00000710 02002DE9 PUSH {R1} \ 00000714 01304BE2 SUB R3,R11,#+1 \ 00000718 012040E2 SUB R2,R0,#+1 \ 0000071C 0000A0E3 MOV R0,#+0 \ 00000720 500100EF SWI +336 514 515 //ascii2ws(ws,items[x].author); 516 //DrawString(ws,5,3+y*GetFontYSIZE(8),128,174,8,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 517 518 ascii2ws(ws,"+1"); \ 00000724 AE1F8FE2 ADR R1,??OnRedraw_1 ;; "+1" \ 00000728 0400A0E1 MOV R0,R4 \ 0000072C ........ BL ascii2ws 519 DrawString(ws,5,3+(y-1)*GetFontYSIZE(8),128,174,8,1,GetPaletteAdrByColorIndex( !(y-3)?2:0 ),GetPaletteAdrByColorIndex(23)); \ 00000730 1700A0E3 MOV R0,#+23 \ 00000734 2E0100EF SWI +302 \ 00000738 0090A0E1 MOV R9,R0 \ 0000073C ........ LDR R10,??DataTable37 ;; y \ 00000740 00009AE5 LDR R0,[R10, #+0] \ 00000744 030050E2 SUBS R0,R0,#+3 \ 00000748 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 0000074C 0200A003 MOVEQ R0,#+2 \ 00000750 0000A013 MOVNE R0,#+0 \ 00000754 2E0100EF SWI +302 \ 00000758 00B0A0E1 MOV R11,R0 \ 0000075C 0800A0E3 MOV R0,#+8 \ 00000760 C50100EF SWI +453 \ 00000764 00022DE9 PUSH {R9} \ 00000768 00082DE9 PUSH {R11} \ 0000076C 0110A0E3 MOV R1,#+1 \ 00000770 02002DE9 PUSH {R1} \ 00000774 0810A0E3 MOV R1,#+8 \ 00000778 02002DE9 PUSH {R1} \ 0000077C AE10A0E3 MOV R1,#+174 \ 00000780 02002DE9 PUSH {R1} \ 00000784 8030A0E3 MOV R3,#+128 \ 00000788 00109AE5 LDR R1,[R10, #+0] \ 0000078C 011041E2 SUB R1,R1,#+1 \ 00000790 900101E0 MUL R1,R0,R1 \ 00000794 032081E2 ADD R2,R1,#+3 \ 00000798 0510A0E3 MOV R1,#+5 \ 0000079C 0400A0E1 MOV R0,R4 \ 000007A0 4C0100EF SWI +332 520 521 ascii2ws(ws,"-1"); \ 000007A4 8F1F8FE2 ADR R1,??OnRedraw_1+0x4 ;; "-1" \ 000007A8 0400A0E1 MOV R0,R4 \ 000007AC ........ BL ascii2ws 522 DrawString(ws,5,3+(y-1)*GetFontYSIZE(8),128,174,8,4,GetPaletteAdrByColorIndex( !(y-2)?2:0 ),GetPaletteAdrByColorIndex(23)); \ 000007B0 1700A0E3 MOV R0,#+23 \ 000007B4 2E0100EF SWI +302 \ 000007B8 0090A0E1 MOV R9,R0 \ 000007BC 00009AE5 LDR R0,[R10, #+0] \ 000007C0 020050E2 SUBS R0,R0,#+2 \ 000007C4 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 000007C8 0200A003 MOVEQ R0,#+2 \ 000007CC 0000A013 MOVNE R0,#+0 \ 000007D0 2E0100EF SWI +302 \ 000007D4 00B0A0E1 MOV R11,R0 \ 000007D8 0800A0E3 MOV R0,#+8 \ 000007DC C50100EF SWI +453 \ 000007E0 00022DE9 PUSH {R9} \ 000007E4 00082DE9 PUSH {R11} \ 000007E8 0410A0E3 MOV R1,#+4 \ 000007EC 02002DE9 PUSH {R1} \ 000007F0 0810A0E3 MOV R1,#+8 \ 000007F4 02002DE9 PUSH {R1} \ 000007F8 AE10A0E3 MOV R1,#+174 \ 000007FC 02002DE9 PUSH {R1} \ 00000800 8030A0E3 MOV R3,#+128 \ 00000804 00109AE5 LDR R1,[R10, #+0] \ 00000808 011041E2 SUB R1,R1,#+1 \ 0000080C 900101E0 MUL R1,R0,R1 \ 00000810 032081E2 ADD R2,R1,#+3 \ 00000814 0510A0E3 MOV R1,#+5 \ 00000818 0400A0E1 MOV R0,R4 \ 0000081C 4C0100EF SWI +332 523 524 ascii2ws(ws,items[x].date); \ 00000820 000097E5 LDR R0,[R7, #+0] \ 00000824 CC20A0E3 MOV R2,#+204 \ 00000828 402D82E3 ORR R2,R2,#0x1000 \ 0000082C 928021E0 MLA R1,R2,R0,R8 \ 00000830 0400A0E1 MOV R0,R4 \ 00000834 ........ BL ascii2ws 525 DrawString(ws,5,3+(y+1)*GetFontYSIZE(8),128,174,8,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000838 1700A0E3 MOV R0,#+23 \ 0000083C 2E0100EF SWI +302 \ 00000840 0090A0E1 MOV R9,R0 \ 00000844 0000A0E3 MOV R0,#+0 \ 00000848 2E0100EF SWI +302 \ 0000084C 00B0A0E1 MOV R11,R0 \ 00000850 0800A0E3 MOV R0,#+8 \ 00000854 C50100EF SWI +453 \ 00000858 00022DE9 PUSH {R9} \ 0000085C 00082DE9 PUSH {R11} \ 00000860 0110A0E3 MOV R1,#+1 \ 00000864 02002DE9 PUSH {R1} \ 00000868 0810A0E3 MOV R1,#+8 \ 0000086C 02002DE9 PUSH {R1} \ 00000870 AE10A0E3 MOV R1,#+174 \ 00000874 02002DE9 PUSH {R1} \ 00000878 8030A0E3 MOV R3,#+128 \ 0000087C 00109AE5 LDR R1,[R10, #+0] \ 00000880 011081E2 ADD R1,R1,#+1 \ 00000884 900101E0 MUL R1,R0,R1 \ 00000888 032081E2 ADD R2,R1,#+3 \ 0000088C 0510A0E3 MOV R1,#+5 \ 00000890 0400A0E1 MOV R0,R4 \ 00000894 4C0100EF SWI +332 \ 00000898 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 526 527 ascii2ws(ws,items[x].comm); \ 0000089C 000097E5 LDR R0,[R7, #+0] \ 000008A0 CC10A0E3 MOV R1,#+204 \ 000008A4 401D81E3 ORR R1,R1,#0x1000 \ 000008A8 918020E0 MLA R0,R1,R0,R8 \ 000008AC 401080E2 ADD R1,R0,#+64 \ 000008B0 0400A0E1 MOV R0,R4 \ 000008B4 ........ BL ascii2ws 528 DrawString(ws,5,3+(y+3)*GetFontYSIZE(7),128,174,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000008B8 1700A0E3 MOV R0,#+23 \ 000008BC 2E0100EF SWI +302 \ 000008C0 0070A0E1 MOV R7,R0 \ 000008C4 0000A0E3 MOV R0,#+0 \ 000008C8 2E0100EF SWI +302 \ 000008CC 0080A0E1 MOV R8,R0 \ 000008D0 0700A0E3 MOV R0,#+7 \ 000008D4 C50100EF SWI +453 \ 000008D8 80002DE9 PUSH {R7} \ 000008DC 00012DE9 PUSH {R8} \ 000008E0 0110A0E3 MOV R1,#+1 \ 000008E4 02002DE9 PUSH {R1} \ 000008E8 0710A0E3 MOV R1,#+7 \ 000008EC 02002DE9 PUSH {R1} \ 000008F0 AE10A0E3 MOV R1,#+174 \ 000008F4 02002DE9 PUSH {R1} \ 000008F8 8030A0E3 MOV R3,#+128 \ 000008FC 00109AE5 LDR R1,[R10, #+0] \ 00000900 031081E2 ADD R1,R1,#+3 \ 00000904 900101E0 MUL R1,R0,R1 \ 00000908 032081E2 ADD R2,R1,#+3 \ 0000090C 0510A0E3 MOV R1,#+5 \ 00000910 0400A0E1 MOV R0,R4 \ 00000914 4C0100EF SWI +332 529 530 531 DrawRoundedFrame(0,0,ScreenW()-1,ScreenH()-1,0,0,0,GetPaletteAdrByColorIndex(22),GetPaletteAdrByColorIndex(23)); \ 00000918 1700A0E3 MOV R0,#+23 \ 0000091C 2E0100EF SWI +302 \ 00000920 0080A0E1 MOV R8,R0 \ 00000924 1600A0E3 MOV R0,#+22 \ 00000928 2E0100EF SWI +302 \ 0000092C 0090A0E1 MOV R9,R0 \ 00000930 898100EF SWI +33161 \ 00000934 0070A0E1 MOV R7,R0 \ 00000938 888100EF SWI +33160 \ 0000093C 00012DE9 PUSH {R8} \ 00000940 00022DE9 PUSH {R9} \ 00000944 0010A0E3 MOV R1,#+0 \ 00000948 02002DE9 PUSH {R1} \ 0000094C 02002DE9 PUSH {R1} \ 00000950 02002DE9 PUSH {R1} \ 00000954 013047E2 SUB R3,R7,#+1 \ 00000958 012040E2 SUB R2,R0,#+1 \ 0000095C 0000A0E3 MOV R0,#+0 \ 00000960 500100EF SWI +336 \ 00000964 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning 532 533 //ascii2ws(ws,items[x].comm); 534 //DrawString(ws,5,3+(y+1)*GetFontYSIZE(7),128,174,7,1,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 535 } 536 537 } 538 539 540 if(receive==0) \ ??OnRedraw_2: \ 00000968 000096E5 LDR R0,[R6, #+0] \ 0000096C 000050E3 CMP R0,#+0 \ 00000970 1500001A BNE ??OnRedraw_13 541 { 542 wsprintf(ws, "No connect"); \ 00000974 7C109FE5 LDR R1,??OnRedraw_1+0x14 ;; `?<Constant "No connect">` \ 00000978 0400A0E1 MOV R0,R4 \ 0000097C 240100EF SWI +292 543 DrawString(ws,25,25,128,172,3,32,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(22)); \ 00000980 1600A0E3 MOV R0,#+22 \ 00000984 2E0100EF SWI +302 \ 00000988 0060A0E1 MOV R6,R0 \ 0000098C 0000A0E3 MOV R0,#+0 \ 00000990 2E0100EF SWI +302 \ 00000994 40002DE9 PUSH {R6} \ 00000998 01002DE9 PUSH {R0} \ 0000099C 2000A0E3 MOV R0,#+32 \ 000009A0 01002DE9 PUSH {R0} \ 000009A4 0300A0E3 MOV R0,#+3 \ 000009A8 01002DE9 PUSH {R0} \ 000009AC AC00A0E3 MOV R0,#+172 \ 000009B0 01002DE9 PUSH {R0} \ 000009B4 8030A0E3 MOV R3,#+128 \ 000009B8 1920A0E3 MOV R2,#+25 \ 000009BC 1910A0E3 MOV R1,#+25 \ 000009C0 0400A0E1 MOV R0,R4 \ 000009C4 4C0100EF SWI +332 \ 000009C8 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning 544 } 545 546 547 548 FreeWS(ws); FreeWS(wsx); \ ??OnRedraw_13: \ 000009CC 0400A0E1 MOV R0,R4 \ 000009D0 290100EF SWI +297 \ 000009D4 0500A0E1 MOV R0,R5 \ 000009D8 290100EF SWI +297 549 } \ 000009DC F04FBDE8 POP {R4-R11,LR} \ 000009E0 1EFF2FE1 BX LR ;; return \ ??OnRedraw_1: \ 000009E4 2B310000 DC8 "+1",+0 \ 000009E8 2D310000 DC8 "-1",+0 \ 000009EC ........ DC32 `?<Constant "%i/%i">` \ 000009F0 ........ DC32 `?<Constant "%i %w">` \ 000009F4 ........ DC32 ic \ 000009F8 ........ DC32 `?<Constant "No connect">` 550 551 552 553 554 555 \ In segment CODE, align 4, keep-with-next 556 void onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 557 { 558 data->gui.state=1; \ onCreate: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 0C10C0E5 STRB R1,[R0, #+12] 559 } \ 00000008 1EFF2FE1 BX LR ;; return 560 \ In segment CODE, align 4, keep-with-next 561 void onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 562 { 563 data->gui.state=0; \ onClose: \ 00000000 0010A0E3 MOV R1,#+0 \ 00000004 0C10C0E5 STRB R1,[R0, #+12] 564 } \ 00000008 1EFF2FE1 BX LR ;; return 565 \ In segment CODE, align 4, keep-with-next 566 void onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 567 { \ onFocus: \ 00000000 00402DE9 PUSH {LR} 568 data->gui.state=2; \ 00000004 0210A0E3 MOV R1,#+2 \ 00000008 0C10C0E5 STRB R1,[R0, #+12] 569 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 570 } \ 00000010 0040BDE8 POP {LR} \ 00000014 1EFF2FE1 BX LR ;; return 571 \ In segment CODE, align 4, keep-with-next 572 void onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 573 { 574 if (data->gui.state!=2) return; \ onUnfocus: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 575 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 576 } \ 00000010 1EFF2FE1 BX LR ;; return 577 \ In segment CODE, align 4, keep-with-next 578 int OnKey(MAIN_GUI *data, GUI_MSG *msg) 579 { \ OnKey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 0140A0E1 MOV R4,R1 580 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000008 042094E5 LDR R2,[R4, #+4] \ 0000000C ........ LDR R5,??DataTable36 ;; loaded \ 00000010 ........ LDR R6,??DataTable37 ;; y \ 00000014 0070A0E3 MOV R7,#+0 \ 00000018 ........ LDR R8,??DataTable38 ;; mode \ 0000001C ........ LDR R9,??DataTable39 ;; x \ 00000020 F200D2E1 LDRSH R0,[R2, #+2] \ 00000024 9310A0E3 MOV R1,#+147 \ 00000028 401F81E3 ORR R1,R1,#0x100 \ 0000002C 010050E1 CMP R0,R1 \ 00000030 5900001A BNE ??OnKey_2 581 { 582 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,??DataTable40 ;; receive \ 00000048 00E09AE5 LDR LR,[R10, #+0] \ 0000004C 042092E5 LDR R2,[R2, #+4] \ 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 583 { 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 584 585 case GREEN_BUTTON: do_start_connection(); break; \ ??OnKey_6: \ 000000B8 ........ BL do_start_connection \ 000000BC 360000EA B ??OnKey_2 586 587 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 588 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 589 590 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 591 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 592 593 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 594 595 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 596 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 597 } 598 599 } 600 601 if (msg->gbsmsg->msg==LONG_PRESS) \ ??OnKey_2: \ 0000019C 040094E5 LDR R0,[R4, #+4] \ 000001A0 F210D0E1 LDRSH R1,[R0, #+2] \ 000001A4 9520A0E3 MOV R2,#+149 \ 000001A8 402F82E3 ORR R2,R2,#0x100 \ 000001AC 020051E1 CMP R1,R2 \ 000001B0 3700001A BNE ??OnKey_20 602 { 603 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 040090E5 LDR R0,[R0, #+4] \ 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 604 { 605 606 607 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 608 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 609 610 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 611 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 612 613 614 //case '*': if(receive==2) {SaveAll(); REDRAW(); } break; 615 //case '#': if(receive==2) {Save(x); REDRAW();} break; 616 } 617 618 } 619 return(0); \ ??OnKey_20: \ 00000294 0000A0E3 MOV R0,#+0 \ ??OnKey_4: \ 00000298 F04FBDE8 POP {R4-R11,LR} \ 0000029C 1EFF2FE1 BX LR ;; return 620 } 621 622 extern void kill_data(void *p, void (*func_p)(void *)); \ In segment CODE, align 4, keep-with-next 623 void onDestroy(MAIN_GUI *data, void (*mfree_adr)(void *)) 624 { \ onDestroy: \ 00000000 00402DE9 PUSH {LR} 625 kill_data(data,mfree_adr); \ 00000004 ........ _BLF kill_data,??kill_data??rA 626 } \ 00000008 0040BDE8 POP {LR} \ 0000000C 1EFF2FE1 BX LR ;; return 627 \ In segment CODE, align 4, keep-with-next 628 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 629 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment DATA_C, align 4, align-sorted 630 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 631 (void *)OnRedraw, 632 (void *)onCreate, 633 (void *)onClose, 634 (void *)onFocus, 635 (void *)onUnfocus, 636 (void *)OnKey, 637 0, 638 #ifdef NEWSGOLD 639 (void *)onDestroy, 640 #else 641 (void *)kill_data, 642 #endif 643 (void *)method8, 644 (void *)method9, 645 0 646 }; 647 \ In segment DATA_C, align 4, align-sorted 648 const RECT Canvas={0,0,129,129}; \ Canvas: \ 00000000 000000008100 DC16 0, 0, 129, 129 \ 8100 \ In segment CODE, align 4, keep-with-next 649 void maincsm_oncreate(CSM_RAM *data) 650 { \ maincsm_oncreate: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 651 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000008 3C00A0E3 MOV R0,#+60 \ 0000000C 140000EF SWI +20 \ 00000010 0050A0E1 MOV R5,R0 652 MAIN_CSM*csm=(MAIN_CSM*)data; 653 zeromem(main_gui,sizeof(MAIN_GUI)); \ 00000014 3C10A0E3 MOV R1,#+60 \ 00000018 1D0100EF SWI +285 654 main_gui->gui.canvas=(void *)(&Canvas); \ 0000001C 48009FE5 LDR R0,??maincsm_oncreate_0 ;; Canvas \ 00000020 000085E5 STR R0,[R5, #+0] 655 main_gui->gui.flag30=2; \ 00000024 0200A0E3 MOV R0,#+2 \ 00000028 2C0085E5 STR R0,[R5, #+44] 656 main_gui->gui.methods=(void *)gui_methods; \ 0000002C 3C009FE5 LDR R0,??maincsm_oncreate_0+0x4 ;; gui_methods \ 00000030 040085E5 STR R0,[R5, #+4] 657 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000034 158000EF SWI +32789 \ 00000038 1C0085E5 STR R0,[R5, #+28] 658 csm->csm.state=0; \ 0000003C 0000A0E3 MOV R0,#+0 \ 00000040 100084E5 STR R0,[R4, #+16] 659 csm->csm.unk1=0; \ 00000044 140084E5 STR R0,[R4, #+20] 660 csm->gui_id=CreateGUI(main_gui); \ 00000048 0500A0E1 MOV R0,R5 \ 0000004C 370100EF SWI +311 \ 00000050 280084E5 STR R0,[R4, #+40] 661 MAINGUI_ID=csm->gui_id; \ 00000054 18009FE5 LDR R0,??maincsm_oncreate_0+0x8 ;; MAINGUI_ID \ 00000058 281094E5 LDR R1,[R4, #+40] \ 0000005C 001080E5 STR R1,[R0, #+0] 662 do_start_connection(); \ 00000060 ........ BL do_start_connection 663 664 } \ 00000064 3040BDE8 POP {R4,R5,LR} \ 00000068 1EFF2FE1 BX LR ;; return \ ??maincsm_oncreate_0: \ 0000006C ........ DC32 Canvas \ 00000070 ........ DC32 gui_methods \ 00000074 ........ DC32 MAINGUI_ID 665 \ In segment CODE, align 4, keep-with-next 666 void ElfKiller(void) 667 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 668 extern void kill_data(void *p, void (*func_p)(void *)); 669 extern void *ELF_BEGIN; 670 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 671 } \ 00000014 0040BDE8 POP {LR} \ 00000018 1EFF2FE1 BX LR ;; return \ ??ElfKiller_0: \ 0000001C ........ DC32 ELF_BEGIN 672 \ In segment CODE, align 4, keep-with-next 673 void maincsm_onclose(CSM_RAM *csm) 674 { \ maincsm_onclose: \ 00000000 00402DE9 PUSH {LR} 675 SUBPROC((void *)ElfKiller); \ 00000004 08009FE5 LDR R0,??maincsm_onclose_0 ;; ElfKiller \ 00000008 710100EF SWI +369 676 } \ 0000000C 0040BDE8 POP {LR} \ 00000010 1EFF2FE1 BX LR ;; return \ ??maincsm_onclose_0: \ 00000014 ........ DC32 ElfKiller 677 \ In segment CODE, align 4, keep-with-next 678 int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg) 679 { \ maincsm_onmessage: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0140A0E1 MOV R4,R1 680 MAIN_CSM *csm=(MAIN_CSM*)data; 681 if ((msg->msg==MSG_GUI_DESTROYED)&&((int)msg->data0==csm->gui_id)) \ 00000008 F210D4E1 LDRSH R1,[R4, #+2] \ 0000000C 980051E3 CMP R1,#+152 \ 00000010 0500001A BNE ??maincsm_onmessage_0 \ 00000014 081094E5 LDR R1,[R4, #+8] \ 00000018 282090E5 LDR R2,[R0, #+40] \ 0000001C 020051E1 CMP R1,R2 \ 00000020 1D00001A BNE ??maincsm_onmessage_1 682 { 683 csm->csm.state=-3; \ 00000024 0210E0E3 MVN R1,#+2 \ 00000028 101080E5 STR R1,[R0, #+16] 684 } 685 686 687 if(msg->msg == MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_0: \ 0000002C F200D4E1 LDRSH R0,[R4, #+2] \ 00000030 F110A0E3 MOV R1,#+241 \ 00000034 C01F81E3 ORR R1,R1,#0x300 \ 00000038 010050E1 CMP R0,R1 \ 0000003C 0000001A BNE ??maincsm_onmessage_2 688 { 689 InitConfig(); \ 00000040 ........ _BLF InitConfig,??InitConfig??rA 690 } 691 692 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_2: \ 00000044 F200D4E1 LDRSH R0,[R4, #+2] \ 00000048 FC0F50E3 CMP R0,#+1008 \ 0000004C 1200001A BNE ??maincsm_onmessage_1 693 { 694 if ((int)msg->data1==sock) \ 00000050 ........ LDR R5,??DataTable41 ;; sock \ 00000054 0C0094E5 LDR R0,[R4, #+12] \ 00000058 001095E5 LDR R1,[R5, #+0] \ 0000005C 010050E1 CMP R0,R1 \ 00000060 0D00001A BNE ??maincsm_onmessage_1 695 { 696 //Если наш сокет 697 switch((int)msg->data0) \ 00000064 ........ LDR R0,??DataTable42 ;; connect_state \ 00000068 081094E5 LDR R1,[R4, #+8] \ 0000006C 8C1051E2 SUBS R1,R1,#+140 \ 00000070 0C00000A BEQ ??maincsm_onmessage_3 \ 00000074 011051E2 SUBS R1,R1,#+1 \ 00000078 0400000A BEQ ??maincsm_onmessage_4 \ 0000007C 011051E2 SUBS R1,R1,#+1 \ 00000080 1000000A BEQ ??maincsm_onmessage_5 \ 00000084 011051E2 SUBS R1,R1,#+1 \ 00000088 0800000A BEQ ??maincsm_onmessage_6 \ 0000008C 020000EA B ??maincsm_onmessage_1 698 { 699 case ENIP_SOCK_CONNECTED: 700 701 //Если посылали запрос 702 SUBPROC((void *)send_req); \ ??maincsm_onmessage_4: \ 00000090 48009FE5 LDR R0,??maincsm_onmessage_7 ;; send_req \ ??maincsm_onmessage_8: \ 00000094 710100EF SWI +369 703 //progressbar=7; 704 REDRAW(); \ 00000098 720100EF SWI +370 \ ??maincsm_onmessage_1: \ 0000009C 0100A0E3 MOV R0,#+1 \ 000000A0 3040BDE8 POP {R4,R5,LR} \ 000000A4 1EFF2FE1 BX LR 705 706 break; 707 case ENIP_SOCK_DATA_READ: 708 709 //Если посылали send 710 SUBPROC((void *)get_answer); \ ??maincsm_onmessage_3: \ 000000A8 34009FE5 LDR R0,??maincsm_onmessage_7+0x4 ;; get_answer \ 000000AC F8FFFFEA B ??maincsm_onmessage_8 711 //progressbar=4; 712 REDRAW(); 713 714 715 break; 716 case ENIP_SOCK_REMOTE_CLOSED: 717 //Закрыт со стороны сервера 718 if (connect_state) SUBPROC((void *)end_socket); \ ??maincsm_onmessage_6: \ 000000B0 000090E5 LDR R0,[R0, #+0] \ 000000B4 000050E3 CMP R0,#+0 \ 000000B8 F7FFFF0A BEQ ??maincsm_onmessage_1 \ 000000BC 24009FE5 LDR R0,??maincsm_onmessage_7+0x8 ;; end_socket \ 000000C0 710100EF SWI +369 \ 000000C4 F4FFFFEA B ??maincsm_onmessage_1 719 break; 720 case ENIP_SOCK_CLOSED: 721 //Закрыт вызовом closesocket 722 connect_state=0; \ ??maincsm_onmessage_5: \ 000000C8 0010A0E3 MOV R1,#+0 \ 000000CC 001080E5 STR R1,[R0, #+0] 723 //progressbar=21; 724 //Save(); 725 Parsing(); \ 000000D0 ........ BL Parsing 726 //progressbar=22; 727 sock=-1; \ 000000D4 0000E0E3 MVN R0,#+0 \ 000000D8 000085E5 STR R0,[R5, #+0] 728 break; 729 } 730 } 731 732 } 733 return(1); \ ??maincsm_onmessage_9: \ 000000DC EEFFFFEA B ??maincsm_onmessage_1 \ ??maincsm_onmessage_7: \ 000000E0 ........ DC32 send_req \ 000000E4 ........ DC32 get_answer \ 000000E8 ........ DC32 end_socket 734 } 735 736 const struct 737 { 738 CSM_DESC maincsm; 739 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted 740 }MAINCSM = \ MAINCSM: \ 00000000 ............ DC32 maincsm_onmessage, maincsm_oncreate, maincsm_onclose, 44, 1 \ ............ \ 2C0000000100 \ 0000 \ 00000014 ............ DC32 minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ ....CCCCAA55 \ 55AA33330000 \ 0000 \ 00000028 8B00 DC16 139 \ 0000002A 0000 DC8 0, 0 741 { 742 { 743 maincsm_onmessage, 744 maincsm_oncreate, 745 #ifdef NEWSGOLD 746 0, 747 0, 748 0, 749 0, 750 #endif 751 maincsm_onclose, 752 sizeof(MAIN_CSM), 753 1, 754 &minus11 755 }, 756 { 757 maincsm_name_body, 758 NAMECSM_MAGIC1, 759 NAMECSM_MAGIC2, 760 0x0, 761 139 762 } 763 }; 764 \ In segment CODE, align 4, keep-with-next 765 void UpdateCSMname(void) 766 { \ UpdateCSMname: \ 00000000 10402DE9 PUSH {R4,LR} 767 WSHDR *ws=AllocWS(256); \ 00000004 400FA0E3 MOV R0,#+256 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 768 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"Bash.org.ru"); \ 00000010 14109FE5 LDR R1,??UpdateCSMname_0 ;; `?<Constant "Bash.org.ru">` \ 00000014 14009FE5 LDR R0,??UpdateCSMname_0+0x4 ;; MAINCSM + 24 \ 00000018 240100EF SWI +292 769 FreeWS(ws); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 290100EF SWI +297 770 } \ 00000024 1040BDE8 POP {R4,LR} \ 00000028 1EFF2FE1 BX LR ;; return \ ??UpdateCSMname_0: \ 0000002C ........ DC32 `?<Constant "Bash.org.ru">` \ 00000030 ........ DC32 MAINCSM + 24 771 772 \ In segment CODE, align 4, keep-with-next 773 int main(char *exename, char *fname) 774 { \ main: \ 00000000 00402DE9 PUSH {LR} \ 00000004 30D04DE2 SUB SP,SP,#+48 775 InitConfig(); \ 00000008 ........ _BLF InitConfig,??InitConfig??rA 776 777 unsigned int err=0; \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 00108DE5 STR R1,[SP, #+0] 778 mkdir(hist_path, &err); \ 00000014 0D10A0E1 MOV R1,SP \ 00000018 ........ LDR R0,??DataTable43 ;; hist_path \ 0000001C 100000EF SWI +16 779 780 char dummy[sizeof(MAIN_CSM)]; 781 MAINCSM_ID = CreateCSM(&MAINCSM.maincsm,dummy,0); \ 00000020 0020A0E3 MOV R2,#+0 \ 00000024 04108DE2 ADD R1,SP,#+4 \ 00000028 1C009FE5 LDR R0,??main_0 ;; MAINCSM \ 0000002C 070100EF SWI +263 \ 00000030 18109FE5 LDR R1,??main_0+0x4 ;; MAINCSM_ID \ 00000034 000081E5 STR R0,[R1, #+0] 782 UpdateCSMname(); \ 00000038 ........ BL UpdateCSMname 783 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 \ 00000050 ........ DC32 MAINCSM_ID 784 } \ 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 \ ??DataTable29: \ 00000000 ........ DC32 pbuf \ In segment CODE, align 4, keep-with-next \ ??DataTable30: \ 00000000 ........ DC32 limit \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 items \ In segment CODE, align 4, keep-with-next \ ??DataTable36: \ 00000000 ........ DC32 loaded \ In segment CODE, align 4, keep-with-next \ ??DataTable37: \ 00000000 ........ DC32 y \ In segment CODE, align 4, keep-with-next \ ??DataTable38: \ 00000000 ........ DC32 mode \ In segment CODE, align 4, keep-with-next \ ??DataTable39: \ 00000000 ........ DC32 x \ In segment CODE, align 4, keep-with-next \ ??DataTable40: \ 00000000 ........ DC32 receive \ In segment CODE, align 4, keep-with-next \ ??DataTable41: \ 00000000 ........ DC32 sock \ In segment CODE, align 4, keep-with-next \ ??DataTable42: \ 00000000 ........ DC32 connect_state \ In segment CODE, align 4, keep-with-next \ ??DataTable43: \ 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 76 Parsing 36 Save 4208 SaveAll 12 UpdateCSMname 8 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 onDestroy 4 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 24 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 2556 onCreate 12 onClose 12 onFocus 24 onUnfocus 20 OnKey 672 onDestroy 16 method8 8 method9 8 gui_methods 44 Canvas 8 maincsm_oncreate 120 ElfKiller 32 maincsm_onclose 24 maincsm_onmessage 236 MAINCSM 44 UpdateCSMname 52 main 84 ??DataTable6 4 ??DataTable8 4 ??DataTable9 4 ??DataTable11 4 ??DataTable12 4 ??DataTable21 4 ??DataTable22 4 ??DataTable23 4 ??DataTable24 4 ??DataTable25 4 ??DataTable27 4 ??DataTable29 4 ??DataTable30 4 ??DataTable32 4 ??DataTable36 4 ??DataTable37 4 ??DataTable38 4 ??DataTable39 4 ??DataTable40 4 ??DataTable41 4 ??DataTable42 4 ??DataTable43 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 176 6 528 bytes in segment CODE 730 bytes in segment DATA_C 388 948 bytes in segment DATA_Z 12 bytes in segment INITTAB 6 364 bytes of CODE memory (+ 176 bytes shared) 730 bytes of CONST memory 388 948 bytes of DATA memory Errors: none Warnings: none