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:
heavyiron 2006-07-29 07:27:24 +00:00
parent f9a3eb973f
commit fca11d7700
58 changed files with 6456 additions and 0 deletions

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View 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

View File

@ -0,0 +1,8 @@
„«ï ­ ç¨­ îé¨å à ¡®â âì á MeOS - ®¯¨á ­¨¥ ä ©«®¢ ¢ í⮬  à娢¥:
tinypad - ᪮¬¯¨«¨à®¢ ­­ë© ¨á¯®«­ï¥¬ë© ä ©« MeOS
tinypad.asm - ¨á室­ë© ª®¤
ascl.inc - assembler small code library ®â <20> ¢«î設  …¢£¥­¨ï
(äã­ªæ¨ï label § ¬¥­¥­  ­  putlabel)
dialogs1.inc - ¤¨ «®£®¢ë¥ ®ª­ , messagebox'ë ¨ ­¥ ®ç¥­ì å®à®è¥¥ ¬¥­î.
macros.inc - ⮦¥ § ¬¥ç â¥«ì­ë© ­ ¡®à ¬ ªà®á®¢.

View 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

View File

@ -0,0 +1,4 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm tinypad2.asm tinypad2
@pause

View File

@ -0,0 +1,4 @@
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm tinypad2.asm tinypad2
@pause

View 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:

View 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

View 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
;*****************************************************************************

File diff suppressed because it is too large Load Diff