From ed64d7e3b8257aed46923d996955bd04ed625b39 Mon Sep 17 00:00:00 2001 From: "Terry A. Davis" Date: Mon, 28 Sep 2015 06:19:00 +0200 Subject: [PATCH] TempleOSCDV3.11.ISO --- 0000Boot/0000Kernel.BIN.C | Bin 185072 -> 184944 bytes Adam.CPP | 106 - Adam/{Dsk => ABlkDev}/ADskA.CPP | 4 +- Adam/{Dsk => ABlkDev}/ADskB.CPP | 6 +- Adam/{Dsk => ABlkDev}/ChkDsk.CPP | 6 +- Adam/{Dsk => ABlkDev}/FileMgr.CPP | 13 +- .../{Dsk/ADsk.CPP => ABlkDev/MakeABlkDev.CPP} | 2 + Adam/ADbg.CPP | 24 +- Adam/ADefine.CPP | 6 +- Adam/{AExts.HPP => AExts.CPP} | 7 +- Adam/AHash.CPP | 8 +- Adam/AInputPointer.CPP | Bin 0 -> 987 bytes Adam/{AUtils.CPP => AMem.CPP} | 35 - Adam/AutoComplete/{ACDict.CPP => ACFill.CPP} | 78 +- Adam/AutoComplete/ACInit.CPP | 168 + Adam/AutoComplete/ACMain.CPP | 347 -- Adam/AutoComplete/ACTask.CPP | 282 ++ Adam/AutoComplete/AutoComplete.CPP | 67 - Adam/AutoComplete/MakeAC.CPP | 6 + Adam/Boot/BootCD.CPP | 164 - Adam/Ctrls/CtrlsA.CPP | 19 +- Adam/Ctrls/CtrlsButton.CPP | 7 +- Adam/Ctrls/CtrlsSlider.CPP | 5 - Adam/Ctrls/{Ctrls.CPP => MakeCtrls.CPP} | 4 +- Adam/DolDoc/Doc.CPP | 103 - Adam/DolDoc/DocBin.CPP | 142 + Adam/DolDoc/{DocEdA.CPP => DocChar.CPP} | 124 +- Adam/DolDoc/DocClipBoard.CPP | 123 + Adam/DolDoc/DocDblBuf.CPP | 108 + Adam/DolDoc/DocEd.CPP | 249 + Adam/DolDoc/DocEdB.CPP | 980 ---- Adam/DolDoc/DocExt.CPP | 13 + Adam/DolDoc/DocFile.CPP | 125 +- Adam/DolDoc/DocFind.CPP | 30 +- Adam/DolDoc/DocForm.CPP | 284 ++ Adam/DolDoc/DocGet.CPP | 224 + Adam/DolDoc/DocGr.CPP | 161 + Adam/DolDoc/DocHighlight.CPP | 2 +- Adam/DolDoc/DocLink.CPP | 344 ++ Adam/DolDoc/DocMacro.CPP | 7 - Adam/DolDoc/DocMain.CPP | 602 --- Adam/DolDoc/DocNew.CPP | 499 +- Adam/DolDoc/DocOpt.CPP | 24 +- Adam/DolDoc/DocPlain.CPP | 359 +- Adam/DolDoc/DocPopUp.CPP | 612 +-- Adam/DolDoc/DocPutKey.CPP | 729 +++ Adam/DolDoc/DocPutS.CPP | 358 ++ Adam/DolDoc/{DocRecalcB.CPP => DocRecalc.CPP} | 2 +- .../{DocRecalcA.CPP => DocRecalcLib.CPP} | 89 +- Adam/DolDoc/DocRun.CPP | 103 + Adam/DolDoc/DocTerm.CPP | 192 + .../DolDoc/{DocCtrlL.CPP => DocWidgetWiz.CPP} | 91 +- Adam/DolDoc/MakeDoc.CPP | 69 + Adam/God/GodBible.CPP | 15 + Adam/God/GodDoodle.CPP | 4 +- Adam/God/GodExt.CPP | 4 +- Adam/God/HSNotes.TXT | 1 + Adam/God/{God.CPP => MakeGod.CPP} | 3 + Adam/Gr/{Gr.CPP => Gr.HPP} | 53 - Adam/Gr/GrBitMap.CPP | 2 +- Adam/Gr/GrComposites.CPP | 4 +- Adam/Gr/GrDC.CPP | 28 +- Adam/Gr/GrEnd.CPP | 5 +- Adam/Gr/GrExt.CPP | 5 + Adam/Gr/GrGlbls.CPP | 4 +- Adam/Gr/GrInitA.CPP | 21 + Adam/Gr/{GrInit.CPP => GrInitB.CPP} | 3 +- Adam/Gr/GrMath.CPP | 20 +- Adam/Gr/GrScreen.CPP | 4 - Adam/Gr/MakeGr.CPP | 31 + Adam/Gr/SpriteEd.CPP | 14 +- Adam/Gr/SpriteMesh.CPP | 1 - Adam/MakeAdam.CPP | 29 + Adam/Opt/Boot/BootDVD.CPP | 164 + Adam/{ => Opt}/Boot/BootHD.CPP | 0 Adam/{ => Opt}/Boot/BootIns.CPP | 21 +- Adam/{ => Opt}/Boot/BootMHD.CPP | 2 +- Adam/{ => Opt}/Boot/BootMHD2.CPP | 2 +- Adam/{ => Opt}/Boot/DskISOFile.CPP | 128 +- Adam/Opt/Boot/MakeBoot.CPP | 9 + Adam/{Boot/Boot.CPP => Opt/Boot/Reboot.CPP} | 7 - Adam/{ => Opt}/Utils/Diff.CPP | 0 Adam/{ => Opt}/Utils/FileBMP.CPP | 0 Adam/{ => Opt}/Utils/Find.CPP | 0 Adam/{ => Opt}/Utils/HeapLog.CPP | 0 Adam/{ => Opt}/Utils/LineRep.CPP | 0 Adam/{ => Opt}/Utils/LinkChk.CPP | 0 Adam/Opt/Utils/MakeUtils.CPP | 15 + Adam/{ => Opt}/Utils/MemRep.CPP | 16 +- Adam/{ => Opt}/Utils/Merge.CPP | 0 Adam/{ => Opt}/Utils/Profiler.CPP | 2 +- Adam/{ => Opt}/Utils/StrUtils.CPP | 0 {Misc => Adam/Opt/Utils}/ToDolDoc.CPP | 4 +- Adam/{ => Opt}/Utils/ToHtml.CPP | 0 Adam/{ => Opt}/Utils/ToTXT.CPP | 0 Adam/Snd/{Snd.CPP => MakeSnd.CPP} | 4 +- Adam/Snd/SndMusic.CPP | 4 +- Adam/TaskRep.CPP | 34 + Adam/TaskSettings.CPP | 11 +- Adam/Training.CPP | 279 +- Adam/WallPaper.CPP | Bin 6040 -> 4965 bytes Adam/WinA.CPP | 9 +- Adam/WinB.CPP | 86 +- AdamKeyPlugIns.CPP | 173 - AdamPkgs.CPP | 25 - Apps/AfterEgypt/AfterEgypt.CPP | 7 +- Apps/AfterEgypt/Comics/Moses10.TXT | Bin 454 -> 0 bytes Apps/AfterEgypt/Comics/Moses12.TXT | Bin 404 -> 0 bytes Apps/AfterEgypt/Comics/Moses13.TXT | Bin 391 -> 0 bytes Apps/AfterEgypt/Comics/Moses14.TXT | Bin 642 -> 0 bytes Apps/AfterEgypt/Comics/Moses15.TXT | Bin 679 -> 0 bytes Apps/AfterEgypt/Comics/Moses16.TXT | Bin 1283 -> 0 bytes Apps/AfterEgypt/Comics/Moses17.TXT | Bin 546 -> 0 bytes Apps/AfterEgypt/Comics/Moses18.TXT | Bin 592 -> 0 bytes Apps/AfterEgypt/Comics/Moses19.TXT | Bin 522 -> 0 bytes Apps/AfterEgypt/Comics/Moses20.TXT | Bin 1074 -> 0 bytes Apps/AfterEgypt/Comics/Moses21.TXT | Bin 386 -> 0 bytes Apps/AfterEgypt/Comics/Moses22.TXT | Bin 1045 -> 0 bytes Apps/AfterEgypt/Comics/Moses23.TXT | Bin 486 -> 0 bytes Apps/AfterEgypt/Comics/Moses24.TXT | Bin 542 -> 0 bytes Apps/AfterEgypt/Comics/Moses25.TXT | Bin 586 -> 0 bytes Apps/AfterEgypt/Comics/Moses26.TXT | Bin 467 -> 0 bytes Apps/AfterEgypt/Comics/Moses27.TXT | Bin 620 -> 0 bytes Apps/AfterEgypt/Comics/Moses28.TXT | Bin 1182 -> 0 bytes Apps/AfterEgypt/Comics/Moses29.TXT | Bin 559 -> 0 bytes Apps/AfterEgypt/Comics/Moses30.TXT | Bin 621 -> 0 bytes Apps/AfterEgypt/Comics/Moses31.TXT | Bin 449 -> 0 bytes Apps/AfterEgypt/Comics/Moses32.TXT | Bin 434 -> 0 bytes Apps/AfterEgypt/Comics/Moses34.TXT | Bin 492 -> 0 bytes Apps/AfterEgypt/Comics/Moses35.TXT | Bin 448 -> 0 bytes Apps/AfterEgypt/Comics/Moses36.TXT | Bin 425 -> 0 bytes Apps/AfterEgypt/Comics/Moses37.TXT | Bin 490 -> 0 bytes Apps/AfterEgypt/Comics/Moses38.TXT | Bin 452 -> 0 bytes Apps/AfterEgypt/Comics/Moses39.TXT | Bin 992 -> 0 bytes Apps/AfterEgypt/Comics/Moses40.TXT | Bin 411 -> 0 bytes Apps/AfterEgypt/Comics/Moses42.TXT | Bin 432 -> 0 bytes Apps/AfterEgypt/Comics/Moses43.TXT | Bin 450 -> 0 bytes Apps/AfterEgypt/Comics/Moses44.TXT | Bin 450 -> 0 bytes Apps/AfterEgypt/Comics/Moses45.TXT | Bin 439 -> 0 bytes Apps/AfterEgypt/Comics/Moses46.TXT | Bin 1278 -> 0 bytes Apps/AfterEgypt/Comics/Moses47.TXT | Bin 399 -> 0 bytes Apps/AfterEgypt/Comics/Moses48.TXT | Bin 402 -> 0 bytes Apps/AfterEgypt/Comics/Moses49.TXT | Bin 761 -> 0 bytes Apps/AfterEgypt/Comics/Moses50.TXT | Bin 413 -> 0 bytes Apps/AfterEgypt/Comics/Moses52.TXT | Bin 476 -> 0 bytes Apps/AfterEgypt/Comics/Moses53.TXT | Bin 458 -> 0 bytes Apps/AfterEgypt/Comics/Moses54.TXT | Bin 773 -> 0 bytes Apps/AfterEgypt/Comics/Moses55.TXT | Bin 405 -> 0 bytes Apps/AfterEgypt/Comics/Moses56.TXT | Bin 830 -> 0 bytes Apps/AfterEgypt/Comics/Moses57.TXT | Bin 1281 -> 0 bytes Apps/AfterEgypt/Comics/Moses58.TXT | Bin 842 -> 0 bytes Apps/AfterEgypt/Comics/Moses59.TXT | Bin 499 -> 0 bytes Apps/AfterEgypt/Comics/Moses60.TXT | Bin 511 -> 0 bytes Apps/AfterEgypt/Comics/Moses61.TXT | Bin 427 -> 0 bytes Apps/AfterEgypt/Comics/Moses62.TXT | Bin 556 -> 0 bytes Apps/AfterEgypt/Comics/Moses63.TXT | Bin 730 -> 0 bytes Apps/AfterEgypt/Comics/Moses64.TXT | Bin 876 -> 0 bytes Apps/AfterEgypt/Comics/Moses66.TXT | Bin 462 -> 0 bytes Apps/AfterEgypt/Comics/Moses68.TXT | Bin 427 -> 0 bytes Apps/AfterEgypt/Comics/Moses71.TXT | Bin 709 -> 0 bytes Apps/AfterEgypt/Comics/Moses72.TXT | Bin 409 -> 0 bytes Apps/AfterEgypt/Comics/Moses73.TXT | Bin 470 -> 0 bytes Apps/AfterEgypt/Comics/Moses74.TXT | Bin 386 -> 0 bytes Apps/AfterEgypt/Comics/Moses75.TXT | Bin 379 -> 0 bytes Apps/AfterEgypt/Comics/Moses76.TXT | Bin 395 -> 0 bytes Apps/AfterEgypt/Comics/Moses77.TXT | Bin 411 -> 0 bytes Apps/AfterEgypt/Comics/Moses78.TXT | Bin 430 -> 0 bytes Apps/AfterEgypt/Comics/Moses79.TXT | Bin 710 -> 0 bytes Apps/AfterEgypt/Comics/Moses80.TXT | Bin 417 -> 0 bytes Apps/AfterEgypt/Comics/Moses81.TXT | Bin 446 -> 0 bytes Apps/AfterEgypt/Comics/Moses82.TXT | Bin 848 -> 0 bytes Apps/AfterEgypt/Comics/Moses83.TXT | Bin 429 -> 0 bytes Apps/AfterEgypt/Comics/Moses84.TXT | Bin 414 -> 0 bytes Apps/AfterEgypt/Comics/Moses85.TXT | Bin 415 -> 0 bytes Apps/AfterEgypt/Comics/Moses86.TXT | Bin 420 -> 0 bytes Apps/AfterEgypt/Comics/Moses87.TXT | Bin 477 -> 0 bytes Apps/AfterEgypt/HorebC.CPP | 6 +- Apps/Budget/BgtMain.CPP | 4 +- Apps/KeepAway/KeepAway.CPP | 9 +- Apps/Logic/Logic.CPP | 2 +- Apps/Psalmody/Examples/abiding.CPP | 74 - Apps/Psalmody/Examples/abyss.CPP | 76 - Apps/Psalmody/Examples/advantage.CPP | 20 - Apps/Psalmody/Examples/almighty.CPP | 23 - Apps/Psalmody/Examples/alone.CPP | 28 - Apps/Psalmody/Examples/appreciate.CPP | 27 - Apps/Psalmody/Examples/awake.CPP | 74 - Apps/Psalmody/Examples/battlehymnsolo.CPP | 49 - Apps/Psalmody/Examples/bedewed.CPP | Bin 2062 -> 0 bytes Apps/Psalmody/Examples/blinded.CPP | 45 - Apps/Psalmody/Examples/born.CPP | 57 - Apps/Psalmody/Examples/childish.CPP | 2 +- Apps/Psalmody/Examples/compassions.CPP | 28 - Apps/Psalmody/Examples/completed.CPP | Bin 966 -> 0 bytes Apps/Psalmody/Examples/cosam.CPP | 30 - Apps/Psalmody/Examples/depending.CPP | 30 - Apps/Psalmody/Examples/despairing.CPP | 24 - Apps/Psalmody/Examples/determination.CPP | 23 - Apps/Psalmody/Examples/dialogue.CPP | Bin 3441 -> 0 bytes Apps/Psalmody/Examples/disputing.CPP | 28 - Apps/Psalmody/Examples/doing.CPP | Bin 2662 -> 0 bytes Apps/Psalmody/Examples/downfall.CPP | 22 - Apps/Psalmody/Examples/dream.CPP | 65 - Apps/Psalmody/Examples/efforts.CPP | 23 - Apps/Psalmody/Examples/elijah.CPP | Bin 17625 -> 0 bytes Apps/Psalmody/Examples/environeth.CPP | 23 - Apps/Psalmody/Examples/epicurus.CPP | 48 - Apps/Psalmody/Examples/exalt.CPP | 43 - Apps/Psalmody/Examples/exiled.CPP | 64 - Apps/Psalmody/Examples/exodus.CPP | 20 - Apps/Psalmody/Examples/expedition.CPP | Bin 1604 -> 0 bytes Apps/Psalmody/Examples/fairness.CPP | 38 - Apps/Psalmody/Examples/feigned.CPP | 29 - Apps/Psalmody/Examples/finger.CPP | Bin 4039 -> 0 bytes Apps/Psalmody/Examples/first.CPP | Bin 2021 -> 0 bytes Apps/Psalmody/Examples/fishermen.CPP | Bin 2471 -> 0 bytes Apps/Psalmody/Examples/fixing.CPP | 20 - Apps/Psalmody/Examples/flung.CPP | 24 - Apps/Psalmody/Examples/fog.CPP | Bin 1663 -> 0 bytes Apps/Psalmody/Examples/forasmuch.CPP | Bin 2308 -> 0 bytes Apps/Psalmody/Examples/freaks.CPP | 28 - Apps/Psalmody/Examples/free.CPP | 168 - Apps/Psalmody/Examples/furnishing.CPP | Bin 5309 -> 0 bytes Apps/Psalmody/Examples/good.CPP | Bin 1189 -> 0 bytes Apps/Psalmody/Examples/gutenberg.CPP | Bin 2045 -> 0 bytes Apps/Psalmody/Examples/happy.CPP | Bin 1692 -> 0 bytes Apps/Psalmody/Examples/hearsay.CPP | 26 - Apps/Psalmody/Examples/honestly.CPP | 20 - Apps/Psalmody/Examples/hope.CPP | Bin 1746 -> 0 bytes Apps/Psalmody/Examples/image.CPP | 104 - Apps/Psalmody/Examples/josh.CPP | Bin 2544 -> 0 bytes Apps/Psalmody/Examples/keeping.CPP | Bin 2560 -> 0 bytes Apps/Psalmody/Examples/kept.CPP | 31 - Apps/Psalmody/Examples/killed.CPP | 87 - Apps/Psalmody/Examples/limit.CPP | Bin 1547 -> 0 bytes Apps/Psalmody/Examples/mary.CPP | 59 - Apps/Psalmody/Examples/mightest.CPP | 52 - Apps/Psalmody/Examples/mildly.CPP | Bin 1996 -> 0 bytes Apps/Psalmody/Examples/nay.CPP | 28 - Apps/Psalmody/Examples/o.CPP | 20 - Apps/Psalmody/Examples/partake.CPP | Bin 2366 -> 0 bytes Apps/Psalmody/Examples/permitted.CPP | 21 - Apps/Psalmody/Examples/personal.CPP | 27 - Apps/Psalmody/Examples/population.CPP | 20 - Apps/Psalmody/Examples/project.CPP | 28 - Apps/Psalmody/Examples/proponent.CPP | 55 - Apps/Psalmody/Examples/psalm.CPP | 26 - Apps/Psalmody/Examples/purpose.CPP | Bin 4695 -> 0 bytes Apps/Psalmody/Examples/readier.CPP | 23 - Apps/Psalmody/Examples/reasoning.CPP | 27 - Apps/Psalmody/Examples/reliance.CPP | 42 - Apps/Psalmody/Examples/reposes.CPP | 28 - Apps/Psalmody/Examples/restless.CPP | 30 - Apps/Psalmody/Examples/risen.CPP | 91 - Apps/Psalmody/Examples/sang.CPP | 20 - Apps/Psalmody/Examples/satisfaction.CPP | Bin 2616 -> 0 bytes Apps/Psalmody/Examples/savour.CPP | 31 - Apps/Psalmody/Examples/science.CPP | 94 - Apps/Psalmody/Examples/scriptures.CPP | Bin 1160 -> 0 bytes Apps/Psalmody/Examples/service.CPP | 32 - Apps/Psalmody/Examples/shield.CPP | Bin 2869 -> 0 bytes Apps/Psalmody/Examples/signifies.CPP | 32 - Apps/Psalmody/Examples/silver.CPP | 26 - Apps/Psalmody/Examples/small.CPP | Bin 10846 -> 0 bytes Apps/Psalmody/Examples/spokest.CPP | 29 - Apps/Psalmody/Examples/struggles.CPP | Bin 3120 -> 0 bytes Apps/Psalmody/Examples/sustain.CPP | Bin 2935 -> 0 bytes Apps/Psalmody/Examples/teachings.CPP | 33 - Apps/Psalmody/Examples/thereupon.CPP | 74 - Apps/Psalmody/Examples/thither.CPP | 32 - Apps/Psalmody/Examples/tookest.CPP | 31 - Apps/Psalmody/Examples/tormenting.CPP | 29 - Apps/Psalmody/Examples/twins.CPP | 27 - Apps/Psalmody/Examples/valued.CPP | Bin 1566 -> 0 bytes Apps/Psalmody/Examples/vengeance.CPP | Bin 6524 -> 0 bytes Apps/Psalmody/Examples/verses.CPP | 34 - Apps/Psalmody/Examples/villa.CPP | 22 - Apps/Psalmody/Examples/whos.CPP | 31 - Apps/Psalmody/Examples/wisdom.CPP | Bin 1720 -> 0 bytes Apps/Psalmody/Examples/witherto.CPP | 33 - Apps/Psalmody/Examples/worship.CPP | Bin 1879 -> 0 bytes Apps/Psalmody/Examples/you.CPP | 30 - Apps/Psalmody/Examples/zip.CPP | Bin 2552 -> 0 bytes Apps/Psalmody/Help.TXT | 14 +- Apps/Psalmody/JukeBox.CPP | 9 +- Apps/Psalmody/JukePuppet.CPP | 6 +- Apps/Psalmody/PsalmodyCtrls.CPP | 5 - Apps/Psalmody/PsalmodyDraw.CPP | 2 - Apps/Psalmody/PsalmodyMain.CPP | 13 +- Apps/Psalmody/Run.CPP | 1 - Apps/Span/SpanMain.CPP | 14 +- Apps/Strut/Strut.CPP | 7 +- Apps/TimeOut/TimeOut.CPP | 355 +- Apps/ToTheFront/ToTheFront.CPP | 9 +- Apps/X-Caliber/X-Caliber.CPP | 9 +- Apps/X-Caliber/XCCtrls.CPP | 5 - Compiler/AsmInit.CPP | 10 +- Compiler/BackB.CPP | 32 - Compiler/BackFA.CPP | 2 +- Compiler/BackLib.CPP | 2 +- Compiler/CExcept.CPP | 1 - Compiler/CExts.CPP | 4 - Compiler/CInit.CPP | 2 - Compiler/CMain.CPP | 8 +- Compiler/CMisc.CPP | 36 +- Compiler/Compiler.BIN | Bin 198314 -> 197888 bytes Compiler/Compiler.MAP | 572 +-- Compiler/Compiler.PRJ | 18 +- Compiler/CompilerA.HPP | 179 +- Compiler/CompilerB.HPP | 14 +- Compiler/Lex.CPP | 86 +- Compiler/LexLib.CPP | 63 +- Compiler/OpCodes.TXT | 140 +- Compiler/OptPass012.CPP | 1 - Compiler/OptPass3.CPP | 9 +- Compiler/OptPass4.CPP | 1 - Compiler/OptPass5.CPP | 4 +- Compiler/OptPass6.CPP | 6 +- Compiler/OptPass789A.CPP | 13 +- Compiler/PrsExp.CPP | 6 +- Compiler/PrsLib.CPP | 21 +- Compiler/PrsStmt.CPP | 16 +- Compiler/PrsVar.CPP | 55 +- Compiler/UAsm.CPP | 161 +- Demo/AcctExample/AdamKeyPlugIns.CPP | 271 -- Demo/AcctExample/DoOnce.CPP | 2 +- Demo/AcctExample/HomeKeyPlugIns.CPP | 285 ++ .../{AdamLocalize.CPP => HomeLocalize.CPP} | 4 +- .../{AdamPkgs.CPP => HomePkgs.CPP} | 3 +- Demo/AcctExample/{AdamSys.CPP => HomeSys.CPP} | 2 - Demo/AcctExample/PersonalMenu.TXT | Bin 68767 -> 66769 bytes Demo/AcctExample/PersonalNotes.TXT | 107 +- Demo/AcctExample/Registry.CPP | 34 +- Demo/AcctExample/TOSCfg.CPP | 24 +- Demo/AcctExample/TOSDistro.CPP | 44 +- Demo/AcctExample/TOSHolySpirit.CPP | 158 +- Demo/AcctExample/TOSMisc.CPP | 88 +- Demo/AutoFile/AFEd.TXT | 1 - Demo/ClassMeta.CPP | 2 +- Demo/DolDoc/TreeDemo.CPP | 14 - Demo/DolDoc/UnusedDefine.CPP | 3 - Demo/Dsk/BlkDevRep.CPP | 7 +- Demo/Games/BattleLines.CPP | Bin 8305 -> 8481 bytes Demo/Games/BigGuns.CPP | Bin 6451 -> 6333 bytes Demo/Games/BlackDiamond.CPP | Bin 26397 -> 62132 bytes Demo/Games/BomberGolf.CPP | Bin 12547 -> 18701 bytes Demo/Games/BugBird.CPP | Bin 6275 -> 0 bytes Demo/Games/CastleFrankenstein.CPP | 7 +- Demo/Games/CircleTrace.CPP | 8 +- Demo/Games/Coach.CPP | Bin 4929 -> 4918 bytes Demo/Games/DunGen.CPP | 8 +- Demo/Games/EagleDive.CPP | 34 +- Demo/Games/ElephantWalk.CPP | Bin 53847 -> 53847 bytes Demo/Games/FlapBat.CPP | Bin 0 -> 7679 bytes Demo/Games/FlatTops.CPP | 11 +- Demo/Games/Halogen.CPP | 6 +- Demo/Games/MassSpring.CPP | 21 +- Demo/Games/Maze.CPP | 4 +- Demo/Games/RainDrops.CPP | 9 +- Demo/Games/RawHide.CPP | 79 +- Demo/Games/Rocket.CPP | Bin 4578 -> 4534 bytes Demo/Games/RocketScience.CPP | Bin 12776 -> 12732 bytes Demo/Games/Squirt.CPP | Bin 9232 -> 9181 bytes Demo/Games/Stadium/Stadium.CPP | Bin 3789 -> 3788 bytes Demo/Games/Stadium/StadiumGen.CPP | 6 +- Demo/Games/TheDead.CPP | Bin 6935 -> 6935 bytes Demo/Games/TreeCheckers.CPP | 16 +- Demo/Games/Varoom.CPP | 449 +- Demo/Games/Wenceslas.CPP | 14 +- Demo/Games/Whap.CPP | 4 +- Demo/Games/Zing.CPP | Bin 4710 -> 4686 bytes Demo/Games/ZoneOut.CPP | Bin 111839 -> 111745 bytes Demo/GlblVars.CPP | 4 +- Demo/Graphics/Bounce.CPP | 31 +- Demo/Graphics/Box.CPP | 1 - Demo/Graphics/Camp.CPP | Bin 23218 -> 23199 bytes Demo/Graphics/Doodle.CPP | 6 +- Demo/Graphics/Elephant.CPP | Bin 5134 -> 5134 bytes Demo/Graphics/FontEd.CPP | 2 +- Demo/Graphics/Grid.CPP | 4 +- Demo/Graphics/Lattice.CPP | 5 +- Demo/Graphics/Life.CPP | 5 +- Demo/Graphics/LowPassFilter.CPP | 1 + Demo/Graphics/Mountain.CPP | Bin 83547 -> 83547 bytes Demo/Graphics/Pick.CPP | Bin 2644 -> 2633 bytes Demo/Graphics/Pick3D.CPP | Bin 6655 -> 6644 bytes Demo/Graphics/PoleZeros.CPP | 5 +- Demo/Graphics/PredatorPrey.CPP | 8 +- Demo/Graphics/RotateTank.CPP | Bin 2847 -> 2847 bytes Demo/Graphics/ScrollBars.CPP | Bin 4504 -> 4504 bytes Demo/Graphics/Shading.CPP | 6 +- Demo/Graphics/Shadow.CPP | Bin 2318 -> 2307 bytes Demo/Graphics/Slider.CPP | 5 - Demo/Graphics/Speedline.CPP | 6 +- Demo/Graphics/SpritePlot3D.CPP | Bin 1018 -> 952 bytes Demo/Graphics/SpritePut.CPP | Bin 24965 -> 24902 bytes Demo/Graphics/SunMoon.CPP | 4 +- Demo/Graphics/Symmetry.CPP | 7 +- Demo/Graphics/Transform.CPP | Bin 9027 -> 8908 bytes Demo/Graphics/WallPaperCtrl.CPP | 5 - Demo/Lectures/AndNotMod.CPP | 3 - Demo/Lectures/FixedPointAdvanced.CPP | 2 - Demo/Lectures/GraphicsCPULoad.CPP | 2 - Demo/Lectures/InterruptDemo.CPP | 2 - Demo/Lectures/MiniCompiler.CPP | 4 +- Demo/Lectures/MiniGrLib.CPP | 3 - Demo/Lectures/PCIInterrupts.CPP | 10 +- Demo/Lectures/PageTableEntries2.CPP | 4 +- Demo/Lectures/Ring3.CPP | 4 +- Demo/Lectures/ScreenMemory.CPP | 4 - Demo/Lectures/Spinning.CPP | 107 - Demo/Lectures/Uncached.CPP | 4 - Demo/MultiCore/Clouds.CPP | 9 +- Demo/MultiCore/Interrupts.CPP | 8 +- Demo/MultiCore/LoadTest.CPP | 3 - Demo/ParenWarn.CPP | 4 +- Demo/RandDemo.CPP | 2 +- Demo/ReverseFileExample/Reverse.CPP | 1 - Demo/Snd/MorseCode.CPP | 5 - Demo/Snd/WaterFowl.CPP | Bin 308892 -> 308892 bytes Demo/SortFileExample/SortedF64.DAT | 2 +- Demo/SortFileExample/SortedF64.TXT | 20 +- Demo/SortFileExample/UnsortedF64.DAT | 2 +- Demo/SortFileExample/UnsortedF64.TXT | 20 +- Demo/Spy.CPP | 4 - Demo/SuggestSpelling.CPP | 34 +- Demo/TimeIns.CPP | 6 +- Demo/WebLogExample/access_150211.LOG | 30 +- Demo/WebLogExample/access_150212.LOG | 28 +- Demo/WebLogExample/access_150213.LOG | 6 +- DoOnce.CPP | 4 +- Doc/AutoComplete.TXT | 2 +- Doc/Boot.TXT | Bin 4321 -> 4353 bytes Doc/ChangeLog.TXT | 163 +- Doc/Charter.TXT | 2 +- Doc/CompilerOverview.TXT | 21 +- Doc/Confuse.TXT | 8 +- Doc/Credits.TXT | 2 +- Doc/Customize.TXT | 4 +- Doc/CutCorners.TXT | 2 +- Doc/DbgOverview.TXT | 6 +- Doc/Demands.TXT | 103 +- Doc/DemoIndex.TXT | 10 +- Doc/DolDocOverview.TXT | 8 +- Doc/EdPullDown.TXT | 4 +- Doc/Features.TXT | 4 +- Doc/FileLowLevel.TXT | Bin 0 -> 544 bytes Doc/FileMgr.TXT | 6 +- Doc/Glossary.TXT | 10 +- Doc/GraphicsOverview.TXT | Bin 6799 -> 6814 bytes Doc/Grub.TXT | 2 +- Doc/GuideLines.TXT | 12 +- Doc/Hash.TXT | Bin 550 -> 2084 bytes Doc/HelpIndex.TXT | Bin 7353 -> 7268 bytes Doc/HolyC.TXT | 4 +- Doc/Install.TXT | 8 +- Doc/KeyAlloc.TXT | 4 +- Doc/MemOverview.TXT | 13 +- Doc/MultiTasking.TXT | 26 - Doc/Mysteries.TXT | 6 +- Doc/Options.TXT | 17 - Doc/Que.TXT | 2 - Doc/Quirks.TXT | 2 +- Doc/RedSea.TXT | 4 +- Doc/Resource.TXT | 2 +- Doc/Tips.TXT | 28 +- Doc/Welcome.TXT | 32 +- HomeKeyPlugIns.CPP | 190 + AdamLocalize.CPP => HomeLocalize.CPP | 0 HomePkgs.CPP | 12 + AdamSys.CPP => HomeSys.CPP | 2 - AdamWrappers.CPP => HomeWrappers.CPP | 0 Kernel/{Dsk => BlkDev}/DskATA.CPP | 22 +- Kernel/{Dsk => BlkDev}/DskATAId.CPP | 46 +- Kernel/{Dsk => BlkDev}/DskAddDev.CPP | 24 +- Kernel/{Dsk => BlkDev}/DskBlk.CPP | 0 Kernel/{Dsk => BlkDev}/DskBlkDev.CPP | 14 +- Kernel/{Dsk => BlkDev}/DskCDDVD.CPP | 33 +- Kernel/{Dsk => BlkDev}/DskCFile.CPP | 0 Kernel/{Dsk => BlkDev}/DskCache.CPP | 48 +- Kernel/{Dsk => BlkDev}/DskCluster.CPP | 4 +- Kernel/{Dsk => BlkDev}/DskCopy.CPP | 0 Kernel/{Dsk => BlkDev}/DskDirA.CPP | 0 Kernel/{Dsk => BlkDev}/DskDirB.CPP | 0 Kernel/{Dsk => BlkDev}/DskDirContext.CPP | 0 Kernel/{Dsk => BlkDev}/DskDrv.CPP | 70 +- Kernel/{Dsk => BlkDev}/DskFile.CPP | 3 +- Kernel/{Dsk => BlkDev}/DskFind.CPP | 0 Kernel/{Dsk => BlkDev}/DskFmt.CPP | 2 +- Kernel/{Dsk => BlkDev}/DskStrA.CPP | 4 +- Kernel/{Dsk => BlkDev}/DskStrB.CPP | 0 Kernel/{Dsk => BlkDev}/FileSysFAT.CPP | 74 +- Kernel/{Dsk => BlkDev}/FileSysISO.CPP | 0 Kernel/{Dsk => BlkDev}/FileSysRedSea.CPP | 24 +- Kernel/{Dsk/Dsk.CPP => BlkDev/MakeBlkDev.CPP} | 2 + Kernel/Compress.CPP | 2 +- Kernel/Display.CPP | 23 +- Kernel/EdLite.CPP | 2 +- Kernel/KCfg.CPP | 12 +- Kernel/{Date.CPP => KDate.CPP} | 0 Kernel/KDbg.CPP | 49 +- Kernel/KEnd.CPP | 52 +- Kernel/KExcept.CPP | 4 +- Kernel/KExts.CPP | 2 +- Kernel/KGlbls.CPP | 15 +- Kernel/KHashA.CPP | Bin 5960 -> 4509 bytes Kernel/{Ints.CPP => KInts.CPP} | 53 +- Kernel/KMisc.CPP | 7 +- Kernel/KStart.CPP | 12 +- Kernel/{Task.CPP => KTask.CPP} | 19 +- Kernel/Kernel.MAP | 4271 +++++++++-------- Kernel/Kernel.PRJ | 33 +- Kernel/KernelA.HPP | 205 +- Kernel/KernelB.HPP | 24 +- Kernel/KernelC.HPP | 28 +- Kernel/KeyDev.CPP | 64 +- Kernel/MultiProc.CPP | 11 +- Kernel/PSect.CPP | 31 +- Kernel/QSort.CPP | 8 +- Kernel/Sched.CPP | 18 +- .../{KbdMouse => SerialDev}/InputPointer.CPP | 6 +- Kernel/{KbdMouse => SerialDev}/Keyboard.CPP | 62 +- Kernel/SerialDev/MakeSerialDev.CPP | 6 + Kernel/{KbdMouse => SerialDev}/Message.CPP | 17 +- Kernel/{KbdMouse => SerialDev}/Mouse.CPP | 7 +- Kernel/SrvCmd.CPP | 27 +- Kernel/StrB.CPP | 2 +- Kernel/StrPrint.CPP | 4 +- Linux/TOSZ.CPP | 95 +- MakeHome.CPP | 10 + Misc/{MakeDistro.CPP => DoDistro.CPP} | 11 +- Misc/OSInstall.CPP | 26 +- Misc/OSTestSuite.CPP | 11 +- Misc/Tour/Tour.AUT | 23 +- Misc/Tour/Tour1.AUT | 110 +- Misc/Tour/Tour2.AUT | 125 +- Misc/Tour/Tour3.AUT | 143 +- Misc/Tour/Tour4.AUT | 108 +- Misc/Tour/Tour5.AUT | 66 +- Misc/Tour/Tour6.AUT | 93 +- Misc/Tour/Tour7.AUT | 84 +- Misc/Tour/Tour8.AUT | 43 +- Misc/Tour/Tour9.AUT | 48 +- Misc/Tour/TourA.AUT | 47 +- Misc/Tour/TourB.AUT | 23 +- Misc/Tour/TourC.AUT | 10 + PersonalMenu.TXT | Bin 66358 -> 63790 bytes ReadMe.TXT | 6 +- StartOS.CPP | 47 + 549 files changed, 10643 insertions(+), 12855 deletions(-) delete mode 100644 Adam.CPP rename Adam/{Dsk => ABlkDev}/ADskA.CPP (99%) rename Adam/{Dsk => ABlkDev}/ADskB.CPP (99%) rename Adam/{Dsk => ABlkDev}/ChkDsk.CPP (96%) rename Adam/{Dsk => ABlkDev}/FileMgr.CPP (98%) rename Adam/{Dsk/ADsk.CPP => ABlkDev/MakeABlkDev.CPP} (73%) rename Adam/{AExts.HPP => AExts.CPP} (93%) create mode 100644 Adam/AInputPointer.CPP rename Adam/{AUtils.CPP => AMem.CPP} (81%) rename Adam/AutoComplete/{ACDict.CPP => ACFill.CPP} (81%) create mode 100644 Adam/AutoComplete/ACInit.CPP delete mode 100644 Adam/AutoComplete/ACMain.CPP create mode 100644 Adam/AutoComplete/ACTask.CPP delete mode 100644 Adam/AutoComplete/AutoComplete.CPP create mode 100644 Adam/AutoComplete/MakeAC.CPP delete mode 100644 Adam/Boot/BootCD.CPP rename Adam/Ctrls/{Ctrls.CPP => MakeCtrls.CPP} (81%) delete mode 100644 Adam/DolDoc/Doc.CPP create mode 100644 Adam/DolDoc/DocBin.CPP rename Adam/DolDoc/{DocEdA.CPP => DocChar.CPP} (85%) create mode 100644 Adam/DolDoc/DocClipBoard.CPP create mode 100644 Adam/DolDoc/DocDblBuf.CPP create mode 100644 Adam/DolDoc/DocEd.CPP delete mode 100644 Adam/DolDoc/DocEdB.CPP create mode 100644 Adam/DolDoc/DocExt.CPP create mode 100644 Adam/DolDoc/DocForm.CPP create mode 100644 Adam/DolDoc/DocGet.CPP create mode 100644 Adam/DolDoc/DocGr.CPP create mode 100644 Adam/DolDoc/DocLink.CPP delete mode 100644 Adam/DolDoc/DocMain.CPP create mode 100644 Adam/DolDoc/DocPutKey.CPP create mode 100644 Adam/DolDoc/DocPutS.CPP rename Adam/DolDoc/{DocRecalcB.CPP => DocRecalc.CPP} (99%) rename Adam/DolDoc/{DocRecalcA.CPP => DocRecalcLib.CPP} (86%) create mode 100644 Adam/DolDoc/DocRun.CPP create mode 100644 Adam/DolDoc/DocTerm.CPP rename Adam/DolDoc/{DocCtrlL.CPP => DocWidgetWiz.CPP} (94%) create mode 100644 Adam/DolDoc/MakeDoc.CPP rename Adam/God/{God.CPP => MakeGod.CPP} (82%) rename Adam/Gr/{Gr.CPP => Gr.HPP} (74%) create mode 100644 Adam/Gr/GrExt.CPP create mode 100644 Adam/Gr/GrInitA.CPP rename Adam/Gr/{GrInit.CPP => GrInitB.CPP} (98%) create mode 100644 Adam/Gr/MakeGr.CPP create mode 100644 Adam/MakeAdam.CPP create mode 100644 Adam/Opt/Boot/BootDVD.CPP rename Adam/{ => Opt}/Boot/BootHD.CPP (100%) rename Adam/{ => Opt}/Boot/BootIns.CPP (93%) rename Adam/{ => Opt}/Boot/BootMHD.CPP (96%) rename Adam/{ => Opt}/Boot/BootMHD2.CPP (96%) rename Adam/{ => Opt}/Boot/DskISOFile.CPP (80%) create mode 100644 Adam/Opt/Boot/MakeBoot.CPP rename Adam/{Boot/Boot.CPP => Opt/Boot/Reboot.CPP} (91%) rename Adam/{ => Opt}/Utils/Diff.CPP (100%) rename Adam/{ => Opt}/Utils/FileBMP.CPP (100%) rename Adam/{ => Opt}/Utils/Find.CPP (100%) rename Adam/{ => Opt}/Utils/HeapLog.CPP (100%) rename Adam/{ => Opt}/Utils/LineRep.CPP (100%) rename Adam/{ => Opt}/Utils/LinkChk.CPP (100%) create mode 100644 Adam/Opt/Utils/MakeUtils.CPP rename Adam/{ => Opt}/Utils/MemRep.CPP (94%) rename Adam/{ => Opt}/Utils/Merge.CPP (100%) rename Adam/{ => Opt}/Utils/Profiler.CPP (97%) rename Adam/{ => Opt}/Utils/StrUtils.CPP (100%) rename {Misc => Adam/Opt/Utils}/ToDolDoc.CPP (83%) rename Adam/{ => Opt}/Utils/ToHtml.CPP (100%) rename Adam/{ => Opt}/Utils/ToTXT.CPP (100%) rename Adam/Snd/{Snd.CPP => MakeSnd.CPP} (92%) create mode 100644 Adam/TaskRep.CPP delete mode 100644 AdamKeyPlugIns.CPP delete mode 100644 AdamPkgs.CPP delete mode 100644 Apps/AfterEgypt/Comics/Moses10.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses12.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses13.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses14.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses15.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses16.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses17.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses18.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses19.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses20.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses21.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses22.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses23.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses24.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses25.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses26.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses27.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses28.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses29.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses30.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses31.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses32.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses34.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses35.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses36.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses37.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses38.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses39.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses40.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses42.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses43.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses44.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses45.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses46.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses47.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses48.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses49.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses50.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses52.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses53.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses54.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses55.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses56.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses57.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses58.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses59.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses60.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses61.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses62.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses63.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses64.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses66.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses68.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses71.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses72.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses73.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses74.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses75.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses76.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses77.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses78.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses79.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses80.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses81.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses82.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses83.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses84.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses85.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses86.TXT delete mode 100644 Apps/AfterEgypt/Comics/Moses87.TXT delete mode 100644 Apps/Psalmody/Examples/abiding.CPP delete mode 100644 Apps/Psalmody/Examples/abyss.CPP delete mode 100644 Apps/Psalmody/Examples/advantage.CPP delete mode 100644 Apps/Psalmody/Examples/almighty.CPP delete mode 100644 Apps/Psalmody/Examples/alone.CPP delete mode 100644 Apps/Psalmody/Examples/appreciate.CPP delete mode 100644 Apps/Psalmody/Examples/awake.CPP delete mode 100644 Apps/Psalmody/Examples/battlehymnsolo.CPP delete mode 100644 Apps/Psalmody/Examples/bedewed.CPP delete mode 100644 Apps/Psalmody/Examples/blinded.CPP delete mode 100644 Apps/Psalmody/Examples/born.CPP delete mode 100644 Apps/Psalmody/Examples/compassions.CPP delete mode 100644 Apps/Psalmody/Examples/completed.CPP delete mode 100644 Apps/Psalmody/Examples/cosam.CPP delete mode 100644 Apps/Psalmody/Examples/depending.CPP delete mode 100644 Apps/Psalmody/Examples/despairing.CPP delete mode 100644 Apps/Psalmody/Examples/determination.CPP delete mode 100644 Apps/Psalmody/Examples/dialogue.CPP delete mode 100644 Apps/Psalmody/Examples/disputing.CPP delete mode 100644 Apps/Psalmody/Examples/doing.CPP delete mode 100644 Apps/Psalmody/Examples/downfall.CPP delete mode 100644 Apps/Psalmody/Examples/dream.CPP delete mode 100644 Apps/Psalmody/Examples/efforts.CPP delete mode 100644 Apps/Psalmody/Examples/elijah.CPP delete mode 100644 Apps/Psalmody/Examples/environeth.CPP delete mode 100644 Apps/Psalmody/Examples/epicurus.CPP delete mode 100644 Apps/Psalmody/Examples/exalt.CPP delete mode 100644 Apps/Psalmody/Examples/exiled.CPP delete mode 100644 Apps/Psalmody/Examples/exodus.CPP delete mode 100644 Apps/Psalmody/Examples/expedition.CPP delete mode 100644 Apps/Psalmody/Examples/fairness.CPP delete mode 100644 Apps/Psalmody/Examples/feigned.CPP delete mode 100644 Apps/Psalmody/Examples/finger.CPP delete mode 100644 Apps/Psalmody/Examples/first.CPP delete mode 100644 Apps/Psalmody/Examples/fishermen.CPP delete mode 100644 Apps/Psalmody/Examples/fixing.CPP delete mode 100644 Apps/Psalmody/Examples/flung.CPP delete mode 100644 Apps/Psalmody/Examples/fog.CPP delete mode 100644 Apps/Psalmody/Examples/forasmuch.CPP delete mode 100644 Apps/Psalmody/Examples/freaks.CPP delete mode 100644 Apps/Psalmody/Examples/free.CPP delete mode 100644 Apps/Psalmody/Examples/furnishing.CPP delete mode 100644 Apps/Psalmody/Examples/good.CPP delete mode 100644 Apps/Psalmody/Examples/gutenberg.CPP delete mode 100644 Apps/Psalmody/Examples/happy.CPP delete mode 100644 Apps/Psalmody/Examples/hearsay.CPP delete mode 100644 Apps/Psalmody/Examples/honestly.CPP delete mode 100644 Apps/Psalmody/Examples/hope.CPP delete mode 100644 Apps/Psalmody/Examples/image.CPP delete mode 100644 Apps/Psalmody/Examples/josh.CPP delete mode 100644 Apps/Psalmody/Examples/keeping.CPP delete mode 100644 Apps/Psalmody/Examples/kept.CPP delete mode 100644 Apps/Psalmody/Examples/killed.CPP delete mode 100644 Apps/Psalmody/Examples/limit.CPP delete mode 100644 Apps/Psalmody/Examples/mary.CPP delete mode 100644 Apps/Psalmody/Examples/mightest.CPP delete mode 100644 Apps/Psalmody/Examples/mildly.CPP delete mode 100644 Apps/Psalmody/Examples/nay.CPP delete mode 100644 Apps/Psalmody/Examples/o.CPP delete mode 100644 Apps/Psalmody/Examples/partake.CPP delete mode 100644 Apps/Psalmody/Examples/permitted.CPP delete mode 100644 Apps/Psalmody/Examples/personal.CPP delete mode 100644 Apps/Psalmody/Examples/population.CPP delete mode 100644 Apps/Psalmody/Examples/project.CPP delete mode 100644 Apps/Psalmody/Examples/proponent.CPP delete mode 100644 Apps/Psalmody/Examples/psalm.CPP delete mode 100644 Apps/Psalmody/Examples/purpose.CPP delete mode 100644 Apps/Psalmody/Examples/readier.CPP delete mode 100644 Apps/Psalmody/Examples/reasoning.CPP delete mode 100644 Apps/Psalmody/Examples/reliance.CPP delete mode 100644 Apps/Psalmody/Examples/reposes.CPP delete mode 100644 Apps/Psalmody/Examples/restless.CPP delete mode 100644 Apps/Psalmody/Examples/risen.CPP delete mode 100644 Apps/Psalmody/Examples/sang.CPP delete mode 100644 Apps/Psalmody/Examples/satisfaction.CPP delete mode 100644 Apps/Psalmody/Examples/savour.CPP delete mode 100644 Apps/Psalmody/Examples/science.CPP delete mode 100644 Apps/Psalmody/Examples/scriptures.CPP delete mode 100644 Apps/Psalmody/Examples/service.CPP delete mode 100644 Apps/Psalmody/Examples/shield.CPP delete mode 100644 Apps/Psalmody/Examples/signifies.CPP delete mode 100644 Apps/Psalmody/Examples/silver.CPP delete mode 100644 Apps/Psalmody/Examples/small.CPP delete mode 100644 Apps/Psalmody/Examples/spokest.CPP delete mode 100644 Apps/Psalmody/Examples/struggles.CPP delete mode 100644 Apps/Psalmody/Examples/sustain.CPP delete mode 100644 Apps/Psalmody/Examples/teachings.CPP delete mode 100644 Apps/Psalmody/Examples/thereupon.CPP delete mode 100644 Apps/Psalmody/Examples/thither.CPP delete mode 100644 Apps/Psalmody/Examples/tookest.CPP delete mode 100644 Apps/Psalmody/Examples/tormenting.CPP delete mode 100644 Apps/Psalmody/Examples/twins.CPP delete mode 100644 Apps/Psalmody/Examples/valued.CPP delete mode 100644 Apps/Psalmody/Examples/vengeance.CPP delete mode 100644 Apps/Psalmody/Examples/verses.CPP delete mode 100644 Apps/Psalmody/Examples/villa.CPP delete mode 100644 Apps/Psalmody/Examples/whos.CPP delete mode 100644 Apps/Psalmody/Examples/wisdom.CPP delete mode 100644 Apps/Psalmody/Examples/witherto.CPP delete mode 100644 Apps/Psalmody/Examples/worship.CPP delete mode 100644 Apps/Psalmody/Examples/you.CPP delete mode 100644 Apps/Psalmody/Examples/zip.CPP delete mode 100644 Demo/AcctExample/AdamKeyPlugIns.CPP create mode 100644 Demo/AcctExample/HomeKeyPlugIns.CPP rename Demo/AcctExample/{AdamLocalize.CPP => HomeLocalize.CPP} (89%) rename Demo/AcctExample/{AdamPkgs.CPP => HomePkgs.CPP} (86%) rename Demo/AcctExample/{AdamSys.CPP => HomeSys.CPP} (97%) delete mode 100644 Demo/Games/BugBird.CPP create mode 100644 Demo/Games/FlapBat.CPP delete mode 100644 Demo/Lectures/Spinning.CPP create mode 100644 Doc/FileLowLevel.TXT delete mode 100644 Doc/MultiTasking.TXT delete mode 100644 Doc/Options.TXT create mode 100644 HomeKeyPlugIns.CPP rename AdamLocalize.CPP => HomeLocalize.CPP (100%) create mode 100644 HomePkgs.CPP rename AdamSys.CPP => HomeSys.CPP (96%) rename AdamWrappers.CPP => HomeWrappers.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskATA.CPP (96%) rename Kernel/{Dsk => BlkDev}/DskATAId.CPP (88%) rename Kernel/{Dsk => BlkDev}/DskAddDev.CPP (93%) rename Kernel/{Dsk => BlkDev}/DskBlk.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskBlkDev.CPP (92%) rename Kernel/{Dsk => BlkDev}/DskCDDVD.CPP (84%) rename Kernel/{Dsk => BlkDev}/DskCFile.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskCache.CPP (72%) rename Kernel/{Dsk => BlkDev}/DskCluster.CPP (97%) rename Kernel/{Dsk => BlkDev}/DskCopy.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskDirA.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskDirB.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskDirContext.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskDrv.CPP (79%) rename Kernel/{Dsk => BlkDev}/DskFile.CPP (98%) rename Kernel/{Dsk => BlkDev}/DskFind.CPP (100%) rename Kernel/{Dsk => BlkDev}/DskFmt.CPP (98%) rename Kernel/{Dsk => BlkDev}/DskStrA.CPP (98%) rename Kernel/{Dsk => BlkDev}/DskStrB.CPP (100%) rename Kernel/{Dsk => BlkDev}/FileSysFAT.CPP (95%) rename Kernel/{Dsk => BlkDev}/FileSysISO.CPP (100%) rename Kernel/{Dsk => BlkDev}/FileSysRedSea.CPP (97%) rename Kernel/{Dsk/Dsk.CPP => BlkDev/MakeBlkDev.CPP} (91%) rename Kernel/{Date.CPP => KDate.CPP} (100%) rename Kernel/{Ints.CPP => KInts.CPP} (81%) rename Kernel/{Task.CPP => KTask.CPP} (96%) rename Kernel/{KbdMouse => SerialDev}/InputPointer.CPP (96%) rename Kernel/{KbdMouse => SerialDev}/Keyboard.CPP (91%) create mode 100644 Kernel/SerialDev/MakeSerialDev.CPP rename Kernel/{KbdMouse => SerialDev}/Message.CPP (95%) rename Kernel/{KbdMouse => SerialDev}/Mouse.CPP (97%) create mode 100644 MakeHome.CPP rename Misc/{MakeDistro.CPP => DoDistro.CPP} (83%) create mode 100644 Misc/Tour/TourC.AUT create mode 100644 StartOS.CPP diff --git a/0000Boot/0000Kernel.BIN.C b/0000Boot/0000Kernel.BIN.C index 899ff9d0e7aacdad925a13f126f30dd43c150b6c..7e176cd3975aa3138529d3b4cabc01358e1d4483 100644 GIT binary patch delta 65328 zcmeycl>5UHZu8f2Yz!g(!A}1npq`D@8;L&?&&Aqvi7naF{G7E6=!UvYo7q zfQvsP!;8mU3=I1xI7%?=*f2Ru)hDcBp6cz%KEWAkYQl>|6p^2k_g*oPq_qUrr&QTuT~6Ya`BqXq|`il zs>XbYbWH|^7b~YRFnBZ{k%*5wc}RdkwV0tuezK2d5mV01$pKy2&Rd zU$nGjl%LFPb(-nft<5*A;uu-lZvOv2Io?5ha-hvbrdu~QKe2hq$f&gWoLvAT;u~w>36L7m0FQ2u zA0Evw1w6Wcbg{;r`2YX&s)+cw*h2yk_lJLDjXgcN!bgtD?8M|5KKATaUjP69^2n{p z_k2v58a_`J_3aeC_xb<-uooJC|NjREgQ+D$<>ZaNs!WrwPQKwQC)@^>-t-?KoiTa8 zsrY0CKV{RIS3#~j<{9l71&O0F)S&bDZz=}XJ`1j$L1#K+D5KcqKEHiTvR5WEb_!2U z^!H`byE1u$zaG=PkCPwxALbVP2r?HOEt3@!geM;i*v(`oKe;ZjkCAsWZ%{lV@8n!C zc@|9S21hgUP8JMFn*2Ig70lW$%Pc%w#T>4fE(WowV=&|KqG3`zA+)t3{{m`~Tmg^;=1=2mh`#6$bt$ zx&QzFfA9c#n6sD%#K;riddUegF`1WHNRUY(rW7@5q}dUEo!$O}xHPfXqsHJi!d z>EzI8V-As5|NndJSmCyLLbMno(+aoAD`G5}4!@ZEIA*r|)7v0_9pImGz=MC=0T1OL zVK1^kLX5{=pZ4fJK7HbPMzP78W2-pKZiABViCdFRr$Wr;qhVinJt{}-`_7~s3L5w%GeFil?JzklKbJygacqOK%J11|5mlCpj`u{%z z!-M}G|4q%G{{R2N^XB9`@p589PyhetXS8^|)2CaM?dkvjAg8qMoGg%_ryaTz;&^t5 z>DH!upZxz{%IDF2+~eQ_Q4dDewND`Gb#`vfOkiRZ&D{L||BIX7|Nr;w?fd`#KZ8dn zui56w4T&kDKQ@6ac6R~CYi^Hj*2qnpYm=-wCU3Wq zn7lSejp^F`$yaj%C7SR5|L@a%!K2roF)++C=tc7mP@Hf-oNSk?BV`Yf^z1(3@&7;o zNZJ-Gee}WPmRv2y50lsD#xc#@GMPWmnJN6<ng>U5F?3Ji1ve?oLk5SJj_Bg@GaN~t0RFd1`vFqe{S;jd^u%HkksD*h?Mbx4UDfPJevRcl^)1q z$Z!M6Jq(!qBi}}>62zVdRR=O4i{Ztbvy;6FWJQWf^q>_^7DL8nkh-{l$<+nwGOgth z53s)o?qpzi%?Hw!@fM`OiwuXHp{*I^$(XZ3gY-y$iNW(;->H99YwO6cVz8lWGWY#T%IGx98}6U`9_f^BhzH1Vneq2YzBsx zHz(&6OER`h?kG-Xo6^m|@X~1V$6`CCR~IH5mS{5SO^z;cV5++?d2Y!{CSCc-9;Fub z0f9lmA)%fDo`Hxmv83GNIBU*=|NlWXGfcRf*X{iO{~n!;KHaP~=l}orY(BtYd;pZ_ zJv$jZx?MSZx>;2q;sTzX3_jhgVi2B$M=z@r0|NtC87m{mkmdsl9>>AaZl1-EW$+^W z8w10OH5(zJ=aN|#m0Fa~5d7lh6b1&*NY9AanCPg;h**#FE}3NtU^#}#Wu@{=Jy#}A zFI8tsDVcnr)X|#hI>>pff#?4JH~!|)_>X~+fuU9^iy@28V~2ei*fxfMuone?|Nr;+ zf9&<$wBxQX{_}fu%gUddY*VHz4N;j7Q<=r^Lj5nuD2Hu~lM~BC>Q|rr|34t?1v6Ct z9fgL9Hlba4p3b_Ttu+$!p8~MAuvfW!3MmZy`$ABKgSz6^b%K;6}v{&u$}+PJ55e zdJZ4UYbC0lVPP+RT$$`!QO&gX^5jz$28{fZe^+c|ioGy-U1c3l^+jm=M6XbOazc&7 z40>U5e)8NJjmiJ3g!rai02NLXE=-KZHXX5zGNE<{q0I&}LH)a!I$FK-$XK2L6^s3=9k&|H~v^ zu!7w8zf9r9ACQy&ml?eH3}INju>SD>f47^!3P=7HPKa`i7uSwJ!~*zRI2afh!d`&l z!zc%#JKQ36N{LKe%+p3HWrD zN%(Z;Dfo1zX@HXAR*=&>L6Nlm0yD@hp)V#gc8X43KU-|N!(~R6$p)Po!v2T;|Mv{? z{9mk*#gs9%n}Oj4>*VZC1xA_4J)H_n-;YdQ*BQ+8`PpRVu71_XL!glR;nNu|;ql*J zB8wsH#lOR#lE6Yu zSV{%MvluftConL)5HbW;ff88^SphG0LaLW6hVU0@2PfP2>M*^0JUO@5jYDYyD9XF~ zC-3gP$5iuZ^6b7#0;VDRbw5&nV~Y^Z1W3kI+ket;zRzMZ^baw^B9?I2rw zwojIwqNB!;1#0vico2}m;K0C`;W~|h;f2YU|NpaCyJeqbg6e^8*)y4w^QS0Go-pMR zQ^d5%Gp5S1y;kzrQ7~=ujH&*NAR));dLXKBx)k5*FpuM|A3zxiq+&8ireNCS!s!Pm zzqaR{+&)8cbHt2FMxJXO|NqbV^?`qvZduLbyE7LtU8sD2N8(X|d75aFKxjl*8_wr}pAEyyTc4DVZdG`|sml)Bx=JeXMxmrUM0 zN0n{QJO+jr-IJfqF=o2Bc(U|d9X93p3=A(+Ci~8nX30!W)t#I(SB0r+&Ez@r4szpU!zCipb5j_=O;nHWV;=vH zc^rJe?8$u0&Von0#TW7-QSy=S!6tRY7dt;GdxKqBZ0H|NpPEKxQz$ zoh-0igmLZUh-C_l+rez{$$iUI_?W(e8Y^2tDqp-=GWozVX{M0m$qBnfCVyNe$EYw_ zV7ZOt<0Md6x-lYb_WW=1?L}exT~n>|*^GBTc@oVGfev3T;K)kd5S??Jvj{(9bI{Lx{SLfSFe>}nh^ssZ}R%Jl1%9!rpV;{t=5wz z*CjFSd^1^htvut5$#d5!F_um~uuhW6qj>V|b-s*slk3+@@F;m4cRc}07~wCXCfBbQ zpPaH@icw>7{d!HN#DdMM)=y(%dLIrBwEV4hlc#KwP%q8@|3Bcx&fNe11Mae@+~rY; z@aS|s@tOl>kjMYh6ECjLnS6QE52o9*C!gKCjcH9N+=S~}Bsh#fdS8@fPyW6oiRoGh zR4zg{DhFipyex#t0WT)c0;LoT^S8{L{AKHQrr$FrH>?+%e0bY+MxM#Dw|`|6n>=yH zLZ-g~lM{AJP4?UQi}Cs7_}$Wz{dPJ{mftNtdGD@;Oc(toC+vRD_;hl>9%;stlXLb+ za<9J!%Kxnq|NsA=zOkQCc=O^thZ)&joI$mv-Q?VTX57pZKq`KOz4+HNdEGv9$>nSR z{}0Pz%s6*|f#HS6e^5zxL?Z0Px}M4Z_JvEBLuKs_GBCWj0cw&ogJkU{=kBj!d@%XN zer*n=!=TLd^5A6Y1F;+$V2S+A}6hRyh>Qm@v8NkQvjvp2_})#U@`kq|2Bv`QIU3rfQIYIJY*aU88+G;6)^e zAI;b{dG%qfdh-=vZ-9#IV_hKT2anF$1HQ($eT^^q8b9$hew)PuDi~c~1iV-g_y2zu zbB4ePaJ6&b#k~}8|Fx9YquKQUv#;@O$IXndQ?i&dL|`iRpsBdzxQX$#QxE z!J`-C!%dT$kE%NKT>AgN)Ai45TTshaz#}>Kk4Nx}{ZK&--_|E3FhQov5S7Bdt#3>C zpeju#zc^|w+}`^Cf7px0R#2F_{_xOd-BC5!>{t}z{K*rKbufuJPj);dJX!DfB*y&7 z2ajtpDo%cL+*i8m3@8ooo&pu5zLsxlc(NEWKt1OdcO54?o|2rLdxA@1fBgUdFQu3m z7*G@}0x1xlyy%1sQz3+T`GgUZ7KEvAigmL5NiojF!i{-g|}3X~_$^ud0z<0%WKZ6Hc`a^ERFM!v~&Pi?Z9 z-w5*ShvRMnpbkeCgJ;kSmu662b>jdfFAE6U!Q;4F!2kdM|7S72_$UqP%Q0ruo}Ju% zTAFF&(#b1MTWIis&G~WM9cE7Wi_J|SbKE(y7+;h?^|YLu%yGs_=Tt3N#=)c4jnPy4 zP=IHU$NzGN7l*_C|M%&P56EKh>^=;t1p;0ysGXd5#*%5nlF2L2Xvyq9$H4F+2{g*v zd_)2?KoOdklA7j{nil-Raq{~!u}rHMPxd?O!xX!C@|?37OrIA`W;>_JTox%m+31`y z)BS|W;pbfI`D*|Fhju9rmw<{)aF;Vf=pq9{hSWs{h8KVT{QsY!0^)uIao>Ts|3F-e zOAHJz?t{1gs04^HnU8JFbDsF2h%lg6W&9q(F&a7DL9~Ym={B zR%SYUZSv2{s)lF5iq5@+D0&T2a1$)F8!E)VD^)^{zj+=5sD96Qcx|%(6;a8@U?m+; zCEr}7Ax6KrHo5kSGSjtOLW-@z?$kLDi?HEb>&q5od1W;_JT*uZogbN%=KHGlXE%Tmzbn$A8o7e?d8%GiGw>b&tt5^}O{y-MIqaSU(s3 z|Ibny;Mx3FrPSmb>ytvzxSt&VF4J3u|Nk?5W4&DX|36cy6#p*MlOU;=XP7|U7T!ID z|Nk?;+|R_oz`x6MJxJyo>k1H6!uoP069a>1^Iy(V`7DJOO`y7^o3*v@|Nj;2{4Kpq z3=CNcFLM6>umAu0g=h0$j#4R)|Gepi|NmzxyZ{Zadi>{&Ed2lfWeUU;u2TIhg%`G9 zQ+N{!LEd4t1W_|RzW?;-J_MQoXt98pDh_In-SF7)Kp&jC8GQH`Yw$NqgIwIrs{+#0 z&HA_C|9=mV-g=L2UQUo0h~v}!$fKK=3B>JYy$w_1(f#WiYk=zi|4jU?pf<)g*5d{L z|8wxS%mDS1yID7Z6t*7VZ|PuQVDN2y!rxjCl4$*3TIJErx&|cs|Aa?3?%C*_0K3|tH^Zg_wk z%sUaJQj<3;A8dbhKG^;_zd#ND%mX0vJeZIBbYJl7{^ZekjDdlR!K1sL*B7LW@s#m_ z4gWorkAg}&4`$W?un`}8jcuHrL}n>xVqpfIPHhJH)}D$55=tkO!KN1ofhx+Wh~|5PKM0)`fX=Z?3(a z%UB;4?imCc`YBcL=&lv;=?<0f;oldl;nDi7loK)}>e2ln?1fq?WIQ?ho0|e-Nvdz_ z?GghI%Y6cj3=H+*pm_%CHVF{h+sAU60*K)RYPDFmX@J;f;K6Mp56gWI7#JAp)gkIZ zBPsPZ(ms~cet<-UAR0g;o%L*B4NS%dAYO?*qyS0AAfFf?c%m44INO>bGjFo&U5UxO zcegQpOqzW3u5P`c`Tzfnb^IW|J~Ic+h_HN~@cQEikN>OZfvA1Vqx%PFnnulh^8R}>d163v-(Pxk zvRb7~PPuQ8#*y;>|BH>FR;4y;7C2*n00q2I7DI-|BL;>ShwDH^%n^atrXJnrJi1wL zBtx^TMH?IWb4UwWuh+h=GBj*@g+?xo%c>kTIUI_Iux6D? z|No!Ar3ow$E8x*7%bEWF|IK%IT?If>HMc+Bm6@FKDBGtSR7SQQD7AI@#=0Wy|9{Xp zk-`f>&jxz*))zA0Kn2z@ zP;CL3Aq~i4Lyn83cHk(5OrLTd0MG0zF_cVx^F)G?Z8Gaqt$H6E7Vj}aSX_o|F~s2# zFo*NN^p~PK{11}D%OUzRK*a&b+aE+>y5AVs{Qn<&7#jPK!5m9dDZT&y>$N~hXD3J@ zsJ!s7JW($Z_M$v!vcoemCJ%|p5zo|AAjZOUZPNY!zg`8T%bIl^h%FKJLKLF@nfT<0 zXN`Q!AW=bZ(Zu>+XY=!CN{meNA}4dd@M4;%F**E23e%g2$$MW|fOy|uXfwUCoUHQF zhE3`X1H+4>lha;y8ybO_CRe~MGXbyvTb_b?ky(rx79epMh`5C3|06FIKy7QT7lD(N zUQJ-T43aILyyKM;+kFtzd-8)Q9i+fyvpgH5D1&F)+NC z2$l8xf8_Oj&*nb@wW3)J8Ehb_vdLRt>q+&Cg4-l2rR<)eFPcD{|3_Y*&f-C zFeXjw$)Rsl*|I?zR!?qtqsS!BIQ@YIqv+%vZzLEWO}_X>)s-2NsegdF&5G|C7+xq} zgg6P(X6FicA@$|||GD8=%*YAL-wZqwng1Qs`bvzOZ2i`ck$H00TWRgy&zPzYnSzu( z{sykppsPeA7(PtC@Yc})X1`~UXV?pofB*l(?PbSel8xzP$9D!CKR$rEXyG3wSH9b> z-~vy19*u866%ni&1XY2uaZ!^4-mBJ!gBrEp-+6Sh>VjC!tg2D}|7(PWzc>OavHu%n zy!ynz5SGQ9@$C}>!;AKF;4sht&ByHlC8__%Ji1SKbh8S8G=oe1XOSQ!toI`S|JU&N zza6xkB8xGD=`#bv3r~n{2_%j6tk*&6!8+H1Sk0_UK{`QU`hNpRvqv}U7O=#DYXMnI z8GImv7$F8JAQ{Bk4^jj+Cl$nMW{m}zld+3|f#HRuAgJN0dY|kdluJ=69V8WM;c@jIB-5jfPM8c;{Sh*3{d0n#Zr(G*a&Yo z>j$uc1J^w)T|d+cWSj+A+XPbb-}S@m`#znr>mw%r|KQBXFxmN|kyguRNT5yt*}UQm z$m}EFK)s3xve_WHp2_n+Iy=lx2Bj0N&*0kaG}1_K;~NH0TbLmOM0xb~GJr?;*t|d; zAUL-yX0pOQ&H5tSdve~_Z%oUVO-}o!ZjmnwDvZI4cS=M&{+ovTg8J84j4#ae!8S>}P=50N ze^~g7KY#!Khpf&5IgVlS!VuZXkG{zYfSj-n?u01s$^73frTaY@80NxMgDdweh76aV z3=A($Y)=0El!fi_KL&;ucPIP((P!kCT=z$!UVwoC9Q6zyovcL?|Nna&XLa`itwI6C zwW)?LXsyb*&!Cc(0i;A6B+$+J!y8;xl(N70^5y^k*Kc1)`GKTOfB1m9VW8=Bm(Bo{ z@GR)ux(B$fuTuN}AH3-6uxc^bZ63{UCX4=+t>1sY8;n6J{2V!_F#{vRi>S#P|H`EBgOs!$DDm?6Z_4ZjimZ%S zkgVzfNPKy8vwm>}JHJHSssM zWtwdG&y$gHS}3EqnMZf2gim*>fJe9OcQ24pFZ`Z?dKe#GtOKndYCQm24s7tPbLD zfba#vbTYJ<7#Tc6JVUZrGR#3z(;!j?AcsN9uPnxlaF9&Rkg48|NnaiznJ<2FRpW7652zfdr__Gv}8_r>(U!$V5{c=l}oD8iBIT1&}AY89XdmzYG8WUnvU7K7@Jf*x(7thygEZRl#Xu6F59r*Sdm=!n+=@`~{j9&It1i_vsE*0C(zq zx=RIox@#pox@{-8{QsY2@Iu-PY^YCXnSxJeorX_mm;k72$Li7SC&B1r87@%A=Fwfx z@%oELx4cKEIk<&e2X5hdbRR=r>83Efp@LB&IqZeC2eeg+D2lgM0e9dGGYF`RK+j5|Gcvv_nPF}b|70Y_?Z)5lPf83+{189nwBkaZF=>{x}QYs*I zrQrC3#zgZ0fo}{PprNs_@GPbmOM@90rYo*s6rbGsP*5Kvql{`4ctuoL7SoH^U87lVW{mHr=ddy=)$`eaf{2wJL_w16i;r*r|9>r<#RwWB;C<)x|G&q7 z!xwkn{{IhJ3=Ha{f>v9-C~${#-avvJkW}~L`c;UcOlxq__u@Nfx}x;}q_KS<;KlTN z5P4&WyvL3U(|Oq#jm15~JovYj3V3waYQSRCz^A)(dLSF4Og(?|QBXnIeGEE+!07}U zLp1=k01iH2_F!fe06Wp(#XZ;m|3O3J;4ap|2h2X*2Yi@WKRN#Y?+IGQp$y7T5uTk4 zuSF4huQ-Bg18{;v2p$Is{x^8h3o3EyTmP4Un;UQwSAtCpe{mU<6wwXr0qKP-nDPt` z^Vl%~o|=EjAR2qIhahW_AfcIY0n}yy7uB7t+K%8t87u@UvFklLSq+fH>_A0yC#x#h z9#$qtNHvya0P03Wz%9Eh4XV>%e2-2Bk4^^;&|(<|1_zHF&sagz$)Ite9qVAs7Z-nn zEoNX~NbuN^2NU+F-{A&hzgQ1a!kER7v5k|F!DELT8`PLA=NB^nKzTKbA>%YyDh@8? z@`4d0#gN62aUU$T4KC&S;@MxQt{-5jb8soQ7pFl|3|S2I8SGpj%kIJDe8DvdD1Bx~ zfTjMyr9xgz1!)60(Htx##tw60#EYuGpq`a;Zi<4wQ&DPSwt{O#YI12wW_}(6SkN`E zB(+GvB{iuuJw3GuA{JaQJ&1!*$Qi64%-vDJEvK|N10olapPrtRs^D8%k_r(BF3&7U z&QNg6PcAK1D9KmwORXqT2uUo?21`$0%)z*por{~1;f3hd>EWD=4opiOrqASL+|SnJ z`2YXO!;?487M>hy#W}r-i&0bN|DFH;Jwd4pQUdt&HWV;3FnEF%uRWQ*pNr9r-HMly z;e~JTbRKTTWVLLE|Nmdl&0>6!brY1Ke`GPdSPBXXh750zvY4-+1rL7Hr*bnI1#{eH z1m{nP$)IY5f0qJxF?ha#k%@r;goCqWvY1}H^JZXpZ2?tx+yR_uvlw3JyD~7mP~6PG z@Z!q`P=oVD+jJ=&MiYUVrr=?;Ql{6S712L9rpNIxT8ndn`%~~@0NmwPsAd2ykWqYDY8`Tzee-&l3b|AU5hKpp@4x+_3Z&2Q>C?wHD%gH4YP zejy|TnTWo_%LNgO06FUps|bh(p7v&SH2?qqzHTu@H^&{*mu4`{R|R33uR_G2n(u>n z5Y0Sb&316jTg>WVx@W+3F94~RQGx1S1>!+;UpM>z|FxD!x9mGJkhf&FgQ#xV7a*!r zb|Z-DmVE@GI%QXz{r{g)5AN7_{5S121GO4OK)P5PK{EFlL8;B-ziE9nNNO5HDjy{E z|NsB`3f8JlFpzKx8`Wr+;4CDaGbVC$avns(1lmzMR zlm!itdHm;n3{v0C$^sIE7`PK8@}GB;>Hq%@9j3u%Aj;MkWETHESr-r;oF(9~`(ARW6W@zbB}T0vZ9A@aYZ}@ac{P)vg-8 zt(PizKx03RKR`qHHS9j!qOu@Iwf?W*0S$9D{&>L1z)-{P(QV5M65j!u9|Z-pN4@2- zQg)AS)Bh%*D)(Cjr)T#ukLDkYbsRqY`%F7cL87-oqKDz4vL&XVk&Htg+N_MGh(T9y zN;PFS{r?}dK*Oi|0?1-*)@LT@O5T`2lz^7wb=M#B&}Kc2q2?l7%?Hn5&oGeZUl{xW zMVP3a38-W6i>X)+wARx}n319Ju%<90Xsst)X{`ddQ4JoB0oBmFppb_RAZHu^PcC}w z2yka$0L`>81iauE{Qn;=E&z|H9|E981*->WkQUT*InL?|VG4L0XBC1l8Ng)`Bgj>q zte=ek|A&=lprS{X6C{pY7JUGz=wy8eqK>oX#Ti2iG>_w~lc7woc}*bsPS#>$P?5zB zvgsJ>f8+oE89k1(o`NdmH}p98NWp{okVhx$A&~mr>1iNv4O9s3H2(kpMfvuNLX3Qj zOu}cUKNMyZVf;J&n=qpmWBznS5k_h8ZD*hb2CEqZ1H)Yz6_0+`A1@Y64;EomXA=E3 zy+(vlLLv^XNCioe$C>GCL>Tprj=6%ioAB>S72pHa4WN0jUf2HtFD~+dTFxMGUWhoO z2UvV3-*iP$Mq!YWg?#`2XY3GTWXRYr#>nuZ_RIhO8E-)`lklPwG;YPeEf$nF5?)mQ z`~Uw1+t>g9U-Loglw%DQ%nS^Sho?^!Wt6v)6=!6~P!VTjc%cX~;tI%!loz^CBLqBx zvl3p&gN$eb33a;uc(D*P2q668)bw|vjQaJ9zWo0Wnmhp|5lDrUu?1x0Zjg~nKmY%q zu^eLL#=rmnXRL#;K{av)Xq+J{;l)hQ7(4&AScp~KAXO_Ms_Os#|NnvuVw>?lP>6uW z8eq-`wYM2Ur_T{%RA6!znZ8eqQG)5Q$n+axj9L?&Zy2bS!8;ZIHL|oSCu%U?DV7Jj8gTmWDe`4lnQw4a7GyC@a)F(gDm`p_y7NwFBupZG6Il=uY!axfrLYlh4+DkcQXVsFdS^#HQu zM3`h3MDi%IWC=_%7b1BISuz|Z832*I0FkT*MStK6E10Y?MD_+m79t5As{naM3?lgm zS&{*!^C!5mlJOi_^6`8~e7?K`k$jCTc?=|34>ET@MD{(h>`IUb4@|NZ zBKZ?pG9Mm7(GBPk3(BPmRvJ4Yc2DCmAT6QhggN|Aq z;$UzN3Gz{3aP$dLUnZ_5?% z;ok=uDXrBo{^r^E7qrZvl*6?{`{g?(1_qzb+!vnw+qjJncr^Y5OEH7Cxn!|>fY%OA zX8_e88yY;7j|OCMK*X9E{{MIF(B1)>H1J41;MmRYp?uJz(-kxW{KBI%_6Gm1)DOJH zDjv)`7E4Xj*vY>u z_XB6Kn(_bFN+2dzv9$63*Ww^1cd>x+|JOVqrqF9v5GCxvS^L4K+x3GFx9ba!Zr2YU z+^#n~4n9!uG}c`I9xXT&H9Ys0QkVo->d>*zTn_*l4N9HfE2kP2mJ^x6$Pp1 zEaLO{U;5(3{rms_zx+1+pbDdK{S(J6sjtWP+*0yd5GES%qW2T1)PCUE z{3nsW2UIJ87Tq-esN(Mj@A=vBAGD#d{{Me)xOcj~@N7OZ-=jPBg-53>zY?g$eFQpg zwowVx5M}_C{szVeeE91Zt1br#HD6%xv_4iU3vs3x$aqi(g_(6GNVXfK0V-K+f{<*1 zOP0tXMExM50U*Er4^iO&ZOR92!shb@Ew}-RzPJb4DBd0W!n3|p9z4Vv>lp)C2Xpd} z0t454B*1{go+Y+YS36dn?XQ&&SVGq0prk8ARNFVX4t zYK+45O`r)YP_K@e^|-?S|DKiy>UccPx7ZRceQpp5k-p~LmR$BxhH zkk(Cr$Bx%9W)`Cdq&52D9B4P;f72F_F=?UTf#OnEsHDe#(;Sd^T*&|b^$rcS{~wfO zf?K^F|4lX&SR_!Ac5E79^FShI$2{BKm|K% zh{E(nbw>I6HJXeJ8Jjg38D6Y?`2YWlhBt_o@0QnymhTD>`va)RPIxir_5c4_Oj!vp zCcg%aEt_h}|NsA@A2dTG^awQa{KEPTC}fcvy; zN4fw1UuXw|#(?16Wse=7;mR4Ho`1po>;Hdn7?+yD!gwo4?|aZvOGH;2tKQ>3|NrOT zWf~&)|35!}GiWP|N4IRe-2eX`^_{W_Aew)dskz+$|N0*PO$|W&|E7r`!?{6G@Sjx| zq;Z$3sNDbm97Q%B-LgC&HJ!4&AZmvIbm-QDf1BuMP%7kKE#R@k07>*ARP?ou2a4*W zvY_10zZp&WX0Y--j{r~@(-J_dTQWk0SuK5iIJTrk;Rk1FT z{QutrlJ};|A@bg0P!O&SM9q6;a^Toc0J*veq+m|~I4PCM{WtypVnN{l{~p$?Npk=H zmukb}IR>Qc8AuswZtww#*G-?N#i${xF9%8aYM`?sO1WIVu}XtkoX1#a$xMH&#i$VqA<7-}z=6@`u?8jJ-fVgod4;$zhSVOvo9?fqw zj=A1vIL5kM_Wyr|W2_57l*e(`7kn%X3|Wleg3+9JdYU$)aXl07|Nj}U^cWd3KI$)oNBg2bekXh$ICqEo_1+^3yUc9`E-a)QsJp3XbYR+BP2lqeTJ#h1Tbos6fVUUxg zKu+QX8PoCn|Nj@OF|;!t26u2@ECjju1juF6K`c=NKnB}`SYU%qK~gC%^gsfj z_T~$f7ythsbG^@)rI3~KqWsza|1WMm`~Sbg^?z1ER?3UC>A!RsW!ODI;#clWm(^ty zmyy$FWXMp}XJmN6c?VH!iGq|Ym>!_ZDCXBC{r~@eaH41gu}XM7j zqhfuN=>PvgcX(in8pH1EsDLWspgT4oA&-96NRaw&*(eazDSKNAwD{uWVR%~Q03D`s zRO-BFq!tU!H17+vtHyn3( zuSkMNiy>9nl))KlIXyH@t;GKSe=XtB z_zyf#%D)3NMD3w{%!83tK@8-FQ=mm9V9y$e{jY})`rk1vf|wp1{2~r+V;n>bV&hA2 zTw&UHQ50$;cnFq%$9>SA1F((TML~rRYXHbfYu1Yr|Nny)H?w*`_$MX)hx`XkrLsCe z1P)64|6js)jCH=m|No3H>i+)!|Jv60n@96M)>>1K9S5NC>A`%=hkqY~#|{r~NL+g` zAM@bf$KYdqpoH@nYm&tDNd}D8_3RS=|JN#d^tzbd0TsO*6950d=<))$PfA&jxtQKz z0Id(ZW_(}+sO{r>$3yvG2kR?wP+`4+$%B6zSj6Mvj}F#r5J48W;K3hE9jpf-q5>e% z`=CC_!5=IgtZN{m3LgCY+kBzItR1Y=#ivIbGNuWf7W@C-hf($nXqgD3?OCzu7Y!Nh z>bHvh|NkQS4`@XNXr9Hi6(uE@3&T@kh!||b#xxT}jWj}y1xQU0*c@LJHUEX+=E#Ws z2My$dlC49BEmOSM^a)0c67}Vvx&HsAwIcujzc2@_=KpW1338e?gq;f#2Q7Z_IL@jn z0vXjk#yStgiaoqZ7qO5Jbl}P{)_hn_7w#`;1OT&>&( zQINJ$wGO1MR3DI~^CG|jbUFq&&P7q;9CZG{|6{M8zIX*X_y)2HK?r30ruQEF`!0DX zLo9e<3|hVYpEXhx?8Qn5RV)e`WzGfJ>A}B`HANIu5`fn(g9@{-aL}q=iFyzIeYFBE z-&oy5L9I!y7v~lK|9=S@8+G}{x>Fb;cJ<%?|1T$l%9_@1CF(BUSS7%UWnI3p3V>Lp z!gGEZA9#}T?Eqs5`wM>1F+d;Yf>y2wAVeiU{r~^^gUdJ86tJP}FB<;+|Nq+2#^b*! zi}3&dFYdX6lW7V2iw~dw|9}0$H3!`qfG#NYkuVc8Z5@!1NB0Tv@^VcU(BwdeD=3M^ zzV`^uVnJvNc;WT--~V6WhU$YCMXI2_IH)7x(RknnXfr{l>xb!WW{e^NOt14ix?O*G zbUR3Rv>qr;obJfQD5~>dZbpv^hkf;nV%Vqqhy@E}!lXzo4Fg%zS%>ya27{_UyLvvHV`j^g70)xn6>?Gyt?vsXLs* zqf^SGGnm6OWUfzlz6EH}3%f^me1vDG6li@Dh@IfsDINY|R=osxIW$u#AOEiO1o>ii z{#|J*JVl&7{EKrHikV(Vc!tb<-Rf)n7Ho#+aq!uQU^6_AgW56-9^GxAO;4av105K< zyCDO#?#}W8C6h6{ZJdF|tnAcVuLrex{0%!&$(myA&;Sz$;Lh!aRdK!#smuB!I@2z~^w3 z@_yjol_$XTVzSKt|F7>ul!4AYTVKs6Hoe`FQJ6{e-}E__jLM7w(+^lOdNVGW&SS-> z$0Trkx{Vd1Z9QlKmJk0v$eJ+;<8Po*I#Bng*Y!uh3rkQr2RdmEv;hCbzEzMSBNY@l z382{1hxb`LvJbF&bo1tNLbt4diYCE~+n{zS|8Y=h>#&XSwGL?PLmfpAXg8WAlBQD5 zERGlVj)8PQ696>vGrhO~wO)A6uPlZv#urzA{Qv)A!n^F&X{-Wl{^bNL*(oFG3rk}NClmex1 za3l7Q>6%(?2*edND;fPq%Sm zlw#a6J=}@Wd$M*lcm2LliLe)IA&I#p&coVt+rNMROG1tRdsy2FU;g*MRvFay&pZGs zvOSnte_R3$1~^!FSRN|{&B^I`{6GHs3OJ)NfYOcF3s8G0>_s%xM7D2k0*s}gJ!IfT zj^Opqhae|wg69vXpK4^}p5E@vC@c!9zCneDuxC&fqerisK){P@52mkoW;A6yJ^iUO zqY2~d=~6C?`sxCp5N$s2BGRLi(WBe-2k2x|28KUMkTCRUeq)iv@M6m1=>;x~Kbd~- zoSyB<*eGz}H>eXbF91{={bxP&d-@+&MoY$7)6Lu%-I$Cxrq{VKO7m9V{r5jCgMo#C z;YEeR^kr_0G0vBmL5n@&5UyOenYu4X?(_P&eRYhYx7#UvZbAU{11J(9nSqv{Crq{bOhDldyFfhE- z0#%RQte1cO`|t6;z#!uQ$Q9qGe{g5CHNAi4-+yq>c>FiLeCFSOkX{WTkWp?19^I@b zpwglq|4sKmr8$MBCwVYhGi`R7KHq~;&&2)qzyBV+eH}~;41pfKeW10=fiHX>{QG~b z&4QVMfoaY!{#~gK9L0QLFDwN>EsC%gE2lGhGKPyxngs4e^fE%yqM%1NYvc4BPevK0 z!xyG^c`|x2o|=BulW`-*Ss&2QeX{rTJ}<^FCWD*PpLsDF@)l16xzlxrXZVYAH>az3 zGa50OOq(9z&8W*H%Q(H=o6$l%|1QYSr3YTzV)+06o126{iI_)sTg3Eh-i+DYDZY#h z8QH#!3@`pn_wix$tdH9F|NmcysgUw=qHY~Cjvm89SS$Bdut^YTGj+e@i z@Bm|u7a9}FN|KJmGT-$`wT%XCXN@n z9RL4^&3!!qnjNtPg5_sW#6SX}4s>d9vN9wPKw;1c66m?{@4rX$5rG$m|G^7(r_c3c z6c1D=&PdG30lOcxo=Ct0bh=mt56IhY79Q4a1|^&x|H~|1r1F3kYH#@a4{~lUw7Dk% z9(n|yLI_&!Y;C&p({xsUMk_{z=??ykNfM@?K?Z>v8!uBC85mv|7celqV9T4n%b(Gm z@zivt07gsK^D?zG`vo1LL?>{KldUUf^ z{(@vR0grCh-02MgjG+=D9N;rUxBUQB1E6Mv1cOI6>&Xw(-v%%mF`ZGIt{BKD#l(MQ zx@{n%35VkEfB(Z?NdKN*8OS)5f8qy-Gekl91URP41~Hmjc|!%2K_w=SXV42PsDO}1 zcN@6D)Ow(V_nVu5Kq236HOp205+paMc3-R%fhxkFvW0a{-HD#%`x|M~|yy41Hbs>1WQ6Q~8i z;L#nc;n^9b;2HM9@z1~io}Eqsb3D4YgWBicTr~uy{|sj2Q(C~xzyRIX7@qY%qcxO~ z0o2u5Z4S#u?b9_w7^CETK=VMY2TDO9#qjt4e_!KEuXQ0F4SP{PePIZry5u3mS+fcZ zo_PhOB?@ktIVGt@preuvt@gf!L<2m;*FXiZhd3A9Z=a{rCJl!jd(VTJ3^rkSz8H`h>ONTS288f|b`v33$ z>!;t`6%$CxX$CcM??A2y|-S^sETRBlQv<-4OyFov}YWx?MqR1&_|y2jC9a zjc=|GSW37+gVCVIKlpg07ofO;sC1CW2$Rl=kB06v2zUrt3yC zDtHRaMT?n?%4kN0jD~1Nh8HK+gUT?ldom!-?sjm1F#Z>Kz*@f`r@wIB0Pa8P{4c#R z_vIQ;w;LQfgdO04=>UZoMurUa7)FK{3K$N6^j#Zck@~J+`{%6(+iwiA9}?$~qSEyR zXzO%~7(7TEDxkG7f6GJ$28M6052oLaX4Dpw@Br-!XY%Nj@aP0ZzcU9Yex}RBFv_sr zmp`0%!F7jc*j&%8qGftMXLluaB5LmVqVGQgXLn=?UEV!by7j2P@u*M#KM5E z7eBzgKG0Fp??5dYSj}^okzx9WN+!w4z5BT9MIpK%dOWOI|3CWozf?7gAq*k{8ZmzJ z=->YrMc}IbM;61Jh=3P&K_k+t9{)`*f~4mE0Bs0C(y$vO>Il&Q_F4D~WAGO132#B} zaQy+T0uM8UPPX4C=TYGT%7U;18LU~8KyDBQby1TN7#Ut%j0eqLACY)1{o-01C~Oau zg8Q$jAW240_Xd0bn$+9rQ3;IJX4*RRmx66j z0x7YADtRsa!XDWMRgh#BC=|gqG{5=xKm0}Qn}7d3qbKcG=T|LeP*PPbR?<;Tv1Zt> zHQg|gQO8ynYW<6X_n;c-f@hFtP!?0h3Xo9;8 z_4HYZjNYzGL7SsMr(wQ$hirs-5+lP4OH3n}!A3-YjR<=E540W8;M@P{vlAH=rh6qZ zD%2~0&4Yz6bXywO_ZvV)f>Rf0FSTG6=s*W(#J?#22y)q(SN|~f#&UorylMq9n3EY9 z!e9JT2kprH0FM9v8$j(4kO}__DqgrGg3jb(7RumEW@LB)Isnh3`G`i?i^^BiekQ!%mQgQV3^Yn7Fi6^+6mU$3D(*P*4hcy z+6mSQ+8Dv`LUsoz$EfoB|NlSY#pFZ({ztr6eCXf*xuBwJ`n^;}M=qN!|G>8d=zW~7 znZ_8*cz=3r8lx50lFbm|X&&-@p_`P@2D>E2f8Rt&lpTTIsl>!wGdpDgilhKt?6eKJ*JvNh3 zjO)b)h?ZM#r`KjORtcqm_;W#fGojaNFifwEV=`iP%wn9rE{@5H*96CMEdQ?1<67#CZ z|EAZ+GfCBZ>;(0cw`5N)X$l(+#xi7<3uT3vY4;~OjQ+kk0%_(utFG>x5Q9SSe|2e;QGB7{**UiYk>j4kw ztRT=1VGXzG{7Fo8NYjobc=gh{wm@33<6bPr(XV_9+ASN#C)Lm|Mc1vCO?CP%l`eZ z5dxjwhX|&Q+5i7Tx_hPfKnW65)t7L42EFim@NfF>6ecqj<7FUm2MgF#MfVSn&N>0` z3Bmaapu0PYpZ%L2n#wfYi|NJnr~m%HM(-l{bcYpqbfail4^sEhqg&3S8+39Hc+%hl z|E_WchPh!cY99QbZkEPm!n`V}>z0O-)8 zfETOogO=(Xdwn27pd7S{+@qUSXURX%8Tz0^9q?k##()1kb~t81$~vF!@BR z?>9V|4+J0t0zAWB+~4@`e-@X=jsy`%lm>YAy0HYjH~})}IP2BLkR<1Eob?idd4BP~ z>1)!NEPSWs|Njq8yvG@*yYVnUPWWg<6I{^7$nYX3A2dks(fALPY-{;G@bA)%TKw-n zc*gssN4Krp;(yZ(Gnixr+DniYNiX;QKRqskNrv}PA;d!gFTAh(pWdFqB*(me(ZA^{ zGMLnur!D$7{bB}_1atGEf79P&Fv&mn|f}(&?$S(yxiCR{b%v$W{tT3GOYkK1QQ5ha(Hy}x`CO7SdM|4nbpVp3$bz4~wZsw}3}_0zBX1Fi0?74QsyVF)s` z`>?0>F`w=izTJ;sFZ8k2ExYpXe=X=h7~vjJE5YowlFK*O?f*+fJa*f-`n%aNFfata z_}&d#X0)9#i|fT3(0J7U<1asf&+9ql(amde<==mg?=L-=T`zcQAM@yBWxn$7e^&jA zPl^Bki-PK0(CsqN*6Se!1{Vgs>35Bpq^GmwFsatB29;Nxu^q=+!$GTqvKU{q=l%cR z(HaIiMTzl+Rz8Rm3gO%Z%Y=X$ub{KQKx0Q9-Lit9;p5I&0r33R3ebvNffsuofR0AL zG3VEY?;ia74tOZDI$!?x-}urd7SK|HPEk{kt;bojF33Xy&!e}s0AwtD`}pGqMur!k zuK$~UDu-#2;AZf&0qA^p&{9GB>;IkN+9FFpR3&hQKggIX5w;uLh3xks<-hJY8X2SL4?7aq+& zr1+ab9WD>hD8!QnP{%B#igEgyJSJ&QiAE5&ql$6+g*+xFM&_&M|4kPyV2a|XI1j2+ zzA{ah&u7w_?pDAgKm9-flUKb#BO}9$GEnon`G^8&*Wv#%ffw_@$*f%9#ncP`{`+)> z382olhQFx2@bCXiRnSOCx0`?`Gx**f4+t~h#hW$%{=Wo`z-KXJNxax{4pf?h!UiU9 z0}9+ucL9)w>79j4*37MI{!Kq#$YjZ33UW<@)BoulMNDcc{pUd$rCi`e+j)>P!Ua&v z@30qn=l@L)Dq=Dcvpf%KkQ$%=_utp}$;%s{QG^`|`qO6>F)0eAfHE(r3zuO9GX4F< zf78zvF+$i7+vDk8u={1u+T9{)=P zUi`ZQx^&}3+}VHAlS-KE>t)V@+$sik)!qcqzV0I)|4SQQuz*DVmtJ`B8C_uu%y z1{M!x*ADO^eby7F{{5fp!M_ijeL$IQx1C{bPre{uQrzv-_^nW6G*!=-?@ZN)&pbDw= zTZz((Kgs{63zjn}@OPd9x$HQ^WgHCC*|Qi6nWiqAUX{ft#R$5-OL+Q@AHOVB0{ z&;=e9P_cddyHXW+ilsmYMYK*A$YGRcdeA!EFo#iw=}+r)e-JI$Ha!6Z$+d}IG#%AH{X7CyEBZ1Ra0Z~uU@+70kw{i;W%#}zPI33wj@ z2R|stvq0(~?%z|uD6DVR1q$CUpzZ456SP6Teg@@v2ECYk7+ewcfT-{nt%s-oD`1r3 zwK@cuc;gLw5qEgHY9V6*kKaMC72#no^5#!pSjZ^FaR_WOhw1dgg^WpR`wqb5@67`x z-3y=vbgc(U!Smc1zTF^KG?+~HE@BK}QlCG4VG-kE=KLJ%>F&jhbxaDn(~lQ3nlsfO zo>s!B#ctBe$nZkSc)DQ;qbYkDh;z?qdTt40Iq(0yAX|QTfNtDzo&K?eQH+Ug&UDUF zM(=t}a2Wh}t>y_D+}hdC$nfHkA-If@0B!%}&tk~f3le06sLRq1d$DFQIGvS9g}t}{ zI;y|*Kq*MszJ8En`te+#HR4(ep?1BFGW>jw~f(?L-5-SFfM&N$G| z2;L9yB6Rum2c?W69*02o1wb63;nRKLwH7E!OC&+7B(j(@PJyHik)*jn28MtQyx`mV zzmx~ODb@Mlbel3pjlg$%Ad#Zs8T>+UA2>C9c)_s`l=_(V{rm43{^IvuP{@DX`|rPJ z_o3ISVJ}{RgR2y@BIG`(hY#A47WU!_SlPL~)3=r}I@KF@K}z1#pH#G;bGazhh5IY8Bc;jyd1qOy%HIL)0QlJqMP(6E`l^wz4fiho$4rI+Tc(DlN z+)mbyo56|A2Ex0&85EZRtam^(q($ZN-}Kn#fB#>s+xzeTP6JT80(2TIs5x@*0jEbN z>%qG zwzuGeM`xLYM`xJ;Xg$YOPzCY2W4dDnqXE;aP1B1j7!#T5H%-4*!MII)Kd7_RdZ45T zR5?v-hXm2#BhwdGGAi5kf+V{Q!(OZdEyf2G$Dq5A+zbL<2u}jFP{I^EI_osTUYrMY z!~Y-mY&;B7^Li!7LXGz6YpNL~r^{9`@@vb33~D`4QVp`@V;jU4J=WhU~VE&e443L9xZJ~zbAD;fbicyQ{ z(uC>C)r`3^$rHdW0!9ze!NQUr+BZBpC0}m>IjEs^`|i zWsGK8e*nUt=?&s5PybrW2s$u;VR}IwqqfL7P{*XxE#!r(`+w+Bg__eRq%et1KU&AA zz%;vO`tv%*Hu1W?fB#<#cgHDs1cTa72Y)aHgue*vo8D5-Xu!19bNV(AUAJ%gi+aXT zo;|Mr|96Kgq`iNkW)Zloo%4z1TMWKs)2fh##v#3GFpU_=|U77HA3^eCngNG-yB; z+IT=(;S=r|1iHK~?8PQ2P?zF@@&D#J0p?P6{#|7v9H4EKc_JJyx*VoI>|ktVOrM_K z$+(6wX}U-kqYaa!{q&$NMr--XjQ{_;-84MDzxO!!gVTeN_3VOw|3S0VV2hQeujyhm zSDM@K@BeYv6`(nKm(I`~owa)$I!d=5cRj$s0UA4ak!ClYwVN@4QDAynH{%Bh(fJ^M zIBaJGnZpbBMZ)yF9!5*1ZF19B_AqKQ@h_Wxt%p&I>FDa|OudZWOfojp{d*a^IHc-8 z<;kLD(;xOSsxX~AG@ZSVv2J?3B_sFb)`Oyau^ONTqw#--?aW~>4o~0Q$7st`X*K;* zAEOSt+xmb1U$|LKSM6uCU|N|xJ-(k&iD`D-^yYp>Ek=dy>-rfdGfUmB0);y0(o!Z* z#zUYSeeegn2P3Q0jOo#n83PzkOdr!XpOYzK+ULB)NIFL^fq zVydkMEh6;b-!97<^zXk%aQKT*lj&kp8I_|R1^)YADwf5NaR8+4lpweg5df{>f9;&b zkZ~L&x&Fd@$eTP=1reGl`)5D`LgMZ(-<9? zly^;cp2n!dZnzQDEEAYsHjPn^bHR2{_xeYc$n?5tjABfU+ox}x#+bzp`OG5K#fJ+qyv_qEHdfV9#*RP*7K= z)F6vBV>(FgCok9x@S<6rEQTzL7qjO~*O|$9P!Tk72O6i$V#rY3%*gOU1fmjrf@K!N z3!$#*e6tvrs6hsqz{_Afn%{VUhGsp3JwrT0J;OZ1J-TZ_hY{9FOusyfQ9b${s6=c% zP{M9};H4Nd0|O*36lxtjyAOF}A4u_FW)+<9?>}e}a^nvtm*B8cMTE@v{(t`iUKn#Q zFa&r8dGxv-2zc?P;NO4HG~_Pd*6G=^8FiTMZJ9oEHlq%^#&$-A7ZKdk&&+02WQy1{ z{rzl4StiR()A{Bw$}+v$FkN>Jql9MAc1G}AN2q7W3sumuIK8er0>U%mz`~56fO^3P zTKR52y?!pEgi01zoB=HU1T-xQQCLJ=1s3Wt5J&1Qvp*oPtpK04xkqS^Mk% z{|qiJ28I{uKH!xpp3T1$YL$HW7l$4w76V=00*gJxUQiruWo2LhMazxpKJyswu%zoK z*i6@)�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 delta 65570 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 diff --git a/Adam.CPP b/Adam.CPP deleted file mode 100644 index 8c09d6f..0000000 --- a/Adam.CPP +++ /dev/null @@ -1,106 +0,0 @@ -//This is executed by the Adam task at boot. -//See $LK,"Adam Start-up",A="FF:::/Kernel/KEnd.CPP,\"Adam:2"$. - -//You do not place this file in /Home. (It would be ignored.) -//but look at the bottom of this file to see -//files you do customize. - -extern I8i OptEqu(I64i num,I8i val); -OptEqu(0,0); //(0,0)=EchoOff (0,1)=EchoOn -#include "/Kernel/KernelA.HPP" -#include "/Compiler/CompilerA.HPP" -#include "/Kernel/KernelB.HPP" -#include "/Kernel/KernelC.HPP" -#include "/Compiler/CompilerB.HPP" - -Cd("/Adam");; -#exe {OptOn(OPTf_WARN_PAREN);}; -#exe {OptOn(OPTf_WARN_DUP_TYPES);}; - -HashTablePurge(adam_task->hash_table); - -#help_index "Misc" - -//Use Dbg("Type 'G;'"); to debug before window mgr is running. - -public F64 os_version=3.07;//Operating system version. - -#include "AExts.HPP" -#include "AMath" -#include "Training" -#include "AUtils" -#include "AMathODE" -Cd("::/Adam/Gr");; -#include "Gr" - -Cd("::/Adam/Snd");; -#include "Snd" - -Cd("::/Adam/Dsk");; -#include "ADsk" - -Cd("::/Adam");; -#include "Menu" -#include "WinA" -#include "WinB" -#include "ADbg" - -#include "::/Adam/God/GodExt" - -Cd("::/Adam/DolDoc");; -#include "Doc" -LBts(&sys_run_level,RLf_DOC); - -Cd("::/Adam/Ctrls");; -#include "Ctrls" - -Cd("::/Adam");; -#include "AutoFile" -#include "ARegistry" - -Cd("::/Adam/AutoComplete");; -#include "AutoComplete" - -Cd("::/Adam/God");; -#include "God" - -Cd("::/Adam");; -#include "AHash" -#include "TaskSettings" -#include "DevInfo" -#include "ADefine" - -//Dbg("Type 'G;'"); -DocTermNew; -WinVert(2,10); - -sys_winmgr_task=Spawn(&WinMgrTask,NULL,"Window Mgr"); -Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_BORDER - -WIF_SELF_GRAB_SCROLL-WIF_SELF_CTRLS; -LBts(&Fs->display_flags,DISPLAYf_CHILDREN_NOT_ON_TOP); -LBts(&Fs->display_flags,DISPLAYf_SHOW); -RegInit; -LBts(&sys_run_level,RLf_REGISTRY); - -Cd("::/Adam");; -#include "WallPaper" - -if (DrvIsWritable) - MkDir("/Temp"); //Good to have a Temp - -#exe {OptOff(OPTf_WARN_PAREN);}; -#exe {OptOff(OPTf_WARN_DUP_TYPES);}; -LBts(&sys_run_level,RLf_HOME); - -#help_index "" -Cd("::/Home");; - -//If these are not present in /Home, it uses the version in the root dir. -//You should make your own version of these files in you /Home directory. -#include "::/Home/AdamLocalize" -#include "::/Home/AdamPkgs" -#include "::/Home/AdamKeyPlugIns" -#include "::/Home/AdamWrappers" -#include "::/Home/AdamSys" - -//After this file, the Adam task enters $LK,"server mode",A="HI:Task/Srv"$. diff --git a/Adam/Dsk/ADskA.CPP b/Adam/ABlkDev/ADskA.CPP similarity index 99% rename from Adam/Dsk/ADskA.CPP rename to Adam/ABlkDev/ADskA.CPP index 800a561..6a7ae46 100644 --- a/Adam/Dsk/ADskA.CPP +++ b/Adam/ABlkDev/ADskA.CPP @@ -319,7 +319,7 @@ I64 RedSeaUnusedDrvSpace(U8 drv_let=0) l=(dv->size+dv->spc-1)/dv->spc; i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS; bitmap=MAlloc(i<map1,i); + RBlks(dv,bitmap,dv->fat1,i); for (i=0;isize+dv->spc-1)/dv->spc; i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS; bitmap=MAlloc(i<map1,i); + RBlks(dv,bitmap,dv->fat1,i); for (i=0;i>3+BLK_SIZE-1)>>BLK_SIZE_BITS; bitmap=MAlloc(i<map1,i); + RBlks(dv,bitmap,dv->fat1,i); i=0; for (y=0;y>BLK_SIZE_BITS; bitmap=MAlloc(i<map1,i); + RBlks(dv,bitmap,dv->fat1,i); i=0; for (y=0;ybd && dv->type) { sect_start=-(dv->base_offset*2*ã/(bd->max_blk+1)); sect_end =-((dv->base_offset+dv->size)*2*ã/(bd->max_blk+1)); diff --git a/Adam/Dsk/ChkDsk.CPP b/Adam/ABlkDev/ChkDsk.CPP similarity index 96% rename from Adam/Dsk/ChkDsk.CPP rename to Adam/ABlkDev/ChkDsk.CPP index 6e6b7c6..89da063 100644 --- a/Adam/Dsk/ChkDsk.CPP +++ b/Adam/ABlkDev/ChkDsk.CPP @@ -60,7 +60,7 @@ I64 RedSeaChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm) bpc=dv->spc<>3); bits2=CAlloc((size+7)>>3+BLK_SIZE); - RBlks(dv,bits2,dv->map1,((size+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS); + RBlks(dv,bits2,dv->fat1,((size+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS); //Get Root Dir size ptr2=MAlloc(bpc); @@ -164,7 +164,7 @@ I64 FAT32ChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm) bpc=dv->spc<>3); bits2=CAlloc(size*4+BLK_SIZE); - RBlks(dv,bits2,dv->map1,(size*4+BLK_SIZE-1)>>BLK_SIZE_BITS); + RBlks(dv,bits2,dv->fat1,(size*4+BLK_SIZE-1)>>BLK_SIZE_BITS); c=dv->root_cluster; while (0type==DVT_REDSEA||dv->type==DVT_FAT32) FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE); else if (dv->type==DVT_ISO9660) { @@ -401,7 +401,7 @@ U0 FMBurnISO(CDoc *doc) while (tempde->parent) tempde=tempde->parent; Silent; - CDImageWrite(*tempde->full_name); + DVDImageWrite(*tempde->full_name); Silent(OFF); } } @@ -480,8 +480,8 @@ I64 PopUpFMRight(U8 *header=NULL,U8 *footer=NULL) "$$CM+LX,1,3 $$$$BT,\"PASTE CLIPBOARD FILES \",LE=FMR_PASTE$$" "$$CM+LX,27,0$$$$BT,\"CHANGE DISK(MOUNT IT) \",LE=FMR_CHG_DSK$$" "$$CM+LX,1,3 $$$$BT,\"FORMAT \",LE=FMR_FORMAT$$" - "$$CM+LX,1,3 $$$$BT,\"MAKE ISO (CD-ROM) FILE\",LE=FMR_MAKE_ISO$$" - "$$CM+LX,27,0$$$$BT,\"BURN ISO (CD-ROM) FILE\",LE=FMR_BURN_ISO$$" + "$$CM+LX,1,3 $$$$BT,\"MAKE ISO (CD/DVD) FILE\",LE=FMR_MAKE_ISO$$" + "$$CM+LX,27,0$$$$BT,\"BURN ISO (CD/DVD) FILE\",LE=FMR_BURN_ISO$$" "$$CM+LX,1,3 $$$$BT,\"HELP \",LE=FMR_HELP$$" "$$CM+LX,27,0$$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$\n"); if (footer) DocPrint(doc,"%s",footer); @@ -585,9 +585,8 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL) case MSG_IP_L_UP: if (doc_ce) { gr.fp_final_screen_update=fp_old_final_screen_update; - if (WinCursorPosSet(Fs, - a1/FONT_WIDTH+Fs->win_left+Fs->scroll_x/FONT_WIDTH, - a2/FONT_HEIGHT+Fs->win_top+Fs->scroll_y/FONT_HEIGHT,TRUE)) { + if (WinCursorPosSet(Fs,a1+Fs->pix_left+Fs->scroll_x, + a2+Fs->pix_top+Fs->scroll_y,TRUE)) { doc_e=doc->cur_entry; if (doc_e!=doc_ce) { st2=NULL; diff --git a/Adam/Dsk/ADsk.CPP b/Adam/ABlkDev/MakeABlkDev.CPP similarity index 73% rename from Adam/Dsk/ADsk.CPP rename to Adam/ABlkDev/MakeABlkDev.CPP index e14857a..6bde3b5 100644 --- a/Adam/Dsk/ADsk.CPP +++ b/Adam/ABlkDev/MakeABlkDev.CPP @@ -1,4 +1,6 @@ +Cd(__DIR__);; #include "ADskA" #include "ADskB" #include "ChkDsk" #include "FileMgr" +Cd("..");; diff --git a/Adam/ADbg.CPP b/Adam/ADbg.CPP index 31f20fa..6e946a5 100644 --- a/Adam/ADbg.CPP +++ b/Adam/ADbg.CPP @@ -21,7 +21,7 @@ Bool ClassRep2(CDoc *doc,U8 *_d,U8 *class_name=lastclass, return FALSE; unlock=DocLock(doc); DocPrint(doc,"Class:\"%s\"\n",class_name); - ml=tempc->member_lst; + ml=tempc->member_lst_and_root; while (ml) { tempc2=ml->member_class; ptr=_d(U8 *)+ml->offset; @@ -155,12 +155,10 @@ public U0 ClassRep(U8 *_d,U8 *class_name=lastclass, I64 max_depth=2,Bool fun=FALSE,I64 offset=0) {//Displays members of a record by using the compiler's info. CDoc *doc; - Bool old_preempt; - if (IsRaw) { + if (IsRaw) doc=DocNew; - } else { + else { DocMax; - old_preempt=Preempt; doc=DocPut; } if (fun) @@ -172,20 +170,17 @@ public U0 ClassRep(U8 *_d,U8 *class_name=lastclass, if (IsRaw) { DocDump(doc,100000); DocDel(doc); - } else - Preempt(old_preempt); + } } public U0 ClassRepD(U8 *_d,U8 *class_name=lastclass, I64 max_depth=2,Bool fun=FALSE,I64 offset=0) {//Dynamic ClassRep. Uses hex_ed widgit for live changes. CDoc *doc; - Bool old_preempt; - if (IsRaw) { + if (IsRaw) doc=DocNew; - } else { + else { DocMax; - old_preempt=Preempt; doc=DocPut; } if (fun) @@ -197,15 +192,14 @@ public U0 ClassRepD(U8 *_d,U8 *class_name=lastclass, if (IsRaw) { DocDump(doc,100000); DocDel(doc); - } else - Preempt(old_preempt); + } } U0 UpdateRegVarImg(CHashFun *tempf,U8 *_b,CTask *task) { CMemberLst *ml; CHashClass *tempc; - ml=tempf->member_lst; + ml=tempf->member_lst_and_root; while (ml) { if (ml->reg!=REG_NONE) { tempc=OptClassFwd(ml->member_class); @@ -236,7 +230,7 @@ public U0 FunRep(U8 *st,U8 *rbp=NULL,I64 max_depth=2,CTask *task=NULL) } else ClassRep(rbp,st,max_depth,TRUE); } else { - tempm=tempf->member_lst; + tempm=tempf->member_lst_and_root; while (tempm) { if (0<=tempm->regreg,"ST_U64_REGS",tempm->str; diff --git a/Adam/ADefine.CPP b/Adam/ADefine.CPP index 0f9faf8..31b9fd9 100644 --- a/Adam/ADefine.CPP +++ b/Adam/ADefine.CPP @@ -11,15 +11,15 @@ U0 LoadDocDefines() //This is cut and replaced when I generate a distro. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. $TR-C,"LineRep"$ - $ID,4$DefinePrint("DD_TEMPLEOS_LOC","122,918"); -DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,950"); + $ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,728"); +DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,899"); $ID,-4$ DefinePrint("DD_KERNEL","%08X",bfh); bfh(I64)+=bfh->file_size-1; DefinePrint("DD_KERNEL_END","%08X",bfh); DefinePrint("DD_PROTECTED_LOW","%08X",MEM_PROTECTED_LOW_LIMIT); - //$LK,"DD_BOOT_HIGH_LOC_CD",A="FF:::/Adam/Boot/BootCD.CPP,DD_BOOT_HIGH_LOC_CD"$ + //$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,DD_BOOT_HIGH_LOC_DVD"$ DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR); DefinePrint("DD_MP_VECT_END","%08X", diff --git a/Adam/AExts.HPP b/Adam/AExts.CPP similarity index 93% rename from Adam/AExts.HPP rename to Adam/AExts.CPP index 9c482cf..a267930 100644 --- a/Adam/AExts.HPP +++ b/Adam/AExts.CPP @@ -30,7 +30,6 @@ extern Bool DocForm(U8 *_d,U8 *class_name=lastclass, extern U0 DocHelpIndex(CDoc *doc,U8 *index); extern U0 DocInsDoc(CDoc *doc,CDoc *doc2); extern U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e); -extern U8 *DocLinkFile(U8 *link_st,CTask *mem_task=NULL); extern Bool DocLock(CDoc *doc); extern U0 DocMax(I64 i=MAX_I32); extern CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL); @@ -46,9 +45,6 @@ extern U0 DocUpdateTaskDocs(CTask *task); extern U0 DrawCtrls(CTask *task); extern Bool Ed(U8 *link_st,I64 edf_dof_flags=0); extern U0 EdCodeTools(CDoc *doc); -extern I64 EdCurU8(CDoc *doc); -extern U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64); -extern U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64); extern U8 *EdSprite(I64 bin_num); extern I64 FindWiz(); extern I64 GetI64(U8 *msg,I64 dft,I64 lo=MIN_I64,I64 hi=MAX_I64); @@ -85,8 +81,7 @@ extern Bool View(); extern U0 ViewAnglesDel(CTask *task=NULL); extern CCtrl *ViewAnglesNew(CTask *task=NULL); extern Bool WinBorder(Bool val,CTask *task=NULL); -extern CDoc *WinCursorPosSet( - CTask *task,I64 ip_text_x,I64 ip_text_y,Bool set_cursor=TRUE); +extern CDoc *WinCursorPosSet(CTask *task,I64 ipx,I64 ipy,Bool set_cursor=TRUE); extern Bool WinHorz(I64 left,I64 right,CTask *task=NULL); extern U0 WinMax(CTask *task=NULL); extern U0 WinMgrSync(I64 cnt=1,Bool force=FALSE); diff --git a/Adam/AHash.CPP b/Adam/AHash.CPP index 13f0bf2..594e8a9 100644 --- a/Adam/AHash.CPP +++ b/Adam/AHash.CPP @@ -158,7 +158,7 @@ U8 *index=NULL,CDoc *doc=NULL) CWho *lst; I64 cnt,i,j,k,f=0; U8 buf[512],*st,*last_index=StrNew(""),*cur_index,*comment; - Bool recurse,publics,map,old_preempt=Preempt; + Bool recurse,publics,map; CTask *task; ScanFlags(&f,Define("ST_FILE_UTIL_FLAGS"),"+r"); @@ -226,7 +226,6 @@ U8 *index=NULL,CDoc *doc=NULL) else break; } - Preempt(old_preempt); if (map) QSort(lst,cnt,sizeof(CWho),&HashEntriesCompare2); @@ -314,8 +313,7 @@ U8 *index=NULL,CDoc *doc=NULL) if (index) progress1=progress1_max=0; - wh_done: - Preempt(old_preempt); +wh_done: if (doc) { if (doc->root.next==doc) DocPrint(doc,"No Match"); @@ -403,7 +401,7 @@ public U0 MapFileLoad(U8 *filename) ptr=temph->src_link; if (ptr[0] && ptr[1] && ptr[2]==':' && ptr[3]==':') - ptr[3]=dsk.boot_drv_let; + ptr[3]=blkdev.boot_drv_let; doc_e->aux_str=NULL; } diff --git a/Adam/AInputPointer.CPP b/Adam/AInputPointer.CPP new file mode 100644 index 0000000000000000000000000000000000000000..59c1c761b22e061cf78f3890340bf180e08fdd3b GIT binary patch literal 987 zcmY$+NX;pT&&*3ntx!;MFG?)P$V@KQ_suL$w)V^`C@oP4$j{6xNiEWM$t*6&Nvupw zQSi)7Oixwf;!+6?&{486v{TY?^0YNn;o?d!(o4-PD5;DuE-1<@Nwrn+bV62O4bx%- z(PE?m6EKDd7^`q`6_h6BWF{+w8Ys9FC6>DvB_@HL5l~X3;q2n9pp}xW<7sB1Pyr?@ zb)53^a}<(u@{3bbG`Xtv^+Pf;ixo196%rMa6LWHs5|gv_6oOMz6;yn@b(E~E^j%VO z^Y!80bT7(G(Q^(6P*Tz3Qcy@q*0oE^NlY(Rv#rx`adwLj33BuccJmMNbqw+J_p1R3 z1xNb&x`qTrYFa}zBriu{=J#C^0EM6BJSL1tmqcYUqJx&BegX z00Ea67#Nrs7#PHV{r~?TB*eqOzyQMkL4bh)M1sX341TZxNF78qKf`|p21P1(Kqi3oGeFeC_#hrg9Ap8Q1`+)H{4jZt{S0V)kd+_>Af+IA zutgva2!nhDqTxRL4fP=>!iOMv2AD384?rG(@fqMA04sy>_@O+4e3&_K8riv!5Q6vz zY9PpYVE>}>;r4;#p;8cv5kfJjLF15-g&E{&KBzE=;`;Ib|9>_H1_llW28N#?69DAQ B_tgLZ literal 0 HcmV?d00001 diff --git a/Adam/AUtils.CPP b/Adam/AMem.CPP similarity index 81% rename from Adam/AUtils.CPP rename to Adam/AMem.CPP index f301c8b..31b7876 100644 --- a/Adam/AUtils.CPP +++ b/Adam/AMem.CPP @@ -177,38 +177,3 @@ public Bool HeapWalk(CTask *task=NULL) else return TRUE; } - -#help_index "Info;Task" -U0 TaskRepTask(CTask *task,I64 indent) -{ - CTask *task1; - U8 *st,*desc=MStrUtil(task->task_title,SUF_SAFE_DOLLAR); - st=MStrPrint("$$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$$",task,task,task); - "%h*c%s $$TX,\"%Q...\",SCX=16$$ Mem:%08X\n",indent,CH_SPACE, - st,desc,TaskMemAlloced(task); - "%h*cFlags:%04X:%04X Time:%0.2fm\n",indent+2,CH_SPACE, - task->task_flags,task->display_flags, - task->total_time/60.0/cnts.time_stamp_freq_initial; - Free(st); - Free(desc); - task1=task->next_child_task; - while (task1!=(&task->next_child_task)(U8 *) - -offset(CTask.next_sibling_task)) { - TaskRepTask(task1,indent+2); - task1=task1->next_sibling_task; - } -} - -public U0 TaskRep() -{//Report current tasks on all cores. - I64 i; - CCPU *c; - PUSHFD - CLI - for (i=0;iseth_task,2); - } - POPFD -} diff --git a/Adam/AutoComplete/ACDict.CPP b/Adam/AutoComplete/ACFill.CPP similarity index 81% rename from Adam/AutoComplete/ACDict.CPP rename to Adam/AutoComplete/ACFill.CPP index 642b981..be16ee1 100644 --- a/Adam/AutoComplete/ACDict.CPP +++ b/Adam/AutoComplete/ACFill.CPP @@ -1,43 +1,4 @@ #help_index "AutoComplete/Dictionary" - -public U0 ACDWordsLoad() -{//Put words from word list into hash table. - I64 size; - CHashGeneric *temph; - U8 *in_ptr,*in_start,*st2; - U16 *d; - acd.num_words=0; - if (in_ptr=FileRead(ACD_WORD_FILENAME,&size)) { - in_start=in_ptr; - Free(acd.word_lst); - acd.word_lst=AMAlloc(size); - MemCpy(acd.word_lst,in_start,size); - acd.word_lst_size=size; - - while (in_ptrstr=temph+1; - temph->use_cnt=1; - temph->type=HTT_DICT_WORD; - d=in_ptr; - temph->user_data0=*d; - in_ptr+=2; - HashAdd(temph,ac.hash_table); - acd.num_words++; - } else - in_ptr+=3; - } - Free(in_start); - } -} - public U8 *ACDDefGet(U8 *st,I64 def_num=1) {//MAlloc str holding single dict definition of word. CFile *f; @@ -174,24 +135,6 @@ public U8 *ACDWordPtAt(U8 *st) return acd.word_lst; } -U0 ACDDictWordsAdd(CDoc *doc,U8 *st) -{ - I64 i; - U8 *ptr; - if (st && *st && (ptr=ACDWordPtAt(st))) { - for (i=0;istr; + if (StrLen(s)>ac.partial_len) + Auto(s+ac.partial_len); + } +} + +U0 ACMan(I64 n,CTask *parent_task=NULL) +{ + CHashAC *tempw; + CHashSrcSym *temph; + if (0<=--nstr,Fs->hash_table,HTG_SRC_SYM)) && + temph->src_link) + PopUpEd(temph->src_link,parent_task); +} diff --git a/Adam/AutoComplete/ACInit.CPP b/Adam/AutoComplete/ACInit.CPP new file mode 100644 index 0000000..d68fffe --- /dev/null +++ b/Adam/AutoComplete/ACInit.CPP @@ -0,0 +1,168 @@ +#help_index "AutoComplete/Dictionary" +acd.has_words=FileFind(ACD_WORD_FILENAME); +acd.has_defs =FileFind(ACD_DEF_FILENAME)||FileFind(ACD_DEF_FILENAME_Z); + +public U0 ACDWordsLoad() +{//Put words from word list into hash table. + I64 size; + CHashGeneric *temph; + U8 *in_ptr,*in_start,*st2; + U16 *d; + acd.num_words=0; + if (in_ptr=FileRead(ACD_WORD_FILENAME,&size)) { + in_start=in_ptr; + Free(acd.word_lst); + acd.word_lst=AMAlloc(size); + MemCpy(acd.word_lst,in_start,size); + acd.word_lst_size=size; + + while (in_ptrstr=temph+1; + temph->use_cnt=1; + temph->type=HTT_DICT_WORD; + d=in_ptr; + temph->user_data0=*d; + in_ptr+=2; + HashAdd(temph,ac.hash_table); + acd.num_words++; + } else + in_ptr+=3; + } + Free(in_start); + } +} + +#help_index "AutoComplete" +CHashAC *ACHashAdd(U8 *w) +{ + CHashAC *tempw=HashFind(w,ac.hash_table,HTT_WORD); + if (tempw) { + tempw->hits++; + return tempw; + } + tempw=ACAlloc(sizeof(CHashAC)); + tempw->str=AStrNew(w); + tempw->type=HTT_WORD; + tempw->use_cnt=1; + tempw->hits=1; + HashAdd(tempw,ac.hash_table); + ac.num_words++; + return tempw; +} + +U0 ACSingleFileAdd(U8 *buf) +{ + I64 ch; + U8 *ptr=buf,*ptr2,*ptr3; + while (TRUE) { + while (TRUE) { + if (ch=*ptr++) { + if (Bt(chars_bmp_alpha_numeric,ch)) + break; + } else + return; + } + ptr3=ptr; + ptr2=ptr; + ptr--; + while (TRUE) { + if (ch=*ptr2++) { + if (Bt(chars_bmp_alpha_numeric,ch)) + *ptr3++=ch; + else if (ch!=CH_CURSOR) + break; + } else { + ptr2--; + break; + } + } + *ptr3=0; + ACHashAdd(ptr); + ptr=ptr2; + } +} + +U0 ACMainFileLstTraverse(U8 *files_find_mask) +{ + U8 *buf; + CDirEntry *tempde,*tempde1; + try { + tempde=tempde1=FilesFind(files_find_mask, + FUF_RECURSE|FUF_JUST_TXT|FUF_JUST_FILES|FUF_CLUSTER_ORDER); + while (tempde) { + "%s\n",tempde->full_name; + buf=FileRead(tempde->full_name); + ACSingleFileAdd(buf); + Free(buf); + tempde=tempde->next; + } + } catch + Fs->catch_except=TRUE; + DirTreeDel(tempde1); +} + +U0 ACProgressTask(Bool *_start_flag) +{ + I64 start=blkdev.write_cnt; + progress1=0; + progress1_max=(Size(ACD_DEF_FILENAME_Z,"+x+s")+BLK_SIZE-1)>>BLK_SIZE_BITS; + StrCpy(progress1_desc,"Uncompressing Dictionary"); + start=blkdev.write_cnt; + *_start_flag=TRUE; + while (progress1type!=BDT_RAM) { + start_flag=FALSE; + Spawn(&ACProgressTask,&start_flag); + while (!start_flag) + Yield; + } + Move(ACD_DEF_FILENAME_Z,ACD_DEF_FILENAME); + } + + HashTableDel(ac.hash_table); + ac.hash_table=HashTableNew(2048,adam_task); + + ac.num_words=0; + Free(ac.cur_word); + ac.cur_word=NULL; + + if (mask) + ACMainFileLstTraverse(mask); + + ACDWordsLoad; + LBtr(&ac.flags,ACf_INIT_IN_PROGRESS); + AutoComplete(ON); +} + +I64 AutoCompleteSize() +{ + if (ac.hash_table) + return HashTableSize2(ac.hash_table)+MSize2(acd.word_lst); + else + return 0; +} diff --git a/Adam/AutoComplete/ACMain.CPP b/Adam/AutoComplete/ACMain.CPP deleted file mode 100644 index 1bff4a8..0000000 --- a/Adam/AutoComplete/ACMain.CPP +++ /dev/null @@ -1,347 +0,0 @@ -#help_index "AutoComplete" - -CHashAC *ACHashAdd(U8 *w) -{ - CHashAC *tempw=HashFind(w,ac.hash_table,HTT_WORD); - if (tempw) { - tempw->hits++; - return tempw; - } - tempw=ACAlloc(sizeof(CHashAC)); - tempw->str=AStrNew(w); - tempw->type=HTT_WORD; - tempw->use_cnt=1; - tempw->hits=1; - HashAdd(tempw,ac.hash_table); - ac.num_words++; - return tempw; -} - -U0 ACSingleFileAdd(U8 *buf) -{ - I64 ch; - U8 *ptr=buf,*ptr2,*ptr3; - while (TRUE) { - while (TRUE) { - if (ch=*ptr++) { - if (Bt(chars_bmp_alpha_numeric,ch)) - break; - } else - return; - } - ptr3=ptr; - ptr2=ptr; - ptr--; - while (TRUE) { - if (ch=*ptr2++) { - if (Bt(chars_bmp_alpha_numeric,ch)) - *ptr3++=ch; - else if (ch!=CH_CURSOR) - break; - } else { - ptr2--; - break; - } - } - *ptr3=0; - ACHashAdd(ptr); - ptr=ptr2; - } -} - -I64 ACSkipCrap(U8 *src,I64 len) -{ - I64 j; - j=len-1; - while (j>=0) { - if (Bt(chars_bmp_alpha_numeric,src[j])) - break; - else - j--; - } - return j+1; -} - -I64 ACPriorWordInStr(U8 *src,U8 *dst,I64 len,I64 buf_size) -{ - I64 i,j=0,k; - i=len-1; - while (i>=0) - if (!Bt(chars_bmp_alpha_numeric,src[i])) - break; - else - i--; - if (i>=-1 && len>0) - for (k=i+1;kstr; - if (StrLen(s)>ac.partial_len) - Auto(s+ac.partial_len); - } -} - -U0 ACMan(I64 n,CTask *parent_task=NULL) -{ - CHashAC *tempw; - CHashSrcSym *temph; - Bool old_preempt=Preempt; - if (0<=--nstr,Fs->hash_table,HTG_SRC_SYM)) && - temph->src_link) { - Preempt(old_preempt); - PopUpEd(temph->src_link,parent_task); - } - Preempt(old_preempt); -} - -U0 ACFillInAdd(CHashAC *tempw) -{ - I64 k; - if (ac.num_fillinshits>ac.fillin_hits[ac.num_fillins-1]) { - for (k=ac.num_fillins-1;k>=0;k--) { - if (tempw->hits<=ac.fillin_hits[k]) - break; - else { - ac.fillin_matches[k+1]=ac.fillin_matches[k]; - ac.fillin_hits[k+1] =ac.fillin_hits[k]; - } - } - ac.fillin_matches[k+1]=tempw; - ac.fillin_hits[k+1] =tempw->hits; - if (ac.num_fillinsmask && tSbody[i]; - while (tempw) { - if (!MemCmp(ac.cur_word,tempw->str,StrLen(ac.cur_word))) - ACFillInAdd(tempw); - tempw=tempw->next; - } - } - Preempt; - } - DocRst(doc,TRUE); - doc->flags|=DOCF_MIN_SIZE; - DocCursor; - Fs->border_src=BDS_CONST; - Fs->text_attr =Fs->border_attr=LTGRAY<<4+BLUE; - if (ac.cur_word && *ac.cur_word) { - DocPrint(doc,"$$PURPLE$$Word:%s$$FG$$\n",ac.cur_word); - for (i=0;istr; - DocPrint(doc,"$$GREEN$$F%02d$$FG$$ ",i+1); - if (TaskValidate(focus_task) && - (temph=HashFind(st,focus_task->hash_table,HTG_SRC_SYM)) && - temph->src_link) { - if (temph->type&HTF_PUBLIC) - DocPrint(doc,"$$RED$$"); - DocPrint(doc,"$$TX+UL+L+PU,\"%Q\",A=\"%s\"$$$$FG$$\n",st,temph->src_link); - } else - DocPrint(doc,"%s\n",st); - } - if (acd.has_words) - ACDDictWordsAdd(doc,ac.cur_word); - } else if (FileFind("::/Doc/StandBy.TXT.Z")) - DocType(doc,"::/Doc/StandBy.TXT.Z",0); - - DocRecalc(doc); - } - - if (!LBts(&Fs->display_flags,DISPLAYf_SHOW)) - WinZBufUpdate; - - Free(src); - Free(buf); - Free(buf1); -} - -U0 ACTask(I64) -{ - CTask *focus_task,*original_focus_task; - CDoc *doc; - CDocEntry *doc_e; - I64 ch; - DocTermNew; - WinHorz(51,Fs->win_right); - LBts(&Fs->display_flags,DISPLAYf_WIN_ON_TOP); - Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_BORDER - -WIF_SELF_IP_L-WIF_SELF_IP_R-WIG_DBL_CLICK; - Free(ac.cur_word); - ac.cur_word=NULL; - while (TRUE) { - original_focus_task=focus_task=sys_focus_task; - while (TaskValidate(focus_task) && - Bt(&focus_task->task_flags,TASKf_INPUT_FILTER_TASK)) - focus_task=focus_task->parent_task; - if (TaskValidate(focus_task) && (doc=DocPut(focus_task)) && - focus_task!=Fs && Bt(&focus_task->display_flags,DISPLAYf_SHOW)) { - DocLock(doc); - if (TaskValidate(focus_task) && original_focus_task==sys_focus_task && - doc && doc==DocPut(focus_task) && (doc_e=doc->cur_entry)) { - if (doc_e==doc) doc_e=doc_e->last; - while (doc_e->last!=doc && (doc_e->type_u8==DOCT_NEW_LINE || - doc_e->type_u8==DOCT_SOFT_NEW_LINE)) - doc_e=doc_e->last; - while (doc_e->last->type_u8!=DOCT_NEW_LINE && doc_e->last!=doc) - doc_e=doc_e->last; - ACPutChoices(doc,doc_e,focus_task); - } else - DocUnlock(doc); - } - Sleep(333); - if (ScanMsg(&ch,,1<cur_entry->de_flags & DOCEF_LINK) { - '' CH_SPACE; - doc->cur_entry=doc; - } - DocUnlock(doc); - } - ac.task=NULL; -} - -U0 ACMainFileLstTraverse(U8 *files_find_mask) -{ - U8 *buf; - CDirEntry *tempde,*tempde1; - try { - tempde=tempde1=FilesFind(files_find_mask, - FUF_RECURSE|FUF_JUST_TXT|FUF_JUST_FILES|FUF_CLUSTER_ORDER); - while (tempde) { - "%s\n",tempde->full_name; - buf=FileRead(tempde->full_name); - ACSingleFileAdd(buf); - Free(buf); - tempde=tempde->next; - } - } catch - Fs->catch_except=TRUE; - DirTreeDel(tempde1); -} - -public Bool AutoComplete(Bool val=OFF) -{//Turn AutoComplete OFF (or ON). - Bool old_autocomplete=FALSE, - old_preempt=Preempt; - if (val) { - while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS)) - Sleep(10); - if (TaskValidate(ac.task)) - old_autocomplete=TRUE; - else { - ac.task=Spawn(&ACTask,NULL,"AutoComplete"); - TaskWait(ac.task); - } - WinToTop(ac.task); - } else { - if (TaskValidate(ac.task)) { - old_autocomplete=TRUE; - Kill(ac.task); - while (TaskValidate(ac.task)) - Yield; - ac.task=NULL; - } - } - Preempt(old_preempt); - return old_autocomplete; -} - -U0 ACProgressTask(Bool *_start_flag) -{ - I64 start=dsk.write_cnt; - progress1=0; - progress1_max=(Size(ACD_DEF_FILENAME_Z,"+x+s")+BLK_SIZE-1)>>BLK_SIZE_BITS; - StrCpy(progress1_desc,"Uncompressing Dictionary"); - start=dsk.write_cnt; - *_start_flag=TRUE; - while (progress1type!=BDT_RAM) { - start_flag=FALSE; - Spawn(&ACProgressTask,&start_flag); - while (!start_flag) - Yield; - } - Move(ACD_DEF_FILENAME_Z,ACD_DEF_FILENAME); - } - - HashTableDel(ac.hash_table); - ac.hash_table=HashTableNew(2048,adam_task); - - ac.num_words=0; - Free(ac.cur_word); - ac.cur_word=NULL; - - if (mask) - ACMainFileLstTraverse(mask); - - ACDWordsLoad; - LBtr(&ac.flags,ACf_INIT_IN_PROGRESS); - AutoComplete(ON); -} - -I64 AutoCompleteSize() -{ - if (ac.hash_table) - return HashTableSize2(ac.hash_table)+MSize2(acd.word_lst); - else - return 0; -} diff --git a/Adam/AutoComplete/ACTask.CPP b/Adam/AutoComplete/ACTask.CPP new file mode 100644 index 0000000..6b99464 --- /dev/null +++ b/Adam/AutoComplete/ACTask.CPP @@ -0,0 +1,282 @@ +#help_index "AutoComplete/Dictionary" +U0 ACDDictWordsAdd(U8 *st) +{ + I64 i; + U8 *ptr; + if (st && *st && (ptr=ACDWordPtAt(st))) { + for (i=0;iflags|=DOCF_MIN_SIZE; + Fs->border_src=BDS_CONST; + Fs->text_attr =Fs->border_attr=LTGRAY<<4+BLUE; + LBtr(&Fs->display_flags,DISPLAYf_SHOW); + WinHorz(left,Fs->win_right); + WinVert(top,Fs->win_bottom); + DocCursor; +} + +I64 ACSkipCrap(U8 *src,I64 len) +{ + I64 j; + j=len-1; + while (j>=0) { + if (Bt(chars_bmp_alpha_numeric,src[j])) + break; + else + j--; + } + return j+1; +} + +I64 ACPriorWordInStr(U8 *src,U8 *dst,I64 len,I64 buf_size) +{ + I64 i,j=0,k; + i=len-1; + while (i>=0) + if (!Bt(chars_bmp_alpha_numeric,src[i])) + break; + else + i--; + if (i>=-1 && len>0) + for (k=i+1;khits>ac.fillin_hits[ac.num_fillins-1]) { + for (k=ac.num_fillins-1;k>=0;k--) { + if (tempw->hits<=ac.fillin_hits[k]) + break; + else { + ac.fillin_matches[k+1]=ac.fillin_matches[k]; + ac.fillin_hits[k+1] =ac.fillin_hits[k]; + } + } + ac.fillin_matches[k+1]=tempw; + ac.fillin_hits[k+1] =tempw->hits; + if (ac.num_fillinsmask && tSbody[i]; + while (tempw) { + if (!MemCmp(ac.cur_word,tempw->str,StrLen(ac.cur_word))) + ACFillInAdd(tempw); + tempw=tempw->next; + } + } + ACDocRst(51,13); + if (ac.cur_word && *ac.cur_word) { + "$$PURPLE$$Word:%s$$FG$$\n",ac.cur_word; + for (i=0;istr; + "$$GREEN$$F%02d$$FG$$ ",i+1; + if (TaskValidate(focus_task) && + (temph=HashFind(st,focus_task->hash_table,HTG_SRC_SYM)) && + temph->src_link) { + if (temph->type&HTF_PUBLIC) + "$$RED$$"; + "$$TX+UL+L+PU,\"%Q\",A=\"%s\"$$$$FG$$\n",st,temph->src_link; + } else + "%s\n",st; + } + if (acd.has_words) + ACDDictWordsAdd(ac.cur_word); + } else if (FileFind("::/Doc/StandBy.TXT.Z")) + Type("::/Doc/StandBy.TXT.Z",0); + } + Free(src); + Free(buf); + Free(buf1); +} + +U0 ACTaskNormal(I64 sc,I64 last_sc, + CTask *focus_task,CTask *original_focus_task) +{ + CDoc *doc; + CDocEntry *doc_e; + if ((doc=DocPut(focus_task)) && + focus_task!=Fs && Bt(&focus_task->display_flags,DISPLAYf_SHOW)) { + DocLock(doc); + if (TaskValidate(focus_task) && original_focus_task==sys_focus_task && + doc && doc==DocPut(focus_task) && (doc_e=doc->cur_entry)) { + if (doc_e==doc) doc_e=doc_e->last; + while (doc_e->last!=doc && (doc_e->type_u8==DOCT_NEW_LINE || + doc_e->type_u8==DOCT_SOFT_NEW_LINE)) + doc_e=doc_e->last; + while (doc_e->last->type_u8!=DOCT_NEW_LINE && doc_e->last!=doc) + doc_e=doc_e->last; + ACPutChoices(doc,doc_e,focus_task,ToBool(sc!=last_sc)); + } else + DocUnlock(doc); + } + if (!LBts(&Fs->display_flags,DISPLAYf_SHOW)) + WinZBufUpdate; +} + +U0 ACTaskCtrl(I64 sc,I64 last_sc, + CTask *focus_task,CTask *original_focus_task) +{ + if (TaskValidate(focus_task) && + (focus_task->scroll_x || focus_task->scroll_y)) { + if (LBtr(&Fs->display_flags,DISPLAYf_SHOW)) + WinZBufUpdate; + } else { + if (sc!=last_sc) { + if (sc&SCF_ALT) { + ACDocRst(27,3); + if (TaskValidate(original_focus_task) && + !Bt(&original_focus_task->win_inhibit,WIf_SELF_KEY_DESC)) + KeyMapFamily(original_focus_task,0, + ToBool(!(sc&SCF_SHIFT)),ToBool(sc&SCF_SHIFT)); + KeyMapCtrlAltFamily( + ToBool(!(sc&SCF_SHIFT)),ToBool(sc&SCF_SHIFT)); + } else if (TaskValidate(original_focus_task) && + !Bt(&original_focus_task->win_inhibit,WIf_SELF_KEY_DESC)) { + ACDocRst(27,3); + KeyMapFamily(original_focus_task,SCF_CTRL, + ToBool(!(sc&SCF_SHIFT)),ToBool(sc&SCF_SHIFT)); + } + } + if (!LBts(&Fs->display_flags,DISPLAYf_SHOW)) + WinZBufUpdate; + } +} + +U0 ACTaskAlt(I64 sc,I64 last_sc, + CTask *,CTask *original_focus_task) +{ + if (sc!=last_sc && TaskValidate(original_focus_task) && + !Bt(&original_focus_task->win_inhibit,WIf_SELF_KEY_DESC)) { + ACDocRst(27,3); + KeyMapFamily(original_focus_task,SCF_ALT, + ToBool(!(sc&SCF_SHIFT)),ToBool(sc&SCF_SHIFT)); + } + if (!LBts(&Fs->display_flags,DISPLAYf_SHOW)) + WinZBufUpdate; +} + +U0 ACTaskEndCB() +{ + ac.task=NULL; + Exit; +} + +U0 ACTask(I64) +{ + CTask *focus_task,*original_focus_task; + I64 ch,scan_code=0,last_scan_code=0; + CDoc *doc; + Fs->task_end_cb=&ACTaskEndCB; + DocTermNew; + LBts(&Fs->display_flags,DISPLAYf_SHOW); + WinHorz(51,Fs->win_right); + LBts(&Fs->display_flags,DISPLAYf_WIN_ON_TOP); + Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_BORDER + -WIF_SELF_IP_L-WIF_SELF_IP_R-WIG_DBL_CLICK; + Free(ac.cur_word); + ac.cur_word=NULL; + while (TRUE) { + if (scan_code&(SCF_CTRL|SCF_ALT) || + GetTSC>KbdMouseEvtTime+cnts.time_stamp_freq>>1) { + last_scan_code=scan_code; + scan_code=kbd.scan_code; + } + original_focus_task=focus_task=sys_focus_task; + while (TaskValidate(focus_task) && + Bt(&focus_task->task_flags,TASKf_INPUT_FILTER_TASK)) + focus_task=focus_task->parent_task; + if (scan_code&SCF_CTRL) + ACTaskCtrl(scan_code,last_scan_code,focus_task,original_focus_task); + else if (TaskValidate(focus_task)) { + if (scan_code&SCF_ALT) + ACTaskAlt(scan_code,last_scan_code,focus_task,original_focus_task); + else + ACTaskNormal(scan_code,last_scan_code,focus_task,original_focus_task); + } + Sleep(333); + if (ScanMsg(&ch,,1<cur_entry->de_flags & DOCEF_LINK) { + '' CH_SPACE; + doc->cur_entry=doc; + } + DocUnlock(doc); + } +} + +public Bool AutoComplete(Bool val=OFF) +{//Turn AutoComplete OFF or ON. + Bool old_autocomplete=FALSE; + if (val) { + while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS)) + Sleep(10); + if (TaskValidate(ac.task)) + old_autocomplete=TRUE; + else { + ac.task=Spawn(&ACTask,NULL,"AutoComplete"); + TaskWait(ac.task); + } + WinToTop(ac.task); + } else { + if (TaskValidate(ac.task)) { + old_autocomplete=TRUE; + Kill(ac.task); + while (TaskValidate(ac.task)) + Yield; + } + } + return old_autocomplete; +} + diff --git a/Adam/AutoComplete/AutoComplete.CPP b/Adam/AutoComplete/AutoComplete.CPP deleted file mode 100644 index e903274..0000000 --- a/Adam/AutoComplete/AutoComplete.CPP +++ /dev/null @@ -1,67 +0,0 @@ -#help_index "AutoComplete" -#help_file "::/Doc/AutoComplete" - -//See $LK,"::/Doc/AutoComplete.TXT"$ - -#define ACf_INIT_IN_PROGRESS 0 - -#define AC_MAX_FILLINS 10 - -public class CAutoCompleteGlbls -{ - I64 num_words; - CHashTable *hash_table; - U8 *cur_word; - I64 flags; - CTask *task; - I64 partial_len,num_fillins, - fillin_hits [AC_MAX_FILLINS+1]; - CHashAC *fillin_matches[AC_MAX_FILLINS+1]; - -} ac={0,NULL,NULL,0,NULL,0,0, - {0,0,0,0,0,0,0,0,0,0,0}, - {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}; - -//Dictionary Stuff -#help_index "AutoComplete/Dictionary" - -#define ACD_WORD_FILENAME "/Adam/AutoComplete/ACWords.DAT.Z" -#define ACD_DEF_FILENAME "/Adam/AutoComplete/ACDefs.DAT" -#define ACD_DEF_FILENAME_Z "/Adam/AutoComplete/ACDefs.DAT.Z" - -#define ACD_H1 0 -#define ACD_H1_END 1 -#define ACD_DEF 2 -#define ACD_DEF_END 3 -#define ACD_PRONUNCIATION 4 -#define ACD_PRONUNCIATION_END 5 -#define ACD_POS 6 -#define ACD_POS_END 7 -#define ACD_EXTRA 8 -#define ACD_EXTRA_END 9 -#define ACD_BLK_SIZE 0x4000 - -#define ACD_END_CHAR 0x00 -#define ACD_WORD_CHAR 0x01 -#define ACD_DEF_CHAR 0x02 -#define ACD_PRONUNCIATION_CHAR 0x03 -#define ACD_POS_CHAR 0x04 -#define ACD_EXTRA_CHAR 0x05 - -#define ACD_MAX_FILLINS 10 - -public class CAutoCompleteDictGlbls -{ - U8 *word_lst; - I64 word_lst_size,num_words,num_fillins; - U8 *fillins[ACD_MAX_FILLINS]; - Bool has_words,has_defs; -} acd={NULL,0,0,0,{0,0,0,0,0,0,0,0,0,0},FALSE,FALSE}; -acd.has_words=FileFind(ACD_WORD_FILENAME); -acd.has_defs =FileFind(ACD_DEF_FILENAME)||FileFind(ACD_DEF_FILENAME_Z); - -extern U0 ACDWordsLoad(); -extern U0 ACDDictWordsAdd(CDoc *doc,U8 *st); - -#include "ACMain" -#include "ACDict" diff --git a/Adam/AutoComplete/MakeAC.CPP b/Adam/AutoComplete/MakeAC.CPP new file mode 100644 index 0000000..25333b8 --- /dev/null +++ b/Adam/AutoComplete/MakeAC.CPP @@ -0,0 +1,6 @@ +//See $LK,"::/Doc/AutoComplete.TXT"$ +Cd(__DIR__);; +#include "ACFill" +#include "ACTask" +#include "ACInit" +Cd("..");; diff --git a/Adam/Boot/BootCD.CPP b/Adam/Boot/BootCD.CPP deleted file mode 100644 index 4f89ac1..0000000 --- a/Adam/Boot/BootCD.CPP +++ /dev/null @@ -1,164 +0,0 @@ -#define CD_BOOT_LOADER_SIZE CD_BLK_SIZE*1 //Max CD_BLK_SIZE*4, I think -#define BOOT_HIGH_LOC_CD ((BOOT_RAM_LIMIT-\ - (BOOT_STK_SIZE+CD_BOOT_LOADER_SIZE))>>4) - -DefinePrint( - "DD_BOOT_HIGH_LOC_CD","%08X",BOOT_HIGH_LOC_CD<<4); -DefinePrint( - "DD_BOOT_HIGH_LOC_CD_END","%08X",BOOT_RAM_LIMIT-1); - -asm { -USE16 -BCD_START:: -//DL is supposed to have the BIOS drive number - CLD - MOV AX,BOOT_HIGH_LOC_CD - MOV ES,AX - - CLI - MOV SS,AX - MOV SP,BOOT_STK_SIZE+CD_BOOT_LOADER_SIZE - STI - - CALL BCD_GET_IP -BCD_GET_IP: - POP BX - SUB BX,BCD_GET_IP-BCD_START - SHR BX,4 -//This copies this bootloader's code to 0x$TX,"00096600",D="DD_BOOT_HIGH_LOC_CD"$ - MOV AX,CS - ADD AX,BX - MOV DS,AX - MOV CX,CD_BOOT_LOADER_SIZE - XOR SI,SI - XOR DI,DI - REP_MOVSB - - MOV AX,BOOT_HIGH_LOC_CD - MOV DS,AX - -//My assembler doesn't support 16-bit very well. - DU8 0xEA; //JMP BOOT_HIGH_LOC_CD:BCD_MAIN - DU16 BCD_MAIN-BCD_START,BOOT_HIGH_LOC_CD; - -BCD_BIOS_DRV_NUM: DU8 0; -BCD_PAGE: DU8 0; - -BCD_DAP: DU8 16,0,1,0; //One blk at a time -BCD_DAP_BUF: DU16 0,0; -BCD_DAP_BLK: DU64 0; - -BCD_TEMPLEOS_MSG: - DU8 "Loading TempleOS",0; - -BCD_NOT64_MSG: - DU8 "TempleOS requires a 64-bit capable processor.\n\r",0; - -//These get patched. -BCD_BLK_LO:: DU16 0; -BCD_BLK_HI:: DU16 0; -BCD_BLK_CNT:: DU16 0; - -BCD_PROGRESS_STEP:: DU32 0; -BCD_PROGRESS_VAL:: DU32 0; - -BCD_PUTCHAR:: - MOV AH,0xE - MOV BL,7 //Might be foreground color on some BIOS's - MOV BH,U8 [BCD_PAGE-BCD_START] - INT 0x10 -BCD_RET:: - RET -BCD_PUTS:: -@@1: LODSB - TEST AL,AL - JZ BCD_RET - CALL BCD_PUTCHAR - JMP @@1 - -BCD_MAIN:: - MOV U8 [BCD_BIOS_DRV_NUM-BCD_START],DL //Passed in by BIOS - - MOV AH,0xF - INT 0x10 - MOV U8 [BCD_PAGE-BCD_START],BH //video page - - MOV EAX,0x80000000 - CPUID - CMP EAX,0x80000001 - JB @@05 - - MOV EAX,0x80000001 - CPUID - BT EDX,29 - JC @@15 -@@05: MOV SI,BCD_NOT64_MSG-BCD_START - CALL BCD_PUTS -@@10: JMP @@10 - -@@15: MOV SI,BCD_TEMPLEOS_MSG-BCD_START - CALL BCD_PUTS - - MOV AX,BOOT_RAM_BASE/16 - MOV ES,AX - XOR ECX,ECX - MOV CX,U16 [BCD_BLK_CNT-BCD_START] - - MOV EAX,(80-7-9)*65536 //80 columns - XOR EDX,EDX - DIV ECX - MOV U32 [BCD_PROGRESS_STEP-BCD_START],EAX - MOV U32 [BCD_PROGRESS_VAL-BCD_START],0 - - MOV AX,U16 [BCD_BLK_LO-BCD_START] - MOV DX,U16 [BCD_BLK_HI-BCD_START] - -@@20: PUSH CX //Blk cnt - -//READ BLK - PUSH AX //Blk lo - PUSH DX //Blk hi - PUSH ES //Buf seg - MOV U16 [BCD_DAP_BLK-BCD_START],AX - MOV U16 [BCD_DAP_BLK+2-BCD_START],DX - MOV AX,ES - MOV U16 [BCD_DAP_BUF+2-BCD_START],AX //ES:0000 - MOV SI,BCD_DAP-BCD_START //DS:SI=DAP - MOV AH,0x42 - MOV DL,U8 [BCD_BIOS_DRV_NUM-BCD_START] - INT 0x13 - - POP AX //ES - ADD AX,CD_BLK_SIZE/16 - MOV ES,AX - POP DX - POP AX - INC AX - JNZ @@25 - INC DX - -@@25: PUSH AX - MOV BX,U16 [BCD_PROGRESS_VAL+2-BCD_START] - MOV EAX,U32 [BCD_PROGRESS_STEP-BCD_START] - ADD U32 [BCD_PROGRESS_VAL-BCD_START],EAX - CMP U16 [BCD_PROGRESS_VAL+2-BCD_START],BX - JE @@30 - MOV AL,'.' - CALL BCD_PUTCHAR -@@30: POP AX - - POP CX - LOOP @@20 - -//See $LK,"BootCdProbe",A="MN:BootCdProbe"$(). - MOV EBX,U32 [BCD_BLK_LO-BCD_START] //TODO: oops overflow? - SHL EBX,16 - MOV BX,BOOT_SRC_CDROM //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$ - -//My assembler doesn't support 16-bit very well. - DU8 0xEA; //JMP BOOT_RAM_BASE:0000 - DU16 0,BOOT_RAM_BASE/16; -//Continues here $LK,"::/Kernel/KStart.CPP",A="FL:::/Kernel/KStart.CPP,1"$ -BCD_END:: -#assert BCD_END-BCD_STARTnext_ctrl; while (c!=&haystack_task->next_ctrl) { - if (c->type==needle_type) { - Preempt(old_preempt); + if (c->type==needle_type) return c; - } c=c->next; } - Preempt(old_preempt); return NULL; } U0 CtrlsUpdate(CTask *task) { CCtrl *c; - Bool old_preempt=Preempt; c=task->next_ctrl; while (c!=&task->next_ctrl) { if (c->update_derived_vals) @@ -35,7 +30,6 @@ U0 CtrlsUpdate(CTask *task) } c=c->next; } - Preempt(old_preempt); } fp_update_ctrls=&CtrlsUpdate; @@ -64,7 +58,6 @@ U0 DrawCtrls(CTask *task) { CCtrl *c; CDC *dc=DCAlias(gr.dc2,task); - Bool old_preempt=Preempt; c=task->next_ctrl; while (c!=&task->next_ctrl) { if (c->flags&CTRLF_SHOW) { @@ -107,7 +100,6 @@ U0 DrawCtrls(CTask *task) } c=c->next; } - Preempt(old_preempt); DCDel(dc); } @@ -116,7 +108,6 @@ U0 DrawCtrls(CTask *task) U0 DrawWinScroll(CDC *dc,CCtrl *c) { CWinScroll *s=c->state; - Bool old_preempt=Preempt; if (c->flags&CTRLF_CLICKED) dc->color=s->color>>4; @@ -129,7 +120,6 @@ U0 DrawWinScroll(CDC *dc,CCtrl *c) else dc->color=s->color>>4; GrRect(dc,c->left+2,c->top+2,c->right-c->left+1-4,c->bottom-c->top+1-4); - Preempt(old_preempt); } U0 WinDerivedScrollValsUpdate(CCtrl *c) @@ -208,7 +198,6 @@ U0 WheelChangeWinScroll(CCtrl *c,I64 delta) U0 WinScrollsInit(CTask *task) { - Bool old_preempt=Preempt; CCtrl *c; if (!CtrlFindUnique(task,CTRLT_WIN_HSCROLL)) { @@ -236,7 +225,6 @@ U0 WinScrollsInit(CTask *task) QueIns(c,task->last_ctrl); } TaskDerivedValsUpdate(task); - Preempt(old_preempt); } #define VIEWANGLES_SPACING 22 #define VIEWANGLES_RANGE 48 @@ -363,7 +351,6 @@ U0 LeftClickViewAngles(CCtrl *c,I64 x,I64 y,Bool) public CCtrl *ViewAnglesNew(CTask *task=NULL) {//Create view angle ctrl. See $LK,"::/Demo/Graphics/Shading.CPP"$. - Bool old_preempt; CCtrl *c; CViewAngles *s; if (!task) task=Fs; @@ -383,10 +370,8 @@ public CCtrl *ViewAnglesNew(CTask *task=NULL) c->draw_it=&DrawViewAnglesCtrl; c->left_click=&LeftClickViewAngles; c->update_derived_vals=&UpdateDerivedViewAnglesCtrl; - old_preempt=Preempt; QueIns(c,task->last_ctrl); TaskDerivedValsUpdate(task); - Preempt(old_preempt); } return c; } @@ -394,12 +379,10 @@ public CCtrl *ViewAnglesNew(CTask *task=NULL) public U0 ViewAnglesDel(CTask *task=NULL) {//Free view angle ctrl. CCtrl *c; - Bool old_preempt=Preempt; if (!task) task=Fs; if (c=CtrlFindUnique(task,CTRLT_VIEWING_ANGLES)) { QueRem(c); Free(c->state); Free(c); } - Preempt(old_preempt); } diff --git a/Adam/Ctrls/CtrlsButton.CPP b/Adam/Ctrls/CtrlsButton.CPP index d0d3cb6..1a83595 100644 --- a/Adam/Ctrls/CtrlsButton.CPP +++ b/Adam/Ctrls/CtrlsButton.CPP @@ -41,9 +41,8 @@ U0 LeftClickCtrlButton(CCtrl *c,I64,I64,Bool down) public CCtrl *CtrlButtonNew(I64 x,I64 y,I64 width=-1,I64 height=-1, I64 num_states=1,U8 *state_texts, - I32 state_colors[],CCtrlButtonState *_s=NULL) + I32 *state_colors,CCtrlButtonState *_s=NULL) {//Create button ctrl. See $LK,"::/Apps/Strut/Strut.CPP"$. - Bool old_preempt; CCtrl *result; CCtrlButtonState *s; I64 i,j,l; @@ -79,17 +78,13 @@ public CCtrl *CtrlButtonNew(I64 x,I64 y,I64 width=-1,I64 height=-1, result->top=y; result->right=result->left+width-1; result->bottom=result->top+height-1; - old_preempt=Preempt; QueIns(result,Fs->last_ctrl); - Preempt(old_preempt); return result; } public U0 CtrlButtonDel(CCtrl *c) {//Free button ctrl. - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); if (!(c->flags&BTF_DONT_FREE)) Free(c->state); Free(c); diff --git a/Adam/Ctrls/CtrlsSlider.CPP b/Adam/Ctrls/CtrlsSlider.CPP index b3af421..cadab1f 100644 --- a/Adam/Ctrls/CtrlsSlider.CPP +++ b/Adam/Ctrls/CtrlsSlider.CPP @@ -174,7 +174,6 @@ U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool down) CCtrl *SliderNew() { - Bool old_preempt; CCtrl *c=CAlloc(sizeof(CCtrl)); c->win_task=Fs; c->flags=CTRLF_SHOW|CTRLF_CAPTURE_LEFT_IP; @@ -189,18 +188,14 @@ CCtrl *SliderNew() " c->draw_it=&DrawCtrlSlider; c->left_click=&LeftClickSlider; c->update_derived_vals=&UpdateDerivedCtrlSlider; - old_preempt=Preempt; QueIns(c,Fs->last_ctrl); TaskDerivedValsUpdate; - Preempt(old_preempt); return c; } U0 SliderDel(CCtrl *c) { - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); "); if (!*m->glbl_name) DocPrint(doc," Free(c->state);\n"); diff --git a/Adam/Ctrls/Ctrls.CPP b/Adam/Ctrls/MakeCtrls.CPP similarity index 81% rename from Adam/Ctrls/Ctrls.CPP rename to Adam/Ctrls/MakeCtrls.CPP index 7410cc6..da3e676 100644 --- a/Adam/Ctrls/Ctrls.CPP +++ b/Adam/Ctrls/MakeCtrls.CPP @@ -1,6 +1,8 @@ +Cd(__DIR__);; + #help_index "Ctrls" #help_file "::/Doc/Ctrls" - #include "CtrlsA" #include "CtrlsButton" #include "CtrlsSlider" +Cd("..");; diff --git a/Adam/DolDoc/Doc.CPP b/Adam/DolDoc/Doc.CPP deleted file mode 100644 index fa86de9..0000000 --- a/Adam/DolDoc/Doc.CPP +++ /dev/null @@ -1,103 +0,0 @@ -#help_index "DolDoc" -#help_file "::/Doc/DolDoc" - -/*$AN,"",A="Doc"$ -TempleOS DolDoc's can have "cursor movement" cmds which can move the cursor up -the screen and layer on existing text. It can also have callback funs which -supply live, changing text. For these reasons, you can't assume you know -where the visible portion of the document is and must process much -of the document each time it is placed on the screen, becoming CPU -intensive on big documents. -See $LK,"::/Doc/DolDocOverview.TXT"$ -*/ - -extern I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e); -extern I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e); -extern U0 DocPrintPartial(CDoc *doc,U8 *fmt,...); -extern U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE); -extern U0 EdUndoFilter(CDoc *doc); -extern U8 *PopUpPickLst(U8 *lst); - -#define DHT_DOC_CMD 1 -#define DHT_DOC_FLAG 2 -#define DHT_COLOR 4 - -/* See $LK,"TempleOS Link Types",A="MN:ST_LINK_TYPES"$. - -"filename" -"FI:filename" -"FA:haystack_filename,needle_anchor_str" -"FF:haystack_filename,needle_str" -"FF:haystack_filename,needle_str:occurnum" -"FL:filename,linenum" -"MN:SymName" -"PI:filename" -"PF:haystack_filename,needle_str" -"PF:haystack_filename,needle_str:occurnum" -"PL:filename,linenum" -"BF:haystack_bible_book,needle_str" -"DF:word" -"DF:word,defnum" -"HI:index" -"AD:code_address_number" - - To edit a doc structure already in memory. See $LK,"SpriteEdText",A="MN:SpriteEdText"$(). -"AI:doc_address" -"AA:haystack_doc_address,needle_anchor_str" -"AF:haystack_doc_address,needle_str" -"AF:haystack_doc_address,needle_str:occurnum" -"AL:doc_address,linenum" - -*/ -#define LK_FILE 0 -#define LK_FILE_ANCHOR 1 -#define LK_FILE_FIND 2 -#define LK_FILE_LINE 3 -#define LK_MAN_PAGE 4 -#define LK_PLAIN 5 -#define LK_PLAIN_FIND 6 -#define LK_PLAIN_LINE 7 -#define LK_BIBLE_FIND 8 -#define LK_DEF 9 -#define LK_HELP_INDEX 10 -#define LK_ADDR 11 -#define LK_DOC 12 //See $LK,"SpriteEdText",A="MN:SpriteEdText"$() -#define LK_DOC_ANCHOR 13 -#define LK_DOC_FIND 14 -#define LK_DOC_LINE 15 - -#define LK_PLACE_ANCHOR 16 - -public class CDolDocGlbls -{ - CHashTable *hash; - I64 dft_de_flags [DOCT_NUM_TYPES], - type_flags_nontag_invisible [(DOCT_NUM_TYPES+63)/64], - type_flags_form [(DOCT_NUM_TYPES+63)/64], - type_flags_data [(DOCT_NUM_TYPES+63)/64], - clean_scan_codes [4]; - I32 dft_type_flags [DOCT_NUM_TYPES]; -} doldoc; -MemSet(&doldoc,0,sizeof(CDolDocGlbls)); - -#help_index "God" -#define BIBLE_FILENAME "::/Misc/Bible.TXT.Z" - -#include "DocNew" -#include "DocPlain" -#include "DocInit" -#include "DocHighlight" -#include "DocRecalcA" -#include "DocRecalcB" -sys_clipboard_doc=DocNew; -#include "DocFile" -#include "DocOpt" -#include "DocPopUp" -#include "DocCtrlL" -#include "DocMacro" -#include "DocFind" -#include "DocEdA" -#include "DocEdB" -#include "DocCodeTools" -#include "DocTree" -#include "DocMain" diff --git a/Adam/DolDoc/DocBin.CPP b/Adam/DolDoc/DocBin.CPP new file mode 100644 index 0000000..f2b60e6 --- /dev/null +++ b/Adam/DolDoc/DocBin.CPP @@ -0,0 +1,142 @@ +#help_index "DolDoc/Bin" + +CDocBin *DocBinFindNum(CDoc *haystack_doc,I64 needle_num) +{ + CDocBin *b=haystack_doc->bin_root.next; + while (b!=&haystack_doc->bin_root) { + if (b->num==needle_num) + return b; + b=b->next; + } + return NULL; +} + +CDocBin *DocBinFindTag(CDoc *haystack_doc,U8 *needle_tag) +{ + CDocBin *b; + if (needle_tag) { + b=haystack_doc->bin_root.next; + while (b!=&haystack_doc->bin_root) { + if (b->tag && !StrCmp(b->tag,needle_tag)) + return b; + b=b->next; + } + } + return NULL; +} + +U0 DocBinsValidate(CDoc *doc) +{ + Bool unlock=DocLock(doc); + CDocBin *b,*b1; + CDocEntry *doc_e,*doc_e2; + I64 renum_num=0; + b=doc->bin_root.next; + while (b!=&doc->bin_root) { + b->use_cnt=0; + b->temp_use_cnt=0; + b->renum_num=-1; + Free(b->tag); + b->tag=NULL; + b=b->next; + } + doc_e=doc->root.next; + while (doc_e!=doc) { + doc_e2=doc_e->next; + if (doc_e->de_flags & DOCEF_HAS_BIN) { + if (b=doc_e->bin_data=DocBinFindNum(doc,doc_e->bin_num)) { + if (doc_e->de_flags & DOCEF_BIN_PTR_LINK) + b->temp_use_cnt=MAX_I32; + if (!b->use_cnt++) + b->renum_num=++renum_num; + doc_e->bin_num=b->renum_num; + if (!b->tag && doc_e->de_flags&DOCEF_TAG && doc_e->tag && *doc_e->tag) + b->tag=StrNew(doc_e->tag,doc->mem_task); + } else { + RawPrint(3000,"Bin Not Found"); + doc_e->type=doc_e->de_flags=0; + doc_e->type_u8=DOCT_ERROR; + } + } + doc_e=doc_e2; + } + + b=doc->bin_root.next; + doc->cur_bin_num=1; + while (b!=&doc->bin_root) { + b1=b->next; + if (!b->use_cnt) { + QueRem(b); + Free(b->data); + Free(b); + } else { + b->num=b->renum_num; + if (b->num>=doc->cur_bin_num) + doc->cur_bin_num=b->num+1; + } + b=b1; + } + if (unlock) + DocUnlock(doc); +} + +U0 DocBinDel(CDoc *doc,CDocBin *b) +{ + if (doc && b && b->use_cnt) { + b->use_cnt--; + if (!b->use_cnt) { + QueRem(b); + Free(b->tag); + Free(b->data); + Free(b); + } + } else + RawPrint(3000,"DocBinDel"); +} + +I64 DocBinPtrRst(CDoc *doc,CDocEntry *doc_e) +{ + U8 *st,*st2; + CDoc *doc2; + CDocBin *tempb,*tempb2; + I64 i,bin_num=0; + if (doc_e->de_flags&DOCEF_HAS_BIN && + doc_e->bin_ptr_link && StrLen(doc_e->bin_ptr_link)) { + bin_num=doc_e->bin_num; + st=StrNew(doc_e->bin_ptr_link); + st2=StrNew(st); + StrLastRem(st,",",st2); + i=Str2I64(st2); + if (i>0||*st2) { + doc2=DocRead(st); + if (i>0 && (tempb2=DocBinFindNum(doc2,i)) || + i==0 && (tempb2=DocBinFindTag(doc2,st2))) { + i=1; + if (bin_num>0) { + if (tempb=DocBinFindNum(doc,bin_num)) { + i=tempb->use_cnt; + DocBinDel(doc,tempb); + } + } else + bin_num=doc->cur_bin_num++; + tempb=MAllocIdentical(tempb2,doc->mem_task); + tempb->use_cnt=i; + tempb->data=MAllocIdentical(tempb2->data,doc->mem_task); + tempb->num=bin_num; + doc_e->bin_data=tempb; + if (doc_e->de_flags&DOCEF_TAG && doc_e->tag && *doc_e->tag) + tempb->tag=StrNew(doc_e->tag,doc->mem_task); + else + tempb->tag=NULL; + QueIns(tempb,doc->bin_root.last); + } else + bin_num=0; + DocDel(doc2); + } else + bin_num=0; + Free(st2); + Free(st); + doc_e->bin_num=bin_num; + } + return bin_num; +} diff --git a/Adam/DolDoc/DocEdA.CPP b/Adam/DolDoc/DocChar.CPP similarity index 85% rename from Adam/DolDoc/DocEdA.CPP rename to Adam/DolDoc/DocChar.CPP index 04786e9..e7ac5b7 100644 --- a/Adam/DolDoc/DocEdA.CPP +++ b/Adam/DolDoc/DocChar.CPP @@ -456,8 +456,8 @@ U0 EdInsChar(I64 ch,I64 sc,CDoc *doc) goto ic_cont; } else { doc->dollar_buf[doc->dollar_buf_ptr]=0; - DocPrint(doc,doc->dollar_buf); doc->flags&=~DOCF_IN_DOLLAR; + DocPrint(doc,doc->dollar_buf); doc->dollar_buf_ptr=0; goto ic_done; } @@ -646,125 +646,3 @@ U0 EdDelLine(CDoc *doc) doc_ce=doc_ce2; } } - -U0 DocEntryToggle(CDoc *doc) -{ - Bool unlock=DocLock(doc),old_color_names; - CDocEntry *doc_ce=doc->cur_entry,*cl1,*doc_ce2; - U8 ch,*st,*st2; - I64 i,j,k; - if (doc_ce!=doc && - !(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { - if (doc_ce->type_u8==DOCT_TEXT && !(doc_ce->de_flags & - ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT| - DOCEF_SKIP|DOCEF_HARD_SKIP|DOCEF_FILTER_SKIP)) && - !(doc_ce->type&DOCG_BL_IV_UL)) { - doc_ce2=doc_ce->last; - for (k=0;k<20;k++) { - if (doc_ce2!=doc) { - cl1=doc_ce2->last; - if (doc_ce2->type_u8==DOCT_TEXT && - doc_ce->de_flags==doc_ce2->de_flags && - doc_ce->type==doc_ce2->type) { - i=StrLen(doc_ce2->tag); - j=StrLen(doc_ce->tag); - st=MAlloc(i+j+1,doc->mem_task); - MemCpy(st,doc_ce2->tag,i); - MemCpy(st+i,doc_ce->tag,j+1); - Free(doc_ce->tag); - doc_ce->tag=st; - doc_ce->max_col=i+j; - doc->cur_col+=i; - DocEntryDel(doc,doc_ce2); - } else if (doc_ce2->type_u8==DOCT_SOFT_NEW_LINE) - DocEntryDel(doc,doc_ce2); - else - break; - doc_ce2=cl1; - } else - break; - } - doc_ce2=doc_ce->next; - for (k=0;k<20;k++) { - if (doc_ce2!=doc) { - cl1=doc_ce2->next; - if (doc_ce2->type_u8==DOCT_TEXT && - doc_ce->de_flags==doc_ce2->de_flags && - doc_ce->type==doc_ce2->type) { - i=StrLen(doc_ce->tag); - j=StrLen(doc_ce2->tag); - st=MAlloc(i+j+1,doc->mem_task); - MemCpy(st,doc_ce->tag,i); - MemCpy(st+i,doc_ce2->tag,j+1); - Free(doc_ce->tag); - doc_ce->tag=st; - doc_ce->max_col=i+j; - DocEntryDel(doc,doc_ce2); - } else if (doc_ce2->type_u8==DOCT_SOFT_NEW_LINE) - DocEntryDel(doc,doc_ce2); - else - break; - doc_ce2=cl1; - } else - break; - } - i=doc->cur_col; - while (i>doc_ce->min_col && doc_ce->tag[i]!='$$') - i--; - j=doc->cur_col+1; - while (jmax_col && doc_ce->tag[j]!='$$') - j++; - if (imin_col<=imax_col && - doc_ce->tag[i]=='$$' && doc_ce->tag[j]=='$$') { - ch=doc_ce->tag[j+1]; - doc_ce->tag[j+1]=0; - st=StrNew(doc_ce->tag+i); - doc_ce->tag[j+1]=ch; - StrCpy(doc_ce->tag+i,doc_ce->tag+j+1); - doc->cur_col=i; - st2=MStrPrint("%q",st); - if (doc_ce=DocPrint(doc,st2)) { - doc->cur_entry=doc_ce; - doc->cur_col=doc_ce->min_col; - } - Free(st); - Free(st2); - } - } else { - old_color_names=LBts(&doc->flags,DOCf_COLOR_NAMES); - st=Doc2PlainText(doc,doc_ce); - LBEqu(&doc->flags,DOCf_COLOR_NAMES,old_color_names); - DocEntryDel(doc,doc_ce); - DocPrint(doc,"$$$$%Q$$$$",st); - } - DocRecalc(doc); - } - if (unlock) - DocUnlock(doc); -} - -U0 DocFlagsToggle(CDoc *doc,I64 tog_flags) -{ - Bool unlock=DocLock(doc); - I64 size,flags=doc->flags^tog_flags; - U8 *st; - CDocUndo *u_next,*u_last; - - doc->flags|=DOCF_COLOR_NAMES; - st=DocSave(doc,&size); - - u_next=doc->undo_root.next; - u_last=doc->undo_root.last; - doc->undo_root.next=doc->undo_root.last=&doc->undo_root; - - DocRst(doc,TRUE); - doc->undo_root.next=u_next; - doc->undo_root.last=u_last; - DocUndoCntSet(doc); - doc->flags=flags & ~(DOCG_BL_IV_UL|DOCF_WORD_WRAP); - DocLoad(doc,st,size); - DocCenter(doc); - if (unlock) - DocUnlock(doc); - Free(st); -} diff --git a/Adam/DolDoc/DocClipBoard.CPP b/Adam/DolDoc/DocClipBoard.CPP new file mode 100644 index 0000000..5b78f10 --- /dev/null +++ b/Adam/DolDoc/DocClipBoard.CPP @@ -0,0 +1,123 @@ +#help_index "DolDoc/Clipboard" + +sys_clipboard_doc=DocNew; + +public U0 ClipboardDel() +{//Delete everything on clipboard. + DocRst(sys_clipboard_doc,TRUE); +} + +public U0 EdCopyToClipboard(CDoc *doc) +{//Copy $LK,"DOCET_SELECTED",A="MN:DOCET_SELECTED"$ flagged entries to clipboard. + CDoc *doc2=sys_clipboard_doc; + Bool unlock_doc=DocLock(doc), + unlock_doc2=DocLock(doc2); + CDocEntry *doc_e=doc->root.next,*doc_ne; + ClipboardDel; + while (doc_e!=doc) { + if (doc_e->type & DOCET_SELECTED) { + doc_e->type&=~DOCET_SELECTED; + if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { + doc_ne=DocEntryCopy(doc2,doc_e); + QueIns(doc_ne,doc2->root.last); + } + } + doc_e=doc_e->next; + } + if (unlock_doc2) + DocUnlock(doc2); + if (unlock_doc) + DocUnlock(doc); +} + +public U0 EdCutToClipboard(CDoc *doc) +{//Remove selected entries and place on clipboard. + CDoc *doc2=sys_clipboard_doc; + Bool unlock_doc=DocLock(doc), + unlock_doc2=DocLock(doc2); + CDocEntry *doc_e=doc->root.next,*doc_e1,*doc_ne,*doc_e2=NULL; + ClipboardDel; + while (doc_e!=doc) { + doc_e1=doc_e->next; + if (doc_e->type & DOCET_SELECTED) { + doc_e->type&=~DOCET_SELECTED; + if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { + doc_ne=DocEntryCopy(doc2,doc_e); + QueIns(doc_ne,doc2->root.last); + } + if (doc_e==doc->cur_entry || doc_e==doc_e2) + doc_e2=doc_e->next; + DocEntryDel(doc,doc_e); + } + doc_e=doc_e1; + } + if (doc_e2) { + doc->cur_entry=doc_e2; + doc->cur_col=doc_e2->min_col; + } + DocRemSoftNewLines(doc,NULL); + if (unlock_doc2) + DocUnlock(doc2); + if (unlock_doc) + DocUnlock(doc); +} + +public U0 EdPasteClipboard(CDoc *doc) +{//Insert copy of clipboard at insert pt, cur_entry. + CDoc *doc2=sys_clipboard_doc; + Bool unlock_doc=DocLock(doc), + unlock_doc2=DocLock(doc2); + CDocEntry *doc_ce=doc->cur_entry,*doc_e; + if (doc_ce->type_u8==DOCT_DATA) { + doc_e=doc2->root.next; + while (doc_e!=doc2) { + if (doc_e->de_flags&DOCEF_TAG) + DocPrintPartial(doc,"%s",doc_e->tag); + doc_e=doc_e->next; + } + } else + DocInsDoc(doc,doc2); + if (unlock_doc2) + DocUnlock(doc2); + if (unlock_doc) + DocUnlock(doc); +} + +public U0 DocCut(CDoc *doc,CDocEntry *start,CDocEntry *end) +{//Del start to end entry, including end points. + Bool unlock_doc=DocLock(doc); + CDocEntry *doc_e1; + while (start!=doc) { + doc_e1=start->next; + if (start==doc->cur_entry) { + doc->cur_entry=start->next; + doc->cur_col=doc->cur_entry->min_col; + } + DocEntryDel(doc,start); + if (start==end) + break; + start=doc_e1; + } + DocRemSoftNewLines(doc,NULL); + if (unlock_doc) + DocUnlock(doc); +} + +public CDoc *DocCopy(CDoc *doc,CDocEntry *start,CDocEntry *end) +{//Copies start to end entry, including end points. + CDoc *doc2=DocNew; + Bool unlock_doc=DocLock(doc); + CDocEntry *doc_ne; + while (start!=doc) { + if (!Bt(doldoc.type_flags_data,start->type_u8)) { + doc_ne=DocEntryCopy(doc2,start); + QueIns(doc_ne,doc2->root.last); + } + if (start==end) + break; + start=start->next; + } + if (unlock_doc) + DocUnlock(doc); + return doc2; +} diff --git a/Adam/DolDoc/DocDblBuf.CPP b/Adam/DolDoc/DocDblBuf.CPP new file mode 100644 index 0000000..abdb537 --- /dev/null +++ b/Adam/DolDoc/DocDblBuf.CPP @@ -0,0 +1,108 @@ +#help_index "DolDoc/Task;StdOut/Task" +public CDoc *DocPut(CTask *task=NULL) +{//Current document that StdOut Put() goes to. +//Basically, StdOut unless double buffering. + CDoc *result; + if (!task) task=Fs; + if ((result=task->put_doc) && result->doc_signature==DOC_SIGNATURE_VAL) + return result; + else + return NULL; +} + +public CDoc *DocDisplay(CTask *task=NULL) +{//StdOut displayed unless double buffering. + CDoc *result; + if (!task) task=Fs; + if ((result=task->display_doc) && result->doc_signature==DOC_SIGNATURE_VAL) + return result; + else + return NULL; +} + +public CDoc *DocBorder(CTask *task=NULL) +{//Doc holding border of window text. + CDoc *result; + if (!task) task=Fs; + if ((result=task->border_doc) && result->doc_signature==DOC_SIGNATURE_VAL) + return result; + else + return NULL; +} + +public CDoc *DocDblBufStart(CTask *task=NULL) +{//See $LK,"::/Demo/Spy.CPP"$ + Bool unlock_ddoc; + CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task),*result; + if (!pdoc || !ddoc || pdoc!=ddoc) + result=NULL; //Already Double buffering + else { + if (!task) task=Fs; + unlock_ddoc=DocLock(ddoc); //dont change during winupdate, so lock DocPut$WW,0$ + result=DocNew(,task); + result->win_task =ddoc->win_task; + result->max_entries =ddoc->max_entries; + MemCpy(result->find_replace,ddoc->find_replace,sizeof(CEdFindText)); + MemCpy(&result->filename,&ddoc->filename,sizeof(CEdFileName)); + result->left_click_link =ddoc->left_click_link; + result->right_click_link =ddoc->right_click_link; + result->user_put_data =ddoc->user_put_data; + result->user_put_key =ddoc->user_put_key; + result->user_put_s =ddoc->user_put_s; + result->parent_doc =ddoc->parent_doc; + result->desc =ddoc->desc; + result->user_data =ddoc->user_data; + result->flags|=ddoc->flags&DOCG_DBL_BUF_FLAGS | DOCF_DONT_SHOW; + task->put_doc=result; + if (unlock_ddoc) + DocUnlock(ddoc); + } + return result; +} + +public Bool DocDblBufEnd(CTask *task=NULL) +{//See $LK,"::/Demo/Spy.CPP"$ + Bool result=FALSE; + CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task); + if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering? + if (!task) task=Fs; + ddoc->flags|=DOCF_DONT_SHOW; + pdoc->flags&=~DOCF_DONT_SHOW; + DocLock(ddoc); + task->display_doc=pdoc; + DocUnlock(ddoc); + DocDel(ddoc); + result=TRUE; + } + return result; +} + +public Bool DocDblBufSwap(CTask *task=NULL) +{//See $LK,"::/Demo/Spy.CPP"$ + Bool result=FALSE; + CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task); + if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering? + if (!task) task=Fs; + ddoc->flags|=DOCF_DONT_SHOW; + pdoc->flags&=~DOCF_DONT_SHOW; + DocLock(ddoc); + task->display_doc=pdoc; + DocUnlock(ddoc); + DocRst(ddoc,TRUE); + MemCpy(ddoc->find_replace,pdoc->find_replace,sizeof(CEdFindText)); + MemCpy(&ddoc->filename,&pdoc->filename,sizeof(CEdFileName)); + ddoc->max_entries =pdoc->max_entries; + ddoc->flags =pdoc->flags&DOCG_DBL_BUF_FLAGS | + ddoc->flags&~DOCG_DBL_BUF_FLAGS; + ddoc->left_click_link =pdoc->left_click_link; + ddoc->right_click_link =pdoc->right_click_link; + ddoc->user_put_data =pdoc->user_put_data; + ddoc->user_put_key =pdoc->user_put_key; + ddoc->user_put_s =pdoc->user_put_s; + ddoc->desc =pdoc->desc; + ddoc->user_data =pdoc->user_data; + task->put_doc=ddoc; + result=TRUE; + } + return result; +} diff --git a/Adam/DolDoc/DocEd.CPP b/Adam/DolDoc/DocEd.CPP new file mode 100644 index 0000000..fae613d --- /dev/null +++ b/Adam/DolDoc/DocEd.CPP @@ -0,0 +1,249 @@ +#help_index "DolDoc/Output;StdOut/DolDoc" + +public Bool View() +{//Go live for user interaction until or . + I64 ch; + do ch=DocGetKey; + while (ch!=CH_ESC && ch!=CH_SHIFT_ESC); + return ch==CH_ESC; +} + +#help_index "DolDoc" +U8 *EdOverStrikeCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) +{ + CDoc *doc=doc_e->user_data; + U8 *st=MAlloc(8,mem_task); + if (doc->flags & DOCF_OVERSTRIKE) + *st='O'; + else + *st='Ä'; + st[1]=0; + return st; +} + +U8 *EdFilterCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) +{ + CDoc *doc=doc_e->user_data; + U8 *st=MAlloc(8,mem_task); + if (doc->find_replace->filter_lines) + *st='F'; + else + *st='Ä'; + st[1]=0; + return st; +} + +U8 *EdDollarCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) +{ + CDoc *doc=doc_e->user_data; + U8 *st=MAlloc(8,mem_task); + if (doc->flags & DOCF_IN_DOLLAR) + *st='$$'; + else + *st='Ä'; + st[1]=0; + return st; +} + +U8 *EdMoreCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) +{ + CDoc *doc=doc_e->user_data; + U8 *st=MAlloc(8,mem_task); + if (doc->flags&DOCF_MORE) + StrCpy(st,"MoreÄ"); + else + StrCpy(st,"ÄÄÄÄÄ"); + return st; +} + +U8 *EdDollarTypeCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) +{ + CDoc *doc=doc_e->user_data; + U8 *src=DefineSub(doc->cur_entry->type_u8,"ST_DOC_CMDS"), + *st=CAlloc(8,mem_task); + if (doc->cur_entry==doc) + src="EOF"; + else if (!src) + src="ERR"; + StrPrint(st,"%-3ts",src); + return st; +} + +public Bool DocEd(CDoc *doc,I64 dof_flags=0) +{//Live for user interaction. End on or . + CDoc *old_put_doc =DocPut, + *old_display_doc=DocDisplay, + *old_border_doc =DocBorder,*bdoc; + CDocEntry *doc_e; + I64 old_attr=Fs->text_attr, + old_top =Fs->win_top, old_bottom=Fs->win_bottom, + old_left=Fs->win_left,old_right =Fs->win_right, + old_title_src=Fs->title_src; + Bool result,unlock; + U8 *old_task_title; + if (dof_flags&DOF_WIN_MAX) + WinMax; + + unlock=DocLock(doc); + doc->win_task=Fs; + bdoc=DocNew; + bdoc->flags|=DOCF_BORDER_DOC; + DocPrint(bdoc,"$$CM+TY+LX+NC,0,-1$$"); + DocPrint(bdoc,"$$TX+RX+BD,\"[X]\"$$"); + DocPrint(bdoc,"$$BK,1$$$$TX+LX+BD,\"MENU\"$$$$BK,0$$"); + + old_task_title=StrNew(Fs->task_title); + if (Fs->title_src!=TTS_LOCKED_CONST) { + Fs->title_src=TTS_ED_FILENAME; + MemCpy(Fs->task_title,doc->filename.name,TASK_TITLE_LEN); + } + doc_e=DocPrint(bdoc,"$$DA-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=16$$"); + doc_e->data=&Fs->task_title; + DocDataFmt(bdoc,doc_e); + + if (doc->flags & DOCF_ALLOW_UNDO) { + DocPrint(bdoc,"$$CM+BY+LX+NC,1,1$$"); + doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,RT=U32,A=\"Undo:%%03d\"$$\n"); + doc_e->data=&doc->undo_cnt; + DocDataFmt(bdoc,doc_e); + } + + DocPrint(bdoc,"$$CM+BY+RX+NC,-30,1$$"); + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=doc; + doc_e->tag_cb=&EdMoreCB; + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=doc; + doc_e->tag_cb=&EdDollarTypeCB; + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=doc; + doc_e->tag_cb=&EdFilterCB; + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=doc; + doc_e->tag_cb=&EdOverStrikeCB; + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=doc; + doc_e->tag_cb=&EdDollarCB; + doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Line:%%04d \"$$"); + doc_e->data=&doc->line; + DocDataFmt(bdoc,doc_e); + doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Col:%%04d\"$$\n"); + doc_e->data=&doc->col; + DocDataFmt(bdoc,doc_e); + + DocRecalc(bdoc); + DocRecalc(doc); + if (!(dof_flags&DOF_DONT_HOME)) + DocTop(doc); + Fs->border_doc=bdoc; + if (doc!=old_display_doc) + doc->parent_doc=old_display_doc; + Fs->put_doc=Fs->display_doc=doc; + if (!(dof_flags&DOF_DONT_TEXT_ATTR)) + Fs->text_attr=DOC_ATTR_DFT_TEXT; + if (!(dof_flags&DOF_DONT_SHOW)) { + LBts(&Fs->display_flags,DISPLAYf_SHOW); + WinZBufUpdate; + } + if (dof_flags&DOF_MIN_SIZE) + doc->flags|=DOCF_MIN_SIZE; + + DocUnlock(doc); + if (!(dof_flags&DOF_DONT_WINMGR_SYNC)) { + WinMgrSync(2,TRUE); + if (doc->flags&DOCF_MIN_SIZE) + WinMgrSync(2,TRUE); + } + result=View; + + DocLock(doc); + if (result) { + doc_e=doc->root.next; + while (doc_e!=doc) { + if (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX) + DocDataScan(doc,doc_e); + doc_e=doc_e->next; + } + } + if (unlock) + DocUnlock(doc); + Fs->border_doc =old_border_doc; + Fs->display_doc=old_display_doc; + Fs->put_doc =old_put_doc; + Fs->text_attr =old_attr; + if (Fs->title_src!=TTS_LOCKED_CONST) { + Fs->title_src =old_title_src; + StrCpy(Fs->task_title,old_task_title); + } + Free(old_task_title); + DocDel(bdoc); + if (dof_flags&DOF_MIN_SIZE) { + WinHorz(old_left,old_right); + WinVert(old_top,old_bottom); + } + return result; +} + +#help_index "DolDoc/Cmd Line (Typically);Cmd Line (Typically)" +public Bool Ed(U8 *link_st,I64 edf_dof_flags=0) +{//Invoke document editor. + U8 *filename,*needle_str; + I64 i,num; + Bool cont,result=FALSE; + CDoc *doc; + + switch (i=EdLinkCvt(link_st,&filename,&needle_str,&num,edf_dof_flags)) { + case -1: + break; + case LK_DEF: + doc=DocNew; + doc->desc='DictDef'; + ACDDefsPut(doc,filename,num); + goto ej_doc; + case LK_HELP_INDEX: + doc=DocNew; + doc->desc='HelpIndx'; + DocHelpIndex(doc,filename); +ej_doc: + if (!(edf_dof_flags&EDF_BAIL)) { + DocEd(doc); + DocDel(doc); + } + if (!(edf_dof_flags&EDF_WAS_WRITE)) + result=TRUE; + break; + default: + if (IsRaw) + result=EdLite(filename,num,edf_dof_flags); + else { + cont=TRUE; + if (!(edf_dof_flags&EDF_BAIL) && !(LK_DOC<=i<=LK_DOC_LINE) && + !FilesFindMatch(filename,FILEMASK_TXT) && + !PopUpCancelOk(ST_WARN_ST "Not Text File\n\n")) + cont=FALSE; + if (cont) + result=DocFileEd(i,filename,needle_str,&num,edf_dof_flags); + } + } + Free(filename); + Free(needle_str); + return result; +} + +public Bool Plain(U8 *filename,I64 edf_dof_flags=0) +{//Edit document in plain text mode, so dollar signs are not special. + Bool result; + U8 *st=MStrPrint("PI:%s",filename); + result=Ed(st,edf_dof_flags); + Free(st); + return result; +} + +#help_index "DolDoc;Task/Srv/Exe" +public I64 PopUpEd(U8 *filename,CTask *parent=NULL,CTask **_pu_task=NULL) +{//Create PopUp win task and edit a doc. + U8 *st=MStrPrint("Ed(\"%Q\");",filename); + I64 result=PopUp(st,parent,_pu_task); + Free(st); + return result; +} diff --git a/Adam/DolDoc/DocEdB.CPP b/Adam/DolDoc/DocEdB.CPP deleted file mode 100644 index 682a79e..0000000 --- a/Adam/DolDoc/DocEdB.CPP +++ /dev/null @@ -1,980 +0,0 @@ -#help_index "DolDoc/Output;StdOut/DolDoc" - -public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0) -{//$LK,"PutKey",A="MN:PutKey"$(ch,sc) at doc insert pt, cur_entry. - I64 i,x,y,sc2,ext_ascii_cnt=0; - CDoc *m; - CDocEntry *doc_ce; - U8 *st,*st2; - Bool unlock; - - if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) - return; - if (doc->user_put_key && (*doc->user_put_key)(doc,doc->user_put_data,ch,sc)) - return; - unlock=DocLock(doc); - if (!Bt(doldoc.clean_scan_codes,sc.u8[0])) - doc->flags|=DOCF_UNDO_DIRTY; - DocCaptureUndo(doc); - if (Bt(chars_bmp_getkey,ch) && - !(sc&(SCF_CTRL|SCF_ALT))) { - if (sc&SCF_KEY_DESC) { - st=Char2KeyName(ch,FALSE); - KeyDescSet("Char/'%s'",st); - Free(st); - } else - EdInsChar(ch,sc,doc); - } else { - doc_ce=doc->cur_entry; - x=doc->x; y=doc->y; - sc2=sc.u8[0]; - switch (ch) { - case CH_CTRLA: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Save As"); - else - DocWrite(doc,TRUE); - break; - case CH_CTRLB: - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Toggle Border"); - else - WinBorder(Bt(&doc->win_task->display_flags, - DISPLAYf_NO_BORDER),doc->win_task); - break; - case CH_CTRLC: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Copy to Clipboard"); - else - EdCopyToClipboard(doc); - break; - case CH_CTRLD: - if (sc&SCF_KEY_DESC) - KeyDescSet("Cmd/Jump to File Manager"); - else { - DocUnlock(doc); - FileMgr; - DocLock(doc); - } - break; - case CH_CTRLF: - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Cmd/Find Wizard"); - else - FindWiz; - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Find & Replace"); - else - EdFindReplace(doc); - } - break; - case CH_CTRLG: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/GoTo Line Num"); - else - EdGoToLine(doc); - break; - case CH_BACKSPACE: // - if (sc&SCF_ALT && !(sc&SCF_CTRL)) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Undo"); - else - DocUndoRestore(doc); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Char/Back Space"); - else { - DocCaptureUndo(doc); - doc_ce=doc->cur_entry; - if (doc->cur_col<=doc_ce->min_col) { - doc_ce=doc->cur_entry=doc_ce->last; - if (doc_ce!=doc && doc_ce->type_u8==DOCT_SOFT_NEW_LINE) - doc_ce=doc->cur_entry=doc_ce->last; - if (doc_ce==doc || doc_ce->type_u8==DOCT_PMT) { - doc_ce=doc->cur_entry=doc_ce->next; - doc->cur_col=doc_ce->min_col; - } else { - doc->cur_col=doc_ce->max_col; - if (doc->cur_col>doc_ce->min_col) - doc->cur_col--; - EdDelChar(doc); - } - } else { - doc->cur_col--; - EdDelChar(doc); - } - } - } - break; - case CH_CTRLI: - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Indent Out"); - else - DocPrint(doc,"$$ID,-2$$"); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Indent In"); - else - DocPrint(doc,"$$ID,2$$"); - } - break; - case '\n': - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Char/Return"); - else - KeyDescSet("Char/Page Break"); - } else - EdInsChar(ch,sc,doc); - break; - case CH_CTRLK: - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Blinking Text"); - else if (sc&SCF_SHIFT) - DocPrint(doc,"$$BK,0$$"); - else - DocPrint(doc,"$$BK,1$$"); - break; - case CH_CTRLL: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Code Tools"); - else - KeyDescSet("Dollar/Wizard"); - } else { - if (sc&SCF_SHIFT) - EdCodeTools(doc); - else { - DocUnlock(doc); - EdInsDollarCmd; - DocLock(doc); - } - } - break; - case CH_CTRLM: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Cmd/Jump to Notes File"); - else - KeyDescSet("Cmd/Jump to Menu"); - } else { - if (sc&SCF_SHIFT) - Ed("::/Home/PersonalNotes.TXT.Z"); - else { - m=DocRead("::/Home/PersonalMenu.TXT.Z"); - DocMenu(m); - DocDel(m); - } - } - break; - case CH_CTRLO: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Collapse"); - else - KeyDescSet("Edit/Uncolapse"); - } else { - if (sc&SCF_SHIFT) - DocCollapse(TRUE,doc); - else - DocCollapse(FALSE,doc); - } - break; - case CH_CTRLP: - if (doc->flags & (DOCF_SUPERSCRIPT_MODE | DOCF_SUBSCRIPT_MODE)) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Super or Sub script"); - else { - DocPrint(doc,"$$SY,0$$"); - doc->flags&=~(DOCF_SUPERSCRIPT_MODE | DOCF_SUBSCRIPT_MODE); - } - } else if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Subscript"); - else { - DocPrint(doc,"$$SY,3$$"); - doc->flags|=DOCF_SUBSCRIPT_MODE; - } - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Superscript"); - else { - DocPrint(doc,"$$SY,-3$$"); - doc->flags|=DOCF_SUPERSCRIPT_MODE; - } - } - break; - case CH_CTRLQ: - break; - case CH_CTRLR: - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Edit or Create Graphic"); - else { - if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { - DocUnlock(doc); - if (doc_ce->type_u8==DOCT_SPRITE) - EdSpriteEd(doc, - (doc_ce->x-doc->line_start_col+doc_ce->max_col)*FONT_WIDTH, - (doc_ce->y-doc->top_line_num)*FONT_HEIGHT); - else - EdSpriteIns(doc, - (doc_ce->x+doc->cur_col-doc->line_start_col)*FONT_WIDTH, - (doc_ce->y-doc->top_line_num)*FONT_HEIGHT); - DocLock(doc); - } - } - break; - case CH_CTRLS: - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Find Misspelled"); - else - ACFindMisspelled(doc); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Save"); - else - DocWrite(doc); - } - break; - case CH_CTRLT: - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Single Entry Toggle Plain Text"); - else - DocEntryToggle(doc); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Toggle Plain Text Display"); - else - if (!(doc->flags&DOCF_FORM) || - doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)) - DocFlagsToggle(doc,DOCF_PLAIN_TEXT); - } - break; - case CH_CTRLU: - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Underline"); - else if (sc&SCF_SHIFT) - DocPrint(doc,"$$UL,0$$"); - else - DocPrint(doc,"$$UL,1$$"); - break; - case CH_CTRLV: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Paste Clipboard"); - else - EdPasteClipboard(doc); - break; - case CH_CTRLW: - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Word Wrap"); - else if (sc&SCF_SHIFT) - DocPrint(doc,"$$WW,0$$"); - else - DocPrint(doc,"$$WW,1$$"); - break; - case CH_CTRLX: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Cut To Clipboard"); - else - EdCutToClipboard(doc); - break; - case CH_CTRLY: - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Delete Line"); - else - EdDelLine(doc); - break; - case CH_CTRLZ: - if (sc&SCF_KEY_DESC) - KeyDescSet("Dollar/Toggle Inverted Text"); - else if (sc&SCF_SHIFT) - DocPrint(doc,"$$IV,0$$"); - else - DocPrint(doc,"$$IV,1$$"); - break; - case '0'...'9': - if (!(sc&SCF_ALT)) { - if (sc&SCF_CTRL) { - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Jump to Word Definition"); - else - KeyDescSet("Edit/Autocomplete Word"); - } else { - if (AutoComplete(ON)) { - DocUnlock(doc); - if (sc&SCF_SHIFT) - ACDDef(ch-'0',Fs); - else - ACDFillin(ch-'0'); - DocLock(doc); - } - } - } - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Enter extended-ASCII"); - else { - if (++doc->ext_ascii_cnt==1) - doc->ext_ascii_val=ch-'0'; - else - doc->ext_ascii_val=doc->ext_ascii_val*10+ch-'0'; - if (doc->ext_ascii_cnt==3) - EdInsChar(doc->ext_ascii_val.u8[0],sc,doc); - else - ext_ascii_cnt=doc->ext_ascii_cnt; - } - } - break; - case '[': - if (!(sc&SCF_ALT) && sc&SCF_CTRL) { - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/GoTo matching brace"); - else - EdFindPaired(doc,'}','{',FALSE); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/GoTo matching bracket"); - else - EdFindPaired(doc,']','[',FALSE); - } - } - break; - case ']': - if (!(sc&SCF_ALT) && sc&SCF_CTRL) { - if (sc&SCF_SHIFT) { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/GoTo matching brace"); - else - EdFindPaired(doc,'{','}',TRUE); - } else { - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/GoTo matching bracket"); - else - EdFindPaired(doc,'[',']',TRUE); - } - } - break; - default: - switch (sc2) { - case SC_F1...SC_F10: - if (!(sc&SCF_ALT)) { - if (sc&SCF_CTRL) { - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Jump to Src of Sym"); - else - KeyDescSet("Edit/Autocomplete Sym"); - } else { - DocUnlock(doc); - if (AutoComplete(ON)) { - if (sc&SCF_SHIFT) - ACMan(sc2-SC_F1+1,Fs); - else - ACFillIn(sc2-SC_F1+1); - } - DocLock(doc); - } - } else { - switch (sc2) { - case SC_F1: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("About"); - else - KeyDescSet("Help"); - } else { - if (sc&SCF_SHIFT) - Ed("::/Doc/AboutTempleOS.TXT.Z"); - else - Ed("::/Doc/HelpIndex.TXT.Z"); - } - break; - case SC_F2: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Play Macro"); - else - KeyDescSet("Edit/Macro"); - } else { - DocUnlock(doc); - if (sc&SCF_SHIFT) { - if (TaskValidate(sys_macro_util_task)) - PostMsgWait(sys_macro_util_task, - MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0); - SysMacroStripKey(&sys_macro_root,ch,sc); - PlaySysMacro; - } else - EdMacroUtil; - DocLock(doc); - } - break; - case SC_F3: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Find Last"); - else - KeyDescSet("Edit/Find Next"); - }else { - doc->find_replace->scan_fwd=!(sc&SCF_SHIFT); - EdFindNext(doc); - } - break; - case SC_F4: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Misc/Insert Directory Name"); - else - KeyDescSet("Misc/Insert FileName"); - } else { - DocUnlock(doc); - if (sc&SCF_SHIFT) - st=PopUpPickDir; - else - st=PopUpPickFile; - DocLock(doc); - if (st) { - DocPrintPartial(doc,"%s",st); - Free(st); - } - } - break; - case SC_F5: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Cmd/Adam Include"); - else - KeyDescSet("Cmd/Run (Execute);Dbg/Go"); - } else { - if (st2=DocEntryLink(doc,doc_ce)) { - st=DocLinkFile(st2); - Free(st2); - } else { - DocWrite(doc); - st=StrNew(doc->filename.name); - } - if (st2=DirFile(st,"Run","CPP.Z")) { - if (FileFind(st2)) { - Free(st); - st=st2; - } else - Free(st2); - } - if (st) { - if (sc&SCF_SHIFT) - AdamFile(st); - else - PopUpFile(st); - Free(st); - } - } - break; - case SC_F6: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("God Doodle"); - else - KeyDescSet("God Song"); - } else { -//$LK,"::/Adam/God/HSNotes.TXT"$ - if (sc & SCF_SHIFT) { - DocUnlock(doc); - GodDoodle; - DocLock(doc); - } else - GodSong; - } - break; - case SC_F7: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("God Passage"); - else - KeyDescSet("God Word"); - } else { -//$LK,"::/Adam/God/HSNotes.TXT"$ - FifoU8Flush(god.fifo); - GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); - if (sc & SCF_SHIFT) - GodPassage; - else - GodWord; - } - break; - } - } - } - break; - case SC_CURSOR_DOWN: - case SC_END: - if (sc2==SC_END || sc&SCF_CTRL) { - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/GoTo Doc End, Select"); - else - KeyDescSet("Edit/GoTo Doc End"); - } else { - while (doc_ce!=doc) { - BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); - doc_ce=doc->cur_entry=doc_ce->next; - } - doc->cur_col=doc_ce->min_col; - DocFormBwd(doc); - } - } else if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Cursor Down, Select"); - else - KeyDescSet("Edit/Cursor Down"); - } else - EdLineDown(doc,sc); - break; - case SC_CURSOR_UP: - case SC_HOME: - if (sc2==SC_HOME || sc&SCF_CTRL) { - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/GoTo Top of Doc, Select"); - else - KeyDescSet("Edit/GoTo Top of Doc"); - } else { - if (doc_ce==doc) doc_ce=doc_ce->last; - while (doc_ce!=doc) { - BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); - doc_ce=doc->cur_entry=doc_ce->last; - } - doc_ce=doc->cur_entry=doc->root.next; - doc->cur_col=doc_ce->min_col; - DocFormFwd(doc); - } - } else if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Cursor Up, Select"); - else - KeyDescSet("Edit/Cursor Up"); - } else - EdLineUp(doc,sc); - break; - case SC_PAGE_DOWN: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Page Down, Select"); - else - KeyDescSet("Edit/Page Down"); - } else { - i=doc_ce->y+doc->win_task->win_height-1; - if (doc_ce->type_u8==DOCT_HEX_ED) - i+=doc->cur_col/3/doc_ce->hex_ed_width; - while (doc_ce!=doc && - (doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->ytype_u8==DOCT_HEX_ED && - doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_widthcur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED) - break; - doc_ce=doc->cur_entry; - } - } - break; - case SC_PAGE_UP: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Page Up, Select"); - else - KeyDescSet("Edit/Page Up"); - }else { - i=doc_ce->y-(doc->win_task->win_height-1); - if (doc_ce->type_u8==DOCT_HEX_ED) - i+=doc->cur_col/3/doc_ce->hex_ed_width; - while (doc_ce->last!=doc && - (doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->y>i || - doc_ce->type_u8==DOCT_HEX_ED && - doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_width>i) && - doc_ce->y!=doc->root.next->y) { - EdLineUp(doc,sc); -//paranoid check for stuck on same node - if (doc->cur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED) - break; - doc_ce=doc->cur_entry; - } - } - break; - case SC_CURSOR_LEFT: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_CTRL) - KeyDescSet("Edit/GoTo Start of Line"); - else { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Cursor Left, Select"); - else - KeyDescSet("Edit/Cursor Left"); - } - } else - EdCursorLeft(doc,sc); - break; - case SC_CURSOR_RIGHT: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_CTRL) - KeyDescSet("Edit/GoTo End of Line"); - else { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Cursor Right, Select"); - else - KeyDescSet("Edit/Cursor Right"); - } - } else - EdCursorRight(doc,sc); - break; - case SC_DELETE: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Cut To Clipboard"); - else - KeyDescSet("Char/Delete"); - } else { - if (sc&SCF_SHIFT) - EdCutToClipboard(doc); - else - EdDelChar(doc); - } - break; - case SC_INS: - if (sc&SCF_KEY_DESC) { - if (sc&SCF_SHIFT) - KeyDescSet("Edit/Paste Clipboard"); - else if (sc&SCF_CTRL) - KeyDescSet("Edit/Copy to Clipboard"); - else - KeyDescSet("Edit/Toggle Overstrike"); - } else { - if (sc&SCF_SHIFT) - EdPasteClipboard(doc); - else if (sc&SCF_CTRL) - EdCopyToClipboard(doc); - else - doc->flags^=DOCF_OVERSTRIKE; - } - break; - } //switch (sc2) - } - } - doc->ext_ascii_cnt=ext_ascii_cnt; - if (unlock) - DocUnlock(doc); - if (!(doc->flags&DOCF_DONT_SWAP_OUT)) - Yield; -} - -Bool KDDocPutKey(I64 ch,I64 scan_code) -{ - CDoc *doc; - if (doc=DocPut) - DocPutKey(doc,ch,scan_code); - return FALSE; -} - -public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...) -{//Lets you print half a doc cmd, if you like. - U8 *buf,*b,*src,*dst,*ptr,*ptr2; - Bool unlock; - CDocEntry *doc_ce,*doc_ne; - I64 ch,i,j; - if (!fmt) - return; - buf=StrPrintJoin(NULL,fmt,argc,argv); - ptr=buf; - if (doc->user_put_s && (*doc->user_put_s)(doc,doc->user_put_data,buf)) { - Free(buf); - return; - } - unlock=DocLock(doc); - if (doc->cur_entry->type_u8==DOCT_DATA) - while (ch=*ptr++) - DocPutKey(doc,ch,0); - else - while (ch=*ptr) { - if (!Bt(chars_bmp_safe_dollar,ch) || - doc->flags & (DOCF_OVERSTRIKE | DOCF_IN_DOLLAR)) { - DocPutKey(doc,ch,0); - ptr++; - } else { - ptr2=ptr++; - while (TRUE) { - ch=*ptr++; - if (!Bt(chars_bmp_safe_dollar,ch)) - break; - } - ptr--; - *ptr=0; - doc_ce=doc->cur_entry; - j=ptr-ptr2; - if (IsEditableText(doc_ce)) { - dst=b=MAlloc(doc_ce->max_col+j+1,doc->mem_task); - src=doc_ce->tag; - i=doc->cur_col; - doc->cur_col+=j; - doc_ce->max_col+=j; - while (i-->0) - *dst++=*src++; - while (j-->0) - *dst++=*ptr2++; - while (*dst++=*src++); - Free(doc_ce->tag); - doc_ce->tag=b; - } else { - dst=MAlloc(j+1,doc->mem_task); - MemCpy(dst,ptr2,j+1); - doc_ne=DocEntryNew(doc,doc_ce,dst); - doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; - doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; - QueIns(doc_ne,doc_ce->last); - doc->cur_entry=doc_ne; - doc->cur_col=StrLen(ptr2); - } - *ptr=ch; - DocRemSoftNewLines(doc,doc->cur_entry); - } - } - if (unlock) - DocUnlock(doc); - if (!(doc->flags&DOCF_DONT_SWAP_OUT)) - Yield; - Free(buf); -} - -#help_index "DolDoc" -Bool DocFileEd(I64 _type,U8 *filename, - U8 *needle_str,I64 *_num,I64 edf_dof_flags) -{ - I64 type=_type,flags=0,old_border_src=Fs->border_src; - CDocEntry *doc_e; - CDoc *doc; - Bool old_silent=Bt(&Fs->display_flags,DISPLAYf_SILENT), - result=FALSE,other_found=FALSE; - U8 *st1,*st2; - try { - switch (type) { - case LK_PLAIN: - flags=DOCF_PLAIN_TEXT; - case LK_DOC: - type=LK_FILE; - break; - case LK_DOC_ANCHOR: - type=LK_FILE_ANCHOR; - break; - case LK_PLAIN_FIND: - flags=DOCF_PLAIN_TEXT; - case LK_DOC_FIND: - type=LK_FILE_FIND; - break; - case LK_PLAIN_LINE: - flags=DOCF_PLAIN_TEXT; - case LK_DOC_LINE: - type=LK_FILE_LINE; - break; - case LK_BIBLE_FIND: - flags=DOCF_PLAIN_TEXT; - break; - } - - flags|=DOCF_ALLOW_UNDO; - - if (LK_DOC<=_type<=LK_DOC_LINE) { - doc=Str2I64(filename);//See $LK,"SpriteEdText",A="MN:SpriteEdText"$() - result=TRUE; - } else { - - st1=StrNew(filename); - st2=StrNew(filename); - StrLastRem(st1,"/",st2); //st2 is name without dir - - if (!FileNameChk(st2)) - doc=NULL; - else { - Silent; - if (Bt(&edf_dof_flags,EDf_BAIL)) //if bail, scan parents - result=FileFind(filename,, - FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); - else if (!(result=FileFind(filename,, - FUF_JUST_FILES))) - other_found=FileFind(filename,, - FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); - doc=DocRead(filename,flags); - doc->desc='Edit'; - Silent(old_silent); - Fs->border_src=BDS_ED_FILENAME_DRV; - } - - Free(st1); - Free(st2); - } - if (!doc||doc->doc_signature!=DOC_SIGNATURE_VAL) - result=FALSE; - else { - if (Bt(&edf_dof_flags,EDf_COLLAPSE)) - DocCollapse(TRUE,doc); - else if (Bt(&edf_dof_flags,EDf_UNCOLLAPSE)) - DocCollapse(FALSE,doc); - - if (result || other_found) - switch (type) { - case LK_FILE_LINE: - result=DocLineNumGoTo(doc,*_num); - break; - case LK_FILE_ANCHOR: - result=DocAnchorFind(doc,needle_str); - break; - case LK_FILE_FIND: - result=DocFind(doc,,needle_str,*_num); - break; - case LK_BIBLE_FIND: - result=DocFind(doc,*_num,needle_str); - break; - default: - DocCenter(doc); - } - *_num=doc->cur_entry->y+1; - - if (edf_dof_flags&EDF_WAS_WRITE) - result=FALSE; - if (!(edf_dof_flags&EDF_BAIL) && DocEd(doc,edf_dof_flags|DOF_DONT_HOME)) { - DocLock(doc); - doc_e=doc->cur_entry; - if (doc_e!=doc) - DocEntryRun(doc,doc_e,TRUE); - DocUnlock(doc); - if (!(LK_DOC<=_type<=LK_DOC_LINE)) { - DocWrite(doc); - if (edf_dof_flags&EDF_WAS_WRITE) - result=TRUE; - } - } - if (!(LK_DOC<=_type<=LK_DOC_LINE)) - DocDel(doc); - } - } catch { - Silent(old_silent); - result=FALSE; - } - Fs->border_src=old_border_src; - return result; -} - -public I64 EdLinkCvt(U8 *link_st,U8 **_filename=NULL,U8 **_needle_str=NULL, - I64 *_num=NULL,I64 edf_dof_flags=0) -{//$LK,"Editor Link",A="MN:LK_FILE"$ --> filename, needle_str and line number. - U8 *st,*ptr,*filename=NULL,*needle_str=NULL,*filename2; - I64 result,i,num=1; - CHashSrcSym *temph; - if (!link_st||!*link_st) { - if (edf_dof_flags&EDF_BAIL) - return -1; - link_st=dsk.temp_filename; - } - st=StrNew(link_st); - result=LK_FILE; - if (StrLen(st)>3 && st[2]==':') { - st[2]=0; - filename2=st+3; - switch (result=DefineMatch(st,"ST_LINK_TYPES",LMF_IGNORE_CASE)) { - case LK_MAN_PAGE: - if (temph=HashFind(filename2,Fs->hash_table,HTG_SRC_SYM)) - result=EdLinkCvt(temph->src_link,&filename, - &needle_str,&num,edf_dof_flags); - else - result=-1; - goto lc_done; - case LK_ADDR: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - i=Str2I64(ptr+1); - } else - i=DFT_ADDR_LINK_BIN_SIZE; - if (ptr=SrcEdLink(ExePrint("%s;",filename2),i)) { - result=EdLinkCvt(ptr,&filename,&needle_str,&num,edf_dof_flags); - Free(ptr); - } else - result=-1; - goto lc_done; - case LK_DEF: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - i=Str2I64(ptr+1); - } else - i=-1; - filename=StrNew(filename2); - num=i; - goto lc_done; - case LK_HELP_INDEX: - filename=StrNew(filename2); - goto lc_done; - case LK_BIBLE_FIND: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - needle_str=StrNew(ptr+1); - } - i=DefineMatch(filename2,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE); - if (i<0) - result=-1; - else { - num=Str2I64(DefineSub(i,"ST_BIBLE_BOOK_LINES")); - filename2=BIBLE_FILENAME; - } - break; - case LK_FILE_LINE: - case LK_PLAIN_LINE: - case LK_DOC_LINE: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - num=Str2I64(ptr+1); - } - break; - case LK_FILE_ANCHOR: - case LK_DOC_ANCHOR: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - needle_str=StrNew(ptr+1); - } - break; - case LK_FILE_FIND: - case LK_PLAIN_FIND: - case LK_DOC_FIND: - if (ptr=StrLastOcc(filename2,",")) { - *ptr=0; - needle_str=StrNew(ptr+1); - if (ptr=StrLastOcc(needle_str,":")) { - *ptr=0; - num=Str2I64(ptr+1); - } - } - break; - } - } else - filename2=st; - if (result>=0) { - if (LK_DOC<=result<=LK_DOC_LINE) - filename=StrNew(filename2); //Holds document address as number. - else - filename=FileNameAbs(filename2,FUF_Z_OR_NOT_Z); - } -lc_done: - Free(st); - if (_filename) - *_filename=filename; - else - Free(filename); - if (_needle_str) - *_needle_str=needle_str; - else - Free(needle_str); - if (_num) - *_num=num; - return result; -} diff --git a/Adam/DolDoc/DocExt.CPP b/Adam/DolDoc/DocExt.CPP new file mode 100644 index 0000000..1c2f5af --- /dev/null +++ b/Adam/DolDoc/DocExt.CPP @@ -0,0 +1,13 @@ +#help_index "DolDoc" +extern Bool DocEd(CDoc *doc,I64 dof_flags=0); +extern I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e, + Bool exited,I64 *_has_action=NULL); +extern U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE); +extern U0 DocLoad(CDoc *doc,U8 *src2,I64 size); +extern U0 DocPrintAtomic(CDoc *doc,U8 *fmt,...); +extern U0 DocPrintPartial(CDoc *doc,U8 *fmt,...); +extern CDocEntry *DocPutS(CDoc *doc,U8 *st); +extern U8 *DocSave(CDoc *doc,I64 *_size=NULL); +extern I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e); +extern U8 *PopUpPickLst(U8 *lst); +extern I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e); diff --git a/Adam/DolDoc/DocFile.CPP b/Adam/DolDoc/DocFile.CPP index e2a8d97..b2cf2a8 100644 --- a/Adam/DolDoc/DocFile.CPP +++ b/Adam/DolDoc/DocFile.CPP @@ -38,7 +38,7 @@ public CDoc *DocRead(U8 *name=NULL,I64 flags=0) CDoc *doc=DocNew; U8 *src,*name2; I64 size=0; - if (!name) name=dsk.temp_filename; + if (!name) name=blkdev.temp_filename; doc->flags|=flags; name2=FileNameAbs(name); StrCpy(doc->filename.name,name2); @@ -242,129 +242,7 @@ public U0 DocInsDoc(CDoc *doc=NULL,CDoc *doc2) DocUnlock(doc); } -#help_index "DolDoc/Clipboard" -public U0 ClipboardDel() -{//Delete everything on clipboard. - DocRst(sys_clipboard_doc,TRUE); -} - -public U0 EdCopyToClipboard(CDoc *doc) -{//Copy $LK,"DOCET_SELECTED",A="MN:DOCET_SELECTED"$ flagged entries to clipboard. - CDoc *doc2=sys_clipboard_doc; - Bool unlock_doc=DocLock(doc), - unlock_doc2=DocLock(doc2); - CDocEntry *doc_e=doc->root.next,*doc_ne; - ClipboardDel; - while (doc_e!=doc) { - if (doc_e->type & DOCET_SELECTED) { - doc_e->type&=~DOCET_SELECTED; - if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { - doc_ne=DocEntryCopy(doc2,doc_e); - QueIns(doc_ne,doc2->root.last); - } - } - doc_e=doc_e->next; - } - if (unlock_doc2) - DocUnlock(doc2); - if (unlock_doc) - DocUnlock(doc); -} - -public U0 EdCutToClipboard(CDoc *doc) -{//Remove selected entries and place on clipboard. - CDoc *doc2=sys_clipboard_doc; - Bool unlock_doc=DocLock(doc), - unlock_doc2=DocLock(doc2); - CDocEntry *doc_e=doc->root.next,*doc_e1,*doc_ne,*doc_e2=NULL; - ClipboardDel; - while (doc_e!=doc) { - doc_e1=doc_e->next; - if (doc_e->type & DOCET_SELECTED) { - doc_e->type&=~DOCET_SELECTED; - if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { - doc_ne=DocEntryCopy(doc2,doc_e); - QueIns(doc_ne,doc2->root.last); - } - if (doc_e==doc->cur_entry || doc_e==doc_e2) - doc_e2=doc_e->next; - DocEntryDel(doc,doc_e); - } - doc_e=doc_e1; - } - if (doc_e2) { - doc->cur_entry=doc_e2; - doc->cur_col=doc_e2->min_col; - } - DocRemSoftNewLines(doc,NULL); - if (unlock_doc2) - DocUnlock(doc2); - if (unlock_doc) - DocUnlock(doc); -} - -public U0 EdPasteClipboard(CDoc *doc) -{//Insert copy of clipboard at insert pt, cur_entry. - CDoc *doc2=sys_clipboard_doc; - Bool unlock_doc=DocLock(doc), - unlock_doc2=DocLock(doc2); - CDocEntry *doc_ce=doc->cur_entry,*doc_e; - if (doc_ce->type_u8==DOCT_DATA) { - doc_e=doc2->root.next; - while (doc_e!=doc2) { - if (doc_e->de_flags&DOCEF_TAG) - DocPrintPartial(doc,"%s",doc_e->tag); - doc_e=doc_e->next; - } - } else - DocInsDoc(doc,doc2); - if (unlock_doc2) - DocUnlock(doc2); - if (unlock_doc) - DocUnlock(doc); -} - -public U0 DocCut(CDoc *doc,CDocEntry *start,CDocEntry *end) -{//Del start to end entry, including end points. - Bool unlock_doc=DocLock(doc); - CDocEntry *doc_e1; - while (start!=doc) { - doc_e1=start->next; - if (start==doc->cur_entry) { - doc->cur_entry=start->next; - doc->cur_col=doc->cur_entry->min_col; - } - DocEntryDel(doc,start); - if (start==end) - break; - start=doc_e1; - } - DocRemSoftNewLines(doc,NULL); - if (unlock_doc) - DocUnlock(doc); -} - -public CDoc *DocCopy(CDoc *doc,CDocEntry *start,CDocEntry *end) -{//Copies start to end entry, including end points. - CDoc *doc2=DocNew; - Bool unlock_doc=DocLock(doc); - CDocEntry *doc_ne; - while (start!=doc) { - if (!Bt(doldoc.type_flags_data,start->type_u8)) { - doc_ne=DocEntryCopy(doc2,start); - QueIns(doc_ne,doc2->root.last); - } - if (start==end) - break; - start=start->next; - } - if (unlock_doc) - DocUnlock(doc); - return doc2; -} - #help_index "DolDoc/Compiler;Compiler/Directive" - public U0 StreamDoc(CDoc *doc) {//Inject doc into compile stream. Use inside #exe{}. //TODO: $LK,"DocRst",A="MN:DocRst"$ @@ -384,7 +262,6 @@ public U0 StreamDoc(CDoc *doc) } #help_index "DolDoc" - Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE) { Bool result=FALSE,unlock; diff --git a/Adam/DolDoc/DocFind.CPP b/Adam/DolDoc/DocFind.CPP index 5d779cf..4b632a3 100644 --- a/Adam/DolDoc/DocFind.CPP +++ b/Adam/DolDoc/DocFind.CPP @@ -362,17 +362,23 @@ sf_done: DocUnlock(doc); } -U0 EdUndoFilter(CDoc *doc) +#define RSAC_REPLACE 0 +#define RSAC_SKIP 1 +#define RSAC_ALL 2 + +I64 PopUpReplaceSkipAllCancel(U8 *header=NULL,U8 *footer=NULL) { - Bool unlock=DocLock(doc); - CDocEntry *doc_ce=doc->root.next; - while (doc_ce!=doc) { - doc_ce->de_flags&=~DOCEF_FILTER_SKIP; - doc_ce=doc_ce->next; - } - doc->find_replace->filter_lines=0; - if (unlock) - DocUnlock(doc); + I64 i; + CDoc *doc=DocNew; + if (header) DocPrint(doc,"%s",header); + DocPrint(doc,"$$CM+LX,1,4$$$$BT,\"REPLACE\",LE=RSAC_REPLACE$$" + "$$CM+LX,17,0$$$$BT,\"SKIP\",LE=RSAC_SKIP$$" + "$$CM+LX,1,3$$$$BT,\"ALL\",LE=RSAC_ALL$$" + "$$CM+LX,17,0$$$$BT,\"CANCEL\",LE=DOCM_CANCEL$$\n"); + if (footer) DocPrint(doc,"%s",footer); + i=PopUpMenu(doc); + DocDel(doc); + return i; } I64 EdFindReplace(CDoc *doc) @@ -481,8 +487,6 @@ I64 EdFindReplace(CDoc *doc) doc->cur_entry=doc_e; if (cmd!=RSAC_ALL) DocCenter(doc); - doc_e=doc->cur_entry; - src=doc->cur_col+doc_e->tag; if (cmd!=RSAC_ALL) { DocUnlock(doc); cmd=PopUpReplaceSkipAllCancel(""); @@ -490,6 +494,8 @@ I64 EdFindReplace(CDoc *doc) if (cmd<0) goto fr_unlock_done; } + doc_e=doc->cur_entry; + src=doc->cur_col+doc_e->tag; if (cmd==RSAC_REPLACE || cmd==RSAC_ALL) { dlen=StrLen(doc_e->tag); doc_e->max_col=dlen+rlen-plen; diff --git a/Adam/DolDoc/DocForm.CPP b/Adam/DolDoc/DocForm.CPP new file mode 100644 index 0000000..70f5618 --- /dev/null +++ b/Adam/DolDoc/DocForm.CPP @@ -0,0 +1,284 @@ +#help_index "DolDoc/Form" + +U0 DocFormFwd(CDoc *doc,Bool giveup=FALSE) +{ + CDocEntry *doc_e=doc->cur_entry,*doc_e2=doc_e; + if (doc->flags & DOCF_FORM) { + if (doc_e==doc) goto ff_recover; + while (!Bt(doldoc.type_flags_form,doc_e->type_u8) && + !(doc_e->de_flags&DOCEF_LINK) || + doc_e->de_flags&DOCEF_SKIP_IN_FORM) { + doc_e=doc_e->next; + if (doc_e==doc) { +ff_recover: + doc->cur_col=0; + if (!giveup) { + doc->cur_entry=doc_e->last; + DocFormBwd(doc,TRUE); + } else + doc->cur_entry=doc; + return; + } + } + } + while (doc_e->type_u8==DOCT_INDENT) + doc_e=doc_e->next; + if (doc_e!=doc_e2) { + doc->cur_col=doc_e->min_col; + doc->cur_entry=doc_e; + } +} + +U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE) +{ + CDocEntry *doc_e=doc->cur_entry,*doc_e2=doc_e; + if (doc->flags & DOCF_FORM) { + while (!Bt(doldoc.type_flags_form,doc_e->type_u8) && + !(doc_e->de_flags&DOCEF_LINK) || + doc_e->de_flags&DOCEF_SKIP_IN_FORM) { + doc_e=doc_e->last; + if (doc_e==doc) { + doc->cur_col=0; + if (!giveup) { + doc->cur_entry=doc_e->next; + DocFormFwd(doc,TRUE); + } else + doc->cur_entry=doc; + return; + } + } + } + while (doc_e->type_u8==DOCT_INDENT) + doc_e=doc_e->next; + if (doc_e!=doc_e2) { + doc->cur_col=doc_e->min_col; + doc->cur_entry=doc_e; + } +} + +U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL) +{ + I64 i; + U8 *ptr; + CHashDefineStr *temph; + if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || + doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { + if (d==DOCM_CANCEL) { + if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { + if (!(ptr=doc_e->data)) return; + } else + ptr=&doc_e->data; + switch(doc_e->raw_type) { + case RT_I0: + case RT_U0: d=0; break; + case RT_I8: d=*ptr(I8 *); break; + case RT_U8: d=*ptr(U8 *); break; + case RT_I16: d=*ptr(I16 *); break; + case RT_U16: d=*ptr(U16 *); break; + case RT_I32: d=*ptr(I32 *); break; + case RT_U32: d=*ptr(U32 *); break; + default: d=*ptr(I64 *); + } + } + if (doc_e->type_u8==DOCT_DATA) { + StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data); + if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) { + i=StrLen(doc_e->tag); + doc_e->tag[i++]='_'; + doc_e->tag[i]=0; + } + doc_e->max_col=StrLen(doc_e->tag); + } else if (doc_e->de_flags & DOCEF_LST) { + if (doc_e->de_flags & DOCEF_DEFINE && (temph=HashFind(doc_e->define_str, + doc->win_task->hash_table,HTT_DEFINE_STR)) && 0<=dcnt) { + ptr=MStrPrint("[%s]",temph->sub_lst[d]); + Free(doc_e->tag); + doc_e->tag=StrNew(ptr,doc->mem_task); + Free(ptr); + } else { + Free(doc_e->tag); + doc_e->tag=StrNew("[]",doc->mem_task); + } + } else { + if (d) + doc_e->de_flags|=DOCEF_CHECKED_COLLAPSED; + else + doc_e->de_flags&=~DOCEF_CHECKED_COLLAPSED; + } + } +} + +U0 DocDataScan(CDoc *doc,CDocEntry *doc_e) +{ + I64 i,d; + U8 *ptr,*ptr1,*ptr2; + CHashDefineStr *temph; + if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || + doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { + if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { + if (!(ptr=doc_e->data)) return; + } else + ptr=&doc_e->data; + if (doc_e->type_u8==DOCT_DATA) { + i=StrLen(doc_e->tag); + if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) + doc_e->tag[--i]=0; + if (i>doc_e->len+doc_e->min_col) + doc_e->tag[doc_e->len+doc_e->min_col]=0; + if (RT_I8<=doc_e->raw_type<=RT_U32) { + StrScan(doc_e->tag,doc_e->aux_str,&d,doc_e->my_fmt_data); + if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) + doc_e->tag[i]='_'; + } else if (RT_I64<=doc_e->raw_type<=RT_UF64) { + StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data); + if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) + doc_e->tag[i]='_'; + return; + } + } else if (doc_e->de_flags & DOCEF_LST) { + d=0; + if (doc_e->tag && doc_e->de_flags & DOCEF_DEFINE && + (temph=HashFind(doc_e->define_str, + doc->win_task->hash_table,HTT_DEFINE_STR))) { + ptr1=ptr2=StrNew(doc_e->tag); + if (*ptr2=='[') { + ptr2++; + i=StrLen(ptr2); + if (ptr2[i-1]==']') + ptr2[i-1]=0; + } + d=LstMatch(ptr2,temph->data); + Free(ptr1); + } + } else { + if (doc_e->de_flags & DOCEF_CHECKED_COLLAPSED) + d=TRUE; + else + d=FALSE; + } + switch(doc_e->raw_type) { + case RT_I8: + case RT_U8: + *ptr(U8 *)=d; + case RT_I0: + case RT_U0: + break; + case RT_I16: + case RT_U16: + *ptr(U16 *)=d; + break; + case RT_I32: + case RT_U32: + *ptr(U32 *)=d; + break; + default: + *ptr(I64 *)=d; + } + } +} + +#help_index "DolDoc/Input;StdIn/DolDoc" +public Bool DocForm(U8 *_d,U8 *class_name=lastclass, + I64 dof_flags=0,U8 *header=NULL,U8 *footer=NULL) +{//User input. Supply a class name that has fmtstr definitions. +//See $LK,"::/Demo/DolDoc/Form.CPP"$ and $LK,"::/Demo/LastClass.CPP"$. + CMemberLst *ml; + CDocEntry *doc_e; + U8 *fmtstr; + CHashClass *tempc; + CDoc *doc; + Bool result=FALSE; + I64 old_border_src=Fs->border_src,has_action; + if (!(tempc=HashFind(class_name,Fs->hash_table,HTT_CLASS))) + return FALSE; + doc=DocNew; + doc->desc='Form'; + if (header) DocPrint(doc,"%s",header); + doc->flags|=DOCF_OVERSTRIKE|DOCF_FORM; + if (dof_flags&DOF_MIN_SIZE) + doc->flags|=DOCF_MIN_SIZE; + ml=tempc->member_lst_and_root; + while (ml) { + if (fmtstr=MemberMetaData("fmtstr",ml)) { + doc_e=DocPrint(doc,"%s",fmtstr); + doc_e->data=_d+ml->offset; + doc_e->my_fmt_data=MemberMetaData("fmtdata",ml); + DocDataFmt(doc,doc_e); + } + ml=ml->next; + } + if (footer) DocPrint(doc,"%s",footer); + if (doc->root.next!=doc) { + Fs->border_src=BDS_CONST; + DocRecalc(doc); + if (DocEd(doc,dof_flags)) { + doc_e=doc->cur_entry; + result=TRUE; + if (doc_e!=doc) { + if (DocEntryRun(doc,doc_e,TRUE,&has_action)==DOCM_CANCEL && has_action) + result=FALSE; + DocUnlock(doc); + } + } + } + DocDel(doc); + Fs->border_src=old_border_src; + return result; +} + +U0 DocMenuEndTaskCB() +{ + WinToTop; + throw; +} + +public I64 DocMenu(CDoc *m,I64 dof_flags=0) +{//Run menu chooser doc. Returns menu doc unlocked. + U8 *old_end_cb=Fs->task_end_cb; + Bool old_break_shift_esc=LBts(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC); + CDocEntry *doc_e; + I64 old_border_src=Fs->border_src,result=DOCM_CANCEL,has_action; + Fs->task_end_cb=&DocMenuEndTaskCB; + try { + if (m) { + m->desc='Menu'; + Fs->border_src=BDS_CONST; +dm_restart: + if (DocEd(m,dof_flags)) { + doc_e=m->cur_entry; + if (doc_e!=m) { + result=DocEntryRun(m,doc_e,TRUE,&has_action); + DocUnlock(m); + if (!has_action) { + result=DOCM_CANCEL; + dof_flags|=DOF_DONT_HOME; + goto dm_restart; + } + } + } + } + } catch { + if (!Fs->except_ch) { + if (!(dof_flags & DOF_INTERCEPT_TASK_END)) + Exit; + Fs->catch_except=TRUE; + } + } + LBEqu(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC,old_break_shift_esc); + Fs->border_src=old_border_src; + Fs->task_end_cb=old_end_cb; + return result; +} + +public I64 PopUpMenu(CDoc *doc,I64 dof_flags=0) +{//Run menu chooser doc in PopUp win task. + doc->flags|=DOCF_MIN_SIZE | DOCF_FORM; + return PopUpPrint("DocMenu(0x%X,0x%X);",doc,dof_flags); +} + +public Bool PopUpForm(U8 *_d,U8 *class_name=lastclass, + I64 dof_flags=DOF_MIN_SIZE,U8 *header=NULL,U8 *footer=NULL) +{//See $LK,"::/Demo/DolDoc/Form.CPP"$ and $LK,"::/Demo/LastClass.CPP"$. + return PopUpPrint("DocForm(0x%X,0x%X,0x%X,0x%X,0x%X);",_d,class_name, + dof_flags,header,footer); +} diff --git a/Adam/DolDoc/DocGet.CPP b/Adam/DolDoc/DocGet.CPP new file mode 100644 index 0000000..60b2b71 --- /dev/null +++ b/Adam/DolDoc/DocGet.CPP @@ -0,0 +1,224 @@ +#help_index "DolDoc" + +U0 EdUndoFilter(CDoc *doc) +{ + Bool unlock=DocLock(doc); + CDocEntry *doc_ce=doc->root.next; + while (doc_ce!=doc) { + doc_ce->de_flags&=~DOCEF_FILTER_SKIP; + doc_ce=doc_ce->next; + } + doc->find_replace->filter_lines=0; + if (unlock) + DocUnlock(doc); +} + +public I64 DocGetKey(I64 *_sc=NULL) +{//Called by $LK,"View",A="MN:View"$. You probably don't need this. + I64 ch,sc; + Bool cont,old_key_desc; + do { + old_key_desc=LBtr(&Fs->win_inhibit,WIf_SELF_KEY_DESC); + do ch=GetKey(&sc,TRUE); + while (sc&SCF_KEY_DESC); + LBEqu(&Fs->win_inhibit,WIf_SELF_KEY_DESC,old_key_desc); + + DocRecalc(DocPut); + cont=FALSE; + if ((ch==CH_ESC || ch==CH_SHIFT_ESC) && //Check for exit filter mode + DocPut && DocPut->find_replace->filter_lines) { + EdUndoFilter(DocPut); + cont=TRUE; + } + } while (cont); + if (_sc) *_sc=sc; + return ch; +} + +#help_index "DolDoc/Input;StdIn/DolDoc" +public U8 *DocScanLine(CDoc *doc,CDocEntry *doc_e, + I64 *cur_col=NULL,CDocEntry **_do_e_end=NULL) +{//Start at entry in doc,make and return one line as str. + CDocEntry *doc_e2=doc_e; + Bool unlock=DocLock(doc); + U8 *dst,*src,*start,*result; + I64 i=0; + if (cur_col) + *cur_col=-1; + while (doc_e2!=doc && doc_e2->type_u8!=DOCT_NEW_LINE) { + if (doc_e2->de_flags&DOCEF_TAG && doc_e2->tag) { + src=doc_e2->tag; + i+=StrLen(src); + } else if (doc_e2->type_u8==DOCT_TAB) + i++; + doc_e2=doc_e2->next; + } + result=MAlloc(i+1); + dst=result; + while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) { + start=dst; + if (doc_e->de_flags&DOCEF_TAG && doc_e->tag) { + src=doc_e->tag; + while (*src) + *dst++=*src++; + } else if (doc_e->type_u8==DOCT_TAB) + *dst++='\t'; + if (doc_e==doc->cur_entry && cur_col) + *cur_col=start-result+doc->cur_col; + doc_e=doc_e->next; + } + if (_do_e_end) *_do_e_end=doc_e; + *dst=0; + if (doc_e==doc->cur_entry && cur_col && !doc->cur_col) + *cur_col=dst-result; + if (unlock) + DocUnlock(doc); + return result; +} + +U8 *DocGetStr2(I64 flags=0) +{//$LK,"Flags",A="MN:GSF_SHIFT_ESC_EXIT"$ + CDoc *doc; + CDocEntry *doc_e,*doc_e_end; + U8 *st,*st2,*result; + I64 ch,sc; + "$$PT$$"; + do { + ch=DocGetKey(&sc); + if (ch==CH_ESC) { + if (doc=DocPut) { + DocLock(doc); + if (doc->doc_signature==DOC_SIGNATURE_VAL && doc->cur_entry!=doc) { + doc_e=DocEntryCopy(doc,doc->cur_entry); + DocBottom(doc); + DocEntryRun(doc,doc_e,TRUE); + DocEntryDel(doc,doc_e); + } + DocUnlock(doc); + } + if (flags&GSF_WITH_NEW_LINE) + break; + } if (ch==CH_SHIFT_ESC) { + if (flags&GSF_SHIFT_ESC_EXIT) + Exit; + else { + result=StrNew(""); + goto gs_done; + } + } +// is a blank line without entry + } while (flags&GSF_WITH_NEW_LINE || ch!='\n' || + sc&SCF_CTRL && sc&SCF_SHIFT); + + doc=DocPut; + DocLock(doc); + if (flags&GSF_WITH_NEW_LINE) { + doc_e=doc->cur_entry; + do doc_e=doc_e->last; + while (doc_e!=doc && doc_e->type_u8!=DOCT_PMT); + doc_e=doc_e->next; + if (result=DocScanLine(doc,doc_e,NULL,&doc_e_end)) { + while (doc_e_end!=doc && doc_e_end->type_u8==DOCT_NEW_LINE) { + st2=MStrPrint("%s\n",result); + Free(result); + result=st2; + if (st=DocScanLine(doc,doc_e_end->next,NULL,&doc_e_end)) { + st2=MStrPrint("%s%s",result,st); + Free(st); + Free(result); + result=st2; + } + } + } + } else { + doc_e=doc->cur_entry; + do doc_e=doc_e->last; + while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE && + doc_e->type_u8!=DOCT_PMT); + if (doc_e!=doc && doc_e->type_u8!=DOCT_PMT) { + do doc_e=doc_e->last; + while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE && + doc_e->type_u8!=DOCT_PMT); + } + doc_e=doc_e->next; + result=DocScanLine(doc,doc_e,NULL); + } + DocUnlock(doc); +gs_done: + "$$PT$$$$FG$$$$BG$$"; + return result; +} + +#help_index "Keyboard Devices;Char/Input;StdIn" +public I64 GetI64(U8 *msg=NULL,I64 dft=0,I64 lo=MIN_I64,I64 hi=MAX_I64) +{//Prompt user for I64 expression. + Bool okay; + U8 *st; + I64 result; + while (TRUE) { + if (msg) + "" msg,dft; + st=GetStr; + if (!*st) { + Free(st); + return dft; + } + try { + result=ExePrint2("ToI64(%s);",st); + okay=TRUE; + } catch { + Fs->catch_except=TRUE; + okay=FALSE; + } + Free(st); + if (okay && lo<=result<=hi) + return result; + } +} + +public F64 GetF64(U8 *msg=NULL,F64 dft=0,F64 lo=MIN_F64,F64 hi=MAX_F64) +{//Prompt user for F64 expression. + Bool okay; + U8 *st; + F64 result; + while (TRUE) { + if (msg) + "" msg,dft; + st=GetStr; + if (!*st) { + Free(st); + return dft; + } + try { + result=ExePrint2("ToF64(%s);",st)(F64); + okay=TRUE; + } catch { + Fs->catch_except=TRUE; + okay=FALSE; + } + Free(st); + if (okay && lo<=result<=hi) + return result; + } +} + +public CDate GetDate(U8 *msg=NULL,CDate dft=MIN_I64, + CDate lo=MIN_I64,CDate hi=MAX_I64) +{//Prompt user for date expression. (Use $LK,"Now",A="MN:Now"$() if you want current time.) + U8 *st; + CDate result; + if (dft==MIN_I64) dft=Now; + while (TRUE) { + if (msg) + "" msg,dft,dft; + st=GetStr; + if (!*st) { + Free(st); + return dft; + } + result=Str2Date(st); + Free(st); + if (result>=lo && result<=hi) + return result; + } +} diff --git a/Adam/DolDoc/DocGr.CPP b/Adam/DolDoc/DocGr.CPP new file mode 100644 index 0000000..7ef6c37 --- /dev/null +++ b/Adam/DolDoc/DocGr.CPP @@ -0,0 +1,161 @@ +#help_index "Graphics/Input" + +public I64 PopUpColor(U8 *header=NULL, + Bool allow_transparent=TRUE,Bool allow_dft=TRUE) +{//Chooser for 16-color, default or transparent. + I64 i; + CDoc *doc=DocNew; + if (header) + DocPrint(doc,"%s",header); + if (allow_transparent) + DocPrint(doc,"$$MU,\"TRANSPARENT\",LE=TRANSPARENT$$\n"); + for (i=0;ix_scale=1.0; + tf->y_scale=1.0; + tf->z_scale=1.0; + tf->é_x=0.0; + tf->é_y=0.0; + tf->é_z=0.0; + tf->x_offset=0.0; + tf->y_offset=0.0; + tf->z_offset=0.0; + if (PopUpForm(tf)) { + MemSet(r,0,16*sizeof(I64)); + r[0] =tf->x_scale*GR_SCALE; + r[5] =tf->y_scale*GR_SCALE; + r[10]=tf->z_scale*GR_SCALE; + r[15]=GR_SCALE; + + Mat4x4RotZ(r,tf->é_z*ã/180.0); + Mat4x4RotY(r,tf->é_y*ã/180.0); + Mat4x4RotX(r,tf->é_x*ã/180.0); + + r[3] =tf->x_offset*GR_SCALE; + r[7] =tf->y_offset*GR_SCALE; + r[11]=tf->z_offset*GR_SCALE; + return TRUE; + } else + return FALSE; +} + +#define PU_SPACING 10 +U0 DrawIt(CTask *task,CDC *dc) +{ + I64 i,j,i1,j1; + CDoc *doc=DocPut(task); + for (j=0;j<17;j++) + for (i=0;i<17;i++) { + if (j<16) + j1=j; + else + j1=TRANSPARENT; + if (i<16) + i1=i; + else + i1=TRANSPARENT; + dc->color=j1+i1<<16+ROPF_DITHER; + GrRect(dc,i*PU_SPACING,j*PU_SPACING+FramePtr("DitherFrame",task), + PU_SPACING,PU_SPACING); + } + i=(17*PU_SPACING+FONT_WIDTH-1)/FONT_WIDTH; + if (doc->max_x>i) i=doc->max_x; + WinHorz(task->win_left,task->win_left+i,task); + WinVert(task->win_top,task->win_top+doc->max_y+ + (17*PU_SPACING+FONT_WIDTH-1)/FONT_WIDTH,task); +} + +I64 DitherColor2(U8 *header=NULL) +{ + I64 msg_code,a1,a2,result=-1,i,j; + DocClear; + "%s",header; + DocRecalc(DocPut); + FramePtrAdd("DitherFrame",(DocPut->max_y+1)*FONT_HEIGHT); + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + Fs->draw_it=&DrawIt; + do { + msg_code=GetMsg(&a1,&a2,1<=0 && a2>=0 && 0<=j<17 && 0<=i<17) { + if (j==16) j=TRANSPARENT; + if (i==16) i=TRANSPARENT; + result=j+i<<16+ROPF_DITHER; + goto dc_done; + } + } + } while (!(msg_code==MSG_KEY_DOWN && (a1==CH_ESC || a1==CH_SHIFT_ESC))); + do GetMsg(&a1,&a2,1<settings; diff --git a/Adam/DolDoc/DocLink.CPP b/Adam/DolDoc/DocLink.CPP new file mode 100644 index 0000000..9ecaf02 --- /dev/null +++ b/Adam/DolDoc/DocLink.CPP @@ -0,0 +1,344 @@ +#help_index "DolDoc/Link" + +/* See $LK,"TempleOS Link Types",A="MN:ST_LINK_TYPES"$. +"filename" +"FI:filename" +"FA:haystack_filename,needle_anchor_str" +"FF:haystack_filename,needle_str" +"FF:haystack_filename,needle_str:occurnum" +"FL:filename,linenum" +"MN:SymName" +"PI:filename" +"PF:haystack_filename,needle_str" +"PF:haystack_filename,needle_str:occurnum" +"PL:filename,linenum" +"BF:haystack_bible_book,needle_str" +"DF:word" +"DF:word,defnum" +"HI:index" +"AD:code_address_number" + +To edit a doc structure already in memory. See $LK,"SpriteEdText",A="MN:SpriteEdText"$(). +"AI:doc_address" +"AA:haystack_doc_address,needle_anchor_str" +"AF:haystack_doc_address,needle_str" +"AF:haystack_doc_address,needle_str:occurnum" +"AL:doc_address,linenum" +*/ + +#define LK_FILE 0 +#define LK_FILE_ANCHOR 1 +#define LK_FILE_FIND 2 +#define LK_FILE_LINE 3 +#define LK_MAN_PAGE 4 +#define LK_PLAIN 5 +#define LK_PLAIN_FIND 6 +#define LK_PLAIN_LINE 7 +#define LK_BIBLE_FIND 8 +#define LK_DEF 9 +#define LK_HELP_INDEX 10 +#define LK_ADDR 11 +#define LK_DOC 12 //See $LK,"SpriteEdText",A="MN:SpriteEdText"$() +#define LK_DOC_ANCHOR 13 +#define LK_DOC_FIND 14 +#define LK_DOC_LINE 15 +#define LK_PLACE_ANCHOR 16 + +public U8 *DocEntryLink(CDoc *doc,CDocEntry *doc_e) +{//MAlloc new str, either tag or aux_str if link. + if (doc_e->de_flags&DOCEF_LINK) { + if (doc_e->de_flags & DOCEF_AUX_STR) + return StrNew(doc_e->aux_str,doc->mem_task); + else if (doc_e->de_flags & DOCEF_TAG) + return StrNew(doc_e->tag,doc->mem_task); + } + return NULL; +} + +Bool DocFileEd(I64 _type,U8 *filename, + U8 *needle_str,I64 *_num,I64 edf_dof_flags) +{ + I64 type=_type,flags=0,old_border_src=Fs->border_src; + CDocEntry *doc_e; + CDoc *doc; + Bool old_silent=Bt(&Fs->display_flags,DISPLAYf_SILENT), + result=FALSE,other_found=FALSE; + U8 *st1,*st2; + try { + switch (type) { + case LK_PLAIN: + flags=DOCF_PLAIN_TEXT; + case LK_DOC: + type=LK_FILE; + break; + case LK_DOC_ANCHOR: + type=LK_FILE_ANCHOR; + break; + case LK_PLAIN_FIND: + flags=DOCF_PLAIN_TEXT; + case LK_DOC_FIND: + type=LK_FILE_FIND; + break; + case LK_PLAIN_LINE: + flags=DOCF_PLAIN_TEXT; + case LK_DOC_LINE: + type=LK_FILE_LINE; + break; + case LK_BIBLE_FIND: + flags=DOCF_PLAIN_TEXT; + break; + } + + flags|=DOCF_ALLOW_UNDO; + + if (LK_DOC<=_type<=LK_DOC_LINE) { + doc=Str2I64(filename);//See $LK,"SpriteEdText",A="MN:SpriteEdText"$() + result=TRUE; + } else { + + st1=StrNew(filename); + st2=StrNew(filename); + StrLastRem(st1,"/",st2); //st2 is name without dir + + if (!FileNameChk(st2)) + doc=NULL; + else { + Silent; + if (Bt(&edf_dof_flags,EDf_BAIL)) //if bail, scan parents + result=FileFind(filename,, + FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); + else if (!(result=FileFind(filename,, + FUF_JUST_FILES))) + other_found=FileFind(filename,, + FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); + doc=DocRead(filename,flags); + doc->desc='Edit'; + Silent(old_silent); + Fs->border_src=BDS_ED_FILENAME_DRV; + } + + Free(st1); + Free(st2); + } + if (!doc||doc->doc_signature!=DOC_SIGNATURE_VAL) + result=FALSE; + else { + if (Bt(&edf_dof_flags,EDf_COLLAPSE)) + DocCollapse(TRUE,doc); + else if (Bt(&edf_dof_flags,EDf_UNCOLLAPSE)) + DocCollapse(FALSE,doc); + + if (result || other_found) + switch (type) { + case LK_FILE_LINE: + result=DocLineNumGoTo(doc,*_num); + break; + case LK_FILE_ANCHOR: + result=DocAnchorFind(doc,needle_str); + break; + case LK_FILE_FIND: + result=DocFind(doc,,needle_str,*_num); + break; + case LK_BIBLE_FIND: + result=DocFind(doc,*_num,needle_str); + break; + default: + DocCenter(doc); + } + *_num=doc->cur_entry->y+1; + + if (edf_dof_flags&EDF_WAS_WRITE) + result=FALSE; + if (!(edf_dof_flags&EDF_BAIL) && DocEd(doc,edf_dof_flags|DOF_DONT_HOME)) { + DocLock(doc); + doc_e=doc->cur_entry; + if (doc_e!=doc) + DocEntryRun(doc,doc_e,TRUE); + DocUnlock(doc); + if (!(LK_DOC<=_type<=LK_DOC_LINE)) { + DocWrite(doc); + if (edf_dof_flags&EDF_WAS_WRITE) + result=TRUE; + } + } + if (!(LK_DOC<=_type<=LK_DOC_LINE)) + DocDel(doc); + } + } catch { + Silent(old_silent); + result=FALSE; + } + Fs->border_src=old_border_src; + return result; +} + +#define DFT_ADDR_LINK_BIN_SIZE 64 + +public I64 EdLinkCvt(U8 *link_st,U8 **_filename=NULL,U8 **_needle_str=NULL, + I64 *_num=NULL,I64 edf_dof_flags=0) +{//$LK,"Editor Link",A="MN:LK_FILE"$--> filename, needle_str and line number. + U8 *st,*ptr,*filename=NULL,*needle_str=NULL,*filename2; + I64 result,i,num=1; + CHashSrcSym *temph; + if (!link_st||!*link_st) { + if (edf_dof_flags&EDF_BAIL) + return -1; + link_st=blkdev.temp_filename; + } + st=StrNew(link_st); + result=LK_FILE; + if (StrLen(st)>3 && st[2]==':') { + st[2]=0; + filename2=st+3; + switch (result=DefineMatch(st,"ST_LINK_TYPES",LMF_IGNORE_CASE)) { + case LK_MAN_PAGE: + if (temph=HashFind(filename2,Fs->hash_table,HTG_SRC_SYM)) + result=EdLinkCvt(temph->src_link,&filename, + &needle_str,&num,edf_dof_flags); + else + result=-1; + goto lc_done; + case LK_ADDR: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + i=Str2I64(ptr+1); + } else + i=DFT_ADDR_LINK_BIN_SIZE; + if (ptr=SrcEdLink(ExePrint("%s;",filename2),i)) { + result=EdLinkCvt(ptr,&filename,&needle_str,&num,edf_dof_flags); + Free(ptr); + } else + result=-1; + goto lc_done; + case LK_DEF: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + i=Str2I64(ptr+1); + } else + i=-1; + filename=StrNew(filename2); + num=i; + goto lc_done; + case LK_HELP_INDEX: + filename=StrNew(filename2); + goto lc_done; + case LK_BIBLE_FIND: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + needle_str=StrNew(ptr+1); + } + i=DefineMatch(filename2,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE); + if (i<0) + result=-1; + else { + num=Str2I64(DefineSub(i,"ST_BIBLE_BOOK_LINES")); + filename2=BIBLE_FILENAME; + } + break; + case LK_FILE_LINE: + case LK_PLAIN_LINE: + case LK_DOC_LINE: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + num=Str2I64(ptr+1); + } + break; + case LK_FILE_ANCHOR: + case LK_DOC_ANCHOR: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + needle_str=StrNew(ptr+1); + } + break; + case LK_FILE_FIND: + case LK_PLAIN_FIND: + case LK_DOC_FIND: + if (ptr=StrLastOcc(filename2,",")) { + *ptr=0; + needle_str=StrNew(ptr+1); + if (ptr=StrLastOcc(needle_str,":")) { + *ptr=0; + num=Str2I64(ptr+1); + } + } + break; + } + } else + filename2=st; + if (result>=0) { + if (LK_DOC<=result<=LK_DOC_LINE) + filename=StrNew(filename2); //Holds document address as number. + else + filename=FileNameAbs(filename2,FUF_Z_OR_NOT_Z); + } +lc_done: + Free(st); + if (_filename) + *_filename=filename; + else + Free(filename); + if (_needle_str) + *_needle_str=needle_str; + else + Free(needle_str); + if (_num) + *_num=num; + return result; +} + +public Bool DocLinkChk(U8 *link_st) +{//Check for bad $LK,"Editor Link",A="MN:LK_FILE"$. + U8 *filename,*st; + Bool result=FALSE; + if (link_st) { + switch (EdLinkCvt(link_st,&filename)) { + case -1: + break; + case LK_FILE_LINE: + case LK_PLAIN_LINE: + case LK_FILE: +//We don't check line number + result=FileFind(filename,, + FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); + break; + case LK_BIBLE_FIND: + st=StrNew(link_st+3); + if (StrOcc(st,',')) + StrLastRem(st,","); + if (DefineMatch(st,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE)>=0) + result=TRUE; + Free(st); + break; + default://TODO: Need to validate HI: and DF: + if (Ed(link_st,EDF_BAIL)) + result=TRUE; + } + Free(filename); + } + return result; +} + +public U8 *DocLinkFile(U8 *link_st,CTask *mem_task=NULL) +{//Return the file for an $LK,"Editor Link Types",A="MN:LK_FILE"$. + U8 *filename=NULL,*st,*result=NULL; + if (link_st) { + switch (EdLinkCvt(link_st,&filename)) { + case LK_FILE: + case LK_FILE_ANCHOR: + case LK_FILE_FIND: + case LK_FILE_LINE: + case LK_PLAIN: + case LK_PLAIN_FIND: + case LK_PLAIN_LINE: + st=FileNameAbs(filename,FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); + result=StrNew(st); + Free(st); + break; + case LK_BIBLE_FIND: + result=StrNew(BIBLE_FILENAME,mem_task); + break; + } + Free(filename); + } + return result; +} diff --git a/Adam/DolDoc/DocMacro.CPP b/Adam/DolDoc/DocMacro.CPP index 88e26f6..d6322d8 100644 --- a/Adam/DolDoc/DocMacro.CPP +++ b/Adam/DolDoc/DocMacro.CPP @@ -58,7 +58,6 @@ U8 *SysMacro2Str(CSrvCmd *macro_root) I64 cnt=1; //terminating zero U8 *ptr,*m; CMacroTemp *tempmt,*tempmt1,root; - Bool old_preempt=Preempt; LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0); QueInit(&root); @@ -102,18 +101,15 @@ U8 *SysMacro2Str(CSrvCmd *macro_root) tempmt=tempmt1; } *ptr=0; - Preempt(old_preempt); return m; } U0 PlaySysMacro(I64 n=1) { CTask *task=sys_focus_task; - Bool old_preempt; U8 *m; if (TaskValidate(task)) { LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0); - old_preempt=Preempt; m=SysMacro2Str(&sys_macro_root); while (n-- && TaskValidate(task)) { if (task==Fs) @@ -122,20 +118,17 @@ U0 PlaySysMacro(I64 n=1) XTalkStrWait(task,"%s",m); } Free(m); - Preempt(old_preempt); } } U0 EdInsCapturedMacro() { - Bool old_preempt=Preempt; U8 *st=SysMacro2Str(&sys_macro_root); if (sys_focus_task) { XTalk(sys_focus_task,"$$MA+LA,T=\"%s\",LM=\"%Q\"$$", captured_macro_name,st); Free(st); } - Preempt(old_preempt); } #define SM_RECORD 0 diff --git a/Adam/DolDoc/DocMain.CPP b/Adam/DolDoc/DocMain.CPP deleted file mode 100644 index 9448bdc..0000000 --- a/Adam/DolDoc/DocMain.CPP +++ /dev/null @@ -1,602 +0,0 @@ -#help_index "DolDoc/Cmd Line (Typically);Cmd Line (Typically)" - -public Bool Ed(U8 *link_st,I64 edf_dof_flags=0) -{//Invoke document editor. - U8 *filename,*needle_str; - I64 i,num; - Bool cont,result=FALSE; - CDoc *doc; - - switch (i=EdLinkCvt(link_st,&filename,&needle_str,&num,edf_dof_flags)) { - case -1: - break; - case LK_DEF: - doc=DocNew; - doc->desc='DictDef'; - ACDDefsPut(doc,filename,num); - goto ej_doc; - case LK_HELP_INDEX: - doc=DocNew; - doc->desc='HelpIndx'; - DocHelpIndex(doc,filename); -ej_doc: - if (!(edf_dof_flags&EDF_BAIL)) { - DocEd(doc); - DocDel(doc); - } - if (!(edf_dof_flags&EDF_WAS_WRITE)) - result=TRUE; - break; - default: - if (IsRaw) - result=EdLite(filename,num,edf_dof_flags); - else { - cont=TRUE; - if (!(edf_dof_flags&EDF_BAIL) && !(LK_DOC<=i<=LK_DOC_LINE) && - !FilesFindMatch(filename,FILEMASK_TXT) && - !PopUpCancelOk(ST_WARN_ST "Not Text File\n\n")) - cont=FALSE; - if (cont) - result=DocFileEd(i,filename,needle_str,&num,edf_dof_flags); - } - } - Free(filename); - Free(needle_str); - return result; -} - -public Bool Plain(U8 *filename,I64 edf_dof_flags=0) -{//Edit document in plain text mode, so dollar signs are not special. - Bool result; - U8 *st=MStrPrint("PI:%s",filename); - result=Ed(st,edf_dof_flags); - Free(st); - return result; -} - -#help_index "DolDoc" -public Bool DocLinkChk(U8 *link_st) -{//Check for bad $LK,"Editor Link",A="MN:LK_FILE"$. - U8 *filename,*st; - Bool result=FALSE; - if (link_st) { - switch (EdLinkCvt(link_st,&filename)) { - case -1: - break; - case LK_FILE_LINE: - case LK_PLAIN_LINE: - case LK_FILE: -//We don't check line number - result=FileFind(filename,, - FUF_JUST_FILES|FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); - break; - case LK_BIBLE_FIND: - st=StrNew(link_st+3); - if (StrOcc(st,',')) - StrLastRem(st,","); - if (DefineMatch(st,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE)>=0) - result=TRUE; - Free(st); - break; - default://TODO: Need to validate HI: and DF: - if (Ed(link_st,EDF_BAIL)) - result=TRUE; - } - Free(filename); - } - return result; -} - -public U8 *DocLinkFile(U8 *link_st,CTask *mem_task=NULL) -{//Return the file for an $LK,"Editor Link Types",A="MN:LK_FILE"$. - U8 *filename=NULL,*st,*result=NULL; - if (link_st) { - switch (EdLinkCvt(link_st,&filename)) { - case LK_FILE: - case LK_FILE_ANCHOR: - case LK_FILE_FIND: - case LK_FILE_LINE: - case LK_PLAIN: - case LK_PLAIN_FIND: - case LK_PLAIN_LINE: - st=FileNameAbs(filename,FUF_Z_OR_NOT_Z|FUF_SCAN_PARENTS); - result=StrNew(st); - Free(st); - break; - case LK_BIBLE_FIND: - result=StrNew(BIBLE_FILENAME,mem_task); - break; - } - Free(filename); - } - return result; -} - -#help_index "DolDoc/Task;StdOut/Task" -public CDoc *DocBorderNew(CDoc *pdoc) -{//Make new std border doc. - CDocEntry *doc_e; - CDoc *bdoc; - - bdoc=DocNew; - bdoc->flags|=DOCF_BORDER_DOC; - if (pdoc) { - DocPrint(bdoc,"$$CM+H+BY+RX+NC,-7,1$$"); - doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); - doc_e->user_data=pdoc; - doc_e->tag_cb=&EdFilterCB; - doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); - doc_e->user_data=pdoc; - doc_e->tag_cb=&EdOverStrikeCB; - doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); - doc_e->user_data=pdoc; - doc_e->tag_cb=&EdDollarCB; - DocPrint(bdoc,"$$CM+H+BY+RX+NC,-18,1$$"); - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=pdoc; - doc_e->tag_cb=&EdMoreCB; - doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); - doc_e->user_data=pdoc; - doc_e->tag_cb=&EdDollarTypeCB; - } - DocPrint(bdoc,"$$CM+H+TY+NC,0,-1$$"); - doc_e=DocPrint(bdoc,"$$DA+H-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=15$$"); - doc_e->data=&Fs->task_title; - DocDataFmt(bdoc,doc_e); - DocPrint(bdoc,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs); - DocPrint(bdoc,"$$TX+H+RX+BD,\"[X]\"$$"); - DocPrint(bdoc,"$$BK,1$$$$TX+H+LX+BD,\"MENU\"$$$$BK,0$$"); - return bdoc; -} - -public U0 DocTermNew() -{//Make into term win task with Put/Display/Border docs. - Bool old_preempt=Preempt; - CDoc *pdoc=DocNew; - pdoc->right_click_link=&TermRightClickLink; - pdoc->max_entries=4096; - Fs->border_src=BDS_CUR_DRV; - pdoc->desc='Term'; - Fs->put_doc=Fs->display_doc=pdoc; - Fs->border_doc=DocBorderNew(pdoc); - Fs->cur_menu=MenuFile("::/Doc/EdPullDown.TXT"); - WinScrollsInit(Fs); - Preempt(old_preempt); - Raw(OFF); -} - -#help_index "DolDoc/Input;StdIn/DolDoc" -public U8 *DocScanLine(CDoc *doc,CDocEntry *doc_e, - I64 *cur_col=NULL,CDocEntry **_do_e_end=NULL) -{//Start at entry in doc,make and return one line as str. - CDocEntry *doc_e2=doc_e; - Bool unlock=DocLock(doc); - U8 *dst,*src,*start,*result; - I64 i=0; - if (cur_col) - *cur_col=-1; - while (doc_e2!=doc && doc_e2->type_u8!=DOCT_NEW_LINE) { - if (doc_e2->de_flags&DOCEF_TAG && doc_e2->tag) { - src=doc_e2->tag; - i+=StrLen(src); - } else if (doc_e2->type_u8==DOCT_TAB) - i++; - doc_e2=doc_e2->next; - } - result=MAlloc(i+1); - dst=result; - while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) { - start=dst; - if (doc_e->de_flags&DOCEF_TAG && doc_e->tag) { - src=doc_e->tag; - while (*src) - *dst++=*src++; - } else if (doc_e->type_u8==DOCT_TAB) - *dst++='\t'; - if (doc_e==doc->cur_entry && cur_col) - *cur_col=start-result+doc->cur_col; - doc_e=doc_e->next; - } - if (_do_e_end) *_do_e_end=doc_e; - *dst=0; - if (doc_e==doc->cur_entry && cur_col && !doc->cur_col) - *cur_col=dst-result; - if (unlock) - DocUnlock(doc); - return result; -} - -#help_index "DolDoc/Output;StdOut/DolDoc" -U0 DocDump(CDoc *doc,I64 uS_delay=0) -{ - U8 *st; - CDocEntry *doc_e,*doc_e2; - Bool unlock=DocLock(doc); - doc_e=doc->root.next; - while (doc_e!=doc) { - st=DocScanLine(doc,doc_e,NULL,&doc_e2); - "%s",st; - Free(st); - doc_e=doc_e2; - if (doc_e->type_u8==DOCT_NEW_LINE) { - '\n'; - BusyWait(uS_delay); - doc_e=doc_e->next; - } - } - if (unlock) - DocUnlock(doc); -} - -public CDocEntry *DocPutLine(CDoc *doc=NULL,CDocEntry *doc_e) -{//Send line from other doc to StdOut $LK,"DocPut",A="MN:DocPut"$. - I64 ch; - U8 *ptr,*ptr2; - Bool unlock; - if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) - return NULL; - unlock=DocLock(doc); - while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) { - if (doc_e->de_flags&DOCEF_TAG) { - ptr=doc_e->tag; - do { - ptr2=ptr; - while (ch=*ptr) - if (ch=='$$') - break; - else - ptr++; - *ptr=0; - "%s",ptr2; - *ptr=ch; - if (ch=='$$') { - "$$$$"; - ptr++; - } - } while (ch); - } else if (doc_e->type_u8==DOCT_TAB) - '\t'; - doc_e=doc_e->next; - } - '\n'; - if (doc_e!=doc) - doc_e=doc_e->next; - if (unlock) - DocUnlock(doc); - return doc_e; -} - -#help_index "DolDoc/Input;StdIn/DolDoc" -U8 *DocGetStr2(I64 flags=0) -{//$LK,"Flags",A="MN:GSF_SHIFT_ESC_EXIT"$ - CDoc *doc; - CDocEntry *doc_e,*doc_e_end; - Bool old_preempt=IsPreempt; - U8 *st,*st2,*result; - I64 ch,sc; - "$$PT$$"; - do { - ch=DocGetKey(&sc); - if (ch==CH_ESC) { - if (doc=DocPut) { - DocLock(doc); - if (doc->doc_signature==DOC_SIGNATURE_VAL && doc->cur_entry!=doc) { - doc_e=DocEntryCopy(doc,doc->cur_entry); - DocBottom(doc); - DocEntryRun(doc,doc_e,TRUE); - DocEntryDel(doc,doc_e); - } - DocUnlock(doc); - } - if (flags&GSF_WITH_NEW_LINE) - break; - } if (ch==CH_SHIFT_ESC) { - if (flags&GSF_SHIFT_ESC_EXIT) - Exit; - else { - result=StrNew(""); - goto gs_done; - } - } -// is a blank line without entry - } while (flags&GSF_WITH_NEW_LINE || ch!='\n' || - sc & SCF_CTRL && sc & SCF_SHIFT); - - Preempt; - doc=DocPut; - DocLock(doc); - if (flags&GSF_WITH_NEW_LINE) { - doc_e=doc->cur_entry; - do doc_e=doc_e->last; - while (doc_e!=doc && doc_e->type_u8!=DOCT_PMT); - doc_e=doc_e->next; - if (result=DocScanLine(doc,doc_e,NULL,&doc_e_end)) { - while (doc_e_end!=doc && doc_e_end->type_u8==DOCT_NEW_LINE) { - st2=MStrPrint("%s\n",result); - Free(result); - result=st2; - if (st=DocScanLine(doc,doc_e_end->next,NULL,&doc_e_end)) { - st2=MStrPrint("%s%s",result,st); - Free(st); - Free(result); - result=st2; - } - } - } - } else { - doc_e=doc->cur_entry; - do doc_e=doc_e->last; - while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE && - doc_e->type_u8!=DOCT_PMT); - if (doc_e!=doc && doc_e->type_u8!=DOCT_PMT) { - do doc_e=doc_e->last; - while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE && - doc_e->type_u8!=DOCT_PMT); - } - doc_e=doc_e->next; - result=DocScanLine(doc,doc_e,NULL); - } - DocUnlock(doc); -gs_done: - "$$PT$$$$FG$$$$BG$$"; - Preempt(old_preempt); - return result; -} - -#help_index "Keyboard Devices;Char/Input;StdIn" - -public I64 GetI64(U8 *msg=NULL,I64 dft=0,I64 lo=MIN_I64,I64 hi=MAX_I64) -{//Prompt user for I64 expression. - Bool okay; - U8 *st; - I64 result; - while (TRUE) { - if (msg) - "" msg,dft; - st=GetStr; - if (!*st) { - Free(st); - return dft; - } - try { - result=ExePrint2("ToI64(%s);",st); - okay=TRUE; - } catch { - Fs->catch_except=TRUE; - okay=FALSE; - } - Free(st); - if (okay && lo<=result<=hi) - return result; - } -} - -public F64 GetF64(U8 *msg=NULL,F64 dft=0,F64 lo=MIN_F64,F64 hi=MAX_F64) -{//Prompt user for F64 expression. - Bool okay; - U8 *st; - F64 result; - while (TRUE) { - if (msg) - "" msg,dft; - st=GetStr; - if (!*st) { - Free(st); - return dft; - } - try { - result=ExePrint2("ToF64(%s);",st)(F64); - okay=TRUE; - } catch { - Fs->catch_except=TRUE; - okay=FALSE; - } - Free(st); - if (okay && lo<=result<=hi) - return result; - } -} - -public CDate GetDate(U8 *msg=NULL,CDate dft=MIN_I64, - CDate lo=MIN_I64,CDate hi=MAX_I64) -{//Prompt user for date expression. (Use $LK,"Now",A="MN:Now"$() if you want current time.) - U8 *st; - CDate result; - if (dft==MIN_I64) dft=Now; - while (TRUE) { - if (msg) - "" msg,dft,dft; - st=GetStr; - if (!*st) { - Free(st); - return dft; - } - result=Str2Date(st); - Free(st); - if (result>=lo && result<=hi) - return result; - } -} - -#help_index "DolDoc" - -#define RIGHT_INCLUDE 0 -#define RIGHT_AINCLUDE 1 -#define RIGHT_COPY 2 -#define RIGHT_MOVE 3 -#define RIGHT_DELETE 4 -#define RIGHT_TYPE 5 -#define RIGHT_ED 6 -#define RIGHT_PLAIN 7 -#define RIGHT_AUTOFILE 8 - -I64 PopUpTermRight(U8 *header) -{ - I64 i; - CDoc *doc=DocNew; - if (header) DocPrint(doc,"%s",header); - DocPrint(doc,"\n\n" - "TXT=%s\nJIT=%s\nGRA=%s" - "$$CM+LX,1,3 $$$$BT,\"INCLUDE JIT\",LE=RIGHT_INCLUDE$$" - "$$CM+LX,26,0$$$$BT,\"ADAM_INCLUDE JIT\",LE=RIGHT_AINCLUDE$$" - "$$CM+LX,1,3 $$$$BT,\"COPY \",LE=RIGHT_COPY$$" - "$$CM+LX,26,0$$$$BT,\"MOVE OR RENAME \",LE=RIGHT_MOVE$$" - "$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=RIGHT_DELETE$$" - "$$CM+LX,26,0$$$$BT,\"TYPE TXT;GRA\",LE=RIGHT_TYPE$$" - "$$CM+LX,1,3 $$$$BT,\"ED TXT\",LE=RIGHT_ED$$" - "$$CM+LX,26,0$$$$BT,\"PLAIN ED TXT\",LE=RIGHT_PLAIN$$" - "$$CM+LX,1,3 $$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$" - "$$CM+LX,26,0$$$$BT,\"AUTOFILE AUT\",LE=RIGHT_AUTOFILE$$\n", - FILEMASK_TXT,FILEMASK_JIT,FILEMASK_GRA); - i=PopUpMenu(doc); - DocDel(doc); - return i; -} - -I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e) -{//Called with doc locked, exit unlocked - Bool result; - U8 *st; - if (st=DocEntryLink(doc,doc_e)) { - DocUnlock(doc); - if (doc_e->de_flags & DOCEF_POPUP) - result=PopUpEd(st); - else - result=Ed(st); - Free(st); - return result; - } -} - -I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e) -{//Called with doc locked, exit unlocked - Bool send_new_line=FALSE,result=FALSE; - U8 *st,*st2; - I64 i; - CEdFileName fn; - if (st2=DocEntryLink(doc,doc_e)) { - if (st=DocLinkFile(st2)) { - DocUnlock(doc); - if ((i=PopUpTermRight(st))>=0) { - DocBottom(doc); - switch (i) { - case RIGHT_INCLUDE: - if (FileExtDot(st) && !FilesFindMatch(st,FILEMASK_JIT)) { - if (!PopUpCancelOk(ST_WARN_ST "Not .CPP File\n\n")) { - send_new_line=TRUE; - break; - } - } - "#include \"%s\";\n$$PT$$$$FG$$$$BG$$",st; - WinZBufUpdate; - ExeFile(st); - result=TRUE; - break; - case RIGHT_AINCLUDE: - if (FileExtDot(st) && !FilesFindMatch(st,FILEMASK_JIT)) { - if (!PopUpCancelOk(ST_WARN_ST "Not .CPP File\n\n")) { - send_new_line=TRUE; - break; - } - } - "Adam(\"#include \\\"%s\\\"\" );\n$$PT$$$$FG$$$$BG$$",st; - WinZBufUpdate; - AdamFile(st,FALSE); - result=TRUE; - break; - case RIGHT_COPY: - StrCpy(fn.name,st); - if (DocForm(&fn)) { - result=ToBool(Copy(st,fn.name)); - } else - send_new_line=TRUE; - break; - case RIGHT_MOVE: - StrCpy(fn.name,st); - if (DocForm(&fn)) - result=Move(st,fn.name); - else - send_new_line=TRUE; - break; - case RIGHT_DELETE: - result=ToBool(Del(st)); - break; - case RIGHT_TYPE: - result=Type(st); - break; - case RIGHT_ED: - "Ed(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; - result=Ed(st); - break; - case RIGHT_PLAIN: - "Plain(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; - result=Plain(st); - break; - case RIGHT_AUTOFILE: - if (FileExtDot(st) && !FilesFindMatch(st,"*.AUT*")) { - if (!PopUpCancelOk(ST_WARN_ST "Not .AUT File\n\n")) { - send_new_line=TRUE; - break; - } - } - "AutoFile(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; - WinZBufUpdate; - AutoFile(st); - result=TRUE; - break; - } - } else - send_new_line=TRUE; - Free(st); - } else - send_new_line=TRUE; - Free(st2); - } else - send_new_line=TRUE; - DocBottom(doc); - "$$PT$$$$FG$$$$BG$$"; - if (send_new_line) - '\n'; - return result; -} - -#help_index "Debugging/Dump;DolDoc/Cmd Line (Typically);"\ - "Cmd Line (Typically);DolDoc/Output;StdOut/DolDoc" -public U0 DocDm(U8 *buf,I64 cnt=0x80) -{//Dump live chunk of mem showing addresses. Can be edited. - CDocEntry *doc_e; - CDoc *doc=DocPut; - Bool unlock=DocLock(doc); - doc_e=DocPrint(doc,"$$HX-Z,%d,16$$",cnt); - doc_e->data=buf; - doc->cur_entry=doc_e->next; - DocRecalc(doc); - if (unlock) - DocUnlock(doc); -} - -public U0 DocD(U8 *buf,I64 cnt=0x80) -{//Dump live chunk of mem showing offsets. Can be edited. - CDocEntry *doc_e; - CDoc *doc=DocPut; - Bool unlock=DocLock(doc); - doc_e=DocPrint(doc,"$$HX,%d,16$$",cnt); - doc_e->data=buf; - doc->cur_entry=doc_e->next; - DocRecalc(doc); - if (unlock) - DocUnlock(doc); -} - -#help_index "DolDoc/Output;StdOut/DolDoc" -Bool KDDocPutS(U8 *st) -{ - CDoc *doc; - if (doc=DocPut) - DocPrintPartial(doc,"%s",st); - return FALSE; -} - -KeyDevAdd(&KDDocPutKey,&KDDocPutS,0x80000000,TRUE); -fp_getstr2=&DocGetStr2; -fp_doc_put=&DocPut; diff --git a/Adam/DolDoc/DocNew.CPP b/Adam/DolDoc/DocNew.CPP index ce7e62f..f9f96d4 100644 --- a/Adam/DolDoc/DocNew.CPP +++ b/Adam/DolDoc/DocNew.CPP @@ -27,100 +27,6 @@ public Bool DocUnlock(CDoc *doc) return FALSE; } -CDocBin *DocBinFindNum(CDoc *haystack_doc,I64 needle_num) -{ - CDocBin *b=haystack_doc->bin_root.next; - while (b!=&haystack_doc->bin_root) { - if (b->num==needle_num) - return b; - b=b->next; - } - return NULL; -} - -CDocBin *DocBinFindTag(CDoc *haystack_doc,U8 *needle_tag) -{ - CDocBin *b; - if (needle_tag) { - b=haystack_doc->bin_root.next; - while (b!=&haystack_doc->bin_root) { - if (b->tag && !StrCmp(b->tag,needle_tag)) - return b; - b=b->next; - } - } - return NULL; -} - -U0 DocBinsValidate(CDoc *doc) -{ - Bool unlock=DocLock(doc); - CDocBin *b,*b1; - CDocEntry *doc_e,*doc_e2; - I64 renum_num=0; - b=doc->bin_root.next; - while (b!=&doc->bin_root) { - b->use_cnt=0; - b->temp_use_cnt=0; - b->renum_num=-1; - Free(b->tag); - b->tag=NULL; - b=b->next; - } - doc_e=doc->root.next; - while (doc_e!=doc) { - doc_e2=doc_e->next; - if (doc_e->de_flags & DOCEF_HAS_BIN) { - if (b=doc_e->bin_data=DocBinFindNum(doc,doc_e->bin_num)) { - if (doc_e->de_flags & DOCEF_BIN_PTR_LINK) - b->temp_use_cnt=MAX_I32; - if (!b->use_cnt++) - b->renum_num=++renum_num; - doc_e->bin_num=b->renum_num; - if (!b->tag && doc_e->de_flags&DOCEF_TAG && doc_e->tag && *doc_e->tag) - b->tag=StrNew(doc_e->tag,doc->mem_task); - } else { - RawPrint(3000,"Bin Not Found"); - doc_e->type=doc_e->de_flags=0; - doc_e->type_u8=DOCT_ERROR; - } - } - doc_e=doc_e2; - } - - b=doc->bin_root.next; - doc->cur_bin_num=1; - while (b!=&doc->bin_root) { - b1=b->next; - if (!b->use_cnt) { - QueRem(b); - Free(b->data); - Free(b); - } else { - b->num=b->renum_num; - if (b->num>=doc->cur_bin_num) - doc->cur_bin_num=b->num+1; - } - b=b1; - } - if (unlock) - DocUnlock(doc); -} - -U0 DocBinDel(CDoc *doc,CDocBin *b) -{ - if (doc && b && b->use_cnt) { - b->use_cnt--; - if (!b->use_cnt) { - QueRem(b); - Free(b->tag); - Free(b->data); - Free(b); - } - } else - RawPrint(3000,"DocBinDel"); -} - Bool IsEditableText(CDocEntry *doc_e) { if (doc_e->type_u8==DOCT_TEXT&&!(doc_e->de_flags&DOCEG1_DONT_EDIT)) @@ -249,88 +155,63 @@ public CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e) return doc_ne; } -public U8 *DocEntryLink(CDoc *doc,CDocEntry *doc_e) -{//MAlloc new str, either tag or aux_str if link. - if (doc_e->de_flags&DOCEF_LINK) { - if (doc_e->de_flags & DOCEF_AUX_STR) - return StrNew(doc_e->aux_str,doc->mem_task); - else if (doc_e->de_flags & DOCEF_TAG) - return StrNew(doc_e->tag,doc->mem_task); - } - return NULL; -} - -U0 DocFormFwd(CDoc *doc,Bool giveup=FALSE) +U0 DocRemSoftNewLines(CDoc *doc=NULL,CDocEntry *doc_e=NULL) { - CDocEntry *doc_e=doc->cur_entry,*doc_e2=doc_e; - if (doc->flags & DOCF_FORM) { - if (doc_e==doc) goto ff_recover; - while (!Bt(doldoc.type_flags_form,doc_e->type_u8) && - !(doc_e->de_flags&DOCEF_LINK) || - doc_e->de_flags&DOCEF_SKIP_IN_FORM) { - doc_e=doc_e->next; - if (doc_e==doc) { -ff_recover: - doc->cur_col=0; - if (!giveup) { - doc->cur_entry=doc_e->last; - DocFormBwd(doc,TRUE); - } else - doc->cur_entry=doc; - return; - } - } - } - while (doc_e->type_u8==DOCT_INDENT) - doc_e=doc_e->next; - if (doc_e!=doc_e2) { - doc->cur_col=doc_e->min_col; - doc->cur_entry=doc_e; - } -} - -U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE) -{ - CDocEntry *doc_e=doc->cur_entry,*doc_e2=doc_e; - if (doc->flags & DOCF_FORM) { - while (!Bt(doldoc.type_flags_form,doc_e->type_u8) && - !(doc_e->de_flags&DOCEF_LINK) || - doc_e->de_flags&DOCEF_SKIP_IN_FORM) { - doc_e=doc_e->last; - if (doc_e==doc) { - doc->cur_col=0; - if (!giveup) { - doc->cur_entry=doc_e->next; - DocFormFwd(doc,TRUE); - } else - doc->cur_entry=doc; - return; - } - } - } - while (doc_e->type_u8==DOCT_INDENT) - doc_e=doc_e->next; - if (doc_e!=doc_e2) { - doc->cur_col=doc_e->min_col; - doc->cur_entry=doc_e; - } -} - -public U0 DocTop(CDoc *doc=NULL) -{//Move cursor, cur_entry, to top. + CDocEntry *doc_e2,*saved_ll=doc_e; Bool unlock; if (!doc && !(doc=DocPut)) return; unlock=DocLock(doc); - doc->cur_entry=doc->root.next; - doc->cur_col=doc->cur_entry->min_col; - doc->x=0; - doc->y=0; - doc->line_start_col=0; - doc->top_line_num=0; + if (!doc_e) doc_e=doc->root.next; + while (doc_e!=doc) { + doc_e2=doc_e->next; + if (doc_e->type_u8==DOCT_SOFT_NEW_LINE) { + if (doc->cur_entry==doc_e) { + doc->cur_entry=doc_e2; + doc->cur_col=doc->cur_entry->min_col; + } + DocEntryDel(doc,doc_e); + } else if (saved_ll && doc_e->type_u8==DOCT_NEW_LINE) + break; + doc_e=doc_e2; + } + if (unlock) + DocUnlock(doc); +} - DocFormFwd(doc); - DocRecalc(doc); +public U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e) +{//Insert entry into doc, updating its vals. + U8 *dst; + Bool unlock=DocLock(doc); + CDocEntry *doc_ce=doc->cur_entry,*doc_ne; + + doc_e->x=doc_ce->x; + doc_e->y=doc_ce->y; + doc_e->page_line_num=doc_ce->page_line_num; + MemCpy(&doc_e->settings,&doc_ce->settings,sizeof(CDocSettings)); + if (doc->cur_col>0 && + doc_ce->type_u8==DOCT_TEXT && + !(doc_ce->de_flags&(DOCEF_TAG_CB|DOCEF_DEFINE|DOCEF_AUX_STR| + DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK)) && + doc->cur_colmax_col) { + dst=doc_ce->tag+doc->cur_col; + doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); + *dst=0; + doc_ne->type=DOCT_TEXT|doc_ce->type&0xFFFFFF00; + doc_ce->max_col=doc->cur_col; + QueIns(doc_ne,doc_ce); + doc->cur_col=0; + doc_ce=doc_ne; + } + if (doc_ce->type_u8==DOCT_TEXT && doc->cur_col>=doc_ce->max_col) { + QueIns(doc_e,doc_ce); + doc->cur_entry=doc_e->next; + } else { + QueIns(doc_e,doc_ce->last); + doc->cur_entry=doc_ce; + } + doc->cur_col=doc->cur_entry->min_col; + DocRemSoftNewLines(doc,doc->cur_entry); if (unlock) DocUnlock(doc); } @@ -376,7 +257,6 @@ public U0 DocRst(CDoc *doc,Bool is_old) doc->undo_cnt=0; doc->cur_bin_num=1; doc->dollar_buf_ptr=0; - doc->ext_ascii_cnt=doc->ext_ascii_val=0; doc->cmd_U8=CH_SPACE; doc->page_line_num=0; doc->best_d=MAX_I64; @@ -462,169 +342,6 @@ public I64 DocSize(CDoc *doc) return result; } -U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL) -{ - I64 i; - U8 *ptr; - CHashDefineStr *temph; - if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || - doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { - if (d==DOCM_CANCEL) { - if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { - if (!(ptr=doc_e->data)) return; - } else - ptr=&doc_e->data; - switch(doc_e->raw_type) { - case RT_I0: - case RT_U0: d=0; break; - case RT_I8: d=*ptr(I8 *); break; - case RT_U8: d=*ptr(U8 *); break; - case RT_I16: d=*ptr(I16 *); break; - case RT_U16: d=*ptr(U16 *); break; - case RT_I32: d=*ptr(I32 *); break; - case RT_U32: d=*ptr(U32 *); break; - default: d=*ptr(I64 *); - } - } - if (doc_e->type_u8==DOCT_DATA) { - StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data); - if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) { - i=StrLen(doc_e->tag); - doc_e->tag[i++]='_'; - doc_e->tag[i]=0; - } - doc_e->max_col=StrLen(doc_e->tag); - } else if (doc_e->de_flags & DOCEF_LST) { - if (doc_e->de_flags & DOCEF_DEFINE && (temph=HashFind(doc_e->define_str, - doc->win_task->hash_table,HTT_DEFINE_STR)) && 0<=dcnt) { - ptr=MStrPrint("[%s]",temph->sub_lst[d]); - Free(doc_e->tag); - doc_e->tag=StrNew(ptr,doc->mem_task); - Free(ptr); - } else { - Free(doc_e->tag); - doc_e->tag=StrNew("[]",doc->mem_task); - } - } else { - if (d) - doc_e->de_flags|=DOCEF_CHECKED_COLLAPSED; - else - doc_e->de_flags&=~DOCEF_CHECKED_COLLAPSED; - } - } -} - -U0 DocDataScan(CDoc *doc,CDocEntry *doc_e) -{ - I64 i,d; - U8 *ptr,*ptr1,*ptr2; - CHashDefineStr *temph; - if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || - doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { - if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { - if (!(ptr=doc_e->data)) return; - } else - ptr=&doc_e->data; - if (doc_e->type_u8==DOCT_DATA) { - i=StrLen(doc_e->tag); - if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) - doc_e->tag[--i]=0; - if (i>doc_e->len+doc_e->min_col) - doc_e->tag[doc_e->len+doc_e->min_col]=0; - if (RT_I8<=doc_e->raw_type<=RT_U32) { - StrScan(doc_e->tag,doc_e->aux_str,&d,doc_e->my_fmt_data); - if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) - doc_e->tag[i]='_'; - } else if (RT_I64<=doc_e->raw_type<=RT_UF64) { - StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data); - if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) - doc_e->tag[i]='_'; - return; - } - } else if (doc_e->de_flags & DOCEF_LST) { - d=0; - if (doc_e->tag && doc_e->de_flags & DOCEF_DEFINE && - (temph=HashFind(doc_e->define_str, - doc->win_task->hash_table,HTT_DEFINE_STR))) { - ptr1=ptr2=StrNew(doc_e->tag); - if (*ptr2=='[') { - ptr2++; - i=StrLen(ptr2); - if (ptr2[i-1]==']') - ptr2[i-1]=0; - } - d=LstMatch(ptr2,temph->data); - Free(ptr1); - } - } else { - if (doc_e->de_flags & DOCEF_CHECKED_COLLAPSED) - d=TRUE; - else - d=FALSE; - } - switch(doc_e->raw_type) { - case RT_I8: - case RT_U8: - *ptr(U8 *)=d; - case RT_I0: - case RT_U0: - break; - case RT_I16: - case RT_U16: - *ptr(U16 *)=d; - break; - case RT_I32: - case RT_U32: - *ptr(U32 *)=d; - break; - default: - *ptr(I64 *)=d; - } - } -} - -U0 DocRemSoftNewLines(CDoc *doc=NULL,CDocEntry *doc_e=NULL) -{ - CDocEntry *doc_e2,*saved_ll=doc_e; - Bool unlock; - if (!doc && !(doc=DocPut)) - return; - unlock=DocLock(doc); - if (!doc_e) doc_e=doc->root.next; - while (doc_e!=doc) { - doc_e2=doc_e->next; - if (doc_e->type_u8==DOCT_SOFT_NEW_LINE) { - if (doc->cur_entry==doc_e) { - doc->cur_entry=doc_e2; - doc->cur_col=doc->cur_entry->min_col; - } - DocEntryDel(doc,doc_e); - } else if (saved_ll && doc_e->type_u8==DOCT_NEW_LINE) - break; - doc_e=doc_e2; - } - if (unlock) - DocUnlock(doc); -} - -#help_index "DolDoc/Cmd Line (Typically);Cmd Line (Typically)" - -public I64 DocMax(I64 i=MAX_I64) -{//Set max document entries. (Cmd line buffer.) -//Adjusts the size of the cmd line buf. - //Normally, the cmd line deletes entries - //when more are added and the old scroll up. - //See $LK,"max_entries",A="FF:::/Adam/DolDoc/DocMain.CPP,max_entries"$. - I64 result; - CDoc *doc; - if (doc=DocPut) { - result=doc->max_entries; - doc->max_entries=i; - return result; - } else - return 0; -} - #help_index "DolDoc" public CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL) {//MAlloc new $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$. (Begin a new doc.) @@ -634,7 +351,7 @@ public CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL) if (filename) StrCpy(doc->filename.name,filename); else - StrCpy(doc->filename.name,dsk.temp_filename); + StrCpy(doc->filename.name,blkdev.temp_filename); doc->find_replace=CAlloc(sizeof(CEdFindText),task); doc->find_replace->scan_fwd=TRUE; doc->find_replace->match_case=TRUE; @@ -649,115 +366,3 @@ public CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL) doc->doc_signature=DOC_SIGNATURE_VAL; return doc; } - -#help_index "DolDoc/Task;StdOut/Task" -public CDoc *DocPut(CTask *task=NULL) -{//Current document that StdOut Put() goes to. -//Basically, StdOut unless double buffering. - CDoc *result; - if (!task) task=Fs; - if ((result=task->put_doc) && result->doc_signature==DOC_SIGNATURE_VAL) - return result; - else - return NULL; -} - -public CDoc *DocDisplay(CTask *task=NULL) -{//StdOut displayed unless double buffering. - CDoc *result; - if (!task) task=Fs; - if ((result=task->display_doc) && result->doc_signature==DOC_SIGNATURE_VAL) - return result; - else - return NULL; -} - -public CDoc *DocBorder(CTask *task=NULL) -{//Doc holding border of window text. - CDoc *result; - if (!task) task=Fs; - if ((result=task->border_doc) && result->doc_signature==DOC_SIGNATURE_VAL) - return result; - else - return NULL; -} - -public CDoc *DocDblBufStart(CTask *task=NULL) -{//See $LK,"::/Demo/Spy.CPP"$ - Bool unlock_ddoc,old_preempt=Preempt; - CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task),*result; - if (!pdoc || !ddoc || pdoc!=ddoc) - result=NULL; //Already Double buffering - else { - if (!task) task=Fs; - unlock_ddoc=DocLock(ddoc); //dont change during winupdate, so lock DocPut$WW,0$ - result=DocNew(,task); - result->win_task =ddoc->win_task; - result->max_entries =ddoc->max_entries; - MemCpy(result->find_replace,ddoc->find_replace,sizeof(CEdFindText)); - MemCpy(&result->filename,&ddoc->filename,sizeof(CEdFileName)); - result->left_click_link =ddoc->left_click_link; - result->right_click_link =ddoc->right_click_link; - result->user_put_data =ddoc->user_put_data; - result->user_put_key =ddoc->user_put_key; - result->user_put_s =ddoc->user_put_s; - result->parent_doc =ddoc->parent_doc; - result->desc =ddoc->desc; - result->user_data =ddoc->user_data; - result->flags|=ddoc->flags&DOCG_DBL_BUF_FLAGS | DOCF_DONT_SHOW; - task->put_doc=result; - if (unlock_ddoc) - DocUnlock(ddoc); - } - Preempt(old_preempt); - return result; -} - -public Bool DocDblBufEnd(CTask *task=NULL) -{//See $LK,"::/Demo/Spy.CPP"$ - Bool result=FALSE,old_preempt=Preempt; - CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task); - if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering? - if (!task) task=Fs; - ddoc->flags|=DOCF_DONT_SHOW; - pdoc->flags&=~DOCF_DONT_SHOW; - DocLock(ddoc); - task->display_doc=pdoc; - DocUnlock(ddoc); - DocDel(ddoc); - result=TRUE; - } - Preempt(old_preempt); - return result; -} - -public Bool DocDblBufSwap(CTask *task=NULL) -{//See $LK,"::/Demo/Spy.CPP"$ - Bool result=FALSE,old_preempt=Preempt; - CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task); - if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering? - if (!task) task=Fs; - ddoc->flags|=DOCF_DONT_SHOW; - pdoc->flags&=~DOCF_DONT_SHOW; - DocLock(ddoc); - task->display_doc=pdoc; - DocUnlock(ddoc); - DocRst(ddoc,TRUE); - MemCpy(ddoc->find_replace,pdoc->find_replace,sizeof(CEdFindText)); - MemCpy(&ddoc->filename,&pdoc->filename,sizeof(CEdFileName)); - ddoc->max_entries =pdoc->max_entries; - ddoc->flags =pdoc->flags&DOCG_DBL_BUF_FLAGS | - ddoc->flags&~DOCG_DBL_BUF_FLAGS; - ddoc->left_click_link =pdoc->left_click_link; - ddoc->right_click_link =pdoc->right_click_link; - ddoc->user_put_data =pdoc->user_put_data; - ddoc->user_put_key =pdoc->user_put_key; - ddoc->user_put_s =pdoc->user_put_s; - ddoc->desc =pdoc->desc; - ddoc->user_data =pdoc->user_data; - task->put_doc=ddoc; - result=TRUE; - } - Preempt(old_preempt); - return result; -} diff --git a/Adam/DolDoc/DocOpt.CPP b/Adam/DolDoc/DocOpt.CPP index 2a81707..ae6d351 100644 --- a/Adam/DolDoc/DocOpt.CPP +++ b/Adam/DolDoc/DocOpt.CPP @@ -32,18 +32,18 @@ I64 DocOptEntry(CDoc *,CDocEntry *doc_e) Free(st); } /* !!! Dangerous, but handy !!! -if (doc_e->de_flags & DOCEF_AUX_STR) { -if (st=StrMatch(".Z",doc_e->aux_str)) { -StrCpy(st,st+2); -result++; -} -} -if (doc_e->de_flags&DOCEF_TAG) { -if (st=StrMatch(".Z",doc_e->tag)) { -StrCpy(st,st+2); -result++; -} -} + if (doc_e->de_flags & DOCEF_AUX_STR) { + if (st=StrMatch(".Z",doc_e->aux_str)) { + StrCpy(st,st+2); + result++; + } + } + if (doc_e->de_flags&DOCEF_TAG) { + if (st=StrMatch(".Z",doc_e->tag)) { + StrCpy(st,st+2); + result++; + } + } */ } return result; diff --git a/Adam/DolDoc/DocPlain.CPP b/Adam/DolDoc/DocPlain.CPP index 3b8bed0..88b718c 100644 --- a/Adam/DolDoc/DocPlain.CPP +++ b/Adam/DolDoc/DocPlain.CPP @@ -40,53 +40,6 @@ I64 PrsDocFlags(CCmpCtrl *cc,I64 *_de_flags,U32 *_type) return result; } -I64 DocBinPtrRst(CDoc *doc,CDocEntry *doc_e) -{ - U8 *st,*st2; - CDoc *doc2; - CDocBin *tempb,*tempb2; - I64 i,bin_num=0; - if (doc_e->de_flags&DOCEF_HAS_BIN && - doc_e->bin_ptr_link && StrLen(doc_e->bin_ptr_link)) { - bin_num=doc_e->bin_num; - st=StrNew(doc_e->bin_ptr_link); - st2=StrNew(st); - StrLastRem(st,",",st2); - i=Str2I64(st2); - if (i>0||*st2) { - doc2=DocRead(st); - if (i>0 && (tempb2=DocBinFindNum(doc2,i)) || - i==0 && (tempb2=DocBinFindTag(doc2,st2))) { - i=1; - if (bin_num>0) { - if (tempb=DocBinFindNum(doc,bin_num)) { - i=tempb->use_cnt; - DocBinDel(doc,tempb); - } - } else - bin_num=doc->cur_bin_num++; - tempb=MAllocIdentical(tempb2,doc->mem_task); - tempb->use_cnt=i; - tempb->data=MAllocIdentical(tempb2->data,doc->mem_task); - tempb->num=bin_num; - doc_e->bin_data=tempb; - if (doc_e->de_flags&DOCEF_TAG && doc_e->tag && *doc_e->tag) - tempb->tag=StrNew(doc_e->tag,doc->mem_task); - else - tempb->tag=NULL; - QueIns(tempb,doc->bin_root.last); - } else - bin_num=0; - DocDel(doc2); - } else - bin_num=0; - Free(st2); - Free(st); - doc_e->bin_num=bin_num; - } - return bin_num; -} - U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e) {//TODO: break strs I64 i,j,attr=doc_e->attr, @@ -537,214 +490,124 @@ pd_err: return doc_e; } -public U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e) -{//Insert entry into doc, updating its vals. - U8 *dst; - Bool unlock=DocLock(doc); - CDocEntry *doc_ce=doc->cur_entry,*doc_ne; - - doc_e->x=doc_ce->x; - doc_e->y=doc_ce->y; - doc_e->page_line_num=doc_ce->page_line_num; - MemCpy(&doc_e->settings,&doc_ce->settings,sizeof(CDocSettings)); - if (doc->cur_col>0 && - doc_ce->type_u8==DOCT_TEXT && - !(doc_ce->de_flags&(DOCEF_TAG_CB|DOCEF_DEFINE| - DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK)) && - doc->cur_colmax_col) { - dst=doc_ce->tag+doc->cur_col; - doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); - *dst=0; - doc_ne->type=DOCT_TEXT|doc_ce->type&0xFFFFFF00; - doc_ce->max_col=doc->cur_col; - QueIns(doc_ne,doc_ce); - doc->cur_col=0; - doc_ce=doc_ne; - } - if (doc_ce->type_u8==DOCT_TEXT && doc->cur_col>=doc_ce->max_col) { - QueIns(doc_e,doc_ce); - doc->cur_entry=doc_e->next; - } else { - QueIns(doc_e,doc_ce->last); - doc->cur_entry=doc_ce; - } - doc->cur_col=doc->cur_entry->min_col; - DocRemSoftNewLines(doc,doc->cur_entry); - if (unlock) - DocUnlock(doc); -} - -#help_index "DolDoc/Output;StdOut/DolDoc" -CDocEntry *DocPutS(CDoc *doc,U8 *st) -{//Don't use this. Use $LK-UL,"DocPrint",A="MN:DocPrint"$(). -//Does not handle partial Doc entries - //Returns last newly created dollar-sign CDocEntry. - U8 *ptr=st,*ptr2,*st2,*ptr3,*ptr4,*src, - *char_bitmap; - Bool unlock; - I64 ch,j; - CDocEntry *doc_e=NULL,*result=NULL,*doc_ce; - if (!st || !doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) - return NULL; - unlock=DocLock(doc); - if (doc->flags & DOCF_PLAIN_TEXT_WITH_TABS) - char_bitmap=chars_bmp_zero_cr_nl_cursor; - else if (doc->flags & DOCF_PLAIN_TEXT) - char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor; - else - char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor_dollar; - doc_ce=doc->cur_entry; - while (*ptr) { - ptr2=ptr; - do ch=*ptr++; - while (!Bt(char_bitmap,ch) || ch==CH_CURSOR && doc->flags&DOCF_NO_CURSOR); - ptr--; - if (!ch) { - if (j=ptr-ptr2) { - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; - if (doc->flags & DOCF_NO_CURSOR) { - src=MAlloc(j+1); - MemCpy(src,ptr2,j+1); - StrUtil(src,SUF_REM_CTRL_CHARS); - j=StrLen(src); +U0 DocEntryToggle(CDoc *doc) +{ + Bool unlock=DocLock(doc),old_color_names; + CDocEntry *doc_ce=doc->cur_entry,*cl1,*doc_ce2; + U8 ch,*st,*st2; + I64 i,j,k; + if (doc_ce!=doc && + !(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { + if (doc_ce->type_u8==DOCT_TEXT && !(doc_ce->de_flags & + ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT| + DOCEF_SKIP|DOCEF_HARD_SKIP|DOCEF_FILTER_SKIP)) && + !(doc_ce->type&DOCG_BL_IV_UL)) { + doc_ce2=doc_ce->last; + for (k=0;k<20;k++) { + if (doc_ce2!=doc) { + cl1=doc_ce2->last; + if (doc_ce2->type_u8==DOCT_TEXT && + doc_ce->de_flags==doc_ce2->de_flags && + doc_ce->type==doc_ce2->type) { + i=StrLen(doc_ce2->tag); + j=StrLen(doc_ce->tag); + st=MAlloc(i+j+1,doc->mem_task); + MemCpy(st,doc_ce2->tag,i); + MemCpy(st+i,doc_ce->tag,j+1); + Free(doc_ce->tag); + doc_ce->tag=st; + doc_ce->max_col=i+j; + doc->cur_col+=i; + DocEntryDel(doc,doc_ce2); + } else if (doc_ce2->type_u8==DOCT_SOFT_NEW_LINE) + DocEntryDel(doc,doc_ce2); + else + break; + doc_ce2=cl1; } else - src=ptr2; - doc_e->tag=MAlloc(j+1,doc->mem_task); - MemCpy(doc_e->tag,src,j+1); - doc_e->max_col=j; - DocInsEntry(doc,doc_e); - if (doc->flags & DOCF_NO_CURSOR) - Free(src); + break; + } + doc_ce2=doc_ce->next; + for (k=0;k<20;k++) { + if (doc_ce2!=doc) { + cl1=doc_ce2->next; + if (doc_ce2->type_u8==DOCT_TEXT && + doc_ce->de_flags==doc_ce2->de_flags && + doc_ce->type==doc_ce2->type) { + i=StrLen(doc_ce->tag); + j=StrLen(doc_ce2->tag); + st=MAlloc(i+j+1,doc->mem_task); + MemCpy(st,doc_ce->tag,i); + MemCpy(st+i,doc_ce2->tag,j+1); + Free(doc_ce->tag); + doc_ce->tag=st; + doc_ce->max_col=i+j; + DocEntryDel(doc,doc_ce2); + } else if (doc_ce2->type_u8==DOCT_SOFT_NEW_LINE) + DocEntryDel(doc,doc_ce2); + else + break; + doc_ce2=cl1; + } else + break; + } + i=doc->cur_col; + while (i>doc_ce->min_col && doc_ce->tag[i]!='$$') + i--; + j=doc->cur_col+1; + while (jmax_col && doc_ce->tag[j]!='$$') + j++; + if (imin_col<=imax_col && + doc_ce->tag[i]=='$$' && doc_ce->tag[j]=='$$') { + ch=doc_ce->tag[j+1]; + doc_ce->tag[j+1]=0; + st=StrNew(doc_ce->tag+i); + doc_ce->tag[j+1]=ch; + StrCpy(doc_ce->tag+i,doc_ce->tag+j+1); + doc->cur_col=i; + st2=MStrPrint("%q",st); + if (doc_ce=DocPrint(doc,st2)) { + doc->cur_entry=doc_ce; + doc->cur_col=doc_ce->min_col; + } + Free(st); + Free(st2); } } else { - if (j=ptr-ptr2) { - *ptr=0; - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; - if (doc->flags & DOCF_NO_CURSOR) { - src=MAlloc(j+1); - MemCpy(src,ptr2,j+1); - ptr3=src; - ptr4=src; - while (*ptr3) - if (*ptr3!=CH_CURSOR) - *ptr4++=*ptr3++; - else - ptr3++; - *ptr4=0; - j=ptr4-src; - } else - src=ptr2; - doc_e->tag=MAlloc(j+1,doc->mem_task); - MemCpy(doc_e->tag,src,j+1); - doc_e->max_col=j; - DocInsEntry(doc,doc_e); - if (doc->flags & DOCF_NO_CURSOR) - Free(src); - *ptr=ch; - } - switch (ch) { - case CH_CURSOR: - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; - DocInsEntry(doc,doc_e); - ptr++; - break; - case CH_FORM_FEED: - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_PAGE_BREAK | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK]; - DocInsEntry(doc,doc_e); - ptr++; - break; - case '\t': - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_TAB | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_TAB]; - DocInsEntry(doc,doc_e); - ptr++; - break; - case '$$': - ptr++; //skip first dollar - ptr2=ptr; - while (*ptr && *ptr!='$$') - ptr++; - if (*ptr) { - *ptr=0; //zero second dollar - if (ptr-1==ptr2 && *ptr2==CH_CURSOR) { - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; - DocInsEntry(doc,doc_e); - ptr2++; - } - if (ptr==ptr2) { - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; - doc_e->max_col=1; - if (doc->flags & DOCF_DBL_DOLLARS) - doc_e->tag=StrNew("$$$$",doc->mem_task); - else - doc_e->tag=StrNew("$$",doc->mem_task); - doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; - DocInsEntry(doc,doc_e); - } else { - st2=MAlloc(ptr-ptr2+1); - ptr3=ptr2; - ptr4=st2; - while (ch=*ptr3++) { - if (ch==CH_CURSOR) { - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; - DocInsEntry(doc,doc_e); - } else if (ch==CH_FORM_FEED) { - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_PAGE_BREAK | - doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK]; - DocInsEntry(doc,doc_e); - } else - *ptr4++=ch; - } - *ptr4=0; - if (doc_e=PrsDollarCmd(doc,st2)) { - result=doc_e; - DocInsEntry(doc,doc_e); - } - Free(st2); - } - *ptr++='$$'; - } - break; - default: - doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); - doc_e->type=DOCT_NEW_LINE | doc->settings_root.dft_text_attr<<8; - doc_e->de_flags=doldoc.dft_de_flags[DOCT_NEW_LINE]; - DocInsEntry(doc,doc_e); - if (ch=='\r') - while (*ptr=='\r') - ptr++; - if (*ptr=='\n') - ptr++; - while (*ptr=='\r') - ptr++; - } + old_color_names=LBts(&doc->flags,DOCf_COLOR_NAMES); + st=Doc2PlainText(doc,doc_ce); + LBEqu(&doc->flags,DOCf_COLOR_NAMES,old_color_names); + DocEntryDel(doc,doc_ce); + DocPrint(doc,"$$$$%Q$$$$",st); } + DocRecalc(doc); } if (unlock) DocUnlock(doc); - return result; } -public CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...) -{//You must not print partial doc cmds. - U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); - CDocEntry *result=DocPutS(doc,buf); - Free(buf); - return result; +U0 DocFlagsToggle(CDoc *doc,I64 tog_flags) +{ + Bool unlock=DocLock(doc); + I64 size,flags=doc->flags^tog_flags; + U8 *st; + CDocUndo *u_next,*u_last; + + doc->flags|=DOCF_COLOR_NAMES; + st=DocSave(doc,&size); + + u_next=doc->undo_root.next; + u_last=doc->undo_root.last; + doc->undo_root.next=doc->undo_root.last=&doc->undo_root; + + DocRst(doc,TRUE); + doc->undo_root.next=u_next; + doc->undo_root.last=u_last; + DocUndoCntSet(doc); + doc->flags=flags & ~(DOCG_BL_IV_UL|DOCF_WORD_WRAP); + DocLoad(doc,st,size); + DocCenter(doc); + if (unlock) + DocUnlock(doc); + Free(st); } diff --git a/Adam/DolDoc/DocPopUp.CPP b/Adam/DolDoc/DocPopUp.CPP index f30c13c..3b0e046 100644 --- a/Adam/DolDoc/DocPopUp.CPP +++ b/Adam/DolDoc/DocPopUp.CPP @@ -1,423 +1,7 @@ -#help_index "DolDoc" - -public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e, - Bool exited,I64 *_has_action=NULL) -{//Do action on final entry selected by user. -//Sometimes returns locked, sometimes unlocked - U8 ch=doc->cmd_U8,*st; - I64 result=DOCM_CANCEL,has_action=FALSE; - CHashDefineStr *temph; - DocLock(doc); - if (!exited) { - if (doc_e->de_flags & DOCEF_ESC) { - Msg(MSG_KEY_DOWN,CH_ESC,0,1<de_flags & DOCEF_QUIT) { - Msg(MSG_KEY_DOWN,CH_SHIFT_ESC,0,1<de_flags & DOCEF_CHECK_COLLAPSABLE) { - doc_e->de_flags^=DOCEF_CHECKED_COLLAPSED; - has_action=TRUE; - } - } - try { - if (ch==CH_SPACE) { - if (doc_e->de_flags & DOCEF_LINK && doc->left_click_link) { - result=(*doc->left_click_link)(doc,doc_e); - has_action=TRUE; - } - if (doc_e->de_flags & DOCEF_LEFT_EXP) { - result=doc_e->left_exp; - has_action=TRUE; - Msg(MSG_CMD,result,0,1<de_flags & DOCEF_LEFT_CB && doc_e->left_cb) { - DocUnlock(doc); - result=(*doc_e->left_cb)(doc,doc_e); - has_action=TRUE; - Msg(MSG_CMD,result,0,1<de_flags & DOCEF_LEFT_MACRO) { - if (doc_e->de_flags & DOCEF_POPUP) { - st=StrNew(doc_e->left_macro); - DocUnlock(doc); - PopUp(st,Fs); - Free(st); - } else { - if (doc_e->de_flags & DOCEF_LEFT_AUTO) - AutoStr("%s",doc_e->left_macro); - else - Auto("%s",doc_e->left_macro); - } - has_action=TRUE; - } - if (!exited && doc_e->de_flags & DOCEF_LST && - doc_e->de_flags & DOCEF_DEFINE && - (temph=HashFind(doc_e->define_str, - doc->win_task->hash_table,HTT_DEFINE_STR)) && - (result=PopUpPickLst(temph->data))!=DOCM_CANCEL) { - DocDataFmt(doc,doc_e,result); - DocDataScan(doc,doc_e); - has_action=TRUE; - } - } else if (ch=='\n') { - if (doc_e->de_flags & DOCEF_LINK && doc->right_click_link) { - result=(*doc->right_click_link)(doc,doc_e); - has_action=TRUE; - } - if (doc_e->de_flags & DOCEF_RIGHT_EXP) { - result=doc_e->right_exp; - has_action=TRUE; - Msg(MSG_CMD,result,0,1<de_flags & DOCEF_RIGHT_CB && doc_e->right_cb) { - DocUnlock(doc); - result=(*doc_e->right_cb)(doc,doc_e); - has_action=TRUE; - Msg(MSG_CMD,result,0,1<de_flags & DOCEF_RIGHT_MACRO) { - if (doc_e->de_flags & DOCEF_POPUP) { - st=StrNew(doc_e->right_macro); - DocUnlock(doc); - PopUp(st,Fs); - Free(st); - } else { - if (doc_e->de_flags & DOCEF_RIGHT_AUTO) - AutoStr("%s",doc_e->right_macro); - else - Auto("%s",doc_e->right_macro); - } - has_action=TRUE; - } - } - } - catch - DocBottom(doc); - doc->cmd_U8=CH_SPACE; -er_done: - if (_has_action) *_has_action=has_action; - return result; -} - -U8 *EdOverStrikeCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) -{ - CDoc *doc=doc_e->user_data; - U8 *st=MAlloc(8,mem_task); - if (doc->flags & DOCF_OVERSTRIKE) - *st='O'; - else - *st='Ä'; - st[1]=0; - return st; -} - -U8 *EdFilterCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) -{ - CDoc *doc=doc_e->user_data; - U8 *st=MAlloc(8,mem_task); - if (doc->find_replace->filter_lines) - *st='F'; - else - *st='Ä'; - st[1]=0; - return st; -} - -U8 *EdDollarCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) -{ - CDoc *doc=doc_e->user_data; - U8 *st=MAlloc(8,mem_task); - if (doc->flags & DOCF_IN_DOLLAR) - *st='$$'; - else - *st='Ä'; - st[1]=0; - return st; -} - -U8 *EdMoreCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) -{ - CDoc *doc=doc_e->user_data; - U8 *st=MAlloc(8,mem_task); - if (doc->flags&DOCF_MORE) - StrCpy(st,"MoreÄ"); - else - StrCpy(st,"ÄÄÄÄÄ"); - return st; -} - -U8 *EdDollarTypeCB(CDoc *,CDocEntry *doc_e,CTask *mem_task) -{ - CDoc *doc=doc_e->user_data; - U8 *src=DefineSub(doc->cur_entry->type_u8,"ST_DOC_CMDS"), - *st=CAlloc(8,mem_task); - if (doc->cur_entry==doc) - src="EOF"; - else if (!src) - src="ERR"; - StrPrint(st,"%-3ts",src); - return st; -} - -public I64 DocGetKey(I64 *_sc=NULL) -{//Called by $LK,"View",A="MN:View"$. You probably don't need this. - I64 ch,sc; - Bool cont,old_preempt=IsPreempt; - do { - ch=GetKey(&sc,TRUE); - DocRecalc(DocPut); - cont=FALSE; - if (ch==CH_ESC || ch==CH_SHIFT_ESC) {//Check for exit filter mode - Preempt; - if (DocPut && DocPut->find_replace->filter_lines) { - EdUndoFilter(DocPut); - cont=TRUE; - } - Preempt(old_preempt); - } - } while (cont); - if (_sc) *_sc=sc; - return ch; -} - -#help_index "DolDoc/Output;StdOut/DolDoc" -public Bool View() -{//Go live for user interaction until or . - I64 ch; - do ch=DocGetKey; - while (ch!=CH_ESC && ch!=CH_SHIFT_ESC); - return ch==CH_ESC; -} - -#help_index "DolDoc" -public Bool DocEd(CDoc *doc,I64 dof_flags=0) -{//Live for user interaction. End on or . - CDoc *old_put_doc =DocPut, - *old_display_doc=DocDisplay, - *old_border_doc =DocBorder,*bdoc; - CDocEntry *doc_e; - I64 old_attr=Fs->text_attr, - old_top =Fs->win_top, old_bottom=Fs->win_bottom, - old_left=Fs->win_left,old_right =Fs->win_right, - old_title_src=Fs->title_src; - Bool result,unlock,old_preempt; - U8 *old_task_title; - if (dof_flags&DOF_WIN_MAX) - WinMax; - - unlock=DocLock(doc); - doc->win_task=Fs; - bdoc=DocNew; - bdoc->flags|=DOCF_BORDER_DOC; - DocPrint(bdoc,"$$CM+TY+LX+NC,0,-1$$"); - DocPrint(bdoc,"$$TX+RX+BD,\"[X]\"$$"); - DocPrint(bdoc,"$$BK,1$$$$TX+LX+BD,\"MENU\"$$$$BK,0$$"); - - old_task_title=StrNew(Fs->task_title); - if (Fs->title_src!=TTS_LOCKED_CONST) { - Fs->title_src=TTS_ED_FILENAME; - MemCpy(Fs->task_title,doc->filename.name,TASK_TITLE_LEN); - } - doc_e=DocPrint(bdoc,"$$DA-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=16$$"); - doc_e->data=&Fs->task_title; - DocDataFmt(bdoc,doc_e); - - if (doc->flags & DOCF_ALLOW_UNDO) { - DocPrint(bdoc,"$$CM+BY+LX+NC,1,1$$"); - doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,RT=U32,A=\"Undo:%%03d\"$$\n"); - doc_e->data=&doc->undo_cnt; - DocDataFmt(bdoc,doc_e); - } - - DocPrint(bdoc,"$$CM+BY+RX+NC,-30,1$$"); - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=doc; - doc_e->tag_cb=&EdMoreCB; - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=doc; - doc_e->tag_cb=&EdDollarTypeCB; - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=doc; - doc_e->tag_cb=&EdFilterCB; - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=doc; - doc_e->tag_cb=&EdOverStrikeCB; - doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); - doc_e->user_data=doc; - doc_e->tag_cb=&EdDollarCB; - doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Line:%%04d \"$$"); - doc_e->data=&doc->line; - DocDataFmt(bdoc,doc_e); - doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Col:%%04d\"$$\n"); - doc_e->data=&doc->col; - DocDataFmt(bdoc,doc_e); - - DocRecalc(bdoc); - DocRecalc(doc); - if (!(dof_flags&DOF_DONT_HOME)) - DocTop(doc); - old_preempt=Preempt; - Fs->border_doc=bdoc; - if (doc!=old_display_doc) - doc->parent_doc=old_display_doc; - Fs->put_doc=Fs->display_doc=doc; - if (!(dof_flags&DOF_DONT_TEXT_ATTR)) - Fs->text_attr=DOC_ATTR_DFT_TEXT; - if (!(dof_flags&DOF_DONT_SHOW)) { - LBts(&Fs->display_flags,DISPLAYf_SHOW); - WinZBufUpdate; - } - if (dof_flags&DOF_MIN_SIZE) - doc->flags|=DOCF_MIN_SIZE; - - Preempt(old_preempt); - DocUnlock(doc); - if (!(dof_flags&DOF_DONT_WINMGR_SYNC)) { - WinMgrSync(2,TRUE); - if (doc->flags&DOCF_MIN_SIZE) - WinMgrSync(2,TRUE); - } - result=View; - - Preempt; - DocLock(doc); - if (result) { - doc_e=doc->root.next; - while (doc_e!=doc) { - if (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX) - DocDataScan(doc,doc_e); - doc_e=doc_e->next; - } - } - if (unlock) - DocUnlock(doc); - Fs->border_doc =old_border_doc; - Fs->display_doc=old_display_doc; - Fs->put_doc =old_put_doc; - Fs->text_attr =old_attr; - if (Fs->title_src!=TTS_LOCKED_CONST) { - Fs->title_src =old_title_src; - StrCpy(Fs->task_title,old_task_title); - } - Free(old_task_title); - DocDel(bdoc); - if (dof_flags&DOF_MIN_SIZE) { - WinHorz(old_left,old_right); - WinVert(old_top,old_bottom); - } - Preempt(old_preempt); - return result; -} - -#help_index "DolDoc/Input;StdIn/DolDoc" -public Bool DocForm(U8 *_d,U8 *class_name=lastclass, - I64 dof_flags=0,U8 *header=NULL,U8 *footer=NULL) -{//User input. Supply a class name that has fmtstr definitions. -//See $LK,"::/Demo/DolDoc/Form.CPP"$ and $LK,"::/Demo/LastClass.CPP"$. - CMemberLst *ml; - CDocEntry *doc_e; - U8 *fmtstr; - CHashClass *tempc; - CDoc *doc; - Bool result=FALSE; - I64 old_border_src=Fs->border_src,has_action; - if (!(tempc=HashFind(class_name,Fs->hash_table,HTT_CLASS))) - return FALSE; - doc=DocNew; - doc->desc='Form'; - if (header) DocPrint(doc,"%s",header); - doc->flags|=DOCF_OVERSTRIKE|DOCF_FORM; - if (dof_flags&DOF_MIN_SIZE) - doc->flags|=DOCF_MIN_SIZE; - ml=tempc->member_lst; - while (ml) { - if (fmtstr=MemberMetaData("fmtstr",ml)) { - doc_e=DocPrint(doc,"%s",fmtstr); - doc_e->data=_d+ml->offset; - doc_e->my_fmt_data=MemberMetaData("fmtdata",ml); - DocDataFmt(doc,doc_e); - } - ml=ml->next; - } - if (footer) DocPrint(doc,"%s",footer); - if (doc->root.next!=doc) { - Fs->border_src=BDS_CONST; - DocRecalc(doc); - if (DocEd(doc,dof_flags)) { - doc_e=doc->cur_entry; - result=TRUE; - if (doc_e!=doc) { - if (DocEntryRun(doc,doc_e,TRUE,&has_action)==DOCM_CANCEL && has_action) - result=FALSE; - DocUnlock(doc); - } - } - } - DocDel(doc); - Fs->border_src=old_border_src; - return result; -} - -U0 DocMenuEndTaskCB() -{ - WinToTop; - throw; -} - -public I64 DocMenu(CDoc *m,I64 dof_flags=0) -{//Run menu chooser doc. Returns menu doc unlocked. - U8 *old_end_cb=Fs->task_end_cb; - Bool old_break_shift_esc=LBts(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC); - CDocEntry *doc_e; - I64 old_border_src=Fs->border_src,result=DOCM_CANCEL,has_action; - Fs->task_end_cb=&DocMenuEndTaskCB; - try { - if (m) { - m->desc='Menu'; - Fs->border_src=BDS_CONST; -dm_restart: - if (DocEd(m,dof_flags)) { - doc_e=m->cur_entry; - if (doc_e!=m) { - result=DocEntryRun(m,doc_e,TRUE,&has_action); - DocUnlock(m); - if (!has_action) { - result=DOCM_CANCEL; - dof_flags|=DOF_DONT_HOME; - goto dm_restart; - } - } - } - } - } catch { - if (!Fs->except_ch) { - if (!(dof_flags & DOF_INTERCEPT_TASK_END)) - Exit; - Fs->catch_except=TRUE; - } - } - LBEqu(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC,old_break_shift_esc); - Fs->border_src=old_border_src; - Fs->task_end_cb=old_end_cb; - return result; -} - -#help_index "DolDoc;Task/Srv/Exe" -public I64 PopUpEd(U8 *filename,CTask *parent=NULL,CTask **_pu_task=NULL) -{//Create PopUp win task and edit a doc. - U8 *st=MStrPrint("Ed(\"%Q\");",filename); - I64 result=PopUp(st,parent,_pu_task); - Free(st); - return result; -} - #help_index "DolDoc/Output;StdOut/DolDoc" public CTask *PopUpViewDoc(CDoc *doc,I64 dof_flags=0) {//Pass doc to PopUp win task for viewing. - U8 *buf=MStrPrint("Preempt(ON);DocEd(0x%X,0x%X);",doc,dof_flags); + U8 *buf=MStrPrint("DocEd(0x%X,0x%X);",doc,dof_flags); CTask *task=Spawn(&SrvCmdLine,NULL,"View",,Fs); TaskExe(task,NULL,buf,1<flags|=DOCF_MIN_SIZE | DOCF_FORM; - return PopUpPrint("DocMenu(0x%X,0x%X);",doc,dof_flags); -} - -public Bool PopUpForm(U8 *_d,U8 *class_name=lastclass, - I64 dof_flags=DOF_MIN_SIZE,U8 *header=NULL,U8 *footer=NULL) -{//See $LK,"::/Demo/DolDoc/Form.CPP"$ and $LK,"::/Demo/LastClass.CPP"$. - return PopUpPrint("DocForm(0x%X,0x%X,0x%X,0x%X,0x%X);",_d,class_name, - dof_flags,header,footer); -} - #help_index "DolDoc/Input;File/FileNames;StdIn/DolDoc" public U8 *PopUpPickFile(U8 *dir=NULL) {//Filename chooser. Uses $LK,"FileMgr",A="MN:FileMgr"$(). @@ -594,25 +164,6 @@ public Bool PopUpCancelOk(U8 *header=NULL,U8 *footer=NULL) return PopUp2("OKAY",1,"CANCEL",0,header,footer)>0; } -#define RSAC_REPLACE 0 -#define RSAC_SKIP 1 -#define RSAC_ALL 2 - -I64 PopUpReplaceSkipAllCancel(U8 *header=NULL,U8 *footer=NULL) -{ - I64 i; - CDoc *doc=DocNew; - if (header) DocPrint(doc,"%s",header); - DocPrint(doc,"$$CM+LX,1,4$$$$BT,\"REPLACE\",LE=RSAC_REPLACE$$" - "$$CM+LX,17,0$$$$BT,\"SKIP\",LE=RSAC_SKIP$$" - "$$CM+LX,1,3$$$$BT,\"ALL\",LE=RSAC_ALL$$" - "$$CM+LX,17,0$$$$BT,\"CANCEL\",LE=DOCM_CANCEL$$\n"); - if (footer) DocPrint(doc,"%s",footer); - i=PopUpMenu(doc); - DocDel(doc); - return i; -} - U8 *PopUpGetStr2(U8 *header,CTask *mem_task) { U8 *result,*st; @@ -753,164 +304,3 @@ public I64 PopUpFile(U8 *filename,Bool warn_ext=TRUE, Free(name); return result; } - -#help_index "Graphics/Input" -public I64 PopUpColor(U8 *header=NULL, - Bool allow_transparent=TRUE,Bool allow_dft=TRUE) -{//Chooser for 16-color, default or transparent. - I64 i; - CDoc *doc=DocNew; - if (header) - DocPrint(doc,"%s",header); - if (allow_transparent) - DocPrint(doc,"$$MU,\"TRANSPARENT\",LE=TRANSPARENT$$\n"); - for (i=0;ix_scale=1.0; - tf->y_scale=1.0; - tf->z_scale=1.0; - tf->é_x=0.0; - tf->é_y=0.0; - tf->é_z=0.0; - tf->x_offset=0.0; - tf->y_offset=0.0; - tf->z_offset=0.0; - if (PopUpForm(tf)) { - MemSet(r,0,16*sizeof(I64)); - r[0] =tf->x_scale*GR_SCALE; - r[5] =tf->y_scale*GR_SCALE; - r[10]=tf->z_scale*GR_SCALE; - r[15]=GR_SCALE; - - Mat4x4RotZ(r,tf->é_z*ã/180.0); - Mat4x4RotY(r,tf->é_y*ã/180.0); - Mat4x4RotX(r,tf->é_x*ã/180.0); - - r[3] =tf->x_offset*GR_SCALE; - r[7] =tf->y_offset*GR_SCALE; - r[11]=tf->z_offset*GR_SCALE; - return TRUE; - } else - return FALSE; -} - -#define PU_SPACING 10 -U0 DrawIt(CTask *task,CDC *dc) -{ - I64 i,j,i1,j1; - CDoc *doc=DocPut(task); - for (j=0;j<17;j++) - for (i=0;i<17;i++) { - if (j<16) - j1=j; - else - j1=TRANSPARENT; - if (i<16) - i1=i; - else - i1=TRANSPARENT; - dc->color=j1+i1<<16+ROPF_DITHER; - GrRect(dc,i*PU_SPACING,j*PU_SPACING+FramePtr("DitherFrame",task), - PU_SPACING,PU_SPACING); - } - i=(17*PU_SPACING+FONT_WIDTH-1)/FONT_WIDTH; - if (doc->max_x>i) i=doc->max_x; - WinHorz(task->win_left,task->win_left+i,task); - WinVert(task->win_top,task->win_top+doc->max_y+ - (17*PU_SPACING+FONT_WIDTH-1)/FONT_WIDTH,task); -} - -I64 DitherColor2(U8 *header=NULL) -{ - I64 msg_code,a1,a2,result=-1,i,j; - DocClear; - "%s",header; - DocRecalc(DocPut); - FramePtrAdd("DitherFrame",(DocPut->max_y+1)*FONT_HEIGHT); - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - do { - msg_code=GetMsg(&a1,&a2,1<=0 && a2>=0 && 0<=j<17 && 0<=i<17) { - if (j==16) j=TRANSPARENT; - if (i==16) i=TRANSPARENT; - result=j+i<<16+ROPF_DITHER; - goto dc_done; - } - } - } while (!(msg_code==MSG_KEY_DOWN && (a1==CH_ESC || a1==CH_SHIFT_ESC))); - do GetMsg(&a1,&a2,1<doc_signature!=DOC_SIGNATURE_VAL) + return; + if (doc->user_put_key && (*doc->user_put_key)(doc,doc->user_put_data,ch,sc)) + return; + unlock=DocLock(doc); + if (!Bt(doldoc.clean_scan_codes,sc.u8[0])) + doc->flags|=DOCF_UNDO_DIRTY; + DocCaptureUndo(doc); + if (Bt(chars_bmp_getkey,ch) && !(sc&(SCF_CTRL|SCF_ALT))) { + if (sc&SCF_KEY_DESC) { + st=Char2KeyName(ch,FALSE); + KeyDescSet("Char /'%s'",st); + Free(st); + } else + EdInsChar(ch,sc,doc); + } else { + doc_ce=doc->cur_entry; + x=doc->x; y=doc->y; + if (sc&SCF_ALT) + switch (ch) { + case CH_BACKSPACE: // + if (!(sc&(SCF_SHIFT|SCF_CTRL))) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Undo"); + else + DocUndoRestore(doc); + } + break; + } + else + switch (ch) { + case 0: + switch (sc.u8[0]) { + case SC_CURSOR_DOWN: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Cursor Down, Select"); + else + KeyDescSet("Edit/Cursor Down"); + } else + EdLineDown(doc,sc); + break; + } else + sc&=~SCF_CTRL; +//Fall Through to SC_END + case SC_END: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/GoTo Doc End, Select"); + else + KeyDescSet("Edit/GoTo Doc End"); + } else { + while (doc_ce!=doc) { + BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); + doc_ce=doc->cur_entry=doc_ce->next; + } + doc->cur_col=doc_ce->min_col; + DocFormBwd(doc); + } + } + break; + case SC_CURSOR_UP: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Cursor Up, Select"); + else + KeyDescSet("Edit/Cursor Up"); + } else + EdLineUp(doc,sc); + break; + } else + sc&=~SCF_CTRL; +//Fall Through to SC_HOME + case SC_HOME: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/GoTo Top of Doc, Select"); + else + KeyDescSet("Edit/GoTo Top of Doc"); + } else { + if (doc_ce==doc) doc_ce=doc_ce->last; + while (doc_ce!=doc) { + BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); + doc_ce=doc->cur_entry=doc_ce->last; + } + doc_ce=doc->cur_entry=doc->root.next; + doc->cur_col=doc_ce->min_col; + DocFormFwd(doc); + } + } + break; + case SC_PAGE_DOWN: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Page Down, Select"); + else + KeyDescSet("Edit/Page Down"); + } else { + i=doc_ce->y+doc->win_task->win_height-1; + if (doc_ce->type_u8==DOCT_HEX_ED) + i+=doc->cur_col/3/doc_ce->hex_ed_width; + while (doc_ce!=doc && + (doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->ytype_u8==DOCT_HEX_ED && + doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_widthcur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED) + break; + doc_ce=doc->cur_entry; + } + } + } + break; + case SC_PAGE_UP: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Page Up, Select"); + else + KeyDescSet("Edit/Page Up"); + }else { + i=doc_ce->y-(doc->win_task->win_height-1); + if (doc_ce->type_u8==DOCT_HEX_ED) + i+=doc->cur_col/3/doc_ce->hex_ed_width; + while (doc_ce->last!=doc && + (doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->y>i || + doc_ce->type_u8==DOCT_HEX_ED && + doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_width>i) && + doc_ce->y!=doc->root.next->y) { + EdLineUp(doc,sc); +//paranoid check for stuck on same node + if (doc->cur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED) + break; + doc_ce=doc->cur_entry; + } + } + } + break; + case SC_CURSOR_LEFT: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_CTRL) + KeyDescSet("Edit/GoTo Start of Line"); + else { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Cursor Left, Select"); + else + KeyDescSet("Edit/Cursor Left"); + } + } else + EdCursorLeft(doc,sc); + break; + case SC_CURSOR_RIGHT: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_CTRL) + KeyDescSet("Edit/GoTo End of Line"); + else { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Cursor Right, Select"); + else + KeyDescSet("Edit/Cursor Right"); + } + } else + EdCursorRight(doc,sc); + break; + case SC_DELETE: + if (!(sc&SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Cut To Clipboard"); + else + KeyDescSet("Char /Delete"); + } else { + if (sc&SCF_SHIFT) + EdCutToClipboard(doc); + else + EdDelChar(doc); + } + } + break; + case SC_INS: + if (sc&(SCF_SHIFT|SCF_CTRL)!=(SCF_SHIFT|SCF_CTRL)) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Paste Clipboard"); + else if (sc&SCF_CTRL) + KeyDescSet("Edit/Copy to Clipboard"); + else + KeyDescSet("Edit/Toggle Overstrike"); + } else { + if (sc&SCF_SHIFT) + EdPasteClipboard(doc); + else if (sc&SCF_CTRL) + EdCopyToClipboard(doc); + else + doc->flags^=DOCF_OVERSTRIKE; + } + } + break; + case SC_F1...SC_F10: + if (sc&SCF_CTRL) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /Src Code of Sym"); + else + KeyDescSet("Edit/Autocomplete Sym"); + } else { + DocUnlock(doc); + if (AutoComplete(ON)) { + if (sc&SCF_SHIFT) + ACMan(sc.u8[0]-SC_F1+1,Fs); + else + ACFillIn(sc.u8[0]-SC_F1+1); + } + DocLock(doc); + } + } else { + switch (sc.u8[0]) { + case SC_F1: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /About"); + else + KeyDescSet("Cmd /Help"); + } else { + if (sc&SCF_SHIFT) + Ed("::/Doc/AboutTempleOS.TXT.Z"); + else + Ed("::/Doc/HelpIndex.TXT.Z"); + } + break; + case SC_F2: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Play Macro"); + else + KeyDescSet("Edit/Macro"); + } else { + DocUnlock(doc); + if (sc&SCF_SHIFT) { + if (TaskValidate(sys_macro_util_task)) + PostMsgWait(sys_macro_util_task, + MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0); + SysMacroStripKey(&sys_macro_root,ch,sc); + PlaySysMacro; + } else + EdMacroUtil; + DocLock(doc); + } + break; + case SC_F3: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Edit/Find Last"); + else + KeyDescSet("Edit/Find Next"); + }else { + doc->find_replace->scan_fwd=!(sc&SCF_SHIFT); + EdFindNext(doc); + } + break; + case SC_F4: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /Insert Directory Name"); + else + KeyDescSet("Cmd /Insert FileName"); + } else { + DocUnlock(doc); + if (sc&SCF_SHIFT) + st=PopUpPickDir; + else + st=PopUpPickFile; + DocLock(doc); + if (st) { + DocPrintPartial(doc,"%s",st); + Free(st); + } + } + break; + case SC_F5: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /Adam Include"); + else + KeyDescSet("Cmd /Run (Execute)"); + } else { + if (st2=DocEntryLink(doc,doc_ce)) { + st=DocLinkFile(st2); + Free(st2); + } else { + DocWrite(doc); + st=StrNew(doc->filename.name); + } + if (st2=DirFile(st,"Run","CPP.Z")) { + if (FileFind(st2)) { + Free(st); + st=st2; + } else + Free(st2); + } + if (st) { + if (sc&SCF_SHIFT) + AdamFile(st); + else + PopUpFile(st); + Free(st); + } + } + break; + case SC_F6: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /God Doodle"); + else + KeyDescSet("Cmd /God Song"); + } else { +//$LK,"::/Adam/God/HSNotes.TXT"$ + if (sc&SCF_SHIFT) { + DocUnlock(doc); + GodDoodle; + DocLock(doc); + } else + GodSong; + } + break; + case SC_F7: + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /God Passage"); + else + KeyDescSet("Cmd /God Word"); + } else { +//$LK,"::/Adam/God/HSNotes.TXT"$ + FifoU8Flush(god.fifo); + GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); + if (sc&SCF_SHIFT) + GodPassage; + else + GodWord; + } + break; + } + } + break; + } + break; + case CH_CTRLA: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Save As"); + else + DocWrite(doc,TRUE); + } + break; + case CH_CTRLB: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Toggle Border"); + else + WinBorder(Bt(&doc->win_task->display_flags, + DISPLAYf_NO_BORDER),doc->win_task); + } + break; + case CH_CTRLC: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Copy to Clipboard"); + else + EdCopyToClipboard(doc); + } + break; + case CH_CTRLD: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /File Manager"); + else { + DocUnlock(doc); + FileMgr; + DocLock(doc); + } + } + break; + case CH_CTRLF: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Search Files"); + else + FindWiz; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Find & Replace"); + else + EdFindReplace(doc); + } + break; + case CH_CTRLG: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/GoTo Line Num"); + else + EdGoToLine(doc); + } + break; + case CH_BACKSPACE: // + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Char /Back Space"); + else { + DocCaptureUndo(doc); + doc_ce=doc->cur_entry; + if (doc->cur_col<=doc_ce->min_col) { + doc_ce=doc->cur_entry=doc_ce->last; + if (doc_ce!=doc && doc_ce->type_u8==DOCT_SOFT_NEW_LINE) + doc_ce=doc->cur_entry=doc_ce->last; + if (doc_ce==doc || doc_ce->type_u8==DOCT_PMT) { + doc_ce=doc->cur_entry=doc_ce->next; + doc->cur_col=doc_ce->min_col; + } else { + doc->cur_col=doc_ce->max_col; + if (doc->cur_col>doc_ce->min_col) + doc->cur_col--; + EdDelChar(doc); + } + } else { + doc->cur_col--; + EdDelChar(doc); + } + } + } + break; + case CH_CTRLI: + if (sc.u8[0]!=SC_TAB) { + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Indent Out"); + else + DocPrint(doc,"$$ID,-2$$"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Indent In"); + else + DocPrint(doc,"$$ID,2$$"); + } + } + break; + case '\n': + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Char /Return"); + else + KeyDescSet("Char /Page Break"); + } else + EdInsChar(ch,sc,doc); + break; + case CH_CTRLK: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Blinking Text Off"); + else + DocPrint(doc,"$$BK,0$$"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Blinking Text On"); + else + DocPrint(doc,"$$BK,1$$"); + } + break; + case CH_CTRLL: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Code Tools"); + else + EdCodeTools(doc); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Insert Text Widgets Wizard"); + else { + DocUnlock(doc); + EdInsWidgetWiz; + DocLock(doc); + } + } + break; + case CH_CTRLM: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Personal Notes"); + else + Ed("::/Home/PersonalNotes.TXT.Z"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Personal Menu"); + else { + m=DocRead("::/Home/PersonalMenu.TXT.Z"); + DocMenu(m); + DocDel(m); + } + } + break; + case CH_CTRLO: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Collapse"); + else + DocCollapse(TRUE,doc); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Uncolapse"); + else + DocCollapse(FALSE,doc); + } + break; + case CH_CTRLP: + if (doc->flags & (DOCF_SUPERSCRIPT_MODE | DOCF_SUBSCRIPT_MODE)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Toggle Super or Sub script"); + else { + DocPrint(doc,"$$SY,0$$"); + doc->flags&=~(DOCF_SUPERSCRIPT_MODE | DOCF_SUBSCRIPT_MODE); + } + } else if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Toggle Subscript"); + else { + DocPrint(doc,"$$SY,3$$"); + doc->flags|=DOCF_SUBSCRIPT_MODE; + } + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Toggle Superscript"); + else { + DocPrint(doc,"$$SY,-3$$"); + doc->flags|=DOCF_SUPERSCRIPT_MODE; + } + } + break; + case CH_CTRLQ: + break; + case CH_CTRLR: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Sprite Graphic Resource"); + else { + if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { + DocUnlock(doc); + if (doc_ce->type_u8==DOCT_SPRITE) + EdSpriteEd(doc, + (doc_ce->x-doc->line_start_col+doc_ce->max_col)* + FONT_WIDTH,(doc_ce->y-doc->top_line_num)*FONT_HEIGHT); + else + EdSpriteIns(doc, + (doc_ce->x+doc->cur_col-doc->line_start_col)*FONT_WIDTH, + (doc_ce->y-doc->top_line_num)*FONT_HEIGHT); + DocLock(doc); + } + } + } + break; + case CH_CTRLS: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Find Misspelled"); + else + ACFindMisspelled(doc); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Save"); + else + DocWrite(doc); + } + break; + case CH_CTRLT: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Single Entry Toggle Plain Text"); + else + DocEntryToggle(doc); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Toggle Plain Text Display"); + else + if (!(doc->flags&DOCF_FORM) || + doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)) + DocFlagsToggle(doc,DOCF_PLAIN_TEXT); + } + break; + case CH_CTRLU: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Underline Off"); + else + DocPrint(doc,"$$UL,0$$"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Underline On"); + else + DocPrint(doc,"$$UL,1$$"); + } + break; + case CH_CTRLV: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Paste Clipboard"); + else + EdPasteClipboard(doc); + } + break; + case CH_CTRLW: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Word Wrap Off"); + else + DocPrint(doc,"$$WW,0$$"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Word Wrap On"); + else + DocPrint(doc,"$$WW,1$$"); + } + break; + case CH_CTRLX: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Cut To Clipboard"); + else + EdCutToClipboard(doc); + } + break; + case CH_CTRLY: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Delete Line"); + else + EdDelLine(doc); + } + break; + case CH_CTRLZ: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Inverted Text Off"); + else + DocPrint(doc,"$$IV,0$$"); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Inverted Text On"); + else + DocPrint(doc,"$$IV,1$$"); + } + break; + case '0'...'9': + if (sc&SCF_CTRL) { + if (sc&SCF_KEY_DESC) { + if (sc&SCF_SHIFT) + KeyDescSet("Cmd /Word Definition"); + else + KeyDescSet("Edit/Autocomplete Word"); + } else { + if (AutoComplete(ON)) { + DocUnlock(doc); + if (sc&SCF_SHIFT) + ACDDef(ch-'0',Fs); + else + ACDFillin(ch-'0'); + DocLock(doc); + } + } + } + break; + case '[': + if (sc&SCF_CTRL) { + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/GoTo matching brace"); + else + EdFindPaired(doc,'}','{',FALSE); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/GoTo matching bracket"); + else + EdFindPaired(doc,']','[',FALSE); + } + } + break; + case ']': + if (sc&SCF_CTRL) { + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/GoTo matching brace"); + else + EdFindPaired(doc,'{','}',TRUE); + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/GoTo matching bracket"); + else + EdFindPaired(doc,'[',']',TRUE); + } + } + break; + } + } + if (unlock) + DocUnlock(doc); + if (!(doc->flags&DOCF_DONT_SWAP_OUT)) + Yield; +} + +Bool KDDocPutKey(I64 ch,I64 scan_code) +{ + CDoc *doc; + if (doc=DocPut) + DocPutKey(doc,ch,scan_code); + return FALSE; +} diff --git a/Adam/DolDoc/DocPutS.CPP b/Adam/DolDoc/DocPutS.CPP new file mode 100644 index 0000000..9cf227e --- /dev/null +++ b/Adam/DolDoc/DocPutS.CPP @@ -0,0 +1,358 @@ +#help_index "DolDoc/Output;StdOut/DolDoc" + +CDocEntry *DocPutS(CDoc *doc,U8 *st) +{//Don't use this. Use $LK-UL,"DocPrint",A="MN:DocPrint"$(). +//Does not handle partial Doc entries + //Returns last newly created dollar-sign CDocEntry. + U8 *ptr=st,*ptr2,*st2,*ptr3,*ptr4,*src, + *char_bitmap; + Bool unlock; + I64 ch,j; + CDocEntry *doc_e=NULL,*result=NULL,*doc_ce; + if (!st || !doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) + return NULL; + unlock=DocLock(doc); + if (doc->flags & DOCF_PLAIN_TEXT_WITH_TABS) + char_bitmap=chars_bmp_zero_cr_nl_cursor; + else if (doc->flags & DOCF_PLAIN_TEXT) + char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor; + else + char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor_dollar; + doc_ce=doc->cur_entry; + while (*ptr) { + ptr2=ptr; + do ch=*ptr++; + while (!Bt(char_bitmap,ch) || ch==CH_CURSOR && doc->flags&DOCF_NO_CURSOR); + ptr--; + if (!ch) { + if (j=ptr-ptr2) { + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; + if (doc->flags & DOCF_NO_CURSOR) { + src=MAlloc(j+1); + MemCpy(src,ptr2,j+1); + StrUtil(src,SUF_REM_CTRL_CHARS); + j=StrLen(src); + } else + src=ptr2; + doc_e->tag=MAlloc(j+1,doc->mem_task); + MemCpy(doc_e->tag,src,j+1); + doc_e->max_col=j; + DocInsEntry(doc,doc_e); + if (doc->flags & DOCF_NO_CURSOR) + Free(src); + } + } else { + if (j=ptr-ptr2) { + *ptr=0; + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; + if (doc->flags & DOCF_NO_CURSOR) { + src=MAlloc(j+1); + MemCpy(src,ptr2,j+1); + ptr3=src; + ptr4=src; + while (*ptr3) + if (*ptr3!=CH_CURSOR) + *ptr4++=*ptr3++; + else + ptr3++; + *ptr4=0; + j=ptr4-src; + } else + src=ptr2; + doc_e->tag=MAlloc(j+1,doc->mem_task); + MemCpy(doc_e->tag,src,j+1); + doc_e->max_col=j; + DocInsEntry(doc,doc_e); + if (doc->flags & DOCF_NO_CURSOR) + Free(src); + *ptr=ch; + } + switch (ch) { + case CH_CURSOR: + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; + DocInsEntry(doc,doc_e); + ptr++; + break; + case CH_FORM_FEED: + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_PAGE_BREAK | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK]; + DocInsEntry(doc,doc_e); + ptr++; + break; + case '\t': + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_TAB | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_TAB]; + DocInsEntry(doc,doc_e); + ptr++; + break; + case '$$': + ptr++; //skip first dollar + ptr2=ptr; + while (*ptr && *ptr!='$$') + ptr++; + if (*ptr) { + *ptr=0; //zero second dollar + if (ptr-1==ptr2 && *ptr2==CH_CURSOR) { + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; + DocInsEntry(doc,doc_e); + ptr2++; + } + if (ptr==ptr2) { + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; + doc_e->max_col=1; + if (doc->flags & DOCF_DBL_DOLLARS) + doc_e->tag=StrNew("$$$$",doc->mem_task); + else + doc_e->tag=StrNew("$$",doc->mem_task); + doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; + DocInsEntry(doc,doc_e); + } else { + st2=MAlloc(ptr-ptr2+1); + ptr3=ptr2; + ptr4=st2; + while (ch=*ptr3++) { + if (ch==CH_CURSOR) { + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR]; + DocInsEntry(doc,doc_e); + } else if (ch==CH_FORM_FEED) { + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_PAGE_BREAK | + doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK]; + DocInsEntry(doc,doc_e); + } else + *ptr4++=ch; + } + *ptr4=0; + if (doc_e=PrsDollarCmd(doc,st2)) { + result=doc_e; + DocInsEntry(doc,doc_e); + } + Free(st2); + } + *ptr++='$$'; + } + break; + default: + doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); + doc_e->type=DOCT_NEW_LINE | doc->settings_root.dft_text_attr<<8; + doc_e->de_flags=doldoc.dft_de_flags[DOCT_NEW_LINE]; + DocInsEntry(doc,doc_e); + if (ch=='\r') + while (*ptr=='\r') + ptr++; + if (*ptr=='\n') + ptr++; + while (*ptr=='\r') + ptr++; + } + } + } + if (unlock) + DocUnlock(doc); + return result; +} + +public CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...) +{//You must not print partial doc cmds. + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + CDocEntry *result=DocPutS(doc,buf); + Free(buf); + return result; +} + +public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...) +{//Lets you print half a doc cmd, if you like. + U8 *buf,*b,*src,*dst,*ptr,*ptr2; + Bool unlock; + CDocEntry *doc_ce,*doc_ne; + I64 ch,i,j; + if (!fmt) + return; + buf=StrPrintJoin(NULL,fmt,argc,argv); + ptr=buf; + if (doc->user_put_s && (*doc->user_put_s)(doc,doc->user_put_data,buf)) { + Free(buf); + return; + } + unlock=DocLock(doc); + if (doc->cur_entry->type_u8==DOCT_DATA) + while (ch=*ptr++) + DocPutKey(doc,ch,0); + else + while (ch=*ptr) { + if (!Bt(chars_bmp_safe_dollar,ch) || + doc->flags & (DOCF_OVERSTRIKE | DOCF_IN_DOLLAR)) { + DocPutKey(doc,ch,0); + ptr++; + } else { + ptr2=ptr++; + while (TRUE) { + ch=*ptr++; + if (!Bt(chars_bmp_safe_dollar,ch)) + break; + } + ptr--; + *ptr=0; + doc_ce=doc->cur_entry; + j=ptr-ptr2; + if (IsEditableText(doc_ce)) { + dst=b=MAlloc(doc_ce->max_col+j+1,doc->mem_task); + src=doc_ce->tag; + i=doc->cur_col; + doc->cur_col+=j; + doc_ce->max_col+=j; + while (i-->0) + *dst++=*src++; + while (j-->0) + *dst++=*ptr2++; + while (*dst++=*src++); + Free(doc_ce->tag); + doc_ce->tag=b; + } else { + dst=MAlloc(j+1,doc->mem_task); + MemCpy(dst,ptr2,j+1); + doc_ne=DocEntryNew(doc,doc_ce,dst); + doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; + doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; + QueIns(doc_ne,doc_ce->last); + doc->cur_entry=doc_ne; + doc->cur_col=StrLen(ptr2); + } + *ptr=ch; + DocRemSoftNewLines(doc,doc->cur_entry); + } + } + if (unlock) + DocUnlock(doc); + if (!(doc->flags&DOCF_DONT_SWAP_OUT)) + Yield; + Free(buf); +} + +Bool KDDocPutS(U8 *st) +{ + CDoc *doc; + if (doc=DocPut) + DocPrintPartial(doc,"%s",st); + return FALSE; +} + +public U0 DocPrintAtomic(CDoc *doc,U8 *fmt,...) +{//Prints multiple whole cmds all-at-once. Might need this when printing trees. + U8 *buf; + Bool unlock; + I64 old_flags; + if (!doc && !(doc=DocPut)) + return; + buf=StrPrintJoin(NULL,fmt,argc,argv); + unlock=DocLock(doc); + old_flags=doc->flags; + doc->flags|=DOCF_NO_CURSOR; + DocPrint(doc,"%s",buf); + DocRecalc(doc); + doc->flags=old_flags; + if (unlock) + DocUnlock(doc); + Free(buf); +} + +U0 DocDump(CDoc *doc,I64 uS_delay=0) +{ + U8 *st; + CDocEntry *doc_e,*doc_e2; + Bool unlock=DocLock(doc); + doc_e=doc->root.next; + while (doc_e!=doc) { + st=DocScanLine(doc,doc_e,NULL,&doc_e2); + "%s",st; + Free(st); + doc_e=doc_e2; + if (doc_e->type_u8==DOCT_NEW_LINE) { + '\n'; + BusyWait(uS_delay); + doc_e=doc_e->next; + } + } + if (unlock) + DocUnlock(doc); +} + +public CDocEntry *DocPutLine(CDoc *doc=NULL,CDocEntry *doc_e) +{//Send line from other doc to StdOut $LK,"DocPut",A="MN:DocPut"$. + I64 ch; + U8 *ptr,*ptr2; + Bool unlock; + if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) + return NULL; + unlock=DocLock(doc); + while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) { + if (doc_e->de_flags&DOCEF_TAG) { + ptr=doc_e->tag; + do { + ptr2=ptr; + while (ch=*ptr) + if (ch=='$$') + break; + else + ptr++; + *ptr=0; + "%s",ptr2; + *ptr=ch; + if (ch=='$$') { + "$$$$"; + ptr++; + } + } while (ch); + } else if (doc_e->type_u8==DOCT_TAB) + '\t'; + doc_e=doc_e->next; + } + '\n'; + if (doc_e!=doc) + doc_e=doc_e->next; + if (unlock) + DocUnlock(doc); + return doc_e; +} + +#help_index "Debugging/Dump;DolDoc/Cmd Line (Typically);"\ + "Cmd Line (Typically);DolDoc/Output;StdOut/DolDoc" +public U0 DocDm(U8 *buf,I64 cnt=0x80) +{//Dump live chunk of mem showing addresses. Can be edited. + CDocEntry *doc_e; + CDoc *doc=DocPut; + Bool unlock=DocLock(doc); + doc_e=DocPrint(doc,"$$HX-Z,%d,16$$",cnt); + doc_e->data=buf; + doc->cur_entry=doc_e->next; + DocRecalc(doc); + if (unlock) + DocUnlock(doc); +} + +public U0 DocD(U8 *buf,I64 cnt=0x80) +{//Dump live chunk of mem showing offsets. Can be edited. + CDocEntry *doc_e; + CDoc *doc=DocPut; + Bool unlock=DocLock(doc); + doc_e=DocPrint(doc,"$$HX,%d,16$$",cnt); + doc_e->data=buf; + doc->cur_entry=doc_e->next; + DocRecalc(doc); + if (unlock) + DocUnlock(doc); +} diff --git a/Adam/DolDoc/DocRecalcB.CPP b/Adam/DolDoc/DocRecalc.CPP similarity index 99% rename from Adam/DolDoc/DocRecalcB.CPP rename to Adam/DolDoc/DocRecalc.CPP index c0d44b3..f5d6ffb 100644 --- a/Adam/DolDoc/DocRecalcB.CPP +++ b/Adam/DolDoc/DocRecalc.CPP @@ -606,7 +606,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC) case DOCT_TEXT: if (!col2 && !(doc_e->de_flags &(DOCEF_TREE|DOCEF_LST|DOCEF_TAG_CB|DOCEF_DEFINE| - DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK))) + DOCEF_AUX_STR|DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK))) del_cl=TRUE; break; case DOCT_HEX_ED: diff --git a/Adam/DolDoc/DocRecalcA.CPP b/Adam/DolDoc/DocRecalcLib.CPP similarity index 86% rename from Adam/DolDoc/DocRecalcA.CPP rename to Adam/DolDoc/DocRecalcLib.CPP index f11ac24..341f897 100644 --- a/Adam/DolDoc/DocRecalcA.CPP +++ b/Adam/DolDoc/DocRecalcLib.CPP @@ -6,21 +6,6 @@ I64 DocCharDist(CDoc *doc,I64 x,I64 y) return (SqrI64(doc->x-x)+SqrI64(doc->y-y))*FONT_WIDTH*FONT_WIDTH; } -public U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC) -{//Center win on doc cursor, cur_entry. - Bool unlock; - CTask *task; - if (!doc && !(doc=DocPut)) - return; - unlock=DocLock(doc); - task=doc->win_task; - DocRecalc(doc,FALSE,recalc); - if (!(doc->flags&DOCF_BORDER_DOC)) - doc->top_line_num=doc->y-(task->win_height+1)>>1; - if (unlock) - DocUnlock(doc); -} - U0 DocDelToNum(CDoc *doc,I64 num) { CDocEntry *doc_e=doc->root.next,*doc_e2; @@ -62,7 +47,6 @@ U0 DocBorderLstDraw(CDoc *doc) U64 ch; CDoc *templ=doc; CD3I64 saved_scroll; - Bool old_preempt=Preempt; while (templ && templ->doc_signature==DOC_SIGNATURE_VAL) { y+=(Bsr(templ->desc)+7)>>3+1; //StrLen+1 templ=templ->parent_doc; @@ -84,7 +68,40 @@ U0 DocBorderLstDraw(CDoc *doc) templ=templ->parent_doc; } WinScrollRestore(win_task,&saved_scroll); - Preempt(old_preempt); +} + +public U0 DocTop(CDoc *doc=NULL) +{//Move cursor, cur_entry, to top. + Bool unlock; + if (!doc && !(doc=DocPut)) + return; + unlock=DocLock(doc); + doc->cur_entry=doc->root.next; + doc->cur_col=doc->cur_entry->min_col; + doc->x=0; + doc->y=0; + doc->line_start_col=0; + doc->top_line_num=0; + + DocFormFwd(doc); + DocRecalc(doc); + if (unlock) + DocUnlock(doc); +} + +public U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC) +{//Center win on doc cursor, cur_entry. + Bool unlock; + CTask *task; + if (!doc && !(doc=DocPut)) + return; + unlock=DocLock(doc); + task=doc->win_task; + DocRecalc(doc,FALSE,recalc); + if (!(doc->flags&DOCF_BORDER_DOC)) + doc->top_line_num=doc->y-(task->win_height+1)>>1; + if (unlock) + DocUnlock(doc); } public U0 DocBottom(CDoc *doc=NULL) @@ -145,25 +162,21 @@ public U0 DocCollapse(Bool collapse=TRUE,CDoc *doc=NULL) DocUnlock(doc); } -#help_index "DolDoc/Output;StdOut/DolDoc" -public U0 DocPrintAtomic(CDoc *doc,U8 *fmt,...) -{//Necessary when hidden text might screw-up -//inserts. It does multiple whole doc cmds all-at-once. - U8 *buf; - Bool unlock; - I64 old_flags; - if (!doc && !(doc=DocPut)) - return; - buf=StrPrintJoin(NULL,fmt,argc,argv); - unlock=DocLock(doc); - old_flags=doc->flags; - doc->flags|=DOCF_NO_CURSOR; - DocPrint(doc,"%s",buf); - DocRecalc(doc); - doc->flags=old_flags; - if (unlock) - DocUnlock(doc); - Free(buf); +#help_index "DolDoc/Cmd Line (Typically);Cmd Line (Typically)" +public I64 DocMax(I64 i=MAX_I64) +{//Set max document entries. (Cmd line buffer.) +//Adjusts the size of the cmd line buf. + //Normally, the cmd line deletes entries + //when more are added and the old scroll up. + //See $LK,"max_entries",A="FF:::/Adam/DolDoc/DocTerm.CPP,max_entries"$. + I64 result; + CDoc *doc; + if (doc=DocPut) { + result=doc->max_entries; + doc->max_entries=i; + return result; + } else + return 0; } #help_index "DolDoc/Task;StdOut/Task" @@ -172,7 +185,6 @@ U0 DocUpdateTaskDocs(CTask *task) CDrv *dv; CDoc *doc; CD3I64 saved_scroll; - Bool old_preempt=Preempt; I64 border_attr; if (task->border_src==BDS_CUR_DRV && task->cur_dv) { border_attr=task->cur_dv->text_attr; @@ -193,14 +205,11 @@ U0 DocUpdateTaskDocs(CTask *task) Fs->catch_except=TRUE; if (task->title_src==TTS_ED_FILENAME) MemCpy(task->task_title,doc->filename.name,TASK_TITLE_LEN); - Preempt(old_preempt); DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN); - Preempt; } if ((doc=DocBorder(task)) && !(doc->flags&DOCF_DONT_SHOW)) { WinScrollNull(task,&saved_scroll); DocRecalc(doc,FALSE,DOC_RECALC_TO_SCREEN); WinScrollRestore(task,&saved_scroll); } - Preempt(old_preempt); } diff --git a/Adam/DolDoc/DocRun.CPP b/Adam/DolDoc/DocRun.CPP new file mode 100644 index 0000000..26a21d7 --- /dev/null +++ b/Adam/DolDoc/DocRun.CPP @@ -0,0 +1,103 @@ +#help_index "DolDoc" + +public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e, + Bool exited,I64 *_has_action=NULL) +{//Do action on final entry selected by user. +//Sometimes returns locked, sometimes unlocked + U8 ch=doc->cmd_U8,*st; + I64 result=DOCM_CANCEL,has_action=FALSE; + CHashDefineStr *temph; + DocLock(doc); + if (!exited) { + if (doc_e->de_flags & DOCEF_ESC) { + Msg(MSG_KEY_DOWN,CH_ESC,0,1<de_flags & DOCEF_QUIT) { + Msg(MSG_KEY_DOWN,CH_SHIFT_ESC,0,1<de_flags & DOCEF_CHECK_COLLAPSABLE) { + doc_e->de_flags^=DOCEF_CHECKED_COLLAPSED; + has_action=TRUE; + } + } + try { + if (ch==CH_SPACE) { + if (doc_e->de_flags & DOCEF_LINK && doc->left_click_link) { + result=(*doc->left_click_link)(doc,doc_e); + has_action=TRUE; + } + if (doc_e->de_flags & DOCEF_LEFT_EXP) { + result=doc_e->left_exp; + has_action=TRUE; + Msg(MSG_CMD,result,0,1<de_flags & DOCEF_LEFT_CB && doc_e->left_cb) { + DocUnlock(doc); + result=(*doc_e->left_cb)(doc,doc_e); + has_action=TRUE; + Msg(MSG_CMD,result,0,1<de_flags & DOCEF_LEFT_MACRO) { + if (doc_e->de_flags & DOCEF_POPUP) { + st=StrNew(doc_e->left_macro); + DocUnlock(doc); + PopUp(st,Fs); + Free(st); + } else { + if (doc_e->de_flags & DOCEF_LEFT_AUTO) + AutoStr("%s",doc_e->left_macro); + else + Auto("%s",doc_e->left_macro); + } + has_action=TRUE; + } + if (!exited && doc_e->de_flags & DOCEF_LST && + doc_e->de_flags & DOCEF_DEFINE && + (temph=HashFind(doc_e->define_str, + doc->win_task->hash_table,HTT_DEFINE_STR)) && + (result=PopUpPickLst(temph->data))!=DOCM_CANCEL) { + DocDataFmt(doc,doc_e,result); + DocDataScan(doc,doc_e); + has_action=TRUE; + } + } else if (ch=='\n') { + if (doc_e->de_flags & DOCEF_LINK && doc->right_click_link) { + result=(*doc->right_click_link)(doc,doc_e); + has_action=TRUE; + } + if (doc_e->de_flags & DOCEF_RIGHT_EXP) { + result=doc_e->right_exp; + has_action=TRUE; + Msg(MSG_CMD,result,0,1<de_flags & DOCEF_RIGHT_CB && doc_e->right_cb) { + DocUnlock(doc); + result=(*doc_e->right_cb)(doc,doc_e); + has_action=TRUE; + Msg(MSG_CMD,result,0,1<de_flags & DOCEF_RIGHT_MACRO) { + if (doc_e->de_flags & DOCEF_POPUP) { + st=StrNew(doc_e->right_macro); + DocUnlock(doc); + PopUp(st,Fs); + Free(st); + } else { + if (doc_e->de_flags & DOCEF_RIGHT_AUTO) + AutoStr("%s",doc_e->right_macro); + else + Auto("%s",doc_e->right_macro); + } + has_action=TRUE; + } + } + } + catch + DocBottom(doc); + doc->cmd_U8=CH_SPACE; +er_done: + if (_has_action) *_has_action=has_action; + return result; +} diff --git a/Adam/DolDoc/DocTerm.CPP b/Adam/DolDoc/DocTerm.CPP new file mode 100644 index 0000000..0284521 --- /dev/null +++ b/Adam/DolDoc/DocTerm.CPP @@ -0,0 +1,192 @@ +#help_index "DolDoc/Task;StdOut/Task" +public CDoc *DocBorderNew(CDoc *pdoc) +{//Make new std border doc. + CDocEntry *doc_e; + CDoc *bdoc; + + bdoc=DocNew; + bdoc->flags|=DOCF_BORDER_DOC; + if (pdoc) { + DocPrint(bdoc,"$$CM+H+BY+RX+NC,-7,1$$"); + doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); + doc_e->user_data=pdoc; + doc_e->tag_cb=&EdFilterCB; + doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); + doc_e->user_data=pdoc; + doc_e->tag_cb=&EdOverStrikeCB; + doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); + doc_e->user_data=pdoc; + doc_e->tag_cb=&EdDollarCB; + DocPrint(bdoc,"$$CM+H+BY+RX+NC,-18,1$$"); + doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); + doc_e->user_data=pdoc; + doc_e->tag_cb=&EdMoreCB; + doc_e=DocPrint(bdoc,"$$TX+H+BD+TC,\" \"$$"); + doc_e->user_data=pdoc; + doc_e->tag_cb=&EdDollarTypeCB; + } + DocPrint(bdoc,"$$CM+H+TY+NC,0,-1$$"); + doc_e=DocPrint(bdoc,"$$DA+H-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=15$$"); + doc_e->data=&Fs->task_title; + DocDataFmt(bdoc,doc_e); + DocPrint(bdoc,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs); + DocPrint(bdoc,"$$TX+H+RX+BD,\"[X]\"$$"); + DocPrint(bdoc,"$$BK,1$$$$TX+H+LX+BD,\"MENU\"$$$$BK,0$$"); + return bdoc; +} + +public U0 DocTermNew() +{//Make into term win task with Put/Display/Border docs. + CDoc *pdoc=DocNew; + pdoc->right_click_link=&TermRightClickLink; + pdoc->max_entries=4096; + Fs->border_src=BDS_CUR_DRV; + pdoc->desc='Term'; + Fs->put_doc=Fs->display_doc=pdoc; + Fs->border_doc=DocBorderNew(pdoc); + Fs->cur_menu=MenuFile("::/Doc/EdPullDown.TXT"); + WinScrollsInit(Fs); + Raw(OFF); +} + +#help_index "DolDoc" + +#define RIGHT_INCLUDE 0 +#define RIGHT_AINCLUDE 1 +#define RIGHT_COPY 2 +#define RIGHT_MOVE 3 +#define RIGHT_DELETE 4 +#define RIGHT_TYPE 5 +#define RIGHT_ED 6 +#define RIGHT_PLAIN 7 +#define RIGHT_AUTOFILE 8 + +I64 PopUpTermRight(U8 *header) +{ + I64 i; + CDoc *doc=DocNew; + if (header) DocPrint(doc,"%s",header); + DocPrint(doc,"\n\n" + "TXT=%s\nJIT=%s\nGRA=%s" + "$$CM+LX,1,3 $$$$BT,\"INCLUDE JIT\",LE=RIGHT_INCLUDE$$" + "$$CM+LX,26,0$$$$BT,\"ADAM_INCLUDE JIT\",LE=RIGHT_AINCLUDE$$" + "$$CM+LX,1,3 $$$$BT,\"COPY \",LE=RIGHT_COPY$$" + "$$CM+LX,26,0$$$$BT,\"MOVE OR RENAME \",LE=RIGHT_MOVE$$" + "$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=RIGHT_DELETE$$" + "$$CM+LX,26,0$$$$BT,\"TYPE TXT;GRA\",LE=RIGHT_TYPE$$" + "$$CM+LX,1,3 $$$$BT,\"ED TXT\",LE=RIGHT_ED$$" + "$$CM+LX,26,0$$$$BT,\"PLAIN ED TXT\",LE=RIGHT_PLAIN$$" + "$$CM+LX,1,3 $$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$" + "$$CM+LX,26,0$$$$BT,\"AUTOFILE AUT\",LE=RIGHT_AUTOFILE$$\n", + FILEMASK_TXT,FILEMASK_JIT,FILEMASK_GRA); + i=PopUpMenu(doc); + DocDel(doc); + return i; +} + +I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e) +{//Called with doc locked, exit unlocked + Bool result; + U8 *st; + if (st=DocEntryLink(doc,doc_e)) { + DocUnlock(doc); + if (doc_e->de_flags & DOCEF_POPUP) + result=PopUpEd(st); + else + result=Ed(st); + Free(st); + return result; + } +} + +I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e) +{//Called with doc locked, exit unlocked + Bool send_new_line=FALSE,result=FALSE; + U8 *st,*st2; + I64 i; + CEdFileName fn; + if (st2=DocEntryLink(doc,doc_e)) { + if (st=DocLinkFile(st2)) { + DocUnlock(doc); + if ((i=PopUpTermRight(st))>=0) { + DocBottom(doc); + switch (i) { + case RIGHT_INCLUDE: + if (FileExtDot(st) && !FilesFindMatch(st,FILEMASK_JIT)) { + if (!PopUpCancelOk(ST_WARN_ST "Not .CPP File\n\n")) { + send_new_line=TRUE; + break; + } + } + "#include \"%s\";\n$$PT$$$$FG$$$$BG$$",st; + WinZBufUpdate; + ExeFile(st); + result=TRUE; + break; + case RIGHT_AINCLUDE: + if (FileExtDot(st) && !FilesFindMatch(st,FILEMASK_JIT)) { + if (!PopUpCancelOk(ST_WARN_ST "Not .CPP File\n\n")) { + send_new_line=TRUE; + break; + } + } + "Adam(\"#include \\\"%s\\\"\" );\n$$PT$$$$FG$$$$BG$$",st; + WinZBufUpdate; + AdamFile(st,FALSE); + result=TRUE; + break; + case RIGHT_COPY: + StrCpy(fn.name,st); + if (DocForm(&fn)) { + result=ToBool(Copy(st,fn.name)); + } else + send_new_line=TRUE; + break; + case RIGHT_MOVE: + StrCpy(fn.name,st); + if (DocForm(&fn)) + result=Move(st,fn.name); + else + send_new_line=TRUE; + break; + case RIGHT_DELETE: + result=ToBool(Del(st)); + break; + case RIGHT_TYPE: + result=Type(st); + break; + case RIGHT_ED: + "Ed(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; + result=Ed(st); + break; + case RIGHT_PLAIN: + "Plain(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; + result=Plain(st); + break; + case RIGHT_AUTOFILE: + if (FileExtDot(st) && !FilesFindMatch(st,"*.AUT*")) { + if (!PopUpCancelOk(ST_WARN_ST "Not .AUT File\n\n")) { + send_new_line=TRUE; + break; + } + } + "AutoFile(\"%s\");\n$$PT$$$$FG$$$$BG$$",st; + WinZBufUpdate; + AutoFile(st); + result=TRUE; + break; + } + } else + send_new_line=TRUE; + Free(st); + } else + send_new_line=TRUE; + Free(st2); + } else + send_new_line=TRUE; + DocBottom(doc); + "$$PT$$$$FG$$$$BG$$"; + if (send_new_line) + '\n'; + return result; +} diff --git a/Adam/DolDoc/DocCtrlL.CPP b/Adam/DolDoc/DocWidgetWiz.CPP similarity index 94% rename from Adam/DolDoc/DocCtrlL.CPP rename to Adam/DolDoc/DocWidgetWiz.CPP index 7a740ef..2bbe02a 100644 --- a/Adam/DolDoc/DocCtrlL.CPP +++ b/Adam/DolDoc/DocWidgetWiz.CPP @@ -4,8 +4,6 @@ U8 *ctrl_L_footer= "\n$$MU-X+Q,\"Abort\",LE=DOCM_CANCEL$$\n" "\n\n$$LK+PU,\"Click for Help\",A=\"FI:::/Doc/Widget.TXT\"$$\n"; -#define DFT_ADDR_LINK_BIN_SIZE 64 - I64 PopUpLinkType(Bool include_anchor) { I64 i; @@ -34,8 +32,9 @@ I64 PopUpLinkType(Bool include_anchor) class CEdFileLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n", - aux[512]; + file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; + I64 book; + U8 aux[512]; I64 num; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -46,8 +45,9 @@ class CEdFileLink class CEdFileAnchorLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n", - aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; + file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; I64 num; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -58,8 +58,9 @@ class CEdFileAnchorLink class CEdFileFindLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n", - aux[512] fmtstr "$$DA-P,511,A=\"Str :%s\"$$\n"; + file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Str :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,511,A=\"Occurrence Num:%04d\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -70,8 +71,9 @@ class CEdFileFindLink class CEdFileLineLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n", - aux[512]; + file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; + I64 book; + U8 aux[512]; I64 num fmtstr "$$DA-TRM,511,A=\"Line Num :%04d\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -82,8 +84,9 @@ class CEdFileLineLink class CEdManPageLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512], - aux[512] fmtstr "$$DA-P,511,A=\"Label :%s\"$$\n"; + file[512]; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Label :%s\"$$\n"; I64 num; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -94,8 +97,9 @@ class CEdManPageLink class CEdAddrLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512], - aux[512] fmtstr "$$DA-P,511,A=\"Addr Exp :%s\"$$\n"; + file[512]; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Addr Exp :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,511,A=\"Bin Size :%04d\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -106,8 +110,9 @@ class CEdAddrLink class CEdPlaceAnchor { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512], - aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; + file[512]; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; I64 num; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up, @@ -118,9 +123,11 @@ class CEdPlaceAnchor class CEdBibleLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512], - aux[512] fmtstr "$$DA-P,511,A=\"Chapter Verse :%s\"$$\n"; + file[512]; + I64 book fmtstr "$$LS,D=\"ST_BIBLE_BOOKS\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Chapter Verse :%s\"$$\n"; I64 num; + U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", @@ -130,8 +137,9 @@ class CEdBibleLink class CEdDefLink { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512], - aux[512] fmtstr "$$DA-P,511,A=\"Word :%s\"$$\n"; + file[512]; + I64 book; + U8 aux[512] fmtstr "$$DA-P,511,A=\"Word :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,511,A=\"Def Num :%4d\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -142,8 +150,9 @@ class CEdDefLink class CEdProject { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n", - aux[512]; + file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; + I64 book; + U8 aux[512]; I64 num; U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", @@ -154,7 +163,6 @@ class CEdProject Bool GetLink(I64 type,U8 **_tag,U8 **_link,Bool *_pop_up, Bool *_quote,U8 **_html_link) { - I64 i; CEdFileLink *e=CAlloc(sizeof(CEdFileLink)); Bool result=FALSE; if (type>=0) { @@ -269,17 +277,14 @@ Bool GetLink(I64 type,U8 **_tag,U8 **_link,Bool *_pop_up, *_link=StrNew(e->aux); } break; - case LK_BIBLE_FIND: //TODO - i=PopUpPickDefineSub("ST_BIBLE_BOOKS"); - if (i>=0) { - if (DocForm(e,"CEdBibleLink",,,ctrl_L_footer)) { - result=TRUE; - if (!*e->tag) - *_tag=MStrPrint("%Z,%s",i,"ST_BIBLE_BOOKS",e->aux); - else - *_tag=StrNew(e->tag); - *_link=MStrPrint("BF:%Z,%s",i,"ST_BIBLE_BOOKS",e->aux); - } + case LK_BIBLE_FIND: + if (DocForm(e,"CEdBibleLink",,,ctrl_L_footer)) { + result=TRUE; + if (!*e->tag) + *_tag=MStrPrint("%Z,%s",e->book,"ST_BIBLE_BOOKS",e->aux); + else + *_tag=StrNew(e->tag); + *_link=MStrPrint("BF:%Z,%s",e->book,"ST_BIBLE_BOOKS",e->aux); } break; case LK_DEF: @@ -469,11 +474,11 @@ U0 EdInsPageSetting() Free(e); } -I64 PopUpDollarType() +I64 PopUpWidgetType() { I64 i; CDoc *doc=DocNew; - DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Text Widget Menu\"$$\n" + DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Text Widgets Menu\"$$\n" "\n$$LTBLUE$$$$MU,\"Link\",LE=DOCT_LINK$$\n" "$$MU,\"Text\",LE=DOCT_TEXT$$\n" "$$MU,\"Tree Branch\",LE=DOCT_TREE$$\n" @@ -496,7 +501,7 @@ I64 PopUpDollarType() return i; } -class CEdDollarText +class CEdText { U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; Bool left_x fmtstr "$$CB,\"Left X\"$$\n", @@ -520,10 +525,10 @@ class CEdDollarText fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; }; -U0 EdInsDollarText() +U0 EdInsText() { U8 *st,buf[512]; - CEdDollarText *e=CAlloc(sizeof(CEdDollarText)); + CEdText *e=CAlloc(sizeof(CEdText)); if (DocForm(e,,,,ctrl_L_footer)) { *buf=0; if (e->left_x ) CatPrint(buf,"+LX"); @@ -964,9 +969,9 @@ U0 EdInsTree() Free(e); } -U0 EdInsDollarCmd() +U0 EdInsWidgetWiz() { - I64 type=PopUpDollarType; + I64 type=PopUpWidgetType; switch (type) { case DOCT_FOREGROUND: EdInsColor; @@ -978,7 +983,7 @@ U0 EdInsDollarCmd() EdInsLink; break; case DOCT_TEXT: - EdInsDollarText; + EdInsText; break; case DOCT_TREE: EdInsTree; @@ -1030,7 +1035,7 @@ I64 PopUpSpriteType() { I64 i; CDoc *doc=DocNew; - DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Graphic Resource Menu\"$$\n" + DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Graphic Sprite Resource Menu\"$$\n" "$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/Resource.TXT.Z\"$$\n" "\n$$LTBLUE$$$$MU,\"Make Sprite\",LE=EST_SPRITE$$\n" "$$MU,\"Pointer to Sprite\",LE=EST_SPRITE_PTR$$\n" diff --git a/Adam/DolDoc/MakeDoc.CPP b/Adam/DolDoc/MakeDoc.CPP new file mode 100644 index 0000000..76b586f --- /dev/null +++ b/Adam/DolDoc/MakeDoc.CPP @@ -0,0 +1,69 @@ +Cd(__DIR__);; + +#help_index "DolDoc" +#help_file "::/Doc/DolDoc" + +/* +TempleOS DolDoc's can have "cursor movement" cmds which can move the cursor up +the screen and layer on existing text. It can also have callback funs which +supply live, changing text. For these reasons, you can't assume you know +where the visible portion of the document is and must process much +of the document each time it is placed on the screen, becoming CPU +intensive on big documents. +See $LK,"::/Doc/DolDocOverview.TXT"$ +*/ + +//Hash Types +#define DHT_DOC_CMD 1 +#define DHT_DOC_FLAG 2 +#define DHT_COLOR 4 + +public class CDolDocGlbls +{ + CHashTable *hash; + I64 dft_de_flags [DOCT_NUM_TYPES], + type_flags_nontag_invisible [(DOCT_NUM_TYPES+63)/64], + type_flags_form [(DOCT_NUM_TYPES+63)/64], + type_flags_data [(DOCT_NUM_TYPES+63)/64], + clean_scan_codes [4]; + I32 dft_type_flags [DOCT_NUM_TYPES]; +} doldoc; +MemSet(&doldoc,0,sizeof(CDolDocGlbls)); + +#help_index "God" +#define BIBLE_FILENAME "::/Misc/Bible.TXT.Z" + +#include "DocExt" +#include "DocBin" +#include "DocNew" +#include "DocForm" +#include "DocDblBuf" +#include "DocPlain" +#include "DocInit" +#include "DocHighlight" +#include "DocRecalcLib" +#include "DocRecalc" +#include "DocFile" +#include "DocClipBoard" +#include "DocRun" +#include "DocGet" +#include "DocChar" +#include "DocFind" +#include "DocLink" +#include "DocEd" +#include "DocPopUp" +#include "DocGr" +#include "DocMacro" +#include "DocWidgetWiz" +#include "DocPutKey" +#include "DocPutS" +#include "DocOpt" +#include "DocCodeTools" +#include "DocTree" +#include "DocTerm" + +KeyDevAdd(&KDDocPutKey,&KDDocPutS,0x80000000,TRUE); +fp_getstr2=&DocGetStr2; +fp_doc_put=&DocPut; + +Cd("..");; diff --git a/Adam/God/GodBible.CPP b/Adam/God/GodBible.CPP index f70cd22..4c43031 100644 --- a/Adam/God/GodBible.CPP +++ b/Adam/God/GodBible.CPP @@ -269,3 +269,18 @@ public U0 BibleVerse(CDoc *doc_out=NULL,U8 *verse,I64 lines) Free(st2); } } + +U0 BibleView() +{ + U8 buf[STR_LEN]; + I64 book=PopUpPickDefineSub("ST_BIBLE_BOOKS"); + if (book>=0) { + StrPrint(buf,"BF:%Z,1:1",book,"ST_BIBLE_BOOKS"); + Ed(buf); + } +} +U0 CtrlAltB(I64) +{ + PopUp("BibleView;"); +} +CtrlAltCBSet('B',&CtrlAltB,"Cmd /Bible"); diff --git a/Adam/God/GodDoodle.CPP b/Adam/God/GodDoodle.CPP index 0c02be2..2d4cea0 100644 --- a/Adam/God/GodDoodle.CPP +++ b/Adam/God/GodDoodle.CPP @@ -101,9 +101,9 @@ public U8 *GodDoodleSprite(U8 *hex=NULL) if (god.doodle_dc) return NULL; god.doodle_done=FALSE; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; PopUpOk("The $LK+PU,"Holy Spirit",A="FI:::/Adam/God/HSNotes.TXT"$ can puppet you.\n\n" "Press $$GREEN$$$$FG$$ until it finishes."); diff --git a/Adam/God/GodExt.CPP b/Adam/God/GodExt.CPP index 59603de..c2cd366 100644 --- a/Adam/God/GodExt.CPP +++ b/Adam/God/GodExt.CPP @@ -18,7 +18,7 @@ god.doodle_fifo =FifoU8New(2048*8); god.fifo =FifoU8New(2048*8); extern U0 GodBitsIns(I64 num_bits,I64 n); -extern U0 GodWord(); +extern U0 GodDoodle(U8 *hex=NULL); extern U0 GodPassage(I64 num_lines=20); extern U0 GodSong(); -extern U0 GodDoodle(U8 *hex=NULL); +extern U0 GodWord(); diff --git a/Adam/God/HSNotes.TXT b/Adam/God/HSNotes.TXT index 770b071..de15c42 100644 --- a/Adam/God/HSNotes.TXT +++ b/Adam/God/HSNotes.TXT @@ -153,6 +153,7 @@ You like to hangout in courts?Hospitals?$FG,4$"Prisons"$FG$ Best way for Bill Gates to save lives? $FG,4$Earthquake prediction$FG$ Stem cells? $FG,4$Lower hanging fruit exists (2007)$FG$ Eleventh commandment? $FG,4$Thou shall not litter.(Maybe, glory of Creation)$FG$ +Twelfth commandment? $FG,4$Don't slaughter unarmed men in war.$FG$ Before Katrina $FG,4$Floods do justice. Black bead elder (tree book)$FG$ After Katrina $FG,4$Suffering Simplifies Life$FG$ What field are You most better? $FG,4$Economics$FG$ diff --git a/Adam/God/God.CPP b/Adam/God/MakeGod.CPP similarity index 82% rename from Adam/God/God.CPP rename to Adam/God/MakeGod.CPP index d914c86..70a139c 100644 --- a/Adam/God/God.CPP +++ b/Adam/God/MakeGod.CPP @@ -1,6 +1,9 @@ +Cd(__DIR__);; + #help_index "God" #help_file "::/Doc/God" #include "GodBible" #include "HolySpirit" #include "GodSong" #include "GodDoodle" +Cd("..");; diff --git a/Adam/Gr/Gr.CPP b/Adam/Gr/Gr.HPP similarity index 74% rename from Adam/Gr/Gr.CPP rename to Adam/Gr/Gr.HPP index 9e57437..07294aa 100644 --- a/Adam/Gr/Gr.CPP +++ b/Adam/Gr/Gr.HPP @@ -1,24 +1,3 @@ -#help_index "Graphics" -U0 GrInit1() -{ - DefineLstLoad("ST_SPRITE_ELEM_TYPES", - "End\0Color\0Dither Color\0" - "Width\0Planar Symmetry\0Transform On\0Transform Off\0Shift\0" - "Point\0PolyPoint\0Line\0PolyLine\0Rect\0Rotated Rect\0" - "Circle\0Ellipse\0Polygon\0BSpline2\0BSpline2 Closed\0" - "BSpline3\0BSpline3 Closed\0" - "Flood Fill\0Flood Fill Not Color\0BitMap\0Mesh\0Shiftable Mesh\0" - "Arrow\0Text\0Text Box\0Text Diamond\0"); - DefineLstLoad("ST_SPRITE_ELEM_CODES", - "End\0Color\0Color\0" - "Width\0PlanarSymmetry\0Transform\0Transform\0Shift\0" - "Pt\0PolyPt\0Line\0PolyLine\0Rect\0Rect\0" - "Circle\0Ellipse\0Polygon\0BSpline2\0BSpline2\0BSpline3\0BSpline3\0" - "FloodFill\0FloodFill\0BitMap\0Mesh\0Mesh\0" - "Arrow\0Text\0TextBox\0TextDiamond\0"); -} -GrInit1; - #help_index "Sprites/Binary" class CMeshTri @@ -195,35 +174,3 @@ public class CSprite CSpritePtStr ps; } }; - -#help_index "Graphics" - -extern I64 GrBlot3(CDC *dc,I64 x1,I64 y1,I64 z1,CDC *img); -extern U8 *GrBitMap4ToBitMap8(U8 *dst,U8 *src,I64 src_size,I64 bkcolor); -extern I64 *Mat4x4New(I64 *src,CTask *mem_task=NULL); -extern U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL); - -#include "GrGlbls" -#include "GrTextBase" -#include "GrAsm" -#include "GrPalette" -#include "GrDC" -#include "GrInit" -#include "GrMath" -#include "GrScreen" -#include "GrBitMap" -#include "GrPrimatives" -#include "GrComposites" - -#define GE_ABORT (-1) -#define GE_EXIT 0 -#define GE_CONT 1 -#include "SpriteNew" -#include "GrSpritePlot" -#include "SpriteMesh" -#include "SpriteBitMap" -#include "SpriteCode" -#include "SpriteEd" -#include "SpriteMain" - -#include "GrEnd" diff --git a/Adam/Gr/GrBitMap.CPP b/Adam/Gr/GrBitMap.CPP index 2ac535a..b436af2 100644 --- a/Adam/Gr/GrBitMap.CPP +++ b/Adam/Gr/GrBitMap.CPP @@ -71,7 +71,7 @@ public I64 GrBlot(CDC *dc=gr.dc,I64 x,I64 y,CDC *img) reg bit_shift,win_z_buf_line_inc,win_z_buf_line_dec,win_z_num, color_mask; U8 reg *dst,*src; - I32 db; + I32 *db; U16 reg *win_z_buf_ptr; CColorROPU32 color,c,old_color; CTask *win_task; diff --git a/Adam/Gr/GrComposites.CPP b/Adam/Gr/GrComposites.CPP index b5ef102..4a9c494 100644 --- a/Adam/Gr/GrComposites.CPP +++ b/Adam/Gr/GrComposites.CPP @@ -296,7 +296,7 @@ mesh_done: #help_index "Graphics/Misc;Input Pointer/Displayed Image" public U0 DrawStdInputPtr(CDC *dc,I64 x,I64 y) -{//This is a callback. See $LK,"::/Demo/Graphics/Grid.CPP.Z"$. +{//This is a callback. See $LK,"::/Demo/Graphics/Grid.CPP"$. //Called by $LK,"DrawInputPtr",A="MN:DrawInputPtr"$() which is //called by $LK,"WinFinalUpdate",A="MN:WinFinalUpdate"$(). dc->pen_width=1; @@ -307,7 +307,7 @@ public U0 DrawStdInputPtr(CDC *dc,I64 x,I64 y) gr.fp_draw_input_ptr=&DrawStdInputPtr; public U0 DrawWaitInputPtr(CDC *dc,I64 x,I64 y) -{//This is a callback. See $LK,"::/Demo/Graphics/Grid.CPP.Z"$. +{//This is a callback. See $LK,"::/Demo/Graphics/Grid.CPP"$. I64 old_pen_width=dc->pen_width; CColorROPU32 old_color=dc->color; dc->pen_width=3; diff --git a/Adam/Gr/GrDC.CPP b/Adam/Gr/GrDC.CPP index 888d35d..35b179e 100644 --- a/Adam/Gr/GrDC.CPP +++ b/Adam/Gr/GrDC.CPP @@ -3,12 +3,12 @@ #define GR_SCALE (1<<32) -public U0 Mat4x4MulXYZ(I64 r[4][4],I64 *_x,I64 *_y,I64 *_z) +public U0 Mat4x4MulXYZ(I64 *r,I64 *_x,I64 *_y,I64 *_z) {//Rotate 3D point using 4x4 matrix. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. I64 x1,y1,z1,xx=*_x,yy=*_y,zz=*_z; - x1=(r[0][0]*xx+r[0][1]*yy+r[0][2]*zz+r[0][3])>>32; - y1=(r[1][0]*xx+r[1][1]*yy+r[1][2]*zz+r[1][3])>>32; - z1=(r[2][0]*xx+r[2][1]*yy+r[2][2]*zz+r[2][3])>>32; + x1=(r[0*4+0]*xx+r[0*4+1]*yy+r[0*4+2]*zz+r[0*4+3])>>32; + y1=(r[1*4+0]*xx+r[1*4+1]*yy+r[1*4+2]*zz+r[1*4+3])>>32; + z1=(r[2*4+0]*xx+r[2*4+1]*yy+r[2*4+2]*zz+r[2*4+3])>>32; *_x=x1;*_y=y1;*_z=z1; } @@ -21,13 +21,13 @@ public U0 DCTransform(CDC *dc,I64 *_x,I64 *_y,I64 *_z) *_z+=dc->z; } -public I64 *Mat4x4IdentEqu(I64 r[4][4]) +public I64 *Mat4x4IdentEqu(I64 *r) {//Set matrix to identity. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. MemSet(r,0,sizeof(I64)*16); - r[0][0].i32[1]=1; - r[1][1].i32[1]=1; - r[2][2].i32[1]=1; - r[3][3].i32[1]=1; + r[0*4+0].i32[1]=1; + r[1*4+1].i32[1]=1; + r[2*4+2].i32[1]=1; + r[3*4+3].i32[1]=1; return r; } @@ -36,15 +36,15 @@ public I64 *Mat4x4IdentNew(CTask *mem_task=NULL) return Mat4x4IdentEqu(MAlloc(sizeof(I64)*16,mem_task)); } -public I64 Mat4x4NormSqr65536(I64 r[4][4]) +public I64 Mat4x4NormSqr65536(I64 *r) {//Norm Squared of r. //(1.0/Sqrt(3))*65536=37837.22 - return SqrI64((r[0][0]*37838+r[0][1]*37838+r[0][2]*37838)>>32)+ - SqrI64((r[1][0]*37837+r[1][1]*37837+r[1][2]*37837)>>32)+ - SqrI64((r[2][0]*37837+r[2][1]*37837+r[2][2]*37837)>>32); + return SqrI64((r[0*4+0]*37838+r[0*4+1]*37838+r[0*4+2]*37838)>>32)+ + SqrI64((r[1*4+0]*37837+r[1*4+1]*37837+r[1*4+2]*37837)>>32)+ + SqrI64((r[2*4+0]*37837+r[2*4+1]*37837+r[2*4+2]*37837)>>32); } -public U0 DCMat4x4Set(CDC *dc=NULL,I64 r[4][4]) +public U0 DCMat4x4Set(CDC *dc=NULL,I64 *r) {//Set device context's rot matrix. Will be $LK,"Free",A="MN:Free"$d() in $LK,"DCDel",A="MN:DCDel"$().Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. //The main purpose is to set matrix norm for pen width scaling. //NULL as dc means gr.dc diff --git a/Adam/Gr/GrEnd.CPP b/Adam/Gr/GrEnd.CPP index 1daa95e..8673094 100644 --- a/Adam/Gr/GrEnd.CPP +++ b/Adam/Gr/GrEnd.CPP @@ -7,7 +7,8 @@ U0 CtrlAltZ(I64 sc) else GrScaleZoom(2.0); } -CtrlAltLetCBSet('Z',&CtrlAltZ,"Sys/Zoom In or Out"); +CtrlAltCBSet('Z',&CtrlAltZ,"Cmd /Zoom In", + "Cmd /Zoom Out"); U0 Screen2Clipboard(I64) { @@ -25,4 +26,4 @@ U0 CtrlAltS(I64) { Spawn(&Screen2Clipboard); } -CtrlAltLetCBSet('S',&CtrlAltS,"Sys/Screen Shot to Clipboard"); +CtrlAltCBSet('S',&CtrlAltS,"Cmd /Screen Shot to Clipboard"); diff --git a/Adam/Gr/GrExt.CPP b/Adam/Gr/GrExt.CPP new file mode 100644 index 0000000..a093303 --- /dev/null +++ b/Adam/Gr/GrExt.CPP @@ -0,0 +1,5 @@ +#help_index "Graphics" +extern U8 *GrBitMap4ToBitMap8(U8 *dst,U8 *src,I64 src_size,I64 bkcolor); +extern I64 GrBlot3(CDC *dc,I64 x1,I64 y1,I64 z1,CDC *img); +extern I64 *Mat4x4New(I64 *src,CTask *mem_task=NULL); +extern U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL); diff --git a/Adam/Gr/GrGlbls.CPP b/Adam/Gr/GrGlbls.CPP index 307820e..2f3205b 100644 --- a/Adam/Gr/GrGlbls.CPP +++ b/Adam/Gr/GrGlbls.CPP @@ -23,7 +23,7 @@ public class CGrGlbls U0 (*fp_wall_paper)(CTask *task); U0 (*fp_draw_input_ptr)(CDC *dc,I64 x,I64 y); U0 (*fp_draw_grab_input_ptr)(CDC *dc,I64 x,I64 y,Bool closed); - U8 *empty_sprite; //Gets assigned $LK,"gr.empty_sprite",A="FF:::/Adam/WallPaper.CPP,empty_sprite"$ + U8 *empty_sprite; //Gets assigned $LK,"gr.empty_sprite",A="FF:::/Adam/AInputPointer.CPP,empty_sprite"$ #define GR_NUM_PEN_BRUSHES 64 CDC *pen_brushes[GR_NUM_PEN_BRUSHES], @@ -45,7 +45,7 @@ public class CGrGlbls HashPublic("GR_WIDTH",HTT_DEFINE_STR);; HashPublic("GR_HEIGHT",HTT_DEFINE_STR);; -#help_index "Char" +#help_index "Char;TextBase Layer/Char" DefinePrint("TEXT_ROWS","%d",text.rows);;; HashPublic("TEXT_ROWS",HTT_DEFINE_STR);;; DefinePrint("TEXT_COLS","%d",text.cols);;; diff --git a/Adam/Gr/GrInitA.CPP b/Adam/Gr/GrInitA.CPP new file mode 100644 index 0000000..ba08362 --- /dev/null +++ b/Adam/Gr/GrInitA.CPP @@ -0,0 +1,21 @@ +#help_index "Graphics" + +U0 GrInit1() +{ + DefineLstLoad("ST_SPRITE_ELEM_TYPES", + "End\0Color\0Dither Color\0" + "Width\0Planar Symmetry\0Transform On\0Transform Off\0Shift\0" + "Point\0PolyPoint\0Line\0PolyLine\0Rect\0Rotated Rect\0" + "Circle\0Ellipse\0Polygon\0BSpline2\0BSpline2 Closed\0" + "BSpline3\0BSpline3 Closed\0" + "Flood Fill\0Flood Fill Not Color\0BitMap\0Mesh\0Shiftable Mesh\0" + "Arrow\0Text\0Text Box\0Text Diamond\0"); + DefineLstLoad("ST_SPRITE_ELEM_CODES", + "End\0Color\0Color\0" + "Width\0PlanarSymmetry\0Transform\0Transform\0Shift\0" + "Pt\0PolyPt\0Line\0PolyLine\0Rect\0Rect\0" + "Circle\0Ellipse\0Polygon\0BSpline2\0BSpline2\0BSpline3\0BSpline3\0" + "FloodFill\0FloodFill\0BitMap\0Mesh\0Mesh\0" + "Arrow\0Text\0TextBox\0TextDiamond\0"); +} +GrInit1; diff --git a/Adam/Gr/GrInit.CPP b/Adam/Gr/GrInitB.CPP similarity index 98% rename from Adam/Gr/GrInit.CPP rename to Adam/Gr/GrInitB.CPP index 0fb2762..42feb72 100644 --- a/Adam/Gr/GrInit.CPP +++ b/Adam/Gr/GrInitB.CPP @@ -1,4 +1,5 @@ #help_index "Graphics/Screen" + U0 GrSetUpTables() { CDC *dc; @@ -138,7 +139,6 @@ public U0 WinZBufUpdate() I64 i,z=1; U16 *ptr; CTask *task,*task1; - Bool old_preempt=Preempt; if (gr.win_z_buf) { LBtr(&sys_semas[SYS_SEMA_UPDATE_WIN_Z_BUF],0); task1=task=sys_winmgr_task; @@ -156,7 +156,6 @@ public U0 WinZBufUpdate() for (ptr=gr.win_z_buf,i=TEXT_ROWS*TEXT_COLS;i;i--) Bts(gr.win_uncovered_bitmap,*ptr++); } - Preempt(old_preempt); } #help_index "Graphics" diff --git a/Adam/Gr/GrMath.CPP b/Adam/Gr/GrMath.CPP index 4f500b8..699d45f 100644 --- a/Adam/Gr/GrMath.CPP +++ b/Adam/Gr/GrMath.CPP @@ -179,21 +179,21 @@ public U0 DCPenWidthScale(CDC *dc=gr.dc) } } -public I64 *Mat4x4TranslationEqu(I64 r[4][4],I64 x,I64 y,I64 z) +public I64 *Mat4x4TranslationEqu(I64 *r,I64 x,I64 y,I64 z) {//Set translation values in 4x4 matrix. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. - r[0][3]=x<<32; - r[1][3]=y<<32; - r[2][3]=z<<32; - r[3][3]=GR_SCALE; + r[0*4+3]=x<<32; + r[1*4+3]=y<<32; + r[2*4+3]=z<<32; + r[3*4+3]=GR_SCALE; return r; } -public I64 *Mat4x4TranslationAdd(I64 r[4][4],I64 x,I64 y,I64 z) +public I64 *Mat4x4TranslationAdd(I64 *r,I64 x,I64 y,I64 z) {//Add translation to 4x4 matrix. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. - r[0][3]+=x<<32; - r[1][3]+=y<<32; - r[2][3]+=z<<32; - r[3][3]=GR_SCALE; + r[0*4+3]+=x<<32; + r[1*4+3]+=y<<32; + r[2*4+3]+=z<<32; + r[3*4+3]=GR_SCALE; return r; } diff --git a/Adam/Gr/GrScreen.CPP b/Adam/Gr/GrScreen.CPP index a15e3b7..13d83ff 100644 --- a/Adam/Gr/GrScreen.CPP +++ b/Adam/Gr/GrScreen.CPP @@ -106,7 +106,6 @@ U0 GrFixZoomScale() public U0 GrScaleZoom(F64 scale) {//Multiply zoom factor larger or smaller. - Bool old_preempt=Preempt; F64 s=gr.screen_zoom; gr.screen_zoom=gr.screen_zoom*scale; GrFixZoomScale; @@ -120,7 +119,6 @@ public U0 GrScaleZoom(F64 scale) gr.sx=ip.pos.x-gr.zoomed_dc->width >>1/gr.screen_zoom; gr.sy=ip.pos.y-gr.zoomed_dc->height>>1/gr.screen_zoom; GrFixZoomScale; - Preempt(old_preempt); } U0 GrZoomInScreen() @@ -403,7 +401,6 @@ U0 GrUpdateVGAGraphics() U0 GrUpdateScreen() {//Called by the Window Manager $LK,"HERE",A="FF:::/Adam/WinB.CPP,GrUpdateScreen"$, 60 times a second. CDC *dc; - Preempt(ON); if (!Bt(&sys_run_level,RLf_VGA)) //if text mode GrUpdateTasks; else { @@ -412,7 +409,6 @@ U0 GrUpdateScreen() GrUpdateTasks; DCBlotColor8(gr.dc2,gr.dc); } - Preempt; dc=DCAlias(gr.dc2,Fs); dc->flags|=DCF_ON_TOP; diff --git a/Adam/Gr/MakeGr.CPP b/Adam/Gr/MakeGr.CPP new file mode 100644 index 0000000..0b49294 --- /dev/null +++ b/Adam/Gr/MakeGr.CPP @@ -0,0 +1,31 @@ +Cd(__DIR__);; + +#include "GrInitA" +#include "Gr.HPP" +#include "GrExt" +#include "GrGlbls" +#include "GrTextBase" +#include "GrAsm" +#include "GrPalette" +#include "GrDC" +#include "GrInitB" +#include "GrMath" +#include "GrScreen" +#include "GrBitMap" +#include "GrPrimatives" +#include "GrComposites" + +#define GE_ABORT (-1) +#define GE_EXIT 0 +#define GE_CONT 1 +#include "SpriteNew" +#include "GrSpritePlot" +#include "SpriteMesh" +#include "SpriteBitMap" +#include "SpriteCode" +#include "SpriteEd" +#include "SpriteMain" + +#include "GrEnd" + +Cd("..");; diff --git a/Adam/Gr/SpriteEd.CPP b/Adam/Gr/SpriteEd.CPP index 763bd93..995b6c0 100644 --- a/Adam/Gr/SpriteEd.CPP +++ b/Adam/Gr/SpriteEd.CPP @@ -144,7 +144,7 @@ U0 SpriteSetOrigin(CSprite *root,I64 dx,I64 dy,I64 dz) } } -CSprite *SpriteTransformCircle(I64 r[4][4],CSprite *tempg) +CSprite *SpriteTransformCircle(I64 *r,CSprite *tempg) { I64 x,y,z; F64 m1,a1,m2,radius=tempg->pr.radius<<16; @@ -171,7 +171,7 @@ CSprite *SpriteTransformCircle(I64 r[4][4],CSprite *tempg) return tempg1; } -CSprite *SpriteTransformEllipse(I64 r[4][4],CSprite *tempg) +CSprite *SpriteTransformEllipse(I64 *r,CSprite *tempg) { I64 x,y,z; F64 m1,a1,m2,a2,s,c,x_radius=tempg->pwha.width<<16, @@ -211,7 +211,7 @@ CSprite *SpriteTransformEllipse(I64 r[4][4],CSprite *tempg) return tempg1; } -CSprite *SpriteTransformRect(I64 r[4][4],CSprite *tempg,F64 é) +CSprite *SpriteTransformRect(I64 *r,CSprite *tempg,F64 é) { I64 x,y,z,w,h; F64 m1,a1,m2,a2,s,c, @@ -252,7 +252,7 @@ CSprite *SpriteTransformRect(I64 r[4][4],CSprite *tempg,F64 return tempg1; } -CSprite *SpriteTransformBitmap(I64 r[4][4],CSprite *tempg) +CSprite *SpriteTransformBitmap(I64 *r,CSprite *tempg) { CDC *img,*tempb; U8 *elems; @@ -334,7 +334,7 @@ CSprite *SpriteTransformBitmap(I64 r[4][4],CSprite *tempg) return tempg1; } -U0 SpriteTransform(I64 r[4][4],CSprite *root) +U0 SpriteTransform(I64 *r,CSprite *root) { I64 i,j,k,num, x,y,z,x1,y1,z1,x2,y2,z2,x3,y3,z3; @@ -886,14 +886,13 @@ U0 SpriteCtrlPtsMove(CEdSprite *root,I64 dx,I64 dy) Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode) { I64 msg_code,a1,a2,xx,yy,xx2,yy2,dd,best_dd,cur_elem_num; - Bool old_preempt,result=TRUE; + Bool result=TRUE; CDC *dc=DCAlias; CEdSprite root,*temppe,*best_pe; SpritePtQueNew(elems,x,y,&root); cur_elem_num=0; if (root.next!=&root) { - old_preempt=Preempt; while (TRUE) { SpriteCtrlPtsDraw(dc,&root); //has WinMgrSync switch (msg_code=ScanMsg(&a1,&a2, @@ -999,7 +998,6 @@ gs_key: } } gs_done: - Preempt(old_preempt); QueDel(&root,TRUE); } DCFill(dc); diff --git a/Adam/Gr/SpriteMesh.CPP b/Adam/Gr/SpriteMesh.CPP index 7a28afc..c9c5daf 100644 --- a/Adam/Gr/SpriteMesh.CPP +++ b/Adam/Gr/SpriteMesh.CPP @@ -965,7 +965,6 @@ $WW,0$*/ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ AutoComplete; - Preempt; //We don't really want window update while modifying links RegOneTimePopUp(ARf_MESH_ED, "$$GREEN$$Right Mouse$$FG$$: Hold and move to shift cursor z\n" "$$GREEN$$'j'$$FG$$: Jump cursor Z to nearest vertex's Z\n" diff --git a/Adam/MakeAdam.CPP b/Adam/MakeAdam.CPP new file mode 100644 index 0000000..6538551 --- /dev/null +++ b/Adam/MakeAdam.CPP @@ -0,0 +1,29 @@ +Cd(__DIR__);; +#include "AExts" +#include "AMath" +#include "Training" +#include "AMem" +#include "TaskRep" +#include "AMathODE" +#include "Gr/MakeGr" +#include "Snd/MakeSnd" +#include "ABlkDev/MakeABlkDev" +#include "Menu" +#include "WinA" +#include "WinB" +#include "ADbg" +#include "::/Adam/God/GodExt" +#include "DolDoc/MakeDoc" +LBts(&sys_run_level,RLf_DOC); +#include "Ctrls/MakeCtrls" +#include "AutoFile" +#include "ARegistry" +#include "AutoComplete/MakeAC" +#include "God/MakeGod" +#include "AHash" +#include "TaskSettings" +#include "DevInfo" +#include "ADefine" +#include "WallPaper" +#include "AInputPointer" +Cd("..");; diff --git a/Adam/Opt/Boot/BootDVD.CPP b/Adam/Opt/Boot/BootDVD.CPP new file mode 100644 index 0000000..414fd13 --- /dev/null +++ b/Adam/Opt/Boot/BootDVD.CPP @@ -0,0 +1,164 @@ +#define DVD_BOOT_LOADER_SIZE DVD_BLK_SIZE*1 //Max DVD_BLK_SIZE*4, I think +#define BOOT_HIGH_LOC_DVD ((BOOT_RAM_LIMIT-\ + (BOOT_STK_SIZE+DVD_BOOT_LOADER_SIZE))>>4) + +DefinePrint( + "DD_BOOT_HIGH_LOC_DVD","%08X",BOOT_HIGH_LOC_DVD<<4); +DefinePrint( + "DD_BOOT_HIGH_LOC_DVD_END","%08X",BOOT_RAM_LIMIT-1); + +asm { +USE16 +BDVD_START:: +//DL is supposed to have the BIOS drive number + CLD + MOV AX,BOOT_HIGH_LOC_DVD + MOV ES,AX + + CLI + MOV SS,AX + MOV SP,BOOT_STK_SIZE+DVD_BOOT_LOADER_SIZE + STI + + CALL BDVD_GET_IP +BDVD_GET_IP: + POP BX + SUB BX,BDVD_GET_IP-BDVD_START + SHR BX,4 +//This copies this bootloader's code to 0x$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$ + MOV AX,CS + ADD AX,BX + MOV DS,AX + MOV CX,DVD_BOOT_LOADER_SIZE + XOR SI,SI + XOR DI,DI + REP_MOVSB + + MOV AX,BOOT_HIGH_LOC_DVD + MOV DS,AX + +//My assembler doesn't support 16-bit very well. + DU8 0xEA; //JMP BOOT_HIGH_LOC_DVD:BDVD_MAIN + DU16 BDVD_MAIN-BDVD_START,BOOT_HIGH_LOC_DVD; + +BDVD_BIOS_DRV_NUM: DU8 0; +BDVD_PAGE: DU8 0; + +BDVD_DAP: DU8 16,0,1,0; //One blk at a time +BDVD_DAP_BUF: DU16 0,0; +BDVD_DAP_BLK: DU64 0; + +BDVD_TEMPLEOS_MSG: + DU8 "Loading TempleOS",0; + +BDVD_NOT64_MSG: + DU8 "TempleOS requires a 64-bit capable processor.\n\r",0; + +//These get patched. +BDVD_BLK_LO:: DU16 0; +BDVD_BLK_HI:: DU16 0; +BDVD_BLK_CNT:: DU16 0; + +BDVD_PROGRESS_STEP:: DU32 0; +BDVD_PROGRESS_VAL:: DU32 0; + +BDVD_PUTCHAR:: + MOV AH,0xE + MOV BL,7 //Might be foreground color on some BIOS's + MOV BH,U8 [BDVD_PAGE-BDVD_START] + INT 0x10 +BDVD_RET:: + RET +BDVD_PUTS:: +@@1: LODSB + TEST AL,AL + JZ BDVD_RET + CALL BDVD_PUTCHAR + JMP @@1 + +BDVD_MAIN:: + MOV U8 [BDVD_BIOS_DRV_NUM-BDVD_START],DL //Passed in by BIOS + + MOV AH,0xF + INT 0x10 + MOV U8 [BDVD_PAGE-BDVD_START],BH //video page + + MOV EAX,0x80000000 + CPUID + CMP EAX,0x80000001 + JB @@05 + + MOV EAX,0x80000001 + CPUID + BT EDX,29 + JC @@15 +@@05: MOV SI,BDVD_NOT64_MSG-BDVD_START + CALL BDVD_PUTS +@@10: JMP @@10 + +@@15: MOV SI,BDVD_TEMPLEOS_MSG-BDVD_START + CALL BDVD_PUTS + + MOV AX,BOOT_RAM_BASE/16 + MOV ES,AX + XOR ECX,ECX + MOV CX,U16 [BDVD_BLK_CNT-BDVD_START] + + MOV EAX,(80-7-9)*65536 //80 columns + XOR EDX,EDX + DIV ECX + MOV U32 [BDVD_PROGRESS_STEP-BDVD_START],EAX + MOV U32 [BDVD_PROGRESS_VAL-BDVD_START],0 + + MOV AX,U16 [BDVD_BLK_LO-BDVD_START] + MOV DX,U16 [BDVD_BLK_HI-BDVD_START] + +@@20: PUSH CX //Blk cnt + +//READ BLK + PUSH AX //Blk lo + PUSH DX //Blk hi + PUSH ES //Buf seg + MOV U16 [BDVD_DAP_BLK-BDVD_START],AX + MOV U16 [BDVD_DAP_BLK+2-BDVD_START],DX + MOV AX,ES + MOV U16 [BDVD_DAP_BUF+2-BDVD_START],AX //ES:0000 + MOV SI,BDVD_DAP-BDVD_START //DS:SI=DAP + MOV AH,0x42 + MOV DL,U8 [BDVD_BIOS_DRV_NUM-BDVD_START] + INT 0x13 + + POP AX //ES + ADD AX,DVD_BLK_SIZE/16 + MOV ES,AX + POP DX + POP AX + INC AX + JNZ @@25 + INC DX + +@@25: PUSH AX + MOV BX,U16 [BDVD_PROGRESS_VAL+2-BDVD_START] + MOV EAX,U32 [BDVD_PROGRESS_STEP-BDVD_START] + ADD U32 [BDVD_PROGRESS_VAL-BDVD_START],EAX + CMP U16 [BDVD_PROGRESS_VAL+2-BDVD_START],BX + JE @@30 + MOV AL,'.' + CALL BDVD_PUTCHAR +@@30: POP AX + + POP CX + LOOP @@20 + +//See $LK,"BootDVDProve",A="MN:BootDVDProve"$(). + MOV EBX,U32 [BDVD_BLK_LO-BDVD_START] //TODO: oops overflow? + SHL EBX,16 + MOV BX,BOOT_SRC_DVD //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$ + +//My assembler doesn't support 16-bit very well. + DU8 0xEA; //JMP BOOT_RAM_BASE:0000 + DU16 0,BOOT_RAM_BASE/16; +//Continues here $LK,"::/Kernel/KStart.CPP",A="FL:::/Kernel/KStart.CPP,1"$ +BDVD_END:: +#assert BDVD_END-BDVD_STARTcur_dv); if (!dst_drv) dst_drv=src_drv; if (!Drv(src_drv)) throw; MakeAll; - bd=Let2BlkDev(dst_drv); - dv=Let2Drv (dst_drv); - switch (bd->type) { + try { + bd=Let2BlkDev(dst_drv); + dv=Let2Drv(dst_drv); + type=bd->type; + } catch { + Fs->catch_except=TRUE; + type=BDT_ATAPI; + PrintWarn("Defaulting to CD/DVD dst.\n"); + } + switch (type) { case BDT_ATAPI: Move("/Kernel/Kernel.BIN.Z",BOOT_DIR_KERNEL_BIN_C); result=TRUE; diff --git a/Adam/Boot/BootMHD.CPP b/Adam/Opt/Boot/BootMHD.CPP similarity index 96% rename from Adam/Boot/BootMHD.CPP rename to Adam/Opt/Boot/BootMHD.CPP index dd3bc5d..3a6abbc 100644 --- a/Adam/Boot/BootMHD.CPP +++ b/Adam/Opt/Boot/BootMHD.CPP @@ -104,7 +104,7 @@ BMHD_HISTART: //My assembler doesn't support 16-bit very well. DU8 0xEA; //JMP BOOT_RAM_BASE:0000 DU16 0,BOOT_RAM_BASE/16; -//Continues here $LK,"BMHD2_START",A="FF:::/Adam/Boot/BootMHD2.CPP,BMHD2_START"$ +//Continues here $LK,"BMHD2_START",A="FF:::/Adam/Opt/Boot/BootMHD2.CPP,BMHD2_START"$ BMHD_END:: #assert BMHD_END-BMHD_START<=440 } diff --git a/Adam/Boot/BootMHD2.CPP b/Adam/Opt/Boot/BootMHD2.CPP similarity index 96% rename from Adam/Boot/BootMHD2.CPP rename to Adam/Opt/Boot/BootMHD2.CPP index be890e5..cdedf3f 100644 --- a/Adam/Boot/BootMHD2.CPP +++ b/Adam/Opt/Boot/BootMHD2.CPP @@ -118,6 +118,6 @@ BMHD2_HISTART: BMHD2_OLD_CS_IP: DU16 0,0; BMHD2_END:: -//Continues here $LK,"::/Adam/Boot/BootHD.CPP",A="FF:::/Adam/Boot/BootHD.CPP,START"$ +//Continues here $LK,"::/Adam/Opt/Boot/BootHD.CPP",A="FF:::/Adam/Opt/Boot/BootHD.CPP,START"$ #assert BMHD2_END-BMHD2_STARTlittle=d; } -class CCCDUserData //Create CD +class CCDVDUserData //Create DVD { I64 loc,path_entry_num, short_dir_blks,long_dir_blks; }; -I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, +I64 DVDFileCreate2(CFile *out_file,CDirEntry *tempde, CISO1DirEntry *tempi,CISO1DirEntry *tempi2, I64 *_cur_blk, CDirEntry *parent,Bool write, U8 *stage2_filename,I64 *_stage2_blk) { - CCCDUserData *tempc; + CCDVDUserData *tempc; CDirEntry *tempde1,*tempde2; CFile *in_file; - U8 *buf=MAlloc(CD_BLK_SIZE),*ptr1,*ptr2; - CISO1DirEntry *dir_blk_buf =CAlloc(CD_BLK_SIZE*128), + U8 *buf=MAlloc(DVD_BLK_SIZE),*ptr1,*ptr2; + CISO1DirEntry *dir_blk_buf =CAlloc(DVD_BLK_SIZE*128), *de =dir_blk_buf, *de1, - *dir_blk_buf2=CAlloc(CD_BLK_SIZE*128), + *dir_blk_buf2=CAlloc(DVD_BLK_SIZE*128), *de2=dir_blk_buf2,*de12; I64 i,n; @@ -49,7 +49,7 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, de->len=sizeof(CISO1DirEntry)-1; de->ext_attr_len=0; FillU32Palindrome(&de->loc,tempc->loc); - FillU32Palindrome(&de->size,tempc->short_dir_blks*CD_BLK_SIZE); + FillU32Palindrome(&de->size,tempc->short_dir_blks*DVD_BLK_SIZE); FillU16Palindrome(&de->vol_seq_num,1); Date2ISO1(&de->date,parent->datetime); de->flags=ISO1_ATTR_DIR; @@ -71,7 +71,7 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, de2->len=sizeof(CISO1DirEntry)-1; de2->ext_attr_len=0; FillU32Palindrome(&de2->loc,tempc->loc+tempc->short_dir_blks); - FillU32Palindrome(&de2->size,tempc->long_dir_blks*CD_BLK_SIZE); + FillU32Palindrome(&de2->size,tempc->long_dir_blks*DVD_BLK_SIZE); FillU16Palindrome(&de2->vol_seq_num,1); Date2ISO1(&de2->date,parent->datetime); de2->flags=ISO1_ATTR_DIR; @@ -83,11 +83,11 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, tempde1=tempde->sub; while (tempde1) { tempde2=tempde1->next; - if (!write) tempde1->user_data=CAlloc(sizeof(CCCDUserData)); + if (!write) tempde1->user_data=CAlloc(sizeof(CCDVDUserData)); de1=de; de12=de2; if (tempde1->attr & RS_ATTR_DIR) { - n=CDFileCreate2(out_file,tempde1,de,de2,_cur_blk, + n=DVDFileCreate2(out_file,tempde1,de,de2,_cur_blk, tempde,write,stage2_filename,_stage2_blk); de(U8 *)+=sizeof(CISO1DirEntry)-1+n; de2(U8 *)+=sizeof(CISO1DirEntry)-1+n<<1; @@ -131,11 +131,11 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, de2(U8 *)+=de2->len; in_file=FOpen(tempde1->full_name,"r"); - for (i=0;i<(FSize(in_file)+CD_BLK_SIZE-1)/CD_BLK_SIZE;i++) { + for (i=0;i<(FSize(in_file)+DVD_BLK_SIZE-1)/DVD_BLK_SIZE;i++) { n=4; if ((i+1)<<2>(FSize(in_file)+BLK_SIZE-1)>>BLK_SIZE_BITS) { n=(FSize(in_file)+BLK_SIZE-1)>>BLK_SIZE_BITS&3; - MemSet(buf,0,CD_BLK_SIZE); + MemSet(buf,0,DVD_BLK_SIZE); } if (write) { FRBlks(in_file,buf,i<<2,n); @@ -145,23 +145,23 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, } FClose(in_file); } - if ((de1(U8 *)-dir_blk_buf(U8 *))/CD_BLK_SIZE!= - (de(U8 *) -dir_blk_buf(U8 *))/CD_BLK_SIZE) { + if ((de1(U8 *)-dir_blk_buf(U8 *))/DVD_BLK_SIZE!= + (de(U8 *) -dir_blk_buf(U8 *))/DVD_BLK_SIZE) { i=de1->len; MemCpy(buf,de1,i); MemSet(de1,0,i); de=dir_blk_buf(U8 *)+(de(U8 *) - -dir_blk_buf(U8 *))/CD_BLK_SIZE*CD_BLK_SIZE; + -dir_blk_buf(U8 *))/DVD_BLK_SIZE*DVD_BLK_SIZE; MemCpy(de,buf,i); de(U8 *)+=i; } - if ((de12(U8 *)-dir_blk_buf2(U8 *))/CD_BLK_SIZE!= - (de2(U8 *) -dir_blk_buf2(U8 *))/CD_BLK_SIZE) { + if ((de12(U8 *)-dir_blk_buf2(U8 *))/DVD_BLK_SIZE!= + (de2(U8 *) -dir_blk_buf2(U8 *))/DVD_BLK_SIZE) { i=de12->len; MemCpy(buf,de12,i); MemSet(de12,0,i); de2(U8 *)=dir_blk_buf2(U8 *)+(de2(U8 *) - -dir_blk_buf2(U8 *))/CD_BLK_SIZE*CD_BLK_SIZE; + -dir_blk_buf2(U8 *))/DVD_BLK_SIZE*DVD_BLK_SIZE; MemCpy(de2,buf,i); de2(U8 *)+=i; } @@ -183,12 +183,12 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, tempi->len+=tempi->name_len; n=de(U8 *)+1-dir_blk_buf(U8 *); - n=(n+CD_BLK_SIZE-1)/CD_BLK_SIZE; - FillU32Palindrome(&tempi->size,n*CD_BLK_SIZE); + n=(n+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; + FillU32Palindrome(&tempi->size,n*DVD_BLK_SIZE); FillU32Palindrome(&tempi->loc,*_cur_blk); tempc->short_dir_blks=n; tempc->loc=*_cur_blk; - FillU32Palindrome(&dir_blk_buf->size,n*CD_BLK_SIZE); + FillU32Palindrome(&dir_blk_buf->size,n*DVD_BLK_SIZE); FillU32Palindrome(&dir_blk_buf->loc,*_cur_blk); FillU16Palindrome(&tempi->vol_seq_num,1); Date2ISO1(&tempi->date,tempde->datetime); @@ -215,11 +215,11 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, } tempi2->len+=tempi2->name_len; n=de2(U8 *)+1-dir_blk_buf2(U8 *); - n=(n+CD_BLK_SIZE-1)/CD_BLK_SIZE; - FillU32Palindrome(&tempi2->size,n*CD_BLK_SIZE); + n=(n+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; + FillU32Palindrome(&tempi2->size,n*DVD_BLK_SIZE); FillU32Palindrome(&tempi2->loc,*_cur_blk); tempc->long_dir_blks=n; - FillU32Palindrome(&dir_blk_buf2->size,n*CD_BLK_SIZE); + FillU32Palindrome(&dir_blk_buf2->size,n*DVD_BLK_SIZE); FillU32Palindrome(&dir_blk_buf2->loc,*_cur_blk); FillU16Palindrome(&tempi2->vol_seq_num,1); Date2ISO1(&tempi2->date,tempde->datetime); @@ -235,7 +235,7 @@ I64 CDFileCreate2(CFile *out_file,CDirEntry *tempde, return tempi->name_len; } -I64 CDTableLen(CDirEntry *tempde,I64 *size1,I64 *size2,I64 cur_depth) +I64 DVDTableLen(CDirEntry *tempde,I64 *size1,I64 *size2,I64 cur_depth) {//Returns depth CDirEntry *tempde1=tempde->sub; I64 max_depth=cur_depth,i; @@ -243,7 +243,7 @@ I64 CDTableLen(CDirEntry *tempde,I64 *size1,I64 *size2,I64 cur_depth) if (tempde1->attr & RS_ATTR_DIR) { *size1+=sizeof(CISO1PathEntry)-2+ (StrLen(tempde1->name)+1)&-0x2; *size2+=sizeof(CISO1PathEntry)-2+StrLen(tempde1->name)<<1; - i=CDTableLen(tempde1,size1,size2,cur_depth+1); + i=DVDTableLen(tempde1,size1,size2,cur_depth+1); if (i>max_depth) max_depth=i; } tempde1=tempde1->next; @@ -251,7 +251,7 @@ I64 CDTableLen(CDirEntry *tempde,I64 *size1,I64 *size2,I64 cur_depth) return max_depth; } -U0 CDFillPathTable(CDirEntry *tempde, +U0 DVDFillPathTable(CDirEntry *tempde, CISO1PathEntry **_itabbuf,CISO1PathEntry **_itabbuf2, I64 parent_entry_num,Bool big_endian,I64 *first_free, I64 cur_level,I64 output_level) @@ -260,7 +260,7 @@ U0 CDFillPathTable(CDirEntry *tempde, I64 i; CISO1PathEntry *tabbuf=*_itabbuf,*tabbuf2=*_itabbuf2; CDirEntry *tempde1=tempde->sub,*tempde2; - CCCDUserData *tempc; + CCDVDUserData *tempc; if (cur_level==output_level) { while (tempde1) { @@ -308,7 +308,7 @@ U0 CDFillPathTable(CDirEntry *tempde, tempde2=tempde1->next; if (tempde1->attr & RS_ATTR_DIR) { tempc=tempde1->user_data; - CDFillPathTable(tempde1,_itabbuf,_itabbuf2,tempc->path_entry_num, + DVDFillPathTable(tempde1,_itabbuf,_itabbuf2,tempc->path_entry_num, big_endian,first_free,cur_level+1,output_level); } tempde1=tempde2; @@ -330,31 +330,31 @@ class CElTorito public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, U8 *fu_flags=NULL,U8 *_stage2_filename=NULL) -{//See $LK,"::/Misc/MakeDistro.CPP"$ +{//See $LK,"::/Misc/DoDistro.CPP"$ //Use "C:/Distro/*" if you want all files in the C:/Distro directory. //Default flags are "+r" recurse. - CISO1PriDesc *iso_pri=CAlloc(CD_BLK_SIZE), - *iso_boot=CAlloc(CD_BLK_SIZE), - *iso_sup=CAlloc(CD_BLK_SIZE), - *iso_term=CAlloc(CD_BLK_SIZE); + CISO1PriDesc *iso_pri=CAlloc(DVD_BLK_SIZE), + *iso_boot=CAlloc(DVD_BLK_SIZE), + *iso_sup=CAlloc(DVD_BLK_SIZE), + *iso_term=CAlloc(DVD_BLK_SIZE); CDirEntry *rootdir=CAlloc(sizeof(CDirEntry)); - I64 i,j,stage2_blk=(CD_FILE_OFFSET+1<<2+CD_BOOT_LOADER_SIZE/BLK_SIZE)>>2, + I64 i,j,stage2_blk=(DVD_FILE_OFFSET+1<<2+DVD_BOOT_LOADER_SIZE/BLK_SIZE)>>2, stage2_size,cur_blk=0,tabsize,tabsize2,first_free,max_depth,fuf_flags=0; U32 *d; - CElTorito *et=CAlloc(CD_BLK_SIZE); + CElTorito *et=CAlloc(DVD_BLK_SIZE); U8 *filename,*stage2_filename, - *stage1_buf=CAlloc(CD_BOOT_LOADER_SIZE), - *zero_buf=CAlloc(CD_BLK_SIZE); + *stage1_buf=CAlloc(DVD_BOOT_LOADER_SIZE), + *zero_buf=CAlloc(DVD_BLK_SIZE); CISO1PathEntry *tabbuf=NULL,*tabbuf2=NULL,*itabbuf,*itabbuf2; CFile *out_file=NULL; CISO1DirEntry *tempi; - CCCDUserData *tempc; + CCDVDUserData *tempc; ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r"); ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); if (!_filename) - _filename=dsk.dft_iso_filename; + _filename=blkdev.dft_iso_filename; filename=DftExt(_filename,"ISO"); if (_stage2_filename) @@ -365,25 +365,25 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, rootdir->attr=RS_ATTR_DIR; rootdir->sub=FilesFind(src_files_find_mask,fuf_flags); rootdir->datetime=Now; - rootdir->user_data=CAlloc(sizeof(CCCDUserData)); + rootdir->user_data=CAlloc(sizeof(CCDVDUserData)); tempc=rootdir->user_data; tempc->path_entry_num=1; - cur_blk=CD_FILE_OFFSET>>2; + cur_blk=DVD_FILE_OFFSET>>2; if (stage2_filename) //preboot and bootloader - cur_blk+=1+CD_BOOT_LOADER_SIZE/CD_BLK_SIZE; - CDFileCreate2(out_file,rootdir, + cur_blk+=1+DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE; + DVDFileCreate2(out_file,rootdir, &iso_pri->root_dir_record, &iso_sup->root_dir_record, &cur_blk,rootdir,FALSE,stage2_filename,&stage2_blk); tabsize=sizeof(CISO1PathEntry); tabsize2=sizeof(CISO1PathEntry); - max_depth=CDTableLen(rootdir,&tabsize,&tabsize2,1); + max_depth=DVDTableLen(rootdir,&tabsize,&tabsize2,1); FillU32Palindrome(&iso_pri->path_table_size,tabsize); FillU32Palindrome(&iso_sup->path_table_size,tabsize2); - tabsize=(tabsize+CD_BLK_SIZE-1)/CD_BLK_SIZE; + tabsize=(tabsize+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; cur_blk+=tabsize<<1; - tabsize2=(tabsize2+CD_BLK_SIZE-1)/CD_BLK_SIZE; + tabsize2=(tabsize2+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; cur_blk+=tabsize2<<1; if (FileAttr(filename) & RS_ATTR_CONTIGUOUS) @@ -394,7 +394,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, if (!out_file) goto cf_done; - while (cur_blk>2) + while (cur_blk>2) FWBlks(out_file,zero_buf,cur_blk++<<2,4); iso_pri->type=ISO1T_PRI_VOL_DESC; @@ -402,7 +402,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, iso_pri->version=1; FillU16Palindrome(&iso_pri->vol_set_size,1); FillU16Palindrome(&iso_pri->vol_seq_num,1); - FillU16Palindrome(&iso_pri->log_block_size,CD_BLK_SIZE); + FillU16Palindrome(&iso_pri->log_block_size,DVD_BLK_SIZE); iso_pri->file_structure_version=1; iso_sup->type=ISO1T_SUPPLEMENTARY_DESC; @@ -410,7 +410,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, iso_sup->version=1; FillU16Palindrome(&iso_sup->vol_set_size,1); FillU16Palindrome(&iso_sup->vol_seq_num,1); - FillU16Palindrome(&iso_sup->log_block_size,CD_BLK_SIZE); + FillU16Palindrome(&iso_sup->log_block_size,DVD_BLK_SIZE); iso_sup->file_structure_version=1; iso_boot->type=ISO1T_BOOT_RECORD; @@ -418,7 +418,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, iso_boot->version=1; StrCpy(iso_boot(U8 *)+7,"EL TORITO SPECIFICATION"); - cur_blk=CD_FILE_OFFSET>>2; + cur_blk=DVD_FILE_OFFSET>>2; if (stage2_filename) { d=iso_boot(U8 *)+0x47; @@ -437,20 +437,20 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, "%X: Pre Boot Blk\n",cur_blk; FWBlks(out_file,et,cur_blk++<<2,4); "%X: Boot Stage 1\n",cur_blk; - cur_blk+=CD_BOOT_LOADER_SIZE/CD_BLK_SIZE; + cur_blk+=DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE; } - CDFileCreate2(out_file,rootdir,&iso_pri->root_dir_record, + DVDFileCreate2(out_file,rootdir,&iso_pri->root_dir_record, &iso_sup->root_dir_record,&cur_blk,rootdir,TRUE, stage2_filename,&stage2_blk); - tabbuf=CAlloc(tabsize*CD_BLK_SIZE); + tabbuf=CAlloc(tabsize*DVD_BLK_SIZE); iso_pri->type_l_path_table=cur_blk; tabbuf->name_len=2; //Fill-in adam entry tempi=&iso_pri->root_dir_record; tabbuf->blk=tempi->loc.little; tabbuf->parent_entry_num=1; - tabbuf2=CAlloc(tabsize2*CD_BLK_SIZE); + tabbuf2=CAlloc(tabsize2*DVD_BLK_SIZE); iso_sup->type_l_path_table=cur_blk+tabsize; tabbuf2->name_len=2; //Fill-in adam entry tempi=&iso_sup->root_dir_record; @@ -460,7 +460,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, itabbuf2=tabbuf2+1; first_free=2; for (i=1;i<=max_depth;i++) - CDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,FALSE,&first_free,1,i); + DVDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,FALSE,&first_free,1,i); "%X: Path Table 0\n",cur_blk; FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2); cur_blk+=tabsize; @@ -468,13 +468,13 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, FWBlks(out_file,tabbuf2,cur_blk<<2,tabsize2<<2); cur_blk+=tabsize2; - MemSet(tabbuf,0,tabsize*CD_BLK_SIZE); + MemSet(tabbuf,0,tabsize*DVD_BLK_SIZE); iso_pri->type_m_path_table=EndianU32(cur_blk); tabbuf->name_len=2; //Fill-in adam entry tempi=&iso_pri->root_dir_record; tabbuf->blk=tempi->loc.big; tabbuf->parent_entry_num=EndianU16(1); - MemSet(tabbuf2,0,tabsize2*CD_BLK_SIZE); + MemSet(tabbuf2,0,tabsize2*DVD_BLK_SIZE); iso_sup->type_m_path_table=EndianU32(cur_blk+tabsize); tabbuf2->name_len=2; //Fill-in adam entry tempi=&iso_sup->root_dir_record; @@ -484,7 +484,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, itabbuf2=tabbuf2+1; first_free=2; for (i=1;i<=max_depth;i++) - CDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,TRUE,&first_free,1,i); + DVDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,TRUE,&first_free,1,i); "%X: Path Table 2\n",cur_blk; FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2); cur_blk+=tabsize; @@ -504,14 +504,14 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, FWBlks(out_file,iso_boot,17<<2,4); FWBlks(out_file,iso_sup,18<<2,4); FWBlks(out_file,iso_term,19<<2,4); - stage2_size=(Size(stage2_filename,"+s")+CD_BLK_SIZE-1)/CD_BLK_SIZE; - MemCpy(stage1_buf,BCD_START,BCD_END-BCD_START); - *(BCD_BLK_CNT-BCD_START+stage1_buf)(U16 *)=stage2_size; - *(BCD_BLK_LO -BCD_START+stage1_buf)(U32 *)=stage2_blk; + stage2_size=(Size(stage2_filename,"+s")+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; + MemCpy(stage1_buf,BDVD_START,BDVD_END-BDVD_START); + *(BDVD_BLK_CNT-BDVD_START+stage1_buf)(U16 *)=stage2_size; + *(BDVD_BLK_LO -BDVD_START+stage1_buf)(U32 *)=stage2_blk; "$$RED$$!!! Boot Stage 2 !!! %X-%X$$FG$$\n", stage2_blk,stage2_blk+stage2_size-1; FWBlks(out_file,stage1_buf, - CD_FILE_OFFSET+1<<2,CD_BOOT_LOADER_SIZE/BLK_SIZE); + DVD_FILE_OFFSET+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE); } else { FWBlks(out_file,iso_sup,17<<2,4); FWBlks(out_file,iso_term,18<<2,4); diff --git a/Adam/Opt/Boot/MakeBoot.CPP b/Adam/Opt/Boot/MakeBoot.CPP new file mode 100644 index 0000000..75b0f46 --- /dev/null +++ b/Adam/Opt/Boot/MakeBoot.CPP @@ -0,0 +1,9 @@ +Cd(__DIR__);; +#include "BootDVD" +#include "BootHD" +#include "BootMHD" +#include "BootMHD2" +#include "DskISOFile" +#include "BootIns" +#include "Reboot" +Cd("..");; diff --git a/Adam/Boot/Boot.CPP b/Adam/Opt/Boot/Reboot.CPP similarity index 91% rename from Adam/Boot/Boot.CPP rename to Adam/Opt/Boot/Reboot.CPP index aaaa9f4..4737a00 100644 --- a/Adam/Boot/Boot.CPP +++ b/Adam/Opt/Boot/Reboot.CPP @@ -1,10 +1,3 @@ -#include "BootCD" -#include "BootHD" -#include "BootMHD" -#include "BootMHD2" -#include "DskISOFile" -#include "BootIns" - #help_index "Call" asm { _HI_CALL:: diff --git a/Adam/Utils/Diff.CPP b/Adam/Opt/Utils/Diff.CPP similarity index 100% rename from Adam/Utils/Diff.CPP rename to Adam/Opt/Utils/Diff.CPP diff --git a/Adam/Utils/FileBMP.CPP b/Adam/Opt/Utils/FileBMP.CPP similarity index 100% rename from Adam/Utils/FileBMP.CPP rename to Adam/Opt/Utils/FileBMP.CPP diff --git a/Adam/Utils/Find.CPP b/Adam/Opt/Utils/Find.CPP similarity index 100% rename from Adam/Utils/Find.CPP rename to Adam/Opt/Utils/Find.CPP diff --git a/Adam/Utils/HeapLog.CPP b/Adam/Opt/Utils/HeapLog.CPP similarity index 100% rename from Adam/Utils/HeapLog.CPP rename to Adam/Opt/Utils/HeapLog.CPP diff --git a/Adam/Utils/LineRep.CPP b/Adam/Opt/Utils/LineRep.CPP similarity index 100% rename from Adam/Utils/LineRep.CPP rename to Adam/Opt/Utils/LineRep.CPP diff --git a/Adam/Utils/LinkChk.CPP b/Adam/Opt/Utils/LinkChk.CPP similarity index 100% rename from Adam/Utils/LinkChk.CPP rename to Adam/Opt/Utils/LinkChk.CPP diff --git a/Adam/Opt/Utils/MakeUtils.CPP b/Adam/Opt/Utils/MakeUtils.CPP new file mode 100644 index 0000000..aaa6d96 --- /dev/null +++ b/Adam/Opt/Utils/MakeUtils.CPP @@ -0,0 +1,15 @@ +Cd(__DIR__);; +#include "Diff" +#include "FileBMP" +#include "Find" +#include "HeapLog" +#include "LineRep" +#include "LinkChk" +#include "MemRep" +#include "Merge" +#include "Profiler" +#include "StrUtils" +#include "ToDolDoc" +#include "ToHtml" +#include "ToTXT" +Cd("..");; diff --git a/Adam/Utils/MemRep.CPP b/Adam/Opt/Utils/MemRep.CPP similarity index 94% rename from Adam/Utils/MemRep.CPP rename to Adam/Opt/Utils/MemRep.CPP index 3bcc475..68c0c5d 100644 --- a/Adam/Utils/MemRep.CPP +++ b/Adam/Opt/Utils/MemRep.CPP @@ -63,10 +63,10 @@ I64 TaskQueSize(CTask *task) I64 BlkDevsSize() { - I64 i,result=MSize2(dsk.blkdevs); + I64 i,result=MSize2(blkdev.blkdevs); CBlkDev *bd; for (i=0;ibd_signature==BD_SIGNATURE_VAL) { if (bd->type==BDT_RAM) "RAMDsk %C\t:%010X Unused:%010X\n", @@ -80,9 +80,9 @@ I64 BlkDevsSize() I64 DrvsSize() { - I64 i,result=MSize2(dsk.drvs); + I64 i,result=MSize2(blkdev.drvs); for (i=0;ifile_size-1; @@ -233,5 +232,4 @@ public U0 MemRep() "$$BLACK$$dev.uncached_heap:%010X Used:%010X$$FG$$\n", dev.uncached_heap->bp->alloced_u8s,dev.uncached_heap->used_u8s; "$$ID,-2$$\n"; - Preempt(old_preempt); } diff --git a/Adam/Utils/Merge.CPP b/Adam/Opt/Utils/Merge.CPP similarity index 100% rename from Adam/Utils/Merge.CPP rename to Adam/Opt/Utils/Merge.CPP diff --git a/Adam/Utils/Profiler.CPP b/Adam/Opt/Utils/Profiler.CPP similarity index 97% rename from Adam/Utils/Profiler.CPP rename to Adam/Opt/Utils/Profiler.CPP index f9b5133..134de2e 100644 --- a/Adam/Utils/Profiler.CPP +++ b/Adam/Opt/Utils/Profiler.CPP @@ -9,7 +9,7 @@ I64 pf_buf_in_ptr=0,pf_depth; I64 pf_prof_active=0; U0 ProfTimerInt(CTask *task) -{//See $LK,"profiler_timer_irq",A="FF:::/Kernel/Ints.CPP,profiler_timer_irq"$. +{//See $LK,"profiler_timer_irq",A="FF:::/Kernel/KInts.CPP,profiler_timer_irq"$. I64 i,k; if (Bt(&pf_prof_active,0)) for (k=0;k<=pf_depth;k++) { diff --git a/Adam/Utils/StrUtils.CPP b/Adam/Opt/Utils/StrUtils.CPP similarity index 100% rename from Adam/Utils/StrUtils.CPP rename to Adam/Opt/Utils/StrUtils.CPP diff --git a/Misc/ToDolDoc.CPP b/Adam/Opt/Utils/ToDolDoc.CPP similarity index 83% rename from Misc/ToDolDoc.CPP rename to Adam/Opt/Utils/ToDolDoc.CPP index ae544ef..83ca901 100644 --- a/Misc/ToDolDoc.CPP +++ b/Adam/Opt/Utils/ToDolDoc.CPP @@ -1,5 +1,7 @@ +#help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)" + public U0 ToDolDoc(U8 *files_find_mask,U8 *fu_flags=NULL) -{//Convert text file to $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$. +{//Convert text file to $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$ by making double $$'s. CDoc *doc; I64 fuf_flags=0; CDirEntry *tempde,*tempde1; diff --git a/Adam/Utils/ToHtml.CPP b/Adam/Opt/Utils/ToHtml.CPP similarity index 100% rename from Adam/Utils/ToHtml.CPP rename to Adam/Opt/Utils/ToHtml.CPP diff --git a/Adam/Utils/ToTXT.CPP b/Adam/Opt/Utils/ToTXT.CPP similarity index 100% rename from Adam/Utils/ToTXT.CPP rename to Adam/Opt/Utils/ToTXT.CPP diff --git a/Adam/Snd/Snd.CPP b/Adam/Snd/MakeSnd.CPP similarity index 92% rename from Adam/Snd/Snd.CPP rename to Adam/Snd/MakeSnd.CPP index 51438a9..343a9aa 100644 --- a/Adam/Snd/Snd.CPP +++ b/Adam/Snd/MakeSnd.CPP @@ -1,5 +1,6 @@ -#help_index "Snd" +Cd(__DIR__);; +#help_index "Snd" class CSndWaveCtrl { I64 sample_rate,sample_bits,channels; @@ -17,3 +18,4 @@ public U0 SndTaskEndCB() #include "SndMusic" #include "SndEffects" #include "SndFile" +Cd("..");; diff --git a/Adam/Snd/SndMusic.CPP b/Adam/Snd/SndMusic.CPP index 7527fc1..1af05e2 100644 --- a/Adam/Snd/SndMusic.CPP +++ b/Adam/Snd/SndMusic.CPP @@ -128,7 +128,7 @@ per second. It defaults to */ U8 *word,*last_st; I64 note,i=0,timeout_val,timeout_val2; - Bool tie,old_preempt=Preempt; + Bool tie; F64 f,d,on_jiffies,off_jiffies; music.play_note_num=0; while (*st) { @@ -186,7 +186,6 @@ per second. It defaults to music.play_note_num++; } - Preempt(old_preempt); } U0 MusicSettingsRst() @@ -214,7 +213,6 @@ MusicSettingsRst; U0 CurSongTask() { - Preempt(ON); Fs->task_end_cb=&SndTaskEndCB; while (TRUE) Play(music.cur_song); diff --git a/Adam/TaskRep.CPP b/Adam/TaskRep.CPP new file mode 100644 index 0000000..a9abc97 --- /dev/null +++ b/Adam/TaskRep.CPP @@ -0,0 +1,34 @@ +#help_index "Info;Task" +U0 TaskRepTask(CTask *task,I64 indent) +{ + CTask *task1; + U8 *st,*desc=MStrUtil(task->task_title,SUF_SAFE_DOLLAR); + st=MStrPrint("$$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$$",task,task,task); + "%h*c%s $$TX,\"%Q...\",SCX=16$$ Mem:%08X\n",indent,CH_SPACE, + st,desc,TaskMemAlloced(task); + "%h*cFlags:%04X:%04X Time:%0.2fm\n",indent+2,CH_SPACE, + task->task_flags,task->display_flags, + task->total_time/60.0/cnts.time_stamp_freq_initial; + Free(st); + Free(desc); + task1=task->next_child_task; + while (task1!=(&task->next_child_task)(U8 *) + -offset(CTask.next_sibling_task)) { + TaskRepTask(task1,indent+2); + task1=task1->next_sibling_task; + } +} + +public U0 TaskRep() +{//Report current tasks on all cores. + I64 i; + CCPU *c; + PUSHFD + CLI + for (i=0;iseth_task,2); + } + POPFD +} diff --git a/Adam/TaskSettings.CPP b/Adam/TaskSettings.CPP index a905350..4e6c752 100644 --- a/Adam/TaskSettings.CPP +++ b/Adam/TaskSettings.CPP @@ -48,7 +48,6 @@ public CTaskSettings *SettingsPush(CTask *task=NULL,I64 flags=0) tempse->border_attr=task->border_attr; tempse->border_src =task->border_src; tempse->border=!Bt(&task->display_flags,DISPLAYf_NO_BORDER); - tempse->preempt=Bt(&task->task_flags,TASKf_PREEMPT); if (TaskValidate(ac.task)) tempse->autocomplete=TRUE; else @@ -88,12 +87,9 @@ U0 SettingsPop2(CTask *task,CTaskSettings *tempse) public U0 SettingsPop(CTask *task=NULL,I64 flags=0) {//Typically, called at end of an application. CTaskSettings *tempse; - Bool old_preempt=Preempt; if (!task) task=Fs; - if (!TaskValidate(task)) { - Preempt(old_preempt); + if (!TaskValidate(task)) return; - } if (tempse=task->next_settings) { task->next_settings=tempse->next; Cd(tempse->cur_dir); @@ -117,9 +113,6 @@ public U0 SettingsPop(CTask *task=NULL,I64 flags=0) WinMgrSync(,TRUE); SettingsPop2(task,tempse); //Redo in case was lost by old update - Preempt(old_preempt); - LBEqu(&task->task_flags,TASKf_PREEMPT,tempse->preempt); Free(tempse); - } else - Preempt(old_preempt); + } } diff --git a/Adam/Training.CPP b/Adam/Training.CPP index 590e947..7e792dd 100644 --- a/Adam/Training.CPP +++ b/Adam/Training.CPP @@ -1,178 +1,141 @@ #help_index "Help System" -public U0 PressKeyHelp(CTask *task=NULL) -{//Jump to key handlers src for key presses. - I64 a1=0,a2=0; - Bool old_preempt=Preempt; - CTask *old_hash=Fs->hash_table; - if (!task) task=Fs; - - /* -This feature is a burden in code. It would be nice to lst key -cmds for all applications, but it makes the code too ugly. -*/ - task=Fs; - - Fs->hash_table=task->hash_table; - "Press keys to show handler code.\n" - " to exit.\n" - "Do not press .\n"; - while (a1!=CH_ESC && a1!=CH_SHIFT_ESC) { - GetMsg(&a1,&a2,1<hash_table; + st=ScanCode2KeyName(sc); + if (sc&SCF_CTRL) i+=5; + if (sc&SCF_ALT) i+=4; + if (sc&(SCF_SHIFT|SCF_NO_SHIFT)) i+=6; + if (TaskValidate(task)) + Fs->hash_table=task->hash_table; + st2=SrcEdLink(fp_handler,256); Fs->hash_table=old_hash; - Preempt(old_preempt); + + k=*desc(U32 *); + if (k=='Edit') c=BLUE; + else if (k=='Dol ') c=GREEN; + else if (k=='Cmd ') c=RED; + else c=BLACK; + + result=MStrPrint("%-*s $$FG,%d$$$$TX+UL+L+PU,\"%Q\",A=\"%s\"$$$$FG$$\n", + i,st,c,desc,st2); + Free(st); + Free(st2); + + ptr=result; + while (*ptr) { + if (*ptr==CH_SPACE) + *ptr=CH_SHIFT_SPACE; + ptr++; + } + + return result; } -U0 KeyMapCtrlAltFamily() +U0 KeyMapKeyPrint(I64 sc,U0 (*fp_handler)(I64 sc),U8 *desc,CTask *task=NULL) { - I64 i,a2; - U8 *st,*st2; - - a2=SC_DELETE+SCF_CTRL+SCF_ALT; - st2=ScanCode2KeyName(a2); - st=SrcEdLink(&Reboot,256); - "%20s $$LK,\"%s\",A=\"%s\"$$\n",st2,"Sys/Reboot",st; + U8 *st=KeyMapKeyMStrPrint(sc,fp_handler,desc,task); + "%s",st; Free(st); - Free(st2); +} - a2=SC_ESC+SCF_CTRL+SCF_ALT; - st2=ScanCode2KeyName(a2); - st=SrcEdLink(&User,256); - "%20s $$LK,\"%s\",A=\"%s\"$$\n",st2,"Sys/Spawn New User Task",st; - Free(st); - Free(st2); +U0 KeyMapCtrlAltFamily(Bool no_shift,Bool shift) +{ + I64 i,no_shift_f; + if (no_shift && shift) + no_shift_f=SCF_NO_SHIFT; + else + no_shift_f=0; + if (no_shift) KeyMapKeyPrint(SC_DELETE+SCF_CTRL+SCF_ALT+no_shift_f, + &Reboot,"Cmd /Reboot"); + if (no_shift) KeyMapKeyPrint(SC_ESC+SCF_CTRL+SCF_ALT+no_shift_f, + &User,"Cmd /Spawn New User Task"); + if (no_shift) KeyMapKeyPrint(SC_TAB+SCF_CTRL+SCF_ALT+no_shift_f, + &WinToTop,"Cmd /Switch Focus to Next Task"); - a2=SC_TAB+SCF_CTRL+SCF_ALT; - st2=ScanCode2KeyName(a2); - st=SrcEdLink(&WinToTop,256); - "%20s $$LK,\"%s\",A=\"%s\"$$\n",st2,"Sys/Switch Focus to Next Task",st; - Free(st); - Free(st2); - - for (i=0;i<26;i++) { - if (keydev.fp_ctrl_alt_let_cbs[i] && - keydev.ctrl_alt_let_descs[i]) { - a2=Char2ScanCode(i+'a')+SCF_CTRL+SCF_ALT; - st2=ScanCode2KeyName(a2); - st=SrcEdLink(keydev.fp_ctrl_alt_let_cbs[i],256); - "%20s $$LK,\"%s\",A=\"%s\"$$\n",st2,keydev.ctrl_alt_let_descs[i],st; - Free(st); - Free(st2); + for (i=0;i<26;i++) + if (keydev.fp_ctrl_alt_cbs[i]) { + if (no_shift && keydev.ctrl_alt_no_shift_descs[i]) + KeyMapKeyPrint(Char2ScanCode(i+'a')+SCF_CTRL+SCF_ALT+no_shift_f, + keydev.fp_ctrl_alt_cbs[i],keydev.ctrl_alt_no_shift_descs[i]); + if (shift && keydev.ctrl_alt_shift_descs[i]) + KeyMapKeyPrint(Char2ScanCode(i+'a')+SCF_CTRL+SCF_ALT+SCF_SHIFT, + keydev.fp_ctrl_alt_cbs[i],keydev.ctrl_alt_shift_descs[i]); } - } +} + +U0 KMComparePrepare(U8 *buf,I64 *src) +{ + I64 i,*dst=buf; + U8 *ptr; + if (src) { + *dst++=*src++; + *dst++=*src++; + *dst++=*src++; + *dst++=*src++; + *dst(U8 *)=0; + if (ptr=StrMatch("SHIFT",buf)) { + for (i=0;i<5;i++) + ptr[i]=CH_SHIFT_SPACE; + if (ptr=StrMatch("$$",buf)) + *ptr=255; + } + } else + *buf=0; } I64 KMCompare(U8 *e1,U8 *e2) { - I64 i,ch1,ch2; - U8 *ee1,*ee2; - Bool e1_shift=FALSE,e2_shift=FALSE; - if (e1) { - if (e2) { - while (*e1==CH_SPACE) - e1++; - while (*e2==CH_SPACE) - e2++; - while (*e1 && *e1==*e2) { - e1++; - e2++; - } - if (!StrNCmp(e1,"SHIFT",5)) { - e1+=6; - e1_shift=TRUE; - } else if (!StrNCmp(e1," ",5)) - e1+=6; - if (!StrNCmp(e2,"SHIFT",5)) { - e2+=6; - e2_shift=TRUE; - } else if (!StrNCmp(e2," ",5)) - e2+=6; - - ee1=e1; - while (*ee1 && *ee1!='$$') - ee1++; - ch1=*ee1; - *ee1=0; - - ee2=e2; - while (*ee2 && *ee2!='$$') - ee2++; - ch2=*ee2; - *ee2=0; - - i=StrCmp(e1,e2); - - *ee1=ch1; - *ee2=ch2; - - if (i) - return i; - else - return e1_shift-e2_shift; - } else - return 1; - } else { - if (e2) - return -1; - else - return 0; - } + U8 buf1[STR_LEN],buf2[STR_LEN]; + KMComparePrepare(buf1,e1); + KMComparePrepare(buf2,e2); + return StrCmp(buf1,buf2); } -U0 KeyMapFamily2(U8 **entries,U8 *family,CTask *task,I64 scf) +U0 KeyMapFamily2(U8 **entries,CTask *task,I64 scf) { - I64 i,a2,a1; - U8 *st,*st2; - CTask *old_hash=Fs->hash_table; - Fs->hash_table=task->hash_table; + I64 i,a1,a2; for (i=0;i<256;i++) { a2=scf|i|SCF_KEY_DESC; a1=ScanCode2Char(a2); *keydev.desc=0; keydev.handler=NULL; - if (task==Fs) - PutKey(a1,a2); - else if (TaskValidate(task)) { - PostMsg(task,MSG_KEY_DOWN,a1,a2); - while (!keydev.handler) - Yield; - } - if (*keydev.desc && StrNCmp(keydev.desc,"Char/",5)) { - st=ScanCode2KeyName(a2&~(SCF_CTRL|SCF_ALT|SCF_SHIFT)); - st2=MStrPrint("%s %s",family,st); - Free(st); - st=SrcEdLink(keydev.handler,256); - entries[i]=MStrPrint("%20s $$LK,\"%s\",A=\"%s\"$$\n", - st2,keydev.desc,st); - Free(st); - Free(st2); + if (TaskValidate(task) && !Bt(&task->win_inhibit,WIf_SELF_KEY_DESC)) { + if (task==Fs) + PutKey(a1,a2); + else + PostMsg(task,MSG_KEY_DOWN,a1,a2); + WinMgrSync(0,TRUE); + Sleep(1); } + if (*keydev.desc && StrNCmp(keydev.desc,"Char /",7)) + entries[i]=KeyMapKeyMStrPrint(a2,keydev.handler,keydev.desc,task); } - Fs->hash_table=old_hash; } -U0 KeyMapFamily(U8 *family,CTask *task,I64 scf) +U0 KeyMapFamily(CTask *task,I64 scf,Bool no_shift,Bool shift) { - I64 i; - U8 **entries=CAlloc(2*256*sizeof(U8 *)),st1[32],st2[32]; - StrPrint(st1,"%s ",family); - StrPrint(st2,"%s SHIFT",family); - KeyMapFamily2(entries ,st1,task,scf); - KeyMapFamily2(entries+256,st2,task,scf+SCF_SHIFT); - QSortI64(entries,2*256,&KMCompare); - for (i=0;i<2*256;i++) + I64 i,cnt=0; + U8 **entries=CAlloc(2*256*sizeof(U8 *)),**ptr=entries; + if (no_shift) { + if (shift) + KeyMapFamily2(ptr,task,scf+SCF_NO_SHIFT); + else + KeyMapFamily2(ptr,task,scf); + ptr+=256; + cnt+=256; + } + if (shift) { + KeyMapFamily2(ptr,task,scf+SCF_SHIFT); + ptr+=256; + cnt+=256; + } + QSortI64(entries,cnt,&KMCompare); + for (i=0;iwin_inhibit,WIf_SELF_KEY_DESC); DocMax; - KeyMapFamily("",task,0); - KeyMapFamily("CTRL",task,SCF_CTRL); - KeyMapFamily("ALT",task,SCF_ALT); - KeyMapCtrlAltFamily; - "\n$$MA-X+PU,\"Click for help on key pressed\"," - "LM=\"PressKeyHelp(0x%X);\"$$\n",task; + KeyMapFamily(task,0,TRUE,TRUE); + KeyMapFamily(task,SCF_CTRL,TRUE,TRUE); + KeyMapFamily(task,SCF_ALT,TRUE,TRUE); + KeyMapCtrlAltFamily(TRUE,TRUE); + LBEqu(&task->win_inhibit,WIf_SELF_KEY_DESC,old_key_desc); + "\nKeyMap Completed.\n"; } #help_index "Help System/Training" diff --git a/Adam/WallPaper.CPP b/Adam/WallPaper.CPP index 86e499a8e76df7f4a5fee9fd49dd581ef3cfa02e..d735962ab5d196e8a6e083f9005d81994390476b 100644 GIT binary patch delta 121 zcmbQC|5R-t? zLIDwOm}2{|U)X-pKz%5Zzeo&65P4Fp3~)fLUZcxmYN;9+#P1 z3JOK3C8b4q3dvv#LQ;!zok~ke^7H&s%dNS%RDuI^lx&RblysatZH-j8xYCRCK;Ec~ zFD@v`EJ?Lh@pM8~0M}v+(PFFuHltog$;JdCVxq#urJRwPQxKn-my%kcpyXbZSdfvK zT&(Y#S)6R`nO9I+q7aaunOBlpr0DnVXoNs>D@Lnv|27tPpCT;8K)W z?p~Cb1lABxQl#PR;;f*RlC0xtW};95CM$Ko!IYenUtgS>qRCaQuOE_;S*(y*tdOXX zoS2i7l$e~Yrx2W)s-WWIt)paRrSFoOo39Udk$X{Qik@>ofL@f6iXNAOLQ1l(U0P0J zda;^qora6ETYN~6qhGL_e~_n_sa$we!-E%`Qqqg` z(hA~JiW1A?(~A<5WaBeI;Tm61Qe>-!9&*-`WrRKJSr{PT5(5JR69WT-_^X01{#VX#_FBA~5|7ARfpB z28MbDhW`u@4G;kaFb`xf$ObSCBKZ0FVe%jcFre{4c7haul!D~JHi0-G%nTwJ7#QGQ z{0;RYC&+%NAHiy1+CY8)c>%@;ISTA(uqrr@AI1gCfjk8h0I@+B%7>W)r{V6cfv5mk z2=*a_3-&q|KHNg62cW8 diff --git a/Adam/WinA.CPP b/Adam/WinA.CPP index c53b087..56de860 100644 --- a/Adam/WinA.CPP +++ b/Adam/WinA.CPP @@ -91,11 +91,12 @@ U0 WinGrid(Bool val) U0 CtrlAltG(I64 sc) { if (sc&SCF_SHIFT) - PopUp("WinGrid(FALSE);"); + PopUp("WinGrid(OFF);"); else - PopUp("WinGrid(TRUE);"); + PopUp("WinGrid(ON);"); } -CtrlAltLetCBSet('G',&CtrlAltG,"Sys/Grid On or Off"); +CtrlAltCBSet('G',&CtrlAltG,"Cmd /Grid On", + "Cmd /Grid Off"); CTask *ext_ASCII_task; U0 ExtendedASCII() @@ -129,7 +130,7 @@ U0 CtrlAltA(I64) if (ext_ASCII_task=sys_focus_task) Spawn(&ExtendedASCII); } -CtrlAltLetCBSet('A',&CtrlAltA,"Sys/Extended ASCII"); +CtrlAltCBSet('A',&CtrlAltA,"Cmd /Extended ASCII"); public U0 WinScrollNull(CTask *task,CD3I64 *s) {//If panning a window has been done, restore to zero. diff --git a/Adam/WinB.CPP b/Adam/WinB.CPP index e8fc1e4..5125420 100644 --- a/Adam/WinB.CPP +++ b/Adam/WinB.CPP @@ -2,15 +2,17 @@ public U0 WinMgrSync(I64 cnt=1,Bool force=FALSE) {//Wait for win manager to start and finish updating screen. - //0 Cnt Sync to WinMgr. (not used) + //0,FALSE Cnt Sync to WinMgr. (not used) + //0,TRUE Pump Msgs. //1 Cnt Wait and Pump Msgs. //2 Cnt Make Sure to do a Full Refresh // and Set Cur Pos. - Bool old_preempt=Preempt, - old_full_refresh, + Bool old_full_refresh, old_idle=LBts(&Fs->task_flags,TASKf_IDLE); CDoc *old_doc=DocPut; I64 update_cnt; + if (!cnt&&force) + LBts(&sys_semas[SYS_SEMA_JUST_PUMP_MSGS],0); while (Bt(&sys_semas[SYS_SEMA_REFRESH_IN_PROGRESS],0)) { if (force) { LBts(&sys_semas[SYS_SEMA_FORCE_WINMGR],0); @@ -26,12 +28,11 @@ public U0 WinMgrSync(I64 cnt=1,Bool force=FALSE) LBts(&sys_semas[SYS_SEMA_FORCE_WINMGR],0); if (sys_winmgr_task) sys_winmgr_task->wake_jiffy=cnts.jiffies; } - Yield; + Sleep(1); } if (old_doc) LBEqu(&old_doc->flags,DOCf_DO_FULL_REFRESH,old_full_refresh); LBEqu(&Fs->task_flags,TASKf_IDLE,old_idle); - Preempt(old_preempt); } #help_index "Windows" @@ -268,45 +269,44 @@ I64 WinMgrSleep(Bool flush_msgs=FALSE) LBtr(&sys_focus_task->task_flags,TASKf_HAS_SONG); WinIPUpdate; - timeout_val=cnts.jiffies+JIFFY_FREQ/WMG_FPS; - LBts(&sys_semas[SYS_SEMA_REFRESH_IN_PROGRESS],0); - GrUpdateScreen; - LBtr(&sys_semas[SYS_SEMA_REFRESH_IN_PROGRESS],0); + if (!LBtr(&sys_semas[SYS_SEMA_JUST_PUMP_MSGS],0)) { + timeout_val=cnts.jiffies+JIFFY_FREQ/WMG_FPS; + LBts(&sys_semas[SYS_SEMA_REFRESH_IN_PROGRESS],0); + GrUpdateScreen; + LBtr(&sys_semas[SYS_SEMA_REFRESH_IN_PROGRESS],0); - if (sys_focus_task && !Bt(&sys_focus_task->task_flags,TASKf_HAS_SONG)) { - Free(music.cur_song); - music.cur_song=NULL; + if (sys_focus_task && !Bt(&sys_focus_task->task_flags,TASKf_HAS_SONG)) { + Free(music.cur_song); + music.cur_song=NULL; + } + if (music.cur_song) { + if (!music.cur_song_task) + music.cur_song_task=Spawn(&CurSongTask,NULL,"Song"); + } else if (music.cur_song_task) { + Kill(music.cur_song_task); + music.cur_song_task=NULL; + } + winmgr.updates++; + if (!mouse.install_attempts) + SleepUntil(timeout_val); //Just for before mouse install attempt at boot. + else + do { + KbdMouseHandler(FALSE,TRUE); + SleepUntil(MinI64(timeout_val,cnts.jiffies+JIFFY_FREQ/500)); + } while (cnts.jiffieswin_top <=ip_text_y<=task->win_bottom && - task->win_left<=ip_text_x<=task->win_right) { + if (WinInside(ipx,ipy,task)) { if ((result=DocDisplay(task)) && result->flags&DOCF_DONT_SHOW) result=NULL; else if (set_cursor) { @@ -317,8 +317,8 @@ CDoc *WinCursorPosSet(CTask *task,I64 ip_text_x, x0=result->line_start_col; y0=result->top_line_num; DocRecalc(result,TRUE); - result->x=ip_text_x-task->win_left-task->scroll_x/FONT_WIDTH +x0; - result->y=ip_text_y-task->win_top -task->scroll_y/FONT_HEIGHT+y0; + result->x=(ipx-task->pix_left-task->scroll_x)/FONT_WIDTH +x0; + result->y=(ipy-task->pix_top -task->scroll_y)/FONT_HEIGHT+y0; DocRecalc(result,FALSE,DOC_RECALC_FIND_CURSOR); task->scroll_x=0; task->scroll_y=0; @@ -468,9 +468,7 @@ wmt_start: SetRFlags(old_flags); goto wmt_start; } - if (Bt(&task->display_flags,DISPLAYf_SHOW) && - task->border_pix_left<=ip.pos.x<=task->border_pix_right && - task->border_pix_top<=ip.pos.y<=task->border_pix_bottom) { + if (WinInside(ip.pos.x,ip.pos.y,task,TRUE)) { SetRFlags(old_flags); break; } @@ -518,7 +516,8 @@ wmt_start: kbd.scan_code&SCF_CTRL && TaskValidate(task)) { winmgr.grab_scroll_closed=FALSE; winmgr.grab_scroll=TRUE; - while (kbd.scan_code&SCF_CTRL && TaskValidate(task)) { + while (kbd.scan_code&SCF_CTRL && TaskValidate(task) && + (!ac.task || !WinInside(ip.pos.x,ip.pos.y,ac.task,TRUE))) { if (ip.lb) { winmgr.grab_scroll_closed=TRUE; x=ip.pos.x-task->scroll_x; @@ -539,6 +538,7 @@ wmt_start: } else WinMgrSleep; } + winmgr.grab_scroll=FALSE; goto wmt_start; } else winmgr.grab_scroll=FALSE; @@ -666,7 +666,7 @@ wmt_start: (!TaskValidate(sys_focus_task)|| !Bt(&sys_focus_task->win_inhibit,WIf_FOCUS_TASK_IP_L))) { if (!old_ip.lb && ip.lb) { - if (doc=WinCursorPosSet(task,ip.pos_text.x,ip.pos_text.y)) { + if (doc=WinCursorPosSet(task,ip.pos.x,ip.pos.y)) { DocLock(doc); if (doc->doc_signature==DOC_SIGNATURE_VAL) { doc_e=doc->cur_entry; @@ -685,7 +685,7 @@ wmt_start: (!TaskValidate(sys_focus_task)|| !Bt(&sys_focus_task->win_inhibit,WIf_FOCUS_TASK_IP_R))) { if (!old_ip.rb && ip.rb) { - if (WinCursorPosSet(task,ip.pos_text.x,ip.pos_text.y)) { + if (WinCursorPosSet(task,ip.pos.x,ip.pos.y)) { old_ip.rb=TRUE; goto wmt_start; } @@ -715,7 +715,7 @@ wmt_start: (!TaskValidate(sys_focus_task)|| !Bt(&sys_focus_task->win_inhibit,WIf_FOCUS_TASK_IP_L))) { if (old_ip.lb && !ip.lb) { - if (doc=WinCursorPosSet(task,ip.pos_text.x,ip.pos_text.y,FALSE)) { + if (doc=WinCursorPosSet(task,ip.pos.x,ip.pos.y,FALSE)) { do msg_code=WinMgrSleep; while (TaskValidate(task) && (ip.lb || ip.left_dbl_time)); @@ -751,7 +751,7 @@ wmt_start: (!TaskValidate(sys_focus_task)|| !Bt(&sys_focus_task->win_inhibit,WIf_FOCUS_TASK_IP_R))) { if (old_ip.rb && !ip.rb) { - if (doc=WinCursorPosSet(task,ip.pos_text.x,ip.pos_text.y,FALSE)) { + if (doc=WinCursorPosSet(task,ip.pos.x,ip.pos.y,FALSE)) { do msg_code=WinMgrSleep; while (TaskValidate(task) && (ip.rb || ip.right_dbl_time)); diff --git a/AdamKeyPlugIns.CPP b/AdamKeyPlugIns.CPP deleted file mode 100644 index d8bc5d8..0000000 --- a/AdamKeyPlugIns.CPP +++ /dev/null @@ -1,173 +0,0 @@ -//Place this file in /Home and change -//anything you want. - -U0 InsTime() -{ - CDate cdt; - cdt=Now; - "$$IV,1$$----%D %T----$$IV,0$$\n",cdt,cdt; -} - -Bool MyPutKey(I64 ch,I64 sc) -{//ch=ASCII; sc=scan_code - - //See $LK,"Char",A="HI:Char"$ for definition of scan codes. - //See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.TXT"$. - //See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. - - //You can customize keys. This routine - //is called before the main editor - //key handler $LK,"DocPutKey",A="MN:DocPutKey"$(). - //You can intercept any key. - - //Return TRUE if you completely - //handled the key. - - I64 i,sc2=sc.u8[0]; - U8 *st1,*st2; - - if (SC_F1<=sc2<=SC_F10 && - sc&SCF_ALT && - !(sc & SCF_CTRL)) { - switch (sc2) { - case SC_F1: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTPURPLE"); - else - KeyDescSet("Dollar/PURPLE"); - } else { - if (sc & SCF_SHIFT) - "$$LTPURPLE$$"; - else - "$$PURPLE$$"; - } - break; - case SC_F2: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTRED"); - else - KeyDescSet("Dollar/RED"); - } else { - if (sc & SCF_SHIFT) - "$$LTRED$$"; - else - "$$RED$$"; - } - break; - case SC_F3: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTGREEN"); - else - KeyDescSet("Dollar/GREEN"); - } else { - if (sc & SCF_SHIFT) - "$$LTGREEN$$"; - else - "$$GREEN$$"; - } - break; - case SC_F4: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/Default Color"); - else - KeyDescSet("Dollar/BLUE"); - } else { - if (sc & SCF_SHIFT) - "$$FG$$"; - else - "$$BLUE$$"; - } - break; - case SC_F7: - if (sc&SCF_KEY_DESC) - KeyDescSet("Misc/Ins Datetime"); - else - InsTime; - break; - } - return TRUE; - } else { - if (!(sc & SCF_CTRL)) { - if (sc & SCF_ALT) { - switch (ch) { - case 'a': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/AutoComplete(ON);"); - else - AutoComplete(ON); - return TRUE; - case 'A': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/AutoComplete;"); - else - AutoComplete; - return TRUE; - - case 'h': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Tile Horizontally"); - else - WinTileHorz; - return TRUE; - case 'm': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Maximize"); - else { - WinMax; - WinBorder; - } - return TRUE; - case 'v': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Tile Vertically"); - else - WinTileVert; - return TRUE; - - case 'l': - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Put Link to Cur Pos on Clipboard"); - else { - ClipboardDel; - st1=FileNameAbs(BIBLE_FILENAME); - st2=FileNameAbs(DocPut->filename.name); - if (!StrCmp(st1,st2)) { - Free(st1); - st1=BibleLine2Verse(DocPut->cur_entry->y+1,','); - DocPrint(sys_clipboard_doc,"$$LK,\"BF:%s\"$$",st1); - } else - DocPrint(sys_clipboard_doc,"$$LK,\"FL:%s,%d\"$$", - st2,DocPut->cur_entry->y+1); - Free(st1); - Free(st2); - } - return TRUE; - case 'L': - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Place Anchor, Put Link to Clipboard"); - else { - i=RandU32; - ClipboardDel; - DocPrint(sys_clipboard_doc,"$$LK,\"\",A=\"FA:%s,ANC%d\"$$", - DocPut->filename.name,i); - "$$AN,\"\",A=\"ANC%d\"$$",i; - } - return TRUE; - - } - } - } - } - return FALSE; -} - -Bool MyPutS(U8 *) -{ - return FALSE; -} - -KeyDevAdd(&MyPutKey,&MyPutS,0x20000000,TRUE); diff --git a/AdamPkgs.CPP b/AdamPkgs.CPP deleted file mode 100644 index bb2a600..0000000 --- a/AdamPkgs.CPP +++ /dev/null @@ -1,25 +0,0 @@ -//Place this file in /Home and change -//anything you want. - -Cd("/Adam/Boot");; -#include "Boot" -Cd("/Adam/Utils");; -#include "Diff" -#include "FileBMP" -#include "Find" -#include "HeapLog" -#include "LineRep" -#include "LinkChk" -#include "MemRep" -#include "Merge" -#include "Profiler" -#include "StrUtils" -#include "ToHtml" -#include "ToTXT" - -MapFileLoad("::/Kernel/Kernel"); -MapFileLoad("::/Compiler/Compiler"); - -Cd("::/Home");; - -#help_index "" diff --git a/Apps/AfterEgypt/AfterEgypt.CPP b/Apps/AfterEgypt/AfterEgypt.CPP index 3d45e6a..cff3833 100644 --- a/Apps/AfterEgypt/AfterEgypt.CPP +++ b/Apps/AfterEgypt/AfterEgypt.CPP @@ -160,8 +160,8 @@ U0 TMsg(CDC *dc,U8 *msg) U0 Trailer() { CDC *dc=DCAlias; - WinMax; WinBorder; + WinMax; Cd(Fs->parent_task->cur_dir); Type("AESplash.TXT"); Sleep(500); @@ -180,12 +180,11 @@ U0 AfterEgypt() { SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); + AutoComplete; WinBorder; - AutoComplete; - DocClear; WinMax; + DocClear; PopUp("Trailer;",Fs); - AutoComplete; try //Catch . while (TakeTurn); catch diff --git a/Apps/AfterEgypt/Comics/Moses10.TXT b/Apps/AfterEgypt/Comics/Moses10.TXT deleted file mode 100644 index c248ebcee642fdd63f2f1f13fb99ec1febd279c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmY!h57#kN;o{;_Kmy^Z3dJS)d8sK1#re6Z`FW`dY57GcDvAqI6SFh((iI}}ON$ip z5_41ako1F?DsJvNCMqt8xp}&oB{~Ye`NgTlid-J}0*9eyarHxGKmtENT0jCI(?J5SKmstvS(uj7P{vIL28Jgf6-OBu7~cH<|NlG# z1H&_r0E}^xfq~%$NC3vz&%nTN3nTzz>}FtK0NKLG!VC%rE|?EMt^oT0#)yWxlaY@L K*+DFzZ~_3w>ybSG diff --git a/Apps/AfterEgypt/Comics/Moses12.TXT b/Apps/AfterEgypt/Comics/Moses12.TXT deleted file mode 100644 index 2fa06f3009b587f6c0efdab105d49ea08216b2e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmY!h57#kN;o?$21CjZq>P4vv#U+_}>6Ln@k}7WQIwmS^MX9OwTri*#9H675q~qji z3o?y?kpTjX7#YB9E+z&B22KVBh8iXa&B(~i%)r3FmCL}uz{0@5P{hE%@ZrI-1F6`^z`*e3|NsA& z7#JA7f&@SekiZS79Z>o?0|Ub+ko*;>33nM77(Rmp?m!tJfyW>L7~=v11H)60zOYYCL9XP2F(yNu&B(_Eawy0vP-idz02!W#M*si- diff --git a/Apps/AfterEgypt/Comics/Moses13.TXT b/Apps/AfterEgypt/Comics/Moses13.TXT deleted file mode 100644 index 0f5e2734f05c140bffdd314386f0d0dda35099fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmd<$Qa}YB`Q-|^iFuU@iFxU%ImHT<`K1c!`6c!!s#M(Ebxc$u!BTm7i3%C1IRy%7 znduoN3Mr|%`FX|mTu`7A9H675q~qjiYpBA-#l^tL00Hcb3}7}Fh|9siz);V`zyP9| znHd-u7#X?NFfcH%FfcG|VqjqS_5c5WE*Rq&RDuh}cmz`cW9(sIVE6&j@&w9YV`N}p zV_;z50tx*2|NlP=BLf471`B{p2MK%uX@N0#U|L`d2}TBnZy*&Mj0_AQr7)Tc#sH~& i15yEFfUJE25`Z!OF)%PZ0|~$we;61TKK=jyp8){L?tcyd diff --git a/Apps/AfterEgypt/Comics/Moses14.TXT b/Apps/AfterEgypt/Comics/Moses14.TXT deleted file mode 100644 index 201d7b573ec183315f0fda582df8c94e542cf9ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 642 zcmY!h57#kN;o?#NgOGfME%RbcIBPvc#gy#FEVXJcax`g_P3dY+W#so}XWw3RRw*n3I#5qM+oIn5Y27IeJQ9 z8_@|BH+LNqmGF$roK%I%{8IIzRE6@yyp+@;kY$;9AcsH=Mc0XkpORXfT2un@g=>0c zK}lv}Ua>-A5zKvfw4zHDWPkt( zMg}mO3&iDQU|^_cVqgH#jEu}o3=9lh>I@7F%nS?+`V0&Vpa1{=&jn*dLM6Chj9vx? zhOZzMFoq=q1H(s{07&ma1_lOpkfHrh8IZtlkP48%`~Uy{A7)@+cncDMF;2s@z!>+D zRe%gV3lo4bE;2AM+yT0n+A{{R0!jOGF{UjP69|0Dwg1Bhk-0B8lp A$p8QV diff --git a/Apps/AfterEgypt/Comics/Moses15.TXT b/Apps/AfterEgypt/Comics/Moses15.TXT deleted file mode 100644 index 59120f98d9bd891f8051561f57e31fc4b0433f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmY!h57#kN;o?$&g78#@jKs23g+zs<#FCPnRE3iK-29@V{Bk`71yA){1q%bX(#q7t zqGE;ooD`^3UVe!}acNPif~P`qVxB^FYH9&oZEmGPMq*w{u|j5^LPhVk(yYNnU}5yHxsU$D297xS*k*A zs)C_`LP2S9hHhy=u|iR1dPWJE=H=y=>v6$=N^pRVl9G;-r!6Qfxm0|-b(CBy@>5ES zbqvj|3=NfZ9Bq}H+^kT9jx@c#e*|A!eE7~X;eV2sl+EilG?WECJo&%y*?jEf8m47WjMz!>{s0x-sIm==(s YkN^Mw52Lw2jMxAF|3AsVzyP8d0I0;so&W#< diff --git a/Apps/AfterEgypt/Comics/Moses16.TXT b/Apps/AfterEgypt/Comics/Moses16.TXT deleted file mode 100644 index cab05ca3ceee515a84425195c7b4fa205c27fc0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1283 zcmY!h57#kN;o?#N0Y?R+ycC6`{GvRC?93E}4 zG=-9kRE3RC`bg^pqpQoTBMMeS6QA|2{#B~j*$w;Y>*Qb!ZRurQZiG()+d4u1eu@!(ho5( zF)u}-JR`A0p*SPIG$%!&JXIkjU!gn`ZX?Ly*_kQ!VB>HRDsJvNCMqGRIXMa$nYjvy zN%^HEU^`0-lJj#j^U|Tt$E6=d9PGl%vG*)3?WPkt(Mg}mO3&iDQ zU|^_cVqgH#jEu}o3=9lh>I@7F%nS?+`V0&Vpa1{=&jn*dLM6Chj9vx?hOZzMFoq=q z1H(s{07&ma1_lOpkfHrh8IZtlkP48%`~Uy{A7)@+cncDMF;2s@z!>+DRe%gV3lo4b zE;2AM+yT0n+A{{R0!jOGF{UjP69|0Dwg1Bhk-g#jpNM#BkzIDwML MXgGnA5B_ih0JTTBBme*a diff --git a/Apps/AfterEgypt/Comics/Moses17.TXT b/Apps/AfterEgypt/Comics/Moses17.TXT deleted file mode 100644 index b975a5b53ceab0a41bc3b9cdf9fae8277887ea43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmY!h57#kN;o?%j3LNt?a}#rl6%vb56_Qdj63a64(s3v)E-6aPOHa+I)WbAM#m!yE zM8zjHH#b#BA-y!UxL8k5Pa!hDRJ|w_hjEyOAVgB~GxO3Fa`TH)6^av+i!#$PlT(ZB zxnMvgI6y~9Nyo|4)=-6kkpTjX7#YB9E)e(M|NsBXnHU&AG$SK3GXnzyR~iEY!;k;} z|7S5UFueNz|34RuF$F5Y1!J6nsem!c7#J9yfwX`GUi|<6pM?=(78gk1&Hw-ZnHU)u zKs47ms9unYM<6Y5222YVlp(>$zyMak#>l|%y!>*7jKs231w#V^9RmXch4RFrqRjlFVjY;G(gKCFqWoM1 z3saE1o`OPnszP~YP7X}IxU?uWr&6JyD77pxGe-|%G6t#Q=B{I+5}8<@r>CF*(~6-A zt3YsSUW!6SVosVuMt*Lp9v2L#1PACSDd{+Q+8U~;_;~9md6lN5rxxp&TNx?oINB;X zxmh8Js4y@xK!7tN1DMSP;{N;p|9>451H+&H|NnEr7%-ZdnSp_Uk&#P@fq~)2|NsBh z7#JAdfE2}Q6-qKP^U@W{6N?p+ z^Ye3b(A6ZBmMCPFD3l}?m!zgB2Diq`-X6B)*%g;%H*r$l<5M-W;o4byQil=(6 zLVA8)UZO&AZent_LS=rb9v1|t1PACSDd{+Q+Jd~K;^VEO0Yo!1fn*rD+!+`cSQr=>ycrl6e*FLc zp9{vwhDvb37!zSCV2oe}28J&nEg*q!|NsBr&%nUI#=yY91rh)mc94OA;SaJ3kN{W< ujB%U+;v6m*<0=CK!zYjykP48YCt|74JXAPf=!88(%HfdM4Jl?hb}QUP|!M5w@Q z1_lNWkQNwYIaGpcI#lmm1_p)?AX{Jzki-j+0F2Sgz`*bhBmiT8XpqAgS(riLfZ~Hc sAcY|Jffz8FD;MgwV5p^xd|V)>g4_;s7y}c?;S3B6qe05RK&2oB0Qd|-&j0`b diff --git a/Apps/AfterEgypt/Comics/Moses21.TXT b/Apps/AfterEgypt/Comics/Moses21.TXT deleted file mode 100644 index ae56abbdad1b39588a33ff960f4a466f25e604f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmY!h57#kN;ZlGB&pd^aj8uixyc8XU@>KPrRE3n%;u3|-JcJUEe0e5FK}KnYJxn7C zt>WgcW1`|(kz87ws*sz?1qUj@0Xj-bI!>OphAIq<3=r^*fdR~BW@cbu-~x&L`Tzfa zJre^1h-PHu5@%pw`11e%e^~|wh8O?;|L1}+EEyOWet-mEjCckHhF2f~7(Px!{V)L-qnCk! X;R47E7^9Yff#DoT0LB2(Agv4l2u_s5 diff --git a/Apps/AfterEgypt/Comics/Moses22.TXT b/Apps/AfterEgypt/Comics/Moses22.TXT deleted file mode 100644 index 9ce0208e4ff5e7710c3911f4d202b688cfd8539a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 zcmY!h57#kN;o{;_zyv|51*wT83W;eYsYMF8sX7XdiADK&ItogWi5cao8A^KCG9fh>aqT&*)F2|~!3l*pY2k0m%={R}Xf&xv&$6H6qwIV;I zv{=X3%Fskf$I({F$;}E`NQH}wfsp|M7BDe@+04ug3=CW#v48*n|F36aU;xn~{0s~X z%NQ6Kru_f^A0)Yhfq|g_%09rrz>o!Hw=p8vix?RgQlR3?7#SGikk|oG_5wx*1`jBE z8Uunofq{VmrUt~0fT{tpVP?)ias$Y1F!zAilc4HFxEUB2N*Ea!il72nNbC$o28J3W z@h&JkkCB0)56X66La@D<7#P~1;!#Wt3_eh{3lqY8kb0P1b&L!QB~Uetj9ldm3=E(C z|NmbLrMXI>j7kOuh8zF?|L1}+iWwLfPJjep3=q8uBv1&I$!B0-_y7_pfC}U=Ffgov z34jyE<3ZFOs|Nmdbz`*bVBmiT8Bo2TCV2mXU3=Gde0x-rr z1_p*#Ab~{;3=ANpAgxP40xO^b3m6y}zycsMKn#$|Ss)c_KuHK{?IDl=Na?cw|NqZn hU|`q+5`Zy45xeXE|No3^Tp;Fx|NsAk(gw(41^`ZrSl$2t diff --git a/Apps/AfterEgypt/Comics/Moses23.TXT b/Apps/AfterEgypt/Comics/Moses23.TXT deleted file mode 100644 index 392a6d801d69b1ef0007bc5eecbc779aa56b77e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmY!h57#kN;o?$22A&Ef`8g>HB^jx?3VHb@3MKgp<@rTLm8hypG7?J^%2U;gQWf$` zOLX%}bCXhwQd1PrRF&t0^ylZLDkP;QCzckcDn#a&su!iADl5+{$xtXQ)^OzwjKre!R2_w)%=C;BdoCzY2@cRvQqpnqv^7*=U}S)RZww4z zHZwB=0|OUG3`Ep3F)(m|WEi=e7#J8>7#JAb7#J8n{r~@;3&zM}U|?VaX@W6U!BoH) zAq)%*??75$0#~4Bae)Lr{Qv*|8Uq8vFOZ5gP`w}luof8O4$Kx9;}gtKkP484o-i;l byaAa3W87n4V7LVmfH5w?1YnFaP%R7qt`M1n diff --git a/Apps/AfterEgypt/Comics/Moses24.TXT b/Apps/AfterEgypt/Comics/Moses24.TXT deleted file mode 100644 index 9043c907baf007c67a4f35a28c339d1ddbe6a33c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmY!h57#kN;o?$2fbdlHvQ&li{1Sykg`&)|)FOqFe1+tq{NiFggd!C;cO4TI=ltAM z-TXX71%;4|#1i#lg+ztqqSVxEJ!JC`n((k9^Gnr>QWZ)vQWbLZi%S%W3-U8_Qd3Aa zC#fj0q*zBGwJfzrkqZh`f&+AvlysatZ9zU&@$uGC^2#sHC{5Hcu`;w!(s8s^a&ogm z7E)ngWPpHg3=Cj4GcyAN0~bgPMAS1uIE;*31`G@gEDQ_`CJYP=U;h99&jn)yK_$3g zj0%_v7{h^qf#DlSO9@nF9s>gd8_1qA1_p*t|Ns973BXl=1QswbFuVh4fiYIVw7?kK r7#J8{fmAGFU|{(0|NnoG1c>H>F;+1!FgyUMfHCI41YnF=Q0o~0UO$>T diff --git a/Apps/AfterEgypt/Comics/Moses25.TXT b/Apps/AfterEgypt/Comics/Moses25.TXT deleted file mode 100644 index 84ede046dc3be6b8fe8b637bb3cbda4fb1da5bca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmY!h57#kN;o?#Nf#Ce2qDmbFPle?C(wvk$^%8}m)WqZrh06R=h2s4DywoBch(b^G zvQ&kn)YLqMq{QTG-JJaN^wboE^30M9kk+CSh^pko;?!b2kii77ikrKRiHdtZ*ffQb zd?W6jT-^=4Pf8>v6$=N^pRVl9G;-r!C0C zDn8yiO0E_8DW%0ah89+a#!5Plwn|QJRw!aBTnvm15Fo+G0A_Q6xSR|O4E0P53?Q13 zk(r5sfq_e%fq{XUfq_Avfq~)k|NsBFV2ntp1Q(3a%fP_!6{G^juw-Ch_y`jK={?B6 zz`zbNv>z%168H^L0TOus|NsBP3=9l!K>{$wX_yum<36$qkfCQ`0x-r!1_p-PATwZ$ i{V)L-V>e6-$k50C|Nn>4Tp-5l|NsA=WME(b(F_2m7PjXA diff --git a/Apps/AfterEgypt/Comics/Moses26.TXT b/Apps/AfterEgypt/Comics/Moses26.TXT deleted file mode 100644 index 2007254c45d94ed65cc68bfeca4a71f70a230c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmY!h57#kN;o{;_KnL#mDLM+}8I=mTrNt!*<*5p}si`Fj`FRSt`K5U!iJ5uD_L!PH z)pHfnQ%g!R^U@Vc^79q)b5ius4OUQbbJsCZiOermD9Omo%T}n&FI6u}1*ui!f&-P{ z039VI9Vbs)LlrItMg|CwVPpWa85y`h0wAKEi2=-EW@2DqU}WUVWME+U_y7O@Tm}XP zkPuuTn}LDh)&KwhxnPWR1_p*JAORR7m4Sib1xNtKNM>MQ_yZDvF+hfcEe2`1_W%EX zkXidcDnMF50w9$KU;?}T|NjqCxdkKuQo0AKo0V7LJi0GR<&5zoNDa1JB@ ZV}PuMtAH5_Qpv~$_6^8FkY64pg_4X^g`&)|)S_aA%seo!peR2# zvp6+H0cKocUW!6mPJX#Ud1gt5LT+YGwgN~fBR?+{WFFXMU_!;sUB^Vlu|y#!HLe=Zm!5-Pz3WArjGFnk56fH5o?7#Kdn1VDNZGB7Z(gADD5%76rZgH(V7 z-v9sq|1bjs!&{I5jBy&K1;)6KtO8`{S(pHfagl+6;Wo$&7-K(70LIu2(*iQ|@&Et- UVKf(r@%sP&|0fw37(g@w06xmbF8}}l diff --git a/Apps/AfterEgypt/Comics/Moses28.TXT b/Apps/AfterEgypt/Comics/Moses28.TXT deleted file mode 100644 index 8369bef253aea8e5a0aeaeef2d990a80d0d3d325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmY!h57#kN;o?$&06jfD1^?{CN*#r~{BniJ{8ELI)SMiJM1`#U>{J~E_xuz+h(Z-N zcO4TIM}?xqq@+w8g+zsdqRiCd5{1OP6oo{EjLd?9N|>1t4MdRTsd*&|nRzAo3W*9y ziA8#PdR%az5*(nTq@?5IX$x{K+`YI>RdI7y2~Slh&o3&fR7gz9FD+51%r8|aE=bKw z$;?YvD9O)P$SqCIP$2BglFZyxg~Xivyi^?p-~8g#Vm-JXxcj&e4m47Mh%zuTKtLQL z1DMSP;&L)DFw`?KFo0-AMrI}k1_my51_lOZ1_lOw1_p-D|NsBzf-xeY5?nAwF9QR^ zSC9%A!;*o4;Ui1{r1u~L0|PtA(0-^4NZ>a}1xVoi|Ns9FGcYi`1qr|yr(s%PjQhwc zK!%=$3BVW^85kIDgUo<2_QM2VjNLFTAVVMj|NkFGbAcGI|NsAgl7WE%L^HB+c{4CD zy!!wD|3(G|hDRV{VT|nz3=9uI0x$-Mz6BEiF*Y+WFo0+VP)LFT_y}@n^Fc!!M8iUR zD@YXs0|Ur~&p<}O7&{pl7*2o$V2r&`m0U0ZP*|>lsW|ul|9_BKYhVH(21v^skO0Wg zbx;+@Kms78AO3X)<2`56Gv`nfLv diff --git a/Apps/AfterEgypt/Comics/Moses29.TXT b/Apps/AfterEgypt/Comics/Moses29.TXT deleted file mode 100644 index 09f76f243f162b4aed35467ec720a7c3064aa3bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmY!h57#kN;o?#N1NZzC9fipJQia^i;?lg7)S}{&{QMM!@{CFaPpFcN#1w_xN`;KX zyp&>v%shpXj8uih%p$04N@-DMUOHGXDY2v^CsmJ=Q^n0)$3!JOqf#LyU!gL;RG}mz zGcQ}gQz0cYMIkT0L?I)wEEOaHH3RGtyhK`NdPWJ@64&&~f|AU{ykdJU2v7+Q&{0y- zaq_eU`AWsdTSv*YB0r_HSjW)Z%Fs|r$I({F$;}EyOofYqkpTiE7#YB9E)bWKfq|i( ziGcw`GcqzWF)%Q2sWUJzFf%YP=rb@deE$FcKNpM<36jIkdk0AuWiX#pAf`2YX^Fq#X*c>VwX|C0<13?P~T0F$S-YybcN diff --git a/Apps/AfterEgypt/Comics/Moses30.TXT b/Apps/AfterEgypt/Comics/Moses30.TXT deleted file mode 100644 index b79a44370e92e8a354730a364c01e8adaaab6945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmd<$;^I;u41Dv8Q;T&JN-|OviW2kEQ;QUe6Dx}qD)UPfk`wdPONcR}Brzvjp**uB zL%}^iMMt3|KP9nJ4`e?Cs{{w=C@JYUdDG3=F#&7#N=Y|Noy0#@NZgz;FU20AuWhs^o$R9Asc%SOrsY?*IS) zAhXuM1V9XsmN_5+kfH0KDvp5!KuST3{R|8YH$Vcf85kJ;{Qv*|Edv9?J&*v5@sWXn z;S5Ls#`p?z$9t&EPX-2t6)+X2{{R0Ek^l>QW?*1g_W%EXkk(ls6(9kS49IYhO0Mrv z6(B=FD!HCAFfjc1|NsAE1_lPO3K-))0|Ub^kQoo5GA|hz7&d?eKq^2k1gQY|8f*rL z0g?cFAH)DDea^tZa0#RZq;%K+|Nn2p1VAAL3LsE;fXrfK;{pXQ$gLnLHjtkI(+~HF diff --git a/Apps/AfterEgypt/Comics/Moses31.TXT b/Apps/AfterEgypt/Comics/Moses31.TXT deleted file mode 100644 index bb81ce4e859cea782bde20ab7de0a4e93ca3a42a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmY!h57#kN;o{`v46sJ9RviV_B`1X8N?c%| z5*(nTq@?5IX=|v$#lXk_0WypXU^XKI7f1j^)H5-FIm}E93=E8nT$v0E4FCTB|DVgi zzyK103uH4eFueNz|34Rukz!=F43=Drj0x$;1aInQ7E!Y14 z{|_>2A4mmA3rGN@@&HU=*Z=?jK`OU^1VBpnK((BL34j>+3=9l6Kms5$Kq}%H7#Plh b1Yiu1wQvkEDqEm26!%P+}DE#gv804w55&M(a?DXLT`$yZ3pSI8`}=Yj&2 z-~b&ZB^@VETaW`77#Scyf{_8t<^pj!85kJqnHU&AG$SK369WSSmpTIj12Y2ygFXWT z!{`71|8v0@kx&UP7^9bgf#EAi1&m?Iz`*bkCIHfVkb!}L9b{-fR0bsQ8>9jx@c#e* z|A!eE7~X;eV2sl+EilG?WECJo&%y*?jEf8m47WjMz!>{s0x-sIm==(skN^Mw52Lw2 QjMxAF|3AsVzyP8d0N%rvPyhe` diff --git a/Apps/AfterEgypt/Comics/Moses34.TXT b/Apps/AfterEgypt/Comics/Moses34.TXT deleted file mode 100644 index b709e14699537be213fdf7f3c0b9d40378267770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmY!h57#kN;o{=-R4B>F%*$3NPgTfCO)F7IR7lP*Eyzjb;w;WcEyzeMN-0)IO3ld3 zOVLqCN=(jH$jsy7bWN`;DAD8OTyAUN^pRVl9G;-r!B}mTq-`^I!f-Td8x&j z#X2U2R)$7OI*ztVPHtAHf+}1Lj0_MU!N>q+bAh;=3=9nQObiSlnvs#2iGhKEOPzs% zfti7UL7#zv;q(9h|G8j{NT>uCjM2-$!0;8M0>-dpU|{$N69DNw$iTqB4l=YKDgzSu z4N?ITc>n+Z|HBLn3~xaKFve+^78v6`vI>x)XJG;`#zh7OhT9-BV2u4R0T^R9Obf`+ Y$N&HThtXUh#_Rw8|DR-FU;xn!0EYvphyVZp diff --git a/Apps/AfterEgypt/Comics/Moses35.TXT b/Apps/AfterEgypt/Comics/Moses35.TXT deleted file mode 100644 index cc064f39225a60e8d6b9c3710f95dd0a67b6d1b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmY!h57#kN;o{;9PgN*RELTWWC@D%!EG{idRVdELEKtbLQz*$uRY=M&Dap^};>=G2 zbAwV-6oOL|^%NAG6Y~@z^Gg*95{pU{GD~z664Mhi^X$2}IKe>0&0WVtB_tzN!L_im zpd>RfuNZ6%NM%WWz8)70s00V-C@JYUdD?;oQ7$EG43O)02z7~CIDkxWME*p4Kf49 j*bftcF?PeWfDC>7|Nnm&%>`n-{{R2~Nd^W65X}Gp-btH< diff --git a/Apps/AfterEgypt/Comics/Moses36.TXT b/Apps/AfterEgypt/Comics/Moses36.TXT deleted file mode 100644 index 37bf698ce708a177a9f8d4af205705de6a373029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmY!h57#kN;o{=-tyCz^&r>K$%u`4#Ppni(E6UGR$jHx4RVdF$&Ew+qR4B>MNm0ni z%vEsDPf;jI%*jqo(c^*xmEZs!B_$mvPg{_2Tq-`^I!f-Td8x&j#X3etRz^xXjUYnSp^ppMinl^Z)<< zxnPV)s00^`(aXTV@D-#2#;{~yVE70V0O>u*z`(!`GPEBm0}}WRQUMZp|NsC0!wd`z zZ$Sbu#%Y)q7~?*&3Xq{^VFED5MFs|j+aNPwjQubH7-Kg~3&_yN|NsAo(Oe+L>;M1% LpJZTQ0MQHpd@qy9 diff --git a/Apps/AfterEgypt/Comics/Moses37.TXT b/Apps/AfterEgypt/Comics/Moses37.TXT deleted file mode 100644 index 5b9984167bec3d1184a9c5d418b8c012af40f238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmY!h57#kN;o{=r)YH>b2+ycgNXgGrFHxw>FIC7*%uZD($w*ZQF3scOEG|jROHn8; z$;`=7D9KkS&d4tZN#^Qta;mtw>zJtcXXq#-=jW#C=I1FYD1_&i=A?j(;o<~?;?$Co zoK%Ih{33-!h4R!Ag`}LsyzJBxdoCDI2@cRvQqpnqv;{jz#m8Gm$*VLaJ+)ZJ%*xnY zNypJv$;r(MSxAM8i-C~=0wfq2z-%rMmy>~kp`M9>0Yo!0GBYtSFmS0eFfcGPFfiyd zFfe@n|NlQ1j1dWy;DRxF85kJ8f>gj5mJAFGA7KI@y$2Z>7}!CE_CsYr0>42jKmzao z|NnoOfq~&INC3t-4buW++(%XcGW0A=0LHk;z`$@DWCo0}A0_}}?1pIp8T$DD|Nk(W S3&eQ+|NsA!3=9k)ngIZNV5S@Z diff --git a/Apps/AfterEgypt/Comics/Moses38.TXT b/Apps/AfterEgypt/Comics/Moses38.TXT deleted file mode 100644 index 74a2b31c7e9567c726142f177b99b2ffd3d3ef44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmY!h57#kN;o{=r49`d`QOHbFD9+DK&Cg3!C@x7&%qdnV$w*ajEXua$;sgT~H+LNq z70(j&Vukel5(S_9a$T>)`~ut)pb95S*A>nwq0yW@VzJ z<7lho;oQ7$EG43O)02z7~CIDkxWME*p4Kf49 j*bftcF?PeWfDC>7|Nnm&%>`n-{{R2~Nd^W65X}Gp(vX=p diff --git a/Apps/AfterEgypt/Comics/Moses39.TXT b/Apps/AfterEgypt/Comics/Moses39.TXT deleted file mode 100644 index ed8ed4260dbaac0e0a3909ee514238bf0a531e25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 992 zcmY!h57#kN;o{=t^i&nasezz|{|x0SWvDsQ?MQ z|NsC0VFm_PckqtfM~GSL18o+VBly0g%AD!1En5NfSqH2q%cMXW>BKza$#U#NMm4N zh+tq~&;z9b7z32jzydG^NYxKe{J|Ir3=9n4KmssE2?GPe36KDck;1^ha10~>V}Q*1 s0}_BSqCjo}Sqo!0!Q263crh?Acz{&E7$6sCfPBFx3exoH|Ns9C07{@l%m4rY diff --git a/Apps/AfterEgypt/Comics/Moses40.TXT b/Apps/AfterEgypt/Comics/Moses40.TXT deleted file mode 100644 index f8432f85eb83a9245724871890d15779c61ee02c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmY!h57#kN;o{;9PgTfBEK5~LR4BSkVm(eyP8BzI9TS!C%;Hqt#NuK-E+|k54$x6j(sA;%1zE(! zz{mgr5{wLBHW!G?$-ux+&&0q0q8S;PnHU%txYQXK7?>Ft81xw!7(W01|DOxSh=fXT z!5F;^3=CgEDqsvt1_p+YFaeO>gA5D|>>xw?p)w$W-yjtrf%pIa|3A#Y!0;9%0Arkn zX@N2BBdY)zdKM-CV_allV7Lu31IE}76M!*x!?b`5ef;gN$>-waEY3+ROD(EY$jnnH z$w*a5%PcA`Q7FhsOis1uRB?0HF;NN0S13tMOwLfK1nJJtO;yNE%*#tHD%Rsd0F~eX z9VI0lCr?|jm0Vm5j0_N<$jAU@bAh;=3=9nQObiSlnvs#2iGhKE-H(BR;otxN|GCr| z7#Nrt7#Q>!7#Kc-1YnFvs00^`(aXTV@D-#2#;{~yVE70V0O>slGMRyafvX=X0}}WR zQUMZp|NsC0!wd`zZ$Sbu#%Y)q7~?*&3Xq{^VFED5MFs|j+aNPwjQubH7-Kg~3&_yN X|NsAo(Oe+L>;M1%pJZTQ0MQHpB#D^C diff --git a/Apps/AfterEgypt/Comics/Moses43.TXT b/Apps/AfterEgypt/Comics/Moses43.TXT deleted file mode 100644 index 43fdfb889dcadc6fcaf05be255b93ca897655130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmY!h57#kN;o{=r#{B6eU)s78UDp zApw=(039VI9Vbs)up_v*7#JBKK#`FF%;o}dIT;uj>X{fAKr|yGGZO;?1G^ss1H-@n z|NnETGcYhPGcYjdGcYiG1_{6zkx&UP7^9bgf#EAi1&m?Iz`*bkCIHfV5M(j~0|Qq- zR0bsQ8>9jx@c#e*|A!eE7~X;eV2sl+EilG?WECJo&%y*?jEf8m47WjMz!>{s0x-sI cm==(skN^Mw52Lw2jMxAF|3AsVzyP8d0G-X88~^|S diff --git a/Apps/AfterEgypt/Comics/Moses44.TXT b/Apps/AfterEgypt/Comics/Moses44.TXT deleted file mode 100644 index ec952b6865a4bb819b570b815974dfbce13959bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmY!h57#kN;o{=r!7#Kc-1YnFvs00^`(aXTV@D-#2#;{~y zVE70V0O>slGMRyafvX=X0}}WRQUMZp|NsC0!wd`zZ$Sbu#%Y)q7~?*&3Xq{^VFED5 rMFs|j+aNPwjQubH7-Kg~3&_yN|NsAo(Oe+L>;M1%pJZTQ0MQHpnb)7Z diff --git a/Apps/AfterEgypt/Comics/Moses45.TXT b/Apps/AfterEgypt/Comics/Moses45.TXT deleted file mode 100644 index 1ba3a3ad8e405bd5d157cacae5cb04b5ef105e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmY!h57#kN;o{=r~kp`M9>0Yo!0GBYtSFtGbEFfjc4|NlRiIs*d(GXn#I zJ_7^8XOIAl5eb#xf-!m-7#O~SRKOUP3=9k(VFDn%2SFw?FfefSLuEh$zdh R#CZMx|NoN=3=ANe0RTqzmc;-7 diff --git a/Apps/AfterEgypt/Comics/Moses46.TXT b/Apps/AfterEgypt/Comics/Moses46.TXT deleted file mode 100644 index 28644a6787448e4d68375121e35c2c562a7047e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1278 zcmY!h57#kN;o{=t^i9mmOH{}#R>;dQQ7Fwz&Ph$o(@`kOOwTB>=j2pzbJsCZ2?Fu- zxS&8KI6y~9Nyo|47Gwg*3>7zbm5_|oJRODdj7o)+{M2HFl*CGf{G1epT#)fxoSeCd z*{KSp#R|ol$=Q0GoG_DJkd-N97IT55I5|1t4oR&@PAw==$j^hxlw_nT1ScjXC6;8s zUBrcOl939?m0;sl9Meitixh%O^HTE5^Xx$;L%idYpP#L$px~LNP?=wfdND_GBPtUFfg$DF)%Rv`~UwxmpTIj12Y2ygFXWT!)K5Hj1dWy z;DRxF85kJ8f>gj5mJAFGA7KI@y$3-iGcYi4^+RPq0>42jKmzao|NnoOfq~&INC3t- z4buW++(%XcGW0A=0LHk;z`$@DWCo0}A0_}}?1pIp8T$DD|Nk(W3&eQ+|NsA!3=9k) cngJ9TpfDN@FmSYh!UunVfzrxofRT{G0OgXs6aWAK diff --git a/Apps/AfterEgypt/Comics/Moses47.TXT b/Apps/AfterEgypt/Comics/Moses47.TXT deleted file mode 100644 index 881f4d2b3b1c2cc9848008c0cdd944657de61630..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmY!h57#kN;o{=t49`d`Q7F#LQ%FxODOM=SNL47$FDfokC@9U#EY8SH%`4I4RB?0H zF;VeN%+Ab9SIA9ONX$zws?_5`0F~eX9VI0lCr?|Dp$v=+5TMA&0A_Q6xSR|O4E0P5 z3?Q13k(r5sfq~tRfq~)Q|NsBF)EO8Um>C!t^cff!K7#~cj7X>i7mU%%z`*boqyomU zWME+U2onJ5JqR+Hfq{XmA1VV9_zhA45_tdr|Np}b3=D5U0x-sDm=+l0KC%jsp=V(N tFvdj&28P=pGhmGUFaa22H%tr2(8vG(|A*0BAja$e|Noz4U|;~z3;?JMk4yjn diff --git a/Apps/AfterEgypt/Comics/Moses48.TXT b/Apps/AfterEgypt/Comics/Moses48.TXT deleted file mode 100644 index 8bc0f4be0934892eeca6cd137db8da54d7a0f3e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmY!h57#kN;o{=r9SgRY=UqQAkOwwC7ZDbJsCZ ziOerm&&g3JE=epZQAo>4%+1V8*W*F}mEZs!B_$mvPg{_=42%pApvcGoW^;kKoD2*M z^-K&5AexbpnTdgcf!&XRf#Ki(|Nptv85kIt85kJ!85kHog9KoVNT>uCjM2-$!0;8M z0>-dpU|{$N69DNw2r`+0fq|n+Z|HBLn3~xaKFve+^78v6`vI>x) wXJG;`#zh7OhT9-BV2u4R0T^R9Obf`+$N&HThtXUh#_Rw8|DR-FU;xn!0AMGN7XSbN diff --git a/Apps/AfterEgypt/Comics/Moses49.TXT b/Apps/AfterEgypt/Comics/Moses49.TXT deleted file mode 100644 index cbf6c8f0fce52dce130183fbc6652371f7512996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmY!h57#kN;o{=rv16gmEZs!B_$mvPg}5&U{h7x+*Kk|6Ek!aN-`2l6v`8e6^io}lJoO( z6p?gtA+#E)aB(p(GC+VLBLkSt1>$ltFfi0JF))B=Mn+~P1_lOpKL!SdfB*mg=Tc{2 zU|?ooV9;k^VE7CYfH5MW5?nAwF9QR^SC9%A!;*o4;Ui1{r1v1mWCjKXu70QtNZ>a} z1xVoi|Ns9FGcYi`1qr|yr(s%PjQhwcK!%=$3BVW^85kIDgUo<2_QM2VjNLFTAVVMj l|NkFGbAcGI|NsAgl7WE%L^FT_0~AK10S1m1Q25{vFaW-25D@?X diff --git a/Apps/AfterEgypt/Comics/Moses50.TXT b/Apps/AfterEgypt/Comics/Moses50.TXT deleted file mode 100644 index cfcb46418b90a9886b78718d3607c1b34751614b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmY!h57#kN;o{=rJuU=L2@cRvQqpnqv;|qgz{mgrii`|k zHW!G?$-ux+&&0q0q8S;PnHU%t*!>t782nOQazG>^8Y$^G+A2A@Ss@FlaB(p(GC+VLBLkSt1>$lt zFfi0JF))B=Mn+~P1_lOpKL!SdfB*mg=Tc{2U|?ooV9;k^VE7CYfH5MW5?nAwF9QR^ zSC9%A!;*o4;Ui1{r1v1mWCjKXu70QtNZ>a}1xVoi|Ns9FGcYi`1qr|yr(s%PjQhwc zK!%=$3BVW^85kIDgUo<2_QM2VjNLFTAVVMj|NkFGbAcGI|NsAgl7WE%L^A*YENY~7 diff --git a/Apps/AfterEgypt/Comics/Moses53.TXT b/Apps/AfterEgypt/Comics/Moses53.TXT deleted file mode 100644 index 469e747aea4a1f5062b74767eaa431ee9c126a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmY!h57#kN;o{=r^sQ9LNX$!7D9_JRFHtBdEy`2KNi8VKFD>TcEYC>IQ}9$MF3C*J zR>&+-$jnp7tyDuCjM2-$!0;8M0>-dp zU|{$N69DNw2r`+0fq|n+Z|HBLn3~xaKFve+^78v6`vI>x)XJG;` s#zh7OhT9-BV2u4R0T^R9Obf`+$N&HThtXUh#_Rw8|DR-FU;xn!0C+*3a{vGU diff --git a/Apps/AfterEgypt/Comics/Moses54.TXT b/Apps/AfterEgypt/Comics/Moses54.TXT deleted file mode 100644 index 865773ee049e9b91a0e986ec184cc340fd3dc8e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmY!h57#kN;o{=rv zFHOoxRVW5?@{71Q!2rZnNX$zCi|cVgfJ$(Hj*^m&lcz1%0xqyYD&eUL#TogfIVlQB zsS3sU3OS|8*_ALYAdLuZMj&@_F)%VffFdIUn9T*^axyS5)H5+KfM`ZWW+ny(26jIN z28MtC|NrMwXJBApW?*2@XJBCX3=)7bBB2soFh(x}1H)I43K+wZfq~&8OaP?!Ajo6} z1_rKvs0>KpH%J9Y;Qjyq{|_@TFuVl`z!;}tT40R($SOdFo`ng(7#A5B7;b~ifHC&N v1YnHaFfAZMAOHXVA4YS57_a~T|9_H!fdND_fC2*)Mxy}+juue(;14hWmy#1? diff --git a/Apps/AfterEgypt/Comics/Moses55.TXT b/Apps/AfterEgypt/Comics/Moses55.TXT deleted file mode 100644 index 2063ec15cc6657b82f9d5b177bf443f40d7cafab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmY!h57#kN;o{=rjIkdk0AuWiX#pAf`2YX^Fq#X*c>VwX|C0<13?P~T0B2l|_W%F@ diff --git a/Apps/AfterEgypt/Comics/Moses56.TXT b/Apps/AfterEgypt/Comics/Moses56.TXT deleted file mode 100644 index 7ab65850f8d83781d34cdee761e8b3d1d5a7bda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmY!h57#kN;o{=rV-~a#rxzrgL7?>Ft81xw!7(RmpV2ntp1Q(3a%fP_!6{G^juw-Ch_y`jK z={*QCnSp_Us~;)@68H^L0TOus|NsBP3=9l!K>{$wX_yum<36$qkfCQ`0x-r!1_p-P zATwZ${V)L-V>e6-$k50C|Nn>4Tp-5l|NsA=WME(b(F~x#0EN+LfPte06h8O^3;-Cj BBp?6) diff --git a/Apps/AfterEgypt/Comics/Moses57.TXT b/Apps/AfterEgypt/Comics/Moses57.TXT deleted file mode 100644 index a5d52259077aad4258e2515a8e210e9fbbbc4628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmY!h57#kN;o{=t49`d`Q7FksRmez9&Q>T-ELJGVNG##vC$iG==2+ z(xT#2JuVnf2@cRvQqpnqv<0~UBnmN1#oiudF2vZ7j8ui>)Vz|?qRiA{h5R&yq@4Wx z6ovdesJUPlC+4Mq|pG%#Afq|KU zfkB^vf#EYq0LF-fN^rp#y$lQtUqLEh3`+(EhL11-kluqJlNlHoxcZ?oAc5Z?6(E84 z|Ns9#%)r3#79;>;oQ7$EG43O)02z7~CIDkxWME*p4Kf49*bftcF?PeWfDC>7|Nnm& p%>`n-{{R2~Nd^W65X}Gz3{V)21{gS6K;eTwz(8qbG{8tmVE|L)yqW+2 diff --git a/Apps/AfterEgypt/Comics/Moses58.TXT b/Apps/AfterEgypt/Comics/Moses58.TXT deleted file mode 100644 index 292feeb275dd917e7b435643f7ee03bc9a29429d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmY!h57#kN;o{=r;p&D9=bO$w)0y$S+dJ%P-;LwOIEh)-ROfJbR zOV#6o1C`(a9VI0lCr?|jyjX0p+KoWYR`K!H zQF5)wPbn?dF|sl=Qqpm>RdRB(LKaft;$mQAfB;2C1~8io#N}jQV5nzeU;xpKjLb|7 z3=Hgk3=9na{{R2arOv>>z|6qFpwGa-@EIfkV?;tFxL}N41_p+&AQdo%B?AM)N0DhCcrP|38f80x@3y|Ns9a0|NtyW&i~SD2zq}3>+<>@WCHo0Ht#& AbN~PV diff --git a/Apps/AfterEgypt/Comics/Moses59.TXT b/Apps/AfterEgypt/Comics/Moses59.TXT deleted file mode 100644 index c98e9e350d40d627e2d40c4d3c4673bcd9130b1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmY!h57#kN;o{;9PgTfBO)OF<$w*ajO|L8{$xO^ER>(*!OI1ipP0i!tEGR80$;?Yv z$VtpiQZH6W%E`}9QOM5&X~-<%;!MfUFDh0@ElVw`RLILr&nQtS&df_rRVYtY;Nr|l zO)Jsk1OXK{cO4TIb*I$SJcXS6{A`ek`DLj^3YGb#MO+{ioSelO`K382sYN;v>nrn1 z?YTI)pg<)!Ku1YQ$H~(c{#FBvgV6#^_~WVE77B0b^J)Ffe?C34rt-1ewgh zz`)fHl>rI-2B`oEy#N3I|6v9OhPNOA7~?cd3yg6eSp~?@voHY|<01nC!)=fmFvfnE g0F1F4rUhi^pF diff --git a/Apps/AfterEgypt/Comics/Moses60.TXT b/Apps/AfterEgypt/Comics/Moses60.TXT deleted file mode 100644 index e2e7df16e7ad1d5ba017633fe1987f39f3ddccb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmY!h57#kN;o{;9$w*ZQ$jHpeEH25+OD$F?Ps}S(D9KkyN>#`&E#l%#%*m-#NK8-6 z%quQYD9K1wa80i)D9KFBE7nm+DlJjq;w;HXt%PgK&dVX{fAKr|yGGZO;? z1G^ss1H-@n|NnETGcYhPGcYjdGcYiG1_{6zkx&UP7^9bgf#EAi1&m?Iz`*bkCIHfV z5M(j~0|Qq-R0bsQ8>9jx@c#e*|A!eE7~X;eV2sl+EilG?WECJo&%y*?jEf8m47WjM kz!>{s0x-sIm==(skN^Mw52Lw2jMxAF|3AsVzyP8d00`-_8vpRVYZTR4C5RP0i0s1?f-8SI8`}=RyFL-~b&Z zB^@VETabkej0_N<$jAU@bAh;=3=9nQObiSlnvs#2iGhKE-H(BR;otxN|GCr|7#Nrt z7#Q>!7#Kc-1YnFvs00^`(aXTV@D-#2#;{~yVE70V0O>slGMRyafvX=X0}}WRQUMZp z|NsC0!wd`zZ$Sbu#%Y)q7~?*&3Xq{^VFED5MFs|j+aNPwjQubH7-Kg~3&_yN|NsAo T(Oe+L>;M1%pJZTQ0MQHpD8ZMs diff --git a/Apps/AfterEgypt/Comics/Moses62.TXT b/Apps/AfterEgypt/Comics/Moses62.TXT deleted file mode 100644 index a0ed0830037b3faf157fe3e70a3260cb22937c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmd<$;^gGybk9%GQSekROI1iJ$}dgNC{akv$d0|XplWB{|dKwJ(628KE&1_lt#$jHpZz`(%u zkb!}Lg@J+L2?GPezyJULbHNzj7#J9SfdpWTFANL}4?zMj#ybWEhVLK&7~>I43yg7x zfq~%@n_|NlJ$Q~<{K$iTqx7^Gq+$kz-E45t|w7=D5Tb}&GK11iCFih+UQ z$N&HTPcSer+yNoFKmxx(DnJ77|NsAgn1O-eEl2>yI1SSR zW86np0W$O~OaR8X$iTpG8)OEIu^%P?W9)`$0U7%E|Ns9mnhV5u{r~^}lMDS2c%1lZ{HwslFCeKqLsVKiRJ)=Y+zqCXl zKTW|ky|SQ0PsPn0>~@g*xwuq<19X&>beueGAwI(JlV7QBX$C|sm_%qWQej|ZfB;2C z1~8io#N}jQV5nzeU;xpKjLb|73=Hgk3=9na{{R2arOv>>z|6qFpwGa-@EIfkV?;tF zxL}N41_p+&AQdo%B?AM)N0DhCcrP|38f80x@3y|Ns9a0|Nty UW&i~SD2zq}3>+<>@WCHo0Qg=bcmMzZ diff --git a/Apps/AfterEgypt/Comics/Moses66.TXT b/Apps/AfterEgypt/Comics/Moses66.TXT deleted file mode 100644 index a62b1c9fd78db431741c0100bf7b8ee09193c381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmY!h57#kN;o^+UFI7lSEm25R$VkjAN-izYQE<;svFGIERB?0HF;Q{JOvzI(QSekK zNzKVosLU@_$jevY;sk@lyv*FhoMMIiJcW{s%wmPy{L;LV#LPTL_#IFV2oY{28OR76)=V+ z0|UcHm;gxcL6FG|3=CZTP#KWGZ;%R*!2AFI{~u;xV0a4>fH6+Pw7?kmkyU^UJqr_n tF)lJNFx&>20b}fk3BVY;VOl_jKK}pzKaA!AF<$@w|NkTd0|SU=0053>pF02m diff --git a/Apps/AfterEgypt/Comics/Moses68.TXT b/Apps/AfterEgypt/Comics/Moses68.TXT deleted file mode 100644 index 1ac57047ef71f907c6a149cce5ab95f730785e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmY!h57#kN;o{=t49?e4D9K1w$W6@4OH?Q>$j{GHNY76#Rw&O%ElO43;^fTCQ%F=O z$Vp62RVYp^Dap)Bx98+kadX!(QSmP*$S=+;Nd=owT#}lYt&p9UnU<=@g#aqS0Xj-b zI!>OpAPX5786ZHBkpax+0&zJR7#QlA7#Kh_BO@~t0|NuQ9|Hr!zyJULbEz{hFfcPP zFz7QdFnk6Hz!;HG2`(6;mw|!dD@X;5VadS2@DU~e(t8kOG6MqxS3gt+B=8%g0wnPM z|NsAo85kJef&^fU(=aVC#(iWJAVbf>1YnGd3=9mnL1w@h`(Xkw#%`DvkfD$N|Njr8 Sxj>B9|Ns9#$-uw>q8R`RWS61< diff --git a/Apps/AfterEgypt/Comics/Moses71.TXT b/Apps/AfterEgypt/Comics/Moses71.TXT deleted file mode 100644 index 6f89fc14ce2f8030bf7446b9ad90f2e235bc40f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmY!h57#kN;o{=t49-i;%qdn#EJ{@<%}dTnP0Z6#D9TLFDAD6oadX!(QHe|~&{J`9 zSK)#ImEZs!B_$mvPg{@)T%4Sq>Sd`4$@w`ssmUd&DGG@SNu|lzsU=*TocU=A#bERG zI60xlg=bXSBN>M<%t(cci-C~=0u&h;z-%rMmy>~kp`M9>0Yo!0GBYtSFtGbEFfjc4 z|NlRiIs*d(GXn#IJ_7^8XOIAl5eb#xf-!m-7#O~SRKOUP3=9k(VFDn%2SFw?FfefS zLuEh$zdh#CZMx|NoN=3=ANe0TdXZFnYrP2{35*aLr_3U{GRUVA#&Uz@Q59 z5{v;d8x*QsyBHW4I2afhwlOd;yaYLCCj%si55R2S!@$7s^#A|=`xqD)?toN)^uB{S zM-XJ_4h9AWeg+1HO$-bS3LpU(V>Z-!u44=g3?d8+45t_v7(h|Q1!G);3BVY)85kHu hL1us$;tUK7Cm0wQ#K7KS1| diff --git a/Apps/AfterEgypt/Comics/Moses72.TXT b/Apps/AfterEgypt/Comics/Moses72.TXT deleted file mode 100644 index b6554920b66af06e03d49ff68c2b0fee95ca62a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmY!h57#kN;o{=t49Q4Ua80i)D9KFBQ*h5uQAp1$OD$F?$wCnFSK&eeD!~CdN=iCTp0*&7#QAy1YnHQFfA~~ePk6NL(jqlV2q0l p3=FqHX22NxVFED5ZkQI3p^yLn{|}?NK#bS_|NlS9z`y{a835l%kZ=G1 diff --git a/Apps/AfterEgypt/Comics/Moses73.TXT b/Apps/AfterEgypt/Comics/Moses73.TXT deleted file mode 100644 index 91906fe3b344cef47dabf23c00bf06b68c1b14ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmY!h57#kN;o{^BPgN*RELTWWNXait)l*Oi$w(|wFXrOpOjIb&OwUs&PgO5URY=Uq z%`Yxd$S*BX$WK!!$w=kmUYnSp^ppMinlGe`i& zh=fXT!5F;^3=CgEDqsvt1_p+YFaeO>gCLU`7#O(vp)w$W-yjtrf%pIa|3A#Y!0;9% z0ArknX@N2BBdY)zdKM-CV_allV7Lu31IE}76M!*x!?b`5efUYnSp^ppMinlGe`i&h=fXT!5F;^3=CgEDqsvt1_p+YFaeO>gCLU`7#O(v zp)w$W-yjtrf%pIa|3A#Y!0;9%0ArknX@N2BBdY)zdKM-CV_allV7Lu31IE}76M!*x d!?b`5efjIkdk0AuWiX#pAf Y`2YX^Fq#X*c>VwX|C0<13?P~T039%hRR910 diff --git a/Apps/AfterEgypt/Comics/Moses76.TXT b/Apps/AfterEgypt/Comics/Moses76.TXT deleted file mode 100644 index b6270e8135d1e4c665a3931aa2d53bcec5fcfd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmY!h57#kN;o=O*NL9$rOet0*?un!GTI}fR2)qj+3XYp$ZoRBLf5|GBSYKTp%td0|P@n69WT?W@Kb$ zVqjok_hVpS`1k++e=cs8mSFOi_r;FIC7*%uZEER7lG&N-fUL%;VzB%u^`INL5J7EGjNh zD9A}nPPOOcI@7F%nS?+`V0&VpFsjJ zMkG{%3&!YWU|{$PQUPOFGB7ZFgb9H39t4@pz`(%O50wE4{06B23B3RR|NmhI28OpF z0T|;nObd*0A6W&+(6cZB7~>)X1H)~Q88F6vm;j8i8>R(h=;QzY|HEi55aad#|Nl=i JFff2<1^|MFlK%hz diff --git a/Apps/AfterEgypt/Comics/Moses78.TXT b/Apps/AfterEgypt/Comics/Moses78.TXT deleted file mode 100644 index 982bb9a43d53db6b3828a9dd0e24c138f1207238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmY!h57#kN;o=O>s8mSFOi_r;FI7m-EK5}=$w*c3$Sf(zEJ-a^$Slgwv*%QCbJsCZ z0jVg?$S=)FQ7BGLRVdF$EK%@ONKY(F<>CYbkWR;<#H3;!1s{JOJry^16)qT12@cRv zQqpnqv^7-WVqj!|07XUyFq;d+L_#IFV2oY{28OR76)=V+0|UcHm;gxcL6FG|3=CZTP#KWGZ;%R* z!2AFI{~u;xV0a4>fH6+Pw7?kmkyU^UJqr_nF)lJNFx&>20b}fk3BVY;VOl_jKK}pz VKaA!AF<$@w|NkTd0|SU=0086qm)QUS diff --git a/Apps/AfterEgypt/Comics/Moses79.TXT b/Apps/AfterEgypt/Comics/Moses79.TXT deleted file mode 100644 index 21bb08ac3c4d03ad36097926cfda28aafb52e078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmY!h57#kN;o=O>s8mQSN>wPyNL45NK4Gg$;?Z)=TvcX*D+CXODrx?C{D~v zQ2^nB)TE@G)M7mqH+K~-7*Gig&{0y-aq_e^1PgM)B)AYVMk-tkObiep$jHFJ$iTqB z1>$ltFfi0JF))B=Mn-0k8g@Sh28MtC|NrMwXJBApW?*2@XJBCX3=)7bBB2soFh(x} z1H)I43K+wZfq~&8NT468_aFlU13So8kN`*qB=8%gVj=?r!~6gL{~u;xV0a4>fH6+P zw7?kmkyU^kbQUH6V_allV7Lu31IE}76M!*xL$z>#Y1JMisoHhQL diff --git a/Apps/AfterEgypt/Comics/Moses80.TXT b/Apps/AfterEgypt/Comics/Moses80.TXT deleted file mode 100644 index e62794d44f7be011b26ed86f0af4571dde0c115c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmY!h57#kN;o=O>NGwsvOj9VyNG(cL$ShV!R7lE9Pfso4;!G+n%FE14S4b)?&d^aP zEl^0zNKH(!=j2pzbJsCZ@hnj&&&{#FBvgV6#^_~WVE77B0b^J)Ffe?C34rt-1ewghz`)fHl>rI-2B`oEy#N3I z|6v9OhPNOA7~?cd3yg6eSp~?@voHY|<01nC!)=fmFvfnE0F1F4rUhi^(|KC{N|$OwU(HN=(ky zQAo_mQ7F&M$x%p3RY=P(O3y4y&C}!J;sgN|H+LNq6~BCi{Jd0!?7aN)Vug(Sa)pw7 zg_L}S#N_1s(!7$)ymUP-C{PIw&{0y-aq_e^RN-P^WPkugMg}mO3&iDQU|^_cVqgH# zjEu}o3=9nHehdr@|Nj5~&!x`5z`)GFz@X2-!0;I)0AoZ#CAeUWUIqq+uOJmLh9v_7 z!$+6^NbfVfPkic({3Xs72|Ns9VW?*1=3le}aPQ$do826D?fDAng6M!); rGB7aQ2AKh4?1u@!7`tIwK!!g4|NlRX<^nNZ|NsC0Bm)Bjh-Lr)NNk@4 diff --git a/Apps/AfterEgypt/Comics/Moses82.TXT b/Apps/AfterEgypt/Comics/Moses82.TXT deleted file mode 100644 index 5fc579ed8266a9b5bec9c53e9cedabda3d89a576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmY!h4$x6j(sA;%HB{krOf1UJ(@`i-RY=b-DM?gF%gjqrNaW%yPpniZ$yX>&&B;+H z$;d2L$W6@4OH|}S0E96{Dx6%LoPPN_3cmTpsl_@9p6a;@dHE#@>G_#?>0F$gCHV?T zsS1_(r9}$Gi8-moxruqmCNVHFK!86Z1DMSP;wCUKFw`?KFo0;TPzDADSq27%Mg|53 zAqEBpW+ny(21Z7%AO;48U_%kpt7%?y~fK(`e1VCC8p$1F91XLIp7$RYY`Y|vtfRuVewKB4Cf#j4J7#L!q z8W|b6@);NyA{ZDLiWnFeEJ5bL80Ap2xIh9H3=9lq3=9nFAQc4+3=Fmm3=DY;3=FCu zfkFlb29VVt2^o+8NDD}5DFXw821o$L0GR>O%9RV%o5R4sU=0dMP*{Oz+`(JIz`y|V X@g4>S2C32DWnf@{g(??}fjf8sZxvJG diff --git a/Apps/AfterEgypt/Comics/Moses83.TXT b/Apps/AfterEgypt/Comics/Moses83.TXT deleted file mode 100644 index 2a385a175bf747fe511671e90348d3787f28c571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmY!h57#kN;o{=t3{O=^%P-AKQAkuME-6Y)%vI##KTl$w;kK$j&d$NG;OiuZ z1_lOZ1_lOw1_p-DAORR75-Pz3WArjGFnk56fH5o?7#Kdn1VDNZf=p&$VBqS9%76rZ zgH(V7-v9sq|1bjs!&{I5jBy&K1;)6KtO8`{S(pHfagl+6;Wo$&7-K(70LIu2(*iQ| Y@&Et-VKf(r@%sP&|0fw37(g@w0A^vACIA2c diff --git a/Apps/AfterEgypt/Comics/Moses84.TXT b/Apps/AfterEgypt/Comics/Moses84.TXT deleted file mode 100644 index 4a726ac462304ecbef88402f38fd18ab499a7ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmY!h57#kN;o{=t^hhi!C{{=;N>#{6O)RU_VfPkic({3Xs72|Ns9VW?*1= z3le}aPQ$do826D?fDAng6M!);GB7aQ2AKh4?1u@!7`tIwK!!g4|NlRX<^nNZ|NsC0 LBm)Bjh-Lr)_w|wH diff --git a/Apps/AfterEgypt/Comics/Moses86.TXT b/Apps/AfterEgypt/Comics/Moses86.TXT deleted file mode 100644 index f14f941fed3d685d3e487fcfa142d8837de4b8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmY!h57#kN;o{=t49}=kNGwWKh|Dil$jdKL$jHyjFUrhI=i=ndFD+8YPfJS$af|Ia zIXP9_+;vP;Kq|q)3b~1Sd5QK43c;yGnfax~IhFP*Ztf~vFrX3~prfRu|pG%#Afq|KUfkB^vf#EYq z0LF-fN^rp#y$lQtUqLEh3`+(EhL11-kluqJlNlHoxcZ?oAc5Z?6(E84|Ns9#%)r3# z79;>;oQ7$EG43O)02z7~CIDkxWME*p4Kf49*bftcF?PeWfDC>7|Nnm&%>`n-{{R2~ LNd^W65X}Gp>d=+Y diff --git a/Apps/AfterEgypt/Comics/Moses87.TXT b/Apps/AfterEgypt/Comics/Moses87.TXT deleted file mode 100644 index 8deebe94464d99bac65b573b8a01d8533e53f95f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmY!h57#kN;o{=t49Q4UNGvMJEG|(fC@oPaNX^SEPA%r*BTx`Rz?;|I*ztVPHt8xVk!)b z3=p8m$N*+@fw-Iu3=H*53=ANek&&5+fq{YDkAZ>V-~a#rxzrgL7?>Ft81xw!7(Rmp zV2ntp1Q(3a%fP_!6{G^juw-Ch_y`jK={*QCnSp_Us~;)@68H^L0TOus|NsBP3=9l! zK>{$wX_yum<36$qkfCQ`0x-r!1_p-PATwZ${V)L-V>e6-$k50C|Nn>4Tp-5l|NsA= KWME(b(F_3Nex$?z diff --git a/Apps/AfterEgypt/HorebC.CPP b/Apps/AfterEgypt/HorebC.CPP index 488da06..86041a5 100644 --- a/Apps/AfterEgypt/HorebC.CPP +++ b/Apps/AfterEgypt/HorebC.CPP @@ -1,5 +1,5 @@ U0 AnimateTask(I64) -{//Preemption is off after Spawn +{ I64 i; F64 t; Obj *tempo; @@ -101,10 +101,8 @@ U0 Horeb() Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS -WIF_SELF_GRAB_SCROLL-WIF_FOCUS_TASK_MENU; AutoComplete; - WinMax; WinBorder; - Preempt; - + WinMax; DocClear; "$$BG,LTCYAN$$%h6c",'\n'; "$$BG,YELLOW$$%h30c",'\n'; diff --git a/Apps/Budget/BgtMain.CPP b/Apps/Budget/BgtMain.CPP index b458cd5..e2259da 100644 --- a/Apps/Budget/BgtMain.CPP +++ b/Apps/Budget/BgtMain.CPP @@ -165,9 +165,9 @@ U0 Budget() BgtDataRead; CBgtTemplatesExpand; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; MenuPush( "File {" " Abort(,CH_SHIFT_ESC);" diff --git a/Apps/KeepAway/KeepAway.CPP b/Apps/KeepAway/KeepAway.CPP index 72a4658..74b9862 100644 --- a/Apps/KeepAway/KeepAway.CPP +++ b/Apps/KeepAway/KeepAway.CPP @@ -626,12 +626,13 @@ U0 KeepAway() "Right-Click to jump.\n"); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->text_attr=BLACK+YELLOW<<4; - WinMax; + AutoComplete; WinBorder; - Preempt; + WinMax; + DocCursor; + DocClear; Fs->win_inhibit|=WIG_DBL_CLICK; - AutoComplete; MenuPush( "File {" @@ -646,8 +647,6 @@ U0 KeepAway() ); Init; - DocCursor; - DocClear; Fs->draw_it=&DrawIt; Fs->animate_task=Spawn(&AnimateTask,Fs,"Animate",,Fs); diff --git a/Apps/Logic/Logic.CPP b/Apps/Logic/Logic.CPP index 38004aa..17333bd 100644 --- a/Apps/Logic/Logic.CPP +++ b/Apps/Logic/Logic.CPP @@ -567,9 +567,9 @@ U0 DigitalLogic() input3_table =NULL; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinMax; AutoComplete; WinBorder(ON); + WinMax; DocClear; GetGates; try { diff --git a/Apps/Psalmody/Examples/abiding.CPP b/Apps/Psalmody/Examples/abiding.CPP deleted file mode 100644 index fd9bd8c..0000000 --- a/Apps/Psalmody/Examples/abiding.CPP +++ /dev/null @@ -1,74 +0,0 @@ -//9 has graphics -#define X 330 -#define Y 15 - -#define NUM_BEAMS 256 - -F64 beams_r[NUM_BEAMS],beams_é[NUM_BEAMS]; - -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 r,x1,y1,x2,y2; - dc->color=YELLOW; - GrCircle(dc,X,Y,10); - GrFloodFill(dc,X,Y,10); - dc->color=BROWN; - GrCircle(dc,X,Y,10); - dc->color=YELLOW; - for (i=0;itext_attr=LTCYAN<<4+BLACK; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - for (i=0;iwin_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - "$$BG+H,LTCYAN$$$$FD+H,BLACK$$"; - while (!ScanKey) { - "$$WHITE$$To God...\n$$FG$$"; - Play("3etCFEsDDDDD2G3D2G3qC2eG3EqEetAAF2qG", - "I \0am \0a\0biding \0 \0 \0 \0in \0 \0Your \0 \0" - "presence.\n\0 \0 \0 \0 \0 \0 \0 \0"); - Play("3etCFEsDDDDD2G3D2G3qC2eG3EqEetAAF2qG", - "I \0am \0a\0biding \0 \0 \0 \0in \0 \0Your \0 \0" - "presence.\n\0 \0 \0 \0 \0 \0 \0 \0"); - Play("3DBsFGFG2eG3FRDqEGeBE", - "What \0a \0joy!\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qDBsFGFG2eG3FRDqEGeBE", - "I'm \0so \0coy!\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/abyss.CPP b/Apps/Psalmody/Examples/abyss.CPP deleted file mode 100644 index e9577e0..0000000 --- a/Apps/Psalmody/Examples/abyss.CPP +++ /dev/null @@ -1,76 +0,0 @@ -//7 has graphics - -F64 t0=Beat; - -U0 DrawIt(CTask *task,CDC *dc) -{ - I64 i,j,w=task->pix_width,h=task->pix_height; - F64 dt=Beat-t0,num; - - num=MinI64(Exp(0.9*dt),3000); - dc->color=LTGRAY; - for (i=0;icolor=DKGRAY; - for (i=0;icolor=BLACK; - for (i=0;idraw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.736; - try { - task=PopUpViewPrint( - "There are myths about the River\n" - "Styx separating the land of the\n" - "living from dead. Jesus' told a story\n" - "about the land of living separate from\n" - "land of dead. ($LK,"Luke,16:22",A="BF:Luke,16:22"$) In the Old\n" - "Testament, the River Jordan was a special\n" - "barrier. ($LK,"Deuteronomy,4:22",A="BF:Deuteronomy,4:22"$)\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - t0=Beat; - Play("3sBBBBqCq.BeAqBh.A", - "Can't \0 \0 \0 \0get \0there, \0from \0he\0re.\n\0"); - Play("M2/4"); - Play("eECqAM4/4"); - Play("sBBBBqCq.BeAqBh.A", - "Can't \0 \0 \0 \0get \0there, \0from \0he\0re.\n\0"); - Play("M2/4"); - Play("eDDqDM4/4"); - Play("DeEDqGCeF2G3qGsFGFGeDC", - "Oh, \0my \0 \0God, \0some\0thing's... \0 \0 \0" - "ver\0 \0y \0 \0wrong!\n\0 \0"); - Play("qDeEDqGCeF2G3qGsFGFGeDC", - "Oh, \0my \0 \0God, \0some\0thing's... \0 \0 \0" - "ver\0 \0y \0 \0wrong!\n\0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/advantage.CPP b/Apps/Psalmody/Examples/advantage.CPP deleted file mode 100644 index d366695..0000000 --- a/Apps/Psalmody/Examples/advantage.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//7 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3eCsAAeCsAAeDABRCqEsBBeEDFE"); - Play("CAqCsDDAAeBRCDsCCBBeEAFsEE"); - Play("G2G3G2G3qGeBBBFsD2G3eDsB2G3B2G3eBAsGF2eG"); - Play("3sG2G3G2G3qGeBBBFsD2G3eDsB2G3B2G3eBAsGF2eG"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/almighty.CPP b/Apps/Psalmody/Examples/almighty.CPP deleted file mode 100644 index 9ee2988..0000000 --- a/Apps/Psalmody/Examples/almighty.CPP +++ /dev/null @@ -1,23 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("2qG3etC2GG3qARR2etG3FBqEeFE", - "All \0righ\0 \0 \0ty.\n\0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2qG3etC2GG3qARR2etG3FBqEeFE", - "All \0migh\0 \0 \0ty.\n\0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qFFEEeEBqFCB", - "Al\0read\0y, \0 \0I've \0 \0seen \0en\0ough.\n\0"); - Play("FFEEeEBqFCB", - "Oh \0bo\0y, \0 \0was \0 \0that \0rough.\n\0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/alone.CPP b/Apps/Psalmody/Examples/alone.CPP deleted file mode 100644 index c64e871..0000000 --- a/Apps/Psalmody/Examples/alone.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("2q.GeGqG3sBBCB2q.GeGqG3sBBCB", - "I'm \0a\0lone.\n\0$$RED$$No, \0you're \0 \0not.\n$$FG$$\0" - "I'm \0a\0lone.\n\0$$RED$$No, \0you're \0 \0not.\n\0"); - Play("q.C2eG3CsDC2eGG3qC2G3eCsDC2eGG", - "You \0are \0not \0a\0lone.\n\0 \0 \0Def\0inately, \0" - "not \0a\0lone.\n\0 \0 \0"); - Play("3sEAEAeCsCReRsDAe.GsBFFFFeEsAGeCsGDeDG", - "If \0 \0you \0 \0on\0ly \0 \0 \0 \0 \0knew.\n\0 \0" - "His \0 \0 \0 \0Spir\0it \0 \0 \0is \0 \0with \0you.\n\0"); - Play("sEAEAeCsCReRsDAe.GsBFFFFeEsAGeCsGDeDG", - "If \0 \0you \0 \0on\0ly \0 \0 \0 \0 \0knew.\n\0 \0" - "His \0 \0 \0 \0Spir\0it \0 \0 \0is \0 \0with \0you.\n$$FG$$\0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/appreciate.CPP b/Apps/Psalmody/Examples/appreciate.CPP deleted file mode 100644 index 6bc38ca..0000000 --- a/Apps/Psalmody/Examples/appreciate.CPP +++ /dev/null @@ -1,27 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("3etDGDqGeCGetAE2G3eEFsGBGBqEG", - "Thanks, \0 \0 \0God! \0 \0 \0" - "You \0 \0are \0might\0y \0 \0good \0 \0to \0me.\n\0 \0"); - Play("etDGDqGeCGetAE2G3eEFsGBGBqEG", - "Thanks, \0 \0 \0God! \0 \0 \0" - "You \0 \0are \0might\0y \0 \0good \0 \0to \0me.\n\0 \0"); - Play("EsBGBGeEC2G3AqF2G3sC2G3C2GqG", - " \0 \0 \0 \0 \0 \0 \0" - "I \0won't \0tell.\n\0 \0 \0 \0 \0 \0 \0"); - Play("3EsBGBGeEC2G3AqF2G3sC2G3C2GqG", - " \0 \0 \0 \0 \0 \0 \0" - "I \0won't \0tell.\n\0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/awake.CPP b/Apps/Psalmody/Examples/awake.CPP deleted file mode 100644 index 7f0984b..0000000 --- a/Apps/Psalmody/Examples/awake.CPP +++ /dev/null @@ -1,74 +0,0 @@ -//8 has graphics -#define R1 13 -#define R2 21 - -U0 DrawIt(CTask *,CDC *dc) -{ - static F64 é=0; - I64 x1=200,y1=20,x2=x1,y2=y1+R2; - F64 tt=Beat%16.0,è; - é+=1/(tt*tt+1); - dc->color=BLACK; - dc->pen_width=4; - GrCircle3(dc,x2,y2,0,R2+10); - for (è=é;è<é+2*ã;è+=ã/3) { - dc->color=BLACK; - dc->pen_width=2; - GrCircle3(dc,x2+R2*Cos(è),y2-R2*Sin(è),0,8); - dc->color=WHITE; - dc->pen_width=2; - GrCircle3(dc,x2+(R2+15)*Cos(è+ã/6),y2-(R2+15)*Sin(è+ã/6),0,3); - } - dc->color=BROWN; - GrFloodFill(dc,x2+R2*Cos(è),y2-R2*Sin(è)); - dc->color=DKGRAY; - GrFloodFill(dc,x2,y2); - dc->pen_width=6; - dc->color=RED; - GrCircle3(dc,x1,y1,0,R1-6); - dc->color=DKGRAY; - GrCircle3(dc,x1,y1,0,R1-2); - dc->color=LTGRAY; - GrRect(dc,x1-2,y1-R2-1,4,10); - GrCircle3(dc,x1,y1,0,R1); - dc->color=RED; - GrFloodFill(dc,x1,y1,TRUE); - dc->color=BLACK; - GrFloodFill(dc,x1,y1); -} - -U0 Song() -{ - CTask *task; - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Mark,14:37",A="BF:Mark,14:37"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - "$$GREEN$$Jesus talking...$$FG$$\n"; - Play("3eBCqB2sG3D2G3DetCGFsCBCBetCGBeBGsBCBC", - "Stay \0a\0wake.\n\0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("eBCqB2sG3D2G3DetCGFsCBCBetCGBeBGsBCBC", - "Stay \0a\0wake.\n\0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qDsDBDBetA2G3GqB2G3sADADqDetGFD", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "I \0 \0am \0a \0dead \0 \0man.\n\0"); - Play("qDsDBDBetA2G3GqB2G3sADADqDetGFD", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "I \0 \0am \0a \0dead \0 \0man.\n\0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/battlehymnsolo.CPP b/Apps/Psalmody/Examples/battlehymnsolo.CPP deleted file mode 100644 index 9b11f05..0000000 --- a/Apps/Psalmody/Examples/battlehymnsolo.CPP +++ /dev/null @@ -1,49 +0,0 @@ -//7 has graphics -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->text_attr=BLACK<<4+WHITE; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.9; - try { - while (!ScanKey) { - DocClear; - "$$BG,BLACK$$$$WHITE$$\n\n\n\n\nWait for the end..."; - "\n\n\n\n\n%17c",CH_SPACE; - Sprite($IB,"<1>",BI=1,BP="::/Demo/Graphics/SpritePut.CPP.Z,1"$); - Play("3e.GsGe.GsFe.EsG4e.CsDe.EsEe.EsDqCe.CsB"); - '\n'; - Play("e.AsAe.AsBe.CsBe.CsA3e.G4sA3e.GsEqGe.GsG"); - '\n'; - Play("e.GsGe.GsFe.EsG4e.CsDe.EsEe.EsDqCC"); - '\n'; - Play("DDCBh.CqR"); - '\n'; - Play("3(Ge.G"); - '\n'; - Play("sFe.EsG4e.CsDhEq.CeR"); - '\n'; - Play("q(Ae.A"); - '\n'; - Play("sBe.CsBe.CsA3hGq.EeR"); - '\n'; - Play("q(Ge.G"); - '\n'; - Play("sFe.EsG4e.CsDhEqCC"); - '\n'; - Play("DDCBh.CqR"); - '\n'; - Play("etEEGqCsDCDCFCFCqAetCDBBD3G4FCF"); - '\n'; - Play("EEGqCsDCDCFCFCqAetCDBBD3G4FCF"); - '\n'; - } - } catch - PutExcept; - DocClear; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/bedewed.CPP b/Apps/Psalmody/Examples/bedewed.CPP deleted file mode 100644 index 38f83d71bab87b55cf473b7923b20167e3aa6f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2062 zcmdPbw@}DPELKP_N-W68OfKe92@cRvvN5z%(sA;%HB{jOgHQv7;QYLF4Nb0UE(HbW zki_C_1+9|A;%sX!1qHWaT{{pvJ~b~TJ~_!&EjTX)q{1~X#n}m@z_+wGGdVc5q$D#h zy*Q}21SFOV64NV5%`M2cHPSN$36&I8Du9evPym@`8<1ZRS`e0*S{_i8nOCBrq~hbP zqZE*lnUh&ikeQfQtYczjp`_zztK{Tng)XcTlc%H!GE+eTgrzT=$u;O?B<^8>Q?BU zTH@~JTIi^x!^NqfprD}Slb@fh5Mz*7q7Y+Hl95=VsGtyI07ovV<#4tVR7ZZELX1IL zPJTH|U20LWUQAw$0W5G}b`OZv!39N`C8-)Jo=(UK4jM%Y3Q8&}&b~SZI_B^IguB+o zwb0ek)y)|cSdK36017BdEr~HGsZ@wDD9=a*`5hcmsUU&m#FFF;2v;G-AO{r3;E+Is z8Qfw>bfnVO5+xNC_aIkSKNS@X&l2@wh1A62N`;bqg``x4l*FQJg~YrRg@U5|wEWV% z6otf`9EFmMRE3hv+*F0kJcY!fqWtv4yyR3p1qE1K2j}Oeg5-;J6g(A*Qxl7lGZfPD zixi4ebJBEE%Q90^^GX!b^Yc^kQj3fAG-L8qRNUO*L0ikEpirv-4kRv6VhboOaji&B zEdb}$;Jg$K15InLS}rb7DPYaTz{mgrCz%--m>3us7@0U#7#J877#J9o7#J9QCK-55 zQt6zel6a_vlao`9fq_ATfq?;}#B-5B;vx;NB^q8+7&rx?g8U2&44%`@Zu6bY!pXzH zz@W;&zyK2KS)y{Ai&FwB!pp$GAhPtx=RGPt(YHBS7#J9o85kG@KzbQCL0UlOgM>VV zTs>#BbPBlz&S>!z;^c#>6k}ju;C^%Si4YSfCj$e64g&)NNJ?dLE*mEoQ~+d$%G+FH zPLQ#B3=9mSAWK!#Zr-`Y338DU0|SE)0|Udl-4haL2r#m6=`%1efSh8;z`*eD|NsAR z0g%eS|NsBz1@!sB6sa82j#dD(4;ho#EcY~Y(HVR@Oj7(%^$l(;4DB?V6$==-0Y1_>_KYhvM z^kiUQ0L82mDa54lL55k^I;AH5^z`&peO4**1 zY&6}vgw#NuHDlxg2R$gJK|!4|0b0E$o< z1_lNmVYS(@)qaaKM8FvbloUYjRZ?}kwW}18ge{?&P{nhi3OHeb(ke(%-rn432C(rW a3=9m?pgij2%E-yiz`$S&&0Z>=LJR;v&>Bnt diff --git a/Apps/Psalmody/Examples/blinded.CPP b/Apps/Psalmody/Examples/blinded.CPP deleted file mode 100644 index 92dfac8..0000000 --- a/Apps/Psalmody/Examples/blinded.CPP +++ /dev/null @@ -1,45 +0,0 @@ -//7 has words -F64 t0=Beat; - -U0 DrawIt(CTask *task,CDC *dc) -{ - static I64 i=0; - F64 dt=Beat-t0; - if (dt>16.0 && i++&1) { - dc->color=WHITE; - GrRect(dc,0,0,task->pix_width,task->pix_height); - } -} - -U0 Song() -{ - CTask *task; - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - DocCursor; - DocClear; - Fs->draw_it=&DrawIt; - try { - task=PopUpViewPrint("$LK,"BF:Acts,9:3"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - t0=Beat; - Play("3qEeACA2G3qCEC2G3E", - "Now... \0 \0 \0 \0 \0I \0see \0the \0light.\n\0 \0"); - Play("EeACA2G3qCEC2G3E", - "Now... \0 \0 \0 \0 \0I \0see \0the \0light.\n\0 \0"); - Play("GCGBEeDFCAqD", - "It's \0 \0quite \0 \0bright.\n\0 \0 \0 \0 \0 \0"); - Play("GCGBEeDFCAqD", - "It's \0 \0quite \0 \0bright.\n\0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/born.CPP b/Apps/Psalmody/Examples/born.CPP deleted file mode 100644 index 7daf0d6..0000000 --- a/Apps/Psalmody/Examples/born.CPP +++ /dev/null @@ -1,57 +0,0 @@ -//9 has graphics -F64 t0=Beat; -#define HORIZON_Y 50 -#define LEFT_EDGE 200 - -U0 DrawIt(CTask *task,CDC *dc) -{ - I64 i; - F64 dt=Beat-t0,d=Clamp(0.1*dt,0,2),d2; - - dc->color=ROPF_PROBABILITY_DITHER+LTCYAN<<16+CYAN; - for (i=HORIZON_Y;i>=0;i--) { - d2=ToF64(HORIZON_Y-i)/HORIZON_Y; - dc->dither_probability_u16=1<<16*Clamp((4.0-d2)/4.0*d*d-0.15,0,1.0); - GrLine(dc,LEFT_EDGE,i,task->pix_width-1,i); - } - - d=(task->pix_width-LEFT_EDGE)/2+LEFT_EDGE; - dc->color=YELLOW; - GrCircle(dc,d,HORIZON_Y+50-dt,40); - GrFloodFill(dc,d,HORIZON_Y+15-dt,TRUE); - - dc->color=GREEN; - GrRect(dc,200,HORIZON_Y,task->pix_width-200,task->pix_height-HORIZON_Y); -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - - MusicSettingsRst; - music.tempo= 2.500; - music.stacatto_factor= 0.900; - try { - while (!ScanKey) { - t0=Beat; - Play("3qBeB2G3qAeFAsFAFAqC2sG3A2G3ARBRB", - "New \0day \0is \0born.\n\0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qBeB2G3qAeFAsFAFAqC2sG3A2G3ARBRB", - "Though \0it's \0the \0mourn',\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("eDDRCqG2eGR3qEetEAFqCsDGDG", - "cheer-\0up \0 \0the \0heart\n\0 \0 \0 \0 \0 \0" - " \0 \0 \0as \0 \0you \0"); - Play("eDDRCqG2eGR3qEetEAFqCsDGDG", - "hitch-\0up \0 \0the \0cart.\n\0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/childish.CPP b/Apps/Psalmody/Examples/childish.CPP index a7db1f4..1509e68 100644 --- a/Apps/Psalmody/Examples/childish.CPP +++ b/Apps/Psalmody/Examples/childish.CPP @@ -1,4 +1,4 @@ -//8 has words +//9 has words U0 Song() { Fs->task_end_cb=&SndTaskEndCB; diff --git a/Apps/Psalmody/Examples/compassions.CPP b/Apps/Psalmody/Examples/compassions.CPP deleted file mode 100644 index 449bf17..0000000 --- a/Apps/Psalmody/Examples/compassions.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qBAeEEqAeAEDB2qG3F", - "$$RED$$You \0need \0help!\n\0 \0 \0 \0" - "Po\0-o\0-o\0r \0dear.\n\0"); - Play("BAeEEqAeAEDB2qG3F", - "You \0need \0help!\n\0 \0 \0 \0" - "Po\0-o\0-o\0r \0dear.\n$$FG$$\0"); - Play("4eFGqDetFEDeDEetADEC3G4GqD3G", - "Pat\0ron\0ize? \0No, \0 \0thank \0you!\n\0 \0" - "Too \0 \0man\0y \0strings \0a\0ttach\0ed.\n\0"); - Play("4eFGqDetFEDeDEetADEC3G4GqD3G", - "Pat\0ron\0ize? \0No, \0 \0thank \0you!\n\0 \0" - "Too \0 \0man\0y \0strings \0a\0ttach\0ed.\n\0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/completed.CPP b/Apps/Psalmody/Examples/completed.CPP deleted file mode 100644 index b3ca81c516e3726c82f761da7a643e7fa20e1fa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmdPbH&@6=ELKP_N-W68OfKf)QV9;wQL-_#Q_^wrv^7-Wf`Cv1h2Z?WbPY|eYAyu@ zw_;tplEmWd_|&|V_~ay8wcxyzki_C_*Sr*GCu=SR1>e%*%;ezIl9J54^x~l65|CIf zNKCIJHMbz&R>4Tm#KHg}T3nKtoLEwlAD@<(T#{d8t6-pKXA>SW|@?BbN_>R9aR?&@w- zh!lh&8Hu1kRERMsPXq;IQGRK9h9Y_plIH?r;+)`A3Uz^}dago@K?%qO7?DVt3u?I( z6lxWc6HAgaxIif-ptQubB004HoXmssQZx)St+{HsxIj6^nu~#v0Rn;;7#Nrs7#J8C scw`_V3@Qu^3?>W=3_Jo13=A9$3=9Sg3=AMP`=9^+|AR0iA7RA|09!-k$^ZZW diff --git a/Apps/Psalmody/Examples/cosam.CPP b/Apps/Psalmody/Examples/cosam.CPP deleted file mode 100644 index 7d354c4..0000000 --- a/Apps/Psalmody/Examples/cosam.CPP +++ /dev/null @@ -1,30 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 3.966; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qABeCCqABAAR", - "What \0makes \0You \0 \0 \0think \0You're \0God?\n\0 \0"); - Play("ABeCCqABAAR", - "What \0makes \0You \0 \0 \0think \0You're \0God?\n\0 \0"); - Play("DeCCCCqCDCCR", - "Do \0You \0 \0think \0 \0 \0I'll \0app\0laud?\n\0 \0"); - Play("ABeCCqABAAR", - "What \0makes \0You \0 \0 \0think \0You're \0God?\n\0 \0"); - Play("GDGeGA2G3FqFeDRqB", - "$$RED$$Be\0-e-\0cause \0 \0 \0 \0I \0 \0a\0 \0m.\n\0"); - Play("GDGeGA2G3FqFeDRqB", - "Are \0 \0you \0 \0 \0 \0a \0 \0fan?\n$$FG$$\0 \0 \0"); - "$$GREEN$$(If God talks, how can you be sure it's not Him?\n" - "You can't, so harden not your heart.)\n$$FG$$"; - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/depending.CPP b/Apps/Psalmody/Examples/depending.CPP deleted file mode 100644 index 7bf9194..0000000 --- a/Apps/Psalmody/Examples/depending.CPP +++ /dev/null @@ -1,30 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint("$LK,"BF:Luke,12:16"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3etGREqDDBRGCB", - "It \0 \0de\0pends \0 \0on \0 \0the \0wea\0ther.\n\0"); - Play("etGREqDDBRGCB", - "If \0 \0we \0reach \0 \0the \0 \0end \0ev\0er.\n\0"); - Play("2sG3E2G3EqGsGBGBqDsFCFCqBRsCBCB", - "Hand \0 \0of \0 \0God, \0 \0just \0 \0might, \0 \0" - "in\0 \0ter\0 \0cedes.\n\0 \0 \0 \0 \0 \0"); - Play("2G3E2G3EqGsGBGBqDsFCFCqBRsCBCB", - "If \0 \0it's \0 \0not \0 \0deemed \0 \0right, \0 \0" - "won't \0 \0suc\0 \0ceed.\n\0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/despairing.CPP b/Apps/Psalmody/Examples/despairing.CPP deleted file mode 100644 index a5ba2c1..0000000 --- a/Apps/Psalmody/Examples/despairing.CPP +++ /dev/null @@ -1,24 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("M9/8"); - Play("3hDeFhDeFhDC"); - Play("FeDhFeDhFE"); - Play("M4/4"); - Play("qD2G3AeBFFE2qG3DA", - "Hold \0 \0on!\n\0 \0It's \0gon\0na \0be \0fine.\n\0 \0"); - Play("D2G3AeBFFE2qG3DA", - "Hold \0 \0on!\n\0 \0It's \0gon\0na \0be \0fine.\n\0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/determination.CPP b/Apps/Psalmody/Examples/determination.CPP deleted file mode 100644 index 8e65b35..0000000 --- a/Apps/Psalmody/Examples/determination.CPP +++ /dev/null @@ -1,23 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("3sEAEAeFFsA2G3A2G3FGFGqCCBA", - "All \0 \0 \0 \0hell \0 \0breaks \0 \0 \0 \0" - "loose.\n\0 \0 \0 \0I \0will \0get \0through.\n\0"); - Play("sEAEAeFFsA2G3A2G3FGFGqCCBA", - "All \0 \0 \0 \0hell \0 \0breaks \0 \0 \0 \0" - "loose.\n\0 \0 \0 \0I \0will \0get \0through.\n\0"); - Play("ACeCCsBBBBqEsCCCCqAE"); - Play("ACeCCsBBBBqEsCCCCqAE"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/dialogue.CPP b/Apps/Psalmody/Examples/dialogue.CPP deleted file mode 100644 index fad0e287f9ace1f1710a3c7103c6522a949df2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3441 zcmdPbw^YbTELKP_N-W68OfKf);^I;X4$x7uF|;{ax*hgC^4{gN=+=W z<_a}Xa4AYG_bkzH4oNJ|R?yOMc5znFN=eq_s^(Hq0I5wW0jt$5G0;hjuh2=1ue9b; zP{>SE&`2qA`&i936=mUtFSdTG6iV|aVl+%!R+9IqRf(1V~vz# z9Rn~_@pM9tX-#XcS}suh2IuFcYe1qiIJKlCGcUb3ptLx{T0vhwI5ky4#m8Gm30Xo( z$I({F*Ut(?Oa+t}igoQ$iW1A?GfQmMAgKoAD7Ru=yOPA>?D*8Yl=$Q%TeaZ46i`}n z%}a510x9qRFLyai?JGN zjAE)WQZRUew3lS0f?cN&V^Ex*n+o!JW?nid2=WzT3{o=Kufy@BaV)ugSo`0K)&_fD;>l%l?O$!+;RLrkoQYJ)G1dc@^$K zbTMTAqRW9ap^FV>^&s~mVRWa1rI6hZ7C;a~SUpy!gMEhGzoY8Gf%E@AX88b?7;NDK mb`(|ud;DTm3Kkq1>IYl+)7m}YsKH7MjrhXqbg&@Q{R{wjNodUg diff --git a/Apps/Psalmody/Examples/disputing.CPP b/Apps/Psalmody/Examples/disputing.CPP deleted file mode 100644 index b0afacd..0000000 --- a/Apps/Psalmody/Examples/disputing.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("M3/4"); - Play("3eECqAAeECqAA", - "I \0hate \0you.\n\0 \0I \0hate \0you.\n\0 \0"); - Play("eDCqAAeECqAR", - " \0 \0 \0 \0I \0hate \0you.\n\0 \0"); - Play("M6/8"); - Play("etABGqCsGEGEetGBDqCsCDCD", - "$$RED$$Don't \0 \0 \0smile.\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - Play("etABGqCsGEGEetGBDqCsCDCD", - "Don't \0 \0 \0smile.$$FG$$\n\0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/doing.CPP b/Apps/Psalmody/Examples/doing.CPP deleted file mode 100644 index fd79f92fdd0b7bcc7b0ade81df0a08e33562f43b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2662 zcmdPbw^YbTELKP_N-W68OfI(O0s&411qGGh039V8LpvoMCr?{L6_79&mz$Z1LWzN` zQ)*&~HCL#Cf=f|ixo3%nb4X%wwt|+9vx~EWR!XuaS2dS{0!VF230SReiGekjfW|~|I3JMBvBN1v%A;#$&!3_*9 zD9S8JHP%Q;)-eD>6;CJRu+_BYs^tO&XK;RAx&|clf>TRMGV{`l14@fCtQGY2gHux# zRD8U3l#nHqbR2D!eEqCY#8g0GU#x4FQj}O8pIKt728kq4=(rW@+La_0XUC`JrNk#E z*{TKSrGTQ&H7~{438cWcv^X;vW?E2j2}mp#B&JuAnp==>t6-#OVgZf@h-h(1Vsc_h zNq&4rQ3hwzSdU|>)DsJv7DlvIVAQM5V0&)^7HI$4C-JKkZU0qyV3Z31Z zoRxIAKnYes$t^L)pd=%;NJk;YKq1DUJR`9L!h(>I`K1am21%)@c?vNGDfux5nR)5< zF?lftO5kWmn2+7`@Whhjj2Hvm%o0Tfh=Kkvn;_hhjMPf?oE)$n3NZ%7rC=NMu-TC6 z?&9L)?o{ZM>gwp~;^t~p=nnTqNJeTU*nxTKAmF~%S%zYJtverXXXOcN`M zbwD;lO!iEJ&`MBufPw%blAi~4baq~9Ig0hQTnY-c3dx|*1ZSau(h}E-3z`(@7z#t*Zz`)?jz`(Hd|NsAA{{R2a4P}E=f!H7#CJv%O z7$pAc|Ns9W3}T-`W5d*d#6kLDY7`h47(i^0J{TLMRun1@QVV0l+yfE=nFCS>V}ocA z2B`tjAPiCiG8e=K(I5-_rF&G=959BtG`2GL?|0A2hm^u z|NjqSgVcc7AUD9oL2Q^fp8*2{GXo^RLH>vFL2NDt1_ltHg#n@lnGa%fLgg747(hyp zxF9AQR2D>o`0P+Vhz9XFpnQ<4Kx#nZAlpEE5F3;lKztDf1_mJp1_oiMdJr2FA|P>) zydVPu1Bee22k|AKe2_SdF9sEZ@x>V!7(ikmz5pnxF)%Q|)bm35AaRg956E5y1_qEg zjL#1h1M$J)P(2_%DCvUS0&_1YbU}QOI7lAE2L%^M48#YqL3YFV(9i@4fux}>gSiIk z5EvH}a3BYO++)DN0OEqe4e$+xe??JSlEJ60Z0tS z2hlJwn0lBPh!10fQU{C=3I|a9fcPL9BnOIr7$3xj#RZ54@j>wek_XWsJ}fXmd=MKH z#~^u-UqI;ulwM$bFdG^kAh(0u3vw4o9%MI648)gaU|^7BU|^7fst55wY*^Za@nxX$ zd|1?j>_b)$QUl|IXpk8&{pkJ!$%Fg{5(l{lqz)to@+XWBVuRcS;)BcvxfkYt5Fex- zqz@zyvJ06H3vZbJL4F6t2aFFg8)O#9OptyU8)hGf28n^xf#gBtask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (TRUE) { - Play("et2G32G3Gq2G3qCq2G3sFAFAq2G3etGDAqA", - "Don't \0 \0need \0 \0help. \0 \0Got \0 \0it \0 \0all \0" - "figured \0 \0 \0out.\n\0"); - Play("et2G32G3Gq2G3qCq2G3sFAFAq2G3etGDAqA", - "Don't \0 \0need \0 \0help. \0 \0Got \0 \0it \0 \0all \0" - "figured \0 \0 \0out.\n\0"); - Play("etCCCq2G3qDeDFetCF2G3qBeGFsAGAG"); - Play("etCCCq2G3qDeDFetCF2G3qBeGFsAGAG"); - } - } catch - PutExcept; -} - -Song; diff --git a/Apps/Psalmody/Examples/dream.CPP b/Apps/Psalmody/Examples/dream.CPP deleted file mode 100644 index f988aec..0000000 --- a/Apps/Psalmody/Examples/dream.CPP +++ /dev/null @@ -1,65 +0,0 @@ -//8 has graphics - -#define NUM 10 -#define RAD_PROP 60 -#define RAD_PRISM 8 -I32 rainbow_10[NUM]={ -RED,LTRED,BROWN,YELLOW,GREEN,LTGREEN,BLUE,LTBLUE,PURPLE,LTPURPLE}; - -#define X 320 -#define Y 35 - -F64 t0=Beat; -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 dt=16*Sin(ã*(Beat-t0)/8),é; - dc->color=WHITE; - é=ã*dt+0.5; - GrLine(dc,X+RAD_PRISM*Cos(é) ,Y+RAD_PRISM*Sin(é), - X+RAD_PRISM*Cos(é+2*ã/3),Y+RAD_PRISM*Sin(é+2*ã/3)); - GrLine(dc,X+RAD_PRISM*Cos(é+2*ã/3),Y+RAD_PRISM*Sin(é+2*ã/3), - X+RAD_PRISM*Cos(é+4*ã/3),Y+RAD_PRISM*Sin(é+4*ã/3)); - GrLine(dc,X+RAD_PRISM*Cos(é+4*ã/3),Y+RAD_PRISM*Sin(é+4*ã/3), - X+RAD_PRISM*Cos(é),Y+RAD_PRISM*Sin(é)); - for (i=0;icolor=WHITE; - GrLine(dc,X,Y,X-RAD_PROP*Cos(é),Y-RAD_PROP*Sin(é)); - dc->color=rainbow_10[i]; - GrLine(dc,X,Y,X+RAD_PROP*Cos(é),Y+RAD_PROP*Sin(é)); - } -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->text_attr=BLACK<<4+WHITE; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - "$$BG+H,BLACK$$$$FD+H,WHITE$$"; - while (!ScanKey) { - t0=Beat; - Play("3qAsDGDGqAsCACAeCBsFDFDetCGAsADAD", - " \0I\0mag\0 \0ine.\n\0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qAsDGDGqAsCACAeCBsFDFDetCGAsADAD", - " \0 \0Fa\0 \0thom.\n\0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("GFGFEBEBeCB2qG3sFAFAqCEA", - "Hi-\0 \0i-\0gh \0as \0 \0your \0 \0thoughts \0" - "will \0go.\n\0 \0 \0 \0 \0 \0 \0 \0"); - Play("sGFGFEBEBeCB2qG3sFAFAqCEA", - "Deep \0 \0 \0as \0 \0 \0we \0 \0ought \0to \0" - "know.\n\0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/efforts.CPP b/Apps/Psalmody/Examples/efforts.CPP deleted file mode 100644 index 22b776e..0000000 --- a/Apps/Psalmody/Examples/efforts.CPP +++ /dev/null @@ -1,23 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("2qG3sDADAeF2G3etFDCBA2G3qAetGFC2eG3E", - " \0Let's \0 \0try. \0 \0 \0 \0O\0oh\0 \0h. \0" - " \0 \0 \0Didn't \0 \0 \0work.\n\0 \0"); - Play("2qG3sDADAeF2G3etFDCBA2G3qAetGFC2eG3E", - " \0Let's \0 \0try. \0 \0 \0 \0O\0oh\0 \0h. \0" - " \0 \0 \0Didn't \0 \0 \0work.\n\0 \0"); - Play("sA2G3A2G3eBCsE2G3E2G3qGsFEFEDBDBeAG2etG3B2G"); - Play("3sA2G3A2G3eBCsE2G3E2G3qGsFEFEDBDBeAG2etG3B2G"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/elijah.CPP b/Apps/Psalmody/Examples/elijah.CPP deleted file mode 100644 index 2b4f80244c02a110173e8f13b65b5e565595ec90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17625 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 diff --git a/Apps/Psalmody/Examples/environeth.CPP b/Apps/Psalmody/Examples/environeth.CPP deleted file mode 100644 index 81ca5de..0000000 --- a/Apps/Psalmody/Examples/environeth.CPP +++ /dev/null @@ -1,23 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - "$$GREEN$$To God...$$FG$$\n"; - Play("M5/4"); - Play("3eEqCeEFEDCqBeEqCeEFEDCqB", - "Fa\0ther, \0for\0give \0them \0if \0you \0must.\n\0" - "I'd \0like \0to \0see \0them \0turn \0to \0dust.\n\0"); - Play("M4/4"); - Play("sGBGBetAF2G3eEFsEGEGqDsBDBDGFGF2etG3GB"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/epicurus.CPP b/Apps/Psalmody/Examples/epicurus.CPP deleted file mode 100644 index d20a571..0000000 --- a/Apps/Psalmody/Examples/epicurus.CPP +++ /dev/null @@ -1,48 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.500; - music.stacatto_factor= 0.900; - try { - task=PopUpViewPrint( - "$$WW+H,1$$You get what you pray for. " - "Most people are fools like King Midas." - " People have laughable notions of Heaven. " - "You'd be surprised -- I can't imagine things being " - "much better than Earth " - "because we need a sense of purpose. " - "Don't ask for stuff, let God pick, but He might get " - "annoyed at that. " - "God wants us to be happy. He tries hard. If you do get what " - "you pray for, you damn " - "well better be happy, lil' sonfabitch!\n\n" - "$LK,"Ecclesiastes,3:13",A="BF:Ecclesiastes,3:13"$\n" - "$LK,"John,16:24",A="BF:John,16:24"$\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - DocRecalc(DocPut(task)); //Reformat word-wrap with new window size. - while (!ScanKey) { - Play("3qBeCDqCAetAACeECsF2G3F2GqG", - "I'm \0on \0a \0mis\0sion \0from \0 \0 \0my \0 \0" - "God.\n\0 \0 \0 \0 \0"); - Play("3BeCDqCAetAACeECsF2G3F2GqG", - "I'm \0on \0a \0mis\0sion \0from \0 \0 \0my \0 \0" - "God.\n\0 \0 \0 \0 \0"); - Play("3etEDDDGABG2GeG3E2G3GqF2G3etGCD", - "He \0 \0 \0told \0 \0 \0me \0 \0 \0 \0to \0 \0" - "be \0hap\0py.\n\0 \0 \0 \0"); - Play("EDDDGABG2GeG3E2G3GqF2G3etGCD", - "He \0 \0 \0said \0 \0 \0to \0 \0 \0 \0make \0 \0" - "it \0snap\0py.\n\0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/exalt.CPP b/Apps/Psalmody/Examples/exalt.CPP deleted file mode 100644 index f5fd914..0000000 --- a/Apps/Psalmody/Examples/exalt.CPP +++ /dev/null @@ -1,43 +0,0 @@ -//9 has graphics -U0 DrawIt(CTask *task,CDC *dc) -{ - I64 i,cx=0.85*task->pix_width,cy=task->pix_height+10; - dc->pen_width=5; - for (i=2;i<=7;i++) { - dc->color=gr_rainbow_10[9-i]; - GrCircle3(dc,cx,cy,0,(i+5)*5); - } -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->text_attr=LTCYAN<<4+BLACK; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - DocClear; - "$$BG,LTCYAN$$$$BLACK$$"; - Play("3eEDsBABA2qG3etGECFDBECFCBReBE", - "Come \0and \0sing \0 \0a\0 \0long. \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0\n\0 \0 \0 \0"); - Play("EDsBABA2qG3etGECFDBECFCBReBE", - "Of\0fer \0praise \0 \0to \0 \0God. \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0\n\0 \0 \0 \0"); - Play("qBeDF2qG3eFRqBetFFGeACDF", - "Up \0in \0His \0hea\0ven \0 \0He \0is \0 \0" - " \0glor\0i\0ous.\n\0 \0"); - Play("qBeDF2qG3eFRqBetFFGeACDF", - "Break \0in\0to \0song. \0 \0 \0Strike-\0up \0 \0 \0" - "the \0chor\0us.\n\0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/exiled.CPP b/Apps/Psalmody/Examples/exiled.CPP deleted file mode 100644 index 8208a27..0000000 --- a/Apps/Psalmody/Examples/exiled.CPP +++ /dev/null @@ -1,64 +0,0 @@ -//8 has graphics -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 dt=Beat%8.0,z,w,x1,y1,z1,x2,y2,z2; - Bool first=TRUE; - DCDepthBufAlloc(dc); - dc->flags|=DCF_TRANSFORMATION; - dc->x=30*dt+20.0*Sin(dt)+25; - dc->y=10*dt-15; - dc->z=GR_Z_ALL; - Mat4x4RotX(dc->r,0.75*dt); - Mat4x4RotY(dc->r,0.45*dt); - Mat4x4RotZ(dc->r,0.50*dt); - Mat4x4Scale(dc->r,0.5); - for (i=-50;i<40;i+=2) { - if (i&2) - dc->color=LTGRAY; - else - dc->color=DKGRAY; - z=10*Cos(i/10.0*ã/8.0)*Cos(dt); - w=Tri(100+i,200); - x1=i-3;y1=0;z1=z; - if (-30<=i<=40) { - GrLine3(dc,i,-10*w,z,i-3,0,z); - GrLine3(dc,i,+10*w,z,i-3,0,z); - } - if (!first) { - dc->color=DKGRAY; - GrLine3(dc,x1,y1,z1,x2,y2,z2); - } - x2=x1;y2=y1;z2=z1; - first=FALSE; - } -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->text_attr=LTCYAN<<4+BLACK; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - "$$BG+H,LTCYAN$$"; - while (!ScanKey) { - Play("3qEAAetF2G3GqDFetFED2eG3G", - "A\0dam... \0 \0no \0 \0 \0long\0er \0sees \0" - "Your \0face.\n\0 \0 \0"); - Play("qEAAetF2G3GqDFetFED2eG3G", - "Oh! \0 \0 \0What \0 \0a \0wretch\0ed \0bar\0" - "ren \0waste!\n\0 \0 \0"); - Play("qACFeBCB2GqG3ED", - " \0 \0 \0 \0 \0 \0 \0 \0Ex\0iled.\n\0"); - Play("ACFeBCB2GqG3ED"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/exodus.CPP b/Apps/Psalmody/Examples/exodus.CPP deleted file mode 100644 index b402565..0000000 --- a/Apps/Psalmody/Examples/exodus.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//7 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3e.C2sG3qEe.FsBeCCsFGeBAAetAREeEsCB"); - Play("e.C2sG3qEe.FsBeCCsFGeBAAetAREeEsCB"); - Play("eGE2qG3sCDCDe.EsGqCsDCDCe.AsReGE"); - Play("GE2qG3sCDCDe.EsGqCsDCDCe.AsReGE"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/expedition.CPP b/Apps/Psalmody/Examples/expedition.CPP deleted file mode 100644 index b538979fac6d78685bbe5e85334a55142161ae70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1604 zcmdPbw@}DPELKP_N-W68OfKe9P*6|_4$x6j(sA;%HB{k(f=~m6;QYLF4Nb0UE(Ha* zVqLqE#NzDu)V!4V{9IR;_d=sIU5zb8@m`GVI@tFp$ZBxT_kD>E-1<@N!3vCbkb3>DK1GYvV#T! z+*l9-KP^om#y}y)pd=qcSLWx% z7^I{YDa06nY|x9zi!nfVwvoFr7NcAebMq7-hIp2!7eiQOsYNjcl?pKiX^BNBX4P^j zDAXz>Czd2task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint( - "$LK,"BF:Luke,7:42"$\n" - "\n" - "Prodigal Son\n" - "$LK,"BF:Luke,15:21"$\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - "$$WW+H,1$$"; - while (!ScanKey) { - Play("3qGGsEAEAqAsF2G3F2G3qCeEFqD", - "Life, \0life, \0isn't \0 \0 \0 \0fair. \0" - "Isn't \0 \0 \0 \0fair.\n\0 \0 \0 \0"); - Play("GGsEAEAqAsF2G3F2G3qCeEFqD", - "Waaa, \0waaa, \0isn't \0 \0 \0 \0fair. \0" - "Isn't \0 \0 \0 \0fair.\n\0 \0 \0 \0"); - Play("eFCqEBDBE2eG3EsFEFE", - " \0 \0I \0 \0ne\0ver \0sin.\n\0 \0 \0 \0 \0 \0 \0"); - Play("eFCqEBDBE2eG3EsFEFE", - " \0 \0I \0 \0ne\0ver \0win.\n\0 \0 \0 \0 \0 \0 \0"); - "$$GREEN$$(A warning on presumption. 'Who loves more man --" - " forgiven big debt or little?' See prodigal son.)$$FG$$\n"; - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/feigned.CPP b/Apps/Psalmody/Examples/feigned.CPP deleted file mode 100644 index 124a7e0..0000000 --- a/Apps/Psalmody/Examples/feigned.CPP +++ /dev/null @@ -1,29 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.857; - try { - while (!ScanKey) { - Play("3eEDEFqDDeEDEDqCC", - "$$CL$$Sit\0ting \0in \0a \0church\n\0 \0" - "wond\0ering \0to \0my\0self,\n\0 \0"); - Play("eD2G3BCqDsGGGGeD2G3BCqDsGGGG", - "\"Is \0 \0God \0 \0real?\"\n\0 \0 \0 \0 \0" - "\"At \0 \0the \0 \0wheel?\"\n\0 \0 \0 \0 \0"); - "$$GREEN$$God talking...\n$$FG$$"; - Play("qFFFetREAqGsGFGFGEGEqC", - "$$RED$$Oh, \0Hell \0yes!\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("FFFetREAqGsGFGFGEGEqC", - "Pass \0the \0test.$$FG$$\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/finger.CPP b/Apps/Psalmody/Examples/finger.CPP deleted file mode 100644 index 27a7189be0707bc211c34b74e9b0c5f7cb22eecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4039 zcmdPbw@}DPELKP_N-W68OfKf);^I;X4$x7uF|8VBW`FYk{T%iUEE=7suo+TR2A&JG=3R*hOF3t*CDao2#)m#b+nQ00d zaOIj@3JMAe!39N`C8@?5DakrU23i(6##$CS20AL9PRNeXw1#SiSczSyIg(DeTQ#k@ zYQfHmN-O}mNW;_21mYIBJ8VOOLR~=?1m~ot7HAk67=W#VSOu5#%g-!M1xe}{8yFbq zm>58nVb$d3=o3s^BTb>!BYXk16XM(8{JeAxh(Ci1cwO^SoSi@ld`pWnlVPR>6_Ei*61AU(B6A;v%<#vnfpLc8au#N>fRAbdMnJ40Y?DuB zdPYf%L24evu#${a2&0H}yWCPsTpf+v3*A#o+>M=#+>MLfT-;m=9gR}mjok}f;GT2L z$$@#QBqOs}A;zG%q$o2j73w!7Xc$1;frmtRHnT zq7Y+{Td5FZkb`iRLW}`%E`vF%mPm7JyThOMbF*PHJKi zC`rK*T|j;TIPZh9f;ATdBLf5^u`@6*F)%QQg9P6G|Nmc~fq_Atfq~&ac7QC-@c%!I z3!~9Bp^7swKsBHWBQ&9lL-|k&p$^KzE>4u&p(gzQ4|fw>1jfK&I!qd!9!biv`W34n zIFzu;U=<`^Iht{3T(G%N0xAWiAc80yh!Bi~OTih4WDiq=M8i}eWe#YfM^c1f!jyx} zgmR!1LJ<-RNe;$@(MYP`Oe}I(gpiekiv_sAe{cpt=Ay7+os z#DH*7NQ82D2oh&H+*o|d|HBF+kev{P5E8`4f*C+X1xy^Q5=_8E&}k&cLjw`7aunBq z-H%^6s(Mt*(47M2qxqJA=_oEB!gP=qK}iKvaS*2*IZ6pS2IK=o!X!#LNDItG5H^t{ z38sThBvL)NmIe7CiWyqtzW)FJ|A+to|BEv)Ferlp4s0BR04aoFhzOWu;DZ2A6^CRm zR2U=*jySMdP?UgGLlr_Pm@q^!h=;5iE{bFh10RwoLL50kfsBBf4^oXyJ;aS5KYF7TL0|SyULj3=K9O5X#2=%DK$l@@kfPDbt zpecu|XFxa+Sv`8N!PLXN4^|5zAm(EzhpNX=4iU!`28&~w0*OZ~%0cR}34_H!?n1{X hR=oO1^{EVr^NsO diff --git a/Apps/Psalmody/Examples/first.CPP b/Apps/Psalmody/Examples/first.CPP deleted file mode 100644 index 0cb899568e444404811e8ef9d3233787a5349228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2021 zcmdPbw@}DPELKP_N-W68OfKe92@cRvvN5z%(sA;%HB{jOgHQv7;QYLF4Nb0UE(HbW zki_C_1+9|A;%sX!1qHWaT{{pvJ~b~TJ~_!&EjTX)q{1~X#n}m@z_+wGGdVc5q$D#h zy*Q}21SFOV64NV5%`M2cHPSN$36&I8Du9evPym@`8<1ZRS`e0*S{_i8nOCC0#i^j6 zq@ofYuI-^?sG_3cXBcrkeirSsZfxb zUyzfkkdc~Lq!6RzlV6sq;GUnNP@Y+mp^%u91C}UJfN09i%u7*7%u7)y&M(ce2D9=~ zGt)DY@{1G_ixrAfbJBETloXOmOBBizbF!hj63Y`S6-qKP^RhGZ(qVSM^%1tnK1K=Z zYE4i$C@6qJFFY}`L<1BMP_gjLJdgaMDh*I*muKe1=cJ~U=)gEdnduoNI;g6{Qj1F9 zs+00dO7e5Hjo~_=0*0o@x?J*;gHn?dbCNY&@{vno}OOF=I>iM()OiPO0urg|4Y3F3upz%}q%M6m<#;N^Y4&#U(llF$OvLF$QI+3NZ$t zD2p)whh>a`LX3fr(fr?6ytBZ;XC~iwsRNUNER6v@*ajBr71dh!Z15kX%7=U6_ zFD4JHSs}(i2^y>l3c&?MnI)+jDxOX{N;Y7VU}+z&L`g-(*;mIv$4o^<2@*pvuM8ib zxH}a)x;VNNx*E9~r#ib7x*HX{8#@`f8#|?zIJr2%qb58fu|&OC0TzyM1}Ht+D?qrO z3NZ#L`FZLk3NZ%RdHLnwaEHYTL{+NgW){spV2os8vW#EJ@A)C+vXI64#34 z)B5hw=x1>}5?Dv$+? zJYdIz}Q{O}rq#wyhA4g|zkPt$#flh|5Ay~N~STRDT zT-Q*?KnFx-Xj*gCa&d(kCaCfZIg2ZI!(6eX6& zXO`HiK|&m4D@Yg=uJNgPDe=ikwrat7DWG_8%}a510x9qr~gc^>&iRT>~qlxOC} z=cJ~U=)gEdpah|VsyZySs06M$DZiv7KUdort^+DyXo{?>JR>tFRY5~BI5{!TJGD|1 z>PwJ+RGfWOR8&-)+;t$~t)ij?3JOqK3dl*U)KD@mbS-vwb$3m5Gjca}axQdEb#X0p zDs~NW4N}qp`5J7Bo4bmNPkvE~jzWxqr$UT@LX1ITE`&}?P0fih$jnPuh%o>MlY)X$ zR%vkwNQpv>K~g4&RhkD<5@S$YkXe+Pq8F1FV-TKMk^wORLMlN6OhEzSFe2QQmkKgF zzX)PLIo!Y^Bqt%c3gqzY)YJln7=!fGk{AO}QdWpD$b~xzVh)7FaE?oANsyykp^JNJ ziJP;LyK%9Tvy*e7iyKlX1-ZJYsDxw`<(EUu$S(!CuQII%ha{$2 zE(L{Jh2+GNE zfq?;}4J4op5`ZxRpb}g@P`x2AEg%NS>R1K_1__WB7$bp!fq@?+0AmC(Ffj0d1Yis& zm;j7n&cMLH2~q)Lm@zOg@PY(j3{?gO1`&_|j3EXy1I7S3AFLvjfq_AYfq@}{fq_8~ zq$La*Vv$gqk&77=mK=Uihk_X(9bkqi0|NsG$lKx|Mldv#IY8c(28o2jL_ks?%fX64 zF#=|Qe9qwoGa1AHn+#%r6@$VNY%<6SQ2c>)fue~66y{)tE6fUK1_lPOVh{st1&AR4 zat25-D1^Yez?OnUKmowv4vi5G4`}3ZfD8ot3&a4035NqTfH@o)7#P3?f*4>cKn%F0 zU@yBs6B1Z4*oAg5lWiFo7{LAlF~HhwUtYAI` zF~Gh6F+k~x1H=GZ3Q8Pc2FM(+lnDa^1K3|62H0O9DXfpyUXa0wq|mc2NERI|G#1z;OynY+&zz6oVO2u)qXmH?WtZp_VcL04*@CIsgCw diff --git a/Apps/Psalmody/Examples/fixing.CPP b/Apps/Psalmody/Examples/fixing.CPP deleted file mode 100644 index 6298db1..0000000 --- a/Apps/Psalmody/Examples/fixing.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//7 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.758; - try { - while (!ScanKey) { - Play("3sDDeBCsAAeB2G3A2F3sCCeDsFFeEsFFEEeDE"); - Play("sDDeBCsAAeB2G3A2F3sCCeDsFFeEsFFEEeDE"); - Play("sGBGB2etG3EGqFED2G3eBADG"); - Play("sGBGB2etG3EGqFED2G3eBADG"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/flung.CPP b/Apps/Psalmody/Examples/flung.CPP deleted file mode 100644 index 89f970e..0000000 --- a/Apps/Psalmody/Examples/flung.CPP +++ /dev/null @@ -1,24 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.714; - try { - while (!ScanKey) { - Play("3sBBBBEBDBeEBqDeBBEDEBqD", - " \0 \0 \0 \0Had \0 \0a \0 \0pass\0ing \0" - "thought.\n\0 \0 \0Not \0a \0thought \0I \0ought.\n\0"); - Play("sFEFEeFEDBqDeEFEBABqD", - "Can't \0 \0 \0 \0clear \0my \0head \0of \0" - "thought.\n\0In \0this \0trap \0my \0mind \0is \0caught.\n\0"); - Play("eDGqEeBAABqFeBDqEA"); - Play("eDGqEeBAABqFeBDqEA"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/fog.CPP b/Apps/Psalmody/Examples/fog.CPP deleted file mode 100644 index 3ac4695b5e5fe996e3d09aa646e11250419ffb55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1663 zcmdPbH&@6=ELKP_N-W68OfKf)QV9;wQL-_#Q_^wrv^7-Wf&t}})U?dJR0SW8_y`3f zGXpLpfk*`-11>H%GZTdp16!xm#1d;Ru22I7m!iaS&k_yiki_C_1uY$C7iR^nlw?h= zYAyu@km8gQuwva31D#51E(L|)f}+flRAY^lWF3$#ARmG6f`Prb&Ut}@`rUD9qVqLqGqQvs}%o1BQNKk0t!IaycB0AYc4JY1>e%*%w(8xLB%B?UAZ7Jy^_@2f_z&ABRx|C z1B7UCNn&zhNlAWuT4HiZevz$$fu1EqzNDxU8hqs$nK`Kn8j8WmiFw|sm9S7%Ktw1w z%oGB05-T;7j8jV-on4AuU0q#MOWfU!+zZ`POWci}91ERNOM;x-ogLkkbhtP{T9iB$ zVhqX?bFvj;3>0DvlJa$93_v(1CB`795+aC9DnYfCWaO8oXDGxNlw_nT#2BRIr|ZS! zfsH^`tq^0N1dbh$RS>t4%PaR~YLX1In9w?;p z%OUnd$nuOtkSxqGU}vP{quP!hB!n#u&qyr-c@`8|>0nEBAl5-hPxUg8EX>k8kl&MY zN>j00Tg#=OP^*xfSdyFp&T0XrC9W08sRiJK3QM;E`32UX90kfw)?5sX3=r^wk%57U zfq{XMf$Puz|Nnpf|NsBT|NsAW85kJ2{{H{}|JVQj|5+Fq7(g@^jKRUcz@P(C0b_u) zfdxQ%)fgBU*cccXBta@bGGY*`xIz5i|NsBzWME)mhAIME0x}om2oTK$V}MkERCB=? zAm@PG2-X5(fCRu=K+e!+U|`^5U|=u@*#dHg9s>izr~m)|TY>~YN)4gjumuT#^cgTP zFo3jLg9JbhHDzF6`11e%e>;!>NXCePfq|cafdQ-q6l5mgpkiPEsbB^#tJ|MxEL51G(ZC1|Ns9FVtoGp|35f7V2sDmC}jWu DBW}%u diff --git a/Apps/Psalmody/Examples/forasmuch.CPP b/Apps/Psalmody/Examples/forasmuch.CPP deleted file mode 100644 index 384083d6dd034c1fd6ad0e7fa83e0b8c8ecd883f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2308 zcmdPbH&@6=ELKP_N-W68OfKe92@cRvvN5z%(sA;%HB{jOgHQv7;QYLF4Nb0UE(Ha* zVqLqE#NzDu)V!4Ve%*%;ezIl9J54^x~l65^F96 zgK+h5)Us6=50J2j-p*$lq zCsjd1F*rFf&pWkJ6Dq8r5L{4{S(2)u;^~C!a7~cu3JMAeN~#%V$x1rvF?s4Rp@5vk zN)4sLAmh{$7bACfcVlPALKoLmH+N^(LKh_+E>5sMg%|_3{33-IgT!Km7=zr>PED7D1h z*xea97!+a*6k-fKQezC%K_1G<%mx_=HaoEdY$`+roJ992DV9JC0R=9|E`=C_q{QTG ze3sO5DJaw`Bqx?6XK;ZcE}*o;wIVsS0G#TA^HMYnG_AR6xwt?n*qV!hkpTjj*ccd? z7#JADxfmE2SQr=>lo%Ko)EF2T{(}Gu41hTQVH_3~Fc)IL|NlthEG#UjJdjFcbvzIN zQwQPkfVltv!_={`ut3FmKr(1txH@EUh(fq7Fc)SXsydK~Na}c4SP<%v#d(k%0TPF+ zLo*H}hm2WRK!FGfOEd$J74d)_2=Onm=KUvR9u9wC*o#ny2xc@zVCTWq;jX;P&EF2TF(k;pqU90MSeWb0Nkd%mX&De z$o7H^#83z`4%s}ALR3pZ=@6WYP|d^iGu${-^Uz}jp$tPEiVJb7L$w)68Jc;hUV#<` zV4uL!0hogtE6B!Sn1^IDvT=CSp%{m$4sIZdak$l?8iz$4)Ie0@aHwNJidjfVpoa@c o6qM`HjKgLg$YM0tp`{m)VIT}oogfYbW3v}*AVeBYLewz;0P&;8xc~qF diff --git a/Apps/Psalmody/Examples/freaks.CPP b/Apps/Psalmody/Examples/freaks.CPP deleted file mode 100644 index 101dc9b..0000000 --- a/Apps/Psalmody/Examples/freaks.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 1.930; - music.stacatto_factor= 0.604; - try { - while (!ScanKey) { - Play("3sEqAsDeCqAsEqAsDeCqAsDeEqEsE", - "Jes\0us \0kind \0of \0freaks,\n\0" - "Jes\0us \0kind \0of \0freaks,\n\0are \0dif\0ferent \0 \0"); - Play("eDqCsDeCqBsBeBqAetBEDqBeCB", - "from \0 \0oth\0er\n\0 \0 \0" - "peo\0ple.\n\0 \0 \0 \0 \0They \0don't \0"); - Play("2qGeG3FsCDCDqFetBACBEDqBeCB", - "care,\n\0for \0God \0 \0is \0" - "their \0 \0joy!\n\0 \0 \0 \0 \0 \0 \0 \0They \0don't \0"); - Play("2qGeG3FsCDCDqFetBAC", - "care,\n\0for \0God \0 \0is \0" - "their \0 \0joy!\n\0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/free.CPP b/Apps/Psalmody/Examples/free.CPP deleted file mode 100644 index 34f46c0..0000000 --- a/Apps/Psalmody/Examples/free.CPP +++ /dev/null @@ -1,168 +0,0 @@ -//8 has graphics -class CBubble -{ - CBubble *next,*last; - F64 x,y,dx,dy,radius,t0; -} root; - -F64 t0,x,y; -U64 flags; - -F64 Windé() -{ - F64 t=ã*(Beat-t0); - return Arg(Sin(t/8),1.0+Sin(t/4)); -} - -U0 DrawIt(CTask *,CDC *dc) -{ - CBubble *tempb; - F64 é; - I64 r,x1,y1,z1,x2,y2,z2; - - if (LBts(&flags,0)) - return; - - dc->flags|=DCF_TRANSFORMATION; - Mat4x4RotX(dc->r,ã/4); - - é=Wrap(ã-Windé); - Mat4x4RotZ(dc->r,-ã/2+é/10); - - dc->color=BLUE; - dc->x=x; - dc->y=y; - dc->pen_width=2; - GrCircle3(dc,0,0,0,10); - GrLine3(dc,-10,0,0,-30,0,0); - - tempb=root.last; - if (tempb!=&root) { - dc->color=LTBLUE; - r=tempb->radius*Min(1.0,0.25+2*(Beat-tempb->t0)); - for (é=0;é<2*ã;é+=ã/2) { - x1=10*Cos(é);y1=10*Sin(é);z1=0; - DCTransform(dc,&x1,&y1,&z1); - - x2=r*Cos(é);y2=r*Sin(é);z2=0; - DCTransform(dc,&x2,&y2,&z2); - - GrLine(dc,x1,y1,tempb->x-x+x2,tempb->y-y+y2); - } - GrCircle(dc,tempb->x,tempb->y,r); - tempb=tempb->last; - } - while (tempb!=&root) { - dc->color=LTBLUE; - GrCircle(dc,tempb->x,tempb->y,tempb->radius); - dc->color=LTGRAY; - GrCircle(dc,tempb->x+0.65*tempb->radius*Cos(5*ã/8), - tempb->y-0.65*tempb->radius*Sin(5*ã/8),1.0+0.2*tempb->radius); - tempb=tempb->last; - } - LBtr(&flags,0); -} - -U0 AnimateTask(I64) -{//Preemption is off after Spawn - CTask *task=Fs->parent_task; - CBubble *tempb,*tempb1; - F64 t_last=Beat,dt,tSpawn=0,é; - - while (TRUE) { - dt=Beat-t_last; - t_last=Beat; - - x+=2*Sin(Beat/3)*dt; - y+=2*Sin(Beat/2)*dt; - - while (LBts(&flags,0)) - Yield; - - tSpawn+=dt; - while (tSpawn>1.0) { - tempb=MAlloc(sizeof(CBubble)); - tempb->x=x; - tempb->y=y; - tempb->dx=0; - tempb->dy=0; - tempb->radius=Rand*6+4; - tempb->t0=Beat; - QueIns(tempb,root.last); - tSpawn-=Rand; - } - - é=Windé; - tempb=root.next; - while (tempb!=&root) { - tempb1=tempb->next; - - tempb->dx+=25*dt*(Rand-0.5); - tempb->dy+=25*dt*(Rand-0.5); - tempb->x += dt*(20*Cos(é)+tempb->dx); - tempb->y +=-dt*(20*Sin(é)+tempb->dy); - - if (!(0<=tempb->xpix_width) || - !(0<=tempb->ypix_height) ) { - QueRem(tempb); - Free(tempb); - } - - tempb=tempb1; - } - - LBtr(&flags,0); - Sleep(20); - } -} - -U0 Init() -{ - flags=0; - QueInit(&root); - t0=Beat; - x=360; y=52; -} - -U0 CleanUp() -{ - QueDel(&root); -} - -U0 Song() -{ - CTask *task; - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Preempt; - Init; - Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Romans,8:28",A="BF:Romans,8:28"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3qEEBeBDsBBBBqDsBFBFD2G3D2G", - "Free \0will... \0 \0 \0 \0 \0 \0 \0 \0 \0" - "I \0 \0 \0 \0fail.\n\0 \0 \0 \0"); - Play("3qEEBeBDsBBBBqDsBFBFD2G3D2G", - "God \0still... \0 \0 \0 \0 \0 \0 \0 \0 \0" - "I \0 \0 \0 \0hail.\n\0 \0 \0 \0"); - Play("3qD2G3eA2G3qCetECAqBsACACqA", - "All \0things \0work \0for \0good... \0" - "to \0the \0Lord.\n\0 \0 \0 \0 \0 \0 \0"); - Play("D2G3eA2G3qCetECAqBsACACqA", - "It's \0all \0good... \0 \0 \0as\0 \0sured.\n\0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; - CleanUp; -} - -Song; diff --git a/Apps/Psalmody/Examples/furnishing.CPP b/Apps/Psalmody/Examples/furnishing.CPP deleted file mode 100644 index 2b33ddfffff6e64047bddefffdef2f41b9cb7a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5309 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 VNF0zDABbQ81rUUR&WDI%k^p!xk3|3g diff --git a/Apps/Psalmody/Examples/happy.CPP b/Apps/Psalmody/Examples/happy.CPP deleted file mode 100644 index 2e338b0e323eff5871a437246a34267caf0665fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmdPbw@}DPELKP_N-W68OfKf)Qcg)t%gjqv2oCj&kKi;iF+dTCjc{?bbCm(y0V9BXtaPR6L!K154+nrZrbB7bwJn z^YhX*AORGdT2hjkmtGuDTAX36psydCnyR4UKhR;+7Rl31J_pPH8vpPXc?7Mzy?iXGRy6lW)p0^ic&%w(8pLB%B? zv0RXtUP)?hLB6e#o+(JEq^ME>6pIQ9(EP+)xTC5ObkcVu29v17Bpl-$E9t>xs zI=L0Q1ev%585g>zmN>cwfr7-z-6hr0sW`|r$Q2#{3NZ%Z`9(P?3NZ%B`MF>RDa06* zLP8)VKQ9#)8br7P?m%?sKwRSzMA$7M`S}Vl21$t^_b9{|task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qAeCDqEAeCDECDECsCC", - "I \0don't \0 \0know.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qAeCDqEAeCDECDECsCC", - "Let's \0go \0 \0slow.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("eDAGAqDsECECCBCBeAFsDCeGDE", - "You \0 \0say \0 \0that, \0God?\n\0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("DAGAqDsECECCBCBeAFsDCeGDE", - "It \0 \0sounds \0 \0odd.\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/honestly.CPP b/Apps/Psalmody/Examples/honestly.CPP deleted file mode 100644 index f05494a..0000000 --- a/Apps/Psalmody/Examples/honestly.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//7 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.758; - try { - while (!ScanKey) { - Play("3qBeABqA2G3AB2hG"); - Play("3sCCCCqBsAAAA2qG3sCCCCqE2GR"); - Play("3sBDBDA2G3A2G3etAAEsGCGCetFFEqDFeE2G"); - Play("3sBDBDA2G3A2G3etAAEsGCGCetFFEqDFeE2G"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/hope.CPP b/Apps/Psalmody/Examples/hope.CPP deleted file mode 100644 index ab4889d6ae7e395454785c513155c2cb7cece7cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1746 zcmdPbw^YbTELKP_N-W68OfKdE0Zs)lPzesuQL-_#Q_^wrv^7-W;^J~MGf^lpuysmJ zEV1U|3N=u0DM~E&EYWZdNi5D*(9&^saaPbuN!H}5=2B4bG&51i)Tz*^wB}M!sIWCQ z&^9tK(9#G_EY|=Tpj%>~W1(lDsR@#HL%XKF}2Rr*4E?#dBMHNCo?YTRMGV{`l14@fCtQGY2 zgHux#RD8U3l#nHqbR2D!eEqCY#8kKx6x@n+?MhNBO5zhsN{VcKLYyNV{cLPZw4Hn$ zoxMSB1}R7>N-U4hEU{ICL=jB5B(XR2b zF$UPI3C{p4L$?a#DdR%-pkg;yH& zgxw#|uz>gqne;4C2Rk(HS0H-lnk_*T$u;!}e;sRwAYc2*x1_;n#VqjomU|?Wm=X}J#z;NmR z|Nrm*|NpPztQDx?xx{1Mf8YDtb0;TF(olK%ds+SM+2+6h`%gCU{kE`571(PXGV^ z|NH;{|NqtA-8bOOZf<#=^JY9@ZTns}z0##fm+2`Nho_l*+?Do66 za_{BbHp{=i{q?T9yK5~a80-oCc>Hi(^jdz-0;kP62H z7ET!k1_oIM28Q2Y2W-E)=j`o0ytmmnB^VeOG#MBe-hjpLFU!6CdRr-{6axc;90LOb zF9QR^y6si7L00E7gFSW);<0`Czid1wvG9R{{NMlo|Jgx~=Mx2S|NQ^|pOIhm<^TWx zK}=DQG$>v~nL%nmn4MDyL@_Wh@GvkinB~sf=ikN&HXURsC`3gLcL=$5GIL5ZFfjZD znFk7{_mcy+<=(wkdY6Hd8ycSf|NsAgdx9<}11Bc~1H)x#JbbIa$HK@i`u6|-{~#ZT Yp8Nm*KOX}FgDA+i;vlQ}!A!8r0I2*PBme*a diff --git a/Apps/Psalmody/Examples/image.CPP b/Apps/Psalmody/Examples/image.CPP deleted file mode 100644 index 59d704d..0000000 --- a/Apps/Psalmody/Examples/image.CPP +++ /dev/null @@ -1,104 +0,0 @@ -//7 has graphics - -#define WIDTH 17.0 -#define X 290 -#define Y 25 - -F64 t0=Beat; -U0 DrawIt(CTask *,CDC *dc) -{ - F64 dt=Beat-t0,d,y,x1,y1,x2,y2; - I64 i,j; - - dc->color=BLACK; - dc->pen_width=7; - for (i=0;i<4;i++) { - y=0; - d=dt%4; - if (d<1) { - d+=0.25*i; - if (d<1.0) - y=Tri(d,1)`2.0; - } - x1=X+(i-2.5)*WIDTH; - y1=50-20*y; - GrLine3(dc,x1,y1,0,(X*3+x1)/4,Y,0); - } - - x1=X+1.3*WIDTH; - y1=37; - GrLine3(dc,x1,y1,0,(X*3+x1)/4,Y,0); - - for (i=0;i<4;i++) { - y=0; - d=dt%4; - if (d<1) { - d+=0.25*i; - if (d<1.0) - y=Tri(d,1)`2.0; - } - x1=X+(i-2.5)*WIDTH; - y1=50-20*y; - dc->color=YELLOW; - dc->pen_width=5; - GrLine3(dc,x1,y1,0,(X*3+x1)/4,Y,0); - - dc->color=BLACK; - for (j=0;j<4;j++) { - x2=(x1*(4-j)+(X*3+x1)/4*j)/4; - y2=(y1*(4-j)+Y*j)/4; - GrLine(dc,x2-2,y2,x2,y2-1); - GrLine(dc,x2,y2-1,x2+1,y2); - } - } - - x1=X+1.3*WIDTH; - y1=37; - dc->color=YELLOW; - dc->pen_width=5; - GrLine3(dc,x1,y1,0,(X*3+x1)/4,Y,0); - dc->color=BLACK; - x2=0.6*x1+0.4*(X*3+x1)/4; - y2=0.6*y1+0.4*Y; - GrLine(dc,x2,y2-1,x2-1,y2+1); - x2=0.2*x1+0.8*(X*3+x1)/4; - y2=0.2*y1+0.8*Y; - GrLine(dc,x2-1,y2,x2-1,y2+2); -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint( - "Asking God for stuff is like knocking on the door\n" - "of a neighbor in the middle of the night.\n" - "It's annoying! We're supposed to love God!\n" - "$LK,"BF:Luke,11:5"$\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - t0=Beat; - Play("3qBBE2GG3FFC", - "We \0are \0in \0the \0image \0of \0God.\n\0 \0"); - Play("BBE2GG3FFC", - "Some \0people's \0prayer \0is \0ver\0y \0odd.\n\0 \0"); - Play("eGDqCB2G3eGEqEC2G", - "They \0don't \0love \0Him.\n\0 \0" - "They \0love \0their \0neigh\0bor.\n\0"); - Play("3eGDqCB2G3eGEqEC2G", - "Pest\0er\0ing \0Him.\n\0 \0Ask\0ing \0for \0fav\0ors.\n\0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/josh.CPP b/Apps/Psalmody/Examples/josh.CPP deleted file mode 100644 index 2e0c01f4c69b16afcec9692acc033e97ebba706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2544 zcmdPbH&@6=ELKP_N-W68OfKdE1C`(a9VHt>J0%?_Pg_G3E-tQ61BKxHymSpsu4*m? z1?P~&;%o)2lEmU{Yc2%^w_;s85Ia6KFC{)X$yO~mF9oE+H7~{438cWcv^X<4IJKlC zGcUb3sJH|qmJ1ToD@n~Q$hTE6(lfCzK!_HXBqk@8l;p>!B_@~T7uhNp=vf$=faFVx zDiuI3P*4C_Xd94U5LytHnOYuDl$lqe!NsYdprqpCt)moBoS2hatYc_lWn`wL<7lho z^I42qbF zLQraAib6?7szP~2eom@FazAfM|P86k{85hG-bCdls!3ZOs@Ps}XQ z0C^rN7M_{skzZ7$0g8n3%)I!V)U*;E7^f&RJ)=YiRdrZuQ3+giQhrHEey+ALTnALZ z&=gr$c}8YVs)B}MaB^avcWR|3Gzt_H0&)^7HI$5togJMWQyrZO9aG&LQ%hXjjNDV* zjok{}jog)VK%ohW78Pe76&3#s9fcSJg&2d}N(c=h-Sdkx6l3zhG7u4k7z1!TC@3gJ z=9j|7axzm>zzS7V+=E~v;NxQenE}EeJ3tr|Q^?{lIg-Ws82)25hh%X+2JGg5#rZ()gJH1y z`QYMkIjA^@kBmXWAU7h5f!JViEE4#|F*Gpz2M6+hbP2dPngo@^8UDlUMKzzs;-It+ t^)HIOgF+mX%0V#;N+|!ahYu0%L^1`EiJ|@lr3(Z`G9Q#@VHj#Y0|3vfD}w+4 diff --git a/Apps/Psalmody/Examples/keeping.CPP b/Apps/Psalmody/Examples/keeping.CPP deleted file mode 100644 index 9e3e66472765ead17ea3f58c7fdb50cb6928c5c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 zcmdPbw@}DPELKP_N-W68OfKf);!+6?&{486v{TY?^0YNn;o{rF|c(?O)RnI z;tDlTa4AYG_bkzH4oNJ|R?yOMc5znFN=eq_s^(Hq04Yu>0V~!mF|g)RP{>SE&`2q< zGcwau04Y#VNJ-YUOUp@2FRrn5adwLj33BuccJmMNbqw+J_XFurQ1DGGF{v;K$}fr1 z0I4q0G0-#8M3xFpPRvP#%4ryyY6oZLX*|}_NGZ`ZGSk%5)HgJRDhFw=ur)RYI|X8Q zrLD0k#H`?gqRf(1V~vz#9Rn~_@pMA=JlKp{u3E6KgY)y!H6Wf0PAw_P%u6p0C@s#g zR?ycEPEA!%@$uGCLY7d{akN$P^|L||Qvn50v94W8QDS*~W{IsDBrHMBaVyrfD@iQQ zj!(@?iBC?lRSV8b0fn$@UW&65NP%x@ab_~iw4mY=kXSBAOs^z0w;Zt7G?BeW%%vJ&i6-X&WWon6wvs0?Gle3ef6EYiJouiSvaj}!T zle?RD-3D#ql2O+|NMDv?g~k1@!G+v%R4 zqNk^aYy(y{%(3MesYR(UA1K5aWI{cYTM5xtkXUJt=Db=i1%+CLgQLJau-A4!~rg$0!dQi-gN2LfQ~AUqxr_y2#GIu;fds5lQu28|0> zhb#_J2-gMX!puWe2Qm>!9S;i&LLIU=50WE5;&63n#)0IJF$)U|#2?gF_aDtc$d>Ye zJdDF1c+??+8BGz$IC!|=vltw45dVUc0fsqH0Tgwh6ap1Tqrl2w{=jV@C>{QXrvpd= zL^BD@g&2o04`d=(0+oO&Lsf?vHc(rU?FAW#p%7*qvUwndsFs4#AvhPInui%SaN|(T zLyr}NG7NPnF2t!0)n+7RXy&1M1zHqtask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - try { - task=PopUpViewPrint("$LK,"BF:Matthew,19:16"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - "$$WW+H,1$$"; - while (!ScanKey) { - Play("3eGAetCCCFFDqAeAAFAAFqG", - "I \0 \0have \0 \0 \0kept \0 \0 \0 \0 \0 \0" - "the \0 \0 \0com\0mands.\n\0"); - Play("eGAetCCCFFDqAeAAFAAFqG", - "I \0 \0have \0 \0 \0kept \0 \0 \0 \0 \0 \0" - "the \0 \0 \0com\0mands.\n\0"); - Play("EeEGqEeEEqDBetCCGqC", - "What \0 \0 \0else \0 \0 \0must \0I \0do?\n\0 \0 \0 \0"); - Play("EeEGqEeEEqDBetCCGqC", - "What \0 \0 \0else \0 \0 \0must \0I \0do?\n\0 \0 \0 \0"); - "$$GREEN$$(Christ said sell all and follow me.)\n$$FG$$"; - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/killed.CPP b/Apps/Psalmody/Examples/killed.CPP deleted file mode 100644 index 8f6206c..0000000 --- a/Apps/Psalmody/Examples/killed.CPP +++ /dev/null @@ -1,87 +0,0 @@ -//9 has graphics - -#define RAD 20 -#define WIDTH 16 - -F64 t0=Beat; -U0 DrawIt(CTask *,CDC *dc) -{ - F64 dt=Beat-t0,x1,y1,x2,y2,z,dé; - I64 i; - - DCDepthBufAlloc(dc); - dc->x=200; - dc->y=70; - dc->z=GR_Z_ALL; - dc->flags|=DCF_TRANSFORMATION; - Mat4x4RotX(dc->r,ã/4); - Mat4x4RotY(dc->r,Sin(ã*dt/23)/5); - - if (dt<28) - dé=-2*ã/8+(dt+16)*Sin(-ã*dt)/3000; - else if (dt<32) - dé=-2*ã/8-2*ã/8*(dt-28)/4; - else - dé=-2*ã/4; - - z=WIDTH*3; - x1=-12; y1=0; - x2=x1-RAD/2*Cos(dé); - y2=y1+RAD*Sin(dé); - dc->color=BLACK; - dc->pen_width=14; - GrLine3(dc,x1,y1,z,x2,y2,z); - dc->color=YELLOW; - dc->pen_width=12; - GrLine3(dc,x1,y1,z,x2,y2,z); - - - for (z=0;zcolor=BLACK; - dc->pen_width=10; - GrLine3(dc,x1,y1,z,x2,y2,z); - dc->color=YELLOW; - dc->pen_width=8; - GrLine3(dc,x1,y1,z,x2,y2,z); - x1=x2; y1=y2; - } - } -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - t0=Beat; - Play("M4/4"); - Play("3qBsEGeBDe.AsCeA2qF3sBBeACBBsBB", - "I \0could \0 \0 \0die.\n\0 \0 \0" - " \0 \0 \0 \0 \0Could \0I \0kill?\n\0 \0 \0"); - Play("qBsEGeBDe.AsCeA2qF3sBBeACBBsBB", - "I'm \0not \0 \0 \0spry.\n\0 \0 \0 \0 \0 \0" - " \0 \0I \0best \0chill.\n\0 \0 \0"); - Play("eDDsGFGFeEBqGM5/4", - "If \0 \0God \0 \0 \0 \0 \0 \0asked,\n\0"); - Play("eBGF4A3e.FsEqAAM4/4", - " \0\"$$RED$$Can \0 \0 \0you \0 \0Kill?$$FG$$\"\n\0 \0"); - Play("eDDsGFGFeEBqGM5/4", - "I \0 \0think, \0 \0 \0 \0 \0 \0\"Yeah.\"\n\0"); - Play("eBGF4A3e.FsEqAA", - " \0\"Right \0 \0 \0my \0 \0will.\"\n\0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/limit.CPP b/Apps/Psalmody/Examples/limit.CPP deleted file mode 100644 index a5c8e9d9351aba76117f384199a503b409897259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1547 zcmdPbw^YbTELKP_N-W68OfKefGc!>rF|c(?O)RnI;!+6?&{486v{TY?^0YNn;o=H4 zP;e;!;pZN!GPX&d>g&2dp{1Sy2 zgM!lH422kj%KXwIg&2dJ(&TKtn7kMR1#Acs#vl{uXob6*bE>m@p<8N+qoZ4)s~g-C z?)fPSF$S5%aIYxD7$hph7!)UGtask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.976; - music.stacatto_factor= 0.538; - try { - while (!ScanKey) { - Play("3qEDCDeEEqEeDDqD"); - Play("EDCDeEEqEeDDqD"); - Play("eDAsFDFDqFsFBFB2qG3etBBBqFC"); - Play("eDAsFDFDqFsFBFB2qG3etBBBqFC"); - } - } catch - PutExcept; - Snd(0); -} - -Song; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Psalmody/Examples/mightest.CPP b/Apps/Psalmody/Examples/mightest.CPP deleted file mode 100644 index b0971fc..0000000 --- a/Apps/Psalmody/Examples/mightest.CPP +++ /dev/null @@ -1,52 +0,0 @@ -//8 has graphics -U0 DrawIt(CTask *task,CDC *dc) -{ - F64 x1,x2,y1,y2,x3,y3,radius,pedals,é,t=Beat, - cx=335,cy=task->pix_height>>1; - Bool first=TRUE; - - radius=cy*(1.0+Sin(2*ã*t)); - pedals=8; - - dc->color=BLACK; - for (é=0;é<2*ã;é+=2*ã/100) { - P2R(&x2,&y2,radius*Abs(Sin(pedals/2*é))+5,é+t); - if (!first) - GrLine(dc,x1+cx,cy-y1,x2+cx,cy-y2); - else { - first=FALSE; - x3=x2; y3=y2; - } - x1=x2; y1=y2; - } - GrLine(dc,x1+cx,cy-y1,x3+cx,cy-y3); - - dc->color=(2*t)%16; - GrFloodFill(dc,cx,cy); -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - MusicSettingsRst; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - - music.tempo=2.5; - try { - while (TRUE) { - Play("qBq2G3sGAGAetCBBqAq2G3sBBBBeFE", - "I \0am \0feeling \0 \0 \0 \0 \0 \0brave.\n\0"); - Play("qBq2G3sGAGAetCBBqAq2G3sBBBBeFE", - "I \0am \0feeling \0 \0 \0 \0 \0 \0brave.\n\0"); - Play("qCsDEDEq2G3qDqBqAqGq2G3", - "Test \0me \0 \0 \0 \0Lord. \0See \0if \0I'm \0wor\0thy.\n\0"); - Play("qCsDEDEq2G3qDqBqAqGq2G3", - "Test \0me \0 \0 \0 \0Lord. \0See \0if \0I'm \0wor\0thy.\n\0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/mildly.CPP b/Apps/Psalmody/Examples/mildly.CPP deleted file mode 100644 index aa83f32fada47e5c02fa3eaf6c73242e13f9a973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1996 zcmdPbH&@6=ELKP_N-W68OfKf);#3I^&{0y-aq_e^RN(>xBq1XegtReK8mxwk%gxM0 zp~S$}DK)Xgnu{ycK*6ObvD~vn!#O0eI9owW$JxbMK`SL$ldGCbK>?(=QYWPZtX#Lm zz?w@zAu~-uBc;U7*2qN9K$A;BK|vw7peVB>)mS4XS;qhjRXm+^lx&Rcz|J#P(FAEr z%_&Y*0GX+vP-z>SnWtf-^;pZTG$$uGv0NjiM8`xEtPIUGQ#}K%N*x0oh>3;}6Ad9I zqAAryRf}qSEmtkrv%&d!=^7BfK|NfOSey-VUvO$kNoHPpaX@KthP8seesF54f{Kr~ zjuNtjl8&RTlCPf?ikJ#0po(?vN>VFI;uA|sifo-D9sO)- z1PyMGec_3jB^n^DP_gjLJdgaMDh-gc%QN%hb5hevbYPsK%=C;B9aPm}sYNAl)k*m! zCHcA9#&8`_0Yg({UF8{>IjIU7iowZ=dETj¬iYAQC4iX(=eU_2!l^ROMg|5Z!uI{ddF2&By&d!BS#V)Qc zu7z&yN;+JeV3U0Ei&AtHVhl<$Qj1d6ixpxF6k-e#Ayjcmeo?MMj6o?_5F(}o)mM<8 z2hjx)hLFXniFz@4VAZgoRZxJqWU#oy-PPI1-8i+x$;jQ<&E4JA#mOnv$rT%D1>7SU_k)!GaeE>3 z=Oh)+Ns6A6R5T~4c&Z6$PErDkK*Vj%Pd4$q^rUinX^PVwsRzi(ZW?*1o z-o|@-TW(zJ^|{;6zTTF2V?*xY4T;faIk&gvqN6=)nK>sjFfhDgU|-3y#%oY zo%EgbtPV-|NpPUz`!8Iz`&rvz`(!-V=Q1`U@!#s9SjT%o*)%Qj0_Ae3=9k)8mz(`s#k`A zfdRzkl7=!s?y&`F0STBv9R}8t#K6Gdz`($e2(#t?|Ns9J7#JAlGBPlLXht^C6b1$c zCk6%vQ68vbQIHovxtask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - "$$WW+H,1$$"; - while (!ScanKey) { - Play("3qAAsG2G3G2G3qGF2eG3FqEetCBA", - "Let's \0ask \0Mike\0 \0 \0 \0y; \0" - "Hates \0 \0every\0thing.\n\0 \0 \0 \0"); - Play("qAAsG2G3G2G3qGF2eG3FqEetCBA", - "Let's \0ask \0Mike\0 \0 \0 \0y; \0" - "Hates \0 \0every\0thing.\n\0 \0 \0 \0"); - Play("2eG3GqE2eG3FqF2sG3G2G3GqAetGEBqD", - "What \0do \0YOU \0 \0 \0know. \0" - " \0 \0 \0 \0 \0It's \0 \0kosh\0er!\n\0"); - Play("2eG3GqE2eG3FqF2sG3G2G3GqAetGEBqD", - "What \0do \0YOU \0 \0 \0know. \0" - " \0 \0 \0 \0 \0It's \0 \0kosh\0er!\n\0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/o.CPP b/Apps/Psalmody/Examples/o.CPP deleted file mode 100644 index 4c70dc7..0000000 --- a/Apps/Psalmody/Examples/o.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//9 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3sCGCGetADD2sG3G2G3GFAFADDDDqGsB2G3B2G3qG"); - Play("sCGCGetADD2sG3G2G3GFAFADDDDqGsB2G3B2G3qG"); - Play("eG2G3qEeAsA2G3qAsEAEADEDEqFeA2G"); - Play("3G2G3qEeAsA2G3qAsEAEADEDEqFeA2G"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/partake.CPP b/Apps/Psalmody/Examples/partake.CPP deleted file mode 100644 index b44a6a58f54a9cd1fa86721a0c0fc8c585c0ea7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2366 zcmdPbw@}DPELKP_N-W68OfKe92@cRvvN5z%(sA;%HB{k(fKUU4;QYLF4Nb0UE(Ha* zVqLqE#NzDu)V!4Vf&DL zp6crE>Qw0HnCj}3TH@^Hq@=^esi2^spcImkn3t^(W1tXY5Sd@9qYz`@o}U8Yr{xzZ z#26&T7$lYEffb}A<|U`<#pJ~pC_!~Y6hcTPO^~}lh6WcDWtOCBsCYUd2M1hQNj1YF zSxHAdCQluv1LD-d=u&g6E_HHpDs)SAbT4#Cb#ifWb8#+og@-64G!$YC!c%i{KmqEh z5Mz*Dnp#{8;wT^juOuU}L?Ol?FTY$N#vrpqy;vc}pd>Rl6-4DL#2BO|mVg5rqy-*$ z(2yz_C>PXnDJaw`Bqx?6XK;byI-s<~wIVsS0Gv*P^HMYnG_AR6xwt?{-kOVnkpTh( z*ccd?85kHC`Iwm)7#O&?85kI(AyO(JJ_7>-h-PD8V9*Eg*`W+x1_lNbkN}J!&cMK6 z3=)7b6c`v7v_Jwdh7tn<0|;}02p9(01r`7?W?*0d84eZ@VqjnZ`4yxUWGy2P7f7)h0|NudK5)px7@#0D067iD00k#V z1tSv|NC*_eAUA=73B~|L2*?RsFoq-p0|VIkAcih9B0yTXxS)vwmL{MyD2;*L3S+P^ zFfeF>+yP^7K$902oWa1r01j1EC6{Nq!ScoAT?Yt2FQD$ zK;{B5Kp6!TQ=q`)f-w|fnGO^mpacYx03~WJQ2c`!vd{#?$OaAukX@kk3(EQ6gbZSU zTnchN*q0y%$Rv=_Tp$j}?I7QRk|J0D6muY1kkN20AeEp53l4pdEXZ<@Ibd5r`au{h z05TB70O<#@xj@Q643GfG1K`X8;(*KmxfqthK=B5OYLI2%!~kP}QYgp-E*Jw;#DIzr za9IOlSTHa!{QLj^KNpMvQV9-R7z5-#P#|-`7@%+hhc=7>N@*asa)DwH6jLBKf&z~V Y#sE1M#O8uAK+3_%1I7S(92CC{0CL&|r2qf` diff --git a/Apps/Psalmody/Examples/permitted.CPP b/Apps/Psalmody/Examples/permitted.CPP deleted file mode 100644 index 2c26530..0000000 --- a/Apps/Psalmody/Examples/permitted.CPP +++ /dev/null @@ -1,21 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("2eG3DGDqGetA2G3B2qG3GCE", - " \0 \0 \0 \0 \0 \0 \0 \0 \0It's \0ko\0sher.\n\0"); - Play("2eG3DGDqGetA2G3B2qG3GCE", - " \0 \0 \0 \0 \0 \0 \0 \0 \0It's \0ko\0sher.\n\0"); - Play("C2G3sGFGFDCDCetE2G3CGFAqDeFC"); - Play("qC2G3sGFGFDCDCetE2G3CGFAqDeFC"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/personal.CPP b/Apps/Psalmody/Examples/personal.CPP deleted file mode 100644 index 25d61b7..0000000 --- a/Apps/Psalmody/Examples/personal.CPP +++ /dev/null @@ -1,27 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("qRsR2GRGeGR3qA2etG3EEqEeDCB2G", - " \0 \0He \0 \0is \0 \0 \0our \0 \0 \0 \0" - "per\0son\0al \0sav\0ior.\n\0"); - Play("qRsRGRGeGR3qA2etG3EEqEeDCB2G", - " \0 \0We \0 \0can \0ne\0 \0ver \0 \0 \0 \0" - "re\0turn \0the \0fav\0or.\n\0"); - Play("3CBBGsF2G3F2G3qBsBBBB2eG3AetBBGeBF", - " \0 \0 \0That's \0 \0O.\0 \0K. \0 \0 \0 \0" - " \0 \0 \0 \0works \0 \0 \0for \0me.\n\0"); - Play("CBBGsF2G3F2G3qBsBBBB2eG3AetBBGeBF", - " \0 \0 \0That's \0 \0O.\0 \0K. \0 \0 \0 \0" - " \0 \0It's \0 \0works \0 \0 \0for \0me.\n\0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/population.CPP b/Apps/Psalmody/Examples/population.CPP deleted file mode 100644 index a8be10f..0000000 --- a/Apps/Psalmody/Examples/population.CPP +++ /dev/null @@ -1,20 +0,0 @@ -//7 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.780; - try { - while (!ScanKey) { - Play("3eCDBCA2FFF3C2F3E2F3A2F3sEEeD"); - Play("F2FFF3qCeF2F3F2FFF3qCeF2F"); - Play("3qGsEAEAqBetDCF2qG3DsGDGDetCRC"); - Play("qGsEAEAqBetDCF2qG3DsGDGDetCRC"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/project.CPP b/Apps/Psalmody/Examples/project.CPP deleted file mode 100644 index 8e37fa7..0000000 --- a/Apps/Psalmody/Examples/project.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qGsARARCBCBeACACGCGBAsEA", - "I'm \0mak\0 \0ing \0 \0some\0 \0thing \0" - " \0 \0 \0 \0 \0for \0 \0God.\n\0 \0 \0 \0 \0"); - Play("qGsARARCBCBeACACGCGBAsEA", - "I'm \0mak\0 \0ing \0 \0some\0 \0thing \0" - " \0 \0 \0 \0 \0for \0 \0God.\n\0 \0 \0 \0 \0"); - Play("eAsCEqEsDECEqAsDACAeAGFsBDeCB", - " \0 \0 \0I \0hope \0 \0He \0 \0 \0likes \0" - " \0it.\n\0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("AsCEqEsDECEqAsDACAeAGFsBDeCB", - " \0 \0 \0I \0hope \0 \0He \0 \0 \0likes \0" - " \0it.\n\0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/proponent.CPP b/Apps/Psalmody/Examples/proponent.CPP deleted file mode 100644 index 8cc4c58..0000000 --- a/Apps/Psalmody/Examples/proponent.CPP +++ /dev/null @@ -1,55 +0,0 @@ -//8 has graphics - -#define X 25 -#define H 5 - -F64 t0=Beat; -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 dt=Beat-t0; - dc->x=325; - dc->y=40; - dc->z=GR_Z_ALL; - dc->flags|=DCF_TRANSFORMATION; - Mat4x4RotZ(dc->r,ã*dt/8); - Mat4x4RotX(dc->r,3*ã/8); - - for (i=0;i<=2*H;i+=H) { - GrLine3(dc,-X,-X,i,X,-X,i); - GrLine3(dc,X,-X,i,X,X,i); - GrLine3(dc,X,X,i,-X,X,i); - GrLine3(dc,-X,X,i,-X,-X,i); - } - - GrLine3(dc,-X,-X,0,-X,-X,2*H); - GrLine3(dc,X,-X,0,X,-X,2*H); - GrLine3(dc,-X,X,0,-X,X,2*H); - GrLine3(dc,X,X,0,X,X,2*H); -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (TRUE) { - t0=Beat; - Play("qCqAqAsEDEDqBqBetGGEs2G3C2G3C"); - Play("qCqAqAsEDEDqBqBetGGEs2G3C2G3C"); - Play("etCD2G3etEE2G3qFqFqAsACACsAFAFetECC", - "In \0my \0 \0corn\0 \0 \0er? \0 \0 \0 \0 \0 \0 \0" - "Hope \0we're \0right.\n\0"); - Play("etCD2G3etEE2G3qFqFqAsACACsAFAFetECC", - "In \0my \0 \0corn\0 \0 \0er? \0 \0 \0 \0 \0 \0 \0" - "Hope \0we're \0right.\n\0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/psalm.CPP b/Apps/Psalmody/Examples/psalm.CPP deleted file mode 100644 index 5da41a1..0000000 --- a/Apps/Psalmody/Examples/psalm.CPP +++ /dev/null @@ -1,26 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 3.360; - music.stacatto_factor= 0.846; - try { - while (!ScanKey) { - Play("M5/4"); - Play("2qGGG3qtCBA2qGGG3qtCetBBqtA", - "Hymn's \0not \0long.\n\0 \0 \0 \0" - "Nor \0this \0song.\n\0 \0 \0 \0 \0"); - Play("qEeCCqDqtCBAM4/4", - "For\0 \0 \0give!\n\0 \0 \0 \0"); - Play("qDeA2G3DG2G3DFFAC2qG3eAE", - "That's \0 \0 \0all \0 \0I \0 \0say.\n\0 \0 \0 \0 \0 \0 \0"); - Play("qDeA2G3DG2G3DFFAC2qG3eAE", - "This \0 \0 \0I \0 \0 \0 \0pray.\n\0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/purpose.CPP b/Apps/Psalmody/Examples/purpose.CPP deleted file mode 100644 index cdd76ed6b9b77c3c045aaf2b8e6132d7616eb8ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4695 zcmdPbw^YbTELKP_N-W68OfKe92@cRvvN5z%(sA;%HB{jOgHQv7;QYLF4Nb0UE(Ha* zVqLqE#NzDu)V!4VR7eb7HkUptUOLJ2dVhqwtQ;Um1PKP-Vq6p+VkhDUKL1Gb<0drh(Mt**AsvbcH zI=L0PIHx)}1-Yk|xCXfuy1T+d3~mWB!&5z1A;zE>8U)Gtc`*iQrNyZ!Fq<$!fMg34 zVhnOii=p1nNGt<+tT-<}zY5cmS}p~JT7~4qlH?37P$UPGmbg|Vrxt)yYH(hPhJmIv zS1lJ8DA8MUF)%VffHFS=0}}%S1B(R%0|P$;0|SUwWnf?s=YlARWnf^?U|?YQj{+ca zU=l?fKL@NHLZB){H6O%d{||#ut3iVQL3)vNLbza=|Ns9pFu?V&gH)m_g!538fh_^~ zje!BAh2cLtgaa{?0c;LP24p-~Es7OLW`eYVxeO3xAg6&bNCSugHi4a;9mIxO#=yW1 z5&+3CFo5+zBte#gO+gq64TS%2Wgwkk3>IPd4`zc5hXlj_{~)J>yabW>4>BHNA6Nit z1;SW}Rp1arQU+2BvH%ojAOpef`w#X6J2D?^DHeU~|DonWEP@yXG87p@L_scM_zwwd zkT!O3ghE6>a_nfvgF+4zU0@493jY6xxE|SP2pgmfWE$A@AcCD8;s+2Lg#Uwr2OJp? z4KNZEXkZ^e%?EiICWlOeEC9tRJIJ{p!$8pqau~yZ29OxohsYXWY*4s@)q%nXWE&Po zfIJGa7-TLxNCPyM8Ne~X4oa{fQJgv<3P3LT&yHOYJIMW@5P_s3kXyiM670(VV0+j> z6qt`jfE^7=XQ0r>VLUr1AAu9if3Tau`2-Xp5H17A54fBL)(bJ8pc_ESATb580Ti{M zXd&!(uu8nagKRFubOZ^~jn8o)dE8M1O4y+MgD?-11=futbU}d&vH{%%@caT&07?Xy z#==EFsT3XqaE*|t1|<%V`N+Wo;zKal_3R-1aKo@L7(meoQVP)oA|Zyu5;rKrz>^p> z0fNkdsAM3*d{8PvjwHA*VD1M81IRv5h69-m#^Ce|5(V>c5ul(4t3*}+u>o#8h=E}c zJmOF+MK%S@2AdCZAgVI3FevYXf&qj?GKd`#2XHYE0~%-` zqZv3jI52`4}gM!5ThDMG{*20COQl0XsVbx$ehE z7GPr$1T>kEYd#_4!EFmr;YFtVX>2}$&<6z*BnI$=4=AHyIFkXKe=&qX24Y}P6kstask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.646; - music.stacatto_factor= 0.989; - try { - while (!ScanKey) { - Play("2q.G3sCCqAeBB2qG3CeAAqB"); - Play("q.CsCCeCCCCBDDDDDqB", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0Go!\n\0"); - Play("e.AsADCeAetDDDeAsEGeBFsFDFDeEsFACGeC", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0Go!\n\0"); - Play("e.AsADCeAetDDDeAsEGeBFsFDFDeEsFACGeC"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/reasoning.CPP b/Apps/Psalmody/Examples/reasoning.CPP deleted file mode 100644 index 2249854..0000000 --- a/Apps/Psalmody/Examples/reasoning.CPP +++ /dev/null @@ -1,27 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - while (!ScanKey) { - Play("3sF2G3F2G3eGDA2GqG3eEDsAAAA2eG3FsFGFG", - "In \0 \0the \0 \0twi\0light \0zone,\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("F2G3F2G3eGDA2GqG3eEDsAAAA2eG3FsFGFG", - "keep \0 \0a \0 \0friend\0ly \0tone.\n\0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("C2G3C2G3qFG2GG3sGDGDqGsDCDC", - "Mind \0 \0in \0 \0knots? \0 \0 \0 \0Skip \0" - " \0de \0 \0bait.\n\0 \0 \0 \0 \0"); - Play("C2G3C2G3qFG2GG3sGDGDqGsDCDC", - "Watch \0 \0those \0 \0thoughts. \0 \0 \0 \0" - "Head \0 \0on \0 \0straight.\n\0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/reliance.CPP b/Apps/Psalmody/Examples/reliance.CPP deleted file mode 100644 index e94cd17..0000000 --- a/Apps/Psalmody/Examples/reliance.CPP +++ /dev/null @@ -1,42 +0,0 @@ -//8 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint( - "$$WW+H,1$$$LK,"BF:Matthew,6:11"$\n\n" - "I find two things interesting. Jesus asks for " - "the bare minimum... can't ask for less than daily bread. " - "Also, He actually demands it. I find that funny.\n\n" - "$LK,"BF:Matthew,10:31"$\n\n" - "I have a funny story. I used to shoot birds with a BB-gun. " - "That passage didn't snd so comforting!! How many sparrows " - "am I worth?\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - DocRecalc(DocPut(task)); //Reformat word-wrap with new window size. - while (!ScanKey) { - Play("3qGsB2G3B2G3eF2G3sGGGGeRFC2G3qFC", - "Where's \0my \0 \0 \0next \0 \0 \0meal!!\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("GsB2G3B2G3eF2G3sGGGGeRFC2G3qFC", - "God, \0we \0 \0 \0had \0 \0a \0deal!!\n\0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - Play("B2GsG3A2G3AeCCsCECEqACsGFGF", - "Day \0old \0bread?\n\0 \0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0"); - Play("qB2GsG3A2G3AeCCsCECEqACsGFGF", - "'Dai\0ly' \0I \0 \0 \0 \0said.\n\0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/reposes.CPP b/Apps/Psalmody/Examples/reposes.CPP deleted file mode 100644 index d7bc165..0000000 --- a/Apps/Psalmody/Examples/reposes.CPP +++ /dev/null @@ -1,28 +0,0 @@ -//9 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 1.820; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3eC2G3DDEDqCeEEGFGFqE", - "Sit\0ting \0 \0 \0on \0the \0fence,\n\0is \0" - " \0 \0 \0no \0de\0fence.\n\0"); - Play("sFFeGFEFEqDsCCeDCBqBB", - "Is \0this \0seat \0 \0 \0tak\0 \0en?\n\0An\0" - " \0y\0one \0op\0 \0pose?\n\0"); - Play("etB2GG3qE2eG3FEEetFBAqFDetFCC", - "Take \0 \0a \0step.\n\0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0"); - Play("B2GG3qE2eG3FEEetFBAqFDetFCC", - "Take \0 \0the \0step,\n\0 \0 \0 \0 \0 \0 \0" - " \0not \0back.\n\0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/restless.CPP b/Apps/Psalmody/Examples/restless.CPP deleted file mode 100644 index bd831cb..0000000 --- a/Apps/Psalmody/Examples/restless.CPP +++ /dev/null @@ -1,30 +0,0 @@ -//9 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 1.710; - music.stacatto_factor= 0.736; - try { - task=PopUpViewPrint("$LK,"Ecclesiastes,5:12",A="BF:Ecclesiastes,5:12"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3sDDDACCADDACCAe.DsCCC2G3FD2G3FD2G3CCAe.D", - "I \0 \0 \0 \0got \0 \0 \0paid, \0 \0 \0to\0 \0 \0" - "day.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qD2sG3G2G3GetGDAeF2GqG3etFBAEACECE", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0I \0 \0 \0" - "can't \0 \0 \0get \0 \0to \0"); - Play("qD2sG3G2G3GetGDAeF2GqG3etFBAEACECE", - "sleep.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/risen.CPP b/Apps/Psalmody/Examples/risen.CPP deleted file mode 100644 index a8448ed..0000000 --- a/Apps/Psalmody/Examples/risen.CPP +++ /dev/null @@ -1,91 +0,0 @@ -//9 has graphics - -/* -This is one of the oldest songs. I picked -the random name "risen" and said to God -"Oh, you're ambitious," thinking it was -an epic name. He laughed and gave an -epic song! -*/ - -F64 t0=Beat; - -#define WING 6 -#define BODY 2 - -U0 Bird(CDC *dc,F64 wing_é) -{ - CD3I32 p[3]; - dc->color=WHITE; - - p[0].x=0; p[0].y=0; p[0].z=-BODY; - p[1].x=0; p[1].y=0; p[1].z=BODY; - p[2].x=-WING*Cos(wing_é); p[2].y=-WING*Sin(wing_é); p[2].z=0; - GrFillPoly3(dc,3,p); - - p[0].x=0; p[0].y=0; p[0].z=-BODY; - p[1].x=0; p[1].y=0; p[1].z=BODY; - p[2].x=WING*Cos(wing_é); p[2].y=-WING*Sin(wing_é); p[2].z=0; - GrFillPoly3(dc,3,p); - - dc->color=ROPF_DITHER+WHITE<<16+LTGRAY; - GrLine3(dc,0,0,-BODY,0,0,BODY); -} - -#define NUM_BIRDS 7 -#define RANGE 5 - -F64 bx[NUM_BIRDS],by[NUM_BIRDS]; - -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 é,dt=Beat-t0; - DCDepthBufAlloc(dc); - dc->x=325; - dc->y=95; - dc->z=GR_Z_ALL; - dc->flags|=DCF_TRANSFORMATION; - for (i=0;ir); - Mat4x4RotX(dc->r,ã/2); - Mat4x4RotZ(dc->r,é); - Mat4x4TranslationEqu(dc->r,50*Cos(é)+bx[i],50*Sin(é)+by[i], - 30*i/NUM_BIRDS+4*dt); - Mat4x4RotX(dc->r,0.35*ã); - Bird(dc,Sin(2*ã*dt+i*2*ã/NUM_BIRDS)); - } -} - -U0 Song() -{ - I64 i; - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->text_attr=LTCYAN<<4+BLACK; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - for (i=0;itask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3eCGFsDAe.C2sG3eGDqCDeGsGG2qG"); - Play("3eCGFsDAe.C2sG3eGDqCDeGsGG2qG"); - Play("3eGECGCAFCsCBCBe.GsG2qG3B"); - Play("eGECGCAFCsCBCBe.GsG2qG3B"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/satisfaction.CPP b/Apps/Psalmody/Examples/satisfaction.CPP deleted file mode 100644 index f8fac8d6e9cd57206e116761014b5f594d55038a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmdPbH&@6=ELKP_N-W68OfKfq*Y{1$$xo?NNUBr_Ni8a>RB+T&a7ir7Ean0MmEZs! zB^yIKB^@VETSFC)5EmCj&4HMy#}6cj*?PALI9TDQc&noB{!Ik=!G zvm{kPt0XnIpco{QnWmtTQep$~i6)nVf`S4>jj={bvJS|q2rwC`W1yqr>4Y47njrnD zImM|8$c7kcDuC=(PykzD3o*hAu3|v4g*_`;ayYWybCu48Zq$Pg7B^h%)6!#@0#H9uCAehffhVIO*A1XN!Jub z%s_`=U|>y_5W~R<1nv%m1!&^f5^pUy0|n>jrE5U)3p5jzBo=3bl6G)vNl9j2dT~H$ zafY>mzJ73Os)CA-w~i9Bgp!Vw6^fV&mx6+CX>n#UOf;yt1Y}|^NK6mp-F#aG zBRykNaHfQa7MCO@Czh1t$EPJGm*f}ODj4Wl8i3_XiYj4QDzP}*HXy$sv>+@qwLG9G zGp|I0i&H^C3G6J_^V2lGI`yBP$~lu-ly6tS}{1V)B%5Xf(DmG{&kCECJI9 zPGSlQpi(D1F|$Mi6lPGd@XS1q{Guuiw_;tp^31&WoYb@u9T=x5Gd-h32UT@gYEcPX zby9vwNq(-jF`|3NZ#AAR;|AFUFuGr&1xtpg1=(C$%^xFUBCT zSRuxs93-8anpy(Vl$W9qW1s{LGMHr`8{C{yU0q#V3Z32H)+FcW#TXQprWPs07?c!c zCgv3Dfeckq337E&QHjhiRfsW2PRs)t2z6LWzCw&aCdi_k%o31uKvw7HrGoW^XO?7O z+6}W7ZfkxiNPl^LQ8vihjMO5K8JQrDnRF%L@Vd1=d`(TwI`xXU)aH$N&L{Arvzc0|NsiBUdN`1A{mN149S{ z0|Ore0|OU~5dl%hzy)JOF)%Rjf>gj5u~4mC;UJ?J7#Lz07#QCF|NkGX<=_AR|3QYs z1>Qgfo`F@q5tOCXeVqjqS|NsAg29OUxN772C0BC5*Qd5#6SWtFM)jU3FJPIUXYhSW_7Z!gRVYFfjZD3AiyZF#P!c|GzB* l0|Pj?VM={K=7TVd0a6Ke1xznUfE}a)#;{{xU=Rg)1OOVPvW5Tv diff --git a/Apps/Psalmody/Examples/savour.CPP b/Apps/Psalmody/Examples/savour.CPP deleted file mode 100644 index 1d372ed..0000000 --- a/Apps/Psalmody/Examples/savour.CPP +++ /dev/null @@ -1,31 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qFCeEAEAqDeCEqBA", - "This \0 \0 \0 \0 \0 \0sand\0wich \0is \0bland.\n\0 \0"); - Play("eCCqDeDDqEeAECECEqA", - "God \0 \0damn, \0my \0 \0tastes \0 \0 \0 \0" - "sure \0 \0are \0grand.\n\0"); - Play("M6/8"); - Play("FEB2G3sAGeCqE", - "Ho \0hum. \0 \0 \0 \0How \0 \0rude!\n\0"); - Play("FEB2G3sAGeCqE", - "That \0bum \0 \0 \0 \0likes \0his \0food.\n\0"); - Play("2G3sAGeDqGFEB", - " \0 \0Likes \0his \0food!\n\0 \0 \0 \0"); - Play("2G3sAAeEqD2G3sDBDB2eGG"); - Play("3AsEDqAeAsBGEBEB2qG3sDBDB"); - Play("2eGG3AsEDqAeAsBGEBEB"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/science.CPP b/Apps/Psalmody/Examples/science.CPP deleted file mode 100644 index 3c4cddf..0000000 --- a/Apps/Psalmody/Examples/science.CPP +++ /dev/null @@ -1,94 +0,0 @@ -//7 has graphics - -F64 t0=Beat; - -U0 MyCircle3(CDC *dc,I64 x,I64 y,I64 z,I64 r) -{ - F64 é,dé=1.0/r; - for (é=0;é<2*ã;é+=dé) - GrPlot3(dc,x+r*Cos(é),y+r*Sin(é),z); -} - -U0 MyCylinder(CDC *dc,I64 x,I64 y,I64 z1,I64 z2,I64 r) -{ - I64 z; - for (z=z1;zx=300; - dc->y=35; - dc->z=GR_Z_ALL; - dc->flags|=DCF_TRANSFORMATION; - Mat4x4RotX(dc->r,Sin(ã*dt/4)/8); - Mat4x4RotY(dc->r,ã*dt/16); - - w1+=3*Sin(ã*dt/3); - - dc->color=BROWN; - MyCylinder(dc,0,0,-w3,w3,r2); - - dc->color=YELLOW; - MyCylinder(dc,0,0,-w1-w2/2+0,-w1-w2/2+1,r1); - dc->color=BLACK; - MyCylinder(dc,0,0,-w1-w2/2+1,-w1-w2/2+2,r1); - dc->color=LTGRAY; - MyCylinder(dc,0,0,-w1-w2/2+2,-w1+w2/2-2,r1); - dc->color=BLACK; - MyCylinder(dc,0,0,-w1+w2/2-2,-w1+w2/2-1,r1); - dc->color=YELLOW; - MyCylinder(dc,0,0,-w1+w2/2-1,-w1+w2/2,r1); - - dc->color=BLACK; - GrLine3(dc,r1,0,-w1-w2/2+1, r1,0,-w1-w2/2+w2-2); - - dc->color=YELLOW; - MyCylinder(dc,0,0,w1-w2/2+0,w1-w2/2+1,r1); - dc->color=BLACK; - MyCylinder(dc,0,0,w1-w2/2+1,w1-w2/2+2,r1); - dc->color=LTGRAY; - MyCylinder(dc,0,0,w1-w2/2+2,w1+w2/2-2,r1); - dc->color=BLACK; - MyCylinder(dc,0,0,w1+w2/2-2,w1+w2/2-1,r1); - dc->color=YELLOW; - MyCylinder(dc,0,0,w1+w2/2-1,w1+w2/2,r1); - - dc->color=BLACK; - GrLine3(dc,r1,0,w1-w2/2+1, r1,0,w1-w2/2+w2-2); -} - -U0 Song() -{ - SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.824; - try { - while (!ScanKey) { - t0=Beat; - Play("2eG3sEAeADDG2qG3sFGeCGBsDE2eG3EB", - "Was \0 \0Ga\0li\0le\0o \0 \0wrong?\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2G3sEAeADsDDeG2qG3sFGeCGBsDE2eG3EB", - "His \0 \0brain \0 \0was \0might\0 \0y \0strong.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("etEDE4A3GFeEGqDsDGeAsAGAGqAeEC", - "Did \0you \0 \0real\0ly \0want \0to \0 \0win?\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("etEDE4A3GFeEGqDsDGeAsAGAGqAeEC", - "We \0have \0 \0us, \0a \0real \0Huck \0 \0Finn.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/scriptures.CPP b/Apps/Psalmody/Examples/scriptures.CPP deleted file mode 100644 index 9098f817111d417711772492009c862176d1ed5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmdPbw@}DPELKP_N-W68OfKf)QV9;wQBu-z^0YNn;R1tD1BKxHymSpsu4*m?1-D{d zyOPA>?D*8Yl=$Q%TeaZ4l#s;YY}dRLXD4ee1qI*I;>_gW)RL0Sy!7Ir;u4TpE=WwT zBsI4n-_}Ua6eLtqRH*{$wWCjKXX^;Sn0iqRQ0#XbN49yG-41fRs|IYiTnAnH_ diff --git a/Apps/Psalmody/Examples/service.CPP b/Apps/Psalmody/Examples/service.CPP deleted file mode 100644 index f6d6d82..0000000 --- a/Apps/Psalmody/Examples/service.CPP +++ /dev/null @@ -1,32 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint( - "$LK,"Matthew,20:28",A="BF:Matthew,20:28"$\n" - "$LK,"Mark,10:45",A="BF:Mark,10:45"$\n" - "$LK,"John,13:14",A="BF:John,13:14"$\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - "$$GREEN$$Jesus talking...\n$$FG$$"; - Play("M6/8"); - Play("3eAACADAADACAR", - " \0 \0I \0 \0came \0 \0 \0to \0 \0serve.\n\0 \0 \0"); - Play("AACADAADACAR", - " \0 \0I \0 \0give \0 \0 \0my \0 \0word.\n\0 \0 \0"); - Play("FGetFEGABCDAC2qG3sECEC"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/shield.CPP b/Apps/Psalmody/Examples/shield.CPP deleted file mode 100644 index fed4e9164d03576fdd465c72b60925acc6194445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2869 zcmdPbH&@6=ELKP_N-W68OfKf)QV9;wQL-_#Q_^wrv^7-W0)bEih2Z?WbPY|eYAyu@ z=a9tWYz3{7#NupgE(Ha*VqH5BJ3cipB|bUHRxLO$1*F0?FU8pjq`8o;1qqcDRVsjtS5N?%W*d-S5LytHnOYuDl$lqe!NsYd zprqpCt)t{xkda!PnV46sV`gP&sHEd)tK{Tng(j*Jlc$8x;+t4fl95`jV`^n+0MmdX zhN|31!8spfX$I65bC@1X37AGrkPj3TK>iL-%q-CWc>yXGo|)&7UsR<53a9eSy!f2d zv=SW{rzkT$qeKT)by#Xq30!qjeo0AwuC_5;2UNh&6j@h!MrKZ`f`(#na$=r$YNaML zAQcn>auO>wl#B~qoLy2~-JM)gOPrkC3SClNoRoAx;iI6SM?ohkg!ou2rekfEJ@W+@pM8?VaQ5j@*ohd1>*hzbw0#J)bNIzV`_<`n@g&T zTcKlWiHn<4s*77{iJOaSp$j}VeDjmDQ&ZppnWzwBkds*wV^ERdKs`K3j$h)7I_#0(-rAR(GM2;5T3rJzu&kepbOoWZ4_pr8;?TH;!foLT@b zAcFH!Gz>JYxoWw%Kt+!=7Xu>$1XQsxFfcPPFo>%&Ffjc7|Np-t0|SF5M237#UH_!=;Rya&>%s$cE!KkB^T5N#W2_$Atask_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Luke,12:12",A="BF:Luke,12:12"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3hDeDA2qG3hDeD2GqF", - "It \0sig\0ni\0fies\n\0a \0big \0sur\0prise.\n\0"); - Play("3hDeD2sFG3qAhDeDA2qG", - "Why \0 \0im\0pro\0vise?\n\0$$RED$$\"Be\0cause,\"$$FG$$ \0" - "re\0plies.\n\0"); - Play("3eCEsACACeD2G3qAAFeE2G3etFCC", - "If \0 \0you \0 \0 \0 \0love \0your \0god,\n\0 \0" - "don't \0bore \0 \0Him!\n\0 \0 \0"); - Play("eCEsACACeD2G3qAAFeE2G3etFCC", - "If \0 \0you \0 \0 \0 \0love \0your \0god,\n\0 \0" - "sur\0prise \0 \0Him!\n\0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/silver.CPP b/Apps/Psalmody/Examples/silver.CPP deleted file mode 100644 index ed9ffb8..0000000 --- a/Apps/Psalmody/Examples/silver.CPP +++ /dev/null @@ -1,26 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qF2GsGGGG3GFGFqAeD2G3etDBEsFCFC", - "Love \0 \0 \0 \0 \0 \0ev\0 \0ery \0 \0sec\0ond.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qF2GsGGGG3GFGFqAeD2G3etDBEsFCFC", - "World -- \0 \0 \0 \0 \0 \0all \0 \0that \0 \0beck\0ons.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - Play("qBGFsEAEAqEFGeFC", - " \0Life \0is \0too \0 \0 \0 \0prec\0i\0ous.\n\0 \0 \0"); - Play("qBGFsEAEAqEFGeFC", - " \0Can \0be \0 \0 \0 \0 \0worr\0i\0ous.\n\0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/small.CPP b/Apps/Psalmody/Examples/small.CPP deleted file mode 100644 index 3282878f9a9afd08b6694f67daf0bb1a0a616fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10846 zcmdPbw^YbTELKP_N-W68OfKf);!+6?&{486v{TY?^0YNn;Q|4Om=Q$G2qFemXbcfF zMiDfD2%4Y>nnDCkp@J}*%pk&MAYtW{)U?dJR0X#nM_<=q1q&`N=iq{(%#u_Et<2o? z;%JC?tZg-yf`W>t6S6yXAbhwRp?tXWpnSN?bl^t7-G!k9VkEi|h@h#p=HhZQGf^lp zuysmJEV1U|3N=u0DM~E&EYWZdNi5D*&?-qR&em~uaaPbuN!H{7xf|}IlGNOSVrwo1 z1+Wn%U?X%=Ahd3Y0Z0a{#1;|+o_QsyMFsgei6yBT;J_#;QH6$w4w$b|Qlf3B2^T9V zQ8m;v&;%I+F~C?OC0WPN!a&EwK*vA_Y&2Nbttd5B1HsKqQ_x5$u`@E!GtlHxP*6}n z(hc&Bu3bT9MSOW?N=b&Up^=_}mPSg6E?70hU`U|BV^!0ds}>wC!TEXV8jv6ePAw_P z%u6p0C@s#gR?ycEPEA!%@$uGCLY7d{akN$P^|L||Qvn56v94W8QDS*~W{IsDB(y=E zbSu`i1Gz6gH7_MTImuQnI4=bh2d;T3&Q8``TnY-lrNx=aFyn%XOF+7EL1KC!-{;#J z>6wCrN{T8KKoO;&P@a*Qld7Ph7@VA#=bc)q2^CgAL^vpX6ck+Ylbv%?6N^B)K_US; ziIo~kg+a!}F0L-FMyc*W#;GOl?v917sUVH3NZ%7sj0aTR!(A3da4eDot9q&VJO5HC_%Nk=cg#d7-SYJ#26Hog0e}BL2+(k zPL5to9@r$f29O?bWP@yjIFB^fd88)B7?h>v#TevNLQKubFNV6eJTbEbB3gz`zgE#>QpBz`(%A zz`y{~^aG^Hkb!}Lhk=0sM1y?AWz4|9Aj-hN05U}Y4Cg(uz=+YPzZsdACwF}fT9k>011F{5M1CbG?BjmsQ_iR_t1<2_7up$fBygf4>A~tjh+n2#P_$ z01AKfY~c*^B*?`e+dw9wBnOZ)K+yqqG04{--@|P?x4K1Vh_|m5Q>ozO(8@J z$T%YHLDdh^2(1+$7J%IeVxp>pSOd-qX!d~BfsFxah44Tr2c`o`gH(Y115))LoLj*x zNSHtsAt(mad9(DhI&BiKw%HH7aH7z?Ew|t zAUz=cFqa_F$o^qqXJ-c&FvQsd&w!x34$eOy29nvxOjLUq*x5lDAK4z5hp@O4Ng0R< zjv_3|z}6wz!@v&m5Xd5sE>IYNF+?ZGdawp$0-+Af0;M^KYGg$aHa2^}n!t8|2#8K% z?7Rhd2$1M7Rjbf+|K*0%aongJciP3J49+3n8Jp zU=-AJkVlZ!!laRClI?-#OmIlTErK$ju0d4m<=%m zg#?Qu6JS|HdINjzs7whD`fz$#D(h)$IH6dXh7=>TC3Xm$l!dVpL7 zG7W4962SnrA6&tJq(K-gi{c+}z#$BRxEtBcAZ>7GfH`18kO;6K%m^q4B#mkh$Rd~` zs4a-B25RwvbiyP+Y$U&eOv9=KtOkoc>~I%DOaz;UARvOUa043xu>wp&)WOt1cwiDG ze*XUl6$)tfz%;>(hVjALu@k6Dpgfd-0;L3W4?)#owFe;wWSD59u7R2 R!PQXTKX9W_81%D;0RRhtx90!= diff --git a/Apps/Psalmody/Examples/spokest.CPP b/Apps/Psalmody/Examples/spokest.CPP deleted file mode 100644 index 5bc3b6f..0000000 --- a/Apps/Psalmody/Examples/spokest.CPP +++ /dev/null @@ -1,29 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3qB2e.G3sADCeDsGEeBqGe.DsGeE2G3GsBC", - "God \0spoke.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "How \0 \0'bout \0that!\n\0 \0 \0"); - Play("qB2e.G3sADCeDsGEeBqGe.DsGeE2G3GsBC", - "God \0spoke.\n\0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "Where's \0 \0He \0at?\n\0 \0 \0"); - "$$GREEN$$God talking...\n$$FG$$"; - Play("eFBBsDAECeCqB2e.G3sAF2G3eFe.GsBeDD", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "$$RED$$I'm \0 \0right \0here.\n\0 \0 \0 \0"); - Play("FBBsDAECeCqB2e.G3sAF2G3eFe.GsBeDD", - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0" - "You \0 \0can \0hear!$$FG$$\n\0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/struggles.CPP b/Apps/Psalmody/Examples/struggles.CPP deleted file mode 100644 index de0d630b3c5a5e7f0eb0dabec7c2e7d3ac1e35b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3120 zcmdPbw^YbTELKP_N-W68OfKdE1C`(a9VHt>J0%?_Pg_G3E-p7S6NM53Tc^~-5^FBy zl+?7$yi^5eSHBR~p!f(*BLf32u22I7m!iaS&k_yiki_C_1uY$C7iR^nlw?h=YAyu@ zkO?UzU=wsp46L~n6jG9P?b31*(~E0tU7X$GgCl)?T|J2f~zFI@xT zvf$K`lFYpH;(*fP3~L2_{ovG81r;A}9VKK5B^^gwC0{=)6fqT$zlwG3Qi>AG<1)P$ami zi{0Ga+*3hd#(8h<$XnuF%oh(IvIS&B)!@$*9=f7{qW(Epc{nD|T^nafACZ zB%@Lx#-KbiCr2U1APMBXl>9uLeu4%K+>>YwbUzQMBWk%66lxWc6HAgaxWLg+TH;!f zoLT@*NU(GjkY4~!@u1{x&BegT00BlE3=B*R3=HBw{{R1f@&Et-8Vn2!CJYP=|H%Wy zYGmMp+JIjJ10Nq)Ap=}Jc4sj_l>LXP$FAx>NFHo2Og#a0FynAK5^4@y9oVs048>3f zQi#P=h&l!c1#>QLb+FI@)7XLtVi3Z4e0*TD!C`>xOcZq><$Qb)A!J4W;SK`Z2MSEE zGLT=u>JZ5Wq8Uy?tc9tA2t#y$;tgaU1K4bcahU4Bjt1Mu04Bk{fGGosKs^L82|;40 zgX%%30GW*HI*3Cc29lwU4;(fSjbJZALk(mgNEG5EQ0Sst3$YmFLa;iJK@be_Gspm_ zfe?9!FhmKMWB_{xLmkvcuo5VN6a!!*AqGMm1yus0kc@*m5G(`L0cL{P)v(bOS15mh0EI=J0nqhX3MmBCE}D*+RrGz$(kGy)=tL}D`y zk{qB39ZC_Q4iq;yl!1K$u@w?RXwHIjL25u4tO}IQ;4-KTgc^`aT(-gk2BZjAkbn(F zF%P$KV1Gai1EmMBR;`!aRb{zaZbi)Z$V1A0`J<3uA-y;={zM!)FFQIR*f< CK;{ax*hgC^4{gN=+=W z=Hd!9P;elotc?*~%gn^q~mC-U{zynl8CCJr9Ma3hr z4CME`e1#Z;wA92RJq1YEppmd}bk9#wFNVma=R-p;5yH>N&q+~;G04wTh%u*f>{Kg-LZQViQuLyj ziRNFhUXWQJ4CX)y9O}^H1C$0)JPgtfjtVdV;z2N#&BKyjz)k~s1KGbMsY8kqusJXS z;sX!~Hts)ClEGAhtPEiw0d;VN;7|h-AakG?W-F)+L=J2;b;!z)oCppVs7W9SRoVal rh=hY|9=-w)NgcXjASZ&11UnO^4qIsoQ3zHFRtqZ0VPd#w>}nVQb8#@A diff --git a/Apps/Psalmody/Examples/teachings.CPP b/Apps/Psalmody/Examples/teachings.CPP deleted file mode 100644 index ad19f57..0000000 --- a/Apps/Psalmody/Examples/teachings.CPP +++ /dev/null @@ -1,33 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Proverbs,11:25",A="BF:Proverbs,11:25"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("2eG3CDAqEsACACGEGEqDsAAAAetCDD", - "Ple\0ase \0te\0ach \0me.\n\0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2eG3CDAqEsACACGEGEqDsAAAAetCDD", - "Wa\0ter \0thi\0s \0tree.\n\0 \0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2qGG3eEBqAGeFEsFGFGetDBD", - " \0 \0$$RED$$I \0will \0teach \0thee.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2qGG3eEBqAGeFEsFGFGetDBD", - " \0 \0Wat\0er \0that \0tree.$$FG$$\n\0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/thereupon.CPP b/Apps/Psalmody/Examples/thereupon.CPP deleted file mode 100644 index 11c4d74..0000000 --- a/Apps/Psalmody/Examples/thereupon.CPP +++ /dev/null @@ -1,74 +0,0 @@ -//7 has graphics -#define X 330 -#define Y 15 - -#define NUM_BEAMS 256 - -F64 beams_r[NUM_BEAMS],beams_é[NUM_BEAMS]; - -U0 DrawIt(CTask *,CDC *dc) -{ - I64 i; - F64 r,x1,y1,x2,y2; - dc->color=YELLOW; - GrCircle(dc,X,Y,10); - GrFloodFill(dc,X,Y,10); - dc->color=BROWN; - GrCircle(dc,X,Y,10); - dc->color=YELLOW; - for (i=0;itext_attr=LTCYAN<<4+BLACK; - Fs->draw_it=&DrawIt; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - for (i=0;iwin_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - "$$BG+H,LTCYAN$$$$FG+H,BLACK$$"; - while (!ScanKey) { - Play("2qG3eCB2hGqG3eCB2qG3A", - "Umm... \0God?\n\0 \0 \0Let \0Your \0 \0 \0 \0"); - Play("CeBA2G3DqEeDCBA2qG3A", - "face \0shine \0on \0down\n\0on \0us, \0" - "Your \0 \0luck\0y \0 \0peo\0"); - Play("eBA2h.G3qECAF", - " \0ple.\n\0 \0Fath\0e\0r \0a\0"); - Play("FDAeEDqECAF", - "bove,\n\0 \0 \0I \0 \0feel \0 \0 \0Your \0"); - Play("FDAeED", - "love.\n\0 \0 \0 \0 \0"); - } - } catch - PutExcept; - SettingsPop; -} - -Song; diff --git a/Apps/Psalmody/Examples/thither.CPP b/Apps/Psalmody/Examples/thither.CPP deleted file mode 100644 index fbded27..0000000 --- a/Apps/Psalmody/Examples/thither.CPP +++ /dev/null @@ -1,32 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3sC#C#D#D#C#C#CCC#C#D#D#C#C#CCEEDDC#C#DDEEDDC#C#DD", - "Still \0 \0 \0 \0there.\n\0 \0 \0 \0" - "Still \0 \0 \0 \0there.\n\0 \0 \0 \0" - "Not \0 \0 \0 \0fair.\n\0 \0 \0 \0" - "Not \0 \0 \0 \0fair.\n\0 \0 \0 \0"); - Play("C#C#D#D#C#C#CCC#C#D#D#C#C#CCEEDDC#C#DDEEDDC#C#DD", - "Un\0 \0 \0 \0aware!\n\0 \0 \0 \0" - "Un\0 \0 \0 \0aware!\n\0 \0 \0 \0" - "Every\0 \0 \0 \0where!\n\0 \0 \0 \0" - "Every\0 \0 \0 \0where!\n\0 \0 \0 \0"); - Play("eBDetFGAeFEBEetEFEqCeFEDA", - "$$RED$$Running \0 \0 \0a\0way \0 \0 \0 \0 \0 \0" - "from \0the \0Lord \0won't \0 \0work.\n\0 \0"); - Play("BDetFGAeFEBEetEFEqCeFEDA", - "Running \0 \0 \0a\0way \0 \0 \0 \0 \0 \0" - "from \0the \0Lord \0won't \0 \0work.$$FG$$\n\0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/tookest.CPP b/Apps/Psalmody/Examples/tookest.CPP deleted file mode 100644 index 64f9bb9..0000000 --- a/Apps/Psalmody/Examples/tookest.CPP +++ /dev/null @@ -1,31 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Luke,17:36",A="BF:Luke,17:36"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3qABeCq.AqCDeEq.A", - "Pile \0of \0clo\0ths.\n\0Pile \0of \0clo\0ths.\n\0"); - Play("qDeDq.CqBABAR", - "Has \0the \0rap\0ture \0come \0and \0gone?\n\0 \0"); - Play("EeD2sG3DeB2G3qFCeCsC2G3etGB2G3qE", - "Dear \0God, \0 \0 \0am \0I \0here?\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - Play("EeG2sG3EeCA2qG3CeCsC2G3EEAAeEE", - "Dear \0God, \0 \0 \0am \0I \0here?\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/tormenting.CPP b/Apps/Psalmody/Examples/tormenting.CPP deleted file mode 100644 index f16fe48..0000000 --- a/Apps/Psalmody/Examples/tormenting.CPP +++ /dev/null @@ -1,29 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("3eCBBCBCCEEAGGAAsEAAE", - "I'm \0 \0 \0in \0 \0trou\0ble.\n\0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("eCBBCBCCEEAGGAAsEAAE", - "Bursted \0 \0 \0my \0 \0bub\0ble.\n\0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - "$$GREEN$$God talking...\n$$FG$$"; - Play("2qG3eDDsCECE2qGG3eFAetEEEsCAAC", - " \0$$RED$$Yep, \0 \0you're \0 \0 \0 \0screwed.\n\0" - " \0 \0 \0 \0 \0 \0 \0 \0 \0 \0"); - Play("2qG3eDDsCECE2qGG3eFAetEEEsCAAC", - " \0Re\0 \0pent, \0 \0 \0 \0dude.$$FG$$\n\0 \0 \0" - " \0 \0 \0 \0 \0 \0 \0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/twins.CPP b/Apps/Psalmody/Examples/twins.CPP deleted file mode 100644 index 5ee3c9d..0000000 --- a/Apps/Psalmody/Examples/twins.CPP +++ /dev/null @@ -1,27 +0,0 @@ -//7 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.260; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - "$$GREEN$$As I look back on my sinful past...$$FG$$\n"; - Play("3qCAABAeAECEqB", - "Who \0was \0that \0per\0son? \0 \0It \0wasn't \0 \0me?\n\0"); - Play("CAABAeAECEqB", - "Who \0was \0that \0per\0son? \0 \0It \0wasn't \0 \0me?\n\0"); - Play("etDEDqFetBEDeAFGEqFDE", - "Sad \0to \0say, \0 \0I \0guess \0 \0" - "it \0 \0was \0 \0 \0me.\n\0 \0"); - Play("etDEDqFetBEDeAFGEqFDE", - "Sad \0to \0say, \0 \0I \0guess \0 \0" - "it \0 \0was \0 \0 \0me.\n\0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/valued.CPP b/Apps/Psalmody/Examples/valued.CPP deleted file mode 100644 index b2af8af33fd2db545fab460b4d4be3a0b27a8709..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1566 zcmdPbw^YbTELKP_N-W68OfKdMHBfLVN-Xy*(Qpn)EY4QY(s6ciR?tdG*5s<@Qcx%^ zNi4}sR&X;jQOHRwE{QL(bxKVv(J3jhHL&JVP$((Uwl&Z*(b52k>Oxd#YB?qqYXoQJ zfdw@+LFynfV7(x2Nr|ehv7RZ28C+15S&|xM?4*&BtYc_lpj`qoUCY=&$3REL(@96k z#?Vel$H~*yP({Z;&&X5@WN=A|rnZ5ep{6xgEf*J;N^k(OGA@vxg7fpzH6UIHPAw_P z%u6p0C@s#gR?ycEPEA!%@$uGCLY7d{akN$P^|L||Q{hrja4XieODRe$kIyWzRfB{S z$k`y_lEmWd_|&|V_~ay8wcxxIQ24p#r8qlTb8#ss_?8xDCc}&iDlP%($_0t(m89kt zjA%$!sO4aMN(#60iRN=>M+f`XEYihGc&tDlOBdwz;SNn%cR zW?s6Uo?c9zii(@Nii#4*XaxlYg@ByIN)09BLU$K8M>j`DHzge|PLQ}#Kv8OpL2_n{ zL4IkmLX3ezj6r^0s!mKEn5htB;9IE>W1s|%DUf=IIT)rC5HQ6f71IzGS4TG^cXwk~ zC%9u0ixgrEazQpK#2A$47o{LM#4R5rS(#r7qR<_L#jO1DJcxf3Vhqyr^HcN?eu9X@ z%&6s3P^eW%PAo~z-~xNGw8XU{Ikf;BEwES$$S(k=C{W_D=3-!EfPhC#3=B*R3=HDm z|NsC0?*IS)!VC-yatsU%|H%W4*tId@6vr;Xh(iM-4hekX*lYl)$080E#$q){oFBJ1 zhDjjxjF=k0!i@YF5)g4r3Ai{vstr(a3>%>0{OEy%5J!t0umpzk|Nmj)Xv!fH7|#C> Q5yuifPzelU20(xT07%6eBme*a diff --git a/Apps/Psalmody/Examples/vengeance.CPP b/Apps/Psalmody/Examples/vengeance.CPP deleted file mode 100644 index 751a5b60662b525baa0f3ab738d1c953cb7ace10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6524 zcmdPbw@}DPELKP_N-W68OfKd^00j_G2@cRvvN5z%(sA;%HBmKf-o=^0paDJW#7 zDQJ`!D5$9^7}(gRl-L;R8E7hilq)EtB zf%GaU_$HQ^RG0+imqclRR2S)(>KSNhq?G6y=$UG2qN$01sxj0v)iu&H&`K$Rs&H|J zm=l~@qLGrU12zdN6TRMGV{`l14@fCtQGY2gHux#RD8U3l#nHqbR2D!eEqCY#8g0`SFCH7 zQj}O8pIKt71_@@6p>D;xb|4GlQ}a^dlap-Kg7Z>9f$y4^;_L)c;9FXpnG7>6sJH|q zmJ1ToD@n~Q$hS4pGX)8i6jee)9b}qqKz>1JL0D#Lc|cKSUWo=5r-FhK*sVeNxruqj zI)+A8hL&KrI=NY)h^fTnDIt{mCYF?Bq?YTLS{Ylwl%t5jl!L=iK>_6S@Wjj#4Uj9K zV&R#29{EL88X&KhXXeG{q^6bVz&J&j=@}(DsH($Ki%Q_Clk!VS@^iI~;X0rKhNj56 z$}=)^QWZ25gOd~Uyi+S-DNsQnASba>Ln*by&Bd|MrO>euL^`Lsx~IB0E9rpzsi2_b zlbTqTst{w4S)veQP?E0@W8j{jq8F1FW1s}}0`<%(F#u;EP?Ui(B*b}zE`@G|?uE{U zu7%F2B`)rcsg90t*D1spz)^5XVqS_uj6qUjayFU+X=yMxqbn%Xaw#a(DkLYCBxi7e z9ba1FT9KSu08W#zBpQ%kU=7MjpnPP_#lXk_0k=dL7?>Cs7{pl^7#J4)|Nmc+fq|iw zfq~&aApp@&wmJ@U^Rb)9L99A9L5)K*aEPh{c?Knlark3Y9VB3ovKJ^w*g?c-_@R_*pdc9y7f5nJF2_g11(bP4 z!)1`C1F-YJ`4^=k#E7?1b)e+@e>7Y`jkVGAGMWxX(*dYJ7)=M@bO0uh8^$=og*xgu zumMnP{6{UHIiRjUrl5|53PCiDICVsZA2f9MAOIS25J8mig9vdzl<|$KL+Ky=A3os% z@(Bl__=PIsBSIYu3kwS$szQu(1u~9>kB?||XbQ2LM})obXd~c0ggS!h9+vAM*#$yk NxDO(XK@PAw1_0#>3VHwl diff --git a/Apps/Psalmody/Examples/verses.CPP b/Apps/Psalmody/Examples/verses.CPP deleted file mode 100644 index a69889c..0000000 --- a/Apps/Psalmody/Examples/verses.CPP +++ /dev/null @@ -1,34 +0,0 @@ -//8 special -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint( - "$$WW,1$$This shows a random passage based on " - "the time at the moment this song was run. " - "Talk to God as an offering, then run $MA-X+PU,"AfterEgypt",LM="Cd(\"::/Apps/AfterEgypt\");;#include \"Run\"\\n"$ if you " - "want God to talk some more. The $LK+PU,"Holy Spirit",A="FI:::/Adam/God/HSNotes.TXT"$ can " - "puppet you.\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - "$$WW+H,1$$"; - DocRecalc(DocPut(task)); //Reformat word-wrap with new window size. - while (!ScanKey) { - FifoU8Flush(god.fifo); - GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); - GodPassage(5); - Play("3qAeABCBqCetABBqCetAAREE2G"); - Play("3qAeABCBqCetABBqCetAAREE2G"); - Play("3eDRRRqGReRRGGGGqE"); - Play("eDRRRqGReRRGGGGqE"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/villa.CPP b/Apps/Psalmody/Examples/villa.CPP deleted file mode 100644 index 91883c4..0000000 --- a/Apps/Psalmody/Examples/villa.CPP +++ /dev/null @@ -1,22 +0,0 @@ -//8 no nothing -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - while (!ScanKey) { - Play("4etEEEqBetDDqtDqBetCCqtCqBhB"); - Play("etEEEqBetDDqtDqBetCCqtCqBhB"); - Play("etABCqDetBCCqDetDCBqAhA"); - Play("etABCqDetBCCqDetDCBqAhA"); - Play("qAetCAEsGCGCetBC3G4ADAqAGetDAD"); - Play("qAetCAEsGCGCetBC3G4ADAqAGetDAD"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/whos.CPP b/Apps/Psalmody/Examples/whos.CPP deleted file mode 100644 index 949f462..0000000 --- a/Apps/Psalmody/Examples/whos.CPP +++ /dev/null @@ -1,31 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.902; - try { - task=PopUpViewPrint("$LK,"Luke,13:25",A="BF:Luke,13:25"$\n"); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("3qGeEFqEBCGqtBD4A", - "God, \0let \0me \0in!\n\0 \0 \0 \0 \0 \0 \0"); - Play("3qGeEFqEBCGqtBDF", - "God, \0did \0I \0sin?\n\0 \0 \0 \0 \0 \0 \0"); - "$$GREEN$$God talking...\n$$FG$$"; - Play("qE2eG3FqDEeBEqCeCDBC", - "$$RED$$Who's \0 \0 \0 \0there?\n\0 \0 \0 \0 \0 \0 \0 \0"); - Play("qBeAsBAqE2eG3FqDEeBEqC", - " \0 \0 \0 \0Who's \0 \0 \0 \0where?$$FG$$\n\0 \0 \0 \0"); - Play("eCDBCqBeAB"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/wisdom.CPP b/Apps/Psalmody/Examples/wisdom.CPP deleted file mode 100644 index 91333f42c655fdec9e075feea19bf7192464ad4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmdPbH&@6=ELKP_N-W68OfKf)QV9;wQL-_#Q_^wrv^7+L2^c{Hj8wQlz|G7=p~S$} zDK)Xgnu{ycK*6ObvD~vn!#O0eI9owW$JxbMK`SL$ldGCbK>?&Vr39>4x5U7jOF<#H zpeVB>)mS4XS;xpg$3n+IN5#_#*;Y-Es?0P64GWu;5*rIWQ%wbsN$5I_OyFAK?gML8 zPzcUT(a=aK(Y4UjGBhv%3)XVgg54UNpO>xyaawR{Nl9j2dT~H$afY>mzJ73Os)CA- zw~i9Bgp!Vw6^fV&$YaI2b}2=P3;rl0~TsU@nAIf+{c1&r>f^h%rdXk1>EE zg&2d9j6{%NVvIq0VrHIVOdd?95;)937C{^}2%Th9=x&@^;^^q^{95K z>gZnR3=bnn5TKDhsfk5-F$S4==?XChX+`t2B+uP3C z`Cn2w$>PwKdwW~%=WDrdb8egY&r_MK;yDQba@*Z!v(!C}JSQdG+?Jc2JNY@tn>;tR<=)tqd)w-~dgVNolPW$lDYv)fZGL@A&3}^8VuPSbDj@MarJuLu-FtR*tt}{6R6GqiA>Q`^#XHDf QlT|!7Z2f9=-ISjJ09Ju4761SM diff --git a/Apps/Psalmody/Examples/witherto.CPP b/Apps/Psalmody/Examples/witherto.CPP deleted file mode 100644 index 26f925b..0000000 --- a/Apps/Psalmody/Examples/witherto.CPP +++ /dev/null @@ -1,33 +0,0 @@ -//7 has words -U0 Song() -{ - CTask *task; - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo=2.5; - try { - task=PopUpViewPrint( - "$LK,"Mark,11:12",A="BF:Mark,11:12"$\n" - "$LK,"Matthew,3:10",A="BF:Matthew,3:10"$\n" - "$LK,"Matthew,25:18",A="BF:Matthew,25:18"$\n" - ); - TaskWait(task); - WinHorz(Fs->win_left,Fs->win_right,task); - WinVert(Fs->win_bottom+3,Fs->win_bottom+15,task); - while (!ScanKey) { - Play("2qG3sFEFEqDBEetCB2G3qFsBDBD", - " \0Damn \0 \0 \0 \0 \0 \0fig \0 \0 \0 \0tree.\n\0 \0 \0 \0 \0"); - Play("2qG3sFEFEqDBEetCB2G3qFsBDBD", - " \0On\0ly \0 \0 \0good \0 \0for \0a \0 \0 \0pee.\n\0 \0 \0 \0 \0"); - Play("qC2G3eFC2G3EqACDA", - "Has \0no \0fruit.\n\0 \0 \0 \0 \0 \0 \0 \0"); - Play("C2G3eFC2G3EqACDA", - "Kill \0the \0root.\n\0 \0 \0 \0 \0 \0 \0 \0"); - "$$GREEN$$Be sure to bear 'fruit'.$$FG$$\n\n"; - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/worship.CPP b/Apps/Psalmody/Examples/worship.CPP deleted file mode 100644 index d4d78d8768e5de4f3555e5ff0d7f0f74af555fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 zcmdPbH&@6=ELKP_N-W68OfKdE15TCT039V8LpvoMCr?{L6|f+PfJzuaB#a;uZe}J5 zB?h)msfi`lT%iUEE=7suo+TR2A&JG=3R*hOF3t*CDao2#)m#b+AhjtaV70m>2G(2( z3eLd=MVTe33R)$pxdp`_5f^8d)Pj->r_waXoSgh*jg(|fkZ?+}u3d$#kp);6h*N26 z3};u_x(CHa#XI`=z?7!tB&HYF*t$5o#fJnr`USiB2l+aNc>4Q+6lA6;Xrz?b7@BD+ zfLx`Z;G0-tQehI5UlOGOGP+1dBc(*!R8#A*z7g1RBo&cR6>gd4am>t3Nkf!iOgW9Y{#%8k*@C=^1E(Emlx~7=z?Ku<1}qx1!Wk4TJzv zz+q@ZvrN;PtCkCt(t`8z(lsCnD>${JBr`9)IH0sR!&*UKKR7j2LB+>gM+sR%NypJv z$=A;cMN9>hEQ@vRQi>AG<1ssDf{~sHB*8*Ni%Sxd6H7|+NwGX5GbdF+LoqlxG0!`-5*9HEh&%>LTnY*SIf<1TO2&n*E~(DWsU@zC zj)ktNCC)C+j_z)S?n*jboFH{do(eGrDfxNoB?>VH*?IZp3NZ#)krGsWc}5~gsX~lF zNj^kjK~Z9*UQAw$ff6+4V0PoM8BJBHyK8ERn~P(iTd}(v1g4faf!vtt;)-x)iF&a@ zj6tG8j6qUPVg|%!kkg@d!v$dOgbUzept}~YGoWs+uCw^Z)<#04>-Zs3N>f+Ru0AU=o+b<7#Kj(ASTE_1_lOB0gzgV`D{==ND8C`#s{%MCcyY0Hb@tU4|W)cgEJ)F{Qv)- OP)LB(fD9SZAprp87?*?q diff --git a/Apps/Psalmody/Examples/you.CPP b/Apps/Psalmody/Examples/you.CPP deleted file mode 100644 index 7ff0b71..0000000 --- a/Apps/Psalmody/Examples/you.CPP +++ /dev/null @@ -1,30 +0,0 @@ -//8 has words -U0 Song() -{ - Fs->task_end_cb=&SndTaskEndCB; - MusicSettingsRst; - music.tempo= 2.480; - music.stacatto_factor= 0.802; - try { - while (!ScanKey) { - DocClear; - Play("3qDsCCCCeBBCCqDsCCCCeBBCC", - "I'm \0 \0 \0 \0 \0on \0my \0way.\n\0" - " \0Got \0a \0 \0 \0 \0bus\0y \0day.\n\0 \0"); - Play("sBBBBeAAsBA2G3AqAsBBBBeAAsBA2G3AqA", - "Woe, \0 \0 \0 \0I \0for\0got \0 \0to \0 \0pray.\n\0" - "What's \0 \0 \0 \0God \0 \0have \0 \0to \0 \0say?\n\0"); - "$$GREEN$$God talking...\n$$FG$$"; - Play("AeB2G3GGqE2etG3FBeFGqFeEC", - "$$RED$$Oh, \0 \0 \0hi-\0a \0you!\n\0What\0ch\0u \0been \0" - " \0do\0ing?\n\0 \0"); - Play("qAeB2G3GGqE2etG3FBeFGqFeEC", - "Oh, \0 \0 \0hi-\0a \0you!\n\0What\0ch\0u \0been \0 \0" - "do\0ing?$$FG$$\n\0 \0"); - } - } catch - PutExcept; - Snd(0); -} - -Song; diff --git a/Apps/Psalmody/Examples/zip.CPP b/Apps/Psalmody/Examples/zip.CPP deleted file mode 100644 index 1a077589ebb6b18e9a14fa8819b7f560429ae54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2552 zcmdPbw@}DPELKP_N-W68OfKf);!+6?&{486v{TY?^0YNn;Q|4Om=Q$G2qNZYW};AH zVC$5cSYpk^6>6a1Qj}QkS)$<_l31LrprzyN;;f*RlB~&9&846KQk+r(R;*iMV9lkV z;2c~~lv$FhpjDEZTTl!V$xKtwNGY+iH8j&R&{P2FQcwU(+Cr3i=9Q!t73Ak6mZWN^ zcse0FQU}6^J5VR2C{rV)M8{CiKvNTBwt@o03}cOyWE~>|5HipK8xECrD@sk(KnT=w z)q?#LoS&Dj0r3LVUnPmf*&q{xQ%g!R^U{k0N{chB74-FkQ&SaGe7tp(kR_CK9Bq|+ z{j5;LR6yZTtZSE2lvp00Sz@aO2{@3UZpFHGAPeGC^HSoIlWf(3^HM;;>6(|~>;zKa zTUwl%3^OgLxCA7Y3lh@>L~ ziJ2uDAWuWZ!ZY(c@{6i8Kw(jynHQgvnpUC%;}m74XO!rmst!vnDuJs`$}cI&&($`D z>wpRvn!5c z*$U{sPRz+sh%rb>tW=0G$jQ%3*Hck(b5~IT1rJ0o$qot6NG!33=nY8)n+}c!MTiiD z^aQyS)&Ir$xv8K~g9KQ4QGQ;!J*F#axfB#?6_OK6k~6^RC!n;%wIVsS0Gt6~`7t2B zz#3F;fC>$3E(S&h2ykR#U|?ckU|{6u0SWy0|Np-N0|NsHGcquPRB?gCL70t!fkBjk zfq@Go3KHOCU|{(E|Nnn37()^!0AnbEOa^IzF+dVxAORRdn1O*o8YBQUoST7xK?=lY zXJBApVPIeYISWK{i9-cIs=)$+AU7~D@G~$l@PTxIRDz5HVG)qUe9R!9ae??C>p%v8 z#K9(k7_txpxIh{~k{k>S3?Ri^Fa|RN0|Us{Tp-7Q7$DbytOXkZ5&$U|09g*=fWie7 zTK_>|0&)__e2@wd4c7AS|Ns9o4A2l~;{rJkEXTmW@Drp7q#MMLfC<1DAWwrdgPr#G z|Ns9W2@nkq```cn{|ALCh=#=)$Wx%$0@)9e0|x_$0TKZD94r80fK-AU1r7%g10(=a z$p{TVUTB$FG$ to delete songs. +* The first line of the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ song files is a comment with a category recognized by $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). The categories are $FG,2$"no nothing"$FG$, $FG,2$"has words"$FG$, $FG,2$"has graphics"$FG$, or $FG,2$"special"$FG$. The third character in the song comment is a digit rating number, shown in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). You can set the song rating in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$() by pressing $FG,2$0$FG$-$FG,2$9$FG$. You can press $FG,2$$FG$ to delete songs. -* You can take the $LK,"Play",A="MN:Play"$() statements out of a song file and place them in your programs. You can also add a song to a document with $GREEN$$FG$, but you should do it after pressing $GREEN$$FG$ because the clipboard-insert in $GREEN$$FG$ is screwy. See this $SO,"",A="2qG3ECB2eGG3qCeFDsBGBG2qG3ECB2eGG3qCeFDsBGBGqEeEFqEB2eG3FetCAGqFCEeEFqEB2eG3FetCAGqFC"$ after pressing $GREEN$$FG$, now. +* You can take the $LK,"Play",A="MN:Play"$() statements out of a song file and place them in your programs. You can also add a song to a document with $FG,2$$FG$, but you should do it after pressing $FG,2$$FG$ because the clipboard-insert in $FG,2$$FG$ is screwy. See this $SO,"",A="2qG3ECB2eGG3qCeFDsBGBG2qG3ECB2eGG3qCeFDsBGBGqEeEFqEB2eG3FetCAGqFCEeEFqEB2eG3FetCAGqFC"$ after pressing $FG,2$$FG$, now. * You can call $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$("::/Home/Psalmody"); to play your songs. -* To create a $GREEN$.SND$FG$ file which can be exported and played under Windows, set the $GREEN$Bool$FG$ $LK,"snd.record",A="MN:CSndGlbls"$ to $GREEN$TRUE$FG$, play music, and set it to $GREEN$FALSE$FG$. Then, call $LK,"SndFileCreate",A="MN:SndFileCreate"$(). You might wish to make a $GREEN$$FG$ to toggle this system level recording feat. See $LK,"Snd",A="MN:Snd"$(). Add this code to your $LK,"::/Home/AdamKeyPlugIns.CPP"$ file. +* To create a $FG,2$.SND$FG$ file which can be exported and played under Windows, set the $FG,2$Bool$FG$ $LK,"snd.record",A="MN:CSndGlbls"$ to $FG,2$TRUE$FG$, play music, and set it to $FG,2$FALSE$FG$. Then, call $LK,"SndFileCreate",A="MN:SndFileCreate"$(). You might wish to make a $FG,2$$FG$ to toggle this system level recording feat. See $LK,"Snd",A="MN:Snd"$(). Add this code to your $LK,"::/Home/HomeKeyPlugIns.CPP"$ file. -$PURPLE$U0 CtrlAltR(I64) +$FG,5$U0 CtrlAltR(I64) { snd.record=!snd.record; } -CtrlAltLetCBSet('R',&CtrlAltR,"Toggle snd.record");$FG$ +CtrlAltCBSet('R',&CtrlAltR,"Cmd /Toggle snd.record");$FG$ * When calling $LK,"SndFileCreate",A="MN:SndFileCreate"$() you can set a waveform. The PC speaker is $LK,"WF_SQUARE",A="MN:WF_SQUARE"$. You can select reverb and averaging, also. diff --git a/Apps/Psalmody/JukeBox.CPP b/Apps/Psalmody/JukeBox.CPP index 65df739..76cda2f 100644 --- a/Apps/Psalmody/JukeBox.CPP +++ b/Apps/Psalmody/JukeBox.CPP @@ -1,13 +1,11 @@ CTask *SingleSong(U8 *msg,U8 *name) { - Bool old_preempt=Preempt; CTask *task=Spawn(&SrvCmdLine,NULL,name,,Fs); StrCpy(task->task_title,name); task->title_src=TTS_LOCKED_CONST; TaskExe(task,Fs,";",1<win_left,task->win_left+50,task); WinVert(2,2+8,task); - Preempt(old_preempt); TaskExe(task,NULL,msg,1<max_entries=100; return task; @@ -51,7 +49,7 @@ Bool JBPutKey(CDoc *doc,U8 *,I64 ch,I64 sc) return FALSE; } -public U0 JukeBox(U8 *dirname=NULL,U8 **_filename=NULL) +public U0 JukeBox(U8 *dirname="::/Home/Psalmody",U8 **_filename=NULL) {//_filename is for using this as a song-chooser program. I64 i=0,rating; U8 *st,*st2; @@ -61,10 +59,7 @@ public U0 JukeBox(U8 *dirname=NULL,U8 **_filename=NULL) CTask *task=NULL; if (_filename) *_filename=NULL; - if (!dirname) - dirname=StrNew("::/Home/Psalmody"); - else - dirname=StrNew(dirname); + dirname=StrNew(dirname); st=MStrPrint("%s/*.CPP.Z",dirname); tempde=tempde1=FilesFind(st); Free(st); diff --git a/Apps/Psalmody/JukePuppet.CPP b/Apps/Psalmody/JukePuppet.CPP index 81de261..406fa39 100644 --- a/Apps/Psalmody/JukePuppet.CPP +++ b/Apps/Psalmody/JukePuppet.CPP @@ -72,13 +72,13 @@ U0 JukeSongPuppet(CTask *juke_task,I64 passes,I64 song_num,U8 *name) Kill(task); } -public U0 JukeSongsPuppet(U8 *dir="::/Home/Psalmody",I64 passes=2, +public U0 JukeSongsPuppet(U8 *dirname="::/Home/Psalmody",I64 passes=2, I64 start_song=0,I64 end_song=MAX_I64) {//Help make music video by puppeting JukeBox task. I64 i; CDirEntry *tempde,*tempde1; - CTask *juke_task=User("JukeBox(0x%X);\n",dir); - Cd(dir); + CTask *juke_task=User("JukeBox(0x%X);\n",dirname); + Cd(dirname); tempde1=FilesFind("*",FUF_RECURSE|FUF_JUST_TXT|FUF_JUST_FILES); for (tempde=tempde1,i=0;tempde && inext; diff --git a/Apps/Psalmody/PsalmodyCtrls.CPP b/Apps/Psalmody/PsalmodyCtrls.CPP index 641ebed..5f5e3b9 100644 --- a/Apps/Psalmody/PsalmodyCtrls.CPP +++ b/Apps/Psalmody/PsalmodyCtrls.CPP @@ -67,7 +67,6 @@ U0 LeftClickTempo(CCtrl *c,I64 x,I64 y,Bool) CCtrl *TempoNew() { - Bool old_preempt; CCtrl *c=CAlloc(sizeof(CCtrl)); c->win_task=Fs; c->flags=CTRLF_SHOW|CTRLF_CAPTURE_LEFT_IP; @@ -78,17 +77,13 @@ CCtrl *TempoNew() c->update_derived_vals=&UpdateDerivedTempoCtrl; c->left=396; c->top=96; - old_preempt=Preempt; QueIns(c,Fs->last_ctrl); TaskDerivedValsUpdate; - Preempt(old_preempt); return c; } U0 TempoDel(CCtrl *c) { - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); Free(c); } diff --git a/Apps/Psalmody/PsalmodyDraw.CPP b/Apps/Psalmody/PsalmodyDraw.CPP index 9e20e8f..056f183 100644 --- a/Apps/Psalmody/PsalmodyDraw.CPP +++ b/Apps/Psalmody/PsalmodyDraw.CPP @@ -198,7 +198,6 @@ U0 DrawIt(CTask *task,CDC *dc) I64 i,x,y, w=task->pix_width; F64 measure_len=4,measure_left=measure_len; - Bool old_preempt=Preempt; dc->color=BLACK; for (i=1;i<6;i++) @@ -264,7 +263,6 @@ U0 DrawIt(CTask *task,CDC *dc) else dc->color=BLACK; Sprite3(dc,oc.root.x,50,0,$IB,"<12>",BI=12$); - Preempt(old_preempt); } #define PSM_NOTE_BOX_X 220 diff --git a/Apps/Psalmody/PsalmodyMain.CPP b/Apps/Psalmody/PsalmodyMain.CPP index 8c0a2e1..6902c28 100644 --- a/Apps/Psalmody/PsalmodyMain.CPP +++ b/Apps/Psalmody/PsalmodyMain.CPP @@ -396,7 +396,7 @@ U0 PsmPopMode() #define PSMF_CD 1 #define PSMF_INCOMPLETE 2 -U0 Psalmody(U8 *dirname=NULL) +U0 Psalmody(U8 *dirname="::/Home/Psalmody") { Bool was_playing; I64 a1,a2,msg_code=0,col, @@ -411,11 +411,7 @@ U0 Psalmody(U8 *dirname=NULL) if (DocPut) old_doc_flags=DocPut->flags; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinBorder; - AutoComplete; - Preempt; - MkDir("::/Home/Psalmody"); MusicSettingsRst; tempo_state.tempo=Round(TEMPO_RANGE*(music.tempo-0.5)/4.4); tempo_state.stacatto=Round(TEMPO_RANGE*(music.stacatto_factor-0.12)/0.88); @@ -474,12 +470,11 @@ U0 Psalmody(U8 *dirname=NULL) oc.incomplete_entry=MenuEntryFind(Fs->cur_menu,"Song/MarkIncomplete"); oc.record_entry=MenuEntryFind(Fs->cur_menu,"Song/Record"); + AutoComplete; + WinBorder; WinMax; - if (!dirname) - dirname=StrNew("::/Home/Psalmody"); - else - dirname=StrNew(dirname); + dirname=StrNew(dirname); PsmPushMode(psm_octave); col=0; Fs->draw_it=&DrawIt; diff --git a/Apps/Psalmody/Run.CPP b/Apps/Psalmody/Run.CPP index a05ede1..ee855c5 100644 --- a/Apps/Psalmody/Run.CPP +++ b/Apps/Psalmody/Run.CPP @@ -1,4 +1,3 @@ Cd(__DIR__);; #include "Load" -#include "Install" //Might as well always install Psalmody; diff --git a/Apps/Span/SpanMain.CPP b/Apps/Span/SpanMain.CPP index 02417e8..56be3b6 100644 --- a/Apps/Span/SpanMain.CPP +++ b/Apps/Span/SpanMain.CPP @@ -190,7 +190,7 @@ U0 PlaceSpring(MyMass *tempm1,MyMass *tempm2) } U0 AnimateTask(SpanAnimateStruct *a) -{//Preemption is off by default. +{ MySpring *temps,*temps1; Bool old_run=FALSE; F64 f; @@ -266,7 +266,10 @@ U0 Span() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->text_attr=BROWN<<4+BLACK; + AutoComplete; + WinBorder; WinMax; + DocCursor; Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); bt_run =CtrlButtonNew(0,0, 80,, @@ -275,15 +278,6 @@ U0 Span() MD_NUM_MODES,Define("ST_SPAN_MODES"),mode_colors,&mode_button); a.saved_ode=NULL; - //Preempt eliminates a lot of hassles. - //The concern is about changing - //que links while the winmgr task - //is updating the ode or screen. - Preempt; - - DocCursor; - WinBorder; - AutoComplete; Fs->win_inhibit|=WIG_DBL_CLICK; MenuPush( diff --git a/Apps/Strut/Strut.CPP b/Apps/Strut/Strut.CPP index cd3486d..eaaa9f9 100644 --- a/Apps/Strut/Strut.CPP +++ b/Apps/Strut/Strut.CPP @@ -597,7 +597,10 @@ U0 Strut() CCtrl *bt_main_mode; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->win_inhibit|=WIF_SELF_IP_L|WIF_SELF_IP_R|WIG_DBL_CLICK; + AutoComplete; + WinBorder; WinMax; + DocCursor; DocClear; "\n$$WW,1$$$$PURPLE$$$$TX+CX,\"Build a ship.\"$$$$FG$$\n\n" "Select mass mode.\tLeft-click to place masses.\n" @@ -613,10 +616,6 @@ U0 Strut() bt_main_mode=CtrlButtonNew( (GR_WIDTH-4*FONT_WIDTH-16)>>1,1*FONT_HEIGHT+4,80,,MMD_NUM_MODES, Define("ST_MAIN_MODES"),main_mode_colors,&main_mode_button); - WinBorder; - Preempt; - AutoComplete; - DocCursor; DocClear; Init; Fs->draw_it=&DrawIt; diff --git a/Apps/TimeOut/TimeOut.CPP b/Apps/TimeOut/TimeOut.CPP index 7e4d6ca..b9d25c2 100644 --- a/Apps/TimeOut/TimeOut.CPP +++ b/Apps/TimeOut/TimeOut.CPP @@ -13,19 +13,19 @@ class Bullet } b[MAX_BULLETS]; I64 bullets_fired; -I64 x,y,dx,dy,scroll_y,finish_line; +I64 x,y,dx,dy,finish_line; F64 é; -F64 t0,tf,snd_bullet_timeout,snd_death_timeout; +F64 t0,tf,snd_timeout; -#define PHASES_GROUPS 10 -#define MAX_ENEMY (PHASES_GROUPS*100) -#define MAX_FRIENDLY (PHASES_GROUPS*20) +#define PHASES_GROUPS 8 +#define MAX_ENEMY (PHASES_GROUPS*64) +#define MAX_FRIENDLY (PHASES_GROUPS*16) #define MAX_MAN (MAX_FRIENDLY+MAX_ENEMY) #define HACK_DIST 5 class Man { I64 x,y,best_dd; - F64 é,hack_phase,corpse_timeout; + F64 é,phase,corpse_timeout; Bool friendly,dead,pad[6]; } m[MAX_MAN]; @@ -43,29 +43,46 @@ $BG,14$ $SP,"<2>",BI=2$ + + $SP,"<3>",BI=3$ + + $SP,"<4>",BI=4$ + + $SP,"<5>",BI=5$ -CSprite *friendly_imgs[4]={$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$}; + + +CSprite *friendly_imgs[4]={$IB,"<4>",BI=4$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$,$IB,"<5>",BI=5$}; + + + $SP,"<6>",BI=6$ + + + $SP,"<7>",BI=7$ + + + $SP,"<8>",BI=8$ + + + +CSprite *friendly_hacking_imgs[4]={$IB,"<7>",BI=7$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$,$IB,"<8>",BI=8$}; + + + $SP,"<9>",BI=9$ -CSprite *enemy_imgs[4]={$IB,"<7>",BI=7$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$,$IB,"<8>",BI=8$}; - -#define LANDSCAPE_TYPES 4 - - - - $SP,"<10>",BI=10$ @@ -76,32 +93,75 @@ CSprite *enemy_imgs[4]={$IB,"<7>",BI=7$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$,$IB,"<8> - - - - $SP,"<12>",BI=12$ - - - - - - - - +CSprite *enemy_imgs[4]={$IB,"<11>",BI=11$,$IB,"<10>",BI=10$,$IB,"<11>",BI=11$,$IB,"<12>",BI=12$}; $SP,"<13>",BI=13$ + + + + $SP,"<14>",BI=14$ + + + + + $SP,"<15>",BI=15$ + + + + +CSprite *enemy_hacking_imgs[4]={$IB,"<14>",BI=14$,$IB,"<13>",BI=13$,$IB,"<14>",BI=14$,$IB,"<15>",BI=15$}; + + + +#define LANDSCAPE_TYPES 4 + + + + + + + $SP,"<16>",BI=16$ + + + + $SP,"<17>",BI=17$ + + + + + + + + $SP,"<18>",BI=18$ + + + + + + + + + + + + + + + + $SP,"<19>",BI=19$ + $BG$ CSprite *landscape_imgs[LANDSCAPE_TYPES]= - {$IB,"",BI=10$,$IB,"",BI=11$,$IB,"",BI=12$,$IB,"",BI=13$}; + {$IB,"",BI=16$,$IB,"",BI=17$,$IB,"",BI=18$,$IB,"",BI=19$}; #define MAX_LANDSCAPE 64 class LandScapeItem @@ -110,17 +170,61 @@ class LandScapeItem U8 *img; } ls[MAX_LANDSCAPE]; +I64 mp_not_done_flags; +U0 MPDrawMen(CDC *dc2) +{ + CTask *task=dc2->win_task; + CDC *dc=DCAlias(dc2,task); + I64 i,r[16],lo=Gs->num*MAX_MAN/mp_cnt,hi=(Gs->num+1)*MAX_MAN/mp_cnt, + yy,phase,scroll_y=MAP_HEIGHT-100-100*(tS-t0); + Man *tempm; + CSprite *temps,**_temps; + F64 tt,ts=tS; + + for (i=lo;iy-scroll_y)&(MAP_HEIGHT-1); + if (-32<=yy<=task->pix_bottom+32 && !tempm->dead) { + Mat4x4IdentEqu(r); + Mat4x4RotY(r,tempm->é+ã/2); + Mat4x4RotX(r,ã/6); + Mat4x4Scale(r,0.3); + if (tempm->best_dd<(2*HACK_DIST)*(2*HACK_DIST)) {//It's neat so times 2. + if (tempm->friendly) + _temps=friendly_hacking_imgs; + else + _temps=enemy_hacking_imgs; + tt=4*Wrap(tempm->phase+20*ts,0)/(2*ã); + } else { + if (tempm->friendly) + _temps=friendly_imgs; + else + _temps=enemy_imgs; + tt=4*Wrap(tempm->phase+5*ts,0)/(2*ã); + } + phase=tt; tt%=1.0; + temps=SpriteInterpolate(_temps[phase&3],_temps[(phase+1)&3],tt); + SpriteMat3B(dc,tempm->x,yy,GR_Z_ALL,temps,r); + Free(temps); + } + } + + dc->depth_buf=NULL; + DCDel(dc); + LBtr(&mp_not_done_flags,Gs->num); +} + U0 DrawIt(CTask *task,CDC *dc) { - I64 i,yy; - F64 t1; + I64 i,yy,scroll_y=MAP_HEIGHT-100-100*(tS-t0); + F64 tt,ts=tS; Man *tempm; Bullet *tempb; - CSprite *temps,**_temps; + CSprite *temps; for (i=0;ipix_bottom+32) + if (-32<=yy<=task->pix_bottom+32) Sprite3(dc,ls[i].x,yy,0,ls[i].img); } @@ -135,59 +239,54 @@ U0 DrawIt(CTask *task,CDC *dc) GrLine(dc,tempb->x>>32,tempb->y>>32, (tempb->x+tempb->dx*BULLET_LEN)>>32, (tempb->y+tempb->dy*BULLET_LEN)>>32); + + for (i=0,tempm=m;iy-scroll_y)&(MAP_HEIGHT-1); - if (-32<=yy<=Fs->pix_bottom+32) { - if (tempm->dead && - tScorpse_timeout) + if (-32<=yy<=task->pix_bottom+32) { + if (tempm->dead && tscorpse_timeout) if (!(RandU16&15)) { if (tempm->friendly) - temps=$IB,"<5>",BI=5$; + temps=$IB,"<2>",BI=2$; else temps=$IB,"<9>",BI=9$; - SpriteZ3B(dc,tempm->x,yy,0,temps,tempm->é); + Sprite3B(dc,tempm->x,yy,0,temps); } } } - for (i=0,tempm=m;iy-scroll_y)&(MAP_HEIGHT-1); - if (-32<=yy<=Fs->pix_bottom+32) { - if (!tempm->dead) { - if (tempm->friendly) - _temps=friendly_imgs; - else - _temps=enemy_imgs; - if (tempm->best_ddhack_phase+20*tS,0)/(2*ã)]; - else - temps=_temps[0]; - SpriteZ3B(dc,tempm->x,yy,0,temps,tempm->é); - } - } - } + + DCDepthBufAlloc(dc); + mp_not_done_flags=1<depth_buf); + dc->depth_buf=NULL; + SpriteZ3B(dc,x,y,0,$IB,"<1>",BI=1$,é); if (tf) { - t1=tf; + tt=tf; dc->color=RED; if (game_over && Blink) GrPrint(dc,task->pix_width/2-9*FONT_WIDTH/2,task->pix_height/2, "Game Over"); } else { - t1=tS; + tt=ts; if (!enemy_left || !friendly_left) game_over=TRUE; } dc->color=BROWN; GrPrint(dc,0,0,"Enemy:%d Friends:%d Friendly Fire:%d Time:%6.2f Bullets:%d", - enemy_left,friendly_left,friendly_fire,t1-t0,bullets_fired); + enemy_left,friendly_left,friendly_fire,tt-t0,bullets_fired); GrPrint(dc,0,8,"Total Score:%,d High Score:%,d", total_score,best_score); } U0 CheckCollisions() { - I64 i,x,y; + I64 i,x,y,scroll_y=MAP_HEIGHT-100-100*(tS-t0); Man *tempm; Bullet *tempb; CDC *dc2=DCNew(GR_WIDTH,GR_HEIGHT); @@ -206,22 +305,22 @@ U0 CheckCollisions() y=(tempm->y-scroll_y)&(MAP_HEIGHT-1); if (0<=xcollision_cnt=0; - if (tempm->friendly) - Sprite3(dc2,x,y,0,$IB,"<2>",BI=2$); - else - Sprite3(dc2,x,y,0,$IB,"<6>",BI=6$); + GrRect(dc2,x-3,y-9,6,8); if (dc2->collision_cnt) { tempm->dead=TRUE; tempm->corpse_timeout=tS+30.0; if (tempm->friendly) { friendly_fire++; friendly_left--; - Snd(200); - } else { + } else enemy_left--; - Snd(50); + if (!snd_timeout) { + snd_timeout=tS+0.01; + if (tempm->friendly) + Snd(200); + else + Snd(50); } - snd_death_timeout=tS+0.01; } } } @@ -231,17 +330,16 @@ U0 CheckCollisions() U0 Init() { - I64 i,xx,yy; + I64 i,xx,yy,scroll_y=MAP_HEIGHT-100; Man *tempm; - snd_bullet_timeout=snd_death_timeout=0; + snd_timeout=0; Snd(0); total_score=0; game_over=FALSE; main_loop_pass=0; - scroll_y=MAP_HEIGHT-100; x=Fs->pix_width>>1; y=0.9*Fs->pix_height; finish_line=scroll_y+y; @@ -276,7 +374,7 @@ U0 Init() tempm->x=xx+64*RandI32/MAX_I32+100; tempm->y=yy+64*RandU32/MAX_I32-64+100; tempm->corpse_timeout=0; - tempm->hack_phase=2*ã*Rand; + tempm->phase=2*ã*Rand; tempm->best_dd=MAX_I64; } for (i=0;idy=Sin(a)*0x100000000; bullets_fired++; tempb->dead=FALSE; - if (!snd_death_timeout) { + if (!snd_timeout) { + snd_timeout=tS+0.0005; Snd(1000); - snd_bullet_timeout=tS+0.0005; } } @@ -423,9 +521,6 @@ U0 TimeOut() I64 next_update_jiffy; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Preempt; - WinBorder; - AutoComplete; MenuPush( "File {" @@ -439,10 +534,14 @@ U0 TimeOut() " Right(,,SC_CURSOR_RIGHT);" "}" ); + AutoComplete; + WinBorder; WinMax; + DocCursor; DocClear; - "\n\nYou're sent back through time " - "to help fight some bad guys. ($$LTPURPLE$$Purple$$FG$$)\n\n" + "\n\nYou're sent back through time to help fight some bad guys. " + "($$LTPURPLE$$Purple$$FG$$)\n" + "Perhaps, you are an angel helping the Jews in the Bible?\n\n" "Scoring:\n" " Enemy Killed\t\t+5\n" " Enemy by Friendly\t+10\n" @@ -450,12 +549,12 @@ U0 TimeOut() " Bullets Fired\t\t-1\n" " Game Time\t\t-10 per second\n" " Surviving Friendlies\t+500\n\n" - "Sweep side-to-side while shooting.\n\n"; + "Sweep side-to-side while shooting, " + "holding down $$GREEN$$$$FG$$.\n\n"; PressAKey; Fs->text_attr=YELLOW<<4+CYAN; Init; - DocCursor; DocClear; Fs->draw_it=&DrawIt; @@ -488,15 +587,6 @@ U0 TimeOut() break; } } - if (snd_death_timeout) { - if (tS>snd_death_timeout) { - snd_death_timeout=0; - Snd(0); - } - } else if (snd_bullet_timeout && tS>snd_bullet_timeout) { - snd_bullet_timeout=0; - Snd(0); - } for (i=0;isnd_timeout) { + snd_timeout=0; + Snd(0); + } SleepUntil(next_update_jiffy); total_score=5*(MAX_ENEMY-enemy_left) @@ -595,8 +688,7 @@ to_done: MenuPop; RegWriteBranch("TempleOS/TimeOut","I64 best_score=%d;\n",best_score); } - -ôÿÿÿÐÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿ +ôÿÿÿÐÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @@ -818,8 +910,83 @@ to_done: -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ê8Íÿÿÿ‡ÿÿÿryÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ æÿÿÿêÿÿÿ66ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzûÿÿÿøÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿ ‚íÿÿÿëÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ’ÃÿÿÿÄÿÿÿy=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ò÷ÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒþÿÿÿùÿÿÿ - ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²þÿÿÿûÿÿÿ -ÿÿÿÿÿÿÿÿÿÿ ÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzûÿÿÿøÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÒþÿÿÿùÿÿÿ - ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²þÿÿÿûÿÿÿ -ÿÿÿÿÿÿÿÿÿ ÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò÷ÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ  ÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊ8Íÿÿÿ‡ÿÿÿryÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ æÿÿÿêÿÿÿ66ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚íÿÿÿëÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’ÃÿÿÿÄÿÿÿy=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿâÿÿÿþÿÿÿãÿÿÿÿÿÿÿèÿÿÿéÿÿÿàÿÿÿáÿÿÿçÿÿÿèÿÿÿéÿÿÿêÿÿÿìÿÿÿíÿÿÿæÿÿÿçÿÿÿêÿÿÿëÿÿÿ ìÿÿÿíÿÿÿ íÿÿÿ îÿÿÿ êÿÿÿëÿÿÿ ìÿÿÿ íÿÿÿ ûÿÿÿáÿÿÿÿÿÿÿúÿÿÿáÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿùÿÿÿíÿÿÿøÿÿÿøÿÿÿíÿÿÿùÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿûÿÿÿùÿÿÿíÿÿÿùÿÿÿøÿÿÿíÿÿÿúÿÿÿùÿÿÿðÿÿÿøÿÿÿ÷ÿÿÿðÿÿÿøÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿúÿÿÿùÿÿÿñÿÿÿøÿÿÿ÷ÿÿÿñÿÿÿùÿÿÿîÿÿÿÿÿÿÿïÿÿÿÿÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿðÿÿÿñÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿúÿÿÿóÿÿÿûÿÿÿôÿÿÿÿÿÿÿøÿÿÿøÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿýÿÿÿùÿÿÿýÿÿÿúÿÿÿþÿÿÿñÿÿÿÿÿÿÿüÿÿÿñÿÿÿÿÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿîÿÿÿüÿÿÿîÿÿÿþÿÿÿóÿÿÿûÿÿÿóÿÿÿþÿÿÿõÿÿÿûÿÿÿõÿÿÿýÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿôÿÿÿûÿÿÿôÿÿÿýÿÿÿúÿÿÿûÿÿÿúÿÿÿýÿÿÿþÿÿÿûÿÿÿÿÿÿÿýÿÿÿüÿÿÿ úÿÿÿýÿÿÿ ýÿÿÿûÿÿÿûÿÿÿüÿÿÿýÿÿÿùÿÿÿ úÿÿÿúÿÿÿ   + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ  + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ  + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok +Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿâÿÿÿþÿÿÿãÿÿÿÿÿÿÿèÿÿÿéÿÿÿàÿÿÿáÿÿÿçÿÿÿèÿÿÿéÿÿÿêÿÿÿìÿÿÿíÿÿÿæÿÿÿçÿÿÿêÿÿÿëÿÿÿ ìÿÿÿíÿÿÿ íÿÿÿ îÿÿÿ êÿÿÿëÿÿÿ ìÿÿÿ íÿÿÿ ûÿÿÿáÿÿÿÿÿÿÿúÿÿÿáÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿùÿÿÿíÿÿÿøÿÿÿøÿÿÿíÿÿÿùÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿûÿÿÿùÿÿÿíÿÿÿùÿÿÿøÿÿÿíÿÿÿúÿÿÿùÿÿÿðÿÿÿøÿÿÿ÷ÿÿÿðÿÿÿøÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿúÿÿÿùÿÿÿñÿÿÿøÿÿÿ÷ÿÿÿñÿÿÿùÿÿÿîÿÿÿÿÿÿÿïÿÿÿÿÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿðÿÿÿñÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿúÿÿÿóÿÿÿûÿÿÿôÿÿÿÿÿÿÿøÿÿÿøÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿýÿÿÿùÿÿÿýÿÿÿúÿÿÿþÿÿÿñÿÿÿÿÿÿÿüÿÿÿñÿÿÿÿÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿîÿÿÿüÿÿÿîÿÿÿþÿÿÿóÿÿÿûÿÿÿóÿÿÿþÿÿÿõÿÿÿûÿÿÿõÿÿÿýÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿôÿÿÿûÿÿÿôÿÿÿýÿÿÿúÿÿÿûÿÿÿúÿÿÿýÿÿÿþÿÿÿûÿÿÿÿÿÿÿýÿÿÿüÿÿÿ úÿÿÿýÿÿÿ ýÿÿÿûÿÿÿûÿÿÿüÿÿÿýÿÿÿùÿÿÿ úÿÿÿúÿÿÿ   + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ  + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ  + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokæq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ +ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ +ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ  + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ +ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ + +Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ +Ûÿÿÿ +Ûÿÿÿ üÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿ  + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ +åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ +ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ#  + +       +  +   +      ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"¢úÿÿÿüÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¢úÿÿÿûÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ +ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ +ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ  + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ +ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ + +Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ +Ûÿÿÿ +Ûÿÿÿ üÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿ  + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ +åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ +ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ#  + +   + +  +     ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p" \ No newline at end of file diff --git a/Apps/ToTheFront/ToTheFront.CPP b/Apps/ToTheFront/ToTheFront.CPP index 2ab5f13..41fecbd 100644 --- a/Apps/ToTheFront/ToTheFront.CPP +++ b/Apps/ToTheFront/ToTheFront.CPP @@ -1467,7 +1467,6 @@ U0 DrawIt(CTask *task,CDC *dc) I64 h,v,i,j,r,c; U8 buf[STR_LEN]; IndirectOrders *tempi; - Bool old_preempt=Preempt; task->horz_scroll.min=0; task->horz_scroll.max=map_width-task->pix_width; @@ -1623,7 +1622,6 @@ U0 DrawIt(CTask *task,CDC *dc) else dc->color=LTPURPLE; GrPrint(dc,-task->scroll_x+(13+7+10)*FONT_WIDTH,-task->scroll_y,buf); - Preempt(old_preempt); } U0 TaskEndCB() @@ -1677,10 +1675,11 @@ U0 ToTheFront() "}" ); - WinMax; AutoComplete; WinBorder(ON); - Preempt; + WinMax; + DocCursor; + DocClear; Init; PickAI("AIs",0); PickAI("AIs",1); @@ -1693,8 +1692,6 @@ U0 ToTheFront() "$$GREEN$$ 2\t $$FG$$ Player 2 view.\n" "$$GREEN$$ 3\t $$FG$$ View odds calculations."); Fs->task_end_cb=&TaskEndCB; // - DocCursor; - DocClear; Fs->draw_it=&DrawIt; "$$GREEN$$$$FG$$ to return to game.\n"; diff --git a/Apps/X-Caliber/X-Caliber.CPP b/Apps/X-Caliber/X-Caliber.CPP index 286227d..98605ab 100644 --- a/Apps/X-Caliber/X-Caliber.CPP +++ b/Apps/X-Caliber/X-Caliber.CPP @@ -1006,7 +1006,6 @@ U0 XCaliber() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->text_attr=BLACK<<4+WHITE; - Preempt; MenuPush( "File {" " Abort(,CH_SHIFT_ESC);" @@ -1026,13 +1025,13 @@ U0 XCaliber() " SmallerShot(,,SC_CURSOR_DOWN|SCF_SHIFT);" "}" ); - WinMax; AutoComplete; - WinBorder(ON); - Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS - -WIF_SELF_BORDER-WIF_FOCUS_TASK_MENU-WIF_SELF_CTRLS; + WinBorder; + WinMax; DocCursor; DocClear; + Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS + -WIF_SELF_BORDER-WIF_FOCUS_TASK_MENU-WIF_SELF_CTRLS; Fs->draw_it=&DrawIt; do { ode=ODENew(0,0.01,ODEF_HAS_MASSES); diff --git a/Apps/X-Caliber/XCCtrls.CPP b/Apps/X-Caliber/XCCtrls.CPP index 8e40f51..5951cc9 100644 --- a/Apps/X-Caliber/XCCtrls.CPP +++ b/Apps/X-Caliber/XCCtrls.CPP @@ -133,7 +133,6 @@ U0 LeftClickCtrlPanel(CCtrl *c,I64 x,I64 y,Bool) CCtrl *CtrlPanelNew() { - Bool old_preempt; CCtrl *c=CAlloc(sizeof(CCtrl)); MemSet(&ctrl_panel,0,sizeof(ctrl_panel)); c->win_task=Fs; @@ -143,17 +142,13 @@ CCtrl *CtrlPanelNew() c->draw_it=&DrawCtrlPanelCtrl; c->left_click=&LeftClickCtrlPanel; c->update_derived_vals=&UpdateDerivedCtrlPanelCtrl; - old_preempt=Preempt; QueIns(c,Fs->last_ctrl); TaskDerivedValsUpdate; - Preempt(old_preempt); return c; } U0 CtrlPanelDel(CCtrl *c) { - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); Free(c); } diff --git a/Compiler/AsmInit.CPP b/Compiler/AsmInit.CPP index 8c1bcdf..903242f 100644 --- a/Compiler/AsmInit.CPP +++ b/Compiler/AsmInit.CPP @@ -4,7 +4,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) while (TRUE) { switch (cc->token) { case TK_IDENT: - if ((i=DefineMatch(cc->cur_str,"ST_OPCODE_MODIFIERS"))>=0) { + if ((i=LstMatch(cc->cur_str,"NO\0CB\0CW\0CD\0CP\0IB\0IW\0ID\0"))>=0) { tempi->opcode_modifier=i; break; } else @@ -38,7 +38,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) case '=': tempi->flags|=IEF_48_REX; break; case '`': tempi->flags|=IEF_REX_ONLY_R8_R15; break; case '^': tempi->flags|=IEF_REX_XOR_LIKE; break; - case ':': tempi->flags|=IEF_STI; break; + case '*': tempi->flags|=IEF_STI_LIKE; break; case '$$': tempi->flags|=IEF_ENDING_ZERO; break; default: return; @@ -48,7 +48,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) } U0 AsmHashLoad() -{//See $LK,"::/Compiler/OpCodes.TXT.Z"$. +{//See $LK,"::/Compiler/OpCodes.TXT"$. I64 i,j,size,size1; CInternalType *tempit; CCmpCtrl *cc; @@ -104,6 +104,10 @@ U0 AsmHashLoad() AsmPrsInsFlags(cc,tempi); + tempi->uasm_slash_val=tempi->slash_val; + if (tempi->flags&IEF_STI_LIKE && tempi->slash_val!=SV_I_REG) + tempi->uasm_slash_val=SV_STI_LIKE; + tempi->arg1=tempi->arg2=tempi->size1=tempi->size2=0; if (cc->token==TK_IDENT) { j=DefineMatch(cc->cur_str,"ST_ARG_TYPES"); diff --git a/Compiler/BackB.CPP b/Compiler/BackB.CPP index 1d8a511..0b744c1 100644 --- a/Compiler/BackB.CPP +++ b/Compiler/BackB.CPP @@ -352,38 +352,6 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2, } } -U0 ICPreempt(CIntermediateCode *tempi,I64 ip) -{ - CIntermediateCode *tempi2=tempi->next; - if (tempi->a1.type&TY_MASK==TY_IMM) { - ICZero(tempi,REG_RBX); - ICU32(tempi,0x1B8B4864); - if (!(tempi2->ic_flags&ICF_NO_DEPEND_RESULT)) - ICZero(tempi,REG_RAX); - if (tempi->a1.disp) - ICU24(tempi,0x6BBA0F); - else - ICU24(tempi,0x73BA0F); - ICU16(tempi,CTask.task_flags+TASKf_PREEMPT<<8); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - if (!(tempi2->ic_flags&ICF_NO_DEPEND_RESULT)) - ICZero(tempi,REG_RAX); - ICZero(tempi,REG_RBX); - ICU32(tempi,0x1B8B4864); - ICTest(tempi,REG_RCX); - ICU16(tempi,0x0774); - ICU24(tempi,0x6BBA0F); - ICU16(tempi,CTask.task_flags+TASKf_PREEMPT<<8); - ICU16(tempi,0x05EB); - ICU24(tempi,0x73BA0F); - ICU16(tempi,CTask.task_flags+TASKf_PREEMPT<<8); - } - if (!(tempi2->ic_flags&ICF_NO_DEPEND_RESULT)) - ICU32(tempi,0xD08348); -} - U0 ICToUpper(CIntermediateCode *tempi,I64 ip) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, diff --git a/Compiler/BackFA.CPP b/Compiler/BackFA.CPP index d31c9cd..46cbf2c 100644 --- a/Compiler/BackFA.CPP +++ b/Compiler/BackFA.CPP @@ -303,7 +303,7 @@ U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) HashAdd(tempex,cc->htc.glbl_hash_table); } if (tempex->type&HTF_IMPORT) { - if (GetOpt(OPTf_USE_IMM64)) { + if (GetOption(OPTf_USE_IMM64)) { ICU16(tempi,0xBB48); ICU64(tempi,0); if (buf) { diff --git a/Compiler/BackLib.CPP b/Compiler/BackLib.CPP index 3ec55c1..ad97d50 100644 --- a/Compiler/BackLib.CPP +++ b/Compiler/BackLib.CPP @@ -416,7 +416,7 @@ I64 ICBuiltInFloatConst(F64 d) return 0xEED9; else if (d==1.0) return 0xE8D9; - else if (GetOpt(OPTf_NO_BUILTIN_CONST)) + else if (GetOption(OPTf_NO_BUILTIN_CONST)) return 0; else if (d==ã) return 0xEBD9; diff --git a/Compiler/CExcept.CPP b/Compiler/CExcept.CPP index e37a893..77c9ec4 100644 --- a/Compiler/CExcept.CPP +++ b/Compiler/CExcept.CPP @@ -81,7 +81,6 @@ U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL) U0 LexExcept(CCmpCtrl *cc,U8 *str=NULL) {//Print err msg, $LK,"LexPutPos",A="MN:LexPutPos"$() and throw exception. if (!Bt(&sys_run_level,RLf_ADAM_SERVER)) { - Preempt; Raw(ON); "Note: Still in boot phase.\n"; } diff --git a/Compiler/CExts.CPP b/Compiler/CExts.CPP index 9373045..d029f1b 100644 --- a/Compiler/CExts.CPP +++ b/Compiler/CExts.CPP @@ -8,10 +8,6 @@ import CDocEntry *DocPutLine(CDoc *doc,CDocEntry *doc_e); import I64 DocSize(CDoc *doc); import Bool DocWrite(CDoc *doc,Bool prompt=FALSE); extern U8 *CmdLinePmt(); -extern U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot); -extern U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot); -extern CAOT *CmpJoin( - CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0); extern I64 HashEntrySize2(CHashSrcSym *temph); extern Bool IsLexExpression2Bin(CCmpCtrl *cc,U8 **_machine_code); extern I64 Lex(CCmpCtrl *cc); diff --git a/Compiler/CInit.CPP b/Compiler/CInit.CPP index 932ccf7..081ba6c 100644 --- a/Compiler/CInit.CPP +++ b/Compiler/CInit.CPP @@ -112,7 +112,6 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={ {IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_IMPORT"}, {IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_EXTERN"}, {IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"ASM"}, - {IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"PREEMPT"}, {IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"PUSH"}, {IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"POP"}, {IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CLFLUSH"}, @@ -222,7 +221,6 @@ U0 CmpLoadDefines() DefineLstLoad("ST_MM_REGS","MM0\0MM1\0MM2\0MM3\0MM4\0MM5\0MM6\0MM7\0"); DefineLstLoad("ST_XMM_REGS", "XMM0\0XMM1\0XMM2\0XMM3\0XMM4\0XMM5\0XMM6\0XMM7\0"); - DefineLstLoad("ST_OPCODE_MODIFIERS","NO\0CB\0CW\0CD\0CP\0IB\0IW\0ID\0"); DefineLstLoad("ST_ARG_TYPES","NO\0REL8\0REL16\0REL32\0" "IMM8\0IMM16\0IMM32\0IMM64\0UIMM8\0UIMM16\0UIMM32\0UIMM64\0" "R8\0R16\0R32\0R64\0RM8\0RM16\0RM32\0RM64\0" diff --git a/Compiler/CMain.CPP b/Compiler/CMain.CPP index 9360b9d..a32ca2d 100644 --- a/Compiler/CMain.CPP +++ b/Compiler/CMain.CPP @@ -3,7 +3,7 @@ U8 *LexStatement2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0) I64 size,i,j,k,*result=INVALID_PTR; CCodeCtrl *tempcbh; if (_type) *_type=RT_I64; - Btr(&cc->flags,CCf_OPT_TRACE_PRESENT); + Btr(&cc->flags,CCf_PASS_TRACE_PRESENT); if (cc->aot_depth==2) COCPush(cc); COCInit(cc); @@ -293,7 +293,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot) tempie=tempie1; } Free(str); - if (!cc->aot_depth && Bt(&cc->opts,OPTf_COMPILE_TRACE)) + if (!cc->aot_depth && Bt(&cc->opts,OPTf_TRACE)) Un(ip2,tempaot->aot_U8s,64); QueRem(tempaot); Free(tempaot); @@ -575,7 +575,7 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL, Bool okay=TRUE; CCmpCtrl *cc; if (!filename) - filename=dsk.temp_filename; + filename=blkdev.temp_filename; cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF,filename); if (just_load) cc->flags|=CCF_JUST_LOAD; @@ -629,7 +629,7 @@ I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE) I64 result; CCmpCtrl *cc; if (!filename) - filename=dsk.temp_filename; + filename=blkdev.temp_filename; cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF,filename); if (just_load) cc->flags|=CCF_JUST_LOAD; diff --git a/Compiler/CMisc.CPP b/Compiler/CMisc.CPP index 5fb2191..8ab5adc 100644 --- a/Compiler/CMisc.CPP +++ b/Compiler/CMisc.CPP @@ -1,43 +1,29 @@ -Bool OptEqu(I64 num,Bool val) -{//Set compiler option to value. +Bool Option(I64 num,Bool val) +{//Set compiler $LK,"option",A="MN:OPTf_ECHO"$ to value. return BEqu(&Fs->last_lex->opts,num,val); } -Bool OptOn(I64 num) -{//Turn on compiler option. - return OptEqu(num,ON); -} - -Bool OptOff(I64 num) -{//Turn off compiler option. - return OptEqu(num,OFF); -} - -Bool GetOpt(I64 num) -{//Get state of compiler option. +Bool GetOption(I64 num) +{//Get state of compiler $LK,"option",A="MN:OPTf_ECHO"$. return Bt(&Fs->last_lex->opts,num); } -Bool OTrace(Bool val) -{//Displays intermediate code after passes through optimization. - return OptEqu(OPTf_OPT_TRACE,val); -} - -I64 OTraceMask(I64 i=0b10001111101) +I64 PassTrace(I64 i=0b10001111101) {//Ctrls which optimizer passes are displayed. - I64 old=Fs->last_lex->otrace_mask; - Fs->last_lex->otrace_mask=i; + I64 old=Fs->last_lex->pass_trace; + if (i) Fs->last_lex->saved_pass_trace=i; + Fs->last_lex->pass_trace=i; return old; } -Bool CTrace(Bool val) +Bool Trace(Bool val) {//Displays assembly code output from compiler. - return OptEqu(OPTf_COMPILE_TRACE,val); + return Option(OPTf_TRACE,val); } Bool Echo(Bool val) {//Displays text as it is being compiled. - return OptEqu(OPTf_ECHO,val); + return Option(OPTf_ECHO,val); } U0 StreamPrint(U8 *fmt,...) diff --git a/Compiler/Compiler.BIN b/Compiler/Compiler.BIN index 3d77a9aabc08b8f5af4594f6425dde78002bf9e7..4138ee5a1fc6f5277891f48369b7953fd97ff26b 100644 GIT binary patch delta 53862 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

    rUS@kx802PZwmAFvzIK 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 p2uha`2dBl6UqPp delta 54323 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Ù>ÙXÙbÙfÙjÙoÙqÙ�٩٩ٳÙ|ªÅVÝV݂݀݉Ý�ݕݗÝ�ݣݪݷÝÄÝ×ÝåÝôÝùÝûÝÞ -ÞÞ-Þ=Þ[ÞmÞ8fßfßoßtß߈ß�ߑߖßd`µVÓVÓtÓxÓ…Ó‡Ó”Ó–Ó¢Ó¢Ó¯Ó±Ó¾ÓÀÓÌÓÌÓâÓëÓëÓöÓýÓ ÔÔÔ"Ô$Ô0Ô7ÔFÔQÔWÔ\Ô^ÔjÔšÔÀÔÐÔàÔðÔòÔÕÕ"Õ"Õ'ÕAÕHÕOÕOÕOÕOÕVÕlÕxÕ~Õ„ÕŠÕŽÕŽÕŽÕ»ÕÂÕØÕäÕêÕðÕöÕøÕøÕÖD¶ÃÖÖÖ Ö"Ö/Ö5ÖBÖEÖHÖNÖPÖZÖ,cj@‡@‡N‡X‡c‡n‡t‡z‡ jn66DY_ -P ©6©6·6Æ6Þ6ä6ö6ö67 -7777 œ;^îÊîÊöÊúÊË*Ë=ËZË{˄˕˼ËÓËÓËõËÌ ÌÌ!ÌSÌ`ÌdÌlÌlÌÌ�Ì“Ì—Ì Œ×ö¦¦ÆÎÒàæìì/CQhnz�¬µÅÇÎÎÔÔä |1‘#‘#§#°#»#Ô#Ô#×#æ#ì#õ#÷#ý#$$$$ $"$"$,$0 '�…�…ž…¾…Ä…Ê…Ê…Ð…„•²°œ°œÄœËœÒœÖœúœ ��%�J�U�`�b�m�’���¨�ª�±�º�¼�Ç�Î�ø�("î¿î¿ý¿À(À(À.À –¿–¿¥¿¸¿¾¿ƒ¯¯%¯,¯C¯O¯Z¯l¯}¯n¯l¯�¯¸¯Ä¯Ë¯Ñ¯Ý¯ç¯î¯õ¯ù¯û¯° °°°%°)°)°3°8°C°U°f°W°U°†°§°³°º°À°Ì°Ö°Ý°ä°è°ê°ð°ü°± ±±±±%±3±C±U±f±W±U±†±§±³±º±À±Ì±Ö±Ý±ä±è±ê±ð±ü±² ²²²²"²2²D²U²F²D²u²|²‚²Ž²˜²Ÿ²¦²ª²¬²²²¾²È²Ï²Ö²Ú²Ú²ä²ò²û²³ ³$³$³'³0³¦³ðî^î^ _©„_%_A_L_^_e_v_~_†_‰_—_Ã_Ã_Ø_Ú_Ú_æ_î_ò_ÿ_ÿ_ ```$`$`$`@`K`\`\`a`y`ˆ`�`“`ž`£`£`¨`À`Ï`Ô`Ú`å`ê`ê`ø`a aaa%a(a.a3ah>hJhRhUh[hahfhfhŠh’hšhªh°h¶h¶hÇhåhåhêhêhöhþhiiiii3i;iKiQiXivi…i�i¥i­i°i·i½iÕiÝiõiýijj j j j,jb>bPbPbYbfb|bœb¶b½bÇbÚbÞbÞbÞbåbëbc cc.c0c6cPcWcacoczczc”cHš¨°}°}Ç}Ý}í}ô} ~&~8~<~~LíüÞsÞsòsþstt t"t5tHtSt^tft`¶ÊŽ{Ž{¤{Æ{Ó{Ý{ì{| ||"|?|A|A|r|`|A|‘|›|4IRÞÒÞÒçÒçÒêÒøÒÓ ÓÓä;.×.×V×Y×w׎ןן׺×À×Å×Å×à׿×ë×ë×ô×ØØØØ ØcØmØtØzØ|Ø|Ø�ؕؕؕإؚضØÅØרÜØÜØÜØãØêØñØÙ Ù)Ù)Ù;ÙÐL¼h¡h¡‚¡�¡˜¡¡¡©¡¬¡³¡·¡À¡Ñ¡Õ¡Û¡é¡¢¢"¢'¢3¢8¢?¢K¢P¢S¢]¢U¢m¢v¢‡¢…¢}¢•¢ž¢¤¢¤¢²¢µ¢É¢Ò¢Û¢â¢æ¢ë¢££#£1£M£Y£Y£q£‚£‚£‰£¥£±£¹£Ì£Ó£ç£ð£÷£û£¤ ¤¤/¤\¤c¤g¤i¤t¤€¤„¤™¤›¤¬¤¶¤Á¤Ë¤Ú¤é¤¥¥¥¥¥—¥Xs…nÍn͋ͬ͟ͶÍÍÍêÍÎÎÎ%Î+Î.Î:ÎŒ ``p‘‘ŸŸŸŸ¨¨¯ÉÚââííû € €€ € €7€7€=€c€ (kq€‡€‡Ž‡š‡ª‡±‡·‡ @UaÊÊÊÊ#ÊBÊOÊOÊRÊTÊZÊ!$/4†À†À“À¡À¦À¬À"$).^À^ÀkÀyÀ~À„À#$#(.À.À=ÀLÀQÀWÀ$8îx™™¥µËÓÝõú - ( 2 J O _ o … � — ¯ » Ã Í Ý â ø   * 4 > H R \ f p z � š ¤ ® ¸ Â Ì Ö à ö ! -! !*!4!>!H!R!\!f!p!z!„!Ž!˜!¢!¬!¶!À!Ê!Ô!Þ!è!ò!ü!"""$"."8"B"L"\"%¨D°˜°˜Æ˜Í˜Ô˜â˜ó˜™™™™$™/™9™D™[™^™`™r™x™ˆ™’™œ™£™®™Ã™Ë™Ë™á™á™á™õ™&Ð1–ò–ò´ò»òÂòÍòÕòîòîòóóó&ó*ó5ó]ó<óióó�ó£ó§ó¬ó¾óæóýóô -ôôô:ôPôTôTôdô¡ô€ô­ôÊôÊôéôôôúôõ!õ&õ8õ`õwõ|õ„õˆõŠõ±õÇõËõçõööö ö%ö6öLöZönösöŒö�ö¡ö³ö³ö³ö³ö¸öÔö÷óö ÷=÷H÷N÷d÷u÷z÷–÷¾÷Æ÷Ë÷Ï÷Ô÷å÷÷÷øøø4øEøIøIø[øƒøšøŸø§ø«ø­øÔøêøîøûøûøûøûøùùù%ù8ùOùOùkù{ù‰ù‰ùŸù¯ù½ùÔùçùìùòùúúú,ú<úCúQúoúgú”ú½ú½ú½úÊúûûûû$ûCûZûJûfû|ûŠû¢û¸û¼ûÌûëûüü#ü@ü_üjüpü†ü—üœü²üÈüÌüèüýýý!ý&ý7ýMý[ýoýtý�ýžý¢ý´ý´ý´ý´ý¹ýÕýôý#þþ/þLþWþ]þsþ„þ‰þ¥þÍþÕþÚþÞþãþôþÿÿ(ÿ*ÿCÿTÿXÿXÿwÿ�ÿ£ÿ§ÿ´ÿ´ÿ´ÿÇÿÍÿ×ÿÞÿñÿ$4BBXh}v‘¤©¯ÅÔÍéù$$@@Mmmm�'$5:®À®À¼ÀËÀÐÀÖÀ(¨Ekø™ø™ššš*š;šMšOšVš\šlšwš�šŒš£š¦š¨šºšÁšÑšÛšåšìš÷š ›››)›)›)›>›)(&,I0I0W0^0h0n0t0*0_gžÌžÌ´ÌÇÌÖÌÜÌßÌçÌ+ �ܾ¾àèîû  $ $ $ 1 3 > H O [ f l v } Ž Ž ™ £ £ µ » Ë Ñ Ö Ý Ý þ   & , / 5 5 7 = C E E E V ` e e z „ „ ˜ ¡ § ­ à È Ï â æ æ î ô ú ! !!!-!-!R!V!\!b!q!„!Š!Ž!”!š! ! !¢!¦!¬!²!¸!½!½!½!½!è!ù!ù!""!")">"^"^"d"g"k"q"q"ƒ"”"©"½"Å"Ö"Ú"ë"ï"õ"#####%#1#O#U#`#ƒ#Ž#”#š# #©#¯#Ä#Ò#Ú#Þ#ï#ó#ù#$$$'$)$5$S$Y$_$e$n$t$‘$„$«$´$º$º$Ï$Ô$Ô$Û$â$ô$ù$ù$ù$%%/%1%K%Q%Y%]%d%‡%�%“%Ÿ%¶%½%Ã%Î%Ó%Ó%Ú%Þ%å%ó%õ%ý%& -&&&'&,&2&7&?&D&S&n&~&‹&š&¶&¸&Ô&Ô&Û&ð&õ&þ& '''''"'&'-';'='E'I'M'W'c'j'n'v'~'†'•'£'¨'´'´'¼'¼'ß'ß'í'ó'ø'ü'((((( ( (,(2(8(?(U(W(W(W(b(b(b(g(�),4+t®Ä®ÄÈÄÌÄäÄìÄôÄþÄÅ ÅÅ#Å+Å0Å3Å>ÅIÅQÅ\ÅgÅiÅņÅ�ŘţťŰŻŽÅÉÅÒÅÒÅèÅòÅ ÆÆÆ&Æ,Æ5ÆGÆMÆMÆUÆYÆdÆiÆ{ƆƊƘƚƞƭƭƭƾƾÆÃÆÕÆÛÆIÇ-Ô@–à–à¬à³à¶àÚàÚà÷à -áá0á5á5áSáaátá‡á�á�á‘á‘á‘á¤á¦á¦á¦á­áÀáÓáÓáÓáæáñáââ â#â*â?âRâYâYâ\â�â.LAP%%% %,%G%L%l%n%‰%¤%¤%¬%³%Ú%/P~Žˆˆˆ#ˆ1ˆCˆNˆ\ˆiˆwˆ‰ˆ”ˆ¢ˆ¨ˆ®ˆ04 -Q6Q6_6k6|6Ž6—6¡6§61|¼WNNpw†‘··ÀÂÂÉð÷÷*55AHX^|‡‰¢¨³ÃÕÞéîôû %3<<CRiix~’™ ¥°¶¾äíôù 38@L^^u|„”¦¬µµÄÊÞç÷  ! 1 D L ` � ˜ œ ¨ ¿ Û í ó þ  +$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,657",BI=249$ +$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=250$ +$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=251$ +$LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$ +$LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=252$ +$LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=253$ +$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,666",BI=254$ +$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=255$ +$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=256$ +$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=257$ +$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=258$ +$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,774",BI=259$ +$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=260$ +$LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$ +$LK,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$ +$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,326",BI=261$ +$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,788",BI=262$ +$LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$ +$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=263$ +$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$ +$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ +H2@¡#¡#ª#°#Ë#Ð#û#ý#0$$@$G$X$k$¨+ÞiÞiôiüijjj=j jIjOjOjvjƒj®jÇjÇjñjk+kk7k]kJkqk~k©k©k°kÎkákákákëkH<J¶ô¶ôÐôÚôÞôâôçôéôõ!õ!õ+õ|ªÅÎøÎøøøúøùù ùùùù"ù/ù<ùOù]ùlùqùsùxù‚ù’ù¥ùµùÓùåù8ßß ß$ß/ß8ß?ßAßFßd`µÓÓ$Ó(Ó5Ó7ÓDÓFÓRÓRÓ_ÓaÓnÓpÓ|Ó|Ó’Ó›Ó›Ó¦Ó­Ó¼ÓÇÓÍÓÒÓÔÓàÓçÓöÓÔÔ ÔÔÔJÔpÔ€Ô�Ô Ô¢Ô²ÔÂÔÒÔÒÔ×ÔñÔøÔÿÔÿÔÿÔÿÔÕÕ(Õ.Õ4Õ:Õ>Õ>Õ>ÕkÕrÕˆÕ”ÕšÕ Õ¦Õ¨Õ¨Õ¶ÕD¶Ã¶Õ¶ÕÌÕÏÕÒÕßÕåÕòÕõÕøÕþÕÖ +Ö,cjÀ†À†Î†Ø†ã†î†ô†ú† jnæ æ ô   +P 66'666N6T6f6f6q6z6€6‡6�6 œ;^EEEE+E>EQEnE�E˜E©EÐEçEçE FF!F.F5FgFtFxF€F€F“F£F§F«F Œ×öVVv~‚�–œœÉßó*/=\euw~~„„” |1### #+#D#D#G#V#\#e#g#m#v#x#~#ˆ#�#’#’#œ#0 '………6…<…B…B…H…„•²`œ`œtœ{œ‚œ†œªœ½œÄœÕœúœ����B�M�X�Z�a�j�l�w�~�¨�("fÛfÛuÛˆÛ Û Û¦Û ÛÛÛ0Û6Ûƒ°®°®Õ®Ü®ó®ÿ® +¯¯-¯¯¯M¯h¯t¯{¯�¯�¯—¯ž¯¥¯©¯«¯±¯½¯Ç¯Î¯Õ¯Ù¯Ù¯ã¯è¯ó¯°°°°6°W°c°j°p°|°†°�°”°˜°š° °¬°¶°½°Ä°È°È°Õ°ã°ó°±±±±6±W±c±j±p±|±†±�±”±˜±š± ±¬±¶±½±Ä±È±È±Ò±â±ô±²ö±ô±%²,²2²>²H²O²V²Z²\²b²n²x²²†²Š²Š²”²¢²«²Ä²Ð²Ô²Ô²×²à²V³ìfzfzƒz! ‹z�z¹zÄzÖzÝzîzözþz{{;{;{P{R{R{^{f{j{w{w{ƒ{‹{�{œ{œ{œ{¸{Ã{Ô{Ô{Ù{ñ{|| |||| |8|G|L|R|]|b|b|p|y|…|�|•|�| |¦|«|´|Æ|Ï|à|ð|ð|õ|ý|}}}}}}}}}#}.}C}h}}Œ}”}œ}¨}´}º}Á}Ê}Î}Ñ}Ý}ã}ê}ï}ï}ý} ~ ~~~"~*~3~B~G~G~N~Y~_~g~m~x~}~}~Œ~—~©~¯~·~½~Â~Í~ß~å~í~ó~ø~ø~ #%5;;]„‰‰�£¹ÊÐÕîô€ €€€ € €3€9€O€`€f€k€„€Š€š€¢€ª€°€µ€µ€Ë€Ñ€ç€ø€þ€���)�1�9�?�F�K�K�a�g�}�Ž�”�–�¥�«�µ�½�Å�Ë�Ò�Ò�Ò�ä�í�þ�‚‚‚‚!‚)‚:‚M‚T‚Z‚b‚h‚x‚~‚†‚Œ‚Œ‚Œ‚‘‚‘‚‘‚‘‚‘‚°‚¼‚Á‚Á‚ׂà‚ë‚ô‚ÿ‚ +ƒƒƒ%ƒ+ƒAƒRƒXƒ]ƒoƒuƒzƒ“ƒ±ƒ±ƒ¶ƒ¶ƒƒʃ̓ÓƒÙƒÞƒÞƒ„ +„„"„(„.„.„?„]„]„b„b„n„v„y„€„†„‹„‹„«„³„ÄÉ„Єî„ý„……%…(…/…5…M…U…m…u…x……………………¤…´…À…È…Ë…Ò…Ø…è…÷…††&†)†0†6†N†Z†u†}†€†‡†�†�†�†�†’†’†›†«†Á†dž߆ò†ø†ý†‡‡‡6‡<‡H‡P‡S‡Z‡`‡‰‡‘‡¡‡§‡®‡®‡®‡³‡³‡¼‡Ô‡ê‡ð‡ˆˆ!ˆ&ˆQˆWˆjˆ¡ˆ³ˆψ׈݈âˆâˆüˆ‰‰ ‰ ‰$‰$‰>‰J‰V‰a‰a‰f‰f‰€‰Œ‰˜‰£‰£‰¨‰¨‰¾‰ĉЉÖ‰Û‰í‰ó‰ø‰ŠŠ Š%Š+Š2ŠEŠPŠYŠeŠmŠpŠvŠ|Š�ЕФЬŠÄŠÌŠÏŠÕŠÛŠóŠûŠ‹5‹=‹@‹F‹L‹L‹]‹f‹r‹z‹}‹„‹Š‹�‹¡‹°‹¸‹ЋØ‹Û‹â‹è‹ŒŒ'ŒAŒIŒLŒSŒYŒYŒiŒrŒ~Œ†Œ‰Œ�Œ•ŒšŒ®Œ½ŒÅŒߌçŒêŒðŒöŒ��8�T�\�_�e�k�k�|�…�‘�™�œ�£�©�®�À�Ï�×�ò�ú�ý�Ž +Ž"Ž*ŽLŽiŽqŽtŽ{Ž�Ž�Ž�Ž�Ž�Ž†Ž†ŽœŽ¢Ž®Ž´Ž¹ŽËŽÑŽÖŽäŽðŽùŽ� ����"�4�C�K�c�k�n�u�{�“�›�º�Ô�Ü�ß�æ�ì�ì�ì�ý�����$�*�/�A�P�\�w��‚�‰���§�³�Õ�ò�ú�ý�‘ +‘ +‘ +‘ +‘ +‘‘‘"‘=‘C‘N‘S‘S‘f‘|‘‚‘�‘�‘�‘¢‘őˑ֑֑è‘ñ‘’’’)’)’.’.’A’W’]’k’z’’’’’¨’®’¼’Ë’Ð’Ð’æ’ì’ “!“!“K“Q“V“b“k“z“z“““•“›“¸“ГГú“””””)”)”.”.”D”J”g”””©”¯”´”À”ɔؔؔݔݔó”ù”•.•.•X•^•`•l•u•€•€•€•€•…•“•œ•­•¯•Á•ΕΕΕÞ•î•ó•–#–$–)–>–[–k–�–Ÿ–¥–¥–¥–ª–¯–Ä–×–—%—+—-—2—C—R—„—Œ—’—”—™— — —©—»—Η×—æ—æ—ë—ð—ÿ—˜˜˜˜)˜)˜J˜Q˜W˜_˜j˜p˜€˜†˜Ž˜™˜Ÿ˜Ÿ˜¤˜©˜°˜·˜¾˜ŘΘݘݘݘâ˜â˜â˜ô˜ù˜ù˜ ™™™&™,™,™,™1™1™<™M™P™\™e™q™x™~™ƒ™ƒ™Ž™Ÿ™¢™®™·™ÙÊ™Йՙՙՙՙڙߙߙæ™ê™ê™ö™ÿ™šš šš!š(š.š=šHšSšYšbšfšfšrš{š~š~š‰š‹š�š¤šªš²š½šÈšΚØšÛšßšßšçšîšñšóšþš› ›››››3›:›E›P›S›Y›^›^›e›i›i›u›~›�›�›Œ›Ž› ›§›­›¼›Ç›Ò›Ø›á›å›å›ñ›ú›ý›ý›œ +œœ#œ)œ1œ<œGœMœWœZœ^œ^œfœmœpœrœ}œ�œŠœ�œ�œ˜œšœ²œ¹œÄœÏœÒœØœÝœÝœïœóœóœÿœ� � ���*�1�7�I�T�_�e�j�j�u�z�z�…�Š�Š�•�˜�œ�£�¨�­�²�²�Æ�Ë�Ë�Ø�Ü�í�õ�ù� žžžž%ž1ž9ž?žOžSždžvž�ž…ž…ž’žšž¢ž¨ž¨ž¨ž¨ž¨žªžªž¸ž¿žÌžØžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžæžèžèžÿžŸŸŸ4ŸBŸZŸ\ŸhŸuŸuŸ˜Ÿ¥Ÿ°Ÿ¹ŸŸÍŸÔŸÔŸÞŸÞŸáŸóŸ   L¢x¿Ù 4 444!4*464B4W4W4ƒ4‡4Œ4˜4«4µ4¸4Ã4Æ4Î4Ø4°›Ã^‹^‹t‹{‹Œ‹‘‹¦‹“‹²‹¸‹¸‹Ä‹Ü‹É‹è‹ë‹í‹û‹ŒŒŒ!Œ$Œ$Œ0ŒEŒ2ŒQŒWŒWŒjŒ}Œ�Œ£Œ¶ŒÀŒ„žþvþvw.w4w;wBwDwGwNwUwUwqwuw{w{w“w§w¸w¸wÀwäwx%x*xKxPx\xgxlxyx|x³xÄxÉxÏxÑx×xÚxëxðxóxûxy y?yVyiynyry”y§y¬yÃyÖyÛyßyzz|@|@|@|N|f|h|h|v|Ž|Ž| | |©|¶|Ì|ì|} }}*}.}.}.}5};}U}\}f}~}€}†} }§}±}¿}Ê}Ê}ä}H‰—`‚`‚w‚�‚�‚¤‚»‚Ö‚è‚ì‚/ƒLíü.Ž.ŽBŽNŽdŽPŽpŽrŽ…Ž˜Ž£Ž®Ž¶Ž`¶ÊÞ•Þ•ô•–#–-–<–U–Y–_–r–�–‘–‘––°–‘–á–ë–4IRŽÒŽÒ—Ò—ÒšÒ¨Ò¶Ò¹Ò¾Òä;¦ò¦òÎòÑòïòóóó2ó8ó=ó=óXó^ócócólózó†ó�ó“ó˜óÛóåóìóòóôóôóô ô ô ôôô.ô=ôOôTôTôTô[ôbôiô~ô…ô¡ô¡ô³ôÐL¼¡¡2¡=¡H¡Q¡Y¡\¡c¡g¡p¡�¡…¡‹¡™¡¶¡Ã¡Ò¡×¡ã¡è¡ï¡û¡¢¢ ¢¢¢&¢7¢5¢-¢E¢N¢T¢T¢b¢e¢y¢‚¢‹¢’¢–¢›¢²¢Ê¢Ó¢á¢ý¢ £ £!£2£2£9£U£a£i£|£ƒ£—£ £§£«£¶£»£Â£ß£ ¤¤¤¤$¤0¤4¤I¤K¤\¤f¤q¤{¤Š¤™¤µ¤µ¤¸¤À¤Å¤G¥Xs…~G~G›G¬G¹GÃGÚG÷GHH$H2H8H;HGHŒ ð^ð^_!_!_/_/_/_/_8_8_?_Y_j_r_r_}_}_‹_›_›_©_¯_¯_Ç_Ç_Í_ó_ (kq‡‡‡‡*‡1‡7‡ @Ua~å~åŒå”å›åºåÇåÇåÊåÌåÒå!$/4þÛþÛ ÜÜÜ$Ü"$).ÖÛÖÛãÛñÛöÛüÛ#$#(¦Û¦ÛµÛÄÛÉÛÏÛ$8ìv  %;CMejz�˜¢º¿Ïßõý + 3 = M R h r | † � š ¤ ® ¸ Â Ì Ö à ê +   ( 2 < F P f p z � š ¤ ® ¸ Â Ì Ö à ê ô þ !!!&!0!:!D!N!X!b!l!v!€!Š!”!ž!¨!²!¼!Ì!%¨D`˜`˜v˜}˜„˜’˜£˜µ˜·˜¾˜Ä˜Ô˜ß˜é˜ô˜ ™™™"™(™8™B™L™S™^™s™{™{™‘™‘™‘™¥™&Ð1,3:EMffz““ž¢­Õ´á÷ $6^uz‚†‹²ÈÌÌÜø%BBalrˆ™ž°Øïôü)?C_‡�”˜�®ÄÒæë++++0LŒk˜µÀÆÜíò6>CGL]o}‘“¬½ÁÁÓû #%Lbfssss†Œ–�°ÇÇãó'5L_dj€�ˆ¤´»Éçß 555B{€‹‘œ»ÒÂÞô04Dc�›¸×âèþ*@D`ˆ�•™ž¯ÅÓçì,,,,1Ml›‹§ÄÏÕëüEMRV[l~Œ ¢»ÌÐÐï ,,,?EOVi€€€œ¬ººÐàõî !'=LEaqœœ¸¸Åååå'$5:&Ü&Ü4ÜCÜHÜNÜ(¨Ek¨™¨™¾™Å™Ì™Ú™ë™ý™ÿ™š šš'š1š<šSšVšXšjšqš�š‹š•šœš§š»šÃšÃšÙšÙšÙšîš)(&,±/±/¿/Æ/Ð/Ö/Ü/*0_g®F®FÄF×FæFìFïF÷F+  ß¦¦ÈÐÖãê      & 0 7 C N T ^ e v v � ‹ ‹ � £ ³ ¹ ¾ Å Å æ ì û       % + - - - > H M M b l l € ‰ � • « ° · Ê Î Î Ö Ü â ì ó ú !!!:!>!D!J!Y!l!r!v!|!‚!ˆ!ˆ!Š!Ž!”!š! !¥!¥!¥!¥!Ð!á!á!ø!" ""&"F"F"L"O"S"Y"Y"k"|"‘"¥"­"¾"Â"Ó"×"Ý"ö"ø"þ" # ##7#=#H#k#v#|#‚#ˆ#‘#—#¬#º#Â#Æ#×#Û#á#ú#ü#$$$$;$A$G$M$V$\$y$l$“$œ$¢$¢$·$¼$¼$Ã$Ê$Ü$á$á$á$û$ý$%%3%9%A%E%L%o%u%{%‡%ž%¥%«%¶%»%»%Â%Æ%Í%Û%Ý%å%ê%ò%ý%&&&& &'&,&;&V&f&s&‚&ž& &¼&¼&Ã&Ø&Ý&æ&ó&ø&þ&'' +'''#'%'-'1'5'?'K'R'V'^'f'n'}'‹'�'œ'œ'¤'¤'Ç'Ç'Õ'Û'à'ä'é'é'é'é'ï'ñ'ñ'(( ('(=(?(?(?(J(J(J(O(x),4+t^Ä^ÄxÄ|ĔĜĤĮIJĹĿÄÓÄÛÄàÄãÄîÄùÄÅ ÅÅÅ/Å6Å=ÅHÅSÅUÅ`ÅkÅmÅyłłŘŢŹſÅÅÅÖÅÜÅåÅ÷ÅýÅýÅÆ ÆÆÆ+Æ6Æ:ÆHÆJÆNÆ]Æ]Æ]ÆnÆnÆsÆ…Æ‹ÆùÆ-Ô@FàFà\àcàfàŠàŠà§àºàÍàààåàåàáá$á7á?á?áAáAáAáTáVáVáVá]ápáƒáƒáƒá–á¡á´áÊáÏáÓáÚáïáâ â â â1â.LAPq$q$$�$œ$·$¼$Ü$Þ$ù$%%%#%J%/P~Žˆ‡ˆ‡–‡£‡±‡Ã‡Î‡Ü‡é‡÷‡ ˆˆ"ˆ(ˆ.ˆ04 +Á5Á5Ï5Û5ì5þ56661|¼Wþþ '6Aggprry §§¶ÅÚååñø,79RXcs…Ž™ž¤«ÐÕãììó(.BIPU`fn”�¤©´ÀÏãèðü%,4DV\eetzŽ—§¶ÈÑáôü 1 H L X o ‹ � £ ® º Ê Ú ß è è ú þ  - -* -/ -8 -8 -J -N -Z -q -� -Ÿ -¥ -° -¼ -Ì -Ü -î -ô -ô -ù -û -û -       ˜ 2�Ää^Ö^Özֆ֊֎ֶּ֕֜֫ÖÁÖÃÖÏÖÖÖÞÖäÖêÖîÖîÖýÖ× ×××××&×38 �/�/�/•/¡/¬/½/Ç/Î/Ô/4@}‰NËNË\ËgËnË�˚˚Ë�ËŸË¥Ë5ðh ŽäŽä´äÇäÏäÖäÝäãäåäìäóäöäöäååå&åBåjårå{åƒåˆå™å¯å¿åÑåÖåðåæ æ ææ=æRænæ–æžæ§æ¯æ´æÅæ׿çæùæûæç-ç1ç1çMçuç}ç†çŽç“ç¤çºçÊçÜçáçûçèè*è*è*èBè/èbèOèoè{è�è™è±è¶èËèçèéé é(é-é>éPé`érétéŽé¦éªéªéÆéîéöéÿéê êê3êCêUêZêtêŒê�ê£ê£ê£ê¨êÈêèêôêúêë*ë*ë*ë6ë<ëGëRëdëtë‹ë¢ë¹ëÐëÐëäëììì!ì1ì?ì?ìHìSìaì|ì‹ì’ì¢ì¤ìªìÁìÐìÉìæì÷ìíí+í6D}о¾Îâëñ -7\Ob † †À†Ï†Ø†á†å†é†ò†÷†ü†ü† ‡‡‡0‡3‡?‡80ý>ß>ßGßLßUß\ß^ßcß9Do|ffvŠ“™««¯²º:°ÄìvrvrŒr“r¤r©r¾r«rÊrÐrÐrÜrôrársssss-ss9sd(=Ð…Ð…Ü…ð…󅆆††'†/†2†8†?$q¶¨E¨EÌEÏEÓEàEéEôEFFF:F:FFFHFHFTFYFYFeFjFjFvF{F{F‡FŒFŒF˜F�F�F©F®F®FºF¿F¿F¿FÂFÂFÛFéFýF G GGGG!G&G&G,G8G8GCGOG\GqGyGGG�G�G™GœGH@ì xÖ†Ö†ó†û†þ† ‡‡/‡8‡P‡f‡x‡ƒ‡”‡˜‡ª‡­‡¸‡Á‡͇à‡ˆˆì‡!ˆ5ˆFˆRˆ`ˆ~ˆ�ˆ´ˆňLjèˆΈ‰‰‰ ‰‰‰‰,‰3‰@‰E‰T‰a‰t‰t‰ˆ‰Œ‰¹‰¹‰щÖ‰Ö‰æ‰î‰þ‰ŠŠ"Š2Š>ŠCŠCŠSŠ[ŠkŠuŠ…Š�ŠŸŠ«Š°Š°Š°ŠÒŠàŠêŠïŠüŠ‹‹‹ ‹/‹4‹:‹?‹?‹D‹N‹]‹b‹h‹m‹m‹s‹y‹~‹~‹�‹ ‹¬‹¹‹Å‹Ø‹à‹æ‹ï‹ŒŒ+Œ8Œ=ŒUŒhŒŒŒŒ”Œ§Œ¯ŒµŒ¾ŒÇŒÇŒÌŒÌŒÌŒÌŒÌŒØŒØŒØŒáŒúŒ��2�C�P�R�f�k�k�k�v�„�‰�‰���ž�£�»�Ç�Ù�å�ë�ú�þ�ŽŽ-Ž9Ž?ŽEŽXŽ`Žhޕަ޳޵ŽÃŽÃŽÈŽÈŽÏŽÝŽâŽõŽ� ��� �%�%�%�%�%�=�B�B�B�B�B�S�S�S�S�S�S�S�S�S�S�\�u�Š�’�­�¾�Ë�Í�á�í�ò�ò�ò�û��!�&�H�T�T�Y�Y�Y�Y�Y�Y�Y�Y�n�s�s�s�„���”�”�Ÿ�±�É�Û�ü�‘'‘8‘=‘=‘=‘F‘h‘q‘‚‘†‘ž‘®‘¶‘¾‘É‘ó‘ü‘’’(’(’(’(’(’J’ƒ’Œ’�’–’›’¤’­’²’²’²’²’Á’Õ’ó’þ’“ “““!“5“[“f“n“t“t“y“y“ˆ“œ“º“œʓГÕ“Õ“è“ü“"”-”5”;”;”@”@”@”I”b”w””𔫔¸”º”ɔ˔˔˔˔˔ߔߔߔߔߔߔߔߔߔߔߔߔߔߔߔߔî”ý”• -• -••••)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•)•+•+•B•J•V•V•Z•_•o•Š•Ÿ•®•º•Еê•í•÷•–)–I–i–�–�–¢–Ж¨–ë–ë–î–þ–—!—2—5—O—]—i—�—�—¬—¯—¾—Ò—ó—˜ ˜ ˜<˜N˜l˜Ÿ˜�˜’˜‡˜x˜­˜­˜­˜°˜µ˜¸˜Ò˜à˜™0™0™[™^™m™�™¢™³™Ï™»™ë™ë™ š<š:š/š$ššJšJšJšMšRšRšYšišŠš–ší�A´«Ô¾£¾£Ô£Ø£ã£ê£õ£ ¤ ¤¤%¤,¤9¤E¤R¤Z¤k¤k¤t¤y¤�¤‘¤Ÿ¤®¤¹¤̤̤ߤߤõ¤!¥!¥5¥7¥7¥A¥I¥I¥S¥[¥[¥[¥l¥l¥l¥p¥x¥~¥ƒ¥ƒ¥‡¥�¥“¥™¥ž¥ž¥ª¥¿¥Ï¥Ù¥ì¥ñ¥ù¥ù¥þ¥þ¥¦¦&¦6¦@¦H¦N¦a¦f¦n¦t¦t¦y¦€¦‹¦³¦¾¦ͦצߦå¦÷¦ý¦§§§§§§§§§ §§&§6§<§D§W§\§d§i§q§v§v§v§~§†§�§—§œ§¤§©§°§»§ã§î§ö§¨¨!¨&¨,¨1¨1¨8¨J¨R¨e¨m¨u¨ЍŒ¨—¨Ÿ¨´¨´¨¼¨Шبߨå¨é¨í¨ü¨© ©#©/©7©L©X©]©i©t©y©y©y©š©´©¹©Á©ЩØ©à©õ©ú©ª ª"ª'ª'ª3ªIªUª]ªrª~ªƒª�ªšªŸªŸªŸªŸªŸªŸªªªªªªªªªªªªªªªªªªªªªªªªªµªÕªòª«««#«(«0«8«:«B«U«[«c«k«m«�«•«ž«¦«®«³«¸«¿«Ê«ò«ý«¬¬¬7¬<¬D¬I¬I¬I¬R¬[¬^¬h¬v¬ˆ¬Ьœ¬®¬®¬®¬¹¬¾¬Û¬à¬à¬é¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬î¬ù¬­­1­D­L­l­q­y­€­�­•­ž­¦­­­²­²­º­­Þ­æ­é­ë­û­®®®®®+®.®1®9®>®>®G®L®T®[®h®�®ˆ®�®¥®¯®Ê®ã®ë®ø®¯¯¯¯¯¯¯¯¯¯%¯0¯;¯J¯O¯O¯W¯_¯l¯q¯q¯q¯u¯z¯z¯Н�¯�¯�¯›¯¢¯¨¯¸¯ɯ坸¯þ¯°°"°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°,°,°G°Q°_°_°d°o°v°’°Ÿ°Ÿ°Ÿ°£°®°̰Ú°Ô²Bü|Ö²Ö²ì²÷²þ² ³³+³6³=³M³`³j³j³†³ ³§³°³·³º³ƳϳÖ³Ù³Þ³ô³þ³´´"´7´>´F´R´g´n´n´n´|´Š´”´—´¥´¯´²´Ä´É´δÞ´á´æ´ö´ù´ý´µµ µ(µ(µ(µ>µHµZµ`µlµ�µˆµ�µ¢µ¨µ·µȵȵϵϵϵݵëµõµøµ¶¶¶%¶*¶/¶?¶B¶G¶W¶Z¶^¶g¶o¶�¶‰¶‰¶•¶¢¶ª¶ª¶­¶¸¶Ö¶ä¶-·ChoÅŽ»Ž»¨»»»»É»Ô»ç»ê»ó»ú»ý» ¼¼&¼1¼4¼J¼V¼k¼v¼�¼Œ¼—¼¢¼¹¼żܼä¼í¼õ¼½½ ½&½+½>½D½L½_½e½m½m½{½�½š½­½³½»½νÔ½ܽܽ¾ -¾)¾,¾,¾3¾@¾D¾O¾i¾u¾…¾¥¾Á¾Õ¾ݾ羿¿¿�¿D &*–*–* *¨*­*EÉÇþ6þ67&797&7S7a7a7q7z7�7…7Ž7Ž7–7š7¸7Ä7Ð7Ö7á7888!8'8.83838F8Q8\8c8k8x8x8Š8�8�8Ÿ8¤8¤8¤8·8¼8Ï8Õ8Ü8ñ899 -9 -99 9 9$9+939:9<9D9K9K9Z9`9m9t9w9™9™9¡9°9»9Â9Ä9Ø9ç9ì9ñ9ñ9ñ9: :: :&:;:O:O:T:T:\:r:w:‹:’:—:—:£:²:Ä:Ó:æ:ê:ù:;;$;A;L;Q;`;t;{;‚;’;”;¢;²;´;Â;Ï;ß;æ;û;<< <6<8<D<O<Q<Q<\<p<}<…<‡<›<­<´<Ä<Ð<ñ<ø<="="="=*=5=9=A=E=M=T=d=o=‰=Ž=•= =©=±=¶=¶=Å=Ò=à=ë=ö=> ->>> >%>4>A>I>U>c>z>|>…>�>’>ž>¼>Â>È>Î>×>è>??!?.?F?M?Y?h?}?}?Š?�?¡?§?§?§?§?c@FD�šžpžp²p¾pÔpÀpàpâpôpqqGìˆÿN=N=p=z=­=¼=Ò=ö=û=ÿ=>> >&>/>4>I>Z>y>�>ƒ>¢>ª>¹>À>Ì>Ñ>Ø>à>æ>è>? ? ? ?+?1?1?9?B?Q?p?w?y?˜?Ÿ?Ÿ?Ÿ?³?Ç?Ë?Ù?ì?ä?@ @@@#@)@+@G@L@b@N@n@t@t@�@•@®@š@º@À@Å@á@æ@ü@è@AAAA#A%AAAFA\AHAhAnAnAnAvAAA‰A‰A¡AÑAåAéA÷A -BB"B"B4BHüE€ÁÁ5ÁQÁVÁwÁ•Á¤ÁÂÁÖÁîÁõÁúÁÂ9ÂHÂeÂvÂ�‘‘•šŸ©¬¶¼ÂÙÂÜÂÜÂÜÂáÂçÂÃÃÃ&Ã:ÃBÃKÃgÃrÃ~ÇÛÛêïïýÃIl¬ÃÎ'Î'Ü'ö'ã'((!(6(#(U(B(a(o(w(‚(„(�(š(š(¹(¿(JP‡—nÖnÖ‚Ö�ÖžÖªÖ°ÖÚÖðÖÜÖ×üÖ ×'×KŒg†þÔþÔ0ÕSÕSÕfÕjÕ‰Õ�Õ¢Õ¢Õ¯Õ·Õ¿ÕÔÕàÕñÕöÕÖÖ Ö"Ö"Ö"Ö;ÖSÖSÖmÖLP�­&¼&¼O¼Q¼_¼e¼ƒ¼’¼¡¼°¼¾¼ɼ̼ܼMì8––ÀÃÆÌÑèÿ(Nux‘¨ºÇÚíòú  'Oioˆ¡£½ÃÜõý$bw‰N$”™II1II;ICIOLu„NÇNÇ`ÇudžǗǞǦǶǾÇÏÇÕÇÈPTHY‚‚"‚$‚-‚6‚D‚I‚R‚U‚Z‚h‚r‚u‚‚Q¨!Gh€h€x€�€”€¡€­€¹€Å€Ñ€è€è€÷€� ���2�E�J�\�k�w�‰�‰�’�²�²�´�Ç�É�ã�ï�ò� ‚Rxÿ™�g�g©g´gÄg hh(h/h7h?hHhPhXhZhbhjhqhxh—h¯h¸h¸híhi iBi\iyi£i¯iÑiÓiÚiáiáijjDj]j„j�jÄjÝjkkDk]k„k„k“k k¥k¥k´kÁkÆkÆkÍkØkêkll5l7l7l7l>l>lKlPlPlPlalol‚l—lÑlØlØlØlàlýl m)m2m;mHmVmpmŒmŒmŒmŸm­mÉmçmçmçmòmõm"n$n;nAnRn[n]njnlnyn{nˆnˆn¬n®nµnÆnÏnÑnßnánïnñnÿnÿn o o o o,o?oRoso€o™o¡o¥o­o±o¿oÍoÏo×oÛoßoçoõoppp(p>pPppp‡p’pœp£p¼pÈpÏpèpèpúpÿpqqq)q8q?qPqYq[qiqkqyq{q‰q‰q‰q­q­qÊqÑqØqÛqçqêqøqüq -rrr r r9r@rErSrdrkr�r¡r´rÃrÅrÔrÖrårïrïrýrss#sHsMsvs¦s«s¹s»sÉsÒsìsîsðs÷sttt!t#t1t3tAtAtatatatatat€t€t€t‹t§tÌtåtêtêtêt uuuu1u6u6u6uUuZuZuaucucukumumututuwu|u›u±uÖuòuv v v&v3v5vDvMvgvivivnviv�v‘v‘v™v”vÒvÒvÒvñvñvñvwwww9w>w>w>w^wcwcwcw‚w‡w‡w¢w°w²wÁwÊwäwæwæwëwæw xxxxxOxOxOxZxZx„x„x®xÆxÞxéxÿxy$y’E’O’Y’Y’l’q’q’q’u’‹’”’”’·’¼’¼’Ä’Ø’á’û’“““)“;“G“P“U“U“U“f“ƒ“Ž“˜“£“¨“³“»“À“À“˓ӓܓç“÷“”'”;”@”@”K”^”h”s””” ”®”³”Á”Ŕʔʔڔå”í”ò”ý” -••/•A•S•^•c•n•v•{•†•“•ž•¸•Ê•Ü•Ü•Ü•Ü•á•æ•æ•ò•––)–+–G–G–Q–e–o–q–}–…–¢–³–½–È–ë–ü– ——)—A—Q—V—V—a—f—f—n—y—~—~—†—‘—–—–—ž—¼—¦—ԗٗٗá—ÿ—é—˜˜0˜˜H˜M˜M˜Z˜_˜_˜g˜l˜l˜x˜‰˜›˜ ˜ ˜´˜ ˜̘јјÙ˜Þ˜Þ˜ñ˜ö˜ö˜ ™™™(™8™=™=™W™g™l™l™†™–™›™›™µ™Å™Ê™á™Ê™ù™þ™þ™ ššJš8š&ššbšgš£š‘ššgš»šÀšÀšÏšßšäšäšóš››››%›*›R›@›*›j›o›—›…›o›¯›´›Ü›Ê›´›ô›ù›ù›œœ@œPœUœUœpœ\œšœªœ¯œ¯œ»œÀœÀœÌœÑœÑœäœôœùœùœ ��!�!�4�D�I�I�\�l�q�q�y�~�~�†�‹�‹�“�˜�˜� �¥�¥�¸�½�½�Ð�Õ�#žžÿ�í�Õ�0ž5žƒžqž_žMž5ž�ž•ž•ž¤ž¿žÄžÄžÕžðžõžõžŸŸŸŸ!Ÿ&Ÿ&Ÿ.Ÿ3Ÿ3Ÿ;Ÿ@Ÿ@ŸxŸfŸTŸGŸ—Ÿ²Ÿ·Ÿ·ŸïŸÝŸËŸ¾Ÿ ) . ` N F . x } ¯ � • } Ç Ì æ РÌ þ ¡ ¡ -¡¡8¡=¡=¡I¡b¡r¡ƒ¡ƒ¡©¡«¡Á¡Ç¡Ç¡ã¡ð¡!¢c¢R¢@¢o¢w¢w¢w¢ƒ¢ˆ¢ˆ¢›¢¦¢°¢µ¢À¢Ê¢Ï¢Ï¢é¢î¢î¢ö¢û¢£û¢£&£+£?£+£K£V£[£[£f£t£y£y£„£�£”£”£¥£ª£ª£»£À£À£Ú£å£ê£ò£ê£þ£¤¤¤#¤(¤0¤(¤<¤A¤U¤A¤a¤f¤f¤z¤f¤†¤†¤†¤‹¤—¤‹¤ª¤¯¤¯¤»¤¯¤ΤÓ¤Ó¤ߤÓ¤ò¤÷¤÷¤¥÷¤¥¥/¥¥;¥G¥R¥]¥b¥v¥b¥‚¥Ž¥™¥¤¥©¥½¥©¥Ñ¥É¥Ú¥ߥߥç¥ì¥ì¥ô¥ù¥ù¥¦¦¦¦¦¦¦#¦#¦.¦3¦3¦>¦C¦C¦N¦S¦S¦^¦c¦c¦n¦s¦s¦~¦ƒ¦ƒ¦ަ“¦§¦“¦³¦¾¦ɦԦ٦٦ã¦è¦è¦ò¦÷¦÷¦§§§§§§§"§"§/§4§4§A§F§F§F§F§F§N§S§S§[§`§`§h§m§m§u§z§z§‚§‡§›§‡§§§¸§½§½§ϧÚ§ú§ÿ§¨ ¨9¨%¨E¨P¨[¨`¨`¨r¨}¨�¨¢¨¸¨èܨȨè¨ó¨þ¨©©© ©@©E©[©f©©k©‹©–©¡©¦©¦©Ì©¸©Ø©ø©ý©ªª#ª>ª*ª^ªJªjª€ªlª ªŒª¬ª·ª¼ª¼ªâªΪ«)«4«9«T«@«t«`«€«–«‚«¶«¢««Í«Ò«Ò«ø«ä«¬$¬)¬?¬J¬O¬j¬V¬Ьv¬–¬¬¬˜¬̬¸¬جã¬è¬è¬÷¬ü¬ü¬ ­­­­­­­­%­'­'­1­>­^­`­`­j­j­j­j­j­l­l­ƒ­Š­•­•­¢­¨­¯­º­Å­ЭÛ­æ­à­ ®®!®/®)®R®J®j®j®j®s®{®Ž®”®¢®µ®µ®Í®×®ë®¯¯&¯6¯K¯]¯m¯m¯•¯œ¯«¯½¯½¯Á¯Ưͯݯü¯ü¯°°°#°#°'°2°>°L°y°‚°“°¡°Ô°à°å°û°±±)±.±<±X±ƒ±©±¬±¼±¾±¾±±á±ì±ì±ï±ý±(²H²H²H²v´\, ÞÑÞÑìÑòÑöÑÒÒÒ]8ƒ�VHVHwHdHƒHŽH™H¤H¯H»HÁH^\�”ø›ø›œœœœ&œ1œ<œ>œTœTœfœrœ{œ~œ­œ_ܳfÍÍHÍQÍ_Í�Í�͒͟ͽÍÅÍòÍ÷Í Î=ÎYÎ_ÎcΆάαÎÚÎôÎÏ1Ï7Ï;ÏTÏ\ÏaÏrÏzϙϟϣϼÏÄÏãÏèÏùÏÐ Ð%Ð-Ð3Ð7Ð;ÐMÐUÐaÐwÐ|ЎГФЩлÐÄÐØÐãÐÑ8Ñ]ÑbÑbÑbÑrÑyчєѶѶÑÍÑÒÑÒÑéÑëÑëÑÿÑÒÒÒÒÒ1Ò3Ò3ÒJÒJÒ[Ò`Ò`ÒpÒ•Ò§Ò¬Ò¬Ò¬Ò¬ÒÄÒçÒúÒÓÓÓ%Ó<Ó>Ó>Ó>ÓKÓbÓdÓdÓqÓˆÓˆÓŸÓ¡Ó»ÓÙÓÙÓÙÓÝÓßÓßÓßÓäÓæÓæÓëÓëÓõÓúÓúÓÔÔÔ Ô"Ô"Ô"Ô*Ô,Ô,Ô4Ô4Ô6Ô=Ô[Ô]ÔpÔ†Ô†Ô†Ô†Ô†Ô™Ô±Ô¹Ô¹ÔüÔ`` ->8>8P8\8z8–8£8º8Í8Ø8í8Ú8ù89 9 9979=9aôW!!,!/!A!H!O!T!V!]!d!h!z!¬!Æ!³!Þ!ã!""""'"a"f"“"›" "©"´"¼"Ã"â"è"# #(#3#J#i#o#v#v#|##ƒ#”#´#Æ#b$¾¿¾¿Í¿å¿å¿ë¿cxb|^Ê^Ê~ʠʠʪʯʯÊÎÊÛÊÝÊÝÊÝÊÝÊêÊòÊËËËË#Ë6Ë6ËHËdHÏ>KNW]t‹¢´âþ"-DVcvŒ ¥°ÐÕØò   ! ; U ] e j „ Œ ‘ ± ¶ ¹ Ó í õ ý ÿ  3 ; C E _ g g l q | | ‡ ‡ “ “ ¥ å û û  !eŒc‚.G.GBGEGWG_GjGyGyG�GšG¥G¾GªGÊGÙGáGìGôGÿG -HH H+H6H6HHHHHPHfd¤¹`‰`‰p‰w‰ƒ‰‰‰‘‰Ÿ‰²‰¾‰Õ‰â‰â‰å‰ó‰ŠŠŠ&Šg»üY+Y+o+t+ˆ+·+Ã+Ð+Ú+ê+ê+,, ,&,/,F,F,\,\,r,r,ˆ,ˆ,ž,ž,´,´,Ê,Ê,à,à,ö,ö, - -$-$-;-;-R-R-i-i-€-€-—-—-¯-¯-Ç-Ï-Ú-ë-ö-. -. .#.*.6/h ÷ææ  +?FIKTeehp†‰—š�¤¨°¾ÐÖÞi(EKww=w*wIwXw`wjCÞ.Þ.///#/+/3/@/F/O/U/Z/b/~/„/†/ˆ/•/•/¢/—/³/¹/»/½/Ê/Ê/Ê/Ï/Ø/à/é/ñ/ó/û/0 000)000@0K0W0u0|0‡0�0ž0¢0ª0ª0¾0Î0Ö0Ù0?1k8-7y0y0�0‘0–0¡0¬0¯0³0»0l¤õš¶~¶~Ô~ø~þ~ ,1GcOo‚”�¥¯Íßèðú€ÿ €1€;€C€H€c€O€ƒ€o€�€¥€‘€Å€±€Ñ€ã€í€õ€õ€þ€��5�G�V�Z�Z�a�f�„�†�‹�–�¬�¬�¬�°�¼�Ý�ë�õ�‚#‚1‚;‚=‚=‚W‚j‚x‚{‚›‚Ÿ‚¾‚‚å‚邃 ƒ ƒ ƒƒ ƒ*ƒCƒIƒTƒ`ƒbƒjƒpƒ‰ƒ”ƒ¢ƒ¬ƒŃȃЃ܃Þƒæƒéƒ„„„„„ „9„Q„]„r„w„‰„˜„±„„„̈́؄ð„ü„……(…7…P…a…a…g…r…z…ˆ…�…¡…mfäîÚîÚÛÛ1Û1Û7Û?ÛGÛOÛWÛ]ÛjÛjÛxÛ}Û}ÛƒÛˆÛˆÛŽÛ“Û“Û™ÛžÛžÛ¶ÛÉÛÏÛÔÛÔÛÝÛýÛýÛýÛÜÜÜ ÜÜÜÜÜÜÜÜ$Ü$Ü+Ü-Ü-Ü3Ü3Ü:Ü:ÜBÜHÜNÜVÜVÜVÜVÜbÜjÜrÜz܂܊ܒܘܰܿÜÉÜÌÜÌÜÖÜÜÜâÜâÜæÜîÜõÜýÜÝ ÝÝÝÝ&Ý.Ý2Ý8ÝCÝIÝVÝbÝhÝpÝtÝ{݃݋Ý�Ý•Ý�ݤݬݴݸݾÝÉÝÎÝäÝõÝúÝýÝ£ÞnÖ¾4¾4ð45 555%5.50535Q5X5s5u5|5—5ž5§5©5¬5Ê5Ê5Ê5Ø5â5ï566+63636O6m6r6y6�6”6¯6±6¸6Ó6ç677 77:7<7V7^7^7z7•7•7»7Í7o &*&*0*8*=*p`a"a"j"q"…"™"ž"¼"Á"ß"á"ÿ"##,#5#7#K#[#Œ#q ö)ö)ÿ)*"*rl2ÉP‘P‘f‘w‘ˆ‘™‘ª‘»‘Α֑ä‘’ ’’ ’5’5’H’Y’_’t’�’�’¤’©’±’¹’¿’×’ê’õ’ù’“““ “-“/“A“A“H“W“e“x“|“†“Š“–“𓦓ª“¶“º“º“Í“à“æ“ê“ô“ø“” ”””1”5”5”5”5”:”L”[”j”x”“”£”³”¸”¸”¸”Ĕ̔Ԕڔï”÷”•••#•%•%•%•%•%•%•%•%•%•1•9•A•G•\•d•h•p•~•„•„•„•–•œ•¨•®•»•Ö•æ•ò•ø•––%–D–£—sÔÍþ°e°eÂeÓeÞeéeÿef)f.f7f>fKfRf`fgfiflfqfsfyf“f­fÃfÛfàféfðfýfg,g3g5g8g=g`g~gŠgt$in'''';'B'\'u¤b‡ö;ö; -<<7<#<C<H<O<O<o<…<q<‘<·<£<Ã<È<Ï<Ï<×<Þ<é<ô<ü<===-=%=E=M=v9vþOþOP!P9PQP[PfPfPkPvP‚P�P›P«P»PÂPÈPÝPòPòPQQQ+Q:QGQXQiQwQ…QŒQ’Q§Q¼Q¼QÐQÝQîQþQRRRR)R:RGRWR¹Rw8¬¶öÏöÏúÏÿÏÐÐ#Ð,Ð1Ð6Ð8Ðx88BÁ0Á0Õ0Ù0Þ0é0ó0ö0ú01y0†Ž>Î>ÎTÎgÎtÎzÎ}Î…ÎzÜtVVxƒŽ—§¹¿ÅËáÐõ  %*M`dj�‡—�©·¼Êãñú -  ?MYs’™£²¸¾ÄÊà!8CR_n{‹™°¼ÁÏî &16<S^krr€�‘Ÿ®ÀÀÈëö*{T�޾þÃÖÃÞÃëà ÄÄ$Ä.Ä4Ä:Ä>ÄBÄdÄdÄkÄnÄsĂĆijķļļÄÃÄÆÄËÄ×ÄåÄéÄúÄ Å ÅÅÅ"ÅDÅHÅMÅMÅaÅdÅpÅzÅ�ŧŲŶŻÅñÅÆÆÆ(Æ3Æ7Æ9ÆDÆHÆHÆbÆfÆhÆhÆsÆwƑƕƕƕƙƼÆ|ˆßý¾Æ¾ÆÒÆèÆèÆèÆêÆêÆñÆóÆóÆúÆüÆüÆ Ç Ç ÇÇ Ç!Ç!Ç.Ç5Ç7Ç7ÇOÇTÇTÇdÇ}°©Ñ¾I¾IÖIÞIéICJ.J#JJ÷IIJ[JKJvJvJ�JƒJ¼JÁJÍJØJíJÚJùJÿJK'KK K;K=KVKVKcKŠKŠKŠK–K~ †*®³®³Ë³Ò³Ú³å³ü³´´´'´B´X´f´j´Š´ž´²´¹´½´Ö´à´ñ´þ´þ´µ µµµµ"µ)µCµJµZµ^µ^µhµ~µ‚µ‚µ“µ¦µ¹µ¹µ¿µÊµÑµÙµäµëµóµþµ¶¶¶.¶2¶J¶;¶e¶e¶k¶r¶�¶‰¶—¶ž¶¢¶¤¶¶¶¶¶¶¶È¶Ð¶ö¶····%·5·@·U·Z·h·w··�·˜·œ·¡·©·­·¼·¾·Í·Ï·Þ·à·ï·ö·ú·¸¸$¸+¸/¸?¸J¸O¸m¸u¸ƒ¸Š¸Ž¸–¸¤¸«¸¯¸·¸Ë¸Ó¸Þ¸â¸â¸â¸í¸ø¸¹¹*¹2¹=¹L¹T¹_¹d¹l¹w¹ƒ¹‡¹’¹—¹©¹±¹¼¹¼¹¼¹¼¹Ê¹Ù¹ö¹º -ºº*ºHºLº{ºpºaº‹º‹º•ºœº«ºººÂºÐº×ºÛºÝºìºôº» » » »»!»!»3»3»3»9»E»W»_»w»£»±»µ»Ó»Ú»á»ì»¼¼ ¼¼&¼4¼;¼?¼A¼T¼\¼j¼q¼u¼u¼u¼u¼ƒ¼Ž¼�¼¥¼³¼¾¼Â¼Â¼Ç¼Ï¼Ó¼â¼ä¼ó¼õ¼½½½½ ½4½<½J½Q½U½e½p½u½“½›½©½°½´½¼½Ê½Ñ½Õ½Ý½ñ½ù½¾¾¾¾¾¾(¾B¾R¾]¾r¾w¾‚¾’¾ž¾´¾¼¾Ç¾Ö¾Þ¾é¾î¾ö¾¿ ¿¿¿!¿3¿;¿F¿F¿F¿F¿Z¿j¿¿Œ¿�¿¤¿µ¿Ê¿×¿Û¿é¿þ¿À%À>ÀWÀYÀdÀlÀlÀuÀ’À£ÀºÀÓÀáÀìÀøÀÁÁ ÁÁÁÁ/Á=ÁKÁ`ÁwÁ†Á“Á±Á¸Á¸ÁÈÁÜÁöÁöÁúÁ Â:ÂEÂ\ÂdÂd††™´½ÂÒÂìÂûÂÃ&Ã4ÃJÃcÃsËËããïÃÇÃßÃèÃèÃèÃôÃÄÄ&Ä&Ä-Ä6Ä<ÄHÄ®ÄÌL»öö4ö?öJöpöpörööŠö�ö¡ö°ö¿öÌöÌöÒö×öÜöïö÷ ÷÷#÷0÷8÷C÷?÷Z÷h÷h÷h÷s÷Ž÷y÷Ÿ÷–÷©÷«÷Ç÷³÷Ï÷Ý÷Ý÷ß÷û÷û÷øøøøø=øQøDøYø_øhøhøhø{ø€ø€øˆøˆø“ø¨ø±ø±ø±ø±øÍøäøêøïøïøù -ùùùù8ùXù]ùbùbùnù‹ùšù©ù±ù¶ù¼ùÁùÁùÈùÏùòùúú.úCúCúIúIúVú_ú_úzúŒú—úœú©ú´ú¼úÄúÔúëúëúûúûú ûû;ûDûDûFûMûRûRû_ûjûpûyûyûŒû™û«û¶ûÄûÍûÒûùûü üüü!ü4üIüNüUübüiü{ü�ü—ü�ü¦ü¦ü¯üÉüÐüÕüãüóüýýýýýý*ý<ý?ý?ýPýXý`ýlý‰ý�ý�ýŸý¦ýºýÉýÉýÉýðýðýðýýýýýþþ/þ<þGþUþ`þoþvþvþ�þ£þ¥þ´þÉþËþÙþîþîþôþýþýþ -ÿÿ"ÿ"ÿ/ÿ2ÿ=ÿOÿVÿaÿfÿnÿuÿ€ÿ…ÿšÿœÿ¶ÿËÿËÿËÿÍÿÔÿÚÿëÿùÿ  !&GPPV__~~‹Ž”�¥°ÂÈÓÓàãéòú((58>GIk~“™¤¶¼ÄÄÄÄÏJ€@I•¾î¾îÖîèîóîïïúî'ïEïrï]ïQï~ï˜ï˜ï·ïÌï¹ïùïäïØïð ð ð ð1ðKðKðxð‘ð…ð¾ðÃðÖðÊðøðéðñ"ñ:ñ.ñ`ñMñ{ñlñ‡ñ¥ñºñ§ñÒñÆñôñåñòòòò,òFòFòaònò�ò�ò•ò�”ž¿¡3¡3µ3¹3Â3Å3Î3×3é3é34444'474>4A4I4L4Y4a4i4q4x4ˆ4ˆ4”4‚Œ >>9>9R9Y9‰9u9•9š9¡9¡9Á9×9Ã9ã9:ÿ9 :$:+:+:3:::E:M:X:k:c:ƒ:‹:ƒø;8_8_V_f_p_p_z_z_„_–_£_¦_¨_±_¾_¾_Ø_ß_ß_ù_```$`3`B`X`X`X`h`h`z`z`ˆ`–`¬`¬`Â`å`û`a4a4aBaPacaca–aÉaÏaÏaÏaáa„¸ºä(Š(Š@ŠBŠNŠRŠ_ŠbŠ|Š|Š|Š‚Š†ŠŽŠ™Š­Š¹Š»Š»ŠÄŠÆŠÆŠÏŠÑŠÑŠÚŠÜŠÜŠåŠåŠîŠôŠ÷Š‹‹‹$‹$‹Œ‹…œWzV V t … ¨ ¯ È À à ì  "C/[ƒŠ£›»ÛÇçøú&33KKU†œf‰.-.-:-J-U--¯-¼-Í-ß-æ-í-.....=.J.M.f.i.n.….‘.�.¡.¨.Þ.‡x¬ثثî«õ«ü«¬*¬9¬H¬W¬f¬p¬p¬u¬|¬�¬ž¬£¬¾¬Ø¬Ø¬î¬­­­­­­%­7­@­B­P­b­b­b­t­­‘­œ­©­®­¾­Ã­Ó­ß­ä­ñ­ö­® ®®®-®/®?®A®R®[®[®]®m®t®„®„®Ÿ®±®Ã®Õ®å®å®å®è®û®ˆ\åø�‹�‹«‹²‹·‹Å‹Ú‹á‹ë‹ù‹ü‹þ‹ŒŒŒ!ŒWŒ‰0ÎÖ..Fˆ|PNœ¤ŠLBQ¦+¦+´+Æ+Ì+Ô+æ+ì+õ+, ,,L,‹(—�q3q33Ž3’3•3›3Œ\ReN,N,\,n,t,|,Ž,”,�,¯,µ,¾,Ð,Ö,Ù,'-�, vÑvфыѓјўю¬!H.í.íLí^íeílí{í€íŸíŸí¤íÃíÈíÏíÞíàíÿíÿíî3î î?îNîPîoîoîoîoî~î—î�î¯î¹î�(?&E&ECEKEREfExE~E‰E E¯EºE¾EÉEÕEàEìEFF-FDFYFiFiF{F�F’F˜F¨F¨FÀFÀFåFåFêFêFðFüF GG*GAGPG[GmGyG�G¨GÉGÉGÒG×G×G×G×GçGðGøGýG HH)H.H.HFHFHKHKHUH`HrHxH„H”HŸH©H­H¶HÏHÒHâHïHÿHIII(I0I;IBIFIYI_IlIwI}I�I�I�IÊIìIøIJ JJJ J*J*J:J?J?JIJTJfJlJzJ‡J”JžJ¢J«JÄJÇJ×JÞJãJãJ÷J÷JüJKKK+K1K3K3KAKGKMK^KdKpK€K€K€K…K�K�K¬K¯KÃKáKìKL'L2LDLHLMLTLfLvLŽL•L™LŸL§L²LµM�<KV¦ ¦ À Ì Þ ô   - E E O ‘`l€@›@›`›g›o›z›„›�›—›¦›°›³›×›Ù›é›é›÷›’`àô®}®}Ä}æ}ó}÷}~ ~#~)~<~Y~[~[~Œ~z~[~«~µ~“XnV¸V¸|¸ޏ“¸ª¸¼¸ƸиÞ¸æ¸õ¸ ¹ ¹¹,¹:¹B¹J¹L¹W¹b¹b¹j¹r¹|¹„¹޹—¹Ÿ¹¢¹«¹ƹ×¹é¹ì¹ñ¹ºº0º8º8ºJºMºRºeº}º‘º™º™ººº½ººÕºÛºðº»»»3»;»;»F»e»l»w»Ž»”HWeq1q1…1‰1Ž1™1™1£1©1©1­1µ1•83=vÒvÒÒÒ�Ò‘ÒŸÒ¢Ò§Ò–8>H®Ò®Ò·Ò·ÒÅÒÉÒÐÒÓÒØÒ—D+8®*®*È*Û*å*ì*ø*+++/+5+T+˜Ðy©ÖÛÖÛÜÜ -ÜÜÜÜÜ$Ü$Ü6ÜAÜHÜUÜbÜu܄ܘܞܠܧܭܷܷÜÈÜÊÜÑÜ×ÜáÜáÜáÜøÜ -ÝÝ Ý"Ý4ÝCÝCÝUÝ™09AV+V+_+…+–+œ+œ+¤+š„\yžìžì°ìÅìÏìØìÚìáìñìüìþìííí í"í"íCíNíPíiípítí€í“íæí›”"v´v´˜´¢´®´³´ôÉ´Þ´ò´µµµ4µ<µFµUµ]µjµrµuµuµuµwµ†µ�µ™µ¡µ¤µ¶µœh÷ †B†BœB§B²BÀBËBÑBâBèBùBÿB C"C"C4CECRCXCiCoC½C��µÕ33D3I3]3e3s3w3€3€3…3’3¨3Ò3×3û3444%4;4=4S4i4�4§4¹4žˆùNàNàfàxàà†à¥àªàÉàÎàèàÕàáôàá(ááGá4áSáSáSáeálá‹á‹á“០y}è‡è‡ñ‡ý‡ˆ (A†â†â¨â°â¶â¾âÀâÀâÑâÑâÑâÙâáâóâãóâããã3ã5ã5ã@ãEã_ãdãdãdãyã{ãˆãŠã—ã™ã¦ã®ã¶ã½ãÌãÙãÛãìãùãùãùãää'ä-ä5ä7äDäDäYäYäYädänä†ä‹ä‹ä‹ä™äŸä¤ä¬ä·äÉäÔäÙäÙäàäääòäöäÿäå$å1å8åAå]åbåbåbåbåjåuåƒåƒå£å£å£åªå¸åÇåÚåíåïåïåïåææ ææææ-æ7æRæ{æ�æ�æ•æšæ¾æÅæÑæïæç çççççç#ç-ç;ç]çhç…ç�ç�ç�ç»çëçþçè&è9è>è>è>èFèQècènèsèsèsè…è²è¸è¸è¸èÃèÍèÙèäèæèæèæèëè÷è÷èAé¡H%Ù/Ù/ç/î/ù/000020<0B0H0¢0 Î7Î7õ7â7888/878£T9J† †   ¬ ¾ Ô õ â   0 F g T  — — ¡ ¤TXiž ž ´  È Î ß í û  %(2¥Lg–á–áÅáºáÒáíáÙá âùáâ/ââOâ;â[âgâlâxâˆâ�âœâ§â³â¾âÆâËâ×âÜâðâ÷âûâã ãã/ã8ãDãIã]ãdãhãhãmã†ã‹ã¤ã¹ãËãÐãÛãããããããåãþãää(ä3ä5ä@äHäHäUäMämä�ä¦àZŽ€‚€‚š‚¨‚­‚º‚Ȃтì‚ú‚ƒ%ƒ5ƒOƒZƒjƒlƒnƒxƒ„ƒˆƒ•ƒ¡ƒ³ƒ»ƒÓƒ×ƒ×ƒ×ƒ×ƒÜƒúƒ„„„„&„2„;„‘„§d{�VVt—¨¯ÈÀàì 3 KXXppz¨(–ߖߤßÇßÍßÒßÒߨߩ(!'ÒÒ'Ò5Ò;Ò=ÒBÒªD^kP9P9j9q9z9†9›9£9©9¯9±9±9À9«„½Ú˜¥˜¥Ë¥×¥Û¥ã¥ë¥ï¥ú¥þ¥¦¦¦¦¦(¦9¦;¦?¦P¦a¦n¦�¦ˆ¦’¦’¦’¦¤¦¬€¨—¨—Á—È—Ï—Ö—Ü—ì—÷—˜ ˜#˜&˜(˜C˜M˜W˜^˜i˜{˜ƒ˜ƒ˜™˜™˜«˜­˜b6B6B\B|B„B�BžB§B«B¶BÖBÛBõBCC C2C_ChC~C„CŒC�C”C§CÌCÑCçCíCõCøCDD:DYD_DgDgDlDrDuD€D D¥D¿DÞDäDéD EEE6E>ECEcElEnE�E•EµEºEÔEóEùEþEþEþEþE FF'F?FJF]FjF‚F–F§F±F³FÇFØFÝFèFõFGGG'G®°)ø�ø�ž(ž-ž1ž:žGžSž^žižqž|ž„ž‡ž“ž›žµžÛžÕžëžôž)ŸŸ9Ÿ9ŸQŸ\ŸxŸŸ£ŸÜŸÜŸÜŸÜŸ= ¯,ù@XŒXŒ}Œ‰Œ”ŒžŒ¤Œ®Œ´Œ¾ŒÌŒÖŒèŒòŒøŒ����%�+�4�_�n�q�s�}���™�«�µ�Ê�Ê�Í�×�ì�ñ�Ž ŽŽ%Ž8ŽBŽWŽeŽnŽvބޕޥ޶ŽÃŽÃŽÐŽÐŽØŽ �°l£:^Å^ÅwÅ�ÅŸÅ¿ÅÑÅéÅÆÆ.Æ6Æ:Æ=ÆAÆFÆPÆSÆZÆ`ÆgÆmÆqÆvÆ€Æ‘Æ˜ÆŸÆ¡Æ¥Æ®Æ¸Æ»ÆÆÆÒÆÕÆæÆñÆ÷ÆþÆÇ Ç1Ç:ÇCÇKÇVÇaÇmÇ~Ç�ǛǩǫDzǹǾÇÂÇÏÇÖÇùÇÈÈÈ$È=ÈNÈWÈ`ÈhÈqÈwÈ{ȀȄȑȘȦȰÈÅÈÏÈØÈñÈÉ ÉÉÉ%É+É/É4É:ÉDÉNÉjÉxÉ~ɃɋɓɛɨɰÉÏÉÂÉáÉêÉÊÊ,Ê3Ê<ÊEÊLÊUÊ^ÊgÊ€ÊpÊ�Ê”Êîʱ  è„è„ö„……²ÀŽº�(�(Š(±(Ÿ(‘(Ò(â(Ô()&)&)6););)O)T)T)p)u)u)•)š)š)®)³)³)Ð)Ð)Þ)*(*H*Z*l*~*Ž*Ž*Ž*Ž*Ž*W+³$chÑ&Ñ&Õ&í&ÿ&'´´ªî�î�žžžž#ž/ž/ž;žPžqžƒž•ž™ž©žÉžÛžážôžýžŸŸŸŸ1Ÿ5ŸEŸRŸpŸ‚ŸˆŸ›Ÿ­Ÿ¹Ÿ»ŸÇŸÏŸÓŸÙŸâŸâŸâŸâŸôŸ -   1 8 @ L a h h h v „ Ž ‘ Ÿ © ¬ ¾ àÈ Ø Û à ð ó ÷ ¡¡¡"¡+¡A¡G¡S¡h¡o¡w¡‰¡�¡ž¡¯¡¯¡¶¡¶¡¶¡Ä¡Ò¡Ü¡ß¡í¡÷¡ú¡ ¢¢¢&¢)¢.¢>¢A¢E¢N¢V¢h¢p¢y¢y¢„¢›¢³¢·¢âÛ¢ã¢é¢õ¢þ¢£ -££££,£4£:£Q£Z£b£h£n£n£n£u£‡£“£›£¡£§£§£©£»£µx.·.·<·Q·X·c·…·¹·Õ·ç·û·¸ ¸¸¸&¸(¸.¸4¸@¸H¸N¸P¸V¸¶ÜLÿžQžQ¼QÄQÔQÜQ R R$R,R4R:RNRVRVR^R—RáR¼RS SS*S,SVS\SeSlStS|SˆS�S˜S«S³S¸SÂSâSêSìSöST%T-T/TOTWTWTWTbTiT|T„T�T�T’T–TžT§T°T¸TÔTïT U3U6UMUZUnU…U‰UºUÔUæUVVVBVEVEV\ViV}V”VŸV£V®V¹VËVÚVÜVW WW*W/WYW_WdWvW…W‡W±W´WÆWÕW×WXXXXXXXMXXXXXXXXXaXmXƒXœX¯X¶XÂXÉXÉXÜXàXàXàXçXìXÿXYYYY0Y2Y7YJYQY]YdYdYqY{Y{Y‚Y£Y£YµY·w¸¾R¾RÜRßRåRùRSS S%S*S*S7S@SFSVSdSfS…S–S�S©S¹S¹SÇSÚSåSéSúSúSúSÿSÿS TT-T3T8TLTRTZTlTrTtTƒT�T–TœT¡T§T­T´TÀTÇTÉTÎTÖTØTÝTéTëTðTøTúTÿTU UUUUU'U)U.U8U8U8UHUHUHU_UeUkUvU{UƒUœU¢U­U±U·UÂUÛUæUñU÷UV VVV#V+V3VQV\VgVsVmV|V…VŠV�V¤V«V´VÀVÆVÒVÖVÛVàVëVöVWW WWW W9WDWOWOWUWbWdWiWrW‹W–W¡W§W´W´W¸W½W½WÎWÐWÐWãWåWåWøWúWúW XXX"X$X$X6X6XBLBYB…B¹(28ŽŽ¬¿ÆÍÔØÚáèììô +6DUY^z¢¦¯³¸Éææô &7;;;@nƒŠ�¡¦Âêòûÿ'7KMfy}}}™ÁÅÎÒ×è',EVZlllq€¡ÀËÑçøý.VZcgl}––¤¸ºÓäèèï9airv{Œ¢²ÆËä÷û    1@alrˆ™™™ ³ÌÌÌÛÛî  ! & , 6 8 D D K V k m x � ™ › ¦ ²  É Ð Ú â æ ê ì ñ ù ý  - - - -" -$ -$ -- -: -P -p -Š -– -¢ -© -© -¼ -À -À -À -Ç -Ì -æ -ò -þ -    # = I U \ \ i s s … º¤ ·œHH%H4H4H4HNHNH]H]HcHeHeHkHmHmHsHuHuH|H€H…H…H…H…H…H…H�H¢H¢H¬H±HºHÄHÑHæHèHII I%I@IEIKIKI`IcIŠI—I¯IÏIÏIØIÝIûIéIJJJJ%J8J@JHJMJMJMJVJoJuJuJŽJœJ¶JÌJÎJÖJÜJäJéJéJïJïJøJ K K K"K*K0K8K=K=K=K=KKK_KaKuKuK}KƒK‹K�K™K¡KªK°K¶K¸K¸K¸KÀKÀKÎKâKæKèKôKöKLL L$L-L8L;LALGLPLSLSLaLoLqL”L±L·L¿LÄLÍLÏLÏLÔLÖLÞLÞLùL MMM"M%MMAMQMUM\MeMtM‚MˆM�M•M�M¢M¢M«M¸M½MÅMÜMæMNN$N/N:NENPN[NfNfNfNnNnN‡N•N¯NÅNÅNÇNÇNÐNÖNØNØNÞNäNäNìNõNûNOOO"O$O'O,O4OYFYLYNYWYfYnYsYyYyY�Y‡Y•Y Y¥Y«Y³Y¸Y¸Y¸Y¸Y¸Y¸Y¸Y¸Y¸Y¸YÑY×YàYæYîYóYøYZ ZZZ"Z"Z"Z(Z0Z5Z5Z9Z>Z>ZGZUZaZnZtZtZ}Z‘Z‘Z—Z Z´Z´Z½Z¿ZÅZÎZâZâZëZëZëZðZõZõZýZ[[ [-[9[B[H[R[Z[_[_[_[s[|[‚[”[ž[ž[¦[¦[®[°[°[É[Ó[Ü[Þ[Þ[Þ[ä[è[ê[ê[ê[ê[ï[õ[û[5_»Ð0¶Y¶YØYîYúYZ4ZAZXZkZvZŒZxZ˜Z Z Z¯Z¯Z·ZÃZÙZîZýZ[[![![![&[+[:[E[\[^[c[r[}[Š[”[”[¢[¼”*K@ @ X _ f i r u x | � ¡ Ž ± ¹ Á Ä Æ Ö ß è î ñ ¡¡*¡5¡g¡½à.¢nÁnÁŒÁ—Á¨Á«Á¯Á¸Á¿ÁÍÁÜÁòÁÂÂ&Â8ÂGÂVÂgÂvÂv„ˆŒ‘•¢©·ÂËÂÔÂÚÂèÂÃÃÃÃÃÃÃÃÃÃ*Ã3Ã;ÃQÃQÃQÃVÃVÃkÃwÂÇÇÊÃ�Ã�ë÷ÃÄÃÆÃÆÃÊÃÌÃÌÃèÃôÃÄÄÄÄÄÄÄÄÄÄÄ"Ä(Ä-ÄIÄIÄIÄIÄIÄIÄIÄIÄIÄIÄIÄIÄKÄ\ÄnÄ}ČČÄ�Ä�ĘĴĸĽÄXž,NÑNÑ\ÑcÑkÑpÑvÑ¿˜?aŽ:Ž:¤:ª:±:á:Í:í:ò:ù:ù:;/;;;;k;W;w;|;ƒ;ƒ;ƒ;‰;Œ;�;˜;°;»;Î;Æ;æ;ð;ÀTQbá%á%ï%ý%&& &0&5&R&X&_&f&t&€&’&Î&ÁD%ÞßÞßòßàà)à/à5àZà`àfàlàlàtàÂô#œ¶µ¶µ¾µ͵ѵÞµëµÿµ¶.¶;¶M¶o¶�¶�¶¹¶˶ã¶ú¶·&·D·S·n·y·”·­·­·È·ñ· ¸&¸8¸G¸V¸V¸a¸t¸…¸˜¸¨¸µ¸À¸ϸï¸ï¸û¸û¸û¸ ¹¹ ¹?¹H¹U¹Y¹a¹l¹„¹œ¹¥¹µ¹½¹¹æ¹ö¹ºº%º*º2ºXºZºeº˜º²º²ºʺÙºáºðºùº»»2»:»B»M»O»_»w»�»§»¿»Ñ»è»ñ»ú» ¼¼¼"¼à  … …)…H…M…ÄX…WÈÈ(È/È<ÈGÈLÈRÈdÈjȂȈȦȺÈÅÈËÈíÈíÈýÈÉÉÉ#É+É3É;ÉIÉOÉUÉaÉaÉcÉuÉ{ɀɀɗɗɵɵÉÈÉÕÉÚÉÚÉñÉúÉ Ê Ê*Ê8ÊCÊSÊ`ÊrÊxʂʎʛÊ�Ê�ʥʪʪʲʷʷʿÊÄÊÄÊÌÊÑÊÑÊ×ÊÜÊÜÊãÊèÊèÊïÊôÊôÊÿÊËËËËË Ë$Ë$Ë/Ë/ËHËOËUËXËcËfËzˇ˖Ë�ˠ˲˴˺ËÎËÛËêËêËêËêËôË Ì!Ì1ÌBÌHÌYÌ_ÌdÌnÌÌ�̶̟̥ÌÁÌËÌÚÌéÌïÌúÌÍÍÍ,Í7Í=ÍMÍMÍ]ÍpÍ|͔̈́͛͡ͲͽÍÂÍßÍôÍÎÎÎ0Î;ÎJÎLÎ^ÎfÎkÎrÎv΄ΎΔΞΤίεηÎÄÎÑÎÛÎÏÏÏ ÏMÑÅ0#«Ø§Ø§÷§!¨)¨)¨7¨J¨c¨f¨‚¨‚¨‚¨Š¨Œ¨Œ¨”¨–¨–¨ž¨ ¨ ¨¨¨¨¨±¨·¨¼¨¼¨Å¨Ñ¨Õ¨Ú¨à¨å¨å¨í¨ö¨ü¨©©©©*©I©L©a©€©€©€©ˆ©Š©Š©Š©’©”©”©”©œ©ž©ž©ž©¦©¨©¨©³©³©¹©¾©¾©¾©¾©Å©Ð©â©ð©þ©ªªªªª ª#ª)ªAªOªbªnª—ªšª¡ª³ª»ªÄªÏªÏªÚªàªåªåªåªìªòª«««7«C«I«N«N«U«`«`«e«w«}«}«}«}«Ö«Æd%ˆBˆBªB´B·B·BÁBÔBÖBãBåBðBC CC!C'C/C2CDCÇ\CV 1 1 1 1#1(1;1>1C1C1M1S1S1a1c1m1È8(2FÒFÒOÒOÒ]ÒaÒhÒkÒpÒɨÒø–K–K®K¶KÁKÚKÎKLaLLLAL,LLgL|LlL—LœL¨LÏLÔLéLÖLõLûLûLM/MWM=MkM†M†M†M’MÊ ÄÆ(Æ(Û(æ()ù(í(-))9)N);){)f)Z)‡)•)�)¨)ª)µ)À)À)Å)ò)÷)$*)*C*0*b*O*n*y*Ž*{*­*š*¹*¾*¹*Ô*â*ê*õ*÷*+ + ++-+/+J+J+W+\+{+}+œ+œ+œ+¤+Ël¥¼ŽŽ¨Ð³Üü-E2Qd„–©©¶ÕÕßÌ4“œÌÌÌ Ì%Ì)Ì-ÌLÌTÌͼLwfwfw~w‰w“w¬wÄwÉwÎwÒwÔwÚwàwöwãwxx!x9x&xExOxhx€x…xŠxŽx�x–xœx²xŸx¾x¾xÑxÙxëxyþxyyÎ4;DÖÀÖÀßÀëÀ -ÁÁÁÁÁÏ”"¨¦¨¦¶¦È¦Ì¦Ô¦Ü¦ç¦ò¦ú¦§§§+§2§9§D§O§Q§\§g§i§u§€§‹§”§œ§œ§ §×§Ð€Û÷i5i5‡5‹5�5—5¥5¨5«5¾5Ä5Æ5Õ5Ù5Ý5å5í5ù56 6&6-6-6:6O6Ñ –)–)¥)¾)Ä)Òd9ÎŽŽÄËÓÜíú"0:?gly¥ª·×Üë $9emrr…˜¨¬ËÜáá(+.227_dmz‚�¯¼Çåååò    /11>UUfk‹�¯ÍÍÍÚñóóó&==NV[�“¥ÃÃÃÐçééö  "$+Mkpw…�‘‘‘­µ··ÙÓ  Þ)Þ)ç)ï)ô)Ô¤/T®È®ÈÎÈðÈðÈÉ É$É$É3ÉEÉ_ÉgÉnÉpɃɋɋɋÉ�É�É�É�ɫɫɫɫɽɿɿɿɿÉÒÉÝÉÊÕxµyy4y@yKyPy\ygylysyxyƒyˆyˆyˆyºy§yÆyÈyÍyØyÝyÝyÝyzüyzBzBzUzhz{zŽz“z“z¦z¹zÌzßzäzäz÷z -{{0{2{2{E{X{k{~{~{~{Œ{Ö0Š’¦Ë¦Ë´ËºË¾ËÝËþËþËÌ×<;FQ8Q8Z8e8s88‹8”8�8¦8¬8±8Ølv�±'±'¿'É'Ð'ç'ç'ì'î'ú'((/(1(A(A(F(H(O(�(ÙÜŸÒ–c–cªcÔcÉcµcïcücdddHdMdydyd~d”d¦d¼dÒdeeLe8egete e¥e­eÌeÔeùeîeÚe f"ffBf.fVfcf�f�f�f�f—fÚL½Ìææ<<Nang†�ÛÐf–¹1¹1Ù1Ý1ü12,222I2h2v2v2{22†2‘2œ2©2²2²2·2¼2Ã2Î2Û2Ý2ê2ì2î2î2î2ö2ö2ö2þ23333$3p3Ü ˜„˜„¦„º„À„Ý`G[±8±8Á8È8Ê8Ï8Þ8ä8ù8ù89999 9-979:9B9Þ<›¦¦…¦…¯…º…Å…Ð…Û…å…†††ß 2¾C¾CÖCèCîCúCDD D6DADQDcDiDoDuDˆDŽD—D�D¯DµDÀDÈDÖDãD Eà4P…P…^…h…q…x……‰…‰…�…áÄKx¶Ù¶ÙâÙåÙêÙ÷ÙüÙÚÚÚÚÚ.ÚGÚiÚrÚ}Ú„Ú�Ú¿ÚÄÚÝÚÿÚÛ Û$ÛFÛHÛaÛƒÛƒÛƒÛ˜Û²ÛÁÛÓÛâ „È.3.3L3Z3m3r3�3–3›3¡3¯3¶3Å3Ê3Ö3è3è344$4+4E4b4n4‰4¡4½4Æ4Õ4Ý4ê4ó4ø4 5575<5D5]5o55…5�5™5Ÿ5å5Ï5À5õ5066 6@6C6c6÷6ã( >*>*L*]*n*q*w*ä<&1HCHCiCoCxCŠC§C¯CÅCÑCå„y8CJRUUeppsz�‡�“š ±±³¼ÈÎôøû  %6<BM^^glv}„Œ’”¢¹¼Ë×ääääêü4EY`jryy‚‰•¥°°°ÄØèë¦æˆ:!7!7=7L7S7b7x7ž7´7Å7Î7Ü7î7 8 8838;8>8J8çX{Í..Ycv�“¡§¸¿ÇÝåø ')9IRX]djpv�Œ�–°¸Òçô÷ÿ$/7Ngkt{�•œ ©«½Ôâèìîûûûý,è  -À„À„Ʉ݄â„é  -Æ)Æ)Ï)×)Ü)ê,ýDftft‚tˆt“t¤t©t¯t²t¶t¶tÖtÛtuýtu6u"uBu[uGugunusu}u€u„u‰u¢uŽu®u®u®u³uÄuÉuÏuÒuÖuÖuöuûu1vv=vVvBvbvxvdv„v‹v�v–v™v�vŸv¸v¤vÄvÄvÄvÄvÜvwwëŒÎí¡¡ª¥¥´ÃÃÒÒááððÿÿ",;;JYh’ìxÈâf@f@„@–@œ@¨@¿@¿@Ñ@×@â@ò@þ@A AAA,A9AEASAbAbA’Aíd�²VÌVÌZÌmÌṁ̱̱̎̚̚ÌÈÌÈÌßÌßÌöÌöÌ ÍÍÍÍîØÆønÞnÞ�Þ—Þ¢Þ¸Þ¸ÞÊÞÕÞàÞñÞßßß"ß&ß(ß9ßKßWßißk߄ߓߗߗߗߪ߿߿ßËßÑßÛßæßôßûß -à à"à<à<àNàï`Ëßž|ž|´|Ö|ã|ç|ö|}} }2}O}Q}Q}‚}p}Q}¡}«}ðP2BØCØCîCúCDDD%D+D7D?DJDPDSD]Dñ(rx¸‡¸‡Æ‡Í‡Ý‡à‡æ‡ò ®-Þ¼Þ¼ø¼½½½½½4½E½V½h½z½‰½˜½©½¸½¸½¿½ý̽Ù½à½é½ð½ô½¾¾¾¾¾ ¾$¾'¾/¾=¾E¾R¾Z¾b¾s¾~¾ƒ¾ƒ¾�¾–¾¥¾¼¾¾¾ɾÖ¾å¾è¾î¾ê¾¿¿¿)¿+¿6¿<¿<¿D¿D¿V¿]¿s¿s¿s¿x¿x¿�¿›¿¦¿«¿«¿®¿³¿³¿Ï¿Ý¿ê¿ì¿ì¿ð¿ò¿ò¿ÀÀ(À*À*À-À/À/À<À>À>ÀAÀAÀAÀAÀAÀJÀPÀTÀ`À€À�À›À¢ÀjÁó(oua'a'j't'„'�'�'­'ôTzKæíæíî -î îî î8îHîQîWîZî^î`îxîˆî•î›îŸî¥î§îªî®î®îÑîÕîÛîÛîâîïï,ï?ïEïLïWïaïeïhïoïuïyïï�ï–ï›ï ï­ï¯ïÁïÃïÊï×ïÙïëïëïëïëïëïðð&ð=ð=ðRð^ð{ðŸð¹ð¾ðÕðÚðèðÿðñ -ññ0ñ6ñFñSñkñrñ~ñ–ñ¢ñ¢ñ¢ñ¨ñ«ñ®ñÇñÍñáñçñìñ÷ñ÷ñüñ òòòò*òAòGòJòMòTò]òdòdòiòvòƒòƒò‰ò—ò®ò´ò·òºòÁòÁòÒòÙòæòóòóòúòó óóó#ó7ó7óQóVó]óeóló{óóˆó ó¥ó¬óÎóÙóßóçóôôô/ô/ôIôWô^ôeô‡ôšô¾ôÀôÊôìôìôìôõõ"õ:õ>õöõ¼ù$–M–M®M²MÀMÏMÚMæMñMNóMN"N"NDNtNXNKN–N›NÃNÈNÔNßNÿNáN OO#O*OGOZOZO}O}O‰Oö8�™†Î†ÎŸÎ®ÎÂÎÏÎÕÎÛÎÞÎÿÎ÷8 9/9/G/N/Y/a/h/n/t/t/z/øôÓŒžfžf¼fÌf×fâfûf'g@glg–gœg¢gªg¬g´gÏgÒgÝgégh.hGhsh�h£h©h±h¶h¾hÙhÜhçhóhøhi=iVi‚i¬i²i¸iÀiÂiÊiåièióiÿijDj]j‰j³j¹j¿jÇjÌjÔjïjòjýj k kkkk"k*k5kGkVkqk…k¯kµkºkÌkÛkùk l7l=lElJl\lkl†lšlÄlÊlÏlálðl m mImOmTmTmTmempm{m¡m¹mÄmÌmÙmÙmÞmñmn n3nKnVn^nknknpnƒn�nšn®nÅnÞnðnýn(o=@=C=H=H=H=R=Z=a=i=r=}=ƒ=‘=›=›=¡=ª=Â=Ç=Ç=Ú=â=â=ä=ä=ä=é=é=ð=ö=ú=>>>>>>>9>B>B>F>TBú( XBXBfBoB}BƒBû�1Q¦[¦[Ä[Ì[Ø[î[\\\+\1\1\1\6\;\I\T\j\l\q\\Š\—\ž\¬\ü\‘¤~~˜¼ŸÈáÚùû-?RR_~~ˆý8hrîÌîÌÍÍ*Í9Í?ÍEÍHÍiÍþ0�—°ˆ°ˆÄˆÐˆÞˆáˆùˆüˆ‰ÿ0S[ÓÓ"Ó*Ó7ÓAÓTÓP>N8†8†D†X†[†o†w†{†…†�†—†š† †Tš«ÏÏ Ï3Ï6Ï@ÏMÏbÏdÏvπϔϔϚÏ�ÏñÏ<˜£‰‰‰#‰/‰;‰K‰P‰S‰W‰_‰ ,0vàvà„à�àHš¨FIFIZIfIqI‡IsI“I•IœI§I³I»I DƒF1F1j1q1v1~1˜1¡1£1°1°1²1Ì1Ò1Ô1Ö1ã1ã1ã1ã1ç1ö1ÿ1222 2%2'2C2G2Y2l2r2†2‹2˜2˜2¬2³2º2Ã2Ñ2Ú2ú233 33333.3D¶M¶MÄMÎMØMèMíMóMÿMNNNNENlåü¦Þ¦ÞºÞÐÞÝÞèÞìÞóÞ÷Þßßßß%ß'ß0ß6ß6ß6ß6ß>ß !%~*~*ˆ*�*•* ´GphDhDŽDŸD¤D«DµDµD½DÐDÔDÙDîDðDóD÷DþDEEE*E1E5E=E?EGEUE]E_EbEwEE‡E•E™E§E - 8FNFNVNbNnN~N–NœNªN»NÃNÊNàNO O-O:OJOPOROcO…OŒO’O O¨O¾OÉOÏOÕOøO PÌèaèabb bb&b(b3bBbBbOb]b`bcbcbhbmbvb�b‡b�b£b¨b½bÈbÒbÒbûbcc4cHc]ccchcoc„c‹c�c¤cØcÝcäcêcñcöcöcücdddd6d@dFdKd_didpdpdpdudxdd…dŒd‘d‘d—d�d¢d¢d¹dÍdÓdádödüd eee,e3e5eIeOeVeVeVeVeVeVe\eaeeegejeue�e„e†eŠeŠe�e�e�e¯e ˜zœ¦¦ÂÇÎØÞéù #)4DL\cks{ƒˆ“¡¡· Ð1 � �4�4�Z�Z�w�{�€�€�€�Œ�‘�¡�¦�¦�¦�«�«�Á�È�×�å�î�þ�� � � � ����%�,�3�:�A�A�C�C�I�N�P‘ \ No newline at end of file +! += +O +U +` +l +| +Œ +ž +¤ +¤ +© +« +« +° +° +¿ +Å +Ë +Ë +Ï +H 2�ÄäÖÖ*Ö6Ö:Ö>ÖEÖLÖ[ÖfÖlÖqÖsÖÖ†ÖŽÖ”ÖšÖžÖžÖ­Ö´Ö¼ÖÂÖÈÖÊÖÊÖÖÖ38 é.é.÷.ý. //%///6/fnw„•«»ÍÒì @`lrŠ¢¢¢®´¿ÊÜì1HH\xxx™©··ÀËÙô +"9HA^oŠŠ£6D}Šnn~’›¡³³·ºÂ7\Ob††8†G†P†Y†]†a†m†r†w†w†ˆ†Œ†“†«†®†º†80ýîÞîÞ÷ÞüÞß ßßß9Do|&:CI[[_bj:°ÄìÆŒÆŒÜŒãŒôŒùŒ�ûŒ� � �,�D�1�P�S�U�c�h�}�j�‰�Œ�Œ�˜�­�š�¹�¿�¿�Ò�å�ø� ŽŽ(Ž;<‹–ÆÆÖçðöú<\!´HHHHSHˆHyH`HŽH½HÂHÂHÆHÐHÜH÷HþH III0ILI^IkIƒI—IœI£IÈIÏIØIÚIßIóIJ"J/JGJdJ]JyJ}J}JˆJ�J¡J¤J¦J¼J«JÈJàJâJúJ KKK'KK3K3K3KEKEKSK]K…K~KšKšKŸK£K¿KËKæKLLL"LAL6LMLOLaLuL†LL•L™L¯LÎLÃLÚLÜLîLøL MM M6M@MBMVM`M`MvMzMzMzM…MŒM M¸MºMÒMæMýMNNN=NSNSNSNxNxNŠN=”)öèöèþèéé é!é1é<éNéYédésé„é‹é¤é¨éµéµé¿éÆéÙéâéðéê ê%êBê>d(=H…H…T…h…k……‡…‹…•…Ÿ…§…ª…°…?$pµEE$E'E+E8EAELEXE`EjE’E’EžE E E¬E±E±E½EÂEÂEÎEÓEÓEßEäEäEðEõEõEFFFFFFFFF3FAFUFeFeFgFgFsFyF~F~F„F�F�F›F§F´FÉFÑF×F×FèFèFñFôF[G@è wN¢N¢k¢s¢v¢„¢’¢§¢°¢È¢Þ¢ð¢û¢ ££"£%£0£9£E£X£‰£~£d£™£­£¾£Ê£Ø£ö£¤,¤=¤?¤`¤F¤{¤{¤~¤ƒ¤†¤†¤�¤¤¤«¤¸¤½¤̤Ù¤ì¤ì¤¥¥1¥1¥I¥N¥N¥^¥f¥v¥€¥�¥š¥ª¥¶¥»¥»¥Ë¥Ó¥ã¥í¥ý¥¦¦#¦(¦(¦(¦J¦X¦b¦g¦t¦‰¦‰¦ަ˜¦§¦¬¦²¦·¦·¦¼¦ƦÕ¦Ú¦à¦å¦å¦ë¦ñ¦ö¦ö¦§§$§1§=§P§X§^§g§~§’§£§°§µ§ͧà§÷§¨ ¨ ¨'¨-¨6¨?¨?¨D¨D¨D¨D¨D¨P¨P¨P¨Y¨r¨‡¨�¨ª¨»¨ȨʨÞ¨ã¨ã¨ã¨î¨ü¨©©©©©3©?©Q©]©c©r©v©©ˆ©¥©±©·©½©Щة੠ªª+ª-ª;ª;ª@ª@ªGªUªZªmªyª…ª‹ª�ª˜ª�ª�ª�ª�ª�ªµªºªºªºªºªºª˪˪˪˪˪˪˪˪˪˪Ôªíª« +«%«6«C«E«Y«e«j«j«j«s«�«™«ž«À«Ì«Ì«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«æ«ë«ë«ë«ü«¬ ¬ ¬¬)¬A¬S¬t¬”¬Ÿ¬°¬µ¬µ¬µ¬¾¬à¬é¬ú¬þ¬­&­.­6­A­k­t­x­�­ ­ ­ ­ ­ ­­û­®®®®®%®*®*®*®*®9®M®k®v®{®�®†®†®™®­®Ó®Þ®æ®ì®ì®ñ®ñ®¯¯2¯=¯B¯H¯M¯M¯`¯t¯š¯¥¯­¯³¯³¯¸¯¸¯¸¯Á¯Ú¯ï¯÷¯°#°0°2°A°C°C°C°C°C°W°W°W°W°W°W°W°W°W°W°W°W°W°W°W°W°f°u°€°‚°‚°‹°�°�°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°£°£°º°°ΰΰÒ°×°ç°±±&±2±H±b±e±o±{±¡±Á±á±²²²H² ²c²c²f²v²~²™²ª²­²DzÕ²á²ù²ù²$³'³6³J³k³|³˜³„³´³Ƴä³´´ +´ÿ³ð³%´%´%´(´-´0´J´X´†´¨´¨´Ó´Ö´å´ù´µ+µGµ3µcµcµ�µ´µ²µ§µœµ�µµµµŵʵʵѵáµ¶¶c¹A°«Ó6¿6¿L¿P¿[¿b¿m¿�¿�¿Œ¿�¿¤¿±¿½¿Ê¿Ò¿ã¿ã¿ì¿ñ¿ù¿ ÀÀ&À1ÀDÀDÀWÀWÀmÀ™À™À­À¯À¯À¹ÀÁÀÁÀËÀÓÀÓÀÓÀäÀäÀäÀèÀðÀöÀûÀûÀÿÀÁ ÁÁÁÁ"Á7ÁGÁQÁdÁiÁqÁqÁvÁvÁ}Á‰ÁžÁ®Á¸ÁÀÁÆÁÙÁÞÁæÁìÁìÁñÁøÁÂ+Â6ÂEÂOÂWÂ]ÂoÂuÂzÂzÂzÂzÂzÂzÂzÂzÂz…‘ž®´¼ÂÏÂÔÂÜÂáÂéÂîÂîÂîÂöÂþÂÃÃÃÃ!Ã(Ã3Ã[ÃfÃnÃ}ÇÙÞäééðÃÂÃÊÃÝÃåÃíÃÄÄÄÄ,Ä,Ä4ÄHÄPÄWÄ]ÄaÄeÄtÄyąěħįÄÄÄÐÄÕÄáÄìÄñÄñÄñÄÅ,Å1Å9ÅHÅPÅXÅmÅrÅ}ŅŚşşūÅÁÅÍÅÕÅêÅöÅûÅÆÆÆÆÆÆÆÆ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ-ÆMÆjÆzƀƈƛƠƨưƲƺÆÍÆÓÆÛÆãÆåÆÇ ÇÇÇ&Ç+Ç0Ç7ÇBÇjÇuÇ}njǖǯǴǼÇÁÇÁÇÁÇÊÇÓÇÖÇàÇîÇÈÈÈ&È&È&È1È6ÈSÈXÈXÈaÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈqÈ}ȉȩȼÈÄÈäÈéÈñÈøÈÉ ÉÉÉ%É*É*É2É:ÉVÉ^ÉaÉcÉsÉ}É}É}ÉɒɣɦɩɱɶɶɿÉÄÉÌÉÓÉàÉùÉÊÊÊ'ÊBÊ[ÊcÊpʉÊ�Ê�ʕʕʕʕʕʕʕÊ�ʨʳÊÂÊÇÊÇÊÏÊ×ÊäÊéÊéÊéÊíÊòÊòÊËËËËËË Ë0ËAË]ËpËvË~˓˚ˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˤˤ˿ËÉË×Ë×ËÜËçËîË +ÌÌÌÌÌ&ÌDÌRÌJÎBü|NÎNÎdÎoÎvÎ�ΌΣήεÎÅÎØÎâÎâÎþÎÏ Ï(Ï/Ï2Ï>ÏGÏNÏQÏVÏlÏvψώϚϯ϶ϾÏÊÏßÏæÏæÏæÏôÏÐ ÐÐÐ'Ð*Ð<ÐAÐFÐVÐYÐ^ÐnÐqÐuÐ~ІИРРРжÐÀÐÒÐØÐäÐùÐÑÑÑ Ñ/Ñ@Ñ@ÑGÑGÑGÑUÑcÑmÑpÑ~шыÑ�ѢѧѷѺѿÑÏÑÒÑÖÑßÑçÑùÑÒÒ ÒÒ"Ò"Ò%Ò0ÒNÒ\Ò¥ÒChoÅ×× ×3×:×A×L×_×b×k×r×uׅדמש׬×Â×Î×ã×î×ù×ØØØ1Ø=ØTØ\ØeØmØzؘؕ؞أضؼØÄØרÝØåØåØóØÙÙ%Ù+Ù3ÙFÙLÙTÙTÙ}ق١٤٤٫ٸټÙÇÙáÙíÙýÙÚ9ÚMÚUÚ_Ú~Ú’Ú’ÚÛD F*F*P*X*]*EÉÇvRvR“RžR±RžRËRÙRÙRéRòRùRýRSSSS0S6>6g6i6w6}6›6ª6¹6È6Ö6á6ä6ô6Mì8//8/;/>/D/I/`/w/Ž/ /Æ/í/ð/ 0 020?0R0e0j0r0|0„0„0‹0”0”0Ÿ0Ç0á0ç011151;1T1m1u1€1€1Š1Š1œ1Ú1ï12N$tyVcVc�cjc‹c“cOLu„þÆþÆÇ%Ç6ÇGÇNÇVÇfÇnÇÇ…Ç·ÇPTHY a a²a´a½aÆaÔaÙaâaåaêaøabbbQ¨!Gø_ø_``$`1`=`I`U`a`x`x`‡`’`›`¢`«`Â`Õ`Ú`ì`û`aaa"aBaBaDaWaYasaa‚a™aRxîˆ@l@lYldltl½lÄlØlßlçlïlølmm +mmm!m(mGm_mhmhm�mÇmÐmòm n)nSn_n�nƒnŠn‘n‘n´nÍnôn o4oMoto�o´oÍoôo p4p4pCpPpUpUpdpqpvpvp}pˆpšp³pÌpåpçpçpçpîpîpûpqqqq q2qGq�qˆqˆqˆq�q­q»qÙqâqëqøqr r?>?V?]?o?¢?­?¹?Ç?»?è?è?ô?ü? @E@G@t@|@|@©@Á@®@Ü@Í@è@î@ý@AA A'A'ABAGAPA[AcAnA–A�AuAµA¢AÁAÖAÃABîAâAB)BBDBIBcBPB‚BoBŽB£B�BÂB¯BÎBÎBéBøBñB C C C8C8CDCX$nsccAc*cKcScYl  GG,GFG3GeGRGqG†GsG¥G’G±G¿GÇGÒGÔGßGêGêG HHZ,NÑNÑWÑ]ÑeÑtушÑ[TÒn n � ¡ ¬ µ × á ï  ¡¡¡ ¡ ¡'¡:¡8¡H¡H¡S¡]¡c¡i¡l¡z¡�¡™¡ ¡£¡µ¡º¡Å¡Сê¡¢¢6¢X¢]¢c¢i¢t¢�¢Ÿ¢‡¢¨¢¬¢²¢º¢¿¢ߢÇ¢è¢ì¢ò¢ú¢ÿ¢ÿ¢ ££-££9£=£C£K£P£P£q£u£{£ƒ£’£­£™£¹£½£ãË£УУñ£õ£û£¤¤¤¤3¤¤<¤@¤F¤N¤n¤V¤w¤{¤�¤‰¤‰¤–¤´¤œ¤½¤Á¤ǤϤï¤פø¤ü¤¥ +¥ +¥ +¥ ¥ ¥ ¥ ¥+¥5¥>¥^¥j¥x¥}¥‹¥Ÿ¥¤¥¤¥¯¥·¥¿¥È¥Ô¥è¥õ¥¦¦-¦2¦2¦=¦E¦R¦]¦j¦u¦�¦¡¦³¦¾¦ææΦä¦ñ¦ù¦§§§&§:§:§B§:§Z§_§_§n§s§s§‚§‡§‡§˜§�§�§®§³§³§ƧÕ§Ú§Ú§í§ü§¨¨¨#¨(¨6¨(¨J¨O¨]¨O¨q¨v¨„¨v¨˜¨�¨�¨º¨¿¨á¨æ¨ô¨æ¨© © ©*©/©Q©V©d©V©x©}©}©š©Ÿ©Á©Æ©Ô©Æ©è©í©í© +ªª1ª6ªDª6ªXª]ª]ªxª}ª}ª˜ª�ª�ª¸ª½ª½ªتݪݪøªýªýª«««8«=«=«X«]«]«n«s«s«„«‰«‰«•« «µ«º«º«Æ«ß«ä«¬¬¬¬.¬8¬M¬X¬]¬n¬y¬�¬†¬†¬Ьެ•¬Ÿ¬©¬©¬¼¬Á¬Á¬Á¬ŬÛ¬ä¬ä¬­ ­ ­­(­1­K­X­c­n­y­‹­—­ ­¥­¥­¥­¶­Ó­Þ­è­ó­ø­® ®®®®#®,®7®G®_®w®‹®�®�®›®®®¸®îä®ð®þ®¯¯¯¯¯*¯5¯=¯B¯M¯Z¯e¯¯‘¯£¯®¯³¯¾¯Ư˯Ö¯ã¯î¯°°,°,°,°,°1°6°6°B°S°S°y°{°—°—°¡°µ°¿°Á°ͰÕ°ò°± ±±;±L±]±n±y±‘±¡±¦±¦±±±¶±¶±¾±ɱααÖ±á±æ±æ±î± ²ö±$²)²)²1²O²9²g²l²€²l²˜²�²�²ª²¯²¯²·²¼²¼²ȲÙ²ë²ð²ð²³ð²³!³!³)³.³.³A³F³F³Y³^³^³x³ˆ³�³�³§³·³¼³¼³Ö³æ³ë³ë³´´´1´´I´N´N´Y´^´š´ˆ´v´^´²´·´ó´á´Ï´·´ µµµ µ/µ4µ4µCµSµXµXµgµuµzµ¢µ�µzµºµ¿µçµÕµ¿µÿµ¶,¶¶¶D¶I¶I¶f¶P¶�¶ ¶¥¶¥¶À¶¬¶ê¶ú¶ÿ¶ÿ¶ ····!·!·4·D·I·I·\·l·q·q·„·”·™·™·¬·¼·Á·Á·É·ηηÖ·Û·Û·ã·è·è·ð·õ·õ·¸ ¸ ¸ ¸%¸s¸a¸O¸=¸%¸€¸…¸Ó¸Á¸¯¸�¸…¸à¸å¸å¸ô¸¹¹¹%¹@¹E¹E¹V¹d¹i¹i¹q¹v¹v¹~¹ƒ¹ƒ¹‹¹�¹�¹ȹ¶¹¤¹—¹ç¹ººº?º-ººº^ºyº~º°ºžº–º~ºȺͺÿºíºåºͺ»»6» »»N»S»p»Z»S»ˆ»�»�»™»²»»Ó»Ó»ù»û»¼¼¼3¼@¼q¼³¼¢¼�¼¿¼ǼǼǼÓ¼ؼؼë¼ö¼½½½½ ½ ½9½>½>½F½K½_½K½k½v½{½�½{½›½¦½«½«½¶½ĽɽɽԽ߽ä½ä½õ½ú½ú½ ¾¾¾*¾5¾:¾B¾:¾N¾S¾g¾S¾s¾x¾€¾x¾Œ¾‘¾¥¾‘¾±¾¶¾¶¾ʾ¶¾Ö¾Ö¾Ö¾Û¾ç¾Û¾ú¾ÿ¾ÿ¾ ¿ÿ¾¿#¿#¿/¿#¿B¿G¿G¿S¿G¿f¿k¿¿k¿‹¿—¿¢¿­¿²¿Æ¿²¿Ò¿Þ¿é¿ô¿ù¿ Àù¿!ÀÀ*À/À/À7À<À<ÀEÀJÀJÀSÀXÀXÀaÀfÀfÀqÀvÀvÀ�À†À†À‘À–À–À¡À¦À¦À±À¶À¶ÀÁÀÆÀÆÀÑÀÖÀêÀÖÀöÀÁ ÁÁÁÁ&Á+Á+Á5Á:Á:ÁDÁIÁIÁSÁXÁXÁ`ÁeÁeÁrÁwÁwÁ„Á‰Á‰Á‰Á‰Á‰Á‘Á–Á–ÁžÁ£Á£Á«Á°Á°Á¸Á½Á½ÁÅÁÊÁÞÁÊÁêÁûÁÂÂÂÂ=ÂBÂXÂcÂ|Âhˆ“ž££µÂÀÂàÂåÂûÂà à Ã+Ã6ÃAÃFÃFÃXÃcÃÈÞéÃÂîÃÎÃÙÃäÃéÃéÃÄûÃÄ;Ä@ÄVÄaÄfÄ�ÄmÄ¡Ä�Ä­ÄÃįÄãÄÏÄïÄúÄÿÄÿÄ%ÅÅ1ÅQÅVÅlÅwÅ|ŗŃŷţÅÃÅÙÅÅÅùÅåÅÆÆÆÆ;Æ'ÆGÆgÆlÆ‚Æ�Æ’Æ­Æ™ÆÍƹÆÙÆïÆÛÆÇûÆÇ&Ç+Ç+Ç:Ç?Ç?ÇNÇSÇSÇSÇYÇ^Ç^Ç^ÇhÇjÇjÇtÇ�Ç¡Ç£Ç£Ç­Ç­Ç­Ç­Ç­Ç¯Ç¯ÇÆÇÍÇØÇØÇåÇëÇòÇýÇÈÈÈ)È#ÈLÈDÈdÈrÈlÈ•È�ȭȭȭȶȾÈÑÈ×ÈåÈøÈøÈÉÉ.ÉHÉHÉHÉiÉyÉŽÉ É°É°ÉØÉßÉîÉÊÊÊ ÊÊ Ê?Ê?ÊCÊZÊaÊfÊfÊjÊuÊ�Ê�ʼÊÅÊÖÊäÊË#Ë(Ë>ËRË^ËlËqËË›ËÆËìËïËÿËÌÌÌ$Ì/Ì/Ì2Ì@Ìk̷̋̋̋̎Î\, ŽÑŽÑœÑ¢Ñ¦ÑµÑÄÑÊÑ]8cm¦b¦bÇb´bÓbÞbébôbÿb cc^\�”¨›¨›¶›¸›Ã›Ë›Ö›á›ì›î›œœœ"œ+œ.œ]œ_ܳfŽèŽèÀèÉè×èùèùè +éé5é=éjéoé˜éµéÑé×éÛéþé$ê)êRêlê’ê©ê¯ê³êÌêÔêÙêêêòêëëë4ë<ë[ë`ëqëyë˜ë�ë¥ë«ë¯ë³ëÅëÍëÙëïëôëì ìì!ì3ì<ìPì[ì€ì°ìÕìÚìÚìÚìêìñìÿì í.í.íEíJíJíaícícíwíyíyí�í’í’í©í«í«íÂíÂíÓíØíØíèí î î$î$î$î$î<î_îrî�î�î�î�î´î¶î¶î¶îÃîÚîÜîÜîéîïïïï3ïQïQïQïUïWïWïWï\ï^ï^ïcïcïmïrïrï�ï�ï�ï˜ïšïšïšï¢ï¤ï¤ï¬ï¬ï®ïµïÓïÕïèïþïþïþïþïþïð)ð1ð1ðtð`` +¶S¶SÈSÔSòSTT2TETPTeTRTqTyT„T—T�T¯TµTaôW†<†<¤<§<¹<À<Ç<Ì<Î<Õ<Ü<à<ò<$=>=+=V=[=|=|=ˆ=�=Ÿ=Ù=Þ= >>>!>,>4>;>Z>`>>�> >«>Â>á>ç>î>î>ô>÷>û> ?,?>?b$6Û6ÛEÛ]Û]ÛcÛcxb|ÖåÖåöåææ"æ'æ'æFæSæUæUæUæUæbæjæ}æ‘æ“æ“æ›æ®æ®æÀædHÏŽ8Ž8¶8Ã8Æ8Ï8Õ8ì899,9Z9v9�9•9š9¥9¼9Î9Û9î9:::(:H:M:P:j:„:Œ:”:™:³:Í:Õ:Ý:â:ü:; ;);.;1;K;e;m;u;w;‘;«;³;»;½;×;ß;ß;ä;é;ô;ô;ÿ;ÿ; < <<]<s<s<ƒ<ed¤¹àˆàˆðˆ÷ˆ‰ ‰‰ ‰2‰>‰U‰b‰b‰e‰s‰ƒ‰š‰ž‰¦‰fºûÁ*Á*×*Ü*ð* +++8+B+R+R+i+p+‡+Ž+—+®+®+Ä+Ä+Ú+Ú+ð+ð+,,,,2,2,H,H,^,^,u,u,Œ,Œ,£,£,º,º,Ñ,Ñ,è,è,ÿ,ÿ,--/-7-B-S-^-o-r-t-‹-’-ž.g¬÷––°¶½ÅÍÐÛíí  ''*2HKY\_fjr€’¢¥ôh(EKf‘f‘�‘z‘™‘¨‘°‘iCVJVJyJŽJ“J›J£J«J¸J¾JÇJÍJÒJÚJöJüJþJK K KKK+K1K3K5KBKBKBKGKPKXKaKiKkKsK{KƒK�K–K¡K¨K¸KÃKÏKíKôKÿKLLL"L"L6LFLNLQL·Lj8-7á/á/õ/ù/þ/ 0000#0k¤õš™™$™H™N™U™U™\™|™�™—™³™Ÿ™¿™Ò™ä™í™õ™ÿ™š/š8š@šJšcšOšoš�š‹š“š˜š³šŸšÓš¿šßšõšáš››!›3›=›E›E›N›V›l›…›—›¦›ª›ª›±›¶›Ô›Ö›Û›æ›ü›ü›ü›œ œ-œ;œEœRœsœ�œ‹œ�œ�œ§œºœÈœËœëœïœ��5�9�X�\�\�\�b�p�z�“�™�¤�°�²�º�À�Ù�ä�ò�ü�žž ž,ž.ž6ž9žRžTž`žbžjžpž‰ž¡ž­žžÇžÙžèžŸŸŸŸ(Ÿ@ŸLŸaŸfŸxŸ‡Ÿ Ÿ±Ÿ±Ÿ·ŸŸÊŸØŸߟñŸlfäžÚžÚ¸ÚÁÚáÚáÚçÚïÚ÷ÚÿÚÛ ÛÛÛ(Û-Û-Û3Û8Û8Û>ÛCÛCÛIÛNÛNÛfÛyÛÛ„Û„Û�Û­Û­Û­Û´Û¶Û¶Û½Û¿Û¿ÛÅÛÅÛÌÛÎÛÎÛÔÛÔÛÛÛÝÛÝÛãÛãÛêÛêÛòÛøÛþÛÜÜÜÜÜÜ"Ü*Ü2Ü:ÜBÜHÜ`ÜoÜyÜ|Ü|܆܌ܒܒܖܞܥܭܹܵܿÜÇÜÎÜÖÜÞÜâÜèÜóÜùÜÝÝÝ Ý$Ý+Ý3Ý;Ý?ÝEÝMÝTÝ\ÝdÝhÝnÝyÝ~ݔݥݪݭÝSÞmÖ6P6PhP|P„P�P–P�P¦P¨P«PÉPÐPëPíPôPQQ Q!Q$QBQBQBQPQZQgQ‡Q‰Q£Q«Q«QÇQåQêQñQR R'R)R0RKR_RzR}R…R’R²R´RÎRÖRÖRòR S S3SESn`Ñ!Ñ!Ú!á!õ! "","1"O"Q"o"q"ˆ"œ"¥"§"»"Ë"ü"o|2Íè�è�þ�‘ ‘1‘B‘S‘f‘n‘|‘𑥑«‘¸‘͑͑à‘ñ‘÷‘ ’'’'’<’A’I’Q’W’o’‚’�’‘’›’°’¶’¸’Œǒْْà’è’ú’ú’ ““*“.“8“<“H“L“X“\“h“l“l““’“˜“œ“¦“ª“¹“½“̓Гã“ç“ç“ç“ç“ì“þ“ ””*”E”U”e”j”j”j”v”~”†”Œ”¡”©”·”Á”ϔՔהההההההההã”ë”ó”ù”•••"•0•6•6•6•H•N•Z•`•m•ˆ•˜•¤•ª•·•ɕוö•U—pÔ¼í`j`jrjƒjŽj™j¯jÁjÙjÞjçjîjûjkkkkk!k#k)kCk]ksk‹k�k™k k­kÁkÜkãkåkèkíkl.l:lq$hm�&�&�&£&ª&Ä&r¤b‡nWnW‚W‰W¯W›W»WÀWÇWÇWçWýWéW X/XX;X@XGXGXOXVXaXlXtX|X‡X’X¥X�X½XÅXs9vvkvk’k™k±kÉkÓkÞkÞkãkîkúkll#l3l:l@lUljljl~l†l–l£l²l¿lÐlálïlýlm +m m4m4mHmUmfmvm|m�m�m“m¡m²m¿mÏm1nt8¬¶JJ +JJJ%J3JGWiou{‘€¥²µ½ÏÕÚý17GMYglz“¡ªº¼ÃÈÐïý #BISbhntz�±ÅÑèó+;I`lqž°ÇÐÖáæì""0?AO^ppx›¦ÚxT�Þ6ß6ßNßVßc߃ߕߜߦ߲߬߶ߺßÜßÜßãßæßëßúßþß+à/à4à4à;à>àCàOà]àaàrà�à…à‡à–àšà¼àÀàÅàÅàÙàÜàèàòàùà á*á.á3áiá€á‹á�á á«á¯á±á¼áÀáÀáÚáÞáàáàáëáïá â â â ââ4âyˆßý6â6âJâ`â`â`âbâbâiâkâkârâtâtâ�âƒâƒâ�â—â™â™â¦â­â¯â¯âÇâÌâÌâÜâz°‰±dd&d.d9d“d~dsd^dGd™d«d›dÆdÆdßdÓd eee(e=e*eIeOeVeweie]e‹e�e¦e¦e³eÚeÚeÚeæe{ †*^³^³{³‚³Š³•³¬³¶³¶³Í³×³ò³´´´:´N´b´i´m´†´�´¡´®´®´µ´¼´Á´Æ´Ë´Ò´Ù´ó´ú´ +µµµµ.µ2µ2µCµVµiµiµoµzµ�µ‰µ”µ›µ£µ®µµµµµÀµÞµâµúµëµ¶¶¶"¶1¶9¶G¶N¶R¶T¶f¶f¶f¶x¶€¶¦¶´¶´¶¸¶Í¶Õ¶å¶ð¶· +··'·/·=·H·L·Q·Y·]·l·n·}··Ž·�·Ÿ·¦·ª·¾·Æ·Ô·Û·ß·ï·ú·ÿ·¸%¸3¸:¸>¸F¸T¸[¸_¸g¸{¸ƒ¸Ž¸’¸’¸’¸�¸¨¸¸¸Ä¸Ú¸â¸í¸ü¸¹¹¹¹'¹3¹7¹B¹G¹Y¹a¹l¹l¹l¹l¹z¹‰¹¦¹²¹º¹Ê¹Ú¹ø¹ü¹+º ºº;º;ºEºLº[ºjºrº€º‡º‹º�ºœº¤º²º¹º½º½º¿ºÑºÑºãºãºãºéºõº»»'»S»a»e»ƒ»Š»‘»œ»²»´»»»Î»Ö»ä»ë»ï»ñ»¼ ¼¼!¼%¼%¼%¼%¼3¼>¼M¼U¼c¼n¼r¼r¼w¼¼ƒ¼’¼”¼£¼¥¼´¼¶¼Å¼Ì¼Ð¼ä¼ì¼ú¼½½½ ½%½C½K½Y½`½d½l½z½�½…½�½¡½©½´½¸½¸½¸½Ã½Ê½Ø½ò½¾ ¾"¾'¾2¾B¾N¾d¾l¾w¾†¾Ž¾™¾ž¾¦¾±¾½¾Á¾Ì¾Ñ¾ã¾ë¾ö¾ö¾ö¾ö¾ +¿¿/¿<¿@¿T¿e¿z¿‡¿‹¿™¿®¿¾¿Õ¿î¿À ÀÀÀÀ%ÀBÀSÀjÀƒÀ‘ÀœÀ¨À°À²À½ÀÅÀÅÀÅÀßÀíÀûÀÁ'Á6ÁCÁaÁhÁhÁxÁŒÁ¦Á¦ÁªÁÀÁÏÁêÁõÁ ÂÂÂ6Â6ÂIÂdÂm‚œ«¸ÂÖÂäÂúÂÃ#Ã;Ã;ÃSÃSÃ_ÃwÃ�ØØØäõÃÍÃÖÃÖÃÝÃæÃìÃøÃ^Ä|ÌL»ÆõÆõäõïõúõ ö ö"ö/ö:ö@öQö`öoö|ö|ö‚ö‡öŒöŸö²ö½öÁöÓöàöèöóöïö +÷÷÷÷#÷>÷)÷O÷F÷Y÷[÷w÷c÷÷�÷�÷�÷«÷«÷²÷¸÷Á÷È÷Ë÷í÷øô÷ øøøøø+ø0ø0ø8ø8øCøXøaøaøaøaø}ø”øšøŸøŸø´øºø¿ø¿øËøèøù ùùùù;ùJùYùaùfùlùqùqùxùù¢ù¿ùÁùÞùóùóùùùùùúúú*ú<úGúLúYúdúlútú„ú›ú›ú«ú«ú½úÃúëúôúôúöúýúûûûû û)û)û<ûIû[ûfûtû}û‚û©û²û½ûÂûÉûÑûäûùûþûüüü+ü@üGüMüVüVü_üyü€ü…ü“ü£ü±ü±ü·ü¾üÇüÇüÚüìüïüïüýýýý9ý@ýMýOýVýjýyýyýyý ý ý ý­ý­ýÂýÍýßýìý÷ýþþ þ&þ&þ@þSþUþdþyþ{þ‰þžþžþ¤þ­þ­þºþÀþÒþÒþßþâþíþÿþÿÿÿÿ%ÿ0ÿ5ÿJÿLÿfÿ{ÿ{ÿ{ÿ}ÿ„ÿŠÿ›ÿ©ÿ»ÿ»ÿÁÿÈÿÑÿÖÿ÷ÿ..;>DMU`rxƒƒ�“™¢ªµÇÍØØåèî÷ù.CITflttttú}@I•6 +6 +N +` +k +“ +~ +r +Ÿ +½ +ê +Õ +É +ö +  / D 1 q \ P } — — — © à à ð  ý 6 ; N B p a | š ² ¦ Ø Å ó ä ÿ  2  J > l ] x ’ ’ ’ ¤ ¾ ¾ Ù æ  ~”�¾33%3)32353>3G3Y3Y3‚3†3‹3Ž3—3§3®3±3¹3¼3É3Ñ3Ù3á3è3ø3ø34Œ >¶T¶TÊTÑTUíT UUUU9UOU;U[U‹UwU—UœU£U£U«U²U½UÅUÐUãUÛUûUV€À-(d(dFdVd`d`djdjdtd†d“d–d˜d¡d®d®d¼dÐdÐdôdeeeeeAeNeNede‡e�eÀeÉeÖeÖeùeff6fifofofof�f�¸ºä¨‰¨‰À‰Â‰Î‰Ò‰ß‰â‰ü‰ü‰ü‰ŠŠŠŠ-Š9Š;Š;ŠDŠFŠFŠOŠQŠQŠZŠ\Š\ŠeŠeŠnŠtŠwŠ�Š’Š˜Š¤Š¤Š ‹‚œWzÎ(Î(ì(ý( )')@)8)X)x)d)„)•)š)»)§)Ó)û)***3*S*?*_*p*†*r*ž*«*«*Ã*Ã*Í*ƒœX{Þ,Þ,ê,ú,-/-_-l-}-�-–-�-±-¸-Æ-Þ-í-ú-ý-...5.A.M.Q.X.Ž.„x¬ˆ«ˆ«ž«¥«¬«Ë«Ú«é«ø«¬¬ ¬ ¬%¬,¬?¬N¬S¬n¬ˆ¬ˆ¬ž¬°¬´¬Â¬É¬Î¬Î¬Õ¬ç¬ð¬ò¬­­­­$­/­A­L­Y­^­n­s­ƒ­�­”­¡­¦­¶­»­Ë­Í­Ý­ß­ï­ñ­® ® ® ®®$®4®4®O®a®s®…®•®•®•®˜®«®…\åø‹‹+‹2‹7‹E‹Z‹a‹k‹y‹|‹~‹ˆ‹š‹š‹¡‹×‹†0ÎÖÞÞö8,þLT‡L4CV+V+d+v+|+„+–+œ+¥+·+½+À+ü+ˆ(–œá2á2ï2þ233 3‰\DWþ+þ+ ,,$,,,>,D,M,_,e,n,€,†,‰,×,Š, &Ñ&Ñ4Ñ;ÑCÑHÑNÑ‹¬!H¦¦ÄÖÝäóø   ; @ G V X w w – « ˜ · Æ È ç ç ç ç ö  + +' +1 +Œ(?ž`ž`»`Ã`Ê`Þ`ð`ö`aa'a2a6aAaMaXada{a’a¥a¼aÑaáaáaóaùa +bb b b8b8b]b]bbbbbhbtb�b�b¢b¹bÈbÓbåbñbc cAcAcJcOcOcOcOc_chcpcucƒc‘c¡c¦c¦c¾c¾cÃcÃcÍcØcêcðcüc dd!d%d.dGdJdZdgdwd‡dŽd”d d¨d³dºd¾dÑd×dädïdõdeeeBedepexeƒeŠe•e—e¢e¢e²e·e·eÁeÌeÞeäeòeÿe fff#fÔHÔVÔ^ÔmÔƒÔ…ÔŽÔ¤Ô²ÔºÔÂÔÄÔÏÔÚÔÚÔâÔêÔôÔüÔÕÕÕÕ#Õ>ÕOÕaÕdÕiÕ|Õ”Õ¨Õ°Õ°ÕÂÕÅÕÊÕÝÕõÕ ÖÖÖ2Ö5Ö:ÖMÖSÖhÖ~Ö€Ö•Ö«Ö³Ö³Ö¾ÖÝÖäÖïÖב83=&Ò&Ò/Ò/Ò=ÒAÒOÒRÒWÒ’8>H^Ò^ÒgÒgÒuÒyÒ€ÒƒÒˆÒ“D*^*^*x*‹*•*œ*¨*À*É*Í*ß*å*+”Ðy©N÷N÷x÷{÷‚÷ˆ÷Ž÷�÷–÷œ÷œ÷®÷¹÷À÷Í÷Ú÷í÷ü÷øøø ø%ø/ø/ø@øBøIøOøYøYøYøpø‚ø‰ø˜øšø¬ø»ø»øÍø•0+3+++5+F+L+L+T+–„\yNìNì`ìuììˆìŠì‘ì¡ì¬ì®ì¸ì¸ì¾ìÏìÒìÒìóìþìíí í$í0íCí–í—  +®)®)·)Õ)Ú)˜h÷ þ]þ]^ ^*^8^C^I^Z^`^q^w^ƒ^š^š^¬^½^Ê^Ð^á^ç^5_™”"Ž.Ž.°.º.Æ.Ë.Û.á.ö. +//'/5/L/T/^/m/u/‚/Š/�/�/�/�/ž/¨/±/¹/¼/Î/š�µÕŽNŽN¼NÁNÕNÝNëNïNøNøNýN +O OJOOOsO{O€O‡O�O³OµOËOáOP P1P›ˆùÆûÆûÞûðû÷ûþûü"üAüFü`üMüülü‹ü ü�ü¿ü¬üËüËüËüÝüäüýý ýœ y}h‡h‡q‡}‡‚‡�(A6â6âXâ`âfânâpâpâ�â�â�â‰â‘â£â²â£âÇâÉâÉâãâåâåâðâõâãããã)ã+ã8ã:ãGãIãVã^ãfãmã|ã‰ã‹ãœã©ã©ã©ã²ãÄã×ãÝãåãçãôãôã ä ä äää6ä;ä;ä;äIäOäTä\ägäyä„ä‰ä‰ä�ä”ä¢ä¦ä¯ä¶äÔäáäèäñä åååååå%å3å3åSåSåSåZåhåwåŠå�åŸåŸåŸå²å²å¹åÀåÅåËåÝåçåæ+æ1æ1æEæJænæuæ�æŸæ²æ½æÄæÈæÈæÈæÈæÓæÝæëæ çç5ç?ç?çMçkç›ç®ç¿çÖçéçîçîçîçöçèèè#è#è#è5èbèhèhèhèsè}è‰è”è–è–è–è›è§è§èñèžH%A/A/O/V/a/o/z/‚/‚/š/¤/ª/°/Ÿ0 FSFSmSZSyS�SˆS§S¯S T9Jþ&þ&'$'6'L'm'Z'…'–'¨'¾'ß'Ì'÷'(((¡TXiN N d r x ~ � � « ½ Á Ç Õ Ø â ¢Lgýý=ý2ýJýeýQý…ýqý‘ý§ý“ýÇý³ýÓýßýäýðýþþþ þ+þ6þ>þCþOþTþhþoþsþ~þƒþŽþ§þ°þ¼þÁþÕþÜþàþàþåþþþÿÿ1ÿCÿHÿSÿ[ÿ[ÿ[ÿ]ÿvÿ‹ÿ–ÿ ÿ«ÿ­ÿ¸ÿÀÿÀÿÍÿÅÿåÿ£àZŽbb*b8b=bJbXbab|bŠb¬bµbÅbßbêbúbübþbccc%c1cCcKcccgcgcgcgclcŠc¤c¤c«c®c¶cÂcËc!d¤d{�Î*Î*ì*+ +'+@+8+X+x+d+„+•+«+—+Ã+Ð+Ð+è+è+ò+¥(FßFßTßwß}߂߂߈ߦ(!'ÎÑÎÑ×ÑåÑëÑíÑòѧD]j°8°8Ê8Ñ8Ú8æ8û89 9999 9¨„½ÚH¥H¥{¥‡¥‹¥“¥›¥Ÿ¥ª¥®¥²¥¶¥¾¥Ã¥Ç¥Ø¥é¥ë¥ï¥¦¦¦1¦8¦B¦B¦B¦T¦©€X—X—q—x——†—Œ—œ—§—±—¼—Ó—Ö—Ø—ó—ý—˜˜˜+˜3˜3˜I˜I˜[˜ª˜b®]®]Ô]ô]ü]^^ ^#^.^N^S^m^Œ^’^—^ª^×^à^ö^ü^__ _ _D_I___e_m_p_�_•_²_Ñ_×_ß_ß_ä_ê_í_ø_``7`V`\`a`�`Š`�`®`¶`»`Û`ä`æ`a a-a2aLakaqavavavavaƒa”aŸa·aÂaÕaâaúab b)b+b?bPbUb`bmb�b�b�bŸb«°)¨�¨�Ë�Ø�Ý�á�ê�÷�žžž!ž,ž4ž7žCžKžež‹ž…ž›ž¤žÙžÅžéžéžŸ Ÿ(Ÿ/ŸSŸŒŸŒŸŒŸŒŸíŸ¬0ùA؋؋ý‹ ŒŒŒ$Œ.Œ4Œ>ŒLŒVŒhŒrŒxŒ‚ŒˆŒ’Œ™Œ¥Œ«Œ´ŒßŒîŒñŒóŒýŒ��+�5�J�J�M�W�l�q���Œ�‘�¥�¸�Â�×�å�î�ö�ŽŽ%Ž6ŽCŽCŽPŽPŽXŽfŽ­Ž­l£:v?v?�?§?·?×?é?@@@F@N@R@U@Y@^@h@k@r@x@@…@‰@Ž@˜@©@°@·@¹@½@Æ@Ð@Ó@Þ@ê@í@þ@ AAA A8AIARA[AcAnAyA…A–A§A³AÁAÃAÊAÑAÖAÚAçAîAB B)B3BrJrNrSrXrcrnryr{r�rŽr“r˜r±r¼rÇrÇrÍrÚrÜrárêrsss s,s,s0s5s5sFsHsHs[s]s]spsrsrs…s‡s‡sšsœsœs®s®s´s¹s¹sÐsäsÙsñsùsttt!t,t#ttVtYt[tgtyt‰t•t¬tÆtËtßtïtuuu u!u3u>uFuNuRu`ufukukuqu…u•ušušu u¦u«u«u«u±uÀuÓuàuäuéuéuíuòuòu÷uvv(v>vJvJvPv]v_vjvvv…v˜v˜v¥v±v±v±v±vµvºvËvÝvèvðvøvúv ww w+w1w>w>wUwewewyw…w‡w�wœw³w³w¹wÆwÈwÚwÚwåwåwåwåwåwazµ\ãö]]$]6]<]G]U]a]x]x]Š]�]›]«]¶]Ä]Ñ]ý]¶(28$7>ELPRY`ddl…��£®¼ÍÑÖò'+0A^^l€…ž¯³³³¸æû    : b j s w | � Ÿ ¯ à Å Þ ñ õ õ õ  9 = F J O ` } } ‹ Ÿ ¤ ½ Î Ò ä ä ä é ø !8!C!I!_!p!u!Š!¦!Î!Ò!Û!ß!ä!õ!"""0"2"K"\"`"`"g"z"~"�"•"±"Ù"á"ê"î"ó"##*#>#C#\#o#s#…#…#…#…#Š#©#¸#Ù#ä#ê#$$$$$+$D$D$D$S$S$f$}$ˆ$™$ž$¤$®$°$¼$¼$Ã$Î$ã$å$ð$%%%%*%:%A%H%R%Z%^%b%d%i%q%u%‡%‰%Ž%–%š%œ%œ%¥%²%È%è%&&&!&!&4&8&8&8&?&D&^&j&v&}&}&”&–&›&µ&Á&Í&Ô&Ô&á&ë&ë&ý&·˜ ¶˜`G`G}GŒGŒGŒG¦G¦GµGµG»G½G½GÃGÅGÅGËGÍGÍGÔGØGÝGÝGÝGÝGÝGÝGåGúGúGH HHH)H>H@H[H]HxH}H˜H�H£H£H¸H»HâHïHI'I'I0I5ISIAIYIhImItI}I�I˜I I¥I¥I¥I®IÇIÍIÍIæIôIJ$J&J.J4JK@KLKNKiKoKwK|K…K�K“K™KŸK¨K«K«K¹KÇKÉKìK LLLL%L'L'L,L.L6L6LQLcLhLtLzL}L”L–L™L©L­L´L½LÌLÚLàLèLíLõLúLúLMM'M,M6M^MiMtMMŠM•M M«M¶M¶M¶M¾M¾M×MåMÿMNNNN N&N(N(N.N4N4NRFRKRKRQRQR_ReRkRuRR�R¢R¥R§R±R±R³R»RÀRÅRÊRÊRÐRØRÝRÝRâRíRòR÷RSS-S/S4S9S>SCSHSMSRSRSWS\SxS‚S–SªS°S¸S¸SÆSÌSÒSÜSæSôS T TTT'T,T,T,T4T9TBTBTGTGTMTUTZTZT_TjToTtTyTˆTˆT™TŸTŸT­T³T¹TÃTÍTÛTðTóTõTÿTUUUUU U)U.U.U4UtJtht„t‘t¨t»tÆtÜtÈtètðtðtÿtÿtuu)u>uMuXukuquququvu{uŠu•u¬u®u³uÂuÍuÚuäuäuòu¹”*KðŸðŸ    " % ( , 1 Q > a i q t v † � ˜ ž ¡ ² É Ú å ¡ºà.¢†;†;¤;¯;À;Ã;Ç;Ð;×;å;ô; +<<,<><P<_<n<<Ž<Ž<œ< <¤<©<­<º<Á<Ï<ã<ì<ò<=== =)=)=.=.=.=3=3=B=K=S=i=i=i=n=n=ƒ=�=š=Ÿ=Ÿ=¢=§=§=Ã=Ï=Ü=Þ=Þ=â=ä=ä=> >>>>> > >,>.>.>1>1>:>@>E>a>a>a>a>a>a>a>a>a>a>a>a>c>t>†>•>¤>¤>¨>¨>°>Ì>Ð>Õ>p?»,þÐþÐ ÑÑÑ Ñ&Ѽ˜?aVVV"V)VYVEVeVjVqVqV‘V§V“V³VãVÏVïVôVûVûVûVWWWW(W3WFW>W^WhW½PQaQ%Q%_%m%t%„%•%š%·%½%Ä%Ë%Ù%å%÷%3&¾D%ŽßŽß¢ß°ß¶ßÙßßßåß +ààààà$à¿ô#œÎ/Î/Ö/å/é/ö/00&0F0S0e0‡0§0µ0Ñ0ã0û011>1\1k1†1‘1¬1Å1Å1à1 2#2>2P2_2n2n2y2Œ2�2°2À2Í2Ø2ç233333$31383W3`3m3q3y3„3œ3´3½3Í3Õ3Ú3þ344)4=4B4J4p4r4}4°4Ê4Ê4â4ñ4ù4555+5J5R5Z5e5g5w5�5§5¿5×5é56 66$62666:6À ˜„˜„¡„À„Å„ÁX…W¾Ç¾ÇØÇßÇìÇ÷ÇüÇÈÈÈ2È8ÈVÈjÈuÈ{È�È�È­ÈÂÈÄÈÇÈÓÈÛÈãÈëÈùÈÿÈÉÉÉÉ%É+É0É0ÉGÉGÉeÉeÉxɅɊɊɡɪɹÉÏÉÚÉèÉóÉÊÊ"Ê(Ê2Ê>ÊKÊMÊMÊUÊZÊZÊbÊgÊgÊoÊtÊtÊ|Ê�Ê�ʇʌʌʓʘʘʟʤʤʯʴʴʿÊÄÊÄÊÏÊÔÊÔÊßÊßÊøÊÿÊËËËË*Ë7ËFËMËPËbËdËjË~ˋ˚˚˚˚ˤ˼ËÑËáËòËøË ÌÌÌÌ/Ì@ÌOÌUÌfÌqÌ{̙̟̪̰̊ÌÅÌËÌÜÌçÌíÌýÌýÌ Í Í,Í4ÍDÍKÍQÍbÍmÍrÍ�ͤͲÍÂÍÎÍàÍëÍúÍüÍÎÎÎ"Î&Î4Î>ÎDÎNÎTÎ_ÎeÎgÎtÎ�΋ΰΰζνÎýÐÂ0#«ˆ§ˆ§§§Ñ§Ù§Ù§ç§ú§¨¨2¨2¨2¨:¨<¨<¨D¨F¨F¨N¨P¨P¨X¨X¨a¨g¨l¨l¨u¨�¨…¨Š¨�¨•¨•¨�¨¦¨¬¨±¨±¨¶¨Â¨Ú¨ù¨ü¨©0©0©0©8©:©:©:©B©D©D©D©L©N©N©N©V©X©X©c©c©i©n©n©n©n©u©€©’© ©®©¸©¸©¸©È©È©Ï©Ó©Ù©ñ©ÿ©ªªGªJªQªcªkªtªªªŠª�ª•ª•ª•ªœª¢ª·ª¿ªÅªçªóªùªþªþª««««'«-«-«-«-«†«Ãd$èAèA +BBBB!B4B6BCBEBPBdBlB|B�B‡B�B’B¤BÄLWfÙ0Ù0í0ñ0ö011 11111Å\CVq0q0‡0‡0‹0�0£0¦0«0«0µ0»0»0É0Ë0Õ0Æ8(2öÑöÑÿÑÿÑ ÒÒÒÒ ÒǨ²Øæeæeþeff*ffWf±fœf‘f|fef·fÌf¼fçfìføf g$g9g&gEgKgKgXgg§g�g»gÖgÖgÖgâgÈ Ä>D>DSD^D†DqDeD¥D’D±DÆD³DóDÞDÒDÿD EE E"E-E8E8E=EjEoEœE¡E»E¨EÚEÇEæEñEFóE%FF1F6F1FLFZFbFmFoFzF…F…FŠF¥F§FÂFÂFÏFÔFóFõFGGGGÉl¥¼-- -H-+-T-t-�-†-¥-½-ª-É-Ü-ü-.!.!...M.M.W.Ê4“œ~ç~ç’ç—ç�ç¡ç¥çÄçÌç˼Lw¶‘¶‘ΑÙ‘ã‘ü‘’’’"’$’*’0’F’3’R’R’q’‰’v’•’Ÿ’¸’Ð’Õ’Ú’Þ’à’æ’ì’“ï’““!“)“;“U“N“a“m“Ì4;DNÜNÜWÜc܂܇܉܉܎ÜÍ”"X¦X¦f¦x¦|¦„¦Œ¦—¦¢¦ª¦µ¦À¦Å¦Û¦â¦é¦ô¦ÿ¦§ §§§%§0§;§D§L§L§P§‡§Î€ÚöÙ4Ù4÷4û4ÿ45555.54565E5I5M5U5]5i5~5�5–5�5�5ª5¿5Ïd9Î22<2C2K2T2e2r2‡2Š2�2‘2š2¨2²2·2ß2ä2ñ23"3/3O3T3c3�3—3œ3±3Ý3å3ê3ê3ý34 4$4C4T4Y4Y4{4{4{4{4{4‹4 4£4¦4ª4ª4¯4×4Ü4å4ò4ú45'545?5]5]5]5j5�5ƒ5ƒ5ƒ5�5§5©5©5¶5Í5Í5Þ5ã566'6E6E6E6R6i6k6k6k6x6�6‘6‘6ž6µ6µ6Æ6Î6Ó6ù6 77;7;7;7H7_7a7a7n7…7…7š7œ7£7Å7ã7è7ï7ý78 8 8 8%8-8/8/8Q8‹8Ф/T&ä&äFähähä‡ä—äœäœä«ä½ä×äßäæäèäûäååååååå#å#å#å#å5å7å7å7å7åJåUåxåÑxµn“n“„“�“›“ “¬“·“¼“Óȓӓؓؓؓ +”÷“”””(”-”-”-”_”L”k”’”’”¥”¸”˔ޔã”ã”ö” ••/•4•4•G•Z•m•€•‚•‚•••¨•»•ΕΕΕÜ•Ò0Š’çç,ç2ç6çUçvçvç|çÓ<:E±7±7º7Å7Ó7ß7ë7ô7ý78 88ÔluŒ''''1'8'O'O'T'V'b'l'z'—'™'©'©'®'°'·'é'ÕÜŸÒæ}æ}ú}$~~~?~L~X~k~^~˜~�~É~É~Î~ä~ö~ "Udœˆ·Äðõý€$€I€>€*€Y€r€^€’€~€¦€³€߀߀߀߀ç€ÖL½Ì^.^.|.Ž.•.´.´.Æ.Ù.æ.ß.þ./×Èg•!1!1E1I1h1Š1–1�1¨1³1À1É1É1Î1Ø1ð1û1 222)2:2<2M2O2Q2Q2Q2Y2Y2c2c2k2s2{2ƒ2‡2‘2Ý2Ø „„„2„8„Ù`FZ88!8(8*8/8>8D8Y8Y8g8g8s8|88�8—8š8¢8Ú<›¦öŸöŸÿŸ +    + 5 S ^ n Û 26_6_N_`_f_r_}_‹_—_®_¹_É_Û_á_ç_í_````'`-`8`@`N`[`˜`Ü, Þ)Þ)ì)ý)*$*'*-*Ý4ȄȄքà„é„ð„÷„………ÞÄKx.õ.õZõ]õbõoõtõ†õˆõŒõ�õ“õ¦õ¿õáõêõõõüõö7ö<öUöwö|öƒöœö¾öÀöÙöûöûöûö÷*÷9÷K÷ß „ȦN¦NÄNÒNåNêNOOOO'O.O=OBONO`O`O~O‰OœO£O½OÚOæOPP5P>PMPUPbPkPpP�P�P¯P´P¼PÕPçP÷PýPQQQ]QGQ8QmQ¨Q’QƒQ¸Q»QÛQoRà<%0¨B¨BÉBÏBØBêBC C!C-Cá„ |öö#*255EPPSZagmsz€‘‘“œ¨®ÔØÛëóøøÿ"->>GLV]dlrt‚™œ«·ÄÄÄÄÊÜâó%=DNV]]fmy‰”””¨¼ÌÏŠâ„9‘6‘6­6¼6Ã6Ý677*737A7S7l7l7~7”7œ7Ÿ7«7ãX{ÍÞÞ &1CQWhow�•¨½Í×Ùéù  &1<?F`h‚—¤§¯³ÅÔßçþ$+=ELPY[m„’˜œž«««­ÄÊÊÜä  +8„8„A„U„Z„å,ýD¶Ž¶ŽÒŽØŽãŽôŽùŽÿŽ���&�+�a�M�m�†�r�’�«�—�·�¾�Ã�Í�Ð�Ô�Ù�ò�Þ�þ�þ�þ���� �"�&�&�F�K���m���¦�’�²�È�´�Ô�Û�à�æ�é�í�ï�‘ô�‘‘‘‘,‘U‘a‘æˆÍëQQZUUdss‚‚‘‘  ¯¯¾ÒÍÜÜëú çxÈâÞ[Þ[ü[\\ \7\7\I\O\Z\j\v\\…\‹\–\¤\±\½\Ë\Ú\Ú\ +]èd�²ÎçÎçÒçåçåçÿçèèè)è)è@è@èWèWènènè…è‡è‡è‹è騯øæùæùúúú0ú0úBúMúXúiúzú‘ú•úšúžú ú±úÃúÏúáúãúüú ûûûû"û7û7ûCûIûSû^ûlûsû‚û„ûšû´û´ûÆûê`Ëßî–î–—&—3—7—F—e—i—o—‚—Ÿ—¡—¡—Ò—À—¡—ñ—û—ëP1A0C0CFCRCZC^CoC}CƒC�C—C¢C¨C«CµCì ®-ö6ö677 7(7/767L7]7n7€7’7¡7°7Á7Ð7Ð7×7Û7ä7ñ7ø788 8,8,8,8,8,888<8?8G8U8]8j8r8z8‹8–8›8›8¨8®8½8Ô8Ö8á8î8ý899991939A9C9N9T9T9\9\9n9u9‹9‹9‹9�9�9¥9³9¾9Ã9Ã9Æ9Ë9Ë9ç9õ9:::: +: +:&:4:@:B:B:E:G:G:T:V:V:Y:Y:Y:Y:Y:b:h:l:x:˜:¥:³:º:‚;í(rx8‡8‡F‡M‡]‡`‡f‡î(ntÉ&É&Ò&Ü&ì&÷&÷&'ïTzK–í–í´íºí½íÆíÐíèíøíîî +îîî(î8îEîKîOîUîWîZî^î^î�î…î‹î‹î’î´îÉîÜîïîõîüîïïïï ï%ï)ï/ï@ïFïKïPï]ï_ïqïsïzï‡ï‰ï›ï›ï›ï›ï›ï¿ïÊïÖïíïíïðð+ðOðiðnð…ðŠð˜ð¯ð´ðºðËðàðæðöðññ"ñ.ñFñRñRñRñXñ[ñ^ñwñ}ñ‘ñ—ñœñ§ñ§ñ¬ñ¹ñÆñÆñÌñÚñññ÷ñúñýñò òòòò&ò3ò3ò9òGò^òdògòjòqòqò‚ò‰ò–ò£ò£òªò´ò»òÁòÈòÓòçòçòóó óóó+ó/ó8óPóUó\ó~ó‰ó�ó—ó°óÄóÄóßóßóùóôôô7ôJônôpôzôœôœôœôµôÁôÒôêôîôÃõð¼Ùægægþghh h*h6hAhahChmhrhrh”hÄh¨h›hæhëhii$i/iOi1i[i`isizi—iªiªiÍiÍiÙiñ ~)~)�)¦)¬)ò8�™–H–H¯H¾HÒHßHåHëHîHIó8 ¡.¡.¯.¶.Á.É.Ð.Ö.Ü.Ü.â.ô .*.*8*@*E*õôÓŒî€î€ ��'�2�K�w���¼�æ�ì�ò�ú�ü�‚ ‚"‚-‚9‚R‚~‚—‚Âí‚ó‚ù‚ƒƒƒ)ƒ,ƒ7ƒCƒHƒaƒ�ƒ¦ƒÒƒüƒ„„„„„5„8„C„O„h„”„­„Ù„… …………$…?…B…M…Y…Y…^…d…j…r…z………—…¦…Á…Õ…ÿ…† +††+†I†]†‡†�†•†š†¬†»†Ö†ê†‡‡ ‡1‡@‡[‡o‡™‡Ÿ‡¤‡¤‡¤‡µ‡À‡ˇñ‡ ˆˆˆ)ˆ)ˆ.ˆAˆXˆ]ˆƒˆ›ˆ¦ˆ®ˆ»ˆ»ˆÀˆÓˆàˆêˆþˆ‰.‰@‰M‰x‰Œ‰£‰±‰³‰ljÞ‰Þ‰ç‰ó‰ Š"Š5ŠAŠTŠXŠXŠXŠ_ŠdŠwŠƒŠšŠœŠ¡Š´ŠÀŠÍŠ׊׊éŠö€k 9 969B9B9X9c9e9�9�9�9ˆ9’9–9š9�9�9¦9ª9À9À9ö9: ::-:2:5:::::::O:V:c:j:r:w:w:Œ:˜: :¥:¥:º:Ç:Ï:Ô:Ô:é:õ:þ:;;;0;;;^;b;p;x;};};’;¬;¶;Â;Ê;Ï;Ï;î;ú;< +< <+<:<?<N<[<`<`<`<c<h<h<h<‡<“<ž< <£<¨<¨<¨<²<º<Á<É<Ò<Ý<ã<ñ<û<û<= +="='='=:=B=B=D=D=D=I=I=P=V=Z=a=e=e=e=e=t=t=™=¢=¢=¦=´A÷(¸A¸AÆAÏAÝAãAø�1öuöuvv(v>vSvavlv{v�v�v�v†v‹v™v¤vºv¼vÁvÏvÚvçvîvüvù\‘¤ö+ö+,4,,@,Y,R,q,†,s,’,¥,·,Ê,Ê,×,ö,ö,-ú8hrþFþFG&G:GIGOGUGXGyGû0�—0ˆ0ˆDˆPˆ^ˆaˆyˆ|ˆ„ˆü0S[¾Ò¾ÒÒÒÚÒçÒñÒÓýP>N°…°…¼…Ð…Ó…ç…ï…ó…ý…††††þTš«II0ICIFIPI]IrItI†I�I¤I¤IªI­IJÿ<˜£ˆˆˆˆœˆ£ˆ¯ˆ»ˆËˆÐˆÓˆ×ˆßˆ ,0&à&à4à@àHzˆ–c–cªc¶cÁc×cÃcãcåcìc÷cd d Dƒ¾L¾LâLéLîLöLMMM(M(M*MDMJMLMNM[M[M[M[M_MnMwMMˆM�M—M�MŸM»M¿MÑMäMêMþMNNN$N+N2N;NINRNrNxN|N�N†N‰N“N–N¦ND.i.iflags=flags; cc->opts=1<otrace_mask=0b10001111101; cc->htc.hash_mask=HTG_TYPE_MASK-HTT_IMPORT_SYS_SYM; cc->htc.define_hash_table=cc->htc.hash_table_lst= cc->htc.glbl_hash_table=cc->htc.local_hash_table=Fs->hash_table; @@ -48,7 +47,7 @@ CCmpCtrl *CmpCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL) if (filename) tempf->full_name=FileNameAbs(filename); else - tempf->full_name=StrNew(dsk.temp_filename); + tempf->full_name=StrNew(blkdev.temp_filename); if (flags & CCF_PMT) buf=CAlloc(8); tempf->buf=tempf->buf_ptr=tempf->line_start=cc->cur_buf_ptr=buf; @@ -298,7 +297,7 @@ U0 LexIncludeStr(CCmpCtrl *cc,U8 *abs_filename,U8 *src,Bool actual_file) if (actual_file) tempf->full_name=StrNew(abs_filename); else - tempf->full_name=StrNew(dsk.temp_filename); + tempf->full_name=StrNew(blkdev.temp_filename); tempf->line_num=1; tempf->buf=tempf->buf_ptr=tempf->line_start=cc->cur_buf_ptr=src; } @@ -630,53 +629,50 @@ lex_float_start: cc->token=TK_STR; goto lex_end; case '\'': - if (!(ch=LexGetChar(cc))) - k='\''; - else { - k=0; - if (ch!='\'') - for (j=0;j<8;j++) { - if (ch=='\\') { - switch (ch=LexGetChar(cc)) { - case 'n': k.u8[j]='\n'; break; - case 'r': k.u8[j]='\r'; break; - case '"': k.u8[j]='"'; break; - case '\'': k.u8[j]='\''; break; - case '\`': k.u8[j]='\`'; break; - case '\\': k.u8[j]='\\'; break; - case 't': k.u8[j]='\t'; break; - case '0': k.u8[j]=0; break; - case 'x': - case 'X': - i=0; - while (TRUE) { - ch=ToUpper(LexGetChar(cc)); - if (Bt(chars_bmp_hex_numeric,ch)) { - if (ch<='9') - i=i<<4+ch-'0'; - else - i=i<<4+ch-'A'+10; - } else - break; - } - k.u8[j]=i; - cc->flags|=CCF_USE_LAST_U16; + k=0; + for (j=0;j<8;j++) { + if (!(ch=LexGetChar(cc)) || ch=='\'') + break; + if (ch=='\\') { + switch (ch=LexGetChar(cc)) { + case 'n': k.u8[j]='\n'; break; + case 'r': k.u8[j]='\r'; break; + case '"': k.u8[j]='"'; break; + case '\'': k.u8[j]='\''; break; + case '\`': k.u8[j]='\`'; break; + case '\\': k.u8[j]='\\'; break; + case 't': k.u8[j]='\t'; break; + case '0': k.u8[j]=0; break; + case 'x': + case 'X': + i=0; + while (TRUE) { + ch=ToUpper(LexGetChar(cc)); + if (Bt(chars_bmp_hex_numeric,ch)) { + if (ch<='9') + i=i<<4+ch-'0'; + else + i=i<<4+ch-'A'+10; + } else break; - default: - k.u8[j]='\\'; - cc->flags|=CCF_USE_LAST_U16; } - } else if (ch=='$$') { - ch=LexGetChar(cc); - k.u8[j]='$$'; - if (ch!='$$') - cc->flags|=CCF_USE_LAST_U16; - } else - k.u8[j]=ch; - if (!(ch=LexGetChar(cc)) || ch=='\'') + k.u8[j]=i; + cc->flags|=CCF_USE_LAST_U16; break; + default: + k.u8[j]='\\'; + cc->flags|=CCF_USE_LAST_U16; } + } else if (ch=='$$') { + ch=LexGetChar(cc); + k.u8[j]='$$'; + if (ch!='$$') + cc->flags|=CCF_USE_LAST_U16; + } else + k.u8[j]=ch; } + if (ch!='\'' && (ch=LexGetChar(cc)) && ch!='\'') + LexExcept(cc,"Char const limited to 8 chars at "); cc->cur_i64=k; cc->token=TK_CHAR_CONST; goto lex_end; diff --git a/Compiler/LexLib.CPP b/Compiler/LexLib.CPP index cd53159..e90dfec 100644 --- a/Compiler/LexLib.CPP +++ b/Compiler/LexLib.CPP @@ -69,7 +69,7 @@ CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class) I64 i; CMemberLst *tempm; do { - tempm=haystack_class->member_lst; + tempm=haystack_class->member_lst_and_root; while (tempm) { if (!(i=StrCmp(tempm->str,needle_str))) { tempm->use_cnt++; @@ -84,17 +84,18 @@ CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class) return NULL; } -CMemberLst *MemberFind2(CHashClass *needle_class,CHashClass *haystack_class) -{//Find class member, just offset<0. See $LK,"ClassRep",A="MN:ClassRep"$() and $LK,"DocForm",A="MN:DocForm"$(). +CMemberLst *MemberClassBaseFind(CHashClass *needle_class, + CHashClass *haystack_class) +{//Find class member class base. For finding dup class local vars. CMemberLst *tempm; - tempm=haystack_class->member_lst2; + tempm=haystack_class->member_class_base_root; while (tempm) { - if (needle_class==tempm->member_class2) + if (needle_class==tempm->member_class_base) return tempm; - if (needle_classmember_class2) - tempm=tempm->left2; + if (needle_classmember_class_base) + tempm=tempm->left_class_base; else - tempm=tempm->right2; + tempm=tempm->right_class_base; } return NULL; } @@ -103,19 +104,11 @@ U0 MemberAdd(CCmpCtrl *cc,CMemberLst *tempm,CHashClass *tempc,I64 mode) { U8 *st=tempm->str; CMemberLst **tempm1,*tempm2; - CHashClass *tempc2; + if (MemberFind(st,tempc) && StrCmp(st,"pad") && StrCmp(st,"reserved") && StrCmp(st,"_anon_")) LexExcept(cc,"Duplicate member at "); - if (mode==PRS1B_LOCAL_VAR) { - tempc2=tempm->member_class-tempm->member_class->ptr_stars_cnt; - if (Bt(&cc->opts,OPTf_WARN_DUP_TYPES) && MemberFind2(tempc2,tempc)) - LexWarn(cc,"Duplicate type at "); - } else - tempc2=NULL; - tempm->member_class2=tempc2; - - tempm1=&tempc->member_lst; + tempm1=&tempc->member_lst_and_root; while (tempm2=*tempm1) { if (StrCmp(tempm2->str,st)<=0) tempm1=&tempm2->left; @@ -124,13 +117,18 @@ U0 MemberAdd(CCmpCtrl *cc,CMemberLst *tempm,CHashClass *tempc,I64 mode) } *tempm1=tempm; - if (tempc2) { - tempm1=&tempc->member_lst2; + if (mode==PRS1B_LOCAL_VAR) { + tempm->member_class_base= + tempm->member_class-tempm->member_class->ptr_stars_cnt; + if (Bt(&cc->opts,OPTf_WARN_DUP_TYPES) && + MemberClassBaseFind(tempm->member_class_base,tempc)) + LexWarn(cc,"Duplicate type at "); + tempm1=&tempc->member_class_base_root; while (tempm2=*tempm1) { - if (tempc2member_class2) - tempm1=&tempm2->left2; - else if (tempc2>tempm2->member_class2) - tempm1=&tempm2->right2; + if (tempm->member_class_basemember_class_base) + tempm1=&tempm2->left_class_base; + else if (tempm->member_class_base>tempm2->member_class_base) + tempm1=&tempm2->right_class_base; else { tempm1=NULL; break; @@ -138,12 +136,13 @@ U0 MemberAdd(CCmpCtrl *cc,CMemberLst *tempm,CHashClass *tempc,I64 mode) } if (tempm1) *tempm1=tempm; - } + } else + tempm->member_class_base=NULL; tempm->left=NULL; tempm->right=NULL; - tempm->left2=NULL; - tempm->right2=NULL; + tempm->left_class_base=NULL; + tempm->right_class_base=NULL; tempm2=tempc->last_in_member_lst; tempm2->next=tempc->last_in_member_lst=tempm; } @@ -159,7 +158,7 @@ U0 MemberLstDel(CHashClass *tempc) { CMemberLst *tempm,*tempm1; CMemberLstMeta *temp_meta,*temp_meta1; - tempm=tempc->member_lst; + tempm=tempc->member_lst_and_root; while (tempm) { tempm1=tempm->next; Free(tempm->str); @@ -181,9 +180,9 @@ U0 MemberLstDel(CHashClass *tempc) tempm=tempm1; } tempc->size=0; - tempc->last_in_member_lst=&tempc->member_lst; - tempc->member_lst=NULL; - tempc->member_lst2=NULL; + tempc->last_in_member_lst=&tempc->member_lst_and_root; + tempc->member_lst_and_root=NULL; + tempc->member_class_base_root=NULL; tempc->member_cnt=0; if (tempc->type&HTT_FUN) tempc(CHashFun *)->arg_cnt=0; @@ -194,7 +193,7 @@ I64 MemberLstSize(CHashClass *tempc) CMemberLst *tempm; CMemberLstMeta *temp_meta; I64 result=0; - tempm=tempc->member_lst; + tempm=tempc->member_lst_and_root; while (tempm) { result+=MSize2(tempm->str); result+=LinkedLstSize(tempm->dim.next); diff --git a/Compiler/OpCodes.TXT b/Compiler/OpCodes.TXT index a542be0..b121308 100644 --- a/Compiler/OpCodes.TXT +++ b/Compiler/OpCodes.TXT @@ -1,21 +1,23 @@ /* See $LK,"AsmHashLoad",A="MN:AsmHashLoad"$(). - '!'= don't switch modes - '&'= default - '%'= Not allowed in 64-bit mode - '='= Rex 0x48 only if 64-bit mode - '`'= Rex only R8-R15 - '^'= Rex xor-like - ':'= floating sti-like for disassembly - '$$'= ending zero (ENTER) - $FG,4$Note:$FG$ TempleOS uses nonstandard opcodes. - Asm is kind-of a bonus and I made changes - to make the assembler simpler. For opcodes - which can have different numbers of - args, I separated them out -- Like IMUL and IMUL2. - The assembler will not report certain invalid - forms. Get an Intel datasheet and learn - which forms are valid. +'!'= IEF_DONT_SWITCH_MODES +'&'= IEF_DFT +'%'= IEF_NOT_IN_64_BIT Not Allowed in 64-bit. +'='= IEF_48_REX Rex 0x48 only if in 64-bit mode. +'`'= IEF_REX_ONLY_R8_R15 +'^'= IEF_REX_XOR_LIKE +'*'= IEF_STI_LIKE Floating STI-like for UAsm. +'$$'= IEF_ENDING_ZERO Ending zero for ENTER. + +$FG,4$Note:$FG$ TempleOS uses nonstandard opcodes. +Asm is kind-of a bonus and I made changes +to make the assembler simpler. For opcodes +which can have different numbers of +args, I separated them out -- Like IMUL and IMUL2. +The assembler will not report certain invalid +forms. Get an Intel datasheet and learn +which forms are valid. + */ R8 AL 0; @@ -1296,15 +1298,15 @@ OPCODE FISTTP OPCODE FLD 0xD9,/0 M32 //Load F32 0xDD,/0 ` M64 //Load F64 - 0xD9 0xC0,+I: STI; + 0xD9 0xC0,+I* STI; OPCODE FSTP 0xD9,/3 M32 //Store F32 0xDD,/3 ` M64 //Store F64 - 0xDD 0xD8,+I: STI; + 0xDD 0xD8,+I* STI; OPCODE FST 0xD9,/2 M32 //Store F32 0xDD,/2 ` M64 //Store F64 - 0xDD 0xD0,+I: STI; + 0xDD 0xD0,+I* STI; OPCODE FRSTOR 0xDD,/4 M32 0xDD,/4 M64; @@ -1312,79 +1314,79 @@ OPCODE FSAVE 0xDD,/6 M32 0xDD,/6 M64; -OPCODE FYL2X 0xD9 0xF1,:; -OPCODE FYL2XP1 0xD9 0xF9,:; -OPCODE F2XM1 0xD9 0xF0,:; -OPCODE FABS 0xD9 0xE1,:; -OPCODE FCHS 0xD9 0xE0,:; -OPCODE FSIN 0xD9 0xFE,:; -OPCODE FCOS 0xD9 0xFF,:; -OPCODE FPTAN 0xD9 0xF2,:; -OPCODE FPATAN 0xD9 0xF3,:; -OPCODE FSQRT 0xD9 0xFA,:; -OPCODE FMULP 0xDE 0xC8,+I: STI ST0; +OPCODE FYL2X 0xD9 0xF1,*; +OPCODE FYL2XP1 0xD9 0xF9,*; +OPCODE F2XM1 0xD9 0xF0,*; +OPCODE FABS 0xD9 0xE1,*; +OPCODE FCHS 0xD9 0xE0,*; +OPCODE FSIN 0xD9 0xFE,*; +OPCODE FCOS 0xD9 0xFF,*; +OPCODE FPTAN 0xD9 0xF2,*; +OPCODE FPATAN 0xD9 0xF3,*; +OPCODE FSQRT 0xD9 0xFA,*; +OPCODE FMULP 0xDE 0xC8,+I* STI ST0; OPCODE FMUL 0xD8,/1 ST0 M32 0xDC,/1 ` ST0 M64 - 0xD8 0xC8,+I: ST0 STI - 0xDC 0xC8,+I: STI ST0; + 0xD8 0xC8,+I* ST0 STI + 0xDC 0xC8,+I* STI ST0; OPCODE FIMUL 0xDA,/1 ST0 M32 0xDE,/1 ST0 M16; -OPCODE FDIVP 0xDE 0xF8,+I: STI ST0; +OPCODE FDIVP 0xDE 0xF8,+I* STI ST0; OPCODE FDIV 0xD8,/6 ST0 M32 0xDC,/6 ` ST0 M64 - 0xD8 0xF0,+I: ST0 STI - 0xDC 0xF8,+I: STI ST0; -OPCODE FDIVRP 0xDE 0xF0,+I: STI ST0; + 0xD8 0xF0,+I* ST0 STI + 0xDC 0xF8,+I* STI ST0; +OPCODE FDIVRP 0xDE 0xF0,+I* STI ST0; OPCODE FDIVR 0xD8,/7 ST0 M32 0xDC,/7 ` ST0 M64 - 0xD8 0xF8,+I: ST0 STI - 0xDC 0xF0,+I: STI ST0; -OPCODE FPREM 0xD9 0xF8,:; -OPCODE FADDP 0xDE 0xC0,+I: STI ST0; + 0xD8 0xF8,+I* ST0 STI + 0xDC 0xF0,+I* STI ST0; +OPCODE FPREM 0xD9 0xF8,*; +OPCODE FADDP 0xDE 0xC0,+I* STI ST0; OPCODE FADD 0xD8,/0 ST0 M32 0xDC,/0 ` ST0 M64 - 0xD8 0xC0,+I: ST0 STI - 0xDC 0xC0,+I: STI ST0; -OPCODE FSUBP 0xDE 0xE8,+I: STI ST0; + 0xD8 0xC0,+I* ST0 STI + 0xDC 0xC0,+I* STI ST0; +OPCODE FSUBP 0xDE 0xE8,+I* STI ST0; OPCODE FSUB 0xD8,/4 ST0 M32 0xDC,/4 ` ST0 M64 - 0xD8 0xE0,+I: ST0 STI - 0xDC 0xE8,+I: STI ST0; -OPCODE FSUBRP 0xDE 0xE0,+I: STI ST0; + 0xD8 0xE0,+I* ST0 STI + 0xDC 0xE8,+I* STI ST0; +OPCODE FSUBRP 0xDE 0xE0,+I* STI ST0; OPCODE FSUBR 0xD8,/5 ST0 M32 0xDC,/5 ` ST0 M64 - 0xD8 0xE8,+I: ST0 STI - 0xDC 0xE0,+I: STI ST0; -OPCODE FCOMIP 0xDF 0xF0,+I: ST0 STI; -OPCODE FCOMI 0xDB 0xF0,+I: ST0 STI; -OPCODE FCLEX 0x9B 0xDB 0xE2,:; -OPCODE FNCLEX 0xDB 0xE2,:; -OPCODE FSTSW 0xDF 0xE0,:; -OPCODE FDECSTP 0xD9 0xF6,:; -OPCODE FINCSTP 0xD9 0xF7,:; -OPCODE FFREE 0xDD 0xC0,+I: STI; -OPCODE FRNDINT 0xD9 0xFC,:; -OPCODE FSCALE 0xD9 0xFD,:; -OPCODE FXTRACT 0xD9 0xF4,:; + 0xD8 0xE8,+I* ST0 STI + 0xDC 0xE0,+I* STI ST0; +OPCODE FCOMIP 0xDF 0xF0,+I* ST0 STI; +OPCODE FCOMI 0xDB 0xF0,+I* ST0 STI; +OPCODE FCLEX 0x9B 0xDB 0xE2,*; +OPCODE FNCLEX 0xDB 0xE2,*; +OPCODE FSTSW 0xDF 0xE0,*; +OPCODE FDECSTP 0xD9 0xF6,*; +OPCODE FINCSTP 0xD9 0xF7,*; +OPCODE FFREE 0xDD 0xC0,+I* STI; +OPCODE FRNDINT 0xD9 0xFC,*; +OPCODE FSCALE 0xD9 0xFD,*; +OPCODE FXTRACT 0xD9 0xF4,*; -OPCODE FLD1 0xD9 0xE8,:; -OPCODE FLDL2T 0xD9 0xE9,:; -OPCODE FLDL2E 0xD9 0xEA,:; -OPCODE FLDPI 0xD9 0xEB,:; -OPCODE FLDLG2 0xD9 0xEC,:; -OPCODE FLDLN2 0xD9 0xED,:; -OPCODE FLDZ 0xD9 0xEE,:; +OPCODE FLD1 0xD9 0xE8,*; +OPCODE FLDL2T 0xD9 0xE9,*; +OPCODE FLDL2E 0xD9 0xEA,*; +OPCODE FLDPI 0xD9 0xEB,*; +OPCODE FLDLG2 0xD9 0xEC,*; +OPCODE FLDLN2 0xD9 0xED,*; +OPCODE FLDZ 0xD9 0xEE,*; -OPCODE FXCH 0xD9 0xC8,+I: STI; -OPCODE FTST 0xD9 0xE4,:; -OPCODE FXAM 0xD9 0xE5,:; +OPCODE FXCH 0xD9 0xC8,+I* STI; +OPCODE FTST 0xD9 0xE4,*; +OPCODE FXAM 0xD9 0xE5,*; OPCODE FINIT 0x9B 0xDB 0xE3; OPCODE FNINIT 0xDB 0xE3; diff --git a/Compiler/OptPass012.CPP b/Compiler/OptPass012.CPP index 071ffd3..808a8fa 100644 --- a/Compiler/OptPass012.CPP +++ b/Compiler/OptPass012.CPP @@ -1222,7 +1222,6 @@ args. case IC_SET_RBP: case IC_SET_RSP: case IC_SET_RAX: - case IC_PREEMPT: case IC_SIGN_I64: case IC_TOUPPER: case IC_ABS_I64: diff --git a/Compiler/OptPass3.CPP b/Compiler/OptPass3.CPP index ec5ab72..7ed193a 100644 --- a/Compiler/OptPass3.CPP +++ b/Compiler/OptPass3.CPP @@ -23,7 +23,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) member_cnt+=2; mv=CAlloc(member_cnt*sizeof(COptMemberVar)); member_cnt=0; - tempm=cc->htc.fun->member_lst; + tempm=cc->htc.fun->member_lst_and_root; while (tempm) { tempc=OptClassFwd(tempm->member_class); if (0<=tempm->reg0) { - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT)) + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT)) "Fun:%s\n",cc->htc.fun->str; if (j>cmp.num_reg_vars) { l=0; @@ -577,7 +576,7 @@ R12 and R13 as non-pointer register variables, such as index variables i,j,k. tempm->reg=cmp.non_ptr_vars_map[l++]; reg_offsets[tempm->reg].offset=mv[i].offset_start; reg_offsets[tempm->reg].m=tempm; - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT)) + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT)) "Reg %Z Var \"%-15ts\" %016X[RBP]\n",tempm->reg,"ST_U64_REGS", tempm->str,reg_offsets[tempm->reg].offset; mv[i].offset_start=0; //flag as reg var @@ -606,7 +605,7 @@ R12 and R13 as non-pointer register variables, such as index variables i,j,k. tempm->reg=cmp.to_reg_vars_map[l++]; reg_offsets[tempm->reg].offset=mv[i].offset_start; reg_offsets[tempm->reg].m=tempm; - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT)) + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT)) "Reg %Z Var \"%-15ts\" %016X[RBP]\n",tempm->reg,"ST_U64_REGS", tempm->str,reg_offsets[tempm->reg].offset; if (tempm->size<8 && diff --git a/Compiler/OptPass4.CPP b/Compiler/OptPass4.CPP index abf1994..b496eed 100644 --- a/Compiler/OptPass4.CPP +++ b/Compiler/OptPass4.CPP @@ -652,7 +652,6 @@ p4_sib: case IC_ADDR_IMPORT: case IC_BSF: case IC_BSR: - case IC_PREEMPT: case IC_SIGN_I64: case IC_TOUPPER: case IC_TO_I64: diff --git a/Compiler/OptPass5.CPP b/Compiler/OptPass5.CPP index 838fbe0..2a9a02c 100644 --- a/Compiler/OptPass5.CPP +++ b/Compiler/OptPass5.CPP @@ -9,8 +9,8 @@ U0 OptPass5(CCmpCtrl *cc) tempi=cc->coc.coc_root.next; while (code=tempi->ic_code) { if (code>IC_NOP2) { - if (tempi->ic_flags&ICF_TRACE) { - if (Bt(&cc->otrace_mask,5)) { + if (tempi->ic_flags&ICF_PASS_TRACE) { + if (Bt(&cc->saved_pass_trace,5)) { "%2d:",ps->ptr; ICPut(cc,tempi); } diff --git a/Compiler/OptPass6.CPP b/Compiler/OptPass6.CPP index 05e5d0c..05a9386 100644 --- a/Compiler/OptPass6.CPP +++ b/Compiler/OptPass6.CPP @@ -31,7 +31,7 @@ U0 OptPass6Lag(CCmpCtrl *cc,CPrsStk *ps,CIntermediateCode *tempi, I64 i=*i_,j,k,l,code,clobbered_reg_mask=*_clobbered_reg_mask; CHashFun *tempf; code=tempi->ic_code; - if (tempi->ic_flags&ICF_TRACE && Bt(&cc->otrace_mask,6)) { + if (tempi->ic_flags&ICF_PASS_TRACE && Bt(&cc->saved_pass_trace,6)) { "%2d:",i; ICPut(cc,tempi); } @@ -187,8 +187,8 @@ U0 OptPass6(CCmpCtrl *cc) cc->htc.fun->used_reg_mask&=~REGG_C_TEMP_CLOBBERED; cc->htc.fun->used_reg_mask|=clobbered_reg_mask; cc->htc.fun->clobbered_reg_mask=clobbered_reg_mask; - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT) && - Bt(&cc->otrace_mask,6)) { + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT) && + Bt(&cc->saved_pass_trace,6)) { "Used Reg Mask:%04X\n",cc->htc.fun->used_reg_mask; "Clobbered Reg Mask:%04X\n",clobbered_reg_mask; } diff --git a/Compiler/OptPass789A.CPP b/Compiler/OptPass789A.CPP index ccc09ed..263ed28 100644 --- a/Compiler/OptPass789A.CPP +++ b/Compiler/OptPass789A.CPP @@ -35,7 +35,8 @@ cc->pass==10 is final pass, code is placed into buf. } else dbg_info=NULL; - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT) && Bt(&cc->otrace_mask,cc->pass)) + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT) && + Bt(&cc->saved_pass_trace,cc->pass)) "$$BK,1$$$$LTRED$$$$IV,1$$This code gets merged together and patched.\n" "$$FG$$$$IV,0$$$$BK,0$$"; @@ -46,7 +47,7 @@ cc->pass==10 is final pass, code is placed into buf. tempi=tempi->next; while (tempi->ic_code) { tempi_next=tempi->next; - if (tempi->ic_flags&ICF_TRACE && Bt(&cc->otrace_mask,cc->pass)) + if (tempi->ic_flags&ICF_PASS_TRACE && Bt(&cc->saved_pass_trace,cc->pass)) ICPut(cc,tempi); ip2=ip; if (cc->flags&CCF_AOT_COMPILE) @@ -410,7 +411,7 @@ cc->pass==10 is final pass, code is placed into buf. } break; case IC_CALL_IMPORT: - if (GetOpt(OPTf_USE_IMM64)) { + if (GetOption(OPTf_USE_IMM64)) { ICU16(tempi,0xBB48); ICU64(tempi,0); if (buf) { @@ -881,9 +882,6 @@ cc->pass==10 is final pass, code is placed into buf. ICCopyTemplate(cc,tempi,CMP_TEMPLATE_SIGN_I64, TRUE,FALSE,FALSE,CN_MAIN); break; - case IC_PREEMPT: - ICPreempt(tempi,ip2); - break; case IC_TOUPPER: ICToUpper(tempi,ip2); break; @@ -1159,7 +1157,8 @@ op789A_skip_copy: if (!dbg_info->body[i]) dbg_info->body[i]=ip2; } - if (tempi->ic_flags&ICF_TRACE && Bt(&cc->otrace_mask,cc->pass) && cnt) { + if (tempi->ic_flags&ICF_PASS_TRACE && + Bt(&cc->saved_pass_trace,cc->pass) && cnt) { "$$RED$$"; if (buf) Un(buf+ip,cnt,64); diff --git a/Compiler/PrsExp.CPP b/Compiler/PrsExp.CPP index 6fe34aa..df5df03 100644 --- a/Compiler/PrsExp.CPP +++ b/Compiler/PrsExp.CPP @@ -423,7 +423,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf) tempcbh=cc->coc.coc_next; cc->coc.coc_next=NULL; i=tempf->arg_cnt; - tempm=tempf->member_lst; + tempm=tempf->member_lst_and_root; argc_cnt=0; if (cc->token=='(') { Lex(cc); @@ -1113,7 +1113,7 @@ U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL) {//Compile cc expression. You call the code. U8 *result; I64 size; - Bool old_trace=Btr(&cc->flags,CCf_OPT_TRACE_PRESENT); + Bool old_trace=Btr(&cc->flags,CCf_PASS_TRACE_PRESENT); COCPush(cc); COCInit(cc); if (PrsExpression(cc,NULL,FALSE)) { @@ -1123,7 +1123,7 @@ U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL) } else result=NULL; COCPop(cc); - BEqu(&cc->flags,CCf_OPT_TRACE_PRESENT,old_trace); + BEqu(&cc->flags,CCf_PASS_TRACE_PRESENT,old_trace); return result; } diff --git a/Compiler/PrsLib.CPP b/Compiler/PrsLib.CPP index 15e21f5..0e8a145 100644 --- a/Compiler/PrsLib.CPP +++ b/Compiler/PrsLib.CPP @@ -54,7 +54,7 @@ for one * and two fwd for two **. tempc->ptr_stars_cnt=i; tempc++; } - result->last_in_member_lst=&result->member_lst; + result->last_in_member_lst=&result->member_lst_and_root; result->size=0; return result; } @@ -71,7 +71,7 @@ CHashFun *PrsFunNew() tempf->ptr_stars_cnt=i; tempf++; } - result->last_in_member_lst=&result->member_lst; + result->last_in_member_lst=&result->member_lst_and_root; result->size=0; return result; } @@ -84,9 +84,9 @@ CIntermediateCode *ICAdd(CCmpCtrl *cc, tempi->ic_precedence=opcode_and_precedence.u16[1]; tempi->ic_data=arg; tempi->ic_class=c; - if (Bt(&cc->opts,OPTf_OPT_TRACE)) { - Bts(&cc->flags,CCf_OPT_TRACE_PRESENT); - flags|=ICF_TRACE; + if (cc->pass_trace) { + Bts(&cc->flags,CCf_PASS_TRACE_PRESENT); + flags|=ICF_PASS_TRACE; } if (cc->lock_cnt) flags|=ICF_LOCK; @@ -229,18 +229,18 @@ U0 COCDel(CCmpCtrl *cc,CCodeCtrl *coc) U0 COCHeaderPut(CCmpCtrl *cc,I64 pass,Bool put) { CIntermediateCode *tempi; - if (Bt(&cc->flags,CCf_OPT_TRACE_PRESENT)) { + if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT)) { if (put) { - if (Bt(&cc->otrace_mask,pass-1)) { + if (Bt(&cc->saved_pass_trace,pass-1)) { "$$IV,1$$Pass %d:$$IV,0$$\n",pass-1; tempi=cc->coc.coc_root.next; while (tempi->ic_code) { - if (tempi->ic_flags&ICF_TRACE) + if (tempi->ic_flags&ICF_PASS_TRACE) ICPut(cc,tempi); tempi=tempi->next; } } - } else if (Bt(&cc->otrace_mask,pass)) + } else if (Bt(&cc->saved_pass_trace,pass)) "$$IV,1$$Pass %d:$$IV,0$$\n",pass; } cc->pass=pass; @@ -303,7 +303,7 @@ U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDbgInfo **_dbg,I64 *_type) code_size=OptPass789A(cc,reg_offsets,result,_dbg); COCDel(cc,&cc->coc); - if (Bt(&cc->opts,OPTf_COMPILE_TRACE)) { + if (Bt(&cc->opts,OPTf_TRACE)) { if (cc->flags&CCF_AOT_COMPILE) { if (cc->aotc->seg_size==16) Un(result,code_size,16); @@ -315,5 +315,6 @@ U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDbgInfo **_dbg,I64 *_type) Un(result,code_size,64); } if (_code_size) *_code_size=code_size; + cc->saved_pass_trace=cc->pass_trace; return result; } diff --git a/Compiler/PrsStmt.CPP b/Compiler/PrsStmt.CPP index d11531c..25e6892 100644 --- a/Compiler/PrsStmt.CPP +++ b/Compiler/PrsStmt.CPP @@ -120,7 +120,7 @@ CHashFun *PrsFunJoin(CCmpCtrl *cc, tempf->arg_cnt=tempf->member_cnt; if (0arg_cnt<<3<=MAX_I16 && !Bt(&tempf->flags,Ff_DOT_DOT_DOT)) LBts(&tempf->flags,Ff_RET1); - tempm=tempf->member_lst; + tempm=tempf->member_lst_and_root; while (tempm) { tempm->offset+=16; //RBP+RETURN tempm=tempm->next; @@ -134,7 +134,7 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags) CMemberLst *tempm; CCodeMisc *saved_leave_label; I64 i,j,size,*r; - Bool old_ctrace; + Bool old_trace; cc->fun_lex_file=cc->lex_include_stk; cc->min_line=cc->max_line=cc->lex_include_stk->line_num; @@ -143,7 +143,7 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags) cc->htc.local_var_lst=cc->htc.fun=PrsFunJoin(cc,temp_return,name,fsp_flags); COCPush(cc); - Btr(&cc->flags,CCf_OPT_TRACE_PRESENT); + Btr(&cc->flags,CCf_PASS_TRACE_PRESENT); COCInit(cc); ICAdd(cc,IC_ENTER,0,0); saved_leave_label=cc->lb_leave; @@ -171,25 +171,25 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags) Free(r); } } else { - old_ctrace=Btr(&cc->opts,OPTf_COMPILE_TRACE); + old_trace=Btr(&cc->opts,OPTf_TRACE); cc->htc.fun->executable_addr=COCCompile(cc,&size, &cc->htc.fun->dbg_info,NULL); - if (old_ctrace) { - Bts(&cc->opts,OPTf_COMPILE_TRACE); + if (old_trace) { + Bts(&cc->opts,OPTf_TRACE); Un(cc->htc.fun->executable_addr,size,64); } SysSymImportsResolve(cc->htc.fun->str); } LBtr(&cc->htc.fun->flags,Cf_EXTERN); COCPop(cc); - tempm=cc->htc.fun->member_lst; + tempm=cc->htc.fun->member_lst_and_root; while (tempm) { if (tempm->flags & MLF_NO_UNUSED_WARN) { if (tempm->use_cnt>1&&StrCmp(tempm->str,"_anon_")) PrintWarn("Unneeded nounusedwarn\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n", cc->lex_include_stk->full_name,cc->lex_include_stk->line_num, tempm->str,cc->htc.fun->str); - } else if (!tempm->use_cnt && GetOpt(OPTf_WARN_UNUSED_VAR)) + } else if (!tempm->use_cnt && GetOption(OPTf_WARN_UNUSED_VAR)) PrintWarn("Unused var\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n", cc->lex_include_stk->full_name,cc->lex_include_stk->line_num, tempm->str,cc->htc.fun->str); diff --git a/Compiler/PrsVar.CPP b/Compiler/PrsVar.CPP index c400bfb..46f156f 100644 --- a/Compiler/PrsVar.CPP +++ b/Compiler/PrsVar.CPP @@ -11,7 +11,7 @@ U0 PrsVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,CArrayDim *tempad, Bool is_str; tempc=OptClassFwd(tempc); - if (tempm=tempc->member_lst) { + if (tempm=tempc->member_lst_and_root) { if (cc->token!='{') LexExcept(cc,"expecting '{' at "); LexPopNoRestore(cc); @@ -244,7 +244,7 @@ U0 PrsStaticInit(CCmpCtrl *cc,CMemberLst *tempm,I64 pass) } } -Bool PrsArrayDims(CCmpCtrl *cc,CArrayDim *dim) +Bool PrsArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim) {//Returns false on empty [] //dim->next!=0 for array CArrayDim *tempad,*tempad1; @@ -254,29 +254,32 @@ Bool PrsArrayDims(CCmpCtrl *cc,CArrayDim *dim) dim->cnt=0; dim->total_cnt=1; tempad1=&dim->next; - while (cc->token=='[') { - if (Lex(cc)==']' && !dim->next) { - j=-1; - result=FALSE; - } else { - if ((j=LexExpressionI64(cc))<0) - LexExcept(cc,"Invalid array size at "); - } - tempad1=&dim->next; - while (tempad1->next) { - tempad1->next->total_cnt*=j; - tempad1=tempad1->next; - } - tempad=MAlloc(sizeof(CArrayDim)); - tempad1->next=tempad; - tempad1=tempad; - tempad->next=NULL; - tempad->cnt=j; - tempad->total_cnt=1; - dim->total_cnt*=j; - if (cc->token!=']') - LexExcept(cc,"missing ']' at "); - Lex(cc); + if (cc->token=='[') { + if (mode.u8[1]==PRS1B_FUN_ARG) + LexExcept(cc,"No arrays in fun args at "); + do { + if (Lex(cc)==']' && !dim->next) { + j=-1; + result=FALSE; + } else { + if ((j=LexExpressionI64(cc))<0) + LexExcept(cc,"Invalid array size at "); + } + tempad1=&dim->next; + while (tempad1->next) { + tempad1->next->total_cnt*=j; + tempad1=tempad1->next; + } + tempad=MAlloc(sizeof(CArrayDim)); + tempad1->next=tempad; + tempad1=tempad; + tempad->next=NULL; + tempad->cnt=j; + tempad->total_cnt=1; + dim->total_cnt*=j; + if (cc->token!=']') + LexExcept(cc,"missing ']' at "); + } while (Lex(cc)=='['); } return result; } @@ -355,7 +358,7 @@ CHashClass *PrsType(CCmpCtrl *cc,CHashClass **_tempc1, fun_ptr=PrsFunJoin(cc,tempc1,NULL,fsp_flags)+ptr_stars_cnt; tempc1=cmp.internal_types[RT_PTR]+ptr_stars_cnt; } - if (!PrsArrayDims(cc,tempad) && cc->token!='=') { + if (!PrsArrayDims(cc,mode,tempad) && cc->token!='=') { tempc1++; tempad2=tempad->next->next; Free(tempad->next); diff --git a/Compiler/UAsm.CPP b/Compiler/UAsm.CPP index cf2f5a6..2e97a45 100644 --- a/Compiler/UAsm.CPP +++ b/Compiler/UAsm.CPP @@ -1,9 +1,9 @@ I64 InstEntriesCompare(CInstruction *tempi1,CInstruction *tempi2) { I64 i1,i2,j=0,result=0,oc_cnt1=tempi1->opcode_cnt,oc_cnt2=tempi2->opcode_cnt; - if (tempi1->flags&IEF_STI) + if (tempi1->flags&IEF_STI_LIKE) oc_cnt1--; - if (tempi2->flags&IEF_STI) + if (tempi2->flags&IEF_STI_LIKE) oc_cnt2--; while (TRUE) { if (jflags&IEF_STI) - i1=tempi1->opcode[j]>>3&7; - else - i1=tempi1->slash_val; - if (tempi2->flags&IEF_STI) - i2=tempi2->opcode[j]>>3&7; - else - i2=tempi2->slash_val; - if (result=i1-i2) return result; + if (tempi1->flags&IEF_STI_LIKE && tempi2->flags&IEF_STI_LIKE) + return tempi1->opcode[j]-tempi2->opcode[j]; - if (tempi1->flags&IEF_STI && tempi2->flags&IEF_STI) { - i1=tempi1->opcode[j]&7; - i2=tempi2->opcode[j]&7; - if (result=i1-i2) return result; - } + if (result=tempi1->flags&IEF_STI_LIKE - tempi2->flags&IEF_STI_LIKE) + return result; - if (tempi1->flags&IEF_STI) - return 1; + if (result=tempi1->slash_val-tempi2->slash_val) + return result; - if (tempi2->flags&IEF_STI) - return -1; - - i1=tempi1->flags & IEF_OP_SIZE32; - i2=tempi2->flags & IEF_OP_SIZE32; - if (result=i1-i2) return result; + if (result=tempi1->flags&IEF_OP_SIZE32 - tempi2->flags&IEF_OP_SIZE32) + return result; i1=Bt(&uasm.ins64_arg_mask,tempi1->arg1) || Bt(&uasm.ins64_arg_mask,tempi1->arg2); i2=Bt(&uasm.ins64_arg_mask,tempi2->arg1) || Bt(&uasm.ins64_arg_mask,tempi2->arg2); - if (result=i1-i2) return result; + if (result=i1-i2) + return result; - i1=tempi1->flags & IEF_48_REX; - i2=tempi2->flags & IEF_48_REX; - if (result=i1-i2) return result; + if (result=tempi1->flags&IEF_48_REX - tempi2->flags&IEF_48_REX) + return result; i1=tempi1->arg2==ARGT_IMM64 || tempi1->arg2==ARGT_UIMM64; i2=tempi2->arg2==ARGT_IMM64 || tempi2->arg2==ARGT_UIMM64; @@ -79,7 +65,7 @@ U0 DumpUAsmTables() CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) {//Binary Search - I64 i,j,n,m,k,a1,a2,o1,o2,oc_cnt,sv; + I64 i,j,n,m,k,a1,a2,o1,o2,oc_cnt; CInstruction *tempi,**table; i=0; if (seg_size==64) { @@ -95,11 +81,11 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) //DumpUAsmIns(tempi); m=0; n=0; - while (TRUE) { + while (TRUE) { //ief_compare_start a1=tempi->arg1; a2=tempi->arg2; oc_cnt=tempi->opcode_cnt; - if (tempi->flags&IEF_STI) + if (tempi->flags&IEF_STI_LIKE) oc_cnt--; if (nopcode[n++]; if (m=o1-o2) - break; - } else { - if (tempi->flags&IEF_STI) - sv=tempi->opcode[tempi->opcode_cnt-1]>>3&7; - else - sv=tempi->slash_val; - if (sv<8) { - if (!(m=ip[n]>>3&7-sv)) { - if ((Bt(&uasm.mem_arg_mask,a1) || Bt(&uasm.mem_arg_mask,a2)) && - ip[n]&0xC0==0xC0) { - m=1; - break; - } else if (tempi->flags&IEF_STI) { - if (ip[n]&0xC0!=0xC0) { - m=-1; - break; + goto ief_compare_done; + } else + nobound_switch (tempi->uasm_slash_val) { + case 0...7: + if (!(m=ip[n]>>3&7-tempi->slash_val)) { + if ((Bt(&uasm.mem_arg_mask,a1) || Bt(&uasm.mem_arg_mask,a2)) && + ip[n]&0xC0==0xC0) { + m=1; + goto ief_compare_done; + } + if (opsize==16) { + if (tempi->flags & IEF_OP_SIZE32) { + m=-1; + goto ief_compare_done; + } + } else { + if (tempi->flags & IEF_OP_SIZE16) { + m=1; + goto ief_compare_done; + } + } + if (opsize==64||a1==ARGT_M64||a2==ARGT_M64) { + if (!Bt(&uasm.ins64_arg_mask,a1)&& + !Bt(&uasm.ins64_arg_mask,a2)&&!(tempi->flags&IEF_48_REX)) + m=1; + } else { + if (Bt(&uasm.ins64_arg_mask,a1)||Bt(&uasm.ins64_arg_mask,a2) || + tempi->flags&IEF_48_REX) + m=-1; } - if (a1!=ARGT_STI && a2!=ARGT_STI) - m=ip[n]&0x7-tempi->opcode[tempi->opcode_cnt-1]&7; - break; } + goto ief_compare_done; + case SV_I_REG: + m=ip[n]>>3-tempi->opcode[tempi->opcode_cnt-1]>>3; + goto ief_compare_done; + case SV_STI_LIKE: + if (!(m=ip[n]>>3-tempi->opcode[tempi->opcode_cnt-1]>>3)) + m=ip[n]-tempi->opcode[tempi->opcode_cnt-1]; + goto ief_compare_done; + case SV_R_REG: + case SV_NONE: + m=0; if (opsize==16) { if (tempi->flags & IEF_OP_SIZE32) { m=-1; - break; + goto ief_compare_done; } } else { if (tempi->flags & IEF_OP_SIZE16) { m=1; - break; + goto ief_compare_done; } } - if (opsize==64||a1==ARGT_M64||a2==ARGT_M64) { - if (!Bt(&uasm.ins64_arg_mask,a1)&& !Bt(&uasm.ins64_arg_mask,a2) && - !(tempi->flags&IEF_48_REX)) + if (opsize==64 || a1==ARGT_M64 || a2==ARGT_M64) { + if (!Bt(&uasm.ins64_arg_mask,a1) && + !Bt(&uasm.ins64_arg_mask,a2) && + !(tempi->flags&IEF_48_REX)&& + !(a2==ARGT_NO && + (ARGT_UIMM8<=a1<=ARGT_UIMM64 || ARGT_IMM8<=a1<=ARGT_IMM64))) m=1; + else if (tempi->arg2==ARGT_IMM64 || tempi->arg2==ARGT_UIMM64) { + if (a2!=ARGT_IMM64&&a2!=ARGT_UIMM64) + m=1; + } else if (a2==ARGT_IMM64||a2==ARGT_UIMM64) + m=-1; } else { if (Bt(&uasm.ins64_arg_mask,a1) || Bt(&uasm.ins64_arg_mask,a2) || tempi->flags&IEF_48_REX) m=-1; } - } - } else { - m=0; - if (opsize==16) { - if (tempi->flags & IEF_OP_SIZE32) { - m=-1; - break; - } - } else { - if (tempi->flags & IEF_OP_SIZE16) { - m=1; - break; - } - } - if (opsize==64 || a1==ARGT_M64 || a2==ARGT_M64) { - if (!Bt(&uasm.ins64_arg_mask,a1) && !Bt(&uasm.ins64_arg_mask,a2) && - !(tempi->flags&IEF_48_REX)&& - !(a2==ARGT_NO && - (ARGT_UIMM8<=a1<=ARGT_UIMM64 || - ARGT_IMM8<=a1<=ARGT_IMM64 ) )) - m=1; - else if (tempi->arg2==ARGT_IMM64 || tempi->arg2==ARGT_UIMM64) { - if (a2!=ARGT_IMM64&&a2!=ARGT_UIMM64) - m=1; - } else if (a2==ARGT_IMM64||a2==ARGT_UIMM64) - m=-1; - } else { - if (Bt(&uasm.ins64_arg_mask,a1) || Bt(&uasm.ins64_arg_mask,a2) || - tempi->flags&IEF_48_REX) - m=-1; - } + goto ief_compare_done; } - break; - } } - +ief_compare_done: if (m>0) { if (k==i) { k=j; diff --git a/Demo/AcctExample/AdamKeyPlugIns.CPP b/Demo/AcctExample/AdamKeyPlugIns.CPP deleted file mode 100644 index c9c12a4..0000000 --- a/Demo/AcctExample/AdamKeyPlugIns.CPP +++ /dev/null @@ -1,271 +0,0 @@ -//Place this file in /Home and change -//anything you want. - -U0 InsTime() -{ - CDate cdt; - cdt=Now; - "$$IV,1$$----%D %T----$$IV,0$$\n",cdt,cdt; -} - -U0 InsFileLink() -{ - U8 *st=PopUpPickFile; - st[0]=':'; //This is my personal code, not production. LOL - "$$LK,\"%s\",A=\"FI:%s\"$$",st+2,st; - Free(st); -} - -U0 InsDirLinks() -{ - CDirEntry *tempde,*tempde1; - U8 *st=PopUpPickDir,*st2; - st[0]=':'; //This is my personal code, not production. LOL - st2=MStrPrint("%s/*",st); - tempde=tempde1=FilesFind(st2,FUF_JUST_FILES); - while (tempde) { - tempde->full_name[0]=':'; - "$$LK,\"%s\",A=\"FI:%s\"$$\n",tempde->full_name+2,tempde->full_name; - tempde=tempde->next; - } - DirTreeDel(tempde1); - Free(st); - Free(st2); -} - -Bool MyPutKey(I64 ch,I64 sc) -{//ch=ASCII; sc=scan_code - - //See $LK,"Char",A="HI:Char"$ for definition of scan codes. - //See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.TXT"$. - //See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. - - //You can customize keys. This routine - //is called before the main editor - //key handler $LK,"DocPutKey",A="MN:DocPutKey"$(). - //You can intercept any key. - - //Return TRUE if you completely - //handled the key. - I64 i,sc2=sc.u8[0]; - U8 *st1,*st2; - - if (SC_F1<=sc2<=SC_F10 && - sc&SCF_ALT && - !(sc & SCF_CTRL)) { - switch (sc2) { - case SC_F1: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTPURPLE"); - else - KeyDescSet("Dollar/PURPLE"); - } else { - if (sc & SCF_SHIFT) - "$$LTPURPLE$$"; - else - "$$PURPLE$$"; - } - break; - case SC_F2: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTRED"); - else - KeyDescSet("Dollar/RED"); - } else { - if (sc & SCF_SHIFT) - "$$LTRED$$"; - else - "$$RED$$"; - } - break; - case SC_F3: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/LTGREEN"); - else - KeyDescSet("Dollar/GREEN"); - } else { - if (sc & SCF_SHIFT) - "$$LTGREEN$$"; - else - "$$GREEN$$"; - } - break; - case SC_F4: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Dollar/Default Color"); - else - KeyDescSet("Dollar/BLUE"); - } else { - if (sc & SCF_SHIFT) - "$$FG$$"; - else - "$$BLUE$$"; - } - break; - case SC_F6: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Misc/Ins My URL"); - else - KeyDescSet("Misc/Ins Datetime"); - } else { - if (sc & SCF_SHIFT) - InsMyURL; - else - InsTime; - } - break; - case SC_F7: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("God Book Passage"); - else - KeyDescSet("God Doodle File"); - } else { -//$LK,"::/Adam/God/HSNotes.TXT"$ - if (sc & SCF_SHIFT) { - FifoU8Flush(god.fifo); - GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); - GodBooksPassage("C:/Home/Wb2/Files/Text/*"); - } else { - st1=PopUpPickFile; - st2=FileRead(st1); - GodDoodle(st2); - Free(st2); - Free(st1); - } - } - break; - case SC_F8: - if (sc&SCF_KEY_DESC) { - if (sc & SCF_SHIFT) - KeyDescSet("Misc/Ins Dir Links"); - else - KeyDescSet("Misc/Ins File Link"); - } else { - if (sc & SCF_SHIFT) - InsDirLinks; - else - InsFileLink; - } - break; - } - return TRUE; - } else { - if (!(sc & SCF_CTRL)) { - if (sc & SCF_ALT) { - switch (ch) { - case 'a': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/AutoComplete(ON);"); - else - AutoComplete(ON); - return TRUE; - case 'A': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/AutoComplete;"); - else - AutoComplete; - return TRUE; - - case 'h': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Tile Horizontally"); - else - WinTileHorz; - return TRUE; - case 'm': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Maximize"); - else { - WinMax; - WinBorder; - } - return TRUE; - case 'v': - if (sc&SCF_KEY_DESC) - KeyDescSet("Win/Tile Vertically"); - else - WinTileVert; - return TRUE; - case 'V': - if (sc&SCF_KEY_DESC) - KeyDescSet("Sys/Frame Grabber Toggle"); - else - FrameGrabberToggle; - return TRUE; - - case 'l': - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Put Link to Cur Pos on Clipboard"); - else { - ClipboardDel; - st1=FileNameAbs(BIBLE_FILENAME); - st2=FileNameAbs(DocPut->filename.name); - if (!StrCmp(st1,st2)) { - Free(st1); - st1=BibleLine2Verse(DocPut->cur_entry->y+1,','); - DocPrint(sys_clipboard_doc,"$$LK,\"BF:%s\"$$",st1); - } else - DocPrint(sys_clipboard_doc,"$$LK,\"FL:%s,%d\"$$", - st2,DocPut->cur_entry->y+1); - Free(st1); - Free(st2); - } - return TRUE; - case 'L': - if (sc&SCF_KEY_DESC) - KeyDescSet("Edit/Place Anchor, Put Link to Clipboard"); - else { - i=RandU32; - ClipboardDel; - DocPrint(sys_clipboard_doc,"$$LK,\"\",A=\"FA:%s,ANC%d\"$$", - DocPut->filename.name,i); - "$$AN,\"\",A=\"ANC%d\"$$",i; - } - return TRUE; - - //Ins your own ALT-key plug-ins - case 'b': - if (sc&SCF_KEY_DESC) - KeyDescSet("Cmd/Jump to Bad Code"); - else //$LK,"::/Adam/God/HSNotes.TXT"$ - BadCodeJump; - return TRUE; - - case 'g': - if (sc&SCF_KEY_DESC) - KeyDescSet("BlogScreenShot"); - else - BlogScreenShot; - return TRUE; - - case 'p': - if (sc&SCF_KEY_DESC) - KeyDescSet("JukeBox(TAD)"); - else - JukeBox("::/Home/Psalmody"); - return TRUE; - case 'P': - if (sc&SCF_KEY_DESC) - KeyDescSet("JukeBox(Examples)"); - else - JukeBox("::/Apps/Psalmody/Examples"); - return TRUE; - } - } - } - } - return FALSE; -} - -Bool MyPutS(U8 *) -{ - return FALSE; -} - -KeyDevAdd(&MyPutKey,&MyPutS,0x20000000,TRUE); diff --git a/Demo/AcctExample/DoOnce.CPP b/Demo/AcctExample/DoOnce.CPP index 66abf99..00a4034 100644 --- a/Demo/AcctExample/DoOnce.CPP +++ b/Demo/AcctExample/DoOnce.CPP @@ -3,7 +3,7 @@ //This file is executed by the //first terminal window upon start-up. -//See $LK,"DoOnce",A="FF:/Home/AdamSys.CPP,DoOnce"$ and $LK,"Home Files",A="FF:::/Doc/GuideLines.TXT,/Home Files"$. +//See $LK,"DoOnce",A="FF:/Home/HomeSys.CPP,DoOnce"$ and $LK,"Home Files",A="FF:::/Doc/GuideLines.TXT,/Home Files"$. // Type("::/Doc/Customize.TXT"); diff --git a/Demo/AcctExample/HomeKeyPlugIns.CPP b/Demo/AcctExample/HomeKeyPlugIns.CPP new file mode 100644 index 0000000..d649bbe --- /dev/null +++ b/Demo/AcctExample/HomeKeyPlugIns.CPP @@ -0,0 +1,285 @@ +//Place this file in /Home and change +//anything you want. + +U0 InsTime() +{ + CDate cdt; + cdt=Now; + "$$IV,1$$----%D %T----$$IV,0$$\n",cdt,cdt; +} + +U0 InsFileLink() +{ + U8 *st=PopUpPickFile; + st[0]=':'; //This is my personal code, not production. LOL + "$$LK,\"%s\",A=\"FI:%s\"$$",st+2,st; + Free(st); +} + +U0 InsDirLinks() +{ + CDirEntry *tempde,*tempde1; + U8 *st=PopUpPickDir,*st2; + st[0]=':'; //This is my personal code, not production. LOL + st2=MStrPrint("%s/*",st); + tempde=tempde1=FilesFind(st2,FUF_JUST_FILES); + while (tempde) { + tempde->full_name[0]=':'; + "$$LK,\"%s\",A=\"FI:%s\"$$\n",tempde->full_name+2,tempde->full_name; + tempde=tempde->next; + } + DirTreeDel(tempde1); + Free(st); + Free(st2); +} + +Bool MyPutKey(I64 ch,I64 sc) +{//ch=ASCII; sc=scan_code + + //See $LK,"Char",A="HI:Char"$ for definition of scan codes. + //See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.TXT"$. + //See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. + + //You can customize keys. This routine + //is called before the main editor + //key handler $LK,"DocPutKey",A="MN:DocPutKey"$(). + //You can intercept any key. + + //Return TRUE if you completely + //handled the key. + I64 i; + U8 *st1,*st2; + if (sc&SCF_ALT && !(sc&SCF_CTRL)) { + switch (ch) { + case 0: + switch (sc.u8[0]) { + case SC_F1: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTPURPLE"); + else + "$$LTPURPLE$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /PURPLE"); + else + "$$PURPLE$$"; + } + return TRUE; + case SC_F2: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTRED"); + else + "$$LTRED$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /RED"); + else + "$$RED$$"; + } + return TRUE; + case SC_F3: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTGREEN"); + else + "$$LTGREEN$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /GREEN"); + else + "$$GREEN$$"; + } + return TRUE; + case SC_F4: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Default Color"); + else + "$$FG$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /BLUE"); + else + "$$BLUE$$"; + } + return TRUE; + case SC_F6: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Ins My URL"); + else + InsMyURL; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Ins Datetime"); + else + InsTime; + } + return TRUE; + case SC_F7: +//$LK,"::/Adam/God/HSNotes.TXT"$ + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /God Book Passage"); + else { + FifoU8Flush(god.fifo); + GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); + GodBooksPassage("C:/Home/Wb2/Files/Text/*"); + } + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /God Doodle File"); + else { + st1=PopUpPickFile; + st2=FileRead(st1); + GodDoodle(st2); + Free(st2); + Free(st1); + } + } + return TRUE; + case SC_F8: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Ins Dir Links"); + else + InsDirLinks; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Ins File Link"); + else + InsFileLink; + } + return TRUE; + } + break; + case 'a': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /AutoComplete On"); + else + AutoComplete(ON); + return TRUE; + case 'A': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /AutoComplete Off"); + else + AutoComplete; + return TRUE; + case 'h': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Tile Horizontally"); + else + WinTileHorz; + return TRUE; + case 'm': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Maximize"); + else { + WinBorder; + WinMax; + } + return TRUE; + case 'v': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Tile Vertically"); + else + WinTileVert; + return TRUE; + case 'V': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Frame Grabber Toggle"); + else + FrameGrabberToggle; + return TRUE; + case 'l': + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Put Link to Cur Pos on Clipboard"); + else { + ClipboardDel; + st1=FileNameAbs(BIBLE_FILENAME); + st2=FileNameAbs(DocPut->filename.name); + if (!StrCmp(st1,st2)) { + Free(st1); + st1=BibleLine2Verse(DocPut->cur_entry->y+1,','); + DocPrint(sys_clipboard_doc,"$$LK,\"BF:%s\"$$",st1); + } else + DocPrint(sys_clipboard_doc,"$$LK,\"FL:%s,%d\"$$", + st2,DocPut->cur_entry->y+1); + Free(st1); + Free(st2); + } + return TRUE; + case 'L': + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Place Anchor, Put Link to Clipboard"); + else { + i=RandU32; + ClipboardDel; + DocPrint(sys_clipboard_doc,"$$LK,\"\",A=\"FA:%s,ANC%d\"$$", + DocPut->filename.name,i); + "$$AN,\"\",A=\"ANC%d\"$$",i; + } + return TRUE; + + //Ins your own ALT-key plug-ins + case '1': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /ã"); + else + 'ã'; + return TRUE; + case '2': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /é"); + else + 'é'; + return TRUE; + case '3': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /è"); + else + 'è'; + return TRUE; + case '4': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /ê"); + else + 'ê'; + return TRUE; + case 'b': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Jump to Bad Code"); + else //$LK,"::/Adam/God/HSNotes.TXT"$ + BadCodeJump; + return TRUE; + case 'g': + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/BlogScreenShot"); + else + BlogScreenShot; + return TRUE; + case 'p': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /JukeBox(TAD)"); + else + JukeBox("::/Home/Wb2/Files/Psalmody"); + return TRUE; + case 'P': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /JukeBox(Examples)"); + else + JukeBox("::/Apps/Psalmody/Examples"); + return TRUE; + } + } + return FALSE; +} + +Bool MyPutS(U8 *) +{ + return FALSE; +} + +KeyDevAdd(&MyPutKey,&MyPutS,0x20000000,TRUE); diff --git a/Demo/AcctExample/AdamLocalize.CPP b/Demo/AcctExample/HomeLocalize.CPP similarity index 89% rename from Demo/AcctExample/AdamLocalize.CPP rename to Demo/AcctExample/HomeLocalize.CPP index 82d7ab7..3b63013 100644 --- a/Demo/AcctExample/AdamLocalize.CPP +++ b/Demo/AcctExample/HomeLocalize.CPP @@ -1,8 +1,8 @@ //Place this file in /Home and change //anything you want. -OptOn(OPTf_WARN_PAREN); -OptOn(OPTf_WARN_DUP_TYPES); +Option(OPTf_WARN_PAREN,ON); +Option(OPTf_WARN_DUP_TYPES,ON); KbdTypeMatic(0); diff --git a/Demo/AcctExample/AdamPkgs.CPP b/Demo/AcctExample/HomePkgs.CPP similarity index 86% rename from Demo/AcctExample/AdamPkgs.CPP rename to Demo/AcctExample/HomePkgs.CPP index 00a6003..29df2b5 100644 --- a/Demo/AcctExample/AdamPkgs.CPP +++ b/Demo/AcctExample/HomePkgs.CPP @@ -1,11 +1,10 @@ //Place this file in /Home and change //anything you want. -#include "::/AdamPkgs" +#include "::/HomePkgs" #include "::/Apps/Psalmody/Load" #include "::/Demo/WebLogExample/WebLogRep" Cd("::/Home");; -#include "::/Misc/ToDolDoc" #include "::/Home/TOSIDComputer" #include "::/Home/TOSCfg" #include "::/Home/TOSMisc" diff --git a/Demo/AcctExample/AdamSys.CPP b/Demo/AcctExample/HomeSys.CPP similarity index 97% rename from Demo/AcctExample/AdamSys.CPP rename to Demo/AcctExample/HomeSys.CPP index 0822f16..f159771 100644 --- a/Demo/AcctExample/AdamSys.CPP +++ b/Demo/AcctExample/HomeSys.CPP @@ -8,7 +8,6 @@ U0 UserStartUp() LBts(&Fs->display_flags,DISPLAYf_SHOW); WinToTop; WinZBufUpdate; - Preempt(ON); Dir; switch (tos_cid) { case CID_DFT: @@ -25,7 +24,6 @@ U0 SrvStartUp() LBts(&Fs->display_flags,DISPLAYf_SHOW); WinToTop; WinZBufUpdate; - Preempt(ON); } CTask *user1,*user2; diff --git a/Demo/AcctExample/PersonalMenu.TXT b/Demo/AcctExample/PersonalMenu.TXT index b96c4b970409dce17110b4d30b36854fc5fb52db..abd789ebf3cb2fa0164a5744c6418b70134ee8d1 100644 GIT binary patch delta 12922 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 VRtSoMbH4Nq=t2X>v=Y!9E&u}<)~o;k delta 12827 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�Lei$GBAL( zK8WV12lcK%GLUW|JBZ1^0MY_t!DtX0hPffeGeA^<3-WgaI>?6 zO$KWLi@*p_ADROkxS;;ND`*i2NQxcG07V}-C_#c?44Mt+;DCsMEdy%?83ST~>B)g{ zlH%+jSAaqv#sEoiu!H0zz@~!bAS?!`q4*N<QjR(|) zJ@xnV^046(mA$UocG_~nO^wB{+K1fRD z=7zGM6ik$$dIq=wU@Z)j1wSZEHu%6-&yA`T6wP22pkxSUfC2){fD$O`!KoD{0hR%Y zfYKLKkQ>>2&=@6H9xTZKl7iTe5Cr7}uq=o`7zpLT)PW>GhJl1ZrhsWE11tv;fG|KL z)DaLSR2kHb5c|PmU}>)x|-FtC9D z10PIKfR7I(zy=ZL<71m#_+9~3kc|y22wEBhQpzy7`?fwK5#;1YQ9{!Vm>A{AV<yXQA0!4?2o9`Qk6x$q#<;p0lxm?FTCm_65}hY-|k7kjMl}fm{o5JcvZaAp1ZDz?6fH zf+~TSD9gabz{Uo0C@AK^214aQexH2tm#8#I9&7-J0J|2d0&Ie4Jp;&@3=AM;AiJQF zpm0T23=sx7mVpf%DqsyDO%NFz>OlblG9N6>#>N2F3e~{?HlLAe^2G(h5)d(vd8kT2 z38bl3Xgvjt2O7tLvmp!y27Y7>AoGz7g)+h3Wnjn#(fs@< zIvCiIwL>jn;O7S|Q)6dm=jZ2VU`N&fPIVBgK_tim1_sbVBd`vB5CCyODOg+*EDLIK zfXo3&vGX%9@UydnWktZU4E*d2;Pp))D?#nb-(u1b7lEX?xET1ssgQvmOoKFvfMObE zH&_9<&CSoxz=h@+E-t7^kPwF(2sRYtDG&yk1jEoMgHd4JAT=O!!8ACm;bXp_#K6YD zzy(XLPz%@@Kn?;~g6SY|DhHba(hRWxq7AGT9=f2If?;@sK^4MU_He}@qd+YmPzZxC zJjTE|15}WJBN7}#AQm`+K$<|oDJI3hkBDz}P&k8P2uT_g_8{XyT0yA+YA@Ju2?ThYJR>U%W`Tnpq6cCfM$yg+R=0WjrZ8y$6tD!1 diff --git a/Demo/AcctExample/PersonalNotes.TXT b/Demo/AcctExample/PersonalNotes.TXT index 0155020..5ef95cd 100644 --- a/Demo/AcctExample/PersonalNotes.TXT +++ b/Demo/AcctExample/PersonalNotes.TXT @@ -1,19 +1,35 @@ -$WW,1$* Clean-up $LK,"FileNameAbs",A="MN:FileNameAbs"$(). +$WW,1$* I'm going to redo all my videos and make them more professional. + +* $TX,"Kruskal-Wallis_one-way_analysis_of_variance",HTML="http://en.wikipedia.org/wiki/Kruskal-Wallis_one-way_analysis_of_variance"$ disk sector allocation? + +* Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$. + +* 8/20/2015 TAD8, Tour1, then Tour TestSuite was missing #include "TestSuite". + +* Clean-up $LK,"FileNameAbs",A="MN:FileNameAbs"$(). * Get rid of having two terms and pick one, "Disk" and "BlkDev"? I don't think so. (Probably not.) +* Make Bible into Tree Branches Collapsed. + * God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$ * $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. * Entering a '$$' in text entry -* Clean-up ASCII-127 delete. +* Should these be moved into $LK,"CHashClass",A="MN:CHashClass"$ from $LK,"CMemberLst",A="MN:CMemberLst"$ and $LK,"CHashGlblVar",A="MN:CHashGlblVar"$? + CArrayDim dim; + CHashFun *fun_ptr; + +* Clean-up ASCII-127 delete char. * $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(st); With st="\n\\"; +* 8/2/2015 VMware start-up. Probably multicore. + * 1/1/2015 Bug messing-up keyboard, like no CTRL key. Was working on Sprites. -* 1/?/2015 Macro select in Menu did not go to shell. +* 1/?/2015,8/10/2015 Macro select in Menu did not go to shell. No: I think CTRL-M twice. * $LK,"BMPRLE4To",A="MN:BMPRLE4To"$() has files_size too big by 108. Did I fix it? @@ -25,6 +41,12 @@ $WW,1$* Clean-up $LK,"FileNameAbs",A="MN:FileNameAbs"$(). * Add Redo to editor. +* Perhaps, links to self document if empty file name? $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ + +* Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string. + +* $LK,"Type",A="MN:Type"$() doesn't work in $LK,"Raw",A="MN:Raw"$() mode. + * PSect does not scan all task tables. * No Compiler Warning: dc->palette48.r =palette24[i].r<<8; @@ -54,7 +76,6 @@ $WW,1$* Clean-up $LK,"FileNameAbs",A="MN:FileNameAbs"$(). * $$CM+LE+RE is nasty * FlatTop is torpedo, not bombs. -* BomberGolf is weird concept? * Maybe, 3x3 instead of 4x4 matrices. @@ -137,8 +158,6 @@ $LK,"::/Demo/Lectures/FixedPointAdvanced.CPP"$. * clean-up addDev pmt -* Might want to convert some Preempt() to Cli - * $LK,"Plain",A="MN:Plain"$() might be better not saving $LK,"CH_CURSOR",A="MN:CH_CURSOR"$. * TRANSPARENT might not work with line ROPF_DITHER @@ -200,13 +219,13 @@ Works for $LK,"IPSet",A="MN:IPSet"$(), though. * Add local vars to sym table in $LK,"Dbg",A="MN:Dbg"$()? (maybe) -* $LK,"Bible sized nodes",A="FF:::/Adam/DolDoc/DocRecalcB.CPP,->tag+i"$ -* Mouseinstall throws exceptions, doesn't work, investigate Mouse $LK,"0x9FC30",A="FF:::/Kernel/KbdMouse/Mouse.CPP,9FC"$ +* $LK,"Bible sized nodes",A="FF:::/Adam/DolDoc/DocRecalc.CPP,->tag+i"$ +* Mouseinstall throws exceptions, doesn't work, investigate Mouse $LK,"0x9FC30",A="FF:::/Kernel/SerialDev/Mouse.CPP,9FC"$ * get kbd lights working. * Might have issue with compiler exceptions and restoring lex.hash tables. * Generates two compiler error messages for expressions in statements. * release semaphores or break lock sema,usb_td -* Fix Mom's secondary CD-ROM, dad's primary +* Fix Mom's secondary CD/DVD, dad's primary * pmtstr in install didn't like focus change *$FG,2$U0 Main() @@ -234,7 +253,6 @@ short names. * Maybe convert graphics to float * Warn unnecessary typecast * compiler F32 -* preempt(OFF) during graphic clipping? * compiler optimization heap_glbls with added offset * Might make FAT32 read in contiguous chunks. * make Clamp(),Min(),Max() asm routines. @@ -267,7 +285,6 @@ registry-like routines... or registry I guess. * new HolyC language features * better debugging -* Too much preemption turned off? * Look for mem leaks. * Move stuff out of Kernel module. @@ -311,32 +328,77 @@ assignments. Is ShiftNoPush fully implemented? * sort options for findfiles * Maybe, get rid of $LK,"0x20000",A="FF:::/Compiler/CMain.CPP,0x20000"$ in compiler. -It is love I desire: $LK,"Hosea,6:6",A="BF:Hosea,6:6"$ $TX,"Hosea 6:6",HTML="http://www.biblegateway.com/verse/en/Hosea%206:6"$ +================================================================================ +It is love I desire: $TX,"Hosea 6:6",HTML="http://www.biblegateway.com/verse/en/Hosea%206:6"$ +Offer a sacrifice of praise: $TX,"Hebrews 13:15",HTML="http://www.biblegateway.com/verse/en/Hebrews%2013:15"$ +Do I drink blood of goats? Offer praise: $TX,"Psalms 50:14",HTML="http://www.biblegateway.com/verse/en/Psalms%2050:14"$ +Runner's Stride: $TX,"Psalms 147:10",HTML="http://www.biblegateway.com/verse/en/Psalms%20147:10"$ -Offer a sacrifice of praise: $LK,"Hebrews,13:15",A="BF:Hebrews,13:15"$ $TX,"Hebrews 13:15",HTML="http://www.biblegateway.com/verse/en/Hebrews%2013:15"$ - -Do I drink blood of goats? Offer praise: $LK,"Psalms,50:14",A="BF:Psalms,50:14"$ $TX,"Psalms 50:14",HTML="http://www.biblegateway.com/verse/en/Psalms%2050:14"$ - -Runner's Stride: $LK,"Psalms,147:10",A="BF:Psalms,147:10"$ $TX,"Psalms 147:10",HTML="http://www.biblegateway.com/verse/en/Psalms%20147:10"$ - -Buckling Armor: $LK,"1 Kings,20:11",A="BF:1 Kings,20:11"$ $TX,"1 Kings 20:11",HTML="http://www.biblegateway.com/verse/en/1%20Kings%2020:11"$ +$HC,""$ +Buckling Armor: $TX,"1 Kings 20:11",HTML="http://www.biblegateway.com/verse/en/1%20Kings%2020:11"$ +Lot cast in the lap: $TX,"Proverbs 16:33",HTML="http://www.biblegateway.com/verse/en/Proverbs%2016:33"$ +Lord does not repeat: $TX,"Job 33:14",HTML="http://www.biblegateway.com/verse/en/Job%2033:14"$ +Offer only in approved place: $TX,"Deuteronomy 12:13-18",HTML="http://www.biblegateway.com/passage/?search=Deuteronomy%2012:13-18&version=NIV"$ +Jesus' zeal for the Temple: $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$ >lspci -v +Size:$TX,"17294 KB",D="DD_TEMPLEOSCD_K_SIZE"$ -Size:$TX,"17594 KB",D="DD_TEMPLEOSCD_K_SIZE"$ +$HC,""$ +8:11 Behold, the days come, saith the Lord GOD, that I will send a +famine in the land, not a famine of bread, nor a thirst for water, but +of hearing the words of the LORD: 8:12 And they shall wander from sea +to sea, and from the north even to the east, they shall run to and fro +to seek the word of the LORD, and shall not find it. -$TX,"Let me Google NIST Random Beacon",HTML="http://lmgtfy.com?q=NIST+random+beacon"$ +TempleOS Logo +$HC,"\"\""$ + +Contact +$HC,""$ + +Black Knight +$HC,""$ + +Metallica: Creeping Death +$HC,""$ + +Neil Degrasse Tyson: Get of of their Way +$HC,""$ +Neil Degrasse Tyson: Girl +$HC,""$ Commodore 64 Basic/Assembly $HC,""$ +Red Fang: Prehistoric Dog +$HC,""$ + Bill Gates Predictions $HC,""$ Cop tying shoe: (After drive-by shooting, God said kid was not innocent, LOL.) $HC,"\"\""$ +Frontier Psychiatrist +$HC,""$ +$HC,""$ + +Morning has Broken +$HC,""$ + +Icarus +$HC,""$ + +Zombie Game +$HC,""$ +Sports Game +$HC,""$ + + $TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$ +$TX,"PCI Interrupt Routing",HTML="http://forum.osdev.org/viewtopic.php?f=1&t=29558"$ +$TX,"Lamp Shades",HTML="http://www.lampsplus.com/products/lamp-shades"$ $TX,"My Bookmarks",HTML="http://www.templeos.org/Wb/Home/Wb2/Files/Bookmarks"$ $TX,"Perfect Coin Toss",HTML="http://hackaday.com/2014/12/19/nist-randomness-beacon/"$ $TX,"Top 100 Movies",HTML="http://www.afi.com/100years/movies10.aspx"$ @@ -348,6 +410,7 @@ $TX,"KeyPeele#1",HTML="http://www.youtube.com/watch?v=Dd7FixvoKBw"$ $TX,"KeyPeele#2",HTML="http://www.youtube.com/watch?v=VHG_Gv_zLY4"$ $TX,"ThePrisoner",HTML="http://www.youtube.com/watch?v=HRPDO63rI1E"$ $TX,"Bible with LineNums",HTML="http://www.templeos.org/files/NumBible.TXT"$ +$TX,"Security at NIST",HTML="http://csrc.nist.gov/publications/nistpubs/800-30-rev1/sp800_30_r1.pdf"$ $TX,"WestWorld",HTML="http://www.youtube.com/watch?v=LcL3eP0Hfy4"$ $TX,"Picard:FourLights",HTML="http://www.youtube.com/watch?v=o_eSwq1ewsU"$ $TX,"Dwight:NerdTorture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$ @@ -362,3 +425,5 @@ $TX,"BBC_Five_Live",HTML="http://www.bbc.co.uk/radio/player/bbc_radio_five_live" $TX,"KNPR",HTML="http://www.knpr.org"$ $TX,"C64 Users Guide",HTML="http://www.commodore.ca/manuals/c64_users_guide/c64-users_guide.htm"$ $TX,"C64 Programmers Reference Guide",HTML="http://www.commodore.ca/manuals/c64_programmers_reference/c64-programmers_reference.htm"$ +$TX,"8-Bit Japanese Pixel Art",HTML="http://designmadeinjapan.com/magazine/illustration-icon/tumblr-gifs-of-japanese-life"$ +$TX,"Resperdal Shortens Life",HTML="http://factmed.com/study-RISPERDAL-causing-LIFE EXPECTANCY SHORTENED.php"$ diff --git a/Demo/AcctExample/Registry.CPP b/Demo/AcctExample/Registry.CPP index f923f6e..4f9bf74 100644 --- a/Demo/AcctExample/Registry.CPP +++ b/Demo/AcctExample/Registry.CPP @@ -2,16 +2,14 @@ $TR-UL,"Adam"$ $ID,2$$TR,"SysMsgFlags"$ $ID,2$sys_msg_flags[0]=0xFF; $ID,-2$$TR,"SysRegVer"$ -$ID,2$registry_version=3.070; -$ID,-2$$ID,-2$$TR-C-UL,"TempleOS"$ -$ID,2$$TR,"CircleTrace"$ -$ID,2$F64 best_score=4.9425; -$ID,-2$$TR,"TOS"$ +$ID,2$registry_version=3.110; +$ID,-2$$ID,-2$$TR-UL,"TempleOS"$ +$ID,2$$TR,"TOS"$ $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; $ID,-2$$TR,"DiningStars"$ $ID,2$F64 best_score=9999.0000; $ID,-2$$TR,"BlackDiamond"$ -$ID,2$I64 best_score=1; +$ID,2$I64 best_score=9; $ID,-2$$TR,"EagleDive"$ $ID,2$I64 best_score=4; $ID,-2$$TR,"DunGen"$ @@ -21,25 +19,27 @@ $ID,2$F64 best_score=33.8405; $ID,-2$$TR,"ZoneOut"$ $ID,2$F64 best_score=50.3318; $ID,-2$$TR,"Varoom"$ -$ID,2$F64 best_score=11.8623; -$ID,-2$$TR,"BugBird"$ -$ID,2$F64 best_score=18.2332; +$ID,2$F64 best_score=46.2643; +$ID,-2$$TR,"FlapBat"$ +$ID,2$F64 best_score=16.4090; $ID,-2$$TR,"TimeOut"$ -$ID,2$I64 best_score=21532; +$ID,2$I64 best_score=22202; $ID,-2$$TR,"RawHide"$ -$ID,2$F64 best_score=81.1088; +$ID,2$F64 best_score=96.1279; $ID,-2$$TR,"KeepAway"$ $ID,2$I64 best_score0=0,best_score1=9999; -$ID,-2$$TR,"XCaliber"$ -$ID,2$I64 best_score=248; -I64 msg_flags=1; $ID,-2$$TR,"Wenceslas"$ $ID,2$F64 best_score=49.8074; $ID,-2$$TR,"BomberGolf"$ -$ID,2$I64 best_score=32; +$ID,2$I64 best_score=175; +$ID,-2$$TR,"XCaliber"$ +$ID,2$I64 best_score=248; +I64 msg_flags=1; +$ID,-2$$TR,"CircleTrace"$ +$ID,2$F64 best_score=4.9425; $ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,2$$TR,"Game1"$ -$ID,2$F64 best_score=168.62557; +$ID,2$F64 best_score=166.20441; $TR,"SimpleVal"$ -$ID,2$1250; +$ID,2$1267; $ID,-2$$ID,-2$$ID,-2$ \ No newline at end of file diff --git a/Demo/AcctExample/TOSCfg.CPP b/Demo/AcctExample/TOSCfg.CPP index 9bf341d..43d5695 100644 --- a/Demo/AcctExample/TOSCfg.CPP +++ b/Demo/AcctExample/TOSCfg.CPP @@ -6,7 +6,7 @@ U0 TOSBootRescueDrv1() DefinePrint("TOS_BOOT_RESCUE_DRV","0x%X", CeilI64(SYS_KERNEL_END+SLOP,BLK_SIZE)); DefinePrint("TOS_BOOT_RESCUE_DRV_END", "0x%X",FloorI64( - (BOOT_RAM_LIMIT-(BOOT_STK_SIZE+CD_BOOT_LOADER_SIZE))>>4<<4- + (BOOT_RAM_LIMIT-(BOOT_STK_SIZE+DVD_BOOT_LOADER_SIZE))>>4<<4- (bfh(I64)-SYS_KERNEL_END)-SLOP,BLK_SIZE)); DefinePrint("CFG_BOOT_RESCUE_DRV_FILE","\"/Temp/BootRescueDrv.BIN.Z\""); } TOSBootRescueDrv1; @@ -25,25 +25,25 @@ U0 TOSInit() switch (tos_cid) { case CID_DFT: DefinePrint("CFG_RAM_DRVS", - "\"b1\nScale2Mem(2048,0x280000,4*1024*1024*1024)\n\""); - if (dsk.auto_mount_ide_cnt) { + "\"b1\nScale2Mem(2048,0x100000,4*1024*1024*1024)\n\""); + if (blkdev.auto_mount_ide_cnt) { //If AutoMount was successful, No need to manually mount in next compile DefinePrint("CFG_HARD_DRVS","\"\""); - DefinePrint("CFG_CDROM_DRVS","\"\""); + DefinePrint("CFG_DVD_DRVS","\"\""); } else { //These two are a crazy guess. ATA:IDE Primary ATAPI:IDE Secondary DefinePrint("CFG_HARD_DRVS","\"c2s0x1F0\n0x3F4\n0\""); - DefinePrint("CFG_CDROM_DRVS","\"t3s0x170\n0\""); + DefinePrint("CFG_DVD_DRVS","\"t3s0x170\n0\""); bd=Let2BlkDev(':'); if (bd->type==BDT_ATAPI) { ATARep(FALSE,,&root); - ATAIDDrvs(root,dsk.boot_drv_let,&ata_drv,&atapi_drv); + ATAIDDrvs(root,blkdev.boot_drv_let,&ata_drv,&atapi_drv); if (ata_drv) DefinePrint("CFG_HARD_DRVS","\"c2p%d\n\"",ata_drv->num); if (atapi_drv) - DefinePrint("CFG_CDROM_DRVS","\"t3p%d\n\"",atapi_drv->num); + DefinePrint("CFG_DVD_DRVS","\"t3p%d\n\"",atapi_drv->num); } else { try { bd=Let2BlkDev('C'); @@ -53,7 +53,7 @@ U0 TOSInit() Fs->catch_except=TRUE; try { bd=Let2BlkDev('T'); - DefinePrint("CFG_CDROM_DRVS","\"t3s0x%X\n%d\"",bd->base0,bd->unit); + DefinePrint("CFG_DVD_DRVS","\"t3s0x%X\n%d\"",bd->base0,bd->unit); } catch Fs->catch_except=TRUE; } @@ -70,7 +70,7 @@ U0 TOSDrvTextAttrSet() DrvTextAttrSet('D', WHITE <<4|RED); //Back-up DrvTextAttrSet('A', BLUE <<4|BROWN); //Rescue DrvTextAttrSet('B', BLUE <<4|YELLOW);//RAM - DrvTextAttrSet('T', LTGRAY<<4|BLUE); //CDROM + DrvTextAttrSet('T', LTGRAY<<4|BLUE); //CD/DVD } TOSDrvTextAttrSet; #define TOS_ISO_NAME "B:/TempleOSCD.ISO" @@ -80,10 +80,10 @@ U0 TOSDrvTextAttrSet() "HeapInit\n130\nMemInit\n131\nVarInit\n132\n\n" #define CFG_DBGZ_OPTS "AutoMountIDE\nCT"\ "HeapInit\n0\nMemInit\n0\nVarInit\n0\n\n" -#define TOS_CFG "\n" CFG_RAM_DRVS CFG_CDROM_DRVS CFG_HARD_DRVS "\n"\ +#define TOS_CFG "\n" CFG_RAM_DRVS CFG_DVD_DRVS CFG_HARD_DRVS "\n"\ CFG_DSK_CACHE CFG_OPTS -#define TOS_CDROM_CFG "Tb1\n0x20000\nt3 \n\n\nAutoMountIDE\nCT\n" -#define TOS_CDROM_DBG_CFG "A" CFG_BOOT_RESCUE_DRV\ +#define TOS_DVD_CFG "Tb1\n0x20000\nt3 \n\n\nAutoMountIDE\nCT\n" +#define TOS_DVD_DBG_CFG "A" CFG_BOOT_RESCUE_DRV\ "b1\nScale2Mem(2048,0x40000)\n\n\n"\ "DontProbe\nBootRescueDrv\n"\ "C:" CFG_BOOT_RESCUE_DRV_FILE "\n"\ diff --git a/Demo/AcctExample/TOSDistro.CPP b/Demo/AcctExample/TOSDistro.CPP index 219e4db..e40c5d9 100644 --- a/Demo/AcctExample/TOSDistro.CPP +++ b/Demo/AcctExample/TOSDistro.CPP @@ -90,7 +90,8 @@ public U0 CopySongs(U8 threshold='7') { CDoc *s; CDocEntry *doc_e; - CDirEntry *tempde=FilesFind("::/Home/Psalmody/*.CPP*",FUF_CLUSTER_ORDER), + CDirEntry *tempde=FilesFind("::/Home/Wb2/Files/Psalmody/*.CPP*", + FUF_CLUSTER_ORDER), *tempde1=tempde; DelTree("/Apps/Psalmody/Examples"); MkDir("/Apps/Psalmody/Examples"); @@ -110,7 +111,7 @@ U0 DistroPrep() Del("/Demo/ReverseFileExample/PoemForeward.TXT*"); Del("/Home/NumBible.TXT.Z"); DelTree("/Home/*Temp.TXT.Z"); - if (FileFind("::/Home/Psalmody")) + if (FileFind("::/Home/Wb2/Files/Psalmody")) CopySongs; DelTree("/Temp"); @@ -123,8 +124,12 @@ U0 DistroPrep() DelTree("/Demo/AcctExample"); CopyTree("/Home","/Demo/AcctExample"); DelTree("/Demo/AcctExample/Archive"); + DelTree("/Demo/AcctExample/Blog"); DelTree("/Demo/AcctExample/Budget"); + DelTree("/Demo/AcctExample/Code"); + DelTree("/Demo/AcctExample/Misc"); DelTree("/Demo/AcctExample/Psalmody"); + DelTree("/Demo/AcctExample/Videos"); DelTree("/Demo/AcctExample/Wb2"); Del("/Demo/AcctExample/Test*"); @@ -160,15 +165,17 @@ U0 MakeBootRescueDrvFile() MkDir("A:/Kernel"); Copy("C:/Kernel/*.HPP*", "A:/Kernel"); - CopyTree("C:/Kernel/Dsk", "A:/Kernel/Dsk"); + CopyTree("C:/Kernel/BlkDev", "A:/Kernel/BlkDev"); - Copy("C:/Home/Wb2/Files/DbgAdam.CPP.Z","A:/Adam.CPP.Z"); + Copy("C:/Home/Wb2/Files/DbgStartOS.CPP.Z","A:/StartOS.CPP.Z"); MkDir("A:/Adam"); + Copy("C:/Home/Wb2/Files/DbgMakeAdam.CPP.Z","A:/Adam/MakeAdam.CPP.Z"); Copy("C:/Adam/AExts.HPP.Z", "A:/Adam"); Copy("C:/Adam/AMath.CPP.Z", "A:/Adam"); Copy("C:/Adam/Training.CPP.Z","A:/Adam"); - Copy("C:/Adam/AUtils.CPP.Z", "A:/Adam"); + Copy("C:/Adam/AMem.CPP.Z", "A:/Adam"); + Copy("C:/Adam/TaskRep.CPP.Z", "A:/Adam"); Copy("C:/Adam/AMathODE.CPP.Z","A:/Adam"); FileWrite("C:" CFG_BOOT_RESCUE_DRV_FILE, @@ -270,7 +277,7 @@ website, too. */ Drv('C'); DistroPrep; - Auto(TOS_CDROM_CFG); + Auto(TOS_DVD_CFG); MakeOSDrvBootInstall('C','T'); DelTree(TOS_DISTRO_DIR); CopyTree("C:/",TOS_DISTRO_DIR "/"); @@ -282,14 +289,14 @@ U0 MakeTOSDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSTS_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } U0 DbgDistroPrep() -{/*This is a debug distro. The CDROM bootloader uses BIOS INT 0x13 0x42 to +{/*This is a debug distro. The CD/DVD bootloader uses BIOS INT 0x13 0x42 to load Kernel.BIN.C which has been modified to also hold a small RAM drive (Drive A) that fits in the low 640k. The bootloader starts in real mode and the kernel changes to long, 64-bit mode. It loads the 64-bit compiler @@ -305,7 +312,7 @@ I call $LK,"MakeBootDrvFile",A="FF:::/Demo/AcctExample/TOSDistro.CPP,MakeBootRes Drv('C'); DistroPrep; MakeBootRescueDrvFile; - Auto(TOS_CDROM_DBG_CFG); + Auto(TOS_DVD_DBG_CFG); MakeOSDrvBootInstall('C','T'); DelTree(TOS_DISTRO_DIR); CopyTree("C:/",TOS_DISTRO_DIR "/"); @@ -318,7 +325,7 @@ U0 MakeDbgDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSDBG_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -327,7 +334,7 @@ U0 StdDistroPrep() { Drv('C'); DistroPrep; - Auto(STD_DISTRO_CDROM_CFG); + Auto(STD_DISTRO_DVD_CFG); MakeOSDrvBootInstall('C','T'); DelTree(TOS_DISTRO_DIR); CopyTree("C:/",TOS_DISTRO_DIR "/"); @@ -366,7 +373,7 @@ U0 MakeLiteDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSLITE_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -388,6 +395,10 @@ FileManager, WindowManager, PCSpeaker, Documentation. Del(TOS_DISTRO_DIR "/Adam/AutoComplete/ACWords.DAT*"); Del(TOS_DISTRO_DIR "/Adam/God/Vocab.TXT.Z"); Del(TOS_DISTRO_DIR "/Misc/OSTestSuite.CPP.Z"); + Copy("C:/Home/Wb2/Files/UltraMenu.TXT.Z", + TOS_DISTRO_DIR "/PersonalMenu.TXT.Z"); + Copy("C:/Demo/Games/EagleDive.CPP.Z", + TOS_DISTRO_DIR "/Misc"); } U0 MakeUltraDistro() { @@ -395,7 +406,7 @@ U0 MakeUltraDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -473,18 +484,19 @@ U0 FreshenWebDir(U8 *dirname) U0 MakeWebSitePartial() { FreshenWebDir("/Home/Wb2"); + FreshenWebDir("/Home/Wb2/Imgs"); Drv('C'); } U0 UpdateISODocDefines() { DefinePrint("DD_TEMPLEOSCD_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSCD_K_SIZE", "%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V3.07",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", + "Download $TX,"TempleOS V3.10",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSULTRA_K_SIZE", "%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024); @@ -498,8 +510,8 @@ public U0 MakeDistrosAndBackUp() progress4=*progress4_desc=0; progress4_max=14; AutoComplete; - WinMax; WinBorder; + WinMax; ChkAll; progress4++; MakeLineRepFile; progress4++; diff --git a/Demo/AcctExample/TOSHolySpirit.CPP b/Demo/AcctExample/TOSHolySpirit.CPP index ddb754c..1f6a6cc 100644 --- a/Demo/AcctExample/TOSHolySpirit.CPP +++ b/Demo/AcctExample/TOSHolySpirit.CPP @@ -127,7 +127,7 @@ class CTopMoviesForm U8 tag[STR_LEN]; U8 special[STR_LEN]; I64 timestamp; - I64 cert fmtstr "$$DA,32,A=\"Movie #1-100 :%d\"$$\n"; + I64 cert fmtstr "$$DA-TRM,2,A=\"Movie #1-100 :%02d\"$$\n"; I64 min; I64 sec; }; @@ -155,7 +155,7 @@ class CWebBibleForm class CYouTubeForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P-TRM,11,A=\"SerialNum:%11s\"$$\n"; I64 timestamp; I64 cert; I64 min fmtstr "$$DA,32,A=\"Minutes :%d\"$$\n"; @@ -165,7 +165,7 @@ class CYouTubeForm class CTopMoviesYouTubeForm { U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Movie :%s\"$$\n"; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; I64 timestamp; I64 cert; I64 min fmtstr "$$DA,32,A=\"Minutes :%d\"$$\n"; @@ -175,7 +175,7 @@ class CTopMoviesYouTubeForm class CImgurForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; I64 timestamp; I64 cert; I64 min fmtstr "$$DA,32,A=\"Width :%d\"$$\n"; @@ -185,7 +185,7 @@ class CImgurForm class CWikipediaForm { U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Tag Text:%s\"$$\n"; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Index :%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Index :%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -195,7 +195,7 @@ class CWikipediaForm class CRandDecForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Dec):%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Dec):%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -205,7 +205,7 @@ class CRandDecForm class CRandHexForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Hex):%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Hex):%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -222,10 +222,22 @@ class CRandCertForm I64 sec; }; -class CRandHexBeaconForm +class CRandHexBeacon5Form { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Hex):%s\"$$\n"; + U8 special[STR_LEN] + fmtstr "$$DA-P-TRM,5,A=\"Line (5-Digit Hex):%5s\"$$\n"; + I64 timestamp fmtstr "$$DA,32,A=\"TimeStamp :%d\"$$\n"; + I64 cert; + I64 min; + I64 sec; +}; + +class CRandHexBeacon8Form +{ + U8 tag[STR_LEN]; + U8 special[STR_LEN] + fmtstr "$$DA-P-TRM,8,A=\"Line (8-Digit Hex):%8s\"$$\n"; I64 timestamp fmtstr "$$DA,32,A=\"TimeStamp :%d\"$$\n"; I64 cert; I64 min; @@ -311,7 +323,53 @@ U0 MyBibleLines(U8 *st,I64 num_lines,I64 radix,Bool modulo,Bool plus_one) } } -#define NIST_TIME_OFFSET (-7788-local_time_offset/CDATE_FREQ) +public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, + I64 rand_i32=MIN_I64,Bool full=FALSE) +{//Make God pick a book passage. $LK+PU,"Holy Spirit Instructions",A="FI:::/Adam/God/HSNotes.TXT"$ + CDirEntry *tempde=FilesFind(files_find_mask, + FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT), + *tempde1=tempde; + I64 i=0; + U8 *st,*st2=NULL; + while (tempde) { + st=FileRead(tempde->full_name); + tempde->user_data=StrLen(st); + if (full) + "%08X-",i; + if (tempde->user_data>=len) + i+=tempde->user_data+1-len; + if (full) + "%08X:$$LK,\"%s\",A=\"FI:%s\"$$\n", + i-1,tempde->full_name+2,tempde->full_name; + Free(st); + tempde=tempde->next; + } + if (rand_i32<0) + rand_i32=GodBits(32); + if (full) + "\n%08X*%08X",rand_i32,i; + i*=rand_i32; + if (full) + "=%08X.%08X\n",i.u32[1],i.u32[0]; + i=i.u32[1]; + tempde=tempde1; + while (tempde) { + if (!st2 && tempde->user_data>=len) { + i-=tempde->user_data+1-len; + if (i<0) { + st=FileRead(tempde->full_name); + st2=st+(tempde->user_data+1-len)+i; + st2[len]=0; + "%s\n\n$$RED$$%s$$FG$$\n",tempde->full_name,st2; + Free(st); + } + } + tempde=tempde->next; + } + DirTreeDel(tempde1); +} + +#define NIST_TIME_OFFSET (-7788-21-local_time_offset/CDATE_FREQ) #define NIST_TIME_TO_SWITCH 3 public U0 NISTSync() @@ -336,12 +394,13 @@ U0 InsMyURL() url->timestamp= FloorI64((Now-Str2Date("1/1/1970"))/CDATE_FREQ+NIST_TIME_OFFSET- NIST_TIME_TO_SWITCH,60); - switch (PopUpPickLst("NISTBeacon\0BibleGatewaySearch\0BibleGatewayVerse\0" + switch (PopUpPickLst("NISTBeacon5Bible\0NISTBeacon8Passage\0" + "BibleGatewaySearch\0BibleGatewayVerse\0" "YouTube\0Imgur\0Wikipedia\0RandomNumbers.info\0Random.org\0PassWord\0" "VirtualNotary\0Nist\0HotBits\0GenerateData\0WebBookMark\0" "Roulette\0Movie\0")) { case 0: - if (DocForm(url(CRandHexBeaconForm *))) { + if (DocForm(url(CRandHexBeacon5Form *))) { "$$TX,\"Guidelines for Talking with God.\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); @@ -351,6 +410,17 @@ U0 InsMyURL() } break; case 1: + if (DocForm(url(CRandHexBeacon8Form *))) { + "$$TX,\"Guidelines for Talking with God.\"," + "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; + tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; + Free(tag); + GodBooksPassage("C:/Home/Wb2/Files/Text/*",, + Str2I64(url->special,16),TRUE); + } + break; + case 2: if (DocForm(url(CWebBibleForm *))) { tag=url->special; st2=URLPercentSpaces(url->special); @@ -363,7 +433,7 @@ U0 InsMyURL() Free(st); } break; - case 2: + case 3: if (DocForm(url(CWebBibleForm *))) { tag=url->special; st2=URLPercentSpaces(url->special); @@ -376,7 +446,7 @@ U0 InsMyURL() Free(st); } break; - case 3: + case 4: if (DocForm(url(CYouTubeForm *))) { if (url->min || url->sec) st=MStrPrint("%s&hl=enUS&start=%d",url->special,url->min*60+url->sec); @@ -395,14 +465,14 @@ U0 InsMyURL() Free(st); } break; - case 4: + case 5: if (DocForm(url(CImgurForm *))) { "$$HC,\"\\\"\\\"\"$$\n", url->special,url->min,url->sec; } break; - case 5: + case 6: if (DocForm(url(CWikipediaForm *))) { tag=url->special; st=MStrPrint("http://en.wikipedia.org/wiki/%s",url->special); @@ -412,7 +482,7 @@ U0 InsMyURL() Free(st); } break; - case 6: + case 7: if (DocForm(url(CRandDecForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -421,7 +491,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,10,FALSE,TRUE); } break; - case 7: + case 8: if (DocForm(url(CRandDecForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -430,7 +500,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,10,FALSE,FALSE); } break; - case 8: + case 9: if (DocForm(url(CRandDecForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -439,7 +509,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,10,FALSE,FALSE); } break; - case 9: + case 10: if (DocForm(url(CRandCertForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -453,7 +523,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,10,FALSE,FALSE); } break; - case 10: + case 11: if (DocForm(url(CRandHexForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -462,7 +532,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,16,TRUE,TRUE); } break; - case 11: + case 12: if (DocForm(url(CRandHexForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -471,7 +541,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,16,TRUE,TRUE); } break; - case 12: + case 13: if (DocForm(url(CRandDecForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; @@ -480,7 +550,7 @@ U0 InsMyURL() MyBibleLines(url->special,20,10,FALSE,FALSE); } break; - case 13: + case 14: if (DocForm(url(CWebBookMarkForm *))) { tag=st=WebBookMarks; if (*url->tag) @@ -489,17 +559,16 @@ U0 InsMyURL() Free(st); } break; - case 14: + case 15: if (DocForm(url(CRandDecForm *))) { "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; - tag="https://www.dublinbet.com/casino_game.html" - "?mode=demo&game=136#gameId=136"; + tag="https://www.dublinbet.com"; "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,FALSE); } break; - case 15: + case 16: if (DocForm(url(CTopMoviesForm *)) && (st=TopMoviesRead(,url->cert*2))) { StrCpy(url->tag,st); Free(st); @@ -538,38 +607,5 @@ U0 InsMyURL() Free(url); } -public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512) -{//Make God pick a book passage. $LK+PU,"Holy Spirit Instructions",A="FI:::/Adam/God/HSNotes.TXT"$ - CDirEntry *tempm=FilesFind(files_find_mask, - FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT), - *tempm1=tempm; - I64 i=0; - U8 *st,*st2=NULL; - while (tempm) { - st=FileRead(tempm->full_name); - tempm->user_data=StrLen(st); - if (tempm->user_data>=len) - i+=tempm->user_data+1-len; - Free(st); - tempm=tempm->next; - } - i=(GodBits(24)*i)>>24; - tempm=tempm1; - while (tempm) { - if (!st2 && tempm->user_data>=len) { - i-=tempm->user_data+1-len; - if (i<0) { - st=FileRead(tempm->full_name); - st2=st+(tempm->user_data+1-len)+i; - st2[len]=0; - "%s\n\n%s\n",tempm->full_name,st2; - Free(st); - } - } - tempm=tempm->next; - } - DirTreeDel(tempm1); -} - if (FileFind("::/Home/Wb2/Files/Words/HappyWords.TXT")) GodInit("::/Home/Wb2/Files/Words/HappyWords.TXT"); diff --git a/Demo/AcctExample/TOSMisc.CPP b/Demo/AcctExample/TOSMisc.CPP index 3f42300..ed6f1e6 100644 --- a/Demo/AcctExample/TOSMisc.CPP +++ b/Demo/AcctExample/TOSMisc.CPP @@ -7,43 +7,31 @@ I64 fg_mode=FG_RAM_DRV; Bool fg_on =FALSE; U0 FrameGrabberTask(I64) -{//ffmpeg -r 8 -i VID%05d.BMP -y Movie.avi +{//#!/bin/bash +//for f in ./ScreenShots/*.Z; do ./Bin/TOSZ $$f; done + //ffmpeg -r 8 -i VID%05d.BMP -y Movie.avi I64 frame_num=0; - U8 buf[STR_LEN],buf2[STR_LEN]; + U8 buf[STR_LEN],buf2[STR_LEN],*st_dir; F64 end_time=tS; Silent; //no output to screen - if (fg_mode==FG_RAM_DRV) { - MkDir("B:/Temp/ScreenShots"); - while (fg_on) { - StrPrint(buf,"B:/Temp/ScreenShots/VID%05d.BMP",frame_num++); - StrCpy(buf2,buf); - BMPScreenCapture(buf); - while (TRUE) { - end_time+=1.0/VIDEO_FRAME_RATE; - if (end_timerecord=snd.record=FALSE; Sleep(1000); - CopyVideo; + User("CopyVideo;Exit;\n"); } else { fg_on=TRUE; if (fg_mode!=FG_JUST_AUDIO) @@ -160,11 +146,11 @@ public U0 BMP2TXT(U8 *_in_name,U8 *_out_name=NULL) I64 dx,dy,score,best_score=MAX_I64; CDC *dc; CDoc *doc; - in_name=DftExt(_in_name,"BMP"), - if (_out_name) - out_name=DftExt(_out_name,"TXT.Z"); + in_name=DftExt(_in_name,"BMP"); + if (_out_name) + out_name=DftExt(_out_name,"TXT.Z"); else - out_name=ChgExt(_in_name,"TXT.Z"); + out_name=ChgExt(_in_name,"TXT.Z"); if (dc=BMPRead(in_name)) { for (dy=-3;dy<=4;dy++) for (dx=-3;dx<=4;dx++) { @@ -278,11 +264,11 @@ U0 AfterEgyptInAction() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Adam("GodInit(\"/Adam/God/Vocab.TXT*\");"); AutoComplete; - WinMax; WinBorder; + WinMax; if (!fg_on) PopUp("Sleep(50);FrameGrabberToggle;"); - Ed("::/Home/Archive/AfterEgypt.TXT.Z"); + Ed("::/Home/Videos/AfterEgypt.TXT.Z"); Msg(MSG_KEY_DOWN_UP,CH_SPACE,0x3900000039); // ExeFile("::/Apps/AfterEgypt/Run"); SettingsPop; @@ -294,17 +280,25 @@ U0 CodeWalkThru() { SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ AutoComplete; - WinMax; WinBorder; + WinMax; if (!fg_on) PopUp("Sleep(50);FrameGrabberToggle;"); - Ed("::/Home/Archive/RandomCode.TXT.Z"); + Ed("::/Home/Videos/RandomCode.TXT.Z"); SettingsPop; Msg(MSG_KEY_DOWN_UP,'b',0x83000000830); // tos_code_walk_thru++; TOSRegWrite; } +U0 TempleOSTheme() +{ + if (!fg_on) + PopUp("Sleep(50);FrameGrabberToggle;"); + ExeFile("::/Home/Wb2/Files/TempleOSTheme.CPP"); + DocClear; +} + U0 TOSJukeVideo(I64 start=0,I64 end=10) { U8 *buf=FileRead("::/Misc/Bible.TXT.Z"); //Put in cache diff --git a/Demo/AutoFile/AFEd.TXT b/Demo/AutoFile/AFEd.TXT index 6fcdef6..9d255df 100644 --- a/Demo/AutoFile/AFEd.TXT +++ b/Demo/AutoFile/AFEd.TXT @@ -119,7 +119,6 @@ #define IC_ASM 0x61 #define IC_CLI 0x62 #define IC_STI 0x63 -#define IC_PREEMPT 0x64 #define IC_CLD 0x65 #define IC_STD 0x66 #define IC_HLT 0x67 diff --git a/Demo/ClassMeta.CPP b/Demo/ClassMeta.CPP index 7940f75..1b9330e 100644 --- a/Demo/ClassMeta.CPP +++ b/Demo/ClassMeta.CPP @@ -36,7 +36,7 @@ U0 DumpStruct(U8 *_d,U8 *class_name=lastclass) F64 percentile; if (!tempc) return; CMemberLst *ml; - ml=tempc->member_lst; + ml=tempc->member_lst_and_root; while (ml) { "%s:",ml->str; diff --git a/Demo/DolDoc/TreeDemo.CPP b/Demo/DolDoc/TreeDemo.CPP index 7f0fc0b..9797b77 100644 --- a/Demo/DolDoc/TreeDemo.CPP +++ b/Demo/DolDoc/TreeDemo.CPP @@ -1,17 +1,3 @@ -/*Uses $LK,"DocPrint",A="MN:DocPrint"$() because updates -to within a tree while a tree is collapsed get -messed-up if "live" (like using ordinary Print.) -The insert point is confused by hiding of -data in collapsed trees. Therefore, the window main -Doc is taken off-line by disabling preemption so there -are no screen updates until all data has been inserted. - -There is a special Doc function which is also -available to take an Doc off-line. See $LK,"DocPrintAtomic",A="MN:DocPrintAtomic"$. -For this example, however, I wanted to use DocPrint -and disabled Preemption myself. -*/ - U0 TreeSub(CDoc *doc,CDirEntry *tempde) { CDirEntry *tempde1; diff --git a/Demo/DolDoc/UnusedDefine.CPP b/Demo/DolDoc/UnusedDefine.CPP index 7e8546c..f4a817f 100644 --- a/Demo/DolDoc/UnusedDefine.CPP +++ b/Demo/DolDoc/UnusedDefine.CPP @@ -20,9 +20,6 @@ U0 UnusedDefineScan() CDocEntry *doc_e,*doc_e2; Bool old_silent=IsSilent; - //Technically, we might want to - //turn-off preemption in case the - //table were modified. try { table=Fs->hash_table; while (table) { diff --git a/Demo/Dsk/BlkDevRep.CPP b/Demo/Dsk/BlkDevRep.CPP index 5fdb42b..826bbe9 100644 --- a/Demo/Dsk/BlkDevRep.CPP +++ b/Demo/Dsk/BlkDevRep.CPP @@ -2,9 +2,10 @@ U0 BlkDevRep() {//Block Device Report. I64 i; for (i=0;i}6u=-QS=TN(KPSJ)*2%}w+1nZ_99&S8S(0k3k&>)ap>3#B zsbip{;_0NLWMgWlq~qjiYpSAY%{BQUs~Ve6h;yW)-((&(DfWQSpa36N>&b1bTASCi z?q#%u8b-VwC8@au#h50uK}?>U#jd!yi~X;_*NQra+ANwR|5c6 C(O3Nd delta 179 zcmZ4J^wD91FN>IBNosCEiLPBiPGV(hktUY{7);_2<4(;fPK9zOZ)BC2?8)+avJr>) z%rv9u)L zIX|}`C$%KinoB_;JTuQXu>#6+$}dVuEdp_%nyk6F6cjx3GD{}sNXc%VDD|CnvW2|d I%9OkT>U-E8d+Pqm{F5~75p^c1_RYXpxJC>H@JLl&Xmf@0bB~*+;to diff --git a/Demo/Games/BlackDiamond.CPP b/Demo/Games/BlackDiamond.CPP index 79339c7233eb4e06242dd6150d1b738eb3ed2f23..dbf1721b5cfa92d129ad664d537deb028e0dfe44 100644 GIT binary patch literal 62132 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 YgbYElk60!lBdH=!tYeVWk!3Ff0G_vT^Z)<= delta 2982 zcmdn;lzHws#tlJ?f?S*`!2vo-HfDB8I!>OpW-61D8I>pVFm0K9p6MLFb8taXW=X1o zR%UK`akR=a7!6^c_+6-qKv6^bkKN)js+^3y;( zE(HaBeI?Jl;?$xN1*gos#G*O7dhsRx3wN7w6#0+}zZXqRQaZ5{;B( z9hfQ|0|e7h(;8}0EtH0MD9YGrvLLs)v$^FS+n#aqV{XyO(d_M;AM;LO zoLt6#ZE}!+gnD?YLQ+v`VzxqJadCcfW@1TZeqOPjf`UtaYH^-=i9&8-Nl9vv-sal^ ziHwsYg)F2M6v8v}obroOQj0*&cPuT*ch1i($Vn|po!l>EF}aXS!dIbML0>;SKc_6U zSRpsRELD$-6BYorAVzUwS!xP6)T|*gmC>28NHQQU$Z(L~YB$FVJF!hRP!^fIRZ?WK zfwIu#+md3F58M)(%q%4~Syx$LvZj>8`4HBP~BrtiRw8Ug>W&X+fvHp|UWuzuszT%y%CnG(1$7`O+ zp)xY8|3P4KnT#@&H4n}@24}s4v&3X!>g?dGG&rkIR(Y~Uyx`RJ_V8IW@ct)W?*0dQIm7xWx1KTxtW<6m_gL!If=5yAPEp3qzvS( z{|pT53=Ck_e+G7T5CU-+xVgEx85qFSPO`iTzaPlq%@yQ$BaZlb5!#xbfx#Ulj{=HC)Xx?WMr6}pQy&n!oV_lMxrX1K9H!!$guf&;(tc5OPmZ0 zObiSR;*bCT|9|WM|NnLj3=Ha%7rv94d_h@)pPikZ9c2Cg|6tbSKpTU}_4aIBATf4! zb~g6^ARz&EehxN}0(N$G4hD9FAO}A?KR-VQKL^Mds7e-2eh#oWI|oFiz92h02M0e$ zAv-%i$Q+QN8X$Xw*x5lQuyBBkVFS4aB&9sL-kwL0fuElZBn;9BwtI4*jTlJN0uZc`fdOm+D8)bw zU}pz~JScQP_JCamB|s4katX*h4p8XubMUjXGcbUq|NnmzpAF(6kh5Uv1S}3V0TgXu z{SaID`Po594>;PEas_><1YK5``PU&ISq?Q1pWA1F<>5NuLem zZ+14Y!$2Cq8bKC-vkFK%s2BjL0^0_X0YyK1Jt(@tkq7cSBz!nQM)Py9ff5KLpuqY; z24J`!lw(0^z@ZJ%4z?b|ggA)<9C{!V7#J|auO6%#WGp!Efs#AeKkT3o0_R~+MhEEz z$00}_Y&1w3!~xsO2982diUs>0;w6v@4p0h!L?6fq1_rQmL16>RBOv$HgA4&Db5NQA zg)2KdJ0~axA%Oxa5Ks+(WL1z}P%wdF0BRlwJ17x=QXR+v5U+yb5$r>d^`Jxu5$1rT zRDO1jdQbua2R%4S_!&TX2V^iPDmmCdr3^S3gR%gQ5a0)uF(CJV-NMceDwsgo2INJs z-R$ffoKQbtga9|l@laPzZuAh=fhuHYXM?gpTF_n1&&~qMGm{JLh3h$>>OiFwB&r!0 z{$pwYmkkhkNLc*;|DPQc46yiRXJ>($1kw*m5#XqSWfX99z;!|xps2`X;oyfD%gzBR z{y{Pz128fQI|Dy75J5_y7!>me{ZNBIWd%6kK=A;=AXWVQlLc)>w85zaVh}qh5FqA& z^ESGTlLc+Xv_V-C5<;M43vnpOd`KYb}VnGbPnPbvf9{pjrsYXpq@pg`hy>m@H^3EebBoK&F8F1#|P{R$J}K_4cfj O{c|}c&$DF%wJHEc80SU+ diff --git a/Demo/Games/BomberGolf.CPP b/Demo/Games/BomberGolf.CPP index 6eaddada2f945afc641e2556fa44d67234b8417a..19e3ca59cf73e264c005df27c1a5d6ab3a4684d5 100644 GIT binary patch literal 18701 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 NCBRNYu&7o$0s!H?9)|z` literal 12547 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 w1vxd7I4G-tQUw=?0kR#G20%dz4pNXahDQ>=1; yh>>=1; @@ -370,6 +371,7 @@ U0 DrawIt(CTask *task,CDC *dc) GrPrint(dc,0,0,"Enemy:%d Time:%3.2f Best:%3.2f", monsters_left,tt-t0,best_score); Free(s2w); + Seed(0); } U0 Fire() @@ -541,14 +543,13 @@ U0 CastleFrankenstein() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->text_attr=DKGRAY<<4+WHITE; - Preempt; + AutoComplete; WinBorder; WinMax; - AutoComplete; + DocCursor; Init; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); - DocCursor; Fs->draw_it=&DrawIt; try { diff --git a/Demo/Games/CircleTrace.CPP b/Demo/Games/CircleTrace.CPP index 8a3920f..1849f11 100644 --- a/Demo/Games/CircleTrace.CPP +++ b/Demo/Games/CircleTrace.CPP @@ -1,6 +1,6 @@ //Practice tracing circles -//Giotto, a famous artist, drew a freehand circle as a portfolio for a job. +//Giotto, a famous artist, drew a freehand circle to get a job. RegSetDftEntry("TempleOS/CircleTrace","F64 best_score=999;\n"); RegExeBranch("TempleOS/CircleTrace"); @@ -42,13 +42,15 @@ U0 CircleTrace() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); AutoComplete; + WinBorder; + WinMax; + DocCursor; + DocClear; cx=Fs->pix_width/2; cy=Fs->pix_height/2; Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS-WIF_SELF_BORDER; - DocCursor; - DocClear; Fs->draw_it=&DrawIt; DCFill; diff --git a/Demo/Games/Coach.CPP b/Demo/Games/Coach.CPP index b1f1b0f3d7a39322a94dfd4d7602173d8c3dcbfe..d1a4afc375e514216d3c633e7b14ef034c5869eb 100644 GIT binary patch delta 77 zcmX@8woPq=7`KgMX-U3wer`cdYDua!mx4lgW}Z`iQA%nNl;fLN0b;r2Cp(uG73YJ6 UL7be_#G=VA+?O`%^9Zp60P5Zt;{X5v delta 67 zcmdm{c2I4D7`I+{W}a_ig*BIgLU?ALQ+`oOY7vMNP?VaQTTlXGI+m8?JLl&Xtext_attr=BLACK<<4+WHITE; - Preempt; - WinMax; AutoComplete; - Init; - Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); + WinBorder; + WinMax; DocCursor; DocClear; + Init; + Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); Fs->draw_it=&DrawIt; try { diff --git a/Demo/Games/EagleDive.CPP b/Demo/Games/EagleDive.CPP index cef6896..f1ea372 100644 --- a/Demo/Games/EagleDive.CPP +++ b/Demo/Games/EagleDive.CPP @@ -500,7 +500,6 @@ U0 MPDrawIt(CTask *task,CDC *dc) U0 APEagleDiveTask(CTask *master_task) { CDC *dc=DCAlias(main_dc,master_task); - Preempt(ON); while (!mp.app_done) { while (!Bt(&mp.update_not_done_flags,Gs->num) && !mp.app_done) Sleep(1); @@ -609,10 +608,8 @@ U0 DrawHorizon(CDC *dc) U0 BSPEagleDive() { CDC *dc=DCAlias(main_dc,Fs); - I64 i,xx,yy,height,bkcolor, - cx=Fs->pix_width>>1, - cy=Fs->pix_height>>1; - F64 min_strip_width; + I64 i,xx,yy,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1; + F64 min_strip_width,roll,pitch,heading; Fish *tempf; update_jiffy_limit=cnts.jiffies+JIFFY_FREQ/40; @@ -673,13 +670,18 @@ U0 BSPEagleDive() dc->flags&=~DCF_TRANSFORMATION; GrLine3(dc,cx+5,cy,0,cx-5,cy,0); GrLine3(dc,cx,cy+5,0,cx,cy-5,0); - GrPrint(dc,0,0,"é1:%5.1f è:%5.1f é2:%5.1f Strip:%5d", - é1*180/ã,è*180/ã,é2*180/ã,strip_height); - GrPrint(dc,0,FONT_HEIGHT, - "x:%5.1f y:%5.1f z:%5.1f height:%3d score:%d high:%d", - ToF64(x)/COORDINATE_SCALE, - ToF64(y)/COORDINATE_SCALE,ToF64(z)/COORDINATE_SCALE, - height,game_score,best_score); + heading=Wrap(é2,0); + roll=é1; + pitch=Wrap(-è-ã/2,-ã); + if (Abs(pitch)>ã/2) { + pitch=Wrap(ã-pitch,-ã); + roll=Wrap(roll+ã,-ã); + heading=Wrap(heading+ã,0); + } + GrPrint(dc,0,0,"Roll:%5.1f Pitch:%5.1f Heading:%5.1f", + roll*180/ã,pitch*180/ã,heading*180/ã); + GrPrint(dc,0,FONT_HEIGHT,"Height:%5d Score:%d High:%d [Core Strip:%3d]", + height,game_score,best_score,strip_height); if (game_over && Blink) { dc->color=RED; @@ -840,7 +842,6 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS) F64 pp,tt1,tt2; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - AutoComplete; MenuPush( "File {" " Abort(,CH_SHIFT_ESC);" @@ -854,14 +855,15 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS) " Right(,,SC_CURSOR_RIGHT);" "}" ); - WinMax; + AutoComplete; WinBorder; + WinMax; + DocCursor; + DocClear; "Initializing...\n"; Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); Init(_mp_cnt); Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - DocCursor; - DocClear; Fs->draw_it=&DrawIt; try //in case is pressed. do { diff --git a/Demo/Games/ElephantWalk.CPP b/Demo/Games/ElephantWalk.CPP index 2d0f55093494bab3cd34759f6a5b6a9ab6d460a3..ee160fbfea13bd467fb8d934de5f511e5fda4da9 100644 GIT binary patch delta 60 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 GB)9pix_height>>1-FONT_HEIGHT/2-task->scroll_y,"Game Over"); } } - Preempt(old_preempt); } U0 Init() @@ -693,7 +691,7 @@ U0 Combat(F64 period) #define ANIMATE_FREQ 50 U0 AnimateTask(I64) -{//Preemption is off after Spawn +{ Obj *tempo; Torpedo *tempt,*tempt1; F64 d,period; @@ -787,17 +785,16 @@ U0 FlatTops() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->text_attr=BLUE<<4+WHITE; - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; DocCursor; DocClear; PopUpOk("$$GREEN$${Left-Mouse}$$FG$$\t\tChange Course\n" "$$GREEN$${Right-Mouse}$$FG$$\t\tLaunch Squadron\n" "$$GREEN$${Right-Double-Mouse}$$FG$$\tReturn Squadron\n" "$$GREEN$${Ctrl-Left Grab}$$FG$$\tScroll Screen\n"); - Preempt, - MenuPush( + MenuPush( "File {" " Abort(,CH_SHIFT_ESC);" " Exit(,CH_ESC);" diff --git a/Demo/Games/Halogen.CPP b/Demo/Games/Halogen.CPP index d03b234..ce1a603 100644 --- a/Demo/Games/Halogen.CPP +++ b/Demo/Games/Halogen.CPP @@ -12,7 +12,6 @@ U0 DrawIt(CTask *task,CDC *dc) { I64 w=task->pix_width,h=task->pix_height; I64 i,x,y,xx; - Bool old_preempt=Preempt; xx=w>>1-car_x+road_x[road_ptr&(NUM_ROAD-1)]; dc->color=LTGRAY; @@ -40,7 +39,6 @@ U0 DrawIt(CTask *task,CDC *dc) dc->color=YELLOW; if (crash) GrPrint(dc,w>>1-FONT_WIDTH*4,(h-FONT_HEIGHT)>>1,"Game Over"); - Preempt(old_preempt); } U0 UpdateRoad() @@ -94,11 +92,11 @@ U0 Halogen() " Right(,,SC_CURSOR_RIGHT);" "}" ); - Preempt; AutoComplete; + WinBorder; WinMax; - Init; DocCursor; + Init; Fs->draw_it=&DrawIt; try { while (TRUE) { diff --git a/Demo/Games/MassSpring.CPP b/Demo/Games/MassSpring.CPP index 93e16d2..67413fe 100644 --- a/Demo/Games/MassSpring.CPP +++ b/Demo/Games/MassSpring.CPP @@ -107,24 +107,13 @@ U0 MassSpringDemo() "connect with spring.\n\n" "Springs are 100 pixs long.\n"); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + AutoComplete; + WinBorder; WinMax; - - /*Preempt eliminates a lot of hassles. -The concern is about changing -que links while the winmgr task -is updating the ode or screen. - -The Window mgr suspends this -task while updating the ode. It -will not be interrupted and with this -preempt, we will not be interrupted. -There is little downside to Preempt() -since we will yield during GetMsg(). -*/ - Preempt; + DocCursor; + DocClear; Fs->win_inhibit|=WIG_DBL_CLICK; - AutoComplete; MenuPush( "File {" @@ -137,8 +126,6 @@ since we will yield during GetMsg(). ); Init; - DocCursor; - DocClear; Fs->draw_it=&DrawIt; try { diff --git a/Demo/Games/Maze.CPP b/Demo/Games/Maze.CPP index ca97ce5..82915f1 100644 --- a/Demo/Games/Maze.CPP +++ b/Demo/Games/Maze.CPP @@ -79,9 +79,9 @@ U0 Maze() I64 ch,x,y; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; DocCursor; DocClear; Fs->draw_it=&DrawIt; diff --git a/Demo/Games/RainDrops.CPP b/Demo/Games/RainDrops.CPP index c3b1646..c3ff092 100644 --- a/Demo/Games/RainDrops.CPP +++ b/Demo/Games/RainDrops.CPP @@ -56,13 +56,11 @@ U0 DrawDrops(CTask *,CDC *dc) U0 UpdateCurBase(CTask *task,CDC *dc) { - Bool old_preempt=Preempt; cur_dc->color=ROP_EQU; dc->flags|=DCF_NO_TRANSPARENTS; GrBlot(cur_dc,-task->pix_left-task->scroll_x, -task->pix_top-task->scroll_y,dc); dc->flags&=~DCF_NO_TRANSPARENTS; - Preempt(old_preempt); } U0 DrawIt(CTask *task,CDC *dc) @@ -162,16 +160,17 @@ U0 RainDrops() "}" ); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + AutoComplete; + WinBorder; WinMax; + DocCursor; + DocClear; cur_dc=DCNew(GR_WIDTH,GR_HEIGHT); sc_1=Char2ScanCode('1'); sc_2=Char2ScanCode('2'); Init; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - DocCursor; - DocClear; Fs->draw_it=&DrawIt; - AutoComplete; try { do switch (ch=GetKey(&sc)) { diff --git a/Demo/Games/RawHide.CPP b/Demo/Games/RawHide.CPP index f8b3da5..f5983b5 100644 --- a/Demo/Games/RawHide.CPP +++ b/Demo/Games/RawHide.CPP @@ -13,6 +13,10 @@ I64 outside_cnt; #define MAP_BORDER 3 CDC *map_dc; +#define GATE_WIDTH 22 +#define GATE_HEIGHT 7 +F64 gate_é,gate_t; + $BG,10$#define GE_COW 0 @@ -153,8 +157,7 @@ U0 RiverDropsNext(CTask *mem_task) Free(tempr); } else { do { - if (RandU16&1 && - GrPeek(map_dc,r_x[tempr->index]+tempr->dx, + if (RandU16&1 && GrPeek(map_dc,r_x[tempr->index]+tempr->dx, r_y[tempr->index]+tempr->dy)==BLUE) break; tempr->dx=ClampI64(tempr->dx+RandU16%3-1,-r_width[tempr->index]/2, @@ -271,6 +274,52 @@ U0 BuddySelect(I64 i) a[i].buddy=best_b; } + +U0 RedrawGate() +{ + F64 tt=tS-gate_t; + I64 x1=FENCE_WIDTH-63,y1=FENCE_HEIGHT-1,dx,dy; + + if (tt<0.5) + gate_é=Clamp(gate_é+0.02,0,ã/2); + else if (tt>5.0) + gate_é=Clamp(gate_é-0.02,0,ã/2); + + dx=GATE_WIDTH*Cos(gate_é); dy=-0.8*GATE_WIDTH*Sin(gate_é); + + map_dc->color=LTGREEN; + GrRect(map_dc,x1,y1-0.8*GATE_WIDTH-GATE_HEIGHT, + 46,0.8*GATE_WIDTH+GATE_HEIGHT+3); + + map_dc->color=BLACK; + + GrLine(map_dc,x1,y1,x1+dx,y1+dy); + GrLine(map_dc,x1,y1,x1,y1-GATE_HEIGHT); + GrLine(map_dc,x1+dx,y1+dy,x1+dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1,y1-GATE_HEIGHT,x1+dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1,y1,x1+dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1,y1-GATE_HEIGHT,x1+dx,y1+dy); + + GrLine(map_dc,x1+45,y1,x1+45-dx,y1+dy); + GrLine(map_dc,x1+45,y1,x1+45,y1-GATE_HEIGHT); + GrLine(map_dc,x1+45-dx,y1+dy,x1+45-dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1+45,y1-GATE_HEIGHT,x1+45-dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1+45,y1,x1+45-dx,y1+dy-GATE_HEIGHT); + GrLine(map_dc,x1+45,y1-GATE_HEIGHT,x1+45-dx,y1+dy); +} + +Bool CheckMap(I64 x,I64 y) +{ + I64 i,j,c; + for (j=-4;j<=2;j++) + for (i=-4;i<=4;i++) { + c=GrPeek(map_dc,x+i,y+j); + if (c==LTGRAY || c==BLACK) + return FALSE; + } + return TRUE; +} + U0 AnimateTask(CTask *parent) { I64 i,cx,cy,cursor_x,cursor_y,dd,ddx,ddy,cnt,max_speed=MAX_I64,updates=0, @@ -285,6 +334,9 @@ U0 AnimateTask(CTask *parent) cursor_y=ip.pos.y+cy-parent->pix_top -parent->scroll_y; cnt=0;stress=0; my_outside_cnt=0; + if (cursor_xdead) { @@ -335,8 +387,7 @@ U0 AnimateTask(CTask *parent) tempa->dy/=2; } - if (GrPeek(map_dc,(tempa->x+tempa->dx)>>32,(tempa->y+tempa->dy)>>32) - !=LTGRAY) { + if (CheckMap((tempa->x+tempa->dx)>>32,(tempa->y+tempa->dy)>>32)) { tempa->x+=tempa->dx; tempa->y+=tempa->dy; } @@ -420,9 +471,7 @@ U0 ReInit() GrLine(map_dc,FENCE_WIDTH-1,i,FENCE_WIDTH-1,i+7); map_dc->color=LTGRAY; GrLine(map_dc,FENCE_WIDTH,0,FENCE_WIDTH,FENCE_HEIGHT-6); - - map_dc->color=LTGREEN; - GrRect(map_dc,FENCE_WIDTH-63,FENCE_HEIGHT-8,46,9); + RedrawGate; map_dc->pen_width=MAP_BORDER; map_dc->color=RED; @@ -435,8 +484,10 @@ U0 ReInit() MemSet(a,0,NUM_ANIMALS*sizeof(Animal)); for (i=0;i>32,a[i].y>>32)); if (i&1) a[i].ge=&rh_sprite[GE_COW]; else @@ -444,6 +495,8 @@ U0 ReInit() BuddySelect(i); } outside_cnt=NUM_ANIMALS; + gate_t=0; + gate_é=0; t0=tS; tf=0; } @@ -497,13 +550,13 @@ U0 RawHide() Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS -WIF_SELF_BORDER-WIF_SELF_GRAB_SCROLL-WIF_FOCUS_TASK_MENU; - WinMax; AutoComplete; - Preempt; - Init; - Fs->animate_task=Spawn(&AnimateTask,Fs,"Animate",,Fs); + WinBorder; + WinMax; DocCursor; DocClear; + Init; + Fs->animate_task=Spawn(&AnimateTask,Fs,"Animate",,Fs); Fs->draw_it=&DrawIt; try { while (TRUE) { diff --git a/Demo/Games/Rocket.CPP b/Demo/Games/Rocket.CPP index 1874ec2b573733f0a3ba13645f18dba4d5307a93..d2afc4f350f62b6be41a33258de0c51b0fb017cb 100644 GIT binary patch delta 81 zcmaE)yiIw73)kdXTxV0GzcORR910 delta 121 zcmdm{{789&3sLP=3#S!z*nYKlTqr9ydToWEuJdf+nR&j6 X6_b6qjW|J8?^)RI(dE(L|~%si+3qLkDkD91Ok0>pC3Pj)UX YD$WNBgE%>LP=3#S!z*nYKlTqr9ydToVbu|Br&%sk)3 Xiph_}j5tA7ao2r=z3^mdX1UF+!U^mKj-@5}&iT0oIjJS7)?5k-;hA|(`9&$IMNp1!Vg-oh SlAr8cT2!20v{^y=0|x*|9T#f= delta 118 zcmccXKEY#yy|9M9en3%bYHmS^LT0f-ep;GBQl&ylYFc7xPKiQVevv|6YPmv5VsZ9n zd*M2E>+sAx-^2=QE(L|~%si+3qLkDk5C>`mi0P7_>|9z@oDUXvEG@}*&d)8#Ni9j; J{8s7%2LO9eDGLAq diff --git a/Demo/Games/Stadium/Stadium.CPP b/Demo/Games/Stadium/Stadium.CPP index ad70209e904fb021bedf8e0c77f6d05b25a2c96e..397719fd159b2cb83fca54d15246fe77de180223 100644 GIT binary patch delta 45 zcmX>rdq#FcFZ<*r>;fX;nR!n6MJcI8)?5k-;hA~9i51q9B{^g!Z(&c}Y|Jr>4FGZE B4=Vrw delta 56 zcmX>jdscQsFS~MhW}a_ig*BIgLU?ALQ+`oOY7vOzSXz?roS$2elUkBG`6PSha{=X-U3wer`cdYDua!mx4lgW}Z`iQA%nNl;fLNF?lkl;^at9y~!Im LMK@pKbQJ^ub&V7@ delta 69 zcmbPkHr;H4Hz!+oW}a_i#pHHQGakp%l6>d<+=86clGMq0oQg6jMTzC{nI*PrE=7su Zo+Z{?3JT$wc~1F7DXB%9FL1gG0su{+7z6+S diff --git a/Demo/Games/TreeCheckers.CPP b/Demo/Games/TreeCheckers.CPP index dc4eb0a..905e837 100644 --- a/Demo/Games/TreeCheckers.CPP +++ b/Demo/Games/TreeCheckers.CPP @@ -204,12 +204,15 @@ CDC *DrawHexMap(I64 *_w,I64 *_h) U0 Init() { I64 i,j,j1,j2,dd,best_dd,best,w=Fs->pix_width,h=Fs->pix_height; + map_dc=DrawHexMap(&w,&h); cur_player=0; + for (i=0;ic=c; - tempt->p[0].x=inner*Cos(é1); - tempt->p[0].z=inner*Sin(é1); - tempt->p[0].y=DipY(tempt->p[0].x,tempt->p[0].z); - tempt->p[1].x=outer*Cos(é1); - tempt->p[1].z=outer*Sin(é1); - tempt->p[1].y=DipY(tempt->p[1].x,tempt->p[1].z); - tempt->p[2].x=outer*Cos(é2); - tempt->p[2].z=outer*Sin(é2); - tempt->p[2].y=DipY(tempt->p[2].x,tempt->p[2].z); - tempt->p[3].x=inner*Cos(é2); - tempt->p[3].z=inner*Sin(é2); - tempt->p[3].y=DipY(tempt->p[3].x,tempt->p[3].z); + Track *result=_tempt,*tempt; + I64 dd,best=SqrI64(result->x-x)+SqrI64(result->z-z); + + tempt=_tempt; + while (TRUE) { + tempt=tempt->next; + if (tempt==&track_root) + tempt=tempt->next; + dd=SqrI64(tempt->x-x)+SqrI64(tempt->z-z); + if (ddlast; + if (tempt==&track_root) + tempt=tempt->last; + dd=SqrI64(tempt->x-x)+SqrI64(tempt->z-z); + if (ddcenter[0],&last->center[3],sizeof(CD3I32)); + MemCpy(&tempt->center[1],&last->center[2],sizeof(CD3I32)); + } + tempt->center[2].x=x+(WIDTH/2)*c+dx; + tempt->center[2].z=z+(WIDTH/2)*s+dz; + tempt->center[2].y=DipY(tempt->center[2].x,tempt->center[2].z); + tempt->center[3].x=x-(WIDTH/2)*c+dx; + tempt->center[3].z=z-(WIDTH/2)*s+dz; + tempt->center[3].y=DipY(tempt->center[3].x,tempt->center[3].z); + + if (last) { + MemCpy(&tempt->left[0],&last->left[3],sizeof(CD3I32)); + MemCpy(&tempt->left[1],&last->left[2],sizeof(CD3I32)); + } + tempt->left[2].x=x-(WIDTH/2)*c+dx; + tempt->left[2].z=z-(WIDTH/2)*s+dz; + tempt->left[2].y=DipY(tempt->left[2].x,tempt->left[2].z); + tempt->left[3].x=x-(WIDTH/2+SHOULDER)*c+dx; + tempt->left[3].z=z-(WIDTH/2+SHOULDER)*s+dz; + tempt->left[3].y=DipY(tempt->left[3].x,tempt->left[3].z); + + if (last) { + MemCpy(&tempt->right[0],&last->right[3],sizeof(CD3I32)); + MemCpy(&tempt->right[1],&last->right[2],sizeof(CD3I32)); + } + tempt->right[2].x=x+(WIDTH/2+SHOULDER)*c+dx; + tempt->right[2].z=z+(WIDTH/2+SHOULDER)*s+dz; + tempt->right[2].y=DipY(tempt->right[2].x,tempt->right[2].z); + tempt->right[3].x=x+(WIDTH/2)*c+dx; + tempt->right[3].z=z+(WIDTH/2)*s+dz; + tempt->right[3].y=DipY(tempt->right[3].x,tempt->right[3].z); + + tempt->x=x; + tempt->z=z; + tempt->é=é; + tempt->num=track_root.last->num+1; + tempt->d =track_root.last->d+d; + + QueIns(tempt,track_root.last); + + if (tempt->num&1) + tempt->c=RED; + else + tempt->c=WHITE; + + if (xt_maxx) t_maxx=x; + if (zt_maxz) t_maxz=z; + + x+=dx; + *_x=x; + z+=dz; + *_z=z; + + if (xt_maxx) t_maxx=x; + if (zt_maxz) t_maxz=z; +} + +U0 CoupleEnds() +{ + Track *first=track_root.next,*last=track_root.last; + MemCpy(&first->center[0],&last->center[3],sizeof(CD3I32)); + MemCpy(&first->center[1],&last->center[2],sizeof(CD3I32)); + MemCpy(&first->left[0] ,&last->left[3] ,sizeof(CD3I32)); + MemCpy(&first->left[1] ,&last->left[2] ,sizeof(CD3I32)); + MemCpy(&first->right[0] ,&last->right[3] ,sizeof(CD3I32)); + MemCpy(&first->right[1] ,&last->right[2] ,sizeof(CD3I32)); } U0 InitTrack() { - TrackPoly *tempt=track; - I64 i; - for (i=0;inum/mp_cnt+1; + track_start[i]=tempt; + while (tempt!=&track_root && tempt->num!=j) + tempt=tempt->next; + track_end[i]=tempt; + } + + t_minx-=BORDER; t_minz-=BORDER; + t_maxx+=BORDER; t_maxz+=BORDER; + track_map=DCNew((t_maxx-t_minx+1<>MAP_BITS, + (t_maxz-t_minz+1<>MAP_BITS); + + track_map->color=LTGRAY; + GrRect(track_map,0,0,track_map->width,track_map->height); + tempt=track_root.next; + track_map->color=YELLOW; + track_map->pen_width=3; + while (tempt!=&track_root) { + GrPlot3(track_map,track_map->width-(tempt->x-t_minx)>>MAP_BITS, + (tempt->z-t_minz)>>MAP_BITS,0); + tempt=tempt->next; } } #define HORIZON_DIP 200 +Bool PrepPoly(CD3I32 *p,I64 *r,I64 cx,I64 h,CD3I32 *poly) +{ + I64 x,y,z,i; + F64 s; + for (i=0;i<4;i++) { + x=p[i].x-c[0].p.x; + y=p[i].y-c[0].p.y; + z=p[i].z-c[0].p.z; + Mat4x4MulXYZ(r,&x,&y,&z); + s=100.0/(AbsI64(z)+50); + poly[i].y=s*y+h; + if (z<-200 || !(-hwin_task; - I64 i,j,x,y,z,lo,hi, - w=task->pix_width, - h=task->pix_height,r[16], - cx=w>>1; - F64 s,dip_é=Dipé(c[0].p.x,c[0].p.z,c[0].é); - Car *tempc; - Bool draw; + I64 i,x,y,z, + w=task->pix_width,h=task->pix_height,r[16],cx=w>>1; + F64 s,dip_é=Dipé(c[0].p.x,c[0].p.z,c[0].é); + Car *tempc; CD3I32 poly[4]; - TrackPoly *tempt; - CDC *dc=DCAlias(gr.dc2,task); + Track *tempt,*tempt1; + CDC *dc=DCAlias(gr.dc2,task); Mat4x4IdentEqu(r); Mat4x4RotY(r,ã-c[0].é); @@ -204,27 +362,19 @@ U0 MPUpdateWin(CDC *dc2) dc->depth_buf=dc2->depth_buf; //Track - lo=Gs->num*TRACK_POLYS/mp_cnt; - hi=(Gs->num+1)*TRACK_POLYS/mp_cnt; - for (i=lo,tempt=&track[lo];icolor=tempt->c; - draw=TRUE; - for (j=0;j<4;j++) { - x=tempt->p[j].x-c[0].p.x; - y=tempt->p[j].y-c[0].p.y; - z=tempt->p[j].z-c[0].p.z; - Mat4x4MulXYZ(r,&x,&y,&z); - s=100.0/(AbsI64(z)+50); - poly[j].y=s*y+h; - if (z<-200 || !(-hnum]; + tempt1=track_end [Gs->num]; + while (tempt!=tempt1) { + dc->color=DKGRAY; + if (PrepPoly(&tempt->center,r,cx,h,poly)) { GrFillPoly3(dc,4,poly); + dc->color=tempt->c; + if (PrepPoly(&tempt->left,r,cx,h,poly)) + GrFillPoly3(dc,4,poly); + if (PrepPoly(&tempt->right,r,cx,h,poly)) + GrFillPoly3(dc,4,poly); + } + tempt=tempt->next; } dc->flags|=DCF_TRANSFORMATION; @@ -278,11 +428,12 @@ U0 VRTransform(CDC *dc,I64 *x,I64 *y,I64 *z) U0 DrawIt(CTask *task,CDC *dc) { - I64 i,x,y,z, + I64 i,x,y,z, w=task->pix_width, h=task->pix_height,r[16], cx=w>>1; - F64 s,è,dip_é=Dipé(c[0].p.x,c[0].p.z,c[0].é); + F64 s,dip_é=Dipé(c[0].p.x,c[0].p.z,c[0].é); + Car *tempc=&c[0]; dc->color=LTCYAN; GrRect(dc,0,0,w,HORIZON_DIP*Sin(dip_é)+FONT_HEIGHT*4.5); @@ -310,14 +461,8 @@ U0 DrawIt(CTask *task,CDC *dc) while (mp_not_done_flags) Yield; - if (Bt(kbd.down_bitmap,SC_CURSOR_LEFT)) - è=-0.5; - else if (Bt(kbd.down_bitmap,SC_CURSOR_RIGHT)) - è=0.5; - else - è=0; Mat4x4IdentEqu(r); - Mat4x4RotY(r,è); + Mat4x4RotY(r,tempc->dé); Mat4x4RotX(r,0.4-8*dip_é); //Made this up dc->transform=&VRTransform; dc->x=task->pix_width>>1; @@ -326,12 +471,7 @@ U0 DrawIt(CTask *task,CDC *dc) SpriteMat3B(dc,0,0,-100,c[0].img,r); //Map - dc->color=LTGRAY; - GrRect(dc,w-64,h-64,64,64); - dc->color=LTGREEN; - for (i=0;iwidth,h-track_map->height,track_map); dc->pen_width=2; for (i=0;icolor=LTPURPLE; else dc->color=LTCYAN; - GrPlot3(dc,w-64+64*(0x5000-c[i].p.x)/0xA000, - h-64*(-c[i].p.z+0x5000)/0xA000,0); + GrPlot3(dc,w-(c[i].p.x-t_minx)>>MAP_BITS, + h-track_map->height+(c[i].p.z-t_minz)>>MAP_BITS,0); } if (game_over) { @@ -357,44 +497,58 @@ U0 DrawIt(CTask *task,CDC *dc) } else s=tS-t0; dc->color=BLACK; - GrPrint(dc,0,0,"é:%0.1f %0.1f%% Time:%0.2f Best:%0.2f", - 180+180/ã*Arg(c[0].p.x,c[0].p.z), - 100.0*distance/(2*ã*TRACK_INNER),s,best_score); + GrPrint(dc,0,0,"%0.1f%% Time:%0.2f Best:%0.2f", + 100.0*distance/track_root.last->d,s,best_score); } U0 AnimateTask(I64) { Car *tempc; - I64 i; - F64 m,a; + I64 i,x,z; + Bool on_track; + Track *tempt,*tempt2; while (TRUE) { if (!game_over) - Snd(c[0].speed*3+10); + Snd(0.01*c[0].speed*3+10); else Snd(0); for (i=0;ip.x-=tempc->speed*Cos(tempc->é-ã/2); - tempc->p.z+=tempc->speed*Sin(tempc->é-ã/2); + tempc->p.x-=0.01*tempc->speed*Cos(tempc->é-ã/2); + tempc->p.z+=0.01*tempc->speed*Sin(tempc->é-ã/2); + tempt=TrackFind(tempc->t,tempc->p.x,tempc->p.z); if (i) { - tempc->é=Arg(-tempc->p.x,tempc->p.z); - tempc->p.x=-(TRACK_INNER+TRACK_OUTER)/2*Cos(tempc->é); - tempc->p.z= (TRACK_INNER+TRACK_OUTER)/2*Sin(tempc->é); + if (tempt!=tempc->t) { + tempt2=tempt->next; + if (tempt2==&track_root) + tempt2=tempt2->next; + tempc->é=Arg(-tempt2->z+tempc->p.z,-tempt2->x+tempc->p.x); + } + } else { + tempc->é+=0.01*tempc->dé; + x=track_map->width-(tempc->p.x-t_minx)>>MAP_BITS; + z=(tempc->p.z-t_minz)>>MAP_BITS; + if (GrPeek(track_map,x,z)!=YELLOW) { + on_track=FALSE; + tempc->speed-=0.01*tempc->speed; + if (tempc->speed<0) tempc->speed=0; + } else + on_track=TRUE; } + tempc->t=tempt; tempc->p.y=DipY(tempc->p.x,tempc->p.z); } - R2P(&m,&a,c[0].p.x,c[0].p.z); - if (!game_over && TRACK_INNER<=m<=TRACK_OUTER) { + if (!game_over && on_track) { for (i=1;i>1) { + if (D3I32DistSqr(&c[i].p,&c[0].p)>1*CAR_LENGTH>>1) { game_over=TRUE; Noise(500,50,100); Sleep(500); break; } if (!game_over) { - distance+=c[0].speed; - if (distance>2*ã*TRACK_INNER && Wrap(a+ã,-ã)>0.0) { + distance+=0.01*c[0].speed; + if (distance>track_root.last->d&& c[0].t->numnum>>1) { tf=tS; game_over=TRUE; Beep; @@ -411,36 +565,61 @@ U0 AnimateTask(I64) CSprite *imgs[8]={$IB,"<1>",BI=1$,$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$,$IB,"<4>",BI=4$,$IB,"<4>",BI=4$}; -U0 Init() + +U0 InitBushes() { Bush *tempb; - Car *tempc; - I64 i; + I64 i,j,x,z; + track_map->color=LTGREEN; + track_map->pen_width=1; for (i=0;ip.x=RandU32&0x7FFF-0x4000; - tempb->p.z=RandU32&0x7FFF-0x4000; - } while (TRACK_INNER-SHOULDER<= - Sqrt(SqrI64(tempb->p.x)+SqrI64(tempb->p.z))<=TRACK_OUTER+SHOULDER); + +ib_restart: + tempb->p.x=Rand*(t_maxx-t_minx)+t_minx; + tempb->p.z=Rand*(t_maxz-t_minz)+t_minz; + x=track_map->width-(tempb->p.x-t_minx)>>MAP_BITS; + z=(tempb->p.z-t_minz)>>MAP_BITS; + for (j=0;j<8;j++) + if (GrPeek(track_map,x+gr_x_offsets[j],z+gr_y_offsets[j])!=LTGRAY) + goto ib_restart; + + GrPlot(track_map,x,z); tempb->p.y=DipY(tempb->p.x,tempb->p.z); tempb->sym=RandU16&1; tempb->img=imgs[i&7]; } +} + + +U0 Init() +{ + Car *tempc; + Track *tempt; + F64 d; + I64 i; + InitTrack; + InitBushes; + tempt=track_root.next; for (i=0;it=tempt; + tempc->p.x=tempt->x; + tempc->p.z=tempt->z; + tempc->p.y=DipY(tempc->p.x,tempc->p.z); + tempc->é =-tempt->é; + tempc->dé=0; + if (!i) { tempc->img=$IB,"<5>",BI=5$; tempc->speed=0; } else { tempc->img=$IB,"<6>",BI=6$; - tempc->speed=50.0; + tempc->speed=2500.0; } - tempc->é=i*2*ã/NUM_CARS; - tempc->p.x=-(TRACK_INNER+TRACK_OUTER)/2*Cos(tempc->é); - tempc->p.z= (TRACK_INNER+TRACK_OUTER)/2*Sin(tempc->é); - tempc->p.y=DipY(tempc->p.x,tempc->p.z); + d=(i+1)*track_root.last->d/NUM_CARS; + while (tempt->next!=&track_root && tempt->dnext; } distance=0; tf=0; @@ -448,6 +627,14 @@ U0 Init() game_over=FALSE; } +U0 CleanUp() +{ + while (mp_not_done_flags) + Yield; + QueDel(&track_root,TRUE); + DCDel(track_map); +} + U0 Varoom() { I64 sc; @@ -470,12 +657,11 @@ U0 Varoom() Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS -WIF_SELF_GRAB_SCROLL-WIF_FOCUS_TASK_MENU; AutoComplete; - WinMax; WinBorder; - Preempt; - Init; + WinMax; DocCursor; DocClear; + Init; Fs->draw_it=&DrawIt; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); while (TRUE) @@ -483,20 +669,22 @@ U0 Varoom() case 0: switch (sc.u8[0]) { case SC_CURSOR_LEFT: - c[0].é-=ã/100; + c[0].dé-=ã/60; break; case SC_CURSOR_RIGHT: - c[0].é+=ã/100; + c[0].dé+=ã/60; break; case SC_CURSOR_UP: - c[0].speed+=3; + c[0].speed+=300; break; case SC_CURSOR_DOWN: - c[0].speed-=3; + c[0].speed-=900; + if (c[0].speed<0) c[0].speed=0; break; } break; case '\n': + CleanUp; Init; break; case CH_SHIFT_ESC: @@ -506,6 +694,7 @@ U0 Varoom() vr_done: //Don't goto out of try } catch Fs->catch_except=TRUE; + CleanUp; SettingsPop(,TSF_SAME_SONG); MenuPop; RegWriteBranch("TempleOS/Varoom","F64 best_score=%5.4f;\n",best_score); diff --git a/Demo/Games/Wenceslas.CPP b/Demo/Games/Wenceslas.CPP index 93b6c7f..893e56d 100644 --- a/Demo/Games/Wenceslas.CPP +++ b/Demo/Games/Wenceslas.CPP @@ -128,7 +128,6 @@ U0 DrawIt(CTask *task,CDC *dc) Step *tempst; Peasant *tempp; F64 tt; - Bool old_preempt=Preempt; dc->pen_width=1; for (i=0;icolor=LTBLUE; GrPrint(dc,0,0,"Freezing Peasants:%d Time:%3.2f Best:%3.2f", not_stopped_cnt,tt-t0,best_score); - - Preempt(old_preempt); } U0 StepNew(CTask *task,I64 x,I64 y,F64 é,Bool left_right,Bool king) @@ -337,7 +334,7 @@ U0 Follow(CTask *,Peasant *tempp) } U0 AnimateTask(I64) -{//Preempt off by default after spawned. +{ Step *temps,*temps1; Peasant *tempp; I64 i,w,h; @@ -472,8 +469,11 @@ U0 Wenceslas() ); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + AutoComplete; + WinBorder; WinMax; - Preempt; + DocCursor; + DocClear; Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); PopUpOk(" @@ -536,10 +536,6 @@ Lead peasants to fires. Init; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - AutoComplete; - - DocCursor; - DocClear; Fs->draw_it=&DrawIt; try { while (TRUE) { diff --git a/Demo/Games/Whap.CPP b/Demo/Games/Whap.CPP index 609f57b..bc8e627 100644 --- a/Demo/Games/Whap.CPP +++ b/Demo/Games/Whap.CPP @@ -110,9 +110,9 @@ U0 Whap() CMathODE *ode=ODENew(0,1e-2,ODEF_HAS_MASSES); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - WinMax; AutoComplete; - Preempt; + WinBorder; + WinMax; MenuPush( "File {" diff --git a/Demo/Games/Zing.CPP b/Demo/Games/Zing.CPP index e83626847f42f6acb1ed21db110d2b24ffd9ba29..2b7227e6a72dd713ecf66f8b2ef9274a3c708d2d 100644 GIT binary patch delta 37 tcmaE+a!zH#EM6YR(vp1V{M>?^)RNT63wfm{%kqg&zRv5m*^JMC1ppWb4NCw3 delta 69 zcmX@7@=RsJEM9|vqSVyff)Z;k1%>d;Jg5Akl++?9$2YM8#BwYx$#>4rEyzhNNwwyh Re400S@-#I_GASbmX)tXB|Av`nBDZeNs jwFt`bO{@U1T=J8hON)y0izbH(RyN-j+b delta 158 zcmZpC$#(xG+XjASDFp?m{QMk+{G62df}+&a+=3F@00_OAmw76SFqET#q+s)0_EIK! zeSN4@W`3SRX0bwkTAD&)T1je=LU2K1dERCru0w3X;hA~9i51pd3JT$wc~1F7DXB%1 iF9?XRL$yw35v=5N$xn7JEh^40YOWOAUMa}Pu^0f!EI1ti diff --git a/Demo/GlblVars.CPP b/Demo/GlblVars.CPP index f4c3496..52987c4 100644 --- a/Demo/GlblVars.CPP +++ b/Demo/GlblVars.CPP @@ -46,7 +46,7 @@ because they don't take-up room in the .BIN.Z file. */ #ifjit -#exe {OptOn(OPTf_GLBLS_ON_DATA_HEAP);}; +#exe {Option(OPTf_GLBLS_ON_DATA_HEAP,ON);}; Test g2[]={ {10,"name1"}, @@ -70,7 +70,7 @@ U0 Main2() Main2; -#exe {OptOn(OPTf_GLBLS_ON_DATA_HEAP);}; +#exe {Option(OPTf_GLBLS_ON_DATA_HEAP,ON);}; #endif '\n'; diff --git a/Demo/Graphics/Bounce.CPP b/Demo/Graphics/Bounce.CPP index 6f77888..c6bf646 100644 --- a/Demo/Graphics/Bounce.CPP +++ b/Demo/Graphics/Bounce.CPP @@ -18,26 +18,25 @@ U0 Init() U0 Bounce() { CDC *dc=DCAlias; - I64 i,ch,update; + I64 i,ch; Init; try {//Catch do { - update=winmgr.updates; - do for (i=0;i<16;i++) { - dc->color=i; - GrPlot(dc,x[i].i32[1],y[i].i32[1]); - x[i]+=dx[i]; - y[i]+=dy[i]; - if (!(0<=x[i]pix_width<<32)) { - x[i]-=dx[i]; - dx[i]=-dx[i]; - } - if (!(0<=y[i]pix_height<<32)) { - y[i]-=dy[i]; - dy[i]=-dy[i]; - } + for (i=0;i<16;i++) { + dc->color=i; + GrPlot(dc,x[i].i32[1],y[i].i32[1]); + x[i]+=dx[i]; + y[i]+=dy[i]; + if (!(0<=x[i]pix_width<<32)) { + x[i]-=dx[i]; + dx[i]=-dx[i]; } - while (update==winmgr.updates); + if (!(0<=y[i]pix_height<<32)) { + y[i]-=dy[i]; + dy[i]=-dy[i]; + } + } + Yield; } while (!(ch=ScanChar) || (ch!=CH_SHIFT_ESC && ch!=CH_ESC)); } catch PutExcept; diff --git a/Demo/Graphics/Box.CPP b/Demo/Graphics/Box.CPP index 25ad1b5..e6a5aa1 100644 --- a/Demo/Graphics/Box.CPP +++ b/Demo/Graphics/Box.CPP @@ -27,7 +27,6 @@ U0 Box() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ DocClear; Fs->draw_it=&DrawIt; - Preempt; //We don't want matrix used while we're changing it. dc->x=200; dc->y=200; diff --git a/Demo/Graphics/Camp.CPP b/Demo/Graphics/Camp.CPP index 03c8b6d271a74fda5c665bb2827db18ab231dd34..df5709aa6b7eceae874465114b78e3498dabfd04 100644 GIT binary patch delta 88 zcmdnAm2v)7#tl!zCVv#G)N?E?$#>4rEyzhNNwwxuP;kjlb}lU{&M$&-a#9n)?2@8N jh3d(T;!cwvh#%*3$}dVuEwbhc&&=~ptk}F&;;$nB(kmer delta 98 zcmbQgm2uNn#tl!zI9&3RopVwXizeR}s}nCNs#K`vQczG(a4ap!ch1i($Vn|pwVvE9 s?j#OUSXxw^Ut|qd0OEr69Tz{#=bKnz%@v-R=agTRl3KKRk;Gp|0P|QQ?EnA( diff --git a/Demo/Graphics/Doodle.CPP b/Demo/Graphics/Doodle.CPP index a37336d..ba04831 100644 --- a/Demo/Graphics/Doodle.CPP +++ b/Demo/Graphics/Doodle.CPP @@ -8,11 +8,11 @@ U0 Doodle() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS-WIF_SELF_BORDER; - WinMax; AutoComplete; - - DCFill; + WinBorder; + WinMax; DocClear; + DCFill; do { msg_code=GetMsg(&a1,&a2, 1<win_inhibit|=WIG_DBL_CLICK; cur_ch=0; try { diff --git a/Demo/Graphics/Grid.CPP b/Demo/Graphics/Grid.CPP index 64de74c..7fee0f1 100644 --- a/Demo/Graphics/Grid.CPP +++ b/Demo/Graphics/Grid.CPP @@ -18,8 +18,10 @@ U0 GridDemo() ip_grid.y=GRID; old_draw_input_ptr=gr.fp_draw_input_ptr; gr.fp_draw_input_ptr=&DrawMyInputPtr; - while (!ip.lb) //Left button to exit. + while (!ip.lb) {//Left button to exit. GrPlot(,ip.pos.x,ip.pos.y); + Yield; + } DCFill; gr.fp_draw_input_ptr=old_draw_input_ptr; MemCpy(&ip_grid,&old_grid,sizeof(CGridGlbls)); diff --git a/Demo/Graphics/Lattice.CPP b/Demo/Graphics/Lattice.CPP index e1f0be2..efa4f29 100644 --- a/Demo/Graphics/Lattice.CPP +++ b/Demo/Graphics/Lattice.CPP @@ -169,12 +169,11 @@ U0 Lattice() "}" ); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - Preempt; - WinMax; AutoComplete; WinBorder; - DocClear; + WinMax; DocCursor; + DocClear; TurtleInit(&tt); SetMenu; Fs->win_inhibit=WIG_TASK_DFT-WIF_FOCUS_TASK_MENU diff --git a/Demo/Graphics/Life.CPP b/Demo/Graphics/Life.CPP index f92f520..32c8add 100644 --- a/Demo/Graphics/Life.CPP +++ b/Demo/Graphics/Life.CPP @@ -56,12 +56,13 @@ public U0 Life() restart=FALSE; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + AutoComplete; + WinBorder; WinMax; - DCFill; DocClear; + DCFill; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - AutoComplete; Fs->draw_it=&DrawIt; Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS-WIF_SELF_BORDER; do { diff --git a/Demo/Graphics/LowPassFilter.CPP b/Demo/Graphics/LowPassFilter.CPP index db67042..dcb450c 100644 --- a/Demo/Graphics/LowPassFilter.CPP +++ b/Demo/Graphics/LowPassFilter.CPP @@ -5,6 +5,7 @@ U0 LowPassFilterDemo() F64 y,y1,t,dt; CDC *dc=DCAlias; + WinBorder; WinMax; DocClear; diff --git a/Demo/Graphics/Mountain.CPP b/Demo/Graphics/Mountain.CPP index 46419646ded8109946ede1f0dcc4aad2354fc53a..225f355dee1c6d7a092b188c2ef7006c281ddb0e 100644 GIT binary patch delta 37 scmccJ!+N`ib%PU!kW+q9N@|fcmx6+VLU?ALZ(>Dr2*>si4n}r60QQLslmGw# delta 37 scmccJ!+N`ib%PU!kZ)pzHJ5^dfP8NN@`Ja2*>si4n}r60P!>nlmGw# diff --git a/Demo/Graphics/Pick.CPP b/Demo/Graphics/Pick.CPP index 8c7f50ef8237f8083b859fbe0ec679e8c8eae058..21736d990db147e871e9dbb60f4a18fab72d86c8 100644 GIT binary patch delta 12 Ucmca2a#Cc&7M9KXS*EfA041OWJ^%m! delta 21 dcmX>paz$jr78Z_xqSVyff)eY^8(C(s0svq72vYz6 diff --git a/Demo/Graphics/Pick3D.CPP b/Demo/Graphics/Pick3D.CPP index a3f4da8738e247b951b74f63261a9913d9935cd2..e14e26eff2ba3ced32dddff6e83e2fe32d71d17f 100644 GIT binary patch delta 52 zcmexw{Ka^~17T&y(vp1V{M>?^)RI(dE(L|~%si+3qLkDkD91OkV)AEU>&>1b+gJf3 C-4lBN delta 60 zcmexj{NH%P17YFt%sk)33TrL}h49Qgr~IOn)S}7EBG%%Lr6u{!`MCu-sU@i(*?^+d N)ZBuS%~m42SOKe*6=eVb diff --git a/Demo/Graphics/PoleZeros.CPP b/Demo/Graphics/PoleZeros.CPP index e22a1de..551ddb4 100644 --- a/Demo/Graphics/PoleZeros.CPP +++ b/Demo/Graphics/PoleZeros.CPP @@ -108,12 +108,11 @@ U0 PoleZeros() GrPaletteSet(gr_palette_gray); GrPaletteColorSet(15,0xFFFF00000000); //White is red - WinMax; AutoComplete; WinBorder; - - DCFill; + WinMax; DocClear; + DCFill; scale=1.0; try { diff --git a/Demo/Graphics/PredatorPrey.CPP b/Demo/Graphics/PredatorPrey.CPP index f541d31..f633684 100644 --- a/Demo/Graphics/PredatorPrey.CPP +++ b/Demo/Graphics/PredatorPrey.CPP @@ -55,11 +55,11 @@ U0 PredatorPrey() "with different, random, initial populations.\n"); SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ try { - DocClear; - WinMax; - WinBorder; - WinMgrSync; AutoComplete; + WinBorder; + WinMax; + DocClear; + WinMgrSync; dc->color=BLACK; GrLine(dc,OX,0,OX,GR_HEIGHT-FONT_HEIGHT-1); diff --git a/Demo/Graphics/RotateTank.CPP b/Demo/Graphics/RotateTank.CPP index 6e0272b106fd1b5b702160a3b8be93ab1dfe0c86..47cb9b459f5b12c077243373d4751039aa06a47d 100644 GIT binary patch delta 22 dcmbO)HeYN);KbN&4ww97=bY5UqK!|ixd38g2&4c2 delta 21 dcmbO)HeYN)AbWnYb53ev(L|pK8()}n0RUHt2vYz6 diff --git a/Demo/Graphics/ScrollBars.CPP b/Demo/Graphics/ScrollBars.CPP index b613ed16e93184561ccb7a309c013c924f3123f0..e325b0c605b42ea812a5656171c7e91adac027fe 100644 GIT binary patch delta 20 bcmbQCJVSYd1j}SQ7PZM@ENYumSWI{UK%xb0 delta 20 bcmbQCJVSYd1j}Rx7M00jEE=0rSWI{UK(YmI diff --git a/Demo/Graphics/Shading.CPP b/Demo/Graphics/Shading.CPP index de57ace..9469a3f 100644 --- a/Demo/Graphics/Shading.CPP +++ b/Demo/Graphics/Shading.CPP @@ -159,10 +159,10 @@ U0 Main() s->sz=6*VIEWANGLES_SNAP; SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ - DocClear; - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; + DocClear; Fs->draw_it=&DrawIt; try { "\n\nMove mouse to change light source.\n\n"; diff --git a/Demo/Graphics/Shadow.CPP b/Demo/Graphics/Shadow.CPP index a5fff272ab84fa6a43153695c4d3e34ad01491d8..b7ddae00d173a6d667fde2cbc4258bd94d8eb5f2 100644 GIT binary patch delta 12 TcmeAZY8Kicz_wYM?K2Yq88ZXL delta 21 ccmZn`>J!=^z{a7V5Kxqwnp?1$m+c!9078ofYXATM diff --git a/Demo/Graphics/Slider.CPP b/Demo/Graphics/Slider.CPP index 1a026e0..b040cbf 100644 --- a/Demo/Graphics/Slider.CPP +++ b/Demo/Graphics/Slider.CPP @@ -73,7 +73,6 @@ U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool) CCtrl *SliderNew() { - Bool old_preempt; CCtrl *c=CAlloc(sizeof(CCtrl)); c->win_task=Fs; c->flags=CTRLF_SHOW|CTRLF_CAPTURE_LEFT_IP; @@ -83,18 +82,14 @@ CCtrl *SliderNew() c->draw_it=&DrawCtrlSlider; c->left_click=&LeftClickSlider; c->update_derived_vals=&UpdateDerivedCtrlSlider; - old_preempt=Preempt; QueIns(c,Fs->last_ctrl); TaskDerivedValsUpdate; - Preempt(old_preempt); return c; } U0 SliderDel(CCtrl *c) { - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); Free(c); } diff --git a/Demo/Graphics/Speedline.CPP b/Demo/Graphics/Speedline.CPP index 35aefbe..dd456ac 100644 --- a/Demo/Graphics/Speedline.CPP +++ b/Demo/Graphics/Speedline.CPP @@ -9,11 +9,11 @@ public U0 SpeedLineDemo() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS-WIF_SELF_BORDER; - WinMax; - WinBorder; AutoComplete; - DCFill; + WinBorder; + WinMax; DocClear; + DCFill; do { msg_code=GetMsg(&a1,&a2, 1<IXG)DV?qSVyff)Z;5ef{uMg_Qg}^%8~h#Jm!P(t?!4l2nD1(xS|~bcNi+ flA_ECh2)IHy!2EZh1|>(g_NSia=p!y8C978CJ!3s diff --git a/Demo/Graphics/SpritePut.CPP b/Demo/Graphics/SpritePut.CPP index 28054ebd194271c5e2532c2ce71b2007cc738f11..f32af3a6f59ea50b11845c63a368284757b5b2f4 100644 GIT binary patch delta 12 TcmZoY%y{e&;{>~nwH%26B?1LF delta 60 zcmX?hh_UrB;{>~jAwoKi1qH?W0mX?qx%nxT`mPm;xdl0?#rjE!B_%nj8I`$t#rZk; Pdd>j>N-BCAZ8;MG$I2Ez diff --git a/Demo/Graphics/SunMoon.CPP b/Demo/Graphics/SunMoon.CPP index fa0277e..dd57712 100644 --- a/Demo/Graphics/SunMoon.CPP +++ b/Demo/Graphics/SunMoon.CPP @@ -7,10 +7,10 @@ U0 SunMoon() { I64 i,x,y,radius; + AutoComplete; //AutoComplete Off + WinBorder; //No Border WinMax; //Maximize window DocClear; //Clear command-line text - WinBorder; //No Border - AutoComplete; //AutoComplete Off Fs->text_attr=BLACK<<4+WHITE; //Current $LK,"CTask",A="MN:CTask"$ is Fs segment register. for (i=0;i<0x8000;i+=0x200) { diff --git a/Demo/Graphics/Symmetry.CPP b/Demo/Graphics/Symmetry.CPP index dc715bb..e0396ea 100644 --- a/Demo/Graphics/Symmetry.CPP +++ b/Demo/Graphics/Symmetry.CPP @@ -11,9 +11,10 @@ U0 SymmetryDemo() SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_FOCUS-WIF_SELF_BORDER; + WinBorder; WinMax; - DCFill; DocClear; + DCFill; dc->flags|=DCF_SYMMETRY; DCSymmetrySet(dc,Fs->pix_width/2,0,Fs->pix_width/2,1); do { @@ -50,10 +51,8 @@ U0 SymmetryDemo() } GrLine3(dc,x1,y1,0,x2,y2,0); break; - case MSG_KEY_DOWN: - break; } - } while (msg_code!=MSG_KEY_DOWN || !a1); + } while (msg_code!=MSG_KEY_DOWN || (a1!=CH_ESC && a1!=CH_SHIFT_ESC)); GetMsg(,,1<draw_it=&DrawCtrlSlider; c->left_click=&LeftClickSlider; c->update_derived_vals=&UpdateDerivedCtrlSlider; - old_preempt=Preempt; QueIns(c,sys_winmgr_task->last_ctrl); TaskDerivedValsUpdate; - Preempt(old_preempt); return c; } U0 SliderDel(CCtrl *c) { - Bool old_preempt=Preempt; QueRem(c); - Preempt(old_preempt); Free(c->state); Free(c); } diff --git a/Demo/Lectures/AndNotMod.CPP b/Demo/Lectures/AndNotMod.CPP index cec4f73..0be3b6a 100644 --- a/Demo/Lectures/AndNotMod.CPP +++ b/Demo/Lectures/AndNotMod.CPP @@ -6,7 +6,6 @@ U0 TimeIns() { I64 start1,end1,start2,end2,overhead_time,test_time; I64 reg i,reg temp; - Bool old_preempt=Preempt; CPURep; @@ -34,8 +33,6 @@ U0 TimeIns() test_time=end2-start2; "Remainder Version #2 Cycles\t: %10.5f\n", ToF64(test_time-overhead_time)/SAMPLE_SIZE; - - Preempt(old_preempt); } TimeIns; diff --git a/Demo/Lectures/FixedPointAdvanced.CPP b/Demo/Lectures/FixedPointAdvanced.CPP index 9bdd62a..5299a9a 100644 --- a/Demo/Lectures/FixedPointAdvanced.CPP +++ b/Demo/Lectures/FixedPointAdvanced.CPP @@ -78,7 +78,6 @@ U0 Main() I64 start,end,overhead_time,test_time; F64 d1,fsum; I64 reg i,temp,reg d2,reg sum; - Bool old_preempt=Preempt; CPURep; @@ -141,7 +140,6 @@ U0 Main() "$$RED$$Asm Float Cycles :%10.5f$$FG$$\n", ToF64(test_time)/SAMPLE_SIZE; - Preempt(old_preempt); } Main; diff --git a/Demo/Lectures/GraphicsCPULoad.CPP b/Demo/Lectures/GraphicsCPULoad.CPP index 3710e19..a569d6a 100644 --- a/Demo/Lectures/GraphicsCPULoad.CPP +++ b/Demo/Lectures/GraphicsCPULoad.CPP @@ -18,7 +18,6 @@ U0 GrDemo() { I64 i; F64 t; - Bool old_preempt=Preempt; CPURep; for (i=0;i<16;i++) { t=VGAPattern(0x5555555555555555); @@ -28,7 +27,6 @@ U0 GrDemo() "$$GREEN$$Rate:$$RED$$%5.1f FPS$$FG$$" " $$GREEN$$Load@30Hz:$$RED$$%5.1f%%$$FG$$\n",1/t,100*t*30.0; } - Preempt(old_preempt); // will flush screen VGA cache. VGAFlush; } diff --git a/Demo/Lectures/InterruptDemo.CPP b/Demo/Lectures/InterruptDemo.CPP index 7e60581..8048c52 100644 --- a/Demo/Lectures/InterruptDemo.CPP +++ b/Demo/Lectures/InterruptDemo.CPP @@ -55,7 +55,6 @@ U0 TimeIns() { I64 start,end; I64 i,old_irq; - Bool old_preempt=Preempt; CPURep; old_irq=IntEntrySet(I_F_UNARY_MINUS,F_UNARY_MINUS_INT,IDTET_TRAP); @@ -74,7 +73,6 @@ U0 TimeIns() end=GetTSC; "Call Cycles: %10.5f\n",ToF64(end-start)/SAMPLE_SIZE; - Preempt(old_preempt); IntEntrySet(I_F_UNARY_MINUS,old_irq,IDTET_IRQ); } diff --git a/Demo/Lectures/MiniCompiler.CPP b/Demo/Lectures/MiniCompiler.CPP index 01c7747..bf67b28 100644 --- a/Demo/Lectures/MiniCompiler.CPP +++ b/Demo/Lectures/MiniCompiler.CPP @@ -4,9 +4,9 @@ $ID,2$The mini compiler is like the main compiler, except the main compiler's le The main compiler generates $LK,"Intermediate Code",A="FF:::/Compiler/CompilerA.HPP,IC_END"$ at the parser stage. See $LK,"PrsExpression",A="MN:PrsExpression"$(), $LK,"PrsStatement",A="MN:PrsStatement"$(). -The main compiler optimizes See $LK,"Intermediate Code Attributes",A="MN:intermediate_code_table"$, $LK,"Combining Consts",A="FF:::/Compiler/OptPass012.CPP,case IC_MUL"$, $LK,"Choosing Reg Vars",A="FF:::/Compiler/OptPass3.CPP,cmp.num_reg_vars"$. Set $LK,"OTrace",A="MN:OTrace"$(ON) to see the optimization stages. +The main compiler optimizes See $LK,"Intermediate Code Attributes",A="MN:intermediate_code_table"$, $LK,"Combining Consts",A="FF:::/Compiler/OptPass012.CPP,case IC_MUL"$, $LK,"Choosing Reg Vars",A="FF:::/Compiler/OptPass3.CPP,cmp.num_reg_vars"$. Use $LK,"PassTrace",A="MN:PassTrace"$() to see the optimization stages. -The main compiler makes machine code in the back end. See $LK,"IC Struct",A="MN:CIntermediateCode"$, $LK,"COCCompile",A="MN:COCCompile"$ and $LK,"OptPass789A",A="FF:::/Compiler/OptPass789A.CPP,IC_MUL"$(), $LK,"BackEnd",A="FF:::/Compiler/BackA.CPP,ICMul"$. Set $LK,"CTrace",A="MN:CTrace"$(ON) to see the output of the backend. +The main compiler makes machine code in the back end. See $LK,"IC Struct",A="MN:CIntermediateCode"$, $LK,"COCCompile",A="MN:COCCompile"$ and $LK,"OptPass789A",A="FF:::/Compiler/OptPass789A.CPP,IC_MUL"$(), $LK,"BackEnd",A="FF:::/Compiler/BackA.CPP,ICMul"$. Set $LK,"Trace",A="MN:Trace"$(ON) to see the output of the backend. $ID,-2$ $TR,"Mini Compiler"$ $ID,2$For this mini compiler, some things you should know about 64-bit asm: diff --git a/Demo/Lectures/MiniGrLib.CPP b/Demo/Lectures/MiniGrLib.CPP index d04c270..65ef591 100644 --- a/Demo/Lectures/MiniGrLib.CPP +++ b/Demo/Lectures/MiniGrLib.CPP @@ -105,10 +105,8 @@ U0 MGCircle(I64 x,I64 y,F64 r) U0 MiniGrLibDemo() { I64 i; - Bool old_preempt; MGInit; - old_preempt=Preempt; for (i=0;i<100;i++) MGHLine(200+i,400+i,300+i); for (i=0;i<500;i+=10) @@ -117,7 +115,6 @@ U0 MiniGrLibDemo() MGCircle(200,100+i,i); MGUpdate; BusyWait(1500000); - Preempt(old_preempt); /* We are returning graphics to normal operations under TempleOS. It is not normal to by-pass the TempleOS graphcis routines. diff --git a/Demo/Lectures/PCIInterrupts.CPP b/Demo/Lectures/PCIInterrupts.CPP index 230f6ce..6cc3dd4 100644 --- a/Demo/Lectures/PCIInterrupts.CPP +++ b/Demo/Lectures/PCIInterrupts.CPP @@ -8,31 +8,31 @@ #assert I_USER==0x40 -interrupt U0 MyVect40() +interrupt U0 IntMy40() { lock {progress1++;} *LAPIC_EOI(U32 *)=0; } -interrupt U0 MyVect41() +interrupt U0 IntMy41() { lock {progress2++;} *LAPIC_EOI(U32 *)=0; } -interrupt U0 MyVect42() +interrupt U0 IntMy42() { lock {progress3++;} *LAPIC_EOI(U32 *)=0; } -interrupt U0 MyVect43() +interrupt U0 IntMy43() { lock {progress4++;} *LAPIC_EOI(U32 *)=0; } -I64 vect[4]={&MyVect40,&MyVect41,&MyVect42,&MyVect43}; +I64 vect[4]={&IntMy40,&IntMy41,&IntMy42,&IntMy43}; U0 Main() { diff --git a/Demo/Lectures/PageTableEntries2.CPP b/Demo/Lectures/PageTableEntries2.CPP index bd1f1e8..972a5c5 100644 --- a/Demo/Lectures/PageTableEntries2.CPP +++ b/Demo/Lectures/PageTableEntries2.CPP @@ -12,7 +12,7 @@ I64 *addr=VGAM_GRAPHICS, 48[RBP]=STK_SELECTOR */ -interrupt haserrcode U0 PageFault() +interrupt haserrcode U0 IntPageFault() { I64 reg *rbp=GetRBP; *pte_addr|=1; @@ -24,7 +24,7 @@ interrupt haserrcode U0 PageFault() U0 PageTableDemo2() { - U8 *old_idte=IntEntrySet(I_PAGE_FAULT,&PageFault,IDTET_IRQ); + U8 *old_idte=IntEntrySet(I_PAGE_FAULT,&IntPageFault,IDTET_IRQ); err_code=0; *pte_addr &=~1; //Not present InvlPg(addr); diff --git a/Demo/Lectures/Ring3.CPP b/Demo/Lectures/Ring3.CPP index 941a8c4..88791a9 100644 --- a/Demo/Lectures/Ring3.CPP +++ b/Demo/Lectures/Ring3.CPP @@ -12,7 +12,7 @@ a fault to switch back. U8 *old_stk,*new_rip; asm { -TO_RING0:: //Set to handle general protection 0xD fault temporarily. +INT_TO_RING0:: //Set to handle general protection 0xD fault temporarily. INC U64 [SYS_PROGRESS1] PUSH U32 CGDT.ds //STKSEG MOV RAX,U64 [&old_stk] @@ -29,7 +29,7 @@ U0 Ring3Demo() U8 *old_vect; "Progress1 Before:%X\n",progress1; CLI - old_vect=IntEntrySet(0x0D,TO_RING0,IDTET_TRAP,0); + old_vect=IntEntrySet(0x0D,INT_TO_RING0,IDTET_TRAP,0); TSSBusy(Gs->tss->tr_ring3,OFF); SetRAX(Gs->tss->tr_ring3+3); diff --git a/Demo/Lectures/ScreenMemory.CPP b/Demo/Lectures/ScreenMemory.CPP index 6da4315..38df174 100644 --- a/Demo/Lectures/ScreenMemory.CPP +++ b/Demo/Lectures/ScreenMemory.CPP @@ -10,8 +10,6 @@ U0 PlotXY(I64 x,I64 y) U0 Main() { I64 i; - Bool old_preempt=Preempt; - //This makes all 4 color planes active. OutU8(VGAP_INDEX,VGAR_MAP_MASK); OutU8(VGAP_DATA,WHITE); @@ -39,8 +37,6 @@ That means no read-modify-writes, too. */ BusyWait(4000000); - Preempt(old_preempt); - //TempleOS has a 4 plane memory duplicate of the screen, $LK,"gr.screen_image",A="MN:CGrGlbls"$, //and only writes actual changes. See $LK,"GrUpdateVGAGraphics",A="MN:GrUpdateVGAGraphics"$(). // will flush screen VGA cache. diff --git a/Demo/Lectures/Spinning.CPP b/Demo/Lectures/Spinning.CPP deleted file mode 100644 index fe5b300..0000000 --- a/Demo/Lectures/Spinning.CPP +++ /dev/null @@ -1,107 +0,0 @@ -//This task lets you hear how busy the CPU is. -U0 LoadTask(I64) -{ - I64 i,j=100; -//Preemption is ctrlled on a per task basis. - //Preemption is OFF by default on new tasks. - //It is turned on for user terminal tasks. - Preempt(ON); - while (TRUE) { - for (i=0;i<10000;i++) - InU8(0x21); //Roughly 1 microsecond on all PC's - Snd(j); - j+=20; - if (j>1000) j=100; - } -} - -U0 SpinningPreempt() -{ - I64 i; - "Spinning with preemption....\n"; - for (i=0;i<3000000;i++) - InU8(0x21); //This is a sample hardware stat read -} - -U0 SpinningNoPreempt() -{ - I64 i; - Bool old_preempt; - "Spinning with no preemption...\n"; - - //Put on screen before it starts. Text lags by one refresh - //and we might catch it in the middle of an update. - WinMgrSync; - WinMgrSync; - WinMgrSync; - - old_preempt=Preempt; - for (i=0;i<3000000;i++) - InU8(0x21); - Preempt(old_preempt); -} - -U0 SpinningNoInterrupts() -{ - I64 i; -//Interrupts are ctrlled on a per task basis. - "Spinning with no interrupts...\n"; - WinMgrSync; - WinMgrSync; - WinMgrSync; - CLI - for (i=0;i<3000000;i++) - InU8(0x21); - STI -} - -U0 CooperativeMultitaskingPreempt() -{ - F64 timeout=tS+3.0; - - "Cooperative multitasking with preemption...\n"; - while (tStext_attr=YELLOW<<4+BLUE; Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs); - DocCursor; - WinMax; - WinBorder; AutoComplete; + WinBorder; + WinMax; + DocCursor; + DocClear; Init; Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs); - DocClear; "$$BG,LTCYAN$$%h*c",SKY_LINES,'\n'; "$$BG,YELLOW$$%h5c",'\n'; BibleVerse(,"Exodus,14:19",7); - Preempt; Fs->draw_it=&DrawIt; GetChar; WinMgrSync; diff --git a/Demo/MultiCore/Interrupts.CPP b/Demo/MultiCore/Interrupts.CPP index 0d6d198..1f0cfb1 100644 --- a/Demo/MultiCore/Interrupts.CPP +++ b/Demo/MultiCore/Interrupts.CPP @@ -1,10 +1,10 @@ -interrupt U0 BeepOn() +interrupt U0 IntBeepOn() { *LAPIC_EOI(U32 *)=0; //signal end of interrupt Snd(100); } -interrupt U0 BeepOff() +interrupt U0 IntBeepOff() { *LAPIC_EOI(U32 *)=0; Snd(0); @@ -12,8 +12,8 @@ interrupt U0 BeepOff() U0 IntTest() {//Modify interrupt descriptor table use by all cores. - IntEntrySet(I_USER,&BeepOn,IDTET_TRAP); - IntEntrySet(I_USER+1,&BeepOff,IDTET_TRAP); + IntEntrySet(I_USER,&IntBeepOn,IDTET_TRAP); + IntEntrySet(I_USER+1,&IntBeepOff,IDTET_TRAP); //Issue interupt to core#1 MPInt(I_USER,1); Sleep(1000); diff --git a/Demo/MultiCore/LoadTest.CPP b/Demo/MultiCore/LoadTest.CPP index 2bd7a54..9351a86 100644 --- a/Demo/MultiCore/LoadTest.CPP +++ b/Demo/MultiCore/LoadTest.CPP @@ -3,7 +3,6 @@ I64 app_done_ack; U0 Job1(I64) {//Compile Compiler - Preempt(ON); //Off by default Silent; while (!app_done) { Cd("::/Compiler"); @@ -14,7 +13,6 @@ U0 Job1(I64) U0 Job2(I64) {//Log a file - Preempt(ON); //Off by default while (!app_done) { AdamLog("%F","::/Demo/MultiCore/LoadTest.CPP"); Yield; @@ -24,7 +22,6 @@ U0 Job2(I64) U0 Job3(I64) {//Log a file - Preempt(ON); //Off by default while (!app_done) { Cd("::/Compiler"); AdamLog("%F","Compiler.PRJ.Z"); diff --git a/Demo/ParenWarn.CPP b/Demo/ParenWarn.CPP index d70758c..a4e85d6 100644 --- a/Demo/ParenWarn.CPP +++ b/Demo/ParenWarn.CPP @@ -1,4 +1,4 @@ -OptOn(OPTf_WARN_PAREN); +Option(OPTf_WARN_PAREN,ON); F64 d,d1=1,d2=1; @@ -14,4 +14,4 @@ d=2`(3`2); d=-d1`(d+d2); -OptOff(OPTf_WARN_PAREN); +Option(OPTf_WARN_PAREN,OFF); diff --git a/Demo/RandDemo.CPP b/Demo/RandDemo.CPP index b984f0f..5de09b2 100644 --- a/Demo/RandDemo.CPP +++ b/Demo/RandDemo.CPP @@ -13,7 +13,7 @@ U0 RandDemo() I64 i; "Seed(0) will do timer randomized random numbers. A task starts with " - "$LK,"Seed(0)",A="FF:::/Kernel/Task.CPP,Seed("$ by dft.\n"; + "$LK,"Seed(0)",A="FF:::/Kernel/KTask.CPP,Seed("$ by dft.\n"; PressAKey; Seed; RandPts; diff --git a/Demo/ReverseFileExample/Reverse.CPP b/Demo/ReverseFileExample/Reverse.CPP index f3769ab..8ee4d4a 100644 --- a/Demo/ReverseFileExample/Reverse.CPP +++ b/Demo/ReverseFileExample/Reverse.CPP @@ -12,7 +12,6 @@ U0 Reverse(U8 *in_name,U8 *out_name) DocTop(doc_in); while (doc_in->root.next!=doc_in) { EdLineDown(doc_in,SC_CURSOR_DOWN|SCF_SHIFT); - ClipboardDel; EdCutToClipboard(doc_in); DocTop(doc_out); EdPasteClipboard(doc_out); diff --git a/Demo/Snd/MorseCode.CPP b/Demo/Snd/MorseCode.CPP index eca6378..f063550 100644 --- a/Demo/Snd/MorseCode.CPP +++ b/Demo/Snd/MorseCode.CPP @@ -130,7 +130,6 @@ I64 MorseWaitKey() U0 Morse() { - Bool old_preempt; CDocEntry *doc_e; I64 ch; U8 buf[8],*dst,*src; @@ -144,12 +143,8 @@ U0 Morse() "$$GREEN$$"; - //We don't want the tag call back - //called before we set it, so preempt off. - old_preempt=Preempt; doc_e=DocPrint(DocPut,"$$TX+TC,\" \"$$"); doc_e->tag_cb=&MorseTimes; - Preempt(old_preempt); "$$FG$$\n"; diff --git a/Demo/Snd/WaterFowl.CPP b/Demo/Snd/WaterFowl.CPP index b78a688c9480dd6465ae86af95738ffb3b4590ac..94557817c5cf6090c312b4cd4bb0460a7a6d5875 100644 GIT binary patch delta 66 zcmbR9R%p&!p$%mm%8sQa`Of*d1v#lDsn%Qy3gMY~PWeSCsYOtZZ(>FBOpf-M9E|NV RIhfjKaxib7$-%rbp,task); @@ -30,7 +27,6 @@ U0 SpyCallerRep(CTask *task) } if (DocPut==doc) DocDblBufSwap; DocDblBufEnd; - Preempt(old_preempt); } U0 Spy() diff --git a/Demo/SuggestSpelling.CPP b/Demo/SuggestSpelling.CPP index 6961ef8..d652713 100644 --- a/Demo/SuggestSpelling.CPP +++ b/Demo/SuggestSpelling.CPP @@ -12,7 +12,7 @@ U8 *SuggestMatchForm(U8 *src) if (!StrOcc("AEIOU",ch)) { if (ch=='C') ch='K'; if (ch=='Z') ch='S'; - if (ch!=ch1) //F64 chars to single + if (ch!=ch1) //double chars to single *dst++=ch; } ch1=ch; @@ -27,7 +27,7 @@ U8 *SuggestMatchForm(U8 *src) I16 block; //definition offset in ::/Adam/AutoComplete/ACDefs.DAT */ -U0 SuggestSpelling(U8 *word) +Bool SuggestSpelling(U8 *word) { U8 *dict=acd.word_lst, *pf=SuggestMatchForm(word), @@ -35,20 +35,22 @@ U0 SuggestSpelling(U8 *word) I64 len=StrLen(pf), num_cols=Fs->win_width/16, col=0; - while (*dict) { - wf=SuggestMatchForm(dict+1); - if (!StrNCmp(pf,wf,len)) { - "%16s",dict+1; - if (++col==num_cols) { - col=0; - '\n'; + if (len) + while (*dict) { + wf=SuggestMatchForm(dict+1); + if (!StrNCmp(pf,wf,len)) { + "%16s",dict+1; + if (++col>=num_cols) { + col=0; + '\n'; + } } + Free(wf); + dict+=StrLen(dict+1)+4; } - Free(wf); - dict+=StrLen(dict+1)+4; - } Free(pf); '\n'; + return ToBool(len); } U0 SuggestSpellingDemo() @@ -71,13 +73,17 @@ U0 CtrlAltL(I64) { //$LK,"ac.cur_word",A="MN:CAutoCompleteGlbls"$ is only set if AutoComplete //is running. - PopUp("SuggestSpelling(ac.cur_word);View;"); + if (!TaskValidate(ac.task)) { + AutoComplete(ON); + Sleep(500); + } + PopUp("if (SuggestSpelling(ac.cur_word)) View;"); } if (Fs!=adam_task) SuggestSpellingDemo; else { - CtrlAltLetCBSet('L',&CtrlAltL,"Cmd/Suggest Spelling"); + CtrlAltCBSet('L',&CtrlAltL,"Cmd /Suggest Spelling"); //Appears in the Adam Task Window " installed\n"; } diff --git a/Demo/TimeIns.CPP b/Demo/TimeIns.CPP index f348570..2afe87b 100644 --- a/Demo/TimeIns.CPP +++ b/Demo/TimeIns.CPP @@ -9,7 +9,6 @@ U0 TimeIns() { I64 i,start,end,overhead_time,test_time; F64 d=5.0; - Bool old_preempt=Preempt; //Measure Loop Overhead start=GetTSC; @@ -20,16 +19,15 @@ U0 TimeIns() start=GetTSC; for (i=0;i$FG$ Closes the $FG,7$LTGRAY$FG$ AutoComplete window. $FG,2$$FG$ Opens the $FG,7$LTGRAY$FG$ AutoComplete window. diff --git a/Doc/Boot.TXT b/Doc/Boot.TXT index 5db5166691580741e8b17294c783de8b07c2561d..b7981eaab8a548113d7ef1397dd9c2569dc59a29 100644 GIT binary patch delta 181 zcmaE;*r>E&J|m01OPI^%#f+&?77z1zCT9PFlF7GNjlnbzn>~|D*yM?9qO$%4CHhYJ z`4GY-%tg;RAV5il)7b@N#^g#iU9g6wY~En{J)1w6wq-XLbqRA(adTHu$ShVU$w*az u>gZs12U|b+GP@>N>2G#Zh=2))4wFm%<`fP#R`%eM#G(@a;LUlw#moSV?KWNj delta 149 zcmZovdZ@TzJ|l~6kiYNd#f+&?77z1zrpfnNjV6n-*)cj#p3f#K;gp|Wq7NdRUG$s- z0+duZon1h>CbzTcPTs-hHJOdwZ*l~?nTWHCikrKNLT0f-Nk*yyRMBE~cd#9k-?3{> hmgX>laDq8>SbP(+Q#Utqu(7f@rX=QW?&B?H1^^B&E2;nh diff --git a/Doc/ChangeLog.TXT b/Doc/ChangeLog.TXT index 3016cf2..b587d83 100644 --- a/Doc/ChangeLog.TXT +++ b/Doc/ChangeLog.TXT @@ -2,7 +2,120 @@ Use $LK,"R",A="MN:R"$() to rename if I change a label. -$IV,1$----07/20/15 11:24:35----$IV,0$ +$IV,1$----09/27/15 21:18:10----$IV,0$ + +$IV,1$----09/27/15 11:46:44----$IV,0$ +* Got rid of preemption. + +$IV,1$----09/23/15 14:17:35----$IV,0$ +* No arrays in fun args. +* Got rid of 4x4 array dimensions in function args. + +$IV,1$----09/05/15 11:26:12----$IV,0$ +* Gave $LK,"I_DIV_ZERO",A="MN:I_DIV_ZERO"$ its own vector instead of common fault vector. +* $LK,"R",A="MN:R"$("$FG,4$Dsk$FG$","$FG,4$BlkDev$FG$"); + +$IV,1$----09/04/15 17:04:39----$IV,0$ +* $BK,1$TempleOS version 3.11 Released$BK,0$ + +$IV,1$----08/28/15 01:50:15----$IV,0$ +* Added $LK,"BibleView",A="MN:BibleView"$() and $FG,2$$FG$. + +$IV,1$----08/25/15 23:29:48----$IV,0$ +* Moved $LK,"ToDolDoc",A="MN:ToDolDoc"$() to $FG,2$/Adam/Opt/Utils$FG$. +* $LK,"R",A="MN:R"$("$FG,4$map$FG$","$FG,4$fat$FG$"); + +$IV,1$----08/22/15 20:38:15----$IV,0$ +* $LK,"R",A="MN:R"$("$FG,4$CDImageWrite$FG$","$LK,"DVDImageWrite",A="MN:DVDImageWrite"$"); +* $LK,"R",A="MN:R"$("$FG,4$MakeDistro$FG$","$FG,4$DoDistro$FG$"); +* $LK,"R",A="MN:R"$("$FG,4$::/Home/Adam*.CPP$FG$","$FG,4$::/Home/Home*.CPP$FG$"); +* Created $FG,2$Make*.CPP$FG$ make dir files. +* Moved $FG,2$/Adam/Boot$FG$ and $FG,2$/Adam/Utils$FG$ to $FG,2$/Adam/Opt$FG$. + +$IV,1$----08/21/15 19:14:29----$IV,0$ +* $BK,1$TempleOS version 3.10 Released$BK,0$ + +$IV,1$----08/20/15 20:05:08----$IV,0$ +* Fixed bug in $LK,"::/Adam/ABlkDev/FileMgr.CPP"$. +* Fixed bug in $LK,"::/Demo/Games/TreeCheckers.CPP"$. + +$IV,1$----08/18/15 07:28:03----$IV,0$ +* Improved $LK,"::/PersonalMenu.TXT"$. +* Improved $LK,"::/Demo/Games/BattleLines.CPP"$. + +$IV,1$----08/16/15 14:42:01----$IV,0$ +* Improved $LK,"::/Demo/Games/BlackDiamond.CPP"$. +* Improved $LK,"::/Demo/Games/EagleDive.CPP"$. +* Improved $LK,"::/Demo/Games/RawHide.CPP"$. +* Improved $LK,"::/Apps/TimeOut/TimeOut.CPP"$. +* Improved $LK,"::/Demo/Games/FlapBat.CPP"$. +* Improved $LK,"::/Demo/Games/Varoom.CPP"$. +* Improved $LK,"::/Demo/Games/BomberGolf.CPP"$. + +$IV,1$----08/09/15 09:47:10----$IV,0$ +* Cleaned-up Ultra distro. + +$IV,1$----08/08/15 06:14:09----$IV,0$ +* $BK,1$TempleOS version 3.09 Released$BK,0$ + +$IV,1$----08/06/15 09:28:49----$IV,0$ +* Removed most Moses comics so you can make your own. +* Removed most hymns so that you can make your own. + +$IV,1$----08/05/15 21:39:59----$IV,0$ +* Fixed bug parsing "$$GREEN FG$$". It is an error. + +$IV,1$----08/05/15 13:49:10----$IV,0$ +* Fixed bug in $LK,"SrvCmdsHandler",A="MN:SrvCmdsHandler"$() && $LK,"SrvTaskCont",A="MN:SrvTaskCont"$(). + +$IV,1$----08/03/15 18:09:33----$IV,0$ +* Improved $LK,"::/Demo/Games/FlapBat.CPP"$. + +$IV,1$----08/02/15 07:19:59----$IV,0$ +* $LK,"R",A="MN:R"$("$FG,4$BugBird$FG$","$FG,4$FlapBat$FG$"); + +$IV,1$----08/02/15 02:51:04----$IV,0$ +* Rearranged $LK,"::/Adam/DolDoc/MakeDoc.CPP"$. +* Got rid of ext ascii with alt-digits keys. Just use $FG,2$$FG$. +* Rearranged $LK,"DocPutKey",A="MN:DocPutKey"$(). +* Got rid of $FG,4$PressKeyHelp$FG$(). +* $LK,"R",A="MN:R"$("$FG,4$CtrlAltLet$FG$","$FG,4$CtrlAlt$FG$"); + +$IV,1$----07/30/15 22:26:22----$IV,0$ +* Fixed bug. Now, turned-off preemption in $LK,"WinMgrTask",A="MN:WinMgrTask"$(). +* Added $LK,"::/Misc/Tour/Tour1.AUT"$. + +$IV,1$----07/30/15 03:38:10----$IV,0$ +* Added ::/Apps/Psalmody/Examples/caesar.CPP + +$IV,1$----07/29/15 10:17:29----$IV,0$ +* Improved $LK,"::/Linux/TOSZ.CPP"$. +* Rearranged AutoComplete and $LK,"KeyMap",A="MN:KeyMap"$() code. +* Added $LK,"WinInside",A="MN:WinInside"$(). +* Added $LK,"SYS_SEMA_JUST_PUMP_MSGS",A="MN:SYS_SEMA_JUST_PUMP_MSGS"$. +* Added help for $FG,2$$FG$ & $FG,2$$FG$ keys. +* Added $LK,"WIf_SELF_KEY_DESC",A="MN:WIf_SELF_KEY_DESC"$. + +$IV,1$----07/26/15 06:57:29----$IV,0$ +* Cleaned-up $LK,"MemberClassBaseFind",A="MN:MemberClassBaseFind"$() and $LK,"MemberAdd",A="MN:MemberAdd"$(). +* $LK,"R",A="MN:R"$("$FG,4$member_lst$FG$","$FG,4$member_lst_and_root$FG$"); + +$IV,1$----07/24/15 19:35:12----$IV,0$ +* $BK,1$TempleOS version 3.08 Released$BK,0$ +* Fixed $LK,"UAsm",A="FI:::/Compiler/UAsm.CPP"$ bug. +* $LK,"R",A="MN:R"$("$FG,4$CTrace$FG$","$LK,"Trace",A="MN:Trace"$()"); +* $LK,"R",A="MN:R"$("$FG,4$OTrace$FG$","$LK,"PassTrace",A="MN:PassTrace"$()"); +* $LK,"R",A="MN:R"$("$FG,4$OTraceMask$FG$","$LK,"PassTrace",A="MN:PassTrace"$()"); +* $LK,"R",A="MN:R"$("$FG,4$GetEqu$FG$","$LK,"Option",A="MN:Option"$()"); +* $LK,"R",A="MN:R"$("$FG,4$GetOpt$FG$","$LK,"GetOption",A="MN:GetOption"$()"); +* $LK,"R",A="MN:R"$("$FG,4$OptOn$FG$","$LK,"Option",A="MN:Option"$(,ON)"); +* $LK,"R",A="MN:R"$("$FG,4$OptOff$FG$","$LK,"Option",A="MN:Option"$(,OFF)"); +* Added $LK,"Dsk Stk Diagram",A="FI:::/Doc/FileLowLevel.TXT"$. + +$IV,1$----07/22/15 22:45:16----$IV,0$ +* Fixed bug in $LK,"EdFindReplace",A="MN:EdFindReplace"$(). + +$IV,1$----07/20/15 19:48:53----$IV,0$ * Added args to $LK,"Del",A="MN:Del"$(). * Rearranged disk code. * $LK,"R",A="MN:R"$("$FG,4$CFileAccess$FG$","$LK,"CDirContext",A="MN:CDirContext"$"); @@ -24,12 +137,12 @@ $IV,1$----06/26/15 12:54:41----$IV,0$ * $BK,1$TempleOS version 3.07 Released$BK,0$ $IV,1$----06/19/15 18:16:11----$IV,0$ -* Added $LK,"::/Apps/Psalmody/Examples/science.CPP.Z"$. -* Added $LK,"::/Apps/AfterEgypt/Comics/Moses84.TXT.Z"$. -* Added $LK,"::/Apps/AfterEgypt/Comics/Moses85.TXT.Z"$. +* Added ::/Apps/Psalmody/Examples/science.CPP +* Added ::/Apps/AfterEgypt/Comics/Moses84.TXT +* Added ::/Apps/AfterEgypt/Comics/Moses85.TXT $IV,1$----06/13/15 07:36:01----$IV,0$ -* Improved $LK,"::/Demo/Games/EagleDive.CPP.Z"$. +* Improved $LK,"::/Demo/Games/EagleDive.CPP"$. $IV,1$----06/11/15 19:26:27----$IV,0$ * Fixed bug in $FG,2$$FG$ macros. @@ -37,7 +150,7 @@ $IV,1$----06/11/15 19:26:27----$IV,0$ $IV,1$----06/04/15 08:31:15----$IV,0$ * Improved assembler and unassembler. -* Added $LK,"::/Doc/HelloWorld.TXT.Z"$. +* Added $LK,"::/Doc/HelloWorld.TXT"$. $IV,1$----05/26/15 21:10:30----$IV,0$ * Added $LK,"DCF_PALETTE",A="MN:DCF_PALETTE"$. @@ -51,17 +164,17 @@ $IV,1$----05/23/15 09:46:51----$IV,0$ * $LK,"R",A="MN:R"$("$FG,4$VGAPalette4Get$FG$","$LK,"GrPaletteGet",A="MN:GrPaletteGet"$"); * $LK,"R",A="MN:R"$("$FG,4$VGAPalette4Set$FG$","$LK,"GrPaletteSet",A="MN:GrPaletteSet"$"); * Added flags to $LK,"DCSave",A="MN:DCSave"$() and $LK,"GRAWrite",A="MN:GRAWrite"$(). -* Added palettes to $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$. +* Added palettes to $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT"$. $IV,1$----05/19/15 21:28:19----$IV,0$ -* Fixed bug in $LK,"::/Apps/Psalmody/PsalmodyFile.CPP.Z"$. +* Fixed bug in $LK,"::/Apps/Psalmody/PsalmodyFile.CPP"$. $IV,1$----05/18/15 09:05:45----$IV,0$ * $BK,1$TempleOS version 3.06 Released$BK,0$ * $LK,"R",A="MN:R"$("$FG,4$BIOS32$FG$","$FG,4$PCIBIOS$FG$"); $IV,1$----05/14/15 15:39:41----$IV,0$ -* Enhanced $LK,"::/Apps/Psalmody/Examples/abyss.CPP.Z"$. +* Enhanced ::/Apps/Psalmody/Examples/abyss.CPP $IV,1$----05/13/15 07:51:00----$IV,0$ * Fixed bug in $LK,"ToHtml",A="MN:ToHtml"$(). @@ -124,19 +237,19 @@ $IV,1$----04/30/15 19:13:07----$IV,0$ * Cleaned-up $LK,"Who",A="MN:Who"$() and compiler mapfiles. $IV,1$----04/11/15 05:48:05----$IV,0$ -* Fixed bug in $LK,"DrvMapBlkClean",A="MN:DrvMapBlkClean"$(). +* Fixed bug in $LK,"DrvFATBlkClean",A="MN:DrvFATBlkClean"$(). $IV,1$----04/09/15 04:42:31----$IV,0$ -* Improved $LK,"::/Demo/Games/TreeCheckers.CPP.Z"$. +* Improved $LK,"::/Demo/Games/TreeCheckers.CPP"$. $IV,1$----04/08/15 15:24:27----$IV,0$ * $LK,"R",A="MN:R"$("DocDo","DocEd"); $IV,1$----04/07/15 05:27:38----$IV,0$ -* Added $LK,"::/Apps/Psalmody/Examples/whos.CPP.Z"$. +* Added ::/Apps/Psalmody/Examples/whos.CPP $IV,1$----04/04/15 14:27:07----$IV,0$ -* Enhanced $LK,"::/Apps/Psalmody/Examples/proponent.CPP.Z"$. +* Enhanced ::/Apps/Psalmody/Examples/proponent.CPP $IV,1$----03/30/15 10:29:57----$IV,0$ * $LK,"R",A="MN:R"$("cur_data_col","cur_col"); @@ -144,15 +257,15 @@ $IV,1$----03/30/15 10:29:57----$IV,0$ * Fixed bug in $LK,"EdLineDown",A="MN:EdLineDown"$(). $IV,1$----03/28/15 02:41:15----$IV,0$ -* Fixed $LK,"::/Demo/Snd/WaterFowl.CPP.Z"$. -* Added $LK,"::/Demo/Graphics/Grid.CPP.Z"$. -* Enhanced $LK,"::/Apps/Psalmody/Examples/image.CPP.Z"$. -* Enhanced $LK,"::/Apps/Psalmody/Examples/dream.CPP.Z"$. -* Enhanced $LK,"::/Apps/Psalmody/Examples/killed.CPP.Z"$. -* Enhanced $LK,"::/Apps/Psalmody/Examples/worship.CPP.Z"$. +* Fixed $LK,"::/Demo/Snd/WaterFowl.CPP"$. +* Added $LK,"::/Demo/Graphics/Grid.CPP"$. +* Enhanced ::/Apps/Psalmody/Examples/image.CPP +* Enhanced ::/Apps/Psalmody/Examples/dream.CPP +* Enhanced ::/Apps/Psalmody/Examples/killed.CPP +* Enhanced ::/Apps/Psalmody/Examples/worship.CPP $IV,1$----03/23/15 07:21:26----$IV,0$ -* Updated $LK,"::/Demo/Graphics/Pick.CPP.Z"$. +* Updated $LK,"::/Demo/Graphics/Pick.CPP"$. * Modified $LK,"DCF_LOCATE_NEAREST",A="MN:DCF_LOCATE_NEAREST"$. $IV,1$----03/21/15 09:10:58----$IV,0$ @@ -164,13 +277,13 @@ $IV,1$----03/18/15 02:00:15----$IV,0$ $IV,1$----03/14/15 07:08:05----$IV,0$ * $BK,1$TempleOS version 3.04 Released$BK,0$ -* Reformatted $LK,"::/Kernel/Font8x8.CPP.Z"$. +* Reformatted $LK,"::/Kernel/Font8x8.CPP"$. * Added $LK,"PopUpGetF64",A="MN:PopUpGetF64"$(). $IV,1$----03/14/15 04:48:50----$IV,0$ * $LK,"R",A="MN:R"$("AcctReg...","Reg..."); * Overhauled $LK,"GrUpdateTasks",A="MN:GrUpdateTasks"$(). -* Overhauled $LK,"::/Doc/GraphicsOverview.TXT.Z"$. +* Overhauled $LK,"::/Doc/GraphicsOverview.TXT"$. $IV,1$----03/09/15 06:07:25----$IV,0$ * Dict now has extended ASCII chars. @@ -182,11 +295,11 @@ $IV,1$----02/25/15 02:51:45----$IV,0$ * Added IRC ChatBot $LK,"::/Linux/TempleBot",A="PI:::/Linux/TempleBot"$. $IV,1$----02/21/15 19:07:32----$IV,0$ -* Added $LK,"::/Demo/DolDoc/NumBible.CPP.Z"$. +* Added $LK,"::/Demo/DolDoc/NumBible.CPP"$. $IV,1$----02/19/15 18:39:53----$IV,0$ * Fixed bug in $FG,2$$FG$ $LK,"GodDoodle",A="MN:GodDoodle"$(). -* Made default arg for $LK,"Preempt",A="MN:Preempt"$() into "OFF". +* Made default arg for $FG,4$Preempt$FG$() into "OFF". $IV,1$----02/17/15 21:32:26----$IV,0$ * Made so cmd line doesn't print answer line unless a new answer occurs. @@ -195,7 +308,7 @@ $IV,1$----02/14/15 05:12:45----$IV,0$ * Added $LK,"Dump",A="MN:Dump"$(). $IV,1$----02/13/15 13:46:14----$IV,0$ -* Got rid of "body_size" in $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$. +* Got rid of "body_size" in $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT"$. $IV,1$----02/13/15 09:49:33----$IV,0$ * $BK,1$TempleOS version 3.03 Released$BK,0$ diff --git a/Doc/Charter.TXT b/Doc/Charter.TXT index 926172a..bf15f96 100644 --- a/Doc/Charter.TXT +++ b/Doc/Charter.TXT @@ -31,7 +31,7 @@ $LM,0$ * Low line count is the highest good, so it is easy to learn the whole thing. Users should see the light at the end of the tunnel. One file system, for example, is better than many file systems. -* There is a limit of 100,000 lines of code for all time, not including applications and demos. $FG,4$Code comments count$FG$, however. $FG,4$3rd party libraries are banned$FG$ because they circumvent the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API that is the only dependency of applications. Currently, there are $TX,"80,860",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code. +* There is a limit of 100,000 lines of code for all time, not including applications and demos. $FG,4$Code comments count$FG$, however. Currently, there are $TX,"81,048",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code. $FG,4$3rd party libraries are banned$FG$ because they circumvent the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API that is the only dependency of applications. Dependency on components and libraries creates a hell that is no longer blissful. * Minimal abstraction is a goal. Sheep are fools. They always respect a design that is more complicated than another. Any genius can make it complicated. Like in physics, it takes a supra-genius to make it simple. diff --git a/Doc/CompilerOverview.TXT b/Doc/CompilerOverview.TXT index b2fde21..49bf9bb 100644 --- a/Doc/CompilerOverview.TXT +++ b/Doc/CompilerOverview.TXT @@ -21,7 +21,26 @@ $HL,1$$WW,0$ #define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->lex_include_stk->full_name);} #define __DIR__ #exe{StreamDir;} $HL,0$$WW,1$ -See $LK,"::/Demo/Directives.CPP"$, $LK,"Scoping and Linkages",A="FI:::/Doc/ImportExports.TXT"$, $LK,"preprocessor",A="FF:::/Compiler/Lex.CPP,KW_DEFINE"$ and $LK,"Compiler Options",A="FI:::/Doc/Options.TXT"$. +See $LK,"::/Demo/Directives.CPP"$, $LK,"Scoping and Linkages",A="FI:::/Doc/ImportExports.TXT"$, and $LK,"preprocessor",A="FF:::/Compiler/Lex.CPP,KW_DEFINE"$. + + +$FG,5$$TX+CX,"Compiler Options"$$FG$ + +Use $LK,"Option",A="MN:Option"$(). You might need to do $FG,2$#exe {Option();}$FG$. + +$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ without this option, global vars are placed in the code heap which is limited to 2 Gig. In $FG,2$AOT$FG$ modules, global vars take-up room in the $FG,2$.BIN$FG$ file, so you might want to use this option, instead. You might wish to turn it on and off around specific vars. A disadvantage of data heap global vars in $FG,2$AOT$FG$ modules is they can't be initialized. + +$LK,"OPTf_EXTERNS_TO_IMPORTS",A="MN:OPTf_EXTERNS_TO_IMPORTS"$ and $LK,"OPTf_KEEP_PRIVATE",A="MN:OPTf_KEEP_PRIVATE"$ are strange options, you'll never need. They're to allow the same header file for $FG,2$Kernel$FG$ to act as $FG,2$extern$FG$s when compiling itself and $FG,2$import$FG$s when compiled by $FG,2$AOT$FG$ modules. + +$LK,"OPTf_WARN_UNUSED_VAR",A="MN:OPTf_WARN_UNUSED_VAR"$ warning if unused var. It is applied to functions. + +$LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$ warning if parenthesis are not needed. + +$LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$ warning if dup local var type statements. + +$LK,"OPTf_NO_REG_VAR",A="MN:OPTf_NO_REG_VAR"$ forces all function local vars to the stk not regs. Applied to functions. + +$LK,"OPTf_NO_BUILTIN_CONST",A="MN:OPTf_NO_BUILTIN_CONST"$ Disable 10-byte float consts for ã, log2_10, log10_2, loge_2. Applied to functions. $FG,5$$TX+CX,"Assembler Directives"$$FG$ diff --git a/Doc/Confuse.TXT b/Doc/Confuse.TXT index e041bbc..28547ef 100644 --- a/Doc/Confuse.TXT +++ b/Doc/Confuse.TXT @@ -1,12 +1,12 @@ $WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$ -* I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"120,912",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"11.6",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders. See $LK,"::/Doc/Credits.TXT.Z"$. +* I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"119,216",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.2",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders. See $LK,"::/Doc/Credits.TXT"$. -* TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration. See $LK,"::/Doc/Credits.TXT.Z"$. +* TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration. See $LK,"::/Doc/Credits.TXT"$. * TempleOS is 100% independent -- it does not access the files of your primary operating system. It will work as the only operating system on your computer. -* TempleOS is 100% written from scratch. There is no $FG,2$Linux$FG$ or $FG,2$GNU$FG$ or any other code in TempleOS. Yes, I wrote the compiler from scratch. (I probably need to repeat that a few times.) See $LK,"::/Doc/Credits.TXT.Z"$. +* TempleOS is 100% written from scratch. There is no $FG,2$Linux$FG$ or $FG,2$GNU$FG$ or any other code in TempleOS. Yes, I wrote the compiler from scratch. (I probably need to repeat that a few times.) See $LK,"::/Doc/Credits.TXT"$. * TempleOS is an operating system, not a browser. The cmd line has active links. They link to local files. @@ -22,7 +22,7 @@ $WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$ * $LK,"Sleep",A="MN:Sleep"$() makes a program pause. It is not hybernation for a laptop. -* $LK,"Yield",A="MN:Yield"$() saves the current task's regs (context) and loads in the next task. When waiting, it's better to do this than check a condition in a loop until you get preempted. Checking a condition until you get preempted wastes CPU. TempleOS does not use virtual memory, so $LK,"Yield",A="MN:Yield"$() involves no disk activity. A swap takes half a microsecond. See $LK,"::/Demo/Lectures/Spinning.CPP"$. +* $LK,"Yield",A="MN:Yield"$() saves the current task's regs (context) and loads in the next task. * I use the term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$. This means it is compiled and executable code placed into mem, ready to be called. diff --git a/Doc/Credits.TXT b/Doc/Credits.TXT index 29a98b9..17a4639 100644 --- a/Doc/Credits.TXT +++ b/Doc/Credits.TXT @@ -20,7 +20,7 @@ $WW,1$$FG,5$$TX+CX,"Credits"$$FG$ 10) I included $LK,"PCIDevice Lst File",A="FI:::/Misc/PCIDevices.TXT",HTML="http://www.pcidatabase.com/reports.php?type=tab-delimeted"$. -11) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.CPP.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"ToHtml",A="FI:::/Adam/Utils/ToHtml.CPP"$. +11) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.CPP.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"ToHtml",A="FI:::/Adam/Opt/Utils/ToHtml.CPP"$. 12) I used $FG,4$$TX,"MagicISO",HTML="http://www.magiciso.com"$$FG$ to burn test CD's to help me understand the ISO9660 file system format. I mostly used the $FG,4$$TX,"ISO9660",HTML="http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html"$$FG$ spec. diff --git a/Doc/Customize.TXT b/Doc/Customize.TXT index e548d44..fedbd29 100644 --- a/Doc/Customize.TXT +++ b/Doc/Customize.TXT @@ -1,6 +1,6 @@ -$WW,1$* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:/Home/AdamLocalize.CPP,mouse.scale"$. +$WW,1$* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:/Home/HomeLocalize.CPP,mouse.scale"$. -* You can set your local time zone by setting the $RED$local_time_offset$FG$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:/Home/AdamLocalize.CPP,local_time"$. +* You can set your local time zone by setting the $RED$local_time_offset$FG$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:/Home/HomeLocalize.CPP,local_time"$. * Get rid of this msg $LK,"here",A="FF:/Home/DoOnce.CPP,Customize.TXT"$. diff --git a/Doc/CutCorners.TXT b/Doc/CutCorners.TXT index 2861a67..23eba99 100644 --- a/Doc/CutCorners.TXT +++ b/Doc/CutCorners.TXT @@ -6,7 +6,7 @@ There are a few places where I cut corners in the interest of not junking-up cod * TempleOS does not figure-out $FG,2$FAT32$FG$ short name alias numbers. $LK,"FAT32DirNew",A="MN:FAT32DirNew"$(). It can cause hard drive corruption, so I might have to do it. It would really take a lot of junky code for this hatefully, detestable, legacy issue. "Please don't make me ruin my beautiful shiny-new TempleOS with that!" I am also not enthused about $FG,2$FAT32$FG$ because it is in patent limbo. $FG,2$FAT32$FG$ might get removed from TempleOS. There is the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ 64-bit file system that works perfectly well. $FG,2$FAT32$FG$ is useful, however, because it assists in transferring between dual booted operating systems. -* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.TXT"$ names to remove the ambiguity between instructions with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CPP"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/Adam/Boot/BootCD.CPP"$. +* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.TXT"$ names to remove the ambiguity between instructions with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CPP"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$. * There are no user-controlled file-sharing locks. However, the drive and file system have locks and concurrent operations should be fine. diff --git a/Doc/DbgOverview.TXT b/Doc/DbgOverview.TXT index 75b45f2..1b5f2d2 100644 --- a/Doc/DbgOverview.TXT +++ b/Doc/DbgOverview.TXT @@ -30,13 +30,13 @@ $WW,1$$FG,5$$TX+CX,"Debugging Overview"$$FG$ $ID,2$ $LK,"Echo",A="MN:Echo"$() turns on or off raw data going into the lexical analyzer. -$LK,"CTrace",A="MN:CTrace"$() unassembles code generated from the HolyC compiler. +$LK,"Trace",A="MN:Trace"$() unassembles code generated from the HolyC compiler. -$LK,"OTrace",A="MN:OTrace"$() shows intermediate code coming-out after optimization. $LK,"OTraceMask",A="MN:OTraceMask"$() ctrls which passes are displayed. +$LK,"PassTrace",A="MN:PassTrace"$() shows intermediate code coming-out after optimization. The bits ctrl which passes are displayed. $ID,-2$ * There is a heap check utility which can find leaks. Use $LK,"HeapLog",A="MN:HeapLog"$(), and $LK,"HeapLogRep",A="MN:HeapLogRep"$(). It's a really simple program which intercepts $LK,"MAlloc",A="MN:MAlloc"$() and $LK,"Free",A="MN:Free"$(). You can customize the code to find other heap issues. -* You can define handler functions for $FG,2$$FG$ keys with $LK,"CtrlAltLetCBSet",A="MN:CtrlAltLetCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$$FG$ handlers take a scan_code as an arg. +* You can define handler functions for $FG,2$$FG$ keys with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$$FG$ handlers take a scan_code as an arg. * If you recompile $FG,2$Kernel$FG,2$$FG$ with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(), you can set the $FG,4$MemInit$FG$, option to initialize memory to a value at boot, the $FG,4$HeapInit$FG$ option to cause mem alloced off the heap to be initialized or $FG,4$VarInit$FG$ option so both global and local vars will be initialized to a value. Pick a non-zero value to discover uninitialized var bugs. You can set $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$, and $LK,"sys_heap_init_flag",A="MN:sys_heap_init_flag"$ directly after booting. diff --git a/Doc/Demands.TXT b/Doc/Demands.TXT index 6e44e44..b9b9647 100644 --- a/Doc/Demands.TXT +++ b/Doc/Demands.TXT @@ -1,76 +1,109 @@ $WW,1$$FG,5$$TX+CX,"Demands"$$FG$ -I, Terry Davis, am High Priest of God's official temple, TempleOS. TempleOS is an operating system for PC desktops that dual boots along-side Windows or Linux. I am in charge of the core 100,000 lines of TempleOS code and I do continual offerings to keep God entertained. I have divine authority to command companies in the computer industry to do anything to make God's temple more beautiful or perfect. I have authority similar to the Americans with Disability Act -- I make commands with God signing-off by creating miraculous authenticated oracles. +I, Terry Davis, am High Priest of God's official temple, TempleOS. TempleOS is an operating system for PC desktops that will always dual boot along-side Windows or Linux. I am in charge of the core 100,000 lines of TempleOS code and I do continual offerings to keep God entertained. I have divine authority to command any company in the computer industry to do anything that I deem necessary to make God's temple more beautiful or perfect. I have authority similar to a building inspector or an enforcer of the Americans with Disability Act -- I make commands, God signs-off with a miraculous authentication from an oracle, and Intel, Microsoft or VMware obeys. -$HC,""$ +* Windows, Linux and VMware (because of mounted drives) must support $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system so I can get rid of 2,000 lines of redundant, blemished code -- FAT32 and ISO9660. God's temple must be perfect. Redundant code for multiple file systems is imperfect. For this operating system, we want low line count. More than one file system type is actually bad, just as more than one driver for the same type of device is bad. +$LK,"::/Kernel/BlkDev/FileSysRedSea.CPP"$ +$LK,"::/Kernel/BlkDev/FileSysFAT.CPP"$ :965 lines for FAT32 gets eliminated. +$LK,"::/Kernel/BlkDev/FileSysISO.CPP"$ :284 lines for ISO9660 gets eliminated. +$LK,"::/Adam/Opt/Boot/DskISOFile.CPP"$ :536 lines for making ISO files gets reduced. +$LK,"::/Kernel/BlkDev/DskCluster.CPP"$ :152 All the cluster operations become blk. -* VMware must again support PC Speaker and provide emulation if no PC Speaker is present. +* Microsoft must cancel SecureBoot because it makes dual booting impossible. TempleOS is an additional operating system that must be used along-side Windows or Linux, not as a replacement. It must dual boot because it has no networking. Real hardware as opposed to VMware is like the difference between looking in a telescope eye piece vs just looking at an off-line image. God said the C64/Apple ][ generation owned ancestral lands. VMware is like being taken off of our land and moved onto a reservation. In this case, however, it will not stand. -* VMware must again support full screen 640x480 16 color mode. +* To PC hardware manufacturers and VMware: ATA/ATAPI PIO must work. In fact, put them at standard IDE port addresses. Hard disk should be primary master 1F0/3F6. CD/DVD/BlueRay should be secondary master 170/376. See what you can do to make flash memory sticks and NV memory with ATA/ATAPI interface. +$LK,"/Kernel/BlkDev/DskATAId.CPP",A="FI:::/Kernel/BlkDev/DskATAId.CPP"$ :280 lines to figure-out I/O ports is gone. +$LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could be eliminated, but maybe we will keep it so people can play with PCI devices. -* Windows, Linux and VMware (because of mounted drives) must support $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system so I can get rid of 2,000 lines of redundant, blemished code -- FAT32 and ISO9660. God's temple must be perfect. Redundant code for multiple file systems is imperfect. For this operating system, we want low line count. More than one file system type is bad, just as more than one driver for the same type of device is bad. - -$LK,"::/Kernel/Dsk/FileSysRedSea.CPP"$ -$LK,"::/Kernel/Dsk/FileSysFAT.CPP"$ :965 lines for FAT32 gets eliminated. -$LK,"::/Kernel/Dsk/FileSysISO.CPP"$ :284 lines for ISO9660 gets eliminated. -$LK,"::/Adam/Boot/DskISOFile.CPP"$ :536 lines for making ISO files gets reduced. -$LK,"::/Kernel/Dsk/DskCluster.CPP.Z"$ :152 All the cluster operations become blk. - -* Microsoft must cancel SecureBoot because it makes dual booting impossible. TempleOS is an additional operating system that must be used along-side Windows or Linux, not as a replacement. It must dual boot because it has no networking. Real hardware as opposed to $FG,2$VMware$FG$ is like the difference between looking in a telescope eye piece or not. God said the C64 generation owned ancestral lands and $FG,2$VMware$FG$ is like being moved onto a reservation, but in this case it will not stand. - -* PC hardware manufacturers? ATA/ATAPI PIO must work. In fact, put them at standard IDE port addresses. Hard disk should be primary master 1F0/3F6. CDROM/DVD should be secondary master 170/376. See what you can do to make flash memory sticks with ATA/ATAPI. -$LK,"/Kernel/Dsk/DskATAId.CPP",A="FI:::/Kernel/Dsk/DskATAId.CPP"$ :280 lines to figure-out I/O ports is gone. -$LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could eliminate,but people can play with. +* VMware needs to support ATAPI CD/DVD/BlueRay disk burning, directly to real hardware. +* VMware has a bug stretching 640x480 16 color to full screen. +* VMware has a bug starting-up multicore, sometimes. $LK,"APIC MP Start",A="FF:::/Kernel/MultiProc.CPP.Z,IPI"$ +* VMware PC speaker distortion is a good idea, but it is ridiculously too much distortion for hymns. * PS/2 emulated keyboard and mouse must work. The BIOS must enable these. -* VMware must allow ATAPI interface to be routed to real CD/DVD hardware. +* The x86 IN/OUT port instructions, normally have a delay. Perhaps, VMware & Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't bad. See $LK,"ATAGetResult",A="MN:ATAGetResult"$(). Perhaps, x86 chips have a new TempleOS mode? -* Perhaps, VMware+Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't bad. $LK,"ATAGetResult",A="MN:ATAGetResult"$(). - -* Perhaps, Intel can make a fast software interrupt, the same as a CALL REL32? +* Perhaps, Intel can make a fast software interrupt, the same as a CALL REL32? Perhaps, we have a new x86 mode for TempleOS? * Since I don't use paging (for anything), Intel should have an option for no-paging long mode, and optimize it. -$LK,"::/Kernel/MemA.CPP.Z"$ :153 lines to identity-map gets eliminated. +$LK,"::/Kernel/MemA.CPP"$ :153 lines to identity-map gets eliminated. -* Desktop computers must have a RESET switch and a fast reboot option, skipping diagnostics. Build UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM at the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle. A new ROM version is released every seven years. +* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting TempleOS when the reset button is pressed and booting UEFI when the power button is pressed. Or, we could build UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM in the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because God deserves the glory. There will be just an English version. A new ROM version is released every seven years. + +* Somebody needs to choose new 8-bit ASCII characters for 128-255. We do not want text graphic symbols. We want Russian, Greek and Hebrew alphabets, perhaps? We need the twelve window $LK,"TextBorder",A="MN:TextBorder"$ characters, but I think we can place them in the range of screen code from 0x01-0x1E. Japan, China and Korea should switch-over to alphabets. Maybe, the United States will change to metric, out of good will. * VMware and others must list TempleOS as an official 64-bit operating system. -* Windows Paint and Linux Gimp must support TempleOS $FG,2$.GRA$FG$ graphics files. $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$ are much cleaner than $FG,2$$TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$$FG$. +* Windows' Paint and Linux's Gimp must support TempleOS .GRA graphics files. $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT"$ are much cleaner than $TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$. * We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.CPP"$. -* We must have the ultimate Bible search engine. +* We must have the ultimate Bible search engine. Currently, all we have is $TX,"filter search",HTML="https://www.youtube.com/watch?v=ULJU8DzvQFo"$. In the end, it should be a low line-count technique. -* Once every 49 years is a jubile year and all hardware gets thrown-out and upgraded to become perfect. The first jubile year is in 2024. It works the same as how broadcast TV got upgraded. God still wants 640x480 16 color, but make it a linear frame buffer one-byte-per-pixel and only 16 color. +* Once every 49 years is a jubile year and all hardware gets thrown-out and upgraded to become perfect. The first jubile year is in 2024. It works the same way as how broadcast TV was upgraded from NTSC to HD. God still wants 640x480 16 colors, but make it a linear frame buffer one-byte-per-pixel but only 16 colors. -* TempleOS only uses x86 I/O ports for hardware. (It also uses VGA memory.) The industry has matured and we can, now, allocate I/O ports in a beautiful, consecutive, perfect pattern for all the devices. +* TempleOS must only use x86 I/O ports for hardware access, except for VGA frame buffer memory. The industry has matured and we can, now, allocate I/O ports in a beautiful, consecutive, perfect, pattern for all the devices. Perhaps, this is enabled with an x86 TempleOS mode? -* The year, 2024, is the first jubile year. We want 8-channel, modern-speed, OCTART serial ports, with a simple software interface, more like old-style RS232 serial ports, to replace USB. It should have big TX and RX FIFOs and allow flow control to jump the queue. There will be no USB end-point nonsense -- just put 8 ports on the PC. (I am just interested in desktops.) We want keyboards, mice and joysticks to have a single, simple, uniform ASCII text packet command. Hyperterm can be used to easily debug all devices. We want to be able to connect microcontrollers for simple, general purpose send-byte/receive-byte communication. You will buy a PCI card if you need legacy USB or more ports. +* The year, 2024, is the first jubile year. Intel will make new chips, starting in 2 years and by 2024, everybody's PC will have been upgraded. Windows and Linux are not affected, except by the new serial port scheme that replaces USB. We want an 8-channel, modern, high-speed, OCTART serial port, with a simple software interface, more like old-style RS232 serial ports, to replace USB. It should have 8 big TX and RX FIFOs and allow flow control to jump the queue. There will be no USB end-point nonsense -- just put 8 ports on the PC. (I am just interested in desktops.) We want keyboards, mice and joysticks to have a single, simple, uniform ASCII text packet command. Hyperterm or XTalk could be used to easily communicate with and debug all serial port devices. We want to be able to connect microcontrollers for simple, general purpose (send-byte/receive-byte) communication. Buy a PCI card if you need legacy USB ports or more than 8 serial ports. + +To talk to keyboard, mouse or joystick, a kid might use XTalk or Hyperterm or Telnet session such as this: + +TX: +RX: X:+3 Y:+0 Wheel:+0 LB:OFF RB:OFF +TX: +RX: X:+0 Y:-1 Wheel:+0 LB:ON RB:OFF + +Mice should have exactly 2 buttons. Make a standard joystick or game controller. The industry is mature and we will lock everything down into one format without flexibility. No more Human Interface Device reports. + +Many people assume devices can be hacked. A thermostat with an interface like this, cannot be hacked. We don't want a full Internet network connection for everything. + +$HL,1$U8 b; +while (TRUE) { + b=ReadU8(2); //Read byte from high speed serial channel 2. + //(Has been configured for low baud because thermostat should be slow.) + if (b==CMD_UP) + temperature++; + else if (b==CMD_DOWN) + temperature--; + +}$HL,0$ -As it stands, there is a simple and deluxe hardware mode... +As it stands, there already is a simple and deluxe hardware mode. In the future, we will upgrade BOTH simple and deluxe modes. Device Simple Hardware Interface Deluxe Interface --------------- ------------------------------- ----------------------------- - 1040-EZ Tax Form 1040 Regular + Like 1040-EZ Tax Form Like 1040 Regular Tax Form Video VGA 640x480 16 Color 20 Differnet GPUs Sound PC Speaker HD Audio, AC97, Sound Blaster HardDrive ATA Port I/O, Sync No Interrupt PCI AHCI SATA -CDROM ATAPI Port I/O PCI AHCI SATA +CD/DVD/BlueRay ATAPI Port I/O PCI AHCI SATA Keyboard/Mouse PS/2 Port I/O USB -During the 49 years jubile, we do a perfect version of hardware with advances in both the simple and deluxe interfaces. ATAPI/ATA, SSD and NV memory should be merged and made blemish-free. For the simple interface, we want just block-read, block-write and get capacity. We want flash memory sticks to interface like hard drives. When you design the simple mode, imagine you are creating the 1040EZ tax form -- do not just add extra boxes. +During the 49-year jubile, we will do a perfect version of hardware with advances in both the simple and deluxe interfaces. ATAPI & ATA, SSD, removable flash memory sticks and NV memory devices should use a single, blemish-free block device interface. For this simple interface, we want just , , , , and . When you design the simple mode, imagine you are creating the 1040EZ tax form -- do not just thoughtlessly add extra boxes. -A new TempleOS ROM is released every seven years. It gets burned into all new x86 chips in the Intel factory, for tamper-proof certainty in oracles and just because it's God's official temple and deserves the honor! (The reset switch should trigger booting the ROM TempleOS.) Development will take place between releases, obviously. With the limit of 100,000 lines of code, it is supposed to crystalize into a perfected, unchanging diamond that lasts over centuries. I want an $TX,"ACM",HTML="http://www.acm.org"$ committee to work with me on this ROM until 2017, the year the first official version is released. We allow boot-legs to freely circulate. The users can copy ROM and RAM and play with it, or boot a hard disk versions. +A new, official TempleOS ROM will be released every seven years. It will be burned into all new x86_64 chips in the Intel factory, for tamper-proof certainty in the oracle and just because it's God's official temple and deserves the honor! (The reset switch should trigger booting the ROM TempleOS.) However, development will still take place between releases, obviously. With the limit of 100,000 lines of code, it is supposed to crystalize into a perfect, unchanging diamond that lasts over centuries. I want an $TX,"ACM",HTML="http://www.acm.org"$ and/or NASA committee to work with me on perfecting it for the first ROM release, 2017. We allow boot-legs to freely circulate. Users can copy ROM and RAM, or boot hard disk versions. In the meantime, BIOS makers must take the TempleOS code and modify it for their existing customers, as a product recall. A PCI hard drive driver must be written if the BIOS you created does not work with the standard TempleOS ATA/ATAPI port IO. You must also bypass SecureBoot and make sure the keyboard and mouse work if you do not support legacy PS/2, by writing a USB driver. -I want to offer "Knuth-bucks" for changes that reduce lines of code (other than trivial reformatting). I want to offer Knuth bucks for pointing-out spelling and other imperfections. Some imperfections are by design, however. The original Bible generously mentioned even temple personel who were porters, so we can generously list $LK,"credits",A="FI:::/Doc/Credits.TXT.Z"$. +I want to offer "Knuth-bucks" for changes that reduce lines of code (other than trivial reformatting). I want to offer Knuth bucks for pointing-out spelling and other imperfections. Some imperfections are by design, however. The original Bible generously mentioned even temple personel who were porters, so we can generously list $LK,"credits",A="FI:::/Doc/Credits.TXT"$. + +If the whole World loved God's temple, we could put only one full-featured CPU core on each x86_64 chip for Windows/Linux and make the other cores souped-up for TempleOS. Windows/Linux could use them, but it would have to adapt by being careful about privilege. We still need to dual boot and run Windows/Linux... forever. On the other cores, we could make them ring-0-only, no paging, no SSE or MXX, perhaps no IO or DMA or interrupts. We pretty-much need interrupts. Tell me what would shrink the cores and make them higher performance. It's almost like making a GPU, but we don't want that weirdness for teenagers and amateurs. I am more interested in boosting performance in terms of clock speed because a whole bunch more than 8 cores gets too glitchy for updating the 640x480 memory buffer simultaneously because we certainly don't want locked read-modify-write. + +God said to work on spreading-out heat producing hot spots on the chips. Maybe, that will help. + +Make all desktops with exclusively a single 4K display that also supports 640x480 16 color with a linear frame buffer of 1-byte-per-pixel but 16 colors. Make all desktops with exactly 8/0 cores, not hyperthreaded. All future generations will thank me for locking-down the insanity of too much diversity in hardware. It seem obvious that we want GPU on same chip as CPU. There is no reason to make inferior products, Intel. We do not want Celerons, you bastards. A kid gets a new Core i7, but cannot enjoy that horsepower when he writes his game because he wants his game to work on his poor neighbor's Celeron. That's evil. Don't make any budget chips. + +God said to water or cryogenically cool the chips. We do not want a race-to-the-bottom on desktop size. That is evil. We want CD/DVD/BlueRay in all desktops, too. + +God said everyone should use Linux's Wine application instead of Windows. + +God said we want a single audio voice. That means we want one frequency at a time. Make it so we write a word to a timer period I/O port. If set to zero, it is off. + $FG,8$ * "VMware" is a trademark of VMware, Inc. * "Linux" is probably a trademark owned by Linus Torvalds. -* "Windows" is a trademark of MicroSoft Corp. +* "Windows" is a trademark of MicroSoft Corp.$FG$ diff --git a/Doc/DemoIndex.TXT b/Doc/DemoIndex.TXT index 5bdb17a..09f5455 100644 --- a/Doc/DemoIndex.TXT +++ b/Doc/DemoIndex.TXT @@ -4,7 +4,7 @@ $WW,1$These are arranged in increasing order of difficulty, more or less. This $FG,2$$FG$ to edit a file and $FG,2$F5$FG$ to run it. -$LK,"::/Doc/HelloWorld.TXT.Z"$ +$LK,"::/Doc/HelloWorld.TXT"$ $WW,0$$TR,"Games: Beginner"$ $ID,2$$LK,"::/Demo/Graphics/NetOfDots.CPP"$ @@ -72,7 +72,7 @@ $LK,"::/Demo/Graphics/Cartesian.CPP"$ $LK,"::/Demo/Graphics/Hanoi.CPP"$ $LK,"::/Demo/Graphics/Life.CPP"$ $LK,"::/Demo/Games/Zing.CPP"$ -$LK,"::/Demo/Graphics/Grid.CPP.Z"$ +$LK,"::/Demo/Graphics/Grid.CPP"$ $LK,"::/Demo/Games/TreeCheckers.CPP"$ $LK,"::/Demo/MultiCore/Palindrome.CPP"$ $LK,"::/Demo/MultiCore/MPAdd.CPP"$ @@ -82,7 +82,7 @@ $LK,"::/Demo/Graphics/Slider.CPP"$ $LK,"::/Demo/Graphics/WallPaperCtrl.CPP"$ //Press SHIFT-F5 to Adam Include $LK,"::/Demo/Graphics/ScrollBars.CPP"$ $LK,"::/Demo/RegistryDemo.CPP"$ -$LK,"::/Demo/Games/BugBird.CPP"$ +$LK,"::/Demo/Games/FlapBat.CPP"$ $LK,"::/Demo/Games/BattleLines.CPP"$ $LK,"::/Demo/Games/BigGuns.CPP"$ $LK,"::/Demo/Games/FlatTops.CPP"$ @@ -121,7 +121,7 @@ $MA-X+PU,"::/Apps/Strut",LM="Cd(\"::/Apps/Strut\");Dir;View;\n"$ $MA-X+PU,"::/Apps/Span",LM="Cd(\"::/Apps/Span\");Dir;View;\n"$ $MA-X+PU,"::/Apps/Psalmody",LM="Cd(\"::/Apps/Psalmody\");Dir;View;\n"$ $ID,-2$$TR,"Non-Game"$ -$ID,2$$LK,"::/Misc/MakeDistro.CPP"$ +$ID,2$$LK,"::/Misc/DoDistro.CPP"$ $LK,"::/Demo/DbgDemo.CPP"$ $LK,"::/Demo/SubSwitch.CPP"$ $LK,"::/Demo/DateTime.CPP"$ @@ -157,7 +157,7 @@ $LK,"::/Demo/CompileDemo.CPP"$ $LK,"::/Demo/Prompt.CPP"$ $LK,"::/Demo/ClassMeta.CPP"$ $LK,"::/Demo/LastClass.CPP"$ -$LK,"::/Demo/DolDoc/NumBible.CPP.Z"$ +$LK,"::/Demo/DolDoc/NumBible.CPP"$ $LK,"::/Demo/DolDoc/Form.CPP"$ $LK,"::/Demo/DolDoc/MenuButton.CPP"$ $LK,"::/Demo/DolDoc/MenuSprite.CPP"$ diff --git a/Doc/DolDocOverview.TXT b/Doc/DolDocOverview.TXT index 80610a9..4799cbc 100644 --- a/Doc/DolDocOverview.TXT +++ b/Doc/DolDocOverview.TXT @@ -123,7 +123,7 @@ Examples: to see $ID,-2$$TR,"BT Button"$ $ID,2$See $LK,"::/Demo/DolDoc/MenuButton.CPP"$. $ID,-2$$TR,"DA Data"$ -$ID,2$Used for forms that prompt for data. Use $FG,2$$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$. +$ID,2$Used for forms that prompt for data. Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$. The default data-type for the $FG,2$$$DA...$$$FG$ command is $FG,2$I64$FG$. You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$. See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$(). @@ -131,11 +131,11 @@ The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the If there is a ':', the space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$. $ID,-2$$TR,"CB Check Box"$ -$ID,2$Used for forms. Use $FG,2$$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$(), $LK,"CEdFindText",A="MN:CEdFindText"$ and $LK,"::/Demo/DolDoc/Form.CPP"$. +$ID,2$Used for forms. Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$(), $LK,"CEdFindText",A="MN:CEdFindText"$ and $LK,"::/Demo/DolDoc/Form.CPP"$. The default data-type for the $FG,2$$$CB...$$$FG$ command is $FG,2$I8$FG$ which is $FG,2$Bool$FG$. You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, or $FG,2$U64$FG$. See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$(). $ID,-2$$TR,"LS List Widget"$ -$ID,2$Used for forms that prompt for data. You must specify a define list, $FG,2$D=""$FG$. Use $FG,2$$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$. +$ID,2$Used for forms that prompt for data. You must specify a define list, $FG,2$D=""$FG$. Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$. The default data-type for the $FG,2$$$LS...$$$FG$ command is $FG,2$I64$FG$. You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, or $FG,2$U64$FG$. See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$(). $ID,-2$$TR,"MA Macro"$ @@ -180,7 +180,7 @@ $ID,2$The $LK,"ToHtml",A="MN:ToHtml"$() or $LK,"Doc2Html",A="MN:Doc2Html"$() rou $ID,-2$$TR,"ER Error"$ $ID,2$When errors are detected in DolDoc cmds, an $FG,2$ER$FG$ entry is generated. $ID,-2$ -<$LK,"FlagCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$> See $LK,"Flag Defines",A="MN:DOCEf_LEFT_CB"$ and $LK,"Simple Flags",A="FI:::/Doc/Widget.TXT.Z"$. +<$LK,"FlagCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$> See $LK,"Flag Defines",A="MN:DOCEf_LEFT_CB"$ and $LK,"Simple Flags",A="FI:::/Doc/Widget.TXT"$. $TR,"+H Hold"$ $ID,2$Causes not to delete this cmd when cleared with $FG,2$CL$FG$ or when the doc->max_entries is exceeded. Word wrap is a good to hold. There is no way to delete these entries, at this point. $ID,-2$$TR,"+L Link"$ diff --git a/Doc/EdPullDown.TXT b/Doc/EdPullDown.TXT index 5873353..8438283 100644 --- a/Doc/EdPullDown.TXT +++ b/Doc/EdPullDown.TXT @@ -29,8 +29,8 @@ Edit Insert { - Widget(,CH_CTRLL,0x42600000426); - Resource(,CH_CTRLR,0x41300000413); + TextWidgets(,CH_CTRLL,0x42600000426); + GraphicResource(,CH_CTRLR,0x41300000413); FileName(,,0x3E0000003E); DirName(,,0x23E0000023E); GodWord(,,0x4100000041); diff --git a/Doc/Features.TXT b/Doc/Features.TXT index 12d40cf..ab9ba43 100644 --- a/Doc/Features.TXT +++ b/Doc/Features.TXT @@ -20,13 +20,13 @@ * ATAPI PIO $FG,2$CD/DVD$FG$ support with $FG,2$ISO9660$FG$ file system. Can make bootable $FG,2$ISO9660$FG$ ISO files so you can roll-your-own distro's. -* $LK,"Partitioning",A="MN:PrtDsk"$ tool, installer, $FG,2$boot loaders$FG$ for CD-ROM and hard disk. +* $LK,"Partitioning",A="MN:PrtDsk"$ tool, installer, $FG,2$boot loaders$FG$ for CD/DVD and hard disk. * $FG,2$Editor/Browser$FG$ for a new $LK,"Document Format",A="FI:::/Doc/DolDocOverview.TXT"$. Source files and the command line window can have graphics, links, icons, trees, colors, super/sub scripts, margins. Everything is seamless through-out the tool chain. No need for separate resource files. * 8-bit $FG,2$ASCII$FG$, not just 7-bit. Supported in entire tool chain. $FG,2$$FG$ -* $FG,2$Graphics in source code$FG$, no resource files, $FG,2$graphic resource editor$FG$. $FG,2$$FG$ +* $FG,2$Graphics in source code$FG$, no resource files, $FG,2$graphic sprite editor$FG$. $FG,2$$FG$ * $FG,2$64-bit pointers$FG$. All memory, even more than 4 Gig, can be directly accessed by all tasks on all cores at all times. diff --git a/Doc/FileLowLevel.TXT b/Doc/FileLowLevel.TXT new file mode 100644 index 0000000000000000000000000000000000000000..d65441dfeddef9f622704f42454bd8db20986f53 GIT binary patch literal 544 zcmY!h4$x6j(sA;%HB{l^;^b6-02Lo^9VKVC%$!su9Y3TnADCqQNRahJge?G*|%S2#^4X1`B}nf&@S` z*9NHjK{QB(v9 SU|?VXaXo|mEzQgf7#IL6YDFUe literal 0 HcmV?d00001 diff --git a/Doc/FileMgr.TXT b/Doc/FileMgr.TXT index 3a2088d..866857d 100644 --- a/Doc/FileMgr.TXT +++ b/Doc/FileMgr.TXT @@ -43,10 +43,10 @@ $FG,2$'f'$FG$ $ID,2$Format drive. $ID,-2$ $FG,2$'M'$FG$ -$ID,2$Make CD/DVD ISO file. This creates a file image of the directory the cursor is on. The name of the ISO file is $LK,"dsk.dft_iso_filename",A="MN:CDskGlbls"$ and can be redefined in your start-up scripts. You may wish to place it on a different drive. +$ID,2$Make CD/DVD ISO file. This creates a file image of the directory the cursor is on. The name of the ISO file is $LK,"blkdev.dft_iso_filename",A="MN:CBlkDevGlbls"$ and can be redefined in your start-up scripts. You may wish to place it on a different drive. $ID,-2$ $FG,2$'B'$FG$ -$ID,2$Burn CD/DVD ISO file. This burns a CD/DVD using the image file, $LK,"dsk.dft_iso_filename",A="MN:CDskGlbls"$ to the drive the cursor is on. +$ID,2$Burn CD/DVD ISO file. This burns a CD/DVD using the image file, $LK,"blkdev.dft_iso_filename",A="MN:CBlkDevGlbls"$ to the drive the cursor is on. $ID,-2$ $FG,5$Instructions on Using CD/DVD's$FG$ @@ -56,5 +56,5 @@ $ID,-2$ $FG,5$Instructions on Burning CD/DVD's$FG$ $ID,2$Create a temporary holding drive in RAM or on disk, copy files into the holding drive. Make an ISO image of the drive by pressing $FG,2$'M'$FG$ when on top of the holding drive. Press $FG,2$'B'$FG$ when on top of the CD/DVD ROM drive to burn the ISO to disk. If you have not recompiled $FG,2$Kernel$FG$ and defined your CD/DVD drive, exit the file mgr and use $LK,"Mount",A="MN:Mount"$. -$LK,"Making Your Own Distro",A="FI:::/Misc/MakeDistro.CPP"$ +$LK,"Making Your Own Distro",A="FI:::/Misc/DoDistro.CPP"$ $ID,-2$ \ No newline at end of file diff --git a/Doc/Glossary.TXT b/Doc/Glossary.TXT index 859c0e4..f4bebb3 100644 --- a/Doc/Glossary.TXT +++ b/Doc/Glossary.TXT @@ -39,6 +39,7 @@ $FG,2$Desc$FG$ Descriptor, Description $FG,2$Dev$FG$ Device $FG,2$Dft$FG$ Default $FG,2$Dir$FG$ Directory, Direction +$FG,2$Div$FG$ Divide $FG,2$Doc$FG$ Document $FG,2$Drv$FG$ Drive $FG,2$Dsk$FG$ Disk @@ -65,7 +66,7 @@ $FG,2$IDT$FG$ Interrupt Descriptor Table $FG,2$Init$FG$ Initialize $FG,2$Ins$FG$ Insert $FG,2$Int$FG$ Interrupt -$FG,2$ip_$FG$ Input Pointer. See $LK,"InputPointer.CPP",A="FI:::/Kernel/KbdMouse/InputPointer.CPP"$. +$FG,2$ip_$FG$ Input Pointer. See $LK,"InputPointer.CPP",A="FI:::/Kernel/SerialDev/InputPointer.CPP"$. $FG,2$Irq$FG$ Interrupt (Request) $FG,2$JIT$FG$ Just-in-Time $FG,2$Kbd$FG$ Keyboard @@ -87,6 +88,7 @@ $FG,2$Num$FG$ Number $FG,2$Obj$FG$ Object $FG,2$Occ$FG$ Occurrence $FG,2$ODE$FG$ Ordinary Differential Equation +$FG,2$Opt$FG$ Option, Optimize $FG,2$Paren$FG$ Parenthesis $FG,2$Pix$FG$ Pixel $FG,2$$FG,2$Pkg$FG$ Package @@ -140,7 +142,7 @@ $FG,2$Wiz$FG$ Wizard $ID,-2$$TR,"Task/Process/Thread"$ $ID,2$There is no distinction between $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2$thread$FG$. The $FG,2$Fs$FG$ segment reg is kept pointing to the current task's $LK,"CTask",A="MN:CTask"$. There is only one window per task, and only $FG,2$core#0$FG$ tasks can have windows. Each task has a code and data heap so memory is returned when it dies. Each task has a $LK,"hash",A="HI:Hash"$ symbol table. $ID,-2$$TR,"Adam Task"$ -$ID,2$This is Adam, as in Adam and Eve, the parent of all tasks and immortal. This task is created at start-up and appears in the small window at the top beneath the user windows. On it's heap are all memory objects which you don't want destroyed by a task's death. When created, Adam runs the file $LK,"::/Adam.CPP"$. When start-up is finished, the adam task enters a server mode where it accepts requests from other tasks. The $LK,"Adam",A="MN:Adam"$("") routine will make Adam compile and run text src code. $FG,2$#include$FG$ statements can be sent to $LK,"Adam",A="MN:Adam"$(""), creating system-wide code and data which don't disappear when any particular task ends. +$ID,2$This is Adam, as in Adam and Eve, the parent of all tasks and immortal. This task is created at start-up and appears in the small window at the top beneath the user windows. On it's heap are all memory objects which you don't want destroyed by a task's death. When created, Adam runs the file $LK,"::/StartOS.CPP"$. When start-up is finished, the adam task enters a server mode where it accepts requests from other tasks. The $LK,"Adam",A="MN:Adam"$("") routine will make Adam compile and run text src code. $FG,2$#include$FG$ statements can be sent to $LK,"Adam",A="MN:Adam"$(""), creating system-wide code and data which don't disappear when any particular task ends. $ID,-2$$TR,"Seth Task"$ $ID,2$$FG,2$Seth$FG$ is Adam and Eve's child. Each CPU core has a special task which is immortal and which is special. The Adam task on $FG,2$CPU#0$FG$ is also it's $FG,2$Seth$FG$ task. $ID,-2$$TR,"Code and Data Heaps"$ @@ -158,7 +160,7 @@ There is no $FG,2$main()$FG$ routine. Instead, statements outside functions are $ID,-2$$TR,"JIT Compile Mode"$ $ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memory alloced from the heap, incrementally, making them immediately ready for in-place execution. This mode is used during cmd line operations. When you $FG,2$#include$FG$ a file, it is compiled function by function and code ends-up all over in the memory, at least in the first 2Gig of memory. The $LK,"ExeFile",A="MN:ExeFile"$() routine is the same as $FG,2$#include$FG$ but can be used in programs. $LK,"ExePrint",A="MN:ExePrint"$() routine will compile and run a string. $ID,-2$$TR,"Compiler Intermediate Code"$ -$ID,2$The compiler generates instructions one step before making actual assembly (machine) language instructions. This code is reverse polish stack machine in nature and can be viewed with $LK,"OTrace",A="MN:OTrace"$(). The compiler does not $FG,2$interpret$FG$ code, except in the process of optimization to make the final machine code. Assembly language output can be viewed when code is compiled with the $LK,"CTrace",A="MN:CTrace"$(), or, afterward, with $LK,"U",A="MN:U"$() or $LK,"Uf",A="MN:Uf"$(""). +$ID,2$The compiler generates instructions one step before making actual assembly (machine) language instructions. This code is reverse polish stack machine in nature and can be viewed with $LK,"PassTrace",A="MN:PassTrace"$(). The compiler does not $FG,2$interpret$FG$ code, except in the process of optimization to make the final machine code. Assembly language output can be viewed when code is compiled with the $LK,"Trace",A="MN:Trace"$(), or, afterward, with $LK,"U",A="MN:U"$() or $LK,"Uf",A="MN:Uf"$(""). $ID,-2$$TR,"Drive/Partition"$ $ID,2$There is no distinction between $FG,2$drive$FG$ or $FG,2$partition$FG$. They are specified with a single letter from $FG,2$A$FG$-$FG,2$Z$FG$. @@ -200,7 +202,7 @@ $FG,5$*.BIN.Z;*.BIN.C;*.BIN$FG$ $FG,5$*.DAT.Z;*.DAT$FG$ Data files $FG,5$*.ISO$FG$ - CD-ROM image file--ISO9660. + CD/DVD image file--ISO9660. $FG,5$*.AUT.Z;*.AUT$FG$ $FG,2$AutoFile$FG$ Basically a HolyC program whose stdout goes to the input of a task when $LK,"AutoFile",A="MN:AutoFile"$() is called. $FG,5$*.GRA.Z;*.GRA$FG$ diff --git a/Doc/GraphicsOverview.TXT b/Doc/GraphicsOverview.TXT index d20e3cdb1ca5934c5011ce3fcd1db9d35149898f..c4af995435438c9a9309008266724f24b646ccbf 100644 GIT binary patch delta 26 hcmeA-ooBjX9UE_YQDQ+xX0k$YK~ZMO<~3}Og#nCR3X}i< delta 12 TcmbPd+HbmH9oy!;Y!8J2Bkl!e diff --git a/Doc/Grub.TXT b/Doc/Grub.TXT index 9f2ab02..dd11a10 100644 --- a/Doc/Grub.TXT +++ b/Doc/Grub.TXT @@ -2,7 +2,7 @@ $FG,5$$TX+CX,"The Grub Master Bootloader"$$FG$ $WW,1$Here are my $FG,2$grub.cfg$FG$ file entries for my TempleOS partitions. I don't have the patience to do it correctly and GRUB obfuscates. Chain loading is just the normal way an operating system like Windows boots. They do drives, zero-based, and partitions on drives, one-based. They call traditional partitioning a "msdos" partition and I presume, if there is a new way to partition drives, it has a new name. -In addition to a Windows and a Linux partition, I have a Primary TempleOS $FG,2$'D'$FG$, Backup TempleOS $FG,2$'E'$FG$ and a Transfer $FG,2$'I'$FG$ partition for transferring between Windows and TempleOS. "hd0" is 1st hard drive, zero-based numbering. "msdos1" is partition #1, traditional msdos partitioning. I keep $FG,2$'D'$FG$, $FG,2$'E'$FG$, and $FG,2$'I'$FG$ identical by frequently copying all files and I use $FG,2$'I'$FG$ to transfer files. They only need to be a couple Gig in size. Every time I copy files, use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to $LK,"MakeAll",A="MN:MakeAll"$ and prepare the partition $LK,"boot sector",A="FI:::/Adam/Boot/BootHD.CPP"$ for chainloading by patching the new block address and size of $FG,2$Kernel.BIN.C$FG$. +In addition to a Windows and a Linux partition, I have a Primary TempleOS $FG,2$'D'$FG$, Backup TempleOS $FG,2$'E'$FG$ and a Transfer $FG,2$'I'$FG$ partition for transferring between Windows and TempleOS. "hd0" is 1st hard drive, zero-based numbering. "msdos1" is partition #1, traditional msdos partitioning. I keep $FG,2$'D'$FG$, $FG,2$'E'$FG$, and $FG,2$'I'$FG$ identical by frequently copying all files and I use $FG,2$'I'$FG$ to transfer files. They only need to be a couple Gig in size. Every time I copy files, use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to $LK,"MakeAll",A="MN:MakeAll"$ and prepare the partition $LK,"boot sector",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$ for chainloading by patching the new block address and size of $FG,2$Kernel.BIN.C$FG$. menuentry "TempleOS D" { insmod chain diff --git a/Doc/GuideLines.TXT b/Doc/GuideLines.TXT index 57f9d15..1642fb4 100644 --- a/Doc/GuideLines.TXT +++ b/Doc/GuideLines.TXT @@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Directory Structure"$$FG$ $FG,2$/Home$FG$ All your user data should be placed in here to ease backing-up your data. When you install an application it will create a subdirectory of your $FG,2$/Home$FG$ directory for storage. -$FG,2$/Apps$FG$ Applications are placed in subdirectories of $FG,2$/Apps$FG$. Applications should have a file called $FG,2$Install.CPP.Z$FG$ which will install the app for the current user acct. The file, $FG,2$Load.CPP.Z$FG$ will load the application into mem. The file, $FG,2$Run.CPP.Z$FG$, will usually load and execute the app. To add an app to your PersonalMenu, use $FG,2$$FG$, insert a macro with the PopUp option checked and invoke the $FG,2$Run.CPP.Z$FG$ file. +$FG,2$/Apps$FG$ Applications are placed in subdirectories of $FG,2$/Apps$FG$. Applications should have a file called $FG,2$Install.CPP.Z$FG$ which will install the app, possibly making files or directories in $FG,2$/Home$FG$. The file, $FG,2$Load.CPP.Z$FG$ will load the application into mem. The file, $FG,2$Run.CPP.Z$FG$, will usually load and execute the app. To add an app to your PersonalMenu, use $FG,2$$FG$, insert a macro with the PopUp option checked and invoke the $FG,2$Run.CPP.Z$FG$ file. $FG,2$/Demo$FG$ Here you can find lots of sample code to do various things. @@ -12,9 +12,9 @@ $FG,2$/Kernel$FG$ The core of the operating system is found here. Since privile $FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is $FG,2$AOT$FG$ compiled to produce a binary file which is loaded at boot. It, too, is $FG,2$AOT$FG$ compiled by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). -$FG,2$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. +$FG,2$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$ is the father of all tasks, like Adam and Eve. -$FG,2$/0000Boot$FG$ Misc boot files go here. Stage 2 of the TempleOS hard drive master boot loader, the old hard drive master boot record which is just blk#0, and the CD/DVD $FG,2$0000Kernel.BIN.C$FG$ file go here. ASCII $FG,2$0000$FG$ is near the top, alphabetically, in case you use $TX,"MagicISO",HTML="http://www.magiciso.com"$. +$FG,2$/0000Boot$FG$ Boot files go here. Stage 2 of the TempleOS hard drive master boot loader, the old hard drive master boot record which is just blk#0, and the CD/DVD $FG,2$0000Kernel.BIN.C$FG$ file go here. ASCII $FG,2$0000$FG$ is near the top, alphabetically, in case you use $TX,"MagicISO",HTML="http://www.magiciso.com"$. @@ -26,7 +26,9 @@ $LK,"::/Home/PersonalMenu.TXT"$ a menu viewed with the $FG,2$$FG$ key or $LK,"::/Home/PersonalNotes.TXT"$ a personal note file viewed with the $FG,2$$FG$ key. -$FG,4$::/Home/Adam*$FG$ Copy $FG,2$Adam*$FG$ files from the root into $FG,2$::/Home$FG$ and customize them. These files are invoked when the adam task starts-up. +$LK,"::/Home/MakeHome.CPP"$ a file compiled by the $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$ during $LK,"StartOS",A="FF:::/StartOS.CPP,MakeHome"$. + +$FG,4$::/Home/Home*$FG$ Copy $FG,2$Home*$FG$ files from the root into $FG,2$::/Home$FG$ and customize them. These files are invoked when the adam task starts-up. $LK,"::/Home/DoOnce.CPP"$ a file invoked at the start-up of the first user. Customize this! @@ -86,7 +88,7 @@ $LM,0$ * I don't use $FG,2$U0 *$FG$ because the size is zero for ptr arithmetic. -* Use $FG,2$$LK,"CH_SHIFT_SPACE",A="MN:CH_SHIFT_SPACE"$$FG$ for spaces in quotes in source code because I run $LK,"Spaces-to-Tabs",A="FF:::/Adam/Utils/StrUtils.CPP,S2T"$ on source code. +* Use $FG,2$$LK,"CH_SHIFT_SPACE",A="MN:CH_SHIFT_SPACE"$$FG$ for spaces in quotes in source code because I run $LK,"Spaces-to-Tabs",A="FF:::/Adam/Opt/Utils/StrUtils.CPP,S2T"$ on source code. diff --git a/Doc/Hash.TXT b/Doc/Hash.TXT index 2b28e2027123d7b5b92c6c36a10eed1b91e17d04..7299bce17ae103403a5e1c6fb68960963ade18cd 100644 GIT binary patch literal 2084 zcmY!h57#kNQ3(#vQBu-z^0YNn;ld3566iPBu6$%oIQu9i{O4W-& z#z76qELKR)NKMX8P0>?OaLma8s{n~5X67j*B_?Mpl;ndAP;qnDF;a0%Nz7Gob5{W? z)8pa_NzErWPyYm!%dJXC$WNmn-Dwq@)%ps8S&WqzvxUkdS!Shyeef zkoe%p;P~K3UnLbiE-p}%n5qOrl7>%yeztCD0XT9rLW@&V6mk>uDisQH5|dMl6*BXZ zb4pV{feA_s;L!B)3{h~-&n?KzNreQdo12xDl|D>J-zT*~&p9AK2NcY1nRzKnDhi2t zDG-PHC)5WGSpOnx-t(Gwwc8cQ$UG1H3jBLkk33EgFWJd zLxPl4K#`u90(LRT*5ZuJv=W%}9fO@cJwXX6F(*eMIU}*CSdYs{6JaJKX~WEQ26-R^ zlw*`sbnTMzQ!1llp=mJ_6fh~N6{#tDT*jITKG1YoTmnjsB}Iv#NKH*qD9tO$%u&cq zEJ@A)*;(WDCp{f(rP7I!h1wb@dAPFh}qQL@XPyrAP7BGT_Ifw=exIqO#G*}=C zDgdIv0&-9R5DgMwWZ{y6`UXUU;ukCcVlY7?oD0SP(I8D=0T2VE1w?a6GC+a`M011U y7RF#;U;y)>G*lTElm@8+1+WyzAW#&7f(JxPfn*4 delta 27 jcmZ1?u#AOGB|KcmP-UX79AoiD@5PKv3JQ}yFvb7?Xha9f diff --git a/Doc/HelpIndex.TXT b/Doc/HelpIndex.TXT index 11116f36911d93cbcae2a6154824e17a17bcc8b7..bc40b7b8a56c7c22e3fe25e4574aea7d9998fc23 100644 GIT binary patch delta 178 zcmdmK`NU$wK~8a(Fc;6<#PrngqRf(1B^^gwC0{=)m$1p#I8&Ki@;BRa88I@sCd5R#y5h`N{fjnK`LG`Q<*TWvMxn*GiadUM-N$DCYx`c1%gk)pyCy0V(rM%uaR5 RPu6n|2+%RytS8jX1pu(?Iko@* delta 216 zcmaE2vD0$HK~7O;7th?p^wjX8%#u_k9YE;8{>781XmztyR?U7iV;i%^v5TIi?IYz=@ jbBI7Xql_a+1;}=Nm;4-%9WMFFU^OoJ$(wHqc5?v$(`-j# diff --git a/Doc/HolyC.TXT b/Doc/HolyC.TXT index 7781c08..76976ee 100644 --- a/Doc/HolyC.TXT +++ b/Doc/HolyC.TXT @@ -196,9 +196,9 @@ $FG$$ID,-2$ $FG,2$||$FG$$FG$ $FG,2$=$FG$,$FG,2$<<=$FG$,$FG,2$>>=$FG$,$FG,2$*=$FG$,$FG,2$/=$FG$,$FG,2$&=$FG$,$FG,2$|=$FG$,$FG,2$^=$FG$,$FG,2$+=$FG$,$FG,2$-=$FG$ -* You can use $LK,"OptOn",A="MN:OptOn"$($LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$) to find unnecessary parentheses in code. +* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$,ON) to find unnecessary parentheses in code. -* You can use $LK,"OptOn",A="MN:OptOn"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$) to find dup local var type statements. +* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$,ON) to find dup local var type statements. * With the $FG,2$#exe{}$FG$ feature in your src code, you can place programs that insert text into the stream of code being compiled. See $LK,"#exe {}",A="FF:::/Kernel/KEnd.CPP,#exe {"$ for an example where the date/time and compile-time prompting for cfguration data is placed into a program. $LK,"StreamPrint",A="MN:StreamPrint"$() places text into a src program stream following the conclusion of the $FG,2$#exe{}$FG$ blk. diff --git a/Doc/Install.TXT b/Doc/Install.TXT index c353e0e..e40b3de 100644 --- a/Doc/Install.TXT +++ b/Doc/Install.TXT @@ -26,19 +26,19 @@ $ID,-2$ $ID,-2$2) $LK,"Fmt",A="MN:Fmt"$($FG,2$'D'$FG$,$FG,2$TRUE,FALSE,DVT_FAT32$FG$) $ID,2$This command formats a drive with $FG,2$FAT32$FG$ or the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system type. Use the drive letter of the partition in place of $FG,2$'D'$FG$. -$BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$/0000Boot/OldMBR.BIN.C$FG$. +$BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$. $ID,-2$3) $LK,"CopyTree",A="MN:CopyTree"$($FG,2$"T:/"$FG$,$FG,2$"D:/"$FG$) -$ID,2$This command is used to copy files onto a hard drive partition from the CD-ROM. Use the drive letter of the partition in place of $FG,2$'D'$FG$. +$ID,2$This command is used to copy files onto a hard drive partition from the CD/DVD. Use the drive letter of the partition in place of $FG,2$'D'$FG$. $ID,-2$4) $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$($FG,2$'D'$FG$) $ID,2$This command recompiles the source code on a drive and writes to the $UL,1$drive's$UL,0$ boot record. You'll need to reenter the $LK,"Mount",A="MN:Mount"$ information so it can be stored in the kernel. $ID,-2$5) Use Linux's $LK,"Grub",A="FI:::/Doc/Grub.TXT"$ or TempleOS' $LK,"MasterBootIntall",A="MN:MasterBootIntall"$($FG,2$'D'$FG$) $ID,2$ -The $LK,"MasterBootIntall",A="MN:MasterBootIntall"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/0000Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive. +The $LK,"MasterBootIntall",A="MN:MasterBootIntall"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive. -Delete $FG,2$/0000Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/0000Boot/OldMBR.BIN.C$FG$ onto a system with a non-TempleOS boot loader. +Delete $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ onto a system with a non-TempleOS boot loader. If you have anti-virus software, it might object to having a different master boot record. $ID,-2$ diff --git a/Doc/KeyAlloc.TXT b/Doc/KeyAlloc.TXT index 2603f09..9ad2891 100644 --- a/Doc/KeyAlloc.TXT +++ b/Doc/KeyAlloc.TXT @@ -8,9 +8,7 @@ When you are at the cmd line, editing documents, browsing documentation and help $FG,2$$FG$ and $FG,2$$FG$ Free for user configurations in your $LK,"MyPutKey",A="MN:MyPutKey"$() handler, except for $FG,2$ALT-BACKSPACE$FG$ (undo). There are a few examples pre-defined, but you can change them if you wish. -$FG,2$$FG$ Extended ASCII (3 digit decimal number). - -$FG,2$$FG$ and $FG,2$$FG$ Handled at a system level, NOT by the $LK,"CDoc",A="MN:CDoc"$ editor. I reserve the right to alloc these, but in the mean time, you can define your own handlers with $LK,"CtrlAltLetCBSet",A="MN:CtrlAltLetCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$$FG$ handlers take a scan_code as an arg. +$FG,2$$FG$ and $FG,2$$FG$ Handled at a system level, NOT by the $LK,"CDoc",A="MN:CDoc"$ editor. I reserve the right to alloc these, but in the mean time, you can define your own handlers with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$$FG$ handlers take a scan_code as an arg. $FG,2$$FG$ Auto-completes local words. diff --git a/Doc/MemOverview.TXT b/Doc/MemOverview.TXT index 3f20db8..707dc19 100644 --- a/Doc/MemOverview.TXT +++ b/Doc/MemOverview.TXT @@ -17,11 +17,11 @@ $FG,5$$TX+CX,"Single System-wide Mem Map"$ $FG,2$ 0x0000000000- 0x00$TX,"00006FFF",D="DD_PROTECTED_LOW"$$FG$ $ID,2$Pages marked not present so NULL ptr dereference causes a fault. $ID,-2$ -$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"0003569F",D="DD_KERNEL_END"$$FG$ +$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"00034EAF",D="DD_KERNEL_END"$$FG$ $ID,2$Kernel module, placed here by the boot-loader, $LK,"BOOT_RAM_BASE",A="MN:BOOT_RAM_BASE"$. $ID,-2$ -$FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_CD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_CD_END"$$FG$ -$ID,2$$FG$Boot block relocated here before loading the Kernel module, $LK,"BootCD",A="FI:::/Adam/Boot/BootCD.CPP"$ & $LK,"BootHD",A="FI:::/Adam/Boot/BootHD.CPP"$. +$FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_DVD_END"$$FG$ +$ID,2$$FG$Boot block relocated here before loading the Kernel module, $LK,"BootDVD",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$ & $LK,"BootHD",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$. $ID,-2$ $FG,2$ 0x00$TX,"00097000",D="DD_MP_VECT"$- 0x00$TX,"00097030",D="DD_MP_VECT_END"$$FG$ $ID,2$Multicore start-up vect code, $LK,"MPN_VECT",A="MN:MPN_VECT"$. @@ -35,15 +35,18 @@ $ID,-2$ $FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"001845FF",D="DD_SYS_FIXED_AREA_END"$$FG$ $ID,2$$LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for page tables and misc. $TX,"128 Gig",D="DD_MEM_MAPPED_SPACE_GIG"$ of address space mapped. $ID,-2$ -$FG,2$ 0x00$TX,"00184600",D="DD_SYS_HEAP_BASE"$- 0x00$TX,"3FFE3DFF",D="DD_SYS_HEAP_LIMIT"$$FG$ +$FG,2$ 0x00$TX,"00184600",D="DD_SYS_HEAP_BASE"$- 0x00$TX,"3FFDFEFF",D="DD_SYS_HEAP_LIMIT"$$FG$ $ID,2$Code Heap mem. $ID,-2$ +$FG,2$ - 0x007FFFFFFF$FG$ +$ID,2$Data Heap mem. (This exists if there is less than 2 Gig of code heap.) +$ID,-2$ $FG,2$ 0x00E0000000- 0x00FFFFFFFF$FG$ $ID,2$32-bit devices could alloc memory at 0xF0000000 going up, but this is wrong, since some PCs already have devices at 0xF0000000. No PCI devices are supported, so $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() flaws are not an issue. $ID,-2$ $FG,2$ 0x0080000000-~0x00DFFFFFFF$FG$ $FG,2$ 0x0100000000-~0x$TX,"1FFFFFFFFF",D="DD_MEM_MAPPED_SPACE_END"$$FG$ -$ID,2$Data Heap mem. +$ID,2$Data Heap mem. (The physical memory that exists in this range is data heap.) $ID,-2$ $FG,2$ - 0x$TX,"1FFFFFFFFF",D="DD_MEM_MAPPED_SPACE_END"$$FG$$FG$ $ID,2$64-bit devices are alloced with $LK,"Mem64DevAlloc",A="MN:Mem64DevAlloc"$() counting bwd from $TX,"128 Gig",D="DD_MEM_MAPPED_SPACE_GIG"$, but no PCI devices are actually supported$WW,0$. diff --git a/Doc/MultiTasking.TXT b/Doc/MultiTasking.TXT deleted file mode 100644 index 1e65c74..0000000 --- a/Doc/MultiTasking.TXT +++ /dev/null @@ -1,26 +0,0 @@ -$FG,5$$TX+CX,"MultiTasking"$$FG$ - -$WW,1$TempleOS is a preemptive multitasking operating system. However, you can turn-off preemption on a task by task basis and the task will not yield ctrl unless it volunteers with $LK,"Yield",A="MN:Yield"$(), $LK,"Sleep",A="MN:Sleep"$() or a call to I/O which yields ctrl. - -Use the $LK,"Preempt",A="MN:Preempt"$() cmd to turn on or off preemption. This is useful when you have multiple tasks modifying data structures, simultaneously. Interrupts still occur when preemption is off. Turning-off preemption does not protect against multicore simultaneous access. - -$BK,1$Preemption is turned-off by default when a task is $LK,"Spawn",A="MN:Spawn"$()ed.$BK,0$ - -The time-slice rate is set by $LK,"JIFFY_FREQ",A="MN:JIFFY_FREQ"$. - -TempleOS does not remove tasks from $FG,2$the queue$FG$ when they are waiting. They swap-in, check whatever condition they are waiting for and swap-out. This keeps it simple, but would cause problems with too many tasks. TempleOS is intended for non-server, home computers with a maximum of around ten, or so, tasks. See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. - -TempleOS has no task priority scheme. - -Disk requests are not broken into pieces for sharing. Therefore, if one task makes a big request, the drive is locked onto that task until it is done. During that time, other tasks can do CPU-only operations, however. - - -$FG,5$$TX+CX,"Interrupts"$$FG$ - -You can turn on and off interrupts in your user programs. This is part of the mission statement, giving complete freedom to programmers. Use $FG,2$CLI$FG$ or $FG,2$STI$FG$. TempleOS currently doesn't use interrupt besides the timer, keyboard and sometimes mouse interrupt. Since the interrupt flag is part of your task context and since you are voluntarily swapped-out if you call $LK,"GetChar",A="MN:GetChar"$() or whatever, you won't even notice if you turn-off interrupts at the cmd prompt because you are being swapped-out and interrupts are being turned-on by the next task. - -I saw no reason to make the hard drive or CD-ROM code interrupt driven -- it just creates potential compatibility issues. On a home system, you do one thing at a time, mostly. TempleOS can do multiple things at once, but not as efficiently as a server operating system. It would bogg down with a hundred tasks asking for service. It is much simpler, though, the way it is. - -The disk code does not break-up large requests in pieces, if you are curious why one task must wait until another finishes an operation. - -See $LK,"::/Demo/Lectures/Spinning.CPP"$. diff --git a/Doc/Mysteries.TXT b/Doc/Mysteries.TXT index 67c7c71..525fdbe 100644 --- a/Doc/Mysteries.TXT +++ b/Doc/Mysteries.TXT @@ -12,7 +12,7 @@ $WW,1$$FG,5$$TX+CX,"Mysteries"$$FG$ * There is no $FG,2$PATH$FG$. You do not enter filenames at the command-line and expect them to run. You enter C-like code. $LK,"Get Started Here",A="FI:::/Doc/CmdLineOverview.TXT"$. -* If you use $LK,"Grub",A="FI:::/Doc/Grub.TXT"$, you $FG,2$chain-load$FG$ like Windows. You can use the TempleOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Adam/Boot/BootMHD.CPP"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Adam/Boot/BootMHD2.CPP"$, $LK,"Partition-Boot-Loader",A="FI:::/Adam/Boot/BootHD.CPP"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Adam/Boot/BootCD.CPP"$. +* If you use $LK,"Grub",A="FI:::/Doc/Grub.TXT"$, you $FG,2$chain-load$FG$ like Windows. You can use the TempleOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Adam/Opt/Boot/BootMHD.CPP"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Adam/Opt/Boot/BootMHD2.CPP"$, $LK,"Partition-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$. * The boot-loaders must be patched by you running $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() or $LK,"MasterBootIntall",A="MN:MasterBootIntall"$(). Those will write the block address into the boot-loader because the boot-loaders do not navigate file systems to find the $LK,"Stage2",A="FI:::/Kernel/KStart.CPP"$ if you relocate it. @@ -28,7 +28,7 @@ $WW,1$$FG,5$$TX+CX,"Mysteries"$$FG$ * TempleOS has a dictionary that is shipped compressed. When you boot the first time it is uncompressed. TempleOS has a Windows utility for uncompressing. That utility needs $FG,2$Microsoft DLL$FG$ files. TempleOS does not use any libraries, modules or code from other sources -- I wrote it all from scratch and it is self-contained. -* There are no OBJ or EXE files. There are only two files compiled ahead-of-time -- $FG,2$Kernel.BIN.C$FG$ and $FG,2$Compiler.BIN.Z$FG$. You can delete them and recompile with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). TempleOS is $TX,"120,629",D="DD_TEMPLEOS_LOC"$ lines. Roughly 50,000 is compiled AOT and 50,000 during boot $FG,2$JIT$FG$. The rest is $FG,2$JIT$FG$ demos and applications. +* There are no OBJ or EXE files. There are only two files compiled ahead-of-time -- $FG,2$Kernel.BIN.C$FG$ and $FG,2$Compiler.BIN.Z$FG$. You can delete them and recompile with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). TempleOS is $TX,"119,216",D="DD_TEMPLEOS_LOC"$ lines. Roughly 50,000 is compiled AOT and 50,000 during boot $FG,2$JIT$FG$. The rest is $FG,2$JIT$FG$ demos and applications. * A major difference between TempleOS and other systems is that the heap and compiler sym table are associated with tasks, not applications. @@ -60,7 +60,7 @@ $WW,1$$FG,5$$TX+CX,"Mysteries"$$FG$ * TempleOS supports $FG,2$FAT32$FG$ and $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file systems. The $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ partitions will appear as $FG,2$FAT32$FG$ to other operating systems, but will not work. Do not access the native TempleOS partitions from other operating systems. This was to fool a bootloader when I tricked it to use it's recovery partition feature. -* The CPU usage during disk operation expands to 99%. It polls while swapping-out. You can do other, non-disk activity during disk operations because it swaps-out a lot and task swaps take only half a microsecond, probably a hundred times faster than a typical OS. See $LK,"Cooperative Multitasking",A="FI:::/Demo/Lectures/Spinning.CPP"$. It does not break-up disk operations into small pieces for sharing, however, so the disk is lock onto that one task. +* The CPU usage during disk operation expands to 99%. It polls while swapping-out. You can do other, non-disk activity during disk operations because it swaps-out a lot and task swaps take only half a microsecond, probably a hundred times faster than a typical OS. It does not break-up disk operations into small pieces for sharing, however, so the disk is lock onto that one task. $FG,8$ * "Windows" is a trademark of MicroSoft Corp. diff --git a/Doc/Options.TXT b/Doc/Options.TXT deleted file mode 100644 index b211e90..0000000 --- a/Doc/Options.TXT +++ /dev/null @@ -1,17 +0,0 @@ -$WW,1$$FG,5$$TX+CX,"Compiler Options"$$FG$ - -Use $LK,"OptOn",A="MN:OptOn"$() $LK,"OptOff",A="MN:OptOff"$(). You might need to do $FG,2$#exe {OptOn();}$FG$. - -$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ without this option, global vars are placed in the code heap which is limited to 2 Gig. In $FG,2$AOT$FG$ modules, global vars take-up room in the $FG,2$.BIN$FG$ file, so you might want to use this option, instead. You might wish to turn it on and off around specific vars. A disadvantage of data heap global vars in $FG,2$AOT$FG$ modules is they can't be initialized. - -$LK,"OPTf_EXTERNS_TO_IMPORTS",A="MN:OPTf_EXTERNS_TO_IMPORTS"$ and $LK,"OPTf_KEEP_PRIVATE",A="MN:OPTf_KEEP_PRIVATE"$ are strange options, you'll never need. They're to allow the same header file for $FG,2$Kernel$FG$ to act as $FG,2$extern$FG$s when compiling itself and $FG,2$import$FG$s when compiled by $FG,2$AOT$FG$ modules. - -$LK,"OPTf_WARN_UNUSED_VAR",A="MN:OPTf_WARN_UNUSED_VAR"$ warning if unused var. It is applied to functions. - -$LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$ warning if parenthesis are not needed. - -$LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$ warning if dup local var type statements. - -$LK,"OPTf_NO_REG_VAR",A="MN:OPTf_NO_REG_VAR"$ forces all function local vars to the stk not regs. Applied to functions. - -$LK,"OPTf_NO_BUILTIN_CONST",A="MN:OPTf_NO_BUILTIN_CONST"$ Disable 10-byte float consts for ã, log2_10, log10_2, loge_2. Applied to functions. diff --git a/Doc/Que.TXT b/Doc/Que.TXT index b1976ed..287d832 100644 --- a/Doc/Que.TXT +++ b/Doc/Que.TXT @@ -1,3 +1 @@ $WW,1$A $FG,2$Queue$FG$ is a bunch of $LK,"MAlloc",A="MN:MAlloc"$()ed chunks of mem linked together in a circle with one ptr to the $FG,2$next$FG$ value and another ptr to the $FG,2$last$FG$ value. These ptrs must be stored in the first locations in the structure. - -Be careful when writing multitasking code not to access $FG,2$Queues$FG$ while in the middle of a change. You might turn-off preemption or interrupts. diff --git a/Doc/Quirks.TXT b/Doc/Quirks.TXT index cc2fb31..bdd3f42 100644 --- a/Doc/Quirks.TXT +++ b/Doc/Quirks.TXT @@ -10,7 +10,7 @@ $WW,1$* You run a risk of problems if you do file operations on the same files s * Call $LK,"ChgDsk",A="MN:ChgDsk"$() when you insert a new removable media. -* Accessing CD-ROM's is flacky. Try $LK,"Drv",A="MN:Drv"$() or $LK,"ChgDsk",A="MN:ChgDsk"$() twice. +* Accessing CD/DVD's is flacky. Try $LK,"Drv",A="MN:Drv"$() or $LK,"ChgDsk",A="MN:ChgDsk"$() twice. * You can only $FG,2$extern$FG$ something once. There is a varient called $FG,2$_extern$FG$ which binds a HolyC definition to a asm sym. This, too, can only be done once. diff --git a/Doc/RedSea.TXT b/Doc/RedSea.TXT index 3dac1f6..6dd43f1 100644 --- a/Doc/RedSea.TXT +++ b/Doc/RedSea.TXT @@ -15,7 +15,7 @@ public class CDirEntry //64-byte fixed-size U8 name[CDIR_FILENAME_LEN]; //See $LK,"chars_bmp_filename",A="MN:chars_bmp_filename"$, $LK,"FileNameChk",A="MN:FileNameChk"$ I64 cluster; (blk) //One sector per cluster. I64 size; //In bytes - CDate datetime; //See $LK,"DateTime",A="::/Doc/TimeDate.TXT"$, $LK,"Implementation of DateTime",A="FI:::/Kernel/Date.CPP"$ + CDate datetime; //See $LK,"DateTime",A="::/Doc/TimeDate.TXT"$, $LK,"Implementation of DateTime",A="FI:::/Kernel/KDate.CPP"$ }; public class CRedSeaBoot //RedSea is type FAT32 in partition table to fool BIOS. @@ -31,7 +31,7 @@ public class CRedSeaBoot //RedSea is type FAT32 in partition table to fool BIOS. U16 signature2; //0xAA55 }; $HL,0$ -See $LK,"implementation of RedSea file system",A="::/Kernel/Dsk/FileSysRedSea.CPP"$. +See $LK,"implementation of RedSea file system",A="::/Kernel/BlkDev/FileSysRedSea.CPP"$. File with names ending in .Z are stored compressed. See $LK,"implementation of LZW compression",A="::/Kernel/Compress.CPP"$. diff --git a/Doc/Resource.TXT b/Doc/Resource.TXT index 26817ff..c95d106 100644 --- a/Doc/Resource.TXT +++ b/Doc/Resource.TXT @@ -1,4 +1,4 @@ -$WW,1$$FG,5$$TX+CX,"Graphic Resource Help"$$FG$ +$WW,1$$FG,5$$TX+CX,"Graphic Sprite Resource Help"$$FG$ A sprite is an ordered list of elements such as lines, rectangles, bitmaps and color changes. In a program's source code, you first make a sprite. Then, you insert a pointer to it. diff --git a/Doc/Tips.TXT b/Doc/Tips.TXT index 96c8a3b..cb800f3 100644 --- a/Doc/Tips.TXT +++ b/Doc/Tips.TXT @@ -8,9 +8,9 @@ $WW,1$$FG,5$$TX+CX,"Tips"$$FG$ * See $MA-X+PU,"Key Map",LM="KeyMap;View;\n"$ for a list of defined keys. Define your own keys in $LK,"MyPutKey",A="MN:MyPutKey"$(). See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. -* $FG,2$$FG$ maximizes a window. $FG,2$$FG$ closes AutoComplete. $FG,2$$FG$ brings back AutoComplete. $FG,2$$FG$ vertically tiles windows. $FG,2$$FG$ horizontally tiles windows. The $FG,2$ALT$FG$ keys are defined in $LK,"::/Home/AdamKeyPlugIns.CPP"$. You can customize them. +* $FG,2$$FG$ maximizes a window. $FG,2$$FG$ closes AutoComplete. $FG,2$$FG$ brings back AutoComplete. $FG,2$$FG$ vertically tiles windows. $FG,2$$FG$ horizontally tiles windows. The $FG,2$ALT$FG$ keys are defined in $LK,"::/Home/HomeKeyPlugIns.CPP"$. You can customize them. -* If you make changes to TempleOS files in your $FG,2$/Home$FG$ directory, generally you reboot to make them take effect. (You don't compile anything.) You should have two TempleOS partitions on your hard drive because a syntax error in a start-up file will make the partition unbootable. Boot to the second partition or boot to a standard TempleOS CD-ROM and use $LK,"Mount",A="MN:Mount"$() to mount your hard drive. +* If you make changes to TempleOS files in your $FG,2$/Home$FG$ directory, generally you reboot to make them take effect. (You don't compile anything.) You should have two TempleOS partitions on your hard drive because a syntax error in a start-up file will make the partition unbootable. Boot to the second partition or boot to a standard TempleOS CD/DVD and use $LK,"Mount",A="MN:Mount"$() to mount your hard drive. * I copy my files to a mirrored identical partition, periodically with $LK,"CopyTree",A="MN:CopyTree"$() commands in scripts. I do merge commands with a menu entry like this: $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. @@ -21,9 +21,9 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * Use the PullDown menu at the top of the screen to learn commands, or for finding the keyboard controls to games. -* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:/Home/AdamLocalize.CPP,mouse.scale"$. +* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:/Home/HomeLocalize.CPP,mouse.scale"$. -* You can set your local time zone by setting the $LK,"local_time_offset",A="MN:local_time_offset"$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:/Home/AdamLocalize.CPP,local_time"$. +* You can set your local time zone by setting the $LK,"local_time_offset",A="MN:local_time_offset"$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:/Home/HomeLocalize.CPP,local_time"$. * $FG,2$$FG$ in the editor to reindent a $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ function or renumber an asm routine's local labels. @@ -33,7 +33,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * $LK,"Scale2Mem",A="MN:Scale2Mem"$(min,max,limit=2*1024*1024*1024) can be used for cfg questions when recompiling. The $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() cfg prompts accept expressions, not just numbers. The dft disk cache is $FG,2$Scale2Mem(0x80000,0x8000000)$FG$. -* You can permanently disable $FG,2$AutoComplete$FG$ commenting-out $LK,"ACInit",A="FF:/Home/AdamSys.CPP,ACInit"$() in $LK,"::/Home/AdamSys.CPP",A="FF:/Home/AdamSys.CPP,ACInit"$. +* You can permanently disable $FG,2$AutoComplete$FG$ commenting-out $LK,"ACInit",A="FF:/Home/HomeSys.CPP,ACInit"$() in $LK,"::/Home/HomeSys.CPP",A="FF:/Home/HomeSys.CPP,ACInit"$. * Boolean expressions $BK,1$not$BK,0$ in $FG,2$if$FG$ statements don't have short circuit logic and are compiled inefficiently. @@ -51,13 +51,13 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * There is a utility $LK,"LinkChk",A="MN:LinkChk"$() which will check for broken links in documentation. -* You can use $LK,"OptOn",A="MN:OptOn"$($LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$) to find unnecessary parentheses in code. +* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$,ON) to find unnecessary parentheses in code. -* You can use $LK,"OptOn",A="MN:OptOn"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$) to find unnecessary local var type statements. +* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$,ON) to find unnecessary local var type statements. -* $LK,"OptEqu",A="MN:OptEqu"$($LK,"OPTf_ECHO",A="MN:OPTf_ECHO"$,ON) can be placed in $LK,"Adam.CPP",A="FI:::/Adam.CPP"$ to echo start-up scripts. +* $LK,"Option",A="MN:Option"$($LK,"OPTf_ECHO",A="MN:OPTf_ECHO"$,ON) can be placed in $LK,"StartOS.CPP",A="FI:::/StartOS.CPP"$ to echo start-up scripts. -* Use $LK,"Plain",A="MN:Plain"$() to edit a plain text file. You'll need this if your file has $FG,2$$$$FG$'s. Use the $LK,"::/Misc/ToDolDoc.CPP"$ utility to convert plain text to DolDoc's. +* Use $LK,"Plain",A="MN:Plain"$() to edit a plain text file. You'll need this if your file has $FG,2$$$$FG$'s. Use the $LK,"ToDolDoc",A="MN:ToDolDoc"$() utility to convert plain text to DolDoc's by doubling $FG,2$$$$FG$'s. * Use $LK,"Silent",A="MN:Silent"$() to disable screen text output. @@ -75,7 +75,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * You can eye-dropper colors in the $FG,2$$FG$ sprite editor by pressing $FG,2$'c'$FG$. Press $FG,2$'t'$FG$ for transparent. -* There are handy functions--$FG,2$F(),R(),FD()$FG$ and $FG,2$RD()$FG$ which are defined in $LK,"::/Home/AdamWrappers.CPP"$. You are encouraged to change them and add more. They will perform find-and-replace operations accross multiple files. The $FG,2$+l$FG$ flag is particularly useful since it limits to whole labels. The $FG,2$+lb$FG$ and $FG,2$+la$FG$ flags limit to whole labels just before or after. You are encouraged to add or modify handy wrapper functions to make cmd line operations easier. +* There are handy functions--$FG,2$F(),R(),FD()$FG$ and $FG,2$RD()$FG$ which are defined in $LK,"::/Home/HomeWrappers.CPP"$. You are encouraged to change them and add more. They will perform find-and-replace operations accross multiple files. The $FG,2$+l$FG$ flag is particularly useful since it limits to whole labels. The $FG,2$+lb$FG$ and $FG,2$+la$FG$ flags limit to whole labels just before or after. You are encouraged to add or modify handy wrapper functions to make cmd line operations easier. * When using $LK,"Find",A="MN:Find"$() while modifying code, work from the bottom-up so that line numbers are correct. If you work top-down, then inserting or deleting lines causes the lower file links will be incorrect. @@ -89,13 +89,11 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * Use $LK,"View",A="MN:View"$() in Pop-up macros to linger until the user presses $FG,2$$FG$ or $FG,2$$FG$. -* You can access the word under the cursor at $LK,"ac.cur_word",A="MN:CAutoCompleteGlbls"$, but you should probably turn-off preemption or interrupts momentarily to copy it. +* You can access the word under the cursor at $LK,"ac.cur_word",A="MN:CAutoCompleteGlbls"$. * You can reactivate $FG,2$AutoComplete$FG$ after closing it by pressing $FG,2$$FG$ or $FG,2$$FG$ if you have it defined. -* $LK,"Preempt",A="MN:Preempt"$() is used to keep a task from being interrupted and swapped-out. It has a similar effect to turning-off interrupts. Each task has it's own preemption ctrl. A task with preemption turned-off can voluntarily $LK,"Yield",A="MN:Yield"$() with preemption off. - -* You can set a color for different drives with $LK,"DrvTextAttrSet",A="MN:DrvTextAttrSet"$(). Place calls to this in $LK,"::/Home/AdamLocalize.CPP"$. +* You can set a color for different drives with $LK,"DrvTextAttrSet",A="MN:DrvTextAttrSet"$(). Place calls to this in $LK,"::/Home/HomeLocalize.CPP"$. * $FG,2$$FG$ to toggle to/from plain text just the $LK,"CDoc",A="MN:CDoc"$ cmd under the cursor. See $LK,"::/Demo/DolDoc/TextDemo.CPP"$. @@ -123,7 +121,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes. * You can delete the $FG,4$/Home/Registry.CPP.Z$FG$ file. The policy is that deleting it will restore defaults. It is a text doc, if you want to edit it. Be careful of tree indentations. -* Study $LK,"::/Adam/Utils/MemRep.CPP"$ and $LK,"WallPaper",A="MN:WallPaper"$() to learn how the system resources are put together. +* Study $LK,"::/Adam/Opt/Utils/MemRep.CPP"$ and $LK,"WallPaper",A="MN:WallPaper"$() to learn how the system resources are put together. * The editor's select-text mechanism allows for disjoint portions of selected text. This is a feature, not a bug -- you can cut-and-paste disjoint text. diff --git a/Doc/Welcome.TXT b/Doc/Welcome.TXT index 057b795..061ab0a 100644 --- a/Doc/Welcome.TXT +++ b/Doc/Welcome.TXT @@ -7,17 +7,17 @@ $ID,2$* Professionals doing hobby projects * Teenagers doing projects * Non-professional, older-persons projects $ID,-2$ -Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.TXT"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"122,766",D="DD_TEMPLEOS_LOC"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a "hello world" application in one line of code and can put graphics on the screen with a three line program! +Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.TXT"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"118,745",D="DD_TEMPLEOS_LOC"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a $LK,"Hello World",A="FI:::/Doc/HelloWorld.TXT.Z"$ application in one line of code and can put graphics on the screen with a three line program! It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate without protection. The resulting simplicity of no protections is why TempleOS has value. In facts, that's the point of TempleOS. See the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.TXT"$. -Conventional thinking is "failure is not an option" for general purpose operating systems. Since this OS is used in addition to Windows or Linux, however, failure is an option -- just use Windows if you can't do something. +Conventional thinking is "failure is not an option" for general purpose operating systems. Since this OS is used in addition to Windows or Linux, however, failure is an option -- just use Windows if you can't do something. I cherry-pick what it will and won't do to make it maximally beautiful. Two things to know about TempleOS are that $UL,1$tasks$UL,0$ have $LK,"MAlloc",A="MN:MAlloc"$/$LK,"Free",A="MN:Free"$ heap memory, not applications, and tasks have compiler symbol tables that persist at a scope like environment variables in other operating systems, and the symbols can include functions. -In other operating systems, I hated learning one language for command line scripts and another for programming. With $FG,2$TempleOS$FG$, the command line feeds right into the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiler, line by line, and it places code into memory it $LK,"MAlloc",A="MN:MAlloc"$()s. The compiler is paused at the command line, waiting for input. Naturally, you $FG,2$#include$FG$ a program to load it into memory and, usually, start it. See $LK,"::/Doc/HelloWorld.TXT.Z"$. +In other operating systems, I hated learning one language for command line scripts and another for programming. With $FG,2$TempleOS$FG$, the command line feeds right into the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiler, line by line, and it places code into memory it $LK,"MAlloc",A="MN:MAlloc"$()s. The compiler is paused at the command line, waiting for input. Naturally, you $FG,2$#include$FG$ a program to load it into memory and, usually, start it. See $LK,"::/Doc/HelloWorld.TXT"$. -During the boot process, many files get $LK,"compiled",A="FI:::/Adam.CPP"$ before you have access to the command line. (Don't worry, booting takes only a couple of seconds.) All the header declarations for the operating system are compiled and are available for use in your programs without needing to $FG,2$#include $FG$them. Everything is truly compiled to native $FG,2$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ machine code, nothing is $FG,2$interpreted$FG$ and there is no $FG,2$byte code$FG$. +During the boot process, many files get $LK,"compiled",A="FI:::/StartOS.CPP"$ before you have access to the command line. (Don't worry, booting takes only a couple of seconds.) All the header declarations for the operating system are compiled and are available for use in your programs without needing to $FG,2$#include $FG$them. Everything is truly compiled to native $FG,2$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ machine code, nothing is $FG,2$interpreted$FG$ and there is no $FG,2$byte code$FG$. Statements at the global scope -- outside the scope of functions -- execute immediately. There is no $FG,2$main()$FG$ function. Instead, you give meaningful names to what would be $FG,2$main()$FG$ functions and you invoke them by calling them with a statement in the global scope, usually at the bottom of your file. @@ -37,9 +37,9 @@ The syntax change created an ambiguity when specifying function addresses. To r Once I was no longer using standard C/C++ syntax, I decided to change everything I didn't like and call it $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$. Here are the new $LK,"operator precedence",A="FF:::/Doc/HolyC.TXT,operator precedence"$ rules. It's Biblical! See $LK,"Luke,5:37",A="BF:Luke,5:37"$. -There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as "$FG,2$Ahead-Of-Time$FG$" compilation. Instead, you "$FG,2$Just-In-Time$FG$" compile. +There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as $LK,"Ahead-of-Time",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ compilation. Instead, you $LK,"Just in Time",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ compile. -Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. Polling keeps it simple. It's might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order. See $LK,"TempleOS MultiTasking",A="FI:::/Doc/MultiTasking.TXT"$. +Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. Polling keeps it simple. It's might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order. The $FG,2$FAT32$FG$ filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the simple, 64-bit TempleOS $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ filesystem. The $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ has allocation bitmap for clusters and all files are stored contiguously. You can't grow files. @@ -47,23 +47,21 @@ TempleOS is geared toward reading and writing whole files. Since whole files ar If a file is not found, "$FG,2$.Z$FG$" is added or removed and a search is done, again. There is no $FG,2$PATH$FG$, but parent directories are searched when a file is not found. This feature is especially useful for default account files. -It's fun being able to turn-off interrupts with the asm instruction, CLI, $FG$and on with STI. $FG,2$TempleOS$FG$ runs all programs in kernel mode, ring 0, so no instructions are off-limits. Turning-off and on preemption with $LK,"Preempt",A="MN:Preempt"$() is a less drastic measure that is usually sufficient. A newly $LK,"Spawn",A="MN:Spawn"$()ed task begins with preemption off. +The graphic resolution is poor, $FG,2$640x480 16 color$FG$, but God said it was a covenant like circumcision. Also, that's all I feel comfortable with without GPU acceleration supported. A $FG,2$1600x1200x24$FG$ bit screen takes 37 times more memory, implying 37 times the CPU power. Also, a fixed size keeps it simple with everybody machine having the same appearance. Look on the bright-side -- you won't spend as much time twiddling pixels for your game art and you'll have tons of CPU power available, especially with multicore systems. -The graphic resolution is poor, $FG,2$640x480 16 color$FG$, but God said that and that's all I feel comfortable with without GPU acceleration supported. A $FG,2$1600x1200x24$FG$ bit screen takes 37 times more memory, implying 37 times the CPU power. Also, a fixed size keeps it simple with everybody machine having the same appearance. Look on the bright-side -- you won't spend as much time twiddling pixels for your game art and you'll have tons of CPU power available, especially with multicore systems. +TempleOS is for hobbyist programmers on single user (at a time) home computers, not mainframes or servers. The focus task is all-important so symmetrical multiprocessing is almost pointless. Why does it matter running two apps at the same time twice as fast when you really want to run one faster? You could say TempleOS does master/slave multiprocessing. The anticipated use for multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is possible. See $LK,"TempleOS MultiCore",A="FI:::/Doc/MultiCore.TXT"$. -TempleOS is for hobbyist programmers on single user (at a time) home computers, not mainframes or servers, but it is preemptive multitasking. The focus task is all-important so symmetrical multiprocessing is almost pointless. Why does it matter running two apps at the same time twice as fast when you really want to run one faster? You could say TempleOS does master/slave multiprocessing. The anticipated use for multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is possible. See $LK,"TempleOS MultiCore",A="FI:::/Doc/MultiCore.TXT"$. +There is no distinction between the terms $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2$thread$FG$. All have a task record, $LK,"CTask",A="MN:CTask"$, pointed to by the $FG,2$FS$FG$ segment reg and are accessed with $FG,4$Fs->$FG$ while $FG,4$Gs->$FG$ points to a $LK,"CCPU",A="MN:CCPU"$ for the current CPU core. Each task can have just one window, but a task can have children with windows. (The segment regs are just used as extra regs -- there is nothing segmented about TempleOS' memory.) It is approximately the case that $FG,2$TempleOS$FG$ is multi-threading, single-processing. -There is no distinction between the terms $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2$thread$FG$. All have a task record, $LK,"CTask",A="MN:CTask"$, pointed to by the $FG,2$FS$FG$ segment reg and are accessed with $FG,4$Fs->$FG$ while $FG,4$Gs->$FG$ points to a $LK,"CCPU",A="MN:CCPU"$ for the current CPU core. Each task can have just one window, but a task can have children with windows. (The segment regs are just used as extra regs -- there is nothing segmented about TempleOS' memory.) +In $FG,2$TempleOS$FG$, $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$$FG$ refers to the father of all tasks. He's never supposed to die. Since tasks inherit the symbols of parents, system-wide stuff is associated with $FG,2$Adam$FG$. His heap is like kernel memory in other operating systems. Since $FG,2$Adam$FG$ is immortal, it's safe to alloc objects, not tied to any mortal task, from $FG,2$Adam$FG$'s heap. He stays in a server mode, taking requests, so you can ask him to $FG,2$#include$FG$ something, placing that code system-wide. A funny story is that originally I called it the $FG,2$root$FG$ task and even had a $FG,2$/Root$FG$ directory :-) $FG,2$Adam$FG$ executes $LK,"::/StartOS.CPP"$ at boot time. -In TempleOS, $FG,2$Adam$FG$ refers to a task that is the father of all tasks. He's never supposed to die. Since tasks inherit the symbols of parents, system-wide stuff is associated with $FG,2$Adam$FG$. His heap is like kernel memory in other operating systems. Since $FG,2$Adam$FG$ is immortal, it's safe to alloc objects, not tied to any mortal task, from $FG,2$Adam$FG$'s heap. He stays in a server mode, taking requests, so you can ask him to $FG,2$#include$FG$ something, placing that code system-wide. A funny story is that originally I called it the $FG,2$root$FG$ task and even had a $FG,2$/Root$FG$ directory ;-) $FG,2$Adam$FG$ executes $LK,"::/Adam.CPP"$ at boot time. - -For easy back-ups, place everything you author in your $FG,2$/Home$FG$ directory and subdirectories. Then, use $LK,"CopyTree",A="MN:CopyTree"$(). That should make upgrading easy, too. Customizable start-up scripts go in your $FG,2$/Home$FG$ directory. The default start-up scripts are in the root directory. Copy the start-up files you wish to customize into $FG,2$/Home$FG$ and modify them. See $LK,"Home Files",A="FF:::/Doc/GuideLines.TXT,/Home Files"$. You can make your own distro that includes everything and is a bootable live CD with $LK,"::/Misc/MakeDistro.CPP"$. +For easy back-ups, place everything you author in your $FG,2$/Home$FG$ directory and subdirectories. Then, use $LK,"CopyTree",A="MN:CopyTree"$(). That should make upgrading easy, too. Customizable start-up scripts go in your $FG,2$/Home$FG$ directory. The default start-up scripts are in the root directory. Copy the start-up files you wish to customize into $FG,2$/Home$FG$ and modify them. See $LK,"Home Files",A="FF:::/Doc/GuideLines.TXT,/Home Files"$. You can make your own distro that includes everything and is a bootable live CD with $LK,"::/Misc/DoDistro.CPP"$. Typically, your usage pattern through the day will be repeatedly left or right clicking on filenames in a cmd line $LK,"Dir",A="MN:Dir"$() listing. You left-click files to edit them and right-click to $FG,2$#include$FG$ them. To begin a project, type $LK,"Ed",A="MN:Ed"$("filename");, supplying a filename. You can also run programs with $FG,2$$FG$ when in the editor. $FG,2$$FG$ to save and exit the file. You'll need to do a new $LK,"Dir",A="MN:Dir"$() cmd, periodically, so make a macro on your PersonalMenu. Access your PersonalMenu by pressing $FG,2$$FG$, cursoring until you are on top of it and pressing $FG,2$$FG$. $FG,2$$FG$ toggles plain text mode, showing format commands, a little like viewing html code. -$FG,2$$FG$ inserts a nongraphic widget. -$FG,2$$FG$ inserts a graphic resource or edits the graphic under the cursor. +$FG,2$$FG$ inserts a text widgets. +$FG,2$$FG$ inserts or edit a graphic sprite resource at cursor location. $FG,2$$FG$ brings-up the file manager. It's pretty crappy. I find I don't need it very often, believe it or not. $FG,2$$FG$ toggles window border. @@ -72,11 +70,11 @@ $FG,2$$FG$ closes AutoComplete. $FG,2$$FG$ brings back AutoComplete. $FG,2$$FG$ vertically tiles windows. $FG,2$$FG$ horizontally tiles windows. -The $FG,2$ALT$FG$ keys are defined in $LK,"::/Home/AdamKeyPlugIns.CPP"$. You can customize them. +The $FG,2$ALT$FG$ keys are defined in $LK,"::/Home/HomeKeyPlugIns.CPP"$. You can customize them. $FG,2$$FG$ creates a new terminal window. $FG,2$$FG$ kills a window. You'll do these periodically. -$LK,"Find",A="MN:Find"$() is your best friend. There's a wrapper function called $LK,"F",A="MN:F"$() in your $FG,2$/Home/AdamWrappers.CPP.Z$FG$ file. Feel free to make wrapper functions for functions you use often and customize the args. By the way, $LK,"Find",A="MN:Find"$() or $LK,"R",A="MN:R"$() can be used to replace strings across multiple files. You can access $LK,"Find",A="MN:Find"$() using $FG,2$$FG$. +$LK,"Find",A="MN:Find"$() is your best friend. There's a wrapper function called $LK,"F",A="MN:F"$() in your $FG,2$/Home/HomeWrappers.CPP.Z$FG$ file. Feel free to make wrapper functions for functions you use often and customize the args. By the way, $LK,"Find",A="MN:Find"$() or $LK,"R",A="MN:R"$() can be used to replace strings across multiple files. You can access $LK,"Find",A="MN:Find"$() using $FG,2$$FG$. As you browse code, use the $FG,2$AutoComplete$FG$ window to look-up functions, etc. $FG,2$$FG$ (or whatever number) to follow a sym to it's source. You can browse deeper and deeper. You go back with $FG,2$$FG$. diff --git a/HomeKeyPlugIns.CPP b/HomeKeyPlugIns.CPP new file mode 100644 index 0000000..bae479d --- /dev/null +++ b/HomeKeyPlugIns.CPP @@ -0,0 +1,190 @@ +//Place this file in /Home and change +//anything you want. + +U0 InsTime() +{ + CDate cdt; + cdt=Now; + "$$IV,1$$----%D %T----$$IV,0$$\n",cdt,cdt; +} + +Bool MyPutKey(I64 ch,I64 sc) +{//ch=ASCII; sc=scan_code + + //See $LK,"Char",A="HI:Char"$ for definition of scan codes. + //See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.TXT"$. + //See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. + + //You can customize keys. This routine + //is called before the main editor + //key handler $LK,"DocPutKey",A="MN:DocPutKey"$(). + //You can intercept any key. + + //Return TRUE if you completely + //handled the key. + I64 i; + U8 *st1,*st2; + if (sc&SCF_ALT && !(sc&SCF_CTRL)) { + switch (ch) { + case 0: + switch (sc.u8[0]) { + case SC_F1: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTPURPLE"); + else + "$$LTPURPLE$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /PURPLE"); + else + "$$PURPLE$$"; + } + return TRUE; + case SC_F2: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTRED"); + else + "$$LTRED$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /RED"); + else + "$$RED$$"; + } + return TRUE; + case SC_F3: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /LTGREEN"); + else + "$$LTGREEN$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /GREEN"); + else + "$$GREEN$$"; + } + return TRUE; + case SC_F4: + if (sc&SCF_SHIFT) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /Default Color"); + else + "$$FG$$"; + } else { + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /BLUE"); + else + "$$BLUE$$"; + } + return TRUE; + case SC_F7: + if (!(sc&SCF_SHIFT)) { + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Ins Datetime"); + else + InsTime; + } + return TRUE; + } + break; + case 'a': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /AutoComplete On"); + else + AutoComplete(ON); + return TRUE; + case 'A': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /AutoComplete Off"); + else + AutoComplete; + return TRUE; + case 'h': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Tile Horizontally"); + else + WinTileHorz; + return TRUE; + case 'm': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Maximize"); + else { + WinBorder; + WinMax; + } + return TRUE; + case 'v': + if (sc&SCF_KEY_DESC) + KeyDescSet("Cmd /Tile Vertically"); + else + WinTileVert; + return TRUE; + case 'l': + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Put Link to Cur Pos on Clipboard"); + else { + ClipboardDel; + st1=FileNameAbs(BIBLE_FILENAME); + st2=FileNameAbs(DocPut->filename.name); + if (!StrCmp(st1,st2)) { + Free(st1); + st1=BibleLine2Verse(DocPut->cur_entry->y+1,','); + DocPrint(sys_clipboard_doc,"$$LK,\"BF:%s\"$$",st1); + } else + DocPrint(sys_clipboard_doc,"$$LK,\"FL:%s,%d\"$$", + st2,DocPut->cur_entry->y+1); + Free(st1); + Free(st2); + } + return TRUE; + case 'L': + if (sc&SCF_KEY_DESC) + KeyDescSet("Edit/Place Anchor, Put Link to Clipboard"); + else { + i=RandU32; + ClipboardDel; + DocPrint(sys_clipboard_doc,"$$LK,\"\",A=\"FA:%s,ANC%d\"$$", + DocPut->filename.name,i); + "$$AN,\"\",A=\"ANC%d\"$$",i; + } + return TRUE; + + //Ins your own ALT-key plug-ins + case '1': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /ã"); + else + 'ã'; + return TRUE; + case '2': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /é"); + else + 'é'; + return TRUE; + case '3': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /è"); + else + 'è'; + return TRUE; + case '4': + if (sc&SCF_KEY_DESC) + KeyDescSet("Dol /ê"); + else + 'ê'; + return TRUE; + } + } + return FALSE; +} + +Bool MyPutS(U8 *) +{ + return FALSE; +} + +KeyDevAdd(&MyPutKey,&MyPutS,0x20000000,TRUE); diff --git a/AdamLocalize.CPP b/HomeLocalize.CPP similarity index 100% rename from AdamLocalize.CPP rename to HomeLocalize.CPP diff --git a/HomePkgs.CPP b/HomePkgs.CPP new file mode 100644 index 0000000..769e4e5 --- /dev/null +++ b/HomePkgs.CPP @@ -0,0 +1,12 @@ +//Place this file in /Home and change +//anything you want. + +#include "/Adam/Opt/Boot/MakeBoot" +#include "/Adam/Opt/Utils/MakeUtils" + +MapFileLoad("::/Kernel/Kernel"); +MapFileLoad("::/Compiler/Compiler"); + +Cd("::/Home");; + +#help_index "" diff --git a/AdamSys.CPP b/HomeSys.CPP similarity index 96% rename from AdamSys.CPP rename to HomeSys.CPP index 2efe633..bc6e151 100644 --- a/AdamSys.CPP +++ b/HomeSys.CPP @@ -8,7 +8,6 @@ U0 UserStartUp() LBts(&Fs->display_flags,DISPLAYf_SHOW); WinToTop; WinZBufUpdate; - Preempt(ON); Dir; } @@ -18,7 +17,6 @@ U0 SrvStartUp() LBts(&Fs->display_flags,DISPLAYf_SHOW); WinToTop; WinZBufUpdate; - Preempt(ON); } U0 StartUpTasks() diff --git a/AdamWrappers.CPP b/HomeWrappers.CPP similarity index 100% rename from AdamWrappers.CPP rename to HomeWrappers.CPP diff --git a/Kernel/Dsk/DskATA.CPP b/Kernel/BlkDev/DskATA.CPP similarity index 96% rename from Kernel/Dsk/DskATA.CPP rename to Kernel/BlkDev/DskATA.CPP index 59decb6..61b7875 100644 --- a/Kernel/Dsk/DskATA.CPP +++ b/Kernel/BlkDev/DskATA.CPP @@ -366,7 +366,7 @@ U0 ATAReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt) throw('BlkDev'); } - dsk.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS; + blkdev.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS; if (unlock) BlkDevUnlock(bd); } @@ -378,7 +378,7 @@ I64 ATAProbe(I64 base0,I64 base1,I64 unit) bd.base0=base0; bd.base1=base1; bd.unit=unit; - bd.blk_size=CD_BLK_SIZE; + bd.blk_size=DVD_BLK_SIZE; return ATAGetDevId(&bd,tS+0.1,NULL); } @@ -401,7 +401,7 @@ Bool ATAPIReadBlks2(CBlkDev *bd,F64 timeout,U8 *buf, if (ATAPIWritePktWord(bd,timeout,0xA800, native_blk.u16[1],native_blk,cnt.u16[1],cnt,0) && ATAGetResult(bd,timeout,buf,cnt*bd->blk_size,0,FALSE)) { - dsk.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS; + blkdev.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS; result=TRUE; } } @@ -415,7 +415,7 @@ U0 ATAPIReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt) CDrv *dv=Let2Drv(bd->first_drv_let); I64 retry,spc=bd->blk_size>>BLK_SIZE_BITS,n,blk2, l2=bd->max_reads<<1+spc<<1; - U8 *cd_buf=MAlloc(l2<0) { if (blk<=bd->max_reads) blk2=0; @@ -427,16 +427,16 @@ U0 ATAPIReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt) retry=4; while (--retry) - if (ATAPIReadBlks2(bd,tS+7.0+0.004*n,cd_buf,blk2/spc,n,TRUE)) + if (ATAPIReadBlks2(bd,tS+7.0+0.004*n,dvd_buf,blk2/spc,n,TRUE)) //n is 0x800 if max_reads. Up to 8 additional seconds break; if (!retry) - ATAPIReadBlks2(bd,0,cd_buf,blk2/spc,n,TRUE); + ATAPIReadBlks2(bd,0,dvd_buf,blk2/spc,n,TRUE); if (bd->flags & BDF_READ_CACHE) - DskCacheAdd(dv,cd_buf,blk2,n*spc); - MemCpy(buf,cd_buf+(blk-blk2)<base0+ATAR0_DATA); buf+=U32s_avail<<2; - dsk.write_cnt+=U32s_avail>>(BLK_SIZE_BITS-2); + blkdev.write_cnt+=U32s_avail>>(BLK_SIZE_BITS-2); } } ATAWaitNotBUSY(bd,0); @@ -597,7 +597,7 @@ Bool ATAWBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt) buf+=n<type==BDT_ATAPI) { ATAPISync(bd); diff --git a/Kernel/Dsk/DskATAId.CPP b/Kernel/BlkDev/DskATAId.CPP similarity index 88% rename from Kernel/Dsk/DskATAId.CPP rename to Kernel/BlkDev/DskATAId.CPP index 3829c6f..14d1a51 100644 --- a/Kernel/Dsk/DskATAId.CPP +++ b/Kernel/BlkDev/DskATAId.CPP @@ -1,6 +1,6 @@ -Bool BootCdProbe(CBlkDev *bd) +Bool BootDVDProve(CBlkDev *bd) { - CKernel *img=CAlloc(CD_BLK_SIZE); + CKernel *img=CAlloc(DVD_BLK_SIZE); I64 i; Bool result=FALSE; "Port: %04X,%04X Unit: %02X ",bd->base0,bd->base1,bd->unit; @@ -25,7 +25,7 @@ Bool BootCdProbe(CBlkDev *bd) return result; } -Bool BootCdProbeAll(CBlkDev *bd) +Bool BootDVDProbeAll(CBlkDev *bd) { I64 d1,d2,i,j,k; @@ -42,10 +42,10 @@ Bool BootCdProbeAll(CBlkDev *bd) if (d1&1 && d2&1) { if (bd->base0=d1&~7) { bd->unit=0; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; bd->unit=1; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; } } @@ -54,10 +54,10 @@ Bool BootCdProbeAll(CBlkDev *bd) if (d1&1 && d2&1) { if (bd->base0=d1&~7) { bd->unit=0; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; bd->unit=1; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; } } @@ -68,10 +68,10 @@ Bool BootCdProbeAll(CBlkDev *bd) d2=0x3F6; if (bd->base0=d1&~7) { bd->unit=0; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; bd->unit=1; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; } @@ -79,10 +79,10 @@ Bool BootCdProbeAll(CBlkDev *bd) d2=0x376; if (bd->base0=d1&~7) { bd->unit=0; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; bd->unit=1; - if (BootCdProbe(bd)) + if (BootDVDProve(bd)) return TRUE; } } @@ -131,18 +131,15 @@ public I64 ATARep(Bool pmt=TRUE,Bool just_ide=FALSE,CATARep **_root=NULL) {//Report possible ATA devices by probing. Hard disks and CD/DVDs. I64 d1,d2,d3,i,j,k,cnt=0,unlock_flags=0,num_hints=0; #assert NUM_BLKDEVS<=64 - Bool old_preempt; - if (_root) *_root=NULL; if (pmt && ATARepExitAllApplications) return 0; - old_preempt=Preempt; for (i=0;ibase0,ata_drv->base1,ata_drv->unit)) result++; - if (atapi_drv && ATAMount(dsk.first_cd_drv_let,BDT_ATAPI, + if (atapi_drv && ATAMount(blkdev.first_dvd_drv_let,BDT_ATAPI, atapi_drv->base0,atapi_drv->base1,atapi_drv->unit)) result++; tempha=root; while (tempha) { if (tempha!=ata_drv && tempha!=atapi_drv) { - if (tempha->type==BDT_ATA && ATAMount(dsk.first_hd_drv_let,BDT_ATA, + if (tempha->type==BDT_ATA && ATAMount(blkdev.first_hd_drv_let,BDT_ATA, tempha->base0,tempha->base1,tempha->unit)) result++; else if (tempha->type==BDT_ATAPI && - ATAMount(dsk.first_cd_drv_let,BDT_ATAPI, + ATAMount(blkdev.first_dvd_drv_let,BDT_ATAPI, tempha->base0,tempha->base1,tempha->unit)) result++; } tempha=tempha->next; } LinkedLstDel(root); - dsk.auto_mount_ide_cnt=result; + blkdev.auto_mount_ide_cnt=result; return result; } diff --git a/Kernel/Dsk/DskAddDev.CPP b/Kernel/BlkDev/DskAddDev.CPP similarity index 93% rename from Kernel/Dsk/DskAddDev.CPP rename to Kernel/BlkDev/DskAddDev.CPP index 391fad2..7884831 100644 --- a/Kernel/Dsk/DskAddDev.CPP +++ b/Kernel/BlkDev/DskAddDev.CPP @@ -8,7 +8,7 @@ U0 BlkDevLockFwdingSet(CBlkDev *bd) case BDT_ATA: case BDT_ATAPI: for (i=0;ibd_signature==BD_SIGNATURE_VAL && bd!=bd1 && (bd1->type==BDT_ATAPI || bd1->type==BDT_ATA) && bd1->base0==bd->base0) { @@ -191,7 +191,7 @@ U0 Mount(Bool repartition=FALSE) '\n'; if (0<=first_drv_numbase0=SysGetI64; bd->base1=0; bd->unit =0; @@ -303,10 +303,10 @@ Bool GetBaseUnit(CBlkDev *bd) while (!('0'<=ch<='1')); '' ch; bd->unit=ch-'0'; - dsk.cdrom_boot_is_good=BootCdProbe(bd); + blkdev.dvd_boot_is_good=BootDVDProve(bd); return TRUE; } else { - dsk.cdrom_boot_is_good=FALSE; + blkdev.dvd_boot_is_good=FALSE; return FALSE; } } @@ -317,17 +317,17 @@ U0 BlkDevsInitAll() { CBlkDev *bd; I64 i; - dsk.blkdevs=CAlloc(sizeof(CBlkDev)*NUM_BLKDEVS); - dsk.drvs=CAlloc(sizeof(CDrv)*NUM_DRVS); + blkdev.blkdevs=CAlloc(sizeof(CBlkDev)*NUM_BLKDEVS); + blkdev.drvs=CAlloc(sizeof(CDrv)*NUM_DRVS); for (i=0;iopts[CFG_AUTO_MOUNT_IDE]) StreamPrint("AutoMountIDE;"); - StreamPrint("#exe {OptOff(OPTf_WARN_PAREN);}"); + StreamPrint("#exe {Option(OPTf_WARN_PAREN,OFF);}"); StreamDoc(kernel_cfg->add_dev); - StreamPrint("#exe {OptOn(OPTf_WARN_PAREN);}"); + StreamPrint("#exe {Option(OPTf_WARN_PAREN,ON);}"); }; DrvRep; } diff --git a/Kernel/Dsk/DskBlk.CPP b/Kernel/BlkDev/DskBlk.CPP similarity index 100% rename from Kernel/Dsk/DskBlk.CPP rename to Kernel/BlkDev/DskBlk.CPP diff --git a/Kernel/Dsk/DskBlkDev.CPP b/Kernel/BlkDev/DskBlkDev.CPP similarity index 92% rename from Kernel/Dsk/DskBlkDev.CPP rename to Kernel/BlkDev/DskBlkDev.CPP index 6b4f1fb..7b74b3c 100644 --- a/Kernel/Dsk/DskBlkDev.CPP +++ b/Kernel/BlkDev/DskBlkDev.CPP @@ -31,8 +31,7 @@ Bool BlkDevUnlock(CBlkDev *bd,Bool rst=FALSE) Bool BlkDevInit(CBlkDev *bd) { CDrv *dv=Let2Drv(bd->first_drv_let); - Bool old_preempt=Preempt,result=FALSE; - + Bool result=FALSE; if (!LBts(&bd->flags,BDf_INITIALIZED)) { bd->flags|=BDF_INIT_IN_PROGRESS; switch(bd->type) { @@ -58,8 +57,8 @@ Bool BlkDevInit(CBlkDev *bd) //0xFFFF*4 is too big for my taste bd->max_reads=0x800*4; //max of maybe a quarter of disk cache - if (bd->max_reads>dsk.cache_size/BLK_SIZE/4) - bd->max_reads=dsk.cache_size/BLK_SIZE/4 & ~3; + if (bd->max_reads>blkdev.cache_size/BLK_SIZE/4) + bd->max_reads=blkdev.cache_size/BLK_SIZE/4 & ~3; if (bd->max_reads<128) bd->max_reads=128; bd->max_writes=0xFFFF*4; @@ -72,7 +71,6 @@ Bool BlkDevInit(CBlkDev *bd) bd->flags&=~BDF_INIT_IN_PROGRESS; } else result=TRUE; - Preempt(old_preempt); return result; } @@ -81,7 +79,7 @@ U0 BlkDevsRelease() I64 i; CBlkDev *bd; for (i=0;iowning_task==Fs && bd->bd_signature==BD_SIGNATURE_VAL) BlkDevUnlock(bd,TRUE); } @@ -92,7 +90,7 @@ CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type) I64 i=0; CBlkDev *result; do { - result=&dsk.blkdevs[i]; + result=&blkdev.blkdevs[i]; if (result->bd_signature!=BD_SIGNATURE_VAL) { MemSet(result,0,sizeof(CBlkDev)); result->first_drv_let=first_drv_let; @@ -105,7 +103,7 @@ CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type) result->flags|=BDF_READ_CACHE; if (type==BDT_ATAPI) { - result->blk_size=CD_BLK_SIZE; + result->blk_size=DVD_BLK_SIZE; result->flags|=BDF_READ_ONLY; } else result->blk_size=BLK_SIZE; diff --git a/Kernel/Dsk/DskCDDVD.CPP b/Kernel/BlkDev/DskCDDVD.CPP similarity index 84% rename from Kernel/Dsk/DskCDDVD.CPP rename to Kernel/BlkDev/DskCDDVD.CPP index 3cd9937..9d5c4cc 100644 --- a/Kernel/Dsk/DskCDDVD.CPP +++ b/Kernel/BlkDev/DskCDDVD.CPP @@ -1,7 +1,7 @@ -U0 CDImageRead(U8 cd_drv_let,U8 *out_name) +U0 DVDImageRead(U8 dvd_drv_let,U8 *out_name) {//Read entire CD/DVD image into ISO file. - CBlkDev *bd=Let2BlkDev(cd_drv_let); - CDrv *dv=Let2Drv(cd_drv_let); + CBlkDev *bd=Let2BlkDev(dvd_drv_let); + CDrv *dv=Let2Drv(dvd_drv_let); U8 *buf=MAlloc(COPY_BUF_BLKS<type!=BDT_ATAPI) throw('BlkDev'); if (!out_name) - out_name=dsk.dft_iso_filename; + out_name=blkdev.dft_iso_filename; cnt=CeilU64(dv->size,spc); while (cnt>0) { if (cnt>COPY_BUF_BLKS) @@ -43,15 +43,14 @@ class CDualBuf U8 *buf0,*buf1; I64 in_buf,out_buf,cnt; U8 *filename; - CBlkDev *cd_bd; + CBlkDev *dvd_bd; }; -U0 CDImageWriteTask(CDualBuf *d) +U0 DVDImageWriteTask(CDualBuf *d) { U8 *buf; I64 n,blk=0,cnt=d->cnt; CFile *f; - Preempt(ON); if (FileAttr(d->filename)&RS_ATTR_CONTIGUOUS) f=FOpen(d->filename,"rc"); else @@ -61,8 +60,8 @@ U0 CDImageWriteTask(CDualBuf *d) n=COPY_BUF_BLKS; else n=cnt; - if (n>d->cd_bd->max_writes) - n=d->cd_bd->max_writes; + if (n>d->dvd_bd->max_writes) + n=d->dvd_bd->max_writes; if (d->in_buf&1) buf=d->buf1; else @@ -77,19 +76,18 @@ U0 CDImageWriteTask(CDualBuf *d) FClose(f); } -U0 CDImageWrite(U8 cd_drv_let,U8 *in_name=NULL,I64 media_type=MT_CD) +U0 DVDImageWrite(U8 dvd_drv_let,U8 *in_name=NULL,I64 media_type=MT_DVD) {//Write CD/DVD ISO file to disk. CDualBuf *d=CAlloc(sizeof(CDualBuf)); U8 *buf,*in_name2,*in_name3; I64 i,n,spc,blk=0,cnt; - CDrv *dv=Let2Drv(cd_drv_let); + CDrv *dv=Let2Drv(dvd_drv_let); CBlkDev *bd=dv->bd,*bd2; CTask *task; - Bool old_preempt; CFile *f; if (!in_name) - in_name=dsk.dft_iso_filename; + in_name=blkdev.dft_iso_filename; in_name3=DftExt(in_name,"ISO"); in_name2=FileNameAbs(in_name3); f=FOpen(in_name2,"r"); @@ -106,7 +104,7 @@ U0 CDImageWrite(U8 cd_drv_let,U8 *in_name=NULL,I64 media_type=MT_CD) bd2=bd2->lock_fwding; //If two blkdevs on same controller, use one lock if ((bd2->type==BDT_ATA || bd2->type==BDT_ATAPI) && bd2->base0==bd->base0) { - "Can't Burn CD on same ATA ctrller as File.\n\n"; + PrintErr("Can't burn CD/DVD on same ATA controller as file.\n\n"); throw('BlkDev'); } @@ -117,14 +115,12 @@ U0 CDImageWrite(U8 cd_drv_let,U8 *in_name=NULL,I64 media_type=MT_CD) dv->size=cnt; d->filename=in_name2; - d->cd_bd=bd; + d->dvd_bd=bd; d->buf0=MAlloc(COPY_BUF_BLKS<buf1=MAlloc(COPY_BUF_BLKS<cnt=cnt; - old_preempt=Preempt; - task=Spawn(&CDImageWriteTask,d,"Write CD"); - + task=Spawn(&DVDImageWriteTask,d,"Write CD/DVD"); while (d->in_buf<=d->out_buf) Yield; @@ -179,6 +175,5 @@ U0 CDImageWrite(U8 cd_drv_let,U8 *in_name=NULL,I64 media_type=MT_CD) Free(d->buf1); Free(in_name2); Free(in_name3); - Preempt(old_preempt); Free(d); } diff --git a/Kernel/Dsk/DskCFile.CPP b/Kernel/BlkDev/DskCFile.CPP similarity index 100% rename from Kernel/Dsk/DskCFile.CPP rename to Kernel/BlkDev/DskCFile.CPP diff --git a/Kernel/Dsk/DskCache.CPP b/Kernel/BlkDev/DskCache.CPP similarity index 72% rename from Kernel/Dsk/DskCache.CPP rename to Kernel/BlkDev/DskCache.CPP index ce038af..7154092 100644 --- a/Kernel/Dsk/DskCache.CPP +++ b/Kernel/BlkDev/DskCache.CPP @@ -5,31 +5,31 @@ U0 DskCacheInit(I64 size_in_U8s) while (LBts(&sys_semas[SYS_SEMA_DSK_CACHE],0)) Yield; - Free(dsk.cache_ctrl); - Free(dsk.cache_base); - Free(dsk.cache_hash_table); + Free(blkdev.cache_ctrl); + Free(blkdev.cache_base); + Free(blkdev.cache_hash_table); if (size_in_U8s<0x2000) { - dsk.cache_ctrl=NULL; - dsk.cache_base=NULL; - dsk.cache_hash_table=NULL; + blkdev.cache_ctrl=NULL; + blkdev.cache_base=NULL; + blkdev.cache_hash_table=NULL; } else { - dsk.cache_ctrl=ACAlloc(offset(CCacheBlk.body)); - dsk.cache_base=AMAlloc(size_in_U8s); - QueInit(dsk.cache_ctrl); + blkdev.cache_ctrl=ACAlloc(offset(CCacheBlk.body)); + blkdev.cache_base=AMAlloc(size_in_U8s); + QueInit(blkdev.cache_ctrl); - cnt=MSize(dsk.cache_base)/sizeof(CCacheBlk); - dsk.cache_size=cnt*BLK_SIZE; + cnt=MSize(blkdev.cache_base)/sizeof(CCacheBlk); + blkdev.cache_size=cnt*BLK_SIZE; for (i=0;ilast_lru); + tempc=blkdev.cache_base+i; + QueIns(tempc,blkdev.cache_ctrl->last_lru); tempc->next_hash=tempc->last_hash=tempc; tempc->dv=NULL; tempc->blk=0; } - dsk.cache_hash_table=AMAlloc(DSK_CACHE_HASH_SIZE*sizeof(U8 *)*2); + blkdev.cache_hash_table=AMAlloc(DSK_CACHE_HASH_SIZE*sizeof(U8 *)*2); for (i=0;inext_hash=tempc->last_hash=tempc; } @@ -40,7 +40,7 @@ U0 DskCacheInit(I64 size_in_U8s) I64 DskCacheHash(I64 blk) { I64 i=blk & (DSK_CACHE_HASH_SIZE-1); - return dsk.cache_hash_table(U8 *)+i<<4-offset(CCacheBlk.next_hash); + return blkdev.cache_hash_table(U8 *)+i<<4-offset(CCacheBlk.next_hash); } U0 DskCacheQueRem(CCacheBlk *tempc) @@ -53,7 +53,7 @@ U0 DskCacheQueRem(CCacheBlk *tempc) U0 DskCacheQueIns(CCacheBlk *tempc) { CCacheBlk *temp_n,*temp_l; - QueIns(tempc,dsk.cache_ctrl->last_lru); + QueIns(tempc,blkdev.cache_ctrl->last_lru); temp_l=DskCacheHash(tempc->blk); temp_n=temp_l->next_hash; tempc->last_hash=temp_l; @@ -76,12 +76,12 @@ CCacheBlk *DskCacheFind(CDrv *dv,I64 blk) U0 DskCacheAdd(CDrv *dv,U8 *buf, I64 blk, I64 cnt) { CCacheBlk *tempc; - if (dsk.cache_base) { + if (blkdev.cache_base) { while (LBts(&sys_semas[SYS_SEMA_DSK_CACHE],0)) Yield; while (cnt-->0) { if (!(tempc=DskCacheFind(dv,blk))) - tempc=dsk.cache_ctrl->next_lru; + tempc=blkdev.cache_ctrl->next_lru; DskCacheQueRem(tempc); MemCpy(&tempc->body,buf,BLK_SIZE); tempc->dv=dv; @@ -97,18 +97,18 @@ U0 DskCacheAdd(CDrv *dv,U8 *buf, I64 blk, I64 cnt) U0 DskCacheInvalidate2(CDrv *dv) { CCacheBlk *tempc,*tempc1; - if (dsk.cache_base) { + if (blkdev.cache_base) { while (LBts(&sys_semas[SYS_SEMA_DSK_CACHE],0)) Yield; - tempc=dsk.cache_ctrl->last_lru; - while (tempc!=dsk.cache_ctrl) { + tempc=blkdev.cache_ctrl->last_lru; + while (tempc!=blkdev.cache_ctrl) { tempc1=tempc->last_lru; if (tempc->dv==dv) { DskCacheQueRem(tempc); tempc->dv=NULL; tempc->blk=0; tempc->next_hash=tempc->last_hash=tempc; - QueIns(tempc,dsk.cache_ctrl->last_lru); + QueIns(tempc,blkdev.cache_ctrl->last_lru); } tempc=tempc1; } @@ -119,7 +119,7 @@ U0 DskCacheInvalidate2(CDrv *dv) U0 RCache(CDrv *dv,U8 **_buf, I64 *_blk, I64 *_cnt) { CCacheBlk *tempc; - if (dsk.cache_base) { + if (blkdev.cache_base) { while (LBts(&sys_semas[SYS_SEMA_DSK_CACHE],0)) Yield; //fetch leading blks from cache diff --git a/Kernel/Dsk/DskCluster.CPP b/Kernel/BlkDev/DskCluster.CPP similarity index 97% rename from Kernel/Dsk/DskCluster.CPP rename to Kernel/BlkDev/DskCluster.CPP index 323e03d..5c9fc7c 100644 --- a/Kernel/Dsk/DskCluster.CPP +++ b/Kernel/BlkDev/DskCluster.CPP @@ -12,8 +12,8 @@ I64 ClusterNumNext(CDrv *dv,I64 c,I64 cnt=1) break; case DVT_FAT32: while (cnt-->0 && 0cur_map_blk[c & (BLK_SIZE/4-1)]; + DrvFATBlkSet(dv,c); + c=dv->cur_fat_blk[c & (BLK_SIZE/4-1)]; } if (!(0owning_task==Fs && dv->dv_signature==DRV_SIGNATURE_VAL) DrvUnlock(dv,TRUE); } @@ -42,7 +42,7 @@ CDrv *DrvMakeFree(U8 drv_let) CDrv *result; if (!(0<=idrv_let='A'+i; return result; @@ -55,62 +55,62 @@ CDrv *DrvNextFree(U8 first_drv_let='C') if (!(0<=icur_map_blk); - dv->cur_map_blk=AMAlloc(BLK_SIZE); - dv->cur_map_blk_num=0; - dv->map_blk_dirty=0; - RBlks(dv,dv->cur_map_blk,dv->map1,1); + Free(dv->cur_fat_blk); + dv->cur_fat_blk=AMAlloc(BLK_SIZE); + dv->cur_fat_blk_num=0; + dv->fat_blk_dirty=0; + RBlks(dv,dv->cur_fat_blk,dv->fat1,1); } -U0 DrvMapBlkClean(CDrv *dv,I64 map_select=3) +U0 DrvFATBlkClean(CDrv *dv,I64 fat_select=3) { - if ((dv->type==DVT_FAT32 || dv->type==DVT_REDSEA)&&Bt(&dv->map_blk_dirty,0)) { - if (dv->map1==dv->map2) { - WBlks(dv,dv->cur_map_blk,dv->map1+dv->cur_map_blk_num,1); - LBtr(&dv->map_blk_dirty,0); + if ((dv->type==DVT_FAT32 || dv->type==DVT_REDSEA)&&Bt(&dv->fat_blk_dirty,0)) { + if (dv->fat1==dv->fat2) { + WBlks(dv,dv->cur_fat_blk,dv->fat1+dv->cur_fat_blk_num,1); + LBtr(&dv->fat_blk_dirty,0); } else { - if (map_select==3 || !map_select) - WBlks(dv,dv->cur_map_blk,dv->map1+dv->cur_map_blk_num,1); - if (map_select==3 || map_select==1) { - WBlks(dv,dv->cur_map_blk,dv->map2+dv->cur_map_blk_num,1); - LBtr(&dv->map_blk_dirty,0); + if (fat_select==3 || !fat_select) + WBlks(dv,dv->cur_fat_blk,dv->fat1+dv->cur_fat_blk_num,1); + if (fat_select==3 || fat_select==1) { + WBlks(dv,dv->cur_fat_blk,dv->fat2+dv->cur_fat_blk_num,1); + LBtr(&dv->fat_blk_dirty,0); } } } } -U0 DrvMapBlkSet(CDrv *dv,I64 c,I64 map_select=3) +U0 DrvFATBlkSet(CDrv *dv,I64 c,I64 fat_select=3) { - I64 map_blk_num; + I64 fat_blk_num; if (c==INVALID_CLUSTER) throw('Drv'); switch (dv->type) { case DVT_FAT32: - map_blk_num=c>>(BLK_SIZE_BITS-2); + fat_blk_num=c>>(BLK_SIZE_BITS-2); break; case DVT_REDSEA: - map_blk_num=(c-dv->data_area)>>(BLK_SIZE_BITS+3); + fat_blk_num=(c-dv->data_area)>>(BLK_SIZE_BITS+3); break; default: throw('Drv'); } - if (map_blk_num!=dv->cur_map_blk_num) { - DrvMapBlkClean(dv,map_select); - dv->cur_map_blk_num=map_blk_num; - if (map_select==3 || !map_select) - RBlks(dv,dv->cur_map_blk,dv->map1+dv->cur_map_blk_num,1); + if (fat_blk_num!=dv->cur_fat_blk_num) { + DrvFATBlkClean(dv,fat_select); + dv->cur_fat_blk_num=fat_blk_num; + if (fat_select==3 || !fat_select) + RBlks(dv,dv->cur_fat_blk,dv->fat1+dv->cur_fat_blk_num,1); else - RBlks(dv,dv->cur_map_blk,dv->map2+dv->cur_map_blk_num,1); + RBlks(dv,dv->cur_fat_blk,dv->fat2+dv->cur_fat_blk_num,1); } } @@ -135,11 +135,11 @@ CDrv *Let2Drv(U8 drv_let=0) dv=Fs->cur_dv; else { if (drv_let==':') - drv_let=dsk.boot_drv_let; + drv_let=blkdev.boot_drv_let; drv_let=ToUpper(drv_let); if (!('A'<=drv_let<='Z')) throw('Drv'); - dv=dsk.let_to_drv[drv_let-'A']; + dv=blkdev.let_to_drv[drv_let-'A']; } DrvChk(dv); return dv; @@ -177,21 +177,19 @@ U0 ChgDsk(U8 drv_let=0) {//Change disk. (Needed for removable media.) CDrv *dv=Let2Drv(drv_let); CBlkDev *bd=dv->bd; - Bool old_preempt=Preempt; if (!(bd->flags&BDF_INITIALIZED)) BlkDevInit(bd); else if (bd->flags&BDF_REMOVABLE) DskCacheInvalidate(dv); Drv(drv_let); RedSeaFreeFreeLst(dv); - Preempt(old_preempt); } Bool MapDrv(U8 drv_let,CDrv *dv) {//Make drive letter map to another. drv_let=ToUpper(drv_let); if ('A'<=drv_let<='Z') { - dsk.let_to_drv[drv_let-'A']=dv; + blkdev.let_to_drv[drv_let-'A']=dv; dv->drv_let=drv_let; return TRUE; } else @@ -260,13 +258,13 @@ U0 DrvRep() I64 i,drv_let; U8 *st; "\nDefined Drives:\n\n"; - for (i=0,dv=dsk.drvs;idv_signature==DRV_SIGNATURE_VAL) { bd=dv->bd; drv_let=Drv2Let(dv); if (Bt(&dv->type,DVTf_DISABLE)) "$$RED$$X"; - else if (drv_let==dsk.boot_drv_let) + else if (drv_let==blkdev.boot_drv_let) "$$GREEN$$:"; else '' CH_SPACE; diff --git a/Kernel/Dsk/DskFile.CPP b/Kernel/BlkDev/DskFile.CPP similarity index 98% rename from Kernel/Dsk/DskFile.CPP rename to Kernel/BlkDev/DskFile.CPP index 04d3ec6..1662e03 100644 --- a/Kernel/Dsk/DskFile.CPP +++ b/Kernel/BlkDev/DskFile.CPP @@ -91,8 +91,7 @@ U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL) return result; } -I64 FileWrite(U8 *filename,U8 *fbuf, - I64 size,CDate cdt=0,I64 attr=0) +I64 FileWrite(U8 *filename,U8 *fbuf,I64 size,CDate cdt=0,I64 attr=0) {//Write whole file to disk. I64 c=0; CHashGeneric *temph; diff --git a/Kernel/Dsk/DskFind.CPP b/Kernel/BlkDev/DskFind.CPP similarity index 100% rename from Kernel/Dsk/DskFind.CPP rename to Kernel/BlkDev/DskFind.CPP diff --git a/Kernel/Dsk/DskFmt.CPP b/Kernel/BlkDev/DskFmt.CPP similarity index 98% rename from Kernel/Dsk/DskFmt.CPP rename to Kernel/BlkDev/DskFmt.CPP index 18cae53..09df8eb 100644 --- a/Kernel/Dsk/DskFmt.CPP +++ b/Kernel/BlkDev/DskFmt.CPP @@ -55,7 +55,7 @@ U0 Fmt(I64 drv_let,Bool quick=TRUE,Bool confirm=TRUE,I64 type=DVT_FAT32) //$BK,1$Warning:$BK,0$ Destroys all previous info. //quick=FALSE means fill entire drive with zeros. //Choose $LK,"DVT_FAT32",A="MN:DVT_FAT32"$ or $LK,"DVT_REDSEA",A="MN:DVT_REDSEA"$. - //You don't format a CD-ROM with this. + //You don't format a CD/DVD with this. CDrv *dv=Let2Drv(drv_let); Bool old_silent=IsSilent; if (confirm && !AreYouSure) diff --git a/Kernel/Dsk/DskStrA.CPP b/Kernel/BlkDev/DskStrA.CPP similarity index 98% rename from Kernel/Dsk/DskStrA.CPP rename to Kernel/BlkDev/DskStrA.CPP index 0d6f3f4..5c1daa0 100644 --- a/Kernel/Dsk/DskStrA.CPP +++ b/Kernel/BlkDev/DskStrA.CPP @@ -97,7 +97,7 @@ U8 *DirNameAbs(U8 *_dirname) drv[2]=0; if (*dirname && dirname[1]==':') { if (*dirname==':') - *drv=dsk.boot_drv_let; + *drv=blkdev.boot_drv_let; else *drv=*dirname; dirname=dirname+2; @@ -270,7 +270,7 @@ returns default. ("/Kernel/KHashA.CPP.Z",NULL,NULL) returns "D:/Kernel" ("/Kernel",NULL,"PRJ.Z") returns "D:/Kernel/Kernel.PRJ.Z" -("/Kernel/Dsk",NULL,"PRJ.Z") returns "D:/Kernel/Kernel.PRJ.Z" +("/Kernel/BlkDev",NULL,"PRJ.Z") returns "D:/Kernel/Kernel.PRJ.Z" ("/Apps/Psalmody","Load","CPP.Z") returns "D:/Apps/Psalmody/Load.CPP.Z" */ U8 *st=DirNameAbs(dirname),*st2,*st3,*result,*dft=NULL,*ext; diff --git a/Kernel/Dsk/DskStrB.CPP b/Kernel/BlkDev/DskStrB.CPP similarity index 100% rename from Kernel/Dsk/DskStrB.CPP rename to Kernel/BlkDev/DskStrB.CPP diff --git a/Kernel/Dsk/FileSysFAT.CPP b/Kernel/BlkDev/FileSysFAT.CPP similarity index 95% rename from Kernel/Dsk/FileSysFAT.CPP rename to Kernel/BlkDev/FileSysFAT.CPP index 8d9a188..0656c6b 100644 --- a/Kernel/Dsk/FileSysFAT.CPP +++ b/Kernel/BlkDev/FileSysFAT.CPP @@ -28,13 +28,13 @@ U0 FAT32DrvInit(CDrv *dv) dv->type=DVT_FAT32; RBlks(dv,&br32,dv->base_offset,1); dv->file_system_info_sect=dv->base_offset+br32.file_system_info_sect; - dv->map1=dv->base_offset+br32.reserved_sects; - dv->map2=dv->map1+br32.sects_per_fat; - dv->data_area=dv->map2+br32.sects_per_fat + dv->fat1=dv->base_offset+br32.reserved_sects; + dv->fat2=dv->fat1+br32.sects_per_fat; + dv->data_area=dv->fat2+br32.sects_per_fat -2*br32.sects_per_cluster; //Starts at Cluster 2 dv->spc=br32.sects_per_cluster; dv->root_cluster=br32.root_cluster; - DrvMapBlkAlloc(dv); + DrvFATBlkAlloc(dv); Free(dv->fis); dv->fis=AMAlloc(BLK_SIZE); RBlks(dv,dv->fis,dv->file_system_info_sect,1); @@ -427,25 +427,25 @@ U0 FAT32FreeClusters(CDrv *dv,I64 c) try { unlock_break=BreakLock; unlock=DrvLock(dv); - DrvMapBlkClean(dv); + DrvFATBlkClean(dv); do { - DrvMapBlkSet(dv,c,0); - next=dv->cur_map_blk[c&(BLK_SIZE/4-1)]; - dv->cur_map_blk[c&(BLK_SIZE/4-1)]=0; - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,c,0); + next=dv->cur_fat_blk[c&(BLK_SIZE/4-1)]; + dv->cur_fat_blk[c&(BLK_SIZE/4-1)]=0; + LBts(&dv->fat_blk_dirty,0); c=next; } while (0cur_map_blk[c&(BLK_SIZE/4-1)]; - dv->cur_map_blk[c&(BLK_SIZE/4-1)]=0; - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,c,1); + next=dv->cur_fat_blk[c&(BLK_SIZE/4-1)]; + dv->cur_fat_blk[c&(BLK_SIZE/4-1)]=0; + LBts(&dv->fat_blk_dirty,0); c=next; } while (0cur_map_blk[j&(BLK_SIZE/4-1)]) + DrvFATBlkSet(dv,j); + if (!dv->cur_fat_blk[j&(BLK_SIZE/4-1)]) break; } if (!(0cur_map_blk[c&(BLK_SIZE/4-1)]=j; - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,c); + dv->cur_fat_blk[c&(BLK_SIZE/4-1)]=j; + LBts(&dv->fat_blk_dirty,0); } c=j; } if (0cur_map_blk[c&(BLK_SIZE/4-1)]=0x0FFFFFFF; - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,c); + dv->cur_fat_blk[c&(BLK_SIZE/4-1)]=0x0FFFFFFF; + LBts(&dv->fat_blk_dirty,0); } - DrvMapBlkClean(dv); + DrvFATBlkClean(dv); dv->fis->most_recently_alloced=j; dv->fis->free_clusters=-1; @@ -532,8 +532,8 @@ I64 FAT32AllocContiguousClusters(CDrv *dv,I64 cnt) while (cont && ispc+dv->data_area>dv->size+dv->base_offset) throw('Drv'); - DrvMapBlkSet(dv,first+i); - if (dv->cur_map_blk[(first+i)&(BLK_SIZE/4-1)]) + DrvFATBlkSet(dv,first+i); + if (dv->cur_fat_blk[(first+i)&(BLK_SIZE/4-1)]) cont=FALSE; else i++; @@ -541,27 +541,27 @@ I64 FAT32AllocContiguousClusters(CDrv *dv,I64 cnt) if (!cont) first=first+i; else { - DrvMapBlkClean(dv); + DrvFATBlkClean(dv); for (i=0;icur_map_blk[(first+i)&(BLK_SIZE/4-1)]=0x0FFFFFFF; + dv->cur_fat_blk[(first+i)&(BLK_SIZE/4-1)]=0x0FFFFFFF; else - dv->cur_map_blk[(first+i)&(BLK_SIZE/4-1)]=first+i+1; - LBts(&dv->map_blk_dirty,0); + dv->cur_fat_blk[(first+i)&(BLK_SIZE/4-1)]=first+i+1; + LBts(&dv->fat_blk_dirty,0); } - DrvMapBlkClean(dv,0); + DrvFATBlkClean(dv,0); for (i=0;icur_map_blk[(first+i)&(BLK_SIZE/4-1)]=0x0FFFFFFF; + dv->cur_fat_blk[(first+i)&(BLK_SIZE/4-1)]=0x0FFFFFFF; else - dv->cur_map_blk[(first+i)&(BLK_SIZE/4-1)]=first+i+1; - LBts(&dv->map_blk_dirty,0); + dv->cur_fat_blk[(first+i)&(BLK_SIZE/4-1)]=first+i+1; + LBts(&dv->fat_blk_dirty,0); } - DrvMapBlkClean(dv,1); + DrvFATBlkClean(dv,1); break; } } diff --git a/Kernel/Dsk/FileSysISO.CPP b/Kernel/BlkDev/FileSysISO.CPP similarity index 100% rename from Kernel/Dsk/FileSysISO.CPP rename to Kernel/BlkDev/FileSysISO.CPP diff --git a/Kernel/Dsk/FileSysRedSea.CPP b/Kernel/BlkDev/FileSysRedSea.CPP similarity index 97% rename from Kernel/Dsk/FileSysRedSea.CPP rename to Kernel/BlkDev/FileSysRedSea.CPP index 1959b3e..889b78d 100644 --- a/Kernel/Dsk/FileSysRedSea.CPP +++ b/Kernel/BlkDev/FileSysRedSea.CPP @@ -34,8 +34,8 @@ U0 RedSeaFreeLstBuild(CDrv *dv) while (firstcur_map_blk,(first+i-dv->data_area)&(BLK_SIZE<<3-1))) + DrvFATBlkSet(dv,first+i); + if (Bt(dv->cur_fat_blk,(first+i-dv->data_area)&(BLK_SIZE<<3-1))) break; else i++; @@ -70,8 +70,8 @@ U0 RedSeaDrvInit(CDrv *dv) dv->size=br.sects; dv->data_area=dv->base_offset+br.bitmap_sects; dv->root_cluster=br.root_cluster; - dv->map1=dv->map2=dv->base_offset+1; - DrvMapBlkAlloc(dv); + dv->fat1=dv->fat2=dv->base_offset+1; + DrvFATBlkAlloc(dv); if (unlock) DrvUnlock(dv); } catch @@ -282,12 +282,12 @@ U0 RedSeaFreeClusters(CDrv *dv,I64 c,I64 cnt) QueIns(tempf,dv->last_free); } while (cnt-->0) { - DrvMapBlkSet(dv,c); - LBtr(dv->cur_map_blk,(c-dv->data_area)&(BLK_SIZE<<3-1)); - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,c); + LBtr(dv->cur_fat_blk,(c-dv->data_area)&(BLK_SIZE<<3-1)); + LBts(&dv->fat_blk_dirty,0); c++; } - DrvMapBlkClean(dv); + DrvFATBlkClean(dv); if (unlock) DrvUnlock(dv); @@ -327,11 +327,11 @@ I64 RedSeaAllocClusters(CDrv *dv,I64 cnt) throw('Drv'); first=best_free->start; for (i=0;icur_map_blk,(first+i-dv->data_area)&(BLK_SIZE<<3-1)); - LBts(&dv->map_blk_dirty,0); + DrvFATBlkSet(dv,first+i); + LBts(dv->cur_fat_blk,(first+i-dv->data_area)&(BLK_SIZE<<3-1)); + LBts(&dv->fat_blk_dirty,0); } - DrvMapBlkClean(dv); + DrvFATBlkClean(dv); if (best_free->size-=cnt) best_free->start+=cnt; else { diff --git a/Kernel/Dsk/Dsk.CPP b/Kernel/BlkDev/MakeBlkDev.CPP similarity index 91% rename from Kernel/Dsk/Dsk.CPP rename to Kernel/BlkDev/MakeBlkDev.CPP index d87a908..d6b448e 100644 --- a/Kernel/Dsk/Dsk.CPP +++ b/Kernel/BlkDev/MakeBlkDev.CPP @@ -1,3 +1,4 @@ +#exe {Cd(__DIR__);}; #include "DskStrA" #include "DskCache" #include "DskATA" @@ -20,3 +21,4 @@ #include "DskCopy" #include "DskCDDVD" #include "DskFmt" +#exe {Cd("..");}; diff --git a/Kernel/Compress.CPP b/Kernel/Compress.CPP index 7cee1b7..9e2936c 100644 --- a/Kernel/Compress.CPP +++ b/Kernel/Compress.CPP @@ -223,7 +223,7 @@ CArcCtrl *ArcCtrlNew(Bool expand,I64 compression_type=CT_8_BIT) CArcCtrl *c; c=CAlloc(sizeof(CArcCtrl)); if (expand) { - c->stk_base=MAlloc(ARC_MAX_ENTRY+1); + c->stk_base=MAlloc(1<stk_ptr=c->stk_base; } if (compression_type==CT_7_BIT) diff --git a/Kernel/Display.CPP b/Kernel/Display.CPP index ddc5de9..7c80214 100644 --- a/Kernel/Display.CPP +++ b/Kernel/Display.CPP @@ -6,7 +6,6 @@ the normal screen text output routine. See also $LK,"GrUpdateScreen",A="MN:GrUpdateScreen"$(). */ - Bool old_preempt=Preempt; I64 i,row,col; U8 *ptr,*ptr1,*ptr2; @@ -16,20 +15,16 @@ See also $LK,"GrUpdateScreen",A="MN:GrUpdateScreen"$(). text.raw_flags&=~RWF_IN_DOLLAR; if (!(text.raw_flags & RWF_LAST_DOLLAR)) { text.raw_flags&=~RWF_LAST_DOLLAR; - Preempt(old_preempt); return; } } else { text.raw_flags|=RWF_IN_DOLLAR|RWF_LAST_DOLLAR; - Preempt(old_preempt); return; } } text.raw_flags&=~RWF_LAST_DOLLAR; - if (text.raw_flags&RWF_IN_DOLLAR) { - Preempt(old_preempt); + if (text.raw_flags&RWF_IN_DOLLAR) return; - } } if (ch=='\t') { RawPutChar(CH_SPACE); @@ -88,7 +83,6 @@ See also $LK,"GrUpdateScreen",A="MN:GrUpdateScreen"$(). } text.raw_col++; } - Preempt(old_preempt); } U0 VGAFlush() @@ -128,3 +122,18 @@ U0 WinDerivedValsUpdate(CTask *task=NULL) } POPFD } + +Bool WinInside(I64 x,I64 y,CTask *task=NULL,Bool border=FALSE) +{//Is pixel (x,y) inside task's win? + if (!task) task=Fs; + if (TaskValidate(task) && Bt(&task->display_flags,DISPLAYf_SHOW)) { + if (border) { + if (task->border_pix_left<=x<=task->border_pix_right && + task->border_pix_top<=y<=task->border_pix_bottom) + return TRUE; + } else if (task->pix_left<=x<=task->pix_right && + task->pix_top<=y<=task->pix_bottom) + return TRUE; + } + return FALSE; +} diff --git a/Kernel/EdLite.CPP b/Kernel/EdLite.CPP index acf8d5a..bb3885d 100644 --- a/Kernel/EdLite.CPP +++ b/Kernel/EdLite.CPP @@ -66,7 +66,7 @@ Bool EdLite(U8 *filename,I64 num=1,I64 edf_dof_flags=0) old_debug=InDbg(ON), old_single=SingleUser(ON); - if (!filename) filename=dsk.temp_filename; + if (!filename) filename=blkdev.temp_filename; buf=FileRead(filename,&size); PUSHFD diff --git a/Kernel/KCfg.CPP b/Kernel/KCfg.CPP index 4145d4a..e7fe8b5 100644 --- a/Kernel/KCfg.CPP +++ b/Kernel/KCfg.CPP @@ -23,7 +23,7 @@ class CKernelCfg Bool opts[CFG_NUM_OPTIONS]; U8 mem_init_val,heap_init_val,var_init_val, boot_drv_let,auto_mount_ide_hd_let,auto_mount_ide_cd_let; - Bool cdrom_ports_pmt; + Bool dvd_ports_pmt; }; CDoc *KernelCfgAddDev(CKernelCfg *c) @@ -58,7 +58,7 @@ CDoc *KernelCfgAddDev(CKernelCfg *c) '\n'; if (0<=first_drv_num to use booted CD-ROM\n"; + " to use booted CD/DVD\n"; if (num_hints) "Enter dev number or\nport with $$PURPLE$$0x$$FG$$ prefix.\n" "I/O Port Base0:\n"; @@ -120,8 +120,8 @@ CDoc *KernelCfgAddDev(CKernelCfg *c) make_free=FALSE; if (type==BDT_ATA || type==BDT_ATAPI) { if (type==BDT_ATAPI && !*base0_buf) { - c->cdrom_ports_pmt=TRUE; - DocPrint(doc,"dsk.boot_rescue_drv_pmt=GetBaseUnit(bd);"); + c->dvd_ports_pmt=TRUE; + DocPrint(doc,"blkdev.boot_rescue_drv_pmt=GetBaseUnit(bd);"); if (first_drv_num+'A'==c->boot_drv_let) make_free=TRUE; } else @@ -157,7 +157,7 @@ U0 KernelCfgOptions(CKernelCfg *c) "$$PURPLE$$VarInit$$FG$$ Initializes glbl var memory to a val.\n" "$$PURPLE$$NoMP$$FG$$ No multicore.\n" "$$PURPLE$$TextMode$$FG$$ Text Mode (requires hard reboot).\n" - "$$PURPLE$$DontProbe$$FG$$ Just prompt CD-ROM ports, don't probe.\n" + "$$PURPLE$$DontProbe$$FG$$ Just prompt CD/DVD ports, don't probe.\n" "$$PURPLE$$AutoMountIDE$$FG$$ AutoMount IDE drives to 'C' and 'T'.\n" "$$PURPLE$$BootRescueDrv$$FG$$ Include RAM Drv in Kernel.BIN.\n" "\n"; diff --git a/Kernel/Date.CPP b/Kernel/KDate.CPP similarity index 100% rename from Kernel/Date.CPP rename to Kernel/KDate.CPP diff --git a/Kernel/KDbg.CPP b/Kernel/KDbg.CPP index 15db092..ee40ce7 100644 --- a/Kernel/KDbg.CPP +++ b/Kernel/KDbg.CPP @@ -574,6 +574,7 @@ U0 Fault3(I64 fault_num,I64 fault_err_code) mp_cnt=1; dbg.mp_crash->cpu_num=Gs->num; dbg.mp_crash->task=Fs; + dbg.mp_crash->rip=Fs->rip; dbg.mp_crash->msg=dbg.msg; dbg.mp_crash->msg_num=dbg.msg_num; MPInt(I_MP_CRASH,0); @@ -597,41 +598,41 @@ U0 Fault3(I64 fault_num,I64 fault_err_code) } U0 Fault2(I64 fault_num,I64 fault_err_code) -{//Called from $LK,"Fault2",A="FF:::/Kernel/Ints.CPP,Fault2"$. +{//Called from $LK,"Fault2",A="FF:::/Kernel/KInts.CPP,Fault2"$. //$BK,1$Be careful not to swap-out and ruin the saved context$BK,0$ Bool was_raw,was_single_user,was_silent; I64 i,old_raw_flags=text.raw_flags; - if (fault_num==I_DIVIDE_BY_ZERO) { - "RIP:%P\n",Fs->rip; - throw('DivZero'); - } was_single_user=SingleUser(ON); if (!IsDbg) dbg.focus_task=sys_focus_task; sys_focus_task=NULL; if (fault_num==I_BPT) Fs->rip--; - was_raw=Raw(ON); - was_silent=Silent(OFF); - text.raw_flags|=RWF_SHOW_DOLLAR|RWF_SCROLL; + if (Fs->dbg_task) + CallExtNum(EXT_DBG_RESUME,fault_num,fault_err_code); + else { + was_raw=Raw(ON); + was_silent=Silent(OFF); + text.raw_flags|=RWF_SHOW_DOLLAR|RWF_SCROLL; - "Task \""; - "%s",Fs->task_title; - "\"\n"; - "Fault:0x%02X %Z\t\tErr Code:%08X\n", - fault_num,fault_num,"ST_INT_NAMES",fault_err_code; - "RIP:%08X",Fs->rip; //Sometimes crashes on %p, so do this first - ":%p RSP:%08X\n",Fs->rip,Fs->rsp; - if (fault_num==I_PAGE_FAULT) { - MOV_RAX_CR2 - i=GetRAX; - "Fault Addr:%08X:%p\n",i,i; + "Task \""; + "%s",Fs->task_title; + "\"\n"; + "Fault:0x%02X %Z\t\tErr Code:%08X\n", + fault_num,fault_num,"ST_INT_NAMES",fault_err_code; + "RIP:%08X",Fs->rip; //Sometimes crashes on %p, so do this first + ":%p RSP:%08X\n",Fs->rip,Fs->rsp; + if (fault_num==I_PAGE_FAULT) { + MOV_RAX_CR2 + i=GetRAX; + "Fault Addr:%08X:%p\n",i,i; + } + Fault3(fault_num,fault_err_code); + + Silent(was_silent); + Raw(was_raw); + text.raw_flags=old_raw_flags; } - Fault3(fault_num,fault_err_code); - - Silent(was_silent); - Raw(was_raw); - text.raw_flags=old_raw_flags; SingleUser(was_single_user); if (LBtr(&Fs->task_flags,TASKf_KILL_AFTER_DBG)) Exit; diff --git a/Kernel/KEnd.CPP b/Kernel/KEnd.CPP index 92856f4..f461df3 100644 --- a/Kernel/KEnd.CPP +++ b/Kernel/KEnd.CPP @@ -10,16 +10,18 @@ U0 SysGlblsInit() sys_focus_task=Fs; QueInit(&sys_macro_root); - dsk.dft_iso_filename="::/Temp/CDDVD.ISO"; - StrCpy(dsk.temp_filename,"::/Home/Temp.TXT.Z"); - dsk.cdrom_boot_is_good=TRUE; + blkdev.dft_iso_filename="::/Temp/CDDVD.ISO"; + blkdev.temp_filename="::/Home/Temp.TXT.Z"; + blkdev.dvd_boot_is_good=TRUE; #exe { if (!kernel_cfg->auto_mount_ide_hd_let) kernel_cfg->auto_mount_ide_hd_let='C'; if (!kernel_cfg->auto_mount_ide_cd_let) kernel_cfg->auto_mount_ide_cd_let='T'; - StreamPrint("dsk.first_hd_drv_let=%d;",kernel_cfg->auto_mount_ide_hd_let); - StreamPrint("dsk.first_cd_drv_let=%d;",kernel_cfg->auto_mount_ide_cd_let); + StreamPrint("blkdev.first_hd_drv_let=%d;", + kernel_cfg->auto_mount_ide_hd_let); + StreamPrint("blkdev.first_dvd_drv_let=%d;", + kernel_cfg->auto_mount_ide_cd_let); } InDbg(ON); @@ -36,10 +38,10 @@ U0 SysGlblsInit() KeyDevInit; #exe { - StreamPrint("dsk.boot_drv_let='%C';",kernel_cfg->boot_drv_let); - StreamPrint("#exe{OptOff(OPTf_WARN_PAREN);}"); + StreamPrint("blkdev.boot_drv_let='%C';",kernel_cfg->boot_drv_let); + StreamPrint("#exe{Option(OPTf_WARN_PAREN,OFF);}"); StreamPrint("DskCacheInit(%s);",kernel_cfg->dsk_cache_size_exp); - StreamPrint("#exe{OptOn(OPTf_WARN_PAREN);}"); + StreamPrint("#exe{Option(OPTf_WARN_PAREN,ON);}"); }; pow10_I64=CAlloc(sizeof(F64)*(308+308+1)); @@ -59,7 +61,7 @@ U0 SysGlblsInit() dev.mem64_ptr=MEM_MAPPED_SPACE; dbg.psect_cache=CAlloc(PSECT_CACHE_SIZE*sizeof(CPSectCache)); - dbg.fault_handlers_code=IntFaultHandlersNew; + dbg.int_fault_code=IntFaultHandlersNew; } U0 SysGrInit() @@ -129,6 +131,7 @@ U0 Reboot() U0 KernelMain() {//Continued from $LK,"Kernel",A="FF:::/Kernel/KStart.CPP,I32 &Kernel"$ + OutU8(0x61,InU8(0x61)&~3); //Snd(0); adam_task=Fs; HeapsInit; LBts(&sys_run_level,RLf_FULL_HEAP); @@ -163,7 +166,20 @@ U0 KernelMain() LBts(&sys_run_level,RLf_INTERRUPTS); TimeStampFreqCal; - Preempt(ON); + + "Before BlkDevsInitAll\n"; + BlkDevsInitAll; + "After BlkDevsInitAll\n"; + + #exe { + if (kernel_cfg->dvd_ports_pmt) + StreamPrint( + "if (blkdev.boot_rescue_drv_pmt) \"%%S\",\"ST_DVD_PORTS_PMT2\";"); + }; + + ChgDsk(':'); + Gs->idle_task->cur_dv=blkdev.let_to_drv[ToUpper(blkdev.boot_drv_let)-'A']; + LBts(&sys_run_level,RLf_BLKDEV); #exe { if (!kernel_cfg->opts[CFG_NO_MP]) @@ -180,19 +196,6 @@ U0 KernelMain() else Spawn(&MouseDriverInstall,,,1); - "BlkDevsInitAll\n"; - BlkDevsInitAll; - "BlkDevsInitAll Done\n"; - - #exe { - if (kernel_cfg->cdrom_ports_pmt) - StreamPrint( - "if (dsk.boot_rescue_drv_pmt) \"%%S\",\"ST_CDROM_PORTS_PMT2\";"); - }; - - ChgDsk(':'); - LBts(&sys_run_level,RLf_DSK); - "Loading Compiler\n"; Cd("/Compiler"); Load("Compiler",LDF_SILENT); @@ -201,8 +204,7 @@ U0 KernelMain() InDbg(OFF); cnts.time_stamp_freq_initial=TimeStampFreqCal; Cd("/"); - try - ExeFile("Adam"); //Continues $LK,"/Adam.CPP",A="FL:/Adam.CPP,1"$ + try ExeFile("StartOS"); //Continues $LK,"/StartOS.CPP",A="FL:/StartOS.CPP,1"$ catch { Raw(ON); PutExcept; diff --git a/Kernel/KExcept.CPP b/Kernel/KExcept.CPP index 42d7461..32aa73e 100644 --- a/Kernel/KExcept.CPP +++ b/Kernel/KExcept.CPP @@ -48,7 +48,7 @@ U0 PutExcept(Bool catch_it=TRUE) Fs->catch_except=catch_it; } -#exe {OptOn(OPTf_NO_REG_VAR);}; +#exe {Option(OPTf_NO_REG_VAR,ON);}; class CTryStk { @@ -105,7 +105,7 @@ U0 throw(I64 ch=0,Bool no_log=FALSE) Raw(was_raw); } -#exe {OptOff(OPTf_NO_REG_VAR);}; +#exe {Option(OPTf_NO_REG_VAR,OFF);}; U0 SysThrowBreak() { diff --git a/Kernel/KExts.CPP b/Kernel/KExts.CPP index a09f743..913c30b 100644 --- a/Kernel/KExts.CPP +++ b/Kernel/KExts.CPP @@ -79,7 +79,7 @@ extern CTask *SpawnQue(U0 (*fp_addr)(U8 *data),U8 *data=NULL, I64 stk_size=0,I64 flags=1<_4$EK5}=uFOr!&rv8zOv*_u z)>BaMOoIvK<(DX=<(KBA=qMB<7NzEuD3l}?XR8-O)N*AOD-@?D7A0q-rsyds)H|jm z=7JR{WF!_V6jv6Pq~_|DXQsexDAwcR3Xb%3^7m2j@%Q)E4GmDxa4jxKP0mcr$*I&) zC@oG+QAny(@bU~%NY2kK$jnJCQb^28QSix6Oi3-$<>%)E4kl8jUZ$6#kqPld9?oYK@{h5R&y#GD+iVm&S+O$Cp{;tYkP{FF+C#G<0aN|2G6c`2zCsVRC~#+nK~nR(f%DY`kuB_NrS zqQtV)B9Kc<^GY&v6mkxWa z74maZpbG0j;p^z)666{jtQ+F5ix$)h8o@dFRIRhNZ#mR|zd7vPHg;)qUy?|W@mNNpUg5cCt z1r;A}9VM`Kx6Hg0B^^gwC0{=)gn){MrXH7;J{Q-9xq|f!j0_O)mWct(mXTm&U}$Gx zU~o<>VURIkWMGH~agvG|WC9ovnYi@%87x2VG9ETLj(f@ z!*m7)2B`!F28Lz^28Id-28Mi)z$U1QBlR#PYK#y)DvVG)8jKJ<7K{)*T!IV?4C)LF z3?SN`fq?-m0AlbmF))B=E*JwugH(bAKn#!;5Y43uH3LM0wbZX*U|_hwz`y{aL2l;S z2NeL(U;#_09uN)I!^jA62#5v?h(ZNGG+00rDgdIv0&k&afM~D)AJmrmcZ?AGxnK+s z4Yn7?04W6vz!)GJ;MA;11OL{G{{>F#?WK~qNRR8 PUG($+|NqV`pu`UVWcX0` diff --git a/Kernel/Ints.CPP b/Kernel/KInts.CPP similarity index 81% rename from Kernel/Ints.CPP rename to Kernel/KInts.CPP index 5b7555d..1b9d1a6 100644 --- a/Kernel/Ints.CPP +++ b/Kernel/KInts.CPP @@ -1,16 +1,16 @@ asm { -SYS_MP_CRASH_HANDLER_ADDR:: //Forward reference to work around compiler - DU32 &MPCrash; +INT_MP_CRASH_ADDR:: //Forward reference to work around compiler + DU32 &IntMPCrash; -SYS_WAKE_HANDLER:: +INT_WAKE:: PUSH RAX MOV EAX,U32 LAPIC_EOI MOV U32 [RAX],0 POP RAX IRET -SYS_TIMER_HANDLER:: //I_TIMER - CALL TASK_CONTEXT_SAVE //PREEMPTIVE +IRQ_TIMER:: //I_TIMER + CALL TASK_CONTEXT_SAVE CLD MOV RAX,U64 [RSP] @@ -48,13 +48,9 @@ SYS_TIMER_HANDLER:: //I_TIMER @@20: CALL &IntCore0TimerHandler //Only Core 0 calls this. -@@25: TEST U8 [SYS_SEMAS+SYS_SEMA_SINGLE_USER*SEMA_STRUCT_SIZE],1 - JNZ @@30 - BT U64 CTask.task_flags[RSI],TASKf_PREEMPT - JC I32 RESTORE_NEXT_RSI_TASK -@@30: JMP I32 RESTORE_RSI_NO_PREEMPT_TASK +@@25: JMP I32 RESTORE_RSI_TASK //************************************ -SYS_IRQ_FAULT:: +INT_FAULT:: PUSH RBX PUSH RAX MOV BL,U8 16[RSP] //We pushed fault_num $LK,"IntFaultHandlersNew",A="MN:IntFaultHandlersNew"$(). @@ -69,7 +65,7 @@ SYS_IRQ_FAULT:: XOR RDX,RDX MOV U64 CTask.fault_err_code[RSI],RDX MOV EDX,U32 CTask.fault_num[RSI] - BT U64 [SYS_FAULT_ERR_CODE_BITMAP],RDX + BT U64 [INT_FAULT_ERR_CODE_BITMAP],RDX JNC @@1 POP U64 CTask.fault_err_code[RSI] @@ -86,7 +82,7 @@ SYS_IRQ_FAULT:: CALL &Fault2 //See $LK,"Fault2",A="FF:::/Kernel/KDbg.CPP,Fault2"$ JMP I32 RESTORE_FS_TASK_WITH_KEY_CHECK -SYS_FAULT_ERR_CODE_BITMAP:: +INT_FAULT_ERR_CODE_BITMAP:: DU32 0x00027D00,0,0,0,0,0,0,0; } @@ -143,6 +139,22 @@ interrupt U0 IntNop() *LAPIC_EOI(U32 *)=0; } +interrupt U0 IntDivZero() +{ + if (Gs->num) { + mp_cnt=1; + dbg.mp_crash->cpu_num=Gs->num; + dbg.mp_crash->task=Fs; + MOV RAX,U64 8[RBP] //Get RIP off of stk. + dbg.mp_crash->rip=GetRAX; + dbg.mp_crash->msg="Div Zero"; + dbg.mp_crash->msg_num=0; + MPInt(I_MP_CRASH,0); + SysHlt; + } + throw('DivZero'); +} + U8 *IntFaultHandlersNew() { I64 i; @@ -151,7 +163,7 @@ U8 *IntFaultHandlersNew() *dst++=0x6A; //PUSH I8 xx *dst(I8 *)++=i; *dst++=0xE9; //JMP I32 xxxxxxxx - *dst(I32 *)=SYS_IRQ_FAULT-dst-4; + *dst(I32 *)=INT_FAULT-dst-4; dst+=4; } return result; @@ -177,8 +189,9 @@ U0 IntInit2() I64 i; PUSHFD CLI - for (i=0;i<0x20;i++) - IntEntrySet(i,&dbg.fault_handlers_code[7*i]); + IntEntrySet(I_DIV_ZERO,&IntDivZero); + for (i=1;i<0x20;i++) + IntEntrySet(i,&dbg.int_fault_code[7*i]); /*In theory, we use the PIC mask reg to insure we don't get anything but keyboard, mouse and timer IRQs. In practice, I've gotten IRQ 0x27, perhaps because I didn't initialize the APIC. @@ -186,9 +199,9 @@ I go ahead and ACK PIC in $LK,"IntNop",A="MN:IntNop"$(). I have no idea why I got a IRQ 0x27. */ IntEntrySet(I_NMI,_SYS_HLT); - IntEntrySet(I_TIMER,SYS_TIMER_HANDLER); - IntEntrySet(I_MP_CRASH,*SYS_MP_CRASH_HANDLER_ADDR(U32 *)); - IntEntrySet(I_WAKE,SYS_WAKE_HANDLER); - IntEntrySet(I_DBG,&dbg.fault_handlers_code[7*I_DBG]); + IntEntrySet(I_TIMER,IRQ_TIMER); + IntEntrySet(I_MP_CRASH,*INT_MP_CRASH_ADDR(U32 *)); + IntEntrySet(I_WAKE,INT_WAKE); + IntEntrySet(I_DBG,&dbg.int_fault_code[7*I_DBG]); POPFD } diff --git a/Kernel/KMisc.CPP b/Kernel/KMisc.CPP index 9b7cbf7..0a9f2ed 100644 --- a/Kernel/KMisc.CPP +++ b/Kernel/KMisc.CPP @@ -45,7 +45,7 @@ I64 BCnt(I64 d) } U0 IntCore0TimerHandler(CTask *) -{//Called from $LK,"IntCore0TimerHandler",A="FF:::/Kernel/Ints.CPP,IntCore0TimerHandler"$ +{//Called from $LK,"IntCore0TimerHandler",A="FF:::/Kernel/KInts.CPP,IntCore0TimerHandler"$ I64 i; if (mp_cnt>1) while (LBts(&sys_semas[SYS_SEMA_SYS_TIMER],0)) @@ -230,11 +230,6 @@ Bool IsSilent() return Bt(&Fs->display_flags,DISPLAYf_SILENT); } -Bool IsPreempt() -{ - return Bt(&Fs->task_flags,TASKf_PREEMPT); -} - Bool SysDbg(Bool val) {//Sets or resets sysdbg bit you can use while debugging. return LBEqu(&sys_semas[SYS_SEMA_DEBUG],0,val); diff --git a/Kernel/KStart.CPP b/Kernel/KStart.CPP index 21eeceb..0ed81f7 100644 --- a/Kernel/KStart.CPP +++ b/Kernel/KStart.CPP @@ -25,8 +25,8 @@ SYS_BOOT_SRC:: DU32 BOOT_SRC_NULL; SYS_BOOT_PATCH_TABLE_BASE:: DU32 0; SYS_RUN_LEVEL:: DU32 0; #exe {StreamPrint("SYS_COMPILE_TIME:: DU64 0x%X;",Now);} -//See $LK,"BootCdProbe",A="MN:BootCdProbe"$ -#assert SYS_COMPILE_TIME+sizeof(CDate)+sizeof(CBinFile)task_flags,TASKf_KILL_TASK); if (wait) { do Yield; while (TaskValidate(task) && Bt(&task->task_flags,TASKf_KILL_TASK)); } - Preempt(old_preempt); return TRUE; } -kl_fail: - Preempt(old_preempt); return FALSE; } @@ -78,7 +74,7 @@ CTaskStk *TaskStkNew(I64 stk_size,CTask *task) return temps; } -#exe {OptOn(OPTf_NO_REG_VAR);}; +#exe {Option(OPTf_NO_REG_VAR,ON);}; argpop I64 CallStkGrow(I64 stk_size_threshold,I64 stk_size, /*argpop*/I64 (*fp_addr)(...),...) {//Grow stk in call with any fixed num of args. @@ -149,7 +145,7 @@ argpop I64 CallStkGrow(I64 stk_size_threshold,I64 stk_size, return 0; //dummy to get rid of warning } ; -#exe {OptOff(OPTf_NO_REG_VAR);}; +#exe {Option(OPTf_NO_REG_VAR,OFF);}; I64 TaskInit(CTask *task,I64 stk_size) {//Returns Fs of task @@ -197,8 +193,8 @@ I64 TaskInit(CTask *task,I64 stk_size) task->win_top =13; task->win_bottom =text.rows-2; - if (dsk.boot_drv_let) //Beware Adam $LK,"TaskInit",A="FF:::/Kernel/KStart.CPP,TaskInit"$. I guess ok until $LK,"ChgDsk",A="FF:::/Kernel/KEnd.CPP,ChgDsk"$(). - task->cur_dv=dsk.let_to_drv[ToUpper(dsk.boot_drv_let)-'A']; + if (blkdev.boot_drv_let) //Beware Adam $LK,"TaskInit",A="FF:::/Kernel/KStart.CPP,TaskInit"$. I guess ok until $LK,"ChgDsk",A="FF:::/Kernel/KEnd.CPP,ChgDsk"$(). + task->cur_dv=blkdev.let_to_drv[ToUpper(blkdev.boot_drv_let)-'A']; task->cur_dir=StrNew("/Home",task); Seed(,task); @@ -379,14 +375,17 @@ CTask *User(U8 *fmt=NULL,...) U0 SrvTaskCont() {//Act as server task in a loop handling commands. + I64 old_flags=GetRFlags; FlushMsgs; while (TRUE) { - if (SrvCmdsHandler && Fs->title_src==TTS_TASK_NAME) + CLI + if (SrvCmdsHandler(old_flags) && Fs->title_src==TTS_TASK_NAME) MemCpy(Fs->task_title,Fs->task_name,TASK_NAME_LEN+1); FlushMsgs; LBts(&Fs->task_flags,TASKf_IDLE); LBts(&Fs->task_flags,TASKf_AWAITING_MSG); Yield; + SetRFlags(old_flags); } } diff --git a/Kernel/Kernel.MAP b/Kernel/Kernel.MAP index dc18e22..e4f1d13 100644 --- a/Kernel/Kernel.MAP +++ b/Kernel/Kernel.MAP @@ -1,2809 +1,2850 @@ -$LK,"ARGT_R64",A="FL:::/Kernel/KernelA.HPP,1808"$ +$LK,"ARGT_R64",A="FL:::/Kernel/KernelA.HPP,1858"$ $LK,"MAlloc",A="FL:::/Kernel/MemB.CPP.Z,372"$ -$LK,"BOOT_SRC_NULL",A="FL:::/Kernel/KernelA.HPP,3785"$ -$LK,"KbdTypeMatic",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,85",BI=1$ +$LK,"BOOT_SRC_NULL",A="FL:::/Kernel/KernelA.HPP,3836"$ +$LK,"KbdTypeMatic",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,83",BI=1$ $LK,"PSectCacheAdd",A="FL:::/Kernel/PSect.CPP.Z,60",BI=2$ $LK,"LXchgU32",A="FL:::/Kernel/KernelB.HPP,261"$ $LK,"LXchgU16",A="FL:::/Kernel/KernelB.HPP,260"$ -$LK,"BDS_CUR_DRV",A="FL:::/Kernel/KernelA.HPP,3175"$ -$LK,"DOCM_CANCEL",A="FL:::/Kernel/KernelA.HPP,1316"$ +$LK,"BDS_CUR_DRV",A="FL:::/Kernel/KernelA.HPP,3224"$ +$LK,"DOCM_CANCEL",A="FL:::/Kernel/KernelA.HPP,1319"$ $LK,"chars_bmp_word",A="FL:::/Kernel/StrA.CPP.Z,340"$ -$LK,"BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2208"$ -$LK,"ARGT_SS",A="FL:::/Kernel/KernelA.HPP,1839"$ -$LK,"BootCdProbeAll",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,28",BI=3$ +$LK,"BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2258"$ +$LK,"ARGT_SS",A="FL:::/Kernel/KernelA.HPP,1889"$ $LK,"c32_eax",A="FL:::/Kernel/PCIBIOS.CPP.Z,152"$ -$LK,"ARGT_EAX",A="FL:::/Kernel/KernelA.HPP,1832"$ -$LK,"DOCT_HEADER",A="FL:::/Kernel/KernelA.HPP,900"$ -$LK,"Ff__EXTERN",A="FL:::/Kernel/KernelA.HPP,842"$ +$LK,"ARGT_EAX",A="FL:::/Kernel/KernelA.HPP,1882"$ +$LK,"DOCT_HEADER",A="FL:::/Kernel/KernelA.HPP,903"$ +$LK,"Ff__EXTERN",A="FL:::/Kernel/KernelA.HPP,845"$ $LK,"c32_ebx",A="FL:::/Kernel/PCIBIOS.CPP.Z,153"$ -$LK,"MemPageSize",A="FL:::/Kernel/MemA.CPP.Z,165",BI=4$ +$LK,"MemPageSize",A="FL:::/Kernel/MemA.CPP.Z,165",BI=3$ $LK,"D3Add",A="FL:::/Kernel/KernelB.HPP,147"$ $LK,"D3NormSqr",A="FL:::/Kernel/KernelB.HPP,165"$ -$LK,"ARf_PLANAR_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3798"$ +$LK,"ARf_PLANAR_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3849"$ +$LK,"RLF_BLKDEV",A="FL:::/Kernel/KernelA.HPP,461"$ +$LK,"RLf_BLKDEV",A="FL:::/Kernel/KernelA.HPP,443"$ $LK,"c32_ecx",A="FL:::/Kernel/PCIBIOS.CPP.Z,154"$ -$LK,"CCF_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2067"$ -$LK,"SYSf_CTRL_ALT_DEL",A="FL:::/Kernel/KernelA.HPP,609"$ +$LK,"CCF_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2117"$ +$LK,"SYSf_CTRL_ALT_DEL",A="FL:::/Kernel/KernelA.HPP,611"$ $LK,"SSF_INACTIVE",A="FL:::/Kernel/KernelA.HPP,221"$ $LK,"MSF_INACTIVE",A="FL:::/Kernel/KernelA.HPP,205"$ -$LK,"ATA_READ_MULTI",A="FL:::/Kernel/KernelA.HPP,2176"$ +$LK,"ATA_READ_MULTI",A="FL:::/Kernel/KernelA.HPP,2226"$ $LK,"c32_edx",A="FL:::/Kernel/PCIBIOS.CPP.Z,155"$ -$LK,"FUf_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2504"$ -$LK,"CAOTBinBlk",A="FL:::/Kernel/KernelA.HPP,1712"$ -$LK,"DOCEf_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1078"$ -$LK,"KernelMain",A="FL:::/Kernel/KEnd.CPP.Z,130",BI=5$ -$LK,"KbdCmdSend",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,24",BI=6$ +$LK,"FUf_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2554"$ +$LK,"CAOTBinBlk",A="FL:::/Kernel/KernelA.HPP,1762"$ +$LK,"DOCEf_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1081"$ +$LK,"KernelMain",A="FL:::/Kernel/KEnd.CPP.Z,132",BI=4$ +$LK,"KbdCmdSend",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,24",BI=5$ $LK,"_D3_NORM_SQR",A="FL:::/Kernel/KMathA.CPP.Z,22"$ -$LK,"TTS_CUR_LEX",A="FL:::/Kernel/KernelA.HPP,3183"$ -$LK,"RS_ATTR_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,2448"$ -$LK,"CCf_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2068"$ -$LK,"TK_INS_BINARY_SIZE",A="FL:::/Kernel/KernelA.HPP,2021"$ -$LK,"CDocEntry",A="FL:::/Kernel/KernelA.HPP,1160"$ -$LK,"CAOT",A="FL:::/Kernel/KernelA.HPP,1908"$ -$LK,"SVCf_DISPATCHED",A="FL:::/Kernel/KernelA.HPP,3084"$ +$LK,"TTS_CUR_LEX",A="FL:::/Kernel/KernelA.HPP,3232"$ +$LK,"RS_ATTR_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,2498"$ +$LK,"CCf_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2118"$ +$LK,"TK_INS_BINARY_SIZE",A="FL:::/Kernel/KernelA.HPP,2071"$ +$LK,"CDocEntry",A="FL:::/Kernel/KernelA.HPP,1163"$ +$LK,"CAOT",A="FL:::/Kernel/KernelA.HPP,1958"$ +$LK,"SVCf_DISPATCHED",A="FL:::/Kernel/KernelA.HPP,3135"$ $LK,"RLF_32BIT",A="FL:::/Kernel/KernelA.HPP,454"$ $LK,"RLF_16BIT",A="FL:::/Kernel/KernelA.HPP,452"$ $LK,"RLf_32BIT",A="FL:::/Kernel/KernelA.HPP,436"$ $LK,"RLf_16BIT",A="FL:::/Kernel/KernelA.HPP,434"$ -$LK,"BreakUnlock",A="FL:::/Kernel/KExcept.CPP.Z,141",BI=7$ -$LK,"DOCT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,904"$ -$LK,"DOCT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,903"$ +$LK,"BreakUnlock",A="FL:::/Kernel/KExcept.CPP.Z,141",BI=6$ +$LK,"DOCT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,907"$ +$LK,"DOCT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,906"$ $LK,"CGDT",A="FL:::/Kernel/KernelA.HPP,333"$ -$LK,"TSF_SAME_SONG",A="FL:::/Kernel/KernelA.HPP,3153"$ -$LK,"ICF_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1526"$ -$LK,"MLF_NO_UNUSED_WARN",A="FL:::/Kernel/KernelA.HPP,770"$ +$LK,"TSF_SAME_SONG",A="FL:::/Kernel/KernelA.HPP,3202"$ +$LK,"ICF_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1575"$ +$LK,"MLF_NO_UNUSED_WARN",A="FL:::/Kernel/KernelA.HPP,772"$ $LK,"I_MP_CRASH",A="FL:::/Kernel/KernelA.HPP,292"$ $LK,"INVALID_PTR",A="FL:::/Kernel/KernelA.HPP,38"$ -$LK,"ATAInit",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,303",BI=8$ -$LK,"HashDefineLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,206",BI=9$ -$LK,"StrUtil",A="FL:::/Kernel/StrA.CPP.Z,524",BI=10$ -$LK,"LstMatch",A="FL:::/Kernel/StrA.CPP.Z,421",BI=11$ +$LK,"ATAInit",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,303",BI=7$ +$LK,"HashDefineLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,206",BI=8$ +$LK,"StrUtil",A="FL:::/Kernel/StrA.CPP.Z,524",BI=9$ +$LK,"LstMatch",A="FL:::/Kernel/StrA.CPP.Z,421",BI=10$ $LK,"IET_REL_I32",A="FL:::/Kernel/KernelA.HPP,398"$ $LK,"IET_REL_I16",A="FL:::/Kernel/KernelA.HPP,396"$ -$LK,"MPWake",A="FL:::/Kernel/MultiProc.CPP.Z,170",BI=12$ -$LK,"CPrsStk",A="FL:::/Kernel/KernelA.HPP,1593"$ -$LK,"CCmpCtrl",A="FL:::/Kernel/KernelA.HPP,2078"$ -$LK,"ATAWBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,579",BI=13$ -$LK,"CCPU",A="FL:::/Kernel/KernelA.HPP,3345"$ +$LK,"MPWake",A="FL:::/Kernel/MultiProc.CPP.Z,170",BI=11$ +$LK,"CPrsStk",A="FL:::/Kernel/KernelA.HPP,1642"$ +$LK,"CCmpCtrl",A="FL:::/Kernel/KernelA.HPP,2128"$ +$LK,"ATAWBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,579",BI=12$ +$LK,"CCPU",A="FL:::/Kernel/KernelA.HPP,3394"$ $LK,"c32_esi",A="FL:::/Kernel/PCIBIOS.CPP.Z,156"$ -$LK,"CCF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,2044"$ +$LK,"CCF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,2094"$ $LK,"LDF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,366"$ $LK,"SYS_CACHE_LINE_WIDTH",A="FL:::/Kernel/KStart.CPP.Z,229"$ -$LK,"CMF_I16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1614"$ -$LK,"FramePtrSet",A="FL:::/Kernel/KHashB.CPP.Z,230",BI=14$ -$LK,"CMF_U16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1615"$ +$LK,"CMF_I16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1663"$ +$LK,"FramePtrSet",A="FL:::/Kernel/KHashB.CPP.Z,230",BI=13$ +$LK,"CCf_PASS_TRACE_PRESENT",A="FL:::/Kernel/KernelA.HPP,2099"$ +$LK,"CMF_U16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1664"$ $LK,"_STRICMP",A="FL:::/Kernel/StrA.CPP.Z,117"$ $LK,"IET_REL_I64",A="FL:::/Kernel/KernelA.HPP,400"$ $LK,"AP_16BIT_INIT",A="FL:::/Kernel/MultiProc.CPP.Z,9"$ -$LK,"STD_DISTRO_CDROM_CFG",A="FL:::/Kernel/KernelA.HPP,3791"$ -$LK,"CFAT32Boot",A="FL:::/Kernel/KernelA.HPP,2247"$ -$LK,"DOCEF_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1013"$ -$LK,"FILEMASK_TXT",A="FL:::/Kernel/KernelA.HPP,2203"$ -$LK,"TK_EOF",A="FL:::/Kernel/KernelA.HPP,1979"$ +$LK,"CFAT32Boot",A="FL:::/Kernel/KernelA.HPP,2297"$ +$LK,"DOCEF_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1016"$ +$LK,"FILEMASK_TXT",A="FL:::/Kernel/KernelA.HPP,2253"$ +$LK,"TK_EOF",A="FL:::/Kernel/KernelA.HPP,2029"$ $LK,"SPF_NEG",A="FL:::/Kernel/StrPrint.CPP.Z,10"$ -$LK,"CWinScroll",A="FL:::/Kernel/KernelA.HPP,2999"$ -$LK,"DOCEf_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1088"$ -$LK,"TaskFinishOffDying",A="FL:::/Kernel/Task.CPP.Z,496",BI=15$ -$LK,"ARf_FLOODFILL",A="FL:::/Kernel/KernelA.HPP,3795"$ -$LK,"ICF_USE_F64",A="FL:::/Kernel/KernelA.HPP,1513"$ -$LK,"MemPagesNotPresentMark",A="FL:::/Kernel/MemC.CPP.Z,144",BI=16$ -$LK,"CH_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3414"$ -$LK,"FloorI64",A="FL:::/Kernel/KMathB.CPP.Z,52",BI=17$ -$LK,"SC_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3458"$ -$LK,"FUf_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2503"$ -$LK,"TK_LESS_EQUAL",A="FL:::/Kernel/KernelA.HPP,1996"$ -$LK,"GVF_ARRAY",A="FL:::/Kernel/KernelA.HPP,861"$ -$LK,"DirEntryCompareCluster",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,84",BI=18$ -$LK,"KbdCmdFlush",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,45",BI=19$ -$LK,"CFPU",A="FL:::/Kernel/KernelA.HPP,3071"$ -$LK,"TASKf_IDLE",A="FL:::/Kernel/KernelA.HPP,3189"$ -$LK,"CDIR_SIZE",A="FL:::/Kernel/KernelA.HPP,2476"$ -$LK,"ARGT_UIMM32",A="FL:::/Kernel/KernelA.HPP,1802"$ -$LK,"ARGT_UIMM16",A="FL:::/Kernel/KernelA.HPP,1801"$ -$LK,"PCIWriteU8",A="FL:::/Kernel/PCIBIOS.CPP.Z,220",BI=20$ -$LK,"DefinePrint",A="FL:::/Kernel/KDefine.CPP.Z,90",BI=21$ -$LK,"FifoI64Del",A="FL:::/Kernel/KDataTypes.CPP.Z,252",BI=22$ -$LK,"CDocUndo",A="FL:::/Kernel/KernelA.HPP,1308"$ +$LK,"CWinScroll",A="FL:::/Kernel/KernelA.HPP,3050"$ +$LK,"DOCEf_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1091"$ +$LK,"TaskFinishOffDying",A="FL:::/Kernel/KTask.CPP.Z,495",BI=14$ +$LK,"ARf_FLOODFILL",A="FL:::/Kernel/KernelA.HPP,3846"$ +$LK,"ICF_USE_F64",A="FL:::/Kernel/KernelA.HPP,1562"$ +$LK,"MemPagesNotPresentMark",A="FL:::/Kernel/MemC.CPP.Z,144",BI=15$ +$LK,"CH_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3463"$ +$LK,"FloorI64",A="FL:::/Kernel/KMathB.CPP.Z,52",BI=16$ +$LK,"SC_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3509"$ +$LK,"FUf_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2553"$ +$LK,"TK_LESS_EQUAL",A="FL:::/Kernel/KernelA.HPP,2046"$ +$LK,"GVF_ARRAY",A="FL:::/Kernel/KernelA.HPP,864"$ +$LK,"DirEntryCompareCluster",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,84",BI=17$ +$LK,"KbdCmdFlush",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,45",BI=18$ +$LK,"CFPU",A="FL:::/Kernel/KernelA.HPP,3122"$ +$LK,"TASKf_IDLE",A="FL:::/Kernel/KernelA.HPP,3237"$ +$LK,"CDIR_SIZE",A="FL:::/Kernel/KernelA.HPP,2526"$ +$LK,"ARGT_UIMM32",A="FL:::/Kernel/KernelA.HPP,1852"$ +$LK,"ARGT_UIMM16",A="FL:::/Kernel/KernelA.HPP,1851"$ +$LK,"PCIWriteU8",A="FL:::/Kernel/PCIBIOS.CPP.Z,220",BI=19$ +$LK,"DefinePrint",A="FL:::/Kernel/KDefine.CPP.Z,90",BI=20$ +$LK,"FifoI64Del",A="FL:::/Kernel/KDataTypes.CPP.Z,252",BI=21$ +$LK,"CDocUndo",A="FL:::/Kernel/KernelA.HPP,1311"$ $LK,"BSP_32BIT_INIT",A="FL:::/Kernel/KStart.CPP.Z,234"$ $LK,"BSP_16BIT_INIT",A="FL:::/Kernel/KStart.CPP.Z,56"$ -$LK,"ROPB_XOR",A="FL:::/Kernel/KernelA.HPP,2834"$ -$LK,"FUF_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2517"$ -$LK,"ATA_SET_MAX",A="FL:::/Kernel/KernelA.HPP,2174"$ -$LK,"IEF_DFT",A="FL:::/Kernel/KernelA.HPP,1645"$ -$LK,"RT_F32",A="FL:::/Kernel/KernelA.HPP,1489"$ -$LK,"Let2BlkDev",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,128",BI=23$ -$LK,"FUf_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2492"$ -$LK,"ARGT_M1632",A="FL:::/Kernel/KernelA.HPP,1820"$ -$LK,"DOF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1194"$ -$LK,"DOCEF_LEFT_X",A="FL:::/Kernel/KernelA.HPP,981"$ +$LK,"ROPB_XOR",A="FL:::/Kernel/KernelA.HPP,2884"$ +$LK,"FUF_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2567"$ +$LK,"ATA_SET_MAX",A="FL:::/Kernel/KernelA.HPP,2224"$ +$LK,"IEF_DFT",A="FL:::/Kernel/KernelA.HPP,1694"$ +$LK,"RT_F32",A="FL:::/Kernel/KernelA.HPP,1538"$ +$LK,"Let2BlkDev",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,126",BI=22$ +$LK,"FUf_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2542"$ +$LK,"ARGT_M1632",A="FL:::/Kernel/KernelA.HPP,1870"$ +$LK,"DOF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1197"$ +$LK,"DOCEF_LEFT_X",A="FL:::/Kernel/KernelA.HPP,984"$ $LK,"RFLAGf_AUX_CARRY",A="FL:::/Kernel/KernelA.HPP,307"$ -$LK,"DEF_PROCESSED",A="FL:::/Kernel/KernelA.HPP,2459"$ -$LK,"WIf_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1421"$ -$LK,"DOCEf_LEFT_X",A="FL:::/Kernel/KernelA.HPP,1056"$ -$LK,"Mem64DevFree",A="FL:::/Kernel/MemC.CPP.Z,232",BI=24$ -$LK,"Mem32DevFree",A="FL:::/Kernel/MemC.CPP.Z,198",BI=25$ -$LK,"ARGT_UIMM64",A="FL:::/Kernel/KernelA.HPP,1803"$ -$LK,"DOCf_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1279"$ -$LK,"DOCF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1244"$ -$LK,"ATARepEntry",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,90",BI=26$ -$LK,"BLUE",A="FL:::/Kernel/KernelA.HPP,2859"$ +$LK,"DEF_PROCESSED",A="FL:::/Kernel/KernelA.HPP,2509"$ +$LK,"WIf_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1425"$ +$LK,"DOCEf_LEFT_X",A="FL:::/Kernel/KernelA.HPP,1059"$ +$LK,"Mem64DevFree",A="FL:::/Kernel/MemC.CPP.Z,232",BI=23$ +$LK,"Mem32DevFree",A="FL:::/Kernel/MemC.CPP.Z,198",BI=24$ +$LK,"ARGT_UIMM64",A="FL:::/Kernel/KernelA.HPP,1853"$ +$LK,"DOCf_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1282"$ +$LK,"DOCF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1247"$ +$LK,"ATARepEntry",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,90",BI=25$ +$LK,"BLUE",A="FL:::/Kernel/KernelA.HPP,2909"$ $LK,"sys_ctrl_alt_flags",A="FL:::/Kernel/KernelB.HPP,209"$ $LK,"D3Div",A="FL:::/Kernel/KernelB.HPP,158"$ -$LK,"RT_F64",A="FL:::/Kernel/KernelA.HPP,1491"$ -$LK,"EdLite",A="FL:::/Kernel/EdLite.CPP.Z,58",BI=27$ -$LK,"MBR_PT_FAT12",A="FL:::/Kernel/KernelA.HPP,2603"$ -$LK,"DVT_FAT32",A="FL:::/Kernel/KernelA.HPP,2593"$ -$LK,"FramePtr",A="FL:::/Kernel/KHashB.CPP.Z,215",BI=28$ -$LK,"ARGT_RM8",A="FL:::/Kernel/KernelA.HPP,1810"$ -$LK,"ROPF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2854"$ -$LK,"DOCEF_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,995"$ -$LK,"RT_I32",A="FL:::/Kernel/KernelA.HPP,1484"$ -$LK,"RT_I16",A="FL:::/Kernel/KernelA.HPP,1482"$ -$LK,"DOCEf_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,1070"$ -$LK,"SysTry",A="FL:::/Kernel/KExcept.CPP.Z,61",BI=29$ -$LK,"POP_REGS",A="FL:::/Kernel/KernelA.HPP,1684"$ -$LK,"IEF_OP_SIZE32",A="FL:::/Kernel/KernelA.HPP,1642"$ -$LK,"IEF_OP_SIZE16",A="FL:::/Kernel/KernelA.HPP,1641"$ -$LK,"HTT_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,679"$ -$LK,"BD_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2569"$ -$LK,"DOCEf_ESC",A="FL:::/Kernel/KernelA.HPP,1067"$ -$LK,"ScanCode2Char",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,135",BI=30$ -$LK,"DFT_STK",A="FL:::/Kernel/KernelA.HPP,2789"$ -$LK,"NUM_DRVS",A="FL:::/Kernel/KernelA.HPP,2619"$ -$LK,"DVT_ISO13346",A="FL:::/Kernel/KernelA.HPP,2596"$ +$LK,"RT_F64",A="FL:::/Kernel/KernelA.HPP,1540"$ +$LK,"EdLite",A="FL:::/Kernel/EdLite.CPP.Z,58",BI=26$ +$LK,"MBR_PT_FAT12",A="FL:::/Kernel/KernelA.HPP,2653"$ +$LK,"DVT_FAT32",A="FL:::/Kernel/KernelA.HPP,2643"$ +$LK,"FramePtr",A="FL:::/Kernel/KHashB.CPP.Z,215",BI=27$ +$LK,"ARGT_RM8",A="FL:::/Kernel/KernelA.HPP,1860"$ +$LK,"ROPF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2904"$ +$LK,"DOCEF_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,998"$ +$LK,"RT_I32",A="FL:::/Kernel/KernelA.HPP,1533"$ +$LK,"RT_I16",A="FL:::/Kernel/KernelA.HPP,1531"$ +$LK,"DOCEf_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,1073"$ +$LK,"SysTry",A="FL:::/Kernel/KExcept.CPP.Z,61",BI=28$ +$LK,"POP_REGS",A="FL:::/Kernel/KernelA.HPP,1734"$ +$LK,"IEF_OP_SIZE32",A="FL:::/Kernel/KernelA.HPP,1691"$ +$LK,"IEF_OP_SIZE16",A="FL:::/Kernel/KernelA.HPP,1690"$ +$LK,"HTT_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,681"$ +$LK,"BD_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2619"$ +$LK,"DOCEf_ESC",A="FL:::/Kernel/KernelA.HPP,1070"$ +$LK,"ScanCode2Char",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,133",BI=29$ +$LK,"DFT_STK",A="FL:::/Kernel/KernelA.HPP,2839"$ +$LK,"NUM_DRVS",A="FL:::/Kernel/KernelA.HPP,2669"$ +$LK,"DVT_ISO13346",A="FL:::/Kernel/KernelA.HPP,2646"$ $LK,"_D3_ADD",A="FL:::/Kernel/KMathA.CPP.Z,131"$ -$LK,"SYSf_CTRL_ALT_TAB",A="FL:::/Kernel/KernelA.HPP,612"$ -$LK,"RCache",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,119",BI=31$ -$LK,"DOC_ATTR_DFT_TEXT",A="FL:::/Kernel/KernelA.HPP,1114"$ +$LK,"SYSf_CTRL_ALT_TAB",A="FL:::/Kernel/KernelA.HPP,614"$ +$LK,"RCache",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,119",BI=30$ +$LK,"DOC_ATTR_DFT_TEXT",A="FL:::/Kernel/KernelA.HPP,1117"$ $LK,"D3Dot",A="FL:::/Kernel/KernelB.HPP,160"$ -$LK,"CSrvCmd",A="FL:::/Kernel/KernelA.HPP,3095"$ -$LK,"ARGT_RAX",A="FL:::/Kernel/KernelA.HPP,1833"$ -$LK,"EDf_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1232"$ -$LK,"EDF_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1226"$ -$LK,"DOCF_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1246"$ -$LK,"CDImageRead",A="FL:::/Kernel/Dsk/DskCDDVD.CPP.Z,1",BI=32$ -$LK,"KbdMsgsQue",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,449",BI=33$ -$LK,"ARGT_ST0",A="FL:::/Kernel/KernelA.HPP,1846"$ -$LK,"RT_I64",A="FL:::/Kernel/KernelA.HPP,1486"$ -$LK,"FifoI64Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,312",BI=34$ -$LK,"NUM_PROGRESS_BARS",A="FL:::/Kernel/KernelA.HPP,3805"$ -$LK,"SUF_SAFE_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3699"$ -$LK,"RWF_SHOW_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3498"$ -$LK,"_CFG_HEAP_DBG",A="FL:::/Kernel/KernelA.HPP,2700"$ -$LK,"HTt_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,649"$ -$LK,"RedSeaFileWrite",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,513",BI=35$ -$LK,"AutoStr",A="FL:::/Kernel/SrvCmd.CPP.Z,478",BI=36$ +$LK,"CSrvCmd",A="FL:::/Kernel/KernelA.HPP,3146"$ +$LK,"ARGT_RAX",A="FL:::/Kernel/KernelA.HPP,1883"$ +$LK,"EDf_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1235"$ +$LK,"EDF_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1229"$ +$LK,"DOCF_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1249"$ +$LK,"KbdMsgsQue",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,463",BI=31$ +$LK,"ARGT_ST0",A="FL:::/Kernel/KernelA.HPP,1896"$ +$LK,"RT_I64",A="FL:::/Kernel/KernelA.HPP,1535"$ +$LK,"FifoI64Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,312",BI=32$ +$LK,"NUM_PROGRESS_BARS",A="FL:::/Kernel/KernelA.HPP,3856"$ +$LK,"SUF_SAFE_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3749"$ +$LK,"RWF_SHOW_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3549"$ +$LK,"_CFG_HEAP_DBG",A="FL:::/Kernel/KernelA.HPP,2750"$ +$LK,"HTt_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,651"$ +$LK,"RedSeaFileWrite",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,513",BI=33$ +$LK,"AutoStr",A="FL:::/Kernel/SrvCmd.CPP.Z,467",BI=34$ $LK,"CPatchTableAbsAddr",A="FL:::/Kernel/KernelA.HPP,381"$ -$LK,"DVT_ISO13490",A="FL:::/Kernel/KernelA.HPP,2595"$ +$LK,"DVDImageRead",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,1",BI=35$ +$LK,"DVT_ISO13490",A="FL:::/Kernel/KernelA.HPP,2645"$ $LK,"IET_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,408"$ -$LK,"ROPB_MONO",A="FL:::/Kernel/KernelA.HPP,2836"$ -$LK,"CAsmNum2",A="FL:::/Kernel/KernelA.HPP,1739"$ -$LK,"AutoFile",A="FL:::/Kernel/SrvCmd.CPP.Z,488",BI=37$ -$LK,"AMAlloc",A="FL:::/Kernel/MemB.CPP.Z,375",BI=38$ -$LK,"ICF_R_TO_INT",A="FL:::/Kernel/KernelA.HPP,1508"$ -$LK,"B",A="FL:::/Kernel/KDbg.CPP.Z,414",BI=39$ +$LK,"ROPB_MONO",A="FL:::/Kernel/KernelA.HPP,2886"$ +$LK,"CAsmNum2",A="FL:::/Kernel/KernelA.HPP,1789"$ +$LK,"AutoFile",A="FL:::/Kernel/SrvCmd.CPP.Z,477",BI=36$ +$LK,"AMAlloc",A="FL:::/Kernel/MemB.CPP.Z,375",BI=37$ +$LK,"ICF_R_TO_INT",A="FL:::/Kernel/KernelA.HPP,1557"$ +$LK,"B",A="FL:::/Kernel/KDbg.CPP.Z,414",BI=38$ $LK,"chars_bmp_dec_numeric",A="FL:::/Kernel/StrA.CPP.Z,350"$ $LK,"D3Equ",A="FL:::/Kernel/KernelB.HPP,161"$ -$LK,"FF_NEW_FILE",A="FL:::/Kernel/KernelA.HPP,2684"$ -$LK,"CMT_STR_CONST",A="FL:::/Kernel/KernelA.HPP,1604"$ -$LK,"WIf_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1423"$ -$LK,"D",A="FL:::/Kernel/KDbg.CPP.Z,172",BI=40$ -$LK,"StrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,884",BI=41$ -$LK,"E",A="FL:::/Kernel/PSect.CPP.Z,273",BI=42$ -$LK,"ICF_A2_TO_INT",A="FL:::/Kernel/KernelA.HPP,1512"$ -$LK,"CEdFileName",A="FL:::/Kernel/KernelA.HPP,1217"$ -$LK,"DOCT_LEFT_MARGIN",A="FL:::/Kernel/KernelA.HPP,898"$ +$LK,"FF_NEW_FILE",A="FL:::/Kernel/KernelA.HPP,2734"$ +$LK,"CMT_STR_CONST",A="FL:::/Kernel/KernelA.HPP,1653"$ +$LK,"WIf_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1427"$ +$LK,"D",A="FL:::/Kernel/KDbg.CPP.Z,172",BI=39$ +$LK,"StrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,884",BI=40$ +$LK,"E",A="FL:::/Kernel/PSect.CPP.Z,270",BI=41$ +$LK,"ICF_A2_TO_INT",A="FL:::/Kernel/KernelA.HPP,1561"$ +$LK,"CEdFileName",A="FL:::/Kernel/KernelA.HPP,1220"$ +$LK,"DOCT_LEFT_MARGIN",A="FL:::/Kernel/KernelA.HPP,901"$ $LK,"_STRNCMP",A="FL:::/Kernel/StrA.CPP.Z,154"$ -$LK,"G",A="FL:::/Kernel/KDbg.CPP.Z,451",BI=43$ -$LK,"ScaleIndent",A="FL:::/Kernel/StrB.CPP.Z,35",BI=44$ +$LK,"G",A="FL:::/Kernel/KDbg.CPP.Z,451",BI=42$ +$LK,"ScaleIndent",A="FL:::/Kernel/StrB.CPP.Z,35",BI=43$ $LK,"IET_ABS_ADDR",A="FL:::/Kernel/KernelA.HPP,407"$ -$LK,"PressAKey",A="FL:::/Kernel/StrB.CPP.Z,103",BI=45$ -$LK,"DOF_WIN_MAX",A="FL:::/Kernel/KernelA.HPP,1197"$ -$LK,"CCodeCtrl",A="FL:::/Kernel/KernelA.HPP,1927"$ -$LK,"Char2ScanCode",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,99",BI=46$ -$LK,"Mem32DevInit",A="FL:::/Kernel/MemC.CPP.Z,104",BI=47$ +$LK,"PressAKey",A="FL:::/Kernel/StrB.CPP.Z,103",BI=44$ +$LK,"DOF_WIN_MAX",A="FL:::/Kernel/KernelA.HPP,1200"$ +$LK,"CCodeCtrl",A="FL:::/Kernel/KernelA.HPP,1977"$ +$LK,"Char2ScanCode",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,97",BI=45$ +$LK,"Mem32DevInit",A="FL:::/Kernel/MemC.CPP.Z,104",BI=46$ $LK,"_BIT_FIELD_OR_U32",A="FL:::/Kernel/KUtils.CPP.Z,154"$ -$LK,"DOCf_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1281"$ -$LK,"SPutChar",A="FL:::/Kernel/StrPrint.CPP.Z,14",BI=48$ -$LK,"TaskQueIns",A="FL:::/Kernel/Sched.CPP.Z,347",BI=49$ -$LK,"CYAN",A="FL:::/Kernel/KernelA.HPP,2861"$ -$LK,"TK_SUPERSCRIPT",A="FL:::/Kernel/KernelA.HPP,1980"$ -$LK,"ICF_PUSH_RESULT",A="FL:::/Kernel/KernelA.HPP,1521"$ -$LK,"DVT_ISO9660",A="FL:::/Kernel/KernelA.HPP,2594"$ -$LK,"FileNameTempTxt",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,249",BI=50$ -$LK,"RS_ATTR_DELETED",A="FL:::/Kernel/KernelA.HPP,2446"$ -$LK,"CMT_ASM_LABEL",A="FL:::/Kernel/KernelA.HPP,1602"$ +$LK,"DOCf_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1284"$ +$LK,"SPutChar",A="FL:::/Kernel/StrPrint.CPP.Z,14",BI=47$ +$LK,"TaskQueIns",A="FL:::/Kernel/Sched.CPP.Z,339",BI=48$ +$LK,"CYAN",A="FL:::/Kernel/KernelA.HPP,2911"$ +$LK,"TK_SUPERSCRIPT",A="FL:::/Kernel/KernelA.HPP,2030"$ +$LK,"ICF_PUSH_RESULT",A="FL:::/Kernel/KernelA.HPP,1570"$ +$LK,"DVT_ISO9660",A="FL:::/Kernel/KernelA.HPP,2644"$ +$LK,"FileNameTempTxt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,249",BI=49$ +$LK,"RS_ATTR_DELETED",A="FL:::/Kernel/KernelA.HPP,2496"$ +$LK,"CMT_ASM_LABEL",A="FL:::/Kernel/KernelA.HPP,1651"$ $LK,"RLF_64BIT",A="FL:::/Kernel/KernelA.HPP,456"$ $LK,"RLf_64BIT",A="FL:::/Kernel/KernelA.HPP,438"$ -$LK,"RedSeaFreeLstBuild",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,24",BI=51$ -$LK,"TK_SHL",A="FL:::/Kernel/KernelA.HPP,1992"$ -$LK,"DOCf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1284"$ -$LK,"DOCF_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1249"$ -$LK,"CH_CTRLA",A="FL:::/Kernel/KernelA.HPP,3387"$ -$LK,"CHashGlblVar",A="FL:::/Kernel/KernelA.HPP,863"$ -$LK,"CH_CTRLB",A="FL:::/Kernel/KernelA.HPP,3388"$ -$LK,"DOCEf_TAG",A="FL:::/Kernel/KernelA.HPP,1034"$ -$LK,"S",A="FL:::/Kernel/KDbg.CPP.Z,486",BI=52$ -$LK,"VGAP_INDEX",A="FL:::/Kernel/KernelA.HPP,3629"$ -$LK,"CH_CTRLC",A="FL:::/Kernel/KernelA.HPP,3389"$ -$LK,"FifoI64Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,258",BI=53$ -$LK,"FloorU64",A="FL:::/Kernel/KMathB.CPP.Z,36",BI=54$ -$LK,"CH_CTRLD",A="FL:::/Kernel/KernelA.HPP,3390"$ -$LK,"DOCF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1258"$ -$LK,"DOCT_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,908"$ -$LK,"CH_CTRLE",A="FL:::/Kernel/KernelA.HPP,3391"$ -$LK,"BLACK",A="FL:::/Kernel/KernelA.HPP,2858"$ -$LK,"ARGT_STI",A="FL:::/Kernel/KernelA.HPP,1847"$ -$LK,"NUM_REGS",A="FL:::/Kernel/KernelA.HPP,1687"$ -$LK,"DOCf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1294"$ -$LK,"DOCEf_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,1061"$ -$LK,"DOCEF_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,986"$ -$LK,"FileNameAbs",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,144",BI=55$ -$LK,"PSECT_CACHE_STR_LEN",A="FL:::/Kernel/KernelA.HPP,3756"$ -$LK,"CH_CTRLF",A="FL:::/Kernel/KernelA.HPP,3392"$ -$LK,"TK_SHR",A="FL:::/Kernel/KernelA.HPP,1993"$ -$LK,"AutoMountIDE",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,253",BI=56$ -$LK,"CH_CTRLG",A="FL:::/Kernel/KernelA.HPP,3393"$ -$LK,"_HASH_REM_DEL",A="FL:::/Kernel/KHashA.CPP.Z,253"$ -$LK,"TaskQueRem",A="FL:::/Kernel/Sched.CPP.Z,361",BI=57$ -$LK,"CH_CTRLH",A="FL:::/Kernel/KernelA.HPP,3394"$ -$LK,"CPalindromeU32",A="FL:::/Kernel/KernelA.HPP,2327"$ -$LK,"CPalindromeU16",A="FL:::/Kernel/KernelA.HPP,2322"$ -$LK,"DOCT_CHECK_BOX",A="FL:::/Kernel/KernelA.HPP,919"$ -$LK,"CH_CTRLI",A="FL:::/Kernel/KernelA.HPP,3395"$ -$LK,"FifoI64New",A="FL:::/Kernel/KDataTypes.CPP.Z,240",BI=58$ -$LK,"CH_CTRLJ",A="FL:::/Kernel/KernelA.HPP,3396"$ -$LK,"ARGT_XMM128",A="FL:::/Kernel/KernelA.HPP,1856"$ -$LK,"SC_CURSOR_UP",A="FL:::/Kernel/KernelA.HPP,3467"$ -$LK,"CH_CTRLK",A="FL:::/Kernel/KernelA.HPP,3397"$ -$LK,"TASKf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,3192"$ -$LK,"RandI32",A="FL:::/Kernel/KMathB.CPP.Z,92",BI=59$ -$LK,"RandI16",A="FL:::/Kernel/KMathB.CPP.Z,74",BI=60$ -$LK,"CH_CTRLL",A="FL:::/Kernel/KernelA.HPP,3398"$ -$LK,"CH_CTRLM",A="FL:::/Kernel/KernelA.HPP,3399"$ -$LK,"ICf_LOCK",A="FL:::/Kernel/KernelA.HPP,1534"$ -$LK,"ICF_LOCK",A="FL:::/Kernel/KernelA.HPP,1533"$ -$LK,"PutFileLink",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,167",BI=61$ -$LK,"BreakLock",A="FL:::/Kernel/KExcept.CPP.Z,135",BI=62$ -$LK,"HPET",A="FL:::/Kernel/KernelB.HPP,293"$ -$LK,"CH_CTRLN",A="FL:::/Kernel/KernelA.HPP,3400"$ -$LK,"BDf_FMT",A="FL:::/Kernel/KernelA.HPP,2561"$ -$LK,"CCF_KEEP_DOT",A="FL:::/Kernel/KernelA.HPP,2046"$ -$LK,"CH_CTRLO",A="FL:::/Kernel/KernelA.HPP,3401"$ -$LK,"TK_MOD_EQUAL",A="FL:::/Kernel/KernelA.HPP,2017"$ -$LK,"ARGT_XMM",A="FL:::/Kernel/KernelA.HPP,1852"$ -$LK,"DOCEf_WIN_REL",A="FL:::/Kernel/KernelA.HPP,1065"$ -$LK,"DOCEF_WIN_REL",A="FL:::/Kernel/KernelA.HPP,990"$ -$LK,"FifoI64Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,275",BI=63$ +$LK,"RedSeaFreeLstBuild",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,24",BI=50$ +$LK,"TK_SHL",A="FL:::/Kernel/KernelA.HPP,2042"$ +$LK,"DOCf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1287"$ +$LK,"DOCF_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1252"$ +$LK,"CH_CTRLA",A="FL:::/Kernel/KernelA.HPP,3436"$ +$LK,"CHashGlblVar",A="FL:::/Kernel/KernelA.HPP,866"$ +$LK,"CH_CTRLB",A="FL:::/Kernel/KernelA.HPP,3437"$ +$LK,"DOCEf_TAG",A="FL:::/Kernel/KernelA.HPP,1037"$ +$LK,"S",A="FL:::/Kernel/KDbg.CPP.Z,486",BI=51$ +$LK,"VGAP_INDEX",A="FL:::/Kernel/KernelA.HPP,3680"$ +$LK,"CH_CTRLC",A="FL:::/Kernel/KernelA.HPP,3438"$ +$LK,"FifoI64Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,258",BI=52$ +$LK,"FloorU64",A="FL:::/Kernel/KMathB.CPP.Z,36",BI=53$ +$LK,"CH_CTRLD",A="FL:::/Kernel/KernelA.HPP,3439"$ +$LK,"DOCF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1261"$ +$LK,"DOCT_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,911"$ +$LK,"CH_CTRLE",A="FL:::/Kernel/KernelA.HPP,3440"$ +$LK,"BLACK",A="FL:::/Kernel/KernelA.HPP,2908"$ +$LK,"ARGT_STI",A="FL:::/Kernel/KernelA.HPP,1897"$ +$LK,"NUM_REGS",A="FL:::/Kernel/KernelA.HPP,1737"$ +$LK,"DOCf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1297"$ +$LK,"DOCEf_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,1064"$ +$LK,"DOCEF_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,989"$ +$LK,"FileNameAbs",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,144",BI=54$ +$LK,"PSECT_CACHE_STR_LEN",A="FL:::/Kernel/KernelA.HPP,3806"$ +$LK,"CH_CTRLF",A="FL:::/Kernel/KernelA.HPP,3441"$ +$LK,"TK_SHR",A="FL:::/Kernel/KernelA.HPP,2043"$ +$LK,"AutoMountIDE",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,249",BI=55$ +$LK,"CH_CTRLG",A="FL:::/Kernel/KernelA.HPP,3442"$ +$LK,"_HASH_REM_DEL",A="FL:::/Kernel/KHashA.CPP.Z,208"$ +$LK,"TaskQueRem",A="FL:::/Kernel/Sched.CPP.Z,353",BI=56$ +$LK,"CH_CTRLH",A="FL:::/Kernel/KernelA.HPP,3443"$ +$LK,"CPalindromeU32",A="FL:::/Kernel/KernelA.HPP,2377"$ +$LK,"CPalindromeU16",A="FL:::/Kernel/KernelA.HPP,2372"$ +$LK,"DOCT_CHECK_BOX",A="FL:::/Kernel/KernelA.HPP,922"$ +$LK,"CH_CTRLI",A="FL:::/Kernel/KernelA.HPP,3444"$ +$LK,"FifoI64New",A="FL:::/Kernel/KDataTypes.CPP.Z,240",BI=57$ +$LK,"CH_CTRLJ",A="FL:::/Kernel/KernelA.HPP,3445"$ +$LK,"ARGT_XMM128",A="FL:::/Kernel/KernelA.HPP,1906"$ +$LK,"SC_CURSOR_UP",A="FL:::/Kernel/KernelA.HPP,3518"$ +$LK,"CH_CTRLK",A="FL:::/Kernel/KernelA.HPP,3446"$ +$LK,"TASKf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,3240"$ +$LK,"RandI32",A="FL:::/Kernel/KMathB.CPP.Z,92",BI=58$ +$LK,"RandI16",A="FL:::/Kernel/KMathB.CPP.Z,74",BI=59$ +$LK,"CH_CTRLL",A="FL:::/Kernel/KernelA.HPP,3447"$ +$LK,"CH_CTRLM",A="FL:::/Kernel/KernelA.HPP,3448"$ +$LK,"ICf_LOCK",A="FL:::/Kernel/KernelA.HPP,1583"$ +$LK,"ICF_LOCK",A="FL:::/Kernel/KernelA.HPP,1582"$ +$LK,"PutFileLink",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,167",BI=60$ +$LK,"BreakLock",A="FL:::/Kernel/KExcept.CPP.Z,135",BI=61$ +$LK,"HPET",A="FL:::/Kernel/KernelB.HPP,289"$ +$LK,"CH_CTRLN",A="FL:::/Kernel/KernelA.HPP,3449"$ +$LK,"BDf_FMT",A="FL:::/Kernel/KernelA.HPP,2611"$ +$LK,"CCF_KEEP_DOT",A="FL:::/Kernel/KernelA.HPP,2096"$ +$LK,"CH_CTRLO",A="FL:::/Kernel/KernelA.HPP,3450"$ +$LK,"TK_MOD_EQUAL",A="FL:::/Kernel/KernelA.HPP,2067"$ +$LK,"ARGT_XMM",A="FL:::/Kernel/KernelA.HPP,1902"$ +$LK,"DOCEf_WIN_REL",A="FL:::/Kernel/KernelA.HPP,1068"$ +$LK,"DOCEF_WIN_REL",A="FL:::/Kernel/KernelA.HPP,993"$ +$LK,"FifoI64Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,275",BI=62$ $LK,"_D3_DIV",A="FL:::/Kernel/KMathA.CPP.Z,184"$ -$LK,"CH_CTRLP",A="FL:::/Kernel/KernelA.HPP,3402"$ +$LK,"CH_CTRLP",A="FL:::/Kernel/KernelA.HPP,3451"$ $LK,"chars_bmp_non_eol",A="FL:::/Kernel/StrA.CPP.Z,396"$ -$LK,"CH_CTRLQ",A="FL:::/Kernel/KernelA.HPP,3403"$ -$LK,"CTSS",A="FL:::/Kernel/KernelA.HPP,3309"$ -$LK,"FileNameChk",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,222",BI=64$ +$LK,"CH_CTRLQ",A="FL:::/Kernel/KernelA.HPP,3452"$ +$LK,"CTSS",A="FL:::/Kernel/KernelA.HPP,3358"$ +$LK,"FileNameChk",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,222",BI=63$ $LK,"D3Mul",A="FL:::/Kernel/KernelB.HPP,162"$ -$LK,"CH_CTRLR",A="FL:::/Kernel/KernelA.HPP,3404"$ -$LK,"SK_NAME",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,89"$ -$LK,"CtrlAltC",A="FL:::/Kernel/KeyDev.CPP.Z,144",BI=65$ -$LK,"CallerRep",A="FL:::/Kernel/KDbg.CPP.Z,152",BI=66$ -$LK,"CH_CTRLS",A="FL:::/Kernel/KernelA.HPP,3405"$ -$LK,"ROP_EQU",A="FL:::/Kernel/KernelA.HPP,2842"$ -$LK,"DOCEf_LST",A="FL:::/Kernel/KernelA.HPP,1082"$ -$LK,"CtrlAltD",A="FL:::/Kernel/KeyDev.CPP.Z,149",BI=67$ -$LK,"RandI64",A="FL:::/Kernel/KMathB.CPP.Z,110",BI=68$ -$LK,"CH_CTRLT",A="FL:::/Kernel/KernelA.HPP,3406"$ -$LK,"MBS_UNUSED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2761"$ -$LK,"CCmpGlbls",A="FL:::/Kernel/KernelA.HPP,2125"$ -$LK,"RT_U32",A="FL:::/Kernel/KernelA.HPP,1485"$ -$LK,"RT_U16",A="FL:::/Kernel/KernelA.HPP,1483"$ -$LK,"CExternUsage",A="FL:::/Kernel/KernelA.HPP,808"$ -$LK,"FAT32FreeClusters",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,418",BI=69$ -$LK,"CtrlAltE",A="FL:::/Kernel/KeyDev.CPP.Z,159",BI=70$ -$LK,"CH_CTRLU",A="FL:::/Kernel/KernelA.HPP,3407"$ -$LK,"ARGT_MM32",A="FL:::/Kernel/KernelA.HPP,1850"$ -$LK,"DOCSS_COMMENT",A="FL:::/Kernel/KernelA.HPP,1109"$ -$LK,"CtrlAltF",A="FL:::/Kernel/KeyDev.CPP.Z,164",BI=71$ -$LK,"ip_grid",A="FL:::/Kernel/KGlbls.CPP.Z,19"$ -$LK,"CH_CTRLV",A="FL:::/Kernel/KernelA.HPP,3408"$ -$LK,"CCodeMisc",A="FL:::/Kernel/KernelA.HPP,1619"$ -$LK,"DOF_DONT_TEXT_ATTR",A="FL:::/Kernel/KernelA.HPP,1198"$ -$LK,"DOCEf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1027"$ -$LK,"DOCEF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1021"$ -$LK,"ISODrvInit",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,5",BI=72$ -$LK,"CH_CTRLW",A="FL:::/Kernel/KernelA.HPP,3409"$ -$LK,"FFB_NEXT_BLK",A="FL:::/Kernel/KernelA.HPP,2681"$ -$LK,"MPIntAll",A="FL:::/Kernel/MultiProc.CPP.Z,148",BI=73$ -$LK,"ISO1FromName",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,88",BI=74$ -$LK,"TaskContextRestore",A="FL:::/Kernel/Sched.CPP.Z,343"$ +$LK,"CH_CTRLR",A="FL:::/Kernel/KernelA.HPP,3453"$ +$LK,"SK_NAME",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,89"$ +$LK,"CtrlAltC",A="FL:::/Kernel/KeyDev.CPP.Z,131",BI=64$ +$LK,"CallerRep",A="FL:::/Kernel/KDbg.CPP.Z,152",BI=65$ +$LK,"CH_CTRLS",A="FL:::/Kernel/KernelA.HPP,3454"$ +$LK,"ROP_EQU",A="FL:::/Kernel/KernelA.HPP,2892"$ +$LK,"DOCEf_LST",A="FL:::/Kernel/KernelA.HPP,1085"$ +$LK,"CtrlAltD",A="FL:::/Kernel/KeyDev.CPP.Z,136",BI=66$ +$LK,"RandI64",A="FL:::/Kernel/KMathB.CPP.Z,110",BI=67$ +$LK,"CH_CTRLT",A="FL:::/Kernel/KernelA.HPP,3455"$ +$LK,"MBS_UNUSED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2811"$ +$LK,"CCmpGlbls",A="FL:::/Kernel/KernelA.HPP,2175"$ +$LK,"RT_U32",A="FL:::/Kernel/KernelA.HPP,1534"$ +$LK,"RT_U16",A="FL:::/Kernel/KernelA.HPP,1532"$ +$LK,"CExternUsage",A="FL:::/Kernel/KernelA.HPP,810"$ +$LK,"FAT32FreeClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,418",BI=68$ +$LK,"CtrlAltE",A="FL:::/Kernel/KeyDev.CPP.Z,146",BI=69$ +$LK,"CH_CTRLU",A="FL:::/Kernel/KernelA.HPP,3456"$ +$LK,"ARGT_MM32",A="FL:::/Kernel/KernelA.HPP,1900"$ +$LK,"DOCSS_COMMENT",A="FL:::/Kernel/KernelA.HPP,1112"$ +$LK,"CtrlAltF",A="FL:::/Kernel/KeyDev.CPP.Z,151",BI=70$ +$LK,"ip_grid",A="FL:::/Kernel/KGlbls.CPP.Z,23"$ +$LK,"CH_CTRLV",A="FL:::/Kernel/KernelA.HPP,3457"$ +$LK,"CCodeMisc",A="FL:::/Kernel/KernelA.HPP,1668"$ +$LK,"DOF_DONT_TEXT_ATTR",A="FL:::/Kernel/KernelA.HPP,1201"$ +$LK,"DOCEf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1030"$ +$LK,"DOCEF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1024"$ +$LK,"DrvFATBlkSet",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,92",BI=71$ +$LK,"ISODrvInit",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,5",BI=72$ +$LK,"CH_CTRLW",A="FL:::/Kernel/KernelA.HPP,3458"$ +$LK,"FFB_NEXT_BLK",A="FL:::/Kernel/KernelA.HPP,2731"$ +$LK,"ISO1FromName",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,88",BI=73$ +$LK,"MPIntAll",A="FL:::/Kernel/MultiProc.CPP.Z,148",BI=74$ +$LK,"TaskContextRestore",A="FL:::/Kernel/Sched.CPP.Z,335"$ $LK,"SYS_INIT_MEM",A="FL:::/Kernel/MemA.CPP.Z,8"$ -$LK,"SCf_ALT",A="FL:::/Kernel/KernelA.HPP,3429"$ -$LK,"CH_CTRLX",A="FL:::/Kernel/KernelA.HPP,3410"$ -$LK,"CH_CTRLY",A="FL:::/Kernel/KernelA.HPP,3411"$ -$LK,"CDoc",A="FL:::/Kernel/KernelA.HPP,1325"$ +$LK,"SCf_ALT",A="FL:::/Kernel/KernelA.HPP,3478"$ +$LK,"CH_CTRLX",A="FL:::/Kernel/KernelA.HPP,3459"$ +$LK,"CH_CTRLY",A="FL:::/Kernel/KernelA.HPP,3460"$ +$LK,"CDoc",A="FL:::/Kernel/KernelA.HPP,1328"$ $LK,"MemSetU8",A="FL:::/Kernel/KernelB.HPP,185"$ $LK,"_FCLEX",A="FL:::/Kernel/KMathA.CPP.Z,646"$ $LK,"_D3_DOT",A="FL:::/Kernel/KMathA.CPP.Z,113"$ -$LK,"ARf_CSPRITE_INS_CLIPBOARD",A="FL:::/Kernel/KernelA.HPP,3796"$ -$LK,"CH_CTRLZ",A="FL:::/Kernel/KernelA.HPP,3412"$ -$LK,"CHashGeneric",A="FL:::/Kernel/KernelA.HPP,725"$ +$LK,"ARf_CSPRITE_INS_CLIPBOARD",A="FL:::/Kernel/KernelA.HPP,3847"$ +$LK,"CH_CTRLZ",A="FL:::/Kernel/KernelA.HPP,3461"$ +$LK,"CHashGeneric",A="FL:::/Kernel/KernelA.HPP,727"$ $LK,"SYS_FIND_PCIBIOS_SERVICE_DIR",A="FL:::/Kernel/PCIBIOS.CPP.Z,8"$ -$LK,"CTRLF_CLICKED",A="FL:::/Kernel/KernelA.HPP,2995"$ -$LK,"HTF_RESOLVE",A="FL:::/Kernel/KernelA.HPP,699"$ +$LK,"CTRLF_CLICKED",A="FL:::/Kernel/KernelA.HPP,3046"$ +$LK,"HTF_RESOLVE",A="FL:::/Kernel/KernelA.HPP,701"$ $LK,"BCnt",A="FL:::/Kernel/KMisc.CPP.Z,39",BI=75$ $LK,"Mem64DevAlloc",A="FL:::/Kernel/MemC.CPP.Z,215",BI=76$ $LK,"Mem32DevAlloc",A="FL:::/Kernel/MemC.CPP.Z,165",BI=77$ -$LK,"RT_U64",A="FL:::/Kernel/KernelA.HPP,1488"$ -$LK,"DOCT_TAB",A="FL:::/Kernel/KernelA.HPP,894"$ -$LK,"HTT_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,690"$ -$LK,"HTt_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,660"$ -$LK,"ISO1FilesFind",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,233",BI=78$ -$LK,"CtrlAltM",A="FL:::/Kernel/KeyDev.CPP.Z,169",BI=79$ +$LK,"RT_U64",A="FL:::/Kernel/KernelA.HPP,1537"$ +$LK,"DOCT_TAB",A="FL:::/Kernel/KernelA.HPP,897"$ +$LK,"HTT_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,692"$ +$LK,"HTt_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,662"$ +$LK,"ISO1FilesFind",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,233",BI=78$ +$LK,"CtrlAltM",A="FL:::/Kernel/KeyDev.CPP.Z,156",BI=79$ $LK,"DefineLstLoad",A="FL:::/Kernel/KDefine.CPP.Z,13",BI=80$ $LK,"SYS_EM64T",A="FL:::/Kernel/KStart.CPP.Z,318"$ -$LK,"ARGT_MM64",A="FL:::/Kernel/KernelA.HPP,1851"$ -$LK,"DOCEf_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,1051"$ -$LK,"DOCEF_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,976"$ +$LK,"ARGT_MM64",A="FL:::/Kernel/KernelA.HPP,1901"$ +$LK,"DOCEf_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,1054"$ +$LK,"DOCEF_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,979"$ $LK,"RFLAGf_DIR",A="FL:::/Kernel/KernelA.HPP,312"$ -$LK,"ClusterNumNext",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,1",BI=81$ -$LK,"KbdMouseEvtTime",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,468",BI=82$ -$LK,"ip_last",A="FL:::/Kernel/KGlbls.CPP.Z,18"$ -$LK,"CDirEntry",A="FL:::/Kernel/KernelA.HPP,2464"$ -$LK,"TK_STR",A="FL:::/Kernel/KernelA.HPP,1984"$ -$LK,"PROGRESS_DESC_LEN",A="FL:::/Kernel/KernelA.HPP,3806"$ -$LK,"CCF_ASM_EXPRESSIONS",A="FL:::/Kernel/KernelA.HPP,2056"$ +$LK,"ClusterNumNext",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,1",BI=81$ +$LK,"KbdMouseEvtTime",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,482",BI=82$ +$LK,"ip_last",A="FL:::/Kernel/KGlbls.CPP.Z,24"$ +$LK,"CDirEntry",A="FL:::/Kernel/KernelA.HPP,2514"$ +$LK,"TK_STR",A="FL:::/Kernel/KernelA.HPP,2034"$ +$LK,"ACD_DEF_END",A="FL:::/Kernel/KernelA.HPP,1480"$ +$LK,"PROGRESS_DESC_LEN",A="FL:::/Kernel/KernelA.HPP,3857"$ +$LK,"CCF_ASM_EXPRESSIONS",A="FL:::/Kernel/KernelA.HPP,2106"$ $LK,"D3Sub",A="FL:::/Kernel/KernelB.HPP,166"$ -$LK,"SC_CURSOR_RIGHT",A="FL:::/Kernel/KernelA.HPP,3470"$ -$LK,"KeyDevAdd",A="FL:::/Kernel/KeyDev.CPP.Z,67",BI=83$ -$LK,"CTRLF_BORDER",A="FL:::/Kernel/KernelA.HPP,2992"$ +$LK,"SC_CURSOR_RIGHT",A="FL:::/Kernel/KernelA.HPP,3521"$ +$LK,"KeyDevAdd",A="FL:::/Kernel/KeyDev.CPP.Z,64",BI=83$ +$LK,"CTRLF_BORDER",A="FL:::/Kernel/KernelA.HPP,3043"$ $LK,"_D3_EQU",A="FL:::/Kernel/KMathA.CPP.Z,226"$ -$LK,"VGAP_ATTR_DATA_READ",A="FL:::/Kernel/KernelA.HPP,3627"$ -$LK,"ATA_PACKET",A="FL:::/Kernel/KernelA.HPP,2171"$ -$LK,"HTF_LOCAL",A="FL:::/Kernel/KernelA.HPP,701"$ -$LK,"HTT_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,684"$ -$LK,"HTf_LOCAL",A="FL:::/Kernel/KernelA.HPP,671"$ -$LK,"CtrlAltT",A="FL:::/Kernel/KeyDev.CPP.Z,174",BI=84$ +$LK,"VGAP_ATTR_DATA_READ",A="FL:::/Kernel/KernelA.HPP,3678"$ +$LK,"ATA_PACKET",A="FL:::/Kernel/KernelA.HPP,2221"$ +$LK,"HTF_LOCAL",A="FL:::/Kernel/KernelA.HPP,703"$ +$LK,"HTT_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,686"$ +$LK,"HTf_LOCAL",A="FL:::/Kernel/KernelA.HPP,673"$ +$LK,"CtrlAltT",A="FL:::/Kernel/KeyDev.CPP.Z,161",BI=84$ $LK,"IsSilent",A="FL:::/Kernel/KMisc.CPP.Z,228",BI=85$ -$LK,"CBpt",A="FL:::/Kernel/KernelA.HPP,3057"$ -$LK,"IEF_STI",A="FL:::/Kernel/KernelA.HPP,1650"$ -$LK,"HTt_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,654"$ +$LK,"CBpt",A="FL:::/Kernel/KernelA.HPP,3108"$ +$LK,"HTt_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,656"$ $LK,"PCIWriteU32",A="FL:::/Kernel/PCIBIOS.CPP.Z,250",BI=86$ $LK,"PCIWriteU16",A="FL:::/Kernel/PCIBIOS.CPP.Z,235",BI=87$ -$LK,"CISO1DirEntry",A="FL:::/Kernel/KernelA.HPP,2369"$ +$LK,"CISO1DirEntry",A="FL:::/Kernel/KernelA.HPP,2419"$ $LK,"_LXCHG_U8",A="FL:::/Kernel/KUtils.CPP.Z,244"$ -$LK,"CtrlAltX",A="FL:::/Kernel/KeyDev.CPP.Z,179",BI=88$ -$LK,"ChgDsk",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,176",BI=89$ -$LK,"UserTaskCont",A="FL:::/Kernel/Task.CPP.Z,334",BI=90$ +$LK,"CtrlAltX",A="FL:::/Kernel/KeyDev.CPP.Z,166",BI=88$ +$LK,"ChgDsk",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,176",BI=89$ +$LK,"UserTaskCont",A="FL:::/Kernel/KTask.CPP.Z,330",BI=90$ $LK,"RFLAGf_NESTED_TASK",A="FL:::/Kernel/KernelA.HPP,316"$ $LK,"BEqu",A="FL:::/Kernel/KernelB.HPP,28"$ -$LK,"ISO1T_PRI_VOL_DESC",A="FL:::/Kernel/KernelA.HPP,2390"$ -$LK,"FAT32MkDir",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,935",BI=91$ -$LK,"DCS_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3548"$ -$LK,"ICF_USE_INT",A="FL:::/Kernel/KernelA.HPP,1515"$ -$LK,"DOCT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,891"$ +$LK,"ISO1T_PRI_VOL_DESC",A="FL:::/Kernel/KernelA.HPP,2440"$ +$LK,"FAT32MkDir",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,935",BI=91$ +$LK,"DCS_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3599"$ +$LK,"ICF_USE_INT",A="FL:::/Kernel/KernelA.HPP,1564"$ +$LK,"DOCT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,894"$ $LK,"BIN_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,369"$ -$LK,"ARGT_IMM8",A="FL:::/Kernel/KernelA.HPP,1795"$ -$LK,"SYS_HASH_SINGLE_TABLE_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,75"$ -$LK,"DOC_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,1318"$ -$LK,"DOCEF_INVERT",A="FL:::/Kernel/KernelA.HPP,1023"$ +$LK,"ARGT_IMM8",A="FL:::/Kernel/KernelA.HPP,1845"$ +$LK,"SYS_HASH_SINGLE_TABLE_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,30"$ +$LK,"DOC_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,1321"$ +$LK,"DOCEF_INVERT",A="FL:::/Kernel/KernelA.HPP,1026"$ $LK,"CDateStruct",A="FL:::/Kernel/KernelA.HPP,191"$ -$LK,"CHashFun",A="FL:::/Kernel/KernelA.HPP,846"$ -$LK,"SV_I_REG",A="FL:::/Kernel/KernelA.HPP,1655"$ -$LK,"DOCEf_INVERT",A="FL:::/Kernel/KernelA.HPP,1029"$ -$LK,"DayOfWeek",A="FL:::/Kernel/Date.CPP.Z,30",BI=92$ -$LK,"CDrv",A="FL:::/Kernel/KernelA.HPP,2622"$ -$LK,"TK_MINUS_MINUS",A="FL:::/Kernel/KernelA.HPP,1989"$ -$LK,"DOCT_LST",A="FL:::/Kernel/KernelA.HPP,920"$ +$LK,"CHashFun",A="FL:::/Kernel/KernelA.HPP,849"$ +$LK,"SV_I_REG",A="FL:::/Kernel/KernelA.HPP,1704"$ +$LK,"DOCEf_INVERT",A="FL:::/Kernel/KernelA.HPP,1032"$ +$LK,"DayOfWeek",A="FL:::/Kernel/KDate.CPP.Z,30",BI=92$ +$LK,"CDrv",A="FL:::/Kernel/KernelA.HPP,2672"$ +$LK,"TK_MINUS_MINUS",A="FL:::/Kernel/KernelA.HPP,2039"$ +$LK,"DOCT_LST",A="FL:::/Kernel/KernelA.HPP,923"$ $LK,"sys_heap_init_flag",A="FL:::/Kernel/KernelB.HPP,187"$ -$LK,"FUF_CANCEL",A="FL:::/Kernel/KernelA.HPP,2510"$ -$LK,"FUf_CANCEL",A="FL:::/Kernel/KernelA.HPP,2485"$ +$LK,"FUF_CANCEL",A="FL:::/Kernel/KernelA.HPP,2560"$ +$LK,"FUf_CANCEL",A="FL:::/Kernel/KernelA.HPP,2535"$ $LK,"FALSE",A="FL:::/Kernel/KernelA.HPP,19"$ -$LK,"VGAP_REG_READ",A="FL:::/Kernel/KernelA.HPP,3632"$ -$LK,"CPUf_SETH_SLEEP",A="FL:::/Kernel/KernelA.HPP,3343"$ -$LK,"SVCf_ADD_TO_QUE",A="FL:::/Kernel/KernelA.HPP,3086"$ -$LK,"CUAsmGlbls",A="FL:::/Kernel/KernelA.HPP,2141"$ +$LK,"VGAP_REG_READ",A="FL:::/Kernel/KernelA.HPP,3683"$ +$LK,"CPUf_SETH_SLEEP",A="FL:::/Kernel/KernelA.HPP,3392"$ +$LK,"SVCf_ADD_TO_QUE",A="FL:::/Kernel/KernelA.HPP,3137"$ +$LK,"CUAsmGlbls",A="FL:::/Kernel/KernelA.HPP,2191"$ $LK,"StrPrintHex",A="FL:::/Kernel/StrA.CPP.Z,1",BI=93$ $LK,"_D3_ADD_EQU",A="FL:::/Kernel/KMathA.CPP.Z,239"$ -$LK,"DRV_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2621"$ -$LK,"DOCT_PMT",A="FL:::/Kernel/KernelA.HPP,907"$ -$LK,"Cf_EXTERN",A="FL:::/Kernel/KernelA.HPP,821"$ +$LK,"DRV_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2671"$ +$LK,"DOCT_PMT",A="FL:::/Kernel/KernelA.HPP,910"$ +$LK,"Cf_EXTERN",A="FL:::/Kernel/KernelA.HPP,823"$ $LK,"HPET_GCAP_ID",A="FL:::/Kernel/KernelA.HPP,527"$ $LK,"ATan",A="FL:::/Kernel/KernelB.HPP,94"$ $LK,"SysBadFree",A="FL:::/Kernel/MemA.CPP.Z,155",BI=94$ -$LK,"ATA_ID_DEV",A="FL:::/Kernel/KernelA.HPP,2180"$ -$LK,"CHashReg",A="FL:::/Kernel/KernelA.HPP,739"$ -$LK,"SCf_INS",A="FL:::/Kernel/KernelA.HPP,3437"$ +$LK,"ATA_ID_DEV",A="FL:::/Kernel/KernelA.HPP,2230"$ +$LK,"CHashReg",A="FL:::/Kernel/KernelA.HPP,741"$ +$LK,"SCf_INS",A="FL:::/Kernel/KernelA.HPP,3486"$ $LK,"LAPIC_LVT_ERR",A="FL:::/Kernel/KernelA.HPP,497"$ $LK,"Scale2Mem",A="FL:::/Kernel/MemC.CPP.Z,306",BI=95$ $LK,"RandU32",A="FL:::/Kernel/KMathB.CPP.Z,101",BI=96$ $LK,"RandU16",A="FL:::/Kernel/KMathB.CPP.Z,83",BI=97$ $LK,"Mem512TaskFree",A="FL:::/Kernel/MemA.CPP.Z,518",BI=98$ $LK,"_FLDCW",A="FL:::/Kernel/KMathA.CPP.Z,625"$ -$LK,"__DIR__",A="FL:::/Kernel/KernelA.HPP,1943"$ -$LK,"ARGT_RM32",A="FL:::/Kernel/KernelA.HPP,1812"$ -$LK,"ARGT_RM16",A="FL:::/Kernel/KernelA.HPP,1811"$ +$LK,"__DIR__",A="FL:::/Kernel/KernelA.HPP,1993"$ +$LK,"ARGT_RM32",A="FL:::/Kernel/KernelA.HPP,1862"$ +$LK,"ARGT_RM16",A="FL:::/Kernel/KernelA.HPP,1861"$ $LK,"RFLAGf_INT",A="FL:::/Kernel/KernelA.HPP,311"$ -$LK,"WIf_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1416"$ -$LK,"WIF_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1391"$ -$LK,"MLF_STATIC",A="FL:::/Kernel/KernelA.HPP,771"$ -$LK,"DVT_NTFS",A="FL:::/Kernel/KernelA.HPP,2597"$ -$LK,"ICF_A1_FIRST",A="FL:::/Kernel/KernelA.HPP,1520"$ -$LK,"ChgExt",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,176",BI=99$ +$LK,"WIf_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1419"$ +$LK,"WIF_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1393"$ +$LK,"MLF_STATIC",A="FL:::/Kernel/KernelA.HPP,773"$ +$LK,"DVT_NTFS",A="FL:::/Kernel/KernelA.HPP,2647"$ +$LK,"ICF_A1_FIRST",A="FL:::/Kernel/KernelA.HPP,1569"$ +$LK,"ChgExt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,176",BI=99$ $LK,"str2color_lst",A="FL:::/Kernel/KDefine.CPP.Z,155"$ -$LK,"local_time_offset",A="FL:::/Kernel/KGlbls.CPP.Z,13"$ -$LK,"RedSeaFilesFind",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,541",BI=100$ +$LK,"local_time_offset",A="FL:::/Kernel/KGlbls.CPP.Z,14"$ +$LK,"RedSeaFilesFind",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,541",BI=100$ $LK,"_D3_MUL",A="FL:::/Kernel/KMathA.CPP.Z,167"$ -$LK,"ISO1_BASE_YEAR",A="FL:::/Kernel/KernelA.HPP,2432"$ -$LK,"TK_ELSE",A="FL:::/Kernel/KernelA.HPP,2016"$ +$LK,"ISO1_BASE_YEAR",A="FL:::/Kernel/KernelA.HPP,2482"$ +$LK,"TK_ELSE",A="FL:::/Kernel/KernelA.HPP,2066"$ $LK,"RandU64",A="FL:::/Kernel/KMathB.CPP.Z,119",BI=101$ -$LK,"PostMsgWait",A="FL:::/Kernel/SrvCmd.CPP.Z,254",BI=102$ +$LK,"PostMsgWait",A="FL:::/Kernel/SrvCmd.CPP.Z,250",BI=102$ $LK,"UndefinedDefine",A="FL:::/Kernel/KDefine.CPP.Z,43",BI=103$ -$LK,"ARGT_RM64",A="FL:::/Kernel/KernelA.HPP,1813"$ -$LK,"ATAWaitDRQ",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,36",BI=104$ -$LK,"TaskInit",A="FL:::/Kernel/Task.CPP.Z,154",BI=105$ -$LK,"DOCEf_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,1053"$ -$LK,"DOCEF_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,978"$ -$LK,"HTT_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,682"$ -$LK,"HTt_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,652"$ -$LK,"RLf_MP",A="FL:::/Kernel/KernelA.HPP,443"$ +$LK,"ARGT_RM64",A="FL:::/Kernel/KernelA.HPP,1863"$ +$LK,"ATAWaitDRQ",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,36",BI=104$ +$LK,"TaskInit",A="FL:::/Kernel/KTask.CPP.Z,150",BI=105$ +$LK,"DOCEf_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,1056"$ +$LK,"DOCEF_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,981"$ +$LK,"HTT_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,684"$ +$LK,"HTt_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,654"$ +$LK,"RLf_MP",A="FL:::/Kernel/KernelA.HPP,444"$ $LK,"CSpring",A="FL:::/Kernel/KernelA.HPP,224"$ -$LK,"CBGR24",A="FL:::/Kernel/KernelA.HPP,2890"$ -$LK,"DVT_NULL",A="FL:::/Kernel/KernelA.HPP,2591"$ -$LK,"FONT_WIDTH",A="FL:::/Kernel/KernelA.HPP,3509"$ -$LK,"CHeapCtrl",A="FL:::/Kernel/KernelA.HPP,2808"$ -$LK,"LastDayOfYear",A="FL:::/Kernel/Date.CPP.Z,110",BI=106$ +$LK,"CBGR24",A="FL:::/Kernel/KernelA.HPP,2940"$ +$LK,"DVT_NULL",A="FL:::/Kernel/KernelA.HPP,2641"$ +$LK,"FONT_WIDTH",A="FL:::/Kernel/KernelA.HPP,3560"$ +$LK,"CHeapCtrl",A="FL:::/Kernel/KernelA.HPP,2858"$ +$LK,"LastDayOfYear",A="FL:::/Kernel/KDate.CPP.Z,110",BI=106$ $LK,"HeapCtrlBPInit",A="FL:::/Kernel/MemC.CPP.Z,41",BI=107$ -$LK,"SYS_IDLE_PT",A="FL:::/Kernel/Sched.CPP.Z,233"$ +$LK,"SYS_IDLE_PT",A="FL:::/Kernel/Sched.CPP.Z,225"$ $LK,"mp_cnt_initial",A="FL:::/Kernel/KernelB.HPP,235"$ -$LK,"CAbsCntsI64",A="FL:::/Kernel/KernelA.HPP,1718"$ -$LK,"JobResultGet",A="FL:::/Kernel/SrvCmd.CPP.Z,201",BI=108$ +$LK,"STD_DISTRO_DVD_CFG",A="FL:::/Kernel/KernelA.HPP,3842"$ +$LK,"CAbsCntsI64",A="FL:::/Kernel/KernelA.HPP,1768"$ +$LK,"JobResultGet",A="FL:::/Kernel/SrvCmd.CPP.Z,197",BI=108$ $LK,"_D3_SUB",A="FL:::/Kernel/KMathA.CPP.Z,149"$ -$LK,"CBGR48",A="FL:::/Kernel/KernelA.HPP,2894"$ -$LK,"DOCEF_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,997"$ +$LK,"CBGR48",A="FL:::/Kernel/KernelA.HPP,2944"$ +$LK,"DOCEF_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1000"$ $LK,"IntCore0TimerHandler",A="FL:::/Kernel/KMisc.CPP.Z,47",BI=109$ -$LK,"__DATE__",A="FL:::/Kernel/KernelA.HPP,1935"$ +$LK,"__DATE__",A="FL:::/Kernel/KernelA.HPP,1985"$ $LK,"chars_bmp_safe_dollar",A="FL:::/Kernel/StrA.CPP.Z,391"$ -$LK,"AdamErr",A="FL:::/Kernel/SrvCmd.CPP.Z,447",BI=110$ +$LK,"AdamErr",A="FL:::/Kernel/SrvCmd.CPP.Z,436",BI=110$ $LK,"sys_focus_task",A="FL:::/Kernel/KernelB.HPP,203"$ -$LK,"DOCEf_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1072"$ -$LK,"HTT_MODULE",A="FL:::/Kernel/KernelA.HPP,688"$ -$LK,"HTt_MODULE",A="FL:::/Kernel/KernelA.HPP,658"$ -$LK,"SVCf_HIGHEST_PRIORITY",A="FL:::/Kernel/KernelA.HPP,3081"$ -$LK,"ARGT_REL8",A="FL:::/Kernel/KernelA.HPP,1791"$ -$LK,"GridInit",A="FL:::/Kernel/KbdMouse/InputPointer.CPP.Z,1",BI=111$ -$LK,"FirstDayOfYear",A="FL:::/Kernel/Date.CPP.Z,98",BI=112$ -$LK,"CCf_PMT",A="FL:::/Kernel/KernelA.HPP,2040"$ -$LK,"WIf_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1417"$ -$LK,"WIF_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1392"$ -$LK,"MLF_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,765"$ -$LK,"SCf_NUM",A="FL:::/Kernel/KernelA.HPP,3431"$ -$LK,"RS_ATTR_RESIDENT",A="FL:::/Kernel/KernelA.HPP,2447"$ +$LK,"DOCEf_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1075"$ +$LK,"HTT_MODULE",A="FL:::/Kernel/KernelA.HPP,690"$ +$LK,"HTt_MODULE",A="FL:::/Kernel/KernelA.HPP,660"$ +$LK,"SVCf_HIGHEST_PRIORITY",A="FL:::/Kernel/KernelA.HPP,3132"$ +$LK,"ARGT_REL8",A="FL:::/Kernel/KernelA.HPP,1841"$ +$LK,"GridInit",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,1",BI=111$ +$LK,"FirstDayOfYear",A="FL:::/Kernel/KDate.CPP.Z,98",BI=112$ +$LK,"CCf_PMT",A="FL:::/Kernel/KernelA.HPP,2090"$ +$LK,"ACD_EXTRA",A="FL:::/Kernel/KernelA.HPP,1485"$ +$LK,"WIf_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1420"$ +$LK,"WIF_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1394"$ +$LK,"MLF_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,767"$ +$LK,"SCf_NUM",A="FL:::/Kernel/KernelA.HPP,3480"$ +$LK,"RS_ATTR_RESIDENT",A="FL:::/Kernel/KernelA.HPP,2497"$ $LK,"Dbg2",A="FL:::/Kernel/KDbg.CPP.Z,540",BI=113$ $LK,"HashSrcFileSet",A="FL:::/Kernel/KHashB.CPP.Z,154",BI=114$ -$LK,"ROP_XOR",A="FL:::/Kernel/KernelA.HPP,2843"$ +$LK,"ROP_XOR",A="FL:::/Kernel/KernelA.HPP,2893"$ $LK,"NULL",A="FL:::/Kernel/KernelA.HPP,17"$ $LK,"BlkPoolInit",A="FL:::/Kernel/MemC.CPP.Z,18",BI=115$ $LK,"_BIT_FIELD_EXTRACT_U32",A="FL:::/Kernel/KUtils.CPP.Z,167"$ -$LK,"BDF_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2553"$ -$LK,"ProgressBarsRst",A="FL:::/Kernel/KMisc.CPP.Z,280",BI=116$ -$LK,"TASKf_PENDING_BREAK",A="FL:::/Kernel/KernelA.HPP,3197"$ -$LK,"BDf_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2563"$ -$LK,"RedSeaAllocClusters",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,304",BI=117$ +$LK,"BDF_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2603"$ +$LK,"ProgressBarsRst",A="FL:::/Kernel/KMisc.CPP.Z,275",BI=116$ +$LK,"TASKf_PENDING_BREAK",A="FL:::/Kernel/KernelA.HPP,3245"$ +$LK,"BDf_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2613"$ +$LK,"RedSeaAllocClusters",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,304",BI=117$ $LK,"CQue",A="FL:::/Kernel/KernelA.HPP,120"$ -$LK,"DOCEF_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1001"$ -$LK,"AdamLog",A="FL:::/Kernel/SrvCmd.CPP.Z,437",BI=118$ -$LK,"TASKf_KILL_TASK",A="FL:::/Kernel/KernelA.HPP,3186"$ -$LK,"Ff_RET1",A="FL:::/Kernel/KernelA.HPP,844"$ -$LK,"SVCT_SPAWN_TASK",A="FL:::/Kernel/KernelA.HPP,3093"$ -$LK,"RS_ATTR_ARCHIVE",A="FL:::/Kernel/KernelA.HPP,2442"$ -$LK,"DOCEf_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1076"$ -$LK,"OPTf_WARN_PAREN",A="FL:::/Kernel/KernelA.HPP,1464"$ -$LK,"TaskStkNew",A="FL:::/Kernel/Task.CPP.Z,72",BI=119$ -$LK,"RT_PTR",A="FL:::/Kernel/KernelA.HPP,1487"$ +$LK,"DOCEF_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1004"$ +$LK,"AdamLog",A="FL:::/Kernel/SrvCmd.CPP.Z,426",BI=118$ +$LK,"TASKf_KILL_TASK",A="FL:::/Kernel/KernelA.HPP,3235"$ +$LK,"ACD_H1",A="FL:::/Kernel/KernelA.HPP,1477"$ +$LK,"Ff_RET1",A="FL:::/Kernel/KernelA.HPP,847"$ +$LK,"SVCT_SPAWN_TASK",A="FL:::/Kernel/KernelA.HPP,3144"$ +$LK,"RS_ATTR_ARCHIVE",A="FL:::/Kernel/KernelA.HPP,2492"$ +$LK,"DOCEf_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1079"$ +$LK,"EXT_DBG_RESUME",A="FL:::/Kernel/KernelA.HPP,573"$ +$LK,"OPTf_WARN_PAREN",A="FL:::/Kernel/KernelA.HPP,1513"$ +$LK,"TaskStkNew",A="FL:::/Kernel/KTask.CPP.Z,68",BI=119$ +$LK,"RT_PTR",A="FL:::/Kernel/KernelA.HPP,1536"$ $LK,"HashTableDel",A="FL:::/Kernel/KHashB.CPP.Z,90",BI=120$ $LK,"LBtc",A="FL:::/Kernel/KernelB.HPP,22"$ -$LK,"FUF_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2523"$ +$LK,"FUF_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2573"$ $LK,"ClampI64",A="FL:::/Kernel/KernelB.HPP,124"$ -$LK,"FUf_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2498"$ +$LK,"FUf_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2548"$ $LK,"B2",A="FL:::/Kernel/KDbg.CPP.Z,429",BI=121$ $LK,"SLOP",A="FL:::/Kernel/StrPrint.CPP.Z,216"$ -$LK,"FF_BUF_DIRTY",A="FL:::/Kernel/KernelA.HPP,2685"$ -$LK,"ICF_SWAP",A="FL:::/Kernel/KernelA.HPP,1529"$ +$LK,"FF_BUF_DIRTY",A="FL:::/Kernel/KernelA.HPP,2735"$ +$LK,"ICF_SWAP",A="FL:::/Kernel/KernelA.HPP,1578"$ $LK,"_STRMATCH",A="FL:::/Kernel/StrA.CPP.Z,223"$ $LK,"MSF_FIXED",A="FL:::/Kernel/KernelA.HPP,206"$ -$LK,"PSectCacheFind",A="FL:::/Kernel/PSect.CPP.Z,85",BI=122$ -$LK,"sys_macro_util_task",A="FL:::/Kernel/KGlbls.CPP.Z,4"$ +$LK,"PSectCacheFind",A="FL:::/Kernel/PSect.CPP.Z,82",BI=122$ +$LK,"sys_macro_util_task",A="FL:::/Kernel/KGlbls.CPP.Z,5"$ $LK,"_CPUID",A="FL:::/Kernel/KUtils.CPP.Z,319"$ $LK,"SYS_HEAP_BASE",A="FL:::/Kernel/KStart.CPP.Z,184"$ $LK,"_LBEQU",A="FL:::/Kernel/KUtils.CPP.Z,104"$ $LK,"Caller",A="FL:::/Kernel/KDbg.CPP.Z,60",BI=123$ -$LK,"SUF_S2T",A="FL:::/Kernel/KernelA.HPP,3696"$ -$LK,"ATA_DEV_RST",A="FL:::/Kernel/KernelA.HPP,2170"$ -$LK,"RWF_LAST_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3497"$ -$LK,"RS_ATTR_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2449"$ +$LK,"SUF_S2T",A="FL:::/Kernel/KernelA.HPP,3746"$ +$LK,"ATA_DEV_RST",A="FL:::/Kernel/KernelA.HPP,2220"$ +$LK,"INT_MP_CRASH_ADDR",A="FL:::/Kernel/KInts.CPP.Z,2"$ +$LK,"RWF_LAST_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3548"$ +$LK,"RS_ATTR_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2499"$ $LK,"HPET_MAIN_CNT",A="FL:::/Kernel/KernelA.HPP,529"$ -$LK,"DOCT_DATA",A="FL:::/Kernel/KernelA.HPP,918"$ -$LK,"SUF_T2S",A="FL:::/Kernel/KernelA.HPP,3697"$ -$LK,"MEM_MIN_MEG",A="FL:::/Kernel/KernelA.HPP,3364"$ +$LK,"DOCT_DATA",A="FL:::/Kernel/KernelA.HPP,921"$ +$LK,"SUF_T2S",A="FL:::/Kernel/KernelA.HPP,3747"$ +$LK,"MEM_MIN_MEG",A="FL:::/Kernel/KernelA.HPP,3413"$ $LK,"exp_1",A="FL:::/Kernel/KernelA.HPP,50"$ -$LK,"CTRL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,15"$ -$LK,"KeyDevRem",A="FL:::/Kernel/KeyDev.CPP.Z,85",BI=124$ +$LK,"CTRL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,15"$ +$LK,"KeyDevRem",A="FL:::/Kernel/KeyDev.CPP.Z,80",BI=124$ $LK,"G2",A="FL:::/Kernel/KDbg.CPP.Z,476",BI=125$ $LK,"TSSNew",A="FL:::/Kernel/MultiProc.CPP.Z,76",BI=126$ $LK,"SYS_PROGRESS1_DESC",A="FL:::/Kernel/KStart.CPP.Z,210"$ $LK,"LBtr",A="FL:::/Kernel/KernelB.HPP,24"$ -$LK,"DVTf_DISABLE",A="FL:::/Kernel/KernelA.HPP,2601"$ -$LK,"HTT_OPCODE",A="FL:::/Kernel/KernelA.HPP,685"$ -$LK,"HTt_OPCODE",A="FL:::/Kernel/KernelA.HPP,655"$ +$LK,"DVTf_DISABLE",A="FL:::/Kernel/KernelA.HPP,2651"$ +$LK,"HTT_OPCODE",A="FL:::/Kernel/KernelA.HPP,687"$ +$LK,"HTt_OPCODE",A="FL:::/Kernel/KernelA.HPP,657"$ $LK,"CDATE_YEAR_DAYS_INT",A="FL:::/Kernel/KernelA.HPP,182"$ -$LK,"FAT32AllocContiguousClusters",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,519",BI=127$ +$LK,"FAT32AllocContiguousClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,519",BI=127$ $LK,"LBts",A="FL:::/Kernel/KernelB.HPP,26"$ $LK,"ArcEntryGet",A="FL:::/Kernel/Compress.CPP.Z,100"$ $LK,"_LOG10",A="FL:::/Kernel/KMathA.CPP.Z,592"$ -$LK,"Adam",A="FL:::/Kernel/SrvCmd.CPP.Z,418",BI=128$ +$LK,"Adam",A="FL:::/Kernel/SrvCmd.CPP.Z,409",BI=128$ $LK,"CTryStk",A="FL:::/Kernel/KExcept.CPP.Z,53"$ -$LK,"DCF_PALETTE",A="FL:::/Kernel/KernelA.HPP,3524"$ -$LK,"set_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,12"$ -$LK,"KBD_CTRL",A="FL:::/Kernel/KernelA.HPP,2901"$ -$LK,"HTt_FUN",A="FL:::/Kernel/KernelA.HPP,650"$ -$LK,"RS_ATTR_LONG_NAME",A="FL:::/Kernel/KernelA.HPP,2443"$ -$LK,"TK_XOR_XOR",A="FL:::/Kernel/KernelA.HPP,2000"$ -$LK,"DOCEf_HOLD",A="FL:::/Kernel/KernelA.HPP,1080"$ -$LK,"DOCEF_HOLD",A="FL:::/Kernel/KernelA.HPP,1005"$ -$LK,"KDInputFilterPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,113",BI=129$ +$LK,"DCF_PALETTE",A="FL:::/Kernel/KernelA.HPP,3575"$ +$LK,"set_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,13"$ +$LK,"KBD_CTRL",A="FL:::/Kernel/KernelA.HPP,2951"$ +$LK,"HTt_FUN",A="FL:::/Kernel/KernelA.HPP,652"$ +$LK,"RS_ATTR_LONG_NAME",A="FL:::/Kernel/KernelA.HPP,2493"$ +$LK,"TK_XOR_XOR",A="FL:::/Kernel/KernelA.HPP,2050"$ +$LK,"DOCEf_HOLD",A="FL:::/Kernel/KernelA.HPP,1083"$ +$LK,"DOCEF_HOLD",A="FL:::/Kernel/KernelA.HPP,1008"$ +$LK,"KDInputFilterPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,106",BI=129$ $LK,"GetOutOfDollar",A="FL:::/Kernel/StrB.CPP.Z,75",BI=130$ -$LK,"DOC_COLOR_ALT_TEXT",A="FL:::/Kernel/KernelA.HPP,1116"$ -$LK,"MBR_PT_FAT32a",A="FL:::/Kernel/KernelA.HPP,2604"$ +$LK,"DOC_COLOR_ALT_TEXT",A="FL:::/Kernel/KernelA.HPP,1119"$ +$LK,"MBR_PT_FAT32a",A="FL:::/Kernel/KernelA.HPP,2654"$ $LK,"DbgHelp",A="FL:::/Kernel/KDbg.CPP.Z,505",BI=131$ $LK,"_FLOOR",A="FL:::/Kernel/KMathA.CPP.Z,420"$ -$LK,"MBR_PT_FAT32b",A="FL:::/Kernel/KernelA.HPP,2605"$ -$LK,"MBR_PT_FAT32c",A="FL:::/Kernel/KernelA.HPP,2606"$ +$LK,"MBR_PT_FAT32b",A="FL:::/Kernel/KernelA.HPP,2655"$ +$LK,"MBR_PT_FAT32c",A="FL:::/Kernel/KernelA.HPP,2656"$ $LK,"D3Dist",A="FL:::/Kernel/KernelB.HPP,155"$ -$LK,"MBR_PT_FAT32d",A="FL:::/Kernel/KernelA.HPP,2607"$ -$LK,"LMF_EXACT",A="FL:::/Kernel/KernelA.HPP,3709"$ -$LK,"MBR_PT_FAT32e",A="FL:::/Kernel/KernelA.HPP,2608"$ -$LK,"MBR_PT_FAT32f",A="FL:::/Kernel/KernelA.HPP,2609"$ -$LK,"CM_MAX_CONSTS",A="FL:::/Kernel/KernelA.HPP,1617"$ -$LK,"DOCEF_TAG_CB",A="FL:::/Kernel/KernelA.HPP,980"$ +$LK,"MBR_PT_FAT32d",A="FL:::/Kernel/KernelA.HPP,2657"$ +$LK,"LMF_EXACT",A="FL:::/Kernel/KernelA.HPP,3759"$ +$LK,"MBR_PT_FAT32e",A="FL:::/Kernel/KernelA.HPP,2658"$ +$LK,"MBR_PT_FAT32f",A="FL:::/Kernel/KernelA.HPP,2659"$ +$LK,"CM_MAX_CONSTS",A="FL:::/Kernel/KernelA.HPP,1666"$ +$LK,"DOCEF_TAG_CB",A="FL:::/Kernel/KernelA.HPP,983"$ $LK,"Str2Date",A="FL:::/Kernel/StrScan.CPP.Z,138",BI=132$ -$LK,"DOCEf_TAG_CB",A="FL:::/Kernel/KernelA.HPP,1055"$ -$LK,"HTt_REG",A="FL:::/Kernel/KernelA.HPP,656"$ +$LK,"ICF_PASS_TRACE",A="FL:::/Kernel/KernelA.HPP,1571"$ +$LK,"DOCEf_TAG_CB",A="FL:::/Kernel/KernelA.HPP,1058"$ +$LK,"HTt_REG",A="FL:::/Kernel/KernelA.HPP,658"$ $LK,"ChkPtr",A="FL:::/Kernel/KDbg.CPP.Z,1",BI=133$ -$LK,"TaskWait",A="FL:::/Kernel/SrvCmd.CPP.Z,223",BI=134$ -$LK,"_R10",A="FL:::/Kernel/KernelA.HPP,3334"$ -$LK,"SYS_IRQ_FAULT",A="FL:::/Kernel/Ints.CPP.Z,58"$ +$LK,"TaskWait",A="FL:::/Kernel/SrvCmd.CPP.Z,219",BI=134$ +$LK,"_R10",A="FL:::/Kernel/KernelA.HPP,3383"$ $LK,"SYS_MEM_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"_R11",A="FL:::/Kernel/KernelA.HPP,3335"$ -$LK,"WMG_FPS",A="FL:::/Kernel/KernelA.HPP,1437"$ -$LK,"BOOT_RAM_LIMIT",A="FL:::/Kernel/KernelA.HPP,3782"$ -$LK,"_R12",A="FL:::/Kernel/KernelA.HPP,3336"$ -$LK,"SK_CLUSTER",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,90"$ -$LK,"SysGetI64",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,269",BI=135$ +$LK,"_R11",A="FL:::/Kernel/KernelA.HPP,3384"$ +$LK,"WMG_FPS",A="FL:::/Kernel/KernelA.HPP,1441"$ +$LK,"BOOT_RAM_LIMIT",A="FL:::/Kernel/KernelA.HPP,3833"$ +$LK,"_R12",A="FL:::/Kernel/KernelA.HPP,3385"$ +$LK,"SK_CLUSTER",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,90"$ +$LK,"SysGetI64",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,269",BI=135$ $LK,"MemSetI64",A="FL:::/Kernel/KernelB.HPP,179"$ -$LK,"_R13",A="FL:::/Kernel/KernelA.HPP,3337"$ -$LK,"DEF_NOT_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2461"$ +$LK,"_R13",A="FL:::/Kernel/KernelA.HPP,3386"$ +$LK,"DEF_NOT_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2511"$ $LK,"SYS_BOOT_PATCH_TABLE_BASE",A="FL:::/Kernel/KStart.CPP.Z,25"$ -$LK,"_R14",A="FL:::/Kernel/KernelA.HPP,3338"$ -$LK,"CTRLT_WIN_VSCROLL",A="FL:::/Kernel/KernelA.HPP,2988"$ +$LK,"_R14",A="FL:::/Kernel/KernelA.HPP,3387"$ +$LK,"CTRLT_WIN_VSCROLL",A="FL:::/Kernel/KernelA.HPP,3039"$ $LK,"ODEF_HAS_MASSES",A="FL:::/Kernel/KernelA.HPP,238"$ -$LK,"_R15",A="FL:::/Kernel/KernelA.HPP,3339"$ -$LK,"FUG_FILES_FIND",A="FL:::/Kernel/KernelA.HPP,2531"$ +$LK,"_R15",A="FL:::/Kernel/KernelA.HPP,3388"$ +$LK,"FUG_FILES_FIND",A="FL:::/Kernel/KernelA.HPP,2581"$ $LK,"TRUE",A="FL:::/Kernel/KernelA.HPP,18"$ -$LK,"DOC_RECALC_TO_SCREEN",A="FL:::/Kernel/KernelA.HPP,1322"$ +$LK,"DOC_RECALC_TO_SCREEN",A="FL:::/Kernel/KernelA.HPP,1325"$ $LK,"chars_bmp_zero_tab_ff_cr_nl_cursor",A="FL:::/Kernel/StrA.CPP.Z,365"$ -$LK,"CEdFindText",A="FL:::/Kernel/KernelA.HPP,1203"$ +$LK,"CEdFindText",A="FL:::/Kernel/KernelA.HPP,1206"$ $LK,"LDF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,365"$ -$LK,"DOCEf_LINK",A="FL:::/Kernel/KernelA.HPP,1066"$ -$LK,"DOCEF_LINK",A="FL:::/Kernel/KernelA.HPP,991"$ +$LK,"DOCEf_LINK",A="FL:::/Kernel/KernelA.HPP,1069"$ +$LK,"DOCEF_LINK",A="FL:::/Kernel/KernelA.HPP,994"$ $LK,"D3Copy",A="FL:::/Kernel/KernelB.HPP,151"$ $LK,"Beep",A="FL:::/Kernel/KMisc.CPP.Z,190",BI=136$ $LK,"_STRNICMP",A="FL:::/Kernel/StrA.CPP.Z,183"$ $LK,"_MEMSET_I64",A="FL:::/Kernel/KUtils.CPP.Z,42"$ -$LK,"CH_SPACE",A="FL:::/Kernel/KernelA.HPP,3419"$ -$LK,"TK_SUB_EQUAL",A="FL:::/Kernel/KernelA.HPP,2009"$ -$LK,"TK_DIV_EQUAL",A="FL:::/Kernel/KernelA.HPP,2004"$ -$LK,"TK_SHL_EQUAL",A="FL:::/Kernel/KernelA.HPP,2001"$ -$LK,"AAT_SUB_U8",A="FL:::/Kernel/KernelA.HPP,1880"$ +$LK,"CH_SPACE",A="FL:::/Kernel/KernelA.HPP,3468"$ +$LK,"TK_SUB_EQUAL",A="FL:::/Kernel/KernelA.HPP,2059"$ +$LK,"TK_DIV_EQUAL",A="FL:::/Kernel/KernelA.HPP,2054"$ +$LK,"TK_SHL_EQUAL",A="FL:::/Kernel/KernelA.HPP,2051"$ +$LK,"AAT_SUB_U8",A="FL:::/Kernel/KernelA.HPP,1930"$ $LK,"IET_IMM64_EXPORT",A="FL:::/Kernel/KernelA.HPP,406"$ $LK,"IET_IMM32_EXPORT",A="FL:::/Kernel/KernelA.HPP,404"$ $LK,"sys_gdt",A="FL:::/Kernel/KernelB.HPP,272"$ $LK,"Call",A="FL:::/Kernel/KernelB.HPP,43"$ -$LK,"SYS_FIXED_AREA",A="FL:::/Kernel/KernelA.HPP,3372"$ -$LK,"ICF_CODE_FINAL",A="FL:::/Kernel/KernelA.HPP,1517"$ +$LK,"SYS_FIXED_AREA",A="FL:::/Kernel/KernelA.HPP,3421"$ +$LK,"ICF_CODE_FINAL",A="FL:::/Kernel/KernelA.HPP,1566"$ $LK,"SYS_PROGRESS2_DESC",A="FL:::/Kernel/KStart.CPP.Z,213"$ -$LK,"BlkDevLockFwdingSet",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,1",BI=137$ +$LK,"BlkDevLockFwdingSet",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,1",BI=137$ $LK,"InU8",A="FL:::/Kernel/KernelB.HPP,76"$ -$LK,"ARGT_SREG",A="FL:::/Kernel/KernelA.HPP,1837"$ -$LK,"CMemUnused",A="FL:::/Kernel/KernelA.HPP,2719"$ -$LK,"IEF_48_REX",A="FL:::/Kernel/KernelA.HPP,1647"$ +$LK,"ARGT_SREG",A="FL:::/Kernel/KernelA.HPP,1887"$ +$LK,"CMemUnused",A="FL:::/Kernel/KernelA.HPP,2769"$ +$LK,"IEF_48_REX",A="FL:::/Kernel/KernelA.HPP,1696"$ $LK,"ã",A="FL:::/Kernel/KernelA.HPP,49"$ -$LK,"Suspend",A="FL:::/Kernel/Task.CPP.Z,49",BI=138$ +$LK,"Suspend",A="FL:::/Kernel/KTask.CPP.Z,45",BI=138$ $LK,"ClampU64",A="FL:::/Kernel/KernelB.HPP,126"$ -$LK,"ARC_MAX_BITS",A="FL:::/Kernel/KernelA.HPP,3643"$ +$LK,"ARC_MAX_BITS",A="FL:::/Kernel/KernelA.HPP,3694"$ $LK,"Define",A="FL:::/Kernel/KDefine.CPP.Z,49",BI=139$ -$LK,"CInstruction",A="FL:::/Kernel/KernelA.HPP,1657"$ -$LK,"FAT32Fmt",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,65",BI=140$ -$LK,"SrvCmdLine",A="FL:::/Kernel/Task.CPP.Z,393",BI=141$ +$LK,"CInstruction",A="FL:::/Kernel/KernelA.HPP,1707"$ +$LK,"FAT32Fmt",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,65",BI=140$ +$LK,"SrvCmdLine",A="FL:::/Kernel/KTask.CPP.Z,392",BI=141$ $LK,"HashTableNew",A="FL:::/Kernel/KHashB.CPP.Z,50",BI=142$ -$LK,"DOCT_INDENT",A="FL:::/Kernel/KernelA.HPP,902"$ +$LK,"DOCT_INDENT",A="FL:::/Kernel/KernelA.HPP,905"$ $LK,"_ARG",A="FL:::/Kernel/KMathA.CPP.Z,366"$ -$LK,"COLORROP_NO_ROP0_MASK",A="FL:::/Kernel/KernelA.HPP,2888"$ -$LK,"CDualBuf",A="FL:::/Kernel/Dsk/DskCDDVD.CPP.Z,41"$ +$LK,"COLORROP_NO_ROP0_MASK",A="FL:::/Kernel/KernelA.HPP,2938"$ +$LK,"CDualBuf",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,41"$ $LK,"TaskText",A="FL:::/Kernel/SrvCmd.CPP.Z,74",BI=143$ -$LK,"COLORROP_BITS",A="FL:::/Kernel/KernelA.HPP,2889"$ -$LK,"BROWN",A="FL:::/Kernel/KernelA.HPP,2864"$ +$LK,"COLORROP_BITS",A="FL:::/Kernel/KernelA.HPP,2939"$ +$LK,"BROWN",A="FL:::/Kernel/KernelA.HPP,2914"$ $LK,"Da",A="FL:::/Kernel/KDbg.CPP.Z,209",BI=144$ -$LK,"SUF_REM_TRAILING",A="FL:::/Kernel/KernelA.HPP,3691"$ -$LK,"Cd",A="FL:::/Kernel/Dsk/DskDirB.CPP.Z,1",BI=145$ +$LK,"SUF_REM_TRAILING",A="FL:::/Kernel/KernelA.HPP,3741"$ +$LK,"Cd",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,1",BI=145$ $LK,"Ceil",A="FL:::/Kernel/KernelB.HPP,122"$ -$LK,"DOCEF_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1010"$ -$LK,"CCF_DONT_FREE_BUF",A="FL:::/Kernel/KernelA.HPP,2041"$ +$LK,"DOCEF_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1013"$ +$LK,"CCF_DONT_FREE_BUF",A="FL:::/Kernel/KernelA.HPP,2091"$ $LK,"IET_ZEROED_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,409"$ -$LK,"SrcEdLink",A="FL:::/Kernel/PSect.CPP.Z,241",BI=146$ +$LK,"SrcEdLink",A="FL:::/Kernel/PSect.CPP.Z,238",BI=146$ $LK,"GetRBP",A="FL:::/Kernel/KernelB.HPP,248"$ -$LK,"GREEN",A="FL:::/Kernel/KernelA.HPP,2860"$ +$LK,"GREEN",A="FL:::/Kernel/KernelA.HPP,2910"$ $LK,"ì",A="FL:::/Kernel/KernelA.HPP,47"$ $LK,"ON",A="FL:::/Kernel/KernelA.HPP,20"$ $LK,"_LXCHG_I64",A="FL:::/Kernel/KUtils.CPP.Z,217"$ -$LK,"DOCEt_BLINK",A="FL:::/Kernel/KernelA.HPP,942"$ -$LK,"DOCET_BLINK",A="FL:::/Kernel/KernelA.HPP,936"$ -$LK,"sys_clipboard_doc",A="FL:::/Kernel/KGlbls.CPP.Z,5"$ -$LK,"CCF_NO_DEFINES",A="FL:::/Kernel/KernelA.HPP,2042"$ -$LK,"DOCEf_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1085"$ +$LK,"DOCEt_BLINK",A="FL:::/Kernel/KernelA.HPP,945"$ +$LK,"DOCET_BLINK",A="FL:::/Kernel/KernelA.HPP,939"$ +$LK,"sys_clipboard_doc",A="FL:::/Kernel/KGlbls.CPP.Z,6"$ +$LK,"CCF_NO_DEFINES",A="FL:::/Kernel/KernelA.HPP,2092"$ +$LK,"DOCEf_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1088"$ $LK,"CGDTEntry",A="FL:::/Kernel/KernelA.HPP,328"$ -$LK,"ARGT_XMM0",A="FL:::/Kernel/KernelA.HPP,1857"$ -$LK,"_TASK_END_NOW",A="FL:::/Kernel/Sched.CPP.Z,153"$ -$LK,"HTT_INVALID",A="FL:::/Kernel/KernelA.HPP,673"$ +$LK,"ARGT_XMM0",A="FL:::/Kernel/KernelA.HPP,1907"$ +$LK,"_TASK_END_NOW",A="FL:::/Kernel/Sched.CPP.Z,147"$ +$LK,"HTT_INVALID",A="FL:::/Kernel/KernelA.HPP,675"$ $LK,"_REP_OUT_U8",A="FL:::/Kernel/KUtils.CPP.Z,308"$ $LK,"GetRAX",A="FL:::/Kernel/KernelB.HPP,247"$ $LK,"sys_boot_src",A="FL:::/Kernel/KernelB.HPP,39"$ -$LK,"SCF_DELETE",A="FL:::/Kernel/KernelA.HPP,3450"$ -$LK,"SCf_DELETE",A="FL:::/Kernel/KernelA.HPP,3436"$ -$LK,"ARGT_M32N32",A="FL:::/Kernel/KernelA.HPP,1823"$ -$LK,"ARGT_M16N16",A="FL:::/Kernel/KernelA.HPP,1822"$ -$LK,"ARGT_M16N32",A="FL:::/Kernel/KernelA.HPP,1821"$ -$LK,"ICG_NO_CVT_MASK",A="FL:::/Kernel/KernelA.HPP,1539"$ -$LK,"HTF_PRIVATE",A="FL:::/Kernel/KernelA.HPP,693"$ +$LK,"SCF_DELETE",A="FL:::/Kernel/KernelA.HPP,3500"$ +$LK,"SCf_DELETE",A="FL:::/Kernel/KernelA.HPP,3485"$ +$LK,"ARGT_M32N32",A="FL:::/Kernel/KernelA.HPP,1873"$ +$LK,"ARGT_M16N16",A="FL:::/Kernel/KernelA.HPP,1872"$ +$LK,"ARGT_M16N32",A="FL:::/Kernel/KernelA.HPP,1871"$ +$LK,"SV_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1705"$ +$LK,"ICG_NO_CVT_MASK",A="FL:::/Kernel/KernelA.HPP,1588"$ +$LK,"HTF_PRIVATE",A="FL:::/Kernel/KernelA.HPP,695"$ $LK,"Pow10I64",A="FL:::/Kernel/KMathB.CPP.Z,26",BI=147$ $LK,"ESTIMATED_MISC_ALLOCS",A="FL:::/Kernel/MemA.CPP.Z,126"$ -$LK,"HTf_PRIVATE",A="FL:::/Kernel/KernelA.HPP,663"$ +$LK,"IEF_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1699"$ +$LK,"HTf_PRIVATE",A="FL:::/Kernel/KernelA.HPP,665"$ $LK,"Dm",A="FL:::/Kernel/KDbg.CPP.Z,204",BI=148$ -$LK,"CCF_EXE_BLK",A="FL:::/Kernel/KernelA.HPP,2053"$ +$LK,"CCF_EXE_BLK",A="FL:::/Kernel/KernelA.HPP,2103"$ $LK,"CQueD3I32",A="FL:::/Kernel/KernelA.HPP,130"$ -$LK,"BDf_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2555"$ -$LK,"BDF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2545"$ -$LK,"DEF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2460"$ -$LK,"COLOR_INVALID",A="FL:::/Kernel/KernelA.HPP,2876"$ -$LK,"DftExt",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,185",BI=149$ +$LK,"BDf_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2605"$ +$LK,"BDF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2595"$ +$LK,"DEF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2510"$ +$LK,"COLOR_INVALID",A="FL:::/Kernel/KernelA.HPP,2926"$ +$LK,"DftExt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,185",BI=149$ $LK,"Bt",A="FL:::/Kernel/KernelB.HPP,14"$ -$LK,"OPTf_EXTERNS_TO_IMPORTS",A="FL:::/Kernel/KernelA.HPP,1466"$ +$LK,"OPTf_EXTERNS_TO_IMPORTS",A="FL:::/Kernel/KernelA.HPP,1515"$ $LK,"Dr",A="FL:::/Kernel/KDbg.CPP.Z,328",BI=150$ $LK,"CPUId",A="FL:::/Kernel/KernelB.HPP,258"$ -$LK,"FilesFind2",A="FL:::/Kernel/Dsk/DskFind.CPP.Z,1",BI=151$ -$LK,"scan_code_map",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,156"$ +$LK,"FilesFind2",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,1",BI=151$ +$LK,"scan_code_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,154"$ $LK,"MSize2",A="FL:::/Kernel/MemB.CPP.Z,370"$ -$LK,"REGG_C_TEMP_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1705"$ +$LK,"REGG_C_TEMP_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1755"$ $LK,"MemSetU32",A="FL:::/Kernel/KernelB.HPP,183"$ $LK,"MemSetU16",A="FL:::/Kernel/KernelB.HPP,181"$ -$LK,"DirTreeDel",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,36",BI=152$ -$LK,"Fs",A="FL:::/Kernel/KernelB.HPP,286"$ -$LK,"SCF_CAPS",A="FL:::/Kernel/KernelA.HPP,3444"$ -$LK,"SCf_CAPS",A="FL:::/Kernel/KernelA.HPP,3430"$ -$LK,"SYS_SEMA_FAR_CALL32",A="FL:::/Kernel/KernelA.HPP,598"$ -$LK,"PAGE_BITS",A="FL:::/Kernel/KernelA.HPP,2780"$ +$LK,"DirTreeDel",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,36",BI=152$ +$LK,"Fs",A="FL:::/Kernel/KernelB.HPP,282"$ +$LK,"SCF_CAPS",A="FL:::/Kernel/KernelA.HPP,3494"$ +$LK,"SCf_CAPS",A="FL:::/Kernel/KernelA.HPP,3479"$ +$LK,"SYS_SEMA_FAR_CALL32",A="FL:::/Kernel/KernelA.HPP,599"$ +$LK,"PAGE_BITS",A="FL:::/Kernel/KernelA.HPP,2830"$ +$LK,"ACD_DEF_CHAR",A="FL:::/Kernel/KernelA.HPP,1491"$ $LK,"Gs",A="FL:::/Kernel/KernelB.HPP,240"$ $LK,"SYS_PROGRESS3_DESC",A="FL:::/Kernel/KStart.CPP.Z,216"$ -$LK,"RWF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3499"$ -$LK,"DrvModelNum",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,241",BI=153$ +$LK,"RWF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3550"$ +$LK,"DrvModelNum",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,239",BI=153$ $LK,"RepInU8",A="FL:::/Kernel/KernelB.HPP,85"$ -$LK,"MSG_FOCUS",A="FL:::/Kernel/KernelA.HPP,3137"$ -$LK,"IsSysDbg",A="FL:::/Kernel/KMisc.CPP.Z,243",BI=154$ -$LK,"CDbgGlbls",A="FL:::/Kernel/KernelA.HPP,3767"$ +$LK,"MSG_FOCUS",A="FL:::/Kernel/KernelA.HPP,3188"$ +$LK,"IsSysDbg",A="FL:::/Kernel/KMisc.CPP.Z,238",BI=154$ +$LK,"CDbgGlbls",A="FL:::/Kernel/KernelA.HPP,3818"$ $LK,"_TEST_EXCEPT",A="FL:::/Kernel/KExcept.CPP.Z,4"$ $LK,"_FSTCW",A="FL:::/Kernel/KMathA.CPP.Z,632"$ -$LK,"MSG_IP_R_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3144"$ +$LK,"MSG_IP_R_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3195"$ $LK,"ScanFlags",A="FL:::/Kernel/StrB.CPP.Z,123",BI=155$ $LK,"Ln",A="FL:::/Kernel/KernelB.HPP,135"$ -$LK,"GetS",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,216",BI=156$ +$LK,"INT_WAKE",A="FL:::/Kernel/KInts.CPP.Z,6"$ +$LK,"GetS",A="FL:::/Kernel/SerialDev/Message.CPP.Z,209",BI=156$ $LK,"_MEMSET_U32",A="FL:::/Kernel/KUtils.CPP.Z,29"$ $LK,"_MEMSET_U16",A="FL:::/Kernel/KUtils.CPP.Z,16"$ $LK,"SYS_MP_CNT_LOCK",A="FL:::/Kernel/KStart.CPP.Z,226"$ $LK,"SYS_COMPILE_TIME",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"GetTSC",A="FL:::/Kernel/KernelB.HPP,289"$ +$LK,"GetTSC",A="FL:::/Kernel/KernelB.HPP,285"$ $LK,"BptR",A="FL:::/Kernel/KDbg.CPP.Z,396",BI=157$ $LK,"BptS",A="FL:::/Kernel/KDbg.CPP.Z,375",BI=158$ -$LK,"_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,203"$ +$LK,"_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,158"$ $LK,"_MHEAP_CTRL",A="FL:::/Kernel/MemB.CPP.Z,353"$ -$LK,"ATAMount",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,238",BI=159$ +$LK,"ATAMount",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,234",BI=159$ $LK,"FifoI64Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,290",BI=160$ $LK,"_EXP",A="FL:::/Kernel/KMathA.CPP.Z,558"$ -$LK,"SYS_SEMA_SYS_TIMER",A="FL:::/Kernel/KernelA.HPP,588"$ +$LK,"SYS_SEMA_SYS_TIMER",A="FL:::/Kernel/KernelA.HPP,589"$ $LK,"IET_END",A="FL:::/Kernel/KernelA.HPP,390"$ -$LK,"KbdHandler",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,424",BI=161$ -$LK,"GSF_WITH_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,3685"$ +$LK,"KbdHandler",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,437",BI=161$ +$LK,"GSF_WITH_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,3735"$ $LK,"SPF_TRUNCATE",A="FL:::/Kernel/StrPrint.CPP.Z,3"$ -$LK,"SYS_HASH_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,126"$ +$LK,"SYS_HASH_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,81"$ $LK,"GetRSP",A="FL:::/Kernel/KernelB.HPP,250"$ $LK,"_D3_DIST",A="FL:::/Kernel/KMathA.CPP.Z,39"$ -$LK,"ScanKey",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,127",BI=162$ -$LK,"MouseDriverInstall",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,238",BI=163$ -$LK,"mouse_last",A="FL:::/Kernel/KGlbls.CPP.Z,20"$ +$LK,"ScanKey",A="FL:::/Kernel/SerialDev/Message.CPP.Z,123",BI=162$ +$LK,"MouseDriverInstall",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,238",BI=163$ +$LK,"mouse_last",A="FL:::/Kernel/KGlbls.CPP.Z,27"$ $LK,"D3DistSqr",A="FL:::/Kernel/KernelB.HPP,157"$ -$LK,"_RDI",A="FL:::/Kernel/KernelA.HPP,3328"$ -$LK,"SV_R_REG",A="FL:::/Kernel/KernelA.HPP,1654"$ -$LK,"TY_IMM",A="FL:::/Kernel/KernelA.HPP,1497"$ -$LK,"ATARepExitAllApplications",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,119",BI=164$ +$LK,"_RDI",A="FL:::/Kernel/KernelA.HPP,3377"$ +$LK,"SV_R_REG",A="FL:::/Kernel/KernelA.HPP,1703"$ +$LK,"TY_IMM",A="FL:::/Kernel/KernelA.HPP,1546"$ +$LK,"ATARepExitAllApplications",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,119",BI=164$ $LK,"CeilI64",A="FL:::/Kernel/KMathB.CPP.Z,62",BI=165$ -$LK,"_RBP",A="FL:::/Kernel/KernelA.HPP,3329"$ -$LK,"CCacheBlk",A="FL:::/Kernel/KernelA.HPP,2650"$ -$LK,"OPTf_WARN_DUP_TYPES",A="FL:::/Kernel/KernelA.HPP,1465"$ -$LK,"ATAProbe",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,373",BI=166$ +$LK,"_RBP",A="FL:::/Kernel/KernelA.HPP,3378"$ +$LK,"CCacheBlk",A="FL:::/Kernel/KernelA.HPP,2700"$ +$LK,"OPTf_WARN_DUP_TYPES",A="FL:::/Kernel/KernelA.HPP,1514"$ +$LK,"ATAProbe",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,373",BI=166$ $LK,"_LXCHG_U16",A="FL:::/Kernel/KUtils.CPP.Z,235"$ $LK,"_LXCHG_U32",A="FL:::/Kernel/KUtils.CPP.Z,226"$ $LK,"SYS_PROGRESS1",A="FL:::/Kernel/KStart.CPP.Z,208"$ -$LK,"DOCT_FOOTER",A="FL:::/Kernel/KernelA.HPP,901"$ +$LK,"DOCT_FOOTER",A="FL:::/Kernel/KernelA.HPP,904"$ $LK,"MEM_NUM_E820_ENTRIES",A="FL:::/Kernel/KernelA.HPP,354"$ $LK,"MPAPICInit",A="FL:::/Kernel/MultiProc.CPP.Z,188",BI=167$ -$LK,"KbdIntHandler",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,394",BI=168$ $LK,"SYS_PROGRESS2",A="FL:::/Kernel/KStart.CPP.Z,211"$ -$LK,"DOCEf_SKIP",A="FL:::/Kernel/KernelA.HPP,1083"$ -$LK,"DOCEF_SKIP",A="FL:::/Kernel/KernelA.HPP,1008"$ +$LK,"DOCEf_SKIP",A="FL:::/Kernel/KernelA.HPP,1086"$ +$LK,"DOCEF_SKIP",A="FL:::/Kernel/KernelA.HPP,1011"$ $LK,"SPF_COMMA",A="FL:::/Kernel/StrPrint.CPP.Z,4"$ $LK,"SYS_PROGRESS3",A="FL:::/Kernel/KStart.CPP.Z,214"$ -$LK,"CSrvCtrl",A="FL:::/Kernel/KernelA.HPP,3115"$ -$LK,"DirNew",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,1",BI=169$ +$LK,"CSrvCtrl",A="FL:::/Kernel/KernelA.HPP,3166"$ +$LK,"DirNew",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,1",BI=168$ $LK,"SYS_PROGRESS4",A="FL:::/Kernel/KStart.CPP.Z,217"$ -$LK,"_RAX",A="FL:::/Kernel/KernelA.HPP,3323"$ -$LK,"FAT32DirNew",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,581",BI=170$ -$LK,"HTf_RESOLVED",A="FL:::/Kernel/KernelA.HPP,669"$ -$LK,"LinkedLstDel",A="FL:::/Kernel/KDataTypes.CPP.Z,1",BI=171$ -$LK,"Help",A="FL:::/Kernel/StrB.CPP.Z,115",BI=172$ +$LK,"_RAX",A="FL:::/Kernel/KernelA.HPP,3372"$ +$LK,"FAT32DirNew",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,581",BI=169$ +$LK,"HTf_RESOLVED",A="FL:::/Kernel/KernelA.HPP,671"$ +$LK,"LinkedLstDel",A="FL:::/Kernel/KDataTypes.CPP.Z,1",BI=170$ +$LK,"Help",A="FL:::/Kernel/StrB.CPP.Z,115",BI=171$ $LK,"Log2",A="FL:::/Kernel/KernelB.HPP,137"$ -$LK,"_RBX",A="FL:::/Kernel/KernelA.HPP,3324"$ -$LK,"DOCT_HEX_ED",A="FL:::/Kernel/KernelA.HPP,923"$ -$LK,"DOCT_LINK",A="FL:::/Kernel/KernelA.HPP,916"$ +$LK,"_RBX",A="FL:::/Kernel/KernelA.HPP,3373"$ +$LK,"DOCT_HEX_ED",A="FL:::/Kernel/KernelA.HPP,926"$ +$LK,"DOCT_LINK",A="FL:::/Kernel/KernelA.HPP,919"$ $LK,"_D3_COPY",A="FL:::/Kernel/KMathA.CPP.Z,212"$ $LK,"PUT_STR",A="FL:::/Kernel/StrA.CPP.Z,58"$ $LK,"_RET",A="FL:::/Kernel/KUtils.CPP.Z,457"$ -$LK,"_RCX",A="FL:::/Kernel/KernelA.HPP,3325"$ -$LK,"BIOSTotalMem",A="FL:::/Kernel/MemC.CPP.Z,243",BI=173$ -$LK,"_RDX",A="FL:::/Kernel/KernelA.HPP,3326"$ +$LK,"_RCX",A="FL:::/Kernel/KernelA.HPP,3374"$ +$LK,"BIOSTotalMem",A="FL:::/Kernel/MemC.CPP.Z,243",BI=172$ +$LK,"_RDX",A="FL:::/Kernel/KernelA.HPP,3375"$ $LK,"RLF_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,458"$ $LK,"RLf_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,440"$ -$LK,"ScanMsg",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,39",BI=174$ +$LK,"ScanMsg",A="FL:::/Kernel/SerialDev/Message.CPP.Z,37",BI=173$ $LK,"SYS_PROGRESS4_DESC",A="FL:::/Kernel/KStart.CPP.Z,219"$ -$LK,"__FILE__",A="FL:::/Kernel/KernelA.HPP,1941"$ -$LK,"TY_REG",A="FL:::/Kernel/KernelA.HPP,1498"$ +$LK,"__FILE__",A="FL:::/Kernel/KernelA.HPP,1991"$ +$LK,"TY_REG",A="FL:::/Kernel/KernelA.HPP,1547"$ $LK,"CDate",A="FL:::/Kernel/KernelA.HPP,184"$ $LK,"CLFlush",A="FL:::/Kernel/KernelB.HPP,275"$ $LK,"SYS_HEAP_DBG_FLAG",A="FL:::/Kernel/KStart.CPP.Z,199"$ -$LK,"_RIP",A="FL:::/Kernel/KernelA.HPP,3331"$ -$LK,"IEF_REX_ONLY_R8_R15",A="FL:::/Kernel/KernelA.HPP,1648"$ -$LK,"DOCSS_SINGLE_QUOTE",A="FL:::/Kernel/KernelA.HPP,1107"$ -$LK,"KBD_PORT",A="FL:::/Kernel/KernelA.HPP,2900"$ -$LK,"NUM_COLORS",A="FL:::/Kernel/KernelA.HPP,2875"$ +$LK,"_RIP",A="FL:::/Kernel/KernelA.HPP,3380"$ +$LK,"IEF_REX_ONLY_R8_R15",A="FL:::/Kernel/KernelA.HPP,1697"$ +$LK,"DOCSS_SINGLE_QUOTE",A="FL:::/Kernel/KernelA.HPP,1110"$ +$LK,"KBD_PORT",A="FL:::/Kernel/KernelA.HPP,2950"$ +$LK,"NUM_COLORS",A="FL:::/Kernel/KernelA.HPP,2925"$ +$LK,"ac",A="FL:::/Kernel/KGlbls.CPP.Z,18"$ $LK,"_FSTSW",A="FL:::/Kernel/KMathA.CPP.Z,641"$ -$LK,"ARGT_IMM32",A="FL:::/Kernel/KernelA.HPP,1797"$ -$LK,"ARGT_IMM16",A="FL:::/Kernel/KernelA.HPP,1796"$ -$LK,"BSPInit",A="FL:::/Kernel/MultiProc.CPP.Z,373",BI=175$ -$LK,"MouseSpeedSet",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,130",BI=176$ -$LK,"Name2ParentDirCluster",A="FL:::/Kernel/Dsk/DskStrB.CPP.Z,54",BI=177$ +$LK,"ARGT_IMM32",A="FL:::/Kernel/KernelA.HPP,1847"$ +$LK,"ARGT_IMM16",A="FL:::/Kernel/KernelA.HPP,1846"$ +$LK,"BSPInit",A="FL:::/Kernel/MultiProc.CPP.Z,373",BI=174$ +$LK,"MouseSpeedSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,130",BI=175$ +$LK,"Name2ParentDirCluster",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,54",BI=176$ $LK,"Free",A="FL:::/Kernel/MemB.CPP.Z,368"$ -$LK,"DOCEf_AUX_STR",A="FL:::/Kernel/KernelA.HPP,1035"$ -$LK,"DOCEF_AUX_STR",A="FL:::/Kernel/KernelA.HPP,955"$ -$LK,"Char2KeyName",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,200",BI=178$ -$LK,"Mem512Free",A="FL:::/Kernel/MemA.CPP.Z,266",BI=179$ -$LK,"TK_NUM_TK",A="FL:::/Kernel/KernelA.HPP,2022"$ -$LK,"TY_SIB",A="FL:::/Kernel/KernelA.HPP,1500"$ -$LK,"CWinMgrGlbls",A="FL:::/Kernel/KernelA.HPP,1439"$ -$LK,"DOCEf_TREE",A="FL:::/Kernel/KernelA.HPP,1081"$ -$LK,"DOCEF_TREE",A="FL:::/Kernel/KernelA.HPP,1006"$ -$LK,"MouseUpdatePre",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,140",BI=180$ -$LK,"ISO1FileFind",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,130",BI=181$ -$LK,"TASK_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3211"$ -$LK,"SysDefinesLoad",A="FL:::/Kernel/KDefine.CPP.Z,97",BI=182$ -$LK,"Mem512TaskAlloc",A="FL:::/Kernel/MemA.CPP.Z,478",BI=183$ -$LK,"MEM_MAPPED_SPACE",A="FL:::/Kernel/KernelA.HPP,3365"$ +$LK,"DOCEf_AUX_STR",A="FL:::/Kernel/KernelA.HPP,1038"$ +$LK,"DOCEF_AUX_STR",A="FL:::/Kernel/KernelA.HPP,958"$ +$LK,"Char2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,198",BI=177$ +$LK,"blkdev",A="FL:::/Kernel/KGlbls.CPP.Z,19"$ +$LK,"Mem512Free",A="FL:::/Kernel/MemA.CPP.Z,266",BI=178$ +$LK,"TK_NUM_TK",A="FL:::/Kernel/KernelA.HPP,2072"$ +$LK,"TY_SIB",A="FL:::/Kernel/KernelA.HPP,1549"$ +$LK,"CWinMgrGlbls",A="FL:::/Kernel/KernelA.HPP,1443"$ +$LK,"DOCEf_TREE",A="FL:::/Kernel/KernelA.HPP,1084"$ +$LK,"DOCEF_TREE",A="FL:::/Kernel/KernelA.HPP,1009"$ +$LK,"MouseUpdatePre",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,140",BI=179$ +$LK,"ISO1FileFind",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,130",BI=180$ +$LK,"TASK_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3259"$ +$LK,"SysDefinesLoad",A="FL:::/Kernel/KDefine.CPP.Z,97",BI=181$ +$LK,"Mem512TaskAlloc",A="FL:::/Kernel/MemA.CPP.Z,478",BI=182$ +$LK,"MEM_MAPPED_SPACE",A="FL:::/Kernel/KernelA.HPP,3414"$ $LK,"D3Norm",A="FL:::/Kernel/KernelB.HPP,164"$ $LK,"_POW",A="FL:::/Kernel/KMathA.CPP.Z,515"$ -$LK,"MSG_KEY_DOWN",A="FL:::/Kernel/KernelA.HPP,3126"$ -$LK,"ARGT_IMM64",A="FL:::/Kernel/KernelA.HPP,1798"$ -$LK,"DOCT_BUTTON",A="FL:::/Kernel/KernelA.HPP,917"$ +$LK,"MSG_KEY_DOWN",A="FL:::/Kernel/KernelA.HPP,3177"$ +$LK,"ARGT_IMM64",A="FL:::/Kernel/KernelA.HPP,1848"$ +$LK,"DOCT_BUTTON",A="FL:::/Kernel/KernelA.HPP,920"$ $LK,"PUT_HEX_U8",A="FL:::/Kernel/StrA.CPP.Z,44"$ -$LK,"_RSI",A="FL:::/Kernel/KernelA.HPP,3327"$ -$LK,"CTRLF_CAPTURE_RIGHT_IP",A="FL:::/Kernel/KernelA.HPP,2994"$ -$LK,"CPUStructInit",A="FL:::/Kernel/MultiProc.CPP.Z,116",BI=184$ -$LK,"WIf_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1426"$ -$LK,"WIF_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1402"$ -$LK,"CIntermediateCode",A="FL:::/Kernel/KernelA.HPP,1568"$ -$LK,"DOC_COLOR_ANCHOR",A="FL:::/Kernel/KernelA.HPP,1119"$ -$LK,"Str2ColorU32",A="FL:::/Kernel/KDefine.CPP.Z,201",BI=185$ -$LK,"Str2ColorU16",A="FL:::/Kernel/KDefine.CPP.Z,157",BI=186$ -$LK,"LinkedLstCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,21",BI=187$ -$LK,"Auto",A="FL:::/Kernel/SrvCmd.CPP.Z,496",BI=188$ -$LK,"CTRLT_VIEWING_ANGLES",A="FL:::/Kernel/KernelA.HPP,2989"$ -$LK,"FREE_PAGE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2784"$ -$LK,"DOCEf_QUIT",A="FL:::/Kernel/KernelA.HPP,1068"$ -$LK,"DOCEF_QUIT",A="FL:::/Kernel/KernelA.HPP,993"$ -$LK,"Tabs2Spaces",A="FL:::/Kernel/StrB.CPP.Z,1",BI=189$ +$LK,"_RSI",A="FL:::/Kernel/KernelA.HPP,3376"$ +$LK,"CTRLF_CAPTURE_RIGHT_IP",A="FL:::/Kernel/KernelA.HPP,3045"$ +$LK,"CPUStructInit",A="FL:::/Kernel/MultiProc.CPP.Z,116",BI=183$ +$LK,"WIf_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1430"$ +$LK,"WIF_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1405"$ +$LK,"CIntermediateCode",A="FL:::/Kernel/KernelA.HPP,1617"$ +$LK,"DOC_COLOR_ANCHOR",A="FL:::/Kernel/KernelA.HPP,1122"$ +$LK,"Str2ColorU32",A="FL:::/Kernel/KDefine.CPP.Z,201",BI=184$ +$LK,"Str2ColorU16",A="FL:::/Kernel/KDefine.CPP.Z,157",BI=185$ +$LK,"LinkedLstCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,21",BI=186$ +$LK,"Auto",A="FL:::/Kernel/SrvCmd.CPP.Z,485",BI=187$ +$LK,"CTRLT_VIEWING_ANGLES",A="FL:::/Kernel/KernelA.HPP,3040"$ +$LK,"FREE_PAGE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2834"$ +$LK,"DOCEf_QUIT",A="FL:::/Kernel/KernelA.HPP,1071"$ +$LK,"DOCEF_QUIT",A="FL:::/Kernel/KernelA.HPP,996"$ +$LK,"Tabs2Spaces",A="FL:::/Kernel/StrB.CPP.Z,1",BI=188$ $LK,"MaxI64",A="FL:::/Kernel/KernelB.HPP,98"$ $LK,"SYS_GDT_PTR",A="FL:::/Kernel/KStart.CPP.Z,49"$ -$LK,"_RSP",A="FL:::/Kernel/KernelA.HPP,3330"$ -$LK,"FSetCluster",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,99",BI=190$ -$LK,"WinDerivedValsUpdate",A="FL:::/Kernel/Display.CPP.Z,99",BI=191$ -$LK,"HeapsInit",A="FL:::/Kernel/MemC.CPP.Z,261",BI=192$ -$LK,"fp_update_ctrls",A="FL:::/Kernel/KGlbls.CPP.Z,29"$ -$LK,"DSK_CACHE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2648"$ -$LK,"RS_ATTR_VOL_ID",A="FL:::/Kernel/KernelA.HPP,2440"$ -$LK,"DOCf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1298"$ -$LK,"DOCF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1262"$ -$LK,"DOCT_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,909"$ +$LK,"_RSP",A="FL:::/Kernel/KernelA.HPP,3379"$ +$LK,"FSetCluster",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,99",BI=189$ +$LK,"WinDerivedValsUpdate",A="FL:::/Kernel/Display.CPP.Z,93",BI=190$ +$LK,"HeapsInit",A="FL:::/Kernel/MemC.CPP.Z,261",BI=191$ +$LK,"fp_update_ctrls",A="FL:::/Kernel/KGlbls.CPP.Z,32"$ +$LK,"DSK_CACHE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2698"$ +$LK,"RS_ATTR_VOL_ID",A="FL:::/Kernel/KernelA.HPP,2490"$ +$LK,"DOCf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1301"$ +$LK,"DOCF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1265"$ +$LK,"DOCT_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,912"$ +$LK,"IntDivZero",A="FL:::/Kernel/KInts.CPP.Z,142",BI=192$ $LK,"_SQR",A="FL:::/Kernel/KMathA.CPP.Z,337"$ -$LK,"DISPLAYf_SILENT",A="FL:::/Kernel/KernelA.HPP,3206"$ -$LK,"REGT_R32",A="FL:::/Kernel/KernelA.HPP,732"$ -$LK,"REGT_R16",A="FL:::/Kernel/KernelA.HPP,731"$ -$LK,"IEF_NOT_IN_64_BIT",A="FL:::/Kernel/KernelA.HPP,1646"$ -$LK,"RedSeaFileFind",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,157",BI=193$ +$LK,"DISPLAYf_SILENT",A="FL:::/Kernel/KernelA.HPP,3254"$ +$LK,"REGT_R32",A="FL:::/Kernel/KernelA.HPP,734"$ +$LK,"REGT_R16",A="FL:::/Kernel/KernelA.HPP,733"$ +$LK,"IEF_NOT_IN_64_BIT",A="FL:::/Kernel/KernelA.HPP,1695"$ +$LK,"RedSeaFileFind",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,157",BI=193$ $LK,"SYS_PCIBIOS_SERVICE_DIR",A="FL:::/Kernel/PCIBIOS.CPP.Z,4"$ -$LK,"MouseIntHandler",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,13",BI=194$ -$LK,"tS",A="FL:::/Kernel/KMisc.CPP.Z,122",BI=195$ +$LK,"tS",A="FL:::/Kernel/KMisc.CPP.Z,122",BI=194$ $LK,"LBEqu",A="FL:::/Kernel/KernelB.HPP,34"$ -$LK,"ArcDetermineCompressionType",A="FL:::/Kernel/Compress.CPP.Z,102",BI=196$ -$LK,"SYS_SEMA_REFRESH_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,594"$ -$LK,"IntInit1",A="FL:::/Kernel/Ints.CPP.Z,160",BI=197$ -$LK,"CH_CURSOR",A="FL:::/Kernel/KernelA.HPP,3413"$ -$LK,"IntInit2",A="FL:::/Kernel/Ints.CPP.Z,175",BI=198$ -$LK,"DOCT_CURSOR",A="FL:::/Kernel/KernelA.HPP,893"$ -$LK,"GetKey",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,146",BI=199$ -$LK,"ROP_MONO",A="FL:::/Kernel/KernelA.HPP,2845"$ -$LK,"CFAT32DirEntryLong",A="FL:::/Kernel/KernelA.HPP,2307"$ -$LK,"Kill",A="FL:::/Kernel/Task.CPP.Z,28",BI=200$ -$LK,"RS_ATTR_FIXED",A="FL:::/Kernel/KernelA.HPP,2450"$ -$LK,"TK_IFDEF",A="FL:::/Kernel/KernelA.HPP,2011"$ -$LK,"REGT_R64",A="FL:::/Kernel/KernelA.HPP,733"$ -$LK,"SingleUser",A="FL:::/Kernel/KMisc.CPP.Z,260",BI=201$ -$LK,"IsPreempt",A="FL:::/Kernel/KMisc.CPP.Z,233",BI=202$ -$LK,"Date2Struct",A="FL:::/Kernel/Date.CPP.Z,39",BI=203$ -$LK,"CFile",A="FL:::/Kernel/KernelA.HPP,2690"$ -$LK,"Fault2",A="FL:::/Kernel/KDbg.CPP.Z,599",BI=204$ -$LK,"Load",A="FL:::/Kernel/KLoad.CPP.Z,181",BI=205$ -$LK,"ip",A="FL:::/Kernel/KGlbls.CPP.Z,18"$ -$LK,"CFreeLst",A="FL:::/Kernel/KernelA.HPP,2613"$ -$LK,"DOCEF_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,998"$ -$LK,"CHash",A="FL:::/Kernel/KernelA.HPP,615"$ -$LK,"RedSeaFreeClusters",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,252",BI=206$ -$LK,"Fault3",A="FL:::/Kernel/KDbg.CPP.Z,566",BI=207$ -$LK,"CompressBuf",A="FL:::/Kernel/Compress.CPP.Z,281",BI=208$ +$LK,"ArcDetermineCompressionType",A="FL:::/Kernel/Compress.CPP.Z,102",BI=195$ +$LK,"SYS_SEMA_REFRESH_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,595"$ +$LK,"IntInit1",A="FL:::/Kernel/KInts.CPP.Z,172",BI=196$ +$LK,"CH_CURSOR",A="FL:::/Kernel/KernelA.HPP,3462"$ +$LK,"IntInit2",A="FL:::/Kernel/KInts.CPP.Z,187",BI=197$ +$LK,"DOCT_CURSOR",A="FL:::/Kernel/KernelA.HPP,896"$ +$LK,"GetKey",A="FL:::/Kernel/SerialDev/Message.CPP.Z,142",BI=198$ +$LK,"ROP_MONO",A="FL:::/Kernel/KernelA.HPP,2895"$ +$LK,"CFAT32DirEntryLong",A="FL:::/Kernel/KernelA.HPP,2357"$ +$LK,"Kill",A="FL:::/Kernel/KTask.CPP.Z,28",BI=199$ +$LK,"RS_ATTR_FIXED",A="FL:::/Kernel/KernelA.HPP,2500"$ +$LK,"TK_IFDEF",A="FL:::/Kernel/KernelA.HPP,2061"$ +$LK,"REGT_R64",A="FL:::/Kernel/KernelA.HPP,735"$ +$LK,"SingleUser",A="FL:::/Kernel/KMisc.CPP.Z,255",BI=200$ +$LK,"Date2Struct",A="FL:::/Kernel/KDate.CPP.Z,39",BI=201$ +$LK,"CFile",A="FL:::/Kernel/KernelA.HPP,2740"$ +$LK,"Fault2",A="FL:::/Kernel/KDbg.CPP.Z,600",BI=202$ +$LK,"Load",A="FL:::/Kernel/KLoad.CPP.Z,181",BI=203$ +$LK,"ip",A="FL:::/Kernel/KGlbls.CPP.Z,24"$ +$LK,"CFreeLst",A="FL:::/Kernel/KernelA.HPP,2663"$ +$LK,"DOCEF_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1001"$ +$LK,"CHash",A="FL:::/Kernel/KernelA.HPP,617"$ +$LK,"RedSeaFreeClusters",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,252",BI=204$ +$LK,"Fault3",A="FL:::/Kernel/KDbg.CPP.Z,566",BI=205$ +$LK,"CompressBuf",A="FL:::/Kernel/Compress.CPP.Z,281",BI=206$ $LK,"chars_bmp_hex_numeric",A="FL:::/Kernel/StrA.CPP.Z,353"$ -$LK,"CCF_NOT_CONST",A="FL:::/Kernel/KernelA.HPP,2050"$ -$LK,"CeilU64",A="FL:::/Kernel/KMathB.CPP.Z,41",BI=209$ -$LK,"BPlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2794"$ -$LK,"BDlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2566"$ +$LK,"CCF_NOT_CONST",A="FL:::/Kernel/KernelA.HPP,2100"$ +$LK,"CeilU64",A="FL:::/Kernel/KMathB.CPP.Z,41",BI=207$ +$LK,"BPlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2844"$ +$LK,"BDlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2616"$ $LK,"sys_neg_pows_lst",A="FL:::/Kernel/StrPrint.CPP.Z,213"$ $LK,"sys_pos_pows_lst",A="FL:::/Kernel/StrPrint.CPP.Z,212"$ -$LK,"MStrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,906",BI=210$ -$LK,"DVlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2588"$ -$LK,"SrcFileName",A="FL:::/Kernel/PSect.CPP.Z,202",BI=211$ -$LK,"OverRideSingleUserSwap",A="FL:::/Kernel/KDbg.CPP.Z,337",BI=212$ -$LK,"RawD",A="FL:::/Kernel/KDbg.CPP.Z,234",BI=213$ -$LK,"IsSingleUser",A="FL:::/Kernel/KMisc.CPP.Z,265",BI=214$ -$LK,"adam_task",A="FL:::/Kernel/KGlbls.CPP.Z,7"$ +$LK,"MStrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,906",BI=208$ +$LK,"DVlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2638"$ +$LK,"SrcFileName",A="FL:::/Kernel/PSect.CPP.Z,199",BI=209$ +$LK,"OverRideSingleUserSwap",A="FL:::/Kernel/KDbg.CPP.Z,337",BI=210$ +$LK,"RawD",A="FL:::/Kernel/KDbg.CPP.Z,234",BI=211$ +$LK,"IsSingleUser",A="FL:::/Kernel/KMisc.CPP.Z,260",BI=212$ +$LK,"adam_task",A="FL:::/Kernel/KGlbls.CPP.Z,8"$ $LK,"_POW10",A="FL:::/Kernel/KMathA.CPP.Z,524"$ -$LK,"SVCRf_LOCKED",A="FL:::/Kernel/KernelA.HPP,3114"$ -$LK,"BDF_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2549"$ -$LK,"TY_STK",A="FL:::/Kernel/KernelA.HPP,1504"$ -$LK,"DOCT_CURSOR_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,914"$ -$LK,"SCF_CTRL",A="FL:::/Kernel/KernelA.HPP,3442"$ -$LK,"SCf_CTRL",A="FL:::/Kernel/KernelA.HPP,3428"$ -$LK,"TK_ENDIF",A="FL:::/Kernel/KernelA.HPP,2015"$ -$LK,"RT_UF32",A="FL:::/Kernel/KernelA.HPP,1490"$ -$LK,"CCF_NO_REG_OPT",A="FL:::/Kernel/KernelA.HPP,2051"$ -$LK,"DOCEf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1031"$ -$LK,"DOCEF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1025"$ -$LK,"DOCEt_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,945"$ -$LK,"DOCET_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,939"$ +$LK,"SVCRf_LOCKED",A="FL:::/Kernel/KernelA.HPP,3165"$ +$LK,"BDF_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2599"$ +$LK,"TY_STK",A="FL:::/Kernel/KernelA.HPP,1553"$ +$LK,"DOCT_CURSOR_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,917"$ +$LK,"SCF_CTRL",A="FL:::/Kernel/KernelA.HPP,3492"$ +$LK,"SCf_CTRL",A="FL:::/Kernel/KernelA.HPP,3477"$ +$LK,"TK_ENDIF",A="FL:::/Kernel/KernelA.HPP,2065"$ +$LK,"RT_UF32",A="FL:::/Kernel/KernelA.HPP,1539"$ +$LK,"CCF_NO_REG_OPT",A="FL:::/Kernel/KernelA.HPP,2101"$ +$LK,"DOCEf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1034"$ +$LK,"DOCEF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1028"$ +$LK,"DOCEt_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,948"$ +$LK,"DOCET_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,942"$ $LK,"RLf_DOC",A="FL:::/Kernel/KernelA.HPP,446"$ $LK,"pi",A="FL:::/Kernel/KernelA.HPP,48"$ -$LK,"ICF_ALTERNATE_TEMPLATE",A="FL:::/Kernel/KernelA.HPP,1532"$ -$LK,"ATTRF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,882"$ -$LK,"ATTRf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,887"$ -$LK,"KbdMouseVarsInit",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,297",BI=215$ -$LK,"DOCF_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1251"$ -$LK,"RT_MASK",A="FL:::/Kernel/KernelA.HPP,1494"$ -$LK,"SYS_SEMA_UPDATE_WIN_Z_BUF",A="FL:::/Kernel/KernelA.HPP,601"$ -$LK,"Exit",A="FL:::/Kernel/Task.CPP.Z,1",BI=216$ -$LK,"TASKf_BREAK_TO_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3198"$ -$LK,"HTT_KEYWORD",A="FL:::/Kernel/KernelA.HPP,683"$ -$LK,"CopySingleZ",A="FL:::/Kernel/Dsk/DskCopy.CPP.Z,1",BI=217$ -$LK,"DCF_NO_TRANSPARENTS",A="FL:::/Kernel/KernelA.HPP,3525"$ -$LK,"HTt_KEYWORD",A="FL:::/Kernel/KernelA.HPP,653"$ -$LK,"SYS_SEMA_IN_DEBUGGER",A="FL:::/Kernel/KernelA.HPP,590"$ -$LK,"RT_UF64",A="FL:::/Kernel/KernelA.HPP,1492"$ -$LK,"DOCf_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1286"$ -$LK,"GetMsg",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,97",BI=218$ -$LK,"CMPCrash",A="FL:::/Kernel/KernelA.HPP,3759"$ -$LK,"MEM_NUM_PML1",A="FL:::/Kernel/KernelA.HPP,3366"$ -$LK,"ROPBF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2837"$ -$LK,"MEM_NUM_PML2",A="FL:::/Kernel/KernelA.HPP,3367"$ -$LK,"ICF_SHORT_JMP",A="FL:::/Kernel/KernelA.HPP,1519"$ +$LK,"ICF_ALTERNATE_TEMPLATE",A="FL:::/Kernel/KernelA.HPP,1581"$ +$LK,"ATTRF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,885"$ +$LK,"ATTRf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,890"$ +$LK,"KbdMouseVarsInit",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,294",BI=213$ +$LK,"DOCF_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1254"$ +$LK,"RT_MASK",A="FL:::/Kernel/KernelA.HPP,1543"$ +$LK,"SYS_SEMA_UPDATE_WIN_Z_BUF",A="FL:::/Kernel/KernelA.HPP,602"$ +$LK,"Exit",A="FL:::/Kernel/KTask.CPP.Z,1",BI=214$ +$LK,"TASKf_BREAK_TO_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3246"$ +$LK,"HTT_KEYWORD",A="FL:::/Kernel/KernelA.HPP,685"$ +$LK,"CopySingleZ",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,1",BI=215$ +$LK,"DCF_NO_TRANSPARENTS",A="FL:::/Kernel/KernelA.HPP,3576"$ +$LK,"HTt_KEYWORD",A="FL:::/Kernel/KernelA.HPP,655"$ +$LK,"SYS_SEMA_IN_DEBUGGER",A="FL:::/Kernel/KernelA.HPP,591"$ +$LK,"RT_UF64",A="FL:::/Kernel/KernelA.HPP,1541"$ +$LK,"DOCf_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1289"$ +$LK,"GetMsg",A="FL:::/Kernel/SerialDev/Message.CPP.Z,95",BI=216$ +$LK,"CMPCrash",A="FL:::/Kernel/KernelA.HPP,3809"$ +$LK,"MEM_NUM_PML1",A="FL:::/Kernel/KernelA.HPP,3415"$ +$LK,"ROPBF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2887"$ +$LK,"MEM_NUM_PML2",A="FL:::/Kernel/KernelA.HPP,3416"$ +$LK,"ICF_SHORT_JMP",A="FL:::/Kernel/KernelA.HPP,1568"$ $LK,"IA32_FS_BASE",A="FL:::/Kernel/KernelA.HPP,516"$ -$LK,"Rand",A="FL:::/Kernel/KMathB.CPP.Z,128",BI=219$ -$LK,"MEM_NUM_PML3",A="FL:::/Kernel/KernelA.HPP,3368"$ -$LK,"FAT32_ENTRIES_BITS",A="FL:::/Kernel/KernelA.HPP,2320"$ -$LK,"TK_IDENT",A="FL:::/Kernel/KernelA.HPP,1983"$ -$LK,"ArcCompressBuf",A="FL:::/Kernel/Compress.CPP.Z,110",BI=220$ -$LK,"MEM_NUM_PML4",A="FL:::/Kernel/KernelA.HPP,3369"$ -$LK,"ToFileLine",A="FL:::/Kernel/EdLite.CPP.Z,303",BI=221$ +$LK,"Rand",A="FL:::/Kernel/KMathB.CPP.Z,128",BI=217$ +$LK,"MEM_NUM_PML3",A="FL:::/Kernel/KernelA.HPP,3417"$ +$LK,"FAT32_ENTRIES_BITS",A="FL:::/Kernel/KernelA.HPP,2370"$ +$LK,"TK_IDENT",A="FL:::/Kernel/KernelA.HPP,2033"$ +$LK,"ArcCompressBuf",A="FL:::/Kernel/Compress.CPP.Z,110",BI=218$ +$LK,"MEM_NUM_PML4",A="FL:::/Kernel/KernelA.HPP,3418"$ +$LK,"ToFileLine",A="FL:::/Kernel/EdLite.CPP.Z,303",BI=219$ $LK,"D3Unit",A="FL:::/Kernel/KernelB.HPP,168"$ -$LK,"CTRLT_WIN_HSCROLL",A="FL:::/Kernel/KernelA.HPP,2987"$ -$LK,"TK_IFAOT",A="FL:::/Kernel/KernelA.HPP,2013"$ -$LK,"IsDotC",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,31",BI=222$ -$LK,"BDf_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2559"$ -$LK,"CICArg",A="FL:::/Kernel/KernelA.HPP,1545"$ -$LK,"DOCEf_CENTER_X",A="FL:::/Kernel/KernelA.HPP,1057"$ -$LK,"DOCEF_CENTER_X",A="FL:::/Kernel/KernelA.HPP,982"$ +$LK,"CTRLT_WIN_HSCROLL",A="FL:::/Kernel/KernelA.HPP,3038"$ +$LK,"TK_IFAOT",A="FL:::/Kernel/KernelA.HPP,2063"$ +$LK,"IsDotC",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,31",BI=220$ +$LK,"BDf_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2609"$ +$LK,"CICArg",A="FL:::/Kernel/KernelA.HPP,1594"$ +$LK,"DOCEf_CENTER_X",A="FL:::/Kernel/KernelA.HPP,1060"$ +$LK,"DOCEF_CENTER_X",A="FL:::/Kernel/KernelA.HPP,985"$ $LK,"SYS_TIMER_FREQ",A="FL:::/Kernel/KernelA.HPP,546"$ -$LK,"HashTablePurge",A="FL:::/Kernel/KHashB.CPP.Z,107",BI=223$ -$LK,"GR_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3514"$ -$LK,"DOCEf_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,1060"$ -$LK,"DOCEF_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,985"$ -$LK,"RLf_DSK",A="FL:::/Kernel/KernelA.HPP,444"$ -$LK,"Seed",A="FL:::/Kernel/KMathB.CPP.Z,134",BI=224$ -$LK,"DrvsRelease",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,27",BI=225$ -$LK,"TASKf_FILTER_INPUT",A="FL:::/Kernel/KernelA.HPP,3191"$ -$LK,"DOCEF_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1000"$ -$LK,"SYS_SEMA_FLUSH_VGA_IMAGE",A="FL:::/Kernel/KernelA.HPP,595"$ -$LK,"OPTf_NO_REG_VAR",A="FL:::/Kernel/KernelA.HPP,1468"$ -$LK,"CTRLF_SHOW",A="FL:::/Kernel/KernelA.HPP,2991"$ -$LK,"DOCEf_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1075"$ -$LK,"DOCEf_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,1038"$ -$LK,"DOCEF_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,958"$ -$LK,"ISO1FileRead",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,190",BI=226$ -$LK,"ATAPIWaitReady",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,334",BI=227$ -$LK,"TK_MUL_EQUAL",A="FL:::/Kernel/KernelA.HPP,2003"$ -$LK,"TK_NOT_EQUAL",A="FL:::/Kernel/KernelA.HPP,1995"$ -$LK,"SC_PRTSCRN1",A="FL:::/Kernel/KernelA.HPP,3491"$ -$LK,"FUF_ALL",A="FL:::/Kernel/KernelA.HPP,2509"$ +$LK,"HashTablePurge",A="FL:::/Kernel/KHashB.CPP.Z,107",BI=221$ +$LK,"GR_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3565"$ +$LK,"DOCEf_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,1063"$ +$LK,"DOCEF_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,988"$ +$LK,"Seed",A="FL:::/Kernel/KMathB.CPP.Z,134",BI=222$ +$LK,"DrvsRelease",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,27",BI=223$ +$LK,"TASKf_FILTER_INPUT",A="FL:::/Kernel/KernelA.HPP,3239"$ +$LK,"DOCEF_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1003"$ +$LK,"SYS_SEMA_FLUSH_VGA_IMAGE",A="FL:::/Kernel/KernelA.HPP,596"$ +$LK,"OPTf_NO_REG_VAR",A="FL:::/Kernel/KernelA.HPP,1517"$ +$LK,"CTRLF_SHOW",A="FL:::/Kernel/KernelA.HPP,3042"$ +$LK,"DOCEf_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1078"$ +$LK,"DOCEf_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,1041"$ +$LK,"DOCEF_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,961"$ +$LK,"ISO1FileRead",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,190",BI=224$ +$LK,"ATAPIWaitReady",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,334",BI=225$ +$LK,"TK_MUL_EQUAL",A="FL:::/Kernel/KernelA.HPP,2053"$ +$LK,"TK_NOT_EQUAL",A="FL:::/Kernel/KernelA.HPP,2045"$ +$LK,"SC_PRTSCRN1",A="FL:::/Kernel/KernelA.HPP,3542"$ +$LK,"FUF_ALL",A="FL:::/Kernel/KernelA.HPP,2559"$ $LK,"STR_LEN",A="FL:::/Kernel/KernelA.HPP,39"$ -$LK,"DskCacheQueIns",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,53",BI=228$ -$LK,"SC_PRTSCRN2",A="FL:::/Kernel/KernelA.HPP,3492"$ +$LK,"DskCacheQueIns",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,53",BI=226$ +$LK,"SC_PRTSCRN2",A="FL:::/Kernel/KernelA.HPP,3543"$ $LK,"sys_semas",A="FL:::/Kernel/KernelB.HPP,237"$ -$LK,"InputFilterTask",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,1",BI=229$ -$LK,"SYS_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,49"$ -$LK,"ATAR0_CMD",A="FL:::/Kernel/KernelA.HPP,2196"$ +$LK,"InputFilterTask",A="FL:::/Kernel/SerialDev/Message.CPP.Z,1",BI=227$ +$LK,"SYS_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,4"$ +$LK,"ATAR0_CMD",A="FL:::/Kernel/KernelA.HPP,2246"$ $LK,"I_DBG",A="FL:::/Kernel/KernelA.HPP,294"$ -$LK,"FATNameTo",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,135",BI=230$ -$LK,"SrvCmdQueDel",A="FL:::/Kernel/SrvCmd.CPP.Z,7",BI=231$ +$LK,"FATNameTo",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,135",BI=228$ +$LK,"SrvCmdQueDel",A="FL:::/Kernel/SrvCmd.CPP.Z,7",BI=229$ $LK,"MinI64",A="FL:::/Kernel/KernelB.HPP,100"$ $LK,"MaxU64",A="FL:::/Kernel/KernelB.HPP,99"$ $LK,"CallInd",A="FL:::/Kernel/KernelB.HPP,48"$ -$LK,"EndianI64",A="FL:::/Kernel/KMisc.CPP.Z,25",BI=232$ +$LK,"EndianI64",A="FL:::/Kernel/KMisc.CPP.Z,25",BI=230$ $LK,"_MSIZE",A="FL:::/Kernel/MemB.CPP.Z,322"$ -$LK,"GVF_IMPORT",A="FL:::/Kernel/KernelA.HPP,857"$ -$LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HPP,696"$ -$LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HPP,666"$ -$LK,"NUM_BLKDEVS",A="FL:::/Kernel/KernelA.HPP,2568"$ -$LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HPP,1643"$ +$LK,"AC_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1459"$ +$LK,"GVF_IMPORT",A="FL:::/Kernel/KernelA.HPP,860"$ +$LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HPP,698"$ +$LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HPP,668"$ +$LK,"NUM_BLKDEVS",A="FL:::/Kernel/KernelA.HPP,2618"$ +$LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HPP,1692"$ $LK,"LAPIC_ICR_LOW",A="FL:::/Kernel/KernelA.HPP,489"$ -$LK,"mouse",A="FL:::/Kernel/KGlbls.CPP.Z,20"$ +$LK,"mouse",A="FL:::/Kernel/KGlbls.CPP.Z,27"$ $LK,"D3Zero",A="FL:::/Kernel/KernelB.HPP,169"$ -$LK,"ST_WARN_ST",A="FL:::/Kernel/KernelA.HPP,3422"$ -$LK,"FUF_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2525"$ -$LK,"DskCacheInvalidate2",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,97",BI=233$ -$LK,"CCtrl",A="FL:::/Kernel/KernelA.HPP,3013"$ -$LK,"CBlkDev",A="FL:::/Kernel/KernelA.HPP,2570"$ -$LK,"DOCT_SONG",A="FL:::/Kernel/KernelA.HPP,928"$ -$LK,"DOCT_TREE",A="FL:::/Kernel/KernelA.HPP,924"$ +$LK,"ST_WARN_ST",A="FL:::/Kernel/KernelA.HPP,3471"$ +$LK,"FUF_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2575"$ +$LK,"DskCacheInvalidate2",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,97",BI=231$ +$LK,"CCtrl",A="FL:::/Kernel/KernelA.HPP,3064"$ +$LK,"CBlkDev",A="FL:::/Kernel/KernelA.HPP,2620"$ +$LK,"DOCT_SONG",A="FL:::/Kernel/KernelA.HPP,931"$ +$LK,"DOCT_TREE",A="FL:::/Kernel/KernelA.HPP,927"$ $LK,"progress1_desc",A="FL:::/Kernel/KernelB.HPP,214"$ -$LK,"BDS_ED_FILENAME_DRV",A="FL:::/Kernel/KernelA.HPP,3176"$ -$LK,"DOCT_TEXT",A="FL:::/Kernel/KernelA.HPP,890"$ +$LK,"BDS_ED_FILENAME_DRV",A="FL:::/Kernel/KernelA.HPP,3225"$ +$LK,"DOCT_TEXT",A="FL:::/Kernel/KernelA.HPP,893"$ $LK,"CMathODE",A="FL:::/Kernel/KernelA.HPP,242"$ +$LK,"WinInside",A="FL:::/Kernel/Display.CPP.Z,126",BI=232$ $LK,"RFLAGf_ALIGN_CHECK",A="FL:::/Kernel/KernelA.HPP,319"$ -$LK,"MAllocIdentical",A="FL:::/Kernel/MemB.CPP.Z,392",BI=234$ -$LK,"FUf_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2500"$ -$LK,"DOCF_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1247"$ -$LK,"CMemberLst",A="FL:::/Kernel/KernelA.HPP,788"$ -$LK,"DOCf_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1282"$ -$LK,"DskCacheQueRem",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,46",BI=235$ +$LK,"MAllocIdentical",A="FL:::/Kernel/MemB.CPP.Z,392",BI=233$ +$LK,"FUf_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2550"$ +$LK,"DOCF_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1250"$ +$LK,"CMemberLst",A="FL:::/Kernel/KernelA.HPP,790"$ +$LK,"DOCf_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1285"$ +$LK,"DskCacheQueRem",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,46",BI=234$ $LK,"_D3_NORM",A="FL:::/Kernel/KMathA.CPP.Z,4"$ -$LK,"DOCEf_BLINK",A="FL:::/Kernel/KernelA.HPP,1028"$ -$LK,"DOCEF_BLINK",A="FL:::/Kernel/KernelA.HPP,1022"$ -$LK,"IsDotZ",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,22",BI=236$ -$LK,"HashGenericAdd",A="FL:::/Kernel/KHashB.CPP.Z,140",BI=237$ -$LK,"_TASK_CONTEXT_RESTORE",A="FL:::/Kernel/Sched.CPP.Z,97"$ +$LK,"DOCEf_BLINK",A="FL:::/Kernel/KernelA.HPP,1031"$ +$LK,"DOCEF_BLINK",A="FL:::/Kernel/KernelA.HPP,1025"$ +$LK,"IsDotZ",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,22",BI=235$ +$LK,"HashGenericAdd",A="FL:::/Kernel/KHashB.CPP.Z,140",BI=236$ +$LK,"_TASK_CONTEXT_RESTORE",A="FL:::/Kernel/Sched.CPP.Z,91"$ $LK,"BFieldOrU32",A="FL:::/Kernel/KernelB.HPP,32"$ -$LK,"TK_IFJIT",A="FL:::/Kernel/KernelA.HPP,2014"$ -$LK,"SYS_MP_CRASH_HANDLER_ADDR",A="FL:::/Kernel/Ints.CPP.Z,2"$ -$LK,"RedSeaFileRead",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,209",BI=238$ -$LK,"MousePktRead",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,1",BI=239$ -$LK,"VGAP_CRTC_DATA",A="FL:::/Kernel/KernelA.HPP,3636"$ -$LK,"ARGT_REL32",A="FL:::/Kernel/KernelA.HPP,1793"$ -$LK,"ARGT_REL16",A="FL:::/Kernel/KernelA.HPP,1792"$ +$LK,"TK_IFJIT",A="FL:::/Kernel/KernelA.HPP,2064"$ +$LK,"RedSeaFileRead",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,209",BI=237$ +$LK,"MousePktRead",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,1",BI=238$ +$LK,"VGAP_CRTC_DATA",A="FL:::/Kernel/KernelA.HPP,3687"$ +$LK,"ARGT_REL32",A="FL:::/Kernel/KernelA.HPP,1843"$ +$LK,"ARGT_REL16",A="FL:::/Kernel/KernelA.HPP,1842"$ $LK,"cpu_structs",A="FL:::/Kernel/KernelB.HPP,233"$ -$LK,"SC_DELETE",A="FL:::/Kernel/KernelA.HPP,3476"$ +$LK,"SC_DELETE",A="FL:::/Kernel/KernelA.HPP,3527"$ $LK,"MAX_U64_F64",A="FL:::/Kernel/KernelA.HPP,43"$ $LK,"CLine",A="FL:::/Kernel/EdLite.CPP.Z,1"$ -$LK,"REGG_C_LOCAL_VARS",A="FL:::/Kernel/KernelA.HPP,1706"$ -$LK,"REGT_SEG",A="FL:::/Kernel/KernelA.HPP,734"$ +$LK,"REGG_C_LOCAL_VARS",A="FL:::/Kernel/KernelA.HPP,1756"$ +$LK,"ACD_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1496"$ +$LK,"REGT_SEG",A="FL:::/Kernel/KernelA.HPP,736"$ $LK,"CMass",A="FL:::/Kernel/KernelA.HPP,207"$ -$LK,"GetStr",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,200",BI=240$ -$LK,"LTRED",A="FL:::/Kernel/KernelA.HPP,2870"$ +$LK,"GetStr",A="FL:::/Kernel/SerialDev/Message.CPP.Z,193",BI=239$ +$LK,"LTRED",A="FL:::/Kernel/KernelA.HPP,2920"$ $LK,"StrIMatch",A="FL:::/Kernel/StrA.CPP.Z,319"$ -$LK,"HTG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,691"$ +$LK,"HTG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,693"$ $LK,"Sign",A="FL:::/Kernel/KernelB.HPP,141"$ -$LK,"ExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,250",BI=241$ -$LK,"DOCT_PAGE_LEN",A="FL:::/Kernel/KernelA.HPP,897"$ +$LK,"ExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,250",BI=240$ +$LK,"DOCT_PAGE_LEN",A="FL:::/Kernel/KernelA.HPP,900"$ $LK,"RLf_RAW",A="FL:::/Kernel/KernelA.HPP,441"$ -$LK,"ToggleZorNotZ",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,238",BI=242$ -$LK,"VGAP_ATTR_INDEX",A="FL:::/Kernel/KernelA.HPP,3625"$ +$LK,"ToggleZorNotZ",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,238",BI=241$ +$LK,"VGAP_ATTR_INDEX",A="FL:::/Kernel/KernelA.HPP,3676"$ $LK,"D3MulEqu",A="FL:::/Kernel/KernelB.HPP,163"$ -$LK,"BDS_CONST",A="FL:::/Kernel/KernelA.HPP,3174"$ +$LK,"BDS_CONST",A="FL:::/Kernel/KernelA.HPP,3223"$ $LK,"MP_MAX_PROCESSORS",A="FL:::/Kernel/KernelA.HPP,301"$ -$LK,"SysGlblsInit",A="FL:::/Kernel/KEnd.CPP.Z,1",BI=243$ -$LK,"PutSrcLink",A="FL:::/Kernel/PSect.CPP.Z,258",BI=244$ -$LK,"CMenu",A="FL:::/Kernel/KernelA.HPP,3047"$ -$LK,"BDT_ATAPI",A="FL:::/Kernel/KernelA.HPP,2542"$ -$LK,"FUF_MAP",A="FL:::/Kernel/KernelA.HPP,2513"$ -$LK,"CFAT32DirEntry",A="FL:::/Kernel/KernelA.HPP,2291"$ -$LK,"DOCT_INVERT",A="FL:::/Kernel/KernelA.HPP,910"$ -$LK,"CMT_HASH_ENTRY",A="FL:::/Kernel/KernelA.HPP,1608"$ +$LK,"SysGlblsInit",A="FL:::/Kernel/KEnd.CPP.Z,1",BI=242$ +$LK,"PutSrcLink",A="FL:::/Kernel/PSect.CPP.Z,255",BI=243$ +$LK,"CMenu",A="FL:::/Kernel/KernelA.HPP,3098"$ +$LK,"BDT_ATAPI",A="FL:::/Kernel/KernelA.HPP,2592"$ +$LK,"FUF_MAP",A="FL:::/Kernel/KernelA.HPP,2563"$ +$LK,"CFAT32DirEntry",A="FL:::/Kernel/KernelA.HPP,2341"$ +$LK,"ACD_POS_END",A="FL:::/Kernel/KernelA.HPP,1484"$ +$LK,"DOCT_INVERT",A="FL:::/Kernel/KernelA.HPP,913"$ +$LK,"CMT_HASH_ENTRY",A="FL:::/Kernel/KernelA.HPP,1657"$ $LK,"RLf_VGA",A="FL:::/Kernel/KernelA.HPP,435"$ -$LK,"ICF_TRACE",A="FL:::/Kernel/KernelA.HPP,1522"$ -$LK,"WIf_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1424"$ +$LK,"WIf_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1428"$ $LK,"LAPIC_LVT_PERF",A="FL:::/Kernel/KernelA.HPP,494"$ -$LK,"MemLowPagesProtect",A="FL:::/Kernel/MemC.CPP.Z,132",BI=245$ -$LK,"SC_F1",A="FL:::/Kernel/KernelA.HPP,3477"$ +$LK,"MemLowPagesProtect",A="FL:::/Kernel/MemC.CPP.Z,132",BI=244$ +$LK,"SC_F1",A="FL:::/Kernel/KernelA.HPP,3528"$ $LK,"SYS_SEMAS",A="FL:::/Kernel/KStart.CPP.Z,231"$ -$LK,"SC_F2",A="FL:::/Kernel/KernelA.HPP,3478"$ +$LK,"SC_F2",A="FL:::/Kernel/KernelA.HPP,3529"$ $LK,"SYS_VAR_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$ $LK,"SYS_MEM_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"SC_F3",A="FL:::/Kernel/KernelA.HPP,3479"$ +$LK,"SC_F3",A="FL:::/Kernel/KernelA.HPP,3530"$ $LK,"SignI64",A="FL:::/Kernel/KernelB.HPP,103"$ $LK,"_CALLIND",A="FL:::/Kernel/KUtils.CPP.Z,333"$ -$LK,"SC_F4",A="FL:::/Kernel/KernelA.HPP,3480"$ -$LK,"WSSf_SET_TO_POS",A="FL:::/Kernel/KernelA.HPP,2997"$ -$LK,"RS_ATTR_SYSTEM",A="FL:::/Kernel/KernelA.HPP,2439"$ -$LK,"SYS_SEMA_MUTE",A="FL:::/Kernel/KernelA.HPP,603"$ +$LK,"SC_F4",A="FL:::/Kernel/KernelA.HPP,3531"$ +$LK,"WSSf_SET_TO_POS",A="FL:::/Kernel/KernelA.HPP,3048"$ +$LK,"RS_ATTR_SYSTEM",A="FL:::/Kernel/KernelA.HPP,2489"$ +$LK,"SYS_SEMA_MUTE",A="FL:::/Kernel/KernelA.HPP,604"$ $LK,"I_BPT",A="FL:::/Kernel/KernelA.HPP,287"$ $LK,"_TAKE_EXCEPT",A="FL:::/Kernel/KExcept.CPP.Z,20"$ -$LK,"DefineCnt",A="FL:::/Kernel/KDefine.CPP.Z,74",BI=246$ -$LK,"SC_F5",A="FL:::/Kernel/KernelA.HPP,3481"$ -$LK,"WIF_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1394"$ -$LK,"RedSeaCd",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,238",BI=247$ +$LK,"DefineCnt",A="FL:::/Kernel/KDefine.CPP.Z,74",BI=245$ +$LK,"SC_F5",A="FL:::/Kernel/KernelA.HPP,3532"$ +$LK,"WIF_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1397"$ +$LK,"RedSeaCd",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,238",BI=246$ $LK,"C:/Doc/Bit.TXT.Z",A="FL:::/Kernel/KernelB.HPP,9"$ -$LK,"SC_F6",A="FL:::/Kernel/KernelA.HPP,3482"$ -$LK,"PAGE_SIZE",A="FL:::/Kernel/KernelA.HPP,2781"$ -$LK,"SysGrInit",A="FL:::/Kernel/KEnd.CPP.Z,65",BI=248$ -$LK,"ArcCtrlDel",A="FL:::/Kernel/Compress.CPP.Z,244",BI=249$ -$LK,"SysBadMAlloc",A="FL:::/Kernel/MemA.CPP.Z,160",BI=250$ -$LK,"SC_F7",A="FL:::/Kernel/KernelA.HPP,3483"$ -$LK,"DOCSS_NORMAL",A="FL:::/Kernel/KernelA.HPP,1106"$ -$LK,"GVF_EXTERN",A="FL:::/Kernel/KernelA.HPP,858"$ +$LK,"SC_F6",A="FL:::/Kernel/KernelA.HPP,3533"$ +$LK,"PAGE_SIZE",A="FL:::/Kernel/KernelA.HPP,2831"$ +$LK,"SysGrInit",A="FL:::/Kernel/KEnd.CPP.Z,67",BI=247$ +$LK,"ArcCtrlDel",A="FL:::/Kernel/Compress.CPP.Z,244",BI=248$ +$LK,"SysBadMAlloc",A="FL:::/Kernel/MemA.CPP.Z,160",BI=249$ +$LK,"SC_F7",A="FL:::/Kernel/KernelA.HPP,3534"$ +$LK,"DOCSS_NORMAL",A="FL:::/Kernel/KernelA.HPP,1109"$ +$LK,"GVF_EXTERN",A="FL:::/Kernel/KernelA.HPP,861"$ $LK,"SPF_NEG_E",A="FL:::/Kernel/StrPrint.CPP.Z,11"$ -$LK,"SC_F8",A="FL:::/Kernel/KernelA.HPP,3484"$ -$LK,"Mute",A="FL:::/Kernel/KMisc.CPP.Z,204",BI=251$ +$LK,"SC_F8",A="FL:::/Kernel/KernelA.HPP,3535"$ +$LK,"Mute",A="FL:::/Kernel/KMisc.CPP.Z,204",BI=250$ +$LK,"INT_FAULT",A="FL:::/Kernel/KInts.CPP.Z,54"$ $LK,"progress2_desc",A="FL:::/Kernel/KernelB.HPP,218"$ -$LK,"DCSF_PALETTE_GET",A="FL:::/Kernel/KernelA.HPP,3546"$ -$LK,"SC_F9",A="FL:::/Kernel/KernelA.HPP,3485"$ -$LK,"DOCEF_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,996"$ -$LK,"KbdBuildSC",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,298",BI=252$ +$LK,"DCSF_PALETTE_GET",A="FL:::/Kernel/KernelA.HPP,3597"$ +$LK,"SC_F9",A="FL:::/Kernel/KernelA.HPP,3536"$ +$LK,"DOCEF_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,999"$ +$LK,"KbdBuildSC",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,298",BI=251$ $LK,"IOAPICID",A="FL:::/Kernel/KernelA.HPP,506"$ $LK,"RFLAGf_SIGN",A="FL:::/Kernel/KernelA.HPP,309"$ -$LK,"AMAllocIdentical",A="FL:::/Kernel/MemB.CPP.Z,403",BI=253$ -$LK,"DKGRAY",A="FL:::/Kernel/KernelA.HPP,2866"$ -$LK,"DOCEF_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,989"$ -$LK,"PutDirLink",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,201",BI=254$ -$LK,"EndianU32",A="FL:::/Kernel/KMisc.CPP.Z,15",BI=255$ -$LK,"EndianU16",A="FL:::/Kernel/KMisc.CPP.Z,7",BI=256$ -$LK,"DOCEf_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,1071"$ +$LK,"AMAllocIdentical",A="FL:::/Kernel/MemB.CPP.Z,403",BI=252$ +$LK,"DKGRAY",A="FL:::/Kernel/KernelA.HPP,2916"$ +$LK,"DOCEF_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,992"$ +$LK,"PutDirLink",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,201",BI=253$ +$LK,"EndianU32",A="FL:::/Kernel/KMisc.CPP.Z,15",BI=254$ +$LK,"EndianU16",A="FL:::/Kernel/KMisc.CPP.Z,7",BI=255$ +$LK,"DOCEf_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,1074"$ $LK,"SPF_NEG_AUX_FMT_NUM",A="FL:::/Kernel/StrPrint.CPP.Z,12"$ $LK,"sys_pci_busses",A="FL:::/Kernel/KernelB.HPP,243"$ -$LK,"BOOT_STK_SIZE",A="FL:::/Kernel/KernelA.HPP,3783"$ -$LK,"TTS_LOCKED_CONST",A="FL:::/Kernel/KernelA.HPP,3180"$ -$LK,"CCf_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2060"$ -$LK,"CCF_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2059"$ +$LK,"BOOT_STK_SIZE",A="FL:::/Kernel/KernelA.HPP,3834"$ +$LK,"TTS_LOCKED_CONST",A="FL:::/Kernel/KernelA.HPP,3229"$ +$LK,"CCf_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2110"$ +$LK,"CCF_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2109"$ $LK,"LAPIC_APIC_VERSION",A="FL:::/Kernel/KernelA.HPP,474"$ -$LK,"PutS",A="FL:::/Kernel/KeyDev.CPP.Z,29",BI=257$ -$LK,"DOCEf_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,1064"$ -$LK,"CDocBin",A="FL:::/Kernel/KernelA.HPP,1092"$ +$LK,"PutS",A="FL:::/Kernel/KeyDev.CPP.Z,29",BI=256$ +$LK,"DOCEf_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,1067"$ +$LK,"CDocBin",A="FL:::/Kernel/KernelA.HPP,1095"$ $LK,"LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,471"$ $LK,"MAX_F64",A="FL:::/Kernel/KernelA.HPP,44"$ -$LK,"StrPrintJoin",A="FL:::/Kernel/StrPrint.CPP.Z,218",BI=258$ +$LK,"StrPrintJoin",A="FL:::/Kernel/StrPrint.CPP.Z,218",BI=257$ $LK,"IA32_GS_BASE",A="FL:::/Kernel/KernelA.HPP,517"$ $LK,"log2_e",A="FL:::/Kernel/KernelA.HPP,52"$ -$LK,"CurDir",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,254",BI=259$ +$LK,"CurDir",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,254",BI=258$ $LK,"MinU64",A="FL:::/Kernel/KernelB.HPP,101"$ $LK,"_SYS_HLT",A="FL:::/Kernel/KUtils.CPP.Z,469"$ -$LK,"CCF_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2070"$ -$LK,"OPTf_KEEP_PRIVATE",A="FL:::/Kernel/KernelA.HPP,1467"$ +$LK,"CCF_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2120"$ +$LK,"OPTf_KEEP_PRIVATE",A="FL:::/Kernel/KernelA.HPP,1516"$ $LK,"MAX_I32",A="FL:::/Kernel/KernelA.HPP,31"$ $LK,"MAX_I16",A="FL:::/Kernel/KernelA.HPP,27"$ -$LK,"HTF_EXPORT",A="FL:::/Kernel/KernelA.HPP,695"$ -$LK,"HTf_EXPORT",A="FL:::/Kernel/KernelA.HPP,665"$ -$LK,"ATAPIReadBlks2",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,385",BI=260$ +$LK,"HTF_EXPORT",A="FL:::/Kernel/KernelA.HPP,697"$ +$LK,"HTf_EXPORT",A="FL:::/Kernel/KernelA.HPP,667"$ +$LK,"ATAPIReadBlks2",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,385",BI=259$ $LK,"_D3_UNIT",A="FL:::/Kernel/KMathA.CPP.Z,305"$ -$LK,"CCf_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2071"$ -$LK,"POP_C_REGS",A="FL:::/Kernel/KernelA.HPP,1680"$ +$LK,"CCf_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2121"$ +$LK,"POP_C_REGS",A="FL:::/Kernel/KernelA.HPP,1730"$ $LK,"_STRIMATCH",A="FL:::/Kernel/StrA.CPP.Z,262"$ -$LK,"DrvChk",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,117",BI=261$ -$LK,"CSema",A="FL:::/Kernel/KernelA.HPP,580"$ +$LK,"DrvChk",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,117",BI=260$ +$LK,"CSema",A="FL:::/Kernel/KernelA.HPP,581"$ $LK,"EXT_HEAPLOG_MALLOC",A="FL:::/Kernel/KernelA.HPP,571"$ -$LK,"GR_WIDTH",A="FL:::/Kernel/KernelA.HPP,3513"$ -$LK,"DOCT_SOFT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,892"$ -$LK,"GetBaseUnit",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,276",BI=262$ -$LK,"FixSet",A="FL:::/Kernel/EdLite.CPP.Z,327",BI=263$ -$LK,"MapDrv",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,190",BI=264$ -$LK,"DrvMakeFree",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,38",BI=265$ -$LK,"IPSet",A="FL:::/Kernel/KbdMouse/InputPointer.CPP.Z,43",BI=266$ -$LK,"SYS_SEMA_HEAPLOG_LOCK",A="FL:::/Kernel/KernelA.HPP,593"$ +$LK,"GR_WIDTH",A="FL:::/Kernel/KernelA.HPP,3564"$ +$LK,"DOCT_SOFT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,895"$ +$LK,"GetBaseUnit",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,276",BI=261$ +$LK,"MapDrv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,188",BI=262$ +$LK,"DrvMakeFree",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,38",BI=263$ +$LK,"FixSet",A="FL:::/Kernel/EdLite.CPP.Z,327",BI=264$ +$LK,"IPSet",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,43",BI=265$ +$LK,"SYS_SEMA_HEAPLOG_LOCK",A="FL:::/Kernel/KernelA.HPP,594"$ $LK,"sqrt2",A="FL:::/Kernel/KernelA.HPP,55"$ $LK,"CQueVectU8",A="FL:::/Kernel/KernelA.HPP,161"$ -$LK,"IntFaultHandlersNew",A="FL:::/Kernel/Ints.CPP.Z,146",BI=267$ -$LK,"TASKf_INPUT_FILTER_TASK",A="FL:::/Kernel/KernelA.HPP,3190"$ -$LK,"OM_CB",A="FL:::/Kernel/KernelA.HPP,1782"$ +$LK,"IntFaultHandlersNew",A="FL:::/Kernel/KInts.CPP.Z,158",BI=266$ +$LK,"TASKf_INPUT_FILTER_TASK",A="FL:::/Kernel/KernelA.HPP,3238"$ +$LK,"OM_CB",A="FL:::/Kernel/KernelA.HPP,1832"$ $LK,"MAX_I64",A="FL:::/Kernel/KernelA.HPP,35"$ -$LK,"throw",A="FL:::/Kernel/KExcept.CPP.Z,81",BI=268$ +$LK,"throw",A="FL:::/Kernel/KExcept.CPP.Z,81",BI=267$ $LK,"sys_boot_base",A="FL:::/Kernel/KernelB.HPP,37"$ -$LK,"BDF_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2548"$ -$LK,"TK_AND_AND",A="FL:::/Kernel/KernelA.HPP,1998"$ -$LK,"REG_NONE",A="FL:::/Kernel/KernelA.HPP,1699"$ -$LK,"OC_LOCK_PREFIX",A="FL:::/Kernel/KernelA.HPP,1672"$ -$LK,"WIF_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1388"$ -$LK,"Ff_INTERRUPT",A="FL:::/Kernel/KernelA.HPP,837"$ -$LK,"OM_CD",A="FL:::/Kernel/KernelA.HPP,1784"$ -$LK,"AAT_ADD_U8",A="FL:::/Kernel/KernelA.HPP,1879"$ -$LK,"REGT_XMM",A="FL:::/Kernel/KernelA.HPP,737"$ -$LK,"DOCSS_CPP_Z_COMMENT",A="FL:::/Kernel/KernelA.HPP,1110"$ -$LK,"DOCT_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,912"$ -$LK,"PutExcept",A="FL:::/Kernel/KExcept.CPP.Z,45",BI=269$ +$LK,"BDF_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2598"$ +$LK,"TK_AND_AND",A="FL:::/Kernel/KernelA.HPP,2048"$ +$LK,"REG_NONE",A="FL:::/Kernel/KernelA.HPP,1749"$ +$LK,"OC_LOCK_PREFIX",A="FL:::/Kernel/KernelA.HPP,1722"$ +$LK,"WIF_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1390"$ +$LK,"Ff_INTERRUPT",A="FL:::/Kernel/KernelA.HPP,840"$ +$LK,"OM_CD",A="FL:::/Kernel/KernelA.HPP,1834"$ +$LK,"AAT_ADD_U8",A="FL:::/Kernel/KernelA.HPP,1929"$ +$LK,"REGT_XMM",A="FL:::/Kernel/KernelA.HPP,739"$ +$LK,"DOCSS_CPP_Z_COMMENT",A="FL:::/Kernel/KernelA.HPP,1113"$ +$LK,"DOCT_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,915"$ +$LK,"PutExcept",A="FL:::/Kernel/KExcept.CPP.Z,45",BI=268$ $LK,"TestExcept",A="FL:::/Kernel/KExcept.CPP.Z,41"$ -$LK,"CColorROPU32",A="FL:::/Kernel/KernelA.HPP,2883"$ -$LK,"CColorROPU16",A="FL:::/Kernel/KernelA.HPP,2879"$ -$LK,"DOCT_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,913"$ -$LK,"HTT_FILE",A="FL:::/Kernel/KernelA.HPP,687"$ -$LK,"HTT_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,676"$ -$LK,"HTt_FILE",A="FL:::/Kernel/KernelA.HPP,657"$ +$LK,"CColorROPU32",A="FL:::/Kernel/KernelA.HPP,2933"$ +$LK,"CColorROPU16",A="FL:::/Kernel/KernelA.HPP,2929"$ +$LK,"DOCT_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,916"$ +$LK,"HTT_FILE",A="FL:::/Kernel/KernelA.HPP,689"$ +$LK,"HTT_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,678"$ +$LK,"HTt_FILE",A="FL:::/Kernel/KernelA.HPP,659"$ +$LK,"BootDVDProve",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,1",BI=269$ $LK,"Push",A="FL:::/Kernel/KernelB.HPP,252"$ -$LK,"SVCf_FREE_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3085"$ -$LK,"ICF_DEL_PREVIOUS_INS",A="FL:::/Kernel/KernelA.HPP,1536"$ -$LK,"HTt_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,646"$ +$LK,"SVCf_FREE_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3136"$ +$LK,"ICF_DEL_PREVIOUS_INS",A="FL:::/Kernel/KernelA.HPP,1585"$ +$LK,"HTt_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,648"$ $LK,"STK_REP_LEN",A="FL:::/Kernel/KDbg.CPP.Z,102"$ $LK,"I_NMI",A="FL:::/Kernel/KernelA.HPP,286"$ -$LK,"Date2ISO1",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,61",BI=270$ +$LK,"Date2ISO1",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,61",BI=270$ $LK,"ModU64",A="FL:::/Kernel/KernelB.HPP,102"$ -$LK,"SVCf_EXIT_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3079"$ -$LK,"DOCG_DBL_BUF_FLAGS",A="FL:::/Kernel/KernelA.HPP,947"$ -$LK,"WIf_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1418"$ -$LK,"WIf_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1413"$ -$LK,"CTask",A="FL:::/Kernel/KernelA.HPP,3220"$ +$LK,"SVCf_EXIT_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3130"$ +$LK,"DOCG_DBL_BUF_FLAGS",A="FL:::/Kernel/KernelA.HPP,950"$ +$LK,"WIf_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1422"$ +$LK,"WIf_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1416"$ +$LK,"CTask",A="FL:::/Kernel/KernelA.HPP,3268"$ $LK,"SYS_PCI_BUSSES",A="FL:::/Kernel/KStart.CPP.Z,51"$ -$LK,"OC_JMP_REL8",A="FL:::/Kernel/KernelA.HPP,1676"$ -$LK,"_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,188"$ +$LK,"OC_JMP_REL8",A="FL:::/Kernel/KernelA.HPP,1726"$ +$LK,"_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,143"$ $LK,"_D3_ZERO",A="FL:::/Kernel/KMathA.CPP.Z,201"$ -$LK,"ARf_CSPRITE_PICK_GRAPHICALLY",A="FL:::/Kernel/KernelA.HPP,3797"$ +$LK,"ARf_CSPRITE_PICK_GRAPHICALLY",A="FL:::/Kernel/KernelA.HPP,3848"$ $LK,"Str2F64",A="FL:::/Kernel/StrScan.CPP.Z,55",BI=271$ -$LK,"_YIELD",A="FL:::/Kernel/Sched.CPP.Z,167"$ -$LK,"OM_IB",A="FL:::/Kernel/KernelA.HPP,1786"$ +$LK,"_YIELD",A="FL:::/Kernel/Sched.CPP.Z,161"$ +$LK,"OM_IB",A="FL:::/Kernel/KernelA.HPP,1836"$ $LK,"progress3_desc",A="FL:::/Kernel/KernelB.HPP,222"$ -$LK,"DCF_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3530"$ -$LK,"DOCf_PLAIN_TEXT_WITH_TABS",A="FL:::/Kernel/KernelA.HPP,1271"$ -$LK,"DOCF_PLAIN_TEXT_WITH_TABS",A="FL:::/Kernel/KernelA.HPP,1236"$ -$LK,"DrvNextFree",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,51",BI=272$ -$LK,"OM_ID",A="FL:::/Kernel/KernelA.HPP,1788"$ -$LK,"OM_CP",A="FL:::/Kernel/KernelA.HPP,1785"$ -$LK,"WIF_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1396"$ +$LK,"DCF_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3581"$ +$LK,"DOCf_PLAIN_TEXT_WITH_TABS",A="FL:::/Kernel/KernelA.HPP,1274"$ +$LK,"DOCF_PLAIN_TEXT_WITH_TABS",A="FL:::/Kernel/KernelA.HPP,1239"$ +$LK,"DrvNextFree",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,51",BI=272$ +$LK,"OM_ID",A="FL:::/Kernel/KernelA.HPP,1838"$ +$LK,"OM_CP",A="FL:::/Kernel/KernelA.HPP,1835"$ +$LK,"WIF_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1399"$ $LK,"_ROUND",A="FL:::/Kernel/KMathA.CPP.Z,380"$ $LK,"RFLAGf_TRAP",A="FL:::/Kernel/KernelA.HPP,310"$ -$LK,"SYS_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,154"$ -$LK,"FUF_RECURSE",A="FL:::/Kernel/KernelA.HPP,2506"$ -$LK,"FUf_RECURSE",A="FL:::/Kernel/KernelA.HPP,2481"$ +$LK,"SYS_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,109"$ +$LK,"BOOT_SRC_DVD",A="FL:::/Kernel/KernelA.HPP,3839"$ +$LK,"FUF_RECURSE",A="FL:::/Kernel/KernelA.HPP,2556"$ +$LK,"FUf_RECURSE",A="FL:::/Kernel/KernelA.HPP,2531"$ $LK,"MemCmp",A="FL:::/Kernel/KernelB.HPP,173"$ -$LK,"SVCf_DONE",A="FL:::/Kernel/KernelA.HPP,3083"$ -$LK,"SC_PAGE_UP",A="FL:::/Kernel/KernelA.HPP,3471"$ -$LK,"User",A="FL:::/Kernel/Task.CPP.Z,367",BI=273$ -$LK,"WIF_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1398"$ -$LK,"DOCEf_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,1040"$ -$LK,"DOCEF_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,960"$ -$LK,"DirEntryDel",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,17",BI=274$ -$LK,"CLexFile",A="FL:::/Kernel/KernelA.HPP,1947"$ -$LK,"OM_CW",A="FL:::/Kernel/KernelA.HPP,1783"$ -$LK,"DOCF_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1253"$ +$LK,"SVCf_DONE",A="FL:::/Kernel/KernelA.HPP,3134"$ +$LK,"SC_PAGE_UP",A="FL:::/Kernel/KernelA.HPP,3522"$ +$LK,"User",A="FL:::/Kernel/KTask.CPP.Z,363",BI=273$ +$LK,"WIF_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1401"$ +$LK,"DOCEf_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,1043"$ +$LK,"DOCEF_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,963"$ +$LK,"DirEntryDel",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,17",BI=274$ +$LK,"CLexFile",A="FL:::/Kernel/KernelA.HPP,1997"$ +$LK,"OM_CW",A="FL:::/Kernel/KernelA.HPP,1833"$ +$LK,"DOCF_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1256"$ $LK,"IA32_LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,514"$ -$LK,"ATACmd",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,59",BI=275$ +$LK,"ATACmd",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,59",BI=275$ $LK,"BusyWait",A="FL:::/Kernel/KMisc.CPP.Z,136",BI=276$ -$LK,"DOCEf_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,1045"$ -$LK,"DOCEF_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,965"$ -$LK,"DOCEf_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,1046"$ -$LK,"DOCEF_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,966"$ +$LK,"DOCEf_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,1048"$ +$LK,"DOCEF_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,968"$ +$LK,"DOCEf_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,1049"$ +$LK,"DOCEF_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,969"$ $LK,"Str2I64",A="FL:::/Kernel/StrScan.CPP.Z,1",BI=277$ $LK,"Sqrt",A="FL:::/Kernel/KernelB.HPP,108"$ -$LK,"NowDateTimeStruct",A="FL:::/Kernel/Date.CPP.Z,133",BI=278$ +$LK,"NowDateTimeStruct",A="FL:::/Kernel/KDate.CPP.Z,133",BI=278$ $LK,"YorN",A="FL:::/Kernel/StrB.CPP.Z,87",BI=279$ -$LK,"MT_CD",A="FL:::/Kernel/KernelA.HPP,2454"$ -$LK,"ICF_NO_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1516"$ +$LK,"MT_CD",A="FL:::/Kernel/KernelA.HPP,2504"$ +$LK,"ICF_NO_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1565"$ $LK,"RFLAGf_VINT",A="FL:::/Kernel/KernelA.HPP,320"$ -$LK,"DCF_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3542"$ -$LK,"DOCEF_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,963"$ +$LK,"DCF_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3593"$ +$LK,"ACD_DEF",A="FL:::/Kernel/KernelA.HPP,1479"$ +$LK,"DOCEF_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,966"$ $LK,"SYS_CPU_STRUCTS",A="FL:::/Kernel/KStart.CPP.Z,223"$ -$LK,"SVCT_MSG",A="FL:::/Kernel/KernelA.HPP,3089"$ -$LK,"ICF_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1528"$ -$LK,"DOCf_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1288"$ -$LK,"CDocEntryBase",A="FL:::/Kernel/KernelA.HPP,1140"$ -$LK,"MLF_STR_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,767"$ +$LK,"SVCT_MSG",A="FL:::/Kernel/KernelA.HPP,3140"$ +$LK,"ICF_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1577"$ +$LK,"DOCf_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1291"$ +$LK,"CDocEntryBase",A="FL:::/Kernel/KernelA.HPP,1143"$ +$LK,"MLF_STR_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,769"$ $LK,"ArcCtrlNew",A="FL:::/Kernel/Compress.CPP.Z,221",BI=280$ -$LK,"DCF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,3537"$ -$LK,"SYS_SEMA_HEAPLOG_ACTIVE",A="FL:::/Kernel/KernelA.HPP,592"$ -$LK,"DOC_SCROLL_SPEED",A="FL:::/Kernel/KernelA.HPP,1104"$ -$LK,"DOCEf_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,1043"$ +$LK,"DCF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,3588"$ +$LK,"SYS_SEMA_HEAPLOG_ACTIVE",A="FL:::/Kernel/KernelA.HPP,593"$ +$LK,"DOC_SCROLL_SPEED",A="FL:::/Kernel/KernelA.HPP,1107"$ +$LK,"DOCEf_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,1046"$ $LK,"SSF_NO_TENSION",A="FL:::/Kernel/KernelA.HPP,223"$ $LK,"I32",A="FL:::/Kernel/KernelA.HPP,85"$ $LK,"I16",A="FL:::/Kernel/KernelA.HPP,71"$ $LK,"MemCpy",A="FL:::/Kernel/KernelB.HPP,175"$ -$LK,"CT_NONE",A="FL:::/Kernel/KernelA.HPP,3646"$ -$LK,"OM_IW",A="FL:::/Kernel/KernelA.HPP,1787"$ -$LK,"VGAP_DATA",A="FL:::/Kernel/KernelA.HPP,3630"$ -$LK,"OM_NO",A="FL:::/Kernel/KernelA.HPP,1781"$ +$LK,"CT_NONE",A="FL:::/Kernel/KernelA.HPP,3696"$ +$LK,"OM_IW",A="FL:::/Kernel/KernelA.HPP,1837"$ +$LK,"VGAP_DATA",A="FL:::/Kernel/KernelA.HPP,3681"$ +$LK,"OM_NO",A="FL:::/Kernel/KernelA.HPP,1831"$ $LK,"IET_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,410"$ -$LK,"GVF_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,859"$ +$LK,"GVF_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,862"$ $LK,"DefineSub",A="FL:::/Kernel/KDefine.CPP.Z,60",BI=281$ -$LK,"WHITE",A="FL:::/Kernel/KernelA.HPP,2873"$ -$LK,"ATA_READ_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2177"$ -$LK,"DOCEF_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,967"$ -$LK,"DOCEf_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1073"$ -$LK,"ISO1T_SUPPLEMENTARY_DESC",A="FL:::/Kernel/KernelA.HPP,2391"$ -$LK,"DOCEf_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,1047"$ +$LK,"WHITE",A="FL:::/Kernel/KernelA.HPP,2923"$ +$LK,"ATA_READ_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2227"$ +$LK,"DOCEF_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,970"$ +$LK,"DOCEf_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1076"$ +$LK,"ISO1T_SUPPLEMENTARY_DESC",A="FL:::/Kernel/KernelA.HPP,2441"$ +$LK,"DOCEf_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,1050"$ $LK,"MPInt",A="FL:::/Kernel/MultiProc.CPP.Z,131",BI=282$ -$LK,"BOOT_SRC_RAM",A="FL:::/Kernel/KernelA.HPP,3786"$ -$LK,"CDskGlbls",A="FL:::/Kernel/KernelA.HPP,2660"$ +$LK,"BOOT_SRC_RAM",A="FL:::/Kernel/KernelA.HPP,3837"$ $LK,"I64",A="FL:::/Kernel/KernelA.HPP,103"$ $LK,"MAX_U32",A="FL:::/Kernel/KernelA.HPP,33"$ $LK,"MAX_U16",A="FL:::/Kernel/KernelA.HPP,29"$ -$LK,"PopUpPrint",A="FL:::/Kernel/SrvCmd.CPP.Z,409",BI=283$ -$LK,"IntEntryGet",A="FL:::/Kernel/Ints.CPP.Z,93",BI=284$ +$LK,"PopUpPrint",A="FL:::/Kernel/SrvCmd.CPP.Z,400",BI=283$ +$LK,"IntEntryGet",A="FL:::/Kernel/KInts.CPP.Z,89",BI=284$ $LK,"CD2",A="FL:::/Kernel/KernelA.HPP,148"$ -$LK,"KeyDevInit",A="FL:::/Kernel/KeyDev.CPP.Z,195",BI=285$ +$LK,"KeyDevInit",A="FL:::/Kernel/KeyDev.CPP.Z,194",BI=285$ $LK,"sys_font_8x8",A="FL:::/Kernel/Font8x8.CPP.Z,3"$ -$LK,"CCF_HAS_RETURN",A="FL:::/Kernel/KernelA.HPP,2055"$ -$LK,"CAsmArg",A="FL:::/Kernel/KernelA.HPP,1758"$ +$LK,"CCF_HAS_RETURN",A="FL:::/Kernel/KernelA.HPP,2105"$ +$LK,"CAsmArg",A="FL:::/Kernel/KernelA.HPP,1808"$ $LK,"CD3",A="FL:::/Kernel/KernelA.HPP,154"$ $LK,"progress4_desc",A="FL:::/Kernel/KernelB.HPP,226"$ $LK,"RFLAGf_ZERO",A="FL:::/Kernel/KernelA.HPP,308"$ -$LK,"DrvMapBlkClean",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,75",BI=286$ -$LK,"CCF_CLASS_IP",A="FL:::/Kernel/KernelA.HPP,2075"$ -$LK,"WIf_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1420"$ +$LK,"DrvFATBlkClean",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,75",BI=286$ +$LK,"CCF_CLASS_IP",A="FL:::/Kernel/KernelA.HPP,2125"$ +$LK,"WIf_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1424"$ $LK,"PCIReadU8",A="FL:::/Kernel/PCIBIOS.CPP.Z,163",BI=287$ -$LK,"SYS_SEMA_SYS_DATE",A="FL:::/Kernel/KernelA.HPP,589"$ +$LK,"SYS_SEMA_SYS_DATE",A="FL:::/Kernel/KernelA.HPP,590"$ $LK,"EXT_WIN_FOCUS",A="FL:::/Kernel/KernelA.HPP,570"$ -$LK,"ClustersAlloc",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,134",BI=288$ -$LK,"WIF_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1384"$ +$LK,"ClustersAlloc",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,134",BI=288$ +$LK,"WIF_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1386"$ $LK,"MAX_U64",A="FL:::/Kernel/KernelA.HPP,37"$ -$LK,"WIf_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1411"$ -$LK,"CHashAC",A="FL:::/Kernel/KernelA.HPP,744"$ -$LK,"DOCf_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1272"$ -$LK,"DOCF_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1237"$ +$LK,"WIf_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1414"$ +$LK,"CHashAC",A="FL:::/Kernel/KernelA.HPP,746"$ +$LK,"DOCf_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1275"$ +$LK,"DOCF_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1240"$ $LK,"PrintWarn",A="FL:::/Kernel/StrPrint.CPP.Z,922",BI=289$ $LK,"LoadOneImport",A="FL:::/Kernel/KLoad.CPP.Z,1",BI=290$ -$LK,"FOpen",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,9",BI=291$ -$LK,"CCF_LAST_WAS_DOT",A="FL:::/Kernel/KernelA.HPP,2069"$ -$LK,"CMF_DEFINED",A="FL:::/Kernel/KernelA.HPP,1611"$ -$LK,"WIf_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1422"$ -$LK,"HTG_ALL",A="FL:::/Kernel/KernelA.HPP,706"$ +$LK,"FOpen",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,9",BI=291$ +$LK,"CCF_LAST_WAS_DOT",A="FL:::/Kernel/KernelA.HPP,2119"$ +$LK,"CMF_DEFINED",A="FL:::/Kernel/KernelA.HPP,1660"$ +$LK,"WIf_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1426"$ +$LK,"HTG_ALL",A="FL:::/Kernel/KernelA.HPP,708"$ $LK,"sys_var_init_val",A="FL:::/Kernel/KernelB.HPP,192"$ -$LK,"FUF_REPLACE",A="FL:::/Kernel/KernelA.HPP,2511"$ -$LK,"FUf_REPLACE",A="FL:::/Kernel/KernelA.HPP,2486"$ -$LK,"DrvRep",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,256",BI=292$ -$LK,"BlkDevUnlock",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,15",BI=293$ -$LK,"CMemUsed",A="FL:::/Kernel/KernelA.HPP,2726"$ -$LK,"WIF_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1386"$ -$LK,"JobQue",A="FL:::/Kernel/MultiProc.CPP.Z,232",BI=294$ -$LK,"TSSBusy",A="FL:::/Kernel/MultiProc.CPP.Z,71",BI=295$ -$LK,"DrvTypeSet",A="FL:::/Kernel/Dsk/DskFmt.CPP.Z,1",BI=296$ -$LK,"FUF_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2520"$ -$LK,"FUf_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2495"$ -$LK,"WIf_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1412"$ -$LK,"DirNameAbs",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,87",BI=297$ -$LK,"DOF_DONT_HOME",A="FL:::/Kernel/KernelA.HPP,1196"$ -$LK,"CH_ESC",A="FL:::/Kernel/KernelA.HPP,3416"$ -$LK,"DOCEf_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1089"$ -$LK,"DOCEG1_DONT_EDIT",A="FL:::/Kernel/KernelA.HPP,1016"$ -$LK,"DOCEF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1014"$ -$LK,"CDImageWrite",A="FL:::/Kernel/Dsk/DskCDDVD.CPP.Z,80",BI=298$ -$LK,"DrvMapBlkAlloc",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,65",BI=299$ +$LK,"FUF_REPLACE",A="FL:::/Kernel/KernelA.HPP,2561"$ +$LK,"FUf_REPLACE",A="FL:::/Kernel/KernelA.HPP,2536"$ +$LK,"DrvRep",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,254",BI=292$ +$LK,"BlkDevUnlock",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,15",BI=293$ +$LK,"CMemUsed",A="FL:::/Kernel/KernelA.HPP,2776"$ +$LK,"WIF_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1388"$ +$LK,"IntMPCrash",A="FL:::/Kernel/MultiProc.CPP.Z,399",BI=294$ +$LK,"JobQue",A="FL:::/Kernel/MultiProc.CPP.Z,232",BI=295$ +$LK,"TSSBusy",A="FL:::/Kernel/MultiProc.CPP.Z,71",BI=296$ +$LK,"DrvTypeSet",A="FL:::/Kernel/BlkDev/DskFmt.CPP.Z,1",BI=297$ +$LK,"FUF_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2570"$ +$LK,"FUf_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2545"$ +$LK,"WIf_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1415"$ +$LK,"DirNameAbs",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,87",BI=298$ +$LK,"DOF_DONT_HOME",A="FL:::/Kernel/KernelA.HPP,1199"$ +$LK,"CH_ESC",A="FL:::/Kernel/KernelA.HPP,3465"$ +$LK,"DOCEf_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1092"$ +$LK,"DOCEG1_DONT_EDIT",A="FL:::/Kernel/KernelA.HPP,1019"$ +$LK,"DOCEF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1017"$ +$LK,"DrvFATBlkAlloc",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,65",BI=299$ $LK,"WildMatch",A="FL:::/Kernel/StrA.CPP.Z,656",BI=300$ -$LK,"CDC",A="FL:::/Kernel/KernelA.HPP,3557"$ -$LK,"SC_CURSOR_LEFT",A="FL:::/Kernel/KernelA.HPP,3469"$ +$LK,"CDC",A="FL:::/Kernel/KernelA.HPP,3608"$ +$LK,"SC_CURSOR_LEFT",A="FL:::/Kernel/KernelA.HPP,3520"$ $LK,"IsMute",A="FL:::/Kernel/KMisc.CPP.Z,218",BI=301$ -$LK,"DOCT_CLEAR",A="FL:::/Kernel/KernelA.HPP,895"$ -$LK,"MouseRst",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,37",BI=302$ -$LK,"HashTypeNum",A="FL:::/Kernel/KHashB.CPP.Z,1",BI=303$ -$LK,"BDf_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2557"$ -$LK,"BDF_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2547"$ -$LK,"DCF_JUST_MIRROR",A="FL:::/Kernel/KernelA.HPP,3534"$ -$LK,"WIG_USER_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1407"$ +$LK,"DOCT_CLEAR",A="FL:::/Kernel/KernelA.HPP,898"$ +$LK,"DVDImageWrite",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,79",BI=302$ +$LK,"MouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,37",BI=303$ +$LK,"HashTypeNum",A="FL:::/Kernel/KHashB.CPP.Z,1",BI=304$ +$LK,"BDf_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2607"$ +$LK,"BDF_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2597"$ +$LK,"DCF_JUST_MIRROR",A="FL:::/Kernel/KernelA.HPP,3585"$ +$LK,"WIG_USER_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1410"$ $LK,"sys_cache_line_width",A="FL:::/Kernel/KernelB.HPP,271"$ $LK,"XchgI64",A="FL:::/Kernel/KernelB.HPP,266"$ -$LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HPP,3468"$ -$LK,"DOF_DONT_WINMGR_SYNC",A="FL:::/Kernel/KernelA.HPP,1199"$ +$LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HPP,3519"$ +$LK,"DOF_DONT_WINMGR_SYNC",A="FL:::/Kernel/KernelA.HPP,1202"$ $LK,"I_SINGLE_STEP",A="FL:::/Kernel/KernelA.HPP,285"$ -$LK,"KbdMouseRst",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,228",BI=304$ -$LK,"ATA_WRITE_MULTI",A="FL:::/Kernel/KernelA.HPP,2178"$ -$LK,"TK_OR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2006"$ -$LK,"DOC_COLOR_KEYWORD",A="FL:::/Kernel/KernelA.HPP,1123"$ -$LK,"XTalkStr",A="FL:::/Kernel/SrvCmd.CPP.Z,503",BI=305$ -$LK,"FUF_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2522"$ -$LK,"FUf_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2497"$ -$LK,"CCF_IN_QUOTES",A="FL:::/Kernel/KernelA.HPP,2052"$ +$LK,"KbdMouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,228",BI=305$ +$LK,"ATA_WRITE_MULTI",A="FL:::/Kernel/KernelA.HPP,2228"$ +$LK,"TK_OR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2056"$ +$LK,"DOC_COLOR_KEYWORD",A="FL:::/Kernel/KernelA.HPP,1126"$ +$LK,"XTalkStr",A="FL:::/Kernel/SrvCmd.CPP.Z,492",BI=306$ +$LK,"FUF_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2572"$ +$LK,"FUf_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2547"$ +$LK,"CCF_IN_QUOTES",A="FL:::/Kernel/KernelA.HPP,2102"$ $LK,"CFifoU8",A="FL:::/Kernel/KernelA.HPP,169"$ -$LK,"ATAReadNativeMax",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,187",BI=306$ -$LK,"JobResultScan",A="FL:::/Kernel/SrvCmd.CPP.Z,166",BI=307$ -$LK,"SYS_KERNEL_END",A="FL:::/Kernel/KEnd.CPP.Z,218"$ +$LK,"ATAReadNativeMax",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,187",BI=307$ +$LK,"JobResultScan",A="FL:::/Kernel/SrvCmd.CPP.Z,162",BI=308$ +$LK,"SYS_KERNEL_END",A="FL:::/Kernel/KEnd.CPP.Z,220"$ $LK,"TakeExcept",A="FL:::/Kernel/KExcept.CPP.Z,42"$ $LK,"_MALLOC",A="FL:::/Kernel/MemB.CPP.Z,4"$ -$LK,"CHashDefineStr",A="FL:::/Kernel/KernelA.HPP,815"$ +$LK,"CHashDefineStr",A="FL:::/Kernel/KernelA.HPP,817"$ $LK,"MemSet",A="FL:::/Kernel/KernelB.HPP,177"$ $LK,"SPF_SLASH",A="FL:::/Kernel/StrPrint.CPP.Z,6"$ $LK,"_TRUNC",A="FL:::/Kernel/KMathA.CPP.Z,400"$ -$LK,"HTF_IMM",A="FL:::/Kernel/KernelA.HPP,697"$ -$LK,"FUF_IGNORE",A="FL:::/Kernel/KernelA.HPP,2508"$ -$LK,"FUf_IGNORE",A="FL:::/Kernel/KernelA.HPP,2483"$ -$LK,"AAT_SUB_U32",A="FL:::/Kernel/KernelA.HPP,1884"$ -$LK,"AAT_SUB_U16",A="FL:::/Kernel/KernelA.HPP,1882"$ -$LK,"IP_MOUSE",A="FL:::/Kernel/KernelA.HPP,2943"$ -$LK,"ATAIDDrvs",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,198",BI=308$ -$LK,"UserCmdLine",A="FL:::/Kernel/Task.CPP.Z,356",BI=309$ -$LK,"GVF_FUN",A="FL:::/Kernel/KernelA.HPP,856"$ +$LK,"HTF_IMM",A="FL:::/Kernel/KernelA.HPP,699"$ +$LK,"FUF_IGNORE",A="FL:::/Kernel/KernelA.HPP,2558"$ +$LK,"FUf_IGNORE",A="FL:::/Kernel/KernelA.HPP,2533"$ +$LK,"AAT_SUB_U32",A="FL:::/Kernel/KernelA.HPP,1934"$ +$LK,"AAT_SUB_U16",A="FL:::/Kernel/KernelA.HPP,1932"$ +$LK,"IP_MOUSE",A="FL:::/Kernel/KernelA.HPP,2994"$ +$LK,"ATAIDDrvs",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,194",BI=309$ +$LK,"UserCmdLine",A="FL:::/Kernel/KTask.CPP.Z,352",BI=310$ +$LK,"GVF_FUN",A="FL:::/Kernel/KernelA.HPP,859"$ $LK,"IA32F_LME",A="FL:::/Kernel/KernelA.HPP,513"$ $LK,"LAPICF_APIC_ENABLED",A="FL:::/Kernel/KernelA.HPP,483"$ -$LK,"PCIClassFind",A="FL:::/Kernel/PCIBIOS.CPP.Z,265",BI=310$ -$LK,"ATARep",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,130",BI=311$ -$LK,"KDInputFilterPutS",A="FL:::/Kernel/KeyDev.CPP.Z,125",BI=312$ +$LK,"PCIClassFind",A="FL:::/Kernel/PCIBIOS.CPP.Z,265",BI=311$ +$LK,"ATARep",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,130",BI=312$ +$LK,"KDInputFilterPutS",A="FL:::/Kernel/KeyDev.CPP.Z,115",BI=313$ $LK,"D3SubEqu",A="FL:::/Kernel/KernelB.HPP,167"$ -$LK,"FUF_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2521"$ -$LK,"FUf_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2496"$ -$LK,"CAsmIns",A="FL:::/Kernel/KernelA.HPP,1746"$ +$LK,"FUF_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2571"$ +$LK,"FUf_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2546"$ +$LK,"CAsmIns",A="FL:::/Kernel/KernelA.HPP,1796"$ $LK,"InU32",A="FL:::/Kernel/KernelB.HPP,75"$ $LK,"InU16",A="FL:::/Kernel/KernelB.HPP,74"$ -$LK,"TK_IF",A="FL:::/Kernel/KernelA.HPP,2010"$ -$LK,"DOCT_BLINK",A="FL:::/Kernel/KernelA.HPP,911"$ +$LK,"TK_IF",A="FL:::/Kernel/KernelA.HPP,2060"$ +$LK,"DOCT_BLINK",A="FL:::/Kernel/KernelA.HPP,914"$ $LK,"U32",A="FL:::/Kernel/KernelA.HPP,77"$ $LK,"U16",A="FL:::/Kernel/KernelA.HPP,65"$ $LK,"_XCHG_I64",A="FL:::/Kernel/KUtils.CPP.Z,184"$ -$LK,"ATANop",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,48",BI=313$ +$LK,"ATANop",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,48",BI=314$ $LK,"LXchgU8",A="FL:::/Kernel/KernelB.HPP,262"$ -$LK,"AAT_SUB_U64",A="FL:::/Kernel/KernelA.HPP,1886"$ -$LK,"HasLower",A="FL:::/Kernel/PSect.CPP.Z,1",BI=314$ +$LK,"AAT_SUB_U64",A="FL:::/Kernel/KernelA.HPP,1936"$ +$LK,"HasLower",A="FL:::/Kernel/PSect.CPP.Z,1",BI=315$ $LK,"_CALL",A="FL:::/Kernel/KUtils.CPP.Z,145"$ $LK,"IA32F_SCE",A="FL:::/Kernel/KernelA.HPP,512"$ $LK,"MIN_F64",A="FL:::/Kernel/KernelA.HPP,45"$ -$LK,"__LINE__",A="FL:::/Kernel/KernelA.HPP,1937"$ -$LK,"FUF_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2526"$ -$LK,"KeyDescSet",A="FL:::/Kernel/KeyDev.CPP.Z,56",BI=315$ +$LK,"__LINE__",A="FL:::/Kernel/KernelA.HPP,1987"$ +$LK,"FUF_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2576"$ +$LK,"KeyDescSet",A="FL:::/Kernel/KeyDev.CPP.Z,56",BI=316$ $LK,"U64",A="FL:::/Kernel/KernelA.HPP,93"$ $LK,"MIN_I32",A="FL:::/Kernel/KernelA.HPP,30"$ $LK,"MIN_I16",A="FL:::/Kernel/KernelA.HPP,26"$ -$LK,"FSize",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,1",BI=316$ -$LK,"IntEntrySet",A="FL:::/Kernel/Ints.CPP.Z,105",BI=317$ -$LK,"Mem32DevIns",A="FL:::/Kernel/MemC.CPP.Z,75",BI=318$ +$LK,"FSize",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,1",BI=317$ +$LK,"IntEntrySet",A="FL:::/Kernel/KInts.CPP.Z,101",BI=318$ +$LK,"Mem32DevIns",A="FL:::/Kernel/MemC.CPP.Z,75",BI=319$ $LK,"SYS_MP_CNT_INITIAL",A="FL:::/Kernel/KStart.CPP.Z,225"$ -$LK,"FUf_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2501"$ +$LK,"FUf_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2551"$ $LK,"_FXRSTOR",A="FL:::/Kernel/KMathA.CPP.Z,658"$ $LK,"_CEIL",A="FL:::/Kernel/KMathA.CPP.Z,441"$ -$LK,"INVALID_CLUSTER",A="FL:::/Kernel/KernelA.HPP,2211"$ -$LK,"TaskEnd",A="FL:::/Kernel/Task.CPP.Z,410",BI=319$ +$LK,"INVALID_CLUSTER",A="FL:::/Kernel/KernelA.HPP,2261"$ +$LK,"TaskEnd",A="FL:::/Kernel/KTask.CPP.Z,409",BI=320$ $LK,"MIN_I64",A="FL:::/Kernel/KernelA.HPP,34"$ -$LK,"TaskCaller",A="FL:::/Kernel/KDbg.CPP.Z,75",BI=320$ -$LK,"SV_NONE",A="FL:::/Kernel/KernelA.HPP,1656"$ +$LK,"TaskCaller",A="FL:::/Kernel/KDbg.CPP.Z,75",BI=321$ +$LK,"SV_NONE",A="FL:::/Kernel/KernelA.HPP,1706"$ $LK,"QUE_VECT_U8_CNT",A="FL:::/Kernel/KernelA.HPP,160"$ -$LK,"__DEPTH__",A="FL:::/Kernel/KernelA.HPP,1939"$ -$LK,"RT_I0",A="FL:::/Kernel/KernelA.HPP,1478"$ -$LK,"DOCEF_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,959"$ -$LK,"TK_DEREFERENCE",A="FL:::/Kernel/KernelA.HPP,1990"$ -$LK,"ARGT_UIMM8",A="FL:::/Kernel/KernelA.HPP,1800"$ -$LK,"DOCF_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1252"$ -$LK,"DOCEf_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,1039"$ +$LK,"__DEPTH__",A="FL:::/Kernel/KernelA.HPP,1989"$ +$LK,"RT_I0",A="FL:::/Kernel/KernelA.HPP,1527"$ +$LK,"DOCEF_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,962"$ +$LK,"TK_DEREFERENCE",A="FL:::/Kernel/KernelA.HPP,2040"$ +$LK,"ARGT_UIMM8",A="FL:::/Kernel/KernelA.HPP,1850"$ +$LK,"DOCF_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1255"$ +$LK,"DOCEf_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,1042"$ $LK,"SYS_GDT",A="FL:::/Kernel/KStart.CPP.Z,36"$ -$LK,"SYS_WAKE_HANDLER",A="FL:::/Kernel/Ints.CPP.Z,6"$ -$LK,"CDate2Dos",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,1",BI=321$ -$LK,"MRT_UNUSED",A="FL:::/Kernel/KernelA.HPP,2768"$ -$LK,"RedSeaFilesDel",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,460",BI=322$ +$LK,"CDate2Dos",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,1",BI=322$ +$LK,"MRT_UNUSED",A="FL:::/Kernel/KernelA.HPP,2818"$ +$LK,"RedSeaFilesDel",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,460",BI=323$ $LK,"XchgU32",A="FL:::/Kernel/KernelB.HPP,268"$ $LK,"XchgU16",A="FL:::/Kernel/KernelB.HPP,267"$ $LK,"CCntsGlbls",A="FL:::/Kernel/KernelA.HPP,531"$ $LK,"TEMP_BUF_LEN",A="FL:::/Kernel/StrPrint.CPP.Z,215"$ -$LK,"LastDayOfMon",A="FL:::/Kernel/Date.CPP.Z,82",BI=323$ -$LK,"RT_I8",A="FL:::/Kernel/KernelA.HPP,1480"$ -$LK,"SVCf_WAKE_MASTER",A="FL:::/Kernel/KernelA.HPP,3077"$ -$LK,"CAsmNum",A="FL:::/Kernel/KernelA.HPP,1731"$ +$LK,"LastDayOfMon",A="FL:::/Kernel/KDate.CPP.Z,82",BI=324$ +$LK,"RT_I8",A="FL:::/Kernel/KernelA.HPP,1529"$ +$LK,"SVCf_WAKE_MASTER",A="FL:::/Kernel/KernelA.HPP,3128"$ +$LK,"CAsmNum",A="FL:::/Kernel/KernelA.HPP,1781"$ $LK,"_REP_OUT_U16",A="FL:::/Kernel/KUtils.CPP.Z,297"$ $LK,"_REP_OUT_U32",A="FL:::/Kernel/KUtils.CPP.Z,286"$ -$LK,"VGAM_TEXT",A="FL:::/Kernel/KernelA.HPP,3622"$ -$LK,"TaskFinishOff",A="FL:::/Kernel/Task.CPP.Z,402",BI=324$ -$LK,"FirstDayOfMon",A="FL:::/Kernel/Date.CPP.Z,71",BI=325$ -$LK,"PutChars",A="FL:::/Kernel/KeyDev.CPP.Z,20",BI=326$ +$LK,"VGAM_TEXT",A="FL:::/Kernel/KernelA.HPP,3673"$ +$LK,"ACD_POS",A="FL:::/Kernel/KernelA.HPP,1483"$ +$LK,"TaskFinishOff",A="FL:::/Kernel/KTask.CPP.Z,401",BI=325$ +$LK,"FirstDayOfMon",A="FL:::/Kernel/KDate.CPP.Z,71",BI=326$ +$LK,"PutChars",A="FL:::/Kernel/KeyDev.CPP.Z,20",BI=327$ $LK,"_BEQU",A="FL:::/Kernel/KUtils.CPP.Z,89"$ -$LK,"DOCEf_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1044"$ -$LK,"DOCEF_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,964"$ -$LK,"ansf",A="FL:::/Kernel/KernelA.HPP,3321"$ -$LK,"BlkDevsInitAll",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,316",BI=327$ -$LK,"SysUntry",A="FL:::/Kernel/KExcept.CPP.Z,74",BI=328$ -$LK,"WIF_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1401"$ +$LK,"DOCEf_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1047"$ +$LK,"DOCEF_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,967"$ +$LK,"ansf",A="FL:::/Kernel/KernelA.HPP,3370"$ +$LK,"BlkDevsInitAll",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,316",BI=328$ +$LK,"SysUntry",A="FL:::/Kernel/KExcept.CPP.Z,74",BI=329$ +$LK,"WIF_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1404"$ $LK,"_MEMCMP",A="FL:::/Kernel/KUtils.CPP.Z,70"$ -$LK,"DISPLAYf_NO_BORDER",A="FL:::/Kernel/KernelA.HPP,3207"$ +$LK,"DISPLAYf_NO_BORDER",A="FL:::/Kernel/KernelA.HPP,3255"$ $LK,"OFF",A="FL:::/Kernel/KernelA.HPP,21"$ -$LK,"DOCF_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1254"$ +$LK,"DOCF_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1257"$ $LK,"SYS_BOOT_SRC",A="FL:::/Kernel/KStart.CPP.Z,24"$ -$LK,"FUF_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2519"$ -$LK,"FUf_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2494"$ -$LK,"OC_CALL",A="FL:::/Kernel/KernelA.HPP,1675"$ -$LK,"TaskExe",A="FL:::/Kernel/SrvCmd.CPP.Z,39",BI=329$ -$LK,"ThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,124",BI=330$ -$LK,"FileWrite",A="FL:::/Kernel/Dsk/DskFile.CPP.Z,94",BI=331$ -$LK,"ARf_CSPRITE_PTS_RECTANGLES",A="FL:::/Kernel/KernelA.HPP,3801"$ +$LK,"FUF_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2569"$ +$LK,"FUf_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2544"$ +$LK,"OC_CALL",A="FL:::/Kernel/KernelA.HPP,1725"$ +$LK,"TaskExe",A="FL:::/Kernel/SrvCmd.CPP.Z,39",BI=330$ +$LK,"ThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,124",BI=331$ +$LK,"FileWrite",A="FL:::/Kernel/BlkDev/DskFile.CPP.Z,94",BI=332$ +$LK,"ARf_CSPRITE_PTS_RECTANGLES",A="FL:::/Kernel/KernelA.HPP,3852"$ $LK,"RFLAGf_ID",A="FL:::/Kernel/KernelA.HPP,322"$ -$LK,"PSECT_CACHE_SIZE",A="FL:::/Kernel/KernelA.HPP,3748"$ -$LK,"SCF_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3439"$ -$LK,"SCf_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3425"$ -$LK,"ATAWaitNotBUSY",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,24",BI=332$ +$LK,"PSECT_CACHE_SIZE",A="FL:::/Kernel/KernelA.HPP,3798"$ +$LK,"SCF_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3489"$ +$LK,"SCf_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3474"$ +$LK,"ATAWaitNotBUSY",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,24",BI=333$ $LK,"_XCHG_U16",A="FL:::/Kernel/KUtils.CPP.Z,200"$ $LK,"_XCHG_U32",A="FL:::/Kernel/KUtils.CPP.Z,192"$ -$LK,"SUF_TO_LOWER",A="FL:::/Kernel/KernelA.HPP,3695"$ -$LK,"ARGT_XMM32",A="FL:::/Kernel/KernelA.HPP,1854"$ -$LK,"WIF_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1390"$ +$LK,"SUF_TO_LOWER",A="FL:::/Kernel/KernelA.HPP,3745"$ +$LK,"ARGT_XMM32",A="FL:::/Kernel/KernelA.HPP,1904"$ +$LK,"WIF_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1392"$ $LK,"LDF_SILENT",A="FL:::/Kernel/KernelA.HPP,367"$ -$LK,"RED",A="FL:::/Kernel/KernelA.HPP,2862"$ -$LK,"RT_U0",A="FL:::/Kernel/KernelA.HPP,1479"$ -$LK,"SYS_SEMA_DEBUG",A="FL:::/Kernel/KernelA.HPP,586"$ -$LK,"SrvCmdDel",A="FL:::/Kernel/SrvCmd.CPP.Z,1",BI=333$ -$LK,"VGAR_MAP_MASK",A="FL:::/Kernel/KernelA.HPP,3640"$ -$LK,"CAOTCtrl",A="FL:::/Kernel/KernelA.HPP,1961"$ -$LK,"SCF_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3447"$ -$LK,"TASK_CONTEXT_SAVE",A="FL:::/Kernel/Sched.CPP.Z,47"$ -$LK,"SCf_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3433"$ -$LK,"CDirContext",A="FL:::/Kernel/KernelA.HPP,2674"$ -$LK,"SysThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,110",BI=334$ -$LK,"_D3_DIST_SQR",A="FL:::/Kernel/KMathA.CPP.Z,61"$ +$LK,"RED",A="FL:::/Kernel/KernelA.HPP,2912"$ +$LK,"RT_U0",A="FL:::/Kernel/KernelA.HPP,1528"$ +$LK,"SYS_SEMA_DEBUG",A="FL:::/Kernel/KernelA.HPP,587"$ +$LK,"SrvCmdDel",A="FL:::/Kernel/SrvCmd.CPP.Z,1",BI=334$ +$LK,"VGAR_MAP_MASK",A="FL:::/Kernel/KernelA.HPP,3691"$ +$LK,"CAOTCtrl",A="FL:::/Kernel/KernelA.HPP,2011"$ +$LK,"SCF_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3497"$ +$LK,"TASK_CONTEXT_SAVE",A="FL:::/Kernel/Sched.CPP.Z,41"$ +$LK,"SCf_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3482"$ +$LK,"CDirContext",A="FL:::/Kernel/KernelA.HPP,2724"$ +$LK,"BootDVDProbeAll",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,28",BI=335$ +$LK,"SysThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,110",BI=336$ $LK,"_MEMCPY",A="FL:::/Kernel/KUtils.CPP.Z,55"$ -$LK,"ARGT_XMM64",A="FL:::/Kernel/KernelA.HPP,1855"$ -$LK,"ATAWriteBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,461",BI=335$ -$LK,"LEX_MAX_IDENT",A="FL:::/Kernel/KernelA.HPP,2024"$ -$LK,"RT_U8",A="FL:::/Kernel/KernelA.HPP,1481"$ -$LK,"DOCEf_USER_DATA",A="FL:::/Kernel/KernelA.HPP,1048"$ -$LK,"DOCEF_USER_DATA",A="FL:::/Kernel/KernelA.HPP,968"$ -$LK,"COPY_BUF_BLKS",A="FL:::/Kernel/Dsk/DskCopy.CPP.Z,22"$ -$LK,"FAT32FileWrite",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,818",BI=336$ -$LK,"CISO1Date",A="FL:::/Kernel/KernelA.HPP,2364"$ -$LK,"EDf_BAIL",A="FL:::/Kernel/KernelA.HPP,1229"$ -$LK,"EDF_BAIL",A="FL:::/Kernel/KernelA.HPP,1223"$ -$LK,"ChkCodePtr",A="FL:::/Kernel/KDbg.CPP.Z,16",BI=337$ +$LK,"_D3_DIST_SQR",A="FL:::/Kernel/KMathA.CPP.Z,61"$ +$LK,"ARGT_XMM64",A="FL:::/Kernel/KernelA.HPP,1905"$ +$LK,"ATAWriteBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,461",BI=337$ +$LK,"LEX_MAX_IDENT",A="FL:::/Kernel/KernelA.HPP,2074"$ +$LK,"RT_U8",A="FL:::/Kernel/KernelA.HPP,1530"$ +$LK,"DOCEf_USER_DATA",A="FL:::/Kernel/KernelA.HPP,1051"$ +$LK,"DOCEF_USER_DATA",A="FL:::/Kernel/KernelA.HPP,971"$ +$LK,"COPY_BUF_BLKS",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,22"$ +$LK,"FAT32FileWrite",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,818",BI=338$ +$LK,"CISO1Date",A="FL:::/Kernel/KernelA.HPP,2414"$ +$LK,"EDf_BAIL",A="FL:::/Kernel/KernelA.HPP,1232"$ +$LK,"EDF_BAIL",A="FL:::/Kernel/KernelA.HPP,1226"$ +$LK,"ChkCodePtr",A="FL:::/Kernel/KDbg.CPP.Z,16",BI=339$ $LK,"SYS_RAM_REBOOT",A="FL:::/Kernel/KStart.CPP.Z,348"$ -$LK,"ISO1T_BOOT_RECORD",A="FL:::/Kernel/KernelA.HPP,2389"$ -$LK,"FileFind",A="FL:::/Kernel/Dsk/DskFind.CPP.Z,57",BI=338$ +$LK,"ISO1T_BOOT_RECORD",A="FL:::/Kernel/KernelA.HPP,2439"$ +$LK,"FileFind",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,57",BI=340$ $LK,"SYS_FIND_PCI_SERVICES",A="FL:::/Kernel/PCIBIOS.CPP.Z,38"$ -$LK,"VGAP_ATTR_DATA_WRITE",A="FL:::/Kernel/KernelA.HPP,3626"$ -$LK,"FUF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2528"$ +$LK,"VGAP_ATTR_DATA_WRITE",A="FL:::/Kernel/KernelA.HPP,3677"$ +$LK,"FUF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2578"$ $LK,"MIN_U32",A="FL:::/Kernel/KernelA.HPP,32"$ $LK,"MIN_U16",A="FL:::/Kernel/KernelA.HPP,28"$ -$LK,"CFileNameTo",A="FL:::/Kernel/Dsk/DskStrB.CPP.Z,1",BI=339$ -$LK,"IntNop",A="FL:::/Kernel/Ints.CPP.Z,139",BI=340$ +$LK,"CFileNameTo",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,1",BI=341$ +$LK,"IntNop",A="FL:::/Kernel/KInts.CPP.Z,135",BI=342$ $LK,"_D3_MUL_EQU",A="FL:::/Kernel/KMathA.CPP.Z,273"$ -$LK,"DISPLAYf_SHOW",A="FL:::/Kernel/KernelA.HPP,3205"$ -$LK,"DOF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1200"$ -$LK,"HTF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,694"$ -$LK,"HTf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,664"$ -$LK,"SYS_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,86"$ -$LK,"OC_OP_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1670"$ -$LK,"ICF_NOT_ADDR",A="FL:::/Kernel/KernelA.HPP,1518"$ -$LK,"CCF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,2057"$ -$LK,"MLF_FUN",A="FL:::/Kernel/KernelA.HPP,768"$ -$LK,"TaskMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,122",BI=341$ -$LK,"RBlks",A="FL:::/Kernel/Dsk/DskBlk.CPP.Z,31",BI=342$ -$LK,"DOCEF_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1004"$ -$LK,"HTF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,700"$ -$LK,"FAT32Cd",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,404",BI=343$ -$LK,"DOCEf_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1079"$ -$LK,"HTf_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,670"$ +$LK,"DISPLAYf_SHOW",A="FL:::/Kernel/KernelA.HPP,3253"$ +$LK,"DOF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1203"$ +$LK,"HTF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,696"$ +$LK,"HTf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,666"$ +$LK,"SYS_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,41"$ +$LK,"OC_OP_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1720"$ +$LK,"ICF_NOT_ADDR",A="FL:::/Kernel/KernelA.HPP,1567"$ +$LK,"CCF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,2107"$ +$LK,"MLF_FUN",A="FL:::/Kernel/KernelA.HPP,770"$ +$LK,"TaskMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,118",BI=343$ +$LK,"RBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,31",BI=344$ +$LK,"DOCEF_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1007"$ +$LK,"HTF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,702"$ +$LK,"FAT32Cd",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,404",BI=345$ +$LK,"DOCEf_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1082"$ +$LK,"HTf_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,672"$ $LK,"CAP16BitInit",A="FL:::/Kernel/KernelA.HPP,519"$ -$LK,"ATAPIWriteBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,535",BI=344$ -$LK,"cnts",A="FL:::/Kernel/KGlbls.CPP.Z,17"$ +$LK,"ATAPIWriteBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,535",BI=346$ +$LK,"cnts",A="FL:::/Kernel/KGlbls.CPP.Z,20"$ $LK,"chars_bmp_displayable",A="FL:::/Kernel/StrA.CPP.Z,386"$ $LK,"SYS_HEAP_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"FUF_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2527"$ -$LK,"ScanChar",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,114",BI=345$ +$LK,"FUF_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2577"$ +$LK,"ScanChar",A="FL:::/Kernel/SerialDev/Message.CPP.Z,110",BI=347$ $LK,"RepInU32",A="FL:::/Kernel/KernelB.HPP,83"$ $LK,"RepInU16",A="FL:::/Kernel/KernelB.HPP,81"$ -$LK,"TK_GREATER_EQUAL",A="FL:::/Kernel/KernelA.HPP,1997"$ +$LK,"TK_GREATER_EQUAL",A="FL:::/Kernel/KernelA.HPP,2047"$ $LK,"loge_2",A="FL:::/Kernel/KernelA.HPP,54"$ $LK,"MIN_U64",A="FL:::/Kernel/KernelA.HPP,36"$ $LK,"chars_bmp_white_space",A="FL:::/Kernel/StrA.CPP.Z,356"$ -$LK,"FAT32FileFind",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,303",BI=346$ -$LK,"GSF_SHIFT_ESC_EXIT",A="FL:::/Kernel/KernelA.HPP,3684"$ -$LK,"SFG_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,3705"$ -$LK,"FUf_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2502"$ -$LK,"DOCf_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1289"$ -$LK,"DOCf_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1283"$ -$LK,"DOCF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1248"$ -$LK,"DirTreeDel2",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,49",BI=347$ -$LK,"FUF_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2518"$ -$LK,"FUf_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2493"$ -$LK,"DOCT_DFT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,906"$ -$LK,"DOCT_DFT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,905"$ -$LK,"BOOT_SRC_HARDDRV",A="FL:::/Kernel/KernelA.HPP,3787"$ -$LK,"HashFind",A="FL:::/Kernel/KHashA.CPP.Z,300"$ +$LK,"FAT32FileFind",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,303",BI=348$ +$LK,"GSF_SHIFT_ESC_EXIT",A="FL:::/Kernel/KernelA.HPP,3734"$ +$LK,"SFG_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,3755"$ +$LK,"FUf_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2552"$ +$LK,"DOCf_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1292"$ +$LK,"DOCf_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1286"$ +$LK,"DOCF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1251"$ +$LK,"DirTreeDel2",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,49",BI=349$ +$LK,"FUF_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2568"$ +$LK,"FUf_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2543"$ +$LK,"DOCT_DFT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,909"$ +$LK,"DOCT_DFT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,908"$ +$LK,"BOOT_SRC_HARDDRV",A="FL:::/Kernel/KernelA.HPP,3838"$ +$LK,"HashFind",A="FL:::/Kernel/KHashA.CPP.Z,255"$ $LK,"D3Cross",A="FL:::/Kernel/KernelB.HPP,153"$ -$LK,"MAX_PTR_STARS",A="FL:::/Kernel/KernelA.HPP,762"$ -$LK,"DOCEF_ESC",A="FL:::/Kernel/KernelA.HPP,992"$ +$LK,"MAX_PTR_STARS",A="FL:::/Kernel/KernelA.HPP,764"$ +$LK,"DOCEF_ESC",A="FL:::/Kernel/KernelA.HPP,995"$ $LK,"_FREE",A="FL:::/Kernel/MemB.CPP.Z,209"$ -$LK,"SrcLineNum",A="FL:::/Kernel/PSect.CPP.Z,147",BI=348$ -$LK,"ATAPIClose",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,521",BI=349$ -$LK,"DOCT_MACRO",A="FL:::/Kernel/KernelA.HPP,921"$ -$LK,"CH_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3417"$ -$LK,"DOCEf_HARD_SKIP",A="FL:::/Kernel/KernelA.HPP,1086"$ -$LK,"DOCEF_HARD_SKIP",A="FL:::/Kernel/KernelA.HPP,1011"$ -$LK,"InDbg",A="FL:::/Kernel/KMisc.CPP.Z,270",BI=350$ -$LK,"Dbg",A="FL:::/Kernel/KDbg.CPP.Z,640",BI=351$ +$LK,"SrcLineNum",A="FL:::/Kernel/PSect.CPP.Z,144",BI=350$ +$LK,"ATAPIClose",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,521",BI=351$ +$LK,"DOCT_MACRO",A="FL:::/Kernel/KernelA.HPP,924"$ +$LK,"CH_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3466"$ +$LK,"DOCEf_HARD_SKIP",A="FL:::/Kernel/KernelA.HPP,1089"$ +$LK,"DOCEF_HARD_SKIP",A="FL:::/Kernel/KernelA.HPP,1014"$ +$LK,"InDbg",A="FL:::/Kernel/KMisc.CPP.Z,265",BI=352$ +$LK,"Dbg",A="FL:::/Kernel/KDbg.CPP.Z,641",BI=353$ $LK,"Abs",A="FL:::/Kernel/KernelB.HPP,95"$ $LK,"CDATE_YEAR_DAYS",A="FL:::/Kernel/KernelA.HPP,181"$ $LK,"RFLAGf_OVERFLOW",A="FL:::/Kernel/KernelA.HPP,313"$ $LK,"SYS_POW",A="FL:::/Kernel/KMathA.CPP.Z,462"$ $LK,"StrNICmp",A="FL:::/Kernel/StrA.CPP.Z,315"$ -$LK,"DOCf_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1287"$ -$LK,"DOCEf_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,1058"$ -$LK,"DOCEF_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,983"$ -$LK,"DCF_FILL_NOT_COLOR",A="FL:::/Kernel/KernelA.HPP,3540"$ -$LK,"FileAttr",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,211",BI=352$ +$LK,"DOCf_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1290"$ +$LK,"DOCEf_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,1061"$ +$LK,"DOCEF_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,986"$ +$LK,"DCF_FILL_NOT_COLOR",A="FL:::/Kernel/KernelA.HPP,3591"$ +$LK,"FileAttr",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,211",BI=354$ $LK,"_MEMSET",A="FL:::/Kernel/KUtils.CPP.Z,3"$ -$LK,"ROP_COLLISION",A="FL:::/Kernel/KernelA.HPP,2844"$ -$LK,"TK_PLUS_PLUS",A="FL:::/Kernel/KernelA.HPP,1988"$ -$LK,"Mem2MegWriteThruAlloc",A="FL:::/Kernel/MemA.CPP.Z,426",BI=353$ +$LK,"ROP_COLLISION",A="FL:::/Kernel/KernelA.HPP,2894"$ +$LK,"TK_PLUS_PLUS",A="FL:::/Kernel/KernelA.HPP,2038"$ +$LK,"Mem2MegWriteThruAlloc",A="FL:::/Kernel/MemA.CPP.Z,426",BI=355$ $LK,"sys_heap_init_val",A="FL:::/Kernel/KernelB.HPP,188"$ -$LK,"VGAP_REG_WRITE",A="FL:::/Kernel/KernelA.HPP,3633"$ -$LK,"FUF_EXPAND",A="FL:::/Kernel/KernelA.HPP,2514"$ -$LK,"FUf_EXPAND",A="FL:::/Kernel/KernelA.HPP,2489"$ -$LK,"Del",A="FL:::/Kernel/Dsk/DskCopy.CPP.Z,82",BI=354$ +$LK,"VGAP_REG_WRITE",A="FL:::/Kernel/KernelA.HPP,3684"$ +$LK,"FUF_EXPAND",A="FL:::/Kernel/KernelA.HPP,2564"$ +$LK,"FUf_EXPAND",A="FL:::/Kernel/KernelA.HPP,2539"$ +$LK,"Del",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,82",BI=356$ $LK,"IDTET_TASK",A="FL:::/Kernel/KernelA.HPP,278"$ -$LK,"TaskValidate",A="FL:::/Kernel/Task.CPP.Z,19",BI=355$ +$LK,"TaskValidate",A="FL:::/Kernel/KTask.CPP.Z,19",BI=357$ $LK,"LAPIC_ARIBITRATION_PRIORITY",A="FL:::/Kernel/KernelA.HPP,476"$ -$LK,"fp_set_std_palette",A="FL:::/Kernel/KGlbls.CPP.Z,31"$ -$LK,"keydev",A="FL:::/Kernel/KGlbls.CPP.Z,22"$ -$LK,"HashBucketFind",A="FL:::/Kernel/KHashA.CPP.Z,305"$ -$LK,"IC_BODY_SIZE",A="FL:::/Kernel/KernelA.HPP,1541"$ -$LK,"TY_DISP",A="FL:::/Kernel/KernelA.HPP,1499"$ -$LK,"TY_RIP_DISP32",A="FL:::/Kernel/KernelA.HPP,1501"$ +$LK,"fp_set_std_palette",A="FL:::/Kernel/KGlbls.CPP.Z,34"$ +$LK,"keydev",A="FL:::/Kernel/KGlbls.CPP.Z,26"$ +$LK,"HashBucketFind",A="FL:::/Kernel/KHashA.CPP.Z,260"$ +$LK,"IC_BODY_SIZE",A="FL:::/Kernel/KernelA.HPP,1590"$ +$LK,"TY_DISP",A="FL:::/Kernel/KernelA.HPP,1548"$ +$LK,"TY_RIP_DISP32",A="FL:::/Kernel/KernelA.HPP,1550"$ $LK,"chars_bmp_alpha_numeric",A="FL:::/Kernel/StrA.CPP.Z,330"$ $LK,"_LOG2",A="FL:::/Kernel/KMathA.CPP.Z,603"$ -$LK,"ROPB_COLLISION",A="FL:::/Kernel/KernelA.HPP,2835"$ -$LK,"HTT_WORD",A="FL:::/Kernel/KernelA.HPP,681"$ -$LK,"HTt_WORD",A="FL:::/Kernel/KernelA.HPP,651"$ -$LK,"FUG_FILE_FIND",A="FL:::/Kernel/KernelA.HPP,2534"$ +$LK,"ROPB_COLLISION",A="FL:::/Kernel/KernelA.HPP,2885"$ +$LK,"HTT_WORD",A="FL:::/Kernel/KernelA.HPP,683"$ +$LK,"HTt_WORD",A="FL:::/Kernel/KernelA.HPP,653"$ +$LK,"FUG_FILE_FIND",A="FL:::/Kernel/KernelA.HPP,2584"$ $LK,"I_PAGE_FAULT",A="FL:::/Kernel/KernelA.HPP,288"$ -$LK,"DrvUnlock",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,14",BI=356$ -$LK,"CProgress",A="FL:::/Kernel/KernelA.HPP,3807"$ +$LK,"DrvUnlock",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,14",BI=358$ +$LK,"CProgress",A="FL:::/Kernel/KernelA.HPP,3858"$ $LK,"Arg",A="FL:::/Kernel/KernelB.HPP,121"$ $LK,"CallExtNum",A="FL:::/Kernel/KernelB.HPP,54"$ -$LK,"DOCEF_DATA_IS_PTR",A="FL:::/Kernel/KernelA.HPP,1002"$ -$LK,"DirFile",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,267",BI=357$ -$LK,"DOCEf_DATA_IS_PTR",A="FL:::/Kernel/KernelA.HPP,1077"$ -$LK,"DOCEF_TAG",A="FL:::/Kernel/KernelA.HPP,954"$ +$LK,"DOCEF_DATA_IS_PTR",A="FL:::/Kernel/KernelA.HPP,1005"$ +$LK,"DirFile",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,267",BI=359$ +$LK,"DOCEf_DATA_IS_PTR",A="FL:::/Kernel/KernelA.HPP,1080"$ +$LK,"DOCEF_TAG",A="FL:::/Kernel/KernelA.HPP,957"$ $LK,"Btc",A="FL:::/Kernel/KernelB.HPP,16"$ -$LK,"CCF_KEEP_NEW_LINES",A="FL:::/Kernel/KernelA.HPP,2045"$ -$LK,"Dir",A="FL:::/Kernel/Dsk/DskDirB.CPP.Z,91",BI=358$ +$LK,"CCF_KEEP_NEW_LINES",A="FL:::/Kernel/KernelA.HPP,2095"$ +$LK,"Dir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,91",BI=360$ $LK,"Bsf",A="FL:::/Kernel/KernelB.HPP,10"$ -$LK,"ECF_HAS_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1543"$ -$LK,"WIf_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1415"$ -$LK,"DOCT_PAGE_BREAK",A="FL:::/Kernel/KernelA.HPP,896"$ -$LK,"SYS_SEMA_RECORD_MACRO",A="FL:::/Kernel/KernelA.HPP,587"$ -$LK,"IPVarsUpdate",A="FL:::/Kernel/KbdMouse/InputPointer.CPP.Z,9",BI=359$ -$LK,"MLF_LASTCLASS",A="FL:::/Kernel/KernelA.HPP,766"$ +$LK,"ECF_HAS_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1592"$ +$LK,"WIf_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1418"$ +$LK,"DOCT_PAGE_BREAK",A="FL:::/Kernel/KernelA.HPP,899"$ +$LK,"SYS_SEMA_RECORD_MACRO",A="FL:::/Kernel/KernelA.HPP,588"$ +$LK,"IPVarsUpdate",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,9",BI=361$ +$LK,"MLF_LASTCLASS",A="FL:::/Kernel/KernelA.HPP,768"$ $LK,"Fxrstor",A="FL:::/Kernel/KernelB.HPP,133"$ -$LK,"_R8",A="FL:::/Kernel/KernelA.HPP,3332"$ -$LK,"_R9",A="FL:::/Kernel/KernelA.HPP,3333"$ -$LK,"FileRead",A="FL:::/Kernel/Dsk/DskFile.CPP.Z,1",BI=360$ -$LK,"DOCf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1293"$ -$LK,"DOCF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1257"$ -$LK,"DOCT_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,929"$ +$LK,"_R8",A="FL:::/Kernel/KernelA.HPP,3381"$ +$LK,"_R9",A="FL:::/Kernel/KernelA.HPP,3382"$ +$LK,"FileRead",A="FL:::/Kernel/BlkDev/DskFile.CPP.Z,1",BI=362$ +$LK,"DOCf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1296"$ +$LK,"DOCF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1260"$ +$LK,"DOCT_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,932"$ $LK,"_FAR_CALL32",A="FL:::/Kernel/PCIBIOS.CPP.Z,69"$ -$LK,"KbdMouseCmdAck",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,67",BI=361$ -$LK,"CAOTHeapGlblRef",A="FL:::/Kernel/KernelA.HPP,1894"$ -$LK,"FAT32DirFill",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,246",BI=362$ -$LK,"QueCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,53",BI=363$ +$LK,"KbdMouseCmdAck",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,65",BI=363$ +$LK,"CAOTHeapGlblRef",A="FL:::/Kernel/KernelA.HPP,1944"$ +$LK,"FAT32DirFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,246",BI=364$ +$LK,"QueCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,53",BI=365$ $LK,"Carry",A="FL:::/Kernel/KernelB.HPP,246"$ $LK,"Cos",A="FL:::/Kernel/KernelB.HPP,97"$ -$LK,"Clamp",A="FL:::/Kernel/KMathB.CPP.Z,1",BI=364$ -$LK,"BDF_FMT",A="FL:::/Kernel/KernelA.HPP,2551"$ -$LK,"TK_SHR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2002"$ -$LK,"Name2DirCluster",A="FL:::/Kernel/Dsk/DskStrB.CPP.Z,10",BI=365$ +$LK,"Clamp",A="FL:::/Kernel/KMathB.CPP.Z,1",BI=366$ +$LK,"BDF_FMT",A="FL:::/Kernel/KernelA.HPP,2601"$ +$LK,"TK_SHR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2052"$ +$LK,"Name2DirCluster",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,10",BI=367$ $LK,"Bsr",A="FL:::/Kernel/KernelB.HPP,12"$ $LK,"SYS_PROGRESS1_MAX",A="FL:::/Kernel/KStart.CPP.Z,209"$ -$LK,"GR_Z_ALL",A="FL:::/Kernel/KernelA.HPP,3519"$ -$LK,"CMasterBoot",A="FL:::/Kernel/KernelA.HPP,2225"$ -$LK,"Fix",A="FL:::/Kernel/EdLite.CPP.Z,337",BI=366$ +$LK,"GR_Z_ALL",A="FL:::/Kernel/KernelA.HPP,3570"$ +$LK,"CMasterBoot",A="FL:::/Kernel/KernelA.HPP,2275"$ +$LK,"Fix",A="FL:::/Kernel/EdLite.CPP.Z,337",BI=368$ $LK,"Btr",A="FL:::/Kernel/KernelB.HPP,18"$ $LK,"_LN",A="FL:::/Kernel/KMathA.CPP.Z,614"$ -$LK,"OPTf_WARN_UNUSED_VAR",A="FL:::/Kernel/KernelA.HPP,1463"$ -$LK,"DOCF_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1266"$ +$LK,"OPTf_WARN_UNUSED_VAR",A="FL:::/Kernel/KernelA.HPP,1512"$ +$LK,"DOCF_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1269"$ $LK,"RFLAGf_CARRY",A="FL:::/Kernel/KernelA.HPP,305"$ -$LK,"FAT32FileRead",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,372",BI=367$ -$LK,"DirFilesFlatten",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,140",BI=368$ -$LK,"FileExtDot",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,1",BI=369$ -$LK,"IsDbg",A="FL:::/Kernel/KMisc.CPP.Z,275",BI=370$ +$LK,"FAT32FileRead",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,372",BI=369$ +$LK,"DirFilesFlatten",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,140",BI=370$ +$LK,"FileExtDot",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,1",BI=371$ +$LK,"IsDbg",A="FL:::/Kernel/KMisc.CPP.Z,270",BI=372$ $LK,"Bts",A="FL:::/Kernel/KernelB.HPP,20"$ -$LK,"CMemBlk",A="FL:::/Kernel/KernelA.HPP,2762"$ -$LK,"DOCEF_LST",A="FL:::/Kernel/KernelA.HPP,1007"$ -$LK,"Man",A="FL:::/Kernel/PSect.CPP.Z,287",BI=371$ -$LK,"Mem512Alloc",A="FL:::/Kernel/MemA.CPP.Z,193",BI=372$ -$LK,"TASK_TITLE_LEN",A="FL:::/Kernel/KernelA.HPP,3150"$ +$LK,"CMemBlk",A="FL:::/Kernel/KernelA.HPP,2812"$ +$LK,"DOCEF_LST",A="FL:::/Kernel/KernelA.HPP,1010"$ +$LK,"Man",A="FL:::/Kernel/PSect.CPP.Z,284",BI=373$ +$LK,"Mem512Alloc",A="FL:::/Kernel/MemA.CPP.Z,193",BI=374$ +$LK,"TASK_TITLE_LEN",A="FL:::/Kernel/KernelA.HPP,3199"$ $LK,"CDATE_FREQ",A="FL:::/Kernel/KernelA.HPP,545"$ -$LK,"FilesFind",A="FL:::/Kernel/Dsk/DskFind.CPP.Z,30",BI=373$ -$LK,"_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,174"$ +$LK,"FilesFind",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,30",BI=375$ +$LK,"_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,129"$ $LK,"MSize",A="FL:::/Kernel/MemB.CPP.Z,369"$ -$LK,"CSysFixedArea",A="FL:::/Kernel/KernelA.HPP,3373"$ -$LK,"Fmt",A="FL:::/Kernel/Dsk/DskFmt.CPP.Z,53",BI=374$ -$LK,"ExeCmdLine",A="FL:::/Kernel/Task.CPP.Z,269",BI=375$ -$LK,"reverse_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,11"$ +$LK,"CSysFixedArea",A="FL:::/Kernel/KernelA.HPP,3422"$ +$LK,"Fmt",A="FL:::/Kernel/BlkDev/DskFmt.CPP.Z,53",BI=376$ +$LK,"ExeCmdLine",A="FL:::/Kernel/KTask.CPP.Z,265",BI=377$ +$LK,"reverse_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,12"$ $LK,"Log10",A="FL:::/Kernel/KernelB.HPP,136"$ -$LK,"FifoI64Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,304",BI=376$ +$LK,"FifoI64Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,304",BI=378$ $LK,"InvlPg",A="FL:::/Kernel/KernelB.HPP,279"$ $LK,"CallExtStr",A="FL:::/Kernel/KernelB.HPP,45"$ -$LK,"VGAM_GRAPHICS",A="FL:::/Kernel/KernelA.HPP,3621"$ -$LK,"DCF_LOCATE_NEAREST",A="FL:::/Kernel/KernelA.HPP,3536"$ -$LK,"Ff_ARGPOP",A="FL:::/Kernel/KernelA.HPP,839"$ -$LK,"DrvMapBlkSet",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,92",BI=377$ -$LK,"SCF_ALT",A="FL:::/Kernel/KernelA.HPP,3443"$ -$LK,"CViewAngles",A="FL:::/Kernel/KernelA.HPP,3006"$ -$LK,"CArrayDim",A="FL:::/Kernel/KernelA.HPP,773"$ -$LK,"DOCEf_NUM_FLAGS",A="FL:::/Kernel/KernelA.HPP,1090"$ -$LK,"Ff_INTERNAL",A="FL:::/Kernel/KernelA.HPP,841"$ -$LK,"Drv",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,201",BI=378$ +$LK,"VGAM_GRAPHICS",A="FL:::/Kernel/KernelA.HPP,3672"$ +$LK,"DCF_LOCATE_NEAREST",A="FL:::/Kernel/KernelA.HPP,3587"$ +$LK,"Ff_ARGPOP",A="FL:::/Kernel/KernelA.HPP,842"$ +$LK,"SCF_ALT",A="FL:::/Kernel/KernelA.HPP,3493"$ +$LK,"CViewAngles",A="FL:::/Kernel/KernelA.HPP,3057"$ +$LK,"CArrayDim",A="FL:::/Kernel/KernelA.HPP,775"$ +$LK,"DOCEf_NUM_FLAGS",A="FL:::/Kernel/KernelA.HPP,1093"$ +$LK,"Ff_INTERNAL",A="FL:::/Kernel/KernelA.HPP,844"$ +$LK,"Drv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,199",BI=379$ $LK,"Fclex",A="FL:::/Kernel/KernelB.HPP,128"$ -$LK,"MEM_PROTECTED_LOW_LIMIT",A="FL:::/Kernel/KernelA.HPP,3370"$ -$LK,"TASKf_PREEMPT",A="FL:::/Kernel/KernelA.HPP,3188"$ -$LK,"Blink",A="FL:::/Kernel/KMisc.CPP.Z,130",BI=379$ -$LK,"CDbgInfo",A="FL:::/Kernel/KernelA.HPP,710"$ +$LK,"MEM_PROTECTED_LOW_LIMIT",A="FL:::/Kernel/KernelA.HPP,3419"$ +$LK,"Blink",A="FL:::/Kernel/KMisc.CPP.Z,130",BI=380$ +$LK,"CDbgInfo",A="FL:::/Kernel/KernelA.HPP,712"$ $LK,"IET_ZEROED_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,411"$ $LK,"RFLAGf_V8086",A="FL:::/Kernel/KernelA.HPP,318"$ $LK,"IDTET_TRAP",A="FL:::/Kernel/KernelA.HPP,280"$ $LK,"SetRBP",A="FL:::/Kernel/KernelB.HPP,254"$ -$LK,"LTGREEN",A="FL:::/Kernel/KernelA.HPP,2868"$ -$LK,"DOCf_BLINK",A="FL:::/Kernel/KernelA.HPP,1295"$ -$LK,"DOCF_BLINK",A="FL:::/Kernel/KernelA.HPP,1259"$ -$LK,"DOCEf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1026"$ -$LK,"DOCEF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1020"$ -$LK,"SysSymImportsResolve",A="FL:::/Kernel/KLoad.CPP.Z,55",BI=380$ -$LK,"RS_ATTR_HIDDEN",A="FL:::/Kernel/KernelA.HPP,2438"$ -$LK,"TY_MASK",A="FL:::/Kernel/KernelA.HPP,1505"$ -$LK,"TaskEndNow",A="FL:::/Kernel/Sched.CPP.Z,345"$ -$LK,"Max",A="FL:::/Kernel/KMathB.CPP.Z,18",BI=381$ -$LK,"DOC_RECALC_FIND_CURSOR",A="FL:::/Kernel/KernelA.HPP,1321"$ -$LK,"SYS_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,134"$ -$LK,"ROPF_DITHER",A="FL:::/Kernel/KernelA.HPP,2853"$ -$LK,"WIG_DBL_CLICK",A="FL:::/Kernel/KernelA.HPP,1404"$ -$LK,"SYS_SEMA_FIX",A="FL:::/Kernel/KernelA.HPP,606"$ +$LK,"LTGREEN",A="FL:::/Kernel/KernelA.HPP,2918"$ +$LK,"DOCf_BLINK",A="FL:::/Kernel/KernelA.HPP,1298"$ +$LK,"DOCF_BLINK",A="FL:::/Kernel/KernelA.HPP,1262"$ +$LK,"DOCEf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1029"$ +$LK,"DOCEF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1023"$ +$LK,"SysSymImportsResolve",A="FL:::/Kernel/KLoad.CPP.Z,55",BI=381$ +$LK,"RS_ATTR_HIDDEN",A="FL:::/Kernel/KernelA.HPP,2488"$ +$LK,"TY_MASK",A="FL:::/Kernel/KernelA.HPP,1554"$ +$LK,"TaskEndNow",A="FL:::/Kernel/Sched.CPP.Z,337"$ +$LK,"Max",A="FL:::/Kernel/KMathB.CPP.Z,18",BI=382$ +$LK,"DOC_RECALC_FIND_CURSOR",A="FL:::/Kernel/KernelA.HPP,1324"$ +$LK,"SYS_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,89"$ +$LK,"ROPF_DITHER",A="FL:::/Kernel/KernelA.HPP,2903"$ +$LK,"WIG_DBL_CLICK",A="FL:::/Kernel/KernelA.HPP,1407"$ +$LK,"SYS_SEMA_FIX",A="FL:::/Kernel/KernelA.HPP,608"$ $LK,"ToF64",A="FL:::/Kernel/KernelB.HPP,119"$ $LK,"SYS_PROGRESS2_MAX",A="FL:::/Kernel/KStart.CPP.Z,212"$ -$LK,"SrvCmdRun",A="FL:::/Kernel/SrvCmd.CPP.Z,270",BI=382$ -$LK,"CH_SHIFT_SPACE",A="FL:::/Kernel/KernelA.HPP,3418"$ -$LK,"ROPBF_DITHER",A="FL:::/Kernel/KernelA.HPP,2839"$ -$LK,"FF_WRITE",A="FL:::/Kernel/KernelA.HPP,2683"$ +$LK,"SrvCmdRun",A="FL:::/Kernel/SrvCmd.CPP.Z,266",BI=383$ +$LK,"CH_SHIFT_SPACE",A="FL:::/Kernel/KernelA.HPP,3467"$ +$LK,"ROPBF_DITHER",A="FL:::/Kernel/KernelA.HPP,2889"$ +$LK,"FF_WRITE",A="FL:::/Kernel/KernelA.HPP,2733"$ $LK,"SetRAX",A="FL:::/Kernel/KernelB.HPP,253"$ -$LK,"Min",A="FL:::/Kernel/KMathB.CPP.Z,10",BI=383$ +$LK,"Min",A="FL:::/Kernel/KMathB.CPP.Z,10",BI=384$ $LK,"mp_cnt",A="FL:::/Kernel/KernelB.HPP,234"$ $LK,"Exp",A="FL:::/Kernel/KernelB.HPP,127"$ -$LK,"DCF_RECORD_EXTENTS",A="FL:::/Kernel/KernelA.HPP,3541"$ -$LK,"FAT32FilesFind",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,851",BI=384$ -$LK,"ISO1Cd",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,219",BI=385$ -$LK,"_HASH_ADD_AFTER",A="FL:::/Kernel/KHashA.CPP.Z,236"$ +$LK,"DCF_RECORD_EXTENTS",A="FL:::/Kernel/KernelA.HPP,3592"$ +$LK,"FAT32FilesFind",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,851",BI=385$ +$LK,"ISO1Cd",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,219",BI=386$ +$LK,"_HASH_ADD_AFTER",A="FL:::/Kernel/KHashA.CPP.Z,191"$ $LK,"QueInit",A="FL:::/Kernel/KernelB.HPP,65"$ -$LK,"ARC_MAX_ENTRY",A="FL:::/Kernel/KernelA.HPP,3644"$ -$LK,"SrvTaskCont",A="FL:::/Kernel/Task.CPP.Z,380",BI=386$ -$LK,"RS_ATTR_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2437"$ -$LK,"ICF_USE_UNSIGNED",A="FL:::/Kernel/KernelA.HPP,1514"$ -$LK,"ATAGetDevId",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,163",BI=387$ -$LK,"WBlks",A="FL:::/Kernel/Dsk/DskBlk.CPP.Z,68",BI=388$ -$LK,"DOCT_ERROR",A="FL:::/Kernel/KernelA.HPP,931"$ -$LK,"CopySingle",A="FL:::/Kernel/Dsk/DskCopy.CPP.Z,23",BI=389$ +$LK,"SrvTaskCont",A="FL:::/Kernel/KTask.CPP.Z,376",BI=387$ +$LK,"RS_ATTR_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2487"$ +$LK,"ICF_USE_UNSIGNED",A="FL:::/Kernel/KernelA.HPP,1563"$ +$LK,"ATAGetDevId",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,163",BI=388$ +$LK,"WBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,68",BI=389$ +$LK,"DOCT_ERROR",A="FL:::/Kernel/KernelA.HPP,934"$ +$LK,"CopySingle",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,23",BI=390$ $LK,"EXT_WIN_TO_TOP",A="FL:::/Kernel/KernelA.HPP,569"$ -$LK,"MouseIPSet",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,216",BI=390$ -$LK,"ATAPIReadCapacity",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,253",BI=391$ -$LK,"MkDir",A="FL:::/Kernel/Dsk/DskDirB.CPP.Z,146",BI=392$ -$LK,"IsDir",A="FL:::/Kernel/Dsk/DskDirB.CPP.Z,76",BI=393$ +$LK,"MouseIPSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,216",BI=391$ +$LK,"ATAPIReadCapacity",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,253",BI=392$ +$LK,"MkDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,146",BI=393$ +$LK,"IsDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,76",BI=394$ $LK,"SetMSR",A="FL:::/Kernel/KernelB.HPP,264"$ $LK,"ToI64",A="FL:::/Kernel/KernelB.HPP,120"$ $LK,"IET_MAIN",A="FL:::/Kernel/KernelA.HPP,412"$ -$LK,"ScanCode2KeyName",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,247",BI=394$ -$LK,"DOCf_INVERT",A="FL:::/Kernel/KernelA.HPP,1296"$ -$LK,"DOCF_INVERT",A="FL:::/Kernel/KernelA.HPP,1260"$ +$LK,"ScanCode2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,245",BI=395$ +$LK,"DOCf_INVERT",A="FL:::/Kernel/KernelA.HPP,1299"$ +$LK,"DOCF_INVERT",A="FL:::/Kernel/KernelA.HPP,1263"$ $LK,"sys_heap_limit",A="FL:::/Kernel/KernelB.HPP,200"$ -$LK,"FileExtRem",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,10",BI=395$ +$LK,"FileExtRem",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,10",BI=396$ $LK,"Tan",A="FL:::/Kernel/KernelB.HPP,117"$ $LK,"SYS_PROGRESS3_MAX",A="FL:::/Kernel/KStart.CPP.Z,215"$ -$LK,"SUF_REM_LEADING",A="FL:::/Kernel/KernelA.HPP,3690"$ -$LK,"OPTf_USE_IMM64",A="FL:::/Kernel/KernelA.HPP,1472"$ -$LK,"Raw",A="FL:::/Kernel/KMisc.CPP.Z,248",BI=396$ -$LK,"Mem2MegUncachedAlloc",A="FL:::/Kernel/MemA.CPP.Z,402",BI=397$ -$LK,"Msg",A="FL:::/Kernel/SrvCmd.CPP.Z,260",BI=398$ -$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,1469"$ -$LK,"KbdInit",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,407",BI=399$ +$LK,"SUF_REM_LEADING",A="FL:::/Kernel/KernelA.HPP,3740"$ +$LK,"OPTf_USE_IMM64",A="FL:::/Kernel/KernelA.HPP,1521"$ +$LK,"Raw",A="FL:::/Kernel/KMisc.CPP.Z,243",BI=397$ +$LK,"Mem2MegUncachedAlloc",A="FL:::/Kernel/MemA.CPP.Z,402",BI=398$ +$LK,"Msg",A="FL:::/Kernel/SrvCmd.CPP.Z,256",BI=399$ +$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,1518"$ +$LK,"KbdInit",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,420",BI=400$ $LK,"chars_bmp_zero_tab_ff_cr_nl_cursor_dollar",A="FL:::/Kernel/StrA.CPP.Z,368"$ $LK,"ToBool",A="FL:::/Kernel/KernelB.HPP,118"$ -$LK,"TASKf_KILL_AFTER_DBG",A="FL:::/Kernel/KernelA.HPP,3199"$ +$LK,"TASKf_KILL_AFTER_DBG",A="FL:::/Kernel/KernelA.HPP,3247"$ +$LK,"IRQMouse",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,13",BI=401$ $LK,"PUT_HEX_U16",A="FL:::/Kernel/StrA.CPP.Z,37"$ $LK,"PUT_HEX_U32",A="FL:::/Kernel/StrA.CPP.Z,30"$ -$LK,"ATAPIStartStop",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,144",BI=400$ +$LK,"ATAPIStartStop",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,144",BI=402$ $LK,"_SIGN",A="FL:::/Kernel/KMathA.CPP.Z,347"$ -$LK,"DVT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2592"$ -$LK,"REGT_R8",A="FL:::/Kernel/KernelA.HPP,730"$ +$LK,"DVT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2642"$ +$LK,"REGT_R8",A="FL:::/Kernel/KernelA.HPP,732"$ $LK,"log10_2",A="FL:::/Kernel/KernelA.HPP,53"$ -$LK,"PrintErr",A="FL:::/Kernel/StrPrint.CPP.Z,914",BI=401$ -$LK,"ROPF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2850"$ -$LK,"BDF_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2550"$ -$LK,"SCF_INS",A="FL:::/Kernel/KernelA.HPP,3451"$ -$LK,"CPUf_RAN_A_TASK",A="FL:::/Kernel/KernelA.HPP,3342"$ -$LK,"BDf_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2560"$ -$LK,"TK_INS_BINARY",A="FL:::/Kernel/KernelA.HPP,2020"$ -$LK,"Snd",A="FL:::/Kernel/KMisc.CPP.Z,163",BI=402$ +$LK,"PrintErr",A="FL:::/Kernel/StrPrint.CPP.Z,914",BI=403$ +$LK,"ROPF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2900"$ +$LK,"BDF_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2600"$ +$LK,"SCF_INS",A="FL:::/Kernel/KernelA.HPP,3501"$ +$LK,"CPUf_RAN_A_TASK",A="FL:::/Kernel/KernelA.HPP,3391"$ +$LK,"BDf_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2610"$ +$LK,"TK_INS_BINARY",A="FL:::/Kernel/KernelA.HPP,2070"$ +$LK,"Snd",A="FL:::/Kernel/KMisc.CPP.Z,163",BI=404$ $LK,"SPF_PAD_ZERO",A="FL:::/Kernel/StrPrint.CPP.Z,1"$ -$LK,"GetChar",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,189",BI=403$ +$LK,"GetChar",A="FL:::/Kernel/SerialDev/Message.CPP.Z,182",BI=405$ $LK,"Sin",A="FL:::/Kernel/KernelB.HPP,104"$ -$LK,"TK_OR_OR",A="FL:::/Kernel/KernelA.HPP,1999"$ +$LK,"TK_OR_OR",A="FL:::/Kernel/KernelA.HPP,2049"$ $LK,"SYS_PCIBIOS_SERVICE_CALL",A="FL:::/Kernel/PCIBIOS.CPP.Z,46"$ -$LK,"Now",A="FL:::/Kernel/Date.CPP.Z,191",BI=404$ +$LK,"Now",A="FL:::/Kernel/KDate.CPP.Z,191",BI=406$ $LK,"Fldcw",A="FL:::/Kernel/KernelB.HPP,129"$ $LK,"_FXSAVE",A="FL:::/Kernel/KMathA.CPP.Z,650"$ -$LK,"TTS_ED_FILENAME",A="FL:::/Kernel/KernelA.HPP,3182"$ -$LK,"WIf_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1425"$ +$LK,"TTS_ED_FILENAME",A="FL:::/Kernel/KernelA.HPP,3231"$ +$LK,"WIf_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1429"$ $LK,"IA32_EFER",A="FL:::/Kernel/KernelA.HPP,515"$ $LK,"SetRSP",A="FL:::/Kernel/KernelB.HPP,256"$ $LK,"Pop",A="FL:::/Kernel/KernelB.HPP,251"$ $LK,"sys_progresses",A="FL:::/Kernel/KernelB.HPP,229"$ -$LK,"CMenuEntry",A="FL:::/Kernel/KernelA.HPP,3038"$ -$LK,"OC_NOP2",A="FL:::/Kernel/KernelA.HPP,1677"$ -$LK,"DOCT_RIGHT_MARGIN",A="FL:::/Kernel/KernelA.HPP,899"$ +$LK,"CMenuEntry",A="FL:::/Kernel/KernelA.HPP,3089"$ +$LK,"OC_NOP2",A="FL:::/Kernel/KernelA.HPP,1727"$ +$LK,"DOCT_RIGHT_MARGIN",A="FL:::/Kernel/KernelA.HPP,902"$ $LK,"PUT_HEX_U64",A="FL:::/Kernel/StrA.CPP.Z,23"$ $LK,"SYS_KERNEL",A="FL:::/Kernel/KStart.CPP.Z,18"$ $LK,"RFLAGf_PARITY",A="FL:::/Kernel/KernelA.HPP,306"$ $LK,"SYS_PROGRESS4_MAX",A="FL:::/Kernel/KStart.CPP.Z,218"$ -$LK,"SUF_TO_UPPER",A="FL:::/Kernel/KernelA.HPP,3694"$ -$LK,"MBR_PT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2611"$ -$LK,"MBR_PT_NTFS",A="FL:::/Kernel/KernelA.HPP,2610"$ -$LK,"MouseHandler",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,179",BI=405$ -$LK,"SCF_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3448"$ -$LK,"SCf_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3434"$ -$LK,"MSG_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3129"$ +$LK,"SUF_TO_UPPER",A="FL:::/Kernel/KernelA.HPP,3744"$ +$LK,"MBR_PT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2661"$ +$LK,"MBR_PT_NTFS",A="FL:::/Kernel/KernelA.HPP,2660"$ +$LK,"MouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,179",BI=407$ +$LK,"SCF_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3498"$ +$LK,"SCf_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3483"$ +$LK,"MSG_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3180"$ $LK,"LAPIC_TASK_PRIORITY",A="FL:::/Kernel/KernelA.HPP,475"$ -$LK,"REGT_MM",A="FL:::/Kernel/KernelA.HPP,736"$ -$LK,"DOCEf_POPUP",A="FL:::/Kernel/KernelA.HPP,1084"$ -$LK,"DOCEF_POPUP",A="FL:::/Kernel/KernelA.HPP,1009"$ -$LK,"SYS_SEMA_VGA",A="FL:::/Kernel/KernelA.HPP,600"$ +$LK,"REGT_MM",A="FL:::/Kernel/KernelA.HPP,738"$ +$LK,"DOCEf_POPUP",A="FL:::/Kernel/KernelA.HPP,1087"$ +$LK,"DOCEF_POPUP",A="FL:::/Kernel/KernelA.HPP,1012"$ +$LK,"SYS_SEMA_VGA",A="FL:::/Kernel/KernelA.HPP,601"$ $LK,"ODEF_PAUSED",A="FL:::/Kernel/KernelA.HPP,239"$ -$LK,"FATNameXSum",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,162",BI=406$ +$LK,"FATNameXSum",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,162",BI=408$ $LK,"SPF_DOLLAR",A="FL:::/Kernel/StrPrint.CPP.Z,5"$ $LK,"Pow",A="FL:::/Kernel/KernelB.HPP,138"$ $LK,"sys_boot_patch_table_base",A="FL:::/Kernel/KernelB.HPP,38"$ -$LK,"WIF_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1389"$ -$LK,"DOCF_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1268"$ -$LK,"MStrUtil",A="FL:::/Kernel/StrB.CPP.Z,58",BI=407$ +$LK,"WIF_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1391"$ +$LK,"DOCF_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1271"$ +$LK,"MStrUtil",A="FL:::/Kernel/StrB.CPP.Z,58",BI=409$ $LK,"_D3_CROSS",A="FL:::/Kernel/KMathA.CPP.Z,82"$ -$LK,"VGAP_INPUT_STAT",A="FL:::/Kernel/KernelA.HPP,3637"$ -$LK,"DOCf_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1304"$ +$LK,"VGAP_INPUT_STAT",A="FL:::/Kernel/KernelA.HPP,3688"$ +$LK,"DOCf_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1307"$ $LK,"SYS_HEAP_LIMIT",A="FL:::/Kernel/KStart.CPP.Z,185"$ -$LK,"WIf_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1414"$ -$LK,"text",A="FL:::/Kernel/KGlbls.CPP.Z,24"$ -$LK,"ATA_READ_NATIVE_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2173"$ -$LK,"MPrintQ",A="FL:::/Kernel/StrPrint.CPP.Z,68",BI=408$ +$LK,"WIf_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1417"$ +$LK,"text",A="FL:::/Kernel/KGlbls.CPP.Z,29"$ +$LK,"ATA_READ_NATIVE_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2223"$ +$LK,"MPrintQ",A="FL:::/Kernel/StrPrint.CPP.Z,68",BI=410$ $LK,"MHeapCtrl",A="FL:::/Kernel/MemB.CPP.Z,371"$ -$LK,"SYS_SEMA_SND",A="FL:::/Kernel/KernelA.HPP,591"$ -$LK,"CCF_RAX",A="FL:::/Kernel/KernelA.HPP,2066"$ -$LK,"BSPStartMP",A="FL:::/Kernel/MultiProc.CPP.Z,301",BI=409$ -$LK,"DskCacheInvalidate",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,157",BI=410$ -$LK,"DOCG_BL_IV_UL",A="FL:::/Kernel/KernelA.HPP,940"$ -$LK,"HashSingleTableFind",A="FL:::/Kernel/KHashA.CPP.Z,302"$ +$LK,"SYS_SEMA_SND",A="FL:::/Kernel/KernelA.HPP,592"$ +$LK,"CCF_RAX",A="FL:::/Kernel/KernelA.HPP,2116"$ +$LK,"BSPStartMP",A="FL:::/Kernel/MultiProc.CPP.Z,301",BI=411$ +$LK,"DskCacheInvalidate",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,157",BI=412$ +$LK,"DOCG_BL_IV_UL",A="FL:::/Kernel/KernelA.HPP,943"$ +$LK,"HashSingleTableFind",A="FL:::/Kernel/KHashA.CPP.Z,257"$ $LK,"sys_data_bp",A="FL:::/Kernel/KernelB.HPP,196"$ $LK,"sys_heap_base",A="FL:::/Kernel/KernelB.HPP,199"$ $LK,"_CLAMP_I64",A="FL:::/Kernel/KUtils.CPP.Z,121"$ -$LK,"VGAP_MISC_OUTPUT",A="FL:::/Kernel/KernelA.HPP,3628"$ -$LK,"BDf_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2558"$ -$LK,"Spaces2Tabs",A="FL:::/Kernel/StrA.CPP.Z,477",BI=411$ -$LK,"Drv2Let",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,123",BI=412$ -$LK,"ROPBF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2838"$ +$LK,"VGAP_MISC_OUTPUT",A="FL:::/Kernel/KernelA.HPP,3679"$ +$LK,"BDf_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2608"$ +$LK,"Spaces2Tabs",A="FL:::/Kernel/StrA.CPP.Z,477",BI=413$ +$LK,"Drv2Let",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,123",BI=414$ +$LK,"ROPBF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2888"$ $LK,"MEM_E820_ENTRY_SIZE",A="FL:::/Kernel/KernelA.HPP,355"$ -$LK,"KDRawPutS",A="FL:::/Kernel/KeyDev.CPP.Z,102",BI=413$ +$LK,"KDRawPutS",A="FL:::/Kernel/KeyDev.CPP.Z,95",BI=415$ $LK,"Sqr",A="FL:::/Kernel/KernelB.HPP,105"$ -$LK,"REG_RDI",A="FL:::/Kernel/KernelA.HPP,1696"$ -$LK,"REG_ALLOC",A="FL:::/Kernel/KernelA.HPP,1700"$ -$LK,"DOCf_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1302"$ -$LK,"SrvCmdsHandler",A="FL:::/Kernel/SrvCmd.CPP.Z,355",BI=414$ +$LK,"REG_RDI",A="FL:::/Kernel/KernelA.HPP,1746"$ +$LK,"REG_ALLOC",A="FL:::/Kernel/KernelA.HPP,1750"$ +$LK,"DOCf_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1305"$ +$LK,"SrvCmdsHandler",A="FL:::/Kernel/SrvCmd.CPP.Z,349",BI=416$ $LK,"progress1_max",A="FL:::/Kernel/KernelB.HPP,215"$ -$LK,"CCF_ARRAY",A="FL:::/Kernel/KernelA.HPP,2065"$ -$LK,"REG_RBP",A="FL:::/Kernel/KernelA.HPP,1694"$ -$LK,"DOCEF_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1012"$ -$LK,"FifoU8Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,219",BI=415$ -$LK,"MSG_MOVE",A="FL:::/Kernel/KernelA.HPP,3139"$ -$LK,"DOCT_INS_BINARY",A="FL:::/Kernel/KernelA.HPP,926"$ +$LK,"CCF_ARRAY",A="FL:::/Kernel/KernelA.HPP,2115"$ +$LK,"REG_RBP",A="FL:::/Kernel/KernelA.HPP,1744"$ +$LK,"DOCEF_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1015"$ +$LK,"FifoU8Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,219",BI=417$ +$LK,"MSG_MOVE",A="FL:::/Kernel/KernelA.HPP,3190"$ +$LK,"DOCT_INS_BINARY",A="FL:::/Kernel/KernelA.HPP,929"$ $LK,"SYS_PROGRESSES",A="FL:::/Kernel/KStart.CPP.Z,208"$ -$LK,"SUF_REM_SPACES",A="FL:::/Kernel/KernelA.HPP,3692"$ -$LK,"CCF_PMT",A="FL:::/Kernel/KernelA.HPP,2039"$ -$LK,"DOCEf_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1087"$ -$LK,"DskCacheHash",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,40",BI=416$ -$LK,"SCF_NUM",A="FL:::/Kernel/KernelA.HPP,3445"$ -$LK,"fp_doc_put",A="FL:::/Kernel/KGlbls.CPP.Z,30"$ -$LK,"DskCacheFind",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,64",BI=417$ -$LK,"IsRaw",A="FL:::/Kernel/KMisc.CPP.Z,255",BI=418$ -$LK,"TK_DBL_COLON",A="FL:::/Kernel/KernelA.HPP,1991"$ -$LK,"ATAPIReadTrackInfo",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,277",BI=419$ -$LK,"CATARep",A="FL:::/Kernel/KernelA.HPP,2162"$ -$LK,"REG_RAX",A="FL:::/Kernel/KernelA.HPP,1689"$ -$LK,"ATAReadBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,350",BI=420$ +$LK,"SUF_REM_SPACES",A="FL:::/Kernel/KernelA.HPP,3742"$ +$LK,"CCF_PMT",A="FL:::/Kernel/KernelA.HPP,2089"$ +$LK,"DOCEf_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1090"$ +$LK,"DskCacheHash",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,40",BI=418$ +$LK,"SCF_NUM",A="FL:::/Kernel/KernelA.HPP,3495"$ +$LK,"ACD_DEF_FILENAME",A="FL:::/Kernel/KernelA.HPP,1474"$ +$LK,"fp_doc_put",A="FL:::/Kernel/KGlbls.CPP.Z,33"$ +$LK,"DskCacheFind",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,64",BI=419$ +$LK,"IsRaw",A="FL:::/Kernel/KMisc.CPP.Z,250",BI=420$ +$LK,"TK_DBL_COLON",A="FL:::/Kernel/KernelA.HPP,2041"$ +$LK,"ATAPIReadTrackInfo",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,277",BI=421$ +$LK,"CATARep",A="FL:::/Kernel/KernelA.HPP,2212"$ +$LK,"REG_RAX",A="FL:::/Kernel/KernelA.HPP,1739"$ +$LK,"ATAReadBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,350",BI=422$ $LK,"D3AddEqu",A="FL:::/Kernel/KernelB.HPP,149"$ $LK,"ToUpper",A="FL:::/Kernel/KernelB.HPP,57"$ -$LK,"REGG_C_LOCAL_NON_PTR_VARS",A="FL:::/Kernel/KernelA.HPP,1707"$ -$LK,"REG_RBX",A="FL:::/Kernel/KernelA.HPP,1692"$ -$LK,"SCR_DONE",A="FL:::/Kernel/SrvCmd.CPP.Z,266"$ +$LK,"REGG_C_LOCAL_NON_PTR_VARS",A="FL:::/Kernel/KernelA.HPP,1757"$ +$LK,"REG_RBX",A="FL:::/Kernel/KernelA.HPP,1742"$ +$LK,"SCR_DONE",A="FL:::/Kernel/SrvCmd.CPP.Z,262"$ $LK,"Fxsave",A="FL:::/Kernel/KernelB.HPP,134"$ -$LK,"Reboot",A="FL:::/Kernel/KEnd.CPP.Z,115",BI=421$ -$LK,"TK_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2019"$ -$LK,"REG_RCX",A="FL:::/Kernel/KernelA.HPP,1690"$ -$LK,"Ff_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,843"$ -$LK,"CHashClass",A="FL:::/Kernel/KernelA.HPP,824"$ -$LK,"ZERO_BUF_SIZE",A="FL:::/Kernel/Dsk/DskBlk.CPP.Z,1"$ -$LK,"LoadKernel",A="FL:::/Kernel/KLoad.CPP.Z,240",BI=422$ -$LK,"SCF_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3440"$ -$LK,"SCf_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3426"$ -$LK,"MSG_IP_R_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3135"$ -$LK,"REG_RDX",A="FL:::/Kernel/KernelA.HPP,1691"$ -$LK,"ATAPIReadBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,413",BI=423$ -$LK,"REG_RIP",A="FL:::/Kernel/KernelA.HPP,1697"$ -$LK,"DOCEF_FROM_START",A="FL:::/Kernel/KernelA.HPP,994"$ -$LK,"SEMA_STRUCT_SIZE",A="FL:::/Kernel/KernelA.HPP,577"$ -$LK,"SCR_CONT",A="FL:::/Kernel/SrvCmd.CPP.Z,267"$ +$LK,"ACD_EXTRA_CHAR",A="FL:::/Kernel/KernelA.HPP,1494"$ +$LK,"Reboot",A="FL:::/Kernel/KEnd.CPP.Z,117",BI=423$ +$LK,"acd",A="FL:::/Kernel/KGlbls.CPP.Z,17"$ +$LK,"TK_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2069"$ +$LK,"REG_RCX",A="FL:::/Kernel/KernelA.HPP,1740"$ +$LK,"Ff_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,846"$ +$LK,"CHashClass",A="FL:::/Kernel/KernelA.HPP,826"$ +$LK,"ZERO_BUF_SIZE",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,1"$ +$LK,"LoadKernel",A="FL:::/Kernel/KLoad.CPP.Z,240",BI=424$ +$LK,"SCF_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3490"$ +$LK,"SCf_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3475"$ +$LK,"MSG_IP_R_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3186"$ +$LK,"REG_RDX",A="FL:::/Kernel/KernelA.HPP,1741"$ +$LK,"ATAPIReadBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,413",BI=425$ +$LK,"REG_RIP",A="FL:::/Kernel/KernelA.HPP,1747"$ +$LK,"DOCEF_FROM_START",A="FL:::/Kernel/KernelA.HPP,997"$ +$LK,"SEMA_STRUCT_SIZE",A="FL:::/Kernel/KernelA.HPP,578"$ +$LK,"SCR_CONT",A="FL:::/Kernel/SrvCmd.CPP.Z,263"$ $LK,"progress2_max",A="FL:::/Kernel/KernelB.HPP,219"$ -$LK,"DOCEf_FROM_START",A="FL:::/Kernel/KernelA.HPP,1069"$ -$LK,"SYS_SEMA_TMBEAT",A="FL:::/Kernel/KernelA.HPP,605"$ +$LK,"DOCEf_FROM_START",A="FL:::/Kernel/KernelA.HPP,1072"$ +$LK,"SYS_SEMA_TMBEAT",A="FL:::/Kernel/KernelA.HPP,607"$ $LK,"RLF_WINMGR",A="FL:::/Kernel/KernelA.HPP,465"$ $LK,"RLf_WINMGR",A="FL:::/Kernel/KernelA.HPP,447"$ -$LK,"CtrlAltLetCBSet",A="FL:::/Kernel/KeyDev.CPP.Z,184",BI=424$ -$LK,"SUF_SCALE_INDENT",A="FL:::/Kernel/KernelA.HPP,3698"$ -$LK,"CT_7_BIT",A="FL:::/Kernel/KernelA.HPP,3647"$ -$LK,"PUSH_REGS",A="FL:::/Kernel/KernelA.HPP,1682"$ +$LK,"SUF_SCALE_INDENT",A="FL:::/Kernel/KernelA.HPP,3748"$ +$LK,"CT_7_BIT",A="FL:::/Kernel/KernelA.HPP,3697"$ +$LK,"PUSH_REGS",A="FL:::/Kernel/KernelA.HPP,1732"$ $LK,"MAX_I8",A="FL:::/Kernel/KernelA.HPP,23"$ -$LK,"KbdMouseHandler",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,260",BI=425$ -$LK,"Color2Str",A="FL:::/Kernel/KDefine.CPP.Z,126",BI=426$ -$LK,"EDF_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1224"$ +$LK,"KbdMouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,257",BI=426$ +$LK,"Color2Str",A="FL:::/Kernel/KDefine.CPP.Z,126",BI=427$ +$LK,"EDF_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1227"$ $LK,"LAPIC_DFR",A="FL:::/Kernel/KernelA.HPP,480"$ $LK,"CDATE_BASE_DAY_OF_WEEK",A="FL:::/Kernel/KernelA.HPP,183"$ -$LK,"StrFirstOcc",A="FL:::/Kernel/StrA.CPP.Z,572",BI=427$ -$LK,"MSG_NULL",A="FL:::/Kernel/KernelA.HPP,3124"$ -$LK,"TY_NULL",A="FL:::/Kernel/KernelA.HPP,1496"$ -$LK,"EDf_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1230"$ -$LK,"MPrintq",A="FL:::/Kernel/StrPrint.CPP.Z,127",BI=428$ +$LK,"StrFirstOcc",A="FL:::/Kernel/StrA.CPP.Z,572",BI=428$ +$LK,"MSG_NULL",A="FL:::/Kernel/KernelA.HPP,3175"$ +$LK,"TY_NULL",A="FL:::/Kernel/KernelA.HPP,1545"$ +$LK,"EDf_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1233"$ +$LK,"MPrintq",A="FL:::/Kernel/StrPrint.CPP.Z,127",BI=429$ $LK,"SYS_FOCUS_TASK",A="FL:::/Kernel/KStart.CPP.Z,222"$ -$LK,"dbg",A="FL:::/Kernel/KGlbls.CPP.Z,25"$ -$LK,"CPSectCache",A="FL:::/Kernel/KernelA.HPP,3749"$ -$LK,"QSort",A="FL:::/Kernel/QSort.CPP.Z,85",BI=429$ +$LK,"dbg",A="FL:::/Kernel/KGlbls.CPP.Z,21"$ +$LK,"CPSectCache",A="FL:::/Kernel/KernelA.HPP,3799"$ +$LK,"QSort",A="FL:::/Kernel/QSort.CPP.Z,85",BI=430$ $LK,"OutU32",A="FL:::/Kernel/KernelB.HPP,78"$ $LK,"OutU16",A="FL:::/Kernel/KernelB.HPP,77"$ -$LK,"TERM_ATTR_BORDER",A="FL:::/Kernel/KernelA.HPP,1113"$ +$LK,"TERM_ATTR_BORDER",A="FL:::/Kernel/KernelA.HPP,1116"$ +$LK,"SYS_SEMA_JUST_PUMP_MSGS",A="FL:::/Kernel/KernelA.HPP,606"$ $LK,"LAPIC_ICR_HIGH",A="FL:::/Kernel/KernelA.HPP,490"$ -$LK,"LMF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3708"$ -$LK,"SFF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3702"$ -$LK,"HashRemDel",A="FL:::/Kernel/KHashA.CPP.Z,309"$ -$LK,"REG_RSI",A="FL:::/Kernel/KernelA.HPP,1695"$ -$LK,"HashAdd",A="FL:::/Kernel/KHashA.CPP.Z,307"$ -$LK,"Preempt",A="FL:::/Kernel/KernelB.HPP,283"$ +$LK,"LMF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3758"$ +$LK,"SFF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3752"$ +$LK,"HashRemDel",A="FL:::/Kernel/KHashA.CPP.Z,264"$ +$LK,"REG_RSI",A="FL:::/Kernel/KernelA.HPP,1745"$ +$LK,"HashAdd",A="FL:::/Kernel/KHashA.CPP.Z,262"$ $LK,"mp_cnt_lock",A="FL:::/Kernel/KernelB.HPP,236"$ -$LK,"INTERRUPT_STK",A="FL:::/Kernel/KernelA.HPP,2788"$ -$LK,"MLF_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,769"$ -$LK,"IsSuspended",A="FL:::/Kernel/Task.CPP.Z,63",BI=430$ -$LK,"CAlloc",A="FL:::/Kernel/MemB.CPP.Z,380",BI=431$ -$LK,"BDF_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2546"$ -$LK,"ATAR0_SELECT",A="FL:::/Kernel/KernelA.HPP,2194"$ -$LK,"CAsmUnresolvedRef",A="FL:::/Kernel/KernelA.HPP,1767"$ -$LK,"BDf_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2556"$ -$LK,"DOCT_SPRITE",A="FL:::/Kernel/KernelA.HPP,925"$ -$LK,"WClustersBlks",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,92",BI=432$ -$LK,"RClustersBlks",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,46",BI=433$ +$LK,"INTERRUPT_STK",A="FL:::/Kernel/KernelA.HPP,2838"$ +$LK,"MLF_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,771"$ +$LK,"IsSuspended",A="FL:::/Kernel/KTask.CPP.Z,59",BI=431$ +$LK,"CAlloc",A="FL:::/Kernel/MemB.CPP.Z,380",BI=432$ +$LK,"BDF_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2596"$ +$LK,"ATAR0_SELECT",A="FL:::/Kernel/KernelA.HPP,2244"$ +$LK,"CAsmUnresolvedRef",A="FL:::/Kernel/KernelA.HPP,1817"$ +$LK,"BDf_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2606"$ +$LK,"DOCT_SPRITE",A="FL:::/Kernel/KernelA.HPP,928"$ +$LK,"WClustersBlks",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,92",BI=433$ +$LK,"RClustersBlks",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,46",BI=434$ $LK,"sys_neg_pows_lets",A="FL:::/Kernel/StrPrint.CPP.Z,211"$ $LK,"progress3_max",A="FL:::/Kernel/KernelB.HPP,223"$ $LK,"SqrI64",A="FL:::/Kernel/KernelB.HPP,106"$ -$LK,"BDF_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2552"$ -$LK,"OPTF_ECHO",A="FL:::/Kernel/KernelA.HPP,1474"$ -$LK,"OPTf_ECHO",A="FL:::/Kernel/KernelA.HPP,1460"$ +$LK,"BDF_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2602"$ +$LK,"OPTF_ECHO",A="FL:::/Kernel/KernelA.HPP,1523"$ +$LK,"OPTf_ECHO",A="FL:::/Kernel/KernelA.HPP,1510"$ $LK,"LAPIC_EOI",A="FL:::/Kernel/KernelA.HPP,478"$ $LK,"sys_pos_pows_lets",A="FL:::/Kernel/StrPrint.CPP.Z,210"$ -$LK,"QueSize",A="FL:::/Kernel/KDataTypes.CPP.Z,76",BI=434$ +$LK,"QueSize",A="FL:::/Kernel/KDataTypes.CPP.Z,76",BI=435$ $LK,"C:/Doc/Que.TXT.Z",A="FL:::/Kernel/KernelB.HPP,64"$ -$LK,"CT_8_BIT",A="FL:::/Kernel/KernelA.HPP,3648"$ -$LK,"REG_RSP",A="FL:::/Kernel/KernelA.HPP,1693"$ -$LK,"CtrlAltDel",A="FL:::/Kernel/KeyDev.CPP.Z,139",BI=435$ -$LK,"CTRLF_CAPTURE_LEFT_IP",A="FL:::/Kernel/KernelA.HPP,2993"$ -$LK,"LFSF_DEFINE",A="FL:::/Kernel/KernelA.HPP,1946"$ -$LK,"BLK_SIZE_BITS",A="FL:::/Kernel/KernelA.HPP,2207"$ -$LK,"AOT_BIN_BLK_BITS",A="FL:::/Kernel/KernelA.HPP,1709"$ -$LK,"DOC_RECALC",A="FL:::/Kernel/KernelA.HPP,1320"$ -$LK,"HTT_FUN",A="FL:::/Kernel/KernelA.HPP,680"$ -$LK,"SrvCtrlInit",A="FL:::/Kernel/SrvCmd.CPP.Z,18",BI=436$ -$LK,"DOCEG1_HAS_ARG",A="FL:::/Kernel/KernelA.HPP,970"$ -$LK,"DOCEF_DEFINE",A="FL:::/Kernel/KernelA.HPP,956"$ +$LK,"CT_8_BIT",A="FL:::/Kernel/KernelA.HPP,3698"$ +$LK,"REG_RSP",A="FL:::/Kernel/KernelA.HPP,1743"$ +$LK,"CtrlAltDel",A="FL:::/Kernel/KeyDev.CPP.Z,126",BI=436$ +$LK,"CTRLF_CAPTURE_LEFT_IP",A="FL:::/Kernel/KernelA.HPP,3044"$ +$LK,"LFSF_DEFINE",A="FL:::/Kernel/KernelA.HPP,1996"$ +$LK,"BLK_SIZE_BITS",A="FL:::/Kernel/KernelA.HPP,2257"$ +$LK,"AOT_BIN_BLK_BITS",A="FL:::/Kernel/KernelA.HPP,1759"$ +$LK,"DOC_RECALC",A="FL:::/Kernel/KernelA.HPP,1323"$ +$LK,"HTT_FUN",A="FL:::/Kernel/KernelA.HPP,682"$ +$LK,"I_DIV_ZERO",A="FL:::/Kernel/KernelA.HPP,284"$ +$LK,"SrvCtrlInit",A="FL:::/Kernel/SrvCmd.CPP.Z,18",BI=437$ +$LK,"DOCEG1_HAS_ARG",A="FL:::/Kernel/KernelA.HPP,973"$ +$LK,"DOCEF_DEFINE",A="FL:::/Kernel/KernelA.HPP,959"$ $LK,"SPF_LEFT_JUSTIFY",A="FL:::/Kernel/StrPrint.CPP.Z,2"$ -$LK,"DOCEf_DEFINE",A="FL:::/Kernel/KernelA.HPP,1036"$ -$LK,"HeapCtrlInit",A="FL:::/Kernel/MemC.CPP.Z,29",BI=437$ +$LK,"DOCEf_DEFINE",A="FL:::/Kernel/KernelA.HPP,1039"$ +$LK,"HeapCtrlInit",A="FL:::/Kernel/MemC.CPP.Z,29",BI=438$ $LK,"progress1",A="FL:::/Kernel/KernelB.HPP,212"$ $LK,"Floor",A="FL:::/Kernel/KernelB.HPP,130"$ -$LK,"CIPStateGlbls",A="FL:::/Kernel/KernelA.HPP,2944"$ -$LK,"SYSf_CTRL_ALT_C",A="FL:::/Kernel/KernelA.HPP,610"$ +$LK,"CIPStateGlbls",A="FL:::/Kernel/KernelA.HPP,2995"$ +$LK,"SYSf_CTRL_ALT_C",A="FL:::/Kernel/KernelA.HPP,612"$ $LK,"progress2",A="FL:::/Kernel/KernelB.HPP,216"$ $LK,"_CLAMP_U64",A="FL:::/Kernel/KUtils.CPP.Z,133"$ -$LK,"CDImageWriteTask",A="FL:::/Kernel/Dsk/DskCDDVD.CPP.Z,49",BI=438$ $LK,"progress3",A="FL:::/Kernel/KernelB.HPP,220"$ $LK,"MPN_VECT",A="FL:::/Kernel/KernelA.HPP,499"$ $LK,"MAX_U8",A="FL:::/Kernel/KernelA.HPP,25"$ $LK,"RAWDR_COL",A="FL:::/Kernel/KDbg.CPP.Z,289"$ $LK,"progress4",A="FL:::/Kernel/KernelB.HPP,224"$ -$LK,"SysTimerRead",A="FL:::/Kernel/KMisc.CPP.Z,61",BI=439$ -$LK,"dev",A="FL:::/Kernel/KGlbls.CPP.Z,23"$ -$LK,"MSG_IP_L_D_UP",A="FL:::/Kernel/KernelA.HPP,3132"$ -$LK,"HTT_REG",A="FL:::/Kernel/KernelA.HPP,686"$ -$LK,"StrFirstRem",A="FL:::/Kernel/StrA.CPP.Z,582",BI=440$ -$LK,"SYS_FAULT_ERR_CODE_BITMAP",A="FL:::/Kernel/Ints.CPP.Z,90"$ +$LK,"CtrlAltCBSet",A="FL:::/Kernel/KeyDev.CPP.Z,171",BI=439$ +$LK,"SysTimerRead",A="FL:::/Kernel/KMisc.CPP.Z,61",BI=440$ +$LK,"dev",A="FL:::/Kernel/KGlbls.CPP.Z,22"$ +$LK,"MSG_IP_L_D_UP",A="FL:::/Kernel/KernelA.HPP,3183"$ +$LK,"HTT_REG",A="FL:::/Kernel/KernelA.HPP,688"$ +$LK,"StrFirstRem",A="FL:::/Kernel/StrA.CPP.Z,582",BI=441$ $LK,"SYS_VAR_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"DCF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3523"$ -$LK,"ans",A="FL:::/Kernel/KernelA.HPP,3320"$ +$LK,"DCF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3574"$ +$LK,"ans",A="FL:::/Kernel/KernelA.HPP,3369"$ $LK,"LAPIC_LDR",A="FL:::/Kernel/KernelA.HPP,481"$ -$LK,"BptFind",A="FL:::/Kernel/KDbg.CPP.Z,351",BI=441$ -$LK,"kbd",A="FL:::/Kernel/KGlbls.CPP.Z,21"$ +$LK,"BptFind",A="FL:::/Kernel/KDbg.CPP.Z,351",BI=442$ +$LK,"kbd",A="FL:::/Kernel/KGlbls.CPP.Z,25"$ $LK,"progress4_max",A="FL:::/Kernel/KernelB.HPP,227"$ -$LK,"MouseUpdatePost",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,147",BI=442$ -$LK,"HashDel",A="FL:::/Kernel/KHashB.CPP.Z,59",BI=443$ -$LK,"CKbdStateGlbls",A="FL:::/Kernel/KernelA.HPP,2902"$ -$LK,"LinkedLstCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,11",BI=444$ -$LK,"IP_NULL",A="FL:::/Kernel/KernelA.HPP,2942"$ -$LK,"SYS_SEMA_DEV_MEM",A="FL:::/Kernel/KernelA.HPP,599"$ -$LK,"ICF_A1_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1524"$ -$LK,"Let2Drv",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,131",BI=445$ +$LK,"MouseUpdatePost",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,147",BI=443$ +$LK,"HashDel",A="FL:::/Kernel/KHashB.CPP.Z,59",BI=444$ +$LK,"CKbdStateGlbls",A="FL:::/Kernel/KernelA.HPP,2952"$ +$LK,"LinkedLstCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,11",BI=445$ +$LK,"IP_NULL",A="FL:::/Kernel/KernelA.HPP,2993"$ +$LK,"SYS_SEMA_DEV_MEM",A="FL:::/Kernel/KernelA.HPP,600"$ +$LK,"ICF_A1_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1573"$ +$LK,"Let2Drv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,131",BI=446$ +$LK,"fat_long_name_map",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,188"$ +$LK,"DskCacheInit",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,1",BI=447$ $LK,"AP_16BIT_INIT_END",A="FL:::/Kernel/MultiProc.CPP.Z,27"$ -$LK,"fat_long_name_map",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,188"$ -$LK,"DskCacheInit",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,1",BI=446$ -$LK,"CCF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,2072"$ -$LK,"DOC_COLOR_MACRO",A="FL:::/Kernel/KernelA.HPP,1118"$ +$LK,"CCF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,2122"$ +$LK,"DOC_COLOR_MACRO",A="FL:::/Kernel/KernelA.HPP,1121"$ $LK,"LAPIC_LOG_DST",A="FL:::/Kernel/KernelA.HPP,479"$ $LK,"RLF_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,468"$ -$LK,"RClusters",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,87",BI=447$ -$LK,"ISO1CDirFill",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,116",BI=448$ +$LK,"RClusters",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,87",BI=448$ +$LK,"ISO1CDirFill",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,116",BI=449$ $LK,"RLf_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,450"$ -$LK,"SCR_EXIT",A="FL:::/Kernel/SrvCmd.CPP.Z,268"$ -$LK,"QueDel",A="FL:::/Kernel/KDataTypes.CPP.Z,41",BI=449$ -$LK,"ICF_DONT_RESTORE",A="FL:::/Kernel/KernelA.HPP,1538"$ -$LK,"RedSeaDirNew",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,354",BI=450$ -$LK,"TK_ADD_EQUAL",A="FL:::/Kernel/KernelA.HPP,2008"$ -$LK,"TK_XOR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2007"$ +$LK,"SCR_EXIT",A="FL:::/Kernel/SrvCmd.CPP.Z,264"$ +$LK,"QueDel",A="FL:::/Kernel/KDataTypes.CPP.Z,41",BI=450$ +$LK,"ICF_DONT_RESTORE",A="FL:::/Kernel/KernelA.HPP,1587"$ +$LK,"RedSeaDirNew",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,354",BI=451$ +$LK,"TK_ADD_EQUAL",A="FL:::/Kernel/KernelA.HPP,2058"$ +$LK,"TK_XOR_EQUAL",A="FL:::/Kernel/KernelA.HPP,2057"$ $LK,"IET_REL64_EXPORT",A="FL:::/Kernel/KernelA.HPP,405"$ $LK,"IET_REL32_EXPORT",A="FL:::/Kernel/KernelA.HPP,403"$ -$LK,"CExcept",A="FL:::/Kernel/KernelA.HPP,3064"$ -$LK,"dsk",A="FL:::/Kernel/KGlbls.CPP.Z,26"$ +$LK,"CExcept",A="FL:::/Kernel/KernelA.HPP,3115"$ $LK,"QueInsRev",A="FL:::/Kernel/KernelB.HPP,69"$ -$LK,"SYSf_CTRL_ALT_X",A="FL:::/Kernel/KernelA.HPP,611"$ +$LK,"SYSf_CTRL_ALT_X",A="FL:::/Kernel/KernelA.HPP,613"$ $LK,"SYS_EXTERN_TABLE",A="FL:::/Kernel/KStart.CPP.Z,202"$ -$LK,"FUF_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2524"$ -$LK,"DOCT_HTML_CODE",A="FL:::/Kernel/KernelA.HPP,930"$ +$LK,"FUF_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2574"$ +$LK,"DOCT_HTML_CODE",A="FL:::/Kernel/KernelA.HPP,933"$ $LK,"LAPIC_IRR",A="FL:::/Kernel/KernelA.HPP,488"$ $LK,"chars_bmp_getkey",A="FL:::/Kernel/StrA.CPP.Z,371"$ $LK,"sys_run_level",A="FL:::/Kernel/KernelB.HPP,40"$ $LK,"JIFFY_FREQ",A="FL:::/Kernel/KernelA.HPP,544"$ $LK,"COrder2D3",A="FL:::/Kernel/KernelA.HPP,199"$ -$LK,"TaskRegAddr",A="FL:::/Kernel/KDbg.CPP.Z,266",BI=451$ -$LK,"DCSF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3545"$ +$LK,"TaskRegAddr",A="FL:::/Kernel/KDbg.CPP.Z,266",BI=452$ +$LK,"DCSF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3596"$ $LK,"LAPIC_ISR",A="FL:::/Kernel/KernelA.HPP,486"$ $LK,"c32_eflags",A="FL:::/Kernel/PCIBIOS.CPP.Z,158"$ $LK,"Pow10",A="FL:::/Kernel/KernelB.HPP,139"$ -$LK,"ATA_WRITE_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2179"$ -$LK,"CCF_PREDEC",A="FL:::/Kernel/KernelA.HPP,2064"$ +$LK,"ATA_WRITE_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2229"$ +$LK,"CCF_PREDEC",A="FL:::/Kernel/KernelA.HPP,2114"$ $LK,"inf",A="FL:::/Kernel/KernelA.HPP,46"$ $LK,"MIN_I8",A="FL:::/Kernel/KernelA.HPP,22"$ -$LK,"XTalk",A="FL:::/Kernel/SrvCmd.CPP.Z,459",BI=452$ -$LK,"DOCEf_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,1052"$ -$LK,"DOCEF_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,977"$ +$LK,"XTalk",A="FL:::/Kernel/SrvCmd.CPP.Z,448",BI=453$ +$LK,"DOCEf_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,1055"$ +$LK,"DOCEF_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,980"$ $LK,"eps",A="FL:::/Kernel/KernelA.HPP,56"$ -$LK,"LstSub",A="FL:::/Kernel/StrA.CPP.Z,402",BI=453$ +$LK,"LstSub",A="FL:::/Kernel/StrA.CPP.Z,402",BI=454$ $LK,"RLF_PATCHED",A="FL:::/Kernel/KernelA.HPP,455"$ -$LK,"FRBlks",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,129",BI=454$ -$LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/Task.CPP.Z,253",BI=455$ -$LK,"_HASH_ADD",A="FL:::/Kernel/KHashA.CPP.Z,215"$ -$LK,"__TIME__",A="FL:::/Kernel/KernelA.HPP,1936"$ +$LK,"FRBlks",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,129",BI=455$ +$LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/KTask.CPP.Z,249",BI=456$ +$LK,"_HASH_ADD",A="FL:::/Kernel/KHashA.CPP.Z,170"$ +$LK,"__TIME__",A="FL:::/Kernel/KernelA.HPP,1986"$ $LK,"RLf_PATCHED",A="FL:::/Kernel/KernelA.HPP,437"$ -$LK,"FUf_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2499"$ -$LK,"CD_FILE_OFFSET",A="FL:::/Kernel/KernelA.HPP,2210"$ -$LK,"CCf_OPT_TRACE_PRESENT",A="FL:::/Kernel/KernelA.HPP,2049"$ -$LK,"ATTRf_BLINK",A="FL:::/Kernel/KernelA.HPP,884"$ -$LK,"ATTRF_BLINK",A="FL:::/Kernel/KernelA.HPP,879"$ +$LK,"FUf_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2549"$ +$LK,"ACD_WORD_FILENAME",A="FL:::/Kernel/KernelA.HPP,1473"$ +$LK,"ATTRf_BLINK",A="FL:::/Kernel/KernelA.HPP,887"$ +$LK,"ATTRF_BLINK",A="FL:::/Kernel/KernelA.HPP,882"$ $LK,"XchgU8",A="FL:::/Kernel/KernelB.HPP,269"$ -$LK,"TTS_TASK_NAME",A="FL:::/Kernel/KernelA.HPP,3181"$ +$LK,"TTS_TASK_NAME",A="FL:::/Kernel/KernelA.HPP,3230"$ $LK,"CKernel",A="FL:::/Kernel/KernelA.HPP,415"$ $LK,"IET_IMM_I64",A="FL:::/Kernel/KernelA.HPP,401"$ $LK,"log2_10",A="FL:::/Kernel/KernelA.HPP,51"$ -$LK,"TaskTotalTime",A="FL:::/Kernel/KMisc.CPP.Z,80",BI=456$ -$LK,"LTBLUE",A="FL:::/Kernel/KernelA.HPP,2867"$ -$LK,"FAT32AllocClusters",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,461",BI=457$ -$LK,"DOCEf_TOP_Y",A="FL:::/Kernel/KernelA.HPP,1059"$ -$LK,"DOCEF_TOP_Y",A="FL:::/Kernel/KernelA.HPP,984"$ -$LK,"StrPrintPSect",A="FL:::/Kernel/PSect.CPP.Z,105",BI=458$ +$LK,"TaskTotalTime",A="FL:::/Kernel/KMisc.CPP.Z,80",BI=457$ +$LK,"LTBLUE",A="FL:::/Kernel/KernelA.HPP,2917"$ +$LK,"FAT32AllocClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,461",BI=458$ +$LK,"DOCEf_TOP_Y",A="FL:::/Kernel/KernelA.HPP,1062"$ +$LK,"DOCEF_TOP_Y",A="FL:::/Kernel/KernelA.HPP,987"$ +$LK,"StrPrintPSect",A="FL:::/Kernel/PSect.CPP.Z,102",BI=459$ $LK,"_CALLEXTNUM",A="FL:::/Kernel/KUtils.CPP.Z,362"$ -$LK,"SCF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3452"$ -$LK,"SCf_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3438"$ -$LK,"MSG_CMD",A="FL:::/Kernel/KernelA.HPP,3125"$ +$LK,"SCF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3503"$ +$LK,"SCf_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3488"$ +$LK,"MSG_CMD",A="FL:::/Kernel/KernelA.HPP,3176"$ $LK,"IDTET_IRQ",A="FL:::/Kernel/KernelA.HPP,279"$ -$LK,"CCF_LOCAL",A="FL:::/Kernel/KernelA.HPP,2058"$ -$LK,"QueCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,65",BI=459$ +$LK,"CCF_LOCAL",A="FL:::/Kernel/KernelA.HPP,2108"$ +$LK,"QueCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,65",BI=460$ $LK,"chars_bmp_alpha",A="FL:::/Kernel/StrA.CPP.Z,325"$ $LK,"SwapI64",A="FL:::/Kernel/KernelB.HPP,110"$ $LK,"SqrU64",A="FL:::/Kernel/KernelB.HPP,107"$ -$LK,"OPTf_NO_BUILTIN_CONST",A="FL:::/Kernel/KernelA.HPP,1471"$ -$LK,"HTG_SRC_SYM",A="FL:::/Kernel/KernelA.HPP,704"$ +$LK,"OPTf_NO_BUILTIN_CONST",A="FL:::/Kernel/KernelA.HPP,1520"$ +$LK,"HTG_SRC_SYM",A="FL:::/Kernel/KernelA.HPP,706"$ $LK,"LAPIC_LVT_THERMAL",A="FL:::/Kernel/KernelA.HPP,493"$ $LK,"RFLAGf_IOPL0",A="FL:::/Kernel/KernelA.HPP,314"$ -$LK,"IntsInit",A="FL:::/Kernel/Ints.CPP.Z,125",BI=460$ +$LK,"IntsInit",A="FL:::/Kernel/KInts.CPP.Z,121",BI=461$ $LK,"_XCHG_U8",A="FL:::/Kernel/KUtils.CPP.Z,208"$ -$LK,"DOCEF_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,999"$ +$LK,"DOCEF_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1002"$ $LK,"RFLAGf_IOPL1",A="FL:::/Kernel/KernelA.HPP,315"$ -$LK,"FAT32FilesDel",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,731",BI=461$ -$LK,"SETH_STK",A="FL:::/Kernel/KernelA.HPP,2787"$ -$LK,"HEAP_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2783"$ -$LK,"DOCT_MENU_VAL",A="FL:::/Kernel/KernelA.HPP,922"$ -$LK,"Bcd2Bin",A="FL:::/Kernel/Date.CPP.Z,123",BI=462$ -$LK,"CAllocAligned",A="FL:::/Kernel/MemB.CPP.Z,419",BI=463$ -$LK,"MAllocAligned",A="FL:::/Kernel/MemB.CPP.Z,408",BI=464$ +$LK,"FAT32FilesDel",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,731",BI=462$ +$LK,"SETH_STK",A="FL:::/Kernel/KernelA.HPP,2837"$ +$LK,"HEAP_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2833"$ +$LK,"DOCT_MENU_VAL",A="FL:::/Kernel/KernelA.HPP,925"$ +$LK,"Bcd2Bin",A="FL:::/Kernel/KDate.CPP.Z,123",BI=463$ +$LK,"CAllocAligned",A="FL:::/Kernel/MemB.CPP.Z,419",BI=464$ +$LK,"MAllocAligned",A="FL:::/Kernel/MemB.CPP.Z,408",BI=465$ $LK,"ext",A="FL:::/Kernel/KernelB.HPP,52"$ -$LK,"RawDm",A="FL:::/Kernel/KDbg.CPP.Z,250",BI=465$ -$LK,"TASK_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2791"$ -$LK,"ICf_DONT_POP_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1531"$ -$LK,"DskCacheAdd",A="FL:::/Kernel/Dsk/DskCache.CPP.Z,76",BI=466$ -$LK,"MPNMInt",A="FL:::/Kernel/MultiProc.CPP.Z,158",BI=467$ +$LK,"ACf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,1458"$ +$LK,"RawDm",A="FL:::/Kernel/KDbg.CPP.Z,250",BI=466$ +$LK,"TASK_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2841"$ +$LK,"ICf_DONT_POP_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1580"$ +$LK,"DskCacheAdd",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,76",BI=467$ +$LK,"MPNMInt",A="FL:::/Kernel/MultiProc.CPP.Z,158",BI=468$ $LK,"_MSIZE2",A="FL:::/Kernel/MemB.CPP.Z,338"$ -$LK,"TERM_ATTR_TEXT",A="FL:::/Kernel/KernelA.HPP,1112"$ -$LK,"LTPURPLE",A="FL:::/Kernel/KernelA.HPP,2871"$ -$LK,"RawDr",A="FL:::/Kernel/KDbg.CPP.Z,291",BI=468$ +$LK,"TERM_ATTR_TEXT",A="FL:::/Kernel/KernelA.HPP,1115"$ +$LK,"LTPURPLE",A="FL:::/Kernel/KernelA.HPP,2921"$ +$LK,"RawDr",A="FL:::/Kernel/KDbg.CPP.Z,291",BI=469$ $LK,"StrICmp",A="FL:::/Kernel/StrA.CPP.Z,311"$ -$LK,"ATAR0_DATA",A="FL:::/Kernel/KernelA.HPP,2188"$ +$LK,"ATAR0_DATA",A="FL:::/Kernel/KernelA.HPP,2238"$ $LK,"MIN_U8",A="FL:::/Kernel/KernelA.HPP,24"$ -$LK,"HTG_FLAGS_MASK",A="FL:::/Kernel/KernelA.HPP,702"$ -$LK,"DirFilesSort",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,92",BI=469$ -$LK,"HashLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,185",BI=470$ -$LK,"ACAlloc",A="FL:::/Kernel/MemB.CPP.Z,387",BI=471$ +$LK,"DVD_FILE_OFFSET",A="FL:::/Kernel/KernelA.HPP,2260"$ +$LK,"OPTf_TRACE",A="FL:::/Kernel/KernelA.HPP,1511"$ +$LK,"HTG_FLAGS_MASK",A="FL:::/Kernel/KernelA.HPP,704"$ +$LK,"DirFilesSort",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,92",BI=470$ +$LK,"HashLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,185",BI=471$ +$LK,"ACAlloc",A="FL:::/Kernel/MemB.CPP.Z,387",BI=472$ $LK,"SYS_RUN_LEVEL",A="FL:::/Kernel/KStart.CPP.Z,26"$ -$LK,"SCF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3446"$ -$LK,"SCf_SCROLL",A="FL:::/Kernel/KernelA.HPP,3432"$ -$LK,"CCF_DONT_MAKE_RESULT",A="FL:::/Kernel/KernelA.HPP,2076"$ -$LK,"BDf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2562"$ -$LK,"OC_BPT",A="FL:::/Kernel/KernelA.HPP,1674"$ -$LK,"DOCF_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1245"$ +$LK,"SCF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3496"$ +$LK,"SCf_SCROLL",A="FL:::/Kernel/KernelA.HPP,3481"$ +$LK,"CCF_DONT_MAKE_RESULT",A="FL:::/Kernel/KernelA.HPP,2126"$ +$LK,"BDf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2612"$ +$LK,"OC_BPT",A="FL:::/Kernel/KernelA.HPP,1724"$ +$LK,"DOCF_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1248"$ $LK,"IOREDTAB",A="FL:::/Kernel/KernelA.HPP,509"$ $LK,"Fstcw",A="FL:::/Kernel/KernelB.HPP,131"$ -$LK,"MSG_IP_L_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3142"$ -$LK,"OPTf_COMPILE_TRACE",A="FL:::/Kernel/KernelA.HPP,1462"$ +$LK,"MSG_IP_L_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3193"$ $LK,"LAPIC_TMR",A="FL:::/Kernel/KernelA.HPP,487"$ $LK,"C32_EFLAGS",A="FL:::/Kernel/PCIBIOS.CPP.Z,64"$ -$LK,"Mem2MegAlloc",A="FL:::/Kernel/MemA.CPP.Z,297",BI=472$ +$LK,"Mem2MegAlloc",A="FL:::/Kernel/MemA.CPP.Z,297",BI=473$ $LK,"sys_compile_time",A="FL:::/Kernel/KernelB.HPP,207"$ $LK,"_D3_DIV_EQU",A="FL:::/Kernel/KMathA.CPP.Z,289"$ $LK,"_D3_SUB_EQU",A="FL:::/Kernel/KMathA.CPP.Z,256"$ -$LK,"TASKf_SUSPENDED",A="FL:::/Kernel/KernelA.HPP,3187"$ -$LK,"FUF_DIFF",A="FL:::/Kernel/KernelA.HPP,2507"$ -$LK,"FUf_DIFF",A="FL:::/Kernel/KernelA.HPP,2482"$ -$LK,"DOCf_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1280"$ -$LK,"CHashImport",A="FL:::/Kernel/KernelA.HPP,755"$ -$LK,"APSethInit",A="FL:::/Kernel/MultiProc.CPP.Z,292",BI=473$ -$LK,"CD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2209"$ -$LK,"CMT_LABEL",A="FL:::/Kernel/KernelA.HPP,1601"$ +$LK,"TASKf_SUSPENDED",A="FL:::/Kernel/KernelA.HPP,3236"$ +$LK,"FUF_DIFF",A="FL:::/Kernel/KernelA.HPP,2557"$ +$LK,"FUf_DIFF",A="FL:::/Kernel/KernelA.HPP,2532"$ +$LK,"DOCf_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1283"$ +$LK,"CHashImport",A="FL:::/Kernel/KernelA.HPP,757"$ +$LK,"APSethInit",A="FL:::/Kernel/MultiProc.CPP.Z,292",BI=474$ +$LK,"CMT_LABEL",A="FL:::/Kernel/KernelA.HPP,1650"$ $LK,"C32_ADD",A="FL:::/Kernel/PCIBIOS.CPP.Z,122"$ -$LK,"MBS_USED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2760"$ -$LK,"HeapCtrlDel",A="FL:::/Kernel/MemC.CPP.Z,55",BI=474$ +$LK,"MBS_USED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2810"$ +$LK,"HeapCtrlDel",A="FL:::/Kernel/MemC.CPP.Z,55",BI=475$ $LK,"_CALLEXTSTR",A="FL:::/Kernel/KUtils.CPP.Z,393"$ -$LK,"FF_USE_OLD_DATETIME",A="FL:::/Kernel/KernelA.HPP,2688"$ -$LK,"CCf_PAREN",A="FL:::/Kernel/KernelA.HPP,2074"$ -$LK,"CCF_PAREN",A="FL:::/Kernel/KernelA.HPP,2073"$ +$LK,"FF_USE_OLD_DATETIME",A="FL:::/Kernel/KernelA.HPP,2738"$ +$LK,"CCf_PAREN",A="FL:::/Kernel/KernelA.HPP,2124"$ +$LK,"CCF_PAREN",A="FL:::/Kernel/KernelA.HPP,2123"$ +$LK,"ACD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1487"$ $LK,"CSysLimitBase",A="FL:::/Kernel/KernelA.HPP,347"$ +$LK,"DVD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2259"$ $LK,"QueIns",A="FL:::/Kernel/KernelB.HPP,67"$ -$LK,"CGrSym",A="FL:::/Kernel/KernelA.HPP,3550"$ -$LK,"ATAR0_FEAT",A="FL:::/Kernel/KernelA.HPP,2189"$ +$LK,"CGrSym",A="FL:::/Kernel/KernelA.HPP,3601"$ +$LK,"ATAR0_FEAT",A="FL:::/Kernel/KernelA.HPP,2239"$ $LK,"RLF_HOME",A="FL:::/Kernel/KernelA.HPP,467"$ $LK,"RLf_HOME",A="FL:::/Kernel/KernelA.HPP,449"$ -$LK,"snd",A="FL:::/Kernel/KGlbls.CPP.Z,16"$ -$LK,"SC_ENTER",A="FL:::/Kernel/KernelA.HPP,3460"$ -$LK,"LTCYAN",A="FL:::/Kernel/KernelA.HPP,2869"$ -$LK,"FUF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2529"$ -$LK,"CCF_PREINC",A="FL:::/Kernel/KernelA.HPP,2063"$ -$LK,"HTT_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,675"$ -$LK,"HTT_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,674"$ -$LK,"CTRLT_GENERIC",A="FL:::/Kernel/KernelA.HPP,2986"$ -$LK,"CCF_KEEP_AT_SIGN",A="FL:::/Kernel/KernelA.HPP,2048"$ -$LK,"RS_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2441"$ -$LK,"CCF_POSTDEC",A="FL:::/Kernel/KernelA.HPP,2062"$ -$LK,"KbdSetLEDs",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,52",BI=475$ -$LK,"DirContextDel",A="FL:::/Kernel/Dsk/DskDirContext.CPP.Z,1",BI=476$ -$LK,"StrPrintFlags",A="FL:::/Kernel/StrB.CPP.Z,177",BI=477$ -$LK,"TK_IFNDEF",A="FL:::/Kernel/KernelA.HPP,2012"$ -$LK,"CMT_FLOAT_CONSTS",A="FL:::/Kernel/KernelA.HPP,1606"$ +$LK,"snd",A="FL:::/Kernel/KGlbls.CPP.Z,28"$ +$LK,"SC_ENTER",A="FL:::/Kernel/KernelA.HPP,3511"$ +$LK,"LTCYAN",A="FL:::/Kernel/KernelA.HPP,2919"$ +$LK,"FUF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2579"$ +$LK,"CCF_PREINC",A="FL:::/Kernel/KernelA.HPP,2113"$ +$LK,"HTT_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,677"$ +$LK,"HTT_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,676"$ +$LK,"CTRLT_GENERIC",A="FL:::/Kernel/KernelA.HPP,3037"$ +$LK,"CCF_KEEP_AT_SIGN",A="FL:::/Kernel/KernelA.HPP,2098"$ +$LK,"RS_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2491"$ +$LK,"CCF_POSTDEC",A="FL:::/Kernel/KernelA.HPP,2112"$ +$LK,"KbdSetLEDs",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,52",BI=476$ +$LK,"DirContextDel",A="FL:::/Kernel/BlkDev/DskDirContext.CPP.Z,1",BI=477$ +$LK,"StrPrintFlags",A="FL:::/Kernel/StrB.CPP.Z,177",BI=478$ +$LK,"TK_IFNDEF",A="FL:::/Kernel/KernelA.HPP,2062"$ +$LK,"CMT_FLOAT_CONSTS",A="FL:::/Kernel/KernelA.HPP,1655"$ $LK,"CBinFile",A="FL:::/Kernel/KernelA.HPP,370"$ -$LK,"SpawnQue",A="FL:::/Kernel/MultiProc.CPP.Z,264",BI=478$ +$LK,"SpawnQue",A="FL:::/Kernel/MultiProc.CPP.Z,264",BI=479$ $LK,"LAPIC_SVR",A="FL:::/Kernel/KernelA.HPP,484"$ -$LK,"CMouseStateGlbls",A="FL:::/Kernel/KernelA.HPP,2922"$ -$LK,"ISO1_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2433"$ -$LK,"HashVal",A="FL:::/Kernel/KHashB.CPP.Z,9",BI=479$ +$LK,"CMouseStateGlbls",A="FL:::/Kernel/KernelA.HPP,2973"$ +$LK,"ISO1_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2483"$ +$LK,"HashVal",A="FL:::/Kernel/KHashB.CPP.Z,9",BI=480$ $LK,"C:/Doc/MultiCore.TXT.Z",A="FL:::/Kernel/KernelB.HPP,233"$ $LK,"IET_IMM_U32",A="FL:::/Kernel/KernelA.HPP,399"$ $LK,"IET_IMM_U16",A="FL:::/Kernel/KernelA.HPP,397"$ $LK,"QueRem",A="FL:::/Kernel/KernelB.HPP,71"$ -$LK,"TASKf_DISABLE_BPTS",A="FL:::/Kernel/KernelA.HPP,3194"$ -$LK,"BDT_NULL",A="FL:::/Kernel/KernelA.HPP,2539"$ +$LK,"TASKf_DISABLE_BPTS",A="FL:::/Kernel/KernelA.HPP,3242"$ +$LK,"BDT_NULL",A="FL:::/Kernel/KernelA.HPP,2589"$ $LK,"FarCall32",A="FL:::/Kernel/PCIBIOS.CPP.Z,161"$ -$LK,"ARGT_MOFFS32",A="FL:::/Kernel/KernelA.HPP,1827"$ -$LK,"ARGT_MOFFS16",A="FL:::/Kernel/KernelA.HPP,1826"$ +$LK,"SCF_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3502"$ +$LK,"SCf_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3487"$ +$LK,"ARGT_MOFFS32",A="FL:::/Kernel/KernelA.HPP,1877"$ +$LK,"ARGT_MOFFS16",A="FL:::/Kernel/KernelA.HPP,1876"$ $LK,"sys_heap_dbg",A="FL:::/Kernel/KernelB.HPP,186"$ -$LK,"FUF_SINGLE",A="FL:::/Kernel/KernelA.HPP,2515"$ -$LK,"FUf_SINGLE",A="FL:::/Kernel/KernelA.HPP,2490"$ -$LK,"LTGRAY",A="FL:::/Kernel/KernelA.HPP,2865"$ -$LK,"QueVectU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,132",BI=480$ +$LK,"FUF_SINGLE",A="FL:::/Kernel/KernelA.HPP,2565"$ +$LK,"FUf_SINGLE",A="FL:::/Kernel/KernelA.HPP,2540"$ +$LK,"DVDImageWriteTask",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,49",BI=481$ +$LK,"LTGRAY",A="FL:::/Kernel/KernelA.HPP,2915"$ +$LK,"IRQKbd",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,407",BI=482$ +$LK,"QueVectU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,132",BI=483$ $LK,"SwapU32",A="FL:::/Kernel/KernelB.HPP,114"$ $LK,"SwapU16",A="FL:::/Kernel/KernelB.HPP,112"$ -$LK,"ARf_MESH_ED",A="FL:::/Kernel/KernelA.HPP,3800"$ -$LK,"CAsmUndefHash",A="FL:::/Kernel/KernelA.HPP,1725"$ -$LK,"HTt_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,645"$ -$LK,"HTt_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,644"$ +$LK,"ARf_MESH_ED",A="FL:::/Kernel/KernelA.HPP,3851"$ +$LK,"CAsmUndefHash",A="FL:::/Kernel/KernelA.HPP,1775"$ +$LK,"HTt_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,647"$ +$LK,"HTt_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,646"$ $LK,"C32_EDI",A="FL:::/Kernel/PCIBIOS.CPP.Z,63"$ -$LK,"pow10_I64",A="FL:::/Kernel/KGlbls.CPP.Z,14"$ -$LK,"sys_num_spawned_tasks",A="FL:::/Kernel/KGlbls.CPP.Z,8"$ +$LK,"pow10_I64",A="FL:::/Kernel/KGlbls.CPP.Z,15"$ +$LK,"sys_num_spawned_tasks",A="FL:::/Kernel/KGlbls.CPP.Z,9"$ $LK,"LAPIC_LVT_LINT0",A="FL:::/Kernel/KernelA.HPP,495"$ -$LK,"Cluster2Blk",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,32",BI=481$ -$LK,"ArcFinishCompression",A="FL:::/Kernel/Compress.CPP.Z,155",BI=482$ +$LK,"Cluster2Blk",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,32",BI=484$ +$LK,"ArcFinishCompression",A="FL:::/Kernel/Compress.CPP.Z,155",BI=485$ $LK,"LAPIC_LVT_LINT1",A="FL:::/Kernel/KernelA.HPP,496"$ -$LK,"sys_winmgr_task",A="FL:::/Kernel/KGlbls.CPP.Z,10"$ -$LK,"SC_CAPS",A="FL:::/Kernel/KernelA.HPP,3464"$ +$LK,"sys_winmgr_task",A="FL:::/Kernel/KGlbls.CPP.Z,11"$ +$LK,"SC_CAPS",A="FL:::/Kernel/KernelA.HPP,3515"$ $LK,"SYS_RAM_REBOOT_END",A="FL:::/Kernel/KStart.CPP.Z,373"$ -$LK,"CMT_ARRAY_DIM",A="FL:::/Kernel/KernelA.HPP,1607"$ -$LK,"REGT_FSTK",A="FL:::/Kernel/KernelA.HPP,735"$ -$LK,"ARGT_MOFFS64",A="FL:::/Kernel/KernelA.HPP,1828"$ -$LK,"DOCF_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1240"$ +$LK,"CMT_ARRAY_DIM",A="FL:::/Kernel/KernelA.HPP,1656"$ +$LK,"ACD_POS_CHAR",A="FL:::/Kernel/KernelA.HPP,1493"$ +$LK,"REGT_FSTK",A="FL:::/Kernel/KernelA.HPP,737"$ +$LK,"ARGT_MOFFS64",A="FL:::/Kernel/KernelA.HPP,1878"$ +$LK,"DOCF_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1243"$ $LK,"CRAXRBCRCXRDX",A="FL:::/Kernel/KernelA.HPP,562"$ $LK,"_SAVE_EXCEPT_REGS",A="FL:::/Kernel/KExcept.CPP.Z,26"$ -$LK,"DOCf_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1275"$ -$LK,"RoundI64",A="FL:::/Kernel/KMathB.CPP.Z,47",BI=483$ -$LK,"CSndGlbls",A="FL:::/Kernel/KernelA.HPP,3740"$ +$LK,"DOCf_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1278"$ +$LK,"RoundI64",A="FL:::/Kernel/KMathB.CPP.Z,47",BI=486$ +$LK,"CSndGlbls",A="FL:::/Kernel/KernelA.HPP,3790"$ $LK,"EXT_HEAPLOG_FREE",A="FL:::/Kernel/KernelA.HPP,572"$ -$LK,"DrvSerialNum",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,226",BI=484$ +$LK,"DrvSerialNum",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,224",BI=487$ $LK,"Fstsw",A="FL:::/Kernel/KernelB.HPP,132"$ -$LK,"BDT_ATA",A="FL:::/Kernel/KernelA.HPP,2541"$ +$LK,"BDT_ATA",A="FL:::/Kernel/KernelA.HPP,2591"$ $LK,"RFLAGf_RESUME",A="FL:::/Kernel/KernelA.HPP,317"$ $LK,"C32_EAX",A="FL:::/Kernel/PCIBIOS.CPP.Z,58"$ -$LK,"PortNop",A="FL:::/Kernel/KMisc.CPP.Z,1",BI=485$ +$LK,"PortNop",A="FL:::/Kernel/KMisc.CPP.Z,1",BI=488$ $LK,"StrNCmp",A="FL:::/Kernel/StrA.CPP.Z,313"$ -$LK,"FUF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2512"$ -$LK,"FUf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2487"$ -$LK,"CFAT32FileInfoSect",A="FL:::/Kernel/KernelA.HPP,2280"$ +$LK,"FUF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2562"$ +$LK,"FUf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2537"$ +$LK,"CFAT32FileInfoSect",A="FL:::/Kernel/KernelA.HPP,2330"$ $LK,"SYS_HEAP_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$ -$LK,"CATAPITrack",A="FL:::/Kernel/KernelA.HPP,2332"$ +$LK,"CATAPITrack",A="FL:::/Kernel/KernelA.HPP,2382"$ $LK,"C32_EBX",A="FL:::/Kernel/PCIBIOS.CPP.Z,59"$ -$LK,"CCF_HAS_MISC_DATA",A="FL:::/Kernel/KernelA.HPP,2054"$ -$LK,"LFSF_DOC",A="FL:::/Kernel/KernelA.HPP,1945"$ +$LK,"CCF_HAS_MISC_DATA",A="FL:::/Kernel/KernelA.HPP,2104"$ +$LK,"LFSF_DOC",A="FL:::/Kernel/KernelA.HPP,1995"$ +$LK,"ACD_PRONUNCIATION_CHAR",A="FL:::/Kernel/KernelA.HPP,1492"$ +$LK,"ACD_PRONUNCIATION",A="FL:::/Kernel/KernelA.HPP,1481"$ $LK,"C32_ECX",A="FL:::/Kernel/PCIBIOS.CPP.Z,60"$ -$LK,"FifoU8Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,205",BI=486$ +$LK,"FifoU8Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,205",BI=489$ $LK,"C32_EDX",A="FL:::/Kernel/PCIBIOS.CPP.Z,61"$ -$LK,"LoadPass1",A="FL:::/Kernel/KLoad.CPP.Z,67",BI=487$ -$LK,"LoadPass2",A="FL:::/Kernel/KLoad.CPP.Z,154",BI=488$ -$LK,"ARf_MANAGE_SLIDER",A="FL:::/Kernel/KernelA.HPP,3802"$ -$LK,"CSndData",A="FL:::/Kernel/KernelA.HPP,3733"$ -$LK,"SC_PAGE_DOWN",A="FL:::/Kernel/KernelA.HPP,3472"$ -$LK,"OC_NOP",A="FL:::/Kernel/KernelA.HPP,1673"$ +$LK,"LoadPass1",A="FL:::/Kernel/KLoad.CPP.Z,67",BI=490$ +$LK,"LoadPass2",A="FL:::/Kernel/KLoad.CPP.Z,154",BI=491$ +$LK,"ARf_MANAGE_SLIDER",A="FL:::/Kernel/KernelA.HPP,3853"$ +$LK,"CSndData",A="FL:::/Kernel/KernelA.HPP,3783"$ +$LK,"SC_PAGE_DOWN",A="FL:::/Kernel/KernelA.HPP,3523"$ +$LK,"OC_NOP",A="FL:::/Kernel/KernelA.HPP,1723"$ $LK,"SPF_AUX_FMT_NUM",A="FL:::/Kernel/StrPrint.CPP.Z,8"$ -$LK,"MSG_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3127"$ -$LK,"SYS_SEMA_SINGLE_USER",A="FL:::/Kernel/KernelA.HPP,596"$ -$LK,"TimeStampFreqCal",A="FL:::/Kernel/KMisc.CPP.Z,85",BI=489$ -$LK,"QueVectU8Get",A="FL:::/Kernel/KDataTypes.CPP.Z,140",BI=490$ -$LK,"DOCF_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1238"$ -$LK,"PostMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,243",BI=491$ -$LK,"SVCT_CALL",A="FL:::/Kernel/KernelA.HPP,3092"$ -$LK,"ATAPISeek",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,131",BI=492$ -$LK,"MPrintDate",A="FL:::/Kernel/StrPrint.CPP.Z,61",BI=493$ -$LK,"SC_F10",A="FL:::/Kernel/KernelA.HPP,3486"$ -$LK,"SC_F11",A="FL:::/Kernel/KernelA.HPP,3487"$ -$LK,"SYS_SEMA_TT",A="FL:::/Kernel/KernelA.HPP,602"$ -$LK,"Silent",A="FL:::/Kernel/KMisc.CPP.Z,223",BI=494$ -$LK,"SC_F12",A="FL:::/Kernel/KernelA.HPP,3488"$ -$LK,"WIF_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1395"$ -$LK,"BOOT_SRC_CDROM",A="FL:::/Kernel/KernelA.HPP,3788"$ -$LK,"CCF_POSTINC",A="FL:::/Kernel/KernelA.HPP,2061"$ -$LK,"CCF_IN_IF",A="FL:::/Kernel/KernelA.HPP,2043"$ -$LK,"I_DIVIDE_BY_ZERO",A="FL:::/Kernel/KernelA.HPP,284"$ -$LK,"APSethTask",A="FL:::/Kernel/MultiProc.CPP.Z,211",BI=495$ -$LK,"HashStr",A="FL:::/Kernel/KHashA.CPP.Z,299"$ -$LK,"CHashExport",A="FL:::/Kernel/KernelA.HPP,750"$ -$LK,"FifoU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,167",BI=496$ -$LK,"DrvIsWritable",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,148",BI=497$ -$LK,"FWBlks",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,181",BI=498$ +$LK,"MSG_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3178"$ +$LK,"SYS_SEMA_SINGLE_USER",A="FL:::/Kernel/KernelA.HPP,597"$ +$LK,"TimeStampFreqCal",A="FL:::/Kernel/KMisc.CPP.Z,85",BI=492$ +$LK,"QueVectU8Get",A="FL:::/Kernel/KDataTypes.CPP.Z,140",BI=493$ +$LK,"DOCF_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1241"$ +$LK,"PostMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,239",BI=494$ +$LK,"SVCT_CALL",A="FL:::/Kernel/KernelA.HPP,3143"$ +$LK,"ATAPISeek",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,131",BI=495$ +$LK,"MPrintDate",A="FL:::/Kernel/StrPrint.CPP.Z,61",BI=496$ +$LK,"SC_F10",A="FL:::/Kernel/KernelA.HPP,3537"$ +$LK,"SC_F11",A="FL:::/Kernel/KernelA.HPP,3538"$ +$LK,"SYS_SEMA_TT",A="FL:::/Kernel/KernelA.HPP,603"$ +$LK,"Silent",A="FL:::/Kernel/KMisc.CPP.Z,223",BI=497$ +$LK,"SC_F12",A="FL:::/Kernel/KernelA.HPP,3539"$ +$LK,"WIF_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1398"$ +$LK,"CCF_POSTINC",A="FL:::/Kernel/KernelA.HPP,2111"$ +$LK,"CCF_IN_IF",A="FL:::/Kernel/KernelA.HPP,2093"$ +$LK,"APSethTask",A="FL:::/Kernel/MultiProc.CPP.Z,211",BI=498$ +$LK,"HashStr",A="FL:::/Kernel/KHashA.CPP.Z,254"$ +$LK,"CHashExport",A="FL:::/Kernel/KernelA.HPP,752"$ +$LK,"FifoU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,167",BI=499$ +$LK,"DrvIsWritable",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,148",BI=500$ +$LK,"FWBlks",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,181",BI=501$ $LK,"chars_bmp_printable",A="FL:::/Kernel/StrA.CPP.Z,381"$ $LK,"RLF_COMPILER",A="FL:::/Kernel/KernelA.HPP,463"$ $LK,"RLf_COMPILER",A="FL:::/Kernel/KernelA.HPP,445"$ -$LK,"TASK_NAME_LEN",A="FL:::/Kernel/KernelA.HPP,3212"$ -$LK,"COLORROP_COLORS_MASK",A="FL:::/Kernel/KernelA.HPP,2887"$ +$LK,"TASK_NAME_LEN",A="FL:::/Kernel/KernelA.HPP,3260"$ +$LK,"COLORROP_COLORS_MASK",A="FL:::/Kernel/KernelA.HPP,2937"$ $LK,"C32_ESI",A="FL:::/Kernel/PCIBIOS.CPP.Z,62"$ $LK,"SYS_DATA_BP",A="FL:::/Kernel/KStart.CPP.Z,205"$ -$LK,"VGAP_PALETTE_DATA",A="FL:::/Kernel/KernelA.HPP,3634"$ -$LK,"ATAR0_HCYL",A="FL:::/Kernel/KernelA.HPP,2193"$ +$LK,"VGAP_PALETTE_DATA",A="FL:::/Kernel/KernelA.HPP,3685"$ +$LK,"ATAR0_HCYL",A="FL:::/Kernel/KernelA.HPP,2243"$ $LK,"sys_code_bp",A="FL:::/Kernel/KernelB.HPP,195"$ $LK,"RepOutU32",A="FL:::/Kernel/KernelB.HPP,89"$ $LK,"RepOutU16",A="FL:::/Kernel/KernelB.HPP,87"$ -$LK,"TK_SUBSCRIPT",A="FL:::/Kernel/KernelA.HPP,1981"$ -$LK,"WIG_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1405"$ -$LK,"ARf_PSALMODY_JUKEBOX",A="FL:::/Kernel/KernelA.HPP,3799"$ -$LK,"DOCEf_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,1037"$ -$LK,"DOCEF_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,957"$ -$LK,"NORMAL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,3"$ -$LK,"LinkedLstSize",A="FL:::/Kernel/KDataTypes.CPP.Z,31",BI=499$ +$LK,"TK_SUBSCRIPT",A="FL:::/Kernel/KernelA.HPP,2031"$ +$LK,"WIG_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1408"$ +$LK,"ARf_PSALMODY_JUKEBOX",A="FL:::/Kernel/KernelA.HPP,3850"$ +$LK,"DOCEf_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,1040"$ +$LK,"DOCEF_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,960"$ +$LK,"NORMAL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,3"$ +$LK,"LinkedLstSize",A="FL:::/Kernel/KDataTypes.CPP.Z,31",BI=502$ $LK,"SSF_NO_COMPRESSION",A="FL:::/Kernel/KernelA.HPP,222"$ -$LK,"TASKf_NOT_RAW",A="FL:::/Kernel/KernelA.HPP,3193"$ -$LK,"DirContextNew",A="FL:::/Kernel/Dsk/DskDirContext.CPP.Z,21",BI=500$ +$LK,"TASKf_NOT_RAW",A="FL:::/Kernel/KernelA.HPP,3241"$ +$LK,"DirContextNew",A="FL:::/Kernel/BlkDev/DskDirContext.CPP.Z,21",BI=503$ $LK,"_SET_MSR",A="FL:::/Kernel/KUtils.CPP.Z,459"$ -$LK,"HClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2805"$ +$LK,"HClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2855"$ $LK,"SPF_QUESTION",A="FL:::/Kernel/StrPrint.CPP.Z,7"$ +$LK,"ACD_EXTRA_END",A="FL:::/Kernel/KernelA.HPP,1486"$ $LK,"SetRFlags",A="FL:::/Kernel/KernelB.HPP,255"$ $LK,"GetRFlags",A="FL:::/Kernel/KernelB.HPP,249"$ -$LK,"DOCEF_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,961"$ -$LK,"MSG_IP_MOVE",A="FL:::/Kernel/KernelA.HPP,3128"$ -$LK,"SVCT_TEXT_INPUT",A="FL:::/Kernel/KernelA.HPP,3088"$ -$LK,"DOClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,1307"$ -$LK,"CallStkGrow",A="FL:::/Kernel/Task.CPP.Z,82",BI=501$ -$LK,"ATAR0_NSECT",A="FL:::/Kernel/KernelA.HPP,2190"$ -$LK,"DOCEf_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,1041"$ +$LK,"DOCEF_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,964"$ +$LK,"MSG_IP_MOVE",A="FL:::/Kernel/KernelA.HPP,3179"$ +$LK,"SVCT_TEXT_INPUT",A="FL:::/Kernel/KernelA.HPP,3139"$ +$LK,"DOClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,1310"$ +$LK,"CallStkGrow",A="FL:::/Kernel/KTask.CPP.Z,78",BI=504$ +$LK,"ATAR0_NSECT",A="FL:::/Kernel/KernelA.HPP,2240"$ +$LK,"DOCEf_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,1044"$ $LK,"RLF_DOC",A="FL:::/Kernel/KernelA.HPP,464"$ $LK,"chars_bmp_macro",A="FL:::/Kernel/StrA.CPP.Z,376"$ $LK,"OutU8",A="FL:::/Kernel/KernelB.HPP,79"$ -$LK,"DCF_ALIAS",A="FL:::/Kernel/KernelA.HPP,3538"$ -$LK,"Ff_HASERRCODE",A="FL:::/Kernel/KernelA.HPP,838"$ -$LK,"TASKLf_TASK_LOCK",A="FL:::/Kernel/KernelA.HPP,3203"$ -$LK,"DOCF_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1235"$ -$LK,"RawPutChar",A="FL:::/Kernel/Display.CPP.Z,1",BI=502$ -$LK,"FifoU8Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,227",BI=503$ -$LK,"C:/Doc/TimeHPET.TXT.Z",A="FL:::/Kernel/KernelB.HPP,293"$ -$LK,"DOCf_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1270"$ -$LK,"CArcEntry",A="FL:::/Kernel/KernelA.HPP,3649"$ -$LK,"AOT_BIN_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1710"$ -$LK,"DOCf_FORM",A="FL:::/Kernel/KernelA.HPP,1278"$ -$LK,"DOCF_FORM",A="FL:::/Kernel/KernelA.HPP,1243"$ -$LK,"CHashTable",A="FL:::/Kernel/KernelA.HPP,634"$ -$LK,"QueVectU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,87",BI=504$ -$LK,"BDT_RAM",A="FL:::/Kernel/KernelA.HPP,2540"$ -$LK,"CMF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1610"$ -$LK,"ICF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1527"$ -$LK,"DOCf_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1273"$ -$LK,"MLMF_IS_STR",A="FL:::/Kernel/KernelA.HPP,779"$ +$LK,"DCF_ALIAS",A="FL:::/Kernel/KernelA.HPP,3589"$ +$LK,"Ff_HASERRCODE",A="FL:::/Kernel/KernelA.HPP,841"$ +$LK,"TASKLf_TASK_LOCK",A="FL:::/Kernel/KernelA.HPP,3251"$ +$LK,"DOCF_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1238"$ +$LK,"RawPutChar",A="FL:::/Kernel/Display.CPP.Z,1",BI=505$ +$LK,"FifoU8Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,227",BI=506$ +$LK,"C:/Doc/TimeHPET.TXT.Z",A="FL:::/Kernel/KernelB.HPP,289"$ +$LK,"DOCf_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1273"$ +$LK,"CArcEntry",A="FL:::/Kernel/KernelA.HPP,3699"$ +$LK,"AOT_BIN_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1760"$ +$LK,"DOCf_FORM",A="FL:::/Kernel/KernelA.HPP,1281"$ +$LK,"DOCF_FORM",A="FL:::/Kernel/KernelA.HPP,1246"$ +$LK,"CHashTable",A="FL:::/Kernel/KernelA.HPP,636"$ +$LK,"QueVectU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,87",BI=507$ +$LK,"BDT_RAM",A="FL:::/Kernel/KernelA.HPP,2590"$ +$LK,"CMF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1659"$ +$LK,"ICF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1576"$ +$LK,"DOCf_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1276"$ +$LK,"MLMF_IS_STR",A="FL:::/Kernel/KernelA.HPP,781"$ $LK,"SYS_TIMER0_PERIOD",A="FL:::/Kernel/KernelA.HPP,547"$ $LK,"SET_FS_BASE",A="FL:::/Kernel/KUtils.CPP.Z,446"$ -$LK,"CISO1PriDesc",A="FL:::/Kernel/KernelA.HPP,2395"$ -$LK,"DOCT_INS_BINARY_SIZE",A="FL:::/Kernel/KernelA.HPP,927"$ -$LK,"PutHex",A="FL:::/Kernel/StrA.CPP.Z,12",BI=505$ -$LK,"PopUp",A="FL:::/Kernel/SrvCmd.CPP.Z,385",BI=506$ -$LK,"SCF_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3449"$ -$LK,"SCf_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3435"$ -$LK,"MSG_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3133"$ -$LK,"SVCT_EXE_STR",A="FL:::/Kernel/KernelA.HPP,3090"$ -$LK,"DOCF_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1264"$ +$LK,"CISO1PriDesc",A="FL:::/Kernel/KernelA.HPP,2445"$ +$LK,"DOCT_INS_BINARY_SIZE",A="FL:::/Kernel/KernelA.HPP,930"$ +$LK,"PutHex",A="FL:::/Kernel/StrA.CPP.Z,12",BI=508$ +$LK,"PopUp",A="FL:::/Kernel/SrvCmd.CPP.Z,379",BI=509$ +$LK,"SCF_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3499"$ +$LK,"SCf_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3484"$ +$LK,"MSG_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3184"$ +$LK,"SVCT_EXE_STR",A="FL:::/Kernel/KernelA.HPP,3141"$ +$LK,"DOCF_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1267"$ $LK,"IOAPICARB",A="FL:::/Kernel/KernelA.HPP,508"$ -$LK,"DOCf_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1300"$ -$LK,"SCF_SHIFT",A="FL:::/Kernel/KernelA.HPP,3441"$ -$LK,"SCf_SHIFT",A="FL:::/Kernel/KernelA.HPP,3427"$ -$LK,"WIF_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1381"$ -$LK,"SYS_TIMER_HANDLER",A="FL:::/Kernel/Ints.CPP.Z,12"$ -$LK,"StrLastOcc",A="FL:::/Kernel/StrA.CPP.Z,599",BI=507$ -$LK,"WIf_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1409"$ -$LK,"FClose",A="FL:::/Kernel/Dsk/DskCFile.CPP.Z,73",BI=508$ -$LK,"IEF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1868"$ -$LK,"CMT_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1603"$ -$LK,"mon_start_days1",A="FL:::/Kernel/Date.CPP.Z,3"$ -$LK,"HTF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,698"$ -$LK,"RLF_DSK",A="FL:::/Kernel/KernelA.HPP,462"$ -$LK,"mon_start_days2",A="FL:::/Kernel/Date.CPP.Z,5"$ -$LK,"FONT_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3510"$ -$LK,"SVCf_FOCUS_MASTER",A="FL:::/Kernel/KernelA.HPP,3078"$ -$LK,"HTf_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,668"$ -$LK,"DFT_CACHE_LINE_WIDTH",A="FL:::/Kernel/KernelA.HPP,576"$ -$LK,"MSGF_ALLOW_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3147"$ -$LK,"ATAR0_LCYL",A="FL:::/Kernel/KernelA.HPP,2192"$ -$LK,"MemPagePresentMark",A="FL:::/Kernel/MemA.CPP.Z,181",BI=509$ -$LK,"ICf_DONT_PUSH_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1530"$ -$LK,"Sleep",A="FL:::/Kernel/KMisc.CPP.Z,155",BI=510$ -$LK,"RedSeaMkDir",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,604",BI=511$ -$LK,"PutKey",A="FL:::/Kernel/KeyDev.CPP.Z,1",BI=512$ -$LK,"_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,165"$ -$LK,"FUf_ALL",A="FL:::/Kernel/KernelA.HPP,2484"$ -$LK,"CArcCompress",A="FL:::/Kernel/KernelA.HPP,3675"$ -$LK,"CHashOpcode",A="FL:::/Kernel/KernelA.HPP,1860"$ -$LK,"FifoU8Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,173",BI=513$ -$LK,"CGridGlbls",A="FL:::/Kernel/KernelA.HPP,2969"$ -$LK,"FATFromName",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,173",BI=514$ -$LK,"AAT_ADD_U32",A="FL:::/Kernel/KernelA.HPP,1883"$ -$LK,"AAT_ADD_U16",A="FL:::/Kernel/KernelA.HPP,1881"$ -$LK,"SC_PAUSE",A="FL:::/Kernel/KernelA.HPP,3489"$ -$LK,"TRANSPARENT",A="FL:::/Kernel/KernelA.HPP,2857"$ -$LK,"XTalkStrWait",A="FL:::/Kernel/SrvCmd.CPP.Z,510",BI=515$ -$LK,"CArcCtrl",A="FL:::/Kernel/KernelA.HPP,3657"$ -$LK,"SC_CTRL",A="FL:::/Kernel/KernelA.HPP,3462"$ -$LK,"RS_ATTR_LONG_NAME_MASK",A="FL:::/Kernel/KernelA.HPP,2445"$ -$LK,"ATAR1_CTRL",A="FL:::/Kernel/KernelA.HPP,2197"$ -$LK,"ICF_A1_TO_F64",A="FL:::/Kernel/KernelA.HPP,1509"$ -$LK,"DOC_COLOR_BIN",A="FL:::/Kernel/KernelA.HPP,1122"$ -$LK,"Ff_NOARGPOP",A="FL:::/Kernel/KernelA.HPP,840"$ -$LK,"EdLiteFileLine",A="FL:::/Kernel/EdLite.CPP.Z,316",BI=516$ -$LK,"FifoU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,155",BI=517$ -$LK,"SC_HOME",A="FL:::/Kernel/KernelA.HPP,3473"$ -$LK,"Mount",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,173",BI=518$ -$LK,"ATAPIWritePktWord",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,106",BI=519$ -$LK,"FilesFindMatch",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,40",BI=520$ -$LK,"BlkDevsRelease",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,79",BI=521$ -$LK,"DOC_COLOR_LINK",A="FL:::/Kernel/KernelA.HPP,1117"$ -$LK,"TK_EQUAL_EQUAL",A="FL:::/Kernel/KernelA.HPP,1994"$ -$LK,"AAT_ADD_U64",A="FL:::/Kernel/KernelA.HPP,1885"$ -$LK,"HTT_CLASS",A="FL:::/Kernel/KernelA.HPP,678"$ -$LK,"HTt_CLASS",A="FL:::/Kernel/KernelA.HPP,648"$ -$LK,"Cd2DirEntry",A="FL:::/Kernel/Dsk/DskStrA.CPP.Z,194",BI=522$ +$LK,"DOCf_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1303"$ +$LK,"SCF_SHIFT",A="FL:::/Kernel/KernelA.HPP,3491"$ +$LK,"SCf_SHIFT",A="FL:::/Kernel/KernelA.HPP,3476"$ +$LK,"WIF_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1383"$ +$LK,"StrLastOcc",A="FL:::/Kernel/StrA.CPP.Z,599",BI=510$ +$LK,"WIf_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1412"$ +$LK,"FClose",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,73",BI=511$ +$LK,"IEF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1918"$ +$LK,"CMT_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1652"$ +$LK,"mon_start_days1",A="FL:::/Kernel/KDate.CPP.Z,3"$ +$LK,"HTF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,700"$ +$LK,"mon_start_days2",A="FL:::/Kernel/KDate.CPP.Z,5"$ +$LK,"FONT_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3561"$ +$LK,"SVCf_FOCUS_MASTER",A="FL:::/Kernel/KernelA.HPP,3129"$ +$LK,"HTf_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,670"$ +$LK,"DFT_CACHE_LINE_WIDTH",A="FL:::/Kernel/KernelA.HPP,577"$ +$LK,"ATAR0_LCYL",A="FL:::/Kernel/KernelA.HPP,2242"$ +$LK,"MemPagePresentMark",A="FL:::/Kernel/MemA.CPP.Z,181",BI=512$ +$LK,"ICf_DONT_PUSH_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1579"$ +$LK,"Sleep",A="FL:::/Kernel/KMisc.CPP.Z,155",BI=513$ +$LK,"RedSeaMkDir",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,604",BI=514$ +$LK,"PutKey",A="FL:::/Kernel/KeyDev.CPP.Z,1",BI=515$ +$LK,"_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,120"$ +$LK,"FUf_ALL",A="FL:::/Kernel/KernelA.HPP,2534"$ +$LK,"CArcCompress",A="FL:::/Kernel/KernelA.HPP,3725"$ +$LK,"CHashOpcode",A="FL:::/Kernel/KernelA.HPP,1910"$ +$LK,"FifoU8Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,173",BI=516$ +$LK,"CGridGlbls",A="FL:::/Kernel/KernelA.HPP,3020"$ +$LK,"FATFromName",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,173",BI=517$ +$LK,"AAT_ADD_U32",A="FL:::/Kernel/KernelA.HPP,1933"$ +$LK,"AAT_ADD_U16",A="FL:::/Kernel/KernelA.HPP,1931"$ +$LK,"SC_PAUSE",A="FL:::/Kernel/KernelA.HPP,3540"$ +$LK,"TRANSPARENT",A="FL:::/Kernel/KernelA.HPP,2907"$ +$LK,"XTalkStrWait",A="FL:::/Kernel/SrvCmd.CPP.Z,499",BI=518$ +$LK,"CArcCtrl",A="FL:::/Kernel/KernelA.HPP,3707"$ +$LK,"SC_CTRL",A="FL:::/Kernel/KernelA.HPP,3513"$ +$LK,"RS_ATTR_LONG_NAME_MASK",A="FL:::/Kernel/KernelA.HPP,2495"$ +$LK,"ATAR1_CTRL",A="FL:::/Kernel/KernelA.HPP,2247"$ +$LK,"ICF_A1_TO_F64",A="FL:::/Kernel/KernelA.HPP,1558"$ +$LK,"DOC_COLOR_BIN",A="FL:::/Kernel/KernelA.HPP,1125"$ +$LK,"Ff_NOARGPOP",A="FL:::/Kernel/KernelA.HPP,843"$ +$LK,"EdLiteFileLine",A="FL:::/Kernel/EdLite.CPP.Z,316",BI=519$ +$LK,"FifoU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,155",BI=520$ +$LK,"SC_HOME",A="FL:::/Kernel/KernelA.HPP,3524"$ +$LK,"Mount",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,173",BI=521$ +$LK,"ATAPIWritePktWord",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,106",BI=522$ +$LK,"FilesFindMatch",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,40",BI=523$ +$LK,"BlkDevsRelease",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,77",BI=524$ +$LK,"DOC_COLOR_LINK",A="FL:::/Kernel/KernelA.HPP,1120"$ +$LK,"TK_EQUAL_EQUAL",A="FL:::/Kernel/KernelA.HPP,2044"$ +$LK,"AAT_ADD_U64",A="FL:::/Kernel/KernelA.HPP,1935"$ +$LK,"HTT_CLASS",A="FL:::/Kernel/KernelA.HPP,680"$ +$LK,"HTt_CLASS",A="FL:::/Kernel/KernelA.HPP,650"$ +$LK,"Cd2DirEntry",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,194",BI=525$ $LK,"IET_IMM_U0",A="FL:::/Kernel/KernelA.HPP,393"$ -$LK,"FifoU8Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,190",BI=523$ -$LK,"StrLastRem",A="FL:::/Kernel/StrA.CPP.Z,609",BI=524$ -$LK,"RedSeaDrvInit",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,58",BI=525$ -$LK,"BlkDevAdd",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,23",BI=526$ -$LK,"ROPF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2849"$ -$LK,"DirLongNameFill",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,204",BI=527$ -$LK,"QueVectU8Put",A="FL:::/Kernel/KDataTypes.CPP.Z,96",BI=528$ -$LK,"StrFind",A="FL:::/Kernel/StrA.CPP.Z,624",BI=529$ -$LK,"CMemRange",A="FL:::/Kernel/KernelA.HPP,2772"$ -$LK,"WIf_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1419"$ -$LK,"PSectFind",A="FL:::/Kernel/PSect.CPP.Z,10",BI=530$ +$LK,"FifoU8Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,190",BI=526$ +$LK,"StrLastRem",A="FL:::/Kernel/StrA.CPP.Z,609",BI=527$ +$LK,"RedSeaDrvInit",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,58",BI=528$ +$LK,"BlkDevAdd",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,23",BI=529$ +$LK,"ROPF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2899"$ +$LK,"DirLongNameFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,204",BI=530$ +$LK,"QueVectU8Put",A="FL:::/Kernel/KDataTypes.CPP.Z,96",BI=531$ +$LK,"StrFind",A="FL:::/Kernel/StrA.CPP.Z,624",BI=532$ +$LK,"CMemRange",A="FL:::/Kernel/KernelA.HPP,2822"$ +$LK,"WIf_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1423"$ +$LK,"PSectFind",A="FL:::/Kernel/PSect.CPP.Z,10",BI=533$ $LK,"C32_RSP",A="FL:::/Kernel/PCIBIOS.CPP.Z,66"$ -$LK,"OutStr",A="FL:::/Kernel/StrPrint.CPP.Z,32",BI=531$ -$LK,"DOCEf_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1074"$ -$LK,"DOCEF_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,988"$ -$LK,"TimersInit",A="FL:::/Kernel/KEnd.CPP.Z,82",BI=532$ -$LK,"ATAR0_SECT",A="FL:::/Kernel/KernelA.HPP,2191"$ -$LK,"WIF_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1383"$ -$LK,"DOCEf_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,1063"$ +$LK,"OutStr",A="FL:::/Kernel/StrPrint.CPP.Z,32",BI=534$ +$LK,"DOCEf_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1077"$ +$LK,"DOCEF_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,991"$ +$LK,"TimersInit",A="FL:::/Kernel/KEnd.CPP.Z,84",BI=535$ +$LK,"ATAR0_SECT",A="FL:::/Kernel/KernelA.HPP,2241"$ +$LK,"WIF_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1385"$ +$LK,"DOCEf_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,1066"$ $LK,"IET_IMM_U8",A="FL:::/Kernel/KernelA.HPP,395"$ -$LK,"SC_ALT",A="FL:::/Kernel/KernelA.HPP,3463"$ -$LK,"ARGT_MOFFS8",A="FL:::/Kernel/KernelA.HPP,1825"$ -$LK,"WIf_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1410"$ -$LK,"EXT_NUM_ENTRIES",A="FL:::/Kernel/KernelA.HPP,573"$ -$LK,"DefineMatch",A="FL:::/Kernel/KDefine.CPP.Z,85",BI=533$ -$LK,"CLexHashTableContext",A="FL:::/Kernel/KernelA.HPP,2026"$ +$LK,"SC_ALT",A="FL:::/Kernel/KernelA.HPP,3514"$ +$LK,"ARGT_MOFFS8",A="FL:::/Kernel/KernelA.HPP,1875"$ +$LK,"WIf_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1413"$ +$LK,"EXT_NUM_ENTRIES",A="FL:::/Kernel/KernelA.HPP,574"$ +$LK,"DefineMatch",A="FL:::/Kernel/KDefine.CPP.Z,85",BI=536$ +$LK,"CLexHashTableContext",A="FL:::/Kernel/KernelA.HPP,2076"$ $LK,"RLF_RAW",A="FL:::/Kernel/KernelA.HPP,459"$ -$LK,"WZeroBlks",A="FL:::/Kernel/Dsk/DskBlk.CPP.Z,2",BI=534$ -$LK,"ATAPISetMaxSpeed",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,118",BI=535$ -$LK,"StkRep",A="FL:::/Kernel/KDbg.CPP.Z,104",BI=536$ -$LK,"Mem2MegFree",A="FL:::/Kernel/MemA.CPP.Z,450",BI=537$ +$LK,"WZeroBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,2",BI=537$ +$LK,"ATAPISetMaxSpeed",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,118",BI=538$ +$LK,"StkRep",A="FL:::/Kernel/KDbg.CPP.Z,104",BI=539$ +$LK,"Mem2MegFree",A="FL:::/Kernel/MemA.CPP.Z,450",BI=540$ $LK,"SwapU8",A="FL:::/Kernel/KernelB.HPP,116"$ -$LK,"DCF_TRANSFORMATION",A="FL:::/Kernel/KernelA.HPP,3527"$ -$LK,"FF_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2687"$ -$LK,"TTS_CONST",A="FL:::/Kernel/KernelA.HPP,3179"$ -$LK,"ISO1T_VOL_DRV_DESC",A="FL:::/Kernel/KernelA.HPP,2392"$ +$LK,"DCF_TRANSFORMATION",A="FL:::/Kernel/KernelA.HPP,3578"$ +$LK,"FF_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2737"$ +$LK,"TTS_CONST",A="FL:::/Kernel/KernelA.HPP,3228"$ +$LK,"ISO1T_VOL_DRV_DESC",A="FL:::/Kernel/KernelA.HPP,2442"$ $LK,"SaveExceptRegs",A="FL:::/Kernel/KExcept.CPP.Z,43"$ -$LK,"SC_END",A="FL:::/Kernel/KernelA.HPP,3474"$ -$LK,"CAOTHeapGlbl",A="FL:::/Kernel/KernelA.HPP,1900"$ -$LK,"ArcExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,165",BI=538$ -$LK,"FUf_MAP",A="FL:::/Kernel/KernelA.HPP,2488"$ -$LK,"DOCf_MORE",A="FL:::/Kernel/KernelA.HPP,1285"$ -$LK,"DOCF_MORE",A="FL:::/Kernel/KernelA.HPP,1250"$ +$LK,"SC_END",A="FL:::/Kernel/KernelA.HPP,3525"$ +$LK,"CAOTHeapGlbl",A="FL:::/Kernel/KernelA.HPP,1950"$ +$LK,"ArcExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,165",BI=541$ +$LK,"FUf_MAP",A="FL:::/Kernel/KernelA.HPP,2538"$ +$LK,"DOCf_MORE",A="FL:::/Kernel/KernelA.HPP,1288"$ +$LK,"DOCF_MORE",A="FL:::/Kernel/KernelA.HPP,1253"$ $LK,"chars_bmp_non_eol_white_space",A="FL:::/Kernel/StrA.CPP.Z,359"$ -$LK,"CISO1PathEntry",A="FL:::/Kernel/KernelA.HPP,2380"$ -$LK,"REGG_SAVED",A="FL:::/Kernel/KernelA.HPP,1704"$ +$LK,"CISO1PathEntry",A="FL:::/Kernel/KernelA.HPP,2430"$ +$LK,"REGG_SAVED",A="FL:::/Kernel/KernelA.HPP,1754"$ $LK,"SF_ARG1",A="FL:::/Kernel/KernelA.HPP,553"$ $LK,"RLF_VGA",A="FL:::/Kernel/KernelA.HPP,453"$ -$LK,"COLOR_MONO",A="FL:::/Kernel/KernelA.HPP,2877"$ -$LK,"WIF_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1400"$ -$LK,"DOCET_INVERT",A="FL:::/Kernel/KernelA.HPP,937"$ +$LK,"COLOR_MONO",A="FL:::/Kernel/KernelA.HPP,2927"$ +$LK,"ACD_END_CHAR",A="FL:::/Kernel/KernelA.HPP,1489"$ +$LK,"WIF_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1403"$ +$LK,"DOCET_INVERT",A="FL:::/Kernel/KernelA.HPP,940"$ $LK,"SF_ARG2",A="FL:::/Kernel/KernelA.HPP,554"$ -$LK,"SC_SCROLL",A="FL:::/Kernel/KernelA.HPP,3466"$ -$LK,"DOCEt_INVERT",A="FL:::/Kernel/KernelA.HPP,943"$ -$LK,"ATTRf_INVERT",A="FL:::/Kernel/KernelA.HPP,885"$ -$LK,"ATTRF_INVERT",A="FL:::/Kernel/KernelA.HPP,880"$ +$LK,"SC_SCROLL",A="FL:::/Kernel/KernelA.HPP,3517"$ +$LK,"DOCEt_INVERT",A="FL:::/Kernel/KernelA.HPP,946"$ +$LK,"ATTRf_INVERT",A="FL:::/Kernel/KernelA.HPP,888"$ +$LK,"ATTRF_INVERT",A="FL:::/Kernel/KernelA.HPP,883"$ $LK,"SF_ARG3",A="FL:::/Kernel/KernelA.HPP,555"$ +$LK,"ACD_PRONUNCIATION_END",A="FL:::/Kernel/KernelA.HPP,1482"$ $LK,"SF_ARG4",A="FL:::/Kernel/KernelA.HPP,556"$ $LK,"SF_ARG5",A="FL:::/Kernel/KernelA.HPP,557"$ $LK,"ODEF_STARTED",A="FL:::/Kernel/KernelA.HPP,240"$ -$LK,"Print",A="FL:::/Kernel/StrPrint.CPP.Z,898",BI=539$ -$LK,"SFF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,3703"$ -$LK,"CAOTAbsAddr",A="FL:::/Kernel/KernelA.HPP,1887"$ +$LK,"Print",A="FL:::/Kernel/StrPrint.CPP.Z,898",BI=542$ +$LK,"SFF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,3753"$ +$LK,"CAOTAbsAddr",A="FL:::/Kernel/KernelA.HPP,1937"$ $LK,"SF_ARG6",A="FL:::/Kernel/KernelA.HPP,558"$ -$LK,"SC_ESC",A="FL:::/Kernel/KernelA.HPP,3457"$ +$LK,"SC_ESC",A="FL:::/Kernel/KernelA.HPP,3508"$ +$LK,"ACD_WORD_CHAR",A="FL:::/Kernel/KernelA.HPP,1490"$ $LK,"SF_ARG7",A="FL:::/Kernel/KernelA.HPP,559"$ -$LK,"FAT32DrvValidate",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,48",BI=540$ +$LK,"FAT32DrvValidate",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,48",BI=543$ $LK,"StrCmp",A="FL:::/Kernel/StrA.CPP.Z,309"$ -$LK,"MSG_RESIZE",A="FL:::/Kernel/KernelA.HPP,3138"$ -$LK,"DOF_INTERCEPT_TASK_END",A="FL:::/Kernel/KernelA.HPP,1195"$ +$LK,"MSG_RESIZE",A="FL:::/Kernel/KernelA.HPP,3189"$ +$LK,"DOF_INTERCEPT_TASK_END",A="FL:::/Kernel/KernelA.HPP,1198"$ $LK,"SF_ARG8",A="FL:::/Kernel/KernelA.HPP,560"$ -$LK,"ST_ERR_ST",A="FL:::/Kernel/KernelA.HPP,3421"$ -$LK,"BlkDevChk",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,121",BI=541$ -$LK,"MSG_IP_L_UP",A="FL:::/Kernel/KernelA.HPP,3130"$ -$LK,"CPCIDev",A="FL:::/Kernel/KernelA.HPP,2152"$ +$LK,"ST_ERR_ST",A="FL:::/Kernel/KernelA.HPP,3470"$ +$LK,"BlkDevChk",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,119",BI=544$ +$LK,"MSG_IP_L_UP",A="FL:::/Kernel/KernelA.HPP,3181"$ +$LK,"CPCIDev",A="FL:::/Kernel/KernelA.HPP,2202"$ $LK,"RepOutU8",A="FL:::/Kernel/KernelB.HPP,91"$ -$LK,"DOCEF_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,979"$ -$LK,"sys_macro_root",A="FL:::/Kernel/KGlbls.CPP.Z,3"$ -$LK,"VGAP_PALETTE_MASK",A="FL:::/Kernel/KernelA.HPP,3631"$ -$LK,"DOCEf_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,1054"$ -$LK,"NUM_SYS_SEMAS",A="FL:::/Kernel/KernelA.HPP,607"$ -$LK,"ATAPISync",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,501",BI=542$ +$LK,"DOCEF_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,982"$ +$LK,"sys_macro_root",A="FL:::/Kernel/KGlbls.CPP.Z,4"$ +$LK,"VGAP_PALETTE_MASK",A="FL:::/Kernel/KernelA.HPP,3682"$ +$LK,"DOCEf_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,1057"$ +$LK,"NUM_SYS_SEMAS",A="FL:::/Kernel/KernelA.HPP,609"$ +$LK,"ATAPISync",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,501",BI=545$ $LK,"TO_UPPER",A="FL:::/Kernel/StrA.CPP.Z,110"$ $LK,"RFLAGG_NORMAL",A="FL:::/Kernel/KernelA.HPP,325"$ -$LK,"KERNEL_MODULE_NAME",A="FL:::/Kernel/KernelA.HPP,708"$ -$LK,"SYS_SEMA_DSK_CACHE",A="FL:::/Kernel/KernelA.HPP,597"$ -$LK,"SleepUntil",A="FL:::/Kernel/KMisc.CPP.Z,147",BI=543$ -$LK,"Spawn",A="FL:::/Kernel/Task.CPP.Z,209",BI=544$ -$LK,"MSG_IP_R_D_UP",A="FL:::/Kernel/KernelA.HPP,3136"$ -$LK,"CRedSeaBoot",A="FL:::/Kernel/KernelA.HPP,2234"$ +$LK,"KERNEL_MODULE_NAME",A="FL:::/Kernel/KernelA.HPP,710"$ +$LK,"SYS_SEMA_DSK_CACHE",A="FL:::/Kernel/KernelA.HPP,598"$ +$LK,"SleepUntil",A="FL:::/Kernel/KMisc.CPP.Z,147",BI=546$ +$LK,"Spawn",A="FL:::/Kernel/KTask.CPP.Z,205",BI=547$ +$LK,"MSG_IP_R_D_UP",A="FL:::/Kernel/KernelA.HPP,3187"$ +$LK,"CRedSeaBoot",A="FL:::/Kernel/KernelA.HPP,2284"$ +$LK,"WIF_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1395"$ $LK,"SET_GS_BASE",A="FL:::/Kernel/KUtils.CPP.Z,434"$ $LK,"RFLAGf_VINT_PENDING",A="FL:::/Kernel/KernelA.HPP,321"$ -$LK,"DirEntryDel2",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,26",BI=545$ -$LK,"DefineLoad",A="FL:::/Kernel/KDefine.CPP.Z,1",BI=546$ -$LK,"ICF_NO_RIP",A="FL:::/Kernel/KernelA.HPP,1535"$ -$LK,"OPTf_OPT_TRACE",A="FL:::/Kernel/KernelA.HPP,1461"$ -$LK,"SUF_REM_CTRL_CHARS",A="FL:::/Kernel/KernelA.HPP,3689"$ -$LK,"SC_SHIFT",A="FL:::/Kernel/KernelA.HPP,3461"$ -$LK,"ATA_SET_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2175"$ -$LK,"StrOcc",A="FL:::/Kernel/StrA.CPP.Z,467",BI=547$ +$LK,"DirEntryDel2",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,26",BI=548$ +$LK,"DefineLoad",A="FL:::/Kernel/KDefine.CPP.Z,1",BI=549$ +$LK,"INT_FAULT_ERR_CODE_BITMAP",A="FL:::/Kernel/KInts.CPP.Z,86"$ +$LK,"ICF_NO_RIP",A="FL:::/Kernel/KernelA.HPP,1584"$ +$LK,"SUF_REM_CTRL_CHARS",A="FL:::/Kernel/KernelA.HPP,3739"$ +$LK,"SC_SHIFT",A="FL:::/Kernel/KernelA.HPP,3512"$ +$LK,"ATA_SET_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2225"$ +$LK,"StrOcc",A="FL:::/Kernel/StrA.CPP.Z,467",BI=550$ $LK,"StrCpy",A="FL:::/Kernel/StrA.CPP.Z,321"$ $LK,"StrMatch",A="FL:::/Kernel/StrA.CPP.Z,317"$ -$LK,"FlushMsgs",A="FL:::/Kernel/KbdMouse/Message.CPP.Z,89",BI=548$ -$LK,"CMT_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1605"$ -$LK,"RLF_MP",A="FL:::/Kernel/KernelA.HPP,461"$ -$LK,"SC_GUI",A="FL:::/Kernel/KernelA.HPP,3490"$ +$LK,"FlushMsgs",A="FL:::/Kernel/SerialDev/Message.CPP.Z,87",BI=551$ +$LK,"CMT_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1654"$ +$LK,"RLF_MP",A="FL:::/Kernel/KernelA.HPP,462"$ +$LK,"SC_GUI",A="FL:::/Kernel/KernelA.HPP,3541"$ $LK,"RLF_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,460"$ $LK,"StrLen",A="FL:::/Kernel/KernelB.HPP,60"$ -$LK,"ATA_READ_NATIVE_MAX",A="FL:::/Kernel/KernelA.HPP,2172"$ -$LK,"PUSH_C_REGS",A="FL:::/Kernel/KernelA.HPP,1679"$ -$LK,"IEF_REX_XOR_LIKE",A="FL:::/Kernel/KernelA.HPP,1649"$ +$LK,"ATA_READ_NATIVE_MAX",A="FL:::/Kernel/KernelA.HPP,2222"$ +$LK,"PUSH_C_REGS",A="FL:::/Kernel/KernelA.HPP,1729"$ +$LK,"IEF_REX_XOR_LIKE",A="FL:::/Kernel/KernelA.HPP,1698"$ +$LK,"WIf_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1421"$ $LK,"RLf_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,442"$ -$LK,"ISO1DateStruct2CDate",A="FL:::/Kernel/Dsk/FileSysISO.CPP.Z,74",BI=549$ +$LK,"ISO1DateStruct2CDate",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,74",BI=552$ $LK,"RLF_REGISTRY",A="FL:::/Kernel/KernelA.HPP,466"$ $LK,"RLf_REGISTRY",A="FL:::/Kernel/KernelA.HPP,448"$ -$LK,"SC_INS",A="FL:::/Kernel/KernelA.HPP,3475"$ -$LK,"TK_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2018"$ -$LK,"RT_NUM_IT",A="FL:::/Kernel/KernelA.HPP,1493"$ +$LK,"SC_INS",A="FL:::/Kernel/KernelA.HPP,3526"$ +$LK,"TK_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2068"$ +$LK,"RT_NUM_IT",A="FL:::/Kernel/KernelA.HPP,1542"$ $LK,"AbsI64",A="FL:::/Kernel/KernelB.HPP,96"$ -$LK,"SC_TAB",A="FL:::/Kernel/KernelA.HPP,3459"$ +$LK,"SC_TAB",A="FL:::/Kernel/KernelA.HPP,3510"$ $LK,"SPF_DECIMAL",A="FL:::/Kernel/StrPrint.CPP.Z,9"$ $LK,"IOAPICVER",A="FL:::/Kernel/KernelA.HPP,507"$ $LK,"LAPIC_LVT_TIMER",A="FL:::/Kernel/KernelA.HPP,492"$ $LK,"sys_mem_init_flag",A="FL:::/Kernel/KernelB.HPP,189"$ -$LK,"RWF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3496"$ -$LK,"DISPLAYf_CHILDREN_NOT_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3209"$ -$LK,"RedSeaFmt",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,98",BI=550$ +$LK,"RWF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3547"$ +$LK,"DISPLAYf_CHILDREN_NOT_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3257"$ +$LK,"RedSeaFmt",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,98",BI=553$ $LK,"sys_var_init_flag",A="FL:::/Kernel/KernelB.HPP,191"$ $LK,"IOAPIC_DATA",A="FL:::/Kernel/KernelA.HPP,504"$ -$LK,"SysGetStr2",A="FL:::/Kernel/KDbg.CPP.Z,344",BI=551$ -$LK,"fp_getstr2",A="FL:::/Kernel/KGlbls.CPP.Z,28"$ -$LK,"KDRawPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,93",BI=552$ -$LK,"DOCF_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1267"$ -$LK,"Dos2CDate",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,9",BI=553$ -$LK,"ATABlkSelect",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,1",BI=554$ +$LK,"SysGetStr2",A="FL:::/Kernel/KDbg.CPP.Z,344",BI=554$ +$LK,"fp_getstr2",A="FL:::/Kernel/KGlbls.CPP.Z,31"$ +$LK,"KDRawPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,86",BI=555$ +$LK,"DOCF_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1270"$ +$LK,"Dos2CDate",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,9",BI=556$ +$LK,"ATABlkSelect",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,1",BI=557$ $LK,"SYS_START_CR0",A="FL:::/Kernel/KernelA.HPP,303"$ -$LK,"QSortI64",A="FL:::/Kernel/QSort.CPP.Z,1",BI=555$ -$LK,"RawPrint",A="FL:::/Kernel/KDbg.CPP.Z,217",BI=556$ -$LK,"CTextGlbls",A="FL:::/Kernel/KernelA.HPP,3501"$ -$LK,"CDevGlbls",A="FL:::/Kernel/KernelA.HPP,2821"$ +$LK,"QSortI64",A="FL:::/Kernel/QSort.CPP.Z,1",BI=558$ +$LK,"RawPrint",A="FL:::/Kernel/KDbg.CPP.Z,217",BI=559$ +$LK,"CTextGlbls",A="FL:::/Kernel/KernelA.HPP,3552"$ +$LK,"CDevGlbls",A="FL:::/Kernel/KernelA.HPP,2871"$ $LK,"chars_bmp_zero_cr_nl_cursor",A="FL:::/Kernel/StrA.CPP.Z,362"$ -$LK,"AreYouSure",A="FL:::/Kernel/StrB.CPP.Z,109",BI=557$ +$LK,"AreYouSure",A="FL:::/Kernel/StrB.CPP.Z,109",BI=560$ $LK,"C:/Doc/D3.TXT.Z",A="FL:::/Kernel/KernelB.HPP,146"$ -$LK,"DOCf_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1301"$ -$LK,"DOCF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1265"$ +$LK,"DOCf_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1304"$ +$LK,"DOCF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1268"$ $LK,"_REP_IN_U16",A="FL:::/Kernel/KUtils.CPP.Z,264"$ $LK,"_REP_IN_U32",A="FL:::/Kernel/KUtils.CPP.Z,253"$ -$LK,"CH_FORM_FEED",A="FL:::/Kernel/KernelA.HPP,3415"$ -$LK,"ADAM_STK",A="FL:::/Kernel/KernelA.HPP,2786"$ +$LK,"CH_FORM_FEED",A="FL:::/Kernel/KernelA.HPP,3464"$ +$LK,"ADAM_STK",A="FL:::/Kernel/KernelA.HPP,2836"$ $LK,"MP_VECT_ADDR",A="FL:::/Kernel/KernelA.HPP,500"$ $LK,"I_WAKE",A="FL:::/Kernel/KernelA.HPP,293"$ -$LK,"Yield",A="FL:::/Kernel/Sched.CPP.Z,344"$ -$LK,"CKeyDevGlbls",A="FL:::/Kernel/KernelA.HPP,3721"$ -$LK,"MRT_DEV",A="FL:::/Kernel/KernelA.HPP,2770"$ -$LK,"CMBRPrt",A="FL:::/Kernel/KernelA.HPP,2213"$ -$LK,"StrNew",A="FL:::/Kernel/MemB.CPP.Z,431",BI=558$ -$LK,"HTT_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,677"$ -$LK,"HTt_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,647"$ -$LK,"REGG_C_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1703"$ -$LK,"WIF_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1397"$ -$LK,"HTT_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,689"$ -$LK,"HTt_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,659"$ +$LK,"Yield",A="FL:::/Kernel/Sched.CPP.Z,336"$ +$LK,"CKeyDevGlbls",A="FL:::/Kernel/KernelA.HPP,3771"$ +$LK,"MRT_DEV",A="FL:::/Kernel/KernelA.HPP,2820"$ +$LK,"CBlkDevGlbls",A="FL:::/Kernel/KernelA.HPP,2710"$ +$LK,"CMBRPrt",A="FL:::/Kernel/KernelA.HPP,2263"$ +$LK,"StrNew",A="FL:::/Kernel/MemB.CPP.Z,431",BI=561$ +$LK,"HTT_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,679"$ +$LK,"HTt_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,649"$ +$LK,"REGG_C_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1753"$ +$LK,"WIF_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1400"$ +$LK,"HTT_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,691"$ +$LK,"HTt_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,661"$ $LK,"Round",A="FL:::/Kernel/KernelB.HPP,140"$ -$LK,"TaskRstAwaitingMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,25",BI=559$ -$LK,"MSG_IP_L_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3131"$ -$LK,"ATAR0_STAT",A="FL:::/Kernel/KernelA.HPP,2195"$ -$LK,"DOC_COLOR_PMT",A="FL:::/Kernel/KernelA.HPP,1121"$ +$LK,"TaskRstAwaitingMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,25",BI=562$ +$LK,"MSG_IP_L_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3182"$ +$LK,"ATAR0_STAT",A="FL:::/Kernel/KernelA.HPP,2245"$ +$LK,"DOC_COLOR_PMT",A="FL:::/Kernel/KernelA.HPP,1124"$ $LK,"HPET_GEN_CONF",A="FL:::/Kernel/KernelA.HPP,528"$ -$LK,"MPHalt",A="FL:::/Kernel/MultiProc.CPP.Z,163",BI=560$ -$LK,"UnusedStk",A="FL:::/Kernel/KDbg.CPP.Z,46",BI=561$ -$LK,"DirEntryCompareName",A="FL:::/Kernel/Dsk/DskDirA.CPP.Z,62",BI=562$ +$LK,"MPHalt",A="FL:::/Kernel/MultiProc.CPP.Z,163",BI=563$ +$LK,"UnusedStk",A="FL:::/Kernel/KDbg.CPP.Z,46",BI=564$ +$LK,"DirEntryCompareName",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,62",BI=565$ $LK,"BFieldExtU32",A="FL:::/Kernel/KernelB.HPP,30"$ -$LK,"DOCf_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1303"$ -$LK,"ATAS_DF",A="FL:::/Kernel/KernelA.HPP,2184"$ -$LK,"ROPBF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2840"$ -$LK,"StrScan",A="FL:::/Kernel/StrScan.CPP.Z,212",BI=563$ +$LK,"DOCf_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1306"$ +$LK,"ATAS_DF",A="FL:::/Kernel/KernelA.HPP,2234"$ +$LK,"ROPBF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2890"$ +$LK,"StrScan",A="FL:::/Kernel/StrScan.CPP.Z,212",BI=566$ $LK,"CONSERVATIVE_16MEG_SIZE",A="FL:::/Kernel/MemA.CPP.Z,125"$ -$LK,"ICF_PREVIOUS_DELETED",A="FL:::/Kernel/KernelA.HPP,1537"$ -$LK,"ATARepFind",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,163",BI=564$ -$LK,"QSort2a",A="FL:::/Kernel/QSort.CPP.Z,32",BI=565$ -$LK,"num_lock_map",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,178"$ -$LK,"QSort2b",A="FL:::/Kernel/QSort.CPP.Z,55",BI=566$ -$LK,"KDF_HAS_DESCS",A="FL:::/Kernel/KernelA.HPP,3712"$ -$LK,"CBlkPool",A="FL:::/Kernel/KernelA.HPP,2795"$ -$LK,"SC_NUM",A="FL:::/Kernel/KernelA.HPP,3465"$ -$LK,"BootCdProbe",A="FL:::/Kernel/Dsk/DskATAId.CPP.Z,1",BI=567$ -$LK,"MSG_IP_R_UP",A="FL:::/Kernel/KernelA.HPP,3134"$ -$LK,"IEF_DONT_SWITCH_MODES",A="FL:::/Kernel/KernelA.HPP,1644"$ +$LK,"ICF_PREVIOUS_DELETED",A="FL:::/Kernel/KernelA.HPP,1586"$ +$LK,"ACD_DEF_FILENAME_Z",A="FL:::/Kernel/KernelA.HPP,1475"$ +$LK,"ATARepFind",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,163",BI=567$ +$LK,"QSort2a",A="FL:::/Kernel/QSort.CPP.Z,32",BI=568$ +$LK,"num_lock_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,176"$ +$LK,"QSort2b",A="FL:::/Kernel/QSort.CPP.Z,55",BI=569$ +$LK,"KDF_HAS_DESCS",A="FL:::/Kernel/KernelA.HPP,3762"$ +$LK,"CBlkPool",A="FL:::/Kernel/KernelA.HPP,2845"$ +$LK,"SC_NUM",A="FL:::/Kernel/KernelA.HPP,3516"$ +$LK,"MSG_IP_R_UP",A="FL:::/Kernel/KernelA.HPP,3185"$ +$LK,"IEF_DONT_SWITCH_MODES",A="FL:::/Kernel/KernelA.HPP,1693"$ $LK,"I_TIMER",A="FL:::/Kernel/KernelA.HPP,290"$ -$LK,"DOC_COLOR_TREE",A="FL:::/Kernel/KernelA.HPP,1120"$ -$LK,"DOCEf_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,1042"$ -$LK,"DOCEF_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,962"$ +$LK,"IRQ_TIMER",A="FL:::/Kernel/KInts.CPP.Z,12"$ +$LK,"DOC_COLOR_TREE",A="FL:::/Kernel/KernelA.HPP,1123"$ +$LK,"DOCEf_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,1045"$ +$LK,"DOCEF_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,965"$ $LK,"SYS_BOOT_BASE",A="FL:::/Kernel/KStart.CPP.Z,31"$ -$LK,"VGAP_CRTC_INDEX",A="FL:::/Kernel/KernelA.HPP,3635"$ -$LK,"BlkDevNextFree",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,90",BI=568$ -$LK,"SFF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,3704"$ -$LK,"CDIR_FILENAME_LEN",A="FL:::/Kernel/KernelA.HPP,2463"$ +$LK,"VGAP_CRTC_INDEX",A="FL:::/Kernel/KernelA.HPP,3686"$ +$LK,"BlkDevNextFree",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,88",BI=570$ +$LK,"SFF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,3754"$ +$LK,"CDIR_FILENAME_LEN",A="FL:::/Kernel/KernelA.HPP,2513"$ $LK,"CFifoI64",A="FL:::/Kernel/KernelA.HPP,174"$ -$LK,"PCIReadU32",A="FL:::/Kernel/PCIBIOS.CPP.Z,201",BI=569$ -$LK,"PCIReadU16",A="FL:::/Kernel/PCIBIOS.CPP.Z,182",BI=570$ -$LK,"YearStartDate",A="FL:::/Kernel/Date.CPP.Z,8",BI=571$ +$LK,"PCIReadU32",A="FL:::/Kernel/PCIBIOS.CPP.Z,201",BI=571$ +$LK,"PCIReadU16",A="FL:::/Kernel/PCIBIOS.CPP.Z,182",BI=572$ +$LK,"YearStartDate",A="FL:::/Kernel/KDate.CPP.Z,8",BI=573$ +$LK,"ACD_H1_END",A="FL:::/Kernel/KernelA.HPP,1478"$ $LK,"_REP_IN_U8",A="FL:::/Kernel/KUtils.CPP.Z,275"$ -$LK,"SHIFT_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,9"$ -$LK,"DOCF_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1255"$ -$LK,"REG_UNDEF",A="FL:::/Kernel/KernelA.HPP,1701"$ -$LK,"VGAFlush",A="FL:::/Kernel/Display.CPP.Z,94",BI=572$ -$LK,"FILEMASK_AOT",A="FL:::/Kernel/KernelA.HPP,2201"$ -$LK,"SysDbg",A="FL:::/Kernel/KMisc.CPP.Z,238",BI=573$ -$LK,"FramePtrAdd",A="FL:::/Kernel/KHashB.CPP.Z,225",BI=574$ -$LK,"DCF_SCREEN_BITMAP",A="FL:::/Kernel/KernelA.HPP,3539"$ -$LK,"FF_NEEDS_WRITE",A="FL:::/Kernel/KernelA.HPP,2686"$ -$LK,"WIF_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1399"$ -$LK,"DOCF_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1239"$ +$LK,"SHIFT_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,9"$ +$LK,"DOCF_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1258"$ +$LK,"REG_UNDEF",A="FL:::/Kernel/KernelA.HPP,1751"$ +$LK,"VGAFlush",A="FL:::/Kernel/Display.CPP.Z,88",BI=574$ +$LK,"FILEMASK_AOT",A="FL:::/Kernel/KernelA.HPP,2251"$ +$LK,"SysDbg",A="FL:::/Kernel/KMisc.CPP.Z,233",BI=575$ +$LK,"FramePtrAdd",A="FL:::/Kernel/KHashB.CPP.Z,225",BI=576$ +$LK,"DCF_SCREEN_BITMAP",A="FL:::/Kernel/KernelA.HPP,3590"$ +$LK,"FF_NEEDS_WRITE",A="FL:::/Kernel/KernelA.HPP,2736"$ +$LK,"WIF_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1402"$ +$LK,"DOCF_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1242"$ $LK,"LAPIC_APIC_ID",A="FL:::/Kernel/KernelA.HPP,473"$ -$LK,"MPrintTime",A="FL:::/Kernel/StrPrint.CPP.Z,54",BI=575$ -$LK,"CatPrint",A="FL:::/Kernel/StrPrint.CPP.Z,889",BI=576$ -$LK,"TK_CHAR_CONST",A="FL:::/Kernel/KernelA.HPP,1986"$ -$LK,"TASKf_AWAITING_MSG",A="FL:::/Kernel/KernelA.HPP,3195"$ -$LK,"ICF_A1_TO_INT",A="FL:::/Kernel/KernelA.HPP,1510"$ -$LK,"TY_RIP_DISP32_IMPORT",A="FL:::/Kernel/KernelA.HPP,1503"$ -$LK,"DOCf_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1274"$ -$LK,"EDF_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1225"$ -$LK,"CHashSrcSym",A="FL:::/Kernel/KernelA.HPP,716"$ -$LK,"HashPublic",A="FL:::/Kernel/KHashB.CPP.Z,170",BI=577$ -$LK,"HEAP_CTRL_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2807"$ -$LK,"EDf_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1231"$ -$LK,"CDocSettings",A="FL:::/Kernel/KernelA.HPP,1128"$ -$LK,"BlkDevInit",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,31",BI=578$ -$LK,"CTaskStk",A="FL:::/Kernel/KernelA.HPP,3213"$ -$LK,"CWinMgrTimingGlbls",A="FL:::/Kernel/KernelA.HPP,1428"$ -$LK,"FAT32_ENTRIES_PER_BLK",A="FL:::/Kernel/KernelA.HPP,2319"$ -$LK,"ATARBlks",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,442",BI=579$ -$LK,"GVF_ALIAS",A="FL:::/Kernel/KernelA.HPP,860"$ -$LK,"CTaskSettings",A="FL:::/Kernel/KernelA.HPP,3154"$ -$LK,"IEF_ENDING_ZERO",A="FL:::/Kernel/KernelA.HPP,1651"$ +$LK,"MPrintTime",A="FL:::/Kernel/StrPrint.CPP.Z,54",BI=577$ +$LK,"CatPrint",A="FL:::/Kernel/StrPrint.CPP.Z,889",BI=578$ +$LK,"TK_CHAR_CONST",A="FL:::/Kernel/KernelA.HPP,2036"$ +$LK,"TASKf_AWAITING_MSG",A="FL:::/Kernel/KernelA.HPP,3243"$ +$LK,"ICF_A1_TO_INT",A="FL:::/Kernel/KernelA.HPP,1559"$ +$LK,"TY_RIP_DISP32_IMPORT",A="FL:::/Kernel/KernelA.HPP,1552"$ +$LK,"DOCf_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1277"$ +$LK,"EDF_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1228"$ +$LK,"CHashSrcSym",A="FL:::/Kernel/KernelA.HPP,718"$ +$LK,"HashPublic",A="FL:::/Kernel/KHashB.CPP.Z,170",BI=579$ +$LK,"HEAP_CTRL_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2857"$ +$LK,"EDf_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1234"$ +$LK,"CDocSettings",A="FL:::/Kernel/KernelA.HPP,1131"$ +$LK,"BlkDevInit",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,31",BI=580$ +$LK,"CTaskStk",A="FL:::/Kernel/KernelA.HPP,3261"$ +$LK,"CWinMgrTimingGlbls",A="FL:::/Kernel/KernelA.HPP,1432"$ +$LK,"FAT32_ENTRIES_PER_BLK",A="FL:::/Kernel/KernelA.HPP,2369"$ +$LK,"ATARBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,442",BI=581$ +$LK,"GVF_ALIAS",A="FL:::/Kernel/KernelA.HPP,863"$ +$LK,"CTaskSettings",A="FL:::/Kernel/KernelA.HPP,3203"$ +$LK,"IEF_ENDING_ZERO",A="FL:::/Kernel/KernelA.HPP,1700"$ $LK,"PUT_CHARS",A="FL:::/Kernel/StrA.CPP.Z,51"$ $LK,"CMemE820",A="FL:::/Kernel/KernelA.HPP,356"$ -$LK,"ATAGetResult",A="FL:::/Kernel/Dsk/DskATA.CPP.Z,67",BI=580$ -$LK,"FILEMASK_GRA",A="FL:::/Kernel/KernelA.HPP,2204"$ -$LK,"ATAS_DRQ",A="FL:::/Kernel/KernelA.HPP,2183"$ -$LK,"DOCF_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1242"$ -$LK,"DrvEnable",A="FL:::/Kernel/Dsk/DskAddDev.CPP.Z,151",BI=581$ -$LK,"BlkDevLock",A="FL:::/Kernel/Dsk/DskBlkDev.CPP.Z,1",BI=582$ -$LK,"BDT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2543"$ -$LK,"DOCf_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1277"$ -$LK,"MRT_RAM",A="FL:::/Kernel/KernelA.HPP,2769"$ -$LK,"DVT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2599"$ -$LK,"ATAS_BSY",A="FL:::/Kernel/KernelA.HPP,2186"$ -$LK,"DOCf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1297"$ -$LK,"DOCF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1261"$ -$LK,"HTt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,661"$ -$LK,"ICF_R_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1523"$ -$LK,"DOCf_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1290"$ +$LK,"ATAGetResult",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,67",BI=582$ +$LK,"FILEMASK_GRA",A="FL:::/Kernel/KernelA.HPP,2254"$ +$LK,"ATAS_DRQ",A="FL:::/Kernel/KernelA.HPP,2233"$ +$LK,"DOCF_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1245"$ +$LK,"DrvEnable",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,151",BI=583$ +$LK,"BlkDevLock",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,1",BI=584$ +$LK,"BDT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2593"$ +$LK,"DOCf_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1280"$ +$LK,"MRT_RAM",A="FL:::/Kernel/KernelA.HPP,2819"$ +$LK,"DVT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2649"$ +$LK,"ATAS_BSY",A="FL:::/Kernel/KernelA.HPP,2236"$ +$LK,"DOCf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1300"$ +$LK,"DOCF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1264"$ +$LK,"HTt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,663"$ +$LK,"ICF_R_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1572"$ +$LK,"DOCf_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1293"$ $LK,"sys_mem_init_val",A="FL:::/Kernel/KernelB.HPP,190"$ -$LK,"SYS_SEMA_FORCE_WINMGR",A="FL:::/Kernel/KernelA.HPP,604"$ -$LK,"MPCrash",A="FL:::/Kernel/MultiProc.CPP.Z,399",BI=583$ -$LK,"ATAS_ERR",A="FL:::/Kernel/KernelA.HPP,2182"$ -$LK,"Struct2Date",A="FL:::/Kernel/Date.CPP.Z,14",BI=584$ -$LK,"ISO1T_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,2393"$ +$LK,"SYS_SEMA_FORCE_WINMGR",A="FL:::/Kernel/KernelA.HPP,605"$ +$LK,"ATAS_ERR",A="FL:::/Kernel/KernelA.HPP,2232"$ +$LK,"Struct2Date",A="FL:::/Kernel/KDate.CPP.Z,14",BI=585$ +$LK,"ISO1T_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,2443"$ $LK,"SF_RBP",A="FL:::/Kernel/KernelA.HPP,551"$ $LK,"SYS_MP_CNT",A="FL:::/Kernel/KStart.CPP.Z,224"$ -$LK,"CMF_U8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1613"$ -$LK,"CMF_I8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1612"$ -$LK,"EdLiteUpdate",A="FL:::/Kernel/EdLite.CPP.Z,7",BI=585$ +$LK,"CMF_U8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1662"$ +$LK,"CMF_I8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1661"$ +$LK,"EdLiteUpdate",A="FL:::/Kernel/EdLite.CPP.Z,7",BI=586$ $LK,"_ARC_ENTRY_GET",A="FL:::/Kernel/Compress.CPP.Z,43"$ -$LK,"DOCT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,933"$ +$LK,"DOCT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,936"$ $LK,"SYS_CTRL_ALT_FLAGS",A="FL:::/Kernel/KStart.CPP.Z,201"$ -$LK,"BOOT_RAM_BASE",A="FL:::/Kernel/KernelA.HPP,3781"$ -$LK,"MT_DVD",A="FL:::/Kernel/KernelA.HPP,2455"$ -$LK,"DOCEf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1030"$ -$LK,"DOCEF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1024"$ -$LK,"DOCEt_SELECTED",A="FL:::/Kernel/KernelA.HPP,944"$ -$LK,"DOCET_SELECTED",A="FL:::/Kernel/KernelA.HPP,938"$ -$LK,"ATTRF_SELECTED",A="FL:::/Kernel/KernelA.HPP,881"$ -$LK,"FramePtrDel",A="FL:::/Kernel/KHashB.CPP.Z,240",BI=586$ +$LK,"BOOT_RAM_BASE",A="FL:::/Kernel/KernelA.HPP,3832"$ +$LK,"MT_DVD",A="FL:::/Kernel/KernelA.HPP,2505"$ +$LK,"DOCEf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1033"$ +$LK,"DOCEF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1027"$ +$LK,"DOCEt_SELECTED",A="FL:::/Kernel/KernelA.HPP,947"$ +$LK,"DOCET_SELECTED",A="FL:::/Kernel/KernelA.HPP,941"$ +$LK,"ATTRF_SELECTED",A="FL:::/Kernel/KernelA.HPP,884"$ +$LK,"FramePtrDel",A="FL:::/Kernel/KHashB.CPP.Z,240",BI=587$ $LK,"chars_bmp_filename",A="FL:::/Kernel/StrA.CPP.Z,345"$ -$LK,"ICF_A2_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1525"$ -$LK,"ATTRf_SELECTED",A="FL:::/Kernel/KernelA.HPP,886"$ -$LK,"DVT_UNKNOWN",A="FL:::/Kernel/KernelA.HPP,2598"$ -$LK,"FILEMASK_JIT",A="FL:::/Kernel/KernelA.HPP,2200"$ -$LK,"ATAS_DRDY",A="FL:::/Kernel/KernelA.HPP,2185"$ -$LK,"ARGT_AL",A="FL:::/Kernel/KernelA.HPP,1830"$ -$LK,"CIntermediateCodeBase",A="FL:::/Kernel/KernelA.HPP,1559"$ +$LK,"ICF_A2_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1574"$ +$LK,"ATTRf_SELECTED",A="FL:::/Kernel/KernelA.HPP,889"$ +$LK,"DVT_UNKNOWN",A="FL:::/Kernel/KernelA.HPP,2648"$ +$LK,"FILEMASK_JIT",A="FL:::/Kernel/KernelA.HPP,2250"$ +$LK,"ATAS_DRDY",A="FL:::/Kernel/KernelA.HPP,2235"$ +$LK,"ARGT_AL",A="FL:::/Kernel/KernelA.HPP,1880"$ +$LK,"CIntermediateCodeBase",A="FL:::/Kernel/KernelA.HPP,1608"$ +$LK,"CAutoCompleteDictGlbls",A="FL:::/Kernel/KernelA.HPP,1497"$ $LK,"SYS_CODE_BP",A="FL:::/Kernel/KStart.CPP.Z,204"$ -$LK,"WClusters",A="FL:::/Kernel/Dsk/DskCluster.CPP.Z,129",BI=587$ +$LK,"WClusters",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,129",BI=588$ $LK,"LXchgI64",A="FL:::/Kernel/KernelB.HPP,259"$ -$LK,"MSG_KEY_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3141"$ -$LK,"TASKf_NONTIMER_RAND",A="FL:::/Kernel/KernelA.HPP,3200"$ -$LK,"ARGT_CL",A="FL:::/Kernel/KernelA.HPP,1835"$ -$LK,"ARGT_M8",A="FL:::/Kernel/KernelA.HPP,1815"$ -$LK,"ChkOnStk",A="FL:::/Kernel/KDbg.CPP.Z,31",BI=588$ -$LK,"TaskQueInsChild",A="FL:::/Kernel/Sched.CPP.Z,374",BI=589$ -$LK,"TK_AND_EQUAL",A="FL:::/Kernel/KernelA.HPP,2005"$ -$LK,"TK_F64",A="FL:::/Kernel/KernelA.HPP,1987"$ +$LK,"MSG_KEY_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3192"$ +$LK,"TASKf_NONTIMER_RAND",A="FL:::/Kernel/KernelA.HPP,3248"$ +$LK,"ARGT_CL",A="FL:::/Kernel/KernelA.HPP,1885"$ +$LK,"ARGT_M8",A="FL:::/Kernel/KernelA.HPP,1865"$ +$LK,"ChkOnStk",A="FL:::/Kernel/KDbg.CPP.Z,31",BI=589$ +$LK,"TaskQueInsChild",A="FL:::/Kernel/Sched.CPP.Z,366",BI=590$ +$LK,"TK_AND_EQUAL",A="FL:::/Kernel/KernelA.HPP,2055"$ +$LK,"TK_F64",A="FL:::/Kernel/KernelA.HPP,2037"$ $LK,"RLF_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,457"$ $LK,"RLf_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,439"$ $LK,"I_USER",A="FL:::/Kernel/KernelA.HPP,299"$ -$LK,"FAT32CDirFill",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,231",BI=590$ -$LK,"BlkPoolAdd",A="FL:::/Kernel/MemC.CPP.Z,1",BI=591$ -$LK,"sys_task_being_screen_updated",A="FL:::/Kernel/KGlbls.CPP.Z,10"$ -$LK,"TK_INTEGER",A="FL:::/Kernel/KernelA.HPP,1985"$ -$LK,"TK_NORMALSCRIPT",A="FL:::/Kernel/KernelA.HPP,1982"$ +$LK,"FAT32CDirFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,231",BI=591$ +$LK,"BlkPoolAdd",A="FL:::/Kernel/MemC.CPP.Z,1",BI=592$ +$LK,"sys_task_being_screen_updated",A="FL:::/Kernel/KGlbls.CPP.Z,11"$ +$LK,"TK_INTEGER",A="FL:::/Kernel/KernelA.HPP,2035"$ +$LK,"TK_NORMALSCRIPT",A="FL:::/Kernel/KernelA.HPP,2032"$ $LK,"SF_RIP",A="FL:::/Kernel/KernelA.HPP,552"$ $LK,"IOAPIC_REG",A="FL:::/Kernel/KernelA.HPP,503"$ $LK,"Complex",A="FL:::/Kernel/KernelA.HPP,114"$ $LK,"Trunc",A="FL:::/Kernel/KernelB.HPP,142"$ -$LK,"ROPB_EQU",A="FL:::/Kernel/KernelA.HPP,2833"$ -$LK,"HTf_IMM",A="FL:::/Kernel/KernelA.HPP,667"$ +$LK,"ROPB_EQU",A="FL:::/Kernel/KernelA.HPP,2883"$ +$LK,"HTf_IMM",A="FL:::/Kernel/KernelA.HPP,669"$ $LK,"sys_pci_services",A="FL:::/Kernel/PCIBIOS.CPP.Z,159"$ -$LK,"CStreamBlk",A="FL:::/Kernel/KernelA.HPP,1921"$ -$LK,"ARGT_M32",A="FL:::/Kernel/KernelA.HPP,1817"$ -$LK,"ARGT_M16",A="FL:::/Kernel/KernelA.HPP,1816"$ -$LK,"ARGT_CS",A="FL:::/Kernel/KernelA.HPP,1845"$ -$LK,"ICF_R_TO_F64",A="FL:::/Kernel/KernelA.HPP,1507"$ -$LK,"DOC_COLOR_QUOTE",A="FL:::/Kernel/KernelA.HPP,1126"$ -$LK,"DOCSS_DBL_QUOTE",A="FL:::/Kernel/KernelA.HPP,1108"$ +$LK,"CStreamBlk",A="FL:::/Kernel/KernelA.HPP,1971"$ +$LK,"ARGT_M32",A="FL:::/Kernel/KernelA.HPP,1867"$ +$LK,"ARGT_M16",A="FL:::/Kernel/KernelA.HPP,1866"$ +$LK,"ARGT_CS",A="FL:::/Kernel/KernelA.HPP,1895"$ +$LK,"ICF_R_TO_F64",A="FL:::/Kernel/KernelA.HPP,1556"$ +$LK,"DOC_COLOR_QUOTE",A="FL:::/Kernel/KernelA.HPP,1129"$ +$LK,"DOCSS_DBL_QUOTE",A="FL:::/Kernel/KernelA.HPP,1111"$ $LK,"SYS_PCI_SERVICES",A="FL:::/Kernel/PCIBIOS.CPP.Z,5"$ $LK,"_STRCMP",A="FL:::/Kernel/StrA.CPP.Z,86"$ -$LK,"ARGT_AX",A="FL:::/Kernel/KernelA.HPP,1831"$ +$LK,"ARGT_AX",A="FL:::/Kernel/KernelA.HPP,1881"$ $LK,"LAPIC_PROCESSOR_PRIORITY",A="FL:::/Kernel/KernelA.HPP,477"$ -$LK,"ARGT_DS",A="FL:::/Kernel/KernelA.HPP,1840"$ -$LK,"ARGT_R8",A="FL:::/Kernel/KernelA.HPP,1805"$ -$LK,"AStrNew",A="FL:::/Kernel/MemB.CPP.Z,446",BI=592$ -$LK,"ARGT_ES",A="FL:::/Kernel/KernelA.HPP,1841"$ -$LK,"ICF_A2_TO_F64",A="FL:::/Kernel/KernelA.HPP,1511"$ -$LK,"Cf_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,822"$ -$LK,"FAT32DrvInit",A="FL:::/Kernel/Dsk/FileSysFAT.CPP.Z,22",BI=593$ -$LK,"DOCT_ANCHOR",A="FL:::/Kernel/KernelA.HPP,915"$ -$LK,"KbdPktRead",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,371",BI=594$ -$LK,"KbdCmdRead",A="FL:::/Kernel/KbdMouse/Keyboard.CPP.Z,36",BI=595$ +$LK,"ARGT_DS",A="FL:::/Kernel/KernelA.HPP,1890"$ +$LK,"ARGT_R8",A="FL:::/Kernel/KernelA.HPP,1855"$ +$LK,"AStrNew",A="FL:::/Kernel/MemB.CPP.Z,446",BI=593$ +$LK,"ARGT_ES",A="FL:::/Kernel/KernelA.HPP,1891"$ +$LK,"ICF_A2_TO_F64",A="FL:::/Kernel/KernelA.HPP,1560"$ +$LK,"Cf_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,824"$ +$LK,"FAT32DrvInit",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,22",BI=594$ +$LK,"DOCT_ANCHOR",A="FL:::/Kernel/KernelA.HPP,918"$ +$LK,"KbdPktRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,384",BI=595$ +$LK,"KbdCmdRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,36",BI=596$ $LK,"D3DivEqu",A="FL:::/Kernel/KernelB.HPP,159"$ -$LK,"ARGT_FS",A="FL:::/Kernel/KernelA.HPP,1842"$ -$LK,"ARGT_DX",A="FL:::/Kernel/KernelA.HPP,1836"$ -$LK,"ARGT_M64",A="FL:::/Kernel/KernelA.HPP,1818"$ -$LK,"DOC_COLOR_KEYWORD2",A="FL:::/Kernel/KernelA.HPP,1124"$ +$LK,"ARGT_FS",A="FL:::/Kernel/KernelA.HPP,1892"$ +$LK,"ARGT_DX",A="FL:::/Kernel/KernelA.HPP,1886"$ +$LK,"ARGT_M64",A="FL:::/Kernel/KernelA.HPP,1868"$ +$LK,"DOC_COLOR_KEYWORD2",A="FL:::/Kernel/KernelA.HPP,1127"$ $LK,"CD2I32",A="FL:::/Kernel/KernelA.HPP,136"$ -$LK,"DrvLock",A="FL:::/Kernel/Dsk/DskDrv.CPP.Z,1",BI=596$ -$LK,"ARGT_GS",A="FL:::/Kernel/KernelA.HPP,1844"$ -$LK,"CICTreeLinks",A="FL:::/Kernel/KernelA.HPP,1552"$ -$LK,"DOC_COLOR_COMMENT",A="FL:::/Kernel/KernelA.HPP,1125"$ +$LK,"DrvLock",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,1",BI=597$ +$LK,"ARGT_GS",A="FL:::/Kernel/KernelA.HPP,1894"$ +$LK,"CICTreeLinks",A="FL:::/Kernel/KernelA.HPP,1601"$ +$LK,"DOC_COLOR_COMMENT",A="FL:::/Kernel/KernelA.HPP,1128"$ $LK,"SYS_MEM_E801",A="FL:::/Kernel/KStart.CPP.Z,32"$ -$LK,"ATA_NOP",A="FL:::/Kernel/KernelA.HPP,2169"$ -$LK,"SVCf_DONT_FILTER",A="FL:::/Kernel/KernelA.HPP,3080"$ +$LK,"ATA_NOP",A="FL:::/Kernel/KernelA.HPP,2219"$ +$LK,"SVCf_DONT_FILTER",A="FL:::/Kernel/KernelA.HPP,3131"$ $LK,"IET_REL_I0",A="FL:::/Kernel/KernelA.HPP,392"$ -$LK,"OC_ADDR_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1671"$ +$LK,"OC_ADDR_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1721"$ $LK,"SYS_MEM_E820",A="FL:::/Kernel/KStart.CPP.Z,33"$ -$LK,"SUF_SINGLE_SPACE",A="FL:::/Kernel/KernelA.HPP,3693"$ +$LK,"SUF_SINGLE_SPACE",A="FL:::/Kernel/KernelA.HPP,3743"$ $LK,"RFLAGG_START",A="FL:::/Kernel/KernelA.HPP,324"$ -$LK,"CKeyDevEntry",A="FL:::/Kernel/KernelA.HPP,3713"$ -$LK,"MSG_IP_R_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3145"$ -$LK,"MSG_IP_L_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3143"$ -$LK,"XTalkWait",A="FL:::/Kernel/SrvCmd.CPP.Z,468",BI=597$ -$LK,"MemPageTable",A="FL:::/Kernel/MemA.CPP.Z,173",BI=598$ -$LK,"CCF_KEEP_NUM_SIGN",A="FL:::/Kernel/KernelA.HPP,2047"$ -$LK,"ARGT_MM",A="FL:::/Kernel/KernelA.HPP,1849"$ +$LK,"CKeyDevEntry",A="FL:::/Kernel/KernelA.HPP,3763"$ +$LK,"MSG_IP_R_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3196"$ +$LK,"MSG_IP_L_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3194"$ +$LK,"XTalkWait",A="FL:::/Kernel/SrvCmd.CPP.Z,457",BI=598$ +$LK,"MemPageTable",A="FL:::/Kernel/MemA.CPP.Z,173",BI=599$ +$LK,"CCF_KEEP_NUM_SIGN",A="FL:::/Kernel/KernelA.HPP,2097"$ +$LK,"ARGT_MM",A="FL:::/Kernel/KernelA.HPP,1899"$ $LK,"chars_bmp_alpha_numeric_no_at",A="FL:::/Kernel/StrA.CPP.Z,335"$ $LK,"SysHlt",A="FL:::/Kernel/KernelB.HPP,265"$ -$LK,"FUF_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2516"$ +$LK,"FUF_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2566"$ $LK,"CD2I64",A="FL:::/Kernel/KernelA.HPP,140"$ $LK,"CD3I32",A="FL:::/Kernel/KernelA.HPP,126"$ $LK,"_STRCPY",A="FL:::/Kernel/StrA.CPP.Z,65"$ -$LK,"RedSeaDrvValidate",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,82",BI=599$ -$LK,"YELLOW",A="FL:::/Kernel/KernelA.HPP,2872"$ -$LK,"FUf_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2491"$ -$LK,"RedSeaFreeFreeLst",A="FL:::/Kernel/Dsk/FileSysRedSea.CPP.Z,3",BI=600$ -$LK,"IPVarsInit",A="FL:::/Kernel/KbdMouse/InputPointer.CPP.Z,70",BI=601$ -$LK,"ARGT_NO",A="FL:::/Kernel/KernelA.HPP,1790"$ +$LK,"RedSeaDrvValidate",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,82",BI=600$ +$LK,"YELLOW",A="FL:::/Kernel/KernelA.HPP,2922"$ +$LK,"FUf_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2541"$ +$LK,"RedSeaFreeFreeLst",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,3",BI=601$ +$LK,"IPVarsInit",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,68",BI=602$ +$LK,"ARGT_NO",A="FL:::/Kernel/KernelA.HPP,1840"$ $LK,"IET_REL_I8",A="FL:::/Kernel/KernelA.HPP,394"$ -$LK,"MouseGetDevType",A="FL:::/Kernel/KbdMouse/Mouse.CPP.Z,26",BI=602$ -$LK,"ARGT_R32",A="FL:::/Kernel/KernelA.HPP,1807"$ -$LK,"ARGT_R16",A="FL:::/Kernel/KernelA.HPP,1806"$ -$LK,"DOC_DFT",A="FL:::/Kernel/KernelA.HPP,1138"$ -$LK,"CMemberLstMeta",A="FL:::/Kernel/KernelA.HPP,780"$ -$LK,"DISPLAYf_WIN_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3208"$ -$LK,"CAOTImportExport",A="FL:::/Kernel/KernelA.HPP,1869"$ -$LK,"DOCEF_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1003"$ +$LK,"MouseGetDevType",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,26",BI=603$ +$LK,"ARGT_R32",A="FL:::/Kernel/KernelA.HPP,1857"$ +$LK,"ARGT_R16",A="FL:::/Kernel/KernelA.HPP,1856"$ +$LK,"DOC_DFT",A="FL:::/Kernel/KernelA.HPP,1141"$ +$LK,"CMemberLstMeta",A="FL:::/Kernel/KernelA.HPP,782"$ +$LK,"DISPLAYf_WIN_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3256"$ +$LK,"CAutoCompleteGlbls",A="FL:::/Kernel/KernelA.HPP,1460"$ +$LK,"CAOTImportExport",A="FL:::/Kernel/KernelA.HPP,1919"$ +$LK,"DOCEF_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1006"$ $LK,"CD3I64",A="FL:::/Kernel/KernelA.HPP,144"$ $LK,"c32_edi",A="FL:::/Kernel/PCIBIOS.CPP.Z,157"$ -$LK,"PURPLE",A="FL:::/Kernel/KernelA.HPP,2863"$ -$LK,"TASKf_BREAK_LOCKED",A="FL:::/Kernel/KernelA.HPP,3196"$ -$LK,"FILEMASK_SRC",A="FL:::/Kernel/KernelA.HPP,2202"$ -DUb  *6BP\chuvzp<T²x²xÌxÕxðxyy(y.y6yXyfyŠyšy y©yÃyÃyÑyYá•á•õ•ü• –––)–5–\–{–š–¦–·–»–Á–Ï–Ó–Ù–ç–ç–ç–—%—9—N—R—X—f—j—p—‚—‚—‚—‚—…—Š—�—•—¦—ª—°—»—¿—Å—ЗЗЗÕ—Û—ì—ð—ö—˜˜ ˜˜˜˜I˜,¥¬Ç9Ç9Ð9à9å9å9ê9d‚×â…â…æ…ó…ø…†† ††††2†S†`†z†‡†�†•†š†Ÿ†¨†­†²†ІІÕ†å†ë†õ†ú†‡‡1‡6‡;‡@‡i‡ЇЇš‡Ÿ‡··Õ‡à‡Þ‡î‡ú‡ˆˆ!ˆ-ˆ9ˆ[ˆ[ˆbˆiˆrˆsˆ|ˆ�ˆB‰<#««¾ÔéòùûûD�š“ “ ¡ ¯ ¾ Æ Ì Ø ë ë ô ˆ/M‘ˆ‘ˆ¡ˆ¬ˆ·ˆ¾ˆ¾ˆ݈éˆøˆ‰‰‰‰,‰2‰9‰9‰=‰=‰=‰=‰J‰M‰]‰ 0ÎֽнŠ×ŠïŠ‹‹‹‹ -Ì ;8383P3V3p3s33”3š3 3¦3Å3Ê3Ò3Ò3à3æ3ë3444'4+4:4@4C4E4T4X4g4m4p4r4‚4†4š4�4 4¢4±4´4À4 Ä¥ÒÀ0À0â0ì0ï0ÿ01!1'1*1-101l1o1r1t1‡1Š1�1•1›1 1 1¦1²1´1½1½1½1½1Ã1Æ1Ë1Î1Ö1è1 Tª»’b’b›b´bÐbíbíbc -c c9cVcVcWcWc\c ˆCaQ“Q“w“{“ƒ“‰“’“š“ “£“¯“¯“Ù“æ“ð“ó“ö“ý“” ”””.”4æï•‹•‹¯‹½‹Õ‹è‹ê‹ê‹ô‹<ðûQQ Q'Q'Q.Q4Q7QsGsKsNsNs^sdsvs{sƒsŠs–s³s¶s¸sÉsÐsÜsõstt ttt)t>D |w’™z™z¹zÉzÔzÙzÛzázóz{{&{6{8{8{8{>{W{t{„{†{†{�{›{ ¬(¦T¦TÀTÏTßTîTþTUU#U;U;UGUYUcUrUwUwUƒUƒU‰U‰UðUõUõUVV+V.V1V?VEVNVvV!XÁÓ;);)G)I)X)n)z)�)˜)š)±)±)³)¶)¼)"@8DÌ}Ì}Ú}Ü}þ} ~ ~~#|¹ù¹ùêùíùûùúúú+ú@úEúXú\úmú€ú‰ú™ú¡ú±úÀúÃúøú$4Þç+b+b?bQb`bqb„bŠb“b%,èï“b“b¡bÇb¯b×bÝbc& w{rMrM{MˆM�M'Hž¬¶ó¶óÑóÓóäóðóõóôôôô(Œ¬Ëöêöêëë#ë?ëRëRë]ëbëjë„ëŒëŸë©ë®ëºëÀëÇëÔë×ëàëãëæëëëì) tx®½®½Â½Ð½Ö½*Dr€r€Ž€�€£€¨€¸€Å€Ë€΀Ú€+pÃÛ–ô–ô¤ô²ôÈô×ôÜôìôîôôôýôõõ*õ:õIõIõPõPõPõDö,h#9•m•m«m­m¼mÐmÒmÛmÝmÝmàmüm£`£c£c£f£q£x££9@iu¥X¥XµX¾XÅXÌXÓXÔXÜX:<ðûD|D|X|f|q|‚|Š|’|š|�|¥|;0\dzRzR‚RŸR¯RÀRÑRÕR×R<0JRºQºQÂQßQïQRRRR=”§È¡Ó¡Ó¼ÓÆÓÐÓçÓýÓÔÔÔ0ÔOÔTÔ_ÔdÔ~Ô“Ô•Ô¯ÔÄÔÄÔËÔËÔËÔpÕ>$‡Œ[ [ d r ˆ � ?H!}}*}6};};}L}[}`}`}f}@LÞí)s)s7s:sFsPsVscswsws–s–s³s·s»sÁsA �”..2AEB\˜«NêNêbêpêuê{ê†ê�ê�êŸê«ê¯êÇêÎêÑêÓêöêC4•žFFJTd…šššžD0nv:S:SCS[SkS{SœS»S¾SE¸¢ÌFFNV_~…›¯¹ÅÐÐß!.6LW__n�°½ÅÛæøø   --.AF Ÿ£žž¢¯³G ¤¨¶¶º¿ÃHì<ñÕñÕùÕÖ%Ö9Ö=ÖLÖXÖfÖuÖ­Ö­ÖÜÖùÖ×××<×<×J×p×p×׎ע×Ç×Ë×Í×Í×Ù×Ù×Û×Û×ë×÷×÷×ûר ØØ"Ø0Ø?ØjØs؅؅؋ØÖÙI4”�"b"b,b.b5b;bMbNbSbJ|Xs¡Ú¡Ú¹ÚÃÚÊÚÖÚÙÚçÚêÚîÚðÚóÚöÚþÚÛ ÛÛ'Û=ÛCÛFÛHÛNÛZÛK,'.†Ý†Ý�ݒݚݴݹݿÝLP×çu_u_‡_Š_•_š_§_²_Á_×_á_ê_ó_ö_`M�¥Å%^%^?^J^O^X^k^ƒ^‹^“^ ^ª^±^¸^¼^À^Ë^Ñ^Ú^Þ^ç^í^ð^þ^__Nøé#IàIàcàjà~à�à¢àµàÂàÐàùàá!á(á*á-á3á7áHáRáXá[á^á`álá|á„áŠá—ášá�á«á¼áÌáØáÚáçáíáúáâââ%â-â-â5â<âCâCâQâiâO ©­ÆÆÊßãP„ *žËžË¸Ë»ËÎËÛË÷ËúËÌ ÌÌÌ*Ì=ÌAÌWÌZÌ`ÌmÌyÌ{Ì{̤̋̎ÌQˆ 9¶9¶A¶J¶Z¶i¶u¶—¶—¶—¶Ÿ¶¤¶¤¶ȶ×¶ø¶····&·&·8·?·?·Q·V·^·R,ÔÛÃ)Ã)Ç)à)ç)é)STCT¶¶Ûïö  3MP`T ®²ææêùýU äèää -ä!ä#äVHú±h±hÑhÞhãhïh iii"i+i,i8iWHëù)h)hIhVh[hgh�h‡h�hšh£h¤h°hX ³·þþYD°½!­!­4­>­B­V­b­d­p­w­}­—­¡­ZdNcãKãKëKïKïKþK L/L8LALYLkLtL{LžL§L®LºL¼L[°§ÏÖ-Ö-á-ñ-...+.8.Q.h.l.p.x.€.‰.§.¯.Æ.Ê.Î.Ò.Ú.â.ë. //%/6/=/=/N/W/\0&þ•þ•–––;–;–@–]8 p(p(Š(Ž(‘(œ(º(¾(Ã(Þ(^ ›Ÿw9w9€9‹9š9_D2?%b%b?bVbcbcbmb‡b‘b`0emÚRÚRâRÿRS S1S4S6Sa0S[RR"R?ROR`RqRvRxRbL_A_AmArAtAƒA…A“AžA¬A¬A­A³Ac0°¸)q)q=q|qƒq‰q–q©qµqd[ùúùúû ûû5ûDûMûdûtû‡û”û§ûÅûÎûÛûæûñûöûüüü(ü2üEüRüküzü�ü©ü´ü¼ü×üâü÷üý!ý*ý8ýDýSýgý‚ý�ý•ý²ý½ý½ýÂýÐýÛýâýíýòýùýe0wÂSÂSËSãSóST$TCTFTf$þ‹X‹X«X¸X¾XÊXg$+0¦Ì¦Ì¯ÌÀÌÒÌÍh<$/Y}Y}g}o}w}„}�}™}È}Ê}Ð}ièšÐkEkEEŽE§E§EÉEÞEéEðE FF'F5FCFQFqFgF}F�FšF¬F»FÂFÉFÐF×FßFïF÷FGGHGZGbGeGsGj@nzþ˜þ˜ ™™™$™(™,™/™=™D™I™kD)6uZuZ�ZšZ­Z¿ZÓZáZêZíZùZldÉÞ+W+W9W>WNWSWbWgWiWoW~WƒW…W”WŸW£W©WmD/<ÆÝÆÝÏÝäÝðÝûÝÞÞÞ%Þ*Þn<¿ÊS`S`i`|`�`–`°`·`Í`Ó`Ù`ao,û û ÿ ( C l z | p<bm¶˜¶˜Ã˜Ë˜Î˜Ü˜à˜ä˜ò˜ö˜û˜qt5ÞûÞûíû÷ûüü5üJüeülüyü†ü‘ü˜ü©ü©üºüÁüÈüÒüåüîürLš©ýˆýˆ‰ ‰'‰3‰<‰V‰a‰f‰o‰…‰”‰ž‰ž‰³‰s8¥Y¥Y»YÈYÚYîYüYZZt våvåzå“åuÔ0a‘ï‘ï™ï¡ï¯ïÂïÑïÛïçïòïðð ð<ðDðPðXð`ð`ðkðmð‚ðŽð ð´ðæð÷ðñ ñ<ñ>ñPñYñYñkñkñyñ€ñ’ñ’ñ ñ ñ¥ñ©ñv4µ¾Ó_Ó_ç_ù_ÿ_` `6`<`O`w0HPãCãCëCD DD5D=DxPZj=‡=‡O‡V‡_‡m‡r‡u‡{‡~‡ƒ‡Ž‡”‡ž‡yd­Âôô/ô2ô@ô@ôIôTôYô\ôlôwô}ô€ôƒô…ô‰ô•ôz\UhÒyÒyèyïyþyzzz$z/z7zKzTzZzezezƒz{H<JFçFçVç\çgçpçsç€ç‰ç‰ç�ç�ç˜ç|,U\fftˆ–°¶¼}4ÜåFöFöTöböjöuöŽö“öšö ö~¬LsB_B_T_c_i_}_�_§_º_Ñ_ä_û_`)`A`E`L`R`V`h`�`Ž`”`¬`°`·`½`Á`Ó`ì`ù`ÿ`a aDÆÆÎÖçö  5o�•¼ÅÎÎÓæëö  'XŽŸ¯ÅÙàGXhho�����¢¢°´¸€X¢´___._B_Q_j_q_s__˜_²_½_Ã_Ç_Ñ_�<q|&&:I]iƒ‰‹‹“‚<KV o oo o0o2oeolololoooƒ˜ù6÷6÷<÷:÷J÷×û„4ŠÓŽÃŽÃ¦Ã®Ã¼ÃÇÃËÃÑÃ×ÃåÃúÃÿÃÄÄ!Ä'Ä>ÄCÄIÄ`ÄeÄkÄyÄ}ęĬļÄÁÄÐÄÝÄíÄüÄ ÅÅ"Å)Å+Å>ÅUÅ\ÅjÅ|Å|Å�őŤŦŹŻÅÎÅÎÅêÅÆÆ ÆÆ<Æ…H–å–åŸåºåÃåÎåÐåÒåáåáåðåòåòå÷å†\ßò«W«W»WÉWÔWÖWÝWçWýWX -XXXXXX‡( !Ì!Ì,Ì@ÌQÌS̈D¾Ëãã%ã3ãBãNãUãdãpãpãvã‰d)À)À9ÀTÀTÀVÀVÀVÀ^ÀoÀxÀ‰À•À˜ÀšÀ�ÀŸÀŸÀŸÀ«ÀŠD1>SCSChCvCvC~C”C˜C˜CœC¤C‹81;ÍÍÍ3Í>Í>ÍIÍMÍMÍSÍŒ$A†‘‘™©¹ÉØáïý.;CWdx…™£·ÁÕßó #7^lz‡’�®ÃØèò%6iwŒ±ÈÑàû&-8BK[�0‰‘3N3N7NDN`NuNzN”NŽ02:†††$†6†>†A†I†�ÌJySS9SMSnS€SšS¡S®SºSÂSÍSÕSàSëSTT%T,T=T?TGTRT]TlTsTvTxT~T„TœT¥T¥TÀTÃTÞT�,ÑØ6ì6ìDìPìgìkìmì�ì‘8Kf8f8€8ƒ8‰8•8—8¦8­8³8Ú8á8 99929A9a9j9j9j9w9³9¿9Ë9Û9î9ü9 : :-:>:W:^:i:„:„:�:’:’:ž: : :¬:®:®:¾:Á:Á:Í:Ü:ø:; ;;,;:;:;:;N;j;q;x;~;�;Í;’Pñ::Zmy…›¡¬²·¹Ò“4#JPJPSPhPhPuPŠPŠP�P” ÌÐìì$ì-ì3ì•0¹Á¹q¹qÍq rrr1r4r@r–0HP&ñ&ñ4ñBñJñmñ†ñ®ñ—€222292A2G2a2a2o2q2q2�2ƒ2ƒ2‘2“2“2£2«2«2´2À2Ý2Ý2ï2ï2ó23˜@$0qÐqÐЄЇЙПТФЪЙHñÿy¯y¯ޝ˜¯›¯¤¯°¯¸¯Õ¯ä¯ê¯í¯ù¯š ó÷nänärä€ä‚ä›ä{°ÍpÍpëpôpq!q3q6q>qAqGqJqVqhquq{qˆq“q˜qžq°q°q¿qÂqÌqÏqÛqíqúqr rrr#r5r5r5r5r@r@rNrœ Øü³<³<Ò<Ô<å<ê<ø<='=1=<=T=[=]=]=o=u={=}=ƒ=‰=Œ=’=”=�=©=¯=¯=¯=¶=Ç=�TŒ�.ó.óRóUócócówó‡ó’ó˜ó£ó£ó£ó§óµóž`w‹–ò–ò³ò¹òÇòÇòÛòæòêòñòôòþòóóóóóó)óŸHîü¡¡¡¡È¡ã¡ñ¡ü¡¢¢¢¢¢¢¢,¢ D"/l}l}z}†}‹}‹}œ}¡}¡}§}¡p¨À((#(4(X(_(p(”(¢(«(¾(Å(Ï(Ý(ó( ) )!)7)7)7)9)¢X‘³9³9Ì9Ü9ô9: : ::$:$:0:<:>:>:F:£dîË2Õ2Ý2è2ï2ÿ2 3#3+3>3H3_3d3k3y3€3š3¢3¨3¤8w�љљיՙ噚 ššš’š¥8>HbQbQpQvQ}Q“Q“QšQ±Q±Q·Q¦<u€¡Š¡Š¹ŠÇŠΊÒŠÕŠÙŠàŠ‹‹§`¼Ðbcbcfcoc—c½cÈc×cæcëcñcóc¨@Š–#'#'1'8'?'I'P'R'd'i'v'©LiÏiτϞϞϫϫϸϸÏÈÏÌÏÌÏÜÏÞÏÞÏЪdEÚ¾¾Éßæ$1@Tl„—­¸Úõ5:ShˆŸ¯±ç> ]nu•ªÄÄëë -M[»ŒŠÚáæø%5R˜emXÁóûû 0 M W n v a Ê Ê Ê Ï Ï à û  ! : S n † œ ´  Í Í à ù  !"!!Ž!œ!¬!º!Ò!í!ø!"&"&"}"N"L"œ"ª"º"Õ"í"##O# ##n#n#w#€#•#•#¦#­#Â#Â#Ó#Ó#Ö#Ú#«4 -ÜvÜvêvïvòvøvûvývw¬,sz}p}p�p†p�p p pÌp­TóU`U`c`p`}`›`ž`¥`¬`º`¾`À`Ê`Ò`®Ô'Xk7k7‹7™7ž7¨7¨7®7º7º7¾7Å7Å7Ì7Ú7Ý7á7í7í7ù7ÿ7 88888 8%81818=8\8_8u8u8x8{8‹8¯tuŽêhêhòhþhi i-i;iZiti‰iŽi•išišiœi°4‚‹»-»-Å-Å-õ- .G.U.Y.±À6b)¾)¾4¾8¾\¾e¾t¾€¾�¾¯¾·¾Ͼß¾¿¿%¿'¿'¿K¿M¿M¿q¿s¿s¿¿¿‡¿‡¿“¿§¿·¿¿¿¿¿Ñ¿Ø¿Ø¿ê¿÷¿À&À²ÈÈöKKcm~~�••§¬¬¾ÃÃÕÚÚìññññøýý&++Brƒƒ•œ£¬»³ˆ -(ï;ï; <<<<&<1<5<@<I<Q<V<X<\<k<v<~<†<‡<‡<‘<´(Œ’[.[.d.k.‹.’.•.µü‚½ÙÛÙÛáÛåÛÜÜÜ,Ü@ÜLÜdÜwܘÜÎÜðÜÝÝÝÝ Ý7Ý?ÝJÝWÝ[Ý_ÝaÝtÝ{ݎݞݥݺÝÏÝÑÝÕÝÕÝÕÝáÝíÝíÝòÝûÝ ÞÞÞ&Þ,ÞAÞ¶€a}ŽÎŽÎ’ΡΡΰΰοοÎÎÎÝÎÝÎìÎÏûÎ -Ï -ÏÏÏ(ÏÓ·¬Þ�@�@©@Á@Ö@Þ@í@ó@ó@ö@ý@A AAA!A'A*A,A/A2A2A7AFAIA[A¸Ht‚aa&a3a6a:aHaQapa|a†aŠa�aŸa¹TÉÚ××××&×I×W×a×g×q×vׄ׊×�ד׺¼�È6Õ6ÕHÕNÕ\Õ\ÕyÕƒÕ›ÕŸÕ·Õ»ÕÕÕÕÕèÕñÕüÕÖÖÖ-Ö7ÖDÖMÖOÖUÖ^Öd։֌ִ֤ÖÅÖÉÖÍÖØÖØÖÜÖÜÖÜÖ×»4LwLwZw\wawdwgwlwrw¼(ðö c c!c=cOcUcpc½”"ulul�l®lºlÍlÓlälìlðlül mm m#m&m)m.m0m4m@mQm`mfmimlmomomym|mŽm¾„c€JJ1J5JBJGJKJ^JJ‰J‰JŸJ«J²JÅJÊJÎJáJK K K K K#K1K¿�cƒVÛVÛ_ÛmÛmÛ…Û›ÛªÛÃÛßÛîÛÜ#Ü)Ü7ÜEÜSÜaÜcÜyÜ�ܥܻܻÜÁÜÀÀ1Õ`Õ`é`ö`ü`aaa)a1a1a;aTabakava�a„a‹a�a˜a�aªa¯aÁaÈaîaña b b bbbb#bÁÜ�Ðéééé>éKéTé[éqé„é™é­é¹éÉéÜéééüéê#ê0ê;êFêFêSê]êlê�ê–ê®êÇêËêÍêÒê×êàêòêùêùê ëë8ëÂ@ ‹*‹*—*ž*¤*«*¿*Æ*È*Í*Ø*Ã,z�FàFàJà€à“à“à�àÄ,fmÝ~Ý~ë~ñ~ý~ ÅH ®ÄuÄuÍuÙuìu÷uvvv"v&v*v-vÆ`¯Ã4v4v=vGvcvev{v‘v¤vºvÔvØvǸ’¼K:K:i::™:¨:Ë:Õ:Ú:ÿ:;;;;!;,;1;?;D;F;U;Z;i;‚;‰;£;µ;Á;Å;Ñ;È`0{B{B’B¦BºBÅBÚBáBìBñBöBC!C'C'CACCCMCÉ öäöäåååÊ éí&ä&ä*äAäCäËŒ'FF–F–V–Z–c–{–‰–Ž–‘–Ÿ–¤–½–Å–ï–ó–———G—K—k—u—|—’—­—É—å—˜˜˜Ì°W^þ^þzþ�þ†þ þ²þ¼þÁþÔþßþõþÿþ ÿÿÿ!ÿ?ÿZÿOÿjÿ„ÿ¨ÿ®ÿµÿÉÿÒÿØÿßÿæÿíÿþÿ�Íøµï5’5’S’d’y’’†’†’”’£’ª’°’Â’Â’Õ’å’ì’û’““1“3“K“M“P“R“R“V“V“b“i“i“m“x“~“Š“’“´“ʓۓò“ù“ÿ“””ÎÜü/AíAíIíMíVídíkí�í•íŸí«í¶íÄíÓíóí î%î)îBîZîiîmîxî„î�îžî­îÐîÞîíîï#ï'ï4ïFïFïTï[ïmïmï{ï{ï|ï�ïÏ�6Vîüîüüüý ý+ý@ýPýeýzýƒýˆýˆý˜ý¤ýªý¶ýÍýðýþþ þþþþZþЀ55„5„U„a„m„q„u„„„˜„ „¦„º„ɄՄá„å„è„ê„ü„ -…………%…+…>…Ñ$).ºPºPÈPÏPãPéPÒ,Š‘V¾V¾l¾¾Š¾�¾“¾›¾Ó¨Êð~~~ ~7~B~R~d~h~v~~¡~§~§~³~¾~Ì~Ö~Þ~â~â~â~å~ç~ë~ë~ð~þ~  !!7Ô(QW®ñ®ñ·ñÁñÆñÌñÏñÕLêù.í.íJíVíqí|í‰í�í£í¯íÖ   åå"å0å2å×`)=ƒ4ƒ4‡4›4«4»4Î4Õ4ì4ü4 55.5?5`5�5˜5£5®5è5ØTsAsAwA�AŸA±A¶AÌAÓAåAøA B%B5B:B:BÝFÝNÝVÝ^ÝfÝnÝvÝ~݂݆Ýédavùyùy zz z%z2z;z?zEzKzSz[zcz‚z…z�z�z˜zê8ˆ’êMêMN NNN'N*N4Në(.4axaxjxxx‡x–x›xì0yjyj‡jŸjØjÞjàjàjæjíDŒ™uˆuˆ¡ˆ¯ˆºˆ¾ˆÂˆÆˆÊˆÖˆãˆæˆöˆî€Ñí9ë9ëDëLëUë`ëkërëˆëœë¥ë¹ëàëöëìì4ì?ìJìbìmìtìì„ì˜ìï< ë)ë)ó)*"*2*C*O*i*�*ƒ*…*ðLÈ×3<3<M<`<u<{<�<�<ž<ž<¡<¬<ñˆúMƒMƒcƒ‡ƒ™ƒ™ƒ«ƒ²ƒÈƒÈƒØƒÚƒÚƒÚƒëƒöƒýƒ„ „ „„„!„!„$„2„ò8îøÁsÁsÏsÚsåsttt(tó @r�r�|�ˆ�˜�¥�¶�Ä�Ù�î�õ�‚‚-‚5‚S‚g‚j‚r‚‚‚“‚º‚͂߂ƒƒ'ƒ3ƒ8ƒ@ƒTƒnƒ�ƒ£ƒ¯ƒ؃ôHÒÒìÿ€-€3€9€9€A€C€o€õ<„�-]-]>]@]E]N]o]x]}]…]ö8JTÆÍÆÍÔÍëÍöÍöÍÎ Î ÎÎ÷Dîû™ì™ì«ìµìËìåìðìðìííí>íøPAQÚƒÚƒÞƒïƒøƒ„„/„1„<„G„P„Y„j„}„}„„ù$ôù-ƒ-ƒ6ƒ?ƒEƒJƒú  ¤Ÿ9Ÿ9¨9³9Ä9ûDÌÙvãvã…ãŠã“ã¥ã¦ãºã½ãÃãü0*r»"»"Þ"à"é"ì"ñ"ñ"õ"#(#+#:#>#E#^#g#i#‚#‹#‹#‹#½#Ç#Ñ#Ø#ß#æ#ò#þ#$$$)$0$7$>$E$J$J$J$O$g$}$ˆ$�$Ÿ$¤$¬$¸$Â$Î$á$ô$%%+%M%o%o%o%o%o%{%„%‹% &ý “—:N:NCNPNUNþ@ÉÕqÕqÕÕ†Õ‹Õ¡Õ£Õ¬Õ¾ÕÄÕïÕÿ4þÜþÜÝÝÝÝ&Ý.Ý2Ý6Ý,ÖÜÖÜÞÜæÜîÜöÜúÜþÜx7vvŠ�™ ³ÌÌÛñú 3:<?AAMt -Ús¦¢¦¢Ç¢É¢à¢é¢ô¢ÿ¢££"£-£8£L£W£Z£`£d£g£m£q£t£w£Š£Ÿ£§£ª£Â£Ò£Õ£Û£Þ£ñ£¤¤¤)¤9¤>¤>¤F¤F¤i¤i¤i¤m¤o¤o¤s¤u¤u¤y¤{¤{¤¤¤¤‚¤„¤„¤‡¤Œ¤’¤•¤™¤›¤¡¤¤¤¼¤Ð¤Õ¤Û¤Þ¤ã¤ö¤¥¥)¥)¥)¥.¥.¥0¥0¥5¥8¥^¥^¥^¥v¥–¥›¥›¥³¥Ñ¥Ö¥Ö¥î¥ ¦¦¦&¦B¦D¦D¦\¦x¦x¦–¦¢¦§¦§¦¿¦Ö¦Û¦Û¦ó¦§§§§0§N§R§T§T§X§p§Ž§’§’§°§µ§µ§Í§ä§ë§ð§ð§¨ ¨&¨4¨D¨h¨o¨q¨q¨¨‡¨°¨²¨²¨Ê¨Ê¨ï¨©/©4©4©L©L©e©z©œ©�©´©Ó©ô©÷©ü©ü©ª(ª/ª4ª?ª?ªEªPªbªgªqª�ª�ª´ª¿ªÅªØªàªéªéªõªùªùª««««#«-«I«^«{«Š«�«¥«­«¹«Ã«Ã«Û«Ý«è«¬¬"¬"¬'¬'¬Z¬e¬n¬n¬z¬~¬~¬‡¬–¬Ÿ¬Ÿ¬¨¬®¬Ê¬Õ¬í¬ï¬ú¬­­0­0­0­@­a­c­c­{­�­”­”­¬­Ã­Í­Ò­è­è­ÿ­ÿ­ ®®®®-®6®6®?®J®b®d®€®‹®¦®¨®¨®±®É®Ô®ê®÷®ÿ® ¯"¯*¯D¯G¯P¯U¯v¯€¯€¯˜¯¢¯­¯É¯Ü¯ï¯÷¯°° -°°!°V°a°a°a°u°~°‚°•°Ê°Ê°Ì°Ì°ä°î°ö°ö°ÿ°±±K±Y±_±r±z±‡±Œ±Œ±•±™±¬±á±ï±ø±ý±ý±² ²$²;²E²J²`²x²x²¢²¬²¬²É²Í²à²è²ï²ú²ÿ²³³ ³>³R³l³³‰³“³“³£³É³Ù³ë³÷³û³´'´3´7´7´7´7´;´@´@´K´O´g´~´ˆ´�´£´»´»´å´ï´µµµµ!µ%µ=µTµ^µcµyµyµ‘µ‘µÃµÍµêµñµüµ¶&¶,¶F¶X¶`¶b¶x¶†¶£¶³¶³¶à¶â¶ ··&·1·;·E·L·f·o·o·˜·°·³·Î·Î·Î·Ó·Ø· ¸ ¸9¸L¸Q¸[¸e¸Ž¸¢¸¥¸¼¸¼¸¼¸¼¸Æ¸Ü¸ï¸ù¸þ¸þ¸¹*¹4¹D¹D¹]¹q¹t¹€¹Ž¹”¹§¹¯¹¸¹½¹½¹½¹Ö¹ê¹í¹ù¹ººº,º@ºJºZºZºsº‡ºŠº–º¤ºªº½ºÅºÎºÓºÓºÓºìº»»»%»*»*»*»B»V»\»l»l»Ž»™»§»­»À»È»Ñ»Ö»Ö»Ö»ø»¼¼¼¼3¼3¼3¼O¼O¼i¼p¼­½@þ -qtqt…t“t“t£tËtÖtÚtëtîtöt|�œ‹‹.‹0‹>‹>‹L‹_‹‡‹ª‹¸‹È‹ë‹Ó‹Œ%Œ:Œ?Œ?Œ?ŒQŒTŒ`Œ$uzI«I«R«`«l«l«q«¬;YÌYÌiỊ̶̫̲̀̓̾̕ÌÎÌÜÌëÌñÌùÌÍ Í ÍÍÍÍÍÎ4GP:v:vNvdvovtv‚v�v˜v©v8¾È¡­¡­°­Æ­Õ­ð­ô­ú­ü­ü­® @&2a¨a¨r¨‰¨—¨£¨·¨Ĩ˨ΨÖ¨ -x+EKKq…–�®µµËËÙáï÷÷=`m‹‹˜˜²Â D’Ÿ\u\uhuuŠu�u–uœu¯u¶u»uÁu xQkC -C -Z -d -q -Œ -§ -º -Ç -ò -   ( 5 ? M S _ f r §  $-2   = c @=IÙÙÙÙëÙöÙÚ ÚÚÚ#Ú+Ú3Ú9ÚX7‰^Á^Á|Á‚Á‰Á™Á Á¨Á®ÁµÁËÁÙÁÝÁâÁèÁöÁùÁþÁ Â!Â3Â5ÂBÂGÂNÂPÂ]Â_Â_ÂoÂ}€‚ŽÂ�°µ¼ÂÅÂËÂÑÂØÂÛÂÛÂëÂùÂûÂ#ÃEÃGÃNÃPÃ\Ã\ÃpÃtÃtÊÃD3@٨٨è¨ÿ¨ ©©©-©B©N©Z©\©b©@o{CMCMYM{M�M†M™M¦M¬M¯M·M0ÐÐ"Ð'Ð0Ð6Ð6Ð;Ð,;BQ~Q~`~l~z~ƒ~ˆ~Ž~8ˆ’öàöàáá8áEáGáNáVáXá^áä6~¿~¿œ¿Ÿ¿¢¿¶¿¾¿Å¿Ù¿Ü¿Þ¿ÀÀÀÀÀÀÀÀÀÀ5ÀJÀeÀoÀyÀ�À�À�ÀƒÀƒÀˆÀ§À­À¼ÀÉÀÝÀêÀìÀþÀ ÁÁÁÁÁ)Á,Á,ÁWÁô…¾–™–™¨™«™µ™Â™Æ™Ì™Ì™Ð™Õ™Ù™Ý™ä™ê™ñ™÷™þ™š šššš%š+š2š8šAšGšKšSš[š[šdšešvš‰š‹š›š¢š­š¸šÃšÎšÙšäšäšîšLWfuouo~oŽoŽo¬o²oÂoÈoÎoÞoàoàoàophÝóm‚m‚‚‚‘‚–‚¦‚®‚®‚¼‚Æ‚Õ‚Ý‚é‚ø‚ƒƒƒ ƒ#ƒ+ƒD<IVÍVÍj͔͆ͤͦͨͳͷͷͿÍPƒ“¢a¢a±aºaÄaÆaØaØaØaÚaáaçabbbb0™¡³^³^É^Ü^î^ô^÷^ÿ^<]hôsôsttt t+t0t4t:tTÃÔ¶¶ºÍàëÿ2Tm†Ÿ¸Ñê–PK[Á©Á©Ï©é©ó©ªªª!ª<ªHªcªiªiªiªiªoª X£µÙeÙeùef ff1f7fDfQfXfafefqf X†˜q»q»Œ»’»�»·»·»À»À»Å»Ö»ß»ê»ê»ö»¼!,š¡¿¿"¿4¿9¿J¿w¿"ä6]Œ]ŒwŒzŒ}ŒƒŒ—ŒžŒ¡Œ¼ŒÆŒËŒÒŒ×Œ×ŒèŒÚŒöŒ ��-�6�>�O�O�O�X�_�m�o�z�€�Ÿ�¯�·�É�Ò�ã�ë�ý�ŽŽŽŽ ŽOŽ#  HžFžF¾FÍFÙFäFïFGG!G-G°G°N°^°`°}°†°¤°†°°Ѱâ°è°÷°±±±.±?±I±²%L٣٣è£î£î£û£ ¤¤!¤'¤,¤2¤4¤4¤:¤&Œèrdrd d±dÃdÐdàdädèdìdðdødee'e1e6eMeSe[e^epe' GK__!_;_A_(Ü4F[F[d[n[w[•[•[—[ž[ž[¯[¶[Ã[Ö[ß[ë[î[ó[\*\*\<\>\>\P\R\R\^\^\o\€\†\‰\‰\Œ\‘\™\ª\±\·\È\Ë\ç\ç\ì\ì\ì\])ðW�!m!m5mWmgmgm{m…m‰m�mšm«m´m¸mÇmÝmãmêmùmümn~H~M~:0 "w"w0w:wNwTwVw\w;88BNNdwˆ–œ¤®¶<,~F~F‡F’F”F”F™F=\i|€KgU[U[e[l[[‹[²[¼[Æ[Î[Ö[Þ[ê[ü[\(\4\=\K\Q\W\Z\a\i\?dšïËNËN×NàNéNïNûNOOOO#O1OøIøIøVø`ø…ø—ø¶øÈøÈøèøôø)ùù:ù?ùQùUù]ù]ùkùvù„ù‹ù–ù¤ù¤ù©ùµùCLRa^˜^˜k˜s˜v˜„˜‡˜Ž˜’˜•˜™˜§˜®˜³˜D,’™›N›N¤N­NÀNÆNËNE8GQ˜˜#˜+˜.˜<˜@˜N˜R˜W˜F0NNW\koqvGX<N�Î�΋ΞαιÎêÎ\ÏeÏH(JP - - -! -3 -< -> -I˜'IRR-RNR`RgRtR€RˆR“RžR«RºRÁRÅRÅRËRÑRéRòRøRSSSS -SSJ8|†   , 9 9 @ O V V [ KÈ^Œ†D†D¬D¯D½DØDæDíDúDýDE EE6EUEURU^UmUqUuU}U‡U–UŸU¸U¸U¿UÅUÌUÙUäUóUùUûUýUV V!V*V*V1VLVOVaVV  Cù²ù²³³³!³*³9³E³N³c³Œ³˜³˜³Ÿ³¼³dzå³å³ ´´´´&´&´8´?´Y´Y´Y´k´r´r´„´Š´’´WD”¡žž°ºÐêõõBX¼B)‘)‘?‘G‘Q‘]‘k‘{‘£‘ƑՑ’’ ’’>’a’o’’Š’µ’Å’Ê’Ò’ý’“““%“/“=“=“G“Q“Y@r~c9c9k9Œ9�9£9¬9°9²9Z /s  ! % - N [ l u | ’ ¥ º Î Ú ò 9NYa†‹•§ÀÏÜñé $(-->>QcvŒŽŽ¡©©©»»ÄÖÝÝïõ[@1=±Ð±Ð¿ÐÄÐÇÐÙÐßÐâÐäÐêÐ\è“ÉB|B|\|t|€|�|¢|¦|©|²|µ|Æ|Æ|Æ|Í|Ú|Ý|â|ß|<}S}V}X}o}r}t}|}Œ}Œ}•}¤}²}Â}Ð}Ù}à}å}å}å}ë}ÿ}]D y�y���µ�Ø�å�ò�ý�‘!‘)‘^ 6å6å@åSåXå_4€‰††”�¤­`8ÓÝérér÷rýrs ssss$salªÁ????[?^?n?q?t?�?†?�?¥?«?´?¶?¹?É?btRkžSžSÃSÅSÞSüSTüSTT$TT>T@T@TPTRTRTbTbThT¦Tc0CBCBLB^BlBpBtBtByBd@¹§¹§ȧΧâ§ì§ô§ü§¨¨ ¨ ¨¨eØ =ùtùtuu)u;uRuRucu{uˆu›u§u²uÂuäuæuvvvv!vMvTv]vcvjvpvuv{vv†v‘v—vÁvfè[‘F<F<e<g<v<‚<Ž<£<¨<±<´<¹<Ã<Ã<Í<Ð<æ<þ<ú< ==/=H=Q=T=W=\=€=‚=ž=˜=Ê=Ê=Ú=ê=ñ=÷=ú=ÿ=>>>ë>g” *ƒ ƒ ¥ Ê ï "_œÙÛé÷ 9Vhx�¦¸ÈÝöý <Hh€]n@n@‚@„@”@¢@¬@Ð@ô@ü@AA&A7A²B²B²B²ݲà:.¢w¢w»wÃwÞwéwðwýw +xx+x>x[xfxtx„x�x�xšxžx¹x¾xÅxÍxßxâxðxÿxyyy(y7yOySyXyey‚y‘y˜yŸyŸy¦y®y»y½yÏy×yÙyãyêyêyêyñyùyz zz"z8zdzdzˆzˆz�z™z¯zÑzÖzÖzÝzåzûz{"{"{%{D{G{S{V{Y{w{w{|{|{„{‰{�{�{ {¹{¹{¾{¾{Ñ{Ø{â{ø{||||.|5|=|S|q|t|v|v|‘|”|´|Ï|Ø|á|å|ó|ù|ù|}}}}}}'}:}D}U}X}[}`}`}e}}}€}¦}ª}Å}Þ}ç}ð}ô}~~ ~~~ ~#~&~4~=~C~F~K~K~_~k~w~‡~Ÿ~Ä~Ñ~Õ~ë~ ##39KPX_kˆ‹�ž¥±Ê×Úáäæþ€€&€&€&€-€9€C€Q€Z€`€g€r€{€Š€™€¨€È€Ñ€;�4×à���"�:�E�G�G�O�@=I  # * 7 F U j ~ � – ¸ ¼ `…™)6@@S[npƒƒ‡‘––œ|w’ª“ª“ʓړå“ê“ì“ò“””&”7”G”I”I”I”O”h”…”•”—”—” ”¬” XÏá++++7+9+H+^+j+q+ˆ+Š+¡+¡+£+¦+¬+ @8D··ÅÇéöö€!|BBsv„��£´ÉÎáåö "*:IL�"4ÓÜKbKb_bqb€b‘b¤bªb³b#¬(/m/mImXmhmwm‡m›m¦m¬mÄmÄmÐmâmìmûmnn n nnnyn~n~n¦n¦n´n·nºnÈnÎn×nÿn$,Ýä³b³bÁbçbÏb÷býb$c% w{šNšN£N°NµN&Hž¬®õ®õÉõËõÜõèõíõùõùõýõö'Œ¬Ëîìîìííí7íJíJíUíZíbí|í„í—í¡í¦í²í¸í¿íÌíÏíØíÛíÞíãí +î( tx–¿–¿ª¿¸¿¾¿)D¿¿ÛÝðõ€€€€'€*pÃÛŽöŽöœöªöÀöÏöÔöäöæöìöõöýö÷"÷2÷A÷A÷H÷H÷H÷<ø+h#9àlàlölølmmm&m(m(m+mGm‡m”mžm®m¸mÃmÆmÔm,$glXoXo\olowo’o-œa„ÓÓéòÿ 1EG[[cx……’š©»Ã×éñ  .|hƒ•]•]Ÿ]¬]½]Ç]Î]Õ]Þ]æ]þ]^ ^^^%^,^4^:^E^I^K^K^O^/T �� �"�'�*�3�>�Q�[�_�b�b�h�k�y�0DS`}Y}Y‘Y¡Y¨Y¶Y½YÄYÅYÍY1 ùý:�:�>�d�~�2”9šûšû¢ûÆûÕûáûìûúû üü"ü0üDüwüyü}ü}üˆü“ü¢ü±üÔüßüäüöüýüýüýýý3Xæøžø¬øºøºøÒøØøáøéøôøþøùùùù$ù$ù%ù+ù4P·~·~Ë~Û~á~æ~æ~ô~ø~ý~ý~5 $(ºQºQÈQÜQâQ6Œ�¯¢ˆ¢ˆÁˆ½ˆЈàˆíˆñˆõˆ‰%‰1‰<‰H‰Q‰�‰˜‰·‰Ή܉ã‰ê‰ñ‰ŠŠ Š"Š8Š7Œù»»$»&»>»L»i»r» »£»¬»Ú»Ý»á»æ»ò»ù»¼¼ ¼'¼I¼L¼L¼O¼Z¼a¼h¼8@amÍYÍYÝYæYíYôYûYüYZ9<ðû/~/~C~Q~\~m~u~}~…~ˆ~�~:0\d¢S¢SªSÇS×SèSùSýSÿS;0JRâRâRêRSS(S9S>S@S<”§È*ì*ìEìOìYìpì†ì‹ì˜ì�ì¹ìØìÝìèìíìííí8íMíMíTíTíTíùí=$‡Œ*@E>H!!&&7FKKQ?LÞí:Œ:ŒHŒKŒWŒaŒgŒtŒˆŒˆŒ§Œ§ŒÄŒÈŒÌŒÒŒ@ ƒ‡FFJY]A\˜«FìFìZìhìmìsì~ì‡ì‡ì—ì£ì§ì¿ìÆìÉìËìîìB4ˆ‘^^bl|�²²²¶C0nvbTbTkTƒT“T£TÄTãTæTD¸¢ÌÏ*Ï*×*ß*è*++$+8+B+N+Y+Y+h+‰+ª+·+¿+Õ+à+è+è+÷+,9,F,N,d,o,�,�,�,–,¨,¨,¶,¶,·,Ê,E ’–¶¶ºÇËF —›ÎÎÒ×ÛGp\t*Ã*ÃDÃVÃpÃpÃwÃyÃyÇÉÉÕÕÞæíøÃÓÃðÃðÃðÃýÃHì<zîzî‚îŽî®îÂîÆîÕîáîïîþî6ï6ïeï‚ïŒï›ï™ïÅïÅïÓïùïùïðð+ðPðTðVðVðbðbðdðdðtð€ð€ð„ð‰ð’ð¤ð«ð¹ðÈðóðüðñññ_òI|Xs*ó*óBóLóSó_óbópósówóyó|óó‡óŠó’ó¦ó°óÆóÌóÏóÑó×óãóJ4”�ÒmÒmÜmÞmåmëmýmþmnK,'.žßžß¨ßªß²ßÌßÑß×ßLP×ç�`�`¯`²`½`Â`Ï`Ú`é`ÿ` aaaa(aM�¥ÅM_M_g_r_w_€_“_«_³_»_È_Ò_Ù_à_ä_è_ó_ù_`````&`(`6`Nøé#ÒøÒøìøóøù +ù+ù>ùKùYù‚ùžùªù±ù³ù¶ù¼ùÀùÑùÛùáùäùçùéùõùú úú ú#ú&ú4úEúUúaúcúpúvúƒú˜ú›úžú®ú¶ú¶ú¾úÅúÌúÌúÚúòúO œ ÞÞâ÷ûP„ *†Í†Í Í£Í¶ÍÃÍßÍâÍèÍñÍýÍÿÍÎ%Î)Î?ÎBÎHÎUÎaÎcÎcÎsÎvÎŒÎQˆ ÂÎÂÎÊÎÓÎãÎòÎþÎ Ï Ï Ï(Ï-Ï-ÏQÏ`Ï�ϙϡϣϣϯϯÏÁÏÈÏÈÏÚÏßÏçÏR,âé³+³+·+Ð+×+Ù+SL@O¦¦ÉÐÚÞâæððú T ¡¥þþU äèææ"æ9æ;æVHúÑhÑhñhþhii)i/i5iBiKiLiXiWHëùIhIhihvh{h‡h¡h§h­hºhÃhÄhÐhX ¦ª)-Y<°»ÚÅÚÅëÅõÅùÅÆÆÆÆ Æ(ÆZdJ_ÓLÓLÛLßLßLîLM M(M1MIM[MdMkMŽM—MžMªM¬M[°§Ï_F_FjFzF‹FšF¥F´FÁFÚFñFõFùFG GG0G8GOGSGWG[GcGkGtG’G¥G®G¿GÆGÆG×GàG\0&è—è—ñ—ñ—˜%˜%˜*˜]8 °(°(Ê(Î(Ñ(Ü(ú(þ())^ ›Ÿ·9·9À9Ë9Ú9_D2?McMcgc~c‹c‹c•c¯c¹c`0emTT +T'T7THTYT\T^Ta0S[BSBSJSgSwSˆS™SžS SbLŸAŸA­A²A´AÃAÅAÓAÞAìAìAíAóAc0°¸:Š:ŠNŠ�Š”ŠšŠ§ŠºŠÆŠd[‚‚Š•�¾ÍÖíý0NWdozŸ¤¤±»ÎÛô2=E`k€žª³ÁÍÜð ;FFKYdkv{‚e0wêTêTóT UU+ULUkUnUf$úÿ;Y;Y[YhYnYzYg$+0ŽÎŽÎ—ΨκÎöÎh<$/j–j–x–€–ˆ–•– –ª–Ù–Û–á–iè–Ì[F[FoF~F—F—F¹FÎFÙFàFüF GG%G3GAGaGWGmGGŠGœG«G²G¹GÀGÇGÏGßGçG÷GH8HJHRHUHcHj@nzèšèšõšýš›››››'›.›3›kD)6�[�[µ[Â[Õ[ç[û[ \\\!\ldÅÚÛWÛWéWîWþWXXXX X.X3X5XDXOXSXYXmD/<ÞßÞßçßüßààà*à5à=àBàn<´¿s`s`‰`œ`°`¶`Ð`×`í`ó`ù`/ao,³³·àû$24p<bm š š­šµš¸šÆšÊšÎšÜšàšåšqt5ÖýÖýåýïýýýþ-þBþ]þdþqþ~þ‰þ�þ¡þ¡þ²þ¹þÀþÊþÝþæþrLš©èŠèŠ‹ ‹‹‹'‹A‹L‹Q‹Z‹p‹‹‰‹‰‹ž‹s8ÍZÍZãZðZ[[$[-[7[t nçnçrç‹çuÔ0a"*8KZdp{‰˜©ÅÍÙáééôö  ) = o € � ¨ Å Ç Ù â â ô ô  + + + +) +) +. +2 +v4ª³ó_ó_`` `9`@`V`\`o`w0DLÓDÓDÛDñDüD E%E-ExPZj(‰(‰:‰A‰J‰X‰]‰`‰f‰i‰n‰y‰‰‰‰yd­Âöö'ö*ö8ö8öAöLöQöTödöoöuöxö{ö}ö�ö�öz\Re y y5yé>éNéTé_éhékéxé�é�é…éˆé�é|$PU'5;@}4Üå>ø>øLøZøbømø†ø‹ø’ø˜ø~¬Lsòjòjkkk-k@kWkjk�k”k«kÂkÙkñkõküklll1l>lDl\l`lglmlqlƒlœl©l¯l²l¼lDO/O/W/_/p//‰/•/•/™/¡/¥/¾/ø/ +00E0N0W0W0\0o0t00•0©0°0á01(181N1b1i1š1Ð1á1ñ1ñ1ø1 +2 +2222+2+292=2A2€P™©S_S_i_|_‹_¤_®_°_¼_Õ_à_æ_ê_ò_�0jr®®¼ËÖÜÞÞä‚<KVXnXnankn{n}n°n·n·n·nºnƒ˜ù.ù.ù4ù2ùBùÏý„4ŠÓvÅvŎŖŤůųŹſÅÍÅâÅçÅíÅÆ ÆÆ&Æ+Æ1ÆHÆMÆSÆaÆeÆ�ƔƤƩƸÆÅÆÕÆäÆñÆÇ +ÇÇÇ&Ç=ÇDÇRÇdÇdÇwÇynjǎǡǣǶǶÇÒÇéÇïÇõÇÈ$È…HŽçŽç—ç²ç»çÆçÈçÊçÙçÙçèçêçêçïç†\Ûî[X[XkXyX„X†X�X—X­X¸XºX¿XÁXÂXÂXÊX‡( ªäªäµäÉäÚäÜäˆD¾Ë.å.å=åKåZåfåmå|åˆåˆåŽå‰d²Ø²ØÂØÝØÝØߨߨߨçØøØÙÙÙ!Ù#Ù&Ù(Ù(Ù(Ù4ÙŠD-:CDCDXDfDfDnD„DˆDˆDŒD”D‹81;öÎöÎÏÏ&Ï&Ï1Ï5Ï5Ï;ÏŒ$A†"2BRajx†�—¢·ÄÌàí",@J^h|‰‰–¡¬Àçõ&7Laq{Œ�®¿ò:QZi„›¤¯¶ÁËÔä�0ˆ�3O3O7ODO`OuOzO”OŽ02:ð‡ð‡ˆˆ!ˆ)ˆ,ˆ4ˆ�¼JuTT7TXTjTqT~TŠT’T�T¥T°T»TßTîTõTüT UUU"U-U>%>*>8>Y>g>q>|>”>›>�>�>¯>µ>»>½>Ã>É>Ì>Ò>Ô>Ý>é>ï>ï>ï>ö>?�TŒ�&õ&õJõMõ[õ[õoõõŠõ�õ›õ›õ›õŸõ­õž`w‹ŽôŽô«ô±ô¿ô¿ôÓôÞôâôéôìôöôýô õõõõõ!õŸHêøŠºŠº±º̺Úºåºéºíºñºûº»»»» D"/WWeqvv‡ŒŒ’¡tµÎû)û)**8*?*P*t*‚*�*™*¬*³*½*Ë*á*÷*ù*+%+%+%+'+¢X{�3;3;L;\;t;€;Œ;Œ;ž;¤;¤;°;¼;¾;¾;Æ;£Xî»4Ä4Ë4Û4é4ÿ455$5;5@5G5U5\5d5i5¤8w�â²â²è²æ²ö²³³ ³ ³£³¥8>HŠRŠR˜RžR¥R»R»RÂRÙRÙRßR¦<u€²£²£Ê£Ø£ߣã£æ£ê£ñ£¤!¤§`¼Ðooo oGomoxo‡o–o›o¡o£o¨Lòçòç è'è'è4è4èAèAèQèUèUèeègègèžè©dEÚG2G2R2h2o2�2ž2­2º2É2Ý2õ2 3 363A3c3~3™3¾3Ã3Ü3ñ34(484:4p4Ç4˜4–4æ4÷4þ4535M5M5t5t5“5š5Ö5ä5D666c6j6o6�6‰6‰6®6¾6Û6!7î6ö6á6J7|7„7„7¤7¹7Ö7à7÷7ÿ7ê7S8S8S8X8X8i8„8’8ª8Ã8Ü8÷89%9=9K9V9V9i9‚9–9«9Å9É9Ç9:%:5:C:[:v:�:™:¯:¯:;×:Õ:%;3;C;^;v;Œ;Ž;Ø;©;§;÷;÷;< <<</<6<K<K<\<\<_<c<ª4 +ÇxÇxÕxÚxÝxãxæxèxîx«,szÈoÈoÌoÑoÛoëoëop¬Tó}a}a‹a˜a¥aÃaÆaÍaÔaâaæaèaòaúa­Ô%V9939A9F9P9P9W9e9h9o9o9v9„9‡9‹9—9—9£9©9¶9Ä9Æ9Æ9Æ9É9Î9Ú9Ú9æ9::::!:$:4:®tuŽštšt¢t®tÄtÏtÝtët +u$u9u>uEuJuJuLu¯4‚‹«/«/µ/µ/å/û/70E0I0°À6b²Ö²Ö½ÖÁÖåÖîÖýÖ ××8×@×X×h׊׊׮װװ×Ô×Ö×Ö×ú×ü×ü×ØØØØØ0Ø@ØHØHØZØaØaØsØ€ØŒØ¯Ø±ÈÆô££»ÅÖÖèííÿ-22DIIIIPUUgll~ƒƒšÊÛÛíôûv²ˆ +(/</<I<N<Z<Z<f<q<u<€<‰<‘<–<˜<œ<«<¶<¾<Æ<Ç<Ç<Ñ<³(Œ’K0K0T0[0{0‚0…0´ü‚½bôbôjônô�ô˜ôŸôµôÉôÕôíôõ!õWõyõŽõ—õ™õ¡õ©õÀõÈõÓõàõäõèõêõýõöö'ö.öCöXöZö^ö^ö^öjövövö{ö„ö–ö�ö�ö¯öµöÊöµ€a}vÐvÐzЉЉИИЧЧжÐÅÐÅÐÔÐèÐãÐòÐòÐÑÑÑgÕ¶¬ÞÏ@Ï@é@AAA-A3A3A6A=AHALAQAWAaAgAjAlAoArArAwA†A‰A›A·Ht‚ÂlÂlÖlãlælêlølm m,m6m:m=mOm¸TÉÚîØîØüØÙÙ1Ù?ÙIÙOÙYÙ^ÙlÙrÙuÙ{Ù¹¼�È××0×6×D×D×a×k׃ׇןף׽׽×Ð×Ù×ä×í×ú×ØØ Ø,Ø5Ø7Ø=ØFØLØqØt،؜حرصØÀØÀØÄØÄØÄØíغ47y7yEyGyLyOyRyWy]y»(åë+c+cAc]cocuc�c¼”"ÀkÀkÚkùklll/l7l;lGlXlelklnlqltlyl{ll‹lœl«l±l´l·lºlºlÄlÇlÙl½„c€—b—bºb¾bËbÐbÔbçbccc(c4c;cNcScWcjc‹c•c•c©c©c¬cºc¾�]}¾Ü¾ÜÇÜÕÜÕÜíÜÝÝ+ÝGÝVÝo݋ݑݟݭݻÝÉÝËÝáÝ÷Ý Þ#Þ#Þ$Þ)Þ¿À1ýaýabb$b,b9b;bQbYbYbcb|bŠb“bžb©b¬b³b¸bÀbÅbÒb×bébðbcc4c4c4c8c=c=cKcÀLŽ�ovov}v‰v”v¥v¹v½vËvàvòvûvww(wÁÜ�Кš¢¦ÇÔÝäú "6BRer…£¬¹ÄÏÏÜæõ + 7PTV[`i{‚‚”šÁÂ,z�^â^âbâ˜â«â«âµâÃ,fmȀȀր܀è€ó€÷€ý€ÄH¬º—w—w w¬w¿wÊwâwäwêwõwùwýwxÅd»Ðxxx(x3xOxQxgx}x�x¦xÀxÄxƬ޵Ë;Ë;ç;é;<<5<?<D<i<p<r<r<�<‹<–<›<ž<­<²<Á<Ú<á<á<ó<ÿ<= =ÇP,»C»CÐCäCïCD DDD"D3D9D;DCDÈ ÿîæîæøæ ççÉŒ'F0˜0˜@˜D˜M˜e˜s˜x˜{˜‰˜Ž˜§˜¯˜Ù˜Ý˜ý˜ÿ˜™1™5™U™_™f™|™—™³™Ï™ë™ò™ú™Ê°X€vv’™£¨»ÆÜæû +,JdZt޲¸¿ÓÛâéð÷  ƒËøµï ” ”>”O”d”j”q”q””Ž”•”›”­”­”À”Дהæ”ù”•••6•8•;•=•=•A•A•M•T•T•X•c•i•u•}•Ÿ•µ•ƕݕä•ê•í•–ÌÜü/ÊÊÒÖßíô +(4?M\|–®²Ëãòö '6YgvŸ¬°½ÏÏÝäööÍ”6Wæþæþôþÿ ÿ+ÿ<ÿPÿhÿ}ÿ’ÿ›ÿ ÿ ÿ°ÿ¼ÿÂÿÎÿåÿ!&,-r΀5 † †@†L†X†\†`†o†ƒ†‹†‘†¥†´†À†Ì†Ð†Ó†Õ†ç†õ†ù†‡‡‡‡)‡Ï$).âQâQðQ÷Q RRÐ,Š‘>À>ÀTÀgÀrÀxÀ{ÀƒÀѨÇíO}O}i}l}„}�}Ÿ}±}µ}Ã}Ì}î}ô}ô}~ ~~#~+~/~/~/~2~4~8~8~=~K~Y~g~l~n~n~„~Ò(QW¦ó¦ó¯ó¹ó¾óÄóÇóÓLêù&ï&ïBïNïiïtï�ï•ï›ï§ïÔ ççç(ç*çÕ`&:C6C6G6^6n6~6‘6˜6¯6¿6Ï6à6ñ67#7D7[7f7q7«7ÖT³B³B·BÐBßBñBöB CC%C8CKCeCuCzCzC|C×`Ÿh¸hºhÂhÞhçhúh ii!i8i>iJiZiZili¬iØH_ms:s:“:¡:§:»:Á:Æ:Î:Ñ:Ý:Ù$€…rUrU{U�U›U¦UÚÀnš��� �'�<�E�E�`�f�f�p�w�‚�‡�‘�¥�§�²�²�Á�É�Ô�Ø�Ý�á�ì�ò�õ�ø�ý�‚‚‚Û@/;B�B�`�l�y�„�����£�¦�©�»�Ü0 'úƒúƒ„ „Y„_„a„a„g„Ý�k‹�‰�‰¦‰©‰µ‰µ‰·‰Ä‰Ò‰×‰Ú‰å‰è‰í‰ŠŠ Š,Š6Š9Š;Š>Š@ŠCŠHŠMŠQŠ_ŠÞ<†‘ªUªU¸UÆUËUÑUÝUÝUãU÷UýUß8%ÊÀÊÀÔÀÜÀðÀÁ ÁÁÁÁà€¾ÚÊöÊöÕöÝöæöñöüö÷÷-÷6÷J÷q÷‡÷¡÷©÷Å÷Ð÷Û÷ó÷þ÷øøø*øáLN]r¢r¢{¢{¢Š¢™¢ª¢®¢»¢Ñ¢Õ¢Õ¢Ú¢â85?²‘²‘‘á‘í‘ñ‘õ‘ù‘’ ’ãœ$«7«7³7¹7Æ7Õ7ô7 8 88*858A8A8N8`8e8Œ8“8 8ª8¯8¯8¯8Ï8ï8 999äx‡¡êêþ   * - 1 : J M V Y k ‘ ™ ¢ ¢ ¨ Ô Ù ß ì å8cRcRsRvR{R~RŒR’R•R—RŸRæD&NßNßVß^ßfßnßvß~߆ߎߖߚߞßçdav +“ +““&“1“6“C“L“P“V“\“d“l“t“““–“¡“¡“©“èH~Œ.Þ.ÞIÞWÞhÞmÞyÞ—Þ�Þ©ÞÇÞÍÞÍÞÙÞé8ˆ’OO(O1O;OFOOORO\Oê(.4r‘r‘{‘‰‘˜‘§‘¬‘ë0ŠƒŠƒ˜ƒ°ƒéƒïƒñƒñƒ÷ƒìDŒ™`Š`ŠŒŠšŠ¥Š©Š­Š±ŠµŠÁŠÎŠÑŠáŠí€ÑíÂÂÍÕÞéôû%.Bi™¡½ÈÓëöý !î< Û+Û+ã+,,",3,?,Y,q,s,u,ïLÁÐs=s=�= =µ=»=Á=Ð=Þ=Þ=á=ì=ðˆú8…8…N…r…„…„…–…�…³…³…Ã…Å…Å…Å…Ö…á…è…ì…ô…ø…†† † †††ñ8îøÒŒÒŒàŒëŒöŒ�+�.�9�òB¿€¿€É€Õ€å€ò€�� �4�;�N�a�s�{�™�­�°�¸�È�Ù�‚‚%‚Z‚\‚m‚y‚~‚†‚š‚´‚Ö‚é‚õ‚ƒóHÿ   9Lez€††Ž�¼ô<„�U^U^f^h^m^v^—^ ^¥^­^õ8JT®Ï®Ï¼ÏÓÏÞÏÞÏéÏñÏñÏ÷ÏöDîû""4>TnyyŠšœÇ÷PCS ƒ ƒ#ƒ4ƒ=ƒHƒSƒtƒvƒ�ƒŒƒ•ƒžƒ¯ƒƒƒăø$ôù……!…*…0…5…ù  ¤ß9ß9è9ó9:úDÌÙŽåŽå�å¢å«å½å¾åÒåÕåÛåûd*;$;$c$e$n$q$v$v$z$™$­$°$Â$Ê$Ñ$ê$ó$õ$%%%%%R%\%f%p%z%�%�%™%£%£%£%Ä%Ä%Í%Ï%Ï%Ø%Ú%Ú%ã%å%å%ê%ì%ì%ñ%ñ%ñ%õ%&&&1&F&O&T&\&h&r&~&‘&¨&º&¾&É&ß&í&','J'J'J'J'J'T']'d'ä'ü “—bObOkOxO}Oý@ÉÕúíúíîîî*î,î5îGîMîxîþ4ßßß&ß.ß6ß>ßFßJßNßÿ,îÞîÞöÞþÞßßßßx7vvŠ�™ ³ÌÌÛñú 3:<?AAMt +Úsޤޤ¯¤±¤È¤Ñ¤Ü¤ç¤é¤ü¤ +¥¥ ¥4¥?¥B¥H¥L¥O¥U¥Y¥\¥_¥r¥‡¥�¥’¥ª¥º¥½¥Ã¥Æ¥Ù¥î¥ö¥ù¥¦!¦&¦&¦.¦.¦Q¦Q¦Q¦U¦W¦W¦[¦]¦]¦a¦c¦c¦g¦g¦g¦j¦l¦l¦o¦t¦z¦}¦�¦ƒ¦‰¦Œ¦¤¦¸¦½¦Ã¦Æ¦Ë¦Þ¦ù¦û¦§§§§§§§§ §F§F§F§^§~§ƒ§ƒ§›§¹§¾§¾§Ö§ô§ö§ö§¨*¨,¨,¨D¨`¨`¨~¨Š¨�¨�¨§¨¾¨Ã¨Ã¨Û¨÷¨ü¨ü¨©©6©:©<©<©@©X©v©z©z©˜©�©�©µ©Ì©Ó©Ø©Ø©ð©ªªª,ªPªWªYªYªgªoª˜ªšªšª²ª²ª×ªøª«««4«4«M«b«„«x«œ«»«Ü«ß«ä«ä«ü«¬¬¬'¬'¬-¬8¬J¬O¬Y¬i¬i¬œ¬§¬­¬À¬È¬Ñ¬Ñ¬Ý¬á¬á¬ê¬ù¬­­ ­­1­F­c­r­x­�­•­¡­«­«­Ã­Å­Ð­è­ê­ +® +®®®B®M®V®V®b®f®f®o®~®‡®‡®�®–®²®½®Õ®×®â®ú®ü®¯¯¯(¯I¯K¯K¯c¯w¯|¯|¯”¯«¯µ¯º¯Ð¯Ð¯ç¯ç¯ó¯÷¯ý¯°°°°'°2°J°L°h°s°Ž°�°�°™°±°¼°Ò°ß°ç°± +±±,±/±8±=±^±h±h±€±Š±•±±±Ä±×±ß±é±é±ò±ö± ²>²I²I²I²]²f²j²}²²²²²´²´²Ì²Ö²Þ²Þ²ç²ë²þ²3³A³G³Z³b³o³t³t³}³�³”³É³×³à³å³å³ð³ô³ ´#´-´2´H´`´`´Š´”´”´±´µ´È´Ð´×´â´ç´î´î´ó´&µ:µTµgµqµ{µ{µ‹µ±µÁµÓµßµãµýµ¶¶ ¶ ¶ ¶ ¶#¶(¶(¶3¶7¶O¶f¶p¶u¶‹¶£¶£¶Í¶×¶ù¶þ¶þ¶þ¶ · ·%·<·F·K·a·a·y·y·«·µ·Ò·Ù·ä·é·¸¸.¸@¸H¸J¸`¸n¸‹¸›¸›¸È¸Ê¸ô¸ö¸¹¹#¹-¹4¹N¹W¹W¹€¹˜¹›¹¶¹¶¹¶¹»¹À¹ó¹º!º4º9ºCºMºvºŠº�º¤º¤º¤º¤º®ºÄº×ºáºæºæºþº»»,»,»E»Y»\»h»v»|»�»—» »¥»¥»¥»¾»Ò»Õ»á»÷»ü»ü»¼(¼2¼B¼B¼[¼o¼r¼~¼Œ¼’¼¥¼­¼¶¼»¼»¼»¼Ô¼è¼ë¼÷¼ ½½½½*½>½D½T½T½v½�½�½•½¨½°½¹½¾½¾½¾½à½ë½¾¾¾¾¾¾7¾7¾Q¾X¾•¿@þ +‚�‚�–�¤�¤�´�Ü�ç�ë�ü�ÿ�Ž|�œ"¤"¤?¤A¤O¤O¤]¤p¤˜¤»¤ɤÙ¤ü¤ä¤¥6¥K¥P¥P¥P¥b¥e¥q¥$uzÄÄ ÄÄ%Ä%Ä*Ĭ;âäâäòäååå,å4å;å?åGåWåeåtåzå‚åŽå”å”å›åŸåŸå¡åç8¼Æ*Æ*Æ9ÆOÆ^ÆyÆ}ƃƅƅƋÆ@&2ÁÁ+ÁBÁPÁ\ÁpÁ}Á„Á‡Á�Á4GP‚‚&‚<‚G‚L‚Z‚g‚p‚�‚ p+C#4;LSSiiw�••¸Ûþ ))666D +Dž«/w/w;wRw]wcwiwow‚w‰wŽw”w xQkû û   ) D _ r  ª Æ Ë Ö à í ÷     * _  $-2à +à +Ç +õ +  xB­B­T­c­f­‡­§­·­Ü­ì­õ­#®0®@®F®V®V®h®k®p®p®€®†®‰®ì®@=IbòbòtòòŒò”òœò¤ò¬ò´ò¼òÂòX7‰FÃFÃdÃjÃqÃ�ÈÃ�ÖÃ�óÃÁÃÅÃÊÃÐÃÞÃáÃæÃéÃéÃùÃÄ ÄÄÄ*Ä/Ä6Ä8ÄEÄGÄGÄWÄeÄhÄjÄvÄxĘÄ�ĤĭijĹÄÀÄÃÄÃÄÓÄáÄãÄ Å-Å/Å6Å8ÅDÅDÅXÅ\Å\ÅrÅD3@’Á’Á¡Á¸ÁÆÁÒÁÒÁæÁûÁÂÂÂÂ@kw3N3NINkNqNvN‰N–NœNŸN§N0¢è¢è«è°è¹è¿è¿èÄè,;Bb—b—q—}—‹—”—™—Ÿ—8ˆ’ããã(ãPã]ã_ãfãnãpãvãä6fÁfÁ„Á‡ÁŠÁžÁ¦Á­ÁÁÁÄÁÆÁéÁéÁìÁüÁþÁþÁÂÂÂÂÂ2ÂMÂWÂaÂiÂiÂiÂkÂkÂpÂ�•¤±ÂÅÂÒÂÔÂæÂóÂøÂøÂÃÃÃÃÃ?Ãô…¾€›€›’›•›Ÿ›¬›°›¶›¶›º›¿›Ã›Ç›Î›Ô›Û›á›è›î›õ›û›œœœœœ"œ+œ1œ5œ=œEœEœNœOœ`œsœuœ…œŒœ—œ¢œ­œ¸œÃœÎœÎœØœLWfÀnÀnÉnÙnÙn÷nýn ooo)o+o+o+oRohÝóX„X„m„|„�„‘„™„™„§„±„À„ȄԄã„ï„ú„… ………D<I>Ï>ÏRÏnÏ|όώÏ�ϛϟϟϧÏPƒ“RmRmamjmtmvmˆmˆmˆmŠm‘m—m·mÅmÆmÌm0�˜___,_>_D_G_O_<Yduuu&u.u2u>uCuGuMuXÂÔFFJ]pƒŽ¢³Õ÷ - H c ~ ™ N +PK[zÂzˆ¢¬ÂÇÂÍÂÏÂÚÂõÂÃÃ"Ã"Ã"Ã"Ã(à X£µùeùef&f+f7fQfWfdfqfxf�f…f‘f X†˜úÓúÓÔÔ&Ô@Ô@ÔIÔIÔNÔ_ÔhÔsÔsÔÔŒÔ!,š¡öÀöÀ +ÁÁ!Á2Á_Á"ä6HŽHŽbŽeŽhŽnŽ‚Ž‰ŽŒŽ§Ž±Ž¶Ž½ŽÂŽÂŽÓŽÅŽáŽøŽ��!�)�:�:�:�C�J�X�Z�e�k�Š�š�¢�´�½�Î�Ö�è�ë�ë�ë�ë�÷�:�#  H'_'_G_V_b_m_x_Œ_Ÿ_ª_¶_Å_Ì_Ø_Ý_á_ý_ ` `$`6`J`X`m`s`—`Ÿ`Ÿ`«`¯`³`Ë`Ù`aß`aa8a\exOuOuquuu�u’užu§uÆuÒuÛuáuåuóu?€Kg}\}\�\”\§\³\Ú\ä\î\ö\þ\]]$]6]P]\]e]s]y]]‚]‰]‘]@d™îËOËO×OàOéOïOûOPPPP#P1PDLRaHšHšUš]š`šnšqšxš|ššƒš‘š˜š�šE,‘˜›O›O¤O­OÀOÆOËOF8GQšš ššš&š*š8š<šAšG0NNW\koqvHX<N +ç +çç'ç:çBçsçåçîçI(JPà à Ë Ù ë ô ö J˜'ISS-SNS`SgStS€SˆS“SžS«SºSÁSÅSÅSËSÑSéSòSøSTTTT +TTK8|†Ë Ë Ô ä ñ ñ ø LÄ^‹]]5]8]F]a]o]v]ƒ]†]Š]”]¡]¿]Å]¿]à]â]è]â]^^^^^^'^'^K^R^[^e^i^‚^„^©^²^¸^¿^_M<#ò•ò•––––(–2–a–c–i–N$CRCRLRUR[R`ROYò®ò®¯ ¯¯$¯$¯:¯F¯m¯Œ¯«¯·¯ȯ̯Ò¯à¯ä¯ê¯ø¯ø¯ø¯°6°J°_°c°i°w°{°�°“°“°“°“°–°›° °¦°·°»°Á°̰аÖ°á°á°á°æ°ì°ý°±±±±±%±%±%±Z±PDn{c c g w � � � ¤ © ® µ Ç Ç É Q¬Íôz§z§œ§¡§ª§ª§¶§ŧÒ§Ö§à§ò§ò§¨¨¨¨(¨3¨;¨@¨R¨R¨R¨Z¨h¨v¨€¨ƒ¨ˆ¨•¨¢¨¢¨´¨R�2RAAN>NDNGNlNuN{NˆN˜N¬N±NÀNÖNüNOOï> ???!?$?1?6???U?[?d?f?i?y?�${Y{Y•Y±Y�P¤´[)[)_)n)s))‹)—) )¬)³)¸)Å)Ü)î)ð)‘@ {,{,‡,Ž,”,›,¯,¶,¸,½,È,’X�¢²š²šÇšÑšÕšÕšýš ›+›I›Z›\›\›d›“,’™†À†ÀšÀ¬À±ÀÂÀÈÀïÀ”x£½äää$ä3äDäOäuäŠä�ä–ä�äªäÆäÆäÚäääìäõä ååå+å•8¶À==/=<=A=W=Z=o=–(¿Å؜؜àœêœýœ— ³×s2s2�2†2Ž2–2£2µ2¿2Ä2Ö2ë233-3?3F3F3\3i3i33Ž3Ž3•3œ3£3¨3°3˜8¢¬ò ò    1 G P V ™P:JØmØmðmümn nnnnn1n>nDnGnSnšøD~8Ÿ8ŸRŸbŸiŸqŸxŸ”Ÿ¯Ÿ¯ŸµŸ¾ŸÇŸÐŸÙŸÛŸäŸíŸïŸïŸøŸ       # # , 5 : : C L Q Q Q Z c h h t } ‚ ™ � � · ¹ ¹ Ç Ë =¡›,-t*r*r=rCrRr\rararmrtryrƒr—r¨r¼r¾rÙr s s6sAsascsnsxsƒs�s˜s¢s­s»sÂsÐsÐsÚsóst&t@tEtGtQtetltstut}t˜tœX�¯ +Å +ÅÅÅ'Å6ÅBÅKÅRÅ`ÅyŪŪżÅÃÅÃÅÕÅÖÅÚÅ�ÈÝ p2p2Œ2’2œ2Ÿ2Ÿ2¨2³2½2Ç2Ó2Õ2Û2â2å2è2ð2ü233 3333#3)32323:3C3I3R3R3R3R3X3`3c3s3ž,{‚*Ä*Ä3Ä?ÄEÄJÄOÄŸ8_inn|†�›£¥¥« „]z‹]‹]¥]­]»]»]Ç]Õ]Ø]ß]þ]þ]^^^^^ +^ +^ +^ ^^^^,^¡,Ûâ¿}¿}È}Ò}Ó}Ø}¢$(-B‘B‘P‘X‘j‘p‘£<@K +’ +’ ’*’.’3’?’D’H’L’V’¤ úþÆæÆæÊæëæíæ¥t.’ ’ ¢ ® · È ð ¡"¡/¡C¡:¡d¡x¡~¡€¡‚¡ˆ¡Š¡—¡š¡¢¡¦h^tÚ¢Ú¢ü¢£ £ ££#£0£[£f£n£p£‚£‚£‚£“£ £ £®£§HuƒÏ„τ؄݄ބí„õ„ú„…………… …¨<ðû––– –,–T–©€�¹r¥r¥�¥Ÿ¥§¥º¥Ì¥×¥â¥ø¥ü¥ ¦¦&¦&¦p¦u¦u¦—¦—¦®¦ΦÔ¦ö¦ª %k5k5{5…5Š5�5�5ž5£5¨5²5¼5Â5Ì5Î5Ï5Ï5Ø5â5ä5ó5õ56 666-646666666<6«€~šnÕnÕwÕzÕ‘Õ‘Õ¨Õ¼ÕÚÕÜÕôÕÖÖ#Ö:Ö:ÖQÖeÖƒÖ…Ö�Ö°Ö°Ö³Ö ×¬4<E5550525=5?5?5G5­XÑ@¡@¡\¡l¡s¡{¡‚¡ž¡¢¡Á¡Á¡ã¡ã¡ã¡ì¡î¡î¡÷¡ù¡ù¡¢¢¢ ¢¢¢¢¢¢#¢%¢%¢.¢0¢0¢9¢9¢<¢A¢A¢A¢D¢G¢G¢a¢q¢…¢•¢•¢—¢—¢ ¢£¢¨¢¨¢±¢±¢¶¢¶¢¿¢Ì¢Ñ¢Ñ¢Ú¢î¢ñ¢ö¢ö¢ÿ¢ÿ¢ ££ê£®`UiCBCBcBnBtBB�B’BŸB¥B¥B±B¯0;C›D›D¤D²D¸DÊDÌDÌDÑD°(|‚ºNºNÎNÙNâNåNíN± \€RÒRÒZÒcÒsÒ‚ÒŽÒ°Ò°ÒÅÒÍÒÒÒÒÒßÒõÒÓ ÓÓ#ÓPÓ\ÓoÓwÓ|Ó|ÓˆÓˆÓšÓ¡Ó¡Ó³Ó¸Ó¿Ó²°.VBÐBÐJÐSÐcÐrÐ~РРÐÍÐòÐ÷Ð÷Ð ÑÑÑÑ@ÑHÑPÑbÑ�ћѮѶѻÑÐÑÒÑÒÑÞÑÞÑðÑ÷Ñ÷Ñ ÒÒÒ³8LVwzwz‡zŠzŒz‘zšz�z¢zªz´ ~‚..2AEµ(£R£R¬R¶RÁRÉRÎR¶<(=[=[Q[c[j[n[q[|[Œ[�[—[·h«Á..Pgq‚˜¼ÓÓé ##66B¸X=OFàFàPàRàgàoà�à‘à�à�à±àºà¾àÂà¹PFVH5H5f5l5q5�5“5˜5¶5¸5Æ5Ì5Ï5Ý5ºl_vôô'ô*ô8ô8ôDôKôPôSôYô\ôdôiôiônôqôsôwô‡ô»Œ“²‹0‹0”0½0æ01Y1f1h1€1€1Ê1×1Ù1ñ1ñ12!2(2-272^2e2g2l2o2¼ˆ;Y8ˆ8ˆAˆKˆKˆ[ˆhˆqˆzˆƒˆŒˆ ˆ ˆ«ˆ±ˆ³ˆÂˆÊˆÙˆâˆëˆ‰‰ +‰‰ ‰%‰½4 ïxïxyyy%y(y.y6y¾Pƒ“RÄRÄaÄmÄoÄ}ēĢĮÄÉÄÏÄÒÄØÄ¿¨'Ò�Ò�ä�ï�ô����#�.�9�D�I�W�e�s�Œ�—�ž�²�Ñ�Ù�á�ì�î�ÿ� +‘‘ ‘*‘,‘5‘?‘À W[ÒÒ4ÒFÒPÒÁDt�êóêóþóôô!ô(ô8ôCôQôTô\ôÂ<)4�y�y¦y©y®y±yÄyÊyÍyÏyÙyôbË2 +2 += +^ +e t -‚ +� � -¥ -­ -· -Ú -ç -ò -   ) R W ] ƒ � “ – £ ® ¼ Í Ý å    + 0 D \ o ‚ ™ « ½ ½ é ÿ   k<5@ôwôw xx"x'x2xGxJxOx[xl0 ÒOÒOÖOêOêOþOPPm¼ -5A¼A¼L¼P¼t¼}¼Œ¼˜¼¤¼üÛ¼ë¼ ½ ½*½,½,½M½O½O½p½r½r½~½~½†½†½’½¦½¶½¾½¾½н×½×½é½ö½¾¾%¾n\Qdªvªvºv¼vÇvÌvßvèvívòvwwww woŒt“)1:EPWm�ŠžÅÛõý9DOgry„‰œpxŒ¦ÓÓ-Ó2Ó5ÓBÓHÓKÓSÓ\ÓkÓsÓsÓ~Ó~Ó†ÓˆÓˆÓ�Ó’ÓžÓq0 éiéi÷ijjj j&jr ^å^åbåpåråsL .Ú€Ú€ò€ô€þ€'�5�7�L�W�]�r�t0Á �:�:©:«:®:º:º:Æ:Ó:à:è:í:ó:õ:ù: ;;';2;7;7;>;>;I;I;h;v;�;ƒ;‰;‹;�;�;�;š;œ;¤;ª;¬;¬;¸;Â;Å;Å;Å;Å;È;Ó;Û;ß;í;ux83343Q3X3d3s3y3}3’3 3¦3¬3¯3¹3v¨5[]]2];]C]R]W]\]l]q]Œ]Œ]“]™]Ÿ]§]³]¹]»]»]Â]È]Î]Ö]â]è]ê]ê]ú]ü]ü] ^V^w M{I{I•I£I¼IÇIÚIçIùIJJ"J2J=JLJWJsJsJwJ‚JŽJ�J�J�J–J–J™J£J£J¾JÈJÈJÍJÝJðJöJÿJ KK&KJKWKWKiKiKiKKŒK£K¬K²KÂKÆKÆKËKËKâKx,07¬}¬}µ}¿}À}Å}yp\tqªqª‹ª�ª·ª·ª¾ªÀªÀªΪЪЪܪܪåªíªôªÿª«7«7«7«D«zpÉá ® ®®$®(®.®:®F®R®R®^®^®h®w®—®±®±®±®±®·®·®Ç®É®É®ò®{$‚‡žàžà¢à¯àäàðà|<7BUŽUŽiŽiŽ…Ž�Ž�ޤަޮŽ},*P*P.PBPFPFPJP~`bYY YY Y+Y1Y9YCYfYfYxY…Y™Y¦Y®Y¼Y÷YZ=ZBZBZTZaZuZ‚Z‡Z–ZËZÒZßZåZêZêZüZ [[*[/[>[r[y[†[Œ[Ž[Ž[–[–[£[¸[¾[Ñ[ø[\\\ \-\8\>\I\I\O\X\c\s\x\š\§\´\¹\¹\Õ\Ù\ò\, - -P -PP"P&P&P*P€\S¦æ)æ)ñ)ü) **5*D*U*^*u*�*�*°*À*È*ä*ù*+ +1+6+@+M+_+x+‡+‡+®+½+Ç+ä+ï+÷+,,2,;,U,d,p,y,‹,‘,¦,Á,Ì,Ô,ñ,ü,ü,----+-=-P-Y-Y-l-|-„-„-„-’-�-¤-¯-°-Ä-È-Ï-�DÛè¡ß¡ß³ß½ßÓßíßøßøß àààGà‚@|ˆ»M»M¿MÆMÆMãMN NN+N0N2N2Nƒl£ºY‚Y‚m‚y‚‡‚–‚–‚¾‚á‚ì‚ö‚ÿ‚ ƒƒ$ƒ@ƒFƒJƒRƒVƒ^ƒ„œDg™´™´¡´¥´±´Á´Ê´Ù´å´î´µµ-µVµbµmµ‹µ‹µ²µ´µ´µ´µ̵̵Þµåµÿµÿµÿµ¶¶¶*¶8¶…øQ&QDQ^QxQ|QŽQ—Q Q§Q°Q¹QÑQàQøQ RRR+RCRVR_RsRwR}R†RŒR—R™RœR¤R¹RÎRÑRÜRâRêRîRSS SSS)S/SASHSJSšS†<ØãÃ1Ã1ã1ó1ø12@2d2k2r2w2ƒ2‡lýY†Y†m†v†‡†¯†Ò†á†î†ù†‡)‡<‡<‡L‡L‡Y‡k‡u‡}‡ˆœ’µî>î>????5?F?O?d?i??{?‹?©?©?Á?Ã?Ã?Û?Ý?Ý?í?ï?ï?ÿ?ÿ?@@ @l@‰HLZÎ;Î;â;÷;<<<!<%<+<2<5<F<ŠØ÷)##6=[[yy—¬¸âèí/Li†£ÀÝú4Qn‹¨Åâÿ 9 V s � ­ Ê ä þ  2 J J J Y º"‹< -)j)j=jLj\j_jajijljtjŒ(øþ†ä†ä�äšäÄäÉä�l’©¯>¯>Ë>Î>Þ>á>ä>ñ>ö>ÿ>??$?&?)?9?Ž$ ËXËXåXY�P—§{'{''Ž'“'Ÿ'«'·'À'Ì'Ó'Ø'å'ü'((�X�¢¡�¡�¶�À�Ä�Ä�ì�‚‚8‚I‚K‚K‚S‚‘,’™ž¾ž¾²¾Ä¾É¾Ú¾à¾¿’x£½öáöáÿá ââ,â7â]ârâxâ~â…â’â®â®âÂâÌâÔâÝâõâþâþâã“8½ÇÓ;Ó;ï;ü;<<</<”(¿Åîšîšöš››• ³×ƒ0ƒ0‘0–0ž0¦0³0Å0Ï0Ô0æ0û01'1=1O1V1V1l1y1y1�1ž1ž1¥1¬1³1¸1À1–8¢¬iiw‡¨¾ÇÍ—P:J�n�n¥n±n¹nÀnÉnÏnÒnÒnænónùnüno˜øD~N�N�h�x��‡�Ž�ª�Å�Å�Ë�Ô�Ý�æ�ï�ñ�ú�žžžžž"ž"ž+ž4ž9ž9žBžKžPžPžYžbžgžgžgžpžyž~ž~žŠž“ž˜ž¯ž³ž³žÍžÏžÏžÝžážSŸ™,-tzfzf�f“f¢f¬f±f±f½fÄfÉfÓfçføf gg)gYgpg†g‘g±g³g¾gÈgÓgÝgègògýg hh h h*hChkhvh�h•h—h¡hµh¼hÃhÅhÍhèhšX�¯Q¬Q¬Y¬e¬n¬}¬‰¬’¬™¬§¬À¬ñ¬ñ¬­ -­ -­­­!­›ÈÝ 0202L2R2\2_2_2h2s2}2‡2“2•2›2¢2¥2¨2°2¼2Â2Ç2Í2Ð2Ò2Ý2ã2é2ò2ò2ú23 333333 3#333œ,{‚q«q«z«†«Œ«‘«–«�8fpææôþ#ž„c€ó\ó\]]]])]7]:]A]`]`]c]e]e]j]j]l]l]l]n]w]z]}]Œ]Ÿ,ÛâÔ{Ô{Ý{ç{è{í{ $(-1x1x?xGxYx_x¡<@Kùxùxyyy"y.y3y7y;yEy¢ ÿÎäÎäÒäóäõä£t.�‡�‡‘‡�‡¦‡·‡߇ˆˆˆ2ˆ)ˆSˆgˆmˆoˆqˆwˆyˆ†ˆ‰ˆ‘ˆ¤h^tɉɉë‰ñ‰ú‰ú‰ŠŠ ŠJŠUŠ]Š_ŠqŠqŠqŠ‚Š�Š�Š�Š¥Hs�Š…Š…“…˜…™…¨…°…µ…»…¿…Ã…Ó…Ø…Û…¦<ðû””2”!”A”i”§€�¹aŒaŒŒŽŒ–Œ©Œ»ŒÆŒÑŒçŒëŒûŒ ���_�d�d�†�†���½�Ã�å�¨8¸Â2IO`v•§§±© («3«3»3Å3Ê3Ï3Ï3Þ3ã3è3ò3ü34 44444"4$43454A4K4Y4^4m4t4v4v4v4|4ª€~š†Ó†Ó�Ó’Ó©Ó©ÓÀÓÔÓòÓôÓ Ô Ô*Ô;ÔRÔRÔiÔ}Ô›Ô�ÔµÔÈÔÈÔËÔ$Õ«4<EÀ4À4Ô4ð4ò4ý4ÿ4ÿ45¬XÑVŸVŸrŸ‚Ÿ‰Ÿ‘Ÿ˜Ÿ´Ÿ¸Ÿ×Ÿ×ŸùŸùŸùŸ          # % % . 0 0 9 ; ; D F F O O R W W W Z ] ] w ‡ › « « ­ ­ ¶ ¹ ¾ ¾ Ç Ç Ì Ì Õ â ç ç ð ¡¡ ¡ ¡¡¡#¡'¡¢­`UiAA#A.A4A?AAARA_AeAeAqA®0?G«C«C´CÂCÈCÚCÜCÜCáC¯(|‚’M’M¦M±MºM½MÅM° \€É¹ɹѹÚ¹ê¹ù¹º'º'º<ºDºIºIºVºlºxº€ºˆºšºǺÓºæºîºóºóºÿºÿº»»»*»/»6»±°.V¹·¹·Á·Ê·Ú·é·õ·¸¸D¸i¸n¸n¸ƒ¸‹¸�¸�¸·¸¿¸ǸÙ¸¹¹%¹-¹2¹G¹I¹I¹U¹U¹g¹n¹n¹€¹…¹‘¹²8LVŒxŒxœxŸx¡x¦x¯x²x·x¿x³ ‹�)-´(£Q£Q¬Q¶QÁQÉQÎQµ<(ZZ)Z;ZBZFZIZTZdZgZoZ¶ˆ1OvVvVŒV“VžV©VÂV×VÝVëVðV÷VWW WWW$W2W6W9W> >>>>>)>/>8>?>C>C>C>C>C>J>N>R>U>X>\>a>k>~>„>�>—>›>­>Ù0$,2f2f6f;fUfnfsfufÚ\7JýZýZ [[[$[-[0[7[:[B[I[I[Q[ÛH4B³³»ÏÓë*6DKXuyÜ\^/^/l/v/}/ƒ/Œ/š/¥/§/´/Ã/ã/ì/õ/û/0Ý<±¼UrUrirlrur…rŠržr¯rÞ|#rere¨eœe¸e¾eÍeÒeãeçeëeõeúe -ffff,fß° 1u…u…~…˜…˜…ž…ž…¤…¤…¤…¤…¤…¤…¤…¤…©…©…µ…»…»…Á…Æ…Ï…Ï…â…â…â…â…â…â…è…è…è…è…ê…ê…†à,„‹ôyôyýyz -zzzzáD -a·a·o·u·�·�·”·”·”·¡·¡·­·­···â4›¤5€5€>€L€`€h€n€p€p€u€ã /3êPêPøP QQäHâðù®ù®¯¯¯$¯0¯8¯U¯d¯j¯m¯y¯å$ÆÜÆÜÊÜÎÜÐÜæDÍÚœ{œ{ª{¶{»{»{È{Í{Í{Ó{çhC™µŽµŽÏŽÑŽêŽöŽúŽ�1�1�1�1�1�=�I�P�^�b�m�}�‡�Œ�Œ�•�¥�ª�ª�»�À�Ã�Ï�à�ð�ò�ò�ò����.�.�4�@�L�S�W�g�j�v�‡�˜�š�š�°�²�²�È�È�Î�Ú�æ�í�ñ�‘‘‘!‘3‘5‘5‘5‘:‘~‘èxš´…‘…‘�‘¬‘²‘µ‘Бë‘ë‘õ‘÷‘÷‘’’’’’’’’’’’ ’2’é UyþÞþÞßß%ßFßXßZßx߇߇ߜߞߴßÌßÓßÓßÔßÔßâßíßüßþß -àà%à-à@àêHŒšzz0z7zIzLzLzSzmzpzuzwzzë8óýXX;XFXTXLXgXxXxXxX„Xì@ƒ�ñ€ñ€ÿ€'�J�W�d�o�‘�™�Ÿ�í(=Cæœæœóœ�4�H�î ßãÞãÞãèãûãäï`Óçúcúcdddd d'd*d>dDdIdWd^dldldldldndndð$§¬äzäzízõzûz{ñ0”œ!¬!¬0¬9¬C¬G¬G¬M¬òdµ -.M.MPMTM\MmMmMƒM‹M›M›M§M¶M»MÔM×MÜMáMñMüMNN NN-N4N>NDNGNUN[NkN‚N„N‡N‡N‰N£N¯NµN¾NÊNëNïNûNO OOO O6O6O6O;OGO_OcOnOqOtOzO}O‹O¡O¡O¡O©OµOÍOÑOÜOßOæO÷O÷OþOPó4 (twtw‚w„w‰w’w•wšw wôäJ00%0+070E0H0]0g0t0Ÿ0¢0¦0±0º0Þ0æ0 11+171C1C1W1Z1j1w1€1�1’1¥1¯1¿1È1Ø1ß1ß1ß1æ1í1ò1ø1ú12õ$R—CDCDKDXDgDlD€D•D®DÇDÏDîDEEcEeEiEö€]–×–×°×Ä×Ñ×××à×è×ñ×ù×ØØØ Ø:Ø?Ø?ØGØPØjØoØoØuØ|Ø|ؚؒءبدغØÁØ×ØçØéØýØ Ù5ÙBÙ…ÙmÙžÙÏÙÝÙçÙþÙÚÚ -ÚÚÚSÚDÚ?ÚdÚ_ÚzÚ�ÚžÚ¨Ú¨Ú½ÚÄÚÎÚãÚìÚÛÛÛÛÛÛ2ÛDÛ÷@ãïô{ô{||&|3|3|7|=|ø0W_ÄxÄxÒxáxèxøxüxÿxyù, à(à(ò(ý( )!)*)úl�˜“]“]±]Å]ê]ï]þ]^ ^$^$^1^@^H^T^e^m^y^“^—^—^­^û4W` 5 5¶5¸5Â5Ï5Ø5Ý5ç5ütIb6I6IDIMIRIkIoItI‹I™I™I¸IÔIÚIèIèIôIýIJJ Jý<µÀ/:/:F:P:X:g:u:{:~:ˆ:þ,›¢¶á¶á¿áÉáìáìáñáÿ”\}ùýùýþþ)þ6þEþOþhþuþ‡þ–þ¥þ·þ¼þÉþÔþßþêþùþÿÿ-ÿ6ÿDÿKÿKÿYÿbÿX®®ÂÌÓâûû '<>ACCCKP­½{{{){/{4{4{>{B{G{G{O{H­»ÑÑéì -4BNXky€Œ,þ»c»cÕcècócùcd8<Fêuêuþuv v)v,v4v<›¦„z„z˜z¦z±z¼zÄzÌzÔz×zßzŒ­ 1Å1ÅOÅOÅVÅTÅdÅƒÅŠÅ¢Å Å°Å¿ÅÆÅÉÅÙÅíÅíÅòÅÆÆ(Æ>ÆZÆ{ƗƳƷƼÆÔÆÖÆæÆúÆÇÇ Ç/Ç=ÇDÇPÇVÇfÇzNJǞǞÇËÇÚÇÞÇäÇÈÈ.È.È:ÈNÈbÈhÈsȃÈ�ȗȬÈÅÈÈÈÈÈÜÈìÈìÈþÈþÈÉ Ì<juééý€€€&€2€8€>€È(VYkYkqk}k k¢k¢k¯k¹k¿kÐkÒk×k×käkëkþkll l l!l#l*l=l?lAlHl[l]l_lflyl{l}l‚l‚l‚l‚l‡l‡lŽl”l—lm 8OYé¥é¥ó¥û¥ ¦!¦)¦,¦.¦2¦ -PÂÒArArUr^rwrˆr­r°rÇrÑrÞrÞràrèr H¾ÌT{T{b{n{s{s{€{�{”{”{š{ Haoè5è566#6&6(65696<6F6 l:Q‘ä‘äœä«äºäÕäçäóäå -åå+åGåYå~å‡åœå£å£å¸å¹å½å –±À±ÀÓÀÖÀÝÀóÀÁ -ÁÁ4Á4ÁBÁHÁPÁ\ÁaÁaÁhÁnÁzÁÁ†Á�Á”ÁžÁªÁ¼ÁÁÁÄÁËÁËÁÝÁíÁôÁ Â6ÂIÂMÂh€´´»ÂÅÂËÂÍÂÍÂÍÂÍÂÍÂÍÂÍÂáÂèÂëÂüÂà ÃÃÃÃÃ$Ã&Ã&Ã&Ã)Ã+Ã+Ã2Ã5Ã<Ã<Ã?ÃDÃOÃcÃjÃpÅÈççìììóýÃÅÃÅÃÅÃÐÃÜÃ߯ÄxÌæžžº½ÂÍÕòý  1 1 9 V a f f n — ¢ § § « º œ`ƒ y y'y.y9y?yByByIyOy`yeyhymyvyvyvyzy„y“y›y°y»yÍyÑyÓyåyéyéyéyóyŒp�H6H6f6i6�6�6ƒ6”6¡6¦6¬6É6Ì6×6Û6Û6à6û6þ6 7 7 777'7Ô -;bwbw|ww‚wŒw’wžw¥w¬wµwÂwÐwÙwÜwâwèwïwöwøwxxxx$x3x?xBxExMxRxhxtxwxzxzxzxzx}x…x�x™xœx®xd 5–›–›¾›Æ›à›ë›î›ô›ü›œ œ-œ/œ=œJœZœnœpœpœ€œ�Rr‚„‚„Œ„’„™„Ÿ„µ„Ú„ï„ï„ô„û„…,…E…J…N…]…_…j…u…€…€…„… UYÎÎ*Î9ÎA΀ ² ²'²6²L²^²s²y²~²„²‡²•²¡²¤²§²³²¸²Á²ƲͲã²ã²ù²@v‚A€A€J€r€•€¢€¯€º€Ý€å€ê€Ìh—fèfè�è‹è™èŸè©è©è¶è¼èÀèÃèÅèÌèÓèÝèéèòèéé8é(éMéMéXé�éƒé�é—é®éºéÂéÄéÞéùéêêHê|ÂÝÏ?Ï?í?ö?@@@@!@-@3@=@?@K@V@`@k@r@v@~@@@�@ì¥Üu€u€�€—€Ÿ€®€¿€Á€Ø€ê€æ€ù€ ����%�C�?�R�b�y�Š���’�˜�¸�Î�Û�â�í�ñ�ö�‚ ‚‚‚‚*‚;‚@‚L‚W‚i‚,‚‰¾¾2¾D¾J¾P¾V¾P0@ééôû -!Gbip}†Š(yñ¦ñ¦ú¦ÿ¦§,§,§1§\õ©�©�·�¼�Ä�Ë�Ð�ø��(�5�@�]�e�l�l�o�u� ,“š^á^álá‡á‘á–á©á¯á ¼ÑüsGsGŸG¥G¾GÖGÝGéGõGüG -H)H)HHHRHZHaHiHsH{H�H H±HÆHÍHÖHÜHäHäHèHI!4#AÐAÐJÐOÐXÐaÐgÐgÐlÐ"< ËË*Ë=ËJËVË^ËzËŠË�Ë�Ë#4ÓÜè1è1ü1þ12222!2)2$,Y`‹8‹8™8›8­8µ8º8À8%DJW9Ú9ÚFÚTÚ\ÚdÚrÚzڂڊڒڜڡÚ&øbœqæqæyæ‰æ™æ¨æ±æ¿æÍæØæèæýæç)ç8çXçgçzçˆç�ç´ç½çÌçèçÿçèè)è4èIèXèjèoèzè…è’è§è¹èÐèÙèäèëèöèé é é'(X^ÖñÖñáñõñòò(0]e¾¾ÇÑ×Ýßßä)@ áÿáÿõÿ,=GQ[a*h¡{¡{ª{¸{Ç{Ò{â{ò{||!|0|@|P|q|s|‚|‘|¡|±|Ú|Ú|ß|+ˆ Ë=Ë=ë=õ=ø=>>>!>+>>>H>J>i>n>|>Š>•>£>±>»>»>»>Ë>,PÙé†ì†ì¤ì·ìÃìÞìïìüìííí,í-$mrMpMpQpapfpvp.H¯½JOJO`OeO~O‰O’O”O O£O¦O°O/D&ÓQÓQÜQêQêQìQòQýQýQ R RR0(£©rbrbvb�b†b�b’b1D.;ÞæÞæìæúæúæç!ç;ç;ç?çEç2d>SñÐñÐ -ÑÑÑÑ&Ñ&Ñ3Ñ3ÑBÑQÑ`ÑrчёѠѠѪÑ3ÔT>Æ>Æ\Æ`ÆcÆtƇƑƗƛƞƠƦƪƭƳƶÆÉÆáÆéÆìÆýÆÇÇ"Ç&Ç9Ç<ÇHÇMÇSÇ[ÇnLjÇ�ǓǤǼÇÃÇÃÇÒÇàÇúÇÈ%È%È6ÈNÈ[È`È`ÈqȅȌȑȑȢȶÈÍÈÒÈÒÈØÈéÈýÈÉ!É!É'É8ÉLÉkÉpÉpÉ�ɕɢɧɧɸÉÌÉÙÉÞÉÞÉïÉÊÊÊÊÊÊÊ#Ê;ÊJÊLÊLÊ]ÊqÊzÊzʀʀʉʉÊË44£¬ÅÅÅÅ Å"Å&Å,Å5l 7Ë>Ë>é>ì>ô>???$?8?B?D?c?h?v?„?�?�?«?µ?µ?Ã?6ˆ7UÃ?Ã?é?í?ð?@ @ @/@8@J@S@Z@_@i@r@|@@‚@‡@™@§@¸@Ì@Ú@ê@ê@ü@7x1”1”C”R”U”v”–”¦”˔۔䔕 •/•5•E•E•W•Z•_•_•o•u•x•Û•8ˆZx9¦9¦P¦S¦S¦d¦m¦w¦{¦~¦‹¦”¦”¦ž¦ž¦¤¦«¦¯¦¸¦¸¦Á¦ƦÒ¦ä¦æ¦ð¦9XÉÛ g g)g6g;gGgagggtgg†g�g“gŸg:X¶Èqfqf‘fžf£f¯fÉfÏfÜféfðfùfýf g;$ ž”ž”´”•< ^bFÛFÛJÛSÛUÛ= îòFäFäPäcähä> áåe‹e‹y‹‹‹“‹?(6<†œ†œ“œ¨œÍœáœ@0y�Ö½Ö½ð½ó½ó½ü½ ¾¾¾AHª¸µ‰µ‰Ð‰í‰÷‰þ‰þ‰Š"Š$Š$Š.ŠBÌ NA¤A¤S¤b¤x¤„¤‰¤§¤§¤°¤ŤÚ¤â¤î¤ú¤¥¥¥ ¥ ¥'¥.¥7¥9¥9¥@¥K¥j¥j¥z¥�¥Š¥›¥›¥›¥¦¥­¥²¥¹¥Ó¥Ö¥ä¥CXºÌé�é� ŽŽŽŽ#Ž#Ž4ŽAŽKŽNŽQŽWŽeŽD¨Ci‘~‘~º~¿~É~Ó~Ý~é~é~ñ~#(1499Qfilry}¬°¸ºÅÅÊÊÙéE<—¢‰Ä‰Ä‘ĕĤĴÄÞÄåÄòÄøÄüÄFD�£�£Š£�£�£�£¯£·£¼£È£ΣУУÕ£G8�™¢i¢i¦i±i¼iÃiËiði*jHL••&•4•D•G•r•–•§•ì•ð•ø•IØ9*j*jDjKjOjSj^joj}j‘j�j j©j´jËjÐjÙjÜjæjîjñjôjk k'k>kEkNkQkSkckfkhkokkƒkŠk�k­k´kÆkJ<ðûõ‹õ‹ Œ ŒŒ8Œ<ŒLŒYŒK �…9»9»S»e»o»LH -^æ^ærætæ{æ†æ¯æ´æËæÐæÐæÔæÜæM@v‚ÝXÝXíXýXYYY Y)YNHçõ¾ ¾ Ø å õ  - - - -4 -7 -A -OP-Y-YAYcYcYoYzY~Y…Y�Y”YœY�Y¥YP ¾Â²O²O»OÍOQt/aal{Š˜³Óó"BUfo|“®ÃÊÊßàäRhs‰&&#&A&R&b&i&�&ž&±&¸&É&á&ã&ã&ö&' '!'!'#'S0$,16JU^hT@ a§a§j§p§y§�§—§œ§¨§®§°§°§µ§U4ÔÝ›a›a¹aÕaìaøaþab b*bV,­´ï9ï9ø9:':':,:WLRaÁåÁåÌåÓåâåòå æ)æBæIæPæ]æfæjæX`iâiâqâ€âŒâ â±â¼âÅâÍâÏâáâóâúâúâ ã ããYTFWÃÃÇÞõ &OZu|ƒŽž¯¶Z8$Û*Û*ä*î*ö*+++++ \ No newline at end of file +œ +° +À +Ö +ã +ö + & 3 < < U x – É Î è ü  # C L T a s … ¥ º Í ç ü  " 4 9 K ] u … ‘ ¤ ¤ × â í !--2AOh’™ž¾Åêê EGGLgnyy‡œœ­´ÉÉÚÚÝåÄh + .ð.ð<ðWðcðoð{ð„ð�ð–ðŸð¨ð±ðºðÃðÌðÕðÞðçðððððñÅ0ÀÈ3a3aQama„a�a–aœa»aÆX’¤ 0 0®0·0Ã0É0Ì0Ñ0×0Ú0ß0ß0ì0ð0ó0ó0ù0ÇÜ�´¿c¿cåcícùcdd$d+d;dJdJdOdjdmdrd€d”d›d¥d¥dºdºdÐdÞdädìd÷de e"e%e*e8eNeXe[e^efeteŠe”e—e—eže¢e´eÈLùûIûI +JJJ"J,JIJTJ]JcJdJjJÉ PTÆàÆàÊàöàøàÊôÍÏ,Ï,×,Û,ã,ô,- --T-f-x-x-|-‹-•-¨-°-´-Ã-à-å-å-û-..%.F.S.[.`.s.‚.£.°.».Í.ß.ú.///!/!/"/4/4/B/F/J/Ë´f�×y×y÷yúyzz!z,z.zBzOzXz\z\zezwz|z�zµzÎzÕz×zûz{{{{{/{D{D{Œ{Ì8AKGzGzWzZz\zazdzgzlztzÍDy†÷u÷uûuvv vvv v%v+v1v7v9vÎhÛ1g<g<r<Š<›<ª<´<½<Î<æ<þ<=!=)=E=Z=p=x=�=¢=¬=½=Ï=æ=æ= +>(>2>2>Q>`>h>h>‡>—>±>ñ>Ä>Ì>·>?0?8?8?R?g?�?‹?ž?¦?‘?ñ?ñ?ñ?'@'@8@8@K@]@e@x@�@£@«@«@¹@Â@Í@Û@â@í@û@û@A AÏ4{„8›8›H›J›R›f›m›r›z›Ð<£®òOòOPP0PDPNPXP[PkPÑ8˜¢‚O‚O¦OªOÀOÔOÞOáOñOÒLú ®ï®ïÊïÖïñïúïðð!ð-ðÓ`L`Z’Z’z’†’‘’–’¤’¯’¾’Ä’Õ’Ù’Ý’ã’æ’í’ø’ø’“Ô ž¢ +n +nnnnÕ #Gññ#ñ*ñ4ñBñBñJñcñ†ñˆñªñÁñãñ ò+ò5ò?òMòeò}ò†ò†òŸò©òÂòÐòÒòÙòàòóÖÌ\‹ZêZêvêyê|ê…êˆê�ê�ê“êŸê±ê´ê·ê¼êÌêÏêâêâêöêøêøê ë ëëë ë$ë:ë@ëGëNëQëVëkënëpëpë…ë…ë…ë—ë×`¹Í Œ Œ<Œ?ŒDŒJŒSŒXŒdŒlŒxŒ|Œ„Œ�Œ’Œ’Œ•Œ¡ŒØ ƒ‡òNòNûNO OÙ°)‘×<×<õ<ø<ú<====!=!='=.=.=9=;=C=I=N=N=Z=d=h=m=m=m=m=t=t==‚=„=‰=‰=”=–=ž=¯=±=·=¼=¼=Ô=ß=ã=î=ü=>>>>>>%>)>6>C>G>M>P>W>Y>Y>i>o>x>>ƒ>ƒ>ƒ>ƒ>ƒ>Š>Ž>’>•>˜>œ>¡>«>¾>Ä>Í>×>Û>í>Ú0$,âqâqæqëqrr#r%rÛ\7J%\%\5\:\D\L\U\X\_\b\j\q\q\y\Ü@4@;;CG_w�žª¸¿ÌÍÑÝ\çGçGõGÿGH HH#H.H0H=HLHlHuH~H„HŒHÞ<±¼ q q´q·qÀqÐqÕqéqúqß|#"q"qXqLqhqnq}q‚q“q—q›q¥qªqºqÀqÇqÊqÜqà° 1`‡`‡i‡ƒ‡ƒ‡‰‡‰‡�‡�‡�‡�‡�‡�‡�‡�‡”‡”‡ ‡¦‡¦‡¬‡±‡º‡º‡Í‡Í‡Í‡Í‡Í‡Í‡Ó‡Ó‡Ó‡Ó‡Õ‡Õ‡í‡á„1Nÿnÿnoo'o@oUo[oionouo�o�o‹o�o—o¢o°o´o·oºoÃoÖoâ@—£)))) )))0)2)D)I)V)ã,„‹ß{ß{è{í{õ{û{û{|äD -êÏêÏøÏþÏÐÐÐÐÐ*Ð*Ð6Ð6Ð@Ðå4›¤ ‚ ‚)‚7‚K‚S‚Y‚[‚[‚`‚æ /3RR R4R:RçHàî‚ǂǗǡǤǭǹÇÁÇÞÇíÇóÇöÇÈè$ÞÞÞÞâÞæÞèÞéDÍÚ‡}‡}•}¡}¦}¦}³}¸}¸}¾}êhC™ � �º�¼�Õ�á�å�‘‘‘‘‘‘(‘4‘;‘I‘M‘X‘h‘r‘w‘w‘€‘�‘•‘•‘¦‘«‘®‘º‘ˑۑݑݑݑú‘ü‘ü‘’’ ’+’7’>’B’R’U’a’r’ƒ’…’…’›’�’�’³’³’¹’Å’Ñ’Ø’Ü’ì’ï’û’ ““ “ “ “%“i“ëxš´p“p“ˆ“—“�“ “»“Ö“Ö“à“â“â“ì“î“î“î“ù“û“û“û“””” ””ì Uyáá á/á=á^ápárá�áŸáŸá´á¶áÌáäáëáëáìáìáúáâââ"â-â=âEâXâíHŒš|||"|4|7|7|>|X|[|`|b|j|î8ïùËXËXëXöXYüXY(Y(Y(Y4Yï@ƒ�ššš8š[šhšuš€š¢šªš°šð(=CООݞòžŸ2Ÿñ ßãöåöåæææò`Óçªoªo¶oÆoÉoÊoÏo×oÚoîoôoùoppppppppó$§¬Ï|Ï|Ø|à|æ|ë|ô0”œÚÄÚÄéÄòÄüÄÅÅÅõdµ +·e·eÙeÝeåeöeöe ff$f$f0f?fDf]f`fefjfzf…fŒf�f”f¢f¶f½fÇfÍfÐfÞfäfôf g gggg,g8g>gGgSgtgxg„g‹g’g˜g›g©g¿g¿g¿gÄgÐgègìg÷gúgýghhh*h*h*h2h>hVhZhehhhoh€h€h‡h�hö4 (_y_ymyoyty}y€y…y‹y÷äJ�H�H®H´HÀHÎHÑHæHðHýH(I+I/I:ICIgIoI”I¢I´IÀIÌIÌIàIãIóIJ JJJ.J8JHJQJaJhJhJhJoJvJ{J�JƒJ Jø$N“3E3E;EHEWE\EpE…EžE·E¿EÞEñEFSFUFYFùhW~Ù~ٖٟ٥ٮٶٿÙÇÙÌÙÌÙÔÙÙÙÙÙáÙïÙïÙõÙüÙüÙÚÚ!Ú(Ú/Ú:ÚAÚWÚgÚiÚ}ÚŸÚµÚÂÚÛíÚÛOÛ]ÛgÛ~Û�Û…ÛŠÛ“ÛœÛÓÛÄÛ¿ÛäÛßÛúÛÜÜ(Ü(Ü=ÜDÜNÜcÜl܃܇܎Ü�ܑܘܘܨÜú@ãïß}ß}í}ï}~~~"~(~û0W_¯z¯z½zÌzÓzãzçzêzðzü,  ) )2)=)L)a)j)ý`{�3^3^O^t^y^ˆ^�^”^”^¡^°^¸^Ä^Õ^Ý^é^í^í^_þ4W`à5à5ö5ø56666'6ÿtIb¿a¿aÍaÖaÛaôaøaýab"b"bAb]bcbqbqb}b†bŒbŒb’b<µÀo:o:†:�:˜:§:µ:»:¾:È:,›¢ÎãÎã×ãáãää ä”\}‚‚Š£²¿ÎØñþ .@ER]hs‚‘£¶¿ÍÔÔâëX®®ÂÌÓâûû '<>ACCCKP­½ï|ï|}}} } })}-}2}2}:}H­»Z Z r u Š “ ¦ ½ Ë × á ô ! !!,óúÛcÛcõcddd'd8<FÂ�Â�Ö�æ�ø�‚‚ ‚<›¦o|o|ƒ|‘|œ|§|¯|·|¿|Â|Ê| Œ­ ºÝºÝØÝØÝßÝÝÝíÝ ÞÞ+Þ)Þ9ÞHÞOÞRÞbÞvÞvÞ{Þ‹Þ�Þ±ÞÇÞãÞß ß<ß@ßEß]ß_ßoßƒß™ß™ß©ß¸ßÆßÍßÙßßßïßàà'à'àTàcàgàmà‰àžà·à·àÃà×àëàñàüà áá á5áNáQáQáeáuáuá‡á‡á™á¨ä +<juú˜ú˜™™ ™(™7™C™I™O™ È(Vj„j„‚„Ž„±„³„³„À„Ê„Єá„ã„è„è„õ„ü„…………0…2…4…;…N…P…R…Y…l…n…p…w…Š…Œ…Ž…“…“…“…“…˜…˜…Ÿ…¥…¨…-† 8MW¢¾¢¾¬¾´¾žÚ¾â¾å¾ç¾ë¾ PÂÒR‹R‹f‹o‹ˆ‹™‹¾‹Á‹Ø‹â‹ï‹ï‹ñ‹ù‹H¾Ì?}?}M}Y}^}^}k}z}}}…}Hao(6(6B6S6c6f6h6u6y6|6†6l:Qýý%ý4ýCý^ýpý|ýŠý“ý¢ý´ýÐýâýþþ%þ,þ,þAþBþFþ –:Ù:Ù\Ù_ÙfÙ|Ù�ٟٓٽٽÙËÙÑÙÙÙåÙêÙêÙñÙ÷ÙÚÚÚÚÚ'Ú3ÚEÚJÚMÚTÚTÚfÚvÚ}ÚŠÚ©Ú¿ÚÒÚÖÚñÚ Û=Û=ÛDÛNÛTÛVÛVÛVÛVÛVÛVÛVÛjÛqÛtۅۋ۔ۣۭۚۜۜۯۯۯ۲۴۴ۻ۾ÛÅÛÅÛÈÛÍÛØÛìÛóÛùÛÜÜ0Ü0Ü5Ü5Ü5Ü<ÜFÜNÜNÜNÜYÜeÜhÜÝxÌæ'!'!C!F!K!V!^!{!†!�!”!º!º!Â!ß!ê!ï!ï!÷! "+"0"0"4"C"œ`ƒ÷z÷z{{${*{-{-{4{:{K{P{S{X{a{a{a{e{o{~{†{›{¦{¸{¼{¾{Ð{Ô{Ô{Ô{Þ{Œp�ˆ6ˆ6¦6©6Á6Á6Ã6Ô6á6æ6ì6 7 7777 7;7>7I7M7M7V7Y7g7Ô +;ßvßvùvüvÿv www"w)w2w?wMwVwYw_wewlwswuww„w�w›w¡w°w¼w¿wÂwÊwÏwåwñwôw÷w÷w÷w÷wúwx +xxx+xd 5€�€�¨�°�Ê�Õ�Ø�Þ�æ�ú� +žžž'ž4žDžXžZžZžjž�Ttǃǃу׃Þƒäƒúƒ „4„4„9„@„X„q„Š„�„“„¢„¤„¯„º„ńńɄ UYþÏþÏÐ!Ð)Ѐ’ʒʰʿÊÕÊçÊüÊËË ËËË*Ë-Ë0Ë<ËAËJËOËVËlËlË‚Ë@v‚R™R™[™ƒ™¦™³™À™Ë™î™ö™û™Ìh—^ê^êyêƒê‘ê—ê¡ê¡ê®ê´ê¸ê»ê½êÄêËêÕêáêêêþêë0ë ëEëEëPëyë{ëˆë�ë¦ë²ëºë¼ëÖëñëýë +ì@ì|ÂÝ@@-@6@B@E@R@W@a@m@s@}@@‹@–@ @«@²@¶@¾@¿@¿@Í@ì¥Ü`‚`‚z‚‚‚Š‚™‚ª‚¬‚ÂՂтä‚ô‚ú‚ƒƒƒ.ƒ*ƒ=ƒMƒdƒuƒxƒ}ƒƒƒ£ƒ¹ƒÆƒÍƒØƒÜƒáƒìƒ÷ƒýƒ„„„&„+„7„B„T„,‚‰ÀÀÀ,À2À8À>À P0@rr}„“£ªÐëòù (w}ª¿ª¿³¿¸¿Ó¿å¿å¿ê¿!\õº¨º¨ȨͨÕ¨ܨᨠ©,©9©F©Q©n©v©}©}©€©†©",“švãvã„ãŸã©ã®ãÁãÇã#¼ÍøcHcH�H•H®HÆHÍHÙHåHìHúHII8IBIJIQIYIcIkII�I¡I¶I½IÆIÌIÔIÔIØIõI$4#ÊèÊèÓèØèáèêèðèðèõè%< þÌþÌÍ%Í2Í>ÍFÍbÍrÍuÍ…Í&4ÓÜ(2(2<2>2G2G2T2\2a2i2',W^;:;:I:K:]:e:j:p:(DJWÂòÂòÏòÝòåòíòûòó óóó%ó*ó)øbœúþúþÿÿ"ÿ1ÿ:ÿHÿVÿaÿqÿ†ÿ›ÿ²ÿÁÿáÿðÿ&=FUqˆ˜¥²½Òáóø0BYbmt‰’–*(X^ÎóÎóÙóíóüóô+0V^FFOY_eggl,@ jj~Œš¤µÆÐÚäê-h²”²”»”ɔؔã”ó”••#•2•A•Q•a•‚•„•“•¢•²••ë•ë•ð•.ˆ ? ?+?5?8?@?P?P?a?k?~?ˆ?Š?©?®?¼?Ê?Õ?ã?ñ?û?û?û? @/PÙé~î~îœî¯î»îÖîçîôîïïï$ï0$mr˜o˜oœo¬o±oÁo1H¯½rPrPˆP�P¦P±PºP¼PÈPËPÎPØP2D&ÓRÓRÜRêRêRìRòRýRýR S SS3(£©"n"n&n1n6n@nBn4D.;ÖèÖèäèòèòèúèé3é3é7é=é5d>Szézé“é—é£é£é¯é¯é¼é¼éËéÚéééûéêê)ê)ê3ê6ÔT&È&ÈDÈHÈKÈ\ÈoÈyÈȃȆȈȎȒȕțȞȱÈÉÈÑÈÔÈåÈùÈÉ +ÉÉ!É$É0É5É;ÉCÉVÉpÉxÉ{ɌɤɫɫɺÉÈÉâÉîÉ Ê ÊÊ6ÊCÊHÊHÊYÊmÊtÊyÊyʊʞʵʺʺÊÀÊÑÊåÊË Ë ËË Ë4ËSËXËXËiË}ËŠË�Ë�Ë Ë´ËÁËÆËÆË×ËëËøËúËúËúËúËúË Ì#Ì2Ì4Ì4ÌEÌYÌbÌbÌhÌhÌqÌqÌúÌ74£¬ŠÝŠÝ˜Ý�ݨݫݯݵÝ8l 7 @ @)@,@4@H@H@Z@d@x@‚@„@£@¨@¶@Ä@Ï@Ý@ë@õ@õ@A9ˆ7UAA)A-A0ACA_A_AoAxAŠA“AšAŸA©A²A¼A¿AÂAÇAÙAçAøA BB*B*B X\®Ü®Ü²Ü»Ü½Ü? éí>æ>æHæ[æ`æ@ áåP�P�d�v�~�A(6<pžpž}ž’ž·žËžB0y�¾¿¾¿Ø¿Û¿Û¿ä¿õ¿ø¿ÀCHª¸ ‹ ‹»‹Ø‹â‹é‹é‹Œ ŒŒŒŒDÄ L*½*½:½I½K½W½\½z½z½ƒ½˜½­½µ½Á½ͽÙ½é½î½ó½ó½ú½¾ +¾ ¾ ¾¾¾=¾=¾M¾T¾]¾n¾n¾n¾y¾€¾…¾Œ¾�¾›¾EXºÌú¦ú¦§ §&§)§4§4§E§R§\§_§b§h§v§F¨Ci¢—¢—Ë—ЗÚ—ä—î—ú—ú—˜+˜4˜9˜B˜E˜J˜J˜b˜w˜z˜}˜ƒ˜Š˜Ž˜½˜Á˜ɘ˘Ö˜Ö˜Û˜Û˜ê˜ú˜G<—¢ÝÝÝÝ-Ý=ÝgÝnÝ{Ý�Ý…ÝHDj¼j¼s¼y¼y¼†¼˜¼ ¼¥¼±¼·¼¹¼¹¼¾¼IL————.—1—\—€—‘—Ö—Ú—â—JØ9vvv#v'v+v6vGvUvivuvxv�vŒv£v¨v±v´v¾vÆvÉvÌvàv÷vÿvww&w)w+w;w>w@wGwWw[wbwew…wŒwžwK<ðûà�à�ö�ø�Ž#Ž'Ž7ŽDŽL �…ÂÓÂÓÜÓîÓøÓMH -VèVèjèlèsè~è§è¬èÃèÈèÈèÌèÔèN@nzZZZ%Z,Z:ZAZHZQZOHçõG"G"a"n"~"“"š"£"½"À"Ê"PPUZUZiZ‹Z‹Z—Z¢Z¦Z­Z¸Z¼ZÄZÅZÍZQ ¾ÂÚPÚPãPõPRt/êêõ!<\|š«ËÞïø7LSShimSh€–û'û'(!(2(B(I(m(~(‘(˜(©(Á(Ã(Ã(Ö(ç(ÿ()))T0$,››£¹¾ÒÝæðU@ ÀÀ#À)À2ÀFÀPÀUÀaÀgÀiÀiÀnÀV4ÉÒ»a»aÙaõa bbb$b+bJbW,­´/:/:8:U:g:g:l:XLRaJþJþUþ\þkþ{þ¨þ²þËþÒþÙþæþïþóþY`òúòúúú ûû)û:ûEûNûVûXûjû|ûƒûƒû•û–ûšûZTDUKKOf}ˆ“®×âý &7>[8$Ë,Ë,Ô,Þ,æ,ó,õ,--- \ No newline at end of file diff --git a/Kernel/Kernel.PRJ b/Kernel/Kernel.PRJ index 3e20318..7108221 100644 --- a/Kernel/Kernel.PRJ +++ b/Kernel/Kernel.PRJ @@ -1,10 +1,10 @@ //Compile this by calling $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). -//Don't do it directly. See $LK,"Cmp(\"/Kernel/Kernel\")",A="FF:::/Adam/Boot/BootIns.CPP,Cmp(\"/Kernel/Kernel\""$. +//Don't do it directly. See $LK,"Cmp(\"/Kernel/Kernel\")",A="FF:::/Adam/Opt/Boot/BootIns.CPP,Cmp(\"/Kernel/Kernel\""$. #exe { Cd(__DIR__);; - OptOn(OPTf_WARN_PAREN); - OptOn(OPTf_WARN_DUP_TYPES); + Option(OPTf_WARN_PAREN,ON); + Option(OPTf_WARN_DUP_TYPES,ON); #include "KCfg" CKernelCfg *kernel_cfg; kernel_cfg=KernelCfgNew; @@ -12,14 +12,14 @@ #include "KernelA.HPP" #include "KStart" -#include "KUtils" #include "KMathA" -#exe {OptOn(OPTf_KEEP_PRIVATE);}; +#include "KUtils" +#exe {Option(OPTf_KEEP_PRIVATE,ON);}; #include "/Compiler/CompilerA.HPP" -#exe {OptOn(OPTf_EXTERNS_TO_IMPORTS);}; +#exe {Option(OPTf_EXTERNS_TO_IMPORTS,ON);}; #include "/Compiler/CompilerB.HPP" -#exe {OptOff(OPTf_EXTERNS_TO_IMPORTS);}; -#exe {OptOff(OPTf_KEEP_PRIVATE);}; +#exe {Option(OPTf_EXTERNS_TO_IMPORTS,OFF);}; +#exe {Option(OPTf_KEEP_PRIVATE,OFF);}; #include "KernelB.HPP" #include "KExts" #include "StrA" @@ -30,14 +30,14 @@ #include "Sched" #include "MemC" #include "Font8x8" -#include "KHashA" #include "StrB" -#include "Ints" +#include "KHashA" +#include "KInts" #include "KDataTypes" #include "Compress" #include "KHashB" #include "KLoad" -#include "Date" +#include "KDate" #include "StrPrint" #include "StrScan" #include "KDefine" @@ -46,19 +46,14 @@ #include "KDbg" #include "KeyDev" #include "KExcept" -#include "KbdMouse/InputPointer" -#include "KbdMouse/Keyboard" -#include "KbdMouse/Mouse" -#include "KbdMouse/Message" +#include "SerialDev/MakeSerialDev" #include "QSort" -#include "Task" +#include "KTask" #include "SrvCmd" #include "PCIBIOS" -#exe {Cd("Dsk");}; -#include "Dsk" -#exe {Cd("..");}; #include "MultiProc" #include "EdLite" +#include "BlkDev/MakeBlkDev" #include "PSect" #include "KEnd" diff --git a/Kernel/KernelA.HPP b/Kernel/KernelA.HPP index 746260a..f6134de 100644 --- a/Kernel/KernelA.HPP +++ b/Kernel/KernelA.HPP @@ -281,7 +281,7 @@ public class CMathODE //Interrupts //0x00-0x1F are reserved by Intel -#define I_DIVIDE_BY_ZERO 0x00 +#define I_DIV_ZERO 0x00 #define I_SINGLE_STEP 0x01 #define I_NMI 0x02 #define I_BPT 0x03 @@ -440,8 +440,8 @@ class CKernel #define RLf_FULL_HEAP 6 #define RLf_RAW 7 #define RLf_INTERRUPTS 8 -#define RLf_MP 9 -#define RLf_DSK 10 +#define RLf_BLKDEV 9 +#define RLf_MP 10 #define RLf_COMPILER 11 #define RLf_DOC 12 #define RLf_WINMGR 13 @@ -458,8 +458,8 @@ class CKernel #define RLF_FULL_HEAP 0x00040 #define RLF_RAW 0x00080 #define RLF_INTERRUPTS 0x00100 -#define RLF_MP 0x00200 -#define RLF_DSK 0x00400 +#define RLF_BLKDEV 0x00200 +#define RLF_MP 0x00400 #define RLF_COMPILER 0x00800 #define RLF_DOC 0x01000 #define RLF_WINMGR 0x02000 @@ -570,7 +570,8 @@ class CRAXRBCRCXRDX #define EXT_WIN_FOCUS 1 #define EXT_HEAPLOG_MALLOC 2 #define EXT_HEAPLOG_FREE 3 -#define EXT_NUM_ENTRIES 4 +#define EXT_DBG_RESUME 4 +#define EXT_NUM_ENTRIES 5 #help_index "Processor" #define DFT_CACHE_LINE_WIDTH 64 @@ -602,9 +603,10 @@ class CSema #define SYS_SEMA_TT 16 #define SYS_SEMA_MUTE 17 #define SYS_SEMA_FORCE_WINMGR 18 -#define SYS_SEMA_TMBEAT 19 -#define SYS_SEMA_FIX 20 -#define NUM_SYS_SEMAS 21 +#define SYS_SEMA_JUST_PUMP_MSGS 19 +#define SYS_SEMA_TMBEAT 20 +#define SYS_SEMA_FIX 21 +#define NUM_SYS_SEMAS 22 #define SYSf_CTRL_ALT_DEL 0 #define SYSf_CTRL_ALT_C 1 @@ -788,9 +790,9 @@ public class CMemberLstMeta public class CMemberLst { CMemberLst *next,*left,*right, - *left2,*right2; //For finding dup class local vars, not names. + *left_class_base,*right_class_base; //For finding dup class local vars. U8 *str; - CHashClass *member_class,*member_class2; + CHashClass *member_class,*member_class_base; CMemberLstMeta *meta; U32 use_cnt; U16 flags; @@ -827,7 +829,8 @@ public class CHashClass:CHashSrcSym U32 member_cnt; U8 ptr_stars_cnt,raw_type; U16 flags; - CMemberLst *member_lst,*member_lst2, + CMemberLst *member_lst_and_root, //Head of linked list and root of tree. + *member_class_base_root, //For finding dup class local vars. *last_in_member_lst; CHashClass *base_class, *fwd_class; @@ -1014,7 +1017,7 @@ public class CHashGlblVar:CHashSrcSym #define DOCEF_DONT_DRAW 0x400000000000000 //only works on sprites #define DOCEG1_DONT_EDIT (DOCEF_DEFINE|DOCEF_HTML_LINK|\ - DOCEF_BIN_PTR_LINK|DOCEF_SCROLLING_X|DOCEF_TAG_CB) + DOCEF_AUX_STR|DOCEF_BIN_PTR_LINK|DOCEF_SCROLLING_X|DOCEF_TAG_CB) //These are identical to Doc flags #define DOCEF_HIGHLIGHT 0x4000000 @@ -1329,7 +1332,6 @@ public class CDoc //Linked Text File header CDocEntry *cur_entry,*old_cur_entry; I32 cur_col,old_cur_col, line_start_col,top_line_num, - ext_ascii_val,ext_ascii_cnt, //Like , dollar_buf_size,dollar_buf_ptr; U8 *dollar_buf; //When entering $$ cmds, it buffers them until the end $$. @@ -1346,7 +1348,7 @@ public class CDoc //Linked Text File header CEdFindText *find_replace; U8 *cur_sprite;//Set cur_sprite use (ip.pos.x,ip.pos.y) as input. -//Output is nearest. See $LK,"*_cur_elem_num=",A="FF:::/Adam/Gr/SpriteEd.CPP.Z,*_cur_elem_num=doc->"$ and $LK,"::/Demo/Graphics/Pick.CPP.Z"$. +//Output is nearest. See $LK,"*_cur_elem_num=",A="FF:::/Adam/Gr/SpriteEd.CPP,*_cur_elem_num=doc->"$ and $LK,"::/Demo/Graphics/Pick.CPP"$. I64 nearest_sprite_elem_num; CEdFileName filename; @@ -1390,6 +1392,7 @@ tries to do something. #define WIF_SELF_GRAB_SCROLL 0x0200 #define WIF_SELF_DOC 0x0400 #define WIF_SELF_ODE 0x0800 +#define WIF_SELF_KEY_DESC 0x1000 //FOCUS 0x00010000 #define WIF_FOCUS_TASK_MENU 0x00020000 #define WIF_FOCUS_TASK_CTRLS 0x00040000 @@ -1404,7 +1407,7 @@ tries to do something. #define WIG_DBL_CLICK (WIF_FOCUS_TASK_IP_L_D|WIF_FOCUS_TASK_IP_R_D) #define WIG_TASK_DFT (WIF_FOCUS_TASK_MENU|WIG_DBL_CLICK|\ 0xFFFF-WIF_SELF_DOC-WIF_SELF_ODE) -#define WIG_USER_TASK_DFT 0 +#define WIG_USER_TASK_DFT WIF_SELF_KEY_DESC #define WIf_SELF_FOCUS 0 #define WIf_SELF_CTRLS 2 @@ -1415,6 +1418,7 @@ tries to do something. #define WIf_SELF_GRAB_SCROLL 9 #define WIf_SELF_DOC 10 #define WIf_SELF_ODE 11 +#define WIf_SELF_KEY_DESC 12 #define WIf_FOCUS_TASK_MENU 17 #define WIf_FOCUS_TASK_CTRLS 18 #define WIf_FOCUS_TASK_IP_L 19 @@ -1450,16 +1454,61 @@ public class CWinMgrGlbls grab_scroll_closed; }; -#help_index "Compiler/Directive" -//Compiler Options -// Use $LK,"OptOn",A="MN:OptOn"$() $LK,"OptOff",A="MN:OptOff"$() +#help_index "AutoComplete" +#define ACf_INIT_IN_PROGRESS 0 +#define AC_MAX_FILLINS 10 +public class CAutoCompleteGlbls +{ + I64 num_words; + CHashTable *hash_table; + U8 *cur_word; + I64 flags; + CTask *task; + I64 partial_len,num_fillins, + fillin_hits [AC_MAX_FILLINS+1]; + CHashAC *fillin_matches[AC_MAX_FILLINS+1]; +}; -//You might need to do #exe {OptOn();} +#help_index "AutoComplete/Dictionary" +#define ACD_WORD_FILENAME "/Adam/AutoComplete/ACWords.DAT.Z" +#define ACD_DEF_FILENAME "/Adam/AutoComplete/ACDefs.DAT" +#define ACD_DEF_FILENAME_Z "/Adam/AutoComplete/ACDefs.DAT.Z" + +#define ACD_H1 0 +#define ACD_H1_END 1 +#define ACD_DEF 2 +#define ACD_DEF_END 3 +#define ACD_PRONUNCIATION 4 +#define ACD_PRONUNCIATION_END 5 +#define ACD_POS 6 +#define ACD_POS_END 7 +#define ACD_EXTRA 8 +#define ACD_EXTRA_END 9 +#define ACD_BLK_SIZE 0x4000 + +#define ACD_END_CHAR 0x00 +#define ACD_WORD_CHAR 0x01 +#define ACD_DEF_CHAR 0x02 +#define ACD_PRONUNCIATION_CHAR 0x03 +#define ACD_POS_CHAR 0x04 +#define ACD_EXTRA_CHAR 0x05 + +#define ACD_MAX_FILLINS 10 +public class CAutoCompleteDictGlbls +{ + U8 *word_lst; + I64 word_lst_size,num_words,num_fillins; + U8 *fillins[ACD_MAX_FILLINS]; + Bool has_words,has_defs; +}; + +#help_index "Compiler/Directive" +//Compiler $LK,"Option",A="MN:Option"$()s +//You might need to do #exe {Option();} //Note: The #exe statement is lexed-ahead, //so it takes effect earlier than you might expect. #define OPTf_ECHO 0x00 -#define OPTf_OPT_TRACE 0x01 -#define OPTf_COMPILE_TRACE 0x02 +#define OPTf_TRACE 0x01 #define OPTf_WARN_UNUSED_VAR 0x10 //Applied to funs, not statements #define OPTf_WARN_PAREN 0x11 //Warn unnecessary parens #define OPTf_WARN_DUP_TYPES 0x12 //Warn dup local var type statements @@ -1519,7 +1568,7 @@ public class CWinMgrGlbls #define ICF_SHORT_JMP 0x000001000 #define ICF_A1_FIRST 0x000002000 #define ICF_PUSH_RESULT 0x000004000 -#define ICF_TRACE 0x000008000 +#define ICF_PASS_TRACE 0x000008000 #define ICF_R_WAS_STK 0x000010000 #define ICF_A1_WAS_STK 0x000020000 #define ICF_A2_WAS_STK 0x000040000 @@ -1647,23 +1696,24 @@ class CCodeMisc #define IEF_48_REX 0x040 #define IEF_REX_ONLY_R8_R15 0x080 #define IEF_REX_XOR_LIKE 0x100 -#define IEF_STI 0x200 +#define IEF_STI_LIKE 0x200 #define IEF_ENDING_ZERO 0x400 //Slash value #define SV_R_REG 8 #define SV_I_REG 9 -#define SV_NONE 10 +#define SV_STI_LIKE 10 //$LK,"uasm_slash_val",A="FF:::/Compiler/AsmInit.CPP,uasm_slash_val"$ only. +#define SV_NONE 11 class CInstruction { U8 ins_entry_num, //This entry num in opcode hash entry opcode_cnt, opcode[4]; U16 flags; - U8 slash_val,opcode_modifier, + U8 slash_val,uasm_slash_val,opcode_modifier, arg1,arg2, size1,size2,//Size in bits - pad[2]; + pad; }; //x86 opcodes @@ -1723,7 +1773,7 @@ I64 class CAbsCntsI64 }; class CAsmUndefHash -{//Only place created is $LK,"Exp Parser",A="FF:::/Compiler/PrsExp.CPP.Z,sizeof(CAsmUndefHash)"$ when an undef is found in an ASM exp. +{//Only place created is $LK,"Exp Parser",A="FF:::/Compiler/PrsExp.CPP,sizeof(CAsmUndefHash)"$ when an undef is found in an ASM exp. CAsmUndefHash *next; CHashExport *hash; }; @@ -2046,7 +2096,7 @@ class CLexHashTableContext #define CCF_KEEP_DOT 64 #define CCF_KEEP_NUM_SIGN 128 #define CCF_KEEP_AT_SIGN 256 -#define CCf_OPT_TRACE_PRESENT 9 +#define CCf_PASS_TRACE_PRESENT 9 #define CCF_NOT_CONST 0x0000010000 #define CCF_NO_REG_OPT 0x0000020000 #define CCF_IN_QUOTES 0x0000040000 @@ -2105,7 +2155,7 @@ public class CCmpCtrl CStreamBlk *next_stream_blk,*last_stream_blk; CAOT *aot; - I64 pass,opts,otrace_mask, + I64 pass,opts,pass_trace,saved_pass_trace, error_cnt,warning_cnt; //For intermediate codes with multiple float ops (int<->float conversions) @@ -2206,8 +2256,8 @@ public class CATARep #help_index "File/Low Level" #define BLK_SIZE_BITS 9 #define BLK_SIZE (1<flags & KDF_HAS_DESCS) && + if ((!(sc&SCF_KEY_DESC) || tempp->flags & KDF_HAS_DESCS) && (*tempp->put_key)(ch,sc)) break; tempp=tempp->next; @@ -19,7 +19,7 @@ U0 PutKey(I64 ch=0,I64 sc=0) U0 PutChars(U64 ch) {//Output chars. Up to 8 chars in a single U64. -//Don't use this. $LK,"See Print() shortcut.",A="FF:::/Doc/HolyC.TXT.Z,DemoHolyC"$ +//Don't use this. $LK,"See Print() shortcut.",A="FF:::/Doc/HolyC.TXT,DemoHolyC"$ while (ch) { PutKey(ch&255,0); ch>>=8; @@ -28,7 +28,7 @@ U0 PutChars(U64 ch) U0 PutS(U8 *st) {//Use $LK,"Print",A="MN:Print"$(). See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. -//Don't use this. $LK,"See Print() shortcut.",A="FF:::/Doc/HolyC.TXT.Z,DemoHolyC"$ +//Don't use this. $LK,"See Print() shortcut.",A="FF:::/Doc/HolyC.TXT,DemoHolyC"$ I64 ch; U8 *ptr; Bool cont=TRUE; @@ -55,19 +55,15 @@ U0 PutS(U8 *st) U0 KeyDescSet(U8 *fmt,...) {//Call this from key handler to report desc in $LK,"KeyMap",A="MN:KeyMap"$(). - I64 i; U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); StrCpy(keydev.desc,buf); keydev.handler=Caller; Free(buf); - for (i=0;i<5;i++) - Yield; //Makes KeyMap work better. } CKeyDevEntry *KeyDevAdd(Bool (*fp_put_key)(I64 ch,I64 sc), Bool (*fp_puts)(U8 *st),I64 priority,Bool key_descs=FALSE) {//Places hook in StdOut chain. See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$. - Bool old_preempt=Preempt; CKeyDevEntry *tempp,*tempp1=keydev.put_key_root.last; tempp=ACAlloc(sizeof(CKeyDevEntry)); tempp->put_key=fp_put_key; @@ -78,15 +74,12 @@ CKeyDevEntry *KeyDevAdd(Bool (*fp_put_key)(I64 ch,I64 sc), while (tempp1->priority>priority) tempp1=tempp1->last; QueIns(tempp,tempp1); - Preempt(old_preempt); return tempp; } U0 KeyDevRem(CKeyDevEntry *tempp) {//Remove StdOut hook and free. - Bool old_preempt=Preempt; QueRem(tempp); - Preempt(old_preempt); Free(tempp); } @@ -112,11 +105,8 @@ Bool KDRawPutS(U8 *st) Bool KDInputFilterPutKey(I64 ch,I64 scan_code) { - Bool old_preempt; if (Bt(&Fs->task_flags,TASKf_INPUT_FILTER_TASK)) { - old_preempt=Preempt; Msg(MSG_KEY_DOWN,ch,scan_code); - Preempt(old_preempt); return TRUE; } else return FALSE; @@ -125,12 +115,9 @@ Bool KDInputFilterPutKey(I64 ch,I64 scan_code) Bool KDInputFilterPutS(U8 *st) { I64 ch; - Bool old_preempt; if (Bt(&Fs->task_flags,TASKf_INPUT_FILTER_TASK)) { - old_preempt=Preempt; while (ch=*st++) Msg(MSG_KEY_DOWN,ch,0); - Preempt(old_preempt); return TRUE; } else return FALSE; @@ -152,7 +139,7 @@ U0 CtrlAltD(I64) if (Fs==Gs->idle_task) BptS(sys_winmgr_task->rip,sys_winmgr_task); else - BptS(*keydev.ctrl_alt_let_ret_addr); + BptS(*keydev.ctrl_alt_ret_addr); } } @@ -181,31 +168,44 @@ U0 CtrlAltX(I64) LBts(sys_ctrl_alt_flags,SYSf_CTRL_ALT_X); } -U0 CtrlAltLetCBSet(U8 ch,U0 (*fp_handler)(I64 sc),U8 *desc,Bool in_irq=FALSE) +U0 CtrlAltCBSet(U8 ch,U0 (*fp_handler)(I64 sc), + U8 *no_shift_desc=NULL,U8 *shift_desc=NULL,Bool in_irq=FALSE) {//Set callback for . ch=ToUpper(ch)-'A'; if (ch<26) { - keydev.fp_ctrl_alt_let_cbs[ch]=fp_handler; - Free(keydev.ctrl_alt_let_descs[ch]); - keydev.ctrl_alt_let_descs[ch]=AStrNew(desc); - BEqu(&keydev.ctrl_alt_let_in_irq_flags,ch,in_irq); + keydev.fp_ctrl_alt_cbs[ch]=fp_handler; + + Free(keydev.ctrl_alt_no_shift_descs[ch]); + if (no_shift_desc) + keydev.ctrl_alt_no_shift_descs[ch]=AStrNew(no_shift_desc); + else + keydev.ctrl_alt_no_shift_descs[ch]=NULL; + + Free(keydev.ctrl_alt_shift_descs[ch]); + if (shift_desc) + keydev.ctrl_alt_shift_descs[ch]=AStrNew(shift_desc); + else + keydev.ctrl_alt_shift_descs[ch]=NULL; + + BEqu(&keydev.ctrl_alt_in_irq_flags,ch,in_irq); } } U0 KeyDevInit() { - keydev.fp_ctrl_alt_let_cbs =CAlloc(26*sizeof(U8 *)); - keydev.ctrl_alt_let_descs =CAlloc(26*sizeof(U8 *)); - keydev.ctrl_alt_let_in_irq_flags=0; + keydev.fp_ctrl_alt_cbs =CAlloc(26*sizeof(U8 *)); + keydev.ctrl_alt_no_shift_descs=CAlloc(26*sizeof(U8 *)); + keydev.ctrl_alt_shift_descs =CAlloc(26*sizeof(U8 *)); + keydev.ctrl_alt_in_irq_flags =0; MemSet(&keydev.put_key_root,0,sizeof(CKeyDevEntry)); QueInit(&keydev.put_key_root); KeyDevAdd(&KDInputFilterPutKey,&KDInputFilterPutS,0x40000000,FALSE); KeyDevAdd(&KDRawPutKey,&KDRawPutS,0x60000000,FALSE); - CtrlAltLetCBSet('C',&CtrlAltC,"Sys/Break Execution",TRUE); - CtrlAltLetCBSet('D',&CtrlAltD,"Sys/Enter Debugger",TRUE); - CtrlAltLetCBSet('E',&CtrlAltE,"Sys/Spawn New User Task"); - CtrlAltLetCBSet('F',&CtrlAltF,"Sys/VGA Flush",TRUE); - CtrlAltLetCBSet('M',&CtrlAltM,"Sys/Toggle Mute"); - CtrlAltLetCBSet('T',&CtrlAltT,"Sys/Switch Focus to Next Task",TRUE); - CtrlAltLetCBSet('X',&CtrlAltX,"Sys/Kill Focused Task",TRUE); + CtrlAltCBSet('C',&CtrlAltC,"Cmd /Break Execution",,TRUE); + CtrlAltCBSet('D',&CtrlAltD,"Cmd /Enter Debugger",,TRUE); + CtrlAltCBSet('E',&CtrlAltE,"Cmd /Spawn New User Task"); + CtrlAltCBSet('F',&CtrlAltF,"Cmd /VGA Flush",,TRUE); + CtrlAltCBSet('M',&CtrlAltM,"Cmd /Toggle Mute"); + CtrlAltCBSet('T',&CtrlAltT,"Cmd /Switch Focus to Next Task",,TRUE); + CtrlAltCBSet('X',&CtrlAltX,"Cmd /Kill Focused Task",,TRUE); } diff --git a/Kernel/MultiProc.CPP b/Kernel/MultiProc.CPP index bfdbbf6..f87039a 100644 --- a/Kernel/MultiProc.CPP +++ b/Kernel/MultiProc.CPP @@ -177,10 +177,10 @@ U0 MPWake(I64 target_cpu) if (!target_cpu) LBtr(&adam_task->task_flags,TASKf_AWAITING_MSG); MPInt(I_WAKE,target_cpu); - if (!target_cpu) - LBtr(&adam_task->task_flags,TASKf_AWAITING_MSG); if (Bt(&cpu_structs[target_cpu].cpu_flags,CPUf_SETH_SLEEP))//back to sleep? cpu_structs[target_cpu].seth_task->wake_jiffy=0; + if (!target_cpu) + LBtr(&adam_task->task_flags,TASKf_AWAITING_MSG); POPFD } } @@ -217,7 +217,7 @@ U0 APSethTask() TaskFinishOffDying; if (!LBts(&my_ctrl->flags,SVCRf_LOCKED)) { tempc=tempc1->next; - if (tempc==tempc1 || !SrvCmdRun(tempc,GetRFlags)) { + if (tempc==tempc1 || !SrvCmdRun(GetRFlags,tempc)) { LBtr(&my_ctrl->flags,SVCRf_LOCKED) ; if (my_ctrl->next_waiting==my_ctrl) { Bts(&Gs->cpu_flags,CPUf_SETH_SLEEP); @@ -396,13 +396,14 @@ U0 BSPInit() } } -U0 MPCrash() +interrupt U0 IntMPCrash() {//Entering the debugger from another core causes an interrupt on core#0 //Which calls this routine. *LAPIC_EOI(U32 *)=0; mp_cnt=1; Raw(ON); text.raw_flags|=RWF_SHOW_DOLLAR; - "MP Crash CPU#%02X Task:%08X\n",dbg.mp_crash->cpu_num,dbg.mp_crash->task; + "MP Crash CPU#%02X Task:%08X\n" + "RIP:%P\n",dbg.mp_crash->cpu_num,dbg.mp_crash->task,dbg.mp_crash->rip; Dbg(dbg.mp_crash->msg,dbg.mp_crash->msg_num); } diff --git a/Kernel/PSect.CPP b/Kernel/PSect.CPP index e246e30..82c0bff 100644 --- a/Kernel/PSect.CPP +++ b/Kernel/PSect.CPP @@ -8,7 +8,7 @@ I64 HasLower(U8 *src) } CHash *PSectFind(U8 *addr,I64 *_offset) -{//See $LK,"::/Kernel/KHashA.CPP",A="FL:::/Kernel/KHashA.CPP,1"$. +{//See $LK,"Hash",A="HI:Hash"$. CHash *result=NULL; CHashExport *tempex; Bool has_lower=FALSE; @@ -61,25 +61,22 @@ U0 PSectCacheAdd(CHash *temps,U8 *addr) { I64 i; CDbgInfo *dbg_info; - Bool old_preempt; CPSectCache *temppc; if (temps && temps->type&HTT_FUN && (dbg_info=temps(CHashFun *)->dbg_info)) { - old_preempt=Preempt; - lock {i=dbg.psect_cache_index++;} - temppc=&dbg.psect_cache[i&(PSECT_CACHE_SIZE-1)]; - temppc->base=dbg_info->body[0]; - if (addrbase) - temppc->base=addr; - temppc->limit=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]; - if (addr>=temppc->limit) - temppc->limit=addr+1; - i=MinI64(StrLen(temps->str),PSECT_CACHE_STR_LEN-1); - MemCpy(temppc->str,temps->str,i); - temppc->str[i]=0; - temppc->time_stamp=tS; - Preempt(old_preempt); -} + lock i=dbg.psect_cache_index++; + temppc=&dbg.psect_cache[i&(PSECT_CACHE_SIZE-1)]; + temppc->base=dbg_info->body[0]; + if (addrbase) + temppc->base=addr; + temppc->limit=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]; + if (addr>=temppc->limit) + temppc->limit=addr+1; + i=MinI64(StrLen(temps->str),PSECT_CACHE_STR_LEN-1); + MemCpy(temppc->str,temps->str,i); + temppc->str[i]=0; + temppc->time_stamp=tS; + } } U8 *PSectCacheFind(U8 *addr,I64 *_offset) diff --git a/Kernel/QSort.CPP b/Kernel/QSort.CPP index 3c9356d..fd0e347 100644 --- a/Kernel/QSort.CPP +++ b/Kernel/QSort.CPP @@ -2,8 +2,8 @@ U0 QSortI64(I64 *base,I64 num, I64 (*fp_compare)(I64 e1,I64 e2)) {/*Quick Sort for width==8. fp_compare() passes by value instead of ref. -For assending strings: return StrCmp(e1,e2); -For assending ints : return e1-e2; +For ascending strings: return StrCmp(e1,e2); +For ascending ints : return e1-e2; Maybe, look at $LK,"::/Demo/MultiCore/RadixSort.CPP"$. */ @@ -85,8 +85,8 @@ U0 QSort2b(U8 *base,I64 num, I64 width, U0 QSort(U8 *base,I64 num, I64 width, I64 (*fp_compare)(U8 *e1,U8 *e2)) {/*Quick Sort: fp_compare() passes by ref. -For assending strings: return StrCmp(*e1,*e2); -For assending ints : return *e1-*e2; +For ascending strings: return StrCmp(*e1,*e2); +For ascending ints : return *e1-*e2; Don't return e1-e2 if numbers can overflow, return -1,0 or 1. Maybe, look at $LK,"::/Demo/MultiCore/RadixSort.CPP"$. diff --git a/Kernel/Sched.CPP b/Kernel/Sched.CPP index bd5314d..b96ed1f 100644 --- a/Kernel/Sched.CPP +++ b/Kernel/Sched.CPP @@ -1,6 +1,4 @@ -/*See $LK,"TempleOS MultiTasking",A="FI:::/Doc/MultiTasking.TXT"$. - -On each core, tasks are linked in a +/*On each core, tasks are linked in a circular doubly-linked list queue with the Seth task as the head. On core#0, the queue order represents the front-to-back @@ -18,12 +16,8 @@ Tasks can be switched in half a microsecond. The scheduler checks if a task is waiting for a certain time or waiting on a message and skips if not ready. -A task runs until it voluntarily yields -ctrl with a call to $LK,"Yield",A="MN:Yield"$() or gets -preempted by the fixed 1kHz $LK,"JIFFY_FREQ",A="MN:JIFFY_FREQ"$ -timer interrupt. See $LK,"SYS_TIMER_HANDLER",A="MN:SYS_TIMER_HANDLER"$. -Tasks can ask not to be preempted with -$LK,"Preempt",A="MN:Preempt"$(ON/OFF). Tasks waiting on I/O +A task runs until it voluntarily yields ctrl +with a call to $LK,"Yield",A="MN:Yield"$(). Tasks waiting on I/O often loop, checking for a status and $LK,"Yield",A="MN:Yield"$ing. This does not really degrade performance, but pegs the CPU Load. @@ -155,11 +149,11 @@ _TASK_END_NOW:: CALL SET_FS_BASE JMP I8 RESTORE_RSI_TASK_WITH_KEY_CHECK -RESTORE_RSI_NO_PREEMPT_TASK: +RESTORE_RSI_TASK: BT U32 [SYS_CTRL_ALT_FLAGS],SYSf_CTRL_ALT_DEL JC I32 HANDLE_SWAP_KEY_EVENT XOR RAX,RAX - CMP U64 GS:CCPU.idle_task[RAX],RSI //IDLE TASK HAS PREEMPT-OFF + CMP U64 GS:CCPU.idle_task[RAX],RSI JNE RESTORE_RSI_TASK_NO_KEY_CHECK JMP I32 SWAP_IN_SETH_TASK_IF_READY @@ -193,8 +187,6 @@ _YIELD:: MOV U64 CTask.rip[RSI],RBX POP U64 CTask.rflags[RSI] MOV U64 CTask.rsp[RSI],RSP - -RESTORE_NEXT_RSI_TASK: MOV RSI,U64 CTask.next_task[RSI] RESTORE_RSI_TASK_WITH_KEY_CHECK: diff --git a/Kernel/KbdMouse/InputPointer.CPP b/Kernel/SerialDev/InputPointer.CPP similarity index 96% rename from Kernel/KbdMouse/InputPointer.CPP rename to Kernel/SerialDev/InputPointer.CPP index 79bf4ee..58c8a4f 100644 --- a/Kernel/KbdMouse/InputPointer.CPP +++ b/Kernel/SerialDev/InputPointer.CPP @@ -1,5 +1,5 @@ U0 GridInit() -{//Init input pointer grid struct. See $LK,"::/Demo/Graphics/Grid.CPP.Z"$. +{//Init input pointer grid struct. See $LK,"::/Demo/Graphics/Grid.CPP"$. ip_grid.x=ip_grid.y=ip_grid.z=8; ip_grid.x_offset=ip_grid.y_offset=ip_grid.z_offset=0; ip_grid.x_speed =ip_grid.y_speed =ip_grid.z_speed =1; @@ -41,8 +41,7 @@ U0 IPVarsUpdate(I64 x,I64 y,I64 z,Bool l,Bool r) } U0 IPSet(I64 x=MAX_I64,I64 y=MAX_I64,I64 z=MAX_I64,I64 l=MAX_I64,I64 r=MAX_I64) -{//Note: Generates a message. See $LK,"IPSet",A="FF:::/Demo/Games/Zing.CPP.Z,IPSet"$(). - Bool old_preempt=Preempt; +{//Note: Generates a message. See $LK,"IPSet",A="FF:::/Demo/Games/Zing.CPP,IPSet"$(). if (!(0<=xcatch_except=TRUE; - Preempt(old_preempt); } U0 KbdMouseCmdAck(U8 val) @@ -135,15 +133,15 @@ I64 Char2ScanCode(I64 ch,I64 sc_flags=0) U8 ScanCode2Char(I64 sc) {//Scan code to ASCII val. U8 *table=NORMAL_KEY_SCAN_DECODE_TABLE; - if (sc & SCF_E0_PREFIX) + if (sc&SCF_E0_PREFIX) return 0; - if (sc & SCF_CTRL) + if (sc&SCF_CTRL) table=CTRL_KEY_SCAN_DECODE_TABLE; - else if (sc & SCF_SHIFT) { - if (!(sc & SCF_CAPS)) + else if (sc&SCF_SHIFT) { + if (!(sc&SCF_CAPS)) table=SHIFT_KEY_SCAN_DECODE_TABLE; } else { - if (sc & SCF_CAPS) + if (sc&SCF_CAPS) table=SHIFT_KEY_SCAN_DECODE_TABLE; } sc&=0x7F; @@ -255,6 +253,8 @@ U8 *ScanCode2KeyName(I64 sc) CatPrint(buf,"ALT "); if (sc&SCF_SHIFT) CatPrint(buf,"SHIFT "); + if (sc&SCF_NO_SHIFT) + CatPrint(buf," "); if (ch=ScanCode2Char(sc&255)) { st=Char2KeyName(ch,FALSE); StrCpy(buf+StrLen(buf),st); @@ -297,7 +297,7 @@ U8 *ScanCode2KeyName(I64 sc) U0 KbdBuildSC(U8 raw_byte,Bool in_irq,U8 *_last_raw_byte,I64 *_last_sc) { - I64 ch,sc_flags,sc,sc2,sc_raw; + I64 ch,sc_flags,sc,sc2,sc_raw,new_key_f; Bool set_LEDs=FALSE; if (raw_byte==0xE0) { *_last_raw_byte=raw_byte; @@ -319,6 +319,7 @@ U0 KbdBuildSC(U8 raw_byte,Bool in_irq,U8 *_last_raw_byte,I64 *_last_sc) sc.u8[0]=sc2; } + new_key_f=SCF_NEW_KEY; if (sc&SCF_KEY_UP) switch (sc&~SCF_KEY_UP) { case SC_SHIFT: sc_flags&=~SCF_SHIFT; break; @@ -332,18 +333,28 @@ U0 KbdBuildSC(U8 raw_byte,Bool in_irq,U8 *_last_raw_byte,I64 *_last_sc) } else switch (sc) { - case SC_SHIFT: sc_flags|=SCF_SHIFT; break; - case SC_CTRL: sc_flags|=SCF_CTRL; break; - case SC_ALT: sc_flags|=SCF_ALT; break; - case SC_DELETE: sc_flags|=SCF_DELETE; break; - case SC_INS: sc_flags|=SCF_INS; break; + case SC_SHIFT: + if (Bts(&sc_flags,SCf_SHIFT)) new_key_f=0; + break; + case SC_CTRL: + if (Bts(&sc_flags,SCf_CTRL)) new_key_f=0; + break; + case SC_ALT: + if (Bts(&sc_flags,SCf_ALT)) new_key_f=0; + break; + case SC_DELETE: + sc_flags|=SCF_DELETE; + break; + case SC_INS: + sc_flags|=SCF_INS; + break; } - sc_flags|=SCF_NEW_KEY; + sc_flags|=new_key_f; sc=sc_flags|sc|(sc_flags|sc_raw)<<32; if (sc_flags & SCF_CTRL && sc_flags & SCF_ALT) { - if (!(sc & SCF_KEY_UP)) { - if (sc&255==SC_DELETE) + if (!(sc&SCF_KEY_UP)) { + if (sc&255==SC_DELETE && !(sc_flags & SCF_SHIFT)) CtrlAltDel(sc); else { if (sc&255==SC_ESC) @@ -354,11 +365,13 @@ U0 KbdBuildSC(U8 raw_byte,Bool in_irq,U8 *_last_raw_byte,I64 *_last_sc) ch=ScanCode2Char(sc&255); if ('a'<=ch<='z') { sc&=~(SCF_NEW_KEY|SCF_NEW_KEY<<32); + ch-='a'; kbd.last_down_scan_code=sc; - if (keydev.fp_ctrl_alt_let_cbs[ch-'a'] && - Bt(&keydev.ctrl_alt_let_in_irq_flags,ch-'a')==in_irq) { - (*keydev.fp_ctrl_alt_let_cbs[ch-'a'])(sc); - } + if (keydev.fp_ctrl_alt_cbs[ch] && + Bt(&keydev.ctrl_alt_in_irq_flags,ch)==in_irq && + (!(sc_flags & SCF_SHIFT)&&keydev.ctrl_alt_no_shift_descs[ch]) || + sc_flags & SCF_SHIFT && keydev.ctrl_alt_shift_descs[ch]) + (*keydev.fp_ctrl_alt_cbs[ch])(sc); } } } @@ -391,7 +404,7 @@ U0 KbdPktRead() } } -interrupt U0 KbdIntHandler() +interrupt U0 IRQKbd() { CLD OutU8(0x20,0x20); @@ -400,7 +413,7 @@ interrupt U0 KbdIntHandler() kbd.rst=TRUE; return; } - keydev.ctrl_alt_let_ret_addr=GetRBP()(I64)+8; + keydev.ctrl_alt_ret_addr=GetRBP()(I64)+8; KbdPktRead; } @@ -417,7 +430,7 @@ U0 KbdInit() KbdCmdFlush; Fs->catch_except=TRUE; } - IntEntrySet(0x21,&KbdIntHandler); + IntEntrySet(0x21,&IRQKbd); OutU8(0x21,InU8(0x21)&~2); } @@ -432,6 +445,7 @@ U0 KbdHandler() KbdBuildSC(raw_byte,FALSE,&last_raw_byte,&kbd.scan_code); } if (Btr(&kbd.scan_code,SCf_NEW_KEY)) { + kbd.new_key_timestamp=kbd.timestamp; Btr(&kbd.scan_code,32+SCf_NEW_KEY); FifoI64Ins(kbd.scan_code_fifo,kbd.scan_code); kbd.cnt++; @@ -470,5 +484,5 @@ I64 KbdMouseEvtTime() if (mouse.timestamp>kbd.timestamp) return mouse.timestamp; else - return kbd.timestamp; + return kbd.new_key_timestamp; } diff --git a/Kernel/SerialDev/MakeSerialDev.CPP b/Kernel/SerialDev/MakeSerialDev.CPP new file mode 100644 index 0000000..c465c45 --- /dev/null +++ b/Kernel/SerialDev/MakeSerialDev.CPP @@ -0,0 +1,6 @@ +#exe {Cd(__DIR__);}; +#include "InputPointer" +#include "Keyboard" +#include "Mouse" +#include "Message" +#exe {Cd("..");}; diff --git a/Kernel/KbdMouse/Message.CPP b/Kernel/SerialDev/Message.CPP similarity index 95% rename from Kernel/KbdMouse/Message.CPP rename to Kernel/SerialDev/Message.CPP index 5b8deb3..1bc793c 100644 --- a/Kernel/KbdMouse/Message.CPP +++ b/Kernel/SerialDev/Message.CPP @@ -8,8 +8,8 @@ U0 InputFilterTask() old_filter=LBts(&Fs->last_input_filter_task->task_flags,TASKf_FILTER_INPUT); LBEqu(&Fs->task_flags,TASKf_FILTER_INPUT,old_filter); while (TRUE) { - SrvCmdsHandler; CLI + SrvCmdsHandler(old_flags); tempc1=&Fs->srv_ctrl.next_waiting; tempc=tempc1->next; if (tempc==tempc1) @@ -18,12 +18,10 @@ U0 InputFilterTask() if (tempc->cmd_code==SVCT_TEXT_INPUT) { QueRem(tempc); SetRFlags(old_flags); - Preempt(ON); try ExePrint("%s",tempc->aux_str); catch Fs->catch_except=TRUE; - Preempt; SrvCmdDel(tempc); } else break; @@ -49,9 +47,9 @@ Note: This delivers messages from parent down to pop-up. old_flags=GetRFlags; tempc1=&task->srv_ctrl.next_waiting; while (TRUE) { - if (task==Fs) - SrvCmdsHandler; CLI + if (task==Fs) + SrvCmdsHandler(old_flags); tempc=tempc1->next; if (tempc==tempc1) break; @@ -66,7 +64,7 @@ Note: This delivers messages from parent down to pop-up. *_a2=tempc->aux2; SrvCmdDel(tempc); if ((result!=MSG_KEY_DOWN || !(tempc->aux2&SCF_KEY_DESC) || - Bt(&mask,MSGF_ALLOW_KEY_DESC)) && Bt(&mask,result)) + !Bt(&task->win_inhibit,WIf_SELF_KEY_DESC)) && Bt(&mask,result)) goto sm_done; } } @@ -99,7 +97,6 @@ I64 GetMsg(I64 *_a1=NULL,I64 *_a2=NULL,I64 mask=~1,CTask *task=NULL) //Throw-out all messages not in mask. //Returns $LK,"msg_code",A="MN:MSG_CMD"$. See $LK,"::/Demo/MsgLoop.CPP"$. I64 result; - Bool old_preempt=Preempt; if (!task) task=Fs; LBtr(&task->task_flags,TASKf_IDLE); while (!(result=ScanMsg(_a1,_a2,mask,task))) { @@ -107,7 +104,6 @@ I64 GetMsg(I64 *_a1=NULL,I64 *_a2=NULL,I64 mask=~1,CTask *task=NULL) Yield; } LBtr(&task->task_flags,TASKf_IDLE); - Preempt(old_preempt); return result; } @@ -148,7 +144,7 @@ I64 GetKey(I64 *_scan_code=NULL,Bool echo=FALSE,Bool raw_cursor=FALSE) //Sets $LK,"scan_code",A="FI:::/Doc/CharOverview.TXT"$. //$LK,"ScanKey",A="MN:ScanKey"$() throws away other message types. I64 ch,sc; - Bool old_preempt=Preempt,cursor_on=FALSE; + Bool cursor_on=FALSE; while (!ScanKey(&ch,&sc,FALSE)) { if (IsRaw && raw_cursor) { if (!cursor_on && ToI64(GetTSC*5/cnts.time_stamp_freq)&1) { @@ -169,8 +165,6 @@ I64 GetKey(I64 *_scan_code=NULL,Bool echo=FALSE,Bool raw_cursor=FALSE) KbdMouseHandler(TRUE,FALSE); KbdMsgsQue; POPFD - if (old_preempt && GetRFlags&1<task_flags,TASKf_AWAITING_MSG); Yield; @@ -179,7 +173,6 @@ I64 GetKey(I64 *_scan_code=NULL,Bool echo=FALSE,Bool raw_cursor=FALSE) } if (IsRaw && raw_cursor && cursor_on) '' CH_BACKSPACE; - Preempt(old_preempt); if (echo) PutKey(ch,sc); if (_scan_code) *_scan_code=sc; diff --git a/Kernel/KbdMouse/Mouse.CPP b/Kernel/SerialDev/Mouse.CPP similarity index 97% rename from Kernel/KbdMouse/Mouse.CPP rename to Kernel/SerialDev/Mouse.CPP index b822d5d..6dd2a10 100644 --- a/Kernel/KbdMouse/Mouse.CPP +++ b/Kernel/SerialDev/Mouse.CPP @@ -10,7 +10,7 @@ U0 MousePktRead() FifoU8Ins(mouse.fifo2,j); } -interrupt U0 MouseIntHandler() +interrupt U0 IRQMouse() { CLD OutU8(0xA0,0x20); @@ -239,12 +239,10 @@ Bool MouseDriverInstall(I64 dummy=0) //can be spawned { nounusedwarn dummy; I64 i; - Bool old_preempt=IsPreempt; - Preempt(ON); mouse.install_in_progress=TRUE; OutU8(0xA1,InU8(0xA1)|0x10); mouse.installed=mouse.irqs_working=FALSE; - IntEntrySet(0x2C,&MouseIntHandler); + IntEntrySet(0x2C,&IRQMouse); for(i=0;i<5;i++) mouse.buttons[i]=0; if (i=MouseRst) @@ -253,7 +251,6 @@ Bool MouseDriverInstall(I64 dummy=0) //can be spawned mouse.install_attempts++; mouse.installed=mouse.evt=i; mouse.install_in_progress=FALSE; - Preempt(old_preempt); return mouse.installed; } diff --git a/Kernel/SrvCmd.CPP b/Kernel/SrvCmd.CPP index 91ed782..2b2f468 100644 --- a/Kernel/SrvCmd.CPP +++ b/Kernel/SrvCmd.CPP @@ -74,13 +74,10 @@ CSrvCmd *TaskExe(CTask *srv,CTask *master,U8 *data,I64 flags) CSrvCmd *TaskText(CTask *srv,CTask *master,U8 *data,I64 flags) {//Post StdIn text to servant task. Tell who the master task is. CSrvCmd *result; - Bool old_preempt=Preempt; CTask *task; if (!data || !TaskValidate(srv) || master && !TaskValidate(master) || - srv->popup_task && !Bt(&srv->task_flags,TASKf_FILTER_INPUT)) { - Preempt(old_preempt); + srv->popup_task && !Bt(&srv->task_flags,TASKf_FILTER_INPUT)) return NULL; - } result=ACAlloc(sizeof(CSrvCmd)); result->master_task=master; //in case somebody cares result->cmd_code=SVCT_TEXT_INPUT; @@ -115,7 +112,6 @@ CSrvCmd *TaskText(CTask *srv,CTask *master,U8 *data,I64 flags) LBtr(&task->srv_ctrl.flags,SVCRf_LOCKED); } POPFD - Preempt(old_preempt); return result; } @@ -267,12 +263,11 @@ U0 Msg(I64 msg_code,I64 a1,I64 a2,I64 flags=0) #define SCR_CONT 1 #define SCR_EXIT 2 -I64 SrvCmdRun(CSrvCmd *tempc,I64 old_flags) +I64 SrvCmdRun(I64 run_flags,CSrvCmd *tempc) { CSrvCtrl *ctrl=tempc->ctrl; CTask *master; - Bool old_preempt=IsPreempt; - I64 result,flags=tempc->flags; + I64 result,flags=tempc->flags,old_flags=GetRFlags; if (Bt(&flags,SVCf_EXIT_ON_COMPLETE)) result=SCR_EXIT; else @@ -295,7 +290,7 @@ I64 SrvCmdRun(CSrvCmd *tempc,I64 old_flags) LBts(&tempc->flags,SVCf_DISPATCHED); tempc->servant_cpu_num=Gs->num; LBtr(&ctrl->flags,SVCRf_LOCKED); - SetRFlags(old_flags); + SetRFlags(run_flags); LBtr(&Fs->task_flags,TASKf_IDLE); try tempc->result=(*tempc->addr)(tempc->fun_arg); @@ -308,7 +303,7 @@ I64 SrvCmdRun(CSrvCmd *tempc,I64 old_flags) LBts(&tempc->flags,SVCf_DISPATCHED); tempc->servant_cpu_num=Gs->num; LBtr(&ctrl->flags,SVCRf_LOCKED); - SetRFlags(old_flags); + SetRFlags(run_flags); LBtr(&Fs->task_flags,TASKf_IDLE); try tempc->result=ExePrint("%s",tempc->aux_str); @@ -348,11 +343,10 @@ I64 SrvCmdRun(CSrvCmd *tempc,I64 old_flags) SetRFlags(old_flags); } } - Preempt(old_preempt); return result; } -I64 SrvCmdsHandler(CTask *task=NULL) +I64 SrvCmdsHandler(I64 run_flags,CTask *task=NULL) {//Handle all waiting cmds and return. I64 cnt=0,old_flags=GetRFlags; CSrvCmd *tempc,*tempc1; @@ -366,7 +360,7 @@ I64 SrvCmdsHandler(CTask *task=NULL) if (tempc==tempc1) goto sch_done; else - switch (SrvCmdRun(tempc,old_flags)) { + switch (SrvCmdRun(run_flags,tempc)) { case SCR_CONT: cnt++; break; @@ -386,12 +380,10 @@ I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL) {//Execute code text in PopUp win task. I64 result; CSrvCmd *tempc; - Bool old_preempt=Preempt; CTask *task=Spawn(&SrvCmdLine,NULL,"Servant",,parent); if (!parent) { TaskExe(task,parent,buf,1<popup_task=task; @@ -401,7 +393,6 @@ I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL) Fs->popup_task=NULL; Kill(task); if (_pu_task) *_pu_task=NULL; - Preempt(old_preempt); return result; } } @@ -419,16 +410,14 @@ I64 Adam(U8 *fmt,...) {//Sends text to the adam task which gets compiled and run. I64 result; U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); - Bool old_preempt=Preempt; CSrvCmd *tempc; if (Fs==adam_task) { tempc=TaskExe(adam_task,Fs,buf,0); - SrvCmdsHandler; + SrvCmdsHandler(GetRFlags); } else { TaskWait(adam_task); tempc=TaskExe(adam_task,Fs,buf,1<stk_base=(BYTE *)malloc(ARC_MAX_TABLE_ENTRY+1); + c->stk_base=(BYTE *)malloc(1<stk_ptr=c->stk_base; } if (compression_type==CT_7_BIT) @@ -235,62 +234,78 @@ long FSize(FILE *f) return result; } -void Cvt(char *name,BOOL cvt_ascii) +BOOL Cvt(char *in_name,char *out_name,BOOL cvt_ascii) { DWORD out_size,i,j,in_size; CArcCompress *arc; BYTE *out_buf; FILE *io_file; - - if (io_file=fopen(name,"rb")) { + BOOL okay=FALSE; + if (io_file=fopen(in_name,"rb")) { in_size=FSize(io_file); arc=(CArcCompress *)malloc(in_size); fread(arc,1,in_size,io_file); out_size=arc->expanded_size; - printf("%-45s %d-->%d\r\n",name,(DWORD) in_size,out_size); + printf("%-45s %d-->%d\r\n",in_name,(DWORD) in_size,out_size); fclose(io_file); - if (out_buf=ExpandBuf(arc)) { - if (cvt_ascii) { - j=0; - for (i=0;icompressed_size==in_size && + arc->compression_type && arc->compression_type<=3) { + if (out_buf=ExpandBuf(arc)) { + if (cvt_ascii) { + j=0; + for (i=0;ii && !strcmp(argv[i],"-ascii")) { + cvt_ascii=TRUE; + i++; + } else + cvt_ascii=FALSE; + if (argc>i) { + in_name=argv[i++]; + if (argc>i) + out_name=argv[i++]; + else { + strcpy(buf,in_name); + l=strlen(buf); + if (l>2 && buf[l-1]=='Z' && buf[l-2]=='.') { + buf[l-2]=0; + del_in=TRUE; + } + out_name=buf; + } + if (Cvt(in_name,out_name,cvt_ascii)) { + if (del_in) { + sprintf(buf,"rm %s",in_name); + system(buf); + } } else - okay=FALSE; - } if (argc==2) { - name=argv[1]; - okay=TRUE; - } - - if (okay) - Cvt(name,cvt_ascii); - else - puts("TOSZ [-ascii] filename\r\n\r\n" + printf("Fail: %s %s\r\n",in_name,out_name); + } else + puts("TOSZ [-ascii] in_name [out_name]\r\n\r\n" "TOSZ expands a single TempleOS file. The -ascii flag will convert " "nonstandard TempleOS ASCII characters to regular ASCII.\r\n"); - return EXIT_SUCCESS; } diff --git a/MakeHome.CPP b/MakeHome.CPP new file mode 100644 index 0000000..c47e546 --- /dev/null +++ b/MakeHome.CPP @@ -0,0 +1,10 @@ +Cd(__DIR__);; + +//If these are not present in /Home, it uses the version in the root dir. You +//can make your own, modified, version of these files in your /Home directory. +#include "::/Home/HomeLocalize" +#include "::/Home/HomePkgs" +#include "::/Home/HomeKeyPlugIns" +#include "::/Home/HomeWrappers" +#include "::/Home/HomeSys" +Cd("..");; diff --git a/Misc/MakeDistro.CPP b/Misc/DoDistro.CPP similarity index 83% rename from Misc/MakeDistro.CPP rename to Misc/DoDistro.CPP index 484a0ca..7ddacf4 100644 --- a/Misc/MakeDistro.CPP +++ b/Misc/DoDistro.CPP @@ -1,6 +1,6 @@ //Make Your own Distro by #include-ing this file. -#define STD_DISTRO_CDROM_CFG "Tb1\nScale2Mem(2048,0x40000)\nt3 \n\n\n\n" +#define STD_DISTRO_DVD_CFG "Tb1\nScale2Mem(2048,0x40000)\nt3 \n\n\n\n" U0 MakeMyISO(U8 *out_iso_filename) {//Does everything with current drive. @@ -9,8 +9,10 @@ U0 MakeMyISO(U8 *out_iso_filename) return; } DelTree("/Distro"); + Del(out_iso_filename); + MkDir("/Distro"); - Auto(STD_DISTRO_CDROM_CFG); + Auto(STD_DISTRO_DVD_CFG); MakeOSDrvBootInstall(,'T'); Copy("/*","/Distro"); @@ -32,7 +34,10 @@ U0 MakeMyISO(U8 *out_iso_filename) MkDir("/Distro/Temp"); MkDir("/Distro/Temp/ScreenShots"); ISOFileCreate(out_iso_filename,"/Distro/*",,"/Distro" BOOT_DIR_KERNEL_BIN_C); -//CDImageWrite('T',out_iso_filename,MT_CD); //Uncmt to burn CD-ROM or (MT_DVD) + + //If CD-ROM use MT_CD instead of MT_DVD. + //DVDImageWrite('T',out_iso_filename,MT_DVD); //Uncomment to burn. + //DelTree("/Distro"); } diff --git a/Misc/OSInstall.CPP b/Misc/OSInstall.CPP index c4d008f..2d0faed 100644 --- a/Misc/OSInstall.CPP +++ b/Misc/OSInstall.CPP @@ -8,12 +8,12 @@ Bool VMPrtDsk(CTask *task,CATARep *ata_drv) return FALSE; } -U0 VMInstallBoot(CTask *task,U8 cd_drv,U8 drv, +U0 VMInstallBoot(CTask *task,U8 dvd_drv,U8 drv, CATARep *ata_drv,CATARep *atapi_drv) { U8 *st1,*st2; - st1=MStrPrint("%C:/",cd_drv); + st1=MStrPrint("%C:/",dvd_drv); st2=MStrPrint("%C:/",drv); CopyTree(st1,st2); Free(st1); @@ -21,7 +21,8 @@ U0 VMInstallBoot(CTask *task,U8 cd_drv,U8 drv, st1=MStrPrint("%C:/Home",drv); MkDir(st1); - Copy("::/Misc/MakeDistro.CPP.Z",st1); + Copy("::/Misc/DoDistro.CPP.Z",st1); + Copy("::/MakeHome.CPP.Z",st1); Free(st1); XTalkWait(task, @@ -39,7 +40,7 @@ U0 VMInstallBoot(CTask *task,U8 cd_drv,U8 drv, "\n"); //Options } -U0 VMInstallWizard() +U0 VMInstallWiz() { CATARep *root=NULL,*ata_drv=NULL,*atapi_drv=NULL; CTask *task; @@ -54,10 +55,10 @@ U0 VMInstallWizard() WinToTop(Fs); ATARep(FALSE,TRUE,&root); - ATAIDDrvs(root,dsk.boot_drv_let,&ata_drv,&atapi_drv); + ATAIDDrvs(root,blkdev.boot_drv_let,&ata_drv,&atapi_drv); if (VMPrtDsk(task,ata_drv)) { - VMInstallBoot(task,dsk.boot_drv_let,'C',ata_drv,atapi_drv); - VMInstallBoot(task,dsk.boot_drv_let,'D',ata_drv,atapi_drv); + VMInstallBoot(task,blkdev.boot_drv_let,'C',ata_drv,atapi_drv); + VMInstallBoot(task,blkdev.boot_drv_let,'D',ata_drv,atapi_drv); MasterBootIntall('C'); } LinkedLstDel(root); @@ -66,7 +67,7 @@ U0 VMInstallWizard() Kill(task); } -U0 RegularInstallWizard() +U0 RegularInstallWiz() { I64 unit; U8 *base0,*base1,*ms,*dst,*st1,*st2,*new_home_str; @@ -125,7 +126,7 @@ U0 RegularInstallWizard() } '\n'; - st1=MStrPrint("%C:/",dsk.boot_drv_let); + st1=MStrPrint("%C:/",blkdev.boot_drv_let); st2=MStrPrint("%C:/",*dst); "$$RED$$Format %C Partition?$$FG$$\n",*dst; @@ -152,7 +153,8 @@ U0 RegularInstallWizard() new_home_str=MStrPrint("%C:/Home",*dst); MkDir(new_home_str); - Copy("::/Misc/MakeDistro.CPP.Z",new_home_str); + Copy("::/Misc/DoDistro.CPP.Z",new_home_str); + Copy("::/MakeHome.CPP.Z",new_home_str); XTalkWait(task, "MakeOSDrvBootInstall('%C');\n" "\nB1\n0x20000\n" @@ -203,7 +205,7 @@ U0 DoInstall() DocBottom; if (vm_install) { - VMInstallWizard(); + VMInstallWiz(); pmt_reboot=TRUE; } else { "\n\nThis wizard works if you have a partition ready. " @@ -211,7 +213,7 @@ U0 DoInstall() "with more options if you do it by hand, not using this wizard.\n\n" "Continue Install Wizard "; if (pmt_reboot=YorN) - RegularInstallWizard(); + RegularInstallWiz(); } if (pmt_reboot) { "Reboot Now "; diff --git a/Misc/OSTestSuite.CPP b/Misc/OSTestSuite.CPP index c9dade9..384e7e8 100644 --- a/Misc/OSTestSuite.CPP +++ b/Misc/OSTestSuite.CPP @@ -452,8 +452,11 @@ U0 DoBomberGolf() PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_RIGHT); Sleep(100); } + PostMsgWait(task,MSG_KEY_DOWN_UP,CH_SPACE,0); for (i=0;i<7;i++) { - PostMsgWait(task,MSG_KEY_DOWN_UP,CH_SPACE,0); + PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP); + PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_LEFT); + PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_LEFT); Sleep(200); } PostMsgWait(task,MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0); @@ -484,7 +487,9 @@ U0 DoVaroom() I64 i; CTask *task=User; XTalkWait(task,"#include \"::/Demo/Games/Varoom\";\n"); - for (i=0;i<15;i++) { + for (i=0;i<10;i++) { + PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP); + Sleep(50); PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP); Sleep(50); PostMsgWait(task,MSG_KEY_DOWN_UP,0,SC_CURSOR_UP); @@ -1063,7 +1068,7 @@ U0 DoBugFlapper() { I64 i; CTask *task=User; - XTalk(task,"#include \"::/Demo/Games/BugBird\";\n"); + XTalk(task,"#include \"::/Demo/Games/FlapBat\";\n"); while (!TaskValidate(task->popup_task)) Yield; TaskWait(task->popup_task); diff --git a/Misc/Tour/Tour.AUT b/Misc/Tour/Tour.AUT index d6464c3..35976bd 100644 --- a/Misc/Tour/Tour.AUT +++ b/Misc/Tour/Tour.AUT @@ -74,17 +74,18 @@ public I64 PopUpTourPart() I64 i; CDoc *doc=DocNew; DocPrint(doc,"$$PURPLE$$TempleOS Tours$$FG$$\n\n" - "$$CM+LX,4,4$$$$BT,\"Part 1: The basics\",LE=1$$" - "$$CM+LX,4,4$$$$BT,\"Part 2: Editing and running programs\",LE=2$$" - "$$CM+LX,4,4$$$$BT,\"Part 3: Adding macros to PersonalMenu\",LE=3$$" - "$$CM+LX,4,4$$$$BT,\"Part 4: Choose filename, choose dir\",LE=4$$" - "$$CM+LX,4,4$$$$BT,\"Part 5: AutoComplete\",LE=5$$" - "$$CM+LX,4,4$$$$BT,\"Part 6: Search (Find)\",LE=6$$" - "$$CM+LX,4,4$$$$BT,\"Part 7: TempleOS file masks\",LE=7$$" - "$$CM+LX,4,4$$$$BT,\"Part 8: Editor filter\",LE=8$$" - "$$CM+LX,4,4$$$$BT,\"Part 9: Debugging\",LE=9$$" - "$$CM+LX,4,4$$$$BT,\"Part 10: Wow!!\",LE=10$$" - "$$CM+LX,4,4$$$$BT,\"Part 11: Test Suite\",LE=11$$" + "$$CM+LX,4,4$$$$BT,\"Part 1: The help system\",LE=1$$" + "$$CM+LX,4,4$$$$BT,\"Part 2: The basics\",LE=2$$" + "$$CM+LX,4,4$$$$BT,\"Part 3: Editing and running programs\",LE=3$$" + "$$CM+LX,4,4$$$$BT,\"Part 4: Adding macros to PersonalMenu\",LE=4$$" + "$$CM+LX,4,4$$$$BT,\"Part 5: Choose filename, choose dir\",LE=5$$" + "$$CM+LX,4,4$$$$BT,\"Part 6: AutoComplete\",LE=6$$" + "$$CM+LX,4,4$$$$BT,\"Part 7: Search (Find)\",LE=7$$" + "$$CM+LX,4,4$$$$BT,\"Part 8: TempleOS file masks\",LE=8$$" + "$$CM+LX,4,4$$$$BT,\"Part 9: Editor filter\",LE=9$$" + "$$CM+LX,4,4$$$$BT,\"Part 10: Debugging\",LE=10$$" + "$$CM+LX,4,4$$$$BT,\"Part 11: Wow!!\",LE=11$$" + "$$CM+LX,4,4$$$$BT,\"Part 12: Test Suite\",LE=12$$" "$$CM+LX,4,4$$$$BT,\"Done\",LE=DOCM_CANCEL$$\n"); doc->flags|=DOCF_FORM; i=PopUpPrint("WinMax;DocMenu(0x%X,0);",doc); diff --git a/Misc/Tour/Tour1.AUT b/Misc/Tour/Tour1.AUT index 16dab0e..10b73cf 100644 --- a/Misc/Tour/Tour1.AUT +++ b/Misc/Tour/Tour1.AUT @@ -2,67 +2,63 @@ Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); "\n"; -TourPut( -"You are now at the command line.\n" -"\n" -"The syntax is like $$GREEN$$C/C++$$FG$$ except you don't need $$GREEN$$()$$FG$$ " -"if there are no args.\n" -"\n" -"Type \"$$GREEN$$Dir;$$FG$$\" and press $$GREEN$$$$FG$$.\n\n" -"You must remember the semicolon.\n"); -AFGetStr("Dir;\n"); +TourPut("Press $$GREEN$$$$FG$$ for the main help index.\n" + "\n" + "The $$GREEN$$$$FG$$ key works both in " + "the editor and at the command line.\n" + "\n" + "You can find the $LK+PU,"Demo Index",A="FI:::/Doc/DemoIndex.TXT"$ on the help index.\n"); +AFGetKey(SC_F1); TourPut( -"Press $$GREEN$$$$FG$$.\n\n" -"This will access your PersonalMenu. You can customize it. " -"It's like your START menu and desktop.\n"); +"Press $$GREEN$$$$FG$$ to abort and exit.\n"); +AFGetChar(CH_SHIFT_ESC); -AFGetChar(CH_CTRLM); -TourPut( -"You can also get to your PersonalMenu by clicking on the word " -"\"$$GREEN$$MENU$$FG$$\" in the title bar.\n",TRUE); +U0 RevealPopUpHelp(I64 scf) +{ + F64 t0; + U8 *st,*st2; + Bool old_key_desc; + do { + AutoComplete(ON); + st=ScanCode2KeyName(scf); + st2=MStrUtil(st,SUF_REM_TRAILING); + Free(st); + st=MStrPrint( + "If you have $$GREEN$$AutoComplete$$FG$$ on, you " + "can list the key commands. This works both " + "in the editor and at the command line.\n" + "\n" + "You can click the links to jump to source code.\n" + "\n" + "Press and hold the $$GREEN$$<%s>$$FG$$ key.\n" + "Hold it for more than 1.0 seconds.\n",st2); + Free(st2); + TourPut(st); + Free(st); -TourPut("Press $$GREEN$$$$FG$$ nine times.\n"); + old_key_desc=LBtr(&Fs->win_inhibit,WIf_SELF_KEY_DESC); + while (kbd.scan_code&(SCF_CTRL|SCF_ALT|SCF_SHIFT)!=scf) + Sleep(1); -//Puts the cursor at the top -Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); + t0=tS; + while (kbd.scan_code&(SCF_CTRL|SCF_ALT|SCF_SHIFT)==scf) { + ScanKey(,,TRUE); + if (1.0win_inhibit,WIf_SELF_KEY_DESC,old_key_desc); + Snd(0); + } while (tS-t0<1.0); +} -I64 i; -for (i=0;i<9;i++) - AFGetKey(SC_CURSOR_DOWN); - -TourPut( -"Keyboard commands are:\n\n" -"$$GREEN$$$$FG$$\t\tLeft-action\n" -"$$GREEN$$$$FG$$\t\tRight-action\n" -"$$GREEN$$$$FG$$\t\tSave and exit\n" -"$$GREEN$$$$FG$$\tAbort and exit\n",TRUE); - -TourPut( -"The cursor is now on top of a macro we wish to run.\n" -"\n" -"Press $$GREEN$$$$FG$$.\n"); -AFGetStr(" "); - -TourPut( -"The macro changed directories and did a $$GREEN$$Dir;$$FG$$ command. " -"The $$RED$$RED$$FG$$ filenames listed are file links. Left-clicking will " -"edit/view them. Right-clicking or pressing $$GREEN$$$$FG$$ when the " -"cursor is on top will bring-up a menu of options.\n\n" -"The $$LTBLUE$$BLUE$$FG$$ underline entries \"$$LTBLUE$$.$$FG$$\" " -"and \"$$LTBLUE$$..$$FG$$\"" -"are macros and will change directories.\n",TRUE); - -TourPut( -"Press $$GREEN$$$$FG$$ to toggle to plain text mode.\n\n" -"These are \"DolDoc\" commands."); -AFGetChar(CH_CTRLT); - -TourPut( -"The DolDoc widgets are bracketed with dollar sign characters.\n\n" -"\"LK\" stands \"link\".\n" -"\"MA\" stands for \"macro\".\n\n" -"Now, $$GREEN$$$$FG$$ to toggle back to regular mode.\n"); -AFGetChar(CH_CTRLT); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +RevealPopUpHelp(SCF_CTRL); +RevealPopUpHelp(SCF_CTRL|SCF_SHIFT); +RevealPopUpHelp(SCF_ALT); +RevealPopUpHelp(SCF_ALT|SCF_SHIFT); +RevealPopUpHelp(SCF_CTRL|SCF_ALT); +RevealPopUpHelp(SCF_CTRL|SCF_ALT|SCF_SHIFT); diff --git a/Misc/Tour/Tour2.AUT b/Misc/Tour/Tour2.AUT index e43e1dd..16dab0e 100644 --- a/Misc/Tour/Tour2.AUT +++ b/Misc/Tour/Tour2.AUT @@ -3,97 +3,66 @@ Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); "\n"; TourPut( -"Now, we're going to demonstrate how to work " -"with programs. We'll change to the " -"$$GREEN$$/Demo/Games$$FG$$ directory.\n\n" -"Note that directories are specified with " -"a forward slash, not a backslash. " -"Drives can be specified in a $$GREEN$$Cd()$$FG$$ command " -"and the boot drive is specified with \"$$GREEN$$::$$FG$$\".\n\n" -"$$GREEN$$$$FG$$ to complete the command.\n"); - -AFPrint(25,"Cd(\"::/Demo/Games\");Dir;"); -AFGetStr("\n"); +"You are now at the command line.\n" +"\n" +"The syntax is like $$GREEN$$C/C++$$FG$$ except you don't need $$GREEN$$()$$FG$$ " +"if there are no args.\n" +"\n" +"Type \"$$GREEN$$Dir;$$FG$$\" and press $$GREEN$$$$FG$$.\n\n" +"You must remember the semicolon.\n"); +AFGetStr("Dir;\n"); TourPut( -"Now, we're going to edit a file. Normally, " -"you'll probably left-click on a directory " -"listing to edit a file, but we're going to " -"type it on the command line.\n\n" -"$$GREEN$$$$FG$$ to complete the command.\n"); +"Press $$GREEN$$$$FG$$.\n\n" +"This will access your PersonalMenu. You can customize it. " +"It's like your START menu and desktop.\n"); -AFPrint(25,"Ed(\"CastleFrankenstein.CPP.Z\");"); -AFGetStr("\n"); -Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_UP|SCF_CTRL); - -Sleep(1000); -Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_DOWN|SCF_CTRL); +AFGetChar(CH_CTRLM); TourPut( -"This is a first-person-shooter.\n\n" -"There is no \"$$GREEN$$main()$$FG$$\" function in TempleOS " -"programs. Any program statements outside " -"functions get executed when you $$GREEN$$#include$$FG$$ " -"them at the command line.\n\n" -"The \"$$GREEN$$CastleFrankenstein;$$FG$$\" statement at the " -"bottom will run the program when we " -"$$GREEN$$#include$$FG$$ it.\n",TRUE); +"You can also get to your PersonalMenu by clicking on the word " +"\"$$GREEN$$MENU$$FG$$\" in the title bar.\n",TRUE); -TourPut("Press $$GREEN$$$$FG$$ to abort the editor.\n"); +TourPut("Press $$GREEN$$$$FG$$ nine times.\n"); -AFGetChar(CH_ESC,CH_SHIFT_ESC); +//Puts the cursor at the top +Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); + +I64 i; +for (i=0;i<9;i++) + AFGetKey(SC_CURSOR_DOWN); TourPut( -"Now, run the CastleFrankenstein.CPP.Z program. Press $$GREEN$$$$FG$$.\n"); - -AFPrint(25,"#include \"CastleFrankenstein\";"); -AFGetStr("\n"); -TourPut( -"Move around with cursor keys and press $$GREEN$$$$FG$$ when you " -"are done.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); +"Keyboard commands are:\n\n" +"$$GREEN$$$$FG$$\t\tLeft-action\n" +"$$GREEN$$$$FG$$\t\tRight-action\n" +"$$GREEN$$$$FG$$\t\tSave and exit\n" +"$$GREEN$$$$FG$$\tAbort and exit\n",TRUE); TourPut( -"The program is still in memory and we can start it again by typing " -"\"$$GREEN$$CastleFrankenstein;$$FG$$\".\n\n" -"Press $$GREEN$$$$FG$$ at the command line to run it again.\n"); - -AFPrint(25,"CastleFrankenstein;"); -AFGetStr("\n"); -TourPut( -"Move around with cursor keys and press $$GREEN$$$$FG$$ when you " -"are done.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); +"The cursor is now on top of a macro we wish to run.\n" +"\n" +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr(" "); TourPut( -"$$GREEN$$$$FG$$\tExtended ASCII.\n" -"$$GREEN$$$$FG$$\tBreak(interrupt) program.\n" -"$$GREEN$$$$FG$$\tSpawn new user terminal window.\n" -"$$GREEN$$$$FG$$\tMutes sound.\n" -"$$GREEN$$$$FG$$\tSwitch tasks.\n" -"$$GREEN$$$$FG$$\tKill task (window).\n",TRUE); - -AFPrint(50,"Ed(\"CastleFrankenstein.CPP.Z\");\n"); - -TourPut("Press $$GREEN$$$$FG$$ in the editor to run the file being edited.\n"); - -AFGetKey(SC_F5); -Sleep(1000); -CTask *task=sys_focus_task; +"The macro changed directories and did a $$GREEN$$Dir;$$FG$$ command. " +"The $$RED$$RED$$FG$$ filenames listed are file links. Left-clicking will " +"edit/view them. Right-clicking or pressing $$GREEN$$$$FG$$ when the " +"cursor is on top will bring-up a menu of options.\n\n" +"The $$LTBLUE$$BLUE$$FG$$ underline entries \"$$LTBLUE$$.$$FG$$\" " +"and \"$$LTBLUE$$..$$FG$$\"" +"are macros and will change directories.\n",TRUE); TourPut( -"Press $$GREEN$$$$FG$$ to abort the application. " -"Then, press $$GREEN$$$$FG$$ to kill the task.\n"); -WinToTop(task); -while (TaskValidate(task)) - Sleep(10); - -TourPut("Press $$GREEN$$$$FG$$ to abort the editor.\n"); - -AFUntilChar(CH_ESC,CH_SHIFT_ESC); +"Press $$GREEN$$$$FG$$ to toggle to plain text mode.\n\n" +"These are \"DolDoc\" commands."); +AFGetChar(CH_CTRLT); TourPut( -"Explore the $$RED$$$TX+L+PU+UL,"DemoIndex",A="FI:::/Doc/DemoIndex.TXT"$$$FG$$. " -"You'll find it on your menu. It's arranged by difficulty. " -"Hit $$GREEN$$$$FG$$ on a demo index listing " -"and $$GREEN$$$$FG$$ to run from the editor.\n",TRUE); - \ No newline at end of file +"The DolDoc widgets are bracketed with dollar sign characters.\n\n" +"\"LK\" stands \"link\".\n" +"\"MA\" stands for \"macro\".\n\n" +"Now, $$GREEN$$$$FG$$ to toggle back to regular mode.\n"); +AFGetChar(CH_CTRLT); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); + diff --git a/Misc/Tour/Tour3.AUT b/Misc/Tour/Tour3.AUT index 75a704e..e43e1dd 100644 --- a/Misc/Tour/Tour3.AUT +++ b/Misc/Tour/Tour3.AUT @@ -1,98 +1,99 @@ //Puts the cursor at the bottom. Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\nCd(\"::/Demo/Games\");Dir;\n"; +"\n"; TourPut( -"Now, we're going to add the CastleFrankenstein.CPP.Z program " -"to your PersonalMenu.\n\n" -"Press $$GREEN$$$$FG$$ to get to your PersonalMenu.\n"); -AFGetChar(CH_CTRLM); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); +"Now, we're going to demonstrate how to work " +"with programs. We'll change to the " +"$$GREEN$$/Demo/Games$$FG$$ directory.\n\n" +"Note that directories are specified with " +"a forward slash, not a backslash. " +"Drives can be specified in a $$GREEN$$Cd()$$FG$$ command " +"and the boot drive is specified with \"$$GREEN$$::$$FG$$\".\n\n" +"$$GREEN$$$$FG$$ to complete the command.\n"); + +AFPrint(25,"Cd(\"::/Demo/Games\");Dir;"); +AFGetStr("\n"); TourPut( -"Press $$GREEN$$$$FG$$ to invoke the text-widget resource editor.\n\n" -"(Press $$GREEN$$$$FG$$ invokes the graphic resource editor.)\n"); -AFGetChar(CH_CTRLL); +"Now, we're going to edit a file. Normally, " +"you'll probably left-click on a directory " +"listing to edit a file, but we're going to " +"type it on the command line.\n\n" +"$$GREEN$$$$FG$$ to complete the command.\n"); -Sleep(500); -WinToTop;//Kludge +AFPrint(25,"Ed(\"CastleFrankenstein.CPP.Z\");"); +AFGetStr("\n"); +Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_UP|SCF_CTRL); -TourPut("$$GREEN$$$$FG$$ until you reach \"Macro\".\n"); -I64 i; -for (i=0;i<6;i++) - AFGetKey(SC_CURSOR_DOWN); +Sleep(1000); +Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_DOWN|SCF_CTRL); +TourPut( +"This is a first-person-shooter.\n\n" +"There is no \"$$GREEN$$main()$$FG$$\" function in TempleOS " +"programs. Any program statements outside " +"functions get executed when you $$GREEN$$#include$$FG$$ " +"them at the command line.\n\n" +"The \"$$GREEN$$CastleFrankenstein;$$FG$$\" statement at the " +"bottom will run the program when we " +"$$GREEN$$#include$$FG$$ it.\n",TRUE); -TourPut("Press $$GREEN$$$$FG$$.\n"); -AFGetStr(" "); +TourPut("Press $$GREEN$$$$FG$$ to abort the editor.\n"); + +AFGetChar(CH_ESC,CH_SHIFT_ESC); TourPut( -"Now, we'll fill-in the visible tag of the macro. Then, " -"we'll fill-in the macro text.\n",TRUE); -AFPrint(,"Click Here"); +"Now, run the CastleFrankenstein.CPP.Z program. Press $$GREEN$$$$FG$$.\n"); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); -AFPrint(,"Cd(\"::/Demo/Games\");;#include \"CastleFrankenstein\";\\n"); - -TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); -AFGetChar(CH_ESC); - -TourPut( -"Press $$GREEN$$$$FG$$ to insert a line feed.\n" -"$$GREEN$$$$FG$$ does a page break.\n" -"$$GREEN$$$$FG$$ would execute the macro.\n"); -AFGetKey(SC_ENTER|SCF_CTRL|SCF_SHIFT); - -Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); -TourPut("Press $$GREEN$$$$FG$$ to test it.\n"); -AFGetStr(" "); +AFPrint(25,"#include \"CastleFrankenstein\";"); +AFGetStr("\n"); TourPut( "Move around with cursor keys and press $$GREEN$$$$FG$$ when you " "are done.\n"); AFUntilChar(CH_ESC,CH_SHIFT_ESC); TourPut( -"Now, we'll do a fancier macro that pops-up a new window which dies when " -"finished, returning mem to the system.\n",TRUE); -Msg(MSG_KEY_DOWN,CH_CTRLM,0x43200000432); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); -Msg(MSG_KEY_DOWN,CH_CTRLL,0x42600000426); -for (i=0;i<6;i++) - Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); -AFPrint(," Click here for Pop-up version"); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); -AFPrint(,"Cd(\"::/Demo/Games\");;#include \"CastleFrankenstein\";\\n"); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_LEFT|SCF_CTRL); - -TourPut( -"Press $$GREEN$$$$FG$$ until you reach the \"Pop-Up\" check-box.\n"); -for (i=0;i<2;i++) - AFGetKey(SC_CURSOR_DOWN); -TourPut( -"Press $$GREEN$$$$FG$$ to check the box.\n"); -AFGetStr(" "); - -TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); -AFGetChar(CH_ESC); - -TourPut("Press $$GREEN$$$$FG$$ to insert a line feed.\n"); -AFGetKey(SC_ENTER|SCF_CTRL|SCF_SHIFT); - -Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); -TourPut( -"Press $$GREEN$$$$FG$$ to test it.\n"); -AFGetStr(" "); - -Sleep(500); -WinToTop;//Kludge +"The program is still in memory and we can start it again by typing " +"\"$$GREEN$$CastleFrankenstein;$$FG$$\".\n\n" +"Press $$GREEN$$$$FG$$ at the command line to run it again.\n"); +AFPrint(25,"CastleFrankenstein;"); +AFGetStr("\n"); TourPut( "Move around with cursor keys and press $$GREEN$$$$FG$$ when you " "are done.\n"); AFUntilChar(CH_ESC,CH_SHIFT_ESC); TourPut( -"$$GREEN$$$$FG$$ to save your PersonalMenu file, if you wish. " -"Your PersonalMenu is special and does not save on $$GREEN$$$$FG$$.\n",TRUE); +"$$GREEN$$$$FG$$\tExtended ASCII.\n" +"$$GREEN$$$$FG$$\tBreak(interrupt) program.\n" +"$$GREEN$$$$FG$$\tSpawn new user terminal window.\n" +"$$GREEN$$$$FG$$\tMutes sound.\n" +"$$GREEN$$$$FG$$\tSwitch tasks.\n" +"$$GREEN$$$$FG$$\tKill task (window).\n",TRUE); -'' CH_SHIFT_ESC; //exit menu +AFPrint(50,"Ed(\"CastleFrankenstein.CPP.Z\");\n"); +TourPut("Press $$GREEN$$$$FG$$ in the editor to run the file being edited.\n"); + +AFGetKey(SC_F5); +Sleep(1000); +CTask *task=sys_focus_task; + +TourPut( +"Press $$GREEN$$$$FG$$ to abort the application. " +"Then, press $$GREEN$$$$FG$$ to kill the task.\n"); +WinToTop(task); +while (TaskValidate(task)) + Sleep(10); + +TourPut("Press $$GREEN$$$$FG$$ to abort the editor.\n"); + +AFUntilChar(CH_ESC,CH_SHIFT_ESC); + +TourPut( +"Explore the $$RED$$$TX+L+PU+UL,"DemoIndex",A="FI:::/Doc/DemoIndex.TXT"$$$FG$$. " +"You'll find it on your menu. It's arranged by difficulty. " +"Hit $$GREEN$$$$FG$$ on a demo index listing " +"and $$GREEN$$$$FG$$ to run from the editor.\n",TRUE); + \ No newline at end of file diff --git a/Misc/Tour/Tour4.AUT b/Misc/Tour/Tour4.AUT index 622b3ae..8134b76 100644 --- a/Misc/Tour/Tour4.AUT +++ b/Misc/Tour/Tour4.AUT @@ -1,34 +1,98 @@ -//This is an example of how you do documentation. - //Puts the cursor at the bottom. Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\nEd(\"::/Misc/Tour/Tour4.AUT.Z\");\n"; +"\nCd(\"::/Demo/Games\");Dir;\n"; + +TourPut( +"Now, we're going to add the CastleFrankenstein.CPP.Z program " +"to your PersonalMenu.\n\n" +"Press $$GREEN$$$$FG$$ to get to your PersonalMenu.\n"); +AFGetChar(CH_CTRLM); Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); -"//"; TourPut( -"Now, we'll add a link to a file using the $$GREEN$$$$FG$$ filename chooser.\n", -TRUE); +"Press $$GREEN$$$$FG$$ to invoke the insert text widgets wizard.\n\n" +"(Pressing $$GREEN$$$$FG$$ invokes the graphic sprite resource editor.)\n"); +AFGetChar(CH_CTRLL); -'' CH_CTRLL; -Sleep(2000); -'' CH_SPACE; -Sleep(1500); -'' CH_SPACE; -Sleep(1500); -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); -Sleep(1500); +Sleep(500); +WinToTop;//Kludge + +TourPut("$$GREEN$$$$FG$$ until you reach \"Macro\".\n"); +I64 i; +for (i=0;i<6;i++) + AFGetKey(SC_CURSOR_DOWN); + +TourPut("Press $$GREEN$$$$FG$$.\n"); +AFGetStr(" "); TourPut( -"Press $$GREEN$$$$FG$$ for the file chooser. Then, " -"pick a file and press $$GREEN$$$$FG$$."); -AFGetKey(SC_F4); -Sleep(5000); +"Now, we'll fill-in the visible tag of the macro. Then, " +"we'll fill-in the macro text.\n",TRUE); +AFPrint(,"Click Here"); + +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); +AFPrint(,"Cd(\"::/Demo/Games\");;#include \"CastleFrankenstein\";\\n"); + TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); AFGetChar(CH_ESC); -TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); -AFGetChar(CH_SHIFT_ESC); +TourPut( +"Press $$GREEN$$$$FG$$ to insert a line feed. " +"($$GREEN$$$$FG$$ does a page break. " +"$$GREEN$$$$FG$$ would execute the macro.)\n"); +AFGetKey(SC_ENTER|SCF_CTRL|SCF_SHIFT); + +Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); +TourPut("Press $$GREEN$$$$FG$$ to test it.\n"); +AFGetStr(" "); +TourPut( +"Move around with cursor keys and press $$GREEN$$$$FG$$ when you " +"are done.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); + +TourPut( +"Now, we'll do a fancier macro that pops-up a new window which dies when " +"finished, returning mem to the system.\n",TRUE); +Msg(MSG_KEY_DOWN,CH_CTRLM,0x43200000432); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); +Msg(MSG_KEY_DOWN,CH_CTRLL,0x42600000426); +for (i=0;i<6;i++) + Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); +AFPrint(," Click here for Pop-up version"); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); +AFPrint(,"Cd(\"::/Demo/Games\");;#include \"CastleFrankenstein\";\\n"); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_LEFT|SCF_CTRL); + +TourPut( +"Press $$GREEN$$$$FG$$ until you reach the \"Pop-Up\" check-box.\n"); +for (i=0;i<2;i++) + AFGetKey(SC_CURSOR_DOWN); +TourPut( +"Press $$GREEN$$$$FG$$ to check the box.\n"); +AFGetStr(" "); + +TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); +AFGetChar(CH_ESC); + +TourPut("Press $$GREEN$$$$FG$$ to insert a line feed.\n"); +AFGetKey(SC_ENTER|SCF_CTRL|SCF_SHIFT); + +Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); +TourPut( +"Press $$GREEN$$$$FG$$ to test it.\n"); +AFGetStr(" "); + +Sleep(500); +WinToTop;//Kludge + +TourPut( +"Move around with cursor keys and press $$GREEN$$$$FG$$ when you " +"are done.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); + +TourPut( +"$$GREEN$$$$FG$$ to save your PersonalMenu file, if you wish. " +"Your PersonalMenu is special and does not save on $$GREEN$$$$FG$$.\n",TRUE); + +'' CH_SHIFT_ESC; //exit menu -TourPut("Use $$GREEN$$$$FG$$ to pick directories.\n",TRUE); diff --git a/Misc/Tour/Tour5.AUT b/Misc/Tour/Tour5.AUT index f66da3c..8242d06 100644 --- a/Misc/Tour/Tour5.AUT +++ b/Misc/Tour/Tour5.AUT @@ -1,50 +1,34 @@ -PopUp("ACInit(\"::/*;~*Bible.TXT*\");"); -AutoComplete(ON); -Sleep(3500); +//This is an example of how you do documentation. //Puts the cursor at the bottom. Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\nCd(\"::/Demo\");\n"; +"\nEd(\"::/Misc/Tour/Tour5.AUT.Z\");\n"; +Msg(MSG_KEY_DOWN,0,SC_CURSOR_UP|SCF_CTRL); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); +"//"; TourPut( -"AutoComplete is a feature which also lets you jump to source code of " -"symbols. The function keys jump to code, while the number keys jump to " -"dictionary definitions.\n\n" -"We will now place some text on the command line and jump to source code.\n", +"Now, we'll add a link to a file using the $$GREEN$$$$FG$$ filename chooser.\n", TRUE); -"MakeOS"; - -TourPut( -"Look at the $$GREEN$$MakeOSDrvBootInstall$$FG$$ entry in the AutoComplete " -"window. Notice it is underlined. This means a source code link is " -"available.\n\n" -"Press $$GREEN$$$$FG$$ to jump to source code.\n"); -AFGetKey(SC_F1|SCF_CTRL|SCF_SHIFT); -Sleep(500); -WinToTop;//Kludge - -TourPut("Press $$GREEN$$$$FG$$ to abort the source code.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); - -TourPut("Press $$GREEN$$$$FG$$ to autocomplete.\n"); -AFGetKey(SC_F1|SCF_CTRL); -Sleep(500); - -Msg(MSG_KEY_DOWN,'\n',SCF_CTRL|SCF_SHIFT); -"\n"; - -TourPut( -"Tip: You can restart the AutoComplete window if you have closed it by " -"pressing $$GREEN$$$$FG$$.\n",TRUE); - -TourPut( -"You can also use the $$GREEN$$Man()$$FG$$ function to jump to source code. " -"(I use AutoComplete.) The $$GREEN$$Man()$$FG$$ is good for short symbol " -"names or when inside the debugger.\n",TRUE); -AFPrint(,"Man(\"U\");"); +'' CH_CTRLL; +Sleep(2000); +'' CH_SPACE; +Sleep(1500); +'' CH_SPACE; +Sleep(1500); +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN); Sleep(1500); -"\n"; -TourPut("Press $$GREEN$$$$FG$$ to abort the source code.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); +TourPut( +"Press $$GREEN$$$$FG$$ for the file chooser. Then, " +"pick a file and press $$GREEN$$$$FG$$."); +AFGetKey(SC_F4); +Sleep(5000); +TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); +AFGetChar(CH_ESC); + +TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); +AFGetChar(CH_SHIFT_ESC); + +TourPut("Use $$GREEN$$$$FG$$ to pick directories.\n",TRUE); diff --git a/Misc/Tour/Tour6.AUT b/Misc/Tour/Tour6.AUT index 2568a57..f66da3c 100644 --- a/Misc/Tour/Tour6.AUT +++ b/Misc/Tour/Tour6.AUT @@ -1,69 +1,50 @@ -TourPut( -"$$RED$$$$TX+L+PU+UL,\"F\",A=\"MN:F\"$$$$FG$$() is a handy function. " -"It is a wrapper around $$RED$$$$TX+L+PU+UL,\"Find\",A=\"MN:Find\"$$$$FG$$(). " -"It searches for a sym.\n",TRUE); - -TourPut("Press $$GREEN$$$$FG$$.\n"); +PopUp("ACInit(\"::/*;~*Bible.TXT*\");"); +AutoComplete(ON); +Sleep(3500); //Puts the cursor at the bottom. Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\n"; - -"F(\"RED\");"; -AFGetStr("\n"); -Sleep(2000); - -TourPut("Notice the number of matches.\n",TRUE); +"\nCd(\"::/Demo\");\n"; TourPut( -"Try it with the $$GREEN$$+l$$FG$$ flag. This limits to whole labels, not " -"partials.\n",TRUE); +"AutoComplete is a feature which also lets you jump to source code of " +"symbols. The function keys jump to code, while the number keys jump to " +"dictionary definitions.\n\n" +"We will now place some text on the command line and jump to source code.\n", +TRUE); -TourPut("Press $$GREEN$$$$FG$$.\n"); - -//Puts the cursor at the bottom. -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\n"; - -"F(\"RED\",\"+l\");"; -AFGetStr("\n"); -Sleep(2000); - -TourPut("Notice the number of matches.\n",TRUE); +"MakeOS"; TourPut( -"Try it with the $$GREEN$$+l-i$$FG$$ flag. This does not ignore case and " -"limits to whole labels, not partials.\n",TRUE); - -TourPut("Press $$GREEN$$$$FG$$.\n"); - -//Puts the cursor at the bottom. -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\n"; - -"F(\"RED\",\"+l-i\");"; -AFGetStr("\n"); -Sleep(2000); - -TourPut("Notice the number of matches.\n",TRUE); - -TourPut( -"The wrapper function is in your $$RED$$/Home/AdamWrappers.CPP.Z$$FG$$ file. " -"There is a function $$RED$$$$TX+L+PU+UL,\"R\",A=\"MN:R\"$$$$FG$$() for " -"find and replace. Feel free to customize.\n",TRUE); - -TourPut("Press $$GREEN$$$$FG$$.\n"); - -//Puts the cursor at the bottom. -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\n"; - -"Ed(\"::/Home/AdamWrappers.CPP.Z\");"; -AFGetStr("\n"); +"Look at the $$GREEN$$MakeOSDrvBootInstall$$FG$$ entry in the AutoComplete " +"window. Notice it is underlined. This means a source code link is " +"available.\n\n" +"Press $$GREEN$$$$FG$$ to jump to source code.\n"); +AFGetKey(SC_F1|SCF_CTRL|SCF_SHIFT); +Sleep(500); +WinToTop;//Kludge TourPut("Press $$GREEN$$$$FG$$ to abort the source code.\n"); AFUntilChar(CH_ESC,CH_SHIFT_ESC); +TourPut("Press $$GREEN$$$$FG$$ to autocomplete.\n"); +AFGetKey(SC_F1|SCF_CTRL); +Sleep(500); + +Msg(MSG_KEY_DOWN,'\n',SCF_CTRL|SCF_SHIFT); +"\n"; + TourPut( -"$$GREEN$$+lb$$FG$$ is whole label just before.\n" -"$$GREEN$$+la$$FG$$ is whole label just after.\n",TRUE); +"Tip: You can restart the AutoComplete window if you have closed it by " +"pressing $$GREEN$$$$FG$$.\n",TRUE); + +TourPut( +"You can also use the $$GREEN$$Man()$$FG$$ function to jump to source code. " +"(I use AutoComplete.) The $$GREEN$$Man()$$FG$$ is good for short symbol " +"names or when inside the debugger.\n",TRUE); +AFPrint(,"Man(\"U\");"); +Sleep(1500); +"\n"; + +TourPut("Press $$GREEN$$$$FG$$ to abort the source code.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); diff --git a/Misc/Tour/Tour7.AUT b/Misc/Tour/Tour7.AUT index f8fddaf..6794d5f 100644 --- a/Misc/Tour/Tour7.AUT +++ b/Misc/Tour/Tour7.AUT @@ -1,25 +1,69 @@ -"FF(\"/Kernel/*\");"; TourPut( -"Let's list files in the $$GREEN$$/Kernel$$FG$$ and sub directories.\n\n" -"TempleOS masks have one base directory and multiple filename masks.\n\n" -"Press $$GREEN$$$$FG$$.\n"); +"$$RED$$$$TX+L+PU+UL,\"F\",A=\"MN:F\"$$$$FG$$() is a handy function. " +"It is a wrapper around $$RED$$$$TX+L+PU+UL,\"Find\",A=\"MN:Find\"$$$$FG$$(). " +"It searches for a sym.\n",TRUE); + +TourPut("Press $$GREEN$$$$FG$$.\n"); + +//Puts the cursor at the bottom. +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +"\n"; + +"F(\"RED\");"; +AFGetStr("\n"); +Sleep(2000); + +TourPut("Notice the number of matches.\n",TRUE); + +TourPut( +"Try it with the $$GREEN$$+l$$FG$$ flag. This limits to whole labels, not " +"partials.\n",TRUE); + +TourPut("Press $$GREEN$$$$FG$$.\n"); + +//Puts the cursor at the bottom. +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +"\n"; + +"F(\"RED\",\"+l\");"; +AFGetStr("\n"); +Sleep(2000); + +TourPut("Notice the number of matches.\n",TRUE); + +TourPut( +"Try it with the $$GREEN$$+l-i$$FG$$ flag. This does not ignore case and " +"limits to whole labels, not partials.\n",TRUE); + +TourPut("Press $$GREEN$$$$FG$$.\n"); + +//Puts the cursor at the bottom. +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +"\n"; + +"F(\"RED\",\"+l-i\");"; +AFGetStr("\n"); +Sleep(2000); + +TourPut("Notice the number of matches.\n",TRUE); + +TourPut( +"The wrapper function is in your $$RED$$/Home/HomeWrappers.CPP.Z$$FG$$ file. " +"There is a function $$RED$$$$TX+L+PU+UL,\"R\",A=\"MN:R\"$$$$FG$$() for " +"find and replace. Feel free to customize.\n",TRUE); + +TourPut("Press $$GREEN$$$$FG$$.\n"); + +//Puts the cursor at the bottom. +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +"\n"; + +"Ed(\"::/Home/HomeWrappers.CPP.Z\");"; AFGetStr("\n"); -"FF(\"/Kernel/*\",\"-r\");"; -TourPut( -"The recurse $$GREEN$$+r$$FG$$ flag is usually set. Let's turn it off.\n\n" -"Press $$GREEN$$$$FG$$.\n"); -AFGetStr("\n"); +TourPut("Press $$GREEN$$$$FG$$ to abort the source code.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); -"FF(\"/Kernel/M*;*.HPP*\");"; TourPut( -"Let's have two mask of $$GREEN$$M*$$FG$$ plus $$GREEN$$*.HPP*$$FG$$\n\n" -"Press $$GREEN$$$$FG$$.\n"); -AFGetStr("\n"); - -"FF(\"/Kernel/M*;*.HPP*;~Mem*\");"; -TourPut( -"Let's unselect $$GREEN$$Mem*$$FG$$.\n\n" -"Press $$GREEN$$$$FG$$.\n"); -AFGetStr("\n"); -TourPut("There is no way to include multiple base directories.\n",TRUE); +"$$GREEN$$+lb$$FG$$ is whole label just before.\n" +"$$GREEN$$+la$$FG$$ is whole label just after.\n",TRUE); diff --git a/Misc/Tour/Tour8.AUT b/Misc/Tour/Tour8.AUT index 08121a7..f8fddaf 100644 --- a/Misc/Tour/Tour8.AUT +++ b/Misc/Tour/Tour8.AUT @@ -1,24 +1,25 @@ -"Ed(\"::/Misc/Bible.TXT.Z\");\n"; -TourPut("Press $$GREEN$$$$FG$$ to find.\n"); -AFGetChar(CH_CTRLF); +"FF(\"/Kernel/*\");"; +TourPut( +"Let's list files in the $$GREEN$$/Kernel$$FG$$ and sub directories.\n\n" +"TempleOS masks have one base directory and multiple filename masks.\n\n" +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr("\n"); -AFPrint(150,"new song"); +"FF(\"/Kernel/*\",\"-r\");"; +TourPut( +"The recurse $$GREEN$$+r$$FG$$ flag is usually set. Let's turn it off.\n\n" +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr("\n"); -TourPut("Cursor down 8 times.\n"); -I64 i; -for (i=0;i<8;i++) - AFGetKey(SC_CURSOR_DOWN); - -TourPut("Press '$$GREEN$$2$$FG$$' to show all lines within 2 of a match.\n"); -AFGetStr("2"); - -TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); -AFGetChar(CH_ESC); - -TourPut("Look around and press $$GREEN$$$$FG$$ to turn off filter.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); - -TourPut("You can combine filters to effectively do AND searches.\n",TRUE); - -'' CH_SHIFT_ESC; +"FF(\"/Kernel/M*;*.HPP*\");"; +TourPut( +"Let's have two mask of $$GREEN$$M*$$FG$$ plus $$GREEN$$*.HPP*$$FG$$\n\n" +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr("\n"); +"FF(\"/Kernel/M*;*.HPP*;~Mem*\");"; +TourPut( +"Let's unselect $$GREEN$$Mem*$$FG$$.\n\n" +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr("\n"); +TourPut("There is no way to include multiple base directories.\n",TRUE); diff --git a/Misc/Tour/Tour9.AUT b/Misc/Tour/Tour9.AUT index 611b7a9..08121a7 100644 --- a/Misc/Tour/Tour9.AUT +++ b/Misc/Tour/Tour9.AUT @@ -1,44 +1,24 @@ -TourPut("Press $$GREEN$$$$FG$$."); -"Ed(\"HI:Debugging\");"; -AFGetStr("\n"); -TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); +"Ed(\"::/Misc/Bible.TXT.Z\");\n"; +TourPut("Press $$GREEN$$$$FG$$ to find.\n"); +AFGetChar(CH_CTRLF); -TourPut( -"We will now use $$RED$$$$TX+L+PU+UL,\"Uf\",A=\"MN:Uf\"$$$$FG$$() to " -"unassemble a function. It takes the function name as a string arg.\n\n" -"Press $$GREEN$$$$FG$$.\n"); -"WinMax;WinBorder;\nUf(\"CAlloc\");"; -AFGetStr("\n"); +AFPrint(150,"new song"); -TourPut("Press $$GREEN$$$$FG$$ eight times.."); +TourPut("Cursor down 8 times.\n"); I64 i; for (i=0;i<8;i++) - AFGetKey(SC_CURSOR_UP); + AFGetKey(SC_CURSOR_DOWN); -TourPut( -"Press $$GREEN$$$$FG$$.\n"); -AFGetStr(" "); +TourPut("Press '$$GREEN$$2$$FG$$' to show all lines within 2 of a match.\n"); +AFGetStr("2"); -TourPut("Press $$GREEN$$$$FG$$ when finished.\n"); +TourPut("Press $$GREEN$$$$FG$$ to exit the form.\n"); +AFGetChar(CH_ESC); + +TourPut("Look around and press $$GREEN$$$$FG$$ to turn off filter.\n"); AFUntilChar(CH_ESC,CH_SHIFT_ESC); -//Puts the cursor at the bottom. -Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +TourPut("You can combine filters to effectively do AND searches.\n",TRUE); -TourPut( -"We can unassemble a numeric address with " -"$$RED$$$$TX+L+PU+UL,\"U\",A=\"MN:U\"$$$$FG$$().\n\n" -"Press $$GREEN$$$$FG$$.\n"); -"U(&CAlloc);"; -AFGetStr("\n"); +'' CH_SHIFT_ESC; -TourPut("The opcodes are slightly nonstandard.\n",TRUE); -"Ed(\"::/Compiler/OpCodes.TXT.Z\");\n"; - -Msg(MSG_KEY_DOWN,CH_CTRLF,0x42100000421); -"MOV"; -Msg(MSG_KEY_DOWN,CH_ESC,0x100000001); - -TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); -AFUntilChar(CH_ESC,CH_SHIFT_ESC); diff --git a/Misc/Tour/TourA.AUT b/Misc/Tour/TourA.AUT index 7fb6a39..c169a47 100644 --- a/Misc/Tour/TourA.AUT +++ b/Misc/Tour/TourA.AUT @@ -1,21 +1,44 @@ +TourPut("Press $$GREEN$$$$FG$$."); +"Ed(\"HI:Debugging\");"; +AFGetStr("\n"); +TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); + TourPut( -"All text widgets work everywhere. The $$GREEN$$Type()$$FG$$ command is like " -"the DOS command of the same name or the UNIX, $$GREEN$$cat$$FG$$ command. " -"We will, now, send your menu document to the command line. It uses the " -"same document format and the icons are even active!!\n\n" +"We will now use $$RED$$$$TX+L+PU+UL,\"Uf\",A=\"MN:Uf\"$$$$FG$$() to " +"unassemble a function. It takes the function name as a string arg.\n\n" "Press $$GREEN$$$$FG$$.\n"); +"WinBorder;WinMax;\nUf(\"CAlloc\");"; +AFGetStr("\n"); + +TourPut("Press $$GREEN$$$$FG$$ eight times.."); +I64 i; +for (i=0;i<8;i++) + AFGetKey(SC_CURSOR_UP); + +TourPut( +"Press $$GREEN$$$$FG$$.\n"); +AFGetStr(" "); + +TourPut("Press $$GREEN$$$$FG$$ when finished.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); //Puts the cursor at the bottom. Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); -"\n"; -"Type(\"::/Home/PersonalMenu.TXT\");"; +TourPut( +"We can unassemble a numeric address with " +"$$RED$$$$TX+L+PU+UL,\"U\",A=\"MN:U\"$$$$FG$$().\n\n" +"Press $$GREEN$$$$FG$$.\n"); +"U(&CAlloc);"; AFGetStr("\n"); -Sleep(1500); -AFPrint(250,"Dir;\n"); +TourPut("The opcodes are slightly nonstandard.\n",TRUE); +"Ed(\"::/Compiler/OpCodes.TXT.Z\");\n"; -Sleep(1500); -TourPut( -"$$GREEN$$Type()$$FG$$ can also be used on $$GREEN$$.BMP$$FG$$ or $$GREEN$$.GRA$$FG$$ " -"files!",TRUE); +Msg(MSG_KEY_DOWN,CH_CTRLF,0x42100000421); +"MOV"; +Msg(MSG_KEY_DOWN,CH_ESC,0x100000001); + +TourPut("Press $$GREEN$$$$FG$$ to abort.\n"); +AFUntilChar(CH_ESC,CH_SHIFT_ESC); diff --git a/Misc/Tour/TourB.AUT b/Misc/Tour/TourB.AUT index c14a8aa..7fb6a39 100644 --- a/Misc/Tour/TourB.AUT +++ b/Misc/Tour/TourB.AUT @@ -1,10 +1,21 @@ TourPut( -"We will now run a test-suite that automatically executes most TempleOS " -"demos. It takes a few minutes, so kick-back.\n\n" -"Press $$GREEN$$$$FG$$ in a moment.\n",TRUE); +"All text widgets work everywhere. The $$GREEN$$Type()$$FG$$ command is like " +"the DOS command of the same name or the UNIX, $$GREEN$$cat$$FG$$ command. " +"We will, now, send your menu document to the command line. It uses the " +"same document format and the icons are even active!!\n\n" +"Press $$GREEN$$$$FG$$.\n"); -if (LBtr(&tour_put->display_flags,DISPLAYf_SHOW)) - WinZBufUpdate; +//Puts the cursor at the bottom. +Msg(MSG_KEY_DOWN,0,SC_CURSOR_DOWN|SCF_CTRL); +"\n"; -"#include \"::/Misc/OSTestSuite\";"; +"Type(\"::/Home/PersonalMenu.TXT\");"; AFGetStr("\n"); + +Sleep(1500); +AFPrint(250,"Dir;\n"); + +Sleep(1500); +TourPut( +"$$GREEN$$Type()$$FG$$ can also be used on $$GREEN$$.BMP$$FG$$ or $$GREEN$$.GRA$$FG$$ " +"files!",TRUE); diff --git a/Misc/Tour/TourC.AUT b/Misc/Tour/TourC.AUT new file mode 100644 index 0000000..de4e949 --- /dev/null +++ b/Misc/Tour/TourC.AUT @@ -0,0 +1,10 @@ +TourPut( +"We will now run a test-suite that automatically executes most TempleOS " +"demos. It takes a few minutes, so kick-back.\n\n" +"Press $$GREEN$$$$FG$$.\n"); + +"#include \"::/Misc/OSTestSuite\";"; +AFGetStr("\n"); + +if (LBtr(&tour_put->display_flags,DISPLAYf_SHOW)) + WinZBufUpdate; diff --git a/PersonalMenu.TXT b/PersonalMenu.TXT index b1331bb138eb67523fbb49d3f8cc12925833a485..df42f42c05399cae5af38e5283ff869b94f0f04d 100644 GIT binary patch delta 12519 zcmdni#XSD}@lTfbW1Ae~r#yMR6yM}tKds5@;56^# zKYrSi*GlnBHul$PAOkU})Hd)M%fAT$l&B@|^e3N|x zI48>mC_>p}Kp|argAdo9I zd4m-9WC3B0$(i;_jLMUH?6tu$dD>nC9D^V1#V2o&5|}LRATjyD4F1V>4w94a&)}P! z>L4}w-V9!51_tiQ4;;iN-<`oXd5eSePag?4M@5?b+A%_(l>pvXDC$E;`o-E}gJ9(89*JMX0ITla=O-^=F zfiSvZjLk5{Z5V^u8LCDb#t4Qns-0ChLFWAb&%n+w*-=<{^83eZTny}xfc*b|@@YZ} zq+OtfJ7X}iVIsS6GmKrK+KpXR>ftVdGMGV0=RYWxp{W4mN{HP5{|pT5(D(+YDF#Tg zgE$-^_n(2C9fUx-z-fp9l9a&eKoaaQzcMgP{^zPV+2#h{W3|NsBR|NsAMGB7Y` zPj(QJo_s)(V{*Kg(BuySqRb3@e3Lis)P>SoEDWF|rZ7_-lr%W`xVafXh+#5gx58ur zZ;r`#=dg2tG8O{^1KZ?;-8vG9TfU@{=16!;nbGqACNECeYAo1x4L5&^3M5g-@yF@UT9+X5Amn=ByA%E!jQ z#sG?SkPERv?POBm>*zi=ASV3xqiNK`95EPQViXCvOxI6=Gm#X9ook2M0Sl zI|BzO*Cb}k39++-_#9wSkT!OX$qS`qL>SmXVayHz9PA7X>>OYT0T7FUg9EIKor8gW za$}-tPzVXZz*e5TP5}6#3#RE!3&~SqWDJTv_Kw$t5H*jd9hABJ_IM`9c6dc@; zSYY6oys=AWvVsUZF9#^JL82ftCohyz;)A*i6vY3*E>YqGc^p)tKxl|6lyCtF@jx|# zgKF|dA(hDiSscuuNMQUe3$E51vUn#y_`xF2zywm%}FrR>aQD!Op?W&cMyUz%V&cNO-b94!1A^12ZVWLZsN) zK{e!L!4=ZtARX+?+zjm8Aj8=ixS82O`X=Q_NP@L6b2Brrg9;XIb_Ql{W{5_{9MO7+ zMrLNPUQpc&(#y;Y(GE=n5RZd73=G^1?99vz+#vNxBr`MEpiJJlBaF8Fkxxrz=3?@PLfdoMg zWdNmXsA_I@uyRnL165xS(*R1-3=G^Lk8?9X9mK#53No+@!7&Lo5)`c5+#uy(hj4SV zBh-VMF%ab-E5H_mi)D}-U_k>akfG-PXJDB8b0PO+`9&O)()lLew`ZFicvBMGP!$kn z3uEMz2Gt@z{{R2)l%JcFTExJ>5Ag`YB{papy!8M7|J(on|2JS@U{FC=1F`J?e+~{b z76-@VhXS&~7~%{dahb^i!hDlAykniLpU*z|{W?)TP)I;cU|{$^Iq-($Yv7y5}p6ALKZK~_L4fT#t9H%JVEA^PAla0WCq7$Dwtpt}E|fC8wx2PyhLdEHcfMk2_`tZ&sO zPk1jpneVME2{iZQqDO{`pvDj=bau0#rB*Wr1_n`3v9?iCWb&=+ypwzKxFibMW0*YAS5b@)Bn=jY5)2@b$r~lbC*Swwl4fAw;{#cVgkb`c z6{UnH$9r+qgOu=r6!IYe1IQSVN~ozI3X(oRO%_m)v4PrLU}F)wpjLrg09FDfpt%sN z6igtg2QeoHC~<)se~S5{lW#2Hnd~pjI(hv&zR6qW2~F0MVw)WA#mdMq*-=SKh=Grf z4>cerAAGGgS>Y|un7y3y$`dh(qm9B@Aetl*w}K!g>Po+tbJaZHwx zfwY?BW%z6u7#KOFZ~XuNA5;Q5rj>vSKv3Hd6sTXAph*f;0bl$7|39eCl!FHSe`e;% z3#G(B9ZC?*gu)eNfr^W;f*2r`!X982a!7;X|NnomFf**H0ucj|IK-KmCmZ^S)q~pH z%;2suNG%+Lg#TlTgM}gD$QD6_LE>NxGX*Y;W)PCN1gI8*sfW^F2TxuoCCtb?`JgYv zi74hm)Im(a^e`@Qh!GH3hzU>k%nYJIGQy%D-5?$mBV_79GN2g#530jBz!LxeGjl*{IV1yNOlD?g zkQRtRFcypki8B9(8uA|`3Njj^1H=M}fYg96$kqSC*#e`X3c*G~G=L2U z*#TjINsubA5^%2j{~yeTD+e>s)G;%I1(+fBgV_0w5z`ru+wM0_y>HJi!{-AsWGE!U#yCgX8~y7=yzX)T@FR2vY>2!PbD%0E_{l zK~kugkA;tg4cJ;R}XA8L>){S$YD@62Sf=osAmakzJvQM z5IK-xAPnI#fIEH6^`O2aOd&)DY#KO7Kzz{n9ygd^23ZQmAaO8;8^-`v0aFL+nS(3_ zsR1Qau!$fJsJ{y8mx4Qi%%ILZsLu)tW^gco!wswsrVuoM25}*%%mzzAf*Gb1YB5|L zNEsx0Q7q=*0Cg_8xj~&ska?i-7qGS9_=mOj!}N{W!M0jULJhI%CPxIqI8(6j(E5u}O(l&GL~f+?^%P+bC$t0B+ON5bOa-ppLWSvPIg5WSl5DXw0^~pMugeKch;srIl3uRR&>r4`!Y&(e$ z!c_)y7nre4wx7fW5mKBS_(^86{UlBZSAi9j?*30+_)c=N{Ui>Epd2VmPZrFV;)M*m zgY5)cCj(Z_Fj+8Pf*%x6U>OhrmX!hr!TZNAgdtZ1rdj`!5Y8>1Hb2*VNw zNDtJ6$q!$Nq=HK$utLZH9)t-ek+s1_A3&K7>_m`7FbvlL8d5^yfSHpWgv2L5$l;v4 zYZdoo`$^nFpaKLe11Bas3WK6?0nvf&L$R!{im!OABeJR`yl zGKq-^Y{+CoH&J77j6v0bRYA=`btTwkFqz4Td7{RkM2M^nY$Aw&83M5c<08N;HO@k7X`_G7h6dN%z@5F2F9e@2KgVD+3JgBTe3K^hqu>%mUvi+tYGK-;K7`6Z+{nqv$-n?L25fdcSQSJPVlY3912qS( zA8tHYgdc1Ws5ykB0iu;3>~5%bP`HDbU`^ok0OEl#*n2_XB*@9Yzz7QwkQ59<%!BYi zhJsiqW`G2cq6`#2{F5Em>rM_>F9NC>Il;+^fngFiv}tw_I@NE-z`&r#0E!%l!^k7? z>IWrlLdN1XfRJWLWa3msjQyZU#AyIA5_mj7l>Ibx0CD!y&H+T)PcsJ)vLBxM@x&qS zB)|ZkP6Ny1(2vi4P__hh-a&;dxJUvUgqHwm0VxO5phX>^K?0BfF8yfsgO(nEIxJus z)_>=KxE(^`vmWGK4$uG%$kp&65s&~#7gqhq_Jg&9`t2a?(0(SE;@|*#0jmKZlOY)7 zW_E6FZty4(SRb6gtsh}O$aZ#+er`lZ9%=xnKM%44j{`uuIXFOVX!IU5NHa7QVbKq> zALMurkoDNLgKWoBl7VdpI~FoR17?B=aAZPtV@m^I`@z~l0T0%KOn@8@*Nw{oP`4xN zgRnumQT>d{1PMw7(11fY0mT4*etu4Veoh8#PKVeHPB#eMC?No< z+Clbna)OpPA?$^*pvfLtH&O_Ib%O|gPJRaLF2JxHWE2AfxV^#&ayTa^e?7P&SFbNaFL4zECkOI2^;tPZzUKX-`xc~9$K$8R+0J0X; z+Jez&O7Ly2BOe`Df0Fr_o*=(?Wkh8(% m53&rAY_I`Ds>P-Zrk`Bo4zMAt5{C)~1_l6{&Icd> delta 13254 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 QsTUjG;3l^Dd%2qq0Ck;vA^-pY diff --git a/ReadMe.TXT b/ReadMe.TXT index 677869c..85beefc 100644 --- a/ReadMe.TXT +++ b/ReadMe.TXT @@ -1,14 +1,14 @@ TempleOS -You can't do much until you burn a TempleOS CD-ROM from the ISO file +You can't do much until you burn a TempleOS CD/DVD from the ISO file and boot it, or you aim your virtual machine at the ISO file and boot. TempleOS files are compressed and the source code can only be compiled by the TempleOS compiler... which is available when you boot -the CD-ROM. TempleOS is 100% open source with all source present. +the CD/DVD. TempleOS is 100% open source with all source present. TempleOS is 64-bit and will not run on 32-bit hardware. -TempleOS may require you to enter I/O port addresses for the CD-ROM drive +TempleOS may require you to enter I/O port addresses for the CD/DVD drive and the hard drive. In Windows, you can find I/O port info in the Accessories folder, System Tools, System Info, Hardware Resources, I/O ports. Look for and write down "IDE", "ATA" or "SATA" port numbers. diff --git a/StartOS.CPP b/StartOS.CPP new file mode 100644 index 0000000..045b9eb --- /dev/null +++ b/StartOS.CPP @@ -0,0 +1,47 @@ +//This is executed by the Adam task at boot. +//See $LK,"Adam Start-up",A="FF:::/Kernel/KEnd.CPP,\"StartOS"$. + +#help_index "Compiler/Directive" +public extern I8i Option(I64i num,I8i val); +Option(0,0); //(0,0)=EchoOff (0,1)=EchoOn + +#include "/Kernel/KernelA.HPP" +#include "/Compiler/CompilerA.HPP" +#include "/Kernel/KernelB.HPP" +#include "/Kernel/KernelC.HPP" +#include "/Compiler/CompilerB.HPP" + +Option(OPTf_WARN_PAREN,ON); +Option(OPTf_WARN_DUP_TYPES,ON); +HashTablePurge(adam_task->hash_table); + +#help_index "Misc" +//Use Dbg("Type 'G;'"); to debug before window mgr is running. +public F64 os_version=3.11;//Operating system version. + +#include "/Adam/MakeAdam" + +//Dbg("Type 'G;'"); +DocTermNew; +WinVert(2,10); + +sys_winmgr_task=Spawn(&WinMgrTask,NULL,"Window Mgr"); +Fs->win_inhibit=WIG_TASK_DFT-WIF_SELF_BORDER + -WIF_SELF_GRAB_SCROLL-WIF_SELF_CTRLS; +LBts(&Fs->display_flags,DISPLAYf_CHILDREN_NOT_ON_TOP); +LBts(&Fs->display_flags,DISPLAYf_SHOW); +RegInit; +LBts(&sys_run_level,RLf_REGISTRY); +WallPaperInit; + +if (DrvIsWritable) + MkDir("/Temp"); //Good to have a Temp + +Option(OPTf_WARN_PAREN,OFF); +Option(OPTf_WARN_DUP_TYPES,OFF); +LBts(&sys_run_level,RLf_HOME); + +#help_index "" +#include "/Home/MakeHome" + +//After this file, the Adam task enters $LK,"server mode",A="HI:Task/Srv"$.