############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 09/Nov/2010 22:32:23 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = C:\Users\pasha\Desktop\NM\main.c # # Command line = C:\Users\pasha\Desktop\NM\main.c -D NEWSGOLD -D # # ELKA -lC C:\Users\pasha\Desktop\NM\Release_ELKA\List # # \ -o C:\Users\pasha\Desktop\NM\Release_ELKA\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 = C:\Users\pasha\Desktop\NM\Release_ELKA\List\main.lst # # Object file = C:\Users\pasha\Desktop\NM\Release_ELKA\Obj\main.r79 # # # # # ############################################################################## C:\Users\pasha\Desktop\NM\main.c 1 #include "..\inc\swilib.h" 2 #include "language.h" 3 #include "main.h" 4 #include "swilibPlus.h" 5 \ In segment DATA_I, align 4, align-sorted 6 int tc = A_Truncate; \ tc: \ 00000000 DS8 4 \ 00000004 REQUIRE `?` 7 \ In segment CODE, align 4, keep-with-next 8 void Log(char *txt) 9 { \ Log: \ 00000000 70402DE9 PUSH {R4-R6,LR} 10 unsigned int ul; 11 int f=fopen("4:\\NoteMan\\log",A_ReadWrite+A_Create+tc+A_BIN,P_READ+P_WRITE,&ul); \ 00000004 7C509FE5 LDR R5,??Log_0+0x4 ;; tc \ 00000008 04D04DE2 SUB SP,SP,#+4 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 000095E5 LDR R0,[R5, #+0] \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 811C81E3 ORR R1,R1,#0x8100 \ 0000001C 001081E0 ADD R1,R1,R0 \ 00000020 64009FE5 LDR R0,??Log_0+0x8 ;; `?` \ 00000024 0D30A0E1 MOV R3,SP \ 00000028 602FA0E3 MOV R2,#+384 \ 0000002C 0A0000EF SWI +10 \ 00000030 0060A0E1 MOV R6,R0 12 if (f!=-1) \ 00000034 010076E3 CMN R6,#+1 \ 00000038 0E00000A BEQ ??Log_1 13 { 14 fwrite(f,txt,strlen(txt),&ul); \ 0000003C 0400A0E1 MOV R0,R4 \ 00000040 1B0000EF SWI +27 \ 00000044 0D30A0E1 MOV R3,SP \ 00000048 0020A0E1 MOV R2,R0 \ 0000004C 0410A0E1 MOV R1,R4 \ 00000050 0600A0E1 MOV R0,R6 \ 00000054 0C0000EF SWI +12 15 fwrite(f," \n",2,&ul); \ 00000058 0D30A0E1 MOV R3,SP \ 0000005C 0220A0E3 MOV R2,#+2 \ 00000060 071F8FE2 ADR R1,??Log_0 ;; " \n" \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 0C0000EF SWI +12 16 fclose(f,&ul); \ 0000006C 0D10A0E1 MOV R1,SP \ 00000070 0600A0E1 MOV R0,R6 \ 00000074 0D0000EF SWI +13 17 } 18 tc = A_Append; \ ??Log_1: \ 00000078 0800A0E3 MOV R0,#+8 \ 0000007C 000085E5 STR R0,[R5, #+0] 19 } \ 00000080 7180BDE8 POP {R0,R4-R6,PC} ;; return \ ??Log_0: \ 00000084 200A0000 DC8 " \n",+0 \ 00000088 ........ DC32 tc \ 0000008C ........ DC32 `?` 20 \ In segment DATA_Z, align 4, align-sorted 21 CSM_DESC icsmd; \ icsmd: \ 00000000 DS8 40 22 int id_ed; 23 \ In segment DATA_Z, align 4, align-sorted 24 int (*old_icsm_onMessage)(CSM_RAM*,GBS_MSG*); \ old_icsm_onMessage: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 25 unsigned int MAINCSM_ID = 0; \ MAINCSM_ID: \ 00000000 DS8 4 26 unsigned int MAINGUI_ID = 0; \ In segment DATA_C, align 4, align-sorted 27 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 28 29 //-----------------------------------------// 30 \ In segment DATA_C, align 1, align-sorted 31 const char per_t[]="%t"; \ per_t: \ 00000000 257400 DC8 "%t" \ In segment DATA_C, align 4, align-sorted 32 const char per_s[]="%s"; \ per_s: \ 00000000 257300 DC8 "%s" 33 const char empty_str[]=""; \ empty_str: \ 00000003 00 DC8 "" \ 00000004 5C2A2E6D726B DC8 "\\*.mrk" \ 00 \ 0000000B 00 DC8 0 \ 0000000C 2573257300 DC8 "%s%s" \ 00000011 000000 DC8 0, 0, 0 \ 00000014 D1EEE7E4E0F2 DC8 "\321\356\347\344\340\362\374 \355\356\342\363\376 \347\340\357\350\361\374" \ FC20EDEEE2F3 \ FE20E7E0EFE8 \ F1FC00 \ 00000029 000000 DC8 0, 0, 0 34 35 //-----------------------------------------// 36 37 int TabIcons[13]; 38 char hdr_txt[64]; 39 int readonly=0; 40 int draw_id; \ In segment DATA_Z, align 4, align-sorted 41 int total_char=0; \ total_char: \ 00000000 DS8 4 42 char dir[128];//="0:\\mark"; 43 char ndir[128]; 44 45 extern unsigned long strtoul (const char *nptr,char **endptr,int base); 46 47 //------------------------------------------// 48 49 unsigned int char16to8(unsigned int c); 50 void win1251_2ws(WSHDR *ws, const char *s); 51 void ascii2ws(WSHDR *ws, const char *s); 52 void koi2ws(WSHDR *ws, const char *s); 53 54 unsigned short maincsm_name_body[140]; 55 56 EDITCONTROL ec; 57 58 volatile int prev_itemcount; 59 volatile MNU *mnutop; 60 volatile MNU_dir *mnu_dir; 61 char tabs_num=0; \ In segment DATA_Z, align 4, align-sorted 62 GBSTMR mytmr; \ mytmr: \ 00000000 DS8 16 \ In segment DATA_Z, align 4, align-sorted 63 int my_csm_id=0; \ my_csm_id: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 64 unsigned int err; \ err: \ 00000000 DS8 4 65 66 67 //------------------------------------------// 68 \ In segment CODE, align 4, keep-with-next 69 void mess(char *s) 70 { \ mess: \ 00000000 00402DE9 PUSH {LR} 71 ShowMSG(1,(int)s); \ 00000004 0010A0E1 MOV R1,R0 \ 00000008 0100A0E3 MOV R0,#+1 \ 0000000C 480100EF SWI +328 72 } \ 00000010 0080BDE8 POP {PC} ;; return 73 \ In segment CODE, align 4, keep-with-next 74 void messd(unsigned long i) 75 { \ messd: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 76 char *s=malloc(64); \ 00000008 4000A0E3 MOV R0,#+64 \ 0000000C 140000EF SWI +20 \ 00000010 0050A0E1 MOV R5,R0 77 sprintf(s,"%d",i); \ 00000014 0420A0E1 MOV R2,R4 \ 00000018 061F8FE2 ADR R1,??messd_0 ;; "%d" \ 0000001C 160000EF SWI +22 78 ShowMSG(1,(int)s); \ 00000020 0510A0E1 MOV R1,R5 \ 00000024 0100A0E3 MOV R0,#+1 \ 00000028 480100EF SWI +328 79 mfree(s); \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 150000EF SWI +21 80 } \ 00000034 3080BDE8 POP {R4,R5,PC} ;; return \ ??messd_0: \ 00000038 25640000 DC8 "%d",+0 81 \ In segment CODE, align 4, keep-with-next 82 int get_file_size(char* fname) 83 { \ get_file_size: \ 00000000 00402DE9 PUSH {LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 84 unsigned int err; 85 FSTATS fs; 86 if ((GetFileStats(fname,&fs,&err))==-1) return 0; \ 00000008 0D20A0E1 MOV R2,SP \ 0000000C 04108DE2 ADD R1,SP,#+4 \ 00000010 840000EF SWI +132 \ 00000014 010070E3 CMN R0,#+1 87 return (fs.size); \ 00000018 08009D15 LDRNE R0,[SP, #+8] \ 0000001C 2CD08DE2 ADD SP,SP,#+44 \ 00000020 0000A003 MOVEQ R0,#+0 \ 00000024 0080BDE8 POP {PC} ;; return 88 } 89 90 91 //------------------------------------------// 92 93 \ In segment CODE, align 4, keep-with-next 94 int strcmp_nocase(const char *s, const char *d) 95 { 96 int cs; 97 int ds; 98 do 99 { 100 cs=*s++; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 ........ LDRB R2,[R0], #+1 101 if (cs&0x40) cs&=0xDF; 102 ds=*d++; \ 00000004 ........ LDRB R3,[R1], #+1 \ 00000008 400012E3 TST R2,#0x40 \ 0000000C DF200212 ANDNE R2,R2,#0xDF 103 if (ds&0x40) ds&=0xDF; \ 00000010 400013E3 TST R3,#0x40 \ 00000014 DF300312 ANDNE R3,R3,#0xDF 104 cs-=ds; \ 00000018 032052E0 SUBS R2,R2,R3 105 if (cs) break; \ 0000001C 0100001A BNE ??strcmp_nocase_1 106 } 107 while(ds); \ 00000020 000053E3 CMP R3,#+0 \ 00000024 F5FFFF1A BNE ??strcmp_nocase_0 108 return(cs); \ ??strcmp_nocase_1: \ 00000028 0200A0E1 MOV R0,R2 \ 0000002C 1EFF2FE1 BX LR ;; return 109 } 110 111 112 //------------------------------------------// 113 \ In segment CODE, align 4, keep-with-next 114 void xmfree(char *fr) 115 { \ xmfree: \ 00000000 00402DE9 PUSH {LR} 116 if(fr) mfree(fr); \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0080BD08 POPEQ {PC} \ 0000000C 150000EF SWI +21 117 } \ 00000010 0080BDE8 POP {PC} ;; return 118 \ In segment CODE, align 4, keep-with-next 119 void FreeFold(void) 120 { \ FreeFold: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 121 LockSched(); 122 MNU_dir *md=(MNU_dir *)mnu_dir; \ 00000004 ........ LDR R4,??DataTable22 ;; edit_desc 123 mnu_dir=0; \ 00000008 0060A0E3 MOV R6,#+0 \ 0000000C 460100EF SWI +326 \ 00000010 AC5094E5 LDR R5,[R4, #+172] \ 00000014 AC6084E5 STR R6,[R4, #+172] 124 UnlockSched(); \ 00000018 470100EF SWI +327 \ 0000001C 000055E3 CMP R5,#+0 \ 00000020 0900000A BEQ ??FreeFold_0 125 while(md) 126 { 127 MNU_dir *md_prev; 128 md_prev=md; \ ??FreeFold_1: \ 00000024 0570A0E1 MOV R7,R5 129 md=md->next; 130 xmfree(md_prev->name); \ 00000028 040097E5 LDR R0,[R7, #+4] \ 0000002C 005095E5 LDR R5,[R5, #+0] \ 00000030 000050E3 CMP R0,#+0 \ 00000034 0000000A BEQ ??FreeFold_2 \ 00000038 150000EF SWI +21 131 mfree(md_prev); \ ??FreeFold_2: \ 0000003C 0700A0E1 MOV R0,R7 \ 00000040 150000EF SWI +21 132 } \ 00000044 000055E3 CMP R5,#+0 \ 00000048 F5FFFF1A BNE ??FreeFold_1 133 tabs_num=0; \ ??FreeFold_0: \ 0000004C CC60C4E5 STRB R6,[R4, #+204] 134 } \ 00000050 F080BDE8 POP {R4-R7,PC} ;; return 135 \ In segment CODE, align 4, keep-with-next 136 void AddFold(char *filename) 137 { \ AddFold: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0050A0E1 MOV R5,R0 138 MNU_dir *pr; 139 MNU_dir *fl; 140 MNU_dir *fn=malloc(sizeof(MNU_dir)); \ 00000008 0C00A0E3 MOV R0,#+12 \ 0000000C 140000EF SWI +20 \ 00000010 0040A0E1 MOV R4,R0 141 fn->name=malloc(strlen(filename)+1); \ 00000014 0500A0E1 MOV R0,R5 \ 00000018 1B0000EF SWI +27 \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 140000EF SWI +20 \ 00000024 040084E5 STR R0,[R4, #+4] 142 strcpy(fn->name,filename); \ 00000028 0510A0E1 MOV R1,R5 \ 0000002C 1A0000EF SWI +26 143 fn->item=tabs_num++; \ 00000030 ........ LDR R0,??DataTable22 ;; edit_desc \ 00000034 CC10D0E5 LDRB R1,[R0, #+204] \ 00000038 0120A0E1 MOV R2,R1 \ 0000003C 082084E5 STR R2,[R4, #+8] \ 00000040 011081E2 ADD R1,R1,#+1 \ 00000044 CC10C0E5 STRB R1,[R0, #+204] 144 fn->next=0; \ 00000048 0010A0E3 MOV R1,#+0 \ 0000004C 001084E5 STR R1,[R4, #+0] 145 fl=(MNU_dir *)mnu_dir; \ 00000050 AC1090E5 LDR R1,[R0, #+172] 146 if(fl) \ 00000054 000051E3 CMP R1,#+0 \ 00000058 0300000A BEQ ??AddFold_0 147 { 148 pr=(MNU_dir *)&mnu_dir; 149 pr=fl; 150 fl=fl->next; 151 fn->next=fl; \ 0000005C 000091E5 LDR R0,[R1, #+0] \ 00000060 000084E5 STR R0,[R4, #+0] 152 pr->next=fn; \ 00000064 004081E5 STR R4,[R1, #+0] \ 00000068 3080BDE8 POP {R4,R5,PC} 153 } 154 else 155 mnu_dir=fn; \ ??AddFold_0: \ 0000006C AC4080E5 STR R4,[R0, #+172] 156 } \ 00000070 3080BDE8 POP {R4,R5,PC} ;; return 157 \ In segment CODE, align 4, keep-with-next 158 MNU_dir *FindMNU_dirtByNS(int *i) 159 { 160 MNU_dir *fl=(MNU_dir*)&mnu_dir; \ FindMNU_dirtByNS: \ 00000000 34109FE5 LDR R1,??FindMNU_dirtByNS_0 ;; edit_desc + 172 161 int f=0; \ 00000004 0020A0E3 MOV R2,#+0 \ 00000008 000000EA B ??FindMNU_dirtByNS_1 162 while(fl) 163 { 164 //if(!(*i)) return(fl); 165 //(*i)--; 166 if((*i)==f++) return(fl); 167 fl=fl->next; \ ??FindMNU_dirtByNS_2: \ 0000000C 001091E5 LDR R1,[R1, #+0] \ ??FindMNU_dirtByNS_1: \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0600000A BEQ ??FindMNU_dirtByNS_3 \ 00000018 00C090E5 LDR R12,[R0, #+0] \ 0000001C 0230A0E1 MOV R3,R2 \ 00000020 012083E2 ADD R2,R3,#+1 \ 00000024 03005CE1 CMP R12,R3 \ 00000028 F7FFFF1A BNE ??FindMNU_dirtByNS_2 \ 0000002C 0100A0E1 MOV R0,R1 \ 00000030 1EFF2FE1 BX LR 168 } 169 return(fl); \ ??FindMNU_dirtByNS_3: \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 1EFF2FE1 BX LR ;; return \ ??FindMNU_dirtByNS_0: \ 0000003C ........ DC32 edit_desc + 172 170 } 171 \ In segment CODE, align 4, keep-with-next 172 MNU_dir *FindMNU_dirtByN(int n) 173 { \ FindMNU_dirtByN: \ 00000000 01402DE9 PUSH {R0,LR} 174 MNU_dir *fl; 175 fl=FindMNU_dirtByNS(&n); if (fl) return(fl); \ 00000004 0D00A0E1 MOV R0,SP \ 00000008 ........ BL FindMNU_dirtByNS \ 0000000C 0280BDE8 POP {R1,PC} ;; return 176 return fl; 177 } 178 \ In segment CODE, align 4, keep-with-next 179 char * GetFoldName(int is) 180 { \ GetFoldName: \ 00000000 10402DE9 PUSH {R4,LR} 181 int i=is+1; 182 MNU_dir *fl=FindMNU_dirtByN(i); \ 00000004 010080E2 ADD R0,R0,#+1 \ 00000008 ........ BL FindMNU_dirtByN \ 0000000C 0040A0E1 MOV R4,R0 183 if(strlen(fl->name))return fl->name; \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 1B0000EF SWI +27 \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 04009415 LDRNE R0,[R4, #+4] \ 00000020 1080BD18 POPNE {R4,PC} 184 return "Note0"; \ 00000024 00009FE5 LDR R0,??GetFoldName_0 ;; `?` \ 00000028 1080BDE8 POP {R4,PC} ;; return \ ??GetFoldName_0: \ 0000002C ........ DC32 `?` 185 } 186 \ In segment CODE, align 4, keep-with-next 187 int GetFListN2() 188 { 189 int i=0; 190 MNU *fl=(MNU*)&mnutop; \ GetFListN2: \ 00000000 ........ LDR R1,??DataTable17 ;; edit_desc + 168 \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 000000EA B ??GetFListN2_0 191 while((fl=fl->next)) i++; \ ??GetFListN2_1: \ 0000000C 010080E2 ADD R0,R0,#+1 \ ??GetFListN2_0: \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 FBFFFF1A BNE ??GetFListN2_1 192 return (i); \ 0000001C 1EFF2FE1 BX LR ;; return 193 } 194 \ In segment CODE, align 4, keep-with-next 195 void FreeMrk(void) 196 { \ FreeMrk: \ 00000000 70402DE9 PUSH {R4-R6,LR} 197 LockSched(); \ 00000004 460100EF SWI +326 198 MNU *fl=(MNU *)mnutop; \ 00000008 ........ LDR R0,??DataTable22 ;; edit_desc 199 mnutop=0; \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 A84090E5 LDR R4,[R0, #+168] \ 00000014 A81080E5 STR R1,[R0, #+168] 200 UnlockSched(); \ 00000018 470100EF SWI +327 \ 0000001C 000054E3 CMP R4,#+0 \ 00000020 7080BD08 POPEQ {R4-R6,PC} 201 while(fl) 202 { 203 MNU *fl_prev; 204 fl_prev=fl; \ ??FreeMrk_0: \ 00000024 0450A0E1 MOV R5,R4 205 fl=fl->next; \ 00000028 004094E5 LDR R4,[R4, #+0] 206 xmfree(fl_prev->filename); \ 0000002C 046085E2 ADD R6,R5,#+4 \ 00000030 000096E5 LDR R0,[R6, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 0000000A BEQ ??FreeMrk_1 \ 0000003C 150000EF SWI +21 207 xmfree(fl_prev->name); \ ??FreeMrk_1: \ 00000040 040096E5 LDR R0,[R6, #+4] \ 00000044 000050E3 CMP R0,#+0 \ 00000048 0000000A BEQ ??FreeMrk_2 \ 0000004C 150000EF SWI +21 208 xmfree(fl_prev->text); \ ??FreeMrk_2: \ 00000050 080096E5 LDR R0,[R6, #+8] \ 00000054 000050E3 CMP R0,#+0 \ 00000058 0000000A BEQ ??FreeMrk_3 \ 0000005C 150000EF SWI +21 209 mfree(fl_prev); \ ??FreeMrk_3: \ 00000060 0500A0E1 MOV R0,R5 \ 00000064 150000EF SWI +21 210 } \ 00000068 000054E3 CMP R4,#+0 \ 0000006C ECFFFF1A BNE ??FreeMrk_0 211 } \ 00000070 7080BDE8 POP {R4-R6,PC} ;; return 212 213 int num=0; 214 \ In segment CODE, align 4, keep-with-next 215 MNU *Add(char *filename,const char *text,int is_first) 216 { \ `Add`: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0050A0E1 MOV R5,R0 \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C 0270A0E1 MOV R7,R2 217 MNU *pr; 218 MNU *fl; 219 MNU *fn=malloc(sizeof(MNU)); \ 00000010 1C00A0E3 MOV R0,#+28 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 220 fn->filename=malloc(strlen(filename)+1); \ 0000001C 0500A0E1 MOV R0,R5 \ 00000020 1B0000EF SWI +27 \ 00000024 010080E2 ADD R0,R0,#+1 \ 00000028 140000EF SWI +20 \ 0000002C 040084E5 STR R0,[R4, #+4] 221 strcpy(fn->filename,filename); \ 00000030 0510A0E1 MOV R1,R5 \ 00000034 1A0000EF SWI +26 222 223 fn->text=malloc(strlen(text)+1); \ 00000038 0600A0E1 MOV R0,R6 \ 0000003C 1B0000EF SWI +27 \ 00000040 010080E2 ADD R0,R0,#+1 \ 00000044 140000EF SWI +20 \ 00000048 0C0084E5 STR R0,[R4, #+12] 224 strcpy(fn->text,text); \ 0000004C 0610A0E1 MOV R1,R6 \ 00000050 1A0000EF SWI +26 225 226 fn->name=malloc(32); \ 00000054 2000A0E3 MOV R0,#+32 \ 00000058 140000EF SWI +20 \ 0000005C 080084E5 STR R0,[R4, #+8] 227 strncpy(fn->name,fn->text,32); \ 00000060 0C1094E5 LDR R1,[R4, #+12] \ 00000064 2020A0E3 MOV R2,#+32 \ 00000068 160100EF SWI +278 228 229 230 fn->is_first=is_first; \ 0000006C 187084E5 STR R7,[R4, #+24] 231 fn->FNAME=strtoul(filename,0,16); \ 00000070 1020A0E3 MOV R2,#+16 \ 00000074 0010A0E3 MOV R1,#+0 \ 00000078 0500A0E1 MOV R0,R5 \ 0000007C ........ _BLF strtoul,??strtoul??rA \ 00000080 140084E5 STR R0,[R4, #+20] 232 fn->item=(!is_first)?num++:-1; \ 00000084 ........ LDR R0,??DataTable22 ;; edit_desc \ 00000088 000057E3 CMP R7,#+0 \ 0000008C 0300001A BNE ??Add_0 \ 00000090 B01090E5 LDR R1,[R0, #+176] \ 00000094 012081E2 ADD R2,R1,#+1 \ 00000098 B02080E5 STR R2,[R0, #+176] \ 0000009C 000000EA B ??Add_1 \ ??Add_0: \ 000000A0 0010E0E3 MVN R1,#+0 \ ??Add_1: \ 000000A4 101084E5 STR R1,[R4, #+16] 233 prev_itemcount++; \ 000000A8 A41090E5 LDR R1,[R0, #+164] \ 000000AC 011081E2 ADD R1,R1,#+1 \ 000000B0 A41080E5 STR R1,[R0, #+164] 234 235 fn->next=0; \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 001084E5 STR R1,[R4, #+0] 236 fl=(MNU *)mnutop; \ 000000BC A81090E5 LDR R1,[R0, #+168] 237 if(fl) \ 000000C0 000051E3 CMP R1,#+0 \ 000000C4 0400000A BEQ ??Add_2 238 { 239 pr=(MNU *)&mnutop; 240 pr=fl; 241 fl=fl->next; 242 fn->next=fl; \ 000000C8 000091E5 LDR R0,[R1, #+0] \ 000000CC 000084E5 STR R0,[R4, #+0] 243 pr->next=fn; \ 000000D0 004081E5 STR R4,[R1, #+0] \ 000000D4 0400A0E1 MOV R0,R4 \ 000000D8 F080BDE8 POP {R4-R7,PC} 244 } 245 else 246 mnutop=fn; \ ??Add_2: \ 000000DC A84080E5 STR R4,[R0, #+168] 247 return fn; \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 F080BDE8 POP {R4-R7,PC} ;; return 248 } 249 \ In segment CODE, align 4, keep-with-next 250 void ws2str(WSHDR *ws,char *s) 251 { \ ws2str: \ 00000000 10002DE9 PUSH {R4} 252 int i; 253 for(i=0;iwsbody[0];i++) *(s+i)=char16to8(ws->wsbody[i+1]); \ 00000004 003090E5 LDR R3,[R0, #+0] \ 00000008 0020A0E3 MOV R2,#+0 \ 0000000C B030D3E1 LDRH R3,[R3, #+0] \ 00000010 000053E3 CMP R3,#+0 \ 00000014 0500001A BNE ??ws2str_0 254 *(s+i)=0; \ ??ws2str_1: \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C 0100C2E7 STRB R0,[R2, +R1] 255 } \ 00000020 1000BDE8 POP {R4} \ 00000024 1EFF2FE1 BX LR ;; return \ ??ws2str_2: \ 00000028 0130C2E7 STRB R3,[R2, +R1] \ 0000002C 012082E2 ADD R2,R2,#+1 \ ??ws2str_0: \ 00000030 003090E5 LDR R3,[R0, #+0] \ 00000034 B040D3E1 LDRH R4,[R3, #+0] \ 00000038 040052E1 CMP R2,R4 \ 0000003C F5FFFFAA BGE ??ws2str_1 \ 00000040 ........ LDR R12,??DataTable5 ;; unicode2char \ 00000044 823083E0 ADD R3,R3,R2, LSL #+1 \ 00000048 B230D3E1 LDRH R3,[R3, #+2] \ 0000004C 800053E3 CMP R3,#+128 \ 00000050 0100002A BCS ??ws2str_3 \ 00000054 F3FFFFEA B ??ws2str_2 \ ??ws2str_4: \ 00000058 06C08CE2 ADD R12,R12,#+6 \ ??ws2str_3: \ 0000005C B040DCE1 LDRH R4,[R12, #+0] \ 00000060 000054E3 CMP R4,#+0 \ 00000064 0300000A BEQ ??ws2str_5 \ 00000068 040053E1 CMP R3,R4 \ 0000006C F9FFFF1A BNE ??ws2str_4 \ 00000070 0330DCE5 LDRB R3,[R12, #+3] \ 00000074 EBFFFFEA B ??ws2str_2 \ ??ws2str_5: \ 00000078 FF3003E2 AND R3,R3,#0xFF \ 0000007C 200053E3 CMP R3,#+32 \ 00000080 E8FFFF2A BCS ??ws2str_2 \ 00000084 2030A0E3 MOV R3,#+32 \ 00000088 E6FFFFEA B ??ws2str_2 256 257 static const char *LoadTEXT(char *path) 258 { 259 unsigned int err; 260 int f; 261 char *buf; 262 int sz=get_file_size(path); 263 if((f = fopen(path,A_ReadOnly+A_BIN,P_READ,&err ))!=-1) 264 { 265 buf=malloc(sz); 266 buf[fread(f,buf,sz,&err)]=0; 267 } 268 fclose(f,&err); 269 return buf; 270 } 271 272 unsigned int *errr; 273 int current_tab=0; 274 char *curdir[4]={"Note0","Note1","Note2","Note3"}; 275 \ In segment CODE, align 4, keep-with-next 276 void MarkFoider() 277 { \ MarkFoider: \ 00000000 70402DE9 PUSH {R4-R6,LR} 278 FreeFold(); 279 DIR_ENTRY de; 280 unsigned int err; 281 char *path=malloc(256); 282 sprintf(path,per_s,dir); \ 00000004 ........ LDR R5,??DataTable22 ;; edit_desc \ 00000008 D2DF4DE2 SUB SP,SP,#+840 \ 0000000C ........ BL FreeFold \ 00000010 400FA0E3 MOV R0,#+256 \ 00000014 140000EF SWI +20 \ 00000018 ........ LDR R1,??DataTable9 ;; per_s \ 0000001C 0040A0E1 MOV R4,R0 \ 00000020 D02085E2 ADD R2,R5,#+208 \ 00000024 160000EF SWI +22 283 char *ptr=path+strlen(path)+1; \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 1B0000EF SWI +27 \ 00000030 040080E0 ADD R0,R0,R4 \ 00000034 016080E2 ADD R6,R0,#+1 284 sprintf(path,"%s*",dir); \ 00000038 D02085E2 ADD R2,R5,#+208 \ 0000003C 1B1F8FE2 ADR R1,??MarkFoider_0 ;; "%s*" \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 160000EF SWI +22 285 if(FindFirstFile(&de,path,&err)) \ 00000048 0D20A0E1 MOV R2,SP \ 0000004C 0410A0E1 MOV R1,R4 \ 00000050 04008DE2 ADD R0,SP,#+4 \ 00000054 6B0000EF SWI +107 \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0C00000A BEQ ??MarkFoider_1 286 { 287 do{ 288 if (de.file_attr&FA_DIRECTORY) \ ??MarkFoider_2: \ 00000060 F003DDE1 LDRSH R0,[SP, #+48] \ 00000064 100010E3 TST R0,#0x10 \ 00000068 0400000A BEQ ??MarkFoider_3 289 { 290 strcpy(ptr,de.file_name); \ 0000006C B9108DE2 ADD R1,SP,#+185 \ 00000070 0600A0E1 MOV R0,R6 \ 00000074 1A0000EF SWI +26 291 AddFold(de.file_name); \ 00000078 B9008DE2 ADD R0,SP,#+185 \ 0000007C ........ BL AddFold 292 } 293 }while(FindNextFile(&de,&err)); \ ??MarkFoider_3: \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 04008DE2 ADD R0,SP,#+4 \ 00000088 6C0000EF SWI +108 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 F2FFFF1A BNE ??MarkFoider_2 294 } 295 FindClose(&de,&err); \ ??MarkFoider_1: \ 00000094 0D10A0E1 MOV R1,SP \ 00000098 04008DE2 ADD R0,SP,#+4 \ 0000009C 6D0000EF SWI +109 296 mfree(path); \ 000000A0 0400A0E1 MOV R0,R4 \ 000000A4 150000EF SWI +21 297 } \ 000000A8 D2DF8DE2 ADD SP,SP,#+840 \ 000000AC 7080BDE8 POP {R4-R6,PC} ;; return \ ??MarkFoider_0: \ 000000B0 25732A00 DC8 "%s*" 298 \ In segment CODE, align 4, keep-with-next 299 void LoadMark() 300 { \ LoadMark: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 301 FreeMrk(); 302 num=0; \ 00000004 ........ LDR R6,??DataTable22 ;; edit_desc 303 prev_itemcount=0; 304 Add((char*)empty_str,"Ñîçäàòü íîâóþ çàïèñü",1); \ 00000008 ........ LDR R7,??DataTable9 ;; per_s \ 0000000C D3DF4DE2 SUB SP,SP,#+844 \ 00000010 ........ BL FreeMrk \ 00000014 0040A0E3 MOV R4,#+0 \ 00000018 B04086E5 STR R4,[R6, #+176] \ 0000001C A44086E5 STR R4,[R6, #+164] \ 00000020 0120A0E3 MOV R2,#+1 \ 00000024 141087E2 ADD R1,R7,#+20 \ 00000028 030087E2 ADD R0,R7,#+3 \ 0000002C ........ BL `Add` 305 DIR_ENTRY de; 306 unsigned int err; 307 char *path=malloc(256); \ 00000030 400FA0E3 MOV R0,#+256 \ 00000034 140000EF SWI +20 \ 00000038 0050A0E1 MOV R5,R0 308 char *fname=GetFoldName(current_tab); \ 0000003C B80096E5 LDR R0,[R6, #+184] 309 sprintf(ndir,"%s%s",dir,fname);//curdir[current_tab] \ 00000040 6C8FA0E3 MOV R8,#+432 \ 00000044 ........ BL GetFoldName \ 00000048 0030A0E1 MOV R3,R0 \ 0000004C D02086E2 ADD R2,R6,#+208 \ 00000050 0C1087E2 ADD R1,R7,#+12 \ 00000054 060088E0 ADD R0,R8,R6 \ 00000058 160000EF SWI +22 310 //if(!(current_tab(ndir,errr))) 311 { 312 // mkdir(ndir,errr); 313 // SetFileAttrib(ndir,FA_HIDDEN,errr); 314 } 315 sprintf(path,per_s,ndir); \ 0000005C 062088E0 ADD R2,R8,R6 \ 00000060 0710A0E1 MOV R1,R7 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 160000EF SWI +22 316 char *ptr=path+strlen(path)+1; \ 0000006C 0500A0E1 MOV R0,R5 \ 00000070 1B0000EF SWI +27 \ 00000074 050080E0 ADD R0,R0,R5 \ 00000078 016080E2 ADD R6,R0,#+1 317 strcat(path,"\\*.mrk"); \ 0000007C 041087E2 ADD R1,R7,#+4 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 170000EF SWI +23 318 if(FindFirstFile(&de,path,&err)) \ 00000088 04208DE2 ADD R2,SP,#+4 \ 0000008C 0510A0E1 MOV R1,R5 \ 00000090 08008DE2 ADD R0,SP,#+8 \ 00000094 6B0000EF SWI +107 \ 00000098 000050E3 CMP R0,#+0 \ 0000009C 2200000A BEQ ??LoadMark_0 319 { 320 do{ 321 strcpy(ptr,de.file_name); \ ??LoadMark_1: \ 000000A0 BD108DE2 ADD R1,SP,#+189 \ 000000A4 0600A0E1 MOV R0,R6 \ 000000A8 1A0000EF SWI +26 322 Add(de.file_name,LoadTEXT(path),0); \ 000000AC 0500A0E1 MOV R0,R5 \ 000000B0 ........ BL get_file_size \ 000000B4 0080A0E1 MOV R8,R0 \ 000000B8 0D30A0E1 MOV R3,SP \ 000000BC 8020A0E3 MOV R2,#+128 \ 000000C0 801CA0E3 MOV R1,#+32768 \ 000000C4 0500A0E1 MOV R0,R5 \ 000000C8 0A0000EF SWI +10 \ 000000CC 0090A0E1 MOV R9,R0 \ 000000D0 010079E3 CMN R9,#+1 \ 000000D4 0800000A BEQ ??LoadMark_2 \ 000000D8 0800A0E1 MOV R0,R8 \ 000000DC 140000EF SWI +20 \ 000000E0 0070A0E1 MOV R7,R0 \ 000000E4 0D30A0E1 MOV R3,SP \ 000000E8 0820A0E1 MOV R2,R8 \ 000000EC 0710A0E1 MOV R1,R7 \ 000000F0 0900A0E1 MOV R0,R9 \ 000000F4 0B0000EF SWI +11 \ 000000F8 0740C0E7 STRB R4,[R0, +R7] \ ??LoadMark_2: \ 000000FC 0D10A0E1 MOV R1,SP \ 00000100 0900A0E1 MOV R0,R9 \ 00000104 0D0000EF SWI +13 \ 00000108 0020A0E3 MOV R2,#+0 \ 0000010C 0710A0E1 MOV R1,R7 \ 00000110 BD008DE2 ADD R0,SP,#+189 \ 00000114 ........ BL `Add` 323 }while(FindNextFile(&de,&err)); \ 00000118 04108DE2 ADD R1,SP,#+4 \ 0000011C 08008DE2 ADD R0,SP,#+8 \ 00000120 6C0000EF SWI +108 \ 00000124 000050E3 CMP R0,#+0 \ 00000128 DCFFFF1A BNE ??LoadMark_1 324 } 325 FindClose(&de,&err); \ ??LoadMark_0: \ 0000012C 04108DE2 ADD R1,SP,#+4 \ 00000130 08008DE2 ADD R0,SP,#+8 \ 00000134 6D0000EF SWI +109 326 mfree(path); \ 00000138 0500A0E1 MOV R0,R5 \ 0000013C 150000EF SWI +21 327 } \ 00000140 D3DF8DE2 ADD SP,SP,#+844 \ 00000144 F083BDE8 POP {R4-R9,PC} ;; return 328 329 //------------------- Ò9 ------------------// 330 331 //Êëþ÷è äëÿ ïîèñêà ïî T9 \ In segment DATA_C, align 4, align-sorted 332 static const char table_T9Key[256]= \ table_T9Key: \ 00000000 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000008 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000010 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000018 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000020 31303030312A DC8 31H, 30H, 30H, 30H, 31H, 2AH, 2AH, 30H \ 2A30 \ 00000028 2A2A2A303030 DC8 2AH, 2AH, 2AH, 30H, 30H, 30H, 30H, 2AH \ 302A \ 00000030 303132333435 DC8 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H \ 3637 \ 00000038 383930302A2A DC8 38H, 39H, 30H, 30H, 2AH, 2AH, 2AH, 30H \ 2A30 \ 00000040 303232323333 DC8 30H, 32H, 32H, 32H, 33H, 33H, 33H, 34H \ 3334 \ 00000048 343435353536 DC8 34H, 34H, 35H, 35H, 35H, 36H, 36H, 36H \ 3636 \ 00000050 373737373838 DC8 37H, 37H, 37H, 37H, 38H, 38H, 38H, 39H \ 3839 \ 00000058 393939312A31 DC8 39H, 39H, 39H, 31H, 2AH, 31H, 31H, 30H \ 3130 \ 00000060 313232323333 DC8 31H, 32H, 32H, 32H, 33H, 33H, 33H, 34H \ 3334 \ 00000068 343435353536 DC8 34H, 34H, 35H, 35H, 35H, 36H, 36H, 36H \ 3636 \ 00000070 373737373838 DC8 37H, 37H, 37H, 37H, 38H, 38H, 38H, 39H \ 3839 \ 00000078 393939313131 DC8 39H, 39H, 39H, 31H, 31H, 31H, 2AH, 31H \ 2A31 \ 00000080 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000088 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000090 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 00000098 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 000000A0 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 000000A8 333131313131 DC8 33H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 000000B0 313131313131 DC8 31H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 000000B8 333131313131 DC8 33H, 31H, 31H, 31H, 31H, 31H, 31H, 31H \ 3131 \ 000000C0 323232323333 DC8 32H, 32H, 32H, 32H, 33H, 33H, 33H, 33H \ 3333 \ 000000C8 343434343535 DC8 34H, 34H, 34H, 34H, 35H, 35H, 35H, 36H \ 3536 \ 000000D0 363637373737 DC8 36H, 36H, 37H, 37H, 37H, 37H, 38H, 38H \ 3838 \ 000000D8 383838393939 DC8 38H, 38H, 38H, 39H, 39H, 39H, 39H, 39H \ 3939 \ 000000E0 323232323333 DC8 32H, 32H, 32H, 32H, 33H, 33H, 33H, 33H \ 3333 \ 000000E8 343434343535 DC8 34H, 34H, 34H, 34H, 35H, 35H, 35H, 36H \ 3536 \ 000000F0 363637373737 DC8 36H, 36H, 37H, 37H, 37H, 37H, 38H, 38H \ 3838 \ 000000F8 383838393939 DC8 38H, 38H, 38H, 39H, 39H, 39H, 39H, 39H \ 3939 333 "11111111111111111111111111111111" 334 "10001**0***0000*012345678900***0" 335 "0222333444555666777788899991*110" 336 "122233344455566677778889999111*1" 337 "11111111111111111111111111111111" 338 "11111111311111111111111131111111" 339 "22223333444455566677778888899999" 340 "22223333444455566677778888899999"; 341 342 343 char T9Key[32]; 344 char _sk_r[16]; 345 char main_hdr_txt[64]; 346 char t9find=0; \ In segment CODE, align 4, keep-with-next 347 MNU *FindNOTEyNS(int *i,int si) 348 { 349 MNU *t=(MNU *)mnutop; \ FindNOTEyNS: \ 00000000 ........ LDR R3,??DataTable22 ;; edit_desc \ 00000004 F0002DE9 PUSH {R4-R7} \ 00000008 A82093E5 LDR R2,[R3, #+168] \ 0000000C 6C709FE5 LDR R7,??FindNOTEyNS_0 ;; table_T9Key \ 00000010 020000EA B ??FindNOTEyNS_1 350 char *s,*d; 351 int c; 352 while(t) 353 { 354 s=T9Key; 355 d=t->name; 356 while(c=*s++) 357 { 358 if(c!=table_T9Key[*d++]) goto L_NOT9; 359 } 360 if(t->is_first==si) 361 { 362 if(!(*i)) return(t); 363 (*i)--; \ ??FindNOTEyNS_2: \ 00000014 01404CE2 SUB R4,R12,#+1 \ 00000018 004080E5 STR R4,[R0, #+0] 364 } 365 L_NOT9: 366 t=t->next; \ ??FindNOTEyNS_3: \ 0000001C 002092E5 LDR R2,[R2, #+0] \ ??FindNOTEyNS_1: \ 00000020 000052E3 CMP R2,#+0 \ 00000024 1200000A BEQ ??FindNOTEyNS_4 \ 00000028 084092E5 LDR R4,[R2, #+8] \ 0000002C 54CF83E2 ADD R12,R3,#+336 \ 00000030 030000EA B ??FindNOTEyNS_5 \ ??FindNOTEyNS_6: \ 00000034 ........ LDRB R6,[R4], #+1 \ 00000038 0760D6E7 LDRB R6,[R6, +R7] \ 0000003C 060055E1 CMP R5,R6 \ 00000040 F5FFFF1A BNE ??FindNOTEyNS_3 \ ??FindNOTEyNS_5: \ 00000044 ........ LDRB R5,[R12], #+1 \ 00000048 000055E3 CMP R5,#+0 \ 0000004C F8FFFF1A BNE ??FindNOTEyNS_6 \ 00000050 184092E5 LDR R4,[R2, #+24] \ 00000054 010054E1 CMP R4,R1 \ 00000058 EFFFFF1A BNE ??FindNOTEyNS_3 \ 0000005C 00C090E5 LDR R12,[R0, #+0] \ 00000060 00005CE3 CMP R12,#+0 \ 00000064 EAFFFF1A BNE ??FindNOTEyNS_2 \ 00000068 F000BDE8 POP {R4-R7} \ 0000006C 0200A0E1 MOV R0,R2 \ 00000070 1EFF2FE1 BX LR 367 } 368 return(t); \ ??FindNOTEyNS_4: \ 00000074 F000BDE8 POP {R4-R7} \ 00000078 0000A0E3 MOV R0,#+0 \ 0000007C 1EFF2FE1 BX LR ;; return \ ??FindNOTEyNS_0: \ 00000080 ........ DC32 table_T9Key 369 } 370 \ In segment CODE, align 4, keep-with-next 371 MNU *FindFLISTtByN(int n) 372 { 373 MNU *fl; 374 if(!t9find) \ FindFLISTtByN: \ 00000000 ........ LDR R1,??DataTable12 ;; edit_desc + 205 \ 00000004 01402DE9 PUSH {R0,LR} \ 00000008 0010D1E5 LDRB R1,[R1, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0200001A BNE ??FindFLISTtByN_0 375 fl=FindNOTEyNS(&n,1); if ((!n)&&(fl)) return(fl); \ 00000014 0110A0E3 MOV R1,#+1 \ 00000018 0D00A0E1 MOV R0,SP \ 0000001C ........ BL FindNOTEyNS \ ??FindFLISTtByN_0: \ 00000020 00109DE5 LDR R1,[SP, #+0] \ 00000024 000051E3 CMP R1,#+0 \ 00000028 0100001A BNE ??FindFLISTtByN_1 \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 0280BD18 POPNE {R1,PC} 376 fl=FindNOTEyNS(&n,0); if ((!n)&&(fl)) return(fl); \ ??FindFLISTtByN_1: \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 0D00A0E1 MOV R0,SP \ 0000003C ........ BL FindNOTEyNS \ 00000040 0280BDE8 POP {R1,PC} 377 return fl; 378 } 379 \ In segment CODE, align 4, keep-with-next 380 void ClearT9Key(void) 381 { 382 zeromem(T9Key,sizeof(T9Key)); \ ClearT9Key: \ 00000000 0C009FE5 LDR R0,??ClearT9Key_0 ;; edit_desc + 336 \ 00000004 00402DE9 PUSH {LR} \ 00000008 2010A0E3 MOV R1,#+32 \ 0000000C 1D0100EF SWI +285 383 } \ 00000010 0080BDE8 POP {PC} ;; return \ ??ClearT9Key_0: \ 00000014 ........ DC32 edit_desc + 336 384 \ In segment CODE, align 4, keep-with-next 385 int CountNOTE(void) 386 { 387 int l=-1; 388 if(!t9find) \ CountNOTE: \ 00000000 ........ LDR R0,??DataTable12 ;; edit_desc + 205 \ 00000004 00402DE9 PUSH {LR} \ 00000008 04D04DE2 SUB SP,SP,#+4 \ 0000000C 0000D0E5 LDRB R0,[R0, #+0] \ 00000010 0010E0E3 MVN R1,#+0 \ 00000014 00108DE5 STR R1,[SP, #+0] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0200001A BNE ??CountNOTE_0 389 FindNOTEyNS(&l,1); \ 00000020 0110A0E3 MOV R1,#+1 \ 00000024 0D00A0E1 MOV R0,SP \ 00000028 ........ BL FindNOTEyNS 390 FindNOTEyNS(&l,0); \ ??CountNOTE_0: \ 0000002C 0010A0E3 MOV R1,#+0 \ 00000030 0D00A0E1 MOV R0,SP \ 00000034 ........ BL FindNOTEyNS 391 l=-1-l; 392 return l; \ 00000038 00109DE5 LDR R1,[SP, #+0] \ 0000003C 0000E0E3 MVN R0,#+0 \ 00000040 010040E0 SUB R0,R0,R1 \ 00000044 0280BDE8 POP {R1,PC} ;; return 393 } 394 395 396 //----------------------------------// 397 398 \ In segment CODE, align 4, keep-with-next 399 void utf82win(char*d,const char *s) 400 { \ utf82win: \ 00000000 0020D1E5 LDRB R2,[R1, #+0] \ 00000004 000052E3 CMP R2,#+0 \ 00000008 1300000A BEQ ??utf82win_0 401 for (; *s; s+=2) 402 { 403 unsigned char ub = *s, lb = *(s+1); \ ??utf82win_1: \ 0000000C 0020D1E5 LDRB R2,[R1, #+0] \ 00000010 0130D1E5 LDRB R3,[R1, #+1] 404 if (ub == 0xD0) \ 00000014 D00052E3 CMP R2,#+208 \ 00000018 0400001A BNE ??utf82win_2 405 { 406 *d = (lb != 0x81)?lb + 48:'¨'; d++; \ 0000001C 810053E3 CMP R3,#+129 \ 00000020 30208312 ADDNE R2,R3,#+48 \ 00000024 A820A003 MOVEQ R2,#+168 \ ??utf82win_3: \ 00000028 ........ STRB R2,[R0], #+1 \ 0000002C 070000EA B ??utf82win_4 407 } 408 else 409 if (ub == 0xD1) \ ??utf82win_2: \ 00000030 D10052E3 CMP R2,#+209 \ 00000034 0300001A BNE ??utf82win_5 410 { 411 *d =(lb != 0x91)? lb + 112:'È'; d++; \ 00000038 910053E3 CMP R3,#+145 \ 0000003C C820A003 MOVEQ R2,#+200 \ 00000040 70208312 ADDNE R2,R3,#+112 \ 00000044 F7FFFFEA B ??utf82win_3 412 } 413 else 414 { 415 *d = ub; \ ??utf82win_5: \ 00000048 ........ STRB R2,[R0], #+1 416 d++; 417 s--; \ 0000004C 011041E2 SUB R1,R1,#+1 418 } 419 } \ ??utf82win_4: \ 00000050 0220F1E5 LDRB R2,[R1, #+2]! \ 00000054 000052E3 CMP R2,#+0 \ 00000058 EBFFFF1A BNE ??utf82win_1 420 *d = 0; \ ??utf82win_0: \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 0010C0E5 STRB R1,[R0, #+0] 421 } \ 00000064 1EFF2FE1 BX LR ;; return 422 423 \ In segment CODE, align 4, keep-with-next 424 void fn_prepare( char* dst, char* src) 425 { \ fn_prepare: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 426 int len = strlen(dst); \ 0000000C 1B0000EF SWI +27 427 utf82win(dst, src); \ 00000010 0510A0E1 MOV R1,R5 \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 ........ BL utf82win 428 len = strlen(dst); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 429 int jj = 0; \ 00000024 0010A0E3 MOV R1,#+0 430 for(int ii = 0; ii < len; ii++) \ 00000028 0020A0E3 MOV R2,#+0 \ 0000002C 010050E3 CMP R0,#+1 \ 00000030 070000AA BGE ??fn_prepare_0 \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 0400C1E7 STRB R0,[R1, +R4] \ 0000003C 3080BDE8 POP {R4,R5,PC} 431 { 432 int ch = dst[ii]; \ ??fn_prepare_1: \ 00000040 0430D2E7 LDRB R3,[R2, +R4] 433 if (ch == 0x1F) continue; 434 dst[jj++] = ch; 435 } \ 00000044 012082E2 ADD R2,R2,#+1 \ 00000048 1F0053E3 CMP R3,#+31 \ 0000004C 0430C117 STRBNE R3,[R1, +R4] \ 00000050 01108112 ADDNE R1,R1,#+1 \ ??fn_prepare_0: \ 00000054 000052E1 CMP R2,R0 \ 00000058 F8FFFFBA BLT ??fn_prepare_1 436 dst[jj] = 0; \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 0400C1E7 STRB R0,[R1, +R4] 437 } \ 00000064 3080BDE8 POP {R4,R5,PC} ;; return 438 \ In segment CODE, align 4, keep-with-next 439 void UpdateHeader(void) 440 { \ UpdateHeader: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 441 if ((t9find=strlen(T9Key))) \ 00000004 ........ LDR R5,??DataTable22 ;; edit_desc \ 00000008 7C809FE5 LDR R8,??UpdateHeader_0+0x4 ;; `?` \ 0000000C 544FA0E3 MOV R4,#+336 \ 00000010 050084E0 ADD R0,R4,R5 \ 00000014 1B0000EF SWI +27 \ 00000018 CD00C5E5 STRB R0,[R5, #+205] \ 0000001C CD00D5E5 LDRB R0,[R5, #+205] \ 00000020 976FA0E3 MOV R6,#+604 \ 00000024 9B7FA0E3 MOV R7,#+620 \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0900000A BEQ ??UpdateHeader_1 442 { 443 strcpy(main_hdr_txt,"Ââîä T9:"); \ 00000030 081088E2 ADD R1,R8,#+8 \ 00000034 050087E0 ADD R0,R7,R5 \ 00000038 1A0000EF SWI +26 444 strcat(main_hdr_txt,T9Key); \ 0000003C 051084E0 ADD R1,R4,R5 \ 00000040 050087E0 ADD R0,R7,R5 \ 00000044 170000EF SWI +23 445 strcpy(_sk_r,"` 454 \ In segment CODE, align 4, keep-with-next 455 void AddT9Key(int chr) 456 { \ AddT9Key: \ 00000000 30402DE9 PUSH {R4,R5,LR} 457 int l=strlen(T9Key); \ 00000004 ........ LDR R5,??DataTable22 ;; edit_desc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 540F85E2 ADD R0,R5,#+336 \ 00000010 1B0000EF SWI +27 458 if(l<(sizeof(T9Key)-1)) \ 00000014 1F0050E3 CMP R0,#+31 459 { 460 T9Key[l]=chr; \ 00000018 05008030 ADDCC R0,R0,R5 \ 0000001C 5041C035 STRBCC R4,[R0, #+336] 461 } 462 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 463 \ In segment CODE, align 4, keep-with-next 464 void BackSpaceT9(void) 465 { \ BackSpaceT9: \ 00000000 10402DE9 PUSH {R4,LR} 466 int l=strlen(T9Key); \ 00000004 ........ LDR R4,??DataTable22 ;; edit_desc \ 00000008 540F84E2 ADD R0,R4,#+336 \ 0000000C 1B0000EF SWI +27 467 if(l)T9Key[--l]=0; \ 00000010 000050E3 CMP R0,#+0 \ 00000014 04008010 ADDNE R0,R0,R4 \ 00000018 0010A013 MOVNE R1,#+0 \ 0000001C 4F11C015 STRBNE R1,[R0, #+335] 468 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 469 \ In segment CODE, align 4, keep-with-next 470 static void RecountMenuNOTE(void *data) 471 { \ RecountMenuNOTE: \ 00000000 30402DE9 PUSH {R4,R5,LR} 472 UpdateHeader(); 473 474 int i=CountNOTE(); 475 if(i!=prev_itemcount) \ 00000004 ........ LDR R5,??DataTable22 ;; edit_desc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C ........ BL UpdateHeader \ 00000010 ........ BL CountNOTE \ 00000014 A41095E5 LDR R1,[R5, #+164] \ 00000018 010050E1 CMP R0,R1 \ 0000001C 1200000A BEQ ??RecountMenuNOTE_0 476 { 477 prev_itemcount=i; \ 00000020 A40085E5 STR R0,[R5, #+164] 478 current_tab=GetCursorTab(data); \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 C00200EF SWI +704 \ 0000002C B80085E5 STR R0,[R5, #+184] 479 480 void *m_gui=GetGuiByTab(data, current_tab); \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 C10200EF SWI +705 \ 0000003C 0040B0E1 MOVS R4,R0 481 if (m_gui) \ 00000040 0900000A BEQ ??RecountMenuNOTE_0 482 { 483 int cur=GetCurMenuItem(m_gui); \ 00000044 8F0100EF SWI +399 484 if(cur>=prev_itemcount) SetCursorToMenuItem(m_gui, 0); \ 00000048 A41095E5 LDR R1,[R5, #+164] \ 0000004C 010050E1 CMP R0,R1 \ 00000050 020000BA BLT ??RecountMenuNOTE_1 \ 00000054 0010A0E3 MOV R1,#+0 \ 00000058 0400A0E1 MOV R0,R4 \ 0000005C C40100EF SWI +452 485 Menu_SetItemCountDyn(m_gui, prev_itemcount); \ ??RecountMenuNOTE_1: \ 00000060 A41095E5 LDR R1,[R5, #+164] \ 00000064 0400A0E1 MOV R0,R4 \ 00000068 E60100EF SWI +486 486 } 487 } 488 if (IsGuiOnTop(MAINGUI_ID)) RefreshGUI(); \ ??RecountMenuNOTE_0: \ 0000006C 640095E5 LDR R0,[R5, #+100] \ 00000070 350100EF SWI +309 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 3080BD08 POPEQ {R4,R5,PC} \ 0000007C 960100EF SWI +406 489 } \ 00000080 3080BDE8 POP {R4,R5,PC} ;; return 490 491 //------------------------Ñîçäàåì ñïèñîê--------------------------// 492 493 void bm_menu_iconhnd(void *data, int curitem, void *unk); 494 int MLHico; //èêîíêà çàãîëîâêà 495 HEADER_DESC bm_menuhdr={0,0,0,0,&MLHico,(int)main_hdr_txt,LGP_NULL}; \ In segment DATA_C, align 4, align-sorted 496 const int menusoftkeys[]={0,1,2}; \ menusoftkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 497 \ In segment DATA_C, align 4, align-sorted 498 const SOFTKEY_DESC menu_sk2[]= \ menu_sk2: \ 00000000 04000000 DC16 4, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 _sk_r \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 499 { 500 {0x0004,0x0000,(int)"Óäàëèòü"}, 501 {0x0001,0x0000,(int)_sk_r}, 502 {0x003D,0x0000,(int)LGP_DOIT_PIC} 503 }; 504 \ In segment DATA_C, align 4, align-sorted 505 const SOFTKEYSTAB menu_skt2= \ menu_skt2: \ 00000000 ........0000 DC32 menu_sk2, 0 \ 0000 506 { 507 menu_sk2,0 508 }; 509 510 int item=0; 511 \ In segment CODE, align 4, keep-with-next 512 void bm_menu_ghook(void *data, int cmd) 513 { \ bm_menu_ghook: \ 00000000 00402DE9 PUSH {LR} 514 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 515 { 516 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 517 } 518 }; \ 00000010 0080BDE8 POP {PC} ;; return 519 \ In segment CODE, align 4, keep-with-next 520 MNU *FindByN(int n) 521 { \ FindByN: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 522 MNU *fl; 523 int i=0; 524 int j=0; 525 int k=GetFListN2(); \ 00000008 ........ BL GetFListN2 526 fl=(MNU *)mnutop; \ 0000000C ........ LDR R1,??DataTable17 ;; edit_desc + 168 527 j=k-n-1; \ 00000010 040040E0 SUB R0,R0,R4 \ 00000014 001091E5 LDR R1,[R1, #+0] \ 00000018 010040E2 SUB R0,R0,#+1 528 for(i=0; inext; \ 0000001C 0020A0E3 MOV R2,#+0 \ 00000020 010000EA B ??FindByN_0 \ ??FindByN_1: \ 00000024 001091E5 LDR R1,[R1, #+0] \ 00000028 012082E2 ADD R2,R2,#+1 \ ??FindByN_0: \ 0000002C 000052E1 CMP R2,R0 \ 00000030 010000AA BGE ??FindByN_2 \ 00000034 000051E3 CMP R1,#+0 \ 00000038 F9FFFF1A BNE ??FindByN_1 529 return fl; \ ??FindByN_2: \ 0000003C 0100A0E1 MOV R0,R1 \ 00000040 1080BDE8 POP {R4,PC} ;; return 530 } 531 \ In segment CODE, align 4, keep-with-next 532 void DelItem(MNU *fl) 533 { \ DelItem: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0040A0E1 MOV R4,R0 534 if(!fl->is_first) \ 0000000C 180094E5 LDR R0,[R4, #+24] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 3180BD18 POPNE {R0,R4,R5,PC} 535 { 536 char *s=malloc(256); \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 140000EF SWI +20 537 unsigned int err; 538 sprintf(s,"%s\\%s",ndir,fl->filename); \ 00000020 043094E5 LDR R3,[R4, #+4] \ 00000024 28209FE5 LDR R2,??DelItem_0 ;; edit_desc + 432 \ 00000028 ........ LDR R1,??DataTable24 ;; `?` \ 0000002C 0050A0E1 MOV R5,R0 \ 00000030 160000EF SWI +22 539 fl->is_first=2; \ 00000034 0200A0E3 MOV R0,#+2 \ 00000038 180084E5 STR R0,[R4, #+24] 540 unlink(s,&err); \ 0000003C 0D10A0E1 MOV R1,SP \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 6B0100EF SWI +363 541 //mess("File deleted"); 542 mfree(s); \ 00000048 0500A0E1 MOV R0,R5 \ 0000004C 150000EF SWI +21 543 } 544 } \ 00000050 3180BDE8 POP {R0,R4,R5,PC} ;; return \ ??DelItem_0: \ 00000054 ........ DC32 edit_desc + 432 545 \ In segment DATA_Z, align 4, align-sorted 546 MNU *changefile; \ changefile: \ 00000000 DS8 4 \ In segment CODE, align 4, keep-with-next 547 int bm_menu_onkey2(void *data, GUI_MSG *msg) 548 { \ bm_menu_onkey2: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 549 int i=GetCurMenuItem(data); 550 int k=msg->gbsmsg->submess; 551 MNU *fl=FindFLISTtByN(i); 552 if(msg->keys==0x3D) \ 00000008 ........ LDR R7,??DataTable22 ;; edit_desc \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 8F0100EF SWI +399 \ 00000014 041095E5 LDR R1,[R5, #+4] \ 00000018 546FA0E3 MOV R6,#+336 \ 0000001C 088091E5 LDR R8,[R1, #+8] \ 00000020 ........ BL FindFLISTtByN \ 00000024 0090A0E1 MOV R9,R0 \ 00000028 F200D5E1 LDRSH R0,[R5, #+2] \ 0000002C 00A0A0E3 MOV R10,#+0 \ 00000030 3D0050E3 CMP R0,#+61 \ 00000034 1000001A BNE ??bm_menu_onkey2_0 553 { 554 if(fl) \ 00000038 000059E3 CMP R9,#+0 \ 0000003C 3B00000A BEQ ??bm_menu_onkey2_1 555 { 556 if(strlen(T9Key)) \ 00000040 070086E0 ADD R0,R6,R7 \ 00000044 1B0000EF SWI +27 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0400000A BEQ ??bm_menu_onkey2_2 557 { 558 ClearT9Key(); \ 00000050 2010A0E3 MOV R1,#+32 \ 00000054 070086E0 ADD R0,R6,R7 \ 00000058 1D0100EF SWI +285 559 RecountMenuNOTE(data); \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 ........ BL RecountMenuNOTE 560 } 561 readonly=0; \ ??bm_menu_onkey2_2: \ 00000064 9CA087E5 STR R10,[R7, #+156] 562 DrawText(NULL,fl); \ 00000068 0910A0E1 MOV R1,R9 \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 ........ BL DrawText 563 } 564 return (-1); \ 00000074 0A00E0E1 MVN R0,R10 \ 00000078 F087BDE8 POP {R4-R10,PC} 565 } 566 567 if (msg->gbsmsg->msg==KEY_DOWN) \ ??bm_menu_onkey2_0: \ 0000007C 040095E5 LDR R0,[R5, #+4] \ 00000080 431086E2 ADD R1,R6,#+67 \ 00000084 040090E5 LDR R0,[R0, #+4] \ 00000088 010050E1 CMP R0,R1 \ 0000008C 2B00001A BNE ??bm_menu_onkey2_3 568 { 569 if(k==LEFT_BUTTON||k==RIGHT_BUTTON) \ 00000090 3D0058E3 CMP R8,#+61 \ 00000094 3E005813 CMPNE R8,#+62 \ 00000098 1100001A BNE ??bm_menu_onkey2_4 570 { 571 if(k==RIGHT_BUTTON) \ 0000009C B80097E5 LDR R0,[R7, #+184] \ 000000A0 3E0058E3 CMP R8,#+62 \ 000000A4 0600001A BNE ??bm_menu_onkey2_5 572 {if((++current_tab)>=tabs_num)current_tab=0;} \ 000000A8 CC10D7E5 LDRB R1,[R7, #+204] \ 000000AC 010080E2 ADD R0,R0,#+1 \ 000000B0 B80087E5 STR R0,[R7, #+184] \ 000000B4 010050E1 CMP R0,R1 \ 000000B8 060000BA BLT ??bm_menu_onkey2_6 \ 000000BC B8A087E5 STR R10,[R7, #+184] \ 000000C0 040000EA B ??bm_menu_onkey2_6 573 else 574 {if((--current_tab)<=-1)current_tab=tabs_num-1;} \ ??bm_menu_onkey2_5: \ 000000C4 010050E2 SUBS R0,R0,#+1 \ 000000C8 B80087E5 STR R0,[R7, #+184] \ 000000CC CC00D745 LDRBMI R0,[R7, #+204] \ 000000D0 01004042 SUBMI R0,R0,#+1 \ 000000D4 B8008745 STRMI R0,[R7, #+184] 575 LoadMark(); \ ??bm_menu_onkey2_6: \ 000000D8 ........ BL LoadMark 576 RecountMenuNOTE(data); \ 000000DC 0400A0E1 MOV R0,R4 \ 000000E0 ........ BL RecountMenuNOTE 577 } 578 if(k=='*') RecountMenuNOTE(data);; \ ??bm_menu_onkey2_4: \ 000000E4 2A0058E3 CMP R8,#+42 \ 000000E8 0900001A BNE ??bm_menu_onkey2_7 \ 000000EC 0400A0E1 MOV R0,R4 \ 000000F0 ........ BL RecountMenuNOTE 579 if(k=='#'||k==LEFT_SOFT) 580 { 581 DelItem(fl); 582 RecountMenuNOTE(data); 583 return(-1); 584 } 585 586 int key=msg->gbsmsg->submess; \ ??bm_menu_onkey2_8: \ 000000F4 040095E5 LDR R0,[R5, #+4] \ 000000F8 080090E5 LDR R0,[R0, #+8] 587 if((key>='0')&&(key<='9')) \ 000000FC 300050E3 CMP R0,#+48 \ 00000100 0C0000BA BLT ??bm_menu_onkey2_9 \ 00000104 3A0050E3 CMP R0,#+58 \ 00000108 0C0000AA BGE ??bm_menu_onkey2_3 588 { 589 AddT9Key(key); \ 0000010C ........ BL AddT9Key 590 RecountMenuNOTE(data); \ 00000110 040000EA B ??bm_menu_onkey2_10 591 return(-1); 592 } \ ??bm_menu_onkey2_7: \ 00000114 230058E3 CMP R8,#+35 \ 00000118 01005813 CMPNE R8,#+1 \ 0000011C F4FFFF1A BNE ??bm_menu_onkey2_8 \ 00000120 0900A0E1 MOV R0,R9 \ 00000124 ........ BL DelItem \ ??bm_menu_onkey2_10: \ 00000128 0400A0E1 MOV R0,R4 \ 0000012C ........ BL RecountMenuNOTE \ ??bm_menu_onkey2_1: \ 00000130 0A00E0E1 MVN R0,R10 \ 00000134 F087BDE8 POP {R4-R10,PC} 593 594 if(key==GREEN_BUTTON) \ ??bm_menu_onkey2_9: \ 00000138 0B0050E3 CMP R0,#+11 \ 0000013C F9FFFF0A BEQ ??bm_menu_onkey2_10 595 { 596 RecountMenuNOTE(data); 597 return(-1); 598 } 599 } 600 601 if (msg->keys==1 || msg->keys==RED_BUTTON) \ ??bm_menu_onkey2_3: \ 00000140 F200D5E1 LDRSH R0,[R5, #+2] \ 00000144 010050E3 CMP R0,#+1 \ 00000148 0C005013 CMPNE R0,#+12 \ 0000014C 0500001A BNE ??bm_menu_onkey2_11 602 { 603 if (strlen(T9Key)) \ 00000150 070086E0 ADD R0,R6,R7 \ 00000154 1B0000EF SWI +27 \ 00000158 000050E3 CMP R0,#+0 \ 0000015C F087BD08 POPEQ {R4-R10,PC} 604 { 605 BackSpaceT9(); \ 00000160 ........ BL BackSpaceT9 606 RecountMenuNOTE(data); \ 00000164 EFFFFFEA B ??bm_menu_onkey2_10 607 return(-1); 608 } 609 } 610 return 0; \ ??bm_menu_onkey2_11: \ 00000168 0000A0E3 MOV R0,#+0 \ 0000016C F087BDE8 POP {R4-R10,PC} ;; return 611 } 612 613 \ In segment CODE, align 4, keep-with-next 614 void menu_iconhndl(void *data, int curitem, void *unk) 615 { \ menu_iconhndl: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 616 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 617 MNU *fl=FindFLISTtByN(curitem); \ 00000014 0500A0E1 MOV R0,R5 \ 00000018 ........ BL FindFLISTtByN \ 0000001C 0070B0E1 MOVS R7,R0 618 WSHDR *ws; 619 if(fl) \ 00000020 0600000A BEQ ??menu_iconhndl_0 620 { 621 ws=AllocMenuWS(data,strlen(fl->name)+1); \ 00000024 080097E5 LDR R0,[R7, #+8] \ 00000028 1B0000EF SWI +27 \ 0000002C 011080E2 ADD R1,R0,#+1 \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 980100EF SWI +408 622 ascii2ws(ws,fl->name); \ 00000038 081097E5 LDR R1,[R7, #+8] \ 0000003C 030000EA B ??menu_iconhndl_1 623 } 624 else 625 { 626 ws=AllocMenuWS(data,32); \ ??menu_iconhndl_0: \ 00000040 2010A0E3 MOV R1,#+32 \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 980100EF SWI +408 627 ascii2ws(ws,"îøèáêà"); \ 0000004C 1C109FE5 LDR R1,??menu_iconhndl_2 ;; `?` \ ??menu_iconhndl_1: \ 00000050 0080A0E1 MOV R8,R0 \ 00000054 ........ BL ascii2ws 628 } 629 SetMenuItemText(data,item,ws,curitem); \ 00000058 0530A0E1 MOV R3,R5 \ 0000005C 0820A0E1 MOV R2,R8 \ 00000060 0610A0E1 MOV R1,R6 \ 00000064 0400A0E1 MOV R0,R4 \ 00000068 9A0100EF SWI +410 630 } \ 0000006C F081BDE8 POP {R4-R8,PC} ;; return \ ??menu_iconhndl_2: \ 00000070 ........ DC32 `?` 631 632 633 const MENU_DESC menu= 634 { 635 8,bm_menu_onkey2,bm_menu_ghook,NULL, 636 menusoftkeys, 637 &menu_skt2, 638 0x11, 639 menu_iconhndl, 640 NULL, //Items 641 NULL, //Procs 642 0 //n 643 }; 644 \ In segment CODE, align 4, keep-with-next 645 int create() 646 { \ create: \ 00000000 10402DE9 PUSH {R4,LR} 647 prev_itemcount=CountNOTE(); \ 00000004 ........ LDR R4,??DataTable22 ;; edit_desc \ 00000008 ........ BL CountNOTE \ 0000000C A40084E5 STR R0,[R4, #+164] 648 UpdateHeader(); \ 00000010 ........ BL UpdateHeader 649 patch_header(&bm_menuhdr); \ 00000014 0000A0E3 MOV R0,#+0 \ 00000018 B803C4E1 STRH R0,[R4, #+56] \ 0000001C 1800A0E3 MOV R0,#+24 \ 00000020 BA03C4E1 STRH R0,[R4, #+58] \ 00000024 888100EF SWI +33160 \ 00000028 010040E2 SUB R0,R0,#+1 \ 0000002C BC03C4E1 STRH R0,[R4, #+60] \ 00000030 8A8100EF SWI +33162 650 return(id_ed=CreateMenu(0,0,&menu,&bm_menuhdr,0,prev_itemcount,0,0)); \ 00000034 ........ LDR R2,??DataTable27 ;; menu \ 00000038 180080E2 ADD R0,R0,#+24 \ 0000003C BE03C4E1 STRH R0,[R4, #+62] \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 01002DE9 PUSH {R0} \ 00000048 01002DE9 PUSH {R0} \ 0000004C A40094E5 LDR R0,[R4, #+164] \ 00000050 383084E2 ADD R3,R4,#+56 \ 00000054 01002DE9 PUSH {R0} \ 00000058 0010A0E3 MOV R1,#+0 \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 01002DE9 PUSH {R0} \ 00000064 520100EF SWI +338 \ 00000068 600084E5 STR R0,[R4, #+96] \ 0000006C 10D08DE2 ADD SP,SP,#+16 \ 00000070 1080BDE8 POP {R4,PC} ;; return 651 } 652 653 //============================================================================== 654 //Òàáû////////////////////////////////////////////////////////////////////////// 655 //============================================================================== 656 \ In segment CODE, align 4, keep-with-next 657 int TabGuiOnKey(void *gui, GUI_MSG *msg) 658 { 659 return 0; \ TabGuiOnKey: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 660 } 661 \ In segment CODE, align 4, keep-with-next 662 void TabGuiGHook(void *gui, int cmd) 663 { \ TabGuiGHook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0040A0E1 MOV R4,R0 664 665 if (cmd==TI_CMD_CREATE) \ 00000008 020051E3 CMP R1,#+2 666 { 667 668 } 669 670 else if (cmd==TI_CMD_DESTROY) \ 0000000C 03005113 CMPNE R1,#+3 \ 00000010 7080BD08 POPEQ {R4-R6,PC} 671 { 672 } 673 674 else if(cmd==0x18) \ 00000014 180051E3 CMP R1,#+24 \ 00000018 7080BD18 POPNE {R4-R6,PC} 675 { 676 current_tab=GetCursorTab(gui); \ 0000001C ........ LDR R5,??DataTable22 ;; edit_desc \ 00000020 C00200EF SWI +704 \ 00000024 B80085E5 STR R0,[R5, #+184] 677 void *m_gui=GetGuiByTab(gui, current_tab); \ 00000028 0010A0E1 MOV R1,R0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 C10200EF SWI +705 \ 00000034 0060B0E1 MOVS R6,R0 678 if (m_gui) \ 00000038 0900000A BEQ ??TabGuiGHook_0 679 { 680 int cur=GetCurMenuItem(m_gui); \ 0000003C 8F0100EF SWI +399 681 if(cur>=prev_itemcount) SetCursorToMenuItem(m_gui, 0); \ 00000040 A41095E5 LDR R1,[R5, #+164] \ 00000044 010050E1 CMP R0,R1 \ 00000048 020000BA BLT ??TabGuiGHook_1 \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 0600A0E1 MOV R0,R6 \ 00000054 C40100EF SWI +452 682 Menu_SetItemCountDyn(m_gui, prev_itemcount); \ ??TabGuiGHook_1: \ 00000058 A41095E5 LDR R1,[R5, #+164] \ 0000005C 0600A0E1 MOV R0,R6 \ 00000060 E60100EF SWI +486 683 } 684 void **methods=((GUI *)gui)->methods; 685 ((void (*)(void *))methods[0])(gui); \ ??TabGuiGHook_0: \ 00000064 041094E5 LDR R1,[R4, #+4] \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C 001091E5 LDR R1,[R1, #+0] \ 00000070 31FF2FE1 BLX R1 686 687 } 688 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return \ In segment DATA_C, align 4, align-sorted \ menu: \ 00000000 08000000.... DC32 8, bm_menu_onkey2, bm_menu_ghook, 0H, menusoftkeys, menu_skt2, 17 \ ............ \ 00000000.... \ ............ \ 11000000 \ 0000001C ........0000 DC32 menu_iconhndl, 0H, 0H, 0 \ 000000000000 \ 00000000 689 690 const TABGUI_DESC TabGui= \ TabGui: \ 0000002C 08000000.... DC32 8, TabGuiOnKey, TabGuiGHook, 0H, 0H, 0H \ ............ \ 000000000000 \ 000000000000 691 { 692 8, 693 TabGuiOnKey, 694 TabGuiGHook, 695 NULL, 696 NULL, 697 NULL 698 }; 699 700 //============================================================== 701 702 //--------------------------------Ðåäàêòîð--------------------------------// 703 704 HEADER_DESC disk_prop_hdr={0,0,0,0,0,(int)hdr_txt,LGP_NULL}; 705 706 char *cmp; 707 \ In segment CODE, align 4, keep-with-next 708 MNU *FindFileByName(char *name) 709 { \ FindFileByName: \ 00000000 70402DE9 PUSH {R4-R6,LR} 710 MNU *fl; 711 int km=GetFListN2(); \ 00000004 ........ BL GetFListN2 \ 00000008 0050A0E1 MOV R5,R0 712 for(int k=0;kfilename)==0) break; \ 0000002C 18009FE5 LDR R0,??FindFileByName_3 ;; edit_desc + 196 \ 00000030 041094E5 LDR R1,[R4, #+4] \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 190000EF SWI +25 \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 F3FFFF1A BNE ??FindFileByName_1 716 } 717 return fl; \ ??FindFileByName_2: \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 7080BDE8 POP {R4-R6,PC} ;; return \ ??FindFileByName_3: \ 0000004C ........ DC32 edit_desc + 196 718 } 719 720 \ In segment CODE, align 4, keep-with-next 721 int edit_onkey(GUI *data, GUI_MSG *msg) 722 { \ edit_onkey: \ 00000000 F24F2DE9 PUSH {R1,R4-R11,LR} 723 int k=msg->gbsmsg->submess; 724 MNU *fl=FindFileByName(cmp);//Èùåì çàïèñü ïî èìåíè ôàéëà; \ 00000004 ........ LDR R4,??DataTable30 ;; edit_desc \ 00000008 3CD04DE2 SUB SP,SP,#+60 \ 0000000C 041091E5 LDR R1,[R1, #+4] \ 00000010 0070A0E1 MOV R7,R0 \ 00000014 081091E5 LDR R1,[R1, #+8] \ 00000018 C40094E5 LDR R0,[R4, #+196] \ 0000001C 08108DE5 STR R1,[SP, #+8] \ 00000020 ........ BL FindFileByName \ 00000024 0050A0E1 MOV R5,R0 725 MNU *nw; 726 unsigned long num=0; 727 unsigned int err; 728 char *ss; 729 WSHDR *ws; 730 int last_name=0; \ 00000028 0010A0E3 MOV R1,#+0 \ 0000002C 04108DE5 STR R1,[SP, #+4] 731 if(msg->keys==0xFFF && readonly==1)//Åñëè íàæàëè "Ñîõðàíèòü" è ó íàñ ðåæèì ðåäàêòèðîâàíèÿ \ 00000030 3C009DE5 LDR R0,[SP, #+60] \ 00000034 FF10A0E3 MOV R1,#+255 \ 00000038 F200D0E1 LDRSH R0,[R0, #+2] \ 0000003C F01E81E3 ORR R1,R1,#0xF00 \ 00000040 0060A0E3 MOV R6,#+0 \ 00000044 010050E1 CMP R0,R1 \ 00000048 9C009405 LDREQ R0,[R4, #+156] \ 0000004C 01005003 CMPEQ R0,#+1 \ 00000050 9500001A BNE ??edit_onkey_0 732 { 733 EDITCONTROL ec; 734 ExtractEditControl(data,1,&ec); \ 00000054 10208DE2 ADD R2,SP,#+16 \ 00000058 0110A0E3 MOV R1,#+1 735 ws=ec.pWS; 736 void *data=FindGUIbyId(id_ed,NULL); \ 0000005C ........ LDR R8,??DataTable24 ;; `?` \ 00000060 0700A0E1 MOV R0,R7 \ 00000064 690100EF SWI +361 \ 00000068 600094E5 LDR R0,[R4, #+96] \ 0000006C 38A09DE5 LDR R10,[SP, #+56] \ 00000070 0010A0E3 MOV R1,#+0 \ 00000074 090200EF SWI +521 \ 00000078 0070A0E1 MOV R7,R0 \ 0000007C 180095E5 LDR R0,[R5, #+24] \ 00000080 000050E3 CMP R0,#+0 \ 00000084 4900000A BEQ ??edit_onkey_1 737 if(fl->is_first)//Åñëè íàæàëè "Ñîçäàòü çàìåòêó" 738 { 739 int k=GetFListN2(); \ 00000088 ........ BL GetFListN2 \ 0000008C 00008DE5 STR R0,[SP, #+0] 740 for(int t=0;tFNAME; 744 if(num>last_name) \ 000000A8 04109DE5 LDR R1,[SP, #+4] \ 000000AC 0090A0E1 MOV R9,R0 \ 000000B0 140099E5 LDR R0,[R9, #+20] 745 last_name=num; 746 } \ 000000B4 01B08BE2 ADD R11,R11,#+1 \ 000000B8 000051E1 CMP R1,R0 \ 000000BC 04008D35 STRCC R0,[SP, #+4] \ ??edit_onkey_2: \ 000000C0 00009DE5 LDR R0,[SP, #+0] \ 000000C4 00005BE1 CMP R11,R0 \ 000000C8 F4FFFFBA BLT ??edit_onkey_4 747 num=last_name+1; 748 sprintf(nw->filename,"%02X.mrk",num); \ ??edit_onkey_3: \ 000000CC 04009DE5 LDR R0,[SP, #+4] \ 000000D0 081088E2 ADD R1,R8,#+8 \ 000000D4 012080E2 ADD R2,R0,#+1 \ 000000D8 040099E5 LDR R0,[R9, #+4] \ 000000DC 160000EF SWI +22 749 nw->text=malloc(ws->wsbody[0]); \ 000000E0 00009AE5 LDR R0,[R10, #+0] \ 000000E4 B000D0E1 LDRH R0,[R0, #+0] \ 000000E8 140000EF SWI +20 \ 000000EC 0C0089E5 STR R0,[R9, #+12] 750 ws2str(ws,nw->text); \ 000000F0 0010A0E1 MOV R1,R0 \ 000000F4 0A00A0E1 MOV R0,R10 \ 000000F8 ........ BL ws2str 751 SaveMark(nw->filename,nw->text); \ 000000FC 041099E5 LDR R1,[R9, #+4] \ 00000100 0CA099E5 LDR R10,[R9, #+12] \ 00000104 04108DE5 STR R1,[SP, #+4] \ 00000108 6C0F84E2 ADD R0,R4,#+432 \ 0000010C 1B0000EF SWI +27 \ 00000110 400080E2 ADD R0,R0,#+64 \ 00000114 140000EF SWI +20 \ 00000118 04309DE5 LDR R3,[SP, #+4] \ 0000011C 00B0A0E1 MOV R11,R0 \ 00000120 6C2F84E2 ADD R2,R4,#+432 \ 00000124 0810A0E1 MOV R1,R8 \ 00000128 160000EF SWI +22 \ 0000012C B42094E5 LDR R2,[R4, #+180] \ 00000130 0010A0E3 MOV R1,#+0 \ 00000134 0B00A0E1 MOV R0,R11 \ 00000138 130000EF SWI +19 \ 0000013C 0D30A0E1 MOV R3,SP \ 00000140 402FA0E3 MOV R2,#+256 \ 00000144 0210A0E3 MOV R1,#+2 \ 00000148 831C81E3 ORR R1,R1,#0x8300 \ 0000014C 0B00A0E1 MOV R0,R11 \ 00000150 0A0000EF SWI +10 \ 00000154 0080A0E1 MOV R8,R0 \ 00000158 010078E3 CMN R8,#+1 \ 0000015C 0600000A BEQ ??edit_onkey_5 \ 00000160 0A00A0E1 MOV R0,R10 \ 00000164 1B0000EF SWI +27 \ 00000168 0020A0E1 MOV R2,R0 \ 0000016C 0D30A0E1 MOV R3,SP \ 00000170 0A10A0E1 MOV R1,R10 \ 00000174 0800A0E1 MOV R0,R8 \ 00000178 0C0000EF SWI +12 \ ??edit_onkey_5: \ 0000017C 0D10A0E1 MOV R1,SP \ 00000180 0800A0E1 MOV R0,R8 \ 00000184 0D0000EF SWI +13 752 753 readonly=0; \ 00000188 9C6084E5 STR R6,[R4, #+156] 754 Add(nw->filename,nw->text,0); \ 0000018C 0C1099E5 LDR R1,[R9, #+12] \ 00000190 040099E5 LDR R0,[R9, #+4] \ 00000194 0020A0E3 MOV R2,#+0 \ 00000198 ........ BL `Add` 755 RecountMenuNOTE(data); \ 0000019C 0700A0E1 MOV R0,R7 \ 000001A0 ........ BL RecountMenuNOTE 756 GeneralFuncF1(1); \ 000001A4 0100A0E3 MOV R0,#+1 \ 000001A8 3B0100EF SWI +315 \ 000001AC 3E0000EA B ??edit_onkey_0 757 } 758 else 759 { 760 ss=malloc(256); \ ??edit_onkey_1: \ 000001B0 400FA0E3 MOV R0,#+256 \ 000001B4 140000EF SWI +20 761 sprintf(ss,"%s\\%s",ndir,fl->filename); \ 000001B8 043095E5 LDR R3,[R5, #+4] \ 000001BC 0090A0E1 MOV R9,R0 \ 000001C0 6C2F84E2 ADD R2,R4,#+432 \ 000001C4 0810A0E1 MOV R1,R8 \ 000001C8 160000EF SWI +22 762 unlink(ss,&err); \ 000001CC 0C108DE2 ADD R1,SP,#+12 \ 000001D0 0900A0E1 MOV R0,R9 \ 000001D4 6B0100EF SWI +363 763 fl->text=malloc(ws->wsbody[0]); \ 000001D8 00009AE5 LDR R0,[R10, #+0] \ 000001DC B000D0E1 LDRH R0,[R0, #+0] \ 000001E0 140000EF SWI +20 \ 000001E4 0C0085E5 STR R0,[R5, #+12] 764 ws2str(ws,fl->text); \ 000001E8 0010A0E1 MOV R1,R0 \ 000001EC 0A00A0E1 MOV R0,R10 \ 000001F0 ........ BL ws2str 765 SaveMark(fl->filename,fl->text); \ 000001F4 04A095E5 LDR R10,[R5, #+4] \ 000001F8 0C9095E5 LDR R9,[R5, #+12] \ 000001FC 6C0F84E2 ADD R0,R4,#+432 \ 00000200 1B0000EF SWI +27 \ 00000204 400080E2 ADD R0,R0,#+64 \ 00000208 140000EF SWI +20 \ 0000020C 00B0A0E1 MOV R11,R0 \ 00000210 0A30A0E1 MOV R3,R10 \ 00000214 6C2F84E2 ADD R2,R4,#+432 \ 00000218 0810A0E1 MOV R1,R8 \ 0000021C 160000EF SWI +22 \ 00000220 B42094E5 LDR R2,[R4, #+180] \ 00000224 0010A0E3 MOV R1,#+0 \ 00000228 0B00A0E1 MOV R0,R11 \ 0000022C 130000EF SWI +19 \ 00000230 0D30A0E1 MOV R3,SP \ 00000234 402FA0E3 MOV R2,#+256 \ 00000238 0210A0E3 MOV R1,#+2 \ 0000023C 831C81E3 ORR R1,R1,#0x8300 \ 00000240 0B00A0E1 MOV R0,R11 \ 00000244 0A0000EF SWI +10 \ 00000248 0080A0E1 MOV R8,R0 \ 0000024C 010078E3 CMN R8,#+1 \ 00000250 0600000A BEQ ??edit_onkey_6 \ 00000254 0900A0E1 MOV R0,R9 \ 00000258 1B0000EF SWI +27 \ 0000025C 0D30A0E1 MOV R3,SP \ 00000260 0020A0E1 MOV R2,R0 \ 00000264 0910A0E1 MOV R1,R9 \ 00000268 0800A0E1 MOV R0,R8 \ 0000026C 0C0000EF SWI +12 \ ??edit_onkey_6: \ 00000270 0D10A0E1 MOV R1,SP \ 00000274 0800A0E1 MOV R0,R8 \ 00000278 0D0000EF SWI +13 766 strncpy(fl->name,fl->text,32); \ 0000027C 0C1095E5 LDR R1,[R5, #+12] \ 00000280 080095E5 LDR R0,[R5, #+8] \ 00000284 2020A0E3 MOV R2,#+32 \ 00000288 160100EF SWI +278 767 readonly=0; \ 0000028C 9C6084E5 STR R6,[R4, #+156] 768 RecountMenuNOTE(data); \ 00000290 0700A0E1 MOV R0,R7 \ 00000294 ........ BL RecountMenuNOTE 769 GeneralFuncF1(1); \ 00000298 0100A0E3 MOV R0,#+1 \ 0000029C 3B0100EF SWI +315 770 DrawText(NULL,fl); \ 000002A0 0510A0E1 MOV R1,R5 \ 000002A4 0000A0E3 MOV R0,#+0 \ 000002A8 ........ BL DrawText 771 } 772 } 773 774 if(msg->gbsmsg->msg==KEY_DOWN) \ ??edit_onkey_0: \ 000002AC 3C009DE5 LDR R0,[SP, #+60] \ 000002B0 9310A0E3 MOV R1,#+147 \ 000002B4 040090E5 LDR R0,[R0, #+4] \ 000002B8 401F81E3 ORR R1,R1,#0x100 \ 000002BC 040090E5 LDR R0,[R0, #+4] \ 000002C0 010050E1 CMP R0,R1 \ 000002C4 6000001A BNE ??edit_onkey_7 775 { 776 if((k==UP_BUTTON && readonly==0) && item!=0) \ 000002C8 08309DE5 LDR R3,[SP, #+8] \ 000002CC C01094E5 LDR R1,[R4, #+192] \ 000002D0 9C2094E5 LDR R2,[R4, #+156] \ 000002D4 A00094E5 LDR R0,[R4, #+160] \ 000002D8 3B0053E3 CMP R3,#+59 \ 000002DC 2400001A BNE ??edit_onkey_8 \ 000002E0 000052E3 CMP R2,#+0 \ 000002E4 5800001A BNE ??edit_onkey_7 \ 000002E8 000051E3 CMP R1,#+0 \ 000002EC 5600000A BEQ ??edit_onkey_7 777 { 778 GeneralFunc_flag1(draw_id,1); \ 000002F0 0110A0E3 MOV R1,#+1 \ 000002F4 3D0100EF SWI +317 779 int y=fl->FNAME; \ 000002F8 144095E5 LDR R4,[R5, #+20] 780 int num=0; 781 int km=GetFListN2(); \ 000002FC ........ BL GetFListN2 \ 00000300 0060A0E1 MOV R6,R0 782 if(y>1) y--; \ 00000304 020054E3 CMP R4,#+2 \ 00000308 014044A2 SUBGE R4,R4,#+1 \ 0000030C 0B0000AA BGE ??edit_onkey_9 783 else 784 { 785 for(int t=0;tFNAME; \ ??edit_onkey_11: \ 00000320 0700A0E1 MOV R0,R7 \ 00000324 ........ BL FindFLISTtByN \ 00000328 140090E5 LDR R0,[R0, #+20] 789 if(num>y)y=num; 790 } \ 0000032C 017087E2 ADD R7,R7,#+1 \ 00000330 000054E1 CMP R4,R0 \ 00000334 0040A0B1 MOVLT R4,R0 \ ??edit_onkey_10: \ 00000338 060057E1 CMP R7,R6 \ 0000033C F7FFFFBA BLT ??edit_onkey_11 791 } 792 for(int k=0;kFNAME) break; \ 00000360 140095E5 LDR R0,[R5, #+20] \ 00000364 000054E1 CMP R4,R0 \ 00000368 F6FFFF1A BNE ??edit_onkey_13 796 } 797 DrawText(NULL,fl); \ ??edit_onkey_14: \ 0000036C 0510A0E1 MOV R1,R5 \ 00000370 330000EA B ??edit_onkey_15 798 } 799 800 if((k==DOWN_BUTTON && readonly==0) && item!=0) \ ??edit_onkey_8: \ 00000374 3C0053E3 CMP R3,#+60 \ 00000378 2700001A BNE ??edit_onkey_16 \ 0000037C 000052E3 CMP R2,#+0 \ 00000380 3100001A BNE ??edit_onkey_7 \ 00000384 000051E3 CMP R1,#+0 \ 00000388 2F00000A BEQ ??edit_onkey_7 801 { 802 GeneralFunc_flag1(draw_id,1); \ 0000038C 0110A0E3 MOV R1,#+1 \ 00000390 3D0100EF SWI +317 803 int y=fl->FNAME; \ 00000394 146095E5 LDR R6,[R5, #+20] 804 int num; 805 int last=0; \ 00000398 0070A0E3 MOV R7,#+0 806 int km=GetFListN2(); \ 0000039C ........ BL GetFListN2 \ 000003A0 0040A0E1 MOV R4,R0 807 for(int t=0;tFNAME; \ ??edit_onkey_19: \ 000003B4 0800A0E1 MOV R0,R8 \ 000003B8 ........ BL FindFLISTtByN \ 000003BC 140090E5 LDR R0,[R0, #+20] 811 if(num>last)last=num; 812 } \ 000003C0 018088E2 ADD R8,R8,#+1 \ 000003C4 000057E1 CMP R7,R0 \ 000003C8 0070A0B1 MOVLT R7,R0 \ ??edit_onkey_17: \ 000003CC 040058E1 CMP R8,R4 \ 000003D0 F7FFFFBA BLT ??edit_onkey_19 813 nw=FindFLISTtByN(1); \ ??edit_onkey_18: \ 000003D4 0100A0E3 MOV R0,#+1 \ 000003D8 ........ BL FindFLISTtByN 814 if(yFNAME; \ 000003E0 146090A5 LDRGE R6,[R0, #+20] 818 819 for(int k=0;kFNAME) break; \ 00000408 140095E5 LDR R0,[R5, #+20] \ 0000040C 000056E1 CMP R6,R0 \ 00000410 F6FFFF1A BNE ??edit_onkey_21 823 } 824 DrawText(NULL,fl); \ ??edit_onkey_22: \ 00000414 0510A0E1 MOV R1,R5 \ 00000418 090000EA B ??edit_onkey_15 825 } 826 827 if(k==GREEN_BUTTON) \ ??edit_onkey_16: \ 0000041C 0B0053E3 CMP R3,#+11 \ 00000420 0900001A BNE ??edit_onkey_7 828 { 829 GeneralFunc_flag1(draw_id,1); \ 00000424 0110A0E3 MOV R1,#+1 \ 00000428 3D0100EF SWI +317 830 readonly=!readonly; \ 0000042C 9C0094E5 LDR R0,[R4, #+156] 831 DrawText(NULL,fl); \ 00000430 0510A0E1 MOV R1,R5 \ 00000434 000050E3 CMP R0,#+0 \ 00000438 0100A003 MOVEQ R0,#+1 \ 0000043C 0000A013 MOVNE R0,#+0 \ 00000440 9C0084E5 STR R0,[R4, #+156] \ ??edit_onkey_15: \ 00000444 0000A0E3 MOV R0,#+0 \ 00000448 ........ BL DrawText 832 } 833 } 834 return(0); \ ??edit_onkey_7: \ 0000044C 0000A0E3 MOV R0,#+0 \ 00000450 40D08DE2 ADD SP,SP,#+64 \ 00000454 F08FBDE8 POP {R4-R11,PC} ;; return 835 } 836 \ In segment DATA_C, align 4, align-sorted 837 const SOFTKEY_DESC sk[]; \ sk: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 838 SOFTKEYSTAB skt={ sk,0 }; 839 \ In segment CODE, align 4, keep-with-next 840 void edit_ghook(GUI *gui, int cmd) 841 { \ edit_ghook: \ 00000000 00402DE9 PUSH {LR} 842 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)"Ñîõðàíèòü"}; 843 844 if(cmd==0xA) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0100001A BNE ??edit_ghook_0 845 { 846 DisableIDLETMR(); // Îòêëþ÷àåì òàéìåð âûõîäà ïî òàéìàóòó \ 0000000C 7F0100EF SWI +383 \ 00000010 0080BDE8 POP {PC} 847 } 848 if(cmd==0x03) \ ??edit_ghook_0: \ 00000014 ........ LDR R3,??DataTable30 ;; edit_desc \ 00000018 030051E3 CMP R1,#+3 \ 0000001C 0400001A BNE ??edit_ghook_1 849 { 850 void *data=FindGUIbyId(id_ed,NULL); \ 00000020 600093E5 LDR R0,[R3, #+96] \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 090200EF SWI +521 851 RecountMenuNOTE(data); \ 0000002C 0040BDE8 POP {LR} ;; Pop \ 00000030 ........ B RecountMenuNOTE ;; tailcall 852 } 853 if(cmd==7) \ ??edit_ghook_1: \ 00000034 070051E3 CMP R1,#+7 \ 00000038 0080BD18 POPNE {PC} 854 { 855 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000003C 0020A0E3 MOV R2,#+0 \ 00000040 AB1F83E2 ADD R1,R3,#+684 \ 00000044 680100EF SWI +360 856 } 857 }; \ 00000048 0080BDE8 POP {PC} ;; return 858 859 860 INPUTDIA_DESC edit_desc= 861 { 862 1, 863 edit_onkey, 864 edit_ghook, 865 0, 866 0, 867 &skt, 868 {0,0,0,0}, 869 FONT_SMALL, 870 100, 871 101, 872 0, 873 0, 874 0x40000000 875 }; 876 877 //------------------------------------// 878 879 static void SaveMark(char *name,char *text)//Ñîõðàíÿåì â êàòàëîã 880 { 881 unsigned int err; 882 int f; 883 char *p=malloc(strlen(ndir)+64); 884 sprintf(p,"%s\\%s",ndir,name); 885 SetFileAttrib(p,0,errr); 886 if((f=fopen(p,A_Create+A_ReadWrite+A_BIN+A_Truncate,P_WRITE,&err))!=-1) 887 { 888 fwrite(f,text,strlen(text),&err); 889 //ShowMSG(1,(int)LG_FILESAVE); 890 } 891 // else 892 // ShowMSG(1,(int)LG_NOTSAVE); 893 //SetFileAttrib(p,FA_READONLY,errr); 894 fclose(f,&err); 895 } 896 897 //------------------------------------// 898 \ In segment CODE, align 4, keep-with-next 899 int DrawText(int _null,MNU *fn)//ñîáñòâåííî ýäèòêîíòðîëü 900 { \ DrawText: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 901 ClearT9Key(); \ 00000004 F4419FE5 LDR R4,??DrawText_0+0x4 ;; edit_desc \ 00000008 10D04DE2 SUB SP,SP,#+16 \ 0000000C 01A0A0E1 MOV R10,R1 \ 00000010 2010A0E3 MOV R1,#+32 \ 00000014 540F84E2 ADD R0,R4,#+336 \ 00000018 1D0100EF SWI +285 902 EDITC_OPTIONS ec_options; 903 void *ma=malloc_adr(); \ 0000001C 148000EF SWI +32788 \ 00000020 0050A0E1 MOV R5,R0 904 void *eq=AllocEQueue(ma, mfree_adr()); \ 00000024 158000EF SWI +32789 \ 00000028 0010A0E1 MOV R1,R0 \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 630100EF SWI +355 \ 00000034 0060A0E1 MOV R6,R0 905 WSHDR *ws=AllocWS(strlen(fn->text)); \ 00000038 0C009AE5 LDR R0,[R10, #+12] 906 MNU *fl; 907 int km=GetFListN2(); 908 for(item=0;itemFNAME == fl->FNAME) break; \ 0000007C 14009AE5 LDR R0,[R10, #+20] \ 00000080 141097E5 LDR R1,[R7, #+20] \ 00000084 010050E1 CMP R0,R1 \ 00000088 F3FFFF1A BNE ??DrawText_2 912 } 913 cmp=malloc(strlen(fl->filename)); \ ??DrawText_3: \ 0000008C 040097E5 LDR R0,[R7, #+4] \ 00000090 1B0000EF SWI +27 \ 00000094 140000EF SWI +20 \ 00000098 C40084E5 STR R0,[R4, #+196] 914 strcpy(cmp,fl->filename); \ 0000009C 041097E5 LDR R1,[R7, #+4] \ 000000A0 1A0000EF SWI +26 915 916 if(fl->is_first==1) sprintf(hdr_txt,"%s","Íîâàÿ çàïèñü"); \ 000000A4 182097E5 LDR R2,[R7, #+24] \ 000000A8 54119FE5 LDR R1,??DrawText_0+0x8 ;; `?name);//Åñëè îòêðûâàåì äëÿ ïðîñìîòðà â ðåæèì ðåàäîíëè,òî âûâîäèì â çàãîëîâêå äàòó \ 000000D8 08309705 LDREQ R3,[R7, #+8] 920 else 921 sprintf(hdr_txt,"%d. %s", item,"Ðåäàêòèðîâàíèå");//Èíà÷å ïðîñòî ñëîâî Çàìåòêè:) \ 000000DC 040080E0 ADD R0,R0,R4 \ 000000E0 0130A011 MOVNE R3,R1 \ 000000E4 101081E2 ADD R1,R1,#+16 \ 000000E8 160000EF SWI +22 922 923 if(fl->is_first!=1) \ ??DrawText_5: \ 000000EC 180097E5 LDR R0,[R7, #+24] \ 000000F0 010050E3 CMP R0,#+1 \ 000000F4 3C00000A BEQ ??DrawText_6 924 ascii2ws(ws,fl->text);//Åñëè îòêðûâàåì çàïèñü,òî âûâîäèì òåêñò \ 000000F8 0C1097E5 LDR R1,[R7, #+12] \ 000000FC 0800A0E1 MOV R0,R8 \ 00000100 ........ BL ascii2ws 925 else 926 readonly=1;//Åñëè ñîçäàåì,òî ñðàçó îòêðûâàåì ðåäàêòèðîâàíèå 927 928 ConstructEditControl(&ec,readonly?ECT_NORMAL_TEXT|ECF_DEFAULT_BIG_LETTER:ECT_READ_ONLY,0x40,ws,16384);//16 êèëî äóìàþ õâàòèò :) \ 00000104 9C0094E5 LDR R0,[R4, #+156] \ 00000108 000050E3 CMP R0,#+0 \ 0000010C 3700001A BNE ??DrawText_7 \ 00000110 0010A0E3 MOV R1,#+0 \ ??DrawText_8: \ 00000114 400CA0E3 MOV R0,#+16384 \ 00000118 01002DE9 PUSH {R0} \ 0000011C 8C7FA0E3 MOV R7,#+560 \ 00000120 0830A0E1 MOV R3,R8 \ 00000124 4020A0E3 MOV R2,#+64 \ 00000128 040087E0 ADD R0,R7,R4 \ 0000012C 650100EF SWI +357 929 PrepareEditCOptions(&ec_options); \ 00000130 04008DE2 ADD R0,SP,#+4 \ 00000134 C80100EF SWI +456 930 SetFontToEditCOptions(&ec_options,4); \ 00000138 0410A0E3 MOV R1,#+4 \ 0000013C 04008DE2 ADD R0,SP,#+4 \ 00000140 CA0100EF SWI +458 931 CopyOptionsToEditControl(&ec,&ec_options); \ 00000144 04108DE2 ADD R1,SP,#+4 \ 00000148 040087E0 ADD R0,R7,R4 \ 0000014C CE0100EF SWI +462 932 AddEditControlToEditQend(eq,&ec,ma); \ 00000150 0520A0E1 MOV R2,R5 \ 00000154 041087E0 ADD R1,R7,R4 \ 00000158 0600A0E1 MOV R0,R6 \ 0000015C 660100EF SWI +358 933 934 patch_header(&disk_prop_hdr); \ 00000160 BC94C4E1 STRH R9,[R4, #+76] \ 00000164 1800A0E3 MOV R0,#+24 \ 00000168 BE04C4E1 STRH R0,[R4, #+78] \ 0000016C 888100EF SWI +33160 \ 00000170 010040E2 SUB R0,R0,#+1 \ 00000174 B005C4E1 STRH R0,[R4, #+80] \ 00000178 8A8100EF SWI +33162 \ 0000017C 180080E2 ADD R0,R0,#+24 \ 00000180 B205C4E1 STRH R0,[R4, #+82] 935 patch_input(&edit_desc); \ 00000184 0400A0E3 MOV R0,#+4 \ 00000188 B801C4E1 STRH R0,[R4, #+24] \ 0000018C 8A8100EF SWI +33162 \ 00000190 190080E2 ADD R0,R0,#+25 \ 00000194 BA01C4E1 STRH R0,[R4, #+26] \ 00000198 888100EF SWI +33160 \ 0000019C 050040E2 SUB R0,R0,#+5 \ 000001A0 BC01C4E1 STRH R0,[R4, #+28] \ 000001A4 898100EF SWI +33161 \ 000001A8 0050A0E1 MOV R5,R0 \ 000001AC 8B8100EF SWI +33163 \ 000001B0 000045E0 SUB R0,R5,R0 \ 000001B4 010040E2 SUB R0,R0,#+1 \ 000001B8 BE01C4E1 STRH R0,[R4, #+30] 936 937 FreeWS(ws); \ 000001BC 0800A0E1 MOV R0,R8 \ 000001C0 290100EF SWI +297 938 return draw_id=CreateInputTextDialog(&edit_desc,&disk_prop_hdr,eq,1,0); \ 000001C4 0000A0E3 MOV R0,#+0 \ 000001C8 01002DE9 PUSH {R0} \ 000001CC 0130A0E3 MOV R3,#+1 \ 000001D0 0620A0E1 MOV R2,R6 \ 000001D4 4C1084E2 ADD R1,R4,#+76 \ 000001D8 0400A0E1 MOV R0,R4 \ 000001DC 670100EF SWI +359 \ 000001E0 A00084E5 STR R0,[R4, #+160] \ 000001E4 18D08DE2 ADD SP,SP,#+24 \ 000001E8 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawText_6: \ 000001EC 9C0084E5 STR R0,[R4, #+156] \ ??DrawText_7: \ 000001F0 0310A0E3 MOV R1,#+3 \ 000001F4 401D81E3 ORR R1,R1,#0x1000 \ 000001F8 C5FFFFEA B ??DrawText_8 \ ??DrawText_0: \ 000001FC 25730000 DC8 "%s",+0 \ 00000200 ........ DC32 edit_desc \ 00000204 ........ DC32 `?csm.state=0; 947 csm->csm.unk1=0; 948 /**/ 949 void *ma=malloc_adr(); 950 void *mf=mfree_adr(); 951 void *main_gui; 952 953 patch_header(&bm_menuhdr); \ 00000004 ........ LDR R5,??DataTable30 ;; edit_desc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0080A0E3 MOV R8,#+0 \ 00000010 108084E5 STR R8,[R4, #+16] \ 00000014 148084E5 STR R8,[R4, #+20] \ 00000018 148000EF SWI +32788 \ 0000001C 0060A0E1 MOV R6,R0 \ 00000020 158000EF SWI +32789 \ 00000024 0070A0E1 MOV R7,R0 \ 00000028 B883C5E1 STRH R8,[R5, #+56] 954 UpdateHeader(); 955 prev_itemcount=CountNOTE(); 956 957 if (tabs_num==1) \ 0000002C ........ LDR R8,??DataTable27 ;; menu \ 00000030 1800A0E3 MOV R0,#+24 \ 00000034 BA03C5E1 STRH R0,[R5, #+58] \ 00000038 888100EF SWI +33160 \ 0000003C 010040E2 SUB R0,R0,#+1 \ 00000040 BC03C5E1 STRH R0,[R5, #+60] \ 00000044 8A8100EF SWI +33162 \ 00000048 180080E2 ADD R0,R0,#+24 \ 0000004C BE03C5E1 STRH R0,[R5, #+62] \ 00000050 ........ BL UpdateHeader \ 00000054 ........ BL CountNOTE \ 00000058 A40085E5 STR R0,[R5, #+164] \ 0000005C CC00D5E5 LDRB R0,[R5, #+204] \ 00000060 0710A0E1 MOV R1,R7 \ 00000064 010050E3 CMP R0,#+1 \ 00000068 0600A0E1 MOV R0,R6 \ 0000006C 0E00001A BNE ??maincsm_oncreate_0 958 { 959 main_gui=GetMenuGUI(ma, mf); \ 00000070 A40200EF SWI +676 \ 00000074 0090A0E1 MOV R9,R0 960 SetGUIDefinition(main_gui, &menu); \ 00000078 0810A0E1 MOV R1,R8 \ 0000007C BC0200EF SWI +700 961 SetHeaderToMenu(main_gui, &bm_menuhdr, ma); \ 00000080 0620A0E1 MOV R2,R6 \ 00000084 381085E2 ADD R1,R5,#+56 \ 00000088 0900A0E1 MOV R0,R9 \ 0000008C A60200EF SWI +678 962 csm->gui_id=CreateGUI(main_gui); \ 00000090 0900A0E1 MOV R0,R9 \ 00000094 370100EF SWI +311 \ 00000098 280084E5 STR R0,[R4, #+40] 963 create(); \ 0000009C ........ BL create \ 000000A0 280094E5 LDR R0,[R4, #+40] \ 000000A4 640085E5 STR R0,[R5, #+100] \ 000000A8 F08FBDE8 POP {R4-R11,PC} 964 } 965 else 966 { 967 main_gui=GetTabGUI(ma, mf); \ ??maincsm_oncreate_0: \ 000000AC BB0200EF SWI +699 \ 000000B0 0090A0E1 MOV R9,R0 968 SetGUIDefinition(main_gui, &TabGui); \ 000000B4 2C1088E2 ADD R1,R8,#+44 \ 000000B8 BC0200EF SWI +700 969 for (int i=0; igui_id=CreateGUI(main_gui); \ ??maincsm_oncreate_2: \ 00000120 0900A0E1 MOV R0,R9 \ 00000124 370100EF SWI +311 \ 00000128 280084E5 STR R0,[R4, #+40] 977 UpdateTab1stItem(main_gui, 0); \ 0000012C 0010A0E3 MOV R1,#+0 \ 00000130 0900A0E1 MOV R0,R9 \ 00000134 BF0200EF SWI +703 978 } 979 MAINGUI_ID=csm->gui_id; \ 00000138 280094E5 LDR R0,[R4, #+40] \ 0000013C 640085E5 STR R0,[R5, #+100] 980 /**/ 981 // csm->gui_id=create(); 982 } \ 00000140 F08FBDE8 POP {R4-R11,PC} ;; return 983 \ In segment CODE, align 4, keep-with-next 984 void Killer(void) 985 { 986 extern void seqkill(void *data, void(*next_in_seq)(CSM_RAM *), void *data_to_kill, void *seqkiller); 987 extern void *ELF_BEGIN; 988 } \ Killer: \ 00000000 1EFF2FE1 BX LR ;; return 989 \ In segment CODE, align 4, keep-with-next 990 void maincsm_onclose(CSM_RAM *csm) 991 { \ maincsm_onclose: \ 00000000 00402DE9 PUSH {LR} 992 FreeMrk(); \ 00000004 ........ BL FreeMrk 993 FreeFold(); \ 00000008 ........ BL FreeFold 994 SUBPROC((void *)Killer); \ 0000000C 04009FE5 LDR R0,??maincsm_onclose_0 ;; Killer \ 00000010 710100EF SWI +369 995 } \ 00000014 0080BDE8 POP {PC} ;; return \ ??maincsm_onclose_0: \ 00000018 ........ DC32 Killer 996 \ In segment CODE, align 4, keep-with-next 997 int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg) 998 { 999 MAIN_CSM *csm=(MAIN_CSM*)data; 1000 if ((msg->msg==MSG_GUI_DESTROYED)&&((int)msg->data0==csm->gui_id)) \ maincsm_onmessage: \ 00000000 042091E5 LDR R2,[R1, #+4] \ 00000004 0E30A0E3 MOV R3,#+14 \ 00000008 643C83E3 ORR R3,R3,#0x6400 \ 0000000C 030052E1 CMP R2,R3 \ 00000010 0400001A BNE ??maincsm_onmessage_0 \ 00000014 0C1091E5 LDR R1,[R1, #+12] \ 00000018 282090E5 LDR R2,[R0, #+40] \ 0000001C 020051E1 CMP R1,R2 1001 csm->csm.state=-3; \ 00000020 0210E003 MVNEQ R1,#+2 \ 00000024 10108005 STREQ R1,[R0, #+16] 1002 return(1); \ ??maincsm_onmessage_0: \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 1EFF2FE1 BX LR ;; return 1003 } 1004 \ In segment DATA_Z, align 4, align-sorted 1005 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 1006 1007 const struct 1008 { 1009 CSM_DESC maincsm; 1010 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 257369636F6E DC8 "%sicon.ini" \ 2E696E6900 \ 0000000B 00 DC8 0 \ 0000000C 4E6F74654D61 DC8 "NoteMan" \ 6E00 1011 }MAINCSM = \ MAINCSM: \ 00000014 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 00000030 2C0000000100 DC32 44, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 0000004C 8B00 DC16 139 \ 0000004E 0000 DC8 0, 0 1012 { 1013 { 1014 maincsm_onmessage, 1015 maincsm_oncreate, 1016 #ifdef NEWSGOLD 1017 0, 1018 0, 1019 0, 1020 0, 1021 #endif 1022 maincsm_onclose, 1023 sizeof(MAIN_CSM), 1024 1, 1025 &minus11 1026 }, 1027 { 1028 maincsm_name_body, 1029 NAMECSM_MAGIC1, 1030 NAMECSM_MAGIC2, 1031 0x0, 1032 139 1033 } 1034 }; 1035 1036 \ In segment DATA_Z, align 4, align-sorted 1037 WSHDR *ws_name; \ ws_name: \ 00000000 DS8 4 \ In segment CODE, align 4, keep-with-next 1038 void UpdateCSMname(void) 1039 { 1040 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"NoteMan"); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable31 ;; `?` \ 00000004 00402DE9 PUSH {LR} \ 00000008 0C1080E2 ADD R1,R0,#+12 \ 0000000C 3C0080E2 ADD R0,R0,#+60 \ 00000010 240100EF SWI +292 1041 } \ 00000014 0080BDE8 POP {PC} ;; return \ In segment DATA_I, align 4, align-sorted \ edit_desc: \ 00000000 DS8 56 \ 00000038 REQUIRE `?` \ bm_menuhdr: \ 00000038 DS8 20 \ 0000004C REQUIRE `?` \ disk_prop_hdr: \ 0000004C DS8 20 \ 00000060 REQUIRE `?` \ id_ed: \ 00000060 DS8 4 \ 00000064 REQUIRE `?` \ MAINGUI_ID: \ 00000064 DS8 4 \ 00000068 REQUIRE `?` \ TabIcons: \ 00000068 DS8 52 \ 0000009C REQUIRE `?` \ readonly: \ 0000009C DS8 4 \ 000000A0 REQUIRE `?` \ draw_id: \ 000000A0 DS8 4 \ 000000A4 REQUIRE `?` \ prev_itemcount: \ 000000A4 DS8 4 \ 000000A8 REQUIRE `?` \ mnutop: \ 000000A8 DS8 4 \ 000000AC REQUIRE `?` \ mnu_dir: \ 000000AC DS8 4 \ 000000B0 REQUIRE `?` \ num: \ 000000B0 DS8 4 \ 000000B4 REQUIRE `?` \ errr: \ 000000B4 DS8 4 \ 000000B8 REQUIRE `?` \ current_tab: \ 000000B8 DS8 4 \ 000000BC REQUIRE `?` \ MLHico: \ 000000BC DS8 4 \ 000000C0 REQUIRE `?` \ item: \ 000000C0 DS8 4 \ 000000C4 REQUIRE `?` \ `cmp`: \ 000000C4 DS8 4 \ 000000C8 REQUIRE `?` 1042 1043 int maincsm_id; \ maincsm_id: \ 000000C8 DS8 4 \ 000000CC REQUIRE `?` \ tabs_num: \ 000000CC DS8 1 \ 000000CD REQUIRE `?` \ t9find: \ 000000CD DS8 1 \ 000000CE REQUIRE `?` \ 000000CE DS8 2 \ dir: \ 000000D0 DS8 128 \ 00000150 REQUIRE `?` \ T9Key: \ 00000150 DS8 32 \ 00000170 REQUIRE `?` \ hdr_txt: \ 00000170 DS8 64 \ 000001B0 REQUIRE `?` \ ndir: \ 000001B0 DS8 128 \ 00000230 REQUIRE `?` \ ec: \ 00000230 DS8 44 \ 0000025C REQUIRE `?` \ _sk_r: \ 0000025C DS8 16 \ 0000026C REQUIRE `?` \ main_hdr_txt: \ 0000026C DS8 64 \ 000002AC REQUIRE `?` \ 000002AC DS8 8 \ 000002B4 REQUIRE `?` 1044 typedef struct 1045 { 1046 char Icon[128]; 1047 }TItem; 1048 1049 TItem It[10]; \ `It`: \ 000002B4 DS8 1280 \ 000007B4 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ curdir: \ 00000000 DS8 16 \ 00000010 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 1050 \ In segment CODE, align 4, keep-with-next 1051 void Load(char *sub) 1052 { \ Load: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0070A0E1 MOV R7,R0 1053 unsigned int err; 1054 int fill; 1055 char *mem; 1056 int size; 1057 int i; 1058 char *str; 1059 int j; 1060 1061 fill = fopen( sub , A_ReadOnly + A_BIN, P_READ, & err ); \ 0000000C 0D30A0E1 MOV R3,SP \ 00000010 8020A0E3 MOV R2,#+128 \ 00000014 801CA0E3 MOV R1,#+32768 \ 00000018 0A0000EF SWI +10 \ 0000001C 04008DE5 STR R0,[SP, #+4] 1062 if ( fill==-1 ) \ 00000020 010070E3 CMN R0,#+1 1063 { 1064 // ShowMSG(1,(int)"Can't open iconfile :("); 1065 fclose( fill, & err ); \ 00000024 0D10A001 MOVEQ R1,SP \ 00000028 0000E003 MVNEQ R0,#+0 \ 0000002C 1B00000A BEQ ??Load_0 1066 return; 1067 } 1068 mem=malloc(get_file_size(sub)); \ 00000030 0700A0E1 MOV R0,R7 \ 00000034 ........ BL get_file_size \ 00000038 140000EF SWI +20 \ 0000003C 0040A0E1 MOV R4,R0 1069 str=malloc(256); \ 00000040 400FA0E3 MOV R0,#+256 \ 00000044 140000EF SWI +20 \ 00000048 0050A0E1 MOV R5,R0 1070 int count=2; \ 0000004C 0260A0E3 MOV R6,#+2 1071 if ((mem!=0)&&(str!=0)) \ 00000050 000054E3 CMP R4,#+0 \ 00000054 00005513 CMPNE R5,#+0 \ 00000058 0C00000A BEQ ??Load_1 1072 { 1073 size=fread(fill,mem,get_file_size(sub),&err); 1074 i=0; \ 0000005C ........ LDR R9,??DataTable30 ;; edit_desc \ 00000060 0700A0E1 MOV R0,R7 \ 00000064 ........ BL get_file_size \ 00000068 0020A0E1 MOV R2,R0 \ 0000006C 04009DE5 LDR R0,[SP, #+4] \ 00000070 0D30A0E1 MOV R3,SP \ 00000074 0410A0E1 MOV R1,R4 \ 00000078 0B0000EF SWI +11 \ 0000007C 0070A0E1 MOV R7,R0 \ 00000080 0000A0E3 MOV R0,#+0 \ 00000084 010057E3 CMP R7,#+1 \ 00000088 ADBFA0E3 MOV R11,#+692 \ 0000008C 070000AA BGE ??Load_2 1075 while (i2) 1089 { 1090 TabIcons[count]=TR; 1091 } 1092 else 1093 MLHico=TR; 1094 // mfree(sf); 1095 count++; 1096 } 1097 i++; 1098 } 1099 } 1100 mfree(mem); \ ??Load_1: \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 150000EF SWI +21 1101 1102 fclose(fill,&err); \ 00000098 04009DE5 LDR R0,[SP, #+4] \ 0000009C 0D10A0E1 MOV R1,SP \ ??Load_0: \ 000000A0 0D0000EF SWI +13 1103 } \ 000000A4 F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??Load_3: \ 000000A8 016086E2 ADD R6,R6,#+1 \ ??Load_4: \ 000000AC 0800A0E1 MOV R0,R8 \ ??Load_2: \ 000000B0 070050E1 CMP R0,R7 \ 000000B4 F5FFFFAA BGE ??Load_1 \ 000000B8 0010A0E3 MOV R1,#+0 \ 000000BC 030000EA B ??Load_5 \ ??Load_6: \ 000000C0 0200A0E1 MOV R0,R2 \ 000000C4 0500C1E7 STRB R0,[R1, +R5] \ 000000C8 011081E2 ADD R1,R1,#+1 \ 000000CC 0800A0E1 MOV R0,R8 \ ??Load_5: \ 000000D0 0420D0E7 LDRB R2,[R0, +R4] \ 000000D4 018080E2 ADD R8,R0,#+1 \ 000000D8 0D0052E3 CMP R2,#+13 \ 000000DC 0A005213 CMPNE R2,#+10 \ 000000E0 0100000A BEQ ??Load_7 \ 000000E4 070050E1 CMP R0,R7 \ 000000E8 F4FFFFBA BLT ??Load_6 \ ??Load_7: \ 000000EC 0000A0E3 MOV R0,#+0 \ 000000F0 0500C1E7 STRB R0,[R1, +R5] \ 000000F4 0500A0E1 MOV R0,R5 \ 000000F8 1B0000EF SWI +27 \ 000000FC 0010D5E5 LDRB R1,[R5, #+0] \ 00000100 3B0051E3 CMP R1,#+59 \ 00000104 00005013 CMPNE R0,#+0 \ 00000108 E7FFFF0A BEQ ??Load_4 \ 0000010C 86A389E0 ADD R10,R9,R6, LSL #+7 \ 00000110 0510A0E1 MOV R1,R5 \ 00000114 0A008BE0 ADD R0,R11,R10 \ 00000118 1A0000EF SWI +26 \ 0000011C 0A008BE0 ADD R0,R11,R10 \ 00000120 030056E3 CMP R6,#+3 \ 00000124 BC0089B5 STRLT R0,[R9, #+188] \ 00000128 061189A0 ADDGE R1,R9,R6, LSL #+2 \ 0000012C 680081A5 STRGE R0,[R1, #+104] \ 00000130 DCFFFFEA B ??Load_3 1104 \ In segment CODE, align 4, keep-with-next 1105 int main(char *exename, char *fname) 1106 { \ main: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1107 zeromem(TabIcons,sizeof(TabIcons)); \ 00000004 ........ LDR R4,??DataTable30 ;; edit_desc \ 00000008 2CD04DE2 SUB SP,SP,#+44 \ 0000000C 0050A0E1 MOV R5,R0 \ 00000010 3410A0E3 MOV R1,#+52 \ 00000014 680084E2 ADD R0,R4,#+104 \ 00000018 1D0100EF SWI +285 1108 strcpy(dir,exename); \ 0000001C 0510A0E1 MOV R1,R5 \ 00000020 D00084E2 ADD R0,R4,#+208 \ 00000024 1A0000EF SWI +26 1109 for(int i=strlen(dir);dir[i]!='\\';i--) dir[i]=0; \ 00000028 D00084E2 ADD R0,R4,#+208 \ 0000002C 1B0000EF SWI +27 \ 00000030 041080E0 ADD R1,R0,R4 \ 00000034 D010D1E5 LDRB R1,[R1, #+208] \ 00000038 0020A0E3 MOV R2,#+0 \ 0000003C 5C0051E3 CMP R1,#+92 \ 00000040 0600000A BEQ ??main_0 \ ??main_1: \ 00000044 041080E0 ADD R1,R0,R4 \ 00000048 D020C1E5 STRB R2,[R1, #+208] \ 0000004C 010040E2 SUB R0,R0,#+1 \ 00000050 041080E0 ADD R1,R0,R4 \ 00000054 D010D1E5 LDRB R1,[R1, #+208] \ 00000058 5C0051E3 CMP R1,#+92 \ 0000005C F8FFFF1A BNE ??main_1 1110 1111 char *sub=(char*)malloc(128); 1112 sprintf(sub,"%sicon.ini",dir); \ ??main_0: \ 00000060 ........ LDR R6,??DataTable31 ;; `?` \ 00000064 8000A0E3 MOV R0,#+128 \ 00000068 140000EF SWI +20 \ 0000006C 0050A0E1 MOV R5,R0 \ 00000070 D02084E2 ADD R2,R4,#+208 \ 00000074 0610A0E1 MOV R1,R6 \ 00000078 160000EF SWI +22 1113 Load(sub); \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 ........ BL Load 1114 mfree(sub); \ 00000084 0500A0E1 MOV R0,R5 \ 00000088 150000EF SWI +21 1115 1116 1117 MarkFoider(); \ 0000008C ........ BL MarkFoider 1118 LoadMark(); \ 00000090 ........ BL LoadMark 1119 1120 char dummy[sizeof(MAIN_CSM)]; 1121 UpdateCSMname(); \ 00000094 ........ BL UpdateCSMname 1122 LockSched(); \ 00000098 460100EF SWI +326 1123 maincsm_id=CreateCSM(&MAINCSM.maincsm,dummy,0); \ 0000009C 0020A0E3 MOV R2,#+0 \ 000000A0 0D10A0E1 MOV R1,SP \ 000000A4 140086E2 ADD R0,R6,#+20 \ 000000A8 070100EF SWI +263 \ 000000AC C80084E5 STR R0,[R4, #+200] 1124 UnlockSched(); \ 000000B0 470100EF SWI +327 1125 return 0; \ 000000B4 0000A0E3 MOV R0,#+0 \ 000000B8 2CD08DE2 ADD SP,SP,#+44 \ 000000BC 7080BDE8 POP {R4-R6,PC} ;; return 1126 } 1127 1128 //-----------------------Edit chat---------------------------// 1129 1130 1131 typedef struct 1132 { 1133 unsigned short u; 1134 char dos; 1135 char win; 1136 char koi8; 1137 } TUNICODE2CHAR; 1138 \ In segment DATA_C, align 4, align-sorted 1139 const TUNICODE2CHAR unicode2char[]= \ unicode2char: \ 00000000 1004 DC16 1040 \ 00000002 80C0E100 DC8 128, 192, 225, 0 \ 00000006 1104 DC16 1041 \ 00000008 81C1E200 DC8 129, 193, 226, 0 \ 0000000C 1204 DC16 1042 \ 0000000E 82C2F700 DC8 130, 194, 247, 0 \ 00000012 1304 DC16 1043 \ 00000014 83C3E700 DC8 131, 195, 231, 0 \ 00000018 1404 DC16 1044 \ 0000001A 84C4E400 DC8 132, 196, 228, 0 \ 0000001E 1504 DC16 1045 \ 00000020 85C5E500 DC8 133, 197, 229, 0 \ 00000024 1604 DC16 1046 \ 00000026 86C6F600 DC8 134, 198, 246, 0 \ 0000002A 1704 DC16 1047 \ 0000002C 87C7FA00 DC8 135, 199, 250, 0 \ 00000030 1804 DC16 1048 \ 00000032 88C8E900 DC8 136, 200, 233, 0 \ 00000036 1904 DC16 1049 \ 00000038 89C9EA00 DC8 137, 201, 234, 0 \ 0000003C 1A04 DC16 1050 \ 0000003E 8ACAEB00 DC8 138, 202, 235, 0 \ 00000042 1B04 DC16 1051 \ 00000044 8BCBEC00 DC8 139, 203, 236, 0 \ 00000048 1C04 DC16 1052 \ 0000004A 8CCCED00 DC8 140, 204, 237, 0 \ 0000004E 1D04 DC16 1053 \ 00000050 8DCDEE00 DC8 141, 205, 238, 0 \ 00000054 1E04 DC16 1054 \ 00000056 8ECEEF00 DC8 142, 206, 239, 0 \ 0000005A 1F04 DC16 1055 \ 0000005C 8FCFF000 DC8 143, 207, 240, 0 \ 00000060 2004 DC16 1056 \ 00000062 90D0F200 DC8 144, 208, 242, 0 \ 00000066 2104 DC16 1057 \ 00000068 91D1F300 DC8 145, 209, 243, 0 \ 0000006C 2204 DC16 1058 \ 0000006E 92D2F400 DC8 146, 210, 244, 0 \ 00000072 2304 DC16 1059 \ 00000074 93D3F500 DC8 147, 211, 245, 0 \ 00000078 2404 DC16 1060 \ 0000007A 94D4E600 DC8 148, 212, 230, 0 \ 0000007E 2504 DC16 1061 \ 00000080 95D5E800 DC8 149, 213, 232, 0 \ 00000084 2604 DC16 1062 \ 00000086 96D6E300 DC8 150, 214, 227, 0 \ 0000008A 2704 DC16 1063 \ 0000008C 97D7FE00 DC8 151, 215, 254, 0 \ 00000090 2804 DC16 1064 \ 00000092 98D8FB00 DC8 152, 216, 251, 0 \ 00000096 2904 DC16 1065 \ 00000098 99D9FD00 DC8 153, 217, 253, 0 \ 0000009C 2A04 DC16 1066 \ 0000009E 9ADAFF00 DC8 154, 218, 255, 0 \ 000000A2 2B04 DC16 1067 \ 000000A4 9BDBF900 DC8 155, 219, 249, 0 \ 000000A8 2C04 DC16 1068 \ 000000AA 9CDCF800 DC8 156, 220, 248, 0 \ 000000AE 2D04 DC16 1069 \ 000000B0 9DDDFC00 DC8 157, 221, 252, 0 \ 000000B4 2E04 DC16 1070 \ 000000B6 9EDEE000 DC8 158, 222, 224, 0 \ 000000BA 2F04 DC16 1071 \ 000000BC 9FDFF100 DC8 159, 223, 241, 0 \ 000000C0 0204 DC16 1026 \ 000000C2 5F805F00 DC8 95, 128, 95, 0 \ 000000C6 0304 DC16 1027 \ 000000C8 5F815F00 DC8 95, 129, 95, 0 \ 000000CC 0904 DC16 1033 \ 000000CE 5F8A5F00 DC8 95, 138, 95, 0 \ 000000D2 0A04 DC16 1034 \ 000000D4 5F8C5F00 DC8 95, 140, 95, 0 \ 000000D8 0C04 DC16 1036 \ 000000DA 5F8D5F00 DC8 95, 141, 95, 0 \ 000000DE 0B04 DC16 1035 \ 000000E0 5F8E5F00 DC8 95, 142, 95, 0 \ 000000E4 0F04 DC16 1039 \ 000000E6 5F8F5F00 DC8 95, 143, 95, 0 \ 000000EA 0E04 DC16 1038 \ 000000EC F6A15F00 DC8 246, 161, 95, 0 \ 000000F0 0804 DC16 1032 \ 000000F2 4AA34A00 DC8 74, 163, 74, 0 \ 000000F6 0904 DC16 1033 \ 000000F8 83A5BD00 DC8 131, 165, 189, 0 \ 000000FC 0104 DC16 1025 \ 000000FE F0A8B300 DC8 240, 168, 179, 0 \ 00000102 0404 DC16 1028 \ 00000104 F2AAB400 DC8 242, 170, 180, 0 \ 00000108 0704 DC16 1031 \ 0000010A F4AFB700 DC8 244, 175, 183, 0 \ 0000010E 0604 DC16 1030 \ 00000110 49B2B600 DC8 73, 178, 182, 0 \ 00000114 0504 DC16 1029 \ 00000116 53BD5300 DC8 83, 189, 83, 0 \ 0000011A 3004 DC16 1072 \ 0000011C A0E0C100 DC8 160, 224, 193, 0 \ 00000120 3104 DC16 1073 \ 00000122 A1E1C200 DC8 161, 225, 194, 0 \ 00000126 3204 DC16 1074 \ 00000128 A2E2D700 DC8 162, 226, 215, 0 \ 0000012C 3304 DC16 1075 \ 0000012E A3E3C700 DC8 163, 227, 199, 0 \ 00000132 3404 DC16 1076 \ 00000134 A4E4C400 DC8 164, 228, 196, 0 \ 00000138 3504 DC16 1077 \ 0000013A A5E5C500 DC8 165, 229, 197, 0 \ 0000013E 3604 DC16 1078 \ 00000140 A6E6D600 DC8 166, 230, 214, 0 \ 00000144 3704 DC16 1079 \ 00000146 A7E7DA00 DC8 167, 231, 218, 0 \ 0000014A 3804 DC16 1080 \ 0000014C A8E8C900 DC8 168, 232, 201, 0 \ 00000150 3904 DC16 1081 \ 00000152 A9E9CA00 DC8 169, 233, 202, 0 \ 00000156 3A04 DC16 1082 \ 00000158 AAEACB00 DC8 170, 234, 203, 0 \ 0000015C 3B04 DC16 1083 \ 0000015E ABEBCC00 DC8 171, 235, 204, 0 \ 00000162 3C04 DC16 1084 \ 00000164 ACECCD00 DC8 172, 236, 205, 0 \ 00000168 3D04 DC16 1085 \ 0000016A ADEDCE00 DC8 173, 237, 206, 0 \ 0000016E 3E04 DC16 1086 \ 00000170 AEEECF00 DC8 174, 238, 207, 0 \ 00000174 3F04 DC16 1087 \ 00000176 AFEFD000 DC8 175, 239, 208, 0 \ 0000017A 4004 DC16 1088 \ 0000017C E0F0D200 DC8 224, 240, 210, 0 \ 00000180 4104 DC16 1089 \ 00000182 E1F1D300 DC8 225, 241, 211, 0 \ 00000186 4204 DC16 1090 \ 00000188 E2F2D400 DC8 226, 242, 212, 0 \ 0000018C 4304 DC16 1091 \ 0000018E E3F3D500 DC8 227, 243, 213, 0 \ 00000192 4404 DC16 1092 \ 00000194 E4F4C600 DC8 228, 244, 198, 0 \ 00000198 4504 DC16 1093 \ 0000019A E5F5C800 DC8 229, 245, 200, 0 \ 0000019E 4604 DC16 1094 \ 000001A0 E6F6C300 DC8 230, 246, 195, 0 \ 000001A4 4704 DC16 1095 \ 000001A6 E7F7DE00 DC8 231, 247, 222, 0 \ 000001AA 4804 DC16 1096 \ 000001AC E8F8DB00 DC8 232, 248, 219, 0 \ 000001B0 4904 DC16 1097 \ 000001B2 E9F9DD00 DC8 233, 249, 221, 0 \ 000001B6 4A04 DC16 1098 \ 000001B8 EAFADF00 DC8 234, 250, 223, 0 \ 000001BC 4B04 DC16 1099 \ 000001BE EBFBD900 DC8 235, 251, 217, 0 \ 000001C2 4C04 DC16 1100 \ 000001C4 ECFCD800 DC8 236, 252, 216, 0 \ 000001C8 4D04 DC16 1101 \ 000001CA EDFDDC00 DC8 237, 253, 220, 0 \ 000001CE 4E04 DC16 1102 \ 000001D0 EEFEC000 DC8 238, 254, 192, 0 \ 000001D4 4F04 DC16 1103 \ 000001D6 EFFFD100 DC8 239, 255, 209, 0 \ 000001DA 5204 DC16 1106 \ 000001DC 5F905F00 DC8 95, 144, 95, 0 \ 000001E0 5304 DC16 1107 \ 000001E2 5F835F00 DC8 95, 131, 95, 0 \ 000001E6 5904 DC16 1113 \ 000001E8 5F9A5F00 DC8 95, 154, 95, 0 \ 000001EC 5A04 DC16 1114 \ 000001EE 5F9C5F00 DC8 95, 156, 95, 0 \ 000001F2 5C04 DC16 1116 \ 000001F4 5F9D5F00 DC8 95, 157, 95, 0 \ 000001F8 5B04 DC16 1115 \ 000001FA 5F9E5F00 DC8 95, 158, 95, 0 \ 000001FE 5F04 DC16 1119 \ 00000200 5F9F5F00 DC8 95, 159, 95, 0 \ 00000204 5E04 DC16 1118 \ 00000206 F7A25F00 DC8 247, 162, 95, 0 \ 0000020A 5804 DC16 1112 \ 0000020C 6ABC6A00 DC8 106, 188, 106, 0 \ 00000210 9104 DC16 1169 \ 00000212 A3B4AD00 DC8 163, 180, 173, 0 \ 00000216 5104 DC16 1105 \ 00000218 F1B8A300 DC8 241, 184, 163, 0 \ 0000021C 5404 DC16 1108 \ 0000021E F3BAA400 DC8 243, 186, 164, 0 \ 00000222 5704 DC16 1111 \ 00000224 F5BFA700 DC8 245, 191, 167, 0 \ 00000228 5604 DC16 1110 \ 0000022A 69B3A600 DC8 105, 179, 166, 0 \ 0000022E 5504 DC16 1109 \ 00000230 73BE7300 DC8 115, 190, 115, 0 \ 00000234 A000 DC16 160 \ 00000236 5FA02000 DC8 95, 160, 32, 0 \ 0000023A A400 DC16 164 \ 0000023C 5FA4FD00 DC8 95, 164, 253, 0 \ 00000240 A600 DC16 166 \ 00000242 5FA65F00 DC8 95, 166, 95, 0 \ 00000246 B000 DC16 176 \ 00000248 F8B09C00 DC8 248, 176, 156, 0 \ 0000024C B700 DC16 183 \ 0000024E FAB79E00 DC8 250, 183, 158, 0 \ 00000252 0000 DC16 0 \ 00000254 00000000 DC8 0, 0, 0, 0 1140 { 1141 // CAPITAL Cyrillic letters (base) 1142 0x410,0x80,0xC0,0xE1, // À 1143 0x411,0x81,0xC1,0xE2, // Á 1144 0x412,0x82,0xC2,0xF7, //  1145 0x413,0x83,0xC3,0xE7, // à 1146 0x414,0x84,0xC4,0xE4, // Ä 1147 0x415,0x85,0xC5,0xE5, // Å 1148 0x416,0x86,0xC6,0xF6, // Æ 1149 0x417,0x87,0xC7,0xFA, // Ç 1150 0x418,0x88,0xC8,0xE9, // È 1151 0x419,0x89,0xC9,0xEA, // É 1152 0x41A,0x8A,0xCA,0xEB, // Ê 1153 0x41B,0x8B,0xCB,0xEC, // Ë 1154 0x41C,0x8C,0xCC,0xED, // Ì 1155 0x41D,0x8D,0xCD,0xEE, // Í 1156 0x41E,0x8E,0xCE,0xEF, // Î 1157 0x41F,0x8F,0xCF,0xF0, // Ï 1158 0x420,0x90,0xD0,0xF2, // Ð 1159 0x421,0x91,0xD1,0xF3, // Ñ 1160 0x422,0x92,0xD2,0xF4, // Ò 1161 0x423,0x93,0xD3,0xF5, // Ó 1162 0x424,0x94,0xD4,0xE6, // Ô 1163 0x425,0x95,0xD5,0xE8, // Õ 1164 0x426,0x96,0xD6,0xE3, // Ö 1165 0x427,0x97,0xD7,0xFE, // × 1166 0x428,0x98,0xD8,0xFB, // Ø 1167 0x429,0x99,0xD9,0xFD, // Ù 1168 0x42A,0x9A,0xDA,0xFF, // Ú 1169 0x42B,0x9B,0xDB,0xF9, // Û 1170 0x42C,0x9C,0xDC,0xF8, // Ü 1171 0x42D,0x9D,0xDD,0xFC, // Ý 1172 0x42E,0x9E,0xDE,0xE0, // Þ 1173 0x42F,0x9F,0xDF,0xF1, // ß 1174 // CAPITAL Cyrillic letters (additional) 1175 0x402,'_',0x80,'_', // _ .*.* 1176 0x403,'_',0x81,'_', // _ .*.* 1177 0x409,'_',0x8A,'_', // _ .*.* 1178 0x40A,'_',0x8C,'_', // _ .*.* 1179 0x40C,'_',0x8D,'_', // _ .*.* 1180 0x40B,'_',0x8E,'_', // _ .*.* 1181 0x40F,'_',0x8F,'_', // _ .*.* 1182 0x40E,0xF6,0xA1,'_', // ¡ ...* 1183 0x408,0x4A,0xA3,0x4A, // _ .*.* 1184 0x409,0x83,0xA5,0xBD, // _ .*.. 1185 0x401,0xF0,0xA8,0xB3, // ¨ 1186 0x404,0xF2,0xAA,0xB4, // ª 1187 0x407,0xF4,0xAF,0xB7, // ¯ 1188 0x406,0x49,0xB2,0xB6, // _ .*.. 1189 0x405,0x53,0xBD,0x53, // _ .*.* 1190 // SMALL Cyrillic letters (base) 1191 0x430,0xA0,0xE0,0xC1, // à 1192 0x431,0xA1,0xE1,0xC2, // á 1193 0x432,0xA2,0xE2,0xD7, // â 1194 0x433,0xA3,0xE3,0xC7, // ã 1195 0x434,0xA4,0xE4,0xC4, // ä 1196 0x435,0xA5,0xE5,0xC5, // å 1197 0x436,0xA6,0xE6,0xD6, // æ 1198 0x437,0xA7,0xE7,0xDA, // ç 1199 0x438,0xA8,0xE8,0xC9, // è 1200 0x439,0xA9,0xE9,0xCA, // é 1201 0x43A,0xAA,0xEA,0xCB, // ê 1202 0x43B,0xAB,0xEB,0xCC, // ë 1203 0x43C,0xAC,0xEC,0xCD, // ì 1204 0x43D,0xAD,0xED,0xCE, // í 1205 0x43E,0xAE,0xEE,0xCF, // î 1206 0x43F,0xAF,0xEF,0xD0, // ï 1207 0x440,0xE0,0xF0,0xD2, // ð 1208 0x441,0xE1,0xF1,0xD3, // ñ 1209 0x442,0xE2,0xF2,0xD4, // ò 1210 0x443,0xE3,0xF3,0xD5, // ó 1211 0x444,0xE4,0xF4,0xC6, // ô 1212 0x445,0xE5,0xF5,0xC8, // õ 1213 0x446,0xE6,0xF6,0xC3, // ö 1214 0x447,0xE7,0xF7,0xDE, // ÷ 1215 0x448,0xE8,0xF8,0xDB, // ø 1216 0x449,0xE9,0xF9,0xDD, // ù 1217 0x44A,0xEA,0xFA,0xDF, // ú 1218 0x44B,0xEB,0xFB,0xD9, // û 1219 0x44C,0xEC,0xFC,0xD8, // ü 1220 0x44D,0xED,0xFD,0xDC, // ý 1221 0x44E,0xEE,0xFE,0xC0, // þ 1222 0x44F,0xEF,0xFF,0xD1, // ÿ 1223 // SMALL Cyrillic letters (additional) 1224 0x452,'_',0x90,'_', // _ .*.* 1225 0x453,'_',0x83,'_', // _ .*.* 1226 0x459,'_',0x9A,'_', // _ .*.* 1227 0x45A,'_',0x9C,'_', // _ .*.* 1228 0x45C,'_',0x9D,'_', // _ .*.* 1229 0x45B,'_',0x9E,'_', // _ .*.* 1230 0x45F,'_',0x9F,'_', // _ .*.* 1231 0x45E,0xF7,0xA2,'_', // ¢ ...* 1232 0x458,0x6A,0xBC,0x6A, // _ .*.* 1233 0x491,0xA3,0xB4,0xAD, // _ .*.. 1234 0x451,0xF1,0xB8,0xA3, // ¸ 1235 0x454,0xF3,0xBA,0xA4, // º 1236 0x457,0xF5,0xBF,0xA7, // ¿ 1237 0x456,0x69,0xB3,0xA6, // _ .*.. 1238 0x455,0x73,0xBE,0x73, // _ .*.* 1239 0x0A0,'_',0xA0,0x20, // space .*.. 1240 0x0A4,'_',0xA4,0xFD, // ¤ .*.. 1241 0x0A6,'_',0xA6,'_', // ¦ .*.* 1242 0x0B0,0xF8,0xB0,0x9C, // ° 1243 0x0B7,0xFA,0xB7,0x9E, // · 1244 // 0x2022,,0x95,0x95, //  .*.. 1245 // 0x2116,0xFC,0xB9,0x23, // ¹ ...* 1246 // 0x2219,,0xF9,0x9E, //  .*.. 1247 // 0x221A,0xFB,,0x96, // v ..*. 1248 // 0x25A0,0xFE,,0x94, // ¦ 1249 0x0000,0,0,0 1250 }; 1251 \ In segment DATA_C, align 4, align-sorted 1252 const char wintranslation[128]= 1253 { 1254 0x5F,0x5F,0x27,0x5F,0x22,0x3A,0xC5,0xD8,0x5F,0x25,0x5F,0x3C,0x5F,0x5F,0x5F,0x5F, 1255 0x5F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x5F,0x54,0x5F,0x3E,0x5F,0x5F,0x5F,0x5F, 1256 0xFF,0xF6,0xF7,0x5F,0xFD,0x83,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4, 1257 0xF8,0x2B,'I' ,'i' ,0xA3,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x5F,0x5F,0x5F,0xF5, 1258 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 1259 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 1260 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 1261 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF 1262 }; 1263 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 \ wintranslation: \ 00000100 5F5F275F223A DC8 95, 95, 39, 95, 34, 58, 197, 216, 95, 37, 95, 60, 95, 95, 95, 95 \ C5D85F255F3C \ 5F5F5F5F \ 00000110 5F2727222207 DC8 95, 39, 39, 34, 34, 7, 45, 45, 95, 84, 95, 62, 95, 95, 95, 95, 255 \ 2D2D5F545F3E \ 5F5F5F5FFF \ 00000121 F6F75FFD83B3 DC8 246, 247, 95, 253, 131, 179, 21, 240, 99, 242, 60, 191, 45, 82, 244 \ 15F063F23CBF \ 2D52F4 \ 00000130 F82B4969A3E7 DC8 248, 43, 73, 105, 163, 231, 20, 250, 241, 252, 243, 62, 95, 95, 95 \ 14FAF1FCF33E \ 5F5F5F \ 0000013F F58081828384 DC8 245, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 \ 85868788898A \ 8B \ 0000014C 8C8D8E8F9091 DC8 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152 \ 929394959697 \ 98 \ 00000159 999A9B9C9D9E DC8 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165 \ 9FA0A1A2A3A4 \ A5 \ 00000166 A6A7A8A9AAAB DC8 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 224, 225, 226 \ ACADAEAFE0E1 \ E2 \ 00000173 E3E4E5E6E7E8 DC8 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 \ E9EAEBECEDEE \ EF 1264 { 1265 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 1266 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 1267 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 1268 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 1269 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 1270 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 1271 0x002D,0x002D,0x002D,0x00A6,0x002B,0x00A6,0x00A6,0x00AC, 1272 0x00AC,0x00A6,0x00A6,0x00AC,0x002D,0x002D,0x002D,0x00AC, 1273 0x004C,0x002B,0x0054,0x002B,0x002D,0x002B,0x00A6,0x00A6, 1274 0x004C,0x0433,0x00A6,0x0054,0x00A6,0x003D,0x002B,0x00A6, 1275 0x00A6,0x0054,0x0054,0x004C,0x004C,0x002D,0x0433,0x002B, 1276 0x002B,0x002D,0x002D,0x002D,0x002D,0x00A6,0x00A6,0x002D, 1277 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 1278 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F, 1279 0x0401,0x0451,0x0404,0x0454,0x0407,0x0457,0x040E,0x045E, 1280 0x00B0,0x2022,0x00B7,0x0076,0x2116,0x00A4,0x00A6,0x00A0 1281 }; 1282 const char koi8translation[128]= \ koi8translation: \ 00000180 5F5F275F223A DC8 95, 95, 39, 95, 34, 58, 197, 216, 95, 37, 95, 60, 95, 95, 95, 95 \ C5D85F255F3C \ 5F5F5F5F \ 00000190 5F2727222207 DC8 95, 39, 39, 34, 34, 7, 45, 45, 95, 84, 95, 62, 95, 95, 95, 95, 255 \ 2D2D5F545F3E \ 5F5F5F5FFF \ 000001A1 F6F7F1F35F69 DC8 246, 247, 241, 243, 95, 105, 245, 240, 99, 242, 60, 191, 163, 82 \ F5F063F23CBF \ A352 \ 000001AF F4F82B5FF0F2 DC8 244, 248, 43, 95, 240, 242, 231, 73, 244, 241, 252, 243, 62, 95 \ E749F4F1FCF3 \ 3E5F \ 000001BD 835FF5EEA0A1 DC8 131, 95, 245, 238, 160, 161, 230, 164, 165, 228, 163, 229, 168, 169 \ E6A4A5E4A3E5 \ A8A9 \ 000001CB AAABACADAEAF DC8 170, 171, 172, 173, 174, 175, 239, 224, 225, 226, 227, 166, 162 \ EFE0E1E2E3A6 \ A2 \ 000001D8 ECEBA7E8EDE9 DC8 236, 235, 167, 232, 237, 233, 231, 234, 158, 128, 129, 150, 132 \ E7EA9E808196 \ 84 \ 000001E5 859483958889 DC8 133, 148, 131, 149, 136, 137, 138, 139, 140, 141, 142, 143, 159 \ 8A8B8C8D8E8F \ 9F \ 000001F2 909192938682 DC8 144, 145, 146, 147, 134, 130, 156, 155, 135, 152, 157, 153, 151 \ 9C9B87989D99 \ 97 \ 000001FF 9A DC8 154 1283 { 1284 0x5F,0x5F,0x27,0x5F,0x22,0x3A,0xC5,0xD8,0x5F,0x25,0x5F,0x3C,0x5F,0x5F,0x5F,0x5F, 1285 0x5F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x5F,0x54,0x5F,0x3E,0x5F,0x5F,0x5F,0x5F, 1286 0xFF,0xF6,0xF7,0xF1,0xF3,0x5F,'i' ,0xF5,0xF0,0x63,0xF2,0x3C,0xBF,0xA3,0x52,0xF4, 1287 0xF8,0x2B,0x5F,0xF0,0xF2,0xE7,'I' ,0xF4,0xF1,0xFC,0xF3,0x3E,0x5F,0x83,0x5F,0xF5, 1288 1289 0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE, 1290 0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA, 1291 0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E, 1292 0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A 1293 }; 1294 1295 #pragma inline 1296 unsigned int char16to8(unsigned int c) 1297 { 1298 const TUNICODE2CHAR *p=unicode2char; 1299 unsigned int i; 1300 if (c<128) return(c); 1301 while((i=p->u)) 1302 { 1303 if (c==i) 1304 { 1305 return(p->win); 1306 } 1307 p++; 1308 } 1309 c&=0xFF; 1310 if (c<32) return(' '); 1311 return(c); 1312 } 1313 \ In segment CODE, align 4, keep-with-next 1314 unsigned int char8to16(int c, int type) 1315 { 1316 if (c>=128) \ char8to16: \ 00000000 800050E3 CMP R0,#+128 \ 00000004 1EFF2FB1 BXLT LR 1317 { 1318 switch(type) \ 00000008 30209FE5 LDR R2,??char8to16_0 ;; dos2unicode \ 0000000C 011051E2 SUBS R1,R1,#+1 \ 00000010 0300000A BEQ ??char8to16_1 \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 02008000 ADDEQ R0,R0,R2 \ 0000001C 0001D005 LDRBEQ R0,[R0, #+256] \ 00000020 010000EA B ??char8to16_2 1319 { 1320 case 1: 1321 //Win->Dos 1322 c=wintranslation[c-128]; \ ??char8to16_1: \ 00000024 020080E0 ADD R0,R0,R2 \ 00000028 8000D0E5 LDRB R0,[R0, #+128] 1323 break; 1324 case 2: 1325 //Koi8->Dos 1326 c=koi8translation[c-128]; 1327 break; 1328 } 1329 if (c<128) return(c); \ ??char8to16_2: \ 0000002C 800050E3 CMP R0,#+128 1330 return(dos2unicode[c-128]); \ 00000030 FF10E0A3 MVNGE R1,#+255 \ 00000034 800082A0 ADDGE R0,R2,R0, LSL #+1 \ 00000038 B00091A1 LDRHGE R0,[R1, +R0] 1331 } 1332 return(c); \ 0000003C 1EFF2FE1 BX LR ;; return \ ??char8to16_0: \ 00000040 ........ DC32 dos2unicode 1333 } 1334 1335 /* 1336 void ascii2ws(WSHDR *ws, const char *s) 1337 { 1338 char c; 1339 CutWSTR(ws,0); 1340 while((c=*s++)) 1341 { 1342 wsAppendChar(ws,char8to16(c,1)); 1343 } 1344 }*/ \ In segment CODE, align 4, keep-with-next 1345 unsigned int win2unicode(int letter) 1346 { 1347 if (letter<168) goto L_ENG; \ win2unicode: \ 00000000 A80050E3 CMP R0,#+168 \ 00000004 1EFF2FB1 BXLT LR 1348 if (letter==168) goto L_BIG_YO; 1349 letter-=168; 1350 if (letter<24) goto L_UKR; 1351 if (letter>87) goto L_ENG; 1352 //L_RUS: 1353 letter-=8; 1354 goto L_ADD_400; 1355 L_UKR: 1356 switch(letter) 1357 { 1358 case 0x02: 1359 letter=0x04; 1360 break; 1361 case 10: 1362 letter=6; 1363 break; 1364 case 11: 1365 letter=0x56; 1366 break; 1367 case 16: 1368 letter=0x51; 1369 break; 1370 case 18: 1371 letter=0x54; 1372 break; 1373 case 23: 1374 letter=0x57; 1375 break; 1376 default: 1377 goto L_ENG; 1378 } 1379 goto L_ADD_400; 1380 L_BIG_YO: 1381 letter=0x01; \ 00000008 0100A003 MOVEQ R0,#+1 \ 0000000C 1500000A BEQ ??win2unicode_1 \ 00000010 A710E0E3 MVN R1,#+167 \ 00000014 000081E0 ADD R0,R1,R0 \ 00000018 180050E3 CMP R0,#+24 \ 0000001C 0C0000AA BGE ??win2unicode_2 \ 00000020 021040E2 SUB R1,R0,#+2 \ 00000024 150051E3 CMP R1,#+21 \ 00000028 1EFF2F81 BXHI LR \ 0000002C 012F8FE2 ADR R2,??win2unicode_0 \ 00000030 0120D2E7 LDRB R2,[R2, R1] \ 00000034 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??win2unicode_0: \ 00000038 0A050505 DC8 +10,+5,+5,+5 \ 0000003C 05050505 DC8 +5,+5,+5,+5 \ 00000040 0D0F0505 DC8 +13,+15,+5,+5 \ 00000044 05051105 DC8 +5,+5,+17,+5 \ 00000048 13050505 DC8 +19,+5,+5,+5 \ 0000004C 05150000 DC8 +5,+21,+0,+0 1382 L_ADD_400: 1383 return (letter+0x400); 1384 1385 L_ENG: return (letter); \ ??win2unicode_3: \ 00000050 1EFF2FE1 BX LR ;; return \ ??win2unicode_2: \ 00000054 580050E3 CMP R0,#+88 \ 00000058 1EFF2FA1 BXGE LR \ 0000005C 080040E2 SUB R0,R0,#+8 \ 00000060 000000EA B ??win2unicode_1 \ ??win2unicode_4: \ 00000064 0400A0E3 MOV R0,#+4 \ ??win2unicode_1: \ 00000068 400E80E2 ADD R0,R0,#+1024 \ 0000006C 1EFF2FE1 BX LR \ ??win2unicode_5: \ 00000070 0600A0E3 MOV R0,#+6 \ 00000074 FBFFFFEA B ??win2unicode_1 \ ??win2unicode_6: \ 00000078 5600A0E3 MOV R0,#+86 \ 0000007C F9FFFFEA B ??win2unicode_1 \ ??win2unicode_7: \ 00000080 5100A0E3 MOV R0,#+81 \ 00000084 F7FFFFEA B ??win2unicode_1 \ ??win2unicode_8: \ 00000088 5400A0E3 MOV R0,#+84 \ 0000008C F5FFFFEA B ??win2unicode_1 \ ??win2unicode_9: \ 00000090 5700A0E3 MOV R0,#+87 \ ??win2unicode_10: \ 00000094 F3FFFFEA B ??win2unicode_1 1386 } 1387 1388 \ In segment CODE, align 4, keep-with-next 1389 void ascii2ws(WSHDR *ws, const char *s) 1390 { \ ascii2ws: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 1391 char c; 1392 CutWSTR(ws,0); \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 260100EF SWI +294 \ 00000014 070000EA B ??ascii2ws_0 1393 while((c=*s++)) 1394 { 1395 total_char++; \ ??ascii2ws_1: \ 00000018 ........ LDR R1,??DataTable34 ;; total_char \ 0000001C 002091E5 LDR R2,[R1, #+0] \ 00000020 012082E2 ADD R2,R2,#+1 \ 00000024 002081E5 STR R2,[R1, #+0] 1396 wsAppendChar(ws,win2unicode(c)); \ 00000028 ........ BL win2unicode \ 0000002C 0010A0E1 MOV R1,R0 \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 1C0000EF SWI +28 1397 } \ ??ascii2ws_0: \ 00000038 ........ LDRB R1,[R5], #+1 \ 0000003C 0100B0E1 MOVS R0,R1 \ 00000040 F4FFFF1A BNE ??ascii2ws_1 1398 } \ 00000044 3080BDE8 POP {R4,R5,PC} ;; return 1399 \ In segment CODE, align 4, keep-with-next 1400 void koi2ws(WSHDR *ws, const char *s) 1401 { \ koi2ws: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 1402 char c; 1403 CutWSTR(ws,0); \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 260100EF SWI +294 \ 00000014 080000EA B ??koi2ws_0 1404 while((c=*s++)) 1405 { 1406 total_char++; \ ??koi2ws_1: \ 00000018 ........ LDR R1,??DataTable34 ;; total_char \ 0000001C 002091E5 LDR R2,[R1, #+0] \ 00000020 012082E2 ADD R2,R2,#+1 \ 00000024 002081E5 STR R2,[R1, #+0] 1407 wsAppendChar(ws,char8to16(c,2)); \ 00000028 0210A0E3 MOV R1,#+2 \ 0000002C ........ BL char8to16 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 1C0000EF SWI +28 1408 } \ ??koi2ws_0: \ 0000003C ........ LDRB R1,[R5], #+1 \ 00000040 0100B0E1 MOVS R0,R1 \ 00000044 F3FFFF1A BNE ??koi2ws_1 1409 } \ 00000048 3080BDE8 POP {R4,R5,PC} ;; return 1410 \ In segment CODE, align 4, keep-with-next 1411 void win1251_2ws(WSHDR *ws, const char *s) 1412 { \ win1251_2ws: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 1413 char c; 1414 CutWSTR(ws,0); \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 260100EF SWI +294 \ 00000014 010000EA B ??win1251_2ws_0 1415 while((c=*s++)) 1416 { 1417 total_char++; 1418 wsAppendChar(ws,char16to8(c)); \ ??win1251_2ws_1: \ 00000018 0400A0E1 MOV R0,R4 \ 0000001C 1C0000EF SWI +28 \ ??win1251_2ws_0: \ 00000020 ........ LDRB R0,[R5], #+1 \ 00000024 0010B0E1 MOVS R1,R0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} \ 0000002C ........ LDR R0,??DataTable34 ;; total_char \ 00000030 800051E3 CMP R1,#+128 \ 00000034 002090E5 LDR R2,[R0, #+0] \ 00000038 012082E2 ADD R2,R2,#+1 \ 0000003C 002080E5 STR R2,[R0, #+0] \ 00000040 ........ LDR R0,??DataTable35 ;; unicode2char \ 00000044 0100002A BCS ??win1251_2ws_2 \ 00000048 F2FFFFEA B ??win1251_2ws_1 \ ??win1251_2ws_3: \ 0000004C 060080E2 ADD R0,R0,#+6 \ ??win1251_2ws_2: \ 00000050 B020D0E1 LDRH R2,[R0, #+0] \ 00000054 000052E3 CMP R2,#+0 \ 00000058 0300000A BEQ ??win1251_2ws_4 \ 0000005C 020051E1 CMP R1,R2 \ 00000060 F9FFFF1A BNE ??win1251_2ws_3 \ 00000064 0310D0E5 LDRB R1,[R0, #+3] \ 00000068 EAFFFFEA B ??win1251_2ws_1 \ ??win1251_2ws_4: \ 0000006C 200051E3 CMP R1,#+32 \ 00000070 E8FFFF2A BCS ??win1251_2ws_1 \ 00000074 2010A0E3 MOV R1,#+32 \ 00000078 E6FFFFEA B ??win1251_2ws_1 1419 } 1420 } \ In segment CODE, align 4, keep-with-next \ ??DataTable5: \ 00000000 ........ DC32 unicode2char \ In segment CODE, align 4, keep-with-next \ ??DataTable9: \ 00000000 ........ DC32 per_s \ In segment CODE, align 4, keep-with-next \ ??DataTable12: \ 00000000 ........ DC32 edit_desc + 205 \ In segment CODE, align 4, keep-with-next \ ??DataTable17: \ 00000000 ........ DC32 edit_desc + 168 \ In segment CODE, align 4, keep-with-next \ ??DataTable22: \ 00000000 ........ DC32 edit_desc \ In segment CODE, align 4, keep-with-next \ ??DataTable24: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 menu \ In segment CODE, align 4, keep-with-next \ ??DataTable30: \ 00000000 ........ DC32 edit_desc \ In segment CODE, align 4, keep-with-next \ ??DataTable31: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 total_char \ In segment CODE, align 4, keep-with-next \ ??DataTable35: \ 00000000 ........ DC32 unicode2char \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 00020000 DC32 512 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 01000000.... DC32 1, edit_onkey, edit_ghook, 0H, 0, skt \ ............ \ 000000000000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 080000006400 DC32 8, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ `?`: \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 ............ DC32 MLHico, main_hdr_txt, 2147483647 \ ....FFFFFF7F \ `?`: \ 0000004C 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000054 00000000.... DC32 0H, hdr_txt, 2147483647 \ ....FFFFFF7F \ `?`: \ 00000060 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000064 00000000 DC32 0 \ `?`: \ 00000068 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000078 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000088 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 000000000000 \ 0000 \ `?`: \ 0000009C 00000000 DC32 0 \ `?`: \ 000000A0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000A4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000A8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000AC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000B0 00000000 DC32 0 \ `?`: \ 000000B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000B8 00000000 DC32 0 \ `?`: \ 000000BC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000C0 00000000 DC32 0 \ `?`: \ 000000C4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000C8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000CC 00 DC8 0 \ `?`: \ 000000CD 00 DC8 0 \ 000000CE 0000 DC8 0, 0 \ `?`: \ 000000D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000100 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000110 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000120 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000130 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000140 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000150 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000160 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000170 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000180 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000190 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001A0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000001B0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000200 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000210 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000220 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000230 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000240 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000250 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 0000025C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000026C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000027C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000028C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000029C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000002AC FF0F0000 DC16 4095, 0 \ 000002B0 ........ DC32 `?`: \ 000002B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000304 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000314 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000324 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000334 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000344 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000354 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000364 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000374 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000384 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000394 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000404 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000414 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000424 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000434 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000444 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000454 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000464 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000474 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000484 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000494 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000504 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000514 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000524 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000534 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000544 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000554 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000564 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000574 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000584 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000594 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000604 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000614 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000624 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000634 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000644 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000654 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000664 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000674 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000684 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000694 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000704 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000714 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000724 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000734 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000744 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000754 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000764 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000774 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000784 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000794 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ............ DC32 `?`, `?` \ .... \ 00000008 ............ DC32 `?`, `?` \ .... \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 EEF8E8E1EAE0 DC8 "\356\370\350\341\352\340" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C2FBF5EEE400 DC8 "\302\373\365\356\344" \ 00000006 0000 DC8 0, 0 \ 00000008 C2E2EEE42054 DC8 "\302\342\356\344 T9:" \ 393A00 \ 00000011 000000 DC8 0, 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 3C4300 DC8 "`: \ 00000000 25735C257300 DC8 "%s\\%s" \ 00000006 0000 DC8 0, 0 \ 00000008 253032582E6D DC8 "%02X.mrk" \ 726B00 \ 00000011 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 343A5C4E6F74 DC8 "4:\\NoteMan\\log" \ 654D616E5C6C \ 6F6700 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 D3E4E0EBE8F2 DC8 "\323\344\340\353\350\362\374" \ FC00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E6F74653300 DC8 "Note3" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E6F74653200 DC8 "Note2" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E6F74653100 DC8 "Note1" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E6F74653000 DC8 "Note0" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 200A00 DC8 " \012" \ In segment DATA_C, align 4, align-sorted \ `? 80 ws_name 4 UpdateCSMname 24 edit_desc 1972 curdir 16 skt 8 Load 308 main 192 unicode2char 600 dos2unicode 512 char8to16 68 win2unicode 152 ascii2ws 72 koi2ws 76 win1251_2ws 124 ??DataTable5 4 ??DataTable9 4 ??DataTable12 4 ??DataTable17 4 ??DataTable22 4 ??DataTable24 4 ??DataTable27 4 ??DataTable30 4 ??DataTable31 4 ??DataTable34 4 ??DataTable35 4 ? 4 ? 1972 ? 16 ? 8 ? 8 ? 20 ? 3 ? 4 ? 3 ? 20 ? 16 ? 8 ? 8 ? 8 ? 8 ? 8 ? 3 ? 3 ?