diff --git a/programs/develop/tinypad/trunk/build_en.bat b/programs/develop/tinypad/trunk/build_en.bat index a7f8c7d841..fc5a855cba 100644 --- a/programs/develop/tinypad/trunk/build_en.bat +++ b/programs/develop/tinypad/trunk/build_en.bat @@ -1,5 +1,5 @@ @erase lang.inc @echo lang fix en >lang.inc -@fasm tinypad.asm tinypad +@fasm tinypad.asm tinypad.bin @erase lang.inc @pause \ No newline at end of file diff --git a/programs/develop/tinypad/trunk/build_ru.bat b/programs/develop/tinypad/trunk/build_ru.bat index ac50280a8e..e2d253d96a 100644 --- a/programs/develop/tinypad/trunk/build_ru.bat +++ b/programs/develop/tinypad/trunk/build_ru.bat @@ -1,5 +1,5 @@ @erase lang.inc @echo lang fix ru >lang.inc -@fasm tinypad.asm tinypad +@fasm tinypad.asm tinypad.bin @erase lang.inc @pause \ No newline at end of file diff --git a/programs/develop/tinypad/trunk/helpwnd.asm b/programs/develop/tinypad/trunk/helpwnd.asm deleted file mode 100644 index 4fc6c78831..0000000000 --- a/programs/develop/tinypad/trunk/helpwnd.asm +++ /dev/null @@ -1,57 +0,0 @@ -help_thread_start: - call draw_help_wnd - - still_hw: - cmp [main_closed],1 - je exit_hw - mcall 10 - cmp eax,1 - je help_thread_start - cmp eax,2 - je key_hw - cmp eax,3 - je button_hw - jmp still_hw - - key_hw: - mcall ;2 - cmp ah, 27 - jne still_hw - - button_hw: - mcall 17 - exit_hw: - mcall -1 - -func draw_help_wnd - mcall 12,1 - - mcall 48,3,sc,sizeof.system_colors - - mov ecx,[skinh] - add ecx,200*65536+(5+10*2+16*10) - mov edx,[sc.work] - or edx,0x03000000 - mcall 0,<200,10+10*2+help_text.maxl*6> - - mov ebx,[skinh] - shr ebx,1 - adc ebx,1+0x000A0000-4 - mcall 4,,[sc.grab_text],help_title,help_title.size - - mov eax,4 - mov ebx,[skinh] - add ebx,0x000F000A - xor ecx,ecx - mov edx,help_text - @@: inc edx - movzx esi,byte[edx-1] - mcall - add ebx,10 - add edx,esi - cmp byte[edx],0 - jne @b - - mcall 12,2 - ret -endf \ No newline at end of file diff --git a/programs/develop/tinypad/trunk/tinypad.asm b/programs/develop/tinypad/trunk/tinypad.asm index 5a9128567a..851b510132 100644 --- a/programs/develop/tinypad/trunk/tinypad.asm +++ b/programs/develop/tinypad/trunk/tinypad.asm @@ -2,13 +2,13 @@ ; project name: TINYPAD ; compiler: flat assembler 1.67.1 ; memory to compile: 2.0/7.0 MBytes (without/with size optimizations) -; version: 4.0.3 -; last update: 2006-08-28 (Aug 28, 2006) +; version: 4.0.4 pre +; last update: 2006-12-30 (Dec 30, 2006) ; minimal kernel: revision #138 (svn://kolibrios.org/kernel) ;----------------------------------------------------------------------------- ; originally by: Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi -; maintained by: Ivan Poddubny >> ivan-yar@bk.ru -; Mike Semenyako >> mike.dld@gmail.com +; maintained by: Mike Semenyako >> mike.dld@gmail.com +; Ivan Poddubny >> ivan-yar@bk.ru ;----------------------------------------------------------------------------- ; TODO: ; - optimize drawing (reduce flickering) @@ -19,15 +19,22 @@ ; - other bugfixes and speed/size optimizations ; ; HISTORY: +; 4.0.4 pre (mike.dld) +; bug-fixes: +; - clear statusbar text if dialog operation cancelled +; changes: +; - modified/saved colors now match those in MSVS +; new features: +; - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor) ; 4.0.3 (mike.dld) ; bug-fixes: ; - 1-char selection if pressing out of real line length ; - fault in `writepos`, added call to function 9 ; - main menu items weren't highlighted if popup opened and cursor -; isn't in menu item's area +; isn't in main menu item's area ; - statusbar and textboxes drawing fixes (wrong colors) ; - perform no redraw while pressing Shift, Ctrl, Alt keys -; - data length from DOCPAK in string representation (fix by diamond) +; - data length from DOCPAK in string representation (fixed by diamond) ; changes: ; - function 70 instead of 58 for files loading/saving ; - clientarea-relative drawing (less code) @@ -142,19 +149,21 @@ include 'tinypad.inc' header '01',1,@CODE,TINYPAD_END,AREA_ENDMEM,MAIN_STACK,@PARAMS,self_path +APP_VERSION equ '4.0.4 pre' + ;include 'debug.inc' -ASEPC = '-' ; separator character (char) -ATOPH = POP_IHEIGHT+2 ; menu bar height (pixels) +ASEPC = '-' ; separator character (char) +ATOPH = POP_IHEIGHT+2 ; menu bar height (pixels) ;OLEFT = 50+1 ; left offset (pixels) !!! don't change !!! -SCRLW = 16 ; scrollbar widht/height (pixels) -ATABW = 8 ; tab width (chars) -LINEH = 10 ; line height (pixels) -PATHL = 255 ; maximum path length (chars) !!! don't change !!! -AMINS = 8 ; minimal scroll thumb size (pixels) -LCHGW = 2 ; changed/saved marker width +SCRLW = 16 ; scrollbar widht/height (pixels) +ATABW = 8 ; tab width (chars) +LINEH = 10 ; line height (pixels) +PATHL = 255 ; maximum path length (chars) !!! don't change !!! +AMINS = 8 ; minimal scroll thumb size (pixels) +LCHGW = 2 ; changed/saved marker width -STATH = 14 ; status bar height +STATH = 14 ; status bar height MEV_LDOWN = 1 MEV_LUP = 2 @@ -167,16 +176,16 @@ section @OPTIONS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;----------------------------------------------------------------------------- label color_tbl dword - RGB( 0, 0, 0) ; RGB( 0, 0, 0) ; RGB( 0, 0, 0) ; text - RGB( 0,144, 0) ; RGB( 0,144, 0) ; RGB( 0,160, 0) ; numbers - RGB(176, 0, 0) ; RGB(160, 0, 0) ; RGB( 0,128,255) ; strings + RGB( 0, 0, 0) ; RGB( 0, 0, 0) ; RGB( 0, 0, 0) ; text + RGB( 0,144, 0) ; RGB( 0,144, 0) ; RGB( 0,160, 0) ; numbers + RGB(176, 0, 0) ; RGB(160, 0, 0) ; RGB( 0,128,255) ; strings RGB(128,128,128) ; RGB(144,144,144) ; RGB(160,160,160) ; comments RGB( 48, 48,240) ; RGB( 48, 48,240) ; RGB(255, 0, 0) ; symbols RGB(255,255,255) ; RGB(224,224,224) ; RGB(255,255,255) ; background RGB(255,255,255) ; RGB(255,255,255) ; RGB(255,255,255) ; selection text RGB( 10, 36,106) ; RGB( 0, 0,128) ; RGB( 0, 64,128) ; selection background - RGB( 0,255, 0) ; modified line marker - RGB(255,255, 0) ; saved line marker + RGB(255,255, 0) ; modified line marker + RGB( 0,255, 0) ; saved line marker ins_mode db 1 @@ -205,94 +214,94 @@ section @CODE ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; sub eax,[mainwnd_pos.y] ; mov [mainwnd_pos.h],eax - cld - mov edi,@UDATA - mov ecx,@PARAMS-@UDATA - mov al,0 - rep stosb + cld + mov edi,@UDATA + mov ecx,@PARAMS-@UDATA + mov al,0 + rep stosb inc [do_not_draw] - mov [left_ofs],40+1 - mov [f_info+4],0 - mov [f_info+12],AREA_TEMP - mov [f_info+16],AREA_EDIT-AREA_TEMP + mov [left_ofs],40+1 + mov [f_info+4],0 + mov [f_info+12],AREA_TEMP + mov [f_info+16],AREA_EDIT-AREA_TEMP - mov esi,s_example - mov edi,tb_opensave.text - mov ecx,s_example.size - mov [tb_opensave.length],cl - rep movsb + mov esi,s_example + mov edi,tb_opensave.text + mov ecx,s_example.size + mov [tb_opensave.length],cl + rep movsb - mov esi,s_still - mov edi,s_search - mov ecx,s_still.size - mov [s_search.size],ecx - rep movsb + mov esi,s_still + mov edi,s_search + mov ecx,s_still.size + mov [s_search.size],ecx + rep movsb - cmp byte[@PARAMS],0 - jz no_params + cmp byte[@PARAMS],0 + jz no_params ;// Willow's code to support DOCPAK [ - cmp byte[@PARAMS],'*' - jne .noipc + cmp byte[@PARAMS],'*' + jne .noipc ;// diamond [ (convert size from decimal representation to dword) ;-- mov edx,dword[@PARAMS+1] - mov esi,@PARAMS+1 - xor edx,edx - xor eax,eax + mov esi,@PARAMS+1 + xor edx,edx + xor eax,eax @@: lodsb - test al,al - jz @f - lea edx,[edx*4+edx] - lea edx,[edx*2+eax-'0'] - jmp @b + test al,al + jz @f + lea edx,[edx*4+edx] + lea edx,[edx*2+eax-'0'] + jmp @b @@: ;// diamond ] - add edx,20 - mcall 60,1,AREA_TEMP-16 ; 0x10000-16 - mov dword[AREA_TEMP-16+4],8 ; [0x10000-16+4],8 - mcall 40,1000000b - mcall 23,200 - cmp eax,7 - jne key.alt_x.close ; ¤Єю эр mcall -1 ьхЄър - mov esi,AREA_TEMP-16 ; 0x10000-16 - mov byte[esi],1 - mov eax,[esi+12] - inc eax - call load_file.file_found - jmp @f + add edx,20 + mcall 60,1,AREA_TEMP-16 ; 0x10000-16 + mov dword[AREA_TEMP-16+4],8 ; [0x10000-16+4],8 + mcall 40,1000000b + mcall 23,200 + cmp eax,7 + jne key.alt_x.close ; ¤Єю эр mcall -1 ьхЄър + mov esi,AREA_TEMP-16 ; 0x10000-16 + mov byte[esi],1 + mov eax,[esi+12] + inc eax + call load_file.file_found + jmp @f .noipc: ;// Willow's code to support DOCPAK ] ; parameters are at @PARAMS - mov esi,@PARAMS - mov edi,tb_opensave.text - mov ecx,PATHL - rep movsb - mov edi,tb_opensave.text - mov ecx,PATHL - xor al,al - repne scasb - jne key.alt_x.close - lea eax,[edi-tb_opensave.text-1] - mov [tb_opensave.length],al + mov esi,@PARAMS + mov edi,tb_opensave.text + mov ecx,PATHL + rep movsb + mov edi,tb_opensave.text + mov ecx,PATHL + xor al,al + repne scasb + jne key.alt_x.close + lea eax,[edi-tb_opensave.text-1] + mov [tb_opensave.length],al no_params: - call btn.load_file;do_load_file - jnc @f - call new_file + call btn.load_file;do_load_file + jnc @f + call new_file @@: dec [do_not_draw] - mcall 66,1,1 - mcall 40,00100111b + mcall 66,1,1 + mcall 40,00100111b red: - call drawwindow + call drawwindow call check_inv_all.skip_check ;----------------------------------------------------------------------------- @@ -301,125 +310,125 @@ still: call writepos ; write current position & number of strings .skip_write: - mcall 10;23,50; wait here until event - cmp [main_closed],0 - jne key.alt_x - dec eax ; redraw ? - jz red - dec eax ; key ? - jz key - dec eax ; button ? - jz button - sub eax,3 ; mouse ? - jz mouse + mcall 10;23,50; wait here until event + cmp [main_closed],0 + jne key.alt_x + dec eax ; redraw ? + jz red + dec eax ; key ? + jz key + dec eax ; button ? + jz button + sub eax,3 ; mouse ? + jz mouse - jmp still.skip_write + jmp still.skip_write ;----------------------------------------------------------------------------- func start_fasm ;///////////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- ; BL = run after compile ;----------------------------------------------------------------------------- - cmp [asm_mode],0 - jne @f - ret - @@: mov esi,f_info.path ; s_fname - mov edi,fasm_parameters + cmp [asm_mode],0 + jne @f + ret + @@: mov esi,f_info.path ; s_fname + mov edi,fasm_parameters - cmp byte[esi],'/' - je .yes_systree + cmp byte[esi],'/' + je .yes_systree - mov ecx,[f_info.length] ; [s_fname.size] - rep movsb + mov ecx,[f_info.length] ; [s_fname.size] + rep movsb - mov al,',' - stosb + mov al,',' + stosb - mov ecx,[f_info.length] ; [s_fname.size] - add ecx,-4 - mov esi,f_info.path ; s_fname - rep movsb + mov ecx,[f_info.length] ; [s_fname.size] + add ecx,-4 + mov esi,f_info.path ; s_fname + rep movsb - mov al,',' - stosb + mov al,',' + stosb - mov dword[edi],'/RD/' - mov word[edi+4],'1/' - add edi,6 + mov dword[edi],'/RD/' + mov word[edi+4],'1/' + add edi,6 - mov al,0 - stosb + mov al,0 + stosb - jmp .run + jmp .run .yes_systree: - mov eax,[f_info.length] - add esi,eax ; [s_fname.size] - dec esi + mov eax,[f_info.length] + add esi,eax ; [s_fname.size] + dec esi - xor ecx,ecx - mov al,'/' - @@: cmp [esi],al - je @f - dec esi - inc ecx - jmp @b - @@: inc esi + xor ecx,ecx + mov al,'/' + @@: cmp [esi],al + je @f + dec esi + inc ecx + jmp @b + @@: inc esi - push esi esi ecx + push esi esi ecx - rep movsb + rep movsb - mov al,',' - stosb + mov al,',' + stosb - pop ecx esi + pop ecx esi - add ecx,-4 - rep movsb + add ecx,-4 + rep movsb - mov al,',' - stosb + mov al,',' + stosb - pop ecx - sub ecx,f_info.path ; s_fname - mov esi,f_info.path ; s_fname + pop ecx + sub ecx,f_info.path ; s_fname + mov esi,f_info.path ; s_fname - rep movsb + rep movsb - mov al,0 - stosb + mov al,0 + stosb .run: - cmp bl,0 ; run outfile ? - je @f - mov dword[edi-1],',run' - mov byte[edi+3],0 + cmp bl,0 ; run outfile ? + je @f + mov dword[edi-1],',run' + mov byte[edi+3],0 @@: - mov ebx, fasm_start + mov ebx, fasm_start start_ret: - mov eax, 70 - int 0x40 - ret + mov eax, 70 + int 0x40 + ret endf ;----------------------------------------------------------------------------- func open_debug_board ;/////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- - mov ebx, board_start - jmp start_ret + mov ebx, board_start + jmp start_ret endf ;----------------------------------------------------------------------------- func open_sysfuncs_txt ;////////////////////////////////////////////////////// ;----------------------------------------------------------------------------- - mov ebx, docpak_start - call start_ret - cmp eax,0xfffffff0 - jb @f - mov ebx, tinypad_start - mov dword [ebx+8], sysfuncs_filename - call start_ret + mov ebx, docpak_start + call start_ret + cmp eax,0xfffffff0 + jb @f + mov ebx, tinypad_start + mov dword [ebx+8], sysfuncs_filename + call start_ret @@: ret endf @@ -450,56 +459,57 @@ endf ;endf func set_opt - test [options],al - je @f - not al - and [options],al - ret - @@: or [options],al - ret + test [options],al + je @f + not al + and [options],al + ret + @@: or [options],al + ret endf func set_line_numbers - mov al,OPTS_LINENUMS - call set_opt - ret + mov al,OPTS_LINENUMS + call set_opt + ret endf func set_optimal_fill - mov al,OPTS_OPTIMSAVE - call set_opt - ret + mov al,OPTS_OPTIMSAVE + call set_opt + ret endf func set_auto_indents - mov al,OPTS_AUTOINDENT - call set_opt - ret + mov al,OPTS_AUTOINDENT + call set_opt + ret endf func set_auto_braces - mov al,OPTS_AUTOBRACES - call set_opt - ret + mov al,OPTS_AUTOBRACES + call set_opt + ret endf func set_secure_sel - mov al,OPTS_SECURESEL - call set_opt - ret + mov al,OPTS_SECURESEL + call set_opt + ret endf ;----------------------------------------------------------------------------- include 'tp-draw.asm' include 'tp-key.asm' -include 'tp-butto.asm' +include 'tp-button.asm' include 'tp-mouse.asm' include 'tp-files.asm' -include 'tp-commo.asm' -include 'tp-dialo.asm' +include 'tp-common.asm' +include 'tp-dialog.asm' include 'tp-popup.asm' include 'tp-tbox.asm' +include 'tp-recode.asm' ;include 'lib-ini.asm' @@ -524,55 +534,55 @@ key0 db \ 0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00 times 12*16 db 0x00 -accel_table dd \ - 0x0000000E,key.bkspace ,\ ; BackSpace - 0x0000000F,key.tab ,\ ; Tab - 0x0000001C,key.return ,\ ; Return - 0x0000003D,key.f3 ,\ ; F3 - 0x00000043,key.f9 ,\ ; F9 - 0x00000147,key.home ,\ ; Home - 0x00000148,key.up ,\ ; Up - 0x00000149,key.pgup ,\ ; PageUp - 0x0000014B,key.left ,\ ; Left - 0x0000014D,key.right ,\ ; Right - 0x0000014F,key.end ,\ ; End - 0x00000150,key.down ,\ ; Down - 0x00000151,key.pgdn ,\ ; PageDown - 0x00000152,key.ins ,\ ; Insert - 0x00000153,key.del ,\ ; Delete - 0x00010147,key.shift_home ,\ ; Shift+Home - 0x00010148,key.shift_up ,\ ; Shift+Up - 0x00010149,key.shift_pgup ,\ ; Shift+PageUp - 0x0001014B,key.shift_left ,\ ; Shift+Left - 0x0001014D,key.shift_right ,\ ; Shift+Right - 0x0001014F,key.shift_end ,\ ; Shift+End - 0x00010150,key.shift_down ,\ ; Shift+Down - 0x00010151,key.shift_pgdn ,\ ; Shift+PageDown - 0x00010153,key.del ,\ ; Shift+Delete - 0x00020015,key.ctrl_y ,\ ; Ctrl+Y - 0x00020018,key.ctrl_o ,\ ; Ctrl+O - 0x0002001E,key.ctrl_a ,\ ; Ctrl+A - 0x0002001F,key.ctrl_s ,\ ; Ctrl+S - 0x00020020,key.ctrl_d ,\ ; Ctrl+D - 0x00020021,key.ctrl_f ,\ ; Ctrl+F - 0x00020022,key.ctrl_g ,\ ; Ctrl+G - 0x00020023,key.ctrl_h ,\ ; Ctrl+H +accel_table dd \ + 0x0000000E,key.bkspace ,\ ; BackSpace + 0x0000000F,key.tab ,\ ; Tab + 0x0000001C,key.return ,\ ; Return + 0x0000003D,key.f3 ,\ ; F3 + 0x00000043,key.f9 ,\ ; F9 + 0x00000147,key.home ,\ ; Home + 0x00000148,key.up ,\ ; Up + 0x00000149,key.pgup ,\ ; PageUp + 0x0000014B,key.left ,\ ; Left + 0x0000014D,key.right ,\ ; Right + 0x0000014F,key.end ,\ ; End + 0x00000150,key.down ,\ ; Down + 0x00000151,key.pgdn ,\ ; PageDown + 0x00000152,key.ins ,\ ; Insert + 0x00000153,key.del ,\ ; Delete + 0x00010147,key.shift_home ,\ ; Shift+Home + 0x00010148,key.shift_up ,\ ; Shift+Up + 0x00010149,key.shift_pgup ,\ ; Shift+PageUp + 0x0001014B,key.shift_left ,\ ; Shift+Left + 0x0001014D,key.shift_right ,\ ; Shift+Right + 0x0001014F,key.shift_end ,\ ; Shift+End + 0x00010150,key.shift_down ,\ ; Shift+Down + 0x00010151,key.shift_pgdn ,\ ; Shift+PageDown + 0x00010153,key.del ,\ ; Shift+Delete + 0x00020015,key.ctrl_y ,\ ; Ctrl+Y + 0x00020018,key.ctrl_o ,\ ; Ctrl+O + 0x0002001E,key.ctrl_a ,\ ; Ctrl+A + 0x0002001F,key.ctrl_s ,\ ; Ctrl+S + 0x00020020,key.ctrl_d ,\ ; Ctrl+D + 0x00020021,key.ctrl_f ,\ ; Ctrl+F + 0x00020022,key.ctrl_g ,\ ; Ctrl+G + 0x00020023,key.ctrl_h ,\ ; Ctrl+H \;0x00020026,key.ctrl_l ,\ ; Ctrl+L - 0x0002002D,key.ctrl_x ,\ ; Ctrl+X - 0x0002002E,key.ctrl_c ,\ ; Ctrl+C - 0x0002002F,key.ctrl_v ,\ ; Ctrl+V - 0x00020031,key.ctrl_n ,\ ; Ctrl+N - 0x00020043,key.ctrl_f9 ,\ ; Ctrl+F9 - 0x00020147,key.ctrl_home ,\ ; Ctrl+Home + 0x0002002D,key.ctrl_x ,\ ; Ctrl+X + 0x0002002E,key.ctrl_c ,\ ; Ctrl+C + 0x0002002F,key.ctrl_v ,\ ; Ctrl+V + 0x00020031,key.ctrl_n ,\ ; Ctrl+N + 0x00020043,key.ctrl_f9 ,\ ; Ctrl+F9 + 0x00020147,key.ctrl_home ,\ ; Ctrl+Home \;0x00020148,key.ctrl_up ,\ ; Ctrl+Up - 0x00020149,key.ctrl_pgup ,\ ; Ctrl+PageUp - 0x0002014B,key.ctrl_left ,\ ; Ctrl+Left - 0x0002014D,key.ctrl_right ,\ ; Ctrl+Right - 0x0002014F,key.ctrl_end ,\ ; Ctrl+End + 0x00020149,key.ctrl_pgup ,\ ; Ctrl+PageUp + 0x0002014B,key.ctrl_left ,\ ; Ctrl+Left + 0x0002014D,key.ctrl_right ,\ ; Ctrl+Right + 0x0002014F,key.ctrl_end ,\ ; Ctrl+End \;0x00020150,key.ctrl_down ,\ ; Ctrl+Down - 0x00020151,key.ctrl_pgdn ,\ ; Ctrl+PageDown - 0x00020153,key.del ,\ ; Ctrl+Del - 0x0003001F,key.shift_ctrl_s ,\ ; Shift+Ctrl+S + 0x00020151,key.ctrl_pgdn ,\ ; Ctrl+PageDown + 0x00020153,key.del ,\ ; Ctrl+Del + 0x0003001F,key.shift_ctrl_s ,\ ; Shift+Ctrl+S 0x00030147,key.shift_ctrl_home ,\ ; Shift+Ctrl+Home \;0x00030148,key.shift_ctrl_up ,\ ; Shift+Ctrl+Up 0x00030149,key.shift_ctrl_pgup ,\ ; Shift+Ctrl+PageUp @@ -581,44 +591,44 @@ accel_table dd \ 0x0003014F,key.shift_ctrl_end ,\ ; Shift+Ctrl+End \;0x00030150,key.shift_ctrl_down ,\ ; Shift+Ctrl+Down 0x00030151,key.shift_ctrl_pgdn ,\ ; Shift+Ctrl+PageDown - 0x0004002D,key.alt_x ,\ ; Alt+X + 0x0004002D,key.alt_x ,\ ; Alt+X 0 -accel_table_textbox dd \ +accel_table_textbox dd \ \;0x00000001,key.tb.escape ,\ ; Escape - 0x0000000E,key.tb.bkspace ,\ ; BackSpace + 0x0000000E,key.tb.bkspace ,\ ; BackSpace \;0x0000000F,key.tb.tab ,\ ; Tab \;0x0000001C,key.tb.return ,\ ; Return - 0x00000147,key.tb.home ,\ ; Home - 0x0000014B,key.tb.left ,\ ; Left - 0x0000014D,key.tb.right ,\ ; Right - 0x0000014F,key.tb.end ,\ ; End - 0x00000153,key.tb.del ,\ ; Delete - 0x00010147,key.tb.shift_home ,\ ; Shift+Home - 0x0001014B,key.tb.shift_left ,\ ; Shift+Left + 0x00000147,key.tb.home ,\ ; Home + 0x0000014B,key.tb.left ,\ ; Left + 0x0000014D,key.tb.right ,\ ; Right + 0x0000014F,key.tb.end ,\ ; End + 0x00000153,key.tb.del ,\ ; Delete + 0x00010147,key.tb.shift_home ,\ ; Shift+Home + 0x0001014B,key.tb.shift_left ,\ ; Shift+Left 0x0001014D,key.tb.shift_right ,\ ; Shift+Right - 0x0001014F,key.tb.shift_end ,\ ; Shift+End - 0x00010153,key.tb.del ,\ ; Shift+Del + 0x0001014F,key.tb.shift_end ,\ ; Shift+End + 0x00010153,key.tb.del ,\ ; Shift+Del 0 -accel_table2 dd \ +accel_table2 dd \ 1,btn.close_main_window ,\ \;10000,btn.compile ,\ \;10001,btn.compile_run ,\ \;10002,btn.debug_board ,\ \;10003,btn.sysfuncs_txt ,\ - 'UP',btn.scroll_up ,\ - 'DN',btn.scroll_down ,\ - 'LT',btn.scroll_left ,\ + 'UP',btn.scroll_up ,\ + 'DN',btn.scroll_down ,\ + 'LT',btn.scroll_left ,\ 'RT',btn.scroll_right ,\ \;5,key.ctrl_o ,\ 0 -accel_table2_botdlg dd \ +accel_table2_botdlg dd \ 1,btn.close_main_window ,\ - 20001,btn.bot.cancel ,\ + 20001,btn.bot.cancel ,\ 20002,btn.bot.opensave ,\ - 20003,btn.bot.find ,\ + 20003,btn.bot.find ,\ 0 add_table: @@ -641,33 +651,33 @@ sz s_still ,'still' ;sz param_setup,'LANG',0 ; parameter for SETUP fasm_start: - dd 7 - dd 0 - dd fasm_parameters - dd 0 - dd 0 - db '/RD/1/DEVELOP/FASM',0 + dd 7 + dd 0 + dd fasm_parameters + dd 0 + dd 0 + db '/RD/1/DEVELOP/FASM',0 board_start: - dd 7 - dd 0 - dd 0 - dd 0 - dd 0 - db '/RD/1/BOARD',0 + dd 7 + dd 0 + dd 0 + dd 0 + dd 0 + db '/RD/1/BOARD',0 tinypad_start: - dd 7 - dd 0 - dd ? - dd 0 - dd 0 - db '/RD/1/TINYPAD',0 + dd 7 + dd 0 + dd ? + dd 0 + dd 0 + db '/RD/1/TINYPAD',0 docpak_start: - dd 7 - dd 0 - dd sysfuncs_param - dd 0 - dd 0 - db '/RD/1/DOCPAK',0 + dd 7 + dd 0 + dd sysfuncs_param + dd 0 + dd 0 + db '/RD/1/DOCPAK',0 ;sz setup ,'SETUP ' ; to change keyboard layout @@ -677,7 +687,7 @@ lsz sysfuncs_filename,\ ru,<'SYSFUNCR.TXT',0>,\ en,<'SYSFUNCS.TXT',0> -sz htext,'TINYPAD 4.0.3' +sz htext,'TINYPAD ',APP_VERSION lszc help_text,b,\ ru,'КОМАНДЫ:',\ @@ -716,98 +726,119 @@ lszc help_text,b,\ db 0 menubar_res main_menu,\ - ru,'Файл' ,popup_file ,onshow.file ,\ - ru,'Правка',popup_edit ,onshow.edit ,\ - ru,'Поиск' ,popup_search ,onshow.search ,\ - ru,'Запуск',popup_run ,onshow.run ,\ - ru,'Опции' ,popup_options,onshow.options,\ + ru,'Файл' ,popup_file ,onshow.file ,\ + ru,'Правка' ,popup_edit ,onshow.edit ,\ + ru,'Поиск' ,popup_search ,onshow.search ,\ + ru,'Запуск' ,popup_run ,onshow.run ,\ + ru,'Кодировка',popup_recode ,onshow.recode ,\ + ru,'Опции' ,popup_options,onshow.options,\ \ - en,'File' ,popup_file ,onshow.file ,\ - en,'Edit' ,popup_edit ,onshow.edit ,\ - en,'Search' ,popup_search ,onshow.search,\ - en,'Run' ,popup_run ,onshow.run ,\ - en,'Options',popup_options,onshow.options + en,'File' ,popup_file ,onshow.file ,\ + en,'Edit' ,popup_edit ,onshow.edit ,\ + en,'Search' ,popup_search ,onshow.search ,\ + en,'Run' ,popup_run ,onshow.run ,\ + en,'Encoding',popup_recode ,onshow.recode ,\ + en,'Options' ,popup_options,onshow.options popup_res popup_file,\ - ru,'Новый' ,'Ctrl+N' ,key.ctrl_n ,\ + ru,'Новый' ,'Ctrl+N' ,key.ctrl_n ,\ ru,'Открыть...' ,'Ctrl+O' ,key.ctrl_o ,\ ru,'Сохранить' ,'Ctrl+S' ,key.ctrl_s ,\ ru,'Сохранить как...','Ctrl+Shift+S',key.shift_ctrl_s,\ - ru,'-' ,'' ,0 ,\ - ru,'Выход' ,'Alt+X' ,key.alt_x ,\ + ru,'-' ,'' ,0 ,\ + ru,'Выход' ,'Alt+X' ,key.alt_x ,\ \ - en,'New' ,'Ctrl+N' ,key.ctrl_n ,\ - en,'Open...' ,'Ctrl+O' ,key.ctrl_o ,\ - en,'Save' ,'Ctrl+S' ,key.ctrl_s ,\ + en,'New' ,'Ctrl+N' ,key.ctrl_n ,\ + en,'Open...' ,'Ctrl+O' ,key.ctrl_o ,\ + en,'Save' ,'Ctrl+S' ,key.ctrl_s ,\ en,'Save as...','Ctrl+Shift+S',key.shift_ctrl_s,\ - en,'-' ,'' ,0 ,\ - en,'Exit' ,'Alt+X' ,key.alt_x + en,'-' ,'' ,0 ,\ + en,'Exit' ,'Alt+X' ,key.alt_x popup_res popup_edit,\ ru,'Вырезать' ,'Ctrl+X',key.ctrl_x,\ ru,'Копировать' ,'Ctrl+C',key.ctrl_c,\ ru,'Вставить' ,'Ctrl+V',key.ctrl_v,\ - ru,'Удалить' ,'' ,key.del ,\ - ru,'-' ,'' ,0 ,\ + ru,'Удалить' ,'' ,key.del ,\ + ru,'-' ,'' ,0 ,\ ru,'Выделить всё','Ctrl+A',key.ctrl_a,\ \; ru,'-' ,'' ,0 ,\ \; ru,'Вертикальное выделение','Alt+Ins',0 ,\ \ - en,'Cut' ,'Ctrl+X',key.ctrl_x,\ - en,'Copy' ,'Ctrl+C',key.ctrl_c,\ - en,'Paste' ,'Ctrl+V',key.ctrl_v,\ - en,'Delete' ,'' ,key.del ,\ - en,'-' ,'' ,0 ,\ + en,'Cut' ,'Ctrl+X',key.ctrl_x,\ + en,'Copy' ,'Ctrl+C',key.ctrl_c,\ + en,'Paste' ,'Ctrl+V',key.ctrl_v,\ + en,'Delete' ,'' ,key.del ,\ + en,'-' ,'' ,0 ,\ en,'Select all','Ctrl+A',key.ctrl_a;,\ ; en,'-' ,'' ,0 ,\ ; en,'Vertical selection','Alt+Ins',0 popup_res popup_search,\ ru,'Перейти...' ,'Ctrl+G',key.ctrl_g,\ - ru,'-' ,'' ,0 ,\ + ru,'-' ,'' ,0 ,\ ru,'Найти...' ,'Ctrl+F',key.ctrl_f,\ ru,'Найти далее','F3' ,key.f3 ,\ ru,'Заменить...','Ctrl+H',key.ctrl_h,\ \ en,'Position...','Ctrl+G',key.ctrl_g,\ - en,'-' ,'' ,0 ,\ - en,'Find...' ,'Ctrl+F',key.ctrl_f,\ + en,'-' ,'' ,0 ,\ + en,'Find...' ,'Ctrl+F',key.ctrl_f,\ en,'Find next' ,'F3' ,key.f3 ,\ en,'Replace...' ,'Ctrl+H',key.ctrl_h popup_res popup_run,\ - ru,'Запустить' ,'F9' ,key.f9 ,\ - ru,'Компилировать' ,'Ctrl+F9',key.ctrl_f9 ,\ - ru,'-' ,'' ,0 ,\ - ru,'Доска отладки' ,'' ,open_debug_board ,\ - ru,'Системные функции','' ,open_sysfuncs_txt,\ + ru,'Запустить' ,'F9' ,key.f9 ,\ + ru,'Компилировать' ,'Ctrl+F9',key.ctrl_f9 ,\ + ru,'-' ,'' ,0 ,\ + ru,'Доска отладки' ,'' ,open_debug_board ,\ + ru,'Системные функции','' ,open_sysfuncs_txt,\ \ - en,'Run' ,'F9' ,key.f9 ,\ - en,'Compile' ,'Ctrl+F9',key.ctrl_f9 ,\ - en,'-' ,'' ,0 ,\ - en,'Debug board' ,'' ,open_debug_board ,\ - en,'System functions' ,'' ,open_sysfuncs_txt + en,'Run' ,'F9' ,key.f9 ,\ + en,'Compile' ,'Ctrl+F9',key.ctrl_f9 ,\ + en,'-' ,'' ,0 ,\ + en,'Debug board' ,'' ,open_debug_board ,\ + en,'System functions' ,'' ,open_sysfuncs_txt + +popup_res popup_recode,\ + ru,'CP866 -> CP1251' ,'',recode.866.1251,\ + ru,'CP1251 -> CP866' ,'',recode.1251.866,\ + ru,'-' ,'',0,\ + ru,'CP866 -> KOI8-R' ,'',recode.866.koi,\ + ru,'KOI8-R -> CP866' ,'',recode.koi.866,\ + ru,'-' ,'',0,\ + ru,'CP1251 -> KOI8-R' ,'',recode.1251.koi,\ + ru,'KOI8-R -> CP1251' ,'',recode.koi.1251,\ +\ + en,'CP866 -> CP1251' ,'',recode.866.1251,\ + en,'CP1251 -> CP866' ,'',recode.1251.866,\ + en,'-' ,'',0,\ + en,'CP866 -> KOI8-R' ,'',recode.866.koi,\ + en,'KOI8-R -> CP866' ,'',recode.koi.866,\ + en,'-' ,'',0,\ + en,'CP1251 -> KOI8-R' ,'',recode.1251.koi,\ + en,'KOI8-R -> CP1251' ,'',recode.koi.1251 popup_res popup_options,\ - ru,'Внешний вид...' ,'',0,\ - ru,'-' ,'',0,\ + ru,'Внешний вид...' ,'',0,\ + ru,'-' ,'',0,\ ru,'Безопасное выделение' ,'',set_secure_sel,\ ru,'Автоматические скобки' ,'',set_auto_braces,\ ru,'Автоматический отступ' ,'',set_auto_indents,\ - ru,'Умная табуляция' ,'',0,\ + ru,'Умная табуляция' ,'',0,\ ru,'Оптимальное сохранение','',set_optimal_fill,\ - ru,'-' ,'',0,\ - ru,'Номера строк' ,'',set_line_numbers,\ + ru,'-' ,'',0,\ + ru,'Номера строк' ,'',set_line_numbers,\ \ - en,'Appearance...' ,'',0,\ - en,'-' ,'',0,\ + en,'Appearance...' ,'',0,\ + en,'-' ,'',0,\ en,'Secure selection' ,'',set_secure_sel,\ en,'Automatic brackets' ,'',set_auto_braces,\ en,'Automatic indents' ,'',set_auto_indents,\ en,'Smart tabulation' ,'',0,\ en,'Optimal fill on saving','',set_optimal_fill,\ - en,'-' ,'',0,\ - en,'Line numbers' ,'',set_line_numbers + en,'-' ,'',0,\ + en,'Line numbers' ,'',set_line_numbers lsz s_modified,\ ru,'Изменено',\ @@ -880,16 +911,16 @@ lszc s_fs_error,b,\ sz symbols_ex,';?.%"',"'" sz symbols ,'#&*\:/<>|{}()[]=+-, ' -ini_sec_window db 'Window',0 -ini_window_top db 'Top',0 +ini_sec_window db 'Window',0 +ini_window_top db 'Top',0 ini_window_left db 'Left',0 ini_window_right db 'Right',0 ini_window_bottom db 'Bottom',0 finfo_ini dd ?,?,?,AREA_TEMP,AREA_EDIT-AREA_TEMP - db '/rd/1/tinypad.ini',0 + db '/rd/1/tinypad.ini',0 -TINYPAD_END: ; end of file +TINYPAD_END: ; end of file self_path rb PATHL @@ -905,17 +936,17 @@ f_info dd ?,?,?,?,?;?,0,?,AREA_TEMP,AREA_EDIT-AREA_TEMP f_info.path: times PATHL+1 db ? -pos.x dd ? ; global X position (cursor) -pos.y dd ? ; global Y position (cursor) -sel.x dd ? ; global X position (selection start) -sel.y dd ? ; global Y position (selection start) -lines dd ? ; number of lines in file +pos.x dd ? ; global X position (cursor) +pos.y dd ? ; global Y position (cursor) +sel.x dd ? ; global X position (selection start) +sel.y dd ? ; global Y position (selection start) +lines dd ? ; number of lines in file lines.scr dd ? ; number of lines on the screen columns dd ? ; number of columns in file columns.scr dd ? ; number of columns on the screen top_ofs dd ? ; height occupied by top buttons bot_ofs dd ? ; height occupied by bottom buttons - dw ? + dw ? left_ofs dd ? ; top_line dd ? ; topmost visible line on screen left_col dd ? ; leftmost visible char on line @@ -924,10 +955,10 @@ vscrl_size dd ? hscrl_top dd ? hscrl_size dd ? ;skinh dd ? ; skin height -__rc dd ?,?,?,? +__rc dd ?,?,?,? ;filelen dd ? ; file size (on save) ??? filesize dd ? ; file size (on load) ??? -ya dd ? ; for read_string +ya dd ? ; for read_string ;copy_start dd ? ; first line for copying (Ctrl+S) copy_count dd ? ; number of lines for copying (Ctrl+E) copy_size dd ? ; size of data to copy @@ -945,7 +976,7 @@ sel.end.x dd ? sel.end.y dd ? sel.selected db ? -in_sel db ? +in_sel db ? asm_mode db ? ; ASM highlight? do_not_draw db ? ; draw top and bottom buttons? @@ -985,7 +1016,7 @@ key1 rb 256 mst db ? mst2 db ? mev db ? -mouse_captured db ? +mouse_captured db ? just_from_popup db ? bot_mode db ? @@ -1003,9 +1034,9 @@ section @PARAMS ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: fasm_parameters: -p_info process_information +p_info process_information p_info2 process_information -sc system_colors +sc system_colors diff16 'Main memory size',0,$ diff --git a/programs/develop/tinypad/trunk/tp-butto.asm b/programs/develop/tinypad/trunk/tp-button.asm similarity index 89% rename from programs/develop/tinypad/trunk/tp-butto.asm rename to programs/develop/tinypad/trunk/tp-button.asm index d993f91a3e..7b7c306a5b 100644 --- a/programs/develop/tinypad/trunk/tp-butto.asm +++ b/programs/develop/tinypad/trunk/tp-button.asm @@ -310,11 +310,20 @@ macro unused { stosb or al,al jnz @b - mov ebx,f_info - mov dword[ebx+0],1 - mov dword[ebx+8],self_path - mov dword[ebx+12],0 - mcall 58 +; mov ebx,f_info +; mov dword[ebx+0],1 +; mov dword[ebx+8],self_path +; mov dword[ebx+12],0 +; mcall 58 + + mov [f_info70+0],2 + mov [f_info70+4],0 + mov [f_info70+8],0 + mov [f_info70+12],TINYPAD_END + mov [f_info70+16],0 + mov byte[f_info70+20],0 + mov [f_info70+21],f_info.path + mcall 70,f_info70 ; test eax,eax ; je .close diff --git a/programs/develop/tinypad/trunk/tp-commo.asm b/programs/develop/tinypad/trunk/tp-common.asm similarity index 100% rename from programs/develop/tinypad/trunk/tp-commo.asm rename to programs/develop/tinypad/trunk/tp-common.asm diff --git a/programs/develop/tinypad/trunk/tp-dialo.asm b/programs/develop/tinypad/trunk/tp-dialog.asm similarity index 94% rename from programs/develop/tinypad/trunk/tp-dialo.asm rename to programs/develop/tinypad/trunk/tp-dialog.asm index 974dd701db..8149f0be72 100644 --- a/programs/develop/tinypad/trunk/tp-dialo.asm +++ b/programs/develop/tinypad/trunk/tp-dialog.asm @@ -252,6 +252,7 @@ botdlg.button: xor eax,eax mov [bot_mode],al mov [bot_dlg_height],eax + mov [s_status],eax call drawwindow ret diff --git a/programs/develop/tinypad/trunk/tp-mouse.asm b/programs/develop/tinypad/trunk/tp-mouse.asm index 52b65fb389..730db68c84 100644 --- a/programs/develop/tinypad/trunk/tp-mouse.asm +++ b/programs/develop/tinypad/trunk/tp-mouse.asm @@ -396,6 +396,8 @@ onshow: ret .run: ret + .recode: + ret .options: mov word[popup_options+0],0 mov byte[popup_options+5],0 diff --git a/programs/develop/tinypad/trunk/tp-recode.asm b/programs/develop/tinypad/trunk/tp-recode.asm new file mode 100644 index 0000000000..48fe533405 --- /dev/null +++ b/programs/develop/tinypad/trunk/tp-recode.asm @@ -0,0 +1,94 @@ +recode: + + .866.1251: + mov edi,table.866.1251 + jmp .main + .1251.866: + mov edi,table.1251.866 + jmp .main + .866.koi: + mov edi,table.866.koi + jmp .main + .koi.866: + mov edi,table.koi.866 + jmp .main + .1251.koi: + mov edi,table.1251.koi + jmp .main + .koi.1251: + mov edi,table.koi.1251 + + .main: + mov ecx,[lines] + mov esi,AREA_EDIT + jecxz .exit + xor eax,eax + .lp0: dec ecx + js .exit + movzx edx,word[esi] + add esi,4 + @@: dec edx + js .lp0 + lodsb + add al,-$80 + js @b + mov al,[edi+eax] + mov [esi-1],al + jmp @b + .exit: + ret + +table.866.1251 db \ + $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7 , $C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF,\ + $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7 , $D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF,\ + $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF,\ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7 , $F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF,\ + $A8,$B8,$AA,$BA,$AF,$BF,$A1,$A2 , $B0,$95,$B7,$00,$B9,$A4,$00,$00 +table.1251.866 db \ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$F6,$F7,$00,$FD,$00,$00,$00 , $F0,$00,$F2,$00,$00,$00,$00,$F4,\ + $F8,$00,$00,$00,$00,$00,$00,$FA , $F1,$FC,$F3,$00,$00,$00,$00,$F5,\ + $80,$81,$82,$83,$84,$85,$86,$87 , $88,$89,$8A,$8B,$8C,$8D,$8E,$8F,\ + $90,$91,$92,$93,$94,$95,$96,$97 , $98,$99,$9A,$9B,$9C,$9D,$9E,$9F,\ + $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7 , $A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF,\ + $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF +table.866.koi db \ + $E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\ + $F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\ + $C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\ + $90,$00,$00,$81,$87,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$83,\ + $84,$89,$88,$86,$80,$8A,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$85,$82,$8D,$8C,$8E,$8F,$8B,\ + $D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1,\ + $B3,$A3,$B4,$A4,$B7,$A7,$BE,$AE , $00,$95,$9E,$00,$B0,$9F,$00,$A0 +table.koi.866 db \ + $C4,$B3,$DA,$BF,$C0,$D9,$C3,$B4 , $C2,$C1,$C5,$DF,$DC,$DB,$DD,$DE,\ + $B0,$00,$00,$00,$00,$F9,$00,$00 , $00,$00,$00,$00,$00,$00,$FA,$FD,\ + $FF,$00,$00,$F1,$F3,$00,$00,$F5 , $00,$00,$00,$00,$00,$00,$F7,$00,\ + $FC,$00,$00,$F0,$F2,$00,$00,$F4 , $00,$00,$00,$00,$00,$00,$F6,$00,\ + $EE,$A0,$A1,$E6,$A4,$A5,$E4,$A3 , $E5,$A8,$A9,$AA,$AB,$AC,$AD,$AE,\ + $AF,$EF,$E0,$E1,$E2,$E3,$A6,$A2 , $EC,$EB,$A7,$E8,$ED,$E9,$E7,$EA,\ + $9E,$80,$81,$96,$84,$85,$94,$83 , $95,$88,$89,$8A,$8B,$8C,$8D,$8E,\ + $8F,$9F,$90,$91,$92,$93,$86,$82 , $9C,$9B,$87,$98,$9D,$99,$97,$9A +table.1251.koi db \ + $B1,$B2,$00,$A2,$00,$00,$00,$00 , $00,$00,$B9,$00,$BA,$BC,$BB,$BF,\ + $A1,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$A9,$00,$AA,$AC,$AB,$AF,\ + $A0,$BE,$AE,$B8,$9F,$BD,$00,$00 , $B3,$98,$B4,$9D,$00,$00,$9C,$B7,\ + $00,$00,$B6,$A6,$AD,$00,$00,$9E , $A3,$B0,$A4,$9B,$A8,$B5,$A5,$A7,\ + $E1,$E2,$F7,$E7,$E4,$E5,$F6,$FA , $E9,$EA,$EB,$EC,$ED,$EE,$EF,$F0,\ + $F2,$F3,$F4,$F5,$E6,$E8,$E3,$FE , $FB,$FD,$FF,$F9,$F8,$FC,$E0,$F1,\ + $C1,$C2,$D7,$C7,$C4,$C5,$D6,$DA , $C9,$CA,$CB,$CC,$CD,$CE,$CF,$D0,\ + $D2,$D3,$D4,$D5,$C6,$C8,$C3,$DE , $DB,$DD,$DF,$D9,$D8,$DC,$C0,$D1 +table.koi.1251 db \ + $00,$00,$00,$00,$00,$00,$00,$00 , $00,$00,$00,$00,$00,$00,$00,$00,\ + $00,$91,$92,$93,$94,$95,$96,$97 , $00,$99,$00,$BB,$AE,$AB,$B7,$A4,\ + $A0,$90,$83,$B8,$BA,$BE,$B3,$BF , $BC,$9A,$9C,$9E,$9D,$B4,$A2,$9F,\ + $B9,$80,$81,$A8,$AA,$BD,$B2,$AF , $A3,$8A,$8C,$8E,$8D,$A5,$A1,$8F,\ + $FE,$E0,$E1,$F6,$E4,$E5,$F4,$E3 , $F5,$E8,$E9,$EA,$EB,$EC,$ED,$EE,\ + $EF,$FF,$F0,$F1,$F2,$F3,$E6,$E2 , $FC,$FB,$E7,$F8,$FD,$F9,$F7,$FA,\ + $DE,$C0,$C1,$D6,$C4,$C5,$D4,$C3 , $D5,$C8,$C9,$CA,$CB,$CC,$CD,$CE,\ + $CF,$DF,$D0,$D1,$D2,$D3,$C6,$C2 , $DC,$DB,$C7,$D8,$DD,$D9,$D7,$DA