From 9ca506ed15cdeb060ad79755ee80b829d035e937 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 9 Apr 2026 18:57:52 +0000 Subject: [PATCH] programs/system: Post-SVN tidy (part 2) (#410) - Move source code from `trunk` into root directory for each program. - Update build files and ASM include paths. Add SPDX license header where appropriate. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards #75, point 3) Reviewed-on: https://git.kolibrios.org/KolibriOS/kolibrios/pulls/410 Reviewed-by: Ivan B Reviewed-by: Burer Co-authored-by: Andrew Co-committed-by: Andrew --- data/Tupfile.lua | 22 +- programs/build_all.bat | 14 +- programs/system/MyKey/{trunk => }/ASPAPI.INC | 328 +- programs/system/MyKey/{trunk => }/MyKey.asm | 10 +- programs/system/MyKey/{trunk => }/ReadMe.txt | 0 programs/system/MyKey/{trunk => }/Tupfile.lua | 2 +- programs/system/MyKey/{trunk => }/debug.inc | 0 programs/system/MyKey/{trunk => }/makefile | 0 programs/system/MyKey/{trunk => }/mykey.ini | 0 .../system/MyKey/{trunk => }/mykey_it.ini | 0 programs/system/MyKey/{trunk => }/string.inc | 0 .../system/hdd_info/{trunk => }/Tupfile.lua | 2 +- .../system/hdd_info/{trunk => }/build.bat | 0 programs/system/hdd_info/{trunk => }/build.sh | 0 .../system/hdd_info/{trunk => }/hdd_info.asm | 3920 +++++++++-------- programs/system/hdd_info/{trunk => }/makefile | 0 programs/system/icon/{trunk => }/Tupfile.lua | 2 +- programs/system/icon/{trunk => }/build.sh | 0 programs/system/icon/{trunk => }/build_de.bat | 0 programs/system/icon/{trunk => }/build_en.bat | 0 programs/system/icon/{trunk => }/build_ru.bat | 0 programs/system/icon/{trunk => }/dat_area.inc | 0 programs/system/icon/{trunk => }/data.inc | 0 programs/system/icon/{trunk => }/icon.asm | 2367 +++++----- programs/system/icon/{trunk => }/icons.dat | 0 programs/system/icon/{trunk => }/iconstrp.png | Bin programs/system/icon/{trunk => }/makefile | 0 programs/system/icon/{trunk => }/mouse.inc | 0 programs/system/kobra/{trunk => }/Makefile | 6 +- programs/system/kobra/{trunk => }/gpl3.txt | 0 programs/system/kobra/{trunk => }/history.txt | 0 programs/system/kobra/{trunk => }/kobra.c | 0 programs/system/kobra/{trunk => }/kobra.h | 0 programs/system/kobra/{trunk => }/kobra_st.s | 0 programs/system/kobra/{trunk => }/kolibri.ld | 0 programs/system/kobra/{trunk => }/readme.txt | 0 .../system/kobra/{trunk => }/symbols2dbg.py | 0 .../system/launch/{trunk => }/Tupfile.lua | 2 +- programs/system/launch/{trunk => }/gpl3.txt | 0 .../system/launch/{trunk => }/history.txt | 0 programs/system/launch/{trunk => }/ipc.inc | 0 programs/system/launch/{trunk => }/kobra.inc | 0 programs/system/launch/{trunk => }/launch.asm | 0 programs/system/launch/{trunk => }/launch.cfg | 0 programs/system/launch/{trunk => }/readme.txt | 0 programs/system/launch/{trunk => }/thread.inc | 0 .../system/launcher/{trunk => }/Tupfile.lua | 0 .../system/launcher/{trunk => }/build_en.bat | 0 .../system/launcher/{trunk => }/build_ru.bat | 0 .../system/launcher/{trunk => }/launcher.asm | 9 +- programs/system/menu/{trunk => }/Tupfile.lua | 2 +- programs/system/menu/{trunk => }/build.bat | 0 programs/system/menu/{trunk => }/build.sh | 0 programs/system/menu/{trunk => }/makefile | 0 programs/system/menu/{trunk => }/menu.asm | 11 +- programs/system/menu/{trunk => }/readme.txt | 0 .../system/mousemul/{trunk => }/Tupfile.lua | 2 +- .../system/mousemul/{trunk => }/build.bat | 0 programs/system/mousemul/{trunk => }/build.sh | 0 programs/system/mousemul/{trunk => }/makefile | 0 .../system/mousemul/{trunk => }/mousemul.asm | 618 +-- .../system/rdsave/{trunk => }/Tupfile.lua | 2 +- programs/system/rdsave/{trunk => }/app.ini | 0 programs/system/rdsave/{trunk => }/build.sh | 0 .../system/rdsave/{trunk => }/build_en.bat | 0 .../system/rdsave/{trunk => }/build_et.bat | 0 .../system/rdsave/{trunk => }/build_it.bat | 0 .../system/rdsave/{trunk => }/build_ru.bat | 0 programs/system/rdsave/{trunk => }/makefile | 0 programs/system/rdsave/{trunk => }/rdsave.asm | 20 +- programs/system/rdsave/{trunk => }/str.inc | 0 71 files changed, 3685 insertions(+), 3654 deletions(-) rename programs/system/MyKey/{trunk => }/ASPAPI.INC (94%) rename programs/system/MyKey/{trunk => }/MyKey.asm (99%) rename programs/system/MyKey/{trunk => }/ReadMe.txt (100%) rename programs/system/MyKey/{trunk => }/Tupfile.lua (79%) rename programs/system/MyKey/{trunk => }/debug.inc (100%) rename programs/system/MyKey/{trunk => }/makefile (100%) rename programs/system/MyKey/{trunk => }/mykey.ini (100%) rename programs/system/MyKey/{trunk => }/mykey_it.ini (100%) rename programs/system/MyKey/{trunk => }/string.inc (100%) rename programs/system/hdd_info/{trunk => }/Tupfile.lua (79%) rename programs/system/hdd_info/{trunk => }/build.bat (100%) rename programs/system/hdd_info/{trunk => }/build.sh (100%) rename programs/system/hdd_info/{trunk => }/hdd_info.asm (95%) rename programs/system/hdd_info/{trunk => }/makefile (100%) rename programs/system/icon/{trunk => }/Tupfile.lua (79%) rename programs/system/icon/{trunk => }/build.sh (100%) rename programs/system/icon/{trunk => }/build_de.bat (100%) rename programs/system/icon/{trunk => }/build_en.bat (100%) rename programs/system/icon/{trunk => }/build_ru.bat (100%) rename programs/system/icon/{trunk => }/dat_area.inc (100%) rename programs/system/icon/{trunk => }/data.inc (100%) rename programs/system/icon/{trunk => }/icon.asm (94%) rename programs/system/icon/{trunk => }/icons.dat (100%) rename programs/system/icon/{trunk => }/iconstrp.png (100%) rename programs/system/icon/{trunk => }/makefile (100%) rename programs/system/icon/{trunk => }/mouse.inc (100%) rename programs/system/kobra/{trunk => }/Makefile (90%) rename programs/system/kobra/{trunk => }/gpl3.txt (100%) rename programs/system/kobra/{trunk => }/history.txt (100%) rename programs/system/kobra/{trunk => }/kobra.c (100%) rename programs/system/kobra/{trunk => }/kobra.h (100%) rename programs/system/kobra/{trunk => }/kobra_st.s (100%) rename programs/system/kobra/{trunk => }/kolibri.ld (100%) rename programs/system/kobra/{trunk => }/readme.txt (100%) rename programs/system/kobra/{trunk => }/symbols2dbg.py (100%) rename programs/system/launch/{trunk => }/Tupfile.lua (74%) rename programs/system/launch/{trunk => }/gpl3.txt (100%) rename programs/system/launch/{trunk => }/history.txt (100%) rename programs/system/launch/{trunk => }/ipc.inc (100%) rename programs/system/launch/{trunk => }/kobra.inc (100%) rename programs/system/launch/{trunk => }/launch.asm (100%) rename programs/system/launch/{trunk => }/launch.cfg (100%) rename programs/system/launch/{trunk => }/readme.txt (100%) rename programs/system/launch/{trunk => }/thread.inc (100%) rename programs/system/launcher/{trunk => }/Tupfile.lua (100%) rename programs/system/launcher/{trunk => }/build_en.bat (100%) rename programs/system/launcher/{trunk => }/build_ru.bat (100%) rename programs/system/launcher/{trunk => }/launcher.asm (98%) rename programs/system/menu/{trunk => }/Tupfile.lua (79%) rename programs/system/menu/{trunk => }/build.bat (100%) rename programs/system/menu/{trunk => }/build.sh (100%) rename programs/system/menu/{trunk => }/makefile (100%) rename programs/system/menu/{trunk => }/menu.asm (99%) rename programs/system/menu/{trunk => }/readme.txt (100%) rename programs/system/mousemul/{trunk => }/Tupfile.lua (79%) rename programs/system/mousemul/{trunk => }/build.bat (100%) rename programs/system/mousemul/{trunk => }/build.sh (100%) rename programs/system/mousemul/{trunk => }/makefile (100%) rename programs/system/mousemul/{trunk => }/mousemul.asm (94%) rename programs/system/rdsave/{trunk => }/Tupfile.lua (79%) rename programs/system/rdsave/{trunk => }/app.ini (100%) rename programs/system/rdsave/{trunk => }/build.sh (100%) rename programs/system/rdsave/{trunk => }/build_en.bat (100%) rename programs/system/rdsave/{trunk => }/build_et.bat (100%) rename programs/system/rdsave/{trunk => }/build_it.bat (100%) rename programs/system/rdsave/{trunk => }/build_ru.bat (100%) rename programs/system/rdsave/{trunk => }/makefile (100%) rename programs/system/rdsave/{trunk => }/rdsave.asm (98%) rename programs/system/rdsave/{trunk => }/str.inc (100%) diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 41f57b192..11e097300 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -79,7 +79,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, { {"GAMES/DESCENT", build_type .. "/games/descent"}, {"SETTINGS/.shell", SRC_PROGS .. "/system/shell/bin/rus/.shell"}, {"SETTINGS/GAMES.INI", "ru_RU/settings/games.ini"}, - {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, + {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"}, {"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"}, }) elseif build_type == "en_US" then tup.append_table(img_files, { {"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"}, @@ -89,7 +89,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, { {"GAMES/DESCENT", "common/games/descent"}, {"SETTINGS/.shell", SRC_PROGS .. "/system/shell/bin/eng/.shell"}, {"SETTINGS/GAMES.INI", "common/settings/games.ini"}, - {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, + {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, }) elseif build_type == "es_ES" then tup.append_table(img_files, { {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"}, @@ -98,7 +98,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, { {"GAMES/DESCENT", "common/games/descent"}, {"SETTINGS/.shell", SRC_PROGS .. "/system/shell/bin/eng/.shell"}, {"SETTINGS/GAMES.INI", "common/settings/games.ini"}, - {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, + {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, }) elseif build_type == "it_IT" then tup.append_table(img_files, { {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"}, @@ -106,7 +106,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, { {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"}, {"GAMES/DESCENT", "common/games/descent"}, {"SETTINGS/.shell", SRC_PROGS .. "/system/shell/bin/eng/.shell"}, - {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey_it.ini"}, + {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey_it.ini"}, {"SETTINGS/GAMES.INI", "common/settings/games.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, }) else tup.append_table(img_files, { @@ -116,7 +116,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, { {"GAMES/DESCENT", "common/games/descent"}, {"SETTINGS/.shell", SRC_PROGS .. "/system/shell/bin/eng/.shell"}, {"SETTINGS/GAMES.INI", "common/settings/games.ini"}, - {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, + {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, }) end @@ -402,7 +402,7 @@ tup.append_table(img_files, { {"@DOCKY", VAR_PROGS .. "/system/docky/docky"}, {"@HA", VAR_PROGS .. "/other/ha/HA"}, {"@ICON", VAR_PROGS .. "/system/icon_new/icon"}, - {"@MENU", VAR_PROGS .. "/system/menu/trunk/menu"}, + {"@MENU", VAR_PROGS .. "/system/menu/menu"}, {"@NOTIFY", VAR_PROGS .. "/system/notify3/notify"}, {"@OPEN", VAR_PROGS .. "/system/open/open"}, {"@RESHARE", VAR_PROGS .. "/system/reshare/reshare"}, @@ -426,18 +426,18 @@ tup.append_table(img_files, { {"ESKIN", VAR_PROGS .. "/system/eskin/trunk/eskin"}, {"FSPEED", VAR_PROGS .. "/testing/fspeed/fspeed"}, {"GMON", VAR_PROGS .. "/system/gmon/gmon"}, - {"HDD_INFO", VAR_PROGS .. "/system/hdd_info/trunk/hdd_info"}, + {"HDD_INFO", VAR_PROGS .. "/system/hdd_info/hdd_info"}, {"KBD", VAR_PROGS .. "/testing/kbd/trunk/kbd"}, {"KPACK", VAR_PROGS .. "/other/kpack/trunk/kpack"}, - {"LAUNCHER", VAR_PROGS .. "/system/launcher/trunk/launcher"}, + {"LAUNCHER", VAR_PROGS .. "/system/launcher/launcher"}, {"LOADDRV", VAR_PROGS .. "/system/loaddrv/loaddrv"}, {"MAGNIFY", VAR_PROGS .. "/system/magnify/magnify"}, {"MGB", VAR_PROGS .. "/testing/mgb/trunk/mgb"}, - {"MOUSEMUL", VAR_PROGS .. "/system/mousemul/trunk/mousemul"}, + {"MOUSEMUL", VAR_PROGS .. "/system/mousemul/mousemul"}, {"MADMOUSE", VAR_PROGS .. "/other/madmouse/madmouse"}, - {"MYKEY", VAR_PROGS .. "/system/MyKey/trunk/MyKey"}, + {"MYKEY", VAR_PROGS .. "/system/MyKey/MyKey"}, {"PCIDEV", VAR_PROGS .. "/testing/pcidev/trunk/PCIDEV"}, - {"RDSAVE", VAR_PROGS .. "/system/rdsave/trunk/rdsave"}, + {"RDSAVE", VAR_PROGS .. "/system/rdsave/rdsave"}, {"RTFREAD", VAR_PROGS .. "/other/rtfread/rtfread"}, {"SEARCHAP", VAR_PROGS .. "/system/searchap/searchap"}, {"SCRSHOOT", VAR_PROGS .. "/media/scrshoot/scrshoot"}, diff --git a/programs/build_all.bat b/programs/build_all.bat index 6fbd8b172..b020e8b4f 100644 --- a/programs/build_all.bat +++ b/programs/build_all.bat @@ -65,16 +65,16 @@ fasm system\skincfg\trunk\skincfg.asm %BIN%\skincfg fasm system\docpack\docpack.asm %BIN%\docpack fasm system\end\trunk\end.asm %BIN%\end fasm system\gmon\gmon.asm %BIN%\gmon -fasm system\icon\trunk\icon.asm %BIN%\icon +fasm system\icon\icon.asm %BIN%\icon fasm system\kbd\trunk\kbd.ASM %BIN%\kbd -fasm system\launcher\trunk\launcher.asm %BIN%\launcher -fasm system\menu\trunk\menu.asm %BIN%\@menu +fasm system\launcher\launcher.asm %BIN%\launcher +fasm system\menu\menu.asm %BIN%\@menu fasm system\mgb\trunk\mgb.asm %BIN%\mgb -fasm system\mousemul\trunk\mousemul.asm %BIN%\mousemul +fasm system\mousemul\mousemul.asm %BIN%\mousemul fasm system\PANEL\trunk\@TASKBAR.ASM %BIN%\@TASKBAR fasm system\pcidev\trunk\pcidev.asm %BIN%\pcidev fasm system\RB\trunk\@RB.ASM %BIN%\@RB -fasm system\rdsave\trunk\rdsave.asm %BIN%\rdsave +fasm system\rdsave\rdsave.asm %BIN%\rdsave fasm system\run\trunk\run.asm %BIN%\run fasm system\setup\trunk\setup.asm %BIN%\setup fasm system\skinsel\skinsel.asm %BIN%\skinsel @@ -238,9 +238,9 @@ fasm media\midamp\trunk\midamp.asm %BIN%\nightbuild\midamp fasm develop\heed\trunk\heed.asm %BIN%\nightbuild\heed fasm develop\tinypad\trunk\tinypad.asm %BIN%\nightbuild\tinypad fasm system\skincfg\trunk\skincfg.asm %BIN%\nightbuild\skincfg -fasm system\hdd_info\trunk\hdd_info.asm %BIN%\nightbuild\hdd_info +fasm system\hdd_info\hdd_info.asm %BIN%\nightbuild\hdd_info fasm system\mgb\trunk\mgb.asm %BIN%\nightbuild\mgb -fasm system\rdsave\trunk\rdsave.asm %BIN%\nightbuild\rdsave +fasm system\rdsave\rdsave.asm %BIN%\nightbuild\rdsave fasm other\kpack\trunk\kpack.asm %BIN%\nightbuild\kpack fasm other\rtfread\rtfread.asm %BIN%\nightbuild\rtfread ;restore diff --git a/programs/system/MyKey/trunk/ASPAPI.INC b/programs/system/MyKey/ASPAPI.INC similarity index 94% rename from programs/system/MyKey/trunk/ASPAPI.INC rename to programs/system/MyKey/ASPAPI.INC index 625dee015..c2dc0352b 100644 --- a/programs/system/MyKey/trunk/ASPAPI.INC +++ b/programs/system/MyKey/ASPAPI.INC @@ -1,163 +1,165 @@ -include '../../../proc32.inc' - -macro start_draw_window x,y,xsize,ysize,areacolor,caption,capsize -{ - ;pusha - 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, x*65536+xsize ; [x start] *65536 + [x size] - mov ecx, y*65536+ysize ; [y start] *65536 + [y size] - mov edx, areacolor ; color of work area RRGGBB - mov esi, 0x00334455 ; color of grab bar RRGGBB - mov edi, 0x00ddeeff ; color of frames RRGGBB - int 0x40 - ; WINDOW LABEL - mov eax, 4 ; function 4 : write text to window - mov ebx, 8*65536+8 ; [x start] *65536 + [y start] - mov ecx, 0x0;0ffffff ; color of text RRGGBB - mov edx, caption ; pointer to text beginning - mov esi, capsize ; text length - int 0x40 - ;popa -} - -macro end_draw_window -{ - mov eax, 12 ; end of redraw - mov ebx, 2 - int 0x40 -} - -macro change_window_place_size x,y,xsize,ysize -{ - mov eax, 67 ; function 67 : replace and/or resize window - mov ebx, x - mov ecx, y - mov edx, xsize - mov esi, ysize - int 0x40 -} - -proc draw_button stdcall, x:dword, y:dword, xsize:dword, ysize:dword, \ - id:dword, butcolor:dword, text:dword, textlen:byte, textcolor:dword - - pusha - mov ebx, dword [x] - shl ebx, 16 - add ebx, dword [xsize] ; [x start] *65536 + [x size] - - mov ecx, dword [y] - shl ecx, 16 - add ecx, dword [ysize] ; [y start] *65536 + [y size] - - mov edx, dword [id] ; button id - mov esi, dword [butcolor] ; button color RRGGBB - mov eax, 8 ; function 8 : define and draw button - int 0x40 - - mov ebx, dword [x] - add ebx, 5 - shl ebx, 16 - mov eax, dword [ysize] - sub eax, 5 - shr eax, 1 - add ebx, eax - add ebx, dword [y] ;mov ebx, (x+5)*65536+y+(ysize-5)/2 ; Draw button text - - mov ecx, dword [textcolor] - mov edx, dword [text] - xor eax, eax - mov al, byte [textlen] - mov esi, eax - mov eax, 4 - int 0x40 - popa -ret -endp - -;macro outtextxy x,y,prompt,prompt_len,color -;{ -proc outtextxy stdcall, x:dword, y:dword, prompt:dword, prompt_len:dword, color:dword - pusha - mov eax, 4 - mov ebx, dword [x] ; draw info text with function 4 - shl ebx, 16 - or ebx, dword [y] - mov ecx, dword [color] - mov edx, dword [prompt] - mov esi, dword [prompt_len] - test esi, esi - jnz @f - or ecx, 0x80000000 - @@: - int 0x40 - popa -ret -endp -;} - -;proc bar x:dword, y:dword, xsize:dword, ysize:dword, color:dword -macro bar x, y, xsize, ysize, color -{ - pusha - mov eax, 13 - ;mov ebx, [x] - ;shl ebx, 16 - ;add ebx, [xsize] - ;mov ecx, [y] - ;shl ecx, 16 - ;add ecx, [ysize] - ;mov edx, [color] - mov ebx, x*65536+xsize - mov ecx, y*65536+ysize - mov edx, color - - int 0x40 - popa -;ret -;endp -} - -macro line x1,y1,x2,y2,color -{ - pusha - mov eax, 38 - mov ebx, x1*65536+x2 - mov ecx, y1*65536+y2 - mov edx, color - int 0x40 - popa -} - -macro rectangle x,y,xsize,ysize,color -{ - x2=x+xsize - y2=y+ysize - line x,y,x2,y,color - line x,y,x,y2,color - line x,y2,x2,y2,color - line x2,y,x2,y2,color -} - -macro rectangle2 x,y,xsize,ysize,color1,color2 -{ - x2=x+xsize - y2=y+ysize - line x,y,x2,y,color1 - line x,y,x,y2,color1 - line x,y2,x2,y2,color2 - line x2,y,x2,y2,color2 -} - -macro putpixel x,y,color -{ - mov eax, 1 - mov ebx, x - mov ecx, y - mov edx, color - int 0x40 -} - +; SPDX-License-Identifier: NOASSERTION +; + +include '../../proc32.inc' + +macro start_draw_window x,y,xsize,ysize,areacolor,caption,capsize +{ + ;pusha + 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, x*65536+xsize ; [x start] *65536 + [x size] + mov ecx, y*65536+ysize ; [y start] *65536 + [y size] + mov edx, areacolor ; color of work area RRGGBB + mov esi, 0x00334455 ; color of grab bar RRGGBB + mov edi, 0x00ddeeff ; color of frames RRGGBB + int 0x40 + ; WINDOW LABEL + mov eax, 4 ; function 4 : write text to window + mov ebx, 8*65536+8 ; [x start] *65536 + [y start] + mov ecx, 0x0;0ffffff ; color of text RRGGBB + mov edx, caption ; pointer to text beginning + mov esi, capsize ; text length + int 0x40 + ;popa +} + +macro end_draw_window +{ + mov eax, 12 ; end of redraw + mov ebx, 2 + int 0x40 +} + +macro change_window_place_size x,y,xsize,ysize +{ + mov eax, 67 ; function 67 : replace and/or resize window + mov ebx, x + mov ecx, y + mov edx, xsize + mov esi, ysize + int 0x40 +} + +proc draw_button stdcall, x:dword, y:dword, xsize:dword, ysize:dword, \ + id:dword, butcolor:dword, text:dword, textlen:byte, textcolor:dword + + pusha + mov ebx, dword [x] + shl ebx, 16 + add ebx, dword [xsize] ; [x start] *65536 + [x size] + + mov ecx, dword [y] + shl ecx, 16 + add ecx, dword [ysize] ; [y start] *65536 + [y size] + + mov edx, dword [id] ; button id + mov esi, dword [butcolor] ; button color RRGGBB + mov eax, 8 ; function 8 : define and draw button + int 0x40 + + mov ebx, dword [x] + add ebx, 5 + shl ebx, 16 + mov eax, dword [ysize] + sub eax, 5 + shr eax, 1 + add ebx, eax + add ebx, dword [y] ;mov ebx, (x+5)*65536+y+(ysize-5)/2 ; Draw button text + + mov ecx, dword [textcolor] + mov edx, dword [text] + xor eax, eax + mov al, byte [textlen] + mov esi, eax + mov eax, 4 + int 0x40 + popa +ret +endp + +;macro outtextxy x,y,prompt,prompt_len,color +;{ +proc outtextxy stdcall, x:dword, y:dword, prompt:dword, prompt_len:dword, color:dword + pusha + mov eax, 4 + mov ebx, dword [x] ; draw info text with function 4 + shl ebx, 16 + or ebx, dword [y] + mov ecx, dword [color] + mov edx, dword [prompt] + mov esi, dword [prompt_len] + test esi, esi + jnz @f + or ecx, 0x80000000 + @@: + int 0x40 + popa +ret +endp +;} + +;proc bar x:dword, y:dword, xsize:dword, ysize:dword, color:dword +macro bar x, y, xsize, ysize, color +{ + pusha + mov eax, 13 + ;mov ebx, [x] + ;shl ebx, 16 + ;add ebx, [xsize] + ;mov ecx, [y] + ;shl ecx, 16 + ;add ecx, [ysize] + ;mov edx, [color] + mov ebx, x*65536+xsize + mov ecx, y*65536+ysize + mov edx, color + + int 0x40 + popa +;ret +;endp +} + +macro line x1,y1,x2,y2,color +{ + pusha + mov eax, 38 + mov ebx, x1*65536+x2 + mov ecx, y1*65536+y2 + mov edx, color + int 0x40 + popa +} + +macro rectangle x,y,xsize,ysize,color +{ + x2=x+xsize + y2=y+ysize + line x,y,x2,y,color + line x,y,x,y2,color + line x,y2,x2,y2,color + line x2,y,x2,y2,color +} + +macro rectangle2 x,y,xsize,ysize,color1,color2 +{ + x2=x+xsize + y2=y+ysize + line x,y,x2,y,color1 + line x,y,x,y2,color1 + line x,y2,x2,y2,color2 + line x2,y,x2,y2,color2 +} + +macro putpixel x,y,color +{ + mov eax, 1 + mov ebx, x + mov ecx, y + mov edx, color + int 0x40 +} diff --git a/programs/system/MyKey/trunk/MyKey.asm b/programs/system/MyKey/MyKey.asm similarity index 99% rename from programs/system/MyKey/trunk/MyKey.asm rename to programs/system/MyKey/MyKey.asm index 809c091cb..b4be2d9cc 100644 --- a/programs/system/MyKey/trunk/MyKey.asm +++ b/programs/system/MyKey/MyKey.asm @@ -1,4 +1,6 @@ +; SPDX-License-Identifier: NOASSERTION ; + ; MyKey. Version 0.2. ; ; Author: Asper @@ -23,13 +25,13 @@ include 'lang.inc' ; Language support for locales: it_IT, en_US. include 'string.inc' ;include 'macros.inc' -include '../../../macros.inc' +include '../../macros.inc' include 'ASPAPI.INC' ;include 'editbox_ex.mac' -include '../../../develop/libraries/box_lib/trunk/box_lib.mac' +include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;include 'load_lib.mac' -include '../../../develop/libraries/box_lib/load_lib.mac' -include '../../../dll.inc' +include '../../develop/libraries/box_lib/load_lib.mac' +include '../../dll.inc' include 'debug.inc' DEBUG equ 0;1 diff --git a/programs/system/MyKey/trunk/ReadMe.txt b/programs/system/MyKey/ReadMe.txt similarity index 100% rename from programs/system/MyKey/trunk/ReadMe.txt rename to programs/system/MyKey/ReadMe.txt diff --git a/programs/system/MyKey/trunk/Tupfile.lua b/programs/system/MyKey/Tupfile.lua similarity index 79% rename from programs/system/MyKey/trunk/Tupfile.lua rename to programs/system/MyKey/Tupfile.lua index 3b1a5cc5c..f911b2dbb 100644 --- a/programs/system/MyKey/trunk/Tupfile.lua +++ b/programs/system/MyKey/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/MyKey/trunk/debug.inc b/programs/system/MyKey/debug.inc similarity index 100% rename from programs/system/MyKey/trunk/debug.inc rename to programs/system/MyKey/debug.inc diff --git a/programs/system/MyKey/trunk/makefile b/programs/system/MyKey/makefile similarity index 100% rename from programs/system/MyKey/trunk/makefile rename to programs/system/MyKey/makefile diff --git a/programs/system/MyKey/trunk/mykey.ini b/programs/system/MyKey/mykey.ini similarity index 100% rename from programs/system/MyKey/trunk/mykey.ini rename to programs/system/MyKey/mykey.ini diff --git a/programs/system/MyKey/trunk/mykey_it.ini b/programs/system/MyKey/mykey_it.ini similarity index 100% rename from programs/system/MyKey/trunk/mykey_it.ini rename to programs/system/MyKey/mykey_it.ini diff --git a/programs/system/MyKey/trunk/string.inc b/programs/system/MyKey/string.inc similarity index 100% rename from programs/system/MyKey/trunk/string.inc rename to programs/system/MyKey/string.inc diff --git a/programs/system/hdd_info/trunk/Tupfile.lua b/programs/system/hdd_info/Tupfile.lua similarity index 79% rename from programs/system/hdd_info/trunk/Tupfile.lua rename to programs/system/hdd_info/Tupfile.lua index 98476cc6d..2f811501d 100644 --- a/programs/system/hdd_info/trunk/Tupfile.lua +++ b/programs/system/hdd_info/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/hdd_info/trunk/build.bat b/programs/system/hdd_info/build.bat similarity index 100% rename from programs/system/hdd_info/trunk/build.bat rename to programs/system/hdd_info/build.bat diff --git a/programs/system/hdd_info/trunk/build.sh b/programs/system/hdd_info/build.sh similarity index 100% rename from programs/system/hdd_info/trunk/build.sh rename to programs/system/hdd_info/build.sh diff --git a/programs/system/hdd_info/trunk/hdd_info.asm b/programs/system/hdd_info/hdd_info.asm similarity index 95% rename from programs/system/hdd_info/trunk/hdd_info.asm rename to programs/system/hdd_info/hdd_info.asm index 132f9ccf8..a47fee4e3 100644 --- a/programs/system/hdd_info/trunk/hdd_info.asm +++ b/programs/system/hdd_info/hdd_info.asm @@ -1,1957 +1,1963 @@ -; v. 0.2 -; last update: 19/09/2010 -; written by: Marat Zakiyanov aka Mario79, aka Mario -; changes: select path with OpenDialog -; show 2 different path for Info and SMART files -; draw number of page -;--------------------------------------------------------------------- -; v. 0.11: 15.09.2009 staper@inbox.ru -;--------------------------------------------------------------------- -; Макросы load_lib.mac, editbox_ex и библиотеку box_lib.obj создали: -; - Alexey Teplov / Алексей Теплов -; Mario79, Mario - Marat Zakiyanov / Марат Закиянов -; Diamondz - Evgeny Grechnikov / Евгений Гречников и др. -;--------------------------------------------------------------------- -use32 - org 0 - - db 'MENUET01' - dd 1 - dd START - dd IM_END - dd I_END ;(i_end+200) and not 3 - dd stacktop ;(i_end+200) and not 3 - dd 0x0 ;buf_cmd_lin - dd cur_dir_path - -PRIMARY_CHANNEL equ 0x1f7 -SECONDARY_CHANNEL equ 0x177 -; Ручной поиск портов по шине PCI (преимущественно для SATA): -; mcall SF_SYSTEM_SET,SSF_ACCESS_PCI,1 ;разрешить низкоуровневый доступ к PCI -; mcall SF_PCI,0x0006,((((0x1f shl 3) + 01) shl 8) + 0x10) ;см. ф-ю 62 -; ax = 1 - стандартные порты (константы выше), или нестандартные (168-16f,1e8-1ef) -; Пример: -; Fnc 02: 10-0x1c01,14-0x18f5,18-0x18f9,1c-0x18f1,BMA-0x1811,00000000 -; Fnc 01: 10-1,14-1,18-1,1c-1,BMA-0x18e1,0x18d1 -; Регистр по смещению 0х10 для функции 02 содержит 0x1c01 (порты 0х1с00-0х1с07) - -include 'lang.inc' ; language support - -; Режимы Legacy, Native и пр. меняются через BIOS. -include '../../../config.inc' ;for nightbuild -include '../../../macros.inc' -include '../../../develop/libraries/box_lib/trunk/box_lib.mac' -include '../../../KOSfuncs.inc' -include '../../../load_lib.mac' - @use_library -;--------------------------------------------------------------------- -macro ab { - add ebx,455*65536 - } -;--------------------------------------------------------------------- -macro sb { - sub ebx,455*65536-12 - } -;--------------------------------------------------------------------- -macro ad { - add ebx,12 - } -;--------------------------------------------------------------------- -macro wba num,text { -@@: - bt di,num - jnc @f - ad - mcall SF_DRAW_TEXT,,0x80000000,text - } -;--------------------------------------------------------------------- -macro wba num,text { -@@: - bt di,num - jnc @f - ad - mcall SF_DRAW_TEXT,,0x80000000,text - } -;--------------------------------------------------------------------- -macro sc num,text { - cmp al,num - jne @f - mov edx,text -@@: - } -;--------------------------------------------------------------------- -macro mz text,str1,str2,str3 { - mcall SF_DRAW_TEXT,,0x80444444,text - ab - mov edx,ebx - push ebx - str1 - str2 - str3 - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - pop ebx - sb - } -;--------------------------------------------------------------------- -START: -; load_library boxlib_name,buf_cmd_lin,system_path,Box_lib_import - mcall SF_SYS_MISC,SSF_HEAP_INIT - -load_libraries l_libs_start,end_l_libs - - cmp eax,-1 - jz close -;--------------------------------------------------------------------- - mov edi,filename_area - mov esi,default_Info+5 ;default.info - call copy_str_1 - - mov edi,filename_area2 - mov esi,default_SMART+5 ;default.smart - call copy_str_1 - - mov edi,fname_Info - mov esi,default_Info ;/sys/default.info - call copy_str_1 - - mov edi,fname_SMART ;/sys/default.smart -; cmp byte [edi], 0 -; jne skin_path_ready - mov esi,default_SMART - call copy_str_1 -;skin_path_ready: -;--------------------------------------------------------------------- -;OpenDialog initialisation - push dword OpenDialog_data - call [OpenDialog_Init] - - push dword OpenDialog_data2 - call [OpenDialog_Init] - -; prepare for PathShow - push dword PathShow_data_1 - call [PathShow_prepare] - - push dword PathShow_data_2 - call [PathShow_prepare] -;--------------------------------------------------------------------- - - mcall SF_SET_EVENTS_MASK,0x27 -;--------------------------------------------------------------------- -redraw_all: -redraw: - call draw_window -;--------------------------------------------------------------------- -still: - mcall SF_WAIT_EVENT - dec al - jz redraw_all - dec al - jz key - dec al - jz button -;--------------------------------------------------------------------- -mouse: - bt [flags],2 - jnc still - mcall SF_MOUSE_GET,SSF_BUTTON - test al,al - jz still - push dword Option_boxs - call [option_box_mouse] - jmp still -;--------------------------------------------------------------------- -copy_str_1: - xor eax,eax - cld -@@: - lodsb - stosb - test eax,eax - jnz @b - ret -;--------------------------------------------------------------------- -draw_PathShow: - pusha - mcall SF_DRAW_RECT,<125,420>,<83,15>,0xFFFFED - mcall SF_DRAW_RECT,,<100,15>, -; draw for PathShow - push dword PathShow_data_1 - call [PathShow_draw] - - push dword PathShow_data_2 - call [PathShow_draw] - popa - ret -;--------------------------------------------------------------------- -draw_window: - mcall SF_REDRAW,SSF_BEGIN_DRAW - xor esi,esi - mcall SF_CREATE_WINDOW,<100,580>,<100,350>,0x34ffffff,,title - mcall SF_DEFINE_BUTTON,<1,30>,<1,15>,2,0x365732 - mcall ,<35,38>,,3, -; mcall ,<77,38>,,6, - mcall ,<120,45>,,7, - - mcall ,<195,20>,,4, ;влево,вправо - mcall ,<217,20>,,5, - mcall SF_DRAW_TEXT,<4,6>,0x80ffffff,menu_text - - mcall ,<260,6>,0x80000000,page_text - movzx ecx, byte [page_num] - mcall SF_DRAW_NUMBER,0x800a0000,,<300,6>,0x0 - - mcall SF_DRAW_LINE,<2,535>,<20,20>,0x00aabbaa - bt [flags],2 - jnc @f - call show_ControlBlock - mcall SF_DRAW_TEXT,<4,125>,0x80FF0000,[error_text] - jmp .end -@@: - bt [flags],6 - jnc @f - call show_TestBlock - jmp .end -@@: - bt [flags],7 - jnc @f - call show_InfoBlock - jmp .end -@@: - bt [flags],8 - jnc .end - call show_SmartBlock -.end: - mcall SF_REDRAW,SSF_END_DRAW - ret -;--------------------------------------------------------------------- -key: - mcall SF_GET_KEY -; push edit1 -; call [edit_box_key] -; push edit1 -; call [edit_box_draw] - jmp still -;--------------------------------------------------------------------- -button: - mcall SF_GET_BUTTON - cmp ah,1 - jne @f -close: - mcall SF_TERMINATE_PROCESS -@@: - cmp ah,2 - jne @f - call get_InfoBlock - mov ax,[flags] - btr ax,2 - btr ax,6 - bts ax,7 - btr ax,8 - mov [flags],ax - mov [page_num],1 - jmp redraw -;--------------------------------------------------------------------- -@@: - cmp ah,3 - jne @f - call get_SmartBlock - mov [page_num],1 - mov ax,[flags] - btr ax,2 - btr ax,6 - btr ax,7 - bts ax,8 - mov [flags],ax - jmp redraw -;--------------------------------------------------------------------- -@@: - cmp ah,4 - jne @f - cmp [page_num],1 - je still - dec [page_num] - jmp redraw -;--------------------------------------------------------------------- -@@: - cmp ah,5 - jne @f - cmp [page_num],5 - je still - inc [page_num] - jmp redraw -;--------------------------------------------------------------------- -@@: - cmp ah,6 - jne @f - mov ax,[flags] - btr ax,2 - btr ax,6 - btr ax,7 - btr ax,8 - mov [flags],ax - jmp redraw -;--------------------------------------------------------------------- -@@: - cmp ah,7 - jne @f - mov ax,[flags] - bts ax,2 - btr ax,6 - btr ax,7 - btr ax,8 - mov [flags],ax -@@: - cmp ah,8 - jne @f - bts [flags],9 - call get_SmartBlock - jmp still -;--------------------------------------------------------------------- -@@: - cmp ah,9 ; Save Info - jne @f -; invoke OpenDialog - mov [OpenDialog_data.type],dword 1 - push dword OpenDialog_data - call [OpenDialog_Start] - cmp [OpenDialog_data.status],1 - jne still -; prepare for PathShow - push dword PathShow_data_1 - call [PathShow_prepare] - call draw_PathShow - - btr [flags],4 - jmp save_file -;--------------------------------------------------------------------- -@@: - cmp ah,10 ; Load Info - jne @f -; invoke OpenDialog - mov [OpenDialog_data.type],dword 0 - push dword OpenDialog_data - call [OpenDialog_Start] - cmp [OpenDialog_data.status],1 - jne still -; prepare for PathShow - push dword PathShow_data_1 - call [PathShow_prepare] - call draw_PathShow - - btr [flags],4 - jmp open_file -;--------------------------------------------------------------------- -@@: - cmp ah,11 ; Save SMART - jne @f -; invoke OpenDialog - mov [OpenDialog_data2.type],dword 1 - push dword OpenDialog_data2 - call [OpenDialog_Start] - cmp [OpenDialog_data2.status],1 - jne still -; prepare for PathShow - push dword PathShow_data_2 - call [PathShow_prepare] - call draw_PathShow - - bts [flags],4 - jmp save_file -;--------------------------------------------------------------------- -@@: - cmp ah,12 ; Load SMART - jne redraw -; invoke OpenDialog - mov [OpenDialog_data2.type],dword 0 - push dword OpenDialog_data2 - call [OpenDialog_Start] - cmp [OpenDialog_data2.status],1 - jne still -; prepare for PathShow - push dword PathShow_data_2 - call [PathShow_prepare] - call draw_PathShow - - bts [flags],4 - jmp open_file -;--------------------------------------------------------------------- -open_file: - mov [func_70.func_n],SSF_READ_FILE - mov [func_70.param3],512 - mov [func_70.param4],InfoArray - mov [func_70.name],filename_area - bt [flags],4 - jnc @f - mov [func_70.param4],SmartArray - mov [func_70.param3],1024 - mov [func_70.name],filename_area2 -@@: - mcall SF_FILE,func_70 - test al,al ;файл найден? - jnz .1 - mov ax,[flags] - bts ax,0 - btr ax,7 - btr ax,8 - btr ax,6 - btr ax,2 - bt ax,4 - jc @f - bts ax,7 - mov [flags],ax - jmp good -@@: - bts ax,8 - mov [flags],ax - jmp redraw_all -.1: - bt [flags],4 - jnc @f - mov [error_text],error_open_file_string_SMART - jmp redraw_all -@@: - mov [error_text],error_open_file_string_Info - jmp redraw_all -;--------------------------------------------------------------------- -save_file: ;сохраняем файл - mov [func_70.func_n],SSF_CREATE_FILE - mov [func_70.param3],512 - mov [func_70.param4],InfoArray - mov [func_70.name],filename_area - bt [flags],4 - jnc @f - mov [func_70.param4],SmartArray - mov [func_70.param3],1024 - mov [func_70.name],filename_area2 -@@: - mcall SF_FILE,func_70 - test al,al ;сохранён удачно? - jz good - bt [flags],4 - jnc @f - mov [error_text],error_save_file_string_SMART - jmp redraw_all -@@: - mov [error_text],error_save_file_string_Info - jmp redraw_all -;--------------------------------------------------------------------- -good: - mov [error_text],no_error_text - jmp redraw_all -;--------------------------------------------------------------------- -ports_: - mov eax,[option_group1] - cmp eax,op1 - jne @f - mov edx,PRIMARY_CHANNEL - btr [flags],5 - jmp .0 -;--------------------------------------------------------------------- -@@: - cmp eax,op2 - jne @f - mov edx,PRIMARY_CHANNEL - bts [flags],5 - jmp .0 -;--------------------------------------------------------------------- -@@: - cmp eax,op3 - jbe @f - mov edx,SECONDARY_CHANNEL - btr [flags],5 - jmp .0 -;--------------------------------------------------------------------- -@@: - mov edx,SECONDARY_CHANNEL - bts [flags],5 -.0: - mov ecx,edx - sub ecx,7 - mcall SF_SET_PORTS,0 - ret -;--------------------------------------------------------------------- -get_InfoBlock: - call ports_ - push ecx edx - xor ecx,ecx -.1: - in al,dx ;Проверить готовность - dec cx ;необходимо проверять и бит 7, однако работает ... - jz .error - bt ax,6 - jnc .1 - - dec dx - in al,dx - mov bx,ax ;сохраняем бит выбора устройтсва - btr ax,4 - bt [flags],5 - jnc @f - bts ax,4 -@@: - out dx,al - inc dx - mov al,0xec - out dx,al - - push bx - mcall SF_SLEEP,10 - pop bx - xor cx,cx -.2: - in al,dx ;Проверить готовность - dec cx - jz .error - bt ax,6 - jnc .2 - - mov esi,InfoArray ;Получить информацию - xor edi,edi - sub dx,7 -.3: - in ax,dx - xchg al,ah - mov [esi+edi*2],ax - inc edi - cmp edi,256 - jne .3 - bts [flags],0 - btr [flags],2 - btr [flags],3 - - push bx - mcall SF_SLEEP,10 - pop bx - - mov ax,bx - add dx,6 - out dx,al - pop edx ecx - mcall SF_SET_PORTS,1 - ret -;--------------------------------------------------------------------- -.error: - bts [flags],3 - pop edx ecx - mcall SF_SET_PORTS,1 - ret -;--------------------------------------------------------------------- -get_SmartBlock: - call ports_ - push ecx edx - xor ecx,ecx -.1: - in al,dx ;Проверить готовность - dec cx - jz .error - bt ax,6 - jnc .1 - - dec dx - in al,dx - mov cx,ax ;сохраняем бит выбора устройтсва - btr ax,4 - bt [flags],5 - jnc @f - bts ax,4 -@@: - out dx,al - inc dx - - bt [flags],9 ;S.M.A.R.T. on/off - jnc @f - sub dx,3 - mov al,0x4f - out dx,al - inc dx - mov al,0xc2 - out dx,al - sub dx,4 - mov al,0xd8 - btc [flags],10 - jnc .2 - inc al -.2: - out dx,al - add dx,6 - mov al,0xb0 - out dx,al - dec dx - mov ax,cx - out dx,ax - btr [flags],9 - btr [flags],1 - jmp .end -;--------------------------------------------------------------------- -@@: - sub dx,3 - mov al,0x4f - out dx,al - inc dx - mov al,0xc2 - out dx,al - sub dx,4 - mov al,0xd0 - out dx,al - add dx,6 - mov al,0xb0 - out dx,al - - mcall SF_SLEEP,10 - - mov esi,SmartArray ;Получить информацию - xor edi,edi - sub dx,7 -.3: - in ax,dx - xchg al,ah - mov [esi+edi*2],ax - inc edi - cmp edi,256 - jne .3 - - mcall SF_SLEEP,10 - - add dx,4 - mov al,0x4f - out dx,al - inc dx - mov al,0xc2 - out dx,al - sub dx,4 - mov al,0xd1 - out dx,al - add dx,6 - mov al,0xb0 - out dx,al - - mcall SF_SLEEP,10 - - sub dx,7 -.4: - in ax,dx - xchg al,ah - mov [esi+edi*2],ax - inc edi - cmp edi,256*2 - jne .4 - - bts [flags],1 - btr [flags],3 - mov ax,cx - add dx,6 - out dx,al -.end: - pop edx ecx - mcall SF_SET_PORTS,1 - ret -;--------------------------------------------------------------------- -.error: - bts [flags],3 - pop edx ecx - mcall SF_SET_PORTS,1 - ret -;--------------------------------------------------------------------- -show_ControlBlock: - mcall SF_DRAW_TEXT,<4,30>,0x80000000,ctrl_text1 - mcall ,<4,45>,,ctrl_text2 - push dword Option_boxs - call [option_box_draw] -; push dword edit1 -; call [edit_box_draw] - call draw_PathShow - - mcall SF_DEFINE_BUTTON,<3,80>,<60,15>,8,0xf0f0f0 - mcall ,<50,30>,<82,15>,9, ; Save Info - mcall ,<90,30>,,10, ; Load Info - mcall ,<50,30>,<100,15>,11, ; Save SMART - mcall ,<90,30>,,12, ; Load SMART - mcall SF_DRAW_TEXT,<4,87>,0x80000000,edbx_text1 - mcall ,<7,64>,,smrt_text1 - mcall ,<4,105>,,edbx_text2 -show_TestBlock: - ret -;--------------------------------------------------------------------- -show_InfoBlock: - bt [flags],0 - jnc .end - bt [flags],3 - jc .end - mov al,[page_num] - dec al - jz .page1 - dec al - jz .page2 - dec al - je .page3 - dec al - jz .page4 - dec al - jz .page5 -.end: - ret -;--------------------------------------------------------------------- -.page1: -;TABLE 1 of 11 - mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.10_19 - ab ; add ebx,300*65536 - mcall ,,0x0,(InfoArray+10*2),((19-10)+1)*2 - sb ; sub ebx,300*65536-12 - mcall ,,0x80444444,t.23_26 - ab - mcall ,,0x0,(InfoArray+23*2),((26-23)+1)*2 - sb - mcall ,,0x80444444,t.27_46 - ab - mcall ,,0x0,(InfoArray+27*2),((46-27)+1)*2 - sb - mcall ,,0x80444444,t.type - ab - mov di,[InfoArray+222*2] -@@: - bt di,4 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.222.12.1 -@@: - bt di,4 - jc @f - mcall SF_DRAW_TEXT,,0x80000000,t.222.12.0 -@@: - sb - mcall SF_DRAW_TEXT,,0x80444444,t.60_61 - ab - mov edx,ebx - push ebx - mov ecx, [InfoArray+60*2] - bswap ecx - ror ecx,16 - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - shr ecx,11 ;LBA in MB - add edx,70*65536 - mcall ,,,,0x459a - pop ebx - - sb ;CHS - mcall SF_DRAW_TEXT,,0x80444444,t.chs - ab - mov edx,ebx - push ebx - movzx ecx, word [InfoArray+2] - xchg ch,cl - mcall SF_DRAW_NUMBER,0x80050000,,,0x0 - add edx,35*65536 - movzx ecx, word [InfoArray+6] - xchg ch,cl - mcall SF_DRAW_NUMBER,0x80040000,,,0x0 - add edx,15*65536 - movzx ecx, word [InfoArray+12] - xchg ch,cl - mcall ;SF_DRAW_NUMBER,0x80040000,,,0x0 - add edx,20*65536 - push ebx edx - xor edx,edx - movzx eax,word[InfoArray+2] - xchg ah,al - movzx ebx, word [InfoArray+6] - xchg bh,bl - mul ebx - mul ecx - xchg eax,ecx - pop edx ebx - shr ecx,11 - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - pop ebx - - mov ax,[InfoArray+48*2] - bt ax,8 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.48.0 - ab - mcall ,,0x80000000,t.sup -@@: - mov ax,[InfoArray+49*2] - xchg al,ah - mov di,ax - bt di,13 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.13.1 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,13 - jc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.13.0 - ab -@@: - bt di,11 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.11.1 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,11 - jc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.11.0 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,10 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.10.1 - ab -@@: - bt di,9 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.9 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,8 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.49.8 - ab - mcall ,,0x80000000,t.sup -@@: - sb - mcall SF_DRAW_TEXT,,0x80444444,t.47 -; add ebx,10 -; mcall SF_DRAW_TEXT,,0x80444444,t.47_ - ab - mov edx,ebx - movzx ecx, word [InfoArray+47*2] - xchg ch,cl - mcall SF_DRAW_NUMBER,0x80050000,,,0x80000000 - mov ebx,edx - - -;PART 2 of 11 - sb - mcall SF_DRAW_TEXT,,0x80444444,t.59 -; add ebx,10 -; mcall SF_DRAW_TEXT,,0x80444444,t.59_ - ab - mov edx,ebx - movzx ecx, word [InfoArray+59*2] - xchg ch,cl - mcall SF_DRAW_NUMBER,0x80050000,,,0x0 - mov ebx,edx - - mov ax,[InfoArray+63*2] - xchg al,ah - mov di,ax - bt di,10 - jnc @f - mov edx,ebx -; push ebx - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.10 - ab - mcall ,,0x80000000,t.sel -@@: - bt di,9 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.9 - ab - mcall ,,0x80000000,t.sel -@@: - bt di,8 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.8 - ab - mcall ,,0x80000000,t.sel -@@: - bt di,2 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.2 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,1 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.1 - ab - mcall ,,0x80000000,t.sup -@@: - bt di,0 - jnc @f - sb - mcall SF_DRAW_TEXT,,0x80444444,t.63.0 - ab - mcall ,,0x80000000,t.sup -@@: - -;PART 3 of 11 - sb - mcall SF_DRAW_TEXT,,0x80444444,t.75.0_4 - ab - mov edx,ebx - push ebx - movzx ecx, byte [InfoArray+75*2+1] - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - pop ebx - -;words 76-79 - SATA -;.word80: -; sb -; mcall SF_DRAW_TEXT,,0x80444444,t.80 -; ab -; mov cx,[InfoArray+80*2] -; test cx,cx -; jnz @f -; mcall SF_DRAW_TEXT,,0x80444444,t.unk -; ret -;@@: cmp cx,-1 -; jne @f -; mcall SF_DRAW_TEXT,,0x80444444,t.unk -; ret -;@@: xchg ch,cl -; mov edx,ebx -; mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 -; mov ebx,edx - sb - mcall SF_DRAW_TEXT,,0x80444444,t.80__ - mov ax,[InfoArray+80*2] - ab - xchg al,ah - mov di,ax - bt di,8 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.80.8 - jmp .end -;--------------------------------------------------------------------- -@@: - bt di,7 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.80.7 - jmp .end -;--------------------------------------------------------------------- -@@: - bt di,6 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.80.6 - jmp .end -;--------------------------------------------------------------------- -@@: - bt di,5 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.80.5 - jmp .end -;--------------------------------------------------------------------- -@@: - bt di,4 - jnc @f - mcall SF_DRAW_TEXT,,0x80000000,t.80.4 - jmp .end -@@: - ret -;--------------------------------------------------------------------- -.page2: -;PART 4 of 11 - mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.82 - add ebx,10*65536 - mov ax,[InfoArray+82*2] - xchg al,ah - mov di,ax - bt di,14 - jnc @f - ad - mcall SF_DRAW_TEXT,,0x80000000,t.82.14 - wba 13,t.82.13 - wba 12,t.82.12 - wba 10,t.82.10 - wba 9,t.82.9 - wba 8,t.82.8 - wba 7,t.82.7 - wba 6,t.82.6 - wba 5,t.82.5 - wba 4,t.82.4 - wba 3,t.82.3 - wba 1,t.82.1 - wba 0,t.82.0 -@@: - mov ax,[InfoArray+83*2] - xchg al,ah - mov di,ax - - wba 13,t.83.13 - wba 12,t.83.12 - wba 11,t.83.11 - wba 10,t.83.10 - wba 9,t.83.9 - wba 8,t.83.8 - wba 6,t.83.6 - wba 5,t.83.5 - wba 3,t.83.3 - wba 2,t.83.2 - wba 1,t.83.1 - wba 0,t.83.0 -@@: - -;PART 5 of 11 - mov ebx,290*65536+25 - mov ax,[InfoArray+84*2] - xchg al,ah - mov di,ax - wba 13,t.84.13 - wba 8,t.84.8 - wba 7,t.84.7 - wba 6,t.84.6 - wba 5,t.84.5 - wba 4,t.84.4 - wba 3,t.84.3 - wba 2,t.84.2 - wba 1,t.84.1 - wba 0,t.84.0 -@@: - ret -;--------------------------------------------------------------------- -.page3: - mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.85 - add ebx,10*65536 - mov ax,[InfoArray+85*2] - xchg al,ah - mov di,ax - bt di,14 - jnc @f - ad - mcall SF_DRAW_TEXT,,0x80000000,t.85.14 - wba 13,t.85.13 - wba 12,t.85.12 - wba 10,t.85.10 -; ad -; mcall SF_DRAW_TEXT,,0x80000000,t.85.10_ - wba 9,t.85.9 - wba 8,t.85.8 - wba 7,t.85.7 - wba 6,t.85.6 - wba 5,t.85.5 - wba 4,t.85.4 - wba 3,t.85.3 - wba 1,t.85.1 - wba 0,t.85.0 -@@: - mov ax,[InfoArray+86*2] - xchg al,ah - mov di,ax - bt di,13 - jnc @f - ad - mcall SF_DRAW_TEXT,,0x80000000,t.86.13 - wba 12,t.86.12 - wba 11,t.86.11 - wba 10,t.86.10 - wba 9,t.86.9 - wba 8,t.86.8 - wba 6,t.86.6 - wba 5,t.86.5 - wba 3,t.86.3 - wba 2,t.86.2 - wba 1,t.86.1 - wba 0,t.86.0 -@@: - ret -;--------------------------------------------------------------------- -.page4: - mov ebx,5*65536+25 - mov ax,[InfoArray+88*2] - xchg al,ah - xor di,di - bt ax,8 - jnc @f - mov di,1 -@@: - bt ax,9 - jnc @f - mov di,2 -@@: - bt ax,10 - jnc @f - mov di,3 -@@: - bt ax,11 - jnc @f - mov di,4 -@@: - bt ax,12 - jnc @f - mov di,5 -@@: - bt ax,13 - jnc @f - mov di,6 -@@: - test di,di - jz @f - mcall SF_DRAW_TEXT,,0x80444444,t.88 - mov edx,ebx - push ebx - add edx,90*65536 - movzx ecx, word di - dec cl - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - pop ebx - ad -@@: - xor di,di - mov ax,[InfoArray+88*2] - xchg al,ah - bt ax,0 - jnc @f - mov di,1 -@@: - bt ax,1 - jnc @f - mov di,2 -@@: - bt ax,2 - jnc @f - mov di,3 -@@: - bt ax,3 - jnc @f - mov di,4 -@@: - bt ax,4 - jnc @f - mov di,5 -@@: - bt ax,5 - jnc @f - mov di,6 -@@: - bt ax,6 - jnc @f - mov di,7 -@@: - test di,di - jz @f - mcall SF_DRAW_TEXT,,0x80444444,t.88.1_6 - mov edx,ebx - push ebx - add edx,90*65536 - movzx ecx, word di - dec cl - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - pop ebx - ad -@@: - mz t.89,, - mz t.90,, - mz t.91,, - mz t.92,, -;WORD 94 - mz t.94.8_15,, - mz t.94.0_7,, - mz t.95,, - mz t.96,, - mz t.97,, - mz t.98_99,,, - mz t.100_103,,, - mz t.104,, - -;PART 6 of 11 ? - mcall SF_DRAW_TEXT,,0x80444444,t.106 - add ebx,12 - mov ax,[InfoArray+106*2] - xchg ah,al - mov di,ax - bt di,13 - jnc @f - mcall SF_DRAW_TEXT,,0x80444444,t.106.13 - add ebx,15 -@@: - bt di,12 - jnc @f - mcall SF_DRAW_TEXT,,0x80444444,t.106.12 - add ebx,15 -@@: - mcall SF_DRAW_TEXT,,0x80444444,t.106.0_3 - ab - shl di,12 - shr di,12 - movzx ecx,di - mov edx,ebx - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - mov ebx,edx - sb - - mz t.107,, -;108 - 111 добавить - mz t.117_118,, - ret -;--------------------------------------------------------------------- -.page5: -; mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.85 - ret -;--------------------------------------------------------------------- -show_SmartBlock: - bt [flags],1 - jnc .end - bt [flags],3 - jc .end - - cmp byte [SmartArray+2],0 - je .end - mcall SF_DRAW_TEXT,5*65536+25,0x80444444,s.title - ad - movzx ax, byte [SmartArray+2] - cmp ax,30 ;максимум 30 атрибутов - jg .end - push ax - push dword (3+SmartArray) -@@: - xor edx,edx - call .find - push edx - - mov edx,ebx - movzx ecx,al - mcall SF_DRAW_NUMBER,0x80030000,,,0x0 - mov ebx,edx - add ebx,30*65536 - pop edx - test edx,edx - jnz .0 - mov edx,s.0 - .0: mov eax,[esp] - mov al,[eax+2] - mov ecx,0x80000000 - and al,1 - jz .1 -; mov ecx,0x80ff0000 - .1: mcall SF_DRAW_TEXT,,, - sub ebx,30*65536 - - mov ecx,[esp] - inc ecx - movzx ecx, byte [ecx] - add ebx,400*65536 - mov edx,ebx - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - mov ecx,[esp] - add ecx,4 - movzx ecx, byte [ecx] - add edx,30*65536 - mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 - mov ebx,edx - sub ebx,(30+400)*65536 - - ad - add dword [esp],12 - dec word [esp+4] - jnz @b - add esp,6 -.end: - ret -;--------------------------------------------------------------------- -.find: - mov eax, dword [esp+4] - mov al,[eax] - sc 1,s.1 - sc 2,s.2 - sc 3,s.3 - sc 4,s.4 - sc 5,s.5 - sc 6,s.6 - sc 7,s.7 - sc 8,s.8 - sc 9,s.9 - sc 10,s.10 - sc 11,s.11 - sc 12,s.12 - sc 13,s.13 - sc 190,s.190 - sc 191,s.191 - sc 192,s.192 - sc 193,s.193 - sc 194,s.194 - sc 195,s.195 - sc 196,s.196 - sc 197,s.197 - sc 198,s.198 - sc 199,s.199 - sc 200,s.200 - sc 201,s.201 - sc 202,s.202 - sc 203,s.203 - sc 204,s.204 - sc 205,s.205 - sc 206,s.206 - sc 207,s.207 - sc 208,s.208 - sc 209,s.209 - sc 220,s.220 - sc 221,s.221 - sc 222,s.222 - sc 223,s.223 - sc 224,s.224 - sc 225,s.225 - sc 226,s.226 - sc 227,s.227 - sc 228,s.228 - sc 230,s.230 - sc 231,s.231 - sc 240,s.240 - sc 250,s.250 - ret -;--------------------------------------------------------------------- -;DATA AREA -if lang eq it_IT - t: - .sup db 'supportato',0 - .sel db 'selzionato',0 - .enb db 'abilitato',0 - .unk db 'sconosciuto',0 - .type db 'Tipo',0 - .chs db 'CHS',0 -else - t: - .sup db 'supported',0 - ;.usp db 'unsupported',0 - .sel db 'selected',0 - ;.usl db 'not selected',0 - .enb db 'enabled',0 - ;.dis db 'disabled',0 - .unk db 'unknown',0 - .type db 'Type',0 - .chs db 'CHS',0 -end if - -if lang eq it_IT - .10_19 db 'Numero seriale',0 - .23_26 db 'Versione firmware',0 - .27_46 db 'Numero modello',0 - .47 db 'Max. number of sectors that shall be transferred per DRQ data block',0 - .48.0 db 'Trusted Computing feature set is',0 - .49.13.1 db 'Standby timer values are',0 - .49.13.0 db 'Standby timer values shall be managed by the device',0 - .49.11.1 db 'IORDY',0 - .49.11.0 db 'IORDY may be',0 - .49.10.1 db 'IORDY potrebbe essere disabilitato',0 - .49.9 db 'LBA',0 - .49.8 db 'DMA',0 -else - .10_19 db 'Serial number',0 - .23_26 db 'Firmware revision',0 - .27_46 db 'Model number',0 - .47 db 'Max. number of sectors that shall be transferred per DRQ data block',0 - ;.47 db 'Maximum number of logical sectors that shall be transferred per DRQ',0 - ;.47_ db 'data block on READ/WRITE MULTIPLE commands',0 - .48.0 db 'Trusted Computing feature set is',0 ;1 sup - .49.13.1 db 'Standby timer values are',0 ;sup - .49.13.0 db 'Standby timer values shall be managed by the device',0 - .49.11.1 db 'IORDY',0 ;sup - .49.11.0 db 'IORDY may be',0 ;sup - .49.10.1 db 'IORDY may be disabled',0 - .49.9 db 'LBA',0 ;1 sup - .49.8 db 'DMA',0 ;1 sup -end if - -;.53 db 'Free-fall Control Sensitivity',0 -;.53.6_15 db 'Sensitivity level',0 -.59 db 'Current number of sectors that shall be transferred per DRQ data block',0 -;.59 db 'Current setting for number of logical sectors that shall be',0 -;.59_ db 'transferred per DRQ data block on READ/WRITE MULTIPLE commands',0 -.60_61 db 'Total number of user addressable logical sectors',0 -.63.10 db 'Multiword DMA mode 2 is',0 ;1 sel -.63.9 db 'Multiword DMA mode 1 is',0 ;1 sel -.63.8 db 'Multiword DMA mode 0 is',0 ;1 sel -.63.2 db 'Miltiword DMA mode 2 and below are',0 ;sup -.63.1 db 'Miltiword DMA mode 1 and below are',0 ;sup -.63.0 db 'Miltiword DMA mode 0 is',0 ;sup -.64.0_7 db 'PIO modes',0 ;sup - -;.65 - .68 добавить - -.75.0_4 db 'Maximum queue depth -1 ',0 -.76 db 'Serial ATA Capabilities:',0 -.76.10 db 'Supports Phy Event Counters',0 ;1 -.76.9 db 'Supports receit of host initiated power management request',0 ;1 -.76.8 db 'Supports native Command Queuing',0 ;1 -.76.2 db 'Supports SATA Gen2 Signaling Speed (3.0Gb/s)',0 -.76.1 db 'Supports SATA Gen1 Signaling Speed (1.5Gb/s)',0 -.78 db 'SATA Features Supported',0 -.78_ db 'Device supports:',0 -.78.6 db 'Software Setting Preservation',0 ;1 -.78.4 db 'in-order data delivery',0 ;1 -.78.3 db 'initiating power management',0 ;1 -.78.2 db 'DMA Setup auto-activation',0 ;1 -.78.1 db 'non-zero buffer offsets',0 ;1 -.79 db 'SATA Features Enabled:',0 -.79.6 = .78.6;1 enb -.79.4 = .78.4;1 enb -.79.3 = .78.3;1 enb -.79.2 = .78.2;1 enb -.79.1 = .78.1;1 enb -.80 db 'Major revision number',0 -.80__ db 'supports:',0 -.80.8 db 'ATA8-ACS',0 ;1 -.80.7 db 'ATA/ATAPI-7',0 ;1 -.80.6 db 'ATA/ATAPI-6',0 ;1 -.80.5 db 'ATA/ATAPI-5',0 ;1 -.80.4 db 'ATA/ATAPI-4',0 ;1 -.81 db 'Minor revision number',0 - -.82 db 'Command set/feature supported:',0 -.82.14 db 'NOP command',0 ;1 sup -.82.13 db 'READ BUFFER command',0 ;1 sup -.82.12 db 'WRITE BUFFER command',0 ;1 sup -.82.10 db 'Host Protected Area feature set',0 ;1 sup -.82.9 db 'DEVICE RESET command',0 ;1 sup -.82.8 db 'SERVICE interrupt',0 ;1 sup -.82.7 db 'release interrupt',0 ;1 sup -.82.6 db 'read look-ahead',0 ;1 sup -.82.5 db 'volatile write cache',0 ;1 sup -.82.4 db 'PACKET feature set',0 ;1 sup -.82.3 db 'Mandatory Power Management feature set',0 ;1 sup -.82.1 db 'Security feature set',0 ;1 sup -.82.0 db 'SMART feature set',0 ;1 sup -;.83 db 'Command sets supported:',0 -.83.13 db 'FLUSH CACHE EXT command',0 ;1 sup -.83.12 db 'Mandatory FLUSH CACHE command',0 ;1 sup -.83.11 db 'Device Configuration Overlay feature set',0 ;1 sup -.83.10 db '48-bit Address feature set',0 ;1 sup -.83.9 db 'Automatic Acoustic Management feature set',0 ;1 sup -.83.8 db 'SET MAX security extension',0 ;1 sup -.83.6 db 'SET FEATURES subcommand required to spin-up after power-up',0 ;1 -.83.5 db 'Power-Up In Standby feature set',0 ;1 sup -.83.3 db 'Advanced Power Management feature set',0 ;1 sup -.83.2 db 'CFA feature set',0 ;1 sup -.83.1 db 'READ/WRITE DMA QUEUED',0 ;1 sup -.83.0 db 'DOWNLOAD MICROCODE command',0 ;1 sup - -;.84 db 'Command set/feature supported:',0 -.84.13 db 'IDLE IMMEDIATE with UNLOAD FEATURE',0 ;1 sup -.84.8 db '64-bit World wide name supported',0 ;1 sup -.84.7 db 'WRITE DMA QUEUED FUA EXT command',0 ;1 sup -.84.6 db 'WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT commands',0 ;1 sup -.84.5 db 'General Purpose Logging feature set',0 ;1 sup -.84.4 db 'Streaming feature set',0 ;1 sup -.84.3 db 'Media Card Pass Through Command feature set',0 ;1 sup -.84.2 db 'Media serial number',0 ;1 sup -.84.1 db 'SMART self-test',0 ;1 sup -.84.0 db 'SMART error logging',0 ;1 sup -.85 db 'Command set/feature enabled/supported:',0 -.85.14 = .82.14 ;1 sup -.85.13 = .82.13 ;1 sup -.85.12 = .82.12 ;1 sup -.85.10 db 'Host Protected Area has been established',0;1 (i.e., the maximum LBA is less than the maximum native LBA) -.85.9 = .82.9; 1 sup -.85.8 = .82.8; 1 enb -.85.7 = .82.7; 1 enb -.85.6 = .82.6; 1 enb -.85.5 = .82.5; 1 enb -.85.4 = .82.4; 1 sup -.85.3 = .82.3; 1 sup -.85.1 = .82.1; 1 enb -.85.0 = .82.0; 1 enb - -;.86 db 'Command set/feature enabled/supported:',0 -.86.13 = .83.13; 1 sup -.86.12 db 'FLUSH CACHE command',0 ;1 sup -.86.11 db 'Device Configuration Overlay',0 ;1 sup -.86.10 = .83.10 ;1 sup -.86.9 = .83.9 ;1 enb -.86.8 db 'SET MAX security extension enabled by SET MAX SET PASSWORD',0 ;1 -.86.6 = .83.6 ;1 -.86.5 = .83.5 ;1 enb -.86.3 = .83.3 ;1 enb -.86.2 = .83.2 ;l sup -.86.1 = .83.1 ;1 sup -.86.0 = .83.0 ;1 sup -;.87 db 'Command set/feature enabled/supported:',0 -;.87.x см..84 - -.88 db 'Ultra DMA mode selected',0 -;бит 14 установлен - mode 6 is selected, 13-5, 12-4, 11-3, 10-2, 9-1, 8-0 -.88.1_6 db 'Ultra DMA mode and below are supported',0 ;бит 1-1, ..., 6-6 -;.88.0: db 'Ultra DMA mode 0 is',0 ;1 sup -.89 db 'Time required for security erase unit completion',0 -.90 db 'Time required for Enhanced security erase completion',0 -.91 db 'Current advanced power management value',0 -.92 db 'Master Password Identifier',0 - -;.93 db 'Hardware reset result',0 ;добавить -.94.8_15 db 'Vendor"s recommended acoustic management value',0 -.94.0_7 db 'Current automatic acoustic management value',0 -.95 db 'Stream Minimum Request Size',0 -.96 db 'Streaming Transfer Time - DMA',0 -.97 db 'Streaming Access Latency - DMA and PIO',0 -.98_99 db 'Streaming Performance Granularity',0 -.100_103 db 'Total Number of User Addressable Sectors for the 48-bit Address feature set',0 -.104 db 'Streaming Transfer Time - PIO',0; - -.106 db 'Physical sector size / Logical Sector Size:',0 -.106.13 db 'Device has multiple logical sectors per physical sector',0 ;1 -.106.12 db 'Device Logical Sector Longer than 256 Words',0 ;1 -.106.0_3 db '2^X logical sectors per physical sector',0 -.107 db 'Inter-seek delay for ISO-7779 acoustic testing in microseconds',0 -.108.12_15 db 'NAA (3:0)',0 -.108.0_11 db 'IEEE OUI (23:12)',0 -.109.4_15 db 'IEEE OUI (11:0)',0 -.109.0_3 db 'Unique ID (35:32)',0 -.110 db 'Unique ID (31:16)',0 -.111 db 'Unique ID (15:0)',0; -.117_118 db 'Words per Logical Sector',0 -.119 db 'Supported Settings:',0 -.119.5 db 'Free-fall Control feature set is',0 ;1 sup -.119.4 db 'The Segmented feature for DOWNLOAD MICROCODE is',0 ;1 sup -.119.3 db 'READ and WRITE DMA EXT GPL optional commands are',0 ;1 sup -.119.2 db 'WRITE UNCORRECTABLE EXT is',0 ;1 sup -.119.1 db 'Write-Read-Verify feature set is',0 ;1 sup -.120 db 'Command set/feature enabled/supported',0 -.120.5 db 'Free-fall Control feature set is',0 ;1 enb -.120.4 db 'The Segmented feature for DOWNLOAD MICROCODE is',0 ;1 sup -.120.3 db 'READ and WRITE DMA EXT GPL optional commands are',0 ;1 sup -.120.2 db 'WRITE UNCORRECTABLE EXT is',0 ;1 sup -.120.1 db 'Write-Read-Verify feature set is',0 ;1 enb - -.128 db 'Security status',0 -.128.8.0 db 'Security level = High',0 -.128.8.1 db 'Security level = Maximum',0 -.128.5 db 'Enhanced security erase',0 ;1 sup -.128.4 db 'Security count expired',0 ;1 -.128.3 db 'Security frozen',0 ;1 -.128.2 db 'Security locked',0 ;1 -.128.1 db 'Security enabled',0 ;1 -.128.0 db 'Security supported',0 ;1 - -;.160 добавить - -.176_205 db 'Current media serial number',0 -.206 db 'SCT Command Transport:',0 -.206.5 db 'Data Tables',0 ;1 sup -.206.4 db 'Features Control',0 ;1 sup -.206.3 db 'Error Recovery Control',0 ;1 sup -.206.2 db 'Write Same',0 ;1 sup -.206.1 db 'Long Sector Access',0 ;1 sup -.206.0 db '',0 ;1 sup -.209 db 'Alignment of logical blocks within a larger physical block',0 -.209.0_13 db '"Logical sector" offset within the first physical sector where the first logical sector is placed.',0; -.210_211 db 'Write-Read-Verify Sector Count Mode 3 Only',0 -.212_213 db 'Verify Sector Count Mode 2 Only',0 -.214 db 'NV Cache Capabilities:',0 -.214.12_15 db 'NV Cache feature set version',0 -.214.8_11 db 'NV Cache Power Mode feature set version',0 -.214.4 db 'NV Cache feature set',0 ;1 enb -.214.1 db 'NV Cache Power Mode feature set',0 ;1 enb -.214.0 db 'NV Cache Power Mode feature set',0 ;1 sup -.215 db 'NV Cache Size in Logical Blocks (15:0)',0 - -.216 db 'NV Cache Size in Logical Blocks (31:16)',0 -.217 db 'Nominal media rotation rate',0 -.219 db 'NV Cache Options',0 -.219.0_7 db 'Device Estimated Time to Spin Up in Seconds',0 -.220.0_7 db 'Write-Read-Verify feature set current mode',0; -.222 db 'Transport Major revision number',0 -.222.12.0 db 'Parallel',0 -.222.12.1 db 'Serial',0 -;.222.0_11 добавить -.223 db 'Transport Major revision number',0 -.234 db 'Minimum number of 512 byte units per DOWNLOAD MICROCODE command for mode 03h',0 -.235 db 'Maximum number of 512 byte units per DOWNLOAD MICROCODE command for mode 03h',0 -.255 db 'Integrity word',0 -.255.8_15 db 'Checksum',0 -.255.0_7 db 'Signature',0 -;--------------------------------------------------------------------- -s: -.title db 'ID/Name/Value/Wrst',0 -.0 db '?',0 -.1 db 'Raw Read Error Rate',0 -.2 db 'Throughput Performance',0 -.3 db 'Spin Up Time',0 -.4 db 'Start/Stop Count',0 -.5 db 'Reallocated Sector Count',0 -.6 db 'Read Channel Margin',0 -.7 db 'Seek Error Rate',0 -.8 db 'Seek Time Performance',0 -.9 db 'Power-On Hours Count',0 -.10 db 'Spin Retry Count',0 -.11 db 'Recalibration Retries',0 -.12 db 'Device Power Cycle Count',0 -.13 db 'Soft Read Error Rate',0 -;?? db 'Emergency Re-track (Hitachi)',0 -;?? db 'ECC On-The-Fly Count (Hitachi)',0 -;96 db '? (Maxtor) -;97 db '? (Maxtor) -;98 db '? (Maxtor) -;99 db '? (Maxtor) -;100 db '? (Maxtor) -;101 db '? (Maxtor) -.190 db 'Airflow Temperature (WDC)',0 -.191 db 'G-Sense Error Rate',0 -.192 db 'Power-Off Retract Cycle',0 -.193 db 'Load/Unload Cycle Count',0 -.194 db 'Temperature',0 -.195 db 'Hardware ECC Recovered',0 -.196 db 'Reallocation Events Count',0 -.197 db 'Current Pending Sector Count',0 -.198 db 'Uncorrectable Sector Count',0 -.199 db 'UltraDMA CRC Error Rate',0 -.200 db 'Write Error Rate (WD - MultiZone Error Rate)',0 -.201 db 'TA Counter Detected (or Soft read error rate ?)',0 -.202 db 'TA Counter Increased (or Data Address Mark errors ?)',0 -.203 db 'Run out cancel',0 -.204 db 'Soft ECC correction',0 -.205 db 'Thermal asperity rate (TAR)',0 -.206 db 'Flying height',0 -.207 db 'Spin high',0 -.208 db 'Spin buzz',0 -.209 db 'Offline seek performance',0 -.220 db 'Disk Shift',0 -.221 db 'G-Sense Error Rate (Hitachi - Shock Sense Error Rate)',0 -.222 db 'Loaded Hours',0 -.223 db 'Load/Unload Retry Count',0 -.224 db 'Load Friction',0 -.225 db 'Load/Unload Cycle Count',0 -.226 db 'Load-in Time',0 -.227 db 'Torque Amplification Count',0 -.228 db 'Power-Off Retract Count',0 -;229 db '? (IBM DTTA)',0 -.230 db 'GMR Head Amplitude',0 -.231 db 'Temperature',0 -.240 db 'Head Flying Hours (Hitachi)',0 -.250 db 'Read Error Retry Rate',0 -;--------------------------------------------------------------------- -title db 'Hard Disk Drive INFOrmer v0.2',0 -menu_text db 'Info SMART Tests Control < >',0 -ctrl_text1 db 'Ports: 1f0-1f7 170-177',0 -ctrl_text2 db 'Device: 0 1 0 1',0 -edbx_text1 db 'Info: Save Load',0 -edbx_text2 db 'SMART: Save Load',0 -smrt_text1 db 'SMART on/off',0 -page_text db 'Page:',0 -;system_path db '/sys/lib/' -;boxlib_name db 'box_lib.obj',0 -;head_f_i: -;head_f_l db 'error',0 -;err_message_found_lib db 'box_lib.obj was not found',0 -;err_message_import db 'box_lib.obj was not imported ',0 -if lang eq it_IT - error_open_file_string_Info db 'Non riesco ad aprire Info file!',0 - error_save_file_string_Info db 'Non riesco a salvare Info file!',0 - - error_open_file_string_SMART db 'Non riesco ad aprire SMART file!',0 - error_save_file_string_SMART db 'Non riesco a salvare SMART file!',0 -else - error_open_file_string_Info db 'Can not open Info file!',0 - error_save_file_string_Info db 'Can not save Info file!',0 - - error_open_file_string_SMART db 'Can not open SMART file!',0 - error_save_file_string_SMART db 'Can not save SMART file!',0 -end if -no_error_text db 0 -align 4 -error_text dd no_error_text -;--------------------------------------------------------------------- -system_dir_Boxlib db '/sys/lib/box_lib.obj',0 -system_dir_ProcLib db '/sys/lib/proc_lib.obj',0 -;--------------------------------------------------------------------- -align 4 -l_libs_start: - -library01 l_libs system_dir_Boxlib+9, library_path, system_dir_Boxlib, Box_lib_import - -library02 l_libs system_dir_ProcLib+9, library_path, system_dir_ProcLib, ProcLib_import - -end_l_libs: -;--------------------------------------------------------------------- - - -;edit1 edit_box 200,2,85,0xaaaaaa,0x6a9480,0,0xAABBCC,0,128,file_name,ed_focus,10,10 -op1 option_box option_group1,72,44,6,9,0xffffff,0x0,0,0,0 -op2 option_box option_group1,94,44,6,9,0xffffff,0x0,0,0,0 -op3 option_box option_group1,132,44,6,9,0xffffff,0x0,0,0,0 -op4 option_box option_group1,154,44,6,9,0xffffff,0x0,0,0,0 -option_group1 dd op1 -Option_boxs dd op1,op2,op3,op4,0 -;--------------------------------------------------------------------- -;file_name db '/sys/hdd_',0 -;times 128 db (0) -;--------------------------------------------------------------------- -struct f70 - func_n dd ? - param1 dd 0 - param2 dd 0 - param3 dd ? - param4 dd ? - rezerv db 0 - name dd filename_area -ends -;--------------------------------------------------------------------- -func_70 f70 -; Info_name dd filename_area ;file_name -;--------------------------------------------------------------------- -; SMART_name dd filename_area2 ;file_name -;--------------------------------------------------------------------- -align 4 -ProcLib_import: -OpenDialog_Init dd aOpenDialog_Init -OpenDialog_Start dd aOpenDialog_Start -;OpenDialog__Version dd aOpenDialog_Version - dd 0 - dd 0 -aOpenDialog_Init db 'OpenDialog_init',0 -aOpenDialog_Start db 'OpenDialog_start',0 -;aOpenDialog_Version db 'Version_OpenDialog',0 -;--------------------------------------------------------------------- -align 4 -Box_lib_import: -;init_lib dd a_init -;version_lib dd a_version - - -edit_box_draw dd aEdit_box_draw -edit_box_key dd aEdit_box_key -edit_box_mouse dd aEdit_box_mouse -;version_ed dd aVersion_ed - -;check_box_draw dd aCheck_box_draw -;check_box_mouse dd aCheck_box_mouse -;version_ch dd aVersion_ch - -option_box_draw dd aOption_box_draw -option_box_mouse dd aOption_box_mouse -;version_op dd aVersion_op - -;scrollbar_ver_draw dd aScrollbar_ver_draw -;scrollbar_ver_mouse dd aScrollbar_ver_mouse -;scrollbar_hor_draw dd aScrollbar_hor_draw -;scrollbar_hor_mouse dd aScrollbar_hor_mouse -;version_scrollbar dd aVersion_scrollbar - -;dinamic_button_draw dd aDbutton_draw -;dinamic_button_mouse dd aDbutton_mouse -;version_dbutton dd aVersion_dbutton - -;menu_bar_draw dd aMenu_bar_draw -;menu_bar_mouse dd aMenu_bar_mouse -;menu_bar_activate dd aMenu_bar_activate -;version_menu_bar dd aVersion_menu_bar - -;FileBrowser_draw dd aFileBrowser_draw -;FileBrowser_mouse dd aFileBrowser_mouse -;FileBrowser_key dd aFileBrowser_key -;Version_FileBrowser dd aVersion_FileBrowser - -PathShow_prepare dd sz_PathShow_prepare -PathShow_draw dd sz_PathShow_draw -;Version_path_show dd szVersion_path_show - dd 0,0 - -;a_init db 'lib_init',0 -;a_version db 'version',0 - -aEdit_box_draw db 'edit_box_draw',0 -aEdit_box_key db 'edit_box_key',0 -aEdit_box_mouse db 'edit_box_mouse',0 -;aVersion_ed db 'version_ed',0 - -;aCheck_box_draw db 'check_box_draw',0 -;aCheck_box_mouse db 'check_box_mouse',0 -;aVersion_ch db 'version_ch',0 - -aOption_box_draw db 'option_box_draw',0 -aOption_box_mouse db 'option_box_mouse',0 -;aVersion_op db 'version_op',0 - -;aScrollbar_ver_draw db 'scrollbar_v_draw',0 -;aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 -;aScrollbar_hor_draw db 'scrollbar_h_draw',0 -;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 -;aVersion_scrollbar db 'version_scrollbar',0 - -;aDbutton_draw db 'dbutton_draw',0 -;aDbutton_mouse db 'dbutton_mouse',0 -;aVersion_dbutton db 'version_dbutton',0 - -;aMenu_bar_draw db 'menu_bar_draw',0 -;aMenu_bar_mouse db 'menu_bar_mouse',0 -;aMenu_bar_activate db 'menu_bar_activate',0 -;aVersion_menu_bar db 'version_menu_bar',0 - -;aFileBrowser_draw db 'FileBrowser_draw',0 -;aFileBrowser_mouse db 'FileBrowser_mouse',0 -;aFileBrowser_key db 'FileBrowser_key',0 -;aVersion_FileBrowser db 'version_FileBrowser',0 - -sz_PathShow_prepare db 'PathShow_prepare',0 -sz_PathShow_draw db 'PathShow_draw',0 -;szVersion_path_show db 'version_PathShow',0 -;--------------------------------------------------------------------- -PathShow_data_1: -.type dd 0 ;+0 -.start_y dw 85 ;+4 -.start_x dw 128 ;+6 -.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 -.area_size_x dw 415 ;+10 -.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable -.background_flag dd 0 ;+16 -.font_color dd 0x0 ;+20 -.background_color dd 0x0 ;+24 -.text_pointer dd fname_Info ;+28 -.work_area_pointer dd text_work_area ;+32 -.temp_text_length dd 0 ;+36 -;--------------------------------------------------------------------- -PathShow_data_2: -.type dd 0 ;+0 -.start_y dw 104 ;+4 -.start_x dw 127 ;+6 -.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 -.area_size_x dw 415 ;+10 -.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable -.background_flag dd 0 ;+16 -.font_color dd 0x0 ;+20 -.background_color dd 0x0 ;+24 -.text_pointer dd fname_SMART ;+28 -.work_area_pointer dd text_work_area2 ;+32 -.temp_text_length dd 0 ;+36 -;--------------------------------------------------------------------- -OpenDialog_data: -.type dd 0 -.procinfo dd procinfo ;+4 -.com_area_name dd communication_area_name ;+8 -.com_area dd 0 ;+12 -.opendir_pach dd temp_dir_pach ;+16 -.dir_default_pach dd communication_area_default_pach ;+20 -.start_path dd open_dialog_path ;+24 -.draw_window dd draw_window ;+28 -.status dd 0 ;+32 -.openfile_pach dd fname_Info ;+36 -.filename_area dd filename_area ;+40 -.filter_area dd Filter -.x: -.x_size dw 420 ;+48 ; Window X size -.x_start dw 10 ;+50 ; Window X position -.y: -.y_size dw 320 ;+52 ; Window y size -.y_start dw 10 ;+54 ; Window Y position - -OpenDialog_data2: -.type dd 0 -.procinfo dd procinfo ;+4 -.com_area_name dd communication_area_name2 ;+8 -.com_area dd 0 ;+12 -.opendir_pach dd temp_dir_pach2 ;+16 -.dir_default_pach dd communication_area_default_pach ;+20 -.start_path dd open_dialog_path ;+24 -.draw_window dd draw_window ;+28 -.status dd 0 ;+32 -.openfile_pach dd fname_SMART ;+36 -.filename_area dd filename_area2 ;+40 -.filter_area dd Filter2 -.x: -.x_size dw 420 ;+48 ; Window X size -.x_start dw 10 ;+50 ; Window X position -.y: -.y_size dw 320 ;+52 ; Window y size -.y_start dw 10 ;+54 ; Window Y position - -communication_area_name2: - db 'FFFFFFFF_open_dialog',0 - -communication_area_name: - db 'FFFFFFFF_open_dialog2',0 -open_dialog_path: -if __nightbuild eq yes - db '/sys/MANAGERS/opendial',0 -else - db '/sys/File Managers/opendial',0 -end if -communication_area_default_pach: - db '/sys',0 - -Filter: -dd Filter.end - Filter -.1: -db 'INFO',0 -.end: -db 0 - -Filter2: -dd Filter.end - Filter -.1: -db 'SMART',0 -.end: -db 0 - -default_Info: - db '/sys/default.info',0 -default_SMART: - db '/sys/default.smart',0 -;--------------------------------------------------------------------- -page_num db 1 -flags dw 100b -;бит 0: 0/1 - InfoBlock не/прочитан -;1: 0/1 - SmartBlock не/прочитан -;2: 1 - показ ControlBlock -;3: 1 - при попытке чтения возникла ошибка (превышено время ожидания) -;4: 0/1 - сохраняем/загружаем InfoBlock/Smart -;5: 0/1 - выбор Master/Slave -;6: 1 - показ Tests -;7: 1 - показ InfoBlock -;8: 1 - показ Smart -;9: 1 - выключаем или включаем SMART -;10: 1 - включаем SMART -;--------------------------------------------------------------------- -IM_END: -;--------------------------------------------------------------------- -align 16 -InfoArray: times 256 dw 0 -SmartArray: times 512 dw 0 - -;buf_cmd_lin rb 0 -;threath_buf rb 0x400 -align 4 -;--------------------------------------------------------------------- -cur_dir_path: - rb 4096 -;--------------------------------------------------------------------- -fname_Info: - rb 4096 ; filename -;--------------------------------------------------------------------- -fname_SMART: - rb 4096 ; filename -;--------------------------------------------------------------------- -text_work_area: - rb 1024 -;--------------------------------------------------------------------- -text_work_area2: - rb 1024 -;--------------------------------------------------------------------- -procinfo: - rb 1024 -;--------------------------------------------------------------------- -temp_dir_pach: - rb 4096 -;--------------------------------------------------------------------- -temp_dir_pach2: - rb 4096 -;--------------------------------------------------------------------- -filename_area: - rb 256 -;--------------------------------------------------------------------- -filename_area2: - rb 256 -;--------------------------------------------------------------------- -library_path: - rb 4096 -;--------------------------------------------------------------------- - rb 4096 -stacktop: -;--------------------------------------------------------------------- -I_END: -;--------------------------------------------------------------------- +; SPDX-License-Identifier: NOASSERTION +; + +; Text encoded with Code Page 866 - Cyrillic + + +; v. 0.2 +; last update: 19/09/2010 +; written by: Marat Zakiyanov aka Mario79, aka Mario +; changes: select path with OpenDialog +; show 2 different path for Info and SMART files +; draw number of page +;--------------------------------------------------------------------- +; v. 0.11: 15.09.2009 staper@inbox.ru +;--------------------------------------------------------------------- +; Макросы load_lib.mac, editbox_ex и библиотеку box_lib.obj создали: +; - Alexey Teplov / Алексей Теплов +; Mario79, Mario - Marat Zakiyanov / Марат Закиянов +; Diamondz - Evgeny Grechnikov / Евгений Гречников и др. +;--------------------------------------------------------------------- +use32 + org 0 + + db 'MENUET01' + dd 1 + dd START + dd IM_END + dd I_END ;(i_end+200) and not 3 + dd stacktop ;(i_end+200) and not 3 + dd 0x0 ;buf_cmd_lin + dd cur_dir_path + +PRIMARY_CHANNEL equ 0x1f7 +SECONDARY_CHANNEL equ 0x177 +; Ручной поиск портов по шине PCI (преимущественно для SATA): +; mcall SF_SYSTEM_SET,SSF_ACCESS_PCI,1 ;разрешить низкоуровневый доступ к PCI +; mcall SF_PCI,0x0006,((((0x1f shl 3) + 01) shl 8) + 0x10) ;см. ф-ю 62 +; ax = 1 - стандартные порты (константы выше), или нестандартные (168-16f,1e8-1ef) +; Пример: +; Fnc 02: 10-0x1c01,14-0x18f5,18-0x18f9,1c-0x18f1,BMA-0x1811,00000000 +; Fnc 01: 10-1,14-1,18-1,1c-1,BMA-0x18e1,0x18d1 +; Регистр по смещению 0х10 для функции 02 содержит 0x1c01 (порты 0х1с00-0х1с07) + +include 'lang.inc' ; language support + +; Режимы Legacy, Native и пр. меняются через BIOS. +include '../../config.inc' ;for nightbuild +include '../../macros.inc' +include '../../develop/libraries/box_lib/trunk/box_lib.mac' +include '../../KOSfuncs.inc' +include '../../load_lib.mac' + @use_library +;--------------------------------------------------------------------- +macro ab { + add ebx,455*65536 + } +;--------------------------------------------------------------------- +macro sb { + sub ebx,455*65536-12 + } +;--------------------------------------------------------------------- +macro ad { + add ebx,12 + } +;--------------------------------------------------------------------- +macro wba num,text { +@@: + bt di,num + jnc @f + ad + mcall SF_DRAW_TEXT,,0x80000000,text + } +;--------------------------------------------------------------------- +macro wba num,text { +@@: + bt di,num + jnc @f + ad + mcall SF_DRAW_TEXT,,0x80000000,text + } +;--------------------------------------------------------------------- +macro sc num,text { + cmp al,num + jne @f + mov edx,text +@@: + } +;--------------------------------------------------------------------- +macro mz text,str1,str2,str3 { + mcall SF_DRAW_TEXT,,0x80444444,text + ab + mov edx,ebx + push ebx + str1 + str2 + str3 + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + pop ebx + sb + } +;--------------------------------------------------------------------- +START: +; load_library boxlib_name,buf_cmd_lin,system_path,Box_lib_import + mcall SF_SYS_MISC,SSF_HEAP_INIT + +load_libraries l_libs_start,end_l_libs + + cmp eax,-1 + jz close +;--------------------------------------------------------------------- + mov edi,filename_area + mov esi,default_Info+5 ;default.info + call copy_str_1 + + mov edi,filename_area2 + mov esi,default_SMART+5 ;default.smart + call copy_str_1 + + mov edi,fname_Info + mov esi,default_Info ;/sys/default.info + call copy_str_1 + + mov edi,fname_SMART ;/sys/default.smart +; cmp byte [edi], 0 +; jne skin_path_ready + mov esi,default_SMART + call copy_str_1 +;skin_path_ready: +;--------------------------------------------------------------------- +;OpenDialog initialisation + push dword OpenDialog_data + call [OpenDialog_Init] + + push dword OpenDialog_data2 + call [OpenDialog_Init] + +; prepare for PathShow + push dword PathShow_data_1 + call [PathShow_prepare] + + push dword PathShow_data_2 + call [PathShow_prepare] +;--------------------------------------------------------------------- + + mcall SF_SET_EVENTS_MASK,0x27 +;--------------------------------------------------------------------- +redraw_all: +redraw: + call draw_window +;--------------------------------------------------------------------- +still: + mcall SF_WAIT_EVENT + dec al + jz redraw_all + dec al + jz key + dec al + jz button +;--------------------------------------------------------------------- +mouse: + bt [flags],2 + jnc still + mcall SF_MOUSE_GET,SSF_BUTTON + test al,al + jz still + push dword Option_boxs + call [option_box_mouse] + jmp still +;--------------------------------------------------------------------- +copy_str_1: + xor eax,eax + cld +@@: + lodsb + stosb + test eax,eax + jnz @b + ret +;--------------------------------------------------------------------- +draw_PathShow: + pusha + mcall SF_DRAW_RECT,<125,420>,<83,15>,0xFFFFED + mcall SF_DRAW_RECT,,<100,15>, +; draw for PathShow + push dword PathShow_data_1 + call [PathShow_draw] + + push dword PathShow_data_2 + call [PathShow_draw] + popa + ret +;--------------------------------------------------------------------- +draw_window: + mcall SF_REDRAW,SSF_BEGIN_DRAW + xor esi,esi + mcall SF_CREATE_WINDOW,<100,580>,<100,350>,0x34ffffff,,title + mcall SF_DEFINE_BUTTON,<1,30>,<1,15>,2,0x365732 + mcall ,<35,38>,,3, +; mcall ,<77,38>,,6, + mcall ,<120,45>,,7, + + mcall ,<195,20>,,4, ;влево,вправо + mcall ,<217,20>,,5, + mcall SF_DRAW_TEXT,<4,6>,0x80ffffff,menu_text + + mcall ,<260,6>,0x80000000,page_text + movzx ecx, byte [page_num] + mcall SF_DRAW_NUMBER,0x800a0000,,<300,6>,0x0 + + mcall SF_DRAW_LINE,<2,535>,<20,20>,0x00aabbaa + bt [flags],2 + jnc @f + call show_ControlBlock + mcall SF_DRAW_TEXT,<4,125>,0x80FF0000,[error_text] + jmp .end +@@: + bt [flags],6 + jnc @f + call show_TestBlock + jmp .end +@@: + bt [flags],7 + jnc @f + call show_InfoBlock + jmp .end +@@: + bt [flags],8 + jnc .end + call show_SmartBlock +.end: + mcall SF_REDRAW,SSF_END_DRAW + ret +;--------------------------------------------------------------------- +key: + mcall SF_GET_KEY +; push edit1 +; call [edit_box_key] +; push edit1 +; call [edit_box_draw] + jmp still +;--------------------------------------------------------------------- +button: + mcall SF_GET_BUTTON + cmp ah,1 + jne @f +close: + mcall SF_TERMINATE_PROCESS +@@: + cmp ah,2 + jne @f + call get_InfoBlock + mov ax,[flags] + btr ax,2 + btr ax,6 + bts ax,7 + btr ax,8 + mov [flags],ax + mov [page_num],1 + jmp redraw +;--------------------------------------------------------------------- +@@: + cmp ah,3 + jne @f + call get_SmartBlock + mov [page_num],1 + mov ax,[flags] + btr ax,2 + btr ax,6 + btr ax,7 + bts ax,8 + mov [flags],ax + jmp redraw +;--------------------------------------------------------------------- +@@: + cmp ah,4 + jne @f + cmp [page_num],1 + je still + dec [page_num] + jmp redraw +;--------------------------------------------------------------------- +@@: + cmp ah,5 + jne @f + cmp [page_num],5 + je still + inc [page_num] + jmp redraw +;--------------------------------------------------------------------- +@@: + cmp ah,6 + jne @f + mov ax,[flags] + btr ax,2 + btr ax,6 + btr ax,7 + btr ax,8 + mov [flags],ax + jmp redraw +;--------------------------------------------------------------------- +@@: + cmp ah,7 + jne @f + mov ax,[flags] + bts ax,2 + btr ax,6 + btr ax,7 + btr ax,8 + mov [flags],ax +@@: + cmp ah,8 + jne @f + bts [flags],9 + call get_SmartBlock + jmp still +;--------------------------------------------------------------------- +@@: + cmp ah,9 ; Save Info + jne @f +; invoke OpenDialog + mov [OpenDialog_data.type],dword 1 + push dword OpenDialog_data + call [OpenDialog_Start] + cmp [OpenDialog_data.status],1 + jne still +; prepare for PathShow + push dword PathShow_data_1 + call [PathShow_prepare] + call draw_PathShow + + btr [flags],4 + jmp save_file +;--------------------------------------------------------------------- +@@: + cmp ah,10 ; Load Info + jne @f +; invoke OpenDialog + mov [OpenDialog_data.type],dword 0 + push dword OpenDialog_data + call [OpenDialog_Start] + cmp [OpenDialog_data.status],1 + jne still +; prepare for PathShow + push dword PathShow_data_1 + call [PathShow_prepare] + call draw_PathShow + + btr [flags],4 + jmp open_file +;--------------------------------------------------------------------- +@@: + cmp ah,11 ; Save SMART + jne @f +; invoke OpenDialog + mov [OpenDialog_data2.type],dword 1 + push dword OpenDialog_data2 + call [OpenDialog_Start] + cmp [OpenDialog_data2.status],1 + jne still +; prepare for PathShow + push dword PathShow_data_2 + call [PathShow_prepare] + call draw_PathShow + + bts [flags],4 + jmp save_file +;--------------------------------------------------------------------- +@@: + cmp ah,12 ; Load SMART + jne redraw +; invoke OpenDialog + mov [OpenDialog_data2.type],dword 0 + push dword OpenDialog_data2 + call [OpenDialog_Start] + cmp [OpenDialog_data2.status],1 + jne still +; prepare for PathShow + push dword PathShow_data_2 + call [PathShow_prepare] + call draw_PathShow + + bts [flags],4 + jmp open_file +;--------------------------------------------------------------------- +open_file: + mov [func_70.func_n],SSF_READ_FILE + mov [func_70.param3],512 + mov [func_70.param4],InfoArray + mov [func_70.name],filename_area + bt [flags],4 + jnc @f + mov [func_70.param4],SmartArray + mov [func_70.param3],1024 + mov [func_70.name],filename_area2 +@@: + mcall SF_FILE,func_70 + test al,al ;файл найден? + jnz .1 + mov ax,[flags] + bts ax,0 + btr ax,7 + btr ax,8 + btr ax,6 + btr ax,2 + bt ax,4 + jc @f + bts ax,7 + mov [flags],ax + jmp good +@@: + bts ax,8 + mov [flags],ax + jmp redraw_all +.1: + bt [flags],4 + jnc @f + mov [error_text],error_open_file_string_SMART + jmp redraw_all +@@: + mov [error_text],error_open_file_string_Info + jmp redraw_all +;--------------------------------------------------------------------- +save_file: ;сохраняем файл + mov [func_70.func_n],SSF_CREATE_FILE + mov [func_70.param3],512 + mov [func_70.param4],InfoArray + mov [func_70.name],filename_area + bt [flags],4 + jnc @f + mov [func_70.param4],SmartArray + mov [func_70.param3],1024 + mov [func_70.name],filename_area2 +@@: + mcall SF_FILE,func_70 + test al,al ;сохранён удачно? + jz good + bt [flags],4 + jnc @f + mov [error_text],error_save_file_string_SMART + jmp redraw_all +@@: + mov [error_text],error_save_file_string_Info + jmp redraw_all +;--------------------------------------------------------------------- +good: + mov [error_text],no_error_text + jmp redraw_all +;--------------------------------------------------------------------- +ports_: + mov eax,[option_group1] + cmp eax,op1 + jne @f + mov edx,PRIMARY_CHANNEL + btr [flags],5 + jmp .0 +;--------------------------------------------------------------------- +@@: + cmp eax,op2 + jne @f + mov edx,PRIMARY_CHANNEL + bts [flags],5 + jmp .0 +;--------------------------------------------------------------------- +@@: + cmp eax,op3 + jbe @f + mov edx,SECONDARY_CHANNEL + btr [flags],5 + jmp .0 +;--------------------------------------------------------------------- +@@: + mov edx,SECONDARY_CHANNEL + bts [flags],5 +.0: + mov ecx,edx + sub ecx,7 + mcall SF_SET_PORTS,0 + ret +;--------------------------------------------------------------------- +get_InfoBlock: + call ports_ + push ecx edx + xor ecx,ecx +.1: + in al,dx ;Проверить готовность + dec cx ;необходимо проверять и бит 7, однако работает ... + jz .error + bt ax,6 + jnc .1 + + dec dx + in al,dx + mov bx,ax ;сохраняем бит выбора устройтсва + btr ax,4 + bt [flags],5 + jnc @f + bts ax,4 +@@: + out dx,al + inc dx + mov al,0xec + out dx,al + + push bx + mcall SF_SLEEP,10 + pop bx + xor cx,cx +.2: + in al,dx ;Проверить готовность + dec cx + jz .error + bt ax,6 + jnc .2 + + mov esi,InfoArray ;Получить информацию + xor edi,edi + sub dx,7 +.3: + in ax,dx + xchg al,ah + mov [esi+edi*2],ax + inc edi + cmp edi,256 + jne .3 + bts [flags],0 + btr [flags],2 + btr [flags],3 + + push bx + mcall SF_SLEEP,10 + pop bx + + mov ax,bx + add dx,6 + out dx,al + pop edx ecx + mcall SF_SET_PORTS,1 + ret +;--------------------------------------------------------------------- +.error: + bts [flags],3 + pop edx ecx + mcall SF_SET_PORTS,1 + ret +;--------------------------------------------------------------------- +get_SmartBlock: + call ports_ + push ecx edx + xor ecx,ecx +.1: + in al,dx ;Проверить готовность + dec cx + jz .error + bt ax,6 + jnc .1 + + dec dx + in al,dx + mov cx,ax ;сохраняем бит выбора устройтсва + btr ax,4 + bt [flags],5 + jnc @f + bts ax,4 +@@: + out dx,al + inc dx + + bt [flags],9 ;S.M.A.R.T. on/off + jnc @f + sub dx,3 + mov al,0x4f + out dx,al + inc dx + mov al,0xc2 + out dx,al + sub dx,4 + mov al,0xd8 + btc [flags],10 + jnc .2 + inc al +.2: + out dx,al + add dx,6 + mov al,0xb0 + out dx,al + dec dx + mov ax,cx + out dx,ax + btr [flags],9 + btr [flags],1 + jmp .end +;--------------------------------------------------------------------- +@@: + sub dx,3 + mov al,0x4f + out dx,al + inc dx + mov al,0xc2 + out dx,al + sub dx,4 + mov al,0xd0 + out dx,al + add dx,6 + mov al,0xb0 + out dx,al + + mcall SF_SLEEP,10 + + mov esi,SmartArray ;Получить информацию + xor edi,edi + sub dx,7 +.3: + in ax,dx + xchg al,ah + mov [esi+edi*2],ax + inc edi + cmp edi,256 + jne .3 + + mcall SF_SLEEP,10 + + add dx,4 + mov al,0x4f + out dx,al + inc dx + mov al,0xc2 + out dx,al + sub dx,4 + mov al,0xd1 + out dx,al + add dx,6 + mov al,0xb0 + out dx,al + + mcall SF_SLEEP,10 + + sub dx,7 +.4: + in ax,dx + xchg al,ah + mov [esi+edi*2],ax + inc edi + cmp edi,256*2 + jne .4 + + bts [flags],1 + btr [flags],3 + mov ax,cx + add dx,6 + out dx,al +.end: + pop edx ecx + mcall SF_SET_PORTS,1 + ret +;--------------------------------------------------------------------- +.error: + bts [flags],3 + pop edx ecx + mcall SF_SET_PORTS,1 + ret +;--------------------------------------------------------------------- +show_ControlBlock: + mcall SF_DRAW_TEXT,<4,30>,0x80000000,ctrl_text1 + mcall ,<4,45>,,ctrl_text2 + push dword Option_boxs + call [option_box_draw] +; push dword edit1 +; call [edit_box_draw] + call draw_PathShow + + mcall SF_DEFINE_BUTTON,<3,80>,<60,15>,8,0xf0f0f0 + mcall ,<50,30>,<82,15>,9, ; Save Info + mcall ,<90,30>,,10, ; Load Info + mcall ,<50,30>,<100,15>,11, ; Save SMART + mcall ,<90,30>,,12, ; Load SMART + mcall SF_DRAW_TEXT,<4,87>,0x80000000,edbx_text1 + mcall ,<7,64>,,smrt_text1 + mcall ,<4,105>,,edbx_text2 +show_TestBlock: + ret +;--------------------------------------------------------------------- +show_InfoBlock: + bt [flags],0 + jnc .end + bt [flags],3 + jc .end + mov al,[page_num] + dec al + jz .page1 + dec al + jz .page2 + dec al + je .page3 + dec al + jz .page4 + dec al + jz .page5 +.end: + ret +;--------------------------------------------------------------------- +.page1: +;TABLE 1 of 11 + mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.10_19 + ab ; add ebx,300*65536 + mcall ,,0x0,(InfoArray+10*2),((19-10)+1)*2 + sb ; sub ebx,300*65536-12 + mcall ,,0x80444444,t.23_26 + ab + mcall ,,0x0,(InfoArray+23*2),((26-23)+1)*2 + sb + mcall ,,0x80444444,t.27_46 + ab + mcall ,,0x0,(InfoArray+27*2),((46-27)+1)*2 + sb + mcall ,,0x80444444,t.type + ab + mov di,[InfoArray+222*2] +@@: + bt di,4 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.222.12.1 +@@: + bt di,4 + jc @f + mcall SF_DRAW_TEXT,,0x80000000,t.222.12.0 +@@: + sb + mcall SF_DRAW_TEXT,,0x80444444,t.60_61 + ab + mov edx,ebx + push ebx + mov ecx, [InfoArray+60*2] + bswap ecx + ror ecx,16 + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + shr ecx,11 ;LBA in MB + add edx,70*65536 + mcall ,,,,0x459a + pop ebx + + sb ;CHS + mcall SF_DRAW_TEXT,,0x80444444,t.chs + ab + mov edx,ebx + push ebx + movzx ecx, word [InfoArray+2] + xchg ch,cl + mcall SF_DRAW_NUMBER,0x80050000,,,0x0 + add edx,35*65536 + movzx ecx, word [InfoArray+6] + xchg ch,cl + mcall SF_DRAW_NUMBER,0x80040000,,,0x0 + add edx,15*65536 + movzx ecx, word [InfoArray+12] + xchg ch,cl + mcall ;SF_DRAW_NUMBER,0x80040000,,,0x0 + add edx,20*65536 + push ebx edx + xor edx,edx + movzx eax,word[InfoArray+2] + xchg ah,al + movzx ebx, word [InfoArray+6] + xchg bh,bl + mul ebx + mul ecx + xchg eax,ecx + pop edx ebx + shr ecx,11 + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + pop ebx + + mov ax,[InfoArray+48*2] + bt ax,8 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.48.0 + ab + mcall ,,0x80000000,t.sup +@@: + mov ax,[InfoArray+49*2] + xchg al,ah + mov di,ax + bt di,13 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.13.1 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,13 + jc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.13.0 + ab +@@: + bt di,11 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.11.1 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,11 + jc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.11.0 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,10 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.10.1 + ab +@@: + bt di,9 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.9 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,8 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.49.8 + ab + mcall ,,0x80000000,t.sup +@@: + sb + mcall SF_DRAW_TEXT,,0x80444444,t.47 +; add ebx,10 +; mcall SF_DRAW_TEXT,,0x80444444,t.47_ + ab + mov edx,ebx + movzx ecx, word [InfoArray+47*2] + xchg ch,cl + mcall SF_DRAW_NUMBER,0x80050000,,,0x80000000 + mov ebx,edx + + +;PART 2 of 11 + sb + mcall SF_DRAW_TEXT,,0x80444444,t.59 +; add ebx,10 +; mcall SF_DRAW_TEXT,,0x80444444,t.59_ + ab + mov edx,ebx + movzx ecx, word [InfoArray+59*2] + xchg ch,cl + mcall SF_DRAW_NUMBER,0x80050000,,,0x0 + mov ebx,edx + + mov ax,[InfoArray+63*2] + xchg al,ah + mov di,ax + bt di,10 + jnc @f + mov edx,ebx +; push ebx + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.10 + ab + mcall ,,0x80000000,t.sel +@@: + bt di,9 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.9 + ab + mcall ,,0x80000000,t.sel +@@: + bt di,8 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.8 + ab + mcall ,,0x80000000,t.sel +@@: + bt di,2 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.2 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,1 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.1 + ab + mcall ,,0x80000000,t.sup +@@: + bt di,0 + jnc @f + sb + mcall SF_DRAW_TEXT,,0x80444444,t.63.0 + ab + mcall ,,0x80000000,t.sup +@@: + +;PART 3 of 11 + sb + mcall SF_DRAW_TEXT,,0x80444444,t.75.0_4 + ab + mov edx,ebx + push ebx + movzx ecx, byte [InfoArray+75*2+1] + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + pop ebx + +;words 76-79 - SATA +;.word80: +; sb +; mcall SF_DRAW_TEXT,,0x80444444,t.80 +; ab +; mov cx,[InfoArray+80*2] +; test cx,cx +; jnz @f +; mcall SF_DRAW_TEXT,,0x80444444,t.unk +; ret +;@@: cmp cx,-1 +; jne @f +; mcall SF_DRAW_TEXT,,0x80444444,t.unk +; ret +;@@: xchg ch,cl +; mov edx,ebx +; mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 +; mov ebx,edx + sb + mcall SF_DRAW_TEXT,,0x80444444,t.80__ + mov ax,[InfoArray+80*2] + ab + xchg al,ah + mov di,ax + bt di,8 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.80.8 + jmp .end +;--------------------------------------------------------------------- +@@: + bt di,7 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.80.7 + jmp .end +;--------------------------------------------------------------------- +@@: + bt di,6 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.80.6 + jmp .end +;--------------------------------------------------------------------- +@@: + bt di,5 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.80.5 + jmp .end +;--------------------------------------------------------------------- +@@: + bt di,4 + jnc @f + mcall SF_DRAW_TEXT,,0x80000000,t.80.4 + jmp .end +@@: + ret +;--------------------------------------------------------------------- +.page2: +;PART 4 of 11 + mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.82 + add ebx,10*65536 + mov ax,[InfoArray+82*2] + xchg al,ah + mov di,ax + bt di,14 + jnc @f + ad + mcall SF_DRAW_TEXT,,0x80000000,t.82.14 + wba 13,t.82.13 + wba 12,t.82.12 + wba 10,t.82.10 + wba 9,t.82.9 + wba 8,t.82.8 + wba 7,t.82.7 + wba 6,t.82.6 + wba 5,t.82.5 + wba 4,t.82.4 + wba 3,t.82.3 + wba 1,t.82.1 + wba 0,t.82.0 +@@: + mov ax,[InfoArray+83*2] + xchg al,ah + mov di,ax + + wba 13,t.83.13 + wba 12,t.83.12 + wba 11,t.83.11 + wba 10,t.83.10 + wba 9,t.83.9 + wba 8,t.83.8 + wba 6,t.83.6 + wba 5,t.83.5 + wba 3,t.83.3 + wba 2,t.83.2 + wba 1,t.83.1 + wba 0,t.83.0 +@@: + +;PART 5 of 11 + mov ebx,290*65536+25 + mov ax,[InfoArray+84*2] + xchg al,ah + mov di,ax + wba 13,t.84.13 + wba 8,t.84.8 + wba 7,t.84.7 + wba 6,t.84.6 + wba 5,t.84.5 + wba 4,t.84.4 + wba 3,t.84.3 + wba 2,t.84.2 + wba 1,t.84.1 + wba 0,t.84.0 +@@: + ret +;--------------------------------------------------------------------- +.page3: + mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.85 + add ebx,10*65536 + mov ax,[InfoArray+85*2] + xchg al,ah + mov di,ax + bt di,14 + jnc @f + ad + mcall SF_DRAW_TEXT,,0x80000000,t.85.14 + wba 13,t.85.13 + wba 12,t.85.12 + wba 10,t.85.10 +; ad +; mcall SF_DRAW_TEXT,,0x80000000,t.85.10_ + wba 9,t.85.9 + wba 8,t.85.8 + wba 7,t.85.7 + wba 6,t.85.6 + wba 5,t.85.5 + wba 4,t.85.4 + wba 3,t.85.3 + wba 1,t.85.1 + wba 0,t.85.0 +@@: + mov ax,[InfoArray+86*2] + xchg al,ah + mov di,ax + bt di,13 + jnc @f + ad + mcall SF_DRAW_TEXT,,0x80000000,t.86.13 + wba 12,t.86.12 + wba 11,t.86.11 + wba 10,t.86.10 + wba 9,t.86.9 + wba 8,t.86.8 + wba 6,t.86.6 + wba 5,t.86.5 + wba 3,t.86.3 + wba 2,t.86.2 + wba 1,t.86.1 + wba 0,t.86.0 +@@: + ret +;--------------------------------------------------------------------- +.page4: + mov ebx,5*65536+25 + mov ax,[InfoArray+88*2] + xchg al,ah + xor di,di + bt ax,8 + jnc @f + mov di,1 +@@: + bt ax,9 + jnc @f + mov di,2 +@@: + bt ax,10 + jnc @f + mov di,3 +@@: + bt ax,11 + jnc @f + mov di,4 +@@: + bt ax,12 + jnc @f + mov di,5 +@@: + bt ax,13 + jnc @f + mov di,6 +@@: + test di,di + jz @f + mcall SF_DRAW_TEXT,,0x80444444,t.88 + mov edx,ebx + push ebx + add edx,90*65536 + movzx ecx, word di + dec cl + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + pop ebx + ad +@@: + xor di,di + mov ax,[InfoArray+88*2] + xchg al,ah + bt ax,0 + jnc @f + mov di,1 +@@: + bt ax,1 + jnc @f + mov di,2 +@@: + bt ax,2 + jnc @f + mov di,3 +@@: + bt ax,3 + jnc @f + mov di,4 +@@: + bt ax,4 + jnc @f + mov di,5 +@@: + bt ax,5 + jnc @f + mov di,6 +@@: + bt ax,6 + jnc @f + mov di,7 +@@: + test di,di + jz @f + mcall SF_DRAW_TEXT,,0x80444444,t.88.1_6 + mov edx,ebx + push ebx + add edx,90*65536 + movzx ecx, word di + dec cl + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + pop ebx + ad +@@: + mz t.89,, + mz t.90,, + mz t.91,, + mz t.92,, +;WORD 94 + mz t.94.8_15,, + mz t.94.0_7,, + mz t.95,, + mz t.96,, + mz t.97,, + mz t.98_99,,, + mz t.100_103,,, + mz t.104,, + +;PART 6 of 11 ? + mcall SF_DRAW_TEXT,,0x80444444,t.106 + add ebx,12 + mov ax,[InfoArray+106*2] + xchg ah,al + mov di,ax + bt di,13 + jnc @f + mcall SF_DRAW_TEXT,,0x80444444,t.106.13 + add ebx,15 +@@: + bt di,12 + jnc @f + mcall SF_DRAW_TEXT,,0x80444444,t.106.12 + add ebx,15 +@@: + mcall SF_DRAW_TEXT,,0x80444444,t.106.0_3 + ab + shl di,12 + shr di,12 + movzx ecx,di + mov edx,ebx + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + mov ebx,edx + sb + + mz t.107,, +;108 - 111 добавить + mz t.117_118,, + ret +;--------------------------------------------------------------------- +.page5: +; mcall SF_DRAW_TEXT,5*65536+25,0x80444444,t.85 + ret +;--------------------------------------------------------------------- +show_SmartBlock: + bt [flags],1 + jnc .end + bt [flags],3 + jc .end + + cmp byte [SmartArray+2],0 + je .end + mcall SF_DRAW_TEXT,5*65536+25,0x80444444,s.title + ad + movzx ax, byte [SmartArray+2] + cmp ax,30 ;максимум 30 атрибутов + jg .end + push ax + push dword (3+SmartArray) +@@: + xor edx,edx + call .find + push edx + + mov edx,ebx + movzx ecx,al + mcall SF_DRAW_NUMBER,0x80030000,,,0x0 + mov ebx,edx + add ebx,30*65536 + pop edx + test edx,edx + jnz .0 + mov edx,s.0 + .0: mov eax,[esp] + mov al,[eax+2] + mov ecx,0x80000000 + and al,1 + jz .1 +; mov ecx,0x80ff0000 + .1: mcall SF_DRAW_TEXT,,, + sub ebx,30*65536 + + mov ecx,[esp] + inc ecx + movzx ecx, byte [ecx] + add ebx,400*65536 + mov edx,ebx + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + mov ecx,[esp] + add ecx,4 + movzx ecx, byte [ecx] + add edx,30*65536 + mcall SF_DRAW_NUMBER,0x800a0000,,,0x0 + mov ebx,edx + sub ebx,(30+400)*65536 + + ad + add dword [esp],12 + dec word [esp+4] + jnz @b + add esp,6 +.end: + ret +;--------------------------------------------------------------------- +.find: + mov eax, dword [esp+4] + mov al,[eax] + sc 1,s.1 + sc 2,s.2 + sc 3,s.3 + sc 4,s.4 + sc 5,s.5 + sc 6,s.6 + sc 7,s.7 + sc 8,s.8 + sc 9,s.9 + sc 10,s.10 + sc 11,s.11 + sc 12,s.12 + sc 13,s.13 + sc 190,s.190 + sc 191,s.191 + sc 192,s.192 + sc 193,s.193 + sc 194,s.194 + sc 195,s.195 + sc 196,s.196 + sc 197,s.197 + sc 198,s.198 + sc 199,s.199 + sc 200,s.200 + sc 201,s.201 + sc 202,s.202 + sc 203,s.203 + sc 204,s.204 + sc 205,s.205 + sc 206,s.206 + sc 207,s.207 + sc 208,s.208 + sc 209,s.209 + sc 220,s.220 + sc 221,s.221 + sc 222,s.222 + sc 223,s.223 + sc 224,s.224 + sc 225,s.225 + sc 226,s.226 + sc 227,s.227 + sc 228,s.228 + sc 230,s.230 + sc 231,s.231 + sc 240,s.240 + sc 250,s.250 + ret +;--------------------------------------------------------------------- +;DATA AREA +if lang eq it_IT + t: + .sup db 'supportato',0 + .sel db 'selzionato',0 + .enb db 'abilitato',0 + .unk db 'sconosciuto',0 + .type db 'Tipo',0 + .chs db 'CHS',0 +else + t: + .sup db 'supported',0 + ;.usp db 'unsupported',0 + .sel db 'selected',0 + ;.usl db 'not selected',0 + .enb db 'enabled',0 + ;.dis db 'disabled',0 + .unk db 'unknown',0 + .type db 'Type',0 + .chs db 'CHS',0 +end if + +if lang eq it_IT + .10_19 db 'Numero seriale',0 + .23_26 db 'Versione firmware',0 + .27_46 db 'Numero modello',0 + .47 db 'Max. number of sectors that shall be transferred per DRQ data block',0 + .48.0 db 'Trusted Computing feature set is',0 + .49.13.1 db 'Standby timer values are',0 + .49.13.0 db 'Standby timer values shall be managed by the device',0 + .49.11.1 db 'IORDY',0 + .49.11.0 db 'IORDY may be',0 + .49.10.1 db 'IORDY potrebbe essere disabilitato',0 + .49.9 db 'LBA',0 + .49.8 db 'DMA',0 +else + .10_19 db 'Serial number',0 + .23_26 db 'Firmware revision',0 + .27_46 db 'Model number',0 + .47 db 'Max. number of sectors that shall be transferred per DRQ data block',0 + ;.47 db 'Maximum number of logical sectors that shall be transferred per DRQ',0 + ;.47_ db 'data block on READ/WRITE MULTIPLE commands',0 + .48.0 db 'Trusted Computing feature set is',0 ;1 sup + .49.13.1 db 'Standby timer values are',0 ;sup + .49.13.0 db 'Standby timer values shall be managed by the device',0 + .49.11.1 db 'IORDY',0 ;sup + .49.11.0 db 'IORDY may be',0 ;sup + .49.10.1 db 'IORDY may be disabled',0 + .49.9 db 'LBA',0 ;1 sup + .49.8 db 'DMA',0 ;1 sup +end if + +;.53 db 'Free-fall Control Sensitivity',0 +;.53.6_15 db 'Sensitivity level',0 +.59 db 'Current number of sectors that shall be transferred per DRQ data block',0 +;.59 db 'Current setting for number of logical sectors that shall be',0 +;.59_ db 'transferred per DRQ data block on READ/WRITE MULTIPLE commands',0 +.60_61 db 'Total number of user addressable logical sectors',0 +.63.10 db 'Multiword DMA mode 2 is',0 ;1 sel +.63.9 db 'Multiword DMA mode 1 is',0 ;1 sel +.63.8 db 'Multiword DMA mode 0 is',0 ;1 sel +.63.2 db 'Miltiword DMA mode 2 and below are',0 ;sup +.63.1 db 'Miltiword DMA mode 1 and below are',0 ;sup +.63.0 db 'Miltiword DMA mode 0 is',0 ;sup +.64.0_7 db 'PIO modes',0 ;sup + +;.65 - .68 добавить + +.75.0_4 db 'Maximum queue depth -1 ',0 +.76 db 'Serial ATA Capabilities:',0 +.76.10 db 'Supports Phy Event Counters',0 ;1 +.76.9 db 'Supports receit of host initiated power management request',0 ;1 +.76.8 db 'Supports native Command Queuing',0 ;1 +.76.2 db 'Supports SATA Gen2 Signaling Speed (3.0Gb/s)',0 +.76.1 db 'Supports SATA Gen1 Signaling Speed (1.5Gb/s)',0 +.78 db 'SATA Features Supported',0 +.78_ db 'Device supports:',0 +.78.6 db 'Software Setting Preservation',0 ;1 +.78.4 db 'in-order data delivery',0 ;1 +.78.3 db 'initiating power management',0 ;1 +.78.2 db 'DMA Setup auto-activation',0 ;1 +.78.1 db 'non-zero buffer offsets',0 ;1 +.79 db 'SATA Features Enabled:',0 +.79.6 = .78.6;1 enb +.79.4 = .78.4;1 enb +.79.3 = .78.3;1 enb +.79.2 = .78.2;1 enb +.79.1 = .78.1;1 enb +.80 db 'Major revision number',0 +.80__ db 'supports:',0 +.80.8 db 'ATA8-ACS',0 ;1 +.80.7 db 'ATA/ATAPI-7',0 ;1 +.80.6 db 'ATA/ATAPI-6',0 ;1 +.80.5 db 'ATA/ATAPI-5',0 ;1 +.80.4 db 'ATA/ATAPI-4',0 ;1 +.81 db 'Minor revision number',0 + +.82 db 'Command set/feature supported:',0 +.82.14 db 'NOP command',0 ;1 sup +.82.13 db 'READ BUFFER command',0 ;1 sup +.82.12 db 'WRITE BUFFER command',0 ;1 sup +.82.10 db 'Host Protected Area feature set',0 ;1 sup +.82.9 db 'DEVICE RESET command',0 ;1 sup +.82.8 db 'SERVICE interrupt',0 ;1 sup +.82.7 db 'release interrupt',0 ;1 sup +.82.6 db 'read look-ahead',0 ;1 sup +.82.5 db 'volatile write cache',0 ;1 sup +.82.4 db 'PACKET feature set',0 ;1 sup +.82.3 db 'Mandatory Power Management feature set',0 ;1 sup +.82.1 db 'Security feature set',0 ;1 sup +.82.0 db 'SMART feature set',0 ;1 sup +;.83 db 'Command sets supported:',0 +.83.13 db 'FLUSH CACHE EXT command',0 ;1 sup +.83.12 db 'Mandatory FLUSH CACHE command',0 ;1 sup +.83.11 db 'Device Configuration Overlay feature set',0 ;1 sup +.83.10 db '48-bit Address feature set',0 ;1 sup +.83.9 db 'Automatic Acoustic Management feature set',0 ;1 sup +.83.8 db 'SET MAX security extension',0 ;1 sup +.83.6 db 'SET FEATURES subcommand required to spin-up after power-up',0 ;1 +.83.5 db 'Power-Up In Standby feature set',0 ;1 sup +.83.3 db 'Advanced Power Management feature set',0 ;1 sup +.83.2 db 'CFA feature set',0 ;1 sup +.83.1 db 'READ/WRITE DMA QUEUED',0 ;1 sup +.83.0 db 'DOWNLOAD MICROCODE command',0 ;1 sup + +;.84 db 'Command set/feature supported:',0 +.84.13 db 'IDLE IMMEDIATE with UNLOAD FEATURE',0 ;1 sup +.84.8 db '64-bit World wide name supported',0 ;1 sup +.84.7 db 'WRITE DMA QUEUED FUA EXT command',0 ;1 sup +.84.6 db 'WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT commands',0 ;1 sup +.84.5 db 'General Purpose Logging feature set',0 ;1 sup +.84.4 db 'Streaming feature set',0 ;1 sup +.84.3 db 'Media Card Pass Through Command feature set',0 ;1 sup +.84.2 db 'Media serial number',0 ;1 sup +.84.1 db 'SMART self-test',0 ;1 sup +.84.0 db 'SMART error logging',0 ;1 sup +.85 db 'Command set/feature enabled/supported:',0 +.85.14 = .82.14 ;1 sup +.85.13 = .82.13 ;1 sup +.85.12 = .82.12 ;1 sup +.85.10 db 'Host Protected Area has been established',0;1 (i.e., the maximum LBA is less than the maximum native LBA) +.85.9 = .82.9; 1 sup +.85.8 = .82.8; 1 enb +.85.7 = .82.7; 1 enb +.85.6 = .82.6; 1 enb +.85.5 = .82.5; 1 enb +.85.4 = .82.4; 1 sup +.85.3 = .82.3; 1 sup +.85.1 = .82.1; 1 enb +.85.0 = .82.0; 1 enb + +;.86 db 'Command set/feature enabled/supported:',0 +.86.13 = .83.13; 1 sup +.86.12 db 'FLUSH CACHE command',0 ;1 sup +.86.11 db 'Device Configuration Overlay',0 ;1 sup +.86.10 = .83.10 ;1 sup +.86.9 = .83.9 ;1 enb +.86.8 db 'SET MAX security extension enabled by SET MAX SET PASSWORD',0 ;1 +.86.6 = .83.6 ;1 +.86.5 = .83.5 ;1 enb +.86.3 = .83.3 ;1 enb +.86.2 = .83.2 ;l sup +.86.1 = .83.1 ;1 sup +.86.0 = .83.0 ;1 sup +;.87 db 'Command set/feature enabled/supported:',0 +;.87.x см..84 + +.88 db 'Ultra DMA mode selected',0 +;бит 14 установлен - mode 6 is selected, 13-5, 12-4, 11-3, 10-2, 9-1, 8-0 +.88.1_6 db 'Ultra DMA mode and below are supported',0 ;бит 1-1, ..., 6-6 +;.88.0: db 'Ultra DMA mode 0 is',0 ;1 sup +.89 db 'Time required for security erase unit completion',0 +.90 db 'Time required for Enhanced security erase completion',0 +.91 db 'Current advanced power management value',0 +.92 db 'Master Password Identifier',0 + +;.93 db 'Hardware reset result',0 ;добавить +.94.8_15 db 'Vendor"s recommended acoustic management value',0 +.94.0_7 db 'Current automatic acoustic management value',0 +.95 db 'Stream Minimum Request Size',0 +.96 db 'Streaming Transfer Time - DMA',0 +.97 db 'Streaming Access Latency - DMA and PIO',0 +.98_99 db 'Streaming Performance Granularity',0 +.100_103 db 'Total Number of User Addressable Sectors for the 48-bit Address feature set',0 +.104 db 'Streaming Transfer Time - PIO',0; + +.106 db 'Physical sector size / Logical Sector Size:',0 +.106.13 db 'Device has multiple logical sectors per physical sector',0 ;1 +.106.12 db 'Device Logical Sector Longer than 256 Words',0 ;1 +.106.0_3 db '2^X logical sectors per physical sector',0 +.107 db 'Inter-seek delay for ISO-7779 acoustic testing in microseconds',0 +.108.12_15 db 'NAA (3:0)',0 +.108.0_11 db 'IEEE OUI (23:12)',0 +.109.4_15 db 'IEEE OUI (11:0)',0 +.109.0_3 db 'Unique ID (35:32)',0 +.110 db 'Unique ID (31:16)',0 +.111 db 'Unique ID (15:0)',0; +.117_118 db 'Words per Logical Sector',0 +.119 db 'Supported Settings:',0 +.119.5 db 'Free-fall Control feature set is',0 ;1 sup +.119.4 db 'The Segmented feature for DOWNLOAD MICROCODE is',0 ;1 sup +.119.3 db 'READ and WRITE DMA EXT GPL optional commands are',0 ;1 sup +.119.2 db 'WRITE UNCORRECTABLE EXT is',0 ;1 sup +.119.1 db 'Write-Read-Verify feature set is',0 ;1 sup +.120 db 'Command set/feature enabled/supported',0 +.120.5 db 'Free-fall Control feature set is',0 ;1 enb +.120.4 db 'The Segmented feature for DOWNLOAD MICROCODE is',0 ;1 sup +.120.3 db 'READ and WRITE DMA EXT GPL optional commands are',0 ;1 sup +.120.2 db 'WRITE UNCORRECTABLE EXT is',0 ;1 sup +.120.1 db 'Write-Read-Verify feature set is',0 ;1 enb + +.128 db 'Security status',0 +.128.8.0 db 'Security level = High',0 +.128.8.1 db 'Security level = Maximum',0 +.128.5 db 'Enhanced security erase',0 ;1 sup +.128.4 db 'Security count expired',0 ;1 +.128.3 db 'Security frozen',0 ;1 +.128.2 db 'Security locked',0 ;1 +.128.1 db 'Security enabled',0 ;1 +.128.0 db 'Security supported',0 ;1 + +;.160 добавить + +.176_205 db 'Current media serial number',0 +.206 db 'SCT Command Transport:',0 +.206.5 db 'Data Tables',0 ;1 sup +.206.4 db 'Features Control',0 ;1 sup +.206.3 db 'Error Recovery Control',0 ;1 sup +.206.2 db 'Write Same',0 ;1 sup +.206.1 db 'Long Sector Access',0 ;1 sup +.206.0 db '',0 ;1 sup +.209 db 'Alignment of logical blocks within a larger physical block',0 +.209.0_13 db '"Logical sector" offset within the first physical sector where the first logical sector is placed.',0; +.210_211 db 'Write-Read-Verify Sector Count Mode 3 Only',0 +.212_213 db 'Verify Sector Count Mode 2 Only',0 +.214 db 'NV Cache Capabilities:',0 +.214.12_15 db 'NV Cache feature set version',0 +.214.8_11 db 'NV Cache Power Mode feature set version',0 +.214.4 db 'NV Cache feature set',0 ;1 enb +.214.1 db 'NV Cache Power Mode feature set',0 ;1 enb +.214.0 db 'NV Cache Power Mode feature set',0 ;1 sup +.215 db 'NV Cache Size in Logical Blocks (15:0)',0 + +.216 db 'NV Cache Size in Logical Blocks (31:16)',0 +.217 db 'Nominal media rotation rate',0 +.219 db 'NV Cache Options',0 +.219.0_7 db 'Device Estimated Time to Spin Up in Seconds',0 +.220.0_7 db 'Write-Read-Verify feature set current mode',0; +.222 db 'Transport Major revision number',0 +.222.12.0 db 'Parallel',0 +.222.12.1 db 'Serial',0 +;.222.0_11 добавить +.223 db 'Transport Major revision number',0 +.234 db 'Minimum number of 512 byte units per DOWNLOAD MICROCODE command for mode 03h',0 +.235 db 'Maximum number of 512 byte units per DOWNLOAD MICROCODE command for mode 03h',0 +.255 db 'Integrity word',0 +.255.8_15 db 'Checksum',0 +.255.0_7 db 'Signature',0 +;--------------------------------------------------------------------- +s: +.title db 'ID/Name/Value/Wrst',0 +.0 db '?',0 +.1 db 'Raw Read Error Rate',0 +.2 db 'Throughput Performance',0 +.3 db 'Spin Up Time',0 +.4 db 'Start/Stop Count',0 +.5 db 'Reallocated Sector Count',0 +.6 db 'Read Channel Margin',0 +.7 db 'Seek Error Rate',0 +.8 db 'Seek Time Performance',0 +.9 db 'Power-On Hours Count',0 +.10 db 'Spin Retry Count',0 +.11 db 'Recalibration Retries',0 +.12 db 'Device Power Cycle Count',0 +.13 db 'Soft Read Error Rate',0 +;?? db 'Emergency Re-track (Hitachi)',0 +;?? db 'ECC On-The-Fly Count (Hitachi)',0 +;96 db '? (Maxtor) +;97 db '? (Maxtor) +;98 db '? (Maxtor) +;99 db '? (Maxtor) +;100 db '? (Maxtor) +;101 db '? (Maxtor) +.190 db 'Airflow Temperature (WDC)',0 +.191 db 'G-Sense Error Rate',0 +.192 db 'Power-Off Retract Cycle',0 +.193 db 'Load/Unload Cycle Count',0 +.194 db 'Temperature',0 +.195 db 'Hardware ECC Recovered',0 +.196 db 'Reallocation Events Count',0 +.197 db 'Current Pending Sector Count',0 +.198 db 'Uncorrectable Sector Count',0 +.199 db 'UltraDMA CRC Error Rate',0 +.200 db 'Write Error Rate (WD - MultiZone Error Rate)',0 +.201 db 'TA Counter Detected (or Soft read error rate ?)',0 +.202 db 'TA Counter Increased (or Data Address Mark errors ?)',0 +.203 db 'Run out cancel',0 +.204 db 'Soft ECC correction',0 +.205 db 'Thermal asperity rate (TAR)',0 +.206 db 'Flying height',0 +.207 db 'Spin high',0 +.208 db 'Spin buzz',0 +.209 db 'Offline seek performance',0 +.220 db 'Disk Shift',0 +.221 db 'G-Sense Error Rate (Hitachi - Shock Sense Error Rate)',0 +.222 db 'Loaded Hours',0 +.223 db 'Load/Unload Retry Count',0 +.224 db 'Load Friction',0 +.225 db 'Load/Unload Cycle Count',0 +.226 db 'Load-in Time',0 +.227 db 'Torque Amplification Count',0 +.228 db 'Power-Off Retract Count',0 +;229 db '? (IBM DTTA)',0 +.230 db 'GMR Head Amplitude',0 +.231 db 'Temperature',0 +.240 db 'Head Flying Hours (Hitachi)',0 +.250 db 'Read Error Retry Rate',0 +;--------------------------------------------------------------------- +title db 'Hard Disk Drive INFOrmer v0.2',0 +menu_text db 'Info SMART Tests Control < >',0 +ctrl_text1 db 'Ports: 1f0-1f7 170-177',0 +ctrl_text2 db 'Device: 0 1 0 1',0 +edbx_text1 db 'Info: Save Load',0 +edbx_text2 db 'SMART: Save Load',0 +smrt_text1 db 'SMART on/off',0 +page_text db 'Page:',0 +;system_path db '/sys/lib/' +;boxlib_name db 'box_lib.obj',0 +;head_f_i: +;head_f_l db 'error',0 +;err_message_found_lib db 'box_lib.obj was not found',0 +;err_message_import db 'box_lib.obj was not imported ',0 +if lang eq it_IT + error_open_file_string_Info db 'Non riesco ad aprire Info file!',0 + error_save_file_string_Info db 'Non riesco a salvare Info file!',0 + + error_open_file_string_SMART db 'Non riesco ad aprire SMART file!',0 + error_save_file_string_SMART db 'Non riesco a salvare SMART file!',0 +else + error_open_file_string_Info db 'Can not open Info file!',0 + error_save_file_string_Info db 'Can not save Info file!',0 + + error_open_file_string_SMART db 'Can not open SMART file!',0 + error_save_file_string_SMART db 'Can not save SMART file!',0 +end if +no_error_text db 0 +align 4 +error_text dd no_error_text +;--------------------------------------------------------------------- +system_dir_Boxlib db '/sys/lib/box_lib.obj',0 +system_dir_ProcLib db '/sys/lib/proc_lib.obj',0 +;--------------------------------------------------------------------- +align 4 +l_libs_start: + +library01 l_libs system_dir_Boxlib+9, library_path, system_dir_Boxlib, Box_lib_import + +library02 l_libs system_dir_ProcLib+9, library_path, system_dir_ProcLib, ProcLib_import + +end_l_libs: +;--------------------------------------------------------------------- + + +;edit1 edit_box 200,2,85,0xaaaaaa,0x6a9480,0,0xAABBCC,0,128,file_name,ed_focus,10,10 +op1 option_box option_group1,72,44,6,9,0xffffff,0x0,0,0,0 +op2 option_box option_group1,94,44,6,9,0xffffff,0x0,0,0,0 +op3 option_box option_group1,132,44,6,9,0xffffff,0x0,0,0,0 +op4 option_box option_group1,154,44,6,9,0xffffff,0x0,0,0,0 +option_group1 dd op1 +Option_boxs dd op1,op2,op3,op4,0 +;--------------------------------------------------------------------- +;file_name db '/sys/hdd_',0 +;times 128 db (0) +;--------------------------------------------------------------------- +struct f70 + func_n dd ? + param1 dd 0 + param2 dd 0 + param3 dd ? + param4 dd ? + rezerv db 0 + name dd filename_area +ends +;--------------------------------------------------------------------- +func_70 f70 +; Info_name dd filename_area ;file_name +;--------------------------------------------------------------------- +; SMART_name dd filename_area2 ;file_name +;--------------------------------------------------------------------- +align 4 +ProcLib_import: +OpenDialog_Init dd aOpenDialog_Init +OpenDialog_Start dd aOpenDialog_Start +;OpenDialog__Version dd aOpenDialog_Version + dd 0 + dd 0 +aOpenDialog_Init db 'OpenDialog_init',0 +aOpenDialog_Start db 'OpenDialog_start',0 +;aOpenDialog_Version db 'Version_OpenDialog',0 +;--------------------------------------------------------------------- +align 4 +Box_lib_import: +;init_lib dd a_init +;version_lib dd a_version + + +edit_box_draw dd aEdit_box_draw +edit_box_key dd aEdit_box_key +edit_box_mouse dd aEdit_box_mouse +;version_ed dd aVersion_ed + +;check_box_draw dd aCheck_box_draw +;check_box_mouse dd aCheck_box_mouse +;version_ch dd aVersion_ch + +option_box_draw dd aOption_box_draw +option_box_mouse dd aOption_box_mouse +;version_op dd aVersion_op + +;scrollbar_ver_draw dd aScrollbar_ver_draw +;scrollbar_ver_mouse dd aScrollbar_ver_mouse +;scrollbar_hor_draw dd aScrollbar_hor_draw +;scrollbar_hor_mouse dd aScrollbar_hor_mouse +;version_scrollbar dd aVersion_scrollbar + +;dinamic_button_draw dd aDbutton_draw +;dinamic_button_mouse dd aDbutton_mouse +;version_dbutton dd aVersion_dbutton + +;menu_bar_draw dd aMenu_bar_draw +;menu_bar_mouse dd aMenu_bar_mouse +;menu_bar_activate dd aMenu_bar_activate +;version_menu_bar dd aVersion_menu_bar + +;FileBrowser_draw dd aFileBrowser_draw +;FileBrowser_mouse dd aFileBrowser_mouse +;FileBrowser_key dd aFileBrowser_key +;Version_FileBrowser dd aVersion_FileBrowser + +PathShow_prepare dd sz_PathShow_prepare +PathShow_draw dd sz_PathShow_draw +;Version_path_show dd szVersion_path_show + dd 0,0 + +;a_init db 'lib_init',0 +;a_version db 'version',0 + +aEdit_box_draw db 'edit_box_draw',0 +aEdit_box_key db 'edit_box_key',0 +aEdit_box_mouse db 'edit_box_mouse',0 +;aVersion_ed db 'version_ed',0 + +;aCheck_box_draw db 'check_box_draw',0 +;aCheck_box_mouse db 'check_box_mouse',0 +;aVersion_ch db 'version_ch',0 + +aOption_box_draw db 'option_box_draw',0 +aOption_box_mouse db 'option_box_mouse',0 +;aVersion_op db 'version_op',0 + +;aScrollbar_ver_draw db 'scrollbar_v_draw',0 +;aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 +;aScrollbar_hor_draw db 'scrollbar_h_draw',0 +;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 +;aVersion_scrollbar db 'version_scrollbar',0 + +;aDbutton_draw db 'dbutton_draw',0 +;aDbutton_mouse db 'dbutton_mouse',0 +;aVersion_dbutton db 'version_dbutton',0 + +;aMenu_bar_draw db 'menu_bar_draw',0 +;aMenu_bar_mouse db 'menu_bar_mouse',0 +;aMenu_bar_activate db 'menu_bar_activate',0 +;aVersion_menu_bar db 'version_menu_bar',0 + +;aFileBrowser_draw db 'FileBrowser_draw',0 +;aFileBrowser_mouse db 'FileBrowser_mouse',0 +;aFileBrowser_key db 'FileBrowser_key',0 +;aVersion_FileBrowser db 'version_FileBrowser',0 + +sz_PathShow_prepare db 'PathShow_prepare',0 +sz_PathShow_draw db 'PathShow_draw',0 +;szVersion_path_show db 'version_PathShow',0 +;--------------------------------------------------------------------- +PathShow_data_1: +.type dd 0 ;+0 +.start_y dw 85 ;+4 +.start_x dw 128 ;+6 +.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 +.area_size_x dw 415 ;+10 +.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable +.background_flag dd 0 ;+16 +.font_color dd 0x0 ;+20 +.background_color dd 0x0 ;+24 +.text_pointer dd fname_Info ;+28 +.work_area_pointer dd text_work_area ;+32 +.temp_text_length dd 0 ;+36 +;--------------------------------------------------------------------- +PathShow_data_2: +.type dd 0 ;+0 +.start_y dw 104 ;+4 +.start_x dw 127 ;+6 +.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 +.area_size_x dw 415 ;+10 +.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable +.background_flag dd 0 ;+16 +.font_color dd 0x0 ;+20 +.background_color dd 0x0 ;+24 +.text_pointer dd fname_SMART ;+28 +.work_area_pointer dd text_work_area2 ;+32 +.temp_text_length dd 0 ;+36 +;--------------------------------------------------------------------- +OpenDialog_data: +.type dd 0 +.procinfo dd procinfo ;+4 +.com_area_name dd communication_area_name ;+8 +.com_area dd 0 ;+12 +.opendir_pach dd temp_dir_pach ;+16 +.dir_default_pach dd communication_area_default_pach ;+20 +.start_path dd open_dialog_path ;+24 +.draw_window dd draw_window ;+28 +.status dd 0 ;+32 +.openfile_pach dd fname_Info ;+36 +.filename_area dd filename_area ;+40 +.filter_area dd Filter +.x: +.x_size dw 420 ;+48 ; Window X size +.x_start dw 10 ;+50 ; Window X position +.y: +.y_size dw 320 ;+52 ; Window y size +.y_start dw 10 ;+54 ; Window Y position + +OpenDialog_data2: +.type dd 0 +.procinfo dd procinfo ;+4 +.com_area_name dd communication_area_name2 ;+8 +.com_area dd 0 ;+12 +.opendir_pach dd temp_dir_pach2 ;+16 +.dir_default_pach dd communication_area_default_pach ;+20 +.start_path dd open_dialog_path ;+24 +.draw_window dd draw_window ;+28 +.status dd 0 ;+32 +.openfile_pach dd fname_SMART ;+36 +.filename_area dd filename_area2 ;+40 +.filter_area dd Filter2 +.x: +.x_size dw 420 ;+48 ; Window X size +.x_start dw 10 ;+50 ; Window X position +.y: +.y_size dw 320 ;+52 ; Window y size +.y_start dw 10 ;+54 ; Window Y position + +communication_area_name2: + db 'FFFFFFFF_open_dialog',0 + +communication_area_name: + db 'FFFFFFFF_open_dialog2',0 +open_dialog_path: +if __nightbuild eq yes + db '/sys/MANAGERS/opendial',0 +else + db '/sys/File Managers/opendial',0 +end if +communication_area_default_pach: + db '/sys',0 + +Filter: +dd Filter.end - Filter +.1: +db 'INFO',0 +.end: +db 0 + +Filter2: +dd Filter.end - Filter +.1: +db 'SMART',0 +.end: +db 0 + +default_Info: + db '/sys/default.info',0 +default_SMART: + db '/sys/default.smart',0 +;--------------------------------------------------------------------- +page_num db 1 +flags dw 100b +;бит 0: 0/1 - InfoBlock не/прочитан +;1: 0/1 - SmartBlock не/прочитан +;2: 1 - показ ControlBlock +;3: 1 - при попытке чтения возникла ошибка (превышено время ожидания) +;4: 0/1 - сохраняем/загружаем InfoBlock/Smart +;5: 0/1 - выбор Master/Slave +;6: 1 - показ Tests +;7: 1 - показ InfoBlock +;8: 1 - показ Smart +;9: 1 - выключаем или включаем SMART +;10: 1 - включаем SMART +;--------------------------------------------------------------------- +IM_END: +;--------------------------------------------------------------------- +align 16 +InfoArray: times 256 dw 0 +SmartArray: times 512 dw 0 + +;buf_cmd_lin rb 0 +;threath_buf rb 0x400 +align 4 +;--------------------------------------------------------------------- +cur_dir_path: + rb 4096 +;--------------------------------------------------------------------- +fname_Info: + rb 4096 ; filename +;--------------------------------------------------------------------- +fname_SMART: + rb 4096 ; filename +;--------------------------------------------------------------------- +text_work_area: + rb 1024 +;--------------------------------------------------------------------- +text_work_area2: + rb 1024 +;--------------------------------------------------------------------- +procinfo: + rb 1024 +;--------------------------------------------------------------------- +temp_dir_pach: + rb 4096 +;--------------------------------------------------------------------- +temp_dir_pach2: + rb 4096 +;--------------------------------------------------------------------- +filename_area: + rb 256 +;--------------------------------------------------------------------- +filename_area2: + rb 256 +;--------------------------------------------------------------------- +library_path: + rb 4096 +;--------------------------------------------------------------------- + rb 4096 +stacktop: +;--------------------------------------------------------------------- +I_END: +;--------------------------------------------------------------------- diff --git a/programs/system/hdd_info/trunk/makefile b/programs/system/hdd_info/makefile similarity index 100% rename from programs/system/hdd_info/trunk/makefile rename to programs/system/hdd_info/makefile diff --git a/programs/system/icon/trunk/Tupfile.lua b/programs/system/icon/Tupfile.lua similarity index 79% rename from programs/system/icon/trunk/Tupfile.lua rename to programs/system/icon/Tupfile.lua index 83d2cd4f3..f49d5356a 100644 --- a/programs/system/icon/trunk/Tupfile.lua +++ b/programs/system/icon/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/icon/trunk/build.sh b/programs/system/icon/build.sh similarity index 100% rename from programs/system/icon/trunk/build.sh rename to programs/system/icon/build.sh diff --git a/programs/system/icon/trunk/build_de.bat b/programs/system/icon/build_de.bat similarity index 100% rename from programs/system/icon/trunk/build_de.bat rename to programs/system/icon/build_de.bat diff --git a/programs/system/icon/trunk/build_en.bat b/programs/system/icon/build_en.bat similarity index 100% rename from programs/system/icon/trunk/build_en.bat rename to programs/system/icon/build_en.bat diff --git a/programs/system/icon/trunk/build_ru.bat b/programs/system/icon/build_ru.bat similarity index 100% rename from programs/system/icon/trunk/build_ru.bat rename to programs/system/icon/build_ru.bat diff --git a/programs/system/icon/trunk/dat_area.inc b/programs/system/icon/dat_area.inc similarity index 100% rename from programs/system/icon/trunk/dat_area.inc rename to programs/system/icon/dat_area.inc diff --git a/programs/system/icon/trunk/data.inc b/programs/system/icon/data.inc similarity index 100% rename from programs/system/icon/trunk/data.inc rename to programs/system/icon/data.inc diff --git a/programs/system/icon/trunk/icon.asm b/programs/system/icon/icon.asm similarity index 94% rename from programs/system/icon/trunk/icon.asm rename to programs/system/icon/icon.asm index e62f93b58..8f0d926df 100644 --- a/programs/system/icon/trunk/icon.asm +++ b/programs/system/icon/icon.asm @@ -1,1182 +1,1185 @@ -;******************************** -;* * -;* DESKTOP ICON MANAGER * -;* * -;* Compile with flat assembler * -;* * -;******************************** -; version: 3.11 -; last update: 28/05/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: Fixed crash when trying to select some of the icons. -; (bug 000013) -;--------------------------------------------------------------------- -; version: 3.10 -; last update: 03/04/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: Drawing selection rectangle. -; Using new kernel function: 15.9 -;--------------------------------------------------------------------- -; version: 3.01 -; last update: 02/04/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: Fix for previous revision - not drawed icons after -; startup in certain cases. -;--------------------------------------------------------------------- -; version: 3.00 -; last update: 02/04/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: Program use only 2 threads: draw and mouse -; Using new kernel functions: 25, 34, 15.8, 4 (redirect). -; Using PNG icons with transparent. -;--------------------------------------------------------------------- -; version: 2.11 -; last update: 19/03/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: The program uses only 140 Kb memory is now. -; Some speedup. -;--------------------------------------------------------------------- -; version: 2.1 -; last update: 17/03/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: Global optimization! The program uses -; only 161 KB of memory instead of 603 kb is now. -;--------------------------------------------------------------------- -; version: 2.02 -; last update: 15/03/2012 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: some optimizations and code refactoring -;--------------------------------------------------------------------- -; version: 2.01 -; last update: 27/09/2011 -; changed by: Marat Zakiyanov aka Mario79, aka Mario -; changes: deactivate the window after click -; (working to kernel r.2244 and above) -;--------------------------------------------------------------------- -; Many fix's and changes created by: -; Halyavin, Diamond, Heavyiron, -; SPraid, Dunkaist -;--------------------------------------------------------------------- -; version: 2.00 -; last update: 22/02/2005 -; changed by: Willow and Mario79 -; changes: modified for work with new multi-thread ICON. -;****************************************************************************** -ICON_SIZE equ 32*32*4 -REC_SIZE equ 80 -ICONS_DAT equ '/sys/icons.dat' -ICON_APP equ '/sys/ICON' -ICON_STRIP equ '/sys/iconstrp.png' -;------------------------------------------------------------------------------ - use32 - org 0x0 - db 'MENUET01' ; 8 byte id - dd 0x01 ; header version - dd START ; start of code - dd IM_END ; size of image - dd I_END ; memory for app - dd stack_area ; esp - dd I_Param ; boot parameters - dd path ; path -;------------------------------------------------------------------------------ -include 'lang.inc' -include '../../../macros.inc' -include '../../../KOSfuncs.inc' -include '../../../load_lib.mac' -;include '../../../debug.inc' -;------------------------------------------------------------------------------ - @use_library ;use load lib macros -;------------------------------------------------------------------------------ -START: ; start of execution - mcall 68,11 -;--------------------------------------------------------------------- -load_libraries l_libs_start,end_l_libs - test eax,eax - jnz close - -; unpack deflate - mov eax,[unpack_DeflateUnpack2] - mov [deflate_unpack],eax -;--------------------------------------------------------------------- -; get size of file ICONSTRP.PNG - mcall 70,finfo - test eax,eax - jnz close -; get memory for ICONSTRP.PNG - mov ecx,[procinfo+32] - mov [finfo.size],ecx - mov [img_size],ecx - mcall 68,12 - mov [finfo.point],eax - mov [image_file],eax -; load ICONSTRP.PNG - mov [finfo],dword 0 - mcall 70,finfo - test eax,eax - jnz close -; convert PNG to RAW - xor eax,eax - mov [return_code],eax - - push image_file - call [cnv_png_import.Start] - - mov eax,[raw_pointer] - mov ebx,[eax+32] - mov [strip_file_size],ebx - mov eax,[eax+28] - add eax,[raw_pointer] - mov [strip_file],eax -; back memeory to system - mcall 68,13,[finfo.point] - - mov eax,[raw_pointer] - mov eax,[eax+8] - shr eax,5 - mov [icon_count],eax - - and eax,0x7 - mov [cur_band_compensation],eax -; load ICON.DAT - call load_ic -boot_str: - cmp [I_Param],dword 'BOOT' - je START2 -;------------------------------------------------------------------------------ -; ICON EDITOR MODE - START1 entering label -;------------------------------------------------------------------------------ -START1: - call load_icon_list -;------------------------------------------------------------------------------ -align 4 -red: - call draw_window ; at first, draw the window - mov esi,[current_icon] - jmp band -;------------------------------------------------------------------------------ -align 4 -still: - mcall 10 ; wait here for event - dec eax ; redraw request ? - jz red - - dec eax ; key in buffer ? - jz key -;------------------------------------------------------------------------------ -align 4 -button: - mcall 17 ; get id - shr eax,8 - - cmp eax,1 ; button id=1 ? - je close - - mov esi,[current_icon] - add esi,12 - mov ebx,[cur_band] - - cmp eax,11 - jb @f - cmp eax,13 - ja @f - call read_string - jmp still -;-------------------------------------- -align 4 -@@: - cmp eax,21 ; apply changes - je apply - - cmp eax,22 ; user pressed the 'add icon' button - je add_icon - - cmp eax,23 ; user pressed the remove icon button - je remove_icon - - - cmp eax,30 ; left arrow to icons bar - je arrow.left - - cmp eax,31 ; right arrow to icons bar - je arrow.right - - cmp eax,32 - je ico - - cmp eax,40 ; user pressed button for icon position - jae press_button_for_icon_position - - jmp still -;------------------------------------------------------------------------------ -align 4 -arrow: -.right: - - mov eax,[icon_count] - sub eax,8 - cmp ebx,eax - jae still ;.drwic2 - - add ebx,1 - jmp .drwic2 -;-------------------------------------- -align 4 -.left: - test ebx,ebx - jz still - - sub ebx,1 -;-------------------------------------- -align 4 -.drwic2: - mov [cur_band],ebx -;-------------------------------------- -align 4 -.drwic1: - call draw_icon - jmp still -;------------------------------------------------------------------------------ -align 4 -ico: - push ebx - mcall 37,1 - pop ebx - shr eax,16 - sub eax,33-19 - mov edi,34 - xor edx,edx - div edi - lea ecx,[ebx+eax] - cmp ecx,[icon_count] - jae still - - mov ecx,eax - add eax,ebx - call itoa - jmp arrow.drwic1 -;------------------------------------------------------------------------------ -align 4 -apply: - ; (1) save list - mov ebx,finfo - mov dword[ebx],2 - mov edx,REC_SIZE - imul edx,dword [icons] - mov [ebx+12],edx - mov esi,iconlst - call lst_path - mcall 70 - ; (2) terminate all icons - or ecx,-1 - mcall 9,procinfo - mov edi,[ebx+30] -;-------------------------------------- -align 4 -newread2: - mov esi,1 -;-------------------------------------- -align 4 -newread: - inc esi - mov ecx,esi - mcall 9,procinfo - - cmp edi,[ebx+30] - je newread - - cmp esi,eax - jg .apply_changes - - mov eax,[ebx+10] - and eax,not 20202020h - cmp eax,'@ICO' - jz @f - cmp eax,'ICON' - jne newread -;-------------------------------------- -align 4 -@@: - xor eax,eax - cmp eax,[ebx+42] - jne newread - - cmp eax,[ebx+46] - jne newread - - mov ecx,esi - mcall 18,2 - - jmp newread2 -;-------------------------------------- -align 4 -.apply_changes: - mov ebx, finfo_start - mov dword [ebx+8], boot_str+6 - mov esi, iconname - call lst_path - mcall 70 - mcall 68,1 - mcall 15,3 - jmp still -;------------------------------------------------------------------------------ -align 4 -add_icon: - mov ebx,24*65536+250+8*14 - mcall 4,,0xc0ff0000,add_text,,0xffffff - - mcall 10 - cmp eax,3 - jne still - - mcall 17 - shr eax,8 - cmp eax,40 - jb no_f - mov edi,eax - sub eax,40 - - xor edx,edx ; bcd -> 10 - mov ebx,16 - div ebx -; multiply x10 - shl eax,1 ; multiply x2 - lea eax,[eax+eax*4] ; multiply x5 - add eax,edx - - mov ebx,eax - add ebx,icons_reserved - cmp [ebx],byte 'x' - je no_f - mov [ebx],byte 'x' - - mov [cur_btn],edi - xor edx,edx - mov ebx,10 - div ebx - add eax,65 - add edx,65 - mov [icon_default+0],dl - mov [icon_default+1],al - - inc dword [icons] - mov edi,[icons] - dec edi - imul edi,REC_SIZE - add edi,icon_data - - mov [current_icon],edi - - mov esi,icon_default - mov ecx,REC_SIZE - cld - rep movsb - mov esi,[current_icon] - jmp band -;-------------------------------------- -align 4 -no_f: - call draw_btns ;draw_window - jmp still -;------------------------------------------------------------------------------ -align 4 -remove_icon: - mov ebx,24*65536+250+8*14 - mcall 4,,0xc0ff0000,rem_text,,0xffffff - - mcall 10 - cmp eax,3 - jne no_f - - mcall 17 - shr eax,8 - cmp eax,40 - jb red - sub eax,40 - - xor edx,edx - mov ebx,16 - div ebx -; multiply x10 - shl eax,1 ; multiply x2 - lea eax,[eax+eax*4] ; multiply x5 - add eax,edx - - mov ebx,eax - add ebx,icons_reserved - cmp [ebx],byte 'x' - jne red - mov [ebx],byte ' ' - - xor edx,edx - mov ebx,10 - div ebx - shl eax,8 - mov al,dl - - add eax,65*256+65 - - mov esi,icon_data - mov edi,REC_SIZE - imul edi,[icons] - add edi,icon_data -;-------------------------------------- -align 4 -news: - cmp word [esi],ax - je foundi - add esi,REC_SIZE - cmp esi,edi - jb news - jmp red -;-------------------------------------- -align 4 -foundi: - mov ecx,edi - sub ecx,esi - - mov edi,esi - add esi,REC_SIZE - - cld - rep movsb - - dec [icons] - - mov eax,icon_data - mov [current_icon],eax - movzx ebx,word[eax] - sub bx,'AA' - shl bl,4 - shr ebx,4 - add ebx,40 - mov [cur_btn],ebx - jmp red -;------------------------------------------------------------------------------ -align 4 -press_button_for_icon_position: - mov edi,eax - sub eax,40 - mov edx,eax - shl eax,4 - and edx,0xf - mov dh,ah - add edx,65*256+65 - mov esi,icon_data - mov ecx,[icons] - cld -;-------------------------------------- -align 4 -findl1: - cmp dx,[esi] - je foundl1 - add esi,REC_SIZE - loop findl1 - jmp still -;-------------------------------------- -align 4 -foundl1: - mov [current_icon],esi - mov [cur_btn],edi -;-------------------------------------- -align 4 -band: - add esi,12 - call ASCII_to_icon_number -; and eax,0xfffff8 - cmp eax,[cur_band_compensation] - jb @f - - sub eax,[cur_band_compensation] -;-------------------------------------- -align 4 -@@: - mov [cur_band],eax - call draw_btns - jmp still -;------------------------------------------------------------------------------ -align 4 -print_strings: - pusha - mcall 13,<100,180>,<278+12,40>,0xffffff ; clear text area - xor edi,edi - mov eax,4 ; icon text - mov ebx,100*65536+278+14 - mov ecx,3 -;-------------------------------------- -align 4 -.ll: - push ecx - mov ecx,0x000000 - mov edx,[current_icon] - add edx,[positions+edi*4] - movzx esi,byte[str_lens+edi] - inc edi - mcall - add ebx,14 - pop ecx - loop .ll - - popa - ret -;------------------------------------------------------------------------------ -align 4 -load_icon_list: - mov edi,icons_reserved ; clear reserved area - mov eax,32 - mov ecx,10*9 - cld - rep stosb - - mov ecx,[icons] ; set used icons to reserved area - mov esi,icon_data -;-------------------------------------- -align 4 -ldl1: - movzx ebx,byte [esi+1] - sub ebx,65 -; multiply x10 - shl ebx,1 ; multiply x2 - lea ebx,[ebx+ebx*4] ; multiply x5 - movzx eax,byte [esi] - add ebx,eax - sub ebx,65 - add ebx,icons_reserved - mov [ebx],byte 'x' - add esi,REC_SIZE - loop ldl1 - ret -;------------------------------------------------------------------------------ -align 4 -lst_path: - mov ecx,30 - mov edi,finfo.path - rep movsb - ret -;------------------------------------------------------------------------------ -align 4 -load_ic: - mov ebx,finfo - mov dword[ebx+12],48*REC_SIZE - mov dword[ebx+16],icon_data - mov esi,iconlst - call lst_path - mcall 70 - lea eax,[ebx+10] - xor edx,edx - mov ebx,REC_SIZE - div ebx - mov [icons],eax - ret -;------------------------------------------------------------------------------ -align 4 -read_string: - pusha - sub eax,11 - movzx ecx,byte[str_lens+eax] - mov [cur_str],ecx - mov eax,[positions+eax*4] - mov edi,[current_icon] - add edi,eax - mov [addr],edi - add edi,ecx -;-------------------------------------- -align 4 -.l1: - dec edi - cmp byte[edi],' ' - jne .found - - mov byte[edi],'_' - loop .l1 - - dec edi -;-------------------------------------- -align 4 -.found: - inc edi - push edi - call print_strings - pop edi -;-------------------------------------- -align 4 -f11: - mcall 10 - cmp eax,2 - jz fbu - jmp rs_done -;-------------------------------------- -align 4 -fbu: - mcall 2 - shr eax,8 - cmp eax,13 - je rs_done - cmp eax,8 - jnz nobsl - cmp edi,[addr] - jz f11 - dec edi - mov [edi],byte '_' - call print_strings - jmp f11 -;-------------------------------------- -align 4 -nobsl: - cmp eax,31 - jbe f11 - mov [edi],al - call print_strings - inc edi - mov esi,[addr] - add esi,[cur_str] - cmp esi,edi - jnz f11 -;-------------------------------------- -align 4 -rs_done: - mov ecx,[addr] - add ecx,[cur_str] - sub ecx,edi - mov eax,32 - cld - rep stosb - call print_strings - popa - ret -;------------------------------------------------------------------------------ -align 4 -key: - mcall 2 ; just read it and ignore - jmp still -;------------------------------------------------------------------------------ -; ********************************************* -; ******* WINDOW DEFINITIONS AND DRAW ******** -; ********************************************* -align 4 -draw_window: - mcall 12,1 - ; DRAW WINDOW - xor eax,eax - xor esi,esi - mcall ,<210,300>,<30,(390-14)>,0x14ffffff,,title - - mcall 13,<20,260>,<35,200>,0x3366cc ; WINDOW AREA - - mcall 38,<150,150>,<35,235>,0xffffff ; VERTICAL LINE ON WINDOW AREA - - mcall ,<20,280>,<135,135> ; HOROZONTAL LINE ON WINDOW AREA - - mcall 8,<20,72>,<(275+1+14),(13-2)>,11,[bcolor] ;id 11 TEXT ENTER BUTTONS - - inc edx - add ecx,14*65536 - mcall ; id 12 - - inc edx - add ecx,14*65536 - mcall ; id 13 - - mcall ,<20,259>,<(329+2),(15-4)>,21 ; id 21 APPLY AND SAVE CHANGES BUTTON - - add ecx,14*65536 - inc edx - mcall ,<20,(129-2)> ; id 22 ADD ICON BUTTON - - add ebx,(130+2)*65536 - inc edx - mcall ; id 23 REMOVE ICON BUTTON - - mcall ,<(20-14),8>,<(260-23),32>,30 + 1 shl 30 ; id 30 IMAGE BUTTON - - inc edx - add ebx,(36*7+26) shl 16 - mcall ; id 31 - - add edx,1 + 1 shl 29 - mcall ,<(33-19),(34*8)> ; id 32 - - mcall 4,<(23-15),(273-24)>,0,arrows,1 - - add ebx,(36*7+27)shl 16 - add edx,2 - mcall - - dec edx - mcall ,<120,250> - - lea edx,[ebx+8 shl 16] - mcall 47,0x30000,[icon_count],,0 - - mov eax,4 - mov ebx,24 shl 16+(250+14+14+14) - mov ecx,0xffffff - mov edx,text - mov esi,47 -;-------------------------------------- -align 4 -.newline: - mov ecx,[edx] - add edx,4 - mcall - add ebx,14 - add edx,47 - cmp [edx],byte 'x' - jne .newline -;-------------------------------------- -align 4 -draw_btns: - mov eax,0 ; DRAW BUTTONS ON WINDOW AREA - mov ebx,20 shl 16+25 - mov ecx,35 shl 16+19 - mov edi,icon_table - mov edx,40 -;-------------------------------------- -align 4 -newbline: - cmp [edi],byte 'x' - jne no_button - - mov esi,0x5577cc - cmp [edi+90],byte 'x' - jne nores - - mov esi,0xcc5555 - cmp edx,[cur_btn] - jne nores - - mov esi,0xe7e05a -;-------------------------------------- -align 4 -nores: - push eax - mcall 8 - pop eax -;-------------------------------------- -align 4 -no_button: - add ebx,26 shl 16 - - inc edi - inc edx - inc al - cmp al,9 - jbe newbline - - mov al,0 - add edx,6 - ror ebx,16 - mov bx,20 - ror ebx,16 - add ecx,20 shl 16 - inc ah - cmp ah,8 - jbe newbline - - call print_strings - call draw_icon - mcall 12,2 - ret -;------------------------------------------------------------------------------ -align 4 -draw_icon: - mcall 13,<(33-20),(34*8+2)>,<(260-24),(37+15-2)>,0xffffff - mov esi,[current_icon] - add esi,12 - call ASCII_to_icon_number - push eax - cmp eax,[cur_band] - jb .nou - sub eax,[cur_band] - cmp eax,7 - ja .nou - imul eax,34 shl 16 - lea ebx,[eax+(33-19) shl 16] - mov bx,34 - mcall 13,,<(236+35),3>,0xff0000 - mov eax,[esp] -;-------------------------------------- -align 4 -.nou: - mov eax,[cur_band] - push eax - imul eax,ICON_SIZE - mov ebx,[strip_file] - add ebx,eax - mov ecx,8 - mov edx,(33-18) shl 16+238 -;-------------------------------------- -align 4 -.nxt: - push ecx - pusha - mov ebp,0 - - mov eax,[strip_file_size] - add eax,[strip_file] - cmp eax,ebx - ja @f -; draw a rectangle if icon does not exist - mov ebx,edx ; X - mov ecx,edx ; Y - shl ecx,16 - mov bx,32 - mov cx,bx - xor edx,edx - mcall 13 - jmp .draw_pict_end -;-------------------------------------- -align 4 -@@: - mcall 65,,<32,32>,,32 -;-------------------------------------- -align 4 -.draw_pict_end: - popa - pop ecx - add ebx,ICON_SIZE - add edx,34 shl 16 - - dec ecx - jnz .nxt - - mcall 4,<45,280-2>,0,rep_text,rep_text_len-rep_text - lea edx,[ebx+(8*5)shl 16] - pop ecx - mcall 47,0x30000,,,0xff - - add ecx,7 - add edx,(3*8+4)shl 16 - mcall - - add edx,(5*8+4)shl 16 - mcall ,,[icon_count] - - pop ecx - add edx,(10*8+4)shl 16 - mcall ,,,,0xff0000 - ret -;------------------------------------------------------------------------------ -align 4 -close: - or eax,-1 - mcall -;------------------------------------------------------------------------------ -; ICON PROCESSING MODE - START2 entering label -;------------------------------------------------------------------------------ -align 4 -START2: - mcall 40,10000b ; only Event 5 - draw background - - mcall 48,5 - mov [warea.by_x],eax - mov [warea.by_y],ebx - - mcall 51,1,START_mouse_thread,stack_mouse_thread - - xor eax,eax - mov [x_left],eax - mov [y_top],eax - - mcall 14 - mov ebx,eax - shr eax,16 - and ebx,0xffff - mov [x_right],eax - mov [y_bottom],ebx - jmp still2.1 -;------------------------------------------------------------------------------ -align 4 -still2: - mcall 10 - - mcall 15,8 - - mov ecx,eax - shr ecx,16 - mov [x_left],ecx - and eax,0xffff - mov [x_right],eax - - mov ecx,ebx - shr ecx,16 - mov [y_top],ecx - and ebx,0xffff - mov [y_bottom],ebx - - mcall 48,5 - mov [warea.by_x],eax - mov [warea.by_y],ebx -.1: - mov ecx,[icons] - mov ebx,icon_data -;-------------------------------------- -align 4 -.start_new: - push ebx ecx - mov [adress_of_icon_data],ebx - mov eax,[ebx] - call calc_icon_pos - mov [current_X],ebx - mov [current_Y],eax - - call draw_picture - pop ecx ebx - add ebx,REC_SIZE - dec ecx - jnz .start_new - jmp still2 -;------------------------------------------------------------------------------ -align 4 -draw_picture: - mov eax,[current_X] - cmp eax,[x_right] - ja .exit - - add eax,52 - cmp eax,[x_left] - jb .exit - - mov eax,[current_Y] - cmp eax,[y_bottom] - ja .exit - - add eax,52 - cmp eax,[y_top] - jb .exit -;-------------------------------------- -align 4 -@@: - mov edi,[adress_of_icon_data] - lea esi,[edi+12] - call ASCII_to_icon_number -; protect for icon area RAW size limit - cmp eax,[icon_count] - jbe @f -;-------------------------------------- -align 4 -.exit: - ret -;-------------------------------------- -align 4 -@@: - push eax - mcall 68,12,52*52*4+8 - mov [draw_area],eax - mov ebx,52 - mov [eax],ebx - mov [eax+4],ebx - pop eax - - shl eax,12 ; multiply x4096 - add eax,[strip_file] - mov esi,eax - - mov edi,[draw_area] - add edi,(52-32)/2*4+8 - mov ebx,32 - cld -;-------------------------------------- -align 4 -.y: - mov ecx,32 - rep movsd - - add edi,(52-32)*4 - dec ebx - jnz .y - - call draw_text - - mov edx,[current_X] - shl edx,16 - add edx,[current_Y] - mov ebx,[draw_area] - add ebx,8 - mcall 25,,<52,52> - mcall 68,13,[draw_area] - ret -;------------------------------------------------------------------------------ -align 4 -draw_text: - mov esi,[adress_of_icon_data] - add esi,3 - push edi - mov edi,title - mov ecx,8/4 - cld - rep movsd - pop edi - mov eax,title -;-------------------------------------- -align 4 -news2: - cmp [eax],byte 33 - jb founde - inc eax - cmp eax,title+8 ;11 - jb news2 -;-------------------------------------- -align 4 -founde: - sub eax,title - mov [tl],eax - - mov eax,[tl] - lea eax,[eax+eax*2] ; eax *= char_width/2 - shl eax,16 - - mov ebx,27 shl 16+40 - sub ebx,eax - - xor ecx,ecx ; black shade of text - or ecx,0x08000000 ; redirect the output to the user area - add ebx,1 shl 16 ;*65536+1 - - mov edi,[draw_area] - mcall 4,,,title,[tl] - - inc ebx - mcall - - add ebx,1 shl 16 - mcall - - inc ebx - mcall - - sub ebx,1 shl 16 - mcall - - dec ebx - sub ebx,1 shl 16 - mcall - - sub ebx,1 shl 16 - dec ebx - mcall - - dec ebx - add ebx,1 shl 16 - mcall - - inc ebx - mov ecx,0xffffff ; white text - or ecx,0x08000000 ; redirect the output to the user area - mcall - ret -;------------------------------------------------------------------------------ -align 4 -ASCII_to_icon_number: -; -; in: -; esi - adress of icon ASCII text number (line start + 12) -; -; out: -; eax - number of icon -; - push esi - xor eax,eax - xor ebx,ebx -;-------------------------------------- -align 4 -.next: - lodsb - cmp al,'0' - jb .done - cmp al,'9' - ja .done - sub eax,'0' -; multiply x10 - shl ebx,1 ; multiply x2 - lea ebx,[ebx+ebx*4] ; multiply x5 - add ebx,eax - jmp .next -;-------------------------------------- -align 4 -.done: - pop esi - mov eax,ebx - ret -;------------------------------------------------------------------------------ -align 4 -itoa: - add esi,2 - mov ebx,10 - mov ecx,3 -;-------------------------------------- -align 4 -.l0: - xor edx,edx - div ebx - add dl,'0' - mov [esi],dl - dec esi - loop .l0 - ret -;------------------------------------------------------------------------------ -align 4 -calc_icon_pos: -; in: -; eax - dword [icon_position] -; out: -; eax - current Y -; ebx - current X - push eax - movzx eax,al - sub eax,'A' ;eax - number of letter - cmp eax,4 - jg no_left - - shl eax,6 ;imul eax,64 - add eax,16 - movzx ebx,[warea.left] - add eax,ebx - jmp x_done -;-------------------------------------- -align 4 -no_left: - sub eax,9 - sal eax,6 ;imul eax,64 - sub eax,16+52-1 - movzx ebx,[warea.right] - add eax,ebx -;-------------------------------------- -align 4 -x_done: - mov ebx,eax - pop eax - push ebx - movzx eax,ah - sub eax,'A' ; eax - number of letter - cmp eax,4 - jg no_up - - shl eax,6 ;imul eax,80 - add eax,16 - movzx ebx,[warea.top] - add eax,ebx - jmp y_done -;-------------------------------------- -align 4 -no_up: - sub eax,9 - shl eax,6 ;imul eax,80 - sub eax,16-1 - movzx ebx,[warea.bottom] - add eax,ebx -;-------------------------------------- -align 4 -y_done: - pop ebx - ret -;------------------------------------------------------------------------------ -include 'mouse.inc' -;------------------------------------------------------------------------------ -include 'data.inc' -;------------------------------------------------------------------------------ -IM_END: -;------------------------------------------------------------------------------ -include 'dat_area.inc' -;------------------------------------------------------------------------------ -I_END: -;------------------------------------------------------------------------------ +; SPDX-License-Identifier: NOASSERTION +; + +;******************************** +;* * +;* DESKTOP ICON MANAGER * +;* * +;* Compile with flat assembler * +;* * +;******************************** +; version: 3.11 +; last update: 28/05/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: Fixed crash when trying to select some of the icons. +; (bug 000013) +;--------------------------------------------------------------------- +; version: 3.10 +; last update: 03/04/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: Drawing selection rectangle. +; Using new kernel function: 15.9 +;--------------------------------------------------------------------- +; version: 3.01 +; last update: 02/04/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: Fix for previous revision - not drawed icons after +; startup in certain cases. +;--------------------------------------------------------------------- +; version: 3.00 +; last update: 02/04/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: Program use only 2 threads: draw and mouse +; Using new kernel functions: 25, 34, 15.8, 4 (redirect). +; Using PNG icons with transparent. +;--------------------------------------------------------------------- +; version: 2.11 +; last update: 19/03/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: The program uses only 140 Kb memory is now. +; Some speedup. +;--------------------------------------------------------------------- +; version: 2.1 +; last update: 17/03/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: Global optimization! The program uses +; only 161 KB of memory instead of 603 kb is now. +;--------------------------------------------------------------------- +; version: 2.02 +; last update: 15/03/2012 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: some optimizations and code refactoring +;--------------------------------------------------------------------- +; version: 2.01 +; last update: 27/09/2011 +; changed by: Marat Zakiyanov aka Mario79, aka Mario +; changes: deactivate the window after click +; (working to kernel r.2244 and above) +;--------------------------------------------------------------------- +; Many fix's and changes created by: +; Halyavin, Diamond, Heavyiron, +; SPraid, Dunkaist +;--------------------------------------------------------------------- +; version: 2.00 +; last update: 22/02/2005 +; changed by: Willow and Mario79 +; changes: modified for work with new multi-thread ICON. +;****************************************************************************** +ICON_SIZE equ 32*32*4 +REC_SIZE equ 80 +ICONS_DAT equ '/sys/icons.dat' +ICON_APP equ '/sys/ICON' +ICON_STRIP equ '/sys/iconstrp.png' +;------------------------------------------------------------------------------ + use32 + org 0x0 + db 'MENUET01' ; 8 byte id + dd 0x01 ; header version + dd START ; start of code + dd IM_END ; size of image + dd I_END ; memory for app + dd stack_area ; esp + dd I_Param ; boot parameters + dd path ; path +;------------------------------------------------------------------------------ +include 'lang.inc' +include '../../macros.inc' +include '../../KOSfuncs.inc' +include '../../load_lib.mac' +;include '../../debug.inc' +;------------------------------------------------------------------------------ + @use_library ;use load lib macros +;------------------------------------------------------------------------------ +START: ; start of execution + mcall 68,11 +;--------------------------------------------------------------------- +load_libraries l_libs_start,end_l_libs + test eax,eax + jnz close + +; unpack deflate + mov eax,[unpack_DeflateUnpack2] + mov [deflate_unpack],eax +;--------------------------------------------------------------------- +; get size of file ICONSTRP.PNG + mcall 70,finfo + test eax,eax + jnz close +; get memory for ICONSTRP.PNG + mov ecx,[procinfo+32] + mov [finfo.size],ecx + mov [img_size],ecx + mcall 68,12 + mov [finfo.point],eax + mov [image_file],eax +; load ICONSTRP.PNG + mov [finfo],dword 0 + mcall 70,finfo + test eax,eax + jnz close +; convert PNG to RAW + xor eax,eax + mov [return_code],eax + + push image_file + call [cnv_png_import.Start] + + mov eax,[raw_pointer] + mov ebx,[eax+32] + mov [strip_file_size],ebx + mov eax,[eax+28] + add eax,[raw_pointer] + mov [strip_file],eax +; back memeory to system + mcall 68,13,[finfo.point] + + mov eax,[raw_pointer] + mov eax,[eax+8] + shr eax,5 + mov [icon_count],eax + + and eax,0x7 + mov [cur_band_compensation],eax +; load ICON.DAT + call load_ic +boot_str: + cmp [I_Param],dword 'BOOT' + je START2 +;------------------------------------------------------------------------------ +; ICON EDITOR MODE - START1 entering label +;------------------------------------------------------------------------------ +START1: + call load_icon_list +;------------------------------------------------------------------------------ +align 4 +red: + call draw_window ; at first, draw the window + mov esi,[current_icon] + jmp band +;------------------------------------------------------------------------------ +align 4 +still: + mcall 10 ; wait here for event + dec eax ; redraw request ? + jz red + + dec eax ; key in buffer ? + jz key +;------------------------------------------------------------------------------ +align 4 +button: + mcall 17 ; get id + shr eax,8 + + cmp eax,1 ; button id=1 ? + je close + + mov esi,[current_icon] + add esi,12 + mov ebx,[cur_band] + + cmp eax,11 + jb @f + cmp eax,13 + ja @f + call read_string + jmp still +;-------------------------------------- +align 4 +@@: + cmp eax,21 ; apply changes + je apply + + cmp eax,22 ; user pressed the 'add icon' button + je add_icon + + cmp eax,23 ; user pressed the remove icon button + je remove_icon + + + cmp eax,30 ; left arrow to icons bar + je arrow.left + + cmp eax,31 ; right arrow to icons bar + je arrow.right + + cmp eax,32 + je ico + + cmp eax,40 ; user pressed button for icon position + jae press_button_for_icon_position + + jmp still +;------------------------------------------------------------------------------ +align 4 +arrow: +.right: + + mov eax,[icon_count] + sub eax,8 + cmp ebx,eax + jae still ;.drwic2 + + add ebx,1 + jmp .drwic2 +;-------------------------------------- +align 4 +.left: + test ebx,ebx + jz still + + sub ebx,1 +;-------------------------------------- +align 4 +.drwic2: + mov [cur_band],ebx +;-------------------------------------- +align 4 +.drwic1: + call draw_icon + jmp still +;------------------------------------------------------------------------------ +align 4 +ico: + push ebx + mcall 37,1 + pop ebx + shr eax,16 + sub eax,33-19 + mov edi,34 + xor edx,edx + div edi + lea ecx,[ebx+eax] + cmp ecx,[icon_count] + jae still + + mov ecx,eax + add eax,ebx + call itoa + jmp arrow.drwic1 +;------------------------------------------------------------------------------ +align 4 +apply: + ; (1) save list + mov ebx,finfo + mov dword[ebx],2 + mov edx,REC_SIZE + imul edx,dword [icons] + mov [ebx+12],edx + mov esi,iconlst + call lst_path + mcall 70 + ; (2) terminate all icons + or ecx,-1 + mcall 9,procinfo + mov edi,[ebx+30] +;-------------------------------------- +align 4 +newread2: + mov esi,1 +;-------------------------------------- +align 4 +newread: + inc esi + mov ecx,esi + mcall 9,procinfo + + cmp edi,[ebx+30] + je newread + + cmp esi,eax + jg .apply_changes + + mov eax,[ebx+10] + and eax,not 20202020h + cmp eax,'@ICO' + jz @f + cmp eax,'ICON' + jne newread +;-------------------------------------- +align 4 +@@: + xor eax,eax + cmp eax,[ebx+42] + jne newread + + cmp eax,[ebx+46] + jne newread + + mov ecx,esi + mcall 18,2 + + jmp newread2 +;-------------------------------------- +align 4 +.apply_changes: + mov ebx, finfo_start + mov dword [ebx+8], boot_str+6 + mov esi, iconname + call lst_path + mcall 70 + mcall 68,1 + mcall 15,3 + jmp still +;------------------------------------------------------------------------------ +align 4 +add_icon: + mov ebx,24*65536+250+8*14 + mcall 4,,0xc0ff0000,add_text,,0xffffff + + mcall 10 + cmp eax,3 + jne still + + mcall 17 + shr eax,8 + cmp eax,40 + jb no_f + mov edi,eax + sub eax,40 + + xor edx,edx ; bcd -> 10 + mov ebx,16 + div ebx +; multiply x10 + shl eax,1 ; multiply x2 + lea eax,[eax+eax*4] ; multiply x5 + add eax,edx + + mov ebx,eax + add ebx,icons_reserved + cmp [ebx],byte 'x' + je no_f + mov [ebx],byte 'x' + + mov [cur_btn],edi + xor edx,edx + mov ebx,10 + div ebx + add eax,65 + add edx,65 + mov [icon_default+0],dl + mov [icon_default+1],al + + inc dword [icons] + mov edi,[icons] + dec edi + imul edi,REC_SIZE + add edi,icon_data + + mov [current_icon],edi + + mov esi,icon_default + mov ecx,REC_SIZE + cld + rep movsb + mov esi,[current_icon] + jmp band +;-------------------------------------- +align 4 +no_f: + call draw_btns ;draw_window + jmp still +;------------------------------------------------------------------------------ +align 4 +remove_icon: + mov ebx,24*65536+250+8*14 + mcall 4,,0xc0ff0000,rem_text,,0xffffff + + mcall 10 + cmp eax,3 + jne no_f + + mcall 17 + shr eax,8 + cmp eax,40 + jb red + sub eax,40 + + xor edx,edx + mov ebx,16 + div ebx +; multiply x10 + shl eax,1 ; multiply x2 + lea eax,[eax+eax*4] ; multiply x5 + add eax,edx + + mov ebx,eax + add ebx,icons_reserved + cmp [ebx],byte 'x' + jne red + mov [ebx],byte ' ' + + xor edx,edx + mov ebx,10 + div ebx + shl eax,8 + mov al,dl + + add eax,65*256+65 + + mov esi,icon_data + mov edi,REC_SIZE + imul edi,[icons] + add edi,icon_data +;-------------------------------------- +align 4 +news: + cmp word [esi],ax + je foundi + add esi,REC_SIZE + cmp esi,edi + jb news + jmp red +;-------------------------------------- +align 4 +foundi: + mov ecx,edi + sub ecx,esi + + mov edi,esi + add esi,REC_SIZE + + cld + rep movsb + + dec [icons] + + mov eax,icon_data + mov [current_icon],eax + movzx ebx,word[eax] + sub bx,'AA' + shl bl,4 + shr ebx,4 + add ebx,40 + mov [cur_btn],ebx + jmp red +;------------------------------------------------------------------------------ +align 4 +press_button_for_icon_position: + mov edi,eax + sub eax,40 + mov edx,eax + shl eax,4 + and edx,0xf + mov dh,ah + add edx,65*256+65 + mov esi,icon_data + mov ecx,[icons] + cld +;-------------------------------------- +align 4 +findl1: + cmp dx,[esi] + je foundl1 + add esi,REC_SIZE + loop findl1 + jmp still +;-------------------------------------- +align 4 +foundl1: + mov [current_icon],esi + mov [cur_btn],edi +;-------------------------------------- +align 4 +band: + add esi,12 + call ASCII_to_icon_number +; and eax,0xfffff8 + cmp eax,[cur_band_compensation] + jb @f + + sub eax,[cur_band_compensation] +;-------------------------------------- +align 4 +@@: + mov [cur_band],eax + call draw_btns + jmp still +;------------------------------------------------------------------------------ +align 4 +print_strings: + pusha + mcall 13,<100,180>,<278+12,40>,0xffffff ; clear text area + xor edi,edi + mov eax,4 ; icon text + mov ebx,100*65536+278+14 + mov ecx,3 +;-------------------------------------- +align 4 +.ll: + push ecx + mov ecx,0x000000 + mov edx,[current_icon] + add edx,[positions+edi*4] + movzx esi,byte[str_lens+edi] + inc edi + mcall + add ebx,14 + pop ecx + loop .ll + + popa + ret +;------------------------------------------------------------------------------ +align 4 +load_icon_list: + mov edi,icons_reserved ; clear reserved area + mov eax,32 + mov ecx,10*9 + cld + rep stosb + + mov ecx,[icons] ; set used icons to reserved area + mov esi,icon_data +;-------------------------------------- +align 4 +ldl1: + movzx ebx,byte [esi+1] + sub ebx,65 +; multiply x10 + shl ebx,1 ; multiply x2 + lea ebx,[ebx+ebx*4] ; multiply x5 + movzx eax,byte [esi] + add ebx,eax + sub ebx,65 + add ebx,icons_reserved + mov [ebx],byte 'x' + add esi,REC_SIZE + loop ldl1 + ret +;------------------------------------------------------------------------------ +align 4 +lst_path: + mov ecx,30 + mov edi,finfo.path + rep movsb + ret +;------------------------------------------------------------------------------ +align 4 +load_ic: + mov ebx,finfo + mov dword[ebx+12],48*REC_SIZE + mov dword[ebx+16],icon_data + mov esi,iconlst + call lst_path + mcall 70 + lea eax,[ebx+10] + xor edx,edx + mov ebx,REC_SIZE + div ebx + mov [icons],eax + ret +;------------------------------------------------------------------------------ +align 4 +read_string: + pusha + sub eax,11 + movzx ecx,byte[str_lens+eax] + mov [cur_str],ecx + mov eax,[positions+eax*4] + mov edi,[current_icon] + add edi,eax + mov [addr],edi + add edi,ecx +;-------------------------------------- +align 4 +.l1: + dec edi + cmp byte[edi],' ' + jne .found + + mov byte[edi],'_' + loop .l1 + + dec edi +;-------------------------------------- +align 4 +.found: + inc edi + push edi + call print_strings + pop edi +;-------------------------------------- +align 4 +f11: + mcall 10 + cmp eax,2 + jz fbu + jmp rs_done +;-------------------------------------- +align 4 +fbu: + mcall 2 + shr eax,8 + cmp eax,13 + je rs_done + cmp eax,8 + jnz nobsl + cmp edi,[addr] + jz f11 + dec edi + mov [edi],byte '_' + call print_strings + jmp f11 +;-------------------------------------- +align 4 +nobsl: + cmp eax,31 + jbe f11 + mov [edi],al + call print_strings + inc edi + mov esi,[addr] + add esi,[cur_str] + cmp esi,edi + jnz f11 +;-------------------------------------- +align 4 +rs_done: + mov ecx,[addr] + add ecx,[cur_str] + sub ecx,edi + mov eax,32 + cld + rep stosb + call print_strings + popa + ret +;------------------------------------------------------------------------------ +align 4 +key: + mcall 2 ; just read it and ignore + jmp still +;------------------------------------------------------------------------------ +; ********************************************* +; ******* WINDOW DEFINITIONS AND DRAW ******** +; ********************************************* +align 4 +draw_window: + mcall 12,1 + ; DRAW WINDOW + xor eax,eax + xor esi,esi + mcall ,<210,300>,<30,(390-14)>,0x14ffffff,,title + + mcall 13,<20,260>,<35,200>,0x3366cc ; WINDOW AREA + + mcall 38,<150,150>,<35,235>,0xffffff ; VERTICAL LINE ON WINDOW AREA + + mcall ,<20,280>,<135,135> ; HOROZONTAL LINE ON WINDOW AREA + + mcall 8,<20,72>,<(275+1+14),(13-2)>,11,[bcolor] ;id 11 TEXT ENTER BUTTONS + + inc edx + add ecx,14*65536 + mcall ; id 12 + + inc edx + add ecx,14*65536 + mcall ; id 13 + + mcall ,<20,259>,<(329+2),(15-4)>,21 ; id 21 APPLY AND SAVE CHANGES BUTTON + + add ecx,14*65536 + inc edx + mcall ,<20,(129-2)> ; id 22 ADD ICON BUTTON + + add ebx,(130+2)*65536 + inc edx + mcall ; id 23 REMOVE ICON BUTTON + + mcall ,<(20-14),8>,<(260-23),32>,30 + 1 shl 30 ; id 30 IMAGE BUTTON + + inc edx + add ebx,(36*7+26) shl 16 + mcall ; id 31 + + add edx,1 + 1 shl 29 + mcall ,<(33-19),(34*8)> ; id 32 + + mcall 4,<(23-15),(273-24)>,0,arrows,1 + + add ebx,(36*7+27)shl 16 + add edx,2 + mcall + + dec edx + mcall ,<120,250> + + lea edx,[ebx+8 shl 16] + mcall 47,0x30000,[icon_count],,0 + + mov eax,4 + mov ebx,24 shl 16+(250+14+14+14) + mov ecx,0xffffff + mov edx,text + mov esi,47 +;-------------------------------------- +align 4 +.newline: + mov ecx,[edx] + add edx,4 + mcall + add ebx,14 + add edx,47 + cmp [edx],byte 'x' + jne .newline +;-------------------------------------- +align 4 +draw_btns: + mov eax,0 ; DRAW BUTTONS ON WINDOW AREA + mov ebx,20 shl 16+25 + mov ecx,35 shl 16+19 + mov edi,icon_table + mov edx,40 +;-------------------------------------- +align 4 +newbline: + cmp [edi],byte 'x' + jne no_button + + mov esi,0x5577cc + cmp [edi+90],byte 'x' + jne nores + + mov esi,0xcc5555 + cmp edx,[cur_btn] + jne nores + + mov esi,0xe7e05a +;-------------------------------------- +align 4 +nores: + push eax + mcall 8 + pop eax +;-------------------------------------- +align 4 +no_button: + add ebx,26 shl 16 + + inc edi + inc edx + inc al + cmp al,9 + jbe newbline + + mov al,0 + add edx,6 + ror ebx,16 + mov bx,20 + ror ebx,16 + add ecx,20 shl 16 + inc ah + cmp ah,8 + jbe newbline + + call print_strings + call draw_icon + mcall 12,2 + ret +;------------------------------------------------------------------------------ +align 4 +draw_icon: + mcall 13,<(33-20),(34*8+2)>,<(260-24),(37+15-2)>,0xffffff + mov esi,[current_icon] + add esi,12 + call ASCII_to_icon_number + push eax + cmp eax,[cur_band] + jb .nou + sub eax,[cur_band] + cmp eax,7 + ja .nou + imul eax,34 shl 16 + lea ebx,[eax+(33-19) shl 16] + mov bx,34 + mcall 13,,<(236+35),3>,0xff0000 + mov eax,[esp] +;-------------------------------------- +align 4 +.nou: + mov eax,[cur_band] + push eax + imul eax,ICON_SIZE + mov ebx,[strip_file] + add ebx,eax + mov ecx,8 + mov edx,(33-18) shl 16+238 +;-------------------------------------- +align 4 +.nxt: + push ecx + pusha + mov ebp,0 + + mov eax,[strip_file_size] + add eax,[strip_file] + cmp eax,ebx + ja @f +; draw a rectangle if icon does not exist + mov ebx,edx ; X + mov ecx,edx ; Y + shl ecx,16 + mov bx,32 + mov cx,bx + xor edx,edx + mcall 13 + jmp .draw_pict_end +;-------------------------------------- +align 4 +@@: + mcall 65,,<32,32>,,32 +;-------------------------------------- +align 4 +.draw_pict_end: + popa + pop ecx + add ebx,ICON_SIZE + add edx,34 shl 16 + + dec ecx + jnz .nxt + + mcall 4,<45,280-2>,0,rep_text,rep_text_len-rep_text + lea edx,[ebx+(8*5)shl 16] + pop ecx + mcall 47,0x30000,,,0xff + + add ecx,7 + add edx,(3*8+4)shl 16 + mcall + + add edx,(5*8+4)shl 16 + mcall ,,[icon_count] + + pop ecx + add edx,(10*8+4)shl 16 + mcall ,,,,0xff0000 + ret +;------------------------------------------------------------------------------ +align 4 +close: + or eax,-1 + mcall +;------------------------------------------------------------------------------ +; ICON PROCESSING MODE - START2 entering label +;------------------------------------------------------------------------------ +align 4 +START2: + mcall 40,10000b ; only Event 5 - draw background + + mcall 48,5 + mov [warea.by_x],eax + mov [warea.by_y],ebx + + mcall 51,1,START_mouse_thread,stack_mouse_thread + + xor eax,eax + mov [x_left],eax + mov [y_top],eax + + mcall 14 + mov ebx,eax + shr eax,16 + and ebx,0xffff + mov [x_right],eax + mov [y_bottom],ebx + jmp still2.1 +;------------------------------------------------------------------------------ +align 4 +still2: + mcall 10 + + mcall 15,8 + + mov ecx,eax + shr ecx,16 + mov [x_left],ecx + and eax,0xffff + mov [x_right],eax + + mov ecx,ebx + shr ecx,16 + mov [y_top],ecx + and ebx,0xffff + mov [y_bottom],ebx + + mcall 48,5 + mov [warea.by_x],eax + mov [warea.by_y],ebx +.1: + mov ecx,[icons] + mov ebx,icon_data +;-------------------------------------- +align 4 +.start_new: + push ebx ecx + mov [adress_of_icon_data],ebx + mov eax,[ebx] + call calc_icon_pos + mov [current_X],ebx + mov [current_Y],eax + + call draw_picture + pop ecx ebx + add ebx,REC_SIZE + dec ecx + jnz .start_new + jmp still2 +;------------------------------------------------------------------------------ +align 4 +draw_picture: + mov eax,[current_X] + cmp eax,[x_right] + ja .exit + + add eax,52 + cmp eax,[x_left] + jb .exit + + mov eax,[current_Y] + cmp eax,[y_bottom] + ja .exit + + add eax,52 + cmp eax,[y_top] + jb .exit +;-------------------------------------- +align 4 +@@: + mov edi,[adress_of_icon_data] + lea esi,[edi+12] + call ASCII_to_icon_number +; protect for icon area RAW size limit + cmp eax,[icon_count] + jbe @f +;-------------------------------------- +align 4 +.exit: + ret +;-------------------------------------- +align 4 +@@: + push eax + mcall 68,12,52*52*4+8 + mov [draw_area],eax + mov ebx,52 + mov [eax],ebx + mov [eax+4],ebx + pop eax + + shl eax,12 ; multiply x4096 + add eax,[strip_file] + mov esi,eax + + mov edi,[draw_area] + add edi,(52-32)/2*4+8 + mov ebx,32 + cld +;-------------------------------------- +align 4 +.y: + mov ecx,32 + rep movsd + + add edi,(52-32)*4 + dec ebx + jnz .y + + call draw_text + + mov edx,[current_X] + shl edx,16 + add edx,[current_Y] + mov ebx,[draw_area] + add ebx,8 + mcall 25,,<52,52> + mcall 68,13,[draw_area] + ret +;------------------------------------------------------------------------------ +align 4 +draw_text: + mov esi,[adress_of_icon_data] + add esi,3 + push edi + mov edi,title + mov ecx,8/4 + cld + rep movsd + pop edi + mov eax,title +;-------------------------------------- +align 4 +news2: + cmp [eax],byte 33 + jb founde + inc eax + cmp eax,title+8 ;11 + jb news2 +;-------------------------------------- +align 4 +founde: + sub eax,title + mov [tl],eax + + mov eax,[tl] + lea eax,[eax+eax*2] ; eax *= char_width/2 + shl eax,16 + + mov ebx,27 shl 16+40 + sub ebx,eax + + xor ecx,ecx ; black shade of text + or ecx,0x08000000 ; redirect the output to the user area + add ebx,1 shl 16 ;*65536+1 + + mov edi,[draw_area] + mcall 4,,,title,[tl] + + inc ebx + mcall + + add ebx,1 shl 16 + mcall + + inc ebx + mcall + + sub ebx,1 shl 16 + mcall + + dec ebx + sub ebx,1 shl 16 + mcall + + sub ebx,1 shl 16 + dec ebx + mcall + + dec ebx + add ebx,1 shl 16 + mcall + + inc ebx + mov ecx,0xffffff ; white text + or ecx,0x08000000 ; redirect the output to the user area + mcall + ret +;------------------------------------------------------------------------------ +align 4 +ASCII_to_icon_number: +; +; in: +; esi - adress of icon ASCII text number (line start + 12) +; +; out: +; eax - number of icon +; + push esi + xor eax,eax + xor ebx,ebx +;-------------------------------------- +align 4 +.next: + lodsb + cmp al,'0' + jb .done + cmp al,'9' + ja .done + sub eax,'0' +; multiply x10 + shl ebx,1 ; multiply x2 + lea ebx,[ebx+ebx*4] ; multiply x5 + add ebx,eax + jmp .next +;-------------------------------------- +align 4 +.done: + pop esi + mov eax,ebx + ret +;------------------------------------------------------------------------------ +align 4 +itoa: + add esi,2 + mov ebx,10 + mov ecx,3 +;-------------------------------------- +align 4 +.l0: + xor edx,edx + div ebx + add dl,'0' + mov [esi],dl + dec esi + loop .l0 + ret +;------------------------------------------------------------------------------ +align 4 +calc_icon_pos: +; in: +; eax - dword [icon_position] +; out: +; eax - current Y +; ebx - current X + push eax + movzx eax,al + sub eax,'A' ;eax - number of letter + cmp eax,4 + jg no_left + + shl eax,6 ;imul eax,64 + add eax,16 + movzx ebx,[warea.left] + add eax,ebx + jmp x_done +;-------------------------------------- +align 4 +no_left: + sub eax,9 + sal eax,6 ;imul eax,64 + sub eax,16+52-1 + movzx ebx,[warea.right] + add eax,ebx +;-------------------------------------- +align 4 +x_done: + mov ebx,eax + pop eax + push ebx + movzx eax,ah + sub eax,'A' ; eax - number of letter + cmp eax,4 + jg no_up + + shl eax,6 ;imul eax,80 + add eax,16 + movzx ebx,[warea.top] + add eax,ebx + jmp y_done +;-------------------------------------- +align 4 +no_up: + sub eax,9 + shl eax,6 ;imul eax,80 + sub eax,16-1 + movzx ebx,[warea.bottom] + add eax,ebx +;-------------------------------------- +align 4 +y_done: + pop ebx + ret +;------------------------------------------------------------------------------ +include 'mouse.inc' +;------------------------------------------------------------------------------ +include 'data.inc' +;------------------------------------------------------------------------------ +IM_END: +;------------------------------------------------------------------------------ +include 'dat_area.inc' +;------------------------------------------------------------------------------ +I_END: +;------------------------------------------------------------------------------ diff --git a/programs/system/icon/trunk/icons.dat b/programs/system/icon/icons.dat similarity index 100% rename from programs/system/icon/trunk/icons.dat rename to programs/system/icon/icons.dat diff --git a/programs/system/icon/trunk/iconstrp.png b/programs/system/icon/iconstrp.png similarity index 100% rename from programs/system/icon/trunk/iconstrp.png rename to programs/system/icon/iconstrp.png diff --git a/programs/system/icon/trunk/makefile b/programs/system/icon/makefile similarity index 100% rename from programs/system/icon/trunk/makefile rename to programs/system/icon/makefile diff --git a/programs/system/icon/trunk/mouse.inc b/programs/system/icon/mouse.inc similarity index 100% rename from programs/system/icon/trunk/mouse.inc rename to programs/system/icon/mouse.inc diff --git a/programs/system/kobra/trunk/Makefile b/programs/system/kobra/Makefile similarity index 90% rename from programs/system/kobra/trunk/Makefile rename to programs/system/kobra/Makefile index 755f60901..f6a9e4e83 100644 --- a/programs/system/kobra/trunk/Makefile +++ b/programs/system/kobra/Makefile @@ -1,12 +1,12 @@ -ROOT=../../../develop/libraries/framework/trunk +ROOT=../../develop/libraries/framework/trunk -include ../../../develop/libraries/framework/trunk/config.mk +include ../../develop/libraries/framework/trunk/config.mk # Note that kobra_st.o MUST be first and kobra.o last. OBJECTS=kobra_st.o $(ROOT)/stdlib/heap.o $(ROOT)/stdlib/malloc.o $(ROOT)/stdlib/stdlib.o $(ROOT)/kolibri/kolibri.o $(ROOT)/libIPC/ipc.o kobra.o # Set real path to kolibri.img if you want to use install option -KOLIBRI_IMG=../../../../../../0.7.x-night/kolibri.img +KOLIBRI_IMG=../../../../../0.7.x-night/kolibri.img # Path to kobra.kex on floppy (directory should be created before installing) DESTDIR=kobra/ diff --git a/programs/system/kobra/trunk/gpl3.txt b/programs/system/kobra/gpl3.txt similarity index 100% rename from programs/system/kobra/trunk/gpl3.txt rename to programs/system/kobra/gpl3.txt diff --git a/programs/system/kobra/trunk/history.txt b/programs/system/kobra/history.txt similarity index 100% rename from programs/system/kobra/trunk/history.txt rename to programs/system/kobra/history.txt diff --git a/programs/system/kobra/trunk/kobra.c b/programs/system/kobra/kobra.c similarity index 100% rename from programs/system/kobra/trunk/kobra.c rename to programs/system/kobra/kobra.c diff --git a/programs/system/kobra/trunk/kobra.h b/programs/system/kobra/kobra.h similarity index 100% rename from programs/system/kobra/trunk/kobra.h rename to programs/system/kobra/kobra.h diff --git a/programs/system/kobra/trunk/kobra_st.s b/programs/system/kobra/kobra_st.s similarity index 100% rename from programs/system/kobra/trunk/kobra_st.s rename to programs/system/kobra/kobra_st.s diff --git a/programs/system/kobra/trunk/kolibri.ld b/programs/system/kobra/kolibri.ld similarity index 100% rename from programs/system/kobra/trunk/kolibri.ld rename to programs/system/kobra/kolibri.ld diff --git a/programs/system/kobra/trunk/readme.txt b/programs/system/kobra/readme.txt similarity index 100% rename from programs/system/kobra/trunk/readme.txt rename to programs/system/kobra/readme.txt diff --git a/programs/system/kobra/trunk/symbols2dbg.py b/programs/system/kobra/symbols2dbg.py similarity index 100% rename from programs/system/kobra/trunk/symbols2dbg.py rename to programs/system/kobra/symbols2dbg.py diff --git a/programs/system/launch/trunk/Tupfile.lua b/programs/system/launch/Tupfile.lua similarity index 74% rename from programs/system/launch/trunk/Tupfile.lua rename to programs/system/launch/Tupfile.lua index b2d1a5a26..eb890ce8c 100644 --- a/programs/system/launch/trunk/Tupfile.lua +++ b/programs/system/launch/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(HELPERDIR .. "/develop/libraries/libs-dev/libio") diff --git a/programs/system/launch/trunk/gpl3.txt b/programs/system/launch/gpl3.txt similarity index 100% rename from programs/system/launch/trunk/gpl3.txt rename to programs/system/launch/gpl3.txt diff --git a/programs/system/launch/trunk/history.txt b/programs/system/launch/history.txt similarity index 100% rename from programs/system/launch/trunk/history.txt rename to programs/system/launch/history.txt diff --git a/programs/system/launch/trunk/ipc.inc b/programs/system/launch/ipc.inc similarity index 100% rename from programs/system/launch/trunk/ipc.inc rename to programs/system/launch/ipc.inc diff --git a/programs/system/launch/trunk/kobra.inc b/programs/system/launch/kobra.inc similarity index 100% rename from programs/system/launch/trunk/kobra.inc rename to programs/system/launch/kobra.inc diff --git a/programs/system/launch/trunk/launch.asm b/programs/system/launch/launch.asm similarity index 100% rename from programs/system/launch/trunk/launch.asm rename to programs/system/launch/launch.asm diff --git a/programs/system/launch/trunk/launch.cfg b/programs/system/launch/launch.cfg similarity index 100% rename from programs/system/launch/trunk/launch.cfg rename to programs/system/launch/launch.cfg diff --git a/programs/system/launch/trunk/readme.txt b/programs/system/launch/readme.txt similarity index 100% rename from programs/system/launch/trunk/readme.txt rename to programs/system/launch/readme.txt diff --git a/programs/system/launch/trunk/thread.inc b/programs/system/launch/thread.inc similarity index 100% rename from programs/system/launch/trunk/thread.inc rename to programs/system/launch/thread.inc diff --git a/programs/system/launcher/trunk/Tupfile.lua b/programs/system/launcher/Tupfile.lua similarity index 100% rename from programs/system/launcher/trunk/Tupfile.lua rename to programs/system/launcher/Tupfile.lua diff --git a/programs/system/launcher/trunk/build_en.bat b/programs/system/launcher/build_en.bat similarity index 100% rename from programs/system/launcher/trunk/build_en.bat rename to programs/system/launcher/build_en.bat diff --git a/programs/system/launcher/trunk/build_ru.bat b/programs/system/launcher/build_ru.bat similarity index 100% rename from programs/system/launcher/trunk/build_ru.bat rename to programs/system/launcher/build_ru.bat diff --git a/programs/system/launcher/trunk/launcher.asm b/programs/system/launcher/launcher.asm similarity index 98% rename from programs/system/launcher/trunk/launcher.asm rename to programs/system/launcher/launcher.asm index 1ebb07692..449357230 100644 --- a/programs/system/launcher/trunk/launcher.asm +++ b/programs/system/launcher/launcher.asm @@ -1,3 +1,6 @@ +; SPDX-License-Identifier: NOASSERTION +; + ;----------------------------------------------------------------------------- ; ; LAUNCHER - startup of programs @@ -28,11 +31,11 @@ dd 0x0 ; I_Param dd 0x0 ; I_Icon ;----------------------------------------------------------------------------- -include "../../../macros.inc" +include "../../macros.inc" define __DEBUG__ 1 define __DEBUG_LEVEL__ 1 -include "../../../debug-fdo.inc" +include "../../debug-fdo.inc" ;----------------------------------------------------------------------------- START: ; start of execution mcall 68,11 @@ -43,7 +46,7 @@ START: ; start of execution mov ecx,[processinfo+32] test ecx,ecx jnz @f - + inc ecx ; if file size zero ;-------------------------------------- @@: diff --git a/programs/system/menu/trunk/Tupfile.lua b/programs/system/menu/Tupfile.lua similarity index 79% rename from programs/system/menu/trunk/Tupfile.lua rename to programs/system/menu/Tupfile.lua index 78d2f230c..33b6024fc 100644 --- a/programs/system/menu/trunk/Tupfile.lua +++ b/programs/system/menu/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/menu/trunk/build.bat b/programs/system/menu/build.bat similarity index 100% rename from programs/system/menu/trunk/build.bat rename to programs/system/menu/build.bat diff --git a/programs/system/menu/trunk/build.sh b/programs/system/menu/build.sh similarity index 100% rename from programs/system/menu/trunk/build.sh rename to programs/system/menu/build.sh diff --git a/programs/system/menu/trunk/makefile b/programs/system/menu/makefile similarity index 100% rename from programs/system/menu/trunk/makefile rename to programs/system/menu/makefile diff --git a/programs/system/menu/trunk/menu.asm b/programs/system/menu/menu.asm similarity index 99% rename from programs/system/menu/trunk/menu.asm rename to programs/system/menu/menu.asm index 82e879931..3189eb0b2 100644 --- a/programs/system/menu/trunk/menu.asm +++ b/programs/system/menu/menu.asm @@ -1,3 +1,6 @@ +; SPDX-License-Identifier: NOASSERTION +; + ;****************************************************************************** ; MAIN MENU ;****************************************************************************** @@ -41,11 +44,11 @@ dd bootparam ; boot parameters dd 0x0 ; path ;------------------------------------------------------------------------------ -include "..\..\..\macros.inc" -include "..\..\..\struct.inc" -include "..\..\..\gui_patterns.inc" +include "..\..\macros.inc" +include "..\..\struct.inc" +include "..\..\gui_patterns.inc" ; Formatted debug output: -include "..\..\..\debug-fdo.inc" +include "..\..\debug-fdo.inc" __DEBUG__ = 1 ; 0 - disable debug output / 1 - enable debug output __DEBUG_LEVEL__ = DBG_ERR ; set the debug level DBG_ALL = 0 ; all messages diff --git a/programs/system/menu/trunk/readme.txt b/programs/system/menu/readme.txt similarity index 100% rename from programs/system/menu/trunk/readme.txt rename to programs/system/menu/readme.txt diff --git a/programs/system/mousemul/trunk/Tupfile.lua b/programs/system/mousemul/Tupfile.lua similarity index 79% rename from programs/system/mousemul/trunk/Tupfile.lua rename to programs/system/mousemul/Tupfile.lua index 04360af8e..163201e66 100644 --- a/programs/system/mousemul/trunk/Tupfile.lua +++ b/programs/system/mousemul/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/mousemul/trunk/build.bat b/programs/system/mousemul/build.bat similarity index 100% rename from programs/system/mousemul/trunk/build.bat rename to programs/system/mousemul/build.bat diff --git a/programs/system/mousemul/trunk/build.sh b/programs/system/mousemul/build.sh similarity index 100% rename from programs/system/mousemul/trunk/build.sh rename to programs/system/mousemul/build.sh diff --git a/programs/system/mousemul/trunk/makefile b/programs/system/mousemul/makefile similarity index 100% rename from programs/system/mousemul/trunk/makefile rename to programs/system/mousemul/makefile diff --git a/programs/system/mousemul/trunk/mousemul.asm b/programs/system/mousemul/mousemul.asm similarity index 94% rename from programs/system/mousemul/trunk/mousemul.asm rename to programs/system/mousemul/mousemul.asm index 5af3717dd..58e3b37ed 100644 --- a/programs/system/mousemul/trunk/mousemul.asm +++ b/programs/system/mousemul/mousemul.asm @@ -1,306 +1,312 @@ -; <--- description ---> -; compiler: FASM 1.67.23 -; name: Mouse Emulation For KolibriOS -;----------------------------------------------------------------------------- -; version: 1.2 -; last update: 01/06/2012 -; written by: Marat Zakiyanov aka Mario79, aka Mario -; changes: using new functions 66.6 and 66.7 -;----------------------------------------------------------------------------- -; version: 1.1 -; last update: 26/05/2012 -; written by: Lipatov Kirill aka Leency -; changes: shows notify with instructions, while opening program -;----------------------------------------------------------------------------- -; version: 1.0 -; last update: 04/09/2010 -; written by: Marat Zakiyanov aka Mario79, aka Mario -; changes: total optimization of code, -; different events for Up and Down of key Num 5 -; advansed acceleration mode -;----------------------------------------------------------------------------- -; version: 0.8 -; last update: 03/10/2007 -; written by: Zlobny_Gluk -; e-mail: umbrosia@land.ru -;----------------------------------------------------------------------------- -; <--- include all KolibriOS stuff ---> -include "lang.inc" -include '../../../macros.inc' - -; <--- start of KolibriOS application ---> -MEOS_APP_START - -; <--- start of code ---> -CODE -;----------------------------------------------------------------------------- -start: - mcall 70,notifyapp - -start1: - xor ebx,ebx - mcall 40 -@@: - mcall 23,10 - - mcall 66,3 - test eax,0x80 ;NumLock status - jz @r - - mov ebx,4 - call hotkeys_common - - mcall 40,10b -still: - mcall 10 - - cmp eax,2 ; if event == 2 - jne still -;----------------------------------------------------------------------------- -key: ; key event handler - call mouse_acceleration - - mcall 2 ; get key code - - push eax - mcall 66,3 - test eax,0x80 ;NumLock status - pop eax - jnz @f - mov ebx,5 - call hotkeys_common - jmp start1 -@@: - cmp al,2 - jne still - - xor edx,edx - - cmp ah,80 ; Down Num 2 - je keytwo - cmp ah,81 ; Down Num 3 - je keythree - cmp ah,75 ; Down Num 4 - je keyfour - cmp ah,77 ; Down Num 6 - je keysix - cmp ah,71 ; Down Num 7 - je keyseven - cmp ah,72 ; Down Num 8 - je keyeight - cmp ah,73 ; Down Num 9 - je keynine - cmp ah,76 ; Down Num 5 - je keyfive - cmp ah,204 ; Up Num 5 - je keyfive_1 - cmp ah,79 ; Down Num 1 - jne still -;----------------------------------------------------------------------------- -keyone: - call down -keyfour: - call left - jmp mouseread -;----------------------------------------------------------------------------- -keythree: - call right -keytwo: - call down - jmp mouseread -;----------------------------------------------------------------------------- -keyseven: - call left -keyeight: - call up - jmp mouseread -;----------------------------------------------------------------------------- -keynine: - call up -keysix: - call right - jmp mouseread -;----------------------------------------------------------------------------- -keyfive: - inc edx -keyfive_1: - mcall 18,19,5 - jmp still -;----------------------------------------------------------------------------- -left: - mov eax,esi - shl eax,16 - sub edx,eax - ret -;----------------------------------------------------------------------------- -right: - mov eax,esi - shl eax,16 - add edx,eax - ret -;----------------------------------------------------------------------------- -down: - add edx,esi - ret -;----------------------------------------------------------------------------- -up: - sub edx,esi - ret -;----------------------------------------------------------------------------- -mouseread: - xor ebx,ebx - mcall 37 - add edx,eax - -sravn: - xor ebx,ebx - xor edi,edi - -real: - mov ebx,edx - mov edi,ebx - shr ebx,16 ; get x1 -; shl edi,16 ; get y1 -; shr edi,16 - and edi,0xffff - -nullli: - add ebx,16 - cmp ebx,65535 - jg xmin - sub ebx,15 - - add edi,16 - cmp edi,65535 - jg ymin - sub edi,15 - -razr: - mcall 14 - - mov ecx,eax - shr eax,16 ; get x2 -; shl ecx,16 ; get y2 -; shr ecx,16 - and ecx,0xffff - -rightdownli: - cmp eax,ebx - jl xmax - cmp ecx,edi - jl ymax - -mousewrite: - mcall 18,19,4 - mcall 26,9 - mov [mouse_timer_ticks],eax - jmp still -;----------------------------------------------------------------------------- -mouse_acceleration: - xor esi,esi - inc esi - mcall 18,19,2 - mov ecx,eax - mcall 26,9 - sub eax,[mouse_timer_ticks] - cmp eax,ecx ; mouse_delay - ja @f - xor ecx,ecx - mcall 18,19 ; checkspeed - mov esi,eax - shl esi,2 -@@: - ret -;----------------------------------------------------------------------------- -xmax: - dec eax - dec ebx - dec edi - shl eax,16 - add edi,eax - mov edx,edi - jmp sravn -;----------------------------------------------------------------------------- -xmin: - mov edx,edi - jmp sravn -;----------------------------------------------------------------------------- -ymax: - dec ecx - dec ebx - - shl ebx,16 - mov edi,ebx - add edi,ecx - mov edx,edi - jmp sravn -;----------------------------------------------------------------------------- -ymin: - shl ebx,16 - mov edx,ebx - shr ebx,16 - jmp sravn -;----------------------------------------------------------------------------- -hotkeys_common: - xor ecx,ecx - xor edx,edx - mov cl,79 ; Down Num 1 - mcall 66 - - mov cl,80 ; Down Num 2 - mcall 66 - - mov cl,81 ; Down Num 3 - mcall 66 - - mov cl,75 ; Down Num 4 - mcall 66 - - mov cl,76 ; Down Num 5 - mcall 66 - - mov cl,204 ; Up Num 5 - mcall 66 - - mov cl,77 ; Down Num 6 - mcall 66 - - mov cl,71 ; Down Num 7 - mcall 66 - - mov cl,72 ; Down Num 8 - mcall 66 - - mov cl,73 ; Down Num 9 - mcall 66 -; disable/enable input, work only hotkeys (f.66.6,66.7) - add ebx,2 - mcall 66 - ret -;----------------------------------------------------------------------------- -; <--- initialised data ---> -DATA -;----------------------------------------------------------------------------- -; <--- uninitialised data ---> -UDATA -mouse_timer_ticks dd 0 -;----------------------------------------------------------------------------- -if lang eq ru_RU - ud_user_message db '"NumLock включает и выключает эмулятор мыши.\nУправление через Numpad." -I',0 -else if lang eq it_IT - ud_user_message db '"NumLock - on/off - usa Numpad per muovere il cursore." -I',0 -else - ud_user_message db '"NumLock - on/off mouse emul. Numpad - move cursor." -I',0 -end if - -notifyapp: - dd 7 - dd 0 - dd ud_user_message - dd 0 - dd 0 - db '@notify',0 -;----------------------------------------------------------------------------- -MEOS_APP_END -; <--- end of KolibriOS application ---> -; ZG +; SPDX-License-Identifier: NOASSERTION +; + +; Text encoded with Code Page 866 - Cyrillic + + +; <--- description ---> +; compiler: FASM 1.67.23 +; name: Mouse Emulation For KolibriOS +;----------------------------------------------------------------------------- +; version: 1.2 +; last update: 01/06/2012 +; written by: Marat Zakiyanov aka Mario79, aka Mario +; changes: using new functions 66.6 and 66.7 +;----------------------------------------------------------------------------- +; version: 1.1 +; last update: 26/05/2012 +; written by: Lipatov Kirill aka Leency +; changes: shows notify with instructions, while opening program +;----------------------------------------------------------------------------- +; version: 1.0 +; last update: 04/09/2010 +; written by: Marat Zakiyanov aka Mario79, aka Mario +; changes: total optimization of code, +; different events for Up and Down of key Num 5 +; advansed acceleration mode +;----------------------------------------------------------------------------- +; version: 0.8 +; last update: 03/10/2007 +; written by: Zlobny_Gluk +; e-mail: umbrosia@land.ru +;----------------------------------------------------------------------------- +; <--- include all KolibriOS stuff ---> +include "lang.inc" +include '../../macros.inc' + +; <--- start of KolibriOS application ---> +MEOS_APP_START + +; <--- start of code ---> +CODE +;----------------------------------------------------------------------------- +start: + mcall 70,notifyapp + +start1: + xor ebx,ebx + mcall 40 +@@: + mcall 23,10 + + mcall 66,3 + test eax,0x80 ;NumLock status + jz @r + + mov ebx,4 + call hotkeys_common + + mcall 40,10b +still: + mcall 10 + + cmp eax,2 ; if event == 2 + jne still +;----------------------------------------------------------------------------- +key: ; key event handler + call mouse_acceleration + + mcall 2 ; get key code + + push eax + mcall 66,3 + test eax,0x80 ;NumLock status + pop eax + jnz @f + mov ebx,5 + call hotkeys_common + jmp start1 +@@: + cmp al,2 + jne still + + xor edx,edx + + cmp ah,80 ; Down Num 2 + je keytwo + cmp ah,81 ; Down Num 3 + je keythree + cmp ah,75 ; Down Num 4 + je keyfour + cmp ah,77 ; Down Num 6 + je keysix + cmp ah,71 ; Down Num 7 + je keyseven + cmp ah,72 ; Down Num 8 + je keyeight + cmp ah,73 ; Down Num 9 + je keynine + cmp ah,76 ; Down Num 5 + je keyfive + cmp ah,204 ; Up Num 5 + je keyfive_1 + cmp ah,79 ; Down Num 1 + jne still +;----------------------------------------------------------------------------- +keyone: + call down +keyfour: + call left + jmp mouseread +;----------------------------------------------------------------------------- +keythree: + call right +keytwo: + call down + jmp mouseread +;----------------------------------------------------------------------------- +keyseven: + call left +keyeight: + call up + jmp mouseread +;----------------------------------------------------------------------------- +keynine: + call up +keysix: + call right + jmp mouseread +;----------------------------------------------------------------------------- +keyfive: + inc edx +keyfive_1: + mcall 18,19,5 + jmp still +;----------------------------------------------------------------------------- +left: + mov eax,esi + shl eax,16 + sub edx,eax + ret +;----------------------------------------------------------------------------- +right: + mov eax,esi + shl eax,16 + add edx,eax + ret +;----------------------------------------------------------------------------- +down: + add edx,esi + ret +;----------------------------------------------------------------------------- +up: + sub edx,esi + ret +;----------------------------------------------------------------------------- +mouseread: + xor ebx,ebx + mcall 37 + add edx,eax + +sravn: + xor ebx,ebx + xor edi,edi + +real: + mov ebx,edx + mov edi,ebx + shr ebx,16 ; get x1 +; shl edi,16 ; get y1 +; shr edi,16 + and edi,0xffff + +nullli: + add ebx,16 + cmp ebx,65535 + jg xmin + sub ebx,15 + + add edi,16 + cmp edi,65535 + jg ymin + sub edi,15 + +razr: + mcall 14 + + mov ecx,eax + shr eax,16 ; get x2 +; shl ecx,16 ; get y2 +; shr ecx,16 + and ecx,0xffff + +rightdownli: + cmp eax,ebx + jl xmax + cmp ecx,edi + jl ymax + +mousewrite: + mcall 18,19,4 + mcall 26,9 + mov [mouse_timer_ticks],eax + jmp still +;----------------------------------------------------------------------------- +mouse_acceleration: + xor esi,esi + inc esi + mcall 18,19,2 + mov ecx,eax + mcall 26,9 + sub eax,[mouse_timer_ticks] + cmp eax,ecx ; mouse_delay + ja @f + xor ecx,ecx + mcall 18,19 ; checkspeed + mov esi,eax + shl esi,2 +@@: + ret +;----------------------------------------------------------------------------- +xmax: + dec eax + dec ebx + dec edi + shl eax,16 + add edi,eax + mov edx,edi + jmp sravn +;----------------------------------------------------------------------------- +xmin: + mov edx,edi + jmp sravn +;----------------------------------------------------------------------------- +ymax: + dec ecx + dec ebx + + shl ebx,16 + mov edi,ebx + add edi,ecx + mov edx,edi + jmp sravn +;----------------------------------------------------------------------------- +ymin: + shl ebx,16 + mov edx,ebx + shr ebx,16 + jmp sravn +;----------------------------------------------------------------------------- +hotkeys_common: + xor ecx,ecx + xor edx,edx + mov cl,79 ; Down Num 1 + mcall 66 + + mov cl,80 ; Down Num 2 + mcall 66 + + mov cl,81 ; Down Num 3 + mcall 66 + + mov cl,75 ; Down Num 4 + mcall 66 + + mov cl,76 ; Down Num 5 + mcall 66 + + mov cl,204 ; Up Num 5 + mcall 66 + + mov cl,77 ; Down Num 6 + mcall 66 + + mov cl,71 ; Down Num 7 + mcall 66 + + mov cl,72 ; Down Num 8 + mcall 66 + + mov cl,73 ; Down Num 9 + mcall 66 +; disable/enable input, work only hotkeys (f.66.6,66.7) + add ebx,2 + mcall 66 + ret +;----------------------------------------------------------------------------- +; <--- initialised data ---> +DATA +;----------------------------------------------------------------------------- +; <--- uninitialised data ---> +UDATA +mouse_timer_ticks dd 0 +;----------------------------------------------------------------------------- +if lang eq ru_RU + ud_user_message db '"NumLock включает и выключает эмулятор мыши.\nУправление через Numpad." -I',0 +else if lang eq it_IT + ud_user_message db '"NumLock - on/off - usa Numpad per muovere il cursore." -I',0 +else + ud_user_message db '"NumLock - on/off mouse emul. Numpad - move cursor." -I',0 +end if + +notifyapp: + dd 7 + dd 0 + dd ud_user_message + dd 0 + dd 0 + db '@notify',0 +;----------------------------------------------------------------------------- +MEOS_APP_END +; <--- end of KolibriOS application ---> +; ZG diff --git a/programs/system/rdsave/trunk/Tupfile.lua b/programs/system/rdsave/Tupfile.lua similarity index 79% rename from programs/system/rdsave/trunk/Tupfile.lua rename to programs/system/rdsave/Tupfile.lua index 32649eae1..3915ba57b 100644 --- a/programs/system/rdsave/trunk/Tupfile.lua +++ b/programs/system/rdsave/Tupfile.lua @@ -1,5 +1,5 @@ if tup.getconfig("NO_FASM") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR") +HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.include(HELPERDIR .. "/use_fasm.lua") add_include(tup.getvariantdir()) diff --git a/programs/system/rdsave/trunk/app.ini b/programs/system/rdsave/app.ini similarity index 100% rename from programs/system/rdsave/trunk/app.ini rename to programs/system/rdsave/app.ini diff --git a/programs/system/rdsave/trunk/build.sh b/programs/system/rdsave/build.sh similarity index 100% rename from programs/system/rdsave/trunk/build.sh rename to programs/system/rdsave/build.sh diff --git a/programs/system/rdsave/trunk/build_en.bat b/programs/system/rdsave/build_en.bat similarity index 100% rename from programs/system/rdsave/trunk/build_en.bat rename to programs/system/rdsave/build_en.bat diff --git a/programs/system/rdsave/trunk/build_et.bat b/programs/system/rdsave/build_et.bat similarity index 100% rename from programs/system/rdsave/trunk/build_et.bat rename to programs/system/rdsave/build_et.bat diff --git a/programs/system/rdsave/trunk/build_it.bat b/programs/system/rdsave/build_it.bat similarity index 100% rename from programs/system/rdsave/trunk/build_it.bat rename to programs/system/rdsave/build_it.bat diff --git a/programs/system/rdsave/trunk/build_ru.bat b/programs/system/rdsave/build_ru.bat similarity index 100% rename from programs/system/rdsave/trunk/build_ru.bat rename to programs/system/rdsave/build_ru.bat diff --git a/programs/system/rdsave/trunk/makefile b/programs/system/rdsave/makefile similarity index 100% rename from programs/system/rdsave/trunk/makefile rename to programs/system/rdsave/makefile diff --git a/programs/system/rdsave/trunk/rdsave.asm b/programs/system/rdsave/rdsave.asm similarity index 98% rename from programs/system/rdsave/trunk/rdsave.asm rename to programs/system/rdsave/rdsave.asm index e60757068..59947715b 100644 --- a/programs/system/rdsave/trunk/rdsave.asm +++ b/programs/system/rdsave/rdsave.asm @@ -1,3 +1,9 @@ +; SPDX-License-Identifier: NOASSERTION +; + +; Text encoded with Code Page 866 - Cyrillic + + ; RDsave для Kolibri (0.6.5.0 и старше) ; Save RAM-disk to hard or floppy drive ;--------------------------------------------------------------------- @@ -25,15 +31,15 @@ dd cur_dir_path include 'lang.inc' ; Language support for locales: ru_RU (CP866), et_EE, it_IT, en_US. -include '../../../macros.inc' +include '../../macros.inc' if debug eq yes -include '../../../debug.inc' +include '../../debug.inc' end if -include '../../../proc32.inc' -include '../../../dll.inc' -include '../../../KOSfuncs.inc' -include '../../../load_lib.mac' -include '../../../develop/libraries/box_lib/trunk/box_lib.mac' +include '../../proc32.inc' +include '../../dll.inc' +include '../../KOSfuncs.inc' +include '../../load_lib.mac' +include '../../develop/libraries/box_lib/trunk/box_lib.mac' include 'str.inc' @use_library diff --git a/programs/system/rdsave/trunk/str.inc b/programs/system/rdsave/str.inc similarity index 100% rename from programs/system/rdsave/trunk/str.inc rename to programs/system/rdsave/str.inc