From fff0f71242f32851524284239d75b294f1fadf07 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 9 Dec 2016 09:11:23 -0600 Subject: [PATCH] no idea why bcexmm.exe is broke w --- DEBUG.16B | 210 -- DEBUG.16W | 210 ++ HEAP.16W | 47 + MEMINFO.16W | 0 MMDUMP.16B | Bin 2550 -> 2550 bytes MMDUMP.16W | Bin 0 -> 2244 bytes TC0000.SWP | Bin 0 -> 262144 bytes bcexmm.dsk | Bin 1007 -> 1007 bytes bcexmm.exe | Bin 119900 -> 119810 bytes bcexmm.prj | Bin 5816 -> 7445 bytes bcexmm0.exe | Bin 0 -> 119900 bytes comments.txt | 3122 ------------------------------ makefile | 4 +- src/16.h | 2 +- src/inputest.c | 23 +- src/lib/16_dbg.c | 2 +- src/lib/16_dbg.h | 2 +- src/lib/{scroll16.c => 16_scr.c} | 2 +- src/lib/{scroll16.h => 16_scr.h} | 2 +- src/lib/16_tail.c | 2 - src/scroll.c | 9 +- src/test.c | 2 +- src/zcroll.c | 2 +- 23 files changed, 275 insertions(+), 3366 deletions(-) delete mode 100755 DEBUG.16B create mode 100755 DEBUG.16W create mode 100755 HEAP.16W create mode 100755 MEMINFO.16W create mode 100755 MMDUMP.16W create mode 100755 TC0000.SWP create mode 100755 bcexmm0.exe delete mode 100755 comments.txt rename src/lib/{scroll16.c => 16_scr.c} (97%) rename src/lib/{scroll16.h => 16_scr.h} (97%) diff --git a/DEBUG.16B b/DEBUG.16B deleted file mode 100755 index 7dee836b..00000000 --- a/DEBUG.16B +++ /dev/null @@ -1,210 +0,0 @@ -Seg:0 Size:5360 Owner:0x0 -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0 -Seg:14f0 Size:256 Owner:0xed5 -++++ -Seg:15f0 Size:256 Owner:0xcd6 -++++ -Seg:16f0 Size:256 Owner:0xcd8 -++++ -Seg:17f0 Size:256 Owner:0xcda -++++ -Seg:18f0 Size:256 Owner:0xcdc -++++ -Seg:19f0 Size:256 Owner:0xcde -++++ -Seg:1af0 Size:256 Owner:0xce0 -++++ -Seg:1bf0 Size:256 Owner:0xce2 -++++ -Seg:1cf0 Size:256 Owner:0xce4 -++++ -Seg:1df0 Size:256 Owner:0xce6 -++++ -Seg:1ef0 Size:256 Owner:0xce8 -++++ -Seg:1ff0 Size:256 Owner:0xcea -++++ -Seg:20f0 Size:256 Owner:0xcec -++++ -Seg:21f0 Size:256 Owner:0xcee -++++ -Seg:22f0 Size:256 Owner:0xcf0 -++++ -Seg:23f0 Size:256 Owner:0xcf2 -++++ -Seg:24f0 Size:256 Owner:0xcf4 -++++ -Seg:25f0 Size:256 Owner:0xcf6 -++++ -Seg:26f0 Size:256 Owner:0xcf8 -++++ -Seg:27f0 Size:256 Owner:0xcfa -++++ -Seg:28f0 Size:256 Owner:0xcfc -++++ -Seg:29f0 Size:256 Owner:0xcfe -++++ -Seg:2af0 Size:256 Owner:0xd00 -++++ -Seg:2bf0 Size:256 Owner:0xd02 -++++ -Seg:2cf0 Size:256 Owner:0xd04 -++++ -Seg:2df0 Size:256 Owner:0xd06 -++++ -Seg:2ef0 Size:256 Owner:0xd08 -++++ -Seg:2ff0 Size:256 Owner:0xd0a -++++ -Seg:30f0 Size:256 Owner:0xd0c -++++ -Seg:31f0 Size:256 Owner:0xd0e -++++ -Seg:32f0 Size:256 Owner:0xd10 -++++ -Seg:33f0 Size:256 Owner:0xd12 -++++ -Seg:34f0 Size:256 Owner:0xd14 -++++ -Seg:35f0 Size:256 Owner:0xd16 -++++ -Seg:36f0 Size:256 Owner:0xd18 -++++ -Seg:37f0 Size:256 Owner:0xd1a -++++ -Seg:38f0 Size:256 Owner:0xd1c -++++ -Seg:39f0 Size:256 Owner:0xd1e -++++ -Seg:3af0 Size:256 Owner:0xd20 -++++ -Seg:3bf0 Size:256 Owner:0xd22 -++++ -Seg:3cf0 Size:256 Owner:0xd24 -++++ -Seg:3df0 Size:256 Owner:0xd26 -++++ -Seg:3ef0 Size:256 Owner:0xd28 -++++ -Seg:3ff0 Size:256 Owner:0xd2a -++++ -Seg:40f0 Size:256 Owner:0xd2c -++++ -Seg:41f0 Size:256 Owner:0xd2e -++++ -Seg:42f0 Size:256 Owner:0xd30 -++++ -Seg:43f0 Size:256 Owner:0xd32 -++++ -Seg:44f0 Size:256 Owner:0xd34 -++++ -Seg:45f0 Size:256 Owner:0xd36 -++++ -Seg:46f0 Size:256 Owner:0xd38 -++++ -Seg:47f0 Size:256 Owner:0xd3a -++++ -Seg:48f0 Size:256 Owner:0xd3c -++++ -Seg:49f0 Size:256 Owner:0xd3e -++++ -Seg:4af0 Size:256 Owner:0xd40 -++++ -Seg:4bf0 Size:256 Owner:0xd42 -++++ -Seg:4cf0 Size:256 Owner:0xd44 -++++ -Seg:4df0 Size:256 Owner:0xd46 -++++ -Seg:4ef0 Size:256 Owner:0xd48 -++++ -Seg:4ff0 Size:256 Owner:0xd4a -++++ -Seg:50f0 Size:256 Owner:0xd4c -++++ -Seg:51f0 Size:256 Owner:0xd4e -++++ -Seg:52f0 Size:256 Owner:0xd50 -++++ -Seg:53f0 Size:256 Owner:0xd52 -++++ -Seg:54f0 Size:256 Owner:0xd54 -++++ -Seg:55f0 Size:256 Owner:0xd56 -++++ -Seg:56f0 Size:256 Owner:0xd58 -++++ -Seg:57f0 Size:256 Owner:0xd5a -++++ -Seg:58f0 Size:256 Owner:0xd5c -++++ -Seg:59f0 Size:256 Owner:0xd5e -++++ -Seg:5af0 Size:256 Owner:0xd60 -++++ -Seg:5bf0 Size:256 Owner:0xd62 -++++ -Seg:5cf0 Size:256 Owner:0xd64 -++++ -Seg:5df0 Size:256 Owner:0xd66 -++++ -Seg:5ef0 Size:256 Owner:0xd68 -++++ -Seg:5ff0 Size:256 Owner:0xd6a -++++ -Seg:60f0 Size:256 Owner:0xd6c -++++ -Seg:61f0 Size:256 Owner:0xd6e -++++ -Seg:62f0 Size:256 Owner:0xd70 -++++ -Seg:63f0 Size:256 Owner:0xd72 -++++ -Seg:64f0 Size:256 Owner:0xd74 -++++ -Seg:65f0 Size:256 Owner:0xd76 -++++ -Seg:66f0 Size:256 Owner:0xd78 -++++ -Seg:67f0 Size:256 Owner:0xd7a -++++ -Seg:68f0 Size:256 Owner:0xd7c -++++ -Seg:69f0 Size:256 Owner:0xd7e -++++ -Seg:6af0 Size:256 Owner:0xd80 -++++ -Seg:6bf0 Size:256 Owner:0xd82 -++++ -Seg:6cf0 Size:256 Owner:0xd84 -++++ -Seg:6df0 Size:256 Owner:0xd86 -++++ -Seg:6ef0 Size:256 Owner:0xd88 -++++ -Seg:6ff0 Size:256 Owner:0xd8a -++++ -Seg:70f0 Size:256 Owner:0xd8c -++++ -Seg:71f0 Size:256 Owner:0xd8e -++++ -Seg:72f0 Size:256 Owner:0xd90 -++++ -Seg:73f0 Size:256 Owner:0xd92 -++++ -Seg:74f0 Size:256 Owner:0xd94 -++++ -Seg:75f0 Size:256 Owner:0xd96 -++++ -Seg:76f0 Size:256 Owner:0xd98 -++++ -Seg:77f0 Size:256 Owner:0xd9a -++++ -Seg:78f0 Size:256 Owner:0xd9c -++++ -Seg:79f0 Size:273 Owner:0xfde -++++ -Seg:9fde Size:32802 Owner:0x0 - -Seg:9ffe Size:24577 Owner:0x0 -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/DEBUG.16W b/DEBUG.16W new file mode 100755 index 00000000..d4910d8a --- /dev/null +++ b/DEBUG.16W @@ -0,0 +1,210 @@ +Seg:0 Size:10289 Owner:0x0 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0 +Seg:2831 Size:256 Owner:0x1630 +++++ +Seg:29f2 Size:44 Owner:0x0 ++ +Seg:2a1e Size:256 Owner:0x1422 +++++ +Seg:2b1e Size:256 Owner:0x1424 ++++++ +Seg:2c1e Size:256 Owner:0x1426 +++++ +Seg:2d1e Size:256 Owner:0x1428 +++++ +Seg:2e1e Size:256 Owner:0x142a +++++ +Seg:2f1e Size:256 Owner:0x142c +++++ +Seg:301e Size:256 Owner:0x142e ++++++ +Seg:311e Size:256 Owner:0x1430 +++++ +Seg:321e Size:256 Owner:0x1432 +++++ +Seg:331e Size:256 Owner:0x1434 +++++ +Seg:341e Size:256 Owner:0x1436 +++++ +Seg:351e Size:256 Owner:0x1438 ++++++ +Seg:361e Size:256 Owner:0x143a +++++ +Seg:371e Size:256 Owner:0x143c +++++ +Seg:381e Size:256 Owner:0x143e +++++ +Seg:391e Size:256 Owner:0x1440 +++++ +Seg:3a1e Size:256 Owner:0x1442 ++++++ +Seg:3b1e Size:256 Owner:0x1444 +++++ +Seg:3c1e Size:256 Owner:0x1446 +++++ +Seg:3d1e Size:256 Owner:0x1448 +++++ +Seg:3e1e Size:256 Owner:0x144a +++++ +Seg:3f1e Size:256 Owner:0x144c ++++++ +Seg:401e Size:256 Owner:0x144e +++++ +Seg:411e Size:256 Owner:0x1450 +++++ +Seg:421e Size:256 Owner:0x1452 +++++ +Seg:431e Size:256 Owner:0x1454 +++++ +Seg:441e Size:256 Owner:0x1456 ++++++ +Seg:451e Size:256 Owner:0x1458 +++++ +Seg:461e Size:256 Owner:0x145a +++++ +Seg:471e Size:256 Owner:0x145c +++++ +Seg:481e Size:256 Owner:0x145e +++++ +Seg:491e Size:256 Owner:0x1460 ++++++ +Seg:4a1e Size:256 Owner:0x1462 +++++ +Seg:4b1e Size:256 Owner:0x1464 +++++ +Seg:4c1e Size:256 Owner:0x1466 +++++ +Seg:4d1e Size:256 Owner:0x1468 +++++ +Seg:4e1e Size:256 Owner:0x146a ++++++ +Seg:4f1e Size:256 Owner:0x146c +++++ +Seg:501e Size:256 Owner:0x146e +++++ +Seg:511e Size:256 Owner:0x1470 +++++ +Seg:521e Size:256 Owner:0x1472 +++++ +Seg:531e Size:256 Owner:0x1474 ++++++ +Seg:541e Size:256 Owner:0x1476 +++++ +Seg:551e Size:256 Owner:0x1478 +++++ +Seg:561e Size:256 Owner:0x147a +++++ +Seg:571e Size:256 Owner:0x147c +++++ +Seg:581e Size:256 Owner:0x147e ++++++ +Seg:591e Size:256 Owner:0x1480 +++++ +Seg:5a1e Size:256 Owner:0x1482 +++++ +Seg:5b1e Size:256 Owner:0x1484 +++++ +Seg:5c1e Size:256 Owner:0x1486 +++++ +Seg:5d1e Size:256 Owner:0x1488 ++++++ +Seg:5e1e Size:256 Owner:0x148a +++++ +Seg:5f1e Size:256 Owner:0x148c +++++ +Seg:601e Size:256 Owner:0x148e +++++ +Seg:611e Size:256 Owner:0x1490 +++++ +Seg:621e Size:256 Owner:0x1492 ++++++ +Seg:631e Size:256 Owner:0x1494 +++++ +Seg:641e Size:256 Owner:0x1496 +++++ +Seg:651e Size:256 Owner:0x1498 +++++ +Seg:661e Size:256 Owner:0x149a +++++ +Seg:671e Size:256 Owner:0x149c ++++++ +Seg:681e Size:256 Owner:0x149e +++++ +Seg:691e Size:256 Owner:0x14a0 +++++ +Seg:6a1e Size:256 Owner:0x14a2 +++++ +Seg:6b1e Size:256 Owner:0x14a4 +++++ +Seg:6c1e Size:256 Owner:0x14a6 ++++++ +Seg:6d1e Size:256 Owner:0x14a8 +++++ +Seg:6e1e Size:256 Owner:0x14aa +++++ +Seg:6f1e Size:256 Owner:0x14ac +++++ +Seg:701e Size:256 Owner:0x14ae +++++ +Seg:711e Size:256 Owner:0x14b0 ++++++ +Seg:721e Size:256 Owner:0x14b2 +++++ +Seg:731e Size:256 Owner:0x14b4 +++++ +Seg:741e Size:256 Owner:0x14b6 +++++ +Seg:751e Size:256 Owner:0x14b8 +++++ +Seg:761e Size:256 Owner:0x14ba ++++++ +Seg:771e Size:256 Owner:0x14bc +++++ +Seg:781e Size:256 Owner:0x14be +++++ +Seg:791e Size:256 Owner:0x14c0 +++++ +Seg:7a1e Size:256 Owner:0x14c2 +++++ +Seg:7b1e Size:256 Owner:0x14c4 ++++++ +Seg:7c1e Size:256 Owner:0x14c6 +++++ +Seg:7d1e Size:256 Owner:0x14c8 +++++ +Seg:7e1e Size:256 Owner:0x14ca +++++ +Seg:7f1e Size:256 Owner:0x14cc +++++ +Seg:801e Size:256 Owner:0x14ce ++++++ +Seg:811e Size:256 Owner:0x14d0 +++++ +Seg:821e Size:256 Owner:0x14d2 +++++ +Seg:831e Size:256 Owner:0x14d4 +++++ +Seg:841e Size:256 Owner:0x14d6 +++++ +Seg:851e Size:256 Owner:0x14d8 ++++++ +Seg:861e Size:256 Owner:0x14da +++++ +Seg:871e Size:256 Owner:0x14dc +++++ +Seg:881e Size:256 Owner:0x14de +++++ +Seg:891e Size:256 Owner:0x14e0 +++++ +Seg:8a1e Size:256 Owner:0x14e2 ++++++ +Seg:8b1e Size:256 Owner:0x14e4 +++++ +Seg:8c1e Size:256 Owner:0x14e6 +++++ +Seg:8d1e Size:256 Owner:0x14e8 +++++ +Seg:8e1e Size:273 Owner:0xded0 ++++++ +Seg:ba1e Size:17889 Owner:0x0 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/HEAP.16W b/HEAP.16W new file mode 100755 index 00000000..8d23bba9 --- /dev/null +++ b/HEAP.16W @@ -0,0 +1,47 @@ + + == default == + + USED block at 2a140016 of size 66 + USED block at 2a140058 of size 66 + FREE block at 2a14009a of size 18 + USED block at 2a1400ac of size 136 + USED block at 2a140134 of size 20 + FREE block at 2a140148 of size 7860 +OK - end of heap + + == near == + + USED block at 1a13df06 of size 12 + USED block at 1a13df12 of size 530 + USED block at 1a13e124 of size 72 + USED block at 1a13e16c of size 20 + USED block at 1a13e180 of size 20 + USED block at 1a13e194 of size 20 + USED block at 1a13e1a8 of size 20 + USED block at 1a13e1bc of size 20 + USED block at 1a13e1d0 of size 7724 +OK - end of heap + + == far == + + USED block at 2a140016 of size 66 + USED block at 2a140058 of size 66 + USED block at 2a14009a of size 18 + USED block at 2a1400ac of size 136 + USED block at 2a140134 of size 20 + USED block at 2a140148 of size 7860 +OK - end of heap + +Memory Type Total Used Free +---------------- -------- -------- -------- +Default 8166 288 7878 +Near 8438 714 7724 +Far 8166 288 7878 +---------------- -------- -------- -------- +coreleft = 7722 +farcoreleft = 23624 +GetFreeSize = 15920 +GetNearFreeSize = 7724 +GetFarFreeSize = 15920 +memavl = 7722 +stackavail = 31588 diff --git a/MEMINFO.16W b/MEMINFO.16W new file mode 100755 index 00000000..e69de29b diff --git a/MMDUMP.16B b/MMDUMP.16B index f11d1f40a8f679970bc5e2d9babe0d7daf45871c..3c667e2af1d2866c1a8cc78aabe0767f50845823 100755 GIT binary patch literal 2550 zcmZ|RDNaN|07X$W34$Gb*@#YR?5b>w4LYnX4evaev`Sf;t z9J!q3?AL5_zUU5+kCm!r$k<>+#BIl3G}jv>d8W5_Y&7;+3b zh8$ClDaVv!$}#1ba!fg<97~QR$C6{ovE*2CEIF1OTaGQqmSfAY<=Ap;IW`$v8WI3`NMUEmzk)y~_8HxQ@D)N@Z{fb$_44`fdc9w{ zjQsQ%e#21sP`E2>gdG%;LQ#-o%dzFya%?${97m2L$C2a6apX9195_~hV+A-?fMW$X zR)Av#I97mT1v#P|QI04_lq1R!<%n`bIg%VnjwDBtBgv8ENOB}OvK(2CEJv0j%aP^C za%4G*97T>IN0Fn*QRFCc6gjFKRgNl0m7~g0<*0I0Ihq_zjwVNwqsh_aXmT_;x*T1O zE=QN6%hBcNa&$R{97B#F$B<*lG2|F>3^}G8Q;sRelw-;<<(P2nRj-%ZKM!}-5AgQ< GH+SEK-{wXD diff --git a/MMDUMP.16W b/MMDUMP.16W new file mode 100755 index 0000000000000000000000000000000000000000..7cff2845b84d554561845ee4cc2c8c494f9428e9 GIT binary patch literal 2244 zcmZwJJ4ysm6h%>E!N3_*s6j(n?=Lt9r|^DraQM<72F*%$w7AJV=g)aw>+>UC*YWoK z^nQFD=gaf?Un6T~t*o7OvToIIveFyq4fF}@>CNFxA(dON+H-cIkJchEcN9rO-*2fc&dLGPq@ z(mUy$^iFywy_4Qa@1l3nyXal?E_xTei{3@=rgzi3>D}~hdGr1I-yU|!+V`8?UjNq0 EFDf{;>i_@% literal 0 HcmV?d00001 diff --git a/TC0000.SWP b/TC0000.SWP new file mode 100755 index 0000000000000000000000000000000000000000..8892870b2e915ba62e8ff132dc9d207740185503 GIT binary patch literal 262144 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

)4hKd9szocs=zobKeeDXrym@~8_!2t4ZK=l)8V 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

    dpA5A3Hx?Vp7CC*zTlhpU%cFSmT7 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 z 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 literal 0 HcmV?d00001 diff --git a/bcexmm.dsk b/bcexmm.dsk index 37ef39464eeb0a7adc01e24f9cb0a0e7c0af00c3..d066bdd4212a88ffd862ae194e8e9b1d04bf57ac 100755 GIT binary patch delta 186 zcmaFQ{+@k;6T2jX9|I$U?c|S);u90zG8#?xW0YhuVqjpHEXX81xsB0?9mx5`FoAKh zAhYu1M~vD)C45XFFeS>9JDGH09JR?0n6wZa6J`TbkVy;*GLzL3lwdRyP(+G>!3bzA l5KLCvp#qcP0P@3tGC&J7`9d5$ee|3eP~6AD^8Y^r0|14nC4&F} delta 186 zcmaFQ{+@k;6T1{cI0GYt|KyL1;u90zGD=SNW0Yi(WME*JEXX81xsB0?9mx5`FoAKh zAhYu1M~vD)C45XFFeS>9JDGH09JR?0n6wZa6J`TbkVy;*GLzL3lwdRyP(+G>0gDU= eP$mp01GGSsFT~N)N6#6k63KlmEdT#AFaQ84$Rwfw diff --git a/bcexmm.exe b/bcexmm.exe index c11e9410f7921c01c97e813a8f41177b1fd6478e..b8e96146a4d59e5392d79ef48ae91873e98c7a50 100755 GIT binary patch literal 119810 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 z z9>3NLMIw9v=QTky-K4)>$9I;vklOujp?)`EPvlI!@8>7#OQtCt7Cg24$ea;iAZ~kgIj(+ z<&)`J^Z1`8yeBJ3+FcCj?8Lc=tptq{PlV)tUH97$?WdS@wLAd*wN$?Apt%cEfG3DA zsX;|aX+~}QuxGfxHf-RiWR0a`iOqi~XfwZ~iz4ymS7r!#Kwp%oro~rC^vc{1eJPJA z8OX=YDB}9^Q@CfmKR=QqkFP<(Xab1&|54@bnNXCfMW&%PBa5dok^Q$@$eyW1iP({d zQD?9;h;uMl))bX%433cA`0pq8NKtaKQe;0!3ee0j0Z^=vM&Y1 zU&+Tj<7x1HJM2omLS%B3gTXvQ3m9`n{~TBvvn#f~G*rXY{yuR-5y(3!c}?V?b!&Rv zDLAlxBe$BelGC!^PgBZG2jlt#-?=$st`A3lE&WZ|^H-S0%L?;)%gK+isi0&3Fb~5r-SYJ*R|+RwTH0I5!>taWaajGw zCXKvks$qav?w8e7aO`$`@&_TQ-9W2PkE{Iyb;j)vvXPr|(hA6Jv$x((F1~&kRP$5X z@6JR0?!oGxykzOCbs0M=-xn1Xrq=$7sE)JS!P-2RHI4?bmwIK%B9cnIAxYJ|X^}gH^=w$j)&%7Rc zq#`aV-@`@)p4-S>m`lmhs?e@?rQhDBUuBr2aAzG`kz=OmC^sh1QR?C3&n%Ov_V5dL z)+iQYvFYdw0qahMJ5MC2IFHH%H=8~ju;pnK;ALL{5`6`D%k*QFHxTjajM^BJ?ieMI z=AVm~;A7LX!|+_#q&~shm+F$Df?O{0V-%!Uu{_^19esI*v7y49Ulhx8D6UW$HQ*D{ zT#F&;DyD<9*6JH=e22G;gs>4(xbu^Qa=RK9c{Ni!5 zwq79btW{#uhqj(AQF}VQZR>|5+DoQaXgx!snPj>=+18^qI`oLkdwJ^zCHE0>c^j|& zu-eAwm}i0>-SA6vu^E6#tQh#y*{`BAyqE__d1r|D=c?U7UZph+o2gm}cg`a&iC7 z|As%bh+iWAIYsa(ctqx9%<(QRUyM0bxK89gof z>FABo??j)8z7_3^sS>jz^5e*hk@q6Qqv}M(M-7W=6WK2^Gjdj>I!0+M)v$dc_s!?| z&Po>B)sT0+``NG=*+(i3EaDy=spGBp{*kHNu5xa_Whp#Lkk1ToCk<0XtnYkhcYVWP zsAVFq-C(atO~HIed5vGi&+_`*eTRAdCmUoUJ{RASR^PA5*5a}HPPqEqd`Dc1$Dyoc zR>fu4qURzwkX!smzoH+?bD46x9w=g!+x2+S54@jM>P@A_iWwLzw`*mQ9~B3VVaRhQ zKBX;(`^TO+D>uHsN`O^6`9MJK=f7flfoT{R^~A~HO(sj79Ntp&v)nFB#{4n*6M3VE zg4mdb9^kD1DTlciF5tLSIBT?dPP_)|Gt#PX%G;7_SQCcexWsXziJO&0E7 zqjnm10QA6pa#=+x2~sOw=4$9bWwf&$^g=CnxR>|7Loy;U&Me;CQ( zRqwt}1{yUJ7i~6>WCh`G2q+8`0g3{}fXaf(gDQY3fnq^bLDfMuLA613LG?imL5)F8 zLCrxeL9Ib;LG3{uL7hOIK?$I4pd?TaP)|^AP+w4g&_K{&&`{8DPzop&mD1v&_N7xX^pL(n16C!oWi zqoCuU6QEO|FF>b3UxCho&Vw$1z6D(dT?Ksy`T_JK=x5MP&@Z50LBE6Uf(k)YyJ+Je z4P*h?KmnjYkP8$93Ij!h%7H3@s)Oo+nt+;vT7lYvI)FNXx`4WYx`TRx`ho_6hJw;S zV?f!U382ZK>7a)}vqAGf3qVhSo&_xfy$D(h+6W?q5=J;dGcEo6k4PXhYfM%_F3HRq zmzAIEC2jGqK50N2l18L4X+oNkW~4c(M{1Lr%B?5qPdbraqz@TL`jQ0FgCvu|WGI;e z*Y>10i6il(GwDLQl5QlCv?LW(sJ3Jf89+Lcexw8GPLfD1Qis&_xyTg%{+|nOwMiKA z5~Okv@(+IhK9+y)(kVBUbQs$^oAgN;K|1E;WRS$(qeteE-q|UsUeYloJ2!DGiLX!M z8<6;hB)$=eZ%pEwkocw~z8Q&c4ySq`xYut$dZ*@Oz;~z2JZ}!^rJ_mB$?Kg;+GpgE zE?MKeBzaWdY`CWZ#AT9%%v=)Z%^=)F3kuRa6&CiF?>N~F zC*eCOX?RjfcBiD?Ej;-0cyn^Hay%q97aPh+iKbI>$|$dATuOF!dgdt4$dvR9Z<^tu zcV0?PUjE;P?>#y{FAXirh+oA$GRNzcvB=cSbpF|&k<@^s-W{{D3tD(4dvmfpDQRgr z-dtZcO{Y#OiL6XdDtxLE_+y3_l(0k&z#>VIM=~PvX6AVkdV9L}O-z)j4e#wmsib3) zcU%ik_pCgRH!~}L)MyAHJ<~JJJ1#57h`*ONB`rQDYg{~J0+0C_8J_H{bkz-|082U# zk~z;BIWpIqr!rU4wYS$h)+gM*aFu?GyY|TTX3A^o$JIyfU&<$9mJ0ApXv4FK>RX^qQHKS=&1)JvUD_0x7w_3!tj+k9mMdWL7)m zk3^0XSuXb6AsmYkn63fWVwX@tz{UwQho2*4e&d(g1 zn~*7+sf^t8E9-oO5?WEyD02NzV(K(0)$2_|kz|xIPq`%$l2M_wvbdR}q)T`2q`df? zlyPXE$}Kj{lb-8qFsl5*S zN}yB%r4lHWK&b>uB~U7XQVEnwpi}~-5-62GsRT+TP%42^36x5pR05?ED3w5|1WF}P zDuGf7luDpf0;Litl|ZQkN+nP#fl>*SN}yB%r4lHWK&b>uB~U7XQVEnwpi}~-5-62G zsRT+TP%42^36x5pR05?ED3w5|1WF}PDuGf7luDpf0;Litl|ZQkN+nP#fl>*SN}yB% zr4lHW!2i7j(o*tL>WPu^&+&sdgyupP$vhT4g}Af=!J{$yum;ZL?ShUZDiEbxr=7D(G(GIV-oz87w- z|K-O{GGVH%wJkP2+e1eB5V4ag#n@Gf@so41#&}cnJoTG+yyM2Ha(E|s>v;N%hB+<# zACsR88(ALdpls10D-*mqx#=*^C+!Qyc~d?0ntK}5L-=~lThwdPqEXY5!cFsz$RDN5 zWECN4M@&YZ0;^$po)IZyQ?k8YJL%YdczjBZvXPgT<;~5kn&-*Q&(6-u$@4U6)J@s3 z%k>m^^N@%Cehek+tz(KzO_|**;ZT9VOkjHE$ShTY;ux9jo1N&L;LT{^>6;CcWe`w? z{OM_0L6$_?;`BL7SlmOs3TPi5kB8XQKL9iV{QGOmkN>jbTiZ#lw0YJ#c9M-`Wu&!^ z&9@nxnlLVx;mvFvn~@Jc-cj(TJo$L=WxCstizFDj>znI0+t=G?m=5;kGIKq76SF+Z z(p_!^TP&LQzt0;?RCdfj%j_U6&?&2I*|46c>>c_dgz+`l7|enhIv6mmR^5h=%5k+4 z?3xW5RIfcezGIJGof136_ffg9tJX6T7T!>_5$PF*mBEzUESY0;y6l{+Q7{$fnFzCj zo?KY7^hk4-6+9F1k>wp84|A5uc`*E^atB+2XzS7t92y#2r71mW>F>|ZK3BuY-XFt~ zn8EeN;j2;OmJJ&#(5Pj@Mhet#*|7dNV)tgIwQdbD8mWxVng~0UFi8pfgX*s#X-`&8 znm5OjnxB)CpPlEGd4d7hs=1!t>64KqV$V%Y$*kQ*)qN4SrkQ$!mJJ(>gF#-q!9jht zAT|}2*m_LNgt^0dli)aRTw4A(!<^kjS*$qxio;mf!qYJ;KO@cT9Z5-XeUp;W8<3BB zlVY%Mgdt%YLOjl1T#zEw^&VSNIY&Im^%PTwl@c$@WY-(ac60G~#WFBlX zL$IOhnGidvPV6L4inQS<8=B84FDox41D=(U!4?Q&Bhs8{agG^DZ)sc5Ff(Y2t=DK$ zkpqSTgq1xC>A_}UQPR?Y;ol?;r??!L*33cB_-tQfV0KB#OoQdo;z@v8B8iS!nG@=$ zMC3p&O%JN%ZODAFpXlHDsj1K+Bl9zeGGLmSl400`C8JYv(k7KPp>}qbx1TWe&;>gXDUZEKMHffczoRo(QUa^7m5l`zWf8-24&# z8YxyuDS3H0=_B%ycwRxamyAR=%!ioenC4TaNT#Tj)WVcRDtOuHq*C|IQ(zl3C)EqF zjgrjKDY>2zUYMlKLff5~lb(k;4T1WQ)@2dE=NXlnhDuG(RBgc@)~gJA!ZfGp-4|&} z22_C@BjilSn~s4RsQ%SGgEOWf6)yq7qc8eL41ft?xU-Q_&PMy%~Q@ zs7O+O>HQDc!XSnAKiXeCnW!p~;{RnBfE^8+y6`5QYRSx}PRqSL$Ru<-)7|j1Fu+OnXXdllPyqJ7DWMMQx3LR_K^wh?5D7zp>TG#i~ zZ{EDV$M2YcUQ>s}rB6st^BM{_(B6JTW>yZgtvLZjr^RAI4Ud6-OT@(z`u_{W(#7~x zkRSh#qQA6V$qzF>K7OeBh`;z49wODp`WGMR?)m>*PK`Msej>!iN@l1ce%l!>!E6E^ zq)>v_6+b&NL{;oF47?7k^ogwW`UF`lD&pBO;u|KdxGpSS?o#cnFCp!PUXs#32|4;#6++5<>BSHSoG zn$PdO-27TOyvCZZU@wUbtpk;>u?nJTR^MJslp!_a+fyRn4Jfm93QWMl!Lhb53fXGtJsJzD}N z=uHV+pz{*A@#YH|!boCct`BxnfwQi4XH8xk}IO_g=kguFpkNg%g0KbN2xsEw?>=AdN~v;ggupe5*c z30i?vH)u^R(8{u6+mO9u9`vXL9Y8^{K0A^YEK!0u&_D?~fl$Ll zi^t!q0C-^%A^l|^>moT4B!FDO`05I}BSAONJqZ#)sud)WR;-n51>H$A1N0y*S-flx z$)qVumY^qSgKQVQK-(nf4LTixuRfrUOK3f1Y7XZMdw+l|Ve++; zWCkcmHv9)cjU;#o^qK4d4})$D{6`>F;ay}IE`T-YbH^oEi(c5w4e&DhLVVi$@YfGy+@c}W0lCC4zb0c;~D$OsK!J2^^D>Hs^) zM`VWuU?=&I=vIJT*PH$UxGKtXXJb60Q<=S!h-=0ko{zf1aFb!q+AHV+vFr^7YcBYd`_lI@D4de z_D2A`OTHinA_3kbr-^*!YvlXnOCsOk8urm$ zMw-)l4B!N5Mr|D6Bxy=pN^pwIpcZmYkNlh*p@Ag868Qx=OxsHECHa&Nmf$q`gr1h* z4EdN2rvP7(L-c|KUz3mM5C(9T9He(7I7i;5c^u$8d5f+S0N;=gDb)ckkPm3C1>hn% zKpR^Dz9sKd`KH^*OXNK&UtSw|ne3-ONN|PhqaGW;Rq`(FBf&ND4t-pL@5oP-kTsUb z@5zreQ-UAJb?RmS*U1m`t^_}l@9B09@DoX9jC^Z}{F(G%Jteq7y0e)Q+$2fN&H-+b zL?&O>8~F?A#^hUbBX5(gY=H#7k_7gV4d6G@g&ns8{7yQvxd8xoNIdJ}0Juv!G5HqP z$a^G?JsS*Ai1mtm^=u@e9hiJOY$T=aS-mg-M%%HL5dfUFWs70}1Z~6COQ6x^Oe3po zkve^Wjgi1YS1|ed^hhgxj`d*xHoBC(BY~YRW6d}~0DYdVk-$M)Vzz@jyx!*-XX>S%IK^X1J%1aOq zaYNm^Nd&-P2_gZ8OCYC#sS-p3jFKP*V5|gX0LDpB7GS&tZ$N7dO)(3M83sWUjyhEsPML$1qECdc$+I`zQ( z!6D;G2Cz!d6Rk(Z+!f%q5!_CGlb{!}aYusQ{v7u4=diCohh}gyLNkee$h@4p+501h zD$xM|B@-P)%aa>2iNXHVhXAP5WqwrZ2>?ngW?E)EX3S<<1L64m0{iOT$xOw^R28C+&wc{VxsA(Wik+EV~jkw*a7B_|c&&t+Gsr@=|Z;{_<0 zs2R$P$Bfxb%S`I1 z`Y}Vvn3bOlTH6R^g8m4uO?sZ!cUTuORE}9G!NjG12AIfQ%_W6KSkb(n+*|Q9#pasJ}A~rOX&N%(9mNN-RVD zIV=EBlAjFaqLTP?<2Rj5&-eTD^ABK(-;W7oNmW{=G)!PRJwxRJgb;l(^~k?OUqa>7 z9bhS~Vt{9(^XC#2v`3SuQJ{R?AF`qEFJX=qUh? z(@_}A0p?OKamxYrF`7nRkYFLrAR8rEggM+637$f^c1W;*jzQMj+sPADu16E>WIi1Y z(9=%l(UAZH?Ie(mH`<1iS&h-g#eCht%_bS0ItU!qdV|?YGD!Bp5O`K9()4TwHzSll zHSACX|6Ya)15mv?96+C#p2HISiUfM6(yM--H>O z$tf0mHF>>6aG4D?LYkgU5aZ8=46d?K1{^iAl?6~jFw1U+l0d22a`2-D*zy2swDGWs zhEyvcLM4rg>?Lwd=BE;K7!jIIre`y_8KIeknW)T|%8$(IpNpfEU1jX-t3*wSnH(99 z@?%CA%N{YRsR~gO=XsPFpnLIPDy4g5*S;;7&z$Mj=@hW^GTJ*)mz z2L)8wX!NJlP0wa<36z}wO>on*8Qjd646cgY7>TNuU^7BTz?jw8h>O9S7MP3TZu*1h03bzgC)gl#$(280@KMXmn^c% zv&^cBu*H8rLY2dRo3WBbmN`_#8A^SkGqWm7p*)+#F`J+1#{{O6>DdG=*~><2nM5BU zm*mJM%dUD{E3|pl9a;k@$+rPeBY#@}RR!$;l*HNtsFKR(kxF#3UzF@AW?E+I68Of1 z_2h_5-RxGTlL^cQ`44`ilgdU%h)!iA&M(7G0Dm)}nMwS4BGj45y<5z7x-hxb3Xs62 z8lWqiZh&ssNs%8tk$>e4yKrc4i0KJ*qA_b=p zh9(92vZV&-$5t4iKU-#i0W8-51KDB&3}Vk1U@)6tfFY<#`O#OR)6>`xbsw0cC_L2{V)#VKAK3AR|km`spQqHcXD`#|$-*`fBGg>O#eAa-@7z zNu_*Lgr*;pWBR$uzEKT8H&-S9upIcz=hc75cVPhrNMH^FbY)HhbYr0gNMvCKNMdqx5uv&>x!nlR zgUKyPfMh0jGy!@txg`nEi^=UzfZj}QWCHYIavv0+FO&O@0R5QUN(AW7m7he` z#{fxegaNv<6a(~N!witj)ENRlYU@(g_zz~#O`B_2Z4e-COPL1MN0@;K9j`okhx4Ll{>ZXuwHCn=b z{+2-a9I6HflVkcRhxLV0QZg+Sj|ogC%Kz&KO+RKRGad=l8ukR+q;^W|jBhi_Wv-HB z##9bXC)2YTT!LWKoV^^D9=-@)`9p+%6_3x48On^ujM+@fO#MH~80XuK;+S)O0gmcl zrjrIv$;`_tP>*q?%1#kVNz9DUOu|gm1g12k zpOUFdIjbUv0;trbz*X6$z*RP+z*RP+z*RP6o>di?*)U@^(=t<+ZA@kLe-0E|di-r# ze>H|bWQ=}Y*gOLyu*VJ1l|5mAZtQ6TB(i4=ki=dxKzFv<06o}B10=KO4A7IUGC(i3 z!~nh73kK-JmKvZhTW^4VY>NTw4NVHznkfQv}*mR0U(^5Sp20#tMWdPI=SC)TiG}?0f3nQLj zcAD;!vt^TG`Y}V9@t84}=U*A|c=#D39@%VEQ=drBP}S5Y0jL&Ufit6bR|HVIvSuhV zp0mssPbK~}{Zi(qGJqOMV)=PP-I#tVbKg^sN&qTClVeU4hp_Yi8>+Gj|J=yNpSSnB z(XW*g)`RB^kVwxOpdPoxj&=4&_4Lgm% zQB_a}o4BfxOrVvR8e|&yJ)6PJ2qjSQn4V3J31o1U#6eb$sp_r|j!HsmYE|9E1`uC_ zX7Ca~HON{BrAE=lyds8ksN*Jx@SqZ9iT+toW^mK91Zr;69Qi33{2(%>#A}8!{g|Ol@Fc48zY1>pF+)k9 zqnS7phv3hwwL zY=fqyA`JEqJO9u~+VW~lRa|p)PnFf$SQmUJBW&Z(b34SN^4#7ZbB90GpqWDx$V62w zcSPe?0ymvZ@NfK>p5?O=RTpvmjv-zXm`>8O+9K$LUa6|U1g4V-;{8L@8Z>N`Lz83r z`77=Di!n-cVTA@rU^vKwkKWaHOG59)tOh5M85b<{Bo=9Ky0Zua^k6tUFGD3WrvZAh za0B#W0S4&Jf(_7zISkO3l{G*=R@ngkSp@?OV7HC@3}i6|XAp}vz+m>f;WUJ~4bBRB z!{GeSY0rOnep-cBH?m=lwB}P+^NFg%S1v4t`WvIoKY-8ZFf@ORNPqTYIwjEAMmz}^ z6VwdW-Hu@ITjD%m(le&Bkmk#TtoG zE=wGxfk$XFLVf=N7!CZK)kVjoijLrSTW%p7za@Q#-}mwA*qft@ZsPYsUV~`(E$JS9 zHx)IYtf``KP6KC%aALu4Npgbf}OSNHZ$QcJ3pZy z;TpR%;=zO)tRQ}7!d=A)Ed^A3i(|!5(jG2ak@4OM{OtJZ0@5tsJj5?cwfY++?R0xb|cQd zzKPSWAK`rKSLADQk(|X*)pNu~FW?yBMI0);j3a{AaNzGd9J2cnhvU*8Cgk zL4PN`up!t7yI=jOou<+Nnn@jWA`PSu&~Q4F#?S?{41JE41(l=AX%)JP)}mWzZTdQ` zL*J)$ajdZ(W=oCeHQJbdN1M>^X;beVgqOpwv9sAAR2}}q6jvWMq$?{2D?LL z*l1dw;YbShg(|agv?{23tfAv#01$EQh{gi|JJ?XTE38(%-T4(fIS! z&X>`0`~~XaD`_>piZsu_}`XQTa{e;c39%1vWN7(}FG4{0e zID6T8f^D##WLvFg*)HpOw%_^<``CJo9kyO)C#^rS)7GEZIqT2ty7hPVv-K{!W4*_? zt&j!SaID?Nc#MtnSexLrY=OM4ErhqUh4L=8aNg4v$p_e?_;6b^&$gB2vux%06Sj(c zv8@tcZL7?8+hY0qwkrIHts1{!tIvP6wc?t+Ef27_<01C;JjOndd+bAb7yD>F&_0Hz z+sE=n_6)w)K90X_&*YcvS^T;^o5uu<=gk9hc$^BqXE+FUGab+HM;wd!V#gA` z+_99ea=ZXq$=5kva#7 zQ=D_=iR;b@;uq&6QRtj3EUsz7;d(%XyB-wfTn~#{u34gmD@P=`=8Ar(5vD~#vyzE*nHoMk}k6bT{PhDHYao0|9*7cgW z?0Q{XcfBEQyLOAau06uy-YZ=0eWI-UfT-twOEh$UESkAL6>;vPqPzPu(bIiW40N9o z!`+{YRQH!+toyW>?mi=CxW5*&+~>r6_j&Q0`+`{R{#LAYUlKdrm&HE!6>-pgO}yv+ zQ5<&vB))b3EH1lmiEHlL;l|vIvonVI-FW*3bjGE+UZCdOh?lYIu@tkv!PRSXn8t` zR)mhN1l<}-chYL~HCmm%OKZ@Rv?jd*9s4VEENAtg7wbb8Hh}(Xh&5LuT9Y-Q4Ovs@ zxYoGO(2gdt4!B3qk@jPqXbKLZr{h@pSUkST#FLwBmI%Gqhvq@IPK0iqg6A^R@FeD8 zJg8ZKr#35DD%}RXx*t08JvN0NV^irVHjSQP)9EE_aQ@03!X1-`={+_R6RTO2@!8aZ zXAXA$D0T41sGHBDq5N?g&gau;{sb+{m(q&Rk(K$2v?}yuE$G8K(1(qn4_ot1(3e|i zSLnkY(1(4o8{HrJZxHm~FzCKCet@Q9r)exdOULtbbTT%Z9^e<~Bm5$r%fF>h^2^Yt z*XT3+d-^>8f$ref=^p+Q^yw{nh*NfmGj^QY*ylWqeaj=*4?Kq5;boaqlw)N@dDcL9 zSfZ%FQbc8Tzo^2dh^p*CQJp;|YO=YaHd`p_u@^)S+`a9|wuoMAr|8WNh<@w?F@PNs z1KB5H5IZUcv*Th2bf}k|5+m6ek;%Rm+3cdoV?T=r*=;ckH?|*PE^Qtwt3A%DYx7w* zZ6Qn6o?=6_)og^efn{o&*c5FGds^GdUeLC)m$aR1yS9t%(e|*D+Fo{1+sCeI2cS#e zW@YquSQY(URzv@QHPAnTK0U7TML`VrP$Kgx#d$Jk{3IGd@TWOMaX(5GLpXZ5ex ze*J6qk$#pP)vvIV`VZ_I{W|+z{}DR%CnhX6SY^vi*4A>Hb+!D;dRcyFV=Z^sRLfm9 z+j5W1$25AWh2tiV;F~Q0e1|27AFu@TQII=SzGbt)_DGkwKM;~n!t}(yYsKCJ@{Q~GIU>W-rUxQ$J_ey z(YAhkrma6;VjIL?vkm5lY(w~2+c0jir|?kw2wvWv%A4EMxYs_4Pk>IFZBOUVL8l#n zF8c(!>~rX{8}{+gXF0r9z$D%PI;>^D{X9Nk3hxbFHVnEfH(&;z8?cbi4_M5f4Oqfg z1w0Eq_dMScu$=D;SiwIISjmqCtl{SaUgp;V*6~{buW;em$jdrj<&_*;c}K@KKESb) z=Q?)r0>|romg5b+(eWnV<=D*+IQH;Ej^q4@;}k#R_?#CyzTmdNFL}AZ)4W>XSG+^u z*E}xpTb=;@)i>}5J}dAh=ofx4@HYP}@D9Hkc$fbecn|umkW;5c=*~b9>~x84&QMUe z81IY_4?3g8GtL;X)LBt1cUBeaoi(7>YC@OQ5#KuNid)VG!scoyqFjwcc~@iTt|lVU z)l3X^H5c<-?ZlI=PGXrWUcBV$BDT5`#4%SlanqG33SHfW!`%aVsF$eW?kifj2Z$v1 zKrz@oM5MciiHYvvVyZhuJn9}H=DEj-C*4_MnL7_UCttkpo+Qq=3&aoZ$-)tIzi#rdFx;%d+$aXaWKaW80v;K8eeD|n3v4PGl62d@)dgV&3`!LNuh!5c(&@J2B; z_*L;x@Fwv>@K&)dc$?S|{HE9vykG1IJ|Ip6za?%5zb&FdJ{ILdj);o8Q7j9&BzA>d7Ux5*ic2Ba#P1rYo^r+Yp&G~Yom1xYo{fKb=3NX#c6}Wx@i-_5X&W0su--Qj;ZiNlk3d2&g%Hbolrs1htyYNw3TKE|4(eSa_GvVX3RpD9M z!SHPDRQP!9Qh1JbGdx!#5&2qR#00HQ#3U^_qCo2%F>YSDp^{qBF>XJ4)>Wa1~>O1XV)c4v4QP;JP zqJGp4NByiFjk=+ojQUOcF6wvfPShRE7JXNXjJ~JEMi*)|qp993n(MuzE&6@YHho;Q zU7r~3)~7@V>ocQ6^k<{P^v%)H`kT=)`uov~@gRIH3<$i8%k~>^TXr+)f;q(?%qi}} zd}0*V*b}g}o{Af>k78ZD2%TWjOKz~=E(X1NQtktnztwFottV(ZI zo2KFL%2??19M%|mnbSvEOZqfxMHk~J!*b~G4bb5SSP$stVf0hz>=V$}8uvo?j)I=; zM;q`A+Kp$^etbL~$n)rMK8bpH0d(k0I*vbrwdfo=4f=UDbn{bu0ezW2N%!%m=n1}< zo`J5uh_&r^(Br>iZOg<;Y8NlkK=Bd{7Herav4PeTTWFlvMw7%2tT%Vkf#P*KSG+-= z5WDF@u?K6+eRQeVPnU_e=nC;RT`k_BYsI_t74bgSoFC9F;v>3E9HP6#C-imkDcys$ z>^`hzzrs59f;dSpi!bO^@eREtF3=F|TN{rS9_!MVurA$+b?MvKL3>9ZjP>VGb_?s$LOqpf zma^EGt_hPA4R9c^Hu1n5LrWN7=m>KPJxM#<&Wy**xC^e!cgHpM)|d(R!+f_VX1oJ1 zV;zVcok6$=J%k*BF@aOK!g&U*?mS7uT-S?v?I>~=^KFiM7%n;<^VJ;8Q*&`8GanZ$ zC*Zo|M9f2{VD32$bIylIGM$Wh=1ek#&LYFF$&$f|=*mkmj?I6#vowzLh8d=X?CtKMY}^8%K_a-F*?1re=1x|ghvLd?IBUrxSsagIeRv%9z~W)^p%8i`+qscd_$#4{b!p>cxVU ziw&z5J60;e^i!-_j^l3cNwkF1qy~2LYGajwbpdwsEVL0;5{+pE?6pGTM822ax&^lSP!ZlW)uKhmc_&rmz|%iP#6i@;u4 zQ}#TrUoWQ#>;>$*t)TMR{}8sFj>hSfS!@@b$6muF>esR6coSpUZhDUGrI*=0dV}q! zzp#^7Yn-N5JkSos8lWQ90JX3NXv4q37|>5L?Wvtl2{$loz=q{ zp@Hbn8e^T%1Z#xmSR=F)Ls@IA5!#B;tg}dGUBy_eJu+AiF^=`ZnxQY&3 z!D2ESD(;6_sE61H@faH^=CaXZ9vdSbXJf^DmMNZK*Hriz!?bg_}m5U;X_#U?gWY+_zbfTPMDT^_z2Sk2sGt&$n3LT*A8MGW$+kWjDk%c2|7Qxb_2c zYuB;1`H^|F8`v|v$?9phSUc@D_6dJsL$u%6NbPr)uH9wX+C5gF5k6g`e6Gg$5{>ic zG@UQgEPTCY#Y} zNbCDN+IpCmvmW6UtVekz>oFc{J zY@b=?*uJqmZo6oC26h@Y+Adjk+Adpm+oYWwd278qbfkwg!&8n#QW3TaDnY}=VmGN8 z49HZ+eoYOGWHreKT8rGm#bX<5iZc~$U<9BwsleL7#!v^+fyH4Q?nEZBc=7=2OlGqL zvWRsht5`R(i6xSESPycOC6n812)WBriH&EIU=IDsb4WDLBlY+s62}WjPd*uTJ*JQh zK9x-3)5&E15P6KxBdhu2WD{RVw)3aSehxj!my(nGIoLmW9`*&6!?eH)}d?W))aec%`tOmiJh|6Fv-vXx-Aa-X9?IpON93B3DY`5 z$sXJx-HV%?`*5vuKkjB8z&+0oFkASLPK6GZ#Hz;UXP7KLzwfJPlcek$N@TKwrWrypA2h6Oogc zbzY?#Sw;3LtHU<4dTcA}z_zn~YzJG(cH!4+>|^#iyU5;PzpyviJ+_w#eh79wj<9h4 z8LPujviAHG>(9SnL-;W^j-O%q{44e#{{bdHZnK5_SGJ7*&erieY#XQi4bJ%cob%IM z@Jn3dZeiy&L;%kh4n9W&@`b|5mk1YMF5G;*D8mnka{Q3+@XMkCzbz_qs#W4aT4i2I zi{(wV`n;>wfDh9e@;t3E#-64abDCkiY0kH5Eim4+-V@xKG*0XsXeLTjO z=@?&T@PYcnJWZd&3-qV>t+71^$LH=dX>L#{gxlMe#b9Zzvp+XH#oE11pUIp zY`1v@+a2D}_BoHU5i!!HiSagFJYlnl=WSN8&Sn!kYysj;n?t-~ixwZ*%8QdWkGN{9 zDDK!QiEw*WQP*Bgw6w>HM0-tdqc6r-bj3E?;wubJBzdSZsLZ$ zyKn|1i<$vFMbm&@A}OGcNDCMwasvj72LgtOM*_x(xdB;XaX_wEA22~2445R&1r&(y z111aMm?B~v4~iO&heR{S!=j_(NzuizN%VDW7Q-A{#R$iCk?(j-Jm}aX<~jC?=Nt#b za>u)3o#Q>R%khD@=J-(Db$ldv;8CFm9v7j3pNW{j6QV-k=c0Px7ou(8mm)6kv`7d% zDY^%KCHe-Q6;#A;GaXOG{=L3VZ zp8|t5%^9k>oMBpwGg2$(jM8d5qqSzvGFpPOtTw<|PD^!`*K(W{wE518+Dd07ZI`pM z_JK22JLjyTg}JI~HC@%Tcvp3;z*SRw!Bty((bYuT;cBiObal|~y5h8Y?szTU-B}yp zPSo<t7HM=`U<3YJvlb}58$>(dMgC=Ot22Ip92TjuU1r=x~f+lPB z;QKXC@D#0M@CagJ09G z2EVD@4BoBLkiA+!$N|k0^0rnZ~eaL6p=8zNG_K=gHFSIiur?u-LXS91EUuglM-)rvB8(P`Wn_AV-U$s`D zziIb{{-TW!y{kC^tGW;`tHzZ{nOAG{fp2tdSPgU?hY%jmkq0+ z*9fbv*9)tww+gGLCxq44`-L^oQ^OkRnPH9fN5Y!uTf>^_7s8t9EWCwYIlPr#H@vmp zCA^KEAKq4965dYV5#B*R86K~*h|YSGh~9e3h<h(Y?Ph#~r!h@twA5ySOc z5%=k~$Pv0TGF7h->D8-5j?|k+j@H{mrt3W;$LjqeGxYSxOg%F)OP>)rUY`}2qc4ff z)0ai&>zgAd>N_GQ>F-BQ)<2HCUq2f;RlgWHP5(9W0sUU&3_U37Aw4|mVZD0PEWJ+D zBYOL&IeL85qx!(8x%#lEdHVRM`TB&YC-gZ{PwJ0HE!0;;J*B@C^|bz4)M9;4)Dr!0 z)U*0$QP1g@qn7F4M=jTB^a@>%Ua3b#uhPp!uh#2FuhE-CuhkQx*XiA(*Xt?K8}yOU z8})+dP5QLx&H94qt@_i^+w_;Ccjz0Vck272U(?@-eqBEm{ic2#^j`f|^gi7d zb3k{-yrox&IjC2Oc}H&^^Pb)&<^#QF%xC(dn3MYRF{kvkG1v9=F+b@$V{Ygl#N5;m z#r&dw8dC*lCAvV*C1CF)33{zNR>8fXvwFiSSs$$024L+ol8k|V%f$+42K3r|JTH14 z&xqDzt+o-X;GI|v?S`GT53s9p0@l^OAx~o^^bA%ti^(vo*&e`}?QN{tE@I7AgS`N& zaw|wr_BH8)`*b7NMXWGJO25B8iNn znzF6gPqdd&sLwN^o%$Pu@8?Aeh2_@?QBUCze4j=<{*Og#NpcXUw5k}Q)%CMsbwVDl zgTYKt7mZ;RZOEak_5#U6ex!-Se%c~30eO(0E80dPt&2!Y7`L>QxIFl}MV|jOKB1Nm$Q<~ufS(@A9$2n0eycogZF~+}jXIJhNlsd0$kRUg|7>kV zmI6z|BzLS0aUaTvr>+gA>`=zq;J38xLH!x^{;SQ7y)kLv3l=Z!_wX#s$Y+GpL$(7; zBPbqc1mMEpI$|CaB? z3c`rzCD98zI~?N``kja;ZJ3eI+hPo92Yz4hg*J?I^!Xp5O`vgzr$6|a+8FH88u6Ue z&%j(ASC&J+(T~8Yox$H>NrtIAj$I%^4p`zyZ`^f~AKkiy^aqwT;<7$L2K)Rkw=TpX zJPXzfguG&%g(HJTJPiVdk~H8H@LLA-Azs8OKl1}R;%TlGYYIZ14QPs86pH;ZLaqfo zLdN^ba>Ox_++67i+T{p-=Ki@qbJJnW<`QW>~SYH_adGM=b z1^nlL?+SjAtnu-;1ZTiNnuhfbjIssaM_%=%TP~y`-2y-I5_!##FuED}oCrKT9QhQ%2|^%@=TT8O1*SoN!60c=AU)~hPl-;3)}dIVVVsZd zj1{L*UI%L5!8K*TG!iW{h#T>Yf+1U&&Q@kjCy?sc4Q1FFhNV{uGhRMF%h^5>g|PCD z{s!zq`ai?DF*eQv!;4eQ%79Fu`CZKn* z78gxv4e%EN?}JXM>BF}~1FVpZ{1>48H-!JE;b*4Si!}Acb3)64R%JM~0b{9J3TXi> zKk@q8q!q$SQvtp7T_oP;-wv~#oe|G-;DqDa^OqY`AtGt ziQCXfXl_GpX*jLX3-PQ3Kb!8uxACdRPLY9#XBB?7!Wy?9;#m#c7nTwRAgsiPSv4}m z7mtlMAVY!If*;JQlVLu7OI`*$0u;Nl7z23-nd2*$g*?q3gREZxKLo9Rx6gkdcK!GK zpW?0qKB_9~-&dw(CNq;dNhqSC3y2671Pc;UOdts{1wnyfS~5eXIVB{Bf(5VvqO6Dt z=w}zj-Vim4vi5atiwz5|bwynfbywy4pZo5cOtJ#&_wD{R;<@*pTi?Csf9|=joI!je z_{F$;@wnih#0Ih+#P0&X1~s0*nCb6yNY2w(BU;UNNcD4q|1S71fqx(PpMn3Xn146! zCus_Z|KpP4}^3s(R_%E0bW}^iEEAtq31mZ7%|AToL8!h-lEJw33h`$8>aLZxrNWpKh9LJ7Q zWjwQEY>s6VJ4W!ATaIL75q|~z)t2GRBlzSx*{dpecb43ids#r$_Kql?56o4K@K8(c zjaNx=v`K$XSepsegy(^92PuERxF!u6IO%29Z5T@(An6lj%I66_kD0?;m+7q7#sa9W{YuW7XD!ozYH4u2GM>F?qJ=B zc0K~X7@Ly%O58EM7wh;r`0H?I z^)Ye1FIX&iGNj&@$6{gtV1b<~Ao~?lYcktI0UdDC{{^%mB{5|47fqz2L9_a^hUB|lysDDTN z7x1fHPW30jUp2tRexW$Tc<%y0hbH z-jRYomsPT(5I2IKge7*gXlEn4Ng9i|nc87%rE#Ksi=1HN(S8p2UfIu15d5v+p9nsA zP`( zV!^-_3?ol~3XYkV2gTnW{ExF2%I9clFc3p!n@I23gR>UWuvwr!DRhd$kPP1FFy0=o zfpO4@N^2LB!pq|f$3vVYcqa$({!nPqo`n*=j4bButL%U&^fA7|2G>z&WP|H*fI_cY zevSx-&<_`s&_9iT5T(b%dA~>xr8I_iyhy`Fz&6KNIm_;M3i{1XH}*@nX2vy&9ZVMl ziP8EyRD@%wU0nZ6kv>E#XVA`M4EWdUY2mS=+&GPI(%U;u@MSjmEIfc@KKk(n%y$We zSXdrnF~(4OG-E^hwOg{6w9eN;Cn2_cqSG z@%y*mo5nmr&W6)`T}pC+a43l&LI^rfFB0kgA?8_MkBBzT%sRy~;~sprgmn*#bxV*O z?5M@v9fWZimN@#kmb3uETj=Kmz#jn%LzFl7k;B!HGn5-b{-zN^-tjdS*5AO^P>A$( zg0E5pF{T|fLk?_M*WEjJBQM|e`<%}%^rmK2<~>#{{@r=9viE^$T_)(SG?9_e3S??(^&=kGs_b;0`ei2Y%p zr0ov}NZS4|OsuOc=H(+c_zm1RfzNc*gC3B%9MP_iG_;ytPM-%6X69e#e<;1vdt2z8V{rk&>owUKHg9iV%FRZ(fr)uK#Jhe-Z1duV??X zzW#c?9_ss+UcNW2;eCSWU(V=bj05Zb7L5n%{vnM&Yrm-^KGyvUQLpd1Gg)7Ea3ybqPL*L@_$fpS>)QPe)x z{UmA+;mkhkeUw%X>phmrVZG;2dsy#D)DPCXibAY+9pz`OcN6g;Z>NfJ=<7XOr2FqP z9b(-RBL5^Yf8g_V@0S06`$DxQH>w`$>%YHHmz$udFUn`+Pq!n_qj5qm7SeS?E|$`K zWXZ)+%7cZ>98{p8{@As0N%l8Xna9mvHd z(f=A657y_|K63G=j9k1*?L!{c_0tE}_K}Zm8Tojd%0oVGpmrf2pHP30kIyNDe0)Rs zS@Q8c@zMWJVm!KhD2gVx{pI6MAs;T0zfQ;p_*^~)YkVA8wEFr!bA>1;^tdGO{ZIDA z?b`Zg)^#s-KxTj0pWOUk^Ywl&6!Nyeu(u!Wx`lqsoR{9n$gP&YtzVk!u|k;WVqW$6 ziT?8eBg-c2Irb zFiG{Z@R-)qa^L+~CApud;GJH*Kh($md?vL6Jf1E3vkE*cQ?keZdyF6Dpr=<;`@o}9 zw6E{a`F-$vjaDA|dOei~9*e16;Bf=>2Rv@15O}uMf^LGjS>=JsdDRVvAyted9PwSVSPV){N z{EgNdIQToQQx*MjE_j%=PmQ2Uka-3J#_wDQ131C<9Z zx~W~@;xy_HxR^yDaN(!?EL_YbKKhS|@#whd6zTrBIA7r6B9WgIatc1j#mYX{v09r? z{oKsM--d_1$&oIHdbpQz8Jt|*4^LNTrWD7_SLj0N})qR@C zRw92O@(ht@i9AQ-c_J?md6CFVME(fUgT<$jLbfLpd6~$ch`d7NRU)qud7Vgr`hA1Q zpNVXvR^BA?7UA%1D)J7IsB|daWT79DpK z2Z9GQ;vpmZh{#`vd`zTwe4j|a!!t=DacMZ~fhgiJ9gbn_b0S}0*71Xx5?k~oEx=An zenqjbC7B-2DQwZ-Xe{4S#x5e?QSNTa{hr7VROCl0vV$)0BO-q%@(&_E5&0RU2T-BS z5JTG|oq#A_iDr_Fq)d;z6+Cap7B_(&R-D9oa32-mqFfUZGv!)9v{q)xN&I{%o{loN zyo9kib#xv`4+`L?NM&5$Vj@e3ET!BFh+Ig7{6?{h@j3&3{&y*E7oru+AD-7Q zClC88$lv~@@V?&zRZ6mEqo1-vjg{2-Wq6APuS+1dipcMAzeba*D=?FbR?`EfE2+yh z@+AzfYA?q-9w^rXZOhm-G}&uWWYIcWp7m6Ye(naZ&VXD?gnpU^b_d9HMCey>82v^L z`yV3L9d!?dA{JBi#yaO>`6!KVGm+^W z4;fx`{E+ovB-lR5v-xbi(GN_+pZXm6P`orG|4xET!W+5|ACvaMG+qtB?_x-OFpXRN zetbR#OyhZPHl~fze+Sce;5lE$)6FySau+aNAOX{bcoeN+I#<$!D;v`ez(U4@&U0j^ zv=>a{0vF35ONi_P)A*UqWoQNS2iNn<V;Y|HAEtTUMC1`7_$Y)h4U&y% z{61(uEtQSw!z5sOlmtwJY$5U#$i6UrxCBh2$iIN;S>!%`Ha@5Za9RjBegaN_7QUT; z6YUF}Nd%mVzQCy_;D7|-VxU$0faBd8aNy&Af51VPYvA+^z&U-Nz(Kj+ z2psp`fP<#?2OQtO4>)ZEoazj4@N)$Z(>!k?@(7X5a!>+rK(c`o+9z=45^y2}9FQ$U zo&wnyaKZ!}6#18cb3OrQ836~L!sn2~ZjTK2-ClVE0q35+z*$VdS<)9c@Z;?#XWl{i z;=aJS;J*Z% zN&?PhG=FfazFhtv0?v&DoSXIr95`0rA8^p+8hm*T;H=*#a8T|y0_Xa@0S8U(4>&jf z`+##B0q4RDaNr~UVVdVnL>?isS-zcs1CkA#JN5~jjRc{<5Ih&%d~r1QL{g?u+i9{^RJ* zJ{jW9_k21dpD7zdKck&|ZKij?Gkwj!}Ai)4cgOsn!$iOt- zCG?W3=jAdSKd+GC2KrJsh2D!533t!?!!){FBRgbZI#1r06^U}c5z|HTUaUwowLeUk z;%z>X?0yh)<^3@|ONKw@+2kbJO zK3(o}V4E!iU?4$xj@-xYoF)Hv4s1SxT7aMyBB;$JsC8tZ=KmF_wGq^U1hw|PK@AtU zSO!@_WFJtA5Y*af{@^fsIl0eXLC&-6G>cAG@Cg%s*ZTKLzB*lvsuvm_GVH>;&Sm)iZUU>sS7y!d z(y$Wm9NvnrJnqLA6tCc||M&1l{ZDuc+#=cGX{SsY0v|i0;dSRYoB^l8XHE*V4Dx9KVAP?0>-j^&a@Xma*p;u|HX4 ztDFn{o`)aEF2Zh6ifwnGe1Lo)Hr+$z;qplNaCl!hLN1qUYvqjRfEA~C@>ssILdIm;Y7nE zLycjwVVdDDhR+SV4VN3QG~Qr*%=onNdE+a_H;q3Se>NITd8R_s5Yq_Lc+*6a#}qKl zHHA&^xMEshT4-8kT5VcuT5r19bi3&u(_^L{)6=GBO)r>UHN9!tZu;ExwQ0BMXOm*i zF+0sJ^FVX6dA2!d4x3}&>^C?=?SUe!~2c`A_C;=C94)ntw7Y z7ON%SGQcv@a)jl0%XG^U%f*&UEmvATwtQ~+(z46)qs5RjBxih1c}`7EC}&a5s+s)K6b&++cb*1%2>mAl7tj}9twZ3cp#`>c* z*XFVvU^~)wjIGvIZ)>qFwcTL5&32dVe%m9q9@~?)=WQ?B-mtxGd)M}%ZKrKb?(Mmo zbDzw8CikV>*K$9}{UsM)huV*}A8W6$pKABo&#-sd&#|wvud&}~zuW$>{W1G<_Sfz2 z+CQ}Kw0~{?-oD3fa@ZVsj$+4P$4JL<;kh-KRfVbPEjnduln)@)kJ5h;!xu$>ErqTpA-6r18y3YB7|Oc|scqzqMlr;Joa0YT%H6P3xzsfu6e zP&$?Q%2HrxwX#-uQF&c?OZi0kO8H4SScT^db(}g;tyY`Vnd)q{U5x=jXQ~U-rRv4% zCF8}BeaWPHN-g7H=3HseRe zQqxe=WYcM;*}z+e=>pRV(^bIO-KGajPXbvVns%A~VUo;7vjeCaY947GZ$8yL(;PCd zFkfR{Z@%69iupaWDW?$VI3;I#P9W#WoImF50w(N0#YpRs*5j?!)@JK$>m}9|)~l@# zT6?T7S>Ld}1x)O){?+;qt7ZOvVfyCnCD+$(d}=H8sUG54X|$8w*}eJ6KE?iac6dYUWQjrM%|c>5H4E70M$ zhk%d^>?`c6?N`~?+cy9qpV)WXEsg_#hFOkfj>{bD95*@cb?kB2oW+py5ze!m7de+X zFLSPQZgXyTI`R(8J2CI%yoS8f@;rI%d6B&Nd28}+%G;E;Bkzm6AM$?5Q}P}86Z0qM z$Met1zb*fc{Cn~r%P%b$TyR*yxPqzzcR{$|jDlpr%7S$T4;8#qu%qD90(;?cg%b;F z3#S$O3KtYEEWEhziNdXgFBg7PxVz9?WG^Z%8dx-{=;)$xMaLIa6txz4i(*B|qRyg= zimoZzSoBEIGeut(?Jn9=q!wF?9mV;@LyIRCHx|z-_7wYzyNWL=UR``c@u$V#6*E_^ zE8vQ{?s9E*J>h!M^;g$U*SD@8Tzg!_C1oXpN=B57D><>GvSeCGSIL5sg(a7itSY&t zmr9N(om_fK>FiQpX{_|D(q*NqO7Aayxb(5oEu~MFzEJvV>9*2$ zO5ZE}vh>^1pGqxdj-8&_6QHl?h&Y);v{vIS*}%a)g2U3Np+-DR80o-MQC zF@6m@jm=^7HRDKNz*z*l)dkAc%5}=E%ALynN)Ps{7nDCM+p%MP zsr(4U$trx|s)N$(B zTH{T|t=QFe8}}FuCVH1`5E}w5cs#4X_j;$}+vO$rhL`l;I(&!vFkXmw5nlp)3Lkz7 ze1IMVPkf`G&n7^3&4k|aLto8<54}awmD07)R}V?ANgqp}!7BJh`bAQ)+aD&6mQRpd z<%pb?&%;b@fN!NO@}HowB=|zIDEZ1b<#?r1X@R9vz$P;8 z1a#hUSij}vkPON^R>QYP90qP+2K=okt5a{4x>IikDI!Ya_ z9tlfktU4a@aiV&XdNOR9I&~^^b1N)8crjLIL1MgWn;KN-svWTX;%Y)oLSxTUyCFko zsSDL})bk-r7eIS2Q&*^$!V+4gUa4LMYiK=W>w5Jz^#S!wb(gBZBC0XWG_)B)hPYv& zVVz+MBQ*Eq!(h74T{O}*B5o$+SloyH%H%v5F?WIDt&&UBoq+!TdX zbdKqdrdLd_o3@$WhW+!N=>yXa(?_O{O`n)PgEjP5(^sZ%Oy8QmGktIR5gPnw(;jGX zgV_xG$Y!>~M#?uAnv2aP<}&kO^MU4r&4-wWnMXjsk1`))o?xD1j+o=-ZgY=$iy6M& z%wL&*fR*I546+Qd47VI>skEG8X|c?)1T1080?R_nxt0qp%Pp%dkHUbq!3vJz8`y!^ zn=SYusew3oA1K2c8&0l^>_j#R7I`hJ1Kwsq z-UE=|5d6!;x$ap6DZY$7fp2NQV`NtxAiW50`J*wyDX;*h;ZTa#3$Vu*V@Dsalq)l# zVbYMTrOM^XI^{OyL--eyRikQwT#biDnPO}-&M^9o%Z)3I>x^5BFBylzik)DpGS!%- zn5LRqOfyU~P0L}gnqZk8Za&}qy7_(cU(B*4*HUCT3bWZ{In6T5(q=isve~lL@`7cX zB`>Eq=ZKuToS8Wu*qmqNoR{-*&g(fJU~jcxZ#~vpZ*^P!)+8*=ORQH~H(+0V+PahP zrUPsvu#eW*T5Yp!Ufa30Ww!OOGmW{0xx;fCu#YaxU5Wkk;oLWK-^K3vx7@+@arRpK zbi2=FUen(e|7%N`ETZb zk^f!(kb=<##}YYR3M++A>g!S;er3cfC| z7CH+D6`oLdM&a4m|5g^RD}1!@8SH^?7dndu6^$qwU35ZGv}kDY5yjhz$GVPpRlBCR znq94~SuVG$-4$}3;YzyZxfZw4-(ov<=*v&dimzUmzUF?n0ou$UI!DVC18p_(r&Mv#6Y-8Ehvh8KN z%j^RV9WY_QDFapwSUcdB0UHK9IN-SfFAjKlfB|yX4qq2ZcqG~go%bldpZ=T~@#{vT z;5pSVC83=!hjxAr=eCbwOB$h(Pn0XmoYL(jShq^vUr# zh*I7ngl=~-kn$wjJKb)?Q|W{^R*^^{>g!Ckc{;TGK(sT?^UG_RYig@oC_5bRMALDK z1p~g0XgVB5JQYYpLQzjDfOsO1OvMs``GG`?xjo((TCF^}X=-cZL}b?2Ppzz~13wk$ z3Q>3dSkm1dNVSE~ZYq@!9E`0W2W2_~KD`F=wUlT@1U@}<^GJicuCjL8L{=?AEd_3? z&ekF#jSP&A7w4gtqT*Uo3(%MrLB{mD<{DmJi-H>2WokKMtvm=P0|8pi z`Y8?N^;L+p)Hfo=(0D~XZ!Qt=_!*?3U5k)hq~js1T`Cri%?n^j($R1zN{viwY^rT& zsiLl@HMa1e32i}^QgL4#-TScc;XoTLQ$=HIO9R64n%ag66!paup=hd&s)qc5SZ$OF z`9}K^sZf+lLT}977D^;3+a303VItN^18GYHAYpBugcgZ-!r_>YGxR8~A;ZhW-QENj zXda+;?b}FLN%Ij(?%Ui0Z&(Qc&>i`d|fftuXqn;NGBm!NS zTP-3&T54Y~62r>*!m%XbPK0fG*cMJFaczX7a3I>AqByZIK`1@7v8tiE5s{OtS}1Ib z#RE|U`YN?)a?_RyP;p#3bOEj~74twI!aUGuBoN_CPnYZWq>!z(Bm%uXw46@ST4e=6 z57yLOtqBVFNu;1YNE|gvF!!b*GfBOf&P*(sO87jOW`usyM+kA5)WW<(h$|uy>d7vB zX53wEVs6~H$`mdDwb~FM!Q8bCb?zyF?&d(EGvvd(*2mH`y|oSQlLM*AvF>s&hM7rC zf+)nI$;wHb*G$ks87%?ziX@L$2HHHBHH{xkr~I*b7%Eyp4Rlr$i(#petbi6wfRU`! z3p8OmD$q79yimOj-JN>#_GRbE3R%bP1| zYdNFb*D=XMqK4)W=V5KKH5o|MMzJV7-8Y4%GUL-n%!{4j$B1XD}T51-hMJ`QWy(bi{4@4T%iFRCXW4*hA_9emX z(`R3vXsHjAX16*Ki&O(MTGgpQMWd%Z(95YHxbf9%X zIs@G3 zy)NeQ>&@%K;zPvL5x^rT~CW4aFK$sHI3ZfSQV>A-?fM%!di9O8P3G2{3W(fs`9N4X)7db+>7% z8L?0lvWNlH!CZlDQH@Ptl2DGlnq1HHB(n4SDEpcUH!Wvnz?*JoZlw59iev<0#M~9- z*+r1bE`nsWCqXj83nG51rfHDDC5KB55}d6`3{tcLdZG@^r$Uj?{6Is@AHXG7l-Idy zu!L1zaZi-DTj#FuBq9K0FU#FjS9NMdEE3n`i@F0NkW~eXnT`WydOy7@g~B>$_^4as zb%D+RW*->@;@%WTa=javq=q#HLlMRJBsUK2UC*EGue!Y(yBL# zIEl8V4yZyPrO7zOVT?jo@Cwbr*gV8z38)riRi-2HO1^y|(He!$_h;p{#8RFxb-~Lv z1>$H3b~B3Nk^%{B2$NzF@6>2jB0;*kE0T2k_*N@GGX{o&K6r|AxzoBpOVN1Xe~U5u0 zagE6kFC9xpJac*HeR!cL@vuNq*s~faT0*ohx`P2v-0R_n6U@SJClJATsTeh_9Z!7R zM%Ci5$H4cc_%6$j7u+!6F=0FLxG;X83~Zh@~;(oCOIZdr1q96yX>a@xT&><^l0^by2Jf_a^ZSi=rf2}M!2Eri=e(PRqtD4CDt{<-O7N?2{gAl#E#$m3++WD?w@#412U^n#kf znJJo;L@QIg{@zyf1Z)8`C`?hFt#K;(_^BnNc{}~eaGqAGGL&fXKn1a?u9R**CiO%G z->iDs&6*^TiJ4^0!BAUDi*ln`8z%{k!x=ms$B84<)`kZ8&=HczBA7=z9>TUb zZfc|$ZI_ht;0(@EiFAMknWu|+yO^&FndqMR+6cBpk_^c51R2zfH;9HI(99oZ{ve^K zJ`|lU!Wk?T1S*1@m5FA!p04S70Z-QqUWZuJhMoqlrq^)}Vly(a=`|T%4NG+a3m9{# zy*-dXT#IzGWH1m&!5YN)MXVdXnc@T?Xor9wG{yKSFc@cX($2}0+Y=47abr@fQj#zP zV9g8paVQN2LhV7|6cB*z$YO1DCKDhXEy6J(JW_=C30O~82x^7X2$unO9o=^j@z%H= zYly*~6x=4>lSuFr30ikq-C!XY%5rD<bL*EE;d2%R z?x29$Ffhys?de)W0J)GwigC-A^c3H;Fpwm-9T1{fO7aGYMAH%MO|Uzn;cgaAq#1gl zK|}-dSPbh)5nh-QJi@mtK3vThV<^rqpCU9VygiLWEpwKZ^raIC5{g)?y_>fc71FBtmmeEIofj*^Ppa#?=f$PQJ|$FAwQHpY_vcCCJAL^bD&DW z(M*wk#riR!VxesP5EkAynY(dp6CO90TkK?+I0+gzEqxv=6)potauT8v7uSmzHbziQ zBIB8CoL`}sVNv78Ya4Bj(6XV_7%YXZ85-*wp|gGUG(C;=Ey08*8N^0TsH3H%dqaLg zac`m?a@m_|tZzt1_!=ispWjH(Ogn0rW)xio+O;So2XaoALgG$5EUT{r9YBV8k`_ec zLqFAE2I7%0PH3VOB}jx&fe%8cNs8lerS%~aeAv7Y4MNiz@rc(Wj(cdA;&g31hO=)B z_Jg=o(XM{g8BNwGR3INAa^uuCW<9ReBe7?sD?~*;hoUWgI<>Zt5~nueCt^62@f$Q8 zJ#?-oyDF1l6~T10BUu}z9GXv@%2NTpfRutE?bi~x$wE>hgu+kvK14i;129Bhr06^( zqI|PXy0LxZJ~XUbKVCpcg*wv0+)2{@p~Ye8Bz+J*s7>62BAJRncWK*;7pGzDz5FyB ziD)5i$521efqEnzX|11>WFTCj>U#{@K|wzPO#w!<2LRCjK!!E|Y(_XyK!=22&_kx6 zX9@XHxT=my%n*s5T|=uzCk3X>Gj=sIu{mTzIH7(dq`z>WfFMZ>V1a1QbC=UzBW zi2Hh-o-pi2ZT9#KB@;dvB<+Af0%j7w|KdmE$+VB|r7?6y?F50?l*dcS6w}9#<6KRJ zww>2hFn*Lyj$z5s7y-Yr#^PiFFx*6*-w5FdoP!@~*e zKG)Bi)oX>4PHL8KTA~dDg{k4z|m%d;SHWkC8f_W)e-e?pBB5`3nAW8MJ z#$8iYUMZ#wG03}S)njkqx;N?R47j1uSx|d66?8)k{YYv1Go2}+&wX5}<0J&7jyq&N zm?Uu;Bu0qSC2bk3y0)&0;r2if`x5hVb3;rc_V_r1{Lm>J;)1eS!>bqOS$#bjN4_@N z_i+W{auCz70!$=4wB^zDk{Hp1@GQDqvHv9jN*p@k{LUH81lf;aNCb~yoE|(Y8%+bI z2!oLdIrrnX8J`I>PEQN5v?B2GWhV25b~K#5B3`^qku~;~^4dCWYAMF%I@SxCNT+NnDhItz0aAMAoh8l z_xFB&pWh#^_|2Si_I>ZQ*IsMwwa>Y3=`T!=FrUOsjA`2YnN>{uHy1x9cD(qWQvJax ze~^fk0BeCuar2P5TsmYbmo@{x11f<#fFrD2Y6kuQi~<_1<fg`}@z#-scU_Y=2*bTe~YzNwa7GNXL z1iS^j4!j1u47>n53;Y>q0G>=XUjsh{P6HI%D*0>cD)}Q|Gw>+j2d)8} zK!<`nfd_y>;9OviWtDsm-~e{ZtK?>&3iuD;ZpSKl2~Yq`21WqK?5pHw02R0!xB~ce z#433g@EY(iun?F9C_n^t+77%5JOVrb+zs3aRcr+0)94nm7E0}%UUJZ0oMQ@jansd1(pGYz`dEP=K-IMUnRc_ybk;ZxEHt-c;>WK@(+MZfHADto(VXC za_K7N4qy@RSMycME5KF2py?{*O~3|x&aP5612upjI1k7MK2xqz_5dnS3KRo}EmtXj z27KLbjDtAUGvvw-n{14x*@RK5m20zLq?0%714;4vTsEC>Dr zSPIMrrUDxKQuzYd1+)UM1Ahjd0t$c`z(imaaIZAp+G8GX{Rr3r{0XQA?gAD9mjXFJ zw`sif0MG_B0uKTA05<@3-~=0Q-3zP)s(_n-9|CiLvw&>C4lJ{dx84d|35-_8TVs~- z*5AwHt?G#J)&MXUm;zXVFKy$kdw^}g2H<7D58MGP2Ce}v044&Pq&KX80iFc{z}>*j zKoM{rU- z!@%>vQ^0S5`+*+;g}}wYnSjcAtvz?%Ycp%z1G)&KL9I$t_;)zm<#N8^;#Q%(Liiuuk|kAVxY*` zYn=@AkM6bZ0Y1*^wYC9`z-pilxE;s`-XGO#y$v{?*=zk7FmGJ1bp|j77|QOoMuAAlt`fGoB( z!v)xZtIg|1%mStY*?<#BnAVMm0UrbJ1Ahh90WSbg0lx))3EU0%fNOwUU@|Zoh_iJg zz5+f3-UnKMb--HS4?qp@E8t$>R$u`z54aGR23UcWX2v!H5x^-iHWlatJ^{7?ZvgiJ zKL!>6R{$3Slg$rgP6SQ^)>{}00^5L3fdudyg|U}_Hvq2{`Qdj9e%}L3Hpb2ZW&u|L zcL4#Q8h8SD0cZhs1783Gz~~W-%>&K`ZUfpHm(6#?CujJ*i_ z3HTil0?L4UfSZA9ftkP{;>Lgvfp*|E;C5j2D8{Y?mI7Y_W3o`M)6g#9QD7NxEiebT z7+}B`;}|;xv;pq`PXWt;Qs8>vQs5#WYdm8z@D0*jkKY=g30MN$2h;(ZfDYh8VCe+L zPT==V{C)-0p3d0Yz+RwyBJy`L_7h++a0cK46yWYN7`qI(0B{0F5O*u^8t^PoIGHi) zB-8_OyMe91-+*VPFgAZG(gNoL(}6L-kAatfM}ZYUE6@pi1-v#5dcm2X0pOp&d%&c# z82jAA*iN7gI69rNcY#g7i@-$SM#TBY_ZX`OEI=jhA3U3}KLXdB!4`T-W7WfD7 zzknBjLEtEG?!};6;Q#*je|zBnn;vL-Aah12`yq4V1v{sxGt5kNpUdj^uYHi!DZgeR zcR35qc!Wi+Fs&(P_074>>RxqlgH{>udF}8OS9mV51p2FXRt@Y6xdLp1nROlxwq^zo zcZb}+Vs*Q7j%<1$v%cM<&Rr;1Ys|dNwuzZNA>6H(JHIN-|7w{O?J}vKNc%(X8kD87 zHNR##d+VDUuUWiv%B`JW4At*ezc?O7Ce1uqaPI5Un6kpExeqd_w4mHtHMfGfOD_(a zZhXhgc1|fhr|~Y;{knv!$&FXNW1>gn3f4Ztu0obqajLTca zr3IIF&}CS`)m?P8Bg{&=~qRj*C; zDWRGtSm?>$GfjD%7waYZd;fjww?+X>B`ZN`Nsfj>J=1S=F47>kT-ntOs-bGyx2nT(LvPb`^K za!ZTCk}b|{E-u!}l*n=|y_)E>VuVn@9TXtyh9`PJ8&qN-z=%QDry zod-J)_3x|NoY@(3bnd8%WOWBb^axSMAp68SE6%J8~%c5kxbB5cI#7*-#UzbWJmw zGJEBh4;@{{UbYeidF_*KEm8kTNi$ld$ysWSS&AbsCZ0~86)4f+bp~v8CC+xQeU6MWRIlRj+5*

    C=;f`5@TWkx9Be!Vo@O5(PdEdEst~cVA7CSW{*adz}j0-8z zhTP`d-Ng&Hl*pdoJPm9N^GL#6qX#CdN3|A5?$km)d&q0cUg=FBXG(+;XC6n+j%NP` z)n^C0n?xOCV+(2{pdn6(wTC-nOQapOAA%x-hcog!0_ObI)+9qn>zaX@Mu}!q*usiq zW897Ncn3KJ_d*YWFaGv~=pdbL>RPvyDW1?o)hl~KSDHO_*Q1BxxK!#}K}tHy*kEC? zE7g6*2(+UZ#?;MCW7xnEh!N`E`W8=HjmNC%&n#2T#lwSd^n_|IGG8V}@cXXUrSf&+ zdbP*=6s-l&4Ra_U3uIn%722s3lBxF1l?G&8fGFAZj}F45HpD-NS1r2gI6!7X~) z)w4y0$K%5?yyT<|FA*7HkWR`lk7sx}WjHCVlZ%w#F&b4(i%qWG+{lb(_t%Uy$^H@a z$TFG5WV%QvL3iV2`tqbNI&vJrwQbO^Yg_)2`S3wpJbX}o^sF%jXT412Rd+qXj0xKA zJqiuf+f|G|N1)?evv`B1&1~*@ZJ^`oTU+y1SPBzGU4h(13l=IXAHGM+8O)}i;>CiR zHJ=MzYC%$y$i!4}bmhi-H0#nOH?=Bpx(rps)rvTgz^f31vgSx&&LPb68-o#|KqUf7;@1Ul&d;8HPX3wiLKT~(9d#hrTtB&8cY;^6a zo8;i}ab;4pLh3j?Lwj+eE9#f3PO$R9U{S&pd!H`9#HBg5g)R?OReY17spFtfnfcxHRk6ni{+wxm|bd8#GomCaQr%*(PI&A(E>rjTFA zJNTv)y-%w;AqPGPdHWMvqd%gXW!vABHE)0PdhPLZFL(-x%E!NHuJH~!nwNKU98`B< zg*qs;n7o70nLON|YBCXD_a8f2z3FJ5;?bpSW}Z5Z-)37QD^9GN{c^T-X{7Q5<&7#awBY#4qNbck1Mej}IZMhUN<+^4^d%)thZn|EM6rad1 z>MxVjqW&nPd?QQTVhNTuC@g#Ng6x$g?<`sfHaQI}QS~NXVkZBHu#F)rd(4Wzwy?sA zBZo404N#hm`A<`QgO1%5qaxjLPt~R81x#1xbW}(oUk}~+9kt$XK+9w1dsbM26+H|~ zoG4H$>WOTOs{I4BppcevkqglZtv!5zwPErmUMBDUbg!e_v%k9u+XZW8DRjJL9$9vt zJS%5=&VEm=Jm);WZO&xBJSQh$^}HInEPnM5YqlS@B7R={&@o(Qy{=#c}i@2*~L3!MNV%;bL}AE$X97^te~Dt=Ikv>mqwD~^B!iK|Jf_o%)+J6XuS%)ZfHVehgZvtR6( z>$t-4qWxaSHI5?3LdV}7KX*=a&T+mm@(cd&Y5OXBaxv1GdYcT*!6#qCmxub6V$Ygw z@=~bdOUFSlPplYf_6`}VysWRK2Gi5Cco$iOya~5jBp+T1L1k;163-u4W>+^~ zg^AiN4MJv4uz=kAd@R3dzf{*;cObvjKWeCJ*Sn?1@n_lb=Z_!yIyNco!C#K6dsD$` z>nq0(eHx#nH<~Z$`l^_e1|FHdWQp2cpo;-QP{DF@@#(=WBz8b_kVxXvmq~;?F@oy` z!7f`;FtfFJkF&_LS-d%shOG6r&Inz{qq9uVSTwKQQ)^w}J>JO9vodvW@VHVwkF(5= zG8$I!xzZ5%X(D!JtuIkq7H>4a%_1I?p3==z zHja3kffqzFOqw^Lm)9(6_uvHmo@$FqiMus_l}+Bb9~Q}U`g zd9_(CUS}$fT0%$4-O9rg>!y%9awF=CyfdTm7_lJ4up*rX2VL>+fayQCvb@OKIz3~S3f(@`M>|0V5XZ{gY@eKcxotd%w=a|6)q`>&%Fq^P5bIt@X z8BYyMG@3S8m7SS4#tzIW2z>BHW@FaQ%&Oy={>#Eyqh=o1nHgqTZ%n2ik?5Q%R}C{E z5ksQbL}Vng%_@%Et=XGzM1gZ3VyF4d>k1~_f;v&R?`_P8{75T~jAct2Z5YrSw5rc4 zS9n_G6`+MQQ3s}rXSc|Re37=o(%z%Q>GA9HX6i)ZyiEYbYzRvuvWPY$#0rXyPMLU;Im$fXqt68|Ev z&`&axcST%0VCx`Ev+&v-a=WrkW^5gMc9Z<67Z>oXVeBTwV^R>fS=t5GD4ttAA(xHCVAODtG7(w8taZ&E3DL+{ zLKQW&BB@9S{wKjsU*GCkYi8huZYXf$>lKC7yJeKAFi#yW&@eW-{y;10OBHRMv4)Mt zWSUaf`OHxLt~`pLSBIo^*)pr|{1Z<@iCcL>%7H>jPW3IuBlBo*LD&N_(4a(Cz!F)X zKs_@w-T}9QF&6VH^h9ywZxXr!DvWEWhkW6_AN(`JfLv&qkZ_RjP|)A zr5f4-Nz!~%>!kV?#k~l{u=q8bWTp;4@alaYMP6LjTu|R!x3{2vZ>|QhXnXZBmRTlk zV3{4C(!bv4$;?rfS=Ve~u*25vrJudAPF|)fa{L5!7j@!{d`uSq57gt*V12v#bxyY@ zgbfW3^_Egh^ax$CQ|d6t8b-zth&N`zkBzCluE;vdO5MW;M8uc&E~43UiODE~cXLeP zeN2V~m@V`!22sePXRK95!z4AEy52ue@ACrQ=d+DIN6xAX8#C{gy2`C;CrXP=iCnJ5 zCPp?VV&fJTyCQQEC@$t)gv&FiO6c-r2czWVimrIYGM1C~YZh#qw_fQynxAL01ZdrZ zhyxj%%+}c|^+AXcN4y7dJ{O5p_an4ut9uYf%KkNmy3C<=;wA?-YL8FE(vUU8iLXaM z{(wlJ1srM{@`$XpSz=F%C@`5ztwNH5rQ6f4tORp`brhB%E>a1muNRtK!#rz#%hV#O zU1ZHy z3K6YKUJ#-Z9LiXpQE9>CEweSjc!hk*j3Uu7YeGhm_jZMR2}nampi$9;S`v>89xZP% z0*s3CfKQH=z9a%r3rLb72pU5n-=J2O(8}VGVk{&66)F@k?;sgeMD1l!d+4vERmYhw zJgM0tYtahTMHyn;A~W@xk(^nYS*`>t;+bW(;C=DTU`Ya+Q@lHPXF^kb2}n;=h+$tv zXEb}N=GraHKN?qU3a&(5S34{*tYy}nQy?kqxY1RtlavS*No=mjTN)YvT#?uCOV*7x z^Aa-bQ38xY`VfdD!YUy$q0&fFtMw@;dquXxf*+J?SS4VzG6Ze4LV@vmv5#A#oRPUQ z2Al+)^D)12+6zdWoT!y$YGtm)zR1KrGLj`C+n^^TIu4q=E^mIBvx3V)+^9z;&F{|q zQ|T0$BipULlr5D(ncw^GGuNq)i>T<9OTJvPgkSU2WWN(aoeR=faEpr%39ppPXt8@` zQBSBSUgt}+d3$bX^Y-op=U(CMYxjP0%Z@qIOUKUfl#hb`o(HSOBTA@fu-!X!%Z{z6 z-$j~V*;-~(W%XvWdabNpuc*uIs^2!rs+Gi_dB*2PXyzmGBUj?r`N);FN3L`|a-}o) zW2Y&!+#b4K30*6PZZ?PHNqz-OAv5_IW zRNHgfR9_~pA_a)TM}LvJCsdKZ^f0mfvdjnV>Ib1Ry45swD0VjTNK0hxq0v(oM-pEz zgbqO&LydUBBtgaYCM0h>zdf*%q~#=qi27sHAouev3$mF;{@#P8@vStE=J8krC5fmo zOm;-nclG&0dL=B2xw~%~=&jw$t#DXYYO~wqw_u8_?Ko%G3ZGVcxYnz2Gin+ige>n- z$B_u1Kh8h$ZPsXxT;E5xp>YYF#mq)FrE;R}b=Yiec+O>fUKeMwUn}IuUKv^wxQ(dN znjLaJOw5MJ3WF268a+?s7@4J|)E|mxON-Zscy|bb1+N7IjNK5d=!10wof9WDY^XR= zprN9+$Sb|z2iVk zeGWDg-soF<)Ae1wkA1ST3-m^`9nSsqcw0NEBO4);zD<(*~;&7EM0*TdalV-=hEndjAlx~(;Pey8RI znAZzx7Tf)!>XmY)Ce~My;rnoD)z_8a08(qgbgaGcoWauD)Gw4t+13SD_dYkX`Q`eL zYI|v%W9zHm; z`PkvHuU>ubRDXs%b!RU-`b6N_F&E&{-P1v)9AX=Nf z$p}xj0~S1I;}w`W`aX#C7_DX}4y7AiAT^7r`TcBc4UOP7-vftYzcXQLXibdV2T#G5% znBD*d0(SH{(S~_!`2wmcgoo46Ko>eU*kZxzgJxDT&-WKQ1Ha;Rqxz(W2X5zqH{+q* zqb|l8Sm^SE7CU3t#IB+QYN6thtOaVf=j@A%PmY9k7_G0&#Excun}0MVLPeN4VDkj$ zn=_*~YFt4PvZ5}IhfSAb1ar6L?#3vdxv)5FzFgd3O@wN&bV+GOm|c!AY`>DIP5Zo? z4nCa{?~+nauFj3ryw@cN`4415Y?*3~oxY_cPSudGqYWvO2KD8{k|l*fZ+r~5B?dlL z+fyQnvDW8mTS}ao*XgOvsNFoLG+=8ov5k_-7dlX=9ZDz=d{ z+T3PrbRZRyAYs+99O?omjD|UZDOJb(u=O3gJunW>1B!?hJQNRZmp4_JHcAW;0!sCE zRuG#;(de=&HdaiFH6KdTS+ir8+VT>s@=L+@3dHkvWg@39WrF!nc|vO8GR-`Y4y~3> zVO!UGT1Xp)+z>C0WTJ@};X)D*&*3!u;Kfj%AiFudX?x$DFk;y#=88hu-u&Pgy5w}s zsXKQ!=Gxu#%ozWwPcUQrBj{1}e2hMAq18Wb`VdCjeeh^=> zB(|DTis|5k@XEz{;Xn}VN-1>uSkp-Jsptlw(D-t;gzbmdCB9jWjp?QNyGr*a<0-uM z5QhyVZkVPRc?vuBq@04IikPPf1yl5-5QE52@l?VfN5Q+peKQ~!3%3Rml~#IP#gQpG zGeW&}enewMyvFHK=VNMRT&8{<%b$jF+Z`RcjjrTsk%mfXE_S1-M@g+}JCE|zyRkj`` zzcQP<9&SKU9-Fr9()|FjP1ra`moT`a%QO2S{-^oP!S0o_EoV1v03d+-PSHd(G!|5) z!a2~!nggz3EVr8zhCVya83=AsFz$$F0u6FQ9?UD#=6)=x?JrfC0yshg`F+ZMn2fZ* zxgw+B+=G(YKN9gY_;y9){n3%8f%YoKHCp z=k_K=g3vaw*Ax1$tM?A{tzp%BnI)_DfXGmaKEa|TTJ%vcU)!m9?&;|~SHvN?cGh0d z2+u!o7Nr#{+C(BGcX+a;ILYnbApbiYC=W~$VN)y+9a8!HUJv%W^jsiYO3^P8tEZ5K zGo2%(MpoEuJp$!+O#JlY#VNdxW z`ZtV^u`){-Fg^~bO9v$EN@ZDcKolB~*?oLKHc}E=*S@t>4eK@$hq^7X2fd-Ya~Wyr z`AP-PVO*1M?fEqs8a=*(lr8UryB)-57A9@Wl?;`Mxgy1{6 zCW z6BS^I2OqpwElO;GML3~;9EU641pfsvgIHcZ)Ek?0=qqIrO|+HX6WL&hBmzE9S>9xY z6Vr*8^N$D2vAWpzc$|TKr#BZb5RrcJ4@63h=24dh(Jr~XR=Cu% zOcJex!X0n~HFKp>ozN=FxavBHo%b{0jFnMcq2xhbY*)^-K-U@*oI4dyN8;&Jb3kcV zrs64OL)2|5mT>7s z?p%pZm4cll%@nXuTsRFIa!gVfx9P$&pAh9{k9IN2+KM%n&rH+Bixf|Np}DTvdXq<; z1R`pK*ARF6<|bG{$5a(O57*_Ag;>GJCbf`1{&Va}fO~ zv@HKUmr@v_5obAiiWn7^l9Ec?*Dacj-A%`IL2)x)HYnzdXITl zSaH4b;Zkff#&Zwk>`%i7n zap=~ZGrE>6A!XmIk21_Z<@>mvYiL}eb{l1E`<}`yWMuR^WK={s;ULbZ$qZ5i2cZ^S?IDKSPwBQz!fhw(_i9!C?5aDp zO6+wtGB_#kZLetqpNg($t2dgT-DJk|XSYeuZlsGw=omvr91~dWYd9s4rIrkZy>@Vr z+8UhQ#X9jb6f!$t3FiIPYzoeuAhCcoICmz@X6I1UxoJ_WDiW8K&cWZM<$1xme?@NR z%abXK?@`RW;W2+yisK}S2g;oyrbRx8n0Nx>sP!hEeOIDJGPdR|vqK4+{SIEefULRS zG6(0v*Q?^Z^d@L;x8ZEm5dKGEYS>^gM94QR#SL9J-iv+TrpavG_T$1(9#XM!a?KU_3&mEw zJ*i-LqloNso5k)R9q5Adn>hx>1%tZIR9kdnHyW<#0TKdCE4*1A zXziU^?R|+0`!Cck&~EtKiqT!y`LkBEPCjha#!R2EeSsslAj8h1NZk2VsB9=y zF?egqpCA*%Ho+SJCz(NNKvMY+c8w7=+yeJ0h>EBtmIl7lNQY5Cr?b#1v|DL94ST7U zJyKmsf5?kH(msz`h|SAH*_Aw54_!)-IS>Nr0#c?tu$OCM3D3aKGjW9-f%_6rfh)@_ z;c6{LGROc-Zm=g?V>gKWY{+EUWylz;u$!)jWk?bYWj*loF(+kL2|qZ5=$XMNY2)@M zk*SjJjhFoZnc@(@QMyK^V5F#JoMd6DC2X6p1^+w?S5!+d!FZ~cajK;=t(JCV!fWXY zdAsO(ScW*tqi2_WQg))2D4J)6S~__xgB39Q&%(guDC^7}5zI->gQwxItqi{9LpH8g zsn&t}^g%?2i)$oWyUv`VH=H~of+l*QIe^~gx;czDbA_#}m>J^OGs{W6RRp-*kA+ip^#8vCJ`z~$ad=BF$h)=Y(8~x7J^*}wx2pUJ2gJ`Q`C>l zlv_$L4m5orMxZ)a$uUFX??^D*4D|B35+`!%&mpG^h~=31g*eC6FY$ZafGvO&3&FF< z-0#XE3FN!d<5V4`hxjVeQ$pAVK@&~Tgwtpc)_3aLleoxNq(hR+lz&WhMWSMKInGtU z1KL_$5w93sX4QuU)3D$bw$;2#mg z2|>7p#V`%w7#2iwE$QOn#OB#h`5Uf?f-?tb3%cUo6J+CB+iXT@m;>Ja7LXs>3{h~% z75RiZiW|YeLUD?v-;B(vEBf2afqm^t6IS%pnCrdBC-7Op3a6PCT{P7{0XGueY{3mW z(J2S8f;PhpggRnNy-nFJO>9$kNSCxJf0wRmQ{Iz)*rvQMUDu}Ulyr$7;x@V#lk*`m z81NQ?kl^u36MYmJRk^@vhRl--KYlbpu8gMYrgIt5%N|!`eVk_jvC9>?joK*Em`lHe z?iHt&VT5!s-5_O1KFZoK_`zFdti1Xv*{0xKGHuGc62nQMHuPle!3|Zc_mxSvlEfyG z4tVVt7%)%lqFPN1x9A6KD)CKKt_2cNn~1hu_^})7x=tF1m1pLJt2+*78 zK>rL^nz9D!{Y@)|q{AzQ?So&rY>S`&Gr`53Du{iJyo@g4|((!nC* zq=u$);z9L;*vopS0P6hE(*rnV0p2>uF9tC%>G@|;{(?Xffm?7X zBud7yL{ajv04chiB~wb#ztPl1$!{{fLuw0gPRHoJRg8DvSFU7=iKocYw)zDcpIGU) z!~7*i%E0xjU*@r{O}1OlYgotFRzJsMdA{9gB(IAe3)oh_%41=5Lf2Z;y4){u)sZ^f zl>S)81P7}k21mR$MXewVOG3j6`XMxJ$c*}3111BJHj=;!L#}4YdD7B{dE$yhL4zWg z^Sw(*l6jDu!@#PBQchc-)L_M6Drhi0s4s>hA!K5DAUmvaf|^6#2q$PR%NCvmO;IX| zaDluq$GD*->TKf%GJD~9SW>2&Ft`*M_mk)z{`$uK6uO81yKz5_?%{uK+)qaxaInnV zZ!v>AcB>`b9f#GL=gi3n=krIwP0yLlewgPFT$>7BQJ6(lE{V`2tg0Mk3e2mj_{t29 zO-DK5Itm0hA+jwtdsLyLfxfX|lc2TMGAF*+jW@8b&+)XWs~)z`k&?^2|v5a%1dUJZ+*uidd*#IiEh71{kY zV#0NMJAMO$JU4yyh_`^0;=d*#b|zatGEjYm6B#FmR5*NkQlb1p1hI` zxS+MX0H-3%yuzv48d3z8hZg7&$0Z|*`eEA66nK zl9kpiioPaMok;KC>nR$%uN!Rv+Z9q6i9|!x;2~--niz+fUgWMv3VMgo#CUbZ5SsV_ zq`+^rC8ec+)3_p4IFA5>Rt4`vQ>Elu|gP7`chsa%!L@ zOofd^(Ah}=!gzvsvmu!TETVVy{biz+WDd0Em;!iZC5fUa$FOgT{2-rmx<=3FOEOn1 za0KNbN$X?KL;!6c2uG6F=kU^Sg2Q zX_|nSCShl|^yW}2UVMU!Mb(F}-+f)!N;h6xv;XqOxwx7GFMzvB^BTRpaWk;=%$Zqw zR^w&-c2cOMr}1)rIcCHGh~dZ0%g2U%{h^Y+P|4AleZ`$8ct^xo;}vSjQ6A9}^1(wp z6+%m3;4+-3#sL{u!&_XD#9rK!c(=mVI(^FIamd0<$g7-lX2q?Kc4Di>L3*zr1!1SUsx8sJt+B32!coPdmDbS zfY#uZK3<&G!kA<6!|%QLh1sj-9_+xSa^c#yci6y)a)?wCp5P`7i2ugMAHYtJUNxW8 z52nDS)QqN$Pp}PHoK|=%n$la*gjO`ATHy|FOi@a@1q-6Rpbe}F5Zp*TCxTc3N`Qpl zUULS~La65S`5@siyJF}0bE*PUxr7(a#9hce9Va2rVvS70)!J#42i*4TD@s7xgAjB; z+=C|nRgHKF({ymRICwZMK_-S6u?z9`2psw$laXziRU|kAX8FbuJhpFWSZoMlT<{58 z067CxU{9lhGl&XKpN|0i)}qg0?Ww7Umm69lwzpJV8S@l|JM0ZnyP>){y!OCIclc1M zf3SKYdneCcY@Ou z34`Z9o4V0Xnb;2a%`tQ?iJce?IG`cR(@aUek?IsZN3sA0H@)j*{>$`PWwUH2>xQn} z()xof8vSSx`A0PD#_MLe*2NcD6!PQcyLrCuaQ>-E$`W;_YV(o;Qgksi7MKY{OSZs$ z@5vT2WQKf4W3#rD9EBQ&Te9wHes{+~M3eR+?RFFO40-yk>=zj=Hl@kU<{_lWD~8>4hmVM|Gm zXTS{(nx4`Ug{MuBQSl;$TZPJtavL7QyJ}Ie@t}!i7GpmS znsI+aJznt(MS)TVH@%Oc)5i+U>hT0K$b|0EYL@E0U|1znxlu#=VQJ`rr6m4icr(ox zJEkHV5I?d@6Vk9=5Y1DD?Z}Wbc?>f)zAu|Z^$-k!8B(CaRqEOpr*1kDzwC`mNoU1z%02V#`q zWS9?_OT%g(o4TcBhz}%=-q02j#HU3K+wf9kvQR+gGHR9P+a%b7;=q0=3jbxQa7ZK$ zY*^#rlc|RoWU*^W(_DLdt*hZVC>zK<--n}2`Chvp@!w3v*UC_nOrA;~*<`{+c>gsv zUBuk)OeHY{BZGH^O;u1#6w4Eo0j4uv*9sD&t_jtwb%B`Hy5MH%4u74>f_7gi$@4r3 zMdej3naQhagueK1Lti>&DCI@74Q2lo7CYM_-2K(rlm!b3*=SKto0BGjPVK3|7nKl! zA-ugBY((VM1{J0Ti~v?j&}b?<(zcNuLbSJAoDB=`hF5g6Q9dasd}f1LP&Mw+4N1cb z=H{rO+-6Kc_(JKuFs$Dvnv)C?3p+Os_0bBMWVT5bbu{GbicJ#RB~YH=-P=WCC{DWt zy?xN2KwMpE%qUU*52_c}{|yQ>D&O&cr0SQQRCT;vs{7wmeF7@1Y{46;R2j#}3+14< zTTIm9wchuwS|`_{6kFjm=N~DkDmax!hVw6o_*hP6P!?kJ+MLA=`e@@JCZrezK?eG~ zH0WJlEI_x@C5RBjigIu=**l1FrnhDB`EKWeUtc}F!4A7?R@zyC8B=V(U?7q*;74GU z8Z2Zr7|d?15=(ko9;H}8dw3o_Sa4`G^S#~WlS?i6zN5>=i|mF4ixmnSIGO)uEc@Ir z2-%+$aS{rDfhj{C4Yk-DMD5>^87!ArjCMeOvr&C$n%jmod-dk5O}cphBL(dh=jRvrweA6Q?BeP%_&-3c}=n? z-=)&78zFYW`<+Yx!Ahs*A4}^kEweBtAiM2Oo|g!=YyJsh`G?H{Zk^?JSL6nmuK9cR zNP*MM)xj=T8cQarB3U+S4ADp*zabihL9E`yKhXcNTf}67xU?9n_fWZ)`hRfQJbE0g zv}<_V6R+e9@c^EnXL1ose~cMO`>Q-T$OT8(#lZ2Y*p~&l9lN9De>D0%l$|;&Z*QgA&#Ut7RQyT5j`u}@%Z5&pyM(g6*9&swbgObPc>! zk?}X_8AD_savQ_Rjf$NtC07N*M+rMuKSdv*Ey8CB_bPc$a(l%Px&zA@6hQi+JM=K! zQAd+Msn|>r;v({2kjfvudTLtatDE2usWvI;ZR&yQEZ9JpM)-EuvWxk-_Y2Wac%tFY zmJ%qbv{9;oaK@*>C8_%lAMjQr3Ro-b3z<+Oh~tocrIe!`E;(&#B&T&1PCwIBfT5ALlm(Z1iKj8nphK}VI0ZV4a}uHf ztH)7jrg1<2+ZjXUz%=7)4$nK_J5>&11)z}pnr3GJM2yuGPNG^(qaYQ?9U>>%g~v^@ z*4weyC?>GM;f#7gP(rI8qNVxw8=WLCWx~%D3vuFG(h$uY-qJEO;@VUrXe)A+#F~Es!!gIt0%*76ohh$fI13zi&SLYns-#!YCq?~GOeT^$9`rM zCecPF?@~VmUQq#h#`)Xa;ZK}6XTx__pc(aOMSU?h+(7Uah2gOjEdZJ4s8-Y+^nRX& zwN>?gOzY}Otgm=)B6tGdr;(y}VV4Zt1WP%uCErK(c36LLsE>tQKQd{TK+5j z8Ljq#&f!nMmp9WBL&ZlYKbY!dVMcwZ$nZqmC;uz4@j+bKbo_rihf zD6OLFVS?b??GQHgP`5*<8`e#uZio0X;QzwN8(s-t3QiA$P#5Ji9j~Q-DOHK+Sh&L) ztvyIN9vt4r0r>Ae3)$QKd3Ke?jQ)*aSl>MDK3CyMM% z&oJVt#%b$JdY*+%C*7iKa3Z`mD~&01fgQoSuN&OxAX$VQlFo@{nPkHp_< zh@8u>#WBU>TImn;X#*0Cxk=8WxhX*o<_Bc)7j_bC-VlWgDe$jOBJ+QO4I?|Uns3C9 zo(ZTYmY>Rm zp9(8)i0C3jqCtpQ4Q0z42Kxa_YJ9cf?Msancs4{zVO23KZ+32fgP3Pn;mE3@E54%7 zI#MH~udkvt>(ELmIs}6=iR;Lk*8V~AIO>PT(GT5p2qer;cL)Wgabp#iW!c7u%XZee|blO8FeuE@Ke zbKZdMhU|u-lft$~co>X($>?iA=Q!R(!vbSk;0*l2dLI~zUlPuV`KM1QQO1oVR*R8a zmuAHhbo;GRT}Kf6TlL)VMY3S(!DNNHsY1qL0u}59*!=k7hAm|mH;42aM2Odyc>8Gs z^iMcPBnxY`!`tV_ut5P{jM<503F;ia8lZbyiyQ1;RCl>dw1Gjn2l3W9<{#${kAZPg z>`lp#ZjCJyI#!^cYY5-Wa*p-9=C^J#VYus?=i|8UpntkM>`A2*k3L4ba;mX_Ebsk@I~n{Nco5G2->=zjsPaB6Hiqq|6A1|VYUMPt$hw} zf8cZ+3{FPA8mm04>QaZ0cM%1L1Ym;Q52Hj6?cVi}hpmdk{zW|wRvL zXb*Q%8gz%};AGIli0SK*c4aTrnL#Et_j(dE5Fb+G&}Px4hO@CqEHZM3ulV;_JblV6 z_&$E6`Mf|8_C3w8`3{jx3W9fsuQ_FYlmIc$OIGc&Q|629EtPgT4D$hA=c>ER&^dXU z*eesT2_&7StGnzboovD;dJQnu!7yGT8?u}~cn_r@GeXtI{=_u@P1L*n$i|?e*{2w` zc&K7X{lKxye;#RCbcDw{Q~(K&di9tf8M5Qi`*Fd5a>Ue0-Qne_bOm7Am+!^)*$`YTAu<-gU)loa=d|j z==+s6%P#(6s#&x}&r{HPDFD*?a9mpmanVE_}wIB5-b=|qi4EQRY2 zd^uv5CaW2nDN^Aa0r{pP1y@_hn{rqhDF#adJYR^y=;zoJjhs+iQlk5KT<%S5W~d>v`=AA&^z z%ZVRCEmZJ9qg>RC{J`U}8Mwk!OKY^A5C+A#$(x|VZc~@(r7Uzd%wlngD@_D^id$LGgo_7vuS$@NIE?v4OwDZjrm# zs79<1&b9Q4Bs2{*x#)fL$$!zg7mCiMouY50{Wtx)?Nt5yU3K{9cXlx>y{G76uCQ{K z2+m&MsxD>#9A~iC-zP82c6fWBH9o{J^xZ~>#mdOEroW?#cYPna9vt4`jgvvFNA-21 zNBNFwzr#D|#}Qsw@9A-JE{Hf}S&BU*tcGH~(w;O}TiW3CL5whR<0b4$8zj*xH=TrT zxMc*NMPc)0@C(VngJHXcZ@PrIC{mDEs=fWD%UJ!=M9Eh%nZgC>GoJ={_!E#)U%T=F zR0}c_!G{E^CAnb0Zc-@2sH6D5hb!zBE{0v1Y)`ne;kn&E8CMWF7sFJ?4T_m{B|{j6 z^XKE(6x^8$=DRu9c?jRu1#=O(b2+I3Zr#L>X5ov_2;n#ML9~YL_*^!$e-XM6-~UBu zn^&Wwf2?elJ6tqBDX;Q480k0&7&>KN!*%#vF;);TO>D^12P~jT;8PWpG=QYOQzzxT z;~IPk`4mYpcJ6RVG96r4VSmVg-6Hu&jzL{`D0S-&tEroYh4?sW0;d!!G&4TBH(R3x zMl|ged}cP;&ZqEgUZWQp&cnxZjT_!NW6v?Y`%ox#UlBgEZNzPOUi6j-xsLlN;A2ne ztWobLok6?9FQ%%h3KuIqn_g%P)8Z6&_}Fg(gbi18?g<=2W(jB9JXU1Nc8L_WwxZbwMWS2O+9O zPBdfdUHb8N{JZTC8%L@orrcWPuG%Mw`<( zG!(o~F~N`4xWj=Y1k;_9!t6#ER!Sl#)EvtjcA7vvaJ!)$MlTH8FfC`Y%Bz-Ry1BZS z6_CnZF<9>%sxLu`{@QcB>rD^s42-~cns$9!YF{=o4{q(dK3!(vA+~{&6k z@cZq7J+Y<1`&_1ANhVuwO3&%lhu#g~OH$)v_$n4pp7Clhky&c3+jm+0z6<-;oAiwK zQbs|ILRv1bZ@EyT?3T4?MVY_)Tiq@kluVPUab8&TlZ%8(Y#Wf9608TbVaK=AaLN|$ zB+&^twgZO@oG6A7t=mlR14Tc;dHqEe2!I<**C74#qppF;BIXDY6TTb>_RtBrF0)qT zitfV7D{>m7oZzwTJF1p+$T4<#or3s_(5E0#qZv}un1nJ@A zT=7EDtHBncGX4B1eK%9`DtN6vQRN}YhYdN1WY|6#)ICMf?eGnv*FvX}F5da$9sJf) zS|P~UWGIlW7Gcx%s8Ad8J4!q77LC@@9oXrV%HfEDqrO>zYoMH~-Yg6cW#mfB9<4+O zd___rG%3Vm?53aeICd^~!Hu24lMM^kr&=bQWic0E=PWxgyk-y`MuSP`x8lN%mxt>8 zL|q5h8A=}OjO6%wPH#=?Frnh5rhF!u{;1FO^n$(e^Sz>f?Wz8Cio|?IV-|zn2lkEg%BWauy7-|LrNi79^xZT?H|D>VDYgt|K-;$Pi< zQ%n8+>d)~7M@+skp}}N83j$iIzsO+u72Sb%>YDStJ*ADqr=qC5v5dLHuVR%Hf&lj< z3)MXCq@@gkQOb#0x2cMx?(jd5WSB5e?r44caxYJk^4H=!fox-X%J?6Ah6}wVPJU!p_;-gMa0=b`@ zpcc>g=c|xr1e^kO0fndeUzFw%BMsO7sT^+B!k86+{ZPDGRK0%}9dVsZuTjCK2u>uw z>sWr+APv1^-*wQgH6=tB6sJ4seXH^O6Bw;1OBW^{{vKCV1ksQwDEU4jZYVs9LiL^6 zhGbk)Lxey9A={8jMAVZN>H;ENDv!7?9M3B3C)-SF2I>yfHP`R0Z(RUeN-o}!J%0)8 zxOhFzMi(=l&^KS6qn!yz)y>pch!+i0xDTeCyz`qy_W#Yid5Waz=IY=vxqK9rH-^eX z`S^rz?{oAZJ5>RCG`s?t|N9l7yiXgRH{S8Hae`64^sU0O{@)dL#_+<@SIJBBh0crSlPgs`#9y2noVIEF9iEh806Oj4FXWTR9iEa3B6YFhHSsQq zSPof({CK}VH&UZ3CWKehhurWHwJ?9Z1j*ii6y%JjM!HnJp##w*;-|Ry>E7~5-0nLh zLBV#%vhjCPEE9i6#qgz0Ei*=n_ZxIbiNyFl(jn=n6p=oZ41sM6EH+ z#~!g(1Q`If2?${HQsCrM?2wMYQIjXF^J8aV;lg&1h$qad*k3i?Ba8?56bw?rsaB%5 zr@-A$Dg8TSR}3M&QNq`svy0O(_n1;-T}4Mdl6ofW)b8+8$wyEoo=e_9 z^Y7EjdSKp8K0^5JKkdLxC-&XN@s8R%yI4eoF}HE5~H4329Q9^AA8@-;e+zy9wf?1t&0%MKi*f&{Zu z{FuZUL9Hlt*g_+xWWDPQxq)OlBKGd;mW&L3Di3DPnvogQ^Z2YtH^fwuAT((?mg58+ z>I6rE`&T>Sa32H*eqby~8&kYljD)If(BFB@lEn0#LrPwF#*ik*2+uInLzwCMFvD0& zc3a`aP({};Vd5`*A&5(!f(0~Oi^_pLfCVJC1t@Ch$q%S2{^=q`$J>X`tp#xtGW(xB5@gm7*OQ^~T8L~GjF zy&5xHIHz+v-*75Ehnl9njizaDceo4_y?BTr(%$}O@}Xhco1m`+;=A-159l$;A&SuE zYKpsn5;H-G^WX#qN~91_8L>4~`_#-OZHDMvft<6TX_FlQSJ=_QOEdYmE%@ij@hxFf z0A5LyH#$Pax&voM(|o+KARm+)fP{2J^&TPb6>@-?O%5=>h`s`XO-mtGD3pi9I`%4w!TJII zWzF$^p6`u7P5mbtMB4-O=bjKP6)6m}?o!A?byaDU^%H$2!d$LQqA}&-fkVi5r92ZfryD7G|+w@-; ziMFO1c=9s&oze*f^aA%>U6B1kGY6>Wg?45tlH7mRW6lQP(ds0}}0Oq>p{kAjiP|1*?C zssdO#43gk8IBOo8j;}fk`$89N3`Y&6topugmQn3JN`JcW2QJzf<^RC3A`+rb5g+a0 zqNkPDpIG8a3JOec|3;q?lL+i(o9+httrdFB6maIXG9 zkBXO67$LLLLa491>D4AfP`KQt0N$E82rs5F_-+90ZMwsAL3#S?HS{`M{r|A{9^g?` zUEA<(=S)eNnG`Zf5QY+Z@5Rspp(P{`Is%4d0)aGADAH6c2%;#UG^Hy7B1lI?iYS60 zh#-muMVf%1Sdb$Bz4w_pN%Yaz=X&1%`=0N*GO#B1tlihHYoEQ>VdkDsJ?w(0e2tYn zxi14V6248C$J$**{ip||zHOiRjc z{&*?UC;J7(`IWm;xHo`Y?!cQja5O?mL>hh^)cUiDA5PI)#{W2GzpNx_05YI+Fpf}c zBxsa)03^5Sdfb@0n_|(`dJpEW1@c7=Ege__%p$&|78NI@8MSeB=Td)d*uYWA8meQd zeSb{QW`0)}N8-z`%n;`i?5LAl?4ZVDX%RZ$j4n*%=P8x?#_+={78;G$p#6d z2_WYGrOMm6tvFSSOhfHMmP}(T`;S}5&bNybu_F<(l(Ss*7q?_1pw0!)yM^eItY=;Q4W^-j9I`~ zEBe>K(yCqw{nD5kF7@+?8xw)No>JIM4qCrVsXq~C*MBOgp$y@)?)&4!3RA$iHpX{^ z&RFZi(O*k{QTC#xrWLijg(-6JV{9tu*m_KsTXmOlidHc(j)Hk5K{Br>Ciae|$HPW0 z-h_Dt->7>W!;tTO`R?wR3ky<|Je=w*8pkUOut_8DoN5^0mHS0?D;!HC7cRc}oGMEhHA9HpZ zCk3I|NlQW{7qR~+10^JeyN+sGCP2>Jcwv=H`ajOzlE2EHZ)sU!TTHR^Dr`$C`D1YL zkKhYSpc`U<-J;e)cemabyzPCtCGfcEM?LPE0kcJDcG#%EBOAF3b0K-#J2*}Ip7cA{ z^s6qP+}%1dxY%*M=_ofQ&{48*yl213RNMD=w`PcH8y zqGGRx3-(0rZViRYqs1=%t|A{|$u*UFeQxYC^7>j8Hf3<^G>O{NDQ#n?O7u3FQYrQ! zi5?|WUjEET9`H3pYuU*V9<-cDsziLVU6aIp~xR_rm|C@^WHA=?wc`?6cNxr6=`IHMw zQ*Mom`4vm@dlmC5m*f`~^W|#MjAwc=Ke8l$c`?6~|Lw*6jwSuyDdvwZ$T5_bKdz+zrN#VG`9E9CZ&lKNMVlFaDgSB3 z{Fsvdrxo){)z_9{eyMhQpqSsZWIT6^`OQo6o5{DosK?FQBTDiUi}|J6Lsl{0>GwY) za(Uz%k;fu0Me?ZVsMgVqqq;|>MNNpB9knKEZ`7%%>rnyGRiZb#54z8|Z@EJwYe&XK z4vK8;PH~TNPj#2rL&f%q+&4euI}oW(1Q<%3y!QPp=GEtC$w>oB-1H3n?hw;*Mulxz zPQQ^UJW7zy3~)USOGM~*zN5RoVX%v3EN%auXWavvHFg&`rLfySWCvC%wNLtDpu+Kc~-Vlhh&_cNZaBsab*Cc&|nA^Ou-jU?m2j za8|g)GdX!yxcGS-RtBp~?`9&e6|;OI2ntgNf=i^b!SrLMve{&*6UkePe^%JGz4(W} zDEo?8zEqz2Qz}?X_-AZ?un$a@kzcu|FBjvdgH#q#OSooL@{UV+v=8(i=zY*Z&>_%=prfE;pyQxVK%at6fxZBJ1^OCv26Ps5 z9&{0O33LT?74!q>I_PK6ub|&Rw?KD5cR^G;VdEeTWC7Vg0iYm|1LOjQg2F+OpbDVM zpz5HypvIt9pjc2lP#h>8)D@HfN&@u)^#Kh44F;uxMu2iag`fvOlR;BK(?Cyxo&n7T z%?B+8Ed#v_S_^s|L~z-G5l(zfRW{MG&;P0fa&kxJjxQiNx!Jiz1zyq?{~D4;q%mni znv!OuIcY&!k_MzMsjb|4l76HU=|y^z0i+Mq#Nl@ z5=d)OS%qp#29o|Hj`SrRNDq=o>X3S*zRyLb_}Bj&aH~tgkr$WBLFnK3{p(o%xl5;l zG}2*IN*?K*I*h~>=4X+Flo1()Bqc93%}e4^^9mA1k@$urz7dIUOyZl6_@*Sj8HsOB z;#-jTmT+nSf_uY8Bqc3B3%)z$6ngVXFBMI4eql-)X`fX{y5weiN%HVMd2mk$=$J#g z<`j^Q-Yn9iC>z1x(lK{z4oUDL`CggBM-&nglV*!4vJGl5E@qr3rf4vJ*hyY`W`1l; znkQX-8JMJxi;YRQrH_~2*$QV%OmO(3_!Hf*QR5~}n>BCIvO(Qgt8MgHZ+_wUqRia9 zL4$)xYC(F&@DU?NWwow;Ke_LLacN_QH4(uP-w?mJ_ zd)u`AUrhgR@)z`1ZuS4l;os-eV8=bRTDEF^Z)}^k?b>&U>)3BVe0kJH=dMXTd!=;h zlH5I!7;|(@l5B4P!Wkx2ft?Z)`{UEVmnQmdYGw|)us2(F z%<*J1 z!u=PnGNzKQNqOEJSuIAweR5KVWqCb?h#q`To~*A7WJyI-+G~8PH}!tuyXUKU2zZ2bHyzuhylvSjnh%1s;PO;>{W zE3du0MFrApPHs+J@3_o@LfHtU-c(O9R z7_(8;fAE%Els_EVQ>|&3%QWVv!BbC%YU^fp@qRNQq|WPYjaF8IzioX@~*R z8(rirC?vh}ktx|!vU1U+QauHEsrdz7RdO6#Rc&9EC;_=b4dNR@s$Y~NbLkgXL2eOh z-6yM|=s+^6RvsCwpiS)XF{$}=+vH`}%gC%3H=-zKR6*Aq*-T~Rre9g-!<5j9n?|wg zzY|lZacN#}I*KHtlzA#Bm5_`IrIp3a87^IVc*hmS=ci_)eJZz@bWdi1ufeGD8)KU6 z_C^I^L`19i&xkSU^)NrCr51Wpvt%b4uezL_WGI>3XD12mdvqo}5>k@e_wGXOiz&c= z`KMm-A2nK!@TTU~YuIcUF@ayt`uAsuvJhnwD3d^$1j-~(CV?^ulu4jW0%Z~?lR%jS z$|O)Gfiek{NuW#uWfCZpK$!%}Bv2-SG6|GPpiBZ~5-5{EnFPutP$q#g36x2oOaf&R zD3d^$1j-~(CV?^ulu4jW0%Z~?lR%jS$|O)Gfiek{NuW#uWfCZpK$!%}Bv2-SG6|GP zpiBZ~5-5{EnFPutP$q#g36x2oOaf&RD3d^$1j-~(CV?^ulu4jW0%Z~?lR%jS$|O)G zf&X<0q^B09)*qFdSui4Va=pB?aYQi+VcM`BOq3FvO1wPDFK%bOD$lLceVz+fs*J|29T?lxpG5mrU}6!>kVrueLY z!kA}Hfv0e6u1A>_EvRIRK_B>sEjL!iIy5c|&9{Rz_o+-^=D}2{GA`?j5SA`s&@~q} zKVfgWMok+&D#tZSv1>PORI~2T__(BAof105_g1+;+|qz)A!@*$3nn zd0nRu^n^`MF=ovO1Enb?{%=bVN!!olB3$UpLxw3%h$a(p>!(qnLGZrRa5fCv- zQ^S=!WARZ1iHE6Sm6|FH?7X7?NF$wSxX21j{34BaT5g^wr<=oo7lZM>9H`OZ8uUGkvkSPgkdfiwqey@qhdU{`RU$#Pg+ra zeol|aFt=_uIH>+s#HPX$ zThiDZn4)bk4vyK`=|$OwnbEPbSRL`JBgW5Gp19nitaP)tB_?+4lbDR&g?zwhc%G+5 zOj=A@O;0SWhs$#KTs>(RTanv(|4x&#*^qEAuN**z{#)T<(h|BR!t$!JUT%{aLND}; zi5XW9R?SnTeO=iuG15z?!ra2tEO=H1U|UJ+=R}&CF3Iuv1WVd|HB7+TVj46VSL}eH z1z}|eM5M4MTb#5sF8dcr!>MCF%pT_>XndY8GBCTO=A^?abjc*ZEtN!EZqAr`DiJw3 zNK3FPc^fic;wOfKqO>&3Oc_O4L>ZUPNzF2Bb(0aP`RQX*(RH#@voeZu(h4yzkYPmy z<3082VXQ99AMeRRmE|LxVGDSK$`wIB@WOU8%;x$-`3(evHEg^G#=f&MVdYjvmjgq% z=iiY`X zq(mj978d4b4l6?9h2!(QBm>>B2x69Fns0JOGR3W=4wgA`(I7jWTqyX~KCs)IpXPR)Sid2cSylY^=vss3MvaqbbYcMfmTsgBHidXX{4nRRLeLO;lsbFyr~ zWAjt<(AAY~?}mv|9VpRQ4LkVKfI43J;cr9v`KjaK&o{3VEN1i3b6{uQ7~;^ta#ZE3 z0lh>IS3{{>^ zmHsgEegjrQZaVUpiO`-(~R65(p#oeujTy30v}K*HWBzckkkNC}Tp?(bmGkwb0;l znu}GaS*M2ls6U!kGa@3me~_FumV`Z%9+d{6NNeL z4u`{P4-3=7LIQ%r!dzj2VPSrEQo02qJCwvFB__A;iLD~6#640?%kZ@FWMH#Njq>X4 zFVHhFW?|1suFvp361hvx62n!i75{!XlE zWG%((EQzM$tCRF@0ri(aN^5`wG8gM4kkdl8j4S~3hy*g|V-iSNPm=(z$Ruw{-~gSG zz==1QS!BvCyv*z#2|`F!woZaj&^r=@fxeI+9Q30E)bo$^aWBrwY=NZ_p-HK?=kGd@MQD$T;?i z1b87hQ9yR0pCt#~h1`&!mLJpxsH)+s4yd{Wb^V|oKp)Ae59%+0e2bI<4FM)eP9xA> z2^xbwm!JvgCkdK@Cds;LMs|=D5;O;WCP52O8(DiTK`%~&py?8H0J&s+#*sQKL4uB;0TOfqp@xYTkH41y@bWoA z`pG`lMRFwQ3UY+ts~hOH1l>WuOOOCktss%qWB1Bd(1X-6KoY6T;$?G4CN){I1U*5o z%68EUv`K;#&=(Q->J6$d8%Q5gn_ZEhFDanCWJ~D>dPsu)phqMa0D4`5fuPM23<6!3 z;66~YY*vHG*Ys5hhJemWFckEtY-sm`HcOBSIxN93P`+$>X`opWq=TqzdR|bn1R0?7 z5)21DFPq*7P>5`LnV>2Xj0ClnU=(Pm1X*MQohm^#Xr}}@qz02OohP}VRaNknN7mDc zRRKnW-jN_5bS?&81)!bP@Ks2vvxw>dMWh;&@3bdl$Z2|4g0bW)`j~9X=RFt z3uJ@@GeMgrcnWk%f~P^u#C2LoJB3Fe}8SjbpD z?>V%W2k2PtejY98qy+QOrX~x3`DkSobbtkDck->j?uBTHA$U=*dlA~Ed}FWs1+>=7 z65zeKM6&@b#;Y3BBv^trUe^w=lq3@F09b~8P(^~}=oybnumXK$wFE2Cdk#zR68ckr zC&0_-VY?+*g*QD`bpgDBUYIYzYV^w)60AW_-6X+U^xcyZyh@H@j9x6<>&OwZM1t4I zhomI~SWga?H4y(ZK+3lf5L} z0kDhgA?Z$l-DEd8?gH3Dc9BOy0QQoP$u$YyA)kOBXnrx@vN$?HXMu%~LGh{1$QUH8Q-lk_XfU{&L?PCErN4C%iE5Ld37L_lb zc3&WGQu#h<_eHXq9+lubvWYSqz$NkqZ6?8GvV-PHaD|+sjBK>Hzb9vDo&;CPw={$S zTq9@bT?u|5-_Wfb;76qq^FjdblBP_) z4cbj;6DD8S?54Cas~Zl$P!la8061;Po{0t!v;kWsfkq!^jI6i0b@~_^E`fzkV{0U^ zQa4_Ei&x;<0CWlLG?wgQ00Hy?ERXOm$Uthxq5&WX?I1>iU@GABlASo{d(=ucIEa(J z4@UqOJxHArgwQy44<3GzP}+%Ak|2zBW-$_kQw&1n0VgR3Fi3(3fT0q&0n#Lh1Q;$s z6u>A6q5-lcC=W1N0=ZNylAr>>SP3cujF-RzFhPP!0FxxB><3l+pen#*=@f(FOp%}( zI1fos9pF(3Y5+VTK}~>}64U~CR)X39b0nxkKcit3pe{J&7(hLMC<*EVRFI$nKxGLU z0=&)v8UbvQpfSMb5;Ot$Qi7%crzL0x@Qnn`0eT65765Nb&=O#$1g!uLNzfX=t^wQ& z5FkM;$`vR<8@iJOOVAchE;(7fNy`fZrvE2apOH>x{OsPBw`y zh)_q>*-g-uMyVAuI8laEB8?{3WGItk`Z1k)VA&8T<4FRrN|1~;ref|2aKi|0CpRVN ziEP}KpqD>~DgGSx_UF(HZboP((Fd8AOE!C76P&!dFlo^j1vzeBe`rk;*^kV`q(o#jv zKsBkol#E&V8Aa?Q|r}#&87^sN7?KQ+FygK7c2vm&}lw z!ZezWr5V8EG>uGT0FTjOq>I!Y9;K<|pahT5`!N#%Or=9fYY85vL&z8j9-@QEWCZWHixEY}Ys$qv9`1dkYD1hqSVF0RkhXbey zs2qUm-4Ot4NHJ4)vgKs0KT$PPo5P@)gqtnHh7ne1CZ|O36=X-L;4&L(gfu;yAkv== z8C+!}3LG`EMFS`ym}NIZNuZ|M^6;Yu*n0rfXj6fWH>6q-5h`hT*h+F)=BE-1G$J&e zOwVR;GeR>7Gf|l_l^>baKNm+$c9pTAuM#ySW^!aa%8wag7511>O;y=TM(vEHFB+8+ zgLsq>WIQU-YX34(m6i-;dj509{)wN`!aR+htA?-Y5T*)l0@LYl1SQL*1YU#9Gn!vb z_Oj9Hs$l|ErCdc$+f`HcuYTLC^H@t$a4Kz zbZY#OEnJC3Hf$vpSr;m+vJaLPuNjXSvk6Qmvs|*sD$g>jD#8~3d4wv5|1@Kzi!5`f zigO?JiO$TbEQRuH7RPLUrXLfSPNruQv}CJ{)-skpMlQ&aO_p8txK?QMsynm>P?EnF zK#lyd0ICYw04RyI1yChzhe}bRll`J}PchRnQ?r& zw1?+}j~bvGn`40POm15u zR05l2fJ8Rk06m!8+JsXQd)xrYOm2vR(-Q-c0=?LL1EjDe2I$RRFhCzxWPrZxc?0xg z&l#XU8)tw4s5tq-;_U$g{MRnt?7nhY=F)l4CNTAPWM5z;0XWRQG@8VRXg_LfIRc=j z128~gMaLg=Qx6^MtcGr)o4EfP>tjyfNG+jvTw+bzoYq?p+5Bo z|BRg>zeuN3;Haj43_vxlv4~l|0|AQOlp_F91|2zVt`9%Rg9s1t*pIX@5MX zA2XC0j~VmV{&+q|C{-L2?80jKSJ{cafge>s8KFwT3}r^>gp(RTWGPf1Jmb%X$ua$y zp~g^O?R<;6P%)bvDIZl*DIXP~>Br=le$KJeMiVu)fWKMlAN6^*oMktV1a|N)vfqp( z#?qTcNx#GRqw;eJKvhZ!KevpEyX+sM#?o6xs4MK2QI+2VsNixy`(yBblEh78gp^6B zN|6~;t?mlDX{7!=fNC~o5&`VCQHs9-B}Sw>hQ#8T1-oD9=AD_<09}~f09{$I0lG2c zfwbP8$$dw7PGE9x5+IR<8lVT0dz0WKF{c5NncUF?rzdk6pcj)Hkl>^+xu*!wo5dKQ z4@0MroW4wMTLScBaw8LG~(j7Z$z{1=Z%M!7H|RYEsfV<$hbW=d7H|LE@^ z*HO8uPJd#}sjB6l0aQo(g|(on{ru|Jt;|qnJOQjFwBfaOQld`fhA1Q!&*BWwnRPTk z7i?rIr>?A<0lG2u?4O`c`x%@B*4qGyEXe>pu)m^0C9wnpBx3_oaeA^u1N35p4Uodp z4bYpV8lVr8`?9J|2N|FrHWwAAKZ`ZM0F+d57E`$|3(x<>b!wCgbt<=cAo&0`PHiOE z{|DexVFHbL=O%l}XbD67E#VfMLe(f?a!fzvp+uDde}K?rKlULN{|FT%xYf2BCWe-)3>%GmF0l~EjXVSg7K)xS(9!dLwv^Rf!m1SCbLCLjtws>3qwTc&aV)nNsI8jUpo z6|)YYBxVLTBQ#4|B2nL7!A-W>pXh2MQ43#9)%w{Apq9-x05x1ly;7xa_op7vf2F&co(n6JpjE}A`vuc2zuz6*X-+2uB-TDQnVRqCfOj;XQ- zbKNNWZFp7^Gb1#UFcUR_DGlkTbm~&hs>luimAVwTD!UZ8%7zrU%7zrU%7)Cdssb|` zX3S<)L1u|9Wh#OH2=_u$H|V;U2^?wa!fyFC^H^2=JNcQ5zjsRBO@N!epH(uLqDRb z&5s38O}zqVMmMhrp!Q(RP-Z-zGhaL&{xSVr=BE;X8d56rPmFoT^izrZo^f~pRD>qS zY@!3$C;wHITZJDs^7H3i{ciMQTdLDA#>mYUcMMDT~c7cY;NAtnV z#|dDU)B^{5JsxOiH}z57YPe{CwxLF(hTy15sl&pVYBohQoT>50^lSzHe#8m?*F}C<3G=rA{s)^P@C^f(~;$ax+F;h22gy&?FXab%1fHYJ4H0BRnTv!{~AE&x?KQcy}Pe=e69 zj|rSCg0;H}fw$ytmMlRl9?6nr75wUtur->NiZIAO5dBRfxtB*VRdLPGVO3UZLuI%k zBW#U2Re6p@JSxv^{4uxvQw^FqG=WT1)p9#DekE|z$prtzkLg)HD^YdPp8sHo*94}M z^sKfKI-pmoDlmcRWP&*VV6_YlTjkK?n10Mrs}s9yj1uweCj)e5KO3M6`_%wl*)0Qf zV|Mk#5z3KquL26MZg3JAF+dMyH9!)(V}wd(!r=5|zZ;xh%wcd+SUCgq#)B`V=Ja7# z3_pEYkiqH40u9igT{D~p_%3Te;k{^Z{twKjfAiS13Xe8&XpXeTIuBZ#`5@KqDe3PCN3hsCj?@*3B4p{stVUJ<$&^H2v9+=~SXlyBqn5XMGINne{b57uMeZUDGiK%JV^^f#4j)@g~VG|Gjl%ta5&a*{YogO1V` zg!=y37!CTA)kcq?iVop-D{dhiza?G3??Jp4_GGD|Yxw;%erxzG={NjtENWv)rHaBh z4Vo<6#Dd?F>fpD~>R|4risJFRg;om}6{w;PbU?p^u2%N$poFd;uw8@VyPj9ySJn3o z^&QG*3`po&n~xfp(6tl44|qM|-hxNO+esyyt*=eq#1Z|saNvF?X+z#79dRl(5oc9X zaJaP}PP%504{(I^5RPFV#>wd;IGcPF2aG=^%W+cn6&yibhtsETk}u%vOY#-@hMXhV z;U(YVFyVQe5xjsCf0uB6?|YoayNVNVKj4JhbuxnfL~`h_ICp%TOr>`S7WQ-+wb2Hk4tw+z%`t*C+fZm}Esf9J7<*>oz z!3I(#?5I@6-cS{GFRhAgmg=kxt-;#SnyfvogN>p3*b{1q18$9Rq^&6qs5N8Bv?aE6 zTCo(`n)RWv*z{?OJ)!p4Ad16&O(!-8XBO|HUD*)YoeialY&cC~nKYS=q$wty zKThoo#DSf`IHGeuE1;>YkPc&GX&SVvEH<7Nv4`nIs4vr?usq9V(3hZaY=vU7m(8Mw z*|YR0G?CM64i34_rB~T=RO8Q63!hIz`2t#zFQS$C3$#9ek+$TEX&b(T_TtNEZ@z-w z$6ul&_{+2q8qrv&#g9Sto5k1Cx%^eShOeWq^7V8(-$3{AjdVZXM33{$^eeuFe#^Jg z8+<#x$={$%yhW{ICk+$3Xq4DZJz@`y5qoJv@h*)O@6kAMgmw`h)867Z9V|}J9PtUw z7boc$@hKfIzM+%Fw{*Jrj?NL6=u&Zoz9KHuE#iB+Q(UF*iff=7^q{y&kBZy$3-LSs zM%<;iO~P!Nl?7;a=F$RLj26UNYT>N4=4PF>DArGlW~o|vHe9Q~av~1lALC*C6cE z=3!@c62`Mfupc`^@5P?MF6=^Vz^=!Z>s#1ueNVrieW0halX?cbtd9hZV!9=V1zB=g zP0MIj$1FEE8EL%VVsIWd`eQd5R6OJk8Q9v)BmBd{$^#0$R?NSXQu=mY3Me zmY3OD%k!W$Y`0}C+h@TMO3Q2Pv}FUcSU0jD>l-Y@x|3C~z609Fx?A66$=3H+AM5*U zp!FadYW;wvTMx5L>k*b?J<1-oe#D-&9%HXqPqB5@uh&@?6UPb``P*vW47B&vk@L>quga+d0l%q-qN1P+uD2Z&h{jpWFO9Z+eh(<_Az{>eH?$mKA!Kl zKftfsC-58giM)KkBwjUOGEWMa!m|S&9cVrOGH?U`E%0?77POg{3);fV2W{t-gLd$iL2vN*pf`C+&|Ccepq)G~=xzRB z&@MhJXb)c!w3n|7+Q)YXy~|Gr?dL4`eeMoE$Lj~5=PiRT^OWE#e0}g${zdSQ{JY>= zoI8H!fsVV}*omw3=INIdEoDxPtqiWeNi#4<;kSn0?T zs~ve_iz8p`b`*$r9fjh3$3$`1@v!*Z@rXF%cuZV!OcU1~Pl_9krv!7(5_ada!tI%>IoYhtQ%gP7rbUCecE6fZcp zh;7cT;!Wo+vD>*%9CE%Vjyv~@&z!_&c`dn0X zeJL8az80-q--=k*Inl{=UUYX|5J|4@L_gOhG0JsWWV^l>`L1hXg6jt{&2?SOaQ!Ui zxPB4KUB8O8t{Y;5>!#S`x+~st5$%|ZYR6qdJL%H3Z(SA*9YPBav1!#pg0&VQ4lORk zsr3kPX#+z-w2Y8YEk7hon-!T35Uk(;I2|Vl1dulhEfxp9dC|%NiA_D zsWoP=SllFPi`lCKPKS5K!SF=f_8Ek8;n}$3^B|6e&&09s=Yi(qj?EIB>RyKf-5bes zWE;49$vn(_^D)~k!p!ypF6_LBdpL{9cVsEKOqP-F$qL-7Sc&TrFXLLpD)JjyO>U93 z_{^mlL+eIE{=zlT%i`*E)Peaxc=aCZD4=F$&vKKu}AK@a2T z_lG#_eFUevk7Awj5s9at;jH#4(w%;e6UaZ3UYK`#W8UpYf5vUcU&tWLzk}%wazEzY zVU$uYWppGBpjnuI^QjYav5R5`q8n&Ax{*fE-I$9%qLK7lTAp6VoO}m!vW90=LCgb9 zsS>>h54U1iRazI1v>LJ6m{S{I-fTz{SYz4`bMsKl&8e81(=j(^;K|4c)`5=1e4LH> zI3Lef3Rw^O0G_-&j`?^V4t%f1T)Y*}RCZ#XJ-|lM4>8w%jJftp%(GY7X!;}O+Mh7j z{(`yo1{*`~V7?`M9A$hw)%gT!=M!llpG2K}GUm}~)XitnDE}AF|W48yxJafXh+PUUHEIX2jU$5iV)UUgt2}ioDCEaxH}!mQbjcLiV7@W#IkXsEqg??V^4_oY>w#2 z7KwP=W$Mh9iY{!W=*nIe-PkK4g{={o)5Lx3buol(6T{d(k;e{*LUuwFv9HAhc2!Jd zx5OlNkM{|a;OX?8;YhW(&%MWb4-y zC4&EMiQ)m)^1Pn4B5!T2#8a(Rd5*OfA8l>ICtI8HMb_qgh4o&(!5Ygyw6@__tnGP# ztpj)4;&>}tN8ZoYiI1{%;WKPq`C?l)zR{L|`7Vi{vn6BB>&XM`y?AqbAKt~@mk+e} z<2m*Le2)D-zSKULueA^1@7jm*EB5>O@AeEX0!HwlfK2WV7|CM-vUr1lY~Cp#mk+^Q zmm2UG=Do-Hn1CnvlzKIj}@74#i{E9es68+4f;3A)0M1^vuV z2HoP{2HoNJK&`zeScte_P4o`7ip*e}$O?9f(ZS(jQm|Xh2#yqMgUgHU!S{&$!5(oc zxRSUOTv_}OTt)mITvb$XRKt8&T?}>96X}k|BG1u8jB_-@eAryPmi9ruba z9kJr7qn)_zh!cU%cu~>WS=4oQ6Rn*IqN_7eBsr7Bea>Vt)Hw+A++dOC9EKY(X=0%> zL#%fW$DB4oeCf;-UpuofkL3u5D^GY_qeV4WzNqCY5-nY0L|fNbk>DC9(p=*)Z#^K! zxh9B*T@%H0*JSae>p`*E^$_N$hs6QcRB^=hv^eg1R($Q6E6%x|6PA#9qI}4FQ9WdV zxHn{>=n%3n`h>hF@eMK*;OjQplU)TF5SO zCuFy2^n{om`ia;a`l;9v`k6Qs`h_?hdRf@Qu86>} z8zLm^ric!^C2EA-5lzE>7d^sst!G$>HaIL)8xQLVkA+2OPlZKl%fiZQTf!=8pM_P@ zPKQ<2&V*Ib&V^OgE`(LnNO*OPhu6`z`3 zqBW1m(%MC2YpD@=+QSi}wWlJcYO^DzX^SJKYx^Q*Xh$QS)NV)2((LYMwQ}ycS`GJe zTC97aHpKm+mf>Em6}VSulie$|N8K-JPrKJ@bKD!WCGL&d2KOfIE%z4f9rrfvxO<28 zx%&<6jC-f{oqLx?BX?`|$UT}fa<5h{a-Y^9@}Sl<@`%# z#dQPe2L1d#vK6bD9nifGLht?%tCS;Hp`66Z80$suyP#z3F$M(s2kdh`U$=g(2BHZY$bq~Vyyqv)rY$K@Oztmf}(v^>tFRAV)1 zZB`39ZXM{gbumxZ$Nby`b8}PrAmj8&)*5s3y>tO5c zEDd_Amj?6Um|y$SCOnHK@;uC&qv;@ChRXe!j|Q&|8?Fg;+)d#d7KpFF{vb1wHju+DN=kI4xOOgrH^YGdkVVk%g}AtLa*JdIoVFwGuf?i_6~I116l+-3O)B@trq)K ztH;i34cITxUt8-fS$n-L?&!v`-Z+gk3Oej0=&y^Rv#x^9x*a;}yVytDuMc9U^ug?g zK8#UI8namL!3l}luo}^bRD}73%2)x%!fHY%*g!}j?Qp?A9(UloV71!=H_c;lrMxe$ zgZIQ*w?BCUm%!hFb$|nCZ6Cq{z$vVyPh%~87VGEluzvmx*Dvp)1!}lX;i99lM$N}P z%K}oB7U2%$7_39bV(mE*YtG47Yfi-)^8wPIK1zn*^lK`eMl$G3l24x|o_h?aIc~QTZVi5%V8K{C252M>TPhW zHjceQ64|SyA6rK<*?N-8HjuGw6Yk(|CbQWVGM{b54d?CTRknj{W^a&vY!^AkcEdEs z9&(lKB)8Z*g!6p_&&gQ;)?Hyd7*7Jj@BpG5i^bE3csz*c%R6FUEgr@>dV%_Y`oavx z0O%3}p+gMDrS&1uC{m#<41+AaxN$!MTER%H`m@nn^RQz!1{c65;Hvf{^v=o95gx+& zek#`Wk6;b|BuPT~htk=k5HffOWqt}WSPU7grwege`9*SoE`dCjl8baX`Gu|^9OZZ7 ze0CkkKpyw)0U4yR)g%uWcOPbJ$sG0;%DfX7Gxy@Y?t1JgZp2u!31&iepcT9cJ!mId zz}vW)e;RG!ENb^0a(e;e$z@z^y#j6LI<%Xg$O33DFJSywf_vl3$qn)nYJL^DskE6j zxKI=ve$4Pbbp{=+kr}T}LNjpKuD@MIXfY_7FWxpTa)j9QqZV z3woa3p!4YObOH30MbJ^O=4Xp(bGC$bU`w&T_Zn`QZ>D|O7L0S-=mfSM5?V{Lep=a4i?9qJzo#QL$8DB%U_y#(~8CnNx{g(VJ?at5B!Te|3QNKg; z_+5-`ggwJ4Tg(}Il?(O;*8jV?&fen|c8FWqG45oa;tAGyJXrXSmuFY_J?t8#)1LF6<=LV?xwtx@Zn_F)di2Xvu=16F5Z&79!$UsOZkZ zMFNWui7Zm!Sfc35?h*Z%M+{_@#2{8h3}!LH3!NjA)fb~!Ly^Urh-}tekCSGFcVjas6udz(=IvXiAvTU)5<%-R0wAccjW-BWcZ?iFC7kfbLW)sC8 zHbuP09uoW6RB@0!Do(K{#c4KAe8ZNAGi$Xq->h zbpD`b;WITWe?hbJm70xj*8=%o&B6C+PX3X0mL1nZ`IlM+enyMoSGDT=mR66~)$8*{ zdL!OLZ_In@4frsCPTPE=NmWh0^WfEU$nGBs~I^STK0lnr)zST05@31_@-?BW%cUhk2 zyDjthUdw#G&$58OYgxwkTbA?pEi3pz%S!%%nA+WdXfiQKjThol8CTo3XgRpC`)v(julDP z&7zleuNY)~M~tu@5)WBF6i-@@i07$u$oz`pOuyv*7sP$#b zXVz7gv)0v?AFXRFH?3fH76mg4e_v8QiZjHy@n1rQs0r}uukLw7LT#FGnvl1 zlIK`A@)GNgJBJBmKT9INvSf0T-AC@SG!nq`U{MTnCeJ73c_C@U$HCy$c#^^&fB}w) zB!|N!0iQx9@~LDdpGjWkPr)d_Y_gRd}EFtIkGID`0 zCztt3@;%4RG`KCxmd=V?j#n|~-!ZNU$9D@;eI$e&@c?AvuuEfau3Ohj8u;X+s4yL@y zDzbH~He1i?ve#K#wuz;%&1^B-3eGlmkZosY*bep+dxPC#I~nC4!1%^d7Rrya+WZsN zhM#1;`DbhZKgLG#FIYbRl1<^?!!E}SHjDqp7V=x{WqzA&;FNFUjK9k{|BP$=EVu9= z5y-2HAf7LR`D4PtX9*{NPPq6Y5z1GIO8jk6g&zy|dhS%1gg;ka% zJW*f9`|2xss=k_!(YNp!`aAq7{UBecAL1MI!~C}XA-7sS<>f4&^YWH&cqPjj-obK~ zcd}gI11uMLmgPG>#d3*1VY$L*Sia{kTCQSDxyIkI{D^VmI{(=66Z-$p=-WaO#*5Z9zJ8|6BURCW%J^W{4*OW{J50bHu8E=f$3Y`Qod91>#b`LO}yx z5bnU`qI%#8(KK+SXcxFqbP7BwdIf$Y1_gdBh6bJx`GKE_DS=;!>4B%k{J=9}QQ!sf za^OX=Iq;IW7AywGc-at%jqk7U$@ujd3JsFF3HH=jf+xbPUw?IMTG64zE_%Ib4f#j?nrzv$cF@ zzV@>75$!GKGukodv)WnbY>l|)XpLQSwXUw`G_UJ!vh)P4^+tyx3QX!nGk)vAY{*AhZ6X#GPkX=$NfYlWfTYZF7SY12Y~&}N5T*XD=* zq`eUOv$iVqS8ZMB4ej;N-$1vuQ=z|WS3>Vb-`ubC0P4$Ig&GeOFt@IsXt@T4;_v$CZV)ff$E%c!9c6wBJ2fccD z54~=9vfeVhryd{POHT<;(eDrMqmK&jt3MLnPhTJ2U;ie2fPOc8kY1_WV7*ScA$q5B zL-qV}_v_Dv_8r`OP}n1R-fvgtv~0U zt1omvr>}F*(>J>3>+iZ3>IdD6^e^2n>Sx@G^{d( zy-nn5JuY&M-Z%19eNf~&JtuO#UJ$uKe=KsNJ|l9I{$k`7eRS`r*ho z^<$B5>E|Nf)-Ofw(tnTKqw}b}dby~5dUVvgdcCOqdgG|~_4ufRdiSUg^dV7)^|YuD z^)XRL^$AfQVK3ujeRkAw{iUc+^fgf@^_@|l>3gG2=_jJT&`(8used1JTE8CkwXR2> z(F3Bt)hk4w)2l?E*PBIO)LTbi(tAYzsy`F`o4z3WroJ-TWmy#+YS|PWZh0@doaI2Y z+j1zn8s_pgBmgs0IJBDbn4N0isZKMP0PBch1M}N^nBP9ebD*!GtNjGc*o~QM5Oml{bP8s)2Vv*wA?Tlv!Yb2a(7EI( z75TBi(q0D~MwLgAqR9QwRn(y*oMLd1&cGb}sW`sXg&IL-(0ZgB<;o#z!UO@O% zh*O#*?5x%IvtheI9#Mm}Nzg>t+|2iSjZYWL0WuB#E8%Bv%TCyTFyt0u zT?9>9kSgF;u+H-NhAB^L8(4&(SmzP4!`cW&A&mGhTO(l?f+_=-KU?K7X5*vTj5?Br zJpygfWUf#C)ou5Z`M}b=M*~}9TsSh~NwXawFQSan;9st7Ct2>R_qz5yVkM4mN{O|! zZxI`O`Q#1{*#s<2i3B<#$W~uGRUE^xzT!k0{HyQii*Mues3QjE$*3}g`HVwK)%dJ- zRE0$|stjUoaTu0Gq|0H)bga)Pb}L{g(=plbjPL%=Osv_cGLDIza+AN?nTB;7!=4bV zM>+eUjz@5N<%N0!y`Qkt6+DtwK?hO97u2%>SB>+j&srm?+AHOAfXeFlMi7whF8w-PvhX0-HSM**TW(Wy6z%F4I$!Le0`CjZM zS(JIrJ$wsxR1E*)L@)GojvW%%YZUP?(`LxwfEWoQZXEkSFy<(RkPbfoO|&sM8Dzm2 zLr6PqBz6yscvkCQlJ4+70Q@cbM;JK_{xnN6NdkWm_;V~BNiSyf>ywuGq%W|nk*_VY z$UvX}(bm~)5aJ&S{$%T84EuaQ1f~WDWA}$*{|T}R=uOfQr~IS_#NlbGRT<^X4roq? z!%sT+I|ClaPLWZT6@g<(KKy5ZzdmpjDf027gWkd}nhxCn_FIECkV(F@P6o{0IP3Px75! ztosfB$6c?HCGejQ{@1SM(4q|fBOzJj6{IWgi_Z$VA3Iw{{;!2prW@dA4ET3K!s&YC zb1ZPf(AUT&U)Yeawqz^tc<`gcU^mtmwr5xe{w52;SPyfjVa@pazB0~^p!6X8Oagy# z#Ls9e6te~)HQbd6PVxbvzT8W3hnkZIftR@FlA}I;)5u8dcx%eyXZy$?><}6LdqgFZ zlfaL_f4`{CL~x^A!Ki%;*Oc|oD74H#ZurlHoj(T`$_D5-*nbV;47TP7p85~RQ)|P| zQnm}4q^694zQ$gMtMN(Y#@IL$KZoNia3tc9pIm5%72*GBVC*Zv6fwh2CB|fEqg8!z zhKV>@9sZvM-y@pS81Ut7`#qRbs`>B@(TLRc<$r=Ugw%uo=iujYtrxUeBX6H-xuh}T zp9lVVEfogYjr!`MzeAcM>;mw6>)S|spZ`Fdspx=s7J=`^o~i%yAx>L#g@5e-Vi$S_ zG-ZZ!76iM{eMuLDmADFg{f3X<9P5-ff!BlI4!ZeU$g}*Upw;b09m(1p3QLCX`uIn{ zKLGwF@IMFtL!bN;v7`PG_*=jq0A2eNpZ{anfjeC%j0CA(Qcm<{pcO=cY!}obf*?! z_&=lN(*R+|Sy7nK)iP+fkKf0#heV11JXIhh&9aG96-K%d*488j_+9Wln2W3V_`R$t zq&o0^@CRADks3b!N^2eR|Mm7AfKgRh|99SdGjD1#lftA}Kvb}xpa>$LN(g~O(o8}x z%+x+r4#6j#^wVP9Q)Ma9DZckaD!GRX?8 z``_J&_ug~veYc+9x#zxe<}jqUfq$EIC_7y8pR0LV>^t^mwW{p%%`ca4rv_&ETDN zyRVb=>$t0QJ?eP}{6gUU50bwWTJJ{m|8L;0QXf?QDEW1k3U(XP?}It5|u@V^58Q`b$}+mipgf=<&r znvI@uvg-??cq%9AaTT4%K0#aGf?rmYVV_I>%A#x77vS##e@)RP@Lw* zzdK>ADeNx1Gp(Z4chyyBOJki{Gukk-ts41Dw6JfqDwB>{|HpCy>awyf%YFPbbF}pU zK2{2#Jup&*E!w?%_qm{fE=&Ztl40QlLdmi6@(A&_8~@{Mgz|PlgMkz-c1n8pZk&Zc z!wtJ|>yKFxg|SoeN{93M_!Z~}op?mOx-5?~7H-ckdp=>(|(U zr_k5vDm!2*#TIrzEe<$nRpi@cJea)lm(V}KKZt0U`G-jQV4~5r<0Wk+x&S*D%WbzB z?dH;T1L&q~zm8%m9{#nMd>xB<>=$F){b-{-e6jJ%_ygy{z87}|h65AiA|ENZl~)gjtjN1pP*2V@q>^45NG zxf*hZ@`G^_pz9$2b}A40a*9E(k$jD4h~!#HFQIz}z_FI4k&kcBu9NLtK;?mhyZW_v zKiUI-wF%Y>^^?5fi+W6wUfHkw!=n6=_^|-W2M#ZxdNKZIDF*JIrx>?4UZH%b4tiEZ z{eFXDwEwQ`4&ra8|2^iM_b_IHXnMD3YvK;s@D{<$@gmUZTx^Wc- zdV-{RjB>c%C9hv8uXoD$Cb@oRQhURxpIqLu_}!CS?umb9wmu=Z25po#@PDN&H&8EF zex47#A;!O1#s*G}dM}dK^~l(ujeMhBBOaJk%iFhaRbw?YM~sj^~(i_s<~O10Q-M z%=-xyAnP&oh__$)(?xmckru0RnK-ySmBj1RP{l+NYM+>u5<2+#mdMeXC{u@v{Hm^Yv{|{{Qs($wEFfBR1A~U$G${^X2uj zd{)j3JCDmb)_)p}8|y!x&uicMpH1Vy`nSsQ^WT z{!1mjY{2?2qjs?V%Vj$k5sh`YLdnJVwb}K*j`tHkh%*4+m-dr`^;tQ%g~~$?eoOU2 z4mMH$AP4tT3^{n1@^j?iapI%>r(}N&Ie1>u1LffNQV!me`4>w$0H4djCxUOXX7^7a zUpG-c^zc{Nb~qo;gnnLbt{I>&_OM@P_lJGS$-kO!w0o|UuYJXR?TB%2&B~>qw+*15 z8bCiI=kXgkPsTiQ`A{TA}Z?ZsUA9;6!Q(2r=mz-5Vw7`PmwqI}N2`x)f} zmxrrj+F);M@H?s(IGif$#e3u&2eZ}Oeg@D_@UhQ^ zc)u`jiZQR$Pl$9s+(t!t=;ID54;)$vU%+8E^$$2ai(=q#G3Dpra2fG|!(Yq(7&u%l z>47*bRK$L}Ugj%OUcl!#yq)TYJtxjxZV|5|TFfKg7hu+cV@y zmNVqWh_y1YFJy7*mb6i?Q||vpJTTuVx3Ac^-iY^A{$I`iyTr@irQVyA9gmpT$ph%> zERFSm9c|3pR9Yv<{bpKs$o*C>Uw!*g1LZ^RpOfp`e?NK`a)$bVgBH2ZaCrg!9@Pi= z|A^|#!NDhzo-O6qIJeHGc7TJgWIOYTh8(I|E)E=;fdiL@dLj400XPWv!$E;44;&Oz zdEg*Q^#TV&G{nFGzM|qdID+zXa4?GaXn%|*=F`BziIN_OgN($%sWLw(5XZA}e5!&VNx>Nuq$ndzK?XtZa5Rx4-ksEqF5VXfcgVYy z^H}d-D$=7Yl7e|A)p8aE3-P)wp4l(OLn&nm>jmoZ`;-cLzlehKC|FDlEumm31?N-n zD?E8;7vSY4yic@*CTBT*;Y?YDN5l#q0c02H_&B&pxhfNSdX9=wgkib2FSRXf?FuK6@gFyf24A^(Olh5_1!__o%rDl zyzhOc9QobKMNmQ1gAEjHq+pYBCA1F(e1P}SW%ny<{$WIY<9$H6ihfM^8mJ`-@FSH_ zO9*-=PeA|3)tXp^hbi?41&=CMLpMqrtUV;fvor5L>5yfok2PV|_-v$#Nv2`nUlL021Ni1?Mm>ed6$%VH-6sO4m z6MDZ0pFRRi2=)S|d=tRrq{)Ft@Cz0A2VYL!!dJj|_#VInui*Ov6PjGD6qx`f{7m9r zz=U$Y5KLvJJ%9;S?F&r!sl|U6n1+}DCeicg)V-i7Qauym@KLd>^1dSSk zMs*e%==~ym2@Gf;*b6kK5;Ur5a^P6~LZyYEF@vBnb5GEKbM<{e15K`ms}Mlr)V)Fj z<$fVFrtJwDsA^x(nDy_2#$1BN$ysQ?Py9VJ&l@P%NWmt2bq#1B$c2V)uh2M+pb;c! zAb5y^%?S1ejQ~LdMgA#hz(?{NWeGt8o|)$<=MXg35H#R3`80B_?1y9Je!Iq51dWCL zp>Zxj13^SNuRkjk%0lD(pMk~&1dR&`8q2cKK<^j9t39BBU@y>ELC{!6 zlLI%^7n0NJ<>bP81sq!MVb_4G>U}{2O|FJ#IY8r*y+Q-!ejzk2-xD-Y)xMx{<-ZRa zYY7_o+?O9)?k2C>_s~3VpkN~foA7}zpn)J48te87jcW-S*Ap}lJVe1}1bc(Vbp#C* z`6r;^!8>%UfL^47g-H(-5Ye#|FJ!_RJ_K(R;kFZ#n7_5J7IoO_OfquXxfn=FWT{tSq}B@pi-5Pz2iG5Wj+4wM061bYGT z4+P@x2*kKEd?9(tT~2;;SHO$z9zgulzCny8S1UM6U#37p_G0>>+%E*NuI$0|Lsk0% zu>-HulI;E)&QW=IqYM*kfEcI3duX0FP_U7LP4N2-5F^M1u?IKr_iXwVC;)M>0uUp3 zh=R=s_6Fi21t3O|e*(mNK`lgiINUl9MD1(^9&zU=(-c4met738jS3(HpSV8qkb4@r z()GiQZa)as;jXZPua0uhQE-(TB!9UPeD>PUSVVpQISAdERRy_Vf`{R5co#O#Q8Sc( zJV(vKOZCbe1z?)380RSTevyLUJPP&#rg;j$G@B;JPhe^#Fu`H*3b-%c1DN2Lcwajr znp}v(zj2fT1=gLB{_xDpv`I?OZ@u0qD+gSa>xfh;k> z!7khu{?>F4oPlhC1CWTwAT(q;1q5(jL>E)SlC9W{25h9%mkJo?@P1 zZZ#*&XPCRp3(e=4mzzs12UrfbJZ^c)@{;8X%XgOD7K`rEkJLx$C+Jmrwceu7*JFA{ zzf8YEzgl0X->BcJ-=W{FKde8gKc_#hzpB5X|4siw|4RQ(|50aF-RiOySP!rsY(3mM z$~xA1l68`Gs#R3fZ?oQSeb~Cq`WNe8t#CMN{mA;Y72bSpPTRq@ zVYZRBv9^NTkJ7=r+uM)t^FSR zR{QJrFYVvj^Bwy+4t9)pG&p8CVvdyKLdWHfs~tBx?r}We*y4EE@uuTz$8Lx2^f(W3 zj&N2ur#hRR5ogqSw(~saGUo%%mz+DC?>PVN{M7lCbEk8+Q*+r}`7V!Zkn14V)2=sM zpSgCresC#y*1VFuqw~h))#NqjeUPW-JM#zU56wS1zcRl*e_nnlKbF5J|NQ)m^VjCz zkbiUj#{7r#pU8hE|CRjL^54$?F#pT^Z}Wf5SKM}YiThCZ5$>bi$GFG2C%T*6GuL=E?IEc#1vyc@Fd( z>>24f(NpD_>S^%I@Ps@OPrE1PNqNrlEc2}JtoGdMxzlrx=RwcYp65L;cwX|n<5^bV z!bc@X!g<3ed>k+qpZkr+%i$-piEIjx^IJIdSqId-g_jrK$Lsqa;g$T);pXRSxb*p+ zUT=p}9=zObvcff(6G(EyEm#p8^ppTm`IRxh)G~E{ zAnIWCaP>%aq&iluQ0vuc>TGqs8dei(O6^wHt9Pgy)JN29>R;8LfGWFIsFiC&v=Q1^ zZJahyJ4I{MrfV~_x!P%(Ukhs~Xq%1#PS+nF>$}EE|Gc5Bh zG0VA@<(5k=S6gnd+-%us`Ovb{vLA3bQXi|IsL$5@dWYVlFVUCjtMyy-d-TWjr-8ng z^f&dt>pS(IbcgjY>rvM6R=+iFJ;QpA^?K`_)|YL6vpMWT?T6dP+E?4JwLfNm+5U$8 zWBX5b&EayCI1X`)bj)}7ft3p#mpIlr);n%>-0s-mc*yaz<3-2&jt?B4I;>8oGv8V4 ztO8nQIV(&Kr|AKCd!wcAh^kn%9wcM&8+ZEAsBk+nV=k-sgEg9>E586KH^+9936TFMPE4`O`ukk+Q?e%W)Zu36pec$_$_fzi= zUVBM?$)J+qC8w0smz-KMza&x;FG-i2Q*wUEZ%S5|tSd2?@LN>`O$R{Go0t4nVvy}9(Z(mP8xmu@M2ru5a)H%mV#{igKCQhQl(+5TmRlpRx6 zQ&wL#qwKV@SXo!ulCqU$Ys&JlXP$!3Oaj<1yWt}6a(qy77k3Z16G$%yl23q}ttL1D z+zy9-#maulp}=28xlp-C`JHm5a;qwzE*@?>_ly{HdC9U1^6D;rJb!^psmy{1J16~ zZU(+KYJbum(caTO*1pxs%|pzGn~%kQR%LE7p9M^HVe%bX5;rhb=Z;Y5KkC4!A~q z(e%FQL(}KbSqw+G1K?=p8092ohLV7Rem-XEk8n7%MR^_$W>jb?hgzhbpq{8sR;Q~r zypu8$pY<%lJNq}|`TonWRjhD)MpjBCoG>;(J7(aP>{2*kq@Oau`4gXx=5g&k0nXW) z@d@DRxITq7yaJz0uEhxONi04}ycz5HM|?cE0iR0V4?E~#d_K7q4k4e#2W0QTf!n9h z>x1B0jdb^5skw(^q$9ZA9t#I*Ct<`@(Ajm|Y1%n(mDUUQXwSnf+D~wYc8D?-w$3Ta zbjZY67~Nl$ca;yIjdf_?GHBg#>QuEsZN?bqsR1>qzOKHhz6UGjWA!ujOLeFEt@<4# z;YW2hbg!maVAVLaJk6~YKo1vdUab_`cz;O95N#-IonhM1+9+)_bn^+2nUk~$(9l)d z6m6;ocdpRX&Du2R>Y3VX==S}+k`h$8etfWWvEzs3l^(SC2J*7XxZKfCW zzv?f;a{530b?EQ6_4o7-^pEsU^v}2*wNw9A-=+TmTS~Q>VNcnuPHUdkZS`6QTPIo@ ztWDNA*56xifED$O^*QS+)_1L6Sa-vIa@b03huV&{jj>I%O|jM6=G*+XkgeU8wDs7o z!Oes`xNSxL{#w0Jy$dLQ6e#{*^+okH^)2A|6Ii2P;~tY6pF#}+qRL=d9LR>Sp==mFLLnPt zBtC2%&Bn0f*$J>QD%fOvo?p*qLt+CggwM&_;7TgZ&cr7mi}4}iLqOaYa1~hy=c3zi z$7%%Z>1xPVGpy#gVuCxRLiGrBjCztfOFbPs__^v*bro#n8zEVEEk{)$LoRKMR-si} z>MYYOe#;8WO3NBcujNV05Pg_FUZ2SA+FJcoeY!qNUxC%ptfjD4&$DiaHTo9j(rzn& z6~Z@d`_uOA_8s=m?G}f_G1_s8 zV=ng7q+=;|)XT7+KInMF@u9=yEOeGQhdC!;7j1IRar&I+I+r`Ia^C1vVO<{Tn(AtD zEp)AP-QwEldeQX?EX_|{<$1^DP0pK^cUoQ|Z*ktzyo>VIdIHR}`)-T#w!FuEJLf-zogK&|2gwDk~aS6fZifXj#$9qBTYL7i}qey6B}M zS8*A3yb;CYirb5a3_5bq3xkgJ9`CL6R(l)0P2Snwx!#aB;*EQg-i)`$yU@GTdx3Yg zca3+w_jd1}ypMWc^?vDflngByU(#ICUb3WQP08IQPnNu0@_k8R=@F%srE^Nt*ukzV zeW3LD(hp13vhuQH%chnE%g!phwCt8LxPK}8vdmFFw0wMdefh=ZSC-#UzP|jP^2f`! zl|PN2QgT3oS|Qczq2=y@etQ!-O@$?T1oX5Yt{%^ZHM!RGI5hLy(3vVU@(IcW+!{Gw zrFRis4lUpdeBkYfNCMnex4z|ZTJ35fggj2C-+@A>}oeHNjiB$N^a4Nxk{y+k?PMXrx zFs*R{GVAIZCRNpfp9yzIsku-h?Q0EZB2mfeM=QJJ-xAoM@^^;vXn^%lW0DOh3^PQXqhS-r?u20uBfi5uSC&c zG8K(yB6Mjq6i(E{sZelaFqMhMxg_+Ze357>P1(K!})qTB$R0Z46P(4qeZX@>9cgAIAHUSz^i+&|LWdZ{_ehl;R zs2g!2m;oBv18p>*82X$o&s%A#s;I4;-h%d;E1RmS>T4R1oL*5|GpVAbYUV7#Z>R-4 zum%APje5PHEu0E>V{S!4#e|%A{iTGw=pxm?ueWlA4ZwM0B}_V5eVk1sju}-4fiyMQ(e&@=Cv--Nz+?X z@0$|NoRa9N2%wu;Y9d4-5l>H=$a&2K9h4CS)GJ7yo)nJwF>8X~)|m+<7ND!B1y`W4 z>O=xd4YCqiFa<_>l2M=u(^1)(N+&Q?D8R`?Jd;XbRmAm`f^6wYX1m!O^vCP{F+tDp zM>CTXR4czik`>LBH8q@35p196Cs9LnNb|TRJuMwh)x@zVobFGds%-y^9`j;n1b9S% zPImZv2(pcJwZ1xkvZ@Y7Jf)k(tn|@xHu@N%z)a%;Bq|f6Tlm$ow9KXHtMfUcJ zXQ~zBZLITE(!M0Q{o3r$lQs2Y((F!7C1R6-8F6U?P|@gb4fk;>32yya5Dav`A{4^b z2jM^;z@Z{JtXkicXjizlX&UiG-I9T^^zj-y`Gqy{?D$(!{&+ePPEncWq@P5RW&$l# z5Nl#*1esYLv1kO@%WD(bR7?i6ADdDjlqZCcwnC zhBH3wG#Fth;EM>=j8rrZSwshFVXnZon2b$eqEwE3n%v0rr*iZADf{Y5A1&vkaGr9I#Q?}YmanO{YDQ%umK5?u&4Cflxde;ZnFP#? zcKTKdg`16)qTx+T)`q*nn0=%P#C;S;a-Bcb&buX4QAJ0GZcPTKuK(NvJ@_c{nGha_|m2YD`oizzXnV5D&KY*K@Ajq7s6j?&q| zfFPKW&4?tex{)T)7V3a52xo+hQyRu7bOpblxh=5(=|l>u1zD3iW64Q;`vNg74xJy$ z$!$qw{2kN;FWVGOq9WMMD2gG4Q=$tK6R|);yegF*#X= zk{*FRPPYa9FxUeLm?@n}?9<^sI+XG+=%Y}RADRp%I`)3rcd(d&a0G@OPs3EHXs(*V z?a+8;;|W+4NWij)rV_MuBUKwmk0}9zR3w_Y z)cKNWY^AdHdFezt=0BY`-j5fJ6Az0LhYc%$&=RG+(AO6BCj)+NEWs4)=mH8j zFO#6E#gQb)?NX734F-NN!*^DGq~OK~Pf2@;r=`II#TNF*fF56*(1MsUB0x2)3&5Q+ z5}9c+f12z%9DIyEBFUwuCDA+`IgkQj$t*|*vCmTJzb? zSvu5V{Mku`YU-%$%4C;-jDwa$NYc$sm2+!rCe9r-2K)a}m5j$M6OJWW5Vus)$#5|0 z@4$_>9@bPfrJ2oWXqvq)ZiBs(3}Pfwb4gATCn0P~0Z(0E;8 z7V2T4Zbk+@6d=fOgwe88COR?WoCOIZ8%acPxy{K@Ear#x3vGkI-`!2AZrlkB;f^jp zfyTIf#*=6}%}|@PJz5hPXreZ?P&sPFOohT7uwm1f zBiy#Z9FQhLXJO6Y0<2*>E{Vo*Z6w-?L^=Z-luX8o(CMA&jI`8lsjn^F*mh(Nv2+fNoTE zXAF}uZ4i}wgX&{93rQfeGR>OXqLGY9azj!iN&h!zusyV{uWd%9mjnN;(q_w!=TiiQz1%=`K+N;LuXMHA-@jmil{Qj?xk*0hgl$+ ziTRVLF_1`L>9B~Q=z>HlgcaveT11iv37!Z8JvcQ84rg#W-a&da#F98=L?aPY%)5@5 zL>AEk+T{>OlDLtPVYEdO<;S_3Wm27C+yL}icTxE`v-@OB$*A1guBNZQ?CSf}dB=WnVouG|VzmGqBzA1iy$lRdlz363vND6bj-* zNk>60js2-n{mEklX-IK@N|rS;Wmy4n91lZu(&P6`FyWXQo&jS#9fl^Oi;Q%(Cyjox zPFO8^D^78gA_Oof2cRZRm+_bmh@^T@y3(Iab2|u-;z*&3cp_&9Xsi=EKw}+?#rO>f z>}j0@{R_qEUE#!3@nyR0wlCF4vXDV zusXP{%ZuqvDnv_hSThZnE}){_#vFcCb#H!9v;VTLgj=fkH2O$x71aHwX^5@fJ5l_H@? zBwBlTU2#6(cmh3Q@dQ7?8#Zgg7p)%M^9d1N`-nP7 zU?0_3SKk@q%bLdZ{04zA->71mKr|I@6-fvSB$|3of=xWEWUw6#Kw3FT^Dp?&MAaB@ zGS-2Umn=mDNewRGosbHV(l|7UHYCBj%?nW{gnmfI0)BanL%o!yvGEknv-SPn@PE4FH{P#a$(tCn=d{Y<%^zD(dHoyI9!%L;^Y{ohG4` zu@4vvU{iv%VkB{As)M9}de@Gdt9-M{B>3445%vy1E8YR?2xkpHf1ZT{gS=nYCp-pq+k&7`zj$+p6(3NJu-&IsGc?;Hsi;W6DU0uoe zaXCGTrAML%{Dv7z(q7MSbBLa*&{b74>*`vnnpt9P3k(zz zFv+5=LK@%%F{k0m3ej+71rAB5om&H9LAcTqlfn-faZ)>NkSGiQvQ2V8Lkh=3w5!t9 zMoa=H>L89t5f4@wU4h#mG^N<*MN9|CU|SokCx%A=3o@{-Q7H<Ws)9|Mx3LrOpg5J~xI!=vGoRMGtKEE>Js{nEfF&KXI5gN!DI495-#2v4A&emoKz zNgbvHgLMkA58>_@p9NG-4+XK(G79ijC%c9AGaS2O0laCHV}`&Uisg=_rJ|-*Of#j} F{{yCy`e^_F diff --git a/bcexmm.prj b/bcexmm.prj index 17f3fb091e14cb2d92b94fe8fd8d501d7eea8b0d..ff6890861188b34fb64defbe8b4a7ecd5ea8e708 100755 GIT binary patch delta 1854 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 F{{yCy`e^_F literal 0 HcmV?d00001 diff --git a/comments.txt b/comments.txt deleted file mode 100755 index c4f39423..00000000 --- a/comments.txt +++ /dev/null @@ -1,3122 +0,0 @@ -src/0.c: IN_initplayer(&player);//, 0); -src/0.c: bakapee1 = FILENAME_1;//"data/aconita.vrl"; -src/0.c: bakapee2 = FILENAME_2;//"data/aconita.pal"; -src/0.c: //return 1; -src/0.c: //4 this dose the screen -src/0.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! -src/0.c: //while (getch() != 13); -src/0.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks. -src/0.c: // if the sprite's edge pixels are clear anyway, you can set this to 0. -src/0.c: //4 this dose the sprite? wwww -src/0.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! -src/0.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr -src/0.c: if(IN_KeyDown(68)) //f10 -src/0.c: //gvar.kurokku.fpscap=!gvar.kurokku.fpscap; -src/0.c: o = (0x10000UL - (uint16_t)gvar.video.page[1].data) + (ry * gvar.video.page[0].stridew) + (rx >> 2); // source offscreen -src/0.c: o = gvar.video.page[0].pagesize; // source offscreen -src/0.c: o2 = (ry * gvar.video.page[0].stridew) + (rx >> 2); // dest visible (original stride) -src/0.c: //printf("[x%u y%u] [rx%u ry%u] [w%u h%u]\n", x, y, rx, ry, w, h); -src/0.c: dstart = (gvar.video.page[0].height - dh) / 2; // center the squash effect on screen, otherwise it would squash to top of screen -src/16.c: * along with this program. If not, see , or -src/16.c: // DOSLIB: check our environment -src/16.c: // DOSLIB: what CPU are we using? -src/16.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/16.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/16.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/16.c: // the CPU to carry out tasks. --J.C. -src/16.c: // DOSLIB: check for VGA -src/16.c: // hardware must be VGA or higher! -src/16.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log -src/16.c:// modexPalBlack(); //so player will not see loadings~ -src/16.c: //modexprint(&screen, 32, 32, 1, 2, 0, "a", 1); -src/16.h: * along with this program. If not, see , or -src/bakapi4b.c: * along with this program. If not, see , or -src/bakapi4b.c: // main variables values -src/bakapi4b.c: d=4; // switch variable -src/bakapi4b.c: key=2; // default screensaver number -src/bakapi4b.c:// screen savers -src/bakapi4b.c: while(d>0) // on! -src/bakapi4b.c: { // conditions of screen saver -src/bakapi4b.c: // user imput switch -src/bakapi4b.c: printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 0 to quit.\n", getch()); // prompt the user -src/bakapi4b.c: //if(key==3){xx=yy=0;} // crazy screen saver wwww -src/bakapi4b.c://pee! -src/bakapi.c: * along with this program. If not, see , or -src/bakapi.c:sword vgamodex_mode = 1; // 320x240 default -src/bakapi.c: // allow changing default mode from command line -src/bakapi.c: // (based on src/lib/modex16.c) -src/bakapi.c: // 1 = 320x240 -src/bakapi.c: // 2 = 160x120 -src/bakapi.c: // 3 = 320x200 -src/bakapi.c: // 4 = 192x144 -src/bakapi.c: // 5 = 256x192 -src/bakapi.c: // DOSLIB: check our environment -src/bakapi.c: // DOSLIB: what CPU are we using? -src/bakapi.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/bakapi.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/bakapi.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/bakapi.c: // the CPU to carry out tasks. --J.C. -src/bakapi.c: // DOSLIB: check for VGA -src/bakapi.c: // hardware must be VGA or higher! -src/bakapi.c: // main variables values -src/bakapi.c: d=4; // switch variable -src/bakapi.c: key=2; // default screensaver number -src/bakapi.c: VGAmodeX(vgamodex_mode, 1, &gvar); // TODO: Suggestion: Instead of magic numbers for the first param, might I suggest defining an enum or some #define constants that are easier to remember? --J.C. -src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in. -src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C. -src/bakapi.c: //modexPalUpdate(bmp.palette); //____ -src/bakapi.c: //modexDrawBmp(VGA, 0, 0, &bmp, 0); //____ -src/bakapi.c: //getch(); //____ -src/bakapi.c:// screen savers -src/bakapi.c: while(d>0) // on! -src/bakapi.c: getch(); // eat keyboard input -src/bakapi.c: //right movement -src/bakapi.c: //left movement -src/bakapi.c: //down movement -src/bakapi.c: //up movement -src/bakapi.c: //getch(); // eat keyboard input -src/bakapi.c: break; // 'q' or 'ESC' or 'p' -src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in. -src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C. -src/bakapi.c: // user imput switch -src/bakapi.c: //fprintf(stderr, "xx=%d yy=%d tile=%d\n", bakapee.xx, bakapee.yy, bakapee.tile); -src/bakapi.c: //fprintf(stderr, "dx=%d dy=%d ", gvar.video.page[0].dx, gvar.video.page[0].dy); -src/bakapi.c: //printf("\n"); -src/bakapi.c: case 'p': // test pan -src/bakapi.c: case 'b': // test tile change -src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in. -src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C. -src/bakapi.c:#else // !defined(BOINK) -src/bakapi.c:// FIXME: Does not compile. Do you want to remove this? -src/bakapi.c:// INFO: This is a testing section for textrendering and panning for project 16 --sparky4 -src/bakapi.c: { // conditions of screen saver -src/bakapi.c:// while(!kbhit()) -src/bakapi.c:// { -src/bakapi.c:// ding(&gvar.video.page[0], &bakapee, key); -src/bakapi.c:// } -src/bakapi.c: //end of screen savers -src/bakapi.c: //pdump(&gvar.video.page[0]); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-48, "========================================"); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-40, "| |Chikyuu:$line1"); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-32, "| |$line2"); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-24, "| |$line3"); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-16, "| |$line4"); -src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-8, "========================================"); -src/bakapi.c:// xpos+=xdir; -src/bakapi.c:// ypos+=ydir; -src/bakapi.c:// if( (xpos>(gvar.video.page[0].sw-gvar.video.page[0].width-1)) || (xpos<1)){xdir=-xdir;} -src/bakapi.c:// if( (ypos>(gvar.video.page[0].sh-gvar.video.page[0].height-1)) || (ypos<1)){ydir=-ydir;} -src/bakapi.c:// ch=getch(); -src/bakapi.c: if(ch==0x71)break; // 'q' -src/bakapi.c: if(ch==0x1b)break; // 'ESC' -src/bakapi.c:#endif // defined(BOINK) -src/bakapi.c:// printf("page.width=%u ", gvar.video.page[0].width); printf("page.height=%u\n", gvar.video.page[0].height); -src/bakapi.c://pee! -src/bakapi.h: * along with this program. If not, see , or -src/bakapi.h://project 16 testing define switch for veiwing the contents of the video memory --sparky4 -src/bakapi.h:#define BOINK // what does this mean? --J.C. -src/emmtest.c:// Cut this out as emm.c -src/emmtest.c: { // make sure we got EMM -src/emmtest.c: //printf("EMM Hardware Information %lu\n", EMInfo()); -src/emmtest.c: //printf("b4 EMS *pEmmData=%s\n", *pEmmData); -src/emmtest.c: pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft()); // get 6 * 16K bytes - 96K -src/emmtest.c: MapEMM(hEData, 0, PEMMDATAPAGENUM); // load 1st 4 pages into page frame: 0-3 -src/emmtest.c: //memset(pEmmData, 0x0e, 64000u); -src/emmtest.c://0000 printf("(advi*EMMPAGESIZE)=%lu\n", advi); -src/emmtest.c: memset(pEmmData, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE)); -src/emmtest.c://qqqq memset(pEmmData+0x10000, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE)); -src/emmtest.c://---- UnmapEMM(hEData, 0, 4); // not absolutely necessary -src/emmtest.c: MapEMM(hEData, 4, 2); // map last 2 pages: 4-5 -src/emmtest.c:// memset(pEmmData, atoi(argv[0]), 32768u); -src/emmtest.c: // do some stuff with the first 64K of file data. -src/emmtest.c: MapEMM(hEData, 4, 2); // only unmaps 1st two pages of prior 64k mapping -src/emmtest.c: // do stuff with remaining 32K of data -src/emmtest.c: // (*p)++; -src/emmtest.c: // (*p)++; -src/emmtest.c: //free(p); -src/emmtest.c: UnmapEMM(hEData, 0, PEMMDATAPAGENUM); // should unmap before freeing -src/emmtest.c: //printf("after EMS *pEmmData=%c\n", *pEmmData); -src/emmtest.c: EMMFree(hEData); // finished with the file data -src/emmtest.c: //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE); -src/emsdump.c: * along with this program. If not, see , or -src/emsdump.c://#include -src/emsdump.c: char huge *p =(char huge *)(GetEMMSeg0()*0x10000);//0xD0000000; -src/emsdump.c: //char far *q =(char far *)0x53332225; -src/emsdump.c: //while(!kbhit()){ printf("%p\n", ((GetEMMSeg0()*0x10000)+0x0fffffff)); } -src/emsdump.c: //while(!kbhit()){ printf("%p\n", ((GetEMMSeg0()*0x10000)+0xffff)); } -src/emsdump.c: //else printf("%p= %x% %ul\n", p, *p, i); -src/emsdump.c:// (*p)++; -src/emsdump.c:// printf(" %p\n", ((GetEMMSeg0()*0x10000)+0x0fffffff)); -src/emsdump.c: //printf("*q=%d\n",*q); -src/emsdump.c: //printf(" q=%p\n", q); -src/exmmtest.c: * along with this program. If not, see , or -src/exmmtest.c://#include "src/lib/16_vl.h" -src/exmmtest.c://file load or read definition -src/exmmtest.c://#define EXMMVERBOSE -src/exmmtest.c:// printf("Next string is: ["); -src/exmmtest.c:// while(*scrptr<16) -src/exmmtest.c:// { -src/exmmtest.c:// printf("%c", *(screen:>scrptr)); -src/exmmtest.c:// //printf("\b"); -src/exmmtest.c:// scrptr++; -src/exmmtest.c:// -src/exmmtest.c:// } -src/exmmtest.c:// printf("]\n"); -src/exmmtest.c:// printf("press any key to continue!\n"); -src/exmmtest.c:// getch(); -src/exmmtest.c://static global_game_variables_t gvar; -src/exmmtest.c://#ifdef __WATCOMC__ -src/exmmtest.c:// __segment sega; -src/exmmtest.c://#endif -src/exmmtest.c: //static byte bakapee[64]; -src/exmmtest.c: //file name // -src/exmmtest.c: //file name // -src/exmmtest.c: dbg_debugpm=1; //debug pm -src/exmmtest.c: //PRINTBB -src/exmmtest.c: //{ printf("filename!: "); scanf("%[^\n]", &bakapee); } -src/exmmtest.c: //printf("main()=%Fp start MM\n", *argv[0]); -src/exmmtest.c: //printf("ok\n"); -src/exmmtest.c://#ifdef __WATCOMC__ -src/exmmtest.c: //printf("pmstarted ok\n"); -src/exmmtest.c: //PM_CheckMainMem(&gvar); -src/exmmtest.c://#endif -src/exmmtest.c:// printf(" done!\n"); -src/exmmtest.c: //0000PRINTBB; -src/exmmtest.c:// printf("press any key to continue!\n"); -src/exmmtest.c:// getch(); -src/exmmtest.c:// bakapeehandle = open(bakapee,O_RDONLY | O_BINARY, S_IREAD); -src/exmmtest.c:// printf("size of big buffer~=%u\n", _bmsize(segu, bigbuffer)); -src/exmmtest.c:// if(CA_FarRead(bakapeehandle,(void far *)&bigbuffer,sizeof(bigbuffer),&gvar.mm)) -src/exmmtest.c:// close(bakapeehandle); -src/exmmtest.c: //hmm functions in cache system use the buffered stuff -src/exmmtest.c://#ifdef __WATCOMC__ -src/exmmtest.c:// printf("\nsize of big buffer~=%u\n", _bmsize(sega, bigbuffer)); -src/exmmtest.c://#endif -src/exmmtest.c: //printf("dark purple = purgable\n"); -src/exmmtest.c: //printf("medium blue = non purgable\n"); -src/exmmtest.c: //printf("red = locked\n"); -src/exmmtest.c:// printf("press any key to continue!\n"); -src/exmmtest.c:// DebugMemory_(&gvar, 1); -src/exmmtest.c: //printf("bakapee1=%s\n", bakapee1); -src/exmmtest.c: //printf("bakapee2=%s\n", bakapee2); -src/exmmtest.c://#ifdef __WATCOMC__ -src/exmmtest.c://#endif -src/exmmtest.c: //printf("bigbr= %04x", bigbuffer); -src/exmmtest.c: //printf("\n"); -src/exmmtest.c: //printf("&bigb=%04x", &bigbuffer); -src/exmmtest.c://this is far printf("Total free: %lu\n", (dword)(GetFreeSize())); -src/exmmtest.c: //printf("core left: %lu\n", (dword)_coreleft()); -src/exmmtest.c: //printf("far core left: %lu\n", (dword)_farcoreleft()); -src/exmmtest.c: //printf("based core left: %lu\n", (dword)_basedcoreleft()); -src/exmmtest.c: //printf("huge core left: %lu\n", (dword)_hugecoreleft()); -src/fmemtest.c: * along with this program. If not, see , or -src/fmemtest.c: //void __based(__self) *pee; -src/fmemtest.c: //word csw=0,dsw=0,esw=0,ssw=0,ipw=0; -src/fmemtest.c: //ptr=&x; -src/fmemtest.c: //printf("&ptr0=%Fp\n", &ptr0); -src/fmemtest.c: //printf("&ptr=%Fp\n", &ptr); -src/fmemtest.c: //lea csw,cs -src/fmemtest.c: //lds DS,dsw -src/fmemtest.c: //les ES,esw -src/fmemtest.c:// mov ss,ssw -src/fmemtest.c:// mov ip,ipw -src/fmemtest.c: //printf("ip=%u\n", ipw); -src/fmemtest.c: //printf("ss=%u\n", ssw); -src/fmemtest.c: //printf("cs=%u\n", csw); -src/fmemtest.c: //printf("ds=%u\n", dsw); -src/fmemtest.c: //printf("es=%u\n", esw); -src/fontgfx.c: * along with this program. If not, see , or -src/fontgfx.c://#include "lib/16text.h" -src/fontgfx.c: //JMOJI -src/fontgfx.c: //word ri; -src/fontgfx.c: byte pee[6]; // must be large enough for sprintf("%zc",...) and sprintf("%u",(byte value)) -src/fontgfx.c:// static byte *rosa; -src/fontgfx.c: // DOSLIB: check our environment -src/fontgfx.c: // DOSLIB: what CPU are we using? -src/fontgfx.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/fontgfx.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/fontgfx.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/fontgfx.c: // the CPU to carry out tasks. --J.C. -src/fontgfx.c: // DOSLIB: check for VGA -src/fontgfx.c: // hardware must be VGA or higher! -src/fontgfx.c: // NTS: We're in Mode-X now. printf() is useless. Do not use printf(). Or INT 10h text printing. Or DOS console output. -src/fontgfx.c: //modexprint(16, 16, 1, 15, "wwww"); -src/fontgfx.c: //getch(); -src/fontgfx.c:// vga_moveto(0,0); -src/fontgfx.c:// vga_sync_bios_cursor(); -src/fontgfx.c: //getch(); -src/fontgfx.c: //modexprint(100, 100, 1, 47, 0, "wwww"); -src/fontgfx.c:// modexprint(0, 0, 1, 0, colpee, &rose); -src/fontgfx.c://++++ modexprint(&gvar.video.page[0], 0, 0, 0, 0, colpee, &ibmlogo); -src/fontgfx.c:// modexprintbig(&gvar.video.page[0], 0, 0, 1, colpee, 0, "IBM"); -src/fontgfx.c:// modexprint(0, 0, 1, 0, colpee, ROSE); -src/fontgfx.c://++++ getch(); -src/fontgfx.c:// rosa=malloc(sizeof(ROSE)); -src/fontgfx.c:// (*rosa)=(byte)ROSE; -src/fontgfx.c: //printf("\nh=%d\n", '8'); -src/fontgfx.c:// printf("\n%c\n", e); -src/fonttest.c: * along with this program. If not, see , or -src/fonttest.c: //print the addresses of the fonts -src/fonttest.c:// printf("*argv[1]=%d\n", *argv[1]); -src/fonttest.c: //load the letter 'A' -src/fonttest.c: //render the letter in ascii art -src/inputest.c: * along with this program. If not, see , or -src/inputest.c: //extern struct inconfig inpu; -src/inputest.c: //while(!IN_KeyDown(sc_Escape)) -src/inputest.c: //shinkutxt(&gvar); -src/inputest.c: //right movement -src/inputest.c: //left movement -src/inputest.c: //down movement -src/inputest.c: //up movement -src/inputest.c: //printf("%u\n", IN_KeyDown(sc_Escape)); -src/inputest.c: //if( -src/inputest.c: IN_qb(sc_9);//>0) printf("IN_qb(sc_9)=%u\n", IN_qb(sc_9)); -src/inputest.c: if(IN_KeyDown(88)) //speed -src/inputest.c: //IN_Ack(); -src/inputest.c: //printf("%u\n", in.Keyboard[sc_Escape]); -src/maptest.c: * along with this program. If not, see , or -src/maptest.c://TODO: ADD MEMORY MANAGER! WWWW -src/maptest.c: //fprintf(stderr, "program always crashes for some reason....\n"); -src/midi.c:// fprintf(stderr,"Type 0x7F len=%lu %p/%p/%p\n",len,t->raw,t->read,t->fence); -src/midi.c:// fprintf(stderr,"Type 0x%02x len=%lu %p/%p/%p\n",c,d,t->raw,t->read,t->fence); -src/midi.c:// fprintf(stderr,"Sysex len=%lu %p/%p/%p\n",len,t->raw,t->read,t->fence); -src/midi.c:// midi_tick(); -src/miditest.c: //adlib_shut_up(); -src/miditest.c: //adv = ptick; -src/miditest.c: //ptick++; -src/miditest.c: //adlib_shut_up(); -src/palettec.c: * along with this program. If not, see , or -src/palettel.c: * along with this program. If not, see , or -src/palettel.c: //page.width += 32; -src/palettel.c: //page.height += 32; -src/palettel.c:// modexPalSave(pal); -src/pcxtest2.c: * along with this program. If not, see , or -src/pcxtest2.c://----#include "src/lib/planar.h" -src/pcxtest2.c: // TODO Make this fast. It's SLOOOOOOW -src/pcxtest2.c: //offset+=p->width; -src/pcxtest2.c: //offset++; -src/pcxtest2.c://---- planar_buf_t *p; -src/pcxtest2.c: // DOSLIB: check our environment -src/pcxtest2.c: // DOSLIB: what CPU are we using? -src/pcxtest2.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/pcxtest2.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/pcxtest2.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/pcxtest2.c: // the CPU to carry out tasks. --J.C. -src/pcxtest2.c: // DOSLIB: check for VGA -src/pcxtest2.c: // hardware must be VGA or higher! -src/pcxtest2.c://0000 bmp = bitmapLoadPcx("data/koishi~~.pcx"); -src/pcxtest2.c:// bmp = bitmapLoadPcx("data/koishi^^.pcx"); -src/pcxtest2.c:// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx"); -src/pcxtest2.c://---- p = planar_buf_from_bitmap(&bmp); -src/pcxtest2.c: //for(i=0; i<100 ;i++) { -src/pcxtest2.c: //} -src/pcxtest2.c: //for(i=0; i<100 ;i++) { -src/pcxtest2.c://0000 modexDrawBmp(&gvar.video.page[0], 20, 20, &bmp); -src/pcxtest2.c: //} -src/pcxtest2.c: //for(i=0; i<100; i++) { -src/pcxtest2.c://0000 modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 20, 20, 128, 20, 64, 64); -src/pcxtest2.c: //} -src/pcxtest2.c: //for(i=0; i<100 ;i++) { -src/pcxtest2.c: //} -src/pcxtest2.c: //for(i=0; i<100 ;i++) { -src/pcxtest2.c://0000 modexDrawSprite(&gvar.video.page[0], 20, 20, &bmp); -src/pcxtest2.c: //} -src/pcxtest2.c: //_fmemset(MK_FP(0xA000, 0), (int)p->plane, gvar.video.page[0].sw*(gvar.video.page[0].sh*2)); -src/pcxtest2.c: //modexDrawBmp(&gvar.video.page[0], 0, 0, &bmp); -src/pcxtest2.c: //DrawPBuf(&gvar.video.page[0], 0, 0, p, 0); -src/pcxtest.c: * along with this program. If not, see , or -src/pcxtest.c://----#include "src/lib/planar.h" -src/pcxtest.c://---- planar_buf_t *p; -src/pcxtest.c: // DOSLIB: check our environment -src/pcxtest.c: // DOSLIB: what CPU are we using? -src/pcxtest.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/pcxtest.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/pcxtest.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/pcxtest.c: // the CPU to carry out tasks. --J.C. -src/pcxtest.c: // DOSLIB: check for VGA -src/pcxtest.c: // hardware must be VGA or higher! -src/pcxtest.c://0000 bmp = bitmapLoadPcx("data/koishi~~.pcx"); -src/pcxtest.c:// bmp = bitmapLoadPcx("data/koishi^^.pcx"); -src/pcxtest.c:// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx"); -src/pcxtest.c://---- p = planar_buf_from_bitmap(&bmp); -src/pcxtest.c: //for(i=0; i<100 ;i++) { -src/pcxtest.c: //} -src/pcxtest.c: //for(i=0; i<100 ;i++) { -src/pcxtest.c://0000 modexDrawBmp(&gvar.video.page[0], 20, 20, &bmp); -src/pcxtest.c: //} -src/pcxtest.c: //for(i=0; i<100; i++) { -src/pcxtest.c://0000 modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 20, 20, 128, 20, 64, 64); -src/pcxtest.c: //} -src/pcxtest.c: //for(i=0; i<100 ;i++) { -src/pcxtest.c: //} -src/pcxtest.c: //for(i=0; i<100 ;i++) { -src/pcxtest.c://0000 modexDrawSprite(&gvar.video.page[0], 20, 20, &bmp); -src/pcxtest.c: //} -src/pcxtest.c: //_fmemset(MK_FP(0xA000, 0), (int)p->plane, gvar.video.page[0].sw*(gvar.video.page[0].sh*2)); -src/pcxtest.c: //modexDrawBmp(&gvar.video.page[0], 0, 0, &bmp); -src/pcxtest.c: //DrawPBuf(&gvar.video.page[0], 0, 0, p, 0); -src/planrpcx.c: * along with this program. If not, see , or -src/planrpcx.c:word start;//, w; -src/planrpcx.c://w=0; -src/planrpcx.c://printf("%u ", w++); -src/planrpcx.c:// if(argv[2]) baka = atoi(argv[2]); -src/planrpcx.c:// else -src/planrpcx.c://fprintf(stderr, "%u ", w++); -src/planrpcx.c://fprintf(stderr, "%u ", w++); -src/planrpcx.c:// ptmp = planarLoadPcx("data/ptmp.pcx"); -src/planrpcx.c://fprintf(stderr, "%u ", w++); -src/planrpcx.c://fprintf(stderr, "^^;", w++); -src/planrpcx.c://getch(); -src/planrpcx.c: //fix up the palette and everything -src/planrpcx.c: //clear and draw one sprite and one bitmap -src/planrpcx.c: //update display~ -src/planrpcx.c: //non sprite comparison -src/planrpcx.c:// oldDrawBmp(VGA, 20, 20, &bmp, 0); -src/planrpcx.c: //modexDrawBmpPBuf (&gvar.video.page[0], 32, 32, &p); -src/planrpcx.c:// start = *clockw; -src/planrpcx.c:// modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 0, 0, 0, 0, 320, 240); -src/planrpcx.c:// t2 = (*clockw-start)/18.2; -src/planrpcx.c: //(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *p, boolean sprite); -src/planrpcx.c: modexDrawPBufRegion (&gvar.video.page[0], p.width, 0, p.width-(p.width/4), p.height-(p.height/4), p.width/4, p.height/4, &p, 0);//(&gvar.video.page[0], 0, 0, 0+p.width, 0, p.width, p.height, &p, 0); -src/planrpcx.c: //++++ modexPalUpdate1(ptmp.palette); -src/planrpcx.c: //modexDrawBmpPBufRegion(&gvar.video.page[0], 64, 64, 48, 32, 24, 32, ptmp); -src/planrpcx.c: //modexDrawPBuf(&gvar.video.page[0], 64, 64, &ptmp, 0); -src/planrpcx.c: //print out the contents of each plane -src/planrpcx.c: //fprintf(stderr, "gvar.video.page[0].width: %u\n", gvar.video.page[0].width); -src/planrpcx.c: //fprintf(stderr, "gvar.video.page[0].height: %u\n", gvar.video.page[0].height); -src/_scroll.c: * along with this program. If not, see , or -src/_scroll.c://#include "src/lib/16_head.h"//included already -src/_scroll.c://#define FADE -src/_scroll.c:#define MODEX //this is for mode x initiating -src/_scroll.c://word far *clock= (word far*) 0x046C; /* 18.2hz clock */ -src/_scroll.c://bitmap_t *p; -src/_scroll.c://word pn=0; //i forgot ww -src/_scroll.c://debugswitches -src/_scroll.c://extern boolean pageflipflop=1; -src/_scroll.c: //static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ -src/_scroll.c: //map_view_db_t pgid[4]; -src/_scroll.c://#ifdef FADE -src/_scroll.c://#endif -src/_scroll.c: // DOSLIB: check our environment -src/_scroll.c: // DOSLIB: what CPU are we using? -src/_scroll.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/_scroll.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/_scroll.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/_scroll.c: // the CPU to carry out tasks. --J.C. -src/_scroll.c: // DOSLIB: check for VGA -src/_scroll.c: // hardware must be VGA or higher! -src/_scroll.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log -src/_scroll.c: * read_vrs(&gvar, "data/spri/chikyuu.vrs", player[0].spri->spritesheet); // load sprite -src/_scroll.c: modexPalBlack(); //reset the palette~ -src/_scroll.c: modexPalBlack(); //so player will not see loadings~ -src/_scroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen -src/_scroll.c: //_fmemcpy(mv[1].page->data, mv[0].page->data, mv[0].page->pagesize); -src/_scroll.c: //TODO: put player in starting position of spot -src/_scroll.c: //default player position on the viewable map -src/_scroll.c: //IN_initplayer(&player, 1); -src/_scroll.c: //modexClearRegion(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 32, 15); -src/_scroll.c: //PBUFSFUN(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA); -src/_scroll.c: //PBUFSFUN(mv[0].page, player[0].x, player[0].y-TILEWH, 16, 64, 16, 32, player[0].data); -src/_scroll.c: else modexShowPage(mv[0].page);//!(gvar.video.p) -src/_scroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible. -src/_scroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47); -src/_scroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45); -src/_scroll.c:// { -src/_scroll.c:// unsigned int k,j,o; -src/_scroll.c:// /* fill screen with a distinctive pattern */ -src/_scroll.c:// for (k=0;k < vga_state.vga_width;k++) { -src/_scroll.c:// o = k >> 2; -src/_scroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3)); -src/_scroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride) -src/_scroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15! -src/_scroll.c:// } -src/_scroll.c:// } -src/_scroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square -src/_scroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction -src/_scroll.c: //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map -src/_scroll.c: //player movement -src/_scroll.c: //printf(" player[0].q: %d", player[0].q); printf(" player[0].d: %d\n", player[0].d); -src/_scroll.c: //the scripting stuff.... -src/_scroll.c: //if(((player[0].triggerx == TRIGGX && player[0].triggery == TRIGGY) && IN_KeyDown(0x1C))||(player[0].tx == 5 && player[0].ty == 5)) -src/_scroll.c: //debugging binds! -src/_scroll.c: } //p -src/_scroll.c:// paloffset=0; modexPalBlack(); modexPalUpdate(player[0].data, &paloffset, 0, 0); -src/_scroll.c:// printf("1paloffset = %d\n", paloffset/3); -src/_scroll.c:// modexPalUpdate(map.tiles->data, &paloffset, 0, 0); -src/_scroll.c:// printf("2paloffset = %d\n", paloffset/3); -src/_scroll.c:// modexpdump(mv[0].page); modexpdump(mv[1].page); -src/_scroll.c: //pan switch -src/_scroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12 -src/_scroll.c: if(IN_KeyDown(87)) //f11 -src/_scroll.c:// VGAmodeX(0, 0, &gvar); -src/_scroll.c:// IN_Shutdown(); -src/_scroll.c:// __asm -src/_scroll.c:// { -src/_scroll.c:// mov ah,31h -src/_scroll.c:// int 21h -src/_scroll.c:// } -src/_scroll.c: if(IN_KeyDown(68)) //f10 -src/_scroll.c: if(IN_KeyDown(67)) //f9 -src/_scroll.c: //IN_UserInput(1,1); -src/_scroll.c: if(IN_KeyDown(66)) //f8 -src/_scroll.c:// modexDrawSprite(mv[0].page, 16, 16, p); -src/_scroll.c:// modexDrawSprite(mv[0].page, 32+48, 16, (player[0].data)); -src/_scroll.c: //TODO fmemtest into page -src/_scroll.c: /*if(IN_KeyDown(4+1)) //4 -src/_scroll.c: //9 -src/_scroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); } -src/_scroll.c: if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync! -src/_scroll.c: //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8); -src/_scroll.c: //else printf("\nplayer[0].y: %d\n", player[0].y); -src/_scroll.c:// printf("palette offset: %d\n", paloffset/3); -src/_scroll.c://++++ printf("Total used: %zu\n", oldfreemem-GetFreeSize()); -src/_scroll.c://++++ printf("Total free: %zu\n", GetFreeSize()); -src/_scroll.c://not used now printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n"); -src/_scroll.c://not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n"); -src/_scroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty); -src/_scroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk); -src/_scroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk); -src/_scroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]); -src/scroll.c: * along with this program. If not, see , or -src/scroll.c://#define FADE -src/scroll.c:#define MODEX //this is for mode x initiating -src/scroll.c://word far *clock= (word far*) 0x046C; /* 18.2hz clock */ -src/scroll.c://bitmap_t *p; -src/scroll.c://word pn=0; //i forgot ww -src/scroll.c://debugswitches -src/scroll.c://extern boolean pageflipflop=1; -src/scroll.c: //static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ -src/scroll.c: //map_view_db_t pgid[4]; -src/scroll.c://#ifdef FADE -src/scroll.c: //static word paloffset=0; -src/scroll.c://#endif -src/scroll.c: //byte *mesg=malloc(sizeof(dword)); -src/scroll.c: // DOSLIB: check our environment -src/scroll.c: // DOSLIB: what CPU are we using? -src/scroll.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/scroll.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/scroll.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/scroll.c: // the CPU to carry out tasks. --J.C. -src/scroll.c: // DOSLIB: check for VGA -src/scroll.c: // hardware must be VGA or higher! -src/scroll.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log -src/scroll.c: //mappalptr = map.tiles->btdata->palette; -src/scroll.c: player[0].data = malloc(48*128); //TODO use exmm -src/scroll.c: *player[0].data = bitmapLoadPcx("data/chikyuu.pcx"); // load sprite -src/scroll.c:////++++ (player[0].data) = *planar_buf_from_bitmap(&p); -src/scroll.c: //IN_Default(1,&player,ctrl_Joystick); -src/scroll.c:// printf("%dx%d\n", gvar.video.page[0].sw, gvar.video.page[0].sh); -src/scroll.c: modexPalBlack(); //reset the palette~ -src/scroll.c:// printf("Total used @ before palette initiation: %zu\n", oldfreemem-GetFreeSize()); -src/scroll.c://++++ player[0].data.offset=(paloffset/3); -src/scroll.c://++++ modexPalUpdate1(&player[0].data, &paloffset, 0, 0); -src/scroll.c://++++0000 modexPalUpdate1(map.tiles->btdata->palette); -src/scroll.c: //printf(" %d\n", sizeof(ptmp->data)); -src/scroll.c: //printf("1: %d\n", paloffset); -src/scroll.c://++++ map.tiles->data->offset=(paloffset/3); -src/scroll.c: //XTmodexPalUpdate(map.tiles->data, &paloffset, 0, 0); -src/scroll.c:// printf("\n====\n"); -src/scroll.c:// printf("0 paloffset= %d\n", paloffset/3); -src/scroll.c:// printf("====\n\n"); -src/scroll.c: modexPalBlack(); //so player will not see loadings~ -src/scroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen -src/scroll.c: //_fmemcpy(mv[1].page->data, mv[0].page->data, mv[0].page->pagesize); -src/scroll.c: //TODO: put player in starting position of spot -src/scroll.c: //default player position on the viewable map -src/scroll.c: IN_initplayer(&player);//, 0); -src/scroll.c: //IN_initplayer(&player, 1); -src/scroll.c: //modexClearRegion(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 32, 15); -src/scroll.c: //PBUFSFUN(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA); -src/scroll.c: else modexShowPage(mv[0].page);//!(gvar.video.p) -src/scroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible. -src/scroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47); -src/scroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45); -src/scroll.c:// { -src/scroll.c:// unsigned int k,j,o; -src/scroll.c:// /* fill screen with a distinctive pattern */ -src/scroll.c:// for (k=0;k < vga_state.vga_width;k++) { -src/scroll.c:// o = k >> 2; -src/scroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3)); -src/scroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride) -src/scroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15! -src/scroll.c:// } -src/scroll.c:// } -src/scroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square -src/scroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction -src/scroll.c: //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map -src/scroll.c: //player movement -src/scroll.c: //printf(" player[0].q: %d", player[0].q); printf(" player[0].d: %d\n", player[0].d); -src/scroll.c: //the scripting stuff.... -src/scroll.c: //if(((player[0].triggerx == TRIGGX && player[0].triggery == TRIGGY) && IN_KeyDown(0x1C))||(player[0].tx == 5 && player[0].ty == 5)) -src/scroll.c: //debugging binds! -src/scroll.c: } //p -src/scroll.c: //pan switch -src/scroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12 -src/scroll.c: if(IN_KeyDown(87)) //f11 -src/scroll.c:// VGAmodeX(0, 0, &gvar); -src/scroll.c:// IN_Shutdown(); -src/scroll.c:// __asm -src/scroll.c:// { -src/scroll.c:// mov ah,31h -src/scroll.c:// int 21h -src/scroll.c:// } -src/scroll.c: if(IN_KeyDown(68)) //f10 -src/scroll.c: if(IN_KeyDown(67)) //f9 -src/scroll.c: //IN_UserInput(1,1); -src/scroll.c: if(IN_KeyDown(66)) //f8 -src/scroll.c:// modexDrawSprite(mv[0].page, 16, 16, p); -src/scroll.c: //TODO fmemtest into page -src/scroll.c: /*if(IN_KeyDown(4+1)) //4 -src/scroll.c: //9 -src/scroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); } -src/scroll.c: if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync! -src/scroll.c: //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8); -src/scroll.c: //else printf("\nplayer[0].y: %d\n", player[0].y); -src/scroll.c:// printf("palette offset: %d\n", paloffset/3); -src/scroll.c://++++ printf("Total used: %zu\n", oldfreemem-GetFreeSize()); -src/scroll.c://++++ printf("Total free: %zu\n", GetFreeSize()); -src/scroll.c://not used now printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n"); -src/scroll.c://not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n"); -src/scroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty); -src/scroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk); -src/scroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk); -src/scroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]); -src/sountest.c: * along with this program. If not, see , or -src/sountest.c://#include "src/lib/16_snd.h" -src/sountest.c:// static FMInstrument testInst = -src/sountest.c://{ -src/sountest.c://0x00, 0x01, /* modulator frequency multiple... 0x20 */ -src/sountest.c://0x00, 0x00, /* modulator frequency level... 0x40 */ -src/sountest.c://0xF0, 0xF0, /* modulator attack/decay... 0x60 */ -src/sountest.c://0x73, 0x73, /* modulator sustain/release... 0x80 */ -src/sountest.c://0x03, 0x00, /* output waveform distortion 0xE0 */ -src/sountest.c://0x36, /* feedback algorithm and strength 0xC0 */ -src/sountest.c://}; -src/sountest.c: //FMReset(); -src/sountest.c: //FMSetVoice(0, &testInst); -src/sountest.c:// vga_bios_set_80x50_text(); -src/sountest.c: //FMKeyOn(0, 0x106, 4); -src/sountest.c: //FMKeyOff(0); -src/test0.c:// w = _nmalloc(sizeof(unsigned)); -src/test2.c: * along with this program. If not, see , or -src/test2.c://#include "src/lib/bitmap.h" -src/test2.c://---- planar_buf_t *p; -src/test2.c: //byte color; -src/test2.c:// file = fopen("ptmp0.pcx", "wb"); -src/test2.c: //fwrite(p, 1, p->width*p->height, file); -src/test2.c: //fclose(file); -src/test.c: * along with this program. If not, see , or -src/test.c: //argument -src/test.c: // DOSLIB: check our environment -src/test.c: // DOSLIB: what CPU are we using? -src/test.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/test.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/test.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/test.c: // the CPU to carry out tasks. --J.C. -src/test.c: // DOSLIB: check for VGA -src/test.c: // hardware must be VGA or higher! -src/test.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log -src/test.c: //modexPalOverscan(44+1); -src/test.c:// gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]); -src/test.c:// gvar.video.page[1] = modexNextPage(&gvar.video.page[0]); -src/test.c: // go right -src/test.c: // go left -src/test.c: // go up -src/test.c: // go down -src/test.c:// if(IN_KeyDown(6)) -src/test.c:// { -src/test.c:// modexClearRegion(&gvar.video.page[1], gvar.video.page[1].sw, 16, 8, 4, 45); -src/test.c:// } -src/test.c:// if(IN_KeyDown(4+1)){ -src/test.c:// modexClearRegion(&gvar.video.page[1], 16, 16, gvar.video.page[1].sw, gvar.video.page[1].sh, 128); -src/test.c:// modexClearRegion(&gvar.video.page[1], 32, 32, gvar.video.page[1].sw-32, gvar.video.page[1].sh-32, 42); -src/test.c:// modexClearRegion(&gvar.video.page[1], 48, 48, gvar.video.page[1].sw-64, gvar.video.page[1].sh-64, 128); -src/test.c:// } -src/test.c: //} -src/test.c:// if(i>PAL_SIZE) i=0; -src/test.c: }//9 -src/test.c: }//p -src/testemm0.c://#include "src/lib/doslib/cpu.h" -src/testemm0.c://#include -src/testemm0.c:// printf("Allocating EMM pages (1.6MB): "); -src/testemm0.c: //h2 = emm_alloc_pages(0x19999AUL >> 14UL); -src/testemm0.c: //printf("Allocating EMM pages (12MB): "); -src/testemm0.c: //h3 = emm_alloc_pages(0xC00000UL >> 14UL); -src/testemm.c://#include "src/lib/doslib/cpu.h" -src/testemm.c://#include -src/tesuto.c: vga_enable_256color_modex(); // VGA mode X -src/tesuto.c: vga_state.vga_width = 320; // VGA lib currently does not update this -src/tesuto.c: vga_state.vga_height = 240; // VGA lib currently does not update this -src/tesuto.c:#if 1 // 320x240 test mode: this is how Project 16 is using our code, enable for test case -src/tesuto.c: // 320x240 mode 60Hz -src/tesuto.c: vga_state.vga_height = 240; // VGA lib currently does not update this -src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! -src/tesuto.c: //while (getch() != 13); -src/tesuto.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks. -src/tesuto.c: // if the sprite's edge pixels are clear anyway, you can set this to 0. -src/tesuto.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr -src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! -src/tesuto.c: o = offscreen_ofs; // source offscreen -src/tesuto.c: o2 = (ry * vga_state.vga_stride) + (rx >> 2); // dest visible (original stride) -src/tesuto.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks. -src/tesuto.c: // if the sprite's edge pixels are clear anyway, you can set this to 0. -src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! -src/tesuto.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr -src/tesuto.c: o = pattern_ofs + (ry * vga_state.vga_stride) + (rx >> 2); // source offscreen -src/tesuto.c: o = offscreen_ofs; // source offscreen -src/tesuto.c: o2 = (ry * vga_state.vga_stride) + (rx >> 2); // dest visible (original stride) -src/tesuto.c: dstart = (vga_state.vga_height - dh) / 2; // center the squash effect on screen, otherwise it would squash to top of screen -src/tesuto.h://VGA_RAM_PTR vga_graphics_ram = (VGA_RAM_PTR)MK_FP(0xA000,0x0000); -src/tesuto.h://unsigned char vga_stride = 80; // 80 x 4 = 320 for 320-pixel wide modes -src/tsthimem.c://#include "src/lib/doslib/cpu.h" -src/tsthimem.c://#include doswin.h> -src/vgacamm.c: * along with this program. If not, see , or -src/vgacamm.c: // DOSLIB: check our environment -src/vgacamm.c: // DOSLIB: what CPU are we using? -src/vgacamm.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/vgacamm.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/vgacamm.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/vgacamm.c: // the CPU to carry out tasks. --J.C. -src/vgacamm.c: // DOSLIB: check for VGA -src/vgacamm.c: // hardware must be VGA or higher! -src/vgacamm.c: // -src/vgacamm.c: // -src/vgacamm.c: //printf("CPU to VGA: %f\n", t1); -src/vgacamm.c: //printf("VGA to VGA: %f\n", t2); -src/vgacamm.c:// printf("Num %d", num_of_vrl); -src/vgmtest.c: * along with this program. If not, see , or -src/vgmtest.c://#include "src/lib/doslib/adlib.h" -src/vgmtest.c: //ym3812_w(0, 0, reg); -src/vgmtest.c: //ym3812_w(0, 1, data); -src/vgmtest.c: //return ym3812_r(0, 0); -src/vgmtest.c: //++++global_game_variables_t gvar; -src/vgmtest.c: //while(!kbhit()) -src/vrstest.c: * along with this program. If not, see , or -src/vrstest.c://#include "src/lib/16_head.h" -src/vrstest.c: //__segment sega; -src/vrstest.c: //vrl1_vgax_offset_t * off, *off1; -src/vrstest.c: // DOSLIB: check our environment -src/vrstest.c: // DOSLIB: what CPU are we using? -src/vrstest.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/vrstest.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/vrstest.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/vrstest.c: // the CPU to carry out tasks. --J.C. -src/vrstest.c: // DOSLIB: check for VGA -src/vrstest.c: // hardware must be VGA or higher! -src/vrstest.c: //gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]); -src/vrstest.c: // What should be done by read_vrs: -src/vrstest.c: //sega = (mm.bufferseg); -src/vrstest.c: // Insert sanity cheks later -src/vrstest.c: // Allocate memory for vrl line offsets table -src/vrstest.c: // Calculate line offsets for each vrl -src/vrstest.c: // Calc. vrl size as (next_offset - curr_offset) -src/vrstest.c: // If it's the last vrl, size is (next_vrs_struct_offset - curr_offset) -src/vrstest.c: //read_vrs(&gvar, "data/spri/chikyuu.vrs", &vrs); -src/vrstest.c:// Uncomment to see broken sprites -src/vrstest.c: //MM_FreePtr(&((void __based(sega)*)spri.spritesheet->buffer), &mm); -src/vrstest.c: //printf("CPU to VGA: %f\n", t1); -src/vrstest.c: //printf("VGA to VGA: %f\n", t2); -src/vrstest.c://0000 printf("gvar.video.page[0].width: %u\n", gvar.video.page[0].width); -src/vrstest.c://0000 printf("gvar.video.page[0].height: %u\n", gvar.video.page[0].height); -src/zcroll.c: * along with this program. If not, see , or -src/zcroll.c://debugswitches -src/zcroll.c://extern boolean pageflipflop=1; -src/zcroll.c://static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ -src/zcroll.c://map_view_db_t pgid[4]; -src/zcroll.c://#ifdef FADE -src/zcroll.c://#endif -src/zcroll.c: // OK, this one takes hellova time and needs to be done in farmalloc or MM_... -src/zcroll.c: // create the map -src/zcroll.c://goto pee; -src/zcroll.c: // data -src/zcroll.c: // input! -src/zcroll.c: // save the palette -src/zcroll.c: modexPalBlack(); //reset the palette~ -src/zcroll.c: modexPalBlack(); //so player will not see loadings~ -src/zcroll.c: // setup camera and screen~ -src/zcroll.c: // set up paging -src/zcroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen -src/zcroll.c: //_fmemcpy(mv[1].page->data, mv->page->data, mv->page->pagesize); -src/zcroll.c: //TODO: put player in starting position of spot -src/zcroll.c: //default player position on the viewable map -src/zcroll.c: //IN_initplayer(&player, 1); -src/zcroll.c:// #ifndef SPRITE -src/zcroll.c:// modexClearRegion(mv->page, player->x, player->y-TILEWH, 16, 32, 15); -src/zcroll.c:// //modexClearRegion(mv[1].page, player->x, player->y-TILEWH, 16, 32, 15); -src/zcroll.c:// #else -src/zcroll.c:// //PBUFSFUN(mv[1].page, player->x, player->y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA); -src/zcroll.c:// // PBUFSFUN(mv->page, player->x, player->y-TILEWH, 16, 64, 16, 32, player->data); -src/zcroll.c: //animate_spri(&(player->ent->spri)); -src/zcroll.c:// #endif -src/zcroll.c: modexShowPage(mv->page);//!(gvar.video.p) -src/zcroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible. -src/zcroll.c: // buffer pages -src/zcroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47); -src/zcroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45); -src/zcroll.c:// { -src/zcroll.c:// unsigned int k,j,o; -src/zcroll.c:// // fill screen with a distinctive pattern -src/zcroll.c:// for (k=0;k < vga_state.vga_width;k++) { -src/zcroll.c:// o = k >> 2; -src/zcroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3)); -src/zcroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride) -src/zcroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15! -src/zcroll.c:// } -src/zcroll.c:// } -src/zcroll.c:// modexFadeOn(4, gpal);*/ -src/zcroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square -src/zcroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction -src/zcroll.c: //when player->tx or player->ty == 0 or player->tx == 20 or player->ty == 15 then stop because that is edge of map and you do not want to walk of the map -src/zcroll.c: //player movement -src/zcroll.c: //the scripting stuff.... -src/zcroll.c:*/ //debugging binds! -src/zcroll.c: } //p -src/zcroll.c: //pan switch -src/zcroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12 -src/zcroll.c: if(IN_KeyDown(87)) //f11 -src/zcroll.c: if(IN_KeyDown(68)) //f10 -src/zcroll.c: if(IN_KeyDown(67)) //f9 -src/zcroll.c: if(IN_KeyDown(66)) //f8 -src/zcroll.c: // modexDrawSprite(mv->page, 16, 16, p); -src/zcroll.c: //TODO fmemtest into page -src/zcroll.c: /*if(IN_KeyDown(4+1)) //4 -src/zcroll.c: //9 -src/zcroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); } -src/zcroll.c: if((player->q==1) && !(player->x%TILEWH==0 && player->y%TILEWH==0)) break; //incase things go out of sync! -src/zcroll.c://pee: -src/zcroll.c: //if(player->hp==0) printf("%d wwww\n", player->y+8); -src/zcroll.c: //else printf("\nplayer->y: %d\n", player->y); -src/zcroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty); -src/zcroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk); -src/zcroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk); -src/zcroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv->map->width, mv->map->height, mv->map->data[0]); -src/lib/16_ca.c:// ID_CA.C -src/lib/16_ca.c://#define THREEBYTEGRSTARTS -src/lib/16_ca.c://https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg -src/lib/16_ca.c: word bit0,bit1; // 0-255 is a character, > is a pointer to a node -src/lib/16_ca.c:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse -src/lib/16_ca.c:long _seg *audiostarts; // array of offsets in audio / audiot -src/lib/16_ca.c:int grhandle; // handle to EGAGRAPH -src/lib/16_ca.c:int maphandle; // handle to MAPTEMP / GAMEMAPS -src/lib/16_ca.c:int audiohandle; // handle to AUDIOT / AUDIO -src/lib/16_ca.c://void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,unsigned length); -src/lib/16_ca.c://#define GRFILEPOS(c) (*(long far *)(((byte far *)grstarts)+(c)*3)&0xffffff) -src/lib/16_ca.c: //dword fat=0; -src/lib/16_ca.c: //word segm=0; -src/lib/16_ca.c: //segm=(length%0xfffflu)-1; -src/lib/16_ca.c: //fat=segm*0xfffflu; -src/lib/16_ca.c: //length-=fat; -src/lib/16_ca.c: return 0;//TODO: EXPAND!!! -src/lib/16_ca.c: //if(!fat&&!segm) -src/lib/16_ca.c: //{ -src/lib/16_ca.c: mov ah,0x3f // READ w/handle -src/lib/16_ca.c:// errno = EINVFMT; // user manager knows this is bad read -src/lib/16_ca.c: //dword fat=0; -src/lib/16_ca.c: //word segm=0; -src/lib/16_ca.c: //segm=(length%0xfffflu)-1; -src/lib/16_ca.c: //fat=segm*0xfffflu; -src/lib/16_ca.c: //length-=fat; -src/lib/16_ca.c: //if(!fat&&!segm) -src/lib/16_ca.c: //{ -src/lib/16_ca.c: mov ah,0x40 // WRITE w/handle -src/lib/16_ca.c:// errno = ENOMEM; // user manager knows this is bad write -src/lib/16_ca.c: //long size; -src/lib/16_ca.c: //sdword size; -src/lib/16_ca.c: //long size; -src/lib/16_ca.c: //long size; -src/lib/16_ca.c:// unsigned bit,byte,node,code; -src/lib/16_ca.c:// huffnode *nodeon; -src/lib/16_ca.c: headptr = hufftable+254; // head node is allways node 254 -src/lib/16_ca.c: source++; // normalize -src/lib/16_ca.c:// -src/lib/16_ca.c:// ds:si source -src/lib/16_ca.c:// es:di dest -src/lib/16_ca.c:// ss:bx node pointer -src/lib/16_ca.c:// -src/lib/16_ca.c://-------------------------- -src/lib/16_ca.c:// expand less than 64k of data -src/lib/16_ca.c://-------------------------- -src/lib/16_ca.c: mov ch,[si] // load first byte -src/lib/16_ca.c: test ch,cl // bit set? -src/lib/16_ca.c: mov dx,[ss:bx] // take bit0 path from node -src/lib/16_ca.c: shl cl,1 // advance to next bit position -src/lib/16_ca.c: mov dx,[ss:bx+2] // take bit1 path -src/lib/16_ca.c: shl cl,1 // advance to next bit position -src/lib/16_ca.c: mov ch,[si] // load next byte -src/lib/16_ca.c: mov cl,1 // back to first bit -src/lib/16_ca.c: or dh,dh // if dx<256 its a byte, else move node -src/lib/16_ca.c: mov bx,dx // next node = (huffnode *)code -src/lib/16_ca.c: inc di // write a decopmpressed byte out -src/lib/16_ca.c: mov bx,[word ptr headptr] // back to the head node for next bit -src/lib/16_ca.c: cmp di,ax // done? -src/lib/16_ca.c://-------------------------- -src/lib/16_ca.c:// expand more than 64k of data -src/lib/16_ca.c://-------------------------- -src/lib/16_ca.c: lodsb // load first byte -src/lib/16_ca.c: test al,cl // bit set? -src/lib/16_ca.c: mov dx,[ss:bx] // take bit0 path from node -src/lib/16_ca.c: mov dx,[ss:bx+2] // take bit1 path -src/lib/16_ca.c: shl cl,1 // advance to next bit position -src/lib/16_ca.c: cmp si,0x10 // normalize ds:si -src/lib/16_ca.c: mov cl,1 // back to first bit -src/lib/16_ca.c: or dh,dh // if dx<256 its a byte, else move node -src/lib/16_ca.c: mov bx,dx // next node = (huffnode *)code -src/lib/16_ca.c: inc di // write a decopmpressed byte out -src/lib/16_ca.c: mov bx,[word ptr headptr] // back to the head node for next bit -src/lib/16_ca.c: cmp di,0x10 // normalize es:di -src/lib/16_ca.c: jns expand // when length = ffff ffff, done -src/lib/16_ca.c: { // have to insert a word containing the tag byte -src/lib/16_ca.c: { // have to insert a word containing the tag byte -src/lib/16_ca.c:// -src/lib/16_ca.c:// compress it -src/lib/16_ca.c:// -src/lib/16_ca.c: // -src/lib/16_ca.c: // send a tag / count / value string -src/lib/16_ca.c: // -src/lib/16_ca.c: // -src/lib/16_ca.c: // send word without compressing -src/lib/16_ca.c: // -src/lib/16_ca.c:// unsigned value,count,i; -src/lib/16_ca.c:// -src/lib/16_ca.c:// expand it -src/lib/16_ca.c:// -src/lib/16_ca.c: // -src/lib/16_ca.c: // uncompressed -src/lib/16_ca.c: // -src/lib/16_ca.c: // -src/lib/16_ca.c: // compressed string -src/lib/16_ca.c: // -src/lib/16_ca.c:// -src/lib/16_ca.c:// ax = source value -src/lib/16_ca.c:// bx = tag value -src/lib/16_ca.c:// cx = repeat counts -src/lib/16_ca.c:// dx = scratch -src/lib/16_ca.c:// -src/lib/16_ca.c:// NOTE: A repeat count that produces 0xfff0 bytes can blow this! -src/lib/16_ca.c:// -src/lib/16_ca.c: mov cx,ax // repeat count -src/lib/16_ca.c: lodsw // repeat value -src/lib/16_ca.c: cmp si,0x10 // normalize ds:si -src/lib/16_ca.c: cmp di,0x10 // normalize es:di -src/lib/16_ca.c:////++++ enable! -src/lib/16_ca.c:// -src/lib/16_ca.c:// load ???dict.ext (huffman dictionary for graphics files) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// load the data offsets from ???head.ext -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// Open the graphics file, leaving it open until the game is finished -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// load the pic and sprite headers into the arrays in the data segment -src/lib/16_ca.c:// -src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTPIC); // position file pointer -src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTPICM); // position file pointer -src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer -src/lib/16_ca.c://========================================================================== -src/lib/16_ca.c:// int handle; -src/lib/16_ca.c:// long length; -src/lib/16_ca.c:// -src/lib/16_ca.c:// load maphead.ext (offsets and tileinfo for map file) -src/lib/16_ca.c:// -src/lib/16_ca.c:// #ifndef MAPHEADERLINKED -src/lib/16_ca.c:// if ((handle = open("MAPHEAD."EXT, -src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1) -src/lib/16_ca.c:// printf("Can't open MAPHEAD."EXT"!"); -src/lib/16_ca.c:// length = filelength(handle); -src/lib/16_ca.c:// MM_GetPtr (&(memptr)tinf,length); -src/lib/16_ca.c:// CA_FarRead(handle, tinf, length); -src/lib/16_ca.c:// close(handle); -src/lib/16_ca.c:// //#else -src/lib/16_ca.c:// -src/lib/16_ca.c:// tinf = (byte _seg *)FP_SEG(&maphead); -src/lib/16_ca.c:// -src/lib/16_ca.c:// #endif -src/lib/16_ca.c:// -src/lib/16_ca.c:// open the data file -src/lib/16_ca.c:// -src/lib/16_ca.c://TODO: multiple files -src/lib/16_ca.c:// #ifdef MAPHEADERLINKED -src/lib/16_ca.c:// if ((maphandle = open("GAMEMAPS."EXT, -src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1) -src/lib/16_ca.c:// Quit ("Can't open GAMEMAPS."EXT"!"); -src/lib/16_ca.c:// //#else -src/lib/16_ca.c:// if ((maphandle = open("MAPTEMP."EXT, -src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1) -src/lib/16_ca.c:// Quit ("Can't open MAPTEMP."EXT"!"); -src/lib/16_ca.c:// #endif -src/lib/16_ca.c://========================================================================== -src/lib/16_ca.c:// -src/lib/16_ca.c:// load maphead.ext (offsets and tileinfo for map file) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// open the data file -src/lib/16_ca.c:// -src/lib/16_ca.c://========================================================================== -src/lib/16_ca.c:#endif//profile -src/lib/16_ca.c://========================================================================== -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c: return; // allready in memory -src/lib/16_ca.c:// MDM begin - (GAMERS EDGE) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// MDM end -src/lib/16_ca.c:// -src/lib/16_ca.c:// load the chunk into a buffer, either the miscbuffer if it fits, or allocate -src/lib/16_ca.c:// a larger buffer -src/lib/16_ca.c:// -src/lib/16_ca.c: source += 4; // skip over length -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c: MM_SetPurge (&(memptr)audiosegs[start],3); // make purgable -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c://++++#if GRMODE == EGAGR -src/lib/16_ca.c: sheight = height; // because we are going to reassign bp -src/lib/16_ca.c:asm mov ds,ax // source and dest are in same segment, and all local -src/lib/16_ca.c:asm mov bp,WORD PTR [shifttabletable+bp] // bp holds pointer to shift table -src/lib/16_ca.c:// -src/lib/16_ca.c:// table shift the mask -src/lib/16_ca.c:// -src/lib/16_ca.c:asm mov BYTE PTR [di],255 // 0xff first byte -src/lib/16_ca.c:asm mov al,[bx] // source -src/lib/16_ca.c:asm inc bx // next source byte -src/lib/16_ca.c:asm mov ax,[bp+si] // table shift into two bytes -src/lib/16_ca.c:asm and [di],al // and with first byte -src/lib/16_ca.c:asm mov [di],ah // replace next byte -src/lib/16_ca.c:asm inc di // the last shifted byte has 1s in it -src/lib/16_ca.c:// -src/lib/16_ca.c:// table shift the data -src/lib/16_ca.c:// -src/lib/16_ca.c:asm shl dx,1 // four planes of data -src/lib/16_ca.c:asm mov BYTE PTR [di],0 // 0 first byte -src/lib/16_ca.c:asm mov al,[bx] // source -src/lib/16_ca.c:asm inc bx // next source byte -src/lib/16_ca.c:asm mov ax,[bp+si] // table shift into two bytes -src/lib/16_ca.c:asm or [di],al // or with first byte -src/lib/16_ca.c:asm mov [di],ah // replace next byte -src/lib/16_ca.c:asm inc di // the last shifted byte has 0s in it -src/lib/16_ca.c:// -src/lib/16_ca.c:// done -src/lib/16_ca.c:// -src/lib/16_ca.c:asm mov ax,ss // restore data segment -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c:// -src/lib/16_ca.c:// CGA has no pel panning, so shifts are never needed -src/lib/16_ca.c:// -src/lib/16_ca.c: dest->sourceoffset[0] = MAXSHIFTS*6; // start data after 3 unsigned tables -src/lib/16_ca.c:// -src/lib/16_ca.c:// expand the unshifted shape -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// calculate sizes -src/lib/16_ca.c:// -src/lib/16_ca.c: shiftstarts[0] = MAXSHIFTS*6; // start data after 3 unsigned tables -src/lib/16_ca.c: shiftstarts[1] = shiftstarts[0] + smallplane*5; // 5 planes in a sprite -src/lib/16_ca.c: shiftstarts[4] = shiftstarts[3] + bigplane*5; // nothing ever put here -src/lib/16_ca.c:// -src/lib/16_ca.c:// expand the unshifted shape -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// make the shifts! -src/lib/16_ca.c:// -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c: // -src/lib/16_ca.c: // expanded sizes of tile8/16/32 are implicit -src/lib/16_ca.c: // -src/lib/16_ca.c: if (chunkvideo.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed -src/lib/16_ca.c: return; // allready in memory -src/lib/16_ca.c:// MDM begin - (GAMERS EDGE) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// MDM end -src/lib/16_ca.c:// -src/lib/16_ca.c:// load the chunk into a buffer, either the miscbuffer if it fits, or allocate -src/lib/16_ca.c:// a larger buffer -src/lib/16_ca.c:// -src/lib/16_ca.c: if (pos<0) // $FFFFFFFF start is a sparse tile -src/lib/16_ca.c: while (GRFILEPOS(next) == -1) // skip past any sparse tiles -src/lib/16_ca.c://========================================================================== -src/lib/16_ca.c:// -src/lib/16_ca.c:// free up memory from last map -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// load map header -src/lib/16_ca.c:// The header will be cached if it is still around -src/lib/16_ca.c:// -src/lib/16_ca.c: //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum]; -src/lib/16_ca.c: if (pos<0) // $FFFFFFFF start is a sparse map -src/lib/16_ca.c:// -src/lib/16_ca.c:// load the planes in -src/lib/16_ca.c:// If a plane's pointer still exists it will be overwritten (levels are -src/lib/16_ca.c:// allways reloaded, never cached) -src/lib/16_ca.c:// -src/lib/16_ca.c: continue; // the plane is not used in this game -src/lib/16_ca.c: // -src/lib/16_ca.c: // unhuffman, then unRLEW -src/lib/16_ca.c: // The huffman'd chunk has a two byte expanded length first -src/lib/16_ca.c: // The resulting RLEW chunk also does, even though it's not really -src/lib/16_ca.c: // needed -src/lib/16_ca.c: // -src/lib/16_ca.c: // -src/lib/16_ca.c: // unRLEW, skipping expanded length -src/lib/16_ca.c: // -src/lib/16_ca.c:}//*/ -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c: ////++++++++++++++++++++++++++++++++++++++++++CA_CacheMarks(NULL); -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c:// -src/lib/16_ca.c:// free graphics -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// free cursor sprite and background save -src/lib/16_ca.c:// -src/lib/16_ca.c: //VW_FreeCursor (); -src/lib/16_ca.c:// -src/lib/16_ca.c:// free map headers and map planes -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// free sounds -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// free graphics -src/lib/16_ca.c:// -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c:// -src/lib/16_ca.c:// draw dialog window (masked tiles 12 - 20 are window borders) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// draw thermometer bar -src/lib/16_ca.c:// -src/lib/16_ca.c: VWB_DrawTile8(thx,thy,0); // CAT3D numbers -src/lib/16_ca.c: thx += 4; // first line location -src/lib/16_ca.c://=========================================================================== -src/lib/16_ca.c:*//* -src/lib/16_ca.c: long bufferstart,bufferend; // file position of general buffer -src/lib/16_ca.c:// -src/lib/16_ca.c:// go through and make everything not needed purgable -src/lib/16_ca.c:// -src/lib/16_ca.c: if (grsegs[i]) // its allready in memory, make -src/lib/16_ca.c: MM_SetPurge(&grsegs[i],0); // sure it stays there! -src/lib/16_ca.c: if (grsegs[i]) // not needed, so make it purgeable -src/lib/16_ca.c: if (!numcache) // nothing to cache! -src/lib/16_ca.c:// MDM begin - (GAMERS EDGE) -src/lib/16_ca.c:// -src/lib/16_ca.c:// -src/lib/16_ca.c:// MDM end -src/lib/16_ca.c:// -src/lib/16_ca.c:// go through and load in anything still needed -src/lib/16_ca.c:// -src/lib/16_ca.c: bufferstart = bufferend = 0; // nothing good in buffer now -src/lib/16_ca.c:// -src/lib/16_ca.c:// update thermometer -src/lib/16_ca.c:// -src/lib/16_ca.c: while (GRFILEPOS(next) == -1) // skip past any sparse tiles -src/lib/16_ca.c: // data is allready in buffer -src/lib/16_ca.c: // load buffer with a new block from disk -src/lib/16_ca.c: // try to get as many of the needed blocks in as possible -src/lib/16_ca.c: while (GRFILEPOS(++next) == -1) // skip past any sparse tiles -src/lib/16_ca.c: next = NUMCHUNKS; // read pos to posend -src/lib/16_ca.c: // big chunk, allocate temporary buffer -src/lib/16_ca.c:// -src/lib/16_ca.c:// finish up any thermometer remnants -src/lib/16_ca.c:// -src/lib/16_ca.h:// ID_CA.H -src/lib/16_ca.h://=========================================================================== -src/lib/16_ca.h://#define NOMAPS -src/lib/16_ca.h://#define NOGRAPHICS -src/lib/16_ca.h://#define NOAUDIO -src/lib/16_ca.h://#define MAPHEADERLINKED -src/lib/16_ca.h://#define GRHEADERLINKED -src/lib/16_ca.h://#define AUDIOHEADERLINKED -src/lib/16_ca.h://#define NUMMAPS 39 -src/lib/16_ca.h://#define MAPPLANES 3 -src/lib/16_ca.h://++++#define PROFILE//++++ -src/lib/16_ca.h://=========================================================================== -src/lib/16_ca.h://=========================================================================== -src/lib/16_ca.h://extern -src/lib/16_ca.h:// -src/lib/16_ca.h:// hooks for custom cache dialogs -src/lib/16_ca.h:// -src/lib/16_ca.h://=========================================================================== -src/lib/16_ca.h:// just for the score box reshifting -src/lib/16_ca.h://void CAL_ShiftSprite (unsigned segment,unsigned source,unsigned dest,unsigned width, unsigned height, unsigned pixshift, boolean domask); -src/lib/16_ca.h://=========================================================================== -src/lib/16_ca.h://void CA_CacheAudioChunk (int chunk); -src/lib/16_ca.h://void CA_LoadAllSounds (void); -src/lib/16_dbg.c:// TODO: Could we also provide a build mode to emit debug to the "Bochs E9 hack?" -src/lib/16_dbg.c: // what does the BIOS say the serial ports are? -src/lib/16_dbg.c: // what about the standard serial ports? -src/lib/16_dbg.c: // pick the first port, which is probably COM1 -src/lib/16_dbg.c: if (base_8250_ports == 0) return 0; // FIXME: You know "base_8250_ports" is probably a bad variable name for the max entries in info_8250_port[] -src/lib/16_dbg.c: // init the COM port. -src/lib/16_dbg.c: // in DOSBox-X, the "log" mode will receive our text and print it into the log file -src/lib/16_dbg.c: // on real hardware, our text will likely go over a null modem cable to another PC running a serial terminal program like PuTTY or minicom. -src/lib/16_dbg.c: // if nothing is connected, then the bytes go off into the ether to get lost and life goes on. -src/lib/16_dbg.c: uart_8250_enable_interrupt(_DEBUG_uart,0); // disable interrupts -src/lib/16_dbg.c: uart_8250_set_FIFO(_DEBUG_uart,0x07); // enable FIFO (why not?), also clear xmit/recv FIFO buffers, set threshhold to 1 byte -src/lib/16_dbg.c: uart_8250_set_MCR(_DEBUG_uart,3); // RTS and DTS on -src/lib/16_dbg.c: uart_8250_set_line_control(_DEBUG_uart,UART_8250_LCR_8BIT | UART_8250_LCR_PARITY); // 8 bit 1 stop bit odd parity -src/lib/16_dbg.c: uart_8250_set_baudrate(_DEBUG_uart,uart_8250_baud_to_divisor(_DEBUG_uart,9600)); // 9600 baud -src/lib/16_dbg.c: while (!uart_8250_can_write(_DEBUG_uart)); // wait for the UART to indicate readiness for our output -src/lib/16_dbg.c: uart_8250_write(_DEBUG_uart,(uint8_t)c); // then write it -src/lib/16_dbg.h://#define __DEBUG_PM__ -src/lib/16_dbg.h://#define __DEBUG_MM__ -src/lib/16_dbg.h: // NOTHING -src/lib/16_dbg.h: // NOTHING -src/lib/16_dbg.h: // NOTHING -src/lib/16_dbg.h:#endif // _SRC_LIB_16_DBG -src/lib/16_enti.h: int x; // exact position on the viewable map -src/lib/16_enti.h: int y; // exact position on the viewable map -src/lib/16_enti.h: int tx; // tile position on the viewable map -src/lib/16_enti.h: int ty; // tile position on the viewable map -src/lib/16_enti.h: int triggerx; // trigger box tile position on the viewable map -src/lib/16_enti.h: int triggery; // trigger box tile position on the viewable map -src/lib/16_enti.h: byte d; // direction the NPC faces -src/lib/16_enti.h: struct sprite *spri; // sprite used by NPC -src/lib/16_enti.h: sword hp; // hitpoints of the NPC -src/lib/16_enti.h: byte near pdir; // previous direction~ -src/lib/16_enti.h: word speed; // NPC's speed -src/lib/16_enti.h: word spt; // speed per tile -src/lib/16_hc.c: * along with this program. If not, see , or -src/lib/16_hc.c: // allocate based heap -src/lib/16_hc.c: //exit( 1 ); -src/lib/16_hc.c: //near -src/lib/16_hc.c: //far -src/lib/16_hc.c: //printf("OK - end of heap\n"); -src/lib/16_hc.c: //printf("OK - heap is empty\n"); -src/lib/16_hc.h: * along with this program. If not, see , or -src/lib/16_hc.h://void __based(__self)* LargestBasedFreeBlock(size_t* Size); -src/lib/16_hc.h://size_t _basedcoreleft(void); -src/lib/16_head.c: * along with this program. If not, see , or -src/lib/16_head.c: if(strlen(str)<=4) strcat(strc," "); //printf("%u\n", strlen(str)); -src/lib/16_head.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_head.c:// -src/lib/16_head.c:// US_CheckParm() - checks to see if a string matches one of a set of -src/lib/16_head.c:// strings. The check is case insensitive. The routine returns the -src/lib/16_head.c:// index of the string that matched, or -1 if no matches were found -src/lib/16_head.c:// -src/lib/16_head.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_head.c: while (!isalpha(*parm)) // Skip non-alphas -src/lib/16_head.c://=========================================================================== -src/lib/16_head.c: //ClearMemory (); -src/lib/16_head.c: //WriteConfig (); -src/lib/16_head.c: //CA_CacheGrChunk (ERRORSCREEN); -src/lib/16_head.c: //screen = grsegs[ERRORSCREEN]; -src/lib/16_head.c: //ShutdownId (); -src/lib/16_head.c: //IN_Shutdown(); -src/lib/16_head.c: //modexLeave(); -src/lib/16_head.c: //movedata ((unsigned)screen,7,0xb800,0,7*160); -src/lib/16_head.c: //gotoxy (10,4); -src/lib/16_head.c: //gotoxy (1,8); -src/lib/16_head.c: //clrscr(); -src/lib/16_head.c: //#ifndef JAPAN -src/lib/16_head.c: //gotoxy(1,24); -src/lib/16_head.c: //#endif -src/lib/16_head.c://asm mov bh,0 -src/lib/16_head.c://asm mov dh,23 // row -src/lib/16_head.c://asm mov dl,0 // collumn -src/lib/16_head.c://asm mov ah,2 -src/lib/16_head.c://asm int 0x10 -src/lib/16_head.c://=========================================================================== -src/lib/16_head.c: case 0: //up -src/lib/16_head.c: case 4: //down -src/lib/16_head.c: case 1: //left -src/lib/16_head.c: case 3: //right -src/lib/16_head.c: default: //null -src/lib/16_head.h: * along with this program. If not, see , or -src/lib/16_head.h:#include // just for wait -src/lib/16_head.h:#include // just for wait -src/lib/16_head.h:#include //16_vrs.h -src/lib/16_head.h://here temperarly -src/lib/16_head.h:#define KEY_DASH (0x0C) // -_ -src/lib/16_head.h:#define KEY_EQUAL (0x0D) // =+ -src/lib/16_head.h:#define KEY_LBRACKET (0x1A) // [{ -src/lib/16_head.h:#define KEY_RBRACKET (0x1B) // ]} -src/lib/16_head.h:#define KEY_SEMICOLON (0x27) // ;: -src/lib/16_head.h:#define KEY_RQUOTE (0x28) // '" -src/lib/16_head.h:#define KEY_LQUOTE (0x29) // `~ -src/lib/16_head.h:#define KEY_PERIOD (0x33) // .> -src/lib/16_head.h:#define KEY_COMMA (0x34) // ,< -src/lib/16_head.h:#define KEY_SLASH (0x35) // /? -src/lib/16_head.h:#define KEY_BACKSLASH (0x2B) // \| -src/lib/16_head.h://static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */ -src/lib/16_head.h:extern int profilehandle,debughandle; //make it into game global -src/lib/16_head.h://#define OLD16_VL -src/lib/16_in.c:// -src/lib/16_in.c:// ID Engine -src/lib/16_in.c:// ID_IN.c - Input Manager -src/lib/16_in.c:// v1.0d1w -src/lib/16_in.c:// By Jason Blochowiak -src/lib/16_in.c:// Open Watcom port by sparky4 -src/lib/16_in.c:// -src/lib/16_in.c:// -src/lib/16_in.c:// This module handles dealing with the various input devices -src/lib/16_in.c:// -src/lib/16_in.c:// Depends on: Memory Mgr (for demo recording), Sound Mgr (for timing stuff), -src/lib/16_in.c:// User Mgr (for command line parms) -src/lib/16_in.c:// -src/lib/16_in.c:// Globals: -src/lib/16_in.c:// LastScan - The keyboard scan code of the last key pressed -src/lib/16_in.c:// LastASCII - The ASCII value of the last key pressed -src/lib/16_in.c:// DEBUG - there are more globals -src/lib/16_in.c:// -src/lib/16_in.c://extern inconfig inpu; -src/lib/16_in.c://inpu.KbdDefs = {0x1d,0x38,/*0x47,*/0x48,/*0x49,*/0x4b,0x4d,/*0x4f,*/0x50/*,0x51*/}; -src/lib/16_in.c:static byte far ASCIINames[] = // Unshifted ASCII for scan codes -src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F -src/lib/16_in.c: 0 ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,9 , // 0 -src/lib/16_in.c: 'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0 ,'a','s', // 1 -src/lib/16_in.c: 'd','f','g','h','j','k','l',';',39 ,'`',0 ,92 ,'z','x','c','v', // 2 -src/lib/16_in.c: 'b','n','m',',','.','/',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 -src/lib/16_in.c: '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 -src/lib/16_in.c: far ShiftNames[] = // Shifted ASCII for scan codes -src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F -src/lib/16_in.c: 0 ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,9 , // 0 -src/lib/16_in.c: 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S', // 1 -src/lib/16_in.c: 'D','F','G','H','J','K','L',':',34 ,'~',0 ,'|','Z','X','C','V', // 2 -src/lib/16_in.c: 'B','N','M','<','>','?',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4 -src/lib/16_in.c: '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 -src/lib/16_in.c: far SpecialNames[] = // ASCII for 0xe0 prefixed codes -src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6 -src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7 -src/lib/16_in.c: *ScanNames[] = // Scan code names with single chars -src/lib/16_in.c: }, // DEBUG - consolidate these -src/lib/16_in.c: far ExtScanCodes[] = // Scan codes with >1 char names -src/lib/16_in.c: *ExtScanNames[] = // Names corresponding to ExtScanCodes -src/lib/16_in.c:static Direction DirTable[] = // Quick lookup for total direction -src/lib/16_in.c: //dir_Nortinest, -src/lib/16_in.c: //dir_NorthEast, -src/lib/16_in.c: //dir_Soutinest, -src/lib/16_in.c: //,dir_SouthEast -src/lib/16_in.c:// Internal routines -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_KeyService() - Handles a keyboard interrupt (key up/down) -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: k = inp(0x60); // Get the scan code -src/lib/16_in.c: // Tell the XT keyboard controller to clear the key -src/lib/16_in.c: if (k == 0xe0) // Special key prefix -src/lib/16_in.c: else if (k == 0xe1) // Handle Pause key -src/lib/16_in.c: if (k & 0x80) // Break code -src/lib/16_in.c:// DEBUG - handle special keys: ctl-alt-delete, print scrn -src/lib/16_in.c: else // Make code -src/lib/16_in.c: // DEBUG - make caps lock light work -src/lib/16_in.c: if (inpu.Keyboard[sc_LShift] || inpu.Keyboard[sc_RShift]) // If shifted -src/lib/16_in.c: //union REGS CPURegs; -src/lib/16_in.c: //x = CPURegs.x.ax; -src/lib/16_in.c: //int86(MouseInt,&CPURegs,&CPURegs); -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_GetMouseDelta() - Gets the amount that the mouse has moved from the -src/lib/16_in.c:// mouse driver -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_GetMouseButtons() - Gets the status of the mouse buttons from the -src/lib/16_in.c:// mouse driver -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_GetJoyAbs() - Reads the absolute position of the specified joystick -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: xs = joy? 2 : 0; // Find shift value for x axis -src/lib/16_in.c: xb = 1 << xs; // Use shift value to get x bit mask -src/lib/16_in.c: ys = joy? 3 : 1; // Do the same for y axis -src/lib/16_in.c:// Read the absolute joystick values -src/lib/16_in.c: pushf // Save some registers -src/lib/16_in.c: cli // Make sure an interrupt doesn't screw the timings -src/lib/16_in.c: out dx,al // Clear the resistors -src/lib/16_in.c: mov ah,[xb] // Get masks into registers -src/lib/16_in.c: xor si,si // Clear count registers -src/lib/16_in.c: xor bh,bh // Clear high byte of bx for later -src/lib/16_in.c: push bp // Don't mess up stack frame -src/lib/16_in.c: in al,dx // Get bits indicating whether all are finished -src/lib/16_in.c: dec bp // Check bounding register -src/lib/16_in.c: jz done // We have a silly value - abort -src/lib/16_in.c: mov bl,al // Duplicate the bits -src/lib/16_in.c: and bl,ah // Mask off useless bits (in [xb]) -src/lib/16_in.c: add si,bx // Possibly increment count register -src/lib/16_in.c: mov cl,bl // Save for testing later -src/lib/16_in.c: and bl,ch // [yb] -src/lib/16_in.c: jnz loo // If both bits were 0, drop out -src/lib/16_in.c: mov cl,[xs] // Get the number of bits to shift -src/lib/16_in.c: shr si,cl // and shift the count that many times -src/lib/16_in.c: mov [x],si // Store the values into the variables -src/lib/16_in.c: popf // Restore the registers -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_GetJoyDelta() - Returns the relative movement of the specified -src/lib/16_in.c:// joystick (from +/-127, scaled adaptively) -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_GetJoyButtons() - Returns the button status of the specified -src/lib/16_in.c:// joystick -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: result = inp(0x201); // Get all the joystick buttons -src/lib/16_in.c: result >>= joy? 6 : 4; // Shift into bits 0-1 -src/lib/16_in.c: result &= 3; // Mask off the useless bits -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_GetJoyButtonsDB() - Returns the de-bounced button status of the -src/lib/16_in.c:// specified joystick -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_StartKbd() - Sets up my keyboard stuff for use -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: INL_KeyHook = 0; // Clear key hook -src/lib/16_in.c: //_dos_setvect(KeyInt,INL_KeyService); -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_ShutKbd() - Restores keyboard control to the BIOS -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: pokeb(0x40,0x17,peekb(0x40,0x17) & 0xfaf0); // Clear ctrl/alt/shift flags -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_StartMouse() - Detects and sets up the mouse -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_ShutMouse() - Cleans up after the mouse -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_SetJoyScale() - Sets up scaling values for the specified joystick -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_SetupJoy() - Sets up thresholding values and calls INL_SetJoyScale() -src/lib/16_in.c:// to set up scaling values -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_StartJoy() - Detects & auto-configures the specified joystick -src/lib/16_in.c:// The auto-config assumes the joystick is centered -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_ShutJoy() - Cleans up the joystick stuff -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// Public routines -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_Startup() - Starts up the Input Mgr -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_Default() - Sets up default conditions for the Input Mgr -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: //int i; -src/lib/16_in.c: //in.KbdDefs[0].upleft = 0x47; -src/lib/16_in.c: //in.KbdDefs[0].upright = 0x49; -src/lib/16_in.c: //in.KbdDefs[0].downleft = 0x4f; -src/lib/16_in.c: //in.KbdDefs[0].downright = 0x51; -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_Shutdown() - Shuts down the Input Mgr -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_SetKeyHook() - Sets the routine that gets called by INL_KeyService() -src/lib/16_in.c:// everytime a real make/break code gets hit -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_ClearKeyDown() - Clears the keyboard array -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: //int i; -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// INL_AdjustCursor() - Internal routine of common code from IN_ReadCursor() -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_ReadCursor() - Reads the input devices and fills in the cursor info -src/lib/16_in.c:// struct -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_ReadControl() - Reads the device associated with the specified -src/lib/16_in.c:// player and fills in the control info struct -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://TODO: make this into a function that the joystick AND keyboard can use wwww -src/lib/16_in.c: if(DIRECTIONIFELSE)//(player->info.dir == 2) -src/lib/16_in.c: }else{ //2 keys pressed -src/lib/16_in.c: if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right])){ dir = DirTable[1]; }//mx = motion_Left; } -src/lib/16_in.c: else if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left])){ dir = DirTable[3]; }//mx = motion_Right; } -src/lib/16_in.c: if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down])){ dir = DirTable[0]; }//my = motion_Up; } -src/lib/16_in.c: else if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up])){ dir = DirTable[4]; }//my = motion_Down; } -src/lib/16_in.c: //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c ", dirchar(player->pdir)); } -src/lib/16_in.c: //input from player -src/lib/16_in.c: dx = mx;// * 127; -src/lib/16_in.c: dy = my;// * 127; -src/lib/16_in.c:// player->info.dir = DirTable[((my + 1) * 3) + (mx + 1)]; -src/lib/16_in.c: // Pack the control info into a byte -src/lib/16_in.c: //printf("b1=%u b2=%u b3=%u b4=%u ", player->info.button0, player->info.button1, player->info.button2, player->info.button3); -src/lib/16_in.c: //printf("q=%d ", player->q); -src/lib/16_in.c: //printf("cpee=%c ", dirchar(conpee)); -src/lib/16_in.c: //else if(!realdelta) printf("%c%d %c%d %c%d %c%d", dirchar(0), inpu.Keyboard[def->up], dirchar(4), inpu.Keyboard[def->down], dirchar(1), inpu.Keyboard[def->left], dirchar(3), inpu.Keyboard[def->right]); -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_SetControlType() - Sets the control type to be used by the specified -src/lib/16_in.c:// player -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c: // DEBUG - check that requested type is present? -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_StartDemoRecord() - Starts the demo recording, using a buffer the -src/lib/16_in.c:// size passed. Returns if the buffer allocation was successful -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_StartDemoPlayback() - Plays back the demo pointed to of the given size -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_StopDemo() - Turns off demo mode -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_FreeDemoBuffer() - Frees the demo buffer, if it's been allocated -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_GetScanName() - Returns a string containing the name of the -src/lib/16_in.c:// specified scan code -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_WaitForKey() - Waits for a scan code, then clears LastScan and -src/lib/16_in.c:// returns the scan code -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_WaitForASCII() - Waits for an ASCII char, then clears LastASCII and -src/lib/16_in.c:// returns the ASCII value -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_AckBack() - Waits for either an ASCII keypress or a button press -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_Ack() - Clears user input & then calls IN_AckBack() -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_IsUserInput() - Returns true if a key has been pressed or a button -src/lib/16_in.c:// is down -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// -src/lib/16_in.c:// IN_UserInput() - Waits for the specified delay time (in ticks) or the -src/lib/16_in.c:// user pressing a key or a mouse button. If the clear flag is set, it -src/lib/16_in.c:// then either clears the key or waits for the user to let the mouse -src/lib/16_in.c:// button up. -src/lib/16_in.c:// -src/lib/16_in.c://///////////////////////////////////////////////////////////////////////// -src/lib/16_in.c:// if(dbg_testkeyin > 0) printf("%u\n", inpu.Keyboard[kee]); -src/lib/16_in.c://init player! -src/lib/16_in.c: player->spt=(TILEWH/(player->speed)); //speed per tile wwww -src/lib/16_in.h:// -src/lib/16_in.h:// ID Engine -src/lib/16_in.h:// ID_IN.h - Header file for Input Manager -src/lib/16_in.h:// v1.0d1w -src/lib/16_in.h:// By Jason Blochowiak -src/lib/16_in.h:// Open Watcom port by sparky4 -src/lib/16_in.h:// -src/lib/16_in.h:#ifdef __WATCOMC__ //borland C BCEXMM.EXE -src/lib/16_in.h://#include "src/lib/bitmap.h" //old format -src/lib/16_in.h://if else for gfxtesting and direction -src/lib/16_in.h://player[pn].d == 2 || -src/lib/16_in.h://player[pn].d != 2 || -src/lib/16_in.h:#define DIRECTIONIFELSE (player->info.dir == 2)//(player[pn].info.dir == 2) -src/lib/16_in.h://#define NDIRECTIONIFELSE (player->info.dir != 2)//(player[pn].info.dir != 2) -src/lib/16_in.h:#define KeyInt 9 // The keyboard ISR number -src/lib/16_in.h:// Stuff for the joystick -src/lib/16_in.h:// Stuff for the mouse -src/lib/16_in.h: //ctrl_None, // MDM (GAMERS EDGE) - added -src/lib/16_in.h: dir_North,//dir_NorthEast, -src/lib/16_in.h: dir_West,//dir_Nortinest, -src/lib/16_in.h: dir_East,//,dir_SouthEast, -src/lib/16_in.h: dir_South,//dir_Soutinest, -src/lib/16_in.h: //upleft, -src/lib/16_in.h: //upright, -src/lib/16_in.h: //downleft, -src/lib/16_in.h: //,downright -src/lib/16_in.h: int x; //player exact position on the viewable map -src/lib/16_in.h: int y; //player exact position on the viewable map -src/lib/16_in.h: int tx; //player tile position on the viewable map -src/lib/16_in.h: int ty; //player tile position on the viewable map -src/lib/16_in.h: int triggerx; //player's trigger box tile position on the viewable map -src/lib/16_in.h: int triggery; //player's trigger box tile position on the viewable map -src/lib/16_in.h: int sheetsetx; //NOT USED YET! player sprite sheet set on the image x -src/lib/16_in.h: int sheetsety; //NOT USED YET! player sprite sheet set on the image y -src/lib/16_in.h: byte d; //direction to render sprite!! wwww -src/lib/16_in.h: byte q; //loop variable for anumation and locking the playing to compleate the animation cycle to prevent issues with misalignment www -src/lib/16_in.h: byte near pdir; //previous direction~ -src/lib/16_in.h: //byte near kd[2]; //array of arrow key pressed -src/lib/16_in.h: word speed; //player speed! -src/lib/16_in.h: word spt; //speed per tile -src/lib/16_in.h://0000 planar_buf_t huge *data; //supposively the sprite sheet data -src/lib/16_in.h:// planar_buf_t data; //supposively the sprite sheet data -src/lib/16_in.h:////0000---- -src/lib/16_in.h: struct sprite *spri; //supposively the sprite sheet data -src/lib/16_in.h: bitmap_t *data; //supposively the sprite sheet data//old format -src/lib/16_in.h: sword hp; //hitpoints of the player -src/lib/16_in.h:// Internal routines -src/lib/16_in.h://static void INL_GetMouseDelta(int *x,int *y); -src/lib/16_in.h://static word INL_GetMouseButtons(void); -src/lib/16_in.h://static void INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive); -src/lib/16_in.h://static word INL_GetJoyButtons(word joy); -src/lib/16_in.h://static void INL_StartKbd(void); -src/lib/16_in.h://static void INL_ShutKbd(void); -src/lib/16_in.h://static boolean INL_StartMouse(void); -src/lib/16_in.h://static void INL_ShutMouse(void); -src/lib/16_in.h://static void INL_SetJoyScale(word joy); -src/lib/16_in.h://static boolean INL_StartJoy(word joy); -src/lib/16_in.h://static void INL_ShutJoy(word joy); -src/lib/16_in.h://static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy); -src/lib/16_map.c: * along with this program. If not, see , or -src/lib/16_map.c:// Ideally, preprocess json during compilation and read serialized data -src/lib/16_map.c: //char *s; -src/lib/16_map.c: //fix this to be far~ -src/lib/16_map.c: //Fix to load tileset specified. -src/lib/16_map.c: //And move to vrs, probably -src/lib/16_map.c: //bp = bitmapLoadPcx("data/ed.pcx"); -src/lib/16_map.h: * along with this program. If not, see , or -src/lib/16_map.h://#include "stdio.h" included in 16_head.h -src/lib/16_map.h://#include "stdlib.h" included in 16_head.h -src/lib/16_map.h://TODO: 16_mm and 16_ca must handle this -src/lib/16_map.h: bitmap_t huge *btdata; //old -src/lib/16_map.h: planar_buf_t huge *data; //old -src/lib/16_map.h: boolean debug_text; //show the value of the tile! wwww -src/lib/16_map.h://TODO: 16_mm and 16_ca must handle this -src/lib/16_map.h://TODO: add variables from 16_ca -src/lib/16_map.h: //long planestart[3]; -src/lib/16_map.h: //unsigned planelength[3]; -src/lib/16_map.h: byte * huge *data; //TODO: 16_mm and 16_ca must handle this -src/lib/16_map.h: tiles_t **tiles; //TODO: 16_mm and 16_ca must handle this -src/lib/16_map.h: unsigned int width, height; //this has to be positive -src/lib/16_mm.c:// NEWMM.C -src/lib/16_mm.c:void (* XMSaddr) (void); // far pointer to XMS driver -src/lib/16_mm.c: static char emmname[] = "EMMXXXX0"; //fix by andrius4669 -src/lib/16_mm.c: mov dx,OFFSET emmname //fix by andrius4669 -src/lib/16_mm.c: int 0x21 // try to open EMMXXXX0 device -src/lib/16_mm.c: int 0x21 // get device info -src/lib/16_mm.c: int 0x21 // get status -src/lib/16_mm.c: int 0x21 // close handle -src/lib/16_mm.c: // -src/lib/16_mm.c: // EMS is good -src/lib/16_mm.c: // -src/lib/16_mm.c: // -src/lib/16_mm.c: // EMS is bad -src/lib/16_mm.c: // -src/lib/16_mm.c: //byte EMS_status; -src/lib/16_mm.c: int EMS_INT // make sure EMS hardware is present -src/lib/16_mm.c: //mov [EMS_status],ah -src/lib/16_mm.c: mov [EMSVer],ax // set EMSVer -src/lib/16_mm.c: cmp al,0x32 // only work on ems 3.2 or greater -src/lib/16_mm.c: int EMS_INT // find the page frame address -src/lib/16_mm.c: int EMS_INT // find out how much EMS is there -src/lib/16_mm.c: jz noEMS // no EMS at all to allocate -src/lib/16_mm.c: //EXPAND DONG!!!! -src/lib/16_mm.c: jle getpages // there is only 1,2,3,or 4 pages -src/lib/16_mm.c: mov bx,4 // we can't use more than 4 pages -src/lib/16_mm.c: mov ah,EMS_ALLOCPAGES // allocate up to 64k of EMS -src/lib/16_mm.c: Quit("MML_ShutdownEMS: Error freeing EMS!\n"); //++++ add something -src/lib/16_mm.c: mov bx,[i] // logical page -src/lib/16_mm.c: mov al,bl // physical page -src/lib/16_mm.c: mov dx,[EMSHandle] // handle -src/lib/16_mm.c://SUB EMS.MapXPages (PhysicalStart, LogicalStart, NumPages, Handle) -src/lib/16_mm.c: //Maps up to 4 logical EMS pages to physical pages in the page frame, where: -src/lib/16_mm.c: //PhysicalStart = Physical page first logical page is mapped to -src/lib/16_mm.c: //LogicalStart = First logical page to map -src/lib/16_mm.c: //NumPages = Number of pages to map (1 to 4) -src/lib/16_mm.c: //Handle = EMS handle logical pages are allocated to -src/lib/16_mm.c: /*//Create a buffer containing the page information -src/lib/16_mm.c:// FOR x = 0 TO NumPages - 1 -src/lib/16_mm.c:// MapInfo$ = MapInfo$ + MKI$(LogicalStart + x) + MKI$(PhysicalStart + x) -src/lib/16_mm.c:// NEXT*/ -src/lib/16_mm.c:// Regs.ax = 0x5000 //Map the pages in the buffer -src/lib/16_mm.c:// Regs.cx = NumPages //to the pageframe -src/lib/16_mm.c:// Regs.dx = Handle -src/lib/16_mm.c:// Regs.ds = VARSEG(MapInfo$) -src/lib/16_mm.c:// Regs.si = SADD(MapInfo$) -src/lib/16_mm.c:// InterruptX 0x67, Regs, Regs -src/lib/16_mm.c:// EMS.Error = (Regs.ax AND 0xFF00&) \ 0x100 //Store the status code -src/lib/16_mm.c://END SUB -src/lib/16_mm.c: mov cx,[i] // logical page -src/lib/16_mm.c: mov al,bl // physical page -src/lib/16_mm.c: mov dx,[EMSHandle] // handle -src/lib/16_mm.c: //strcpy(str,"MM_MapXEMS: EMS error 0x"); -src/lib/16_mm.c: //itoa(err,str2,16); -src/lib/16_mm.c: //printf("%s%x\n",str, err); -src/lib/16_mm.c: //printf("FACK! %x\n", err); -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //numUMBs = 0; -src/lib/16_mm.c: int 0x2f // query status of installed diver -src/lib/16_mm.c: mov [WORD PTR XMSaddr+2],es // function pointer to XMS driver -src/lib/16_mm.c: mov dx,0xffff // try for largest block possible -src/lib/16_mm.c: //mov ax,dx // Set available Kbytes. -src/lib/16_mm.c: cmp bl,0xb0 // error: smaller UMB is available -src/lib/16_mm.c: call [DWORD PTR XMSaddr] // DX holds largest available UMB -src/lib/16_mm.c: jz done // another error... -src/lib/16_mm.c:// printf("base=%u ", base); printf("size=%u\n", size); -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last; -src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // reset rover to start of memory -src/lib/16_mm.c:// -src/lib/16_mm.c:// search for the block that contains the range of segments -src/lib/16_mm.c:// -src/lib/16_mm.c:// -src/lib/16_mm.c:// take the given range out of the block -src/lib/16_mm.c:// -src/lib/16_mm.c: //++++emsver stuff! -src/lib/16_mm.c: if(segm>1)/// || extra>=0x10000lu) -src/lib/16_mm.c: //if(extra>0xfffflu) -src/lib/16_mm.c: //MML_UseSpace(segstart, seglength, gvar); -src/lib/16_mm.c: //} -src/lib/16_mm.c://++++todo: linked list of segment! -src/lib/16_mm.c: last->next = scan->next; // unlink block -src/lib/16_mm.c: scan->length = segstart-scan->start; // shorten block -src/lib/16_mm.c: }//else if(segm>0) goto segu; -src/lib/16_mm.c: //word segm=1; -src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // reset rover to start of memory -src/lib/16_mm.c:// -src/lib/16_mm.c:// search for the block that contains the range of segments -src/lib/16_mm.c:// -src/lib/16_mm.c:// -src/lib/16_mm.c:// find out how many blocks it spans! -src/lib/16_mm.c:// -src/lib/16_mm.c: //printf(" seglen=%lu\n", segmlen); -src/lib/16_mm.c:// -src/lib/16_mm.c:// take the given range out of the block -src/lib/16_mm.c:// -src/lib/16_mm.c: //return; -src/lib/16_mm.c: last->next = scan->next; // unlink block -src/lib/16_mm.c: scan->length = segstart-scan->start; // shorten block -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last; -src/lib/16_mm.c: mmblocktype __far *scan;//,far *last; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //dword length,seglength; -src/lib/16_mm.c: //huge void huge *start; -src/lib/16_mm.c: word segstart;//,endfree; -src/lib/16_mm.c: //memptr *peeonself; -src/lib/16_mm.c:// -src/lib/16_mm.c:// set up the linked list (everything in the free list; -src/lib/16_mm.c:// -src/lib/16_mm.c:// -src/lib/16_mm.c:// locked block of all memory until we punch out free space -src/lib/16_mm.c:// -src/lib/16_mm.c: gvar->mm.mmhead = gvar->mm.mmnew; // this will allways be the first node -src/lib/16_mm.c: //gvar->mm.mmnew->useptr = peeonself; -src/lib/16_mm.c: //printf(" %x\n", peeonself); -src/lib/16_mm.c: //printf(" %x\n", *peeonself); -src/lib/16_mm.c:// -src/lib/16_mm.c:// get all available near conventional memory segments -src/lib/16_mm.c:// -src/lib/16_mm.c: length=(dword)_memavl();//(dword)GetFreeSize(); -src/lib/16_mm.c: //huge start = (void huge *)(gvar->mm.nearheap = _nmalloc(length)); -src/lib/16_mm.c: //huge start = (void huge *)(gvar->mm.nearheap = malloc(length)); -src/lib/16_mm.c: seglength = length / 16; // now in paragraphs -src/lib/16_mm.c: //printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length); -src/lib/16_mm.c:// -src/lib/16_mm.c:// get all available far conventional memory segments -src/lib/16_mm.c:// -src/lib/16_mm.c: //printf("_FARCORELEFT %lu\n", _FCORELEFT); -src/lib/16_mm.c: length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL; -src/lib/16_mm.c: length=farcoreleft();//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL; -src/lib/16_mm.c: //start = gvar->mm.farheap = halloc(length, 1); -src/lib/16_mm.c: seglength = length / 16; // now in paragraphs -src/lib/16_mm.c: //printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length); -src/lib/16_mm.c:// -src/lib/16_mm.c:// detect EMS and allocate up to 64K at page frame -src/lib/16_mm.c:// -src/lib/16_mm.c://goto emsskip; //0000 -src/lib/16_mm.c: goto emsskip; // param NOEMS -src/lib/16_mm.c: MML_SetupEMS(gvar); // allocate space -src/lib/16_mm.c: //16_PM: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT! -src/lib/16_mm.c: //if(gvar->pm.emm.EMSVer<0x40) -src/lib/16_mm.c: MM_MapEMS(gvar); // map in used pages -src/lib/16_mm.c: //else -src/lib/16_mm.c: //MM_MapXEMS(gvar); // map in used pages -src/lib/16_mm.c:// -src/lib/16_mm.c:// detect XMS and get upper memory blocks -src/lib/16_mm.c:// -src/lib/16_mm.c:goto xmsskip;//0000 -src/lib/16_mm.c: goto xmsskip; // param NOXMS -src/lib/16_mm.c: MML_SetupXMS(gvar); // allocate as many UMBs as possible -src/lib/16_mm.c:// -src/lib/16_mm.c:// allocate the misc buffer -src/lib/16_mm.c:// -src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // start looking for space after low block -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: _ffree(gvar->mm.farheap);// printf(" far freed\n"); -src/lib/16_mm.c: _nfree(gvar->mm.nearheap);// printf(" near freed\n"); -src/lib/16_mm.c: free(gvar->mm.nearheap);// printf(" near freed\n"); -src/lib/16_mm.c: if(MML_CheckForEMS()){ MML_ShutdownEMS(gvar); }//printf(" EMS freed\n"); } -src/lib/16_mm.c: if(MML_CheckForXMS()){ MML_ShutdownXMS(gvar); }//printf(" XMS freed\n"); } -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *lastscan,huge *endscan,huge *purge,huge *next; -src/lib/16_mm.c: needed = (size+15)/16; // convert size from bytes to paragraphs -src/lib/16_mm.c: GETNEWBLOCK; // fill in start and next after a spot is found -src/lib/16_mm.c: //if(gvar->mm.mmnew->useptr==NULL){ -src/lib/16_mm.c: //%04x -src/lib/16_mm.c: //exit(-5); } -src/lib/16_mm.c://tryagain: -src/lib/16_mm.c: // -src/lib/16_mm.c: // first search: try to allocate right after the rover, then on up -src/lib/16_mm.c: // second search: search from the head pointer up to the rover -src/lib/16_mm.c: // third search: compress memory, then scan from start -src/lib/16_mm.c: // -src/lib/16_mm.c: // got enough space between the end of lastscan and -src/lib/16_mm.c: // the start of scan, so throw out anything in the middle -src/lib/16_mm.c: // and allocate the new block -src/lib/16_mm.c: // -src/lib/16_mm.c: { // free the purgable block -src/lib/16_mm.c: purge = next; // purge another if not at scan -src/lib/16_mm.c: return; // good allocation! -src/lib/16_mm.c: // -src/lib/16_mm.c: // if this block is purge level zero or locked, skip past it -src/lib/16_mm.c: // -src/lib/16_mm.c: scan=scan->next; // look at next line -src/lib/16_mm.c: //heapdump(); -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last; -src/lib/16_mm.c: if(baseptr == gvar->mm.mmrover->useptr) // removed the last allocated block -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *start; -src/lib/16_mm.c: //return; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *start; -src/lib/16_mm.c: //return; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last,huge *next; -src/lib/16_mm.c: unsigned start,length,source,dest;//++++,oldborder; -src/lib/16_mm.c: //++++int playing; -src/lib/16_mm.c: // -src/lib/16_mm.c: // lock down a currently playing sound -src/lib/16_mm.c: // -src/lib/16_mm.c:// oldborder = bordercolor; -src/lib/16_mm.c:// VW_ColorBorder (15); -src/lib/16_mm.c: last = NULL; // shut up compiler warning -src/lib/16_mm.c: // -src/lib/16_mm.c: // block is locked, so try to pile later blocks right after it -src/lib/16_mm.c: // -src/lib/16_mm.c: // -src/lib/16_mm.c: // throw out the purgable block -src/lib/16_mm.c: // -src/lib/16_mm.c: //MM_FreeBlock(scan, gvar); -src/lib/16_mm.c: // -src/lib/16_mm.c: // push the non purgable block on top of the last moved block -src/lib/16_mm.c: // -src/lib/16_mm.c: scan = scan->next; // go to next block -src/lib/16_mm.c:// VW_ColorBorder (oldborder); -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan; -src/lib/16_mm.c: //word temp; -src/lib/16_mm.c: //word chx,chy; -src/lib/16_mm.c: //dword wwww; -src/lib/16_mm.c: byte scratch[160],scratch0[4096],str[16];//[[[[scratch1[160], -src/lib/16_mm.c: //byte d = '#'; -src/lib/16_mm.c://[[[[ VW_SetDefaultColors(); -src/lib/16_mm.c://[[[[ VW_SetLineWidth(40); -src/lib/16_mm.c://++++mh temp = bufferofs; -src/lib/16_mm.c://++++mh bufferofs = 0; -src/lib/16_mm.c://[[[[ VW_SetScreen (0,0); -src/lib/16_mm.c: strcpy(scratch0, AAMAGENTA); // dark purple = purgable -src/lib/16_mm.c: strcpy(scratch0, AABLUE); // medium blue = non purgable -src/lib/16_mm.c: strcpy(scratch0, AARED); // red = locked -src/lib/16_mm.c: //modexprint(&page, chx, chy, 1, 0, 24, "\nMM_ShowMemory: Memory block order currupted!\n"); -src/lib/16_mm.c://++++ chy = scan->start/320; -src/lib/16_mm.c://++++ chx = scan->start%320; -src/lib/16_mm.c: //modexhlin(page, scan->start, (unsigned)end, chy, color); -src/lib/16_mm.c: //for(chx=scan->start;chx+4>=(word)end;chx+=4) -src/lib/16_mm.c: //{ -src/lib/16_mm.c://++++ modexClearRegion(page, chx, chy, 4, 4, color); -src/lib/16_mm.c: //} -src/lib/16_mm.c://++++ VW_Hlin(scan->start,(unsigned)end,0,color); -src/lib/16_mm.c: //printf("+ %u %lu\n", w, scan->length); -src/lib/16_mm.c: //++==++==optional strcat(scratch0, AARESET); strcat(scratch0, AAGREY); strcat(scratch0,"_"); -src/lib/16_mm.c://++++ VW_Plot(scan->start,0,15); -src/lib/16_mm.c://++++ modexClearRegion(page, chx, chy, 4, 4, 15); -src/lib/16_mm.c://++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free -src/lib/16_mm.c: //wwww=(dword)(scan->next->start)-(dword)scan->start; -src/lib/16_mm.c: //wwww=(dword)scan->start+(dword)(scan->next->start); -src/lib/16_mm.c: //++==++==optional strcat(scratch0, "\n"); -src/lib/16_mm.c: //for(w=(wwww)/80;w<=((end+1)/80);w++) -src/lib/16_mm.c: //for(w=(end+1)/80;w<=((wwww)/80);w++) -src/lib/16_mm.c: //printf("0 %x %u %lu\n", scan->next->start, w, scan->length); -src/lib/16_mm.c: //printf("==================\n"); -src/lib/16_mm.c: //printf("w=%u wwww=%lu start=%04x next=%04x end=%lu\n", w/80, wwww/80, scan->start, (scan->next->start), end+1); -src/lib/16_mm.c: //printf("==================\n"); -src/lib/16_mm.c: //getch(); -src/lib/16_mm.c: }/*else {//if(scan->next->start <= scan->start){ -src/lib/16_mm.c: //printf("0 %x %x %u\n", scan->start, w); -src/lib/16_mm.c: //strcat(scratch0,"\n"); -src/lib/16_mm.c: //for(chx=scan->next->start;chx+4>=(word)end+1;chx+=4) -src/lib/16_mm.c: //{ -src/lib/16_mm.c:// chx+=scan->next->start; -src/lib/16_mm.c:// modexClearRegion(page, chx, chy, 4, 4, 2); -src/lib/16_mm.c: //} -src/lib/16_mm.c: //modexhlin(page, end+1,scan->next->start, chy, 0); -src/lib/16_mm.c://++++ VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0); // black = free -src/lib/16_mm.c://modexprint(page, chx, chy, 1, 0, 24, &scratch); -src/lib/16_mm.c://++++chy+=4; -src/lib/16_mm.c://fprintf(stdout, "%s", scratch); -src/lib/16_mm.c: //strcat(scratch1, "&near= %Fp ", &(gvar->mm.nearheap)); -src/lib/16_mm.c: //strcat(scratch1, "&far= %Fp", &(gvar->mm.farheap)); -src/lib/16_mm.c: //strcat(scratch1, "\n"); -src/lib/16_mm.c://++++mh IN_Ack(); -src/lib/16_mm.c://**** VW_SetLineWidth(64); -src/lib/16_mm.c://++++mh bufferofs = temp; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *best; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan; -src/lib/16_mm.c:// return free; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //huge mmblocktype huge *scan; -src/lib/16_mm.c:// return free; -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //printf("mainmem: %lu\n", gvar->mmi.mainmem); -src/lib/16_mm.c: //printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem); -src/lib/16_mm.c: //printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar)); -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.c: //Returns a text string describing the error code in EMS.Error. -src/lib/16_mm.c://========================================================================== -src/lib/16_mm.h:// ID_MM.H -src/lib/16_mm.h://++++mh #include "src/lib/16_in.h" -src/lib/16_mm.h:#ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final -src/lib/16_mm.h://#define GETNEWBLOCK {if(!(mmnew=mmfree))Quit("MM_GETNEWBLOCK: No free blocks!") ;mmfree=mmfree->next;} -src/lib/16_mm.h:#define SAVENEARHEAP 0x200 // space to leave in data segment -src/lib/16_mm.h:#define SAVEFARHEAP 0//x400 // space to leave in far heap -src/lib/16_mm.h:#define BUFFERSIZE 0x1000 // miscelanious, allways available buffer -src/lib/16_mm.h://moved to typdefst -src/lib/16_mm.h://#define MAXBLOCKS 1024 -src/lib/16_mm.h://-------- -src/lib/16_mm.h://-------- -src/lib/16_mm.h:/*__asm { mov ah,[v]\*///} -src/lib/16_mm.h://========================================================================== -src/lib/16_mm.h://moved to typdefst -src/lib/16_mm.h://========================================================================== -src/lib/16_mm.h:extern void (* XMSaddr) (void); // far pointer to XMS driver -src/lib/16_mm.h://========================================================================== -src/lib/16_mm.h:#define LOCKBIT 0x80 // if set in attributes, block cannot be moved -src/lib/16_mm.h:#define PURGEBITS 3 // 0-3 level, 0= unpurgable, 3= purge first -src/lib/16_mm.h:#define BASEATTRIBUTES 0 // unlocked, non purgable -src/lib/16_mm.h://moved to typedefst -src/lib/16_mm.h://#define MAXUMBS 12 -src/lib/16_mm.h:#define MAPPAGES 4//gvar->mm.EMSpagesmapped -src/lib/16_mm.h://moved to typdefst -src/lib/16_mm.h: //word start; dword length; -src/lib/16_mm.h: word blob; //for data larger than 64k -src/lib/16_mm.h: memptr *useptr; // pointer to the segment start -src/lib/16_mm.h: //huge struct mmblockstruct huge *next; -src/lib/16_mm.h: //huge void huge *farheap; -src/lib/16_mm.h: //byte EMS_status; -src/lib/16_mm.h: //dword numUMBs,UMBbase[MAXUMBS]; -src/lib/16_mm.h: //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew; -src/lib/16_mm.h://========================================================================== -src/lib/16_mm.h://byte MML_SetupEMS(mminfo_t *mm); -src/lib/16_mm.h://void MML_ShutdownEMS(mminfo_t *mm); -src/lib/16_mm.h://byte MM_MapXEMS(global_game_variables_t *gvar); -src/lib/16_mm.h://void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi); -src/lib/16_mm.h://void MML_ShutdownXMS(mminfo_t *mm); -src/lib/16_mm.h://void MM_GetNewBlock(mminfo_t *mm); -src/lib/16_mm.h://void MM_FreeBlock(mmblocktype *x, mminfo_t *mm); -src/lib/16_mm.h://========================================================================== -src/lib/16_pm.c: * along with this program. If not, see , or -src/lib/16_pm.c:// -src/lib/16_pm.c:// ID_PM.C -src/lib/16_pm.c:// Id Engine's Page Manager v1.0 -src/lib/16_pm.c:// Primary coder: Jason Blochowiak -src/lib/16_pm.c:// -src/lib/16_pm.c:// Main Mem specific variables -src/lib/16_pm.c: //boolean MainPresent; -src/lib/16_pm.c:// EMS specific variables -src/lib/16_pm.c: //boolean EMSPresent; -src/lib/16_pm.c:// XMS specific variables -src/lib/16_pm.c: //boolean XMSPresent; -src/lib/16_pm.c: //word gvar->pm.xmm.XMSAvail,gvar->pm.xmm.XMSPagesAvail,gvar->pm.xmm.XMSHandle; -src/lib/16_pm.c: dword XMSDriver; //hard to put in gvar -src/lib/16_pm.c: word XMSVer; //hard to put in gvar -src/lib/16_pm.c:// File specific variables -src/lib/16_pm.c:// General usage variables -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// EMS Management code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_MapEMS() - Maps a logical page to a physical page -src/lib/16_pm.c:// -src/lib/16_pm.c: //int i; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_StartupEMS() - Sets up EMS for Page Mgr's use -src/lib/16_pm.c:// Checks to see if EMS driver is present -src/lib/16_pm.c:// Verifies that EMS hardware is present -src/lib/16_pm.c:// Make sure that EMS version is 3.2 or later -src/lib/16_pm.c:// If there's more than our minimum (2 pages) available, allocate it (up -src/lib/16_pm.c:// to the maximum we need) -src/lib/16_pm.c:// -src/lib/16_pm.c: //long size; -src/lib/16_pm.c: static char emmname[] = "EMMXXXX0"; //fix by andrius4669 -src/lib/16_pm.c: gvar->pm.emm.EMSPresent = false; // Assume that we'll fail -src/lib/16_pm.c: mov dx,OFFSET emmname //fix by andrius4669 -src/lib/16_pm.c: int EMM_INT // try to open EMMXXXX0 device -src/lib/16_pm.c: int EMM_INT // get device info -src/lib/16_pm.c: int EMM_INT // get status -src/lib/16_pm.c: int EMM_INT // close handle -src/lib/16_pm.c: jc error1 // make sure EMS hardware is present -src/lib/16_pm.c: int EMS_INT // only work on EMS 3.2 or greater (silly, but...) -src/lib/16_pm.c: mov [EMSVer],ax // set EMSVer -src/lib/16_pm.c: cmp al,0x32 // only work on ems 3.2 or greater -src/lib/16_pm.c: int EMS_INT // find the page frame address -src/lib/16_pm.c: int EMS_INT // find out how much EMS is there -src/lib/16_pm.c: jz noEMS // no EMS at all to allocate -src/lib/16_pm.c: jl noEMS // Require at least 2 pages (32k) -src/lib/16_pm.c: // Don't hog all available EMS -src/lib/16_pm.c: // Initialize EMS mapping cache -src/lib/16_pm.c: gvar->pm.emm.EMSPresent = true; // We have EMS -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_ShutdownEMS() - If EMS was used, deallocate it -src/lib/16_pm.c:// -src/lib/16_pm.c: //return; -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// XMS Management code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_StartupXMS() - Starts up XMS for the Page Mgr's use -src/lib/16_pm.c:// Checks for presence of an XMS driver -src/lib/16_pm.c:// Makes sure that there's at least a page of XMS available -src/lib/16_pm.c:// Allocates any remaining XMS (rounded down to the nearest page size) -src/lib/16_pm.c:// -src/lib/16_pm.c://TODO: translate the _REG into working assembly -src/lib/16_pm.c://#define STARTUPXMSASM -src/lib/16_pm.c: word XMSAvail, XMSHandle;//, XMSVer; -src/lib/16_pm.c: gvar->pm.xmm.XMSPresent = false; // Assume failure -src/lib/16_pm.c: int XMS_INT // Check for presence of XMS driver -src/lib/16_pm.c: int XMS_INT // Get address of XMS driver -src/lib/16_pm.c: mov [WORD PTR XMSDriver+2],es // function pointer to XMS driver -src/lib/16_pm.c: call [DWORD PTR XMSDriver] //; Get XMS Version Number -src/lib/16_pm.c: mov ah,XMS_QUERYFREE // Find out how much XMS is available -src/lib/16_pm.c: or ax,ax // AJR: bugfix 10/8/92 -src/lib/16_pm.c: XMS_CALL(XMS_QUERYFREE); // Find out how much XMS is available -src/lib/16_pm.c: if (!_AX) // AJR: bugfix 10/8/92 -src/lib/16_pm.c: XMSAvail &= ~(PMPageSizeKB - 1); // Round off to nearest page size -src/lib/16_pm.c: if (XMSAvail < (PMPageSizeKB * 2)) // Need at least 2 pages -src/lib/16_pm.c: mov ah,XMS_ALLOC // And do the allocation -src/lib/16_pm.c: or ax,ax // AJR: bugfix 10/8/92 -src/lib/16_pm.c: XMS_CALL(XMS_ALLOC); // And do the allocation -src/lib/16_pm.c: if (!_AX) // AJR: bugfix 10/8/92 -src/lib/16_pm.c: //gvar->pm.xmm.XMSVer = XMSVer; -src/lib/16_pm.c: //printf("XMSHandle\n"); -src/lib/16_pm.c: //printf(" 1=%u 2=%u 3=%u 4=%u\n", XMSHandle1, XMSHandle2, XMSHandle3, XMSHandle4); -src/lib/16_pm.c: //printf(" 2=%u ", XMSHandle); -src/lib/16_pm.c: //printf(" %u", gvar->pm.xmm.XMSHandle); -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_XMSCopy() - Copies a main/EMS page to or from XMS -src/lib/16_pm.c:// Will round an odd-length request up to the next even value -src/lib/16_pm.c:// -src/lib/16_pm.c: //return; -src/lib/16_pm.c: //return; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_CopyToXMS() - Copies the specified number of bytes from the real mode -src/lib/16_pm.c:// segment address to the specified XMS page -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_CopyFromXMS() - Copies the specified number of bytes from an XMS -src/lib/16_pm.c:// page to the specified real mode address -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_ShutdownXMS() -src/lib/16_pm.c:// -src/lib/16_pm.c: //XMS_CALL(XMS_FREE); -src/lib/16_pm.c: //mov err,ah -src/lib/16_pm.c: //return; -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// Main memory code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_SetMainMemPurge() - Sets the purge level for all allocated main memory -src/lib/16_pm.c:// blocks. This shouldn't be called directly - the PM_LockMainMem() and -src/lib/16_pm.c:// PM_UnlockMainMem() macros should be used instead. -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_CheckMainMem() - If something besides the Page Mgr makes requests of -src/lib/16_pm.c:// the Memory Mgr, some of the Page Mgr's blocks may have been purged, -src/lib/16_pm.c:// so this function runs through the block list and checks to see if -src/lib/16_pm.c:// any of the blocks have been purged. If so, it marks the corresponding -src/lib/16_pm.c:// page as purged & unlocked, then goes through the block list and -src/lib/16_pm.c:// tries to reallocate any blocks that have been purged. -src/lib/16_pm.c:// This routine now calls PM_LockMainMem() to make sure that any allocation -src/lib/16_pm.c:// attempts made during the block reallocation sweep don't purge any -src/lib/16_pm.c:// of the other blocks. Because PM_LockMainMem() is called, -src/lib/16_pm.c:// PM_UnlockMainMem() needs to be called before any other part of the -src/lib/16_pm.c:// program makes allocation requests of the Memory Mgr. -src/lib/16_pm.c:// -src/lib/16_pm.c: if (n != -1) // Is the page using main memory? -src/lib/16_pm.c: if (!gvar->pm.mm.MainMemPages[n]) // Yep, was the block purged? -src/lib/16_pm.c: page->mainPage = -1; // Yes, mark page as purged & unlocked -src/lib/16_pm.c: // Prevent allocation attempts from purging any of our other blocks -src/lib/16_pm.c: if (!*p) // If the page got purged -src/lib/16_pm.c: if (*used & pmba_Allocated) // If it was allocated -src/lib/16_pm.c: *used &= ~pmba_Allocated; // Mark as unallocated -src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail--; // and decrease available count -src/lib/16_pm.c: if (*used & pmba_Used) // If it was used -src/lib/16_pm.c: *used &= ~pmba_Used; // Mark as unused -src/lib/16_pm.c: gvar->pm.MainPagesUsed--; // and decrease used count -src/lib/16_pm.c: MM_GetPtr(p,PMPageSize, gvar); // Try to reallocate -src/lib/16_pm.c: if (gvar->mm.mmerror) // If it failed, -src/lib/16_pm.c: allocfailed = true; // don't try any more allocations -src/lib/16_pm.c: else // If it worked, -src/lib/16_pm.c: *used |= pmba_Allocated; // Mark as allocated -src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail++; // and increase available count -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_StartupMainMem() - Allocates as much main memory as is possible for -src/lib/16_pm.c:// the Page Mgr. The memory is allocated as non-purgeable, so if it's -src/lib/16_pm.c:// necessary to make requests of the Memory Mgr, PM_UnlockMainMem() -src/lib/16_pm.c:// needs to be called. -src/lib/16_pm.c:// -src/lib/16_pm.c: int i;//,n; -src/lib/16_pm.c: //return; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_ShutdownMainMem() - Frees all of the main memory blocks used by the -src/lib/16_pm.c:// Page Mgr. -src/lib/16_pm.c:// -src/lib/16_pm.c: // DEBUG - mark pages as unallocated & decrease page count as appropriate -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// File management code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_ReadFromFile() - Reads some data in from the page file -src/lib/16_pm.c:// -src/lib/16_pm.c: //return; -src/lib/16_pm.c: //return; -src/lib/16_pm.c: //return; -src/lib/16_pm.c: //return; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_OpenPageFile() - Opens the page file and sets up the page info -src/lib/16_pm.c:// -src/lib/16_pm.c: //__SEGA buf; -src/lib/16_pm.c: //return; -src/lib/16_pm.c: // Read in header variables -src/lib/16_pm.c: // Allocate and clear the page list -src/lib/16_pm.c: // Read in the chunk offsets -src/lib/16_pm.c: //return; -src/lib/16_pm.c: // Read in the chunk lengths -src/lib/16_pm.c: //return; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_ClosePageFile() - Closes the page file -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// Allocation, etc., code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_GetEMSAddress() -src/lib/16_pm.c:// -src/lib/16_pm.c:// Page is in EMS, so figure out which EMS physical page should be used -src/lib/16_pm.c:// to map our page in. If normal page, use EMS physical page 3, else -src/lib/16_pm.c:// use the physical page specified by the lock type -src/lib/16_pm.c:// -src/lib/16_pm.c:#pragma argsused // DEBUG - remove lock parameter -src/lib/16_pm.c: // See if this page is already mapped in -src/lib/16_pm.c: emspage = i; // Yep - don't do a redundant remapping -src/lib/16_pm.c: // If page isn't already mapped in, find LRU EMS frame, and use it -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_GetPageAddress() - Returns the address of a given page -src/lib/16_pm.c:// Maps in EMS if necessary -src/lib/16_pm.c:// Returns nil if block isn't cached into Main Memory or EMS -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_GiveLRUPage() - Returns the page # of the least recently used -src/lib/16_pm.c:// present & unlocked main/EMS page (or main page if mainonly is true) -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_GiveLRUXMSPage() - Returns the page # of the least recently used -src/lib/16_pm.c:// (and present) XMS page. -src/lib/16_pm.c:// This routine won't return the XMS page protected (by XMSProtectPage) -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_PutPageInXMS() - If page isn't in XMS, find LRU XMS page and replace -src/lib/16_pm.c:// it with the main/EMS page -src/lib/16_pm.c:// -src/lib/16_pm.c: return; // Already in XMS -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_TransferPageSpace() - A page is being replaced, so give the new page -src/lib/16_pm.c:// the old one's address space. Returns the address of the new page. -src/lib/16_pm.c:// -src/lib/16_pm.c: // Copy page that's about to be purged into XMS -src/lib/16_pm.c: // Get the address, and force EMS into a physical page if necessary -src/lib/16_pm.c: // Steal the address -src/lib/16_pm.c: // Mark replaced page as purged -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_GetAPageBuffer() - A page buffer is needed. Either get it from the -src/lib/16_pm.c:// main/EMS free pool, or use PML_GiveLRUPage() to find which page to -src/lib/16_pm.c:// steal the buffer from. Returns a far pointer to the page buffer, and -src/lib/16_pm.c:// sets the fields inside the given page structure appropriately. -src/lib/16_pm.c:// If mainonly is true, free EMS will be ignored, and only main pages -src/lib/16_pm.c:// will be looked at by PML_GiveLRUPage(). -src/lib/16_pm.c:// -src/lib/16_pm.c: // There's remaining EMS - use it -src/lib/16_pm.c: // There's remaining main memory - use it -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_GetPageFromXMS() - If page is in XMS, find LRU main/EMS page and -src/lib/16_pm.c:// replace it with the page from XMS. If mainonly is true, will only -src/lib/16_pm.c:// search for LRU main page. -src/lib/16_pm.c:// XMSProtectPage is set to the page to be retrieved from XMS, so that if -src/lib/16_pm.c:// the page from which we're stealing the main/EMS from isn't in XMS, -src/lib/16_pm.c:// it won't copy over the page that we're trying to get from XMS. -src/lib/16_pm.c:// (pages that are being purged are copied into XMS, if possible) -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PML_LoadPage() - A page is not in main/EMS memory, and it's not in XMS. -src/lib/16_pm.c:// Load it into either main or EMS. If mainonly is true, the page will -src/lib/16_pm.c:// only be loaded into main. -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_GetPage() - Returns the address of the page, loading it if necessary -src/lib/16_pm.c:// First, check if in Main Memory or EMS -src/lib/16_pm.c:// Then, check XMS -src/lib/16_pm.c:// If not in XMS, load into Main Memory or EMS -src/lib/16_pm.c:// -src/lib/16_pm.c:#ifdef __DEBUG_2__ // for debugging -src/lib/16_pm.c: mov al,10 // bright green -src/lib/16_pm.c:if (!gvar->pm.PMPages[pagenum].offset) // JDC: sparse page -src/lib/16_pm.c:#ifdef __DEBUG_2__ // for debugging -src/lib/16_pm.c: mov al,3 // blue -src/lib/16_pm.c: mov al,0x20 // normal -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_SetPageLock() - Sets the lock type on a given page -src/lib/16_pm.c:// pml_Unlocked: Normal, page can be purged -src/lib/16_pm.c:// pml_Locked: Cannot be purged -src/lib/16_pm.c:// pml_EMS?: Same as pml_Locked, but if in EMS, use the physical page -src/lib/16_pm.c:// specified when returning the address. For sound stuff. -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_Preload() - Loads as many pages as possible into all types of memory. -src/lib/16_pm.c:// Calls the update function after each load, indicating the current -src/lib/16_pm.c:// page, and the total pages that need to be loaded (for thermometer). -src/lib/16_pm.c:// -src/lib/16_pm.c: int i,//j, -src/lib/16_pm.c: //totalnonxms,totalxms, -src/lib/16_pm.c: //emstotal,emsfree, -src/lib/16_pm.c: continue; // sparse -src/lib/16_pm.c: continue; // already in main mem -src/lib/16_pm.c:// -src/lib/16_pm.c:// cache main/ems blocks -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c:// load stuff to XMS -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// General code -src/lib/16_pm.c:// -src/lib/16_pm.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_NextFrame() - Increments the frame counter and adjusts the thrash -src/lib/16_pm.c:// avoidence variables -src/lib/16_pm.c:// -src/lib/16_pm.c:// If currently in panic mode (to avoid thrashing), check to see if the -src/lib/16_pm.c:// appropriate number of frames have passed since the last time that -src/lib/16_pm.c:// we would have thrashed. If so, take us out of panic mode. -src/lib/16_pm.c:// -src/lib/16_pm.c:// -src/lib/16_pm.c: // Frame count overrun - kill the LRU hit entries & reset frame count -src/lib/16_pm.c://#if 0 -src/lib/16_pm.c://#endif -src/lib/16_pm.c: // DEBUG - set border color -src/lib/16_pm.c: // DEBUG - reset border color -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_Reset() - Sets up caching structures -src/lib/16_pm.c:// -src/lib/16_pm.c: // Initialize page list -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_Startup() - Start up the Page Mgr -src/lib/16_pm.c:// -src/lib/16_pm.c: //strcpy(&(gvar->pm.fi.PageFileName), "VSWAP."); -src/lib/16_pm.c: //0000+=+=PML_OpenPageFile(gvar); -src/lib/16_pm.c: //return; -src/lib/16_pm.c:// -src/lib/16_pm.c:// PM_Shutdown() - Shut down the Page Mgr -src/lib/16_pm.c:// -src/lib/16_pm.c: //PML_ClosePageFile(gvar); -src/lib/16_pm.h: * along with this program. If not, see , or -src/lib/16_pm.h:// -src/lib/16_pm.h:// ID_PM.H -src/lib/16_pm.h:// Header file for Id Engine's Page Manager -src/lib/16_pm.h:// -src/lib/16_pm.h:/*// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024 -src/lib/16_pm.h:#define PMMinMainMem 10 // Min acceptable # of pages from main -src/lib/16_pm.h:#define PMMaxMainMem 100 // Max number of pages in main memory -src/lib/16_pm.h:#define PMThrashThreshold 1 // Number of page thrashes before panic mode -src/lib/16_pm.h:#define PMUnThrashThreshold 5 // Number of non-thrashing frames before leaving panic mode -src/lib/16_pm.h: dword offset; // Offset of chunk into file -src/lib/16_pm.h: word length; // Length of the chunk -src/lib/16_pm.h: int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle -src/lib/16_pm.h: PMLockType locked; // If set, this page can't be purged -src/lib/16_pm.h: int emsPage; // If in EMS, logical page/offset into page -src/lib/16_pm.h: int mainPage; // If in Main, index into handle array -src/lib/16_pm.h: dword lastHit; // Last frame number of hit -src/lib/16_pm.h: int baseEMSPage; // Base EMS page for this phys frame -src/lib/16_pm.h: dword lastHit; // Last frame number of hit -src/lib/16_pm.h:extern PageListStruct far *PMPages;*///moved to src/lib/typdefst.h -src/lib/16_pm.h: PM_GetPage(int pagenum, global_game_variables_t *gvar); // Use this one to cache page -src/lib/16render.c: * along with this program. If not, see , or -src/lib/16render.c://TODO! ADD CLIPPING!! -src/lib/16render.c://memory management needs to be added -src/lib/16render.c://void -src/lib/16render.c://modexDrawBmpRegion (page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp) -src/lib/16render.c: //fine tuning -src/lib/16render.c: //^^; -src/lib/16render.c: //printf("%d,%d p(%d,%d) r(%d,%d) rwh(%d,%d)\n", x, y, px, py, rx, ry, rw, rh); -src/lib/16render.c:// byte near *buff; -src/lib/16render.c:// buff = _nmalloc(p->pwidth+1); -src/lib/16render.c: // TODO Make this fast. It's SLOOOOOOW -src/lib/16render.c:// for(plane=0; plane < 4; plane++) { -src/lib/16render.c:// i=0; -src/lib/16render.c:// modexSelectPlane(PLANE(plane+x)); -src/lib/16render.c:// for(px = plane; px < p->width; px+=4) { -src/lib/16render.c:// offset=px; -src/lib/16render.c:// for(py=0; pyheight/2; py++) { -src/lib/16render.c:// //SELECT_ALL_PLANES(); -src/lib/16render.c:// if(!sprite || p->plane[offset]) -src/lib/16render.c:// page->data = &(p->plane[offset][i++]); -src/lib/16render.c:// offset+=p->width; -src/lib/16render.c:// offset++; -src/lib/16render.c:// } -src/lib/16render.c:// } -src/lib/16render.c:// } -src/lib/16render.c: //for(px=0; px < p->width; px++) { -src/lib/16render.c: //printf("%02X ", (int) p->plane[plane][i++]); -src/lib/16render.c:// _fmemcpy(buff, &(p->plane[plane][i+=p->pwidth]), p->pwidth); -src/lib/16render.c:// printf("buff %u==%s\n", y, *buff); -src/lib/16render.c:// _fmemcpy(page->data + (((page->width/4) * (y+page->dy)) + ((x+page->dx) / 4)), buff, p->pwidth); -src/lib/16render.c: //} -src/lib/16render.c://getch(); -src/lib/16render.c:// _nfree(buff);*/ -src/lib/16render.c://* normal versions *// -src/lib/16render.c: byte *data = bmp->data;//+bmp->offset; -src/lib/16render.c: byte *data = bmp->data;//+bmp->offset; -src/lib/16render.c://* planar buffer versions *// -src/lib/16render.h: * along with this program. If not, see , or -src/lib/16_snd.c: * along with this program. If not, see , or -src/lib/16_snd.c: //FMSetPercusiveMode(percusiveMode); -src/lib/16_snd.c: regNum = 0xB0 + voice % 11;//NUMVOICE; -src/lib/16_snd.c: regNum = 0xA0 + voice % 11;//NUMVOICE; -src/lib/16_snd.c: regNum = 0xB0 + voice % 11;//NUMVOICE; -src/lib/16_snd.c: voiceNum %= 11;//NUMVOICE; -src/lib/16_snd.h: * along with this program. If not, see , or -src/lib/16_sprit.c: // Retrive animation name list -src/lib/16_sprit.c: // Upon new animation, start from the first sprite in it -src/lib/16_sprit.c: // Retruve animation ids list -src/lib/16_sprit.c: // Loop through animation id untill match or end of list -src/lib/16_sprit.c: // Return on successful match -src/lib/16_sprit.c: // Retruve animation ids list -src/lib/16_sprit.c: // Loop through animation id untill match or end of list -src/lib/16_sprit.c: // Events go here -src/lib/16_sprit.c: // Draw sprite -src/lib/16_sprit.c: // Depending on delay, update indices -src/lib/16_sprit.c: // Delay = 0 means that sprite should loop. Nothing to change here -src/lib/16_sprit.c: // Delay = 1 means that on next time unit sprite should be changed -src/lib/16_sprit.c: // If we hit the end of an animation sequence, restart it -src/lib/16_sprit.c: // Delay > 1 means that we should not change sprite yet. Decrease delay -src/lib/16_sprit.h: * along with this program. If not, see , or -src/lib/16_sprit.h: // VRS container from which we will extract animation and image data -src/lib/16_sprit.h: // Container for a vrl sprite -src/lib/16_sprit.h: // Current sprite id -src/lib/16_sprit.h: // Index of a current sprite in an animation sequence -src/lib/16_sprit.h: // Current animation sequence -src/lib/16_sprit.h: // Index of current animation in relevant VRS offsets table -src/lib/16_sprit.h: // Delay in time units untill we should change sprite -src/lib/16_sprit.h: // Position of sprite on screen -src/lib/16_tail.c: * along with this program. If not, see , or -src/lib/16_tail.c: // DOSLIB: check our environment -src/lib/16_tail.c: // DOSLIB: what CPU are we using? -src/lib/16_tail.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. -src/lib/16_tail.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other -src/lib/16_tail.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for -src/lib/16_tail.c: // the CPU to carry out tasks. --J.C. -src/lib/16_tail.c: // DOSLIB: check for VGA -src/lib/16_tail.c: // hardware must be VGA or higher! -src/lib/16_tail.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log -src/lib/16_tail.c://=========================================================================== -src/lib/16_tail.c://=========================================================================== -src/lib/16_tail.c: //unsigned finscreen; -src/lib/16_tail.c: //ClearMemory (); -src/lib/16_tail.c: //WriteConfig (); -src/lib/16_tail.c: //CA_CacheGrChunk (ERRORSCREEN); -src/lib/16_tail.c: //screen = grsegs[ERRORSCREEN]; -src/lib/16_tail.c: //ShutdownId (); -src/lib/16_tail.c: //modexLeave(); -src/lib/16_tail.c: //movedata ((unsigned)screen,7,0xb800,0,7*160); -src/lib/16_tail.c: //gotoxy (10,4); -src/lib/16_tail.c: //gotoxy (1,8); -src/lib/16_tail.c: //clrscr(); -src/lib/16_tail.c: //#ifndef JAPAN -src/lib/16_tail.c: //gotoxy(1,24); -src/lib/16_tail.c: //#endif -src/lib/16_tail.c://asm mov bh,0 -src/lib/16_tail.c://asm mov dh,23 // row -src/lib/16_tail.c://asm mov dl,0 // collumn -src/lib/16_tail.c://asm mov ah,2 -src/lib/16_tail.c://asm int 0x10 -src/lib/16_tail.c://=========================================================================== -src/lib/16_tail.h: * along with this program. If not, see , or -src/lib/16text.c: * along with this program. If not, see , or -src/lib/16text.c: //romFontsData -src/lib/16text.h: * along with this program. If not, see , or -src/lib/16text.h: word seg; //segment for the font -src/lib/16text.h: word off; //offset in the segment for the font -src/lib/16text.h: byte charSize; //bytes in each character -src/lib/16text.h: byte col; //color -src/lib/16text.h: byte bgcol; //bg color! -src/lib/16text.h: word chw; //char width -src/lib/16_timer.c: * along with this program. If not, see , or -src/lib/16_timer.c: //gv->kurokku.frames_per_second = 60; -src/lib/16_timer.c: //turn this off if XT -src/lib/16_timer.c:// big global status text buffer -src/lib/16_timer.c: //float t; -src/lib/16_timer.c: //t=(((*(gv->clock))-gv->clock_start) /18.2); -src/lib/16_timer.c: //(gv->clock_start)=*(gv->clock); -src/lib/16_timer.c:// switch(gv->kurokku.fpscap) -src/lib/16_timer.c:// { -src/lib/16_timer.c:// case 0: -src/lib/16_timer.c:// gv->kurokku.frames_per_second=1; -src/lib/16_timer.c:// break; -src/lib/16_timer.c:// case 1: -src/lib/16_timer.c:// //turn this off if XT -src/lib/16_timer.c:// WaitPee(); -src/lib/16_timer.c:// gv->kurokku.frames_per_second=60; -src/lib/16_timer.c:// break; -src/lib/16_timer.c:// } -src/lib/16_timer.h: * along with this program. If not, see , or -src/lib/16_timer.h://double time_in_seconds(time_t in_t); -src/lib/16_vl.c: * along with this program. If not, see , or -src/lib/16_vl.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_vl.c:// // -src/lib/16_vl.c:// setvideo() - This function Manages the video modes // -src/lib/16_vl.c:// // -src/lib/16_vl.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_vl.c: case 0: // deinit the video -src/lib/16_vl.c: // change to the video mode we were in before we switched to mode 13h -src/lib/16_vl.c: default: // init the video -src/lib/16_vl.c: // get old video mode -src/lib/16_vl.c: //in.h.ah = 0xf; -src/lib/16_vl.c: //int86(0x10, &in, &out); -src/lib/16_vl.c: gv->video.old_mode = vgaGetMode();//out.h.al; -src/lib/16_vl.c: // enter mode -src/lib/16_vl.c: //int10_setmode(mode); -src/lib/16_vl.c://--------------------------------------------------- -src/lib/16_vl.c:// -src/lib/16_vl.c:// Use the bios to get the current video mode -src/lib/16_vl.c:// -src/lib/16_vl.c: //int CRTParmCount; -src/lib/16_vl.c: //outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */ -src/lib/16_vl.c: //outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */ -src/lib/16_vl.c: //CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]); -src/lib/16_vl.c: gv->video.page[0].sw = vga_state.vga_width = 320; // VGA lib currently does not update this -src/lib/16_vl.c: gv->video.page[0].sh = vga_state.vga_height = 240; // VGA lib currently does not update this -src/lib/16_vl.c: // mode X BYTE mode -src/lib/16_vl.c: // 320x240 mode 60Hz -src/lib/16_vl.c:// cm.horizontal_blank_end=0x82 + 1; /* CRTC[3] bit 0-4 & CRTC[5] bit 7 *///skewing ^^; -src/lib/16_vl.c: //cm.horizontal_start_delay_after_total=0x3e; /* CRTC[3] bit 5-6 */ -src/lib/16_vl.c: //cm.horizontal_start_delay_after_retrace=0x41; /* CRTC[5] bit 5-6 */ -src/lib/16_vl.c: cm.offset = (vga_state.vga_width / (4 * 2)); // 320 wide (40 x 4 pixel groups x 2) -src/lib/16_vl.c: case 2: // TODO: 160x120 according to ModeX_160x120regs -src/lib/16_vl.c: case 3: // TODO: 160x120 according to ModeX_320x200regs -src/lib/16_vl.c: case 4: // TODO: 160x120 according to ModeX_192x144regs -src/lib/16_vl.c: case 5: // TODO: 160x120 according to ModeX_256x192regs -src/lib/16_vl.c: dword far*ptr=(dword far*)vga_state.vga_graphics_ram;//VGA; /* used for faster screen clearing */ -src/lib/16_vl.c: for(i = 0;i < 0x4000; i++) ptr[i] = 0x0000; // 0x4000 x dword = 64KB -src/lib/16_vl.c:// gv->video.page[0].tw = gv->video.page[0].sw/TILEWH; -src/lib/16_vl.c:// gv->video.page[0].th = gv->video.page[0].sh/TILEWH; -src/lib/16_vl.c: //TODO MAKE FLEXIBLE~ -src/lib/16_vl.c:// gv->video.page[0].tilemidposscreenx = gv->video.page[0].tilesw; -src/lib/16_vl.c:// gv->video.page[0].tilemidposscreeny = (gv->video.page[0].tilesh/2)+1; -src/lib/16_vl.c: //page.data = VGA; -src/lib/16_vl.c: //page.data = (byte far *)(vga_state.vga_graphics_ram); -src/lib/16_vl.c://next page with defined dimentions~ -src/lib/16_vl.c: result.stridew=p->sw/4;//result.width/4; -src/lib/16_vl.c: //printf("\n\n 1st vmem_remain=%u\n", video->vmem_remain); -src/lib/16_vl.c: //printf(" [%u], video->page[%u].pagesize=%u\n", i, i, video->page[i].pagesize); -src/lib/16_vl.c: //printf(" [%u], vmem_remain=%u\n", i, video->vmem_remain); -src/lib/16_vl.c: (video->page[0]) = modexDefaultPage(&(video->page[0])); video->num_of_pages++; //video->page[0].width += (TILEWHD); video->page[0].height += (TILEWHD); -src/lib/16_vl.c://0000 (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), (video->page[0]).width, TILEWH*4); video->num_of_pages++; -src/lib/16_vl.c://0000 (video->page[3]) = (video->page[2]); video->num_of_pages++; -src/lib/16_vl.c:// (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].width, 176); video->num_of_pages++; -src/lib/16_vl.c:// (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), video->page[0].width, 172); video->num_of_pages++; -src/lib/16_vl.c:// (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), 72, 128); video->num_of_pages++; -src/lib/16_vl.c: //while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); -src/lib/16_vl.c: //while (!(inp(INPUT_STATUS_1) & VRETRACE)); -src/lib/16_vl.c: //printf("modexClearRegion(x=%u, y=%u, w=%u, h=%u, left=%u, right=%u)\n", x, y, w, h, left, right); -src/lib/16_vl.c: word scans = vga_state.vga_stride; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww -src/lib/16_vl.c:// printf("modexCopyPageRegion(src->stridew=%u, dest->stridew=%u, sx=%u, sy=%u, dx=%u, dy=%u, width=%u, height=%u, left=%u, right=%u)\n", src->stridew, dest->stridew, sx, sy, dx, dy, width, height, left, right); -src/lib/16_vl.c: //unsigned int i; -src/lib/16_vl.c: static word a[PAL_SIZE]; //palette array of change values! -src/lib/16_vl.c: //modexWaitBorder(); -src/lib/16_vl.c:// printf("q: %02d\n", (q)); -src/lib/16_vl.c:// printf("qq: %02d\n", (qq)); -src/lib/16_vl.c: //printf(" (*i)-q=%02d\n", (*i)-q); -src/lib/16_vl.c: //if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i])) -src/lib/16_vl.c://____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else -src/lib/16_vl.c: //printf("qp=%d\n", qp); -src/lib/16_vl.c: //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); -src/lib/16_vl.c: //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! -src/lib/16_vl.c: else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); -src/lib/16_vl.c: //if(qp>0) printf("qp=%d\n", qp); -src/lib/16_vl.c: //if(qp>0) printf(" (*i)=%d\n", (*i)/3); -src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */ -src/lib/16_vl.c://____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else -src/lib/16_vl.c: //printf("qp=%d\n", qp); -src/lib/16_vl.c: //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); -src/lib/16_vl.c: //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! -src/lib/16_vl.c: else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); -src/lib/16_vl.c: //printf(" (*i)=%d\n", (*i)/3); -src/lib/16_vl.c: //palette checker~ -src/lib/16_vl.c: //printf("1(*i)=%02d\n", (*i)/3); -src/lib/16_vl.c: //printf("1z=%02d\n", z/3); -src/lib/16_vl.c: //printf("2(*i)=%02d\n", (*i)/3); -src/lib/16_vl.c: //printf("2z=%02d\n", z/3); -src/lib/16_vl.c:// printf("a[%02d]=(%d)\n", aq, a[aq]); -src/lib/16_vl.c://update the image data here! -src/lib/16_vl.c: //(offset/bmp->offset)*bmp->offset -src/lib/16_vl.c: //printf("%02d ",bmp->data[lq]+bmp->offset); -src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n"); -src/lib/16_vl.c: //printf("%02d_", bmp->data[lq]+bmp->offset); -src/lib/16_vl.c: //printf("%02d", bmp->data[lq]); -src/lib/16_vl.c: //printf("\n%02d\n", bmp->offset); -src/lib/16_vl.c: //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]); -src/lib/16_vl.c://++++ bmp->data[lq]=a[aq]-aqpp; -src/lib/16_vl.c:// printf("_%d ", bmp->data[lq]); -src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n"); -src/lib/16_vl.c: bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3); -src/lib/16_vl.c: //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); -src/lib/16_vl.c: //printf("%02d`", bmp->data[lq]); -src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n"); -src/lib/16_vl.c://printf(" aq=%02d\n", aq); -src/lib/16_vl.c://printf(" aa=%02d\n", aa); -src/lib/16_vl.c: //update the palette~ -src/lib/16_vl.c: //modexWaitBorder(); -src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */ -src/lib/16_vl.c: //modexWaitBorder(); -src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */ -src/lib/16_vl.c: //modexWaitBorder(); -src/lib/16_vl.c://color checker~ -src/lib/16_vl.c://i want to make another vesion that checks the palette when the palette is being appened~ -src/lib/16_vl.c: //printf("q: %02d\n", (*q)); -src/lib/16_vl.c:// printf("1 offset of color in palette (*q): %d\n", (*q)/3); -src/lib/16_vl.c: //check palette for dups -src/lib/16_vl.c: //printf("\n z: %d\n", (*z)); -src/lib/16_vl.c: //printf(" q: %d\n", (*q)); -src/lib/16_vl.c: //printf(" z+q: %d\n\n", ((*z)+(*q))); -src/lib/16_vl.c: //if((*z)%3==0) -src/lib/16_vl.c: //{ -src/lib/16_vl.c://---- if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5]) -src/lib/16_vl.c:// printf("\n%d [%02d][%02d][%02d]\n", (*z), pal[(*z)], pal[(*z)+1], pal[(*z)+2]); -src/lib/16_vl.c:// printf("%d [%02d][%02d][%02d]\n\n", (*z)+3, pal[(*z)+3], pal[(*z)+4], pal[(*z)+5]); -src/lib/16_vl.c://0000 (*z)-=3; -src/lib/16_vl.c: //printf("zz: %02d\n", zz/3); -src/lib/16_vl.c: if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5]) //break if duplicate colors found in palette because it have reached the end of the current data of the palette -src/lib/16_vl.c:// (*z)-=3; -src/lib/16_vl.c:// (*i)-=3; -src/lib/16_vl.c:// printf("\nzq1:%d[%02d][%02d][%02d]\n", (zz+q), pal[(zz+q)], pal[(zz+q)+1], pal[(zz+q)+2]); -src/lib/16_vl.c:// printf("zq2:%d[%02d][%02d][%02d]\n\n", (zz+q)+3, pal[(zz+q)+3], pal[(zz+q)+4], pal[(zz+q)+5]); -src/lib/16_vl.c:// printf("\n\nwwwwwwwwwwwwwwww\n"); -src/lib/16_vl.c:// printf(" zq: %d [%02d][%02d][%02d] value that is needing to be changed~\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]); -src/lib/16_vl.c:// printf(" zz: %d [%02d][%02d][%02d] value that the previous value is going to change to~\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]); -src/lib/16_vl.c:// //printf(" zv: %d [%02d][%02d][%02d] wwww\n", (zz-z+q)/3, pal[(zz-z+q)], pal[(zz-z+q)+1], pal[(zz-z+q)+2]); -src/lib/16_vl.c:// printf(" z : %d [%02d][%02d][%02d] offset value~\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]); -src/lib/16_vl.c://++++ (*i)--; -src/lib/16_vl.c:// (*z)--; -src/lib/16_vl.c: //expand dong here -src/lib/16_vl.c: //for(zzii=0; zzii<3; zzii++) -src/lib/16_vl.c: //{ -src/lib/16_vl.c: //printf("z+q: %d\n\n", ((*z)+(*q))); -src/lib/16_vl.c: //} -src/lib/16_vl.c:// printf("\n aa: %d\n\n", (*aa)); -src/lib/16_vl.c:// printf(" a[%02d]=(%02d) offset array i think the palette should be updated again~\n", ((*z)+(*q))/3, a[((*z)+(*q))/3]); -src/lib/16_vl.c:// printf("wwwwwwwwwwwwwwww\n\n"); -src/lib/16_vl.c: //printf("[%d]", (zz+q)); -src/lib/16_vl.c:// printf("2 offset of color in palette (*q): %d\n", (*q)/3); -src/lib/16_vl.c: //outp(SC_INDEX, 0x02); -src/lib/16_vl.c: //outp(SC_DATA, 0x01 << (x & 3)); -src/lib/16_vl.c: m1 = 0x80; // left half -src/lib/16_vl.c: m2 = 0x08; // right half -src/lib/16_vl.c: //word addr = (word) romFontsData.l; -src/lib/16_vl.c: // load the character into romFontsData.l -src/lib/16_vl.c: // no need for inline assembly! -src/lib/16_vl.c: // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C. -src/lib/16_vl.c: //load the letter 'A' -src/lib/16_vl.c: //modexputPixel(page, x+xp+chw, y+i, l[i] & j ? col:bgcol); -src/lib/16_vl.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_vl.c:// // -src/lib/16_vl.c:// cls() - This clears the screen to the specified color, on the VGA or on // -src/lib/16_vl.c:// the Virtual screen. // -src/lib/16_vl.c:// // -src/lib/16_vl.c:///////////////////////////////////////////////////////////////////////////// -src/lib/16_vl.c: //modexClearRegion(page, 0, 0, page->width, page->height, color); -src/lib/16_vl.c: //_fmemset(VGA, color, 16000); -src/lib/16_vl.c: // spin -src/lib/16_vl.c: //spin -src/lib/16_vl.h: * along with this program. If not, see , or -src/lib/16_vl.h://#include "src/lib/planar.h" -src/lib/16_vl.h://#include "src/lib/modex16/16planar.h" -src/lib/16_vl.h:////#include "src/lib/modex16/320x240.h" -src/lib/16_vl.h:// #include "src/lib/modex16/320x200.h" -src/lib/16_vl.h:// #include "src/lib/modex16/256x192.h" -src/lib/16_vl.h:// #include "src/lib/modex16/192x144_.h" -src/lib/16_vl.h:// #include "src/lib/modex16/160x120.h" -src/lib/16_vl.h://320x240 = 20x15 -src/lib/16_vl.h://192x144 = 12x9 -src/lib/16_vl.h://temp defines -src/lib/16_vl.h://#define INPUT_STATUS_1 0x03da defined in 16_head -src/lib/16_vl.h:#if 0 // not needed anymore. maybe good for reference purposes though. -src/lib/16_vl.h: //outp(SC_INDEX, 0x02); -src/lib/16_vl.h: //outp(SC_DATA, 0x01 << (x & 3)); -src/lib/16_vrs.c: * along with this program. If not, see , or -src/lib/16_vrs.c:// Read .vrs file into far memory -src/lib/16_vrs.c: // Open filename, get size of file, -src/lib/16_vrs.c: // populate the vrs_container if all tests pass -src/lib/16_vrs.c: // Insert sanity cheks later -src/lib/16_vrs.c: // Calculate vrl offsets -src/lib/16_vrs.c: // Count sprites -src/lib/16_vrs.c: // Allocate memory for vrl line offsets table -src/lib/16_vrs.c: // Calculate line offsets for each vrl -src/lib/16_vrs.c: // Calc. vrl size as (next_offset - curr_offset) -src/lib/16_vrs.c: // If it's the last vrl, size is (next_vrs_struct_offset - curr_offset) -src/lib/16_vrs.c:// Seek and return a specified .vrl blob from .vrs blob in far memory -src/lib/16_vrs.c: // If id is invalid, return -1 -src/lib/16_vrs.c: // Probably add an error message? -src/lib/16_vrs.c: // Get id list from .vrs blob (base + offset) -src/lib/16_vrs.c: // Loop through the id list until we found the right one or hit the end of the list -src/lib/16_vrs.c: // Counter is keeping track of the offset(in ids/vrl blobs) -src/lib/16_vrs.c: // Return -2 if we couldn't find the requested id -src/lib/16_vrs.c: // Error message? -src/lib/16_vrs.c: // Get vrl offsets list from .vrs blob (base + offset) -src/lib/16_vrs.c: // Get vrl_header from .vrs (base + offset from vrl_list) -src/lib/16_vrs.c: // Counter is number of vrls to skip (ids and vrls are aligned according to the .vrs specification) -src/lib/16_vrs.c: // Get .vrl size by integer arithmetics (next vrl offset - current vrl offset) -src/lib/16_vrs.c: // If we are retriving the last vrl, size is ids_list offset - current vrl offset, as next vrl offs is 0 -src/lib/16_vrs.c: // Retrive line offsets form .vrs -src/lib/16_vrs.h: * along with this program. If not, see , or -src/lib/16_vrs.h://#include -src/lib/16_vrs.h://#include -src/lib/16_vrs.h: // Size of a .vrs lob in memory -src/lib/16_vrs.h: // minus header -src/lib/16_vrs.h: // Array of corresponding vrl line offsets -src/lib/16_vrs.h: // Size of a .vrl blob in memory -src/lib/16_vrs.h: // minus header -src/lib/16_vrs.h: // Pointer to a corresponding vrl line offsets struct -src/lib/bakapee.c: * along with this program. If not, see , or -src/lib/bakapee.c://color ‚Ä‚·‚Æ -src/lib/bakapee.c: //if(pee->coor < 256) -src/lib/bakapee.c: //{ -src/lib/bakapee.c: //}else pee->coor = 0; -src/lib/bakapee.c://color ‚Ä‚·‚Æ -src/lib/bakapee.c://slow spectrum down -src/lib/bakapee.c: //mxPutPixel(sx, sy, coor); -src/lib/bakapee.c: //printf("%d %d %d %d\n", pee->sx, pee->sy, svq, pee->coor); -src/lib/bakapee.c://plot pixel or plot tile -src/lib/bakapee.c: //fill_block(pee->xx, pee->yy, pee->xx+TILEWH, pee->yy+TILEWH, pee->coor); -src/lib/bakapee.c://assigning values from randomizer -src/lib/bakapee.c://randomizer -src/lib/bakapee.c://++++ if(q <= 4 && q!=2 && gq == BONK-1) coor = rand()%HGQ; -src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile -src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile -src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile -src/lib/bakapee.c: case 16: //interesting effects -src/lib/bakapee.c: //printf("%d %d %d %d %d %d\n", pee->xx, pee->yy, tx, ty, TILEWH); -src/lib/bakapee.c: //pee->coor++; -src/lib/bakapee.h: * along with this program. If not, see , or -src/lib/bakapee.h: * along with this program. If not, see , or -src/lib/bakapee.h://#include "src/lib/modex/modex.h" -src/lib/bakapee.h://#include "16/x/modex.h" -src/lib/bakapee.h://which lib? -src/lib/bitmap.c: * along with this program. If not, see , or -src/lib/bitmap.c: //long bufSize; -src/lib/bitmap.c: //int index; -src/lib/bitmap.c: //byte count, val; -src/lib/bitmap.c: //long int pos; -src/lib/bitmap.c: //printf("%zu\n", _memmax()); -src/lib/bitmap.c:// result.data = (byte far *)_fmalloc(bufSize); -src/lib/bitmap.c:// result.data = (byte __huge *)halloc(bufSize, sizeof(byte)); -src/lib/bitmap.c: //exit(0); -src/lib/bitmap.c: //printf("index=%d\n", index); -src/lib/bitmap.c://TODO: update!! -src/lib/bitmap.c: //ts.data[0] = malloc(sizeof(byte) * ts.ntiles * twidth * theight); -src/lib/bitmap.h: * along with this program. If not, see , or -src/lib/ems.c: sregs.ds = 0; //???? -src/lib/mapread.c: * along with this program. If not, see , or -src/lib/mapread.c://this function is quite messy ^^; sorry! it is a quick and dirty fix~ -src/lib/mapread.c: word j;//, k; -src/lib/mapread.c://0000fprintf(stderr, "t->type=%d\n", t->type); -src/lib/mapread.c:// fprintf(stdout, "[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); -src/lib/mapread.c:// fprintf(stdout, "\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); -src/lib/mapread.c: //fix this to be far~ -src/lib/mapread.c://0000 bp = bitmapLoadPcx("data/ed.pcx"); -src/lib/mapread.c:// bp = bitmapLoadPcx("data/koishi^^.pcx"); -src/lib/mapread.c://---- map->tiles->data = planar_buf_from_bitmap(&bp); -src/lib/mapread.c: //map->tiles->data->data = malloc((16/**2*/)*16); -src/lib/mapread.c: //map->tiles->data->width = (16/**2*/); -src/lib/mapread.c: //map->tiles->data->height= 16; -src/lib/mapread.c: strcpy(js_sv, "data");//strdup(js+t->start);//, t->end - t->start); -src/lib/mapread.c: strcpy(js_sv, "height");//strdup(js+t->start);//, t->end - t->start); -src/lib/mapread.c: strcpy(js_sv, "width");//strdup(js+t->start);//, t->end - t->start); -src/lib/mapread.c: //fprintf(stdout, "\n"); -src/lib/mapread.c: //for (k = 0; k < indent; k++) fprintf(stdout, "\t"); -src/lib/mapread.c: //fprintf(stdout, ": "); -src/lib/mapread.c: //fprintf(stdout, "\n"); -src/lib/mapread.c: //fprintf(stdout, "==\n"); -src/lib/mapread.c: //for (k = 0; k < indent-1; k++) fprintf(stdout, "\t"); -src/lib/mapread.c: //fprintf(stdout, "\t-"); -src/lib/mapread.c: //fprintf(stdout, "==\n"); -src/lib/mapread.c://0000fprintf(stderr, "tok malloc\n"); -src/lib/mapread.c://0000fprintf(stderr, "read\n"); -src/lib/mapread.c://0000fprintf(stdout, "r= [%d] BUFSIZ=%d\n", r, BUFSIZ); -src/lib/mapread.c://0000fprintf(stderr, "js alloc~\n"); -src/lib/mapread.c://0000fprintf(stdout, " parse~ tok=%zu jslen=%zu r=%d _memavl()=%u BUFSIZ=%d~\n", tokcount, jslen, r, _memavl(), BUFSIZ); -src/lib/mapread.c://0000fprintf(stdout, "p=[%u] [%u] [%d]\n", p.pos, p.toknext, p.toksuper); -src/lib/mapread.c://0000fprintf(stdout, "r= [%d]\n", r); -src/lib/mapread.c://0000fprintf(stderr, "tok realloc~ %zu\n", tokcount); -src/lib/mapread.c: //printf("js=%Fp\n", (js)); -src/lib/mapread.c: //printf("*js=%Fp\n", (*(js))); -src/lib/mapread.c: //printf("&*js=%s\n", &(*(js))); -src/lib/mapread.c: //printf("&buf=[%Fp]\n", &buf); -src/lib/mapread.c: //printf("&buf_seg=[%x]\n", FP_SEG(&buf)); -src/lib/mapread.c: //printf("&buf_off=[%x]\n", FP_OFF(&buf)); -src/lib/mapread.c: //printf("&buf_fp=[%Fp]\n", MK_FP(FP_SEG(&buf), FP_OFF(&buf))); -src/lib/mapread.c: //printf("buf=[\n%s\n]\n", buf); -src/lib/mapread.c: //printf("buff=[%Fp]\n", buff); -src/lib/mapread.c: //printf("(*buff)=[%Fp]\n", (*buff)); -src/lib/mapread.c: //printf("&(*buff)=[\n%s\n]\n", &(*buff)); -src/lib/mapread.c: //free(js); -src/lib/mapread.c: //free(tok); -src/lib/mapread.c: //fclose(fh); -src/lib/mapread.h: * along with this program. If not, see , or -src/lib/mapread.h://#define DEBUG_MAPDATA -src/lib/mapread.h://#define DEBUG_MAPVAR -src/lib/mapread.h://#define DEBUG_DUMPVARS -src/lib/mapread.h://#define DEBUG_JS -src/lib/mapread.h: boolean debug_text; //show the value of the tile! wwww -src/lib/mapread.h: int width; //this has to be signed! -src/lib/mapread.h: int height; //this has to be signed! -src/lib/midi.c://==== -src/lib/midi.c://==== -src/lib/midi.c://==== -src/lib/midi.c://==== -src/lib/midi.c://==== -src/lib/midi.c://==== -src/lib/midi.c://void adlib_shut_up(); -src/lib/midi.c:// midi_tick(); -src/lib/midi.h://#include "src/lib/doslib/vga.h" -src/lib/midi.h://#include "src/lib/doslib/vgagui.h" -src/lib/midi.h://#include "src/lib/doslib/vgatty.h" -src/lib/scroll16.c: * along with this program. If not, see , or -src/lib/scroll16.c: //printf("player[%d].d=%d\n", pn, player[pn].d); -src/lib/scroll16.c: //no direction -src/lib/scroll16.c: //0000pip[0].video->startclk = (*clockw); -src/lib/scroll16.c: //right movement -src/lib/scroll16.c: //printf("pip[0].page->tilesw=%d ", pip[0].page->tilesw); printf("pip[0].page->tw=%d\n", pip[0].page->tw); -src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx+1 == TRIGGX && player[pn].ty == TRIGGY)) //collision detection! -src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; -src/lib/scroll16.c: else if(player[pn].tx < pip[0].map->width && !(pip[0].map->data[(player[pn].tx)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx+1 == TRIGGX && player[pn].ty == TRIGGY)) -src/lib/scroll16.c: //left movement -src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-2)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx-1 == TRIGGX && player[pn].ty == TRIGGY)) //collision detection! -src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; -src/lib/scroll16.c: else if(player[pn].tx > 1 && !(pip[0].map->data[(player[pn].tx-2)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx-1 == TRIGGX && player[pn].ty == TRIGGY)) -src/lib/scroll16.c: //down movement -src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty+1 == TRIGGY)) //collision detection! -src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; -src/lib/scroll16.c: else if(player[pn].ty < pip[0].map->height && !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty+1 == TRIGGY)) -src/lib/scroll16.c: //up movement -src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty-2))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty-1 == TRIGGY)) //collision detection! -src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2; -src/lib/scroll16.c: else if(player[pn].ty > 1 && !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty-2))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty-1 == TRIGGY)) -src/lib/scroll16.c://panning page -src/lib/scroll16.c: //right movement -src/lib/scroll16.c: //left movement -src/lib/scroll16.c: //down movement -src/lib/scroll16.c: //up movement -src/lib/scroll16.c: //if (player[pn].d!=2) printf("player[%u].d=%u player[%u].q=%u\n", pn, player[pn].d, pn, player[pn].q); -src/lib/scroll16.c: //result.data = (byte *)alloc_emem(((int)sizeof(byte) * w * h)/1024); -src/lib/scroll16.c: //emmhandle = mallocEMS(coretotalEMS());//alloc_emem((int)sizeof(map)) -src/lib/scroll16.c: // just a place holder to fill out an alternating pattern -src/lib/scroll16.c:// int tile = 1; -src/lib/scroll16.c: //if(!isEMS() || !checkEMS()) -src/lib/scroll16.c:// map->tiles = malloc(sizeof(tiles_t)); -src/lib/scroll16.c: //else -src/lib/scroll16.c: // map->tiles = (tiles_t *)alloc_emem(sizeof(tiles_t)); -src/lib/scroll16.c: //create the tile set -src/lib/scroll16.c: //if(!isEMS() || !checkEMS()) -src/lib/scroll16.c:// map->tiles->data = malloc(sizeof(bitmap_t)); -src/lib/scroll16.c: //else -src/lib/scroll16.c: // map->tiles->data = (bitmap_t *)alloc_emem(sizeof(bitmap_t)); -src/lib/scroll16.c:// map->tiles->data->width = (TILEWH); -src/lib/scroll16.c:// map->tiles->data->height= TILEWH; -src/lib/scroll16.c: //if(!isEMS() || !checkEMS()) -src/lib/scroll16.c:// map->tiles->data->data = malloc((TILEWH*2)*TILEWH); -src/lib/scroll16.c: //else -src/lib/scroll16.c: // map->tiles->data->data = (byte *)alloc_emem((TILEWH*2)*TILEWH); -src/lib/scroll16.c:// map->tiles->tileHeight = TILEWH; -src/lib/scroll16.c:// map->tiles->tileWidth =TILEWH; -src/lib/scroll16.c:// map->tiles->rows = 1; -src/lib/scroll16.c:// map->tiles->cols = 1;//2; -src/lib/scroll16.c: //for(y=0; yheight; y++) { -src/lib/scroll16.c: //for(x=0; xwidth; x++) { -src/lib/scroll16.c: //if(xtiles->data->data[i+1] = map->data[q];//28;//0x24; -src/lib/scroll16.c:// printf("[%d]", map->tiles->data->data[i]); -src/lib/scroll16.c: //}else{ -src/lib/scroll16.c: //map->tiles->data->data[i] = map->data[q];//0;//0x34; -src/lib/scroll16.c: //printf("]%d[==[%d]", i, map->tiles->data->data[i]); -src/lib/scroll16.c: //} -src/lib/scroll16.c:// printf("\n"); -src/lib/scroll16.c:// printf("[%d]", map->data[q]); -src/lib/scroll16.c:// } -src/lib/scroll16.c: //printf("\n\n"); -src/lib/scroll16.c:// } -src/lib/scroll16.c:// map->data[i]=255; -src/lib/scroll16.c: //tile = tile ? 0 : 1; -src/lib/scroll16.c: //tile = tile ? 0 : 1; -src/lib/scroll16.c: word x;//, y; /* coordinate for drawing */ -src/lib/scroll16.c: word x;//,y; /* coordinate for drawing */ -src/lib/scroll16.c: word y;//x, /* coordinate for drawing */ -src/lib/scroll16.c: word y;//x, /* coordinate for drawing */ -src/lib/scroll16.c://TODO finish this wwww -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// _fmemmove(mv[id].page->data+4, mv[id].page->data, mv[id].page->pagesize); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// _fmemmove(mv[id].page->data-4, mv[id].page->data, mv[id].page->pagesize); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// _fmemmove(mv[id].page->data-mv[id].page->pi, mv[id].page->data, mv[id].page->pagesize); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// _fmemmove(mv[id].page->data+mv[id].page->pi, mv[id].page->data, mv[id].page->pagesize); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c:// bitmap_t bp; -src/lib/scroll16.c: //check for failed to load map -src/lib/scroll16.c: //initiate a null map! -src/lib/scroll16.c: map->width=MAPW;///2; -src/lib/scroll16.c: map->height=MAPH;///2; -src/lib/scroll16.c:// map->data = malloc(((map->width*map->height)+1)*sizeof(byte)); -src/lib/scroll16.c: //fix this to be far~ -src/lib/scroll16.c:// bp = bitmapLoadPcx("data/ed.pcx"); -src/lib/scroll16.c:// map->tiles->data = &bp; -src/lib/scroll16.c://TODO: player position here -src/lib/scroll16.c: int py;//px, -src/lib/scroll16.c:// { -src/lib/scroll16.c:// unsigned int k,j,o; -src/lib/scroll16.c:// /* fill screen with a distinctive pattern */ -src/lib/scroll16.c:// for (k=0;k < vga_state.vga_width;k++) { -src/lib/scroll16.c:// o = k >> 2; -src/lib/scroll16.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3)); -src/lib/scroll16.c:// for (j=0;j < (mv[0].page->height)+(mv[1].page->height)+(mv[2].page->height)+(mv[3].page->height);j++,o += vga_state.vga_stride) -src/lib/scroll16.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15! -src/lib/scroll16.c:// } -src/lib/scroll16.c:// } -src/lib/scroll16.c: //word textx=0, texty=0; -src/lib/scroll16.c: //if(i==0) i=2; -src/lib/scroll16.c: //wwww -src/lib/scroll16.c: modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color! -src/lib/scroll16.c:////0000printf("i=%d\n", i); -src/lib/scroll16.c: //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i])); -src/lib/scroll16.c: //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header)); -src/lib/scroll16.c: //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); -src/lib/scroll16.c: //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data)); -src/lib/scroll16.c:// modexprint(page, x+(textx*8), y+(texty*8), 1, (word)(t->debug_data), 0, (t->debug_data)); -src/lib/scroll16.c://printf("y: %d\n", poopoffset); -src/lib/scroll16.c://printf("x: %d\n", poopoffset); -src/lib/scroll16.c: //setkb(0); -src/lib/scroll16.c: word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen -src/lib/scroll16.c: word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen -src/lib/scroll16.c: word col = 7, bgcol = 0, type = 1;//w = 64, h = 8, -src/lib/scroll16.c: //byte o,o2,i; -src/lib/scroll16.c: //modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4); -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x+w, 0, w, h); -src/lib/scroll16.c:// o = *(gv->video.page[2].data); // source offscreen -src/lib/scroll16.c:// o2 = *(gv->video.page[shinku_fps_indicator_page].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride) -src/lib/scroll16.c:// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c: // NTS: For some bizarre reason, gv->pee is not initialized, but the pointer is not NULL even -src/lib/scroll16.c: // though it should be. Instead it's NULL as a near pointer but contains a non-null -src/lib/scroll16.c: // segment value, so testing against NULL doesn't work. It is initialized properly if -src/lib/scroll16.c: // you call start_timer() though which uses near malloc. Rather than fight with that, -src/lib/scroll16.c: // I decided it would be better to declare a temp buffer statically and sprintf to that. -src/lib/scroll16.c: // -src/lib/scroll16.c: // This fixes *** Null pointer assignment detected error message in ZCROLL.EXE on exit. -src/lib/scroll16.c: //modexClearRegion(&(gv->video.page[shinku_fps_indicator_page]), x, y, w, h, 45); -src/lib/scroll16.c:// vga_setup_wm1_block_copy(); -src/lib/scroll16.c:// o = *(gv->video.page[shinku_fps_indicator_page].data); // source offscreen -src/lib/scroll16.c:// o2 = *(gv->video.page[2].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride) -src/lib/scroll16.c:// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2); -src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x, 0, w, h); -src/lib/scroll16.c:// vga_restore_rm0wm0(); -src/lib/scroll16.c: }else //copy dat sheet -src/lib/scroll16.c: //modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y+8, type, col, bgcol, "sanic!"); -src/lib/scroll16.c: //turn this off if XT -src/lib/scroll16.c: //modexWaitBorder(); -src/lib/scroll16.c: //vga_setup_wm1_block_copy(); -src/lib/scroll16.c: //_fmemcpy((gv->video.page[(gv->video.p)]).data, (gv->video.page[(!gv->video.p)]).data, gv->video.page[(!gv->video.p)].pagesize); -src/lib/scroll16.c: //vga_restore_rm0wm0(); -src/lib/scroll16.c: //0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2; -src/lib/scroll16.c: sword bx = x+16; //buffer's x -src/lib/scroll16.c: sword by = y+16; //buffer's y -src/lib/scroll16.c: word dire=32; //direction -src/lib/scroll16.c: sword qq; //scroll offset -src/lib/scroll16.c: //x-=4; -src/lib/scroll16.c: //up -src/lib/scroll16.c: // right -src/lib/scroll16.c: //down -src/lib/scroll16.c: //left -src/lib/scroll16.c: //copy old bg to page0 -src/lib/scroll16.c: //modexCopyPageRegion(pip[3].page, pip[0].page, bx, by, 0, 0, 20, 36); -src/lib/scroll16.c: //update buffer -src/lib/scroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 20, 36); -src/lib/scroll16.c://modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height); -src/lib/scroll16.c: //modexCopyPageRegion(pip[3].page, pip[!(pip->video->p)].page, x-4, y-4, 0, 128, 28, 36); -src/lib/scroll16.c:// else modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 40); -src/lib/scroll16.c:// if(2>ls && ls>=1) { FRAME1 }else -src/lib/scroll16.c:// if(3>ls && ls>=2) { FRAME2 }else -src/lib/scroll16.c:// if(4>ls && ls>=3) { FRAME3 }else -src/lib/scroll16.c:// if(5>ls && ls>=4) { FRAME4 } -src/lib/scroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 24, 32); -src/lib/scroll16.c: //printf("x=%d y=%d bx=%d by=%d\n", x, y, bx, by); -src/lib/scroll16.h: * along with this program. If not, see , or -src/lib/scroll16.h:#include "src/lib/mapread.h" //map is loaded here www -src/lib/scroll16.h://#include "src/lib/16_map.h" //new map stuff -src/lib/scroll16.h://#define TILERENDER -src/lib/scroll16.h://modexDrawSpritePBufRegion -src/lib/scroll16.h://modexDrawBmpPBufRegion -src/lib/scroll16.h: int tx; //appears to be the top left tile position on the viewable screen map -src/lib/scroll16.h: int ty; //appears to be the top left tile position on the viewable screen map -src/lib/scroll16.h: word dxThresh; //???? -src/lib/scroll16.h: word dyThresh; //???? -src/lib/scroll16.h: video_t *video; //pointer to game variables of the video -src/lib/scroll16.h: pan_t *pan; //pointer the the page panning debug system -src/lib/scroll16.h://for null map! -src/lib/scroll16.h://map_t allocMap(int w, int h); -src/lib/scroll16.h://void initMap(map_t *map); -src/lib/scroll16.h://void qclean(); -src/lib/typdefst.h: * along with this program. If not, see , or -src/lib/typdefst.h: int dx, dy; //backwards compait -src/lib/typdefst.h: word delta; // How much should we shift the page for smooth scrolling -src/lib/typdefst.h: enum direction d; // Direction we should shift the page -src/lib/typdefst.h: //sprite .... -src/lib/typdefst.h: //vrs with sprite .... -src/lib/typdefst.h: dword tiku; //frames passed -src/lib/typdefst.h: word clock_start; //timer start -src/lib/typdefst.h: word *clock; //current time on clock -src/lib/typdefst.h: boolean fpscap; //cap the fps var -src/lib/typdefst.h://video -src/lib/typdefst.h:#define NUMCHUNKS 416 //keen -src/lib/typdefst.h: char old_mode; //old video mode before game! -src/lib/typdefst.h: page_t page[MAXPAGE]; //pointer to root page[0] -src/lib/typdefst.h: word vmem_remain; //remaining video memory -src/lib/typdefst.h: byte num_of_pages; //number of actual pages -src/lib/typdefst.h: boolean __near p; //render page number -src/lib/typdefst.h: boolean __near r; //page flip if true -src/lib/typdefst.h: word pr[MAXPAGE][4]; //render sections of pages -src/lib/typdefst.h: //0000word startclk; float clk, tickclk; //timer -src/lib/typdefst.h://from 16_mm -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h: //word start; dword length; -src/lib/typdefst.h: word blob; //for data larger than 64k -src/lib/typdefst.h: memptr *useptr; // pointer to the segment start -src/lib/typdefst.h: //huge struct mmblockstruct huge *next; -src/lib/typdefst.h:// boolean PMStarted, MainPresent, EMSPresent, XMSPresent; -src/lib/typdefst.h: //huge void huge *farheap; -src/lib/typdefst.h: //dword numUMBs,UMBbase[MAXUMBS]; -src/lib/typdefst.h: //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew; -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h://from 16_pm -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h:// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024 -src/lib/typdefst.h:#define PMMinMainMem 10 // Min acceptable # of pages from main -src/lib/typdefst.h:#define PMMaxMainMem 100 // Max number of pages in main memory -src/lib/typdefst.h:#define PMThrashThreshold 1 // Number of page thrashes before panic mode -src/lib/typdefst.h:#define PMUnThrashThreshold 5 // Number of non-thrashing frames before leaving panic mode -src/lib/typdefst.h: dword offset; // Offset of chunk into file -src/lib/typdefst.h: word length; // Length of the chunk -src/lib/typdefst.h: int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle -src/lib/typdefst.h: PMLockType locked; // If set, this page can't be purged -src/lib/typdefst.h: int emsPage; // If in EMS, logical page/offset into page -src/lib/typdefst.h: int mainPage; // If in Main, index into handle array -src/lib/typdefst.h: dword lastHit; // Last frame number of hit -src/lib/typdefst.h: int baseEMSPage; // Base EMS page for this phys frame -src/lib/typdefst.h: dword lastHit; // Last frame number of hit -src/lib/typdefst.h:// Main Mem specific variables -src/lib/typdefst.h:// EMS specific variables -src/lib/typdefst.h:// XMS specific variables -src/lib/typdefst.h: word XMSAvail,XMSPagesAvail,XMSHandle;//,XMSVer; -src/lib/typdefst.h: int XMSProtectPage;// = -1; -src/lib/typdefst.h:// File specific variables -src/lib/typdefst.h: char PageFileName[13];// = {"VSWAP."}; -src/lib/typdefst.h: int PageFile;// = -1; -src/lib/typdefst.h:// General usage variables -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h://from 16_ca -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h:#define NUMMAPS 4//39 -src/lib/typdefst.h: word bit0,bit1; // 0-255 is a character, > is a pointer to a node -src/lib/typdefst.h: int maphandle[4]; // handle to MAPTEMP / GAMEMAPS -src/lib/typdefst.h: ca_handle_t file; //files to open -src/lib/typdefst.h://========================================================================== -src/lib/typdefst.h://actual global game varables! -src/lib/typdefst.h: video_t video; // video settings variable -src/lib/typdefst.h: ca_t ca; // ca stuff -src/lib/typdefst.h: pm_t pm; // pm stuff -src/lib/typdefst.h: loghandle_t handle; //handles for file logging -src/lib/typdefst.h: kurokku_t kurokku; //clock struct -src/lib/types.h: * along with this program. If not, see , or -src/lib/types.h://typedef unsigned short _seg; // it will contains segment value (as Borland _seg) -src/lib/types.h://typedef void _seg * memptr; -src/lib/types.h:typedef void _seg * memptr;//typedef void __based( void ) * memptr; ////old //----typedef void __based(__self) * memptr; -src/lib/xms.c: * Documentation on the XMS API was found on http://www.qzx.com/pc-gpe/xms30.txt -src/lib/xms.c: //fprintf(stream, "XMS Version number: %d\n", XMSVersionNumber); -src/lib/xms.c: //fprintf(stream, "Largest available block: %d kB (%d kB total)\n", XMSLargestBlock, XMSTotal); -src/lib/zcroll16.c: * along with this program. If not, see , or -src/lib/zcroll16.c: // Assume everything crosses at most 1 tile at once -src/lib/zcroll16.c: return dx && 1;//crossable_tile(x + dx, map_v) || dy && crossable_tile(y + dy, map_v); -src/lib/zcroll16.c: // Allow movement -src/lib/zcroll16.c: // Set speed -src/lib/zcroll16.c: // Start animation -src/lib/zcroll16.c: // Mark next tile as occupied -src/lib/zcroll16.c: // Mark this tile as vacant -src/lib/zcroll16.c: // (Un)load stuff? -src/lib/zcroll16.c:// bitmap_t bp; -src/lib/zcroll16.c: //check for failed to load map -src/lib/zcroll16.c: //initiate a null map! -src/lib/zcroll16.c: map->width=MAPW;///2; -src/lib/zcroll16.c: map->height=MAPH;///2; -src/lib/zcroll16.c:// map->data = malloc(((map->width*map->height)+1)*sizeof(byte)); -src/lib/zcroll16.c: //fix this to be far~ -src/lib/zcroll16.c:// bp = bitmapLoadPcx("data/ed.pcx"); -src/lib/zcroll16.c:// map->tiles->data = &bp; -src/lib/zcroll16.c://TODO: player position here -src/lib/zcroll16.c: //if(i==0) i=2; -src/lib/zcroll16.c: //wwww -src/lib/zcroll16.c: modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color! -src/lib/zcroll16.c:////0000printf("i=%d\n", i); -src/lib/zcroll16.c: //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i])); -src/lib/zcroll16.c: //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header)); -src/lib/zcroll16.c: //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); -src/lib/zcroll16.c: //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data)); -src/lib/zcroll16.c:// modexprint(page, x+(textx*8), y+(texty*8), 1, (word)(t->debug_data), 0, (t->debug_data)); -src/lib/zcroll16.c: word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen -src/lib/zcroll16.c: word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen -src/lib/zcroll16.c: //modexClearRegion(&(gv->video.page[shinku_fps_indicator_page]), x, y, w, h, 45); -src/lib/zcroll16.c: }else //copy dat sheet -src/lib/zcroll16.c: //turn this off if XT -src/lib/zcroll16.c: sword bx = x+16; //buffer's x -src/lib/zcroll16.c: sword by = y+16; //buffer's y -src/lib/zcroll16.c: word dire=32; //direction -src/lib/zcroll16.c: sword qq; //scroll offset -src/lib/zcroll16.c: //x-=4; -src/lib/zcroll16.c: //y-=pip->map->tiles->tileHeight; -src/lib/zcroll16.c: //up -src/lib/zcroll16.c: // right -src/lib/zcroll16.c: //down -src/lib/zcroll16.c: //left -src/lib/zcroll16.c: //copy old bg to page0 -src/lib/zcroll16.c: //modexCopyPageRegion(pip[3].page, pip[0].page, bx, by, 0, 0, 20, 36); -src/lib/zcroll16.c: //update buffer -src/lib/zcroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 20, 36); -src/lib/zcroll16.h: * along with this program. If not, see , or -src/lib/zcroll16.h://#include "src/lib/bakapee.h" -src/lib/zcroll16.h://#include "src/lib/16_in.h" -src/lib/zcroll16.h:#include "src/lib/16_map.h" //map is loaded here www -src/lib/zcroll16.h://#define TILERENDER -src/lib/zcroll16.h://modexDrawSpritePBufRegion -src/lib/zcroll16.h://modexDrawBmpPBufRegion -src/lib/zcroll16.h: int tx; //appears to be the top left tile position on the viewable screen map -src/lib/zcroll16.h: int ty; //appears to be the top left tile position on the viewable screen map -src/lib/zcroll16.h: word dxThresh; //Threshold for physical tile switch -src/lib/zcroll16.h: word dyThresh; //Threshold for physical tile switch -src/lib/zcroll16.h: video_t *video; //pointer to game variables of the video -src/lib/zcroll16.h: pan_t *pan; //pointer the the page panning debug system -src/lib/zcroll16.h:// Move an entity around. Should actually be in 16_entity -src/lib/zcroll16.h:// Move player around and call map scrolling if required/possible -src/lib/zcroll16.h:// Scroll map in one direction (assumed from player's movement) -src/lib/zcroll16.h://void qclean(); diff --git a/makefile b/makefile index effed175..0ea96707 100755 --- a/makefile +++ b/makefile @@ -107,7 +107,7 @@ LIBFLAGS=$(WLIBQ) -b -n # VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) OLDLIBOBJS=bitmap.$(OBJ) mapread.$(OBJ) 16render.$(OBJ) -GFXLIBOBJS = 16_vl.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ) $(OLDLIBOBJS) +GFXLIBOBJS = 16_vl.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) 16_scr.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ) $(OLDLIBOBJS) 16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_in.$(OBJ) 16_head.$(OBJ) 16_dbg.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) #16planar.$(OBJ) planar.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) @@ -291,7 +291,7 @@ bakapee.$(OBJ):$(SRCLIB)/bakapee.c $(SRCLIB)/bakapee.h 16_sprit.$(OBJ):$(SRCLIB)/16_sprit.c $(SRCLIB)/16_sprit.h bitmap.$(OBJ): $(SRCLIB)/bitmap.c $(SRCLIB)/bitmap.h planar.$(OBJ): $(SRCLIB)/planar.c $(SRCLIB)/planar.h -scroll16.$(OBJ):$(SRCLIB)/scroll16.c $(SRCLIB)/scroll16.h +16_scr.$(OBJ):$(SRCLIB)/16_scr.c $(SRCLIB)/16_scr.h 16text.$(OBJ): $(SRCLIB)/16text.c mapread.$(OBJ):$(SRCLIB)/mapread.c $(SRCLIB)/mapread.h 16_map.$(OBJ):$(SRCLIB)/16_map.c $(SRCLIB)/16_map.h diff --git a/src/16.h b/src/16.h index 24f180ac..e8dcbf74 100755 --- a/src/16.h +++ b/src/16.h @@ -27,7 +27,7 @@ #include "src/lib/16_tail.h" #include "src/lib/16_vl.h" #include "src/lib/wcpu/wcpu.h" -#include "src/lib/scroll16.h" +#include "src/lib/16_scr.h" #include "src/lib/16_timer.h" #include "src/lib/16_dbg.h" diff --git a/src/inputest.c b/src/inputest.c index c4b59fd9..e45c813d 100755 --- a/src/inputest.c +++ b/src/inputest.c @@ -33,27 +33,22 @@ main(int argc, char *argv[]) //extern struct inconfig inpu; dbg_testkeyin=0; dbg_testcontrolnoisy=1; - dbg_noplayerinpu=0; - if(!dbg_noplayerinpu) - { - start_timer(&gvar); - //Startup16(&gvar); - IN_Startup(); - //IN_Default(0,&player,ctrl_Joystick1); - //IN_SetControlType(0,&player,ctrl_Joystick1); - IN_Default(0,&player,ctrl_Keyboard1); - IN_SetControlType(0,&player,ctrl_Keyboard1); - } + start_timer(&gvar); + //Startup16(&gvar); + IN_Startup(); + //IN_Default(0,&player,ctrl_Joystick1); + //IN_SetControlType(0,&player,ctrl_Joystick1); + IN_Default(0,&player,ctrl_Keyboard1); + IN_SetControlType(0,&player,ctrl_Keyboard1); + player[0].q=1; player[0].d=2; player[0].persist_aniframe=0; player[0].speed=4; nibbletest(); - if(dbg_noplayerinpu) getch(); booleantest(); //printf("nibble size is %u\n", sizeof(nibble)); - if(!dbg_noplayerinpu){ //printf("dbg_testkeyin=%u dbg_testcontrolnoisy=%u dbg_noplayerinpu=%u\nloop if this is not responsive then please KILL or reset machine sorry!!\n", dbg_testkeyin, dbg_testcontrolnoisy, dbg_noplayerinpu); while(!IN_KeyDown(sc_Escape)) { @@ -117,11 +112,9 @@ main(int argc, char *argv[]) } IN_Shutdown(); //Shutdown16(&gvar); - } //printf("%u\n", in.Keyboard[sc_Escape]); printf("inputest.exe "); printf("version %s\n", VERSION); printf("testkeyin=%u\n", dbg_testkeyin); printf("testcontrolnoisy=%u\n", dbg_testcontrolnoisy); - printf("dbg_noplayerinpu=%u\n", dbg_noplayerinpu); } diff --git a/src/lib/16_dbg.c b/src/lib/16_dbg.c index 9594b6cf..c3a4d5bb 100755 --- a/src/lib/16_dbg.c +++ b/src/lib/16_dbg.c @@ -7,7 +7,7 @@ boolean dbg_debugpm=0; #endif #ifdef __DEBUG_InputMgr__ -boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0,dbg_noplayerinpu=0; +boolean dbg_testkeyin=0,dbg_testcontrolnoisy=0; #endif boolean dbg_nommpmca=0; #endif diff --git a/src/lib/16_dbg.h b/src/lib/16_dbg.h index 381ed567..eb1743eb 100755 --- a/src/lib/16_dbg.h +++ b/src/lib/16_dbg.h @@ -16,7 +16,7 @@ extern boolean dbg_debugpm; #endif #ifdef __DEBUG_InputMgr__ -extern boolean dbg_testkeyin,dbg_testcontrolnoisy,dbg_noplayerinpu; +extern boolean dbg_testkeyin,dbg_testcontrolnoisy; #endif extern boolean dbg_nommpmca; #endif diff --git a/src/lib/scroll16.c b/src/lib/16_scr.c similarity index 97% rename from src/lib/scroll16.c rename to src/lib/16_scr.c index d6b1a06a..61e997af 100755 --- a/src/lib/scroll16.c +++ b/src/lib/16_scr.c @@ -22,7 +22,7 @@ /* scroll16 library~ */ -#include "src/lib/scroll16.h" +#include "src/lib/16_scr.h" void walk(map_view_t *pip, player_t *player, word pn) { diff --git a/src/lib/scroll16.h b/src/lib/16_scr.h similarity index 97% rename from src/lib/scroll16.h rename to src/lib/16_scr.h index 4f1b539f..2b66f85b 100755 --- a/src/lib/scroll16.h +++ b/src/lib/16_scr.h @@ -24,6 +24,7 @@ #define __SCROLL16_H_ #include "src/lib/16_head.h" +#include "src/lib/16_tail.h" #include "src/lib/bakapee.h" #include "src/lib/16_vl.h" #include "src/lib/16_in.h" @@ -33,7 +34,6 @@ //#include "src/lib/16_map.h" //new map stuff #include "src/lib/16_timer.h" #include "src/lib/wcpu/wcpu.h" -#include "src/lib/16_tail.h" #include #include diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 02216ce6..bd5b6f1e 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -75,7 +75,6 @@ void Startup16(global_game_variables_t *gvar) if(!dbg_nommpmca) #endif MM_Startup(gvar); -if(!dbg_noplayerinpu) IN_Startup(gvar); #ifdef __DEBUG__ if(!dbg_nommpmca){ @@ -106,7 +105,6 @@ void Shutdown16(global_game_variables_t *gvar) if(!dbg_nommpmca) #endif PM_Shutdown(gvar); -if(!dbg_noplayerinpu) IN_Shutdown(gvar); #ifdef __DEBUG__ if(!dbg_nommpmca){ diff --git a/src/scroll.c b/src/scroll.c index 14761936..70c3f40b 100755 --- a/src/scroll.c +++ b/src/scroll.c @@ -20,7 +20,7 @@ * */ -#include "src/lib/scroll16.h" +#include "src/lib/16_scr.h" #include "src/lib/16_timer.h" #include "src/lib/wcpu/wcpu.h" #include "src/lib/mapread.h" @@ -93,7 +93,6 @@ void main(int argc, char *argv[]) #endif /* input! */ - if(!dbg_noplayerinpu) IN_Default(0,&player,ctrl_Keyboard1); /* save the palette */ @@ -186,7 +185,6 @@ void main(int argc, char *argv[]) modexFadeOn(4, gpal); #endif #endif - if(!dbg_noplayerinpu) while(!IN_KeyDown(sc_Escape) && player[0].hp>0) { shinku(&gvar); @@ -281,11 +279,6 @@ void main(int argc, char *argv[]) //if(IN_KeyDown(11)){ modexPalOverscan(15); } if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync! } - else - while(!kbhit()) - { - shinku(&gvar); - } /* fade back to text mode */ /* but 1st lets save the game palette~ */ diff --git a/src/test.c b/src/test.c index dfbc7de8..a2268d37 100755 --- a/src/test.c +++ b/src/test.c @@ -23,7 +23,7 @@ #include #include "src/lib/16_vl.h" #include "src/lib/16_in.h" -#include "src/lib/scroll16.h" +#include "src/lib/16_scr.h" #include "src/lib/bakapee.h" static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */ diff --git a/src/zcroll.c b/src/zcroll.c index f9ef8382..0ec3b847 100755 --- a/src/zcroll.c +++ b/src/zcroll.c @@ -20,7 +20,7 @@ * */ -#include "src/lib/scroll16.h" +#include "src/lib/16_scr.h" #include "src/lib/16_timer.h" #include "src/lib/wcpu/wcpu.h" #include "src/lib/16render.h" -- 2.39.5