forked from KolibriOS/kolibrios
Sorry for this commit: it is a part of previous one
git-svn-id: svn://kolibrios.org@111 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f9a3eb973f
commit
fca11d7700
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
203
programs/other/tinypad2/trunk/ReadMe.txt
Normal file
203
programs/other/tinypad2/trunk/ReadMe.txt
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
-= [v 3.78b] =-
|
||||||
|
‚¥àá¨ï ¡ë« ᤥ« áà §ã ¯®á«¥ ⮣® ª ª ï ¢ë«®¦¨« ¯à¥¤., ® ï ¥ñ ¥ ¢ëª« ¤ë¢ «,
|
||||||
|
â ª ª ª ¤¥ï«áï ¥éñ ¤®à ¡®â âì.
|
||||||
|
|
||||||
|
<EFBFBD>®¢®¥:
|
||||||
|
- ¯®¨áª á¯àïâ ¢ ¬¥î, £®àïç ï ª« ¢¨è ctrl+F7, ¯®¨áª ¤ «¥¥ - ctrl+F8
|
||||||
|
- ¡®«¥¥ ¤«¨ ï áâப ®âªàëâ¨ï ä ©«®¢, ¥ ¦¥« â¥«ì® ®âªàë¢ âì ¯ãâ¨
|
||||||
|
>71 ᨬ¢®« , â ª ª ª ¬®£ãâ ¢®§¨ªãâì ®è¨¡ª¨ ¯à¨ à ¡®â¥ á ®ª®¬ "¡ëáâண® á/§"
|
||||||
|
|
||||||
|
|
||||||
|
íâ® ¯à®áâ® ¤®¯®«¥¨¥ ª ¯à¥¤ë¤ã饬㠢ë¯ãáªã. ¤ «ìè¥ ¡ã¤¥â ¨á¯à ¢«¥®:
|
||||||
|
- £«îª á ¥ ªâ¨¢ë¬¨ ®ª ¬¨.
|
||||||
|
|
||||||
|
-= [v 3.78a] =-
|
||||||
|
|
||||||
|
‚த¥ à ¡®â ¥â.. :)
|
||||||
|
|
||||||
|
<EFBFBD>®¢®¥:
|
||||||
|
- ‘ªà®«« ¢§ïâ á "Scroll.inc", ¢â®à ª®â®à®£® Jason Delozier.
|
||||||
|
¯à¨æ¨¯ ¤¢¨¦¥¨ï ¯® ¤®ªã¬¥âã ¯®«®áâìî ¨§¬¥ñ (¯® áà ¢¥¨î
|
||||||
|
á ¯à®è«®© ¢¥àᨥ©).
|
||||||
|
- Šãàá®à ¤¢¨£ ¥âáï ª«¨ª®¬ ¬ë誨.
|
||||||
|
- „®¡ ¢«¥ äãªæ¨ï Goto Line #.
|
||||||
|
(enter-goto; esc - cancel)
|
||||||
|
¤®áâ â®ç® ¯®«¥§ ï äãªæ¨ï, ª®£¤ ä á¬( ¤®áª¥ ®â« ¤ª¨) ¯¨è¥â çâ® ®è¨¡ª
|
||||||
|
¢ â ª®©-â® áâப¥...
|
||||||
|
- ˆá¯à ¢«¥ ¡ £ á § ¤ ¨¥¬ ¨¬¥¨ ®¢®£® ä ©«
|
||||||
|
- ˆá¯à ¢«¥ ¡ £ á® áâப®© ¯®¨áª (¯à¨ "¯®¨áª¥" ¯®á«¥¤¥© áâப¨)
|
||||||
|
- ˆá¯à ¢«¥ ¡ £ ¯®á«¥ ¢ë§®¢ ¤¨ «®£®¢ ®âªàëâ¨ï/á®åà ¥¨ï.
|
||||||
|
⥯¥àì áªà®«« ¯®á«¥ ¨å ¯à®¤®«¦ ¥â à ¡®â âì ;)
|
||||||
|
- Œ¥«ª¨¥ ¨á¯à ¢«¥¨ï ¢ à ¡®â¥ ¬¥î.
|
||||||
|
|
||||||
|
<EFBFBD>®ï¢¨«áï:
|
||||||
|
£«îª, ª ª ¢ LC - ¯à¨ ¦ ⨨ ¢ ®¡« á⨠®ª , ¤ ¦¥ ¥á«¨ ®ª® ¥ ªâ¨¢®,
|
||||||
|
ªãàᮢ ¨ áªà®«« ¡ à ¢áñ à ¢® ॠ£¨àãîâ ¬ëèªã.
|
||||||
|
|
||||||
|
<EFBFBD> ¡®â î ¤:
|
||||||
|
-ᯨ᪮¬ ¯®á«¥¤¨å ä ©«®¢
|
||||||
|
-§ £à㧪®© "color table'a"
|
||||||
|
|
||||||
|
â ª ¦¥, ¤® ¯®á¬®âà¥âì ¨á室¨ª¨ HeEd'a, â®ç¥¥ äãªæ¨¨ ¯¥à¥ª®¤¨à®¢ª¨.
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
-= [v 3.77a] =-
|
||||||
|
|
||||||
|
…éñ ®¤ «ìä .
|
||||||
|
|
||||||
|
<EFBFBD> íâ®â à §:
|
||||||
|
- ¤®¡ ¢«¥ ¯®«®á ¯à®ªã⪨
|
||||||
|
- ¨á¯à ¢«¥® ®ª® ¢®¯à®á "á®åà ¨âì ¤®ªã¬¥â", â ª ª ª ï § ¬¥â¨«
|
||||||
|
çâ® ®® ¦à «® ¬®£® ¯à®æ¥áá®à®£® ¢à¥¬¥¨.
|
||||||
|
- ®¡®¢«¥¨¥ íªà ¯®á«¥ ¤¨ «®£®¢ á®åà ¥¨ï ¨ ®âªàëâ¨ï
|
||||||
|
|
||||||
|
<EFBFBD> § ¬¥âªã: áªà®«« ¯®«®áâìî ᤥ« ¬®© ¨ ¯®í⮬ã, ¢®§¬®¦®, ¥áâì £«îª¨.
|
||||||
|
â ª ª ª ï ¥ èñ« ¡®«¥¥ å®à®è¥© ä®à¬ã«ë, áªà®«« ¢á¥£¤ ¥¬®£® ¥ ¤®¥§¦ ¥â ¤®
|
||||||
|
¢¥àå , § â® ¨ª®£¤ ¥ ¯¥à¥á¥ª ¥â ¨¦îî ª®¯ªã (¢à®¤¥ ¡ë)
|
||||||
|
|
||||||
|
ª®¯ª¨ áªà®«« "¢¢¥àå" ¨ "¢¨§" íª¢¨¢ «¥âë pg.up ¨ pg.down
|
||||||
|
|
||||||
|
<EFBFBD> §¬¥à áªà®«« ¦¥á⪮ § ªà¥¯«ñ, â ª ª ª ᪮஠¡ã¤¥â § ¯¥à饮
|
||||||
|
¨§¬¥ïâì à §¬¥ë ®ª .
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD>¥ ¯®«ãç¨âáï:
|
||||||
|
“¡à âì ®£à ¨ç¥¨¥ ¢ 80 ᨬ¢®«®¢ ¨ ¯à¨á®¡ ç¨âì ¯®¤¤¥à¦ªã BGI èà¨ä⮢.
|
||||||
|
<EFBFBD>஡«¥¬ ¢ ᫨誮¬ ¨§¢à éñ®¬ «£®à¨â¬¥ ¢ë¢®¤ ᨬ¢®«®¢ (¯® ªà ©¥©
|
||||||
|
¬¥à¥ ¬¥ â ª ¯®ª § «®áì), ¯à®é¥ ¡ã¤¥â ¯¥à¥¤¥« âì ¢áñ ¯® ®¢®©,
|
||||||
|
¢§ï¢ ¥ª®â®àë¥ äãªæ¨¨ ®âáî¤ .
|
||||||
|
|
||||||
|
‚ á«¥¤ãî饩 ¢¥àᨨ ¯« ¨àã¥âáï:
|
||||||
|
- äãªæ¨ï "goto string #"
|
||||||
|
- ¨§¬¥¥¨¥ 梥â ⥪áâ (¨ ᯥæ. ᨬ¢®«®¢) ¨ à ¡®ç¥© ®¡« áâ¨.
|
||||||
|
- á®åà ¥¨¥ ¥¡®«ì讣® ᯨ᪠"¯®á«¥¤¨å । ªâ¨à㥬ëå ä ©«®¢"
|
||||||
|
¯®áâ à îáì, ® ¢áñ ¦¥ ¨ç¥£® ¥ ®¡¥é î....
|
||||||
|
|
||||||
|
|
||||||
|
-= [v 3.76 ] =-
|
||||||
|
|
||||||
|
<EFBFBD>®¢â®àë© à¥¬¥©ª â ©¨¯ ¤ :) Š« ¢¨ âãà à㫨â.
|
||||||
|
|
||||||
|
—â® ®¢®£®?
|
||||||
|
|
||||||
|
- "Žª® ¡ëáâண® á®åà ¥¨ï ¨ § £à㧪¨" ¤«ï ¯à®¯¨áë¢ ¨ï ¯ãâ¨
|
||||||
|
ª ä ©«ã "¢àãçãî". ‚ í⮬ ¦¥ ®ª¥ £®àï稥 ª« ¢¨è¨ -
|
||||||
|
ctrl+s - á®åà ¨âì, ctrl+o - ®âªàëâì, esc - ®â¬¥
|
||||||
|
|
||||||
|
- ƒ®àï稥 ª« ¢¨è¨ ¤«ï ª®¬¯¨«ï樨(CTRL+F9),
|
||||||
|
ª®¬¯¨«ï樨 ¨ § ¯ã᪠(CTRL+F10), ¨ ¤®áª¨ ®â« ¤ª¨(F12)
|
||||||
|
|
||||||
|
- £« ¢®¥ ®ª® ®áâ ñâáï ªâ¨¢ë¬ ¯®á«¥ § ¯ã᪠¤®áª¨ ®â« ¤ª¨
|
||||||
|
¨ ®ª ¡ëáâண® á®åà ¥¨ï (⮫쪮 £®àï稬¨ ª« ¢¨è ¬¨)
|
||||||
|
|
||||||
|
- ˆá¯à ¢«¥ £«îª ¢ë«¥â ¨ï ¯à¨ ¯®¯ë⪥ ¯®¨áª ¢ ¯ãá⮬
|
||||||
|
¤®ªã¬¥â¥
|
||||||
|
|
||||||
|
- ®¡« £®à®¦¥ ¯¨áª ¨§ ᯨª¥à , ⥯¥àì ¯®å®¦ ¯¨áª Š®«¨¡à¨ 3
|
||||||
|
|
||||||
|
- Š®¯ª¨ ¢ë஢¥ë ¤«ï ¨á¯®«ì§®¢ ¨ï ᪨
|
||||||
|
|
||||||
|
- ¯® ¥¯®ïâë¬ ¬¥ ¯à¨ç¨ ¬ ä ©«ë á®åà ñë¥ ¢ ¨¦¥¬ ॣ¨áâà¥
|
||||||
|
¡á®«îâ® ¥ ¯à¨¨¬ «¨áì sysxtree ¨ 㦮 ¡ë«® ¨å ®âªàë¢ âì
|
||||||
|
¢àãçãî ¯à®¯¨áë¢ ï ¯ãâì. ¨á¯à ¢«¥® ®¡ëçë¬ ¯¥à¥¢®¤®¬ ¢ ¢¥à娩
|
||||||
|
ॣ¨áâà.
|
||||||
|
|
||||||
|
- ®ª á®®¡é¥¨ï ¯à¨ ¯¥à¥¯®«¥®¬ ¤¨áª¥ (â ¦¥ ¯à®æ¥¤ãà , çâ® ¨ ¤«ï erroff ã
|
||||||
|
savedialog)
|
||||||
|
|
||||||
|
- ¨á¯à ¢«¥ ¬®© ¡ £ - ¯à¨ ¥¢®§¬®¦®á⨠á®åà ¥¨ï ⥯¥àì ®áâ ñâáï áâ àë© ¯ãâì
|
||||||
|
ª ä ©«ã (¨ ¨¬ï).
|
||||||
|
|
||||||
|
- ¨á¯à ¢«¥® ¥éñ ¯ à®çª ¬¥«ª¨å ¥¤®çñ⮢ (¬®¨å?!).
|
||||||
|
|
||||||
|
—â® ¥ ᤥ« ®?
|
||||||
|
|
||||||
|
‚áñ ¥éñ ¥â ¯®¤¤¥à¦ª¨ èà¨ä⮢ BGI ¨
|
||||||
|
¨§¬¥¥¨ï 梥â ä® /⥪áâ . •®âï ï ᮬ¥¢ îáì, çâ® BGI èà¨äâë ¯àאַ "¥®¡å®¤¨¬
|
||||||
|
ë"
|
||||||
|
¢ á¬-¡«®ª®â¥.
|
||||||
|
<20>®ª ¥éñ ¥ ®¡à ¡ âë¢ ¥âáï ®è¨¡ª "fat12 § ¯®«¥" - ¢à®¤¥ ¡ë ¤ ¦¥ äãªæ¨¨ ¢ ï¤
|
||||||
|
ॠ¥â...
|
||||||
|
•®çã ¯¥à¥©â¨ ᪠-ª®¤ë, â® ¢ ᪨ ¯®¢â®àïîâáï ª®¤ë.
|
||||||
|
--------------------------------------------
|
||||||
|
¨ ¥éñ: ® ®è¨¡ª å ¨ ªà¨â¨ª¥ - ¬¥ (¥ "¬¥ï") ¬ë«® ¨«¨ ä®àã¬.
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
ˆáâ®à¨ï...
|
||||||
|
|
||||||
|
-= [ v 3.75b ] =-
|
||||||
|
|
||||||
|
Ž....
|
||||||
|
<EFBFBD>¥¬¥©ª :) Tinypad'a :
|
||||||
|
’ã«¡ à ⥯¥àì á¯àïâ ¢ ¬¥î. „«ï á®åà ¥¨ï ¨ ®âªàëâ¨ï ¨á¯®«ì§ãîâáï
|
||||||
|
¤¨ «®£¨ ¨§ ASCL <20> ¢«îè¨ …¢£¥¨ï. ˆá¯à ¢«¥ "¦ã⪨©" ¡ £ - ª®£¤
|
||||||
|
á®åà ï¥èì ¤®ªã¬¥â ¯®¤ ¤à㣨¬ ¨¬¥¥¬, ¢ áâப¥ § £®«®¢ª ®áâ ¢ «®áì
|
||||||
|
áâ ஥ §¢ ¨¥.
|
||||||
|
„®¡ ¢«¥ë ¤¨ «®£®¢ë¥ ®ª ¯à¨ ®è¨¡ª å ¨ ¢ë室¥. „®¡ ¢«¥ ª®¯ª
|
||||||
|
"®¢ë©", ¯à¨ ¦ ⨨ ª®â®àãî § ¤ ñâáï ¢®¯à®á ® á®åà ¥¨¨ ä ©« , § ⥬
|
||||||
|
ᮧ¤ ñâáï ¤®ªã¬¥â á ®¢ë¬ ¨¬¥¥¬. Œ ªá¨¬ «ì® 99 ®¢ëå ¤®ªã¬¥â®¢. Š®¯ª
|
||||||
|
"®¢®¥ ®ª®" ®âªàë¢ ¥â ®¢®¥ ®ª® ’ ©¨¯ ¤ (§ ¯ã᪠¥â ®¢ë© ¯à®æ¥áá).
|
||||||
|
|
||||||
|
Ž £àãá⮬...
|
||||||
|
Ž¡® ¢á¥å ®è¨¡ª å ¬¥ ¬ë«®, ¯®¯à®¡ãî ¨á¯à ¢¨âì.
|
||||||
|
„¨ «®£ "á®åà ¨âì ª ª" á®åà ï¥â ⮫쪮 £®â®¢ë¥ ä ©«ë (â® ¥áâì ¯®¢¥àå ¨å,
|
||||||
|
¥«ì§ï ᮧ¤ âì ®¢ë©).
|
||||||
|
<EFBFBD>ਠ¯®¯ë⪥ ¯®¨áª áâப¨ ¢ ¯ãá⮬ ¤®ªã¬¥â¥ ¯à®£ ¢ë«¥â ¥â :(
|
||||||
|
<EFBFBD>ਠ¢ë室¥, ª®£¤ ¢ë« §¨â ®ª®èª® á ¢®¯à®á®¬ "á®åà ¨âì ä ©«?" - ¤ - á®åà ï¥â
|
||||||
|
¤®ªã¬¥â ¨ § ªàë¢ ¥â ®ª®, ¥â - ¥ á®åà ï¥â ¨ ¢ë室¨â, ™¥«çñª ¯® à ¡®ç¥© ®¡«
|
||||||
|
áâ¨
|
||||||
|
â ©¨¯ ¤ íª¢¨¢ «¥â¥ ª®¯ª¥ ®â¬¥ , ª®â®à®© ¥âã ;), ¯à ¢¤ ¥á«¨ ®ª® á®®¡é¥¨
|
||||||
|
ï
|
||||||
|
¯¥à¥¬¥áâ¨âì, £« ¢®¥ ®ª® ¥ ®¡®¢«ï¥âáï. <20>â® ¢ë§¢ ® "ᯥæ¨ä¨ç¥áª¨¬" ª®¤®¬, â
|
||||||
|
ª
|
||||||
|
ª ª ¡®«¥¥ ¯à®á⮣® à¥è¥¨ï ï ¥ èñ«.
|
||||||
|
|
||||||
|
Ž ᯠᨡª å...
|
||||||
|
‚ᥬ ᯠᨡ ! <20> ¢«îè¨ã § ASCL, • «ï¢¨ã, Willow ¨ ¢á¥¬ á 襣® ä®à㬠¯®¬®éì.
|
||||||
|
|
||||||
|
Ž ¡ã¤ã饬...
|
||||||
|
¥á«¨ ¯®«ãç¨âáï, ¬®¦® ¡ã¤¥â ॠ«¨§®¢ âì ¯®¤¤¥à¦ªã BGI èà¨ä⮢... ¥éñ ¥ ᬮâ५
|
||||||
|
¨å ª®¤ -- áâà è®!
|
||||||
|
|
||||||
|
Šâ®, ¡«%?
|
||||||
|
DoomEd Archangel
|
||||||
|
archangel@mail.kz / meos-wall.narod.ru
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-= [ v 3.75a ------> v 3.6 ] =-
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
; project name: TINYPAD
|
||||||
|
; compiler: flat assmebler 1.52 alpha 3
|
||||||
|
; version: 3.75a
|
||||||
|
; last update: 24/03/2004
|
||||||
|
; maintained by: Ivan Poddubny
|
||||||
|
; e-mail: ivan-yar@bk.ru
|
||||||
|
;******************************************************************************
|
||||||
|
; HISTORY:
|
||||||
|
; 3.75a
|
||||||
|
; fixed converting char to upper case in read_string
|
||||||
|
; 3.75
|
||||||
|
; rewrote save_file from scratch; bugfix in loadfile;
|
||||||
|
; 3.74
|
||||||
|
; optimisation
|
||||||
|
; 3.73
|
||||||
|
; completly new load_file function
|
||||||
|
; 3.72
|
||||||
|
; speed++
|
||||||
|
; 3.71
|
||||||
|
; error beep
|
||||||
|
; 3.6,3.7:
|
||||||
|
; many bugs fixed
|
||||||
|
; simple toolbar
|
||||||
|
; compile, run applications from TINYPAD, all fasm output is in debug board
|
||||||
|
; TAB button
|
||||||
|
; auto-indent
|
||||||
|
; Ctrl+L - insert comment string
|
||||||
|
;******************************************************************************
|
||||||
|
; Memory 0x300000:
|
||||||
|
; stack 0x00eff0 - áâíª
|
||||||
|
; stack for help 0x00fff0 -
|
||||||
|
; stack for help 0x00fff0
|
8
programs/other/tinypad2/trunk/archive.txt
Normal file
8
programs/other/tinypad2/trunk/archive.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
„«ï ç¨ îé¨å à ¡®â âì á MeOS - ®¯¨á ¨¥ ä ©«®¢ ¢ í⮬ à娢¥:
|
||||||
|
|
||||||
|
tinypad - ᪮¬¯¨«¨à®¢ ë© ¨á¯®«ï¥¬ë© ä ©« MeOS
|
||||||
|
tinypad.asm - ¨áå®¤ë© ª®¤
|
||||||
|
ascl.inc - assembler small code library ®â <20> ¢«îè¨ …¢£¥¨ï
|
||||||
|
(äãªæ¨ï label § ¬¥¥ putlabel)
|
||||||
|
dialogs1.inc - ¤¨ «®£®¢ë¥ ®ª , messagebox'ë ¨ ¥ ®ç¥ì å®à®è¥¥ ¬¥î.
|
||||||
|
macros.inc - ⮦¥ § ¬¥ç ⥫ìë© ¡®à ¬ ªà®á®¢.
|
933
programs/other/tinypad2/trunk/ascl.inc
Normal file
933
programs/other/tinypad2/trunk/ascl.inc
Normal file
@ -0,0 +1,933 @@
|
|||||||
|
lang equ ru ; ru en fr ge fi
|
||||||
|
|
||||||
|
;
|
||||||
|
; Assembler
|
||||||
|
; SMALL
|
||||||
|
; CODE
|
||||||
|
; Libary
|
||||||
|
;
|
||||||
|
; Ver 0.14 By Pavlushin Evgeni (RUSSIA)
|
||||||
|
; www.waptap@mail.ru
|
||||||
|
|
||||||
|
;Please compile aplications on FASM ver1.54 or higer!!!
|
||||||
|
|
||||||
|
;InfoList
|
||||||
|
;0.01 scank,putpix,puttxt
|
||||||
|
;0.02 label,random,colors
|
||||||
|
;0.03 window,startwd,endwd,attributes
|
||||||
|
;0.04 close,delay,scevent ~30.04.2004
|
||||||
|
;0.05 small random, ~04.05.2004
|
||||||
|
;0.06 wtevent ~09.05.2004
|
||||||
|
;0.07 timeevent ~23.05.2004
|
||||||
|
;0.08 txtput ~14.06.2004
|
||||||
|
;0.09 opendialog,savedialog ~20.06.2004
|
||||||
|
;0.10 wordstoreg by halyavin, add at ~30.08.2004
|
||||||
|
; random bug deleted eax is use.
|
||||||
|
;0.11 loadfile from me +puttxt bug del ~07.09.2004
|
||||||
|
;0.12 open/save dialog ~13.09.2004
|
||||||
|
;0.13 dialogs bugs deleted
|
||||||
|
;0.14 drawlbut ~03.10.2004
|
||||||
|
;0.15 extendet label!
|
||||||
|
|
||||||
|
; LOADFILE
|
||||||
|
; (SYNTAX) LOADFILE 'full_path_to_file',file_load_area,file_temp_area
|
||||||
|
; (SAMPLE) LOADFILE '/rd/1/clock.bmp',load_area,temp_area
|
||||||
|
|
||||||
|
|
||||||
|
macro loadfile file_name,file_load_area,file_temp_area
|
||||||
|
{
|
||||||
|
local open,fileinfo,string
|
||||||
|
jmp open
|
||||||
|
fileinfo:
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
dd 1
|
||||||
|
dd file_load_area
|
||||||
|
dd file_temp_area
|
||||||
|
string:
|
||||||
|
db file_name,0
|
||||||
|
open:
|
||||||
|
mov dword [fileinfo+8],1 ; how many blocks to read (1)
|
||||||
|
mov eax,58
|
||||||
|
mov ebx,fileinfo
|
||||||
|
int 0x40
|
||||||
|
mov eax,[file_load_area+2]
|
||||||
|
shr eax,9 ; ¯®¤¥«¨¬ 512 ¨ ¯à¨¡ ¢¨¬ 1 - ¯®«ã稬 ç¨á«® ¡«®ª®¢
|
||||||
|
inc eax
|
||||||
|
mov dword [fileinfo+8],eax
|
||||||
|
mov eax,58
|
||||||
|
mov ebx,fileinfo
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
;***********************************************************
|
||||||
|
macro savefile file_name,file_save_area,file_temp_area,fsize
|
||||||
|
{
|
||||||
|
local save,fileinfo,string ;,counter00
|
||||||
|
jmp save
|
||||||
|
;counter00 dd 0
|
||||||
|
fileinfo:
|
||||||
|
dd 1
|
||||||
|
dd 0
|
||||||
|
dd fsize ;counter00
|
||||||
|
dd file_save_area
|
||||||
|
dd file_temp_area
|
||||||
|
string:
|
||||||
|
db file_name,0
|
||||||
|
save:
|
||||||
|
;xor edi,edi
|
||||||
|
; sub edi,file_save_area ; calculate dump size
|
||||||
|
; mov edx,edi
|
||||||
|
;mov [counter00],edi
|
||||||
|
; mov dword [fileinfo+8],1 ; how many blocks to write (1)
|
||||||
|
; mov eax,58
|
||||||
|
; mov ebx,fileinfo
|
||||||
|
; int 0x40
|
||||||
|
; mov eax,[file_load_area+2]
|
||||||
|
; shr eax,9 ; ¯®¤¥«¨¬ 512 ¨ ¯à¨¡ ¢¨¬ 1 - ¯®«ã稬 ç¨á«® ¡«®ª®¢
|
||||||
|
; inc eax
|
||||||
|
; mov dword [fileinfo+8],eax
|
||||||
|
mov eax,58
|
||||||
|
mov ebx,fileinfo
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
;***********************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;macro wordstoreg reg,hiword,loword
|
||||||
|
;{
|
||||||
|
;if hiword eqtype 0 & loword eqtype 0
|
||||||
|
; mov reg,dword hiword*65536+loword
|
||||||
|
;else if hiword eqtype 12 & loword eqtype eax
|
||||||
|
; mov reg,dword hiword*65536
|
||||||
|
; add reg,dword loword
|
||||||
|
;else if hiword eqtype 12 & loword eqtype [123]
|
||||||
|
; mov reg,dword hiword*65536
|
||||||
|
; add reg,dword loword
|
||||||
|
;else
|
||||||
|
; mov reg,dword hiword
|
||||||
|
; shl reg,16
|
||||||
|
; add reg,dword loword
|
||||||
|
;end if
|
||||||
|
;}
|
||||||
|
|
||||||
|
macro dword2reg reg,doubleword
|
||||||
|
{
|
||||||
|
if doubleword eq
|
||||||
|
; not changes
|
||||||
|
else
|
||||||
|
mov reg,dword doubleword
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro words2reg reg,hiword,lowword
|
||||||
|
{
|
||||||
|
if hiword eq
|
||||||
|
if lowword eq
|
||||||
|
; not changes
|
||||||
|
else
|
||||||
|
if lowword eqtype 12
|
||||||
|
and reg,dword 0xffff0000
|
||||||
|
add reg,dword lowword
|
||||||
|
else
|
||||||
|
and reg,dword 0xffff0000
|
||||||
|
add reg,dword lowword
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
if lowword eq
|
||||||
|
if hiword eqtype 12
|
||||||
|
and reg,dword 0x0000ffff
|
||||||
|
add reg,dword hiword*65536
|
||||||
|
else
|
||||||
|
shl reg,16
|
||||||
|
add reg,dword hiword
|
||||||
|
ror reg,16
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
if lowword eqtype 12 & hiword eqtype 12
|
||||||
|
if lowword eq 0 & hiword eq 0
|
||||||
|
xor reg,reg
|
||||||
|
else
|
||||||
|
mov reg,dword hiword*65536+lowword
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
mov reg,dword hiword
|
||||||
|
shl reg,16
|
||||||
|
add reg,dword lowword
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; DRAW BUTTON with label
|
||||||
|
|
||||||
|
macro drawlbut x,y,xs,ys,text,id,bcolor,tcolor
|
||||||
|
{
|
||||||
|
local asd,lab
|
||||||
|
jmp asd
|
||||||
|
lab db text ;arg label
|
||||||
|
asd:
|
||||||
|
words2reg ebx,x,xs
|
||||||
|
words2reg ecx,y,ys
|
||||||
|
mov edx,id
|
||||||
|
mov esi,bcolor
|
||||||
|
mov eax,8
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,asd-lab ;calc size
|
||||||
|
mov ebx,6
|
||||||
|
mul ebx
|
||||||
|
mov esi,eax
|
||||||
|
|
||||||
|
mov eax,xs
|
||||||
|
sub eax,esi
|
||||||
|
shr eax,1
|
||||||
|
add eax,x
|
||||||
|
|
||||||
|
mov edx,ys
|
||||||
|
sub edx,7
|
||||||
|
shr edx,1
|
||||||
|
add edx,y
|
||||||
|
|
||||||
|
mov ebx,eax
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,edx
|
||||||
|
|
||||||
|
mov ecx,tcolor ;arg4 color
|
||||||
|
mov edx,lab
|
||||||
|
mov esi,asd-lab ;calc size
|
||||||
|
mov eax,4
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macro opendialog redproc,openoff,erroff,path
|
||||||
|
{
|
||||||
|
local new_d, get_loops, dlg_pid_get, DLGPID, num_of_proc
|
||||||
|
local run_fileinfo, param
|
||||||
|
local getmesloop, loox, mred, mkey, mbutton, mgetmes
|
||||||
|
local dlg_is_work, ready, procinfo
|
||||||
|
;
|
||||||
|
; STEP 1 Run SYSXTREE with parametrs MYPID 4 bytes in dec,
|
||||||
|
; 1 byte space, 1 byte type of dialog (O - Open ,S - Save)
|
||||||
|
;
|
||||||
|
|
||||||
|
cld
|
||||||
|
;; mov esi,path
|
||||||
|
mov edi,path
|
||||||
|
mov eax,0
|
||||||
|
mov ecx,200
|
||||||
|
rep stosb
|
||||||
|
|
||||||
|
;mov [get_loops],0
|
||||||
|
mov [dlg_pid_get],0
|
||||||
|
|
||||||
|
; Get my PID in dec format 4 bytes
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,-1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; convert eax bin to param dec
|
||||||
|
mov eax,dword [procinfo+30] ;offset of myPID
|
||||||
|
mov edi,param+4-1 ;offset to 4 bytes
|
||||||
|
mov ecx,4
|
||||||
|
mov ebx,10
|
||||||
|
cld
|
||||||
|
new_d:
|
||||||
|
xor edx,edx
|
||||||
|
div ebx
|
||||||
|
add dl,'0'
|
||||||
|
mov [edi],dl
|
||||||
|
dec edi
|
||||||
|
loop new_d
|
||||||
|
|
||||||
|
; wirite 1 byte space to param
|
||||||
|
mov [param+4],byte 32 ;Space for next parametr
|
||||||
|
; and 1 byte type of dialog to param
|
||||||
|
mov [param+5],byte 'O' ;Get Open dialog (Use 'S' for Save dialog)
|
||||||
|
|
||||||
|
;
|
||||||
|
; STEP2 prepare IPC area for get messages
|
||||||
|
;
|
||||||
|
|
||||||
|
; prepare IPC area
|
||||||
|
mov [path],dword 0
|
||||||
|
mov [path+4],dword 8
|
||||||
|
|
||||||
|
; define IPC memory
|
||||||
|
mov eax,60
|
||||||
|
mov ebx,1 ; define IPC
|
||||||
|
mov ecx,path ; offset of area
|
||||||
|
mov edx,150 ; size 150 bytes
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; change wanted events list 7-bit IPC event
|
||||||
|
mov eax,40
|
||||||
|
mov ebx,01000111b
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
;
|
||||||
|
; STEP 3 run SYSTEM XTREE with parameters
|
||||||
|
;
|
||||||
|
|
||||||
|
mov eax,58
|
||||||
|
mov ebx,run_fileinfo
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
call redproc
|
||||||
|
|
||||||
|
mov [get_loops],0
|
||||||
|
getmesloop:
|
||||||
|
mov eax,23
|
||||||
|
mov ebx,50 ;0.5 sec
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp eax,1
|
||||||
|
je mred
|
||||||
|
cmp eax,2
|
||||||
|
je mkey
|
||||||
|
cmp eax,3
|
||||||
|
je mbutton
|
||||||
|
cmp eax,7
|
||||||
|
je mgetmes
|
||||||
|
|
||||||
|
; Get number of procces
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,-1
|
||||||
|
mov eax,9
|
||||||
|
int 0x40
|
||||||
|
mov ebp,eax
|
||||||
|
|
||||||
|
loox:
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,ebp
|
||||||
|
int 0x40
|
||||||
|
mov eax,[DLGPID]
|
||||||
|
cmp [procinfo+30],eax ;IF Dialog find
|
||||||
|
je dlg_is_work ;jmp to dlg_is_work
|
||||||
|
dec ebp
|
||||||
|
jnz loox
|
||||||
|
|
||||||
|
jmp erroff
|
||||||
|
|
||||||
|
dlg_is_work:
|
||||||
|
cmp [procinfo+50],word 9 ;If slot state 9 - dialog is terminated
|
||||||
|
je erroff ;TESTODP2 terminated too
|
||||||
|
|
||||||
|
cmp [dlg_pid_get],dword 1
|
||||||
|
je getmesloop
|
||||||
|
inc [get_loops]
|
||||||
|
cmp [get_loops],4 ;2 sec if DLG_PID not get, TESTOP2 terminated
|
||||||
|
jae erroff
|
||||||
|
jmp getmesloop
|
||||||
|
|
||||||
|
mred:
|
||||||
|
call redproc
|
||||||
|
jmp getmesloop
|
||||||
|
mkey:
|
||||||
|
mov eax,2
|
||||||
|
int 0x40 ; read (eax=2)
|
||||||
|
jmp getmesloop
|
||||||
|
mbutton:
|
||||||
|
mov eax,17 ; get id
|
||||||
|
int 0x40
|
||||||
|
cmp ah,1 ; button id=1 ?
|
||||||
|
jne getmesloop
|
||||||
|
mov eax,-1 ; close this program
|
||||||
|
int 0x40
|
||||||
|
mgetmes:
|
||||||
|
|
||||||
|
; If dlg_pid_get then second message get jmp to still
|
||||||
|
cmp [dlg_pid_get],dword 1
|
||||||
|
je ready
|
||||||
|
|
||||||
|
; First message is number of PID SYSXTREE dialog
|
||||||
|
|
||||||
|
; convert PID dec to PID bin
|
||||||
|
movzx eax,byte [path+16]
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+1]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+2]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+3]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
mov [DLGPID],eax
|
||||||
|
|
||||||
|
; Claear and prepare IPC area for next message
|
||||||
|
mov [path],dword 0
|
||||||
|
mov [path+4],dword 8
|
||||||
|
mov [path+8],dword 0
|
||||||
|
mov [path+12],dword 0
|
||||||
|
mov [path+16],dword 0
|
||||||
|
|
||||||
|
; Set dlg_pid_get for get next message
|
||||||
|
mov [dlg_pid_get],dword 1
|
||||||
|
call redproc ;show DLG_PID
|
||||||
|
jmp getmesloop
|
||||||
|
|
||||||
|
ready:
|
||||||
|
;
|
||||||
|
; The second message get
|
||||||
|
; Second message is 100 bytes path to SAVE/OPEN file
|
||||||
|
; shl path string on 16 bytes
|
||||||
|
;
|
||||||
|
cld
|
||||||
|
mov esi,path+16
|
||||||
|
mov edi,path
|
||||||
|
mov ecx,200
|
||||||
|
rep movsb
|
||||||
|
mov [edi],byte 0
|
||||||
|
|
||||||
|
jmp openoff
|
||||||
|
|
||||||
|
|
||||||
|
; DATA AREA
|
||||||
|
get_loops dd 0
|
||||||
|
dlg_pid_get dd 0
|
||||||
|
DLGPID dd 0
|
||||||
|
|
||||||
|
param:
|
||||||
|
dd 0 ; My dec PID
|
||||||
|
dd 0,0 ; Type of dialog
|
||||||
|
|
||||||
|
run_fileinfo:
|
||||||
|
dd 16
|
||||||
|
dd 0
|
||||||
|
dd param
|
||||||
|
dd 0
|
||||||
|
dd procinfo ; 0x10000
|
||||||
|
;run_filepath
|
||||||
|
db '/RD/1/SYSXTREE',0
|
||||||
|
|
||||||
|
procinfo:
|
||||||
|
times 1024 db 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macro savedialog redproc,openoff,erroff,path
|
||||||
|
{
|
||||||
|
local new_d, get_loops, dlg_pid_get, DLGPID, num_of_proc
|
||||||
|
local run_fileinfo, run_filepath, param
|
||||||
|
local getmesloop, loox, mred, mkey, mbutton, mgetmes
|
||||||
|
local dlg_is_work, ready, procinfo
|
||||||
|
;
|
||||||
|
; STEP 1 Run SYSXTREE with parametrs MYPID 4 bytes in dec,
|
||||||
|
; 1 byte space, 1 byte type of dialog (O - Open ,S - Save)
|
||||||
|
;
|
||||||
|
|
||||||
|
cld
|
||||||
|
;; mov esi,path
|
||||||
|
mov edi,path
|
||||||
|
mov eax,0
|
||||||
|
mov ecx,200
|
||||||
|
rep stosb
|
||||||
|
|
||||||
|
;mov [get_loops],0
|
||||||
|
mov [dlg_pid_get],0
|
||||||
|
|
||||||
|
; Get my PID in dec format 4 bytes
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,-1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; convert eax bin to param dec
|
||||||
|
mov eax,dword [procinfo+30] ;offset of myPID
|
||||||
|
mov edi,param+4-1 ;offset to 4 bytes
|
||||||
|
mov ecx,4
|
||||||
|
mov ebx,10
|
||||||
|
cld
|
||||||
|
new_d:
|
||||||
|
xor edx,edx
|
||||||
|
div ebx
|
||||||
|
add dl,'0'
|
||||||
|
mov [edi],dl
|
||||||
|
dec edi
|
||||||
|
loop new_d
|
||||||
|
|
||||||
|
; wirite 1 byte space to param
|
||||||
|
mov [param+4],byte 32 ;Space for next parametr
|
||||||
|
; and 1 byte type of dialog to param
|
||||||
|
mov [param+5],byte 'S' ;Get Open dialog (Use 'S' for Save dialog)
|
||||||
|
|
||||||
|
;
|
||||||
|
; STEP2 prepare IPC area for get messages
|
||||||
|
;
|
||||||
|
|
||||||
|
; prepare IPC area
|
||||||
|
mov [path],dword 0
|
||||||
|
mov [path+4],dword 8
|
||||||
|
|
||||||
|
; define IPC memory
|
||||||
|
mov eax,60
|
||||||
|
mov ebx,1 ; define IPC
|
||||||
|
mov ecx,path ; offset of area
|
||||||
|
mov edx,150 ; size 150 bytes
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; change wanted events list 7-bit IPC event
|
||||||
|
mov eax,40
|
||||||
|
mov ebx,01000111b
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
;
|
||||||
|
; STEP 3 run SYSTEM XTREE with parameters
|
||||||
|
;
|
||||||
|
|
||||||
|
mov eax,58
|
||||||
|
mov ebx,run_fileinfo
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
call redproc
|
||||||
|
|
||||||
|
mov [get_loops],0
|
||||||
|
getmesloop:
|
||||||
|
mov eax,23
|
||||||
|
mov ebx,50 ;0.5 sec
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp eax,1
|
||||||
|
je mred
|
||||||
|
cmp eax,2
|
||||||
|
je mkey
|
||||||
|
cmp eax,3
|
||||||
|
je mbutton
|
||||||
|
cmp eax,7
|
||||||
|
je mgetmes
|
||||||
|
|
||||||
|
; Get number of procces
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,-1
|
||||||
|
mov eax,9
|
||||||
|
int 0x40
|
||||||
|
mov ebp,eax
|
||||||
|
|
||||||
|
loox:
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,procinfo
|
||||||
|
mov ecx,ebp
|
||||||
|
int 0x40
|
||||||
|
mov eax,[DLGPID]
|
||||||
|
cmp [procinfo+30],eax ;IF Dialog find
|
||||||
|
je dlg_is_work ;jmp to dlg_is_work
|
||||||
|
dec ebp
|
||||||
|
jnz loox
|
||||||
|
|
||||||
|
jmp erroff
|
||||||
|
|
||||||
|
dlg_is_work:
|
||||||
|
cmp [procinfo+50],word 9 ;If slot state 9 - dialog is terminated
|
||||||
|
je erroff ;TESTODP2 terminated too
|
||||||
|
|
||||||
|
cmp [dlg_pid_get],dword 1
|
||||||
|
je getmesloop
|
||||||
|
inc [get_loops]
|
||||||
|
cmp [get_loops],4 ;2 sec if DLG_PID not get, TESTOP2 terminated
|
||||||
|
jae erroff
|
||||||
|
jmp getmesloop
|
||||||
|
|
||||||
|
mred:
|
||||||
|
call redproc
|
||||||
|
jmp getmesloop
|
||||||
|
mkey:
|
||||||
|
mov eax,2
|
||||||
|
int 0x40 ; read (eax=2)
|
||||||
|
jmp getmesloop
|
||||||
|
mbutton:
|
||||||
|
mov eax,17 ; get id
|
||||||
|
int 0x40
|
||||||
|
cmp ah,1 ; button id=1 ?
|
||||||
|
jne getmesloop
|
||||||
|
mov eax,-1 ; close this program
|
||||||
|
int 0x40
|
||||||
|
mgetmes:
|
||||||
|
|
||||||
|
; If dlg_pid_get then second message get jmp to still
|
||||||
|
cmp [dlg_pid_get],dword 1
|
||||||
|
je ready
|
||||||
|
|
||||||
|
; First message is number of PID SYSXTREE dialog
|
||||||
|
|
||||||
|
; convert PID dec to PID bin
|
||||||
|
movzx eax,byte [path+16]
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+1]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+2]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
imul eax,10
|
||||||
|
movzx ebx,byte [path+16+3]
|
||||||
|
add eax,ebx
|
||||||
|
sub eax,48
|
||||||
|
mov [DLGPID],eax
|
||||||
|
|
||||||
|
; Claear and prepare IPC area for next message
|
||||||
|
mov [path],dword 0
|
||||||
|
mov [path+4],dword 8
|
||||||
|
mov [path+8],dword 0
|
||||||
|
mov [path+12],dword 0
|
||||||
|
mov [path+16],dword 0
|
||||||
|
|
||||||
|
; Set dlg_pid_get for get next message
|
||||||
|
mov [dlg_pid_get],dword 1
|
||||||
|
call redproc ;show DLG_PID
|
||||||
|
jmp getmesloop
|
||||||
|
|
||||||
|
ready:
|
||||||
|
;
|
||||||
|
; The second message get
|
||||||
|
; Second message is 100 bytes path to SAVE/OPEN file
|
||||||
|
; shl path string on 16 bytes
|
||||||
|
;
|
||||||
|
cld
|
||||||
|
mov esi,path+16
|
||||||
|
mov edi,path
|
||||||
|
mov ecx,200
|
||||||
|
rep movsb
|
||||||
|
mov [edi],byte 0
|
||||||
|
|
||||||
|
jmp openoff
|
||||||
|
|
||||||
|
|
||||||
|
; DATA AREA
|
||||||
|
get_loops dd 0
|
||||||
|
dlg_pid_get dd 0
|
||||||
|
DLGPID dd 0
|
||||||
|
|
||||||
|
param:
|
||||||
|
dd 0 ; My dec PID
|
||||||
|
dd 0,0 ; Type of dialog
|
||||||
|
|
||||||
|
run_fileinfo:
|
||||||
|
dd 16
|
||||||
|
dd 0
|
||||||
|
dd param
|
||||||
|
dd 0
|
||||||
|
dd procinfo
|
||||||
|
;run_filepath:
|
||||||
|
db '/RD/1/SYSXTREE',0
|
||||||
|
|
||||||
|
procinfo:
|
||||||
|
times 1024 db 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; RANDOM - generate random count (small)
|
||||||
|
; (SYNTAX) RANDOM MaxCount,OutArgument
|
||||||
|
; (SAMPLE) RANDOM 10000,eax
|
||||||
|
; ( NOTE ) Maxint<65536 ; use random 65536,eax for more combinations
|
||||||
|
|
||||||
|
randomuse = 0
|
||||||
|
|
||||||
|
macro random arg1,arg2
|
||||||
|
{
|
||||||
|
local rxproc
|
||||||
|
randomuse = randomuse + 1
|
||||||
|
|
||||||
|
jmp rxproc
|
||||||
|
|
||||||
|
if defined randomuse & randomuse = 1
|
||||||
|
randomproc:
|
||||||
|
jmp rnj
|
||||||
|
rsx1 dw 0x4321
|
||||||
|
rsx2 dw 0x1234
|
||||||
|
rnj:
|
||||||
|
; mov eax,arg1
|
||||||
|
push bx
|
||||||
|
push cx
|
||||||
|
push dx
|
||||||
|
push si
|
||||||
|
push di
|
||||||
|
mov cx,ax
|
||||||
|
mov ax,word ptr rsx1
|
||||||
|
mov bx,word ptr rsx2
|
||||||
|
mov si,ax
|
||||||
|
mov di,bx
|
||||||
|
mov dl,ah
|
||||||
|
mov ah,al
|
||||||
|
mov al,bh
|
||||||
|
mov bh,bl
|
||||||
|
xor bl,bl
|
||||||
|
rcr dl,1
|
||||||
|
rcr ax,1
|
||||||
|
rcr bx,1
|
||||||
|
add bx,di
|
||||||
|
adc ax,si
|
||||||
|
add bx,0x62e9
|
||||||
|
adc ax,0x3619
|
||||||
|
mov word ptr rsx1,bx
|
||||||
|
mov word ptr rsx2,ax
|
||||||
|
xor dx,dx
|
||||||
|
cmp ax,0
|
||||||
|
je nodiv
|
||||||
|
cmp cx,0
|
||||||
|
je nodiv
|
||||||
|
div cx
|
||||||
|
nodiv:
|
||||||
|
mov ax,dx
|
||||||
|
pop di
|
||||||
|
pop si
|
||||||
|
pop dx
|
||||||
|
pop cx
|
||||||
|
pop bx
|
||||||
|
and eax,0000ffffh
|
||||||
|
; mov arg2,0
|
||||||
|
; mov arg2,eax
|
||||||
|
ret
|
||||||
|
end if
|
||||||
|
|
||||||
|
rxproc:
|
||||||
|
mov eax,arg1
|
||||||
|
call randomproc
|
||||||
|
mov arg2,eax
|
||||||
|
}
|
||||||
|
|
||||||
|
macro scank
|
||||||
|
{
|
||||||
|
mov eax,10
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
macro putpix x,y,color
|
||||||
|
{
|
||||||
|
mov ebx,x
|
||||||
|
mov ecx,y
|
||||||
|
mov edx,color
|
||||||
|
mov eax,1
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
macro puttxt x,y,offs,size,color
|
||||||
|
{
|
||||||
|
; mov ebx,x
|
||||||
|
; shl ebx,16
|
||||||
|
; add ebx,y
|
||||||
|
words2reg ebx,x,y
|
||||||
|
|
||||||
|
dword2reg ecx,color
|
||||||
|
dword2reg edx,offs
|
||||||
|
dword2reg esi,size
|
||||||
|
|
||||||
|
; mov ecx,color
|
||||||
|
; mov edx,offs
|
||||||
|
; mov esi,size
|
||||||
|
mov eax,4
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
macro outcount data, x, y, color, numtype
|
||||||
|
{
|
||||||
|
mov ecx,data
|
||||||
|
mov ebx,numtype
|
||||||
|
mov bl,0
|
||||||
|
; mov edx,x*65536+y
|
||||||
|
words2reg edx,x,y
|
||||||
|
mov esi,color
|
||||||
|
mov eax,47
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
; SCEVENT - Scan event
|
||||||
|
|
||||||
|
macro scevent red,key,but
|
||||||
|
{
|
||||||
|
mov eax,11
|
||||||
|
int 0x40
|
||||||
|
dec eax
|
||||||
|
jz red
|
||||||
|
dec eax
|
||||||
|
jz key
|
||||||
|
dec eax
|
||||||
|
jz but
|
||||||
|
}
|
||||||
|
|
||||||
|
; WTEVENT - Wait event
|
||||||
|
|
||||||
|
macro wtevent red,key,but
|
||||||
|
{
|
||||||
|
mov eax,10
|
||||||
|
int 0x40
|
||||||
|
dec eax
|
||||||
|
jz red
|
||||||
|
dec eax
|
||||||
|
jz key
|
||||||
|
dec eax
|
||||||
|
jz but
|
||||||
|
}
|
||||||
|
|
||||||
|
; TIMEEVENT - Wite for event with timeout
|
||||||
|
|
||||||
|
macro timeevent xfps,noevent,red,key,but
|
||||||
|
{
|
||||||
|
mov eax,23
|
||||||
|
mov ebx,xfps
|
||||||
|
int 0x40
|
||||||
|
cmp eax,0
|
||||||
|
je noevent
|
||||||
|
dec eax
|
||||||
|
jz red
|
||||||
|
dec eax
|
||||||
|
jz key
|
||||||
|
dec eax
|
||||||
|
jz but
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; CLOSE - Close program
|
||||||
|
|
||||||
|
macro close
|
||||||
|
{
|
||||||
|
mov eax,-1
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
; DELAY - Create delay 1/100 sec
|
||||||
|
; (SYNTAX) Delay time
|
||||||
|
; (SAMPLE) Delay 100 ;delay 2 sec 1/100*200=2 sec
|
||||||
|
|
||||||
|
macro delay arg1
|
||||||
|
{
|
||||||
|
mov eax,5
|
||||||
|
mov ebx,arg1
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
; WINDOW - Draw window
|
||||||
|
; (SYNTAX) WINDOW Xstart,Ystart,'Text',Color
|
||||||
|
; (SAMPLE) WINDOW 10,10,640+8,480+24,window_Skinned
|
||||||
|
|
||||||
|
macro window arg1,arg2,arg3,arg4,arg5
|
||||||
|
{
|
||||||
|
; mov ebx,arg1*65536+arg3
|
||||||
|
; mov ecx,arg2*65536+arg4
|
||||||
|
words2reg ebx,arg1,arg3
|
||||||
|
words2reg ecx,arg2,arg4
|
||||||
|
mov edx,arg5
|
||||||
|
mov eax,0
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7
|
||||||
|
{
|
||||||
|
; mov ebx,arg1*65536+arg3
|
||||||
|
; mov ecx,arg2*65536+arg4
|
||||||
|
words2reg ebx,arg1,arg3
|
||||||
|
words2reg ecx,arg2,arg4
|
||||||
|
mov edx,arg5
|
||||||
|
mov esi,arg6
|
||||||
|
mov edi,arg7
|
||||||
|
mov eax,0
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; STARTWD - Start of window draw
|
||||||
|
|
||||||
|
macro startwd
|
||||||
|
{
|
||||||
|
mov eax,12
|
||||||
|
mov ebx,1
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
; ENDWD - End window draw
|
||||||
|
|
||||||
|
macro endwd
|
||||||
|
{
|
||||||
|
mov eax,12
|
||||||
|
mov ebx,2
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
; LABEL - Put text to frame
|
||||||
|
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color
|
||||||
|
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big
|
||||||
|
|
||||||
|
macro putlabel arg1,arg2,arg3,arg4
|
||||||
|
{
|
||||||
|
local asd,lab
|
||||||
|
jmp asd
|
||||||
|
lab db arg3 ;arg label
|
||||||
|
asd:
|
||||||
|
; mov ebx,arg1 ;arg1=y arg2=x
|
||||||
|
; shl ebx,16
|
||||||
|
; add ebx,arg2
|
||||||
|
|
||||||
|
words2reg ebx,arg1,arg2
|
||||||
|
|
||||||
|
dword2reg ecx,arg4
|
||||||
|
|
||||||
|
mov edx,lab
|
||||||
|
mov esi,asd-lab ;calc size
|
||||||
|
mov eax,4
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
;Key's
|
||||||
|
key_Up equ 178
|
||||||
|
key_Down equ 177
|
||||||
|
key_Right equ 179
|
||||||
|
key_Left equ 176
|
||||||
|
key_Esc equ 27
|
||||||
|
key_Space equ 32
|
||||||
|
key_Enter equ 13
|
||||||
|
key_Bspace equ 8
|
||||||
|
key_F1 equ 50
|
||||||
|
key_F2 equ 51
|
||||||
|
key_F3 equ 52
|
||||||
|
key_F4 equ 53
|
||||||
|
key_F5 equ 54
|
||||||
|
key_F6 equ 55
|
||||||
|
key_F7 equ 56
|
||||||
|
key_F8 equ 57
|
||||||
|
key_F9 equ 48
|
||||||
|
key_F10 equ 49
|
||||||
|
key_F11 equ 68
|
||||||
|
key_F12 equ 255
|
||||||
|
key_Home equ 180
|
||||||
|
key_End equ 181
|
||||||
|
key_PgUp equ 184
|
||||||
|
key_PgDown equ 183
|
||||||
|
|
||||||
|
;Attributes
|
||||||
|
|
||||||
|
;Window Attributes
|
||||||
|
window_Skinned equ 0x03000000
|
||||||
|
window_Type2 equ 0x02000000
|
||||||
|
window_Type1 equ 0x00000000
|
||||||
|
window_Reserve equ 0x01000000
|
||||||
|
|
||||||
|
;Font Attributes
|
||||||
|
font_Big equ 0x10000000
|
||||||
|
|
||||||
|
;Colors
|
||||||
|
cl_White equ 0x00ffffff
|
||||||
|
cl_Black equ 0x00000000
|
||||||
|
cl_Grey equ 0x00888888
|
||||||
|
cl_Red equ 0x00ff0000
|
||||||
|
cl_Lime equ 0x0000ff00
|
||||||
|
cl_Green equ 0x0000af00
|
||||||
|
cl_Blue equ 0x000000ff
|
||||||
|
cl_Purple equ 0x008080ff
|
||||||
|
cl_Violet equ 0x008040ff
|
||||||
|
cl_Cyan equ 0x0040e0ff
|
4
programs/other/tinypad2/trunk/build_en.bat
Normal file
4
programs/other/tinypad2/trunk/build_en.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
@erase lang.inc
|
||||||
|
@echo lang fix en >lang.inc
|
||||||
|
@fasm tinypad2.asm tinypad2
|
||||||
|
@pause
|
4
programs/other/tinypad2/trunk/build_ru.bat
Normal file
4
programs/other/tinypad2/trunk/build_ru.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
@erase lang.inc
|
||||||
|
@echo lang fix ru >lang.inc
|
||||||
|
@fasm tinypad2.asm tinypad2
|
||||||
|
@pause
|
597
programs/other/tinypad2/trunk/dialogs1.inc
Normal file
597
programs/other/tinypad2/trunk/dialogs1.inc
Normal file
@ -0,0 +1,597 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ;
|
||||||
|
; DIALOGS1.INC ;
|
||||||
|
; ;
|
||||||
|
; COMPILE WITH FASM for MENUET ;
|
||||||
|
; ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
menus dd 3 ; number of menus
|
||||||
|
m_x dd 0x5 ; x start
|
||||||
|
m_y dd 20 ; y start
|
||||||
|
m_xs dd 290 ; x size
|
||||||
|
m_ys dd 14 ; y size
|
||||||
|
g_stack dd 0xf000 ; thread stack - required
|
||||||
|
|
||||||
|
|
||||||
|
menu:; AB C D E F G
|
||||||
|
|
||||||
|
db '*D FILE +Save File +Load File +- +Quit '
|
||||||
|
db '*B EDIT +Copy +Paste '
|
||||||
|
db '*B HELP +Setup +About.. '
|
||||||
|
db '@' ; end mark
|
||||||
|
|
||||||
|
; A : Data type '*' -> New menu , '+' -> menu selection
|
||||||
|
; B : Number of selections in menu (A+)
|
||||||
|
; C : Menu header text
|
||||||
|
; D-G : Menu selection text
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;
|
||||||
|
; DATA BELOW IS FOR DIALOGS1.INC INTERNALS
|
||||||
|
|
||||||
|
menu_action dd '----'
|
||||||
|
|
||||||
|
window_on db 0
|
||||||
|
|
||||||
|
g_n dd -1
|
||||||
|
g_x dd 0x0
|
||||||
|
g_t dd 0x0
|
||||||
|
g_1 dd 0x0
|
||||||
|
g_l dd 0x0
|
||||||
|
closet db 0
|
||||||
|
|
||||||
|
table: times 1024 db 0
|
||||||
|
|
||||||
|
last_mouse dd 0x0
|
||||||
|
|
||||||
|
mo_x dd 0x0
|
||||||
|
mo_y dd 0x0
|
||||||
|
|
||||||
|
|
||||||
|
check_mouse:
|
||||||
|
|
||||||
|
pusha
|
||||||
|
|
||||||
|
cmp [window_on],1
|
||||||
|
je no_open
|
||||||
|
|
||||||
|
mov eax,37
|
||||||
|
mov ebx,2
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp [window_on],0
|
||||||
|
jne openw2
|
||||||
|
|
||||||
|
cmp eax,0
|
||||||
|
je no_open
|
||||||
|
|
||||||
|
openw2:
|
||||||
|
|
||||||
|
waitformouse:
|
||||||
|
|
||||||
|
mov eax,23
|
||||||
|
mov ebx,2
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp eax,0
|
||||||
|
jne no_open
|
||||||
|
|
||||||
|
mov eax,37
|
||||||
|
mov ebx,2
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp eax,0
|
||||||
|
jne waitformouse
|
||||||
|
|
||||||
|
|
||||||
|
mov eax,37
|
||||||
|
mov ebx,1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov esi,eax
|
||||||
|
|
||||||
|
shr eax,16
|
||||||
|
xor edx,edx
|
||||||
|
mov ebx,50
|
||||||
|
div ebx
|
||||||
|
mov edx,eax
|
||||||
|
cmp edx,[g_n]
|
||||||
|
je no_open
|
||||||
|
cmp edx,[menus]
|
||||||
|
jge no_open
|
||||||
|
mov eax,esi
|
||||||
|
|
||||||
|
and eax,0xffff
|
||||||
|
|
||||||
|
mov ebx,[m_y]
|
||||||
|
cmp eax,ebx
|
||||||
|
jbe no_open
|
||||||
|
add ebx,[m_ys]
|
||||||
|
cmp eax,ebx
|
||||||
|
jge no_open
|
||||||
|
|
||||||
|
cmp [window_on],0
|
||||||
|
je noww
|
||||||
|
|
||||||
|
mov [closet],1
|
||||||
|
mov ecx,100
|
||||||
|
waitm:
|
||||||
|
mov eax,5
|
||||||
|
mov ebx,1
|
||||||
|
int 0x40
|
||||||
|
dec ecx
|
||||||
|
jz no_open
|
||||||
|
cmp [window_on],0
|
||||||
|
jne waitm
|
||||||
|
noww:
|
||||||
|
|
||||||
|
mov eax,edx
|
||||||
|
jmp cll
|
||||||
|
|
||||||
|
no_open:
|
||||||
|
|
||||||
|
mov [last_mouse],esi
|
||||||
|
|
||||||
|
popa
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
cll:
|
||||||
|
|
||||||
|
mov [window_on],2
|
||||||
|
|
||||||
|
mov [g_n],eax
|
||||||
|
mov [g_x],96
|
||||||
|
mov [g_t],0
|
||||||
|
mov [g_1],1
|
||||||
|
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,table
|
||||||
|
mov ecx,-1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,[table+34]
|
||||||
|
mov [mo_x],eax
|
||||||
|
mov eax,[table+38]
|
||||||
|
mov [mo_y],eax
|
||||||
|
|
||||||
|
mov eax,51
|
||||||
|
mov ebx,1
|
||||||
|
mov ecx,alert_entry
|
||||||
|
mov edx,[g_stack]
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov [esp+28],dword 0 ; clear button entry
|
||||||
|
|
||||||
|
mov [menu_action],'MD '
|
||||||
|
|
||||||
|
check_gr:
|
||||||
|
|
||||||
|
popa
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
draw_menu:
|
||||||
|
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,table
|
||||||
|
mov ecx,-1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp [table+46],dword 30
|
||||||
|
jb drmr
|
||||||
|
|
||||||
|
mov eax,13 ; white background
|
||||||
|
mov ebx,[m_x]
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,[m_xs]
|
||||||
|
inc ebx
|
||||||
|
mov ecx,[m_y]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[m_ys]
|
||||||
|
mov edx,0xf0f8ff
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,38 ; egde lines
|
||||||
|
mov ebx,[m_x]
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,[m_x]
|
||||||
|
add ebx,[m_xs]
|
||||||
|
mov ecx,[m_y]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[m_y]
|
||||||
|
mov edx,0x000000
|
||||||
|
int 0x40
|
||||||
|
mov eax,38
|
||||||
|
mov ecx,[m_y]
|
||||||
|
add ecx,[m_ys]
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,[m_y]
|
||||||
|
add ecx,[m_ys]
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov esi,menu-1
|
||||||
|
mov edi,[m_x]
|
||||||
|
mov ebp,1
|
||||||
|
new_menu:
|
||||||
|
inc esi
|
||||||
|
|
||||||
|
cmp [esi],byte '*'
|
||||||
|
jne drmnl1
|
||||||
|
push esi
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,edi
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,[m_y]
|
||||||
|
add ebx,0x00050004
|
||||||
|
mov ecx,0x000000
|
||||||
|
mov edx,esi
|
||||||
|
add edx,3
|
||||||
|
mov esi,12
|
||||||
|
int 0x40 ; draw text
|
||||||
|
pop esi
|
||||||
|
add esi,2
|
||||||
|
add edi,50
|
||||||
|
inc ebp
|
||||||
|
|
||||||
|
drmnl1:
|
||||||
|
cmp [esi],byte '@'
|
||||||
|
jne new_menu
|
||||||
|
|
||||||
|
drmr:
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
alert_box:
|
||||||
|
|
||||||
|
; eax : x size - min 200
|
||||||
|
; ebx : pointer to ASCIIZ - max 128 character text
|
||||||
|
; ecx : button 1 id ( OK or YES )
|
||||||
|
; edx : button 2 id or zero ( NO )
|
||||||
|
|
||||||
|
|
||||||
|
cmp [window_on],0
|
||||||
|
jne alert_box_return
|
||||||
|
|
||||||
|
mov [window_on],1
|
||||||
|
|
||||||
|
cmp eax,100
|
||||||
|
jg size_ok
|
||||||
|
mov eax,100
|
||||||
|
size_ok:
|
||||||
|
|
||||||
|
mov [g_x],eax
|
||||||
|
mov [g_t],ebx
|
||||||
|
mov [g_1],ecx
|
||||||
|
|
||||||
|
mov ecx,0
|
||||||
|
new_search:
|
||||||
|
cmp [ebx],byte 0
|
||||||
|
je found_len
|
||||||
|
inc ebx
|
||||||
|
inc ecx
|
||||||
|
cmp ecx,128
|
||||||
|
jbe new_search
|
||||||
|
found_len:
|
||||||
|
mov [g_l],ecx
|
||||||
|
|
||||||
|
mov eax,51
|
||||||
|
mov ebx,1
|
||||||
|
mov ecx,alert_entry
|
||||||
|
mov edx,[g_stack]
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov [menu_action],'MA '
|
||||||
|
|
||||||
|
alert_box_return:
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
alert_entry:
|
||||||
|
|
||||||
|
call alert_draw_window
|
||||||
|
|
||||||
|
alert_still:
|
||||||
|
|
||||||
|
mov eax,23 ; wait here for event
|
||||||
|
mov ebx,1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp eax,1 ; redraw request ?
|
||||||
|
je alert_red
|
||||||
|
cmp eax,2 ; key in buffer ?
|
||||||
|
je alert_key
|
||||||
|
cmp eax,3 ; button in buffer ?
|
||||||
|
je alert_button
|
||||||
|
|
||||||
|
cmp [closet],0
|
||||||
|
jne ccc
|
||||||
|
|
||||||
|
mov eax,9
|
||||||
|
mov ebx,table
|
||||||
|
mov ecx,-1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp ax,[table+4]
|
||||||
|
je no_close
|
||||||
|
ccc:
|
||||||
|
mov [closet],0
|
||||||
|
mov [g_n],-1
|
||||||
|
mov [menu_action],'----'
|
||||||
|
mov [window_on],0
|
||||||
|
mov eax,-1
|
||||||
|
int 0x40
|
||||||
|
no_close:
|
||||||
|
|
||||||
|
jmp alert_still
|
||||||
|
|
||||||
|
alert_red: ; redraw
|
||||||
|
call alert_draw_window
|
||||||
|
jmp alert_still
|
||||||
|
|
||||||
|
alert_key: ; key
|
||||||
|
mov eax,2 ; just read it and ignore
|
||||||
|
int 0x40
|
||||||
|
jmp alert_still
|
||||||
|
|
||||||
|
alert_button: ; button
|
||||||
|
mov eax,17 ; get id
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
shr eax,8
|
||||||
|
cmp eax,3
|
||||||
|
jg no_action1
|
||||||
|
dec eax
|
||||||
|
shl eax,2
|
||||||
|
mov eax,dword [eax+rtext]
|
||||||
|
mov [menu_action],eax
|
||||||
|
jmp action_done
|
||||||
|
no_action1:
|
||||||
|
sub eax,16
|
||||||
|
add eax,65
|
||||||
|
shl eax,8
|
||||||
|
mov ebx,[g_n]
|
||||||
|
add ebx,65
|
||||||
|
add eax,ebx
|
||||||
|
mov [menu_action],eax
|
||||||
|
|
||||||
|
action_done:
|
||||||
|
|
||||||
|
mov [closet],0
|
||||||
|
mov [g_n],-1
|
||||||
|
mov [window_on],0
|
||||||
|
mov eax,-1 ; close this program
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
rtext db 'NO YES OK '
|
||||||
|
|
||||||
|
jmp alert_still
|
||||||
|
|
||||||
|
|
||||||
|
; *********************************************
|
||||||
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||||
|
; *********************************************
|
||||||
|
|
||||||
|
|
||||||
|
alert_draw_window:
|
||||||
|
|
||||||
|
|
||||||
|
mov eax,12 ; function 12:tell os about windowdraw
|
||||||
|
mov ebx,1 ; 1, start of draw
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp [window_on],2
|
||||||
|
jne no_win_type_2
|
||||||
|
|
||||||
|
mov edx,menu-1
|
||||||
|
mov ecx,[g_n]
|
||||||
|
add ecx,1
|
||||||
|
find_menu:
|
||||||
|
inc edx
|
||||||
|
cmp [edx],byte '*'
|
||||||
|
je menu_loop
|
||||||
|
jmp find_menu
|
||||||
|
menu_loop:
|
||||||
|
loop find_menu
|
||||||
|
movzx ebp,byte [edx+1]
|
||||||
|
sub ebp,64
|
||||||
|
push edx
|
||||||
|
; DRAW WINDOW
|
||||||
|
mov eax,0 ; function 0 : define and draw window
|
||||||
|
mov ebx,[g_n]
|
||||||
|
imul ebx,50
|
||||||
|
add ebx,[mo_x]
|
||||||
|
add ebx,[m_x]
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,[g_x]
|
||||||
|
mov ecx,[mo_y]
|
||||||
|
add ecx,[m_y]
|
||||||
|
add ecx,[m_ys]
|
||||||
|
shl ecx,16
|
||||||
|
mov edx,14
|
||||||
|
imul edx,ebp
|
||||||
|
add edx,7
|
||||||
|
add ecx,edx
|
||||||
|
mov edx,0x00ffffff ; color of work area RRGGBB,8->color gl
|
||||||
|
mov esi,0x00ffffff ; color of grab bar RRGGBB,8->color gl
|
||||||
|
mov edi,0x000000cc ; color of frames RRGGBB
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
pop edx
|
||||||
|
|
||||||
|
mov ebx,5*65536+7 ; draw info text with function 4
|
||||||
|
mov ecx,0x10000000
|
||||||
|
mov esi,12
|
||||||
|
mov ebp,16
|
||||||
|
no_d_found:
|
||||||
|
inc edx
|
||||||
|
cmp [edx],byte '*'
|
||||||
|
je d_drawed
|
||||||
|
cmp [edx],byte '@'
|
||||||
|
je d_drawed
|
||||||
|
cmp [edx],byte '+'
|
||||||
|
jne no_d_found
|
||||||
|
inc edx
|
||||||
|
pusha ; draw button
|
||||||
|
mov eax,8
|
||||||
|
mov ecx,ebx
|
||||||
|
mov ebx,[g_x]
|
||||||
|
add ebx,0x0000fffe
|
||||||
|
shl ecx,16
|
||||||
|
add ecx,0xfffc0000+14
|
||||||
|
mov edx,0x40000000
|
||||||
|
add edx,ebp
|
||||||
|
mov esi,0
|
||||||
|
int 0x40
|
||||||
|
popa
|
||||||
|
mov eax,4 ; draw text
|
||||||
|
int 0x40
|
||||||
|
inc ebp
|
||||||
|
add ebx,14
|
||||||
|
jmp no_d_found
|
||||||
|
d_drawed:
|
||||||
|
|
||||||
|
no_win_type_2:
|
||||||
|
|
||||||
|
|
||||||
|
cmp [window_on],1
|
||||||
|
jne no_win_1
|
||||||
|
|
||||||
|
mov eax,14 ; to middle of screen
|
||||||
|
int 0x40
|
||||||
|
mov ecx,eax
|
||||||
|
and ecx,0xffff
|
||||||
|
shr ecx,1
|
||||||
|
shr eax,1
|
||||||
|
mov ebx,[g_x]
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
sub eax,ebx
|
||||||
|
mov ebx,eax
|
||||||
|
|
||||||
|
mov eax,0 ; function 0 : define and draw window
|
||||||
|
mov bx,word [g_x]
|
||||||
|
sub ecx,80
|
||||||
|
shl ecx,16
|
||||||
|
mov cx,110 ; [y start] *65536 + [y size]
|
||||||
|
mov edx,0x02ffffff ; color of work area RRGGBB,8->color gl
|
||||||
|
mov esi,0x80d05050 ; color of grab bar RRGGBB,8->color gl
|
||||||
|
mov edi,0x00d05050 ; color of frames RRGGBB
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
|
||||||
|
mov eax,4 ; label
|
||||||
|
mov ebx,8*65536+8
|
||||||
|
mov ecx,0x10ddeeff
|
||||||
|
mov edx,alert_labelt1
|
||||||
|
mov esi,alert_label1len-alert_labelt1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,10*65536+43
|
||||||
|
mov ecx,0x10000000
|
||||||
|
mov edx,[g_t]
|
||||||
|
mov esi,[g_l]
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp [g_1],1
|
||||||
|
jne gadgets_no_1
|
||||||
|
|
||||||
|
mov eax,8
|
||||||
|
mov ebx,[g_x]
|
||||||
|
sub ebx,100
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,30*65536+40
|
||||||
|
mov ecx,75*65536+16
|
||||||
|
mov edx,3
|
||||||
|
mov esi,0x446688
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,[g_x]
|
||||||
|
sub ebx,100
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,31*65536+80
|
||||||
|
mov ecx,0x10ffffff
|
||||||
|
mov edx,alert_t2
|
||||||
|
mov esi,alert_t2len-alert_t2
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
gadgets_no_1:
|
||||||
|
|
||||||
|
cmp [g_1],2
|
||||||
|
jne gadgets_no_2
|
||||||
|
|
||||||
|
mov eax,8
|
||||||
|
mov ebx,[g_x]
|
||||||
|
sub ebx,100
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,0*65536+40
|
||||||
|
mov ecx,75*65536+16
|
||||||
|
mov edx,1
|
||||||
|
mov esi,0x446688
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,8
|
||||||
|
mov ebx,[g_x]
|
||||||
|
sub ebx,100
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,57*65536+40
|
||||||
|
mov ecx,75*65536+16
|
||||||
|
mov edx,2
|
||||||
|
mov esi,0x446688
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov eax,4
|
||||||
|
mov ebx,[g_x]
|
||||||
|
sub ebx,100
|
||||||
|
shr ebx,1
|
||||||
|
shl ebx,16
|
||||||
|
add ebx,1*65536+80
|
||||||
|
mov ecx,0x10ffffff
|
||||||
|
mov edx,alert_t1
|
||||||
|
mov esi,alert_t1len-alert_t1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
gadgets_no_2:
|
||||||
|
|
||||||
|
no_win_1:
|
||||||
|
|
||||||
|
mov eax,12 ; function 12:tell os about windowdraw
|
||||||
|
mov ebx,2 ; 2, end of draw
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
; DATA AREA
|
||||||
|
|
||||||
|
|
||||||
|
alert_t1:
|
||||||
|
db ' No Yes'
|
||||||
|
alert_t1len:
|
||||||
|
|
||||||
|
|
||||||
|
alert_t2:
|
||||||
|
db ' OK'
|
||||||
|
alert_t2len:
|
||||||
|
|
||||||
|
|
||||||
|
alert_labelt1:
|
||||||
|
db 'ALERT'
|
||||||
|
alert_label1len:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
266
programs/other/tinypad2/trunk/macros.inc
Normal file
266
programs/other/tinypad2/trunk/macros.inc
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
; new application structure
|
||||||
|
macro meos_app_start
|
||||||
|
{
|
||||||
|
use32
|
||||||
|
org 0x0
|
||||||
|
|
||||||
|
db 'MENUET01'
|
||||||
|
dd 0x01
|
||||||
|
dd __start
|
||||||
|
dd __end
|
||||||
|
dd __memory
|
||||||
|
dd __stack
|
||||||
|
|
||||||
|
if used __params & ~defined __params
|
||||||
|
dd __params
|
||||||
|
else
|
||||||
|
dd 0x0
|
||||||
|
end if
|
||||||
|
|
||||||
|
dd 0x0
|
||||||
|
}
|
||||||
|
MEOS_APP_START fix meos_app_start
|
||||||
|
|
||||||
|
macro code
|
||||||
|
{
|
||||||
|
__start:
|
||||||
|
}
|
||||||
|
CODE fix code
|
||||||
|
|
||||||
|
macro data
|
||||||
|
{
|
||||||
|
__data:
|
||||||
|
}
|
||||||
|
DATA fix data
|
||||||
|
|
||||||
|
macro udata
|
||||||
|
{
|
||||||
|
if used __params & ~defined __params
|
||||||
|
__params:
|
||||||
|
db 0
|
||||||
|
__end:
|
||||||
|
rb 255
|
||||||
|
else
|
||||||
|
__end:
|
||||||
|
end if
|
||||||
|
__udata:
|
||||||
|
}
|
||||||
|
UDATA fix udata
|
||||||
|
|
||||||
|
macro meos_app_end
|
||||||
|
{
|
||||||
|
align 32
|
||||||
|
rb 2048
|
||||||
|
__stack:
|
||||||
|
__memory:
|
||||||
|
}
|
||||||
|
MEOS_APP_END fix meos_app_end
|
||||||
|
|
||||||
|
|
||||||
|
; macro for defining multiline text data
|
||||||
|
struc mstr [sstring]
|
||||||
|
{
|
||||||
|
forward
|
||||||
|
local ssize
|
||||||
|
virtual at 0
|
||||||
|
db sstring
|
||||||
|
ssize = $
|
||||||
|
end virtual
|
||||||
|
dd ssize
|
||||||
|
db sstring
|
||||||
|
common
|
||||||
|
dd -1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; strings
|
||||||
|
macro sz name,[data] { ; from MFAR [mike.dld]
|
||||||
|
common
|
||||||
|
if used name
|
||||||
|
label name
|
||||||
|
end if
|
||||||
|
forward
|
||||||
|
if used name
|
||||||
|
db data
|
||||||
|
end if
|
||||||
|
common
|
||||||
|
if used name
|
||||||
|
.size = $-name
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
|
||||||
|
common
|
||||||
|
if used name
|
||||||
|
label name
|
||||||
|
end if
|
||||||
|
forward
|
||||||
|
if (used name)&(lang eq lng)
|
||||||
|
db data
|
||||||
|
end if
|
||||||
|
common
|
||||||
|
if used name
|
||||||
|
.size = $-name
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; easy system call macro
|
||||||
|
macro mpack dest, hsrc, lsrc
|
||||||
|
{
|
||||||
|
if (hsrc eqtype 0) & (lsrc eqtype 0)
|
||||||
|
mov dest, (hsrc) shl 16 + lsrc
|
||||||
|
else
|
||||||
|
if (hsrc eqtype 0) & (~lsrc eqtype 0)
|
||||||
|
mov dest, (hsrc) shl 16
|
||||||
|
add dest, lsrc
|
||||||
|
else
|
||||||
|
mov dest, hsrc
|
||||||
|
shl dest, 16
|
||||||
|
add dest, lsrc
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro __mov reg,a { ; mike.dld
|
||||||
|
if ~a eq
|
||||||
|
mov reg,a
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro mcall a,b,c,d,e,f { ; mike.dld
|
||||||
|
__mov eax,a
|
||||||
|
__mov ebx,b
|
||||||
|
__mov ecx,c
|
||||||
|
__mov edx,d
|
||||||
|
__mov esi,e
|
||||||
|
__mov edi,f
|
||||||
|
int 0x40
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; language for programs
|
||||||
|
lang fix ru ; ru en fr ge fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; optimize the code for size
|
||||||
|
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
|
||||||
|
|
||||||
|
macro add arg1,arg2
|
||||||
|
{
|
||||||
|
if (arg2 eqtype 0)
|
||||||
|
if (arg2) = 1
|
||||||
|
inc arg1
|
||||||
|
else
|
||||||
|
add arg1,arg2
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
add arg1,arg2
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro sub arg1,arg2
|
||||||
|
{
|
||||||
|
if (arg2 eqtype 0)
|
||||||
|
if (arg2) = 1
|
||||||
|
dec arg1
|
||||||
|
else
|
||||||
|
sub arg1,arg2
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
sub arg1,arg2
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro mov arg1,arg2
|
||||||
|
{
|
||||||
|
if (arg1 in __regs) & (arg2 eqtype 0)
|
||||||
|
if (arg2) = 0
|
||||||
|
xor arg1,arg1
|
||||||
|
else if (arg2) = 1
|
||||||
|
xor arg1,arg1
|
||||||
|
inc arg1
|
||||||
|
else if (arg2) = -1
|
||||||
|
or arg1,-1
|
||||||
|
else if (arg2) > -128 & (arg2) < 128
|
||||||
|
push arg2
|
||||||
|
pop arg1
|
||||||
|
else
|
||||||
|
mov arg1,arg2
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
mov arg1,arg2
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macro struct name
|
||||||
|
{
|
||||||
|
virtual at 0
|
||||||
|
name name
|
||||||
|
sizeof.#name = $ - name
|
||||||
|
end virtual
|
||||||
|
}
|
||||||
|
|
||||||
|
; structures used in MeOS
|
||||||
|
struc process_information
|
||||||
|
{
|
||||||
|
.cpu_usage dd ? ; +0
|
||||||
|
.window_stack_position dw ? ; +4
|
||||||
|
.window_stack_value dw ? ; +6
|
||||||
|
.not_used1 dw ? ; +8
|
||||||
|
.process_name rb 12 ; +10
|
||||||
|
.memory_start dd ? ; +22
|
||||||
|
.used_memory dd ? ; +26
|
||||||
|
.PID dd ? ; +30
|
||||||
|
.x_start dd ? ; +34
|
||||||
|
.y_start dd ? ; +38
|
||||||
|
.x_size dd ? ; +42
|
||||||
|
.y_size dd ? ; +46
|
||||||
|
.slot_state dw ? ; +50
|
||||||
|
rb (1024-52)
|
||||||
|
}
|
||||||
|
struct process_information
|
||||||
|
|
||||||
|
struc system_colors
|
||||||
|
{
|
||||||
|
.frame dd ?
|
||||||
|
.grab dd ?
|
||||||
|
.grab_button dd ?
|
||||||
|
.grab_button_text dd ?
|
||||||
|
.grab_text dd ?
|
||||||
|
.work dd ?
|
||||||
|
.work_button dd ?
|
||||||
|
.work_button_text dd ?
|
||||||
|
.work_text dd ?
|
||||||
|
.work_graph dd ?
|
||||||
|
}
|
||||||
|
struct system_colors
|
||||||
|
|
||||||
|
|
||||||
|
; constants
|
||||||
|
|
||||||
|
; events
|
||||||
|
EV_IDLE = 0
|
||||||
|
EV_TIMER = 0
|
||||||
|
EV_REDRAW = 1
|
||||||
|
EV_KEY = 2
|
||||||
|
EV_BUTTON = 3
|
||||||
|
EV_EXIT = 4
|
||||||
|
EV_BACKGROUND = 5
|
||||||
|
EV_MOUSE = 6
|
||||||
|
EV_IPC = 7
|
||||||
|
EV_STACK = 8
|
||||||
|
|
||||||
|
; event mask bits for function 40
|
||||||
|
EVM_REDRAW = 1b
|
||||||
|
EVM_KEY = 10b
|
||||||
|
EVM_BUTTON = 100b
|
||||||
|
EVM_EXIT = 1000b
|
||||||
|
EVM_BACKGROUND = 10000b
|
||||||
|
EVM_MOUSE = 100000b
|
||||||
|
EVM_IPC = 1000000b
|
||||||
|
EVM_STACK = 10000000b
|
440
programs/other/tinypad2/trunk/scroll.inc
Normal file
440
programs/other/tinypad2/trunk/scroll.inc
Normal file
@ -0,0 +1,440 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; ;
|
||||||
|
;; Scroll.inc ;
|
||||||
|
;; ;
|
||||||
|
;; Vertical Scroll Bar Example for MenuetOS ;
|
||||||
|
;; ;
|
||||||
|
;; Version 0.2 27 February 2005 ;
|
||||||
|
;; ;
|
||||||
|
;; ;
|
||||||
|
;; GNU GENERAL PUBLIC LICENSE ;
|
||||||
|
;; Version 2, June 1991 ;
|
||||||
|
;; ;
|
||||||
|
;; Copyright 2005 Jason Delozier, ;
|
||||||
|
;; cordata51@hotmail.com ;
|
||||||
|
;; ;
|
||||||
|
;; See file COPYING for details ;
|
||||||
|
;; ;
|
||||||
|
;; Updates: ;
|
||||||
|
;; - FPU not longer used for calculations -Feb 27, 2005 ;
|
||||||
|
;; ;
|
||||||
|
;; ;
|
||||||
|
;; TODO: ;
|
||||||
|
;; - Create Message Handler and only allow runtime arguments ;
|
||||||
|
;; to be processed through the message handler ;
|
||||||
|
;; - Remove all local varibles and only allow working varible to ;
|
||||||
|
;; reside in scroll bar structure. ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;*****************************************************************************
|
||||||
|
;*
|
||||||
|
;* VScroll Structure Equates
|
||||||
|
;*
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
VScroll_width equ 0
|
||||||
|
VScroll_x equ 2
|
||||||
|
VScroll_height equ 4
|
||||||
|
VScroll_y equ 6
|
||||||
|
VScroll_min equ 8
|
||||||
|
VScroll_max equ 12
|
||||||
|
VScroll_current equ 16
|
||||||
|
VScroll_s_change equ 20
|
||||||
|
VScroll_b_change equ 24
|
||||||
|
|
||||||
|
;Example VScroll Structure
|
||||||
|
;VScroll_1:
|
||||||
|
; dw 16 ;width +0
|
||||||
|
; dw 100 ;x +2
|
||||||
|
; dw 200 ;height +4
|
||||||
|
; dw 40 ;y +6
|
||||||
|
; dd 0 ;min +8
|
||||||
|
; dd 1000;max +12
|
||||||
|
; dd 1 ;current +16
|
||||||
|
; dd 1 ;small change +20
|
||||||
|
; dd 10 ;big change +24
|
||||||
|
|
||||||
|
VScroll_Min_Height dw 16 ;scroll box
|
||||||
|
Vscroll_Fixed_Height dw 16 ;height of scroll buttons (up and down)
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;*
|
||||||
|
;* Mouse Over VScroll
|
||||||
|
;*
|
||||||
|
;**************************************
|
||||||
|
vsm1 dd 0
|
||||||
|
vstoff dd 0
|
||||||
|
|
||||||
|
VScroll_mouse_over:
|
||||||
|
cmp [mouseb], 1
|
||||||
|
je VScroll_Mouse_Has_Mouse
|
||||||
|
cmp [mouseb], 0
|
||||||
|
jne VScroll_mouse_over_done2
|
||||||
|
mov [vsm1], 0
|
||||||
|
jmp VScroll_mouse_over_done2
|
||||||
|
VScroll_Mouse_Has_Mouse:
|
||||||
|
push ecx
|
||||||
|
mov ecx, [vsm1]
|
||||||
|
shl ecx,2
|
||||||
|
call dword [VScroll_Mouse_Jumptable+ecx]
|
||||||
|
VScroll_mouse_over_done:
|
||||||
|
pop ecx
|
||||||
|
VScroll_mouse_over_done2:
|
||||||
|
ret
|
||||||
|
|
||||||
|
VScroll_Mouse_Jumptable:
|
||||||
|
dd VScroll_Mouse_Find
|
||||||
|
dd VScroll_Mouse_On_Up
|
||||||
|
dd VScroll_Mouse_On_Down
|
||||||
|
dd VScroll_Mouse_Above_Thumb
|
||||||
|
dd VScroll_Mouse_Below_Thumb
|
||||||
|
dd VScroll_Mouse_On_Thumb
|
||||||
|
|
||||||
|
VScroll_Mouse_Find:
|
||||||
|
inc ecx
|
||||||
|
call dword [VScroll_Mouse_Jumptable+ecx*4]
|
||||||
|
cmp [vsm1], 0
|
||||||
|
jne VScroll_mouse_over_done2
|
||||||
|
cmp ecx, 5
|
||||||
|
je VScroll_mouse_over_done2
|
||||||
|
jmp VScroll_Mouse_Find
|
||||||
|
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;Is Mouse at Up button
|
||||||
|
VScroll_Mouse_On_Up:
|
||||||
|
push eax
|
||||||
|
movzx eax, word [ebp+VScroll_y]
|
||||||
|
add ax, word [Vscroll_Fixed_Height]
|
||||||
|
cmp [mousey], ax
|
||||||
|
pop eax
|
||||||
|
ja VScroll_Mouse_On_Up2
|
||||||
|
mov [vsm1], 1
|
||||||
|
call VScroll_Small_Up
|
||||||
|
VScroll_Mouse_On_Up2:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;Is Mouse at Down button
|
||||||
|
VScroll_Mouse_On_Down:
|
||||||
|
push eax
|
||||||
|
movzx eax,word [ebp+VScroll_y]
|
||||||
|
add ax, word [ebp+VScroll_height]
|
||||||
|
sub ax, word [Vscroll_Fixed_Height]
|
||||||
|
cmp [mousey], ax
|
||||||
|
pop eax
|
||||||
|
jb VScroll_Mouse_On_Down2
|
||||||
|
mov [vsm1], 2
|
||||||
|
call VScroll_Small_Down
|
||||||
|
VScroll_Mouse_On_Down2:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;Is Mouse above Scroll Thumb
|
||||||
|
VScroll_Mouse_Above_Thumb:
|
||||||
|
push eax
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
|
call Vscroll_SBox_Area
|
||||||
|
add cx, word [ebp+VScroll_y]
|
||||||
|
add cx, word [Vscroll_Fixed_Height] ;plus height of scroll button
|
||||||
|
cmp cx, [mousey]
|
||||||
|
pop edx
|
||||||
|
pop ecx
|
||||||
|
pop eax
|
||||||
|
jb VScroll_Mouse_Above_Thumb2
|
||||||
|
mov [vsm1], 3
|
||||||
|
call VScroll_Big_Up
|
||||||
|
VScroll_Mouse_Above_Thumb2:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;Is Mouse below scroll thumb
|
||||||
|
VScroll_Mouse_Below_Thumb:
|
||||||
|
push eax
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
|
call Vscroll_SBox_Area
|
||||||
|
add cx, word [ebp+VScroll_y]
|
||||||
|
add cx, word [Vscroll_Fixed_Height] ;plus height of scroll button
|
||||||
|
add cx, ax
|
||||||
|
cmp cx, [mousey]
|
||||||
|
pop edx
|
||||||
|
pop ecx
|
||||||
|
pop eax
|
||||||
|
ja VScroll_Mouse_Below_Thumb2
|
||||||
|
mov [vsm1], 4
|
||||||
|
call VScroll_Big_Down
|
||||||
|
VScroll_Mouse_Below_Thumb2:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
;Mouse is on Scroll Thumb
|
||||||
|
VScroll_Mouse_On_Thumb:
|
||||||
|
|
||||||
|
pusha
|
||||||
|
cmp [vsm1], 5 ;first time moving since we clicked?
|
||||||
|
je VScroll_Mouse_On_Thumb1 ;if not jump.. we already have offset
|
||||||
|
mov [vsm1], 5 ;determine offset between mouse pointer and top of thumb
|
||||||
|
call Vscroll_SBox_Area ;get top of thumb coordinate
|
||||||
|
add cx, word [ebp+VScroll_y] ;make screen coordinate
|
||||||
|
add cx, word [Vscroll_Fixed_Height] ;plus height of scroll button and top
|
||||||
|
movzx esi,word [mousey] ;get mouse position
|
||||||
|
sub esi, ecx ;make offset between top of thumb
|
||||||
|
mov [vstoff], esi ;and mouse pointer then save it
|
||||||
|
VScroll_Mouse_On_Thumb1: ;
|
||||||
|
movzx esi, [mousey] ;get mouse y value
|
||||||
|
sub si, word [ebp+VScroll_y] ;get y starting value of scroll bar
|
||||||
|
sub si, [Vscroll_Fixed_Height]
|
||||||
|
sub esi, [vstoff] ;
|
||||||
|
call Vscroll_SBox_Area ;
|
||||||
|
VScroll_Mouse_On_Thumb2: ;
|
||||||
|
cmp [ebp+VScroll_current], edx ;only redraw if change occured
|
||||||
|
je VScroll_Mouse_On_Thumb3 ;
|
||||||
|
mov [ebp+VScroll_current], edx ;new current value
|
||||||
|
call drawvscrolla ;redraw scroll background and thumb
|
||||||
|
VScroll_Mouse_On_Thumb3: ;
|
||||||
|
popa ;
|
||||||
|
ret
|
||||||
|
;**************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;*****************************************************************************
|
||||||
|
;*
|
||||||
|
;* Vscroll_SBox_Area
|
||||||
|
;*
|
||||||
|
;* Purpose: To determine the area of the Scroll Bar Thumb and the current
|
||||||
|
;* value of scroll based on top pixel of thumb.
|
||||||
|
;*
|
||||||
|
;* Inputs:
|
||||||
|
;* EBP - Structure of scroll bar
|
||||||
|
;* ESI - Top of Thumb - optional
|
||||||
|
;*
|
||||||
|
;* Outputs:
|
||||||
|
;* EAX - Thumb Height
|
||||||
|
;* ECX - Top of thumb
|
||||||
|
;* EDX - Current Value based on top pixel of thumb. Valid when ESI
|
||||||
|
;* is given as input.
|
||||||
|
;*
|
||||||
|
;* This procedure is divided up into 5 specific functions.
|
||||||
|
;* 1. ((Vmax-VMin)/Small Change)= Total Changes
|
||||||
|
;* 2. Height - (2* Fixed Button Height) = Total Pixels
|
||||||
|
;* 3. Total Pixels - Total Changes = Thumb Height (must be >= 16)
|
||||||
|
;* Minimum Height of 16 is varible [VScroll_Min_Height]
|
||||||
|
;* 4. (((Tot Pixels - Thumb Height)* Current)/Max-min)=Top Pixel of Thumb
|
||||||
|
;* 5. ((Mouse Top * (max-Min))/(Total Pix - Thumb Height)) = Current
|
||||||
|
;* Step 5 is only valid if ESI is supplied as an input.
|
||||||
|
;*
|
||||||
|
;*
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
Vscroll_SBox_Area:
|
||||||
|
push ebx
|
||||||
|
push esi
|
||||||
|
push edi
|
||||||
|
;Step 1. Determine Total Changes
|
||||||
|
mov eax, dword [ebp+VScroll_max] ;get max scroll
|
||||||
|
sub eax, dword [ebp+VScroll_min] ;sub minmum scroll for total scro
|
||||||
|
xor edx,edx
|
||||||
|
push eax
|
||||||
|
div dword [ebp+VScroll_s_change] ;
|
||||||
|
;eax = total changes ((max-min)/Small Change)
|
||||||
|
|
||||||
|
;Step 2. Determine Total Pixels
|
||||||
|
movzx ecx, word [ebp+VScroll_height] ;height of entire scroll bar
|
||||||
|
mov bx, word [Vscroll_Fixed_Height] ;minus height of both scroll button
|
||||||
|
shl bx, 1
|
||||||
|
sub cx, bx
|
||||||
|
push ecx
|
||||||
|
;ecx = total pixels (Total Height - (2*Fixed Button Height)
|
||||||
|
|
||||||
|
;Step 3. Determine Thumb Height
|
||||||
|
cmp ecx, eax
|
||||||
|
jbe vs1
|
||||||
|
sub ecx, eax
|
||||||
|
cmp cx, word [VScroll_Min_Height]
|
||||||
|
jb vs1
|
||||||
|
jmp vs2
|
||||||
|
vs1:
|
||||||
|
movzx ecx, word [VScroll_Min_Height]
|
||||||
|
vs2:
|
||||||
|
;ecx = Thumb Height (Total Pixels - Total Changes) >=16
|
||||||
|
|
||||||
|
;Step 4. Determine Top Pixel of Thumb
|
||||||
|
pop edi ;Total Pixels
|
||||||
|
sub edi, ecx ;
|
||||||
|
;edi = Total Pixels - thumb Height
|
||||||
|
mov eax, edi ;
|
||||||
|
mul dword [ebp+VScroll_current] ;get current scroll value
|
||||||
|
pop ebx ;max scroll
|
||||||
|
push ecx ;
|
||||||
|
div ebx ;
|
||||||
|
mov ecx, eax ;
|
||||||
|
;ecx = top pixel of thumb
|
||||||
|
|
||||||
|
;Step 5. Determine Current Value based on Mouse Position
|
||||||
|
cmp si,0
|
||||||
|
jge vss4
|
||||||
|
mov eax, dword [ebp+VScroll_min]
|
||||||
|
jmp vsdone1
|
||||||
|
vss4:
|
||||||
|
cmp esi, edi
|
||||||
|
jbe vss3
|
||||||
|
mov eax, dword [ebp+VScroll_max]
|
||||||
|
jmp vsdone1
|
||||||
|
vss3:
|
||||||
|
mov eax,ebx ;max scroll
|
||||||
|
mul esi ;Top Pixel of mouse
|
||||||
|
div edi ;Total Pixels - Thumb Height
|
||||||
|
;eax = Current Value
|
||||||
|
|
||||||
|
vsdone1:
|
||||||
|
mov edx, eax ;Current Value
|
||||||
|
pop eax ;Thumb Height
|
||||||
|
pop edi
|
||||||
|
pop esi
|
||||||
|
pop ebx
|
||||||
|
ret
|
||||||
|
|
||||||
|
;*****************************************************************************
|
||||||
|
;*
|
||||||
|
;*****************************************************************************
|
||||||
|
;ebp is structure
|
||||||
|
drawvscroll:
|
||||||
|
pusha
|
||||||
|
;up button
|
||||||
|
mov eax, 13 ;button system function
|
||||||
|
mov edx,0x00777777 ;0x6677cc ;color
|
||||||
|
mov ebx, [ebp+VScroll_width] ;x-start/width
|
||||||
|
mov cx, word [ebp+VScroll_y] ;get bottom of scroll bar
|
||||||
|
shl ecx, 16
|
||||||
|
mov cx, [Vscroll_Fixed_Height] ;fixed height
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
;down button
|
||||||
|
mov ebx, [ebp+VScroll_width] ;x-start/width
|
||||||
|
mov cx, word [ebp+VScroll_y] ;get bottom of scroll bar
|
||||||
|
add cx, word [ebp+VScroll_height] ;
|
||||||
|
sub cx, [Vscroll_Fixed_Height] ;y-start is 12 pixel from bottom
|
||||||
|
shl ecx, 16 ;
|
||||||
|
mov cx, [Vscroll_Fixed_Height] ;fixed height
|
||||||
|
int 0x40
|
||||||
|
;------- 'ASCL.INC' needs to be included to use this --
|
||||||
|
putlabel 493,46,'',cl_Black
|
||||||
|
putlabel 493,372,'',cl_Black
|
||||||
|
;------------------------------------------------------
|
||||||
|
|
||||||
|
popa
|
||||||
|
drawvscrolla:
|
||||||
|
pusha
|
||||||
|
|
||||||
|
mov eax, 13 ;Draw Scroll Box Background
|
||||||
|
mov edx, 0x00999999;0 ;color
|
||||||
|
push edx
|
||||||
|
movzx edx, word [Vscroll_Fixed_Height]
|
||||||
|
mov ebx, [ebp+VScroll_width] ;x-start/width
|
||||||
|
movzx ecx,word [ebp+VScroll_y] ;y-start
|
||||||
|
add ecx, edx ;add fixed height button
|
||||||
|
shl ecx, 16 ;do height next
|
||||||
|
mov cx,word [ebp+VScroll_height] ;y-start
|
||||||
|
sub cx, dx ;subtract fixed height of up button
|
||||||
|
sub cx, dx ;subtract fixed height of down button
|
||||||
|
pop edx
|
||||||
|
int 0x40 ;tell system to draw it
|
||||||
|
|
||||||
|
;determine height of scroll box (thumb)
|
||||||
|
|
||||||
|
call Vscroll_SBox_Area
|
||||||
|
add cx, [ebp+VScroll_y]
|
||||||
|
add cx, 16
|
||||||
|
shl ecx, 16
|
||||||
|
mov cx, ax
|
||||||
|
|
||||||
|
mov eax, 13 ;draw scroll box
|
||||||
|
mov ebx, [ebp+VScroll_width] ;x-start/width
|
||||||
|
mov edx, 0x00bbbbbb ;0x999999
|
||||||
|
int 0x40
|
||||||
|
;call Draw_Scroll_info
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
;*****************************************************************************
|
||||||
|
;* VScroll_Big_Up
|
||||||
|
;* VScroll_Small_Up
|
||||||
|
;*****************************************************************************
|
||||||
|
;need to update for signed values
|
||||||
|
VScroll_Big_Up:
|
||||||
|
push eax
|
||||||
|
push ebx
|
||||||
|
mov eax, dword [ebp+VScroll_b_change]
|
||||||
|
jmp VScroll_Up
|
||||||
|
VScroll_Small_Up:
|
||||||
|
push eax
|
||||||
|
push ebx
|
||||||
|
mov eax, dword [ebp+VScroll_s_change]
|
||||||
|
VScroll_Up:
|
||||||
|
mov ebx, dword [ebp+VScroll_min] ;get minimum value
|
||||||
|
cmp [ebp+VScroll_current], ebx ;are we at minimum already?
|
||||||
|
je VScroll_Up_exit ;if so leave
|
||||||
|
sub [ebp+VScroll_current], eax ;
|
||||||
|
jnc VScroll_Up_done
|
||||||
|
mov [ebp+VScroll_current], ebx
|
||||||
|
VScroll_Up_done:
|
||||||
|
cmp [ebp+VScroll_current], ebx ;if current is greater then max
|
||||||
|
jae VScroll_Up_done2
|
||||||
|
mov [ebp+VScroll_current], ebx
|
||||||
|
VScroll_Up_done2:
|
||||||
|
;redraw
|
||||||
|
call drawvscroll ;temp?
|
||||||
|
VScroll_Up_exit:
|
||||||
|
pop ebx
|
||||||
|
pop eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*****************************************************************************
|
||||||
|
;* VScroll_Big_Down
|
||||||
|
;* VScroll_Small_Down
|
||||||
|
;*****************************************************************************
|
||||||
|
;need to update for signed values
|
||||||
|
VScroll_Big_Down:
|
||||||
|
push eax
|
||||||
|
push ebx
|
||||||
|
mov eax, dword [ebp+VScroll_b_change];get big change value
|
||||||
|
jmp VScroll_Down
|
||||||
|
VScroll_Small_Down:
|
||||||
|
push eax
|
||||||
|
push ebx
|
||||||
|
mov eax, dword [ebp+VScroll_s_change];get small change value
|
||||||
|
VScroll_Down:
|
||||||
|
mov ebx, dword [ebp+VScroll_max] ;get maximum scroll value
|
||||||
|
cmp [ebp+VScroll_current], ebx ;are we at max already?
|
||||||
|
je VScroll_Down_exit ;if so leave
|
||||||
|
add [ebp+VScroll_current], eax ;add change to current
|
||||||
|
jno VScroll_Down_done ;dont go beyond bounds of register
|
||||||
|
mov [ebp+VScroll_current], ebx ;if we did then we at max
|
||||||
|
VScroll_Down_done: ;
|
||||||
|
cmp [ebp+VScroll_current], ebx ;if current is greater then max
|
||||||
|
jbe VScroll_Down_done2 ;
|
||||||
|
mov [ebp+VScroll_current], ebx ;then we at max
|
||||||
|
VScroll_Down_done2: ;
|
||||||
|
;redraw
|
||||||
|
call drawvscroll ;temp?
|
||||||
|
VScroll_Down_exit:
|
||||||
|
pop ebx
|
||||||
|
pop eax
|
||||||
|
ret
|
||||||
|
;*****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
4001
programs/other/tinypad2/trunk/tinypad2.asm
Normal file
4001
programs/other/tinypad2/trunk/tinypad2.asm
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user