forked from KolibriOS/kolibrios
*new function 18/6 with LFN support from diamond 26.09.06 (see docs)
*new RDsave from me *end - added button to run rdsave *cpu - title with fn0 git-svn-id: svn://kolibrios.org@341 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
cc80eeaa07
commit
579829b9f9
@ -1,27 +1,22 @@
|
||||
sysfn_saveramdisk: ; 18.6 = SAVE FLOPPY IMAGE (HD version only)
|
||||
cmp ebx,1
|
||||
jnz img_save_hd_1
|
||||
mov edx,bootpath ; path = '/KOLIBRI '
|
||||
jmp img_save_hd_3
|
||||
img_save_hd_1:
|
||||
cmp ebx,2
|
||||
jnz img_save_hd_2
|
||||
mov edx,bootpath2 ; path = 0 (root dir)
|
||||
jmp img_save_hd_3
|
||||
img_save_hd_2:
|
||||
cmp ebx,3
|
||||
jnz exit_for_anyone
|
||||
mov edx,[0x3010]
|
||||
mov edx,[edx+TASKDATA.mem_start]
|
||||
add edx,ecx
|
||||
img_save_hd_3:
|
||||
call reserve_hd1
|
||||
call reserve_hd_channel
|
||||
call restorefatchain ; restore FAT !!!
|
||||
mov eax,image_save
|
||||
mov ebx,1440*1024 ; size 1440 Kb
|
||||
mov ecx,0x100000 ; address of image
|
||||
call file_write
|
||||
call free_hd_channel
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
iglobal
|
||||
saverd_fileinfo:
|
||||
dd 2 ; subfunction: write
|
||||
dd 0 ; (reserved)
|
||||
dd 0 ; (reserved)
|
||||
dd 1440*1024 ; size 1440 Kb
|
||||
dd 0x100000 - std_application_base_address ; base address
|
||||
db 0
|
||||
.name:
|
||||
dd ?
|
||||
endg
|
||||
sysfn_saveramdisk: ; 18.6 = SAVE FLOPPY IMAGE (HD version only)
|
||||
call restorefatchain
|
||||
mov eax, saverd_fileinfo - std_application_base_address
|
||||
mov [saverd_fileinfo.name], ebx
|
||||
pushad
|
||||
push eax
|
||||
call file_system_lfn
|
||||
pop eax
|
||||
popad
|
||||
mov [esp+36], eax
|
||||
ret
|
||||
|
@ -676,19 +676,12 @@
|
||||
<EFBFBD> ΰ ¬¥βΰλ:
|
||||
* eax = 18 - ®¬¥ΰ δγ<CEB3>樨
|
||||
* ebx = 6 - ®¬¥ΰ ―®¤δγ<CEB3>樨
|
||||
* ecx ®¯à¥¤¥«ï¥â ¯ãâì ª ä ©«ã:
|
||||
* 1 = ¢ ¯ ¯ª¥ "/KOLIBRI"
|
||||
* 2 = ¢ ª®à¥¢®¬ ª â «®£¥
|
||||
* 3 = edx 㪠§ë¢ ¥â ¯ãâì (¨¬¥ ¯ ¯®ª ¢ ä®à¬ ⥠8+3,
|
||||
à §¤¥«ñë¥ '/')
|
||||
* ecx = 㪠§ ⥫ì áâபã á ¯®«ë¬ ¨¬¥¥¬ ä ©«
|
||||
( ¯à¨¬¥à, "/hd0/1/kolibri/kolibri.img")
|
||||
‚®§Άΰ ι ¥¬®¥ § 票¥:
|
||||
* eax = 0 - γα―¥θ®
|
||||
* ¨ η¥ eax = <20>®¤ ®θ¨΅<C2A8>¨ δ ©«®Ά®© α¨α⥬λ
|
||||
‡ ¬¥η ¨ο:
|
||||
* ˆ¬ï ä ©« 䨪á¨à®¢ ®, "kolibri.img" (£«®¡ «ì ï ¯¥à¥¬¥ ï ï¤à
|
||||
image_save ¨§ preboot.inc)
|
||||
* <20> ª ª®¬ à §¤¥«¥ ª ª®£® ¤¨áª ä ©« ¡ã¤¥â á®åà ñ, ®¯à¥¤¥«ï¥âáï
|
||||
¯®¤äãªæ¨¥© 7 ¨ ¯®¤äãªæ¨¥© 8 äãªæ¨¨ 21.
|
||||
* ‚α¥ ― ―<C2A0>¨ Ά γ<> § ®¬ ―γβ¨ ¤®«¦λ αγι¥αβΆ®Ά βμ, ¨ η¥ Ά¥ΰρβαο
|
||||
§ 票¥ 5, "δ ©« ¥ ©¤¥".
|
||||
|
||||
|
@ -671,19 +671,12 @@ Returned value:
|
||||
Parameters:
|
||||
* eax = 18 - function number
|
||||
* ebx = 6 - subfunction number
|
||||
* ecx defines path to the file:
|
||||
* 1 = in the folder "/KOLIBRI"
|
||||
* 2 = in the root folder
|
||||
* 3 = edx points to the path (names of folders in the format 8+3,
|
||||
divided by '/')
|
||||
* ecx = pointer to the full path to file
|
||||
(for example, "/hd0/1/kolibri/kolibri.img")
|
||||
Returned value:
|
||||
* eax = 0 - success
|
||||
* else eax = error code of the file system
|
||||
Çàìå÷àíèÿ:
|
||||
* Filename is fixed, "kolibri.img" (global kernel variable
|
||||
'image_save' from 'preboot.inc')
|
||||
* Drive and partition are defined by subfunction 7
|
||||
and subfunction 8 of function 21.
|
||||
Remarks:
|
||||
* All folders in the given path must exist, otherwise function
|
||||
returns value 5, "file not found".
|
||||
|
||||
|
@ -126,7 +126,7 @@ still_end:
|
||||
;close program if we going to reboot
|
||||
|
||||
close:
|
||||
mov eax,-1 ; close this program
|
||||
or eax,-1 ; close this program
|
||||
int 0x40
|
||||
|
||||
draw_next_process:
|
||||
@ -479,19 +479,12 @@ draw_window:
|
||||
xor eax,eax ; function 0 : define and draw window
|
||||
mov ebx,[winxpos] ; [x start] *65536 + [x size]
|
||||
mov ecx,[winypos] ; [y start] *65536 + [y size]
|
||||
mov edx,0x03ddffdd ;ffffff ; color of work area RRGGBB,8->color
|
||||
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl
|
||||
mov edi,0x005080d0 ; color of frames RRGGBB
|
||||
mov edx,0x13ddffdd ;ffffff ; color of work area RRGGBB,8->color
|
||||
mov edi,header ; WINDOW CAPTION;
|
||||
int 0x40
|
||||
|
||||
; WINDOW CAPTION
|
||||
|
||||
mov eax,4 ; function 4 : write text to window
|
||||
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
|
||||
mov ecx,0x10ffffff ; font 1 & color ( 0xF0RRGGBB )
|
||||
mov edx,labelt ; pointer to text beginning
|
||||
mov esi,labellen-labelt ; text length
|
||||
int 0x40
|
||||
|
||||
mov ebx,22*65536+35 ; draw info text with function 4
|
||||
xor ecx,ecx
|
||||
mov edx,text
|
||||
@ -601,9 +594,7 @@ tbts_2 db '>'
|
||||
tbts_3 db 'START'
|
||||
tbte_2:
|
||||
|
||||
labelt:
|
||||
db 'Prozesse - Ctrl/Alt/Del'
|
||||
labellen:
|
||||
header db 'Prozesse - Ctrl/Alt/Del',0
|
||||
|
||||
else if lang eq et
|
||||
text:
|
||||
@ -617,9 +608,7 @@ tbts_2 db '>'
|
||||
tbts_3 db 'START'
|
||||
tbte_2:
|
||||
|
||||
labelt:
|
||||
db 'Protsessid - Ctrl/Alt/Del'
|
||||
labellen:
|
||||
header db 'Protsessid - Ctrl/Alt/Del',0
|
||||
|
||||
else
|
||||
text:
|
||||
@ -633,9 +622,7 @@ tbts_2 db '>'
|
||||
tbts_3 db 'RUN'
|
||||
tbte_2:
|
||||
|
||||
labelt:
|
||||
db 'Processes - Ctrl/Alt/Del'
|
||||
labellen:
|
||||
header db 'Processes - Ctrl/Alt/Del',0
|
||||
|
||||
end if
|
||||
|
||||
|
@ -29,19 +29,14 @@ do_draw:
|
||||
movzx ecx,ax
|
||||
|
||||
shr eax,17
|
||||
; sub eax,110
|
||||
shl eax,16
|
||||
; mov ebx,eax
|
||||
; add ebx,220
|
||||
lea ebx,[eax-110*10000h+220]
|
||||
|
||||
shr ecx,1
|
||||
; sub ecx,50
|
||||
shl ecx,16
|
||||
; add ecx,100
|
||||
sub ecx,50*10000h - 100
|
||||
sub ecx,50*10000h - 120
|
||||
|
||||
mov eax,0 ; define and draw window
|
||||
xor eax,eax ; define and draw window
|
||||
mov edx,[sc.work]
|
||||
mov esi,edx
|
||||
mov edi,edx
|
||||
@ -51,11 +46,12 @@ do_draw:
|
||||
mov al,13
|
||||
mcall ,18 shl 16+90,29 shl 16+27
|
||||
push ebx
|
||||
mcall ,121 shl 16+90,
|
||||
mcall ,121 shl 16+90
|
||||
xchg ebx,[esp]
|
||||
mcall ,,63 shl 16+27
|
||||
pop ebx
|
||||
mcall
|
||||
mcall ,179 shl 16+30,99 shl 16+15
|
||||
|
||||
xor edx,edx
|
||||
mov al,8
|
||||
@ -67,38 +63,38 @@ do_draw:
|
||||
mcall ,15 shl 16+87,60 shl 16+24,,0x9900
|
||||
inc edx
|
||||
mcall ,118 shl 16+87,,,0xaaaaaa ;cccccc
|
||||
inc edx
|
||||
mcall ,175 shl 16+30,95 shl 16+15,,[sc.work_button]
|
||||
|
||||
mov al,4 ; 0x00000004 = write text
|
||||
mov ebx,75*65536+10
|
||||
mov ecx,[sc.work_text] ; 8b window nro - RR GG BB color
|
||||
or ecx,0x10000000
|
||||
or ecx,0x90000000
|
||||
mov edx,label1 ; pointer to text beginning
|
||||
mov esi,label1_len ; text length
|
||||
int 0x40
|
||||
|
||||
mov ecx,0xeeeeee ; 8b window nro - RR GG BB color
|
||||
or ecx,0x10000000
|
||||
mov ebx,15*65536+101
|
||||
mov edx,label4
|
||||
int 0x40
|
||||
|
||||
mov ecx,0x90eeeeee ; 8b window nro - RR GG BB color
|
||||
mov ebx,25*65536+30
|
||||
mov edx,label2 ; pointer to text beginning
|
||||
mov esi,label2_len ; text length
|
||||
mov edx,label2 ; pointer to text beginning
|
||||
int 0x40
|
||||
|
||||
mov ebx,20*65536+64
|
||||
mov edx,label3 ; pointer to text beginning
|
||||
mov esi,label3_len ; text length
|
||||
mov edx,label3
|
||||
int 0x40
|
||||
|
||||
mov ebx,45*65536+41
|
||||
mov edx,label4 ; pointer to text beginning
|
||||
mov esi,label4_len ; text length
|
||||
mov edx,label5
|
||||
int 0x40
|
||||
|
||||
mov ebx,40*65536+75
|
||||
mov edx,label5 ; pointer to text beginning
|
||||
mov esi,label5_len ; text length
|
||||
mov edx,label6
|
||||
int 0x40
|
||||
|
||||
mov al,12 ; tell os about redraw end
|
||||
mov al,12 ;end of redraw
|
||||
mov ebx,2
|
||||
int 0x40
|
||||
|
||||
@ -135,6 +131,8 @@ still:
|
||||
jz restart_kernel
|
||||
dec eax
|
||||
jz restart
|
||||
dec eax
|
||||
jnz run_rdsave
|
||||
; we have only one button left, this is close button
|
||||
; dec eax
|
||||
; jnz still
|
||||
@ -157,75 +155,67 @@ mcall_and_close:
|
||||
mcall 18,9
|
||||
jmp close_1
|
||||
|
||||
run_rdsave:
|
||||
mov eax,70
|
||||
mov ebx,rdsave
|
||||
int 0x40
|
||||
jmp still
|
||||
|
||||
data
|
||||
|
||||
if lang eq ru
|
||||
|
||||
label1:
|
||||
db '‚€˜ ‚›<E2809A>Ž<EFBFBD>:'
|
||||
label1_len = $ - label1
|
||||
|
||||
db '‚ è ¢ë¡®à:',0
|
||||
label2:
|
||||
db '‚›Š‹ž—ˆ’œ Ÿ„<C5B8>Ž'
|
||||
label2_len = $ - label2
|
||||
|
||||
db '‚몫îç¨âì Ÿ¤à®',0
|
||||
label3:
|
||||
db '<27>…<EFBFBD>…‡€<E280A1>“‘Š Ž’Œ…<C592>€'
|
||||
label3_len = $ - label3
|
||||
db '<27>¥à¥§ ¯ã᪠Žâ¬¥ ',0
|
||||
label4:
|
||||
db '‘®åà ¨âì áâனª¨',0
|
||||
|
||||
else if lang eq en
|
||||
|
||||
label1:
|
||||
db ' SELECT:'
|
||||
label1_len = $ - label1
|
||||
|
||||
db ' SELECT:',0
|
||||
label2:
|
||||
db 'POWER OFF KERNEL'
|
||||
label2_len = $ - label2
|
||||
|
||||
db 'POWER OFF KERNEL',0
|
||||
label3:
|
||||
db ' RESTART CANCEL'
|
||||
label3_len = $ - label3
|
||||
db ' RESTART CANCEL',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
else if lang eq et
|
||||
|
||||
label1:
|
||||
db ' VALI:'
|
||||
label1_len = $ - label1
|
||||
|
||||
db ' VALI:',0
|
||||
label2:
|
||||
db 'LÜLITA VÄLJA KERNEL'
|
||||
label2_len = $ - label2
|
||||
|
||||
db 'LÜLITA VÄLJA KERNEL',0
|
||||
label3:
|
||||
db ' RESTART TÜHISTA'
|
||||
label3_len = $ - label3
|
||||
db ' RESTART TÜHISTA',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
else
|
||||
|
||||
label1:
|
||||
db 'WAEHLEN:'
|
||||
label1_len = $ - label1
|
||||
|
||||
db 'WAEHLEN:',0
|
||||
label2:
|
||||
db ' BEENDEN KERNEL'
|
||||
label2_len = $ - label2
|
||||
|
||||
db ' BEENDEN KERNEL',0
|
||||
label3:
|
||||
db ' NEUSTART ABBRECHEN'
|
||||
label3_len = $ - label3
|
||||
db ' NEUSTART ABBRECHEN',0
|
||||
label4:
|
||||
db 'Save settings',0
|
||||
|
||||
end if
|
||||
|
||||
label4:
|
||||
db '(End) (Home)'
|
||||
label4_len = $ - label4
|
||||
|
||||
label5:
|
||||
db '(Enter) (Esc)'
|
||||
label5_len = $ - label5
|
||||
|
||||
db '(End) (Home)',0
|
||||
label6:
|
||||
db '(Enter) (Esc)',0
|
||||
|
||||
rdsave:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/rd/1/rdsave',0
|
||||
udata
|
||||
sc system_colors
|
||||
|
||||
|
978
programs/system/rdsave/trunk/editbox.inc
Normal file
978
programs/system/rdsave/trunk/editbox.inc
Normal file
@ -0,0 +1,978 @@
|
||||
; <Lrz> 01.02.2007 ¤®à ¡®âª edit_box, ¨á¯à ¢¨« ¡ £¨.
|
||||
; <Lrz> 26.01.2007 ®à¬ «ì ï à ¡®â ª®¬¯®¥â ¨á¯à ¢¨« äãªæ¨î .check_offset
|
||||
; <Lrz> 24.01.2007 ¯®ä¨ªá¨« ¡ £¨, ¢ë§¢ ë¥ ¥¯à ¢¨«ìë¬ ª®¤®¬ )).
|
||||
; <Lrz> 22.01.2007 ¨§¡ ¢¨«áï ®â £«îª®¢ ¯à¨ à ¡®â¥ á ¢ë¤¥«¥¨¥¬ ¨ 㤠«¥¨¥¬, ª®à४â ï à ¡®â ª« ¢¨è del & backspase
|
||||
; <Lrz> 20.01.2007 ॠ«¨§®¢ « ¢ë¤¥«¥¨¥ ⥪áâ ¯® shift
|
||||
; <Lrz> 12.12.2006 ॠ«¨§®¢ « ¯®¤¤¥à¦ªã ª®¯ª¨ insert ¨ ᥣ®¤ï ª®¬¯®¥â ¯®çâ¨ à ¡®â ¥â!!!!
|
||||
; <Lrz> 07.12.2006 ¯à®¤®«¦ ¥âáï à ¡®â ¤ ¯¥à¥à ¡®âª®© ª®¬¯®¥â ,¨§¬¥¥¨ï¬ ¯®¤¢¥à£«¨áì ¬®£¨¥ äãªæ¨¨, ¯¥à¥à ¡®â ¢ë¢®¤ ⥪áâ , â ª¦¥ «£®à¨â¬ ¢¥á¥¨ï ᨬ¢®«®¢.
|
||||
; <Lrz> 03.09.2006 ¯® ¢®§¬®¦®á⨠®âª § «áï ®â 16 ¡¨â®© à¨ä¬¥â¨ª¨, ¤®¡ ¢¨« ®¢ë¥ ¡ £¨
|
||||
; <Lrz> 09.08.2006 ¯à®¨§¢¥¤¥ ®¯â¨¬¨§ æ¨ï à ¡®âë ª®¯®ª DEL ¨ Backspace, 㬥ìè¥ à §¬¥à ¢ë¯®«ï¥¬®£® ª®¤ .
|
||||
; <Lrz> 21.07.2006 ¤®¡ ¢«¥ äãªæ¨ï ª®¯ª¨ Del, ⥯¥àì ¬®¦® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ®© ª« ¢¨è¨
|
||||
; €¢â®à: …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru
|
||||
; „ â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.06.06 10:40
|
||||
; <EFBFBD> ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box,
|
||||
; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë.
|
||||
; <EFBFBD>à®æ¥¤ãàë:
|
||||
; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ;
|
||||
; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë;
|
||||
; edit_box.mouse - ®¡à ¡®âª ¬ëè¨;
|
||||
; edit_box.focus - ãáâ ®¢ª 䮪ãá ;
|
||||
; edit_box.blur - ¥£® à §¬ë¢ ¨¥;
|
||||
; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢.
|
||||
; <EFBFBD>ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â
|
||||
; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã.
|
||||
; <EFBFBD>ਬ¥à áâàãªâãàë:
|
||||
; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
|
||||
; ¤«¨ , ¢ëá®â , ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à ,
|
||||
; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢,
|
||||
; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. <EFBFBD>ãä¥à ¤®«¦¥
|
||||
; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255:
|
||||
; some_edit_text:
|
||||
; rb 256 ;255+1
|
||||
|
||||
; <EFBFBD>ਬ¥à ¢ë§®¢ ¯à®æ¥¤ãàë:
|
||||
; mov edi,some_edit
|
||||
; call edit_box.draw
|
||||
|
||||
; <EFBFBD>ਠ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥
|
||||
; 室¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ¤® ¢ë§¢ âì
|
||||
; 2-ãî á¨á¥¬ãî äãªæ¨î, ¯à¨¬¥à:
|
||||
; mov eax,2
|
||||
; int 0x40
|
||||
; mov edi,some_edit1
|
||||
; call edit_box.key
|
||||
; mov edi,some_edit2
|
||||
; call edit_box.key
|
||||
; <EFBFBD>¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪 ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª®
|
||||
; ªâ¨¢ë¬.
|
||||
; …᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box
|
||||
; 䮪ãá â¥àï¥âáï.
|
||||
macro use_edit_box
|
||||
{
|
||||
edit_box:
|
||||
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â
|
||||
ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å
|
||||
ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã
|
||||
ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â
|
||||
ed_focus_border_color equ [edi+16] ;梥â à ¬ª¨ ª®¬¯®¥â
|
||||
ed_blur_border_color equ [edi+20] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â
|
||||
ed_text_color equ [edi+24] ;梥â ⥪áâ
|
||||
ed_max equ [edi+28] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥áâ¨
|
||||
ed_text equ [edi+32] ;㪠§ â¥«ì ¡ãä¥à
|
||||
ed_flags equ [edi+36] ;ä« £¨
|
||||
ed_size equ [edi+38] ;ª®«-¢® ᨬ¢®«®¢
|
||||
ed_pos equ [edi+42] ;¯®§¨æ¨ï ªãàá®à
|
||||
ed_offset equ [edi+46] ;ᬥ饨¥
|
||||
cl_curs_x equ [edi+50] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å
|
||||
cl_curs_y equ [edi+54] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã
|
||||
ed_shift_pos equ [edi+58]
|
||||
ed_height=14 ; ¢ëá®â
|
||||
shift_color=0x6a9480
|
||||
ed_insert=10000b
|
||||
ed_insert_cl=1111111111101111b
|
||||
;==========================================================
|
||||
;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ =================================
|
||||
;==========================================================
|
||||
.draw:
|
||||
pusha
|
||||
;--- à¨á㥬 à ¬ªã ---
|
||||
call .draw_border ; ”ãªæ¨ï áâ ¡¨«ì
|
||||
.draw_bg_cursor_text:
|
||||
;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® ---
|
||||
call .check_offset ;¢ëç¨á«¥¨¥ ¯®§¨æ¨¨ ªãàá®à áâ ¡¨«ì
|
||||
;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì ---
|
||||
call .draw_bg ; à¨á®¢ âì ¯àאַ㣮«ì¨ª à ¡®ç¥© ®¡« áâ¨
|
||||
.draw_cursor_text:
|
||||
;--- à¨á㥬 ªãàá®à ---
|
||||
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ----
|
||||
test word ed_flags,ed_focus
|
||||
je @f
|
||||
call .draw_cursor
|
||||
@@:
|
||||
call .draw_text
|
||||
popa
|
||||
ret
|
||||
|
||||
;.str:
|
||||
; mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«®
|
||||
; ;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®©
|
||||
; cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax
|
||||
; jb @f
|
||||
; xor edx,edx ;®ç¨áâ¨âì edx
|
||||
; div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx
|
||||
; push edx ;¯®«®¦¨âì ¢ á⥪
|
||||
; ;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨
|
||||
; call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx
|
||||
; pop eax
|
||||
; @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï))
|
||||
; ;sbb al,$69 ;- ç¥áâ® ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â
|
||||
; ;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥)
|
||||
; or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
|
||||
; stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi
|
||||
;
|
||||
; ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ --------------------------
|
||||
;----------------------------------------------------------
|
||||
.draw_text:
|
||||
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
|
||||
;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì ---
|
||||
call .get_n
|
||||
mov esi,ed_size
|
||||
mov ebx,ed_offset
|
||||
sub esi,ebx
|
||||
cmp eax,esi
|
||||
jae @F
|
||||
mov esi,eax ;çâ®¡ë ¥ ¢ë室¨âì § ¯à¥¤¥«ë íªà
|
||||
;--- à¨á㥬 ⥪áâ ---
|
||||
@@: mov eax,4
|
||||
mov ebx,ed_left
|
||||
mov edx,ed_offset
|
||||
add ebx,2
|
||||
shl ebx,16
|
||||
mov bx,ed_top
|
||||
add ebx,4
|
||||
mov ecx,ed_text_color
|
||||
add edx,ed_text
|
||||
int 0x40
|
||||
ret
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ----------------------------
|
||||
;¢å®¤ë¥ ¤ ë¥
|
||||
;eax
|
||||
;edx - color
|
||||
;----------------------------------------------------------
|
||||
.draw_bg_eax:
|
||||
mov ecx,ed_top
|
||||
add ecx,1
|
||||
shl ecx,16
|
||||
mov cx,13
|
||||
mov eax,13
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
jmp @f
|
||||
.draw_bg:
|
||||
mov ebx,ed_left
|
||||
add ebx,1
|
||||
shl ebx,16
|
||||
mov bx,ed_width
|
||||
sub ebx,1
|
||||
|
||||
@@:
|
||||
mov ecx,ed_top
|
||||
mov eax,13
|
||||
add ecx,1
|
||||
shl ecx,16
|
||||
mov edx,ed_color
|
||||
mov cx,ed_height
|
||||
sub ecx,1
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨¥ ª®¬¯®¥â --------------
|
||||
;----------------------------------------------------------
|
||||
.get_n:
|
||||
mov eax,ed_width ;¯®«ã祬 è¨à¨ã ª®¬¯®¥â
|
||||
xor edx,edx ;१ã«ìâ â à ᯮ«®£ ¥âáï ¢ ¯ ॠedx:eax ¢ eax - ®áâ ⮪
|
||||
sub eax,4 ;¢ëç⨬ 4
|
||||
mov ebx,6 ;§ £à㧬¨ ¤¥«¨â¥«ì
|
||||
div ebx ;à §¬¤¥«¨¬ 6
|
||||
ret
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à --------------------------
|
||||
;----------------------------------------------------------
|
||||
.clear_cursor:
|
||||
mov edx,ed_color
|
||||
test word ed_flags,ed_shift
|
||||
je @f
|
||||
mov edx,shift_color
|
||||
@@:
|
||||
mov ebx,cl_curs_x
|
||||
mov ecx,cl_curs_y
|
||||
jmp .draw_curs
|
||||
.draw_cursor:
|
||||
|
||||
mov edx,ed_text_color
|
||||
@@:
|
||||
mov ebx,ed_pos
|
||||
mov ecx,ed_offset
|
||||
sub ebx,ecx
|
||||
|
||||
lea ebx,[ebx*2+ebx]
|
||||
shl ebx,1
|
||||
;imul ebx,6
|
||||
add bx,ed_left
|
||||
mov ecx,ed_top
|
||||
inc ebx
|
||||
add ecx,2
|
||||
mov ebp,ebx
|
||||
shl ebx,16
|
||||
mov bx,bp
|
||||
mov ebp,ecx
|
||||
|
||||
shl ecx,16
|
||||
mov cx,bp
|
||||
add cx,ed_height-4
|
||||
|
||||
mov cl_curs_x,ebx
|
||||
mov cl_curs_y,ecx
|
||||
.draw_curs:
|
||||
mov eax,38
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ----------------------------
|
||||
;----------------------------------------------------------
|
||||
.draw_border:
|
||||
;--- 梥â à ¬ª¨ ---
|
||||
test dword ed_flags,ed_focus
|
||||
mov edx,ed_focus_border_color
|
||||
jne @f
|
||||
mov edx,ed_blur_border_color
|
||||
@@:
|
||||
;--- ᢥàåã ---
|
||||
mov eax,38
|
||||
mov ebx,ed_left
|
||||
mov ecx,ebx
|
||||
shl ebx,16
|
||||
mov bx,cx
|
||||
add bx,ed_width
|
||||
mov ecx, ed_top
|
||||
mov esi,ecx
|
||||
shl ecx,16
|
||||
mov cx,si
|
||||
int 0x40
|
||||
|
||||
;--- ᨧã ---
|
||||
mov esi,ecx
|
||||
add ecx,ed_height
|
||||
mov ebp,ecx
|
||||
shl ecx,16
|
||||
mov cx,bp
|
||||
int 0x40
|
||||
|
||||
;--- á«¥¢ ---
|
||||
mov cx,si
|
||||
mov ebp,ebx
|
||||
sub bx,ed_width
|
||||
int 0x40
|
||||
|
||||
;--- á¯à ¢ ---
|
||||
mov ebx,ebp
|
||||
shl ebx,16
|
||||
mov bx,bp
|
||||
int 0x40
|
||||
ret
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, ---
|
||||
;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------
|
||||
;--- eax = -1, ¥á«¨ ¥ ¨§¬¥¨«®áì ¨«¨ eax = 0, ¥á«¨
|
||||
; ¨§¬¥¨«®áì
|
||||
;----------------------------------------------------------
|
||||
.check_offset:
|
||||
pushad
|
||||
mov ecx,ed_pos
|
||||
mov ebx,ed_offset
|
||||
cmp ebx,ecx
|
||||
ja .sub_8
|
||||
|
||||
push ebx
|
||||
call .get_n ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ ॠॣ¨áâ஢ edx:eax
|
||||
pop ebx
|
||||
mov edx,ebx
|
||||
add edx,eax ;ed_offset+width editbox
|
||||
cmp edx,ecx
|
||||
ja @f
|
||||
|
||||
mov edx,ed_size
|
||||
cmp edx,ecx
|
||||
je .add_end
|
||||
|
||||
sub edx,ecx
|
||||
cmp edx,8
|
||||
jbe .add_8
|
||||
add ebx,8
|
||||
jmp .chk_d
|
||||
|
||||
.sub_8: cmp ecx,0
|
||||
je .sub_min
|
||||
cmp ebx,8
|
||||
jbe .sub_min
|
||||
sub ebx,8 ;ebx=ed_offset
|
||||
jmp .chk_d
|
||||
.sub_min:
|
||||
xor ebx,ebx
|
||||
jmp .chk_d
|
||||
|
||||
.add_end:sub edx,eax
|
||||
mov ebx,edx
|
||||
jmp .chk_d
|
||||
.add_8: add ebx,edx
|
||||
|
||||
; ;----------- ®â« ¤ª
|
||||
; pushad
|
||||
; mov [data_of_code],0
|
||||
; mov eax,ebx;ed_offset
|
||||
; mov edi,data_of_code
|
||||
; call .str
|
||||
; ;à¨á®¢ ¨¥ ä®
|
||||
; mov eax,13
|
||||
; mov ebx,178*65536+36
|
||||
; mov ecx,28*65536+10
|
||||
; xor edx,edx
|
||||
; int 0x40
|
||||
; ;¢ë¢®¤ § 票ï íªà
|
||||
; mov eax,4
|
||||
; mov ebx,180*65536+30
|
||||
; mov ecx,0x10DDBBCC
|
||||
; mov edx,data_of_code
|
||||
; mov esi,4
|
||||
; int 0x40
|
||||
; popad
|
||||
; ;----------- ®â« ¤ª
|
||||
|
||||
.chk_d: mov ed_offset,ebx
|
||||
|
||||
call .draw_bg
|
||||
mov dword [esp+28],-1
|
||||
popad
|
||||
ret
|
||||
|
||||
@@:
|
||||
mov dword [esp+28],0
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; mov ebx,eax
|
||||
; mov eax,ed_pos
|
||||
; xor edx,edx
|
||||
; idiv ebx
|
||||
; xor edx,edx
|
||||
; imul eax,ebx
|
||||
; mov ed_offset,eax
|
||||
; pop ebx
|
||||
; cmp ax,bx
|
||||
; je @f
|
||||
;;;;;;;; ¤ ë¥ ¤«ï § ªà 訢 ¨ï ¢á¥© ¯®«®áë ¯àאַ㣮«ì¨ª
|
||||
; mov ebx,ed_left
|
||||
; inc ebx
|
||||
; shl ebx,16
|
||||
; mov bx,ed_width
|
||||
; dec ebx
|
||||
; mov edx,ed_color
|
||||
; call .draw_bg_eax
|
||||
; mov dword [esp+28],0
|
||||
;@@: popad
|
||||
; ret
|
||||
;==========================================================
|
||||
;=== ®¡à ¡®âª ª« ¢¨ âãàë =================================
|
||||
;==========================================================
|
||||
.key:
|
||||
pusha
|
||||
test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
je .no_figure ;@f
|
||||
|
||||
xor ecx,ecx
|
||||
push eax
|
||||
inc ecx
|
||||
mov eax,66
|
||||
mov ebx,3
|
||||
int 0x40
|
||||
test al,0x03
|
||||
je @f
|
||||
or word ed_flags,ed_shift
|
||||
|
||||
@@: pop eax
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®¢¥à塞, çâ® ¦ â® --------------------------------
|
||||
;----------------------------------------------------------
|
||||
cmp ah,8
|
||||
jz .backspace
|
||||
cmp ah,0xb6
|
||||
jz .delete
|
||||
cmp ah,176
|
||||
jz .left
|
||||
cmp ah,179
|
||||
jz .right
|
||||
cmp ah,180
|
||||
jz .home
|
||||
cmp ah,181
|
||||
jz .end
|
||||
cmp ah,185 ;insert
|
||||
jz .insert
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;‡ £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
cmp ah,177
|
||||
jz .no_figure
|
||||
cmp ah,178
|
||||
jz .no_figure
|
||||
cmp ah,27 ;ESC - ª« ¢¨è ))
|
||||
jz .no_figure
|
||||
;--- ¦ â ¤àã£ ï ª« ¢¨è ---
|
||||
test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë ?
|
||||
jz @f
|
||||
cmp ah,'0'
|
||||
jb .no_figure
|
||||
cmp ah,'9'
|
||||
ja .no_figure
|
||||
|
||||
|
||||
;¯à®¢¥àª shift
|
||||
@@: test word ed_flags,ed_shift_on
|
||||
je @f
|
||||
;‚å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos
|
||||
push eax
|
||||
mov edx,ed_size
|
||||
mov ecx,ed_pos
|
||||
call .del_char
|
||||
;;;;
|
||||
mov eax,ed_shift_pos
|
||||
mov ebx,ed_size
|
||||
sub ebx,eax
|
||||
mov ed_size,ebx
|
||||
pop eax
|
||||
|
||||
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥
|
||||
@@: mov ecx,ed_size
|
||||
mov edx, ed_max
|
||||
cmp ecx,edx
|
||||
jae .no_figure
|
||||
mov ebx, ed_pos
|
||||
cmp ebx,edx
|
||||
jl @f ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢®
|
||||
.no_figure:
|
||||
popa
|
||||
ret
|
||||
.insert: test word ed_flags,ed_insert ;not word ed_insert
|
||||
je .insert_1
|
||||
and word ed_flags,ed_insert_cl
|
||||
jmp .no_figure
|
||||
.insert_1:
|
||||
or word ed_flags,ed_insert
|
||||
jmp .no_figure
|
||||
.ins_v:
|
||||
dec dword [ebp+38];ed_size ;processing is insert
|
||||
sub esi,ecx
|
||||
add esi,ebx
|
||||
mov edi,esi
|
||||
jmp .In_k
|
||||
@@: ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢®
|
||||
mov ecx,ed_size
|
||||
push edi eax
|
||||
mov ebp,edi
|
||||
mov esi,ed_text ; “ª § â¥«ì ¡ãä¥à
|
||||
;<EFBFBD>㤥¬ à ¡®â âì á® áâப®©
|
||||
add esi,ecx ;add ed_size ¤®¡ ¢¨¬ max size
|
||||
mov edi,esi
|
||||
|
||||
cmp ecx,ebx ;…᫨ ã á ¯®§¨æ¨ï ªãàá®à = ⥪ã饬ã à §¬¥àã ¯¥ç â ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®æ¥
|
||||
je .In_k
|
||||
|
||||
test word [ebp+36],ed_insert ;IF insert is enable â.ª. edi ¨§¬¥¥ ¤à¥á㥬 ç¥à¥§ ebp
|
||||
jne .ins_v
|
||||
|
||||
sub ecx,ebx ;<EFBFBD> ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥¨ï.
|
||||
inc edi ;‘¬¥á⨬ è¨ á¨¬¢®«ë ¢ ¯à ¢®
|
||||
std
|
||||
inc ecx
|
||||
@@:
|
||||
;--------
|
||||
lodsb
|
||||
stosb
|
||||
;--------
|
||||
loop @b
|
||||
.In_k: cld
|
||||
pop eax
|
||||
mov al,ah
|
||||
stosb
|
||||
pop edi
|
||||
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
|
||||
; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨
|
||||
inc dword ed_size
|
||||
inc dword ed_pos
|
||||
call .draw_all2
|
||||
jmp .shift;.draw_cursor_text
|
||||
.delete:
|
||||
mov edx,ed_size
|
||||
mov ecx,ed_pos
|
||||
cmp edx,ecx
|
||||
jg .bac_del
|
||||
test word ed_flags,ed_shift_on
|
||||
jne .del_bac
|
||||
popa
|
||||
ret
|
||||
.bac_del:
|
||||
call .del_char
|
||||
jmp .draw_all
|
||||
|
||||
;--- ¦ â ª« ¢¨è backspace ---
|
||||
.backspace:
|
||||
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
|
||||
mov edx,ed_size
|
||||
mov ecx,ed_pos
|
||||
test ecx,ecx
|
||||
jnz .del_bac
|
||||
test word ed_flags,ed_shift_on
|
||||
jne .bac_del
|
||||
popa
|
||||
ret
|
||||
.del_bac:
|
||||
cmp edx,ecx ;if ed_pos=ed_size
|
||||
je @f
|
||||
dec ecx
|
||||
call .del_char
|
||||
@@: test word ed_flags,ed_shift_on
|
||||
jne .bac_del
|
||||
dec dword ed_pos
|
||||
|
||||
.draw_all:
|
||||
push .shift;.draw_cursor_text;eax
|
||||
|
||||
test word ed_flags,ed_shift_on
|
||||
je @f
|
||||
mov eax,ed_shift_pos
|
||||
mov ebx,ed_size
|
||||
sub ebx,eax
|
||||
mov ed_size,ebx
|
||||
jmp .draw_all2
|
||||
|
||||
@@: dec dword ed_size
|
||||
|
||||
.draw_all2:
|
||||
and word ed_flags,ed_shift_cl
|
||||
call .clear_cursor
|
||||
call .check_offset
|
||||
;;;;;;;;;;;;;;;
|
||||
test eax,eax
|
||||
jne @f
|
||||
call .draw_bg
|
||||
ret
|
||||
;;;;;;;;;;;;;;;
|
||||
@@: call .get_n
|
||||
push eax
|
||||
mov ebx,ed_offset
|
||||
add eax,ebx ;eax = w_off= ed_offset+width
|
||||
mov ebx,ed_size
|
||||
|
||||
cmp eax,ebx
|
||||
jb @f
|
||||
mov eax,ed_pos
|
||||
sub ebx,eax
|
||||
mov ecx,ed_offset
|
||||
sub eax,ecx
|
||||
jmp .nxt
|
||||
@@: mov ebx,ed_pos
|
||||
push ebx
|
||||
sub eax,ebx
|
||||
mov ebx,eax ;It is don't optimal
|
||||
|
||||
pop eax ;ed_pos
|
||||
mov ecx,ed_offset
|
||||
sub eax,ecx
|
||||
|
||||
.nxt:
|
||||
mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë
|
||||
add ebp,ebx
|
||||
pop edx
|
||||
cmp ebp,edx
|
||||
je @f
|
||||
inc ebx
|
||||
|
||||
@@: mov edx,ebx
|
||||
lea ebx,[eax*2+eax]
|
||||
shl ebx,1
|
||||
add ebx,ed_left
|
||||
inc ebx
|
||||
shl ebx,16
|
||||
lea ecx,[edx*2+edx]
|
||||
shl ecx,1
|
||||
mov bx,cx
|
||||
mov edx,ed_color
|
||||
call .draw_bg_eax
|
||||
ret
|
||||
; jmp .shift
|
||||
;--- ¦ â ª« ¢¨è left ---
|
||||
.left: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz .nd_k
|
||||
call .clear_cursor
|
||||
dec dword ed_pos
|
||||
jmp .nd_k
|
||||
;--- ¦ â ª« ¢¨è right ---
|
||||
.right: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,ed_size
|
||||
je .nd_k
|
||||
call .clear_cursor
|
||||
inc dword ed_pos
|
||||
jmp .nd_k
|
||||
.home: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz .nd_k
|
||||
call .clear_cursor
|
||||
xor eax,eax
|
||||
mov ed_pos,eax
|
||||
jmp .nd_k
|
||||
|
||||
.end: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,dword ed_size
|
||||
je .nd_k
|
||||
call .clear_cursor
|
||||
mov eax,ed_size
|
||||
mov ed_pos,eax
|
||||
.nd_k: call .check_offset
|
||||
;test eax,eax
|
||||
;jz .draw_bg_cursor_text
|
||||
call .draw_cursor
|
||||
|
||||
.shift: ;;;;;;;SHIFT
|
||||
|
||||
call .draw_bg ;¥ ®¯â¨¬ «ì®
|
||||
test word ed_flags,ed_shift
|
||||
je .f_exit
|
||||
;;;;;;SHIFT end
|
||||
mov eax,dword ed_pos
|
||||
mov ebx,dword ed_shift_pos
|
||||
cmp eax,ebx
|
||||
jae .sh_n
|
||||
push eax ;¬¥ì襥 ¢ eax
|
||||
push ebx ;¡®«ì襥
|
||||
jmp .sh_n1
|
||||
;¥á«¨ ¨ ç¥
|
||||
.sh_n: push ebx
|
||||
push eax
|
||||
.sh_n1:
|
||||
; jmp .draw_all2
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;call .clear_cursor
|
||||
call .check_offset
|
||||
call .get_n
|
||||
mov edx,eax ;size of ed_box
|
||||
; push eax
|
||||
mov ecx,ed_offset
|
||||
add eax,ecx ;eax = w_off= ed_offset+width
|
||||
mov ebp,eax ;save
|
||||
pop ebx ;¡®«ì襥
|
||||
pop eax ;¬¥ì襥
|
||||
|
||||
|
||||
cmp eax,ecx ;áà ¢¥¨¥ á ¬¥ì襣® á offset.
|
||||
jae .f_f ;¥á«¨ ¡®«ìè¥
|
||||
xor eax,eax
|
||||
cmp ebp,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬
|
||||
jb @f
|
||||
sub ebx,ecx
|
||||
jmp .nxt_f
|
||||
@@: mov ebx,ebp
|
||||
sub ebx,ecx
|
||||
jmp .nxt_f
|
||||
|
||||
.f_f:
|
||||
sub eax,ecx
|
||||
cmp ebp,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬
|
||||
jle @f
|
||||
sub ebx,ecx
|
||||
sub ebx,eax
|
||||
jmp .nxt_f
|
||||
@@:
|
||||
mov ebx,ebp
|
||||
sub ebx,ecx
|
||||
sub ebx,eax
|
||||
.nxt_f:
|
||||
mov edx,ebx
|
||||
lea ebx,[eax*2+eax]
|
||||
shl ebx,1
|
||||
add ebx,ed_left
|
||||
inc ebx
|
||||
shl ebx,16
|
||||
lea ecx,[edx*2+edx]
|
||||
shl ecx,1
|
||||
mov bx,cx
|
||||
mov edx,shift_color
|
||||
call .draw_bg_eax
|
||||
and word ed_flags,1111111111111011b
|
||||
jmp .draw_cursor_text
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
.f_exit: and word ed_flags,ed_shift_cl
|
||||
jmp .draw_cursor_text
|
||||
|
||||
;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥?
|
||||
.sh_enable:
|
||||
test word ed_flags,ed_shift
|
||||
je @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne .sh_ext_en
|
||||
push dword ed_pos
|
||||
pop dword ed_shift_pos
|
||||
or word ed_flags,ed_shift_on
|
||||
ret
|
||||
|
||||
@@: and word ed_flags,ed_shift_cl
|
||||
.sh_ext_en: ret
|
||||
|
||||
;- 㤠«¥¨¥ ᨬ¢®«
|
||||
;‚å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos
|
||||
.del_char:
|
||||
mov esi,ed_text
|
||||
test word ed_flags,ed_shift_on
|
||||
je @f
|
||||
mov eax,dword ed_shift_pos
|
||||
mov ebx,esi
|
||||
cmp eax,ecx
|
||||
jae .dh_n
|
||||
|
||||
mov ed_pos,eax ;çâ® ¡ë ¥ ¡ë«® ã¡¥£ ¨ï ªãàá®à
|
||||
mov ebp,ecx
|
||||
sub ebp,eax
|
||||
add ebx,eax ;eax ¬¥ìè¥
|
||||
sub edx,ecx
|
||||
add esi,ecx
|
||||
|
||||
|
||||
mov ed_shift_pos,ebp
|
||||
jmp .del_ch_sh
|
||||
;¥á«¨ ¨ ç¥
|
||||
.dh_n:
|
||||
mov ebp,eax
|
||||
sub ebp,ecx
|
||||
add ebx,ecx
|
||||
sub edx,eax
|
||||
add esi,eax
|
||||
mov ed_shift_pos,ebp
|
||||
jmp .del_ch_sh
|
||||
|
||||
@@: add esi,ecx ;㪠§ ⥫ì + ᬥ饨¥ ª ॠ«ì®¬ã ¡ãää¥àã
|
||||
mov ebx,esi
|
||||
inc esi
|
||||
cld
|
||||
|
||||
sub edx,ecx
|
||||
.del_ch_sh:
|
||||
|
||||
push edi
|
||||
mov edi,ebx
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
dec edx
|
||||
jns @b
|
||||
|
||||
pop edi
|
||||
ret
|
||||
;==========================================================
|
||||
;=== ®¡à ¡®âª ¬ëè¨ =======================================
|
||||
;==========================================================
|
||||
.mouse:
|
||||
pusha
|
||||
;----------------------------------------------------------
|
||||
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ -----------------------
|
||||
;----------------------------------------------------------
|
||||
mov eax,37
|
||||
mov ebx,2
|
||||
int 0x40
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ----------------------------------
|
||||
;----------------------------------------------------------
|
||||
test eax,1
|
||||
jnz .mouse_left_button
|
||||
@@: popa
|
||||
ret
|
||||
|
||||
.mouse_left_button:
|
||||
;----------------------------------------------------------
|
||||
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ -----------------------------
|
||||
;----------------------------------------------------------
|
||||
mov eax,37
|
||||
xor ebx,ebx
|
||||
inc ebx
|
||||
int 0x40
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
|
||||
;----------------------------------------------------------
|
||||
mov ebx,ed_top
|
||||
cmp ax,bx
|
||||
jl ._blur;.mouse_end_no_focus
|
||||
|
||||
add bx,ed_height
|
||||
cmp ax,bx
|
||||
jg ._blur;.mouse_end_no_focus
|
||||
|
||||
shr eax,16
|
||||
|
||||
mov bx,ed_left
|
||||
cmp ax,bx
|
||||
jl ._blur;.mouse_end_no_focus
|
||||
|
||||
add bx,ed_width
|
||||
cmp ax,bx
|
||||
jg ._blur;.mouse_end_no_focus
|
||||
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à ---
|
||||
push eax
|
||||
call .clear_cursor
|
||||
pop eax
|
||||
xor dx,dx
|
||||
sub ax,ed_left
|
||||
add ax,2
|
||||
mov bx,6
|
||||
div bx
|
||||
add ax,ed_offset
|
||||
cmp ax,ed_size
|
||||
jna @f
|
||||
mov ax,ed_size
|
||||
@@:
|
||||
mov ed_pos,ax
|
||||
call .check_offset
|
||||
call .draw_cursor
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
||||
;----------------------------------------------------------
|
||||
bts word ed_flags,1
|
||||
jc .mouse_pressed
|
||||
call .draw_cursor
|
||||
call .draw_border
|
||||
.mouse_pressed:
|
||||
popa
|
||||
ret
|
||||
;.mouse_end_no_focus:
|
||||
; call .blur
|
||||
;popa
|
||||
;ret
|
||||
;.blur:
|
||||
;pusha
|
||||
._blur:
|
||||
test word ed_flags,ed_always_focus
|
||||
jne @f
|
||||
btr word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
jnc @f
|
||||
call .clear_cursor
|
||||
call .draw_border
|
||||
@@:
|
||||
popa
|
||||
ret
|
||||
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà à §¬ë¢ ¨ï 䮪ãá --------------------------
|
||||
;----------------------------------------------------------
|
||||
;.blur:
|
||||
;pusha
|
||||
;._blur:
|
||||
;btr ed_flags,1
|
||||
;jnc @f
|
||||
;call .draw_border
|
||||
;call .clear_cursor
|
||||
;@@:
|
||||
;popa
|
||||
;ret
|
||||
}
|
||||
ed_figure_only=1000000000000000b
|
||||
ed_always_focus=100000000000000b
|
||||
ed_focus=10b
|
||||
ed_shift_on=1000b
|
||||
ed_shift=100b
|
||||
ed_shift_cl=1111111111110011b
|
||||
macro draw_edit_boxes start,end
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
@@:
|
||||
call edit_box.draw
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
|
||||
macro mouse_edit_boxes start,end
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
@@:
|
||||
call edit_box.mouse
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
|
||||
macro key_edit_boxes start,end
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
@@:
|
||||
call edit_box.key
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
ed_struc_size=62
|
||||
struc edit_box width,left,top,color,focus_border_color,\
|
||||
blur_border_color,text_color,max,text,flags,size
|
||||
{
|
||||
.width dd width
|
||||
.left dd left
|
||||
.top dd top
|
||||
.color dd color
|
||||
.focus_border_color dd focus_border_color
|
||||
.blur_border_color dd blur_border_color
|
||||
.text_color dd text_color
|
||||
.max dd max
|
||||
.text dd text
|
||||
.flags dw flags+0
|
||||
.size dd size+0
|
||||
.pos dd 0
|
||||
.offset dd 0
|
||||
.cl_curs_x dd 0
|
||||
.cl_curs_y dd 0
|
||||
.shift dd 0
|
||||
}
|
||||
|
||||
macro edit_boxes_set_sys_color start,end,color_table
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
mov esi,color_table
|
||||
@@:
|
||||
mov eax,[esi+36]
|
||||
mov ebx,[esi+20]
|
||||
mov ed_focus_border_color,eax
|
||||
shr bh,1
|
||||
shr bl,1
|
||||
shr ah,1
|
||||
shr al,1
|
||||
add ah,bh
|
||||
add al,bl
|
||||
ror eax,16
|
||||
ror ebx,16
|
||||
shr bl,1
|
||||
shr al,1
|
||||
add al,bl
|
||||
ror eax,16
|
||||
mov ed_blur_border_color,eax
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
|
||||
macro draw_edit_box ed_ptr
|
||||
{
|
||||
mov edi,ed_ptr
|
||||
call edit_box.draw
|
||||
}
|
||||
|
||||
macro mouse_edit_box ed_ptr
|
||||
{
|
||||
mov edi,ed_ptr
|
||||
call edit_box.mouse
|
||||
}
|
||||
|
||||
macro key_edit_box ed_ptr
|
||||
{
|
||||
mov edi,ed_ptr
|
||||
call edit_box.key
|
||||
}
|
@ -1,212 +1,334 @@
|
||||
;
|
||||
; Save Ramdisk to HD and FD
|
||||
; RDsave ¤«ï Kolibri (0.6.5.0 ¨ áâ àè¥)
|
||||
;
|
||||
; Mario79 2005
|
||||
; Compile with FASM for Menuet
|
||||
; Heavyiron 12.02.2007
|
||||
;
|
||||
|
||||
; Š®¬¯¨«¨à®¢ âì FASM'®¬
|
||||
;
|
||||
;---------------------------------------------------------------------
|
||||
include 'lang.inc'
|
||||
include 'macros.inc'
|
||||
|
||||
appname equ 'RDsave '
|
||||
version equ '1.1'
|
||||
version equ '1.2'
|
||||
|
||||
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à
|
||||
org 0x0 ; ¤à¥á æ¨ï á ã«ï
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ; 8-¡ ©âë© ¨¤¥â¨ä¨ª â®à MenuetOS
|
||||
dd 0x01 ; ¢¥àá¨ï § £®«®¢ª (¢á¥£¤ 1)
|
||||
dd START ; ¤à¥á ¯¥à¢®© ª®¬ ¤ë
|
||||
dd I_END ; à §¬¥à ¯à®£à ¬¬ë
|
||||
dd 0x1000 ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
|
||||
dd 0x1000 ; ¤à¥á ¢¥àè¨ë áâíª
|
||||
dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢ (¥ ¨á¯®«ì§ã¥âáï)
|
||||
dd 0x0 ; § १¥à¢¨à®¢ ®
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x1000 ; memory for app
|
||||
dd 0x1000 ; esp
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
include 'editbox.inc'
|
||||
use_edit_box
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- <20>€—€‹Ž <20><>Žƒ<C5BD>€ŒŒ› ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
;******************************************************************************
|
||||
START:
|
||||
mov eax, 40
|
||||
mov ebx, 100111b
|
||||
int 0x40
|
||||
red: ; ¯¥à¥à¨á®¢ âì ®ª®
|
||||
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª
|
||||
|
||||
|
||||
START: ; start of execution
|
||||
xor eax,eax
|
||||
mov edi,bootpath
|
||||
mov ecx,128
|
||||
rep stosd
|
||||
|
||||
mcall 6,filename,0,-1,bootpath
|
||||
|
||||
mov esi,bootpath+1
|
||||
mov cx,512
|
||||
start_search:
|
||||
lodsb
|
||||
cmp al,"'"
|
||||
jz set_end_path
|
||||
dec cx
|
||||
cmp cx,0
|
||||
ja start_search
|
||||
set_end_path:
|
||||
mov [esi-1],byte 0
|
||||
|
||||
mov eax,40
|
||||
mov ebx,101b
|
||||
int 0x40
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
;---------------------------------------------------------------------
|
||||
;--- –ˆŠ‹ Ž<><C5BD>€<EFBFBD>Ž’Šˆ ‘Ž<E28098>›’ˆ‰ ----------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
still:
|
||||
mov eax, 10 ; wait here for event
|
||||
push 10
|
||||
pop eax
|
||||
int 40h
|
||||
|
||||
dec eax ; ¯¥à¥à¨á®¢ âì ®ª®?
|
||||
jz red ; ¥á«¨ ¤ - ¬¥âªã red
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
|
||||
mouse:
|
||||
mouse_edit_boxes editbox,editbox_end
|
||||
jmp still
|
||||
|
||||
button:
|
||||
mov al,17 ; ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨
|
||||
int 0x40
|
||||
|
||||
dec eax ; redraw request ?
|
||||
je red
|
||||
; dec eax
|
||||
; dec eax ; button in buffer ?
|
||||
; je button
|
||||
|
||||
|
||||
button: ; button
|
||||
mov eax,17 ; get id
|
||||
cmp ah,1 ; ª®¯ª á id=1("§ ªàëâì")?
|
||||
jne noclose
|
||||
or eax,-1 ; äãªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
|
||||
int 0x40
|
||||
|
||||
noclose:
|
||||
cmp ah,2
|
||||
jne ah_3
|
||||
mcall 18,6,1
|
||||
jmp red
|
||||
ah_3:
|
||||
jne path_2
|
||||
call clear_err
|
||||
mov al,16
|
||||
mov ebx,1
|
||||
int 0x40
|
||||
call check_for_error
|
||||
jmp still
|
||||
path_2:
|
||||
cmp ah,3
|
||||
jne ah_4
|
||||
mcall 18,6,2
|
||||
jmp red
|
||||
ah_4:
|
||||
jne path_3
|
||||
call clear_err
|
||||
mov al,16
|
||||
mov ebx,2
|
||||
int 0x40
|
||||
call check_for_error
|
||||
jmp still
|
||||
path_3:
|
||||
cmp ah,4
|
||||
jne ah_5
|
||||
mcall 18,6,3,bootpath+1
|
||||
jmp red
|
||||
ah_5:
|
||||
cmp ah,5
|
||||
jne ah_6
|
||||
mcall 16,1
|
||||
jmp red
|
||||
ah_6:
|
||||
cmp ah,6
|
||||
jne ah_1
|
||||
mcall 16,2
|
||||
jmp red
|
||||
|
||||
ah_1:
|
||||
cmp ah,1
|
||||
je exit
|
||||
jne path_4
|
||||
call clear_err
|
||||
mov al,18
|
||||
mov ebx,6
|
||||
mov ecx,path3
|
||||
int 0x40
|
||||
call check_for_error
|
||||
jmp still
|
||||
path_4:
|
||||
call clear_err
|
||||
mov eax,18
|
||||
mov ebx,6
|
||||
mov ecx,path4
|
||||
int 0x40
|
||||
call check_for_error
|
||||
jmp still
|
||||
|
||||
exit:
|
||||
or eax,-1 ; close this program
|
||||
key:
|
||||
mov al,2
|
||||
int 0x40
|
||||
key_edit_boxes editbox,editbox_end
|
||||
jmp still
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
check_for_error: ;Ž¡à ¡®â稪 ®è¨¡®ª
|
||||
cmp eax,0
|
||||
jne err1
|
||||
mov ecx,[sc.work_text]
|
||||
mov edx,ok
|
||||
jmp print
|
||||
err1:
|
||||
cmp eax,1
|
||||
jne err3
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error11
|
||||
jmp print
|
||||
err3:
|
||||
cmp eax,3
|
||||
jne err5
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error3
|
||||
jmp print
|
||||
err5:
|
||||
cmp eax,5
|
||||
jne err8
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error5
|
||||
jmp print
|
||||
err8:
|
||||
cmp eax,8
|
||||
jne err9
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error8
|
||||
jmp print
|
||||
err9:
|
||||
cmp eax,9
|
||||
jne err10
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error9
|
||||
jmp print
|
||||
err10:
|
||||
cmp eax,10
|
||||
jne err11
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error10
|
||||
jmp print
|
||||
err11:
|
||||
mov ecx,0xdd2222
|
||||
mov edx,error11
|
||||
jmp print
|
||||
|
||||
print:
|
||||
mov eax,4 ; ¤¯¨á¨
|
||||
mov ebx,20 shl 16 + 148
|
||||
or ecx,0x80000000
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
clear_err:
|
||||
mov al,13
|
||||
mov ebx,15 shl 16 + 240
|
||||
mov ecx,145 shl 16 +15
|
||||
mov edx,[sc.work]
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
;--- Ž<><C5BD>…„…‹…<E280B9>ˆ… ˆ Ž’<C5BD>ˆ‘Ž‚Š€ ŽŠ<C5BD>€ ----------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
int 0x40
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
int 0x40
|
||||
|
||||
mov eax, 12 ; function 12:tell os about windowdraw
|
||||
mov ebx, 1 ; 1, start of draw
|
||||
int 0x40
|
||||
; DRAW WINDOW
|
||||
mov eax, 0 ; function 0 : define and draw window
|
||||
mov ebx, 200*65536+230 ; [x start] *65536 + [x size]
|
||||
mov ecx, 200*65536+260 ; [y start] *65536 + [y size]
|
||||
mov edx, [sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0x33000000
|
||||
mov edi,header ; WINDOW LABEL
|
||||
int 0x40
|
||||
mov eax,12 ; äãªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª
|
||||
mov bl,1 ; 1 - ç¨ ¥¬ à¨á®¢ âì
|
||||
int 0x40
|
||||
|
||||
mcall 8,<11,17>,<26,17>,2,[sc.work_button]
|
||||
inc edx
|
||||
mcall , ,<56,17>, ,
|
||||
inc edx
|
||||
mcall , ,<86,17>, ,
|
||||
inc edx
|
||||
mcall , ,<166,17>, ,
|
||||
inc edx
|
||||
mcall , ,<196,17>, ,
|
||||
; ‘Ž‡„€ðŒ ŽŠ<C5BD>Ž
|
||||
xor eax,eax ; äãªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª®
|
||||
mov ebx,200 shl 16 + 270 ; [x áâ àâ] *65536 + [x à §¬¥à]
|
||||
mov ecx,200 shl 16 + 190 ; [y áâ àâ] *65536 + [y à §¬¥à]
|
||||
mov edx,[sc.work] ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB,8->color gl
|
||||
or edx,0x33000000
|
||||
mov edi,header ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ<C5BD>€
|
||||
int 0x40
|
||||
|
||||
mov ecx,[sc.work_button_text]
|
||||
or ecx,0x10000000
|
||||
mcall 4,<17,31>, ,text_123,1
|
||||
add ebx,30
|
||||
add edx,1
|
||||
mcall
|
||||
add ebx,30
|
||||
add edx,1
|
||||
mcall
|
||||
add ebx,80
|
||||
add edx,1
|
||||
mcall
|
||||
add ebx,30
|
||||
add edx,1
|
||||
mcall
|
||||
draw_edit_boxes editbox,editbox_end ;à¨á®¢ ¨¥ edit box'®¢
|
||||
|
||||
mov ecx,[sc.work_text]
|
||||
or ecx,0x80000000
|
||||
mcall ,<40,31>, ,text_1,
|
||||
add ebx,30
|
||||
mcall , , ,text_2,
|
||||
add ebx,30
|
||||
mcall , , ,text_3,
|
||||
mcall ,<15,115>, ,text_4,
|
||||
mcall ,<35,125>, ,text_5,
|
||||
mov al,13 ;®âà¨á®¢ª ⥥© ª®¯®ª
|
||||
mov ebx,194 shl 16 + 60
|
||||
mov ecx,34 shl 16 +15
|
||||
mov edx,0x444444
|
||||
int 0x40
|
||||
|
||||
mcall ,<35,41>, ,text_6,
|
||||
mcall ,<35,101>, ,text_6,
|
||||
mcall ,<40,171>, ,text_7,
|
||||
mcall ,<40,201>, ,text_8,
|
||||
mcall ,<25,10>, ,text_9,
|
||||
mcall ,<25,150>, ,text_10,
|
||||
add ecx,20 shl 16
|
||||
int 0x40
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
int 0x40
|
||||
ret
|
||||
add ecx,20 shl 16
|
||||
int 0x40
|
||||
|
||||
add ecx,40 shl 16
|
||||
int 0x40
|
||||
|
||||
mov eax,8 ;®âà¨á®¢ª ª®¯®ª
|
||||
sub ebx,4 shl 16
|
||||
sub ecx,4 shl 16
|
||||
mov edx,5
|
||||
mov esi,[sc.work_button]
|
||||
int 0x40
|
||||
|
||||
sub ecx,40 shl 16
|
||||
dec edx
|
||||
int 0x40
|
||||
|
||||
sub ecx,20 shl 16
|
||||
dec edx
|
||||
int 0x40
|
||||
|
||||
sub ecx,20 shl 16
|
||||
dec edx
|
||||
int 0x40
|
||||
|
||||
mov al,4 ; ¤¯¨á¨
|
||||
mov ebx,45 shl 16 + 12
|
||||
mov ecx,[sc.work_text]
|
||||
or ecx,0x80000000
|
||||
mov edx,label1
|
||||
int 0x40
|
||||
|
||||
mov ebx,150 shl 16 + 35
|
||||
mov edx,path1
|
||||
int 0x40
|
||||
|
||||
add ebx,20
|
||||
mov edx,path2
|
||||
int 0x40
|
||||
|
||||
mov ebx,75 shl 16 + 75
|
||||
mov edx,path3
|
||||
int 0x40
|
||||
|
||||
mov ebx,30 shl 16 + 97
|
||||
mov edx,label2
|
||||
int 0x40
|
||||
|
||||
mov ebx,40 shl 16 + 135
|
||||
mov edx,label3
|
||||
int 0x40
|
||||
|
||||
mov ecx,[sc.work_button_text]
|
||||
or ecx,0x80000000
|
||||
mov ebx,195 shl 16 + 35
|
||||
mov edx,save
|
||||
int 0x40
|
||||
|
||||
add ebx,20
|
||||
int 0x40
|
||||
|
||||
add ebx,20
|
||||
int 0x40
|
||||
|
||||
add ebx,40
|
||||
int 0x40
|
||||
|
||||
mov al,12 ; äãªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª
|
||||
mov ebx,2 ; 2, § ª®ç¨«¨ à¨á®¢ âì
|
||||
int 0x40
|
||||
|
||||
ret ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
|
||||
|
||||
|
||||
header db appname,version,0
|
||||
;---------------------------------------------------------------------
|
||||
;--- „€<E2809E><E282AC>›… <20><>Žƒ<C5BD>€ŒŒ› ----------------------------------------------
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
text_123 db '12345'
|
||||
header db appname,version,0
|
||||
|
||||
editbox:
|
||||
edit1 edit_box 170,10,113,0xffffff,0,0,0,1024,path4,ed_focus
|
||||
editbox_end:
|
||||
|
||||
path1 db '/fd/1/',0
|
||||
path2 db '/fd/2/',0
|
||||
path3 db '/hd0/1/kolibri.img',0
|
||||
|
||||
if lang eq ru
|
||||
|
||||
text_1 db '‚ ¯ ¯ªã ‘:\KOLIBRI',0
|
||||
text_2 db '‚ ª®à¥ì ¤¨áª ‘',0
|
||||
text_3 db '<27>ãâì ¢ ä ©«¥ RD2HD.TXT',0
|
||||
text_4 db '¯.3 ¤«ï १¥à¢®£® á®åà ¥¨ï',0
|
||||
text_5 db 'â.ª. ¢ ï¤à¥ ¥£® ¥â.',0
|
||||
text_6 db '(¯ ¯ª ¤®«¦ ¯à¨áãâá⢮¢ âì)',0
|
||||
text_7 db '<27> /FD/1',0
|
||||
text_8 db '<27> /FD/2',0
|
||||
text_9 db '‘®åà ¥¨¥ ¦¥á⪨© ¤¨áª:',0
|
||||
text_10 db '‘®åà ¥¨¥ ¤¨áª¥âã:',0
|
||||
save db '‘®åà ¨âì',0
|
||||
label1 db '‚ë¡¥à¨â¥ ®¤¨ ¨§ ¢ ਠ⮢:',0
|
||||
label2 db 'ˆ«¨ ¢¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã:',0
|
||||
label3 db '‚ᥠ¯ ¯ª¨ ¤®«¦ë áãé¥á⢮¢ âì',0
|
||||
ok db 'RAM-¤¨áª á®åà ¥ ãᯥè®',0
|
||||
error3 db '<27>¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ',0
|
||||
error5 db '<27>¥áãé¥áâ¢ãî騩 ¯ãâì',0
|
||||
error8 db '<27>¥â ¬¥áâ ¤¨áª¥',0
|
||||
error9 db '’ ¡«¨æ FAT à §àãè¥ ',0
|
||||
error10 db '„®áâ㯠§ ¯à¥é¥',0
|
||||
error11 db 'Žè¨¡ª ãáâனá⢠',0
|
||||
|
||||
else
|
||||
|
||||
text_1 db 'To the folder C:\KOLIBRI',0
|
||||
text_2 db 'To the root of C',0
|
||||
text_3 db 'To path in the file RD2HD.TXT',0
|
||||
text_4 db 'p.3 for backup, as the kernel',0
|
||||
text_5 db 'can not boot from there.',0
|
||||
text_6 db '(folder must exist)',0
|
||||
text_7 db 'To /FD/1',0
|
||||
text_8 db 'To /FD/2',0
|
||||
text_9 db 'Save to hard disk:',0
|
||||
text_10 db 'Save to floppy:',0
|
||||
save db ' Save',0
|
||||
label1 db 'Select one of the variants:',0
|
||||
label2 db ' Or enter full path to file:',0
|
||||
label3 db ' All folders must exist',0
|
||||
ok db 'RAM-drive was saved successfully',0
|
||||
error3 db 'Unknown file system',0
|
||||
error5 db 'Incorrect path',0
|
||||
error8 db 'Disk is full',0
|
||||
error9 db 'FAT table corrupted',0
|
||||
error10 db 'Access denied',0
|
||||
error11 db 'Device error',0
|
||||
|
||||
end if
|
||||
|
||||
filename db 'RD2HD TXT'
|
||||
I_END:
|
||||
sc system_colors
|
||||
bootpath:
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë
|
||||
|
||||
sc system_colors
|
||||
path4 rb 1025;1024+1
|
Loading…
Reference in New Issue
Block a user