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