From 17228ba373bee1c45d60854b1f116b98c14919ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Sat, 31 Mar 2007 18:43:09 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20version=20b=C3=AAta=201.3.2fr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: attention modification majeure du code --- Graphisme/screenshots/bootnew.jpg | Bin 30620 -> 0 bytes Graphisme/screenshots/chargement.jpg | Bin 23012 -> 0 bytes Graphisme/screenshots/dir.jpg | Bin 54292 -> 0 bytes Graphisme/screenshots/editeur.jpg | Bin 113911 -> 0 bytes Graphisme/screenshots/gestionnaire.jpg | Bin 52570 -> 0 bytes Graphisme/screenshots/installation.jpg | Bin 23842 -> 0 bytes Graphisme/screenshots/interpreteur.jpg | Bin 5918 -> 0 bytes Graphisme/screenshots/logo.jpg | Bin 17124 -> 0 bytes Graphisme/screenshots/pci.jpg | Bin 20181 -> 0 bytes Graphisme/screenshots/video.jpg | Bin 129586 -> 0 bytes INFORMATIONS.md | 1432 ----------------------- MAKEFILE | 59 - SCREENSHOTS.md | 13 - commande/MAKEFILE | 20 - commande/commande.asm | 1191 -------------------- contribs/MAKEFILE | 20 - contribs/ex-nasm.asm | 27 - contribs/ex-tasm.asm | 31 - doc_origine.pdf | Bin 143362 -> 0 bytes include/bmp.h | 40 - include/cpu.h | 20 - include/divers.h | 2 - include/fat.h | 61 - include/graphic.h | 26 - include/mem.h | 124 -- include/pci.h | 34 - include/pol8x16.inc | 256 ----- include/pol8x8.inc | 128 --- install/MAKEFILE | 20 - install/setup.asm | 164 --- install/setup.sh | Bin 10752 -> 0 bytes install/winNT gui/setup.bpr | 121 -- install/winNT gui/setup.cpp | 33 - install/winNT gui/setup.res | Bin 876 -> 0 bytes install/winNT gui/setup.tds | Bin 524288 -> 0 bytes install/winNT gui/unit1.cpp | 166 --- install/winNT gui/unit1.ddp | Bin 51 -> 0 bytes install/winNT gui/unit1.dfm | 184 --- install/winNT gui/unit1.h | 47 - install/winNT/setup.bpf | 4 - install/winNT/setup.bpr | 120 -- install/winNT/setup.res | Bin 876 -> 0 bytes install/winNT/setup.tds | Bin 65536 -> 0 bytes install/winNT/unit1.cpp | 135 --- lib/MAKEFILE | 20 - lib/bmp.asm | 105 -- lib/detect.asm | 762 ------------- lib/str0.asm | 993 ---------------- lib/video.asm | 891 --------------- noyau/8237.asm | 266 ----- noyau/8259a.asm | 415 ------- noyau/MAKEFILE | 38 - noyau/boot.asm | 216 ---- noyau/clavier.asm | 261 ----- noyau/disque.asm | 1099 ------------------ noyau/font/2_hebrew.fnt | Bin 4096 -> 0 bytes noyau/font/8x11snsf.fnt | Bin 4096 -> 0 bytes noyau/font/ad&d.fnt | Bin 8192 -> 0 bytes noyau/font/antique.fnt | Bin 8192 -> 0 bytes noyau/font/applicat.fnt | Bin 3584 -> 0 bytes noyau/font/backward.fnt | Bin 4096 -> 0 bytes noyau/font/bigserif.fnt | Bin 4096 -> 0 bytes noyau/font/blcksnsf.fnt | Bin 4096 -> 0 bytes noyau/font/block.fnt | Bin 4096 -> 0 bytes noyau/font/bold.fnt | Bin 4096 -> 0 bytes noyau/font/breeze.fnt | Bin 4096 -> 0 bytes noyau/font/broadway.fnt | Bin 4096 -> 0 bytes noyau/font/comp.fnt | Bin 4096 -> 0 bytes noyau/font/computer.fnt | Bin 8192 -> 0 bytes noyau/font/courier.fnt | Bin 4096 -> 0 bytes noyau/font/cyrillic.fnt | Bin 4096 -> 0 bytes noyau/font/dblmtx14.fnt | Bin 3584 -> 0 bytes noyau/font/dblmtx16.fnt | Bin 4096 -> 0 bytes noyau/font/finnish.fnt | Bin 4096 -> 0 bytes noyau/font/font1!!!.dat | Bin 4096 -> 0 bytes noyau/font/font2!!!.dat | Bin 4096 -> 0 bytes noyau/font/font3!!!.dat | Bin 4096 -> 0 bytes noyau/font/font4!!!.dat | Bin 4096 -> 0 bytes noyau/font/frankfrt.fnt | Bin 8192 -> 0 bytes noyau/font/fresno.fnt | Bin 8192 -> 0 bytes noyau/font/future.fnt | Bin 4096 -> 0 bytes noyau/font/greek.fnt | Bin 4096 -> 0 bytes noyau/font/hebrew.fnt | Bin 4096 -> 0 bytes noyau/font/hollow.fnt | Bin 4096 -> 0 bytes noyau/font/hylas.fnt | Bin 4096 -> 0 bytes noyau/font/inverted.fnt | Bin 4096 -> 0 bytes noyau/font/italic.fnt | Bin 8192 -> 0 bytes noyau/font/italics.fnt | Bin 4096 -> 0 bytes noyau/font/itt.fnt | Bin 4096 -> 0 bytes noyau/font/lcd.fnt | Bin 8192 -> 0 bytes noyau/font/mechanix.fnt | Bin 4096 -> 0 bytes noyau/font/medieval.fnt | Bin 8192 -> 0 bytes noyau/font/modern-1.fnt | Bin 4096 -> 0 bytes noyau/font/norway.fnt | Bin 4096 -> 0 bytes noyau/font/norway2.fnt | Bin 4096 -> 0 bytes noyau/font/old8x8.fnt | Bin 2048 -> 0 bytes noyau/font/oldeng.fnt | Bin 8192 -> 0 bytes noyau/font/roman.fnt | Bin 4096 -> 0 bytes noyau/font/sanserif.fnt | Bin 4096 -> 0 bytes noyau/font/script.fnt | Bin 8192 -> 0 bytes noyau/font/standard.fnt | Bin 8192 -> 0 bytes noyau/font/stretch.fnt | Bin 4096 -> 0 bytes noyau/font/thai.fnt | Bin 4096 -> 0 bytes noyau/font/thin.fnt | Bin 4096 -> 0 bytes noyau/heure.asm | 81 -- noyau/horloge.asm | 32 - noyau/manette.asm | 298 ----- noyau/mcb.asm | 749 ------------- noyau/port.asm | 699 ------------ noyau/souris.asm | 327 ------ noyau/systeme.asm | 297 ----- noyau/systeme.ini | 9 - noyau/video.asm | 1352 ---------------------- outils/CE explorer/icone.ico | Bin 766 -> 0 bytes outils/CE explorer/imgs.bmp | Bin 8698 -> 0 bytes outils/CE explorer/project1.bpr | 139 --- outils/CE explorer/project1.cpp | 34 - outils/CE explorer/project1.res | Bin 1648 -> 0 bytes outils/CE explorer/project1.tds | Bin 524288 -> 0 bytes outils/CE explorer/unit1.cpp | 273 ----- outils/CE explorer/unit1.ddp | Bin 51 -> 0 bytes outils/CE explorer/unit1.dfm | 1434 ------------------------ outils/CE explorer/unit1.h | 37 - outils/compression/rip.asm | 108 -- outils/compression/unrip.asm | 88 -- programs/MAKEFILE | 23 - programs/cos.rip | Bin 15201 -> 0 bytes programs/editeur.asm | 355 ------ programs/exem-ce.asm | 26 - programs/exem-lib.asm | 24 - programs/gestion.asm | 117 -- programs/isa.asm | 46 - programs/logo.asm | 91 -- programs/lpt/com.asm | 471 -------- programs/lpt/project1.dpr | 12 - programs/lpt/project1.opt | 34 - programs/lpt/project1.res | Bin 794 -> 0 bytes programs/lpt/unit1.dcu | Bin 18160 -> 0 bytes programs/lpt/unit1.dfm | Bin 6125 -> 0 bytes programs/lpt/unit1.pas | 517 --------- programs/pmode.asm | 22 - programs/souris.asm | 32 - programs/test.asm | 169 --- programs/verifier.asm | 106 -- programs/volume.asm | 351 ------ 145 files changed, 17897 deletions(-) delete mode 100644 Graphisme/screenshots/bootnew.jpg delete mode 100644 Graphisme/screenshots/chargement.jpg delete mode 100644 Graphisme/screenshots/dir.jpg delete mode 100644 Graphisme/screenshots/editeur.jpg delete mode 100644 Graphisme/screenshots/gestionnaire.jpg delete mode 100644 Graphisme/screenshots/installation.jpg delete mode 100644 Graphisme/screenshots/interpreteur.jpg delete mode 100644 Graphisme/screenshots/logo.jpg delete mode 100644 Graphisme/screenshots/pci.jpg delete mode 100644 Graphisme/screenshots/video.jpg delete mode 100644 MAKEFILE delete mode 100644 SCREENSHOTS.md delete mode 100644 commande/MAKEFILE delete mode 100644 commande/commande.asm delete mode 100644 contribs/MAKEFILE delete mode 100644 contribs/ex-nasm.asm delete mode 100644 contribs/ex-tasm.asm delete mode 100644 doc_origine.pdf delete mode 100644 include/bmp.h delete mode 100644 include/cpu.h delete mode 100644 include/divers.h delete mode 100644 include/fat.h delete mode 100644 include/graphic.h delete mode 100644 include/mem.h delete mode 100644 include/pci.h delete mode 100644 include/pol8x16.inc delete mode 100644 include/pol8x8.inc delete mode 100644 install/MAKEFILE delete mode 100644 install/setup.asm delete mode 100755 install/setup.sh delete mode 100644 install/winNT gui/setup.bpr delete mode 100644 install/winNT gui/setup.cpp delete mode 100644 install/winNT gui/setup.res delete mode 100644 install/winNT gui/setup.tds delete mode 100644 install/winNT gui/unit1.cpp delete mode 100644 install/winNT gui/unit1.ddp delete mode 100644 install/winNT gui/unit1.dfm delete mode 100644 install/winNT gui/unit1.h delete mode 100644 install/winNT/setup.bpf delete mode 100644 install/winNT/setup.bpr delete mode 100644 install/winNT/setup.res delete mode 100644 install/winNT/setup.tds delete mode 100644 install/winNT/unit1.cpp delete mode 100644 lib/MAKEFILE delete mode 100644 lib/bmp.asm delete mode 100644 lib/detect.asm delete mode 100644 lib/str0.asm delete mode 100644 lib/video.asm delete mode 100644 noyau/8237.asm delete mode 100644 noyau/8259a.asm delete mode 100644 noyau/MAKEFILE delete mode 100644 noyau/boot.asm delete mode 100644 noyau/clavier.asm delete mode 100644 noyau/disque.asm delete mode 100644 noyau/font/2_hebrew.fnt delete mode 100644 noyau/font/8x11snsf.fnt delete mode 100644 noyau/font/ad&d.fnt delete mode 100644 noyau/font/antique.fnt delete mode 100644 noyau/font/applicat.fnt delete mode 100644 noyau/font/backward.fnt delete mode 100644 noyau/font/bigserif.fnt delete mode 100644 noyau/font/blcksnsf.fnt delete mode 100644 noyau/font/block.fnt delete mode 100644 noyau/font/bold.fnt delete mode 100644 noyau/font/breeze.fnt delete mode 100644 noyau/font/broadway.fnt delete mode 100644 noyau/font/comp.fnt delete mode 100644 noyau/font/computer.fnt delete mode 100644 noyau/font/courier.fnt delete mode 100644 noyau/font/cyrillic.fnt delete mode 100644 noyau/font/dblmtx14.fnt delete mode 100644 noyau/font/dblmtx16.fnt delete mode 100644 noyau/font/finnish.fnt delete mode 100644 noyau/font/font1!!!.dat delete mode 100644 noyau/font/font2!!!.dat delete mode 100644 noyau/font/font3!!!.dat delete mode 100644 noyau/font/font4!!!.dat delete mode 100644 noyau/font/frankfrt.fnt delete mode 100644 noyau/font/fresno.fnt delete mode 100644 noyau/font/future.fnt delete mode 100644 noyau/font/greek.fnt delete mode 100644 noyau/font/hebrew.fnt delete mode 100644 noyau/font/hollow.fnt delete mode 100644 noyau/font/hylas.fnt delete mode 100644 noyau/font/inverted.fnt delete mode 100644 noyau/font/italic.fnt delete mode 100644 noyau/font/italics.fnt delete mode 100644 noyau/font/itt.fnt delete mode 100644 noyau/font/lcd.fnt delete mode 100644 noyau/font/mechanix.fnt delete mode 100644 noyau/font/medieval.fnt delete mode 100644 noyau/font/modern-1.fnt delete mode 100644 noyau/font/norway.fnt delete mode 100644 noyau/font/norway2.fnt delete mode 100644 noyau/font/old8x8.fnt delete mode 100644 noyau/font/oldeng.fnt delete mode 100644 noyau/font/roman.fnt delete mode 100644 noyau/font/sanserif.fnt delete mode 100644 noyau/font/script.fnt delete mode 100644 noyau/font/standard.fnt delete mode 100644 noyau/font/stretch.fnt delete mode 100644 noyau/font/thai.fnt delete mode 100644 noyau/font/thin.fnt delete mode 100644 noyau/heure.asm delete mode 100644 noyau/horloge.asm delete mode 100644 noyau/manette.asm delete mode 100644 noyau/mcb.asm delete mode 100644 noyau/port.asm delete mode 100644 noyau/souris.asm delete mode 100644 noyau/systeme.asm delete mode 100644 noyau/systeme.ini delete mode 100644 noyau/video.asm delete mode 100644 outils/CE explorer/icone.ico delete mode 100644 outils/CE explorer/imgs.bmp delete mode 100644 outils/CE explorer/project1.bpr delete mode 100644 outils/CE explorer/project1.cpp delete mode 100644 outils/CE explorer/project1.res delete mode 100644 outils/CE explorer/project1.tds delete mode 100644 outils/CE explorer/unit1.cpp delete mode 100644 outils/CE explorer/unit1.ddp delete mode 100644 outils/CE explorer/unit1.dfm delete mode 100644 outils/CE explorer/unit1.h delete mode 100644 outils/compression/rip.asm delete mode 100644 outils/compression/unrip.asm delete mode 100644 programs/MAKEFILE delete mode 100644 programs/cos.rip delete mode 100644 programs/editeur.asm delete mode 100644 programs/exem-ce.asm delete mode 100644 programs/exem-lib.asm delete mode 100644 programs/gestion.asm delete mode 100644 programs/isa.asm delete mode 100644 programs/logo.asm delete mode 100644 programs/lpt/com.asm delete mode 100644 programs/lpt/project1.dpr delete mode 100644 programs/lpt/project1.opt delete mode 100644 programs/lpt/project1.res delete mode 100644 programs/lpt/unit1.dcu delete mode 100644 programs/lpt/unit1.dfm delete mode 100644 programs/lpt/unit1.pas delete mode 100644 programs/pmode.asm delete mode 100644 programs/souris.asm delete mode 100644 programs/test.asm delete mode 100644 programs/verifier.asm delete mode 100644 programs/volume.asm diff --git a/Graphisme/screenshots/bootnew.jpg b/Graphisme/screenshots/bootnew.jpg deleted file mode 100644 index 6829feb3475b97926e4bf372791efe480bdd15b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30620 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

p0gOQL=K*qy?D|CbN2j`j}uUK`k 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 Urrmd6`>*aD(Eo@3qTkK_FAxBTod5s; diff --git a/Graphisme/screenshots/chargement.jpg b/Graphisme/screenshots/chargement.jpg deleted file mode 100644 index a2d1f358dac40e60818b3c794856fdd6873e583c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23012 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≦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 diff --git a/Graphisme/screenshots/gestionnaire.jpg b/Graphisme/screenshots/gestionnaire.jpg deleted file mode 100644 index d1cd94b990536ce46af39de8ad478d0ea951b511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52570 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 J=D?4k{{^JZ8R!52 diff --git a/Graphisme/screenshots/installation.jpg b/Graphisme/screenshots/installation.jpg deleted file mode 100644 index 66d46f9947076c922d68eea325eb08a808299993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23842 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 diff --git a/Graphisme/screenshots/interpreteur.jpg b/Graphisme/screenshots/interpreteur.jpg deleted file mode 100644 index 987f3205ce26d1eb9b614e5c6a5ef24795394f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5918 zcmeH`X*ApE8o>Ym>`2<$YKuxN6&YOC0$rKkpBG*qdzEma0ZuA)jUGo!Ay z(P>RnODWT#w1hIpUWsKyD6JwW*Nl!E_ue!2ocpCSbI(2Je#rBl=hOR~=RCjX{k=P{ zcYXr)IoUhf10V>AG&EGvG(AivS?CxTl6ISbVq#)w3A8*0BTvF(@uWW-JFS2u z3e1C~KtWXiA_+nz!JQ631pq*}aN6C0{}mtv3WFn%C^2yfVL|;q00Kgx5Ev8=hrxu^ zNy2*oCJC3q>suqF-Kj{`C>he#{M#rs8&;dFNB@etL11*MnD~A{1&$+d3uMc#Xjjc)44_W&VFsDfy7bhr&E|1pbn9 z(o2rR7*w0^09h2rAmv}peLW*f51@ApoXJ?);H;O(ZXQdNshpZ6XRF(5NF(Q3#hsW? zafu6FZit#DOqJ!>55dl~sUYc|jY~I-gH6W+aN)@%)~ydQN#993rYbda=>x$hCzSaf zIadmKgnaoz7nL$V>re%nKDPnvZfLMQYdNI*Ss^Zz-x{Dj{N4Vy80Pa)470C?$SyGVtd?Moxz03s!S&%?px-(C zFA+v;cPpi5#L~nM38#62bFY24H6NOMT2+nqm}prn@1ZpPc)9o;>x(IYzGAq$4Kead zJ=yZE(5#kMEOr}Ed4?&EVF#u8eUt&8@SJn#+%o58YWTH{yqAILb0`xIjC+^8-{IE$GA(tEIP3s9vx_amG9ZhG94K~gt{>DM zAyb=TGh!M^iCH&BO<^${dp)xyOCx`Qe?ulMK9+v>E*syRFl-&&UGXRiA6dK%)`qUU ziSPCMeO-t(=@DUjH+&}FYc5sUdp^^S%}cB~`c1Kl`jr=}8>i1^16+Z|i~9GycP1V+ z*j{o7(zoezD*TJr(zvTBx+0Wp<-j*MCHQogd811h(&V69WBu1-Ej@f=_s%1mzJVI1 zY8ElBN^|mjG-Ff%U2tYja2AT_SiSM5?Ph)o79H$&<*8;7YVykQDy6LX3dqxk)R>+t zd;Qx2H`U@x_O|3| z=1#LePd9nqej(3=5m(ONcf@Vaak)>IM0>d*oxfe+c%4F%IKAPKo*^zIw9Bn_eZgK9n_l!II;noX+9QG{+@`aF3nAu>xRedH^p!<+&df*`e^qlU6(XIWv+rOh7j zjkfk%Q;uGD1N{+AOz!w8^H%PiVNJQw&+=?tp*sC(oqdB?>~@A)`CQY_1Zd<7+h>mp z6o^&2VUdkoMPoIkotX+PP+`bXH{w@9b5qR0h1IK?oy|{gSeg>O6 z?6E7eyY7Rk4CgQjj_;E3fPI$&)$WW%Z5_3cfsX5xf8a!@fMoyg5_34jn_o&C&>ros z@~0?t3qO1SkJ?{;zVqwE_*a$L06~A=p|-vQGDcFF(% diff --git a/Graphisme/screenshots/logo.jpg b/Graphisme/screenshots/logo.jpg deleted file mode 100644 index dd30ca1707ae4cef110c4aeca2f9baf7040d469a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17124 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 FUjW?rq`3e9 diff --git a/Graphisme/screenshots/pci.jpg b/Graphisme/screenshots/pci.jpg deleted file mode 100644 index 9c4b547112c0b827fc141a2d3d55466a46dab661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20181 zcmeHvXHZn_vhEs&%z$JV$vLMX3rdnCsG#JalEW~-01^Zd1(BR{5(xqde87;C3WH>j zAUO_6M6x0X>cxF;?OS!K4$E`gyK4XVhFZT^)2z2wzi&U!)7|`>__+X3UeVCj03Z+u zaOd;~_&E)z0mOuaM1%yyL_|a+B*dgJT5=c}84ONMbB>nfJR2*^d1hvIZc#pVPGK%) zW`0=#VQ~p5DJeES`HON0MNvs9#4jTd5)u*^8H|yfoDspn%z^kHe}29OsE8qPctKDI zCxAxP2l zvU2hl)Gn)QXliL+xoKc%WNcz;W@Bq-@8Ia*^aC+uE@mZ#%oXdxl3w-;a$?OinH0mX=pm*FLO&+}+#% z{N>>5;nBBW>w*B#|GTVzuI#_8i|TY;c=-5Ge4=0Lg5dd_UQjB00uBj6Y88DVD>Mx! z;vq4uYW%axHzZt=H+JZ(J%&i>xuq6)c7HAHA1nL4g+2OTt?Zu*`~T~j0$@C1ys z0ZPEWwjvEqz$^2V&i%JjT9Z&={!*e8?0bh@vaezbY>D{>Ls z8ay;atFK9~6hleLJPq^+%NxiGlqO%<>e$WO(DWYoC(78$&)jBr2~1acT^39Kk-WHV zoV<9TSEM^Z;bsY0@#M9o1_J^Kf-Z=KE5|WPx?5kFMYMH1yx}Jh6LTD>yPeA=u z51Ljh>I(0<{vg_9JwjUg!Eui2C&#j%!d;p^S^EVJdf4|pQHWe7j~(Hcqf1r?yl)A$ zV4hyf;dd~_Av;pA>Fr4&;j)~$Hp{tv$^xX<5SmOkxjHVlRwcki3dEe;>Zi4t*zF$E z1?>$Ch29XCm}a)F+&=_D=kIgG*qZ{z8}HILBabY=RQ*$X`ra9Y7r> z;HC~%hqoroIWHDSq&;)sxuWsH$CZycR8KOCo!bLm<_m7c>wHUSx|>t6h1sCXoZTK1 z|I$|5r10QX75p8yTj^A1|hu|qY8XBFFz z6gla^)8+q$ml!}jbn0!k@N&K!rwM1ut3}ei(jjDsE}O{gX9l*|XWoyVxb5tCpER$~ zLf-o(Y}!}1ko(c@bO%&9#g}gIC8EL+&s2Chf*HD0KQjk3%VJYiH?BqJY-%HdX-T|N zsY2M7vAKkGDtoaa4eaH9F%9?lf%0IBQPh?Q%K~cnV`Ah+au+8bB-QcF(wb8YMW7nh zfTzWGT1Xu(@3yHnEM=IXx^4zl5FLkTi+Jtl;Mgv}$ha9JVfuAU$?914n_*4oQ@s8k zvAjP4G4DXl&*&IU=aOH+T%0;~Lyf2U@utXECMPaiSVdk1tLc<@j|QQFO_UK2tsX@E z-**w_V1zxc(y!AaS8j+FMXhi@_-j}E!+@O4pkmX;2HA7-!+Tp~47E(#&&0#FWSid! z>e6f8@@|;jheg@i(L~Rb(L#m~&)#ezx2Y}6Z_P|uPLtVcR)_!A9uJFDNy{B09U#C-d>yGcvM{C$!TO?1oZ!y9+1F6`F~Y^T}UaPeok0xOQ? zso2^^x|-9}=ip!cv@srj?XYr8Wwn7K&>|rIC&17<=?r>m21)RPn?Y{Wj#0J+cCut( zc{-{qX5rj9qJe%lMQU0XJGYLkWu7hqZF#jP+Gv!&r<0G1NIdH>W1k)-p^(c^p^hd- zjUPThNi7eXNCNcLY5%@{-v^MQ(q867^+xrKBZJ72C3$VOjT7Aqk}-_?gQDNQwXLW8 zU~PKTu^D>&L6=h@dRvM#ksy9NyWA(BoeK`XyyV5oTc6`sWL2yplQk|pMk(CO5hLpT zSU-{a@f0b`tM)h3dxJQgnvCJk(#tp7dG@-WYhX%quGVt*JjPE8h27>LdxzfJfq)&- z??J(a=#*uu7rW?As9e9>JSSwHp4FM~aJ5aD_2M^QtyOx_--@JC!E)3G#60YSQU@qX+ZlHs* z@eo==v~Hji_^Z0e$&C9kEG=pjgW=?V;s7gw;vjjoZK0)B12;q}zIdma5RunChRy!TKpe=$$P&Dd%tA$@IanT8uf<=wu=+n1)xpPbGO;A>s~Q)MDD^ z!Y5$0xGa|PQc`2|Y!x9h2(MKQ6$)`1@I%THs4|n+)m+g`aua36mr9+(vR24qF2l0A!)SbICfzCi@Uc?9KevLWY z&>Z2cXo*~FgT*6Gcer;H>m~2Bg|%e~<~1qE;E*{83440q=70_JpwQgHZ%26k!=BsT zSBK>XnvBcdxui)(^AX|q?YI%c{%o!!Eq6< zE)+`{{Uln>T=UUVpMRM6q@OW*;zaW;&9-cBXAcC4O+`uP9=5DrUN9 zCzFy$z!+Oq8FH6a7F)R+8O*#~zB+3sG3M$N)JJg;@$vxDjpvg5P~8NceRoApSlRrx zIqO0PX!qT?!k6kj46Uy2RLm^XaIqB0-z1UJn2TqSGy9148z6W z?62Iu$izeBxkr;lC*lLPr~F<3pr=G?7~2&~jjeHAjLBl?${2ijp?j70y2Ucph!f-M zjrx=Kg}5&x+)b|cS*+(5Amff*O z*twp>Oxlx+*Ca+aH#t~zomR4RR~pxAt-IKxdO0&*PhwBco}KnFADk4j)W=IgOuaw>i8-` z6Md6&!kdhCTu_$Ew?el&d}=+{M>=2|idTKBCKBa5;^KLi4PXID@Gt@n?YCM>&gkk> zsww(ck(0iocrQ}AvgK;Jc$Wmi28M-OV(OnmOa|aFa})!of`(AxZ)hj~8U;q^#TbKb z-OiU8dNCK-c~vW_88^RNgEZlo=FL-e1og_GSe8FR?`fXg7PDI|&c&;i&V1a^8grQuZ+J?nxhVND?Pu=0EEi%zpz)@s z8qB|e9}{Wfkl||?-seMToccZbt?>G)7;$TkhHwdf%iL$vCyFeuglg_9T!~Z(H8(Ab z{^-&jsuG^aXwTlWncX2y`qsVAd&gVp?fK95Qu6&#WY-mSe76#>-(3rW+`*UAucYwM zxaM7?Bqj{nzvvmKd9}a>TE4VzID7lraNaws zlrf~uy-b8voVD#+co?F|0j-NynI*~6%#zfs{O!g^S?@->j82%WXvIJ(;dKeby*2ij zOs%&>mYu8lAZHA~Gma|d2>BkPARVR?>15T2&{niK*?Vq|yx$%>yN5+7watUSXS!)e zZ(|>$MrW4ScYa-}9 z2Z#xbnUr6s(w?=i13)4Rm0s-uX==Ec;dJ`zSoq7_=PPcX-g1) zn}NAo4^pOne!{UziIEZ4!xUFY7yXF}^7+*ISlh6WR9eM+ z66yQ_0zFl6ul-0=xG;XSqL}!iS-YiS4c#OKfFOu+Q3EUA4VRzFI%ysq`;yrkDJQjlS71ADnx!wHUp^IqaB%Ea zP<0bjUd~FK5DGXm7x3eCg6fGChqX>??-%_eJDRKPcJ`#W69R@587V8`t%Ib)?fojkuLZ(5X(%yGxUFBVP6Bqq3}z!rAcc7OHA_vos}xNhjs z)DS9_=5e*JsA6Y*FnMaS4@)dI!0OU|Ky$!zP`OtMKvp`=?@F9^(N`653lXQw>T(Eg z?yKy61LWN)W+d;n3D(_ZeFhsgH=V$c5trrKh8LLPyIK<*#N|72pS-@mil5_-KL-*% z#-OwtkOVo_MCK;ecYSY=eR!rXT*i!sE545(AW3d$6E{|ViD4HyX-DH5fE7JToe$32 zwLE`@Mqb4DrFOaG$K2nl#a{8y@cob_+b7WlhXZRHRSjb<%ezL^y>uDrDc>)R6pb88-XE=8|vOskB` zu&5v%oRe4Ybc^-sduwf*(Xi+-)aoL0m+7D!JDmjz3aRj6J}(WHHgAA=z48Mz7ZkF- z+|bvkJue(z4M$$A;x@kI+DR?H;v=DIm>jlXml@;%mF_}u{OCXCG#5Q)%(;!3Nyl&u z;Etd+pL-|>TzvEP;Gc0N9#tg`Fx>KtP1=vxHX_G2!_0!f1Eql z{59UZ-GS7vE*`r(BQIF-{LsYJgCss?B9aJk1=r+S8C6Oyn^EqHY2xbCVH!Q5_@YxEV8Q zB^Vxw-X$o{L>8HoX_XFJw+D7(tL{*IO1waoQ&4J~g|cu3pjmm1N|a{nwT*Wxsw4V& zg=Ifw>F@$u-ICAXAFsUCe*6CI0t;BQ=Q6*iJ1fHoT?Ykc?9456?~o~twlXnekuLRF zBKdF7s~541F3m6NKLv6vk$lZuSz3_>tHI_{1V(@}0Ec;#?@vC>uN#fC29U{qQ_MVR znLJ_}dMnRTj8{lEd}Q0{{Mw=4;l4szZH99)D88_X)WB1W!Pz}c?S>%o{-9L3}|%^jIOP$_S}=2Z7w{eMTxR zzE&m#akk}qk!snU&*Ns!_KsVNQQ~4)-Gn%1Sym^3ebkYhWy{BuKQ!&K71B%*WhBg%?H&M~hk` zU3?HaQmYnS-P!rvnUR_|)mBMSFz-&r zT(WOl&*;{k#P#pZbSrwOP_}3f^B-LL5>0E5-yP**lSAuS@%|hg^|u}^+uFF6!qz1e zx68v6S|ez$f(Bgcb*BqDLh($b{yVA-fUX%j%)t4rW`{n*pYpW8m?&d}L**K#=rnY% zFgWsi{{+qvx%CbhgL8X+sC2I-f=LspUTblUerTb7pA`p_xn(%xtwgmOa@@bSyO;6F zO!h=qBa>Dy(tHs{;DCVR+$4oP+?Dy$1PP%YCJRG;m9my#;?`V$D0;(gnmy9 zw|&hr$?L^+QQM?jZmNEU-~lM{js?l2Lf~~_I2f%q`SS`zB^W2Qg=G9WO7;dT+t7o1 zLj2COL5nM-cz!KC#76WEo~+xnI-_0v~gmoCrxR^^HBh~S6j ztYFA9>;4~oJ&xpG0e{o~6-MGne+a~04Y+P2+Ldx$bd1U?kuZ3b{jna*WFa{K11I6* z2w#0!xT|{)iSvhhU#{}=u81s1lVX#=7YwrQ#DBSx)}<{EyDqKF0^Xohb7C;aTb0o5 zN!J(ad7ff)=j)$ihV(_R+=(@kraAT)N_ z5(qMq47I5Xt^|{36u=6*HUS_y7oZ4ogAYhWsSZouh$_!^5#hvWN0J}&QFjL^ROx=u zxR+3wfUZH;6M^hQe!{>rG?g+XP&B!ER?%Z*H?)Pduy}4-b!3owPN86A)^7nYfl$!8 zsAa_`W|s{1b`jkF7pN)!0{%hV4AzY^c}9=gJ5Z(N4C(?!c6d**B+tGt&&cEs-CQyx z=oNhQ2K%`6b~9oB)AsCnX=5;Lxt$&aeU1_@7))VR+3fj;8f?u z=Aib2iv!yku{1i*Z_REn$h@T1VJ*1qigA-AUR53Ndjq^!a%3bAu3s4Xa})0%V6s6q zSh3_~>)AB57u44Ph_mswN>I;UJ$c?Za#K>%2WIs!kkd9PXt91@`+BBZciZN+LCx83 z3)Fxz6{u_p+D>Q<3i-e~o`XCM&lG3`&m={F$)AeJEmqDPBmU?)J=KiRB)N5u16 z&Cy8j_ zO)KSVBTtST-hD(TA3k3Aque{PJTc_wK`Ra3B1}Jcxvoa=tC#JB;$hNZyRzvir~Ngw zx^z%TgRr|J0Ihk@^4}?Il8kdN+J31&2%T* z-|Xj~RsR2Y_Csw+R(3(gzlOU9rpGgEp+Om(NF8*3mZ(RucKK1m>V>|uqWdLIV`y&p zK!NF%e3@GclYs;$@d7rTs;U9OYe<13;`1?f3DN`Q4LV=~S#l27C`X14Qi0yeimnaY^s9CHgl``fn+}0-K2s&F>*! z765=Adzl?VcfQ5sqa8d6MtX~{YzsCVsR$deFL`8T)hQN3q2xSQLEvqwWo<<$&4Jvf zF%D6Y!q5-h+`FFpJ?W^juM|o?y;Rjd0b+t^(7ISl`u z8FHump|QQP@lhy_*eASjM9lR|WTs&_PwWj&S<|}A5Kj&V#f2b4bTy3d&5XMv*ud5V z079EZMZUyN1or<(MxobUV;tdkm%vr(@J8}mMohwPZ=Jww?@!W z_Y8GXCH9*#FQl7iaS?ctHX-m{^~qAIfwq1Do(B5r0PSyHcUi^9^G9o#rX9`vaORy} z8UBAM0%QP3TXdLb0>ZOK{>aY(B=PQ_PCs>mG_8&z&n}4*Ui>wO1v18&4?3hE-G4em z3x@uO!6;?rhg@<(%*E%%53X8)MfP@g_4c(YJy*6Eli`Jc;E|CsG$ z3ls60w!AQ5rf#1|&vbB&ClT+TQ2Wt^MZ`clhbHY;4UgRL^Y}DII(J zMaH(B9oroxNonUjfJ-B=k+WCuRbT?CeG$o@S_uTj%9UqsDw zlhVdma_5-hh_g)FsDUieRwV?7MY#=M45&-#VB~+c%aM?ILB$ z<%k&bx78{Sn2q7~?Afvoc_~Eox>puhhTY?bmc0sY-@dqPv@_Y3gIY!_`cPac6=
Hk3Zjp4CRvmhX^^LLKS=I{T$S?zyE jpZni7|9)S8$H3n)@OKRS9Rq*Iz~3?OyD>oYbMpTHavQ_2 diff --git a/Graphisme/screenshots/video.jpg b/Graphisme/screenshots/video.jpg deleted file mode 100644 index 47891f3c77064e5866f3754b0222cf2bc777a07a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129586 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 KLqw$inEn@u% 40x25x16 couleurs en texte -1 -> 80x25x16 couleurs en texte -2 -> 80x50x16 couleurs en texte -3 -> 100x50x16 couleurs en texte -4 -> 100x60x16 couleurs en texte -5 -> 320x200x256 couleurs en graphique -6 -> 320x400x256 couleurs en graphique -7 -> 320x480x256 couleurs en graphique -8 -> 360x480x256 couleurs en graphique -9 -> 400x600x256 couleurs en graphique - -Les modes sont généralement utilisable avec une carte VGA 256ko, mais la plupart surexploitent le contrôleur vidéo donc ne fonctionne pas toujours. L’utilisation des fonctions caractères est disponible en mode graphique par l’usage de polices émulés mais beaucoup de bugs sont encore présent. - - -Paramètres -d’entrée AH=0 -AL - -Données en sortie Flag Carry - -Getvideomode - - -Retourne le mode vidéo courant a dans AL. - -Paramètres -d’entrée AH=1 - - -Données en sortie AL - -Getvideomode - - -Efface l’écran en mode graphique ou texte. - -Paramètres -d’entrée AH=2 - - -Données en sortie - -Setfont - - -Active la police de numéro CL parmi les 8 disponibles. - -Paramètres -d’entrée AH=3 -CL - -Données en sortie - -Getfont (PAS ENCORE IMPLEMENTE) - - -Récupère en CL le N° de police actif. - -Paramètres -d’entrée AH -CL - -Données en sortie - - -Loadfont - - -Charge une police pointée par DS:SI dans la carte vidéo sous le n° de police BL. La taille en hauteur de la police (en pixel) doit être renseigné dans CL Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=4 -DS -SI -CL - -Données en sortie Flag Carry - -Showspace - - -Affiche un espace à l’écran après le curseur. - -Paramètres -d’entrée AH=5 - - -Données en sortie - -Showline - - -Affiche un retour a la ligne à l’écran après le curseur. - -Paramètres -d’entrée AH=6 - - -Données en sortie - -Showchar - - -Affiche un caractère dont le code ASCII est contenu dans DL à l’écran après le curseur. - -Paramètres -d’entrée AH=7 -DL - -Données en sortie - - -Showint - - -Affiche le nombre entier contenu dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=8 -EDX - -Données en sortie - -Showsigned - - -Affiche le nombre entier signé contenu dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=9 -EDX - -Données en sortie - -Showhex - - -Affiche le nombre hexadécimal contenu dans EDX et de taille CX bits à l’écran après le curseur. - -Paramètres -d’entrée AH=10 -EDX -CX - -Données en sortie - -ShowBin - - -Affiche le nombre binaire contenu dans EDX et de taille CX bits à l’écran après le curseur. - -Paramètres -d’entrée AH=11 -EDX -CX - -Données en sortie - -ShowString - - -Affiche la chaîne de caractère (type fixe) pointée par DS:SI à l’écran après le curseur. - -Chaîne de type fixe : - -Chaine db 24,‘c un chaine de type fixe’ - -Paramètres -d’entrée AH=12 -DS -SI - -Données en sortie - -ShowString0 - - -Affiche la chaîne de caractère (type zéro terminal) pointée par DS:SI à l’écran après le curseur. - -Chaîne de type zéro terminal: - -Chaine db ‘c un chaine de type zéro terminal’,0 - -Paramètres -d’entrée AH=13 -DS -SI - -Données en sortie - -Showchartat - - -Réalise la même fonction que la fonction showchar en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=14 -DL -BL BH - -Données en sortie - -Showintat - - -Réalise la même fonction que la fonction showint en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=15 -EDX -BL BH - -Données en sortie - -Showsignedat - - -Réalise la même fonction que la fonction showsigned en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=16 -EDX -BL BH - -Données en sortie - -Showhexat - - -Réalise la même fonction que la fonction showhex en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=17 -EDX -CX -BL BH - -Données en sortie - -Showbinat - - -Réalise la même fonction que la fonction showbin en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=18 -EDX -CX -BL BH - -Données en sortie - -Showstringat - - -Réalise la même fonction que la fonction showstring en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=19 -DS -SI -BL BH - -Données en sortie - -Showstring0at - - -Réalise la même fonction que la fonction showstring0 en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=20 -DS -SI -BL BH - -Données en sortie - -Setcolor - - -Change la couleur courante (attributs) pour les opérations textes a celle spécifié dans CL - -Paramètres -d’entrée AH=21 -CL - -Données en sortie - -Setcolor - - -Récupère dans CL la couleur courante (attributs) pour les opérations textes. - -Paramètres -d’entrée AH=22 - - -Données en sortie CL - -Setstyle (PAS ENCORE IMPLEMENTE) - - -Change le style (transparent ou non) courant pour les opérations graphique a celui spécifié dans CL - -Paramètres -d’entrée AH -CL - -Données en sortie - -Getstyle (PAS ENCORE IMPLEMENTE) - - -Récupère dans CL le style courant (transparent ou non) pour les opérations graphique. - -Paramètres -d’entrée AH - - -Données en sortie CL - -Scrolldown - - -Défile l’écran texte ou graphique de CX caractères vers le haut. - -Paramètres -d’entrée AH=23 -CX - -Données en sortie - -Getxy - - -Renvoie en BH les coordonnées x du curseur texte et en BL les coordonnées y du curseur texte. - -Paramètres -d’entrée AH=24 - - -Données en sortie BH BL - -Setxy - - -Fixe les coordonnées x du curseur texte a BH et les coordonnées y du curseur texte a L. - -Paramètres -d’entrée AH=25 -BH BL - -Données en sortie - -SaveScreen - - -Sauvegarde le contenu de l’écran dans un bloc mémoire appelé /vgascreen lié a l’application appelante. -Paramètres -d’entrée AH=26 - - -Données en sortie - -RestoreScreen - - -Restaure le contenu de l’écran précédemment sauvegardé dans un bloc mémoire. -Paramètres -d’entrée AH=27 - - -Données en sortie - -Page1to2 - - -Copie le contenu de la page vidéo n°1 dans la page vidéo n°2. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=28 - -Données en sortie - -Page2to1 - - -Copie le contenu de la page vidéo n°2 dans la page vidéo n°1. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=29 - -Données en sortie - -Xchgpage - - -Echange le contenu de la page vidéo n°2 dans la page vidéo n°1. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=30 - -Données en sortie - -Savepage1 - - -Sauvegarde le contenu de l’écran dans un bloc mémoire appelé /vgapage1 lié a l’application appelante. -Paramètres -d’entrée AH=31 - -Données en sortie - -Changelineattr (VA ETRE SUPPRIMER) - - -Modifie la couleur de la ligne N°DI a l’écran a celle contenue dans AL. -Paramètres -d’entrée AH=32 -AL -DI - -Données en sortie - -Waitretrace - - -Synchronisation avec la retrace verticale. -Paramètres -d’entrée AH=33 - - -Données en sortie - -Getvgainfos - - -Renvoie un bloc de donnée en ES:DI contenant l'état de la carte graphique. - -lines db 0 -columns db 0 -x db 0 -y db 0 -xy dw 0 -colors db 7 -mode db 0FFh -pagesize dw 0 -pages db 0 -font db 0 -graphic db 0 -xg dw 0 -yg dw 0 -style dw 0 -nbpage db 0 -pagesshowed db 0 -plane db 0 -xyg dw 0 -linesize dw 0 -adress dw 0 -base dw 0 -scrolling db 1 -Paramètres -d’entrée AH=34 -ES -SI - -Données en sortie - -Loadbmppalet - - -Charge la palette (DAC) du BMP pointée par DS:SI. -Paramètres -d’entrée AH=35 -DS -SI - -Données en sortie - -Showbmp - - -Affiche le BMP pointée par DS:SI en X:BX, Y:CX. -Paramètres -d’entrée AH=36 -DS -SI -BX -CX - -Données en sortie - -Viewbmp - - -Affiche le BMP pointée par DS:SI en X:BX, Y:CX avec la préparation de la palette. -Paramètres -d’entrée AH=3 -DS -SI -BX -CX - -Données en sortie - -Savedac - - -Sauvegarde le contenu de la palette (DAC) dans un bloc mémoire appelé /vgadac lié a l’application appelante. -Paramètres -d’entrée AH=38 - - -Données en sortie - -Savedac - - -Restaure le contenu de la palette (DAC) précédemment sauvegardé dans un bloc mémoire. -Paramètres -d’entrée AH=39 - - -Données en sortie - -Savestate - - -Sauvegarde l’etat complet de la carte graphique dans un bloc mémoire appelé /vga lié a l’application appelante. FONCTIONNE PEUT ETRE EN MODE GRAPHIQUE. -Paramètres -d’entrée AH=40 - - -Données en sortie - -Restorestate - - -Restaure l’etat complet de la carte graphique précédemment sauvegardé dans un bloc mémoire. FONCTIONNE PEUT ETRE EN MODE GRAPHIQUE. -Paramètres -d’entrée AH=41 - - -Données en sortie - -EnableScroll - - -Active le défilement automatique de l’écran lors de dépassements. -Paramètres -d’entrée AH=42 - - -Données en sortie - -DisableScroll - - - -Desactive le défilement automatique de l’écran lors de dépassements. -Paramètres -d’entrée AH=43 - - -Données en sortie - -Showdate - - -Affiche la date contenue dans DX à l’écran après le curseur. - -Paramètres -d’entrée AH=44 -DX - -Données en sortie - -Showtime - - -Affiche l’heure contenue dans à l’écran après le curseur. - -Paramètres -d’entrée AH=45 -DX - - -Données en sortie - -Showname - - -Affiche le nom de fichier pointé par DS:SI à l’écran après le curseur. - -Paramètres -d’entrée AH=46 -DS -SI - -Données en sortie - -Showattr - - -Affiche les attributs fichiers contenus dans DL à l’écran après le curseur. - -Paramètres -d’entrée AH=47 -DL - -Données en sortie - -Showsize - - -Affiche le la taille en octets (et multiples) contenue dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=48 -EDX - -Données en sortie - -Getchar - - -Renvoie le caractère situé sous le curseur dans DL. - -Paramètres -d’entrée AH=49 - - -Données en sortie DL - -Setxyg (PAS ENCORE IMPLEMENTE) - - -Change les coordonnées du curseur graphique a X:BX,Y:CX. -Paramètres -d’entrée AH -BX CX - -Données en sortie - -Getxyg (PAS ENCORE IMPLEMENTE NI ECRIT) - - -Récupère les coordonnées du curseur graphique a X:BX,Y:CX. -Paramètres -d’entrée AH - - -Données en sortie BX CX - -Showpixel (PAS ENCORE IMPLEMENTE) - - -Affiche un pixel de couleur AL en X:BX,Y:CX. -Paramètres -d’entrée AH -BX CX -AL - -Données en sortie - -Getpixel (PAS ENCORE IMPLEMENTE) - - -Récupère la couleur du pixel en X:BX,Y:CX dans AL. -Paramètres -d’entrée AH -BX CX - - -Données en sortie AL - -- Interruption 49h - -Mbinit - - -Initialise les blocs de mémoire pour une utilisation futur des fonction MBs (inutile car le système le réalise au boot). Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=0 - - -Données en sortie Flag Carry - -Mbfree - - -Libère le bloc de mémoire GS ainsi que tout les sous blocs de mémoire lié (fils). Un bloc de mémoire considéré résident ou un sous bloc résident ne sera pas libéré. Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=1 -GS - -Données en sortie Flag Carry - -Mbcreate - - -Crée un bloc de CX caractères (octets) et de nom DS :SI. Retourne en GS le bloc de mémoire alloué et met le flag carry à 1 en cas d’erreur. -Paramètres -d’entrée AH=2 -DS -SI - -Données en sortie GS -Flag Carry - -Mbresident - - -Met le bloc GS en situation de bloc mémoire résident (non libérable). - -Paramètres -d’entrée AH=3 -GS - -Données en sortie - -Mbget - - -Renvoie en GS l’adresse du bloc mémoire situé en CX ème position. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=4 - - -Données en sortie GS -Flag Carry - -Mbfind - - -Renvoie en GS le bloc de mémoire dont le nom correspond a la chaîne de caractère situé en DS:SI. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=5 -DS -SI - -Données en sortie GS -Flag Carry - -Mbchown - - -Change le proprietaire (père) du bloc de mémoire GS a celui precisé par DX. - -Paramètres -d’entrée AH=6 -GS -DX - -Données en sortie Flag Carry - -Mballoc - - -Alloue un bloc de CX caractères (octets) pour le processus (programme) qui le demande. Retourne en GS le bloc de mémoire alloué et met le flag carry à 1 en cas d’erreur. -Paramètres -d’entrée AH=7 -CX - -Données en sortie GS -Flag Carry - -Mbclean - - -Nettoie un peu la mémoire pour fonctionner des blocs de mémoire libre contiguë. Généralement inutile car géré par le systeme. -Paramètres -d’entrée AH=8 - - -Données en sortie Flag Carry - -Mbfindsb - - -Renvoie en GS le sous bloc de mémoire dont le nom correspond a la chaîne de caractère situé en DS:SI et dont le propriétaire est DX. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=9 -DS -SI -DX - -Données en sortie Flag Carry - -- Interruption 74h - -Cmdmouse - - -Envoie une commande AL à la souris via contrôleur clavier -Paramètres -d’entrée AH=0 -AL - -Données en sortie - -Cmdmouse2 - - -Envoie une commande type 2 AL à la souris via contrôleur clavier -Paramètres -d’entrée AH=1 -AL - -Données en sortie - -Detectmouse - - -Détecte et initialise une souris de type PS/2. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=2 -AL - -Données en sortie Flag Carry - -Getmouse - - -Envoie en BX,CX les coordonnées virtuelles de la souris (respectivement X et Y) ainsi qu’en DL l’état des boutons. - -Paramètres -d’entrée AH=3 - - -Données en sortie BX -CX -DL - -Getmousescreen - - -Envoie en BX,CX les coordonnées écran de la souris (respectivement X et Y) ainsi qu’en DL l’état des boutons. - -Paramètres -d’entrée AH=4 - - -Données en sortie BX -CX -DL - -Configmouse - - -Configure la vélocité de la souris dans CL et dans AH, AL les sphères X et Y. -Paramètres -d’entrée AH=5 -AH AL -CL - -Données en sortie - - - -A suivre pour les autres ressources…. (et avec exemples !) - -En cas de problèmes - - Si des bugs surviennent ou si COS2000 ne veut pas s'installer, veuillez s'il vous plaît m'envoyer un E Mail à : - - mailto:nicolas@palon.fr - -COS2000 n'exploite pas les disques durs, il est donc improbable qu'il altère vos données ! diff --git a/MAKEFILE b/MAKEFILE deleted file mode 100644 index 9ce86cb..0000000 --- a/MAKEFILE +++ /dev/null @@ -1,59 +0,0 @@ -all: - cd lib - make - cd .. - - cd noyau - make - cd .. - - cd install - make - cd .. - - cd commande - make - cd .. - - cd programs - make - cd .. - -install: - if not exist data mkdir data - copy noyau\systeme.sys data - copy noyau\boot.bin data - copy commande\commande.ce data - copy lib\*.lib data - copy programs\*.ce data - copy programs\exem-lib.lib data - copy programs\cos.rip data - copy install\setup.com . - -copy: clean all - copy noyau\systeme.sys b: - copy commande\*.ce b: - copy lib\*.lib b: - copy programs\*.ce b: - copy programs\*.lib b: - -clean: - cd lib - make clean - cd .. - - cd noyau - make clean - cd .. - - cd install - make clean - cd .. - - cd commande - make clean - cd .. - - cd programs - make clean - cd .. \ No newline at end of file diff --git a/SCREENSHOTS.md b/SCREENSHOTS.md deleted file mode 100644 index d4f0e9e..0000000 --- a/SCREENSHOTS.md +++ /dev/null @@ -1,13 +0,0 @@ -![logo](https://github.com/dahut87/cos2000v1/raw/master/Graphisme/logo.png) - -## Copies d'écran de COS2000 -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/bootnew.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/chargement.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/dir.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/editeur.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/gestionnaire.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/installation.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/interpreteur.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/logo.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/pci.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/video.jpg) diff --git a/commande/MAKEFILE b/commande/MAKEFILE deleted file mode 100644 index 88ba04d..0000000 --- a/commande/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: commande.ce - -commande.ce: commande.obj - $(lnk) commande.obj commande.ce - -commande.obj: commande.asm - $(asm) commande.asm - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/commande/commande.asm b/commande/commande.asm deleted file mode 100644 index 0c4c802..0000000 --- a/commande/commande.asm +++ /dev/null @@ -1,1191 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\fat.h" -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\pci.h" -include "..\include\cpu.h" - -org 0h - -start: -header exe <,1,0,,,offset imports,,offset realstart> - -realstart: - call [cs:print],offset msginit - xor bp,bp -replay: - call [cs:addline] -noret: - call [cs:addline] - mov di,offset dir - call [cs:getdir],di - call [cs:print],di - call [cs:print],offset prompt - mov di,offset buffer -waitchar: - xor ax,ax - int 16h - call convertfr - cmp ah,59 - jne norr - cmp bp,0 - je waitchar - call [print],[word ptr cs: bp] - call [copy],[word ptr cs: bp],di - call [getlength],di - add di,ax - jmp waitchar -norr: - cmp al,0dh ;entrée - je entere - cmp al,08h ;backspace - je backspace - cmp al,27 ;echap - je escape - cmp al,' ' - jb waitchar - cmp di,offset buffer+256 - je waitchar - mov [di],al - inc di - call [cs:showchar],ax - jmp waitchar -escape: - cmp di,offset buffer - je waitchar - call [cs:getxy] - mov dx,offset buffer - mov cx,di - sub cx,dx - js waitchar - je waitchar - sub ah,cl - mov cl,ah - xor ah,ah - xor ch,ch - call [cs:setxy],cx,ax - mov di,offset buffer - mov [byte ptr di],0 - jmp waitchar -backspace: - cmp di,offset buffer - je waitchar - call [cs:getxy] - dec ah - mov cl,ah - xor ah,ah - xor ch,ch - call [cs:setxy],cx,ax - call [cs:showchar],' ' - call [cs:setxy],cx,ax - dec di - mov [byte ptr di],0 - jmp waitchar -entere: - mov [byte ptr di],0 - cmp di,offset buffer - je noret - mov si,offset temp - call [cs:addline] - call [cs:getitem],offset buffer,si,0,' ' - call [cs:uppercase],si - mov bx,offset commands - xor bp,bp - xor dx,dx -tre: - mov di,[bx] - cmp di,0 - je error - call [cs:evalue],si,di - cmp ax,dx - jb noadd - mov dx,ax - mov bp,bx -noadd: - call [cs:cmpstr],si,di - je strisok - add bx,8 - jmp tre -strisok: - mov di,offset temp - call [cs:copy],offset buffer,di - call [cs:uppercase],di - xor cx,cx - inc cx - call [cs:getpointeritem],di,cx,' ' - mov di,ax - cmp [byte ptr di-1],0 - jne nopod - mov [byte ptr di],0 -nopod: - call [cs:checksyntax],di,[word ptr bx+4],' ' - jc errorprec - mov bx,[bx+2] - call bx - jmp replay -error: - mov di,offset buffer - call [cs:searchchar],di,'.' - je noaddext - call [cs:concat],offset extcom,di -noaddext: - call [cs:execfile],di - jc reallyerror - xor bp,bp - jmp replay -reallyerror: - push [word ptr cs: bp] - push offset error_syntax - call [cs:print] - jmp replay -errorprec: - push offset derror - call [cs:print] - jmp replay - -code_exit: - pop ax - retf - -code_version: - call [cs:print],offset version_text - ret - -version_text db 'Cos 2000 version 1.3.2Fr par \c04MrNop\c07',0 - -code_cls: - call [cs:clearscreen] - ret - -code_reboot: - push 0ffffh - push 00000h - retf - -code_command: - call [cs:print],offset def - mov bx,offset commands -showalls: - push [word ptr bx+4] - push [word ptr bx+6] - push [word ptr bx] - call [cs:print],offset commandes - add bx,8 - cmp [word ptr bx],0 - jne showalls -endoff: - ret - -def db '\c02Liste des commandes internes\l\l\c07',0 -commandes db '%0 \h10:\h12%0 \h70%0\l',0 - -code_detect: - call [cs:print],offset msg_cpu_detect - call [cs:cpuinfo],offset thecpu - call [cs:setinfo],offset thecpu,offset temp - call [cs:print],offset msg_ok2 - push offset temp - xor eax,eax - mov al,[thecpu.family] - push eax - mov al,[thecpu.models] - push eax - mov al,[thecpu.stepping] - push eax - push offset thecpu.names - push offset thecpu.vendor - call [cs:print],offset msg_cpu_detect_inf - call [cs:print],offset msg_pci - call [cs:pciinfo],offset thepci - jc nopci - call [cs:print],offset msg_ok2 - xor eax,eax - mov al,[thepci.maxbus] - push eax - mov al,[thepci.version_minor] - push eax - mov al,[thepci.version_major] - push eax - call [cs:print],offset msg_pci_info - call [cs:print],offset msg_pci_enum - xor bx,bx - xor cx,cx - xor si,si -searchpci: - call [cs:getcardinfo],bx,cx,si,offset temp - jc stopthis - mov al,[(pcidata offset temp).subclass] - push ax - mov al,[(pcidata offset temp).class] - push ax - call [cs:getpcisubclass] - push dx - push ax - mov al,[(pcidata offset temp).class] - xor ah,ah - push ax - call [cs:getpciclass] - push dx - push ax - push 4 - push esi - push 4 - push ecx - push 4 - push ebx - mov ax,[(pcidata offset temp).device] - push eax - mov ax,[(pcidata offset temp).vendor] - push eax - call [cs:print],offset msg_pci_card - inc si - cmp si,7 - jbe searchpci -stopthis: - xor si,si - inc cx - cmp cx,31 - jbe searchpci - xor cx,cx - inc bx - cmp bx,16 - jbe searchpci - jmp next -nopci: - call [cs:print],offset msg_echec2 -next: - call [cs:detectvmware] - jne novirtual - call [cs:print],offset msg_vmware -novirtual: - ret - -thepci pciinf <> -thecpu cpu <> - -msg_ok2 db "\h70 [\c02 Ok \c07]\l",0 -msg_echec2 db "\h70 [\c0CPasser\c07]\l",0 -msg_cpu_detect db "Dectection du processeur",0 -msg_cpu_detect_inf db " -Fondeur : %0\l -Modele : %0\l -Revision : %u\l -Version : %u\l -Famille : %u\l -Technologies: %0\l",0 -msg_pci db "Detection des systemes PCI",0 -msg_pci_info db " -Version : %yB.%yB\l -Numero bus max: %u\l",0 -msg_pci_enum db " -Enumeration des peripheriques PCI:\l" - db " |Vendeur|Modele|Bus |Dev.|Func|Classe.Sous-classe\l",0 -msg_pci_card db " | %hW | %hW |%w|%w|%w|%0P.%0P\l",0 -msg_vmware db "\c04 VMWare a ete detecte !!!\c07\l",0 - -code_mode: - call [cs:gettypeditem],di,0,' ' - and al,1111b - call [cs:setvideomode],ax - call [cs:clearscreen] - ret - -code_dir: - call [cs:getserial] - push eax - mov si,offset nomdisque - call [cs:getname],si - push si - push offset present - call [cs:print] - xor ecx,ecx - mov di,offset bufferentry - call [cs:findfirstfile],di - jc nofiles -go: - push [word ptr (find di).result.fileattr] - push [(find di).result.filesize] - push [(find di).result.filetime] - push [(find di).result.filedate] - push [(find di).result.filetimecrea] - push [(find di).result.filedatecrea] - lea bx,[(find di).result.filename] - push bx - push offset line - call [cs:print] - inc ecx - call [cs:findnextfile],di - jnc go -nofiles: - push ecx - push offset filess - call [cs:print] - ret - -nomdisque db 13 dup (0) -bufferentry db 512 dup (0) -present db '\c02Le volume insere est nomme %0, Numero de serie : %hD\l\l',0 - -line db '\c07%n %d %t %d %t %z %a\l',0 -filess db '\l\l\c02%u Fichier(s) au total\l\c07',0 - -code_cd: - call [cs:gettypeditem],di,0,' ' - push ax - push offset changing - call [cs:print] - call [cs:changedir],ax - jnc okchange - push offset errorchanging - call [cs:print] -okchange: - ret - -changing db 'Changement de repertoire vers %0\l',0 -errorchanging db '\c04Impossible d''atteindre ce dossier\c07',0 - -code_kill: - call [cs:gettypeditem],di,0,' ' - push ax - push offset killing - call [cs:print] - call [cs:mbfind],ax - jc nochanged - call [cs:mbfree],ax - jnc okchanged -nochanged: - call [cs:print],offset errorkilling -okchanged: - ret - -killing db 'Fermeture du processus %0\l',0 -errorkilling db '\c04Impossible de fermer ce processus\c07',0 - -code_stack: -push ebp -push esp -push ss -push ss -call [cs:print],offset stackshow -mov cx,12 ;12 derniers éléments -xor esi,esi -mov si,sp -sub si,2*12 -showloop: -push [dword ptr ss:si] -push esi -push ss -push ss -call [cs:print],offset itemshow -inc si -inc si -cmp si,sp -jne notspshow -call [cs:print],offset stresp -notspshow: -cmp si,bp -jne nextshow -call [cs:print],offset strebp -nextshow: -dec cx -jnz showloop -ret - -stackshow db '\l\c02Vidage de la pile systeme\l\l\c07' - db 'Segment SS : 0x%hW\l' - db 'Pointeur ESP : 0x%hD\l' - db 'Pointeur EBP : 0x%hD\l' - db 'Seg :Adr | Donnees',0 -itemshow db '\l0x%hW:0x%hW | 0x%hW',0 - -strebp db '<-- BP',0 -stresp db '<-- SP',0 - -code_dump: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfind - mov fs,ax - dec ax - dec ax - mov gs,ax - cmp [word ptr fs:0x0],'EC' - jne notace2 - push offset oui ;CE? str0 2 - jmp suitelikeace2 -notace2: - push offset non -suitelikeace2: - cmp [word ptr gs:mb.isnotlast],true - je notlast2 - push offset oui ;CE? str0 2 - jmp suitelikelast2 -notlast2: - push offset non -suitelikelast2: - mov dx,gs - push edx ;Emplacement memoire hex 2 -;parent - cmp [gs:mb.reference],0 - jne nextdetect2 - push cs - push offset none ;parent lstr0 2x2 - add bx,[gs:mb.sizes] - jmp suitemn2 -nextdetect2: - mov dx,[gs:mb.reference] - dec dx - dec dx - push dx ;parent lstr0 2x2 - push offset (mb).names -suitemn2: - cmp [gs: mb.isresident],true - jne notresident2 - push offset oui ;resident str0 2 - jmp suitelistmcb2 -notresident2: - push offset non ;resident str0 2 -suitelistmcb2: - xor edx,edx - mov dx,[gs: mb.sizes] - shl edx,4 - push edx - push gs ;nom lstr0 2x2 - push offset (mb).names - push offset dumpshow ;ligne - call [cs:print] - cmp [word ptr fs:0x0],'EC' - jne endofdumpformoment - push [dword ptr fs:exe.starting] - push fs - push fs - push [dword ptr fs:exe.sections] - push fs - push fs - push [dword ptr fs:exe.imports] - push fs - push fs - push [dword ptr fs:exe.exports] - push fs - push fs - cmp [fs: exe.compressed],true - jne notcompressed - push offset oui - jmp suiteiscompressed -notcompressed: - push offset non -suiteiscompressed: - push [dword ptr fs:exe.checksum] - push [dword ptr fs:exe.major] - call [cs:print],offset dumpshowce -endofdumpformoment: - ret -notmbfind: - call [cs:print],offset errornotmbfind - ret - -errornotmbfind db '\c04Impossible de trouver le bloc specifie\l\l\c07',0 - - -dumpshow db '\l\c02Dump du bloc de memoire nomme %0P\l\l' - db '\c02-----------------------------\l' - db '\c02Informations du bloc memoire\c07\l' - db 'Taille du bloc reserve : %u\l' - db 'Bloc resident en memoire : %0\l' - db 'Parent du bloc : %0P\l' - db 'Adresse du bloc memoire : 0x%hW:0x0000\l' - db 'Dernier bloc en memoire : %0\l' - db 'Heberge un format CE : %0\l',0 -dumpshowce db '\c02-----------------------------\l' - db 'Informations du bloc executable\c07\l' - db 'Version de l''executable : %u\l' - db 'Somme de controle : %hD\l' - db 'Compression du code : %0\l' - db 'Exportation de fonctions : 0x%hW:0x%hW\l' - db 'Importation de fonctions : 0x%hW:0x%hW\l' - db 'Sections de donnees : 0x%hW:0x%hW\l' - db 'Point d''entree du code : 0x%hW:0x%hW\l',0 - - -code_sections: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindssections - jmp haveatargetsections -notmbfindssections: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetsections: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.sections] - cmp si,0 - je errornosections - xor edx,edx - call [cs:print],offset rets -showallsections: - add si,4 - push fs - push si - call [cs:print],offset functions - inc edx -findnextsections: - inc si - cmp [byte ptr fs:si],0 - jne findnextsections - cmp [dword ptr fs:si],0 - je finishsections - inc si - jmp showallsections -finishsections: - push edx - call [cs:print],offset allsections - ret - -errornosections: - call [cs:print],offset errornosection - ret - -allsections db '\c02\lIl y avait %u sections dans le bloc ou fichier\l\c07',0 -errornosection db '\c02Aucune section dans le bloc ou fichier\l\c07',0 - -code_exports: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindsimports - jmp haveatargetexports -notmbfindsexports: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetexports: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.exports] - cmp si,0 - je errornoexports - xor edx,edx - call [cs:print],offset rets -showallexports: - push fs - push si - call [cs:print],offset functions - inc edx -findnextexports: - inc si - cmp [byte ptr fs:si],0 - jne findnextexports - add si,3 - cmp [dword ptr fs:si],0 - je finishexports - jmp showallexports -finishexports: - push edx - call [cs:print],offset allexports - ret - -errornoexports: - call [cs:print],offset errornoexport - ret - -allexports db '\c02\lIl y avait %u exportations dans le bloc ou fichier\l\c07',0 -errornoexport db '\c02Aucune exportation dans le bloc ou fichier\l\c07',0 - - -code_imports: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindsimports - jmp haveatargetimports -notmbfindsimports: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetimports: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.imports] - cmp si,0 - je errornoimports - xor edx,edx - call [cs:print],offset rets -showallimports: - push fs - push si - call [cs:print],offset functions - inc edx -findnextimports: - inc si - cmp [byte ptr fs:si],0 - jne findnextimports - add si,5 - cmp [dword ptr fs:si],0 - je finishimports - jmp showallimports -finishimports: - push edx - call [cs:print],offset allimports - ret - -errornoimports: - call [cs:print],offset errornoimport - ret - -notmbfindall: - call [cs:print],offset errornotmborfilefind - ret - -errornotace2: - call [cs:print],offset errornotcefind - ret - -functions db '%0P\l',0 -rets db '\l\l',0 -allimports db '\c02\lIl y avait %u importations dans le bloc ou fichier\l\c07',0 -errornoimport db '\c02Aucune importation dans le bloc ou fichier\l\c07',0 -errornotcefind db '\c04Le bloc ou le fichier spécifié n''est pas CE\l\c07',0 -errornotmborfilefind db '\c04Impossible de trouver le bloc ou le fichier specifie\l\c07',0 - -code_regs: -call [cs:savecontext],offset allregs -push 6 -push eax -push eax -mov ax,[word ptr allregs.sss] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sgs] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sfs] -push 6 -push eax -push eax -mov ax,[word ptr allregs.ses] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sds] -push 6 -push eax -push eax -mov ax,[word ptr allregs.scs] -xor eax,eax -push 10 -pushd [dword ptr allregs.seip] -pushd [dword ptr allregs.seip] -push 10 -pushd [dword ptr allregs.sesp] -pushd [dword ptr allregs.sesp] -push 10 -pushd [dword ptr allregs.sebp] -pushd [dword ptr allregs.sebp] -push 10 -pushd [dword ptr allregs.sedi] -pushd [dword ptr allregs.sedi] -push 10 -pushd [dword ptr allregs.sesi] -pushd [dword ptr allregs.sesi] -push 10 -pushd [dword ptr allregs.sedx] -pushd [dword ptr allregs.sedx] -push 10 -pushd [dword ptr allregs.secx] -pushd [dword ptr allregs.secx] -push 10 -pushd [dword ptr allregs.sebx] -pushd [dword ptr allregs.sebx] -push 10 -pushd [dword ptr allregs.seax] -pushd [dword ptr allregs.seax] -push 10 -pushd [dword ptr allregs.seflags] -pushd [dword ptr allregs.seflags] -call [cs:print],offset registershow -ret - -registershow db '\l\c02Liste des registres du Microprocesseur\l\l\c07' - db '\c04CPU\h30FPU\c07\l' - db 'EFGS: 0x%hD : %w |\h32ST(0): ??\l' - db 'EAX : 0x%hD : %w |\h32ST(1): ??\l' - db 'EBX : 0x%hD : %w |\h32ST(2): ??\l' - db 'ECX : 0x%hD : %w |\h32ST(3): ??\l' - db 'EDX : 0x%hD : %w |\h32ST(4): ??\l' - db 'ESI : 0x%hD : %w |\h32ST(5): ??\l' - db 'EDI : 0x%hD : %w |\h32ST(6): ??\l' - db 'EBP : 0x%hD : %w |\h32ST(7): ??\l' - db 'ESP : 0x%hD : %w |\h32\l' - db 'EIP : 0x%hD : %w |\h32\l' - db 'CS : 0x%hW : %w |\h32\l' - db 'DS : 0x%hW : %w |\h32\l' - db 'ES : 0x%hW : %w |\h32\l' - db 'FS : 0x%hW : %w |\h32\l' - db 'GS : 0x%hW : %w |\h32\l' - db 'SS : 0x%hW : %w |\h32\l',0 - - -allregs regs <> - -code_irqs: -call [cs:mbfind],offset interruptionbloc -jc erroronint -call [cs:print],offset irqmsg1 -mov es,ax -xor ebx,ebx -intoirq: -xor eax,eax -mov al,[bx+offset irqmap] -mov dx,size ints -mul dx -mov si,ax -pushd [dword ptr es:(ints si).vector1.data.off] -pushd [dword ptr es:(ints si).vector1.data.seg] -call [cs:isrequestirq],bx -jc requested -push ' ' -jmp suiterequested -requested: -push 'X' -suiterequested: -call [cs:isinserviceirq],bx -jc inservice -push ' ' -jmp suiteinservice -inservice: -push 'X' -suiteinservice: -call [cs:isenableirq],bx -jc activatemat -push ' ' -jmp suiteactivatemat -activatemat: -push 'X' -suiteactivatemat: -cmp [es:(ints si).activated],1 -je activate2 -push ' ' -jmp suiteactivate2 -activate2: -push 'X' -suiteactivate2: -cmp [es:(ints si).locked],1 -je verrouille2 -push ' ' -jmp suiteverrouille2 -verrouille2: -push 'X' -suiteverrouille2: -pushd [dword ptr es:(ints si).calledlow] -pushd [dword ptr es:(ints si).calledhigh] -pushd [dword ptr es:(ints si).launchedlow] -pushd [dword ptr es:(ints si).launchedhigh] -push 3 -xor eax,eax -mov al,[bx+offset irqmap] -push eax -push 3 -push ebx -call [cs:print],offset irqmsg2 -inc bl -cmp bl,16 -jb intoirq -ret - - -irqmap db 8,9,10,11,12,13,14,15,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77 -irqmsg1 db '\l\c02Listes des IRQs\c07\l\l' - db 'IRQ | Int | Appels | Executions |Ver|Act|IMR|ISR|IRR| Vecteur 1 \l',0 -irqmsg2 db '%w | %w | 0x%hW%hD | 0x%hW%hD | %c | %c | %c | %c | %c | 0x%hW:0x%hW\l',0 - -code_int: -call [cs:mbfind],offset interruptionbloc -jc erroronint -mov es,ax -call [cs:gettypeditem],di,0,' ' -xor edi,edi -mov di,ax -mov cx,size ints -mul cx -mov si,ax -pushd [dword ptr es:(ints si).vector8.data.off] -pushd [dword ptr es:(ints si).vector8.data.seg] -pushd [dword ptr es:(ints si).vector7.data.off] -pushd [dword ptr es:(ints si).vector7.data.seg] -pushd [dword ptr es:(ints si).vector6.data.off] -pushd [dword ptr es:(ints si).vector6.data.seg] -pushd [dword ptr es:(ints si).vector5.data.off] -pushd [dword ptr es:(ints si).vector5.data.seg] -pushd [dword ptr es:(ints si).vector4.data.off] -pushd [dword ptr es:(ints si).vector4.data.seg] -pushd [dword ptr es:(ints si).vector3.data.off] -pushd [dword ptr es:(ints si).vector3.data.seg] -pushd [dword ptr es:(ints si).vector2.data.off] -pushd [dword ptr es:(ints si).vector2.data.seg] -pushd [dword ptr es:(ints si).vector1.data.off] -pushd [dword ptr es:(ints si).vector1.data.seg] -pushd [dword ptr es:(ints si).calledlow] -pushd [dword ptr es:(ints si).calledhigh] -pushd [dword ptr es:(ints si).launchedlow] -pushd [dword ptr es:(ints si).launchedhigh] -cmp [es:(ints si).activated],1 -je activate -push offset oui -jmp suiteactivate -activate: -push offset non -suiteactivate: -cmp [es:(ints si).locked],1 -je verrouille -push offset oui -jmp suiteverrouille -verrouille: -push offset non -suiteverrouille: -push esi -push es -push es -push edi -call [cs:print],offset infosint -ret -erroronint: - call [cs:print],offset errorint -okint: - ret - -interruptionbloc db '/interrupts',0 -errorint db '\c04Le gestionnaire d''interruption n''est pas actif\l\c07',0 -infosint db '\c07Le bloc d''interruption est charge en memoire et le gestionnaire est actif\l\l' - db 'Interruption %u\l' - db 'Pointeur : 0x%hW:0x%hW\l\c07' - db 'Active : %0\l' - db 'Verrouillage : %0\l' - db 'Nombre d''appels : 0x%hD%hD\l' - db 'Nombre de lancements : 0x%hD%hD\l' - db '\c02Vecteur 1 : 0x%hW:0x%hW\l' - db 'Vecteur 2 : 0x%hW:0x%hW\l' - db 'Vecteur 3 : 0x%hW:0x%hW\l' - db 'Vecteur 4 : 0x%hW:0x%hW\l' - db 'Vecteur 5 : 0x%hW:0x%hW\l' - db 'Vecteur 6 : 0x%hW:0x%hW\l' - db 'Vecteur 7 : 0x%hW:0x%hW\l' - db 'Vecteur 8 : 0x%hW:0x%hW\l\c07',0 - -code_refresh: - call [cs:initdrive] - jnc okrefresh - call [cs:print],offset errorrefreshing - ret -okrefresh: - call [cs:getserial] - push eax - mov si,offset nomdisque - call [cs:getname],si - push si - push offset present - call [cs:print] - ret - -errorrefreshing db '\c04Impossible de lire le support',0 -extcom db '.CE',0 - - -code_mem: - call [cs:print],offset msg - xor edx,edx - xor ebx,ebx - xor cx,cx -listmcb: - call [cs:mbget],cx - jc fino - mov fs,ax - dec ax - dec ax - mov gs,ax - inc cx - cmp [word ptr fs:0x0],'EC' - jne notace - push offset oui ;CE? str0 2 - jmp suitelikeace -notace: - push offset non -suitelikeace: - mov dx,fs - push edx ;Emplacement memoire hex 2 -;parent - cmp [gs:mb.reference],0 - jne nextdetect - push cs - push offset none ;parent lstr0 2x2 - add bx,[gs:mb.sizes] - jmp suitemn -nextdetect: - mov dx,[gs:mb.reference] - dec dx - dec dx - push dx ;parent lstr0 2x2 - push offset (mb).names -suitemn: - cmp [gs: mb.isresident],true - jne notresident - push offset oui ;resident str0 2 - jmp suitelistmcb -notresident: - push offset non ;resident str0 2 -suitelistmcb: - xor edx,edx - mov dx,[gs: mb.sizes] - shl edx,4 - push 6 ;decimal 4 + type 2 - push edx - push gs ;nom lstr0 2x2 - push offset (mb).names - push offset line2 ;ligne - call [cs:print] - jmp listmcb -fino: - shl ebx,4 - push ebx - push offset fin - call [cs:print] - ret -oui db "oui",0 -non db "non",0 -line2 db "%0P\h15| %w\h24| %0\h30| %0P\h47| 0x%hW\h56| %0\l",0 -fin db "\l\l\c02%u octets de memoire disponible\l\c07",0 -msg db "\l\c02Plan de la memoire\c07\l\lNom | Taille | Res | Parent | Mem | CE \l",0 -none db "?????",0 - - -;converti le jeux scancode/ascii en fr ax->ax -convertfr: - push dx si - mov si,offset fr -searchtouch: - mov dx,[cs: si] - cmp dx,0 - je endofconv - add si,4 - cmp dx,ax - jne searchtouch - mov ax,[cs: si-2] -endofconv: - pop dx si - ret - -fr: db '1', 02, '&', 02 - db '!', 02, '1', 02 - db '2', 03, '‚', 03 - db '@', 03, '2', 03 - db '3', 04, '"', 04 - db '#', 04, '3', 04 - db '4', 05, 39, 05 - db '$', 05, '4', 05 - db '5', 06, '(', 06 - db '%', 06, '5', 06 - db '6', 07, '-', 07 - db '^', 07, '6', 07 - db '7', 08, 'Š', 08 - db '&', 08, '7', 08 - db '8', 09, '_', 09 - db '*', 09, '8', 09 - db '9', 10, '‡', 10 - db '(', 10, '9', 10 - db '0', 11, '…', 11 - db ')', 11, '0', 11 - db '-', 12, ')', 12 - db '_', 12, 'ø', 12 - db 'Q', 16, 'A', 16 - db 'q', 16, 'a', 16 - db 'W', 17, 'Z', 17 - db 'w', 17, 'z', 17 - db '{', 26, '‰', 26 - db '[', 26, 'ˆ', 26 - db ']', 27, '$', 27 - db '}', 27, 'œ', 27 - db 'A', 30, 'Q', 30 - db 'a', 30, 'q', 30 - db ':', 39, 'M', 39 - db ';', 39, 'm', 39 - db 39, 40, '—', 40 - db '"', 40, '%', 40 - db 00, 40, '%', 40 - db '\', 43, '*', 43 - db '|', 43, 'æ', 43 - db 'Z', 44, 'W', 44 - db 'z', 44, 'w', 44 - db 'm', 50, ',', 50 - db 'M', 50, '?', 50 - db ',', 51, ';', 51 - db '<', 51, '.', 51 - db '.', 52, ':', 52 - db '>', 52, '/', 52 - db '?', 53, 'õ', 53 - db '/', 53, '!', 53 - db '\', 86, '<', 86 - db '|', 86, '>', 86 - db 00, 79h, '~', 03 - db 00, 7ah, '#', 04 - db 00, 7bh, '{', 05 - db 00, 7ch, '[', 06 - db 00, 7dh, '|', 07 - db 00, 7eh, '`', 08 - db 00, 7fh, '\', 09 - db 00, 80h, '^', 10 - db 00, 81h, '@', 11 - db 00, 82h, ']', 12 - db 00, 83h, '}', 13 - db 00, 00, 00, 00 - -commands dw str_exit ,code_exit ,syn_exit ,help_exit -dw str_version,code_version,syn_version,help_version -dw str_cls ,code_cls ,syn_cls ,help_cls -dw str_reboot ,code_reboot ,syn_reboot ,help_reboot -dw str_command,code_command,syn_command,help_command -dw str_mode ,code_mode ,syn_mode ,help_mode -dw str_dir ,code_dir ,syn_dir ,help_dir -dw str_refresh ,code_refresh ,syn_refresh ,help_refresh -dw str_cd ,code_cd ,syn_cd ,help_cd -dw str_mem ,code_mem ,syn_mem ,help_mem -dw str_kill ,code_kill ,syn_kill ,help_kill -dw str_int ,code_int ,syn_int ,help_int -dw str_irqs ,code_irqs,syn_irqs ,help_irqs -dw str_regs ,code_regs,syn_regs ,help_regs -dw str_stack,code_stack,syn_stack,help_stack -dw str_dump,code_dump,syn_dump,help_dump -dw str_detect,code_detect,syn_detect,help_detect -dw str_exports,code_exports,syn_exports,help_exports -dw str_imports,code_imports,syn_imports,help_imports -dw str_sections,code_sections,syn_sections,help_sections -dw 0 - -str_exit db 'QUIT',0 -str_version db 'VERS',0 -str_cls db 'CLEAR',0 -str_reboot db 'REBOOT',0 -str_command db 'CMDS',0 -str_mode db 'MODE',0 -str_dir db 'DIR',0 -str_refresh db 'DISK',0 -str_cd db 'CD',0 -str_mem db 'MEM',0 -str_kill db 'KILL',0 -str_int db 'INT',0 -str_irqs db 'IRQS',0 -str_regs db 'REGS',0 -str_stack db 'STACK',0 -str_dump db 'DUMP',0 -str_detect db 'DETECT',0 -str_exports db 'EXPORTS',0 -str_imports db 'IMPORTS',0 -str_sections db 'SECTIONS',0 - -syn_exit db 0 -syn_version db 0 -syn_cls db 0 -syn_reboot db 0 -syn_command db 0 -syn_mode db 'FFh',0 -syn_dir db 0 -syn_refresh db 0 -syn_cd db '?',0 -syn_mem db 0 -syn_kill db '?',0 -syn_int db 'FFh',0 -syn_irqs db 0 -syn_regs db 0 -syn_stack db 0 -syn_dump db '?',0 -syn_detect db 0 -syn_exports db '?',0 -syn_imports db '?',0 -syn_sections db '?',0 - -help_exit db 'Permet de quitter l''interpreteur',0 -help_version db 'Affiche la version de COS',0 -help_cls db 'Efface l''ecran',0 -help_reboot db 'Redemarre l''ordinateur',0 -help_command db 'Affiche le detail des commandes',0 -help_mode db 'Modifie le mode video en cours',0 -help_dir db 'Affiche le contenu du repertoire courant',0 -help_refresh db 'Lit le support disquette insere',0 -help_cd db 'Change le repertoire courant',0 -help_mem db 'Affiche le plan de la memoire',0 -help_kill db 'Termine le processus cible',0 -help_int db 'Affiche des informations sur l''interruption',0 -help_irqs db 'Affiche des informations sur les IRQs',0 -help_regs db 'Affiche les registres du microprocesseur',0 -help_stack db 'Affiche la pile systeme',0 -help_dump db 'Affiche le contenu de la memoire',0 -help_detect db 'Detecte et Affiche les peripheriques PCI et le CPU',0 -help_exports db 'Affiche toutes les exportations du fichier specifie',0 -help_imports db 'Affiche toutes les importations du fichier specifie',0 -help_sections db 'Affiche toutes les sections du fichier specifie',0 - -derror db '\c04Erreur de Syntaxe !',0 -error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour %0',0 -prompt db '\c07>',0 -msginit db '\m02\e\c07\l\lInterpreteur de commande COS V1.10\lSous license \c05GPL\c07 - Ecrit par \c04MrNop\l\c07Utilisez la commande CMDS pour connaitres les commandes disponibles\l',0 - - -dir db 32 dup (0) -buffer db 256 dup (0) -temp db 256 dup (0) - -importing -use DETECT.LIB,cpuinfo -use DETECT.LIB,setinfo -use DETECT.LIB,pciinfo -use DETECT.LIB,getcardinfo -use DETECT.LIB,getpcisubclass -use DETECT.LIB,getpciclass -use DETECT.LIB,detectvmware -use VIDEO,clearscreen -use VIDEO,setvideomode -use VIDEO,getxy -use VIDEO,setxy -use VIDEO,addline -use VIDEO.LIB,showhex -use VIDEO.LIB,print -use VIDEO.LIB,showchar -use DISQUE,getdir -use DISQUE,getserial -use DISQUE,getname -use DISQUE,findfirstfile -use DISQUE,findnextfile -use DISQUE,execfile -use DISQUE,initdrive -use DISQUE,changedir -use DISQUE,searchfile -use DISQUE,projfile -use SYSTEME,mbget -use SYSTEME,mbfind -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,isenableirq -use SYSTEME,isinserviceirq -use SYSTEME,isrequestirq -use SYSTEME,savecontext -use STR0.LIB,uppercase -use STR0.LIB,evalue -use STR0.LIB,copy -use STR0.LIB,checksyntax -use STR0.LIB,searchchar -use STR0.LIB,concat -use STR0.LIB,getitem -use STR0.LIB,cmpstr -use STR0.LIB,getpointeritem -use STR0.LIB,getlength -use STR0.LIB,gettypeditem -endi diff --git a/contribs/MAKEFILE b/contribs/MAKEFILE deleted file mode 100644 index f9193dc..0000000 --- a/contribs/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -lnk_boot = tlink /x -asm= tasm /t/m5/zi -lnk= tlink /x/t - -all: ex-tasm.com ex-nasm.com - -ex-tasm.com: ex-tasm.asm - $(asm) ex-tasm - $(lnk) ex-tasm - ren ex-tasm.com ex-tasm.com - -ex-nasm.com: ex-nasm.asm - nasm ex-nasm.asm -o ex-nasm.com - -clean: - del *.obj - del *.exe - del *.com - del *.sys - del *.err diff --git a/contribs/ex-nasm.asm b/contribs/ex-nasm.asm deleted file mode 100644 index a73f573..0000000 --- a/contribs/ex-nasm.asm +++ /dev/null @@ -1,27 +0,0 @@ -[bits 16] ;16 bits -[org 0x0] ;Point d'entré en 0h -section .text ;Segment de code - -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw imported ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw realstart - -imported: -db "VIDEO.LIB::print",0 -print dd 0 -endofimport dd 0 - -realstart: - push msg - call far [cs:print] ;Afficher le texte (Showstring0) - xor ax,ax - int 0x16 ;Attendre l'appuie sur une touche - retf ;retour far - -msg db 'Hello World !!',0 - diff --git a/contribs/ex-tasm.asm b/contribs/ex-tasm.asm deleted file mode 100644 index 2c0cc96..0000000 --- a/contribs/ex-tasm.asm +++ /dev/null @@ -1,31 +0,0 @@ -.model tiny ;model tiny (.com) -.486 ;Pour processeur 80486 -Smart ;Optimisations -.code ;Segment de code - -org 0h ;Point d'entré en 0h - -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw imported ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw realstart - -imported: -db "VIDEO.LIB::print",0 -print dd 0 - -start: - push msg - call far [cs:print] ;Afficher le texte (Showstring0) - xor ax,ax - int 16h ;Attendre l'appuie sur une touche - db 0CBH ;retour far - -msg db 'Hello World !!',0 - -end start - diff --git a/doc_origine.pdf b/doc_origine.pdf deleted file mode 100644 index c610cb9c27f795f644861e8a56ff0db29df28cb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143362 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�ztR?w`qrn^koBxi?| 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 diff --git a/include/bmp.h b/include/bmp.h deleted file mode 100644 index 02025f7..0000000 --- a/include/bmp.h +++ /dev/null @@ -1,40 +0,0 @@ -struc bmp_file -bmp_filetype db 'bm' -bmp_filesize dd ? ; taille du fichier -bmp_reserved dd 0 ; toujours 0 -bmp_bitmapoffset dd ? ; offset de l'image -bmp_headersize dd ? ; taille de l'entete en octects -bmp_width dd ? ; largeur en pixels de l'image -bmp_height dd ? ; hauteur en pixels de l'image -bmp_planes dw 1 ; nombre de plan utilisés -bmp_bitsperpixel dw ? ; nombre de bits par pixels -bmp_compression dd ? ; méthode de compression -bmp_sizeofbitmap dd ? ; taille de l'image en octects -bmp_horzresolution dd ? ; resolution horizontale en pixels par mètre -bmp_vertresolution dd ? ; resolution verticale en pixels par mètre -bmp_colorsused dd ? ; nombre de couleur dans la palette si 0: palette entière si bitperpixel<=8 -bmp_colorsimportant dd ? ; nombre de couleurs importantes masques pour les modes de plus de 8 bits par pixels -bmp_redmask dd ? -bmp_greenmask dd ? -bmp_bluemask dd ? -bmp_alphamask dd ? -bmp_colorspacetype dd ? -bmp_redx dd ? -bmp_redy dd ? -bmp_redz dd ? -bmp_greenx dd ? -bmp_greeny dd ? -bmp_greenz dd ? -bmp_bluex dd ? -bmp_bluey dd ? -bmp_bluez dd ? -bmp_gammared dd ? -bmp_gammagreen dd ? -bmp_gammeblue dd ? -ends bmp_file - -;bmp_compression peut prendre les valeurs suivantes: -bmp_comp_uncomp equ 0 ; pas de compression -bmp_comp_rle8 equ 1 ; 8-bit run length encoding -bmp_comp_rle4 equ 2 ; 4-bit tun length encoding -bmp_comp_bfe equ 3 ; bitfields encoding diff --git a/include/cpu.h b/include/cpu.h deleted file mode 100644 index e2dbe43..0000000 --- a/include/cpu.h +++ /dev/null @@ -1,20 +0,0 @@ -struc cpu -vendor db 13 dup(0) ;Chaine 0 du fabriquant -names db 32 dup(0) -stepping db 0 -models db 0 -family db 0 -types db 0 -emodels db 0 -efamily db 0 -mmx db 0 -mmx2 db 0 -sse db 0 -sse2 db 0 -sse3 db 0 -fpu db 0 -now3d db 0 -now3d2 db 0 -htt db 0 -apic db 0 -ends cpu diff --git a/include/divers.h b/include/divers.h deleted file mode 100644 index a8e0063..0000000 --- a/include/divers.h +++ /dev/null @@ -1,2 +0,0 @@ -true equ 1 -false equ 0 diff --git a/include/fat.h b/include/fat.h deleted file mode 100644 index 9b5cb56..0000000 --- a/include/fat.h +++ /dev/null @@ -1,61 +0,0 @@ -struc dpt -steprate&headunload db 0DFh ;Vitesse de progression & mont‚e de la tˆte -dmaflag&headload db 002h ;Etat Dma et temps de descente de la tˆte -delaymotoroff db 025h ;Temps avant extinction moteur -bytepersector db 002h ;Taille des secteurs -sectorpertracks db 000h ;Nombre de secteur par piste -intersectgaplength db 01Bh ;Taille du GAP3 en lecture/‚criture -datalength db 0FFh ;Longueur du transfert de donn‚es -intersectgaplengthf db 054h ;Taille du GAP3 en formatage -formatbyte db 0F6h ;Octet de formatage -headsettlingtime db 000h ;Temps de repos des tˆtes -delaymotornormspeed db 008h ;Temps de mont‚e en vitesse du moteur -ends dpt - -struc entries -filename db 8 dup (0) -filext db 3 dup (0) -fileattr db 0 -filereserved db 0 -filetimecreams db 0 ;(*10 ms) -filetimecrea dw 0 -filedatecrea dw 0 -filedateacc dw 0 -filenotused dw 0 -filetime dw 0 -filedate dw 0 -filegroup dw 0 -filesize dd 0 -ends entries - -;Pour recherches -struct find -files db 13 dup (0) ;le fichier -entryplace dw 0 ;En octet -adressdirectory dw 0 ;En cluster -firstsearch db 1 ;Premiere requete ? -result entries <> -ends find - -struc bootinfo -vendor db 'COS2000A' ;Fabricant + n°série Formatage -sectorsize dw 512 ;octet/secteur -sectorspercluster db 1 ;secteur/cluster -reservedsectors dw 1 ;secteur reserv‚ -fatsperdrive db 2 ;nb de copie de la FAT -directorysize dw 224 ;taille rep racine -sectorsperdrive dw 2880 ;nb secteur du volume si < 32 még -mediadescriptor db 0F0h ;Descripteur de média -sectorsperfat dw 9 ;secteur/FAT -sectorspertrack dw 18 ;secteur/piste -headsperdrive dw 2 ;nb de tˆteb de lecture/écriture -hiddensectorsh dw 0 ;nombre de secteur cach‚s -hiddensectorsl dw 0 ; -sectorperdisk2 dd 0 ;Nombre secteur du volume si > 32 Mo+20h ; the number of sectors -bootdrive db 0 ;Lecteur de d‚marrage -reservedfornt db 0 ;NA -bootsign db 29h ;boot signature 29h -serialnumber dd 01020304h ;no de serie -drivename db 'COS2000 ' ;nom de volume -typeoffat db 'FAT16 ' ;FAT -ends bootinfo diff --git a/include/graphic.h b/include/graphic.h deleted file mode 100644 index f6d14b2..0000000 --- a/include/graphic.h +++ /dev/null @@ -1,26 +0,0 @@ -struc point -coordx db 0 -coordy db 0 -ends point - -struc vgainf -lines db 0 -columns db 0 -x db 0 -y db 0 -xy dw 0 -colors db 7 -mode db 0FFh -pagesize dw 0 -style db 0 -font db 0 -graphic db 0 -nbpage db 0 -color db 0 -cursor db 0 -segments dw 0 -linesize dw 0 -adress dw 0 -base dw 0 -scrolling db 1 -ends vgainf diff --git a/include/mem.h b/include/mem.h deleted file mode 100644 index 5e9035e..0000000 --- a/include/mem.h +++ /dev/null @@ -1,124 +0,0 @@ -struc regs -seip dd 0 -seax dd 0 -sebx dd 0 -secx dd 0 -sedx dd 0 -sesi dd 0 -sedi dd 0 -sebp dd 0 -sesp dd 0 -scs dw 0 -sds dw 0 -ses dw 0 -sfs dw 0 -sgs dw 0 -sss dw 0 -seflags dd 0 -ends regs - -struc tuple ;vecteur d'interruption -off dw 0 ;adresse -seg dw 0 ;segment -ends tuple - -union vector -data tuple <> -content dd 0 -ends - -struc ints ;bloc interruption -number db 0 ;numero de l'interruption -activated db 0 ;activé ou non -locked db 0 ;verrouillée -launchedlow dd 0 -launchedhigh dd 0 -calledlow dd 0 -calledhigh dd 0 -vector1 vector ? -vector2 vector ? -vector3 vector ? -vector4 vector ? -vector5 vector ? -vector6 vector ? -vector7 vector ? -vector8 vector ? -ends ints - -struc mb ;Bloc de mémoire -check db "NH" ;signature du bloc de mémoire -isnotlast db 0 ;flag indiquant le dernier bloc -isresident db 0 ;flag indiquant que le bloc est resident -reference dw 0 ;pointeur vers le bloc parent -sizes dw 0 ;taille du bloc en paragraphe de 16 octet -names db 24 dup (0) ;nom du bloc -ends mb - -struc exe ;Executable COS -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw 0 ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw 15 -ends exe - -struc descriptor -limit_low dw 0 -base_low dw 0 -base_middle db 0 -dpltype db 0 -limit_high db 0 -base_high db 0 -ends descriptor - - -free equ 0 ;Reference quand libre - - - -macro exporting - label exports -endm - -macro importing - label imports -endm - -macro noimporting - label imports - dd 0 -endm - -macro noexporting - label imports - dd 0 -endm - -macro ende - dd 0 -endm - -macro endi - dd 0 -endm - -macro use lib:req,fonction:req - db "&lib&::&fonction&",0 -label &fonction& dword - dd 0 -endm - -macro declare fonction:req - db "&fonction&",0 - dw offset fonction -endm - -macro heading versmaj:req,versmin:req,start:req -header exe <"CE",offset &versmaj&,offset &versmin&,0,offset exports,offset imports,0,offset &start&> - db "&fonction&",0 - dw offset fonction -endif -endm diff --git a/include/pci.h b/include/pci.h deleted file mode 100644 index 936321d..0000000 --- a/include/pci.h +++ /dev/null @@ -1,34 +0,0 @@ -struc pcidata -vendor dw 0 ;vendor ID (read-only), FFFFh returned if requested device non-existent -device dw 0 ;device ID (read-only) -command dw 0 ;command register -status dw 0 ;status register -revision db 0 ;revision ID -interface db 0 ;programming interface -subclass db 0 ;sub-class -class db 0 ;class code -cache db 0 ;cache line size -timer db 0 ;latency timer -typed db 0 ;header type - ;bits 6-0: header format - ;00h other - ;01h PCI-to-PCI bridge - ;02h PCI-to-CardBus bridge - ;bit 7: multi-function device -result db 0 ;Built-In Self-Test result -ends pcidata - -struc pciinf -version_major db 0 -version_minor db 0 -types db 0 -maxbus db 0 -ends pciinf - -multifunction equ 80h -othercard equ 00h -pci2pcibridge equ 01h -pci2pcicard equ 02h - -config1addr equ 0CF8h -config1data equ 0CFCh diff --git a/include/pol8x16.inc b/include/pol8x16.inc deleted file mode 100644 index bd946e6..0000000 --- a/include/pol8x16.inc +++ /dev/null @@ -1,256 +0,0 @@ - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 081h, 0A5h, 081h, 081h, 0BDh, 099h, 081h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 0FFh, 0DBh, 0FFh, 0FFh, 0C3h, 0E7h, 0FFh, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 036h, 07Fh, 07Fh, 07Fh, 07Fh, 03Eh, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 008h, 01Ch, 03Eh, 07Fh, 03Eh, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 03Ch, 0E7h, 0E7h, 0E7h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 0FFh, 0FFh, 07Eh, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 03Ch, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Ch, 066h, 042h, 042h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0C3h, 099h, 0BDh, 0BDh, 099h, 0C3h, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 00Fh, 007h, 00Dh, 019h, 03Ch, 066h, 066h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Fh, 033h, 03Fh, 030h, 030h, 030h, 070h, 0F0h, 0E0h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 07Fh, 063h, 063h, 063h, 067h, 0E7h, 0E6h, 0C0h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 0DBh, 03Ch, 0E7h, 03Ch, 0DBh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 040h, 060h, 070h, 07Ch, 07Fh, 07Ch, 070h, 060h, 040h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 001h, 003h, 007h, 01Fh, 07Fh, 01Fh, 007h, 003h, 001h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 033h, 033h, 033h, 033h, 033h, 033h, 000h, 033h, 033h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 0DBh, 0DBh, 0DBh, 07Bh, 01Bh, 01Bh, 01Bh, 01Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 03Eh, 063h, 030h, 01Ch, 036h, 063h, 063h, 036h, 01Ch, 006h, 063h, 03Eh, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 07Fh, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 018h, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 00Ch, 006h, 07Fh, 006h, 00Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 018h, 030h, 07Fh, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 060h, 060h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 024h, 066h, 0FFh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 008h, 01Ch, 01Ch, 03Eh, 03Eh, 07Fh, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 07Fh, 07Fh, 03Eh, 03Eh, 01Ch, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 024h, 024h, 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 042h, 042h, 042h, 0FFh, 042h, 042h, 042h, 0FFh, 042h, 042h, 042h, 000h, 000h, 000h, 000h - DB 000h, 010h, 07Eh, 090h, 090h, 090h, 07Ch, 012h, 012h, 012h, 0FCh, 010h, 000h, 000h, 000h, 000h - DB 000h, 000h, 061h, 091h, 092h, 064h, 008h, 010h, 026h, 049h, 089h, 086h, 000h, 000h, 000h, 000h - DB 000h, 070h, 088h, 088h, 088h, 050h, 060h, 091h, 08Ah, 084h, 04Ah, 031h, 000h, 000h, 000h, 000h - DB 000h, 018h, 018h, 010h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 006h, 018h, 020h, 040h, 040h, 040h, 040h, 040h, 020h, 018h, 006h, 000h, 000h, 000h, 000h - DB 000h, 060h, 018h, 004h, 002h, 002h, 002h, 002h, 002h, 004h, 018h, 060h, 000h, 000h, 000h, 000h - DB 000h, 000h, 010h, 092h, 054h, 038h, 0FEh, 038h, 054h, 092h, 010h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 010h, 010h, 010h, 0FEh, 010h, 010h, 010h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 010h, 020h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 001h, 001h, 002h, 004h, 008h, 010h, 020h, 040h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 083h, 085h, 089h, 091h, 0A1h, 0C1h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 010h, 030h, 050h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 07Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 001h, 002h, 03Ch, 040h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 001h, 002h, 03Ch, 002h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 002h, 006h, 00Ah, 012h, 022h, 042h, 082h, 0FFh, 002h, 002h, 002h, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 0FCh, 002h, 001h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 081h, 001h, 002h, 004h, 008h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 042h, 03Ch, 042h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 043h, 03Dh, 001h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 018h, 018h, 010h, 020h, 000h, 000h - DB 000h, 002h, 004h, 008h, 010h, 020h, 040h, 020h, 010h, 008h, 004h, 002h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 040h, 020h, 010h, 008h, 004h, 002h, 004h, 008h, 010h, 020h, 040h, 000h, 000h, 000h, 000h - DB 000h, 038h, 044h, 082h, 082h, 004h, 008h, 010h, 010h, 000h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 099h, 0A5h, 0A5h, 0A5h, 09Eh, 080h, 041h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 018h, 024h, 042h, 081h, 081h, 0FFh, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 042h, 041h, 041h, 042h, 07Ch, 042h, 041h, 041h, 042h, 0FCh, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 080h, 080h, 080h, 080h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 042h, 041h, 041h, 041h, 041h, 041h, 041h, 041h, 042h, 0FCh, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 080h, 0FCh, 080h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 080h, 0FCh, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 080h, 09Fh, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 0FFh, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 038h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 038h, 000h, 000h, 000h, 000h - DB 000h, 007h, 002h, 002h, 002h, 002h, 002h, 002h, 082h, 082h, 044h, 038h, 000h, 000h, 000h, 000h - DB 000h, 081h, 082h, 084h, 088h, 090h, 0E0h, 090h, 088h, 084h, 082h, 081h, 000h, 000h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 081h, 0C3h, 0A5h, 099h, 099h, 081h, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 081h, 0C1h, 0A1h, 091h, 089h, 085h, 083h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 082h, 081h, 081h, 082h, 0FCh, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 081h, 081h, 081h, 089h, 085h, 042h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 082h, 081h, 081h, 082h, 0FCh, 090h, 088h, 084h, 082h, 081h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 080h, 040h, 03Ch, 002h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FEh, 092h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 042h, 042h, 024h, 024h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 081h, 099h, 099h, 0A5h, 0A5h, 042h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 042h, 024h, 018h, 024h, 042h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 082h, 082h, 082h, 082h, 044h, 028h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 001h, 001h, 002h, 004h, 018h, 020h, 040h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 07Eh, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 080h, 080h, 040h, 020h, 010h, 008h, 004h, 002h, 001h, 001h, 000h, 000h, 000h, 000h - DB 000h, 07Eh, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 018h, 024h, 042h, 081h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h - DB 000h, 008h, 004h, 002h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Ch, 002h, 002h, 07Eh, 082h, 082h, 07Dh, 000h, 000h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 0C2h, 0BCh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 080h, 080h, 080h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 001h, 001h, 001h, 001h, 03Dh, 043h, 081h, 081h, 081h, 043h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 081h, 0FFh, 080h, 040h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 00Eh, 011h, 010h, 010h, 0FEh, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Dh, 043h, 081h, 081h, 043h, 03Dh, 001h, 002h, 07Ch, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 000h, 008h, 008h, 000h, 038h, 008h, 008h, 008h, 008h, 008h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 002h, 002h, 000h, 006h, 002h, 002h, 002h, 002h, 002h, 082h, 044h, 038h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 082h, 084h, 088h, 090h, 0A8h, 0C4h, 082h, 000h, 000h, 000h, 000h - DB 038h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0ECh, 092h, 092h, 092h, 092h, 092h, 092h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0B8h, 0C4h, 082h, 082h, 082h, 082h, 082h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0BCh, 0C2h, 081h, 081h, 081h, 0C2h, 0BCh, 080h, 080h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Dh, 043h, 081h, 081h, 081h, 043h, 03Dh, 001h, 001h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0BEh, 0C1h, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Eh, 081h, 080h, 07Eh, 001h, 081h, 07Eh, 000h, 000h, 000h, 000h - DB 010h, 010h, 010h, 010h, 010h, 0FEh, 010h, 010h, 010h, 010h, 011h, 00Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 081h, 043h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 042h, 024h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 082h, 082h, 092h, 092h, 092h, 0AAh, 044h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 042h, 024h, 018h, 024h, 042h, 081h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 043h, 03Dh, 001h, 002h, 07Ch, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 002h, 004h, 018h, 020h, 040h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 004h, 008h, 010h, 010h, 010h, 020h, 010h, 010h, 010h, 008h, 004h, 000h, 000h, 000h, 000h - DB 000h, 010h, 010h, 010h, 010h, 000h, 000h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h, 000h - DB 000h, 040h, 020h, 010h, 010h, 010h, 008h, 010h, 010h, 010h, 020h, 040h, 000h, 000h, 000h, 000h - DB 000h, 000h, 070h, 099h, 00Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 008h, 01Ch, 036h, 063h, 063h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Eh, 033h, 061h, 060h, 060h, 061h, 033h, 01Eh, 006h, 003h, 03Eh, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 006h, 00Ch, 018h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 01Ch, 036h, 01Ch, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Ch, 066h, 060h, 066h, 03Ch, 00Ch, 006h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 03Ch, 066h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 060h, 030h, 018h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 063h, 063h, 008h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 01Ch, 036h, 01Ch, 000h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 00Ch, 018h, 030h, 000h, 07Fh, 033h, 030h, 03Eh, 030h, 033h, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 06Eh, 03Bh, 01Bh, 07Eh, 0D8h, 0DCh, 077h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Fh, 036h, 066h, 066h, 07Fh, 066h, 066h, 066h, 067h, 000h, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 063h, 063h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 03Ch, 066h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 063h, 063h, 000h, 063h, 063h, 063h, 063h, 03Fh, 003h, 006h, 03Ch, 000h, 000h, 000h - DB 000h, 063h, 063h, 01Ch, 036h, 063h, 063h, 063h, 063h, 036h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 063h, 063h, 000h, 063h, 063h, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 018h, 07Eh, 0C3h, 0C0h, 0C0h, 0C3h, 07Eh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 01Ch, 036h, 032h, 030h, 078h, 030h, 030h, 030h, 073h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 0C3h, 066h, 03Ch, 018h, 0FFh, 018h, 0FFh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 066h, 066h, 07Ch, 062h, 066h, 06Fh, 066h, 066h, 0F3h, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Eh, 01Bh, 018h, 018h, 018h, 07Eh, 018h, 018h, 018h, 018h, 0D8h, 070h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Bh, 06Eh, 000h, 06Eh, 033h, 033h, 033h, 033h, 033h, 000h, 000h, 000h, 000h, 000h - DB 03Bh, 06Eh, 000h, 063h, 073h, 07Bh, 07Fh, 06Fh, 067h, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 06Ch, 06Ch, 03Eh, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 038h, 06Ch, 06Ch, 038h, 000h, 07Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 018h, 018h, 030h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 060h, 060h, 060h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 003h, 003h, 003h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 060h, 0E0h, 063h, 066h, 06Ch, 018h, 030h, 06Eh, 0C3h, 006h, 00Ch, 01Fh, 000h, 000h, 000h - DB 000h, 060h, 0E0h, 063h, 066h, 06Ch, 018h, 033h, 067h, 0CFh, 01Fh, 003h, 003h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 018h, 018h, 03Ch, 03Ch, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 01Bh, 036h, 06Ch, 036h, 01Bh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 06Ch, 036h, 01Bh, 036h, 06Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 000h, 000h - DB 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 000h, 000h - DB 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FEh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0F8h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F6h, 006h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FEh, 006h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F6h, 006h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 01Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 037h, 030h, 03Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Fh, 030h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F7h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0F7h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 037h, 030h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F7h, 000h, 0F7h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0FFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 03Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 01Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 01Fh, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03Fh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FFh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0FFh, 018h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 000h, 000h - DB 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Bh, 06Eh, 06Ch, 06Ch, 06Eh, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Eh, 063h, 07Eh, 063h, 063h, 07Eh, 060h, 060h, 020h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 063h, 060h, 060h, 060h, 060h, 060h, 060h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 07Fh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 030h, 018h, 00Ch, 018h, 030h, 063h, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Fh, 06Ch, 06Ch, 06Ch, 06Ch, 038h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 033h, 033h, 033h, 033h, 03Eh, 030h, 030h, 060h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Bh, 06Eh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 018h, 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 036h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 036h, 063h, 063h, 063h, 036h, 036h, 036h, 077h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Eh, 030h, 018h, 00Ch, 03Eh, 066h, 066h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Eh, 0DBh, 0DBh, 07Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 003h, 006h, 07Eh, 0DBh, 0DBh, 0F3h, 07Eh, 060h, 0C0h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 030h, 060h, 060h, 07Ch, 060h, 060h, 030h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 03Eh, 063h, 063h, 063h, 063h, 063h, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 07Fh, 000h, 000h, 07Fh, 000h, 000h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 018h, 0FFh, 018h, 018h, 018h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 030h, 018h, 00Ch, 006h, 00Ch, 018h, 030h, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 00Ch, 018h, 030h, 060h, 030h, 018h, 00Ch, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 00Eh, 01Bh, 01Bh, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0D8h, 0D8h, 070h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 000h, 0FFh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Bh, 06Eh, 000h, 03Bh, 06Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 038h, 06Ch, 06Ch, 038h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Fh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 0ECh, 06Ch, 03Ch, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 0D8h, 06Ch, 06Ch, 06Ch, 06Ch, 06Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 070h, 0D8h, 030h, 060h, 0C8h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Eh, 03Eh, 03Eh, 03Eh, 03Eh, 03Eh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h diff --git a/include/pol8x8.inc b/include/pol8x8.inc deleted file mode 100644 index 7d5f4c0..0000000 --- a/include/pol8x8.inc +++ /dev/null @@ -1,128 +0,0 @@ - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07Eh, 081h, 0A5h, 081h, 0BDh, 099h, 081h, 07Eh - DB 07Eh, 0FFh, 0DBh, 0FFh, 0C3h, 0E7h, 0FFh, 07Eh, 06Ch, 0FEh, 0FEh, 0FEh, 07Ch, 038h, 010h, 000h - DB 010h, 038h, 07Ch, 0FEh, 07Ch, 038h, 010h, 000h, 038h, 07Ch, 038h, 0FEh, 0FEh, 07Ch, 038h, 07Ch - DB 010h, 010h, 038h, 07Ch, 0FEh, 07Ch, 038h, 07Ch, 000h, 000h, 018h, 03Ch, 03Ch, 018h, 000h, 000h - DB 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 000h, 03Ch, 066h, 042h, 042h, 066h, 03Ch, 000h - DB 0FFh, 0C3h, 099h, 0BDh, 0BDh, 099h, 0C3h, 0FFh, 00Fh, 007h, 00Fh, 07Dh, 0CCh, 0CCh, 0CCh, 078h - DB 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 018h, 03Fh, 033h, 03Fh, 030h, 030h, 070h, 0F0h, 0E0h - DB 07Fh, 063h, 07Fh, 063h, 063h, 067h, 0E6h, 0C0h, 099h, 05Ah, 03Ch, 0E7h, 0E7h, 03Ch, 05Ah, 099h - DB 080h, 0E0h, 0F8h, 0FEh, 0F8h, 0E0h, 080h, 000h, 002h, 00Eh, 03Eh, 0FEh, 03Eh, 00Eh, 002h, 000h - DB 018h, 03Ch, 07Eh, 018h, 018h, 07Eh, 03Ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h - DB 07Fh, 0DBh, 0DBh, 07Bh, 01Bh, 01Bh, 01Bh, 000h, 03Eh, 063h, 038h, 06Ch, 06Ch, 038h, 0CCh, 078h - DB 000h, 000h, 000h, 000h, 07Eh, 07Eh, 07Eh, 000h, 018h, 03Ch, 07Eh, 018h, 07Eh, 03Ch, 018h, 0FFh - DB 018h, 03Ch, 07Eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h - DB 000h, 018h, 00Ch, 0FEh, 00Ch, 018h, 000h, 000h, 000h, 030h, 060h, 0FEh, 060h, 030h, 000h, 000h - DB 000h, 000h, 0C0h, 0C0h, 0C0h, 0FEh, 000h, 000h, 000h, 024h, 066h, 0FFh, 066h, 024h, 000h, 000h - DB 000h, 018h, 03Ch, 07Eh, 0FFh, 0FFh, 000h, 000h, 000h, 0FFh, 0FFh, 07Eh, 03Ch, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 040h, 040h, 040h, 040h, 040h, 000h, 040h, 000h - DB 090h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 050h, 0F8h, 050h, 0F8h, 050h, 050h, 000h - DB 020h, 078h, 0A0h, 070h, 028h, 0F0h, 020h, 000h, 0C8h, 0C8h, 010h, 020h, 040h, 098h, 098h, 000h - DB 070h, 088h, 050h, 020h, 054h, 088h, 074h, 000h, 060h, 020h, 040h, 000h, 000h, 000h, 000h, 000h - DB 020h, 040h, 080h, 080h, 080h, 040h, 020h, 000h, 020h, 010h, 008h, 008h, 008h, 010h, 020h, 000h - DB 000h, 020h, 0A8h, 070h, 070h, 0A8h, 020h, 000h, 000h, 000h, 020h, 020h, 0F8h, 020h, 020h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 020h, 040h, 000h, 000h, 000h, 000h, 0F8h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 060h, 000h, 002h, 004h, 008h, 010h, 020h, 040h, 080h, 000h - DB 070h, 088h, 098h, 0A8h, 0C8h, 088h, 070h, 000h, 040h, 0C0h, 040h, 040h, 040h, 040h, 0E0h, 000h - DB 070h, 088h, 008h, 010h, 020h, 040h, 0F8h, 000h, 070h, 088h, 008h, 010h, 008h, 088h, 070h, 000h - DB 008h, 018h, 028h, 048h, 0FCh, 008h, 008h, 000h, 0F8h, 080h, 080h, 0F0h, 008h, 088h, 070h, 000h - DB 020h, 040h, 080h, 0F0h, 088h, 088h, 070h, 000h, 0F8h, 008h, 010h, 020h, 040h, 040h, 040h, 000h - DB 070h, 088h, 088h, 070h, 088h, 088h, 070h, 000h, 070h, 088h, 088h, 078h, 008h, 008h, 070h, 000h - DB 000h, 000h, 060h, 060h, 000h, 060h, 060h, 000h, 000h, 000h, 060h, 060h, 000h, 060h, 060h, 020h - DB 010h, 020h, 040h, 080h, 040h, 020h, 010h, 000h, 000h, 000h, 0F8h, 000h, 0F8h, 000h, 000h, 000h - DB 080h, 040h, 020h, 010h, 020h, 040h, 080h, 000h, 078h, 084h, 004h, 008h, 010h, 000h, 010h, 000h - DB 070h, 088h, 088h, 0A8h, 0B8h, 080h, 078h, 000h, 020h, 050h, 088h, 088h, 0F8h, 088h, 088h, 000h - DB 0F0h, 088h, 088h, 0F0h, 088h, 088h, 0F0h, 000h, 070h, 088h, 080h, 080h, 080h, 088h, 070h, 000h - DB 0F0h, 088h, 088h, 088h, 088h, 088h, 0F0h, 000h, 0F8h, 080h, 080h, 0E0h, 080h, 080h, 0F8h, 000h - DB 0F8h, 080h, 080h, 0E0h, 080h, 080h, 080h, 000h, 070h, 088h, 080h, 080h, 098h, 088h, 078h, 000h - DB 088h, 088h, 088h, 0F8h, 088h, 088h, 088h, 000h, 0E0h, 040h, 040h, 040h, 040h, 040h, 0E0h, 000h - DB 038h, 010h, 010h, 010h, 010h, 090h, 060h, 000h, 088h, 090h, 0A0h, 0C0h, 0A0h, 090h, 088h, 000h - DB 080h, 080h, 080h, 080h, 080h, 080h, 0F8h, 000h, 082h, 0C6h, 0AAh, 092h, 082h, 082h, 082h, 000h - DB 084h, 0C4h, 0A4h, 094h, 08Ch, 084h, 084h, 000h, 070h, 088h, 088h, 088h, 088h, 088h, 070h, 000h - DB 0F0h, 088h, 088h, 0F0h, 080h, 080h, 080h, 000h, 070h, 088h, 088h, 088h, 0A8h, 090h, 068h, 000h - DB 0F0h, 088h, 088h, 0F0h, 0A0h, 090h, 088h, 000h, 070h, 088h, 080h, 070h, 008h, 088h, 070h, 000h - DB 0F8h, 020h, 020h, 020h, 020h, 020h, 020h, 000h, 088h, 088h, 088h, 088h, 088h, 088h, 070h, 000h - DB 088h, 088h, 088h, 050h, 050h, 020h, 020h, 000h, 082h, 082h, 082h, 082h, 092h, 092h, 06Ch, 000h - DB 088h, 088h, 050h, 020h, 050h, 088h, 088h, 000h, 088h, 088h, 088h, 050h, 020h, 020h, 020h, 000h - DB 0F8h, 008h, 010h, 020h, 040h, 080h, 0F8h, 000h, 0E0h, 080h, 080h, 080h, 080h, 080h, 0E0h, 000h - DB 080h, 040h, 020h, 010h, 008h, 004h, 002h, 000h, 0E0h, 020h, 020h, 020h, 020h, 020h, 0E0h, 000h - DB 020h, 050h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h, 000h - DB 040h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 070h, 008h, 078h, 088h, 074h, 000h - DB 080h, 080h, 0B0h, 0C8h, 088h, 0C8h, 0B0h, 000h, 000h, 000h, 070h, 088h, 080h, 088h, 070h, 000h - DB 008h, 008h, 068h, 098h, 088h, 098h, 068h, 000h, 000h, 000h, 070h, 088h, 0F8h, 080h, 070h, 000h - DB 030h, 048h, 040h, 0E0h, 040h, 040h, 040h, 000h, 000h, 000h, 034h, 048h, 048h, 038h, 008h, 030h - DB 080h, 080h, 0B0h, 0C8h, 088h, 088h, 088h, 000h, 020h, 000h, 060h, 020h, 020h, 020h, 070h, 000h - DB 010h, 000h, 030h, 010h, 010h, 010h, 090h, 060h, 080h, 080h, 088h, 090h, 0A0h, 0D0h, 088h, 000h - DB 0C0h, 040h, 040h, 040h, 040h, 040h, 0E0h, 000h, 000h, 000h, 0ECh, 092h, 092h, 092h, 092h, 000h - DB 000h, 000h, 0B0h, 0C8h, 088h, 088h, 088h, 000h, 000h, 000h, 070h, 088h, 088h, 088h, 070h, 000h - DB 000h, 000h, 0B0h, 0C8h, 0C8h, 0B0h, 080h, 080h, 000h, 000h, 068h, 098h, 098h, 068h, 008h, 008h - DB 000h, 000h, 0B0h, 0C8h, 080h, 080h, 080h, 000h, 000h, 000h, 078h, 080h, 070h, 008h, 0F0h, 000h - DB 040h, 040h, 0E0h, 040h, 040h, 050h, 020h, 000h, 000h, 000h, 088h, 088h, 088h, 098h, 068h, 000h - DB 000h, 000h, 088h, 088h, 088h, 050h, 020h, 000h, 000h, 000h, 082h, 082h, 092h, 092h, 06Ch, 000h - DB 000h, 000h, 088h, 050h, 020h, 050h, 088h, 000h, 000h, 000h, 088h, 088h, 098h, 068h, 008h, 070h - DB 000h, 000h, 0F8h, 010h, 020h, 040h, 0F8h, 000h, 010h, 020h, 020h, 040h, 020h, 020h, 010h, 000h - DB 040h, 040h, 040h, 000h, 040h, 040h, 040h, 000h, 040h, 020h, 020h, 010h, 020h, 020h, 040h, 000h - DB 076h, 0DCh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06Ch, 0C6h, 0C6h, 0FEh, 000h - DB 03Eh, 060h, 0C0h, 060h, 03Eh, 008h, 004h, 018h, 000h, 048h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 018h, 020h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h, 010h, 028h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h - DB 000h, 048h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 030h, 008h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h - DB 048h, 030h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 078h, 0CCh, 0C0h, 0CCh, 078h, 010h, 008h, 030h - DB 030h, 048h, 084h, 078h, 0CCh, 0FCh, 0C0h, 078h, 000h, 048h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h - DB 030h, 008h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h, 000h, 048h, 000h, 030h, 030h, 030h, 030h, 030h - DB 030h, 048h, 000h, 030h, 030h, 030h, 030h, 030h, 060h, 010h, 000h, 030h, 030h, 030h, 030h, 030h - DB 048h, 000h, 030h, 078h, 0CCh, 0CCh, 0FCh, 0CCh, 030h, 048h, 030h, 048h, 084h, 0FCh, 084h, 084h - DB 018h, 020h, 000h, 0F8h, 080h, 0F0h, 080h, 0F8h, 000h, 000h, 000h, 066h, 019h, 077h, 088h, 077h - DB 000h, 000h, 000h, 00Fh, 014h, 03Eh, 044h, 087h, 030h, 048h, 084h, 078h, 0CCh, 0CCh, 0CCh, 078h - DB 000h, 048h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 060h, 010h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h - DB 030h, 048h, 084h, 000h, 0CCh, 0CCh, 0CCh, 076h, 060h, 010h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 048h, 000h, 0CCh, 0CCh, 0CCh, 07Ch, 00Ch, 0F8h, 044h, 000h, 038h, 06Ch, 0C6h, 0C6h, 06Ch, 038h - DB 024h, 000h, 066h, 066h, 066h, 066h, 066h, 03Ch, 000h, 008h, 01Ch, 028h, 028h, 01Ch, 008h, 000h - DB 01Ch, 022h, 020h, 070h, 020h, 022h, 05Ch, 000h, 044h, 028h, 010h, 010h, 038h, 010h, 038h, 010h - DB 0F0h, 088h, 08Ah, 0F7h, 082h, 082h, 083h, 000h, 006h, 008h, 008h, 03Ch, 010h, 010h, 060h, 000h - DB 018h, 020h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 018h, 020h, 000h, 030h, 030h, 030h, 030h, 030h - DB 018h, 020h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 018h, 020h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 080h, 078h, 004h, 0F8h, 0CCh, 0CCh, 0CCh, 0CCh, 080h, 07Eh, 001h, 0C6h, 0E6h, 0D6h, 0CEh, 0C6h - DB 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 000h, 0FEh, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 000h, 0FCh - DB 000h, 000h, 018h, 018h, 030h, 060h, 066h, 03Ch, 0FFh, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 0FFh, 001h, 001h, 001h, 000h, 000h, 000h, 000h, 040h, 0C4h, 048h, 050h, 026h, 049h, 082h, 007h - DB 040h, 0C4h, 048h, 050h, 026h, 04Ah, 09Fh, 002h, 000h, 030h, 000h, 030h, 030h, 030h, 030h, 030h - DB 000h, 012h, 024h, 048h, 090h, 048h, 024h, 012h, 000h, 048h, 024h, 012h, 009h, 012h, 024h, 048h - DB 049h, 000h, 092h, 000h, 049h, 000h, 092h, 000h, 06Dh, 000h, 0B6h, 000h, 06Dh, 000h, 0B6h, 000h - DB 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h - DB 010h, 010h, 010h, 010h, 0F0h, 010h, 010h, 010h, 010h, 010h, 010h, 0F0h, 010h, 0F0h, 010h, 010h - DB 028h, 028h, 028h, 028h, 0E8h, 028h, 028h, 028h, 000h, 000h, 000h, 000h, 0F8h, 028h, 028h, 028h - DB 000h, 000h, 000h, 0F0h, 010h, 0F0h, 010h, 010h, 028h, 028h, 028h, 0E8h, 008h, 0E8h, 028h, 028h - DB 028h, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 000h, 000h, 000h, 0F8h, 008h, 0E8h, 028h, 028h - DB 028h, 028h, 028h, 0E8h, 008h, 0F8h, 000h, 000h, 028h, 028h, 028h, 028h, 0F8h, 000h, 000h, 000h - DB 010h, 010h, 010h, 0F0h, 010h, 0F0h, 000h, 000h, 000h, 000h, 000h, 000h, 0F0h, 010h, 010h, 010h - DB 010h, 010h, 010h, 010h, 01Fh, 000h, 000h, 000h, 010h, 010h, 010h, 010h, 0FFh, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 0FFh, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 01Fh, 010h, 010h, 010h - DB 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h, 010h, 010h, 010h, 010h, 0FFh, 010h, 010h, 010h - DB 010h, 010h, 010h, 01Fh, 010h, 01Fh, 010h, 010h, 028h, 028h, 028h, 028h, 03Fh, 028h, 028h, 028h - DB 028h, 028h, 028h, 02Fh, 020h, 03Fh, 000h, 000h, 000h, 000h, 000h, 03Fh, 020h, 02Fh, 028h, 028h - DB 028h, 028h, 028h, 0EFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0EFh, 028h, 028h - DB 028h, 028h, 028h, 02Fh, 020h, 02Fh, 028h, 028h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 000h, 000h - DB 028h, 028h, 028h, 0EFh, 000h, 0EFh, 028h, 028h, 010h, 010h, 010h, 0FFh, 000h, 0FFh, 000h, 000h - DB 028h, 028h, 028h, 028h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 010h, 010h - DB 000h, 000h, 000h, 000h, 0FFh, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 03Fh, 000h, 000h, 000h - DB 010h, 010h, 010h, 01Fh, 010h, 01Fh, 000h, 000h, 000h, 000h, 000h, 01Fh, 010h, 01Fh, 010h, 010h - DB 000h, 000h, 000h, 000h, 03Fh, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 0FFh, 028h, 028h, 028h - DB 010h, 010h, 010h, 0FFh, 010h, 0FFh, 010h, 010h, 010h, 010h, 010h, 010h, 0F0h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 01Fh, 010h, 010h, 010h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh - DB 000h, 000h, 000h, 000h, 0FFh, 0FFh, 0FFh, 000h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h - DB 007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 002h, 034h, 04Ch, 04Ch, 032h, 000h, 05Ch, 022h, 022h, 03Ch, 044h, 044h, 078h - DB 07Eh, 042h, 042h, 040h, 040h, 040h, 040h, 040h, 000h, 000h, 002h, 07Ch, 0A8h, 028h, 028h, 044h - DB 000h, 07Eh, 061h, 030h, 018h, 008h, 010h, 020h, 000h, 000h, 008h, 07Fh, 088h, 088h, 088h, 070h - DB 000h, 000h, 000h, 022h, 044h, 044h, 07Ah, 080h, 000h, 000h, 000h, 07Ch, 010h, 010h, 010h, 010h - DB 000h, 01Ch, 008h, 03Eh, 041h, 041h, 041h, 03Eh, 000h, 000h, 038h, 044h, 044h, 07Ch, 044h, 044h - DB 03Ch, 066h, 0C3h, 0C3h, 0C3h, 066h, 024h, 066h, 00Ch, 010h, 008h, 01Ch, 022h, 022h, 022h, 01Ch - DB 000h, 000h, 000h, 000h, 06Ch, 092h, 092h, 06Ch, 000h, 001h, 01Ah, 026h, 02Ah, 032h, 02Ch, 040h - DB 000h, 018h, 020h, 020h, 030h, 020h, 020h, 018h, 000h, 03Ch, 042h, 042h, 042h, 042h, 042h, 042h - DB 000h, 000h, 07Eh, 000h, 07Eh, 000h, 07Eh, 000h, 000h, 008h, 008h, 03Eh, 008h, 008h, 000h, 03Eh - DB 000h, 010h, 008h, 004h, 008h, 010h, 000h, 03Eh, 000h, 004h, 008h, 010h, 008h, 004h, 000h, 03Eh - DB 000h, 006h, 009h, 009h, 008h, 008h, 008h, 000h, 000h, 000h, 008h, 008h, 008h, 048h, 048h, 030h - DB 000h, 000h, 008h, 000h, 03Eh, 000h, 008h, 000h, 000h, 060h, 092h, 00Ch, 060h, 092h, 00Ch, 000h - DB 060h, 090h, 060h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 030h, 000h, 000h - DB 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 003h, 004h, 004h, 0C8h, 028h, 010h, 000h - DB 000h, 000h, 000h, 07Ch, 042h, 042h, 042h, 000h, 018h, 024h, 008h, 010h, 03Ch, 000h, 000h, 000h - DB 000h, 000h, 000h, 03Eh, 03Eh, 03Eh, 03Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h diff --git a/install/MAKEFILE b/install/MAKEFILE deleted file mode 100644 index 3a8ee6a..0000000 --- a/install/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: setup.com - -setup.com: setup.obj - $(lnk) setup.obj setup.com /c - -setup.obj: - $(asm) setup.asm - -clean: - del *.obj - del *.exe - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/install/setup.asm b/install/setup.asm deleted file mode 100644 index 949cb11..0000000 --- a/install/setup.asm +++ /dev/null @@ -1,164 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -org 0100h - -ent equ 32h - -jmp copycos - -message db 0Dh,0Ah,'COS 2000 V1.3.1BetaFr programme d''installation',0Dh,0AH,'Inserez une disquette formatee et appuyez sur entre...',0Dh,0AH,'Attention le contenu de celle ci peut etre altere !!!',0Dh,0AH,'$' -message2 db 0Dh,0AH,'Creation du secteur de demarrage...',0Dh,0Ah,'$' -message3 db 0Dh,0AH,'Copie des fichiers systeme...',0Dh,0Ah,'$' -errormsg db 0Dh,0AH,'Erreur d''installation, contactez moi a COS2000@MULTIMANIA.COM !',0Dh,0AH,'$' -ok db 0Dh,0AH,'COS2000 a ete correctement installe, veuillez redemarrer votre PC',0Dh,0AH,'$' -files db '*.*',0 -boot db 'boot.bin',0 -dat db 'data',0 -retu db 0Dh,0AH,'$' -dta db 43 dup (0) - -copycos: - mov ah,9 - mov dx,offset message - int 21h - xor ax,ax - int 16h - mov ah,4ah - mov bx,1000h - int 21h - jc error - mov ah,48h - mov bx,65536/16 - int 21h - jc error - mov fs,ax - mov ah,3Bh - mov dx,offset dat - int 21h - jc error - mov ah,1Ah - mov dx,offset dta - int 21h - jc error - mov ah,4eh - xor cx,cx - mov dx,offset files - int 21h - jc error - mov ah,09 - mov dx,offset message3 - int 21h -allfile: - mov [byte ptr offset dta+43],'$' - mov ah,9 - mov dx,offset dta+30 - int 21h - push dx - mov ah,09 - mov dx,offset retu - int 21h - pop dx - mov ax,3D00h - int 21h - jc error - mov bx,ax - mov ax,4202h - xor cx,cx - xor dx,dx - int 21h - jc error - cmp dx,0 - jne error - cmp ax,0 - je error - mov bp,ax - mov ax,4200h - xor cx,cx - xor dx,dx - int 21h - jc error - push fs - pop ds - mov ah,3fh - mov cx,0FFFFh - xor dx,dx - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - mov ah,3ch - push cs - pop es - mov di,offset dta+30-3 - mov [word ptr di],":a" - mov [byte ptr di+2],"\" - xor cx,cx - mov dx,di - int 21h - jc error - mov bx,ax - push fs - pop ds - xor dx,dx - mov ah,40h - mov cx,bp - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - mov ah,4fh - int 21h - jnc allfile - mov ah,09 - mov dx,offset message2 - int 21h - mov ax,3D00h - mov dx,offset boot - int 21h - jc error - push fs - pop ds - mov ah,3fh - mov cx,0FFFFh - xor dx,dx - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - push fs - pop es - mov ax,0301h - mov dx,0 - mov cx,0001h - xor bx,bx - int 13h - mov ah,09 - mov dx,offset ok - int 21h - xor ax,ax - int 16h - ret - - -error: - mov ah,09 - mov dx,offset errormsg - int 21h - xor ax,ax - int 16h - ret - diff --git a/install/setup.sh b/install/setup.sh deleted file mode 100755 index 916c5799216c45de2eea4e52669a1424c573aa26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 zcmeHN&u<$=6#jO-cI=dFw7to(R-Bl+IkkqQI_su7=}_)1&WSZ2!X$UsNong z0jDnayC$(dtpGJ1O9w`$MyHN0A6+)KRhLZAiD#bx@?U$VXe~UB!f?+cb2HgC_|OPv z8!pA8vW#oh_uKB|GmXBF<4hi(vz@qY*Y5*2SpTNc|G)Ay{qTc!T{g&j*zP{t-(&1s zM8Cv(f%PZlAVzllHous8-TdWO^kZY3)}Q5ZzqW3K zxXs7M@wTV^?(K2w zytWDgjqmwZN!R7Mr3iTTIsafw-8yG2fB>II{Q2(g{}!04ZA;PX!gGsDFXtDR-*|p8 z-PX=1AW><9#M*u&kLhY!f@hK#$=;+@b3InRIIK?PNmaSorb zt~LS6Lz&iZ9_Q98O>EKi-A6 zhq`d`xQ|mT9}oQ%V33~VZE#I*uNZIsYHwan-d;^#jyme)xt09%uIcBH@sn8X$4|%) zEi2TABgMPnHS|%{i2;tS#L-Dp-ZO6I8iEa&eSR_VqUq{sdoQ;Z>46noP8bfiDWDSXYpA{)!%#=oQCjbYTF)N!65O4@M1RMem0f)ejM?jkw{W#X%Mf*_gKlPsv?Y#8Ajtsfp=I&zACRXnYJ6QB4 zU-kzq;RYWEWs;6_P#Xx( z>5X{p=3q&DA9eFAig6I9xgj6rmVAPmjm3=S)&bwd*ZNf+QCl-P&9?fplI&+V`YN}Y z@w1YR=5m1Xbq`q#n#GLj72d}8cw(dDj~SdK3R5&}4uc%;UK_jF_)WanMUj+~a@W1< z=>Lg;$JtNt3tpp--@7~;!|>!-wK7{N&E?Njs^j^A%Gky7#PpnbCJc{AN0k;cBp0l` R(2IMo{qiZ*j&?Kx{{ZhgE#LqE diff --git a/install/winNT gui/setup.bpr b/install/winNT gui/setup.bpr deleted file mode 100644 index 035bc7b..0000000 --- a/install/winNT gui/setup.bpr +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/install/winNT gui/setup.cpp b/install/winNT gui/setup.cpp deleted file mode 100644 index dec5b3e..0000000 --- a/install/winNT gui/setup.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop -//--------------------------------------------------------------------------- -USEFORM("Unit1.cpp", Form1); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->CreateForm(__classid(TForm1), &Form1); - Application->Run(); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - catch (...) - { - try - { - throw Exception(""); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - } - return 0; -} -//--------------------------------------------------------------------------- diff --git a/install/winNT gui/setup.res b/install/winNT gui/setup.res deleted file mode 100644 index 53d1accc46d0945afe50cda57289ae401923c1fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmb_bu}Z{15S{3iB3E2*N=xBd!N>)Ih58qMf?H&Zl!3edxgt%9gEaFQ78Z-Yu)epO zy^BT=!AIWCyq$ToA!J2Fa?txoq+jrUmg?u|$wFZmnzf z51ktJx=uSS%K~fEMvay)h1R3yAZqNR*91Rx^m4D$%|7Za>hxEy(N7N>lb;@*pZwHQ zKXt3ER`%QZdOZJwc!Opy&O3;dL$wcI0J?@&GnlB`P-kn@NLUAY0bJBf1H$Yieu;ht zxx&A3q96w`CXqkuA9$O2neqlRRI9TftkD F$tNfOCK><$ diff --git a/install/winNT gui/setup.tds b/install/winNT gui/setup.tds deleted file mode 100644 index d4db614569ffd85c940a3cd773088a4f26805707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524288 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%0DE-;ZU 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�*Yes>?P>Z|tJfC7f! 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 AD*ylh diff --git a/install/winNT gui/unit1.cpp b/install/winNT gui/unit1.cpp deleted file mode 100644 index 2b3fc55..0000000 --- a/install/winNT gui/unit1.cpp +++ /dev/null @@ -1,166 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#include -#include -#include -#include -#pragma hdrstop - -#include "Unit1.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm1 *Form1; -HANDLE hDrive; -DISK_GEOMETRY dg_flop_geom; -AnsiString lecteur="b:"; -AnsiString device="\\\\.\\"+lecteur; -//--------------------------------------------------------------------------- -__fastcall TForm1::TForm1(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -char * GetLastErrorString(void) -{ - LPVOID lpMsgBuf; - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - return (char *)lpMsgBuf; -} -//--------------------------------------------------------------------------- -ShowMessages(AnsiString msg) -{ - Form1->Memo1->Lines->Add(msg); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FormShow(TObject *Sender) -{ -DWORD dwNotUsed; -DWORD error=0; - - hDrive = CreateFile(device.c_str(), GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); - ShowMessages("Ouverture du peripherique "+lecteur); - if (hDrive == INVALID_HANDLE_VALUE) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if(error!=1&&ShowMessages("Determination de la geometrie ")&&DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,0, &dg_flop_geom, sizeof(dg_flop_geom),&dwNotUsed, NULL) == FALSE) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if(error!=1&&(dg_flop_geom.MediaType==FixedMedia||dg_flop_geom.MediaType==RemovableMedia||dg_flop_geom.MediaType==Unknown)) - { - ShowMessages("Erreur : Ceci n'est pas une disquette !"); - error=1; - } - if (error!=1&&ShowMessages("Positionnement sur le secteur 0")&&SetFilePointer(hDrive, 0, NULL, FILE_BEGIN) == -1) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if (error!=1) - { - drive->Caption=lecteur.UpperCase(); - track->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart); - sector->Caption=IntToStr(dg_flop_geom.SectorsPerTrack); - size->Caption=IntToStr(dg_flop_geom.BytesPerSector); - head->Caption=IntToStr(dg_flop_geom.TracksPerCylinder); - allsize->Caption=IntToStr(dg_flop_geom.BytesPerSector*dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder); - allsector->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder); - } - else - { - CloseHandle(hDrive); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Button1Click(TObject *Sender) -{ - if (hDrive == NULL||dg_flop_geom.TracksPerCylinder>2||dg_flop_geom.TracksPerCylinder==0) - - { - ShowMessages("Aucun support valide detecté !"); - } - else - { - int fdboot; - DWORD error=0; - DWORD dwBsWritten; - char * buffer; - AnsiString bootfile="data/boot.bin"; - ShowMessages("Allocation de mémoire "); - buffer = (char *)malloc(dg_flop_geom.BytesPerSector); - ShowMessages("Ouverture et installation du fichier de boot "+bootfile); - if ((fdboot = _rtl_open(bootfile.c_str(),O_RDONLY | O_BINARY)) == -1 ) - { - ShowMessages("Erreur : Fichier de boot introuvable"); - error=1; - } - if (error!=1&&_read(fdboot, buffer, dg_flop_geom.BytesPerSector)!= dg_flop_geom.BytesPerSector) - { - ShowMessages("Erreur : Fichier de boot de taille incorrecte !"); - error=1; - } - if (error!=1&&WriteFile(hDrive, buffer, dg_flop_geom.BytesPerSector, &dwBsWritten, NULL) == 0) - { - ShowMessages("Ecriture impossible sur le secteur de boot !"); - error=1; - } - _rtl_close(fdboot); - if (error!=1) - { - struct ffblk files; - int done; - int number=0; - ShowMessages("Détermination des fichiers a copier"); - done = findfirst("data/*.*",&files,0); - while (!done) - { - number++; - done = findnext(&files); - } - install->Max=number; - install->Min=0; - install->Position=0; - ShowMessages("Copie des fichiers de cos2000"); - done = findfirst("data/*.*",&files,0); - while (!done) - { - ShowMessages(AnsiString(files.ff_name).LowerCase()); - if (!CopyFile((AnsiString("data/")+AnsiString(files.ff_name)).c_str(),(lecteur+"\\"+AnsiString(files.ff_name)).c_str(),false)) - { - ShowMessages("Erreur : fichier impossible a copier"+AnsiString(GetLastErrorString())); - error=1; - break; - } - done = findnext(&files); - install->Position++; - } - if (!error) - { - ShowMessages("Installation terminée !"); - Button2->Visible=false; - Button1->Visible=false; - Button3->Visible=true; - } - else - ShowMessages("Installation echoué !"); - } - free(buffer); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) -{ - CloseHandle(hDrive); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Button3Click(TObject *Sender) -{ -Close(); -} -//--------------------------------------------------------------------------- diff --git a/install/winNT gui/unit1.ddp b/install/winNT gui/unit1.ddp deleted file mode 100644 index cdc0ee8c2b54a98895d906932c4351134611c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxFz;K0Pl$;KI)SCUzhlbT}4#=r!G E07AM8lK=n! diff --git a/install/winNT gui/unit1.dfm b/install/winNT gui/unit1.dfm deleted file mode 100644 index b0445c3..0000000 --- a/install/winNT gui/unit1.dfm +++ /dev/null @@ -1,184 +0,0 @@ -object Form1: TForm1 - Left = 418 - Top = 273 - Width = 599 - Height = 371 - Caption = 'Installation de COS2000' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Button1: TButton - Left = 288 - Top = 304 - Width = 75 - Height = 25 - Caption = 'installer...' - TabOrder = 0 - OnClick = Button1Click - end - object install: TProgressBar - Left = 16 - Top = 264 - Width = 553 - Height = 25 - Min = 0 - Max = 100 - TabOrder = 1 - end - object Button2: TButton - Left = 208 - Top = 304 - Width = 75 - Height = 25 - Caption = 'support' - TabOrder = 2 - OnClick = FormShow - end - object Memo1: TMemo - Left = 192 - Top = 24 - Width = 377 - Height = 225 - ReadOnly = True - TabOrder = 3 - end - object GroupBox1: TGroupBox - Left = 16 - Top = 120 - Width = 161 - Height = 129 - Caption = 'G'#233'om'#233'trie' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - ParentFont = False - TabOrder = 4 - object track: TLabel - Left = 96 - Top = 60 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label4: TLabel - Left = 24 - Top = 60 - Width = 34 - Height = 13 - Caption = 'Pistes :' - end - object Label5: TLabel - Left = 24 - Top = 28 - Width = 48 - Height = 13 - Caption = 'Secteurs :' - end - object sector: TLabel - Left = 96 - Top = 28 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object head: TLabel - Left = 96 - Top = 44 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label6: TLabel - Left = 24 - Top = 44 - Width = 33 - Height = 13 - Caption = 'Tetes :' - end - object Label8: TLabel - Left = 24 - Top = 84 - Width = 69 - Height = 13 - Caption = 'Taille secteur :' - end - object size: TLabel - Left = 96 - Top = 84 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - end - object GroupBox2: TGroupBox - Left = 16 - Top = 16 - Width = 161 - Height = 97 - Caption = 'Support' - TabOrder = 5 - object Label1: TLabel - Left = 24 - Top = 24 - Width = 42 - Height = 13 - Caption = 'Lecteur :' - end - object drive: TLabel - Left = 88 - Top = 24 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label2: TLabel - Left = 24 - Top = 40 - Width = 31 - Height = 13 - Caption = 'Taille :' - end - object allsize: TLabel - Left = 88 - Top = 40 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label3: TLabel - Left = 24 - Top = 56 - Width = 58 - Height = 13 - Caption = 'N'#176'secteurs :' - end - object allsector: TLabel - Left = 88 - Top = 56 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - end - object Button3: TButton - Left = 248 - Top = 304 - Width = 75 - Height = 25 - Caption = 'Quitter' - TabOrder = 6 - Visible = False - OnClick = Button3Click - end -end diff --git a/install/winNT gui/unit1.h b/install/winNT gui/unit1.h deleted file mode 100644 index 6d0d3a7..0000000 --- a/install/winNT gui/unit1.h +++ /dev/null @@ -1,47 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef Unit1H -#define Unit1H -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TForm1 : public TForm -{ -__published: // IDE-managed Components - TButton *Button1; - TProgressBar *install; - TButton *Button2; - TMemo *Memo1; - TGroupBox *GroupBox1; - TLabel *track; - TLabel *Label4; - TLabel *Label5; - TLabel *sector; - TLabel *head; - TLabel *Label6; - TLabel *Label8; - TLabel *size; - TGroupBox *GroupBox2; - TLabel *Label1; - TLabel *drive; - TLabel *Label2; - TLabel *allsize; - TLabel *Label3; - TLabel *allsector; - TButton *Button3; - void __fastcall FormShow(TObject *Sender); - void __fastcall Button1Click(TObject *Sender); - void __fastcall FormClose(TObject *Sender, TCloseAction &Action); - void __fastcall Button3Click(TObject *Sender); -private: // User declarations -public: // User declarations - __fastcall TForm1(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm1 *Form1; -//--------------------------------------------------------------------------- -#endif diff --git a/install/winNT/setup.bpf b/install/winNT/setup.bpf deleted file mode 100644 index 6967230..0000000 --- a/install/winNT/setup.bpf +++ /dev/null @@ -1,4 +0,0 @@ -This file is used by the project manager only and should be treated like the project file - - -main \ No newline at end of file diff --git a/install/winNT/setup.bpr b/install/winNT/setup.bpr deleted file mode 100644 index b67fc36..0000000 --- a/install/winNT/setup.bpr +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/install/winNT/setup.res b/install/winNT/setup.res deleted file mode 100644 index 53d1accc46d0945afe50cda57289ae401923c1fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmb_bu}Z{15S{3iB3E2*N=xBd!N>)Ih58qMf?H&Zl!3edxgt%9gEaFQ78Z-Yu)epO zy^BT=!AIWCyq$ToA!J2Fa?txoq+jrUmg?u|$wFZmnzf z51ktJx=uSS%K~fEMvay)h1R3yAZqNR*91Rx^m4D$%|7Za>hxEy(N7N>lb;@*pZwHQ zKXt3ER`%QZdOZJwc!Opy&O3;dL$wcI0J?@&GnlB`P-kn@NLUAY0bJBf1H$Yieu;ht zxx&A3q96w`CXqkuA9$O2neqlRRI9TftkD F$tNfOCK><$ diff --git a/install/winNT/setup.tds b/install/winNT/setup.tds deleted file mode 100644 index 5ae5c8e2bc3dcf02d98a8b800c2b36542d68c6db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 zcmeI&&2G~`5Ww**QbqX?f&x8Ma0^$|M@Zu)Z6s4gv?|>oISR zy&-@A0tg_000IagfB*srAb@~+qJFAR;;@q)`1sjWh1we)+nAavjzcKJSq#oE2RCcA ztqbG4daboizMiN0B1!esyQuayBI$IbQ|GVE(yIMo73ag+XQp0WMQxkRuA(b_TkMUz zlbJl%(T2i#6Rq0)9jd);RyK=vE+w>!>TNsVY<53D>Z+(-NwAMhacwK#CHF19*y1qH%k090O0~)T>wWU~OUZ8g_rW&j z%>A(H!%z>BlZ#{^2!C3&f*aM!8es$GeX8y7d??a}m0+3$(*^IRm_d(bp98>&)_UA$9IwO$nE+^XmDMG)IF zXiq8D;j*0MrHSf=)|HJWEZ17M3q6-BAj@oX(cO+NNA7`i(<_-=M!5Yu)>pHBy^?Bt z5I_I{1Q0*~0R#|0009IZ6lj0{-&NaP9{&Y+kc$Ka5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ h0R#|0009ILKmY**5I_I{1Q0*~f&UgbI8 -#include -#include -#include -#include -#include -#include -#pragma hdrstop - -//--------------------------------------------------------------------------- -char * GetLastErrorString(void) -{ - LPVOID lpMsgBuf; - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - return (char *)lpMsgBuf; -} - - -#pragma argsused -int main(int argc, char* argv[]) -{ -DWORD dwNotUsed; -DWORD error=0; -HANDLE hDrive; -DISK_GEOMETRY dg_flop_geom; -char lecteur[4]="a:\0"; -char device[7]="\\\\.\\a:\0"; -int fdboot; -DWORD dwBsWritten; -char * buffer; -char bootfile[14]="data/boot.bin\0"; -struct ffblk files; -int done; -int number=0; -char src[80]; -char dest[80]; - printf("Installation de COS2000\nInserez une disquette et appuyer sur une touche...\n"); - getchar(); - hDrive = CreateFile(device, GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); - printf("Ouverture du peripherique %s\n",lecteur); - if (hDrive == INVALID_HANDLE_VALUE) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if(error!=1&&printf("Determination de la geometrie \n")&&DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,0, &dg_flop_geom, sizeof(dg_flop_geom),&dwNotUsed, NULL) == FALSE) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if(error!=1&&(dg_flop_geom.MediaType==FixedMedia||dg_flop_geom.MediaType==RemovableMedia||dg_flop_geom.MediaType==Unknown)) - { - printf("Erreur : Ceci n'est pas une disquette !\n"); - error=1; - } - if (error!=1&&printf("Positionnement sur le secteur 0\n")&&SetFilePointer(hDrive, 0, NULL, FILE_BEGIN) == -1) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if (error!=1) - { - printf("Pistes :%u Secteurs:%u Tetes:%u Taille:%u\n",dg_flop_geom.Cylinders.LowPart,dg_flop_geom.SectorsPerTrack,dg_flop_geom.TracksPerCylinder,dg_flop_geom.BytesPerSector); - } - else - { - CloseHandle(hDrive); - } - if (hDrive == NULL||dg_flop_geom.TracksPerCylinder>2||dg_flop_geom.TracksPerCylinder==0) - { - printf("Aucun support valide detecte !"); - error=1; - } - if (error!=1) - { - printf("Allocation de memoire\n"); - buffer = (char *)malloc(dg_flop_geom.BytesPerSector); - printf("Ouverture et installation du fichier de boot %s\n",bootfile); - } - if (error!=1&&(fdboot = _rtl_open(bootfile,O_RDONLY | O_BINARY)) == -1 ) - { - printf("Erreur : Fichier de boot introuvable\n"); - error=1; - } - if (error!=1&&_read(fdboot, buffer, dg_flop_geom.BytesPerSector)!= dg_flop_geom.BytesPerSector) - { - printf("Erreur : Fichier de boot de taille incorrecte !\n"); - error=1; - } - if (error!=1&&WriteFile(hDrive, buffer, dg_flop_geom.BytesPerSector, &dwBsWritten, NULL) == 0) - { - printf("Ecriture impossible sur le secteur de boot !\n"); - error=1; - } - if (error!=1) - { - _rtl_close(fdboot); - printf("Determination des fichiers a copier\n\n"); - done = findfirst("data\\*.*",&files,0); - while (!done) - { - number++; - done = findnext(&files); - } - printf("Copie des fichiers de cos2000\n"); - done = findfirst("data\\*.*",&files,0); - while (!done) - { - printf("%s\n",files.ff_name); - sprintf(src, "data\\%s",files.ff_name); - sprintf(dest, "%s\\%s",lecteur,files.ff_name); - if (!CopyFile(src,dest,false)) - { - printf("Erreur : fichier impossible a copier %s\n",GetLastErrorString()); - error=1; - break; - } - done = findnext(&files); - } - if (!error) - { - printf("Installation terminee !\nVeuillez redemarrer votre PC afin de charger le systeme"); - } - else - { - printf("Installation echoué !"); - } - free(buffer); - } - getchar(); - return 0; -} -//--------------------------------------------------------------------------- diff --git a/lib/MAKEFILE b/lib/MAKEFILE deleted file mode 100644 index f061400..0000000 --- a/lib/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: detect.lib video.lib str0.lib bmp.lib - -.asm.obj: - $(asm) $< - -.obj.lib: - $(lnk) $< $*.lib - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/lib/bmp.asm b/lib/bmp.asm deleted file mode 100644 index 893346a..0000000 --- a/lib/bmp.asm +++ /dev/null @@ -1,105 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\bmp.h" - -org 0h - -start: -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare showbmp -declare loadbmppalet -ende - -importing -use VIDEO,showpixel -endi - -;==========SHOWBMP========= -;Affiche le BMP pointée par DS:%0 en %1, %2 -;<- DS:%0 BMP, %1 coordonnées X, %2 coordonnées Y -;-> -;========================== -PROC showbmp FAR - ARG @pointer:word, @x:word, @y:word - USES ax,bx,cx,dx,si,di - mov si,[@pointer] - cmp [word ptr (bmp_file si).bmp_filetype],"MB" - jne @@errorshowing - mov edi,[(bmp_file si).bmp_bitmapoffset] - add di,400h - add di,si - xor ebx,ebx - mov ecx,[(bmp_file si).bmp_height] - mov edx,[(bmp_file si).bmp_width] - ;and dx,11111100b - cmp edx,[(bmp_file si).bmp_width] - ;jae @@noadjust - ;add dx,4 -@@noadjust: - sub edx,[(bmp_file si).bmp_width] -@@bouclette: - push bx cx - add bx,[@x] - add cx,[@y] - call [cs:showpixel],bx,cx,[word ptr di] - pop cx bx - inc bx - inc di - cmp ebx,[(bmp_file si).bmp_width] - jb @@bouclette - xor bx,bx - ;add di,dx - dec cx - cmp cx,0 - jne @@bouclette - clc - ret -@@errorshowing: - stc - ret -ENDP showbmp - - -;==========LOADBMPPALET========= -;Charge la palette du BMP pointée par DS:%0 -;-> DS:%0 BMP -;<- -;=============================== -PROC loadbmppalet FAR - ARG @pointer:word - USES ax,bx,cx,dx,si - mov si,[@pointer] - mov bx,0400h+36h-4 - mov cx,100h - mov dx, 3c8h -@@paletteload: - mov al, cl - dec al - out dx, al - inc dx - mov al,[bx+si+2] - shr al,2 - out dx, al - mov al,[bx+si+1] - shr al,2 - out dx, al - mov al,[bx+si] - shr al,2 - out dx, al - sub bx,4 - dec dx - dec cl - jnz @@paletteload - ret -ENDP loadbmppalet - - diff --git a/lib/detect.asm b/lib/detect.asm deleted file mode 100644 index b268b83..0000000 --- a/lib/detect.asm +++ /dev/null @@ -1,762 +0,0 @@ -model tiny,stdcall -p586 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\cpu.h" -include "..\include\pci.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,,,> - -exporting -declare cpuinfo -declare setinfo -declare pciinfo -declare getpciclass -declare getpcisubclass -declare getcardinfo -declare pcireadbyte -declare pcireadword -declare pcireaddword -declare detectvmware -ende - -PROC detectvmware FAR - USES eax,ebx,ecx,edx - mov eax,564D5868h - mov ebx,12345h - mov ecx,00Ah - mov edx,5658h - in ax,dx - cmp ebx,564D5868h - ret -endp detectvmware - -;renvoie un pointer dx:ax vers la classe %0 -PROC getpciclass FAR - ARG @class:word - USES di - mov di,[@class] - and di,0FFh - shl di,1 - mov ax,[cs:offset classes+di] - mov dx,cs - ret -endp getpciclass - -;renvoie un pointer dx:ax vers la sous-classe de %1 et de classe %0 -PROC getpcisubclass FAR - ARG @class:word,@subclass:word - USES di - mov di,[@class] - and di,0FFh - shl di,1 - mov di,[cs:offset classesd+di] - mov dx,[@subclass] - and dx,0FFh - cmp dx,80h - jne @@suiteac - mov ax,offset divers - jmp @@found -@@suiteac: - shl dx,1 - add di,dx - mov ax,[cs:di] -@@found: - mov dx,cs - ret -endp getpcisubclass - -divers db 'divers',0 - -classes: -dw offset class0 -dw offset class1 -dw offset class2 -dw offset class3 -dw offset class4 -dw offset class5 -dw offset class6 -dw offset class7 -dw offset class8 -dw offset class9 -dw offset class10 -dw offset class11 -dw offset class12 -dw offset class13 -dw offset class14 -dw offset class15 -dw offset class16 -dw offset class17 -class0 db 'ancien',0 -class1 db 'stockage',0 -class2 db 'reseau',0 -class3 db 'affichage',0 -class4 db 'multimedia',0 -class5 db 'memoire',0 -class6 db 'pont',0 -class7 db 'communication',0 -class8 db 'systeme',0 -class9 db 'acquisition',0 -class10 db 'dock',0 -class11 db 'processeur',0 -class12 db 'bus serie',0 -class13 db 'sans fil',0 -class14 db 'intelligent',0 -class15 db 'satellite',0 -class16 db 'cryptage',0 -class17 db 'traitement signal',0 - - -;Classes et sous classes -classesd: -dw offset class0d -dw offset class1d -dw offset class2d -dw offset class3d -dw offset class4d -dw offset class5d -dw offset class6d -dw offset class7d -dw offset class8d -dw offset class9d -dw offset class10d -dw offset class11d -dw offset class12d -dw offset class13d -dw offset class14d -dw offset class15d -dw offset class16d -dw offset class17d - -class0d: -dw offset subclass00 -dw offset subclass01 -subclass00 db 'divers',0 -subclass01 db 'vga',0 - -class1d: -dw offset subclass10 -dw offset subclass11 -dw offset subclass12 -dw offset subclass13 -dw offset subclass14 -subclass10 db 'scsi',0 -subclass11 db 'ide',0 -subclass12 db 'disquette',0 -subclass13 db 'ipi',0 -subclass14 db 'raid',0 - -class2d: -dw offset subclass20 -dw offset subclass21 -dw offset subclass22 -dw offset subclass23 -dw offset subclass24 -subclass20 db 'ethernet',0 -subclass21 db 'token ring',0 -subclass22 db 'fddi',0 -subclass23 db 'atm',0 -subclass24 db 'isdn',0 - -class3d: -dw offset subclass30 -dw offset subclass31 -dw offset subclass32 -subclass30 db 'vga',0 -subclass31 db 'xga',0 -subclass32 db '3D',0 - -class4d: -dw offset subclass40 -dw offset subclass41 -dw offset subclass42 -subclass40 db 'video',0 -subclass41 db 'audio',0 -subclass42 db 'telephonie',0 - -class5d: -dw offset subclass50 -dw offset subclass51 -subclass50 db 'ram',0 -subclass51 db 'flash',0 - -class6d: -dw offset subclass60 -dw offset subclass61 -dw offset subclass62 -dw offset subclass63 -dw offset subclass64 -dw offset subclass65 -dw offset subclass66 -dw offset subclass67 -dw offset subclass68 -subclass60 db 'hote',0 -subclass61 db 'isa',0 -subclass62 db 'eisa',0 -subclass63 db 'mca',0 -subclass64 db 'pci',0 -subclass65 db 'pcmcia',0 -subclass66 db 'nubus',0 -subclass67 db 'cardbus',0 -subclass68 db 'RACEway',0 - -class7d: -dw offset subclass70 -dw offset subclass71 -dw offset subclass72 -dw offset subclass73 -subclass70 db 'serie',0 -subclass71 db 'parallele',0 -subclass72 db 'serie multiport',0 -subclass73 db 'modem',0 - -class8d: -dw offset subclass80 -dw offset subclass81 -dw offset subclass82 -dw offset subclass83 -dw offset subclass84 -subclass80 db 'pic',0 -subclass81 db 'dma',0 -subclass82 db 'timer',0 -subclass83 db 'rtc',0 -subclass84 db 'hotplug',0 - -class9d: -dw offset subclass90 -dw offset subclass91 -dw offset subclass92 -dw offset subclass93 -dw offset subclass94 -subclass90 db 'clavier',0 -subclass91 db 'stylo',0 -subclass92 db 'souris',0 -subclass93 db 'scanner',0 -subclass94 db 'joystick',0 - -class10d: -dw offset subclass100 -subclass100 db 'station',0 - -class11d: -dw offset subclass110 -dw offset subclass111 -dw offset subclass112 -dw offset subclass113 -dw offset subclass114 -subclass110 db '386',0 -subclass111 db '486',0 -subclass112 db 'pentium',0 -subclass113 db 'alpha',0 -subclass114 db 'coprocesseur',0 - -class12d: -dw offset subclass120 -dw offset subclass121 -dw offset subclass122 -dw offset subclass123 -dw offset subclass124 -dw offset subclass125 -subclass120 db 'firewire',0 -subclass121 db 'access',0 -subclass122 db 'ssa',0 -subclass123 db 'usb',0 -subclass124 db 'fibre',0 -subclass125 db 'smbus',0 - -class13d: -dw offset subclass130 -dw offset subclass131 -dw offset subclass132 -subclass130 db 'irda',0 -subclass131 db 'ir',0 -subclass132 db 'rf',0 - -class14d: -dw offset subclass140 -subclass140 db 'IO arch',0 - -class15d: -dw offset subclass150 -dw offset subclass151 -dw offset subclass152 -dw offset subclass153 -subclass150 db 'tv',0 -subclass151 db 'audio',0 -subclass152 db 'voix',0 -subclass153 db 'donnees',0 - -class16d: -dw offset subclass160 -dw offset subclass161 -subclass160 db 'reseau',0 -subclass161 db 'jeux',0 - -class17d: -dw offset subclass170 -subclass170 db 'dpio',0 - - -;al=bus cl=deviceid ch=func es:di -PROC getcardinfo FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES eax,bx,di - mov di,[@pointer] - cmp [@function],0 - je @@amultiorfirst - call pcireadbyte,[@bus],[@device],0,offset (pcidata).typed - and al,multifunction - cmp al,0 - jne @@amultiorfirst - mov [word ptr di],0000h - jmp @@notexist -@@amultiorfirst: - xor bx,bx -@@goinfos: - call pcireadword,[@bus],[@device],[@function],bx - inc bl - inc bl - cmp bl,2 - ja @@notzarb - cmp ax,0FFFFh - je @@notexist - cmp ax,00000h - je @@notexist -@@notzarb: - mov [ds:di],ax - inc di - inc di - cmp bl,40h - jbe @@goinfos - clc - ret -@@notexist: - stc - ret -endp getcardinfo - -;lit un octet du bus %0 device %1 function %2 nø %3 et le met en AL -PROC pcireadbyte FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in al,dx - ret -endp pcireadbyte - -;lit 2 octet du bus %0 device %1 function %2 nø %3 et le met en AX -PROC pcireadword FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in ax,dx - ret -endp pcireadword - -;lit 4 octet du bus %0 device %1 function %2 nø %3 et le met en EAX -PROC pcireaddword FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in eax,dx - ret -endp pcireaddword - -;Prob avec str pci -;renvoie en %0 la structure pciinf carry if error -PROC pciinfo FAR - ARG @pointer:word - USES ax,bx,cx,edx,edi - mov ax,0B101h - xor edi,edi - mov edx," PCI" - int 1Ah - jc @@errorpci - cmp dx,04350h - jne @@errorpci - cmp ah,0 - jne @@errorpci - mov di,[@pointer] - mov [(pciinf di).version_major],bh - mov [(pciinf di).version_minor],bl - mov [(pciinf di).types],al - mov [(pciinf di).maxbus],cl - clc - ret -@@errorpci: - stc - ret -endp pciinfo - - -;retourne en DS:%1 les set supporté du processeur par rapport a la struct %0 -PROC setinfo FAR - ARG @pointer:word,@set:word - USES bx,si,di - mov di,[@set] - lea si,[ds:cpu.mmx] - add si,[@pointer] - mov bx,offset @@theset -@@set: - cmp [word ptr cs:bx],0FFFFh - je @@endofset - cmp [byte ptr si],1 - jne @@nextset - push bx - mov bx,[cs:bx] -@@put: - mov al,[cs:bx] - cmp al,0 - je @@enofput - mov [di],al - inc bx - inc di - jmp @@put -@@enofput: - pop bx - @@nextset: - inc bx - inc bx - inc si - jmp @@set - @@endofset: - mov [byte ptr di],0 - ret - -@@theset dw offset @@mmx - dw offset @@mmx2 - dw offset @@sse - dw offset @@sse2 - dw offset @@sse3 - dw offset @@fpu - dw offset @@now3d - dw offset @@now3d2 - dw offset @@htt - dw offset @@apic - dw 0FFFFh - -@@mmx db "MMX ",0 -@@mmx2 db "MMX2 ",0 -@@now3d db "3dNow! ",0 -@@now3d2 db "3dNow Extended! ",0 -@@htt db "HyperThreading",0 -@@sse db "SSE ",0 -@@sse2 db "SSE2 ",0 -@@sse3 db "SSE3 ",0 -@@apic db "APIC ",0 -@@fpu db "FPU ",0 - -endp setinfo - -;retourne en DS:%0 les capacités du processeur -PROC cpuinfo FAR - ARG @pointer:word - USES eax,ebx,ecx,edx,si,di,ds,es - push ds - pop es - mov di,[@pointer] - mov al,0 - mov cx,size cpu - cld - rep stosb - mov di,[@pointer] - call nocpuid ;Test si cpuid est dispo - je @@nocpuidatall - xor eax,eax - cpuid ;Fonction 0 de CPUID - mov [dword ptr (cpu di).vendor],ebx ;Vendeur sur 13 octets - mov [dword ptr (cpu di+4).vendor],edx - mov [dword ptr (cpu di+8).vendor],ecx - mov [byte ptr (cpu di+12).vendor],0 - cmp eax,1 - jb @@nofonc1 - mov eax,1 - cpuid ;Fonction 1 de CPUID - mov ebx,eax ;infos de model - and ebx,1111b - mov [(cpu di).stepping],bl - shr eax,4 - mov ebx,eax - and ebx,1111b - mov [(cpu di).models],bl - shr eax,4 - mov ebx,eax - and ebx,1111b - mov [(cpu di).family],bl - shr eax,4 - mov ebx,eax - and ebx,11b - mov [(cpu di).types],bl - shr eax,2 - mov ebx,eax - and ebx,1111b - mov [(cpu di).emodels],bl - shr eax,4 - mov [(cpu di).efamily],al - mov ebx,edx - and ebx,1 ;infos de jeu d'instruction - setnz [(cpu di).fpu] - mov ebx,edx - and ebx,100000000000000000000000b - setnz [(cpu di).mmx] - mov ebx,edx - and ebx,10000000000000000000000000b - setnz [(cpu di).sse] - mov ebx,edx - and ebx,100000000000000000000000000b - setnz [(cpu di).sse2] - mov ebx,ecx - and ebx,1b - setnz [(cpu di).sse3] - mov ebx,edx - and ebx,10000000000000000000000000000b - setnz [(cpu di).htt] -@@nofonc1: - mov eax,80000000h ;Fonction 80000000 de CPUID - cpuid - cmp eax,80000001h - jb @@nofonc8 - mov eax,80000001h ;Fonction 80000000 de CPUID - cpuid - mov ebx,edx - and ebx,10000000000000000000000b - setnz [(cpu di).mmx2] - mov ebx,edx - and ebx,1000000000000000000000000000000b - setnz [(cpu di).now3d] - mov ebx,edx - and ebx,10000000000000000000000000000000b - setnz [(cpu di).now3d2] - mov ebx,edx - and ebx,1000000000b - setnz [(cpu di).apic] -@@nofonc8: - mov si,offset @@marks - push cs - pop ds -@@search: - mov di,[@pointer] - mov cx,12 - cld - rep cmpsb - jne @@notthegood - cmp cx,0 - jne @@notthegood - mov cl,[si] - inc si - mov di,[@pointer] - cld - rep movsb - mov al,0 - stosb - mov di,[@pointer] - cmp [es:(cpu di).family],15 - jne @@notextended - mov al,[es:(cpu di).efamily] - mov ah,[es:(cpu di).emodels] - mov di,[si+2] - jmp @@searchmodel -@@notextended: - mov al,[es:(cpu di).family] - mov ah,[es:(cpu di).models] - mov di,[si] -@@searchmodel: - cmp [di],ax - jne @@notgoodfamily - mov si,di - inc si - inc si - lea di,[es:cpu.names] - add di,[@pointer] -@@copystr: - mov al,[si] - mov [es:di],al - inc si - inc di - cmp al,0 - jne @@copystr - jmp @@endofsearch -@@notgoodfamily: - inc di -@@nextelement: - inc di - cmp [byte ptr di-1],0 - jne @@nextelement - jmp @@searchmodel -@@notthegood: - inc si - cmp [word ptr si],0FFFFh - jne @@notthegood - inc si - inc si - cmp [word ptr si],0FFFFh - je @@endofsearch - jmp @@search -@@endofsearch: - ret -@@nocpuidatall: - ret - -;tableau avec vendeur taille + chainereelle + pointeur famille + pointeur famille etendue - -@@marks db "GenuineIntel",5,"Intel" - dw @@intelfamily,@@intelfamilye - dw 0FFFFh - - db "AuthenticAMD",3,"Amd" - dw @@amdfamily,@@amdfamilye - dw 0FFFFh - - db "CyrixInstead",5,"Cyrix" - dw @@cyrixfamily,@@cyrixfamilye - dw 0FFFFh - dw 0FFFFh - - -;tableau avec famille modele et chaine 0 - -@@intelfamily: -db 4,0,"486 DX-25/33",0 -db 4,1,"486 DX-50",0 -db 4,2,"486 SX",0 -db 4,3,"486 DX/2",0 -db 4,4,"486 SL",0 -db 4,5,"486 SX/2",0 -db 4,7,"486 DX/2-WB",0 -db 4,8,"486 DX/4",0 -db 4,9,"486 DX/4-WB",0 -db 5,0,"Pentium 60/66 A-step",0 -db 5,1,"Pentium 60/66",0 -db 5,2,"Pentium 75 - 200",0 -db 5,3,"OverDrive PODP5V83",0 -db 5,4,"Pentium MMX",0 -db 5,7,"Mobile Pentium 75-200",0 -db 5,8,"Mobile Pentium MMX",0 -db 6,0,"Pentium Pro A-step",0 -db 6,1,"Pentium Pro",0 -db 6,3,"Pentium II (Klamath)",0 -db 6,5,"Pentium II (Deschutes)",0 -db 6,6,"Mobile Pentium II",0 -db 6,7,"Pentium III (Katmai)",0 -db 6,8,"Pentium III (Coppermine)",0 -db 6,9,"Mobile Pentium III",0 -db 6,10,"Pentium III (0.18 µm)",0 -db 6,11,"Pentium III (0.13 µm)",0 -db 7,0,"Itanium (IA-64)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@intelfamilye: -db 0,0,"Pentium IV (0.18 µm)",0 -db 0,1,"Pentium IV (0.18 µm)",0 -db 0,2,"Pentium IV (0.13 µm)",0 -db 0,3,"Pentium IV (0.09 µm)",0 -db 1,0,"Itanium 2 (IA-64)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@amdfamily: -db 4,3,"486 DX/2",0 -db 4,7,"486 DX/2-WB",0 -db 4,8,"486 DX/4",0 -db 4,9,"486 DX/4-WB",0 -db 4,14,"Am5x86-WT",0 -db 4,15,"Am5x86-WB",0 -db 5,0,"K5/SSA5",0 -db 5,1,"K5 (PR120/133)",0 -db 5,2,"K5 (PR166)",0 -db 5,3,"K5 (PR200)",0 -db 5,6,"K6 (0.30 µm)",0 -db 5,7,"K6 (0.25 µm)",0 -db 5,8,"K6-2",0 -db 5,9,"K6-3",0 -db 5,13,"K6-2+/K6-III+ (0.18 µm)",0 -db 6,0,"Athlon (25 µm)",0 -db 6,1,"Athlon (25 µm)",0 -db 6,2,"Athlon (18 µm)",0 -db 6,3,"Duron",0 -db 6,4,"Athlon (Thunderbird)",0 -db 6,6,"Athlon (Palamino)",0 -db 6,7,"Duron (Morgan)",0 -db 6,8,"Athlon (Thoroughbred)",0 -db 6,10,"Athlon (Barton)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@amdfamilye: -db 0,4,"Athlon 64",0 -db 0,5,"Athlon 64 FX/Opteron",0 -db 0FFh,0FFh,"Inconnu",0 - -@@cyrixfamily: -db 4,4,"MediaGX",0 -db 5,2,"6x86/6x86L",0 -db 5,4,"MediaGX MMX Enhanced",0 -db 6,0,"MII (6x86MX)",0 -db 6,5,"VIA Cyrix M2 core",0 -db 6,6,"WinChip C5A",0 -db 6,7,"WinChip C5B/WinChip C5C",0 -db 6,8,"WinChip C5N",0 -db 6,9,"WinChip C5XL/WinChip C5P",0 -db 0FFh,0FFh,"Inconnu",0 - -@@cyrixfamilye: -db 0FFh,0FFh,"Inconnu",0 - -endp cpuinfo - -;Test si CPUID est supporté oui=not Equal -nocpuid: - pushfd - pop eax - xor eax,00200000h - push eax - popfd - pushfd - pop eax - cmp eax,ebx - ret - - diff --git a/lib/str0.asm b/lib/str0.asm deleted file mode 100644 index 2e6aefa..0000000 --- a/lib/str0.asm +++ /dev/null @@ -1,993 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,,,> - - -exporting -declare checksyntax -declare cmpitems -declare gettypeditem -declare gettyped -declare whatisitem -declare whatis -declare strtoadress -declare strisadress -declare strisname -declare strisbase -declare strtoint -declare left -declare right -declare middle -declare fill -declare replaceallchar -declare searchchar -declare invert -declare cmpstr -declare evalue -declare insert -declare delete -declare copy -declare concat -declare compressdelimiter -declare setnbitems -declare getitemsize -declare getitem -declare getpointeritem -declare getnbitems -declare getlength -declare setlength -declare uppercase -declare onecase -declare lowercase -declare invertcase -ende - -;Librairie qui prend en charge le format de STR ASCIIZ -;# nombre 8 -;? str 7 -;& nom 6 - -;High Low -;0 variable 4 hex -;1 byte 3 dec -;2 word 2 oct -;3 3 octets 1 bin -;4 dword 5 adresse -;5 5 octets 6 nom -;6 ... 7 str - ; 8 nombre - -;Renvoie carry si la syntaxe de ds:si n'est pas respect‚ par rapport a es:di -PROC checksyntax FAR - ARG @src:word,@dest:word,@delim:word - USES ax,bx,cx,dx,si,di,ds,es - LOCAL @@temp:word:256 - push ss - pop es - lea si,[@@temp] - mov di,[@dest] - call copy,[@src],si - call xch - call compressdelimiter,si,[@delim] - call getnbitems,si,[@delim] - mov bx,ax - call xch - call getnbitems,di,[@delim] - cmp bx,ax - jne @@notequalatall - xor cx,cx -@@itemer: - call xch - call whatisitem,si,cx,[@delim] - mov dx,ax - call xch - call whatisitem,di,cx,[@delim] - cmp ax,dx - jne @@prob - cmp al,6 - jb @@equal - call cmpitems - je @@equal -@@prob: - cmp dl,4 - ja @@nonumber - cmp dl,8 - je @@equal - ;cmp al,4 - ;jne @@notequalatall - cmp dh,ah - ja @@notequalatall - jmp @@equal -@@nonumber: - cmp al,7 - jne @@nostr - cmp ah,0 - jne @@notequalatall - jmp @@equal -@@nostr: - cmp al,6 - jne @@noname - cmp dl,6 - jne @@noname - cmp ah,0 - jne @@notequalatall - jmp @@equal -@@noname: - cmp al,8 - je @@equal - jmp @@notequalatall -@@equal: - inc cx - cmp cx,bx - jne @@itemer - cld -@@ackno: - ret -@@notequalatall: - stc - jmp @@ackno -endp checksyntax - -xch: - push es - push ds - pop es - pop ds - ret - - -;Compare les ‚l‚ments cx de deux chaine ds:si et es:di -PROC cmpitems FAR - ARG @src:word,@dest:word,@item:word,@delim:word - USES ax,cx,si,di,es - push ds - pop es - call getpointeritem,[@src],[@item],[@delim] - mov si,ax - call getitemsize,[@src],[@item],[@delim] - mov di,[@dest] - mov cx,ax - cld - rep cmpsb - clc - ret -endp cmpitems - - -;Renvoie l'‚l‚ment cx de ds:si dans edx si nb et dans es:di si str ou name -PROC gettypeditem FAR - ARG @src:word,@item:word,@delim:word - USES bx,cx,si,di - mov si,[@src] - mov cx,[@item] - call getpointeritem,si,cx,[@delim] - mov di,ax - inc cx - call getpointeritem,si,cx,[@delim] - mov si,ax - dec si - mov cl,0 - xchg cl,[ds:si] - call gettyped,di - xchg cl,[ds:si] - clc - ret -endp gettypeditem - - -;Renvoie eax si nb et dans ds:eax si str ou name -PROC gettyped FAR - ARG @src:word - USES si - mov si,[@src] - xor eax,eax - call whatis,si - cmp al,1 - je @@bin - cmp al,2 - je @@oct - cmp al,3 - je @@dec - cmp al,4 - je @@hex - cmp al,5 - je @@pointer - mov ax,si - jmp @@endofgettypeditem -@@bin: - call strtoint,si,2 - jmp @@endofgettypeditem -@@oct: - call strtoint,si,8 - jmp @@endofgettypeditem -@@dec: - call strtoint,si,10 - jmp @@endofgettypeditem -@@hex: - call strtoint,si,16 - jmp @@endofgettypeditem -@@pointer: - call strtoadress,si -@@endofgettypeditem: - clc - ret -endp gettyped - -;Renvoie dans ax le type de la str0 point‚e par ds:%0 ‚l‚ment %1 delim %3 -PROC whatisitem FAR - ARG @src:word,@item:word,@delim:word - USES bx,cx,si,di - mov si,[@src] - mov cx,[@item] - call getpointeritem,si,cx,[@delim] - mov di,ax - inc cx - call getpointeritem,si,cx,[@delim] - mov si,ax - dec si - mov cl,0 - xchg cl,[ds:si] - call whatis,di - xchg cl,[ds:si] - clc - ret -endp whatisitem - -;Renvoie dans ax le type de la str0 point‚e par ds:%0 -;High Low -;0 variable 4 hex -;1 byte 3 dec -;2 word 2 oct -;3 3 octets 1 bin -;4 dword 5 adresse -;5 5 octets 6 name -;6 ... 7 str -PROC whatis FAR - ARG @src:word - USES bx,cx,edx,si - mov si,[@src] - xor cx,cx - mov cl,2 - call strisbase,si,cx - jnc @@finbase - mov cl,8 - call strisbase,si,cx - jnc @@finbase - mov cl,10 - call strisbase,si,cx - jnc @@finbase - mov cl,16 - call strisbase,si,cx - jc @@testadress -@@finbase: - mov bx,cx - xor ch,ch - mov al,[cs:bx+offset basenn-2] - push eax - call strtoint,si,cx - mov edx,eax - pop eax - cmp edx,0000FFFFh - ja @@bits32 - cmp dx,00FFh - ja @@bits16 - mov ah,1 - jmp @@endofwhat -@@bits16: - mov ah,2 - jmp @@endofwhat -@@bits32: - mov ah,4 - jmp @@endofwhat -@@testadress: - call strisadress,si - jc @@testname - mov ax,0005h - jmp @@endofwhat -@@testname: - call strisname - jc @@testnumber - xor ah,ah - cmp [byte ptr si],'&' - je @@okname - call getlength,si - mov ah,al -@@okname: - mov al,06h - jmp @@endofwhat -@@testnumber: - cmp [byte ptr si],'#' - jne @@testvarstr - xor ah,ah - mov al,08h - jmp @@endofwhat -@@testvarstr: - xor ah,ah - cmp [byte ptr si],'?' - je @@okvarstr - call getlength,si - mov ah,al -@@okvarstr: - mov al,07h -@@endofwhat: - clc - ret -endp whatis - - - -;Renvoie non carry si la str ds:si point‚e peut ˆtre une adresse -PROC strtoadress FAR - ;push - stc - ;pop - ret -endp strtoadress - - -;Renvoie en es:di le pointeur str0 ds:si -PROC strisadress FAR - ;push - stc - ;pop - ret -endp strisadress - -;Renvoie non carry si la str ds:%0 point‚e peut ˆtre un nom de fichier -PROC strisname FAR - ARG @src:word - USES ax,si,di - mov si,[@src] -@@isname: - mov al,[si] - inc si - cmp al,0 - je @@itsok - mov di,offset non -@@verify: - mov ah,[cs:di] - inc di - cmp ah,0FFh - je @@isname - cmp ah,al - jne @@verify - stc - jmp @@itsdead -@@itsok: - clc -@@itsdead: - ret -endp strisname - -non db '/<>|"?*:\',01,0FFh - -;Renvoie non carry si le texte point‚ par %0 est de la base %1 -PROC strisbase FAR - ARG @src:word,@base:word - USES ax,cx,si,di,es - push cs - pop es - mov si,[@src] -@@isstrbase: - mov al,[si] - cmp al,0 - je @@okbase - mov cx,[@base] - xor ch,ch - mov di,cx - cmp al,[es:di-2+offset basen] - je @@verifbase - xor ch,ch - inc cl - mov di,offset base - cld - repne scasb - cmp cx,0 - je @@nobase - inc si - jmp @@isstrbase -@@okbase: - clc -@@endbase: - ret -@@verifbase: - cmp [byte ptr si+1],0 - je @@okbase -@@nobase: - stc - jmp @@endbase -endp strisbase - -base db '0123456789ABCDEF' -basen db 'b o d h' -basenn db 1,0,0,0,0,0,2,0,3,0,0,0,0,0,4 - - -;Converti un str %0 de base %1 en int dans eax -PROC strtoint FAR - ARG @src:word,@base:word - USES ebx,ecx,edx,si,edi,es - push cs - pop es - mov si,[@src] -@@gotos: - cmp [byte ptr si+1], 0 - je @@oklo - inc si - jmp @@gotos -@@oklo: - mov edi,1 - xor ebx,ebx -@@baseto: - cmp [@src],si - ja @@endbaseto - mov al,[si] - xor ecx,ecx - mov cl,[byte ptr @base] - inc cl - push di - mov di,offset base - cld - repne scasb - pop di - jne @@noop - sub cl,[byte ptr @base] - neg cl - mov eax,edi - mul ecx - add ebx,eax - mov eax,edi - mov cl,[byte ptr @base] - mul ecx - mov edi,eax -@@noop: - dec si - jmp @@baseto -@@endbaseto: - mov eax,ebx - clc - ret -endp strtoint - - -;Renvoie en ds:%1 la partie de %2 caractŠres a partir de la gauche de ds:%0 -PROC left FAR - ARG @src:word,@dest:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - mov cx,[@nb] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp left - -;Renvoie en ds:%1 la partie de %2 caractŠres a partir de la droite de ds:%0 -PROC right FAR - ARG @src:word,@dest:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength,si - add si,ax - sub si,[@nb] - mov cx,[@nb] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp right - -;Renvoie en ds:%1 la partie de %3 caractŠres a partir de la position %2 de ds:%0 -PROC middle FAR - ARG @src:word,@dest:word,@item:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - mov cx,[@nb] - add si,[@item] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp middle - -;Rempli de %3 caractŠres %2 a partir de la position %1 de ds:%0 -PROC fill FAR - ARG @src:word,@item:word,@char:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov di,[@src] - add di,[@item] - mov ax,[@char] - mov cx,[@nb] - cld - rep stosb - clc - ret -endp fill - -;Remplace tout les caractŠres %1 de ds:%0 par des caractŠres %2 -PROC replaceallchar FAR - ARG @src:word,@char1:word,@char2:word - USES ax,cx,dx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - mov ax,[@char1] - mov dx,[@char2] - push ds - pop es -@@findandchange: - repne scasb - cmp cx,0 - je @@endofchange - mov [es:di-1],dl - jmp @@findandchange -@@endofchange: - clc - ret -endp replaceallchar - -;Recherche un caractŠre dl dans la chaŒne ds:%0 -PROC searchchar FAR - ARG @src:word,@char:word - USES cx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@char] - repne scasb - mov ax,di - dec ax - clc - ret -endp searchchar - -;Inverse la chaine point‚e en ds:%0 -PROC invert FAR - ARG @src:word - USES ax,cx,si,di - mov si,[@src] - call getlength,si - mov di,si - add di,ax - dec di -@@revert: - mov al,[si] - xchg al,[di] - mov [si],al - inc si - dec di - cmp si,di - ja @@finishinvert - dec di - cmp si,di - ja @@finishinvert - inc di - jmp @@revert -@@finishinvert: - clc - ret -endp invert - -;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal -PROC cmpstr FAR - ARG @src:word,@dest:word - USES cx,dx,si,di - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength,di - mov cx,ax - call getlength,si - cmp cx,ax - jne @@notequal - repe cmpsb -@@notequal: - ret -endp cmpstr - -;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal et renvoie le nb de caractŠre egaux dans ax -PROC evalue FAR - ARG @src:word,@dest:word - USES cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength ,di - mov cx,ax - repe cmpsb - pushf - jne @@noident - sub ax,cx - popf - clc - ret -@@noident: - sub ax,cx - dec ax - popf - clc - ret -endp evalue - -;Insert une chaine ds:%0 en ds:%1 a partir du caractŠre %2 -PROC insert FAR - ARG @src:word,@dest:word,@item:word - USES ax,cx,si,di,es - push es - pop ds - mov si,[@dest] - call getlength,si - mov cx,ax - add si,ax - mov di,si - call getlength,[@src] - add di,ax - sub cx,[@item] - inc cx - std - rep movsb - mov si,[@src] - mov di,[@dest] - add di,[@item] - mov cx,ax - cld - rep movsb - clc - ret -endp insert - - -;Detruit %2 caractŠres a partir du caractŠre %1 de DS:%0 -PROC delete FAR - ARG @src:word,@item:word,@size:word - USES ax,cx,dx,si,di,es - push ds - pop es - mov si,[@src] - call getlength,si - mov cx,ax - sub cx,[@size] - sub cx,[@item] - inc cx - add si,[@item] - mov di,si - add si,[@size] - cld - rep movsb - clc - ret -endp delete - -;Copie une chaine de ds:si en es:di -PROC copy FAR - ARG @src:word,@dest:word - USES ax,cx,si,di - mov si,[@src] - mov di,[@dest] - call getlength,si - mov cx,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp copy - - -;ConcatŠne le chaine ds:si avec ds:di -PROC concat FAR - ARG @src:word,@dest:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - call getlength,si - mov cx,ax - mov di,[@dest] - call getlength,di - add di,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp concat - - -;D‚truit les d‚limiteur qui sont cons‚cutifs dans ds:%0 -> renvoie le nb d'item -PROC compressdelimiter FAR - ARG @src:word,@delim:word - USES cx,dx,si,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx -@@compressitems: - repne scasb - inc dx -@@againcomp: - cmp [di],al - jne @@nosup - call delete,di,0,1 - jmp @@againcomp -@@nosup: - cmp cx,0 - jne @@compressitems - mov ax,dx - clc - ret -endp compressdelimiter - -;Met le nombre d'‚l‚ments de ds:%0 à %1 -PROC setnbitems FAR - ARG @src:word,@size:word,@delim:word - USES ax,cx,di,es - mov di,[@src] - cmp [@size],0 - je @@onlyzero - call getnbitems,di,[@delim] - cmp [@size],ax - je @@noadjust - jb @@subsome - push ds - pop es - sub ax,[@size] - neg ax - mov cx,ax - call getlength,di - add di,ax - mov ax,[@delim] - mov ah,'a' - rep stosw - xor al,al - stosb - jmp @@noadjust -@@subsome: - call getpointeritem,[@src],[@size],[@delim] - dec ax - mov di,ax -@@onlyzero: - mov [byte ptr di],0 -@@noadjust: - clc - ret -endp setnbitems - -;Renvoie la taille ax de l'‚l‚ment %0 -PROC getitemsize FAR - ARG @src:word,@item:word,@delim:word - USES cx,dx - mov cx,[@item] - call getpointeritem,[@src],cx,[@delim] - mov dx,ax - inc cx - call getpointeritem,[@src],cx,[@delim] - sub ax,dx - dec ax - clc - ret -endp getitemsize - -;Renvoie en ds:%1 l'‚l‚ment %2 de ds:%0 -PROC getitem FAR - ARG @src:word,@dest:word,@item:word,@delim:word - USES ax,cx,si,di,es - push ds - pop es - call getpointeritem,[@src],[@item],[@delim] - mov si,ax - call getitemsize,[@src],[@item],[@delim] - mov di,[@dest] - mov cx,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp getitem - -;renvoi un pointeur ax sur l'‚l‚ment %1 de ds:%0 -PROC getpointeritem FAR - ARG @src:word,@item:word,@delim:word - USES cx,dx,di,es - mov di,[@src] - cmp [@item],0 - je @@finishpointer - push ds - pop es - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx -@@countnbitems: - cmp [@item],dx - je @@finishpointer - cld - repne scasb - inc dx - cmp cx,0 - jne @@countnbitems - inc di -@@finishpointer: - mov ax,di - clc - ret -endp getpointeritem - -;Renvoie le nombre d'‚l‚ments ax de ds:%0 -PROC getnbitems FAR - ARG @src:word,@delim:word - USES cx,dx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx - cld -@@countitems: - repne scasb - inc dx - cmp cx,0 - jne @@countitems - mov ax,dx - clc - ret -endp getnbitems - -;renvoie la taille en octets AX de la chaine point‚e en ds:%0 -PROC getlength FAR - ARG @src:word - USES cx,di,es - push ds - pop es - mov di,[@src] - mov al,0 - mov cx,0FFFFh - cld - repne scasb - neg cx - dec cx - dec cx - mov ax,cx - clc - ret -endp getlength - -;Met la taille en octets de la chaine point‚e ds:%0 a %1 -PROC setlength FAR - ARG @src:word,@size:word - USES si - mov si,[@src] - add si,[@size] - mov [byte ptr si],0 - clc - ret -endp setlength - -;met en majuscule la chaine ds:%0 -PROC uppercase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@uppercase: - mov al,[ds:si] - inc si - cmp al,0 - je @@enduppercase - cmp al,'a' - jb @@uppercase - cmp al,'z' - ja @@uppercase - sub [byte ptr si-1],'a'-'A' - jmp @@uppercase -@@enduppercase: - clc - ret -endp uppercase - -;met en majuscule la premiŠre lettre chaine ds:%0 -PROC onecase FAR - ARG @src:word - USES ax - mov si,[@src] - mov al,[ds:si] - cmp al,'a' - jb @@oneenduppercase - cmp al,'z' - ja @@oneenduppercase - sub [byte ptr si],'a'-'A' -@@oneenduppercase: - clc - ret -endp onecase - -;met en minuscule la chaine ds:%0 -PROC lowercase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@lowercase: - mov al,[ds:si] - inc si - cmp al,0 - je @@endlowercase - cmp al,'A' - jb @@lowercase - cmp al,'Z' - ja @@lowercase - add [byte ptr si-1],'a'-'A' - jmp @@lowercase -@@endlowercase: - clc - ret -endp lowercase - -;Inverse la casse la chaine ds:%0 -PROC invertcase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@invertcase: - mov al,[ds:si] - inc si - cmp al,0 - je @@endinvertcase - cmp al,'A' - jb @@invertcase - cmp al,'Z' - jbe @@goinvertcase - cmp al,'a' - jb @@invertcase - cmp al,'z' - ja @@invertcase - sub [byte ptr si-1],'a'-'A' - jmp @@invertcase -@@goinvertcase: - add [byte ptr si-1],'a'-'A' - jmp @@invertcase -@@endinvertcase: - clc - ret -endp invertcase - diff --git a/lib/video.asm b/lib/video.asm deleted file mode 100644 index f1b22d6..0000000 --- a/lib/video.asm +++ /dev/null @@ -1,891 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare print -declare showdate -declare showtime -declare showname -declare showattr -declare showsize -declare showspace -declare showint -declare showsigned -declare showhex -declare showbin -declare showbcd -declare showstring -declare showstring0 -declare showintr -declare showintl -declare showchar -ende - -importing -use VIDEO,addline -use VIDEO,setcolor -use VIDEO,getxy -use VIDEO,setxy -use VIDEO,setvideomode -use VIDEO,setfont -use VIDEO,clearscreen -use VIDEO,enablescroll -use VIDEO,disablescroll -use VIDEO,showchars -use VIDEO,savestate -use VIDEO,restorestate -endi - - -;================PRINT============== -;Affiche la chaine %0 en utilisant les parametres de formatage %x....%x -;-> %0 %x -;<- -;=================================== -PROC print FAR - ARG @@pointer:word - push ax bx cx si di - xor di,di - mov si,[@@pointer] -@@strinaize0: - mov cl,[si] - cmp cl,0 - je @@no0 - cmp cl,'%' - je @@special - cmp cl,'\' - je @@special2 -@@showit: - xor ch,ch - call [cs:showchars],cx,0FFFFh - inc si - jmp @@strinaize0 -@@special: - cmp [byte ptr si+1],'%' - jne @@notshowit - inc si - jmp @@showit -@@notshowit: - mov cl,[byte ptr si+1] - cmp cl,'c' - je @@showchars - cmp cl,'u' - je @@showint - cmp cl,'v' - je @@showfixint - cmp cl,'w' - je @@showintr - cmp cl,'i' - je @@showsigned - cmp cl,'h' - je @@showhex - cmp cl,'b' - je @@showbin - cmp cl,'s' - je @@showstring - cmp cl,'0' - je @@showstring0 - cmp cl,'y' - je @@showbcd - cmp cl,'z' - je @@showsize - cmp cl,'a' - je @@showattr - cmp cl,'n' - je @@showname - cmp cl,'t' - je @@showtime - cmp cl,'d' - je @@showdate - clc - jmp @@no0 - -@@showchars: - cmp [byte ptr si+2],'M' - je @@showmultchar - call [cs:showchars],[word ptr @@pointer+di+2],0FFFFh - add si,2 - add di,2 - jmp @@strinaize0 -@@showmultchar: - mov cx,[offset @@pointer+di+2+2] - cmp cx,0 - je @@nextfunc -@@showcharsx: - call [cs:showchars],[word ptr @@pointer+di+2],0FFFFh - dec cx - jnz @@showcharsx -@@nextfunc: - add si,3 - add di,4 - jmp @@strinaize0 - -@@showint: - call showint,[dword ptr @@pointer+di+2] - add si,2 - add di,4 - jmp @@strinaize0 - -@@showfixint: - call showintl,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2] - add di,6 - add si,2 - jmp @@strinaize0 - -@@showintr: - call showintr,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2] - add di,6 - add si,2 - jmp @@strinaize0 - -@@showsigned: - call @@Chosesize - call showsigned - jmp @@strinaize0 - -@@showhex: - call @@Chosesize - call showhex - jmp @@strinaize0 - -@@showbin: - call @@Chosesize - call showbin - jmp @@strinaize0 - -@@showstring: - cmp [byte ptr si+2],'P' - je @@showstring@@pointer - call showstring,[word ptr @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 -@@showstring@@pointer: - push ds - mov ds,[offset @@pointer+di+2+2] - call showstring,[word ptr @@pointer+di+2] - add si,3 - add di,4 - pop ds - jmp @@strinaize0 - -@@showstring0: - cmp [byte ptr si+2],'P' - je @@showstring0@@pointer - call showstring0,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 -@@showstring0@@pointer: - push ds - mov ds,[offset @@pointer+di+2+2] - call showstring0,[word ptr offset @@pointer+di+2] - add si,3 - add di,4 - pop ds - jmp @@strinaize0 - -@@showbcd: - call @@Chosesize - call showbcd - jmp @@strinaize0 - -@@showsize: - call showsize,[dword ptr offset @@pointer+di+2] - add si,2 - add di,4 - jmp @@strinaize0 - -@@showattr: - call showattr,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showname: - call showname,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showtime: - call showtime,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showdate: - call showdate,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@Chosesize: - pop cx - push [dword ptr offset @@pointer+di+2] - add di,4 - cmp [byte ptr si+2],'B' - je @@byte - cmp [byte ptr si+2],'W' - je @@word - cmp [byte ptr si+2],'D' - je @@dword - dec si - -@@word: - push 16 - add si,3 - push cx - retn - -@@byte: - push 8 - add si,3 - push cx - retn - -@@dword: - push 32 - add si,3 - push cx - retn - -@@special2: - cmp [byte ptr si+1],'\' - jne @@notshowit2 - inc si - jmp @@showit -@@notshowit2: - mov cl,[byte ptr si+1] - cmp cl,'l' - je @@showline - cmp cl,'g' - je @@goto - cmp cl,'h' - je @@gotox - cmp cl,'c' - je @@color - cmp cl,'m' - je @@setvideomode - cmp cl,'e' - je @@clearscreen - cmp cl,'s' - je @@savestate - cmp cl,'r' - je @@restorestate - cmp cl,'i' - je @@enablescroll - cmp cl,'j' - je @@disablescroll - cmp cl,'f' - je @@setfont - clc - jmp @@no0 - -@@color: - mov al,[si+2] - sub al,'0' - shl al,4 - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setcolor],ax - add si,4 - jmp @@strinaize0 - -@@gotox: - mov bh,[si+2] - sub bh,'0' - mov bl,bh - shl bl,3 - add bl,bh - add bl,bh - add bl,[si+3] - sub bl,'0' - xor bh,bh - call [cs:getxy] - xor ah,ah - call [cs:setxy],bx,ax - add si,4 - jmp @@strinaize0 - -@@setvideomode: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setvideomode],ax - add si,4 - jmp @@strinaize0 - -@@setfont: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setfont],ax - add si,4 - jmp @@strinaize0 - -@@showline: - call [cs:addline] - add si,2 - jmp @@strinaize0 - -@@clearscreen: - call [cs:clearscreen] - add si,2 - jmp @@strinaize0 - -@@savestate: - call [cs:savestate] - add si,2 - jmp @@strinaize0 - -@@restorestate: - call [cs:restorestate] - add si,2 - jmp @@strinaize0 - -@@enablescroll: - call [cs:enablescroll] - add si,2 - jmp @@strinaize0 - -@@disablescroll: - call [cs:disablescroll] - add si,2 - jmp @@strinaize0 - -@@goto: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - ; - mov bh,[si+5] - sub bh,'0' - mov bl,bh - shl bl,3 - add bl,bh - add bl,bh - add bl,[si+6] - sub bl,'0' - xor bh,bh - call [cs:setxy],ax,bx - add si,7 - jmp @@strinaize0 - -@@no0: - add di,bp - mov ax,[ss:bp] ;BP - mov bx,[ss:bp+2] ;IP - mov cx,[ss:bp+4] ;CS - mov [ss:di],ax - mov [ss:di+2],bx - mov [ss:di+4],cx - mov bp,di - pop di si cx bx ax - mov sp,bp - ret -ENDP print - - -;================SHOWDATE============== -;Affiche la date contenu en %0 -;-> %0 -;<- -;====================================== -PROC showdate FAR - ARG @dates:word - USES edx - xor edx,edx - mov dx,[@dates] - and dx,11111b - call showintl,2,edx - call [cs:showchars],'/',0FFFFh - mov dx,[@dates] - shr dx,5 - and dx,111b - call showintl,2,edx - call [cs:showchars],'/',0FFFFh - mov dx,[@dates] - shr dx,8 - and dx,11111111b - add dx,1956 - call showintl,2,edx - ret -ENDP showdate - -;================SHOWTIME============== -;Affiche l'heure contenu en %0 -;-> %0 -;<- -;====================================== -PROC showtime FAR - ARG @times:word - USES edx - xor edx,edx - mov dx,[@times] - shr dx,11 - and dx,11111b - call showintl,2,edx - call [cs:showchars],':',0FFFFh - mov dx,[@times] - shr dx,5 - and dx,111111b - call showintl,2,edx - call [cs:showchars],':',0FFFFh - mov dx,[@times] - and dx,11111b - shl dx,1 - call showintl,2,edx - ret -ENDP showtime - -;================SHOWNAME============== -;Affiche le nom pointé par ds:%0 -;-> ds:%0 -;<- -;====================================== -PROC showname FAR - ARG @thename:word - USES cx,si - mov si,[@thename] - xor cx,cx -@@showthename: - call [cs:showchars],[word ptr ds:si],0FFFFh - inc si - inc cx - cmp cx,8 - jne @@suiteaname - call [cs:showchars],' ',0FFFFh -@@suiteaname: - cmp cx,8+3 - jb @@showthename - ret -ENDP showname - -;================SHOWATTR============== -;Affiche les attributs spécifié par %0 -;-> %0 -;<- -;====================================== -PROC showattr FAR - ARG @attr:word - push 0FFFFh - test [@attr],00000001b - je @@noreadonly - push 'L' - jmp @@readonly -@@noreadonly: - push '-' -@@readonly: - call [cs:showchars] - push 0FFFFh - test [@attr],00000010b - je @@nohidden - push 'C' - jmp @@hidden -@@nohidden: - push '-' -@@hidden: - call [cs:showchars] - push 0FFFFh - test [@attr],00000100b - je @@nosystem - push 'S' - jmp @@system -@@nosystem: - push '-' -@@system: - call [cs:showchars] - push 0FFFFh - test [@attr],00100000b - je @@noarchive - push 'A' - jmp @@archive -@@noarchive: - push '-' -@@archive: - call [cs:showchars] - push 0FFFFh - test [@attr],00010000b - je @@nodirectory - push 'R' - jmp @@directory -@@nodirectory: - push '-' -@@directory: - call [cs:showchars] - ret -ENDP showattr - -;================SHOWSIZE============== -;Affiche le nom pointé par %0 -;-> %0 -;<- -;====================================== -PROC showsize FAR - ARG @thesize:dword - USES edx,ds - push cs - pop ds - mov edx,[@thesize] - cmp edx,1073741824 - ja @@giga - cmp edx,1048576*9 - ja @@mega - cmp edx,1024*9 - ja @@kilo - call showintr,4,edx - call showstring0,offset unit - jmp @@finsize -@@kilo: - shr edx,10 - call showintr,4,edx - call showstring0,offset unitkilo - jmp @@finsize -@@mega: - shr edx,20 - call showintr,4,edx - call showstring0,offset unitmega - jmp @@finsize -@@giga: - shr edx,30 - call showintr,4,edx - call showstring0,offset unitgiga -@@finsize: - ret - -unit db ' o ',0 -unitkilo db ' ko',0 -unitmega db ' mo',0 -unitgiga db ' go',0 -ENDP showsize - -;==========SHOWSPACE=========== -;met un espace aprés le curseur -;-> -;<- -;============================== -PROC showspace FAR - call [cs:showchars],' ',0FFFFh - clc - ret -ENDP showspace - - -;==========SHOWINT=========== -;Affiche un entier %0 aprés le curseur -;-> %0 -;<- -;============================ -PROC showint FAR - ARG @integer:dword - USES eax,bx,cx,edx,esi - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp ax,0 - jne @@decint - mov ax,cx -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret - -showbuffer db 50 dup (0FFh) -ENDP showint - -;==========SHOWINTL=========== -;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a gauche -;-> %0 un entier % taille en caractères -;<- -;=============================== -PROC showintl FAR - ARG @sizeofint:word,@integer:dword - USES eax,bx,cx,edx,esi,di - mov di,[@sizeofint] - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp cx,di - jae @@nomuch - cmp ax,0 - jne @@decint - mov ax,di - xchg cx,di - sub cx,di -@@rego: - mov [byte ptr cs:bx],'0' - dec bx - dec cx - jnz @@rego - jmp @@finishim -@@nomuch: - mov ax,di -@@finishim: -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret -ENDP showintl - -;==========SHOWINTR=========== -;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a droite -;-> %0 un entier % taille en caractères -;<- -;=============================== -PROC showintr FAR - ARG @sizeofint:word,@integer:dword - USES eax,bx,cx,edx,esi,di - mov di,[@sizeofint] - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp cx,di - jae @@nomuch - cmp ax,0 - jne @@decint - mov ax,di - xchg cx,di - sub cx,di -@@rego: - mov [byte ptr cs:bx],' ' - dec bx - dec cx - jnz @@rego - jmp @@finishim -@@nomuch: - mov ax,di -@@finishim: -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret -ENDP showintr - -;==========SHOWSIGNED=========== -;Affiche un entier %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;=============================== -PROC showsigned FAR - ARG @sizeofint:word,@integer:dword=taille - USES ebx,cx,edx - mov ebx,[@integer] - mov cx,[@sizeofint] - xor edx,edx - cmp cx,1 - ja @@signed16 - mov dl,bl - cmp dl,7Fh - jbe @@notsigned - neg dl - jmp @@showminus -@@signed16: - cmp cx,2 - ja @@signed32 - mov dx,bx - cmp dx,7FFFh - jbe @@notsigned - neg dx - jmp @@showminus -@@signed32: - mov edx,ebx - cmp edx,7FFFFFFFh - jbe @@notsigned - neg edx -@@showminus: - call [cs:showchars],'-',0FFFFh -@@notsigned: - call showint,edx - ret -ENDP showsigned - -;==========SHOWHEX=========== -;Affiche un nombre hexadécimal %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showhex FAR - ARG @sizeofint:word,@integer:dword=taille - USES ax,bx,cx,edx - mov edx,[@integer] - mov cx,[@sizeofint] - mov ax,cx - shr ax,2 - sub cx,32 - neg cx - shl edx,cl -@@Hexaize: - rol edx,4 - mov bx,dx - and bx,0fh - mov cl,[cs:bx+offset Tab] - call [cs:showchars],cx,0FFFFh - dec al - jnz @@Hexaize - ret - -Tab db '0123456789ABCDEF' -ENDP showhex - -;==========SHOWBIN=========== -;Affiche un nombre binaire %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showbin FAR - ARG @sizeofint:word,@integer:dword=taille - USES ax,cx,edx - mov edx,[@integer] - mov cx,[@sizeofint] - sub cx,32 - neg cx - shl edx,cl - mov ax,[@sizeofint] -@@binaize: - rol edx,1 - mov cl,'0' - adc cl,0 - call [cs:showchars],cx,0FFFFh - dec al - jnz @@binaize - ret -ENDP showbin - -;==========SHOWBCD=========== -;Affiche un nombre en BCD %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showbcd FAR - ARG @sizeofint:word,@integer:dword - USES ax,cx,edx - mov edx,[@integer] - mov ax,[@sizeofint] - mov cx,ax - shr ax,2 - sub cx,32 - neg cx - shl edx,cl -@@BCDaize: - rol edx,4 - mov cl,dl - and cl,0fh - add cl,'0' - call [cs:showchars],cx,0FFFFh - dec al - jnz @@BCDaize - ret -ENDP showbcd - -;==========SHOWSTRING=========== -;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur -;-> ds:%1 pointeur chaine type pascal -;<- -;=============================== -PROC showstring FAR - ARG @pointer:word - USES bx,si - mov si,[@pointer] - mov bl,[si] -@@strinaize: - inc si - call [cs:showchars],[word ptr si],0FFFFh - dec bl - jnz @@strinaize - ret -ENDP showstring - -;==========showchars=========== -;Affiche un caractère %0 aprés le curseur -;-> %0 caractère -;<- -;=============================== -PROC showchar FAR - ARG @pointer:word - call [cs:showchars],[@pointer],0FFFFh - ret -ENDP showchar - -;==========SHOWSTRING0=========== -;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur -;-> ds:%1 pointeur chaine type zéro terminal -;<- -;================================ -PROC showstring0 FAR - ARG @pointer:word - USES cx,si - mov si,[@pointer] -@@strinaize0: - mov cl,[si] - cmp cl,0 - je @@no0 - call [cs:showchars],cx,0FFFFh - inc si - jmp @@strinaize0 -@@no0: - ret -ENDP showstring0 - diff --git a/noyau/8237.asm b/noyau/8237.asm deleted file mode 100644 index c03dcb1..0000000 --- a/noyau/8237.asm +++ /dev/null @@ -1,266 +0,0 @@ -;**************************************************************** -; * -; Periph‚rique : DMA * -; Plages Entr‚es-Sorties : 0000-000F * -; 00C0-00DF * -; 0080-0090 * -; (0094-009F) * -; Plages M‚moires : AUCUNES * -; * -DmaRead equ 044h ;I/O to memory, no autoinit, increment, single mode -DmaWrite equ 048h ;Memory to I/O, no autoinit, increment, single mode - -;Lecture des bits du registre d'‚tat (08, D0 ) -STATUS_REQ3 = 80h ;Bit actif: le canal DMA concern‚ -STATUS_REQ2 = 40h ;re‡oit une requˆte DMA -STATUS_REQ1 = 20h ;Request -STATUS_REQ0 = 10h -STATUS_TC3 = 08h ;Bit actif: Un transfert DMA a ‚t‚ -STATUS_TC2 = 04h ;ex‚cut‚ depuis la derniŠre lecture -STATUS_TC1 = 02h ;du registre d'‚tat. -STATUS_TC0 = 01h ;Terminal Count - -;Ecriture des bits du registre de commande (08, D0) -COMMAND_DACKLEVEL = 80h ;Bit 7 actif: ligne DMA Acknowledge HIGH active -COMMAND_DREQLEVEL = 40h ;Bit 6 actif: ligne REQ Acknowledge LOW active -COMMAND_EXTWRITE = 20h ;Bit 5 actif: EXTENDED Write,sinon LATE Write -COMMAND_FIXEDPRI = 10h ;Bit 4 actif: priorit‚ constante -COMMAND_COMPRESS = 08h ;Bit 3 actif: compression -COMMAND_INACTIVE = 04h ;Bit 2 actif: contr“leur d‚sactiv‚ -COMMAND_ADH0 = 02h ;Bit 1 actif: Adress Hold pour canal 0/4 d‚sactiv‚ -COMMAND_MEM2MEM = 01h ;Bit 0 actif: m‚moire/m‚moire, sinon m‚moire/p‚riph‚rie - -;Ecriture des bits du registre de requˆte ( 09, D2 ) -REQUEST_RESERVED = 0F8h ;R‚glage des bits r‚serv‚s =0 -REQUEST_SET = 04h ;D‚finir requˆte DMA -REQUEST_CLR = 00h ;Supprimer requˆte DMA -REQUEST_MSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ecriture des bits du registre de masquage de canal ( 0A, D4 ) -CHANNEL_RESERVED = 0F8h ;R‚glage des bits r‚serv‚s =0 -CHANNEL_SET = 04h ;Masquer/verrouiller canal DMA -CHANNEL_CLR = 00h ;Lib‚rer canal DMA -CHANNEL_MSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ecriture des bits du registre de mode (0B,D6) -MODE_DEMAND = 00h ;Transf‚rer … la demande -MODE_SINGLE = 40h ;Transf‚rer valeurs uniques -MODE_BLOCK = 80h ;Transf‚rer en bloc -MODE_CASCADE = 0C0h ;Transf‚rer en cascade -MODE_DECREMENT = 20h ;D‚cr‚menter -MODE_AUTOINIT = 10h ;Autoinitialisation vers la fin -MODE_VERIFY = 00h ;V‚rifier -MODE_WRITE = 04h ;Ecrire dans la m‚moire -MODE_READ = 08h ;Lire depuis la m‚moire -MODE_INVALID = 0Ch ;Incorrect -MODE_CHANNELMSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ports du DMA esclave - -DmaStatusS dw 08h ;R SLAVE Registre d'‚tat -DmaCommandS dw 08h ;W SLAVE Registre de commande -DmaRequestS dw 09h ;W SLAVE Ex‚cuter requˆte DMA -DmachMaskS dw 0ah ;W SLAVE Masquer canaux -DmaModeS dw 0bh ;W SLAVE Mode de transfert -DmaFlipFlopS dw 0ch ;W SLAVE Flipflop adr/compteur -DmaTempS dw 0dh ;R SLAVE Reset du contr“leur -DmaClearS dw 0dh ;R SLAVE Registre temporaire -DmaMaskClrS dw 0eh ;R SLAVE Lib‚rer canaux -DmaMaskS dw 0fh ;R SLAVE Masquer canaux - -;Ports du DMA esclave - -DmaStatusM dw 0D0h ;R MASTER Registre d'‚tat -DmaCommandM dw 0D0h ;W MASTER Registre de commande -DmaRequestM dw 0D2h ;W MASTER Ex‚cuter requˆte DMA -DmaMaskM dw 0D4h ;W MASTER Masquer canaux -DmaModeM dw 0D6h ;W MASTER Mode de transfert -DmaFlipFlopM dw 0D8h ;W MASTER Flipflop adr/compteur -DmaTempM dw 0DAh ;R MASTER Reset du contr“leur -DmaClearM dw 0DAh ;R MASTER Registre temporaire -DmaMaskClrM dw 0DCh ;R MASTER Lib‚rer canaux -DmaMaskM2 dw 0DEh ;R MASTER Masquer canaux - -DmaAdress db 00h ;DMA address register 0 - db 002h ;DMA address register 1 - db 004h ;DMA address register 2 - db 006h ;DMA address register 3 - db 0c0h ;DMA address register 4 - db 0c4h ;DMA address register 5 - db 0c8h ;DMA address register 6 - db 0cch ;DMA address register 7 - -DmaCount db 001h ;DMA count registers 0 - db 003h ;DMA count registers 1 - db 005h ;DMA count registers 2 - db 007h ;DMA count registers 3 - db 0c2h ;DMA count registers 4 - db 0c6h ;DMA count registers 5 - db 0cah ;DMA count registers 6 - db 0ceh ;DMA count registers 7 - -DmaPage db 087h ;DMA page registers 0 - db 083h ;DMA page registers 1 - db 081h ;DMA page registers 2 - db 082h ;DMA page registers 3 - db 08fh ;DMA page registers 4 - db 08bh ;DMA page registers 5 - db 089h ;DMA page registers 6 - db 08ah ;DMA page registers 7 - -;verouille le canal AL -DisableDma: - push ax dx - cmp al, 4 - jae MasterDisableDma - mov dx, DmaMaskS - or al, 00000100b - out dx, al - jmp EndDisableDma -MasterDisableDma: - mov dx, DmaMaskS - and al, 00000011b - or al, 00000100b - out dx, al -EndDisableDma: - pop dx ax - ret - -;déverouille le canal AL -EnableDma: - push ax dx - cmp al, 4 - jae MasterDisableDma - mov dx, DmaMaskS - out dx, al - jmp EndEnableDma -MasterEnableDma: - mov dx, DmaMaskS - and al, 00000011b - out dx, al -EndEnableDma: - pop dx ax - ret - -;Efface le FlipFlop canal AL -ClrDmaFlipFlop: - push ax dx - cmp al, 4 - jae MasterClrFlipFlopDma - mov dx,DmaFlipFlopS - xor ax, ax - out dx, al - jmp EndClrFlipFlopDma -MasterClrFlipFlopDma: - mov dx,DmaFlipFlopM - xor ax, ax - out dx, al -EndClrFlipFlopDma: - pop dx ax - ret - -;Met le mode du canal al à ah -SetDmaMode: - push ax dx - cmp al, 4 - jae MasterSetDmaMode - mov dx,DmaModeS - or al, ah - out dx, al - jmp EndSetDmaMode -MasterSetDmaMode: - mov dx,DmaModeM - and al, 00000011b - or al, ah - out dx, al -EndSetDmaMode: - pop dx ax - ret - - -;Met le page du canal al a ah -SetDmaPage: - push ax bx dx si - cmp al, 4 - jae MasterSetDmaPage - mov si, offset DmaPage - xor dh, dh - xor bh, bh - mov bl, al - mov dl, cs:[si+bx] - xchg al, ah - out dx, al - jmp EndSetDmaPage -MasterSetDmaPage: -EndSetDmaPage: - pop si dx bx ax - ret - -;Met l'adresse du canal al a DS:BX -SetDmaAdress: - push ax bx cx dx si - push ax - mov ax, ds - and ax, 0000111111111111b - shl ax,4 - add bx, ax - mov ax, ds - and ax, 1111000000000000b - shr ax, 4 - mov cx,ax - pop ax - push ax - add ax,cx - call SetDmaPage - pop ax - call ClrDmaFlipFlop - mov si, offset DmaAdress - xor dh, dh - push bx - xor bh, bh - mov bl, al - mov dl, byte ptr cs:[si+bx] - pop bx - cmp al, 4 - jae MasterSetDmaAddress - mov al, bh - out dx, al - mov al, bl - out dx, al - jmp EndSetDmaAddress -MasterSetDmaAddress: - mov al, bh - out dx, al - call ClrDmaFlipFlop - mov al, bl - out dx, al -EndSetDmaAddress: - pop si dx cx bx ax - ret - -;Spécifie au controleur DMA le nombre d'octets à transférer dans CX -SetDmaCount: - push ax bx dx si - call ClrDmaFlipFlop - mov si, offset DmaCount - xor dh, dh - xor bh, bh - mov bl, al - mov dl, byte ptr cs:[si+bx] - cmp al, 4 - jae MasterSetDmaCount - mov al, ch - out dx, al - mov al, cl - out dx, al - jmp EndSetDmaCount -MasterSetDmaCount: - mov al, ch - out dx, al - call ClrDmaFlipFlop - mov al, cl - out dx, al -EndSetDmaCount: - pop si dx bx ax - ret - diff --git a/noyau/8259a.asm b/noyau/8259a.asm deleted file mode 100644 index 2349253..0000000 --- a/noyau/8259a.asm +++ /dev/null @@ -1,415 +0,0 @@ -;Adresses de port du contr“leur IRQ - MASTERPIC = 020h ;Adresse de base du PIC maŒtre - SLAVEPIC = 0A0h ;Adresse de base du PIC esclave - IRQMASK = 001h ;Offset sur port de masquage - -;Commandes IRQ OCW2 - DISABLEROTATION = 000h ;Desactiver la rotation de priorités en mode EOI automatique - EOI = 020h ;End of Interrupt non sp‚cifi‚ - COMMANDEOI = 060h ;Commande EOI particulière - ENABLEROTATION = 080h ;Activer la rotation de priorités en mode EOI automatique - ROTATIONNOSPEC = 0A0h ;Rotation des priorités en mode EOI automatique - SETPRIORITY = 0C0h ;Definir la priorité - ROTATIONSPEC = 0E0h ;Rotation des priorités en mode EOI spécifié - -;Position des vecteurs d'interruptions - MASTERFIRSTVECTOR = 008h ;Vecteurs logiciels des interruptions - SLAVEFIRSTVECTOR = 070h ;‚lectroniques - -;OCW3 codes registres - IRR = 002h ;Interrupt Request Register - ISR = 003h ;In Service Register -;OCW3 et modes - OCW3 = 008h ;OCW3 - POLLING = 004h ;Polling bit - - -ISR = 0Bh ; Pas d'op‚ration, pas de Poll, lire ISR OCW3 -IRR = 0Ah ; Pas d'op‚ration, pas de Poll, lire IRR - -;Autorise une interruption ‚lectronique -;Entr‚e : %1 - Num‚ro de l'interruption (0-15) … autoriser 0-7 = MASTERPIC , 8-15 = SLAVEPIC -PROC enableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cl,7 - mov al,1 - shl al,cl - not al - mov ah,al - in al,dx - and al,ah - out dx,al - ret -endp enableirq - -;Desactive une interruption ‚lectronique -;Entr‚e : %0 - Num‚ro de l'interruption (0-15) … desactiver 0-7 = MASTERPIC , 8-15 = SLAVEPIC -PROC disableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cl,7 - mov al,1 - shl al,cl - not al - mov ah,al - in al,dx - or al,ah - out dx,al - ret -endp disableirq - - -;Signale "End Of Interrupt" de l'interruption %0 -PROC seteoi FAR - ARG @irq:word - USES ax,dx - mov ax,[@irq] - cmp al,7 - jbe @@master - mov al,EOI - out SLAVEPIC,al -@@master: - mov al,EOI - out MASTERPIC,al - ret -endp seteoi - - -;Lit les masques d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1 -PROC readimr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC+ IRQMASK - cmp bl,0 - jne @@master - mov dx,SLAVEPIC+ IRQMASK -@@master: - xor ah,ah - in al,dx - pop dx - ret -endp readimr - -;Lit le registre d'‚tat d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1 -PROC readisr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC - cmp bh,0 - jne @@master - mov dx,SLAVEPIC -@@master: - mov al,ISR - out dx,al - xor ah,ah - in al,dx - ret -endp readisr - - -;Lit le registre d'‚tat d'un contr“leur IRQ dans al, 0 master ou slave 1 ds bh -PROC readirr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC - cmp bh,0 - jne @@master - mov dx,SLAVEPIC -@@master: - mov al,IRR - out dx,al - xor ah,ah - in al,dx - ret -endp readirr - -;carry si enable et pas carry si pas enable -PROC isenableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isenableirq - - -;carry si enable et pas carry si pas enable -PROC isinserviceirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC - cmp al,7 - jbe @@master - mov dx,SLAVEPIC -@@master: - mov cl,al - mov al,ISR - out dx,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isinserviceirq - - -;carry si enable et pas carry si pas enable -PROC isrequestirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC - cmp al,7 - jbe @@master - mov dx,SLAVEPIC -@@master: - mov cl,al - mov al,IRR - out dx,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isrequestirq - - -PROC installirqhandler FAR - USES eax,bx,cx,edx,si,di,ds,es - push fs - call mbcreate,offset interruptionbloc,256*size ints - mov es,ax - mov ax,0x0000 - mov ds,ax - xor si,si -@@searchdummypointer: - mov fs,[(vector si).data.seg] - mov bx,[(vector si).data.off] - cmp [byte ptr fs:bx],0xCF ;iret - je @@founded - add si,size vector - cmp si,256*4 - jb @@searchdummypointer - xor edx,edx - jmp @@suite -@@founded: - mov edx,[(vector si).content] -@@suite: - xor cx,cx - xor si,si - xor di,di - cli -@@copy: - mov [es:(ints di).number],cl - mov [es:(ints di).locked],0 - mov [es:(ints di).vector1.content],0 - mov [es:(ints di).vector3.content],0 - mov [es:(ints di).vector4.content],0 - mov [es:(ints di).vector5.content],0 - mov [es:(ints di).vector6.content],0 - mov [es:(ints di).vector7.content],0 - mov [es:(ints di).vector8.content],0 - mov [es:(ints di).launchedlow],0 - mov [es:(ints di).launchedhigh],0 - mov [es:(ints di).calledlow],0 - mov [es:(ints di).calledhigh],0 - mov eax,[(vector si).content] - cmp eax,edx - je @@notarealvector - mov [es:(ints di).vector1.content],eax - mov [es:(ints di).activated],1 - jmp @@copynext -@@notarealvector: - mov [es:(ints di).vector1.content],0 - mov [es:(ints di).activated],0 -@@copynext: - mov bx,cx - shl bx,3 - sub bx,cx - add bx,offset coupling - mov [(vector si).data.seg],cs - mov [(vector si).data.off],bx - add si,size vector - add di,size ints - inc cl - cmp cl,0 - jne @@copy -@@end: - pop fs - sti - ret -endp installirqhandler - - -interruptionbloc db '/interrupts',0 - - -PROC savecontext FAR -ARG @pointer:word -USES eax,si,ds -pushfd -push eax -push ebx -push ecx -push edx -push esi -push edi -push ds -push es -push fs -push gs -push ss -mov si,[@pointer] -mov ds,[ss:bp+4] -mov eax,ebp -mov ax,[word ptr ss:bp] -push eax -push [word ptr ss:bp+4] -xor eax,eax -mov ax,[word ptr ss:bp+2] -push eax -mov ax,bp -add ax,4 -push eax -pop [(regs si).sesp] -pop [(regs si).seip] -pop [(regs si).scs] -pop [(regs si).sebp] -pop [(regs si).sss] -pop [(regs si).sgs] -pop [(regs si).sfs] -pop [(regs si).ses] -pop [(regs si).sds] -pop [(regs si).sedi] -pop [(regs si).sesi] -pop [(regs si).sedx] -pop [(regs si).secx] -pop [(regs si).sebx] -pop [(regs si).seax] -pop [(regs si).seflags] -ret -endp savecontext - -PROC restorecontextg FAR -ARG @pointer:word -mov si,[@pointer] -pushd [cs:(regs si).sesi] -pushd [cs:(regs si).seflags] -mov eax,[cs:(regs si).seax] -mov ebx,[cs:(regs si).sebx] -mov ecx,[cs:(regs si).secx] -mov edx,[cs:(regs si).sedx] -mov edi,[cs:(regs si).sedi] -mov ebp,[cs:(regs si).sebp] -mov es,[cs:(regs si).ses] -mov fs,[cs:(regs si).sfs] -mov gs,[cs:(regs si).sgs] -mov ds,[cs:(regs si).sds] -popfd -pop esi -pop [cs:dummy] -db 0xCA,0x02,0x00 ;retf 2 -endp restorecontextg - - - -coupling: -counter = 0 -REPEAT 256 -push counter+256 -push offset irqhandlers -ret -counter = counter + 1 -ENDM - -interrupt dw 0 -dummy dw 0 -calling_reg regs <> -function_reg regs <> - -irqhandlers: -cli -pop [cs:interrupt] -call savecontext,offset calling_reg -call irqhandler,[cs:interrupt] -call restorecontextg,offset calling_reg -sti -iret - -PROC irqhandler NEAR -ARG @int:word -push cs -pop ds -call mbfindsb,offset interruptionbloc,cs -jc @@end -mov es,ax -mov ax,[@int] -sub ax,256 -mov cx,size ints -mul cx -mov si,ax -add [es:(ints si).calledlow],1 -adc [es:(ints si).calledhigh],0 -cmp [es:(ints si).activated],1 -jne @@end -add [es:(ints si).launchedlow],1 -adc [es:(ints si).launchedhigh],0 -lea si,[es:(ints si).vector1] -mov cl,8 -@@launchall: -cmp [es:(vector si).content],0 -je @@end -push [word ptr cs:calling_reg.seflags] -push cs -push offset @@back -push [es:(vector si).data.seg] -push [es:(vector si).data.off] -call savecontext,offset function_reg -call restorecontextg,offset calling_reg -db 0xCB -@@back: -cli -call savecontext,offset calling_reg -call restorecontextg,offset function_reg -@@next: -add si,size vector -dec cl -jnz @@launchall -@@end: -ret -endp irqhandler - - - - - - - diff --git a/noyau/MAKEFILE b/noyau/MAKEFILE deleted file mode 100644 index d14bef5..0000000 --- a/noyau/MAKEFILE +++ /dev/null @@ -1,38 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: systeme.sys boot.bin - -systeme.sys: video.obj disque.obj systeme.obj - $(lnk) systeme.obj systeme.sys - -systeme.obj: ..\lib\detect.lib ..\lib\video.lib video.sys disque.sys - $(asm) systeme.asm - -disque.sys: - $(lnk) disque.obj disque.sys - -video.sys: - $(lnk) video.obj video.sys - -boot.bin: boot.obj - $(lnk) boot.obj boot.bin /bs - -video.obj: - $(asm) video.asm - -disque.obj: - $(asm) disque.asm - -boot.obj: - $(asm) boot.asm - -clean: - del *.obj - del *.exe - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/noyau/boot.asm b/noyau/boot.asm deleted file mode 100644 index 05812e0..0000000 --- a/noyau/boot.asm +++ /dev/null @@ -1,216 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" -include "..\include\divers.h" - -org 7C00h - -jmp boot - -bootsec bootinfo <"COS2000A",512,1,1,2,224,2880,0F0h,9,18,2,0,0,0,0,0,29h,01020304h,"COS2000 ","FAT12 "> - -errorloading db " [Erreur]",0dh,0ah,0 -okloading db "Recherche noyau ",0Dh,0ah," -" -sys db "SYSTEME SYS",0 -syst db " [ Ok ]",0dh,0ah,"Chargement ",0 -dot db ".",0 - - - -errorboot: - mov si,offset errorloading - call showstr - mov ah,0 - int 16h - int 19h - -boot: - mov [bootsec.bootdrive],dl - cli - mov ax,09000h - mov ss,ax - mov sp,0FFFFh - sti -boot2: - push cs - push cs - pop es - pop ds - xor ax,ax - mov dl,[bootsec.bootdrive] - int 13h - jc errorboot - mov si,offset okloading - call showstr - mov cx,[bootsec.reservedsectors] - add cx,[bootsec.hiddensectorsh] - adc cx,[bootsec.hiddensectorsl] - push cx - mov bx,[bootsec.sectorsperfat] - mov di,offset bufferfat -readfat: - call readsector - jc errorboot - inc cx - add di,[bootsec.sectorsize] - dec bx - jnz readfat - pop cx - xor ax,ax - mov al,[bootsec.fatsperdrive] - mov bx,[bootsec.sectorsperfat] - mul bx - add cx,ax - mov ax,32 - mul [bootsec.directorysize] - div [bootsec.sectorsize] - add ax,cx - sub ax,2 - mov [word ptr bootsec.reservedfornt],ax - xor dx,dx -checkroot: - mov di,offset buffer - call readsector - jc errorboot - xor bx,bx -findnext: - cmp [byte ptr di],0 - je errorboot - cmp [byte ptr di],0E5h - je no - cmp [byte ptr di],041h - je no - mov si,offset dot - call showstr - push di cx - mov si,offset sys - mov cx,11 - rep cmpsb - pop cx di - je oksystem -no: - add di,32 - add bx,32 - inc dx - cmp dx,[bootsec.directorysize] - ja errorboot - cmp bx,[bootsec.sectorsize] - jb findnext - inc cx - jmp checkroot -oksystem: - mov si,offset syst - call showstr - mov cx,[di+26] - mov ax,8000h - mov es,ax - push es - mov di,0000h - push 0010h - mov si,offset dot - xor ax,ax -fatagain: - cmp cx,0FF0h - jae finishload - push cx - add cx,[word ptr bootsec.reservedfornt] - call readsector - pop cx - jc errorboot - inc ax - call showstr - add di,[bootsec.sectorsize] - call getfat - jnc fatagain -finishload: - retf - -;=============READSECTOR (Fonction 01H)=============== -;Lit le secteur CX et le met en es:di -;-> AH=1 -;<- Flag Carry si erreur -;===================================================== -readsector: - push ax bx cx dx si - mov ax,cx - xor dx,dx - div [bootsec.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [bootsec.headsperdrive] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl, bl - mov bx,di - mov si, 4 - mov al, 1 -tryagain: - mov ah, 2 - mov dl,[bootsec.bootdrive] - int 13h - jnc done - dec si - jnz tryagain -done: - pop si dx cx bx ax - ret - - -getfat: - push ax bx dx di - mov di,offset bufferfat - mov ax,cx - mov bx,ax - and bx,0000000000000001b - shr ax,1 - mov cx,3 - mul cx - add di,ax - cmp bx,0h - jnz evenfat -oddfat: - mov dx,[di] - and dx,0FFFh - mov cx,dx - jmp endfat -evenfat: - mov dx,[di+1] - and dx,0FFF0h - shr dx,4 - mov cx,dx -endfat: - pop di dx bx ax - ret - - -showstr: - push ax bx si -again: - lodsb - or al,al - jz fin - mov ah,0Eh - mov bx,07h - int 10h - jmp again -fin: - pop si bx ax - ret - - -db 055h,0AAh - -endof: - -buffer equ offset endof+2048 -bufferfat equ offset endof+4096 - diff --git a/noyau/clavier.asm b/noyau/clavier.asm deleted file mode 100644 index 9fd3cdd..0000000 --- a/noyau/clavier.asm +++ /dev/null @@ -1,261 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -include ..\include\mem.h - -start: - -jmp tsr -offsets dd 0 -db 'KEYBOARD' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - cmp cs:isstate,1 - je endofforce - mov cs:isstate,1 - mov cs:eaxr,eax - in al,60h - cmp al,68 - je F10 - cmp al,87 - je F11 - cmp al,88 - je F12 -endof: - mov cs:isstate,0 - mov eax,cs:eaxr -endofforce: - sti - iret - isstate db 0 - infos db 40 dup (0) - feax dd 0 - -F10: - push cs - pop ds - mov si,offset com - mov ah,5 - int 49h - pop ax - pop ax - pop ax - push gs - push gs - push gs - pop ds - pop es - pop fs - push gs - push size exe - sti - mov cs:[isstate],0 - retf - -com db 'COMMANDE.CE',0 - -F11: - push ax di es - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov al,cs:[di+7] - inc al - cmp al,9 - jbe notabove - mov al,0 -notabove: - mov ah,0 - int 47h - pop es di ax - jmp endof - - -f12: -pushad -pushf -push ds -mov cs:[eaxr],eax -mov cs:[ebxr],ebx -mov cs:[ecxr],ecx -mov cs:[edxr],edx -mov cs:[esir],esi -mov cs:[edir],edi -mov cs:[espr],esp -mov cs:[ebpr],ebp -mov cs:[csr],cs -mov cs:[dsr],ds -mov cs:[esr],es -mov cs:[fsr],fs -mov cs:[gsr],gs -mov cs:[ssr],ss -push cs -pop ds -mov si,offset sep -call Showstr -mov si,offset reg -mov di,offset regdata -mov bx,7 -showregs: -cmp byte ptr cs:[si+6],":" -jne endshowregs -call Showstr -cmp byte ptr cs:[si+4]," " -je segsss -mov edx,cs:[di] -mov cx,32 -call Showhex -add di,4 -jmp showmax -segsss: -mov dx,cs:[di] -mov cx,16 -call Showhex -add di,2 -showmax: -add si,9 -mov bp,dx -push si -mov si,offset beginds -call showstr -mov si,bp -mov cx,8 -mov al,0 -letshow: -mov dl,ds:[si] -inc si -call showhex -inc al -cmp al,10 -jb letshow -mov si,offset ende -call showstr -mov si,offset begines -call showstr -mov si,bp -mov cx,8 -mov al,0 -letshow2: -mov dl,es:[si] -inc si -call showhex -inc al -cmp al,10 -jb letshow2 -mov si,offset ende -call showstr -pop si -jmp showregs -endshowregs: -mov si,offset sep -call Showstr -xor ax,ax -int 16h -pop ds -popf -popad -jmp endof -begines db ' es[',0 -beginds db ' ds[',0 -ende db '] ',0 - - -;==============================Affiche le nombre nb hexa en EDX de taille CX et couleur BL============== -ShowHex: - push ax bx cx edx si di - mov di,cx - sub cx,32 - neg cx - shl edx,cl - shr di,2 - mov ah,09h - and bx,1111b -Hexaize: - rol edx,4 - mov si,dx - and si,1111b - mov al,[si+offset tab] - push cx - mov cx,1 - cmp al,32 - jb control2 - mov ah,09h - int 10h -control2: - mov ah,0Eh - int 10h - pop cx - dec di - jnz Hexaize - pop di si edx cx bx ax - ret -Tab db '0123456789ABCDEF' - -;==============================Affiche une chaine DS:SI de couleur BL============== -showstr: - push ax bx cx si - mov cx,1 -again: - lodsb - or al,al - jz fin - and bx,0111b - cmp al,32 - jb control - mov ah,09h - int 10h -control: - mov ah,0Eh - int 10h - jmp again - fin: - pop si cx bx ax - ret - - -;================================================ -;Routine de débogage -;================================================ -regdata: -eaxr dd 0 -ebxr dd 0 -ecxr dd 0 -edxr dd 0 -esir dd 0 -edir dd 0 -espr dd 0 -ebpr dd 0 -csr dw 0 -dsr dw 0 -esr dw 0 -fsr dw 0 -gsr dw 0 -ssr dw 0 - -reg db 0Dh,0Ah,"eax : ",0 - db 0Dh,0Ah,"ebx : ",0 - db 0Dh,0Ah,"ecx : ",0 - db 0Dh,0Ah,"edx : ",0 - db 0Dh,0Ah,"esi : ",0 - db 0Dh,0Ah,"edi : ",0 - db 0Dh,0Ah,"esp : ",0 - db 0Dh,0Ah,"ebp : ",0 - db 0Dh,0Ah,"cs : ",0 - db 0Dh,0Ah,"ds : ",0 - db 0Dh,0Ah,"es : ",0 - db 0Dh,0Ah,"fs : ",0 - db 0Dh,0Ah,"gs : ",0 - db 0Dh,0Ah,"ss : ",0 - -sep db 0Ah,0Dh,'********************',0Ah,0Dh,0 - -end start diff --git a/noyau/disque.asm b/noyau/disque.asm deleted file mode 100644 index 0c91749..0000000 --- a/noyau/disque.asm +++ /dev/null @@ -1,1099 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - - -exporting -declare readsector -declare writesector -declare verifysector -declare initdrive -declare loadfile -declare compressrle -declare decompressrle -declare findfirstfile -declare findnextfile -declare getfreespace -declare searchfile -declare getname -declare getserial -declare changedir -declare readcluster -declare writecluster -declare getdir -declare projfile -declare execfile -ende - -importing -use SYSTEME,biosprinth -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,mbcreate -use SYSTEME,mbresident -use SYSTEME,mbfind -use SYSTEME,mbchown -use SYSTEME,mbloadfuncs -use SYSTEME,mbloadsection -endi - - -;DPT disquette -mydpt dpt <> - -;Secteur de boot -myboot bootinfo <> - -;Parametres -support db 0 -nbbuffer db 0 - -;Données Calculée -clustersize dw 0 -tracksperhead dw 0 -drivesize dd 0 -adressboot dw 0 -adressfat dw 0 -adressparent dw 0 -adressdirectory dw 0 -adressdata dw 0 -addingvalue dw 0 -currentdir dw 0 ;En cluster -currentdirstr db 128 dup (0) - - -PROC getfat near - uses ax,bx,dx,si,ds,es - push cs - pop ds - - push cs - pop es - call [cs:mbfindsb],offset datafat,cs - mov es,ax - mov ax,cx - mov bx,ax - and bx,0000000000000001b - shr ax,1 - mov cx,3 - mul cx - ;mov si,offset fatter - xor si,si - add si,ax - cmp bx,0h - jnz evenfat -oddfat: - mov ax,[es:si] - and ax,0FFFh - mov cx,ax - jmp endfat -evenfat: - mov ax,[es:si+1] - and ax,0FFF0h - shr ax,4 - mov cx,ax -endfat: - cmp ax,0FF0h - jbe nocarry - stc - ret -nocarry: - clc - ret -endp getfat - -;============loadfile=============== -;Charge le fichier ds:%0 en ds:%1 ->ax taille -;-> AH=4 -;<- Flag Carry si erreur -;===================================================== -PROC loadfile FAR - ARG @name:word,@pointer:word - LOCAL @@temp:word:48 - USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push ds di - mov si,[@name] - mov cx,48/4 - cld - rep movsd - push ss - pop ds - pop di es - call searchfile,di - jne errorload - jc errorload - mov cx,[(find di).result.filegroup] - mov eax,[(find di).result.filesize] - push es - pop ds - call loadway,cx,eax,[@pointer] - jc errorload - clc - ret -errorload: - stc - xor eax,eax - ret -endp loadfile - -;============execfile (Fonction 18)=============== -;Execute le fichier ds:si -;-> AH=18 -;<- Flag Carry si erreur -;===================================================== -PROC execfile FAR - ARG @file:word - pushad - push ds es fs gs - mov di,[@file] - call uppercase,di - call projfile,di - jc @@reallyerrornoblock - call [cs:mbfind],di - jc @@reallyerror - call [cs:mbchown],ax,[word ptr ss:bp+4] - jc @@reallyerror - push ax - pop ds - cmp [ds:0x0],'EC' - jne @@reallyerror - push ax - push cs - push offset @@arrive - push ds - push [word ptr (exe).starting] - push ds - push ds - push ds - pop es - pop fs - pop gs - push 7202h - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - xor ebp,ebp - popf - sti - db 0CBh -@@arrive: - ;cli - ;pop ax - ;call [cs:mbfree],ax - call [cs:mbfree] - pop gs fs es ds - popad - clc - ret -@@reallyerror: - call [cs:mbfree],ax -@@reallyerrornoblock: - pop gs fs es ds - popad - stc - ret -endp execfile - -;============projfile (Fonction 17)=============== -;Charge le fichier ds:%0 sur un bloc mémoire -> eax taille -;-> eax taille fichier -;<- Flag Carry si erreur -;===================================================== -PROC projfile FAR -ARG @pointer:word -LOCAL @@temp:word:64 -USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push di - mov si,[@pointer] - mov cx,64/4 - cld - rep movsd - push ss - pop ds - pop di - call uppercase,di - call [cs:mbfind],di - jnc @@notace - call searchfile,di - jne @@errorload - jc @@errorload - mov eax,[es:(find di).result.filesize] - call [cs:mbcreate],di,ax - jc @@errorload - call [cs:mbchown],ax,[word ptr ss:bp+4] - jc @@errorload - mov ds,ax - mov cx,[es:(find di).result.filegroup] - mov eax,[es:(find di).result.filesize] - call loadway,cx,eax,0 - jc @@errorload - cmp [ds:0x0],'EC' - jne @@notace - call [cs:mbloadfuncs],ds - jc @@errorload - call [cs:mbloadsection],ds - jc @@errorload - @@notace: - clc - ret -@@errorload: - xor eax,eax - stc - ret -endp projfile - - -;=============SearchFile=============== -;Renvois dans ds:%0 et non equal si pas existant -;-> -;<- Flag Carry si erreur -;====================================== -PROC searchfile FAR -ARG @pointer:word - USES bx,cx,si,di,ds,es - mov si,[@pointer] - lea bx,[es:(find si).result] - call uppercase,si - call findfirstfile,si - jc @@errorsearch - jmp @@founded -@@nextsearch: - call findnextfile,si - jc @@errorsearch -@@founded: - cmp [byte ptr bx],0 - je @@notgood - cmp [byte ptr bx+entries.fileattr],0Fh - je @@nextsearch - call cmpnames,si,bx - jc @@nextsearch -@@okfound: - clc - ret -@@notgood: - cmp si,0FF5h - ret -@@errorsearch: - stc - ret -endp searchfile - -;Transforme la chaine ds:%0 en maj -PROC uppercase FAR - ARG @strs:word - USES si,ax - mov si,[@strs] -@@uppercaser: - mov al,[si] - cmp al,0 - je @@enduppercase - cmp al,'a' - jb @@nonmaj - cmp al,'z' - ja @@nonmaj - sub al,'a'-'A' - mov [si],al -@@nonmaj: - inc si - jmp @@uppercaser -@@enduppercase: - clc - ret -endp uppercase - -;Compare le nom ds:%0 '.' avec ds:%1 -PROC cmpnames FAR - ARG @off1:word,@off2:word - USES ax,cx,si,di,es - mov si,[@off1] - mov di,[@off2] - cmp [byte ptr si],"." - jne @@notaredir - cmp [word ptr si],".." - jne @@onlyonedir - cmp [word ptr di],".." - je @@itok - jmp @@notequal -@@onlyonedir: - cmp [word ptr di]," ." - je @@itok -@@notaredir: - push ds - pop es - mov cx,8 - repe cmpsb - jne @@nequal - inc si - jmp @@equal -@@nequal: - cmp [byte ptr es:di-1],' ' - jne @@notequal -@@equal: - cmp [byte ptr si-1],'.' - jne @@trynoext - mov al,' ' - rep scasb - mov cx,3 - rep cmpsb - jne @@nequal2 - inc si - jmp @@equal2 -@@nequal2: - cmp [byte ptr es:di-1],' ' - jne @@notequal -@@equal2: - cmp [byte ptr si-1],0 - jne @@notequal -@@itok: - clc - ret -@@notequal: - stc - ret -@@trynoext: - cmp [byte ptr si-1],0 - jne @@notequal - jmp @@itok -endp cmpnames - -;charge le fichier de de groupe %0 et de taille %1 -PROC loadway NEAR - ARG @sector:word,@size:dword,@offset:word - USES eax,bx,cx,dx,si,di,ds,es - push ds - pop es - mov eax,[@size] - cmp eax,0 - je @@zeroload - rol eax,16 - mov dx,ax - ror eax,16 - div [cs:clustersize] - mov bx,ax - mov cx,[@sector] - mov di,[@offset] - cmp bx,1 - jb @@adjustlast -@@loadfat: - call readcluster,cx,di - jc @@noway - add di,[cs:clustersize] - call getfat - dec bx - jnz @@loadfat -@@adjustlast: - cmp dx,0 - je @@zeroload - push cs - pop ds - mov si,offset bufferread - call readcluster,cx,si - jc @@noway - mov cx,dx - cld - rep movsb -@@zeroload: - clc - ret -@@noway: - stc - ret -endp loadway - -;=============INITDRIVE=============== -;Initialise le lecteur pour une utilisation ultérieure -;-> -;<- Flag Carry si erreur -;===================================== -PROC initdrive FAR - USES eax,bx,cx,edx,si,di,ds,es - push cs - pop ds - push cs - pop es - mov di,3 -@@againtry: - xor ax,ax - mov dl,[support] - xor dh,dh - int 13h - mov bx,offset bufferread - mov ax,0201h - mov cx,0001h - mov dl,[support] - xor dh,dh - int 13h - jnc @@oknoagaintry - dec di - jnz @@againtry -@@oknoagaintry: - mov si,offset bufferread+3 - mov di,offset myboot - mov cx,size myboot - cld - rep movsb - mov ax,[myboot.sectorsize] - mov bl,[myboot.sectorspercluster] - xor bh,bh - mul bx - mov [clustersize],ax - mov bx,[myboot.hiddensectorsl] - adc bx,[myboot.hiddensectorsh] - mov [adressboot],bx - add bx,[myboot.reservedsectors] - mov [adressfat],bx - xor ax,ax - mov al,[myboot.fatsperdrive] - mul [myboot.sectorsperfat] - add bx,ax - mov [adressparent],bx - mov [adressdirectory],bx - mov ax,32 - mul [myboot.directorysize] - div [myboot.sectorsize] - add bx,ax - mov [adressdata],bx - sub bx,2 - mov [addingvalue],bx - mov ax,[myboot.sectorsperdrive] - div [myboot.sectorspertrack] - xor dx,dx - div [myboot.headsperdrive] - mov [tracksperhead],ax - xor eax,eax - mov ax,[myboot.sectorsperdrive] - sub ax,[adressdata] - mul [myboot.sectorsize] - shl edx,16 - add edx,eax - mov [drivesize],edx - mov [currentdir],0 - mov [adressdirectory],0 - mov [currentdirstr],0 - xor eax,eax - mov ax,[myboot.sectorsperfat] - mul [myboot.sectorsize] - call [cs:mbfindsb],offset datafat,cs - jnc @@hadafatbloc - call [cs:mbcreate],offset datafat,ax - jc @@errorinit - call [cs:mbresident],ax - jc @@errorinit - call [cs:mbchown],ax,cs - jc @@errorinit -@@hadafatbloc: - mov dx,[myboot.sectorsperfat] - mov cx,[adressfat] - xor di,di - ;mov di,offset fatter - mov ds,ax -@@seefat: - call readsector,cx,di - jc @@errorinit - add di,[cs:myboot.sectorsize] - inc cx - dec dx - jnz @@seefat - clc - ret -@@errorinit: - stc - ret -endp initdrive - -datafat db '/fat',0 - -;=============FindFirstFile============== -;Renvois dans DS:%1 un bloc d'info -;-> -;<- Flag Carry si erreur -;======================================== -PROC findfirstfile FAR - ARG @pointer:word - USES cx,si - mov si,[@pointer] - mov cx,[cs:currentdir] - mov [(find si).adressdirectory],cx - xor cx,cx - mov [(find si).entryplace],cx - mov [(find si).firstsearch],1 - call findnextfile,[@pointer] - ret -endp findfirstfile - -;=============FindnextFile============== -;Renvois dans DS:%0 un bloc d'info -;-> -;<- Flag Carry si erreur -;======================================= -PROC findnextfile FAR - ARG @pointer:word - USES ax,bx,cx,di,si,ds,es - push cs - push ds - pop es - pop ds - mov si,[@pointer] - mov cx,[es:(find si).adressdirectory] - mov bx,[es:(find si).entryplace] -@@findnextfileagain: - cmp [es:(find si).firstsearch],1 - je @@first - add bx,size entries - cmp bx,[cs:clustersize] - jb @@nopop -@@first: - mov di,offset bufferentry - mov bx,0 - cmp [cs:currentdir],0 - jne @@notrootdir - cmp [es:(find si).firstsearch],1 - je @@noaddfirst1 - inc cx -@@noaddfirst1: - add cx,[cs:adressparent] - mov al,[cs:myboot.sectorspercluster] -@@readroot: - call readsector,cx,di - jc @@notwell - add di,[cs:myboot.sectorsize] - dec al - jnz @@readroot - sub cx,[cs:adressparent] - jmp @@nopop -@@notrootdir: - cmp [es:(find si).firstsearch],1 - je @@noaddfirst2 - call getfat -@@noaddfirst2: - jc @@notwell - call readcluster,cx,di - jc @@notwell -@@nopop: - mov [es:(find si).firstsearch],0 - mov di,offset bufferentry - add di,bx - cmp [byte ptr di],0 - je @@notwell - mov [es:(find si).entryplace],bx - mov [es:(find si).adressdirectory],cx - cmp [byte ptr di],0E5h - je @@findnextfileagain - cmp [byte ptr di+entries.fileattr],28h - je @@findnextfileagain - cmp [byte ptr di+entries.fileattr],0Fh - je @@findnextfileagain - mov si,di - mov di,[@pointer] - lea di,[es:(find di).result] - mov cx,size entries - cld - rep movsb - clc - ret -@@notwell: - stc - ret -endp findnextfile - -;=============GetFreeSpace=============== -;Renvoie en EDX l'espace disque libre du volume -;-> -;<- Flag Carry si erreur -;======================================== -PROC getfreespace FAR - USES eax,bx - xor eax,eax - call getsector - mul [cs:myboot.sectorsize] - shl edx,16 - add edx,eax - pop eax - ret -endp getfreespace - -;ax=défectueux bx=libre -getsector: - push cx dx - mov dx,[cs:myboot.sectorsperdrive] - sub dx,[cs:addingvalue] - xor ax,ax - xor bx,bx - mov cx,0 -goget: - push cx - call getfat - cmp cx,0FF7h - jne notdefect - inc bx -notdefect: - cmp cx,0 - jne notfree - inc ax -notfree: - pop cx - inc cx - dec dx - jnz goget - pop dx cx - ret -errorfree: - stc - pop dx cx - ret - - -;=============READCLUSTER=============== -;Lit le secteur %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;======================================= -PROC readcluster FAR - ARG @sector:word,@pointer:word - USES ax,bx,dx,si - mov al,[cs:myboot.sectorspercluster] - xor ah,ah - mov bx,ax - mul [@sector] - add ax,[cs:addingvalue] - mov si,[@pointer] -@@readsectors: - call readsector,ax,si - jc @@errorreadincluster - add si,[cs:myboot.sectorsize] - inc ax - dec bx - jnz @@readsectors - clc - ret -@@errorreadincluster: - stc - ret -endp readcluster - -;=============WRITECLUSTER=============== -;Ecrit le cluster %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;===================================================== -PROC writecluster FAR - ARG @sector:word,@pointer:word - USES ax,bx,dx,si - mov al,[cs:myboot.sectorspercluster] - xor ah,ah - mov bx,ax - mul [@sector] - add ax,[cs:addingvalue] - mov si,[@pointer] -@@writesectors: - call writesector,ax,si - jc @@errorwriteincluster - add si,[cs:myboot.sectorsize] - inc ax - dec bx - jnz @@writesectors - clc - ret -@@errorwriteincluster: - stc - ret -endp writecluster - -;=============READSECTOR=============== -;Lit le secteur %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;====================================== -PROC readsector FAR - ARG @sector:word,@pointer:word - USES ax,bx,cx,dx,si,es - push ds - pop es - mov ax,[@sector] - xor dx,dx - div [cs:myboot.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [cs:myboot.headsperdrive] - mov dh,[cs:support] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl,bl - mov bx,[@pointer] - mov si,5 -@@tryagain: - mov ax,0201h - int 13h - jnc @@done - dec si - jnz @@tryagain -@@done: - ret -endp readsector - -;=============WRITESECTOR============ -;Ecrit le secteur %0 pointé par ds:%0 -;-> -;<- Flag Carry si erreur -;==================================== -PROC writesector FAR - ARG @sector:word,@pointer:word - USES ax,bx,cx,dx,si,es - push ds - pop es - mov ax,[@sector] - xor dx,dx - div [cs:myboot.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [cs:myboot.headsperdrive] - mov dh,[cs:support] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl, bl - mov bx,[@pointer] - mov si,5 -@@tryagain: - mov ax,0301h - int 13h - jnc @@done - dec si - jnz @@tryagain -@@done: - ret -endp writesector - -;=============Getname============== -;Renvoie le nom en DS:%0 -;-> AH=11 -;<- Flag Carry si erreur -;================================== -PROC getname FAR - ARG @pointer:word - USES ax,cx,si,di,ds,es - push ds - pop es - push cs - pop ds - mov di,[@pointer] - mov si,offset myboot.drivename - mov cx,11 - rep movsb - mov al,' ' - mov di,[@pointer] - mov cx,11 - repne scasb - mov [byte ptr es:di],0 - ret -endp getname -;=============Getserial============== -;Renvoie le numéro de serie en EAX -;-> -;<- Flag Carry si erreur -;==================================== -PROC getserial FAR - mov eax,[cs:myboot.serialnumber] - ret -endp getserial - -;=============VERIFYSECTOR============== -;Vérifie le secteur %0 -;-> -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;======================================= -PROC verifysector FAR - ARG @sector:word - USES ecx,si,di,ds,es - push cs - pop es - push cs - pop ds - mov si,offset bufferread - call readsector,cx,si - call inverse - call writesector,cx,si - jc @@errorverify - - mov si,offset bufferwrite - call readsector,cx,si - call inverse - jc @@errorverify - - mov si,offset bufferread - call inverse - call writesector,cx,si - jc @@errorverify - - xor ecx,ecx - mov cx,[cs:myboot.sectorsize] - shr cx,2 - mov si,offset bufferread - mov di,offset bufferwrite - cld - rep cmpsd -@@errorverify: - ret - -endp verifysector - -inverse: - push si cx - xor cx,cx -invert: - not [dword ptr si] - add si,4 - add cx,4 - cmp cx,[cs:myboot.sectorsize] - jb invert - pop cx si - ret - -;=============DecompressRle (Fonction 05H)============== -;decompress ds:si en es:di taille bp d‚compress‚ cx compress‚ -;-> AH=5 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC decompressrle FAR - ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word - USES ecx,dx,si,di,ds,es - mov ds,[@seg1] - mov es,[@seg2] - mov si,[@off1] - mov di,[@off2] - mov dx,[@size] -@@decompression: - mov eax,[ds:si] - cmp al,'/' - jne @@nocomp - cmp si,07FFFh-6 - jae @@thenen - mov ecx,eax - ror ecx,16 - cmp cl,'*' - jne @@nocomp - cmp [byte ptr ds:si+4],'/' - jne @@nocomp - mov al,ch - mov cl,ah - xor ah,ah - xor ch,ch - cld - rep stosb - add si,5 - sub dx,5 - jnz @@decompression - jmp @@thenen -@@nocomp: - mov [es:di],al - inc si - inc di - dec dx - jnz @@decompression -@@thenen: - xor eax,eax - mov ax,di - sub ax,[@off2] - clc - ret -endp decompressrle - -;=============CompressRle (Fonction 06H)============== -;compress ds:si en es:di taille cx d‚compress‚ BP compress‚ -;-> AH=6 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC compressrle FAR - ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word - USES ax,bx,cx,dx,si,di,ds,es - mov es,[@seg1] - mov ds,[@seg2] - mov di,[@off1] - mov si,[@off2] - mov dx,[@size] -@@againcomp: - mov bx,di - mov al,[es:di] - mov cx,dx - cmp ch,0 - je @@poo - mov cl,0ffh - ;mov cx,bp - ;sub cx,di - ;mov ah,cl -@@poo: - mov ah,cl - inc di - xor ch,ch - repe scasb - sub cl,ah - neg cl - cmp cl,6 - jbe @@nocomp2 - mov [dword ptr si],' * /' - mov [byte ptr si+4],'/' - mov [si+1],cl - mov [si+3],al - add si,5 - dec di - xor ch,ch - sub dx,cx - jnz @@againcomp - jmp @@fini -@@nocomp2: - mov [si],al - inc si - inc bx - mov di,bx - dec dx - jnz @@againcomp -@@fini: - mov ax,si - sub ax,[@off2] - clc - ret -endp compressrle - -;=============Changedir (Fonction 13)============== -;Change le repertoire courant a DS:SI -;-> AH=13 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC changedir FAR -ARG @pointer:word -LOCAL @@temp:word:64 -USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push di - mov si,[@pointer] - mov cx,64/4 - cld - rep movsd - push ss - pop ds - pop di - call searchfile,di - jne @@noch - jc @@noch - ;cmp [si],005Ch ;'/',0 (root dir) - mov cx,[es:(find di).result.filegroup] - mov [cs:currentdir],cx - mov [cs:adressdirectory],cx - cmp [dword ptr es:(find di).result.filename],' .' - je @@theend - cmp [dword ptr es:(find di).result.filename],' ..' - jne @@notback - push cs - push cs - pop ds - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - mov al,'/' - std - repne scasb - inc di - mov [byte ptr es:di],0 - jmp @@theend -@@notback: - push cs - push cs - pop ds - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - dec di - mov al,'/' - cld - stosb - mov dx,di - push ss - pop es - lea di,[@@temp] - mov si,di - mov cx,128 - mov al,0 - cld - repne scasb - sub cx,128 - neg cx - push ss - pop ds - push cs - pop es - mov di,dx - cld - rep movsb -@@theend: - clc - ret -@@noch: - stc - ret -endp changedir - -;=============getdir============== -;Recupere le repertoire courant a DS:%0 -;-> -;<- Flag Carry si erreur -;================================= -PROC getdir FAR - ARG @pointer:word - USES ax,cx,si,di,ds,es - push cs - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - sub cx,128 - neg cx - push ds - pop es - push cs - pop ds - mov si,offset currentdirstr - mov di,[@pointer] - cld - rep movsb - clc - ret -endp getdir - -bufferread db 512 dup (0) -bufferwrite db 512 dup (0) -bufferentry db 512 dup (0) -;fatter db 9*512 dup (0) diff --git a/noyau/font/2_hebrew.fnt b/noyau/font/2_hebrew.fnt deleted file mode 100644 index 9e668d696026510a7bcba441cbc5eed24cd490e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZu!&uiR96dqef_Cd8>C`H9$Hw~fCo5+H))T%Z~OCgsY3cd9pM@8;o*){dSff&h~ zLusLel3T8UUiv?z*eoQyG`$)&rFIQ5l#+x7oE*Zc-33SWr}xsv4hG8jGj|CBc$5TnZ8!`f+@Edg}Wz%l){hs-nhVL&axlMRYob zey8QV=AG z2~VjcNl;H;t*G8GIWdya`Ji^^8!Ay$M)D)Mo|j}BY2tj8C7#Z4BXd2!ld)A0MZx+Y z&({^k+@vf~56=fH41I0wdoGbzk1&s`IInF`oeH0tL2qD$7Kc}o#W4nR4t$5{{vHdH zY;$;XJ2SK81+hoeGjeH==?W*AWRD>7y&kR{4a(#ij;Q@1%gf%pB#yraeEvGm<`nac0IX({7#KDU4!Fy{4o*?T&C|H{F^!5=>> zqt&3bO!>9Ao*2(Jw?Jf1E$rK8JD**BFX(O^sTBeFC;$BQr<9Y2+fTON>ITb;di;oY z1?k=XVQ>G4`%;V9^H`4FL|*=v%%*wp zHl&dX5nzk9w`)08Kd8o22W!}hL#y3h!RRjyJSBBY|Irv^#cL=dOyz)h zJz{~=b^}@Q$=$HVT?*H&aYgc?#so9t5B|q+XW^6W^(UL!I3}P zKl!sU`Li*}yBM9mU-&p0Y>al-z*(k7%j=8Mk)vmf#wf~8n1mf&4q&AOlRcUDxZ`ITrAHSC6_3TnKduJj{r$1I z?*!4s@CJIocES0M^BCtNPDq7c=lSmSe3<7i6kc9K?dV41AIb$n1+eFfaF@i~FbLb@ zBizUz%WI&nL=*rh+rC*2H@Utd?)MYxG!or@zbkfCF7jJ0-q4Is^5_h;R76>?{q!iy z`+hhWyIz}A6z**P)^^kml>X=rV;rnS{fKX8k_Qy^S^DP3_MZ@+|78CO@%xVbXKhU? z5kkm^@4r${#;-IP?zNbKb1P2#Jcvc599@#P?ZXq0wAM^VU zZi>l7TMOa1fG>)4pZ(MQdpAu(?x!?7MJyL3#vuO{12aOa-7FD=qwBNjVR)x2wZY44 z)KL|g{ox;~?h2Q*Yby2Ni0F~^nJoLEPDMY-ra?7ck+u7~AMjSO)wHP9B)r diff --git a/noyau/font/8x11snsf.fnt b/noyau/font/8x11snsf.fnt deleted file mode 100644 index d409f71815947427970bb8a95874a8c6fa339b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/noyau/font/antique.fnt b/noyau/font/antique.fnt deleted file mode 100644 index fe1aa6896d786bdcc378815467f637e2b0c878ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcma)BU1-}@6u$XEHN$hfhXsv_B#aQo7(=AN6+<{76tjoWy>z3LJqX3znN}DRN-Bns zn+{50Wsjp7dmWTM?WqrA1rviP%!DzD2_!3F8TLaV3+qS%3)arPk`>9hN7+d%U)}GV zbI(2Z+;fjCLe3+1?T59sXX|S&!szNdfCMq(zNE-q4JcqY|cfA(y>iOG*$c=H{dQcMBim<$sT4^HMU z&8wc2zg34#I0ikNzJ!jwPwZ)@DFN+@dpm+#q zT7C-SK|(jdj*T!ZasM^$Cb&;;lo?8^tCW_t)4q61)@-mI2r)u0Q7J2{riIkAsHC#Hyp^XSb}xkMP?t5;rP7zZJnC8^$$xWOrGUu zT9i=#fF4-e)aB({N0X8D9R=$QRn7`>S7;-67I7|Pm;zZg!>N#a;LGvuGZfvwdg;5T zKRx~a?uIiU7~V>`-1zuRu~hm?jGs`GI@C1ji5M@IHX1-19Yp_0l{pyV?^rC~GmWxS zHVm_ujvEJJT&Ek2P0#cGw8eNA#&($jT`{f)(T^4w5iW1lL>juLS*|!RNksnvWPe83 z{JM12bw4Yi{_mPAD>rUjy;|ysMkhqS3X@Nn{|WQG4F+KTsZiKWC=6_M06Jo5h6C?l>-!pGkUF%~M-!E&Lwj^F3CiL1Y z=t?GEGY}1K2@Y6OyuWfRb=25JoIc@PhVp=4gxUj9u0)8FS$9bcM7=CS+(WVxEKY%X zUXPs+kwBu+GtHpBI!Sa#H!S}<@WIZ1CeI0p4;VinzquAEjWv4Itk@O9q{s}~?Q7Q@ z=UTgsRN#&$vHDZ;oS4#B)AKer+no+Fe@#orA^50e*|ud-+Sd8={N-k zh%XN!?{HbTAoB}kas7P#QuZ&apIH5d)yM7)7MwuH{^sVnsQ-1@-Dc$C@|L4%j)nOT zQd2-ZNs29N)a;KhMhW4gvy1TOg*ZMk5-E)}j(=3u;w2#Q{wGbK*G&KGm{6?A>c6!8 z1MxdkoI(9ZHbM2jO#fy~X{SqEGwetsU7^w2(JePJjFA(+8QY|v!W zot=dQhn~-nf>;jlo6V$Hbmw@zMgxm);DQvu5sLbCFE=) zB-D%I+;3pNaNN^Q)PJGhCr??Etq@0YW5nx+d}nI7zJ3f3HK6+Y<74u?e^Q>r@X&vk zvGw8om(}@bCZfi?nl67tQ2V($pB$YtKB_;INA+{PN4S3O7azATvl+HppEEvcU*I44y!btDf1&Zm-U`J@JV6q%4B`g^G>Ee|BXJtU zL&byL$@?8%fIH|ToZ~?Om~#FGB_LiO^h+>AMOXsj@9;bep3hQ#zvYHlYMet)HNNnMkW&pag^p5UKxQ zD7V!*v05k&6A%8ARz-LG{RKgDNci(J`V)2d^EQU(E?(>>7x<0_4I6!EYfJp=Dq{mF zmt9a=-68NVCe5-mF%s`h)6V%)Mjsj(mPT6@Egx4HYk&RA^T&@LJ$mpU))#9o{BftK c=vD8lks-k=*y-tM8D2lTF1(?S3H|Tpf5(`nBLDyZ diff --git a/noyau/font/applicat.fnt b/noyau/font/applicat.fnt deleted file mode 100644 index b77b2dda30feb412adc9167b57722a839411e6c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmZ8jL2KMb6rMyNauD_&1=%_f@&iN+im1hIYeIiPe}Ehr`Lb-57+ljV+BlR_dgviH zLr;ZV`U6TY0bzl9Xh?cm3`#>FCBB4UC^$X@so#5VMw;!@t~B4gH{ZNB^X5rPtxA6M z^yui>@lnp*SDe;sgSL2NjBX@(azm*F;cLS%4Tsl6m8Ql-o_??h{JzVNV?iy+Sy`TO zgAC$qdpnD%MP23bvuDR8wWw#DB*~Z>kT}b-*w2088E=k*Aef!MVVzRB<2d3oI`ZT8 z_-UzOTbA`%U6xF!+Vbtc^~*mrg6#}6w}*<1XZ0HNn1nb3-&2?|%eDxSv_3>w{9D@( z{`_kDRu^Gb)^(k+nIFSP5<%R|b@WPk?!xt0L$}pca-7z2I$cq;MWGQ$;=G0fjNwHM zMvb}wT1OKq(WPm6(^iM!0#_(qeqNvE*Xvw37xjVX2h;i|Ru02(xHZ+WgKuE5z>EaT zL*jcbiKkZrwk6U2(0F0@Q#*>d=ZXWqAkkTeEF%ertn-GkM-b|b`wmi!wlf%g* zJ7aW-xiPz*;Rq)fhpH@DSEl<9@9(AQTSl~IB(l0314fE3h!#@6%v}eztea$d28;`a zt{Ki9@u-7e&ZW!JU z=J4*&=(bRZrXgn`I41{yvMV@U5iOJW>ADKEt}8nT%ROwMwq&!;62!l?$hz9h@CuaL z5?#E7vVTCYDTZlsF1FeiIag}BwQ2b|N~1L$-!-3#wSRrh%s>`&o-j+Fmi_G&k<-D(feulryfCkk)U2eD^U}jjTxOXC_OkkXy6h(28#qJy( z&!6K5IUpr+Ma`?Gs7Rv*(L^13bFCxG9wBusq^`PN6E&uSVeGsrz(U>-OV3FxJtCGK z;q_zfEmGP-YNT_QYiU)1wW^w`B0rT;(f(1*X|iOVWDVfOa_97kC}Y}khn6cbNEm7zfazsiW#7r#WJ$T_RCEN2}Cz-35>C=MBhO&T=OyxsZqUr?Jqg<%O#) z#lqZqT(hFPa3uwlw$X@v0H>Zw9=2z`e?vO8xAGD*=KS5IHL#SHR%%N#uCpRLZK-{^ zWBkVRPB1p)c#Z>G_fgrix9a1{IBm(JTVu%f*346 zyNGn(cx7BGNM`5Hu6{9AS6;6RKCvw^zDU>kimb1Q9%MPD9`^6C_};zjeRl8L_eMWM zHNy8b3C=A(;`w9(;jGZvoU=+LPdxRwKP;$HBszicp}>$$scI}u)j$slrXgV#DsPY3 z5>?o5y6;Gk*!;iW{pHDzcR!ce)kacW7RiQ2QZ%|+&?vf$Ncq&bh}@{?lxRn8hnfN6 z)76dQVWh|5yRosqBZ(Y~@f}ZMEfTP`NI)xVgbKHNa`Mk(2j&8ef4E)}{S G)A$cc_!?^f diff --git a/noyau/font/backward.fnt b/noyau/font/backward.fnt deleted file mode 100644 index 2c971a7a2ce2cfcb71b6e1b53d5aa4587ffcae7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWszl+>P6dvp#H)4H|MsSA>!KDjT8$rYdOh}bBz0$~yz*{X>2;E(Cr0^e*`vcOX zN*M?Sk%g(mxeE)sn5%9ZV;=;TEfy)?n|bqQw0?Vg()Zq*_iNrfX_Y#r=IZyWt9Lh7 z4GWrKJq*k3;IOKCP@SE)g(q1Z!X(eP+ijBMEKl-g7#fekhDyTHfoQvgeIm=u%U7>T zUQXQQ&AWFuODBK0`}4QFES-Wf_X!-Z#Y1<9<9PD)3FBV(TI>7m>&KRnB5{~K?6eI#iXvy7@QZRNUl@V;camjwE$%6ly3YLec}07N z&B+mriwCv)VWd)3ePzCeo2IqCj_URwU8gR_Yh9#Cr+HOYRoP}ymK%$)H_^ymnt&C@ ziCdkd1ySlVEb}2R{Tftfz}GYA4vg4yxRE@A6c}B$upP^Gt6JahKHO^Atu)J1q66#K z+APqn!ocl$+lqcMKd;KZC>~h9$8I!%Jd1%*Mb{0zvF8)0NfyZI{?N8X?xHu5OZc3L zPuFCF@)b^BDRdS$7kClLC}Wnxeu1r$-2&e2c8kcxcS7w;M~3wq^m~o3vv}TJBg5G7y(Dt>Z$I?Ad!G-b2dXlboBUwI#Ygqm|L*GI&MFu=a&-P6k8!wVKZo_r zC|+7ladAqKVU6ut&AmUQH>!u-QZKg+;4zwUv`y4LhhPHqCFZF+ zPjfh%;OqS1mZr4~2qOcWu>DQ2ah7FIxN~pLBaU;?+KxqIhVj!N4)+s_)u=z9A7UEh zA&o^%cs*icp9m*>GVv^I99rt?u{isBcW$#prZP=Z5c;TbU97p z#j;5E#Im@%|8LJK#vZ-H@B*b))wEg(QVOV=GXC|O@T1fpKZhTs{{9qxDB6$&Ket@Q z&lACTRU&$0FA~JX2p{XeDMa7ux&OTW;z<6cxNw$PQ?Q8(_MM!s5+7${N=Y)t^k@hP z?L;K^3vb@2B#Irqd^NXjmn}23nYq)ds_#E!=dLqC7V5V8G-D;)U0`Pqk z@y|U)@87d1iZd6FnPwQd4)^#;Wd1Azm8Nc&7J)l@eU=%9dwQi7JYTKs=FlQ{ev(r= zU15^AXfL`jVMh9gvYCfY;;w^UO+4sn%|qfi*deqpzPkL*`l=8nFcY E532`_hX4Qo diff --git a/noyau/font/bigserif.fnt b/noyau/font/bigserif.fnt deleted file mode 100644 index 55a358cf56bad8feec68b03d9f22b02ffdd8a1e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZu!&1&3M6ux1K?8Ve>cel*o$s!LRI-m?#$RYFu?oZw6-|&=@?GV)7JzfNuH# z-37)7CV@h{HK+{%L%r$3U`VnkR=@LeucS$jJ(9kA&OLwk+;b&kHmNxM_4M@h*=eDS zqN$svx^5gcQ3*=M+iv3aIO#$g$Jf`_*2c=WanUqIi!lrltK5d@x`KWp8I1GCk8_<) zqt)5#*JqXE?{0nlU7Y7m!0@w$0o8agJqW{aaq~fOnUz_V9bW&vk^yV$_&Tn={G)WS zESHP)k+99Z!PcalYz^)yhX2;u!h1YrGSjK@%et;lMj*jS7LKDVi^f5gs07`RGDTjW zCR8v?I6fY`_KX<@WiV7O-E3HfPMU|)G0WXLZ&;qi~(-+NAmErI$sroSCy{7qON})+VH5ZcUT`U&&j*>`rQfRFuebWAM^rQ zxSyt>l@M_ch%hb^wl3l(E@~e!oNLIz4YKx|`))`J$w9um8TSUHJ6*jLZc$ZlF6!H> zs*?4vvtuYH5?oY+K@g{_RV7LZ4-))TKG@ld@^u4`cUfVx0^POzJ(ybERUpyVRAirt z zN}R)&hWx2m{tlZbE9i2k^Uo>5)w#yQd}1rV$)2Q7mrv6tndHmiG`;D}zd+W1Va%2~ z_F~BmuF?T^xf+7?dc9=%t1O=%FOKJVcE$LHt0(pL&`E06ss2}2xAnyv9#Q+s?fPGk z66c@r|F|fEEzFSkVNUH)xuf2x;8|Z&pQ*>Xrh~T=$CgSU$T}#v0lr5{XnT%BK+)q zE0<(xs_kuu)+foaJ|fRTNme@kIQl*em*lapXJbwvUIe_Nt$tZgF7;U(zcE2z*oagB z%cBJ5xyZ99iTeWw9{k==Nw@yK=K^hULO5wL@lgX(0T>qlbVmcfe~u)0t}#hA+i~-^ zVVX{ek@P!Oitu{*kVS6oRTULLi*a1^)`{FZ7&r@P+4;~;OO~g-YZr7;d-RB9bnQ)8 zgcqWJ|ERSiPgE0`Xv4tX^a*y)bT1f4LQt3J?|Hs2!YDq3>zC7DvWc?zxqD;>BvjQsl!?XP3(uIJK@jG^w)&gz~eiO2v@_WY!LcBuI^@qC`Nr;#zU`Fv)U;tOB7dP5%{kCoVN z9T9``aG*H-fCB*U7gaEv(2(Hi;l)HnSYO<}VHz`v=FzC54k(%{{`QCNpD{oF*8MZ) zuNU1vYEE79__K^E{%k#tgg(m6J8{>;oAMt6FE4WLs`KwQ_#cBir&%REX1}1{@%8Tg z6TdB|l6Z=n4S9Ou0(t(#VU_dpGR`k(t^CA#dG+t1+>PP;!|Sx2i+N-1Nwp-5wd^1^rY!>>thNN80ZJ6MEmnad@9)@b!e<2x3H+(mBr~Wrmh! z!}dTi=3ow*d3ov%Nf@SXVE>3;Q4|*FkocO@*KOmvv+IA1Ggx%}cn{`q{P^!bs442& zbw6VU0pM+su2laR-xo`KUuZw2@Pw3aN<_r}GJqAKYWF1qbMyk{dl;VSh0Eie5p`4{ zzd!7ybXTaPUDL=-Euu%Zhcfp==Zd@2oF27!mvi^eJl1$FDc7!>Vb0<*Oy7R)O-`74 HLmvDGMHv`$ diff --git a/noyau/font/blcksnsf.fnt b/noyau/font/blcksnsf.fnt deleted file mode 100644 index 1e4e53e7adb20bf7b6e73ebdb0ed60c3a9720e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZ8kL2DaV5FT4X*?_Q@ki)iF93eyyrI1Hl#6q_#+vwnw9D3;`-Wt!Z{EzjdAn2@vfMi6pV-S`8*3;LxUS+6&z#%8Dz%5)dq|KyfE|(3s4j%GxT4u zCQLUr(vV>>J9zu{V8;CNmE|9gj*dpgAWYLV^m6vtU+pWkeRgd4aWYPltq)U!5AKI2 zC*l1AgD1!5^Yi10fv~s~&7-A7#$K3vUT!1C<J3`EJ+(-%7tV=tfr*#3(WnlNTQYh;av=+DN| zN-rHZn9t+9R!gkE6_qE6z+(zP?01wz6`oMPVb{leDQEVN4T3#k3q;w-`eC<~Uo!zY zO29w}Q-orFS5~*4Y^fFI{a!*RhA~D@U&c`q$FayKOEKWo9`8Jk>C5&S$Bc3Q7G}s8 zPg71O%1B7%7xiDRVL8QmNje-2QyU*fgJRc9cE{t#BK~CO#Zz3+xX1k_i5O>TnxO;6 zB_GvlMxpbU^OfHa^YQLLV$7j*FZdGoe91o^?^=IJ(xZ|KzUQMbF8f9FUx>#=Dcc`w zwEGPX7eYKf&8FquV0g&R?11k-c=)Wg97VOh*dMHIlI+;}0#-1N?f%u!I@$V0_~<_z z3*J{51uS{A@7IjS(!a>xg8<8E<8MNlP;+$QL8;YV*jr_PWG(FhQfdI^@i5R92uwR{ z_rK(KuuIv3^6A?KfTyd~_@g*%WNfX<{Cvhxc7UxzgMq*G7uV$6S{89*lWS4nb`+4VmhyUV2PLS zTZj=_`^l(&P7332k}n*7_~&nX&(Yp(!)b4yjD7hqi|qrom`o;?!`GFCg$0S%{@ncT z*4ukQ>>|8VUfa9yEGx#p-gZ^pF6Zix4PvhUeHy@2%7K_hH z9pf{%RA}5qIi*WiW4fMKaj`&2USx^XsdGvOc0M74Y5FDp)H&C-bR|mx0Yk%hEKj3L z@wzt!O{o+D)36}rMMu%-CSAD0kQesET(ZBZCuk#zuTK}7-|bdkH~{FkZddq^l?7TJz9R0_7vVFzANL`^C=4(Q$fqwc)K!OG{pR@EsiSr5_2ivuJlLo=z?h< zwDP6xLWd-pFIY6DE277B;C)09gF$-n~1_K4`bY!C+)gVZO1kro~t+X1{g2 z1A`!cs65AQt@9(w8Sm}wZ8Hzh9t?gk?ns^4Y!LZQw7$L`IX=(uIz@+{M`1df&C(9P zAU0jcZ@1gl8mA5S_w7F^3!mTm;?9?A)?2HkS}pbm;YKOUfi(`h&DHsz-TP^c)y8XrsLN!k1qylBxaMYbwQMWYW4bG-HT?>`V13d a3$Nq2A)|5-p|GaD^!2lU58mvVd&K``yZxyE diff --git a/noyau/font/block.fnt b/noyau/font/block.fnt deleted file mode 100644 index 0ba23fe38445f9415fe031295a529af5cacec144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWsPix~w6raUl=itWlHYFl1W$zU=Xbo27W!taNYf(C&T#Rj4r~?jC^D*`V^wRIJ z5b&k9UIT7RPW5G32NqU=ELMMS=Dm^ReTg;x&HMjm^k%HoG37VE-`u=?bCWY8ueMdS z*;Rs7RDhD;L=;bgqzQE#?{+(_W9I8Pud2Mpn1+aEZbh`)z&??ijI&p-GFGSA&6~Gx z-)w|G=zZ~3oMj@Q>~{?ZY;ii8hGDpTxMy6L!WeV8`|s9GXuXYh@z%?~OqbWi^)h|w z*y>rQH!Oy|&NIe{Uu&KFh)0&xXvF+tyWOtOKn^D+3?gHqplcGApaCUg7$>gB5i-8U>wj9?@l z)b5*>NE8*3{n*)lKQR|+()qz8eTnhHbo+W_SSyI4U^36LiNjc%lsRtbYfOcq7H!?{ z67}m0v$%@0S_jps@Tn*08z#bfhBs0@K?01PbznP8Z+~N)?{@nVJ68605XS+LtX{s~ z?+5w4Y)+MzWv}R!rN|Ek-!7^Fi0xJT-Qxf{!iWC-p@A!y8w``{$J+l6F?j#vuYdv3 zcai(>Ig>hFn+?j>WqTN)>a|r$Jj$5)iNW&pm0vC3#bPl}6Xx6e%CeLlh1lPJdcWTv zgpc^{8~IRfM4n%k)dTb;0@y1bs)vUM(I?!nkJNV+J(!Q}=ZGm0GA1yIo;@dN(S`&%A!_(8#flM6n8~N|84dGKdjrF&=!M)g{(1?!kuhI`Cyqdpy zk-tNM**;RG<@fnk<^JEd>vAu9I<~J%7>YgguW@i%_p7+?$nj6mjM(sJ16kDmy=$Fz)pfT=XFBL7JK>ejwN5HG+-l9|j|&=0gHjF?mBql+}X7@c=JZbh?9;dJ%=ni_Fpid0TBD66=e zcs_(%m>PMLA0Y82MigZ3SxYvNf zvFS5LV^qZ`Ou~^bh?-B%^1Hufe+{E7D^QP1S3k-hEz?Ln6bv=7i?`-ee9d|izllko z%uPG4AjVL5bb)aGnC<=HYOuMz-T3=X5PcV3p(VVQ{j|wqoR2smo&KjRyZ$9xWZ4IY zPtQ<0y3y!6yF;h|&GjKXCbnB1MYx$C;a2?EUvqaQA_qX`^}1MGa(z`in}D}!H8cpE_$(Sz>)AjXA3OVeR}peQw+fyQ2*xEGm{rDX2aQyh+e=w78x1z07rwjNYPjA_N5T@yMnugp@DLqHbR|PV% z|84>+Lc85>5xAr4v+rT}PFHG=PtT~MI`Z#_zH{9bCh4uI+`t~uBkM!i_CpCpM$&0f gjR&@N?`ARQb4Rt7ZU&v@U6}s)*iud`wWd7yA0{v(DF6Tf diff --git a/noyau/font/bold.fnt b/noyau/font/bold.fnt deleted file mode 100644 index 1ccfa5938636d23294d91ae8d9296207e88d439a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHJJ#W)c6m{ANS5S75AZ%GjYAVu$S&b{`tTUHjN9Hnm0JNN6|d)@Z&vo}$cWTOXZdKdwZm1mPI%K|^i zGJXP2vNTPzByfm8r%%%KBuytlSDpqA{|8ymAI>-OB}1Z%AMXH12f;r(x_^BCsH+dv z0A0T9(TD|g_76w*`aGf9%g@UpK(MDiI=UM;^?p9opA35b6RCF?>?M3pC*R+{sgEA@ z>dW?r`~7-hj*ubVWUw>b>)kKeBf9>i>E3W>FbMVu`?b^Q!(_w?gN|quc#z-5xIq++ z$JFY2{-keH*R}Wax%c=%&JXOx#f3RLJ9DSx&%gh8k&N^5+vm4;L@zHdFU#`F=Z`O+ zk|TUBh9XAMNpXH%0oUh+><_*j#=s#2HF@tA4xjgp10z_AN6VY<{lM1V5QlrZBk3+W)L;Q}AG1EMN&(4dOhCu?`h_398)U&^y{oF!lr|r335YCx~aNy`m0VGRMXYp<7}i}rYiGsBJm(Q6vi)sDr&_8#E-!wAo*18zg}0B zosmmFq#m6wYhUwG>wT%?hE?0Ije{g`8~S_Rf3v~E`}%6cW6B0b_9=S( zK}WnRuYY7r(m?fNgkCbxU(kLb(O7=5_Vk5Gj9clxvoX?xX8tsr+8PUBWj9hgnjy4?YN zpLm97Twj?#`Eq%6g&hrJSwifON$kCitxgy_zzxuOjf>N=tg5m+E$|Kld|lcnXkHv7 r305XKD00f>Z~spI5Rh!K?ZCDJ+YW3yuG>B|GMZu7mQ?) diff --git a/noyau/font/breeze.fnt b/noyau/font/breeze.fnt deleted file mode 100644 index 96ecb0dd6649cf3e1cc5995323fbdb4b84b33519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 TP-nPj2frSblzl;^Ar1ZqV0h(s diff --git a/noyau/font/comp.fnt b/noyau/font/comp.fnt deleted file mode 100644 index 686266519ad427529fa01fdbb36c8ec8897bcdee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZu!&ube;6rQR@=&)?m+q4l*3H}4NRdM#P*ujL5L-4KlMTk9#qBxKkx@;UDbSgRI z=1Xq9Wd$%8FTW^sdMlt3eJ*!?swq!?X-_q?01iTGTZh6xj;HOh=Kn)`g*WNAPdR zaHC{^xrgwe_$%x1G+E)yA? z9>?L}_;?U{$Ej5?S8ADs&R2*LT&9cUF0?ecO@sw1Ny&f~yZ+v|8dX72{CqyOtp z-UfwXn5HSEfSF5EK;k-;%1r=*f(n_tSX{kYR#;!p%wKpq>&2PBlSziBr;SEFpD(!I zYA^2RZ$V2o2*Z|`(&$sQ9U|YbhlCM742Pn2a+02$2%r(|k#;#Y+?M=ubDdNvRAi|E zLVoi(<9sxFL?j)Q@S>lOn$2cDKNb1%SI^({eW(8`QI7n@A11>u$@9^EUiJ@v5QA7h zy?whTAB{%jf#nz|cbC7zQg74K!7$|Z8KW#y_zT5>_WX`(C*o(rp~Bx%e(?L#r+@5A zc`EJq^HU<0FP}d*SQPTfc#Q73e&myhQFn4$jZi4#3*foLgZ%;)BA<{Hs`eDFn(wFT3sZoX}@_ax)H9Bm6aBz^D^)LC2u=-a0_FF={K=whjTo?}N$u?vs zI9gwA1?*9Vf^NQZi3?k$H@?b}Bx4-MS+CdI-4(199{AzV;bt?td2?rHr!4PfD|x3K z*$3SDhreC;Yc!0B@ejPqay;4XHf;iR+-ezC9QXVEY^6`@g*GhdKlZrCkN*PI;)#FC z-^8!Uv+LKdTb9eO!8k^}?s+lw(}u_P?a%5n?Q;E5ii+F#F=BnC9-I7R{*{7$w5rGI z_j=MF#Jhd}Nc%J_fsJwnmJn~oePw~r`{FO1u%j<*e z%b4`bcv{`hOgg;5Q7R}eukBY#6^GvxuU?y{11b-0-CDlDdE*7?E6x|w#q)3Tb(r&Y znDop2BzYNAJy712`JSr0vOguNwx3|0vmRE1%(v=n1VI`E$<~1+<@q68?jO&;tA}tUe=IJ{50yavfvWqh@r~CJCuem_SSh?X zJDuft;ua)SX->p~#vHF;i-Yg)+`02bG5_%Qhkq}DCHVdO_aDAADmb}>A(dwhaP213 zr0bAUK*`kN8(&v{Pk*ZZ?!T`7$nXEqMU{7RxRsVuqBbq zxD`|tJ}DQ#$P4wU;^3Oow{8ljZ`D3IeVb2RzEO1#Yblu1Dk|YNHe9-{K325Ds$OPq z)$E-=&PPi;i|f;+qO_46FWQJeKVcDxywB47k}bB^3MY23SwnR zY>DM~8V80LX9>=iI&kL&GI z!#$m-9riDqEtO|ZhI0MbiQsItAJHy}zol?62wh~kDQ#Ys<%}=kIP7`TLDcb##O}Rf Rhd^{zkko}85ecY_{{fp=oSpyx diff --git a/noyau/font/computer.fnt b/noyau/font/computer.fnt deleted file mode 100644 index a763ae7c0f3b02de3cf22f4fac9beb5edcb640f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHML2DaF6duK9C5kGmhmtK3c0x_aahrg$rHf>O=%J?`+)Gc24ci<<&?(VjS$SnO zRvSnY3L*Ldg^*ra3?VrL>-M*RKl~?k6tNwsI+1lCp z=6mzz&CJ`k8pg(nY5ihZ51N)qG&J2E*KKuO3TN3WNG_8g_$-mhMZvPBb-P_z)(F0= znXYTnIM6_aOt4)p-4@u-1#hJ3=g#Rw_ng&gK6ubeX;&JZjZROeT&Yy{*7kat!n>3tF*QtVZx>byuII@kAz*%T;Lw zu=#Qsdi&9e1){2|oJhdtRaLZQw;N>}WA%F7sn_kU+wG$Kv~%<3btilGuA`v%`QKOd zq^#(VuUo*pg;IE`#mqv>Z$o@&tviuW1~==wPb-oLxP4iQWU$~Ovyg6(dA z;QZ=3xTZ?;L1`wF@xRa>26zHn1K#BDb*&R`}|$EZo1&3qE&TaGcNoTE7EA;2biJb3yHM zU%cpax?NH~#Hacd2u>ggR?R`51`tZT$N4 zGMClWRkZ)-H-7kj*|Mx=vx(w-ewSemR{q5IuLIK>&pv0JpSN(FujF3X0(#n->K9QBxyPz zzu*7w_rJG+-tYf|U2#wvxBoK=aR?}JCwjCQJLdhp13V5 zR6Qs<`oe|Eh2nxvq(JTV{Jdezx7+OjWvF1-lB7WbZyQ6^gB#o4+G_9a6606ZXq>TK zy;Q1HN+o@FpmL}n{L9@-_}6~rz}s;I4v?50f^P^ed=caGxU_yTe|&<7`O)-;YakD) zA27^sy*Fg)2O43XN%~)t%^fZ#%`X|MYLqDdZ3f~<(vai*o1lLjWlZ$WzwqaG2%kU` zpx$qak~;%}=U1!+@`mewgIUMe9=JYg|G@e^nLA1Pk8OeKcU=D#u0IdEE0=>WJiq0n zO40x)UPAdtB+a)^LvdaSO9)0l#0S95)2HDltP07W&hi-Gwx~qLu${FvYJG!N2mw3* zkoq-UN=nrF1r}`a_Aa%);KeB#hY-L60JZ-?zaQdA`$Pz66Z>1(Cn5mJ_d)=%|AFO) z0F3`pVfZuJ=9@dipHckp%fp{h+>Z@|3xW571}NT>Nj&SxzJJY*^8I@!5+A33Un2Df zdV?$4zcYrvFA>i+#(cdbF8l`eqx~LKlK%7kK6B7?xa8wRY#g+8{dV%8#xDf=Dco;H z>JR#-_@aJBo}qBxe`l%r5%p)4{HWbS_jx6n|CW*V3q3A-JEnh9zt1Q23%ze?{lYIU zZJ%!!sXyqS@~`hFH*$R0Ea~51{(L?7C1QSkLVisDq!pBneh{Q!gbF_eq|fl|68r#D zqMwgm21w+8FjU?@WT3-?4&A}K0|*&oA-@nfp8tU!NC6=OB=SG6|NUpr_Cq}m7a;|V z%%32CnU2a|AO(aBkjVd_D|2(RU)m&b7`XR0Y}McnPQUo+0u>|pPuKi(gc?6Tec-1n z1fDu}EC?=e9dzm!0%&`CyF7{o_rNmQVQK&~cIheq!$mEXR2&J{MrjxA4jF#Hj!hhq zCO0pr`1?I$S0Ddz`}VC{jm7~bT$=mmaxSA?w3jDh$Pw)9?5qsO&!!0{^kLTjE&m6W CCR(om diff --git a/noyau/font/courier.fnt b/noyau/font/courier.fnt deleted file mode 100644 index dacd3a7415f6858c687c4cb8ba871b8307d8ba12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 O{p-VMu(C8_1@IrMAFJB{ diff --git a/noyau/font/dblmtx14.fnt b/noyau/font/dblmtx14.fnt deleted file mode 100644 index 6a3a99b34ff3813af06fd7e441858460407701d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 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 z leGt*%%>>7syT4bd#B)cv)@cUui@Uh^z27|<(@>Sg{{nOump=di diff --git a/noyau/font/frankfrt.fnt b/noyau/font/frankfrt.fnt deleted file mode 100644 index 6123f78a8dcb79289dd962730c66deff2b64dc51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcma)BUuYx886R0ZLf#5#p88h$aG*v+EyVFd9>jsta5TYs2wYtPK0}PQ-;7qW zq?_M5pKNJne)IjlnQvyk`J`p+Fe$J9d42u%t@SeKSoWK~Uu*dYXW0sgZKyz>sfHZ} z>z37OwRGJA`npy2{W8W$jVN@W?Q?0>X#8B{oh9LM=dYr87%pzBSmWi=uHd|}0_cq@f@xjKtPM^ly5 zXfy(F^1rU@W$0mc{@wHU+Ku|pA4^CWOmjBBcW3e;&B!WaW0DSjG9HhQk;IeI<+;1E zwzjrY-Ptp=Z=~X}2N`JX zzB`3+)i7+kf(hvG*#2QCj|QAN|uLbcm-_|r(Aqxf-U#ux^Ix@tU5^FNwI zJKSD%$c0b*_%Xw{Cp?`O?*^S3j-FJ8ZxC z!onNlXTj7$U0|${a&-*D-9Ir<^emq z*Daa8aKWAHRR;_DikY3uWM)c(&Hc4xhB8>N{yg?gWJo6P4VlbXP@lyobz3+X>pz^y ze0?l(Lhiv}{Hqz1KTzyUYT6je4|r@PT#IS)8zw%NvS@rTKUNG<4&f(9Zu`w<^Vxon z4wje6eXGX?+xlyCh2i^+vH8+WCUYZeKGLt#SB^}kUH4j60T(o5%X1kshwdLDdU(b- zl979#v6z-RZ2l*=DFC4T$5?gwI^j5dsxDQQmX@CEo6%5lmaosbdBjkdotvJXJ|0Co zfEh~6h>wrUces{FBv#0P{CZ$w>vrCTMio>G{Ok}%K@N-7m;K*`pgcM_FoQ_as zN#qpmVzJ@t$o0v7NBr8ltVi1|F0L&Wif&tmGS+BZzU+CI8;yn> z_v(sbQ3$Pja=c#O+G=cXgZbxj;W!;mw^UkNE0x@BIlu5PcQ5d7{a%~C9f#lqiRA(M zp3tQ?Fu#s2<`?V77YMA6<-S)Xc@O=7QT}1Dg)RB~#qi3||8)6MaBDW{3P$=RFPHO5 z$bXw%X)B71p=)1`GA69^H*h~5;8AIczV}ztwD|>AmRV=4M)CzG`9hBGkn6+F5AENy zoreBnTSWaO=iid^=jn9WHodjvIJK^69y#$-1b7e+LVyfEc7E_R+~>u22VcYZzpoFzhVj1ZO%wsX*X<|8 z_jHKUcT+CA;+@`x^@Dml6hDlASAqOp-tMQ=e)|ypT?O22^xINLATIny#D5F2}a{h*)TYY7TneuM|zAb;0B(iiP1J%#YVf3s+PMEk6nA0GEWJ#U8V z-)C_Ag2!k4HxwZQyi^g5vzR~7hx|hSKIRvG@$vXNqsl`5u6^X+U_O4p^T7EF+M$2D z>lg6IKSI_wP{KFM0S+C15zB44lIDazIFT;31Jls53 z|5zm89!vqfIwgQ1_irZ!#Q8xt1p^d83P_KU07bo&%jHV=e(Yp`ApfJOa{H8l4oQ~Kz$G%pPcLl7y9fO4GLZ8&Ye3e z!&tXYT4nkk-K{?O`Rd1v{^XJ?m2z^Vzcq|q^b4^biH<0-%|-YF$*({7*E{dry!ra; l{RR)p^Z&VS8`g6D7tx615iC7g)9LYZxlB*!4|KkI>Hqk1I$8h# diff --git a/noyau/font/fresno.fnt b/noyau/font/fresno.fnt deleted file mode 100644 index 842ab5c4c674498eb95327685d2eafdf48cefd66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 W*S4C0&GN!ee!J}$$0VI52mS%6y{^pw diff --git a/noyau/font/greek.fnt b/noyau/font/greek.fnt deleted file mode 100644 index 510a2887dd310fbfcf1e466f65cd8f305793397d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/noyau/font/hollow.fnt b/noyau/font/hollow.fnt deleted file mode 100644 index 0a496784c63015cd7f5af17d16202119de135a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWsU1$_n6uz?VCZyYhLRzL~niTP2DWMFmj)9C5Yb%t}2aTyMrM07jlUCME#DcAE zXN-N)w?6t(HnZ8Sq^5{8KKYZnL`z>v`xF`r(NY(Rh#iUH#Ul4w@97WAmBr!7s5L@q*hMl^dgqmfwS}jep1g}|s6!|fR zW>C=t8=>^Lg7n1dG-3--28l9tS75i3ZFfHv0mTv+)IVAn@!TM++NIPcV@GT zw=0BmU7KEe=ls82U0vOTqg&U`T)Q3fusW+h%-2EqbblG0>+0(5EfhW-B7GkjqyF-SFS)qqtW14-#SV?j&9}tpP}kCbh1MB)+q5GA29njW}t=h(BBNVw+>gU zjt&8x=kcsVzPRvw97caAVm;jt!_m>v!NEZ>9>C%3>>rTg&#Aw^!UOLDx%KFtJA_-c z>EFlRMvvTIw0NGD%f9_`OD_U?vhrLw-wDM?DE{w(9yPV^6z$jl z-g%^6KTQpg-%D3p=zmvhT>A0q_gueyy@17o>*wn8 zbJ8DUk7)bFnEIFd9rPd4_^w`(OJE0$=h*gawgUrT>$PuTc~n;jz|DT+V4?Ta*$Ux} z`E5^W$-dYl`4**P?xe!C>FFzDAE@%ws?W{WzxhyAw4Z7R2Dcqu{95YYsr~kuxhbD7 z$r3Sjs<&`ZeUH1L)J?+0>kU;ttk$YV5QjR#-*8zvmQP$0ZXi*A@sQ&jD)#3xd`Eg7 zgRiTq*I0;cH*my!GB9RV&Q?4qr!W@sB(Ix#3PZP+=Xh2=2eS!+{*wODUlOCgBu0J+ zhs(|3ERn`g@KU_%^5MFC8(=sze1V}fvY=?#Mo}e%m52NMrMq(e229TjARprtu80@D ziacA4fg>oQ3iEhljPWJ&iF^{HJ(`bXctTtk!@~mv?@!RmKO7C33kywk-qFpi#urc$ zPWW7(H9ZTykMM=$_?hQb4to=x_k`o_KFA%OXtX6-A((*Vd?6k}TI3gTa(swW@x%Hm z^CJ;<0LVRYI+z$2`DIqAWGB8yY^YQkVig_>-62r;oT>3qTL34TgbE8XnT){BitCj$ zquk8p2e66b;`pxvLWTU{8AdtiGfSp8olzSgvn1FT-b(%$dv7-RW9-k9$sgZsm>n(( zuch#srZ60pP*&+~s*u)GxLtoWr}Vj=ybJsFHhwj?EGO6vpvC$Fn$j2X?ch(w=()ofN%c2kr1_^z`6s=IJ#DjB`hr*b zr1vz|r}(1SANOM_eQDo5zEppvsp2I)7+)&>#CS#fNSl2mF^{J$U)ulXOXUy$3yMYc zDw-I3oD#-*Qo@*0RHpDUTrQQ$;(QL!c750N9p_cjf&ZRhH-Zqt8=n6`1P)v%X|RC< z#j}wT$dJNV9qh!hf4EF16v6vYA>qF{P1Y|_on`%_YVAUIvL5$CckuZU=PPpJFE2}L z#xgm8Pkd)V_}2}`sW^@y>M0J7i{Kdq&i{A=%m}V_wM3vhJV2`&2Jd*NR=B$lD=HVY zKeQ!YUBM;pnutF{k5D7yk22Lm8H#+OO-f?iL%Dlcvc!0nFxRr0fz9NS;rzUoGPX%l HO$z)6Mjr`X diff --git a/noyau/font/hylas.fnt b/noyau/font/hylas.fnt deleted file mode 100644 index fdfd94081e3f1f55ab4a25c2d3d84a21aca53c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWs&x_ku5T4k<(ZSugkiaV|ViSDWqo_eKSs}Z^gc3?AA-R+ul&ENXFpeRIl*CB8 zW(hg;5SAXATMq4I>7THHB`&46UKiX#PW7dfKp@E>tUB}Fo2MsdY)krPzBe;(-VZ$k ztV_1{%iiAer+b+;WW};57OR3W_&G}GI^584LmP@9Sglq<1llfwtSGV)qZ%nfTMLra z0{xRHWspWus+*H`@$~ugrwg{9KljlmL7FlFs4+T)-%@H}t&>ZQhck|#;Bv-;;) zDTG)Ct6*vP!+1K&XVZA7%y6cDuAR5f)z4^*`3oU3lW|W9^m^K!FPF=Qn8=pZ`b8EGdKSIecW9DbW;mo$Xo#8ikqLQD<_?-^(1GGh! z9l^D$wX=P;v3}BqMTr%%7@jMgik}edCK^SlXiu^NASG zq6oi{RgWP`*&j06cIrP8Oa>Yc*tM5i;eoD5*2l(}Xgxdp9{-uA)-yVNu ze{rqb*RnB+0P%^cThK`Lq3#KO2)j z8z07ka(&4LaH0%ufEgFZlp%KTUJ2 z$Bx1(Up!H$Y5}0*5FulgZ;2^CyPjmXF}0`WgSsk6l2CedfKc(Y+4#q!!Q%LMVa_|Q z|Ec#q9(eBY{8*%cDDb2AoA+rtyOZ8c)7Q%1#wON|PBh{~&JZeqJ)VU7WY+a1Z1<0F zCI9USOw^Hx0w7B6JT*2MSQN4G3JYfQC`eR?8&ZHAW{#d*Fcw~P7ZXMbmfWPnCAAAp2 z#Nc;It?@fyu&?Bey6K<*rxm=;f7390#pA1Pf4XLW(>P_%nrX1i3;nZQ-%WlhZy`%b zHjRrlK29eRV{bFoJi}Ldntmjj-xh|i^Sh$%0P=pt8&u*AysG^z82^%2z}vORRrLCMX)1EOhfswJsFQDd_D(U?pcy#aomwc+&OVIqDVxSoI4{md4gLS zF5ukQVK7GN8%(=H=y@?KwkJ&z4Kv&!@!y=_Jwor!y#LAFI>Cs%A78?7`1&#b|Ikgg zTykrGdIRC>EI!u$T`!JjaqQ{+l)9%x+W`|-U!}kiq1kJu2!_LVpl9|le8zW7)8LIw z+EJC5^&w8w?ussH6%^{GBjO&3UoCP!WWaZ7Q;`y%m$mzM9O(X>P_214!#2|sFaG0Q LrEw^wqB7urD#Twb diff --git a/noyau/font/inverted.fnt b/noyau/font/inverted.fnt deleted file mode 100644 index 1ff13cd8e82c5746abde789bffc905a2ce385311..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZu!Pix#p6rUiFeNZ>_ref7wNYHEF*>?{Wq5p<>tIgAHCJeCc=a2k52W zAz;``ZoL}RLQdIB4}n19Ly7u(Gw;38I-SjW=lz}ceW@|T2qG(>dY6`a}^yc>U z>sy#GjuuxmO;ddH)!tLq5B0IdG5q%Zd77q+Y~kR$ciXeNuKT)I{-M|wLoD{4ROjn{ zeO{d~{YkJl@8^5L6X7qq7-y*cS!Oc3n0|nDJq&}>U)Eug*L9wxb?F!oE9SI6Fm_iT zl<(+wbf8o!3i~ip2=Pn%)KiV=tE!ri&9i1~o_R#ymu2GfWA>AzL<&8_?hXgX$dLN$ zsNW-oZkOkMZod|cqO$%mD67-DjGT>i7Dr)ys!ETWW_g_Cd7>EFRLGG-L@~B$8jFXJ zrWJV)n_?^)FOATQK0K-4dX~{|;mib}?Ma2hLd|bk*B95TGf9_OM6`-T?CEREuJp1F zg2NzC_-PpSO@25F`52;i$cO|O`fI?c_z!#Oc&$gG+b_!(VGt|`$FOt2djW?*@h~El zT91U^pi`w;fwMH?VLH+jAwjCYtd^_Q%ELIirvjFS?ojL{zM}FlJB4?r*&*v&=e8U2 zHN$=O{6+ENc_#i}rRfg*ZC0 zcCkE$lQl`~X_|2u2&48kh2>$G^jQ&x$IU4U@VAZVFRZs|D)GU*nk7emeigQUQNb+F zKb%p~vP&c=;*vtYmf=KriS*_;^qfV?x~kN9;J}aa55t+K_ftB>cb)#g@h+OMgupQ~ z;|KB0j&ra7knB%Tqn3rUKQp297xG`^*&}`{;&fsZ592$pAL_Gg>0z56Nv?r)lw75w zn;+Q+j_g?J2Kk>IP5ql4AYmBk(k~Q`W;(8>$%Gj${oWoV1|=ylx}Ta~VN7?-(?*&J zY%?5pj<3WUTbkH95G)O#gHRL7Z$@h@MN4xOc}-;NUVW|W=?%bjNr{6Ifd;$M216-~_@L<6-VaT)YJOQa&A)^=zo$~67svq@5a&zWck}m1!y*1Co$Xhc z`%CLf$E{-MIx5?CGE>&(sBMp&f$)#6G;zn6$=zu=f*|naKaaxAGL74&ep?YW2d@%(6u{V0zWX)!wzE%UP@RW z?cW?vX1DpQ#yG);_<=Ew{xNhC!q4I=|1tC$Nbs}rJ2jtKfR!5Pw+E?xLg3%IGlL7t z7m$9{O~_ zW_q@Lp7;X||L-mCn1kk@y`mVtM9eT@^}R;_*DG=0p=#`gL4<+3tGW+Bgn{Twt7<)Y ze?u3oQpMql`{yttH91u5;84_VlPGm=lF*D&rIr_Fk}7f)tI!$@0d)`HBAy p?dPG@s=RjNMFA#7`;U#GJcxm#khk|<=;2M3-pd1^w96Cy?mwa3dAtAs diff --git a/noyau/font/italic.fnt b/noyau/font/italic.fnt deleted file mode 100644 index 2ebc0962b433fb96fa6b1461581ad8dcbe49380e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmb7J&ube;6dp%mZOT?o4}~=nQV%BdxQfC?skf_;=GbF;>1l1jCQ#Kj1QJ1)-MR%6 z=s%GB0fmrLPre0A1WTbJM-fmOLJ#&W7y^!=M%!;zs~;=Px29vW+L>>@H*em|d-HZz zh>J?F_xs-7i>G@5=@`U=IPMQ|2;*?hiU#yg!JlL@9xc}MWD z6}DQfd&ftI>JEl6u#fElm4D0K^+SKxy``p$rNVMGtS%Rp2oC!jh7nK;i#yNnydU*HTCMh(8cADArKV+B!**NQOVg?~({&2_kxy5^Y-zgbMM}O9#ZsxfvEA!E zRO47XqIue1(+&8SOIJwO3YsQ6spX@!ZpU_yqC(e=7(?(55|JwK9?G4c?al{SDnR+e zpR?VkwQ8-t^V5SU@~2IiJFQsJF$IITkEqs`U>!FaW?0h-@Is}aQTc`CRm%%?y)va_ z?hyUlActQxfVa5*%|t)gHzRdgsn%*OCxxR@9gZnIb`d9xmaqo!YE??*IZkxJ9W=v8m_LH zh;J|H`RA0@>h-$UJ|p@!*Np4-^(~L>uMzILCxoAjzY}?15gY*wCn%pEcE5}vCR_jI zf{YKn9>Z_0l`Pw8dq-q^1XpZMKEKTe;h@{y-`^+v+Rd-SoqJsWVyTAwAZj-VKUqI4 z5woA%|E(Y1`g&0yg0{`hUKedYQ>jl*_@14!{^8~~h_5gA+5W5~>+8B~e|%v!8s%b9yQDU+sNnFCTTso1ch(4T zp;@INV#h+ig$7%5==mxdNWCri|C2Rrw7)%>PWGly5JkB}ECN7&-Lkp=C*&OY80{z?92^{Ehn=l$ zBYt|`Y)kgu$@3p{m3*H^fYg5UgcjQy^&GZbzebs^|7Bgr1B7XnvpUb#FuC0Qk?a2u z)a?!qhRpwgx2$rb9nFrIy_fMP$jJag5BaIeyQG+9Y@S`j4>rHVx#ba%9dlA^fR7x< zd^c&y-fV1V>x;FOvV{|Tv3=A6=Zm5t&JSXM;ntSxV+Gg&e-0=Qm;9uV0|w)dO5EL3 z={WSZ?sx9H^nmR5@80$OyZwG&#TLSkG|k2d%{E{Zy?WI@IwJFLH1cscr`K+GI&JFU ziG8JciG8E@Lp&Yl;DD0lA$&jK;^M34KjL!v$@<9!BI{#&FAq^@0vCLb<69OIAQSZh zYJb}Z2C@X4-}V~~zs>B|8wW5s2SEE8Cqst3<$eQAXfh05U5 z?S7C#KB(~%m_E;cuz#;QSE>EPD~SGA%73Mn--LHL4lc)P9IYMQhY{5e(3dnj)sL(% z_}D_2!8w&5T)T$&rcPiasba|(5O=#of*%bJc>*8=LVyeage~xjP17~{03rljynn>@ zmqEm4*Nn|Fb*Uzxh7jJ|f~&@jCc{A}DqiJuu1$Ezh-PLnGx^Zc|v%*8K~f2vXWW4YsB<@m!3_@^36 z9z-ga;)&g$zjEAZBeh>@_v*B3_AbRqY@GCs(|*RJCA}HTXL#C;${&x<_(^-!s4_gY z-wn1tN&5}6Ij?u7-Zb<19|hGvkrRuL7mQEkr+g|uk^7O$PwWzN{ZhTC{PFnAzNww! z-1%7+weNWSQaS3Mob^o!@)dJZ<^`n9RKJmZ@Pali^Zc~=BLAZMPkt4eE%Wlz`lQP| zell0)artFrw#?(H;Q8ik{Y`Q_@h3n(LITM0ONbh!fIL4Kr(i@xngZe}kchy`t47`f z+9(4g`5*L?<0AvjPI{(>X9pA-W07AZxH|uX9HfBA07?Eg8vpd|+tZm5v$seAbMq(U zFO|If1t}mhK$8DqsG!$7Z}%vUiI4uXT1{$r_b=ZbvlxLF(8=c!Hh;Vw!`BsE5FFoc z#?FV|$)M@Y7<&Es_3k`2u7efu_uJ_8@QwUemqweu8J!_4DmDYk+Xcm^_)_7LcDZ-I zab?<+x%=&}Kc78&^5pU3OzWg_>z_wX+1`$REi5TM!LF~b8~FSj1o%Qfq5O}V{{ZK+ BWG?^! diff --git a/noyau/font/italics.fnt b/noyau/font/italics.fnt deleted file mode 100644 index ddb95d82758246cef1e88c622c94e777fdf43922..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/noyau/font/lcd.fnt b/noyau/font/lcd.fnt deleted file mode 100644 index aefe346c8451d297965419ccd9558d39638ce118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcma)B&ube;6duW9vo5NvhO}&n&@V)2b6OHm1YK5ANFY82(n}9PwL$ek1fOCZmQ~zB z3G`NaNdACA$f^H8z(gPlH9iW1(-3;FZov?63=P`8H@mB>2?u;keEdSP#YJ`>rLCXw@=;x ze6Ts#+}!+Oa=fP&u&g6z;v7N#R%hEAc-x(pT3w`8E|dnP3o9vrQ~WK<@?nI?Gi zPRFAkzsf5ZZ2Ly@?C|m@*+Sh|TT=)G#au48MlDxVPS2a|e!qXRcXC$9eqPFD&NIyX z0}C|7X$a?4We*|LG~*LlV_;-~Hg{Y0z((v+t<&iYH2Sq}(5+$IEEHUKfC*^xxdpua zFmZ^OvI!IH-zqgNMYTF05jxaTrhDhko%-tPstXK=?|=Pm>x-|~e^%=Yx7BL7t#;d0 zLj$RF z#>|&nkLIKk7jC=V7Ic94v1exZkx)vUx~Wu3&OxFtc`9+1Np>dA$#k1#P=1lz8hwdt z{Fmd?@w4s{eL04N&vU07c^G|?l$dF%vLExv*(v8uMe2&pQ0Ah4&{$PYF~DhTsUk0N zh~K@N!}~|b*id}hK>vOezxx2^`4PNF0nYlo{&f1<^~KzDv;aS2Irb6Y1j+eF<6E}= z<#Hq3{(&GJ&ib;QsP)Ny*n;7%N@CjG*y?X} zHo8+4D#Unv@1Ez~8;{3o+#4B&V;IKBQ{$u2!NK_W7>vKs(BncJcYD2lzt`&?tNCSo zIlLggqqkG~b*#Y&lG6k9J*i6{V0@u2=9lxw69neR>Au{f_7Xk7@V^UxA)^O0(mfx> z-?987Za&uUd5wnGL-E^>+te^rGZ5QXqe4jQ{1K?MllaPtO5*Gf+jg&0^Hr!2Lu&7s z|D75?q0sC053S!T?iCn6aX{4nGXH^^ze&5xb?IZG#;LcT^(crBm3Z24BLCC{2rJPN zq7i`nK)8SH8a=}5EBU#zSmzuN42M9%8%_82(E27FN&%bzfHsv-T_bCt^-Ef`#mC2J zeF>QYG&rRIP5@~C6MvNApnoz2jKThv{>cmg^}`eZ_CIMwDL|$F*{%7%MVW7(&;Kpr zfA7ryE#gsbn0*2KEEZ7WXBNckVLOe!(M^7;#h3A)8jwHcjlUQDm)FxJ`lklCw+RvP zLR`j;{8!rj*a_no#l7@Vbp9;DL2jJM29eykhh#B7!XpOAAKORzvcF`N5FW+v2AUt) zf5UFhMxr`t+Is!>0{SoM0`Y!{eaIi_Lw?Eo9`nn%1lYgGFUTL;NAZoq6==s-ufzDp z^B3``zclk3DKwYZhyI1}v6ijhW%~=RKYlBeZ0Z4unaCo3vd|WBelwD6i+Du5*gb#! zN*3TAECIa{6@Z%iZ&(82`XDaB07X;+;&*tXUZc_I;rnA)0fPFEhRXJ-0-Yap;);Gd zP=h&^>I;dh>p$Y55|AoDQ2&MYPhY=2O<0^ir4mqEKT-Ws)YUIk0#XGC>OV5&@9%%; z?L(Xf9{$gJHM^p>U;K6q(6J;o;-Q{IMJ6lZT++3 c7Mus8pH@`QUuw0QMX#TIpWe_Xl>YbWe`m<@>Hq)$ diff --git a/noyau/font/mechanix.fnt b/noyau/font/mechanix.fnt deleted file mode 100644 index 3207764c9c7b69fee4d66b6caced5d215caeedda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/noyau/font/norway.fnt b/noyau/font/norway.fnt deleted file mode 100644 index 103b729308b242360d4f2953e8da6e6f40df50da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/noyau/font/old8x8.fnt b/noyau/font/old8x8.fnt deleted file mode 100644 index 6d72f9c51ae7f8057770f299f5afe26fe72a2162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 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 IV2qZojZQq-DGul<3EX{uNzIpG>o0+#` z#^xpNe&6jr?ssES#Q7-C(@Cx|a}p5GTGRsrN&UAzac6H_r2ThM^lMg0wlx zBnA5@s?!bc+zDwo_NM*EkNc_CFE3oYJVb&PTY~qOd{urzBgjY$6jj$72vt_sM``S9X$aKLLP(rXSzly%{@YUhV=(A70i&j)eXY?i#-ri_QL0lhq zt(_h3DQw$U)=8t9s<0t`Tj&|W6XzUyi6us{o4fJI%oqa9;af5SNf9eoOc!k=gWZ* zh_D5|rfF*Uxw7YvNgt!GpvUI~TsBA#4aRQbH<;!tCsW8DV-T4R4#=2KIRmm6r(@8pUhgUK&$BE$hnS{>AEw>?{r&C}J-=x>L^1k29Uh$>4O5*j zg$ILiar~p6$p;+%G>7km^sY+3sUOR*8#vFNJs|z$*Q1wb&oaXw4^U?Qy6N9PA9g{A z-y8n*WB=Pny&>T^MP=9c$F-S)h4H*zEXy9L2Y;uehxrd8UOCY7&->;5aw^j?9O`@m z-rBl#%jEm8-~a9T*Sn^Eq)+ZP#Py9{kL&{-$g_HxAK(fPdz4QXiklR@KlcZ?_*~a3 zw@RY)i%^Wn@O+~T3bFXnye8stmeF}-W8ZJ@Km~m>V@26uVAg+$^ZUoJM>HR3UXb{k z9`P;5wj+pGuOD>pWmz z8j(F{-az<)whuUhaLxH7{Z89|t4Bb5+3|g@)*m`whftx6ma%WLj+OnQ*(>%rOz)

hHe6}4hv2qhk5O_8Bk%JtN5GuTkf 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 diff --git a/noyau/font/standard.fnt b/noyau/font/standard.fnt deleted file mode 100644 index 00e69f4c967f26eab291941eaa0c2ce18928021f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcma)BPix#p6d&6`2}NDIhk{C$^~Ho9MFJa9#5#n0g!Iyru#1|5D0_1DAhdA{A&@VS ze1Jm8sb3(lctI4p__!GCE~bawO9_U6W2lk(-bnKPd%xL^lU?on=J(#4H#6@&NlLA1 z$>DE@hacV^CSYKapXPagk|SI-yVP3sJAkk5)LSOl@%_nU;y6CwJARVq3C4*=A{@ZZ zxlQ_HKR0=hA3lB@0`<)5zy0vxZ6EPBZ-4oXABISP(wIXNkd>?52fME8wlB^B-reu+ z@9+OK8TaG?j&tfy{8K3ZQP7UNaXWY<)79F>?d|UN?Ts~nlm8vZNuY<-llMg4VhcD-qBZVChPMy*!cq*iN)%X8lDbUGKki>tc*^>*#nvVXF zn!++w_YgwOFh6BmUCRb+?snX+i==B>5CmNVe<#et9gN?p*ITVF7C?uuRmaB<3oZ~k zJU%%<0SD2}HrU1@q9}{>e@T<$#OYBlwyc+F3^b^t)OOq;eJSyk@}kH)I2#NG2O>^q zClG-DY;d@mq8r3U0@ zq`z2WS$@n^1D~;k^xGYoPv@HtH+Fx8qvh4^qg`ep`HDOboX?bixxB(MpX|43^{|07 zU^E(?^??7jc!Ol@AX)x3MSz(8hu1Rhhex!6y(5$WuOcRgVRR+)vvBWO=UK29g8fzE zL2x1Swf<3>hTq9J&rDAb%#VYgZobTK=;%Q42kehAO|8?RNseXy1x0^qaDM5>jIt*; znV*g?v(Yie_1@`KU8Y`Sj1{t}J6 zEy+5i7#|LY*~bXsQS5m!ZE_jsy{Y#ASpO`2$%pR<#XrADFRlyt>P7Fo?bU16x~$(X z(vNM6d_J8rPv{j2DA!z>6hb<74D+ix4+7rZ6a)l~MOU0s06_b%PBV*0JjmZHAx} zJMf>3Ht-Oy^BJ2ThI*{@Q5<2sJ_SF9A)xXfO3`NrA&wtpP|Ohkt>2dGUh@%Y)+N(* zpI$!0{?N0>Hy{)OH~@h2Pa3H9@l5Ba2r-FeqZBpZ`V{1+8ZB*`H;@=Txp2_QnLowG zT$bUqMOYo2$^Fw_oxzcLs?iLM`90g)3u5;0^;F{Qm5%=gocX$e^GW)PmiG^5_yzn8-Nwn)3U)<(KyPkWX8PW&q*?v6B1uDZqpJnD9oEV?f^T0}aOfPaFyX z8~^}Y(IYm?w$S|tvFL~o$LM@09RdtEg#caPkD>lD#6et#07HJKEzGAF@>k{eG6YEc zub#~REspvA{ruk|{@3&QzeSuA*K7m$RW(M$uN;Usi*{LlHy8Qk@63p=l7DGI`IX%2 zThyPe;9pvxc2KI63vul?vR~9Y?S%d-{k}aNI)7E-AU58N&C791HB2QR;iUv9ztWHR zx_{f*MtJGJhiH9t|3i28W+u|bu50FhR?vPeE?1vd=!f!4K9sNJe#Y{(Uvg|;X&01V z=|}!8-IW{X*K9)nR_j;Fk-rSNq(dcqs=*%xF0gd$&)h`WG{X!)mRe+%W zBR$Dra2*XGP7^Qw&6qTMS-!qNF`|6@3?EVR(=i%@@Y>zGRdAv2S-pH+K_@3C;Qm)X zdQb49P##=3QD@C-elRImU1MQ^N diff --git a/noyau/font/stretch.fnt b/noyau/font/stretch.fnt deleted file mode 100644 index e619be7269693aa172dde764009d412256c5e569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWs&1xJ+5H2xcq{C+I+&XB{>fi@xvM^rIFl$U+A@^|_MwekNFvJ3{d#uOs1LTqi z$jz`YUhV+gGmuXk>{JuMu^<;BG-Md1IA%g5svLiHZA%mv4eT_^l9bH zX|#R&?%mtg^AGmF{5r2HuK?y=-~`U&Vz!V{p55Iz+^9w=b-MX`Z3l$t@=e~c{*&@- z)vV6SCzgi2WPjRB_me$`F@7P0=7?uTU^a7n({cOh>)|Dsylfu5d5qXfQJ z<*HO6Uj~y?jxRX#mxf%Vb}HH`5_W>&i;)y zH%~0)7I&}ZeCF8ONPL3ctm)}Vxm)EUE1o~VX2ibZ8|P7ogD>J?yw^$7hUfLB#O+rf zBAr5&QGF(;-A4Lo-)^INI+{tT<#}ZP8uc4|sO*sSf6M#`Cb)tl#wm(hiuNA>-xY&B!tgLZA;j%?ezW!Sjd8hW_@5iBS$=2`h9ezs04GbnbvINKihIP- z>{(epn;oS|VR-EA*z>FE#A;)^ghDmE2w15CX<<|o-?fYEDSl~q1UZHbb< z*gyG;G5L!z@pD?Vt8jdH1{fcQ0anT`*OdT;W0vnQy=t17EaZ$60?U&_ef`Hvm#t}5 zRSo9j)M6ViR+P;aZlA*V0=Dr6O!39}BtFJuPv(onCPXO;j}8!aK1cI>_-<;c0sAeV zWZ%ehYzQy3iUrf`*!U20M<*I_ZEA!P5bqb^Inge^gyZ!Q9>kCJ zwX{bf3ILIM@v3=#>hcSDT^HbELxp)=&tc_arHgr=NnW2}8tm!j#{I!|k+|FPMpdDAP!7=L*>cI#tEXVcJ99VHvR#8_fz}>`157_qiADc{Mn8= z{8=#0tbDW=Hz~k&fOqvjrmS!E{9k9k-Qho`TkqLvGB$Ccf6u!s$7kafCY8iF-0$e) zk&A@+smD%__3b#7ABoeS3f6b=J+@Z>bA2oqgZUP6$bZ^7()I9Z$DZ|#pFZdty-z{k zgtg0O8OQJKjULADq#w+eWgM^3!}WPZbB)&P#uq#G?9axtlP~eV{o?%5S5Oe1)eQmM z4Fur9K=3$Wg$>Qk$+E7OuHWN8K_@Y$459FzJB=o58ddl3mqm&5#H-^ z?fg&h17n5X7_Ohv@~k+XPRsV69l#x->g5u`>C6X-p8?luK3F^+A5urP!q11ew%rw7 z(o@jei<=R9WOyl?e&|E-SF#yMzzgr?`CLob}h?aJ`aowBZDCZ{{fi< ByCwht diff --git a/noyau/font/thai.fnt b/noyau/font/thai.fnt deleted file mode 100644 index b275bd82eea5f95448d383bdf13d384bd3e94b39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH}Pis>_5Wt7^5kh#>5^{LNQYAhlM39h_P;3bD2qnZ@2*s16?}eun5$VMeLIa@( z37&H7!Na5U5JaW;0ZQnp^yDcN4}Jvk)Pq=O_D|k!{RBd$ZMMIi+1Z($-A(~k%iEpK zc6l{%s|F-th~Fq1oFHL4Pzwf~KxiSkQh{osHrJEA&PB&Ic%`ypFnX;rs(b_T zr~4;=I+H)0Nx$x(h~?l^P3{yOLmvdVLl6vtfNw|P=xjSh7?g{(VtF9)#n0CpclKxB z-%7q)3Bv)N#|yzC-XKut0qD4fIA?BlJIO`50Jy%vSBk}$oZCyD+e`k(UU^pbH~31i z9Iq8idpW3Cee6$j9v3<3w%0Nw^1Pux9G;v+k>^Q$)Jo@a{>fxhaw3&rUM`(VNbV0= zwvbJwteE{Md|1BEnOTi5FY_dOg4xkCzTJGkU(FH9hs$%hUhw&GV@XU@ecC_rQ@e*< zno*qgCvD>1!IhQGrrgfgk9Fc`D~k(I2vAxR@_+g1hX2n`g<9l0j`Mvr#{4xF=jFG2 zX&+8@O1l5v!OvtJ<+s##kGihwKB_#BjG=S$ea?)T3^0wR!|`}L;lTrACZm4pd4}F# z09nuJRNrrRa;)OT$i2s&=lzj-ir2F2Oj5GSFUJ_4!FuLe&2XMCG746mYnjzQH}A*U zS-t&yo%*Dw#To3S$%f;k^bMN5CGJh<#&AC4u`xZ$;1ZZb$OT7egxQ4Gwy)3?g`Y1N);zo!GR%&kQ4Bf+#x>4L>=WwJd$Qh4hPx+$J zPNzi%LTjx*Y3DUPC7~fOzngz!OcV@zz($~M2%2HK_wvi!zSd|oiul|9Y&H`P=={KO zU3DUUguXQfR%p9AlWUzRHoe5;U{@$Q6G^%~RupfROmuqccC rT=f4%|JN^s>=*O?zUcpEzhCr!vwtu8Km9#k^#4WwSO1^=PyPQdYL{SR diff --git a/noyau/font/thin.fnt b/noyau/font/thin.fnt deleted file mode 100644 index 22061e548ada1c0181fb8df51233160688ae1951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWszi-<{6h29YEEKAvc)G$uEEGb~k*xqlfEh|*ytGq>bZ5$fUIfQLh7^cOib_)0 zoosJfT4XR#Y~Nz zQJOxRrm+xlHqWxzX=bqMCSYE(W*XL-UJ+{7Jv}|u+7({AahAn71~*8wuo>Fv4C14) z(~W#TlIG~0O`koR&J2HP`P0wbC^7;?*BUyIi2Y9Aah#nuuLLJy5{BW{>3_%U(0cBk zx^t@^1UsW-v=a=NR;9}Fda}M;DG7%BwbrrCxI?Bo9pRJte13lojIkFw&2AWWo7K=0 z1)iW}f^0k~C}Zft@Nik|PpNt}sn&(XlXeovsL34!fr*Z|9c59Q2s+f7P0zF4V=A84 z%%?9G(p7^^sYZivyIlwc9^dyf`LRCU-`^jtuCAW3Ufn)8{GrzP;+wsniQn1X-Mtwc z{POVIuLx`1Xwiins=75mYw0R^0=-m5Thak58i%)f=e=8p5*`z4oWoDr+fy;{x%K83 zrog3Ad8yWD4aQ^QT>rtNy@SWkQ=eB{!@0>7XpDqUOJx_-V_u!EkGNbi`f~M?)zAG& z1}T$11Law{WO>k!pT0;_qtBo@^p9rZ1La#DFK=AS+oOn5H~Ht73dw_MHEK)TKhQXO zTY&*lG-7Zo)!Up*uzxeZ(BJgv=;+t+b&q)6h6FOmH%$qj`PZ-eBRrfD#{6K2V>2G) z$%M!8kI(SH^~&)$Z~t3f59+DVUr(yvX!Jhylb&MZ zLE;nk{dQaCkNGLo+&6l^O-1MYCSaRiQcU7AT(5ACn0m%^x8NZrUX8~*#ibJAnCk^c z<}ox2KRQyuVBK)T0zHDplgUry!P?ULeeu*PTpye=z7p8A8!)OHTrU(sjk588*VD>n zzFp0FM;`UC#>;qz+4wR)s#a6I8XC7(a9>qvOuPb6k4xb9mlF)d(xM)muMf$PC;Q_i zR+aRGaSfaKL5GY_b_C9kZbDKk_2+Z!bu37!I333&en8Sh;da!xykdEp<3c?U!z5dN zGJ*V_Y+8(DahgzX>Vu+;RsgSW+B;g%Uu}unW7o7N%7zGw0XX=z2E?nKX`UE+YWRRk z_*$teo!dchyK|*l;etnzf~RW~ZLpwP*UAf%z&y>Mv2v@PT&@;!V)a&vf>Si}K58jE}w@^HhDy2Es6_=4-&QAx+~oQ^Gs z+TK`;PyV^b<5%n5C`zCnTZ}nhc%zWzsUVOC&|uCt$CzKSp2!z5w#VlE3Kt{{F+F^N z;QoZR@!{2Ac6>au?>o)z*Updd!gDv4d}ooXGx*4IJBy;x_tBjwddvLE8q^NoX!OYr zdawY+`9$19TI!3qI6lM+`EP8iZGI)faDc+Q_mewYQeWi`hn_OIfuJ`W_S6WaVvwlT zjvXI)6L_OBJf4$Er6M?Z6-GntY|pCob#yWAZ2i415{l>MZbob!k5d2MD}L}%Tr`V6uvhR0ZE=_F9iOCAcswuQi~4s}t7n}#O8fH*{JZM8 zi7ZNsDKCg`csbkrIB!j*L{4yaK@ZCb&GPF8i_YrVkIN5D^y}K{CBLhDR*KG7o&G|9 zeP@w>uWWqMW$OKf_Es;v)syahuBWuJJRZmCTD@scI=O|wmo4`v2jio5=1>@~ zxcV2`+jyMMg?j0a=F8R({{`h{I#l9P>dk^Fb!ow1AZ)fFU2JR*hugB>gTo8sFpPts zMI`)tg1Zrn5FQdU81f_`Y-w-h8+_A&1tho$nI?R zKiaKB=+W%QSD-t1{Mi405GJ0_O>3npRe*2f;8@}}ogf$mfg}4V4v$TE1&Q;Q9WW!f zdhHT{?%)~d*gXuc;Tco6cx4TDR5p8m=o8*uAtc@f8K0y_*dyU9M*E=w=8SC?EXS9q ecCUx7jOPSvZFVzgvvcAEe|=bJ?2#?FEchQI4AK1n diff --git a/noyau/heure.asm b/noyau/heure.asm deleted file mode 100644 index 918ab3f..0000000 --- a/noyau/heure.asm +++ /dev/null @@ -1,81 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -start: - -jmp tsr -offsets dd 0 -db 'HOURS' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - pusha - push ds es - push cs - push cs - pop ds - pop es - mov ah,22h - mov di,offset infos - int 47h - mov bl,[infos+1] - xor bh,bh - sub bl,8 - mov di,bx - shl di,1 - mov dx,71h - xor eax,eax - mov cx,0B800h - mov es,cx - mov cl,4 - mov bp,8 -show: - dec dx - mov al,cl - out dx,al - inc dx - in al,dx - call showbcd - cmp cl,0 - je finic - mov byte ptr es:[di],':' - add di,2 - sub cl,2 - jmp show -finic: - pop es ds - popa - sti - iret - - -;==============================Affiche le nombre nb hexa en EDX============== -Showbcd: - push ax bx cx edx - mov edx,eax - mov cx,bp - sub cx,32 - neg cx - shl edx,cl - mov ax,bp - shr ax,2 -bcdaize: - rol edx,4 - mov bx,dx - and bx,0fh - add bl,'0' - mov es:[di],bl - add di,2 - dec al - jnz bcdaize - pop edx cx bx ax - ret -infos db 40 dup (0) - -end start diff --git a/noyau/horloge.asm b/noyau/horloge.asm deleted file mode 100644 index 41c7f0d..0000000 --- a/noyau/horloge.asm +++ /dev/null @@ -1,32 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -start: - -jmp tsr -offsets dd 0 -db 'TIMER' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - push ax bx es - mov bx,cs:compteur - inc bx - and bx,11b - mov cs:compteur,bx - mov bx,cs:[offset fig+bx] - mov ax,0B800h - mov es,ax - mov es:[0],bl - pop es bx ax - sti - iret -compteur dw 0 -fig db 'Ä\³/' -end start diff --git a/noyau/manette.asm b/noyau/manette.asm deleted file mode 100644 index d291dc2..0000000 --- a/noyau/manette.asm +++ /dev/null @@ -1,298 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'JOYSTICK',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -jmp react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw 0;detectjoystick - ;dw getjoystick - ;dw getjoystickscreen - ;dw configjoystick -isact db 0 - -;envoie en bx,cx les coordonn‚es et en dl les boutons -getjoystick: -push ax cx -mov bx,cs:rx -mov cx,cs:ry -mov al,cs:button -not al -mov cl,4 -shr al,cl -mov dl,al -pop cx ax -ret - -;envoie en di les coordonn‚es ecran et en dl les boutons -getjoystickscreen: -push ax cx -mov di,cs:xy -mov al,cs:button -not al -mov cl,4 -shr al,cl -mov dl,al -pop cx ax -ret -db 'button' -Button db 0 -db 'rx' -rx dw 0 -db 'ry' -ry dw 0 -db 'vx' -VX db 0 -db 'vy' -VY db 0 -db 'x' -X dw 7FFFh -db 'y' -Y dw 7FFFh -speed db 6 -spherex db 0 -spherey db 0 -db 'count' -count db 0 -db 'error' -error db 0 -xy dw 0 -old db 0 - -calibrate db 0 -db 'ticks' -ticks dw 0 -db 'state' -state db 0 -db 'connard' -connard db 1 -connard2 db 1 -;Gestionnaire de joystick -react: - push ax bx cx dx si di bp ds es - push cs - pop ds - mov dx,201h - cmp error, 1 - je gest1 - cmp count,1 - je gest1 - cmp count,2 - je gest2 -gest1: - mov error,0 - mov count,2 - call getticks - mov ticks,ax - out dx,al - in al,dx - and al,00000011b - mov state,al - jmp endgest -gest2: -not connard - call getticks - sub ax,ticks - cmp ax,1FF0h - jb nofinish - mov error,1 - jmp endgest -nofinish: - mov bx,ax - in al,dx - and al,00000011b - cmp state,al - je endgest - xchg state,al - xor al,state - mov cl,4 - or bx,bx - js noadj - shr bx,cl -noadj: - test al,1 - je isy - mov VX,bl - jmp wasx -isy: - test al,2 - je endgest - mov VY,bl -wasx: -mov connard2,0fh - mov count,1 -endgest: - in al,dx - not al - mov cl,4 - shr al,cl - mov button,al - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov cl,speed - movsx bx,VY - shl bx,cl - cmp spherey,0 - jne nolimity - xor ah,ah - mov al,[di] - cmp byte ptr [di+7],4 - jbe text4 - shl ax,3 -text4: - dec ax - cmp bx,0 - jg decy - cmp ry,ax - jae noaddy - jmp nolimity -decy: - cmp ry,0 - je noaddy -nolimity: - sub y,bx -noaddy: - movsx bx,VX - shl bx,cl - cmp spherex,0 - jne nolimitx - xor ah,ah - mov al,[di+1] - cmp byte ptr [di+7],4 - jbe text5 - shl ax,3 -text5: - dec ax - cmp bx,0 - jl decx - cmp rx,ax - jae noaddx - jmp nolimitx -decx: - cmp rx,0 - je noaddx -nolimitx: - add x,bx -noaddx: - mov ax,x - mov bx,0FFFFh - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text1 - shl cx,3 -text1: - mul cx - div bx - mov rx,ax - mov ax,y - xor ch,ch - mov cl,[di] - cmp byte ptr [di+7],4 - jbe text2 - shl cx,3 -text2: - mul cx - div bx - mov ry,ax - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text3 - shl cx,3 -text3: - mul cx - add ax,rx - cmp byte ptr [di+7],4 - mov di,ax - jbe textpoint - mov ax,0A000h - mov es,ax - jmp graphpoint -textpoint: - mov ax,0B800h - mov es,ax - shl di,1 - inc di -graphpoint: - mov bx,xy - cmp byte ptr es:[bx],070h - jne waschanged - mov al,old - mov byte ptr es:[bx],al -waschanged: - mov xy,di - mov al,es:[di] - mov old,al - mov byte ptr es:[di],070h - mov al, 20h - out 0a0h, al - out 20h, al -errormouse: - pop es ds bp di si dx cx bx ax - mov cs:isact,0 - pop bx - iret - infos db 40 dup (0) - - -getticks: -mov al,0 -out 43h,al -jmp wait1 -wait1: -in al,40h -mov ah,al -jmp wait2 -wait2: -in al,40h -xchg ah,al -ret - -end start diff --git a/noyau/mcb.asm b/noyau/mcb.asm deleted file mode 100644 index 7facccc..0000000 --- a/noyau/mcb.asm +++ /dev/null @@ -1,749 +0,0 @@ - -;Affiche le nombre hexa dans %0[dword] -PROC biosprinth FAR - ARG @num:dword - USES ax,bx,cx,edx,si,di - mov edx,[@num] - mov ah,09h - mov di,8 -@@hexaize: - rol edx,4 - mov si,dx - and si,1111b - mov al,[cs:si+offset @@tab] - mov cx,1 - cmp al,32 - jb @@control - mov bx,7 - mov ah,09h - int 10h -@@control: - mov ah,0Eh - int 10h - dec di - jnz @@hexaize - ret -@@tab db '0123456789ABCDEF' -endp biosprinth - -;Affiche le texte ASCIIZ pointé par %0 -PROC biosprint FAR - ARG @pointer:word - USES ax,bx,cx,si - mov si,[@pointer] - mov cx,1 - mov bx,7 -@@again: - lodsb - or al,al - jz @@fin - cmp al,32 - jb @@control - mov ah,09h - int 10h -@@control: - mov ah,0Eh - int 10h - jmp @@again -@@fin: - ret -endp biosprint - -PROC enablea20 FAR - USES ax - mov al,0d1h - out 64h,al - call a20wait - mov al,0dfh - out 60h,al - call a20wait - ;mov al,0ffh - ;out 64h,al - ;call a20wait - ret -endp enablea20 - -PROC disablea20 FAR - USES ax - mov al,0d1h - out 64h,al - call a20wait - mov al,0DDh - out 60h,al - call a20wait - ;mov al,0ffh - ;out 64h,al - ;call a20wait - ret -endp disablea20 - -a20wait: - in al,64h - jmp @@suite -@@suite: - and al,2 - jnz a20wait - ret -;par le system control port A -;in al,92h -;or al,2 -;out 92h,al - -;par le system control port A -;in al,92h -;and al,not 2 -;out 92h,al - -PROC flatmode FAR - USES eax,bx,ds - push cs - pop ds - ; first, calculate the linear address of GDT - xor eax,eax - mov ax,ds - shl eax,4 - add [dword ptr offset @@gdt+2],eax ; store as GDT linear base addr - ; now load the GDT into the GDTR - lgdt [fword ptr offset @@gdt] ; load GDT base - mov bx,1 * size descriptor ; point to first descriptor - cli ; turn off interrupts - mov eax,cr0 ; prepare to enter protected mode - or al,1 ; flip the PE bit - mov cr0,eax ; we're now in protected mode - jmp @@suite -@@suite: - mov fs,bx ; load the FS segment register - and al,0FEh ; clear the PE bit again - mov cr0,eax ; back to real mode - jmp @@suite2 -@@suite2: - sti ; resume handling interrupts - ret ; - -@@gdt descriptor ; the GDT itself - descriptor <0ffffh, 0, 0, 091h, 0cfh, 0> ; 4G data segment -@@gdtend: -endp flatmode - -;Attend l'appuie sur une touche -PROC bioswaitkey FAR - USES ax - xor ax,ax - int 16h - ret -endp bioswaitkey - -firstmb dw 0 - - -;Charge les sections du block %0 -PROC mbloadsection FAR - ARG @blocks:word - USES ax,bx,cx,si,di,ds,es - LOCAL @@toresov:word:60 - mov ax,[@blocks] - mov es,ax - mov ds,ax - cmp [word ptr 0],"EC" - jne @@notace - lea si,[@@toresov] - mov [word ptr ss:si],0FFFFh - mov bx,[ds:exe.sections] - cmp bx,0 - je @@finishloading -@@loading: - cmp [dword ptr bx],0 - je @@finishloading - mov ax,bx - add ax,4 -pushad -call biosprint,ax -popad - call mbcreate,ax,[word ptr bx+2] - jc @@error - inc si - inc si - mov [ss:si],ax - push si - mov si,[bx] - xor di,di - mov es,ax - mov cx,[bx+2] - cld - rep movsb - pop si - add bx,4 -@@gonext: - inc bx - cmp [byte ptr bx],0 - jne @@gonext - inc bx - jmp @@loading -@@finishloading: - cmp [word ptr ss:si],0FFFFh - je @@finishdepands - call mbloadfuncs,[word ptr ss:si] - jc @@depandserror - dec si - dec si - jmp @@finishloading -@@finishdepands: - ret -@@notace: - stc - ret -@@error: - stc - ret -@@depandserror: - stc - ret -endp mbloadsection - - -;Initialise les blocs de mémoire en prenant memorystart pour segment de base -PROC mbinit FAR - USES ax,cx,si,di,ds,es - cmp [cs:firstmb],0 - jne @@alreadyok - push cs - pop ds - mov [cs:firstmb],memorystart - mov ax,memorystart-2 - mov es,ax - mov si,offset afree - xor di,di - mov cx,size mb - rep movsb - clc - ret -@@alreadyok: - stc - ret -endp mbinit - -afree mb <"HN",0,0,0,0A000h-memorystart,"Libre"> - db 0 - -;Creér un bloc de nom %0 de taille %1 (octets) -> n°segment dans AX -PROC mbcreate FAR - ARG @blocks:word,@size:word - USES bx,cx,dx,si,di,ds,es - push gs - mov ax,[ss:bp+4] - mov dx,ax - dec dx - dec dx - mov gs,dx - cmp [word ptr gs:0x0],'NH' - je @@oktoset - mov ax,memorystart -@@oktoset: - mov gs,ax - mov cx,[@size] - shr cx,4 - inc cx - mov bx,[cs:firstmb] - dec bx - dec bx - mov dl,true -@@searchfree: - cmp dl,false - je @@notenougtmem - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.isnotlast],true - sete dl - cmp [es:mb.reference],free - jne @@notsogood - mov ax,[es:mb.sizes] - cmp cx,ax - ja @@notsogood - mov [word ptr es:mb.check],"NH" - mov [es:mb.isnotlast],true - mov [es:mb.reference],gs - mov [es:mb.isresident],false - lea di,[es:mb.names] - push cx - mov cx,24/4 - mov si,[@blocks] - cld - rep movsd - pop cx - inc bx - inc bx - sub ax,cx - cmp ax,0 - je @@nofree - dec ax - dec ax - mov [es:mb.sizes],cx - add cx,bx - mov es,cx - mov si,offset afree - xor di,di - mov cx,size mb - push cs - pop ds - cld - rep movsb - mov [es:mb.isnotlast],dl - mov [es:mb.sizes],ax -@@nofree: - mov ax,bx - pop gs - clc - ret -@@notsogood: - inc bx - inc bx - add bx,[es:mb.sizes] - jmp @@searchfree -@@memoryerror: - pop gs - stc - ret -@@notenougtmem: - pop gs - stc - ret -endp mbcreate - -;Libère le bloc de mémoire %0 et ses sous blocs -PROC mbfree FAR - ARG @blocks:word - USES ax,bx,cx,si,di,ds,es - mov bx,[@blocks] - mov ax,bx - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.reference],free - je @@wasfree - cmp [es:mb.isresident],true - je @@wasresident - mov [es:mb.reference],free - push cs - pop ds - mov si,offset @@isfree - lea di,[es:mb.names] - mov cx,6 - cld - rep movsb - mov bx,[cs:firstmb] - dec bx - dec bx -@@searchtofree: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@nottofree - cmp ax,[es:mb.reference] - jne @@nottofree - mov [es:mb.isresident],false - mov [es:mb.reference],free - mov si,offset @@isfree - lea di,[es:mb.names] - mov cx,6 - cld - rep movsb -@@nottofree: - cmp [es:mb.isnotlast],true - je @@searchtofree - call mbclean - ret -@@memoryerror: - stc - ret -@@wasfree: - stc - ret -@@wasresident: - stc - ret - -@@isfree db "libre",0 -endp mbfree - -;Mise a nivo de la mémoire (jonction de blocs libre) -PROC mbclean FAR - USES ax,bx,dx,es,gs - mov bx,[cs:firstmb] - dec bx - dec bx - xor ax,ax - xor dx,dx -@@searchfree: - mov gs,bx - cmp [word ptr gs:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[gs:mb.sizes] - cmp [word ptr gs:mb.sizes],0 - je @@notenougtmem - cmp [gs:mb.reference],free - jne @@notfree - cmp ax,0 - je @@notmeetfree - add dx,[gs:mb.sizes] - mov [word ptr gs:mb.check],0 - mov [dword ptr gs:mb.names],0 - inc dx - inc dx - jmp @@nottrigered -@@notmeetfree: - xor dx,dx - mov ax,gs - jmp @@nottrigered -@@notfree: - cmp ax,0 - je @@nottrigered - mov es,ax - add [es:mb.sizes],dx - xor ax,ax -@@nottrigered: - cmp [gs:mb.isnotlast],true - je @@searchfree - cmp ax,0 - je @@reallyfinish - mov es,ax - add [es:mb.sizes],dx - mov [es:mb.isnotlast],false -@@reallyfinish: - clc - ret -@@notenougtmem: - stc - ret -@@memoryerror: - stc - ret -endp mbclean - -;Rend le segment %0 résident -PROC mbresident FAR - ARG @blocks:word - USES bx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - mov [es:mb.isresident],true - ret -@@memoryerror: - stc - ret -endp mbresident - -;Rend le segment %0 non résident -PROC mbnonresident FAR - ARG @blocks:word - USES bx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - mov [es:mb.isresident],false - ret -@@memoryerror: - stc - ret -endp mbnonresident - - -;Change le proprietaire de %0 a %1 -PROC mbchown FAR - ARG @blocks:word,@owner:word - USES bx,dx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.reference],free - je @@wasfree - mov dx,[@owner] - mov [es:mb.reference],dx - ret -@@memoryerror: - stc - ret -@@wasfree: - stc - ret -endp mbchown - -;Alloue un bloc /data de CX caractere pour le process appelant -> ax -PROC mballoc FAR - ARG @size:word - USES si,ds - push cs - pop ds - call mbcreate,offset @@data,[@size] - call mbchown,ax,[word ptr ss:bp+4] - ret - -@@data db '/data',0 -endp mballoc - -;Renvoie en AX le MB n° %0 carry quand terminé -PROC mbget FAR - ARG @num:word - USES bx,dx,es - mov bx,[cs:firstmb] - dec bx - dec bx - xor dx,dx -@@searchfree: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - cmp dx,[@num] - je @@foundmcb - ja @@notfound - inc dx - cmp [es:mb.isnotlast],true - je @@searchfree -@@memoryerror: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -@@notfound: - stc - ret -endp mbget - -;Renvoie en AX le MCB qui correspond a ds:%0 -PROC mbfind FAR - ARG @blocks:word - USES bx,si,di,es - mov bx,[cs:firstmb] - dec bx - dec bx - mov si,[@blocks] -@@search: - mov es,bx - lea di,[es:mb.names] - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - push si di -@@cmpnames: - mov al,[es:di] - cmp al,[ds:si] - jne @@ok - cmp al,0 - je @@ok - inc si - inc di - jmp @@cmpnames -@@ok: - pop di si - je @@foundmcb - cmp [es:mb.isnotlast],true - je @@search -@@notfound: - stc - ret -@@memoryerror: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -endp mbfind - - -;Renvoie en AX le sous mcb qui correspond a %0 et qui appartien a %1 -PROC mbfindsb FAR - ARG @blocks:word,@owner:word - USES bx,dx,si,di,es - mov bx,[cs:firstmb] - dec bx - dec bx - mov si,[@blocks] - lea di,[es:mb.names] - mov dx,[@owner] -@@search: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - push si di -@@cmpnames: - mov al,[es:di] - cmp al,[ds:si] - jne @@ok - cmp al,0 - je @@ok - inc si - inc di - jmp @@cmpnames -@@ok: - pop di si - jne @@notfoundmcb - cmp [es:mb.reference],dx - je @@foundmcb -@@notfoundmcb: - cmp [es:mb.isnotlast],true - je @@search -@@notfound: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -@@memoryerror: - stc - ret -endp mbfindsb - -;Resouds les dépendances du bloc de mémoire %0 -PROC mbloadfuncs FAR - ARG @blocks:word - USES ax,bx,cx,dx,si,ds - mov ds,[@blocks] - cmp [word ptr 0],"EC" - jne @@notace - mov si,[ds:exe.imports] - cmp si,0 - je @@endofloading -@@loadfuncs: - cmp [word ptr si],0 - je @@endofloading - call mbsearchfunc,si - jnc @@toendoftext - mov bx,si -;pushad -;call biosprint,si -;popad -@@findend: - inc bx - cmp [byte ptr bx], ':' - jne @@findend - mov [byte ptr bx],0 - call [cs:projfile],si - jc @@erroronload - mov [byte ptr bx],':' -;pushad -;call biosprint,si -;popad - call mbsearchfunc,si - jc @@libnotexist -@@toendoftext: - mov cl,[si] - cmp cl,0 - je @@oktonext - inc si - jmp @@toendoftext -@@oktonext: - inc si - mov [si],ax - mov [si+2],dx - add si,4 - jmp @@loadfuncs -@@endofloading: - clc - ret -@@notace: - stc - ret -@@libnotexist: - stc - ret -@@erroronload: - stc - ret -endp mbloadfuncs - - -;Recherche une fonction pointé par DS:%0 en mémoire et renvoie son adresse en DX:AX -PROC mbsearchfunc FAR - ARG @func:word - USES bx,si,di,es - mov bx,[@func] - mov si,bx -@@findend: - inc bx - cmp [byte ptr bx], ':' - jne @@findend - mov [byte ptr bx],0 - call mbfind,si - mov [byte ptr bx],':' - jc @@notfoundattallthesb - mov es,ax - cmp [word ptr es:exe.checks],"EC" - jne @@notfoundattallthesb - mov di,[es:exe.exports] - inc bx - inc bx -@@functions: - cmp [word ptr es:di],0 - je @@notfoundattallthesb - mov si,bx -@@cmpnamesfunc: - mov al,[es:di] - cmp al,[ds:si] - jne @@notfoundthesb - cmp al,0 - je @@seemsok - inc si - inc di - jmp @@cmpnamesfunc -@@notfoundthesb: - mov al,[es:di] - cmp al,0 - je @@oktonext - inc di - jmp @@notfoundthesb -@@oktonext: - inc di - inc di - inc di - jmp @@functions -@@seemsok: - mov dx,es - mov ax,[es:di+1] - clc - ret -@@notfoundattallthesb: - stc - ret -endp mbsearchfunc diff --git a/noyau/port.asm b/noyau/port.asm deleted file mode 100644 index c4a588d..0000000 --- a/noyau/port.asm +++ /dev/null @@ -1,699 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'LPT ',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx ax -mov ah,4 -mov bh,1 -int 50h -mov bl,al -pop ax -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -cmp bl,80h -jae react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw getlptin - dw getlptout - dw getlptinout - dw setlptin - dw setlptout - dw setlptinout - dw getlpt - dw getfirstlpt - dw setemettor - dw setreceptor - dw settimeout - dw gettimeout - dw receivelpt - dw sendlpt - dw receivelptblock - dw sendlptblock - dw receivecommand - dw sendcommand - -react: -push ds es -mov cs:isact,1 -pushad -push cs -pop ds -push cs -pop es -cmp byte ptr never,1 -je oknever -mov bl,[drv+3] -sub bl,'0' -xor bh,bh -call getlpt -dec bl -shl bl,1 -mov al,7 -sub al,bl -mov ah,40 -mov di,offset video -int 47h -push ax -mov ah,01h -int 50h -mov ah,21 -mov cl,4 -int 47h -sti -mov al,0111b -call setlptout -call setreceptor -call initlpt -jc errorie -mov cx,0 -mov ah,20 -mov bx,1012h -mov si,offset initok -int 47h -cmp byte ptr always,1 -je yes -mov ah,20 -mov bx,1010h -mov si,offset mdd -int 47h -mov ah,13 -mov si,offset drv -int 47h -mov ah,6 -int 47h -mov ah,20 -mov bx,1011h -mov si,offset msg -int 47h -waitkey: -mov ax,0 -int 16h -cmp al,'n' -je no -cmp al,'N' -je no -cmp al,'Y' -je yes -cmp al,'y' -je yes -cmp al,'e' -je nev -cmp al,'E' -je nev -cmp al,'a' -je alw -cmp al,'A' -je alw -jmp waitkey -yes: -call receivecommand -jc errortimeout -no: -mov al,0111b -call setlptout -cli -mov ah,41 -mov si,offset video -int 47h -pop ax -mov ah,00h -int 50h -mov ah,09h -int 50h -oknever: -popad -pop es ds -mov cs:isact,0 -pop bx -jmp endofint -errorie: -mov si,offset inits -jmp show -errortimeout: -mov si,offset timeouts -show: -mov ah,20 -mov bx,1012h -int 47h -mov ax,0 -int 16h -jmp no -nev: -mov byte ptr never,1 -jmp no -alw: -mov byte ptr always,1 -jmp yes -initok db 'Initialisation is realised !',0 -inits db 'Error on initialisation',0 -timeouts db 'Connection lost or timeout complete !!',0 -mdd db 'Connection demand on ',0 -msg db 'Accept connection ? (Y)es (N)o n(E)ver (A)lways',0 -isact db 0 -always db 0 -never db 0 - -;envois une commande al -sendcommand: -push ax bx cx di -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmde -call cs:[bx] -pop di cx bx ax -ret -cmde dw nothing - dw getram - -;recupŠre la ram en ds:si de cx distant caractŠres en es:di local -getram: -push ax bx cx ds -mov bx,offset command -mov cs:[bx+2],ds -mov cs:[bx],si -mov cs:[bx+4],cx -push cs -pop ds -mov si,bx -mov cx,6 -call sendlptblock -jc endofget -call receivelptblock -endofget: -pop ds cx bx ax -ret - -;Re‡ois une commande et l'execute -Receivecommand: -push ax bx cx di ds es -push cs -pop es -push cs -pop ds -mov di,offset command -call receivelptblock -jc endofno -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmd -call cs:[bx] -clc -endofno: -pop es ds di cx bx ax -ret - -command db 25 dup (0) -cmd dw nothings - dw sendram - dw receiveram - dw sendreg - dw receivereg - dw sendport - dw receiveport - dw letexecute -nothings: -ret - -letexecute: -push ds es fs gs -pushad -push cs -push offset suite -mov ax,es:[di+2] -mov ds,ax -mov es,ax -mov fs,ax -mov gs,ax -push ax -mov ax,es:[di] -push ax -DB 0CBh -suite: -popad -pop gs fs es ds -ret - -Sendram: -push ax cx si ds -mov si,es:[di] -mov ax,es:[di+2] -mov ds,ax -mov cx,es:[di+4] -call sendlptblock -pop ds si cx ax -ret - -receiveram: -sendreg: -receivereg: - -sendport: -push ax cx dx si -mov dx,es:[di] -in ax,dx -mov cx,2 -mov si,offset tempblock -mov ds:[si],ax -call sendlptblock -pop si dx cx ax -ret - -receiveport: -push ax dx -mov dx,es:[di] -mov ax,es:[di+2] -out dx,ax -pop dx ax -ret - -tempblock db 25 dup (0) - -;---------Segment Adress----------- -Bios equ 040h -;---------Offset Adress------------ -Lptadr equ 008h -Timer equ 06Ch -;---------Constant----------------- -onesec equ 18 -tensec equ 182 -Ack equ 00 -Nack equ 0FFh -maxtry equ 10 - -Initlpt: -push ax ecx -call StartTimer -cmp cs:emettor,0 -je receptinit -mov al,10000b -call SetLptOut -waitinit1: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz waitinit1 -jmp endinit -receptinit: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz receptinit -mov al,10000b -call SetLptOut -endinit: -clc -pop ecx ax -ret -errorinit: -stc -pop ecx ax -ret - - -;-Envoie DL (dh) JNE si problŠme JNC error timeout -Sendlpt: -push ax bx ecx -call StartTimer -mov dh,dl -mov al,dl -and al,0Fh -call SetLptOut -waitSend: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jnc waitsend -and al,0Fh -mov bl,al -call StartTimer ;///// -mov al,dh -shr al,4 -or al,10000b -call SetLptOut -waitSend2: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jc waitsend2 -and al,0Fh -shl al,4 -add bl,al -cmp dl,bl -pop ecx bx ax -clc -ret -errorsend: -pop ecx bx ax -stc -ret - - -;-Re‡ois DL (dh) -Receivelpt: -push ax bx ecx -call StartTimer -waitreceive: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jnc waitreceive -and al,0Fh -mov dl,al -call SetLptOut -call StartTimer ;///// -waitreceive2: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jc waitreceive2 -and al,0Fh -mov dh,al -shl dh,4 -add dl,dh -or al,10000b -call SetlptOut -clc -pop ecx bx ax -ret -errorreceive: -stc -pop ecx bx ax -ret - -;-AX -SetTimeout: -mov cs:Timeout,dx -ret - -timeout dw tensec - -getTimeout: -mov dx,cs:Timeout -ret - -SetEmettor: -mov cs:Emettor,1 -ret - -Emettor db 0 - -SetReceptor: -mov cs:Emettor,0 -ret - -;->bx Nøport->Adresse dx -GetLpt: -push ax bx ds -mov ax,bios -mov ds,ax -dec bx -shl bx,1 -mov dx,ds:[Lptadr+bx] -mov cs:lpt,dx -pop ds bx ax -ret -lpt dw 0 - -;->bx Nøport->Adresse dx -GetFirstLpt: -push ax ds -mov ax,bios -mov ds,ax -xor bx,bx -findlpt: -mov dx,ds:[Lptadr+bx] -cmp dx,0 -jne oklpt -add bx,2 -cmp bx,4 -jbe findlpt -oklpt: -mov cs:lpt,dx -pop ds ax -ret - -;-> -StartTimer: -push ax ecx ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -mov cs:times,ecx -pop ds ecx ax -ret -times dd 0 - -;->Ecx time elapsed -EndTimer: -push ax ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -sub ecx,cs:times -pop ds ax -ret - -;-> -GetLptOut: -push dx -mov dx,cs:lpt -in al,dx -pop dx -ret - -GetLptIn: -push dx -mov dx,cs:lpt -inc dx -in al,dx -shr al,3 -pop dx -ret - -GetLptInOut: -push dx -mov dx,cs:lpt -add dx,2 -in al,dx -and al,11111b -pop dx -ret - -SetLptOut: -push dx -mov dx,cs:lpt -out dx,al -pop dx -ret - -SetLptIn: -push dx -mov dx,cs:lpt -inc dx -out dx,al -pop dx -ret - -SetLptInOut: -push dx -mov dx,cs:lpt -add dx,2 -out dx,al -pop dx -ret - -;R‚alise un checksum 8 bits sur donn‚es DS:SI, nb CX r‚sultat dans dl -Checksum8: -push cx si -check: -add dl,[si] -inc si -dec cx -jnz check -pop si cx -ret - -;DS:SI pointeur sur donn‚es, CX nombres de donn‚es, AL token -SendLptBlock: -push ax bx cx edx si edi bp -mov dx,cx -shl edx,16 -mov dh,al -call checksum8 -mov edi,edx -xor dh,dh -mov bp,dx -mov ah,maxtry -retry: -mov bl,4 -xor al,al -header: -mov dx,di -call sendlpt -setne al -jc outt -rol edi,8 -dec bl -jnz header -cmp al,0 -jne notgood -mov dl,ACK -jmp allsend -notgood: -mov dl,NACK -allsend: -call sendlpt -setne al -jc outt -cmp al,0 -je okheader -dec ah -jnz retry -jmp outt -okheader: -cmp cx,0 -je endoftrans -mov di,maxtry -retry2: -mov bx,cx -xor ax,ax -body: -mov dl,[si+bx-1] -add ah,dl -call sendlpt -setne al -jc outt -dec bx -jnz body -cmp al,0 -jne notgood2 -mov dl,ACK -jmp allisend -notgood2: -mov dl,NACK -allisend: -call sendlpt -setne al -jc outt -cmp al,0 -je endoftrans -dec di -jnz retry2 -outt: -stc -endoftrans: -mov al,ah -xor ah,ah -cmp bp,ax -pop bp edi si edx cx bx ax -ret - -;Receptionne en es:di les donn‚es au nombres de CX token AL (AH) (ECX) -receiveLptBlock: -push bx dx si bp -mov ah,maxtry -retrye: -mov bl,4 -headere: -call receivelpt -jc outte -mov cl,dl -rol ecx,8 -dec bl -jnz headere -call receivelpt -jc outte -cmp dl,ACK -je okheadere -dec ah -jnz retrye -jmp outte -okheadere: -mov al,ch -xor ch,ch -mov bp,cx -rol ecx,16 -cmp cx,0 -je endoftranse -mov si,maxtry -retrye2: -mov bx,cx -xor ah,ah -bodye: -call receivelpt -jc outte -mov es:[di+bx-1],dl -add ah,dl -dec bx -jnz bodye -call receivelpt -jc outte -cmp dl,ACK -je endoftranse -dec si -jnz retrye2 -outte: -stc -endoftranse: -mov bl,ah -xor bh,bh -cmp bp,bx -pop bp si dx bx -ret -video db 0 -end start diff --git a/noyau/souris.asm b/noyau/souris.asm deleted file mode 100644 index ab8b210..0000000 --- a/noyau/souris.asm +++ /dev/null @@ -1,327 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'MOUSE',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx ax -mov ah,4 -mov bh,0 -int 50h -mov bl,al -pop ax -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -and bl,10000b -cmp bl,16 -jae react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw cmdmouse - dw cmdmouse2 - dw detectmouse - dw getmouse - dw getmousescreen - dw configmouse - -isact db 0 - -;Envoie une commande AL … la souris via controleur clavier -cmdmouse: - push ax -videbuff1: - in al, 64h - and al, 10b - jne videbuff1 - mov al, 00d4h - out 64h, al -videbuff2: - in al, 64h - and al, 10b - jne videbuff2 - pop ax - out 60h, al - in al, 60h - ret - -;Envoie une commande2 AL … la souris via controleur clavier carry=nomouse -cmdmouse2: - push ax -videbuff21: - in al, 64h - and al, 10b - jne videbuff21 - mov al, 0060h - out 64h, al -videbuff22: - in al, 64h - and al, 10b - jne videbuff22 - pop ax - out 60h, al - in al, 60h - ret - -Detectmouse: - push ax cx - mov al, 0a8h ;AUX enable - out 64h, al - mov al, 0f3h ;Set sample - call cmdmouse - mov al, 100 ;Set sample - call cmdmouse - mov al, 0e8h ;Set resolution - call cmdmouse - mov al, 01 ;Set resolution - call cmdmouse - mov al, 0e7h ;Set scale 2:1 - call cmdmouse - mov al, 0f4h ;Enable device - call cmdmouse - mov al, 47h ;Interruption ON - call cmdmouse2 - mov cx, 1024 -testmouse: - in al, 60h ;Lecture du port de donn‚es - cmp al, 250 ;Test si il y a une souris - je okmouse - dec cx - jnz testmouse - stc - jmp endoftest -okmouse: - clc -endoftest: - pop cx ax - ret - -;envoie en bx,cx les coordonn‚es et en dl les boutons -getmouse: -mov bx,cs:rx -mov cx,cs:ry -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - -;envoie en di les coordonn‚es ecran et en dl les boutons -getmousescreen: -mov di,cs:xy -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - - -;configure la rapidit‚ dans cl et dans ah,al sphŠre x et y -Configmouse: -mov cs:speed,cl -mov cs:spherex,ah -mov cs:spherey,al -ret - -Button db 0 -rx dw 0 -ry dw 0 -VX db 0 -VY db 0 -X dw 7FFFh -Y dw 7FFFh -speed db 6 -spherex db 0 -spherey db 0 -count db 0 -error db 0 -xy dw 0 -old db 0 -;Gestionnaire de souris PS/2 -react: - push ax bx cx dx di ds es - push cs - pop ds - in al, 60h - cmp error, 1 - je gest1 - cmp count, 1 - je gest1 - cmp count, 2 - je gest2 - cmp count, 3 - je gest3 - -gest1: - mov count, 2 - mov Button, al - and al, 00001000b - cmp al, 8 - je gest1end - mov error, 1 - jmp gest1end2 -gest1end: - mov error, 0 -gest1end2: - mov count, 2 - jmp endgest -gest2: - mov count, 3 - mov VX, al - jmp endgest -gest3: - mov count, 1 - mov VY, al - jmp endgest -endgest: - cmp error,1 - je errormouse - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov cl,speed - movsx bx,VY - shl bx,cl - cmp spherey,0 - jne nolimity - xor ah,ah - mov al,[di] - cmp byte ptr [di+7],4 - jbe text4 - shl ax,3 -text4: - dec ax - cmp bx,0 - jg decy - cmp ry,ax - jae noaddy - jmp nolimity -decy: - cmp ry,0 - je noaddy -nolimity: - sub y,bx -noaddy: - movsx bx,VX - shl bx,cl - cmp spherex,0 - jne nolimitx - xor ah,ah - mov al,[di+1] - cmp byte ptr [di+7],4 - jbe text5 - shl ax,3 -text5: - dec ax - cmp bx,0 - jl decx - cmp rx,ax - jae noaddx - jmp nolimitx -decx: - cmp rx,0 - je noaddx -nolimitx: - add x,bx -noaddx: - mov ax,x - mov bx,0FFFFh - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text1 - shl cx,3 -text1: - mul cx - div bx - mov rx,ax - mov ax,y - xor ch,ch - mov cl,[di] - cmp byte ptr [di+7],4 - jbe text2 - shl cx,3 -text2: - mul cx - div bx - mov ry,ax - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text3 - shl cx,3 -text3: - mul cx - add ax,rx - cmp byte ptr [di+7],4 - mov di,ax - jbe textpoint - mov ax,0A000h - mov es,ax - jmp graphpoint -textpoint: - mov ax,0B800h - mov es,ax - shl di,1 - inc di -graphpoint: - mov bx,xy - cmp byte ptr es:[bx],070h - jne waschanged - mov al,old - mov byte ptr es:[bx],al -waschanged: - mov xy,di - mov al,es:[di] - mov old,al - mov byte ptr es:[di],070h - mov al, 20h - out 0a0h, al - out 20h, al -errormouse: - pop es ds di dx cx bx ax - mov cs:isact,0 - pop bx - iret - infos db 40 dup (0) - -end start diff --git a/noyau/systeme.asm b/noyau/systeme.asm deleted file mode 100644 index f40ce49..0000000 --- a/noyau/systeme.asm +++ /dev/null @@ -1,297 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\cpu.h" -include "..\include\pci.h" -include "..\include\fat.h" - -memorystart equ 0052h ;premier bloc de la mémoire - -org 0h - -mb0: -header exe <"CE",1,0,0,offset exports,offset imports,offset section,offset start> - -start: - push cs - push cs - push cs - push cs - pop ds - pop es - pop fs - pop gs - call biosprint,offset return - call biosprint,offset msg_memory - call biosprint,offset return - call biosprint,offset msg_memory_init - call mbinit - jc error - call biosprint,offset msg_ok - call biosprint,offset msg_memory_section - mov ax,cs - call mbloadsection,ax - jc error - call biosprint,offset msg_ok - call biosprint,offset msg_memory_jumps - jmp [dword ptr cs:pointer] -pointer: - dw suite - dw memorystart -suite: - push cs - push cs - push cs - push cs - pop ds - pop es - pop fs - pop gs - call biosprint,offset msg_ok - call biosprint,offset msg_video_init - call [cs:setvideomode],2 - jc error - call [cs:clearscreen] - call [cs:print],offset msg_memory - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_init - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_section - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_jumps - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_video_init - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_handler - ;call installirqhandler - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_cpu_detect - call [cs:cpuinfo],offset thecpu - call [cs:setinfo],offset thecpu,offset temp - call [cs:print],offset msg_ok2 - push offset temp - xor eax,eax - mov al,[thecpu.family] - push eax - mov al,[thecpu.models] - push eax - mov al,[thecpu.stepping] - push eax - push offset thecpu.names - push offset thecpu.vendor - call [cs:print],offset msg_cpu_detect_inf - call [cs:print],offset msg_pci - call [cs:pciinfo],offset thepci - jc nopci - call [cs:print],offset msg_ok2 - xor eax,eax - mov al,[thepci.maxbus] - push eax - mov al,[thepci.version_minor] - push eax - mov al,[thepci.version_major] - push eax - call [cs:print],offset msg_pci_info - call [cs:print],offset msg_pci_enum - xor bx,bx - xor cx,cx - xor si,si -searchpci: - call [cs:getcardinfo],bx,cx,si,offset temp - jc stopthis - mov al,[(pcidata offset temp).subclass] - push ax - mov al,[(pcidata offset temp).class] - push ax - call [cs:getpcisubclass] - push dx - push ax - mov al,[(pcidata offset temp).class] - xor ah,ah - push ax - call [cs:getpciclass] - push dx - push ax - push 4 - push esi - push 4 - push ecx - push 4 - push ebx - mov ax,[(pcidata offset temp).device] - push eax - mov ax,[(pcidata offset temp).vendor] - push eax - call [cs:print],offset msg_pci_card - inc si - cmp si,7 - jbe searchpci -stopthis: - xor si,si - inc cx - cmp cx,31 - jbe searchpci - xor cx,cx - inc bx - cmp bx,16 - jbe searchpci - jmp next -nopci: - call [cs:print],offset msg_echec2 -next: - call [cs:detectvmware] - jne novirtual - call [cs:print],offset msg_vmware -novirtual: - call [cs:print],offset msg_flat - call enablea20 - call flatmode - xor ax,ax - mov fs,ax - mov esi,0100000h - mov [dword ptr fs:esi],"OKIN" - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_disk_init - call [cs:initdrive] - jc error2 - call [cs:print],offset msg_ok2 - call [cs:execfile],offset shell - -error2: - call [cs:print],offset msg_error2 - call bioswaitkey - jmp far 0FFFFh:0000h - -error: - call biosprint,offset msg_error - call bioswaitkey - jmp far 0FFFFh:0000h - -shell find <"COMMANDE.CE",0,0,0,1,> -thepci pciinf <> -thecpu cpu <> -temp db 256 dup (0) -return db 0dh,0ah,0 -msg_memory db "Initialisation de la memoire",0 -msg_memory_init db " -Creation du bloc primordial",0 -msg_memory_section db " -Developpement des sections",0 -msg_memory_jumps db "Redirection du systeme",0 -msg_video_init db "Initialisation du pilote VIDEO",0 -msg_handler db "Initialisation du gestionnaire d'interruption",0 -msg_cpu_detect db "Dectection du processeur",0 -msg_cpu_detect_inf db " -Fondeur : %0\l -Modele : %0\l -Revision : %u\l -Version : %u\l -Famille : %u\l -Technologies: %0\l",0 -msg_pci db "Detection des systemes PCI",0 -msg_pci_info db " -Version : %yB.%yB\l -Numero bus max: %u\l",0 -msg_pci_enum db " -Enumeration des peripheriques PCI:\l" - db " |Vendeur|Modele|Bus |Dev.|Func|Classe.Sous-classe\l",0 -msg_pci_card db " | %hW | %hW |%w|%w|%w|%0P.%0P\l",0 -msg_vmware db "\c04 VMWare a ete detecte !!!\c07\l",0 -msg_flat db "Initialisation du Flat Real Mode\l",0 -msg_disk_init db "Initialisation du pilote DISQUE\l",0 - - -msg_error db " [Erreur]",0dh,0ah,"",0 -msg_ok db " [ Ok ]",0dh,0ah,0 -msg_error2 db "\h70 [\c04Erreur\c07]\g00,49",0 -msg_ok2 db "\h70 [\c02 Ok \c07]\l",0 -msg_echec2 db "\h70 [\c0CPasser\c07]\l",0 - - -exporting -declare biosprinth -declare biosprint -declare mbinit -declare mbcreate -declare mbfree -declare mbclean -declare mbresident -declare mbnonresident -declare mbchown -declare mballoc -declare mbfind -declare mbfindsb -declare mbget -declare mbloadfuncs -declare mbsearchfunc -declare bioswaitkey -declare mbloadsection -declare enableirq -declare enableirq -declare readimr -declare readirr -declare readisr -declare seteoi -declare enablea20 -declare disablea20 -declare flatmode -declare installirqhandler -declare irqhandler -declare isenableirq -declare isrequestirq -declare isinserviceirq -declare savecontext -declare restorecontextg -ende - - -importing -use VIDEO,setvideomode -use VIDEO,clearscreen -use VIDEO.LIB,print -use DETECT.LIB,cpuinfo -use DETECT.LIB,setinfo -use DETECT.LIB,pciinfo -use DETECT.LIB,getcardinfo -use DETECT.LIB,getpcisubclass -use DETECT.LIB,getpciclass -use DETECT.LIB,detectvmware -use DISQUE,initdrive -use DISQUE,projfile -use DISQUE,execfile -endi - -include "mcb.asm" -include "8259a.asm" - -section: -dw offset mb0 -dw offset mb1-offset mb0 -db "SYSTEME",0 - -dw offset mb1 -dw offset mb2-offset mb1 -db "VIDEO",0 - -dw offset mb2 -dw offset mb3-offset mb2 -db "VIDEO.LIB",0 - -dw offset mb3 -dw offset mb4-offset mb3 -db "DETECT.LIB",0 - -dw offset mb4 -dw offset mb5-offset mb4 -db "DISQUE",0 - -dd 0 - -mb1: -includebin "video.sys" -mb2: -includebin "..\lib\video.lib" -mb3: -includebin "..\lib\detect.lib" -mb4: -includebin "disque.sys" -mb5: - - - - diff --git a/noyau/systeme.ini b/noyau/systeme.ini deleted file mode 100644 index fe574b7..0000000 --- a/noyau/systeme.ini +++ /dev/null @@ -1,9 +0,0 @@ -mcb.sys(49) -video.sys(47) -horloge.sys(8) -8259a.sys(50) -disque.sys(48) -souris.sys(74) -heure.sys(8) -clavier.sys(9) -port.sys(D) \ No newline at end of file diff --git a/noyau/video.asm b/noyau/video.asm deleted file mode 100644 index e8b6f68..0000000 --- a/noyau/video.asm +++ /dev/null @@ -1,1352 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\graphic.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare setvideomode -declare getvideomode -declare clearscreen -declare setfont -declare loadfont -declare getfont -declare addline -declare showchars -declare showpixel -declare getpixel -declare setstyle -declare getstyle -declare enablecursor -declare disablecursor -declare setcolor -declare getcolor -declare scrolldown -declare getxy -declare setxy -declare savescreen -declare restorescreen -declare page2to1 -declare page1to2 -declare xchgpages -declare waithretrace -declare waitretrace -declare getvideoinfos -declare savedac -declare restoredac -declare savestate -declare restorestate -declare enablescroll -declare disablescroll -declare getchars -declare savescreen -declare savescreento -declare saveparamto -declare restoreparamfrom -declare restorescreen -declare restorescreenfrom -declare page2to1 -declare page1to2 -declare xchgpages -declare savestate -declare restorestate -declare savestate -declare restoredacfrom -declare restoredac -declare savedacto -ende - -importing -use SYSTEME,mbcreate -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,mbchown -endi - -;================================Table des modes videos (64 BYTES) ============================================ -;40*25 16 couleurs -mode0 DB 67H,00H, 03H,08H,03H,00H,02H - DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,01FH,00H,4FH,0DH,0EH,00H,00H,00H,00H - DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,08H,00H - DB 40,25 - -;80*25 16 couleurs -mode1 DB 67H,00H, 03H,00H,03H,00H,02H - DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0DH,0EH,00H,00H,00H,00H - DB 9CH,0EH,8FH,28H,1FH,96H,0B9H,0A3h,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,08H,00H - DB 80,25 - -;80*50 16 couleurs -mode2 DB 63H, 00H, 03H,01H,03H,01H,02H - DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 80,50 - -;100*50 16 couleurs -mode3 DB 067H,00H,03H,01H,03H,01H,02H - DB 70H,63H,64H,85H,68H,84H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,9Ch,08EH,8FH,32H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 100,50 - -;100*60 16 couleurs -mode4 DB 0A7H,00H,03H,01H,03H,01H,02H - DB 70H,63H,64H,85H,68H,84H,0FFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,0E7H,8EH,0DFH,32H,1FH,0DFH,0E5H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 100,60 - -;320*200 256 couleurs -mode5 DB 63H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H - DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,25 - -;320*400 256 couleurs -mode6 DB 063H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H - DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,50 - -;320*480 256 couleurs -mode7 DB 0E3H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,00H - DB 0EAH,0ACH,0DFH,28H,00H,0E7H,06H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,60 - -;360*480 256 couleurs -mode8 DB 0E7H, 00H, 03H,01H,0FH,00H,06H - DB 6BH,59H,5AH,8EH,5EH,8AH,0DH,3EH,00H,40H,00H,00H,00H,00H,00H,00H - DB 0EAH,0ACH,0DFH,2DH,00H,0E7H,06H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 45,60 - -;400*600 256 couleurs -mode9 DB 0E7H, 00H, 03H,01H,0FH,00H,06H - DB 74h,63h,64h,97h,68h,95h,86h,0F0h,00h,60h,00h,00h,00h,00h,00h,00h - DB 5Bh,8Dh,57h,32h,00h,60h,80h,0E3h,0FFh - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 50,75 - -;640*480 16 couleurs -mode10 DB 0E3H - DB 00H - DB 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,53H,9FH,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,00H,0E9H,8BH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH,01H,00H,0FH,00H,00H - DB 80,60 - -;800*600 16 couleurs -mode11 DB 0E7H - DB 00H - DB 03H,01H,0FH,00H,06H - DB 70H,63H,64H,92H,65H,82H,70H,0F0H,00H,60H,00H,00H,00H,00H,00H,00H,5BH,8CH,57H,32H,00H,58H,70H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH,01H,00H,0FH,00H,00H - DB 100,75 - -;============================================DATABLOCK========================================================= -datablock vgainf <0,0,0,0,0,7,0FFh,0,0,0,0,0,0,0,0,0,0,0,1> - -;=======================================Equivalence pour la clarté du code======================================== -sequencer equ 03C4h -misc equ 03C2h -ccrt equ 03D4h -attribs equ 03C0h -graphics equ 03CEh -statut equ 03DAh - -maxmode equ 11 -planesize equ 65000 -;============================================Fonctions de l'int VIDEO=========================================== - - -;=============ENABLESCROLLING========= -;Autorise le défilement -;-> -;<- -;===================================== -PROC enablescroll FAR - mov [cs:datablock.scrolling],1 - ret -endp enablescroll - -;=============DISABLESCROLLING========= -;Désactive le d‚filement -;-> -;<- -;====================================== -PROC disablescroll FAR - mov [cs:datablock.scrolling],0 - ret -endp disablescroll - -;=============ENABLECURSOR============= -;Autorise le d‚filement -;-> -;<- -;====================================== -PROC enablecursor FAR - USES ax,dx - mov [cs:datablock.cursor],1 - mov dx,ccrt - mov al,0Ah - out dx,al - inc dx - in al,dx - and al,11011111b - mov ah,al - dec dx - mov al,0Ah - out dx,ax - mov al,[cs:datablock.x] - xor ah,ah - mov dl,[cs:datablock.y] - xor dh,dh - call setxy,ax,dx - ret -endp enablecursor - -;=============DISABLECURSOR============= -;D‚sactive le d‚filement -;-> -;<- -;======================================= -PROC disablecursor FAR - USES ax,dx - mov [cs:datablock.cursor],0 - mov dx,ccrt - mov al,0Ah - out dx,al - inc dx - in al,dx - or al,00100000b - mov ah,al - dec dx - mov al,0Ah - out dx,ax - ret -endp disablecursor - -;==========SETSTYLE========= -;Change le style du texte a %0 -;-> %0 style -;<- -;============================ -PROC setstyle FAR - ARG @style:word - USES cx - mov ax,[@style] - mov [cs:datablock.style],al - ret -endp setstyle - -;==========GETSTYLE========= -;Récupère le style du texte dans AX -;-> -;<- AX style -;=========================== -PROC getstyle FAR - mov al,[cs:datablock.style] - xor ah,ah - ret -endp getstyle - -;=============SetVideoMode========= -;Fixe le mode vidéo courant a %0 -;-> %0 mode d'écran -;<- Carry if error -;================================== -PROC setvideomode FAR - ARG @mode:word - USES ax,cx,dx,di - mov ax,[@mode] - xor ah,ah - cmp al,maxmode - ja @@errorsetvideomode - cmp [cs:datablock.mode],5h - jb @@nographic - cmp al,5h - jae @@nographic - call initfont -@@nographic: - cmp [cs:datablock.mode],0FFh - jne @@noinit - call initfont -@@noinit: - mov [cs:datablock.mode],al - xor ah,ah - mov di,ax - shl di,6 - add di,offset mode0 - mov dx,misc - mov al,[cs:di] - out dx,al - inc di - mov dx,statut - mov al,[cs:di] - out dx,al - inc di - mov dx,sequencer - xor ax,ax -@@initsequencer: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,4 - jbe @@initsequencer - mov ax,0E11h - mov dx,ccrt - out dx,ax - xor ax,ax -@@initcrt: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,24 - jbe @@initcrt - mov dx,graphics - xor ax,ax -@@initgraphic: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,8 - jbe @@initgraphic - mov dx,statut - in al,dx - mov dx,attribs - xor ax,ax -@@initattribs: - mov ah,[cs:di] - push ax - in ax,dx - pop ax - out dx,al - xchg ah,al - out dx,al - xchg ah,al - inc al - inc di - cmp al,20 - jbe @@initattribs - mov al,20h - out dx,al - mov al,[cs:di] - mov [cs:datablock.columns],al - mov ah,[cs:di+1] - mov [cs:datablock.lines],ah - mul ah - mov cl,[cs:di-5] - and cl,01000000b - cmp cl,0 - je @@colors16 - mov [cs:datablock.color],8 - mov cl,4 - jmp @@colors256 -@@colors16: - mov [cs:datablock.color],4 - mov cl,3 -@@colors256: - cmp [cs:datablock.mode],5 - setae [cs:datablock.graphic] - jb @@istext - shl ax,cl - mov [cs:datablock.segments],0A000h - jmp @@wasgraph -@@istext: - mov [cs:datablock.segments],0B800h - shl ax,1 -@@wasgraph: - mov [cs:datablock.pagesize],ax - mov ax,planesize - xor dx,dx - div [cs:datablock.pagesize] - mov [cs:datablock.nbpage],al - mov al,[cs:di-36] - xor ah,ah - shl ax,2 - mov cl,[cs:datablock.graphic] - shr ax,cl - mov [cs:datablock.linesize],ax - mov ax,[cs:di-43] - mov [cs:datablock.adress],ax - mov [cs:datablock.base],ax - mov [cs:datablock.cursor],1 - mov [cs:datablock.style],0 - ret -@@errorsetvideomode: - ret -endp setvideomode - - -initfont: - push ds - call clearscreen - push cs - pop ds - call loadfont,offset font8x8,8,1 - call loadfont,offset font8x16,16,0 - pop ds - ret - -;=============GetVideoMode========= -;Renvoie le mode vidéo courant dans AX -;-> -;<- AX -;================================== -PROC getvideomode FAR - mov al,[cs:datablock.mode] - xor ah,ah - ret -endp getvideomode - -;=============CLEARSCREEN========= -;Efface l'ecran graphique ou texte -;-> -;<- -;================================= -PROC clearscreen FAR - USES eax,cx,dx,di,es - mov cx,planesize - mov di,[cs:datablock.adress] - shr cx,2 - cmp [cs:datablock.graphic],1 - jne @@erasetext - mov ax,0A000h - mov es,ax -@@erasegraph: - mov ax,0F02h - mov dx,sequencer - out dx,ax - mov ax,0205h - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - mov ax,0FF08h - out dx,ax - mov eax,00000000h - cld - rep stosd - mov ax,0005h - cmp [cs:datablock.color],4 - je @@not256 - mov ax,4005h -@@not256: - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - jmp @@endoferase -@@erasetext: - mov ax,0B800h - mov es,ax - mov eax,07200720h - cld - rep stosd -@@endoferase: - call setxy,0,0 - ret -endp clearscreen - - -;=============SetFont========= -;Active la font %0 parmi les 8 -;-> %0 n° font -;<- Carry if error -;============================= -PROC setfont FAR - ARG @font:word - USES ax,cx,dx - mov cx,[@font] - xor ch,ch - cmp cl,7 - ja @@errorsetfont - mov [cs:datablock.font],cl - mov ah,cl - and cl,11b - and ah,0100b - shl ah,2 - add ah,cl - mov dx,sequencer - mov al,3 - out dx,ax - ret -@@errorsetfont: - ret -endp setfont - -;=============GetFont========= -;Récupère le n° de la font active AX -;-> -;<- CL n° font, Carry if error -;============================= -PROC getfont FAR - mov al,[cs:datablock.font] - xor ah,ah -endp getfont - -;!!!!!!!!!!!!!!!!!!!! a remettre les anciens params de timing depuis origine -;=============LoadFont======== -;Charge une police pointée par %0 dans la carte vidéo sous n°font %1, taille police dans %2 -;-> %0 n°font, %1 pointeur vers Font, %2 taille police -;<- Carry if error -;============================= -PROC loadfont FAR - ARG @pointer:word,@size:word,@font:word - USES ax,bx,cx,dx,si,di,es - mov si,[@pointer] - mov cx,[@size] - mov bx,[@font] - cmp bl,7 - ja @@errorloadfont - xor di,di - cli - mov dx,sequencer -@@doseq: - mov ax,[cs:di+offset reg1] - out dx,ax - inc di - inc di - cmp di,6 - jbe @@doseq - mov dx,graphics -@@doseq2: - mov ax,[cs:di+offset reg1] - out dx,ax - inc di - inc di - cmp di,6+6 - jbe @@doseq2 - sti - mov ax,0A000h - mov es,ax - mov dx,256 - mov al,0 - xor bh,bh - cmp bl,4 - jb @@isless - sub bl,4 - shl bl,1 - inc bl - jmp @@okmake -@@isless: - shl bl,1 -@@okmake: - mov di,bx - shl di,13 - mov bh,cl - mov bl,cl - sub bl,32 - neg bl - xor cx,cx - cld -@@popz: - mov cl,bh - rep movsb - mov cl,bl - rep stosb - dec dx - jnz @@popz - xor di,di - mov dx,sequencer -@@doseqs: - mov ax,[cs:di+offset reg2] - out dx,ax - inc di - inc di - cmp di,6 - jbe @@doseqs - mov dx,graphics -@@doseqs2: - mov ax,[cs:di+offset reg2] - out dx,ax - inc di - inc di - cmp di,6+6 - jbe @@doseqs2 - ret -@@errorloadfont: - stc - ret - -reg2 dw 0100h, 0302h, 0304h, 0300h - dw 0004h, 1005h, 0E06h -reg1 dw 0100h, 0402h, 0704h, 0300h - dw 0204h, 0005h, 0406h -endp loadfont - -;==========SHOWLINE=============== -;remet le curseur text a la ligne avec un retour chariot -;-> -;<- -;================================= -PROC addline FAR - USES bx,cx - mov bl,[cs:datablock.y] - xor bh,bh - mov cl,[cs:datablock.lines] - sub cl,2 - cmp bl,cl - jne @@scro - dec bl - mov cx,1 - cmp [cs:datablock.graphic],0 - je @@okscro - mov cx,8 -@@okscro: - call scrolldown,cx -@@scro: - inc bl - call setxy,0,bx - ret -endp addline - -;==========SETCOLOR========= -;Change les attributs du texte a CL -;-> %0 couleur -;<- -;=========================== -PROC setcolor FAR - ARG @color:word - USES cx - mov cx,[@color] - mov [cs:datablock.colors],cl - ret -endp setcolor - -;==========GETCOLOR========= -;Récupère les attributs du texte dans AX -;-> -;<- AX couleur -;=========================== -PROC getcolor FAR - mov al,[cs:datablock.colors] - xor ah,ah - ret -endp getcolor - -;==========SCROLLDOWN========= -;defile de %0 lines vers le bas -;-> %0 lines à défiler vers le bas -;<- -;============================= -PROC scrolldown FAR - ARG @line:word - USES ax,cx,dx,si,di,ds,es - cmp [cs:datablock.scrolling],0 - je @@graphp - mov ax,[@line] - mul [cs:datablock.linesize] - mov si,ax - mov cx,[cs:datablock.pagesize] - sub cx,si - mov di,[cs:datablock.adress] - cld - cmp [cs:datablock.graphic],1 - jne @@textp - mov ax,0A000h - mov es,ax - mov ds,ax - mov ax,0F02h - mov dx,sequencer - out dx,ax - mov ax,0105h - mov dx,graphics - out dx,ax - cld - rep movsb - mov ax,0005h - cmp [cs:datablock.color],4 - je @@not256ok - mov ax,4005h -@@not256ok: - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - jmp @@graphp - -@@textp: - mov ax,0B800h - mov es,ax - mov ds,ax - rep movsb -@@graphp: - ret -endp scrolldown - -;==========GETXY========= -;Met les coordonnées du curseur dans ah,al au format point -;-> -;<- ah coordonnées x, al coordonnées y -;======================== -PROC getxy FAR - USES bx - mov ah,[cs:datablock.x] - mov al,[cs:datablock.y] - ret -endp getxy - -;==========SETXY========= -;Change les coordonnées du curseur a X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y -;<- -;======================== -PROC setxy FAR - ARG @x:word,@y:word - USES ax,bx,dx,di - mov ax,[@y] - mov bx,[@x] - mov [cs:datablock.x],bl - mov [cs:datablock.y],al - mov di,[cs:datablock.adress] - add di,bx - mul [cs:datablock.columns] - add di,ax - shl di,1 - mov [cs:datablock.xy],di - call setcursor - ret -endp setxy - -;==========SHOWPIXEL========= -;Affiche un pixel de couleur AL en X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y, %2 couleur -;<- -;============================ -PROC showpixel FAR - ARG @x:word,@y:word,@color:word - USES ax,bx,cx,dx,si,di,es - mov bx,[@x] - mov cx,[@y] - mov ax,[@color] - cmp [cs:datablock.color],4 - je @@showpixel4 - mov si,ax - mov ax,cx - mov cl,bl - mul [cs:datablock.linesize] - shr bx,2 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,3 - mov ah,1 - shl ah,cl - mov al,2 - mov dx,sequencer - out dx,ax - mov bx,0A000h - mov es,bx - mov ax,si - mov [es:di],al - jmp @@endofshow - -@@showpixel4: - mov dx,ax - mov ax,cx - mov ch,dl - mov cl,bl - mul [cs:datablock.linesize] - shr bx,3 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,111b - xor cl,111b - mov ah,1 - shl ah,cl - mov al,8 - mov dx,graphics ;masque - out dx,ax - mov ax,0205h - out dx,ax - mov ax,0003h - out dx,ax - mov bx,0A000h - mov es,bx - mov al,[es:di] - mov [es:di],ch -@@endofshow: - ret -endp showpixel - -;!!!!!!!!!!!!!! gerer le mode chain 4 -;==========GETPIXEL========= -;Récupère en ax la couleur du pixel de coordonnées X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y -;<- AX couleur -;========================================= -PROC getpixel FAR - ARG @x:word,@y:word - USES ax,bx,cx,dx,di,es - mov bx,[@x] - mov cx,[@y] - mov ax,cx - mov cl,bl - mul [cs:datablock.linesize] - shr bx,2 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,3 - mov ah,cl - mov al,4 - mov dx,graphics - out dx,ax - mov bx,0A000h - mov es,bx - mov al,[es:di] - ret -endp getpixel - -;==========GETVGAINFO========= -;Renvoie un bloc de donnée en ES:DI sur l'état de la carte graphique -;<- ES:%0 pointeur -;-> -;============================================= -PROC getvideoinfos FAR - ARG @pointer:word - USES cx,si,di,ds - push cs - pop ds - mov cx,size datablock - mov si,offset datablock - mov di,[@pointer] - cld - rep movsb - ret -endp getvideoinfos - -;==========WAITRETRACE========= -;Synchronisation avec la retrace verticale -;<- -;-> -;============================== -PROC waitretrace FAR - USES ax,dx - mov dx,3DAh -@@waitr: - in al,dx - test al,8 - jz @@waitr - ret -endp waitretrace - -;==========WAITHRETRACE========= -;Synchronisation avec la retrace horizontale -;<- -;-> -;=============================== -PROC waithretrace FAR - USES ax,dx - mov dx,3DAh -@@waitr: - in al,dx - test al,1 - jz @@waitr - ret -endp waithretrace - -;==========GETCHAR========= -;Renvoie en AX le caractère sur le curseur -;<- -;-> -;========================== -PROC getchars FAR - USES di,es - mov ax,0B800h - mov es,ax - mov di,[cs:datablock.xy] - mov al,[es:di] - xor ah,ah - ret -endp getchars - -;==========SHOWCHAR========= -;Ecrit le caractère ASCII %0 attribut %1 aprés le curseur, en le mettant à jours -;<- -;-> -;=========================== -PROC showchars FAR - ARG @char:word,@attr:word - USES ax,bx,cx,dx,di,es - mov cl,[byte ptr @char] - mov ch,[byte ptr @attr] - cmp [@attr],0FFFFh - jne @@notlastattr - mov ch,[cs:datablock.colors] -@@notlastattr: - cmp [cs:datablock.graphic],1 - jne @@textaccess - call emulatechar - jmp @@adjusttext -@@textaccess: - mov ax,0B800h - mov es,ax - mov di,[cs:datablock.xy] - mov [es:di],cx - add [cs:datablock.xy],2 -@@adjusttext: - inc [cs:datablock.x] - mov cl,[cs:datablock.columns] - cmp [cs:datablock.x],cl - jb @@noadjusted - call addline -@@noadjusted: - call setcursor - ret -endp showchars - -setcursor: - push ax cx dx - cmp [cs:datablock.cursor],1 - jne notshow - mov dx,ccrt - mov al,0Eh - mov cx,[cs:datablock.xy] - shr cx,1 - mov ah,ch - out dx,ax - mov ah,cl - inc al - out dx,ax -notshow: - pop dx cx ax - ret - - -;Ecrit le caractère ASCII CL attribut CH aprés le curseur graphique, en le mettant à jours en mode graphique -emulatechar: - push ax bx cx dx di - mov al,ch - mov di,cx - and di,11111111b - shl di,3 - add di,offset font8x8 - mov bl,[cs:datablock.x] - mov cl,[cs:datablock.y] - xor bh,bh - xor ch,ch - shl bx,3 - shl cx,3 - mov ah,[cs:di] - xor dx,dx -bouclet: - rol ah,1 - push ax - jc colored - shr al,4 - cmp [cs:datablock.style],0 - jnz transparent -colored: - and ax,1111b - call showpixel,bx,cx,ax -transparent: - pop ax - inc bx - inc dl - cmp dl,8 - jb bouclet - inc di - mov ah,[cs:di] - xor dl,dl - sub bx,8 - inc cx - inc dh - cmp dh,8 - jb bouclet -ended: - pop di dx cx bx ax - ret - -;sauve l'ecran dans un bloc de mémoire -PROC savescreen FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data3,[cs:datablock.pagesize] -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call savescreento,0 -clc -ret -@@error: -stc -ret -endp savescreen -data3 db '/vgascreen',0 - - -;===================================sauve l'ecran rapidement en ds:%1================ -PROC savescreento FAR - ARG @offset:word - USES ecx,si,di,ds,es - push ds - pop es - mov cx,0B800h - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - mov di,[@offset] - shr cx,2 - xor si,si - cld - rep movsd - ret -endp savescreento - -;===================================sauve les parametres en ds:%0================ -PROC saveparamto FAR - ARG @offset:word - USES ecx,si,di,ds,es - push ds - pop es - push cs - pop ds - xor ecx,ecx - mov cx,size datablock - mov di,[@offset] - mov si,offset datablock - cld - rep movsb - ret -endp saveparamto - -;===================================restore les parametres depuis en ds:%0================ -PROC restoreparamfrom FAR - ARG @offset:word - USES ecx,si,di,es - push cs - pop es - xor ecx,ecx - mov cx,size datablock - mov si,[@offset] - call setvideomode,[word ptr (vgainf si).mode] - mov di,offset datablock - cld - rep movsb - ret -endp restoreparamfrom - - - - - - - -;restaure l'ecran dans un bloc de mémoire -PROC restorescreen FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbfindsb],offset data3,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call restorescreenfrom,0 -clc -ret -@@error: -stc -ret -endp restorescreen - - -;===================================restaure l'ecran rapidement en %1================ -PROC restorescreenfrom FAR - ARG @offset:word - USES ecx,si,di,es - mov cx,0B800h - mov es,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - mov si,[@offset] - shr cx,2 - xor di,di - cld - rep movsd - ret -endp restorescreenfrom - - - - -;===============================Page2to1============================ - -PROC page2to1 FAR - USES ecx,si,di,ds,es - mov cx,0B800H - mov es,cx - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - shr cx,2 - mov si,[cs:datablock.pagesize] - xor di,di - cld - rep movsd - ret -endp page2to1 - -;===============================Page1to2============================ -PROC page1to2 FAR - USES ecx,si,di,ds,es - mov cx,0B800H - mov es,cx - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - shr cx,2 - mov di,[cs:datablock.pagesize] - xor si,si - cld - rep movsd - ret -endp page1to2 -;===============================xchgPages============================ -PROC xchgpages FAR - USES ax,ecx,si,di,ds,es,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data4,[cs:datablock.pagesize] -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+18] -jc @@error -push ax -pop ds -call savescreento,0 -call page2to1 -xor si,si -mov cx,0B800H -mov es,cx -mov di,[cs:datablock.pagesize] -xor ecx,ecx -mov cx,[cs:datablock.pagesize] -shr cx,2 -cld -rep movsd -call [cs:mbfree],ax -clc -ret -@@error: -stc -ret -endp xchgpages - -data4 db '/vgatemp',0 - - - - - -;Sauve l'‚tat de la carte dans un bloc mémoire -PROC savestate FAR -USES ax,cx,di,ds,bp -mov bp,sp -mov cx,size datablock -add cx,[cs:datablock.pagesize] -add cx,3*256 -push cs -pop ds -call [cs:mbcreate],offset data,cx -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+12] -jc @@error -push ax -pop ds -xor di,di -call saveparamto,di -add di,size datablock -call savescreento,di -add di,[cs:datablock.pagesize] -call savedacto,di -clc -ret -@@error: -stc -ret -endp savestate - -data db '/vga',0 - - - - -;R‚cupŠre l'‚tat de la carte depuis son bloc mémoire -PROC restorestate FAR -USES ax,cx,di,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbfindsb],offset data,[word ptr ss:bp+12] -jc @@error -push ax -pop ds -xor di,di -call restoreparamfrom,di -add di,size datablock -call restorescreenfrom,di -add di,[cs:datablock.pagesize] -call restoredacfrom,di -clc -ret -@@error: -stc -ret -endp restorestate - - -;sauve le DAC dans un bloc de mémoire -PROC savedac FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data3,3*256 -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call savedacto,0 -clc -ret -@@error: -stc -ret -endp savedac - -data2 db '/vgadac',0 - - - -;R‚cupŠre le dac depuis son bloc mémoire -PROC restoredac FAR -USES ax,ds,bp -mov bp,sp -call [cs:mbfindsb],offset data2,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call restoredacfrom,0 -clc -ret -@@error: -stc -ret -endp restoredac - - - -;sauve le DAC en ds:%0 -PROC savedacto FAR -ARG @offset:word -USES ax,cx,dx,di -mov di,[@offset] -mov dx,3C7h -mov cx,256 -@@save: -mov al,cl -dec al -out dx,al -inc dx -inc dx -in al,dx -mov [ds:di],al -inc di -in al,dx -mov [ds:di],al -inc di -in al,dx -mov [ds:di],al -inc di -dec dx -dec dx -dec cx -jne @@save -ret -endp savedacto - -;restore le DAC depuis ds:si -PROC restoredacfrom FAR -ARG @offset:word -USES ax,cx,dx,si -mov si,[@offset] -xor ax,ax -mov dx,3C8h -mov cx,256 -@@save2: -mov al,cl -dec al -out dx,al -inc dx -mov al,[ds:si] -inc si -out dx,al -mov al,[ds:si] -inc si -out dx,al -mov al,[ds:si] -inc si -out dx,al -dec dx -dec cx -jne @@save2 -ret -endp restoredacfrom - - - -font8x8: -include "..\include\pol8x8.inc" -font8x16: -include "..\include\pol8x16.inc" - - diff --git a/outils/CE explorer/icone.ico b/outils/CE explorer/icone.ico deleted file mode 100644 index 369777caee2e28c5ce37b4ee291c716b399ba1ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcgqu@S;B415E*RN#&lO2)_t8A&BwMv4cZU;u(sQe^^&cpGwYIB2+ow_oz>Eu9Mk zhHG1Zae>PWSOeIRTe2WSJ%ZkQ2*3@IM`Gj=&N=2_XxvZ@Cz30aLii!FY&yI=mT4hd zHmL-f=9m_2^WxtoHekc;eT1ZqJdgSi;J(uF{g3`QzHIsaabC9SSROUHu1&S=Ui_YR zdOyBD>8Ja5@DHT$6cw4Py1D9UAoba*`i(Qb7UT6v&s>qY0CO?dfw`F8iqQ>O3#WX- E9r-W5R{#J2 diff --git a/outils/CE explorer/imgs.bmp b/outils/CE explorer/imgs.bmp deleted file mode 100644 index 9896f7dd8679fe03d7dfed3fe939a11ceb631a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8698 zcmeI0y>1&<6ofZGfWQ!lz@-Wo>C&e(+yrd(E~+9oj#LDY1;i#(vhphsNJ#|n1Greh zD%5PB%5cXxMU^9el*gb^_5$8qP2G5Q74Xrf+pMh|czCetR?7hEmWzNh z9#8iv&9DTkTY3x{Wd!|flmJi(`dJRcvi&S)Gia2(fJMt=ki%N|`OTY3V2}yeNa+~} zN-$BHVF~lG$DmOJR@DFaEDS@&u`~(InVTwaH|U*B>^0Xb^v){aa*IQ~v)y*v?47F* zI8p(00{7g^ZP7FH1h}UF9>6W?s{{lkASeOBXTuvHC_#WHC{IkS1my|EQv(*;vzZbQ zlz@$-1Oz1@C_#WHC=aGCPk?Gr9w@xfm4KiG1SKFS0YM1@@+_n$rdAEg6N+j;Yc?oj_eRT?as4z7O!xm0_Y0Nb8}+7Q6H_Zec|uVF zeo&8UF!ZAu480O?m=X}YqPUm>vIgm~cbc96orUtGavHs3ia{#Nv0?y)yU=6Xch-D5 z49Bb0!&QE0jXHi9cl+{}@<17mj%IZh07^hb2?$C+ zP=bIs3-ZL&szG@|Q4OeEZlgmAG;E|?eIQW5QK`Lm@R_yb>%*XqC!C+29@=-7OYivd z#MJHyP{-Ra^H9NtR|x>9TOwFx;z1@L3x;9z5cCg08j!dN0VC!J7vCk4g z4ts^YMv4Iy97w&!_Z&VQpE*EvJmBno_tk;>o%h{?o%KqIaSOCo3S~aj8DQjSmH842Gz+4A!o8S{* zonqUOvwaO$OPrVqBU$Uz;nud$A%eCR8^vm2t zX@)sqo$>@Uihw`0D1kvHU?cf3Bp@ikL}`X;>hd5#d3J%nt|);)CLm~Pf)Y%WW|$I` z2aA^HFt7)-Xftf8;FY(JH@`kH1rOKwtbG*l@*NKQ1jGwJ{)Hod-)WRRaAOS;o&X=V z3oqaOjvvM%fk7r9XljBIOq6Dr)+rAbEzd4s*R2EwnShO?sR>FjQJP^&P#!E=o?WnV zXAKN80YOs}lwhJX!<3*rShPHc!3O1`&9Hq6n&-PGA>hyT!$%3$y)S~SD&~v?4v~Nm9@}^Pnqz{A(hLjmsUx*RqX_&h?W+MBNmCP4gNf1% z)6^r+{AA?W0bb~;frHLM>^puIV&7p6v^k`r1S7?_8r5K;DCkIOrXKB8JL~vqv>^XK L{9l28Sb@I*f(N(z diff --git a/outils/CE explorer/project1.bpr b/outils/CE explorer/project1.bpr deleted file mode 100644 index 8011eea..0000000 --- a/outils/CE explorer/project1.bpr +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=1 -AutoIncBuild=1 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName=COS2000 -FileDescription=Cos2000 lib explorer -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName=Cos2000 lib explorer -ProductVersion=1.0.0.0 -Comments=FOR CE ONLY - -[Excluded Packages] -..\lib\DragDrop_B5.bpl=(untitled) -..\lib\Moje_B5.bpl=(untitled) -..\lib\DriveDir_B5.bpl=(untitled) -..\lib\tb2k_cb6.bpl=(untitled) -..\lib\tb2kdsgn_cb6.bpl=(untitled) -..\lib\tbx_cb6.bpl=(untitled) -..\lib\tbxdsgn_cb6.bpl=(untitled) -d:\cbuilder6\Bin\dclite60.bpl=Borland Integrated Translation Environment - -[HistoryLists\hlIncludePath] -Count=1 -Item0=D:\CBuilder6\Bin;C:\Documents and Settings\admin\Bureau\perso\cos\CE explorer;$(BCB)\include;$(BCB)\include\vcl - -[HistoryLists\hlLibraryPath] -Count=1 -Item0=D:\CBuilder6\Bin;C:\Documents and Settings\admin\Bureau\perso\cos\CE explorer;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - - \ No newline at end of file diff --git a/outils/CE explorer/project1.cpp b/outils/CE explorer/project1.cpp deleted file mode 100644 index b6c7655..0000000 --- a/outils/CE explorer/project1.cpp +++ /dev/null @@ -1,34 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop -//--------------------------------------------------------------------------- -USEFORM("Unit1.cpp", Form1); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->Title = "CE explorer"; - Application->CreateForm(__classid(TForm1), &Form1); - Application->Run(); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - catch (...) - { - try - { - throw Exception(""); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - } - return 0; -} -//--------------------------------------------------------------------------- diff --git a/outils/CE explorer/project1.res b/outils/CE explorer/project1.res deleted file mode 100644 index e48ea5439ef6630f1d73f362413f854bdc65d807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmcgrv2GJV5PcV)WeSsX0d-CYAw+=;a!-&=q@X~o7+Io<33%)Fg_GkXgFA=MbGT;}AgK#+u>T|ga36Y`K*e^=DH_Kichs3HFap|o9tkU2?mJJ#}4Nqj+i;Z zON@vL6;nrpl{Tpjau7y!Tw=Z^F~=CANBlch-J^A+xupvo+$BzaAn&WhyZkMpPVijM z9rOGF^F*tCBSzf5kZcBchLHHTJZDJUgzJf7EeDsgtNxQrt~tip-K?yqu4r{!G7TP)W# z;Gy=ZP3(x--mpj097Eyrr~PT@9p!TsyHxB^9aUCl?^ReuJYOo2@9cp0(B%Dx`u*+U gDg7-iva2<_iq>Bba9zJV+ntD+hD2uXyXw#VAJ05CK>z>% diff --git a/outils/CE explorer/project1.tds b/outils/CE explorer/project1.tds deleted file mode 100644 index 5a0a715144de630c2a0480d0a3833a5ef51d3030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524288 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 A5dZ)H diff --git a/outils/CE explorer/unit1.cpp b/outils/CE explorer/unit1.cpp deleted file mode 100644 index 634595b..0000000 --- a/outils/CE explorer/unit1.cpp +++ /dev/null @@ -1,273 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#include -#include -#pragma hdrstop - -#include "Unit1.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm1 *Form1; -//--------------------------------------------------------------------------- -__fastcall TForm1::TForm1(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -tree(AnsiString file,int offset,TTreeNode* rootnode) -{ -FILE* in; -#pragma option -a1 -struct CE { -char checks[2]; -unsigned char major; -unsigned int checksum; -unsigned char compressed; -unsigned short exports; -unsigned short imports; -unsigned short sections; -unsigned short starting; -} myce; -#pragma option -a - -long pointeur=0; - -if ((in = fopen(file.c_str(), "rb"))!= NULL) -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&myce, sizeof(myce), 1, in); -TTreeNode* currentnode; -TTreeNode* subcurrentnode; -TTreeNode* subsubcurrentnode; -if (offset==0) -{ -fseek(in, 0L, SEEK_END); -Form1->TreeView->Items->AddChild(rootnode,"Adresse réelle: 0x0000")->ImageIndex=31; -Form1->TreeView->Items->AddChild(rootnode,"Adresse : 0x0000")->ImageIndex=31; -} -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Entête"); -currentnode->ImageIndex=10; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -if (AnsiString(myce.checks,2)!="CE") -{ -rootnode->ImageIndex=4; -Form1->TreeView->Items->AddChild(currentnode,"Type : ceci n'est pas un fichier CE")->ImageIndex=1; -} -else -{ -rootnode->ImageIndex=2; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Type : "+AnsiString(myce.checks,2)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)0+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)0,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Version : "+IntToStr(myce.major)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)2+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)2,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0001")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Checksum : 0x"+IntToHex((int)myce.checksum,8)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)3+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)3,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0004")->ImageIndex=31; -if (myce.compressed>=1) -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Fichier compressé avec RIP"); -else -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Fichier sans compression"); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)7+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)7,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0001")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur exportation : 0x"+IntToHex(myce.exports,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)8+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)8,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur Importation : 0x"+IntToHex(myce.imports,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)10+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)10,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur sections : 0x"+IntToHex(myce.sections,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)12+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)12,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Point d'entrée : 0x"+IntToHex(myce.starting,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)14+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)14,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x0010")->ImageIndex=31; - -char imported[30]; -AnsiString imports[30]={""}; -AnsiString exports[30]={""}; -AnsiString sections[30]={""}; -unsigned short iaddrs[30]={0}; -unsigned short eaddrs[30]={0}; -unsigned short saddrs[30]={0}; -unsigned short ssize[30]={0}; -AnsiString libraries[30]={""}; -AnsiString alib; -int i=0; -pointeur=myce.imports; -int nblib=0; -int nbimp=0; - -if (myce.imports!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Importations"); -currentnode->ImageIndex=14; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -imports[i]=AnsiString((char*)&imported); -iaddrs[i]=pointeur; -pointeur+=imports[i].Length()+5; -alib=imports[i].SubString(0,imports[i].Pos(":")-1); -int j; -for(j=0;(jTreeView->Items->AddChild(currentnode,libraries[i]); -subcurrentnode->ImageIndex=13; -for(int j=0;jTreeView->Items->AddChild(subcurrentnode,imports[j].SubString(imports[j].Pos(":")+2,255)); -subsubcurrentnode->ImageIndex=3; -Form1->TreeView->Items->AddChild(subsubcurrentnode,"Adresse réelle: 0x"+IntToHex((int)iaddrs[j]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subsubcurrentnode,"Adresse : 0x"+IntToHex((int)iaddrs[j],4))->ImageIndex=31; -} -} -} -currentnode->Text="importations ("+IntToStr(nbimp)+"/"+IntToStr(nblib)+")"; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.imports,4))->ImageIndex=31; -} -else -{ -nbimp=0; -} - -i=0; -pointeur=myce.exports; -int nbexp=0; - -if (myce.exports!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Exportations"); -currentnode->ImageIndex=14; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -exports[i]=AnsiString((char*)&imported); -pointeur+=exports[i].Length()+1; -fseek(in, pointeur+offset, SEEK_SET); -fread(&eaddrs[i],sizeof(eaddrs[i]),1,in); -pointeur+=2; -i++; -} while(exports[i-1]!=""); - -nbexp=i-1; - -for(int i=0;iTreeView->Items->AddChild(currentnode,exports[i]); -subcurrentnode->ImageIndex=3; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex(eaddrs[i]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex(eaddrs[i],4))->ImageIndex=31; -} -currentnode->Text="exportations ("+IntToStr(nbexp)+")"; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.exports,4))->ImageIndex=31; -} -else -{ -nbexp=0; -} - -pointeur=myce.sections; -i=0; -int nbsec=0; - -if (myce.sections!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Sections"); -currentnode->ImageIndex=12; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&saddrs[i],sizeof(saddrs[i]),1,in); -pointeur+=2; -fseek(in, pointeur+offset, SEEK_SET); -fread(&ssize[i],sizeof(ssize[i]),1,in); -pointeur+=2; -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -sections[i]=AnsiString((char*)&imported); -pointeur+=sections[i].Length()+1; -i++; -} while(ssize[i-1]!=0); -nbsec=i-1; -for(int i=0;iTreeView->Items->AddChild(currentnode,sections[i]); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex(saddrs[i]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex(saddrs[i],4))->ImageIndex=31; -if (saddrs[i]!=0) tree(file,saddrs[i],subcurrentnode); -subcurrentnode->ImageIndex=2; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille : 0x"+IntToHex(ssize[i],4))->ImageIndex=31; -} -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.sections,4))->ImageIndex=31; -currentnode->Text="Sections ("+IntToStr(nbsec)+")"; -} -else -{ -nbsec=0; -} - -if (offset==0) -{ -fseek(in, 0L, SEEK_END); -int size = ftell(in); -Form1->TreeView->Items->AddChild(rootnode,"Taille : 0x"+IntToHex(size,4))->ImageIndex=31; -} -} -fclose(in); -} -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Ouvrir1Click(TObject *Sender) -{ -if (OpenDialog->Execute()) -tree(OpenDialog->FileName,0,Form1->TreeView->Items->Add(Form1->TreeView->Items->GetFirstNode(),ExtractFileName(OpenDialog->FileName))); -TTreeNode* node=Form1->TreeView->Items->GetFirstNode(); -while(node!=NULL) -{ -node->SelectedIndex=node->ImageIndex; -node=node->GetNext(); -} -} - -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Quitter1Click(TObject *Sender) -{ -Close(); -} -//--------------------------------------------------------------------------- - - diff --git a/outils/CE explorer/unit1.ddp b/outils/CE explorer/unit1.ddp deleted file mode 100644 index cdc0ee8c2b54a98895d906932c4351134611c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxFz;K0Pl$;KI)SCUzhlbT}4#=r!G E07AM8lK=n! diff --git a/outils/CE explorer/unit1.dfm b/outils/CE explorer/unit1.dfm deleted file mode 100644 index 682f200..0000000 --- a/outils/CE explorer/unit1.dfm +++ /dev/null @@ -1,1434 +0,0 @@ -object Form1: TForm1 - Left = 293 - Top = 172 - Width = 688 - Height = 496 - Caption = 'CE explorer' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - Menu = MainMenu1 - OldCreateOrder = False - PixelsPerInch = 96 - TextHeight = 13 - object TreeView: TTreeView - Left = 0 - Top = 0 - Width = 504 - Height = 442 - Align = alClient - Images = ImageList - Indent = 29 - ReadOnly = True - TabOrder = 0 - end - object RichEdit1: TRichEdit - Left = 504 - Top = 0 - Width = 176 - Height = 442 - Align = alRight - ReadOnly = True - TabOrder = 1 - end - object MainMenu1: TMainMenu - Left = 216 - object Fichier1: TMenuItem - Caption = 'Fichier' - object Ouvrir1: TMenuItem - Caption = 'Ouvrir...' - OnClick = Ouvrir1Click - end - object N1: TMenuItem - Caption = '-' - end - object Quitter1: TMenuItem - Caption = 'Quitter' - OnClick = Quitter1Click - end - end - end - object OpenDialog: TOpenDialog - Left = 248 - end - object ImageList: TImageList - Height = 15 - Width = 26 - Left = 280 - Bitmap = { - 494C01012C00310004001A000F00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 000000000000360000002800000068000000C30000000100100000000000709E - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000001000100000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000010001000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000001000 - 1000000000000000000000000000000000001042186300000000000000000000 - 0000000000001042000000000000000000000000000000000000000000000000 - 0000000000001042186300000000000000000000000000000000104200000000 - 10001000100010001000000000000000000000000000000000001042007C0000 - 0000000000000000000000000000104200000000000000000000000000000000 - 00000000000000000000000000001042007C0000000000000000000000000000 - 0000104200000000100010001000100010000000000000000000000000000000 - 00001042FF7F1863000000000000000000000000000010420000000000000000 - 000000000000000000000000000000000000000000001042FF7F186300000000 - 0000000000000000000010420000000010001000000010001000000000000000 - 000000000000000000001042FF7F007C00000000000000000000000000001042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007C00000000000000000000000000001042000000001000100000001000 - 1000000000000000E07F0000E07F0000000010421863FF7F1863000000000000 - 00000000000010420000000000000000000000000000000000000000E07F0000 - E07F0000000010421863FF7F1863000000000000000000000000104200000000 - 10001000000010001000000000000000E07F0000E07F000000001042007CFF7F - 007C000000000000000000000000104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007C00000000000000000000 - 00001042000000001000100000001000100000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F18630000000000000000000010420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863 - 000000000000000000001042000000001000100000001000100000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007C000000000000000000001042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007CFF7F007C000000000000000000001042000000001000100000001000 - 1000000000000000E07FE07FE07F0000000010421863FF7F1863FF7F18630000 - 00000000000010420000000000000000000000000000000000000000E07FE07F - E07F0000000010421863FF7F1863FF7F18630000000000000000104200000000 - 00000000000000000000000000000000E07FE07FE07F000000001042007CFF7F - 007CFF7F007C0000000000000000104200000000000000000000000000000000 - 00000000E07FE07FE07F000000001042007CFF7F007CFF7F007C000000000000 - 00001042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F186300000000000010420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863 - FF7F18630000000000001042000000000000100010001000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007C0000000000001042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007CFF7F007CFF7F007C0000000000001042000000000000100010001000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 18630000000010420000000000000000000000000000000000000000E07F0000 - E07F0000000010421863FF7F1863FF7F1863FF7F186300000000104200000000 - 10001000000010001000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007C00000000104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007C0000 - 0000104200000000100010000000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863000010420000000000000000 - 000000000000000000000000000000000000000000001042FF7F1863FF7F1863 - FF7F1863FF7F1863000010420000000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007C00001042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F007CFF7F007C00001042000000001000100000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 1000100010001000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000100010001000100000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 000000000000000000000000000000000000000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF0310420000000010001000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000001000100000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000100010001000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000100010000000000000000000000000000000000000001042104210421042 - 1042104210421042104210421042000000000000000010001000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000010001000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000001000100000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000001000100000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000100010000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000100010000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 1000100010000000000000000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000010001000100010001000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000100010001000000000000000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000001000100010001000 - 1000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F000000001863FF7F186310420000 - 10001000000010001000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F00000000007C - FF7F10420000000010001000000010001000000000000000E07F0000E07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 000010001000000000000000E07F0000E07F0000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000010001000000010001000000000000000 - E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000000010001000000000000000E07F0000E07F000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000001000100000001000 - 100000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000E07F0000E07F - 0000E07F00001863FF7F1863000018630000000000001863FF7F186310420000 - 1000100000001000100000000000E07F0000E07F0000E07F00001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 0000E07F0000E07F0000E07F00001042FF7F007C0000007C000000000000007C - FF7F10420000000010001000000010001000000000000000E07FE07FE07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 000000000000000000000000E07FE07FE07F0000000018631863FF7F00000000 - 000000001863FF7F186318631042000000000000000000000000000000000000 - E07FE07FE07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000E07FE07FE07F000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000100010001000000000000000E07F0000E07F - 0000E07F00001863FF7F18630000000000001863FF7F1863FF7F186310420000 - 0000100010001000000000000000E07F0000E07F0000E07F00001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000010001000100000000000 - 0000E07F0000E07F0000E07F00001042FF7F007C000000000000007CFF7F007C - FF7F10420000000000001000100010000000000000000000E07F0000E07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 000010001000000000000000E07F0000E07F0000000018631863FF7F00000000 - 000000001863FF7F186318631042000010001000000010001000000000000000 - E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000000010001000000000000000E07F0000E07F000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000001000100000001000 - 1000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F1863FF7F1863FF7F186310420000 - 10001000000010001000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007C - FF7F104200000000100010000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000010001000 - 1000100000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000010001000100010000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000010001000100010000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000001000100010001000 - 0000000000000000000000000000000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000001000100000000000000000000000000000000000 - 0000000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF03186310420000 - 10001000000000000000000000000000000000000000000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000100010000000000000000000 - 00000000000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03 - FF03104200000000100010000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000001000 - 1000100000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318630000000000001000100010000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000001000100010000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000100010001000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000104210421042104210421042104210421042104210420000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 00000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000000000000000000000000000000000000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 00000000000000000000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000000000000000000000000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 000000000000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F000000001863FF7F18631042000000000000000000000000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F00000000007CFF7F1042000000000000000000000000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07F0000 - E07F0000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 00000000000000000000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007CFF7F007C00000000FF7F - 007C1042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001863FF7F186300001863 - 0000000000001863FF7F1863104200000000000000000000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007C0000007C000000000000007CFF7F1042000000000000000000000000 - 0000000000000000E07FE07FE07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07FE07F - E07F0000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000E07FE07FE07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07FE07FE07F000000001042007CFF7F0000000000000000007CFF7F - 007C1042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001863FF7F186300000000 - 00001863FF7F1863FF7F1863104200000000000000000000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007C000000000000007CFF7F007CFF7F1042000000000000000000000000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07F0000 - E07F0000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000000000000000000000000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 000000000000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F1863FF7F1863FF7F18631042000000000000000000000000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 000000000000000000000000000000000000000000001863FF03FF7FFF03FF7F - FF03FF7FFF03FF7FFF0318631042000000000000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186300000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000100010000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000010001000000000000000 - 0000000000000000000000000000000000000000E07FE07FE07FE07F00000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000007C007C007C007C00000000000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000001000100000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000001000100000000000000000000000000000000000000000000000 - E07FE07FE07F00000000E07FE07FE07F00000000000000000000000000000000 - 0000000000000000000000000000000000000000007C007C007C00000000007C - 007C007C000000000000000000000000000010421F001F001F001F001F000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 10001000100010421F001F001F001F001F00000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000010001000100010001000000000000000 - 0000000000000000000000000042E07FE07FE07FE07F00000000E07FE07FE07F - E07F000000000000000000000000000000000000000000000000000000000000 - 0040007C007C007C007C00000000007C007C007C007C00000000000000000000 - 00001042FF7FFF7F186318631863000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F104200000000100010000000100010001042FF7FFF7F18631863 - 1863000000001042FF7F007CFF7F007CFF7F00000000007CFF7F104200000000 - 100010000000100010000000000000000000000000000000000000000042E07F - E07FE07FE07FE07FE07FE07FE07FE07FE07F0000000000000000000000000000 - 000000000000000000000000000000000040007C007C007C007C007C007C007C - 007C007C007C0000000000000000000000001042FF7FFF7F1863186318630000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 0000100010001042FF7FFF7F186318631863000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000010001000000010001000000000000000 - E07F0000E07F000000000042E07FE07FE07FE07FE07F00000000E07FE07FE07F - E07FE07F00000000000000000000000000000000E07F0000E07F000000000040 - 007C007C007C007C007C00400040007C007C007C007C007C0000000000000000 - 000000001042FF7F186318630000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000001000100000001000100000001042FF7F18631863 - 0000000000001042FF7F007C0000007C000000000000007CFF7F104200000000 - 1000100000001000100000000000E07F0000E07F0000E07F00000042E07FE07F - E07FE07FE07F00000000E07FE07FE07FE07FE07F000000000000000000000000 - 0000E07F0000E07F0000E07F00000040007C007C007C007C007C00000000007C - 007C007C007C007C000000000000000000000000000010421863000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000001042186300000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - E07FE07FE07F000000000042E07FE07FE07FE07FE07FE07F00000000E07FE07F - E07FE07F00000000000000000000000000000000E07FE07FE07F000000000040 - 007C007C007C007C007C00000000007C007C007C007C007C0000000000000000 - 0000000000001042186300000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000100010001000000000000000104218630000 - 0000000000001042FF7F007C000000000000007CFF7F007CFF7F104200000000 - 0000100010001000000000000000E07F0000E07F0000E07F00000042E07FE07F - E07FE07FE07FE07FE07F00000000E07FE07FE07F000000000000000000000000 - 0000E07F0000E07F0000E07F00000040007C007C007C007C0040000000000040 - 007C007C007C007C000000000000000000000000104218631863186300000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 000010001000000010421863186318630000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000010001000000010001000000000000000 - E07F0000E07F0000000000000042E07FE07F00000000E07FE07F00000000E07F - E07F000000000000000000000000000000000000E07F0000E07F000000000000 - 0040007C007C007C0040000000000040007C007C007C00000000000000000000 - 0000104218631863186318631863000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000001000100000001000100010421863186318631863 - 1863000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F104200000000 - 100010000000100010000000000000000000000000000000000000000042E07F - E07F000000000000000000000000E07FE07F0000000000000000000000000000 - 000000000000000000000000000000000040007C007C007C0040000000000040 - 007C007C007C0000000000000000000000001042FF7FFF7FFF7F186318630000 - 0000104210421042104210421042104210421042104210420000000010001000 - 1000100000001042FF7FFF7FFF7F186318630000000010421042104210421042 - 1042104210421042104210420000000010001000100010000000000000000000 - 00000000000000000000000000000042E07FE07F0000000000000000E07FE07F - 0000000000000000000000000000000000000000000000000000000000000000 - 00000040007C007C007C00000000007C007C007C000000000000000000000000 - 000010421F001F001F001F001F00000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000001000100000000000000010421F001F001F001F00 - 1F00000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF03104200000000 - 1000100000000000000000000000000000000000000000000000000000000000 - 00420042E07FE07FE07FE07F0042004200000000000000000000000000000000 - 000000000000000000000000000000000000000000400040007C007C007C007C - 0040004000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000001000 - 1000100000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000001000100010000000000000000000 - 0000000000000000000000000000000000000000004200420042004200000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000004000400040004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000100010000000 - 0000000000000000000000000000000010421042104210421042104210421042 - 1042104210420000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000010001000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200000000000000001000 - 100010421F001F001F001F001F00000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000010421F001F001F001F00 - 1F00000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 0000000000000000000010421F001F001F001F001F000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010001000100010001042 - 1F001F001F001F001F000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000100010001000100010001042FF7FFF7F1863186318630000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 0000000000001042FF7FFF7F186318631863000000001042FF7F007CFF7F007C - FF7F00000000007CFF7F104200000000000000000000000000001042FF7FFF7F - 186318631863000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 00000000100010000000100010001042FF7FFF7F186318631863000000001863 - FF7F1863FF7F1863FF7F000000001863FF7F1863104200001000100000001000 - 10001042FF7FFF7F186318631863000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C104200000000000000000000000000001042FF7FFF7F18631863 - 1863000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 000000000000000000001042FF7FFF7F1863186318630000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010000000100010001042 - FF7FFF7F1863186318630000000018631863FF7F1863FF7F186300000000FF7F - 18631863104200001000100000001000100000001042FF7F1863186300000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 00000000000000001042FF7F186318630000000000001042FF7F007C0000007C - 000000000000007CFF7F1042000000000000000000000000000000001042FF7F - 186318630000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 000000001000100000001000100000001042FF7F186318630000000000001863 - FF7F1863000018630000000000001863FF7F1863104200001000100000001000 - 1000000000001042186300000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000000000104218630000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 000000000000000000000000000010421863000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000010421863000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000010421863000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 000000000000000000001042186300000000000000001042FF7F007C00000000 - 0000007CFF7F007CFF7F10420000000000000000000000000000000000001042 - 186300000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000001000100010000000000000001042186300000000000000001863 - FF7F18630000000000001863FF7F1863FF7F1863104200000000100010001000 - 0000000010421863186318630000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000001042186318631863 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 000000000000000000000000104218631863186300000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010000000100010000000 - 104218631863186300000000000018631863FF7F00000000000000001863FF7F - 1863186310420000100010000000100010001042186318631863186318630000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 000000000000104218631863186318631863000000001042FF7F007CFF7F007C - FF7F007CFF7F007CFF7F10420000000000000000000000000000104218631863 - 186318631863000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000010001000000010001000104218631863186318631863000000001863 - FF7F1863FF7F1863FF7F1863FF7F1863FF7F1863104200001000100000001000 - 10001042FF7FFF7FFF7F18631863000000001042104210421042104210421042 - 104210421042104200000000000000000000000000001042FF7FFF7FFF7F1863 - 1863000000001042104210421042104210421042104210421042104200000000 - 000000000000000000001042FF7FFF7FFF7F1863186300000000104210421042 - 1042104210421042104210421042104200000000100010001000100000001042 - FF7FFF7FFF7F1863186300000000186318631863186318631863186318631863 - 18631863104200001000100010001000000010421F001F001F001F001F000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 00000000000010421F001F001F001F001F00000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF031042000000000000000000000000000010421F001F00 - 1F001F001F00000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 000000001000100000000000000010421F001F001F001F001F00000000001863 - FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF031863104200001000100000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000010001000100000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186300000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000E07FE07FE07FE07F000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 007C007C007C007C000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 1042104210421042104210421042104210421042104200000000000000000000 - 000010421F001F001F001F001F0000000000000000000000E07FE07FE07F0000 - 0000E07FE07FE07F000000000000000000000000000010421F001F001F001F00 - 1F0000000000000000000000007C007C007C00000000007C007C007C00000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000000000001042FF7FFF7F1863186318630000 - 000000000042E07FE07FE07FE07F00000000E07FE07FE07FE07F000000000000 - 0000000000001042FF7FFF7F1863186318630000000000000040007C007C007C - 007C00000000007C007C007C007C00000000000000000000000010421F001F00 - 1F001F001F000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 000000000000000000000000000010421F001F001F001F001F00000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200000000000000000000 - 00001042FF7FFF7F1863186318630000000000000042E07FE07FE07FE07FE07F - E07FE07FE07FE07FE07F0000000000000000000000001042FF7FFF7F18631863 - 18630000000000000040007C007C007C007C007C007C007C007C007C007C0000 - 000000000000000000001042FF7FFF7F186318631863000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000001042 - FF7FFF7F186318631863000000001863FF7F1863FF7F1863FF7F000000001863 - FF7F1863104200000000000000000000000000001042FF7F1863186300000000 - 00000042E07FE07FE07FE07FE07F00000000E07FE07FE07FE07FE07F00000000 - 00000000000000001042FF7F186318630000000000000040007C007C007C007C - 007C00400040007C007C007C007C007C000000000000000000001042FF7FFF7F - 1863186318630000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 00000000000000000000000000001042FF7FFF7F186318631863000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200000000000000000000 - 0000000000001042186300000000000000000042E07FE07FE07FE07FE07F0000 - 0000E07FE07FE07FE07FE07F0000000000000000000000000000104218630000 - 0000000000000040007C007C007C007C007C00000000007C007C007C007C007C - 0000000000000000000000001042FF7F186318630000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000000000 - 1042FF7F186318630000000000001863FF7F1863000018630000000000001863 - FF7F186310420000000000000000000000000000000010421863000000000000 - 00000042E07FE07FE07FE07FE07FE07F00000000E07FE07FE07FE07F00000000 - 000000000000000000001042186300000000000000000040007C007C007C007C - 007C00000000007C007C007C007C007C00000000000000000000000000001042 - 1863000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000000001042186300000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 0000000010421863186318630000000000000042E07FE07FE07FE07FE07FE07F - E07F00000000E07FE07FE07F0000000000000000000000001042186318631863 - 0000000000000040007C007C007C007C0040000000000040007C007C007C007C - 00000000000000000000000000001042186300000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000000000 - 00001042186300000000000000001863FF7F18630000000000001863FF7F1863 - FF7F186310420000000000000000000000001042186318631863186318630000 - 000000000042E07FE07F00000000E07FE07F00000000E07FE07F000000000000 - 0000000000001042186318631863186318630000000000000040007C007C007C - 0040000000000040007C007C007C000000000000000000000000000010421863 - 1863186300000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000010421863186318630000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 00001042FF7FFF7FFF7F186318630000000000000042E07FE07F000000000000 - 000000000000E07FE07F0000000000000000000000001042FF7FFF7FFF7F1863 - 18630000000000000040007C007C007C0040000000000040007C007C007C0000 - 00000000000000000000104218631863186318631863000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000001042 - 18631863186318631863000000001863FF7F1863FF7F1863FF7F1863FF7F1863 - FF7F1863104200000000000000000000000010421F001F001F001F001F000000 - 0000000000000042E07FE07F0000000000000000E07FE07F0000000000000000 - 00000000000010421F001F001F001F001F0000000000000000000040007C007C - 007C00000000007C007C007C00000000000000000000000000001042FF7FFF7F - FF7F186318630000000010421042104210421042104210421042104210421042 - 00000000000000000000000000001042FF7FFF7FFF7F18631863000000001863 - 1863186318631863186318631863186318631863104200000000000000000000 - 00000000000000000000000000000000000000000000000000420042E07FE07F - E07FE07F00420042000000000000000000000000000000000000000000000000 - 00000000000000000000000000400040007C007C007C007C0040004000000000 - 0000000000000000000010421F001F001F001F001F00000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000000000000000000000001042 - 1F001F001F001F001F00000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7F - FF03186310420000000000000000000000000000000000000000000000000000 - 0000000000000000000000000042004200420042000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0040004000400040000000000000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001000100000000000000000000000 - 0000000000000000104210421042104210421042104210421042104210420000 - 0000000000001000100000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000100010000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000100010000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000000000000000010001000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000010001000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000001000 - 10000000104200000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000001000100010001000100000001042000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 10001000100010001000000010420000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010001000100010000000 - 10420000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000100010001000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 000010001000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F000000001863FF7F18631042000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000010001000000010001000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F00000000007CFF7F1042000000001000100000001000 - 10000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000001000100000001000100000000000000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 10001000000010001000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010000000100010000000 - 00000000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000100010000000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 000010001000000000000000000000000000000000001863FF7F186300001863 - 0000000000001863FF7F18631042000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000010001000000010001000000000000000000000000000000000001042 - FF7F007C0000007C000000000000007CFF7F1042000000001000100000001000 - 10000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000000000000000000000000000000000000000000000 - 00000000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000000000000000000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000000000000000000000001042104210421042104210420000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000001000 - 100010000000104210421042104210421042000000001863FF7F186300000000 - 00001863FF7F1863FF7F18631042000000001000100010000000104210421042 - 104210421042000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000001000100010000000104210421042104210421042000000001042 - FF7F007C000000000000007CFF7F007CFF7F1042000000000000100010001000 - 00001042FF7FFF7FFF7FFF7F10420000000010421863FF7F1863FF7F1863FF7F - 1863FF7F1863104200000000100010000000100010001042FF7FFF7FFF7FFF7F - 10420000000018631863FF7F00000000000000001863FF7F1863186310420000 - 100010000000100010001042FF7FFF7FFF7FFF7F1042000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010000000100010001042 - FF7FFF7FFF7FFF7F1042000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000100010000000100010001042FF7FFF7FFF7FFF7F10420000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 0000100010001042FF7FFF7FFF7FFF7F1042000000001863FF7F1863FF7F1863 - FF7F1863FF7F1863FF7F186310420000100010000000100010001042FF7FFF7F - FF7FFF7F1042000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 00000000100010000000100010001042FF7FFF7FFF7FFF7F1042000000001042 - FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042000000001000100000001000 - 1000104210421042104210421042000000001042104210421042104210421042 - 1042104210421042000000001000100010001000000010421042104210421042 - 1042000000001863186318631863186318631863186318631863186310420000 - 1000100010001000000010421042104210421042104200000000104210421042 - 1042104210421042104210421042104200000000100010001000100000001042 - 1042104210421042104200000000104210421042104210421042104210421042 - 1042104200000000100010001000100000001042FF03FF03FF03FF0310420000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000010001000 - 0000000000001042FF03FF03FF03FF031042000000001863FF03FF7FFF03FF7F - FF03FF7FFF03FF7FFF03186310420000100010000000000000001042FF03FF03 - FF03FF031042000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 00000000100010000000000000001042FF03FF03FF03FF031042000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000001000100000000000 - 0000104210421042104210421042000000001042104210421042104210421042 - 1042104210421042000000000000100010001000000010421042104210421042 - 1042000000001863186318631863186318631863186318631863186300000000 - 0000100010001000000010421042104210421042104200000000104210421042 - 1042104210421042104210421042104200000000000010001000100000001042 - 1042104210421042104200000000104210421042104210421042104210421042 - 1042104200000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000001042104210421042 - 1042104210421042104210421042000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000104200000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000104200000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000000000000000000000000000010420000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000010420000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000000000000000000000 - 0000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F000000001863FF7F186310420000 - 00000000000000000000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F00000000007C - FF7F104200000000000000000000000000000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000000000000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000000000000000000000000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000000000000000000000 - 0000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000000000000000000000000 - 0000000000001863FF7F1863000018630000000000001863FF7F186310420000 - 00000000000000000000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000000000 - 00000000000000000000000000001042FF7F007C0000007C000000000000007C - FF7F104200000000000000000000000000000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000000000000000000000000000000018631863FF7F00000000 - 000000001863FF7F186318631042000000000000000000000000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000000000000000000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 0000104210421042104210421042000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000010421042104210421042 - 1042000000001863FF7F18630000000000001863FF7F1863FF7F186310420000 - 00000000000000000000104210421042104210421042000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000001042 - 10421042104210421042000000001042FF7F007C000000000000007CFF7F007C - FF7F104200000000000000000000000000001042FF7FFF7FFF7FFF7F10420000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000001042FF7FFF7FFF7FFF7F10420000000018631863FF7F00000000 - 000000001863FF7F1863186310420000000000000000000000001042FF7FFF7F - FF7FFF7F1042000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 00000000000000000000000000001042FF7FFF7FFF7FFF7F1042000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 00001042FF7FFF7FFF7FFF7F1042000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F104200000000000000000000000000001042FF7FFF7FFF7FFF7F - 1042000000001863FF7F1863FF7F1863FF7F1863FF7F1863FF7F186310420000 - 000000000000000000001042FF7FFF7FFF7FFF7F1042000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000001042 - FF7FFF7FFF7FFF7F1042000000001042FF7F007CFF7F007CFF7F007CFF7F007C - FF7F104200000000000000000000000000001042104210421042104210420000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000001042104210421042104210420000000018631863186318631863 - 1863186318631863186318631042000000000000000000000000104210421042 - 1042104210420000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000104210421042104210421042000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 00001042FF03FF03FF03FF031042000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF03104200000000000000000000000000001042FF03FF03FF03FF03 - 1042000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF03186310420000 - 000000000000000000001042FF03FF03FF03FF031042000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000000000000000000000001042 - FF03FF03FF03FF031042000000001042FF03FF03FF03FF03FF03FF03FF03FF03 - FF03104200000000000000000000000000001042104210421042104210420000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000001042104210421042104210420000000018631863186318631863 - 1863186318631863186318630000000000000000000000000000104210421042 - 1042104210420000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000104210421042104210421042000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001000100000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000001000100000000000000000000000000000000000000000000000 - 00000000E07FE07FE07FE07F0000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000007C007C007C007C - 0000000000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000100010000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000010001000000000000000 - 00000000000000000000000000000000E07FE07FE07F00000000E07FE07FE07F - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000007C007C007C00000000007C007C007C000000000000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100010001000100000000000000000000000 - 0000000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 100010001000100010000000104200000000000000000000000000000042E07F - E07FE07FE07F00000000E07FE07FE07FE07F0000000000000000000000000000 - 104200000000000000000000000000000040007C007C007C007C00000000007C - 007C007C007C0000000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007CFF7F007C - FF7F00000000007CFF7F10420000000010001000000010001000000000000000 - 0000000000000000000000000042E07FE07FE07FE07FE07FE07FE07FE07FE07F - E07F000000000000000000000000000000000000000000000000000000000000 - 0040007C007C007C007C007C007C007C007C007C007C00000000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100000001000100000000000000000000000 - 0000000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 10001000000010001000000000000000000000000000000000000042E07FE07F - E07FE07FE07F00000000E07FE07FE07FE07FE07F000000000000000000000000 - 00000000000000000000000000000040007C007C007C007C007C00400040007C - 007C007C007C007C000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007C0000007C - 000000000000007CFF7F10420000000010001000000010001000000000000000 - 000000000000000000000042E07FE07FE07FE07FE07F00000000E07FE07FE07F - E07FE07F00000000000000000000000000000000000000000000000000000040 - 007C007C007C007C007C00000000007C007C007C007C007C0000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000000000000000000000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 00000000000000000000000000000000000000000000000000000042E07FE07F - E07FE07FE07FE07F00000000E07FE07FE07FE07F000000000000000000000000 - 00000000000000000000000000000040007C007C007C007C007C00000000007C - 007C007C007C007C000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000001000 - 100010000000000000000000000000000000000000001042FF7F007C00000000 - 0000007CFF7F007CFF7F10420000000000001000100010000000104210421042 - 104210421042000000000042E07FE07FE07FE07FE07FE07FE07F00000000E07F - E07FE07F00000000000000000000104210421042104210421042000000000040 - 007C007C007C007C0040000000000040007C007C007C007C0000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100000001000100000000000000000000000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 100010000000100010001042FF7FFF7FFF7FFF7F10420000000000000042E07F - E07F00000000E07FE07F00000000E07FE07F0000000000000000000000001042 - FF7FFF7FFF7FFF7F10420000000000000040007C007C007C0040000000000040 - 007C007C007C0000000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007CFF7F007C - FF7F007CFF7F007CFF7F104200000000100010000000100010001042FF7FFF7F - FF7FFF7F10420000000000000042E07FE07F000000000000000000000000E07F - E07F0000000000000000000000001042FF7FFF7FFF7FFF7F1042000000000000 - 0040007C007C007C0040000000000040007C007C007C00000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000001000100010001000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 1000100010001000000010421042104210421042104200000000000000000042 - E07FE07F0000000000000000E07FE07F00000000000000000000000000001042 - 1042104210421042104200000000000000000040007C007C007C00000000007C - 007C007C00000000000000000000000000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000010001000 - 000000000000000000000000000000000000000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF03104200000000100010000000000000001042FF03FF03 - FF03FF0310420000000000000000000000420042E07FE07FE07FE07F00420042 - 00000000000000000000000000001042FF03FF03FF03FF031042000000000000 - 0000000000400040007C007C007C007C00400040000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000100010001000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000100010001000000010421042104210421042104200000000000000000000 - 0000000000420042004200420000000000000000000000000000000000001042 - 1042104210421042104200000000000000000000000000000040004000400040 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000010001000000000000000000000000000000000000000 - 1042104210421042104210421042104210421042104200000000000000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000100010000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000100010001000000000000000000000000000000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200001000100010001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007CFF7F007CFF7F00000000007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863FF7F1863FF7F000000001863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000000010001000000000000000000000000000000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200001000100000001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007C0000007C000000000000007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863000018630000000000001863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 0000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007C000000000000007CFF7F007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000010001000100000000000 - 00000000000000000000000000001863FF7F18630000000000001863FF7F1863 - FF7F186310420000000010001000100000000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000000010001000000000000000000000000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200001000100000001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863FF7F1863FF7F1863FF7F1863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000010001000100010000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200001000100010001000 - 0000000000000000000000000000000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000000000000000000000000000000000000000000000 - 0000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF03104200000000 - 00000000000000000000000000000000000000000000000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000100010000000000000000000 - 00000000000000000000000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7F - FF03186310420000100010000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000001000100010000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863000000000000100010001000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000E07FE07F - E07FE07F00000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000007C007C007C007C0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000010421042104210421042104210421042 - 1042104210420000000000000000000000000000000000000000000000000000 - 0000000000000000E07FE07FE07F00000000E07FE07FE07F0000000000000000 - 00000000000000000000000000000000000000000000000000000000007C007C - 007C00000000007C007C007C0000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200000000000000000000 - 00000000000000000000000000000000000000000042E07FE07FE07FE07F0000 - 0000E07FE07FE07FE07F00000000000000000000000000000000000000000000 - 00000000000000000040007C007C007C007C00000000007C007C007C007C0000 - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000042E07FE07FE07FE07FE07FE07FE07FE07FE07FE07F000000000000 - 0000000000000000000000000000000000000000000000000040007C007C007C - 007C007C007C007C007C007C007C000000000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863FF7F1863FF7F000000001863FF7F1863104200000000000000000000 - 0000000000000000000000000000000000000042E07FE07FE07FE07FE07F0000 - 0000E07FE07FE07FE07FE07F0000000000000000000000000000000000000000 - 0000000000000040007C007C007C007C007C00400040007C007C007C007C007C - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 00000042E07FE07FE07FE07FE07F00000000E07FE07FE07FE07FE07F00000000 - 000000000000000000000000000000000000000000000040007C007C007C007C - 007C00000000007C007C007C007C007C00000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863000018630000000000001863FF7F1863104200000000000000000000 - 0000000000000000000000000000000000000042E07FE07FE07FE07FE07FE07F - 00000000E07FE07FE07FE07F0000000000000000000000000000000000000000 - 0000000000000040007C007C007C007C007C00000000007C007C007C007C007C - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 00000042E07FE07FE07FE07FE07FE07FE07F00000000E07FE07FE07F00000000 - 000000000000000000000000000000000000000000000040007C007C007C007C - 0040000000000040007C007C007C007C00000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F18630000000000001863FF7F1863FF7F1863104200000000000000000000 - 00000000000000000000000000000000000000000042E07FE07F00000000E07F - E07F00000000E07FE07F00000000000000000000000000000000000000000000 - 00000000000000000040007C007C007C0040000000000040007C007C007C0000 - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000042E07FE07F000000000000000000000000E07FE07F000000000000 - 0000000000000000000000000000000000000000000000000040007C007C007C - 0040000000000040007C007C007C000000000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863FF7F1863FF7F1863FF7F1863FF7F1863104200000000000000000000 - 000000000000000000000000000000000000000000000042E07FE07F00000000 - 00000000E07FE07F000000000000000000000000000000000000000000000000 - 000000000000000000000040007C007C007C00000000007C007C007C00000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000000000000420042E07FE07FE07FE07F004200420000000000000000 - 0000000000000000000000000000000000000000000000000000000000400040 - 007C007C007C007C004000400000000000000000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF031863104200000000000000000000 - 0000000000000000000000000000000000000000000000000000000000420042 - 0042004200000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000400040004000400000000000000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186300000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000424D3E000000000000003E0000002800000068000000C300000001000100 - 00000000300C00000000000000000000000000000000000000000000FFFFFF00 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000F7800FFDE003CF7800FFDE003C000000 - FF000FFFC003CFF000FFFC003C000000F7000FFDC0020F7000FFDC0020000000 - BE000FEF80024BE000FEF80024000000C1000FF040024C1000FF040024000000 - C1000FF040024C1000FF04002400000041000FD04003F41000FD04003F000000 - C1000FF040031C1000FF040031000000C1000FF040024C1000FF040024000000 - BE000FEF80024BE000FEF80024000000F7000FFDC0021F7000FFDC0021000000 - FF000FFFC0027FF000FFFC0027000000F7001FFDC0071F7001FFDC0071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - F7800F3DE003CF7800F3DE003C000000FF000F3FC003CFF000F3FC003C000000 - F700083DC0020F700083DC0020000000BE00092F80024BE00092F80024000000 - C100093040024C100093040024000000C100093040024C100093040024000000 - 41000FD04003F41000FD04003F000000C1000C7040031C1000C7040031000000 - C100093040024C100093040024000000BE00092F80024BE00092F80024000000 - F700087DC0021F700087DC0021000000FF0009FFC0027FF0009FFC0027000000 - F7001C7DC0071F7001C7DC0071000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000F7800FFDE003FF7800FFDE003F000000 - FF000FFFC003FFF000FFFC003F000000F7000FFDC003FF7000FFDC003F000000 - BE000FEF8003FBE000FEF8003F000000C1000FF04003FC1000FF04003F000000 - C1000FF04003FC1000FF04003F00000041000FD04003F41000FD04003F000000 - C1000FF04003FC1000FF04003F000000C1000FF04003FC1000FF04003F000000 - BE000FEF8003FBE000FEF8003F000000F7000FFDC003FF7000FFDC003F000000 - FF000FFFC003FFF000FFFC003F000000F7001FFDC007FF7001FFDC007F000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF87FFFFE1FF000000 - FF800F3FE003CF7E01FFDF807F00000001000F004003CFFC00FFFF003F000000 - 0100080040020F78007FDE001F0000000100090040024BE8007EFA001F000000 - 0100090040024C10003F04000F00000083000920C0024C10003F04000F000000 - C7000FF1C003F410003D04000F000000C7000C71C0031C10003F04000F000000 - 83000920C0024C18007F06001F0000000100090040024BE8007EFA001F000000 - 0100084040021F7C00FFDF003F000000010009C040027FFE01FFFF807F000000 - 01001C4040071F7F87FFDFE1FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF800FFFE003FFF800F3FE003C000000 - 01000FC04003F01000F004003C00000001000FC04003F0100080040020000000 - 01000FC04003F010009004002400000001000FC04003F0100090040024000000 - 83000FE0C003F83000920C0024000000C7000FF1C003FC7000FF1C003F000000 - C7000FF1C003FC7000C71C003100000083000FE0C003F83000920C0024000000 - 01000FC04003F010009004002400000001000FC04003F0100084040021000000 - 01000FC04003F010009C04002700000001001FC04007F01001C4040071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFF87FFFFE1FFFFFFFFFFFFFFF000000 - 01E01FC07807FFF800FFFE003F00000001C00FC07003F01000FC04003F000000 - 018007C06001F01000FC04003F000000018007C06001F01000FC04003F000000 - 830003E0C000F01000FC04003F000000C70003F1C000F83000FE0C003F000000 - C70003F1C000FC7000FF1C003F000000830003E0C000FC7000FF1C003F000000 - 018007C06001F83000FE0C003F000000018007C06001F01000FC04003F000000 - 01C00FC07003F01000FC04003F00000001E01FC07807F01000FC04003F000000 - FFF87FFFFE1FF01001FC04007F000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FB800F3EE003CFB800F3EE003C000000 - F9000F3E4003CF9000F3E4003C00000080000820000208000082000020000000 - B900092E40024B900092E40024000000BB00092EC0024BB00092EC0024000000 - DF000937C0024DF000937C002400000081000FE04003F81000FE04003F000000 - 01000C404003101000C404003100000001000900400240100090040024000000 - 0100090040024010009004002400000001000840400210100084040021000000 - 010009C040027010009C04002700000003001C40C007103001C40C0071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FB800FFEE003FFB800FFEE003F000000F9000FFE4003FF9000FFE4003F000000 - 80000FE00003F80000FE00003F000000B9000FEE4003FB9000FEE4003F000000 - BB000FEEC003FBB000FEEC003F000000DF000FF7C003FDF000FF7C003F000000 - 81000FE04003F81000FE04003F00000001000FC04003F01000FC04003F000000 - 01000FC04003F01000FC04003F00000001000FC04003F01000FC04003F000000 - 01000FC04003F01000FC04003F00000001000FC04003F01000FC04003F000000 - 03001FC0C007F03001FC0C007F000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFF87FFFFE1FF000000FF800F3FE003CFBE01FFEF807F000000 - FF000F3FC003CF9C00FFE7003F000000FF00083FC0020808007E02001F000000 - FF00093FC0024B98007EE6001F000000FF00093FC0024BB0003EEC000F000000 - FF00093FC0024DF0003F7C000F000000FF000FFFC003F810003E04000F000000 - FF000C7FC0031010003C04000F000000FF00093FC0024018007C06001F000000 - FF00093FC0024018007C06001F000000FF00087FC002101C00FC07003F000000 - FF0009FFC002701E01FC07807F000000FF001C7FC007103F87FC0FE1FF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FF800FFFE003FFF800F3FE003C000000FF000FFFC003FFF000F3FC003C000000 - FF000FFFC003FFF00083FC0020000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF00093FC0024000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF000FFFC003F000000FF000FFFC003FFF000C7FC0031000000 - FF000FFFC003FFF00093FC0024000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF00087FC0021000000FF000FFFC003FFF0009FFC0027000000 - FF001FFFC007FFF001C7FC0071000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFF87FFFFE1FFFFFFFFFFFFFFF000000FFE01FFFF807FFF800FFFE003F000000 - FFC00FFFF003FFF000FFFC003F000000FF8007FFE001FFF000FFFC003F000000 - FF8007FFE001FFF000FFFC003F000000FF0003FFC000FFF000FFFC003F000000 - FF0003FFC000FFF000FFFC003F000000FF0003FFC000FFF000FFFC003F000000 - FF0003FFC000FFF000FFFC003F000000FF8007FFE001FFF000FFFC003F000000 - FF8007FFE001FFF000FFFC003F000000FFC00FFFF003FFF000FFFC003F000000 - FFE01FFFF807FFF000FFFC003F000000FFF87FFFFE1FFFF001FFFC007F000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 - 000000000000} - end -end diff --git a/outils/CE explorer/unit1.h b/outils/CE explorer/unit1.h deleted file mode 100644 index bf02fa7..0000000 --- a/outils/CE explorer/unit1.h +++ /dev/null @@ -1,37 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef Unit1H -#define Unit1H -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TForm1 : public TForm -{ -__published: // IDE-managed Components - TMainMenu *MainMenu1; - TMenuItem *Fichier1; - TMenuItem *Ouvrir1; - TOpenDialog *OpenDialog; - TTreeView *TreeView; - TImageList *ImageList; - TMenuItem *N1; - TMenuItem *Quitter1; - TRichEdit *RichEdit1; - void __fastcall Ouvrir1Click(TObject *Sender); - void __fastcall Quitter1Click(TObject *Sender); -private: // User declarations -public: // User declarations - __fastcall TForm1(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm1 *Form1; -//--------------------------------------------------------------------------- -#endif - \ No newline at end of file diff --git a/outils/compression/rip.asm b/outils/compression/rip.asm deleted file mode 100644 index acefad7..0000000 --- a/outils/compression/rip.asm +++ /dev/null @@ -1,108 +0,0 @@ -net segment - -org 0100h -assume cs:net,ds:net - -start: -jmp deb -taille dw 0 -signe db 'rip' -signe2 db 64 dup (0) -p1 db '@' -p2 db '@' -min db 4 -deb: -mov BL,DS:[0080h] -xor BH,BH -or BX,BX -mov byte ptr [0081h+BX],00h -mov AX,3D02h -mov DX,0082H -int 21h -mov bx,ax -mov ah,3fh -mov cx,0ffffh -mov dx,offset data -int 21h -mov taille,ax -mov ah,3eh -int 21h -mov si,82h -mov di,offset signe2 -mov cx,64 -rep movsb -mov di,offset signe2 -mov cx,64 -mov al,2eh -repne scasb -push di -mov si,di -mov di,offset data -add di,taille -mov cx,3 -rep movsb -mov ax,di -pop di -mov cx,3 -mov si,offset signe -rep movsb -mov di,ax -mov cx,taille -mov si,offset data -mov dx,1 -boucle: -lodsb -cmp al,[si] -jne pas -inc dl -loop boucle -jmp fin -pas: -cmp dl,min -jb suite -cmp dl,1 -jne go -suite: -mov bx,cx -mov cx,dx -rep stosb -mov cx,bx -mov dl,1 -loop boucle -jmp fin -go: -mov ah,al -mov al,p1 -stosb -mov al,dl -stosb -mov al,ah -stosb -mov al,p2 -stosb -mov dl,1 -loop boucle -fin: -mov ah,3ch -mov cx,0 -mov dx,offset signe2 -int 21h -mov bx,ax -mov ah,40h -mov cx,di -sub cx,offset data -sub cx,taille -mov dx,offset data -add dx,taille -int 21h -mov ah,3eh -int 21h -mov ah,41h -mov dx,82h -int 21h -ret -data db 0 -net ends -end start - -net \ No newline at end of file diff --git a/outils/compression/unrip.asm b/outils/compression/unrip.asm deleted file mode 100644 index 02d1f64..0000000 --- a/outils/compression/unrip.asm +++ /dev/null @@ -1,88 +0,0 @@ -net segment - -org 0100h -assume cs:net,ds:net - -start: -jmp deb -taille dw 0 -signe2 db 64 dup (0) -p1 db '@' -p2 db '@' -deb: -mov BL,DS:[0080h] -xor BH,BH -or BX,BX -mov byte ptr [0081h+BX],00h -mov AX,3D02h -mov DX,0082H -int 21h -mov bx,ax -mov ah,3fh -mov cx,0ffffh -mov dx,offset data -int 21h -mov taille,ax -mov ah,3eh -int 21h -mov si,82h -mov di,offset signe2 -mov cx,64 -rep movsb -mov di,offset signe2 -mov cx,64 -mov al,2eh -repne scasb -mov si,offset data -mov cx,3 -rep movsb -mov cx,taille -mov di,offset data -add di,taille -mov dx,1 -boucle: -lodsb -cmp al,p1 -je pas -suite: -stosb -loop boucle -jmp fin -pas: -mov al,p2 -cmp [si+2],al -jne suite -lodsb -mov bx,cx -mov cl,al -xor ch,ch -lodsb -rep stosb -mov cx,bx -sub cx,3 -inc si -loop boucle -fin: -mov ah,3ch -mov cx,0 -mov dx,offset signe2 -int 21h -mov bx,ax -mov ah,40h -mov cx,di -sub cx,offset data -sub cx,taille -mov dx,offset data -add dx,taille -int 21h -mov ah,3eh -int 21h -mov ah,41h -mov dx,82h -int 21h -ret -data db 0 -net ends -end start - -net \ No newline at end of file diff --git a/programs/MAKEFILE b/programs/MAKEFILE deleted file mode 100644 index 46a0203..0000000 --- a/programs/MAKEFILE +++ /dev/null @@ -1,23 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: exem-lib.lib exem-ce.ce pmode.ce isa.ce editeur.ce volume.ce test.ce verifier.ce gestion.ce logo.ce souris.ce - -.asm.obj: - $(asm) $< - -.obj.ce: - $(lnk) $< $*.ce - -.obj.lib: - $(lnk) $< $*.lib - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err diff --git a/programs/cos.rip b/programs/cos.rip deleted file mode 100644 index f9e20763567ed1a2853b8ba1911db6e0c48d55a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15201 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 KkABg&QvWxvt|p=Y diff --git a/programs/editeur.asm b/programs/editeur.asm deleted file mode 100644 index 89ad446..0000000 --- a/programs/editeur.asm +++ /dev/null @@ -1,355 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: -mov ax,0305h -mov bx,0008h -int 16h -call [savestate] -call [setvideomode],2 -xor ebp,ebp -xor ax,ax -mov fs,ax -call [disablescroll] -adres: -call [saveparamto],offset infos -mov al,[infos.lines] -dec al -mov [lastline],al -mov al,[infos.columns] -sub al,16 -mov bl,al -shr al,2 -mov [sizex],al -and bl,11b -mov [sizex2],bl -mov al,[infos.mode] -cmp al,[oldmode] -je noinit -call [clearscreen] -mov [oldmode],al -noinit: -call [setxy],0,0 -mov edi,ebp -mov bh,[lastline] -lines: -xor edx,edx -mov dx,di -push edx -mov edx,edi -shr edx,4*4 -shl edx,4*3 -push edx -push offset spaces -call [print] -mov dx,di -mov al,[sizex] -mov esi,edi -doaline: -mov edx,edi -shr edx,4*4 -shl edx,4*3 -mov fs,dx -push [dword ptr fs:di] -push 8 -call [showhex] -call [showchar],' ' -inc edi -dec al -jnz doaline -mov edi,esi -push offset spaces2 -call [print] -mov al,[sizex] -doaline2: -mov edx,edi -shr edx,4*4 -shl edx,4*3 -mov fs,dx -push [word ptr fs:di] -call [showchar] -inc edi -dec al -jnz doaline2 -dec bh -je outes -cmp [sizex2],0 -je lines -call [addline] -jmp lines -outes: -call [setxy],0,[word ptr lastline] -call [print],offset menu -waitkey: -mov ax,0 -int 16h -cmp ax,3B00h -jne suit -inc ebp -jmp adres -suit: -cmp ax,3C00h -jne suit2 -dec ebp -jmp adres -suit2: -cmp ax,3D00h -jne suit3 -add ebp,24*16 -jmp adres -suit3: -cmp ax,3E00h -jne suit4 -sub ebp,24*16 -jmp adres -suit4: -cmp ax,3F00h -jne suit5 -add ebp,010000h -jmp adres -suit5: -cmp ax,4000h -jne suit6 -sub ebp,010000h -jmp adres -suit6: -cmp ax,4100h -jne suit7 -mov [dword ptr pope],'TIDE' -call [setxy],0,[word ptr lastline] -call [print],offset menu -mov ax,0B800h -mov es,ax -mov [xxyy2],3 -mov [xxyy],3 -call calc1 -call calc2 -waitst: -mov ax,0 -int 16h -cmp ah,41h -jne tre -mov [dword ptr pope],' EUV' -push cs -pop es -jmp adres -tre: -cmp al,0 -jne write -cmp ah,48h -jne tre1 -cmp [yy],0 -je waitst -dec [yy] -jmp cursor -tre1: -cmp ah,50h -jne tre2 -mov al,[lastline] -dec al -xor ah,ah -cmp [yy],ax -je waitst -inc [yy] -jmp cursor -tre2: -cmp ah,4Dh -jne tre4 -cmp [xx],15 -je waitst -inc [xx] -jmp cursor -tre4: -cmp ah,4Bh -jne waitst -cmp [xx],0 -je waitst -dec [xx] -jmp cursor -write: -call asciihex2dec -cmp cl,15 -ja waitst -call calc1 -call calc2 -mov edi,[es:bx-1] -mov dx,[es:si-1] -mov [byte ptr es:bx],0112 -mov [es:bx-1],al -writs: -mov ax,0 -int 16H -mov ch,cl -call asciihex2dec -cmp cl,15 -ja writs -shl ch,4 -add ch,cl -mov [es:bx+1],al -mov [es:si-1],ch -mov ax,bx -call calc3 -mov [gs:bx],ch -pusha -popa -mov cl,[gs:bx] -cmp ch,cl -je no -push si ax -call [setxy],0,[word ptr lastline] -call [print],offset msg -mov ax,0 -int 16h -call [setxy],0,[word ptr lastline] -call [print],offset menu -pop bx si -mov [es:bx-1],edi -mov [es:si-1],dx -no: -inc [xx] -cmp [xx],16 -jne pasde -inc [yy] -mov [xx],0h -pasde: -call calc1 -call calc2 -jmp waitst -cursor: -call calc1 -call calc2 -jmp waitst -suit7: -cmp ax,4200h -jne adres -call [restorestate] -retf -calc1: -push ax dx si -mov ax,[xx] -mov dx,[xx] -shl ax,2 -shl dx,1 -add ax,dx -add ax,27 -mov bx,[yy] -mov dx,[yy] -shl bx,5 -shl dx,7 -add bx,dx -add bx,ax -mov [byte ptr es:bx],112 -mov [byte ptr es:bx+2],112 -mov si,[xxyy] -mov [byte ptr es:si],07 -mov [byte ptr es:si+2],07 -mov [xxyy],bx -pop si dx ax -ret -calc2: -push ax bx dx -mov si,[yy] -mov dx,[yy] -shl si,5 -shl dx,7 -add si,dx -mov dx,[xx] -shl dx,1 -add si,dx -add si,129 -mov [byte ptr es:si],112 -mov bx,[xxyy2] -mov [byte ptr es:bx],07 -mov [xxyy2],si -pop dx bx ax -ret -calc3: -push dx -xor ebx,ebx -mov bx,[xx] -mov dx,[yy] -shl dx,4 -add bx,dx -add ebx,ebp -mov edx,ebx -shr edx,4*4 -shl edx,4*3 -mov gs,dx -pop dx -ret -asciihex2dec: -cmp al,'a' -jb nomin -cmp al,'f' -ja nomin -sub al,'a'-'A' -jmp ismaj -nomin: -cmp al,'A' -jb nomaj -cmp al,'F' -ja nomaj -ismaj: -mov cl,al -sub cl,'A'-10 -jmp endt -nomaj: -mov cl,al -sub cl,'0' -endt: -ret - -xx dw 0 -yy dw 0 -xxyy dw 3 -xxyy2 dw 3 - -lastline db 0 -sizex db 0 -sizex2 db 0 - -dep db ':',0 -msg db '\c74Erreur : zone non modifiable (ROM) pressez une touche pour continuer ',0 -menu db '\c70haut/bas [F1/2] Offset [F3/4] Segment [F5/6] Mode F7, Quitter F8 MODE ' -pope db 'VUE ',0 -spaces db '\c02%hW:%hW \c04| \c07',0 -spaces2 db '\c04 | \c07',0 - -showbuffer db 35 dup (0FFh) -oldmode db 0 -infos vgainf <> - -importing -use VIDEO,setvideomode -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,setxy -use VIDEO,addline -use VIDEO,saveparamto -use VIDEO,disablescroll -use VIDEO,clearscreen -use VIDEO.LIB,print -use VIDEO.LIB,showhex -use VIDEO.LIB,showchar -endi - - - - - - - - diff --git a/programs/exem-ce.asm b/programs/exem-ce.asm deleted file mode 100644 index 867d0d7..0000000 --- a/programs/exem-ce.asm +++ /dev/null @@ -1,26 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [print],offset message - call [waitkey] - retf - -message db 'Appel de la librairie \c02video\c07 et de la librairie \c02EXEM-LIB.LIB\c07 !',0 - -importing -use VIDEO.LIB,print -use EXEM-LIB.LIB,waitkey -endi diff --git a/programs/exem-lib.asm b/programs/exem-lib.asm deleted file mode 100644 index 0feaf4c..0000000 --- a/programs/exem-lib.asm +++ /dev/null @@ -1,24 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,offset exports,,,> - -waitkey: - mov ax,0 - int 16h - retf - -exporting - -declare waitkey -ende diff --git a/programs/gestion.asm b/programs/gestion.asm deleted file mode 100644 index 95de6ed..0000000 --- a/programs/gestion.asm +++ /dev/null @@ -1,117 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [saveparamto],offset infos - call [print],offset msg1 - call [initdrive] - xor bp,bp - call [findfirstfile],offset bufferentry - jc nofiles -go: - push [word bufferentry.result.fileattr] - push [bufferentry.result.filesize] - push [bufferentry.result.filetime] - push [bufferentry.result.filedate] - push [bufferentry.result.filetimecrea] - push [bufferentry.result.filedatecrea] - mov bx,offset bufferentry.result.filename - push bx - push offset line - call [print] - - call [findnextfile],offset bufferentry - jc nofiles - inc bp - jmp go -nofiles: - call [print],offset menu - mov [xx],1 - call changelineattr,[xx],112 -endof: - mov ax,0 - int 16h - cmp ah,50h - jne tre1 - cmp [xx],bp - ja endof - call changelineattr,[xx],7 - inc [xx] - call changelineattr,[xx],112 - jmp endof -tre1: - cmp ah,48h - jne tre2 - cmp [xx],1 - je endof - call changelineattr,[xx],7 - dec [xx] - call changelineattr,[xx],112 - jmp endof -tre2: - cmp al,0Dh - jne tre3 -tre3: - cmp ah,59 - jne tre4 - jmp realstart -tre4: - cmp ah,67 - jne endof - retf - -;couleur al pour ligne %0 en %1 -PROC changelineattr near -USES ax,bx,di,es -ARG @line:word,@attr:word -mov ax,0B800h -mov es,ax -mov ax,[@line] -add ax,3 -mul [cs:infos.columns] -mov di,ax -shl di,1 -mov al,[cs:infos.columns] -inc di -mov bx,[@attr] -@@popep: -mov [es:di],bl -add di,2 -dec al -jnz @@popep -ret -endp changelineattr - -xx dw 1 -xxold dw 0 -menu db '\c70 [F1] Lire disque [F9] Quitter \c07',0 -msg1 db '\e\g00,00\c70 Gestionnaire de fichier Version 1.5 ' - db '\g00,01\c07--------------------------------------------------------------------------------' - db '\g00,02Nom Ext. Date creation Date modification Taille Attributs' - db '\g00,03-------------------------------------------------------------------------------\l',0 -line db '\c07%n %d %t %d %t %z %a\l',0 -bufferentry find <> -infos vgainf <> - -importing -use VIDEO.LIB,print -use VIDEO,saveparamto -use DISQUE,initdrive -use DISQUE,findfirstfile -use DISQUE,findnextfile -endi - diff --git a/programs/isa.asm b/programs/isa.asm deleted file mode 100644 index f3e7e9c..0000000 --- a/programs/isa.asm +++ /dev/null @@ -1,46 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,,,offset realstart> - -realstart: -retf - -PNP_ADR_PORT equ 0x279 -PNP_WRITE_PORT equ 0xA79 -;MIN and MAX READ_ADDR must have the bottom two bits set -MIN_READ_ADDR equ 0x203 -MAX_READ_ADDR equ 0x3FF -;READ_ADDR_STEP must be a multiple of 4 -READ_ADDR_STEP equ 8 - -;bits -CONFIG_WAIT_FOR_KEY equ 0x02 -CONFIG_RESET_CSN equ 0x04 -IDENT_LEN equ 9 - -;renvoie le timer en ax -ctc: - cli - mov dx,043h - mov al,0 - out dx,al - mov dx,40h - in al,dx - mov ah,al - in al,dx - sti - ret - -;attend pendant ax microsecondes -usleep: diff --git a/programs/logo.asm b/programs/logo.asm deleted file mode 100644 index 5e5a0da..0000000 --- a/programs/logo.asm +++ /dev/null @@ -1,91 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [cs:mballoc],65535 - jc problem3 - push ax - pop es - call [cs:projfile],offset logo - jc problem - mov ecx,eax - call [cs:mbfind],offset logo - jc problem - call [cs:decompressrle],ax,0,es,0,cx - jc problem2 - push es - pop ds - call [cs:savestate] - call [cs:setvideomode],word 8 - call [cs:clearscreen] - call [cs:loadbmppalet],word 0 - call [cs:showbmp],word 0,word 20,word 150 - jc problem4 - push cs - pop ds - call [cs:print],offset poper -endofit: - xor ax,ax - int 16h - call [cs:restorestate] - retf - -problem: - push cs - pop ds - call [cs:print],offset error - jmp endofit - -problem2: - push cs - pop ds - call [cs:print],offset error2 - jmp endofit - -problem3: - push cs - pop ds - call [cs:print],offset error3 - jmp endofit - -problem4: - push cs - pop ds - call [cs:print],offset error4 - jmp endofit - -poper db '\c0BC\c0CO\c0DS\c0E2\c0E0\c0E0\c0F0 en mode graphique',0 -logo db 'COS.RIP',0 -ok1 db 'Chargement de l''image OK',0 -ok2 db 'Decompression de l''image OK',0 -error3 db '\c04Une erreur est apparue lors de l''allocation de mémoire',0 -error db '\c04Une erreur est apparue lors du chargement de l''image',0 -error2 db '\c04Une erreur est apparue lors de la decompression de l''image',0 -error4 db '\c0FUne erreur est apparue lors de l''affichage de l''image',0 - - -importing -use VIDEO,restorestate -use VIDEO,savestate -use VIDEO,setvideomode -use VIDEO,clearscreen -use DISQUE,decompressrle -use DISQUE,projfile -use SYSTEME,mbfind -use SYSTEME,mballoc -use VIDEO.LIB,print -use BMP.LIB,showbmp -use BMP.LIB,loadbmppalet -endi diff --git a/programs/lpt/com.asm b/programs/lpt/com.asm deleted file mode 100644 index 4c83399..0000000 --- a/programs/lpt/com.asm +++ /dev/null @@ -1,471 +0,0 @@ -.model tiny -.486 -smart -.code -org 0100h -start: -;call setemettor -call getfirstlpt -call initlpt -call receivecommand -ret - - - -gogo db 'Salut' -gotoz db 23 dup (0) - -;Re‡ois une commande et l'execute -Receivecommand: -push ax bx cx di es -push cs -pop es -mov di,offset command -call receivelptblock -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmd -call [bx] -pop es di cx ax -ret -command db 25 dup (0) -cmd dw nothings - dw sendram - -nothings: -ret - -Sendram: -push ax cx si ds -mov ax,es:[di] -mov si,ax -mov ax,es:[di+2] -mov ds,ax -mov cx,es:[di+2] -call sendlptblock -pop ds si cx ax -ret - - -;---------Segment Adress----------- -Bios equ 040h -;---------Offset Adress------------ -Lptadr equ 008h -Timer equ 06Ch -;---------Constant----------------- -onesec equ 18 -tensec equ 182 -Ack equ 00 -Nack equ 0FFh -maxtry equ 10 -tokenstart equ 0 -tokennext equ 1 -tokenstop equ 2 -tokenbad equ 3 -tokenresend equ 4 - - -Initlpt: -push ax ecx -call StartTimer -cmp emettor,0 -je receptinit -mov al,10000b -call SetLptOut -waitinit1: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz waitinit1 -jmp endinit -receptinit: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz receptinit -mov al,10000b -call SetLptOut -endinit: -clc -pop ecx ax -ret -errorinit: -stc -pop ecx ax -ret - - -;-Envoie DL (dh) JNE si problŠme JNC error timeout -Sendlpt: -push ax bx ecx -call StartTimer -mov dh,dl -mov al,dl -and al,0Fh -call SetLptOut -waitSend: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jnc waitsend -and al,0Fh -mov bl,al -call StartTimer ;///// -mov al,dh -shr al,4 -or al,10000b -call SetLptOut -waitSend2: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jc waitsend2 -and al,0Fh -shl al,4 -add bl,al -cmp dl,bl -pop ecx bx ax -clc -ret -errorsend: -pop ecx bx ax -stc -ret - - -;-Re‡ois DL (dh) -Receivelpt: -push ax bx ecx -call StartTimer -waitreceive: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jnc waitreceive -and al,0Fh -mov dl,al -call SetLptOut -call StartTimer ;///// -waitreceive2: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jc waitreceive2 -and al,0Fh -mov dh,al -shl dh,4 -add dl,dh -or al,10000b -call SetlptOut -clc -pop ecx bx ax -ret -errorreceive: -stc -pop ecx bx ax -ret - -;-AX -SetTimeout: -mov cs:Timeout,ax -ret - -timeout dw tensec - -getTimeout: -mov ax,cs:Timeout -ret - -SetEmettor: -mov cs:Emettor,1 -ret - -Emettor db 0 - -SetReceptor: -mov cs:Emettor,0 -ret - -;->bx Nøport->Adresse dx -GetLpt: -push ax bx ds -mov ax,bios -mov ds,ax -dec bx -shl bx,1 -mov dx,ds:[Lptadr+bx] -mov cs:lpt,dx -pop ds bx ax -ret -lpt dw 0 - -;->bx Nøport->Adresse dx -GetFirstLpt: -push ax ds -mov ax,bios -mov ds,ax -xor bx,bx -findlpt: -mov dx,ds:[Lptadr+bx] -cmp dx,0 -jne oklpt -add bx,2 -cmp bx,4 -jbe findlpt -oklpt: -mov cs:lpt,dx -pop ds ax -ret - -;-> -StartTimer: -push ax ecx ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -mov times,ecx -pop ds ecx ax -ret -times dd 0 - -;->Ecx time elapsed -EndTimer: -push ax ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -sub ecx,times -mov ecx,0 -pop ds ax -ret - -;-> -GetLptOut: -push dx -mov dx,lpt -in al,dx -pop dx -ret - -GetLptIn: -push dx -mov dx,lpt -inc dx -in al,dx -shr al,3 -pop dx -ret - -GetLptInOut: -push dx -mov dx,lpt -add dx,2 -in al,dx -and al,11111b -pop dx -ret - -SetLptOut: -push dx -mov dx,lpt -out dx,al -pop dx -ret - -SetLptIn: -push dx -mov dx,lpt -inc dx -out dx,al -pop dx -ret - -SetLptInOut: -push dx -mov dx,lpt -add dx,2 -out dx,al -pop dx -ret - -;R‚alise un checksum 8 bits sur donn‚es DS:SI, nb CX r‚sultat dans dl -Checksum8: -push cx si -check: -add dl,[si] -inc si -dec cx -jnz check -pop si cx -ret - -;DS:SI pointeur sur donn‚es, CX nombres de donn‚es, AL token -SendLptBlock: -push ax bx cx edx si edi bp -mov dx,cx -shl edx,16 -mov dh,al -call checksum8 -mov edi,edx -xor dh,dh -mov bp,dx -mov ah,maxtry -retry: -mov bl,4 -xor al,al -header: -mov dx,di -call sendlpt -setne al -jc outt -rol edi,8 -dec bl -jnz header -cmp al,0 -jne notgood -mov dl,ACK -jmp allsend -notgood: -mov dl,NACK -allsend: -call sendlpt -setne al -jc outt -cmp al,0 -je okheader -dec ah -jnz retry -jmp outt -okheader: -cmp cx,0 -je endoftrans -mov di,maxtry -retry2: -mov bx,cx -xor ax,ax -body: -mov dl,[si+bx-1] -add ah,dl -call sendlpt -setne al -jc outt -dec bx -jnz body -cmp al,0 -jne notgood2 -mov dl,ACK -jmp allisend -notgood2: -mov dl,NACK -allisend: -call sendlpt -setne al -jc outt -cmp al,0 -je endoftrans -dec di -jnz retry2 -outt: -stc -endoftrans: -mov al,ah -xor ah,ah -cmp bp,ax -pop bp edi si edx cx bx ax -ret - -;Receptionne en es:di les donn‚es au nombres de CX token AL (AH) (ECX) -receiveLptBlock: -push ax bx dx si bp -mov ah,maxtry -retrye: -mov bl,4 -headere: -call receivelpt -jc outte -mov cl,dl -rol ecx,8 -dec bl -jnz headere -call receivelpt -jc outte -cmp dl,ACK -je okheadere -dec ah -jnz retrye -jmp outte -okheadere: -mov al,ch -xor ch,ch -mov bp,cx -rol ecx,16 -cmp cx,0 -je endoftranse -mov si,maxtry -retrye2: -mov bx,cx -xor ah,ah -bodye: -call receivelpt -jc outte -mov es:[di+bx-1],dl -add ah,dl -dec bx -jnz bodye -call receivelpt -jc outte -cmp dl,ACK -je endoftranse -dec si -jnz retrye2 -outte: -stc -endoftranse: -mov bl,ah -xor bh,bh -cmp bp,bx -pop bp si dx bx ax -ret - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -end start; diff --git a/programs/lpt/project1.dpr b/programs/lpt/project1.dpr deleted file mode 100644 index a771b7e..0000000 --- a/programs/lpt/project1.dpr +++ /dev/null @@ -1,12 +0,0 @@ -program Project1; - -uses - Forms, - Unit1 in 'UNIT1.PAS' {Form1}; - -{$R *.RES} - -begin - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/programs/lpt/project1.opt b/programs/lpt/project1.opt deleted file mode 100644 index 8ebc76c..0000000 --- a/programs/lpt/project1.opt +++ /dev/null @@ -1,34 +0,0 @@ -[Compiler] -A=1 -B=0 -D=1 -F=0 -I=1 -K=1 -L=1 -P=1 -Q=0 -R=0 -S=1 -T=0 -U=1 -V=1 -W=0 -X=1 -Y=1 - -[Linker] -MapFile=0 -LinkBuffer=0 -DebugInfo=0 -OptimizeExe=0 -StackSize=16384 -HeapSize=8192 - -[Directories] -OutputDir= -SearchPath= -Conditionals= - -[Parameters] -RunParams= diff --git a/programs/lpt/project1.res b/programs/lpt/project1.res deleted file mode 100644 index ab74376341da27109e2591593a13aa146d4417ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 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 diff --git a/programs/lpt/unit1.pas b/programs/lpt/unit1.pas deleted file mode 100644 index d3a6687..0000000 --- a/programs/lpt/unit1.pas +++ /dev/null @@ -1,517 +0,0 @@ -unit Unit1; - -interface - -uses - SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, - Forms, Dialogs, StdCtrls, Grids, Outline, DirOutln, FileCtrl, Buttons, - Gauges, ExtCtrls, Spin, Mask; - -type - TForm1 = class(TForm) - DriveComboBox1: TDriveComboBox; - FilterComboBox1: TFilterComboBox; - FileListBox1: TFileListBox; - DirectoryListBox1: TDirectoryListBox; - SpeedButton1: TSpeedButton; - SpeedButton2: TSpeedButton; - Memo1: TMemo; - Memo2: TMemo; - Memo3: TMemo; - SpeedButton3: TSpeedButton; - SpeedButton4: TSpeedButton; - Gauge1: TGauge; - SpeedButton5: TSpeedButton; - SpeedButton6: TSpeedButton; - SpinButton1: TSpinButton; - MaskEdit1: TMaskEdit; - SpeedButton8: TSpeedButton; - SpinButton2: TSpinButton; - okm: TCheckBox; - Label1: TLabel; - procedure FormActivate(Sender: TObject); - procedure SpinButton1DownClick(Sender: TObject); - procedure SpinButton1UpClick(Sender: TObject); - procedure showadress(Sender: TObject); - procedure SpeedButton6Click(Sender: TObject); - procedure SpeedButton8Click(Sender: TObject); - procedure MaskEdit1Change(Sender: TObject); - procedure SpinButton2DownClick(Sender: TObject); - procedure SpinButton2UpClick(Sender: TObject); - procedure SpeedButton3Click(Sender: TObject); - procedure Memo2Click(Sender: TObject); - - private - { Private-déclarations } - public - { Public-déclarations } - end; - -const UNESEC = 1000; - DIXSEC = 4000; - ACK = $00; - NAK = $FF; - MAXTRY = 5; - -type DBloc = array[ 1..15534 ] of byte; -type BHEADER = record - case boolean of - true : ( Checksum:byte; - Lenb : byte; - Lenh : byte; - Token : byte; - - ); - false : ( Champ : array[ 0..3 ] of byte ); - end; - -var - Form1: TForm1; - Inlpt : word; - Outlpt : word; - times : longint; - Block : DBLOC; - adress :longint; - errors: boolean; - reste:integer; - pop:boolean; - -implementation - -{$R *.DFM} - -function Getlpt( Number : integer ) : boolean; -begin - Outlpt := MemW[ $0040: 6 + Number * 2 ]; - if ( Outlpt <> 0 ) then - begin - Inlpt := Outlpt + 1; - Getlpt := TRUE; - end - else - Getlpt := FALSE; -end; - -function getfirstlpt:byte; -var i:integer; -begin -i:=1; - while (not(getlpt(i)) or (i>4)) do inc(i); - if (getlpt(i)=false) then i:=0; - getfirstlpt:= i; -end; - -function getb:byte; -begin - getb:=port[inlpt] and $F8 -end; - -procedure putb(what:byte); -begin - port[outlpt]:=what; -end; - -procedure starttimer; -begin - times:=GetTickCount; -end; - -function endtimer:longint; -begin - endtimer:=getTickCount-times; -end; - -function Initlpt( Emetteur : boolean ) : boolean; -begin - errors:=false; - putb($10); - putb($18); - putb($10); - starttimer; - if ( Emetteur ) then - begin - while ( ( GetB <> $00 ) and ( Endtimer <= DIXSEC ) ) do; - end - else - begin - while ( ( GetB <> $00 ) and ( Endtimer <= DIXSEC ) ) do; - PutB( $10 ); - end; - Initlpt := ( Endtimer <= DIXSEC ); -end; - -function sendlpt( Wert : byte ) : boolean; -var Retour : byte; -label fin; -begin -if errors then goto fin; - Starttimer; - PutB( Wert and $0F ); - while ( ( ( GetB and 128 ) = 0 ) and ( Endtimer <= DIXSEC )) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - Retour := ( GetB shr 3 ) and $0F; - Starttimer; - PutB( ( Wert shr 4 ) or $10 ); - while ( ( ( GetB and 128 ) <> 0 ) and ( Endtimer <= DIXSEC ) ) do - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - Retour := Retour or ( ( GetB shl 1 ) and $F0 ); - fin: - sendlpt := ( Wert = Retour ); -end; - -function receivelpt : byte; -var LoNib, - HiNib : byte; -label fin; -begin - if errors then goto fin; - Starttimer; - while ( ( ( GetB and 128 ) = 0 ) and ( Endtimer <= DIXSEC )) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - LoNib := ( GetB shr 3 ) and $0F; - PutB( LoNib ); - Starttimer; - while ( ( ( GetB and 128 ) <> 0 ) and ( Endtimer <= DIXSEC ) ) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - HiNib := ( GetB shl 1 ) and $F0; - PutB( ( HiNib shr 4 ) or $10 ); - fin: - receivelpt := ( LoNib or HiNib ); -end; - -function checksum8(Nombre:word;Dptr : pointer):byte ; -var donnees : ^DBloc ; - i:word; - ch:byte; -begin -ch:=0; -donnees:=dptr; - for i:=1 to Nombre do ch:=ch + Donnees^[ i ]; - checksum8:=ch; - end; - -function SendlptBlock( Token : byte; - Nombre : word; - Dptr : pointer ):boolean; -var header : BHEADER; - ok : boolean; - i : word; - trys : word; - Donnees : ^DBloc; - label fin; -begin - form1.gauge1.visible:=true; - header.Token := Token; - header.Lenb := (Nombre and $FF00) shr 8; - header.Lenh := Nombre and $FF; - header.Checksum:=checksum8(nombre,Dptr); - trys := MAXTRY; - repeat - ok := TRUE; - for i := 0 to 3 do - ok := ok and sendlpt( Header.Champ[ i ] ); - if ( ok ) then - ok := ok and sendlpt( ACK ) - else - ok := ok and sendlpt( NAK ); - if ( not ok ) then - dec( trys ); - until ( ( ok ) or ( trys = 0 ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - SendlptBlock:=false; - end; - if ( Nombre > 0 ) then - begin - Donnees := DPTR; - trys := MAXTRY; - repeat - ok := TRUE; - for i := Nombre downto 1 do - begin - ok := ok and sendlpt( Donnees^[ i ] ); - reste:=trunc(100-i/nombre*100); - form1.gauge1.progress:=reste - end; - if ( ok ) then - ok := ok and sendlpt( ACK ) - else - ok := ok and sendlpt( NAK ); - if ( not ok ) then - dec( trys ); - until ( ( ok ) or ( trys = 0 ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - SendlptBlock:=false; - end; - end; - SendlptBlock:=true; - fin: - form1.gauge1.visible:=false; -end; - -function ReceivelptBlock( var Token : byte; - var Len : word; - Dptr : pointer ):boolean; -var header : BHEADER; - ok : boolean; - i : word; - trys : word; - EscapeStatus : boolean; - ByteBuffer : byte; - Donnees : ^DBloc; - label fin,good; -begin - form1.gauge1.visible:=true; - trys := MAXTRY; - repeat - for i:= 0 to 3 do - Header.Champ[ i ] := receivelpt; - ByteBuffer := receivelpt; - if ( ByteBuffer <> ACK ) then - dec( trys ); - until ( ( trys = 0 ) or ( ByteBuffer = ACK ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - receivelptblock:=false; - end; - Token := Header.Token; - Len := Header.Lenh+(Header.Lenb shl 8); - if ( Len > 0 ) then - begin - Donnees := Dptr; - trys := MAXTRY; - repeat - for i := len downto 1 do - begin - Donnees^[ i ] := receivelpt; - reste:=trunc(100-i/len*100); - form1.gauge1.progress:=reste - end; - ByteBuffer := receivelpt; - if ( ByteBuffer <> ACK ) then - dec( trys ); - until ( ( trys = 0 ) or ( ByteBuffer = ACK ) ); - if ( trys = 0 ) then - begin - goto fin; - receivelptblock:=false; - end; - end; - receivelptblock:=true; - fin: - form1.gauge1.visible:=false; -end; - - -function Sendfile(name:string):boolean; -var lus:word; -Fichier:file; -begin -assign( Fichier, Name ); -reset( Fichier, 1 ); -Blockread( Fichier, Block, 15000, Lus ); -if lus>0 then -Sendfile:=SendlptBlock( 1, Lus, @Block ) -else -Sendfile:=false; -end; - -procedure TForm1.FormActivate(Sender: TObject); -begin -adress:=0; -showadress(sender); -Memo2Click(Sender); -SpeedButton8Click(Sender); -pop:=true; -end; - -procedure TForm1.SpinButton1DownClick(Sender: TObject); -begin -if (adress>0) and okm.checked then -begin -dec(adress); -SpeedButton6Click(Sender); -end; -end; - -procedure TForm1.SpinButton1UpClick(Sender: TObject); -begin -if (adress<65536*16) and okm.checked then -begin -inc(adress); -SpeedButton6Click(Sender); -end; -end; - -function hextoint(hex:string;n:word):longint; -var -resu,exp:longint; -i:word; -begin - hex :=UpperCase(hex); - resu:=0; - exp:=1; - for i:=n downto 1 do - begin - resu:=resu+(Pos(hex[i],'0123456789ABCDEF')-1)*(exp); - exp:=exp*16 - end; - hextoint:=resu; - end ; - - function adresstoint(hex:string):longint; -begin -adresstoint:=hextoint(Copy(hex, 1, 4),4)shl 4 + hextoint(Copy(hex, length(hex)-3, 4),4) -end; - -procedure TForm1.showadress(Sender: TObject); -var i,j,adh,adl:word; -adress2:longint; -old,old2:string; -begin -memo1.clear; -memo2.clear; -memo3.clear; -for i:=0 to 29 do -begin -adress2:=adress+i*16; -adl:=adress2 and $FFFF; -adh:=(adress2 and $F0000) shr 4; -memo1.lines.add(IntToHex(adh,4)+':'+IntToHex(adl,4)) ; -old:=''; -old2:=''; -for j:=1 to 16 do -begin -old:=old+inttohex(block[i*16+j],2); -if block[i*16+j]=0 then -old2:=old2+'.' -else -old2:=old2+char(block[i*16+j]) ; -if j mod 2=0 then old:=old+' '; -end; -memo2.lines.add(old) ; -memo3.lines.add(old2) ; -end -end; - -procedure TForm1.SpeedButton8Click(Sender: TObject); -begin -if getfirstlpt=0 then showmessage('Pas de port parallèle détecté'); -errors:=false; -end; - -procedure TForm1.SpeedButton6Click(Sender: TObject); -var adl,adh,good:word; -tok:byte; -ok:boolean; -begin -if (inlpt=0) then SpeedButton8Click(sender); -if ((inlpt<>0) and (initlpt(true))) then -begin - adl:=adress and $FFFF; - adh:=(adress and $F0000) shr 4; -Block[1]:=lo(adl); -Block[2]:= hi(adl); -Block[3]:= lo(adh); -Block[4]:= hi(adh); -Block[5]:= lo(512); -Block[6]:= hi(512) ; -ok:=false; -if SendlptBlock( 1,6,@Block) then ok:=receivelptBlock(tok,good ,@Block); {demande de RAM} -if not(ok) or errors then Showmessage('Erreur de transmission !!!!!!!!!!'); -showadress(sender); -end -else -Showmessage('Pas de PC distant'); -putb($08); -errors:=false; -end; - -procedure TForm1.MaskEdit1Change(Sender: TObject); -begin -if pop then -begin -adress:=adresstoint(maskedit1.text); -if okm.checked=true then SpeedButton6Click(sender); -showadress(sender); -end; -end; - -procedure TForm1.SpinButton2DownClick(Sender: TObject); -begin - if (adress+16*30<=65536*16) and okm.checked then - begin - adress:=adress+16*30; -SpeedButton6Click(Sender); -end; -end; - -procedure TForm1.SpinButton2UpClick(Sender: TObject); -begin - if (adress-16*30>=0) and okm.checked then - begin - adress:=adress-16*30; -SpeedButton6Click(Sender); -end; -end; -procedure TForm1.SpeedButton3Click(Sender: TObject); -var adl,adh,good:word; -adress2:longint; -tok:byte; -ok:boolean; -begin -if (inlpt=0) then SpeedButton8Click(sender); -if ((inlpt<>0) and (initlpt(true))) then -begin - adress2 :=adresstoint(maskedit1.text); - adl:=adress2 and $FFFF; - adh:=(adress2 and $F0000) shr 4; -Block[1]:=lo(adl); -Block[2]:= hi(adl); -Block[3]:= lo(adh); -Block[4]:= hi(adh); -ok:=SendlptBlock( 7,4,@Block); -if not(ok) or errors then Showmessage('Erreur de transmission !!!!!!!!!!'); -end -else -Showmessage('Pas de PC distant'); -putb($18); -errors:=false; -end; -procedure TForm1.Memo2Click(Sender: TObject); -var ligne,col,pos,adl,adh:word; -adress2:longint; -begin - ligne:=memo2.selstart div 42; - col:= (trunc((memo2.selstart mod 42+1) / 2.5)); - pos:=16*ligne+col; - label1.caption:=inttostr(ligne)+':'+inttostr(col)+':'+inttostr(pos); - adress2:=pos+adress; - adl:=adress2 and $FFFF; - adh:=(adress2 and $F0000) shr 4; - pop:=false; - maskedit1.text:=inttohex(adh,4)+':'+inttohex(adl,4); - pop:=true; -end; - -end. diff --git a/programs/pmode.asm b/programs/pmode.asm deleted file mode 100644 index c7c048b..0000000 --- a/programs/pmode.asm +++ /dev/null @@ -1,22 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,,,offset realstart> - -realstart: - mov eax,cr0 - or al,1 - mov cr0,eax - retf - - diff --git a/programs/souris.asm b/programs/souris.asm deleted file mode 100644 index eca057b..0000000 --- a/programs/souris.asm +++ /dev/null @@ -1,32 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [mouseon] - jc errormouse - call [print],offset message - retf - -errormouse: - call [print],offset errormessage - retf - -message db 'Activation de la souris\l',0 -errormessage db 'impossible d''activer la souris\l',0 - -importing -use VIDEO.LIB,print -use MOUSE.SYS,mouseon -endi diff --git a/programs/test.asm b/programs/test.asm deleted file mode 100644 index d48bc79..0000000 --- a/programs/test.asm +++ /dev/null @@ -1,169 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [savestate] - push 0FFFFh - pushd 652201 - pushd 1545454545 - push 1523 - push 2041 - push offset zero - push offset fixe - push 5 - push 'i' - push 'a' - pushd 5041 - pushd 125645 - pushd 5041 - pushd 125645 - pushd 5041 - pushd 125645 - push offset message - call [print] - xor ax,ax - int 16h - call [clearscreen] - call [xchgpages] - call [clearscreen] - mov cx,200 -go1: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo1 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go1 - mov cx,200 -go2: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo2 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go2 - mov cx,200 -go3: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo3 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go3 - call [xchgpages] - call [clearscreen] - call [print],offset texte2 - call [xchgpages] - call [clearscreen] - call [xchgpages] - mov bp,255 - xor edx,edx -go4: - call [xchgpages] - call [waitretrace] - inc edx - push edx - push offset texte3 - call [print] - call [xchgpages] - call [waitretrace] - dec bp - jnz go4 - push offset texte4 - call [print] - mov ax,0 - int 16h - call [restorestate] - retf -put: - call random - mov di,dx - and di,4096-2 - mov si,offset fond - call showstring2 - ret -random: - push ax - MOV AX,[cs:randseed] - MOV DX,8405h - MUL DX - INC AX - MOV [cs:randseed],AX - pop ax - ret -randseed dw 1234h -Randomize: - push ax cx dx - mov ah,0 - int 1ah - mov [cs:randseed],dx - pop dx cx ax - ret - -zero db 'Chaine a z‚ro terminal',0 -fixe db 20,'Chaine a taille fixe' -message db "\m01\e\c07\h01D‚monstration de la librairie VIDEO.LIB\l\l" - db "\c01Nombres entiers ou sign‚s (%%u/%%i):\l%u\l%iD\l" - db "\c02Nombre hexad‚cimaux (%%h):\l%hD\l%hW\l" - db "\c03Nombres Binaires (%%b):\l%bD\l%bB\l" - db "\c04Caracteres simples ou multiples (%%c/%%cM):\l%c\l%cM\l" - db "\c05Chaines a z‚ro terminal ou fixes (%%0/%%s):\l%s\l%0\l" - db "\c06Dates et heures (%%t/%%d):\l%t\l%d\l" - db "\c07Nombre a echelle automatique (%%z):\l%z\l%z\l" - db "\c08Attributs de fichiers (%%a):\l%a",0 - -fond db 16,'Ceci est un fond' -textdemo1 db '\c05Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling\l',0 -textdemo2 db '\c07Vertical Vertical Vertical Vertical Vertical Vertical Vertical Vertical\l',0 -textdemo3 db '\c09Rapide Rapide Rapide Rapide Rapide Rapide Rapide Rapide\l',0 -texte1 db 'Echange rapide de pages Vid‚o',0 -texte2 db '\g04,13Routine d''affichage Ultra Rapide Agissant sur le Mat‚riel' - db '\g04,14Possibilit‚ de r‚aliser des effets de superposition',0 -texte3 db '\c04%bD\l',0 -texte4 db '\g01,00Sauvegarde et restauration de l''ecran (%%s/%%r)',0 - -showstring2: - push es bx cx si di - add di,4000 - mov bx,0B800h - mov es,bx - mov bl,[si] - mov ch,3 -strinaize4: - inc si - mov cl,[si] - mov [es:di],cx - add di,2 - dec bl - jnz strinaize4 - pop di si cx bx es - ret - - -importing -use VIDEO.LIB,print -use VIDEO,xchgpages -use VIDEO,setvideomode -use VIDEO,clearscreen -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,waitretrace -endi diff --git a/programs/verifier.asm b/programs/verifier.asm deleted file mode 100644 index 93d601e..0000000 --- a/programs/verifier.asm +++ /dev/null @@ -1,106 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [savestate] - call [print],offset msg - mov bp,1000h - xor di,di - xor cx,cx - xor edx,edx -verifall: - mov ah,1 - int 16h - jz nokey - cmp al,' ' - je enend -nokey: - mov dx,di - push edx - mov dx,cx - inc dx - push edx - mov ax,cx - inc ax - mov si,100 - mul si - mov si,2880 - div si - mov dx,ax - push edx - call [print],offset msg2 - call gauge - call [verifysector],cx - jc errors - je noprob - inc di -noprob: - inc cx - cmp cx,2880 - jnz verifall -enend: - cmp di,0 - je noatall - call [print],offset error2 - jmp someof -noatall: - call [print],offset noerror -someof: - mov ah,0 - int 16h - call [restorestate] - retf -errors: - call [print],offset error - mov ah,0 - int 16h - call [restorestate] - retf - -error db '\g10,10Erreur avec le lecteur de disquette !',0 -error2 db '\g10,10Le disque est defectueux, appuyez sur une touche pour quitter',0 -noerror db '\g10,10Pas de secteurs defectueux, appuyez sur une touche pour continuer',0 -msg db '\m02\e\c07\g29,00- Test de surface du disque -\g02,49',0 -msg2 db '\g10,20%u %%\g10,16%u cluster testes. \h34%u cluster defectueux. ',0 - -gauge: - push ax dx - mov ax,cx - mul [sizeof] - div [max] - xor edx,edx - mov dx,[sizeof] - sub dx,ax - push dx - push 'Û' - mov dx,ax - push dx - push 'Û' - push offset gauges - call [print] - pop dx ax - retn - -max dw 2879 -sizeof dw 50 - -gauges db '\g10,18\c05%cM\c07%cM',0 - -importing -use VIDEO.LIB,print -use VIDEO,savestate -use VIDEO,restorestate -use DISQUE,verifysector -endi diff --git a/programs/volume.asm b/programs/volume.asm deleted file mode 100644 index bc9703e..0000000 --- a/programs/volume.asm +++ /dev/null @@ -1,351 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: -mov ax,0305h -mov bx,0008h -int 16h -call [savestate] -call [setvideomode],2 -xor ebp,ebp -xor ax,ax -mov fs,ax -call [disablescroll] -adres: -call [saveparamto],offset infos -call [readsector],[sect],offset buffer -jnc adres2 -errtr: - call [setxy],0,[word ptr lastline] - call [print],offset errordisk - xor ax,ax - int 16h -adres2: -call [saveparamto],offset infos -mov al,[infos.lines] -dec al -mov [lastline],al -mov al,[infos.columns] -sub al,16 -mov bl,al -shr al,2 -mov [sizex],al -and bl,11b -mov [sizex2],bl -mov al,[infos.mode] -cmp al,[oldmode] -je noinit -call [clearscreen] -mov [oldmode],al -noinit: -call [setxy],0,0 -mov edi,ebp -mov bh,[lastline] -lines: -xor edx,edx -mov dx,di -push edx -mov edx,edi -mov dx,[sect] -push edx -push offset spaces -call [print] -mov dx,di -mov al,[sizex] -mov esi,edi -doaline: -push [dword ptr di+offset buffer] -push 8 -call [showhex] -call [showchar],' ' -inc edi -dec al -jnz doaline -mov edi,esi -push offset spaces2 -call [print] -mov al,[sizex] -doaline2: -push [word ptr di+offset buffer] -call [showchar] -inc edi -dec al -jnz doaline2 -dec bh -je outes -cmp [sizex2],0 -je lines -call [addline] -jmp lines -outes: -call [setxy],0,[word ptr lastline] -call [print],offset menu - waitkey: - mov ax,0 - int 16h - cmp ax,3B00h - jne suit - cmp bp,8*16 - jae waitkey - add bp,16 - jmp adres2 - suit: - cmp ax,3C00h - jne suit2 - cmp bp,0 - je waitkey - sub bp,16 - jmp adres2 - suit2: - cmp ax,3D00h - jne suit3 - cmp [sect],2880 - ja waitkey - inc [sect] - jmp adres - suit3: - cmp ax,3E00h - jne suit4 - cmp [sect],0 - je waitkey - dec [sect] - jmp adres - suit4: - cmp ax,3F00h - jne suit5 - jmp adres2 - suit5: - cmp ax,4000h - jne suit6 -call [writesector],[sect],offset buffer - jnc waitkey - jmp errtr - suit6: -cmp ax,4100h -jne suit7 -mov [dword ptr pope],'TIDE' -call [setxy],0,[word ptr lastline] -call [print],offset menu -mov ax,0B800h -mov es,ax -mov [xxyy2],3 -mov [xxyy],3 -call calc1 -call calc2 -waitst: -mov ax,0 -int 16h -cmp ah,41h -jne tre -mov [dword ptr pope],' EUV' -push cs -pop es -call [writesector],[sect],offset buffer - jnc waitkey - jmp errtr -tre: -cmp al,0 -jne write -cmp ah,48h -jne tre1 -cmp [yy],0 -je waitst -dec [yy] -jmp cursor -tre1: -cmp ah,50h -jne tre2 -mov al,[lastline] -dec al -xor ah,ah -cmp [yy],ax -je waitst -inc [yy] -jmp cursor -tre2: -cmp ah,4Dh -jne tre4 -cmp [xx],15 -je waitst -inc [xx] -jmp cursor -tre4: -cmp ah,4Bh -jne waitst -cmp [xx],0 -je waitst -dec [xx] -jmp cursor -write: -call asciihex2dec -cmp cl,15 -ja waitst -call calc1 -call calc2 -mov edi,[es:bx-1] -mov dx,[es:si-1] -mov [byte ptr es:bx],0112 -mov [es:bx-1],al -writs: - mov ax,0 - int 16h - mov ch,cl - call asciihex2dec - cmp cl,15 - ja writs - shl ch,4 - add ch,cl - mov [es:bx+1],al - mov [es:si-1],ch - mov ax,bx - call calc3 - mov [bx],ch - inc [xx] - cmp [xx],16 - jne pasde - inc [yy] - mov [xx],0h - pasde: - call calc1 - call calc2 - jmp waitst -cursor: -call calc1 -call calc2 -jmp waitst -suit7: -cmp ax,4200h -jne adres -call [restorestate] -retf -calc1: -push ax dx si -mov ax,[xx] -mov dx,[xx] -shl ax,2 -shl dx,1 -add ax,dx -add ax,27 -mov bx,[yy] -mov dx,[yy] -shl bx,5 -shl dx,7 -add bx,dx -add bx,ax -mov [byte ptr es:bx],112 -mov [byte ptr es:bx+2],112 -mov si,[xxyy] -mov [byte ptr es:si],07 -mov [byte ptr es:si+2],07 -mov [xxyy],bx -pop si dx ax -ret -calc2: -push ax bx dx -mov si,[yy] -mov dx,[yy] -shl si,5 -shl dx,7 -add si,dx -mov dx,[xx] -shl dx,1 -add si,dx -add si,129 -mov [byte ptr es:si],112 -mov bx,[xxyy2] -mov [byte ptr es:bx],07 -mov [xxyy2],si -pop dx bx ax -ret -calc3: - push dx - xor bx,bx - mov bx,[xx] - mov dx,[yy] - shl dx,4 - add bx,dx - add bx,bp - add bx,offset buffer - pop dx - ret - -asciihex2dec: -cmp al,'a' -jb nomin -cmp al,'f' -ja nomin -sub al,'a'-'A' -jmp ismaj -nomin: -cmp al,'A' -jb nomaj -cmp al,'F' -ja nomaj -ismaj: -mov cl,al -sub cl,'A'-10 -jmp endt -nomaj: -mov cl,al -sub cl,'0' -endt: -ret - -xx dw 0 -yy dw 0 -xxyy dw 3 -xxyy2 dw 3 - -lastline db 0 -sizex db 0 -sizex2 db 0 -buffer db 2048 dup (0) - -dep db ':',0 -errordisk db '\c74Une erreur est apparue sur le lecteur, appuyez sur une touche ',0 -menu db '\c70Haut&Bas [F1/2] Secteur [F3/4] Charger/Sauver [F5/6] Mode [F7] Quit. [F8] ' -pope db 'VUE ',0 -spaces db '\c02%hW:%hW \c04| \c07',0 -spaces2 db '\c04 | \c07',0 - -showbuffer db 35 dup (0FFh) -oldmode db 0 -sect dw 0 -infos vgainf <> - -importing -use DISQUE,readsector -use DISQUE,writesector -use VIDEO,setvideomode -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,setxy -use VIDEO,addline -use VIDEO,saveparamto -use VIDEO,disablescroll -use VIDEO,clearscreen -use VIDEO.LIB,print -use VIDEO.LIB,showhex -use VIDEO.LIB,showchar -endi - - - - - - - -