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:
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠 ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20>ࠧ<EFBFBD> <20><> ⮣<> <20><><EFBFBD> <20> <20>뫮<EFBFBD><EBABAE><EFBFBD> <20>।., <20><> <20> <20><> <20><> <20>몫<EFBFBD><EBAAAB>뢠<EFBFBD>,
|
||||
⠪ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⠭ <20> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ctrl+F7, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - ctrl+F8
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD>⥫쭮 <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD>
|
||||
>71 ᨬ<><E1A8AC><EFBFBD><EFBFBD>, ⠪ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>訡<EFBFBD><E8A8A1> <20><><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD>ண<EFBFBD> <20>/<2F>"
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>।<EFBFBD><E0A5A4><EFBFBD>饬<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD>:
|
||||
- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>⨢<EFBFBD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
-= [v 3.78a] =-
|
||||
|
||||
<EFBFBD>த<EFBFBD> ࠡ<>⠥<EFBFBD>.. :)
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> "Scroll.inc",<2C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ண<EFBFBD> Jason Delozier.
|
||||
<20>ਭ樯 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20> <20><><EFBFBD>諮<EFBFBD> <20><><EFBFBD>ᨥ<EFBFBD>).
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>誨.
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD> Goto Line #.
|
||||
(enter-goto; esc - cancel)
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><> <20><>᪥ <20>⫠<EFBFBD><E2ABA0><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>
|
||||
<20> ⠪<><E2A0AA>-<2D><> <20><>ப<EFBFBD>...
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD> <20><> <20><>ப<EFBFBD><E0AEAA> <20><><EFBFBD>᪠ (<28><><EFBFBD> "<22><><EFBFBD>᪥" <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> <20><>ப<EFBFBD>)
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD> <20><> <20>맮<EFBFBD><EBA7AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD>.
|
||||
⥯<><E2A5AF><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<><E0A0A1><EFBFBD><EFBFBD><EFBFBD> ;)
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD> <20> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
<20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> LC - <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⨨ <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><> <20><>⨢<EFBFBD><E2A8A2>,
|
||||
<20><><EFBFBD>ᮢ <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> ࠢ<><E0A0A2> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
|
||||
-ᯨ<E1AFA8> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> 䠩<><E4A0A9><EFBFBD>
|
||||
-<2D><><EFBFBD><EFBFBD>㧪<EFBFBD><E3A7AA> "color table'a"
|
||||
|
||||
⠪ <20><>, <20><><EFBFBD><EFBFBD> <20><>ᬮ<EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> HeEd'a, <20> <20><>筥<EFBFBD> <20>㭪樨 <20><>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD><E0AEA2>.
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
-= [v 3.77a] =-
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ࠧ:
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ப<EFBFBD>⪨
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD>㬥<EFBFBD><E3ACA5>", ⠪ <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD>⨫
|
||||
<20><><EFBFBD> <20><><EFBFBD> <20>ࠫ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>୮<EFBFBD><E0ADAE> <20>६<EFBFBD><E0A5AC><EFBFBD>.
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᤥ<><E1A4A5><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⮬<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>.
|
||||
⠪ <20><><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>襩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20>ᥣ<EFBFBD><E1A5A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ᥪ<EFBFBD><E1A5AA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>த<EFBFBD> <20><>)
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEAB> "<22><><EFBFBD><EFBFBD><EFBFBD>" <20> "<22><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pg.up <20> pg.down
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEAB> <20><><EFBFBD>⪮ <20><><EFBFBD>९<EFBFBD><E0A5AF><EFBFBD>, ⠪ <20><><EFBFBD> <><E1AAAE> <20>㤥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>饭<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD>祭<EFBFBD><E7A5AD> <20> 80 ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>ᮡ<EFBFBD><E1AEA1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> BGI <20><><EFBFBD><EFBFBD>⮢.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 誮<E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⬥ <20>뢮<EFBFBD><EBA2AE> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD> (<28><> <20>ࠩ<EFBFBD><E0A0A9><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ⠪ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD>.
|
||||
|
||||
<EFBFBD> <><E1ABA5><EFBFBD>饩 <20><><EFBFBD>ᨨ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <20>㭪<EFBFBD><E3ADAA><EFBFBD> "goto string #"
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥<><E6A2A5> ⥪<><E2A5AA><EFBFBD> (<28> ᯥ<>. ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>) <20> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
- <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>讣<EFBFBD> ᯨ᪠ "<22><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> ।<><E0A5A4><EFBFBD><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> 䠩<><E4A0A9><EFBFBD>"
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><> <20><>祣<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>....
|
||||
|
||||
|
||||
-= [v 3.76 ] =-
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ६<><E0A5AC><EFBFBD> ⠩<><E2A0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㫨<EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
|
||||
- "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ண<EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>㧪<EFBFBD>" <20><><EFBFBD> <20>ய<EFBFBD><E0AEAF>뢠<EFBFBD><EBA2A0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20> 䠩<><E4A0A9> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>". <20> <20>⮬ <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
|
||||
ctrl+s - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>, ctrl+o - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, esc - <20>⬥<EFBFBD><E2ACA5>
|
||||
|
||||
- <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨(CTRL+F9),
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 <20> <20><><EFBFBD><EFBFBD>᪠ (CTRL+F10), <20> <20><>᪨ <20>⫠<EFBFBD><E2ABA0><EFBFBD>(F12)
|
||||
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⨢<EFBFBD><E2A8A2><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>᪠ <20><>᪨ <20>⫠<EFBFBD><E2ABA0><EFBFBD>
|
||||
<20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ண<EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> (⮫쪮 <20><><EFBFBD><EFBFBD>稬<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>蠬<EFBFBD>)
|
||||
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD> <20>뫥⠭<EBABA5><E2A0AD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⪥ <20><><EFBFBD>᪠ <20> <20><><EFBFBD>⮬
|
||||
<20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD>
|
||||
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA6> <20><><EFBFBD><EFBFBD> <20><> ᯨ<><E1AFA8><EFBFBD><EFBFBD>, ⥯<><E2A5AF><EFBFBD> <20><>宦 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3
|
||||
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> ᪨<><E1AAA8>
|
||||
|
||||
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>稭<EFBFBD><E7A8AD> 䠩<><E4A0A9> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><>᮫<EFBFBD>⭮ <20><> <20>ਭ<EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sysxtree <20> <20>㦭<EFBFBD> <20>뫮 <20><> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ய<EFBFBD><E0AEAF>뢠<EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ॢ<EFBFBD><E0A5A2><EFBFBD><EFBFBD> <20> <20><><EFBFBD>孨<EFBFBD>
|
||||
ॣ<><E0A5A3><EFBFBD><EFBFBD>.
|
||||
|
||||
- <20><><EFBFBD><EFBFBD> ᮮ<>饭<EFBFBD><E9A5AD> <20><><EFBFBD> <20><>९<EFBFBD><E0A5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᪥ (<28><> <20><> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD> erroff <20>
|
||||
savedialog)
|
||||
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> ⥯<><E2A5AF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20> 䠩<><E4A0A9> (<28> <20><><EFBFBD>).
|
||||
|
||||
- <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>窠 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⮢ (<28><><EFBFBD><EFBFBD>?!).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><> ᤥ<><E1A4A5><EFBFBD><EFBFBD>?
|
||||
|
||||
<20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> <20><><EFBFBD><EFBFBD>⮢ BGI <20>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥<><E6A2A5> 䮭<>/⥪<><E2A5AA><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> ᮬ<><E1AEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> BGI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>אַ "<22><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4>
|
||||
<EFBFBD>"
|
||||
<20> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><>ࠡ<EFBFBD><E0A0A1>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20>訡<EFBFBD><E8A8A1> "fat12 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" - <20>த<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>㭪樨 <20> <20><>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD>...
|
||||
<20><><EFBFBD><EFBFBD> <20><>३<EFBFBD><E0A5A9> <20><> ᪠<>-<2D><><EFBFBD><EFBFBD>, <20> <20><> <20> <20>᪨ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
--------------------------------------------
|
||||
<EFBFBD> <20><><EFBFBD>: <20> <20>訡<EFBFBD><E8A8A1><EFBFBD> <20> <20><><EFBFBD>⨪<EFBFBD> - <20><><EFBFBD> (<28><> "<22><><EFBFBD><EFBFBD>") <20><> <20>뫮 <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
--------------------------------------------
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||||
|
||||
-= [ v 3.75b ] =-
|
||||
|
||||
<EFBFBD>....
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :) Tinypad'a :
|
||||
<EFBFBD>㫡<EFBFBD><EFBFBD> ⥯<><E2A5AF><EFBFBD> <20><><EFBFBD><EFBFBD>⠭ <20> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ASCL <20><><EFBFBD><EFBFBD><EFBFBD>設<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD> "<22><>⪨<EFBFBD>" <20><><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㬥<EFBFBD><E3ACA5> <20><><EFBFBD> <20><>㣨<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1><EFBFBD> <20> <20><>室<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>", <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⨨ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> 䠩<><E4A0A9>, <20><>⥬
|
||||
ᮧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㬥<EFBFBD><E3ACA5> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD>ᨬ<EFBFBD><E1A8AC>쭮 99 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㬥<EFBFBD>⮢. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD>⭮<EFBFBD>...
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>訡<EFBFBD><E8A8A1><EFBFBD> <20><><EFBFBD> <20><> <20>뫮, <20><><EFBFBD><EFBFBD><E0AEA1> <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD>" <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> ⮫쪮 <20><> <20><>⮢<EFBFBD><E2AEA2> 䠩<><E4A0A9> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⪥ <20><><EFBFBD>᪠ <20><>ப<EFBFBD> <20> <20><><EFBFBD>⮬ <20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD> <20>ண<EFBFBD> <20>뫥⠥<EBABA5> :(
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><>室<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20>뫠<EFBFBD><EBABA0><EFBFBD> <20><><EFBFBD>誮 <20> <20><><EFBFBD><EFBFBD><EFBFBD>ᮬ "<22><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> 䠩<>?" - <20><> - <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>
|
||||
<20><><EFBFBD>㬥<EFBFBD><E3ACA5> <20> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> - <20><> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD> <20> <20><>室<EFBFBD><E5AEA4>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ࠡ<>祩 <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>
|
||||
⠩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⬥<EFBFBD><E2ACA5>, <20><><EFBFBD><EFBFBD>ன <20><><EFBFBD><EFBFBD> ;), <20>ࠢ<EFBFBD><E0A0A2> <20> <20><><EFBFBD><EFBFBD> ᮮ<>饭<EFBFBD>
|
||||
<EFBFBD>
|
||||
<20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20>맢<EFBFBD><EBA7A2><EFBFBD><EFBFBD> "ᯥ<><E1AFA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD>, <20>
|
||||
<EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⮣<EFBFBD> <20><>襭<EFBFBD><E8A5AD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD> ᯠᨡ<E1AFA0><E1A8A1><EFBFBD>...
|
||||
<EFBFBD>ᥬ ᯠᨡ<E1AFA0>! <20><><EFBFBD><EFBFBD><EFBFBD>設<EFBFBD> <20><> ASCL, <20><><EFBFBD><EFBFBD><EFA2A8>, Willow <20> <20>ᥬ <20> <20><>襣<EFBFBD> <20><><EFBFBD>㬠 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD>饬...
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> BGI <20><><EFBFBD><EFBFBD>⮢... <20><><EFBFBD> <20><> ᬮ<>५
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> -- <20><><EFBFBD><EFBFBD>譮!
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>, <20><>%?
|
||||
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 - <20><><EFBFBD><EFBFBD>
|
||||
; 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 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><>稭<EFBFBD><E7A8AD><EFBFBD><EFBFBD><EFBFBD> ࠡ<><E0A0A1><EFBFBD><EFBFBD><EFBFBD> <20> MeOS - <20><><EFBFBD>ᠭ<EFBFBD><E1A0AD> 䠩<><E4A0A9><EFBFBD> <20> <20>⮬ <20><>娢<EFBFBD>:
|
||||
|
||||
tinypad - <><E1AAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE>塞<EFBFBD><EFA5AC> 䠩<> MeOS
|
||||
tinypad.asm - <20><>室<EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD>
|
||||
ascl.inc - assembler small code library <20><> <20><><EFBFBD><EFBFBD><EFBFBD>設<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<28>㭪<EFBFBD><E3ADAA><EFBFBD> label <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> putlabel)
|
||||
dialogs1.inc - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, messagebox'<27> <20> <20><> <20>祭<EFBFBD> <20><><EFBFBD><EFBFBD>襥 <20><><EFBFBD><EFBFBD>.
|
||||
macros.inc - ⮦<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD><E2A5AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ᮢ.
|
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 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 512 <EFBFBD> <EFBFBD>ਡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稬 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
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 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 512 <EFBFBD> <EFBFBD>ਡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>稬 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; 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
Reference in New Issue
Block a user