From f28b4ac95f166e62deaf30646e28f7b714737506 Mon Sep 17 00:00:00 2001 From: CleverMouse Date: Mon, 17 Jan 2011 12:21:18 +0000 Subject: [PATCH] data for build system git-svn-id: svn://kolibrios.org@1737 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/eng/3d/3dsheart | Bin 0 -> 18362 bytes data/eng/3d/3dspiral | Bin 0 -> 690 bytes data/eng/3d/cubeline | Bin 0 -> 16726 bytes data/eng/3d/cubetext | Bin 0 -> 18137 bytes data/eng/3d/flatwav | Bin 0 -> 1286 bytes data/eng/3d/gears | Bin 0 -> 17690 bytes data/eng/3d/house.3ds | Bin 0 -> 11977 bytes data/eng/3d/logio.bmp | Bin 0 -> 39774 bytes data/eng/@notify | Bin 0 -> 814 bytes data/eng/File Managers/buttons.bmp | Bin 0 -> 6486 bytes data/eng/File Managers/eolite | Bin 0 -> 16733 bytes data/eng/File Managers/eolite.ini | 41 + data/eng/File Managers/icons.bmp | Bin 0 -> 5238 bytes data/eng/File Managers/icons.ini | 141 ++ data/eng/File Managers/kfar.ini | 70 + data/eng/File Managers/kfm | Bin 0 -> 11080 bytes data/eng/File Managers/kfm.ini | 171 ++ data/eng/File Managers/kfm_keys.txt | 42 + data/eng/Makefile | 367 +++ data/eng/asciivju | Bin 0 -> 684 bytes data/eng/autorun.dat | 12 + data/eng/background.gif | Bin 0 -> 1226 bytes data/eng/default.skn | Bin 0 -> 1203 bytes data/eng/demos/aclock | Bin 0 -> 1206 bytes data/eng/demos/ak47.lif | 71 + data/eng/demos/barge.lif | 406 +++ data/eng/demos/life2 | Bin 0 -> 18001 bytes data/eng/demos/relay.lif | 12 + data/eng/demos/rpento.lif | 13 + data/eng/demos/use_mb | Bin 0 -> 1194 bytes data/eng/demos/web | Bin 0 -> 503 bytes data/eng/docs/COPYING.TXT | 347 +++ data/eng/docs/FARA.TXT | 48 + data/eng/docs/FASM.TXT | 3591 +++++++++++++++++++++++++++ data/eng/docs/HOT_KEYS.TXT | 10 + data/eng/docs/INI.TXT | 25 + data/eng/docs/KFAR_KEYS.TXT | 94 + data/eng/docs/MTDBG.TXT | 214 ++ data/eng/docs/README.TXT | 268 ++ data/eng/docs/STACK.TXT | 387 +++ data/eng/docs/VRR_ENG.TXT | 104 + data/eng/drivers/atikms.dll | Bin 0 -> 132402 bytes data/eng/e80 | Bin 0 -> 27021 bytes data/eng/fonts/bold.chr | Bin 0 -> 9522 bytes data/eng/fonts/char.mt | Bin 0 -> 2304 bytes data/eng/fonts/char2.mt | Bin 0 -> 2560 bytes data/eng/games/FindNumbers | Bin 0 -> 1218 bytes data/eng/games/bnc | Bin 0 -> 632 bytes data/eng/games/c4 | Bin 0 -> 3578 bytes data/eng/games/checkers | Bin 0 -> 24758 bytes data/eng/games/clicks | Bin 0 -> 6789 bytes data/eng/games/gomoku | Bin 0 -> 1389 bytes data/eng/games/klavisha | Bin 0 -> 4085 bytes data/eng/games/kosilka | Bin 0 -> 7483 bytes data/eng/games/kosskin.gfx | Bin 0 -> 13824 bytes data/eng/games/kox | Bin 0 -> 876 bytes data/eng/games/lights | Bin 0 -> 482 bytes data/eng/games/megamaze | Bin 0 -> 17326 bytes data/eng/games/mine | Bin 0 -> 1839 bytes data/eng/games/msquare | Bin 0 -> 1244 bytes data/eng/games/reversi | Bin 0 -> 3294 bytes data/eng/games/rforces | Bin 0 -> 4857 bytes data/eng/games/snake.ini | 175 ++ data/eng/games/sq_game | Bin 0 -> 404 bytes data/eng/games/sudoku | Bin 0 -> 2547 bytes data/eng/games/sw | Bin 0 -> 1942 bytes data/eng/games/xonix | Bin 0 -> 6481 bytes data/eng/graph | Bin 0 -> 7822 bytes data/eng/hdread | Bin 0 -> 1287 bytes data/eng/htmlv | Bin 0 -> 9915 bytes data/eng/icons.dat | 27 + data/eng/iconstrp.gif | Bin 0 -> 12050 bytes data/eng/index_htm | 30 + data/eng/kerpack | Bin 0 -> 6421 bytes data/eng/keymap.key | Bin 0 -> 2688 bytes data/eng/kpack | Bin 0 -> 8365 bytes data/eng/kuzkina.mid | Bin 0 -> 456 bytes data/eng/lang.inc | 1 + data/eng/lang.ini | 28 + data/eng/lib/cnv_png.obj | Bin 0 -> 3182 bytes data/eng/lib/msgbox.obj | Bin 0 -> 981 bytes data/eng/lib/pixlib.obj | Bin 0 -> 4620 bytes data/eng/lib/sort.obj | Bin 0 -> 851 bytes data/eng/media/ac97snd | Bin 0 -> 26203 bytes data/eng/media/kiv.ini | 3 + data/eng/media/listplay | Bin 0 -> 1563 bytes data/eng/media/startmus | Bin 0 -> 156 bytes data/eng/menu.dat | 177 ++ data/eng/mykey | Bin 0 -> 1861 bytes data/eng/network/jmail | Bin 0 -> 1976 bytes data/eng/network/zeroconf.ini | 19 + data/eng/panel.dat | 1 + data/eng/setup.dat | Bin 0 -> 48 bytes data/eng/shell | Bin 0 -> 3939 bytes data/eng/spanel | Bin 0 -> 652 bytes data/eng/table | Bin 0 -> 12557 bytes data/eng/test | Bin 0 -> 431 bytes data/eng/vmode | Bin 0 -> 8628 bytes data/rus/3d/3dsheart | Bin 0 -> 18362 bytes data/rus/3d/3dspiral | Bin 0 -> 690 bytes data/rus/3d/cubeline | Bin 0 -> 16726 bytes data/rus/3d/cubetext | Bin 0 -> 18137 bytes data/rus/3d/flatwav | Bin 0 -> 1286 bytes data/rus/3d/gears | Bin 0 -> 17690 bytes data/rus/3d/house.3ds | Bin 0 -> 11977 bytes data/rus/3d/logio.bmp | Bin 0 -> 39774 bytes data/rus/@notify | Bin 0 -> 814 bytes data/rus/File Managers/buttons.bmp | Bin 0 -> 6486 bytes data/rus/File Managers/eolite | Bin 0 -> 16733 bytes data/rus/File Managers/eolite.ini | 42 + data/rus/File Managers/icons.bmp | Bin 0 -> 5238 bytes data/rus/File Managers/icons.ini | 141 ++ data/rus/File Managers/kfar.ini | 71 + data/rus/File Managers/kfm | Bin 0 -> 11080 bytes data/rus/File Managers/kfm.ini | 172 ++ data/rus/File Managers/kfm_keys.txt | 46 + data/rus/Makefile | 368 +++ data/rus/asciivju | Bin 0 -> 684 bytes data/rus/autorun.dat | 12 + data/rus/background.gif | Bin 0 -> 1226 bytes data/rus/default.skn | Bin 0 -> 1203 bytes data/rus/demos/aclock | Bin 0 -> 1206 bytes data/rus/demos/ak47.lif | 71 + data/rus/demos/barge.lif | 406 +++ data/rus/demos/life2 | Bin 0 -> 18001 bytes data/rus/demos/relay.lif | 12 + data/rus/demos/rpento.lif | 13 + data/rus/demos/use_mb | Bin 0 -> 1194 bytes data/rus/demos/web | Bin 0 -> 503 bytes data/rus/docs/FASM.TXT | 3591 +++++++++++++++++++++++++++ data/rus/docs/GNU.TXT | 447 ++++ data/rus/docs/GROBFAR.TXT | 48 + data/rus/docs/HOT_KEYS.TXT | 10 + data/rus/docs/INI.TXT | 27 + data/rus/docs/KFAR_KEYS.TXT | 100 + data/rus/docs/MTDBG.TXT | 224 ++ data/rus/docs/README.TXT | 274 ++ data/rus/docs/STACK_RU.TXT | 378 +++ data/rus/docs/VRR_RUS.TXT | 110 + data/rus/drivers/atikms.dll | Bin 0 -> 132402 bytes data/rus/e80 | Bin 0 -> 27021 bytes data/rus/fonts/bold.chr | Bin 0 -> 9522 bytes data/rus/fonts/char.mt | Bin 0 -> 2304 bytes data/rus/fonts/char2.mt | Bin 0 -> 2560 bytes data/rus/games/FindNumbers | Bin 0 -> 1218 bytes data/rus/games/appdata.dat | 1 + data/rus/games/ataka | Bin 0 -> 5193 bytes data/rus/games/basekurs.kla | Bin 0 -> 15594 bytes data/rus/games/bnc | Bin 0 -> 632 bytes data/rus/games/c4 | Bin 0 -> 3578 bytes data/rus/games/checkers | Bin 0 -> 24851 bytes data/rus/games/clicks | Bin 0 -> 6812 bytes data/rus/games/gomoku | Bin 0 -> 1387 bytes data/rus/games/klavisha | Bin 0 -> 4085 bytes data/rus/games/kosilka | Bin 0 -> 7596 bytes data/rus/games/kosskin.gfx | Bin 0 -> 13824 bytes data/rus/games/kox | Bin 0 -> 876 bytes data/rus/games/lights | Bin 0 -> 482 bytes data/rus/games/megamaze | Bin 0 -> 17326 bytes data/rus/games/mine | Bin 0 -> 1839 bytes data/rus/games/msquare | Bin 0 -> 1251 bytes data/rus/games/padenie | Bin 0 -> 3832 bytes data/rus/games/reversi | Bin 0 -> 3294 bytes data/rus/games/rforces | Bin 0 -> 4857 bytes data/rus/games/snake.ini | 175 ++ data/rus/games/sq_game | Bin 0 -> 408 bytes data/rus/games/sudoku | Bin 0 -> 2553 bytes data/rus/games/sw | Bin 0 -> 1945 bytes data/rus/games/whowtbam | Bin 0 -> 4579 bytes data/rus/games/xonix | Bin 0 -> 6517 bytes data/rus/graph | Bin 0 -> 7822 bytes data/rus/hdread | Bin 0 -> 1287 bytes data/rus/htmlv | Bin 0 -> 9915 bytes data/rus/icons.dat | 27 + data/rus/iconstrp.gif | Bin 0 -> 12050 bytes data/rus/index_htm | 30 + data/rus/kerpack | Bin 0 -> 6421 bytes data/rus/keymap.key | Bin 0 -> 2688 bytes data/rus/kpack | Bin 0 -> 8365 bytes data/rus/kuzkina.mid | Bin 0 -> 456 bytes data/rus/lang.inc | 1 + data/rus/lang.ini | 28 + data/rus/lib/cnv_png.obj | Bin 0 -> 3182 bytes data/rus/lib/msgbox.obj | Bin 0 -> 981 bytes data/rus/lib/pixlib.obj | Bin 0 -> 4620 bytes data/rus/lib/sort.obj | Bin 0 -> 851 bytes data/rus/media/ac97snd | Bin 0 -> 26203 bytes data/rus/media/kiv.ini | 3 + data/rus/media/listplay | Bin 0 -> 1563 bytes data/rus/media/startmus | Bin 0 -> 156 bytes data/rus/menu.dat | 183 ++ data/rus/mykey | Bin 0 -> 1861 bytes data/rus/network/jmail | Bin 0 -> 1976 bytes data/rus/network/zeroconf.ini | 19 + data/rus/panel.dat | 1 + data/rus/pipetka | Bin 0 -> 1374 bytes data/rus/setup.dat | Bin 0 -> 48 bytes data/rus/shell | Bin 0 -> 3939 bytes data/rus/spanel | Bin 0 -> 652 bytes data/rus/table | Bin 0 -> 12557 bytes data/rus/test | Bin 0 -> 431 bytes data/rus/vmode | Bin 0 -> 8628 bytes 202 files changed, 13926 insertions(+) create mode 100644 data/eng/3d/3dsheart create mode 100644 data/eng/3d/3dspiral create mode 100644 data/eng/3d/cubeline create mode 100644 data/eng/3d/cubetext create mode 100644 data/eng/3d/flatwav create mode 100644 data/eng/3d/gears create mode 100644 data/eng/3d/house.3ds create mode 100644 data/eng/3d/logio.bmp create mode 100644 data/eng/@notify create mode 100644 data/eng/File Managers/buttons.bmp create mode 100644 data/eng/File Managers/eolite create mode 100644 data/eng/File Managers/eolite.ini create mode 100644 data/eng/File Managers/icons.bmp create mode 100644 data/eng/File Managers/icons.ini create mode 100644 data/eng/File Managers/kfar.ini create mode 100644 data/eng/File Managers/kfm create mode 100644 data/eng/File Managers/kfm.ini create mode 100644 data/eng/File Managers/kfm_keys.txt create mode 100644 data/eng/Makefile create mode 100644 data/eng/asciivju create mode 100644 data/eng/autorun.dat create mode 100644 data/eng/background.gif create mode 100644 data/eng/default.skn create mode 100644 data/eng/demos/aclock create mode 100644 data/eng/demos/ak47.lif create mode 100644 data/eng/demos/barge.lif create mode 100644 data/eng/demos/life2 create mode 100644 data/eng/demos/relay.lif create mode 100644 data/eng/demos/rpento.lif create mode 100644 data/eng/demos/use_mb create mode 100644 data/eng/demos/web create mode 100644 data/eng/docs/COPYING.TXT create mode 100644 data/eng/docs/FARA.TXT create mode 100644 data/eng/docs/FASM.TXT create mode 100644 data/eng/docs/HOT_KEYS.TXT create mode 100644 data/eng/docs/INI.TXT create mode 100644 data/eng/docs/KFAR_KEYS.TXT create mode 100644 data/eng/docs/MTDBG.TXT create mode 100644 data/eng/docs/README.TXT create mode 100644 data/eng/docs/STACK.TXT create mode 100644 data/eng/docs/VRR_ENG.TXT create mode 100644 data/eng/drivers/atikms.dll create mode 100644 data/eng/e80 create mode 100644 data/eng/fonts/bold.chr create mode 100644 data/eng/fonts/char.mt create mode 100644 data/eng/fonts/char2.mt create mode 100644 data/eng/games/FindNumbers create mode 100644 data/eng/games/bnc create mode 100644 data/eng/games/c4 create mode 100644 data/eng/games/checkers create mode 100644 data/eng/games/clicks create mode 100644 data/eng/games/gomoku create mode 100644 data/eng/games/klavisha create mode 100644 data/eng/games/kosilka create mode 100644 data/eng/games/kosskin.gfx create mode 100644 data/eng/games/kox create mode 100644 data/eng/games/lights create mode 100644 data/eng/games/megamaze create mode 100644 data/eng/games/mine create mode 100644 data/eng/games/msquare create mode 100644 data/eng/games/reversi create mode 100644 data/eng/games/rforces create mode 100644 data/eng/games/snake.ini create mode 100644 data/eng/games/sq_game create mode 100644 data/eng/games/sudoku create mode 100644 data/eng/games/sw create mode 100644 data/eng/games/xonix create mode 100644 data/eng/graph create mode 100644 data/eng/hdread create mode 100644 data/eng/htmlv create mode 100644 data/eng/icons.dat create mode 100644 data/eng/iconstrp.gif create mode 100644 data/eng/index_htm create mode 100644 data/eng/kerpack create mode 100644 data/eng/keymap.key create mode 100644 data/eng/kpack create mode 100644 data/eng/kuzkina.mid create mode 100644 data/eng/lang.inc create mode 100644 data/eng/lang.ini create mode 100644 data/eng/lib/cnv_png.obj create mode 100644 data/eng/lib/msgbox.obj create mode 100644 data/eng/lib/pixlib.obj create mode 100644 data/eng/lib/sort.obj create mode 100644 data/eng/media/ac97snd create mode 100644 data/eng/media/kiv.ini create mode 100644 data/eng/media/listplay create mode 100644 data/eng/media/startmus create mode 100644 data/eng/menu.dat create mode 100644 data/eng/mykey create mode 100644 data/eng/network/jmail create mode 100644 data/eng/network/zeroconf.ini create mode 100644 data/eng/panel.dat create mode 100644 data/eng/setup.dat create mode 100644 data/eng/shell create mode 100644 data/eng/spanel create mode 100644 data/eng/table create mode 100644 data/eng/test create mode 100644 data/eng/vmode create mode 100644 data/rus/3d/3dsheart create mode 100644 data/rus/3d/3dspiral create mode 100644 data/rus/3d/cubeline create mode 100644 data/rus/3d/cubetext create mode 100644 data/rus/3d/flatwav create mode 100644 data/rus/3d/gears create mode 100644 data/rus/3d/house.3ds create mode 100644 data/rus/3d/logio.bmp create mode 100644 data/rus/@notify create mode 100644 data/rus/File Managers/buttons.bmp create mode 100644 data/rus/File Managers/eolite create mode 100644 data/rus/File Managers/eolite.ini create mode 100644 data/rus/File Managers/icons.bmp create mode 100644 data/rus/File Managers/icons.ini create mode 100644 data/rus/File Managers/kfar.ini create mode 100644 data/rus/File Managers/kfm create mode 100644 data/rus/File Managers/kfm.ini create mode 100644 data/rus/File Managers/kfm_keys.txt create mode 100644 data/rus/Makefile create mode 100644 data/rus/asciivju create mode 100644 data/rus/autorun.dat create mode 100644 data/rus/background.gif create mode 100644 data/rus/default.skn create mode 100644 data/rus/demos/aclock create mode 100644 data/rus/demos/ak47.lif create mode 100644 data/rus/demos/barge.lif create mode 100644 data/rus/demos/life2 create mode 100644 data/rus/demos/relay.lif create mode 100644 data/rus/demos/rpento.lif create mode 100644 data/rus/demos/use_mb create mode 100644 data/rus/demos/web create mode 100644 data/rus/docs/FASM.TXT create mode 100644 data/rus/docs/GNU.TXT create mode 100644 data/rus/docs/GROBFAR.TXT create mode 100644 data/rus/docs/HOT_KEYS.TXT create mode 100644 data/rus/docs/INI.TXT create mode 100644 data/rus/docs/KFAR_KEYS.TXT create mode 100644 data/rus/docs/MTDBG.TXT create mode 100644 data/rus/docs/README.TXT create mode 100644 data/rus/docs/STACK_RU.TXT create mode 100644 data/rus/docs/VRR_RUS.TXT create mode 100644 data/rus/drivers/atikms.dll create mode 100644 data/rus/e80 create mode 100644 data/rus/fonts/bold.chr create mode 100644 data/rus/fonts/char.mt create mode 100644 data/rus/fonts/char2.mt create mode 100644 data/rus/games/FindNumbers create mode 100644 data/rus/games/appdata.dat create mode 100644 data/rus/games/ataka create mode 100644 data/rus/games/basekurs.kla create mode 100644 data/rus/games/bnc create mode 100644 data/rus/games/c4 create mode 100644 data/rus/games/checkers create mode 100644 data/rus/games/clicks create mode 100644 data/rus/games/gomoku create mode 100644 data/rus/games/klavisha create mode 100644 data/rus/games/kosilka create mode 100644 data/rus/games/kosskin.gfx create mode 100644 data/rus/games/kox create mode 100644 data/rus/games/lights create mode 100644 data/rus/games/megamaze create mode 100644 data/rus/games/mine create mode 100644 data/rus/games/msquare create mode 100644 data/rus/games/padenie create mode 100644 data/rus/games/reversi create mode 100644 data/rus/games/rforces create mode 100644 data/rus/games/snake.ini create mode 100644 data/rus/games/sq_game create mode 100644 data/rus/games/sudoku create mode 100644 data/rus/games/sw create mode 100644 data/rus/games/whowtbam create mode 100644 data/rus/games/xonix create mode 100644 data/rus/graph create mode 100644 data/rus/hdread create mode 100644 data/rus/htmlv create mode 100644 data/rus/icons.dat create mode 100644 data/rus/iconstrp.gif create mode 100644 data/rus/index_htm create mode 100644 data/rus/kerpack create mode 100644 data/rus/keymap.key create mode 100644 data/rus/kpack create mode 100644 data/rus/kuzkina.mid create mode 100644 data/rus/lang.inc create mode 100644 data/rus/lang.ini create mode 100644 data/rus/lib/cnv_png.obj create mode 100644 data/rus/lib/msgbox.obj create mode 100644 data/rus/lib/pixlib.obj create mode 100644 data/rus/lib/sort.obj create mode 100644 data/rus/media/ac97snd create mode 100644 data/rus/media/kiv.ini create mode 100644 data/rus/media/listplay create mode 100644 data/rus/media/startmus create mode 100644 data/rus/menu.dat create mode 100644 data/rus/mykey create mode 100644 data/rus/network/jmail create mode 100644 data/rus/network/zeroconf.ini create mode 100644 data/rus/panel.dat create mode 100644 data/rus/pipetka create mode 100644 data/rus/setup.dat create mode 100644 data/rus/shell create mode 100644 data/rus/spanel create mode 100644 data/rus/table create mode 100644 data/rus/test create mode 100644 data/rus/vmode diff --git a/data/eng/3d/3dsheart b/data/eng/3d/3dsheart new file mode 100644 index 0000000000000000000000000000000000000000..451432efc9a3c6d931a58311fab3077479ecdd3d GIT binary patch literal 18362 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 V+}-#He!2sNjc`x9mia(jwg5gRqI&=U literal 0 HcmV?d00001 diff --git a/data/eng/3d/3dspiral b/data/eng/3d/3dspiral new file mode 100644 index 0000000000000000000000000000000000000000..58d26dfefac3ce9ad906f137a14f4a261b091ce6 GIT binary patch literal 690 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 Zk{r@~%JAM4!%&N-WjoLd0K)+Q00G8+ewP3M literal 0 HcmV?d00001 diff --git a/data/eng/3d/house.3ds b/data/eng/3d/house.3ds new file mode 100644 index 0000000000000000000000000000000000000000..5cd6911c4085d93f66518889f3304743e51b721f GIT binary patch literal 11977 zcmeI2d6XB`mB;UeAN~ZQEV2YtY(ZIM6%bhh&94DhP!<)57(rGAWS4!DEeaY}6hv&1 zFbso&iV6w{Eh1op;D)=1#Bt3qnGBO;k}#ipt6p`rIWwL)XL8Q`LFY7|`~B9f`(C|z z_3D+K9zFIn6DcDVM5HXg9XoDDcj_4QiS?^-rLa2xvlkL@V&k{G`*xXSwS2ZMcUgiADy%pVtn(0pTzjqhu|kMzV#vaNsMnl!53Ln=lIsppExdx zw4D>i$7A#P4ZhU~eiBo^Fy$vPzU7AeB*wR&;EVLHc3#q-IHpbOM_w+~AB)ZBH~8L% z*iT~4E3|fFKZ&hg%1>f^?@yfX{plFDTR?v-rcLY5G0TCbJvKkY_|}KuCo#VDA^1s* zZ+!@U664!X@cn)z{o#J4`r~~eKlIO86!#I|`jGTD#Q4^S;3qM@^&$94jBh`|_xao@ z);6ClE-E=5`fd41%<*tP%uizTtxf2Dh|%8n*iT~fb0yc6#Q0V-TyGMaPtC*+vDFE2 zK`J(%I)xky{rA}Fr2Hf{pWKk2#8xNeCvjZg@Ger*kYWjD1^wR#897Kj*j|vv_x|&hf&|QCy~=T%%BDacNcD ze@DoV=cV_7np;Cn>TFNdiSxZq9B+!-v^m%3%h;@E13`o@s&aXKfC7jj(-3!;1FG1~5%^?7aVdmQ`LX7D`@ zelF!(9Q)R8$oDw*t<9uei(}u;vpnmAotMODyO!W5vH3eveu(j{-yuK5;d<>phU>LB zTyGNNSsbo6iGxpHtbguX9Q)yVy-vyx*K5AVaela7^TYLej1KqC{3JG?>k9cvjBnQv z{1DqZVq;*>L?QjLSR}okq}PZ4ZVgGV3F);Wy*{MZvGiI|(!Te@`Wg4b?+N`1ez>Qm z!#%aw^I*vPq35}Ao%DHLFZgkrey+u_ANu08@e*yv;~ZnsH;Z?~eIZWz7IKR^=Nj_0 zV&4sa`?IgOJMTY{5*Eig;Vcqyq-Qq#QBzs0eRXm#y)AhGMf zlDbyEbl*%zwbQh?o5*KuEV%Q^!}yB?Zj<(XPkp2H)7a zRVzPkjPI=dZ0zx-*{nz?V+W#=thy40TqV{~3|C(F0%ShloZeuYC%dY%u< z$$w6cz~65KeBOq69OieJzkfTgqj{U2$6@~3ytesk^Z4)A-T#})RdSWf_&y;kC;xYH z1hNBiZG2*dH&K{n|Fa&F%UWVyu3b%$)q1+{->fB@DI@mZ&9j-xunf#dWoK2GL7yU3 zoz>te=u@Sdvj#jBT|sI%Ys*imn9ZCnwVh|d)6tdXEN2~98C_NCIP+jtbT!Fy)`iv3 zHKeYyzMMzJY^Ju=SdT1Gnj|2E6toO`P;yG==##q z*&5bIH|Vmq|}&Z+IE{3hC{<23~>gF4s7(gWb_r$#u@M z@G7)&wZ`k2bv7S+%Jt6v@^dO=GuKFeXF2%=XJj*F84cqAW~I&7>t%p*u-wcU*-U>K z?99qg&d6pML+5a2tD}9~$(h(<{>C62z_M=WG*jf5HZ{)l_=o{olXO6tS z=$p9T#)0H@h6OUvIfT3$(1T=%vkQ4Qp@%UajJJ?i0K3X9&Ji*Q$NUk_QJgmjJwiq~ zN6RprY-W^CNlbuuG81y)q;+zV{p(n^x=QKD0eY;F^)`YjCD@sl0bk?aF=*cqO zIRj2cPmvkUnQ#hvs?2oGf>Y7cWR`O_>r!3xbeZj(1E-^B$QI-AqqS@?HJb7wud%Xv4)8{@Z= zyPX%ao|x_+zap~w9h}{$Z@L4m%!T*h8=K2L&U>l*8}uT%*ST00Iq#$Xm-zR~ea^4s zpNUL=<@}oSzHo1)(c`jLTGY@e8jn(A==Yy=jtj(EoA9nq% zv!48m{1*Ki&ND9N>WxpyuVpEGRGxA^E&qUH{?pF&@{c&#%+s>oxk3I3C!1L>8=T8! z8BR8{L6$q8q0Xb|$K)C3v($MC{fs>8e2zL#qo0-MoExdL9{rqbbgrPz2J}W*;e4Jt zkD(uz=bbN5=Na_#@`Ce4>O6~nL0)ujqRw;Z7iE*PkUAUDo21aWnL3Z7pODSYm#FhR zdb7Obe3?2gpkI=gom;5$BKl?7;#^6cP3SGM(z%*CPoSTa)y_54*^FK-Yn*GT^AdWE ztaYxV&dcbvvd+1RI$O}|WR-J|{Hq*8ZF?hx>0ki{y{Akj-qDBIi3)U4ed&dJ&6g+1h*0xr3^ILchw{#zV|1o3HQ6p_n`5 zRrlX@?v($eg>0rsb~@jqY9ac4>P6g1%hule&R41WXY^~FZTx^)X7l%ud=T?hdCmPp z&Ry~sTF7R0$}Z>oR9%Vwka`h!(XzGoq4RY)A%8{hmDio0GLN4`e* z_M?nPcy8AC@gp&dWk31|=NtEvRffC+DC1F{tF?aoXw3a`0DV-BICo1~{R?`R>}I5F zTvqbrWiuZ$9uapla^`>RJV4d5)ZNY5#*fKb$MK^ak9dGe<{x#o$PFsX*Hh{Lhtg{0 zs@R^EWy@L4wvlZ8%Co(w$S2TgeD+l0Q>O}_H)rrkQ=M%>O+IC6@%eHlpDbtdnQ{)F zCg<|{ug53J`Fw^n;M1cKpBs(&#AwQEy*Zy27xFpLicg4(_-weCPla~8t~;bda<;jY#HXWEm+9Q>P}wpi)1mc^?P`g-^oC3+oXUuVp--%Xx@a zFwqN{Tq~Jst5~j9vjnYSSy{_cv5uFDy_z=gGO$<5Miy~<6>MVhwIzHD%i=a3{p~!S zMLa?~nYO!_n7dir_Of6Vvk2{HVL8C^`W8#(J1h(D@#wzK^!<=2{V~hprz~}cS-y_2 zBpv0o`6XL~uXy=?!;ASlUcSHO)q0G@^miKR&1t7{FdsXx_PT3gT5v-E7OqvvRzo~w1W zo}Q=YYkh5?4YiS8ppCVOHq~a@TwCac+EQC-YrRO@=*8Mr+i834pg+@&+DY@Zv*xrw zyJ%PKrkCiYdYN9XSLl`6U3=(NdbRe{UfNsx=rww+UZ;KadhMq_*Bi9I-l)IOn{1{e%$LLrcr{i^kPSo3Vl1|nsI#s9Xbe*9yb(YT7 zIeLfA)pfTrN7pmxfQ3_^K|m}LEju;|Ay#V1B@TaPs50tiRKrLF=TE&#k-Dl4m>AkEl?%;$ zilRjQJA9cG#pvcK!@B2Kz=l=h@@8|8{&Kp&Q_DZ%>(O17xpx?gj0NwGWFVQQ1 z`}g$TJHMa}ZV$b2{$DA$?_0EI&(~-w^OxlKi(~Zkp-1RbpWH|{edb2G)fc3PZu}g5 z&wnr77k`}YyX$sxe(ptb4Q{80{_$Vv^wKij{G&7U*Jnz!R9~jP+is^VUpzuD|6P?D z%_jZccMEjxwSSkE1JNk?7|A21Wy@&P;?4SYXR{B4} z5xVWh&rRB(di`fKHS;X}_V4{G?fmkCwEHj9 z^!NYmH5&f?J#^-8amIgiKmGpR12lW&&uNEe4~+!hr2P;4G2Qj2kJHn$FVSPkC+VGE z{DSWJ+6Y~D-KS_5e%4j_SGsB7X8N=LyqnZooov7LFZ9BH{W*R8p1rhi?hX3XZ+?ch zettLQzH>J{_H>s1Gi2bpZ8!FGo(_EOOJwMcR9Rjjp=( zI{N3iAJdn=@l*QS_m=4(Wa%2&L;qBL7kdxWcSHBkZQt2X562#%UC|i1d~ve>w|^wx z=iT&`yOXqco111{e4A#zU!>T*_t4R!e@=fo^*_kJdpG&EevZBq{~zSL=6d@2AAX1K zzVr9!%-_6B|Mt_L(AHbG(&ig)qFs0IrMu3*iM{Wn@BQH)(BPN%)9&q`r&nJ2ue9fL zJ8A2e57J*gHBB$S_Bw6Z_9gn>_nxFN+i%mqHQuNC@-qG1KQGYkJ9g7GXa9-1uDYH+ z_l3O_o;(gYE|bT1oSu0iMX&wCIr>HYJ^I0+KcSspiqZFSZ_$xI`!4XA?Em>C{qA?aOFu5xY3N%a`b^*TwC9QA^t+xH=ppEp=L^{L%{SANdINWFgWJT$gUSXFt`b2ldZ_bu;b3;w%P`-=<>bLuIVM}h&%eW-uMn-$BCWMqUOY*9{Wue+uo#`vLI!8Dob~D$p$Mk@7-PyorYmx5?Wgv@Qp(qCxI&J> zW(sFv2vmCJ7Q(_xEn&;pTu;S5%aX(ywAw52V%XC3#d}G z?r_nSc9!!)mUPGxPvN&MKn3aX8ECn(E$e4F_+^%i$!6SLhSsaPO+bQvXsBOSq@Rqo zsN0ff2}8al3*I=1BB`TszrLmtz!_gr@Yc#rYa}>cEm~~-g(ZL7=?anXP)o>Fw8XO& z6R^)hXMw)v4+rsG=NO-Em<-l|;gF{)#ua?XDz#E@Fz)a7=bR*}q-9(->>Q_NSn@~1 z(;it>#syJZFfu$kmQ27@XZeIoxe-@!q0(QN#Tslgw5|{^b!W@X!BDVD)}A?MI1+0N zCPVSBZumG+6m>F9JJQqjL1$02VknT&WOo-`9-M?rOe<;WAeo6(Nst1x z>NxOqMyw0b?vgp_@I)NB$`T_rR@~0CCpJzJCqnJjSjORMgq!YY*2L#mur6Zm}=O+1Zv>Jz-ja*^2JOLRy|IaSA(Hss@89_6oZj4Os1ZRV1J|r z!$UTlAbTUNzfc}(kUB1bPe4v8{)^wae4MJ0Ox>DKRZNLSIu=Q0?W|3PLbjNWL7MnY zAjRHW@teUBcTcS!d!?3ABJOdx%QfI+kJRH1r!xY-saDD8%=#;d=^%+1foj$7ijEAaiAKUs`>b$spp@ODl}D4eaaEnDClYALvY=}2rm7D`(!(NfJ+ zhR7U4KG>$#3|n1k5Hds}92+axa!@ zft1sVzmsG663cXTc62&e4Mx(9;^;u5?n-+|#>f;3H*N55wX9E!&{fX38T+YZZ9P6` zcsLWOj?;K7=y16!-L;g}6^RY`YmlhHmXAA=h+>F8EtP2A;)G{{EREhu9!LWaB=%?u zn99y#a5`D8Nt|WPUk*1sLDs0YYA8Hp?l#TZD{i*YRq270*A%FgY{{l0!e}*@HK}_8 z*5INO)MzjjL7^;st-TA1k0)6sQyD3oU_onihn9G^~PLn@ekHpgTX4xim-!V62 z1y-DoArcx(`r+$otu0(nPxn+(<>cUK$P)?102KQ&Ry_{qTuMLT)>^Wej*Z3>vt$Oc z07QteMyokSXW>(2&Q?Pd)_uMqkgGQtHrBtqU~`8f=^>vVamF8=tEa0t4d_cSQ*S0~ z0X`Xcpm;DcV)f7RSDgWGshq6CctWmbsiylH#CcnMfh8ZJ%Y)cmH4_?cgq`l5sJQ~f z_&eQ~U12JfMnl>v4aDAYX&u5{5JxwZ?X=9%cu;2Y&mYp z!51Np+bmWav?qY<$e1m=Ey-Ww^5>iBP|;dnv6t3Zq&^zY+u+fFL@ktTPUx`~nJ$;S zj6_?i<=oJw2x*?-WEqJnqceGJWoNqKoMXJ5EM>1P*YLoe?cQ3}f+*!8IfQ7=agUH4 zmYt(P2q_AU(9Ce|utc`SPL@@};&dk=t!}%1Lal*BvRHLB^IiffW1x({5rsK3E-&mp z3QTY#l|1_ghQ)rnV5&ujGgbIVGRA@t$50-bM1l7|8|d~Av2AKWM-tX7Icm2R?3E#h zr|KDXR#+-+@X-0TNl;|RTtxUYo2Hb7pUAnSjdj%}!H<2pt1Q~IH?ZFnY*W!ByuA0d$@m80Go#+hs; z%YJwlEl{z#kmX`$ShquuJ-K|-g2a~P$N40$Q^?js$Xcq@l5tsVexzJ13D(MhHyOnD z4Kc@Xc}cH2^uK7Et=NVX{fxfR7UeYn^No*I;)GS5dgS8l-tF~ku(ZmpTB0mZMtBx6ZxXN5~#E8A+ zn7_u7)bT=ReIDc-KpGpS2!p2p>u7FmfFBB#}@t+>HBjQM2FfWsgejPDoHU-YCY@^tY*!H6m1nfE>NLmJD-c9 zszEA%HSnRwXcbO916$RG<2moFE?-o_s?Axf!g7q`X>2aX@eTQ=&l!o;!?xCyzw9to z%5{gUp7SOa29P<$s0(Kkt3##w3xRU87)uW|;a-R{b!zd1oq0&Po9z#I_AK02p<*7I z4h3Uy6eJ^Q$U97?bP&0wr(QNM=^9-|$ykSdb3|Z#$><08>RgclU%R)Qv>>mHL$?F) zi7WoIb19W*hFzZNq8{Q+1XPAXDL0gf!GE`ULeq68Dux2b^;Ubz7xGLu5^xHTa=>mz z@Ju^%d7m>_g^X5HEHaR@Ex}v(%g&%<0dk0whBSW^G1fyJX_#7bC_d*aN1=DnDtH*W z0+q#(HRx$r!}!H|+K~yRr}bRVNWl^7Vo8tjt%dB+U?!c*dWjJR;Cph}72gxqeGhf? zBWStf$$XBV&VCspg#%?AFW~M#@VG>+2zswxpBOjcFwKjEo#AJbHRet zG-@9F-l{Kn{ZWp3?rbtLP9Tv=8>$0~sL>d<8CL|-f7xfHUHWAe>L)=hu(yiE(0AfA+ z)^wTW*Me%;;)LuFOGtwAN%_0&?C1MuD}JAIG~`GRqq;N0$LTqW5it)bGW-lj&6bSS znaI}IyP{f4)kB_84=f)j5pm#7NDRYzoC$Z@13hG*i!`PRwooGT-V=nt5nGK0lP&=aa#-KeMF zhgxQ9(L8D+KH1Bwo=_vquDH-|9!Zyk^o+igjZ870)C}U(@DhiiUS2&+BGV@Z*>nNpnh0AKq_5+61i3(h|TDFkZOlZKFgzs6x z_h5(psb-iXqX|`oGiS3yw8#dGUUQ<60UrT5t>KtG7X>e9N}&v{&ecpn+Fmea6XBq1 z(6SJY0H={M15Q6!Irv?b9||wju>eotw|7?-!9ir=!c1+YRL|U~%Mlt54}w*p&LLQn z4Z*GHNSABydN`%k1#fpb8Fqyr(TLOSU#Vo(SqM&~l`^n$jUBI}@Ix*nYdOSYH*~k( zTLIP@zQ@(j>PXDva23PuB*Jb#>ee(U4P_cKZfRJ@+$q1ep!x0n`)AOpnc(acGrq?xEdCB&JIPf z6bG9*)K{(DrN!Lf2wV;c2N}|R;f1^zTp-vmS2JmbUT{9pS*t{Q!W=^#u6PgEd(0{@ zyOOMU^~}zj568<{_Pr8Dr~7B{eEl_B&KcJ+lT16<5*5yh+akq56rQsI(_$SzAd{=^ zh1_#V8zo+|}PDKJh3qK@&ZCtbJJgV2C-V1>nH{)IKxWJ_AdJyxcWz#WX!s>pEI zW?u@}{XGu&D`>|mht-X*EAc^Van8iGqhYBwL*x63{k*?ulOj3^12wxCkV z+qyZ%a1D-pG>}a?IU|gqj%TDMREU|uxw1JQ0SmT+^MXiv!Wl28xRP$QFU=MLOTO?3 zRwu&_W)?g$!`YQJ?j|)aa-{X-hr%ub+tM)}axLV_xnzhyz_O0EU@ygRzU-C#lGktL zYRl?`#?&tjJqN90M!~14skFU9ImX z3i*S3My~*o1(;E>Ryh#LB*r=!hdTzVTZ$I#vXc~Aq{yv+cgjZiwnOOgpTO!h!Ix7 z^2gZ)J<~3>l^Fhxzpe&7P(9`kWFQN+-$HA+%TlRvagcXgbjlAgLRON@UKwLZvPWE-jsvn@C0Zstv#->(jImuw05*g)D- z4Nez1BSodOI#4nD;=|Z~y(gD+hwJcyRciBuUyFmla|L5N*i%40B`Mw5t1JVB@FMe3A=s!aD>*GM zll&9Vxa_GoV{fl8`PN;@&4pbVJ%(yj9c`kUh$q@B(YbPf^W52NqFGE=Jw;0vmDPIo z2!7ij0#*@gl)&h?L3QCkfG3VFT@D;2vJV4%8TQ!WaXCx1k~tr@G^T^FX#-n83^L@p zv;%PsF*m>~=s#slZgdfFW=5=%M8gbji?px>WC9{9JT5pBKVyw6O^Gb98AtMQ2@!Wz zkz=-c?JV1-1$heh#^hYNq+>z}Z8P&T+PnQAmJqLU@UuX4HE2rs^uaka`9KM}QIrf? zUW1x=%{d=8&KfSH0kCp4MxB|F@KD~4CTw;QfkfVAZvwaL1ebzLq zFQa#$G)pszeS&A!KnRp`D}Go-fMp&?^VYbFt46i55>*iYSVGMIDzji=*-;b_pS|dr z*+dk&YU08V3=^|39488ffIx4SnF4e>*Q1ZSN#`mIvjuOZ#sbUUh+5ityjXv$mzJF9TjVhSvI?cG^3 zC>%?_5gf9_j#Yf6uW9r0k@O0FUUb`vvM zT$Oa!IKMrhY=U)NF>B)HbI;t6Gu%KKpRtaW?MwReHLL|pl@iWPq)_o_S#zo4#knwY z)&%a5yK#<}VGZu2bH$A{v{`!%6>CR7@EK~hJi0OH%IiPH&NeXzjVCNoClHoW`5}b2 z2wccYRjR_Q0d6Kh?mBZTfQRgh2@xUPUUR{S}4&RiiIVRWs+q z6YLXrz&pB{Hb@u0`7J!-3Pcv1HtUfIeDILPHFZG^A(`V&qx|BB(cR7tNgItxoRbJU4?pdNN}N8?j?4m5-F zgVzRv8+cEq>W1o$bT|&iS`>oV6`r)J#wj1u^>rsI9(YX1&{2Uc}B|#WQt@e z_tZf=)tzoTDvcVd!Hz6Stx|RjQ7CNoLT20v)>*x_!jd@}PJ4E2nBPw7d1~w3KEEN@ zJAv*pf~1aB6n=k2`dr__V=IfOLE8K_E4a!~!-<>==exQ)Y6E}Kzf^O3BA#IzYFA#R z8?hEYT{UZ8%-4e(c5K+*+c!n>yaFs@1G0wRW_~kkgzgJ?9h{by%_UOoRoNQLZZL3& zyCK(5QlFw&?N8>x6ZWG`H5B%6K~C3T6_yA1Z_7Zh*r1=*d8JR85`D^9abC=maYN8m zOfFU^@ZlO!bn&n^6Sj0l|V!TH|v zvQM4Dk@e1Vt*gcc=dvr$Rw}T1lNlol{Q+;;GJxH;gr?nz3J5CEL!D)`C;Gjm9JsGE z+RAh-RyB3oh6cgy;7lYQP1=;wE~eypYMn;`R}bg0*Ke-u9C@$}LlWREndPqJ>gizB z;mX4|nc$(D)RC$McnV?8>F^9V7dflpGp(SXtlQDNIFEC=S+t9r)pnA%oZrr?YQgyn zN!z70aPmfTK8K2amTT`TP4?&@*mh4S?(d$hpz&d55)eh!bOww?U=!?j_LCd|O)1|3 zpN|3BbbhMcc(ZKBTIW?fzuwG2C&qvQ)`r|Y>z*s|6bIHa)l%hf-GeS_5}I{+#hiB| z8|XKcP~(rJhfCyW>fiath%Er=9TlJU72aQS(%aT zq@A3CXmysF(#?GBgQt5Hn?$VRnI?Gp)wOco(nx!TooF)I%4iMqcTKgjuMu$#`n-W2 z_7j!t(0~IuAzLw@KF+@7PH{72e3IIy`g-T91i}s!=Qn_$m$Pq7`p~uB9yd4=6SiC{ z`I>du+du_HKs2Ai_h#*-Fw*da8YItgHGuB8dH`mItW2xU_fDN8oY2j!SO@FPklNP^ z9v2Cgr&-Kk&=>NvUFcb0RkAZ7{t-n+5JZ}ih;s6@+AkRxDN?MPa~5{%JE z9=S#|TY-K-8z9-iYNqb2VGa$9Z#0k0vlk+%Y~dlrTLH zdX=kuME`;ZYko?{iNa(BrwIhJ(;D&=opH%Iz23c}HZUK3>51cLS8d`dyuCY%c1RGb z^`5^)oK$8MtakZF`8>(assu-(4k4z60Y=?8rF=i$Y` zKCMSIG%0~gYk{{dBN^81wbP3(XFU|O=93_!(T~OYt=?U6OK%9oCcfgH=q7um$Js!I zvw_s!^L!nb zCJ|s6^<#(V;g-P{uvSAoP@#AfD|Ejt-n7*YAQ;)0lRzwWBYJRj2c|$R7q7#bTL>=W zY~RUc?W3#7sXo1rWyo0K<{J7hzh3V%Kn4yu3Td$ocLGI{r>DY6kRT=4HBJyLXgXHs zNdm03Y7@Hg7t-@s2*60-{Ir?%N9Bw>DJB?~XGbjKis#|&?*g9R0t!F4MZJd7r%Cmh zIAbuKkLL22C}9ctqptDHv|E3EJD|Axsyk={goD_5Ql0q(v`sxJmht=+1P($@n-zgO zSDtRb?lA|3=X|18$)TH!t_WsHyX~0fFgqI~nZZN~F&4IF^!nEvDy~Flbsj>|^k=KQ zb4a8M{(DEYugi^^m!FLc7=G31=Gjf00;*Xz$4(^7sS>_6ne098dTe@d4y+%~1;W#- zl{0YQ1Obb4sUE0j#^3++9$UUmZn~Uu6xextitoK>S5jhb! zY263;b48afE8CB%(3dueET z#4%b9(dfX)6)3+^43D7xGnbtgGmXJ)EtLRY&OS!deGH_+*0^@Y z0KHY;WIv5(ui7~?bv8)BP;st|X_4FT^iMIwJn1g9DU2A(+tXaINusvh% z%2DHtx@^Md@=f;q_!l2y2GRQ@W9V`r)?zXZCfVe;{G|`pL#hB~&r9q4HVg!LLZgET zzrA2D^-O0R%tLbCfrz!^&s0B>9r0!hRv>lxcDIQxv!QPa%btTAP^P$e&Q|tLO&~JqQ5{wQ?ZoprKB*_yTv`EoIsqw7Qrq!* zm3CBJ;rtSJ^jEl#Tkv1_uz)^+y?(#MEdnRQD;Qye zj0Py$yC%EN_HNh_nuu?%@&32MUn9~*{rl0;^wMg~@@Ehu;x**|Ik&6YODZf389p@9 zG^4;*Ak$iwQ)`x2>;4>aout;T`5haA7owOJ^x~P@FfAL%+WeaGhxh7rIA=?Z89IlaSEf?juZI7HGufpxUj|!mK_Ef{EIdWwIHDx#89!tUxTh2%kJWid1Ni>$yWU|Te0g_$Vr{h&t=BA zylO`5r1s)&s-D>Zz5Twn4|(i>Wj0N6x*r_Dnq8o36u|N(~$Ay`| z=4gB#yp68Yh|>V2F2iOZ5i(3nrO)LB8q{v2>u3yh5#ql5iOtDgaCGyi@s^dH&>4<~SWWFC!&D!y)q&4{ zz1Agv4-ZGJGi(lZ7uN*v$)RE#xg)Q*Lyu#*1@tY@#YX2Y+~co+e*i-c?^-@l+n<|6 zsm~h5`{z^aQ_gEhwtDB$(daWx8L=YkhY>$V3PVL^W&ZMFiP^jN!(AqH!!^`k;NRf$*hd*LtLc33AY$^1%0+RIw2@O!4uKJTfjUbm%K*>Q zBF#AqHw09=&G)HkFmXYgHzv`r3k3LHTFpN@sX>2M(5_@4h#@nQBX=D`v}yc4*9@^V zMy_jxTUXXsz3zpB@ALN*ue(Wkzk>~kNICa9vOd8UZgJUWA|Zf!uQ3$eIb=tsJr39ZFS@xK{7a8r$!vy zAC+ia@?^Tn6U;P<+yD-$A>}O2rcYuw(7`?f#|%gWd9uDIu>5AP;T`Xw62?%bk~SIDu_4A zq;ed(DJS~i?I%SSZs&AiKpwYN@I0LNsB@82Fib1wX6bK1wJ-ELYn#jq1Gw9QF^r3b zgCzEf)5>mfnAYtU2X`mF_|-}-?oO^bQQ>468^r#qbXhE79h=L!!_Jg>Xw(q{6OQj1 zkSeU=h1i>uG(mLpmPpLDeYqeRcF33RmIm zoXie=!Q3-6eelxB8Qu`2?p6=e>eHuA-}As?DP_wy^ZP5vt|3Uph2Gn0O9P%dRmy_% z@kh&;qGJx7d$_>P+xETl-*l&~DUmI4@Mqnh-cd}#f#%1_`aSFi#u_F~bT8R|QUM%mNMD$&eA-p_J3HpCX zRY}6bL06R*AtMz@&jGPs@7)AG*}sZsickxn+Uop5$#%_yIIW z<^?vv=O`dq<8E3zu=kY9m-1s4AnxCf8(YpEJ2D)2kPbW8L>m|=w92E&In;;7B=|cx zE`n@(m5?|qdf_3`%rL0BU2ulOQIh2hcCT+I&QsYZCn0H7V87x5ttr-dTBo|{Z!hS}zV51D7Gg@t)}RyGKWK|MTL-gQrgKHXIhawbQVb5$YJq zr7DX}%;4C{zIa*KMYm!{7K)jtgbBUyQpJXzWo!OSE?);5%j00;EdJ>|tDmj1tl@N( zF6iS2lS^#?>iTaWG{bfHb(btjk_ zbV?716Nde553iES?c#m0hC0t|dF>GV0Q4eqYVYpDB=>0eXZI-sToR@i4q|G_)tJMi zQ5Kn4R~F4*vpw4!Dw(`?T(4U4mh+3KYc%LKW=V=wwsqJO*x0kiJ|pYKq(qFGMCL2l zs$fkm&|5P$cvzL{ zyXx&N@5^r}KT@xxj;r#^F{6Wf2M&up;w5E|dRW=5ykWSgWR!#O;XTO9!7^iv zvVuWVn>CDEW%jwW6IT)D%C-{nWc{vkB^%afIxv5I7SZf%3w!tpXs&u;awqav1NN?} z0{h0^x5Dn!Wvt8*w>N$0wY4O#RDUGCLF)V8_|Z2E@3%?$F#6a0aYDI-1B{`%KHxo} ze}9*FSKh9^FSi)4R9@C@Rj(%5dF)z}JE>*nJO~y55~oNV*uCc^xko^sNS=BFa|#!g z7qyGXAmqdXCK5Me3XJCnTDog?ThVI6WDuF$Axo{>=f>R))hk&p=#d0Dn#fu}^L8VC=Z*pFT9Qr;D7#2K+gy;8oc+$|qfj%l6BFXcn(RpR@~ zE$Vh<1DGor897B_fYI%FX%E4N%Z;ZEq+WyvxX9Bq5=g_@66wkk`Ou8#k%p25DHyJCnIjf899&4OXZB1;R8(c3I48G? zV{Gs2L%Ht7OwtbY3b(6IsNWZ0!sSCGuYK*?nQ;9UjJx zZ1Ajs^OOmW@{?9Xj;<9i!r0{@1u_=L$aqdg;N>15$qm@o3hJv=$Xe}`ZwcU)j2BWQ z!&Bnt53|94n1X#}%pmWSGB_A@snJQ?ShXk^&e zW7-KK~JF@r{pT7FVGy1tGJHnU8}J zBO0v8SX@HBareE6=QsmjV}HS%vLyybG8mW}$))@y9XB}WxHBJh0(YE@VQVPpwCSjg zXzm11voh|C>_x;68G#u&0-^(R3oL5(uks_PS-(jhdvq%zF|}SOPNZYVns$I!Rdn3i zRq|uFQdPs^*}8KB`nFYo;R6C{Bief&t~)P1K} z!_}9>9;8DX54Sw<#ZLn{$3Xa{^^3U$%*jPu)^Z6qdQG^XYH8r^ObC|fQqqb8I9-^6 zZnZe$zRH2}&;Y^&^0knfMx~iX>~JB!n^cPMWp(yo@`4evhIU_2&KVfD>D-|U`?{tv zVGgTiISa^{eUS2==+rJrTG^spsjemM3^>65zj&cVkhaHh-@uBrb;O2eHXa_j_w(`v zty|i`=f@ox+;LVjd4Gv>0I=kKB`ow?@SzCCCUNsPly()Z7;5mAP@Mc-j+Ov1##rSR$mO{PLryscp-Z zcdy-YX3e|1;Kf#?j9lS>9-H13oEzx6%@P(@D@WLO!!O(^Zh_uxK<<1|yn!+W`GR;x zJS*VAsP!;pebW~|{Q`3K2WZt$+&$M*Hrp5D&H?174oupPl_BO@B{evamLVmhdQdHR zs67*MVPwO5#)(NEJQ>=}F_@)H+62rQ8ed@1$B5;vB(Hw!2m$eX@*#1Q3^$+O zuw$I#5mF+t@flK|73<`)@-T{yQ(yU_d_j2<-V2QB^f1QH39??D8d`u8kGQ+-CcIL^ zQXJv>yq6I}qCw1v;wFU0>NIs(9q|a6tOAQ&vsFE&Y=acfk%mO8SD#1$ zwkLFKkl;h|mu#&pMeRy5+GT@|zQhZ5Tyqo5dUu0|7V~+VkM4uHv~NyMB5Ca&{=9t_i^n%!S~uGF=06=bh*J7!7epqyej^y zZi8RaAjLW|F4A_IT#PA4o7Eo8@ z$nRso1WI)C5H58D@jakKM+hzmDA7jw_b4S>qmEK+Q;sOxkYO0Mp4$iJlRc4gi^84= zNTGKh;*^Z@?kgqq^(pg?^cGAhF#7?tVk5CH z(irbE;;`IJ+UecS2jGt|PghRzfCA6;;>OxYV{l;z)Ad?-x-kf*7R}>ivrYy`QweIg zpolk9l+6nnkIMCoZkedb(nZJ>$~#dn$}U7&D_bVl1V(rvWt%+4k`~*vBVrrpRy$p1 zSEdoP4cl*F&h8;(RhN)MN3SG#_tqaOg=x<-E-xpKR*2EKTU@*`wos1snf zov@XM$Z+)LCt$UFg8;zcg^@)*4$lO;6&uyv;2s8_1Uqa>C7Z*zwgztC@)skHQ-B>0 zkGO^haf>f+MM=Q62_GE9a7_$E(nKyB2Ikm@9w|+2p+4({Vtv8|uLMtwy!iraHsdz1 z_x%tzqQukG^42kk9Md|?xb8s520b(2UWvAhdE2!*W+~Yf!&9*pe;hMMAClkL@*|`o z$hd)7bdvGCYma^(ev12?8d8hXko6w*aj7E)BefCIZhLItsX^a2OUNB@i`z}wm<3IH z6d7bV*ccdmvVnTM)zxqgl@sXZBNT%(ji{IwW8|*kPl-hS>vS2~1iu{(mjQ!AMjvZGs330#S)VZZV&s&3$h zs4w9LS91W?&6%`B#l)F3WGz0FwS14{(I>XU+jAD38QDvy1z!@6iyIiZIBeLhoR)h@ zeJWA1i!Y#iWu zJQ6|3T)EnCD`|JXwdGw2D<jqbc$=0 zTf}y1-LNBeapctL!+Qv|{p0cyZgryoap{QWSGMfkV5x6liqMQQq zHXxs#%MFDa%$~x&CG)#&@Z4!9-YekXlZbKcfq9z=fp5V9dfmsD+)W?UPA+Zsdft)Toz4x(u zz`=Bz%T0F~O*hamt>#ud$ei#oT#p>>5Y&otiKr#^~{No!Fn7?LQ1 z5A0WWDOpsZ6~%7Qxh7N$2HksCn4ws~X#g9bZXx5^N0%`b^&*%I&Nen)lB@RbF`8E} zVp1}HXe^(zp+H*n4L#LhglQGG97pN{qv3|?(C^no=yFd6?mZY;z@4XI-3VilcmuV; z1bQ1>A?O&zJ`@e$&!oD7(Xg!*eoHwb-lCRm5b0z(!uNBu`Sa?dYx#|2>Xzi%B&ts1 znf#%NUt-q8dI@GtdbJbA{bYFf-PhFfm+}qL+YK*0Ze+cEM%xHx z>a+^2y>B43WXC&dkO>v3ZO}P~Dmadt8waV?L2|f(oOgiKB8E~mj~e0kd%42Ryl-xZ znQP?E@Y!0#<4B|8FETU5o{1~nR!B{5Ydd0OM6k<8&mF1{bI-uIVSeKHnRg%NcvIot z?Pk8wnn%<uIfwo!h=v-W@K#9mg<4Aq1ogBvkpzf-7j?@Y;_o*fw~sT&`6VGt`S4N z!_y-XW=_>=C|x%o*3tX z17>{aGoE!#=nTEKb5cEop81DZSTb!-LoV7@WCzG8F<7Rk92ND9LKEdj%s?sw^_emiT9?&cbzx@y@9@5+OH9JChB;J8C$nO5n`Qk zX}`*DiM(6Ij+yIwa=}Mpk+f89Aq-7t{lK*)WakkBVzLAVWm+~MjWG9u9K8~i6Ln$d z5!cXM6pYav&fCSlcfPj|+?LoW!RP&Y-yKH;@7wtFk!_uD(THx;k#RH=ezY^PXY#m= z|G}=Wgr3kUQv&Z7h>gFV)wYc2|hAx6Y^lLPHyLEo}GN|5`IS!^qt{1P6{Mo49`Qa-2 znRO&y7kA0m72s+?p2Hf?ok#Yb%6-Zy?yL;v6JMWpiK^CTE$xokncNRYv$Sav@S;TYY$DF4Wj>mZu{A;3+f>hW(xeL25)0T zoLBFFzk$zD?vQUQ_XE)#+S}Cj^pUOScGf-B%ygIp-Vyr1HJ>KaBjQHodA?o6xvVJ2 z=f#cU5eZc4ZR)EefAU{|Y&B^H0DGMbcZt_OK&5Vkm0ZF_YwkNWa&WLGQF$Rh7uH{Z z2~;9x)FniwjANuR@Kkv4$pKinLpg{{PCYmr=A6X^=2NS8HTk`ictO_Ytos7$GgL(z zkk_O0azPx@I~S-@z!4#D6WiJ$EA?slw!A}mTi(zAiu=Xe)Oq9>f?z1<7;Zdu&%HPO zisbc%SCs3;BP4HpUcV)#BV@TTLivi+5niW#3m!^!bo9XQ+ltl2aiyaUZph z9DFj7D&c-<(Gfx}28p$U;pdFh;d+oGo*Z-zl6Vj|h8;YuFg-kqTa}maT~_Zpv^L4Z zfNO9?)7qD2eCY|eSOUw7JX~(;K$I}Pt*l_VLxm0^3LYaBL2z39oD2^>^^2Q6|0{XD z_KNs-h*o4K_-BmBbld0uNZhyanP(q=UA;?rUEaW)j|My+MDdorNUS4H63=0RZ*gvD z8htF>7v*l2L_3OFQA0r+uYgY&aSc2<)biw0BL^YD@Sqbsz3Ni*+?v+ai-%sbRZe*K zXUmr38FW`Cpo!qPlxx9mZIg(7oSz6_(c|A82H@lGA|E{m|7dLd{HOnX%?po^xZe05 zqLSCEE2!i<-~20Z0;E3k>d>d^V=k0s$m?(i9)1&uRG>k0H=;ypJT-{P zA1C6{;8O%&El2Ca@Oa1?Ati9p+(l_eTLDe~ti6)Wxp2!}o}ECr1lz$Cut28Fb%6#S zA@3L82BJIE`<16v@BouDJB#t>ULfq6ZAHhV+$i8JnA73j(JH>HrsGAS z6+=fLZFC%J7v4;wHZenwT1hU}5gCD`x33FGB>Du`Zrz4v!3q`?GWh_DykB`4Ug9k> zY@2*@^0-g@38PVNQ(hIfNgWaUzm;rw#sA40C8VUiLfWhEeEE}~B~+|GY-c;VghxYv zT!Bvzr?9`(jX~$4*JB<-ou#)B@vkuKEas7&D* zx}bedyp=hLoV+!ctk1)M4xJ-$NNzO(i9{x#!D6)gm2U$LJUM*ATc|FNlD6&TEoT09crRJ0XKnyUVj906Lbn@^O(W9}j*6#n1G}M2BR>Wbt~Vu+sLU+k4if5jL&f5m z51xh3X14oLundnHbtLNBt?<;ygx>b*PNOHagFO6*BapeYZ zyX&-PH245WMvpsk8dkB!anJ#~nDZs@_91)CoN}_SX4}!_gB-{~ZJ-6i4VUBK^e`#_ zW)RSWkg$KXi!PtE7P}@dSa4I$yMOa*)p^V-kvzna2NCsA)-><}x_r1wL5{y_-}YP1 zHErFgZ)!jO+I6ILD6cBOq+Bl_VN8P(qw8Buc{fp-nWOV}BfgVfcbzlAriOa+~@jAyGWCkxG>a0_rG3=JQgn$U%nk@*7 zjp}HG=fEYDz$lbRExW_97U02q81QZlNXa;iR|cbOM12W+N;{x^kPzy7@KmVrX|*+M zty}R%gcCXEl_vK4i4{)^2OsVlR z{>?8ucauiqC(3n7hXF{Cc|un32G8s7^8Z-gZ2%HdUwx1(_yd8IF!fK z4{~npzEk%-2x}h^)8LeFUm{+?L^T@oVzJexEOO_-=Yr>ed{CdV)kzo?@;A&JAPQ+Z zJBr!BuHpq$Nqu06_G1nkQ%&51ncu#Q>=b$0qs(Av%%cJab3YvP#>);7@sbw&-|Em5prU?VuajzMvjU)>DL$$ zoumueg?SS&gNRfOR8FPtlF5upwmp%<`$rnC0XV*C_Ibc}5Wfr04mq>5mKh^+18{#< zp0L2HQ}l^t=%8Wy*=3BpLJPO8(y<|rYy0+*ZSP&XbNS?P%N9&1k^0q7fAJ>q6QSc` zxv9F`K8lO|h4=^dff{lo-T603@b8ckf@dzC+^G z74I%zF(8NFTu9-2o0l>>e63?^dxZ?Ydgn8L`d#*b9IIY$L3O)=Npe1eT#Siz&g0Xjwqcv^<1Lr_Q;x)h8>V=mB&dJiASiE#QSc3qg@ z?&Nk54rjY|UWPGnwD0g3Y?%sR8vitBoFNtRnpMXceLl__#gYM5YFz@gXt*CdV2cCM8-=8@|h6kKa z4u(g;N;k+bFbXma7zMln$)9t)#b;oxfkT5tRLtCxd~~h8vzB+)+-;e_TPRrLaCLZQ za;wS}#5U@DZQsu2Th49=dzG{8KY@&84XJ1FngZ<+_4-vG*5nd%&6oA7h4$y=Kj2oE z!P_%7IPev54|e~$@O#opU%OF-9~eLXNGSIak{dn=DsPV5Bbgj!0+;V%*J| zsbCXKR(VNEtV(n^WR`&S1sp)ldK$Z4LKGPIB+^rQ{!Mu|9# zB+jM-?&tX(qOsfEKTK?e@9%lO&+~oWUz(raa)(EYw7xI;nYw)L<_{Iw8TU^g{@|Z~ zq{!9$JQYRy+m9ZWfo{J*-oiBuxL_!kP1|4Xt71l@#i_+EOkyFZP|&Iv`xyFvm|5R z(hpt6p8VrK|K0z#KgZws<=_41fBFYc(%rn2#T`_O?$=99hH|zn+22IJ+S>uRY>`J3 z!6psw!5-z&4%RC8i%gw^k1ZK#2dOO7uunO^afx+`9^r}a_M`KA83%cAc9NpAAg_% zKT<)OPjCFw%fDhouJNW!^<^K)7(6mn(nS1C<7sOAnyWmRndCE>4lkv_Uy=bpQne|2 zPi&8uc{0eS;C0r^rTfIEMmAw{?cNAK1#VZ1dEEt-vt--y>L>CG>U*3@-RN#`fg3(z zW~f*$hBqMHZkB31s_-0vABIpqUc)nAeCy;#)VE-}J!=0z?TFL^Exhq&8dLgEqYSr8 zh~#iO;>X*}DWE&5Pcf57CPtlNx)W0^os|-MPGMo;EBBOH$xobe+LZIe;n*JZAs9Gs z>3QqLeM-5#f&f8LFmQWOd{`>fw!gl1qN<~~kT?Jl0H>$2aa!*Go48o`M{qIJ*r{N% zv-C%E8B54%TJpCla0DVWZ(sT-+>%aV$c-Cs&g&YS%8`g%y3FY-3>4Pha~!}b#4phtf|vA(L#=K4lH2AU_w#dRmAyy#U-^At z&x<0rzVBWa^l(a9m_!RLu@3AI53k>>{SA2eHmMFMPOkdsbmt zXxNlX*JAlIUmO{nI|*hw*W9C@u=kiJ?5gx~eO#BDHs@We70)VzZq9+Dr`|PC$vkA9 za9(kKZ`1sD>(}f;bFCqYT%tQ>}n;lR%vI=1~cn=IX=N6*sQb6Nu8nZFngg78(Er*C69-#Gu7v57^roG z2zQ4Gm_6=7=QVw|`>OuE0WR~3c|t#AJq&n9UquNR?EwaDO5iuIXyCVZ+t>6${j~3o z<`MI(vY&piOWB+B`x2GXVuQUEB+BL@5&TGHFp-h85;sMWhrs#nsj_0`6PrAz zQrXsNqPyd|QjeQf)1w?5xJKp>`wrq$AC#Q)kEC*yzt3SwHfx6(&MaiJ7qwOkn$KmO zoY*%pP(GGZ;-E(M?_Bb&Ehl-Y0dDwxeUsUxKhU3=2hFGU5%aX;;cU{3;JZrMq2t6x zZ?$jhb*ZQhgSd{KQbe%ku{CMV-R3m|wl3H@pPF6fCQkhZrusW6T*a%ic&d2SlABt* zc4J=s-q0}NgzUjYeqJL!#I$aN564A{FQRIJKLoqy%{ND zoA(hL5idfpJ*Ttmgz|R`m*=p>3*NBzDf_K0bIMGZfZl_x0=~{J`ylu}tG~k5rU`}h z6MB_7u05aVa%53iNDH>`?G^Y6cj~7d@b!IaKQQkLpPHZQ7xajqdUW$b;C@Yh)JJ4X z*{2?U3eN$&pF&F7yn=eque<&AGPb}8gvuQbjh5lp{=&TDe5~B*p7GXkWufvo^2T8A zk;%J2#A`WG2hj(qE*q?EvhZ};kfHj6%J}hzzdCntDGjd^g@f@`<-;M?u6SDZhbQku zN4pb&t-t%eGVeRP^j*$_mvMJrbJB#X&2eShuq-aez5ZWVJ78@+to1JQfwJ%4^u98` z6+1)!)K6`?{u`L%?;=%{pUBXK*EjY{eP@6jc%kn8vP!|3o7Gh6?tpXabnCba z$IouyMwWXtC;Mxpw@CQ=L%hPk&xlF<<>h@2?-#B{V#p*a#e~Wt zYoB^pp&OxZ4}Yku4qlk0J&9oVRB>TdekF=hEZlJw?BNaf_>fD`5}yfOh!3&7nSK#M z;>uz0$)*-MMjys&8sO)g_g>KDpQ#h9;4v;&G)KbbiK#zK-a>fR_B`O(HdkH9V;K*_)?2!#2FnJ+%9Pn!6Crn5 zTA&P=Iv%!Y&>maq@LGB4X|LlfV*JySiFC^HChTUte1R#Yyxa{RZa?YuQb;}2&&~75 zCM1)2&w#1W6iNK7g{B6YS}@g~G}aG6!E*hszJjXAVI-6G^bYsoVe0oVg)2UFP&;=$ z?pK^Fkv4F}juxNO%kqd+4tV$~U)RbvaYoXX2|UiANt%9Ixz zsb++dQ1M~x8DZ9kdnFGNnC-j7q}hUe_K7%Q%D$X#<*Ui9h{U=ANi$-SKIo@xBavRJ zI{$#QA%ci!IhS!?4vyH~L7DtCm%shO77Xu$T$5)scWNkTM7z9aE@L-OL*CcZ zm$Ab#c;#=?@UnKXY36SCHS@Ga?xgTDNFC>KeXsTNHl3gR_Fuh70Um`^DoDiOE$Z2@ zW8u~`N;D@h45oKeJ;Ely4Sn1CJC@)0Xzz4SSLCp=5gpSrrp}b=F5YNTkLaXnwu>9#G`rp=M0){`kq;Swq%8xBPW1_{!u=q}t5rQe9_8bi3`k5?4ns72md= zL@S$&scZ>RxXT2rolPbC85>ejo3#(0Waq#C?^}>ZI9FL+Tb0?PoNM2|={^59aMh1k zkGfal`d6|DPwJa5G-VmO9<~N-HIf(p1zVB6MCv@B9oqidg}zu6UfqU$n1~Nzw^Cw1 zi#JR+_E4KVwx2=Xd&_DQCZ^ody3(0a1$EnT0lQ8cKt=eIwBn^V-ayRhq!z36_AwjzBs zdd9wDL?*Rej@Dha8?Jn<@B!ALU@UqRZROEdF!o+8)&o?9n>F=Kf-(GTQalaL59CkG ziodm>k(_p-JG4`##Ypu@2ys+5QYSdKn>wdUm-6R`sY~Ik79_hOHQk}Uct1OBTrj@z zB>QGt5_6UHQ_AjCcF8aAB-0Vqp=qoZxIlp~z&sJivZ;|f+UqcldR3_VozjD8Rz!acCXR+=5^$HQs7T+^;>=}fyqyMm<|S64@JW4PV*Q#;Qyt~r!FHA;(}a$Bb8TPHuH zEc30z%a&fnEK^_u`da<7^|Df=NMpEMSP;QD{tgGS;cZO(C|*F2_p zqn;%wZ&oCf&=k4n=X_o*vR|s*gnNaiU~Gw(m$L@kaqL<)L(X9p<<4Gpuv*lD5OUnXGDugd0%Q9b7f zuJy=r4^#7=ecX31b`2JUvb!GqRAJX)EkPkq8vix6E)lDFkIv`$ujS%_3vC^^Snw79 zMn8*G--UdC-1)O-FF{$emEhJ-CDcpQ`Yn;pR44v7y1BLn9>8{L)YJ5HE&j#FERtYR zO;g`gcc`YK!HMb8K%MC{b+!}kP3m#$QC7LJ!{Hj@RJY^n)uXL#S$9aWyUmW}Kv&5p z_;dR9(ob}bge&-FVM**U@B992(TnXbu}xX};@Q||(>}1*!o9wkJzGKYN*o!cusBbUe5$c^`pJ)+^ z@A*Vc@XdW6_&poRJQ7&w|H?kXTT6K_U?udES)Y#Z>$|?TtB+f3!G*7wdsN!0fe>wG zxP1!03_2PZSCrf9-LlqlupQVT{-^5Iz!)$(K=dzkf{aE@YvnD$BG7%u82h6HPuLK@i zc--Hn-?gWR>jEj0xZ$`3RQWOSotT}Tv{X$iyNo$$GGVi+q~!>9|5it&BK{Q_su%QD z(M5SrJ)B3}BfWBWZ^ba(3ahsPaVB*hQ_PExnHkHS>zM`f5I5dVN!L8Y?Ooxac<=3b zRQ(lDH$p@ReV3Nid~P4JKj0{dAe?iul$jtecgK?btJekB`6e|HU5P4E2|an0Yy)PR z{{psmP|>nlPx`3vrrOxQtSM*nU||4==^A>AOcbx4fA3P)<~8Q^WmF`SD-?4XU zbJOa{b;>un0GK3~c^Rs21Ify!(5oGRt@QsxXa9FzcwpvBK7OuCMDvr>gY2(qv_1prWz2hbP(NB)NY# zD?jVpK7}W@4>@~I`Lmwq&UQ9Yd+nQC#LXWyq z3W%+`w5OnQx*(LvUUpeQ*+}wUBFT7DbuL=mbUMdOH8e#JDF1j*takjJ>y=xlf~Cox z#Bf}IGCi)q_3!hdx4JIa#qF50!UZqffw$7fV;XM`_`jjPi0qag-DC^Vm4H;%Oz18=6^GTnL=)J zi?UY(A^?5^zJ=q-hMM+|uOA<&>#RdEC6zw~AkYIL5vD+We#gn?`h9fiC|~nQ1|>1e z)U3nf^7zX)DLf`{vL_j?r>DVQT6K@YnnVL6AK;G}-Y2DHJv7TvUuI+3NbYQ6sr_;O zMyLC0;$?{fsq^-k>y?uZD1Ny^x30CIFeWhB+#-AvtaAR7GBYZzJqeVJy~!>QO6cN8 z*mTUD#M^@7nm;0AfL?H+>(!Dk0y-vC%|mG={=ZWBj=sxH#*lN^zBVQ>>H_TI>k4`r z>*L+hLw&v^`W)i}YGbp%c!$bjd;Kk)%Bl7r{e4YGkrF^bj*d4WkTKmZZROFn0op`kq93qox;Pb{ z(*?+i1%OnT=o>yCrD%fhUY%Q!DD3K)?QKoA&qUm_o2nI1ErNnw9igdGfXa=`q+qf$ z>`@3uhGvC4FS&Rxag^z6TVy0u@pNDk?Wh{XcRRNV)B&s$4tLj&bhs(h)>>SOi>bB#Hs7Plv3N2Yde zo~iq+s3tekI_`9;v{*-cES?-s)+yW0t+hKN#DG#aCFO?3oLol(BX;oO>{A*ol!3_t8DyNR2)L0xmKdc3!=eC(O-NVS_=6RMqV1^-SJ zh?Gr5YsS+(TU~5A4~n#c{KEbg#&fPzMX7sOM;#kGNBgU64;iE2YGqEC%ir!C?@hFoho<;;L(PEqZ389hB7@y+@^SPFJ}|s0 z@15?|QL>mTedsrlK~O<7vzxhjFvfc$iX}1Cs@UjQ%UpieM6oT?VN;=OLq)E#HN4f@ zh)`rkSL+k*CY64odVD%ISTj`gS%czLrvbuHS?_cw5Mn#j#zWEgNIH+*!4u_Ve?E)U z&!g?_BvM8qb?b}=$2F_3p8Phjpk3Fwz(dzgZIv>WR(P|jFn)gYAXV&i5K(p$9dK$) zk#gg?wWU;1(q}YNeS+Jtz;k$J;~RsQ0LML{;L(i34K>m5M&PL%sqGGx1590~mHVjU zKH#>h;?a^x$>~ly>%v}T^jn_gQZ$62A0gS6f6y)fuT6D3FL~uPNlae z+q6L-i zX;?w(1~yS7@R2HK6Pq(-<57NNPeBX^xvO_~G8P_CHU)*huJ_@>TB-2=Qh(Q+7U^YN zwYVrcxN&->dL%s@1%%Ez2hP9}E9DLn%wvWN%;Z&Q7r{OCWy`xsLyB?-ncM+2$m;q8 z)+no{DxYjDh~+lSBzJ$@Ra?_Wv{dj9j_jTtj1N8c<>%{D-&KpV}Rf^blj`z)*R|h<87D!<|iIiA!AUK>|RZvwNXI&BEF%b#dIF{phYiX>))aYE@ zfaSDFEx0W`*)cdgHuUA^pRIRJi?rV47M1j`ZA{@i5N~kNXih0IEs;GCJs?{UQs2`n z)4cB)*$kY1;CwMN)Q-zkDCmTzRyF@%QMyh4cdt zJQp1rh}V|(qE3sHKewUXcgx@NwQ3cd-W?kldi&J({$;&g;hr{URG_*uUec0Pk9<`w zAHt$>szocuBDIWAKgzsv$HT7#PDbmw@*zC<5*=iI4b~iWU`63bX=7>8m-2GmhDh?3 zbY*Ts7`YyJZ ze>I<-!eV14RbZ&179tiTpyAauha=M;*A;z!cGLB~@Xkvs*|{0z|?m$~y zxrDN_dql*-Zb-MBgbWGFhuOsRo*xTmov8LN%;wC?UL z%N}?x@?=lVKwHqZ>2kV0z)2r+cj!aA{LPn?;Vb5l zbJ3hu3(m&7hiayK<3tVPf<+`TT9b*+k}vR@-M;!P*`$0)1=(VpUl{MMsO_S6&1t1E zkT>TmoUN+pzC;zK{dbGrROThK!~H~S0~Y2bdr@VqI0G|h_f*Dl4=RciWfg!gy+-=L zf8YzkXP#XkpSeWTWa%(lu&ain-4zA9ds|CGLz!a*PgV_KEff2v+8yYFpUhK3&cEhF zq++PMpeN4o+%OZK;!(N+o%z$5s4oMLj`WX3H}}QuAa}@KuyA2PBmN(o6|sl$HR92> zqo<-n-+k#&`X?H=otNOK^b=KOL*4mZ-I>{8@{`p4hlbe%^Ali3x?jU$S!xN-Gx#&n z(VrPT+E!dI^(MjEfuT%RHuvu=0a`zPQ_-6*9a82K`>-Usd zq+CwbpQyCQoKFliREuA_SY1$?IZ&1uW@bM-os73>jT6(e^Y=2MnjJ}-k4m)b`px-R z;waKk_~oUz<-t?W{mY^^5AFCwe-eDmrcPVrofaJ)EQ7wIA;&w5+w^T4T|UPyr!jA4 zhVAR8UMOFskM<3Z^|Ls7l)WBES@*dik9T(%{nuxfwMDb1LK4X`2R3n!_i*O2ZT+lk zvL*EVEFB{jSeQT8M*%_Njl90|%OMd%G|SDd#%U@XHFV!tO_F;eG&uQPgZ zPPUS#H*JOx9sTi~=%{dyQ#g2@4tZ>T%w*)kMY}`m^vC2>XNPjvTs&5Qu8;CIE%W`= zmK2rUmimtKLGcd*+g1~do#>#FlM=*}Z%pKzH%xL>cA)4pW!CG9dW|_`c6cWWo!6)U zCuT-j#bXaVl){xAbS)j+8E$-Ec64<&Canq%j4Ez+Xd z7kc|yqP`3&k+ofh#t&p>$0LW&tY7038NI_5?B(U9tv|D=x@%wY`6lsw*mE|2ZpOB~ z2NP0^mFS>-jl$?eA=`Zf7pCFrW$0GF*vbtaUF0U+E6zN9W|JG4>!(JxikoC_#Iggy zy_I{}vKlHl*b>|vFJ8M`mJgJ8_l=hqSa;yW4R(g}mGAA~K#{x2oE9E*xJ?Vk z=oR`j9@%H2o0%Dp&6zrpoe`muFcUH%NZDYBKyAl`i8zxaIFRa5&hySpKYA$?KU{rg z{Y8>vwf*u*#YFkyC87rU^DF1VG~J2MheauoI9}nU zXi=`a>9mXGqE}#_`Obbe#1@(P-}jZ!2fBQay(7W%gN18I zXq`#13l9txojrEiS%VHwJALfTXGNYB$(KC70Ivn$)lu9c3pexY$t~LXZRYGLl1KtN z-NmAG&nPTKu(3enepWO@bQ7=Tt5bp{Z0?a^@mb5MkMZwit9nyO5Km8bpG$@Qd@Q27 zq56b!&MN=m>V~NhKCv??Sp68S!0yVy?6D9__3D?`k0N>4{wnx*yJjz+U@@zdam`ul zD(7%+XpCL8lRx8xAK^iZn)c@~kfmflyDO-=WT(%y{Jm`~ zM==p-zholJx<^wG2DjyqXBcZL*}30gpYDzP+~j_s9OLD3w*m|I#}0+Q`$#qM6OzLS ib1%%2nAAjJzW#~L-cRsK`0ob(Fq6uz!$#pJ^#1|ZFj|@b literal 0 HcmV?d00001 diff --git a/data/eng/@notify b/data/eng/@notify new file mode 100644 index 0000000000000000000000000000000000000000..cb2a8b481111cf1a9ffec2a12700ab90de75f053 GIT binary patch literal 814 zcmV+}1JV3TP(w@p1poj+00001Mv*2LLXK;4&&M|BRgS2?a%d2Q+k!ncA+U7jE>Q2{ z(MZoDEgr$dcSah5Nh_D-kVb)%_7Zu*$)G7&&kMyGwqzL-)#STsT>05v!Vs@^a z^S8Moioe%#X{`9DTV#SB!v@&FYJM`RoZ2}GkLiAqsTI*}g$9HiDsSnDNK<806vSp# z3Ml2&6U!VeqgozMUJfCG7<_G`bw;g=Eg(>XF7vA}1f*x95n?ll^iNU}7`}v!IfyBkFYh@#g@5b9h&*zodB_Upgeb~_%B!gxS|f(d zOJPqn6A@JE$f~zz#isEtp$p2i4Xf+gxKCL@*iVf0p7A0lWtCNj{cOvG1P*KN0)t#a zkp@%*hcA`1-Ey3g0V)(FMKM!(aMq!TGe4OaO*}3|2{cxT_|0OBFBgK})76NG0HzH4 z3Q;>XGjN8OTb0>Qn=|RvQ7D)Of^@5RYZlp8VW3!l@h2ryyt2r?3y47xjU5o~=*!ke zSXpE|`{mnA$mJ@8_FV`LcALsg~`Vj;QEk{6c9q`Q^x(C(pRr)*G0u!8ao-o;f=j>VlMY0il#*4 zbOM#6_;n3@)`ZO)%`6irLEsz@Ppo?QG!u8svTd9En5f-RGv9y*A;kNf5(8-d&o|q4 s)YIL;MN51H0Q+7w5vSBj>lSaNdzU9#Cx&%XFhjYk3JjR<9smFU01|eEBme*a literal 0 HcmV?d00001 diff --git a/data/eng/File Managers/buttons.bmp b/data/eng/File Managers/buttons.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ea6b4741c0c569a501750661d3c45668836372c5 GIT binary patch literal 6486 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 E2RcKctN;K2 literal 0 HcmV?d00001 diff --git a/data/eng/File Managers/eolite.ini b/data/eng/File Managers/eolite.ini new file mode 100644 index 0000000000..828ce5a2d2 --- /dev/null +++ b/data/eng/File Managers/eolite.ini @@ -0,0 +1,41 @@ +[Associations] +rtf=/sys/htmlv +asm=TinyPad +inc=TinyPad +ini=TinyPad +txt=TinyPad +gif=/sys/media/kiv +bmp=/sys/media/kiv +png=/sys/media/kiv +tga=/sys/media/kiv +jpg=/sys/media/kiv +jpeg=/sys/media/kiv +ico=/sys/media/kiv +cur=/sys/media/kiv +pcx=/sys/media/kiv +3ds=/sys/3d/view3ds +lif=/sys/demos/life2 +skn=/sys/desktop +htm=/sys/HTMLv +html=/sys/HTMLv +rtf=/sys/RtfRead +obj=/sys/develop/cObj +sna=/sys/e80 +nes=/sys/games/fceu +xm=/sys/media/AC97SND +wav=/sys/media/AC97SND +mp3=/sys/media/AC97SND +mid=/sys/media/MIDAMP +m3u=/sys/media/listplay +lap=/sys/media/listplay +asf=/sys/media/listplay +mht=/sys/htmlv + + +[Config] +;хёыш яюёЄртшЄ№ 1 тьхёЄю ъэюяюъ сєфхЄ ёЄЁюър рфЁхёр +ShowEditBoxPath=0 +;ЎтхЄ т√фхыхэюую ¤ыхьхэЄр ш т√фхыхэшх хфшЄсюъёр +;яю-єьюыўрэш■ 94AECE, фы  ЄхёЄр FEA4B7,8BCDFF,B8C9B8 +BorderColor=94AECE + diff --git a/data/eng/File Managers/icons.bmp b/data/eng/File Managers/icons.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8f6c0f1c50ab8c8925ea899b8a1d74fd7627b319 GIT binary patch literal 5238 zcmdT|JB}4G5cEn!kRbv@L`X_PMDRq;4G8xP#B&Ka0Jk6_C*VX#L%GY{Q*PU{yH6l3 zmdDesPj}Dnt+XFLetuDGyus_Y>AE&W9ld z)UMYx!^d38w(l{4A=b6$Nzy5P6aj-(8N>#r4w9sa8k)#!{OkhGMSZpdp401Fsdg1X z8hHA0H8S-bTk!^_!Hg$H)tVPZ4X`anl%4TG4rOQR9>blkBR^)M6&^`yO`*1Ckz8FE zv>$h%t2j5A*@Tg zYUAK(_BHVo%Zhj5g3rYBTOc$FMrRT9eCyT=rY-z6`+6PzT=j{}i4>6~$2D`tykf=g zJs{HlewD8&;3iRb#I7(5*}IsC7kk+lL7M!2>;0pQ*KL$d0F;lvS={^ zz``?E01+6@x2cBX-RtlAoUcYco>>MfLCMnI{4;xPz=oArWnlgC>3g2;#(73IpQt1R zdCCt`8gzAuVj4dRetJ^_Ts)L3c|PedBar+cmG`$I)Z|0bwn)%^f9Ao#r$pS=2D-8h z#$&S9xcDwoL|}aE#=sx(`B{7t9v%TDyn?rHJW@mgBJu;!02g2@B;$(3pnhCKuntC( zBCXbbJB<1v)vQ&$8V5hvZy(}kmDw7Yx4=S79{ov+D?SqS!TP=lsZuYlYRe@rnf*pNOg1jANjTUh^7C)G!PzP z8V~~U_au?V{1g7J{=BXB(GUI6AMHAy()N7aK{%V{|EqkIwqVRZ@Uyl;M1PV5+kf{| x35k$?Vj8;&|2up2`eYja)Gy!UcZvY{{i&e9LN9w literal 0 HcmV?d00001 diff --git a/data/eng/File Managers/icons.ini b/data/eng/File Managers/icons.ini new file mode 100644 index 0000000000..e4690bf7bc --- /dev/null +++ b/data/eng/File Managers/icons.ini @@ -0,0 +1,141 @@ +asm=4 +inc=4 +txt=3 +rtf=3 +ini=3 +log=3 +dic=3 +doc=3 +exc=3 +wtx=3 +inf=3 +xml=3 +odt=3 +jpg=6 +jpe=6 +jpeg=6 +jif=6 +jfif=6 +jp2=6 +jpx=6 +jpk=6 +j2k=6 +jpc=6 +j2c=6 +bmp=6 +dib=6 +rle=6 +pbm=6 +wbm=6 +wbmp=6 +xbm=6 +xpm=6 +gif=6 +png=6 +ico=6 +cur=6 +ani=6 +tif=6 +tiff=6 +xif=6 +tga=6 +pcx=6 +dcx=6 +ppm=6 +psd=6 +psp=6 +raw=6 +raf=6 +x3f=6 +orf=6 +nef=6 +mrw=6 +dcr=6 +crw=6 +cr2=6 +ras=6 +pix=6 +pict=6 +pct=6 +pic=6 +pgm=6 +pef=6 +pcd=6 +iff=6 +lbm=6 +ilbm=6 +fpx=6 +djv=6 +djvu=6 +iw4=6 +wav=7 +mp3=7 +xm=7 +mid=7 +midi=7 +aif=7 +aifc=7 +aiff=7 +au=7 +snd=7 +wma=7 +wm=7 +avi=11 +mpg=11 +mpe=11 +mpeg=11 +flv=11 +3gp=11 +mkv=11 +wmv=11 +mov=11 +mp4=11 +img=5 +ima=5 +imz=5 +bwz=5 +dsk=5 +vfd=5 +wil=5 +wlz=5 +exe=8 +com=8 +bat=8 +7z=9 +rar=9 +zip=9 +cab=9 +arj=9 +lha=9 +lzh=9 +tar=9 +taz=9 +tbz=9 +tbz2=9 +bz=9 +bz2=9 +ice=9 +gz=9 +tgz=9 +uue=9 +uu=9 +xxe=9 +z=9 +dat=10 +ttf=12 +ttc=12 +chr=12 +mt=12 +htm=13 +html=13 +mht=13 +eml=13 +lif=14 +3ds=15 +kex=16 +skn=17 +obj=18 +dll=18 +ocx=18 +so=18 +drv=18 diff --git a/data/eng/File Managers/kfar.ini b/data/eng/File Managers/kfar.ini new file mode 100644 index 0000000000..d3446dba63 --- /dev/null +++ b/data/eng/File Managers/kfar.ini @@ -0,0 +1,70 @@ +[Associations] +asm=/sys/TinyPad; AsmMenu1,AsmMenu2 +inc=/sys/TinyPad +ini=/sys/TinyPad +txt=/sys/TinyPad +jpg=/sys/media/kiv +jpeg=/sys/media/kiv +gif=/sys/media/kiv; ViewGraph,MenuAnimage +wav=/sys/media/AC97SND +mp3=/sys/media/AC97SND +xm=/sys/media/AC97SND +mid=/sys/media/MIDAMP +bmp=/sys/media/kiv; ViewGraph,MenuAnimage +png=/sys/media/kiv +ico=/sys/media/kiv +cur=/sys/media/kiv +pcx=/sys/media/kiv +rtf=/sys/RtfRead +3ds=/sys/3d/view3ds +lif=/sys/demos/life2 +skn=/sys/desktop +m3u=/sys/media/listplay +lap=/sys/media/listplay +asf=/sys/media/listplay +cvs=/sys/graph +obj=/sys/develop/cObj +nes=/sys/fceu +sna=/sys/e80 +htm=/sys/HTMLv +html=/sys/HTMLv + +[Menu] +AsmMenu1=&Edit,/sys/TinyPad +AsmMenu2=&Compile,/sys/develop/fasm +ViewGraph=&View,/sys/media/kiv +MenuAnimage=&Edit,/sys/media/animage + +[Panels] +; View modes for files on panels +; values correspond to digits for LCtrl+<1-4> +LeftViewMode=2 +RightViewMode=2 +; Sort modes for files on panels +; values are 2 * N + M, where +; M = 0 - normal sorting, M = 1 - reverse sorting +; N = 0-6 correspond to sort mode for Ctrl+F<3-9> +LeftSortMode=0 +RightSortMode=0 + +[Editor] +; Symbols for end-of-line, which will be added by kfar editor +; when new line will be created: +; DOS - like in DOS/Win (0D 0A), Unix - like in Unix (0A), +; Mac - like in Mac (0D) +EOLStyle=Unix + +[FolderShortcuts] +; You can define up to 10 links to folders Shortcut0...Shortcut9, +; the quick jump to such folders can be done with RCtrl+ +Shortcut0=/rd/1 + +[Confirmations] +Delete=1 +DeleteIncomplete=0 + +[Plugins] +; On left of the equal sign any sensical or nonsensical name can appear; +; on right - path to plugin. +; If path is not absolute, it is counted from the folder with kfar binary. +ArchiveReader=/sys/lib/archiver.obj diff --git a/data/eng/File Managers/kfm b/data/eng/File Managers/kfm new file mode 100644 index 0000000000000000000000000000000000000000..d7efae97e4a83612e116b924d9e6c22f207fd5c3 GIT binary patch literal 11080 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 OKw$AaG5`z&0004^!jsMb literal 0 HcmV?d00001 diff --git a/data/eng/File Managers/kfm.ini b/data/eng/File Managers/kfm.ini new file mode 100644 index 0000000000..0f229d3939 --- /dev/null +++ b/data/eng/File Managers/kfm.ini @@ -0,0 +1,171 @@ +start +<>icons_associations +asm 0004 +inc 0004 +txt 0003 +rtf 0003 +ini 0003 +log 0003 +dic 0003 +doc 0003 +exc 0003 +wtx 0003 +inf 0003 +jpg 0006 +jpe 0006 +jpeg 0006 +jif 0006 +jfif 0006 +jp2 0006 +jpx 0006 +jpk 0006 +j2k 0006 +jpc 0006 +j2c 0006 +bmp 0006 +dib 0006 +rle 0006 +pbm 0006 +wbm 0006 +wbmp 0006 +xbm 0006 +xpm 0006 +gif 0006 +png 0006 +ico 0006 +cur 0006 +ani 0006 +tif 0006 +tiff 0006 +xif 0006 +tga 0006 +pcx 0006 +dcx 0006 +ppm 0006 +psd 0006 +psp 0006 +raw 0006 +raf 0006 +x3f 0006 +orf 0006 +nef 0006 +mrw 0006 +dcr 0006 +crw 0006 +cr2 0006 +ras 0006 +pix 0006 +pict 0006 +pct 0006 +pic 0006 +pgm 0006 +pef 0006 +pcd 0006 +iff 0006 +lbm 0006 +ilbm 0006 +fpx 0006 +djv 0006 +djvu 0006 +iw4 0006 +wav 0007 +mp3 0007 +xm 0007 +mid 0007 +midi 0007 +aif 0007 +aifc 0007 +aiff 0007 +au 0007 +snd 0007 +wma 0007 +wm 0007 +avi 0011 +mpg 0011 +img 0005 +ima 0005 +imz 0005 +bwz 0005 +dsk 0005 +vfd 0005 +wil 0005 +wlz 0005 +exe 0008 +com 0008 +bat 0008 +7z 0009 +rar 0009 +zip 0009 +cab 0009 +arj 0009 +lha 0009 +lzh 0009 +tar 0009 +taz 0009 +tbz 0009 +tbz2 0009 +bz 0009 +bz2 0009 +ice 0009 +gz 0009 +tgz 0009 +uue 0009 +uu 0009 +xxe 0009 +z 0009 +dat 0010 +ttf 0012 +ttc 0012 +chr 0012 +mt 0012 +htm 0013 +html 0013 +lif 0014 +3ds 0015 +kex 0016 +skn 0017 +<>end + +<>files_associations +asm /sys/tinypad +inc /sys/tinypad +txt /sys/tinypad +ini /sys/tinypad +log /sys/tinypad +dat /sys/tinypad +inf /sys/tinypad +bat /sys/tinypad +jpg /sys/media/kiv +jpeg /sys/media/kiv +jpe /sys/media/kiv +gif /sys/media/kiv +wav /sys/media/ac97snd +mp3 /sys/media/ac97snd +xm /sys/media/ac97snd +mid /sys/media/midamp +bmp /sys/media/kiv +png /sys/media/kiv +ico /sys/media/kiv +cur /sys/media/kiv +pcx /sys/media/kiv +rtf /sys/rtfread +3ds /sys/3d/view3ds +lif /sys/demos/life2 +skn /sys/desktop +avi /sys/kvid.kex +m3u /sys/media/listplay +lap /sys/media/listplay +asf /sys/media/listplay +cvs /sys/graph +obj /sys/develop/cObj +nes /sys/fceu +sna /sys/e80 +htm /sys/HTMLv +html /sys/HTMLv +<>end + +<>files_association1 +bmp /sys/media/animage +<>end + +end diff --git a/data/eng/File Managers/kfm_keys.txt b/data/eng/File Managers/kfm_keys.txt new file mode 100644 index 0000000000..a432541e7b --- /dev/null +++ b/data/eng/File Managers/kfm_keys.txt @@ -0,0 +1,42 @@ +Controlling keyboard shortcuts in KFM - Kolibri File Manager v0.45f. + +In panels: +1) Cursor update on the active panel: + a) Up arrow and downwards (including keyboards, located in an additional part,) - cursor update on one position upwards or downwards. с) PageUp - page paging upwards. + b) PageDown - page paging downwards. + c) Home - in a beginning of the directory with files. + d) End - in the end of the directory with files. +2) Tab - change of the active panel. +3) Enter - operation with the file on which position there is a selection cursor: р) an input(entrance) in a folder. + a) Start of the program. + b) To open the file in the registered application, according to a contents of the file kfm.ini, unit " < > files associations ". +4) Alt+F1 - call of the menu of choice of the disk displayed on the left panel. +5) Alt+F2 - call of the menu of choice of the disk displayed on the right panel. +6) Sorting files in the active panel: + a) Ctrl+F3 - sorting according names. + b) Ctrl+F4 - sorting according extensions. + c) Ctrl+F5 - sorting according a size. + d) Ctrl+F6 - sorting by date of modification. +7) Ctrl+R - repeated loading of contents of the directory in the active panel. +8) Delete and F8 - the deleting of the file on which is the cursor. +9) Insert - the selection by red colour of the file on which is the cursor and cursor update on 1 position downwards. +10) F4 - to open the file for editing in the registered application, according to a contents of the file kfm.ini, unit " < > files association1 ". +11) F7 - creation of the directory in the active panel. +12) F5 - copying file from the active panel in opposite. +13) F6 - moving of the file from the active panel in opposite. +14) Ctrl+A and Ctrl + (NumPad (+) Up) - selection of all files and directories in the active panel, except for the directory '..' +15) Ctrl + (NumPad (-) Up) - to deselect of all files and directories in the active panel, except for the directory '..' +16) Ctrl + (NumPad (*) Up) - to invert selection of all files and directories in the active panel, except for the directory '..' +17) F12 - program termination. +18) F1 - help, hot shortcut keys. The presence of the file kfm_keys.txt in the directory is required where the application is located. +19) Open file in other application with parameter: + р) Shift + W - set background, mode: tile. + с) Ctrl + W - set background, mode: stretch. + +In the menu of choice of the disk: +1) Up arrow and down arrow (including keys, located in an additional part of keyboard) - cursor update on one position upwards or downwards. +2) Enter - the choice of the disk on which position is a selection cursor. +3) Home and PageUp - cursor in a beginning of the list +4) End and PageDown - cursor in the end of the list. +5) Insert - load tray of selected ATAPI device. +6) Delete - eject tray of selected ATAPI device. diff --git a/data/eng/Makefile b/data/eng/Makefile new file mode 100644 index 0000000000..f751556a02 --- /dev/null +++ b/data/eng/Makefile @@ -0,0 +1,367 @@ +# General rule for naming: variables with CAPITALIZED names hold settings, +# you can - and are expected - to modify it; variables with lowercase names +# are intermediate variables and macroses not to be modified unless you +# know what you're doing. + +# Define directories for destination, source repository, sources of kernel, sources of programs. +BUILD_DIR:=build +REPOSITORY:=../localcopy +KERNEL:=$(REPOSITORY)/kernel/trunk +PROGS:=$(REPOSITORY)/programs + +# Docpak requires some documents; we place them +# into 'docs' subdir and communicate with FASM +# through environment var DOCDIR. +DOCDIR:=docs/ +export DOCDIR + +# Because most programs are written in FASM and have +# the common structure of one main .asm file possibly including +# several .inc files, we handle this case separately. +# Namely, we organize one big list of such programs +# (FASM_PROGRAMS, see below) containing name of local binary file, +# name of file inside kolibri.img and name of the source file. +# This list is maintained by hand, and the rest is done with some macroses... +# well, slightly complicated macroses - however, you do not need to +# understand them in order to maintain the list. +# To add a FASM program with one .asm file, just +# add the corresponding item to the list and enjoy +# the power of GNU make. + +# The list of all FASM programs with one main FASM file. +# Every item consists of three parts, separated by ':'. +# First part is the real name of binary file in $(BUILD_DIR) +# as it should be produced by make. +# Second part is the name of a file inside kolibri.img, +# usually uppercased version of first part - to save space +# for FAT filesystem. +# Third part is the name of the source file. +# Spaces separate items, so spaces in names should be +# represented as '|'. +FASM_PROGRAMS:=\ + @clip:@CLIP:$(PROGS)/system/clip/trunk/@clip.ASM \ + @menu:@MENU:$(PROGS)/system/menu/trunk/menu.asm \ + @panel:@PANEL:$(PROGS)/system/panel/trunk/@PANEL.ASM \ + @rb:@RB:$(PROGS)/system/rb/trunk/@RB.ASM \ + @ss:@SS:$(PROGS)/system/ss/trunk/@SS.ASM \ + calc:CALC:$(PROGS)/other/calc/trunk/calc.asm \ + calendar:CALENDAR:$(PROGS)/system/calendar/trunk/calendar.asm \ + commouse:COMMOUSE:$(PROGS)/system/commouse/trunk/commouse.asm \ + copyr:COPYR:$(PROGS)/fs/copyr/trunk/copyr.asm \ + cpu:CPU:$(PROGS)/system/cpu/trunk/cpu.asm \ + cpuid:CPUID:$(PROGS)/system/cpuid/trunk/CPUID.ASM \ + desktop:DESKTOP:$(PROGS)/system/desktop/trunk/desktop.asm \ + disptest:DISPTEST:$(PROGS)/system/disptest/trunk/disptest.ASM \ + docpak:DOCPAK:$(PROGS)/system/docpack/trunk/docpack.asm \ + downloader:downloader:$(PROGS)/network/downloader/trunk/downloader.asm \ + end:END:$(PROGS)/system/end/trunk/end.asm \ + gmon:GMON:$(PROGS)/system/gmon/gmon.asm \ + hdd_info:HDD_INFO:$(PROGS)/system/hdd_info/trunk/hdd_info.asm \ + icon:ICON:$(PROGS)/system/icon/trunk/icon.asm \ + kbd:KBD:$(PROGS)/system/kbd/trunk/kbd.ASM \ + launcher:LAUNCHER:$(PROGS)/system/launcher/trunk/launcher.asm \ + magnify:MAGNIFY:$(PROGS)/demos/magnify/trunk/magnify.asm \ + mgb:MGB:$(PROGS)/system/mgb/trunk/mgb.asm \ + mousemul:MOUSEMUL:$(PROGS)/system/mousemul/trunk/mousemul.asm \ + pcidev:PCIDEV:$(PROGS)/system/pcidev/trunk/PCIDEV.ASM \ + period:PERIOD:$(PROGS)/other/period/trunk/period.asm \ + pic4:PIC4:$(PROGS)/media/pic4/trunk/pic4.asm \ + rdsave:RDSAVE:$(PROGS)/system/rdsave/trunk/rdsave.asm \ + rtfread:RTFREAD:$(PROGS)/other/rtfread/trunk/rtfread.asm \ + run:RUN:$(PROGS)/system/run/trunk/run.asm \ + scrshoot:SCRSHOOT:$(PROGS)/media/scrshoot/scrshoot.asm \ + setup:SETUP:$(PROGS)/system/setup/trunk/setup.asm \ + tinypad:TINYPAD:$(PROGS)/develop/tinypad/trunk/tinypad.asm \ + vrr:VRR:$(PROGS)/system/vrr/trunk/vrr.asm \ + vrr_m:VRR_M:$(PROGS)/system/vrr_m/trunk/vrr_m.asm \ + zkey:ZKEY:$(PROGS)/system/zkey/trunk/ZKEY.ASM \ + 3d/3dcube2:3D/3DCUBE2:$(PROGS)/demos/3dcube2/trunk/3DCUBE2.ASM \ + 3d/3dtcub10:3D/3DTCUB10:$(PROGS)/demos/3dtcub10/trunk/3DTCUB10.ASM \ + 3d/crownscr:3D/CROWNSCR:$(PROGS)/demos/crownscr/trunk/crownscr.asm \ + 3d/free3d04:3D/FREE3D04:$(PROGS)/demos/free3d04/trunk/free3d04.asm \ + 3d/view3ds:3D/VIEW3DS:$(PROGS)/demos/3DS/VIEW3DS.ASM \ + demos/bcdclk:DEMOS/BCDCLK:$(PROGS)/demos/bcdclk/bcdclk/bcdclk.asm \ + demos/circle:DEMOS/CIRCLE:$(PROGS)/develop/examples/circle/trunk/circle.asm \ + demos/colorref:DEMOS/COLORREF:$(PROGS)/demos/colorref/trunk/colorref.asm \ + demos/cslide:DEMOS/CSLIDE:$(PROGS)/demos/cslide/trunk/cslide.asm \ + demos/eyes:DEMOS/EYES:$(PROGS)/demos/eyes/trunk/eyes.asm \ + demos/fire:DEMOS/FIRE:$(PROGS)/demos/fire/trunk/fire.asm \ + demos/firework:DEMOS/FIREWORK:$(PROGS)/demos/firework/trunk/firework.asm \ + demos/movback:DEMOS/MOVBACK:$(PROGS)/demos/movback/trunk/movback.asm \ + demos/plasma:DEMOS/PLASMA:$(PROGS)/demos/plasma/trunk/plasma.asm \ + demos/timer:DEMOS/TIMER:$(PROGS)/demos/timer/trunk/timer.asm \ + demos/tinyfrac:DEMOS/TINYFRAC:$(PROGS)/demos/tinyfrac/trunk/tinyfrac.asm \ + demos/trantest:DEMOS/TRANTEST:$(PROGS)/demos/trantest/trunk/trantest.asm \ + demos/tube:DEMOS/TUBE:$(PROGS)/demos/tube/trunk/tube.asm \ + demos/unvwater:DEMOS/UNVWATER:$(PROGS)/demos/unvwater/trunk/unvwater.asm \ + develop/board:DEVELOP/BOARD:$(PROGS)/system/board/trunk/board.asm \ + develop/cObj:DEVELOP/cObj:$(PROGS)/develop/cObj/trunk/cObj.asm \ + develop/fasm:DEVELOP/FASM:$(PROGS)/develop/fasm/trunk/fasm.asm \ + develop/h2d2b:DEVELOP/H2D2B:$(PROGS)/develop/h2d2b/trunk/h2d2b.asm \ + develop/heed:DEVELOP/HEED:$(PROGS)/develop/heed/trunk/heed.asm \ + develop/ipc:DEVELOP/IPC:$(PROGS)/network/ipc/trunk/ipc.asm \ + develop/keyascii:DEVELOP/KEYASCII:$(PROGS)/develop/keyascii/trunk/keyascii.asm \ + develop/mtdbg:DEVELOP/MTDBG:$(PROGS)/develop/mtdbg/mtdbg.asm \ + develop/scancode:DEVELOP/SCANCODE:$(PROGS)/develop/scancode/trunk/scancode.asm \ + develop/test_gets:DEVELOP/test_gets:$(PROGS)/develop/libraries/console/examples/test_gets.asm \ + develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2.asm \ + develop/thread:DEVELOP/THREAD:$(PROGS)/develop/examples/thread/trunk/thread.asm \ + drivers/atikms:DRIVERS/ATIKMS:$(REPOSITORY)/drivers/video/drm/radeon/atikms.asm \ + drivers/com_mouse.obj:DRIVERS/COM_MOUSE.OBJ:$(KERNEL)/drivers/com_mouse.asm \ + drivers/emu10k1x.obj:DRIVERS/EMU10K1X.OBJ:$(KERNEL)/drivers/emu10k1x.asm \ + drivers/fm801.obj:DRIVERS/FM801.OBJ:$(KERNEL)/drivers/fm801.asm \ + drivers/infinity.obj:DRIVERS/INFINITY.OBJ:$(KERNEL)/drivers/infinity.asm \ + drivers/ps2mouse.obj:DRIVERS/PS2MOUSE.OBJ:$(REPOSITORY)/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm \ + drivers/sb16.obj:DRIVERS/SB16.OBJ:$(KERNEL)/drivers/sb16/sb16.asm \ + drivers/sound.obj:DRIVERS/SOUND.OBJ:$(KERNEL)/drivers/sound.asm \ + drivers/vmode.mdr:DRIVERS/VMODE.MDR:$(KERNEL)/drivers/vmode.asm \ + drivers/vt8235.obj:DRIVERS/VT8235.OBJ:$(KERNEL)/drivers/vt823x.asm \ + File|Managers/kfar:File|Managers/KFAR:$(PROGS)/fs/kfar/trunk/kfar.asm \ + File|Managers/OpenDial:File|Managers/OPENDIAL:$(PROGS)/develop/libraries/box_lib/asm/trunk/OpenDial.asm \ + fonts/bgitest:FONTS/BGITEST:$(PROGS)/demos/bgitest/trunk/bgitest.asm \ + games/15:GAMES/15:$(PROGS)/games/15/trunk/15.ASM \ + games/arcanii:GAMES/ARCANII:$(PROGS)/games/arcanii/trunk/arcanii.asm \ + games/freecell:GAMES/FREECELL:$(PROGS)/games/freecell/freecell.ASM \ + games/invaders:GAMES/INVADERS:$(PROGS)/games/invaders/invaders.asm \ + games/lines:GAMES/LINES:$(PROGS)/games/lines/lines.asm \ + games/mblocks:GAMES/MBLOCKS:$(PROGS)/games/mblocks/trunk/mblocks.asm \ + games/phenix:GAMES/PHENIX:$(PROGS)/games/phenix/trunk/phenix.asm \ + games/pipes:GAMES/PIPES:$(PROGS)/games/pipes/pipes.asm \ + games/pong:GAMES/PONG:$(PROGS)/games/pong/trunk/pong.asm \ + games/pong3:GAMES/PONG3:$(PROGS)/games/pong3/trunk/pong3.asm \ + games/rsquare:GAMES/RSQUARE:$(PROGS)/games/rsquare/trunk/rsquare.asm \ + games/snake:GAMES/SNAKE:$(PROGS)/games/snake/trunk/snake.asm \ + games/tetris:GAMES/TETRIS:$(PROGS)/games/tetris/trunk/tetris.asm \ + lib/archiver.obj:LIB/ARCHIVER.OBJ:$(PROGS)/fs/kfar/trunk/kfar_arc/kfar_arc.asm \ + lib/box_lib.obj:LIB/BOX_LIB.OBJ:$(PROGS)/develop/libraries/box_lib/trunk/box_lib.asm \ + lib/console.obj:LIB/CONSOLE.OBJ:$(PROGS)/develop/libraries/console/console.asm \ + lib/libgfx.obj:LIB/LIBGFX.OBJ:$(PROGS)/develop/libraries/libs-dev/libgfx/libgfx.asm \ + lib/libimg.obj:LIB/LIBIMG.OBJ:$(PROGS)/develop/libraries/libs-dev/libimg/libimg.asm \ + lib/libini.obj:LIB/LIBINI.OBJ:$(PROGS)/develop/libraries/libs-dev/libini/libini.asm \ + lib/libio.obj:LIB/LIBIO.OBJ:$(PROGS)/develop/libraries/libs-dev/libio/libio.asm \ + lib/network.obj:LIB/NETWORK.OBJ:$(PROGS)/develop/libraries/network/network.asm \ + lib/proc_lib.obj:LIB/PROC_LIB.OBJ:$(PROGS)/develop/libraries/proc_lib/trunk/proc_lib.asm \ + media/animage:MEDIA/ANIMAGE:$(PROGS)/media/animage/trunk/animage.asm \ + media/cdp:MEDIA/CDP:$(PROGS)/media/cdp/trunk/cdp.asm \ + media/kiv:MEDIA/KIV:$(PROGS)/media/kiv/trunk/kiv.asm \ + media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \ + network/airc:NETWORK/AIRC:$(PROGS)/network/airc/trunk/airc.asm \ + network/arpstat:NETWORK/ARPSTAT:$(PROGS)/network/arpstat/trunk/arpstat.asm \ + network/chess:NETWORK/CHESS:$(PROGS)/network/chess/trunk/chess.asm \ + network/ethstat:NETWORK/ETHSTAT:$(PROGS)/network/ethstat/trunk/ethstat.asm \ + network/ftps:NETWORK/FTPS:$(PROGS)/network/ftps/trunk/FTPS.ASM \ + network/httpc:NETWORK/HTTPC:$(PROGS)/network/httpc/trunk/httpc.asm \ + network/https:NETWORK/HTTPS:$(PROGS)/network/https/trunk/https.asm \ + network/nntpc:NETWORK/NNTPC:$(PROGS)/network/nntpc/trunk/nntpc.asm \ + network/nslookup:NETWORK/NSLOOKUP:$(PROGS)/develop/libraries/network/examples/nslookup.asm \ + network/popc:NETWORK/POPC:$(PROGS)/network/popc/trunk/popc.asm \ + network/smtps:NETWORK/SMTPS:$(PROGS)/network/smtps/trunk/smtps.asm \ + network/stackcfg:NETWORK/STACKCFG:$(PROGS)/network/stackcfg/trunk/stackcfg.asm \ + network/telnet:NETWORK/TELNET:$(PROGS)/network/telnet/trunk/telnet.asm \ + network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/trunk/tftpc.asm \ + network/VNCclient:NETWORK/VNCclient:$(PROGS)/network/VNCclient/VNCclient.asm \ + network/ym:NETWORK/YM:$(PROGS)/network/ym/trunk/ym.asm \ + network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.asm \ +# end of list + +# The list of files which should be copied from somewhere. +# Format of an item is exactly the same as in the previous list. +COPY_FILES:=\ + macros.inc:MACROS.INC:$(PROGS)/macros.inc \ + config.inc:CONFIG.INC:$(PROGS)/config.inc \ + struct.inc:STRUCT.INC:$(PROGS)/struct.inc \ + File|Managers/z_icons.png:File|Managers/Z_ICONS.PNG:$(PROGS)/develop/libraries/box_lib/asm/trunk/z_icons.png \ + fonts/euro.chr:FONTS/EURO.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/EURO.CHR \ + fonts/goth.chr:FONTS/GOTH.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/GOTH.CHR \ + fonts/lcom.chr:FONTS/LCOM.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LCOM.CHR \ + fonts/litt.chr:FONTS/LITT.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LITT.CHR \ + fonts/sans.chr:FONTS/SANS.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SANS.CHR \ + fonts/scri.chr:FONTS/SCRI.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SCRI.CHR \ + fonts/simp.chr:FONTS/SIMP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SIMP.CHR \ + fonts/smal.chr:FONTS/SMAL.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SMAL.CHR \ + fonts/trip.chr:FONTS/TRIP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TRIP.CHR \ + fonts/tscr.chr:FONTS/TSCR.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TSCR.CHR + +# List of other files to be included in the image file. +# Some of them are auto-built with special rules, some just exist before build. +# Each item is of the form :. +# Spaces should be represented as |. +OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ + background.gif:background.gif default.skn:DEFAULT.SKN \ + e80:E80 graph:GRAPH hdread:HDREAD htmlv:HTMLV \ + icons.dat:ICONS.DAT iconstrp.gif:ICONSTRP.GIF index_htm:INDEX.HTM \ + kernel.mnt:KERNEL.MNT kerpack:KERPACK keymap.key:KEYMAP.KEY kpack:KPACK \ + kuzkina.mid:KUZKINA.MID lang.inc:LANG.INC lang.ini:LANG.INI \ + menu.dat:MENU.DAT mykey:MYKEY @notify:@NOTIFY \ + panel.dat:PANEL.DAT setup.dat:SETUP.DAT \ + shell:SHELL spanel:SPANEL table:TABLE test:TEST \ + vmode:VMODE \ + 3d/3dsheart:3D/3DSHEART 3d/3dspiral:3D/3DSPIRAL 3d/cubeline:3D/CUBELINE \ + 3d/flatwav:3D/FLATWAV 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \ + demos/aclock:DEMOS/ACLOCK demos/ak47.lif:DEMOS/AK47.LIF \ + demos/barge.lif:DEMOS/BARGE.LIF demos/life2:DEMOS/LIFE2 \ + demos/relay.lif:DEMOS/RELAY.LIF demos/rpento.lif:DEMOS/RPENTO.LIF \ + demos/use_mb:DEMOS/USE_MB demos/web:DEMOS/WEB \ + drivers/atikms.dll:DRIVERS/ATIKMS.DLL \ + File|Managers/buttons.bmp:File|Managers/BUTTONS.BMP \ + File|Managers/eolite:File|Managers/EOLITE \ + File|Managers/eolite.ini:File|Managers/EOLITE.INI \ + File|Managers/icons.bmp:File|Managers/ICONS.BMP \ + File|Managers/icons.ini:File|Managers/ICONS.INI \ + File|Managers/kfar.ini:File|Managers/KFAR.INI \ + File|Managers/kfm:File|Managers/KFM \ + File|Managers/kfm.ini:File|Managers/KFM.INI \ + File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT \ + fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \ + fonts/char.mt:FONTS/CHAR.MT \ + games/bnc:GAMES/BNC games/c4:GAMES/C4 \ + games/checkers:GAMES/CHECKERS games/clicks:GAMES/CLICKS \ + games/FindNumbers:GAMES/FindNumbers games/gomoku:GAMES/GOMOKU \ + games/klavisha:GAMES/KLAVISHA games/kosilka:GAMES/KOSILKA \ + games/kosskin.gfx:GAMES/KOSSKIN.GFX games/kox:GAMES/KOX \ + games/lights:GAMES/LIGHTS games/megamaze:GAMES/MEGAMAZE games/mine:GAMES/MINE \ + games/msquare:GAMES/MSQUARE \ + games/reversi:GAMES/REVERSI games/rforces:GAMES/RFORCES \ + games/snake.ini:GAMES/SNAKE.INI games/sq_game:GAMES/SQ_GAME \ + games/sudoku:GAMES/SUDOKU games/sw:GAMES/SW \ + games/xonix:GAMES/XONIX \ + lib/cnv_png.obj:LIB/CNV_PNG.OBJ lib/msgbox.obj:LIB/MSGBOX.OBJ \ + lib/pixlib.obj:LIB/PIXLIB.OBJ lib/sort.obj:LIB/SORT.OBJ \ + media/ac97snd:MEDIA/AC97SND media/kiv.ini:MEDIA/KIV.INI \ + media/listplay:MEDIA/LISTPLAY media/startmus:MEDIA/STARTMUS \ + network/jmail:NETWORK/JMAIL network/zeroconf.ini:NETWORK/ZEROCONF.INI \ +#end of list +#3d/logio.bmp:3D/LOGIO.BMP 3d/cubetext:3D/CUBETEXT + +# Some macro for convenient work. +# Macros for replacing '|' to escaped space '\ '. +space:=\ #plus space +respace=$(subst |,$(space),$(1)) +# Macro for selecting different parts of ':'-separated items. +binarypart=$(word 1,$(subst :, ,$(1))) +imagepart=$(word 2,$(subst :, ,$(1))) +sourcepart=$(word 3,$(subst :, ,$(1))) +# Get file names, possibly with spaces inside, from an item. +# Here $(f) is an item - in fact, macro argument. +fbinary=$(call respace,$(call binarypart,$(f))) +fimage=$(call respace,$(call imagepart,$(f))) +fsource=$(call respace,$(call sourcepart,$(f))) + +# Define targets for image file. +# Join lists $(FASM_PROGRAMS), $(COPY_FILES) and $(OTHER_FILES); +# for each item in the united list call fbinary. +targets:=$(foreach f,$(COPY_FILES) $(FASM_PROGRAMS) $(OTHER_FILES),$(fbinary)) + +# Define a command for copying a file inside the image. +# mcopy_command is a macro with two parameters, +# local file name $(1) and image file name $(2). +# Note that spaces in these have to be escaped with backslashes. +mcopy_command=mcopy -mi $(BUILD_DIR)/kolibri.img $(1) ::$(2) +# Specialize a previous command for an item $(f) in one of lists. +mcopy_item_command=$(call mcopy_command,$(fbinary),$(fimage)) + +# Join all $(mcopy_item_command) for all items, +# append newline after each item. +# The first newline character after "define" line and +# the last newline character before "endef" line get away +# with define/endef, so we make three newline characters, +# that is two empty lines, in order to get one in $(newline). +define newline + + +endef +mcopy_all_items:=$(foreach f,$(FASM_PROGRAMS) $(COPY_FILES) $(OTHER_FILES),$(mcopy_item_command)$(newline)) + +# The main goal: image. +$(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \ + Makefile \ + $(BUILD_DIR)/boot_fat12.bin \ + $(targets) +# SYSXTREE +# 3d/CUBETEXT +# 3d/LOGIO.BMP + dd if=/dev/zero of=$(BUILD_DIR)/kolibri.img count=2880 bs=512 + mformat -f 1440 -i $(BUILD_DIR)/kolibri.img :: + dd if=$(BUILD_DIR)/boot_fat12.bin of=$(BUILD_DIR)/kolibri.img count=1 bs=512 conv=notrunc + mmd -i $(BUILD_DIR)/kolibri.img ::3D + mmd -i $(BUILD_DIR)/kolibri.img ::DEMOS + mmd -i $(BUILD_DIR)/kolibri.img ::DEVELOP + mmd -i $(BUILD_DIR)/kolibri.img ::DRIVERS + mmd -i $(BUILD_DIR)/kolibri.img ::File\ Managers + mmd -i $(BUILD_DIR)/kolibri.img ::FONTS + mmd -i $(BUILD_DIR)/kolibri.img ::GAMES + mmd -i $(BUILD_DIR)/kolibri.img ::LIB + mmd -i $(BUILD_DIR)/kolibri.img ::MEDIA + mmd -i $(BUILD_DIR)/kolibri.img ::NETWORK + $(mcopy_all_items) + +# Special target to modify behaviour of make. +.DELETE_ON_ERROR: + +# The floppy bootsector. +$(BUILD_DIR)/boot_fat12.bin: $(KERNEL)/bootloader/boot_fat12.asm $(KERNEL)/bootloader/floppy1440.inc + fasm $(KERNEL)/bootloader/boot_fat12.asm $(BUILD_DIR)/boot_fat12.bin + +$(BUILD_DIR)/.dir 3d/.dir demos/.dir develop/.dir drivers/.dir fonts/.dir \ + games/.dir lib/.dir media/.dir network/.dir .deps/.dir: + mkdir -p $(dir $@) + touch $@ +File\ Managers/.dir: + mkdir -p "File Managers" + touch "File Managers/.dir" + +# Define the rule for all FASM programs. +# Yes, this looks like a black magic. +# But it is not so scary as it seems. +# First, we define "meta-rule" as a rule which is +# macro depending on $(fasmprog). +# Second, the construction foreach+eval creates +# usual rules, one for each $(fasmprog) in $(FASM_PROGRAMS). +# Note that meta-rule is double-expanded, first +# time as the arg of eval - it is the place where $(fasmprog) +# gets expanded - and second time as the rule; +# so all $ which are expected to expand at the second time should be escaped. +# And all $ which are expected to be expanded by the shell should be escaped +# twice, so they become $$$$. + +# The arguments of macro fasm_meta_rule: +# $(1) = name of binary file, +# $(2) = name of main source file. +# $(3) = folder of binary file - without spaces. +# $(4) = name of program - without path and extension, +define fasm_meta_rule +$(1): $(2) Makefile .deps/.dir $$(call respace,$$(addsuffix .dir,$(3))) + fasm -m 65536 $$< "$$@" -s .deps/$(4).fas + prepsrc .deps/$(4).fas /dev/null + prepsrc .deps/$(4).fas /dev/stdout | (echo -n '$(1):' && \ + perl -ne 's|\\|/|g;print " \\\n $$$$1" if /^;include \x27(.*?)\x27/' \ + && echo) > .deps/$(4).Po + kpack --nologo "$$@" +-include .deps/$(4).Po +endef + +progname=$(call respace,$(basename $(notdir $(call binarypart,$(f))))) +binarydir=$(subst ./,,$(dir $(call binarypart,$(f)))) +$(foreach f,$(FASM_PROGRAMS),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname)))) + +# Rule for the kernel differs: it uses kerpack instead of kpack. +kernel.mnt: $(KERNEL)/kernel.asm Makefile .deps/.dir + fasm -m 65536 $< "$@" -s .deps/kernel.fas + prepsrc .deps/kernel.fas /dev/null + prepsrc .deps/kernel.fas /dev/stdout | (echo -n 'kernel.mnt:' && \ + perl -ne 's|\\|/|g;print " \\\n $$1" if /^;include \x27(.*?)\x27/' \ + && echo) > .deps/kernel.Po + kerpack $@ +-include .deps/kernel.Po + +# Rule for copying files is simpler, but similar to previous. +define copy_meta_rule +$(1): $(2) Makefile $$(call respace,$$(addsuffix .dir,$(3))) + cp $$< "$$@" +endef +$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir)))) + +# Special rules for copying sysfuncs.txt. +docpak: $(DOCDIR)SYSFUNCS.TXT $(wildcard $(DOCDIR)*) +$(DOCDIR)SYSFUNCS.TXT: $(KERNEL)/docs/sysfuncs.txt + cp $(KERNEL)/docs/sysfuncs.txt $(DOCDIR)SYSFUNCS.TXT diff --git a/data/eng/asciivju b/data/eng/asciivju new file mode 100644 index 0000000000000000000000000000000000000000..bcf76e26d07b9c28695f6b1c416c180cf9cd479b GIT binary patch literal 684 zcmV;d0#p4e1poj+00001Mv*2LLXK;4&&M{gp_IzXQTp%9D8t}4T<%p-1^^&8 ze?=HpR~kyo#9vKIQKC|4mRVLlhwqFNJZ8?iqQN>$_ z470eNAmaJaWL3c8d{#qlEO05Jtl8UTNB&~%89RaW*vH41`nM+s1|oLKXz@SkA=DZ)!crriLW8ob zy5>X$p>Lxsj38^$eHZs??;GI%KeJMa-lLIJmcPj!-fJczf&5H9j%Z!siY zO;E1VhtpXrU!LS$(WUG*%EnCu&Oy}wyt=X4vuQ=dRJZTA?-UI#wKoHPifK(%=OJYw znku{D&ZgRAvwb36)p@X>uku(8neKBTM{$?nV8TFZYEV&9P~l&i4%l_`J5+ktE0!WC z0aYMAv-DJtIfotc;Nfu73#&H>v>IyTAGil#K2;1DZSdm}8BKX!Smi#1eRvwKJYGe3 zsx1r02WE{cS%87(AR|zdC{~|6ra!fm8jh&q%PGMXLcJneUaKKKC?7XNd;#~fFN45E S 1 # COM mice detector +/RD/1/DRIVERS/ATIKMS -l/rd/1/drivers/ati.log -1 #ATI videodriver loader +/RD/1/MEDIA/KIV \T__background.gif -1 # Desktop background image +/RD/1/@CLIP 1 # Clipboard +/RD/1/@RB 1 # Desktop right-click menu +/RD/1/@SS 1 # Screensaver +/RD/1/@PANEL 1 # Start panel +/RD/1/SETUP BOOT 1 # Load device settings +/RD/1/ICON BOOT 1 # Multithread icon +/RD/1/NETWORK/ZEROCONF 1 # Network configuration +### Hello, ASM World! ### diff --git a/data/eng/background.gif b/data/eng/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd67e638541a63bc0c3102b4d880f8f10245054c GIT binary patch literal 1226 zcmZ?wbhEHboWL-F;X4BeNOA>;>1A4(RXJJqd1S1MoN+98_QR&IZM8M$H{~4J)BL3G zz}w?TzdYXb_SOAwU>&2xXb23G5YPen1C$pSIQ}y*a>#gWSa7hJLs%>3#D;~3+Xa-p z=6GyebhKN-IP1=djf;=>D>!$_cy3y9agwu<%~^M)f;7UHG7DAw_1d=P=4P$q zi(*f2TN1c6HVL1=!PsN3L}#^WB7YZ;Gw&-Ol_)Ac}9 zV^KEev$n~7+m^l%o*4GG<8iu}mcYYIE}I1h8ZKEzE}Z0@w({vTS+)j-X=@cvKAn*= XEpwS~lGgVFGjq1ROp9S;WUvMRj>YTi literal 0 HcmV?d00001 diff --git a/data/eng/default.skn b/data/eng/default.skn new file mode 100644 index 0000000000000000000000000000000000000000..e6b4f208e5839a6c60e1b3bbb93d597ecad3a28f GIT binary patch literal 1203 zcmV;k1Wfx&P(w>}BLDya0000%#gZwsj&&}CIeQq_5y2*c66<(MrJAFs1dhDf@5CH!0yt25 z)Nt!*cMpbDFFlK@C}UqflaQ!-FGl|=H-(=w9=7N4q26wDNH}0#>t=kQG*t1@_E$J3 zb7cnSLPa7IYAo{=PYnOWWAF1@YnmV4C6{^_)eB8;Q?Lc?2N>5o> zocGN8dLYf6?Tr+-?Ww9gr6yUR(L5mY@APMnCTz$$!dYXHy9eYN{DHAm3mprUd?JZ& z_^=Ysq=%aUqcshf_IUv3Kj{xm=4CWm*cDJ_%)}&{&w+w=LQIOFha5vQ>&HVErq-2y zuJ^DNH`ABZ>{X=7rfTT@vi4L6qX|1`otw7X!0z&}f2iaP`lx&f_bfe+3j@eL-4wHm z*zmsk-4)@o=JlFY8M@Oe3E7-?0WB;50*uU}1t(>xZ-Au=ng(b@k#JSK^h9Br$+PfW zFOC9`_in$(-d3-`>g*DJQ;k*_Z16DcUK@Ct>fo%!HPyIaR?)zkj`4kvjWs(}MCUiQ zl@b-+QLUlbsjWkDR`Vazu( z_QBZ{gYhO2aq)Phvb-7Q-QuHfq2II+J_4d2gvA+~rh)n^XV$*L`Yt7xu+~lf1}vSF zrTNvH^(yA5UTgM^DXc|x3qZ5p(KY-W!ESZ$^rft^V|bIO^^*GWv-JRof)jS%JaMA< z{N-0{>rL3)b>HZx-nY*^&J#C=qwX$aJ~D(Z6*NLlB#g$pr`FARf~votXRnz9vq4M| zHV3j8Vm)tW@JP{O_@$((uV32|7#phaG;Xl|D++=lp-}q-HAQSz6=ekeeo|vzW}VD2 z@ixG831bMUWMz7#b_IUUN+>zUQA{KFJQsfWHk9Sk#yNWr9`jsYS=rRN6!13Oo;>M^ zHj;a*n7E!8oqGd59M;zykK$vvnXw}}PE8aM?tL^Bv&rz_*+QeT#Mbj-yjfcFTiXC!uSt}Q&{Y@Iz4IQ z?WYREO8c%E^48|Oo_i~7=d~N`I7==^0XKjl3)Is6=`BUF4KC84t;D((&N{Ug%1crq zevLBSVc@%@NYDURL_B5^T#K15hnZNMq=>b(t$PBMWIBKF?xKT)rD;6#bavtyRU|y} zW_@m#xPno818kI?d!r`hb0>QTdN|V R!Cd0u72r}9T!jyL`JTz#UI73A literal 0 HcmV?d00001 diff --git a/data/eng/demos/aclock b/data/eng/demos/aclock new file mode 100644 index 0000000000000000000000000000000000000000..cf5b8ddd88bb4bf14c660c3a811bb0210cae7313 GIT binary patch literal 1206 zcmV;n1WEf#P(w@m1^@s-00001Mv*2LLXK;4&&M{}4FNtG1>^0(^p?IH4?*s=$9OC5 zNkK=|+CQ}9M$O`@7%f6>gNkOS2Ux$*L5>o;%>&(k!rzb~DAO(B$}d)zaBqA|H2JiP zxK1t8acDPzU6UrP=wg8;WTfalUJLS^G|U`v69kS>*$D8b@Tx&O?S4lvZ?>s>`lF2f z6C(}{|MkGpwT|=@qTC|~+H{|dW$aXW^!3D_zE_@p@fYoF-sAvKXbJ^wq#H-6#eFYQ z`TU!Qf`3}iN{sohRdt8bCBdIqoSJ691OX!=t=BN1IVC|6TFD#Ug_oD0_g^Q{w=t@a zn`*6Xu#lF-dt52$kLTgKSc3W&Elv!raw{h<9!bpB9ZRsdU2iYc=AG8KS)%xic<@2B zf$4$(jog?2t>Lb=@+qPxc{wZ50ILwfhE~EE3|wx4AD35;?}m|K-JJYw-3ygaeTgq{BzhD)iH%pNx%T7^C_n)U77Eaoo z6C6dlKUdtp;*}pkX#o*ZYhx2HGn+~h;5zv-o^nOq*_sWbG4#h3bAi~2mm??}+ zq*d7n@)N*-em#L?PzK`i&)lv;i+@aOYC4?dtK?L>#^Z-g*{Z(6K6YH#6V-AUT}Fc> zu-%VhZO8Rso`z6HlLDN!9~hoOL{1|H0PR+QqhX)R#US1s@vMW+ilej9#QjMp&Ips~ zAOn!SM0ULhM6NzVH&O@Yxz+I9Gf{AESnk{6Ttg=wPhmxlf*USr3H(nEH9 z+M0!MPE`!TULS{=CV^HGv;H?jF(01>bQ83xu%R%{{k!?aL^{x5y=vttIM_^5E~;=E zH4zjBOcPM-R=3nrOsCzYVJ;{N9G2w!2jJsNe#7V5*Hb9VWvMN1Xk{$1IrAOi>%S|= zsN?zAnP!rlm*i5<#dW%`y-Gum0xf-|028b{0_l?S>kLI*V{w@j%Rqw3eux1ZW*R|y z+NySNdhUb!W&A0K$7j=0Gq(cIMme1!>Rwh+73~07#X|k42?Q3H{y2M9rgu_^(&5sk zX7m*HWX`U-kk{%&hX)@MpE%or%C?TPg$fI1P9JA`KJ%0t3u_D=LBOM2$kIGf`$^Sd zBQX~C3Q6Pp9I|^hzVg#KF=_aI;G>)dI!Ab1?>*TL!G7aYpQk!{k32^KpM!jZgc|Y U80rkEBociEi5>s|AOHXW0GldG6951J literal 0 HcmV?d00001 diff --git a/data/eng/demos/ak47.lif b/data/eng/demos/ak47.lif new file mode 100644 index 0000000000..9338b986ce --- /dev/null +++ b/data/eng/demos/ak47.lif @@ -0,0 +1,71 @@ +#Life 1.05 +#D AK47, a gun at 47 gens/shot. +#D The AK47 reaction (middle) +#D by Richard Schroeppel was +#D known for years before +#D stabilizers were found by +#D Paul Callahan in July 1994. +#D See also P94S. +#N +#P -23 -11 +...** +..*..* +.*.*..* +.*.*...* +**.*.****** +...*..*.* +...***.*..* +.**...*.*.* +*..*.**.* +.**...*.** +...**....* +...*.*...* +**.*.....** +.*.*.** +.*.*..* +..*..* +...** +#P -6 -12 +**.......* +**.....*** +......* +......** +. +...*** +..*...* +.*.....* +.*.....* +.*.....* +..*...* +...*** +. +. +. +. +. +. +. +. +. +....** +.....* +..***.....** +..*.......** +#P 12 -5 +......** +.....*..* +....*.**.* +.*...*.*.* +.*...*.*.** +*......* +..*..*** +..*.....** +..*.**.*..* +.**.*...** +**...*** +.**....* +**..**.*.** +....**.*.* +....*..*.* +.....*..* +......** diff --git a/data/eng/demos/barge.lif b/data/eng/demos/barge.lif new file mode 100644 index 0000000000..be6317d4f3 --- /dev/null +++ b/data/eng/demos/barge.lif @@ -0,0 +1,406 @@ +#Life 1.05 +#D c/3 spaceship extensible in 2 dimensions +#D Hartmut Holzwart, David Bell +#N +#P -32 -50 +...* +..*.* +.** +..* +.*.* +.* +* +*.* +*.* +.**** +...*.* +...*.* +..* +..*** +* +*** +.***.* +...* +...* +...** +#P -29 -29 +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +. +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +. +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +#P -32 31 +...** +...* +...* +.***.* +*** +* +..*** +..* +...*.* +...*.* +.**** +*.* +*.* +* +.* +.*.* +..* +.** +..*.* +...* +#P -24 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P -12 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 0 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 12 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 24 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* diff --git a/data/eng/demos/life2 b/data/eng/demos/life2 new file mode 100644 index 0000000000000000000000000000000000000000..e1c677d85ff305e06b408975e2b16b6161493f85 GIT binary patch literal 18001 zcmV(pK=8jyP(w?|o&W%W00001Mv*2LLXK;4&&M{gp_WBoDomgo(9eABX49L}qTI(K zN1t2WURlj1e%qQ$D$`%r6QM1G;Fh6l#l@%UJuF zm3$z$z_bQc=2vIT$49xBq+$4dp^GnXFT@Rv)UF5kBy33Kp0KCsNLs42*6jWd8e~if z&KS=4=C4Cs2U8_{YlIeNuGi}xUROMO1hGe^3N)}larB;Gc)9YywT}GBvLY>dEeuS} zp7+~`$*D?sZRGnObJ+CS0F{SyG}LIh1yi3l?>iPU0BEeLcUBt{MDM?JyZB6eYPSmg zZTP<^#{EGvr5XN)@RUIMe(=}&Cm332e2jp5NEvGBc5*Iss2;NrZMByf+TbB;n5m6@ zU`Z~2>A{&oyAi%`I`Px6E+#auGZ=ZM)81mw`S$nKGJ?XaladaxwZk&TSnt&oodOyj zU1kY5TKO5y1=|IB$0lI>HHFmfZ|r3=q0!n1@;L0Qsv!M*y#FO`Zq6u!3zwSoM3Q7M z&qM2WupBw4KrKo}ss8Y0m|2PM{I-LEl-V7L`xB~CcVWSp8v3I06b~LJ@^de?eEw6g z$Rw~!wp;-&y0UV0^@g7!kB^S#BA6|VL`rbBJK~XLTMN{;^7jIeCdM~n{*IQH2A;%F zhI2K!NXm!bsMsWzRn6^b&4*L5S+OLgiIw5H4MCe~s)Umuqkh;z#HIcp8m!P!WReX3 z596_3L^thrNa>`01TA0aq#|_l8KOVUm@Pyo~JnW|AXI~BWK z28;Ay;>A!q&TS;`mkJf?6j^`g%N~8j?D7k+_<_9joW3is<&3{|2NKd{mwPOTBzUh3 z(!OPopcQ;^m|Lslh0n;~Ce0h#oYF*a{Hc_Z0ijE1+7BZEkq}v@7&mp=Ah$*PoDWV* zE#1VtZ89b@V%Do6i%?beOyq38nCe10*%|3rMB4ivy({iEMJ|wfW(-EmAW7&*ZG-r| z@DSov);{oEjcZKon4nuSl(a1@`9j0rx@)8s`>6<%+;!qi7akMG2!s4BFw?xST?fqD zw45b*W||UtKRQMu1U@mhF*QTmg z#8vWnUa5iwHjjwL|8!mLXvrlw_J);ja%9G&+T^0*!T6g5p?!^M^nR;!!icgmCfvHu4mT%(>X2;c#m@#aHpCD9;@(z2x$|D|oiBO)|piAm@w zobyIGbl_n?3d^j)r7!=B^un3l!ikw6Ei2*I;b$YG0obHcV8DocI9S`bH$JXr6&1Sb zPL7PN!~A*DxFQPY{ygYcZG>q7xn{PS*j9|nG8MA&RJM(Nt%q$vmwX1Tp!!Ga0ugBQ z?)H*6Hb4?%nvquQxJ(Y32%cF|PUz*yGO&POiujzr&gq7)m$k4t&3hiPqcsGPfVgDu z-vo5Zmw`Lg%~C~px$9ojsz-v;HLT%^t3qv?Z+>Ye(MroRq>xXnc~VcnS-2wfx__HmHsQZ|THE?qoEg9Xa03yO1VR){jL7~C&P24b2zNY;h0&Gu69 zA~+S!KYTW1?PsD%p=S%xJl@3n>A9>T)g5ms|&SBK!G8`04&DsgqiFP$eXQ{0qd zfQ6zI1M3Cfwu7dNvPe3~I3QTO(XlP9%jleOoXwPGp;KOidKGi!!1Avy z_Z`omAa@e?e@=z1O}!9pE3yK;1bZYDVO}p9k;sv0p|B*GojC3IMi$Y+{hH;d?JQac z&2x=^_maF@=oxcPRBmvN@c@;$!xud)R}%&EOsXn%jG``4nHOrmco`r_mA2owyk?j$ z_b!9y6)i-H(L958$~uIgzLO%1e6(pe$?s(AjFSaFjIdGu*Z?y|AX<|-H`AwOHPRF}Yf-Kvm>Z5rk)!>OJL!M`QmW#My&9sFO(8 zq`w${b82cXS)c#EYPmgl2%B6|0$$BnVC?6i2wy^5tT|4;X-SG=Zb?bqrlRpZBRLJ& zYQh$XZ5C(O8qL}AF=`~dGsCGbe2ebFC|y!3qC0y(+4PB>DW!R1@8c$@mtqEO9ZmosbS zCy82~8HqG@m7&)0Tz$|_$&uLn@6$2TkI-e;`3$?is#g4p`znuok@Ma{v9t%j%jCJ^({0-~yqM-$>3x055q)j~dmu zYzfjEOW0HU-_32BVRe=&B63rf*bqSPaYw0dbRvag5EQ3(r@%=;% zyn|iYe;tK}P6$f2MP&_@D0dka-2SAt9EZY#Im~CZsRZrj_b+$Os||vW(Xfg5Xh|}r+t71%d^fDQ@vivyGv5S2!Z#= z1-ev!r~-613f1hG%PCb&J<9`0X9GBIVHtEJ{$jx+Cx_D>hs^5+PI;+LCo`--u%f2q zz{17#hbKqaR76b0oa!MO9j{r>@{()3-&+bfH9{(AFk&4~HirJ3+-W(GC@t5{he+<) z{a4jCet|bx=m;~JIY&h57UX&4Jz)r6ifQK^J0qf-b!;ZQil_CCT!4WOYv(p1*;xz7 z71x2n>B9z+ut4-Bq`a_PY5t$qB6NiswpnU)R@gml$0}KO79STUGB@&A=wZ%hd+n9| z>}Vzb5p_*n0$?^!I)pdF)4#Ub1Ex=hgaqy|UPM6HP}4*d#e8jranvv!i)$?;AELU@ zA)Wfofzs>YnUqttorZkIf)ndRmPKpzzoVZAk3e&SD$n_kCnq4V+ua1X?yZ zAYaJCFfpZ2Z^wHb=k4HU%MjI{_Vsm9--NPZ;{h%SALx$LDFFRpnY6O^n!w=N?mBB9 z(%BDM9~t)A_5sqU-G1-IF;Q?ND;%cLGvd!2)Uk`Y33sDGmgl$WE-JEpU;aPJV%!23b~UW$eRHD42+5btnJQS*ZrB>a(KpXniUpd?~yBdcBRu(|Zt zpFD74!FFV4qZHgn2`MafU>I9TcT}crtu?^D0w}lmZCe&bANOY_Pc8Y>LaHG@zT(C8 zLa;F0y`F!pyd>$Bkf%d{eg2_syP-9~wL>s2A3ZscoihjyM@P zJSpNPju2Mrp63xU({1YO{issM!>wol$M`#*`7$L;k-K-(Zh>k_4@YN(iYKEpZ^UYL zG@RYK!ju?ITij{L3O^F&5m;wX7z%I*x#yvg#NB#KLhUO2QEr7k^e9zPP}+=*)_9sa zXk4YRP!_2Bvgc9!MSROwx@sUqjfEGOPHc+y4s_r_XF?(ph5>}vKqg_aqren(#SIN+ zr~sOF-sFU|Sf0w?TAC1QF_K?oqITS*cjNicePkV^aY&nUEzcXaoGJgrWICXZmAu*Y z_m~~oD24Gw?U_=CQbr?fl#`XdhB;>%5ZRlB)5l1@6qTTNeO0vPjuOBgsWuOD5t-0} zLM#PADu|0cK8-bDHy;|kRu#D>R^xH2OZ2}g*Q`z?wzbI4G~E5@Mp~poH(OuPoaQBM z0m{0@+cEU2sanVRw)sqn#xbhc1aJk!?s|vWJ_GMKg-J}}F?dkL$F61x3d8^*ua=!~e8c_ocW;`KjRFM|K59wDu~s8UE3FY z!q5qPkF_fBNsA0|rCwoRws$Ao@%y1>}lszH(-^1F1 z_IWAnDbheO;j{%vS5;VsI*qVAywCcyI5tWKNI4Dv5UGpvVSHzGrO|qGi$m8KNz&&s zcpI(5n-PiO5P|`OE7R7zg*F_4@MA!D2a%Ik?sTuT*vNgFl>4b&n%((^MXoG*|LHs- z{~njFNaiTncnVgJXc|7$z5(wj+*j6f_Q$)nOv6c2RHH7pyh)h&(Vm@7@rks-=WQwT zAgY2CWo?Z77GIXw;06aixUsd4Vu1$Md;o+6l7c(&J59LNv0Uoy*s4ylmMrJHZ{m+e zoz?1p-X4s&VdX|F>z>&$E%!lax7u-?f1XuZrg8g5cm!E>_X>oLq85C_ob0?cA3P=8 zfT&MEBP2&uvc&olYG$=J;$3)4q#f7Yi!@A6IUjQ7?MF9zw{)WFmPx>>$%x@CW9f7HtlhzNh1xGxo^%)(ZE-MM@l+7x_ z5Q(prYmHP#8)1L*8gH- zCJ0`k2f+$~mC&IR4_aZb;7%{I$4ev@#Bs7|L(?jWTZ6cUUj^#Z!y z=cpTlS*28&_CLb}9Kd`W#b3GOuDcoZejPHYY)8@ZcsNqovYC{}@d4%Lb@kg|rm zJ|p$;V2tjh@HV!+`Vmj<_;v@n?fTXt#oxH?EAbw@&2E_5gew@$d@0Waj=7Q@J zmF*N>*|jS)&Z8a~ban7mZ)XfL@D8N@Zto=H#P92{C&>Z@Z~(9;I&wd|e~<(JVf1)? z^~M#Z!LUcFfFHQp{~mHOKTr4ncp&{ySn_xu+<@)3Aue6CkO_s*D`vfQfCU=5{2V;} z2@%2_o%VaPM-3?HVqFHS!tu?^;KL!GJGp%znA`+C*uB0CdoL}C+x<}K9O{kiO)DFh z^6P+GR9zp;(%+p3-AL93oew>#+g0ajKY&Vw3g4w--2-W5f&fb|o5C!}?^@U;OdGDV zdvC2QWtH<(4thFN^n3$UEuIhlK`te^>E+2K_K<;z-hzO{11}3{lNKMW^t-!T(}ri!;Fw_@$$+jiJK5*0{~C3 zdR>@fV=Fe@Tl? z7BVc!Ko`<|AA_sYyWubb4Q9c~jScGhdd!v2?2mJ+;+w)r)V(1JPOMgFa996_Fi#aa0|bG%#Tmcp-!5)mbsoXtkGs?48SBbC9KgN=lM_|LrHf4XFBjjN zyht1Q0W#|hpKPxdSQ5ze1}?uuzvOtai)TbquW=djUHh=H8M>bbU1o->yxr5JFsJ|*;SsHTp96~XX2~|G!u9-n&zCb1h%*K9Eb5;D?3f`x(poqfVs~_# zrmLWqC)bqCUqPLLU^j#$CbuM)i32VPixt*>Ylx7p{*$aJ2=fLta;M~XAF{*jFz8#4 zwLavx4N_4X5RcuMQyJ8U7EX!!c&{jv{o1zRak=)BK`XHF0hlarlVKP&FF>hMm{u@l zq2MR41NhGU1h~9XiNGqZR%xC51-P>&6L6h~_B({ADHClq)KTQ&zaiXE~ko?JF?J4ibk*R4JNGFnNh7U4v&4~%03>9PomQ`ZxIBO05 zDeZhfVG%fMI|rj=xp+zRGe_O#b3S7M>AA|Om+Nfto!=4=j`ZdZua~Syc?a4FKbZw4ztYd>&thgA%So(lh zAfArK^oO}aLs-M=T0#w^R{;GKbE*UYJ)qvmDNJ0%_M;W1ykRTkKil*KtC1q>I}WUo=^XPtkIKOi+uA=?;r zR&dHnp<4-0H~bQ*#UX18_F6O+*a!tE23hk`yK0zQ(?E|JDZ!Se77%{#&16EhSn)t- zc3w`(f?&f)%E2~(yb?wk#Cs@>q^}UNBuAvDXeDdwjmnWO*5j>J`W%Wt=_x!^cnY8O zdmdcJ++BFz%$Xz_%3A%KpwHXf6PuD>nimIL8&+4T>CR!9mHc$VG26TEcvb!`@+e^6 zE!Rxf>i+L2H0lN_58X=eG4r^+qvBdwh*YxgI?-si=s&y`Syj}f91H9yKP9hqMGv!D z6COGQr(D8koN@2e9;KnW;=FZa@N*Gs#g&r&#t~^YYJW<#${=4vlzu9Njxu0>-z&j9 z7WkkF%USX7!5nnvHW%(G`{-H@@1jcf=~hGG)g(-{R4UM`zn5orP<;&3E&=FA ziBmd^#$>iEu@j^0qn|v%ZII3{=PP3_L%^7Hyp(Msx-VzAGsBs6$qiowO>qC}X&fD% z=2HZ5wefj$Gvt3JTHHFAJNFM-Ir4bX8%X>}B>1S59<>rEiP?Mgl1Nb7n|DvU>h>7o zhy^M%o@Gjho{F7_x6$?DmR@=uVdTtkqoj4cmtb`8tmrv_j*O063=X z&w}1DbRWORwr8M^Mbnz;dHuw~@|m$G2|dE@`P&B4tOWscY~I|a45`W6eJ@q?v*UIY z={4qWICo=O66bjQmu&SMwwLZfX14jqn337@WRztwmO6^L@x-ExB@Yf{8p`}hcI8?V zeaYRF8ew%dHq@QC7v;AMuyl}2D$iZ(&t4Fdb?^xLaRe5m{nvE!L+w*W@pS&uz9zxc z50VL-8&EdLuqu)T&5jH?#1c1tw@*>KGIc>r-FeQE|B*BWw}P=S2hy*v<#j7KY)~=#S=6z%>cR-W8 zqh_-~Z(1>$@6Bug zYKu9iNa+9=e$2&;=Av?{7{h)j#TqXcAIr=_yN}Sc#Mj9lGOtVU#}X-QhKkffFnKwM z@H@H&(^@IbwJhcn!I(rToyiI*Am%tU208l-dEXJx zo=>~O?M~T0N3uEDdweS^bVAv;Ai2I)rji1MJDJFwYaR*Ixd~2CniOdruD!OQgQz4UKt{kynh7R4^{4g@0_FR|6(l~ zdIH`IBXSO~6CvE#Y(is~C-m&3@zkqhv8gUqE{M7mZDI|>a42?NQ|=%DADTe}p!JdetBDutPLcGZYtZ`oF3(l% zKqmo*VffF`)>$HiF>Q5hWNsd$~=rmW><@C*2Kec#iQNvH>wcs_2(@l#=RrjGmb!?TQ2F` z`Rc5{rSm;cD?TlszVXXp&(o>!+gSsT%URXDr(tNCx&NjenC7%xoJzT-OlP)_0|wBv z3G~++_h5~^{511B7tv6`@|V$n=W^Dl`W*0B5+%vPRnx_7DQZiw;Lj_Iz%%6X+y%p3 zPI$cc871X>UMk5L~7clQF2c5q`FG}4sWrZvWU-BhK zkt(@9^V4g-+S}*p!2-|zo4xS3na{a8P>tbfeAgD9rZvCFZW$4gkl4UdrmU;douERG z!6v*r=u^vUQc0Nhu|yUStUY|gCd|T)vSjhK1=B%>0i7+&pPE55bb9Lq2dw}&^n`m< zNQZ2RG4WCY%Z0pgDeO}$v`|TYCu;U&jCUJ*TZ6{Q@Cb4{7tcqF$Y9{(dfe}TJ~1;N zYpDFF#_xDiO>595O2G}?s(t=fL zb@obP^1NtyITKnx{e?B|=Wr>FAY>oun}9RLb8o*P?)%Buwo5+dT~iRBbS zD|ikptep844Q+#AU1)gS!*VgSxq<9@w~E$t>l5TnGPJk;P2>}Wg7QROHsNNi!D*0w zQVL5|URh94&Mn8sa%xTu$(uTaa<44WDcEgIPG)T|i8EhputQ|R72sJi)lAc7ssKf1O_^-v=iJsf_J@3} z>f*=lWV$_g!CVRH(00om=R<40#eF1w@cFb?ezF@Y68|aLD5IPPV`rr-Ar^{D9yO(5 zz7s7~MdYe_B9qqM_#!_K%Ban)T3?_491-#QzMn|egY3%^6uBDn@r%cnn`RLo!+BR! zK8C%e@3|e*qhcXUb{PAz>O+P+k-E-y%pqdyLCX}gc|;!LvXd2F%QwaYGCU8(^a*v| zZy0={CvjLDzb2$iH~`Jxgh^Fzi2d)&$L#3BCrd$}UUlqcerz(HDYxg_6>w_Hl4k8* zW$9>=)(02-u4Jky;6pbdMa$G08Al8&l8qb>E3Ez}c!PJUuTHcN9=qb{KJSK- zzhjsxcdOtrQni3P8R|Ugv1^WhYE(lvXfm%y(4iK!)beT$LNZEUFYFrB_$7XWi>(f= zcSz{F!m8BQhxS0`Kc$BqAlOKcz+B6^{Wlu6L_1qRL&|J@*e79Z(9vRY^(5YxR)#3> z=*Q}4qc1qK&)v$`>!(FaWi1*igSie!CZ>2!JgD_8&{-eOVn>VdalfV~j#Aup zq@=y9DE)jP=?RU$!(S)cxBqbPLzS3aLZ?!yKfBmx>T^8ZXics>(c3#^eda}J=NMyr z13Z!vgh|*+U9R|vo`hrxy~~D@7;p(h;xTr8xCTt)dH#i}s1&dsuc>>&+GOD}AuvnH z768hQW)}HPw6uV1bb#L^aoZ?ei9*MCGsH>=G7JIiGXs231+m9w&R8sEI1mdQOdVNs zJ!sN>KC#_r@5)<{bLbmy?uwVIxFsYtLBXSx&xHOSv5sr}z6nwp&zVcEejO}~YGq#% zX%6Z`pa;<@eT~PA7tvfV?p6uWAt=M!oQYt#-=d!d_Mq#p2ZH_^#`Y|~s^-=)Uw|gS zjP*T7+MQ6%2 zOM%&Q>QXe36(1a`6l-rTf{d1#Ur{dwD%v~UxgZ^AgAB%|%-!lq(1r7My`XNgfQbRi zC4z&>$LMc-t%01^FD5J_W!T~oYkEm#+-~^C3Cnp06hSAw6s04=phc4BM zVN;?}>^=SygmMa>*~nx(3nQ?($tGg|1M7b9^wWh>@Zn!sSwTrk#I+M;UsPfnArVNXsE?(AR~QcZOp44~jFa%> z7)6_THqVFHI_9P|wa93QVH*A2bB%w@PV3R0C4lWYHc}fewN{dMXoJuwibUz~)$Ao| zwHqSe2&DcH{fKuX=CSpPWM(v%lZq~u6X~*hQj)HT-a`9iIS%DjfJ6^M4B}{NYyA)0 zA*An{Q0#+5tfi1KL{th?IzTk;iBe1Yf`-?hF2F*%;riWyK( zxt!_?W!D)4VUMBc8#39)q+I0O5zp!Eg;qLHvdWpyw2;uM3v?->6AXxoV8B7`odA73 zxomf}ZTmP!=DLp8zB>uoM_HdLPPfW;Ip5L3F5AVZt-%|n z)O_4#csQXQeW;o8KVDi>-uyaZx;G3J#*uR=s;8~`QFA&`-0oJffyN!ILgGqsOZ&g`g;VH`wQ27vl;5?JHKbg4h% zFgK4UNR9B8sF6Hx8GqaKSd^;%4&gXzoo}mtQMHz6;@*KdjS4q_jlJSzBn$*KntKBM zsvkq}UPU%At_OfKn^~KedEw;!52VDF#su>|(BGXn^i!zBr3D!-Tbqi>Qw~ok@3FuL zy>9r%YRR&3;z@(=z%FgUNl1( zh!SlAJ;eZ3x5hQsOszge(4+-PFoJv?whx^3RX-~28`XolN~R! z7NB?t(&{DlaR$GGp{fg=!0dBiG&uHs_04N05}4R~^&HX`_GHvsikC%L0OUA_VrF8q zV=lj2Mm!x%I0h|>LuU013)thcC_2Nh!||w2Is>f>SL-1oTfB32?@>*_2|zs+2-f1k{%pt_`D~>q zV1Fa`_3pSxE;(J6(tZ(Uexvn|ti};YehG$wjg4tvm1W%J$rr8-zf*2L7{(Ie@b{GO zQopQ;Wsb8rPll3l|I^Dqxy1z=;SmG@INX<{l6HdQyn!RBxrqSZ9bB_j%&0kURQNqQ zRWwl0ynGO}`kj3{^qWjx{~HW!ux>*){!z(4o_QZ8h))D^Ee$RWXmj|b8JIfijzLwn zV|{P(n~Y^N$|F4nJ#;XZUpXYp^14v^8zaZt&72TSaP*xceTZMiz2Us0{7{ zo$!Gunlq@c{|^w5w~oml{Cn+W?l@lrc60)_vov!yvR3Pk3-v&tb8~pS%uDMZ_eK21 z&?a9Uq>dBV+t>P8H{?1ziJ`2NpJ@W%#Yc&6qo2Iw%K-~$YQn3Q z+TH=Q+ul6G(rJY`?nk^80+>(KDi94CjWY*X7u@#5vv`gt^BxvZNKyg?ZdAi8#ZO8@ zZc|X>sd>#SA!%My&sre+d7&(DUeU{&H}S&#*lAY_9-L;Mg=d+m(Y?bzX2P?VR7Q|R z@Ya#vlD=Yr@p~w%=oEvj%Y}A=gkZ6b>X$|}pS(<;z3=R)*j;|_ zpr?2>*pgTk0cMZrX1K&AUpNMUw>MrWBAiSAUsLB@p1W(Ek5-jwF!I**ftxLKm;_~P z(jdav_Pw1+_dwqSOizdk0Q888bE$^xhOMz1hI>zxCPE#WQH72gPr_Y=sj@8r7e?rd z5r_CTlZNOZXefU}owxhBF3rcgUU9->S2nL02d=ZRsql{#P1hNnMy$~)Zw;*(l0oE~ z=dRr&512m4L_o0> z&zt!bsTWWZ@S-#_&QlP^rE7)s?NUk)Ob+(bxwmP@v6*w0y=|99q@);($L~nmAW^Rn zstgmG3&<{CHQFhw#@n&RV=5GgopP>-^Ak<@8J{8`I|a7&+E0qkB}o>~&Jf z!@^i5Daoq9Au69JioiSrq-;CP2}=#F$IT;E5jq)$vN7TpfI1trH42BNGv5@&RQS!$ zFIvsnL9jBrBf4SW$ZLYz#`KSU)#K(uVaVv>1q^l4qBKs`EUKVb;pddbQTWf#;j65vD z#JzDW+~97)7R9gyF6$l+M9Jk3rgZ#BHd`kt;Nfx}JMC2ot2=a{|J{Ay8Tl-P5y%*1 z_raY=>{;uC{GQHVMr;^xzjLta+6Xv&F@=JRPG7qb?q)zXKYK_wx#Ku|cfTA)Z&SY% znquIdNVA!NlnNNOUR(^LcoiGN>b3M)#DWZq;tX`LwUv~Ic&@jx!_dQhw7g(LfNmR-X>&K zJkSvLGqhe5aIkUM-gH8VC`Gyp^Pdz^ZTWqFE&TG0Y%`c9tkLb3cEP}Y<=!ic+#x@f zFpl(ancxj6Lao*sMfL4fx5Z6EJUpEmMEuJK$R_zu8?i0$#&NtwX=f6~3yC(k}&r~p}rLCf4 z3e%s-m7m*h#lQ7Y$*3jQd`ZZ`Fu6%+@J_KKL4!gq9h|nqQ(XXT|Bz*4AFuEKC~P5I z6lkezty~p9x3h$To}qg2Tyk}uwf3F5vI3l9D*u#jr{)Lr-?$`RMHys39F8(aTAVSp zpeAR)84lD0Z(sWeW2^s03cx%bF(tV+cWDyM!nQ$ZA~@}N%0z<}1{J_*0*YNGO+(1t zcXhpLRNJ;zRTIAdX(?S7@3Fgx2`jm$k^b>PRCSw_X3#sf((%tAWD~J`1domMMCquN z^z%oNR^-^ETn8Hi0-XA7!jHmTvlCIofsIA+1@$x{8__lNSud44($AT=?`9IcT=g1E zey_iGRC49!VEWOmoI#B}j8&%RL-nsPb!gs$XT@{ACa7Vi?9WwFyq^6%;*Ut505fZ2 ztf%c6mRMG)zl_Gs3?>$9HTyuy7695ue-Se!2RS8j3F2PVb!jR*`ys9^lm_&x>DkB^xdS`xi>uz=~*XPsvyb4%BC0zBYHs!!ZHQx<=sC9gkm zXmvkthHk1X^vt_yJL`}S={9T@{bdX9SLDNp{1ymu`Kf>(Ur8-yLz5<&WxxAt#emJ2 zm_^hsnRJSDc^jdOb!qPFPLbjLLa4`3K)qxJ{Vv;3$gGxompSj+m&NS=Hsl~Q)h#%B zol3n`>ikxdm$jgI_0K2rrG=BAv?c4W33<-66_ukKA!+M!GR2z_8=lRssv9y`Yc1t_ zzD0*U-@1|hJZ{Os!;9W}N^ydUHWxq&nDFZXdvYUksNTV2L)sW>ycj~3Qv&ymrddk% z$346so8=Ea^V()VxPHyr$mjE;H#MsuI{h3zXLM{fXHNrfCf^txXcVj+-K0{X6e#=R z6wJgejUCq;^c{arRXVp79mH_7)g%r-Ry5Cse%ca>Sfc{fug6G*oZQ2G)du7et2L)z5Nx4ECufBVgAEdjagr-lvK!IcRK1Vw)-?3TR42%E;L5hS zctkttvO0_z|BLI4Ap-HZH>$3eVw)Zw1KLq7!Ho9M>oqrAVi}zUZE@GGzgI|_$(PD? zgGgHy?2P{Hc^(G6!PNC$f?AqlAA@I$D0@ z28Ve5p9v%65c}zPYgEKkUeEUE?N2(`qdq+KWy8c_xpw8dfk~oLLGVqX>@vIkL#|(9 zfJ@9lT$SkU;J}k`lK$Mg9M^v2h{jN?7qw7Ude_~B4s$1_#l6EA>tW*1l1A{@8CYZKW;gh+xsiST^f>{_7FD>VEP6WRM-*B znB`DpXigUPqQtDyDMFa{E7TYG<=bQ*!vD_s3rW<65xz?n%LuBlp{b3KbCTDjQ0E(7 zZ*rOIqLw#D#<%aZR(t#-IgQ{Yy-OCCRRciv1afI^6xm1NBPB1ONUa@82iT>z+RW^G z)=`ZGjq}Rk#i4%+Ni~gL8Hhou!Jms(YVAJKJ!|b&mBeHAr0ji8i5gRMvPQ=lS2-*s zMi+FE>YQ8+-|XFKy{(xJrpaU=DThu6IJ~bD=_)#T>KZVU2N8n#4}>aWe)M9 z$Wdfi{;kJbsUuK0-(Q0~+wbqfvkFE;ffRf*$;H)zZA@ks2qs_KDmEa@JEkBSrDGCb zymO(8`hj;Y+;Q`Ib*9BPFV6o;qkrQ$YS-V1tYs1~J2x}Jm6V89#~2acY9Flv)W5^o z=))Ze2-6gEj0o7nEXimkw`PQfyC-<4oiaM+kH_1C7C%3aP!V!yn-g6oj91@v9(Tn9 zo3`<~0#)tWkV`5vGvM0I=c~7Y4XF~gqK`BJF?z|C1M8Tpq2*X`IAR{o)y1SUq-g4s zw<^X8^eht#$mTiysQ_p6R>k2Jrd6!T|6QBD#hiD_U-*2p{m@1DtT&oJT0%kffHB>*W|S@oi8B<=Eem zB8~>g?I%#ZKT~A#1r=6DcWABr-ao&Xuk7C~+wqsrXH@F*w|iAWm4YHf>{cgdM;VKq8dOku=- z-&__OM&kpt_H5SaMqOuM(GR}-rCxcwx#nB+sUEj!<~*$UfIK&HQlyn28l_N;WtdJO z1c4$1QV0n*Enj#p!oCHLj+SA=3c~Y6l`r(u9c5*hfiJ=vUGxEEduag?`YzX#rS%fM zv?;aI4r4c}Mb9%?dkcwO5$vYJi%I|AKCA{i?Jp+F){Y>|)ePKaHvikbge-uQ!A|1) zmD{M8RM?S;OuYS9*FE2ms+ROi`{n~^-YMWj|75tYTH-6EqE5zDIk1_5d3vl+v)O#g zj1fDe#4n2Bp2ZD{iB&FVKk5wZ{j>PQG2F1mNRnvn8{x*wgRR{)izwHsCgtEweG>NulT`#V+;B~AydI!T02eNy!nhwO>bBHmT;`3R z1X%{)ut5|S{EyJ5>6k>PTRaYIE|yuh6_g7S0aS}y5xX!nM9TJ=8NMN^2~V>X#$V59 zAW10^Fg>t}^58>4D49Jj1r)Et%r}g)cg2NR9GuqMvzw0IFk{6rycn4(~36VL_$IegW%<#t2USB7_&AlK6@mmZc>#gf` zCK}UCbfnr;6Ioe5+2=o0G>i+t#dgVTVUh+YD3S6uaqFX;h0Ac(XO%d8s*ZDO{ftq* z3>+iPlk2#gX~>8wY{&M$W`A)QvE|jXaA#Xhl931GM;TawhMN4qnq}b*i03XM2jGa} z9p;WVgdmG>Gg~Q|-Ty=nMy33+#`xJIeHJX7zI{7M?MY_0s>8*?fGVYk_i;KWT$W0! z{bDyq=Fa-_y&1k37+cfFrVf@OtvLD_ZboeNl z0vWEm)vd=%i?a;KY*m@~Mr_pN@3QD|br}0OrbN~@KtNu2E2rvAcE)XlmaIU5>W!@I z5LS7x+tS~Q!PrHm48y3+91n?8rni?x5RW&Ii(Q-uZh)^l06#|nR%{GgUY@fYg3yMT zuVhe)#&uFvP1cGlxw4oCocZiqGIB?C%D(GJZ5$gTyb|uxFdgHPVXDjK+>eoq3ht_F z*F##`iV+ep-QRO+m1OD=cEib8_}y9m%&dLSlcK3ugkAZ-+QiM(&V45|lOHX!RXZyZ z8kAlbXO#7s&VRMq$kL}o%u}|6f}{tYX2^JRx)q%xQ-s)vct$*8uOU3Y*Sdu#Czi6t zBe+KIL*VF9U@}Cq>q#X)zw}TpE+^2n=`^OAw$FC_Y>vE~`II_f24#1gjlsXW<(=XN zO_r@}A;@dX7{PX~e8Nqi!MR?yy%M@4#SG14?h`iZ6x18MFPQHyXKdkMI5OifSeml7 z`xvIN^a5kq4%Fqvs31T!Ko(Q892M!b*>2@3=If)!BJt|XX+A0Sc}>IPv!L^^Y6aIV z4e17Ds}-V^I=dFBoH}GXpC0SWKp%vggO(AyP|Z|Q9jIz`=Yj4&h)R>uPIq^**;q4D zCWgd#_Qq7CW~rl-6g$p*F$F@mpuF>QpV>Ob1l0%}$gRVpg^XH@~E zmn2s`8`gafS}~v6T5iiluuB~puZh%9OQiPwF{8G?UpSYjJh*;*4#mx}E4jbeQb97= z?Bj$@$AdefS5Yw1SYDrW`>kJs_stBY@bac6rmgU3Znb$^r%QcGO4q5rPI6Yh`r8%| zb!aY0WP?U-l-@l0vKNxvq00;dM4wzI7g!ylbNW^Bwp6l269D>twMRH2AdO_I{)`5o z@og3@aSH*!6RJ#pf<|r zHcI3WR(LfSZa~?A&BPUF9OU_p;=usKt4v(VOOS{pevBB03FLbIY?~iUEpjfKXCLxE z?7|~!s65aNEI`vg`d3dzMz#0-EL`3dCe*uY1?TOJi)<|nQdjwW{Kg6?;VGAfoWApR z-$!iFr@#@+ND64Z9?G4U*8G2{6tYPznAIT82l6X*uT|P5Y-Wo9i3q!AtYd(?*#Ebn zM%3Ig^Eyb}j!u`6WT^D^qyN9vG$l2o(&RGHZ$k7l-igt_9YBr^CQuzv^Mp0!2h)&M z;=@(X;|#AsXXBS+lE)E6%^$g*=S%H~tan>^pU_MpByxkvpbF{InB|)7$8T447O08= zK((;V5{e}yqBsHGRDI6oi!92MP`+@kxFqGx=s&cIB+D;P`nboHp#MQ>7b?SfZ2PpH zipfu2-m1Wf0TWA);35*Nq$4^*Z{ar&`L zP^p?QZkoOZ^-G9Cysu}SdEJnBdE#1?AB^9C z2|!Zbh*zrb(o{Y;my!iN6MXO0ZI14nP32btGU!PPQQcVhSZc5Hf_E?HG#%92H$a(T zCrR|jNGL@VK>H--UEV=S^$G@jtCYZ!sfXCT@ilA0kK4nD$VIR|DXKZ87tYRv7U<*X z_f~0Z2z}azLe>c)CL7Eh4VK1~QK-B<(4KadcvIplFWOw6n#2dMdFJBv!B~sshX;gi z>FI{t5t)|i4t67#UD{vF{F~FbOalK`Xx4xyH`P$xtP(w=@2><{A00001Mv*2LLXK;4&&M{uW+J}PWu31<_((SS^9|dxs>2$r z4K9RFx}Urzhlcx-Aq$xn6;9g`qN<4=g4&Y$GVn|&i4O?S3p`aey^k5);Dl~vH)~Zq z(|9c;OljeMQf~aQoIG`l6@qt-ChCa|S_X2wH+_!G7nNxZ70O>ofFWC^&n}YL-~1CW z4iE@1>V)Q`YH3kKhyO= zYy$!kaSr+g*;Sp0S^Ri^8kUui-KmE#0cZfGANkBXgzxzv-4|EAw9bq`&jdHDU~&Q7 zRKbnQgzP!Cb&~hRrj!I!-ytbb%370T>tL6*HX^!=@v&3@1N7?oC@5>36fU zibh=ZQMofs3*4il6_4pf4E31tAlL&h2W$~~LN}}%RAgMUiHNfMz!cVPO>07nuW->U z#_aRw5L#}>VY;sv3u2fZ`A@zfZ6Tq*jGLH&T8-ON7naOH3JathLPg|6ROM$%*ra{? zX5G2#q{s7j^%{yD18Dxd!RTr(VUkZNx`>eN5o}S543D$sq{;C}5&!>j90JH;#Aty( z=W93Vs3wl&jlYB-Y&?AH!Omu;AwGM6@JyFMXi@f~8%bU&zU+UOSJ&RBq%dsT55giO zglzVnAb&9*@OUxS$E59UkH@}=ukZW6LLvOK&7QLt=c}5+^lr7M16|iL^3yxq&n@VY zwH!9UQAbFVX#8~FNwecSvJ6*b3_Q{_H_rpx8~ZAYLqLiW%q1Vh0`Cx8L@PacwocK}6K!sZp_Wikj6#V<;CQPK%z{f*^Q2OQ=gS9BxD4BADxLuIBP>=ywnw~S~_-I zI(3EIzZzCb{d7U^LP;Td?@7v6H_qriu{f;h5n#Q`=c;+)OIIp3Kg7(~@1VB}v=t@* ziD_}iN)SHkfMsF)Jp%a2W_PYJxojoR9T642oVfhN9C;PDih(Ckkq)wQ+-a?RFD2HJ zwQc#!1^J@Xln7V$duTVcS)%<3xk@VSE561I`aXXrBI+@xkFK>=;F)507lk-soLzkpg;dl&Jq5oh0<+IW>r%i6viHr>bDN2 z2v!7NpMtr#?Z_LvH@=j1CUF%44r!IAmKj7(_ef~S%{l9)lw&F|gLg2mS67+SwD%6z Isg-&bYjdJQfB*mh literal 0 HcmV?d00001 diff --git a/data/eng/demos/web b/data/eng/demos/web new file mode 100644 index 0000000000000000000000000000000000000000..14548ae9c1b157c514db23cc39b80a6887b4b0f6 GIT binary patch literal 503 zcmVo@7hMZUujzskt6^5kpXs{G5`xKIky~m@f|;niC{})7S5JK5Xnx=HxuO9 zLRaB_NswI1n7UA@2V2`FD}#1pPvmSu+z|CNOEqd5x47>sAOHj-jXxPnI1+NWix+#I zZ`pd)YmC;6PE;(=sEx?5W4WScSJpf5Qo7d z=JlB3N;c142qTT*pC#mVtB!o~V<22_Uj5i1s5=JZ773D+^KN#41O9JQ6x31ElfaCa zQn6!@I3r+n)9XuodCsU@4=kmvpMXMdK0a($HW~MU`n2F_4YQlWHW*#N2mXjt&g8c4QKH`000~x^@{)i literal 0 HcmV?d00001 diff --git a/data/eng/docs/COPYING.TXT b/data/eng/docs/COPYING.TXT new file mode 100644 index 0000000000..f6213b69c6 --- /dev/null +++ b/data/eng/docs/COPYING.TXT @@ -0,0 +1,347 @@ + + GNU GENERAL PUBLIC LICENSE + + Version 2, June 1991 + + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + + GNU GENERAL PUBLIC LICENSE + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/data/eng/docs/FARA.TXT b/data/eng/docs/FARA.TXT new file mode 100644 index 0000000000..364a54dc08 --- /dev/null +++ b/data/eng/docs/FARA.TXT @@ -0,0 +1,48 @@ + PHARAOH TOMB + +The purpose of the game is to open passage by moving hieroglyphs on entrance +in the next room of the pharaoh tomb (8X8). You can exchange two hieroglyphs +located near each other on vertical or horizontal if after such transposition +a combination of three or more identical pictures abreast is generated. Such +lines are disappeared immediately, and free place is filled by hieroglyphs +which "falled" from top. Missing hieroglyphs are generated randomly. For +disappearing hieroglyphs points are added. For combination of hieroglyphs +number of points is calculated by formula L+(L+1)^(N-3), but no more than +20*L*N, where N is number of hieroglyphs in combination, and L is level number. +To pass to the next level it is required to remove certain number of +hieroglyphs (different on each level). From below of panel with hieroglyphs is +located field which indicates how many is passed and how many is remained. + +1st level - 500 +2nd level - 450 +3rd level - 400 +4th level - 350 +5th level - 300 +6th level and further - 50*(L+1) + +On the first level combinations are composed from 6 states of hieroglyphs. +With each new level one new hieroglyph is involved, but no more than 10 +(i.e. starting from 5th level and further 10 different hieroglyphs are +involved, not counting special ones). + +Starting from 2nd level for each combination from 4 and more hieroglyphs, +and also for passing each fourth of level the player gets "free" hieroglyph - +it is usual hieroglyph (generated randomly), which keeps "in pocket" of player +and can be necessarily inserted by player to any place and replace thus +located there hieroglyph. + +Starting from 3rd level for each combination from 5 and more hieroglyphs, +and also for passing each third of level the player gets "universal key", +which matches to any combination of hieroglyphs and to several different +combination simultaneously. + +Starting from 4th level for each combination from 6 and more hieroglyphs, +and also for passing a half of level the player gets "space crooker", +which allows, when is used, to make 3 moves (not obligatory successive) at +diagonal. + +The player can not have simultaneously more than 1 extra hieroglyph of each +type (1 usual, 1 joker and 1 crooker). + +The game is ended, if the player can not make any combination with existing +hieroglyphs. diff --git a/data/eng/docs/FASM.TXT b/data/eng/docs/FASM.TXT new file mode 100644 index 0000000000..2151e3f734 --- /dev/null +++ b/data/eng/docs/FASM.TXT @@ -0,0 +1,3591 @@ + + ▄▀▀▀ + ▄▄█▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄ + █ █ █ █ █ █ + █ ▄▀▀▀▀█ ▀▀▀▀▄ █ █ █ + █ ▀▄▄▄▄█▄ ▄▄▄▄▄▀ █ █ █ + + flat assembler 1.66 + Programmer's Manual + + +Table of contents +───────────────── + +Chapter 1 Introduction + + 1.1 Compiler overview + 1.1.1 System requirements + 1.1.2 Executing compiler from command line + 1.1.3 Compiler messages + 1.1.4 Output formats + + 1.2 Assembly syntax + 1.2.1 Instruction syntax + 1.2.2 Data definitions + 1.2.3 Constants and labels + 1.2.4 Numerical expressions + 1.2.5 Jumps and calls + 1.2.6 Size settings + +Chapter 2 Instruction set + + 2.1 The x86 architecture instructions + 2.1.1 Data movement instructions + 2.1.2 Type conversion instructions + 2.1.3 Binary arithmetic instructions + 2.1.4 Decimal arithmetic instructions + 2.1.5 Logical instructions + 2.1.6 Control transfer instructions + 2.1.7 I/O instructions + 2.1.8 Strings operations + 2.1.9 Flag control instructions + 2.1.10 Conditional operations + 2.1.11 Miscellaneous instructions + 2.1.12 System instructions + 2.1.13 FPU instructions + 2.1.14 MMX instructions + 2.1.15 SSE instructions + 2.1.16 SSE2 instructions + 2.1.17 SSE3 instructions + 2.1.18 AMD 3DNow! instructions + 2.1.19 The x86-64 long mode instructions + + 2.2 Control directives + 2.2.1 Numerical constants + 2.2.2 Conditional assembly + 2.2.3 Repeating blocks of instructions + 2.2.4 Addressing spaces + 2.2.5 Other directives + 2.2.6 Multiple passes + + 2.3 Preprocessor directives + 2.3.1 Including source files + 2.3.2 Symbolic constants + 2.3.3 Macroinstructions + 2.3.4 Structures + 2.3.5 Repeating macroinstructions + 2.3.6 Conditional preprocessing + 2.3.7 Order of processing + + 2.4 Formatter directives + 2.4.1 MZ executable + 2.4.2 Portable Executable + 2.4.3 Common Object File Format + 2.4.4 Executable and Linkable Format + + +Chapter 1 Introduction +─────────────────────── + +This chapter contains all the most important information you need to begin +using the flat assembler. If you are experienced assembly language programmer, +you should read at least this chapter before using this compiler. + + +1.1 Compiler overview + +Flat assembler is a fast assembly language compiler for the x86 architecture +processors, which does multiple passes to optimize the size of generated +machine code. It is self-compilable and versions for different operating +systems are provided. All the versions are designed to be used from the system +command line and they should not differ in behavior. + + +1.1.1 System requirements + +All versions require the x86 architecture 32-bit processor (at least 80386), +although they can produce programs for the x86 architecture 16-bit processors, +too. DOS version requires an OS compatible with MS DOS 2.0 and either true +real mode environment or DPMI. Windows version requires a Win32 console +compatible with 3.1 version. + + +1.1.2 Executing compiler from command line + +To execute flat assembler from the command line you need to provide two +parameters - first should be name of source file, second should be name of +destination file. If no second parameter is given, the name for output +file will be guessed automatically. After displaying short information about +the program name and version, compiler will read the data from source file and +compile it. When the compilation is successful, compiler will write the +generated code to the destination file and display the summary of compilation +process; otherwise it will display the information about error that occurred. + The source file should be a text file, and can be created in any text +editor. Line breaks are accepted in both DOS and Unix standards, tabulators +are treated as spaces. + In the command line you can also include "-m" option followed by a number, +which specifies how many kilobytes of memory flat assembler should maximally +use. In case of DOS version this options limits only the usage of extended +memory. The "-p" option followed by a number can be used to specify the limit +for number of passes the assembler performs. If code cannot be generated +within specified amount of passes, the assembly will be terminated with an +error message. The maximum value of this setting is 65536, while the default +limit, used when no such option is included in command line, is 100. +It is also possible to limit the number of passes the assembler +performs, with the "-p" option followed by a number specifying the maximum +number of passes. + There are no command line options that would affect the output of compiler, +flat assembler requires only the source code to include the information it +really needs. For example, to specify output format you specify it by using +the "format" directive at the beginning of source. + + +1.1.3 Compiler messages + +As it is stated above, after the successful compilation, the compiler displays +the compilation summary. It includes the information of how many passes was +done, how much time it took, and how many bytes were written into the +destination file. +The following is an example of the compilation summary: + +flat assembler version 1.66 +38 passes, 5.3 seconds, 77824 bytes. + +In case of error during the compilation process, the program will display an +error message. For example, when compiler can't find the input file, it will +display the following message: + +flat assembler version 1.66 +error: source file not found. + +If the error is connected with a specific part of source code, the source line +that caused the error will be also displayed. Also placement of this line in +the source is given to help you finding this error, for example: + +flat assembler version 1.66 +example.asm [3]: + mob ax,1 +error: illegal instruction. + +It means that in the third line of the "example.asm" file compiler has +encountered an unrecognized instruction. When the line that caused error +contains a macroinstruction, also the line in macroinstruction definition +that generated the erroneous instruction is displayed: + +flat assembler version 1.66 +example.asm [6]: + stoschar 7 +example.asm [3] stoschar [1]: + mob al,char +error: illegal instruction. + +It means that the macroinstruction in the sixth line of the "example.asm" file +generated an unrecognized instruction with the first line of its definition. + + +1.1.4 Output formats + +By default, when there is no "format" directive in source file, flat +assembler simply puts generated instruction codes into output, creating this +way flat binary file. By default it generates 16-bit code, but you can always +turn it into the 16-bit or 32-bit mode by using "use16" or "use32" directive. +Some of the output formats switch into 32-bit mode, when selected - more +information about formats which you can choose can be found in 2.4. + All output code is always in the order in which it was entered into the +source file. + + +1.2 Assembly syntax + +The information provided below is intended mainly for the assembler +programmers that have been using some other assembly compilers before. +If you are beginner, you should look for the assembly programming tutorials. + Flat assembler by default uses the Intel syntax for the assembly +instructions, although you can customize it using the preprocessor +capabilities (macroinstructions and symbolic constants). It also has its own +set of the directives - the instructions for compiler. + All symbols defined inside the sources are case-sensitive. + + +1.2.1 Instruction syntax + +Instructions in assembly language are separated by line breaks, and one +instruction is expected to fill the one line of text. If a line contains +a semicolon, except for the semicolons inside the quoted strings, the rest of +this line is the comment and compiler ignores it. If a line ends with "\" +character (eventually the semicolon and comment may follow it), the next line +is attached at this point. + Each line in source is the sequence of items, which may be one of the three +types. One type are the symbol characters, which are the special characters +that are individual items even when are not spaced from the other ones. +Any of the "+-*/=<>()[]{}:,|&~#`" is the symbol character. The sequence of +other characters, separated from other items with either blank spaces or +symbol characters, is a symbol. If the first character of symbol is either a +single or double quote, it integrates the any sequence of characters following +it, even the special ones, into a quoted string, which should end with the same +character, with which it began (the single or double quote) - however if there +are two such characters in a row (without any other character between them), +they are integrated into quoted string as just one of them and the quoted +string continues then. The symbols other than symbol characters and quoted +strings can be used as names, so are also called the name symbols. + Every instruction consists of the mnemonic and the various number of +operands, separated with commas. The operand can be register, immediate value +or a data addressed in memory, it can also be preceded by size operator to +define or override its size (table 1.1). Names of available registers you can +find in table 1.2, their sizes cannot be overridden. Immediate value can be +specified by any numerical expression. + When operand is a data in memory, the address of that data (also any +numerical expression, but it may contain registers) should be enclosed in +square brackets or preceded by "ptr" operator. For example instruction +"mov eax,3" will put the immediate value 3 into the EAX register, instruction +"mov eax,[7]" will put the 32-bit value from the address 7 into EAX and the +instruction "mov byte [7],3" will put the immediate value 3 into the byte at +address 7, it can also be written as "mov byte ptr 7,3". To specify which +segment register should be used for addressing, segment register name followed +by a colon should be put just before the address value (inside the square +brackets or after the "ptr" operator). + + Table 1.1 Size operators + ┌──────────┬──────┬───────┐ + │ Operator │ Bits │ Bytes │ + ╞══════════╪══════╪═══════╡ + │ byte │ 8 │ 1 │ + │ word │ 16 │ 2 │ + │ dword │ 32 │ 4 │ + │ fword │ 48 │ 6 │ + │ pword │ 48 │ 6 │ + │ qword │ 64 │ 8 │ + │ tbyte │ 80 │ 10 │ + │ tword │ 80 │ 10 │ + │ dqword │ 128 │ 16 │ + └──────────┴──────┴───────┘ + + Table 1.2 Registers + ┌─────────┬──────┬────────────────────────────────────────────────┐ + │ Type │ Bits │ │ + ╞═════════╪══════╪════════════════════════════════════════════════╡ + │ │ 8 │ al cl dl bl ah ch dh bh │ + │ General │ 16 │ ax cx dx bx sp bp si di │ + │ │ 32 │ eax ecx edx ebx esp ebp esi edi │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Segment │ 16 │ es cs ss ds fs gs │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Control │ 32 │ cr0 cr2 cr3 cr4 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Debug │ 32 │ dr0 dr1 dr2 dr3 dr6 dr7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ FPU │ 80 │ st0 st1 st2 st3 st4 st5 st6 st7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ MMX │ 64 │ mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ SSE │ 128 │ xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 │ + └─────────┴──────┴────────────────────────────────────────────────┘ + + +1.2.2 Data definitions + +To define data or reserve a space for it, use one of the directives listed in +table 1.3. The data definition directive should be followed by one or more of +numerical expressions, separated with commas. These expressions define the +values for data cells of size depending on which directive is used. For +example "db 1,2,3" will define the three bytes of values 1, 2 and 3 +respectively. + The "db" and "du" directives also accept the quoted string values of any +length, which will be converted into chain of bytes when "db" is used and into +chain of words with zeroed high byte when "du" is used. For example "db 'abc'" +will define the three bytes of values 61, 62 and 63. + The "dp" directive and its synonym "df" accept the values consisting of two +numerical expressions separated with colon, the first value will become the +high word and the second value will become the low double word of the far +pointer value. Also "dd" accepts such pointers consisting of two word values +separated with colon, and "dt" accepts the word and quad word value separated +with colon, the quad word is stored first. The "dt" directive with single +expression as parameter accepts only floating point values and creates data in +FPU double extended precision format. + Any of the above directive allows the usage of special "dup" operator to +make multiple copies of given values. The count of duplicates should precede +this operator and the value to duplicate should follow - it can even be the +chain of values separated with commas, but such set of values needs to be +enclosed with parenthesis, like "db 5 dup (1,2)", which defines five copies +of the given two byte sequence. + The "file" is a special directive and its syntax is different. This +directive includes a chain of bytes from file and it should be followed by the +quoted file name, then optionally numerical expression specifying offset in +file preceded by the colon, and - also optionally - comma and numerical +expression specifying count of bytes to include (if no count is specified, all +data up to the end of file is included). For example "file 'data.bin'" will +include the whole file as binary data and "file 'data.bin':10h,4" will include +only four bytes starting at offset 10h. + The data reservation directive should be followed by only one numerical +expression, and this value defines how many cells of the specified size should +be reserved. All data definition directives also accept the "?" value, which +means that this cell should not be initialized to any value and the effect is +the same as by using the data reservation directive. The uninitialized data +may not be included in the output file, so its values should be always +considered unknown. + + Table 1.3 Data directives + ┌─────────┬────────┬─────────┐ + │ Size │ Define │ Reserve │ + │ (bytes) │ data │ data │ + ╞═════════╪════════╪═════════╡ + │ 1 │ db │ rb │ + │ │ file │ │ + ├─────────┼────────┼─────────┤ + │ 2 │ dw │ rw │ + │ │ du │ │ + ├─────────┼────────┼─────────┤ + │ 4 │ dd │ rd │ + ├─────────┼────────┼─────────┤ + │ 6 │ dp │ rp │ + │ │ df │ rf │ + ├─────────┼────────┼─────────┤ + │ 8 │ dq │ rq │ + ├─────────┼────────┼─────────┤ + │ 10 │ dt │ rt │ + └─────────┴────────┴─────────┘ + + +1.2.3 Constants and labels + +In the numerical expressions you can also use constants or labels instead of +numbers. To define the constant or label you should use the specific +directives. Each label can be defined only once and it is accessible from the +any place of source (even before it was defined). Constant can be redefined +many times, but in this case it is accessible only after it was defined, and +is always equal to the value from last definition before the place where it's +used. When a constant is defined only once in source, it is - like the label - +accessible from anywhere. + The definition of constant consists of name of the constant followed by the +"=" character and numerical expression, which after calculation will become +the value of constant. This value is always calculated at the time the +constant is defined. For example you can define "count" constant by using the +directive "count = 17", and then use it in the assembly instructions, like +"mov cx,count" - which will become "mov cx,17" during the compilation process. + There are different ways to define labels. The simplest is to follow the +name of label by the colon, this directive can even be followed by the other +instruction in the same line. It defines the label whose value is equal to +offset of the point where it's defined. This method is usually used to label +the places in code. The other way is to follow the name of label (without a +colon) by some data directive. It defines the label with value equal to +offset of the beginning of defined data, and remembered as a label for data +with cell size as specified for that data directive in table 1.3. + The label can be treated as constant of value equal to offset of labeled +code or data. For example when you define data using the labeled directive +"char db 224", to put the offset of this data into BX register you should use +"mov bx,char" instruction, and to put the value of byte addressed by "char" +label to DL register, you should use "mov dl,[char]" (or "mov dl,ptr char"). +But when you try to assemble "mov ax,[char]", it will cause an error, because +fasm compares the sizes of operands, which should be equal. You can force +assembling that instruction by using size override: "mov ax,word [char]", but +remember that this instruction will read the two bytes beginning at "char" +address, while it was defined as a one byte. + The last and the most flexible way to define labels is to use "label" +directive. This directive should be followed by the name of label, then +optionally size operator (it can be preceded by a colon) and then - also +optionally "at" operator and the numerical expression defining the address at +which this label should be defined. For example "label wchar word at char" +will define a new label for the 16-bit data at the address of "char". Now the +instruction "mov ax,[wchar]" will be after compilation the same as +"mov ax,word [char]". If no address is specified, "label" directive defines +the label at current offset. Thus "mov [wchar],57568" will copy two bytes +while "mov [char],224" will copy one byte to the same address. + The label whose name begins with dot is treated as local label, and its name +is attached to the name of last global label (with name beginning with +anything but dot) to make the full name of this label. So you can use the +short name (beginning with dot) of this label anywhere before the next global +label is defined, and in the other places you have to use the full name. Label +beginning with two dots are the exception - they are like global, but they +don't become the new prefix for local labels. + The "@@" name means anonymous label, you can have defined many of them in +the source. Symbol "@b" (or equivalent "@r") references the nearest preceding +anonymous label, symbol "@f" references the nearest following anonymous label. +These special symbol are case-insensitive. + + +1.2.4 Numerical expressions + +In the above examples all the numerical expressions were the simple numbers, +constants or labels. But they can be more complex, by using the arithmetical +or logical operators for calculations at compile time. All these operators +with their priority values are listed in table 1.4. +The operations with higher priority value will be calculated first, you can +of course change this behavior by putting some parts of expression into +parenthesis. The "+", "-", "*" and "/" are standard arithmetical operations, +"mod" calculates the remainder from division. The "and", "or", "xor", "shl", +"shr" and "not" perform the same logical operations as assembly instructions +of those names. The "rva" performs the conversion of an address into the +relocatable offset and is specific to some of the output formats (see 2.4). + The numbers in the expression are by default treated as a decimal, binary +numbers should have the "b" letter attached at the end, octal number should +end with "o" letter, hexadecimal numbers should begin with "0x" characters +(like in C language) or with the "$" character (like in Pascal language) or +they should end with "h" letter. Also quoted string, when encountered in +expression, will be converted into number - the first character will become +the least significant byte of number. + The numerical expression used as an address value can also contain any of +general registers used for addressing, they can be added and multiplied by +appropriate values, as it is allowed for the x86 architecture instructions. + There are also some special symbols that can be used inside the numerical +expression. First is "$", which is always equal to the value of current +offset, while "$$" is equal to base address of current addressing space. The +other one is "%", which is the number of current repeat in parts of code that +are repeated using some special directives (see 2.2). There's also "%t" +symbol, which is always equal to the current time stamp. + Any numerical expression can also consist of single floating point value +(flat assembler does not allow any floating point operations at compilation +time) in the scientific notation, they can end with the "f" letter to be +recognized, otherwise they should contain at least one of the "." or "E" +characters. So "1.0", "1E0" and "1f" define the same floating point value, +while simple "1" defines an integer value. + + Table 1.4 Arithmetical and logical operators by priority + ┌──────────┬──────────────┐ + │ Priority │ Operators │ + ╞══════════╪══════════════╡ + │ 0 │ + - │ + ├──────────┼──────────────┤ + │ 1 │ * / │ + ├──────────┼──────────────┤ + │ 2 │ mod │ + ├──────────┼──────────────┤ + │ 3 │ and or xor │ + ├──────────┼──────────────┤ + │ 4 │ shl shr │ + ├──────────┼──────────────┤ + │ 5 │ not │ + ├──────────┼──────────────┤ + │ 6 │ rva │ + └──────────┴──────────────┘ + + +1.2.5 Jumps and calls + +The operand of any jump or call instruction can be preceded not only by the +size operator, but also by one of the operators specifying type of the jump: +"short", "near" of "far". For example, when assembler is in 16-bit mode, +instruction "jmp dword [0]" will become the far jump and when assembler is +in 32-bit mode, it will become the near jump. To force this instruction to be +treated differently, use the "jmp near dword [0]" or "jmp far dword [0]" form. + When operand of near jump is the immediate value, assembler will generate +the shortest variant of this jump instruction if possible (but won't create +32-bit instruction in 16-bit mode nor 16-bit instruction in 32-bit mode, +unless there is a size operator stating it). By specifying the jump type +you can force it to always generate long variant (for example "jmp near 0") +or to always generate short variant and terminate with an error when it's +impossible (for example "jmp short 0"). + + +1.2.6 Size settings + +When instruction uses some memory addressing, by default the smallest form of +instruction is generated by using the short displacement if only address +value fits in the range. This can be overridden using the "word" or "dword" +operator before the address inside the square brackets (or after the "ptr" +operator), which forces the long displacement of appropriate size to be made. +In case when address is not relative to any registers, those operators allow +also to choose the appropriate mode of absolute addressing. + Instructions "adc", "add", "and", "cmp", "or", "sbb", "sub" and "xor" with +first operand being 16-bit or 32-bit are by default generated in shortened +8-bit form when the second operand is immediate value fitting in the range +for signed 8-bit values. It also can be overridden by putting the "word" or +"dword" operator before the immediate value. The similar rules applies to the +"imul" instruction with the last operand being immediate value. + Immediate value as an operand for "push" instruction without a size operator +is by default treated as a word value if assembler is in 16-bit mode and as a +double word value if assembler is in 32-bit mode, shorter 8-bit form of this +instruction is used if possible, "word" or "dword" size operator forces the +"push" instruction to be generated in longer form for specified size. "pushw" +and "pushd" mnemonics force assembler to generate 16-bit or 32-bit code +without forcing it to use the longer form of instruction. + + +Chapter 2 Instruction set +────────────────────────── + +This chapter provides the detailed information about the instructions and +directives supported by flat assembler. Directives for defining labels were +already discussed in 1.2.3, all other directives will be described later in +this chapter. + + +2.1 The x86 architecture instructions + +In this section you can find both the information about the syntax and +purpose the assembly language instructions. If you need more technical +information, look for the Intel Architecture Software Developer's Manual. + Assembly instructions consist of the mnemonic (instruction's name) and from +zero to three operands. If there are two or more operands, usually first is +the destination operand and second is the source operand. Each operand can be +register, memory or immediate value (see 1.2 for details about syntax of +operands). After the description of each instruction there are examples +of different combinations of operands, if the instruction has any. + Some instructions act as prefixes and can be followed by other instruction +in the same line, and there can be more than one prefix in a line. Each name +of the segment register is also a mnemonic of instruction prefix, altough it +is recommended to use segment overrides inside the square brackets instead of +these prefixes. + + +2.1.1 Data movement instructions + +"mov" transfers a byte, word or double word from the source operand to the +destination operand. It can transfer data between general registers, from +the general register to memory, or from memory to general register, but it +cannot move from memory to memory. It can also transfer an immediate value to +general register or memory, segment register to general register or memory, +general register or memory to segment register, control or debug register to +general register and general register to control or debug register. The "mov" +can be assembled only if the size of source operand and size of destination +operand are the same. Below are the examples for each of the allowed +combinations: + + mov bx,ax ; general register to general register + mov [char],al ; general register to memory + mov bl,[char] ; memory to general register + mov dl,32 ; immediate value to general register + mov [char],32 ; immediate value to memory + mov ax,ds ; segment register to general register + mov [bx],ds ; segment register to memory + mov ds,ax ; general register to segment register + mov ds,[bx] ; memory to segment register + mov eax,cr0 ; control register to general register + mov cr3,ebx ; general register to control register + + "xchg" swaps the contents of two operands. It can swap two byte operands, +two word operands or two double word operands. Order of operands is not +important. The operands may be two general registers, or general register +with memory. For example: + + xchg ax,bx ; swap two general registers + xchg al,[char] ; swap register with memory + + "push" decrements the stack frame pointer (ESP register), then transfers +the operand to the top of stack indicated by ESP. The operand can be memory, +general register, segment register or immediate value of word or double word +size. If operand is an immediate value and no size is specified, it is by +default treated as a word value if assembler is in 16-bit mode and as a double +word value if assembler is in 32-bit mode. "pushw" and "pushd" mnemonics are +variants of this instruction that store the values of word or double word size +respectively. If more operands follow in the same line (separated only with +spaces, not commas), compiler will assemble chain of the "push" instructions +with these operands. The examples are with single operands: + + push ax ; store general register + push es ; store segment register + pushw [bx] ; store memory + push 1000h ; store immediate value + + "pusha" saves the contents of the eight general register on the stack. +This instruction has no operands. There are two version of this instruction, +one 16-bit and one 32-bit, assembler automatically generates the appropriate +version for current mode, but it can be overridden by using "pushaw" or +"pushad" mnemonic to always get the 16-bit or 32-bit version. The 16-bit +version of this instruction pushes general registers on the stack in the +following order: AX, CX, DX, BX, the initial value of SP before AX was pushed, +BP, SI and DI. The 32-bit version pushes equivalent 32-bit general registers +in the same order. + "pop" transfers the word or double word at the current top of stack to the +destination operand, and then increments ESP to point to the new top of stack. +The operand can be memory, general register or segment register. "popw" and +"popd" mnemonics are variants of this instruction for restoring the values of +word or double word size respectively. If more operands separated with spaces +follow in the same line, compiler will assemble chain of the "pop" +instructions with these operands. + + pop bx ; restore general register + pop ds ; restore segment register + popw [si] ; restore memory + + "popa" restores the registers saved on the stack by "pusha" instruction, +except for the saved value of SP (or ESP), which is ignored. This instruction +has no operands. To force assembling 16-bit or 32-bit version of this +instruction use "popaw" or "popad" mnemonic. + + +2.1.2 Type conversion instructions + +The type conversion instructions convert bytes into words, words into double +words, and double words into quad words. These conversions can be done using +the sign extension or zero extension. The sign extension fills the extra bits +of the larger item with the value of the sign bit of the smaller item, the +zero extension simply fills them with zeros. + "cwd" and "cdq" double the size of value AX or EAX register respectively +and store the extra bits into the DX or EDX register. The conversion is done +using the sign extension. These instructions have no operands. + "cbw" extends the sign of the byte in AL throughout AX, and "cwde" extends +the sign of the word in AX throughout EAX. These instructions also have no +operands. + "movsx" converts a byte to word or double word and a word to double word +using the sign extension. "movzx" does the same, but it uses the zero +extension. The source operand can be general register or memory, while the +destination operand must be a general register. For example: + + movsx ax,al ; byte register to word register + movsx edx,dl ; byte register to double word register + movsx eax,ax ; word register to double word register + movsx ax,byte [bx] ; byte memory to word register + movsx edx,byte [bx] ; byte memory to double word register + movsx eax,word [bx] ; word memory to double word register + + +2.1.3 Binary arithmetic instructions + +"add" replaces the destination operand with the sum of the source and +destination operands and sets CF if overflow has occurred. The operands may +be bytes, words or double words. The destination operand can be general +register or memory, the source operand can be general register or immediate +value, it can also be memory if the destination operand is register. + + add ax,bx ; add register to register + add ax,[si] ; add memory to register + add [di],al ; add register to memory + add al,48 ; add immediate value to register + add [char],48 ; add immediate value to memory + + "adc" sums the operands, adds one if CF is set, and replaces the destination +operand with the result. Rules for the operands are the same as for the "add" +instruction. An "add" followed by multiple "adc" instructions can be used to +add numbers longer than 32 bits. + "inc" adds one to the operand, it does not affect CF. The operand can be a +general register or memory, and the size of the operand can be byte, word or +double word. + + inc ax ; increment register by one + inc byte [bx] ; increment memory by one + + "sub" subtracts the source operand from the destination operand and replaces +the destination operand with the result. If a borrow is required, the CF is +set. Rules for the operands are the same as for the "add" instruction. + "sbb" subtracts the source operand from the destination operand, subtracts +one if CF is set, and stores the result to the destination operand. Rules for +the operands are the same as for the "add" instruction. A "sub" followed by +multiple "sbb" instructions may be used to subtract numbers longer than 32 +bits. + "dec" subtracts one from the operand, it does not affect CF. Rules for the +operand are the same as for the "inc" instruction. + "cmp" subtracts the source operand from the destination operand. It updates +the flags as the "sub" instruction, but does not alter the source and +destination operands. Rules for the operands are the same as for the "sub" +instruction. + "neg" subtracts a signed integer operand from zero. The effect of this +instructon is to reverse the sign of the operand from positive to negative or +from negative to positive. Rules for the operand are the same as for the "inc" +instruction. + "xadd" exchanges the destination operand with the source operand, then loads +the sum of the two values into the destination operand. Rules for the operands +are the same as for the "add" instruction. + All the above binary arithmetic instructions update SF, ZF, PF and OF flags. +SF is always set to the same value as the result's sign bit, ZF is set when +all the bits of result are zero, PF is set when low order eight bits of result +contain an even number of set bits, OF is set if result is too large for a +positive number or too small for a negative number (excluding sign bit) to fit +in destination operand. + "mul" performs an unsigned multiplication of the operand and the +accumulator. If the operand is a byte, the processor multiplies it by the +contents of AL and returns the 16-bit result to AH and AL. If the operand is a +word, the processor multiplies it by the contents of AX and returns the 32-bit +result to DX and AX. If the operand is a double word, the processor multiplies +it by the contents of EAX and returns the 64-bit result in EDX and EAX. "mul" +sets CF and OF when the upper half of the result is nonzero, otherwise they +are cleared. Rules for the operand are the same as for the "inc" instruction. + "imul" performs a signed multiplication operation. This instruction has +three variations. First has one operand and behaves in the same way as the +"mul" instruction. Second has two operands, in this case destination operand +is multiplied by the source operand and the result replaces the destination +operand. Destination operand must be a general register, it can be word or +double word, source operand can be general register, memory or immediate +value. Third form has three operands, the destination operand must be a +general register, word or double word in size, source operand can be general +register or memory, and third operand must be an immediate value. The source +operand is multiplied by the immediate value and the result is stored in the +destination register. All the three forms calculate the product to twice the +size of operands and set CF and OF when the upper half of the result is +nonzero, but second and third form truncate the product to the size of +operands. So second and third forms can be also used for unsigned operands +because, whether the operands are signed or unsigned, the lower half of the +product is the same. Below are the examples for all three forms: + + imul bl ; accumulator by register + imul word [si] ; accumulator by memory + imul bx,cx ; register by register + imul bx,[si] ; register by memory + imul bx,10 ; register by immediate value + imul ax,bx,10 ; register by immediate value to register + imul ax,[si],10 ; memory by immediate value to register + + "div" performs an unsigned division of the accumulator by the operand. +The dividend (the accumulator) is twice the size of the divisor (the operand), +the quotient and remainder have the same size as the divisor. If divisor is +byte, the dividend is taken from AX register, the quotient is stored in AL and +the remainder is stored in AH. If divisor is word, the upper half of dividend +is taken from DX, the lower half of dividend is taken from AX, the quotient is +stored in AX and the remainder is stored in DX. If divisor is double word, +the upper half of dividend is taken from EDX, the lower half of dividend is +taken from EAX, the quotient is stored in EAX and the remainder is stored in +EDX. Rules for the operand are the same as for the "mul" instruction. + "idiv" performs a signed division of the accumulator by the operand. +It uses the same registers as the "div" instruction, and the rules for +the operand are the same. + + +2.1.4 Decimal arithmetic instructions + +Decimal arithmetic is performed by combining the binary arithmetic +instructions (already described in the prior section) with the decimal +arithmetic instructions. The decimal arithmetic instructions are used to +adjust the results of a previous binary arithmetic operation to produce a +valid packed or unpacked decimal result, or to adjust the inputs to a +subsequent binary arithmetic operation so the operation will produce a valid +packed or unpacked decimal result. + "daa" adjusts the result of adding two valid packed decimal operands in +AL. "daa" must always follow the addition of two pairs of packed decimal +numbers (one digit in each half-byte) to obtain a pair of valid packed +decimal digits as results. The carry flag is set if carry was needed. +This instruction has no operands. + "das" adjusts the result of subtracting two valid packed decimal operands +in AL. "das" must always follow the subtraction of one pair of packed decimal +numbers (one digit in each half-byte) from another to obtain a pair of valid +packed decimal digits as results. The carry flag is set if a borrow was +needed. This instruction has no operands. + "aaa" changes the contents of register AL to a valid unpacked decimal +number, and zeroes the top four bits. "aaa" must always follow the addition +of two unpacked decimal operands in AL. The carry flag is set and AH is +incremented if a carry is necessary. This instruction has no operands. + "aas" changes the contents of register AL to a valid unpacked decimal +number, and zeroes the top four bits. "aas" must always follow the +subtraction of one unpacked decimal operand from another in AL. The carry flag +is set and AH decremented if a borrow is necessary. This instruction has no +operands. + "aam" corrects the result of a multiplication of two valid unpacked decimal +numbers. "aam" must always follow the multiplication of two decimal numbers +to produce a valid decimal result. The high order digit is left in AH, the +low order digit in AL. The generalized version of this instruction allows +adjustment of the contents of the AX to create two unpacked digits of any +number base. The standard version of this instruction has no operands, the +generalized version has one operand - an immediate value specifying the +number base for the created digits. + "aad" modifies the numerator in AH and AL to prepare for the division of two +valid unpacked decimal operands so that the quotient produced by the division +will be a valid unpacked decimal number. AH should contain the high order +digit and AL the low order digit. This instruction adjusts the value and +places the result in AL, while AH will contain zero. The generalized version +of this instruction allows adjustment of two unpacked digits of any number +base. Rules for the operand are the same as for the "aam" instruction. + + +2.1.5 Logical instructions + +"not" inverts the bits in the specified operand to form a one's +complement of the operand. It has no effect on the flags. Rules for the +operand are the same as for the "inc" instruction. + "and", "or" and "xor" instructions perform the standard +logical operations. They update the SF, ZF and PF flags. Rules for the +operands are the same as for the "add" instruction. + "bt", "bts", "btr" and "btc" instructions operate on a single bit which can +be in memory or in a general register. The location of the bit is specified +as an offset from the low order end of the operand. The value of the offset +is the taken from the second operand, it either may be an immediate byte or +a general register. These instructions first assign the value of the selected +bit to CF. "bt" instruction does nothing more, "bts" sets the selected bit to +1, "btr" resets the selected bit to 0, "btc" changes the bit to its +complement. The first operand can be word or double word. + + bt ax,15 ; test bit in register + bts word [bx],15 ; test and set bit in memory + btr ax,cx ; test and reset bit in register + btc word [bx],cx ; test and complement bit in memory + + "bsf" and "bsr" instructions scan a word or double word for first set bit +and store the index of this bit into destination operand, which must be +general register. The bit string being scanned is specified by source operand, +it may be either general register or memory. The ZF flag is set if the entire +string is zero (no set bits are found); otherwise it is cleared. If no set bit +is found, the value of the destination register is undefined. "bsf" scans from +low order to high order (starting from bit index zero). "bsr" scans from high +order to low order (starting from bit index 15 of a word or index 31 of a +double word). + + bsf ax,bx ; scan register forward + bsr ax,[si] ; scan memory reverse + + "shl" shifts the destination operand left by the number of bits specified +in the second operand. The destination operand can be byte, word, or double +word general register or memory. The second operand can be an immediate value +or the CL register. The processor shifts zeros in from the right (low order) +side of the operand as bits exit from the left side. The last bit that exited +is stored in CF. "sal" is a synonym for "shl". + + shl al,1 ; shift register left by one bit + shl byte [bx],1 ; shift memory left by one bit + shl ax,cl ; shift register left by count from cl + shl word [bx],cl ; shift memory left by count from cl + + "shr" and "sar" shift the destination operand right by the number of bits +specified in the second operand. Rules for operands are the same as for the +"shl" instruction. "shr" shifts zeros in from the left side of the operand as +bits exit from the right side. The last bit that exited is stored in CF. +"sar" preserves the sign of the operand by shifting in zeros on the left side +if the value is positive or by shifting in ones if the value is negative. + "shld" shifts bits of the destination operand to the left by the number +of bits specified in third operand, while shifting high order bits from the +source operand into the destination operand on the right. The source operand +remains unmodified. The destination operand can be a word or double word +general register or memory, the source operand must be a general register, +third operand can be an immediate value or the CL register. + + shld ax,bx,1 ; shift register left by one bit + shld [di],bx,1 ; shift memory left by one bit + shld ax,bx,cl ; shift register left by count from cl + shld [di],bx,cl ; shift memory left by count from cl + + "shrd" shifts bits of the destination operand to the right, while shifting +low order bits from the source operand into the destination operand on the +left. The source operand remains unmodified. Rules for operands are the same +as for the "shld" instruction. + "rol" and "rcl" rotate the byte, word or double word destination operand +left by the number of bits specified in the second operand. For each rotation +specified, the high order bit that exits from the left of the operand returns +at the right to become the new low order bit. "rcl" additionally puts in CF +each high order bit that exits from the left side of the operand before it +returns to the operand as the low order bit on the next rotation cycle. Rules +for operands are the same as for the "shl" instruction. + "ror" and "rcr" rotate the byte, word or double word destination operand +right by the number of bits specified in the second operand. For each rotation +specified, the low order bit that exits from the right of the operand returns +at the left to become the new high order bit. "rcr" additionally puts in CF +each low order bit that exits from the right side of the operand before it +returns to the operand as the high order bit on the next rotation cycle. +Rules for operands are the same as for the "shl" instruction. + "test" performs the same action as the "and" instruction, but it does not +alter the destination operand, only updates flags. Rules for the operands are +the same as for the "and" instruction. + "bswap" reverses the byte order of a 32-bit general register: bits 0 through +7 are swapped with bits 24 through 31, and bits 8 through 15 are swapped with +bits 16 through 23. This instruction is provided for converting little-endian +values to big-endian format and vice versa. + + bswap edx ; swap bytes in register + + +2.1.6 Control transfer instructions + +"jmp" unconditionally transfers control to the target location. The +destination address can be specified directly within the instruction or +indirectly through a register or memory, the acceptable size of this address +depends on whether the jump is near or far (it can be specified by preceding +the operand with "near" or "far" operator) and whether the instruction is +16-bit or 32-bit. Operand for near jump should be "word" size for 16-bit +instruction or the "dword" size for 32-bit instruction. Operand for far jump +should be "dword" size for 16-bit instruction or "pword" size for 32-bit +instruction. A direct "jmp" instruction includes the destination address as +part of the instruction (and can be preceded by "short", "near" or "far" +operator), the operand specifying address should be the numerical expression +for near or short jump, or two numerical expressions separated with colon for +far jump, the first specifies selector of segment, the second is the offset +within segment. The "pword" operator can be used to force the 32-bit far call, +and "dword" to force the 16-bit far call. An indirect "jmp" instruction +obtains the destination address indirectly through a register or a pointer +variable, the operand should be general register or memory. See also 1.2.5 for +some more details. + + jmp 100h ; direct near jump + jmp 0FFFFh:0 ; direct far jump + jmp ax ; indirect near jump + jmp pword [ebx] ; indirect far jump + + "call" transfers control to the procedure, saving on the stack the address +of the instruction following the "call" for later use by a "ret" (return) +instruction. Rules for the operands are the same as for the "jmp" instruction, +but the "call" has no short variant of direct instruction and thus it not +optimized. + "ret", "retn" and "retf" instructions terminate the execution of a procedure +and transfers control back to the program that originally invoked the +procedure using the address that was stored on the stack by the "call" +instruction. "ret" is the equivalent for "retn", which returns from the +procedure that was executed using the near call, while "retf" returns from +the procedure that was executed using the far call. These instructions default +to the size of address appropriate for the current code setting, but the size +of address can be forced to 16-bit by using the "retw", "retnw" and "retfw" +mnemonics, and to 32-bit by using the "retd", "retnd" and "retfd" mnemonics. +All these instructions may optionally specify an immediate operand, by adding +this constant to the stack pointer, they effectively remove any arguments that +the calling program pushed on the stack before the execution of the "call" +instruction. + "iret" returns control to an interrupted procedure. It differs from "ret" in +that it also pops the flags from the stack into the flags register. The flags +are stored on the stack by the interrupt mechanism. It defaults to the size of +return address appropriate for the current code setting, but it can be forced +to use 16-bit or 32-bit address by using the "iretw" or "iretd" mnemonic. + The conditional transfer instructions are jumps that may or may not transfer +control, depending on the state of the CPU flags when the instruction +executes. The mnemonics for conditional jumps may be obtained by attaching +the condition mnemonic (see table 2.1) to the "j" mnemonic, +for example "jc" instruction will transfer the control when the CF flag is +set. The conditional jumps can be short or near, and direct only, and can be +optimized (see 1.2.5), the operand should be an immediate value specifying +target address. + + Table 2.1 Conditions + ┌──────────┬───────────────────────┬────────────────────────┐ + │ Mnemonic │ Condition tested │ Description │ + ╞══════════╪═══════════════════════╪════════════════════════╡ + │ o │ OF = 1 │ overflow │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ no │ OF = 0 │ not overflow │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ c │ │ carry │ + │ b │ CF = 1 │ below │ + │ nae │ │ not above nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ nc │ │ not carry │ + │ ae │ CF = 0 │ above or equal │ + │ nb │ │ not below │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ e │ ZF = 1 │ equal │ + │ z │ │ zero │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ne │ ZF = 0 │ not equal │ + │ nz │ │ not zero │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ be │ CF or ZF = 1 │ below or equal │ + │ na │ │ not above │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ a │ CF or ZF = 0 │ above │ + │ nbe │ │ not below nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ s │ SF = 1 │ sign │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ns │ SF = 0 │ not sign │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ p │ PF = 1 │ parity │ + │ pe │ │ parity even │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ np │ PF = 0 │ not parity │ + │ po │ │ parity odd │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ l │ SF xor OF = 1 │ less │ + │ nge │ │ not greater nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ge │ SF xor OF = 0 │ greater or equal │ + │ nl │ │ not less │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ le │ (SF xor OF) or ZF = 1 │ less or equal │ + │ ng │ │ not greater │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ g │ (SF xor OF) or ZF = 0 │ greater │ + │ nle │ │ not less nor equal │ + └──────────┴───────────────────────┴────────────────────────┘ + + The "loop" instructions are conditional jumps that use a value placed in +CX (or ECX) to specify the number of repetitions of a software loop. All +"loop" instructions automatically decrement CX (or ECX) and terminate the +loop (don't transfer the control) when CX (or ECX) is zero. It uses CX or ECX +whether the current code setting is 16-bit or 32-bit, but it can be forced to +us CX with the "loopw" mnemonic or to use ECX with the "loopd" mnemonic. +"loope" and "loopz" are the synonyms for the same instruction, which acts as +the standard "loop", but also terminates the loop when ZF flag is set. +"loopew" and "loopzw" mnemonics force them to use CX register while "looped" +and "loopzd" force them to use ECX register. "loopne" and "loopnz" are the +synonyms for the same instructions, which acts as the standard "loop", but +also terminate the loop when ZF flag is not set. "loopnew" and "loopnzw" +mnemonics force them to use CX register while "loopned" and "loopnzd" force +them to use ECX register. Every "loop" instruction needs an operand being an +immediate value specifying target address, it can be only short jump (in the +range of 128 bytes back and 127 bytes forward from the address of instruction +following the "loop" instruction). + "jcxz" branches to the label specified in the instruction if it finds a +value of zero in CX, "jecxz" does the same, but checks the value of ECX +instead of CX. Rules for the operands are the same as for the "loop" +instruction. + "int" activates the interrupt service routine that corresponds to the +number specified as an operand to the instruction, the number should be in +range from 0 to 255. The interrupt service routine terminates with an "iret" +instruction that returns control to the instruction that follows "int". +"int3" mnemonic codes the short (one byte) trap that invokes the interrupt 3. +"into" instruction invokes the interrupt 4 if the OF flag is set. + "bound" verifies that the signed value contained in the specified register +lies within specified limits. An interrupt 5 occurs if the value contained in +the register is less than the lower bound or greater than the upper bound. It +needs two operands, the first operand specifies the register being tested, +the second operand should be memory address for the two signed limit values. +The operands can be "word" or "dword" in size. + + bound ax,[bx] ; check word for bounds + bound eax,[esi] ; check double word for bounds + + +2.1.7 I/O instructions + + "in" transfers a byte, word, or double word from an input port to AL, AX, +or EAX. I/O ports can be addressed either directly, with the immediate byte +value coded in instruction, or indirectly via the DX register. The destination +operand should be AL, AX, or EAX register. The source operand should be an +immediate value in range from 0 to 255, or DX register. + + in al,20h ; input byte from port 20h + in ax,dx ; input word from port addressed by dx + + "out" transfers a byte, word, or double word to an output port from AL, AX, +or EAX. The program can specify the number of the port using the same methods +as the "in" instruction. The destination operand should be an immediate value +in range from 0 to 255, or DX register. The source operand should be AL, AX, +or EAX register. + + out 20h,ax ; output word to port 20h + out dx,al ; output byte to port addressed by dx + + +2.1.8 Strings operations + +The string operations operate on one element of a string. A string element +may be a byte, a word, or a double word. The string elements are addressed by +SI and DI (or ESI and EDI) registers. After every string operation SI and/or +DI (or ESI and/or EDI) are automatically updated to point to the next element +of the string. If DF (direction flag) is zero, the index registers are +incremented, if DF is one, they are decremented. The amount of the increment +or decrement is 1, 2, or 4 depending on the size of the string element. Every +string operation instruction has short forms which have no operands and use +SI and/or DI when the code type is 16-bit, and ESI and/or EDI when the code +type is 32-bit. SI and ESI by default address data in the segment selected +by DS, DI and EDI always address data in the segment selected by ES. Short +form is obtained by attaching to the mnemonic of string operation letter +specifying the size of string element, it should be "b" for byte element, +"w" for word element, and "d" for double word element. Full form of string +operation needs operands providing the size operator and the memory addresses, +which can be SI or ESI with any segment prefix, DI or EDI always with ES +segment prefix. + "movs" transfers the string element pointed to by SI (or ESI) to the +location pointed to by DI (or EDI). Size of operands can be byte, word, or +double word. The destination operand should be memory addressed by DI or EDI, +the source operand should be memory addressed by SI or ESI with any segment +prefix. + + movs byte [di],[si] ; transfer byte + movs word [es:di],[ss:si] ; transfer word + movsd ; transfer double word + + "cmps" subtracts the destination string element from the source string +element and updates the flags AF, SF, PF, CF and OF, but it does not change +any of the compared elements. If the string elements are equal, ZF is set, +otherwise it is cleared. The first operand for this instruction should be the +source string element addressed by SI or ESI with any segment prefix, the +second operand should be the destination string element addressed by DI or +EDI. + + cmpsb ; compare bytes + cmps word [ds:si],[es:di] ; compare words + cmps dword [fs:esi],[edi] ; compare double words + + "scas" subtracts the destination string element from AL, AX, or EAX +(depending on the size of string element) and updates the flags AF, SF, ZF, +PF, CF and OF. If the values are equal, ZF is set, otherwise it is cleared. +The operand should be the destination string element addressed by DI or EDI. + + scas byte [es:di] ; scan byte + scasw ; scan word + scas dword [es:edi] ; scan double word + + "stos" places the value of AL, AX, or EAX into the destination string +element. Rules for the operand are the same as for the "scas" instruction. + "lods" places the source string element into AL, AX, or EAX. The operand +should be the source string element addressed by SI or ESI with any segment +prefix. + + lods byte [ds:si] ; load byte + lods word [cs:si] ; load word + lodsd ; load double word + + "ins" transfers a byte, word, or double word from an input port addressed +by DX register to the destination string element. The destination operand +should be memory addressed by DI or EDI, the source operand should be the DX +register. + + insb ; input byte + ins word [es:di],dx ; input word + ins dword [edi],dx ; input double word + + "outs" transfers the source string element to an output port addressed by +DX register. The destination operand should be the DX register and the source +operand should be memory addressed by SI or ESI with any segment prefix. + + outs dx,byte [si] ; output byte + outsw ; output word + outs dx,dword [gs:esi] ; output double word + + The repeat prefixes "rep", "repe"/"repz", and "repne"/"repnz" specify +repeated string operation. When a string operation instruction has a repeat +prefix, the operation is executed repeatedly, each time using a different +element of the string. The repetition terminates when one of the conditions +specified by the prefix is satisfied. All three prefixes automatically +decrease CX or ECX register (depending whether string operation instruction +uses the 16-bit or 32-bit addressing) after each operation and repeat the +associated operation until CX or ECX is zero. "repe"/"repz" and +"repne"/"repnz" are used exclusively with the "scas" and "cmps" instructions +(described below). When these prefixes are used, repetition of the next +instruction depends on the zero flag (ZF) also, "repe" and "repz" terminate +the execution when the ZF is zero, "repne" and "repnz" terminate the execution +when the ZF is set. + + rep movsd ; transfer multiple double words + repe cmpsb ; compare bytes until not equal + + +2.1.9 Flag control instructions + +The flag control instructions provide a method for directly changing the +state of bits in the flag register. All instructions described in this +section have no operands. + "stc" sets the CF (carry flag) to 1, "clc" zeroes the CF, "cmc" changes the +CF to its complement. "std" sets the DF (direction flag) to 1, "cld" zeroes +the DF, "sti" sets the IF (interrupt flag) to 1 and therefore enables the +interrupts, "cli" zeroes the IF and therefore disables the interrupts. + "lahf" copies SF, ZF, AF, PF, and CF to bits 7, 6, 4, 2, and 0 of the +AH register. The contents of the remaining bits are undefined. The flags +remain unaffected. + "sahf" transfers bits 7, 6, 4, 2, and 0 from the AH register into SF, ZF, +AF, PF, and CF. + "pushf" decrements "esp" by two or four and stores the low word or +double word of flags register at the top of stack, size of stored data +depends on the current code setting. "pushfw" variant forces storing the +word and "pushfd" forces storing the double word. + "popf" transfers specific bits from the word or double word at the top +of stack, then increments "esp" by two or four, this value depends on +the current code setting. "popfw" variant forces restoring from the word +and "popfd" forces restoring from the double word. + + +2.1.10 Conditional operations + + The instructions obtained by attaching the condition mnemonic (see table +2.1) to the "set" mnemonic set a byte to one if the condition is true and set +the byte to zero otherwise. The operand should be an 8-bit be general register +or the byte in memory. + + setne al ; set al if zero flag cleared + seto byte [bx] ; set byte if overflow + + "salc" instruction sets the all bits of AL register when the carry flag is +set and zeroes the AL register otherwise. This instruction has no arguments. + The instructions obtained by attaching the condition mnemonic to the "cmov" +mnemonic transfer the word or double word from the general register or memory +to the general register only when the condition is true. The destination +operand should be general register, the source operand can be general register +or memory. + + cmove ax,bx ; move when zero flag set + cmovnc eax,[ebx] ; move when carry flag cleared + + "cmpxchg" compares the value in the AL, AX, or EAX register with the +destination operand. If the two values are equal, the source operand is +loaded into the destination operand. Otherwise, the destination operand is +loaded into the AL, AX, or EAX register. The destination operand may be a +general register or memory, the source operand must be a general register. + + cmpxchg dl,bl ; compare and exchange with register + cmpxchg [bx],dx ; compare and exchange with memory + + "cmpxchg8b" compares the 64-bit value in EDX and EAX registers with the +destination operand. If the values are equal, the 64-bit value in ECX and EBX +registers is stored in the destination operand. Otherwise, the value in the +destination operand is loaded into EDX and EAX registers. The destination +operand should be a quad word in memory. + + cmpxchg8b [bx] ; compare and exchange 8 bytes + + +2.1.11 Miscellaneous instructions + +"nop" instruction occupies one byte but affects nothing but the instruction +pointer. This instruction has no operands and doesn't perform any operation. + "ud2" instruction generates an invalid opcode exception. This instruction +is provided for software testing to explicitly generate an invalid opcode. +This is instruction has no operands. + "xlat" replaces a byte in the AL register with a byte indexed by its value +in a translation table addressed by BX or EBX. The operand should be a byte +memory addressed by BX or EBX with any segment prefix. This instruction has +also a short form "xlatb" which has no operands and uses the BX or EBX address +in the segment selected by DS depending on the current code setting. + "lds" transfers a pointer variable from the source operand to DS and the +destination register. The source operand must be a memory operand, and the +destination operand must be a general register. The DS register receives the +segment selector of the pointer while the destination register receives the +offset part of the pointer. "les", "lfs", "lgs" and "lss" operate identically +to "lds" except that rather than DS register the ES, FS, GS and SS is used +respectively. + + lds bx,[si] ; load pointer to ds:bx + + "lea" transfers the offset of the source operand (rather than its value) +to the destination operand. The source operand must be a memory operand, and +the destination operand must be a general register. + + lea dx,[bx+si+1] ; load effective address to dx + + "cpuid" returns processor identification and feature information in the +EAX, EBX, ECX, and EDX registers. The information returned is selected by +entering a value in the EAX register before the instruction is executed. +This instruction has no operands. + "pause" instruction delays the execution of the next instruction an +implementation specific amount of time. It can be used to improve the +performance of spin wait loops. This instruction has no operands. + "enter" creates a stack frame that may be used to implement the scope rules +of block-structured high-level languages. A "leave" instruction at the end of +a procedure complements an "enter" at the beginning of the procedure to +simplify stack management and to control access to variables for nested +procedures. The "enter" instruction includes two parameters. The first +parameter specifies the number of bytes of dynamic storage to be allocated on +the stack for the routine being entered. The second parameter corresponds to +the lexical nesting level of the routine, it can be in range from 0 to 31. +The specified lexical level determines how many sets of stack frame pointers +the CPU copies into the new stack frame from the preceding frame. This list +of stack frame pointers is sometimes called the display. The first word (or +double word when code is 32-bit) of the display is a pointer to the last stack +frame. This pointer enables a "leave" instruction to reverse the action of the +previous "enter" instruction by effectively discarding the last stack frame. +After "enter" creates the new display for a procedure, it allocates the +dynamic storage space for that procedure by decrementing ESP by the number of +bytes specified in the first parameter. To enable a procedure to address its +display, "enter" leaves BP (or EBP) pointing to the beginning of the new stack +frame. If the lexical level is zero, "enter" pushes BP (or EBP), copies SP to +BP (or ESP to EBP) and then subtracts the first operand from ESP. For nesting +levels greater than zero, the processor pushes additional frame pointers on +the stack before adjusting the stack pointer. + + enter 2048,0 ; enter and allocate 2048 bytes on stack + + +2.1.12 System instructions + +"lmsw" loads the operand into the machine status word (bits 0 through 15 of +CR0 register), while "smsw" stores the machine status word into the +destination operand. The operand for both those instructions can be 16-bit +general register or memory, for "smsw" it can also be 32-bit general +register. + + lmsw ax ; load machine status from register + smsw [bx] ; store machine status to memory + + "lgdt" and "lidt" instructions load the values in operand into the global +descriptor table register or the interrupt descriptor table register +respectively. "sgdt" and "sidt" store the contents of the global descriptor +table register or the interrupt descriptor table register in the destination +operand. The operand should be a 6 bytes in memory. + + lgdt [ebx] ; load global descriptor table + + "lldt" loads the operand into the segment selector field of the local +descriptor table register and "sldt" stores the segment selector from the +local descriptor table register in the operand. "ltr" loads the operand into +the segment selector field of the task register and "str" stores the segment +selector from the task register in the operand. Rules for operand are the same +as for the "lmsw" and "smsw" instructions. + "lar" loads the access rights from the segment descriptor specified by +the selector in source operand into the destination operand and sets the ZF +flag. The destination operand can be a 16-bit or 32-bit general register. +The source operand should be a 16-bit general register or memory. + + lar ax,[bx] ; load access rights into word + lar eax,dx ; load access rights into double word + + "lsl" loads the segment limit from the segment descriptor specified by the +selector in source operand into the destination operand and sets the ZF flag. +Rules for operand are the same as for the "lar" instruction. + "verr" and "verw" verify whether the code or data segment specified with +the operand is readable or writable from the current privilege level. The +operand should be a word, it can be general register or memory. If the segment +is accessible and readable (for "verr") or writable (for "verw") the ZF flag +is set, otherwise it's cleared. Rules for operand are the same as for the +"lldt" instruction. + "arpl" compares the RPL (requestor's privilege level) fields of two segment +selectors. The first operand contains one segment selector and the second +operand contains the other. If the RPL field of the destination operand is +less than the RPL field of the source operand, the ZF flag is set and the RPL +field of the destination operand is increased to match that of the source +operand. Otherwise, the ZF flag is cleared and no change is made to the +destination operand. The destination operand can be a word general register +or memory, the source operand must be a general register. + + arpl bx,ax ; adjust RPL of selector in register + arpl [bx],ax ; adjust RPL of selector in memory + + "clts" clears the TS (task switched) flag in the CR0 register. This +instruction has no operands. + "lock" prefix causes the processor's bus-lock signal to be asserted during +execution of the accompanying instruction. In a multiprocessor environment, +the bus-lock signal insures that the processor has exclusive use of any shared +memory while the signal is asserted. The "lock" prefix can be prepended only +to the following instructions and only to those forms of the instructions +where the destination operand is a memory operand: "add", "adc", "and", "btc", +"btr", "bts", "cmpxchg", "cmpxchg8b", "dec", "inc", "neg", "not", "or", "sbb", +"sub", "xor", "xadd" and "xchg". If the "lock" prefix is used with one of +these instructions and the source operand is a memory operand, an undefined +opcode exception may be generated. An undefined opcode exception will also be +generated if the "lock" prefix is used with any instruction not in the above +list. The "xchg" instruction always asserts the bus-lock signal regardless of +the presence or absence of the "lock" prefix. + "hlt" stops instruction execution and places the processor in a halted +state. An enabled interrupt, a debug exception, the BINIT, INIT or the RESET +signal will resume execution. This instruction has no operands. + "invlpg" invalidates (flushes) the TLB (translation lookaside buffer) entry +specified with the operand, which should be a memory. The processor determines +the page that contains that address and flushes the TLB entry for that page. + "rdmsr" loads the contents of a 64-bit MSR (model specific register) of the +address specified in the ECX register into registers EDX and EAX. "wrmsr" +writes the contents of registers EDX and EAX into the 64-bit MSR of the +address specified in the ECX register. "rdtsc" loads the current value of the +processor's time stamp counter from the 64-bit MSR into the EDX and EAX +registers. The processor increments the time stamp counter MSR every clock +cycle and resets it to 0 whenever the processor is reset. "rdpmc" loads the +contents of the 40-bit performance monitoring counter specified in the ECX +register into registers EDX and EAX. These instructions have no operands. + "wbinvd" writes back all modified cache lines in the processor's internal +cache to main memory and invalidates (flushes) the internal caches. The +instruction then issues a special function bus cycle that directs external +caches to also write back modified data and another bus cycle to indicate that +the external caches should be invalidated. This instruction has no operands. + "rsm" return program control from the system management mode to the program +that was interrupted when the processor received an SMM interrupt. This +instruction has no operands. + "sysenter" executes a fast call to a level 0 system procedure, "sysexit" +executes a fast return to level 3 user code. The addresses used by these +instructions are stored in MSRs. These instructions have no operands. + + +2.1.13 FPU instructions + +The FPU (Floating-Point Unit) instructions operate on the floating-point +values in three formats: single precision (32-bit), double precision (64-bit) +and double extended precision (80-bit). The FPU registers form the stack and +each of them holds the double extended precision floating-point value. When +some values are pushed onto the stack or are removed from the top, the FPU +registers are shifted, so ST0 is always the value on the top of FPU stack, ST1 +is the first value below the top, etc. The ST0 name has also the synonym ST. + "fld" pushes the floating-point value onto the FPU register stack. The +operand can be 32-bit, 64-bit or 80-bit memory location or the FPU register, +its value is then loaded onto the top of FPU register stack (the ST0 +register) and is automatically converted into the double extended precision +format. + + fld dword [bx] ; load single prevision value from memory + fld st2 ; push value of st2 onto register stack + + "fld1", "fldz", "fldl2t", "fldl2e", "fldpi", "fldlg2" and "fldln2" load the +commonly used contants onto the FPU register stack. The loaded constants are ++1.0, +0.0, lb 10, lb e, pi, lg 2 and ln 2 respectively. These instructions +have no operands. + "fild" convert the singed integer source operand into double extended +precision floating-point format and pushes the result onto the FPU register +stack. The source operand can be a 16-bit, 32-bit or 64-bit memory location. + + fild qword [bx] ; load 64-bit integer from memory + + "fst" copies the value of ST0 register to the destination operand, which +can be 32-bit or 64-bit memory location or another FPU register. "fstp" +performs the same operation as "fst" and then pops the register stack, +getting rid of ST0. "fstp" accepts the same operands as the "fst" instruction +and can also store value in the 80-bit memory. + + fst st3 ; copy value of st0 into st3 register + fstp tword [bx] ; store value in memory and pop stack + + "fist" converts the value in ST0 to a signed integer and stores the result +in the destination operand. The operand can be 16-bit or 32-bit memory +location. "fistp" performs the same operation and then pops the register +stack, it accepts the same operands as the "fist" instruction and can also +store integer value in the 64-bit memory, so it has the same rules for +operands as "fild" instruction. + "fbld" converts the packed BCD integer into double extended precision +floating-point format and pushes this value onto the FPU stack. "fbstp" +converts the value in ST0 to an 18-digit packed BCD integer, stores the result +in the destination operand, and pops the register stack. The operand should be +an 80-bit memory location. + "fadd" adds the destination and source operand and stores the sum in the +destination location. The destination operand is always an FPU register, if +the source is a memory location, the destination is ST0 register and only +source operand should be specified. If both operands are FPU registers, at +least one of them should be ST0 register. An operand in memory can be a +32-bit or 64-bit value. + + fadd qword [bx] ; add double precision value to st0 + fadd st2,st0 ; add st0 to st2 + + "faddp" adds the destination and source operand, stores the sum in the +destination location and then pops the register stack. The destination operand +must be an FPU register and the source operand must be the ST0. When no +operands are specified, ST1 is used as a destination operand. + + faddp ; add st0 to st1 and pop the stack + faddp st2,st0 ; add st0 to st2 and pop the stack + +"fiadd" instruction converts an integer source operand into double extended +precision floating-point value and adds it to the destination operand. The +operand should be a 16-bit or 32-bit memory location. + + fiadd word [bx] ; add word integer to st0 + + "fsub", "fsubr", "fmul", "fdiv", "fdivr" instruction are similar to "fadd", +have the same rules for operands and differ only in the perfomed computation. +"fsub" substracts the source operand from the destination operand, "fsubr" +substract the destination operand from the source operand, "fmul" multiplies +the destination and source operands, "fdiv" divides the destination operand by +the source operand and "fdivr" divides the source operand by the destination +operand. "fsubp", "fsubrp", "fmulp", "fdivp", "fdivrp" perform the same +operations and pop the register stack, the rules for operand are the same as +for the "faddp" instruction. "fisub", "fisubr", "fimul", "fidiv", "fidivr" +perform these operations after converting the integer source operand into +floating-point value, they have the same rules for operands as "fiadd" +instruction. + "fsqrt" computes the square root of the value in ST0 register, "fsin" +computes the sine of that value, "fcos" computes the cosine of that value, +"fchs" complements its sign bit, "fabs" clears its sign to create the absolute +value, "frndint" rounds it to the nearest integral value, depending on the +current rounding mode. "f2xm1" computes the exponential value of 2 to the +power of ST0 and substracts the 1.0 from it, the value of ST0 must lie in the +range -1.0 to +1.0. All these instruction store the result in ST0 and have no +operands. + "fsincos" computes both the sine and the cosine of the value in ST0 +register, stores the sine in ST0 and pushes the cosine on the top of FPU +register stack. "fptan" computes the tangent of the value in ST0, stores the +result in ST0 and pushes a 1.0 onto the FPU register stack. "fpatan" computes +the arctangent of the value in ST1 divided by the value in ST0, stores the +result in ST1 and pops the FPU register stack. "fyl2x" computes the binary +logarithm of ST0, multiplies it by ST1, stores the result in ST1 and pops the +FPU register stack; "fyl2xp1" performs the same operation but it adds 1.0 to +ST0 before computing the logarithm. "fprem" computes the remainder obtained +from dividing the value in ST0 by the value in ST1, and stores the result +in ST0. "fprem1" performs the same operation as "fprem", but it computes the +remainder in the way specified by IEEE Standard 754. "fscale" truncates the +value in ST1 and increases the exponent of ST0 by this value. "fxtract" +separates the value in ST0 into its exponent and significand, stores the +exponent in ST0 and pushes the significand onto the register stack. "fnop" +performs no operation. These instruction have no operands. + "fxch" exchanges the contents of ST0 an another FPU register. The operand +should be an FPU register, if no operand is specified, the contents of ST0 and +ST1 are exchanged. + "fcom" and "fcomp" compare the contents of ST0 and the source operand and +set flags in the FPU status word according to the results. "fcomp" +additionally pops the register stack after performing the comparison. The +operand can be a single or double precision value in memory or the FPU +register. When no operand is specified, ST1 is used as a source operand. + + fcom ; compare st0 with st1 + fcomp st2 ; compare st0 with st2 and pop stack + + "fcompp" compares the contents of ST0 and ST1, sets flags in the FPU status +word according to the results and pops the register stack twice. This +instruction has no operands. + "fucom", "fucomp" and "fucompp" performs an unordered comparison of two FPU +registers. Rules for operands are the same as for the "fcom", "fcomp" and +"fcompp", but the source operand must be an FPU register. + "ficom" and "ficomp" compare the value in ST0 with an integer source operand +and set the flags in the FPU status word according to the results. "ficomp" +additionally pops the register stack after performing the comparison. The +integer value is converted to double extended precision floating-point format +before the comparison is made. The operand should be a 16-bit or 32-bit +memory location. + + ficom word [bx] ; compare st0 with 16-bit integer + + "fcomi", "fcomip", "fucomi", "fucomip" perform the comparison of ST0 with +another FPU register and set the ZF, PF and CF flags according to the results. +"fcomip" and "fucomip" additionaly pop the register stack after performing the +comparison. The instructions obtained by attaching the FPU condition mnemonic +(see table 2.2) to the "fcmov" mnemonic transfer the specified FPU register +into ST0 register if the fiven test condition is true. These instruction +allow two different syntaxes, one with single operand specifying the source +FPU register, and one with two operands, in that case destination operand +should be ST0 register and the second operand specifies the source FPU +register. + + fcomi st2 ; compare st0 with st2 and set flags + fcmovb st0,st2 ; transfer st2 to st0 if below + + Table 2.2 FPU conditions + ┌──────────┬──────────────────┬────────────────────────┐ + │ Mnemonic │ Condition tested │ Description │ + ╞══════════╪══════════════════╪════════════════════════╡ + │ b │ CF = 1 │ below │ + │ e │ ZF = 1 │ equal │ + │ be │ CF or ZF = 1 │ below or equal │ + │ u │ PF = 1 │ unordered │ + │ nb │ CF = 0 │ not below │ + │ ne │ ZF = 0 │ not equal │ + │ nbe │ CF and ZF = 0 │ not below nor equal │ + │ nu │ PF = 0 │ not unordered │ + └──────────┴──────────────────┴────────────────────────┘ + + "ftst" compares the value in ST0 with 0.0 and sets the flags in the FPU +status word according to the results. "fxam" examines the contents of the ST0 +and sets the flags in FPU status word to indicate the class of value in the +register. These instructions have no operands. + "fstsw" and "fnstsw" store the current value of the FPU status word in the +destination location. The destination operand can be either a 16-bit memory or +the AX register. "fstsw" checks for pending umasked FPU exceptions before +storing the status word, "fnstsw" does not. + "fstcw" and "fnstcw" store the current value of the FPU control word at the +specified destination in memory. "fstcw" checks for pending umasked FPU +exceptions before storing the control word, "fnstcw" does not. "fldcw" loads +the operand into the FPU control word. The operand should be a 16-bit memory +location. + "fstenv" and "fnstenv" store the current FPU operating environment at the +memory location specified with the destination operand, and then mask all FPU +exceptions. "fstenv" checks for pending umasked FPU exceptions before +proceeding, "fnstenv" does not. "fldenv" loads the complete operating +environment from memory into the FPU. "fsave" and "fnsave" store the current +FPU state (operating environment and register stack) at the specified +destination in memory and reinitializes the FPU. "fsave" check for pending +unmasked FPU exceptions before proceeding, "fnsave" does not. "frstor" +loads the FPU state from the specified memory location. All these instructions +need an operand being a memory location. + "finit" and "fninit" set the FPU operating environment into its default +state. "finit" checks for pending unmasked FPU exception before proceeding, +"fninit" does not. "fclex" and "fnclex" clear the FPU exception flags in the +FPU status word. "fclex" checks for pending unmasked FPU exception before +proceeding, "fnclex" does not. "wait" and "fwait" are synonyms for the same +instruction, which causes the processor to check for pending unmasked FPU +exceptions and handle them before proceeding. These instruction have no +operands. + "ffree" sets the tag associated with specified FPU register to empty. The +operand should be an FPU register. + "fincstp" and "fdecstp" rotate the FPU stack by one by adding or +substracting one to the pointer of the top of stack. These instruction have no +operands. + + +2.1.14 MMX instructions + +The MMX instructions operate on the packed integer types and use the MMX +registers, which are the low 64-bit parts of the 80-bit FPU registers. Because +of this MMX instructions cannot be used at the same time as FPU instructions. +They can operate on packed bytes (eight 8-bit integers), packed words (four +16-bit integers) or packed double words (two 32-bit integers), use of packed +formats allows to perform operations on multiple data at one time. + "movq" copies a quad word from the source operand to the destination +operand. At least one of the operands must be a MMX register, the second one +can be also a MMX register or 64-bit memory location. + + movq mm0,mm1 ; move quad word from register to register + movq mm2,[ebx] ; move quad word from memory to register + + "movd" copies a double word from the source operand to the destination +operand. One of the operands must be a MMX register, the second one can be a +general register or 32-bit memory location. Only low double word of MMX +register is used. + All general MMX operations have two operands, the destination operand should +be a MMX register, the source operand can be a MMX register or 64-bit memory +location. Operation is performed on the corresponding data elements of the +source and destination operand and stored in the data elements of the +destination operand. "paddb", "paddw" and "paddd" perform the addition of +packed bytes, packed words, or packed double words. "psubb", "psubw" and +"psubd" perform the substraction of appropriate types. "paddsb", "paddsw", +"psubsb" and "psubsw" perform the addition or substraction of packed bytes +or packed words with the signed saturation. "paddusb", "paddusw", "psubusb", +"psubusw" are analoguous, but with unsigned saturation. "pmulhw" and "pmullw" +performs a signed multiply of the packed words and store the high or low words +of the results in the destination operand. "pmaddwd" performs a multiply of +the packed words and adds the four intermediate double word products in pairs +to produce result as a packed double words. "pand", "por" and "pxor" perform +the logical operations on the quad words, "pandn" peforms also a logical +negation of the destination operand before performing the "and" operation. +"pcmpeqb", "pcmpeqw" and "pcmpeqd" compare for equality of packed bytes, +packed words or packed double words. If a pair of data elements is equal, the +corresponding data element in the destination operand is filled with bits of +value 1, otherwise it's set to 0. "pcmpgtb", "pcmpgtw" and "pcmpgtd" perform +the similar operation, but they check whether the data elements in the +destination operand are greater than the correspoding data elements in the +source operand. "packsswb" converts packed signed words into packed signed +bytes, "packssdw" converts packed signed double words into packed signed +words, using saturation to handle overflow conditions. "packuswb" converts +packed signed words into packed unsigned bytes. Converted data elements from +the source operand are stored in the low part of the destination operand, +while converted data elements from the destination operand are stored in the +high part. "punpckhbw", "punpckhwd" and "punpckhdq" interleaves the data +elements from the high parts of the source and destination operands and +stores the result into the destination operand. "punpcklbw", "punpcklwd" and +"punpckldq" perform the same operation, but the low parts of the source and +destination operand are used. + + paddsb mm0,[esi] ; add packed bytes with signed saturation + pcmpeqw mm3,mm7 ; compare packed words for equality + + "psllw", "pslld" and "psllq" perform logical shift left of the packed words, +packed double words or a single quad word in the destination operand by the +amount specified in the source operand. "psrlw", "psrld" and "psrlq" perform +logical shift right of the packed words, packed double words or a single quad +word. "psraw" and "psrad" perform arithmetic shift of the packed words or +double words. The destination operand should be a MMX register, while source +operand can be a MMX register, 64-bit memory location, or 8-bit immediate +value. + + psllw mm2,mm4 ; shift words left logically + psrad mm4,[ebx] ; shift double words right arithmetically + + "emms" makes the FPU registers usable for the FPU instructions, it must be +used before using the FPU instructions if any MMX instructions were used. + + +2.1.15 SSE instructions + +The SSE extension adds more MMX instructions and also introduces the +operations on packed single precision floating point values. The 128-bit +packed single precision format consists of four single precision floating +point values. The 128-bit SSE registers are designed for the purpose of +operations on this data type. + "movaps" and "movups" transfer a double quad word operand containing packed +single precision values from source operand to destination operand. At least +one of the operands have to be a SSE register, the second one can be also a +SSE register or 128-bit memory location. Memory operands for "movaps" +instruction must be aligned on boundary of 16 bytes, operands for "movups" +instruction don't have to be aligned. + + movups xmm0,[ebx] ; move unaligned double quad word + + "movlps" moves packed two single precision values between the memory and the +low quad word of SSE register. "movhps" moved packed two single precision +values between the memory and the high quad word of SSE register. One of the +operands must be a SSE register, and the other operand must be a 64-bit memory +location. + + movlps xmm0,[ebx] ; move memory to low quad word of xmm0 + movhps [esi],xmm7 ; move high quad word of xmm7 to memory + + "movlhps" moves packed two single precision values from the low quad word +of source register to the high quad word of destination register. "movhlps" +moves two packed single precision values from the high quad word of source +register to the low quad word of destination register. Both operands have to +be a SSE registers. + "movmskps" transfers the most significant bit of each of the four single +precision values in the SSE register into low four bits of a general register. +The source operand must be a SSE register, the destination operand must be a +general register. + "movss" transfers a single precision value between source and destination +operand (only the low double word is trasferred). At least one of the operands +have to be a SSE register, the second one can be also a SSE register or 32-bit +memory location. + + movss [edi],xmm3 ; move low double word of xmm3 to memory + + Each of the SSE arithmetic operations has two variants. When the mnemonic +ends with "ps", the source operand can be a 128-bit memory location or a SSE +register, the destination operand must be a SSE register and the operation is +performed on packed four single precision values, for each pair of the +corresponding data elements separately, the result is stored in the +destination register. When the mnemonic ends with "ss", the source operand +can be a 32-bit memory location or a SSE register, the destination operand +must be a SSE register and the operation is performed on single precision +values, only low double words of SSE registers are used in this case, the +result is stored in the low double word of destination register. "addps" and +"addss" add the values, "subps" and "subss" substract the source value from +destination value, "mulps" and "mulss" multiply the values, "divps" and +"divss" divide the destination value by the source value, "rcpps" and "rcpss" +compute the approximate reciprocal of the source value, "sqrtps" and "sqrtss" +compute the square root of the source value, "rsqrtps" and "rsqrtss" compute +the approximate reciprocal of square root of the source value, "maxps" and +"maxss" compare the source and destination values and return the greater one, +"minps" and "minss" compare the source and destination values and return the +lesser one. + + mulss xmm0,[ebx] ; multiply single precision values + addps xmm3,xmm7 ; add packed single precision values + + "andps", "andnps", "orps" and "xorps" perform the logical operations on +packed single precision values. The source operand can be a 128-bit memory +location or a SSE register, the destination operand must be a SSE register. + "cmpps" compares packed single precision values and returns a mask result +into the destination operand, which must be a SSE register. The source operand +can be a 128-bit memory location or SSE register, the third operand must be an +immediate operand selecting code of one of the eight compare conditions +(table 2.3). "cmpss" performs the same operation on single precision values, +only low double word of destination register is affected, in this case source +operand can be a 32-bit memory location or SSE register. These two +instructions have also variants with only two operands and the condition +encoded within mnemonic. Their mnemonics are obtained by attaching the +mnemonic from table 2.3 to the "cmp" mnemonic and then attaching the "ps" or +"ss" at the end. + + cmpps xmm2,xmm4,0 ; compare packed single precision values + cmpltss xmm0,[ebx] ; compare single precision values + + Table 2.3 SSE conditions + ┌──────┬──────────┬─────────────────────────┐ + │ Code │ Mnemonic │ Description │ + ╞══════╪══════════╪═════════════════════════╡ + │ 0 │ eq │ equal │ + │ 1 │ lt │ less than │ + │ 2 │ le │ less than or equal │ + │ 3 │ unord │ unordered │ + │ 4 │ neq │ not equal │ + │ 5 │ nlt │ not less than │ + │ 6 │ nle │ not less than nor equal │ + │ 7 │ ord │ ordered │ + └──────┴──────────┴─────────────────────────┘ + + "comiss" and "ucomiss" compare the single precision values and set the ZF, +PF and CF flags to show the result. The destination operand must be a SSE +register, the source operand can be a 32-bit memory location or SSE register. + "shufps" moves any two of the four single precision values from the +destination operand into the low quad word of the destination operand, and any +two of the four values from the source operand into the high quad word of the +destination operand. The destination operand must be a SSE register, the +source operand can be a 128-bit memory location or SSE register, the third +operand must be an 8-bit immediate value selecting which values will be moved +into the destination operand. Bits 0 and 1 select the value to be moved from +destination operand to the low double word of the result, bits 2 and 3 select +the value to be moved from the destination operand to the second double word, +bits 4 and 5 select the value to be moved from the source operand to the third +double word, and bits 6 and 7 select the value to be moved from the source +operand to the high double word of the result. + + shufps xmm0,xmm0,10010011b ; shuffle double words + + "unpckhps" performs an interleaved unpack of the values from the high parts +of the source and destination operands and stores the result in the +destination operand, which must be a SSE register. The source operand can be +a 128-bit memory location or a SSE register. "unpcklps" performs an +interleaved unpack of the values from the low parts of the source and +destination operand and stores the result in the destination operand, +the rules for operands are the same. + "cvtpi2ps" converts packed two double word integers into the the packed two +single precision floating point values and stores the result in the low quad +word of the destination operand, which should be a SSE register. The source +operand can be a 64-bit memory location or MMX register. + + cvtpi2ps xmm0,mm0 ; convert integers to single precision values + + "cvtsi2ss" converts a double word integer into a single precision floating +point value and stores the result in the low double word of the destination +operand, which should be a SSE register. The source operand can be a 32-bit +memory location or 32-bit general register. + + cvtsi2ss xmm0,eax ; convert integer to single precision value + + "cvtps2pi" converts packed two single precision floating point values into +packed two double word integers and stores the result in the destination +operand, which should be a MMX register. The source operand can be a 64-bit +memory location or SSE register, only low quad word of SSE register is used. +"cvttps2pi" performs the similar operation, except that truncation is used to +round a source values to integers, rules for the operands are the same. + + cvtps2pi mm0,xmm0 ; convert single precision values to integers + + "cvtss2si" convert a single precision floating point value into a double +word integer and stores the result in the destination operand, which should be +a 32-bit general register. The source operand can be a 32-bit memory location +or SSE register, only low double word of SSE register is used. "cvttss2si" +performs the similar operation, except that truncation is used to round a +source value to integer, rules for the operands are the same. + + cvtss2si eax,xmm0 ; convert single precision value to integer + + "pextrw" copies the word in the source operand specified by the third +operand to the destination operand. The source operand must be a MMX register, +the destination operand must be a 32-bit general register (but only the low +word of it is affected), the third operand must an 8-bit immediate value. + + pextrw eax,mm0,1 ; extract word into eax + + "pinsrw" inserts a word from the source operand in the destination operand +at the location specified with the third operand, which must be an 8-bit +immediate value. The destination operand must be a MMX register, the source +operand can be a 16-bit memory location or 32-bit general register (only low +word of the register is used). + + pinsrw mm1,ebx,2 ; insert word from ebx + + "pavgb" and "pavgw" compute average of packed bytes or words. "pmaxub" +return the maximum values of packed unsigned bytes, "pminub" returns the +minimum values of packed unsigned bytes, "pmaxsw" returns the maximum values +of packed signed words, "pminsw" returns the minimum values of packed signed +words. "pmulhuw" performs a unsigned multiply of the packed words and stores +the high words of the results in the destination operand. "psadbw" computes +the absolute differences of packed unsigned bytes, sums the differences, and +stores the sum in the low word of destination operand. All these instructions +follow the same rules for operands as the general MMX operations described in +previous section. + "pmovmskb" creates a mask made of the most significant bit of each byte in +the source operand and stores the result in the low byte of destination +operand. The source operand must be a MMX register, the destination operand +must a 32-bit general register. + "pshufw" inserts words from the source operand in the destination operand +from the locations specified with the third operand. The destination operand +must be a MMX register, the source operand can be a 64-bit memory location or +MMX register, third operand must an 8-bit immediate value selecting which +values will be moved into destination operand, in the similar way as the third +operand of the "shufps" instruction. + "movntq" moves the quad word from the source operand to memory using a +non-temporal hint to minimize cache pollution. The source operand should be a +MMX register, the destination operand should be a 64-bit memory location. +"movntps" stores packed single precision values from the SSE register to +memory using a non-temporal hint. The source operand should be a SSE register, +the destination operand should be a 128-bit memory location. "maskmovq" stores +selected bytes from the first operand into a 64-bit memory location using a +non-temporal hint. Both operands should be a MMX registers, the second operand +selects wich bytes from the source operand are written to memory. The +memory location is pointed by DI (or EDI) register in the segment selected +by DS. + "prefetcht0", "prefetcht1", "prefetcht2" and "prefetchnta" fetch the line +of data from memory that contains byte specified with the operand to a +specified location in hierarchy. The operand should be an 8-bit memory +location. + "sfence" performs a serializing operation on all instruction storing to +memory that were issued prior to it. This instruction has no operands. + "ldmxcsr" loads the 32-bit memory operand into the MXCSR register. "stmxcsr" +stores the contents of MXCSR into a 32-bit memory operand. + "fxsave" saves the current state of the FPU, MXCSR register, and all the FPU +and SSE registers to a 512-byte memory location specified in the destination +operand. "fxrstor" reloads data previously stored with "fxsave" instruction +from the specified 512-byte memory location. The memory operand for both those +instructions must be aligned on 16 byte boundary, it should declare operand +of no specified size. + + +2.1.16 SSE2 instructions + +The SSE2 extension introduces the operations on packed double precision +floating point values, extends the syntax of MMX instructions, and adds also +some new instructions. + "movapd" and "movupd" transfer a double quad word operand containing packed +double precision values from source operand to destination operand. These +instructions are analogous to "movaps" and "movups" and have the same rules +for operands. + "movlpd" moves double precision value between the memory and the low quad +word of SSE register. "movhpd" moved double precision value between the memory +and the high quad word of SSE register. These instructions are analogous to +"movlps" and "movhps" and have the same rules for operands. + "movmskpd" transfers the most significant bit of each of the two double +precision values in the SSE register into low two bits of a general register. +This instruction is analogous to "movmskps" and has the same rules for +operands. + "movsd" transfers a double precision value between source and destination +operand (only the low quad word is trasferred). At least one of the operands +have to be a SSE register, the second one can be also a SSE register or 64-bit +memory location. + Arithmetic operations on double precision values are: "addpd", "addsd", +"subpd", "subsd", "mulpd", "mulsd", "divpd", "divsd", "sqrtpd", "sqrtsd", +"maxpd", "maxsd", "minpd", "minsd", and they are analoguous to arithmetic +operations on single precision values described in previous section. When the +mnemonic ends with "pd" instead of "ps", the operation is performed on packed +two double precision values, but rules for operands are the same. When the +mnemonic ends with "sd" instead of "ss", the source operand can be a 64-bit +memory location or a SSE register, the destination operand must be a SSE +register and the operation is performed on double precision values, only low +quad words of SSE registers are used in this case. + "andpd", "andnpd", "orpd" and "xorpd" perform the logical operations on +packed double precision values. They are analoguous to SSE logical operations +on single prevision values and have the same rules for operands. + "cmppd" compares packed double precision values and returns and returns a +mask result into the destination operand. This instruction is analoguous to +"cmpps" and has the same rules for operands. "cmpsd" performs the same +operation on double precision values, only low quad word of destination +register is affected, in this case source operand can be a 64-bit memory or +SSE register. Variant with only two operands are obtained by attaching the +condition mnemonic from table 2.3 to the "cmp" mnemonic and then attaching +the "pd" or "sd" at the end. + "comisd" and "ucomisd" compare the double precision values and set the ZF, +PF and CF flags to show the result. The destination operand must be a SSE +register, the source operand can be a 128-bit memory location or SSE register. + "shufpd" moves any of the two double precision values from the destination +operand into the low quad word of the destination operand, and any of the two +values from the source operand into the high quad word of the destination +operand. This instruction is analoguous to "shufps" and has the same rules for +operand. Bit 0 of the third operand selects the value to be moved from the +destination operand, bit 1 selects the value to be moved from the source +operand, the rest of bits are reserved and must be zeroed. + "unpckhpd" performs an unpack of the high quad words from the source and +destination operands, "unpcklpd" performs an unpack of the low quad words from +the source and destination operands. They are analoguous to "unpckhps" and +"unpcklps", and have the same rules for operands. + "cvtps2pd" converts the packed two single precision floating point values to +two packed double precision floating point values, the destination operand +must be a SSE register, the source operand can be a 64-bit memory location or +SSE register. "cvtpd2ps" converts the packed two double precision floating +point values to packed two single precision floating point values, the +destination operand must be a SSE register, the source operand can be a +128-bit memory location or SSE register. "cvtss2sd" converts the single +precision floating point value to double precision floating point value, the +destination operand must be a SSE register, the source operand can be a 32-bit +memory location or SSE register. "cvtsd2ss" converts the double precision +floating point value to single precision floating point value, the destination +operand must be a SSE register, the source operand can be 64-bit memory +location or SSE register. + "cvtpi2pd" converts packed two double word integers into the the packed +double precision floating point values, the destination operand must be a SSE +register, the source operand can be a 64-bit memory location or MMX register. +"cvtsi2sd" converts a double word integer into a double precision floating +point value, the destination operand must be a SSE register, the source +operand can be a 32-bit memory location or 32-bit general register. "cvtpd2pi" +converts packed double precision floating point values into packed two double +word integers, the destination operand should be a MMX register, the source +operand can be a 128-bit memory location or SSE register. "cvttpd2pi" performs +the similar operation, except that truncation is used to round a source values +to integers, rules for operands are the same. "cvtsd2si" converts a double +precision floating point value into a double word integer, the destination +operand should be a 32-bit general register, the source operand can be a +64-bit memory location or SSE register. "cvttsd2si" performs the similar +operation, except that truncation is used to round a source value to integer, +rules for operands are the same. + "cvtps2dq" and "cvttps2dq" convert packed single precision floating point +values to packed four double word integers, storing them in the destination +operand. "cvtpd2dq" and "cvttpd2dq" convert packed double precision floating +point values to packed two double word integers, storing the result in the low +quad word of the destination operand. "cvtdq2ps" converts packed four +double word integers to packed single precision floating point values. +"cvtdq2pd" converts packed two double word integers from the low quad word +of the source operand to packed double precision floating point values. +For all these instruction destination operand must be a SSE register, the +source operand can be a 128-bit memory location or SSE register. + "movdqa" and "movdqu" transfer a double quad word operand containing packed +integers from source operand to destination operand. At least one of the +operands have to be a SSE register, the second one can be also a SSE register +or 128-bit memory location. Memory operands for "movdqa" instruction must be +aligned on boundary of 16 bytes, operands for "movdqu" instruction don't have +to be aligned. + "movq2dq" moves the contents of the MMX source register to the low quad word +of destination SSE register. "movdq2q" moves the low quad word from the source +SSE register to the destination MMX register. + + movq2dq xmm0,mm1 ; move from MMX register to SSE register + movdq2q mm0,xmm1 ; move from SSE register to MMX register + + All MMX instructions operating on the 64-bit packed integers (those with +mnemonics starting with "p") are extended to operate on 128-bit packed +integers located in SSE registers. Additional syntax for these instructions +needs an SSE register where MMX register was needed, and the 128-bit memory +location or SSE register where 64-bit memory location of MMX register were +needed. The exception is "pshufw" instruction, which doesn't allow extended +syntax, but has two new variants: "pshufhw" and "pshuflw", which allow only +the extended syntax, and perform the same operation as "pshufw" on the high +or low quad words of operands respectively. Also the new instruction "pshufd" +is introduced, which performs the same operation as "pshufw", but on the +double words instead of words, it allows only the extended syntax. + + psubb xmm0,[esi] ; substract 16 packed bytes + pextrw eax,xmm0,7 ; extract highest word into eax + + "paddq" performs the addition of packed quad words, "psubq" performs the +substraction of packed quad words, "pmuludq" performs an unsigned multiply +of low double words from each corresponding quad words and returns the results +in packed quad words. These instructions follow the same rules for operands as +the general MMX operations described in 2.1.14. + "pslldq" and "psrldq" perform logical shift left or right of the double +quad word in the destination operand by the amount of bits specified in the +source operand. The destination operand should be a SSE register, source +operand should be an 8-bit immediate value. + "punpckhqdq" interleaves the high quad word of the source operand and the +high quad word of the destination operand and writes them to the destination +SSE register. "punpcklqdq" interleaves the low quad word of the source operand +and the low quad word of the destination operand and writes them to the +destination SSE register. The source operand can be a 128-bit memory location +or SSE register. + "movntdq" stores packed integer data from the SSE register to memory using +non-temporal hint. The source operand should be a SSE register, the +destination operand should be a 128-bit memory location. "movntpd" stores +packed double precision values from the SSE register to memory using a +non-temporal hint. Rules for operand are the same. "movnti" stores integer +from a general register to memory using a non-temporal hint. The source +operand should be a 32-bit general register, the destination operand should +be a 32-bit memory location. "maskmovdqu" stores selected bytes from the first +operand into a 128-bit memory location using a non-temporal hint. Both +operands should be a SSE registers, the second operand selects wich bytes from +the source operand are written to memory. The memory location is pointed by DI +(or EDI) register in the segment selected by DS and does not need to be +aligned. + "clflush" writes and invalidates the cache line associated with the address +of byte specified with the operand, which should be a 8-bit memory location. + "lfence" performs a serializing operation on all instruction loading from +memory that were issued prior to it. "mfence" performs a serializing operation +on all instruction accesing memory that were issued prior to it, and so it +combines the functions of "sfence" (described in previous section) and +"lfence" instructions. These instructions have no operands. + + +2.1.17 SSE3 instructions + +Prescott technology introduced some new instructions to improve the performance +of SSE and SSE2 - this extension is called SSE3. + "fisttp" behaves like the "fistp" instruction and accepts the same operands, +the only difference is that it always used truncation, irrespective of the +rounding mode. + "movshdup" loads into destination operand the 128-bit value obtained from +the source value of the same size by filling the each quad word with the two +duplicates of the value in its high double word. "movsldup" performs the same +action, except it duplicates the values of low double words. The destination +operand should be SSE register, the source operand can be SSE register or +128-bit memory location. + "movddup" loads the 64-bit source value and duplicates it into high and low +quad word of the destination operand. The destination operand should be SSE +register, the source operand can be SSE register or 64-bit memory location. + "lddqu" is functionally equivalent to "movdqu" instruction with memory as +source operand, but it may improve performance when the source operand crosses +a cacheline boundary. The destination operand has to be SSE register, the +source operand must be 128-bit memory location. + "addsubps" performs single precision addition of second and fourth pairs and +single precision substracion of the first and third pairs of floating point +values in the operands. "addsubpd" performs double precision addition of the +second pair and double precision substraction of the first pair of floating +point values in the operand. "haddps" performs the addition of two single +precision values within the each quad word of source and destination operands, +and stores the results of such horizontal addition of values from destination +operand into low quad word of destination operand, and the results from the +source operand into high quad word of destination operand. "haddpd" performs +the addition of two double precision values within each operand, and stores +the result from destination operand into low quad word of destination operand, +and the result from source operand into high quad word of destination operand. +All these instruction need the destination operand to be SSE register, source +operand can be SSE register or 128-bit memory location. + "monitor" sets up an address range for monitoring of write-back stores. It +need its three operands to be EAX, ECX and EDX register in that order. "mwait" +waits for a write-back store to the address range set up by the "monitor" +instruction. It uses two operands with additional parameters, first being the +EAX and second the ECX register. + + +2.1.18 AMD 3DNow! instructions + +The 3DNow! extension adds a new MMX instructions to those described in 2.1.14, +and introduces operation on the 64-bit packed floating point values, each +consisting of two single precision floating point values. + These instructions follow the same rules as the general MMX operations, the +destination operand should be a MMX register, the source operand can be a MMX +register or 64-bit memory location. "pavgusb" computes the rounded averages +of packed unsigned bytes. "pmulhrw" performs a signed multiply of the packed +words, round the high word of each double word results and stores them in the +destination operand. "pi2fd" converts packed double word integers into +packed floating point values. "pf2id" converts packed floating point values +into packed double word integers using truncation. "pi2fw" converts packed +word integers into packed floating point values, only low words of each +double word in source operand are used. "pf2iw" converts packed floating +point values to packed word integers, results are extended to double words +using the sign extension. "pfadd" adds packed floating point values. "pfsub" +and "pfsubr" substracts packed floating point values, the first one substracts +source values from destination values, the second one substracts destination +values from the source values. "pfmul" multiplies packed floating point +values. "pfacc" adds the low and high floating point values of the destination +operand, storing the result in the low double word of destination, and adds +the low and high floating point values of the source operand, storing the +result in the high double word of destination. "pfnacc" substracts the high +floating point value of the destination operand from the low, storing the +result in the low double word of destination, and substracts the high floating +point value of the source operand from the low, storing the result in the high +double word of destination. "pfpnacc" substracts the high floating point value +of the destination operand from the low, storing the result in the low double +word of destination, and adds the low and high floating point values of the +source operand, storing the result in the high double word of destination. +"pfmax" and "pfmin" compute the maximum and minimum of floating point values. +"pswapd" reverses the high and low double word of the source operand. "pfrcp" +returns an estimates of the reciprocals of floating point values from the +source operand, "pfrsqrt" returns an estimates of the reciprocal square +roots of floating point values from the source operand, "pfrcpit1" performs +the first step in the Newton-Raphson iteration to refine the reciprocal +approximation produced by "pfrcp" instruction, "pfrsqit1" performs the first +step in the Newton-Raphson iteration to refine the reciprocal square root +approximation produced by "pfrsqrt" instruction, "pfrcpit2" performs the +second final step in the Newton-Raphson iteration to refine the reciprocal +approximation or the reciprocal square root approximation. "pfcmpeq", +"pfcmpge" and "pfcmpgt" compare the packed floating point values and sets +all bits or zeroes all bits of the correspoding data element in the +destination operand according to the result of comparison, first checks +whether values are equal, second checks whether destination value is greater +or equal to source value, third checks whether destination value is greater +than source value. + "prefetch" and "prefetchw" load the line of data from memory that contains +byte specified with the operand into the data cache, "prefetchw" instruction +should be used when the data in the cache line is expected to be modified, +otherwise the "prefetch" instruction should be used. The operand should be an +8-bit memory location. + "femms" performs a fast clear of MMX state. This instruction has no +operands. + + +2.1.19 The x86-64 long mode instructions + +The AMD64 and EM64T architectures (we will use the common name x86-64 for them +both) extend the x86 instruction set for the 64-bit processing. While legacy +and compatibility modes use the same set of registers and instructions, the +new long mode extends the x86 operations to 64 bits and introduces several new +registers. You can turn on generating the code for this mode with the "use64" +directive. + Each of the general purpose registers is extended to 64 bits and the eight +whole new general purpose registers and also eight new SSE registers are added. +See table 2.4 for the summary of new registers (only the ones that was not +listed in table 1.2). The general purpose registers of smallers sizes are the +low order portions of the larger ones. You can still access the "ah", "bh", +"ch" and "dh" registers in long mode, but you cannot use them in the same +instruction with any of the new registers. + + Table 2.4 New registers in long mode + ┌──────┬───────────────────────────┬───────┐ + │ Type │ General │ SSE │ + ├──────┼──────┬──────┬──────┬──────┼───────┤ + │ Bits │ 8 │ 16 │ 32 │ 64 │ 128 │ + ╞══════╪══════╪══════╪══════╪══════╪═══════╡ + │ │ │ │ │ rax │ │ + │ │ │ │ │ rcx │ │ + │ │ │ │ │ rdx │ │ + │ │ │ │ │ rbx │ │ + │ │ spl │ │ │ rsp │ │ + │ │ bpl │ │ │ rbp │ │ + │ │ sil │ │ │ rsi │ │ + │ │ dil │ │ │ rdi │ │ + │ │ r8b │ r8w │ r8d │ r8 │ xmm8 │ + │ │ r9b │ r9w │ r9d │ r9 │ xmm9 │ + │ │ r10b │ r10w │ r10d │ r10 │ xmm10 │ + │ │ r11b │ r11w │ r11d │ r11 │ xmm11 │ + │ │ r12b │ r12w │ r12d │ r12 │ xmm12 │ + │ │ r13b │ r13w │ r13d │ r13 │ xmm13 │ + │ │ r14b │ r14w │ r14d │ r14 │ xmm14 │ + │ │ r15b │ r15w │ r15d │ r15 │ xmm15 │ + └──────┴──────┴──────┴──────┴──────┴───────┘ + + In general any instruction from x86 architecture, which allowed 16-bit or +32-bit operand sizes, in long mode allows also the 64-bit operands. The 64-bit +registers should be used for addressing in long mode, the 32-bit addressing +is also allowed, but it's not possible to use the addresses based on 16-bit +registers. Below are the samples of new operations possible in long mode on the +example of "mov" instruction: + + mov rax,r8 ; transfer 64-bit general register + mov al,[rbx] ; transfer memory addressed by 64-bit register + +The long mode uses also the instruction pointer based addresses, you can +specify it manually with the special RIP register symbol, but such addressing +is also automatically generated by flat assembler, since there is no 64-bit +absolute addressing in long mode. You can still force the assembler to use the +32-bit absolute addressing by putting the "dword" size override for address +inside the square brackets. There is also one exception, where the 64-bit +absolute addressing is possible, it's the "mov" instruction with one of the +operand being accumulator register, and second being the memory operand. +To force the assembler to use the 64-bit absolute addressing there, use the +"qword" size operator for address inside the square brackets. When no size +operator is applied to address, assembler generates the optimal form +automatically. + + mov [qword 0],rax ; absolute 64-bit addressing + mov [dword 0],r15d ; absolute 32-bit addressing + mov [0],rsi ; automatic RIP-relative addressing + mov [rip+3],sil ; manual RIP-relative addressing + + Also as the immediate operands for 64-bit operations only the signed 32-bit +values are possible, with the only exception being the "mov" instruction with +destination operand being 64-bit general purpose register. Trying to force the +64-bit immediate with any other instruction will cause an error. + If any operation is performed on the 32-bit general registers in long mode, +the upper 32 bits of the 64-bit registers containing them are filled with +zeros. This is unlike the operations on 16-bit or 8-bit portions of those +registers, which preserve the upper bits. + Three new type conversion instructions are available. The "cdqe" sign extends +the double word in EAX into quad word and stores the result in RAX register. +"cqo" sign extends the quad word in RAX into double quad word and stores the +extra bits in the RDX register. These instructions have no operands. "movsxd" +sign extends the double word source operand, being either the 32-bit register +or memory, into 64-bit destination operand, which has to be register. +No analogous instruction is needed for the zero extension, since it is done +automatically by any operations on 32-bit registers, as noted in previous +paragraph. And the "movzx" and "movsx" instructions, conforming to the general +rule, can be used with 64-bit destination operand, allowing extension of byte +or word values into quad words. + All the binary arithmetic and logical instruction are promoted to allow +64-bit operands in long mode. The use of decimal arithmetic instructions in +long mode is prohibited. + The stack operations, like "push" and "pop" in long mode default to 64-bit +operands and it's not possible to use 32-bit operands with them. The "pusha" +and "popa" are disallowed in long mode. + The indirect near jumps and calls in long mode default to 64-bit operands and +it's not possible to use the 32-bit operands with them. On the other hand, the +indirect far jumps and calls allow any operands that were allowed by the x86 +architecture and also 80-bit memory operand is allowed (though only EM64T seems +to implement such variant), with the first eight bytes defining the offset and +two last bytes specifying the selector. The direct far jumps and calls are not +allowed in long mode. + The I/O instructions, "in", "out", "ins" and "outs" are the exceptional +instructions that are not extended to accept quad word operands in long mode. +But all other string operations are, and there are new short forms "movsq", +"cmpsq", "scasq", "lodsq" and "stosq" introduced for the variants of string +operations for 64-bit string elements. The RSI and RDI registers are used by +default to address the string elements. + The "lfs", "lgs" and "lss" instructions are extended to accept 80-bit source +memory operand with 64-bit destination register (though only EM64T seems to +implement such variant). The "lds" and "les" are disallowed in long mode. + The system instructions like "lgdt" which required the 48-bit memory operand, +in long mode require the 80-bit memory operand. + The "cmpxchg16b" is the 64-bit equivalent of "cmpxchg8b" instruction, it uses +the double quad word memory operand and 64-bit registers to perform the +analoguous operation. + "swapgs" is the new instruction, which swaps the contents of GS register and +the KernelGSbase model-specific register (MSR address 0C0000102h). + "syscall" and "sysret" is the pair of new instructions that provide the +functionality similar to "sysenter" and "sysexit" in long mode, where the +latter pair is disallowed. + + +2.2 Control directives + +This section describes the directives that control the assembly process, they +are processed during the assembly and may cause some blocks of instructions +to be assembled differently or not assembled at all. + + +2.2.1 Numerical constants + +The "=" directive allows to define the numerical constant. It should be +preceded by the name for the constant and followed by the numerical expression +providing the value. The value of such constants can be a number or an address, +but - unlike labels - the numerical constants are not allowed to hold the +register-based addresses. Besides this difference, in their basic variant +numerical constants behave very much like labels and you can even +forward-reference them (access their values before they actually get defined). + There is, however, a second variant of numerical constants, which is +recognized by assembler when you try to define the constant of name, under +which there already was a numerical constant defined. In such case assembler +treats that constant as an assembly-time variable and allows it to be assigned +with new value, but forbids forward-referencing it (for obvious reasons). Let's +see both the variant of numerical constants in one example: + + dd sum + x = 1 + x = x+2 + sum = x + +Here the "x" is an assembly-time variable, and every time it is accessed, the +value that was assigned to it the most recently is used. Thus if we tried to +access the "x" before it gets defined the first time, like if we wrote "dd x" +in place of the "dd sum" instruction, it would cause an error. And when it is +re-defined with the "x = x+2" directive, the previous value of "x" is used to +calculate the new one. So when the "sum" constant gets defined, the "x" has +value of 3, and this value is assigned to the "sum". Since this one is defined +only once in source, it is the standard numerical constant, and can be +forward-referenced. So the "dd sum" is assembled as "dd 3". To read more about +how the assembler is able to resolve this, see section 2.2.6. + The value of numerical constant can be preceded by size operator, which can +ensure that the value will fit in the range for the specified size, and can +affect also how some of the calculations inside the numerical expression are +performed. This example: + + c8 = byte -1 + c32 = dword -1 + +defines two different constants, the first one fits in 8 bits, the second one +fits in 32 bits. + When you need to define constant with the value of address, which may be +register-based (and thus you cannot employ numerical constant for this +purpose), you can use the extended syntax of "label" directive (already +described in section 1.2.3), like: + + label myaddr at ebp+4 + +which declares label placed at "ebp+4" address. However remember that labels, +unlike numerical constants, cannot become assembly-time variables. + + +2.2.2 Conditional assembly + +"if" directive causes come block of instructions to be assembled only under +certain condition. It should be followed by logical expression specifying the +condition, instructions in next lines will be assembled only when this +condition is met, otherwise they will be skipped. The optional "else if" +directive followed with logical expression specifying additional condition +begins the next block of instructions that will be assembled if previous +conditions were not met, and the additional condition is met. The optional +"else" directive begins the block of instructions that will be assembled if +all the conditions were not met. The "end if" directive ends the last block of +instructions. + You should note that "if" directive is processed at assembly stage and +therefore it doesn't affect any preprocessor directives, like the definitions +of symbolic constants and macroinstructions - when the assembler recognizes the +"if" directive, all the preprocessing has been already finished. + The logical expression consist of logical values and logical operators. The +logical operators are "~" for logical negation, "&" for logical and, "|" for +logical or. The negation has the highest priority. Logical value can be a +numerical expression, it will be false if it is equal to zero, otherwise it +will be true. Two numerical expression can be compared using one of the +following operators to make the logical value: "=" (equal), "<" (less), +">" (greater), "<=" (less or equal), ">=" (greater or equal), +"<>" (not equal). + The "used" operator followed by a symbol name, is the logical value that +checks whether the given symbol is used somewhere (it returns correct result +even if symbol is used only after this check). The "defined" operator can be +followed by any expression, usually just by a single symbol name; it checks +whether the given expression contains only symbols that are defined in the +source and accessible from the current position. + The following simple example uses the "count" constant that should be +defined somewhere in source: + + if count>0 + mov cx,count + rep movsb + end if + +These two assembly instructions will be assembled only if the "count" constant +is greater than 0. The next sample shows more complex conditional structure: + + if count & ~ count mod 4 + mov cx,count/4 + rep movsd + else if count>4 + mov cx,count/4 + rep movsd + mov cx,count mod 4 + rep movsb + else + mov cx,count + rep movsb + end if + +The first block of instructions gets assembled when the "count" is non zero and +divisible by four, if this condition is not met, the second logical expression, +which follows the "else if", is evaluated and if it's true, the second block +of instructions get assembled, otherwise the last block of instructions, which +follows the line containing only "else", is assembled. + There are also operators that allow comparison of values being any chains of +symbols. The "eq" compares two such values whether they are exactly the same. +The "in" operator checks whether given value is a member of the list of values +following this operator, the list should be enclosed between "<" and ">" +characters, its members should be separated with commas. The symbols are +considered the same when they have the same meaning for the assembler - for +example "pword" and "fword" for assembler are the same and thus are not +distinguished by the above operators. In the same way "16 eq 10h" is the true +condition, however "16 eq 10+4" is not. + The "eqtype" operator checks whether the two compared values have the same +structure, and whether the structural elements are of the same type. The +distinguished types include numerical expressions, individual quoted strings, +floating point numbers, address expressions (the expressions enclosed in square +brackets or preceded by "ptr" operator), instruction mnemonics, registers, size +operators, jump type and code type operators. And each of the special +characters that act as a separators, like comma or colon, is the separate type +itself. For example, two values, each one consisting of register name followed +by comma and numerical expression, will be regarded as of the same type, no +matter what kind of register and how complicated numerical expression is used; +with exception for the quoted strings and floating point values, which are the +special kinds of numerical expressions and are treated as different types. Thus +"eax,16 eqtype fs,3+7" condition is true, but "eax,16 eqtype eax,1.6" is false. + + +2.2.3 Repeating blocks of instructions + +"times" directive repeats one instruction specified number of times. It +should be followed by numerical expression specifying number of repeats and +the instruction to repeat (optionally colon can be used to separate number and +instruction). When special symbol "%" is used inside the instruction, it is +equal to the number of current repeat. For example "times 5 db %" will define +five bytes with values 1, 2, 3, 4, 5. Recursive use of "times" directive is +also allowed, so "times 3 times % db %" will define six bytes with values +1, 1, 2, 1, 2, 3. + "repeat" directive repeats the whole block of instructions. It should be +followed by numerical expression specifying number of repeats. Instructions +to repeat are expected in next lines, ended with the "end repeat" directive, +for example: + + repeat 8 + mov byte [bx],% + inc bx + end repeat + +The generated code will store byte values from one to eight in the memory +addressed by BX register. + Number of repeats can be zero, in that case the instructions are not +assembled at all. + The "break" directive allows to stop repeating earlier and continue assembly +from the first line after the "end repeat". Combined with the "if" directive it +allows to stop repeating under some special condition, like: + + s = x/2 + repeat 100 + if x/s = s + break + end if + s = (s+x/s)/2 + end repeat + + The "while" directive repeats the block of instructions as long as the +condition specified by the logical expression following it is true. The block +of instructions to be repeated should end with the "end while" directive. +Before each repetition the logical expression is evaluated and when its value +is false, the assembly is continued starting from the first line after the +"end while". Also in this case the "%" symbol holds the number of current +repeat. The "break" directive can be used to stop this kind of loop in the same +way as with "repeat" directive. The previous sample can be rewritten to use the +"while" instead of "repeat" this way: + + s = x/2 + while x/s <> s + s = (s+x/s)/2 + if % = 100 + break + end if + end while + + The blocks defined with "if", "repeat" and "while" can be nested in any +order, however they should be closed in the same order in which they were +started. The "break" directive always stops processing the block that was +started last with either the "repeat" or "while" directive. + + +2.2.4 Addressing spaces + + "org" directive sets address at which the following code is expected to +appear in memory. It should be followed by numerical expression specifying +the address. This directive begins the new addressing space, the following +code itself is not moved in any way, but all the labels defined within it +and the value of "$" symbol are affected as if it was put at the given +address. However it's the responsibility of programmer to put the code at +correct address at run-time. + The "load" directive allows to define constant with a binary value loaded +from the already assembled code. This directive should be followed by the name +of the constant, then optionally size operator, then "from" operator and a +numerical expression specifying a valid address in current addressing space. +The size operator has unusual meaning in this case - it states how many bytes +(up to 8) have to be loaded to form the binary value of constant. If no size +operator is specified, one byte is loaded (thus value is in range from 0 to +255). The loaded data cannot exceed current offset. + The "store" directive can modify the already generated code by replacing +some of the previously generated data with the value defined by given +numerical expression, which follow. The expression can be preceded by the +optional size operator to specify how large value the expression defines, and +therefore how much bytes will be stored, if there is no size operator, the +size of one byte is assumed. Then the "at" operator and the numerical +expression defining the valid address in current addressing code space, at +which the given value have to be stored should follow. This is a directive for +advanced appliances and should be used carefully. + Both "load" and "store" directives are limited to operate on places in +current addressing space. The "$$" symbol is always equal to the base address +of current addressing space, and the "$" symbol is the address of current +position in that addressing space, therefore these two values define limits +of the area, where "load" and "store" can operate. + Combining the "load" and "store" directives allows to do things like encoding +some of the already generated code. For example to encode the whole code +generated in current addressing space you can use such block of directives: + + repeat $-$$ + load a byte from $$+%-1 + store byte a xor c at $$+%-1 + end repeat + +and each byte of code will be xored with the value defined by "c" constant. + "virtual" defines virtual data at specified address. This data won't be +included in the output file, but labels defined there can be used in other +parts of source. This directive can be followed by "at" operator and the +numerical expression specifying the address for virtual data, otherwise is +uses current address, the same as "virtual at $". Instructions defining data +are expected in next lines, ended with "end virtual" directive. The block of +virtual instructions itself is an independent addressing space, after it's +ended, the context of previous addressing space is restored. + The "virtual" directive can be used to create union of some variables, for +example: + + GDTR dp ? + virtual at GDTR + GDT_limit dw ? + GDT_address dd ? + end virtual + +It defines two labels for parts of the 48-bit variable at "GDTR" address. + It can be also used to define labels for some structures addressed by a +register, for example: + + virtual at bx + LDT_limit dw ? + LDT_address dd ? + end virtual + +With such definition instruction "mov ax,[LDT_limit]" will be assembled +to "mov ax,[bx]". + Declaring defined data values or instructions inside the virtual block would +also be useful, because the "load" directive can be used to load the values +from the virtually generated code into a constants. This directive should be +used after the code it loads but before the virtual block ends, because it can +only load the values from the same addressing space. For example: + + virtual at 0 + xor eax,eax + and edx,eax + load zeroq dword from 0 + end virtual + +The above piece of code will define the "zeroq" constant containing four bytes +of the machine code of the instructions defined inside the virtual block. +This method can be also used to load some binary value from external file. +For example this code: + + virtual at 0 + file 'a.txt':10h,1 + load char from 0 + end virtual + +loads the single byte from offset 10h in file "a.txt" into the "char" +constant. + Any of the "section" directives described in 2.4 also begins a new +addressing space. + + +2.2.5 Other directives + +"align" directive aligns code or data to the specified boundary. It should +be followed by a numerical expression specifying the number of bytes, to the +multiply of which the current address has to be aligned. The boundary value +has to be the power of two. + The "align" directive fills the bytes that had to be skipped to perform the +alignment with the "nop" instructions and at the same time marks this area as +uninitialized data, so if it is placed among other uninitialized data that +wouldn't take space in the output file, the alignment bytes will act the same +way. If you need to fill the alignment area with some other values, you can +combine "align" with "virtual" to get the size of alignment needed and then +create the alignment yourself, like: + + virtual + align 16 + a = $ - $$ + end virtual + db a dup 0 + +The "a" constant is defined to be the difference between address after +alignment and address of the "virtual" block (see previous section), so it is +equal to the size of needed alignment space. + "display" directive displays the message at the assembly time. It should +be followed by the quoted strings or byte values, separated with commas. It +can be used to display values of some constants, for example: + + bits = 16 + display 'Current offset is 0x' + repeat bits/4 + d = '0' + $ shr (bits-%*4) and 0Fh + if d > '9' + d = d + 'A'-'9'-1 + end if + display d + end repeat + display 13,10 + +This block of directives calculates the four hexadecimal digits of 16-bit value +and converts them into characters for displaying. Note that this won't work if +the adresses in current addressing space are relocatable (as it might happen +with PE or object output formats), since only absolute values can be used this +way. The absolute value may be obtained by calculating the relative address, +like "$-$$", or "rva $" in case of PE format. + + +2.2.6 Multiple passes + +Because the assembler allows to reference some of the labels or constants +before they get actually defined, it has to predict the values of such labels +and if there is even a suspicion that prediction failed in at least one case, +it does one more pass, assembling the whole source, this time doing better +prediction based on the values the labels got in the previous pass. + The changing values of labels can cause some instructions to have encodings +of different length, and this can cause the change in values of labels again. +And since the labels and constants can also be used inside the expressions that +affect the behavior of control directives, the whole block of source can be +processed completely differently during the new pass. Thus the assembler does +more and more passes, each time trying to do better predictions to approach +the final solution, when all the values get predicted correctly. It uses +various method for predicting the values, which has been chosen to allow +finding in a few passes the solution of possibly smallest length for the most +of the programs. + Some of the errors, like the values not fitting in required boundaries, are +not signaled during those intermediate passes, since it may happen that when +some of the values are predicted better, these errors will disappear. However +if assembler meets some illegal syntax construction or unknown instruction, it +always stops immediately. Also defining some label more than once causes such +error, because it makes the predictions groundless. + Only the messages created with the "display" directive during the last +performed pass get actually displayed. In case when the assembly has been +stopped due to an error, these messages may reflect the predicted values that +are not yet resolved correctly. + The solution may sometimes not exist and in such cases the assembler will +never manage to make correct predictions - for this reason there is a limit for +a number of passes, and when assembler reaches this limit, it stops and +displays the message that it is not able to generate the correct output. +Consider the following example: + + if ~ defined alpha + alpha: + end if + +The "defined" operator gives the true value when the expression following it +could be calculated in this place, what in this case means that the "alpha" +label is defined somewhere. But the above block causes this label to be defined +only when the value given by "defined" operator is false, what leads to an +antynomy and makes it impossible to resolve such code. When processing the "if" +directive assembler has to predict whether the "alpha" label will be defined +somewhere (it wouldn't have to predict only if the label was already defined +earlier in this pass), and whatever the prediction is, the opposite always +happens. Thus the assembly will fail, unless the "alpha" label is defined +somewhere in source preceding the above block of instructions - in such case, +as it was already noted, the prediction is not needed and the block will just +get skipped. + The above sample might have been written as a try to define the label only +when it was not yet defined. It fails, because the "defined" operator does +check whether the label is defined anywhere, and this includes the definition +inside this conditionally processed block. However adding some additional +condition may make it possible to get it resolved: + + if ~ defined alpha | defined @f + alpha: + @@: + end if + +The "@f" is always the same label as the nearest "@@" symbol in the source +following it, so the above sample would mean the same if any unique name was +used instead of the anonymous label. When "alpha" is not defined in any other +place in source, the only possible solution is when this block gets defined, +and this time this doesn't lead to the antynomy, because of the anonymous +label which makes this block self-establishing. To better understand this, +look at the blocks that has nothing more than this self-establishing: + + if defined @f + @@: + end if + +This is an example of source that may have more than one solution, as both +cases when this block gets processed or not are equally correct. Which one of +those two solutions we get depends on the algorithm on the assembler, in case +of flat assembler - on the algorithm of predictions. Back to the previous +sample, when "alpha" is not defined anywhere else, the condition for "if" block +cannot be false, so we are left with only one possible solution, and we can +hope the assembler will arrive at it. On the other hand, when "alpha" is +defined in some other place, we've got two possible solutions again, but one of +them causes "alpha" to be defined twice, and such an error causes assembler to +abort the assembly immediately, as this is the kind of error that deeply +disturbs the process of resolving. So we can get such source either correctly +resolved or causing an error, and what we get may depend on the internal +choices made by the assembler. + However there are some facts about such choices that are certain. When +assembler has to check whether the given symbol is defined and it was already +defined in the current pass, no prediction is needed - it was already noted +above. And when the given symbol has been defined never before, including all +the already finished passes, the assembler predicts it to be not defined. +Knowing this, we can expect that the simple self-establishing block shown +above will not be assembled at all and that the previous sample will resolve +correctly when "alpha" is defined somewhere before our conditional block, +while it will itself define "alpha" when it's not already defined earlier, thus +potentially causing the error because of double definition if the "alpha" is +also defined somewhere later. + The "used" operator may be expected to behave in a similar manner in +analogous cases, however any other kinds of predictions my not be so simple and +you should never rely on them this way. + + +2.3 Preprocessor directives + +All preprocessor directives are processed before the main assembly process, +and therefore are not affected by the control directives. At this time also +all comments are stripped out. + + +2.3.1 Including source files + +"include" directive includes the specified source file at the position where +it is used. It should be followed by the quoted name of file that should be +included, for example: + + include 'macros.inc' + +The whole included file is preprocessed before preprocessing the lines next +to the line containing the "include" directive. There are no limits to the +number of included files as long as they fit in memory. + The quoted path can contain environment variables enclosed within "%" +characters, they will be replaced with their values inside the path, both the +"\" and "/" characters are allowed as a path separators. If no absolute path +is given, the file is first searched for in the directory containing file +which included it and when it's not found there, in the directory containing +the main source file (the one specified in command line). These rules concern +also paths given with the "file" directive. + + +2.3.2 Symbolic constants + +The symbolic constants are different from the numerical constants, before the +assembly process they are replaced with their values everywhere in source +lines after their definitions, and anything can become their values. + The definition of symbolic constant consists of name of the constant +followed by the "equ" directive. Everything that follows this directive will +become the value of constant. If the value of symbolic constant contains +other symbolic constants, they are replaced with their values before assigning +this value to the new constant. For example: + + d equ dword + NULL equ d 0 + d equ edx + +After these three definitions the value of "NULL" constant is "dword 0" and +the value of "d" is "edx". So, for example, "push NULL" will be assembled as +"push dword 0" and "push d" will be assembled as "push edx". And if then the +following line was put: + + d equ d,eax + +the "d" constant would get the new value of "edx,eax". This way the growing +lists of symbols can be defined. + "restore" directive allows to get back previous value of redefined symbolic +constant. It should be followed by one more names of symbolic constants, +separated with commas. So "restore d" after the above definitions will give +"d" constant back the value "edx", the second one will restore it to value +"dword", and one more will revert "d" to original meaning as if no such +constant was defined. If there was no constant defined of given name, +"restore" won't cause an error, it will be just ignored. + Symbolic constant can be used to adjust the syntax of assembler to personal +preferences. For example the following set of definitions provides the handy +shortcuts for all the size operators: + + b equ byte + w equ word + d equ dword + p equ pword + f equ fword + q equ qword + t equ tword + x equ dqword + + Because symbolic constant may also have an empty value, it can be used to +allow the syntax with "offset" word before any address value: + + offset equ + +After this definition "mov ax,offset char" will be valid construction for +copying the offset of "char" variable into "ax" register, because "offset" is +replaced with an empty value, and therefore ignored. + The "define" directive followed by the name of constant and then the value, +is the alternative way of defining symbolic constant. The only difference +between "define" and "equ" is that "define" assigns the value as it is, it does +not replace the symbolic constants with their values inside it. + Symbolic constants can also be defined with the "fix" directive, which has +the same syntax as "equ", but defines constants of high priority - they are +replaced with their symbolic values even before processing the preprocessor +directives and macroinstructions, the only exception is "fix" directive +itself, which has the highest possible priority, so it allows redefinition of +constants defined this way. + The "fix" directive can be used for syntax adjustments related to directives +of preprocessor, what cannot be done with "equ" directive. For example: + + incl fix include + +defines a short name for "include" directive, while the similar definition done +with "equ" directive wouldn't give such result, as standard symbolic constants +are replaced with their values after searching the line for preprocessor +directives. + + +2.3.3 Macroinstructions + +"macro" directive allows you to define your own complex instructions, called +macroinstructions, using which can greatly simplify the process of +programming. In its simplest form it's similar to symbolic constant +definition. For example the following definition defines a shortcut for the +"test al,0xFF" instruction: + + macro tst {test al,0xFF} + +After the "macro" directive there is a name of macroinstruction and then its +contents enclosed between the "{" and "}" characters. You can use "tst" +instruction anywhere after this definition and it will be assembled as +"test al,0xFF". Defining symbolic constant "tst" of that value would give the +similar result, but the difference is that the name of macroinstruction is +recognized only as an instruction mnemonic. Also, macroinstructions are +replaced with corresponding code even before the symbolic constants are +replaced with their values. So if you define macroinstruction and symbolic +constant of the same name, and use this name as an instruction mnemonic, it +will be replaced with the contents of macroinstruction, but it will be +replaced with value if symbolic constant if used somewhere inside the +operands. + The definition of macroinstruction can consist of many lines, because +"{" and "}" characters don't have to be in the same line as "macro" directive. +For example: + + macro stos0 + { + xor al,al + stosb + } + +The macroinstruction "stos0" will be replaced with these two assembly +instructions anywhere it's used. + Like instructions which needs some number of operands, the macroinstruction +can be defined to need some number of arguments separated with commas. The +names of needed argument should follow the name of macroinstruction in the +line of "macro" directive and should be separated with commas if there is more +than one. Anywhere one of these names occurs in the contents of +macroinstruction, it will be replaced with corresponding value, provided when +the macroinstruction is used. Here is an example of a macroinstruction that +will do data alignment for binary output format: + + macro align value { rb (value-1)-($+value-1) mod value } + +When the "align 4" instruction is found after this macroinstruction is +defined, it will be replaced with contents of this macroinstruction, and the +"value" will there become 4, so the result will be "rb (4-1)-($+4-1) mod 4". + If a macroinstruction is defined that uses an instruction with the same name +inside its definition, the previous meaning of this name is used. Useful +redefinition of macroinstructions can be done in that way, for example: + + macro mov op1,op2 + { + if op1 in & op2 in + push op2 + pop op1 + else + mov op1,op2 + end if + } + +This macroinstruction extends the syntax of "mov" instruction, allowing both +operands to be segment registers. For example "mov ds,es" will be assembled as +"push es" and "pop ds". In all other cases the standard "mov" instruction will +be used. The syntax of this "mov" can be extended further by defining next +macroinstruction of that name, which will use the previous macroinstruction: + + macro mov op1,op2,op3 + { + if op3 eq + mov op1,op2 + else + mov op1,op2 + mov op2,op3 + end if + } + +It allows "mov" instruction to have three operands, but it can still have two +operands only, because when macroinstruction is given less arguments than it +needs, the rest of arguments will have empty values. When three operands are +given, this macroinstruction will become two macroinstructions of the previous +definition, so "mov es,ds,dx" will be assembled as "push ds", "pop es" and +"mov ds,dx". + By placing the "*" after the name of argument you can mark the argument as +required - preprocessor won't allow it to have an empty value. For example the +above macroinstruction could be declared as "macro mov op1*,op2*,op3" to make +sure that first two arguments will always have to be given some non empty +values. + When it's needed to provide macroinstruction with argument that contains +some commas, such argument should be enclosed between "<" and ">" characters. +If it contains more than one "<" character, the same number of ">" should be +used to tell that the value of argument ends. + "purge" directive allows removing the last definition of specified +macroinstruction. It should be followed by one or more names of +macroinstructions, separated with commas. If such macroinstruction has not +been defined, you won't get any error. For example after having the syntax of +"mov" extended with the macroinstructions defined above, you can disable +syntax with three operands back by using "purge mov" directive. Next +"purge mov" will disable also syntax for two operands being segment registers, +and all the next such directives will do nothing. + If after the "macro" directive you enclose some group of arguments' names in +square brackets, it will allow giving more values for this group of arguments +when using that macroinstruction. Any more argument given after the last +argument of such group will begin the new group and will become the first +argument of it. That's why after closing the square bracket no more argument +names can follow. The contents of macroinstruction will be processed for each +such group of arguments separately. The simplest example is to enclose one +argument name in square brackets: + + macro stoschar [char] + { + mov al,char + stosb + } + +This macroinstruction accepts unlimited number of arguments, and each one +will be processed into these two instructions separately. For example +"stoschar 1,2,3" will be assembled as the following instructions: + + mov al,1 + stosb + mov al,2 + stosb + mov al,3 + stosb + + There are some special directives available only inside the definitions of +macroinstructions. "local" directive defines local names, which will be +replaced with unique values each time the macroinstruction is used. It should +be followed by names separated with commas. If the name given as parameter to +"local" directive begins with a dot or two dots, the unique labels generated +by each evaluation of macroinstruction will have the same properties. +This directive is usually needed for the constants or labels that +macroinstruction defines and uses internally. For example: + + macro movstr + { + local move + move: + lodsb + stosb + test al,al + jnz move + } + +Each time this macroinstruction is used, "move" will become other unique name +in its instructions, so you won't get an error you normally get when some +label is defined more than once. + "forward", "reverse" and "common" directives divide macroinstruction into +blocks, each one processed after the processing of previous is finished. They +differ in behavior only if macroinstruction allows multiple groups of +arguments. Block of instructions that follows "forward" directive is processed +for each group of arguments, from first to last - exactly like the default +block (not preceded by any of these directives). Block that follows "reverse" +directive is processed for each group of argument in reverse order - from last +to first. Block that follows "common" directive is processed only once, +commonly for all groups of arguments. Local name defined in one of the blocks +is available in all the following blocks when processing the same group of +arguments as when it was defined, and when it is defined in common block it is +available in all the following blocks not depending on which group of +arguments is processed. + Here is an example of macroinstruction that will create the table of +addresses to strings followed by these strings: + + macro strtbl name,[string] + { + common + label name dword + forward + local label + dd label + forward + label db string,0 + } + +First argument given to this macroinstruction will become the label for table +of addresses, next arguments should be the strings. First block is processed +only once and defines the label, second block for each string declares its +local name and defines the table entry holding the address to that string. +Third block defines the data of each string with the corresponding label. + The directive starting the block in macroinstruction can be followed by the +first instruction of this block in the same line, like in the following +example: + + macro stdcall proc,[arg] + { + reverse push arg + common call proc + } + +This macroinstruction can be used for calling the procedures using STDCALL +convention, arguments are pushed on stack in the reverse order. For example +"stdcall foo,1,2,3" will be assembled as: + + push 3 + push 2 + push 1 + call foo + + If some name inside macroinstruction has multiple values (it is either one +of the arguments enclosed in square brackets or local name defined in the +block following "forward" or "reverse" directive) and is used in block +following the "common" directive, it will be replaced with all of its values, +separated with commas. For example the following macroinstruction will pass +all of the additional arguments to the previously defined "stdcall" +macroinstruction: + + macro invoke proc,[arg] + { common stdcall [proc],arg } + +It can be used to call indirectly (by the pointer stored in memory) the +procedure using STDCALL convention. + Inside macroinstruction also special operator "#" can be used. This +operator causes two names to be concatenated into one name. It can be useful, +because it's done after the arguments and local names are replaced with their +values. The following macroinstruction will generate the conditional jump +according to the "cond" argument: + + macro jif op1,cond,op2,label + { + cmp op1,op2 + j#cond label + } + +For example "jif ax,ae,10h,exit" will be assembled as "cmp ax,10h" and +"jae exit" instructions. + The "#" operator can be also used to concatenate two quoted strings into one. +Also conversion of name into a quoted string is possible, with the "`" operator, +which likewise can be used inside the macroinstruction. It convert the name +that follows it into a quoted string - but note, that when it is followed by +a macro argument which is being replaced with value containing more than one +symbol, only the first of them will be converted, as the "`" operator converts +only one symbol that immediately follows it. Here's an example of utilizing +those two features: + + macro label name + { + label name + if ~ used name + display `name # " is defined but not used.",13,10 + end if + } + +When label defined with such macro is not used in the source, macro will warn +you with the message, informing to which label it applies. + To make macroinstruction behaving differently when some of the arguments are +of some special type, for example a quoted strings, you can use "eqtype" +comparison operator. Here's an example of utilizing it to distinguish a +quoted string from an other argument: + + macro message arg + { + if arg eqtype "" + local str + jmp @f + str db arg,0Dh,0Ah,24h + @@: + mov dx,str + else + mov dx,arg + end if + mov ah,9 + int 21h + } + +The above macro is designed for displaying messages in DOS programs. When the +argument of this macro is some number, label, or variable, the string from +that address is displayed, but when the argument is a quoted string, the +created code will display that string followed by the carriage return and +line feed. + It is also possible to put a declaration of macroinstruction inside another +macroinstruction, so one macro can define another, but there is a problem +with such definitions caused by the fact, that "}" character cannot occur +inside the macroinstruction, as it always means the end of definition. To +overcome this problem, the escaping of symbols inside macroinstruction can be +used. This is done by placing one or more backslashes in front of any other +symbol (even the special character). Preprocessor sees such sequence as a +single symbol, but each time it meets such symbol during the macroinstruction +processing, it cuts the backslash character from the front of it. For example +"\{" is treated as single symbol, but during processing of the macroinstruction +it becomes the "{" symbol. This allows to put one definition of +macroinstruction inside another: + + macro ext instr + { + macro instr op1,op2,op3 + \{ + if op3 eq + instr op1,op2 + else + instr op1,op2 + instr op2,op3 + end if + \} + } + + ext add + ext sub + +The macro "ext" is defined correctly, but when it is used, the "\{" and "\}" +become the "{" and "}" symbols. So when the "ext add" is processed, the +contents of macro becomes valid definition of a macroinstruction and this way +the "add" macro becomes defined. In the same way "ext sub" defines the "sub" +macro. The use of "\{" symbol wasn't really necessary here, but is done this +way to make the definition more clear. + If some directives specific to macroinstructions, like "local" or "common" +are needed inside some macro embedded this way, they can be escaped in the same +way. Escaping the symbol with more than one backslash is also allowed, which +allows multiple levels of nesting the macroinstruction definitions. + The another technique for defining one macroinstruction by another is to +use the "fix" directive, which becomes useful when some macroinstruction only +begins the definition of another one, without closing it. For example: + + macro tmacro [params] + { + common macro params { + } + + MACRO fix tmacro + ENDM fix } + +defines an alternative syntax for defining macroinstructions, which looks like: + + MACRO stoschar char + mov al,char + stosb + ENDM + +Note that symbol that has such customized definition must be defined with "fix" +directive, because only the prioritized symbolic constants are processed before +the preprocessor looks for the "}" character while defining the macro. This +might be a problem if one needed to perform some additional tasks one the end +of such definition, but there is one more feature which helps in such cases. +Namely it is possible to put any directive, instruction or macroinstruction +just after the "}" character that ends the macroinstruction and it will be +processed in the same way as if it was put in the next line. + + +2.3.4 Structures + +"struc" directive is a special variant of "macro" directive that is used to +define data structures. Macroinstruction defined using the "struc" directive +must be preceded by a label (like the data definition directive) when it's +used. This label will be also attached at the beginning of every name starting +with dot in the contents of macroinstruction. The macroinstruction defined +using the "struc" directive can have the same name as some other +macroinstruction defined using the "macro" directive, structure +macroinstruction won't prevent the standard macroinstruction being processed +when there is no label before it and vice versa. All the rules and features +concerning standard macroinstructions apply to structure macroinstructions. + Here is the sample of structure macroinstruction: + + struc point x,y + { + .x dw x + .y dw y + } + +For example "my point 7,11" will define structure labeled "my", consisting of +two variables: "my.x" with value 7 and "my.y" with value 11. + If somewhere inside the definition of structure the name consisting of a +single dot it found, it is replaced by the name of the label for the given +instance of structure and this label will not be defined automatically in +such case, allowing to completely customize the definition. The following +example utilizes this feature to extend the data definition directive "db" +with ability to calculate the size of defined data: + + struc db [data] + { + common + . db data + .size = $ - . + } + +With such definition "msg db 'Hello!',13,10" will define also "msg.size" +constant, equal to the size of defined data in bytes. + Defining data structures addressed by registers or absolute values should be +done using the "virtual" directive with structure macroinstruction +(see 2.2.4). + "restruc" directive removes the last definition of the structure, just like +"purge" does with macroinstructions and "restore" with symbolic constants. +It also has the same syntax - should be followed by one or more names of +structure macroinstructions, separated with commas. + + +2.3.5 Repeating macroinstructions + +The "rept" directive is a special kind of macroinstruction, which makes given +amount of duplicates of the block enclosed with braces. The basic syntax is +"rept" directive followed by number (it cannot be an expression, since +preprocessor doesn't do calculations, if you need repetitions based on values +calculated by assembler, use one of the code repeating directives that are +processed by assembler, see 2.2.3), and then block of source enclosed between +the "{" and "}" characters. The simplest example: + + rept 5 { in al,dx } + +will make five duplicates of the "in al,dx" line. The block of instructions +is defined in the same way as for the standard macroinstruction and any +special operators and directives which can be used only inside +macroinstructions are also allowed here. When the given count is zero, the +block is simply skipped, as if you defined macroinstruction but never used +it. The number of repetitions can be followed by the name of counter symbol, +which will get replaced symbolically with the number of duplicate currently +generated. So this: + + rept 3 counter + { + byte#counter db counter + } + +will generate lines: + + byte1 db 1 + byte2 db 2 + byte3 db 3 + +The repetition mechanism applied to "rept" blocks is the same as the one used +to process multiple groups of arguments for macroinstructions, so directives +like "forward", "common" and "reverse" can be used in their usual meaning. +Thus such macroinstruction: + + rept 7 num { reverse display `num } + +will display digits from 7 to 1 as text. The "local" directive behaves in the +same way as inside macroinstruction with multiple groups of arguments, so: + + rept 21 + { + local label + label: loop label + } + +will generate unique label for each duplicate. + The counter symbol by default counts from 1, but you can declare different +base value by placing the number preceded by colon immediately after the name +of counter. For example: + + rept 8 n:0 { pxor xmm#n,xmm#n } + +will generate code which will clear the contents of eight SSE registers. +You can define multiple counters separated with commas, and each one can have +different base. + The "irp" directive iterates the single argument through the given list of +parameters. The syntax is "irp" followed by the argument name, then the comma +and then the list of parameters. The parameters are specified in the same +way like in the invocation of standard macroinstruction, so they have to be +separated with commas and each one can be enclosed with the "<" and ">" +characters. Also the name of argument may be followed by "*" to mark that it +cannot get an empty value. Such block: + + irp value, 2,3,5 + { db value } + +will generate lines: + + db 2 + db 3 + db 5 + +The "irps" directive iterates through the given list of symbols, it should +be followed by the argument name, then the comma and then the sequence of any +symbols. Each symbol in this sequence, no matter whether it is the name +symbol, symbol character or quoted string, becomes an argument value for one +iteration. If there are no symbols following the comma, no iteration is done +at all. This example: + + irps reg, al bx ecx + { xor reg,reg } + +will generate lines: + + xor al,al + xor bx,bx + xor ecx,ecx + +The blocks defined by the "irp" and "irps" directives are also processed in +the same way as any macroinstructions, so operators and directives specific +to macroinstructions may be freely used also in this case. + + +2.3.6 Conditional preprocessing + +"match" directive causes some block of source to be preprocessed and passed +to assembler only when the given sequence of symbols matches the specified +pattern. The pattern comes first, ended with comma, then the symbols that have +to be matched with the pattern, and finally the block of source, enclosed +within braces as macroinstruction. + There are the few rules for building the expression for matching, first is +that any of symbol characters and any quoted string should be matched exactly +as is. In this example: + + match +,+ { include 'first.inc' } + match +,- { include 'second.inc' } + +the first file will get included, since "+" after comma matches the "+" in +pattern, and the second file won't be included, since there is no match. + To match any other symbol literally, it has to be preceded by "=" character +in the pattern. Also to match the "=" character itself, or the comma, the +"==" and "=," constructions have to be used. For example the "=a==" pattern +will match the "a=" sequence. + If some name symbol is placed in the pattern, it matches any sequence +consisting of at least one symbol and then this name is replaced with the +matched sequence everywhere inside the following block, analogously to the +parameters of macroinstruction. For instance: + + match a-b, 0-7 + { dw a,b-a } + +will generate the "dw 0,7-0" instruction. Each name is always matched with +as few symbols as possible, leaving the rest for the following ones, so in +this case: + + match a b, 1+2+3 { db a } + +the "a" name will match the "1" symbol, leaving the "+2+3" sequence to be +matched with "b". But in this case: + + match a b, 1 { db a } + +there will be nothing left for "b" to match, so the block won't get processed +at all. + The block of source defined by match is processed in the same way as any +macroinstruction, so any operators specific to macroinstructions can be used +also in this case. + What makes "match" directive more useful is the fact, that it replaces the +symbolic constants with their values in the matched sequence of symbols (that +is everywhere after comma up to the beginning of the source block) before +performing the match. Thanks to this it can be used for example to process +some block of source under the condition that some symbolic constant has the +given value, like: + + match =TRUE, DEBUG { include 'debug.inc' } + +which will include the file only when the symbolic constant "DEBUG" was +defined with value "TRUE". + + +2.3.7 Order of processing + +When combining various features of the preprocessor, it's important to know +the order in which they are processed. As it was already noted, the highest +priority has the "fix" directive and the replacements defined with it. This +is done completely before doing any other preprocessing, therefore this +piece of source: + + V fix { + macro empty + V + V fix } + V + +becomes a valid definition of an empty macroinstruction. It can be interpreted +that the "fix" directive and prioritized symbolic constants are processed in +a separate stage, and all other preprocessing is done after on the resulting +source. + The standard preprocessing that comes after, on each line begins with +recognition of the first symbol. It begins with checking for the preprocessor +directives, and when none of them is detected, preprocessor checks whether the +first symbol is macroinstruction. If no macroinstruction is found, it moves +to the second symbol of line, and again begins with checking for directives, +which in this case is only the "equ" directive, as this is the only one that +occurs as the second symbol in line. If there's no directive, the second +symbol is checked for the case of structure macroinstruction and when none +of those checks gives the positive result, the symbolic constants are replaced +with their values and such line is passed to the assembler. + To see it on the example, assume that there is defined the macroinstruction +called "foo" and the structure macroinstruction called "bar". Those lines: + + foo equ + foo bar + +would be then both interpreted as invocations of macroinstruction "foo", since +the meaning of the first symbol overrides the meaning of second one. + The macroinstructions generate the new lines from their definition blocks, +replacing the parameters with their values and then processing the "#" and "`" +operators. The conversion operator has the higher priority than concatenation. +After this is completed, the newly generated line goes through the standard +preprocessing, as described above. + Though the symbolic constants are usually only replaced in the lines, where +no preprocessor directives nor macroinstructions has been found, there are some +special cases where those replacements are performed in the parts of lines +containing directives. First one is the definition of symbolic constant, where +the replacements are done everywhere after the "equ" keyword and the resulting +value is then assigned to the new constant (see 2.3.2). The second such case +is the "match" directive, where the replacements are done in the symbols +following comma before matching them with pattern. These features can be used +for example to maintain the lists, like this set of definitions: + + list equ + + macro append item + { + match any, list \{ list equ list,item \} + match , list \{ list equ item \} + } + +The "list" constant is here initialized with empty value, and the "append" +macroinstruction can be used to add the new items into this list, separating +them with commas. The first match in this macroinstruction occurs only when +the value of list is not empty (see 2.3.6), in such case the new value for the +list is the previous one with the comma and the new item appended at the end. +The second match happens only when the list is still empty, and in such case +the list is defined to contain just the new item. So starting with the empty +list, the "append 1" would define "list equ 1" and the "append 2" following it +would define "list equ 1,2". One might then need to use this list as the +parameters to some macroinstruction. But it cannot be done directly - if "foo" +is the macroinstruction, then "foo list" would just pass the "list" symbol +as a parameter to macro, since symbolic constants are not unrolled at this +stage. For this purpose again "match" directive comes in handy: + + match params, list { foo params } + +The value of "list", if it's not empty, matches the "params" keyword, which is +then replaced with matched value when generating the new lines defined by the +block enclosed with braces. So if the "list" had value "1,2", the above line +would generate the line containing "foo 1,2", which would then go through the +standard preprocessing. + There is one more special case - when preprocessor goes to checking the +second symbol in the line and it happens to be the colon character (what is +then interpreted by assembler as definition of a label), it stops in this +place and finishes the preprocessing of the first symbol (so if it's the +symbolic constant it gets unrolled) and if it still appears to be the label, +it performs the standard preprocessing starting from the place after the +label. This allows to place preprocessor directives and macroinstructions +after the labels, analogously to the instructions and directives processed +by assembler, like: + + start: include 'start.inc' + +However if the label becomes broken during preprocessing (for example when +it is the symbolic constant with empty value), only replacing of the symbolic +constants is continued for the rest of line. + It should be remembered, that the jobs performed by preprocessor are the +preliminary operations on the texts symbols, that are done in a simple +single pass before the main process of assembly. The text that is the +result of preprocessing is passed to assembler, and it then does its +multiple passes on it. Thus the control directives, which are recognized and +processed only by the assembler - as they are dependent on the numerical +values that may even vary between passes - are not recognized in any way by +the preprocessor and have no effect on the preprocessing. Consider this +example source: + + if 0 + a = 1 + b equ 2 + end if + dd b + +When it is preprocessed, they only directive that is recognized by the +preprocessor is the "equ", which defines symbolic constant "b", so later +in the source the "b" symbol is replaced with the value "2". Except for this +replacement, the other lines are passes unchanged to the assembler. So +after preprocessing the above source becomes: + + if 0 + a = 1 + end if + dd 2 + +Now when assembler processes it, the condition for the "if" is false, and +the "a" constant doesn't get defined. However symbolic constant "b" was +processed normally, even though its definition was put just next to the one +of "a". So because of the possible confusion you should be very careful +every time when mixing the features of preprocessor and assembler - always +try to imagine what your source will become after the preprocessing, and +thus what the assembler will see and do its multiple passes on. + + +2.4 Formatter directives + +These directives are actually also a kind of control directives, with the +purpose of controlling the format of generated code. + "format" directive followed by the format identifier allows to select the +output format. This directive should be put at the beginning of the source. +Default output format is a flat binary file, it can also be selected by using +"format binary" directive. + "use16" and "use32" directives force the assembler to generate 16-bit or +32-bit code, omitting the default setting for selected output format. "use64" +enables generating the code for the long mode of x86-64 processors. + Below are described different output formats with the directives specific to +these formats. + + +2.4.1 MZ executable + +To select the MZ output format, use "format MZ" directive. The default code +setting for this format is 16-bit. + "segment" directive defines a new segment, it should be followed by label, +which value will be the number of defined segment, optionally "use16" or +"use32" word can follow to specify whether code in this segment should be +16-bit or 32-bit. The origin of segment is aligned to paragraph (16 bytes). +All the labels defined then will have values relative to the beginning of this +segment. + "entry" directive sets the entry point for MZ executable, it should be +followed by the far address (name of segment, colon and the offset inside +segment) of desired entry point. + "stack" directive sets up the stack for MZ executable. It can be followed by +numerical expression specifying the size of stack to be created automatically +or by the far address of initial stack frame when you want to set up the stack +manually. When no stack is defined, the stack of default size 4096 bytes will +be created. + "heap" directive should be followed by a 16-bit value defining maximum size +of additional heap in paragraphs (this is heap in addition to stack and +undefined data). Use "heap 0" to always allocate only memory program really +needs. Default size of heap is 65535. + + +2.4.2 Portable Executable + +To select the Portable Executable output format, use "format PE" directive, it +can be followed by additional format settings: use "console", "GUI" or +"native" operator selects the target subsystem (floating point value +specifying subsystem version can follow), "DLL" marks the output file as a +dynamic link library. Then can follow the "at" operator and the numerical +expression specifying the base of PE image and then optionally "on" operator +followed by the quoted string containing file name selects custom MZ stub for +PE program (when specified file is not a MZ executable, it is treated as a +flat binary executable file and converted into MZ format). The default code +setting for this format is 32-bit. The example of fully featured PE format +declaration: + + format PE GUI 4.0 DLL at 7000000h on 'stub.exe' + + To create PE file for the x86-64 architecture, use "PE64" keyword instead of +"PE" in the format declaration, in such case the long mode code is generated +by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then one or more section flags can +follow. Available flags are: "code", "data", "readable", "writeable", +"executable", "shareable", "discardable", "notpageable". The origin of section +is aligned to page (4096 bytes). Example declaration of PE section: + + section '.text' code readable executable + +Among with flags also one of the special PE data identifiers can be specified +to mark the whole section as a special data, possible identifiers are +"export", "import", "resource" and "fixups". If the section is marked to +contain fixups, they are generated automatically and no more data needs to be +defined in this section. Also resource data can be generated automatically +from the resource file, it can be achieved by writing the "from" operator and +quoted file name after the "resource" identifier. Below are the examples of +sections containing some special PE data: + + section '.reloc' data discardable fixups + section '.rsrc' data readable resource from 'my.res' + + "entry" directive sets the entry point for Portable Executable, the value of +entry point should follow. + "stack" directive sets up the size of stack for Portable Executable, value +of stack reserve size should follow, optionally value of stack commit +separated with comma can follow. When stack is not defined, it's set by +default to size of 4096 bytes. + "heap" directive chooses the size of heap for Portable Executable, value of +heap reserve size should follow, optionally value of heap commit separated +with comma can follow. When no heap is defined, it is set by default to size +of 65536 bytes, when size of heap commit is unspecified, it is by default set +to zero. + "data" directive begins the definition of special PE data, it should be +followed by one of the data identifiers ("export", "import", "resource" or +"fixups") or by the number of data entry in PE header. The data should be +defined in next lines, ended with "end data" directive. When fixups data +definition is chosen, they are generated automatically and no more data needs +to be defined there. The same applies to the resource data when the "resource" +identifier is followed by "from" operator and quoted file name - in such case +data is taken from the given resource file. + The "rva" operator can be used inside the numerical expressions to obtain +the RVA of the item addressed by the value it is applied to. + + +2.4.3 Common Object File Format + +To select Common Object File Format, use "format COFF" or "format MS COFF" +directive whether you want to create classic or Microsoft's COFF file. The +default code setting for this format is 32-bit. To create the file in +Microsoft's COFF format for the x86-64 architecture, use "format MS64 COFF" +setting, in such case long mode code is generated by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then one or more section flags can +follow. Section flags available for both COFF variants are "code" and "data", +while "readable", "writeable", "executable", "shareable", "discardable", +"notpageable", "linkremove" and "linkinfo" are flags available only with +Microsoft COFF variant. + By default section is aligned to double word (four bytes), in case of +Microsoft COFF variant other alignment can be specified by providing the +"align" operator followed by alignment value (any power of two up to 8192) +among the section flags. + "extrn" directive defines the external symbol, it should be followed by the +name of symbol and optionally the size operator specifying the size of data +labeled by this symbol. The name of symbol can be also preceded by quoted +string containing name of the external symbol and the "as" operator. +Some example declarations of external symbols: + + extrn exit + extrn '__imp__MessageBoxA@16' as MessageBox:dword + + "public" directive declares the existing symbol as public, it should be +followed by the name of symbol, optionally it can be followed by the "as" +operator and the quoted string containing name under which symbol should be +available as public. Some examples of public symbols declarations: + + public main + public start as '_start' + +2.4.4 Executable and Linkable Format + +To select ELF output format, use "format ELF" directive. The default code +setting for this format is 32-bit. To create ELF file for the x86-64 +architecture, use "format ELF64" directive, in such case the long mode code is +generated by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then can follow one or both of the +"executable" and "writeable" flags, optionally also "align" operator followed +by the number specifying the alignment of section (it has to be the power of +two), if no alignment is specified, the default value is used, which is 4 or 8, +depending on which format variant has been chosen. + "extrn" and "public" directives have the same meaning and syntax as when the +COFF output format is selected (described in previous section). + The "rva" operator can be used also in the case of this format (however not +when target architecture is x86-64), it converts the address into the offset +relative to the GOT table, so it may be useful to create position-independent +code. + To create executable file, follow the format choice directive with the +"executable" keyword. It allows to use "entry" directive followed by the value +to set as entry point of program. On the other hand it makes "extrn" and +"public" directives unavailable, and instead of "section" there should be the +"segment" directive used, followed only by one or more segment permission +flags. The origin of segment is aligned to page (4096 bytes), and available +flags for are: "readable", "writeable" and "executable". + + +EOF \ No newline at end of file diff --git a/data/eng/docs/HOT_KEYS.TXT b/data/eng/docs/HOT_KEYS.TXT new file mode 100644 index 0000000000..ba08147e8d --- /dev/null +++ b/data/eng/docs/HOT_KEYS.TXT @@ -0,0 +1,10 @@ +The following "hot" shortcut keys are used in the system: +(Indexing on time of appearance in the system) +1) Ctrl + Alt + Del start of the application CPU (the manager of processes), is a sole combination maintained on a level of a kernel, all rest "hot" key is realized at the expense of the application @PANEL. +2) Ctrl + Shift - switching of keyboard layout. +3) Win - start of the application MENU. +4) Alt + Ctrl + F12 - start of the application END. +5) Alt + F4 - terminate the active application. +6) Alt + Tab - switch to the next (in the window stack) window +7) Alt + Shift + Tab - switch to the previous (in the window stack) window +8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on (note: mousEmul does not create window or pictures to indicate its work!) diff --git a/data/eng/docs/INI.TXT b/data/eng/docs/INI.TXT new file mode 100644 index 0000000000..f906363c7e --- /dev/null +++ b/data/eng/docs/INI.TXT @@ -0,0 +1,25 @@ +Ini-files are text files of special contents: + +[name of first section] +Key1=value1 +Key2=value2 +;comment +[name of second section] +Key3=value3 + +All lines beginning with ';' are considered as comments and ignored. + +Keyboard shortcuts are described as follows: +any number of modificators Ctrl/Alt/Shift/LCtrl/LAlt/LShift/RCtrl/RAlt/RShift, +followed by latin letter, digit or key name. The following keys have a name: +F1 - F12 +Home; End; PgUp; PgDn; Ins, equivalently, Insert; Del, equivalently, Delete; +Tab; Plus; Esc; Enter; Backspace; Space; +Left (left arrow); Right (right arrow); Up (up arrow); Down (down arrow). +The string for shortcut is case-insensitive. Parts of the string +can be written without delimiters or with '+' between parts. Examples: +Ctrl+Alt+Backspace +RCtrl+RShift +ShiftA +f10 +shiftalt5 diff --git a/data/eng/docs/KFAR_KEYS.TXT b/data/eng/docs/KFAR_KEYS.TXT new file mode 100644 index 0000000000..d21d24ce41 --- /dev/null +++ b/data/eng/docs/KFAR_KEYS.TXT @@ -0,0 +1,94 @@ +Control keys in KFar. +For panels: +arrows, Home, End - move cursor on active panel +Tab - change active panel +Enter - enter to folder or run program under cursor +F3 - view file under cursor +F5 - copy selected items or item under cursor to another panel +Shift+F5 - copy selected items or item under cursor to the same panel + (of course, you must specify another file name) +F7 - create folder +F8 - delete selected elements or element under cursor +F10 - exit +Alt+F1/Alt+F2 - change drive on left/right panel +Alt+F9 - resize window to maximum possible size and restore initial size +Ctrl+F3 - sort file/folders on active panel by name +Ctrl+F4 - sort by extension +Ctrl+F5 - sort by date/time of last modification +Ctrl+F6 - sort by size +Ctrl+F7 - don't sort (display in order as on disk) +Ctrl+F8 - sort by date/time of creation +Ctrl+F9 - sort by date/time of last access +F12 - display screens menu +Ctrl+R - refresh active panel +Menu - display context menu for file under cursor +LeftCtrl+1/2/3/4 - select panel mode (brief/medium/full/wide) +RightCtrl+0..9 - go to folder specified in the section [FolderShortcuts] + of ini-file as Shortcut0..9 accordingly +Insert - select/deselect current element +Grey[+] - select files and folders with mask +Grey[-] - deselect files and folders with mask +The mask is like "*.asm,*.inc|template.asm" (which selects all files with +extensions ASM and INC except for template.asm): one or more elementary +including masks with standard mean of '*' and '?', delimited by ',' or ';', +optionally followed by '|' and one or more elementary excluding masks. +The mask "*.*" specifies all files having '.' in name (i.e. files with +any non-empty extension); to specify all files use "*". +Grey[*] - invert selection +Alt+ - position cursor on name of file/folder, +beginning from selected letter or digit; it shows fast find window, +in which one can enter subsequent symbols of file/folder name to more precise +selection, and also Ctrl+Enter/Shift+Ctrl+Enter to move to the next/previous +panel item, whose name starts with specified letters + +For viewer: +Esc = F3 = F10 = Numpad5 - exit +Down - line down +PgDn - page down +Up - line up +PgUp - page up +Home - to begin of file +End - to end of file +Left - character left +Right - character right +Ctrl+Left - in Text-mode 20 characters left; + in Hex-mode 1 byte left +Ctrl+Right - in Text-mode 20 characters right; + in Hex-mode 1 byte right +Ctrl+Shift+Left - start of lines on the screen +Ctrl+Shift+Right - end of lines on the screen +F2 - toggle line wrap +F4 - toggle Text <-> Hex mode +F8 - toggle encoding cp866 (DOS) <-> cp1251 (Win) +Shift+F8 - encoding tables menu +F12 - display screens menu +F7 - search a string from the current position in the file + (the string and settings are set in the following dialog) +Shift+F7 - continue to search a string + (use the string and settings from last search by F7) +Alt+F9 - resize window to maximum possible size and restore initial size + +For editor: +Esc = F10 - exit; if the file was modified, the question about save necessity + will follow +Shift+F10 - save and exit +F2 - save the file +Down - move cursor down to one line +PgDn - move cursor down to one page +Up - move cursor up to one line +PgUp - move cursor up to one page +Left - move cursor left to one symbol +Right - move cursor right to one symbol +Home - move cursor to the beginning of the current line +End - move cursor to the end of the current line +Backspace - delete the symbol before the cursor +Del - delete the symbol under the cursor +Ins - toggle insert/replace mode when entering symbols +F12 - display screens menu +Alt+F9 - resize window to maximum possible size and restore initial size +F7 - search a string starting from the position next to the cursor + (the string and search settings are prompted in the following dialog) +Shift+F7 - continue to search a string (same as F7 without settings dialog) + + diamond + mailto:diamondz@land.ru diff --git a/data/eng/docs/MTDBG.TXT b/data/eng/docs/MTDBG.TXT new file mode 100644 index 0000000000..975bbefb8e --- /dev/null +++ b/data/eng/docs/MTDBG.TXT @@ -0,0 +1,214 @@ +Introduction. + +mtdbg is a debugger for Kolibri operating system. This documentation describes +debugger features and work with it. If you need some features which are +not presented yet, either write to the forum meos.sysbin.com (if you can +read russian texts) or mail me to address given in the end of this file. + +General description. + +In each moment of time mtdbg can debug only one program. I will call it +loaded program. If no program is loaded, overwhelming majority of debugging +actions is disabled. + +mtdbg is controlled by command line, entering from keyboard. Command line +is drawn in the bottom part of debugger window. Debugger handles standard +input keys Backspace,Delete,Home,End,left/right arrows. +Commands are case-insensitive. Delimiter is arbitrary nonzero number of spaces. + +At any moment mtdbg can be terminated by command "quit" (without arguments). +You can also simply press to close button in the right upper corner of window. + +When debugger is started without command string parameters, no program is +loaded. Also mtdbg can be started with command string, in this case it tries +to load program with the name pointed to in first parameter in command string +and parameters pointed to following (if present). + +If no program is loaded, you can load a program with the command +load [] +Examples: +load /rd/1/example +LOAD /rd/1/aclock w200 h200 + LoaD /hd0/1/menuetos/dosbox/dosbox +All that stays after first space after executable file name, is exactly passed +to program as command string. +The command "load" reports result in the messages window (a little higher +than command line window). If program was loaded successfully, there will +be the appropriate message; otherwise the message will contain error reason. +Most probable error is "file not found" if wrong file name is given. + +The debugger can load files with information on symbols in the program +(labels, global variables) - text files, each line of which has format +0x +(lines, which do not have such format, are ignored). Such file can be created +by hand or generated automatically by fasm. Evident load can be done by command +load-symbols +Furthermore, when the debugger executes the command "load", it checks for +presence of file with name as of loading binary and extension '.dbg' +(/rd/1/example.dbg in the first of examples above), and if such file exists, +the debugger loads it automatically (with the message "Symbols loaded", if +all is OK). + +It can happen so that loaded program is packed. General principle of +program packing is following: at first input file is packed (by some +pack algorithm), then is appended small code which gets control at program +start, unpacks input code in the memory and then passes control to it. +If program is packed, it "real" code is not visible and for debugging it is +needed previously to pass through unpacker code. +mtdbg determines most of existing packers (mxp,mxp_lzo,mxp_nrv,mtappack) +and in this case suggests to automatically go to "real" code. It is recommended +to accept (press 'y' or ), but you can refuse too. At refusal and if +program is packed by something unknown the command "unpack" (without arguments) +can be used. Call it only in the case when you are sure that program is packed +and control has not already went to main code! [Starting from Kolibri 0.6.5.0, +this paragraph is no more actual, because one can pack applications as all +binary files with kpack and the unpacker code in this case is located in the +kernel and is transparent for debug.] + +Loaded program can be terminated by the command "terminate" (without +arguments). The command "detach" (without arguments) detaches from program, +after that program continues execution normally, as if there was no debugger. +After both this commands program stops to be debugged. + +It is possible to anew load program for debugging by the command "reload" +(without arguments). If there is already loaded program, it is terminated +and new instance is started (from the beginning) (with the same command +string), in this case the command is similar to the commands +terminate +load +Otherwise is loaded anew latest program, which was debugged (in the current +seance of work with mtdbg) (with the same command string), i.e. is similar to +load , +but the command "reload" in both cases is shorter and more convenient; +moreover, "load" thinks that new program is loaded and moves data window +(see below) to zero address, and "reload" keeps current address. + +The command "help", which can be shorten to "h", is always available. +All commands are divided on groups. +"help" without arguments displays the list of command groups. +"help" with group name displays the list of commands in this group with short +comments. +"help" with command name displays information about given command. +Examples: +help +help control +h LoaD + +The debugger window consists from the following items enumerated from up +to down: +- status string. If there is loaded program, shows its name and state + ("Running/Paused"), otherwise reports "No program loaded". +- registers window - shows values of general-purpose registers, register eip + and states of single flags: CF,PF,AF,ZF,SF,DF,OF: if flag is cleared, then + is displayed lower-case letter, if flag is set, then upper-case one. + Registers which are changed from previous moment are highlighted in green. +- data window (dump window) - shows memory contains of loaded program +- code window (disassembler window) - shows program code as disassembled + instructions +- messages window +- command line window + +Dump window can display data starting from any address, to this serves +the command +d +The command "d" without arguments flicks dump window down. +The same is for code window and the command +u +or simply "u". +Examples: +d esi - displays data at address esi (e.g. is useful before execution of + instruction rep movsb) +d esp - displays stack +u eip - disassembles instruction starting from the current + +Expressions in mtdbg can include +- hexadecimal constants +- names of all general-purpose registers (8 32-bits, 8 16-bits and + 8 8-bits) and register eip; values of 16- and 8-bits registers are padded + with zeroes to 32 bits +- four arithmetic operations +,-,*,/ (with standard priorities) and + brackets +- [if symbols information was loaded] names, loaded from dbg-file +All calculations are realized modulo 2^32. +Examples of expressions: +eax +eip+2 +ecx-esi-1F +al+AH*bl +ax + 2* bH*(eip+a73) +3*esi*di/EAX +The command +? +calculates value of specified expression. + +Values of registers in loaded program can be changed by the command "r", which +has two absolutely equivalent forms: +r +r = +(in both cases you can place spaces as you want). Register can be any of +above-mentioned - 24 general-purpose registers and eip. + + +Let us assume that the command "load" was successfully load program for +debugging. +Immediately after loading program is suspended and does not execute. +Press Ctrl+F7 (command-line analog is the command "s") to make one step +in loaded program, after that control returns to debugger which displays +new contains of registers and memory. The system call "int 40h" is considered +as one step. +Pressing Ctrl+F8 (command-line analog is the command "p") also makes step in +loaded program, but procedure calls, string operations with prefix +rep/repz/repnz and 'loop' cycles are executed as one step. +The one-step commands are used usually on single program sections, +when it is needed, for example, to regularly trace registers value and/or +some variables in memory. +The command +g +resumes program execution and waits until control goes to eip=given address, +and in this moment suspends program. The command "g" without arguments +simply resumes execution. + +To suspend program use the command "stop" (without arguments). + +In the typical situation it is required that program is executed normally, +but when some conditions are satisfied, program suspends and debugger receives +control. The corresponding conditions are called breakpoints or simply breaks. +Primary type of breakpoints is to concrete address, i.e. stop execution at +eip=. Such breakpoints are set by the command +bp +Note that if there is only one such breakpoint, there is more convenient to use +the command "g" with argument instead. + +Other type of breakpoints is on access to given memory area. Maximum +numbers of such breakpoints is 4 (because hardware features of x86 processors +are used and they allows only 4). +bpm - breaks at any access to byte at given address +bpm w - breaks at write to byte at given address +bpmb,bpmw,bpmd - breaks to access correspondingly to byte, word +or dword at given address. bpm и bpmb are synonyms. When bpmw,bpmd are used, +address must be aligned according to correspondingly word bound (i.e. be even) +or dword bound (i.e. be divisible by 4). +bpmb,bpmw,bpmd w - similar to break on write. + +To see the list of set breakpoints use the command "bl", to obtain information +on concrete breakpoint use "bl ". Unnecessary breakpoints can be +deleted with the command "bc ", temporarily unnecessary can be +disabled by the command "bd ", when they will be needed again, +use the command "be ". + +Remarks. + +1. When debugging your own programs you can put in code instructions + int3 (pay attention to absence of space!). Such instruction causes + exception at normal run, which leads to process termination, but + at work under debugger it is simply activated (with the message + "int3 command at xxx"). This feature allows to not think about addresses + to use in the commands g and/or bp. +2. All output and all input is oriented on hexadecimal scale of notation. +3. When program is executed, registers and data window shows information + regarding to moment before resume; you can not set registers value in this + mode. Nevertheless the command "d" in this mode shows information that + was true in the moment of command delivery. + + diamond + mailto:diamondz@land.ru diff --git a/data/eng/docs/README.TXT b/data/eng/docs/README.TXT new file mode 100644 index 0000000000..d8d770e76c --- /dev/null +++ b/data/eng/docs/README.TXT @@ -0,0 +1,268 @@ + ************************ + * Kolibri OS 0.7.7.0+ * + * February 2010 * + ************************ + + The latest release of the OS is available on the official site: + http://kolibrios.org + + If you have questions - look for support on our forum: + http://board.kolibrios.org (rus+eng) + + *********************************** + * What is new in this release? * + *********************************** + + The following changes, revisions, fixes in the kernel have been made: + + From Evgeny Grechnikov (Diamond) - Russian Federation + 1) Improvement of drives detection using BIOS service (V86) + 2) Kernel bugfixes. + + From Sergey Semyonov (Serge) - Russian Federation + 1) Driver for ATI videocards updated. + 2) Linux-like kernel mutexes + + From Mihail Semenyako (mike.dld) - Republic of Belarus + 1) Refactoring of window subsystem. + + From + 1) Processing API functions in order to completely remove the shift-register-call + 2) Refactoring, optimization, bugfixes of some places in the kernel. + + From A.Jerdev (art_zh) - United Kingdom + 1) Memory-mapped I/O (MMIO) access from the userworld. + 2) PCIe Extended configuration space access (auto-adjust for AMD-NPT since Athlon64). + + From turbanoff + 1) Read from ext2fs/ext3fs. + + From Marat Zakiyanov (Mario79) - Russian Federation + 1) Improvements in the processing of mouse clicks. + + From hidnplayr + 1) Rewriting of the entire network subsystem. + + From Asper + 1) Drivers for the sound cards VT823(X) and EMU10K1X. + + From tsdima + 1) Driver for the sound card ForteMedia fm801. + + From Maxis + 1) changes in free memory checks. + + + + + + The following changes, revisions, fixes in applications have been made: + + * New versions of applications and new applications: + + FTPS - tsdima, some improvements + VIEW3DS - macgub, version 0.054 + FASM - Pavel Rymovski (Heavyiron), updated to version 1.69.11 + IgorA, use the library box_lib, russification, + Marat Zakiyanov (Mario79) fix bugs encountered + Evgeny Grechnikov (Diamond), fix of window wrapping + PCIDEV - art_zh, MMIO sample dumps added; vendors database + trimmed to reduce the distro size. + BOARD - Evgeny Grechnikov (Diamond), do not throw out existing + messages at the program start + UNVWATER - Asper, demo ported from OctaOS + (the author is Octavio Vega Fernandez). + HEED - staper, version 0.14: use the library box_lib; + Ctrl+C/X/V, Ctrl+B to select a block + Marat Zakiyanov (Mario79), using of OpenDialog component, + little optimization of the code + SHELL - Albom, version 0.4.2 + CPU - Evgeny Grechnikov (Diamond) at the suggestion of + Kirill Lipatov (Leency), do not show system processes + by default + HTMLV - Kirill Lipatov (Leency), version 0.62a + EOLITE - Kirill Lipatov (Leency), version 0.98.7a + RTFREAD - Sorcerer, cosmetic fix + dunkaist, menu_bar and scroll_bar from box_lib, 'end' hotkey + E80 - Albom, version 0.5.1 + KIV - Evgeny Grechnikov (Diamond), file name in the window + title, configurable keyboard shortcuts for next/prev + images in the current folder + SUDOKU - staper, port of Sudoku game - that is a puzzle with digits, where you + have to fill free cells with digits from 1 to 9 so that every row, + every column and every small square 3x3 contain each digit just one time. + There are 9 levels in the game. + REVERSI - staper, port of strategy game Reversi (Othello) + MSQUARE - staper, math puzzle "magic square": sum of the numbers in rows, columns + (less often in diagonals) should be equal + FINDN-S - Artemonische, a simple game in which you have to collect all the numbers + in the order of 10 to 90 + PANEL - Evgeny Grechnikov (Diamond), a little change in the panel clock + and reanimation of backlight on the Alt+[Shift+]Tab press. + AC97SND - Asper, support of playlists in m3u format. + @NOTIFY - SoUrcerer, program for popup text messages + DOSBOX - Evgeny Grechnikov (Diamond), version 0.74 + ASCIIVJU - Konstantin Dutkevich (Nazarus), program shows ASCII table + PIPETKA - Rock_maniak_forever, program to get color of a pixel on the screen + SNAKE - dunkaist, yet another implementation of classic game + + + + + * New versions of dynamic libraries and new dynamic libraries: + libini - Evgeny Grechnikov (Diamond), added function to read + keyboard shortcuts + box_lib - IgorA, update component tree_list, new component + text_editor, documentation on the library + Marat Zakiyanov (Mario79) refinement of ОpenDialog component, rewriting + of some applications to use it, new component PathShow + + + +/-----------------------------------------------\ +* Dates of publication of the distribution kits * +\-----------------------------------------------/ + +RE N1 30.08.2003 +RE N2 07.10.2003 +RE N3 26.11.2003 +RE N4 23.12.2003 +RE N5 15.02.2004 +RE N6 27.03.2004 +KOLIBRI N1 16.05.2004 +RE N7 11.06.2004 +KOLIBRI N2 28.08.2004 +RE N8 01.12.2004 +KOLIBRI N3 22.02.2005 + Beta 2: 20.03.2005 +KOLIBRI N4 07.06.2005 +KOLIBRI 0.5.0.0 04.10.2005 + 0.5.1.0 12.10.2005 + 0.5.2.0 02.12.2005 + 0.5.3.0 18.03.2006 + 0.5.8.0 09.07.2006 + 0.5.8.1 25.07.2006 + + 0.6.0.0 04.09.2006 + 0.6.3.0 31.10.2006 + 0.6.5.0 14.02.2007 + + 0.7.0.0 07.06.2007 + 0.7.1.0 23.09.2007 + 0.7.5.0 31.01.2009 + 0.7.7.0 13.12.2009 + +/----------------\ +* KolibriOS TEAM * +\----------------/ + +This list contains all, who has actively helped to creation and development +of KolibriOS, whoever possible. + (people are enumerated in the order by time of participation in the project, + from bottom to top - from past to future, through present) + +* Trans \ +* VaStaNi | +* Ivan Poddubny | +* Marat Zakiyanov (Mario79) | +* Mihail Semenyako (mike.dld) | system programming +* Sergey Kuzmin (Wildwest) | +* Andrey Halyavin (halyavin) | loaders, +* Mihail Lisovin (Mihasik) | kernel improvements and so on +* Andrey Ignatiev (andrew_programmer) | +* NoName | +* Evgeny Grechnikov (Diamond) | +* Iliya Mihailov (Ghost) | +* Sergey Semyonov (Serge) | +* Johnny_B | +* kasTIgar | +* SPraid | +* Rus | +* Alver | +* Maxis | +* Galkov | +* CleverMouse | +* tsdima | +* turbanoff | +* Asper | +* art_zh / + +* Mihail Lisovin (Mihasik) \ +* Andrey Ivushkin (Willow) | +* Mihail Semenyako (mike.dld) | +* Pavlushin Evgeny (Exis) | +* Ivan Poddubny | application programming +* Marat Zakiyanov (Mario79) | +* Sergey Kuzmin (Wildwest) | +* Andrey Halyavin (halyavin) | creation of new, +* Hex | port of existing +* Andrey Ignatiev (andrew_programmer) | or revisions of old +* ealex | applications for Kolibri +* Olaf | +* Evgeny Grechnikov (Diamond) | +* Navanax | +* Johnny_B | +* Pavel Rymovski (Heavyiron) | +* Vitaly Bendik (mistifi(ator) | +* Iliya Mihailov (Ghost) | +* Maxim Evtihov (Maxxxx32) | +* Vladimir Zaitsev (Rabid Rabbit) | +* vectoroc | +* Alexey Teplov () | +* Sergey Semyonov (Serge) | +* YELLOW | +* iadn | +* Maciej Guba (macgub) | +* Mario Birkner (cYfleXX) | +* hidden player (hidnplayr) | +* trolly | +* nilgui | +* kaitz | +* DedOk | +* SPraid | +* Rus | +* Alver | +* Dron2004 | +* Gluk | +* Aleksandr Bogomaz (Albom) | +* Kirill Lipatov (Leency) | +* Vasiliy Kosenko (vkos) | +* IgorA | +* staper | +* chaykin | +* Alexander Meshcheryakov | + (Self-Perfection) | +* CleverMouse | +* tsdima | +* art_zh | +* Asper | +* Pterox | +* Artemonische | +* dunkaist / + +* Hex \ +* Diamond / documentation + +* CodeWorld \ forum http://meos.sysbin.com +* mike.dld / site http://kolibrios.org; svn-server + +* Alexey Teplov () \ (KolibriOS logo) +* goglus | design (KolibriOS background) +* Kirill Lipatov (Leency) / (KolibriOS icons) + +* Pavel Rymovski (Heavyiron) \ +* Vitaly Bendik (mistifi(ator) | +* vectoroc | +* Veliant | testing, +* AqwAS | countenance +* Mike | +* camper | +* Dmitry the Sorcerer | +* Ataualpa | +* Maxis | +* Galkov | +* ChE / + +and others... + + KolibriOS team diff --git a/data/eng/docs/STACK.TXT b/data/eng/docs/STACK.TXT new file mode 100644 index 0000000000..9b2f1c7184 --- /dev/null +++ b/data/eng/docs/STACK.TXT @@ -0,0 +1,387 @@ +What is implemented +=================== + +The following features are present in the TCP/IP stack code: + + IP layer. + ICMP. + TCP layer. + UDP layer. + local loopback. + Realtek 8029 PCI ethernet interface. + Realtek 8139 PCI ethernet interface. + Intel i8255x PCI ethernet interface. + Dynamic ARP table. + PPP dialer + +And the following internet applcations are implemented + + HTTP Server + Telnet + POP Client + DNS Name resolver + MP3 Server + TFTP Client + IRC Client + +There are also a number of experimental applications for streaming music +and performing interprocess communication via sockets. A Web broswer is in +development + + +What is not implemented +======================= + +The IP layer does not process header options. +The IP layer does not support routing. +Packet fragmentation is not supported. + + +How to configure Kolibri for PPP +=============================== + +See ppp.txt + + +How to configure Kolibri for Ethernet +==================================== + +First, you need to have a supported ethernet card fitted, or present +on your motherboard. If you are uncertain what type of hardware you +have, try to configue the stack. If you have supported hardware it +will be found, and enabled. + +Setting Up the ARP Table +------------------------ + +Kolibri's ARP table is dynamically created and maintained; You can see what +hosts Kolibri has communicated with by running the ARPSTAT application. + +Enabling Ethernet +----------------- + +Boot Kolibri, then select STACKCFG from the NET menu. +Press the 'Read' Button, then select 'Packet Driver'. +Press 'Change' next to the IP address, and enter the IP address you want +to use. Make sure it is on the same sub-net as the LAN to which you are +connected. +Press 'Apply' to action the changes. +Close the program. + + +The stack is now running, which you can test by pinging Kolibri from a +remote host. + + +The simplest way to connect two PC's together is using a 'Null Modem' +Ethernet cable. These simply cross certain wires over. They can be +purchased from PC stores, but are simple to make. Details can be found +on the web. Look on google for 'ethernet cross over cable' or similar. + + +How to use TCP/IP locally, with no Network +========================================== + +Kolibri supports a form of local loopback that means applications on the +same PC can communicate with each other via sockets as though they +were on separate hosts. To connect to an application on the same machine, +specify the local IP address as the destination address. You do not even +need to configure the stack for ethernet; local loopback will work without +any network hardware. It's great for development and testing. + + +Application Programming Interface +================================= + +The developer can access the stack through interrupt 0x40, function 53. +The file TFTPC.ASM gives a good example of how to use the programming +interface ( at least, for UDP), but as network communication is complex +I'll give an overview. + + +Sockets +======= + +Applications connect to each other and pass information between themselves +through a mechanism called a 'socket'. Sockets are end-points for +communication; You need one at each application to communicate. + +Using sockets is a little like using files on an OS; You open them, read +and write to them, then close them. The only thing that makes life slightly +more complicated is that unlike with a file, you have something intelligent +at the other end ( which for example may not want to close when you do! ) + +Lets deal with the terminology before we go any further. + +socket A unique identifier used by the application for communication. +local port A number that identifies this application on the local host. + Ports are a way to allow multiple applications to communicate + with other hosts without the data becoming mixed up. ( The + technical term is 'multiplex' ). Port numbers are 16 bit. +remote port A number that identifies the application on the remote host + to which we are communicating with. To the remote host, this is + it's 'local port'. Port numbers are 16 bit. +IP Address A 32 bit number that identifies the remote host PC that we are + communicating with. +Passive Refers to the mode by which a socket is opened; When opening in + passive mode, the local PC is awaiting an incoming connection. +Active Refers to the mode by which a socket is opened; When opening in + active mode, the local PC will attempt to connect to a remote + PC. + +When you connect to a socket on a remote PC, you need to specify more than +just the IP address, otherwise the remote stack will not know to which +application it should send your data. You must fully qualify the address, +which means you specify the IP address and the port number. This would be +written like this + +192.168.1.10:80 ; Connect to port 80 on the machine 192.168.1.10 + +Port numbers are important. Some are 'well known' and provide access to +common applications. For example port 80 is used by HTTP servers; That +way I can connect to a webserver on a host without having to find out +what port number the application is listening on. + +This brings me to the way in which you open a socket; As I said earlier, +there are two modes, Passive and Active. A webserver would open a passive +socket, as it is waiting for incoming connection requests. A web browser +would open an active socket because it is attempting to connect to a +specified remote host. + + +Access to programming interface +=============================== +The developer accesses the stack functions through interrupt 0x40, +function 53. Some functions may be accessed through function 52, but these +are mainly for stack configuration. +Here is a summary of the functions that you may use and the parameter +definitions. + + +Get Local IP Address +-------------------- +eax = 52 +ebx = 1 + +IP address returned in eax ( in internet byte order ) + + +Write to stack input queue +-------------------------- +eax = 52 +ebx = 6 +edx = number of bytes to write +esi = pointer to data ( in application space ) + +On return, eax holds 0 for OK, or 0xFFFFFFFF for error. +This interface is for slow network drivers only ( PPP, SLIP ) + + +Read data from network output queue +----------------------------------- +eax = 52 +ebx = 8 +esi = pointer to data ( in application space ) + +On return, eax holds number of bytes transferred. +This interface is for slow network drivers only ( PPP, SLIP ) + + +Open a UDP socket +----------------- +eax = 53 +ebx = 0 +ecx = local port +edx = remote port +esi = remote ip address ( in internet byte order ) + +The socket number allocated is returned in eax. +A return value of 0xFFFFFFFF means no socket could be opened. + + +Open a TCP socket +----------------- +eax = 53 +ebx = 5 +ecx = local port +edx = remote port +esi = remote ip address ( in internet byte order ) +edi = mode : SOCKET_PASSIVE or SOCKET_ACTIVE ( defined in stack.inc ) + +The socket number allocated is returned in eax. +A return value of 0xFFFFFFFF means no socket could be opened. + + +Close a socket (UDP Only ) +-------------------------- +eax = 53 +ebx = 1 +ecx = socket number + +On return, eax holds 0 for OK, or 0xFFFFFFFF for error. + + +Close a socket (TCP Only ) +-------------------------- +eax = 53 +ebx = 8 +ecx = socket number + +On return, eax holds 0 for OK, or 0xFFFFFFFF for error. + + +Poll socket +----------- +eax = 53 +ebx = 2 +ecx = socket number + +On return, eax holds the number of bytes in the receive buffer. + + +Read socket data +---------------- +eax = 53 +ebx = 3 +ecx = socket number + +On return, eax holds the number of bytes remaining, bl holds a data byte. + + +Write to socket ( UDP only ) +---------------------------- +eax = 53 +ebx = 4 +ecx = socket number +edx = number of bytes to write +esi = pointer to data ( in application space ) + +On return, eax holds 0 for OK, or 0xFFFFFFFF for error. + + +Return socket status ( TCP only ) +--------------------------------- +eax = 53 +ebx = 6 +ecx = socket number + +On return, eax holds the sockets TCP status. +This function can be used to determine when a socket has actually connected +to another socket - data cannot be written to a socket until the connection +is established (TCB_ESTABLISHED). The states a socket can be in are defined +in stack.inc as TCB_ + + +Write to socket ( TCP only ) +---------------------------- +eax = 53 +ebx = 7 +ecx = socket number +edx = number of bytes to write +esi = pointer to data ( in application space ) + +On return, eax holds 0 for OK, or 0xFFFFFFFF for error. + + +Check port number +----------------- +eax = 53 +ebx = 9 +ecx = port number + +This function is used to determine if a port number +is in use by any sockets as a local port number. Local +port numbers are normally unique. + +On return, eax is 1 for port number not in use, 0 otherwise. + + +Opening a TCP socket in Kolibri +=============================== + +There are two ways to open a socket - Passive or Active. + +In a Passive connection your application 'listens' for incoming +requests from remote applications. Typically this will be done when +you are implementing a server application that allows any other +application to connect to it. You would specify a 'known' local +port number, such as 80 for a web server. You would leave the +remote IP and remote port number as 0, which indicates any +remote application may connect. + +Once the socket has been opened you would wait for an incoming +connection before doing anything. This can be by either checking +the socket status for TCB_ESTABLISHED, or waiting for data in the +receive buffer. + +In an Active connection, you are making a connection to a specified +remote port. The remote IP and remote port parameters must be filled +in with non-zero values ( otherwise, what are you connecting to? ). +You also specify a unique local port number so the remote application +can uniquely identify you - after all, there may be several applications +on your machine connected to the same remote host. See below for finding +a unique port number. + + +How to find an unused local port number +======================================= + +Typically when you are creating an active connection to a remote +socket you will want to choose a unique local port number. Local +port numbers normally start from 1000; The following code may +be used to obtain an unused port number prior to making the +open socket call. + + mov ecx, 1000 ; local port starting at 1000 + +getlp: + inc ecx + push ecx + mov eax, 53 + mov ebx, 9 + int 0x40 + pop ecx + cmp eax, 0 ; is this local port in use? + jz getlp ; yes - so try next + + ; ecx contains a free local port number + + + +Writing data to a socket +======================== + +There are two functions available depending on whether the socket +was opened for TCP or UDP protocol; The call parameters are the +same however. When the socket is being opened for TCP, use the +status function to poll for a connection - data cannot be written +to a socket until another socket has connected to it, and the +state of the socket is TCB_ESTABLISHED. + +When you write data, the call results in a single IP packet being +created and transmitted. Thus the user application is responsible for +the size of transmitted packets. Keep the packet sizes under 768 bytes. +If you are writing a terminal program like telnet, you may want to send +a packet for each keystroke ( inefficient ) or use a timer to send data +periodically ( say, every second ). + + +Reading data from a socket +========================== + +There is one function to read data from a sockets receive buffer. This +function retrieves one byte at a time. You can use the poll function to +test the receive buffer for data. + + +Closing a socket +================ + +Simply call the appropriate function - there is one for TCP, and another +for UDP. When closing a TCP socket, don't forget that the other end +may continue to send data, so the socket may remain active for a +few seconds after your call. + + +If you have any questions or have suggestions for improving this +document please contact me at mikeh@oceanfree.net. diff --git a/data/eng/docs/VRR_ENG.TXT b/data/eng/docs/VRR_ENG.TXT new file mode 100644 index 0000000000..8a2e9ec850 --- /dev/null +++ b/data/eng/docs/VRR_ENG.TXT @@ -0,0 +1,104 @@ +Vertical Refresh Rater + +Version 2.0 + +Copyright (C) 2003, Trans + + +Text Version 1.1 (02.08.03) + +Win text (cp1251). (DOS codepage text - see down.) +------------------------------------------------------------------------------- + +Contents: +1. Why it need? +2. Installation. +3. Using. +4. FAQ. +5. Support. + +1. Why it need? +--------------------- +The problem of "60 Hz" is falling stand before of users of MeOS in modern condisions. +As a rule, most modern computers consist of 17" monitor (all written later is not actual +for owners of LCD monitors). If on 14" or 15" monitors the problem of "60 Hz" not a +main, but with 17" monitor it's a most pantfull. And with more size monitors I have no +words for discusion: it's a slade-show. Of couse, all of the upper correlated with +standart interface of VESA. As for VESA 3.0 - yes, interface have more rich features, +but it have no possiblity of change videomode in protect mode (the Virtual86 not realized +in MeOS !!!!!). + +The MeOS not known as a detected devices on boot, it setting of standard VESA videomode +with 60 Hz vertical refrash rate ! + +This programm is a FreeWare. And distribute "AS IS ...". Author not +carreing responsibility for probable damage :) . + +!!!!!_Warning_!!!!!: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! On this time programm have a EXPERIMENTAL status (!). And this reason you have a ! +! chance destroy own device (monitor). Espesialy this taking attantionall users with ! +! monitor without of rate protection. ! +! If you decide using this util I have a suggestion: fill of information form and ! +! send me. ! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2. Installation. +----------------- +Extract file VRR (it's ordinary executed MeOS file) from archive and situated it on +C:\ root or MeOS floppy. In main, VRR may situated on any directory (you must have +possibility run this file under MeOS). + + +3. Using. +---------- +The VRR is a standard executed file of Menuet Operation System. You may send on +execute this file by SYSTREE or MASH. + +After redraw of programm window will be present of current vertical refrash rate +and table with possibiling videoregimes. It's sorrably, table have VERY small +videomode (the programm is experimental). + + Change of videomode + ~~~~~~~~~~~~~~~~~~~~~ +You may select interesting videomode using _ONLY_ numerical keys: 1,2,3,4 and 5. +In a first step you must select resolution of videoregime. In a second step - need +select of vertical refresh rate. All changes are indicated on screen in a the +programm window. After select videomode, to set mode you must press "Enter" or +button "Ok". Notification: in this time all executing MeOS programs will be +killing. It this needed for minimize artefacts of the screen. After change videomode +you have a two way. First way: you can not any doing and after 13 seconds waiting +return last videomode. Second way: press two-three time any key or some time mouse +click on artefacts of VRR (or this plase) and fixing selected mode. Also you have +possibility modification of horizontal screen size by button "Left"\"Right" or keys +"+\-". For correcting your select you may use button "Cancel". + +Also in programm realized return at initial videomode with 60 Hz vertical refresh +by button "Default". And you may return in last videomode by button "Return" or +key "r" + +Note: +~~~~~~ +In this time programm may change vertical refresh rate _ONLY_ by lowing screen +resolution, because this method will be using at most part videocard +(VGA, SVGA or modern) + +Example: +If you have videomode 1024x768x60Hz and if you want select 800x600x95Hz, you must +press key "3" and key "1". After that key "Enter" or button "Ok". And after redraw +screen two time click on last program window position. If need using button +"Left\Right" for correcting horizontal size. + +4. FAQ. +---------- + +5. Supports. +---------------- +All questions, notes and wishs you may send to author by following e-mail: + + transafe@rambler.ru + transafe@chat.ru + trans397@yahoo.com + +Using with enjoy! +Trans. diff --git a/data/eng/drivers/atikms.dll b/data/eng/drivers/atikms.dll new file mode 100644 index 0000000000000000000000000000000000000000..f3dc7b8ccfd25b9939552504a4f28196c27130fc GIT binary patch literal 132402 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 literal 0 HcmV?d00001 diff --git a/data/eng/e80 b/data/eng/e80 new file mode 100644 index 0000000000000000000000000000000000000000..4460b3036f2305e655db287e94a91577a3267499 GIT binary patch literal 27021 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 literal 0 HcmV?d00001 diff --git a/data/eng/fonts/char.mt b/data/eng/fonts/char.mt new file mode 100644 index 0000000000000000000000000000000000000000..df1cbd9a5700890d92cbb14d4ce320cee0d73f82 GIT binary patch literal 2304 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 ACIA2c literal 0 HcmV?d00001 diff --git a/data/eng/games/checkers b/data/eng/games/checkers new file mode 100644 index 0000000000000000000000000000000000000000..ddf9409e5e81a34ac4bf702001be887d6cb93e21 GIT binary patch literal 24758 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 nVch;W*>7N@bgLuzpGnOoBy$){a6z00000%ED9^ literal 0 HcmV?d00001 diff --git a/data/eng/games/gomoku b/data/eng/games/gomoku new file mode 100644 index 0000000000000000000000000000000000000000..f4c0a48176a38b92c912135b20573853cf20284a GIT binary patch literal 1389 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 literal 0 HcmV?d00001 diff --git a/data/eng/games/kosilka b/data/eng/games/kosilka new file mode 100644 index 0000000000000000000000000000000000000000..dbb7caad2c6d2e551fc587e1c7863cdc65ed2ec1 GIT binary patch literal 7483 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 F001t2fA0VQ literal 0 HcmV?d00001 diff --git a/data/eng/games/kosskin.gfx b/data/eng/games/kosskin.gfx new file mode 100644 index 0000000000000000000000000000000000000000..bb40014f13936ebe091d177e7d8a89ad24d63f80 GIT binary patch literal 13824 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 C+_FLd literal 0 HcmV?d00001 diff --git a/data/eng/games/lights b/data/eng/games/lights new file mode 100644 index 0000000000000000000000000000000000000000..fad55b5352bd750fcd8ffaab301ed68e13433906 GIT binary patch literal 482 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 ZXu00|d6RcFA?xl+0Flt9Ccgjx00CJ5gp&XO literal 0 HcmV?d00001 diff --git a/data/eng/games/mine b/data/eng/games/mine new file mode 100644 index 0000000000000000000000000000000000000000..f9693bc3aaa58568b05416c9c622c86ebc21a00e GIT binary patch literal 1839 zcmV+~2hjLSP(w>p4FCXv00001Mv*2LLXK;4&&M}uw68P%+lNI;Spd*dRsQc;2Cv5F zV$iX%Yg(0emz&2JXICZ6t~3)_76d_DzW@DfIxkYxaYpnbCA*7ZB5Jsxb9Spsw0H7K z5|37RB%&8odk^z;LMT@CXhNEbSs+x1Mnol|v@J^S*u?z`ot*OE*rcQ8GjBiOdMFr!IP!+$c;=1Ihz1|8VO2faVYtc!_}W!0T4E+v`FbIPVL$H7XCJd!u;Kq zc>MYXqT#&{2$AYm>wQfBvXT7UiQK$k3y09%Z;GWQ9I>YWiAw5y{~=sW_VjfZ4#6&@p@ZQXrDrOsazx$DR>E$Tz}23gbfHFO{hMXEh&;2H0-!fC?)B ziK-V+Q9V}+u2^vWg!{AtVW)2Nz&v9Fhl>QntM;^^z({D@cja#BM9-7Z33t_KS7?}K5*k}&oWEm6@(-YOCycO? zaDGTWfCTs;`~h4pYRZSh>OjEavFONiqEA)6ak>^zEXVap5<37>N#w98L)s%#%v}~u zI34jxU438HdMF1g*PJC1>e*vC7#-99%du+EoyYMkPXX>{$I|Rye%{-eQ^iI8nWRua z$Y4xeNJ^Pcu_!{m8jJx|Y?$~aKV{~tl^4I57^xEy=i45)o$l@Zv3o*AHnnbAXf$?gvMNOuM=U7W8c>!hx}EjSG_vy+t2a0munN00Q{yi( z%RxR!KQuY0)F-gxn>!Ue%7*_!JdlhbbqfyWY@XKcSBA(u8o78VRr0ras#B6LU78C2 zL=bi8wD4yjaJyBNDO5HGTl-YY|W!%isL zR5|x(GDZ96r#-4RZ!#AZ4TyfDxt{yJb`m#WE+ch9F61?C5Y&G!Lwd*6zJA!;%Qxy` zXHZZ_IqN{P$tSZ;2SlfPb-c2fZC$#BPd%O3F&;6~I_v8pEX>hj=_bQ5g zv^1?>oUL*?<9kFQw9V=y3sCfD=S6U8zMNY6VzOWD7!!gz(J}$$SE}Sc9b-480cBMS z-rj1sGuWPjXj#vTsOZA5XH5Q?_}c&vZi1*Ph_7pv-F%-c0DHt$6B}g!xwE5Io=xU* dMpJD;T8DCt2WubjSzB44fr=S%0B8UJ0062yc@Y2r literal 0 HcmV?d00001 diff --git a/data/eng/games/msquare b/data/eng/games/msquare new file mode 100644 index 0000000000000000000000000000000000000000..e9f803b600173625625f2b23b8140946c0e32f04 GIT binary patch literal 1244 zcmV<21S9)PP(w>o2mkD(!JJoTTu>kgH!H*tfR@~rov zae8W=_A(XZg1A82!L@<3zGJBDZ=;V^JP=m)HOvw!dFFn>piFXSwetQ)?3x_%C7a+OKQFj1&h= zw62X1o5KUmJaWXjr0ImwTgBPwYmX@%?AD!x^^sf-V7ElSDfpkzO6*avy4<;!bwzqg zVQc!3!2rk>a~MAOhU6S(Jw{V50;D^5b7zy zyp{!Li5kATKD`^lA(WRBn0R?;u6bWL7#6_wd?0Hd@@pU6zcvB8u;IvWiZbF4_EE%h z-*OCr0n-OB20dJgFm-g_#xNeX4U~&1-j8nri{STQ>oa=}*s#)8H_oQ-93^&;FxX3Z zLH3`j(|r~Ntw_ttG1|^PrxNS&*=~&oa4E-r775#))EEC&lwxj!u_Uk^9R#M8ES4EV29 zd8ON=lD)JieJ`V~E-6QhZGzkcSEe>G;x_H1aqqkNCD!*3RdHx*3c2f3Crno|6j--N zZro}MHy>34t zL=05rjb+fcR83fhoqv>!C?@mKo~JwB6vo}J9^YSQY74iL2fRgp8i%i~%B0}#ODQ3g zl{#sJSV;9Z0w?`|U~#JhB6#xK100001Mv*2LLXK;4&&M|GrkwlV(-T=VEG)iy7TWMrBrqpw zibZNHS)@`W_Ufn`baCe2&`J)#KD~6CSMjML0)0xBRB78jd5^TnlBbXko(%Wc_>Lov zhR=rOyVy4S5P(hcqWrTu>0z@X3@}&158}HrGeacr^%C^DLEAXgNNy+!$?Z7;hXX;}Xf4t2@!zF7=qx~?7+x}p#hp}b!TUwZ=+oyV$>U#!*~ zC}lY_u|VB;FfA%X0Ai74>OS63%K%CE*bt#i7VKC3h@eWlW#Wy1uwH-JVL;K;z)c>v zJ3B>U<7>QHSG+UCoVb*B9Nm&kJyRR79iM5lO>FI(HX$I9*LsAL1sGTZAm*Ft294x9 z@`}+v?bWGHc3WY)W=ffxnx}Tv_rL&R+Gq~6&-L+rZcpPmaNsl*{1c!0VfjQ1E#Rr1 z4(MtUE{|)|+Z}m3xV`i70J~9F9))Ox>{Ydgui$5A%}y}4fplbPs+bwic1j&WnpcfsJH#23`y%JCjKm*IR)N&dI0z$lz$b z{JUnqBubyp2VEf&P{L4!*sPJx3R01^0#6KEtQd$PACHhntSqVfZo0nuCV;8eA$qR_ zY>-*}O<_;jDKqQm*#6BK{r+aVT-Uu9k~97&WGS-l+o@jj?mj@P7%Qa1w=%&@FKC>In z#a0I*LO?acqmP3Eiv`;fq9C-|=V34|-g(^?SCE(7&{ORMGxc?j^??hI{h=H=ah@8x zYXJgtG4df&xL2(}GSL1?g#LWUbo^RCFnYsk_tehq*BS2NEO2r+&>e}$&|1527g%9T zFng-+#tb39I^~_PAX_n>q?a>A3Gq{lbUr>~u{|GO;|Kp{giDz3X(uqpcSd7VD(hf( zcyFxv6HkxyE+1yTD9Ce`=Mh?b8uV+SNWY<(yYZbHZyerF6RGO3*!*nO{Hjq`c+oJO z($&?lZXa!lB>f~J9MNMLZk{GBle&8^>F|oAful~veZS5(_?Xv@BU7JsnwO6ZPciI2 z7l|E(FSYHf9_Tf@T{gMUN}D#QG&_)hT-jujQM5TtjHzy}CL%Nas{%u2JK<2eJ4!y&t-PxRD2D^!>z#4aTQRKpM1k>)I`& zpZ}%><{qvuSY7r9BxsAhj3j*Lx>e<*JKt3dx;;e98Q`j9v8Us7b@(AX2F15!dTWAVp4{jTyyWyQ7A&h`b+l}4#>K) z@-Rb_LoIA@>rFX`6Z7Y}u+RCQZOO6fH4@Z@^go0URbP!M|9vvXK5|es@7_0X4QYFy zkNF3!TPjV1&L<|o(&R^r!z)t1!~BgH3aZFns@u#vX{rlTa*QXxZuz6beU?ou0L{V7!;4%%jvT_kk8;>RB@(d(R z{PcfK#%JfswDP+xf#Y^wmeANU9OlfT`_~<~BnvsH$Ok*uCLg<+OK7->#`}_tLAt}H zGXYrFHezd`J>6q%tUDKI?{t&|=gC-ahQ59+Il}_GY&N(=IwP+|!7WOCwvQ1isTV9y zTyk+Zu3ys+t}ItUPPpnwi+pQtcb2*zLpg!f+i{O-RwkCAi^PTmM8{pLSYFQW7{9`R zP#yWfvMBeUeHCxalcqB2oGh&YfQ9t#EX0;H`t!X9mbdG`ivvPxKLl0r6P)255 z>yAu`l;I#;?7#2bvNkEbH5(-u@Uk%M5)bu&W*>Cirx~HX+YQ3WV*hJ1ZzEtG%ME)$ zsG^VD{@HzyW|GDF(i%;%GrZ3zgU68^>cJPv{}BPzP*rGGaU~PdB_-vHu#U*o!nk`HT%^rLAabzh6;MSzp1EplV~M?5^27NufTZ7%BU1rNV2e44JnrVrxd{_y*thq|?9;2-}M zqvy3exa?81;nAxeQ4AGumdvswJ%As=3&_3g){4p6dL`3j&m4n@Bd9PYRCjjClOx?xo6pFgT2on>$qggIaM>fWevEuTjp8~a{Btt^E_w9 z;S#q-2bJ?Y0ZUQ9xFBbQ5WwK0fly1Qx&5ibV2h!+bm0I5slO*wWwV^%Ex~%Vq{!-y zb0U~rCA*+};a^?=xFplOM_nV{$J+2Z8e+?kyHZ$ASPEuB=Z-?uV^VINrDDR`c#8}9 zpqoXui;KznJ3Tim{t_sbz3o{pnlVw59qonJLjw1AQ+)AL`x$Uppp{ zJh3oAYhHd`1#~80G(h;S3Xq?xtj)0*nG&l-G*btzn^EAsEvmGl#;X&D(Oe{Nsl~G< zjob?hA_*=(k4z7j^a(RpOf~jv*1_dv1N)Hl13HYUn<8xPA;7UE2@+Xdu^0%CorCQ~ zX3^?xk5?vz)id?#IgW{}vSic%=~Xy%pJbMOCBTsm3QyFvRIfZ2eai2zTukJAgv@Me zjLOCRAek*Ol&x91Q5fytRicVOPcJtiSdt{YSWvdg>#gl6P+548a&gTtwG1YU)!WDu zTiR?FF0>KcOhv5&n3q1SW|4$gE%`1YyVoQo{i^)_1w?uV^1iB80hso|a&*1I#^Z() z|CZ-ZuS+V#Y)jFmhRkB?tUAse`7_p|U%Pr2}KOyG`^A{YN@lL_3JpyjY53c(-!_{u#R>=z1CvNs$eO}}@}Fzy!q3g-1pf|QD$GaQ c8s0f8OUx@y~yOL{NR-v8v- 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 J07?J=001q<{N(@u literal 0 HcmV?d00001 diff --git a/data/eng/games/sw b/data/eng/games/sw new file mode 100644 index 0000000000000000000000000000000000000000..5a0200629e681fdd521e384b287d8a3afbcf5cfb GIT binary patch literal 1942 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 literal 0 HcmV?d00001 diff --git a/data/eng/games/xonix b/data/eng/games/xonix new file mode 100644 index 0000000000000000000000000000000000000000..2706da9bbc100f519c40fcefba6d5cfb554aecf8 GIT binary patch literal 6481 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 literal 0 HcmV?d00001 diff --git a/data/eng/graph b/data/eng/graph new file mode 100644 index 0000000000000000000000000000000000000000..4c5f8b03bf527e2acb1ebe6885967979f8918dd2 GIT binary patch literal 7822 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 g6}34qP-p9Ji39xlkMxOB9cR z9HX{qx96!4x>u_ls`g!V=2aE`VhBd(LQuo?_*G-NCUR>DmWjEp*5hgO*H<6rdYTv? zw;%)5n)9_tCHV+_Id0$e;_!&ngAQi_T?5P2V#!c(nEq+ZG7ic#X$90TcHCls++Blj#|pe4RfHPOZok{kRdVh=ETK}Rx7U($afpL zSjSB}1I)@-_Nc||o23ab(TjJuA+=^z!#B3MGzc0ytrrW$P0DX}d1&mNN_h8vwYgD}RIDxM-~o!5N)D`1D-C0#V@I+z6~=aH3s*}WsSN%s;^ zB>4;tyV&Womvr_VZW`Fp{h&X?BTZx;Aa3asu_Tj6cR758uGxt&i$?Lqh_f)}-l^zz zdHlID$mLoMqS$66Wq{#~;+Y?Or#Wr9xCrA4KG>4fCjE1kzQBt5AQtw;_5M_kBc}^! zx4DP?&ysi7$(o(MHvpK?nH=N_&h-y7Od{wJ8a)`fhm$uSL_Wu2#~4GeMXRT8UfD?P zBHbu(6N{cIDEpT$Fi2^IojHCYPPi&=_ZNBrLF4llEoe-H$}-Tofqp&^|yA#YXzej5z_?lp_qEL?Cu+w zCPO(lX?{<)_0-?AZ4?~hvTrwy2h@|!ZDijdV%Z`SCaPS=f+f%KZ?a5Tr)G4Z>UXZB zIx4;S0-Nd&W1!PGd8aE_r6cBCXa}s6=>JS9O`P)Yu)>R-T!v@C%Ho%=Jy8E&hX@i; zG25o$3t&d&;gY4(!4G6opggRP6NZ@ty#A8dMde{Ug-di^mSK$dxC3SehVB#7E#%|g z=;Q}%AR~y!(cTI22qwCH(Yz3?K_Q@W%91|+k?_96%gei^+e}y5{$;~&F{!COQL$r) zmss3nCdNG%JWRN)L%#85AeyImRwrX;Qum1VW#AZi9NyD#x-agqJ)d&th;?d}!S?XM z#{#3KLDnqdNVpIz-7uG=vVgi+U)+fB@8!K5ATt3epBvXgz(oRdnJ&t#$`k;VplLwk zo#r`u>HiUx3+Z`PN7Ts&xU#gi0eiS=75HEoR8*ILvNv;_Nbj0G!BA2AJ*ocU`9q$h x^|S<3_*61;)6WpgI1A~^c`rl((*l*KKYpi>n{;c+`p+W349RCscSHaH00P3kkD34g literal 0 HcmV?d00001 diff --git a/data/eng/htmlv b/data/eng/htmlv new file mode 100644 index 0000000000000000000000000000000000000000..bb1ba6f79c82a96be757bd8b98025ba04ca29906 GIT binary patch literal 9915 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 A{r~^~ literal 0 HcmV?d00001 diff --git a/data/eng/index_htm b/data/eng/index_htm new file mode 100644 index 0000000000..c88fcc52bb --- /dev/null +++ b/data/eng/index_htm @@ -0,0 +1,30 @@ + + + + + KolibriOS web server - default message + + +

Welcome to KolibriOS server

+

+ If you can read this with an external html-browser then Kolibri + networking is correctly set up. +

This file: /rd/1/index.htm +

+
+ + + + + + + + + + + + diff --git a/data/eng/kerpack b/data/eng/kerpack new file mode 100644 index 0000000000000000000000000000000000000000..511e23d2daab0a765ccd64373f1aee2768090f8f GIT binary patch literal 6421 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 literal 0 HcmV?d00001 diff --git a/data/eng/keymap.key b/data/eng/keymap.key new file mode 100644 index 0000000000000000000000000000000000000000..f6f2a5d8a7c5d4ee9dc1db5ee573fc521604329e GIT binary patch literal 2688 zcmXq$HZ(FeF*P%{ur$!M<=`wVPc15`EX~X>h>qp0ODs-FOV7y4&aqZcV2G)zNG?mt z%hl1-XD~5UaDeLrny_Wl4zmsBn=Q6(+`e<0qmzxxe>ZmzPcLsDUqAnVz@Xre(6I1` z$S6lAXBSr#88c}`2W1u2I5jN|&3J7N&cJZjppeK=Pyc}GTHZRxU>BfjpfOfTbqqC8 z5zb*we!ez#_Jr)WBieq30S0DB;jbNy9R3IDki!4aK|=<0c=+oQ@;^!8ucX|ss-~}@ zX=@*g9R4SO_QS*f)Ja1IEok^#Tg4Nye`tokJuLjIK|K4=d{UPt-Z}NX0}hA#mg{dc2h(Dgud>Uwz(g4W9Cnv z*wZm-PUAcsLiP`(^sjbSNnJztT>Rw=n!xZ+tb&#QaVorZg|PBJcM=1GRyjER>sVVU z63YLils}02M;2KAJ4V6E|EW`W>jGirzptt&!?bX4`nT897bRpr@!@YKEmNml9bGdc zCe9(Yc3}Oly#=}a|ML~8{QvgEkimv#<^K|B`JaGX{@=NZRQ_K(V#r`O+{=Ho@&_3H cPcmWU&*ucXmp@;4>!x_Z%AZel!?XMW0KQF=u>b%7 literal 0 HcmV?d00001 diff --git a/data/eng/kpack b/data/eng/kpack new file mode 100644 index 0000000000000000000000000000000000000000..99f3c888663b02ee6f4877982992ba4bfab76fd7 GIT binary patch literal 8365 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 literal 0 HcmV?d00001 diff --git a/data/eng/lang.inc b/data/eng/lang.inc new file mode 100644 index 0000000000..dc151ef654 --- /dev/null +++ b/data/eng/lang.inc @@ -0,0 +1 @@ +lang fix en \ No newline at end of file diff --git a/data/eng/lang.ini b/data/eng/lang.ini new file mode 100644 index 0000000000..c03a291d7d --- /dev/null +++ b/data/eng/lang.ini @@ -0,0 +1,28 @@ +[start] +startlng = 1 + +[comkey] +ccomkey1 = 1 +ccomkey2 = 4 +ccomkey3 = 7 + +[altkey] +altkey1 = 1 +altkey2 = 4 +altkey3 = 7 +altkey4 = 3 +altkey5 = 5 +altkey6 = 6 +altkey7 = 2 +altkey8 = 0 +altkey9 = 0 +altkey0 = 0 + +[langs] +1 = En +2 = Fi +3 = Ge +4 = Ru +5 = Fr +6 = Et +7 = Ua \ No newline at end of file diff --git a/data/eng/lib/cnv_png.obj b/data/eng/lib/cnv_png.obj new file mode 100644 index 0000000000000000000000000000000000000000..29a750c5458b6c8460011e9e81414529ef0b6574 GIT binary patch literal 3182 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 U9034}#-OztrC1m0d;kCd0Xth53;+NC literal 0 HcmV?d00001 diff --git a/data/eng/lib/msgbox.obj b/data/eng/lib/msgbox.obj new file mode 100644 index 0000000000000000000000000000000000000000..655d3dee72dac7a6768090ab954fdcbb25803a39 GIT binary patch literal 981 zcmV;`11kJWP(w@L3jhFt00001Yyc*tx23KZ}i}hoGk;$ydEkAq*6X zXOG`h6w4qI&^mc#98#AWFx|54#7&QxPf%Jy3V0+1t}krDAC12bO|jGVL-&4sXf}z6 zZGK-zO=HpLd=eZAQD5hVWYRV%P(2KxzLXE(jWD>g*8+NZdMH&+_1LoOKQ+v2p=?4P zD{Ockn{I(~rhGTJFG~Uw;Eq7Y9-c)EeyvV>N7di*ynr(K`^|jtbD3{Vw7Hz!1EGTJ zAQu9l_S>w#VF+|xddkD|^Imtf>#N(9LQm`1{^(m_D8UMD`nLM}QRB5*8X`b){h47+ zs({qy#E6h8T6m}8>0WwF;q4&TO9aS+trr*%&UZEyj=y$WJ5oN~DcLE08>tG6xaCax z_JC=^S=7&voO4aaM>^A05U^C%UX>TtmD0}VVk^+Q**FoLQ^)sL6GmK{-UZ5f8|Z2<2YV5U5kFrNL?M9x2rLE&!ns-7=a|%Gs^m=K zW&3BiYYRy;vs_ZkL@VUAv!J2)Ah~PUNQV1_jR^0E%-FaAoJU1#Ngpti7ndC*_-Xy` zFwdHX7uIV5`L*}w-rbU<=K93_<$EI+#(y6HeeictYUyFZ*Eii@ZHa$@A>t^&VNrYt zI?)39J1rXpqjGl7jEsvg80U6$s-d!J@j`q^R-rSvSCMd8sR$;!Aj62HQ7UAGL=;E% zhqN#sy37$g5|-swq=C#l1+!7K1o5aMfOBYLV!j@M`Y%iIR3j;nls%ap2-8Pd$Up`yc#2A{w3;J%f|9gFvVPKdINtmu-NF}GP~BjlcTo@Z1?`a*j2Ch zN#RGStnzURFS-sSg#TyHdz-(D^ZtsQ5ME zviya!3B(H115k6Ms-$6bngFP(bI;!7Iua@%v;1#(7AJG;J*kenaVlw-n;!rU00000 D`?cCd literal 0 HcmV?d00001 diff --git a/data/eng/lib/pixlib.obj b/data/eng/lib/pixlib.obj new file mode 100644 index 0000000000000000000000000000000000000000..ca2e94a7780dc586f691d3d46566dac759043422 GIT binary patch literal 4620 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 literal 0 HcmV?d00001 diff --git a/data/eng/lib/sort.obj b/data/eng/lib/sort.obj new file mode 100644 index 0000000000000000000000000000000000000000..063da99799ee64d7114d1db4bda89769864ef138 GIT binary patch literal 851 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 KLF?85000R;i{LN- literal 0 HcmV?d00001 diff --git a/data/eng/media/kiv.ini b/data/eng/media/kiv.ini new file mode 100644 index 0000000000..2b4230a836 --- /dev/null +++ b/data/eng/media/kiv.ini @@ -0,0 +1,3 @@ +[Shortcuts] +Next=PgDn +Prev=PgUp diff --git a/data/eng/media/listplay b/data/eng/media/listplay new file mode 100644 index 0000000000000000000000000000000000000000..422e7a2b0f8affcae9cf721bd7212fe7980dbe7a GIT binary patch literal 1563 zcmV+$2ITomP(w@T4*&px00001Mv*2LLXK;4&&M{gp_ZS%qWb6G2$VPghLTDiSuVqt zc_;{+sXdO}B&=U(e6I?tBaz&!Ykk`8C7<*)CN*9&>!a0{5LhvWH5&22>HxqC)|?uD z)e~VP73r;o$b22wiQF4vi~ww6i)N{}WMT3V!dgdgU;sVyzLt(fB-}PvbGP z|D>!?m;7mwC$##I-7d%-9gHz9%7K8K0_#E1Kum`GvM5UE&rVvIwy`0M{Dv!b{bc+dn^C25E>CWNyI{ zD9}_w;9kcr@1m$>+PKr5uSRAiy2y93b;%57Aq74?D;{+GB{#QSGJa7kG14ZEvO_3` z7uN{*a@W4`1hN5A!_-lK$7E~S|Cv@dB!3OtK&6)~egu|dibasZk&klo1+}_TSw%l2 z7m;{{kQ$NI`gmCmoakneKGLB)$S^o#aWlS%&ir8QxHTtEyp?2vZrQIg24F+H1eq4G zYH>xEY&}vMKS<*K*^y@#XrzhJjIvAIFN0?A#hJP$YL|F`@{TiECaC$fzIZ$%33S;+ zq)3Bv46KR2nJ)yV$5t`Ea`<(9Gvn~!*xN^fB;0#;dZfuSuX!<|5)R`(X%6w z{j|{5osfzF^uw{}cTEHGy{qUxJtQJRK&RA?uiGz3)W zv`XE9&pUoMX8Y1OzJA=>rzuN|0>VS6fGD}ViW;kCNv4u?4>+DnnfUnp1|)DsX}LRa zhK=e(QJ4{^FW3`ZkM_c6W(mUa`iC2KdvI54H70$>NE*!9x|xh6LWaOTg{92&+vR?y zpk?n)n~8gAFDP>gLeUqMhnK=945@wK|3E))Vj&nDe4Fxs#9XfQV>z>K6|M4pTxcQ? zc+uF$%m!^ztJ!KrCvaTH&V(}RRp)5GA}}j?qQZ;O zftM)Ih@Ppg5DJAD)36;wHz_1E%|9+ai$x*2Q?zlfmB(dLmfg#^e!A3J&H(zS^1y=M z7Clgp6KdwO*^Fd1W%T%bmV;v79ioq`F_iwH=vhs?6le?TchpQg_-UY1Ly1*bAwX## zKE5B@x&peO@DmJEo=?LF*Fb{P2B+|S$Kk~SqDuLRQI=c14!&=c$9aU+~Xm|H( zYv1f`|JAXexZO6u17!(S7};^lx2vGb!r)*Pom&b=)&&Yk_pUy>LE5lk3(;GJIg`7c zDq#BHU-9!e+S+PmEgRR_6*Zy%O-$IZ?T<`%FCk63)&EJc$-@K6@Wo6sy<=~$!3+4U z{<99rH`=rl66{XN{UC?0R+dG$jAn~iPN}4;CMIW#5Vn*qQ??AD15QjqkyD*CE=gFV z>}l2KXqQH7p=HGDBIQ;FAE?Q^$xmH=H3?^0Jemd(9M z13b`rOnBOy$7d3#G(aTbJi{{_9J3*MRVE>iM~DGQO5yrwcQ>xGy}Sn9%J{y#^34Sc ND5#iJXa)9a@k<2DVyZU7G-v~|*ns%6_13>hV zOPuPdb;L*?sbV@HgTFp@7c<42{p5`Why#4qE{JY>4Faj=yLTX^eAMJeQjIU)6v;hS KDx|9#^8f(q$3|NK literal 0 HcmV?d00001 diff --git a/data/eng/menu.dat b/data/eng/menu.dat new file mode 100644 index 0000000000..94c887b567 --- /dev/null +++ b/data/eng/menu.dat @@ -0,0 +1,177 @@ +#0 **** MAIN **** +Games > /@1 +Demos > /@4 +Graphics > /@6 +Sound and music > /@7 +Development > /@8 +System > /@10 +Data processing > /@14 +Network > /@15 +Other > /@18 +Help /rd/1/docpak +Run application /rd/1/run +Shutdown /rd/1/end +#1 **** GAMES **** +Logical games > /@2 +Arcades > /@3 +Spectrum emulator /rd/1/e80 +Memory Blocks /rd/1/games/mblocks +FreeCell /rd/1/games/freecell +Pipes /rd/1/games/pipes +Kosilka /rd/1/games/kosilka +RockeT ForceS /rd/1/games/rforces +Find Numbers /rd/1/games/FindNumbers +#2 **** LOGICAL GAMES **** +C4 /rd/1/games/c4 +15 /rd/1/games/15 +Mine /rd/1/games/mine +Just Clicks /rd/1/games/clicks +Checkers /rd/1/games/checkers +SQ_GAME /rd/1/games/sq_game +Color Lines /rd/1/games/lines +Lights /rd/1/games/lights +Criss-Cross /rd/1/games/kox +Bulls and cows /rd/1/games/bnc +MegaMaze /rd/1/games/megamaze +Sea Fight /rd/1/games/sw +Sudoku /rd/1/games/sudoku +Go-moku /rd/1/games/gomoku +Reversi /rd/1/games/reversi +#3 **** ARCADES **** +Tetris /rd/1/games/tetris +Pong /rd/1/games/pong +New Pong /rd/1/games/pong3 +Red Square /rd/1/games/rsquare +XONIX /rd/1/games/xonix +ArcanII /rd/1/games/arcanii +Phenix /rd/1/games/phenix +Snake /rd/1/games/snake +#4 **** DEMOS **** +3D > /@5 +Fire /rd/1/demos/fire +Circle /rd/1/demos/circle +Fractal /rd/1/demos/tinyfrac +Color demo /rd/1/demos/colorref +Eyes /rd/1/demos/eyes +Tube /rd/1/demos/tube +Plasma /rd/1/demos/plasma +Moveback /rd/1/demos/movback +Life /rd/1/demos/life2 +TranTest /rd/1/demos/trantest +WEB /rd/1/demos/web +FireWork /rd/1/demos/firework +UnvWater /rd/1/demos/unvwater +#5 **** 3D demos **** +ScreenSaver /rd/1/3d/crownscr +3D-cube /rd/1/3d/3dcube2 +3D-labyrinth /rd/1/3d/free3d04 +3D-textured cube /rd/1/3d/3dtcub10 +3DSHeart /rd/1/3d/3dsheart +View3DS /rd/1/3d/view3ds +CubeLine /rd/1/3d/cubeline +3D-textured cube 2 /rd/1/3d/cubetext +Gears /rd/1/3d/gears +FlatWave /rd/1/3d/flatwav +3D-spiral /rd/1/3d/3dspiral +#6 **** GRAPHICS **** +Image viewer /rd/1/media/kiv +Animage /rd/1/media/animage +#7 **** AUDIO **** +MidAMP /rd/1/media/midamp +CD player /rd/1/media/cdp +#8 **** PROGRAMMING **** +Examples > /@9 +Tools > /@20 +#9 **** EXAMPLES **** +Threads /rd/1/develop/thread +IPC /rd/1/develop/ipc +Color slider /rd/1/demos/cslide +Console example 1 /rd/1/develop/testcon2 +Console example 2 /rd/1/develop/test_gets +Message Boxes example /rd/1/demos/use_mb +#10 **** SYSTEM **** +Settings > /@11 +System sensors > /@12 +Work with files > /@13 +Testing > /@19 +Accessibility opt. > /@21 +Debug board /rd/1/develop/board +#11 **** SETTINGS **** +Devices /rd/1/setup +Background generator /rd/1/pic4 +Colors & Skin /rd/1/desktop +Panel /rd/1/spanel +Icons manager /rd/1/icon +VRR /rd/1/vrr +MyKey /rd/1/mykey +Video mode for ATI /rd/1/vmode +#12 **** SYSTEM SENSORS **** +Process manager /rd/1/cpu +PCI devices /rd/1/pcidev +Test graphics speed /rd/1/mgb +CPUID /rd/1/cpuid +Ghost Monitor /rd/1/gmon +K. Bus disconnected /rd/1/kbd +HDD informer /rd/1/hdd_info +Read HDD /rd/1/hdread +#13 **** WORK WITH FILES **** +KFAR /rd/1/File Managers/kfar +KFM /rd/1/File Managers/kfm +Eolite /rd/1/File Managers/Eolite +SHELL console /rd/1/shell +SysXTree /rd/1/sysxtree +Save RD image /rd/1/rdsave +#14 **** DATA PROCESSING **** +Calculator /rd/1/calc +TinyPad /rd/1/tinypad +Table Processor /rd/1/table +Graph builder /rd/1/graph +Hex-Editor /rd/1/demos/heed +#15 **** NET **** +Servers > /@16 +Clients > /@17 +Configuration /rd/1/network/stackcfg +Zero-Config /rd/1/network/zeroconf +Network status /rd/1/network/ethstat +ARP status /rd/1/network/arpstat +#16 **** SERVERS **** +SMTPS /rd/1/network/smtps +HTTPS /rd/1/network/https +FTPS /rd/1/network/ftps +#17 **** CLIENTS **** +TFTP client /rd/1/network/tftpc +Internet-chess /rd/1/network/chess +Simple HTTP client /rd/1/network/httpc +HTML+HTTP viewer /rd/1/htmlv +NNTP-NewsGroups /rd/1/network/nntpc +TELNET /rd/1/network/telnet +POP - MAIL /rd/1/network/popc +IRC client /rd/1/network/airc +YAHOO messenger (demo) /rd/1/network/ym +JMail /rd/1/network/jmail +VNC client /rd/1/network/vncclient +DNS resolver /rd/1/network/nslookup +#18 **** OTHER **** +Analogue clock /rd/1/demos/aclock +Binary clock /rd/1/demos/bcdclk +Timer /rd/1/demos/timer +ScrShoot /rd/1/scrshoot +Calendar /rd/1/calendar +BGI Font demo /rd/1/fonts/bgitest +RTF reader /rd/1/rtfread +#19 **** SYSTEM TESTS **** +Protection test /rd/1/test +Monitor test /rd/1/disptest +#20 **** PROGRAMMING TOOLS **** +Archiver KPack /rd/1/kpack +Flat Assembler /rd/1/develop/fasm +ASCII-codes /rd/1/develop/keyascii +SCAN-codes /rd/1/develop/scancode +Hex2Dec2Bin /rd/1/develop/h2d2b +Debug Board /rd/1/develop/board +Debugger /rd/1/develop/mtdbg +#21 **** SYSTEM SPECIAL **** +Screen magnifier /rd/1/magnify +Screen keyboard /rd/1/zkey +Character table /rd/1/ASCIIVju +## diff --git a/data/eng/mykey b/data/eng/mykey new file mode 100644 index 0000000000000000000000000000000000000000..95e9153bf48db496ec02ec30a1e230c1f81e0e79 GIT binary patch literal 1861 zcmV-L2fFx6P(w@hF8~0600001Mv*2LLXK|=60sA0JscPM#)?Gv@T@*b^HwaqQ7P-r zq#1rzuCynz7#qMZZ}BygyLLU=d!2IxbdsE^&0{a`#I7)L3#zhA%q5=21*aLF0XXSr zb)jEILHM%|JV$O|B!926((Ar@)4{B48|bR zQWi(yr+w<@)EiNFSC+H+aeEBbD*_dFQ+b)k@*llkpqa`x*^j3 zIs4bs3cCJTIYjWAShD@NuCv4Cd{dCFbeiN;1Ht`)PQB`qA$noc zloxsmlP2vrVz3Ms`rmC<>v8a5$Ya(U&zWXsZQ#b_Zei^3cwB)+4omCmS2yxU%5%7e zZ1AMbdYPq92Fa-?CG;n@;j*|xCxLze{^Nb^cFQLyEpiLrrQz%I_onh49=1%t?8;xE z5dy;DZ)Z2asi)(s?A6x%Ger!9r@G=g@*46nftv#~JxG#j{X^3ndOJk7i35*N%ng}# zHv!g*^J72C%MEkU=gv*;3{PLXb-GPalPj!7-o>*vNYC(}{(7@tkxrQacen)ClwG*_ zvy^LMhgP0hUi5V%e|P*VJL&?eh#i;lv}8#y+lf_QK$F8!`O~%gp)mMhGXh}YwH^%Py|6yAzsf|g$0}&gQS>wnJG@8c6pDPMOb@$zYhY|K{kx2>sKaf@Pd1`{QvL?_JY2GOC`O(6SB z{(>z4z_OQDPMJLC0iZVPIXhW5Vj9&B^GsZ)O~P#8uvn7Rwo}e$V}BK3)<#49*!Y6+ zmgtuofbq)9z~U6#%!G@WcjiI~bQW)<>bSmMbEe&6tQxqm8j@{sCPMH9bJj>h?)R*+me5A3p?*OU(Jeb$YKJjK3Cs7ga1-T z^f!viFtnhEW6H~lR0V5qIhrQHaU_m0b@H>bU1O5u+`+0a^5m`lh)&sRq(aA_+GEHV z`|W#aEKAJpboK1beK)@CE?=_&V~dE6NbJAqo)v_wl%as@w*y z1M4&}+9c5IX>IaY$0!oei~%!W5m=DF93v`*J4E7z(JfzLm9%}fVa)OJf-D1Vs;V38X8*@DiYVQ;ASmRb7!Rz09qmO8us#aH4j(y zYB7@^dy*290&1S`4g;_f4^Wk$+e#O?tUFr*ZqGfJy`XmDjR9w?ZzoCn!D`1#*F|%DQi>)x)KS*c?G&iGY;#9lQ zK*^emrFqUwAzLZW%N?$XR=#jUesN3ws#3Ux(tnN#^0Y`F@_qG(?s6)P;Oe z3U(-L2}&Jh&T%)Z>(ASItl=D0mD?yLEfwAVMSWc5!RfajsT$yDvv^D@Q00000i@>HQ literal 0 HcmV?d00001 diff --git a/data/eng/network/jmail b/data/eng/network/jmail new file mode 100644 index 0000000000000000000000000000000000000000..c6091335c207a041a600dbb0cfcafc3cd4776506 GIT binary patch literal 1976 zcmV;p2S@lzP(w?16aWB$00001Mv*2LLXK;4&&M{gp_R3rW|Cw@0?q9aY);Gm2C|;_ zPHAGBd!PRSk6e$7>f{hp0fBQ&bfyFFVZbyu6p|Zo#3SqdIH?3h0uC(IkxYfxW)4l z5f_nv3d4MzJBi=Q=e_0=!MjLIYw)syS~#3@`uSo38-1jzCEFaypUAbkJB-TtNT5-% zWD#x6$H>AApr^K^Bf@uVhEaTYvhefH0XgwJs^=6;tdL56^D1<{ss;b-%$=LtLU{I{ zA0yHthYy68&4ZD}=$71E12~a48F+pFTcFD2MSh2xN*@kW4;I6~iwA(D4OQhVMfuXg z6j{0FnkI}NZWT~r6Ew$(4iW=8_zkLS3yv6>0BV^0kdBHkI?~bFe)PxdE@*u%f(iz) z=JghmAcSGc3xwQxKCAw0PCP=Pk=kJwlF+N5kz_uiay7XjEdUm$;0#mB3Qd!f7vf|z zW6kK{N8j~gQHal{>mUkkY9{_V4hfS^-TQq#n%DAB;RGGI6lre0<(h~p!nNETWHnKy zKD5u$m(dYa9&ijIQ$xi^B>F+dF@{>fX&nGPAv8|s2>@?WsgF>24bhjQ*Y5Ywb{O{L zt?&SVBWS@jPYPO+{pSj2XwNek0wfv~r<#1w2;Bt>FIbmIJ=R(0Hrlrb~7sA{K*w5@(Af%jE63M|GPz<#V1duvDK{zp=deH<&#t%)C017^4(ZTS zr@HGvA@1dPJ$RF^C!#ieVw!jqJp~e7iqTY=wq*Cvm9H!(@|)Gn1$0VIA>X|d>!TbK zC3BLTh-0_B+){bXY}tk_D6YDL|Luw`%kh^%|EGI9rw?b`(7n|Jh7fn zM9|72f7Aj-GB%j**BShSGhsg0`tm$3P_*JP`MM<2#)OGc9dnXd3wJecHBmqMm7%|| z&+*4pG2HN5=zZOS5fMNEB#lB?oTSF0xcU1v5HFI|1Kezs({-7OUGdp@XB_Gm5Gdy* zzK+Xq!DP?os}tqp-LN2w8w6Lxg(fS7J0uWxj~p@e7AaV6{y@c&6tCYmyNXUy=Eb0% zc^@PNq?$57i=0fRlyh`5Ygh0BOb}J%4Ovdklv6f%cP&9*(M_Q?5mXBKS2w!WB#S>rQuA;QN9ppzj#UvBgMrD zW?de+$(@>!32m$lyjuyN zFj32V@;TgzG>dG5iN0P6hZZ6$H#;?Jr<-j|CsoNa*4y~_3b{O!{R$D=((gq45-nf& zBO^}{*{-b8L>32Zd6J_#J?=m9$+X$l*?Vep1%L?zW_hNKU=Ju4TOtbwRuURSQ`T&y zzNs^?K+L+1q{FpAz3re1P{c!xnCLR`fE(Q*i3qCY%^ygR@*7SxwDt; zLW|rLDlZ|6V_47qfY}EgfGY)^VGjS|6g)8 +;port = +; If proxy requires authentification, uncomment following lines too +; (otherwise, leave them commented): +;user = +;password= + diff --git a/data/eng/panel.dat b/data/eng/panel.dat new file mode 100644 index 0000000000..fc97f062a7 --- /dev/null +++ b/data/eng/panel.dat @@ -0,0 +1 @@ +0000;0000;0001;0001;0001;0001;0100;0001;0001;0001;0001;0001;x \ No newline at end of file diff --git a/data/eng/setup.dat b/data/eng/setup.dat new file mode 100644 index 0000000000000000000000000000000000000000..c94ae3ec5bde3b9d0f59c17f39a7eee748cf4b6d GIT binary patch literal 48 gcmZQzU|>*SW?%p!1_dSt1{NUAhy??s7`T8K01S%&UH||9 literal 0 HcmV?d00001 diff --git a/data/eng/shell b/data/eng/shell new file mode 100644 index 0000000000000000000000000000000000000000..f78fc63c9fb18de3ae597a02ea5d3aceb25618c6 GIT binary patch literal 3939 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 literal 0 HcmV?d00001 diff --git a/data/eng/spanel b/data/eng/spanel new file mode 100644 index 0000000000000000000000000000000000000000..b2e75e63583a7c44abf39e6ee43b2a29523fbf5a GIT binary patch literal 652 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 literal 0 HcmV?d00001 diff --git a/data/eng/test b/data/eng/test new file mode 100644 index 0000000000000000000000000000000000000000..c2890faf65b1ed2ef5a105ee5d37d9b353e232e9 GIT binary patch literal 431 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 G0000SwA^6; literal 0 HcmV?d00001 diff --git a/data/rus/3d/3dsheart b/data/rus/3d/3dsheart new file mode 100644 index 0000000000000000000000000000000000000000..451432efc9a3c6d931a58311fab3077479ecdd3d GIT binary patch literal 18362 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 V+}-#He!2sNjc`x9mia(jwg5gRqI&=U literal 0 HcmV?d00001 diff --git a/data/rus/3d/3dspiral b/data/rus/3d/3dspiral new file mode 100644 index 0000000000000000000000000000000000000000..58d26dfefac3ce9ad906f137a14f4a261b091ce6 GIT binary patch literal 690 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 Zk{r@~%JAM4!%&N-WjoLd0K)+Q00G8+ewP3M literal 0 HcmV?d00001 diff --git a/data/rus/3d/house.3ds b/data/rus/3d/house.3ds new file mode 100644 index 0000000000000000000000000000000000000000..5cd6911c4085d93f66518889f3304743e51b721f GIT binary patch literal 11977 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 literal 0 HcmV?d00001 diff --git a/data/rus/@notify b/data/rus/@notify new file mode 100644 index 0000000000000000000000000000000000000000..cb2a8b481111cf1a9ffec2a12700ab90de75f053 GIT binary patch literal 814 zcmV+}1JV3TP(w@p1poj+00001Mv*2LLXK;4&&M|BRgS2?a%d2Q+k!ncA+U7jE>Q2{ z(MZoDEgr$dcSah5Nh_D-kVb)%_7Zu*$)G7&&kMyGwqzL-)#STsT>05v!Vs@^a z^S8Moioe%#X{`9DTV#SB!v@&FYJM`RoZ2}GkLiAqsTI*}g$9HiDsSnDNK<806vSp# z3Ml2&6U!VeqgozMUJfCG7<_G`bw;g=Eg(>XF7vA}1f*x95n?ll^iNU}7`}v!IfyBkFYh@#g@5b9h&*zodB_Upgeb~_%B!gxS|f(d zOJPqn6A@JE$f~zz#isEtp$p2i4Xf+gxKCL@*iVf0p7A0lWtCNj{cOvG1P*KN0)t#a zkp@%*hcA`1-Ey3g0V)(FMKM!(aMq!TGe4OaO*}3|2{cxT_|0OBFBgK})76NG0HzH4 z3Q;>XGjN8OTb0>Qn=|RvQ7D)Of^@5RYZlp8VW3!l@h2ryyt2r?3y47xjU5o~=*!ke zSXpE|`{mnA$mJ@8_FV`LcALsg~`Vj;QEk{6c9q`Q^x(C(pRr)*G0u!8ao-o;f=j>VlMY0il#*4 zbOM#6_;n3@)`ZO)%`6irLEsz@Ppo?QG!u8svTd9En5f-RGv9y*A;kNf5(8-d&o|q4 s)YIL;MN51H0Q+7w5vSBj>lSaNdzU9#Cx&%XFhjYk3JjR<9smFU01|eEBme*a literal 0 HcmV?d00001 diff --git a/data/rus/File Managers/buttons.bmp b/data/rus/File Managers/buttons.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ea6b4741c0c569a501750661d3c45668836372c5 GIT binary patch literal 6486 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 E2RcKctN;K2 literal 0 HcmV?d00001 diff --git a/data/rus/File Managers/eolite.ini b/data/rus/File Managers/eolite.ini new file mode 100644 index 0000000000..d1a668366d --- /dev/null +++ b/data/rus/File Managers/eolite.ini @@ -0,0 +1,42 @@ +[Associations] +rtf=/sys/htmlv +asm=TinyPad +inc=TinyPad +ini=TinyPad +txt=TinyPad +gif=/sys/media/kiv +bmp=/sys/media/kiv +png=/sys/media/kiv +tga=/sys/media/kiv +jpg=/sys/media/kiv +jpeg=/sys/media/kiv +ico=/sys/media/kiv +cur=/sys/media/kiv +pcx=/sys/media/kiv +3ds=/sys/3d/view3ds +lif=/sys/demos/life2 +skn=/sys/desktop +htm=/sys/HTMLv +html=/sys/HTMLv +rtf=/sys/RtfRead +obj=/sys/develop/cObj +sna=/sys/e80 +nes=/sys/games/fceu +xm=/sys/media/AC97SND +wav=/sys/media/AC97SND +mp3=/sys/media/AC97SND +mid=/sys/media/MIDAMP +m3u=/sys/media/listplay +lap=/sys/media/listplay +asf=/sys/media/listplay +mht=/sys/htmlv +kla=/sys/games/klavisha + + +[Config] +;хёыш яюёЄртшЄ№ 1 тьхёЄю ъэюяюъ сєфхЄ ёЄЁюър рфЁхёр +ShowEditBoxPath=0 +;ЎтхЄ т√фхыхэюую ¤ыхьхэЄр ш т√фхыхэшх хфшЄсюъёр +;яю-єьюыўрэш■ 94AECE, фы  ЄхёЄр FEA4B7,8BCDFF,B8C9B8 +BorderColor=94AECE + diff --git a/data/rus/File Managers/icons.bmp b/data/rus/File Managers/icons.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8f6c0f1c50ab8c8925ea899b8a1d74fd7627b319 GIT binary patch literal 5238 zcmdT|JB}4G5cEn!kRbv@L`X_PMDRq;4G8xP#B&Ka0Jk6_C*VX#L%GY{Q*PU{yH6l3 zmdDesPj}Dnt+XFLetuDGyus_Y>AE&W9ld z)UMYx!^d38w(l{4A=b6$Nzy5P6aj-(8N>#r4w9sa8k)#!{OkhGMSZpdp401Fsdg1X z8hHA0H8S-bTk!^_!Hg$H)tVPZ4X`anl%4TG4rOQR9>blkBR^)M6&^`yO`*1Ckz8FE zv>$h%t2j5A*@Tg zYUAK(_BHVo%Zhj5g3rYBTOc$FMrRT9eCyT=rY-z6`+6PzT=j{}i4>6~$2D`tykf=g zJs{HlewD8&;3iRb#I7(5*}IsC7kk+lL7M!2>;0pQ*KL$d0F;lvS={^ zz``?E01+6@x2cBX-RtlAoUcYco>>MfLCMnI{4;xPz=oArWnlgC>3g2;#(73IpQt1R zdCCt`8gzAuVj4dRetJ^_Ts)L3c|PedBar+cmG`$I)Z|0bwn)%^f9Ao#r$pS=2D-8h z#$&S9xcDwoL|}aE#=sx(`B{7t9v%TDyn?rHJW@mgBJu;!02g2@B;$(3pnhCKuntC( zBCXbbJB<1v)vQ&$8V5hvZy(}kmDw7Yx4=S79{ov+D?SqS!TP=lsZuYlYRe@rnf*pNOg1jANjTUh^7C)G!PzP z8V~~U_au?V{1g7J{=BXB(GUI6AMHAy()N7aK{%V{|EqkIwqVRZ@Uyl;M1PV5+kf{| x35k$?Vj8;&|2up2`eYja)Gy!UcZvY{{i&e9LN9w literal 0 HcmV?d00001 diff --git a/data/rus/File Managers/icons.ini b/data/rus/File Managers/icons.ini new file mode 100644 index 0000000000..e4690bf7bc --- /dev/null +++ b/data/rus/File Managers/icons.ini @@ -0,0 +1,141 @@ +asm=4 +inc=4 +txt=3 +rtf=3 +ini=3 +log=3 +dic=3 +doc=3 +exc=3 +wtx=3 +inf=3 +xml=3 +odt=3 +jpg=6 +jpe=6 +jpeg=6 +jif=6 +jfif=6 +jp2=6 +jpx=6 +jpk=6 +j2k=6 +jpc=6 +j2c=6 +bmp=6 +dib=6 +rle=6 +pbm=6 +wbm=6 +wbmp=6 +xbm=6 +xpm=6 +gif=6 +png=6 +ico=6 +cur=6 +ani=6 +tif=6 +tiff=6 +xif=6 +tga=6 +pcx=6 +dcx=6 +ppm=6 +psd=6 +psp=6 +raw=6 +raf=6 +x3f=6 +orf=6 +nef=6 +mrw=6 +dcr=6 +crw=6 +cr2=6 +ras=6 +pix=6 +pict=6 +pct=6 +pic=6 +pgm=6 +pef=6 +pcd=6 +iff=6 +lbm=6 +ilbm=6 +fpx=6 +djv=6 +djvu=6 +iw4=6 +wav=7 +mp3=7 +xm=7 +mid=7 +midi=7 +aif=7 +aifc=7 +aiff=7 +au=7 +snd=7 +wma=7 +wm=7 +avi=11 +mpg=11 +mpe=11 +mpeg=11 +flv=11 +3gp=11 +mkv=11 +wmv=11 +mov=11 +mp4=11 +img=5 +ima=5 +imz=5 +bwz=5 +dsk=5 +vfd=5 +wil=5 +wlz=5 +exe=8 +com=8 +bat=8 +7z=9 +rar=9 +zip=9 +cab=9 +arj=9 +lha=9 +lzh=9 +tar=9 +taz=9 +tbz=9 +tbz2=9 +bz=9 +bz2=9 +ice=9 +gz=9 +tgz=9 +uue=9 +uu=9 +xxe=9 +z=9 +dat=10 +ttf=12 +ttc=12 +chr=12 +mt=12 +htm=13 +html=13 +mht=13 +eml=13 +lif=14 +3ds=15 +kex=16 +skn=17 +obj=18 +dll=18 +ocx=18 +so=18 +drv=18 diff --git a/data/rus/File Managers/kfar.ini b/data/rus/File Managers/kfar.ini new file mode 100644 index 0000000000..4d0e7c687b --- /dev/null +++ b/data/rus/File Managers/kfar.ini @@ -0,0 +1,71 @@ +[Associations] +asm=/sys/TinyPad; AsmMenu1,AsmMenu2 +inc=/sys/TinyPad +ini=/sys/TinyPad +txt=/sys/TinyPad +jpg=/sys/media/kiv +jpeg=/sys/media/kiv +gif=/sys/media/kiv; ViewGraph,MenuAnimage +wav=/sys/media/AC97SND +mp3=/sys/media/AC97SND +xm=/sys/media/AC97SND +mid=/sys/media/MIDAMP +bmp=/sys/media/kiv; ViewGraph,MenuAnimage +png=/sys/media/kiv +ico=/sys/media/kiv +cur=/sys/media/kiv +pcx=/sys/media/kiv +rtf=/sys/RtfRead +3ds=/sys/3d/view3ds +lif=/sys/demos/life2 +skn=/sys/desktop +m3u=/sys/media/listplay +lap=/sys/media/listplay +asf=/sys/media/listplay +cvs=/sys/graph +obj=/sys/develop/cObj +nes=/sys/fceu +sna=/sys/e80 +htm=/sys/HTMLv +html=/sys/HTMLv +kla=/sys/games/klavisha + +[Menu] +AsmMenu1=&Внешний редактор,/sys/TinyPad +AsmMenu2=&Компилировать,/sys/develop/fasm +ViewGraph=&Просмотр,/sys/media/kiv +MenuAnimage=&Редактор,/sys/media/animage + +[Panels] +; Режимы отображения файлов на панелях +; значения соответствуют цифрам для LCtrl+<1-4> +LeftViewMode=2 +RightViewMode=2 +; Режимы сортировки файлов на панелях +; значения имеют вид 2 * N + M, где +; M = 0 - прямая сортировка, M = 1 - обратная +; N = 0-6 соответствует режиму сортировки для Ctrl+F<3-9> +LeftSortMode=0 +RightSortMode=0 + +[Editor] +; Символы конца строки, которые будет вставлять +; редактор kfar при добавлении новой строки: +; DOS - наподобие DOS/Win (0D 0A), Unix - наподобие Unix (0A), +; Mac - наподобие Mac (0D) +EOLStyle=Unix + +[FolderShortcuts] +; Можно определить до десяти ссылок на папки Shortcut0...Shortcut9, +; на такие папки можно сделать быстрый переход по RCtrl+<цифра> +Shortcut0=/rd/1 + +[Confirmations] +Delete=1 +DeleteIncomplete=0 + +[Plugins] +; Слева от знака равенства можно ставить любое осмысленное или бессмысленное +; имя; справа - путь к плагину. +; Если путь не абсолютен, то он отсчитывается от папки с бинарником kfar. +ArchiveReader=/sys/lib/archiver.obj diff --git a/data/rus/File Managers/kfm b/data/rus/File Managers/kfm new file mode 100644 index 0000000000000000000000000000000000000000..d7efae97e4a83612e116b924d9e6c22f207fd5c3 GIT binary patch literal 11080 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 OKw$AaG5`z&0004^!jsMb literal 0 HcmV?d00001 diff --git a/data/rus/File Managers/kfm.ini b/data/rus/File Managers/kfm.ini new file mode 100644 index 0000000000..3df8b10002 --- /dev/null +++ b/data/rus/File Managers/kfm.ini @@ -0,0 +1,172 @@ +start +<>icons_associations +asm 0004 +inc 0004 +txt 0003 +rtf 0003 +ini 0003 +log 0003 +dic 0003 +doc 0003 +exc 0003 +wtx 0003 +inf 0003 +jpg 0006 +jpe 0006 +jpeg 0006 +jif 0006 +jfif 0006 +jp2 0006 +jpx 0006 +jpk 0006 +j2k 0006 +jpc 0006 +j2c 0006 +bmp 0006 +dib 0006 +rle 0006 +pbm 0006 +wbm 0006 +wbmp 0006 +xbm 0006 +xpm 0006 +gif 0006 +png 0006 +ico 0006 +cur 0006 +ani 0006 +tif 0006 +tiff 0006 +xif 0006 +tga 0006 +pcx 0006 +dcx 0006 +ppm 0006 +psd 0006 +psp 0006 +raw 0006 +raf 0006 +x3f 0006 +orf 0006 +nef 0006 +mrw 0006 +dcr 0006 +crw 0006 +cr2 0006 +ras 0006 +pix 0006 +pict 0006 +pct 0006 +pic 0006 +pgm 0006 +pef 0006 +pcd 0006 +iff 0006 +lbm 0006 +ilbm 0006 +fpx 0006 +djv 0006 +djvu 0006 +iw4 0006 +wav 0007 +mp3 0007 +xm 0007 +mid 0007 +midi 0007 +aif 0007 +aifc 0007 +aiff 0007 +au 0007 +snd 0007 +wma 0007 +wm 0007 +avi 0011 +mpg 0011 +img 0005 +ima 0005 +imz 0005 +bwz 0005 +dsk 0005 +vfd 0005 +wil 0005 +wlz 0005 +exe 0008 +com 0008 +bat 0008 +7z 0009 +rar 0009 +zip 0009 +cab 0009 +arj 0009 +lha 0009 +lzh 0009 +tar 0009 +taz 0009 +tbz 0009 +tbz2 0009 +bz 0009 +bz2 0009 +ice 0009 +gz 0009 +tgz 0009 +uue 0009 +uu 0009 +xxe 0009 +z 0009 +dat 0010 +ttf 0012 +ttc 0012 +chr 0012 +mt 0012 +htm 0013 +html 0013 +lif 0014 +3ds 0015 +kex 0016 +skn 0017 +<>end + +<>files_associations +asm /sys/tinypad +inc /sys/tinypad +txt /sys/tinypad +ini /sys/tinypad +log /sys/tinypad +dat /sys/tinypad +inf /sys/tinypad +bat /sys/tinypad +jpg /sys/media/kiv +jpeg /sys/media/kiv +jpe /sys/media/kiv +gif /sys/media/kiv +wav /sys/media/ac97snd +mp3 /sys/media/ac97snd +xm /sys/media/ac97snd +mid /sys/media/midamp +bmp /sys/media/kiv +png /sys/media/kiv +ico /sys/media/kiv +cur /sys/media/kiv +pcx /sys/media/kiv +rtf /sys/rtfread +3ds /sys/3d/view3ds +lif /sys/demos/life2 +skn /sys/desktop +avi /sys/kvid.kex +m3u /sys/media/listplay +lap /sys/media/listplay +asf /sys/media/listplay +cvs /sys/graph +obj /sys/develop/cObj +nes /sys/fceu +sna /sys/e80 +htm /sys/HTMLv +html /sys/HTMLv +kla /sys/games/klavisha +<>end + +<>files_association1 +bmp /sys/media/animage +<>end + +end diff --git a/data/rus/File Managers/kfm_keys.txt b/data/rus/File Managers/kfm_keys.txt new file mode 100644 index 0000000000..069c2dc4f1 --- /dev/null +++ b/data/rus/File Managers/kfm_keys.txt @@ -0,0 +1,46 @@ +Управляющие сочетания клавиш в KFM - Kolibri File Manager v0.47. + +В панелях: +1) Перемещение курсора по активной панели: + а) стрелки вверх и вниз (в том числе расположенные в дополнительной части клавиатуры) - перемещение курсора на одну позицию вверх или вниз. + б) PageUp - постраничное листание вверх. + в) PageDown - постраничное листание вниз. + г) Home - в начало каталога с файлами. + д) End - в конец каталога с файлами. +2) Tab - изменение активной панели. +3) Enter - действия с файлом на позиции которого находится курсор выделения: + а) вход в папку. + б) запуск программы. + в) открыть файл в прописанном приложении, согласно содержанию файла kfm.ini, раздела "<>files associations". +4) Alt+F1 - вызов меню выбора диска, отображаемого на левой панели. +5) Alt+F2 - вызов меню выбора диска, отображаемого на правой панели. +6) сортировка файлов в активной панели: + а) Ctrl+F3 - сортировка по именам. + б) Ctrl+F4 - сортировка по расширениям. + в) Ctrl+F5 - сортировка по размеру. + г) Ctrl+F6 - сортировка по дате модификации. +7) Ctrl+R - повторная загрузка содержимого директории в активной панели. +8) Delete и F8 - удаление файла на котором находится курсор. +9) Insert - выделение красным цветом файла на котором находится курсор и перемещение курсора на 1 позицию вниз. +10) F4 - открыть файл для редактирования в прописанном приложении, согласно содержанию файла kfm.ini, раздела "<>files association1". +11) F7 - создание директории в активной панели. +12) F5 - копирование файла из активной панели в противоположную. +13) F6 - перемещение файла из активной панели в противоположную. +14) Ctrl+A и Ctrl+(NumPad(+) Up) - выделение всех файлов и директорий в активной панели, за исключением директории '..' +15) Ctrl+(NumPad(-) Up) - снять выделение всех файлов и директорий в активной панели, за исключением директории '..' +16) Ctrl+(NumPad(*) Up) - инвертировать выделение всех файлов и директорий в активной панели, за исключением директории '..' +17) F12 - завершение работы программы. +18) F1 - справка, горячие комбинации клавиш. Требуется наличие файла kfm_keys.txt в директории где расположено приложение. +19) Открыть файл в стороннем приложении с параметром: + а) Shift + W - установить фоновый рисунок рабочего стола, режим отрисовки замостить. + б) Ctrl + W - установить фоновый рисунок рабочего стола, режим отрисовки растянуть. +20) Alt+Enter - получение для файлов и директорий: расположения, названия, размера, количества файлов и директорий + (в том числе и для случая выделения отдельных файлов и директорий). + +В меню выбора диска: +1) стрелки вверх и вниз (в том числе расположенные в дополнительной части клавиатуры) - перемещение курсора на одну позицию вверх или вниз. +2) Enter - выбор диска на позиции которого находится курсор выделения. +3) Home и PageUp - курсор в начало списка +4) End и PageDown - курсор в конец списка. +5) Insert - загрузить лоток выбранного ATAPI привода. +6) Delete - выгрузить лоток выбранного ATAPI привода. diff --git a/data/rus/Makefile b/data/rus/Makefile new file mode 100644 index 0000000000..e7905cf952 --- /dev/null +++ b/data/rus/Makefile @@ -0,0 +1,368 @@ +# General rule for naming: variables with CAPITALIZED names hold settings, +# you can - and are expected - to modify it; variables with lowercase names +# are intermediate variables and macroses not to be modified unless you +# know what you're doing. + +# Define directories for destination, source repository, sources of kernel, sources of programs. +BUILD_DIR:=build +REPOSITORY:=../localcopy +KERNEL:=$(REPOSITORY)/kernel/trunk +PROGS:=$(REPOSITORY)/programs + +# Docpak requires some documents; we place them +# into 'docs' subdir and communicate with FASM +# through environment var DOCDIR. +DOCDIR:=docs/ +export DOCDIR + +# Because most programs are written in FASM and have +# the common structure of one main .asm file possibly including +# several .inc files, we handle this case separately. +# Namely, we organize one big list of such programs +# (FASM_PROGRAMS, see below) containing name of local binary file, +# name of file inside kolibri.img and name of the source file. +# This list is maintained by hand, and the rest is done with some macroses... +# well, slightly complicated macroses - however, you do not need to +# understand them in order to maintain the list. +# To add a FASM program with one .asm file, just +# add the corresponding item to the list and enjoy +# the power of GNU make. + +# The list of all FASM programs with one main FASM file. +# Every item consists of three parts, separated by ':'. +# First part is the real name of binary file in $(BUILD_DIR) +# as it should be produced by make. +# Second part is the name of a file inside kolibri.img, +# usually uppercased version of first part - to save space +# for FAT filesystem. +# Third part is the name of the source file. +# Spaces separate items, so spaces in names should be +# represented as '|'. +FASM_PROGRAMS:=\ + @clip:@CLIP:$(PROGS)/system/clip/trunk/@clip.ASM \ + @menu:@MENU:$(PROGS)/system/menu/trunk/menu.asm \ + @panel:@PANEL:$(PROGS)/system/panel/trunk/@PANEL.ASM \ + @rb:@RB:$(PROGS)/system/rb/trunk/@RB.ASM \ + @ss:@SS:$(PROGS)/system/ss/trunk/@SS.ASM \ + calc:CALC:$(PROGS)/other/calc/trunk/calc.asm \ + calendar:CALENDAR:$(PROGS)/system/calendar/trunk/calendar.asm \ + commouse:COMMOUSE:$(PROGS)/system/commouse/trunk/commouse.asm \ + copyr:COPYR:$(PROGS)/fs/copyr/trunk/copyr.asm \ + cpu:CPU:$(PROGS)/system/cpu/trunk/cpu.asm \ + cpuid:CPUID:$(PROGS)/system/cpuid/trunk/CPUID.ASM \ + desktop:DESKTOP:$(PROGS)/system/desktop/trunk/desktop.asm \ + disptest:DISPTEST:$(PROGS)/system/disptest/trunk/disptest.ASM \ + docpak:DOCPAK:$(PROGS)/system/docpack/trunk/docpack.asm \ + downloader:downloader:$(PROGS)/network/downloader/trunk/downloader.asm \ + end:END:$(PROGS)/system/end/trunk/end.asm \ + gmon:GMON:$(PROGS)/system/gmon/gmon.asm \ + hdd_info:HDD_INFO:$(PROGS)/system/hdd_info/trunk/hdd_info.asm \ + icon:ICON:$(PROGS)/system/icon/trunk/icon.asm \ + kbd:KBD:$(PROGS)/system/kbd/trunk/kbd.ASM \ + launcher:LAUNCHER:$(PROGS)/system/launcher/trunk/launcher.asm \ + magnify:MAGNIFY:$(PROGS)/demos/magnify/trunk/magnify.asm \ + mgb:MGB:$(PROGS)/system/mgb/trunk/mgb.asm \ + mousemul:MOUSEMUL:$(PROGS)/system/mousemul/trunk/mousemul.asm \ + pcidev:PCIDEV:$(PROGS)/system/pcidev/trunk/PCIDEV.ASM \ + period:PERIOD:$(PROGS)/other/period/trunk/period.asm \ + pic4:PIC4:$(PROGS)/media/pic4/trunk/pic4.asm \ + rdsave:RDSAVE:$(PROGS)/system/rdsave/trunk/rdsave.asm \ + rtfread:RTFREAD:$(PROGS)/other/rtfread/trunk/rtfread.asm \ + run:RUN:$(PROGS)/system/run/trunk/run.asm \ + scrshoot:SCRSHOOT:$(PROGS)/media/scrshoot/scrshoot.asm \ + setup:SETUP:$(PROGS)/system/setup/trunk/setup.asm \ + tinypad:TINYPAD:$(PROGS)/develop/tinypad/trunk/tinypad.asm \ + vrr:VRR:$(PROGS)/system/vrr/trunk/vrr.asm \ + vrr_m:VRR_M:$(PROGS)/system/vrr_m/trunk/vrr_m.asm \ + zkey:ZKEY:$(PROGS)/system/zkey/trunk/ZKEY.ASM \ + 3d/3dcube2:3D/3DCUBE2:$(PROGS)/demos/3dcube2/trunk/3DCUBE2.ASM \ + 3d/3dtcub10:3D/3DTCUB10:$(PROGS)/demos/3dtcub10/trunk/3DTCUB10.ASM \ + 3d/crownscr:3D/CROWNSCR:$(PROGS)/demos/crownscr/trunk/crownscr.asm \ + 3d/free3d04:3D/FREE3D04:$(PROGS)/demos/free3d04/trunk/free3d04.asm \ + 3d/view3ds:3D/VIEW3DS:$(PROGS)/demos/3DS/VIEW3DS.ASM \ + demos/bcdclk:DEMOS/BCDCLK:$(PROGS)/demos/bcdclk/bcdclk/bcdclk.asm \ + demos/circle:DEMOS/CIRCLE:$(PROGS)/develop/examples/circle/trunk/circle.asm \ + demos/colorref:DEMOS/COLORREF:$(PROGS)/demos/colorref/trunk/colorref.asm \ + demos/cslide:DEMOS/CSLIDE:$(PROGS)/demos/cslide/trunk/cslide.asm \ + demos/eyes:DEMOS/EYES:$(PROGS)/demos/eyes/trunk/eyes.asm \ + demos/fire:DEMOS/FIRE:$(PROGS)/demos/fire/trunk/fire.asm \ + demos/firework:DEMOS/FIREWORK:$(PROGS)/demos/firework/trunk/firework.asm \ + demos/movback:DEMOS/MOVBACK:$(PROGS)/demos/movback/trunk/movback.asm \ + demos/plasma:DEMOS/PLASMA:$(PROGS)/demos/plasma/trunk/plasma.asm \ + demos/timer:DEMOS/TIMER:$(PROGS)/demos/timer/trunk/timer.asm \ + demos/tinyfrac:DEMOS/TINYFRAC:$(PROGS)/demos/tinyfrac/trunk/tinyfrac.asm \ + demos/trantest:DEMOS/TRANTEST:$(PROGS)/demos/trantest/trunk/trantest.asm \ + demos/tube:DEMOS/TUBE:$(PROGS)/demos/tube/trunk/tube.asm \ + demos/unvwater:DEMOS/UNVWATER:$(PROGS)/demos/unvwater/trunk/unvwater.asm \ + develop/board:DEVELOP/BOARD:$(PROGS)/system/board/trunk/board.asm \ + develop/cObj:DEVELOP/cObj:$(PROGS)/develop/cObj/trunk/cObj.asm \ + develop/fasm:DEVELOP/FASM:$(PROGS)/develop/fasm/trunk/fasm.asm \ + develop/h2d2b:DEVELOP/H2D2B:$(PROGS)/develop/h2d2b/trunk/h2d2b.asm \ + develop/heed:DEVELOP/HEED:$(PROGS)/develop/heed/trunk/heed.asm \ + develop/ipc:DEVELOP/IPC:$(PROGS)/network/ipc/trunk/ipc.asm \ + develop/keyascii:DEVELOP/KEYASCII:$(PROGS)/develop/keyascii/trunk/keyascii.asm \ + develop/mtdbg:DEVELOP/MTDBG:$(PROGS)/develop/mtdbg/mtdbg.asm \ + develop/scancode:DEVELOP/SCANCODE:$(PROGS)/develop/scancode/trunk/scancode.asm \ + develop/test_gets:DEVELOP/test_gets:$(PROGS)/develop/libraries/console/examples/test_gets.asm \ + develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2.asm \ + develop/thread:DEVELOP/THREAD:$(PROGS)/develop/examples/thread/trunk/thread.asm \ + drivers/atikms:DRIVERS/ATIKMS:$(REPOSITORY)/drivers/video/drm/radeon/atikms.asm \ + drivers/com_mouse.obj:DRIVERS/COM_MOUSE.OBJ:$(KERNEL)/drivers/com_mouse.asm \ + drivers/emu10k1x.obj:DRIVERS/EMU10K1X.OBJ:$(KERNEL)/drivers/emu10k1x.asm \ + drivers/fm801.obj:DRIVERS/FM801.OBJ:$(KERNEL)/drivers/fm801.asm \ + drivers/infinity.obj:DRIVERS/INFINITY.OBJ:$(KERNEL)/drivers/infinity.asm \ + drivers/ps2mouse.obj:DRIVERS/PS2MOUSE.OBJ:$(REPOSITORY)/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm \ + drivers/sb16.obj:DRIVERS/SB16.OBJ:$(KERNEL)/drivers/sb16/sb16.asm \ + drivers/sound.obj:DRIVERS/SOUND.OBJ:$(KERNEL)/drivers/sound.asm \ + drivers/vmode.mdr:DRIVERS/VMODE.MDR:$(KERNEL)/drivers/vmode.asm \ + drivers/vt8235.obj:DRIVERS/VT8235.OBJ:$(KERNEL)/drivers/vt823x.asm \ + File|Managers/kfar:File|Managers/KFAR:$(PROGS)/fs/kfar/trunk/kfar.asm \ + File|Managers/OpenDial:File|Managers/OPENDIAL:$(PROGS)/develop/libraries/box_lib/asm/trunk/OpenDial.asm \ + fonts/bgitest:FONTS/BGITEST:$(PROGS)/demos/bgitest/trunk/bgitest.asm \ + games/15:GAMES/15:$(PROGS)/games/15/trunk/15.ASM \ + games/arcanii:GAMES/ARCANII:$(PROGS)/games/arcanii/trunk/arcanii.asm \ + games/freecell:GAMES/FREECELL:$(PROGS)/games/freecell/freecell.ASM \ + games/invaders:GAMES/INVADERS:$(PROGS)/games/invaders/invaders.asm \ + games/lines:GAMES/LINES:$(PROGS)/games/lines/lines.asm \ + games/mblocks:GAMES/MBLOCKS:$(PROGS)/games/mblocks/trunk/mblocks.asm \ + games/phenix:GAMES/PHENIX:$(PROGS)/games/phenix/trunk/phenix.asm \ + games/pipes:GAMES/PIPES:$(PROGS)/games/pipes/pipes.asm \ + games/pong:GAMES/PONG:$(PROGS)/games/pong/trunk/pong.asm \ + games/pong3:GAMES/PONG3:$(PROGS)/games/pong3/trunk/pong3.asm \ + games/rsquare:GAMES/RSQUARE:$(PROGS)/games/rsquare/trunk/rsquare.asm \ + games/snake:GAMES/SNAKE:$(PROGS)/games/snake/trunk/snake.asm \ + games/tetris:GAMES/TETRIS:$(PROGS)/games/tetris/trunk/tetris.asm \ + lib/archiver.obj:LIB/ARCHIVER.OBJ:$(PROGS)/fs/kfar/trunk/kfar_arc/kfar_arc.asm \ + lib/box_lib.obj:LIB/BOX_LIB.OBJ:$(PROGS)/develop/libraries/box_lib/trunk/box_lib.asm \ + lib/console.obj:LIB/CONSOLE.OBJ:$(PROGS)/develop/libraries/console/console.asm \ + lib/libgfx.obj:LIB/LIBGFX.OBJ:$(PROGS)/develop/libraries/libs-dev/libgfx/libgfx.asm \ + lib/libimg.obj:LIB/LIBIMG.OBJ:$(PROGS)/develop/libraries/libs-dev/libimg/libimg.asm \ + lib/libini.obj:LIB/LIBINI.OBJ:$(PROGS)/develop/libraries/libs-dev/libini/libini.asm \ + lib/libio.obj:LIB/LIBIO.OBJ:$(PROGS)/develop/libraries/libs-dev/libio/libio.asm \ + lib/network.obj:LIB/NETWORK.OBJ:$(PROGS)/develop/libraries/network/network.asm \ + lib/proc_lib.obj:LIB/PROC_LIB.OBJ:$(PROGS)/develop/libraries/proc_lib/trunk/proc_lib.asm \ + media/animage:MEDIA/ANIMAGE:$(PROGS)/media/animage/trunk/animage.asm \ + media/cdp:MEDIA/CDP:$(PROGS)/media/cdp/trunk/cdp.asm \ + media/kiv:MEDIA/KIV:$(PROGS)/media/kiv/trunk/kiv.asm \ + media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \ + network/airc:NETWORK/AIRC:$(PROGS)/network/airc/trunk/airc.asm \ + network/arpstat:NETWORK/ARPSTAT:$(PROGS)/network/arpstat/trunk/arpstat.asm \ + network/chess:NETWORK/CHESS:$(PROGS)/network/chess/trunk/chess.asm \ + network/ethstat:NETWORK/ETHSTAT:$(PROGS)/network/ethstat/trunk/ethstat.asm \ + network/ftps:NETWORK/FTPS:$(PROGS)/network/ftps/trunk/FTPS.ASM \ + network/httpc:NETWORK/HTTPC:$(PROGS)/network/httpc/trunk/httpc.asm \ + network/https:NETWORK/HTTPS:$(PROGS)/network/https/trunk/https.asm \ + network/nntpc:NETWORK/NNTPC:$(PROGS)/network/nntpc/trunk/nntpc.asm \ + network/nslookup:NETWORK/NSLOOKUP:$(PROGS)/develop/libraries/network/examples/nslookup.asm \ + network/popc:NETWORK/POPC:$(PROGS)/network/popc/trunk/popc.asm \ + network/smtps:NETWORK/SMTPS:$(PROGS)/network/smtps/trunk/smtps.asm \ + network/stackcfg:NETWORK/STACKCFG:$(PROGS)/network/stackcfg/trunk/stackcfg.asm \ + network/telnet:NETWORK/TELNET:$(PROGS)/network/telnet/trunk/telnet.asm \ + network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/trunk/tftpc.asm \ + network/VNCclient:NETWORK/VNCclient:$(PROGS)/network/VNCclient/VNCclient.asm \ + network/ym:NETWORK/YM:$(PROGS)/network/ym/trunk/ym.asm \ + network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.asm \ +# end of list + +# The list of files which should be copied from somewhere. +# Format of an item is exactly the same as in the previous list. +COPY_FILES:=\ + macros.inc:MACROS.INC:$(PROGS)/macros.inc \ + config.inc:CONFIG.INC:$(PROGS)/config.inc \ + struct.inc:STRUCT.INC:$(PROGS)/struct.inc \ + File|Managers/z_icons.png:File|Managers/Z_ICONS.PNG:$(PROGS)/develop/libraries/box_lib/asm/trunk/z_icons.png \ + fonts/euro.chr:FONTS/EURO.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/EURO.CHR \ + fonts/goth.chr:FONTS/GOTH.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/GOTH.CHR \ + fonts/lcom.chr:FONTS/LCOM.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LCOM.CHR \ + fonts/litt.chr:FONTS/LITT.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LITT.CHR \ + fonts/sans.chr:FONTS/SANS.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SANS.CHR \ + fonts/scri.chr:FONTS/SCRI.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SCRI.CHR \ + fonts/simp.chr:FONTS/SIMP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SIMP.CHR \ + fonts/smal.chr:FONTS/SMAL.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SMAL.CHR \ + fonts/trip.chr:FONTS/TRIP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TRIP.CHR \ + fonts/tscr.chr:FONTS/TSCR.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TSCR.CHR + +# List of other files to be included in the image file. +# Some of them are auto-built with special rules, some just exist before build. +# Each item is of the form :. +# Spaces should be represented as |. +OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ + background.gif:background.gif default.skn:DEFAULT.SKN \ + e80:E80 graph:GRAPH hdread:HDREAD htmlv:HTMLV \ + icons.dat:ICONS.DAT iconstrp.gif:ICONSTRP.GIF index_htm:INDEX.HTM \ + kernel.mnt:KERNEL.MNT kerpack:KERPACK keymap.key:KEYMAP.KEY kpack:KPACK \ + kuzkina.mid:KUZKINA.MID lang.inc:LANG.INC lang.ini:LANG.INI \ + menu.dat:MENU.DAT mykey:MYKEY @notify:@NOTIFY \ + panel.dat:PANEL.DAT pipetka:PIPETKA setup.dat:SETUP.DAT \ + shell:SHELL spanel:SPANEL table:TABLE test:TEST \ + vmode:VMODE \ + 3d/3dsheart:3D/3DSHEART 3d/3dspiral:3D/3DSPIRAL 3d/cubeline:3D/CUBELINE \ + 3d/flatwav:3D/FLATWAV 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \ + demos/aclock:DEMOS/ACLOCK demos/ak47.lif:DEMOS/AK47.LIF \ + demos/barge.lif:DEMOS/BARGE.LIF demos/life2:DEMOS/LIFE2 \ + demos/relay.lif:DEMOS/RELAY.LIF demos/rpento.lif:DEMOS/RPENTO.LIF \ + demos/use_mb:DEMOS/USE_MB demos/web:DEMOS/WEB \ + drivers/atikms.dll:DRIVERS/ATIKMS.DLL \ + File|Managers/buttons.bmp:File|Managers/BUTTONS.BMP \ + File|Managers/eolite:File|Managers/EOLITE \ + File|Managers/eolite.ini:File|Managers/EOLITE.INI \ + File|Managers/icons.bmp:File|Managers/ICONS.BMP \ + File|Managers/icons.ini:File|Managers/ICONS.INI \ + File|Managers/kfar.ini:File|Managers/KFAR.INI \ + File|Managers/kfm:File|Managers/KFM \ + File|Managers/kfm.ini:File|Managers/KFM.INI \ + File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT \ + fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \ + fonts/char.mt:FONTS/CHAR.MT \ + games/appdata.dat:GAMES/APPDATA.DAT games/ataka:GAMES/ATAKA \ + games/basekurs.kla:GAMES/BASEKURS.KLA games/bnc:GAMES/BNC games/c4:GAMES/C4 \ + games/checkers:GAMES/CHECKERS games/clicks:GAMES/CLICKS \ + games/FindNumbers:GAMES/FindNumbers games/gomoku:GAMES/GOMOKU \ + games/klavisha:GAMES/KLAVISHA games/kosilka:GAMES/KOSILKA \ + games/kosskin.gfx:GAMES/KOSSKIN.GFX games/kox:GAMES/KOX \ + games/lights:GAMES/LIGHTS games/megamaze:GAMES/MEGAMAZE games/mine:GAMES/MINE \ + games/msquare:GAMES/MSQUARE games/padenie:GAMES/PADENIE \ + games/reversi:GAMES/REVERSI games/rforces:GAMES/RFORCES \ + games/snake.ini:GAMES/SNAKE.INI games/sq_game:GAMES/SQ_GAME \ + games/sudoku:GAMES/SUDOKU games/sw:GAMES/SW games/whowtbam:GAMES/WHOWTBAM \ + games/xonix:GAMES/XONIX \ + lib/cnv_png.obj:LIB/CNV_PNG.OBJ lib/msgbox.obj:LIB/MSGBOX.OBJ \ + lib/pixlib.obj:LIB/PIXLIB.OBJ lib/sort.obj:LIB/SORT.OBJ \ + media/ac97snd:MEDIA/AC97SND media/kiv.ini:MEDIA/KIV.INI \ + media/listplay:MEDIA/LISTPLAY media/startmus:MEDIA/STARTMUS \ + network/jmail:NETWORK/JMAIL network/zeroconf.ini:NETWORK/ZEROCONF.INI \ +#end of list +#3d/logio.bmp:3D/LOGIO.BMP 3d/cubetext:3D/CUBETEXT + +# Some macro for convenient work. +# Macros for replacing '|' to escaped space '\ '. +space:=\ #plus space +respace=$(subst |,$(space),$(1)) +# Macro for selecting different parts of ':'-separated items. +binarypart=$(word 1,$(subst :, ,$(1))) +imagepart=$(word 2,$(subst :, ,$(1))) +sourcepart=$(word 3,$(subst :, ,$(1))) +# Get file names, possibly with spaces inside, from an item. +# Here $(f) is an item - in fact, macro argument. +fbinary=$(call respace,$(call binarypart,$(f))) +fimage=$(call respace,$(call imagepart,$(f))) +fsource=$(call respace,$(call sourcepart,$(f))) + +# Define targets for image file. +# Join lists $(FASM_PROGRAMS), $(COPY_FILES) and $(OTHER_FILES); +# for each item in the united list call fbinary. +targets:=$(foreach f,$(COPY_FILES) $(FASM_PROGRAMS) $(OTHER_FILES),$(fbinary)) + +# Define a command for copying a file inside the image. +# mcopy_command is a macro with two parameters, +# local file name $(1) and image file name $(2). +# Note that spaces in these have to be escaped with backslashes. +mcopy_command=mcopy -mi $(BUILD_DIR)/kolibri.img $(1) ::$(2) +# Specialize a previous command for an item $(f) in one of lists. +mcopy_item_command=$(call mcopy_command,$(fbinary),$(fimage)) + +# Join all $(mcopy_item_command) for all items, +# append newline after each item. +# The first newline character after "define" line and +# the last newline character before "endef" line get away +# with define/endef, so we make three newline characters, +# that is two empty lines, in order to get one in $(newline). +define newline + + +endef +mcopy_all_items:=$(foreach f,$(FASM_PROGRAMS) $(COPY_FILES) $(OTHER_FILES),$(mcopy_item_command)$(newline)) + +# The main goal: image. +$(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \ + Makefile \ + $(BUILD_DIR)/boot_fat12.bin \ + $(targets) +# SYSXTREE +# 3d/CUBETEXT +# 3d/LOGIO.BMP + dd if=/dev/zero of=$(BUILD_DIR)/kolibri.img count=2880 bs=512 + mformat -f 1440 -i $(BUILD_DIR)/kolibri.img :: + dd if=$(BUILD_DIR)/boot_fat12.bin of=$(BUILD_DIR)/kolibri.img count=1 bs=512 conv=notrunc + mmd -i $(BUILD_DIR)/kolibri.img ::3D + mmd -i $(BUILD_DIR)/kolibri.img ::DEMOS + mmd -i $(BUILD_DIR)/kolibri.img ::DEVELOP + mmd -i $(BUILD_DIR)/kolibri.img ::DRIVERS + mmd -i $(BUILD_DIR)/kolibri.img ::File\ Managers + mmd -i $(BUILD_DIR)/kolibri.img ::FONTS + mmd -i $(BUILD_DIR)/kolibri.img ::GAMES + mmd -i $(BUILD_DIR)/kolibri.img ::LIB + mmd -i $(BUILD_DIR)/kolibri.img ::MEDIA + mmd -i $(BUILD_DIR)/kolibri.img ::NETWORK + $(mcopy_all_items) + +# Special target to modify behaviour of make. +.DELETE_ON_ERROR: + +# The floppy bootsector. +$(BUILD_DIR)/boot_fat12.bin: $(KERNEL)/bootloader/boot_fat12.asm $(KERNEL)/bootloader/floppy1440.inc + fasm $(KERNEL)/bootloader/boot_fat12.asm $(BUILD_DIR)/boot_fat12.bin + +$(BUILD_DIR)/.dir 3d/.dir demos/.dir develop/.dir drivers/.dir fonts/.dir \ + games/.dir lib/.dir media/.dir network/.dir .deps/.dir: + mkdir -p $(dir $@) + touch $@ +File\ Managers/.dir: + mkdir -p "File Managers" + touch "File Managers/.dir" + +# Define the rule for all FASM programs. +# Yes, this looks like a black magic. +# But it is not so scary as it seems. +# First, we define "meta-rule" as a rule which is +# macro depending on $(fasmprog). +# Second, the construction foreach+eval creates +# usual rules, one for each $(fasmprog) in $(FASM_PROGRAMS). +# Note that meta-rule is double-expanded, first +# time as the arg of eval - it is the place where $(fasmprog) +# gets expanded - and second time as the rule; +# so all $ which are expected to expand at the second time should be escaped. +# And all $ which are expected to be expanded by the shell should be escaped +# twice, so they become $$$$. + +# The arguments of macro fasm_meta_rule: +# $(1) = name of binary file, +# $(2) = name of main source file. +# $(3) = folder of binary file - without spaces. +# $(4) = name of program - without path and extension, +define fasm_meta_rule +$(1): $(2) Makefile .deps/.dir $$(call respace,$$(addsuffix .dir,$(3))) + fasm -m 65536 $$< "$$@" -s .deps/$(4).fas + prepsrc .deps/$(4).fas /dev/null + prepsrc .deps/$(4).fas /dev/stdout | (echo -n '$(1):' && \ + perl -ne 's|\\|/|g;print " \\\n $$$$1" if /^;include \x27(.*?)\x27/' \ + && echo) > .deps/$(4).Po + kpack --nologo "$$@" +-include .deps/$(4).Po +endef + +progname=$(call respace,$(basename $(notdir $(call binarypart,$(f))))) +binarydir=$(subst ./,,$(dir $(call binarypart,$(f)))) +$(foreach f,$(FASM_PROGRAMS),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname)))) + +# Rule for the kernel differs: it uses kerpack instead of kpack. +kernel.mnt: $(KERNEL)/kernel.asm Makefile .deps/.dir + fasm -m 65536 $< "$@" -s .deps/kernel.fas + prepsrc .deps/kernel.fas /dev/null + prepsrc .deps/kernel.fas /dev/stdout | (echo -n 'kernel.mnt:' && \ + perl -ne 's|\\|/|g;print " \\\n $$1" if /^;include \x27(.*?)\x27/' \ + && echo) > .deps/kernel.Po + kerpack $@ +-include .deps/kernel.Po + +# Rule for copying files is simpler, but similar to previous. +define copy_meta_rule +$(1): $(2) Makefile $$(call respace,$$(addsuffix .dir,$(3))) + cp $$< "$$@" +endef +$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir)))) + +# Special rules for copying sysfuncr.txt. +docpak: $(DOCDIR)SYSFUNCR.TXT $(wildcard $(DOCDIR)*) +$(DOCDIR)SYSFUNCR.TXT: $(KERNEL)/docs/sysfuncr.txt + cp $(KERNEL)/docs/sysfuncr.txt $(DOCDIR)SYSFUNCR.TXT diff --git a/data/rus/asciivju b/data/rus/asciivju new file mode 100644 index 0000000000000000000000000000000000000000..bcf76e26d07b9c28695f6b1c416c180cf9cd479b GIT binary patch literal 684 zcmV;d0#p4e1poj+00001Mv*2LLXK;4&&M{gp_IzXQTp%9D8t}4T<%p-1^^&8 ze?=HpR~kyo#9vKIQKC|4mRVLlhwqFNJZ8?iqQN>$_ z470eNAmaJaWL3c8d{#qlEO05Jtl8UTNB&~%89RaW*vH41`nM+s1|oLKXz@SkA=DZ)!crriLW8ob zy5>X$p>Lxsj38^$eHZs??;GI%KeJMa-lLIJmcPj!-fJczf&5H9j%Z!siY zO;E1VhtpXrU!LS$(WUG*%EnCu&Oy}wyt=X4vuQ=dRJZTA?-UI#wKoHPifK(%=OJYw znku{D&ZgRAvwb36)p@X>uku(8neKBTM{$?nV8TFZYEV&9P~l&i4%l_`J5+ktE0!WC z0aYMAv-DJtIfotc;Nfu73#&H>v>IyTAGil#K2;1DZSdm}8BKX!Smi#1eRvwKJYGe3 zsx1r02WE{cS%87(AR|zdC{~|6ra!fm8jh&q%PGMXLcJneUaKKKC?7XNd;#~fFN45E S 1 # COM mice detector +/RD/1/DRIVERS/ATIKMS -l/rd/1/drivers/ati.log -1 #ATI videodriver loader +/RD/1/MEDIA/KIV \T__background.gif -1 # Desktop background image +/RD/1/@CLIP 1 # Clipboard +/RD/1/@RB 1 # Desktop right-click menu +/RD/1/@SS 1 # Screensaver +/RD/1/@PANEL 1 # Start panel +/RD/1/SETUP BOOT 1 # Load device settings +/RD/1/ICON BOOT 1 # Multithread icon +/RD/1/NETWORK/ZEROCONF 1 # Network configuration +### Hello, ASM World! ### diff --git a/data/rus/background.gif b/data/rus/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd67e638541a63bc0c3102b4d880f8f10245054c GIT binary patch literal 1226 zcmZ?wbhEHboWL-F;X4BeNOA>;>1A4(RXJJqd1S1MoN+98_QR&IZM8M$H{~4J)BL3G zz}w?TzdYXb_SOAwU>&2xXb23G5YPen1C$pSIQ}y*a>#gWSa7hJLs%>3#D;~3+Xa-p z=6GyebhKN-IP1=djf;=>D>!$_cy3y9agwu<%~^M)f;7UHG7DAw_1d=P=4P$q zi(*f2TN1c6HVL1=!PsN3L}#^WB7YZ;Gw&-Ol_)Ac}9 zV^KEev$n~7+m^l%o*4GG<8iu}mcYYIE}I1h8ZKEzE}Z0@w({vTS+)j-X=@cvKAn*= XEpwS~lGgVFGjq1ROp9S;WUvMRj>YTi literal 0 HcmV?d00001 diff --git a/data/rus/default.skn b/data/rus/default.skn new file mode 100644 index 0000000000000000000000000000000000000000..e6b4f208e5839a6c60e1b3bbb93d597ecad3a28f GIT binary patch literal 1203 zcmV;k1Wfx&P(w>}BLDya0000%#gZwsj&&}CIeQq_5y2*c66<(MrJAFs1dhDf@5CH!0yt25 z)Nt!*cMpbDFFlK@C}UqflaQ!-FGl|=H-(=w9=7N4q26wDNH}0#>t=kQG*t1@_E$J3 zb7cnSLPa7IYAo{=PYnOWWAF1@YnmV4C6{^_)eB8;Q?Lc?2N>5o> zocGN8dLYf6?Tr+-?Ww9gr6yUR(L5mY@APMnCTz$$!dYXHy9eYN{DHAm3mprUd?JZ& z_^=Ysq=%aUqcshf_IUv3Kj{xm=4CWm*cDJ_%)}&{&w+w=LQIOFha5vQ>&HVErq-2y zuJ^DNH`ABZ>{X=7rfTT@vi4L6qX|1`otw7X!0z&}f2iaP`lx&f_bfe+3j@eL-4wHm z*zmsk-4)@o=JlFY8M@Oe3E7-?0WB;50*uU}1t(>xZ-Au=ng(b@k#JSK^h9Br$+PfW zFOC9`_in$(-d3-`>g*DJQ;k*_Z16DcUK@Ct>fo%!HPyIaR?)zkj`4kvjWs(}MCUiQ zl@b-+QLUlbsjWkDR`Vazu( z_QBZ{gYhO2aq)Phvb-7Q-QuHfq2II+J_4d2gvA+~rh)n^XV$*L`Yt7xu+~lf1}vSF zrTNvH^(yA5UTgM^DXc|x3qZ5p(KY-W!ESZ$^rft^V|bIO^^*GWv-JRof)jS%JaMA< z{N-0{>rL3)b>HZx-nY*^&J#C=qwX$aJ~D(Z6*NLlB#g$pr`FARf~votXRnz9vq4M| zHV3j8Vm)tW@JP{O_@$((uV32|7#phaG;Xl|D++=lp-}q-HAQSz6=ekeeo|vzW}VD2 z@ixG831bMUWMz7#b_IUUN+>zUQA{KFJQsfWHk9Sk#yNWr9`jsYS=rRN6!13Oo;>M^ zHj;a*n7E!8oqGd59M;zykK$vvnXw}}PE8aM?tL^Bv&rz_*+QeT#Mbj-yjfcFTiXC!uSt}Q&{Y@Iz4IQ z?WYREO8c%E^48|Oo_i~7=d~N`I7==^0XKjl3)Is6=`BUF4KC84t;D((&N{Ug%1crq zevLBSVc@%@NYDURL_B5^T#K15hnZNMq=>b(t$PBMWIBKF?xKT)rD;6#bavtyRU|y} zW_@m#xPno818kI?d!r`hb0>QTdN|V R!Cd0u72r}9T!jyL`JTz#UI73A literal 0 HcmV?d00001 diff --git a/data/rus/demos/aclock b/data/rus/demos/aclock new file mode 100644 index 0000000000000000000000000000000000000000..cf5b8ddd88bb4bf14c660c3a811bb0210cae7313 GIT binary patch literal 1206 zcmV;n1WEf#P(w@m1^@s-00001Mv*2LLXK;4&&M{}4FNtG1>^0(^p?IH4?*s=$9OC5 zNkK=|+CQ}9M$O`@7%f6>gNkOS2Ux$*L5>o;%>&(k!rzb~DAO(B$}d)zaBqA|H2JiP zxK1t8acDPzU6UrP=wg8;WTfalUJLS^G|U`v69kS>*$D8b@Tx&O?S4lvZ?>s>`lF2f z6C(}{|MkGpwT|=@qTC|~+H{|dW$aXW^!3D_zE_@p@fYoF-sAvKXbJ^wq#H-6#eFYQ z`TU!Qf`3}iN{sohRdt8bCBdIqoSJ691OX!=t=BN1IVC|6TFD#Ug_oD0_g^Q{w=t@a zn`*6Xu#lF-dt52$kLTgKSc3W&Elv!raw{h<9!bpB9ZRsdU2iYc=AG8KS)%xic<@2B zf$4$(jog?2t>Lb=@+qPxc{wZ50ILwfhE~EE3|wx4AD35;?}m|K-JJYw-3ygaeTgq{BzhD)iH%pNx%T7^C_n)U77Eaoo z6C6dlKUdtp;*}pkX#o*ZYhx2HGn+~h;5zv-o^nOq*_sWbG4#h3bAi~2mm??}+ zq*d7n@)N*-em#L?PzK`i&)lv;i+@aOYC4?dtK?L>#^Z-g*{Z(6K6YH#6V-AUT}Fc> zu-%VhZO8Rso`z6HlLDN!9~hoOL{1|H0PR+QqhX)R#US1s@vMW+ilej9#QjMp&Ips~ zAOn!SM0ULhM6NzVH&O@Yxz+I9Gf{AESnk{6Ttg=wPhmxlf*USr3H(nEH9 z+M0!MPE`!TULS{=CV^HGv;H?jF(01>bQ83xu%R%{{k!?aL^{x5y=vttIM_^5E~;=E zH4zjBOcPM-R=3nrOsCzYVJ;{N9G2w!2jJsNe#7V5*Hb9VWvMN1Xk{$1IrAOi>%S|= zsN?zAnP!rlm*i5<#dW%`y-Gum0xf-|028b{0_l?S>kLI*V{w@j%Rqw3eux1ZW*R|y z+NySNdhUb!W&A0K$7j=0Gq(cIMme1!>Rwh+73~07#X|k42?Q3H{y2M9rgu_^(&5sk zX7m*HWX`U-kk{%&hX)@MpE%or%C?TPg$fI1P9JA`KJ%0t3u_D=LBOM2$kIGf`$^Sd zBQX~C3Q6Pp9I|^hzVg#KF=_aI;G>)dI!Ab1?>*TL!G7aYpQk!{k32^KpM!jZgc|Y U80rkEBociEi5>s|AOHXW0GldG6951J literal 0 HcmV?d00001 diff --git a/data/rus/demos/ak47.lif b/data/rus/demos/ak47.lif new file mode 100644 index 0000000000..9338b986ce --- /dev/null +++ b/data/rus/demos/ak47.lif @@ -0,0 +1,71 @@ +#Life 1.05 +#D AK47, a gun at 47 gens/shot. +#D The AK47 reaction (middle) +#D by Richard Schroeppel was +#D known for years before +#D stabilizers were found by +#D Paul Callahan in July 1994. +#D See also P94S. +#N +#P -23 -11 +...** +..*..* +.*.*..* +.*.*...* +**.*.****** +...*..*.* +...***.*..* +.**...*.*.* +*..*.**.* +.**...*.** +...**....* +...*.*...* +**.*.....** +.*.*.** +.*.*..* +..*..* +...** +#P -6 -12 +**.......* +**.....*** +......* +......** +. +...*** +..*...* +.*.....* +.*.....* +.*.....* +..*...* +...*** +. +. +. +. +. +. +. +. +. +....** +.....* +..***.....** +..*.......** +#P 12 -5 +......** +.....*..* +....*.**.* +.*...*.*.* +.*...*.*.** +*......* +..*..*** +..*.....** +..*.**.*..* +.**.*...** +**...*** +.**....* +**..**.*.** +....**.*.* +....*..*.* +.....*..* +......** diff --git a/data/rus/demos/barge.lif b/data/rus/demos/barge.lif new file mode 100644 index 0000000000..be6317d4f3 --- /dev/null +++ b/data/rus/demos/barge.lif @@ -0,0 +1,406 @@ +#Life 1.05 +#D c/3 spaceship extensible in 2 dimensions +#D Hartmut Holzwart, David Bell +#N +#P -32 -50 +...* +..*.* +.** +..* +.*.* +.* +* +*.* +*.* +.**** +...*.* +...*.* +..* +..*** +* +*** +.***.* +...* +...* +...** +#P -29 -29 +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +. +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +. +** +*..* +*.** +.*** +.** +...* +.** +..*.* +...* +. +...* +..*.* +.** +...* +.** +.*** +*.** +*..* +** +#P -32 31 +...** +...* +...* +.***.* +*** +* +..*** +..* +...*.* +...*.* +.**** +*.* +*.* +* +.* +.*.* +..* +.** +..*.* +...* +#P -24 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P -12 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 0 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 12 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +#P 24 -29 +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* +. +..**.*.*.* +.*...*..** +*.....* +.*......*.* +...**..**.* +..*...* +..*.***...* +..* +...******** +. +...******** +..* +..*.***...* +..*...* +...**..**.* +.*......*.* +*.....* +.*...*..** +..**.*.*.* diff --git a/data/rus/demos/life2 b/data/rus/demos/life2 new file mode 100644 index 0000000000000000000000000000000000000000..e1c677d85ff305e06b408975e2b16b6161493f85 GIT binary patch literal 18001 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 Isg-&bYjdJQfB*mh literal 0 HcmV?d00001 diff --git a/data/rus/demos/web b/data/rus/demos/web new file mode 100644 index 0000000000000000000000000000000000000000..14548ae9c1b157c514db23cc39b80a6887b4b0f6 GIT binary patch literal 503 zcmVo@7hMZUujzskt6^5kpXs{G5`xKIky~m@f|;niC{})7S5JK5Xnx=HxuO9 zLRaB_NswI1n7UA@2V2`FD}#1pPvmSu+z|CNOEqd5x47>sAOHj-jXxPnI1+NWix+#I zZ`pd)YmC;6PE;(=sEx?5W4WScSJpf5Qo7d z=JlB3N;c142qTT*pC#mVtB!o~V<22_Uj5i1s5=JZ773D+^KN#41O9JQ6x31ElfaCa zQn6!@I3r+n)9XuodCsU@4=kmvpMXMdK0a($HW~MU`n2F_4YQlWHW*#N2mXjt&g8c4QKH`000~x^@{)i literal 0 HcmV?d00001 diff --git a/data/rus/docs/FASM.TXT b/data/rus/docs/FASM.TXT new file mode 100644 index 0000000000..dbab403b0b --- /dev/null +++ b/data/rus/docs/FASM.TXT @@ -0,0 +1,3591 @@ + + ▄▀▀▀ + ▄▄█▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄ + █ █ █ █ █ █ + █ ▄▀▀▀▀█ ▀▀▀▀▄ █ █ █ + █ ▀▄▄▄▄█▄ ▄▄▄▄▄▀ █ █ █ + + flat assembler 1.66 + Programmer's Manual + + +Table of contents +───────────────── + +Chapter 1 Introduction + + 1.1 Compiler overview + 1.1.1 System requirements + 1.1.2 Executing compiler from command line + 1.1.3 Compiler messages + 1.1.4 Output formats + + 1.2 Assembly syntax + 1.2.1 Instruction syntax + 1.2.2 Data definitions + 1.2.3 Constants and labels + 1.2.4 Numerical expressions + 1.2.5 Jumps and calls + 1.2.6 Size settings + +Chapter 2 Instruction set + + 2.1 The x86 architecture instructions + 2.1.1 Data movement instructions + 2.1.2 Type conversion instructions + 2.1.3 Binary arithmetic instructions + 2.1.4 Decimal arithmetic instructions + 2.1.5 Logical instructions + 2.1.6 Control transfer instructions + 2.1.7 I/O instructions + 2.1.8 Strings operations + 2.1.9 Flag control instructions + 2.1.10 Conditional operations + 2.1.11 Miscellaneous instructions + 2.1.12 System instructions + 2.1.13 FPU instructions + 2.1.14 MMX instructions + 2.1.15 SSE instructions + 2.1.16 SSE2 instructions + 2.1.17 SSE3 instructions + 2.1.18 AMD 3DNow! instructions + 2.1.19 The x86-64 long mode instructions + + 2.2 Control directives + 2.2.1 Numerical constants + 2.2.2 Conditional assembly + 2.2.3 Repeating blocks of instructions + 2.2.4 Addressing spaces + 2.2.5 Other directives + 2.2.6 Multiple passes + + 2.3 Preprocessor directives + 2.3.1 Including source files + 2.3.2 Symbolic constants + 2.3.3 Macroinstructions + 2.3.4 Structures + 2.3.5 Repeating macroinstructions + 2.3.6 Conditional preprocessing + 2.3.7 Order of processing + + 2.4 Formatter directives + 2.4.1 MZ executable + 2.4.2 Portable Executable + 2.4.3 Common Object File Format + 2.4.4 Executable and Linkable Format + + +Chapter 1 Introduction +─────────────────────── + +This chapter contains all the most important information you need to begin +using the flat assembler. If you are experienced assembly language programmer, +you should read at least this chapter before using this compiler. + + +1.1 Compiler overview + +Flat assembler is a fast assembly language compiler for the x86 architecture +processors, which does multiple passes to optimize the size of generated +machine code. It is self-compilable and versions for different operating +systems are provided. All the versions are designed to be used from the system +command line and they should not differ in behavior. + + +1.1.1 System requirements + +All versions require the x86 architecture 32-bit processor (at least 80386), +although they can produce programs for the x86 architecture 16-bit processors, +too. DOS version requires an OS compatible with MS DOS 2.0 and either true +real mode environment or DPMI. Windows version requires a Win32 console +compatible with 3.1 version. + + +1.1.2 Executing compiler from command line + +To execute flat assembler from the command line you need to provide two +parameters - first should be name of source file, second should be name of +destination file. If no second parameter is given, the name for output +file will be guessed automatically. After displaying short information about +the program name and version, compiler will read the data from source file and +compile it. When the compilation is successful, compiler will write the +generated code to the destination file and display the summary of compilation +process; otherwise it will display the information about error that occurred. + The source file should be a text file, and can be created in any text +editor. Line breaks are accepted in both DOS and Unix standards, tabulators +are treated as spaces. + In the command line you can also include "-m" option followed by a number, +which specifies how many kilobytes of memory flat assembler should maximally +use. In case of DOS version this options limits only the usage of extended +memory. The "-p" option followed by a number can be used to specify the limit +for number of passes the assembler performs. If code cannot be generated +within specified amount of passes, the assembly will be terminated with an +error message. The maximum value of this setting is 65536, while the default +limit, used when no such option is included in command line, is 100. +It is also possible to limit the number of passes the assembler +performs, with the "-p" option followed by a number specifying the maximum +number of passes. + There are no command line options that would affect the output of compiler, +flat assembler requires only the source code to include the information it +really needs. For example, to specify output format you specify it by using +the "format" directive at the beginning of source. + + +1.1.3 Compiler messages + +As it is stated above, after the successful compilation, the compiler displays +the compilation summary. It includes the information of how many passes was +done, how much time it took, and how many bytes were written into the +destination file. +The following is an example of the compilation summary: + +flat assembler version 1.66 +38 passes, 5.3 seconds, 77824 bytes. + +In case of error during the compilation process, the program will display an +error message. For example, when compiler can't find the input file, it will +display the following message: + +flat assembler version 1.66 +error: source file not found. + +If the error is connected with a specific part of source code, the source line +that caused the error will be also displayed. Also placement of this line in +the source is given to help you finding this error, for example: + +flat assembler version 1.66 +example.asm [3]: + mob ax,1 +error: illegal instruction. + +It means that in the third line of the "example.asm" file compiler has +encountered an unrecognized instruction. When the line that caused error +contains a macroinstruction, also the line in macroinstruction definition +that generated the erroneous instruction is displayed: + +flat assembler version 1.66 +example.asm [6]: + stoschar 7 +example.asm [3] stoschar [1]: + mob al,char +error: illegal instruction. + +It means that the macroinstruction in the sixth line of the "example.asm" file +generated an unrecognized instruction with the first line of its definition. + + +1.1.4 Output formats + +By default, when there is no "format" directive in source file, flat +assembler simply puts generated instruction codes into output, creating this +way flat binary file. By default it generates 16-bit code, but you can always +turn it into the 16-bit or 32-bit mode by using "use16" or "use32" directive. +Some of the output formats switch into 32-bit mode, when selected - more +information about formats which you can choose can be found in 2.4. + All output code is always in the order in which it was entered into the +source file. + + +1.2 Assembly syntax + +The information provided below is intended mainly for the assembler +programmers that have been using some other assembly compilers before. +If you are beginner, you should look for the assembly programming tutorials. + Flat assembler by default uses the Intel syntax for the assembly +instructions, although you can customize it using the preprocessor +capabilities (macroinstructions and symbolic constants). It also has its own +set of the directives - the instructions for compiler. + All symbols defined inside the sources are case-sensitive. + + +1.2.1 Instruction syntax + +Instructions in assembly language are separated by line breaks, and one +instruction is expected to fill the one line of text. If a line contains +a semicolon, except for the semicolons inside the quoted strings, the rest of +this line is the comment and compiler ignores it. If a line ends with "\" +character (eventually the semicolon and comment may follow it), the next line +is attached at this point. + Each line in source is the sequence of items, which may be one of the three +types. One type are the symbol characters, which are the special characters +that are individual items even when are not spaced from the other ones. +Any of the "+-*/=<>()[]{}:,|&~#`" is the symbol character. The sequence of +other characters, separated from other items with either blank spaces or +symbol characters, is a symbol. If the first character of symbol is either a +single or double quote, it integrates the any sequence of characters following +it, even the special ones, into a quoted string, which should end with the same +character, with which it began (the single or double quote) - however if there +are two such characters in a row (without any other character between them), +they are integrated into quoted string as just one of them and the quoted +string continues then. The symbols other than symbol characters and quoted +strings can be used as names, so are also called the name symbols. + Every instruction consists of the mnemonic and the various number of +operands, separated with commas. The operand can be register, immediate value +or a data addressed in memory, it can also be preceded by size operator to +define or override its size (table 1.1). Names of available registers you can +find in table 1.2, their sizes cannot be overridden. Immediate value can be +specified by any numerical expression. + When operand is a data in memory, the address of that data (also any +numerical expression, but it may contain registers) should be enclosed in +square brackets or preceded by "ptr" operator. For example instruction +"mov eax,3" will put the immediate value 3 into the EAX register, instruction +"mov eax,[7]" will put the 32-bit value from the address 7 into EAX and the +instruction "mov byte [7],3" will put the immediate value 3 into the byte at +address 7, it can also be written as "mov byte ptr 7,3". To specify which +segment register should be used for addressing, segment register name followed +by a colon should be put just before the address value (inside the square +brackets or after the "ptr" operator). + + Table 1.1 Size operators + ┌──────────┬──────┬───────┐ + │ Operator │ Bits │ Bytes │ + ╞══════════╪══════╪═══════╡ + │ byte │ 8 │ 1 │ + │ word │ 16 │ 2 │ + │ dword │ 32 │ 4 │ + │ fword │ 48 │ 6 │ + │ pword │ 48 │ 6 │ + │ qword │ 64 │ 8 │ + │ tbyte │ 80 │ 10 │ + │ tword │ 80 │ 10 │ + │ dqword │ 128 │ 16 │ + └──────────┴──────┴───────┘ + + Table 1.2 Registers + ┌─────────┬──────┬────────────────────────────────────────────────┐ + │ Type │ Bits │ │ + ╞═════════╪══════╪════════════════════════════════════════════════╡ + │ │ 8 │ al cl dl bl ah ch dh bh │ + │ General │ 16 │ ax cx dx bx sp bp si di │ + │ │ 32 │ eax ecx edx ebx esp ebp esi edi │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Segment │ 16 │ es cs ss ds fs gs │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Control │ 32 │ cr0 cr2 cr3 cr4 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ Debug │ 32 │ dr0 dr1 dr2 dr3 dr6 dr7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ FPU │ 80 │ st0 st1 st2 st3 st4 st5 st6 st7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ MMX │ 64 │ mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 │ + ├─────────┼──────┼────────────────────────────────────────────────┤ + │ SSE │ 128 │ xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 │ + └─────────┴──────┴────────────────────────────────────────────────┘ + + +1.2.2 Data definitions + +To define data or reserve a space for it, use one of the directives listed in +table 1.3. The data definition directive should be followed by one or more of +numerical expressions, separated with commas. These expressions define the +values for data cells of size depending on which directive is used. For +example "db 1,2,3" will define the three bytes of values 1, 2 and 3 +respectively. + The "db" and "du" directives also accept the quoted string values of any +length, which will be converted into chain of bytes when "db" is used and into +chain of words with zeroed high byte when "du" is used. For example "db 'abc'" +will define the three bytes of values 61, 62 and 63. + The "dp" directive and its synonym "df" accept the values consisting of two +numerical expressions separated with colon, the first value will become the +high word and the second value will become the low double word of the far +pointer value. Also "dd" accepts such pointers consisting of two word values +separated with colon, and "dt" accepts the word and quad word value separated +with colon, the quad word is stored first. The "dt" directive with single +expression as parameter accepts only floating point values and creates data in +FPU double extended precision format. + Any of the above directive allows the usage of special "dup" operator to +make multiple copies of given values. The count of duplicates should precede +this operator and the value to duplicate should follow - it can even be the +chain of values separated with commas, but such set of values needs to be +enclosed with parenthesis, like "db 5 dup (1,2)", which defines five copies +of the given two byte sequence. + The "file" is a special directive and its syntax is different. This +directive includes a chain of bytes from file and it should be followed by the +quoted file name, then optionally numerical expression specifying offset in +file preceded by the colon, and - also optionally - comma and numerical +expression specifying count of bytes to include (if no count is specified, all +data up to the end of file is included). For example "file 'data.bin'" will +include the whole file as binary data and "file 'data.bin':10h,4" will include +only four bytes starting at offset 10h. + The data reservation directive should be followed by only one numerical +expression, and this value defines how many cells of the specified size should +be reserved. All data definition directives also accept the "?" value, which +means that this cell should not be initialized to any value and the effect is +the same as by using the data reservation directive. The uninitialized data +may not be included in the output file, so its values should be always +considered unknown. + + Table 1.3 Data directives + ┌─────────┬────────┬─────────┐ + │ Size │ Define │ Reserve │ + │ (bytes) │ data │ data │ + ╞═════════╪════════╪═════════╡ + │ 1 │ db │ rb │ + │ │ file │ │ + ├─────────┼────────┼─────────┤ + │ 2 │ dw │ rw │ + │ │ du │ │ + ├─────────┼────────┼─────────┤ + │ 4 │ dd │ rd │ + ├─────────┼────────┼─────────┤ + │ 6 │ dp │ rp │ + │ │ df │ rf │ + ├─────────┼────────┼─────────┤ + │ 8 │ dq │ rq │ + ├─────────┼────────┼─────────┤ + │ 10 │ dt │ rt │ + └─────────┴────────┴─────────┘ + + +1.2.3 Constants and labels + +In the numerical expressions you can also use constants or labels instead of +numbers. To define the constant or label you should use the specific +directives. Each label can be defined only once and it is accessible from the +any place of source (even before it was defined). Constant can be redefined +many times, but in this case it is accessible only after it was defined, and +is always equal to the value from last definition before the place where it's +used. When a constant is defined only once in source, it is - like the label - +accessible from anywhere. + The definition of constant consists of name of the constant followed by the +"=" character and numerical expression, which after calculation will become +the value of constant. This value is always calculated at the time the +constant is defined. For example you can define "count" constant by using the +directive "count = 17", and then use it in the assembly instructions, like +"mov cx,count" - which will become "mov cx,17" during the compilation process. + There are different ways to define labels. The simplest is to follow the +name of label by the colon, this directive can even be followed by the other +instruction in the same line. It defines the label whose value is equal to +offset of the point where it's defined. This method is usually used to label +the places in code. The other way is to follow the name of label (without a +colon) by some data directive. It defines the label with value equal to +offset of the beginning of defined data, and remembered as a label for data +with cell size as specified for that data directive in table 1.3. + The label can be treated as constant of value equal to offset of labeled +code or data. For example when you define data using the labeled directive +"char db 224", to put the offset of this data into BX register you should use +"mov bx,char" instruction, and to put the value of byte addressed by "char" +label to DL register, you should use "mov dl,[char]" (or "mov dl,ptr char"). +But when you try to assemble "mov ax,[char]", it will cause an error, because +fasm compares the sizes of operands, which should be equal. You can force +assembling that instruction by using size override: "mov ax,word [char]", but +remember that this instruction will read the two bytes beginning at "char" +address, while it was defined as a one byte. + The last and the most flexible way to define labels is to use "label" +directive. This directive should be followed by the name of label, then +optionally size operator (it can be preceded by a colon) and then - also +optionally "at" operator and the numerical expression defining the address at +which this label should be defined. For example "label wchar word at char" +will define a new label for the 16-bit data at the address of "char". Now the +instruction "mov ax,[wchar]" will be after compilation the same as +"mov ax,word [char]". If no address is specified, "label" directive defines +the label at current offset. Thus "mov [wchar],57568" will copy two bytes +while "mov [char],224" will copy one byte to the same address. + The label whose name begins with dot is treated as local label, and its name +is attached to the name of last global label (with name beginning with +anything but dot) to make the full name of this label. So you can use the +short name (beginning with dot) of this label anywhere before the next global +label is defined, and in the other places you have to use the full name. Label +beginning with two dots are the exception - they are like global, but they +don't become the new prefix for local labels. + The "@@" name means anonymous label, you can have defined many of them in +the source. Symbol "@b" (or equivalent "@r") references the nearest preceding +anonymous label, symbol "@f" references the nearest following anonymous label. +These special symbol are case-insensitive. + + +1.2.4 Numerical expressions + +In the above examples all the numerical expressions were the simple numbers, +constants or labels. But they can be more complex, by using the arithmetical +or logical operators for calculations at compile time. All these operators +with their priority values are listed in table 1.4. +The operations with higher priority value will be calculated first, you can +of course change this behavior by putting some parts of expression into +parenthesis. The "+", "-", "*" and "/" are standard arithmetical operations, +"mod" calculates the remainder from division. The "and", "or", "xor", "shl", +"shr" and "not" perform the same logical operations as assembly instructions +of those names. The "rva" performs the conversion of an address into the +relocatable offset and is specific to some of the output formats (see 2.4). + The numbers in the expression are by default treated as a decimal, binary +numbers should have the "b" letter attached at the end, octal number should +end with "o" letter, hexadecimal numbers should begin with "0x" characters +(like in C language) or with the "$" character (like in Pascal language) or +they should end with "h" letter. Also quoted string, when encountered in +expression, will be converted into number - the first character will become +the least significant byte of number. + The numerical expression used as an address value can also contain any of +general registers used for addressing, they can be added and multiplied by +appropriate values, as it is allowed for the x86 architecture instructions. + There are also some special symbols that can be used inside the numerical +expression. First is "$", which is always equal to the value of current +offset, while "$$" is equal to base address of current addressing space. The +other one is "%", which is the number of current repeat in parts of code that +are repeated using some special directives (see 2.2). There's also "%t" +symbol, which is always equal to the current time stamp. + Any numerical expression can also consist of single floating point value +(flat assembler does not allow any floating point operations at compilation +time) in the scientific notation, they can end with the "f" letter to be +recognized, otherwise they should contain at least one of the "." or "E" +characters. So "1.0", "1E0" and "1f" define the same floating point value, +while simple "1" defines an integer value. + + Table 1.4 Arithmetical and logical operators by priority + ┌──────────┬──────────────┐ + │ Priority │ Operators │ + ╞══════════╪══════════════╡ + │ 0 │ + - │ + ├──────────┼──────────────┤ + │ 1 │ * / │ + ├──────────┼──────────────┤ + │ 2 │ mod │ + ├──────────┼──────────────┤ + │ 3 │ and or xor │ + ├──────────┼──────────────┤ + │ 4 │ shl shr │ + ├──────────┼──────────────┤ + │ 5 │ not │ + ├──────────┼──────────────┤ + │ 6 │ rva │ + └──────────┴──────────────┘ + + +1.2.5 Jumps and calls + +The operand of any jump or call instruction can be preceded not only by the +size operator, but also by one of the operators specifying type of the jump: +"short", "near" of "far". For example, when assembler is in 16-bit mode, +instruction "jmp dword [0]" will become the far jump and when assembler is +in 32-bit mode, it will become the near jump. To force this instruction to be +treated differently, use the "jmp near dword [0]" or "jmp far dword [0]" form. + When operand of near jump is the immediate value, assembler will generate +the shortest variant of this jump instruction if possible (but won't create +32-bit instruction in 16-bit mode nor 16-bit instruction in 32-bit mode, +unless there is a size operator stating it). By specifying the jump type +you can force it to always generate long variant (for example "jmp near 0") +or to always generate short variant and terminate with an error when it's +impossible (for example "jmp short 0"). + + +1.2.6 Size settings + +When instruction uses some memory addressing, by default the smallest form of +instruction is generated by using the short displacement if only address +value fits in the range. This can be overridden using the "word" or "dword" +operator before the address inside the square brackets (or after the "ptr" +operator), which forces the long displacement of appropriate size to be made. +In case when address is not relative to any registers, those operators allow +also to choose the appropriate mode of absolute addressing. + Instructions "adc", "add", "and", "cmp", "or", "sbb", "sub" and "xor" with +first operand being 16-bit or 32-bit are by default generated in shortened +8-bit form when the second operand is immediate value fitting in the range +for signed 8-bit values. It also can be overridden by putting the "word" or +"dword" operator before the immediate value. The similar rules applies to the +"imul" instruction with the last operand being immediate value. + Immediate value as an operand for "push" instruction without a size operator +is by default treated as a word value if assembler is in 16-bit mode and as a +double word value if assembler is in 32-bit mode, shorter 8-bit form of this +instruction is used if possible, "word" or "dword" size operator forces the +"push" instruction to be generated in longer form for specified size. "pushw" +and "pushd" mnemonics force assembler to generate 16-bit or 32-bit code +without forcing it to use the longer form of instruction. + + +Chapter 2 Instruction set +────────────────────────── + +This chapter provides the detailed information about the instructions and +directives supported by flat assembler. Directives for defining labels were +already discussed in 1.2.3, all other directives will be described later in +this chapter. + + +2.1 The x86 architecture instructions + +In this section you can find both the information about the syntax and +purpose the assembly language instructions. If you need more technical +information, look for the Intel Architecture Software Developer's Manual. + Assembly instructions consist of the mnemonic (instruction's name) and from +zero to three operands. If there are two or more operands, usually first is +the destination operand and second is the source operand. Each operand can be +register, memory or immediate value (see 1.2 for details about syntax of +operands). After the description of each instruction there are examples +of different combinations of operands, if the instruction has any. + Some instructions act as prefixes and can be followed by other instruction +in the same line, and there can be more than one prefix in a line. Each name +of the segment register is also a mnemonic of instruction prefix, altough it +is recommended to use segment overrides inside the square brackets instead of +these prefixes. + + +2.1.1 Data movement instructions + +"mov" transfers a byte, word or double word from the source operand to the +destination operand. It can transfer data between general registers, from +the general register to memory, or from memory to general register, but it +cannot move from memory to memory. It can also transfer an immediate value to +general register or memory, segment register to general register or memory, +general register or memory to segment register, control or debug register to +general register and general register to control or debug register. The "mov" +can be assembled only if the size of source operand and size of destination +operand are the same. Below are the examples for each of the allowed +combinations: + + mov bx,ax ; general register to general register + mov [char],al ; general register to memory + mov bl,[char] ; memory to general register + mov dl,32 ; immediate value to general register + mov [char],32 ; immediate value to memory + mov ax,ds ; segment register to general register + mov [bx],ds ; segment register to memory + mov ds,ax ; general register to segment register + mov ds,[bx] ; memory to segment register + mov eax,cr0 ; control register to general register + mov cr3,ebx ; general register to control register + + "xchg" swaps the contents of two operands. It can swap two byte operands, +two word operands or two double word operands. Order of operands is not +important. The operands may be two general registers, or general register +with memory. For example: + + xchg ax,bx ; swap two general registers + xchg al,[char] ; swap register with memory + + "push" decrements the stack frame pointer (ESP register), then transfers +the operand to the top of stack indicated by ESP. The operand can be memory, +general register, segment register or immediate value of word or double word +size. If operand is an immediate value and no size is specified, it is by +default treated as a word value if assembler is in 16-bit mode and as a double +word value if assembler is in 32-bit mode. "pushw" and "pushd" mnemonics are +variants of this instruction that store the values of word or double word size +respectively. If more operands follow in the same line (separated only with +spaces, not commas), compiler will assemble chain of the "push" instructions +with these operands. The examples are with single operands: + + push ax ; store general register + push es ; store segment register + pushw [bx] ; store memory + push 1000h ; store immediate value + + "pusha" saves the contents of the eight general register on the stack. +This instruction has no operands. There are two version of this instruction, +one 16-bit and one 32-bit, assembler automatically generates the appropriate +version for current mode, but it can be overridden by using "pushaw" or +"pushad" mnemonic to always get the 16-bit or 32-bit version. The 16-bit +version of this instruction pushes general registers on the stack in the +following order: AX, CX, DX, BX, the initial value of SP before AX was pushed, +BP, SI and DI. The 32-bit version pushes equivalent 32-bit general registers +in the same order. + "pop" transfers the word or double word at the current top of stack to the +destination operand, and then increments ESP to point to the new top of stack. +The operand can be memory, general register or segment register. "popw" and +"popd" mnemonics are variants of this instruction for restoring the values of +word or double word size respectively. If more operands separated with spaces +follow in the same line, compiler will assemble chain of the "pop" +instructions with these operands. + + pop bx ; restore general register + pop ds ; restore segment register + popw [si] ; restore memory + + "popa" restores the registers saved on the stack by "pusha" instruction, +except for the saved value of SP (or ESP), which is ignored. This instruction +has no operands. To force assembling 16-bit or 32-bit version of this +instruction use "popaw" or "popad" mnemonic. + + +2.1.2 Type conversion instructions + +The type conversion instructions convert bytes into words, words into double +words, and double words into quad words. These conversions can be done using +the sign extension or zero extension. The sign extension fills the extra bits +of the larger item with the value of the sign bit of the smaller item, the +zero extension simply fills them with zeros. + "cwd" and "cdq" double the size of value AX or EAX register respectively +and store the extra bits into the DX or EDX register. The conversion is done +using the sign extension. These instructions have no operands. + "cbw" extends the sign of the byte in AL throughout AX, and "cwde" extends +the sign of the word in AX throughout EAX. These instructions also have no +operands. + "movsx" converts a byte to word or double word and a word to double word +using the sign extension. "movzx" does the same, but it uses the zero +extension. The source operand can be general register or memory, while the +destination operand must be a general register. For example: + + movsx ax,al ; byte register to word register + movsx edx,dl ; byte register to double word register + movsx eax,ax ; word register to double word register + movsx ax,byte [bx] ; byte memory to word register + movsx edx,byte [bx] ; byte memory to double word register + movsx eax,word [bx] ; word memory to double word register + + +2.1.3 Binary arithmetic instructions + +"add" replaces the destination operand with the sum of the source and +destination operands and sets CF if overflow has occurred. The operands may +be bytes, words or double words. The destination operand can be general +register or memory, the source operand can be general register or immediate +value, it can also be memory if the destination operand is register. + + add ax,bx ; add register to register + add ax,[si] ; add memory to register + add [di],al ; add register to memory + add al,48 ; add immediate value to register + add [char],48 ; add immediate value to memory + + "adc" sums the operands, adds one if CF is set, and replaces the destination +operand with the result. Rules for the operands are the same as for the "add" +instruction. An "add" followed by multiple "adc" instructions can be used to +add numbers longer than 32 bits. + "inc" adds one to the operand, it does not affect CF. The operand can be a +general register or memory, and the size of the operand can be byte, word or +double word. + + inc ax ; increment register by one + inc byte [bx] ; increment memory by one + + "sub" subtracts the source operand from the destination operand and replaces +the destination operand with the result. If a borrow is required, the CF is +set. Rules for the operands are the same as for the "add" instruction. + "sbb" subtracts the source operand from the destination operand, subtracts +one if CF is set, and stores the result to the destination operand. Rules for +the operands are the same as for the "add" instruction. A "sub" followed by +multiple "sbb" instructions may be used to subtract numbers longer than 32 +bits. + "dec" subtracts one from the operand, it does not affect CF. Rules for the +operand are the same as for the "inc" instruction. + "cmp" subtracts the source operand from the destination operand. It updates +the flags as the "sub" instruction, but does not alter the source and +destination operands. Rules for the operands are the same as for the "sub" +instruction. + "neg" subtracts a signed integer operand from zero. The effect of this +instructon is to reverse the sign of the operand from positive to negative or +from negative to positive. Rules for the operand are the same as for the "inc" +instruction. + "xadd" exchanges the destination operand with the source operand, then loads +the sum of the two values into the destination operand. Rules for the operands +are the same as for the "add" instruction. + All the above binary arithmetic instructions update SF, ZF, PF and OF flags. +SF is always set to the same value as the result's sign bit, ZF is set when +all the bits of result are zero, PF is set when low order eight bits of result +contain an even number of set bits, OF is set if result is too large for a +positive number or too small for a negative number (excluding sign bit) to fit +in destination operand. + "mul" performs an unsigned multiplication of the operand and the +accumulator. If the operand is a byte, the processor multiplies it by the +contents of AL and returns the 16-bit result to AH and AL. If the operand is a +word, the processor multiplies it by the contents of AX and returns the 32-bit +result to DX and AX. If the operand is a double word, the processor multiplies +it by the contents of EAX and returns the 64-bit result in EDX and EAX. "mul" +sets CF and OF when the upper half of the result is nonzero, otherwise they +are cleared. Rules for the operand are the same as for the "inc" instruction. + "imul" performs a signed multiplication operation. This instruction has +three variations. First has one operand and behaves in the same way as the +"mul" instruction. Second has two operands, in this case destination operand +is multiplied by the source operand and the result replaces the destination +operand. Destination operand must be a general register, it can be word or +double word, source operand can be general register, memory or immediate +value. Third form has three operands, the destination operand must be a +general register, word or double word in size, source operand can be general +register or memory, and third operand must be an immediate value. The source +operand is multiplied by the immediate value and the result is stored in the +destination register. All the three forms calculate the product to twice the +size of operands and set CF and OF when the upper half of the result is +nonzero, but second and third form truncate the product to the size of +operands. So second and third forms can be also used for unsigned operands +because, whether the operands are signed or unsigned, the lower half of the +product is the same. Below are the examples for all three forms: + + imul bl ; accumulator by register + imul word [si] ; accumulator by memory + imul bx,cx ; register by register + imul bx,[si] ; register by memory + imul bx,10 ; register by immediate value + imul ax,bx,10 ; register by immediate value to register + imul ax,[si],10 ; memory by immediate value to register + + "div" performs an unsigned division of the accumulator by the operand. +The dividend (the accumulator) is twice the size of the divisor (the operand), +the quotient and remainder have the same size as the divisor. If divisor is +byte, the dividend is taken from AX register, the quotient is stored in AL and +the remainder is stored in AH. If divisor is word, the upper half of dividend +is taken from DX, the lower half of dividend is taken from AX, the quotient is +stored in AX and the remainder is stored in DX. If divisor is double word, +the upper half of dividend is taken from EDX, the lower half of dividend is +taken from EAX, the quotient is stored in EAX and the remainder is stored in +EDX. Rules for the operand are the same as for the "mul" instruction. + "idiv" performs a signed division of the accumulator by the operand. +It uses the same registers as the "div" instruction, and the rules for +the operand are the same. + + +2.1.4 Decimal arithmetic instructions + +Decimal arithmetic is performed by combining the binary arithmetic +instructions (already described in the prior section) with the decimal +arithmetic instructions. The decimal arithmetic instructions are used to +adjust the results of a previous binary arithmetic operation to produce a +valid packed or unpacked decimal result, or to adjust the inputs to a +subsequent binary arithmetic operation so the operation will produce a valid +packed or unpacked decimal result. + "daa" adjusts the result of adding two valid packed decimal operands in +AL. "daa" must always follow the addition of two pairs of packed decimal +numbers (one digit in each half-byte) to obtain a pair of valid packed +decimal digits as results. The carry flag is set if carry was needed. +This instruction has no operands. + "das" adjusts the result of subtracting two valid packed decimal operands +in AL. "das" must always follow the subtraction of one pair of packed decimal +numbers (one digit in each half-byte) from another to obtain a pair of valid +packed decimal digits as results. The carry flag is set if a borrow was +needed. This instruction has no operands. + "aaa" changes the contents of register AL to a valid unpacked decimal +number, and zeroes the top four bits. "aaa" must always follow the addition +of two unpacked decimal operands in AL. The carry flag is set and AH is +incremented if a carry is necessary. This instruction has no operands. + "aas" changes the contents of register AL to a valid unpacked decimal +number, and zeroes the top four bits. "aas" must always follow the +subtraction of one unpacked decimal operand from another in AL. The carry flag +is set and AH decremented if a borrow is necessary. This instruction has no +operands. + "aam" corrects the result of a multiplication of two valid unpacked decimal +numbers. "aam" must always follow the multiplication of two decimal numbers +to produce a valid decimal result. The high order digit is left in AH, the +low order digit in AL. The generalized version of this instruction allows +adjustment of the contents of the AX to create two unpacked digits of any +number base. The standard version of this instruction has no operands, the +generalized version has one operand - an immediate value specifying the +number base for the created digits. + "aad" modifies the numerator in AH and AL to prepare for the division of two +valid unpacked decimal operands so that the quotient produced by the division +will be a valid unpacked decimal number. AH should contain the high order +digit and AL the low order digit. This instruction adjusts the value and +places the result in AL, while AH will contain zero. The generalized version +of this instruction allows adjustment of two unpacked digits of any number +base. Rules for the operand are the same as for the "aam" instruction. + + +2.1.5 Logical instructions + +"not" inverts the bits in the specified operand to form a one's +complement of the operand. It has no effect on the flags. Rules for the +operand are the same as for the "inc" instruction. + "and", "or" and "xor" instructions perform the standard +logical operations. They update the SF, ZF and PF flags. Rules for the +operands are the same as for the "add" instruction. + "bt", "bts", "btr" and "btc" instructions operate on a single bit which can +be in memory or in a general register. The location of the bit is specified +as an offset from the low order end of the operand. The value of the offset +is the taken from the second operand, it either may be an immediate byte or +a general register. These instructions first assign the value of the selected +bit to CF. "bt" instruction does nothing more, "bts" sets the selected bit to +1, "btr" resets the selected bit to 0, "btc" changes the bit to its +complement. The first operand can be word or double word. + + bt ax,15 ; test bit in register + bts word [bx],15 ; test and set bit in memory + btr ax,cx ; test and reset bit in register + btc word [bx],cx ; test and complement bit in memory + + "bsf" and "bsr" instructions scan a word or double word for first set bit +and store the index of this bit into destination operand, which must be +general register. The bit string being scanned is specified by source operand, +it may be either general register or memory. The ZF flag is set if the entire +string is zero (no set bits are found); otherwise it is cleared. If no set bit +is found, the value of the destination register is undefined. "bsf" scans from +low order to high order (starting from bit index zero). "bsr" scans from high +order to low order (starting from bit index 15 of a word or index 31 of a +double word). + + bsf ax,bx ; scan register forward + bsr ax,[si] ; scan memory reverse + + "shl" shifts the destination operand left by the number of bits specified +in the second operand. The destination operand can be byte, word, or double +word general register or memory. The second operand can be an immediate value +or the CL register. The processor shifts zeros in from the right (low order) +side of the operand as bits exit from the left side. The last bit that exited +is stored in CF. "sal" is a synonym for "shl". + + shl al,1 ; shift register left by one bit + shl byte [bx],1 ; shift memory left by one bit + shl ax,cl ; shift register left by count from cl + shl word [bx],cl ; shift memory left by count from cl + + "shr" and "sar" shift the destination operand right by the number of bits +specified in the second operand. Rules for operands are the same as for the +"shl" instruction. "shr" shifts zeros in from the left side of the operand as +bits exit from the right side. The last bit that exited is stored in CF. +"sar" preserves the sign of the operand by shifting in zeros on the left side +if the value is positive or by shifting in ones if the value is negative. + "shld" shifts bits of the destination operand to the left by the number +of bits specified in third operand, while shifting high order bits from the +source operand into the destination operand on the right. The source operand +remains unmodified. The destination operand can be a word or double word +general register or memory, the source operand must be a general register, +third operand can be an immediate value or the CL register. + + shld ax,bx,1 ; shift register left by one bit + shld [di],bx,1 ; shift memory left by one bit + shld ax,bx,cl ; shift register left by count from cl + shld [di],bx,cl ; shift memory left by count from cl + + "shrd" shifts bits of the destination operand to the right, while shifting +low order bits from the source operand into the destination operand on the +left. The source operand remains unmodified. Rules for operands are the same +as for the "shld" instruction. + "rol" and "rcl" rotate the byte, word or double word destination operand +left by the number of bits specified in the second operand. For each rotation +specified, the high order bit that exits from the left of the operand returns +at the right to become the new low order bit. "rcl" additionally puts in CF +each high order bit that exits from the left side of the operand before it +returns to the operand as the low order bit on the next rotation cycle. Rules +for operands are the same as for the "shl" instruction. + "ror" and "rcr" rotate the byte, word or double word destination operand +right by the number of bits specified in the second operand. For each rotation +specified, the low order bit that exits from the right of the operand returns +at the left to become the new high order bit. "rcr" additionally puts in CF +each low order bit that exits from the right side of the operand before it +returns to the operand as the high order bit on the next rotation cycle. +Rules for operands are the same as for the "shl" instruction. + "test" performs the same action as the "and" instruction, but it does not +alter the destination operand, only updates flags. Rules for the operands are +the same as for the "and" instruction. + "bswap" reverses the byte order of a 32-bit general register: bits 0 through +7 are swapped with bits 24 through 31, and bits 8 through 15 are swapped with +bits 16 through 23. This instruction is provided for converting little-endian +values to big-endian format and vice versa. + + bswap edx ; swap bytes in register + + +2.1.6 Control transfer instructions + +"jmp" unconditionally transfers control to the target location. The +destination address can be specified directly within the instruction or +indirectly through a register or memory, the acceptable size of this address +depends on whether the jump is near or far (it can be specified by preceding +the operand with "near" or "far" operator) and whether the instruction is +16-bit or 32-bit. Operand for near jump should be "word" size for 16-bit +instruction or the "dword" size for 32-bit instruction. Operand for far jump +should be "dword" size for 16-bit instruction or "pword" size for 32-bit +instruction. A direct "jmp" instruction includes the destination address as +part of the instruction (and can be preceded by "short", "near" or "far" +operator), the operand specifying address should be the numerical expression +for near or short jump, or two numerical expressions separated with colon for +far jump, the first specifies selector of segment, the second is the offset +within segment. The "pword" operator can be used to force the 32-bit far call, +and "dword" to force the 16-bit far call. An indirect "jmp" instruction +obtains the destination address indirectly through a register or a pointer +variable, the operand should be general register or memory. See also 1.2.5 for +some more details. + + jmp 100h ; direct near jump + jmp 0FFFFh:0 ; direct far jump + jmp ax ; indirect near jump + jmp pword [ebx] ; indirect far jump + + "call" transfers control to the procedure, saving on the stack the address +of the instruction following the "call" for later use by a "ret" (return) +instruction. Rules for the operands are the same as for the "jmp" instruction, +but the "call" has no short variant of direct instruction and thus it not +optimized. + "ret", "retn" and "retf" instructions terminate the execution of a procedure +and transfers control back to the program that originally invoked the +procedure using the address that was stored on the stack by the "call" +instruction. "ret" is the equivalent for "retn", which returns from the +procedure that was executed using the near call, while "retf" returns from +the procedure that was executed using the far call. These instructions default +to the size of address appropriate for the current code setting, but the size +of address can be forced to 16-bit by using the "retw", "retnw" and "retfw" +mnemonics, and to 32-bit by using the "retd", "retnd" and "retfd" mnemonics. +All these instructions may optionally specify an immediate operand, by adding +this constant to the stack pointer, they effectively remove any arguments that +the calling program pushed on the stack before the execution of the "call" +instruction. + "iret" returns control to an interrupted procedure. It differs from "ret" in +that it also pops the flags from the stack into the flags register. The flags +are stored on the stack by the interrupt mechanism. It defaults to the size of +return address appropriate for the current code setting, but it can be forced +to use 16-bit or 32-bit address by using the "iretw" or "iretd" mnemonic. + The conditional transfer instructions are jumps that may or may not transfer +control, depending on the state of the CPU flags when the instruction +executes. The mnemonics for conditional jumps may be obtained by attaching +the condition mnemonic (see table 2.1) to the "j" mnemonic, +for example "jc" instruction will transfer the control when the CF flag is +set. The conditional jumps can be short or near, and direct only, and can be +optimized (see 1.2.5), the operand should be an immediate value specifying +target address. + + Table 2.1 Conditions + ┌──────────┬───────────────────────┬────────────────────────┐ + │ Mnemonic │ Condition tested │ Description │ + ╞══════════╪═══════════════════════╪════════════════════════╡ + │ o │ OF = 1 │ overflow │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ no │ OF = 0 │ not overflow │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ c │ │ carry │ + │ b │ CF = 1 │ below │ + │ nae │ │ not above nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ nc │ │ not carry │ + │ ae │ CF = 0 │ above or equal │ + │ nb │ │ not below │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ e │ ZF = 1 │ equal │ + │ z │ │ zero │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ne │ ZF = 0 │ not equal │ + │ nz │ │ not zero │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ be │ CF or ZF = 1 │ below or equal │ + │ na │ │ not above │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ a │ CF or ZF = 0 │ above │ + │ nbe │ │ not below nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ s │ SF = 1 │ sign │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ns │ SF = 0 │ not sign │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ p │ PF = 1 │ parity │ + │ pe │ │ parity even │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ np │ PF = 0 │ not parity │ + │ po │ │ parity odd │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ l │ SF xor OF = 1 │ less │ + │ nge │ │ not greater nor equal │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ ge │ SF xor OF = 0 │ greater or equal │ + │ nl │ │ not less │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ le │ (SF xor OF) or ZF = 1 │ less or equal │ + │ ng │ │ not greater │ + ├──────────┼───────────────────────┼────────────────────────┤ + │ g │ (SF xor OF) or ZF = 0 │ greater │ + │ nle │ │ not less nor equal │ + └──────────┴───────────────────────┴────────────────────────┘ + + The "loop" instructions are conditional jumps that use a value placed in +CX (or ECX) to specify the number of repetitions of a software loop. All +"loop" instructions automatically decrement CX (or ECX) and terminate the +loop (don't transfer the control) when CX (or ECX) is zero. It uses CX or ECX +whether the current code setting is 16-bit or 32-bit, but it can be forced to +us CX with the "loopw" mnemonic or to use ECX with the "loopd" mnemonic. +"loope" and "loopz" are the synonyms for the same instruction, which acts as +the standard "loop", but also terminates the loop when ZF flag is set. +"loopew" and "loopzw" mnemonics force them to use CX register while "looped" +and "loopzd" force them to use ECX register. "loopne" and "loopnz" are the +synonyms for the same instructions, which acts as the standard "loop", but +also terminate the loop when ZF flag is not set. "loopnew" and "loopnzw" +mnemonics force them to use CX register while "loopned" and "loopnzd" force +them to use ECX register. Every "loop" instruction needs an operand being an +immediate value specifying target address, it can be only short jump (in the +range of 128 bytes back and 127 bytes forward from the address of instruction +following the "loop" instruction). + "jcxz" branches to the label specified in the instruction if it finds a +value of zero in CX, "jecxz" does the same, but checks the value of ECX +instead of CX. Rules for the operands are the same as for the "loop" +instruction. + "int" activates the interrupt service routine that corresponds to the +number specified as an operand to the instruction, the number should be in +range from 0 to 255. The interrupt service routine terminates with an "iret" +instruction that returns control to the instruction that follows "int". +"int3" mnemonic codes the short (one byte) trap that invokes the interrupt 3. +"into" instruction invokes the interrupt 4 if the OF flag is set. + "bound" verifies that the signed value contained in the specified register +lies within specified limits. An interrupt 5 occurs if the value contained in +the register is less than the lower bound or greater than the upper bound. It +needs two operands, the first operand specifies the register being tested, +the second operand should be memory address for the two signed limit values. +The operands can be "word" or "dword" in size. + + bound ax,[bx] ; check word for bounds + bound eax,[esi] ; check double word for bounds + + +2.1.7 I/O instructions + + "in" transfers a byte, word, or double word from an input port to AL, AX, +or EAX. I/O ports can be addressed either directly, with the immediate byte +value coded in instruction, or indirectly via the DX register. The destination +operand should be AL, AX, or EAX register. The source operand should be an +immediate value in range from 0 to 255, or DX register. + + in al,20h ; input byte from port 20h + in ax,dx ; input word from port addressed by dx + + "out" transfers a byte, word, or double word to an output port from AL, AX, +or EAX. The program can specify the number of the port using the same methods +as the "in" instruction. The destination operand should be an immediate value +in range from 0 to 255, or DX register. The source operand should be AL, AX, +or EAX register. + + out 20h,ax ; output word to port 20h + out dx,al ; output byte to port addressed by dx + + +2.1.8 Strings operations + +The string operations operate on one element of a string. A string element +may be a byte, a word, or a double word. The string elements are addressed by +SI and DI (or ESI and EDI) registers. After every string operation SI and/or +DI (or ESI and/or EDI) are automatically updated to point to the next element +of the string. If DF (direction flag) is zero, the index registers are +incremented, if DF is one, they are decremented. The amount of the increment +or decrement is 1, 2, or 4 depending on the size of the string element. Every +string operation instruction has short forms which have no operands and use +SI and/or DI when the code type is 16-bit, and ESI and/or EDI when the code +type is 32-bit. SI and ESI by default address data in the segment selected +by DS, DI and EDI always address data in the segment selected by ES. Short +form is obtained by attaching to the mnemonic of string operation letter +specifying the size of string element, it should be "b" for byte element, +"w" for word element, and "d" for double word element. Full form of string +operation needs operands providing the size operator and the memory addresses, +which can be SI or ESI with any segment prefix, DI or EDI always with ES +segment prefix. + "movs" transfers the string element pointed to by SI (or ESI) to the +location pointed to by DI (or EDI). Size of operands can be byte, word, or +double word. The destination operand should be memory addressed by DI or EDI, +the source operand should be memory addressed by SI or ESI with any segment +prefix. + + movs byte [di],[si] ; transfer byte + movs word [es:di],[ss:si] ; transfer word + movsd ; transfer double word + + "cmps" subtracts the destination string element from the source string +element and updates the flags AF, SF, PF, CF and OF, but it does not change +any of the compared elements. If the string elements are equal, ZF is set, +otherwise it is cleared. The first operand for this instruction should be the +source string element addressed by SI or ESI with any segment prefix, the +second operand should be the destination string element addressed by DI or +EDI. + + cmpsb ; compare bytes + cmps word [ds:si],[es:di] ; compare words + cmps dword [fs:esi],[edi] ; compare double words + + "scas" subtracts the destination string element from AL, AX, or EAX +(depending on the size of string element) and updates the flags AF, SF, ZF, +PF, CF and OF. If the values are equal, ZF is set, otherwise it is cleared. +The operand should be the destination string element addressed by DI or EDI. + + scas byte [es:di] ; scan byte + scasw ; scan word + scas dword [es:edi] ; scan double word + + "stos" places the value of AL, AX, or EAX into the destination string +element. Rules for the operand are the same as for the "scas" instruction. + "lods" places the source string element into AL, AX, or EAX. The operand +should be the source string element addressed by SI or ESI with any segment +prefix. + + lods byte [ds:si] ; load byte + lods word [cs:si] ; load word + lodsd ; load double word + + "ins" transfers a byte, word, or double word from an input port addressed +by DX register to the destination string element. The destination operand +should be memory addressed by DI or EDI, the source operand should be the DX +register. + + insb ; input byte + ins word [es:di],dx ; input word + ins dword [edi],dx ; input double word + + "outs" transfers the source string element to an output port addressed by +DX register. The destination operand should be the DX register and the source +operand should be memory addressed by SI or ESI with any segment prefix. + + outs dx,byte [si] ; output byte + outsw ; output word + outs dx,dword [gs:esi] ; output double word + + The repeat prefixes "rep", "repe"/"repz", and "repne"/"repnz" specify +repeated string operation. When a string operation instruction has a repeat +prefix, the operation is executed repeatedly, each time using a different +element of the string. The repetition terminates when one of the conditions +specified by the prefix is satisfied. All three prefixes automatically +decrease CX or ECX register (depending whether string operation instruction +uses the 16-bit or 32-bit addressing) after each operation and repeat the +associated operation until CX or ECX is zero. "repe"/"repz" and +"repne"/"repnz" are used exclusively with the "scas" and "cmps" instructions +(described below). When these prefixes are used, repetition of the next +instruction depends on the zero flag (ZF) also, "repe" and "repz" terminate +the execution when the ZF is zero, "repne" and "repnz" terminate the execution +when the ZF is set. + + rep movsd ; transfer multiple double words + repe cmpsb ; compare bytes until not equal + + +2.1.9 Flag control instructions + +The flag control instructions provide a method for directly changing the +state of bits in the flag register. All instructions described in this +section have no operands. + "stc" sets the CF (carry flag) to 1, "clc" zeroes the CF, "cmc" changes the +CF to its complement. "std" sets the DF (direction flag) to 1, "cld" zeroes +the DF, "sti" sets the IF (interrupt flag) to 1 and therefore enables the +interrupts, "cli" zeroes the IF and therefore disables the interrupts. + "lahf" copies SF, ZF, AF, PF, and CF to bits 7, 6, 4, 2, and 0 of the +AH register. The contents of the remaining bits are undefined. The flags +remain unaffected. + "sahf" transfers bits 7, 6, 4, 2, and 0 from the AH register into SF, ZF, +AF, PF, and CF. + "pushf" decrements "esp" by two or four and stores the low word or +double word of flags register at the top of stack, size of stored data +depends on the current code setting. "pushfw" variant forces storing the +word and "pushfd" forces storing the double word. + "popf" transfers specific bits from the word or double word at the top +of stack, then increments "esp" by two or four, this value depends on +the current code setting. "popfw" variant forces restoring from the word +and "popfd" forces restoring from the double word. + + +2.1.10 Conditional operations + + The instructions obtained by attaching the condition mnemonic (see table +2.1) to the "set" mnemonic set a byte to one if the condition is true and set +the byte to zero otherwise. The operand should be an 8-bit be general register +or the byte in memory. + + setne al ; set al if zero flag cleared + seto byte [bx] ; set byte if overflow + + "salc" instruction sets the all bits of AL register when the carry flag is +set and zeroes the AL register otherwise. This instruction has no arguments. + The instructions obtained by attaching the condition mnemonic to the "cmov" +mnemonic transfer the word or double word from the general register or memory +to the general register only when the condition is true. The destination +operand should be general register, the source operand can be general register +or memory. + + cmove ax,bx ; move when zero flag set + cmovnc eax,[ebx] ; move when carry flag cleared + + "cmpxchg" compares the value in the AL, AX, or EAX register with the +destination operand. If the two values are equal, the source operand is +loaded into the destination operand. Otherwise, the destination operand is +loaded into the AL, AX, or EAX register. The destination operand may be a +general register or memory, the source operand must be a general register. + + cmpxchg dl,bl ; compare and exchange with register + cmpxchg [bx],dx ; compare and exchange with memory + + "cmpxchg8b" compares the 64-bit value in EDX and EAX registers with the +destination operand. If the values are equal, the 64-bit value in ECX and EBX +registers is stored in the destination operand. Otherwise, the value in the +destination operand is loaded into EDX and EAX registers. The destination +operand should be a quad word in memory. + + cmpxchg8b [bx] ; compare and exchange 8 bytes + + +2.1.11 Miscellaneous instructions + +"nop" instruction occupies one byte but affects nothing but the instruction +pointer. This instruction has no operands and doesn't perform any operation. + "ud2" instruction generates an invalid opcode exception. This instruction +is provided for software testing to explicitly generate an invalid opcode. +This is instruction has no operands. + "xlat" replaces a byte in the AL register with a byte indexed by its value +in a translation table addressed by BX or EBX. The operand should be a byte +memory addressed by BX or EBX with any segment prefix. This instruction has +also a short form "xlatb" which has no operands and uses the BX or EBX address +in the segment selected by DS depending on the current code setting. + "lds" transfers a pointer variable from the source operand to DS and the +destination register. The source operand must be a memory operand, and the +destination operand must be a general register. The DS register receives the +segment selector of the pointer while the destination register receives the +offset part of the pointer. "les", "lfs", "lgs" and "lss" operate identically +to "lds" except that rather than DS register the ES, FS, GS and SS is used +respectively. + + lds bx,[si] ; load pointer to ds:bx + + "lea" transfers the offset of the source operand (rather than its value) +to the destination operand. The source operand must be a memory operand, and +the destination operand must be a general register. + + lea dx,[bx+si+1] ; load effective address to dx + + "cpuid" returns processor identification and feature information in the +EAX, EBX, ECX, and EDX registers. The information returned is selected by +entering a value in the EAX register before the instruction is executed. +This instruction has no operands. + "pause" instruction delays the execution of the next instruction an +implementation specific amount of time. It can be used to improve the +performance of spin wait loops. This instruction has no operands. + "enter" creates a stack frame that may be used to implement the scope rules +of block-structured high-level languages. A "leave" instruction at the end of +a procedure complements an "enter" at the beginning of the procedure to +simplify stack management and to control access to variables for nested +procedures. The "enter" instruction includes two parameters. The first +parameter specifies the number of bytes of dynamic storage to be allocated on +the stack for the routine being entered. The second parameter corresponds to +the lexical nesting level of the routine, it can be in range from 0 to 31. +The specified lexical level determines how many sets of stack frame pointers +the CPU copies into the new stack frame from the preceding frame. This list +of stack frame pointers is sometimes called the display. The first word (or +double word when code is 32-bit) of the display is a pointer to the last stack +frame. This pointer enables a "leave" instruction to reverse the action of the +previous "enter" instruction by effectively discarding the last stack frame. +After "enter" creates the new display for a procedure, it allocates the +dynamic storage space for that procedure by decrementing ESP by the number of +bytes specified in the first parameter. To enable a procedure to address its +display, "enter" leaves BP (or EBP) pointing to the beginning of the new stack +frame. If the lexical level is zero, "enter" pushes BP (or EBP), copies SP to +BP (or ESP to EBP) and then subtracts the first operand from ESP. For nesting +levels greater than zero, the processor pushes additional frame pointers on +the stack before adjusting the stack pointer. + + enter 2048,0 ; enter and allocate 2048 bytes on stack + + +2.1.12 System instructions + +"lmsw" loads the operand into the machine status word (bits 0 through 15 of +CR0 register), while "smsw" stores the machine status word into the +destination operand. The operand for both those instructions can be 16-bit +general register or memory, for "smsw" it can also be 32-bit general +register. + + lmsw ax ; load machine status from register + smsw [bx] ; store machine status to memory + + "lgdt" and "lidt" instructions load the values in operand into the global +descriptor table register or the interrupt descriptor table register +respectively. "sgdt" and "sidt" store the contents of the global descriptor +table register or the interrupt descriptor table register in the destination +operand. The operand should be a 6 bytes in memory. + + lgdt [ebx] ; load global descriptor table + + "lldt" loads the operand into the segment selector field of the local +descriptor table register and "sldt" stores the segment selector from the +local descriptor table register in the operand. "ltr" loads the operand into +the segment selector field of the task register and "str" stores the segment +selector from the task register in the operand. Rules for operand are the same +as for the "lmsw" and "smsw" instructions. + "lar" loads the access rights from the segment descriptor specified by +the selector in source operand into the destination operand and sets the ZF +flag. The destination operand can be a 16-bit or 32-bit general register. +The source operand should be a 16-bit general register or memory. + + lar ax,[bx] ; load access rights into word + lar eax,dx ; load access rights into double word + + "lsl" loads the segment limit from the segment descriptor specified by the +selector in source operand into the destination operand and sets the ZF flag. +Rules for operand are the same as for the "lar" instruction. + "verr" and "verw" verify whether the code or data segment specified with +the operand is readable or writable from the current privilege level. The +operand should be a word, it can be general register or memory. If the segment +is accessible and readable (for "verr") or writable (for "verw") the ZF flag +is set, otherwise it's cleared. Rules for operand are the same as for the +"lldt" instruction. + "arpl" compares the RPL (requestor's privilege level) fields of two segment +selectors. The first operand contains one segment selector and the second +operand contains the other. If the RPL field of the destination operand is +less than the RPL field of the source operand, the ZF flag is set and the RPL +field of the destination operand is increased to match that of the source +operand. Otherwise, the ZF flag is cleared and no change is made to the +destination operand. The destination operand can be a word general register +or memory, the source operand must be a general register. + + arpl bx,ax ; adjust RPL of selector in register + arpl [bx],ax ; adjust RPL of selector in memory + + "clts" clears the TS (task switched) flag in the CR0 register. This +instruction has no operands. + "lock" prefix causes the processor's bus-lock signal to be asserted during +execution of the accompanying instruction. In a multiprocessor environment, +the bus-lock signal insures that the processor has exclusive use of any shared +memory while the signal is asserted. The "lock" prefix can be prepended only +to the following instructions and only to those forms of the instructions +where the destination operand is a memory operand: "add", "adc", "and", "btc", +"btr", "bts", "cmpxchg", "cmpxchg8b", "dec", "inc", "neg", "not", "or", "sbb", +"sub", "xor", "xadd" and "xchg". If the "lock" prefix is used with one of +these instructions and the source operand is a memory operand, an undefined +opcode exception may be generated. An undefined opcode exception will also be +generated if the "lock" prefix is used with any instruction not in the above +list. The "xchg" instruction always asserts the bus-lock signal regardless of +the presence or absence of the "lock" prefix. + "hlt" stops instruction execution and places the processor in a halted +state. An enabled interrupt, a debug exception, the BINIT, INIT or the RESET +signal will resume execution. This instruction has no operands. + "invlpg" invalidates (flushes) the TLB (translation lookaside buffer) entry +specified with the operand, which should be a memory. The processor determines +the page that contains that address and flushes the TLB entry for that page. + "rdmsr" loads the contents of a 64-bit MSR (model specific register) of the +address specified in the ECX register into registers EDX and EAX. "wrmsr" +writes the contents of registers EDX and EAX into the 64-bit MSR of the +address specified in the ECX register. "rdtsc" loads the current value of the +processor's time stamp counter from the 64-bit MSR into the EDX and EAX +registers. The processor increments the time stamp counter MSR every clock +cycle and resets it to 0 whenever the processor is reset. "rdpmc" loads the +contents of the 40-bit performance monitoring counter specified in the ECX +register into registers EDX and EAX. These instructions have no operands. + "wbinvd" writes back all modified cache lines in the processor's internal +cache to main memory and invalidates (flushes) the internal caches. The +instruction then issues a special function bus cycle that directs external +caches to also write back modified data and another bus cycle to indicate that +the external caches should be invalidated. This instruction has no operands. + "rsm" return program control from the system management mode to the program +that was interrupted when the processor received an SMM interrupt. This +instruction has no operands. + "sysenter" executes a fast call to a level 0 system procedure, "sysexit" +executes a fast return to level 3 user code. The addresses used by these +instructions are stored in MSRs. These instructions have no operands. + + +2.1.13 FPU instructions + +The FPU (Floating-Point Unit) instructions operate on the floating-point +values in three formats: single precision (32-bit), double precision (64-bit) +and double extended precision (80-bit). The FPU registers form the stack and +each of them holds the double extended precision floating-point value. When +some values are pushed onto the stack or are removed from the top, the FPU +registers are shifted, so ST0 is always the value on the top of FPU stack, ST1 +is the first value below the top, etc. The ST0 name has also the synonym ST. + "fld" pushes the floating-point value onto the FPU register stack. The +operand can be 32-bit, 64-bit or 80-bit memory location or the FPU register, +its value is then loaded onto the top of FPU register stack (the ST0 +register) and is automatically converted into the double extended precision +format. + + fld dword [bx] ; load single prevision value from memory + fld st2 ; push value of st2 onto register stack + + "fld1", "fldz", "fldl2t", "fldl2e", "fldpi", "fldlg2" and "fldln2" load the +commonly used contants onto the FPU register stack. The loaded constants are ++1.0, +0.0, lb 10, lb e, pi, lg 2 and ln 2 respectively. These instructions +have no operands. + "fild" convert the singed integer source operand into double extended +precision floating-point format and pushes the result onto the FPU register +stack. The source operand can be a 16-bit, 32-bit or 64-bit memory location. + + fild qword [bx] ; load 64-bit integer from memory + + "fst" copies the value of ST0 register to the destination operand, which +can be 32-bit or 64-bit memory location or another FPU register. "fstp" +performs the same operation as "fst" and then pops the register stack, +getting rid of ST0. "fstp" accepts the same operands as the "fst" instruction +and can also store value in the 80-bit memory. + + fst st3 ; copy value of st0 into st3 register + fstp tword [bx] ; store value in memory and pop stack + + "fist" converts the value in ST0 to a signed integer and stores the result +in the destination operand. The operand can be 16-bit or 32-bit memory +location. "fistp" performs the same operation and then pops the register +stack, it accepts the same operands as the "fist" instruction and can also +store integer value in the 64-bit memory, so it has the same rules for +operands as "fild" instruction. + "fbld" converts the packed BCD integer into double extended precision +floating-point format and pushes this value onto the FPU stack. "fbstp" +converts the value in ST0 to an 18-digit packed BCD integer, stores the result +in the destination operand, and pops the register stack. The operand should be +an 80-bit memory location. + "fadd" adds the destination and source operand and stores the sum in the +destination location. The destination operand is always an FPU register, if +the source is a memory location, the destination is ST0 register and only +source operand should be specified. If both operands are FPU registers, at +least one of them should be ST0 register. An operand in memory can be a +32-bit or 64-bit value. + + fadd qword [bx] ; add double precision value to st0 + fadd st2,st0 ; add st0 to st2 + + "faddp" adds the destination and source operand, stores the sum in the +destination location and then pops the register stack. The destination operand +must be an FPU register and the source operand must be the ST0. When no +operands are specified, ST1 is used as a destination operand. + + faddp ; add st0 to st1 and pop the stack + faddp st2,st0 ; add st0 to st2 and pop the stack + +"fiadd" instruction converts an integer source operand into double extended +precision floating-point value and adds it to the destination operand. The +operand should be a 16-bit or 32-bit memory location. + + fiadd word [bx] ; add word integer to st0 + + "fsub", "fsubr", "fmul", "fdiv", "fdivr" instruction are similar to "fadd", +have the same rules for operands and differ only in the perfomed computation. +"fsub" substracts the source operand from the destination operand, "fsubr" +substract the destination operand from the source operand, "fmul" multiplies +the destination and source operands, "fdiv" divides the destination operand by +the source operand and "fdivr" divides the source operand by the destination +operand. "fsubp", "fsubrp", "fmulp", "fdivp", "fdivrp" perform the same +operations and pop the register stack, the rules for operand are the same as +for the "faddp" instruction. "fisub", "fisubr", "fimul", "fidiv", "fidivr" +perform these operations after converting the integer source operand into +floating-point value, they have the same rules for operands as "fiadd" +instruction. + "fsqrt" computes the square root of the value in ST0 register, "fsin" +computes the sine of that value, "fcos" computes the cosine of that value, +"fchs" complements its sign bit, "fabs" clears its sign to create the absolute +value, "frndint" rounds it to the nearest integral value, depending on the +current rounding mode. "f2xm1" computes the exponential value of 2 to the +power of ST0 and substracts the 1.0 from it, the value of ST0 must lie in the +range -1.0 to +1.0. All these instruction store the result in ST0 and have no +operands. + "fsincos" computes both the sine and the cosine of the value in ST0 +register, stores the sine in ST0 and pushes the cosine on the top of FPU +register stack. "fptan" computes the tangent of the value in ST0, stores the +result in ST0 and pushes a 1.0 onto the FPU register stack. "fpatan" computes +the arctangent of the value in ST1 divided by the value in ST0, stores the +result in ST1 and pops the FPU register stack. "fyl2x" computes the binary +logarithm of ST0, multiplies it by ST1, stores the result in ST1 and pops the +FPU register stack; "fyl2xp1" performs the same operation but it adds 1.0 to +ST0 before computing the logarithm. "fprem" computes the remainder obtained +from dividing the value in ST0 by the value in ST1, and stores the result +in ST0. "fprem1" performs the same operation as "fprem", but it computes the +remainder in the way specified by IEEE Standard 754. "fscale" truncates the +value in ST1 and increases the exponent of ST0 by this value. "fxtract" +separates the value in ST0 into its exponent and significand, stores the +exponent in ST0 and pushes the significand onto the register stack. "fnop" +performs no operation. These instruction have no operands. + "fxch" exchanges the contents of ST0 an another FPU register. The operand +should be an FPU register, if no operand is specified, the contents of ST0 and +ST1 are exchanged. + "fcom" and "fcomp" compare the contents of ST0 and the source operand and +set flags in the FPU status word according to the results. "fcomp" +additionally pops the register stack after performing the comparison. The +operand can be a single or double precision value in memory or the FPU +register. When no operand is specified, ST1 is used as a source operand. + + fcom ; compare st0 with st1 + fcomp st2 ; compare st0 with st2 and pop stack + + "fcompp" compares the contents of ST0 and ST1, sets flags in the FPU status +word according to the results and pops the register stack twice. This +instruction has no operands. + "fucom", "fucomp" and "fucompp" performs an unordered comparison of two FPU +registers. Rules for operands are the same as for the "fcom", "fcomp" and +"fcompp", but the source operand must be an FPU register. + "ficom" and "ficomp" compare the value in ST0 with an integer source operand +and set the flags in the FPU status word according to the results. "ficomp" +additionally pops the register stack after performing the comparison. The +integer value is converted to double extended precision floating-point format +before the comparison is made. The operand should be a 16-bit or 32-bit +memory location. + + ficom word [bx] ; compare st0 with 16-bit integer + + "fcomi", "fcomip", "fucomi", "fucomip" perform the comparison of ST0 with +another FPU register and set the ZF, PF and CF flags according to the results. +"fcomip" and "fucomip" additionaly pop the register stack after performing the +comparison. The instructions obtained by attaching the FPU condition mnemonic +(see table 2.2) to the "fcmov" mnemonic transfer the specified FPU register +into ST0 register if the fiven test condition is true. These instruction +allow two different syntaxes, one with single operand specifying the source +FPU register, and one with two operands, in that case destination operand +should be ST0 register and the second operand specifies the source FPU +register. + + fcomi st2 ; compare st0 with st2 and set flags + fcmovb st0,st2 ; transfer st2 to st0 if below + + Table 2.2 FPU conditions + ┌──────────┬──────────────────┬────────────────────────┐ + │ Mnemonic │ Condition tested │ Description │ + ╞══════════╪══════════════════╪════════════════════════╡ + │ b │ CF = 1 │ below │ + │ e │ ZF = 1 │ equal │ + │ be │ CF or ZF = 1 │ below or equal │ + │ u │ PF = 1 │ unordered │ + │ nb │ CF = 0 │ not below │ + │ ne │ ZF = 0 │ not equal │ + │ nbe │ CF and ZF = 0 │ not below nor equal │ + │ nu │ PF = 0 │ not unordered │ + └──────────┴──────────────────┴────────────────────────┘ + + "ftst" compares the value in ST0 with 0.0 and sets the flags in the FPU +status word according to the results. "fxam" examines the contents of the ST0 +and sets the flags in FPU status word to indicate the class of value in the +register. These instructions have no operands. + "fstsw" and "fnstsw" store the current value of the FPU status word in the +destination location. The destination operand can be either a 16-bit memory or +the AX register. "fstsw" checks for pending umasked FPU exceptions before +storing the status word, "fnstsw" does not. + "fstcw" and "fnstcw" store the current value of the FPU control word at the +specified destination in memory. "fstcw" checks for pending umasked FPU +exceptions before storing the control word, "fnstcw" does not. "fldcw" loads +the operand into the FPU control word. The operand should be a 16-bit memory +location. + "fstenv" and "fnstenv" store the current FPU operating environment at the +memory location specified with the destination operand, and then mask all FPU +exceptions. "fstenv" checks for pending umasked FPU exceptions before +proceeding, "fnstenv" does not. "fldenv" loads the complete operating +environment from memory into the FPU. "fsave" and "fnsave" store the current +FPU state (operating environment and register stack) at the specified +destination in memory and reinitializes the FPU. "fsave" check for pending +unmasked FPU exceptions before proceeding, "fnsave" does not. "frstor" +loads the FPU state from the specified memory location. All these instructions +need an operand being a memory location. + "finit" and "fninit" set the FPU operating environment into its default +state. "finit" checks for pending unmasked FPU exception before proceeding, +"fninit" does not. "fclex" and "fnclex" clear the FPU exception flags in the +FPU status word. "fclex" checks for pending unmasked FPU exception before +proceeding, "fnclex" does not. "wait" and "fwait" are synonyms for the same +instruction, which causes the processor to check for pending unmasked FPU +exceptions and handle them before proceeding. These instruction have no +operands. + "ffree" sets the tag associated with specified FPU register to empty. The +operand should be an FPU register. + "fincstp" and "fdecstp" rotate the FPU stack by one by adding or +substracting one to the pointer of the top of stack. These instruction have no +operands. + + +2.1.14 MMX instructions + +The MMX instructions operate on the packed integer types and use the MMX +registers, which are the low 64-bit parts of the 80-bit FPU registers. Because +of this MMX instructions cannot be used at the same time as FPU instructions. +They can operate on packed bytes (eight 8-bit integers), packed words (four +16-bit integers) or packed double words (two 32-bit integers), use of packed +formats allows to perform operations on multiple data at one time. + "movq" copies a quad word from the source operand to the destination +operand. At least one of the operands must be a MMX register, the second one +can be also a MMX register or 64-bit memory location. + + movq mm0,mm1 ; move quad word from register to register + movq mm2,[ebx] ; move quad word from memory to register + + "movd" copies a double word from the source operand to the destination +operand. One of the operands must be a MMX register, the second one can be a +general register or 32-bit memory location. Only low double word of MMX +register is used. + All general MMX operations have two operands, the destination operand should +be a MMX register, the source operand can be a MMX register or 64-bit memory +location. Operation is performed on the corresponding data elements of the +source and destination operand and stored in the data elements of the +destination operand. "paddb", "paddw" and "paddd" perform the addition of +packed bytes, packed words, or packed double words. "psubb", "psubw" and +"psubd" perform the substraction of appropriate types. "paddsb", "paddsw", +"psubsb" and "psubsw" perform the addition or substraction of packed bytes +or packed words with the signed saturation. "paddusb", "paddusw", "psubusb", +"psubusw" are analoguous, but with unsigned saturation. "pmulhw" and "pmullw" +performs a signed multiply of the packed words and store the high or low words +of the results in the destination operand. "pmaddwd" performs a multiply of +the packed words and adds the four intermediate double word products in pairs +to produce result as a packed double words. "pand", "por" and "pxor" perform +the logical operations on the quad words, "pandn" peforms also a logical +negation of the destination operand before performing the "and" operation. +"pcmpeqb", "pcmpeqw" and "pcmpeqd" compare for equality of packed bytes, +packed words or packed double words. If a pair of data elements is equal, the +corresponding data element in the destination operand is filled with bits of +value 1, otherwise it's set to 0. "pcmpgtb", "pcmpgtw" and "pcmpgtd" perform +the similar operation, but they check whether the data elements in the +destination operand are greater than the correspoding data elements in the +source operand. "packsswb" converts packed signed words into packed signed +bytes, "packssdw" converts packed signed double words into packed signed +words, using saturation to handle overflow conditions. "packuswb" converts +packed signed words into packed unsigned bytes. Converted data elements from +the source operand are stored in the low part of the destination operand, +while converted data elements from the destination operand are stored in the +high part. "punpckhbw", "punpckhwd" and "punpckhdq" interleaves the data +elements from the high parts of the source and destination operands and +stores the result into the destination operand. "punpcklbw", "punpcklwd" and +"punpckldq" perform the same operation, but the low parts of the source and +destination operand are used. + + paddsb mm0,[esi] ; add packed bytes with signed saturation + pcmpeqw mm3,mm7 ; compare packed words for equality + + "psllw", "pslld" and "psllq" perform logical shift left of the packed words, +packed double words or a single quad word in the destination operand by the +amount specified in the source operand. "psrlw", "psrld" and "psrlq" perform +logical shift right of the packed words, packed double words or a single quad +word. "psraw" and "psrad" perform arithmetic shift of the packed words or +double words. The destination operand should be a MMX register, while source +operand can be a MMX register, 64-bit memory location, or 8-bit immediate +value. + + psllw mm2,mm4 ; shift words left logically + psrad mm4,[ebx] ; shift double words right arithmetically + + "emms" makes the FPU registers usable for the FPU instructions, it must be +used before using the FPU instructions if any MMX instructions were used. + + +2.1.15 SSE instructions + +The SSE extension adds more MMX instructions and also introduces the +operations on packed single precision floating point values. The 128-bit +packed single precision format consists of four single precision floating +point values. The 128-bit SSE registers are designed for the purpose of +operations on this data type. + "movaps" and "movups" transfer a double quad word operand containing packed +single precision values from source operand to destination operand. At least +one of the operands have to be a SSE register, the second one can be also a +SSE register or 128-bit memory location. Memory operands for "movaps" +instruction must be aligned on boundary of 16 bytes, operands for "movups" +instruction don't have to be aligned. + + movups xmm0,[ebx] ; move unaligned double quad word + + "movlps" moves packed two single precision values between the memory and the +low quad word of SSE register. "movhps" moved packed two single precision +values between the memory and the high quad word of SSE register. One of the +operands must be a SSE register, and the other operand must be a 64-bit memory +location. + + movlps xmm0,[ebx] ; move memory to low quad word of xmm0 + movhps [esi],xmm7 ; move high quad word of xmm7 to memory + + "movlhps" moves packed two single precision values from the low quad word +of source register to the high quad word of destination register. "movhlps" +moves two packed single precision values from the high quad word of source +register to the low quad word of destination register. Both operands have to +be a SSE registers. + "movmskps" transfers the most significant bit of each of the four single +precision values in the SSE register into low four bits of a general register. +The source operand must be a SSE register, the destination operand must be a +general register. + "movss" transfers a single precision value between source and destination +operand (only the low double word is trasferred). At least one of the operands +have to be a SSE register, the second one can be also a SSE register or 32-bit +memory location. + + movss [edi],xmm3 ; move low double word of xmm3 to memory + + Each of the SSE arithmetic operations has two variants. When the mnemonic +ends with "ps", the source operand can be a 128-bit memory location or a SSE +register, the destination operand must be a SSE register and the operation is +performed on packed four single precision values, for each pair of the +corresponding data elements separately, the result is stored in the +destination register. When the mnemonic ends with "ss", the source operand +can be a 32-bit memory location or a SSE register, the destination operand +must be a SSE register and the operation is performed on single precision +values, only low double words of SSE registers are used in this case, the +result is stored in the low double word of destination register. "addps" and +"addss" add the values, "subps" and "subss" substract the source value from +destination value, "mulps" and "mulss" multiply the values, "divps" and +"divss" divide the destination value by the source value, "rcpps" and "rcpss" +compute the approximate reciprocal of the source value, "sqrtps" and "sqrtss" +compute the square root of the source value, "rsqrtps" and "rsqrtss" compute +the approximate reciprocal of square root of the source value, "maxps" and +"maxss" compare the source and destination values and return the greater one, +"minps" and "minss" compare the source and destination values and return the +lesser one. + + mulss xmm0,[ebx] ; multiply single precision values + addps xmm3,xmm7 ; add packed single precision values + + "andps", "andnps", "orps" and "xorps" perform the logical operations on +packed single precision values. The source operand can be a 128-bit memory +location or a SSE register, the destination operand must be a SSE register. + "cmpps" compares packed single precision values and returns a mask result +into the destination operand, which must be a SSE register. The source operand +can be a 128-bit memory location or SSE register, the third operand must be an +immediate operand selecting code of one of the eight compare conditions +(table 2.3). "cmpss" performs the same operation on single precision values, +only low double word of destination register is affected, in this case source +operand can be a 32-bit memory location or SSE register. These two +instructions have also variants with only two operands and the condition +encoded within mnemonic. Their mnemonics are obtained by attaching the +mnemonic from table 2.3 to the "cmp" mnemonic and then attaching the "ps" or +"ss" at the end. + + cmpps xmm2,xmm4,0 ; compare packed single precision values + cmpltss xmm0,[ebx] ; compare single precision values + + Table 2.3 SSE conditions + ┌──────┬──────────┬─────────────────────────┐ + │ Code │ Mnemonic │ Description │ + ╞══════╪══════════╪═════════════════════════╡ + │ 0 │ eq │ equal │ + │ 1 │ lt │ less than │ + │ 2 │ le │ less than or equal │ + │ 3 │ unord │ unordered │ + │ 4 │ neq │ not equal │ + │ 5 │ nlt │ not less than │ + │ 6 │ nle │ not less than nor equal │ + │ 7 │ ord │ ordered │ + └──────┴──────────┴─────────────────────────┘ + + "comiss" and "ucomiss" compare the single precision values and set the ZF, +PF and CF flags to show the result. The destination operand must be a SSE +register, the source operand can be a 32-bit memory location or SSE register. + "shufps" moves any two of the four single precision values from the +destination operand into the low quad word of the destination operand, and any +two of the four values from the source operand into the high quad word of the +destination operand. The destination operand must be a SSE register, the +source operand can be a 128-bit memory location or SSE register, the third +operand must be an 8-bit immediate value selecting which values will be moved +into the destination operand. Bits 0 and 1 select the value to be moved from +destination operand to the low double word of the result, bits 2 and 3 select +the value to be moved from the destination operand to the second double word, +bits 4 and 5 select the value to be moved from the source operand to the third +double word, and bits 6 and 7 select the value to be moved from the source +operand to the high double word of the result. + + shufps xmm0,xmm0,10010011b ; shuffle double words + + "unpckhps" performs an interleaved unpack of the values from the high parts +of the source and destination operands and stores the result in the +destination operand, which must be a SSE register. The source operand can be +a 128-bit memory location or a SSE register. "unpcklps" performs an +interleaved unpack of the values from the low parts of the source and +destination operand and stores the result in the destination operand, +the rules for operands are the same. + "cvtpi2ps" converts packed two double word integers into the the packed two +single precision floating point values and stores the result in the low quad +word of the destination operand, which should be a SSE register. The source +operand can be a 64-bit memory location or MMX register. + + cvtpi2ps xmm0,mm0 ; convert integers to single precision values + + "cvtsi2ss" converts a double word integer into a single precision floating +point value and stores the result in the low double word of the destination +operand, which should be a SSE register. The source operand can be a 32-bit +memory location or 32-bit general register. + + cvtsi2ss xmm0,eax ; convert integer to single precision value + + "cvtps2pi" converts packed two single precision floating point values into +packed two double word integers and stores the result in the destination +operand, which should be a MMX register. The source operand can be a 64-bit +memory location or SSE register, only low quad word of SSE register is used. +"cvttps2pi" performs the similar operation, except that truncation is used to +round a source values to integers, rules for the operands are the same. + + cvtps2pi mm0,xmm0 ; convert single precision values to integers + + "cvtss2si" convert a single precision floating point value into a double +word integer and stores the result in the destination operand, which should be +a 32-bit general register. The source operand can be a 32-bit memory location +or SSE register, only low double word of SSE register is used. "cvttss2si" +performs the similar operation, except that truncation is used to round a +source value to integer, rules for the operands are the same. + + cvtss2si eax,xmm0 ; convert single precision value to integer + + "pextrw" copies the word in the source operand specified by the third +operand to the destination operand. The source operand must be a MMX register, +the destination operand must be a 32-bit general register (but only the low +word of it is affected), the third operand must an 8-bit immediate value. + + pextrw eax,mm0,1 ; extract word into eax + + "pinsrw" inserts a word from the source operand in the destination operand +at the location specified with the third operand, which must be an 8-bit +immediate value. The destination operand must be a MMX register, the source +operand can be a 16-bit memory location or 32-bit general register (only low +word of the register is used). + + pinsrw mm1,ebx,2 ; insert word from ebx + + "pavgb" and "pavgw" compute average of packed bytes or words. "pmaxub" +return the maximum values of packed unsigned bytes, "pminub" returns the +minimum values of packed unsigned bytes, "pmaxsw" returns the maximum values +of packed signed words, "pminsw" returns the minimum values of packed signed +words. "pmulhuw" performs a unsigned multiply of the packed words and stores +the high words of the results in the destination operand. "psadbw" computes +the absolute differences of packed unsigned bytes, sums the differences, and +stores the sum in the low word of destination operand. All these instructions +follow the same rules for operands as the general MMX operations described in +previous section. + "pmovmskb" creates a mask made of the most significant bit of each byte in +the source operand and stores the result in the low byte of destination +operand. The source operand must be a MMX register, the destination operand +must a 32-bit general register. + "pshufw" inserts words from the source operand in the destination operand +from the locations specified with the third operand. The destination operand +must be a MMX register, the source operand can be a 64-bit memory location or +MMX register, third operand must an 8-bit immediate value selecting which +values will be moved into destination operand, in the similar way as the third +operand of the "shufps" instruction. + "movntq" moves the quad word from the source operand to memory using a +non-temporal hint to minimize cache pollution. The source operand should be a +MMX register, the destination operand should be a 64-bit memory location. +"movntps" stores packed single precision values from the SSE register to +memory using a non-temporal hint. The source operand should be a SSE register, +the destination operand should be a 128-bit memory location. "maskmovq" stores +selected bytes from the first operand into a 64-bit memory location using a +non-temporal hint. Both operands should be a MMX registers, the second operand +selects wich bytes from the source operand are written to memory. The +memory location is pointed by DI (or EDI) register in the segment selected +by DS. + "prefetcht0", "prefetcht1", "prefetcht2" and "prefetchnta" fetch the line +of data from memory that contains byte specified with the operand to a +specified location in hierarchy. The operand should be an 8-bit memory +location. + "sfence" performs a serializing operation on all instruction storing to +memory that were issued prior to it. This instruction has no operands. + "ldmxcsr" loads the 32-bit memory operand into the MXCSR register. "stmxcsr" +stores the contents of MXCSR into a 32-bit memory operand. + "fxsave" saves the current state of the FPU, MXCSR register, and all the FPU +and SSE registers to a 512-byte memory location specified in the destination +operand. "fxrstor" reloads data previously stored with "fxsave" instruction +from the specified 512-byte memory location. The memory operand for both those +instructions must be aligned on 16 byte boundary, it should declare operand +of no specified size. + + +2.1.16 SSE2 instructions + +The SSE2 extension introduces the operations on packed double precision +floating point values, extends the syntax of MMX instructions, and adds also +some new instructions. + "movapd" and "movupd" transfer a double quad word operand containing packed +double precision values from source operand to destination operand. These +instructions are analogous to "movaps" and "movups" and have the same rules +for operands. + "movlpd" moves double precision value between the memory and the low quad +word of SSE register. "movhpd" moved double precision value between the memory +and the high quad word of SSE register. These instructions are analogous to +"movlps" and "movhps" and have the same rules for operands. + "movmskpd" transfers the most significant bit of each of the two double +precision values in the SSE register into low two bits of a general register. +This instruction is analogous to "movmskps" and has the same rules for +operands. + "movsd" transfers a double precision value between source and destination +operand (only the low quad word is trasferred). At least one of the operands +have to be a SSE register, the second one can be also a SSE register or 64-bit +memory location. + Arithmetic operations on double precision values are: "addpd", "addsd", +"subpd", "subsd", "mulpd", "mulsd", "divpd", "divsd", "sqrtpd", "sqrtsd", +"maxpd", "maxsd", "minpd", "minsd", and they are analoguous to arithmetic +operations on single precision values described in previous section. When the +mnemonic ends with "pd" instead of "ps", the operation is performed on packed +two double precision values, but rules for operands are the same. When the +mnemonic ends with "sd" instead of "ss", the source operand can be a 64-bit +memory location or a SSE register, the destination operand must be a SSE +register and the operation is performed on double precision values, only low +quad words of SSE registers are used in this case. + "andpd", "andnpd", "orpd" and "xorpd" perform the logical operations on +packed double precision values. They are analoguous to SSE logical operations +on single prevision values and have the same rules for operands. + "cmppd" compares packed double precision values and returns and returns a +mask result into the destination operand. This instruction is analoguous to +"cmpps" and has the same rules for operands. "cmpsd" performs the same +operation on double precision values, only low quad word of destination +register is affected, in this case source operand can be a 64-bit memory or +SSE register. Variant with only two operands are obtained by attaching the +condition mnemonic from table 2.3 to the "cmp" mnemonic and then attaching +the "pd" or "sd" at the end. + "comisd" and "ucomisd" compare the double precision values and set the ZF, +PF and CF flags to show the result. The destination operand must be a SSE +register, the source operand can be a 128-bit memory location or SSE register. + "shufpd" moves any of the two double precision values from the destination +operand into the low quad word of the destination operand, and any of the two +values from the source operand into the high quad word of the destination +operand. This instruction is analoguous to "shufps" and has the same rules for +operand. Bit 0 of the third operand selects the value to be moved from the +destination operand, bit 1 selects the value to be moved from the source +operand, the rest of bits are reserved and must be zeroed. + "unpckhpd" performs an unpack of the high quad words from the source and +destination operands, "unpcklpd" performs an unpack of the low quad words from +the source and destination operands. They are analoguous to "unpckhps" and +"unpcklps", and have the same rules for operands. + "cvtps2pd" converts the packed two single precision floating point values to +two packed double precision floating point values, the destination operand +must be a SSE register, the source operand can be a 64-bit memory location or +SSE register. "cvtpd2ps" converts the packed two double precision floating +point values to packed two single precision floating point values, the +destination operand must be a SSE register, the source operand can be a +128-bit memory location or SSE register. "cvtss2sd" converts the single +precision floating point value to double precision floating point value, the +destination operand must be a SSE register, the source operand can be a 32-bit +memory location or SSE register. "cvtsd2ss" converts the double precision +floating point value to single precision floating point value, the destination +operand must be a SSE register, the source operand can be 64-bit memory +location or SSE register. + "cvtpi2pd" converts packed two double word integers into the the packed +double precision floating point values, the destination operand must be a SSE +register, the source operand can be a 64-bit memory location or MMX register. +"cvtsi2sd" converts a double word integer into a double precision floating +point value, the destination operand must be a SSE register, the source +operand can be a 32-bit memory location or 32-bit general register. "cvtpd2pi" +converts packed double precision floating point values into packed two double +word integers, the destination operand should be a MMX register, the source +operand can be a 128-bit memory location or SSE register. "cvttpd2pi" performs +the similar operation, except that truncation is used to round a source values +to integers, rules for operands are the same. "cvtsd2si" converts a double +precision floating point value into a double word integer, the destination +operand should be a 32-bit general register, the source operand can be a +64-bit memory location or SSE register. "cvttsd2si" performs the similar +operation, except that truncation is used to round a source value to integer, +rules for operands are the same. + "cvtps2dq" and "cvttps2dq" convert packed single precision floating point +values to packed four double word integers, storing them in the destination +operand. "cvtpd2dq" and "cvttpd2dq" convert packed double precision floating +point values to packed two double word integers, storing the result in the low +quad word of the destination operand. "cvtdq2ps" converts packed four +double word integers to packed single precision floating point values. +"cvtdq2pd" converts packed two double word integers from the low quad word +of the source operand to packed double precision floating point values. +For all these instruction destination operand must be a SSE register, the +source operand can be a 128-bit memory location or SSE register. + "movdqa" and "movdqu" transfer a double quad word operand containing packed +integers from source operand to destination operand. At least one of the +operands have to be a SSE register, the second one can be also a SSE register +or 128-bit memory location. Memory operands for "movdqa" instruction must be +aligned on boundary of 16 bytes, operands for "movdqu" instruction don't have +to be aligned. + "movq2dq" moves the contents of the MMX source register to the low quad word +of destination SSE register. "movdq2q" moves the low quad word from the source +SSE register to the destination MMX register. + + movq2dq xmm0,mm1 ; move from MMX register to SSE register + movdq2q mm0,xmm1 ; move from SSE register to MMX register + + All MMX instructions operating on the 64-bit packed integers (those with +mnemonics starting with "p") are extended to operate on 128-bit packed +integers located in SSE registers. Additional syntax for these instructions +needs an SSE register where MMX register was needed, and the 128-bit memory +location or SSE register where 64-bit memory location of MMX register were +needed. The exception is "pshufw" instruction, which doesn't allow extended +syntax, but has two new variants: "pshufhw" and "pshuflw", which allow only +the extended syntax, and perform the same operation as "pshufw" on the high +or low quad words of operands respectively. Also the new instruction "pshufd" +is introduced, which performs the same operation as "pshufw", but on the +double words instead of words, it allows only the extended syntax. + + psubb xmm0,[esi] ; substract 16 packed bytes + pextrw eax,xmm0,7 ; extract highest word into eax + + "paddq" performs the addition of packed quad words, "psubq" performs the +substraction of packed quad words, "pmuludq" performs an unsigned multiply +of low double words from each corresponding quad words and returns the results +in packed quad words. These instructions follow the same rules for operands as +the general MMX operations described in 2.1.14. + "pslldq" and "psrldq" perform logical shift left or right of the double +quad word in the destination operand by the amount of bits specified in the +source operand. The destination operand should be a SSE register, source +operand should be an 8-bit immediate value. + "punpckhqdq" interleaves the high quad word of the source operand and the +high quad word of the destination operand and writes them to the destination +SSE register. "punpcklqdq" interleaves the low quad word of the source operand +and the low quad word of the destination operand and writes them to the +destination SSE register. The source operand can be a 128-bit memory location +or SSE register. + "movntdq" stores packed integer data from the SSE register to memory using +non-temporal hint. The source operand should be a SSE register, the +destination operand should be a 128-bit memory location. "movntpd" stores +packed double precision values from the SSE register to memory using a +non-temporal hint. Rules for operand are the same. "movnti" stores integer +from a general register to memory using a non-temporal hint. The source +operand should be a 32-bit general register, the destination operand should +be a 32-bit memory location. "maskmovdqu" stores selected bytes from the first +operand into a 128-bit memory location using a non-temporal hint. Both +operands should be a SSE registers, the second operand selects wich bytes from +the source operand are written to memory. The memory location is pointed by DI +(or EDI) register in the segment selected by DS and does not need to be +aligned. + "clflush" writes and invalidates the cache line associated with the address +of byte specified with the operand, which should be a 8-bit memory location. + "lfence" performs a serializing operation on all instruction loading from +memory that were issued prior to it. "mfence" performs a serializing operation +on all instruction accesing memory that were issued prior to it, and so it +combines the functions of "sfence" (described in previous section) and +"lfence" instructions. These instructions have no operands. + + +2.1.17 SSE3 instructions + +Prescott technology introduced some new instructions to improve the performance +of SSE and SSE2 - this extension is called SSE3. + "fisttp" behaves like the "fistp" instruction and accepts the same operands, +the only difference is that it always used truncation, irrespective of the +rounding mode. + "movshdup" loads into destination operand the 128-bit value obtained from +the source value of the same size by filling the each quad word with the two +duplicates of the value in its high double word. "movsldup" performs the same +action, except it duplicates the values of low double words. The destination +operand should be SSE register, the source operand can be SSE register or +128-bit memory location. + "movddup" loads the 64-bit source value and duplicates it into high and low +quad word of the destination operand. The destination operand should be SSE +register, the source operand can be SSE register or 64-bit memory location. + "lddqu" is functionally equivalent to "movdqu" instruction with memory as +source operand, but it may improve performance when the source operand crosses +a cacheline boundary. The destination operand has to be SSE register, the +source operand must be 128-bit memory location. + "addsubps" performs single precision addition of second and fourth pairs and +single precision substracion of the first and third pairs of floating point +values in the operands. "addsubpd" performs double precision addition of the +second pair and double precision substraction of the first pair of floating +point values in the operand. "haddps" performs the addition of two single +precision values within the each quad word of source and destination operands, +and stores the results of such horizontal addition of values from destination +operand into low quad word of destination operand, and the results from the +source operand into high quad word of destination operand. "haddpd" performs +the addition of two double precision values within each operand, and stores +the result from destination operand into low quad word of destination operand, +and the result from source operand into high quad word of destination operand. +All these instruction need the destination operand to be SSE register, source +operand can be SSE register or 128-bit memory location. + "monitor" sets up an address range for monitoring of write-back stores. It +need its three operands to be EAX, ECX and EDX register in that order. "mwait" +waits for a write-back store to the address range set up by the "monitor" +instruction. It uses two operands with additional parameters, first being the +EAX and second the ECX register. + + +2.1.18 AMD 3DNow! instructions + +The 3DNow! extension adds a new MMX instructions to those described in 2.1.14, +and introduces operation on the 64-bit packed floating point values, each +consisting of two single precision floating point values. + These instructions follow the same rules as the general MMX operations, the +destination operand should be a MMX register, the source operand can be a MMX +register or 64-bit memory location. "pavgusb" computes the rounded averages +of packed unsigned bytes. "pmulhrw" performs a signed multiply of the packed +words, round the high word of each double word results and stores them in the +destination operand. "pi2fd" converts packed double word integers into +packed floating point values. "pf2id" converts packed floating point values +into packed double word integers using truncation. "pi2fw" converts packed +word integers into packed floating point values, only low words of each +double word in source operand are used. "pf2iw" converts packed floating +point values to packed word integers, results are extended to double words +using the sign extension. "pfadd" adds packed floating point values. "pfsub" +and "pfsubr" substracts packed floating point values, the first one substracts +source values from destination values, the second one substracts destination +values from the source values. "pfmul" multiplies packed floating point +values. "pfacc" adds the low and high floating point values of the destination +operand, storing the result in the low double word of destination, and adds +the low and high floating point values of the source operand, storing the +result in the high double word of destination. "pfnacc" substracts the high +floating point value of the destination operand from the low, storing the +result in the low double word of destination, and substracts the high floating +point value of the source operand from the low, storing the result in the high +double word of destination. "pfpnacc" substracts the high floating point value +of the destination operand from the low, storing the result in the low double +word of destination, and adds the low and high floating point values of the +source operand, storing the result in the high double word of destination. +"pfmax" and "pfmin" compute the maximum and minimum of floating point values. +"pswapd" reverses the high and low double word of the source operand. "pfrcp" +returns an estimates of the reciprocals of floating point values from the +source operand, "pfrsqrt" returns an estimates of the reciprocal square +roots of floating point values from the source operand, "pfrcpit1" performs +the first step in the Newton-Raphson iteration to refine the reciprocal +approximation produced by "pfrcp" instruction, "pfrsqit1" performs the first +step in the Newton-Raphson iteration to refine the reciprocal square root +approximation produced by "pfrsqrt" instruction, "pfrcpit2" performs the +second final step in the Newton-Raphson iteration to refine the reciprocal +approximation or the reciprocal square root approximation. "pfcmpeq", +"pfcmpge" and "pfcmpgt" compare the packed floating point values and sets +all bits or zeroes all bits of the correspoding data element in the +destination operand according to the result of comparison, first checks +whether values are equal, second checks whether destination value is greater +or equal to source value, third checks whether destination value is greater +than source value. + "prefetch" and "prefetchw" load the line of data from memory that contains +byte specified with the operand into the data cache, "prefetchw" instruction +should be used when the data in the cache line is expected to be modified, +otherwise the "prefetch" instruction should be used. The operand should be an +8-bit memory location. + "femms" performs a fast clear of MMX state. This instruction has no +operands. + + +2.1.19 The x86-64 long mode instructions + +The AMD64 and EM64T architectures (we will use the common name x86-64 for them +both) extend the x86 instruction set for the 64-bit processing. While legacy +and compatibility modes use the same set of registers and instructions, the +new long mode extends the x86 operations to 64 bits and introduces several new +registers. You can turn on generating the code for this mode with the "use64" +directive. + Each of the general purpose registers is extended to 64 bits and the eight +whole new general purpose registers and also eight new SSE registers are added. +See table 2.4 for the summary of new registers (only the ones that was not +listed in table 1.2). The general purpose registers of smallers sizes are the +low order portions of the larger ones. You can still access the "ah", "bh", +"ch" and "dh" registers in long mode, but you cannot use them in the same +instruction with any of the new registers. + + Table 2.4 New registers in long mode + ┌──────┬───────────────────────────┬───────┐ + │ Type │ General │ SSE │ + ├──────┼──────┬──────┬──────┬──────┼───────┤ + │ Bits │ 8 │ 16 │ 32 │ 64 │ 128 │ + ╞══════╪══════╪══════╪══════╪══════╪═══════╡ + │ │ │ │ │ rax │ │ + │ │ │ │ │ rcx │ │ + │ │ │ │ │ rdx │ │ + │ │ │ │ │ rbx │ │ + │ │ spl │ │ │ rsp │ │ + │ │ bpl │ │ │ rbp │ │ + │ │ sil │ │ │ rsi │ │ + │ │ dil │ │ │ rdi │ │ + │ │ r8b │ r8w │ r8d │ r8 │ xmm8 │ + │ │ r9b │ r9w │ r9d │ r9 │ xmm9 │ + │ │ r10b │ r10w │ r10d │ r10 │ xmm10 │ + │ │ r11b │ r11w │ r11d │ r11 │ xmm11 │ + │ │ r12b │ r12w │ r12d │ r12 │ xmm12 │ + │ │ r13b │ r13w │ r13d │ r13 │ xmm13 │ + │ │ r14b │ r14w │ r14d │ r14 │ xmm14 │ + │ │ r15b │ r15w │ r15d │ r15 │ xmm15 │ + └──────┴──────┴──────┴──────┴──────┴───────┘ + + In general any instruction from x86 architecture, which allowed 16-bit or +32-bit operand sizes, in long mode allows also the 64-bit operands. The 64-bit +registers should be used for addressing in long mode, the 32-bit addressing +is also allowed, but it's not possible to use the addresses based on 16-bit +registers. Below are the samples of new operations possible in long mode on the +example of "mov" instruction: + + mov rax,r8 ; transfer 64-bit general register + mov al,[rbx] ; transfer memory addressed by 64-bit register + +The long mode uses also the instruction pointer based addresses, you can +specify it manually with the special RIP register symbol, but such addressing +is also automatically generated by flat assembler, since there is no 64-bit +absolute addressing in long mode. You can still force the assembler to use the +32-bit absolute addressing by putting the "dword" size override for address +inside the square brackets. There is also one exception, where the 64-bit +absolute addressing is possible, it's the "mov" instruction with one of the +operand being accumulator register, and second being the memory operand. +To force the assembler to use the 64-bit absolute addressing there, use the +"qword" size operator for address inside the square brackets. When no size +operator is applied to address, assembler generates the optimal form +automatically. + + mov [qword 0],rax ; absolute 64-bit addressing + mov [dword 0],r15d ; absolute 32-bit addressing + mov [0],rsi ; automatic RIP-relative addressing + mov [rip+3],sil ; manual RIP-relative addressing + + Also as the immediate operands for 64-bit operations only the signed 32-bit +values are possible, with the only exception being the "mov" instruction with +destination operand being 64-bit general purpose register. Trying to force the +64-bit immediate with any other instruction will cause an error. + If any operation is performed on the 32-bit general registers in long mode, +the upper 32 bits of the 64-bit registers containing them are filled with +zeros. This is unlike the operations on 16-bit or 8-bit portions of those +registers, which preserve the upper bits. + Three new type conversion instructions are available. The "cdqe" sign extends +the double word in EAX into quad word and stores the result in RAX register. +"cqo" sign extends the quad word in RAX into double quad word and stores the +extra bits in the RDX register. These instructions have no operands. "movsxd" +sign extends the double word source operand, being either the 32-bit register +or memory, into 64-bit destination operand, which has to be register. +No analogous instruction is needed for the zero extension, since it is done +automatically by any operations on 32-bit registers, as noted in previous +paragraph. And the "movzx" and "movsx" instructions, conforming to the general +rule, can be used with 64-bit destination operand, allowing extension of byte +or word values into quad words. + All the binary arithmetic and logical instruction are promoted to allow +64-bit operands in long mode. The use of decimal arithmetic instructions in +long mode is prohibited. + The stack operations, like "push" and "pop" in long mode default to 64-bit +operands and it's not possible to use 32-bit operands with them. The "pusha" +and "popa" are disallowed in long mode. + The indirect near jumps and calls in long mode default to 64-bit operands and +it's not possible to use the 32-bit operands with them. On the other hand, the +indirect far jumps and calls allow any operands that were allowed by the x86 +architecture and also 80-bit memory operand is allowed (though only EM64T seems +to implement such variant), with the first eight bytes defining the offset and +two last bytes specifying the selector. The direct far jumps and calls are not +allowed in long mode. + The I/O instructions, "in", "out", "ins" and "outs" are the exceptional +instructions that are not extended to accept quad word operands in long mode. +But all other string operations are, and there are new short forms "movsq", +"cmpsq", "scasq", "lodsq" and "stosq" introduced for the variants of string +operations for 64-bit string elements. The RSI and RDI registers are used by +default to address the string elements. + The "lfs", "lgs" and "lss" instructions are extended to accept 80-bit source +memory operand with 64-bit destination register (though only EM64T seems to +implement such variant). The "lds" and "les" are disallowed in long mode. + The system instructions like "lgdt" which required the 48-bit memory operand, +in long mode require the 80-bit memory operand. + The "cmpxchg16b" is the 64-bit equivalent of "cmpxchg8b" instruction, it uses +the double quad word memory operand and 64-bit registers to perform the +analoguous operation. + "swapgs" is the new instruction, which swaps the contents of GS register and +the KernelGSbase model-specific register (MSR address 0C0000102h). + "syscall" and "sysret" is the pair of new instructions that provide the +functionality similar to "sysenter" and "sysexit" in long mode, where the +latter pair is disallowed. + + +2.2 Control directives + +This section describes the directives that control the assembly process, they +are processed during the assembly and may cause some blocks of instructions +to be assembled differently or not assembled at all. + + +2.2.1 Numerical constants + +The "=" directive allows to define the numerical constant. It should be +preceded by the name for the constant and followed by the numerical expression +providing the value. The value of such constants can be a number or an address, +but - unlike labels - the numerical constants are not allowed to hold the +register-based addresses. Besides this difference, in their basic variant +numerical constants behave very much like labels and you can even +forward-reference them (access their values before they actually get defined). + There is, however, a second variant of numerical constants, which is +recognized by assembler when you try to define the constant of name, under +which there already was a numerical constant defined. In such case assembler +treats that constant as an assembly-time variable and allows it to be assigned +with new value, but forbids forward-referencing it (for obvious reasons). Let's +see both the variant of numerical constants in one example: + + dd sum + x = 1 + x = x+2 + sum = x + +Here the "x" is an assembly-time variable, and every time it is accessed, the +value that was assigned to it the most recently is used. Thus if we tried to +access the "x" before it gets defined the first time, like if we wrote "dd x" +in place of the "dd sum" instruction, it would cause an error. And when it is +re-defined with the "x = x+2" directive, the previous value of "x" is used to +calculate the new one. So when the "sum" constant gets defined, the "x" has +value of 3, and this value is assigned to the "sum". Since this one is defined +only once in source, it is the standard numerical constant, and can be +forward-referenced. So the "dd sum" is assembled as "dd 3". To read more about +how the assembler is able to resolve this, see section 2.2.6. + The value of numerical constant can be preceded by size operator, which can +ensure that the value will fit in the range for the specified size, and can +affect also how some of the calculations inside the numerical expression are +performed. This example: + + c8 = byte -1 + c32 = dword -1 + +defines two different constants, the first one fits in 8 bits, the second one +fits in 32 bits. + When you need to define constant with the value of address, which may be +register-based (and thus you cannot employ numerical constant for this +purpose), you can use the extended syntax of "label" directive (already +described in section 1.2.3), like: + + label myaddr at ebp+4 + +which declares label placed at "ebp+4" address. However remember that labels, +unlike numerical constants, cannot become assembly-time variables. + + +2.2.2 Conditional assembly + +"if" directive causes come block of instructions to be assembled only under +certain condition. It should be followed by logical expression specifying the +condition, instructions in next lines will be assembled only when this +condition is met, otherwise they will be skipped. The optional "else if" +directive followed with logical expression specifying additional condition +begins the next block of instructions that will be assembled if previous +conditions were not met, and the additional condition is met. The optional +"else" directive begins the block of instructions that will be assembled if +all the conditions were not met. The "end if" directive ends the last block of +instructions. + You should note that "if" directive is processed at assembly stage and +therefore it doesn't affect any preprocessor directives, like the definitions +of symbolic constants and macroinstructions - when the assembler recognizes the +"if" directive, all the preprocessing has been already finished. + The logical expression consist of logical values and logical operators. The +logical operators are "~" for logical negation, "&" for logical and, "|" for +logical or. The negation has the highest priority. Logical value can be a +numerical expression, it will be false if it is equal to zero, otherwise it +will be true. Two numerical expression can be compared using one of the +following operators to make the logical value: "=" (equal), "<" (less), +">" (greater), "<=" (less or equal), ">=" (greater or equal), +"<>" (not equal). + The "used" operator followed by a symbol name, is the logical value that +checks whether the given symbol is used somewhere (it returns correct result +even if symbol is used only after this check). The "defined" operator can be +followed by any expression, usually just by a single symbol name; it checks +whether the given expression contains only symbols that are defined in the +source and accessible from the current position. + The following simple example uses the "count" constant that should be +defined somewhere in source: + + if count>0 + mov cx,count + rep movsb + end if + +These two assembly instructions will be assembled only if the "count" constant +is greater than 0. The next sample shows more complex conditional structure: + + if count & ~ count mod 4 + mov cx,count/4 + rep movsd + else if count>4 + mov cx,count/4 + rep movsd + mov cx,count mod 4 + rep movsb + else + mov cx,count + rep movsb + end if + +The first block of instructions gets assembled when the "count" is non zero and +divisible by four, if this condition is not met, the second logical expression, +which follows the "else if", is evaluated and if it's true, the second block +of instructions get assembled, otherwise the last block of instructions, which +follows the line containing only "else", is assembled. + There are also operators that allow comparison of values being any chains of +symbols. The "eq" compares two such values whether they are exactly the same. +The "in" operator checks whether given value is a member of the list of values +following this operator, the list should be enclosed between "<" and ">" +characters, its members should be separated with commas. The symbols are +considered the same when they have the same meaning for the assembler - for +example "pword" and "fword" for assembler are the same and thus are not +distinguished by the above operators. In the same way "16 eq 10h" is the true +condition, however "16 eq 10+4" is not. + The "eqtype" operator checks whether the two compared values have the same +structure, and whether the structural elements are of the same type. The +distinguished types include numerical expressions, individual quoted strings, +floating point numbers, address expressions (the expressions enclosed in square +brackets or preceded by "ptr" operator), instruction mnemonics, registers, size +operators, jump type and code type operators. And each of the special +characters that act as a separators, like comma or colon, is the separate type +itself. For example, two values, each one consisting of register name followed +by comma and numerical expression, will be regarded as of the same type, no +matter what kind of register and how complicated numerical expression is used; +with exception for the quoted strings and floating point values, which are the +special kinds of numerical expressions and are treated as different types. Thus +"eax,16 eqtype fs,3+7" condition is true, but "eax,16 eqtype eax,1.6" is false. + + +2.2.3 Repeating blocks of instructions + +"times" directive repeats one instruction specified number of times. It +should be followed by numerical expression specifying number of repeats and +the instruction to repeat (optionally colon can be used to separate number and +instruction). When special symbol "%" is used inside the instruction, it is +equal to the number of current repeat. For example "times 5 db %" will define +five bytes with values 1, 2, 3, 4, 5. Recursive use of "times" directive is +also allowed, so "times 3 times % db %" will define six bytes with values +1, 1, 2, 1, 2, 3. + "repeat" directive repeats the whole block of instructions. It should be +followed by numerical expression specifying number of repeats. Instructions +to repeat are expected in next lines, ended with the "end repeat" directive, +for example: + + repeat 8 + mov byte [bx],% + inc bx + end repeat + +The generated code will store byte values from one to eight in the memory +addressed by BX register. + Number of repeats can be zero, in that case the instructions are not +assembled at all. + The "break" directive allows to stop repeating earlier and continue assembly +from the first line after the "end repeat". Combined with the "if" directive it +allows to stop repeating under some special condition, like: + + s = x/2 + repeat 100 + if x/s = s + break + end if + s = (s+x/s)/2 + end repeat + + The "while" directive repeats the block of instructions as long as the +condition specified by the logical expression following it is true. The block +of instructions to be repeated should end with the "end while" directive. +Before each repetition the logical expression is evaluated and when its value +is false, the assembly is continued starting from the first line after the +"end while". Also in this case the "%" symbol holds the number of current +repeat. The "break" directive can be used to stop this kind of loop in the same +way as with "repeat" directive. The previous sample can be rewritten to use the +"while" instead of "repeat" this way: + + s = x/2 + while x/s <> s + s = (s+x/s)/2 + if % = 100 + break + end if + end while + + The blocks defined with "if", "repeat" and "while" can be nested in any +order, however they should be closed in the same order in which they were +started. The "break" directive always stops processing the block that was +started last with either the "repeat" or "while" directive. + + +2.2.4 Addressing spaces + + "org" directive sets address at which the following code is expected to +appear in memory. It should be followed by numerical expression specifying +the address. This directive begins the new addressing space, the following +code itself is not moved in any way, but all the labels defined within it +and the value of "$" symbol are affected as if it was put at the given +address. However it's the responsibility of programmer to put the code at +correct address at run-time. + The "load" directive allows to define constant with a binary value loaded +from the already assembled code. This directive should be followed by the name +of the constant, then optionally size operator, then "from" operator and a +numerical expression specifying a valid address in current addressing space. +The size operator has unusual meaning in this case - it states how many bytes +(up to 8) have to be loaded to form the binary value of constant. If no size +operator is specified, one byte is loaded (thus value is in range from 0 to +255). The loaded data cannot exceed current offset. + The "store" directive can modify the already generated code by replacing +some of the previously generated data with the value defined by given +numerical expression, which follow. The expression can be preceded by the +optional size operator to specify how large value the expression defines, and +therefore how much bytes will be stored, if there is no size operator, the +size of one byte is assumed. Then the "at" operator and the numerical +expression defining the valid address in current addressing code space, at +which the given value have to be stored should follow. This is a directive for +advanced appliances and should be used carefully. + Both "load" and "store" directives are limited to operate on places in +current addressing space. The "$$" symbol is always equal to the base address +of current addressing space, and the "$" symbol is the address of current +position in that addressing space, therefore these two values define limits +of the area, where "load" and "store" can operate. + Combining the "load" and "store" directives allows to do things like encoding +some of the already generated code. For example to encode the whole code +generated in current addressing space you can use such block of directives: + + repeat $-$$ + load a byte from $$+%-1 + store byte a xor c at $$+%-1 + end repeat + +and each byte of code will be xored with the value defined by "c" constant. + "virtual" defines virtual data at specified address. This data won't be +included in the output file, but labels defined there can be used in other +parts of source. This directive can be followed by "at" operator and the +numerical expression specifying the address for virtual data, otherwise is +uses current address, the same as "virtual at $". Instructions defining data +are expected in next lines, ended with "end virtual" directive. The block of +virtual instructions itself is an independent addressing space, after it's +ended, the context of previous addressing space is restored. + The "virtual" directive can be used to create union of some variables, for +example: + + GDTR dp ? + virtual at GDTR + GDT_limit dw ? + GDT_address dd ? + end virtual + +It defines two labels for parts of the 48-bit variable at "GDTR" address. + It can be also used to define labels for some structures addressed by a +register, for example: + + virtual at bx + LDT_limit dw ? + LDT_address dd ? + end virtual + +With such definition instruction "mov ax,[LDT_limit]" will be assembled +to "mov ax,[bx]". + Declaring defined data values or instructions inside the virtual block would +also be useful, because the "load" directive can be used to load the values +from the virtually generated code into a constants. This directive should be +used after the code it loads but before the virtual block ends, because it can +only load the values from the same addressing space. For example: + + virtual at 0 + xor eax,eax + and edx,eax + load zeroq dword from 0 + end virtual + +The above piece of code will define the "zeroq" constant containing four bytes +of the machine code of the instructions defined inside the virtual block. +This method can be also used to load some binary value from external file. +For example this code: + + virtual at 0 + file 'a.txt':10h,1 + load char from 0 + end virtual + +loads the single byte from offset 10h in file "a.txt" into the "char" +constant. + Any of the "section" directives described in 2.4 also begins a new +addressing space. + + +2.2.5 Other directives + +"align" directive aligns code or data to the specified boundary. It should +be followed by a numerical expression specifying the number of bytes, to the +multiply of which the current address has to be aligned. The boundary value +has to be the power of two. + The "align" directive fills the bytes that had to be skipped to perform the +alignment with the "nop" instructions and at the same time marks this area as +uninitialized data, so if it is placed among other uninitialized data that +wouldn't take space in the output file, the alignment bytes will act the same +way. If you need to fill the alignment area with some other values, you can +combine "align" with "virtual" to get the size of alignment needed and then +create the alignment yourself, like: + + virtual + align 16 + a = $ - $$ + end virtual + db a dup 0 + +The "a" constant is defined to be the difference between address after +alignment and address of the "virtual" block (see previous section), so it is +equal to the size of needed alignment space. + "display" directive displays the message at the assembly time. It should +be followed by the quoted strings or byte values, separated with commas. It +can be used to display values of some constants, for example: + + bits = 16 + display 'Current offset is 0x' + repeat bits/4 + d = '0' + $ shr (bits-%*4) and 0Fh + if d > '9' + d = d + 'A'-'9'-1 + end if + display d + end repeat + display 13,10 + +This block of directives calculates the four hexadecimal digits of 16-bit value +and converts them into characters for displaying. Note that this won't work if +the adresses in current addressing space are relocatable (as it might happen +with PE or object output formats), since only absolute values can be used this +way. The absolute value may be obtained by calculating the relative address, +like "$-$$", or "rva $" in case of PE format. + + +2.2.6 Multiple passes + +Because the assembler allows to reference some of the labels or constants +before they get actually defined, it has to predict the values of such labels +and if there is even a suspicion that prediction failed in at least one case, +it does one more pass, assembling the whole source, this time doing better +prediction based on the values the labels got in the previous pass. + The changing values of labels can cause some instructions to have encodings +of different length, and this can cause the change in values of labels again. +And since the labels and constants can also be used inside the expressions that +affect the behavior of control directives, the whole block of source can be +processed completely differently during the new pass. Thus the assembler does +more and more passes, each time trying to do better predictions to approach +the final solution, when all the values get predicted correctly. It uses +various method for predicting the values, which has been chosen to allow +finding in a few passes the solution of possibly smallest length for the most +of the programs. + Some of the errors, like the values not fitting in required boundaries, are +not signaled during those intermediate passes, since it may happen that when +some of the values are predicted better, these errors will disappear. However +if assembler meets some illegal syntax construction or unknown instruction, it +always stops immediately. Also defining some label more than once causes such +error, because it makes the predictions groundless. + Only the messages created with the "display" directive during the last +performed pass get actually displayed. In case when the assembly has been +stopped due to an error, these messages may reflect the predicted values that +are not yet resolved correctly. + The solution may sometimes not exist and in such cases the assembler will +never manage to make correct predictions - for this reason there is a limit for +a number of passes, and when assembler reaches this limit, it stops and +displays the message that it is not able to generate the correct output. +Consider the following example: + + if ~ defined alpha + alpha: + end if + +The "defined" operator gives the true value when the expression following it +could be calculated in this place, what in this case means that the "alpha" +label is defined somewhere. But the above block causes this label to be defined +only when the value given by "defined" operator is false, what leads to an +antynomy and makes it impossible to resolve such code. When processing the "if" +directive assembler has to predict whether the "alpha" label will be defined +somewhere (it wouldn't have to predict only if the label was already defined +earlier in this pass), and whatever the prediction is, the opposite always +happens. Thus the assembly will fail, unless the "alpha" label is defined +somewhere in source preceding the above block of instructions - in such case, +as it was already noted, the prediction is not needed and the block will just +get skipped. + The above sample might have been written as a try to define the label only +when it was not yet defined. It fails, because the "defined" operator does +check whether the label is defined anywhere, and this includes the definition +inside this conditionally processed block. However adding some additional +condition may make it possible to get it resolved: + + if ~ defined alpha | defined @f + alpha: + @@: + end if + +The "@f" is always the same label as the nearest "@@" symbol in the source +following it, so the above sample would mean the same if any unique name was +used instead of the anonymous label. When "alpha" is not defined in any other +place in source, the only possible solution is when this block gets defined, +and this time this doesn't lead to the antynomy, because of the anonymous +label which makes this block self-establishing. To better understand this, +look at the blocks that has nothing more than this self-establishing: + + if defined @f + @@: + end if + +This is an example of source that may have more than one solution, as both +cases when this block gets processed or not are equally correct. Which one of +those two solutions we get depends on the algorithm on the assembler, in case +of flat assembler - on the algorithm of predictions. Back to the previous +sample, when "alpha" is not defined anywhere else, the condition for "if" block +cannot be false, so we are left with only one possible solution, and we can +hope the assembler will arrive at it. On the other hand, when "alpha" is +defined in some other place, we've got two possible solutions again, but one of +them causes "alpha" to be defined twice, and such an error causes assembler to +abort the assembly immediately, as this is the kind of error that deeply +disturbs the process of resolving. So we can get such source either correctly +resolved or causing an error, and what we get may depend on the internal +choices made by the assembler. + However there are some facts about such choices that are certain. When +assembler has to check whether the given symbol is defined and it was already +defined in the current pass, no prediction is needed - it was already noted +above. And when the given symbol has been defined never before, including all +the already finished passes, the assembler predicts it to be not defined. +Knowing this, we can expect that the simple self-establishing block shown +above will not be assembled at all and that the previous sample will resolve +correctly when "alpha" is defined somewhere before our conditional block, +while it will itself define "alpha" when it's not already defined earlier, thus +potentially causing the error because of double definition if the "alpha" is +also defined somewhere later. + The "used" operator may be expected to behave in a similar manner in +analogous cases, however any other kinds of predictions my not be so simple and +you should never rely on them this way. + + +2.3 Preprocessor directives + +All preprocessor directives are processed before the main assembly process, +and therefore are not affected by the control directives. At this time also +all comments are stripped out. + + +2.3.1 Including source files + +"include" directive includes the specified source file at the position where +it is used. It should be followed by the quoted name of file that should be +included, for example: + + include 'macros.inc' + +The whole included file is preprocessed before preprocessing the lines next +to the line containing the "include" directive. There are no limits to the +number of included files as long as they fit in memory. + The quoted path can contain environment variables enclosed within "%" +characters, they will be replaced with their values inside the path, both the +"\" and "/" characters are allowed as a path separators. If no absolute path +is given, the file is first searched for in the directory containing file +which included it and when it's not found there, in the directory containing +the main source file (the one specified in command line). These rules concern +also paths given with the "file" directive. + + +2.3.2 Symbolic constants + +The symbolic constants are different from the numerical constants, before the +assembly process they are replaced with their values everywhere in source +lines after their definitions, and anything can become their values. + The definition of symbolic constant consists of name of the constant +followed by the "equ" directive. Everything that follows this directive will +become the value of constant. If the value of symbolic constant contains +other symbolic constants, they are replaced with their values before assigning +this value to the new constant. For example: + + d equ dword + NULL equ d 0 + d equ edx + +After these three definitions the value of "NULL" constant is "dword 0" and +the value of "d" is "edx". So, for example, "push NULL" will be assembled as +"push dword 0" and "push d" will be assembled as "push edx". And if then the +following line was put: + + d equ d,eax + +the "d" constant would get the new value of "edx,eax". This way the growing +lists of symbols can be defined. + "restore" directive allows to get back previous value of redefined symbolic +constant. It should be followed by one more names of symbolic constants, +separated with commas. So "restore d" after the above definitions will give +"d" constant back the value "edx", the second one will restore it to value +"dword", and one more will revert "d" to original meaning as if no such +constant was defined. If there was no constant defined of given name, +"restore" won't cause an error, it will be just ignored. + Symbolic constant can be used to adjust the syntax of assembler to personal +preferences. For example the following set of definitions provides the handy +shortcuts for all the size operators: + + b equ byte + w equ word + d equ dword + p equ pword + f equ fword + q equ qword + t equ tword + x equ dqword + + Because symbolic constant may also have an empty value, it can be used to +allow the syntax with "offset" word before any address value: + + offset equ + +After this definition "mov ax,offset char" will be valid construction for +copying the offset of "char" variable into "ax" register, because "offset" is +replaced with an empty value, and therefore ignored. + The "define" directive followed by the name of constant and then the value, +is the alternative way of defining symbolic constant. The only difference +between "define" and "equ" is that "define" assigns the value as it is, it does +not replace the symbolic constants with their values inside it. + Symbolic constants can also be defined with the "fix" directive, which has +the same syntax as "equ", but defines constants of high priority - they are +replaced with their symbolic values even before processing the preprocessor +directives and macroinstructions, the only exception is "fix" directive +itself, which has the highest possible priority, so it allows redefinition of +constants defined this way. + The "fix" directive can be used for syntax adjustments related to directives +of preprocessor, what cannot be done with "equ" directive. For example: + + incl fix include + +defines a short name for "include" directive, while the similar definition done +with "equ" directive wouldn't give such result, as standard symbolic constants +are replaced with their values after searching the line for preprocessor +directives. + + +2.3.3 Macroinstructions + +"macro" directive allows you to define your own complex instructions, called +macroinstructions, using which can greatly simplify the process of +programming. In its simplest form it's similar to symbolic constant +definition. For example the following definition defines a shortcut for the +"test al,0xFF" instruction: + + macro tst {test al,0xFF} + +After the "macro" directive there is a name of macroinstruction and then its +contents enclosed between the "{" and "}" characters. You can use "tst" +instruction anywhere after this definition and it will be assembled as +"test al,0xFF". Defining symbolic constant "tst" of that value would give the +similar result, but the difference is that the name of macroinstruction is +recognized only as an instruction mnemonic. Also, macroinstructions are +replaced with corresponding code even before the symbolic constants are +replaced with their values. So if you define macroinstruction and symbolic +constant of the same name, and use this name as an instruction mnemonic, it +will be replaced with the contents of macroinstruction, but it will be +replaced with value if symbolic constant if used somewhere inside the +operands. + The definition of macroinstruction can consist of many lines, because +"{" and "}" characters don't have to be in the same line as "macro" directive. +For example: + + macro stos0 + { + xor al,al + stosb + } + +The macroinstruction "stos0" will be replaced with these two assembly +instructions anywhere it's used. + Like instructions which needs some number of operands, the macroinstruction +can be defined to need some number of arguments separated with commas. The +names of needed argument should follow the name of macroinstruction in the +line of "macro" directive and should be separated with commas if there is more +than one. Anywhere one of these names occurs in the contents of +macroinstruction, it will be replaced with corresponding value, provided when +the macroinstruction is used. Here is an example of a macroinstruction that +will do data alignment for binary output format: + + macro align value { rb (value-1)-($+value-1) mod value } + +When the "align 4" instruction is found after this macroinstruction is +defined, it will be replaced with contents of this macroinstruction, and the +"value" will there become 4, so the result will be "rb (4-1)-($+4-1) mod 4". + If a macroinstruction is defined that uses an instruction with the same name +inside its definition, the previous meaning of this name is used. Useful +redefinition of macroinstructions can be done in that way, for example: + + macro mov op1,op2 + { + if op1 in & op2 in + push op2 + pop op1 + else + mov op1,op2 + end if + } + +This macroinstruction extends the syntax of "mov" instruction, allowing both +operands to be segment registers. For example "mov ds,es" will be assembled as +"push es" and "pop ds". In all other cases the standard "mov" instruction will +be used. The syntax of this "mov" can be extended further by defining next +macroinstruction of that name, which will use the previous macroinstruction: + + macro mov op1,op2,op3 + { + if op3 eq + mov op1,op2 + else + mov op1,op2 + mov op2,op3 + end if + } + +It allows "mov" instruction to have three operands, but it can still have two +operands only, because when macroinstruction is given less arguments than it +needs, the rest of arguments will have empty values. When three operands are +given, this macroinstruction will become two macroinstructions of the previous +definition, so "mov es,ds,dx" will be assembled as "push ds", "pop es" and +"mov ds,dx". + By placing the "*" after the name of argument you can mark the argument as +required - preprocessor won't allow it to have an empty value. For example the +above macroinstruction could be declared as "macro mov op1*,op2*,op3" to make +sure that first two arguments will always have to be given some non empty +values. + When it's needed to provide macroinstruction with argument that contains +some commas, such argument should be enclosed between "<" and ">" characters. +If it contains more than one "<" character, the same number of ">" should be +used to tell that the value of argument ends. + "purge" directive allows removing the last definition of specified +macroinstruction. It should be followed by one or more names of +macroinstructions, separated with commas. If such macroinstruction has not +been defined, you won't get any error. For example after having the syntax of +"mov" extended with the macroinstructions defined above, you can disable +syntax with three operands back by using "purge mov" directive. Next +"purge mov" will disable also syntax for two operands being segment registers, +and all the next such directives will do nothing. + If after the "macro" directive you enclose some group of arguments' names in +square brackets, it will allow giving more values for this group of arguments +when using that macroinstruction. Any more argument given after the last +argument of such group will begin the new group and will become the first +argument of it. That's why after closing the square bracket no more argument +names can follow. The contents of macroinstruction will be processed for each +such group of arguments separately. The simplest example is to enclose one +argument name in square brackets: + + macro stoschar [char] + { + mov al,char + stosb + } + +This macroinstruction accepts unlimited number of arguments, and each one +will be processed into these two instructions separately. For example +"stoschar 1,2,3" will be assembled as the following instructions: + + mov al,1 + stosb + mov al,2 + stosb + mov al,3 + stosb + + There are some special directives available only inside the definitions of +macroinstructions. "local" directive defines local names, which will be +replaced with unique values each time the macroinstruction is used. It should +be followed by names separated with commas. If the name given as parameter to +"local" directive begins with a dot or two dots, the unique labels generated +by each evaluation of macroinstruction will have the same properties. +This directive is usually needed for the constants or labels that +macroinstruction defines and uses internally. For example: + + macro movstr + { + local move + move: + lodsb + stosb + test al,al + jnz move + } + +Each time this macroinstruction is used, "move" will become other unique name +in its instructions, so you won't get an error you normally get when some +label is defined more than once. + "forward", "reverse" and "common" directives divide macroinstruction into +blocks, each one processed after the processing of previous is finished. They +differ in behavior only if macroinstruction allows multiple groups of +arguments. Block of instructions that follows "forward" directive is processed +for each group of arguments, from first to last - exactly like the default +block (not preceded by any of these directives). Block that follows "reverse" +directive is processed for each group of argument in reverse order - from last +to first. Block that follows "common" directive is processed only once, +commonly for all groups of arguments. Local name defined in one of the blocks +is available in all the following blocks when processing the same group of +arguments as when it was defined, and when it is defined in common block it is +available in all the following blocks not depending on which group of +arguments is processed. + Here is an example of macroinstruction that will create the table of +addresses to strings followed by these strings: + + macro strtbl name,[string] + { + common + label name dword + forward + local label + dd label + forward + label db string,0 + } + +First argument given to this macroinstruction will become the label for table +of addresses, next arguments should be the strings. First block is processed +only once and defines the label, second block for each string declares its +local name and defines the table entry holding the address to that string. +Third block defines the data of each string with the corresponding label. + The directive starting the block in macroinstruction can be followed by the +first instruction of this block in the same line, like in the following +example: + + macro stdcall proc,[arg] + { + reverse push arg + common call proc + } + +This macroinstruction can be used for calling the procedures using STDCALL +convention, arguments are pushed on stack in the reverse order. For example +"stdcall foo,1,2,3" will be assembled as: + + push 3 + push 2 + push 1 + call foo + + If some name inside macroinstruction has multiple values (it is either one +of the arguments enclosed in square brackets or local name defined in the +block following "forward" or "reverse" directive) and is used in block +following the "common" directive, it will be replaced with all of its values, +separated with commas. For example the following macroinstruction will pass +all of the additional arguments to the previously defined "stdcall" +macroinstruction: + + macro invoke proc,[arg] + { common stdcall [proc],arg } + +It can be used to call indirectly (by the pointer stored in memory) the +procedure using STDCALL convention. + Inside macroinstruction also special operator "#" can be used. This +operator causes two names to be concatenated into one name. It can be useful, +because it's done after the arguments and local names are replaced with their +values. The following macroinstruction will generate the conditional jump +according to the "cond" argument: + + macro jif op1,cond,op2,label + { + cmp op1,op2 + j#cond label + } + +For example "jif ax,ae,10h,exit" will be assembled as "cmp ax,10h" and +"jae exit" instructions. + The "#" operator can be also used to concatenate two quoted strings into one. +Also conversion of name into a quoted string is possible, with the "`" operator, +which likewise can be used inside the macroinstruction. It convert the name +that follows it into a quoted string - but note, that when it is followed by +a macro argument which is being replaced with value containing more than one +symbol, only the first of them will be converted, as the "`" operator converts +only one symbol that immediately follows it. Here's an example of utilizing +those two features: + + macro label name + { + label name + if ~ used name + display `name # " is defined but not used.",13,10 + end if + } + +When label defined with such macro is not used in the source, macro will warn +you with the message, informing to which label it applies. + To make macroinstruction behaving differently when some of the arguments are +of some special type, for example a quoted strings, you can use "eqtype" +comparison operator. Here's an example of utilizing it to distinguish a +quoted string from an other argument: + + macro message arg + { + if arg eqtype "" + local str + jmp @f + str db arg,0Dh,0Ah,24h + @@: + mov dx,str + else + mov dx,arg + end if + mov ah,9 + int 21h + } + +The above macro is designed for displaying messages in DOS programs. When the +argument of this macro is some number, label, or variable, the string from +that address is displayed, but when the argument is a quoted string, the +created code will display that string followed by the carriage return and +line feed. + It is also possible to put a declaration of macroinstruction inside another +macroinstruction, so one macro can define another, but there is a problem +with such definitions caused by the fact, that "}" character cannot occur +inside the macroinstruction, as it always means the end of definition. To +overcome this problem, the escaping of symbols inside macroinstruction can be +used. This is done by placing one or more backslashes in front of any other +symbol (even the special character). Preprocessor sees such sequence as a +single symbol, but each time it meets such symbol during the macroinstruction +processing, it cuts the backslash character from the front of it. For example +"\{" is treated as single symbol, but during processing of the macroinstruction +it becomes the "{" symbol. This allows to put one definition of +macroinstruction inside another: + + macro ext instr + { + macro instr op1,op2,op3 + \{ + if op3 eq + instr op1,op2 + else + instr op1,op2 + instr op2,op3 + end if + \} + } + + ext add + ext sub + +The macro "ext" is defined correctly, but when it is used, the "\{" and "\}" +become the "{" and "}" symbols. So when the "ext add" is processed, the +contents of macro becomes valid definition of a macroinstruction and this way +the "add" macro becomes defined. In the same way "ext sub" defines the "sub" +macro. The use of "\{" symbol wasn't really necessary here, but is done this +way to make the definition more clear. + If some directives specific to macroinstructions, like "local" or "common" +are needed inside some macro embedded this way, they can be escaped in the same +way. Escaping the symbol with more than one backslash is also allowed, which +allows multiple levels of nesting the macroinstruction definitions. + The another technique for defining one macroinstruction by another is to +use the "fix" directive, which becomes useful when some macroinstruction only +begins the definition of another one, without closing it. For example: + + macro tmacro [params] + { + common macro params { + } + + MACRO fix tmacro + ENDM fix } + +defines an alternative syntax for defining macroinstructions, which looks like: + + MACRO stoschar char + mov al,char + stosb + ENDM + +Note that symbol that has such customized definition must be defined with "fix" +directive, because only the prioritized symbolic constants are processed before +the preprocessor looks for the "}" character while defining the macro. This +might be a problem if one needed to perform some additional tasks one the end +of such definition, but there is one more feature which helps in such cases. +Namely it is possible to put any directive, instruction or macroinstruction +just after the "}" character that ends the macroinstruction and it will be +processed in the same way as if it was put in the next line. + + +2.3.4 Structures + +"struc" directive is a special variant of "macro" directive that is used to +define data structures. Macroinstruction defined using the "struc" directive +must be preceded by a label (like the data definition directive) when it's +used. This label will be also attached at the beginning of every name starting +with dot in the contents of macroinstruction. The macroinstruction defined +using the "struc" directive can have the same name as some other +macroinstruction defined using the "macro" directive, structure +macroinstruction won't prevent the standard macroinstruction being processed +when there is no label before it and vice versa. All the rules and features +concerning standard macroinstructions apply to structure macroinstructions. + Here is the sample of structure macroinstruction: + + struc point x,y + { + .x dw x + .y dw y + } + +For example "my point 7,11" will define structure labeled "my", consisting of +two variables: "my.x" with value 7 and "my.y" with value 11. + If somewhere inside the definition of structure the name consisting of a +single dot it found, it is replaced by the name of the label for the given +instance of structure and this label will not be defined automatically in +such case, allowing to completely customize the definition. The following +example utilizes this feature to extend the data definition directive "db" +with ability to calculate the size of defined data: + + struc db [data] + { + common + . db data + .size = $ - . + } + +With such definition "msg db 'Hello!',13,10" will define also "msg.size" +constant, equal to the size of defined data in bytes. + Defining data structures addressed by registers or absolute values should be +done using the "virtual" directive with structure macroinstruction +(see 2.2.4). + "restruc" directive removes the last definition of the structure, just like +"purge" does with macroinstructions and "restore" with symbolic constants. +It also has the same syntax - should be followed by one or more names of +structure macroinstructions, separated with commas. + + +2.3.5 Repeating macroinstructions + +The "rept" directive is a special kind of macroinstruction, which makes given +amount of duplicates of the block enclosed with braces. The basic syntax is +"rept" directive followed by number (it cannot be an expression, since +preprocessor doesn't do calculations, if you need repetitions based on values +calculated by assembler, use one of the code repeating directives that are +processed by assembler, see 2.2.3), and then block of source enclosed between +the "{" and "}" characters. The simplest example: + + rept 5 { in al,dx } + +will make five duplicates of the "in al,dx" line. The block of instructions +is defined in the same way as for the standard macroinstruction and any +special operators and directives which can be used only inside +macroinstructions are also allowed here. When the given count is zero, the +block is simply skipped, as if you defined macroinstruction but never used +it. The number of repetitions can be followed by the name of counter symbol, +which will get replaced symbolically with the number of duplicate currently +generated. So this: + + rept 3 counter + { + byte#counter db counter + } + +will generate lines: + + byte1 db 1 + byte2 db 2 + byte3 db 3 + +The repetition mechanism applied to "rept" blocks is the same as the one used +to process multiple groups of arguments for macroinstructions, so directives +like "forward", "common" and "reverse" can be used in their usual meaning. +Thus such macroinstruction: + + rept 7 num { reverse display `num } + +will display digits from 7 to 1 as text. The "local" directive behaves in the +same way as inside macroinstruction with multiple groups of arguments, so: + + rept 21 + { + local label + label: loop label + } + +will generate unique label for each duplicate. + The counter symbol by default counts from 1, but you can declare different +base value by placing the number preceded by colon immediately after the name +of counter. For example: + + rept 8 n:0 { pxor xmm#n,xmm#n } + +will generate code which will clear the contents of eight SSE registers. +You can define multiple counters separated with commas, and each one can have +different base. + The "irp" directive iterates the single argument through the given list of +parameters. The syntax is "irp" followed by the argument name, then the comma +and then the list of parameters. The parameters are specified in the same +way like in the invocation of standard macroinstruction, so they have to be +separated with commas and each one can be enclosed with the "<" and ">" +characters. Also the name of argument may be followed by "*" to mark that it +cannot get an empty value. Such block: + + irp value, 2,3,5 + { db value } + +will generate lines: + + db 2 + db 3 + db 5 + +The "irps" directive iterates through the given list of symbols, it should +be followed by the argument name, then the comma and then the sequence of any +symbols. Each symbol in this sequence, no matter whether it is the name +symbol, symbol character or quoted string, becomes an argument value for one +iteration. If there are no symbols following the comma, no iteration is done +at all. This example: + + irps reg, al bx ecx + { xor reg,reg } + +will generate lines: + + xor al,al + xor bx,bx + xor ecx,ecx + +The blocks defined by the "irp" and "irps" directives are also processed in +the same way as any macroinstructions, so operators and directives specific +to macroinstructions may be freely used also in this case. + + +2.3.6 Conditional preprocessing + +"match" directive causes some block of source to be preprocessed and passed +to assembler only when the given sequence of symbols matches the specified +pattern. The pattern comes first, ended with comma, then the symbols that have +to be matched with the pattern, and finally the block of source, enclosed +within braces as macroinstruction. + There are the few rules for building the expression for matching, first is +that any of symbol characters and any quoted string should be matched exactly +as is. In this example: + + match +,+ { include 'first.inc' } + match +,- { include 'second.inc' } + +the first file will get included, since "+" after comma matches the "+" in +pattern, and the second file won't be included, since there is no match. + To match any other symbol literally, it has to be preceded by "=" character +in the pattern. Also to match the "=" character itself, or the comma, the +"==" and "=," constructions have to be used. For example the "=a==" pattern +will match the "a=" sequence. + If some name symbol is placed in the pattern, it matches any sequence +consisting of at least one symbol and then this name is replaced with the +matched sequence everywhere inside the following block, analogously to the +parameters of macroinstruction. For instance: + + match a-b, 0-7 + { dw a,b-a } + +will generate the "dw 0,7-0" instruction. Each name is always matched with +as few symbols as possible, leaving the rest for the following ones, so in +this case: + + match a b, 1+2+3 { db a } + +the "a" name will match the "1" symbol, leaving the "+2+3" sequence to be +matched with "b". But in this case: + + match a b, 1 { db a } + +there will be nothing left for "b" to match, so the block won't get processed +at all. + The block of source defined by match is processed in the same way as any +macroinstruction, so any operators specific to macroinstructions can be used +also in this case. + What makes "match" directive more useful is the fact, that it replaces the +symbolic constants with their values in the matched sequence of symbols (that +is everywhere after comma up to the beginning of the source block) before +performing the match. Thanks to this it can be used for example to process +some block of source under the condition that some symbolic constant has the +given value, like: + + match =TRUE, DEBUG { include 'debug.inc' } + +which will include the file only when the symbolic constant "DEBUG" was +defined with value "TRUE". + + +2.3.7 Order of processing + +When combining various features of the preprocessor, it's important to know +the order in which they are processed. As it was already noted, the highest +priority has the "fix" directive and the replacements defined with it. This +is done completely before doing any other preprocessing, therefore this +piece of source: + + V fix { + macro empty + V + V fix } + V + +becomes a valid definition of an empty macroinstruction. It can be interpreted +that the "fix" directive and prioritized symbolic constants are processed in +a separate stage, and all other preprocessing is done after on the resulting +source. + The standard preprocessing that comes after, on each line begins with +recognition of the first symbol. It begins with checking for the preprocessor +directives, and when none of them is detected, preprocessor checks whether the +first symbol is macroinstruction. If no macroinstruction is found, it moves +to the second symbol of line, and again begins with checking for directives, +which in this case is only the "equ" directive, as this is the only one that +occurs as the second symbol in line. If there's no directive, the second +symbol is checked for the case of structure macroinstruction and when none +of those checks gives the positive result, the symbolic constants are replaced +with their values and such line is passed to the assembler. + To see it on the example, assume that there is defined the macroinstruction +called "foo" and the structure macroinstruction called "bar". Those lines: + + foo equ + foo bar + +would be then both interpreted as invocations of macroinstruction "foo", since +the meaning of the first symbol overrides the meaning of second one. + The macroinstructions generate the new lines from their definition blocks, +replacing the parameters with their values and then processing the "#" and "`" +operators. The conversion operator has the higher priority than concatenation. +After this is completed, the newly generated line goes through the standard +preprocessing, as described above. + Though the symbolic constants are usually only replaced in the lines, where +no preprocessor directives nor macroinstructions has been found, there are some +special cases where those replacements are performed in the parts of lines +containing directives. First one is the definition of symbolic constant, where +the replacements are done everywhere after the "equ" keyword and the resulting +value is then assigned to the new constant (see 2.3.2). The second such case +is the "match" directive, where the replacements are done in the symbols +following comma before matching them with pattern. These features can be used +for example to maintain the lists, like this set of definitions: + + list equ + + macro append item + { + match any, list \{ list equ list,item \} + match , list \{ list equ item \} + } + +The "list" constant is here initialized with empty value, and the "append" +macroinstruction can be used to add the new items into this list, separating +them with commas. The first match in this macroinstruction occurs only when +the value of list is not empty (see 2.3.6), in such case the new value for the +list is the previous one with the comma and the new item appended at the end. +The second match happens only when the list is still empty, and in such case +the list is defined to contain just the new item. So starting with the empty +list, the "append 1" would define "list equ 1" and the "append 2" following it +would define "list equ 1,2". One might then need to use this list as the +parameters to some macroinstruction. But it cannot be done directly - if "foo" +is the macroinstruction, then "foo list" would just pass the "list" symbol +as a parameter to macro, since symbolic constants are not unrolled at this +stage. For this purpose again "match" directive comes in handy: + + match params, list { foo params } + +The value of "list", if it's not empty, matches the "params" keyword, which is +then replaced with matched value when generating the new lines defined by the +block enclosed with braces. So if the "list" had value "1,2", the above line +would generate the line containing "foo 1,2", which would then go through the +standard preprocessing. + There is one more special case - when preprocessor goes to checking the +second symbol in the line and it happens to be the colon character (what is +then interpreted by assembler as definition of a label), it stops in this +place and finishes the preprocessing of the first symbol (so if it's the +symbolic constant it gets unrolled) and if it still appears to be the label, +it performs the standard preprocessing starting from the place after the +label. This allows to place preprocessor directives and macroinstructions +after the labels, analogously to the instructions and directives processed +by assembler, like: + + start: include 'start.inc' + +However if the label becomes broken during preprocessing (for example when +it is the symbolic constant with empty value), only replacing of the symbolic +constants is continued for the rest of line. + It should be remembered, that the jobs performed by preprocessor are the +preliminary operations on the texts symbols, that are done in a simple +single pass before the main process of assembly. The text that is the +result of preprocessing is passed to assembler, and it then does its +multiple passes on it. Thus the control directives, which are recognized and +processed only by the assembler - as they are dependent on the numerical +values that may even vary between passes - are not recognized in any way by +the preprocessor and have no effect on the preprocessing. Consider this +example source: + + if 0 + a = 1 + b equ 2 + end if + dd b + +When it is preprocessed, they only directive that is recognized by the +preprocessor is the "equ", which defines symbolic constant "b", so later +in the source the "b" symbol is replaced with the value "2". Except for this +replacement, the other lines are passes unchanged to the assembler. So +after preprocessing the above source becomes: + + if 0 + a = 1 + end if + dd 2 + +Now when assembler processes it, the condition for the "if" is false, and +the "a" constant doesn't get defined. However symbolic constant "b" was +processed normally, even though its definition was put just next to the one +of "a". So because of the possible confusion you should be very careful +every time when mixing the features of preprocessor and assembler - always +try to imagine what your source will become after the preprocessing, and +thus what the assembler will see and do its multiple passes on. + + +2.4 Formatter directives + +These directives are actually also a kind of control directives, with the +purpose of controlling the format of generated code. + "format" directive followed by the format identifier allows to select the +output format. This directive should be put at the beginning of the source. +Default output format is a flat binary file, it can also be selected by using +"format binary" directive. + "use16" and "use32" directives force the assembler to generate 16-bit or +32-bit code, omitting the default setting for selected output format. "use64" +enables generating the code for the long mode of x86-64 processors. + Below are described different output formats with the directives specific to +these formats. + + +2.4.1 MZ executable + +To select the MZ output format, use "format MZ" directive. The default code +setting for this format is 16-bit. + "segment" directive defines a new segment, it should be followed by label, +which value will be the number of defined segment, optionally "use16" or +"use32" word can follow to specify whether code in this segment should be +16-bit or 32-bit. The origin of segment is aligned to paragraph (16 bytes). +All the labels defined then will have values relative to the beginning of this +segment. + "entry" directive sets the entry point for MZ executable, it should be +followed by the far address (name of segment, colon and the offset inside +segment) of desired entry point. + "stack" directive sets up the stack for MZ executable. It can be followed by +numerical expression specifying the size of stack to be created automatically +or by the far address of initial stack frame when you want to set up the stack +manually. When no stack is defined, the stack of default size 4096 bytes will +be created. + "heap" directive should be followed by a 16-bit value defining maximum size +of additional heap in paragraphs (this is heap in addition to stack and +undefined data). Use "heap 0" to always allocate only memory program really +needs. Default size of heap is 65535. + + +2.4.2 Portable Executable + +To select the Portable Executable output format, use "format PE" directive, it +can be followed by additional format settings: use "console", "GUI" or +"native" operator selects the target subsystem (floating point value +specifying subsystem version can follow), "DLL" marks the output file as a +dynamic link library. Then can follow the "at" operator and the numerical +expression specifying the base of PE image and then optionally "on" operator +followed by the quoted string containing file name selects custom MZ stub for +PE program (when specified file is not a MZ executable, it is treated as a +flat binary executable file and converted into MZ format). The default code +setting for this format is 32-bit. The example of fully featured PE format +declaration: + + format PE GUI 4.0 DLL at 7000000h on 'stub.exe' + + To create PE file for the x86-64 architecture, use "PE64" keyword instead of +"PE" in the format declaration, in such case the long mode code is generated +by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then one or more section flags can +follow. Available flags are: "code", "data", "readable", "writeable", +"executable", "shareable", "discardable", "notpageable". The origin of section +is aligned to page (4096 bytes). Example declaration of PE section: + + section '.text' code readable executable + +Among with flags also one of the special PE data identifiers can be specified +to mark the whole section as a special data, possible identifiers are +"export", "import", "resource" and "fixups". If the section is marked to +contain fixups, they are generated automatically and no more data needs to be +defined in this section. Also resource data can be generated automatically +from the resource file, it can be achieved by writing the "from" operator and +quoted file name after the "resource" identifier. Below are the examples of +sections containing some special PE data: + + section '.reloc' data discardable fixups + section '.rsrc' data readable resource from 'my.res' + + "entry" directive sets the entry point for Portable Executable, the value of +entry point should follow. + "stack" directive sets up the size of stack for Portable Executable, value +of stack reserve size should follow, optionally value of stack commit +separated with comma can follow. When stack is not defined, it's set by +default to size of 4096 bytes. + "heap" directive chooses the size of heap for Portable Executable, value of +heap reserve size should follow, optionally value of heap commit separated +with comma can follow. When no heap is defined, it is set by default to size +of 65536 bytes, when size of heap commit is unspecified, it is by default set +to zero. + "data" directive begins the definition of special PE data, it should be +followed by one of the data identifiers ("export", "import", "resource" or +"fixups") or by the number of data entry in PE header. The data should be +defined in next lines, ended with "end data" directive. When fixups data +definition is chosen, they are generated automatically and no more data needs +to be defined there. The same applies to the resource data when the "resource" +identifier is followed by "from" operator and quoted file name - in such case +data is taken from the given resource file. + The "rva" operator can be used inside the numerical expressions to obtain +the RVA of the item addressed by the value it is applied to. + + +2.4.3 Common Object File Format + +To select Common Object File Format, use "format COFF" or "format MS COFF" +directive whether you want to create classic or Microsoft's COFF file. The +default code setting for this format is 32-bit. To create the file in +Microsoft's COFF format for the x86-64 architecture, use "format MS64 COFF" +setting, in such case long mode code is generated by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then one or more section flags can +follow. Section flags available for both COFF variants are "code" and "data", +while "readable", "writeable", "executable", "shareable", "discardable", +"notpageable", "linkremove" and "linkinfo" are flags available only with +Microsoft COFF variant. + By default section is aligned to double word (four bytes), in case of +Microsoft COFF variant other alignment can be specified by providing the +"align" operator followed by alignment value (any power of two up to 8192) +among the section flags. + "extrn" directive defines the external symbol, it should be followed by the +name of symbol and optionally the size operator specifying the size of data +labeled by this symbol. The name of symbol can be also preceded by quoted +string containing name of the external symbol and the "as" operator. +Some example declarations of external symbols: + + extrn exit + extrn '__imp__MessageBoxA@16' as MessageBox:dword + + "public" directive declares the existing symbol as public, it should be +followed by the name of symbol, optionally it can be followed by the "as" +operator and the quoted string containing name under which symbol should be +available as public. Some examples of public symbols declarations: + + public main + public start as '_start' + +2.4.4 Executable and Linkable Format + +To select ELF output format, use "format ELF" directive. The default code +setting for this format is 32-bit. To create ELF file for the x86-64 +architecture, use "format ELF64" directive, in such case the long mode code is +generated by default. + "section" directive defines a new section, it should be followed by quoted +string defining the name of section, then can follow one or both of the +"executable" and "writeable" flags, optionally also "align" operator followed +by the number specifying the alignment of section (it has to be the power of +two), if no alignment is specified, the default value is used, which is 4 or 8, +depending on which format variant has been chosen. + "extrn" and "public" directives have the same meaning and syntax as when the +COFF output format is selected (described in previous section). + The "rva" operator can be used also in the case of this format (however not +when target architecture is x86-64), it converts the address into the offset +relative to the GOT table, so it may be useful to create position-independent +code. + To create executable file, follow the format choice directive with the +"executable" keyword. It allows to use "entry" directive followed by the value +to set as entry point of program. On the other hand it makes "extrn" and +"public" directives unavailable, and instead of "section" there should be the +"segment" directive used, followed only by one or more segment permission +flags. The origin of segment is aligned to page (4096 bytes), and available +flags for are: "readable", "writeable" and "executable". + + +EOF \ No newline at end of file diff --git a/data/rus/docs/GNU.TXT b/data/rus/docs/GNU.TXT new file mode 100644 index 0000000000..d5c2bb82e4 --- /dev/null +++ b/data/rus/docs/GNU.TXT @@ -0,0 +1,447 @@ +СТАНДАРТНАЯ ПУБЛИЧНАЯ ЛИЦЕНЗИЯ GNU + +Версия 2 (июнь 1991 г.) + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +675 Mass Ave, Cambridge, MA 02139, USA + + + Данный лицензионный документ разрешается копировать и распространять +его точные копии. Вносить какие-либо изменения в текст данного документа +запрещается. + + + Вводная часть + + Лицензионные соглашения на пользование большинством программных продуктов +составлены так, чтобы исключить возможность совместного пользования ими или +их изменения. Стандартная публичная лицензия GNU, напротив, гарантирует вам +возможность свободно совместно использовать и свободно изменять свободно +распространяемые программные продукты - то есть обеспечивает всем +пользователям неограниченный доступ к программным продуктам. Действие данной +стандартной публичной лицензии распространяется на большую часть программных +продуктов, выпущенных "Free Software Foundation" и на любые другие программы, +авторы которых позволяют использовать их таким образом. (На некоторые другие +разработки "Free Software Foundation" распространяется действие стандартной +публичной лицензии библиотеки GNU.) + +Вы можете использовать эту лицензию и применительно к разработанным +вами программным продуктам. + +Говоря о свободной распространяемости программных продуктах, мы имеем в виду +отсутствие ограничений на распространение, а не бесплатность распространения. +Наши стандартные публичные лицензии составлены с тем расчетом, чтобы +обеспечить пользователю возможность свободно распространять копии +свободно распространяемых программных продуктов (и при желании взимать плату +за эту услугу); получение, если он того захочет, исходной программы; +возможность вносить изменения в программные продукты или использовать их +фрагменты в новых свободно распространяемых программах, и довести до +сведения пользователя, что он все это может делать. + +Чтобы защитить Ваши права на это, мы вводим ряд ограничений, исключающих +какую бы то ни было возможность отказать Вам в Ваших правах или требовать от +Вас отказаться от этих прав. Эти ограничения налагают на Вас определенную +ответственность в случае, если Вы распространяете копии программного +продукта или видоизменяете (модифицируете) его. +В частности, распространяя копии подобной программы, бесплатно или за плату, +Вы должны передать новому обладателю все права, которыми пользуетесь. +Вам также следует позаботится, чтобы он получил исходные коды программы +или имел возможность при желании получить их, а также ознакомить нового +обладателя с условиями данного лицензионного соглашения, чтобы +он знал свои права. + +Для защиты ваших прав мы: (1) оставляем за собой авторские права на +программный продукт и (2) прилагаем к нему данное лицензионное соглашение, +официально разрешающее Вам копировать, распространять и\или модифицировать +этот программный продукт. Кроме того, для безопасности все разработчиков +таких программных продуктов, мы доводим до всеобщего сведения, что гарантий +на эти программные продукты не существует. +Если кто-либо вносит изменения в программный продукт и распространяет его +в измененном виде, он должен, чтобы возможные возникшие в связи с этим +проблемы не отразились на репутации авторов исходного продукта, сообщать +новым обладателям, что они получают не оригинал. + +Основная угроза для всех свободно распространяемых программных продуктов - +патентное законодательство. Редистрибуторы свободно распространяемого +программного продукта могут частным порядком получить патентную лицензию, +превратив тем самым этот программный продукт в свою собственность. +Во избежание возможных юридических противоречий мы заявляем, что любой +такой патент должен быть лицензирован для всеобщего свободного +использования или не лицензирован вообще. + +Далее приводятся точные условия изготовления копий, распространения +и модификации. + + + + УСЛОВИЯ ИЗГОТОВЛЕНИЯ КОПИЙ, РАСПРОСТРАНЕНИЯ И МОДИФИКАЦИИ + + + 0. Действие данного лицензионного соглашения распространяется на все +программные продукты или иные разработки, в которых владельцем авторских +прав указано, что данная программа (разработка) может распространяться +только на условиях данного стандартного публичного лицензионного соглашения. + +Термин "Программный продукт", употребляемый ниже, в применении к такой +программе (разработке) и термин "разработка на основе Программного +продукта" подразумевают либо сам Программный продукт, либо любую +произведенную на ее основе разработку, защищаемую законом об авторском +праве, то есть разработку, содержащую Программный продукт или его +части - без изменений или модифицированные и\или переведенные на другой +язык. (В дальнейшем понятие "перевод" в самом широком смысле включается +в понятие "модификация" или "изменение".) + +Как принято во всех лицензионных соглашениях, оно адресовано Вам и +заключается с Вами. + +Данное лицензионное соглашение распространяется только на изготовление +копий, распространение и модификацию; иные виды действий над Программным +продуктом выходят за его рамки. Непосредственно использование Программного +продукта не ограничивается ничем. Действие лицензионного соглашения +распространяется на результаты использования Программного продукта лишь +в том случае, если они представляют собой разработку, основанную на этом +Программном продукте (вне зависимости от того, являются ли они результатом +исполнения Программного продукта). Более точно это определяется +возможностями самого Программного продукта. + + + 1. Разрешается делать копии и распространять точные копии исходных кодов +Программного продукта в том виде, в каком Вы их получили, на любом носителе +при условии, что каждую копию Вы снабжаете - и обращаете на это внимание +нового обладателя - упоминаниями об авторском праве и отказом от гарантий; +сохраняете без изменений все, относящееся к данному лицензионному соглашению +и отсутствию каких-либо гарантий, и передаете всем сторонним получателям +Программного продукта копию данного лицензионного соглашения вместе с +Программным продуктом. Непосредственно за сам акт передачи копии разрешается +взимать плату. Вы можете также, по своему усмотрению, предлагать платную +поддержку по использованию программного продукта. + + + 2. В свою копию Программного продукта и в любую его часть Вы можете +вносить изменения, создавая, таким образом, разработку на основе +Программного продукта, и делать копии и распространять эти модификации +или разработки на условиях, перечисленных выше, в разделе 1, в том случае, +если будут соблюдены также следующие условия: + + а) вы обязаны в точности указать, какие файлы были изменены, что именно +было изменено, и проставить дату внесения изменений. + + б) любые распространяемые или публикуемые вами разработки, которые +включают в себя целиком Программный продукт или какие-либо его части +или сделаны на основе Программного продукта или каких-либо его частей, +Вы должны в обязательном порядке лицензировать на условиях данного +лицензионного соглашения в цельности, без изменений (возможно, с +дополнениями). + + c) Если модифицируемая программа предназначена для интерактивной работы, +то при начале работы с целью подобного интерактивного использования +в обычном порядке обязательно должна быть показана или должно быть +сообщено о наличие и возможности просмотра уведомлений об авторском праве и +об отсутствии (или наличии обеспечиваемых вами) гарантий и о том, что +пользователи могут на условиях данного соглашения передавать программный +продукт другим пользователям, а также указания для пользователя, как +просмотреть копию данного лицензионного соглашения. (Исключение: если +Программный продукт работает интерактивно, но не содержит информацию +такого рода, ваша разработка на основе такого Программного продукта не +обязана демонстрировать подобную информацию.) + +Эти требования распространяются на модифицированную разработку в целом. + +Если логически выделенные составные части Вашей разработки не основаны на +этом Программный продукт и их можно полноправно считать независимыми +и самостоятельными разработками, данное лицензионное соглашение и ее +условия не распространяются на упомянутые разделы в тех случаях, когда вы +распространяете их как отдельные разработки. + +Если же эти составные части распространяются как часть целостной разработки +на основе Программного продукта, вступает в силу данное лицензионное +соглашение, разрешающее лицензирование этой целостной разработки, и, +следовательно, применимое для всех и касающееся всякой ее части, вне +зависимости от того, кто является ее автором. + +Таким образом, целью данного раздела является не заявить о своих правах +или оспорить ваши права на разработку, выполненную целиком и полностью +вами. Скорее, в наши намерения входит гарантировать свое право +контролировать распространение производных или совокупных разработок, +основанных на Программном продукте. + +Простое совместное хранение с Программным продуктом (или разработкой, +созданной на основе Программного продукта) разработок, созданных не +на основе Программного продукта, на одном устройстве хранения или одном +носителе не подводит эту другую разработку под действие данного лицензионного +соглашения. + +Вы можете делать копии и распространять Программный продукт (или основанную +на нем разработку - см. раздел 2) в виде объектных кодов или в виде исполняемых +модулей на приведенных выше условиях разделов 1 и 2 в том и только том +случае, если будет выполнено одно из следующих условий: + + a) Вы снабжаете копию полными соответствующими машинно-читаемыми + исходными кодами, которые следует распространять на приведенных выше + условиях разделов 1 и 2 на носителях, традиционно используемых для + передачи программного обеспечения, + + или + + b) Вы снабжаете копию письменным обязательством, юридически + действующим в течение не менее трех лет, выдавать любой третьей + стороне за плату, не превышающую ваши собственные издержки, + связанные с физическим актом распространения исходных кодов, полную + машинно-читаемую копию соответствующих исходных кодов программного + продукта, подлежащих распространению на приведенных выше условиях + разделов 1 и 2, на носителе, традиционно используемом для передачи + программного обеспечения, + + или + + c) Вместе с копией Вы даете сообщенную Вам информацию относительно + того, как можно получить соответствующие исходные коды. (Этот + вариант допустим лишь в случае некоммерческого распространения и + только если Вы и сами получили программный продукт в виде объектных + кодов или исполняемых модулей вместе с аналогичной информацией о + возможности получения исходных кодов, удовлетворяющей приведенному + выше подразделу b.) + + +"Исходные коды" применительно к разработке означает ту форму разработки, +в которую предпочтительнее вносить изменения. В случае разработки, +представляющей собой исполняемую программу, термин "полные исходные коды" +означает совокупность исходных кодов всех слагающих ее модулей, плюс все +файлы, имеющие отношение к описанию интерфейса, плюс все файлы сценариев, +используемые для контроля за компиляцией и созданием исполняемых модулей. + +Однако, как особое исключение, при распространении исходных кодов не +требуется прилагать ничего из того, что, как правило, распространяется (в +исходной или бинарной форме) вместе с основными компонентами (компилятор, +ядро и т.п.) операционной системы, на которую рассчитаны исполняемые +модули, если наличие именно этих компонентов именно в таком виде не +является обязательным для этих исполняемых модулей. + +Если распространение исполняемых или объектных кодов программы происходит +в форме предложения возможности сделать копию из определенного места, +то возможность сделать оттуда же копию исходных кодов программы расценивается +как распространение исходных кодов программы, даже если третью сторону не +обязуют делать копию исходных кодов вместе с копией объектных кодов программы. + + + 4. Делать копии, вносить изменения, сублицензировать или распространять +Программный продукт можно лишь на условиях, прямо оговоренных в данном +лицензионном соглашении. Любые иные попытки делать копии, изменять, +сублицензировать или распространять Программный продукт считаются +нарушением лицензионного соглашения и автоматически лишают вас прав, +предоставляемых данным соглашением. + +Однако лицензии третьих лиц, уже получивших от Вас копии или какие-либо +права на условиях данного лицензионного соглашения, будут сохранять +юридическую силу до тех пор, пока эти лица полностью выполняют условия +соглашения. + + +5. Вы не обязаны принимать условия данного лицензионного соглашения, +поскольку вы не подписывали его. Однако ничто иное не дает вам позволения +изменять или распространять Программный продукт или созданные на его +основе разработки. Подобные действия запрещены действующим +законодательством, если вы не приняли условия данного соглашения. + +Следовательно, внося какие-либо изменения или передавая кому-либо копию +Программного продукта (или любой разработки, созданной на его основе), вы +тем самым показываете, что приняли данное лицензионное соглашение, со +всеми его условиями и ограничениями относительно создания копий, +распространения или изменения Программного продукта или созданных на +его основе разработок. + + + 6. Всякий раз, когда Вы передаете кому-либо копию Программного продукта +(или разработки, созданной на основе Программного продукта), новый +обладатель автоматически получает от исходного правообладателя разрешение +делать копии, распространять и вносить изменения в Программный продукт +в соответствии с условиями и ограничениями данного лицензионного соглашения. +Вы не можете вводить какие-либо дополнительные ограничения для прав нового +обладателя, предоставляемых ему данным лицензионным соглашением. +Вы не обязаны следить за соблюдением третьими лицами условий данного +соглашения. + + + 7. Если вследствие судебного разбирательства, или объявления копии +контрафактной, или по какой-либо иной причине (не обязательно патентного +характера), вы (решением суда, взаимным соглашением или как-либо иначе) +поставлены в условия, противоречащие условиям данного лицензионного +соглашения, это не освобождает вас от обязанности соблюдать условия +данного лицензионного соглашения. + +Если Вы не можете одновременно выполнять обязательства, налагаемые данным +лицензионным соглашением, и иные взятые на себя обязательства, то, как +следствие, Вы не должны распространять Программный продукт. +Например, если патентное соглашение не допускает безвозмездного дальнейшего +распространения Программного продукта теми, кто, прямо или косвенно, +получил его копию от вас, то единственный способ не нарушить ни его +условия, ни условия данного лицензионного соглашения - это полностью +воздержаться от распространения Программного продукта. + +Если какая-либо часть данного раздела признается не имеющей юридическую +силу или неприменимой в конкретных обстоятельствах, остальная +часть раздела остается в силе, а раздел в целом применим при иных +обстоятельствах. + +Целью этого раздела не является принуждение Вас нарушать каких-либо +патенты или иные права собственности или оспаривать их юридическую силу; +данный раздел преследует единственную цель - защитить саму систему +свободного распространения программных продуктов, базирующуюся на +практике публичного лицензирования. Много людей внесли свой щедрый вклад +в создание широкого диапазона программ, распространяемых посредством +данной системы, рассчитывая на постоянное использование данной системы; +автор, создавший что-либо полезное для других, вправе сам решать, хочет +ли он\она распространять свой программный продукт каким-либо иным способом, +и лицензия не может влиять на этот выбор. + +Это заявление имеет целью ясно и недвусмысленно объяснить, что какую цель +преследуют нижеследующие положения данного лицензионного соглашения. + + + 8. Если распространение и\или использование Программного продукта в +конкретных странах ограничено патентными соглашениями или отношениями в +области авторских прав, исходный обладатель авторских прав, помещающий +свой Программный продукт под действие данного лицензионного соглашения, +может добавить четко сформулированные географические ограничения +распространения, исключив данные страны из числа тех, в которых позволено +распространение. В таком случае данное лицензионное соглашение должно +содержать эти ограничения, записанные непосредственно в собственно тексте +соглашения. + + + 9. "Free Software Foundation" может по своему усмотрению публиковать время +от времени пересмотренный или измененный текст Стандартной публичной +лицензии или новый вариант ее. Эти варианты по духу будут совпадать с +настоящей версией, но могут отличаться от нее в деталях для соответствия +возникшим проблемам и вопросам. + +Каждой версии Лицензии присваивается отличительный номер версии. +Если в Программном продукте конкретно указан номер версии лицензионного +соглашения и оговорена применимость "любой более поздней версии", Вы +можете, на Ваше усмотрение, следовать условиям и ограничениям данной +либо любой более поздней версии, опубликованной "Free Software Foundation". +Если в программном продукте конкретно не указан номер версии лицензионного +соглашения, Вы можете выбрать для использования любую версию, опубликованную +"Free Software Foundation". + +10. Если вы хотите включить части Программного продукта в иные свободно +распространяемые программные продукты, но распространяемые на иных условиях, +письменно спросите позволения у автора. В случае программных продуктов, +авторские права на которые принадлежат непосредственно "Free Software +Foundation", пишите в "Free Software Foundation" - иногда мы делаем в +таких случаях исключения. Принимая в таком случае решение, мы будем +руководствоваться следующим: сохранение всем производным наших свободно +распространяемых программных продуктов статуса свободно распространяемых, +обеспечение самого широкого доступа к ним и их неограниченное использование. + + + ОТКАЗ ОТ ПРЕДОСТАВЛЕНИЯ ГАРАНТИЙ + + 11. ВВИДУ ТОГО, ЧТО ПРОГРАММНЫЙ ПРОДУКТ ЛИЦЕНЗИРУЕТСЯ БЕСПЛАТНО, НИКАКИЕ +ГАРАНТИИ НЕ ПРЕДОСТАВЛЯЮТСЯ - В ТОЙ МЕРЕ, В КАКОЙ ЭТО ПОЗВОЛЯЕТСЯ +ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ. ЗА ИСКЛЮЧЕНИЕМ СЛУЧАЕВ, КОГДА ИМЕЕТСЯ +ПИСЬМЕННОЕ ЗАЯВЛЕНИЕ ПРАВООБЛАДАТЕЛЕЙ ИЛИ РАСПРОСТРАНИТЕЛЕЙ ПРОГРАММНОГО +ПРОДУКТА, ПРОГРАММНЫЙ ПРОДУКТ ПРЕДОСТАВЛЯЕТСЯ ВАМ "КАК ЕСТЬ", ЧТО НЕ +ПРЕДУСМАТРИВАЕТ КАКИХ-ЛИБО ГАРАНТИЙ, В ТОМ ЧИСЛЕ ПОДРАЗУМЕВАЕМОЙ ГАРАНТИИ +О ПРИГОДНОСТИ К КУПЛЕ-ПРОДАЖЕ, А ТАКЖЕ ИСПОЛЬЗОВАНИЮ В ТЕХ ИЛИ ИНЫХ +КОНКРЕТНЫХ ЦЕЛЯХ. ВЕСЬ РИСК, СВЯЗАННЫЙ С ПРИЕМЛЕМОСТЬЮ ДЛЯ ВАС КАЧЕСТВА +И ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММНОГО ПРОДУКТА, ВЫ ПРИНИМАЕТЕ НА СЕБЯ. В +СЛУЧАЕ, ЕСЛИ ПРОГРАММНЫЙ ПРОДУКТ РАБОТАЕТ НЕКОРРЕКТНО, ВЫ САМИ НЕСЕТЕ ВСЕ +НЕОБХОДИМЫЕ РАСХОДЫ ПО ОБСЛУЖИВАНИЮ, УСТРАНЕНИЮ НЕПОЛАДОК И ИСПРАВЛЕНИЮ. + + 12. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ, ЗА ИСКЛЮЧЕНИЕМ СЛУЧАЕВ, КОГДА ТОГО +ТРЕБУЕТ ЗАКОН, ИЛИ ПО ПИСЬМЕННОМУ СОГЛАШЕНИЮ, НИКТО ИЗ ОБЛАДАТЕЛЕЙ +АВТОРСКИХ ПРАВ ИЛИ ИНЫХ ЛИЦ, ВНОСЯЩИХ ИЗМЕНЕНИЯ И\ИЛИ ЗАНИМАЮЩИХСЯ +ДАЛЬНЕЙШИМ РАСПРОСТРАНЕНИЕМ ПРОГРАММНОГО ПРОДУКТА НА ПРИВЕДЕННЫХ ВЫШЕ +УСЛОВИЯХ, НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА УБЫТКИ, ВКЛЮЧАЯ ОБЩИЕ, СПЕЦИФИЧЕСКИЕ, +СЛУЧАЙНЫЕ ИЛИ КОСВЕННЫЕ, ЯВЛЯЮЩИЕСЯ СЛЕДСТВИЕМ ИСПОЛЬЗОВАНИЯ ИЛИ +НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ПРОДУКТА (В ТОМ ЧИСЛЕ ПОТЕРЮ +ДАННЫХ, НЕУДОБНЫЙ ДЛЯ ВАС СПОСОБ ПОЛУЧЕНИЯ ДАННЫХ, ИЛИ ДОПОЛНИТЕЛЬНЫЕ РАСХОДЫ, +ПОНЕСЕННЫЕ ВАМИ ИЛИ ТРЕТЬИМИ ЛИЦАМИ, ИЛИ ОТКАЗ РАБОТАТЬ СОВМЕСТНО С +КАКИМИ-ЛИБО ИНЫМИ ПРОГРАММНЫМИ ПРОДУКТАМИ, ДАЖЕ ЕСЛИ ВЫШЕУПОМЯНУТЫЙ +ПРАВООБЛАДАТЕЛЬ ИЛИ ИНОЕ ЛИЦО БЫЛИ ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ПОДОБНЫХ +УБЫТКОВ. + + =============================================================== + + + Как сделать так, чтобы все это было применимо к + вашему новому программному продукту + + +Если вы разрабатываете новый программный продукт и хотите, чтобы он стал +как можно более доступным для широкой публики, лучший способ добиться +этого - сделать его свободно распространяемым программным продуктом, который +каждый сможет распространять и изменять на условиях данного лицензионного +соглашения. + +Чтобы сделать его таким, снабдите программный продукт следующими +замечаниями (лучше всего будет указать это в начале каждого файла исходных +кодов, чтобы с максимальной эффективностью довести до сведения всех их +получателей отказ от гарантий; каждый файл также должен содержать +"копирайтную" строку и указание на то, где можно найти полный текст +уведомления). + + Copyright (C) 19__ <имя автора> - и далее указывается название + программного продукта и краткая характеристика - для чего он предназначен. + + Данная программа представляет собой свободно распространяемый + программный продукт; вы можете распространять ее далее и\или изменять + на условиях Стандартной публичной лицензии GNU, опубликованной + "Free Software Foundation" - либо ее версии номер 2, либо (по вашему + выбору) любой более поздней ее версии. + + Распространяя данный программный продукт, мы надеемся что он окажется + полезным, но НЕ ДАЕМ НИКАКИХ ГАРАНТИЙ, даже подразумеваемой гарантии + ПРИГОДНОСТИ К КУПЛЕ-ПРОДАЖЕ или ИСПОЛЬЗОВАНИЮ В КОНКРЕТНЫХ ЦЕЛЯХ + (см. "Стандартную публичную лицензию GNU"). + + Вместе с данной программой вы должны были получить копию "Стандартной + публичной лицензии GNU"; если это не так, напишите в Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + +Добавьте также информацию о том, как связаться с вами по электронной +и обычной почтам. + +Если программа работает интерактивно, сделайте так, чтобы при запуске +в интерактивном режиме она выводила короткий текст по следующему образцу: + + Gnomovision version 69, + Copyright (C) 19__ <имя автора> + Программа Gnomovision распространяется + БЕЗ КАКИХ БЫ ТО НИ БЫЛО ГАРАНТИЙ. + Чтобы узнать подробности, наберите "show w". + Это свободно распространяемый программный продукт. Соблюдая + определенные условия, Вы тоже можете распространять его; чтобы + узнать об этом более подробно, наберите "show c". + +Предполагаемые команды "show w" и "show c" должны приводить к показу +соответствующих разделов "Стандартной публичной лицензии". Разумеется, вы +можете использовать иные команды; это даже может быть просто нажатие на +клавишу "мыши" или выбор одного из пунктов в меню. + +При необходимости вы также должны добиться от вашего нанимателя (если вы +работаете программистом) или от вашей школы (если учитесь) подписать "отказ +от притязаний на авторские права" на ваш программный продукт. (Ниже приведен +пример - замените только название организации и имена). + + + + ООО "МЦФ" настоящим отказывается от всех притязаний на авторские права + на программный продукт "______________________", созданный Иваном + Петровичем Сидоровым. + + <подпись Генерального директора, печать>, 1 апреля 1997 г. + /<Фамилия, И.О>./ - Генеральный директор + + + +Данная Стандартная публичная лицензия не разрешает включение вашего +программного продукта в такие программные продукты, на которые кем-либо +введены ограничения на распространение. Если ваш программный продукт - это +библиотека подпрограмм, то, возможно, более правильно разрешить +использовать библиотеку в подобных программных продуктах. В таком случае +вместо этой Лицензии используйте "Стандартную публичную лицензию GNU для +библиотек". \ No newline at end of file diff --git a/data/rus/docs/GROBFAR.TXT b/data/rus/docs/GROBFAR.TXT new file mode 100644 index 0000000000..3ffcb74dfb --- /dev/null +++ b/data/rus/docs/GROBFAR.TXT @@ -0,0 +1,48 @@ + ГРОБНИЦА ФАРАОНА + +Смысл игры состоит в том, чтобы, перемещая иероглифы на входе в очередную +комнату гробницы фараона (8Х8), открыть проход. Вы можете менять местами два +иероглифа расположенных рядом по вертикали или горизонтали в случае, если при +такой перестановке образуется комбинация из трех или более одинаковых картинок +в ряд. Такие ряды тут же исчезают, а свободное место заполняется иероглифами +"осыпавшимися" сверху. Недостающие иероглифы генерируются случайным образом. +За исчезающие иероглифы начисляются очки. За комбинацию из иероглифов даются +очки по формуле L+(L+1)^(N-3), но не более 20*L*N, где N - число иероглифов в +комбинации, а L - номер уровня. Для того, чтобы перейти с одного уровня на +другой, необходимо убрать определённое число иероглифов (на каждом уровне +разное). Снизу от панели с иероглифами расположена полоска, отмечающая сколько +пройдено и сколько осталось иероглифов. + +1-й уровень - 500 +2-й уровень - 450 +3-й уровень - 400 +4-й уровень - 350 +5-й уровень - 300 +6-й и далее - 50*(L+1) + +На первом уровне комбинации составляются из 6 видов иероглифов. С каждым новым +уровнем в комбинациях начинает участвовать один новый иероглиф, но всего не +более 10 (т.е. начиная с 5-го уровня и далее в игре будет 10 разных иероглифов, +не учитывая специальных). + +Начиная со 2-го уровня за каждую комбинацию из 4-х и более иероглифов, а также +за прохождение каждой четверти уровня игрок получает "свободный" иероглиф - это +обычный иероглиф (сгенерированный случайным образом), который хранится у игрока +"в кармане" и при необходимости может быть вставлен игроком на любое место, +заменив тем самым расположенный там иероглиф. + +Начиная с 3-го уровня за каждую комбинацию из 5-ти и более иероглифов, а также +за прохождение каждой трети уровня игрок получает "универсальный ключ", +подходящий к любой комбинации иероглифов и к нескольким разным комбинациям +одновременно. + +Начиная с 4-го уровня за каждую комбинацию из 6-ти и более иероглифов, а также +за прохождение половины уровня игрок получает "искривитель пространства", +позволяющий, при его применении, сделать 3 хода (не обязательно подряд) по +диагонали. + +У игрока не может быть одновременно более 1 дополнительного иероглифа каждого +типа (1 простой, 1 джокер и 1 искривитель). + +Игра заканчивается, если игрок не может составить ни одной комбинации +имеющимися у него в распоряжении иероглифами. diff --git a/data/rus/docs/HOT_KEYS.TXT b/data/rus/docs/HOT_KEYS.TXT new file mode 100644 index 0000000000..9dbcbaaf75 --- /dev/null +++ b/data/rus/docs/HOT_KEYS.TXT @@ -0,0 +1,10 @@ +Следующие "горячие" комбинации клавиш используются в системе: +(Нумерация по времени появления в системе) +1) Ctrl + Alt + Del запуск приложения CPU (диспетчер процессов), это единственная комбинация поддержанная на уровне ядра, все остальное реализовано за счет приложения @PANEL. +2) Ctrl + Shift - переключение раскладки клавиатуры. +3) Win - запуск приложения MENU. +4) Alt + Ctrl + F12 - запуск приложения END. +5) Alt + F4 - завершение активного приложения. +6) Alt + Tab - переключение на следующее (в оконном стеке) окно +7) Alt + Shift + Tab - переключение на предыдущее (в оконном стеке) окно +8) Alt + Shift + NumLock - запуск приложения MOUSEMUL, эмулирующего при включённом NumLock мышь клавишами нумпада (внимание! mousEmul не создаёт ни окна, ни рисунков для индикации своей работы!) diff --git a/data/rus/docs/INI.TXT b/data/rus/docs/INI.TXT new file mode 100644 index 0000000000..e6af4e58c2 --- /dev/null +++ b/data/rus/docs/INI.TXT @@ -0,0 +1,27 @@ +Ini-файлы представляют из себя текстовые файлы специального вида: + +[название первой секции] +Параметр1=значение1 +Параметр2=значение2 +;комментарий +[название второй секции] +Параметр3=значение3 + +Все строки, начинающиеся с символа ';', считаются комментариями +и игнорируются. + +Синтаксис описания комбинаций клавиш: +произвольное количество модификаторов Ctrl/Alt/Shift/LCtrl/LAlt/LShift/RCtrl/RAlt/RShift, +после которых следует латинская буква, цифра или имя клавиши. +Имена собственные имеют следующие клавиши: +F1 - F12 +Home; End; PgUp; PgDn; Ins, она же Insert; Del, она же Delete; +Tab; Plus; Esc; Enter; Backspace; Space (пробел); +Left (стрелка влево); Right (стрелка вправо); Up (стрелка вверх); Down (стрелка вниз). +Строку можно писать с любым регистром символов. Отдельные части пишутся +либо слитно, либо разделяются плюсом. Например: +Ctrl+Alt+Backspace +RCtrl+RShift +ShiftA +f10 +shiftalt5 diff --git a/data/rus/docs/KFAR_KEYS.TXT b/data/rus/docs/KFAR_KEYS.TXT new file mode 100644 index 0000000000..4d2f689e5d --- /dev/null +++ b/data/rus/docs/KFAR_KEYS.TXT @@ -0,0 +1,100 @@ +Управляющие сочетания клавиш в KFar. +В панелях: +стрелки, Home, End - перемещение курсора по активной панели +Tab - изменение активной панели +Enter - вход в папку или запуск программы, на которую указывает курсор +F3 - переход к просмотру файла под курсором +F5 - копирование выделенных элементов или элемента под курсором на другую панель +Shift+F5 - копирование выделенных элементов или элемента под курсором + на текущую панель + (нужно будет задать другое имя; для F5 это также можно сделать) +F7 - создание папки +F8 - удаление выделенных элементов или элемента под курсором +F10 - выход +Alt+F1/Alt+F2 - смена диска, отображаемого на левой/правой панели +Alt+F9 - разворачивание окна к максимально возможным размерам и + восстановление размеров +Ctrl+F3 - сортировать файлы/папки на активной панели по имени +Ctrl+F4 - сортировка по расширению +Ctrl+F5 - сортировка по дате/времени последней модификации +Ctrl+F6 - сортировка по размеру +Ctrl+F7 - не сортировать (отображать в том же порядке, что и на диске) +Ctrl+F8 - сортировка по дате/времени создания +Ctrl+F9 - сортировка по дате/времени последнего обращения +F12 - вызов меню экранов +Ctrl+R - перечитать содержимое активной панели +Menu - вызвать контекстное меню для файла под курсором +LeftCtrl+1/2/3/4 - выбрать режим панели (краткий/средний/полный/широкий) +RightCtrl+0..9 - перейти к папке, указанной в разделе [FolderShortcuts] + в ini-файле под именем Shortcut0..9 соответственно +Insert - выделить/снять выделение с текущего файла/папки +Grey[+] - выделить файлы и папки по маске +Grey[-] - снять выделение с файлов и папок по маске +Маска имеет вид типа "*.asm,*.inc|template.asm" (пример задаёт все файлы +с расширениями ASM и INC за исключением template.asm): одна или больше +элементарная маска включения со стандартным значением символов '*' и '?', +разделённых ',' или ';', после чего можно поставить '|' и одну или больше +масок исключения. Маска "*.*" задаёт все файлы с точкой в имени (т.е. +файлы с любым непустым расширением); чтобы задать все файлы, используйте "*". +Grey[*] - инвертировать выделение +Alt+<буква или цифра> - позиционирование курсора на имени файла/папки, +начинающемся на указанную букву или цифру; вызывает окно быстрого поиска, +в котором можно вводить дальнейшие символы имени файла для уточнения, +а также Ctrl+Enter/Shift+Ctrl+Enter для перемещения к следующему/предыдущему +элементу панели, имя которого начинается с введённых букв +Alt+F7 - вызов диалога поиска файлов + +В просмотрщике: +Esc = F3 = F10 = Numpad5 - выход +Down - строку вниз +PgDn - страницу вниз +Up - строку вверх +PgUp - страницу вверх +Home - в начало файла +End - в конец файла +Left - символ влево +Right - символ вправо +Ctrl+Left - в режиме Text 20 символов влево; + в режиме Hex байт влево +Ctrl+Right - в режиме Text 20 символов вправо; + в режиме Hex байт вправо +Ctrl+Shift+Left - в начало строк на экране +Ctrl+Shift+Right - в конец строк на экране +F2 - включение/выключение переноса строк +F4 - переключение просмотра Text <-> Hex +F8 - переключение кодировки cp866 (DOS) <-> cp1251 (Win) +Shift+F8 - меню выбора кодировки +F12 - вызов меню экранов +Alt+F9 - разворачивание окна к максимально возможным размерам и + восстановление размеров +F7 - поиск строки с текущей позиции в файле + (строка и настройки поиска задаются в появляющемся диалоге) +Shift+F7 - продолжение поиска строки + (используются последние заданные настройки поиска и строка) + +В редакторе: +Esc = F10 - выход; если файл был модифицирован, последует вопрос о + необходимости сохранения +Shift+F10 - выход с сохранением +F2 - сохранить файл +Down - строку вниз +PgDn - страницу вниз +Up - строку вверх +PgUp - страницу вверх +Left - предыдущий символ +Right - символ вправо +Home - в начало строки +End - в конец строки +Backspace - удалить символ перед курсором +Del - удалить символ под курсором +Ins - переключить режим вставки/замены при вводе +F12 - вызов меню экранов +Alt+F9 - разворачивание окна к максимально возможным размерам и + восстановление размеров +F7 - поиск строки с текущей позиции в файле + (строка и настройки поиска задаются в появляющемся диалоге) +Shift+F7 - продолжение поиска строки + (используются последние заданные настройки поиска и строка) + + diamond + mailto:diamondz@land.ru diff --git a/data/rus/docs/MTDBG.TXT b/data/rus/docs/MTDBG.TXT new file mode 100644 index 0000000000..28628e0690 --- /dev/null +++ b/data/rus/docs/MTDBG.TXT @@ -0,0 +1,224 @@ +Введение. + +mtdbg представляет собой отладчик для операционной системы Kolibri. Данная +документация описывает возможности отладчика и работу с ним. Если нужны +какие-то возможности отладчика, которых ещё нет, либо обращайтесь на форум +meos.sysbin.com (раздел "Программы"), либо мыльте мне на адрес, указанный в +конце данного файла. + +Общее описание. + +В каждый момент времени mtdbg может отлаживать только одну программу. Назовём +такую программу загруженной для отладки. Если никакая программа не загружена, +абсолютное большинство действий по отладке недоступно. + +mtdbg управляется командной строкой, вводимой с клавиатуры. Командная строка +изображается в нижней части окна отладчика. Обрабатываются стандартные клавиши +ввода Backspace,Delete,Home,End,стрелки влево/вправо. +Команды нечувствительны к регистру символов. В качестве разделителя +используется произвольное ненулевое число пробелов. + +В любой момент отладчик можно завершить командой "quit" (без аргументов). +Впрочем, можно и просто нажать на кнопку закрытия в левом верхнем углу окна. + +Запуск отладчика без параметров командной строки приводит к тому, что +никакая программа не загружена. Также mtdbg можно запускать с командной +строкой, в этом случае он попытается загрузить программу с именем, указанным +как первый аргумент командной строки, и параметрами, указанными как +последующие (если они есть). + +Если никакая программа не загружена, то можно загрузить программу командой +load <полное имя исполняемого файла> [<аргументы>] +Например: +load /rd/1/example +LOAD /rd/1/aclock w200 h200 + LoaD /hd0/1/menuetos/dosbox/dosbox +Всё, что стоит после первого пробела после имени исполняемого файла, дословно +передаётся программе в качестве командной строки. +Команда load сообщает о результате в окне сообщений (немного выше окна +командной строки). Если программу удалось загрузить, то об этом появится +соответствующее сообщение; если не удалось, то в сообщении будет указана +причина ошибки. Наиболее вероятная - "file not found", если неправильно указано +имя файла. + +Отладчик может загружать файлы с информацией об именах в программе (метки, +глобальные переменные) - текстовые файлы, каждая строка которых имеет вид +0x <имя> +(строки, не имеющие такой вид, игнорируются). Такой файл может быть создан +вручную или сгенерирован автоматически при компиляции исходника fasm'ом. +Явная загрузка осуществляется командой +load-symbols <полное имя файла символов> +Кроме того, при выполнении команды load отладчик проверяет наличие файла +с таким же именем, как загружаемый бинарник, и расширением .dbg +(/rd/1/example.dbg для первом из примеров выше), и если такой есть, +загружает его автоматически (выдавая сообщение "Symbols loaded", если всё в +порядке). + +Может случиться так, что загруженная программа упакована. Общий принцип +упаковки программ следующий: сначала исходный файл пакуется (каким-нибудь +алгоритмом сжатия), потом приписывается небольшой по размеру код, который +получает управление при запуске программы, распаковывает в памяти исходный код, +после чего передаёт ему управление. Если программа упакована, то её "настоящий" +код не виден и для отладки нужно предварительно пройти код распаковщика. +mtdbg определяет большинство существующих упаковщиков (mxp,mxp_lzo,mxp_nrv, +mtappack) и в этом случае предлагает автоматически пройти до "настоящего" кода. +Рекомендуется согласиться (нажать 'y' или ), но можно и отказаться. +При отказе и в случае, когда программа упакована чем-то неизвестным, можно +использовать команду "unpack" (без аргументов). Вызывайте её только в случае, +когда вы уверены, что программа упакована и что управление ещё не дошло до +основного кода! [Начиная с версии Kolibri 0.6.5.0, весь этот абзац уже +неактуален, поскольку приложения можно упаковывать как любые двоичные файлы +kpack'ом и при этом код распаковщика находится в ядре и распаковка прозрачна +для отладки.] + +Загруженную программу можно прибить командой "terminate" (без аргументов). +Команда "detach" (без аргументов) отключается от программы, после чего +программа продолжает выполняться нормально, как если бы отладчика не было. +После обеих этих команд программа перестаёт быть отлаживаемой. + +Можно заново загрузить программу для отладки командой "reload" (без +аргументов). Если уже есть загруженная программа, то она прибивается и +запускается (с самого начала) новый экземпляр (с той же командной строкой), +в этом случае команда аналогична командам +terminate +load +В противном случае заново загружается программа, которую отлаживали последней +(в текущем сеансе работы с mtdbg) (с той же командной строкой), т.е. почти то +же самое, что и +load , +но команда reload в обоих случаях короче и удобнее; кроме того, load считает, +что загружается новая программа, и переводит окно данных (см. ниже) на +нулевой адрес, а reload сохраняет текущий адрес. + +Всегда доступна команда "help", которую можно сокращать до "h". +Все команды разбиты на группы. +help без аргументов показывает список групп команд. +help с указанием группы выводит список команд этой группы с краткими +комментариями. +help с указанием команды выводит информацию о заданной команде. +Например: +help +help control +h LoaD + +Окно отладчика состоит из следующих элементов, перечисляемых сверху вниз: +- строка состояния. При наличии загруженной программы показывает ее имя и + состояние ("Running"/"Paused"), при отсутствии сообщает "No program loaded". +- окно регистров - показывает значения регистров общего назначения, регистра + eip и регистра флагов. Последний записан двумя способами: полное hex-значение + и состояния отдельных флагов: CF,PF,AF,ZF,SF,DF,OF: если флаг сброшен, то + изображается маленькая буква, если установлен, то заглавная. + Регистры, изменившиеся с предыдущего момента, подсвечиваются зеленым. +- окно данных (окно дампа) - показывает содержимое памяти загруженной программы +- окно кода (окно дизассемблера) - показывает код программы в виде + дизассемблированных инструкций +- окно сообщений +- окно командной строки + +В окне дампа можно просматривать данные, начиная с любого адреса, для этого +есть команда +d <выражение> +Команда d без аргументов пролистывает окно дампа вниз. +То же самое относится к окну кода и команде +u <выражение> +или просто u. +Например: +d esi - показывает данные, находящиеся по адресу esi (например, полезна перед + выполнением инструкции rep movsb) +d esp - показывает стек +u eip - дизассемблирует инструкции, начиная с текущей + +Выражения в mtdbg могут включать +- шестнадцатеричные константы +- имена всех регистров общего назначения (8 32-битных, 8 16-битных и + 8 8-битных) и регистра eip; значения 16- и 8-битных регистров расширяются + нулями до 32 бит +- четыре арифметические операции +,-,*,/ (со стандартными приоритетами) и + скобки +- [если есть информация о символах] имена, загруженные из dbg-файла +Все вычисления производятся по модулю 2^32. +Примеры выражений: +eax +eip+2 +ecx-esi-1F +al+AH*bl +ax + 2* bH*(eip+a73) +3*esi*di/EAX +Команда +? <выражение> +вычисляет значение указанного выражения. + +Значения регистров загруженной программы можно изменять командой r, имеющей +две абсолютно эквивалентные формы: +r <регистр> <выражение> +r <регистр>=<выражение> +(в обоих случаях можно расставлять пробелы по вкусу). В качестве регистра можно +указывать любой из вышеупомянутых - 24 регистра общего назначения и eip. + + +Допустим, команда load успешно загрузила программу для отладки. +Сразу после загрузки программа приостановлена и не выполняется. +Нажатие Ctrl+F7 (аналог командной строки - команда "s") делает один шаг в +загруженной программе, после чего управление возвращается отладчику, который +показывает новое содержимое регистров и памяти. Системный вызов int 40h +(а также инструкции sysenter и syscall) при этом считается одним шагом. +Нажатие Ctrl+F8 (аналог командной строки - команда "p") также делает шаг в +загруженной программе, но при этом вызовы процедур, строковые операции с +префиксом rep/repz/repnz и циклы loop выполняются как один шаг. +Команды пошагового выполнения используются, как правило, на отдельных участках +программы, когда нужно, например, регулярно отслеживать значения регистров +и/или каких-то переменных в памяти. +Команда +g <выражение> +возобновляет выполнение программы и ждёт, пока управление дойдёт до +eip=соответствующему адресу, а в этот момент приостанавливает программу. +Команда "g" без аргументов просто возобновляет выполнение программы. + +Приостановить выполнение программы можно командой "stop" (без аргументов). + +Обычно требуется, чтобы программа нормально выполнялась, но при наступлении +определённых условий программа приостанавалась и управление получал отладчик. +Соответствующие условия называются точками останова, breakpoint(s), в +просторечии - бряками. Простейший тип точек останова - на конкретный адрес, +т.е. прерывать выполнение при eip=<заданное значение>. Такие точки останова +устанавливаются командой +bp <выражение> +Замечание. Если есть только одна такая точка останова, удобнее вместо неё +использовать команду "g" с аргументом. + +Другой тип точек останова - по обращению к заданному участку памяти. +Таких точек останова может быть не больше четырёх (поскольку используются +аппаратные возможности процессоров x86, где допускаются только 4 таких точки). +bpm <выражение> - брякается на любой доступ к байту по указанному адресу +bpm w <выражение> - брякается на запись байта по указанному адресу +bpmb,bpmw,bpmd <выражение> - брякаются на доступ к соответственно байту, слову +и двойному слову по указанному адресу. bpm и bpmb - синонимы. При использовании +bpmw,bpmd адрес должен быть выровнен соответственно на границу слова (т.е. быть +чётным) или на границу двойного слова (т.е. делиться на 4). +bpmb,bpmw,bpmd w <выражение> - аналогично для бряка на запись. + +Список установленных точек останова можно просмотреть командой "bl", информацию +о конкретной точке останова можно получить с помощью "bl <номер>". Ненужные +точки останова удаляются командой "bc <номер>", временно ненужные можно +запретить командой "bd <номер>", когда они станут снова нужны, используйте +команду "be <номер>". + +Замечания. + +1. При отладке собственных программ можно вставлять в код инструкции + int3 (обратите внимание на отсутствие пробела!). Такая инструкция вызывает + исключение при нормальном запуске, что приведёт к завершению процесса, + но при работе под отладчиком просто активизируется отладчик (с сообщением + "int3 command at xxx"). Это позволяет не думать о том, какие адреса + использовать в командах g и/или bp. Можно также генерировать файл с + информацией о символах и загружать его, тогда не только нет нужды + самостоятельно вычислять адреса для "g" и "bp", но и "u","d","?" будут + понимать указание имени метки/переменной. +2. Весь вывод и весь ввод ориентирован на 16-ричную систему счисления. +3. Когда программа выполняется, окна регистров и данных показывают информацию, + относящуюся к моменту до возобновления; установка значений регистров в + этом режиме невозможна. Впрочем, команда "d" в этом режиме показывает + информацию, верную в момент выдачи команды. + + diamond + mailto:diamondz@land.ru diff --git a/data/rus/docs/README.TXT b/data/rus/docs/README.TXT new file mode 100644 index 0000000000..75fae94289 --- /dev/null +++ b/data/rus/docs/README.TXT @@ -0,0 +1,274 @@ + ************************ + * Колибри OS 0.7.7.0+ * + * февраль 2010 * + ************************ + + Последний релиз системы вы можете найти на официальном сайте: + http://kolibrios.org + + Если у вас возникли вопросы, обращайтесь за поддержкой на наш форум: + http://board.kolibrios.org + + *********************************** + * Что нового в этом выпуске? * + *********************************** + + В ядре произведены следующие изменения, доработки, исправления: + + От Евгения Гречникова (Diamond) - Российская Федерация + 1) улучшения в определении дисков через BIOS (V86) + 2) исправление ну очень многих косяков в ядре и приложениях + + От Сергея Семёнова (Serge) - Российская Федерация + 1) Обновление драйвера для видеокарт ATI. + 2) Линукс-подобные мьютексы ядра + + От Михаила Семеняко (mike.dld) - Республика Беларусь + 1) Рефакторинг оконной подсистемы. + + От - Российская Федерация + 1) Переработка функций с целью полностью убрать сдвиг-регистровый вызов API + 2) Рефакторинг некоторых участков ядра, оптимизации, багфиксы. + + От Артёма Жердева (art_zh) - СССР + 1) Доступ из приложения к отображённым на память областям ввода-вывода (MMIO). + 2) Доступ к расширенному конфигурационному пространству PCI Express (автонастройка для AMD-NPT начиная с Athlon64). + + От Андрея Турбанова (turbanoff) - Российская Федерация + 1) Поддержка чтения файловых систем ext2/ext3. + + От Марата Закиянова (Mario79) - Российская Федерация + 1) Улучшения в обработке нажатия мыши. + + От hidnplayr + 1) Переписывание всей подсистемы работы с сетью. + + От Asper + 1) Драйвера для звуковых карт VT823(X) и EMU10K1X. + + От tsdima + 1) Драйвер для звуковой карты ForteMedia fm801. + + От Maxis + 1) Изменения в проверке свободной памяти. + + + + + + * С приложениями произведены следующие изменения, доработки, исправления: + + FTPS - tsdima, некоторые улучшения + VIEW3DS - macgub, версия 0.054 + FASM - Павел Рымовский (Heavyiron), обновление до версии 1.69.11 + IgorA, использование библиотеки box_lib, русификация, + Марат Закиянов (Mario79), исправление возникших глюков + Евгений Гречников (Diamond), исправлено свертывание окна + PCIDEV - Артем Жердев (art_zh), дамп MMIO-областей PCI-устройства; сокращение + кода за счет удаления малоизвестных вендоров из основной базы данных + BOARD - Евгений Гречников (Diamond), не отбрасывать непрочитанные + сообщения при старте программы + UNVWATER - Asper, порт демки из OctaOS (автор Octavio Vega Fernandez) + HEED - staper, версия 0.15: использование библиотеки box_lib; + Ctrl+C/X/V, Ctrl+B для выделения блока, косметические изменения + Марат Закиянов (Mario79), использование компонента OpenDialog, + небольшая оптимизация кода + SHELL - Albom, версия 0.4.2 + CPU - Евгений Гречников (Diamond) по предложению + Кирилла Липатова (Leency), по умолчанию не показывать + системные процессы + TINYPAD - mike.dld, решена проблема с миганием курсора в некоторых случаях + HTMLV - Кирилл Липатов (Leency), версия 0.62a + EOLITE - Кирилл Липатов (Leency), версия 0.98.7a + RTFREAD - Sorcerer, косметическая правка + dunkaist, меню и скроллбар, горячая клавиша 'end' + E80 - Albom, версия 0.5.1 + KIV - Евгений Гречников (Diamond), имя текущего файла в заголовке + окна, настраиваемые клавиатурные сокращения для перехода + к следующему/предыдущему изображению в папке, исправления обработки + маленьких файлов формата TGA + Марат Закиянов (Mario79) исправления при работе со списком файлов + SUDOKU - staper, порт игры Судоку - это головоломка-пазл с числами, где нужно + заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке, + в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась + бы только один раз. Есть 9 уровней сложности. + REVERSI - staper, порт стратегической игры Реверси (Отелло) + MSQUARE - staper, математическая головоломка "Магический квадрат": суммы + чисел в строках, столбцах (реже в диагоналях) должны быть равны + FINDN-S - Artemonische, простенькая игрушка в которой нужно собрать все + числа по порядку от 10 до 90 + PANEL - Евгений Гречников (Diamond), небольшое исправление в часах на панели + и реанимация подсветки при нажатии Alt+[Shift+]Tab. + AC97SND - Asper, поддержка плейлистов в формате m3u. + @NOTIFY - SoUrcerer, программа показывает всплывающие сообщения + DOSBOX - Евгений Гречников (Diamond), версия 0.74 + ASCIIVJU - Константин Дуткевич (Nazarus), программа отображает таблицу ASCII + PIPETKA - Rock_maniak_forever, программа для взятия цвета пиксела с экрана + SNAKE - dunkaist, ещё одна реализация классической игры + + + + + * С системными библиотеками произведены следующие + изменения, доработки, исправления: + libini - Евгений Гречников (Diamond), добавлена функция для + чтения сочетаний клавиш + box_lib - IgorA, доработки нового компонента tree_list, новый компонент text_editor, + документация по библиотеке + Марат Закиянов (Mario79) доработка компонента ОpenDialog, перевод + некоторых приложений на его использование, новый компонент PathShow + + +/---------------------------\ +* Даты выхода дистрибутивов * +\---------------------------/ + +RE N1 30.08.2003 +RE N2 07.10.2003 +RE N3 26.11.2003 +RE N4 23.12.2003 +RE N5 15.02.2004 +RE N6 27.03.2004 +KOLIBRI N1 16.05.2004 +RE N7 11.06.2004 +KOLIBRI N2 28.08.2004 +RE N8 01.12.2004 +KOLIBRI N3 22.02.2005 + Выпуск 2: 20.03.2005 +KOLIBRI N4 07.06.2005 +KOLIBRI 0.5.0.0 04.10.2005 + 0.5.1.0 12.10.2005 + 0.5.2.0 02.12.2005 + 0.5.3.0 18.03.2006 + 0.5.8.0 09.07.2006 + 0.5.8.1 25.07.2006 + + 0.6.0.0 04.09.2006 + 0.6.3.0 31.10.2006 + 0.6.5.0 14.02.2007 + + 0.7.0.0 07.06.2007 + 0.7.1.0 23.09.2007 + 0.7.5.0 31.01.2009 + 0.7.7.0 13.12.2009 + +/---------------------------\ +* КОМАНДА ПОДДЕРЖКИ Колибри * +\---------------------------/ + + В этом списке по возможности перечислены все, кто активно помогал + созданию и развитию Колибри ОС. + (список перечислен во временном порядке участия в проекте, сверху вниз - + из прошлого в будущее, через настоящее) + +* Trans \ +* VaStaNi | +* Иван Поддубный | +* Марат Закиянов (Mario79) | +* Михаил Семеняко (mike.dld)| системное программирование +* Сергей Кузьмин (Wildwest) | +* Халявин Андрей (halyavin) | загрузчики, +* Михаил Лисовин (Mihasik) | усовершенствования ядра и др. +* Андрей Игнатьев | + (andrew_programmer) | +* NoName | +* Евгений Гречников | + (Diamond) | +* Михайлов Илья - (Ghost) | +* Сергей Семёнов (Serge) | +* Johnny_B | +* kasTIgar | +* SPraid | +* Rus | +* Alver | +* Maxis | +* Galkov | +* CleverMouse | +* tsdima | +* turbanoff | +* Asper | +* art_zh / + +* Михаил Лисовин (Mihasik) \ +* Андрей Ивушкин (Willow) | +* Михаил Семеняко (mike.dld) | +* Павлюшин Евгений (Exis) | +* Иван Поддубный | прикладное программирование +* Марат Закиянов (Mario79) | +* Сергей Кузьмин (Wildwest) | создание новых, +* Халявин Андрей (halyavin) | портирование существующих +* Hex | или доработка старых +* Андрей Игнатьев | программ для Колибри + (andrew_programmer) | +* ealex | +* Olaf | +* Евгений Гречников (Diamond)| +* Navanax | +* Johnny_B | +* Павел Рымовский (Heavyiron)| +* Виталий Бендик | + (mistifi(ator) | +* Михайлов Илья - (Ghost) | +* Евтихов Максим (Maxxxx32) | +* Владимир Зайцев | + (Rabid Rabbit) | +* vectoroc | +* Алексей Теплов - | +* Сергей Семёнов (Serge) | +* YELLOW | +* iadn | +* Maciej Guba (macgub) | +* Mario Birkner (cYfleXX) | +* hidden player (hidnplayr) | +* trolly | +* nilgui | +* kaitz | +* ДедОк | +* SPraid | +* Rus | +* Alver | +* Dron2004 | +* Gluk | +* Александр Богомаз (Albom) | +* Кирилл Липатов (Leency) | +* Василий Косенко (vkos) | +* IgorA | +* barsuk | +* staper | +* chaykin | +* Александр Мещеряков | + (Self-Perfection) | +* CleverMouse | +* tsdima | +* art_zh | +* Asper | +* Pterox | +* Artemonische | +* dunkaist / + +* Hex \ документация +* Diamond / + +* CodeWorld \ старый форум http://meos.sysbin.com +* mike.dld / сайт http://kolibrios.org, svn-сервер и новый форум + +* Алексей Теплов - \ логотип KolibriOS +* goglus | дизайн +* Кирилл Липатов (Leency) / + +* Павел Рымовский (Heavyiron) \ +* Виталий Бендик (mistifi(ator)| +* vectoroc | +* Veliant | тестирование, +* AqwAS | моральная поддержка +* Mike | +* camper | +* Dmitry the Sorcerer | +* Атауальпа | +* Maxis | +* Galkov | +* ChE / + +и другие... + + KolibriOS team diff --git a/data/rus/docs/STACK_RU.TXT b/data/rus/docs/STACK_RU.TXT new file mode 100644 index 0000000000..06b004a72d --- /dev/null +++ b/data/rus/docs/STACK_RU.TXT @@ -0,0 +1,378 @@ + Что осуществлено +================== + +Следующие особенности присутствуют в коде TCP/IP стека: + + + Уровень IP. + ICMP. + Уровень TCP. + Уровень UDP. + Локальный возврат цикла. + Realtek 8029 интерфейсов сети стандарта Ethernet PCI. + Realtek 8139 интерфейсов сети стандарта Ethernet PCI. + Intel i8255x PCI интерфейс сети стандарта Ethernet. + Динамическая таблица протокола определения адресов. + Point-to-point протокол(PPP) + +И следующие Интернет программы: + + HTTP сервер + POP клиент + Telnet + DNS Name resolver + Mp3 сервер + TFTP клиент + IRC клиент + FTP клиент + PPP - звонилка + +Есть ряд экспериментальных приложений для проигрывания потоковой музыки и +выполнения взаимодействия процессов через сокеты. Также есть простенький +браузер, позволяющий лазить по всемирной паутине(WWW). + + +Что не осуществлено +=================== + +Уровень IP не обрабатывает опции заголовка. +Уровень IP не поддерживает маршрутизацию. +Фрагментация пакета не поддерживается. + + +Конфигурация PPP в Колибри +=========================== + +Смотрите ppp.txt(или ppp_rus.txt с русским переводом) + + +Как сконфигурировать Колибри для локальной сети +============================================== + +Для начала у вас должна быть сетевая карта стандарта Ethernet или, если её нет, +встроенную в вашу системную плату. Если вы, не знаете, есть ли у вас сетевая +карта, то пробуйте сконфигурировать стек. Если она есть и поддерживается, то +сможете использовать её. + +Установка таблицы протокола определения адресов +----------------------------------------------- + +Таблица протокола определения адресов в Колибри уже динамически создана и +сконфигурированна. Вы можете посмотреть, с какими компьютерами Колибри работает, +выполнив приложение ARPSTAT. + +Подключение к локальной сети +--------------------------- + +Загрузите Колибри, затем выберите STACKCFG(конфигурация стека) в меню NET(сеть). + +Нажмите Кнопку 'Чтения', затем выберите 'Драйвер Пакета'. +Нажмите "Change"(выбор) рядом с адресом IP, и введите нужный IP, который вы +хотите использовать. Удостоверьтесь, что он находится в той же самой подсети, +что и сама локальная сеть, к которой вы подключены. Нажмите "Apply"(применить) +для подтверждения изменений. +Закройте программу. + +Стек сконфигурирован и запущен. Вы можете проверить его работу, пропинговав +Колибри с удаленного компьютера. + +Самый простой способ подключить два PC вместе - это использовать нулевое +модемное соединение. Это обычное соединение компьютеров посредством кабеля. Они +могут быть куплены вместе с памятью или просто сделаны. Подробности можно найти +в Интернете. Ищите на поисковиках, (например www.gogle.ru) введя в строку +поиска: 'организация соединения компьютеров с помощью кабеля' или подобные. + +Как использовать TCP/IP без подключения к сети +============================================= + +Колибри поддерживает форму локального возврата цикла, а это значит, что +приложения на одном и том же самом PC могут общаться друг с другом через +сокеты, как если бы они находились на удалённых компьютерах. Чтобы соединяться +с приложением на локальной машине, определите локальный адрес IP как адрес +назначения. Вы даже не должны конфигурировать стек для сети стандарта Ethernet, +локальный возврат цикла будет работать без любых сетевых, аппаратных средств. +Хорошо подходит для проверки и отладки сетевых приложений. + +Прикладной программный интерфейс +================================ + +Разработчик может обратиться к стеку через прерывание 0x40, функции 53. Файл +TFTPC.ASM - хороший пример того, как можно использовать программный интерфейс +(по крайней мере, для UDP), но как сетевая коммуникация, довольно сложен. Я дам +краткий обзор. + +Сокеты +======= + +Приложения соединяются друг с другом и передают информацию между собой через +механизм, названный 'сокетом'. Сокеты - оконечные точки для коммуникации. Для +каждого нужного сетевого приложения должен быть открыт хотя бы один сокет. + +Использование сокетов немного походит на использования файлов в ОС. Вы +открываете, читаете и пишете в них, затем закрываете. Единственная вещь, +которая делает жизнь немного более сложной - это то, что в отличие от работы с +файлами, у вас появится трудности с работой сокетов (например, не захочет +закрываться) + +Познакомимся с терминологией прежде, чем мы пойдём дальше. + +*Сокет Уникальный идентификатор, используемый приложением для +коммуникации. + +*Локальный порт Число, которое идентифицирует нужное приложение на +локальном компьютере. Порты - способ, позволяющих множествам приложений +общаться с другими компьютерами, благодаря чему нет путаницы в передаваемых +данных (Техническое определение 'мультиплексные'). Число порта - 16 бит. + +*Удалённый порт Число, которое идентифицирует приложение на удалённом +компьютере, к которому мы обращаемся. На удалённом компьютере - это 'локальный +порт'. Число порта - 16 бит. + +*Адрес IP Это 32 битное число, которое идентифицирует удалённый PC, +с которым мы общаемся. + +*Пассивный режим Это режим, в котором сокет открыт, а локальный PC ждёт +соединения. + +*Активный режим Это режим, в котором сокет открыт, а локальный PC пытается +соединиться с удалённым PC. + +Соединяясь с сокетом на удаленном PC, вы должны не только определить IP адрес, +но и полностью квалифицировать его, т.е. определить IP адрес и число порта. +Иначе стек на удалённом PC не будет знать, какому приложению предназначаются +посланные данные. Вот небольшой пример: + +192.168.1.10:80 ;Мы присоединяемся к компьютеру с IP адресом 192.168.1.10 к +80 порту. + +Числа порта являются важными. Некоторые 'известны' и обеспечивают доступ к +общим приложениям. Например, порт 80 используется серверами гипертекстового +транспортного протокола(HTTP). Таким путём я могу соединиться с вебсервером на +нужном компьютере без необходимости узнавать прослушиваемый приложением номер +порта. + +Как вы знаете, есть два режима: Пассивный и Активный. Вебсервер открыл +пассивный сокет, поскольку он ждет входящих запросов на подключение. +Web-броузер открыл активный сокет, потому что он пытается соединиться с +указанным удалённым компьютером. + +Доступ к программированию интерфейса +==================================== +Разработчик обращается к функциям стека через прерывание 0x40, функции 53. К +некоторым функциям можно обратиться через функцию 52, но они главным образом +предназначены для конфигурации стека. +Вот функций, которые вы можете использовать: + +Получаем локальный IP адрес +--------------------------- +eax = 52 +ebx = 1 + +IP адрес возвратился в eax (в виде байтов, из которых состоит Интернет адрес) + +Запись для расположения в стеке входной очереди +----------------------------------------------- +eax = 52 +ebx = 6 +edx = число байтов для записи +esi = указатель на данные (в прикладном пространстве) + +По возвращению, в eax содержится 0, если OK, или 0xFFFFFFFF, если ошибка. +Этот интерфейс - только для медленных сетевых драйверов (PPP, SLIP) + +Чтение данных из сетевой очереди вывода +--------------------------------------- +eax = 52 +ebx = 8 +esi = указатель на данные (в прикладном пространстве) + +По возвращению, eax считает число байтов переданным. +Этот интерфейс - только для медленных сетевых драйверов (PPP, SLIP) + +Открываем UDP сокет +------------------- +eax = 53 +ebx = 0 +ecx = локальный порт +edx = удаленный порт +esi = удаленный ip адрес (в виде байтов, из которых состоит Интернет адрес) + +Номер сокета возвращён в eax. +Возвращаемое значение 0xFFFFFFFF означает, что сокеты не открылись. + +Открываем TCP сокет +------------------- +eax = 53 +ebx = 5 +ecx = локальный порт +edx = удаленный порт +esi = удаленный ip адрес (в виде байтов, из которых состоит Интернет адрес) +edi = режим: SOCKET_PASSIVE или SOCKET_ACTIVE (определён в stack.inc) + +Номер сокета возвращается в eax. +Возвращаемое значение 0xFFFFFFFF означает, что сокеты не открылись. + +Закрытие сокета (Только UDP) +---------------------------- +eax = 53 +ebx = 1 +ecx = номер сокета + +По возвращению, в eax содержится 0, если OK, или 0xFFFFFFFF, если ошибка. + +Закрытие сокета (Только TCP) +---------------------------- +eax = 53 +ebx = 8 +ecx = число сокета + +По возвращению, в eax содержится 0, если OK, или 0xFFFFFFFF, если ошибка. + +Опрос сокета +------------- +eax = 53 +ebx = 2 +ecx = номер сокета + +По возвращению, eax сохраняет число байтов в возвращённом буфере. + +Чтение данных с сокета +---------------------- +eax = 53 +ebx = 3 +ecx = число сокета + +По возвращению, eax содержит число сохранённых байт, bl содержит байт данных. + +Запись в сокет (Только UDP) +--------------------------- +eax = 53 +ebx = 4 +ecx = число сокета +edx = число байтов для записи +esi = указатель на данные (в прикладном пространстве) + +По возвращению, в eax содержится 0, если OK, или 0xFFFFFFFF, если ошибка. + +Возвращение состояния сокета (Только TCP) +----------------------------------------- +eax = 53 +ebx = 6 +ecx = номер сокета + +По возвращению, в eax содержится состояние TCP сокетов. + +Эта функция может использоваться, чтобы определить, когда сокет фактически +соединился с другим сокетом. Вообще, данные не могут быть записаны в сокет, +пока подключение не установлено (TCB_ESTABLISHED). Состояния сокетов определены +в файле stack.inc, как TCB_ + +Запись в сокет (Только TCP) +--------------------------- +eax = 53 +ebx = 7 +ecx = номер сокета +edx = число байт, нужных для записи +esi = указатель на данные (в прикладном пространстве) + +По возвращению, в eax содержится 0, если OK, или 0xFFFFFFFF, если ошибка. + +Проверка номера порта +--------------------- +eax = 53 +ebx = 9 +ecx = номер порта + +Эта функция используется, чтобы определить, используется ли номер порта какими +- либо сокетами. Локальный номер порта обычно уникален. + +По возвращению, eax = - 1 для номера порта, который используется, иначе +возвращается 0. + + +Открытие TCP сокета в Колибри +============================= + +Есть два способа открытия сокета - Пассивный или Активный. + +При Пассивном подключении, приложение 'слушает' входящие запросы от удаленных +приложений. Обычно вы это делаете, осуществляя операцию клиент - сервер. Она +позволяет любому другому приложению соединяться с данным. Для этого нужно +определить 'известный' номер локального порта (80 для Веб-сервера), поставить +удаленный IP и удаленное номер порта равным 0(указывает, что любое удаленное +приложение может соединиться). + +Как только сокет будет открыт, придётся ждать входящего подключения перед +выполнением чего - либо. Это может быть проверкой состояния разъема для +TCB_ESTABLISHED или ожиданием данных в получающемся буфере. + +На Активном подключении вы соединяетесь с указанным удаленным портом. Удаленный +IP и удаленные параметры порта должны быть переведены в ненулевые значениями +(иначе, с чем соединятся?). Также, определите уникальный номер локального +порта, так чтобы удаленное приложение могло найти нужную программу и установить +с ней соединение. Ведь, могут быть несколько программ на вашей машине, +подключенные к одному и тому же удалённому компьютеру. +Ниже написано, как найти уникальный номер порта. + +Как находить неиспользованный номер локального порта +==================================================== + +Создавая активное подключение с удаленным сокетом, у вас может появиться +желание выбрать уникальный номер локального порта. Обычно, номера локального +порта начинаются с 1000. Следующий код может использоваться, чтобы получить +неиспользованный номер порта до создания сокета. + + mov ecx, 1000 ; Определяем локальный порт, начинаем с 1000 + +getlp: + inc ecx + push ecx + mov eax, 53 + mov ebx, 9 + int 0x40 + pop ecx + cmp eax, 0 ; этот локальный порт используется? + jz getlp ; да - продолжаем перебирать + + ; ecx содержит номер свободного локального порта + + + +Запись данных в сокет +===================== + +Есть две функции, зависящие от того, был ли разъем открыт для протокола TCP или +UDP. параметры запроса - то же самое как бы то ни было. Когда сокет открывается +для TCP, используйте функцию состояния, чтобы опросить для подключения - данные +не могут быть переданы сокету, пока другой не соединился с этим. Состояние +сокета - TCB_ESTABLISHED. + +Когда вы посылаете данные, происходит создание и отправка одного IP пакета. А +это значит, что пользовательское приложение отвечает за размер передаваемых +пакетов. Сохраняется менее чем 768 байтов размера пакета. Если вы пишете +оконченную программу (такую, как telnet), то можете захотеть отправлять пакет +за каждое (неэффективное) нажатие клавиши. Можно использовать таймер, чтобы +отправлять данные периодически (скажем, каждую секунду). + +Чтение данных из сокета +======================= + +Есть одна функция для чтения данных из сокета, возвращающая данные в буфер. Эта +функция одновременно восстанавливает один байт. Вы можете использовать функцию +опроса, чтобы проверить получающийся буфер на данные. + +Закрытие сокета +================ + +Просто вызовите соответствующую функцию (для TCP или UDP, соответственно). +Закрывая TCP сокет, не забудьте, что на другой конце соединения, сокет может +продолжить отправлять данные, так что он остаётся активным в течение нескольких +секунд после вашего запроса. + + + +Если у вас есть вопросы или предложения по улучшению этого документа, то +пошлите мне письмо на mikeh@oceanfree.net. +Перевёл документ Hex. +Если есть вопросы или предложения по содержанию, то просьба написать мне на +mestack@yandex.ru или на наш форум: http://meos.sysbin.com diff --git a/data/rus/docs/VRR_RUS.TXT b/data/rus/docs/VRR_RUS.TXT new file mode 100644 index 0000000000..977b89f2e4 --- /dev/null +++ b/data/rus/docs/VRR_RUS.TXT @@ -0,0 +1,110 @@ + +DOS codepage text: +_______________________________________________________________________________ + +Vertical Refresh Rater + +Версия 2.0 + +Copyright (C) 2003, Trans + + +Text Version 1.1 (02.08.03) + +Win text (cp1251). (DOS codepage text - see down.) +------------------------------------------------------------------------------- + +Содержание: +1. Зачем это надо? +2. Установка. +3. Использование. +4. Вопросы и ответы. +5. Поддержка. + +1. Зачем это надо? +--------------------- +Проблема "60 Гц" очень остро встает перед пользователями MeOS в современных +условиях. Как правило, большинство современных компьтеров комплектуется 17 +дюймовыми мониторами (все что написано ниже крайне не актуально для владельцев +ЖК мониторов). Если на 14 или 15 дюймовом мониторе еще можно как то смриться с +частотой вертикальной развертки 60 Гц, то уже при 17 дюймовом мониторе это +превращается в пытку. А про больших размеров мониторы вообще говорить не +хочется, т.к. это превращается почти в слайд-шоу. Конечно же все выше сказанное +относится к стандартному интерфейсу VESA. Сразу хочу предупредить вопросы по +поводу VESA 3.0 - да, интерфейс более богатый по возможностям, но и в нем нет +способа преключения видеорежима при работе процессора в защищенном режиме +(режим V86 в MeOS не реализован !!!). + +В связи с тем, что MeOS не умеет (еще не научили :) ) детектировать оборудование +компьютера при загрузке, устанавливаемый графический видеорежим имеет +стандартную частоту вертикальной развертки равную 60 Гц (!!!!!) + +Программа является свободно распространяемой (FreeWare) и поставляется +"Как есть...". Автор не несет ответственности за возможный причиненный +ущерб ( :) ). + +!!!!!_Предупреждение_!!!!!: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! На текущий момент программа носит ЭКСПЕРИМЕНТАЛЬНЫЙ (!) характер, поэтому ! +! всегда остается вероятность порчи оборудования (т.е. монитора). Особенно это! +! касается всех тех, чей монитор не имеет защиты от перегрузок по частоте. ! +! Для всех рискнувших - просьба -> Заполнить прилагающуюся информационную форму! ! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2. Установка. +--------------- +Извлечь файл VRR (исполняемый файл MeOS) из архива и поместить в корневой +каталог диска C:\ (Fat32. В принципе, может быть любой католог) или на +загрузочную дискету MeOS. + + +3. Использование. +-------------------- +Файл VRR является стандарным исполняемым файлом операционной системы MeOS, +который можно запустить на исполнение, например, через SYSTREE или MASH. + +После появления окна программы, будет отображено текущее разрешение и таблица +возможных режимов и частот вертикальной развертки для них. К сожалению, +разверток пока очень мало (похоже на то, это очень крутой секрет или же этим +никто в серьез не занимался ввиду отпугивающей сложности. Во всяком случае в +сети крайне мало информации по этому поводу и по большей части приходится +догадываться о положении дел). + + Выбор и установка видорежима + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Видоережим с интересующей частотой можно выбрать _только_ (!!!!!) с помощью +цифровых клавиш: 1, 2, 3, 4, 5. Сначало нужно выбрать разрешение, а затем +частоту. Каждый выбор сопровождается индикацией на экране. Для установления +выбранного видеорежима нужно нажать клавишу 'Enter' или кнопку 'Ok'. После +перехода в выбранный видеорежим у вас есть 13 секунд выбора. Можно ничего не +делать и через это время вернетесь в исходный видеорежим, а можно нажать пару +раз какую-нибудь клавишу или кликнуть пару раз по "остаткам" (артефактам) +исходного окна программы и зафиксировать выбор. Размеры окна по горизотали +можно регулировать кнопками "Право\Лево" или клавишами "+\-". +Для корректировки выбора используйте кнопку "Cancel". + +В программе реализовано принудительное возвращение в исходный видеорежим с +частотой 60 Гц с помощью кнопки "Default". А так же можете вернуться в +последний рабочий режим с помощью кнопки "Return" или клавиши 'r'. + +Пример: +Установлен режим 1024х768 при 60 Гц. Нужно 800х600 при 95 Гц. +Действия: нажать '3', затем '1' и далее клавишу "Enter" или кнопку "Ok". +После перехода в выбранный видеорежим кликаем пару раз на "остатка" (или том +месте где было) окна. Далее при необходимости корректируем размер экрана по +горизонтали с помощью кнопок "Право\Лево" + + +4. Вопросы и ответы. +------------------------ + +5. Поддержка. +---------------- +Все вопросы, замечания и пожелания Вы можете направить автору по следующим адресам: + + transafe@rambler.ru + transafe@chat.ru + trans397@yahoo.com + +Пользуйтесь на здоровье! +Trans. diff --git a/data/rus/drivers/atikms.dll b/data/rus/drivers/atikms.dll new file mode 100644 index 0000000000000000000000000000000000000000..f3dc7b8ccfd25b9939552504a4f28196c27130fc GIT binary patch literal 132402 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 literal 0 HcmV?d00001 diff --git a/data/rus/e80 b/data/rus/e80 new file mode 100644 index 0000000000000000000000000000000000000000..4460b3036f2305e655db287e94a91577a3267499 GIT binary patch literal 27021 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 literal 0 HcmV?d00001 diff --git a/data/rus/fonts/char.mt b/data/rus/fonts/char.mt new file mode 100644 index 0000000000000000000000000000000000000000..df1cbd9a5700890d92cbb14d4ce320cee0d73f82 GIT binary patch literal 2304 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

te#Ws*zg#v3VUCdiIvh&VdsY)5!z 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 ACIA2c literal 0 HcmV?d00001 diff --git a/data/rus/games/checkers b/data/rus/games/checkers new file mode 100644 index 0000000000000000000000000000000000000000..f9933af9a43b55c9a827b09d733f98fc0d22534c GIT binary patch literal 24851 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 literal 0 HcmV?d00001 diff --git a/data/rus/games/klavisha b/data/rus/games/klavisha new file mode 100644 index 0000000000000000000000000000000000000000..d24e606c6b63a0b82a25f0cbf58bf3359d6d7c8f GIT binary patch literal 4085 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 literal 0 HcmV?d00001 diff --git a/data/rus/games/kosilka b/data/rus/games/kosilka new file mode 100644 index 0000000000000000000000000000000000000000..22e1e4f681edab00bfa126095a20538b7f9d224a GIT binary patch literal 7596 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≈-aChnZjLo%!4wtGOL-7uF68sj4|GgY1Ax)e4^kCg$ZvOXQfGaXkU>!; zz|7f#f_Po-D+iQ8O=5ZW^aeYu@X&vhyuq_|#3PwfWOe)71T#no`1C*RuSbZA?Qfn; z&Sh?oNj~F-PEI`4iRw+wTeed*0~eh6W)2^iMD@Mj098ChP|^C;pV-@m&@_;s7$)>X zfM-xuma}AF1f3t>%`=P6&FwJq$tiUtEp==+wE69w@|tNoI~k{NvE8|pDX_Ai+YuBI!@hCuTAC?B1sx(I1_}pr znErUTfdWVi+$3ZDmBLTv7Et6gF~8|q9nNth#Inkma1oP` zDgIKM2braV%ua^0QU_T4d{csjWclRpb8R=`t0(YYoC-e^5_D9@RhM+7Ce4QD9Y`V8 zUA$j8w+x5qFMaFats*Ycbr{^-xIkHY1gsO80=I8lP&aFb zZRMW;7!0T^viZ)~7zR7%H;XjrS|kz5eJ;}TxXnG^nT8}oB&KBWo&p8;+o?%f5d|4G zuk|q?^b;>&(MV>#mN8g1RSv(Y)6K|)NzCUP@Gc&gI5En@)8=nwZ0J^S6r-=&pE6vq zgrJ5?2rX~r#ro{lYy9`VZ?lsbI{CyTbmSDRY{c_G$InUV=50#|Tz9}ah2cK+e`^Pf OvRoZ~C;;sM0002=1=z>{ literal 0 HcmV?d00001 diff --git a/data/rus/games/kosskin.gfx b/data/rus/games/kosskin.gfx new file mode 100644 index 0000000000000000000000000000000000000000..bb40014f13936ebe091d177e7d8a89ad24d63f80 GIT binary patch literal 13824 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 C+_FLd literal 0 HcmV?d00001 diff --git a/data/rus/games/lights b/data/rus/games/lights new file mode 100644 index 0000000000000000000000000000000000000000..fad55b5352bd750fcd8ffaab301ed68e13433906 GIT binary patch literal 482 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 ZXu00|d6RcFA?xl+0Flt9Ccgjx00CJ5gp&XO literal 0 HcmV?d00001 diff --git a/data/rus/games/mine b/data/rus/games/mine new file mode 100644 index 0000000000000000000000000000000000000000..f9693bc3aaa58568b05416c9c622c86ebc21a00e GIT binary patch literal 1839 zcmV+~2hjLSP(w>p4FCXv00001Mv*2LLXK;4&&M}uw68P%+lNI;Spd*dRsQc;2Cv5F zV$iX%Yg(0emz&2JXICZ6t~3)_76d_DzW@DfIxkYxaYpnbCA*7ZB5Jsxb9Spsw0H7K z5|37RB%&8odk^z;LMT@CXhNEbSs+x1Mnol|v@J^S*u?z`ot*OE*rcQ8GjBiOdMFr!IP!+$c;=1Ihz1|8VO2faVYtc!_}W!0T4E+v`FbIPVL$H7XCJd!u;Kq zc>MYXqT#&{2$AYm>wQfBvXT7UiQK$k3y09%Z;GWQ9I>YWiAw5y{~=sW_VjfZ4#6&@p@ZQXrDrOsazx$DR>E$Tz}23gbfHFO{hMXEh&;2H0-!fC?)B ziK-V+Q9V}+u2^vWg!{AtVW)2Nz&v9Fhl>QntM;^^z({D@cja#BM9-7Z33t_KS7?}K5*k}&oWEm6@(-YOCycO? zaDGTWfCTs;`~h4pYRZSh>OjEavFONiqEA)6ak>^zEXVap5<37>N#w98L)s%#%v}~u zI34jxU438HdMF1g*PJC1>e*vC7#-99%du+EoyYMkPXX>{$I|Rye%{-eQ^iI8nWRua z$Y4xeNJ^Pcu_!{m8jJx|Y?$~aKV{~tl^4I57^xEy=i45)o$l@Zv3o*AHnnbAXf$?gvMNOuM=U7W8c>!hx}EjSG_vy+t2a0munN00Q{yi( z%RxR!KQuY0)F-gxn>!Ue%7*_!JdlhbbqfyWY@XKcSBA(u8o78VRr0ras#B6LU78C2 zL=bi8wD4yjaJyBNDO5HGTl-YY|W!%isL zR5|x(GDZ96r#-4RZ!#AZ4TyfDxt{yJb`m#WE+ch9F61?C5Y&G!Lwd*6zJA!;%Qxy` zXHZZ_IqN{P$tSZ;2SlfPb-c2fZC$#BPd%O3F&;6~I_v8pEX>hj=_bQ5g zv^1?>oUL*?<9kFQw9V=y3sCfD=S6U8zMNY6VzOWD7!!gz(J}$$SE}Sc9b-480cBMS z-rj1sGuWPjXj#vTsOZA5XH5Q?_}c&vZi1*Ph_7pv-F%-c0DHt$6B}g!xwE5Io=xU* dMpJD;T8DCt2WubjSzB44fr=S%0B8UJ0062yc@Y2r literal 0 HcmV?d00001 diff --git a/data/rus/games/msquare b/data/rus/games/msquare new file mode 100644 index 0000000000000000000000000000000000000000..c1586911e541b46abd36b87fb401cf8de68e6f44 GIT binary patch literal 1251 zcmV<91RVQIP(w>w2mksgN1_e*%;G1xk75SixbIh4TT+u#-sO1d}17)$(Kk#6d#O=^VXNMLLN#2 zWAs3C><_|4FG+$(VOk(Hv49rPQ$Mt#a&D|2D9#f?hFL(x@cY;5f0W4DlZ|Cx-Zv4) z_aMY$ilYqMc0POHcvaUz@J}_Fd22e%Kz?rlTpW)jK2Yu%YnPATkcP1T9O8(Xpfd1fBOotQi&J^kfgSew($W5>($ihibI zALnOqz{brk*WY%|aa7B6sq9NvjHNU{99;eUEJ4L;&anbcGNzb`JBA_XX?92!^YF!v zkgr7l!dm`NPa+HDWyS@ZF_F>T57uGmnl{Rm=`3*Kl*NvnaF8fA5+kH9q>X> z+Q;{o;Nnn(P8CEf0-9UTWqvOE1b*?TcbP>}n^IH`G;|412_W*qxbTy*yy!r2!D{bbp^!GVP@wH$E--6x)fwj>eeI z+5W`{7IPxg^t zt7%&MaO)aA`7-M*Lm1gpP0|Q_)79Ei`mWdl8v((K zhed+AorH?a>}02YMN!7m${qKop?z0T?RXWCEyzEW`r;s996wFINgqyp@Z{-o{L0Gb zVJl}o0hjWb4$F6v7SjBeA{w;ga;#@}g_^#ERNyA%xWyQ>YusaQ>d2ke+=qN$aP)P3 z9$Y-VNiJ4)JVCeu(B@CCW*o?YJ6ivF5u-rsY|vOSH;HvNTa|c)V@LuXl NC>5~4%ohLv004!hZ*>3w literal 0 HcmV?d00001 diff --git a/data/rus/games/padenie b/data/rus/games/padenie new file mode 100644 index 0000000000000000000000000000000000000000..662d60927080d954b9d542b5801bb14872ef55e7 GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/data/rus/games/reversi b/data/rus/games/reversi new file mode 100644 index 0000000000000000000000000000000000000000..2dcc36a151eec86ce5096d41d89866d48c5b42bd GIT binary patch literal 3294 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 c8s0f8OUx@y~yOL{NR-v8v- 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 CJj%@g literal 0 HcmV?d00001 diff --git a/data/rus/games/sudoku b/data/rus/games/sudoku new file mode 100644 index 0000000000000000000000000000000000000000..a6d53bc594dec4a0699e711b9f996a5792cb1093 GIT binary patch literal 2553 zcmV!k>FKhI4BUGkU&7G$cpY zhRnmo`h|aUTo8T;b4PIj`0;0~9&X+O%!2uuW}Bg;-y1{5ji=X**bfAku^+L4LzZdI zspbj6hePbqt_9%4&dNId1gVtUS^tgKoR>_CRFNM-#r2}AhgDv?#rFXxgx1lah zM%-`y649%=GIL+>snxY5i1wqC%XR?;Uv|uLgYmvhKw^^e#PUa@<3u6ca@7}4eo_YJ z&eJvF>d4<>Oc1JUXc$d0=9#)Usn0XnIr2_kwaHj=tHibcZA%ggfc`|MMFRCG9=b?cMriu89tj=)q(wZSms7D0NTWRwl@PRzI5m7_ zJdw)i_B>P@7gRl17*o}*;Lbc_6igzn2u8C_Zb}5-!giJQ%a%~nuWtxA>W7_7d0#DK z*RF$A@Wp*ZlGB{feN7LrAI9GUH$qe26|kf_m^fwclUFRdkc6nYO(L3gDjyIC^@;H3 zz!BI}C*#s^7>2J!(oKEJB}s*IItLuO85a0@lyhJGM!n&Ypq3VPhlHKlsPP zP>Vz9;&c(>E#W(f?<(Bo1G(Klbh6Q@Z<=zwP>t<6!w`uo#aD_T@{qb-eIJ`udQrnO zVmGg7ZOb~8)41&L__qru+)NU{rxhimElG^u1iJ1|2kLA{;or_r<;GuuQvyqvpR*gD zmfqNqyRv3eU zrN|LrBUlyyQF5y}U*60t6jB?t+NUajg~Hmeq@FWpWnqQnd;wf6#}qgDY0a@;|9^oE zb$Kg1jKp)?l2Ez|3D~r=;$boHZ`Uma^udzlevM43hEhE?&?WvXZ+{M0v%IkTk9+*v zTZDqg{7B?_XleDfQU!48>Y=W^FA;{416$*y<+3#arWV<%xC|xn_BP*0%53QDb&wNo zwxPZ67_&H#EKOc*-d4Y9V0XV@ar#Hap}!`GT%Y3viSm6*Ga~ohWiZ&tXHyERtrF#( z2pIF2Kl*L8z&N-5=Tzd!AG@ zM1D0@v^sG?9>7wbv!I>{zuv_L)dz zjWc*4%wtuT%fmSi1TdiJVT39rZUJI*q<435MHjQ+y9wjLi|I|2eO$Ui9UN5n3lfg8KzLQfrksiI~l_q5v(QX!=(m+ z*u@;ZO4EDmkc-a&1$PqqQ`fW=wN|(~7%!@#_XRODqa?i{8h94Aw^o#RrmxWd1Bf(C zcty#V*%EqghO=t~MvW2#mVkaqN05H_Ph6Vdi%oBJbk>NvJKC2O?_qz8H(8_O8wdEXCmV8)?XmmSLm7@H?n9;t-qC`@}do#88Hb4BJc z^1;a`)o@`iTFJMDfWPLh~DEne0qTDu_1ehTAC{` zUeX7y%*J4L{Gvh&lvz4%Y3LCkU=%4mp_Ryh`Rkx(BnqvT;C-HrY$@}LXN@|k5hnJ} ztMTvhrV$T_&x0jMvR?+>N(!qxS)1X8eKi8)ROj>=yiQ1{l}XeNHT}jZfzihWE$uLZ z_*@1sW>h^NM<8df7FMfDWYkm_GLY9^^b#6`kyC+2s{#VX&NMW;E+&L3Xf zsz&!L{%9U8M!T#!?`T39PY)MKF>N9`h9;f=h;a?37#LpLeJe31O$9~VJFZI!p;RoJ zyi0WoiGZnBvUBuBFvX|)TRSgz0;4C}fc&g3_t*bcAvt1djI&;RUVnd5L@IEg6@&4v zxW4KMTzj00000E85XB literal 0 HcmV?d00001 diff --git a/data/rus/games/sw b/data/rus/games/sw new file mode 100644 index 0000000000000000000000000000000000000000..2fc1cd5268cfdfb220434a3d27c1af262c7f50ce GIT binary patch literal 1945 zcmV;K2WI$7P(w?Y4gdgw00001Mv*2LLXK;4&&M{gp_R8=3ANd2mW=NbqGGqaY1Ua0 z%`D=H#s@Hyj-*1LsHA6LdKg}ykPR_T+(wrXrOT;Tpe}YZTVkO~@R}|0S8s42=+6tL z7{=&jP8vfV-772*W0_89l3jh( zI-_^{zy)b{jAuwoI2fQO^^QIArqzisc)k9iiIW{>h0JRSqI?NsLchc;1jGJ;zQVY- zwc%wwzbDa$*2z0?#l0w#2Dnc0{-uIj;IdY_Hp2#|b)+ z$#^}=7ac$tIPhEh!r?PT&SGy8O%sifygY7*RAh!ThDL>V5yi_5wl1nRMQ?2vd{TOn zr>03;UIPWImAo!WbRv$~pe&ykS&l2BsL*5eQYOKIk+>-5k6N2Mf+U3dGE6ci)O@W$ zW@?DLIv-}nFR@SGw1#u2>WXTZQ20necKr%$c+(A~86v%tf`e7&eYXNSc0ou)gnYih zD|i|Ie9&6hyAj)`jRzn%PG`^A+;et4FX|%RHZ^B(a;F|*zGXq|{3YtcCUICNV2w_= zOfA#K44;&f#RQbL6X4bYlS?Q*C9K z+L(s`USFZpfx0VY&-=+d&eh@yUSWshu#);GnMg9|Z!5cH3MFlo&d?@&~Ua>Cor?t`eMbizl)za}665oIUsad`#VR~b5mMsP9Z z5xUalrE`?n?P4>6L9GrF3YhRB6SE{^+Gtceb;6&A!*C z5-u?w{AAvzInBx353+&suQwa>JcotTEcoiK(Qg-Lb*_j8qQ#W|ypprT0B~@#pT9T# z&OrFbzF`3n!4GU;v7&z#CpLG8ia|*?MsJT=Es2KguW2$KAzI~C>QCX*c}t+5X{0jW zWB|D^+4xp*gU(L|VXEF&>S{5cM+&T2N8uXDSq&h-UJp}Po@9W(5g&?YLR(|TcvggS zkZ*^e1`JKsA_8{l>dthLECFl zo%kbiC>`wANFlNl4vmUlmpJa*W?GTs<*;n2j4~*kBhT@VPyU6y8aGbTS{&>%FPa^a zmxm>V0n%J0uvAx>X1{6Ff!#;oYeFP`OXvYR7}ZKb zNUE(|sO@vW0(=SLMQVKFS8K^yYd7ak6S|&Mnz_L3Oq!1NhMbSo^t@=WO&4udJlGB= zanLnS+5P>sF;aW;2_YAX;6^5!qk4gaGrcknYPjhZAe-Mkp99Fa1mz`Et>B)rTkkBw zD}*B@F?k*^2l+SG?R7+t#?5c=YLHBgcWnAV-CRkh#&b)(!dwF1FyluUa$t^d}3P5Sf7L`@4gDx}Pim z)@c@QnBZ}YYqL`^-fRCRTsBLO6{32%^j|&j-}&91o_MU?Z)0ZJDD&^rV8(3dR)WCg zg<0W0nc3R9$K)cScV&O=KxT%;y5F;B8SAf}U(=cn>y)0#$hh^?A5~(2X*OaGCq-kO zK+-3;J1Ud|JsbQ|C2yVn^e%nY6(SpIoP)wQ_zI0Ei_xE*>b9SIA|cWq-5A(67_^`O z3l8rCIQ)jLb;zc5y-Qu{sdk?sGoRO){*u)TJck-#p*DXtjX6C;6w-*IE-fMhMBT=h zp=zX?S^X8}y?*1SJL>AuF(}B;tcU`VRW`mV$P}z4FQDh@g$}sY&FkvCx>e*@pOhOa zd@nMzVLIslT*K#XqT#0Ir9D(3osG3vgn&>5)CG`sB(w^y>E&u?500001Mv*2LLXK;4&&M|AnXYm{1A#^^&`!O+>)^)lLj&zB zk(}$iu9B{X%y1px&cKYq@c~Q!!B}lPvUKcrVsp|Fc-W|9JC8to~4gX zi+?YSx41SJVBu(@V^Mn3fw^1ZQTUcgy9vXic3l=gBkb6p_^WjilwK4W23(gLflD`p z{-6WoaUHiVmLdq%f1_B>{WHi48x7zayl)CDg$t~d)jgMmNgMEz|EAugx=z#81W(Cuqk>@ z!AEesg*?5b#5FLt%0BM>l!tzV_rHZ)*NxO=gpN0%0rQJdJI>HiEEKF(LsCOs-Gj>PV%a{0pLyT&CimT8WwJqJ(Nn_1lP zuLbj9x~wAd9Ov;KVxNwTiRD9JSva5Fw?M234rpR-8RGt4BzH3M=HjArZl2lhiD zVw7k~{%}u!dO9_jK-N~rn}qPHRP|$to_OQZC-oBa2X16U zjI{DhM4)^#NHSBIVUp{cx}1{#hQ~E{AbPOUO*hRd@Iq-e@+*?=2jF|)`wyR+M=%M- zU#EgA?PYv7#M;uhPPj2$e4MMNKlPDG7NqPEf)f#4(ndFe)&rLF{BN zV0VjzHCEP$LR9rvdEN06<^Y6MGy-yttXvzs2W3j~grhKhz9X$=0UlvLFInIS4kJ3n z=&C+e%pJ*K2VNO4jyDp_pPGh+0F4zdUV|9-I% zCDlv@Y^w&tl=3&G?7?uxL{oF+Xn_fvbpmlt(2hY?4%i}m2deROIbCVbg^nO|mNLXc z0-l^8G64-4h~!lgp~b3LKQ ziwJfk&`|btxHjsGl%0}RHlCl#%nv`50w5$?9Vpc>SJ!GZG&wpl-)rtYM7T)Z1#5mg zRWEx)M~jo*>V$}{{AK1b4yK(XnT5H2f}H?8!p0xiQ!(aO3R1f>z}B|llK}}QSxnkx zy+YW}!rO&yIYk7x{f#bwKL|ucgMwA9cNgX7cdU~$W46iM~&s(p` z47HYvnrPv-dsEo>26bcRg2=|j0BH!&E(}6@U!{*{ey6CIvY4n{^Ug#sc9r<)3?p8n zO;Ma9>bKeD_4T%pBp7mfD!&t5<~6_~9q6``%yN$9E01mxl^S2dee1t{-JfBlcBikh zd6opVQM>+W;g=vT6YF0W*spUPWqe=DW?pTSv{M&JaHn&70A%Am>_C zhvK&D<`HTMW$73uw=t(!LE{0tplU}8n!eUDbTZPk1WWp|21;m&HVAAk_ZH{ zC#O0Gi0&g!3C3BN!T5zfTg*0^zBm!G&o@7(w_KDyTQnWcLoglr3@&nT=PCgC7XTZt z-qQz_d-gf@F@1VoH4MxFH$*skv3z>i%33U69DREwbqllqVZ-PidSy)m;N;F`jaFe~ zczn#qNMJ;g$_7gm|H17s>S8zq$gOm1=FCn*WMq6r(Xs%D7M0}Sr=lN3e?2dVgwjXD z-RFy7Jr4dm0rw4KSK(6kz?5AwQ z)FVW&{k0jpxJVAsz=9M9}H|j=;C@lT5 z<)DwoeIs6M1(?fK9e_Hv#~Ymzb++am4YpFDS>MXM8&TEc3>!+HVj|mG-KO<5XB@)> zwB@`LgIgbFKPl3n@mw_l1@gbI!Q_}5+$Y?T(b5xtMqz2B-Efr5VdU*H40Gd(J2vp; z!=u(>r{F8%)iBMC2S*axGv=yqdX}8{iUmahIPdf(8U+V8I26)dmJ3g5KA;)G=` zf*6xMtS|V@TGMLQBeH&h32XISuS4QY7j(~3yG4gu7v+jZT;ddMv*dTB>h6Lbzo8EO zdiB*sJ0n)dbrs5Aj04KLqrb(yARac>o~MAN!>^wGppWX>=bypWc~yLPs_ys{ zBhGrNO%$F>K-QE*8A%r75jw}}Dl@!rLVe!u>!l}(D0~wfVbJ{7y$61Sh=5Z|`wNkk zY16Ywk1&RzPot%&cwh7&OzpL#avb)=V<+%cYN7M@zZ@bvBR8ZZbt zz1)KjaxP%OK*SrL`hAf677^%6b-I*&-uS1$NGb&|p~LM?tL%lQ#|xTW9|uwoKlI(v zMz7Pzem80awLJ+hQ|Zw3fbyM-p8Qp+0+z7YX-4A!M1sdf8A|+=$YGVJCe}JVE)+K5D)p_aZ6d69tuFaM-H_?~+`E^VGa-+SW z_6|C@u*Twt(Ne}A*c7JssVtkAbaRVlp5o6ygM{}J>J;|H_K|lyJ&GGBb@EGTm>qY( zL3!Pie0*9z4t#MxC!lnxv7sk6@S8>q;?jy<;AA;;a<^l5|C>UP5wRK3Idx$G($Hc9 zTu8rIYb5Y&YlUC)F%!Qm%$ZyNsA>CMkQJVTau2YNh2=4x)7B-b8iDM2Y30PBqb|^u z$tKGYE;(8p8y+xZt`>z|OP|AJT%8|3%x%;}0fh_|UkW_9qaDb68Km)0t~g#g zjzCb;k#Z&fcIDr0b|JP<(s`eXo*419h~!5VrApuaFOj)UY?AH>$>$RBrNc#)>M%$E zpE|~1>zh3Fj?H(#4alPXdpivY3)-W(KC>X!k^t+mj}F-rL_R^ZEWWB^2Es<#{JIoV zt*~7L#C&$P8A0Vo6CsodcMw62O|&>W`q_+{ecmjHm~jUeED<@yh7!mFwd#}=$CG15wB{s78j(PB1-Yf}@luULnA$!pN6~^z+{Ol-6F&|6;I2tPo zrDq4zm*F0Qt0uw|+0Y)hks|VRIz#*+{G=m{-I?$0Be;2A?5Q>9>7GN2D%oEDr|z^I zhK{(@t`Gp#_h>8e!PY0N>X2zHYcP65Bq-LF^awE{-urs91&oaxT+ijvt@E2u*yt=r zB&{8NEB;UKZSAaen7X=reM7IvSTa5c8dic|kSXb1fhxpBj&I;c%+#CT_r;mER~;IG zJ-sR$sijuV6}UI>0MOd}746?+Ib_IJj0J(=c7Kqog#0k2y`xV2X%+|k%$g_aYdKlL zn6-v9<4WY{$Qk8Li7?@#X9EJYh92LE3BXAz;kc3K?Z`C9tEg2r4Vj=?ezc~Tvsh(K zl+)NK4l{_t7vJN#evql#qn~k~hY%eIgkq9d$DmjWVj_MR1dwI0=0sH+=-WI`)?l?t zX!b*tlsf=?|7$Cah5FQJ9KsOhlTgJus=#J`QeWu>ng1{Z+wTroA9TnQTQWwR|sxIk}ev z#qDxSO%s3kMHjsx|f3fyw2`1Wi$xZw?-AY}{J*UZ;#^bhz}onlk_ zcZ$mz=^FOr!l4tI=g2Vy*03kw@HS{pP}S{ums3q(Tc6zvcb9}z&Qf5q$Xnuq!0H)6 z<*Ay4iw7n^!?zk$^!`&&tqpbm4QDbi9gCfPqkp&?S8GD|B6ok4)?0WnM5DGs$2@2p zijS?O;t7}uvVh<;73m6&)WEZ_^ocnm*PvG46tA_eI>Dd@9`rojBuB|Zerq&i(SXe?Wh8qQNUWMe%H(Rs1q678gjgr zn-ug!={S;_FGYMIZgP;7tv)Q?-&Y40jSYm4Y+*iWxbB3$t*C*=aWiv#@-88A+mZ$uKP2!Q>RF=z! zsaH+uKrs7C)UcV!Ps%&SHT1GHKY1;mz1Q2s(pQBq1=*19ueKP&e*)1-pqH_1ulL`H z@`KQ7Dqx*50)YEE>}&0)GtXMwpm@`>fJnN9v!r!D7TJ0MyOrE#N=PU(4vKI3aLZH5 zYnM9RSsZaoL>ja8F(Sylem83`mbj1r;Dg^12#w&kz&1neD0q<1f4|6R`9|Ez&v@rz zpmw-PH?lKQpyiYJrmy)2^awY00CYc2A2Q; literal 0 HcmV?d00001 diff --git a/data/rus/games/xonix b/data/rus/games/xonix new file mode 100644 index 0000000000000000000000000000000000000000..bf29d0863cfa8bd862e072d436de99190d775529 GIT binary patch literal 6517 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 bvpm`Sh)R-e;UlkEuk_x^!4V!90RR91cHgs! literal 0 HcmV?d00001 diff --git a/data/rus/graph b/data/rus/graph new file mode 100644 index 0000000000000000000000000000000000000000..4c5f8b03bf527e2acb1ebe6885967979f8918dd2 GIT binary patch literal 7822 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 g6}34qP-p9Ji39xlkMxOB9cR z9HX{qx96!4x>u_ls`g!V=2aE`VhBd(LQuo?_*G-NCUR>DmWjEp*5hgO*H<6rdYTv? zw;%)5n)9_tCHV+_Id0$e;_!&ngAQi_T?5P2V#!c(nEq+ZG7ic#X$90TcHCls++Blj#|pe4RfHPOZok{kRdVh=ETK}Rx7U($afpL zSjSB}1I)@-_Nc||o23ab(TjJuA+=^z!#B3MGzc0ytrrW$P0DX}d1&mNN_h8vwYgD}RIDxM-~o!5N)D`1D-C0#V@I+z6~=aH3s*}WsSN%s;^ zB>4;tyV&Womvr_VZW`Fp{h&X?BTZx;Aa3asu_Tj6cR758uGxt&i$?Lqh_f)}-l^zz zdHlID$mLoMqS$66Wq{#~;+Y?Or#Wr9xCrA4KG>4fCjE1kzQBt5AQtw;_5M_kBc}^! zx4DP?&ysi7$(o(MHvpK?nH=N_&h-y7Od{wJ8a)`fhm$uSL_Wu2#~4GeMXRT8UfD?P zBHbu(6N{cIDEpT$Fi2^IojHCYPPi&=_ZNBrLF4llEoe-H$}-Tofqp&^|yA#YXzej5z_?lp_qEL?Cu+w zCPO(lX?{<)_0-?AZ4?~hvTrwy2h@|!ZDijdV%Z`SCaPS=f+f%KZ?a5Tr)G4Z>UXZB zIx4;S0-Nd&W1!PGd8aE_r6cBCXa}s6=>JS9O`P)Yu)>R-T!v@C%Ho%=Jy8E&hX@i; zG25o$3t&d&;gY4(!4G6opggRP6NZ@ty#A8dMde{Ug-di^mSK$dxC3SehVB#7E#%|g z=;Q}%AR~y!(cTI22qwCH(Yz3?K_Q@W%91|+k?_96%gei^+e}y5{$;~&F{!COQL$r) zmss3nCdNG%JWRN)L%#85AeyImRwrX;Qum1VW#AZi9NyD#x-agqJ)d&th;?d}!S?XM z#{#3KLDnqdNVpIz-7uG=vVgi+U)+fB@8!K5ATt3epBvXgz(oRdnJ&t#$`k;VplLwk zo#r`u>HiUx3+Z`PN7Ts&xU#gi0eiS=75HEoR8*ILvNv;_Nbj0G!BA2AJ*ocU`9q$h x^|S<3_*61;)6WpgI1A~^c`rl((*l*KKYpi>n{;c+`p+W349RCscSHaH00P3kkD34g literal 0 HcmV?d00001 diff --git a/data/rus/htmlv b/data/rus/htmlv new file mode 100644 index 0000000000000000000000000000000000000000..bb1ba6f79c82a96be757bd8b98025ba04ca29906 GIT binary patch literal 9915 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 A{r~^~ literal 0 HcmV?d00001 diff --git a/data/rus/index_htm b/data/rus/index_htm new file mode 100644 index 0000000000..c88fcc52bb --- /dev/null +++ b/data/rus/index_htm @@ -0,0 +1,30 @@ + + + + + KolibriOS web server - default message + + +

Welcome to KolibriOS server

+

+ If you can read this with an external html-browser then Kolibri + networking is correctly set up. +

This file: /rd/1/index.htm +

+
+ + + + + + + + + + + + diff --git a/data/rus/kerpack b/data/rus/kerpack new file mode 100644 index 0000000000000000000000000000000000000000..511e23d2daab0a765ccd64373f1aee2768090f8f GIT binary patch literal 6421 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 literal 0 HcmV?d00001 diff --git a/data/rus/keymap.key b/data/rus/keymap.key new file mode 100644 index 0000000000000000000000000000000000000000..f6f2a5d8a7c5d4ee9dc1db5ee573fc521604329e GIT binary patch literal 2688 zcmXq$HZ(FeF*P%{ur$!M<=`wVPc15`EX~X>h>qp0ODs-FOV7y4&aqZcV2G)zNG?mt z%hl1-XD~5UaDeLrny_Wl4zmsBn=Q6(+`e<0qmzxxe>ZmzPcLsDUqAnVz@Xre(6I1` z$S6lAXBSr#88c}`2W1u2I5jN|&3J7N&cJZjppeK=Pyc}GTHZRxU>BfjpfOfTbqqC8 z5zb*we!ez#_Jr)WBieq30S0DB;jbNy9R3IDki!4aK|=<0c=+oQ@;^!8ucX|ss-~}@ zX=@*g9R4SO_QS*f)Ja1IEok^#Tg4Nye`tokJuLjIK|K4=d{UPt-Z}NX0}hA#mg{dc2h(Dgud>Uwz(g4W9Cnv z*wZm-PUAcsLiP`(^sjbSNnJztT>Rw=n!xZ+tb&#QaVorZg|PBJcM=1GRyjER>sVVU z63YLils}02M;2KAJ4V6E|EW`W>jGirzptt&!?bX4`nT897bRpr@!@YKEmNml9bGdc zCe9(Yc3}Oly#=}a|ML~8{QvgEkimv#<^K|B`JaGX{@=NZRQ_K(V#r`O+{=Ho@&_3H cPcmWU&*ucXmp@;4>!x_Z%AZel!?XMW0KQF=u>b%7 literal 0 HcmV?d00001 diff --git a/data/rus/kpack b/data/rus/kpack new file mode 100644 index 0000000000000000000000000000000000000000..99f3c888663b02ee6f4877982992ba4bfab76fd7 GIT binary patch literal 8365 zcmV;eAX48;P(w?}G5`R900001Mv*2LLXK;4&&M|4B~r7^K6uExM2W~0K`)`-P7nAB z$&Vv-&=%m&VoZ5va*T+fx?4|#Dk~73E%oXDDQD`LBSGvMj2W8F9PTO4QnO!@ z!Fns8#8Gbso!)5&|MZFx`%csQ^x}1AZ>#%S2jO%!NRZ(%hF|50VRUiYs)+3()nYKb z`3&LFU?aI@ls2pcbSqkgR@^mVmy!~RbLnBjGXZONCw$I^@yTrr2PnT-8dEr*x47r(u<&lElM3W5xOqb) z9G-Sly4Iz-??r=8nT+R zYaFBtA1ByhuV$l`+zWFiuDL+*aA*PYlFPU)2BX~beg5EOYZV}j!X^QIn2U>{fbxAh|% zx+`G|;p{QSuV-lY(p)VSSt7M#Ku>|&Jk*C|oPrjAeA-{zlJAWY)*q&3v6*dY+y>HJBh8nl zTT1<=_5XpM%TllNv5}p%M{v6C5dW(8eQra=0T$5@0N~m|zldhbyxmbkNgm@NV1_l@ zpz-D>wa@2o@lj}}xugbv00a+sQ5=sN#M~;YKrQ5GC|E6}D8|}`0)l!(#pHYtu@^6- z;S)(`2ea2dV%~gnC>hz%*k)6A3k%dNp(*rvw;!yba+4yAG%jaRN^WjMKW_^BA0$gq zJK!z-@GlmvST|4QOL>eG4;8g$>*F={(;AtpHZVI(=%)9T4cjN9`r36#NO9}O)?ndl z`*32|vSjB@x1UG)XF)W>7kG36W_>t3D7ktyG{ zVDGn(OTmMa((KzI1cYG@aWF2R=!GAhM)Loj81va4yHd0{;GC!-=j1T4iA2H*7x)@SoabIjn_eufYuLjm8_ zhw@oSw*u+^A^$G!0yvz2GUn_1X$RC${~~lz^6Z=xuQRhwU!VhpnF$4xBGS`w5C^2; z*4fO0GISp=oz+~1!FGe5^XEpb`f0theato#Wq7JM*NnlMR*<&?@J&woA1aN4D6H$Q zHe4I^2?%vnZv1JiwrI73{4UnRZTJ)SqKXOcPB^^K=(^~<&0OSVV?5$XpJ_*|@m$sG z`*-EzSY%~8K_24(+zBJa-J7A?xZ?L;9m}2bChSEGtK|wS@XlGQ7}b-_EQo{8(19|2v7Q2hO-p8qpzKm`x~*DH0G1AG$gt16X*8t%Av4EM-Vl39?j30yd9 znnRm@rx5uh$d{iV%5+Z}LCcl3^RyJ}U2MgH9%+$r^se`kGU9wmS5N}@K!mY$pY4Ru zY!6wSCn?s$m6C|>2&3&Er)lr3gdN#itCzY~q*W*e#s$OT#AO`l$)}{M_bfhrWN9WkU^!C(Y(z zbd6G~YDPs(aW^YvUcVTl(PqRLIYg37AD3*sm4rcX9OdEm+6XN_*T}t67=Wk~!KE-e z)4}c?IG<9B`IS73-=DDgUmVKFQ+qQzYDdR=LH6Ar;Haz~GsljF8M|yFRN|+x^1i{) z@^KOPu7c%rhcv;{Bne;Gi;=bnq7>EmtDFN5kY(qR+giNiAdckpQ94diR&C#D4)fI{ z3X6bhswVR^I!#sCg$q5k&(q5891p1Vad3*touqa=PPyEL>g@wYs8JN%BBT7yvqyv@ z?~2wc9gkRLu`w9Q_XJQLzgH5$Kx^0uOkPz^KbH!~7JU}Pc$0UDE*3>1E~llWwbra& zOt>UB^0vKP&CUF8y)M}0|3tq?_=u=DqK^sA8m zaC#y=8Aipg+t}*R2Iy(@FZ46(;2=)8tef@6^?!lgKQdOVV+Y^c0UwNsTzdA$W_iO; z9LY9yx7YWi<8*i^gRU@QHt-OhWGiQ5FiO4|m{YO>rKjcJxvnMaJ{3~P#`_$dWs`bt zHQw7t!tM*Aj&|;VCBx&Sx<@)$aM%H} z#UuF#kQWX}X@q*U(zrXkGuNH=P}-|t^B<{@RKSrphXy<7$9m-~uo!I7m%!QaF!IqO z20+e5?4`-6s1>{we)P06wLbMdIgt0Ms|wR^Va>AH?xNK!yEYxrCZ`&l6%se*-JC@S zCFJzD4R5wdbs_y?Qmy{av_E==!@>UG0M2uMYi4I zw=JB>lx($d)cu<9nVS3n`bW_L)#2}tq4RpUd=@xLy-If#PVkb;qRacta??7Vh6Nxa zhRaz>ZF6`cjzXQeNz}c`6Uw)M3kY&%_5ZyhqV@*8FmvTVm%&XF)PjDQ9JA&R-~R#+ zamTkrabg~eNY8&hTJVHs9)3Hw$PFz1siLEie|}Eop%}QAcRJVX-25usTm&u~HlIFn z4wy#aV;kMRJk%LXaMs3-T!nVHtc0}y#xtWJ^>VFg%x!oWnCz)8j0ZtKu06}<_Tzhq zdfu+vWrc;`Y1QIl}Z91pCmXes`D zJdZTqqh^Gsr3mN&%9c8e0O)EhmgXfwBOJw)$%8M+0p+Rkw%MPGD<84LOOV1C*tP z&6mF!W7oB?r3#9FtNQ3VKaZB_QZJ1eCU_MyGi%6&ebMQ!-R@)Ak+n2dmErpOJc-$p zoo@H@M812%+Sxs}u$f#L%!u;Msrt603Fwhel z$?qEI0cs?CHTaFNkDgNNA@?szMah^29IH;+q=yx}L;!SJeGb6f@FNA5AiHzIg81LM zXv=S+Bt5ngFsl5fjJlBT9*_MB`)%kMsRxl_5n_AKz{OKxB50bXoN2_3O#}HJ#LvfC zmM?)zA~{g1{;*)OB{lya$)&%K#@#L%fU6NkVmDfGKBzkjLr&V__Up%5Y|^``*0V)> zwStMf-nZt7ft~i*B{fbtY#?)$`j^C|4q4`7J6DKgxz+m|W!%U&m<*G^Gkyi0AZ zXu5viUlK)RpFIhNie@Lb6cJAE)JH5;u~R{p(|*a{SBy0#8Uq-cz$S+0X$nXwlseu3 zpfZ5?;C$pPbh9A)9A@T-%^(2OQ_i#ZoLdtA{v_}|--{m5fn+QsC_?=iaf>M{m>v{v z2_Z&*p3INvXfKF(KJ3v}F}hfYCls3(g%G~+Z?)3!k%%f!ufOE#z!nO4h0C_)_Hke9 zYDap?RHBY08*NTN(V;gv{q?FQC$5R?yg}j_(j6aWQ$&>tt>XQ0!}7nFS{@x6k&s1X z`;W$ow^WE44V0NuaD-KwKo$$l8?<-MU}~MT%YZY?siK@lTSu=knzx<$Q3glc|CT{k z+S&@5fa`q=icLl7#1sFZ5EbM{d{jcNzB#LY<$7!0G>Ewlf_1#PjT{%Ytw=`M z*4tYVp43ZkUCG50C5o}d`s=bIF{<#MrXIR|hk7xB&mFf4y+Mb5Xxmo3hNyOQ(`dwRYLTp1mA|1%bL+PV~aguRwRo5PA2 zNR{;yQ`TNXQ2{|IwruBtX%x7&PVe2?vyQShrxe><7I)ruw^$b!L(r=+l*D>brWan2 zfcC5g68SFCF721NR$Zs`qK;*tqPmc(7wae*ebQy-H5G>ti6#s1DGAx~yi>CkzQ@8Z z-Zri#gQ*WzShvOwI^$kh&0Fy?j4stRowk@XyLD%6a=Q=FZPSquW+im}Kp~7wAF-=V zG5+#T^jU`1Uy57M98zsb)X@kWEHBSZLxD}+ZK{``n>v+6Pwiww8sf?!IHDZ`qTjr^ zZn_3ChU!_;`H=$1-zQ`Jdqv9WYANGCfw z{s~}ZF;@XNVGnUcGUFUbo_*=~TxEl;LFjxc`dVapTj-Sl==x0k86HuKqS1?_s?&Q zaI_g2;tnC~7VVXaysw)}GL^B$c%w)WSYj|_Y$=nZ3@NK{)9y$bgm~{te8#)ebv5nNXmw@ei{|Lp~jvFtO zl!F-}QKd$Gp2xbXAS$BIqqG&NHhk*)U zr)a7ta=_PJg!$*q`NV0e?0uF!m;WjYh2v1U4DbHjX3<%5)}+6!AX17D2q%Hp1C(dj z7sn(r(_8)1L-3j4w0;=1&H+&Ef&)V6f}7*0SpufC{9mok9^KN&v=e zt|uXx;VG4UfOU$BDLbl0w$1O5*t(z)HKqwsp?^BHaCWmcONBV#E#! zA(D4CPFSyZbw0&ue&Co$TDml-YQu~!U>L_GM^4DRHR5b8Hv`2-M^{~pBQMTuKt+XZ zDxlS3Emo`;GE;AT@Ke5)-|o&Nov4>i<)7zTBhXy89&rprism|tOmLgcnwtnL_xg%6 zo|U6r$@R$G7dv{q*%`2-+4p&mTEVfH4O zVb-M&>eLniH?ZjFwgTT?=uSue%(oTROGQ^9->;eX@fULqIFHwtaNv+S^e|zm=lVj8 z_;ZNIKO_--&XNa#s*BwMVB&3=7tFu*woium1>fAbOP{$J75Ka=G;}b3*T(2G6P&uh z5S5T_--<4C{iY=WVao9KUfRbiOo4504Ix-e-kvStkHaoZB$z*yCXEXu`EB-INo=^< zyU;RkQ@>`Ncf<+GAD;M7n@^`oYPRgcBQHzK>TrC``}P~E+ePsrGh->sD6wJcN455ArJrHHX1sPjk9H9LRpbfKjjofOBiSVg52E@Mj>n0il-` z?0;!2CV7?ZLXrd&Aexy|mTOWi49cQKHXmkaABVeL(L`obUOHCx1)RVVCtPfYIbV^9 z*}a6j-b_2wp~CaWQVxWiF0+kr6PJalRB{H=kG^KmR((az-}B+1l~Xd^hi1(Y|4
zi9bA%DG4HEmP-^xTO7E{W_Q?*j%?em8HoR~6nYSsI+mwp{ zFp;%1kQ5A#m$Z=U{ksmiE+sQt$C@rJ=RpWgzWe(Ds;poKIp6OP#FIvHEuiH^51AiZ zWPB(RbB*s9QK^a^a(BnHPSiTZ@ih>_@fHDidIusKJj3+7#) z1u(@N2$vdDIb`m5fX!L%>@`VfUgCb=euJ3n9-Ba%L-9VI38OU<=hE$zmQKf95H*^M zo+Kec!2R0Kr{#mz)KzI}$LZBjgB<+s-RHtz-b@Jg zk=CJnNt}aQ)f~j#mOENesk@HMPfH{x_kUXB*KSo~2%e{2g35sk) z&rhpG6=@QR1KL!UQFGtZ8Ui#eEmHL(D9os^=OZjtCpjf3PibWI?Q4Hu#Tt4UCW9L) zmT>+}7$!xf;1-44i-f6enUc@@Thdv~onrc>H+YGcCdS1g^Ma&(YLycfIb{4f*mjG(4=Oc(q_Evvra!B*rbnsj`& z($Zv+q^$nZK{oFO_;!{%7>$=KTQEh)>)ZF`P`naMmV0-+bZQ`r)}7CNT=Jpftcz5M zfo=_XHCKCyOa3ngOA8FOfvl9b?Hr z>}Oz9phSQfp`#hOLR%?bR!l5XB|KWuYgv~mf1U9M5LVeQ_F5C|_~}RwgQvSF?&=+Y zH=$s+kZxM-^ZoR}1w1sK_*FoQ&u=}c2bd&f2b%Eunt%;3ZNFK7oDkEs2q+gsj63xX z2b0oRbA?4@g5Pzd!gduKyL7%q&u6A*gGWAIwpN*8whJ zi&XS6Vme@XF%kK;!B8e!B2TutI`ZkxtFN&#P&$xAzju14$>%njr_{l}h&E|cH6N>& z${p&p^fX*DY?)xha9jeb;^FThOoB&E#VXJM>#uz;9TT)aFh*L@ds0l(_BT)x+;1uYN_@D(u%n zUCBc~e-&yfYSA!-9mu4Jj_U3Q1q}b)+3u$$*}R+iLwK#upMC9{6^QBt5CV*)k&#z^ z$~yaR|25Y%GzJVsHlSj)CPmEToatY@SW+z85+leTnqoE2i3BLC#%||`l7nT1!)|E! z!ll%-cfrTtqxMei>Y}s66ZfOw&zgWwFD%oFriaj)nh4o+*K1r;s(gbke z&kL2O0cv4ovxAExf&)M+&z=buw2w^v9B}-9)``v!n{Q5^fl5*7^1Wg$6;Q12d*3y@ z3#)^OT@qIA%a_hwd#aDmOmNI6YcqaH=sx6MON!piF}GH;>f3M^7c>RF;15TkqZzPx z?wjoZnA>@)Ett$n7T!^1S}f#yfMU^3d`m5(6upYy0ox^kyRi`k_o`+-Pp=g zk%{{hoqBGa^37yBvd+l~SCz3>t*krdDjWO_6f;?VDq{I9&(%ioZe-1V}EkP@Sy9 zi~;B|-6l3n5xNS+5BW+u@8n-aW)fHIIdakWs0}}N*Yi)Q=?1?v$u1#yfR2}U--FDf z$D~}bh#mHstW4g9*kv>S6)D0lnj$)L7X9ht_p>?bahmcdn*PNvRqGdx%O_J~%#-%) zIXVG3h<6-V-|@7g2%z3PJJ+7qmuOa~Lk(pIz}4Ijv{L`O{0%2T zKva0`PH}L2D|=3<8}C;Yx!h}2J;QeEb=ghx0+xdXHmW6=c?)R*;MW^2z!@^|#}{+8 zRhDsF2z|a;Qqqpq!7gup*wgfx?_hy|z}@}bf2ZeqZ>~X&OVLMS3EpeXh-CgCzNmGR zUHM)TY-&^;j?c&gdZD+q(uW@2em33bYM`)bw_MofhARHz>slZy65F(7J<6A6RDVzq z2ci|WI?_NPb!t0e`NJ=;pHsG=6{Wx3=65welqgP*6PV4y-w;XMKN^SaAzc4D@q|-2twQ&_y%=(A zjlCS)mSuu)B1Q2e%fbAv?pQbUyIGj@ZtaUCbM->dgP9fnlvmqz*^tvBu1^|#1Q zybr5u zW{3>rf=tdlRhtRMZ0PRvpOTjwe-bfI;2vM(*JdQDJsMvxhjcDM%jIj@F6I2Po522t zuE@l`Y~?e0BvaZ>M`DduGJk*JAlDQpB=|*vsWqynSo%Z47nt}mA8C&+6j$4Hc8+DQ zeHI_fnYXOBqEcOi9!5+y=|Mg~ufIY8*CB?vu^c=0I00y$u^GY^;hnOK*Ap}KLs)Q% zJ^@Z7@R!J!c9rY=E);_={&pLwNw%q;ES)hQpqDx88VgbRiRu@=Nv7(0Z0G~sU$s*XwtOtN}Kzb<4_!OZ{ z7Qk}OW*8N5XaX%#hn6Aax=_2r&gy+69B49v>7Ro7DmoT*>a!EbYao5L{U$~W>@4BK zfe$N?6_D()F_392sfqbh%y?{t@(Pg8=D3Z6dA4TJ5{(VkynpkJ5#&;0ejg)GiOL(W ybXXs@Av@2;JgT5^&&nLJD2PSzN2tVh5||B(xKjn~0M0rf*+haLNrLh+KBHgJ7Lb?# literal 0 HcmV?d00001 diff --git a/data/rus/lang.inc b/data/rus/lang.inc new file mode 100644 index 0000000000..30c0149bd9 --- /dev/null +++ b/data/rus/lang.inc @@ -0,0 +1 @@ +lang fix ru \ No newline at end of file diff --git a/data/rus/lang.ini b/data/rus/lang.ini new file mode 100644 index 0000000000..c03a291d7d --- /dev/null +++ b/data/rus/lang.ini @@ -0,0 +1,28 @@ +[start] +startlng = 1 + +[comkey] +ccomkey1 = 1 +ccomkey2 = 4 +ccomkey3 = 7 + +[altkey] +altkey1 = 1 +altkey2 = 4 +altkey3 = 7 +altkey4 = 3 +altkey5 = 5 +altkey6 = 6 +altkey7 = 2 +altkey8 = 0 +altkey9 = 0 +altkey0 = 0 + +[langs] +1 = En +2 = Fi +3 = Ge +4 = Ru +5 = Fr +6 = Et +7 = Ua \ No newline at end of file diff --git a/data/rus/lib/cnv_png.obj b/data/rus/lib/cnv_png.obj new file mode 100644 index 0000000000000000000000000000000000000000..29a750c5458b6c8460011e9e81414529ef0b6574 GIT binary patch literal 3182 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 U9034}#-OztrC1m0d;kCd0Xth53;+NC literal 0 HcmV?d00001 diff --git a/data/rus/lib/msgbox.obj b/data/rus/lib/msgbox.obj new file mode 100644 index 0000000000000000000000000000000000000000..655d3dee72dac7a6768090ab954fdcbb25803a39 GIT binary patch literal 981 zcmV;`11kJWP(w@L3jhFt00001Yyc*tx23KZ}i}hoGk;$ydEkAq*6X zXOG`h6w4qI&^mc#98#AWFx|54#7&QxPf%Jy3V0+1t}krDAC12bO|jGVL-&4sXf}z6 zZGK-zO=HpLd=eZAQD5hVWYRV%P(2KxzLXE(jWD>g*8+NZdMH&+_1LoOKQ+v2p=?4P zD{Ockn{I(~rhGTJFG~Uw;Eq7Y9-c)EeyvV>N7di*ynr(K`^|jtbD3{Vw7Hz!1EGTJ zAQu9l_S>w#VF+|xddkD|^Imtf>#N(9LQm`1{^(m_D8UMD`nLM}QRB5*8X`b){h47+ zs({qy#E6h8T6m}8>0WwF;q4&TO9aS+trr*%&UZEyj=y$WJ5oN~DcLE08>tG6xaCax z_JC=^S=7&voO4aaM>^A05U^C%UX>TtmD0}VVk^+Q**FoLQ^)sL6GmK{-UZ5f8|Z2<2YV5U5kFrNL?M9x2rLE&!ns-7=a|%Gs^m=K zW&3BiYYRy;vs_ZkL@VUAv!J2)Ah~PUNQV1_jR^0E%-FaAoJU1#Ngpti7ndC*_-Xy` zFwdHX7uIV5`L*}w-rbU<=K93_<$EI+#(y6HeeictYUyFZ*Eii@ZHa$@A>t^&VNrYt zI?)39J1rXpqjGl7jEsvg80U6$s-d!J@j`q^R-rSvSCMd8sR$;!Aj62HQ7UAGL=;E% zhqN#sy37$g5|-swq=C#l1+!7K1o5aMfOBYLV!j@M`Y%iIR3j;nls%ap2-8Pd$Up`yc#2A{w3;J%f|9gFvVPKdINtmu-NF}GP~BjlcTo@Z1?`a*j2Ch zN#RGStnzURFS-sSg#TyHdz-(D^ZtsQ5ME zviya!3B(H115k6Ms-$6bngFP(bI;!7Iua@%v;1#(7AJG;J*kenaVlw-n;!rU00000 D`?cCd literal 0 HcmV?d00001 diff --git a/data/rus/lib/pixlib.obj b/data/rus/lib/pixlib.obj new file mode 100644 index 0000000000000000000000000000000000000000..ca2e94a7780dc586f691d3d46566dac759043422 GIT binary patch literal 4620 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 literal 0 HcmV?d00001 diff --git a/data/rus/lib/sort.obj b/data/rus/lib/sort.obj new file mode 100644 index 0000000000000000000000000000000000000000..063da99799ee64d7114d1db4bda89769864ef138 GIT binary patch literal 851 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 KLF?85000R;i{LN- literal 0 HcmV?d00001 diff --git a/data/rus/media/kiv.ini b/data/rus/media/kiv.ini new file mode 100644 index 0000000000..2b4230a836 --- /dev/null +++ b/data/rus/media/kiv.ini @@ -0,0 +1,3 @@ +[Shortcuts] +Next=PgDn +Prev=PgUp diff --git a/data/rus/media/listplay b/data/rus/media/listplay new file mode 100644 index 0000000000000000000000000000000000000000..422e7a2b0f8affcae9cf721bd7212fe7980dbe7a GIT binary patch literal 1563 zcmV+$2ITomP(w@T4*&px00001Mv*2LLXK;4&&M{gp_ZS%qWb6G2$VPghLTDiSuVqt zc_;{+sXdO}B&=U(e6I?tBaz&!Ykk`8C7<*)CN*9&>!a0{5LhvWH5&22>HxqC)|?uD z)e~VP73r;o$b22wiQF4vi~ww6i)N{}WMT3V!dgdgU;sVyzLt(fB-}PvbGP z|D>!?m;7mwC$##I-7d%-9gHz9%7K8K0_#E1Kum`GvM5UE&rVvIwy`0M{Dv!b{bc+dn^C25E>CWNyI{ zD9}_w;9kcr@1m$>+PKr5uSRAiy2y93b;%57Aq74?D;{+GB{#QSGJa7kG14ZEvO_3` z7uN{*a@W4`1hN5A!_-lK$7E~S|Cv@dB!3OtK&6)~egu|dibasZk&klo1+}_TSw%l2 z7m;{{kQ$NI`gmCmoakneKGLB)$S^o#aWlS%&ir8QxHTtEyp?2vZrQIg24F+H1eq4G zYH>xEY&}vMKS<*K*^y@#XrzhJjIvAIFN0?A#hJP$YL|F`@{TiECaC$fzIZ$%33S;+ zq)3Bv46KR2nJ)yV$5t`Ea`<(9Gvn~!*xN^fB;0#;dZfuSuX!<|5)R`(X%6w z{j|{5osfzF^uw{}cTEHGy{qUxJtQJRK&RA?uiGz3)W zv`XE9&pUoMX8Y1OzJA=>rzuN|0>VS6fGD}ViW;kCNv4u?4>+DnnfUnp1|)DsX}LRa zhK=e(QJ4{^FW3`ZkM_c6W(mUa`iC2KdvI54H70$>NE*!9x|xh6LWaOTg{92&+vR?y zpk?n)n~8gAFDP>gLeUqMhnK=945@wK|3E))Vj&nDe4Fxs#9XfQV>z>K6|M4pTxcQ? zc+uF$%m!^ztJ!KrCvaTH&V(}RRp)5GA}}j?qQZ;O zftM)Ih@Ppg5DJAD)36;wHz_1E%|9+ai$x*2Q?zlfmB(dLmfg#^e!A3J&H(zS^1y=M z7Clgp6KdwO*^Fd1W%T%bmV;v79ioq`F_iwH=vhs?6le?TchpQg_-UY1Ly1*bAwX## zKE5B@x&peO@DmJEo=?LF*Fb{P2B+|S$Kk~SqDuLRQI=c14!&=c$9aU+~Xm|H( zYv1f`|JAXexZO6u17!(S7};^lx2vGb!r)*Pom&b=)&&Yk_pUy>LE5lk3(;GJIg`7c zDq#BHU-9!e+S+PmEgRR_6*Zy%O-$IZ?T<`%FCk63)&EJc$-@K6@Wo6sy<=~$!3+4U z{<99rH`=rl66{XN{UC?0R+dG$jAn~iPN}4;CMIW#5Vn*qQ??AD15QjqkyD*CE=gFV z>}l2KXqQH7p=HGDBIQ;FAE?Q^$xmH=H3?^0Jemd(9M z13b`rOnBOy$7d3#G(aTbJi{{_9J3*MRVE>iM~DGQO5yrwcQ>xGy}Sn9%J{y#^34Sc ND5#iJXa)9a@k<2DVyZU7G-v~|*ns%6_13>hV zOPuPdb;L*?sbV@HgTFp@7c<42{p5`Why#4qE{JY>4Faj=yLTX^eAMJeQjIU)6v;hS KDx|9#^8f(q$3|NK literal 0 HcmV?d00001 diff --git a/data/rus/menu.dat b/data/rus/menu.dat new file mode 100644 index 0000000000..52af897c6f --- /dev/null +++ b/data/rus/menu.dat @@ -0,0 +1,183 @@ +#0 **** MAIN **** +Игры > /@1 +Демки > /@4 +Графика > /@6 +Звук и музыка > /@7 +Разработка > /@8 +Система > /@10 +Обработка данных > /@14 +Сеть > /@15 +Разное > /@18 +Помощь /rd/1/docpak +Запуск программы /rd/1/run +Завершение работы /rd/1/end +#1 **** GAMES **** +Логические > /@2 +Аркады > /@3 +Эмулятор Spectrum /rd/1/e80 +Memory Blocks /rd/1/games/mblocks +FreeCell /rd/1/games/freecell +Трубопровод /rd/1/games/pipes +Косилка /rd/1/games/kosilka +RockeT ForceS /rd/1/games/rforces +Атака /rd/1/games/ataka +Find Numbers /rd/1/games/FindNumbers +#2 **** ЛОГИЧЕСКИЕ **** +C4 /rd/1/games/c4 +15 /rd/1/games/15 +Сапёр /rd/1/games/mine +Just Clicks /rd/1/games/clicks +Шашки /rd/1/games/checkers +SQ_Game /rd/1/games/sq_game +Color Lines /rd/1/games/lines +Lights /rd/1/games/lights +Крестики-нолики /rd/1/games/kox +Быки и Коровы /rd/1/games/bnc +Миллионер /rd/1/games/whowtbam +Лабиринт /rd/1/games/megamaze +Морской бой /rd/1/games/sw +Судоку /rd/1/games/sudoku +Го-моку /rd/1/games/gomoku +Реверси /rd/1/games/reversi +#3 **** АРКАДЫ **** +Тетрис /rd/1/games/tetris +Понг /rd/1/games/pong +Новый Понг /rd/1/games/pong3 +Red Square /rd/1/games/rsquare +XONIX /rd/1/games/xonix +ArcanII /rd/1/games/arcanii +PheniX /rd/1/games/phenix +Падение /rd/1/games/padenie +Змейка /rd/1/games/snake +#4 **** DEMOS **** +Трёхмерные > /@5 +Огонь /rd/1/demos/fire +Кружок /rd/1/demos/circle +Фрактал Мандельброта /rd/1/demos/tinyfrac +Цвета /rd/1/demos/colorref +Глаза /rd/1/demos/eyes +Труба /rd/1/demos/tube +Plasma /rd/1/demos/plasma +Moveback /rd/1/demos/movback +Life /rd/1/demos/life2 +TranTest /rd/1/demos/trantest +Паутинка /rd/1/demos/web +Фейерверк /rd/1/demos/firework +UnvWater /rd/1/demos/unvwater +#5 **** 3D demos **** +Скринсейвер /rd/1/3d/crownscr +3D-Куб /rd/1/3d/3dcube2 +3D-Лабиринт /rd/1/3d/free3d04 +3D-Textured Cube /rd/1/3d/3dtcub10 +3DSHeart /rd/1/3d/3dsheart +View3DS /rd/1/3d/view3ds +CubeLine /rd/1/3d/cubeline +3D-Куб с текстурой /rd/1/3d/cubetext +Шестерёнки /rd/1/3d/gears +FlatWave /rd/1/3d/flatwav +3D-Спираль /rd/1/3d/3dspiral +#6 **** GRAPHICS **** +Просмотр изображений /rd/1/media/kiv +Редактор Animage /rd/1/media/animage +#7 **** AUDIO **** +MidAMP /rd/1/media/midamp +CD-плейер /rd/1/media/cdp +#8 **** PROGRAMMING **** +Примеры > /@9 +Инструменты > /@20 +#9 **** EXAMPLES **** +Потоки (демо) /rd/1/develop/thread +IPC /rd/1/develop/ipc +Color Slider /rd/1/demos/cslide +Консольный пример 1 /rd/1/develop/testcon2 +Консольный пример 2 /rd/1/develop/test_gets +Окна сообщений /rd/1/demos/use_mb +#10 **** SYSTEM **** +Настройка > /@11 +Системные сенсоры > /@12 +Работа с файлами > /@13 +Тестирование > /@19 +Спец. возможности > /@21 +Доска отладки /rd/1/develop/board +#11 **** SETUP **** +Устройства /rd/1/setup +Генератор фона /rd/1/pic4 +Стиль окон /rd/1/desktop +Панель задач /rd/1/spanel +Менеджер иконок /rd/1/icon +VRR /rd/1/vrr +MyKey /rd/1/mykey +Видеорежим для ATI /rd/1/vmode +#12 **** SENSORS **** +Диспетчер процессов /rd/1/cpu +PCI-устройства /rd/1/pcidev +Тест скорости граф. /rd/1/mgb +CPUID /rd/1/cpuid +GHOST Monitor /rd/1/gmon +K. Bus disconnected /rd/1/kbd +HDD информер /rd/1/hdd_info +Чтение HDD /rd/1/hdread +#13 **** FM **** +KFAR /rd/1/File Managers/kfar +KFM /rd/1/File Managers/kfm +Eolite /rd/1/File Managers/Eolite +Консоль SHELL /rd/1/shell +SysXTree /rd/1/sysxtree +Сохранение образа /rd/1/rdsave +#14 **** ОБРАБОТКА ДАННЫХ **** +Калькулятор /rd/1/calc +Текстовый редактор /rd/1/tinypad +Табличный процессор /rd/1/table +Построение графиков /rd/1/graph +HEX-редактор /rd/1/demos/heed +#15 **** NET **** +Серверы > /@16 +Клиенты > /@17 +Конфигурация /rd/1/network/stackcfg +Zero-Config /rd/1/network/zeroconf +Статус сети /rd/1/network/ethstat +Статус ARP /rd/1/network/arpstat +#16 **** SERVERS **** +SMTPS /rd/1/network/smtps +HTTPS /rd/1/network/https +FTPS /rd/1/network/ftps +#17 **** CLIENTS **** +TFTP-клиент /rd/1/network/tftpc +Интернет-шахматы /rd/1/network/chess +Простой HTTP-клиент /rd/1/network/httpc +Просмотр HTML+HTTP /rd/1/htmlv +NNTP-группы новостей /rd/1/network/nntpc +TELNET /rd/1/network/telnet +POP-почта /rd/1/network/popc +IRC-клиент /rd/1/network/airc +YAHOO IM (демо) /rd/1/network/ym +JMail /rd/1/network/jmail +VNC-клиент /rd/1/network/vncclient +DNS resolver /rd/1/network/nslookup +#18 **** OTHER **** +Аналоговые часы /rd/1/demos/aclock +Бинарные часы /rd/1/demos/bcdclk +Таймер /rd/1/demos/timer +Создание скриншотов /rd/1/scrshoot +Календарь /rd/1/calendar +BGI-шрифты (демо) /rd/1/fonts/bgitest +Просмотр RTF /rd/1/rtfread +Таблица Менделеева /rd/1/period +Пипетка /rd/1/pipetka +Тренажёр KJ|ABuIIIA /rd/1/games/klavisha +#19 **** SYSTEM TESTS **** +Тест защиты /rd/1/test +Тест монитора /rd/1/disptest +#20 **** DEVELOP TOOLS **** +Упаковщик KPack /rd/1/kpack +Flat Assembler /rd/1/develop/fasm +ASCII-коды /rd/1/develop/keyascii +SCAN-коды /rd/1/develop/scancode +Hex2Dec2Bin /rd/1/develop/h2d2b +Доска отладки /rd/1/develop/board +Отладчик /rd/1/develop/mtdbg +#21 **** SYSTEM SPECIAL **** +Экранная лупа /rd/1/magnify +Экранная клавиатура /rd/1/zkey +Таблица символов /rd/1/ASCIIVju +## diff --git a/data/rus/mykey b/data/rus/mykey new file mode 100644 index 0000000000000000000000000000000000000000..95e9153bf48db496ec02ec30a1e230c1f81e0e79 GIT binary patch literal 1861 zcmV-L2fFx6P(w@hF8~0600001Mv*2LLXK|=60sA0JscPM#)?Gv@T@*b^HwaqQ7P-r zq#1rzuCynz7#qMZZ}BygyLLU=d!2IxbdsE^&0{a`#I7)L3#zhA%q5=21*aLF0XXSr zb)jEILHM%|JV$O|B!926((Ar@)4{B48|bR zQWi(yr+w<@)EiNFSC+H+aeEBbD*_dFQ+b)k@*llkpqa`x*^j3 zIs4bs3cCJTIYjWAShD@NuCv4Cd{dCFbeiN;1Ht`)PQB`qA$noc zloxsmlP2vrVz3Ms`rmC<>v8a5$Ya(U&zWXsZQ#b_Zei^3cwB)+4omCmS2yxU%5%7e zZ1AMbdYPq92Fa-?CG;n@;j*|xCxLze{^Nb^cFQLyEpiLrrQz%I_onh49=1%t?8;xE z5dy;DZ)Z2asi)(s?A6x%Ger!9r@G=g@*46nftv#~JxG#j{X^3ndOJk7i35*N%ng}# zHv!g*^J72C%MEkU=gv*;3{PLXb-GPalPj!7-o>*vNYC(}{(7@tkxrQacen)ClwG*_ zvy^LMhgP0hUi5V%e|P*VJL&?eh#i;lv}8#y+lf_QK$F8!`O~%gp)mMhGXh}YwH^%Py|6yAzsf|g$0}&gQS>wnJG@8c6pDPMOb@$zYhY|K{kx2>sKaf@Pd1`{QvL?_JY2GOC`O(6SB z{(>z4z_OQDPMJLC0iZVPIXhW5Vj9&B^GsZ)O~P#8uvn7Rwo}e$V}BK3)<#49*!Y6+ zmgtuofbq)9z~U6#%!G@WcjiI~bQW)<>bSmMbEe&6tQxqm8j@{sCPMH9bJj>h?)R*+me5A3p?*OU(Jeb$YKJjK3Cs7ga1-T z^f!viFtnhEW6H~lR0V5qIhrQHaU_m0b@H>bU1O5u+`+0a^5m`lh)&sRq(aA_+GEHV z`|W#aEKAJpboK1beK)@CE?=_&V~dE6NbJAqo)v_wl%as@w*y z1M4&}+9c5IX>IaY$0!oei~%!W5m=DF93v`*J4E7z(JfzLm9%}fVa)OJf-D1Vs;V38X8*@DiYVQ;ASmRb7!Rz09qmO8us#aH4j(y zYB7@^dy*290&1S`4g;_f4^Wk$+e#O?tUFr*ZqGfJy`XmDjR9w?ZzoCn!D`1#*F|%DQi>)x)KS*c?G&iGY;#9lQ zK*^emrFqUwAzLZW%N?$XR=#jUesN3ws#3Ux(tnN#^0Y`F@_qG(?s6)P;Oe z3U(-L2}&Jh&T%)Z>(ASItl=D0mD?yLEfwAVMSWc5!RfajsT$yDvv^D@Q00000i@>HQ literal 0 HcmV?d00001 diff --git a/data/rus/network/jmail b/data/rus/network/jmail new file mode 100644 index 0000000000000000000000000000000000000000..c6091335c207a041a600dbb0cfcafc3cd4776506 GIT binary patch literal 1976 zcmV;p2S@lzP(w?16aWB$00001Mv*2LLXK;4&&M{gp_R3rW|Cw@0?q9aY);Gm2C|;_ zPHAGBd!PRSk6e$7>f{hp0fBQ&bfyFFVZbyu6p|Zo#3SqdIH?3h0uC(IkxYfxW)4l z5f_nv3d4MzJBi=Q=e_0=!MjLIYw)syS~#3@`uSo38-1jzCEFaypUAbkJB-TtNT5-% zWD#x6$H>AApr^K^Bf@uVhEaTYvhefH0XgwJs^=6;tdL56^D1<{ss;b-%$=LtLU{I{ zA0yHthYy68&4ZD}=$71E12~a48F+pFTcFD2MSh2xN*@kW4;I6~iwA(D4OQhVMfuXg z6j{0FnkI}NZWT~r6Ew$(4iW=8_zkLS3yv6>0BV^0kdBHkI?~bFe)PxdE@*u%f(iz) z=JghmAcSGc3xwQxKCAw0PCP=Pk=kJwlF+N5kz_uiay7XjEdUm$;0#mB3Qd!f7vf|z zW6kK{N8j~gQHal{>mUkkY9{_V4hfS^-TQq#n%DAB;RGGI6lre0<(h~p!nNETWHnKy zKD5u$m(dYa9&ijIQ$xi^B>F+dF@{>fX&nGPAv8|s2>@?WsgF>24bhjQ*Y5Ywb{O{L zt?&SVBWS@jPYPO+{pSj2XwNek0wfv~r<#1w2;Bt>FIbmIJ=R(0Hrlrb~7sA{K*w5@(Af%jE63M|GPz<#V1duvDK{zp=deH<&#t%)C017^4(ZTS zr@HGvA@1dPJ$RF^C!#ieVw!jqJp~e7iqTY=wq*Cvm9H!(@|)Gn1$0VIA>X|d>!TbK zC3BLTh-0_B+){bXY}tk_D6YDL|Luw`%kh^%|EGI9rw?b`(7n|Jh7fn zM9|72f7Aj-GB%j**BShSGhsg0`tm$3P_*JP`MM<2#)OGc9dnXd3wJecHBmqMm7%|| z&+*4pG2HN5=zZOS5fMNEB#lB?oTSF0xcU1v5HFI|1Kezs({-7OUGdp@XB_Gm5Gdy* zzK+Xq!DP?os}tqp-LN2w8w6Lxg(fS7J0uWxj~p@e7AaV6{y@c&6tCYmyNXUy=Eb0% zc^@PNq?$57i=0fRlyh`5Ygh0BOb}J%4Ovdklv6f%cP&9*(M_Q?5mXBKS2w!WB#S>rQuA;QN9ppzj#UvBgMrD zW?de+$(@>!32m$lyjuyN zFj32V@;TgzG>dG5iN0P6hZZ6$H#;?Jr<-j|CsoNa*4y~_3b{O!{R$D=((gq45-nf& zBO^}{*{-b8L>32Zd6J_#J?=m9$+X$l*?Vep1%L?zW_hNKU=Ju4TOtbwRuURSQ`T&y zzNs^?K+L+1q{FpAz3re1P{c!xnCLR`fE(Q*i3qCY%^ygR@*7SxwDt; zLW|rLDlZ|6V_47qfY}EgfGY)^VGjS|6g)8 +;port = +; If proxy requires authentification, uncomment following lines too +; (otherwise, leave them commented): +;user = +;password= + diff --git a/data/rus/panel.dat b/data/rus/panel.dat new file mode 100644 index 0000000000..fc97f062a7 --- /dev/null +++ b/data/rus/panel.dat @@ -0,0 +1 @@ +0000;0000;0001;0001;0001;0001;0100;0001;0001;0001;0001;0001;x \ No newline at end of file diff --git a/data/rus/pipetka b/data/rus/pipetka new file mode 100644 index 0000000000000000000000000000000000000000..d7e9a7f0ee30e0be8d5a2e53cf37a2de9e425ac2 GIT binary patch literal 1374 zcmV-k1)=&&P(w?*6#xK%00001Mv*2LLXK;4&&M{gp_U$4RJS&mpbge}QcI3X1Lgh` zYXoM@|Bl4D$6fF>RXoTnu1BrP!aIvQvJcl{GklD1!0ZZ<-;xGxP{K#MVZFJfK-xJ+ zUrkJ5|4c%U@(3``k@{DTL}4T)FOFytrsMtUchz+H#FH0bZkE?$_R7q{ynlI<)YQ_$ z1zH`(fx3urZ!%|( z$^q*MU(k`=#4M+lioe-o|C5L9sd!@B5&2#1ws+khOWV(^yzn+P5p-hzCnGOqTMHYv zs_?6LkG>r7;JSIV!kH;A{I^*8K*Uv63^}4Y7NEC(ThgVKNKI6`)W!=A$J_UWs=wAy z%V7*iDbMJ^v-5z)5JBRUIf0*ETVjQlVWa>5OsJ>O*2iB+5G_Y>kI!NN$DDi%OkKpj z4D%)k3HYs_hB68^lY28G6tidC4|FrZt4;KSnI6U}Kt^m}sBt-+@#q{YtOWuYzCNt{ zNvb>1v5Lap)lzftYW2X9PjujSuQ>FU#RMm2V5I>$C3!SNaX$0Xe;bD)h^<@A$}1tz zit(Y&Ch@Q<$^n>V+6XcqT6Vzh!AwO4DJaA~%nJerwhKOn0PcXg7uwk*lKYSvX{i9X zZ)>nE2{?NgPA6K3n10ukAE5EH|34B;+f}4>BsI@_{{k{-LyredIGtMF|M4y#>=e#h zA|a^Ee+~amWDwOrV04J{<@po(RA24hm=Z1}I7SWU^Xt%(cAwy}jEUa=zTJ9YyPL6Uw z6y@BG@dJ*^Clk`jB zU6sLBSVs}9O^J5f2b=B#^AxX^a;vxsG>{JQP}#Muj{Zu=Rzd-THDfwPC~>1K4UkNA z1@JlmG7Jff$ZU=pHVg&p!|FWQ$2d8qXSd+0t9+G6VP99GkJv0R^8)cjjZZC zvD#=ysHc16ePr)-C2&l?p;H1rqitc_X8~K6grVZIX&ouN?6Di@6d`zktk7#Ty0}YU zF_u7rq#sm9_Kk)zSed%QcNV_n!Q`=>#YfD$H$t@|W<;aA{{APtoulOz4wMEn92jl~v ghBhNf{`tO09Om?l!r2gB(}NiQAm=^+4*&oF0-z9}hyVZp literal 0 HcmV?d00001 diff --git a/data/rus/setup.dat b/data/rus/setup.dat new file mode 100644 index 0000000000000000000000000000000000000000..c94ae3ec5bde3b9d0f59c17f39a7eee748cf4b6d GIT binary patch literal 48 gcmZQzU|>*SW?%p!1_dSt1{NUAhy??s7`T8K01S%&UH||9 literal 0 HcmV?d00001 diff --git a/data/rus/shell b/data/rus/shell new file mode 100644 index 0000000000000000000000000000000000000000..f78fc63c9fb18de3ae597a02ea5d3aceb25618c6 GIT binary patch literal 3939 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 literal 0 HcmV?d00001 diff --git a/data/rus/spanel b/data/rus/spanel new file mode 100644 index 0000000000000000000000000000000000000000..b2e75e63583a7c44abf39e6ee43b2a29523fbf5a GIT binary patch literal 652 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 literal 0 HcmV?d00001 diff --git a/data/rus/test b/data/rus/test new file mode 100644 index 0000000000000000000000000000000000000000..c2890faf65b1ed2ef5a105ee5d37d9b353e232e9 GIT binary patch literal 431 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 G0000SwA^6; literal 0 HcmV?d00001