From 895fe109dedc5e17a61e9671e2c9f36f3c04061e Mon Sep 17 00:00:00 2001 From: minexew Date: Sun, 22 Jan 2017 20:26:44 +0100 Subject: [PATCH] Initial (manual) import --- TempleOSCD/0000Boot/0000Kernel.BIN.C | Bin 0 -> 192128 bytes TempleOSCD/Adam/ABlkDev/ADskA.HC | 252 + TempleOSCD/Adam/ABlkDev/ADskB.HC | 191 + TempleOSCD/Adam/ABlkDev/ChkDsk.HC | 444 + TempleOSCD/Adam/ABlkDev/FileMgr.HC | 809 + TempleOSCD/Adam/ABlkDev/MakeABlkDev.HC | 8 + TempleOSCD/Adam/ABlkDev/Mount.HC | 159 + TempleOSCD/Adam/ABlkDev/PrtDsk.HC | 167 + TempleOSCD/Adam/ADbg.HC | 270 + TempleOSCD/Adam/ADefine.HC | 41 + TempleOSCD/Adam/AExts.HC | 101 + TempleOSCD/Adam/AHash.HC | 433 + TempleOSCD/Adam/AMath.HC | 135 + TempleOSCD/Adam/AMathODE.HC | 609 + TempleOSCD/Adam/AMem.HC | 179 + TempleOSCD/Adam/AMouse.HC | Bin 0 -> 947 bytes TempleOSCD/Adam/ARegistry.HC | 229 + TempleOSCD/Adam/AutoComplete/ACDefs.DATA | Bin 0 -> 26124337 bytes TempleOSCD/Adam/AutoComplete/ACDictGen.HC | 263 + TempleOSCD/Adam/AutoComplete/ACFill.HC | 261 + TempleOSCD/Adam/AutoComplete/ACInit.HC | 169 + TempleOSCD/Adam/AutoComplete/ACTask.HC | 284 + TempleOSCD/Adam/AutoComplete/ACWords.DATA | Bin 0 -> 1238691 bytes TempleOSCD/Adam/AutoComplete/MakeAC.HC | 6 + TempleOSCD/Adam/CPURep.HC | 72 + TempleOSCD/Adam/Ctrls/CtrlsA.HC | 388 + TempleOSCD/Adam/Ctrls/CtrlsBttn.HC | 91 + TempleOSCD/Adam/Ctrls/CtrlsSlider.HC | 214 + TempleOSCD/Adam/Ctrls/MakeCtrls.HC | 8 + TempleOSCD/Adam/DevInfo.HC | 220 + TempleOSCD/Adam/DolDoc/DocBin.HC | 142 + TempleOSCD/Adam/DolDoc/DocChar.HC | 652 + TempleOSCD/Adam/DolDoc/DocClipBoard.HC | 123 + TempleOSCD/Adam/DolDoc/DocCodeTools.HC | 658 + TempleOSCD/Adam/DolDoc/DocDblBuf.HC | 110 + TempleOSCD/Adam/DolDoc/DocEd.HC | 250 + TempleOSCD/Adam/DolDoc/DocExt.HC | 13 + TempleOSCD/Adam/DolDoc/DocFile.HC | 333 + TempleOSCD/Adam/DolDoc/DocFind.HC | 584 + TempleOSCD/Adam/DolDoc/DocForm.HC | 344 + TempleOSCD/Adam/DolDoc/DocGet.HC | 224 + TempleOSCD/Adam/DolDoc/DocGr.HC | 163 + TempleOSCD/Adam/DolDoc/DocHighlight.HC | 160 + TempleOSCD/Adam/DolDoc/DocInit.HC | 112 + TempleOSCD/Adam/DolDoc/DocLink.HC | 358 + TempleOSCD/Adam/DolDoc/DocMacro.HC | 211 + TempleOSCD/Adam/DolDoc/DocNew.HC | 385 + TempleOSCD/Adam/DolDoc/DocPlain.HC | 611 + TempleOSCD/Adam/DolDoc/DocPopUp.HC | 323 + TempleOSCD/Adam/DolDoc/DocPutKey.HC | 729 + TempleOSCD/Adam/DolDoc/DocPutS.HC | 336 + TempleOSCD/Adam/DolDoc/DocRecalc.HC | 1324 + TempleOSCD/Adam/DolDoc/DocRecalcLib.HC | 213 + TempleOSCD/Adam/DolDoc/DocRun.HC | 103 + TempleOSCD/Adam/DolDoc/DocTerm.HC | 213 + TempleOSCD/Adam/DolDoc/DocTree.HC | 167 + TempleOSCD/Adam/DolDoc/DocWidgetWiz.HC | 1163 + TempleOSCD/Adam/DolDoc/MakeDoc.HC | 69 + TempleOSCD/Adam/God/GodBible.HC | 348 + TempleOSCD/Adam/God/GodDoodle.HC | 192 + TempleOSCD/Adam/God/GodExt.HC | 26 + TempleOSCD/Adam/God/GodSong.HC | 171 + TempleOSCD/Adam/God/HSNotes.DD | 223 + TempleOSCD/Adam/God/HolySpirit.HC | 160 + TempleOSCD/Adam/God/MakeGod.HC | 9 + TempleOSCD/Adam/God/Vocab.DD | 7569 ++ TempleOSCD/Adam/Gr/Gr.HH | 180 + TempleOSCD/Adam/Gr/GrAsm.HC | 410 + TempleOSCD/Adam/Gr/GrBitMap.HC | 1967 + TempleOSCD/Adam/Gr/GrComposites.HC | 344 + TempleOSCD/Adam/Gr/GrDC.HC | 430 + TempleOSCD/Adam/Gr/GrEnd.HC | 29 + TempleOSCD/Adam/Gr/GrExt.HC | 5 + TempleOSCD/Adam/Gr/GrGlbls.HC | 55 + TempleOSCD/Adam/Gr/GrInitA.HC | 21 + TempleOSCD/Adam/Gr/GrInitB.HC | 209 + TempleOSCD/Adam/Gr/GrMath.HC | 805 + TempleOSCD/Adam/Gr/GrPalette.HC | 93 + TempleOSCD/Adam/Gr/GrPrimatives.HC | 1822 + TempleOSCD/Adam/Gr/GrScrn.HC | 423 + TempleOSCD/Adam/Gr/GrSpritePlot.HC | 475 + TempleOSCD/Adam/Gr/GrTextBase.HC | 363 + TempleOSCD/Adam/Gr/MakeGr.HC | 31 + TempleOSCD/Adam/Gr/SpriteBitMap.HC | 677 + TempleOSCD/Adam/Gr/SpriteCode.HC | 603 + TempleOSCD/Adam/Gr/SpriteEd.HC | 1282 + TempleOSCD/Adam/Gr/SpriteMain.HC | 1238 + TempleOSCD/Adam/Gr/SpriteMesh.HC | 1508 + TempleOSCD/Adam/Gr/SpriteNew.HC | 189 + TempleOSCD/Adam/Host.HC | 70 + TempleOSCD/Adam/InFile.HC | 140 + TempleOSCD/Adam/InsReg.HC | 64 + TempleOSCD/Adam/MakeAdam.HC | 32 + TempleOSCD/Adam/Menu.HC | 243 + TempleOSCD/Adam/Opt/Boot/BootDVD.HC | 188 + TempleOSCD/Adam/Opt/Boot/BootDVDIns.HC | 33 + TempleOSCD/Adam/Opt/Boot/BootHD.HC | 93 + TempleOSCD/Adam/Opt/Boot/BootHDIns.HC | 60 + TempleOSCD/Adam/Opt/Boot/BootMHD.HC | 107 + TempleOSCD/Adam/Opt/Boot/BootMHD2.HC | 123 + TempleOSCD/Adam/Opt/Boot/BootMHDIns.HC | 152 + TempleOSCD/Adam/Opt/Boot/BootRAM.HC | 60 + TempleOSCD/Adam/Opt/Boot/DskISO9660.HC | 506 + TempleOSCD/Adam/Opt/Boot/DskISORedSea.HC | 188 + TempleOSCD/Adam/Opt/Boot/MakeBoot.HC | 6 + TempleOSCD/Adam/Opt/Utils/Diff.HC | 353 + TempleOSCD/Adam/Opt/Utils/DocUtils.HC | 156 + TempleOSCD/Adam/Opt/Utils/FileBMP.HC | 343 + TempleOSCD/Adam/Opt/Utils/Find.HC | 257 + TempleOSCD/Adam/Opt/Utils/HeapLog.HC | 211 + TempleOSCD/Adam/Opt/Utils/LineRep.HC | 109 + TempleOSCD/Adam/Opt/Utils/LinkChk.HC | 79 + TempleOSCD/Adam/Opt/Utils/MakeUtils.HC | 16 + TempleOSCD/Adam/Opt/Utils/MemRep.HC | 232 + TempleOSCD/Adam/Opt/Utils/Merge.HC | 77 + TempleOSCD/Adam/Opt/Utils/Profiler.HC | 102 + TempleOSCD/Adam/Opt/Utils/StrUtils.HC | 206 + TempleOSCD/Adam/Opt/Utils/TOS.HC | 80 + TempleOSCD/Adam/Opt/Utils/ToDolDoc.HC | 19 + TempleOSCD/Adam/Opt/Utils/ToTXT.HC | 132 + TempleOSCD/Adam/Snd/MakeSnd.HC | 21 + TempleOSCD/Adam/Snd/SndEffects.HC | 80 + TempleOSCD/Adam/Snd/SndFile.HC | 134 + TempleOSCD/Adam/Snd/SndMath.HC | 248 + TempleOSCD/Adam/Snd/SndMusic.HC | 219 + TempleOSCD/Adam/TaskRep.HC | 30 + TempleOSCD/Adam/TaskSettings.HC | 120 + TempleOSCD/Adam/Training.HC | 184 + TempleOSCD/Adam/WallPaper.HC | Bin 0 -> 4859 bytes TempleOSCD/Adam/Win.HC | 541 + TempleOSCD/Adam/WinMgr.HC | 834 + TempleOSCD/Apps/Budget/Accts.DD | 11 + TempleOSCD/Apps/Budget/BgtAccts.HC | 83 + TempleOSCD/Apps/Budget/BgtEntry.HC | 83 + TempleOSCD/Apps/Budget/BgtFile.HC | 140 + TempleOSCD/Apps/Budget/BgtMain.HC | 224 + TempleOSCD/Apps/Budget/BgtStrs.HC | 132 + TempleOSCD/Apps/Budget/BgtTemplate.HC | 182 + TempleOSCD/Apps/Budget/Budget.HC | 77 + TempleOSCD/Apps/Budget/Install.HC | 5 + TempleOSCD/Apps/Budget/Load.HC | 12 + TempleOSCD/Apps/Budget/Run.HC | 4 + TempleOSCD/Apps/GrModels/BallGen.HC | 128 + TempleOSCD/Apps/GrModels/Load.HC | 8 + TempleOSCD/Apps/GrModels/ManGen.HC | 320 + TempleOSCD/Apps/GrModels/Models.HC | 25 + TempleOSCD/Apps/GrModels/Run.HC | 3 + TempleOSCD/Apps/KeepAway/KeepAway.HC | 1175 + TempleOSCD/Apps/KeepAway/Load.HC | 6 + TempleOSCD/Apps/KeepAway/Run.HC | 3 + TempleOSCD/Apps/Logic/Load.HC | 6 + TempleOSCD/Apps/Logic/Logic.HC | 592 + TempleOSCD/Apps/Logic/Run.HC | 3 + TempleOSCD/Apps/Psalmody/Examples/childish.HC | 24 + TempleOSCD/Apps/Psalmody/Examples/night.HC | Bin 0 -> 3403 bytes TempleOSCD/Apps/Psalmody/Examples/prosper.HC | Bin 0 -> 5632 bytes TempleOSCD/Apps/Psalmody/Help.DD | 24 + TempleOSCD/Apps/Psalmody/Install.HC | 2 + TempleOSCD/Apps/Psalmody/JukeBox.HC | 138 + TempleOSCD/Apps/Psalmody/JukePuppet.HC | 89 + TempleOSCD/Apps/Psalmody/Load.HC | 12 + TempleOSCD/Apps/Psalmody/Psalmody.HC | 63 + TempleOSCD/Apps/Psalmody/PsalmodyCtrls.HC | 89 + TempleOSCD/Apps/Psalmody/PsalmodyDraw.HC | 589 + TempleOSCD/Apps/Psalmody/PsalmodyFile.HC | 427 + TempleOSCD/Apps/Psalmody/PsalmodyMain.HC | 798 + TempleOSCD/Apps/Psalmody/Run.HC | 3 + TempleOSCD/Apps/Span/Install.HC | 1 + TempleOSCD/Apps/Span/Load.HC | 10 + TempleOSCD/Apps/Span/Run.HC | 3 + TempleOSCD/Apps/Span/Span.HH | 49 + TempleOSCD/Apps/Span/SpanBridge.HC | 80 + TempleOSCD/Apps/Span/SpanDerive.HC | 47 + TempleOSCD/Apps/Span/SpanMain.HC | 468 + TempleOSCD/Apps/Span/SpanNew.HC | 126 + TempleOSCD/Apps/Strut/Load.HC | 6 + TempleOSCD/Apps/Strut/Run.HC | 3 + TempleOSCD/Apps/Strut/Strut.HC | 635 + TempleOSCD/Apps/TimeClock/Install.HC | 8 + TempleOSCD/Apps/TimeClock/Load.HC | 7 + TempleOSCD/Apps/TimeClock/TimeClk.HC | 151 + TempleOSCD/Apps/Titanium/Load.HC | 6 + TempleOSCD/Apps/Titanium/Run.HC | 3 + TempleOSCD/Apps/Titanium/Titanium.HC | 1237 + TempleOSCD/Apps/ToTheFront/AIs/Human.HC | 166 + TempleOSCD/Apps/ToTheFront/AIs/SimpleAI.HC | 79 + TempleOSCD/Apps/ToTheFront/Install.HC | 2 + TempleOSCD/Apps/ToTheFront/Load.HC | 13 + TempleOSCD/Apps/ToTheFront/Run.HC | 3 + TempleOSCD/Apps/ToTheFront/TTFDraw.HC | Bin 0 -> 5551 bytes TempleOSCD/Apps/ToTheFront/TTFFire.HC | 278 + TempleOSCD/Apps/ToTheFront/TTFGlbls.HC | 108 + TempleOSCD/Apps/ToTheFront/TTFInit.HC | 436 + TempleOSCD/Apps/ToTheFront/TTFLib.HC | 121 + TempleOSCD/Apps/ToTheFront/TTFMove.HC | 129 + TempleOSCD/Apps/ToTheFront/TTFVis.HC | 223 + TempleOSCD/Apps/ToTheFront/ToTheFront.HC | 214 + TempleOSCD/Apps/Vocabulary/Load.HC | 6 + TempleOSCD/Apps/Vocabulary/Run.HC | 3 + TempleOSCD/Apps/Vocabulary/VocabQuiz.HC | 57 + TempleOSCD/Apps/X-Caliber/Load.HC | 7 + TempleOSCD/Apps/X-Caliber/Run.HC | 3 + TempleOSCD/Apps/X-Caliber/X-Caliber.HC | 1567 + TempleOSCD/Apps/X-Caliber/XCCtrls.HC | 154 + TempleOSCD/Compiler/Asm.HC | 1114 + TempleOSCD/Compiler/AsmInit.HC | 209 + TempleOSCD/Compiler/AsmLib.HC | 175 + TempleOSCD/Compiler/AsmResolve.HC | 217 + TempleOSCD/Compiler/BackA.HC | 658 + TempleOSCD/Compiler/BackB.HC | 719 + TempleOSCD/Compiler/BackC.HC | 771 + TempleOSCD/Compiler/BackFA.HC | 607 + TempleOSCD/Compiler/BackFB.HC | 631 + TempleOSCD/Compiler/BackLib.HC | 708 + TempleOSCD/Compiler/CExcept.HC | 253 + TempleOSCD/Compiler/CExts.HC | 46 + TempleOSCD/Compiler/CHash.HC | 141 + TempleOSCD/Compiler/CInit.HC | 330 + TempleOSCD/Compiler/CMain.HC | 702 + TempleOSCD/Compiler/CMisc.HC | 164 + TempleOSCD/Compiler/Compiler.BIN | Bin 0 -> 192920 bytes TempleOSCD/Compiler/Compiler.MAP | 423 + TempleOSCD/Compiler/Compiler.PRJ | 46 + TempleOSCD/Compiler/CompilerA.HH | 406 + TempleOSCD/Compiler/CompilerB.HH | 78 + TempleOSCD/Compiler/Lex.HC | 1181 + TempleOSCD/Compiler/LexLib.HC | 275 + TempleOSCD/Compiler/OpCodes.DD | 1297 + TempleOSCD/Compiler/OptLib.HC | 565 + TempleOSCD/Compiler/OptPass012.HC | 1288 + TempleOSCD/Compiler/OptPass3.HC | 622 + TempleOSCD/Compiler/OptPass4.HC | 689 + TempleOSCD/Compiler/OptPass5.HC | 90 + TempleOSCD/Compiler/OptPass6.HC | 185 + TempleOSCD/Compiler/OptPass789A.HC | 1152 + TempleOSCD/Compiler/PrsExp.HC | 1178 + TempleOSCD/Compiler/PrsLib.HC | 323 + TempleOSCD/Compiler/PrsStmt.HC | 1222 + TempleOSCD/Compiler/PrsVar.HC | 729 + TempleOSCD/Compiler/Templates.HC | 512 + TempleOSCD/Compiler/UAsm.HC | 682 + TempleOSCD/Demo/AcctExample/HomeKeyPlugIns.HC | 321 + TempleOSCD/Demo/AcctExample/HomeLocalize.HC | 21 + TempleOSCD/Demo/AcctExample/HomeSys.HC | 47 + TempleOSCD/Demo/AcctExample/HomeWrappers.HC | 35 + TempleOSCD/Demo/AcctExample/MakeHome.HC | 16 + TempleOSCD/Demo/AcctExample/Once.HC | 39 + TempleOSCD/Demo/AcctExample/PersonalMenu.DD | 854 + TempleOSCD/Demo/AcctExample/PersonalNotes.DD | 506 + TempleOSCD/Demo/AcctExample/Registry.HC | 74 + TempleOSCD/Demo/AcctExample/TOS/MakeTOS.HC | 13 + TempleOSCD/Demo/AcctExample/TOS/TOSBlog.HC | 126 + TempleOSCD/Demo/AcctExample/TOS/TOSCfg.HC | 69 + TempleOSCD/Demo/AcctExample/TOS/TOSDistro.HC | 589 + TempleOSCD/Demo/AcctExample/TOS/TOSExt.HC | 264 + .../Demo/AcctExample/TOS/TOSHolySpirit.HC | 682 + TempleOSCD/Demo/AcctExample/TOS/TOSIns.HC | 226 + TempleOSCD/Demo/AcctExample/TOS/TOSMisc.HC | 251 + TempleOSCD/Demo/AcctExample/TOS/TOSNIST.HC | 165 + .../Demo/AcctExample/TOS/TOSPolicies.DD | 167 + TempleOSCD/Demo/AcctExample/TOS/TOSToHtml.HC | 498 + TempleOSCD/Demo/Asm/AsmAndC1.HC | 75 + TempleOSCD/Demo/Asm/AsmAndC2.HC | 85 + TempleOSCD/Demo/Asm/AsmAndC3.HC | 23 + TempleOSCD/Demo/Asm/AsmHelloWorld.HC | 50 + TempleOSCD/Demo/Asm/BuzzFizz.HC | 184 + TempleOSCD/Demo/Asm/DivByHand.HC | 22 + TempleOSCD/Demo/Asm/MulByHand.HC | 69 + TempleOSCD/Demo/Asm/PutDec.HC | 49 + TempleOSCD/Demo/Carry.HC | 45 + TempleOSCD/Demo/ClassMeta.HC | 80 + TempleOSCD/Demo/CompileDemo.HC | 37 + TempleOSCD/Demo/DateTime.HC | 11 + TempleOSCD/Demo/DbgDemo.HC | 26 + TempleOSCD/Demo/Define.HC | 36 + TempleOSCD/Demo/Directives.HC | 13 + TempleOSCD/Demo/DolDoc/CallBack.HC | 64 + TempleOSCD/Demo/DolDoc/ClickCallBack.HC | 47 + TempleOSCD/Demo/DolDoc/CursorMove.HC | 38 + TempleOSCD/Demo/DolDoc/Data.HC | 63 + TempleOSCD/Demo/DolDoc/DefineStr.HC | 22 + TempleOSCD/Demo/DolDoc/DemoDoc.DD | Bin 0 -> 4848 bytes TempleOSCD/Demo/DolDoc/FileRead.HC | 80 + TempleOSCD/Demo/DolDoc/Form.HC | 51 + TempleOSCD/Demo/DolDoc/MenuBttn.HC | 75 + TempleOSCD/Demo/DolDoc/MenuSprite.HC | Bin 0 -> 1165 bytes TempleOSCD/Demo/DolDoc/NumBible.HC | 29 + TempleOSCD/Demo/DolDoc/TextDemo.HC | 22 + TempleOSCD/Demo/DolDoc/TreeDemo.HC | 39 + TempleOSCD/Demo/DolDoc/UnusedDefine.HC | 82 + TempleOSCD/Demo/Dsk/BlkDevRep.HC | 13 + TempleOSCD/Demo/Dsk/DataBase.HC | 64 + TempleOSCD/Demo/Dsk/DskRaw.HC | 41 + TempleOSCD/Demo/Dsk/FPrintF.HC | 49 + TempleOSCD/Demo/Dsk/SerializeTree.HC | 35 + TempleOSCD/Demo/Dsk/UnusedSpaceRep.HC | 12 + TempleOSCD/Demo/Exceptions.HC | 47 + TempleOSCD/Demo/ExtChars.HC | 35 + TempleOSCD/Demo/Games/BattleLines.HC | Bin 0 -> 8279 bytes TempleOSCD/Demo/Games/BigGuns.HC | Bin 0 -> 6280 bytes TempleOSCD/Demo/Games/BlackDiamond.HC | Bin 0 -> 62052 bytes TempleOSCD/Demo/Games/BomberGolf.HC | Bin 0 -> 18571 bytes TempleOSCD/Demo/Games/CastleFrankenstein.HC | 770 + TempleOSCD/Demo/Games/CharDemo.HC | 191 + TempleOSCD/Demo/Games/CircleTrace.HC | 128 + TempleOSCD/Demo/Games/Collision.HC | Bin 0 -> 3997 bytes TempleOSCD/Demo/Games/Digits.HC | 80 + TempleOSCD/Demo/Games/DunGen.HC | 569 + TempleOSCD/Demo/Games/ElephantWalk.HC | Bin 0 -> 53842 bytes TempleOSCD/Demo/Games/FlapBat.HC | Bin 0 -> 7669 bytes TempleOSCD/Demo/Games/FlatTops.HC | 901 + TempleOSCD/Demo/Games/Halogen.HC | 162 + TempleOSCD/Demo/Games/MassSpring.HC | 169 + TempleOSCD/Demo/Games/Maze.HC | 112 + TempleOSCD/Demo/Games/RainDrops.HC | 189 + TempleOSCD/Demo/Games/RawHide.HC | 803 + TempleOSCD/Demo/Games/Rocket.HC | Bin 0 -> 80162 bytes TempleOSCD/Demo/Games/RocketScience.HC | Bin 0 -> 88328 bytes TempleOSCD/Demo/Games/Squirt.HC | Bin 0 -> 84516 bytes TempleOSCD/Demo/Games/Stadium/Stadium.HC | Bin 0 -> 3801 bytes TempleOSCD/Demo/Games/Stadium/StadiumBG.DD | Bin 0 -> 302127 bytes TempleOSCD/Demo/Games/Stadium/StadiumBG.GR | Bin 0 -> 4670 bytes TempleOSCD/Demo/Games/Stadium/StadiumGen.HC | 33 + TempleOSCD/Demo/Games/Talons.HC | 1316 + TempleOSCD/Demo/Games/TheDead.HC | Bin 0 -> 6984 bytes TempleOSCD/Demo/Games/TicTacToe.HC | 125 + TempleOSCD/Demo/Games/TreeCheckers.HC | 357 + TempleOSCD/Demo/Games/Varoom.HC | 796 + TempleOSCD/Demo/Games/Wenceslas.HC | 728 + TempleOSCD/Demo/Games/Whap.HC | 173 + TempleOSCD/Demo/Games/Zing.HC | Bin 0 -> 4680 bytes TempleOSCD/Demo/Games/ZoneOut.HC | Bin 0 -> 111685 bytes TempleOSCD/Demo/GlblVars.HC | 76 + TempleOSCD/Demo/Graphics/3DPoly.HC | 117 + TempleOSCD/Demo/Graphics/BSpline.HC | 35 + TempleOSCD/Demo/Graphics/Balloon.HC | 38 + TempleOSCD/Demo/Graphics/Blot.HC | 41 + TempleOSCD/Demo/Graphics/Bounce.HC | 47 + TempleOSCD/Demo/Graphics/Box.HC | 50 + TempleOSCD/Demo/Graphics/Cartesian.HC | 48 + TempleOSCD/Demo/Graphics/CharAnimation.HC | 30 + TempleOSCD/Demo/Graphics/Collision.HC | Bin 0 -> 2532 bytes TempleOSCD/Demo/Graphics/CommonAncestor.HC | 120 + TempleOSCD/Demo/Graphics/Doodle.HC | 48 + TempleOSCD/Demo/Graphics/EdSprite.HC | Bin 0 -> 6619 bytes TempleOSCD/Demo/Graphics/Elephant.HC | Bin 0 -> 5136 bytes TempleOSCD/Demo/Graphics/Extents.HC | Bin 0 -> 1139 bytes TempleOSCD/Demo/Graphics/FontEd.HC | 152 + TempleOSCD/Demo/Graphics/Grid.HC | 30 + TempleOSCD/Demo/Graphics/Hanoi.HC | 154 + TempleOSCD/Demo/Graphics/Lattice.HC | 266 + TempleOSCD/Demo/Graphics/Life.HC | 98 + TempleOSCD/Demo/Graphics/Lines.HC | 26 + TempleOSCD/Demo/Graphics/LowPassFilter.HC | 83 + TempleOSCD/Demo/Graphics/MathAudioDemo.HC | 106 + TempleOSCD/Demo/Graphics/MouseDemo.HC | 11 + TempleOSCD/Demo/Graphics/NetOfDots.HC | 16 + TempleOSCD/Demo/Graphics/Palette.HC | 27 + TempleOSCD/Demo/Graphics/PanText.HC | 35 + TempleOSCD/Demo/Graphics/Pick.HC | Bin 0 -> 2376 bytes TempleOSCD/Demo/Graphics/Pick3D.HC | Bin 0 -> 6560 bytes TempleOSCD/Demo/Graphics/PoleZeros.HC | 174 + TempleOSCD/Demo/Graphics/PredatorPrey.HC | 81 + TempleOSCD/Demo/Graphics/RotateTank.HC | Bin 0 -> 2842 bytes TempleOSCD/Demo/Graphics/ScrnCapture.HC | 15 + TempleOSCD/Demo/Graphics/ScrollBars.HC | Bin 0 -> 4504 bytes TempleOSCD/Demo/Graphics/Shading.HC | 177 + TempleOSCD/Demo/Graphics/Shadow.HC | Bin 0 -> 2296 bytes TempleOSCD/Demo/Graphics/Slider.HC | 110 + TempleOSCD/Demo/Graphics/Speedline.HC | 50 + TempleOSCD/Demo/Graphics/SpritePlot.HC | Bin 0 -> 1464 bytes TempleOSCD/Demo/Graphics/SpritePlot3D.HC | Bin 0 -> 881 bytes TempleOSCD/Demo/Graphics/SpritePut.HC | Bin 0 -> 24901 bytes TempleOSCD/Demo/Graphics/SpritePutExt.HC | 26 + TempleOSCD/Demo/Graphics/SpriteRaw.HC | 38 + TempleOSCD/Demo/Graphics/SpriteText.HC | Bin 0 -> 958 bytes TempleOSCD/Demo/Graphics/SunMoon.HC | 43 + TempleOSCD/Demo/Graphics/Symmetry.HC | 62 + TempleOSCD/Demo/Graphics/Transform.HC | Bin 0 -> 8928 bytes TempleOSCD/Demo/Graphics/WallPaperCtrl.HC | 108 + TempleOSCD/Demo/Graphics/WallPaperFish.HC | Bin 0 -> 6511 bytes TempleOSCD/Demo/Graphics/WinZBuf.HC | 23 + TempleOSCD/Demo/InFile/InDir.IN | 14 + TempleOSCD/Demo/InFile/InEd.DD | 228 + TempleOSCD/Demo/InFile/InEd.IN | 28 + TempleOSCD/Demo/InFile/InPopUp.HC | 12 + TempleOSCD/Demo/InFile/InPopUpWait.IN | 26 + TempleOSCD/Demo/InFile/InProfile.IN | 11 + TempleOSCD/Demo/InFile/InSetIP.HC | 13 + TempleOSCD/Demo/KeyBitMap.HC | Bin 0 -> 853 bytes TempleOSCD/Demo/LastClass.HC | 33 + TempleOSCD/Demo/Lectures/64BitAsmQuiz.DD | 89 + TempleOSCD/Demo/Lectures/AndNotMod.HC | 44 + TempleOSCD/Demo/Lectures/FixedPoint.HC | 96 + .../Demo/Lectures/FixedPointAdvanced.HC | 173 + TempleOSCD/Demo/Lectures/GraphicsCPULoad.HC | 34 + TempleOSCD/Demo/Lectures/InterruptDemo.HC | 85 + TempleOSCD/Demo/Lectures/MiniCompiler.HC | 236 + TempleOSCD/Demo/Lectures/MiniGrLib.HC | 132 + TempleOSCD/Demo/Lectures/NegDisp.HC | 56 + TempleOSCD/Demo/Lectures/Optimization.HC | 108 + TempleOSCD/Demo/Lectures/PCIInterrupts.HC | 73 + TempleOSCD/Demo/Lectures/Ring3.HC | 75 + TempleOSCD/Demo/Lectures/ScrnMemory.HC | 49 + TempleOSCD/Demo/MagicPairs.HC | 375 + TempleOSCD/Demo/MemDemo.HC | 64 + TempleOSCD/Demo/MsgLoop.HC | 23 + TempleOSCD/Demo/MultiCore/Interrupts.HC | 23 + TempleOSCD/Demo/MultiCore/LoadTest.HC | 48 + TempleOSCD/Demo/MultiCore/Lock.HC | 52 + TempleOSCD/Demo/MultiCore/MPAdd.HC | 85 + TempleOSCD/Demo/MultiCore/MPPrint.HC | 17 + TempleOSCD/Demo/MultiCore/MPRadix.HC | 142 + TempleOSCD/Demo/MultiCore/Palindrome.HC | 96 + TempleOSCD/Demo/MultiCore/Primes.HC | 75 + TempleOSCD/Demo/NullCase.HC | 19 + TempleOSCD/Demo/OnceDemo.HC | 12 + TempleOSCD/Demo/ParenWarn.HC | 17 + TempleOSCD/Demo/PhoneNumWords.HC | 63 + TempleOSCD/Demo/Print.HC | 33 + TempleOSCD/Demo/Progress.HC | 80 + TempleOSCD/Demo/Prompt.HC | 25 + TempleOSCD/Demo/PullDownMenu.HC | 89 + TempleOSCD/Demo/RadixSort.HC | 62 + TempleOSCD/Demo/RandDemo.HC | 64 + TempleOSCD/Demo/RegistryDemo.HC | 27 + TempleOSCD/Demo/RevFileDemo/DemoPoemBwd.DD | 42 + TempleOSCD/Demo/RevFileDemo/Rev.HC | 22 + TempleOSCD/Demo/ScrnCodes.HC | 27 + TempleOSCD/Demo/Snd/ASCIIOrgan.HC | Bin 0 -> 4109 bytes TempleOSCD/Demo/Snd/MorseCode.HC | 176 + TempleOSCD/Demo/Snd/OhGreat.HC | 41 + TempleOSCD/Demo/Snd/WaterFowl.HC | Bin 0 -> 308907 bytes TempleOSCD/Demo/SortFileDemo/F64FileGen.HC | 26 + TempleOSCD/Demo/SortFileDemo/F64FileSort.HC | 72 + TempleOSCD/Demo/Spy.HC | 62 + TempleOSCD/Demo/StkGrow.HC | 53 + TempleOSCD/Demo/SubIntAccess.HC | 29 + TempleOSCD/Demo/SubSwitch.HC | 21 + TempleOSCD/Demo/SuggestSpelling.HC | 92 + TempleOSCD/Demo/Templates/Game1.HC | 90 + TempleOSCD/Demo/Templates/Lex1.HC | 16 + TempleOSCD/Demo/Templates/MultiCore1.HC | 29 + TempleOSCD/Demo/Templates/ODE1.HC | 43 + TempleOSCD/Demo/Templates/Registry1.HC | 10 + TempleOSCD/Demo/Templates/Util1.HC | 14 + TempleOSCD/Demo/Templates/Util2.HC | 54 + TempleOSCD/Demo/TimeIns.HC | 35 + TempleOSCD/Demo/ToHtmlToTXTDemo/DemoInPage.DD | 52 + TempleOSCD/Demo/ToHtmlToTXTDemo/HtmlGen.HC | 25 + TempleOSCD/Demo/ToHtmlToTXTDemo/TXTGen.HC | 8 + TempleOSCD/Demo/ToHtmlToTXTDemo/ToHtml.HC | 389 + TempleOSCD/Demo/WebLogDemo/WebLogRep.HC | 524 + TempleOSCD/Demo/WebLogDemo/WebLogScramble.HC | 69 + TempleOSCD/Demo/WebLogDemo/access_150211.LOG | 946 + TempleOSCD/Demo/WebLogDemo/access_150212.LOG | 1062 + TempleOSCD/Demo/WebLogDemo/access_150213.LOG | 656 + TempleOSCD/Demo/WordSearch.HC | 153 + TempleOSCD/Doc/AboutTempleOS.DD | 33 + TempleOSCD/Doc/Asm.DD | 47 + TempleOSCD/Doc/AutoComplete.DD | 19 + TempleOSCD/Doc/Bit.DD | 14 + TempleOSCD/Doc/Boot.DD | Bin 0 -> 5447 bytes TempleOSCD/Doc/CharOverview.DD | 27 + TempleOSCD/Doc/Charter.DD | 73 + TempleOSCD/Doc/ChgLog.DD | 335 + TempleOSCD/Doc/CmdLineOverview.DD | 42 + TempleOSCD/Doc/Comm.HC | 116 + TempleOSCD/Doc/CompilerOverview.DD | 13 + TempleOSCD/Doc/Credits.DD | 61 + TempleOSCD/Doc/Ctrls.DD | 1 + TempleOSCD/Doc/Customize.DD | 6 + TempleOSCD/Doc/CutCorners.DD | 20 + TempleOSCD/Doc/D3.DD | 3 + TempleOSCD/Doc/Date.DD | 1 + TempleOSCD/Doc/DbgFunSeg.DD | 2 + TempleOSCD/Doc/DbgOverview.DD | 42 + TempleOSCD/Doc/Define.DD | 9 + TempleOSCD/Doc/Demands.DD | 59 + TempleOSCD/Doc/DemoIndex.DD | 193 + TempleOSCD/Doc/Directives.DD | 8 + TempleOSCD/Doc/DolDoc.DD | 3 + TempleOSCD/Doc/DolDocOverview.DD | 288 + TempleOSCD/Doc/EdPullDown.DD | 77 + TempleOSCD/Doc/FAQ.DD | 96 + TempleOSCD/Doc/Features.DD | 53 + TempleOSCD/Doc/FileLowLevel.DD | Bin 0 -> 544 bytes TempleOSCD/Doc/FileMgr.DD | 69 + TempleOSCD/Doc/FileMgrPullDown.DD | 33 + TempleOSCD/Doc/FileUtils.DD | 27 + TempleOSCD/Doc/Frame.DD | 1 + TempleOSCD/Doc/GRFiles.DD | 45 + TempleOSCD/Doc/Glossary.DD | 286 + TempleOSCD/Doc/God.DD | 2 + TempleOSCD/Doc/GraphicsOverview.DD | Bin 0 -> 6785 bytes TempleOSCD/Doc/GuideLines.DD | 135 + TempleOSCD/Doc/Hash.DD | Bin 0 -> 2085 bytes TempleOSCD/Doc/HeapDbg.DD | 1 + TempleOSCD/Doc/HelloWorld.DD | 99 + TempleOSCD/Doc/HelpIndex.DD | Bin 0 -> 7000 bytes TempleOSCD/Doc/HelpSystem.DD | 7 + TempleOSCD/Doc/HolyC.DD | 268 + TempleOSCD/Doc/InFile.DD | 7 + TempleOSCD/Doc/Install.DD | 48 + TempleOSCD/Doc/Job.DD | Bin 0 -> 2194 bytes TempleOSCD/Doc/KeyAlloc.DD | 25 + TempleOSCD/Doc/KeyDev.DD | 14 + TempleOSCD/Doc/Lex.DD | 3 + TempleOSCD/Doc/MemOverview.DD | 62 + TempleOSCD/Doc/Menus.DD | 28 + TempleOSCD/Doc/Mouse.DD | 16 + TempleOSCD/Doc/Msgs.DD | 1 + TempleOSCD/Doc/MultiCore.DD | 14 + TempleOSCD/Doc/ODE.DD | 6 + TempleOSCD/Doc/Once.DD | 14 + TempleOSCD/Doc/Options.DD | 19 + TempleOSCD/Doc/Pags.DD | 1 + TempleOSCD/Doc/PreProcessor.DD | 19 + TempleOSCD/Doc/Print.DD | 91 + TempleOSCD/Doc/Profiler.DD | 7 + TempleOSCD/Doc/Que.DD | 1 + TempleOSCD/Doc/Quirks.DD | 47 + TempleOSCD/Doc/RedSea.DD | 40 + TempleOSCD/Doc/Requirements.DD | 30 + TempleOSCD/Doc/Resource.DD | 5 + TempleOSCD/Doc/ScopingLinkage.DD | 120 + TempleOSCD/Doc/Snd.DD | 1 + TempleOSCD/Doc/Sprite.DD | 7 + TempleOSCD/Doc/SpriteBitMap.DD | 5 + TempleOSCD/Doc/SpriteEd.DD | 7 + TempleOSCD/Doc/SpriteEdText.DD | 3 + TempleOSCD/Doc/SpriteMain.DD | 11 + TempleOSCD/Doc/SpriteSideBar.DD | 7 + TempleOSCD/Doc/StandBy.DD | 18 + TempleOSCD/Doc/Start.DD | 5 + TempleOSCD/Doc/StdOutTask.DD | 1 + TempleOSCD/Doc/StdTempleOSPC.DD | 93 + TempleOSCD/Doc/Strategy.DD | 63 + TempleOSCD/Doc/Streams.DD | 7 + TempleOSCD/Doc/TOSZ.DD | 10 + TempleOSCD/Doc/TextBase.DD | 15 + TempleOSCD/Doc/TimeCycles.DD | 1 + TempleOSCD/Doc/TimeDate.DD | 3 + TempleOSCD/Doc/TimeHPET.DD | 1 + TempleOSCD/Doc/TimeJiffy.DD | 7 + TempleOSCD/Doc/Tips.DD | 152 + TempleOSCD/Doc/Transform.DD | 13 + TempleOSCD/Doc/Upgrade.DD | 5 + TempleOSCD/Doc/Welcome.DD | 136 + TempleOSCD/Doc/WhyNotMore.DD | 32 + TempleOSCD/Doc/Widget.DD | 42 + TempleOSCD/Doc/Windows.DD | 1 + TempleOSCD/HomeKeyPlugIns.HC | 202 + TempleOSCD/HomeLocalize.HC | 19 + TempleOSCD/HomeSys.HC | 38 + TempleOSCD/HomeWrappers.HC | 26 + TempleOSCD/Kernel/BlkDev/DskATA.HC | 611 + TempleOSCD/Kernel/BlkDev/DskATAId.HC | 293 + TempleOSCD/Kernel/BlkDev/DskAddDev.HC | 240 + TempleOSCD/Kernel/BlkDev/DskBlk.HC | 109 + TempleOSCD/Kernel/BlkDev/DskBlkDev.HC | 187 + TempleOSCD/Kernel/BlkDev/DskCDDVD.HC | 247 + TempleOSCD/Kernel/BlkDev/DskCFile.HC | 265 + TempleOSCD/Kernel/BlkDev/DskCache.HC | 145 + TempleOSCD/Kernel/BlkDev/DskCluster.HC | 151 + TempleOSCD/Kernel/BlkDev/DskCopy.HC | 106 + TempleOSCD/Kernel/BlkDev/DskDirA.HC | 214 + TempleOSCD/Kernel/BlkDev/DskDirB.HC | 200 + TempleOSCD/Kernel/BlkDev/DskDirContext.HC | 87 + TempleOSCD/Kernel/BlkDev/DskDrv.HC | 367 + TempleOSCD/Kernel/BlkDev/DskFile.HC | 129 + TempleOSCD/Kernel/BlkDev/DskFind.HC | 162 + TempleOSCD/Kernel/BlkDev/DskFmt.HC | 95 + TempleOSCD/Kernel/BlkDev/DskStrA.HC | 343 + TempleOSCD/Kernel/BlkDev/DskStrB.HC | 97 + TempleOSCD/Kernel/BlkDev/FileSysFAT.HC | 961 + TempleOSCD/Kernel/BlkDev/FileSysISO.HC | 232 + TempleOSCD/Kernel/BlkDev/FileSysRedSea.HC | 637 + TempleOSCD/Kernel/BlkDev/MakeBlkDev.HC | 24 + TempleOSCD/Kernel/Compress.HC | 308 + TempleOSCD/Kernel/Display.HC | 121 + TempleOSCD/Kernel/EdLite.HC | 355 + TempleOSCD/Kernel/FontCyrillic.HC | 132 + TempleOSCD/Kernel/FontStd.HC | 132 + TempleOSCD/Kernel/FunSeg.HC | 338 + TempleOSCD/Kernel/Job.HC | 502 + TempleOSCD/Kernel/KCfg.HC | 173 + TempleOSCD/Kernel/KDataTypes.HC | 323 + TempleOSCD/Kernel/KDate.HC | 196 + TempleOSCD/Kernel/KDbg.HC | 652 + TempleOSCD/Kernel/KDefine.HC | 218 + TempleOSCD/Kernel/KEnd.HC | 237 + TempleOSCD/Kernel/KExcept.HC | 149 + TempleOSCD/Kernel/KExts.HC | 109 + TempleOSCD/Kernel/KGlbls.HC | 35 + TempleOSCD/Kernel/KHashA.HC | 265 + TempleOSCD/Kernel/KHashB.HC | 250 + TempleOSCD/Kernel/KInts.HC | 215 + TempleOSCD/Kernel/KLoad.HC | 250 + TempleOSCD/Kernel/KMathA.HC | 648 + TempleOSCD/Kernel/KMathB.HC | 157 + TempleOSCD/Kernel/KMisc.HC | 307 + TempleOSCD/Kernel/KStart16.HC | 206 + TempleOSCD/Kernel/KStart32.HC | 117 + TempleOSCD/Kernel/KStart64.HC | 100 + TempleOSCD/Kernel/KTask.HC | 545 + TempleOSCD/Kernel/KUtils.HC | 471 + TempleOSCD/Kernel/Kernel.MAP | 2951 + TempleOSCD/Kernel/Kernel.PRJ | 61 + TempleOSCD/Kernel/KernelA.HH | 3922 + TempleOSCD/Kernel/KernelB.HH | 293 + TempleOSCD/Kernel/KernelC.HH | 764 + TempleOSCD/Kernel/KeyDev.HC | 219 + TempleOSCD/Kernel/Mem/BlkPool.HC | 73 + TempleOSCD/Kernel/Mem/HeapCtrl.HC | 33 + TempleOSCD/Kernel/Mem/MAllocFree.HC | 464 + TempleOSCD/Kernel/Mem/MakeMem.HC | 8 + TempleOSCD/Kernel/Mem/MemPag.HC | 167 + TempleOSCD/Kernel/Mem/MemPhysical.HC | 181 + TempleOSCD/Kernel/Mem/PageTables.HC | 205 + TempleOSCD/Kernel/MultiProc.HC | 389 + TempleOSCD/Kernel/PCIBIOS.HC | 289 + TempleOSCD/Kernel/QSort.HC | 104 + TempleOSCD/Kernel/Sched.HC | 325 + TempleOSCD/Kernel/SerialDev/Keyboard.HC | 492 + TempleOSCD/Kernel/SerialDev/MakeSerialDev.HC | 5 + TempleOSCD/Kernel/SerialDev/Message.HC | 244 + TempleOSCD/Kernel/SerialDev/Mouse.HC | 367 + TempleOSCD/Kernel/StrA.HC | 686 + TempleOSCD/Kernel/StrB.HC | 187 + TempleOSCD/Kernel/StrPrint.HC | 920 + TempleOSCD/Kernel/StrScan.HC | 339 + TempleOSCD/Linux/GodPassage | 14 + TempleOSCD/Linux/GodWords | 6 + TempleOSCD/Linux/GodWords100 | 6 + TempleOSCD/Linux/TOSZ.CPP | 311 + TempleOSCD/MakeHome.HC | 13 + TempleOSCD/Misc/Bible.TXT | 100117 +++++++++++++++ TempleOSCD/Misc/DoDistro.HC | 52 + TempleOSCD/Misc/OSInstall.HC | 219 + TempleOSCD/Misc/OSTestSuite.HC | 1688 + TempleOSCD/Misc/PCIDevices.DD | 9429 ++ TempleOSCD/Misc/Tour/Tour.IN | 126 + TempleOSCD/Misc/Tour/Tour1.IN | 64 + TempleOSCD/Misc/Tour/Tour2.IN | 68 + TempleOSCD/Misc/Tour/Tour3.IN | 98 + TempleOSCD/Misc/Tour/Tour4.IN | 98 + TempleOSCD/Misc/Tour/Tour5.IN | 34 + TempleOSCD/Misc/Tour/Tour6.IN | 50 + TempleOSCD/Misc/Tour/Tour7.IN | 69 + TempleOSCD/Misc/Tour/Tour8.IN | 25 + TempleOSCD/Misc/Tour/Tour9.IN | 24 + TempleOSCD/Misc/Tour/TourA.IN | 44 + TempleOSCD/Misc/Tour/TourB.IN | 21 + TempleOSCD/Misc/Tour/TourC.IN | 10 + TempleOSCD/Once.HC | 55 + TempleOSCD/PersonalMenu.DD | Bin 0 -> 63274 bytes TempleOSCD/PersonalNotes.DD | 4 + TempleOSCD/ReadMe.TXT | 22 + TempleOSCD/StartOS.HC | 46 + extract_templeos.py | 44 + 661 files changed, 245862 insertions(+) create mode 100644 TempleOSCD/0000Boot/0000Kernel.BIN.C create mode 100644 TempleOSCD/Adam/ABlkDev/ADskA.HC create mode 100644 TempleOSCD/Adam/ABlkDev/ADskB.HC create mode 100644 TempleOSCD/Adam/ABlkDev/ChkDsk.HC create mode 100644 TempleOSCD/Adam/ABlkDev/FileMgr.HC create mode 100644 TempleOSCD/Adam/ABlkDev/MakeABlkDev.HC create mode 100644 TempleOSCD/Adam/ABlkDev/Mount.HC create mode 100644 TempleOSCD/Adam/ABlkDev/PrtDsk.HC create mode 100644 TempleOSCD/Adam/ADbg.HC create mode 100644 TempleOSCD/Adam/ADefine.HC create mode 100644 TempleOSCD/Adam/AExts.HC create mode 100644 TempleOSCD/Adam/AHash.HC create mode 100644 TempleOSCD/Adam/AMath.HC create mode 100644 TempleOSCD/Adam/AMathODE.HC create mode 100644 TempleOSCD/Adam/AMem.HC create mode 100644 TempleOSCD/Adam/AMouse.HC create mode 100644 TempleOSCD/Adam/ARegistry.HC create mode 100644 TempleOSCD/Adam/AutoComplete/ACDefs.DATA create mode 100644 TempleOSCD/Adam/AutoComplete/ACDictGen.HC create mode 100644 TempleOSCD/Adam/AutoComplete/ACFill.HC create mode 100644 TempleOSCD/Adam/AutoComplete/ACInit.HC create mode 100644 TempleOSCD/Adam/AutoComplete/ACTask.HC create mode 100644 TempleOSCD/Adam/AutoComplete/ACWords.DATA create mode 100644 TempleOSCD/Adam/AutoComplete/MakeAC.HC create mode 100644 TempleOSCD/Adam/CPURep.HC create mode 100644 TempleOSCD/Adam/Ctrls/CtrlsA.HC create mode 100644 TempleOSCD/Adam/Ctrls/CtrlsBttn.HC create mode 100644 TempleOSCD/Adam/Ctrls/CtrlsSlider.HC create mode 100644 TempleOSCD/Adam/Ctrls/MakeCtrls.HC create mode 100644 TempleOSCD/Adam/DevInfo.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocBin.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocChar.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocClipBoard.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocCodeTools.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocDblBuf.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocEd.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocExt.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocFile.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocFind.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocForm.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocGet.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocGr.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocHighlight.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocInit.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocLink.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocMacro.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocNew.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocPlain.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocPopUp.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocPutKey.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocPutS.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocRecalc.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocRecalcLib.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocRun.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocTerm.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocTree.HC create mode 100644 TempleOSCD/Adam/DolDoc/DocWidgetWiz.HC create mode 100644 TempleOSCD/Adam/DolDoc/MakeDoc.HC create mode 100644 TempleOSCD/Adam/God/GodBible.HC create mode 100644 TempleOSCD/Adam/God/GodDoodle.HC create mode 100644 TempleOSCD/Adam/God/GodExt.HC create mode 100644 TempleOSCD/Adam/God/GodSong.HC create mode 100644 TempleOSCD/Adam/God/HSNotes.DD create mode 100644 TempleOSCD/Adam/God/HolySpirit.HC create mode 100644 TempleOSCD/Adam/God/MakeGod.HC create mode 100644 TempleOSCD/Adam/God/Vocab.DD create mode 100644 TempleOSCD/Adam/Gr/Gr.HH create mode 100644 TempleOSCD/Adam/Gr/GrAsm.HC create mode 100644 TempleOSCD/Adam/Gr/GrBitMap.HC create mode 100644 TempleOSCD/Adam/Gr/GrComposites.HC create mode 100644 TempleOSCD/Adam/Gr/GrDC.HC create mode 100644 TempleOSCD/Adam/Gr/GrEnd.HC create mode 100644 TempleOSCD/Adam/Gr/GrExt.HC create mode 100644 TempleOSCD/Adam/Gr/GrGlbls.HC create mode 100644 TempleOSCD/Adam/Gr/GrInitA.HC create mode 100644 TempleOSCD/Adam/Gr/GrInitB.HC create mode 100644 TempleOSCD/Adam/Gr/GrMath.HC create mode 100644 TempleOSCD/Adam/Gr/GrPalette.HC create mode 100644 TempleOSCD/Adam/Gr/GrPrimatives.HC create mode 100644 TempleOSCD/Adam/Gr/GrScrn.HC create mode 100644 TempleOSCD/Adam/Gr/GrSpritePlot.HC create mode 100644 TempleOSCD/Adam/Gr/GrTextBase.HC create mode 100644 TempleOSCD/Adam/Gr/MakeGr.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteBitMap.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteCode.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteEd.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteMain.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteMesh.HC create mode 100644 TempleOSCD/Adam/Gr/SpriteNew.HC create mode 100644 TempleOSCD/Adam/Host.HC create mode 100644 TempleOSCD/Adam/InFile.HC create mode 100644 TempleOSCD/Adam/InsReg.HC create mode 100644 TempleOSCD/Adam/MakeAdam.HC create mode 100644 TempleOSCD/Adam/Menu.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootDVD.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootDVDIns.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootHD.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootHDIns.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootMHD.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootMHD2.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootMHDIns.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/BootRAM.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/DskISO9660.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/DskISORedSea.HC create mode 100644 TempleOSCD/Adam/Opt/Boot/MakeBoot.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/Diff.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/DocUtils.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/FileBMP.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/Find.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/HeapLog.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/LineRep.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/LinkChk.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/MakeUtils.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/MemRep.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/Merge.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/Profiler.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/StrUtils.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/TOS.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/ToDolDoc.HC create mode 100644 TempleOSCD/Adam/Opt/Utils/ToTXT.HC create mode 100644 TempleOSCD/Adam/Snd/MakeSnd.HC create mode 100644 TempleOSCD/Adam/Snd/SndEffects.HC create mode 100644 TempleOSCD/Adam/Snd/SndFile.HC create mode 100644 TempleOSCD/Adam/Snd/SndMath.HC create mode 100644 TempleOSCD/Adam/Snd/SndMusic.HC create mode 100644 TempleOSCD/Adam/TaskRep.HC create mode 100644 TempleOSCD/Adam/TaskSettings.HC create mode 100644 TempleOSCD/Adam/Training.HC create mode 100644 TempleOSCD/Adam/WallPaper.HC create mode 100644 TempleOSCD/Adam/Win.HC create mode 100644 TempleOSCD/Adam/WinMgr.HC create mode 100644 TempleOSCD/Apps/Budget/Accts.DD create mode 100644 TempleOSCD/Apps/Budget/BgtAccts.HC create mode 100644 TempleOSCD/Apps/Budget/BgtEntry.HC create mode 100644 TempleOSCD/Apps/Budget/BgtFile.HC create mode 100644 TempleOSCD/Apps/Budget/BgtMain.HC create mode 100644 TempleOSCD/Apps/Budget/BgtStrs.HC create mode 100644 TempleOSCD/Apps/Budget/BgtTemplate.HC create mode 100644 TempleOSCD/Apps/Budget/Budget.HC create mode 100644 TempleOSCD/Apps/Budget/Install.HC create mode 100644 TempleOSCD/Apps/Budget/Load.HC create mode 100644 TempleOSCD/Apps/Budget/Run.HC create mode 100644 TempleOSCD/Apps/GrModels/BallGen.HC create mode 100644 TempleOSCD/Apps/GrModels/Load.HC create mode 100644 TempleOSCD/Apps/GrModels/ManGen.HC create mode 100644 TempleOSCD/Apps/GrModels/Models.HC create mode 100644 TempleOSCD/Apps/GrModels/Run.HC create mode 100644 TempleOSCD/Apps/KeepAway/KeepAway.HC create mode 100644 TempleOSCD/Apps/KeepAway/Load.HC create mode 100644 TempleOSCD/Apps/KeepAway/Run.HC create mode 100644 TempleOSCD/Apps/Logic/Load.HC create mode 100644 TempleOSCD/Apps/Logic/Logic.HC create mode 100644 TempleOSCD/Apps/Logic/Run.HC create mode 100644 TempleOSCD/Apps/Psalmody/Examples/childish.HC create mode 100644 TempleOSCD/Apps/Psalmody/Examples/night.HC create mode 100644 TempleOSCD/Apps/Psalmody/Examples/prosper.HC create mode 100644 TempleOSCD/Apps/Psalmody/Help.DD create mode 100644 TempleOSCD/Apps/Psalmody/Install.HC create mode 100644 TempleOSCD/Apps/Psalmody/JukeBox.HC create mode 100644 TempleOSCD/Apps/Psalmody/JukePuppet.HC create mode 100644 TempleOSCD/Apps/Psalmody/Load.HC create mode 100644 TempleOSCD/Apps/Psalmody/Psalmody.HC create mode 100644 TempleOSCD/Apps/Psalmody/PsalmodyCtrls.HC create mode 100644 TempleOSCD/Apps/Psalmody/PsalmodyDraw.HC create mode 100644 TempleOSCD/Apps/Psalmody/PsalmodyFile.HC create mode 100644 TempleOSCD/Apps/Psalmody/PsalmodyMain.HC create mode 100644 TempleOSCD/Apps/Psalmody/Run.HC create mode 100644 TempleOSCD/Apps/Span/Install.HC create mode 100644 TempleOSCD/Apps/Span/Load.HC create mode 100644 TempleOSCD/Apps/Span/Run.HC create mode 100644 TempleOSCD/Apps/Span/Span.HH create mode 100644 TempleOSCD/Apps/Span/SpanBridge.HC create mode 100644 TempleOSCD/Apps/Span/SpanDerive.HC create mode 100644 TempleOSCD/Apps/Span/SpanMain.HC create mode 100644 TempleOSCD/Apps/Span/SpanNew.HC create mode 100644 TempleOSCD/Apps/Strut/Load.HC create mode 100644 TempleOSCD/Apps/Strut/Run.HC create mode 100644 TempleOSCD/Apps/Strut/Strut.HC create mode 100644 TempleOSCD/Apps/TimeClock/Install.HC create mode 100644 TempleOSCD/Apps/TimeClock/Load.HC create mode 100644 TempleOSCD/Apps/TimeClock/TimeClk.HC create mode 100644 TempleOSCD/Apps/Titanium/Load.HC create mode 100644 TempleOSCD/Apps/Titanium/Run.HC create mode 100644 TempleOSCD/Apps/Titanium/Titanium.HC create mode 100644 TempleOSCD/Apps/ToTheFront/AIs/Human.HC create mode 100644 TempleOSCD/Apps/ToTheFront/AIs/SimpleAI.HC create mode 100644 TempleOSCD/Apps/ToTheFront/Install.HC create mode 100644 TempleOSCD/Apps/ToTheFront/Load.HC create mode 100644 TempleOSCD/Apps/ToTheFront/Run.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFDraw.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFFire.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFGlbls.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFInit.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFLib.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFMove.HC create mode 100644 TempleOSCD/Apps/ToTheFront/TTFVis.HC create mode 100644 TempleOSCD/Apps/ToTheFront/ToTheFront.HC create mode 100644 TempleOSCD/Apps/Vocabulary/Load.HC create mode 100644 TempleOSCD/Apps/Vocabulary/Run.HC create mode 100644 TempleOSCD/Apps/Vocabulary/VocabQuiz.HC create mode 100644 TempleOSCD/Apps/X-Caliber/Load.HC create mode 100644 TempleOSCD/Apps/X-Caliber/Run.HC create mode 100644 TempleOSCD/Apps/X-Caliber/X-Caliber.HC create mode 100644 TempleOSCD/Apps/X-Caliber/XCCtrls.HC create mode 100644 TempleOSCD/Compiler/Asm.HC create mode 100644 TempleOSCD/Compiler/AsmInit.HC create mode 100644 TempleOSCD/Compiler/AsmLib.HC create mode 100644 TempleOSCD/Compiler/AsmResolve.HC create mode 100644 TempleOSCD/Compiler/BackA.HC create mode 100644 TempleOSCD/Compiler/BackB.HC create mode 100644 TempleOSCD/Compiler/BackC.HC create mode 100644 TempleOSCD/Compiler/BackFA.HC create mode 100644 TempleOSCD/Compiler/BackFB.HC create mode 100644 TempleOSCD/Compiler/BackLib.HC create mode 100644 TempleOSCD/Compiler/CExcept.HC create mode 100644 TempleOSCD/Compiler/CExts.HC create mode 100644 TempleOSCD/Compiler/CHash.HC create mode 100644 TempleOSCD/Compiler/CInit.HC create mode 100644 TempleOSCD/Compiler/CMain.HC create mode 100644 TempleOSCD/Compiler/CMisc.HC create mode 100644 TempleOSCD/Compiler/Compiler.BIN create mode 100644 TempleOSCD/Compiler/Compiler.MAP create mode 100644 TempleOSCD/Compiler/Compiler.PRJ create mode 100644 TempleOSCD/Compiler/CompilerA.HH create mode 100644 TempleOSCD/Compiler/CompilerB.HH create mode 100644 TempleOSCD/Compiler/Lex.HC create mode 100644 TempleOSCD/Compiler/LexLib.HC create mode 100644 TempleOSCD/Compiler/OpCodes.DD create mode 100644 TempleOSCD/Compiler/OptLib.HC create mode 100644 TempleOSCD/Compiler/OptPass012.HC create mode 100644 TempleOSCD/Compiler/OptPass3.HC create mode 100644 TempleOSCD/Compiler/OptPass4.HC create mode 100644 TempleOSCD/Compiler/OptPass5.HC create mode 100644 TempleOSCD/Compiler/OptPass6.HC create mode 100644 TempleOSCD/Compiler/OptPass789A.HC create mode 100644 TempleOSCD/Compiler/PrsExp.HC create mode 100644 TempleOSCD/Compiler/PrsLib.HC create mode 100644 TempleOSCD/Compiler/PrsStmt.HC create mode 100644 TempleOSCD/Compiler/PrsVar.HC create mode 100644 TempleOSCD/Compiler/Templates.HC create mode 100644 TempleOSCD/Compiler/UAsm.HC create mode 100644 TempleOSCD/Demo/AcctExample/HomeKeyPlugIns.HC create mode 100644 TempleOSCD/Demo/AcctExample/HomeLocalize.HC create mode 100644 TempleOSCD/Demo/AcctExample/HomeSys.HC create mode 100644 TempleOSCD/Demo/AcctExample/HomeWrappers.HC create mode 100644 TempleOSCD/Demo/AcctExample/MakeHome.HC create mode 100644 TempleOSCD/Demo/AcctExample/Once.HC create mode 100644 TempleOSCD/Demo/AcctExample/PersonalMenu.DD create mode 100644 TempleOSCD/Demo/AcctExample/PersonalNotes.DD create mode 100644 TempleOSCD/Demo/AcctExample/Registry.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/MakeTOS.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSBlog.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSCfg.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSDistro.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSExt.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSHolySpirit.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSIns.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSMisc.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSNIST.HC create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSPolicies.DD create mode 100644 TempleOSCD/Demo/AcctExample/TOS/TOSToHtml.HC create mode 100644 TempleOSCD/Demo/Asm/AsmAndC1.HC create mode 100644 TempleOSCD/Demo/Asm/AsmAndC2.HC create mode 100644 TempleOSCD/Demo/Asm/AsmAndC3.HC create mode 100644 TempleOSCD/Demo/Asm/AsmHelloWorld.HC create mode 100644 TempleOSCD/Demo/Asm/BuzzFizz.HC create mode 100644 TempleOSCD/Demo/Asm/DivByHand.HC create mode 100644 TempleOSCD/Demo/Asm/MulByHand.HC create mode 100644 TempleOSCD/Demo/Asm/PutDec.HC create mode 100644 TempleOSCD/Demo/Carry.HC create mode 100644 TempleOSCD/Demo/ClassMeta.HC create mode 100644 TempleOSCD/Demo/CompileDemo.HC create mode 100644 TempleOSCD/Demo/DateTime.HC create mode 100644 TempleOSCD/Demo/DbgDemo.HC create mode 100644 TempleOSCD/Demo/Define.HC create mode 100644 TempleOSCD/Demo/Directives.HC create mode 100644 TempleOSCD/Demo/DolDoc/CallBack.HC create mode 100644 TempleOSCD/Demo/DolDoc/ClickCallBack.HC create mode 100644 TempleOSCD/Demo/DolDoc/CursorMove.HC create mode 100644 TempleOSCD/Demo/DolDoc/Data.HC create mode 100644 TempleOSCD/Demo/DolDoc/DefineStr.HC create mode 100644 TempleOSCD/Demo/DolDoc/DemoDoc.DD create mode 100644 TempleOSCD/Demo/DolDoc/FileRead.HC create mode 100644 TempleOSCD/Demo/DolDoc/Form.HC create mode 100644 TempleOSCD/Demo/DolDoc/MenuBttn.HC create mode 100644 TempleOSCD/Demo/DolDoc/MenuSprite.HC create mode 100644 TempleOSCD/Demo/DolDoc/NumBible.HC create mode 100644 TempleOSCD/Demo/DolDoc/TextDemo.HC create mode 100644 TempleOSCD/Demo/DolDoc/TreeDemo.HC create mode 100644 TempleOSCD/Demo/DolDoc/UnusedDefine.HC create mode 100644 TempleOSCD/Demo/Dsk/BlkDevRep.HC create mode 100644 TempleOSCD/Demo/Dsk/DataBase.HC create mode 100644 TempleOSCD/Demo/Dsk/DskRaw.HC create mode 100644 TempleOSCD/Demo/Dsk/FPrintF.HC create mode 100644 TempleOSCD/Demo/Dsk/SerializeTree.HC create mode 100644 TempleOSCD/Demo/Dsk/UnusedSpaceRep.HC create mode 100644 TempleOSCD/Demo/Exceptions.HC create mode 100644 TempleOSCD/Demo/ExtChars.HC create mode 100644 TempleOSCD/Demo/Games/BattleLines.HC create mode 100644 TempleOSCD/Demo/Games/BigGuns.HC create mode 100644 TempleOSCD/Demo/Games/BlackDiamond.HC create mode 100644 TempleOSCD/Demo/Games/BomberGolf.HC create mode 100644 TempleOSCD/Demo/Games/CastleFrankenstein.HC create mode 100644 TempleOSCD/Demo/Games/CharDemo.HC create mode 100644 TempleOSCD/Demo/Games/CircleTrace.HC create mode 100644 TempleOSCD/Demo/Games/Collision.HC create mode 100644 TempleOSCD/Demo/Games/Digits.HC create mode 100644 TempleOSCD/Demo/Games/DunGen.HC create mode 100644 TempleOSCD/Demo/Games/ElephantWalk.HC create mode 100644 TempleOSCD/Demo/Games/FlapBat.HC create mode 100644 TempleOSCD/Demo/Games/FlatTops.HC create mode 100644 TempleOSCD/Demo/Games/Halogen.HC create mode 100644 TempleOSCD/Demo/Games/MassSpring.HC create mode 100644 TempleOSCD/Demo/Games/Maze.HC create mode 100644 TempleOSCD/Demo/Games/RainDrops.HC create mode 100644 TempleOSCD/Demo/Games/RawHide.HC create mode 100644 TempleOSCD/Demo/Games/Rocket.HC create mode 100644 TempleOSCD/Demo/Games/RocketScience.HC create mode 100644 TempleOSCD/Demo/Games/Squirt.HC create mode 100644 TempleOSCD/Demo/Games/Stadium/Stadium.HC create mode 100644 TempleOSCD/Demo/Games/Stadium/StadiumBG.DD create mode 100644 TempleOSCD/Demo/Games/Stadium/StadiumBG.GR create mode 100644 TempleOSCD/Demo/Games/Stadium/StadiumGen.HC create mode 100644 TempleOSCD/Demo/Games/Talons.HC create mode 100644 TempleOSCD/Demo/Games/TheDead.HC create mode 100644 TempleOSCD/Demo/Games/TicTacToe.HC create mode 100644 TempleOSCD/Demo/Games/TreeCheckers.HC create mode 100644 TempleOSCD/Demo/Games/Varoom.HC create mode 100644 TempleOSCD/Demo/Games/Wenceslas.HC create mode 100644 TempleOSCD/Demo/Games/Whap.HC create mode 100644 TempleOSCD/Demo/Games/Zing.HC create mode 100644 TempleOSCD/Demo/Games/ZoneOut.HC create mode 100644 TempleOSCD/Demo/GlblVars.HC create mode 100644 TempleOSCD/Demo/Graphics/3DPoly.HC create mode 100644 TempleOSCD/Demo/Graphics/BSpline.HC create mode 100644 TempleOSCD/Demo/Graphics/Balloon.HC create mode 100644 TempleOSCD/Demo/Graphics/Blot.HC create mode 100644 TempleOSCD/Demo/Graphics/Bounce.HC create mode 100644 TempleOSCD/Demo/Graphics/Box.HC create mode 100644 TempleOSCD/Demo/Graphics/Cartesian.HC create mode 100644 TempleOSCD/Demo/Graphics/CharAnimation.HC create mode 100644 TempleOSCD/Demo/Graphics/Collision.HC create mode 100644 TempleOSCD/Demo/Graphics/CommonAncestor.HC create mode 100644 TempleOSCD/Demo/Graphics/Doodle.HC create mode 100644 TempleOSCD/Demo/Graphics/EdSprite.HC create mode 100644 TempleOSCD/Demo/Graphics/Elephant.HC create mode 100644 TempleOSCD/Demo/Graphics/Extents.HC create mode 100644 TempleOSCD/Demo/Graphics/FontEd.HC create mode 100644 TempleOSCD/Demo/Graphics/Grid.HC create mode 100644 TempleOSCD/Demo/Graphics/Hanoi.HC create mode 100644 TempleOSCD/Demo/Graphics/Lattice.HC create mode 100644 TempleOSCD/Demo/Graphics/Life.HC create mode 100644 TempleOSCD/Demo/Graphics/Lines.HC create mode 100644 TempleOSCD/Demo/Graphics/LowPassFilter.HC create mode 100644 TempleOSCD/Demo/Graphics/MathAudioDemo.HC create mode 100644 TempleOSCD/Demo/Graphics/MouseDemo.HC create mode 100644 TempleOSCD/Demo/Graphics/NetOfDots.HC create mode 100644 TempleOSCD/Demo/Graphics/Palette.HC create mode 100644 TempleOSCD/Demo/Graphics/PanText.HC create mode 100644 TempleOSCD/Demo/Graphics/Pick.HC create mode 100644 TempleOSCD/Demo/Graphics/Pick3D.HC create mode 100644 TempleOSCD/Demo/Graphics/PoleZeros.HC create mode 100644 TempleOSCD/Demo/Graphics/PredatorPrey.HC create mode 100644 TempleOSCD/Demo/Graphics/RotateTank.HC create mode 100644 TempleOSCD/Demo/Graphics/ScrnCapture.HC create mode 100644 TempleOSCD/Demo/Graphics/ScrollBars.HC create mode 100644 TempleOSCD/Demo/Graphics/Shading.HC create mode 100644 TempleOSCD/Demo/Graphics/Shadow.HC create mode 100644 TempleOSCD/Demo/Graphics/Slider.HC create mode 100644 TempleOSCD/Demo/Graphics/Speedline.HC create mode 100644 TempleOSCD/Demo/Graphics/SpritePlot.HC create mode 100644 TempleOSCD/Demo/Graphics/SpritePlot3D.HC create mode 100644 TempleOSCD/Demo/Graphics/SpritePut.HC create mode 100644 TempleOSCD/Demo/Graphics/SpritePutExt.HC create mode 100644 TempleOSCD/Demo/Graphics/SpriteRaw.HC create mode 100644 TempleOSCD/Demo/Graphics/SpriteText.HC create mode 100644 TempleOSCD/Demo/Graphics/SunMoon.HC create mode 100644 TempleOSCD/Demo/Graphics/Symmetry.HC create mode 100644 TempleOSCD/Demo/Graphics/Transform.HC create mode 100644 TempleOSCD/Demo/Graphics/WallPaperCtrl.HC create mode 100644 TempleOSCD/Demo/Graphics/WallPaperFish.HC create mode 100644 TempleOSCD/Demo/Graphics/WinZBuf.HC create mode 100644 TempleOSCD/Demo/InFile/InDir.IN create mode 100644 TempleOSCD/Demo/InFile/InEd.DD create mode 100644 TempleOSCD/Demo/InFile/InEd.IN create mode 100644 TempleOSCD/Demo/InFile/InPopUp.HC create mode 100644 TempleOSCD/Demo/InFile/InPopUpWait.IN create mode 100644 TempleOSCD/Demo/InFile/InProfile.IN create mode 100644 TempleOSCD/Demo/InFile/InSetIP.HC create mode 100644 TempleOSCD/Demo/KeyBitMap.HC create mode 100644 TempleOSCD/Demo/LastClass.HC create mode 100644 TempleOSCD/Demo/Lectures/64BitAsmQuiz.DD create mode 100644 TempleOSCD/Demo/Lectures/AndNotMod.HC create mode 100644 TempleOSCD/Demo/Lectures/FixedPoint.HC create mode 100644 TempleOSCD/Demo/Lectures/FixedPointAdvanced.HC create mode 100644 TempleOSCD/Demo/Lectures/GraphicsCPULoad.HC create mode 100644 TempleOSCD/Demo/Lectures/InterruptDemo.HC create mode 100644 TempleOSCD/Demo/Lectures/MiniCompiler.HC create mode 100644 TempleOSCD/Demo/Lectures/MiniGrLib.HC create mode 100644 TempleOSCD/Demo/Lectures/NegDisp.HC create mode 100644 TempleOSCD/Demo/Lectures/Optimization.HC create mode 100644 TempleOSCD/Demo/Lectures/PCIInterrupts.HC create mode 100644 TempleOSCD/Demo/Lectures/Ring3.HC create mode 100644 TempleOSCD/Demo/Lectures/ScrnMemory.HC create mode 100644 TempleOSCD/Demo/MagicPairs.HC create mode 100644 TempleOSCD/Demo/MemDemo.HC create mode 100644 TempleOSCD/Demo/MsgLoop.HC create mode 100644 TempleOSCD/Demo/MultiCore/Interrupts.HC create mode 100644 TempleOSCD/Demo/MultiCore/LoadTest.HC create mode 100644 TempleOSCD/Demo/MultiCore/Lock.HC create mode 100644 TempleOSCD/Demo/MultiCore/MPAdd.HC create mode 100644 TempleOSCD/Demo/MultiCore/MPPrint.HC create mode 100644 TempleOSCD/Demo/MultiCore/MPRadix.HC create mode 100644 TempleOSCD/Demo/MultiCore/Palindrome.HC create mode 100644 TempleOSCD/Demo/MultiCore/Primes.HC create mode 100644 TempleOSCD/Demo/NullCase.HC create mode 100644 TempleOSCD/Demo/OnceDemo.HC create mode 100644 TempleOSCD/Demo/ParenWarn.HC create mode 100644 TempleOSCD/Demo/PhoneNumWords.HC create mode 100644 TempleOSCD/Demo/Print.HC create mode 100644 TempleOSCD/Demo/Progress.HC create mode 100644 TempleOSCD/Demo/Prompt.HC create mode 100644 TempleOSCD/Demo/PullDownMenu.HC create mode 100644 TempleOSCD/Demo/RadixSort.HC create mode 100644 TempleOSCD/Demo/RandDemo.HC create mode 100644 TempleOSCD/Demo/RegistryDemo.HC create mode 100644 TempleOSCD/Demo/RevFileDemo/DemoPoemBwd.DD create mode 100644 TempleOSCD/Demo/RevFileDemo/Rev.HC create mode 100644 TempleOSCD/Demo/ScrnCodes.HC create mode 100644 TempleOSCD/Demo/Snd/ASCIIOrgan.HC create mode 100644 TempleOSCD/Demo/Snd/MorseCode.HC create mode 100644 TempleOSCD/Demo/Snd/OhGreat.HC create mode 100644 TempleOSCD/Demo/Snd/WaterFowl.HC create mode 100644 TempleOSCD/Demo/SortFileDemo/F64FileGen.HC create mode 100644 TempleOSCD/Demo/SortFileDemo/F64FileSort.HC create mode 100644 TempleOSCD/Demo/Spy.HC create mode 100644 TempleOSCD/Demo/StkGrow.HC create mode 100644 TempleOSCD/Demo/SubIntAccess.HC create mode 100644 TempleOSCD/Demo/SubSwitch.HC create mode 100644 TempleOSCD/Demo/SuggestSpelling.HC create mode 100644 TempleOSCD/Demo/Templates/Game1.HC create mode 100644 TempleOSCD/Demo/Templates/Lex1.HC create mode 100644 TempleOSCD/Demo/Templates/MultiCore1.HC create mode 100644 TempleOSCD/Demo/Templates/ODE1.HC create mode 100644 TempleOSCD/Demo/Templates/Registry1.HC create mode 100644 TempleOSCD/Demo/Templates/Util1.HC create mode 100644 TempleOSCD/Demo/Templates/Util2.HC create mode 100644 TempleOSCD/Demo/TimeIns.HC create mode 100644 TempleOSCD/Demo/ToHtmlToTXTDemo/DemoInPage.DD create mode 100644 TempleOSCD/Demo/ToHtmlToTXTDemo/HtmlGen.HC create mode 100644 TempleOSCD/Demo/ToHtmlToTXTDemo/TXTGen.HC create mode 100644 TempleOSCD/Demo/ToHtmlToTXTDemo/ToHtml.HC create mode 100644 TempleOSCD/Demo/WebLogDemo/WebLogRep.HC create mode 100644 TempleOSCD/Demo/WebLogDemo/WebLogScramble.HC create mode 100644 TempleOSCD/Demo/WebLogDemo/access_150211.LOG create mode 100644 TempleOSCD/Demo/WebLogDemo/access_150212.LOG create mode 100644 TempleOSCD/Demo/WebLogDemo/access_150213.LOG create mode 100644 TempleOSCD/Demo/WordSearch.HC create mode 100644 TempleOSCD/Doc/AboutTempleOS.DD create mode 100644 TempleOSCD/Doc/Asm.DD create mode 100644 TempleOSCD/Doc/AutoComplete.DD create mode 100644 TempleOSCD/Doc/Bit.DD create mode 100644 TempleOSCD/Doc/Boot.DD create mode 100644 TempleOSCD/Doc/CharOverview.DD create mode 100644 TempleOSCD/Doc/Charter.DD create mode 100644 TempleOSCD/Doc/ChgLog.DD create mode 100644 TempleOSCD/Doc/CmdLineOverview.DD create mode 100644 TempleOSCD/Doc/Comm.HC create mode 100644 TempleOSCD/Doc/CompilerOverview.DD create mode 100644 TempleOSCD/Doc/Credits.DD create mode 100644 TempleOSCD/Doc/Ctrls.DD create mode 100644 TempleOSCD/Doc/Customize.DD create mode 100644 TempleOSCD/Doc/CutCorners.DD create mode 100644 TempleOSCD/Doc/D3.DD create mode 100644 TempleOSCD/Doc/Date.DD create mode 100644 TempleOSCD/Doc/DbgFunSeg.DD create mode 100644 TempleOSCD/Doc/DbgOverview.DD create mode 100644 TempleOSCD/Doc/Define.DD create mode 100644 TempleOSCD/Doc/Demands.DD create mode 100644 TempleOSCD/Doc/DemoIndex.DD create mode 100644 TempleOSCD/Doc/Directives.DD create mode 100644 TempleOSCD/Doc/DolDoc.DD create mode 100644 TempleOSCD/Doc/DolDocOverview.DD create mode 100644 TempleOSCD/Doc/EdPullDown.DD create mode 100644 TempleOSCD/Doc/FAQ.DD create mode 100644 TempleOSCD/Doc/Features.DD create mode 100644 TempleOSCD/Doc/FileLowLevel.DD create mode 100644 TempleOSCD/Doc/FileMgr.DD create mode 100644 TempleOSCD/Doc/FileMgrPullDown.DD create mode 100644 TempleOSCD/Doc/FileUtils.DD create mode 100644 TempleOSCD/Doc/Frame.DD create mode 100644 TempleOSCD/Doc/GRFiles.DD create mode 100644 TempleOSCD/Doc/Glossary.DD create mode 100644 TempleOSCD/Doc/God.DD create mode 100644 TempleOSCD/Doc/GraphicsOverview.DD create mode 100644 TempleOSCD/Doc/GuideLines.DD create mode 100644 TempleOSCD/Doc/Hash.DD create mode 100644 TempleOSCD/Doc/HeapDbg.DD create mode 100644 TempleOSCD/Doc/HelloWorld.DD create mode 100644 TempleOSCD/Doc/HelpIndex.DD create mode 100644 TempleOSCD/Doc/HelpSystem.DD create mode 100644 TempleOSCD/Doc/HolyC.DD create mode 100644 TempleOSCD/Doc/InFile.DD create mode 100644 TempleOSCD/Doc/Install.DD create mode 100644 TempleOSCD/Doc/Job.DD create mode 100644 TempleOSCD/Doc/KeyAlloc.DD create mode 100644 TempleOSCD/Doc/KeyDev.DD create mode 100644 TempleOSCD/Doc/Lex.DD create mode 100644 TempleOSCD/Doc/MemOverview.DD create mode 100644 TempleOSCD/Doc/Menus.DD create mode 100644 TempleOSCD/Doc/Mouse.DD create mode 100644 TempleOSCD/Doc/Msgs.DD create mode 100644 TempleOSCD/Doc/MultiCore.DD create mode 100644 TempleOSCD/Doc/ODE.DD create mode 100644 TempleOSCD/Doc/Once.DD create mode 100644 TempleOSCD/Doc/Options.DD create mode 100644 TempleOSCD/Doc/Pags.DD create mode 100644 TempleOSCD/Doc/PreProcessor.DD create mode 100644 TempleOSCD/Doc/Print.DD create mode 100644 TempleOSCD/Doc/Profiler.DD create mode 100644 TempleOSCD/Doc/Que.DD create mode 100644 TempleOSCD/Doc/Quirks.DD create mode 100644 TempleOSCD/Doc/RedSea.DD create mode 100644 TempleOSCD/Doc/Requirements.DD create mode 100644 TempleOSCD/Doc/Resource.DD create mode 100644 TempleOSCD/Doc/ScopingLinkage.DD create mode 100644 TempleOSCD/Doc/Snd.DD create mode 100644 TempleOSCD/Doc/Sprite.DD create mode 100644 TempleOSCD/Doc/SpriteBitMap.DD create mode 100644 TempleOSCD/Doc/SpriteEd.DD create mode 100644 TempleOSCD/Doc/SpriteEdText.DD create mode 100644 TempleOSCD/Doc/SpriteMain.DD create mode 100644 TempleOSCD/Doc/SpriteSideBar.DD create mode 100644 TempleOSCD/Doc/StandBy.DD create mode 100644 TempleOSCD/Doc/Start.DD create mode 100644 TempleOSCD/Doc/StdOutTask.DD create mode 100644 TempleOSCD/Doc/StdTempleOSPC.DD create mode 100644 TempleOSCD/Doc/Strategy.DD create mode 100644 TempleOSCD/Doc/Streams.DD create mode 100644 TempleOSCD/Doc/TOSZ.DD create mode 100644 TempleOSCD/Doc/TextBase.DD create mode 100644 TempleOSCD/Doc/TimeCycles.DD create mode 100644 TempleOSCD/Doc/TimeDate.DD create mode 100644 TempleOSCD/Doc/TimeHPET.DD create mode 100644 TempleOSCD/Doc/TimeJiffy.DD create mode 100644 TempleOSCD/Doc/Tips.DD create mode 100644 TempleOSCD/Doc/Transform.DD create mode 100644 TempleOSCD/Doc/Upgrade.DD create mode 100644 TempleOSCD/Doc/Welcome.DD create mode 100644 TempleOSCD/Doc/WhyNotMore.DD create mode 100644 TempleOSCD/Doc/Widget.DD create mode 100644 TempleOSCD/Doc/Windows.DD create mode 100644 TempleOSCD/HomeKeyPlugIns.HC create mode 100644 TempleOSCD/HomeLocalize.HC create mode 100644 TempleOSCD/HomeSys.HC create mode 100644 TempleOSCD/HomeWrappers.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskATA.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskATAId.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskAddDev.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskBlk.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskBlkDev.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskCDDVD.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskCFile.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskCache.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskCluster.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskCopy.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskDirA.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskDirB.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskDirContext.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskDrv.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskFile.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskFind.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskFmt.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskStrA.HC create mode 100644 TempleOSCD/Kernel/BlkDev/DskStrB.HC create mode 100644 TempleOSCD/Kernel/BlkDev/FileSysFAT.HC create mode 100644 TempleOSCD/Kernel/BlkDev/FileSysISO.HC create mode 100644 TempleOSCD/Kernel/BlkDev/FileSysRedSea.HC create mode 100644 TempleOSCD/Kernel/BlkDev/MakeBlkDev.HC create mode 100644 TempleOSCD/Kernel/Compress.HC create mode 100644 TempleOSCD/Kernel/Display.HC create mode 100644 TempleOSCD/Kernel/EdLite.HC create mode 100644 TempleOSCD/Kernel/FontCyrillic.HC create mode 100644 TempleOSCD/Kernel/FontStd.HC create mode 100644 TempleOSCD/Kernel/FunSeg.HC create mode 100644 TempleOSCD/Kernel/Job.HC create mode 100644 TempleOSCD/Kernel/KCfg.HC create mode 100644 TempleOSCD/Kernel/KDataTypes.HC create mode 100644 TempleOSCD/Kernel/KDate.HC create mode 100644 TempleOSCD/Kernel/KDbg.HC create mode 100644 TempleOSCD/Kernel/KDefine.HC create mode 100644 TempleOSCD/Kernel/KEnd.HC create mode 100644 TempleOSCD/Kernel/KExcept.HC create mode 100644 TempleOSCD/Kernel/KExts.HC create mode 100644 TempleOSCD/Kernel/KGlbls.HC create mode 100644 TempleOSCD/Kernel/KHashA.HC create mode 100644 TempleOSCD/Kernel/KHashB.HC create mode 100644 TempleOSCD/Kernel/KInts.HC create mode 100644 TempleOSCD/Kernel/KLoad.HC create mode 100644 TempleOSCD/Kernel/KMathA.HC create mode 100644 TempleOSCD/Kernel/KMathB.HC create mode 100644 TempleOSCD/Kernel/KMisc.HC create mode 100644 TempleOSCD/Kernel/KStart16.HC create mode 100644 TempleOSCD/Kernel/KStart32.HC create mode 100644 TempleOSCD/Kernel/KStart64.HC create mode 100644 TempleOSCD/Kernel/KTask.HC create mode 100644 TempleOSCD/Kernel/KUtils.HC create mode 100644 TempleOSCD/Kernel/Kernel.MAP create mode 100644 TempleOSCD/Kernel/Kernel.PRJ create mode 100644 TempleOSCD/Kernel/KernelA.HH create mode 100644 TempleOSCD/Kernel/KernelB.HH create mode 100644 TempleOSCD/Kernel/KernelC.HH create mode 100644 TempleOSCD/Kernel/KeyDev.HC create mode 100644 TempleOSCD/Kernel/Mem/BlkPool.HC create mode 100644 TempleOSCD/Kernel/Mem/HeapCtrl.HC create mode 100644 TempleOSCD/Kernel/Mem/MAllocFree.HC create mode 100644 TempleOSCD/Kernel/Mem/MakeMem.HC create mode 100644 TempleOSCD/Kernel/Mem/MemPag.HC create mode 100644 TempleOSCD/Kernel/Mem/MemPhysical.HC create mode 100644 TempleOSCD/Kernel/Mem/PageTables.HC create mode 100644 TempleOSCD/Kernel/MultiProc.HC create mode 100644 TempleOSCD/Kernel/PCIBIOS.HC create mode 100644 TempleOSCD/Kernel/QSort.HC create mode 100644 TempleOSCD/Kernel/Sched.HC create mode 100644 TempleOSCD/Kernel/SerialDev/Keyboard.HC create mode 100644 TempleOSCD/Kernel/SerialDev/MakeSerialDev.HC create mode 100644 TempleOSCD/Kernel/SerialDev/Message.HC create mode 100644 TempleOSCD/Kernel/SerialDev/Mouse.HC create mode 100644 TempleOSCD/Kernel/StrA.HC create mode 100644 TempleOSCD/Kernel/StrB.HC create mode 100644 TempleOSCD/Kernel/StrPrint.HC create mode 100644 TempleOSCD/Kernel/StrScan.HC create mode 100644 TempleOSCD/Linux/GodPassage create mode 100644 TempleOSCD/Linux/GodWords create mode 100644 TempleOSCD/Linux/GodWords100 create mode 100644 TempleOSCD/Linux/TOSZ.CPP create mode 100644 TempleOSCD/MakeHome.HC create mode 100644 TempleOSCD/Misc/Bible.TXT create mode 100644 TempleOSCD/Misc/DoDistro.HC create mode 100644 TempleOSCD/Misc/OSInstall.HC create mode 100644 TempleOSCD/Misc/OSTestSuite.HC create mode 100644 TempleOSCD/Misc/PCIDevices.DD create mode 100644 TempleOSCD/Misc/Tour/Tour.IN create mode 100644 TempleOSCD/Misc/Tour/Tour1.IN create mode 100644 TempleOSCD/Misc/Tour/Tour2.IN create mode 100644 TempleOSCD/Misc/Tour/Tour3.IN create mode 100644 TempleOSCD/Misc/Tour/Tour4.IN create mode 100644 TempleOSCD/Misc/Tour/Tour5.IN create mode 100644 TempleOSCD/Misc/Tour/Tour6.IN create mode 100644 TempleOSCD/Misc/Tour/Tour7.IN create mode 100644 TempleOSCD/Misc/Tour/Tour8.IN create mode 100644 TempleOSCD/Misc/Tour/Tour9.IN create mode 100644 TempleOSCD/Misc/Tour/TourA.IN create mode 100644 TempleOSCD/Misc/Tour/TourB.IN create mode 100644 TempleOSCD/Misc/Tour/TourC.IN create mode 100644 TempleOSCD/Once.HC create mode 100644 TempleOSCD/PersonalMenu.DD create mode 100644 TempleOSCD/PersonalNotes.DD create mode 100644 TempleOSCD/ReadMe.TXT create mode 100644 TempleOSCD/StartOS.HC create mode 100644 extract_templeos.py diff --git a/TempleOSCD/0000Boot/0000Kernel.BIN.C b/TempleOSCD/0000Boot/0000Kernel.BIN.C new file mode 100644 index 0000000000000000000000000000000000000000..5e694754d2d6b5549c53a5649a1eaf9599eee2d1 GIT binary patch literal 192128 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 om6AE-Rs9H@Ii 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ž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

K!HJZE0hAb^=?t1qyK5z=oLTTX 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�s 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 literal 0 HcmV?d00001 diff --git a/TempleOSCD/Adam/ABlkDev/ADskA.HC b/TempleOSCD/Adam/ABlkDev/ADskA.HC new file mode 100644 index 0000000..3788be0 --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/ADskA.HC @@ -0,0 +1,252 @@ +#help_index "File/Cmd Line (Typically);Cmd Line (Typically)" +public U8 *DBlk(I64 blk,Bool write=FALSE) +{//Dump disk block. Optionally, write. +//If you set write to TRUE, the block will + //be written when you press . + //See $LK,"::/Demo/Dsk/DskRaw.HC"$. + U8 *buf=MAlloc(BLK_SIZE); + + RBlks(Fs->cur_dv,buf,blk,1); + DocD(buf,BLK_SIZE); + if (write) { + "Edit and press to write or \n"; + if (View) { + "Write\n"; + WBlks(Fs->cur_dv,buf,blk,1); + } + } + return buf; +} + +public U8 *DCluster(I64 c,Bool write=FALSE,I64 num=0) +{//Dump disk cluster. Optionally, write. +//If you set write to TRUE, the cluster will + //be written when you press . + //See $LK,"::/Demo/Dsk/DskRaw.HC"$. + //Do $LK,"Dir",A="MN:Dir"$("*",TRUE); to get cluster numbers of files. + U8 *buf=MAlloc(Fs->cur_dv->spc<cur_dv,c,num); + RClusters(Fs->cur_dv,buf,c,1); + "Cluster:%X\n",c; + DocD(buf,Fs->cur_dv->spc< to write or \n"; + if (View) { + "Write\n"; + WClusters(Fs->cur_dv,buf,c,1); + } + } + return buf; +} + +public U8 *Dump(U8 *filename,Bool write=FALSE) +{//Dump file. Optionally, write. +//If you set write to TRUE, the file will + //be written when you press . + U8 *buf; + I64 size; + if (buf=FileRead(filename,&size)) { + DocD(buf,size); + if (write) { + "Edit and press to write or \n"; + if (View) { + "Write\n"; + FileWrite(filename,buf,size); + } + } + } + return buf; +} + +public Bool Copy(U8 *src_files_find_mask,U8 *dst_files_find_mask=".") +{//Copy files. +//If the name ends in ".Z", it will + //be stored compressed. If not ".Z" + //it will be stored uncompressed. + Bool res=TRUE; + CDirContext *dirc; + CDirEntry *tmpde,*tmpde1; + U8 *st; + if (!(tmpde1=FilesFind(src_files_find_mask,FUF_CLUSTER_ORDER))) + return FALSE; + if (IsDir(dst_files_find_mask)) { + if (dirc=DirContextNew(dst_files_find_mask,TRUE)) { + tmpde=tmpde1; + while (tmpde) { + if (!(tmpde->attr & RS_ATTR_DIR)) { + st=FileNameAbs(tmpde->name); + if (!CopySingle(tmpde->full_name,st)) + res=FALSE; + Free(st); + } + tmpde=tmpde->next; + } + DirContextDel(dirc); + } + DirTreeDel(tmpde1); + return res; + } else { + DirTreeDel(tmpde1); + return CopySingle(src_files_find_mask,dst_files_find_mask); + } +} + +public Bool Move(U8 *f1,U8 *f2) +{//Move files from one location to another or rename. + if (Copy(f1,f2)) { + Del(f1); + return TRUE; + } + return FALSE; +} + +I64 CopyTree2(CDirEntry *tmpde,I64 src_dir_len,I64 dst_dir_len,U8 *dst_dir) +{ + U8 *st; + I64 res=1; + while (tmpde) { + st=MAlloc(StrLen(tmpde->full_name)+dst_dir_len+2); + MemCpy(st,dst_dir,dst_dir_len); + StrCpy(st+dst_dir_len,tmpde->full_name+src_dir_len); + if (tmpde->attr & RS_ATTR_DIR) { + MkDir(st,LinkedLstCnt(tmpde->sub)); + res+=CopyTree2(tmpde->sub,src_dir_len,dst_dir_len,dst_dir); + } else + if (CopySingle(tmpde->full_name,st)) + res++; + Free(st); + tmpde=tmpde->next; + } + return res; +} +public I64 CopyTree(U8 *src_files_find_mask,U8 *dst_files_find_mask, + Bool no_mask=TRUE) +{//Copy directory tree. +//Returns the count of copied files (not dirs). + CDirContext *dirc; + CDirEntry *tmpde=NULL; + I64 res=0,i1,i2; + U8 *st1,*st2; + + st1=DirNameAbs(src_files_find_mask); + st2=DirNameAbs(dst_files_find_mask); + i1=StrLen(st1); + if (!StrNCmp(st1,st2,i1) && (st2[i1]=='/' || !st2[i1]) ) { + Free(st1); + Free(st2); + return 0; + } + Free(st1); + Free(st2); + if (dirc=DirContextNew(src_files_find_mask,TRUE,,no_mask)) { + tmpde=FilesFind(dirc->mask,FUF_RECURSE); + st1=CurDir; + DirContextDel(dirc); + i1=StrLen(st1); + if (i1==3) i1--; + if (dirc=DirContextNew(dst_files_find_mask,TRUE,TRUE)) { + st2=CurDir; + i2=StrLen(st2); + if (i2==3) i2--; + res=CopyTree2(tmpde,i1,i2,st2); + DirContextDel(dirc); + Free(st2); + } + DirTreeDel(tmpde); + Free(st1); + } + return res; +} + +I64 DelTreeDirs(CDirEntry *tmpde1) +{ + I64 res=0; + CDirEntry *tmpde2; + while (tmpde1) { + tmpde2=tmpde1->next; + if (tmpde1->attr & RS_ATTR_DIR) { + if (tmpde1->sub) + res+=DelTreeDirs(tmpde1->sub); + res+=Del(tmpde1->full_name,TRUE,TRUE); + } + DirEntryDel(tmpde1); + tmpde1=tmpde2; + } + return res; +} +I64 DelTreeFiles(CDirEntry *tmpde1) +{ + I64 res=0; + CDirEntry *tmpde2; + while (tmpde1) { + tmpde2=tmpde1->next; + if (tmpde1->attr & RS_ATTR_DIR) { + if (tmpde1->sub) + res+=DelTreeFiles(tmpde1->sub); + } else + res+=Del(tmpde1->full_name,FALSE,TRUE); + DirEntryDel(tmpde1); + tmpde1=tmpde2; + } + return res; +} +public I64 DelTree(U8 *files_find_mask,U8 *fu_flags=NULL) +{//Delete directory tree. + I64 res=0,fuf_flags=0; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + if (IsDir(files_find_mask)) { + res=DelTreeDirs(FilesFind(files_find_mask,fuf_flags)); + res+=Del(files_find_mask,TRUE,TRUE); + res+=Del(files_find_mask,FALSE,TRUE); + } else + res=DelTreeFiles(FilesFind(files_find_mask,fuf_flags)); + return res; +} + +U0 TouchFile(U8 *filename,U8 *attr,CDate cdt=I64_MIN) +{ + CDrv *dv=Let2Drv(*filename); + CDirEntry de; + U8 *cur_dir=StrNew(filename),buf[STR_LEN]; + if (FileFind(filename,&de,FUF_JUST_FILES)) { + Free(de.full_name); + if (!StrCmp(attr,"+?")) + "%-48ts %s\n",filename,StrPrintFlags(buf,Define("ST_FILE_ATTRS"),de.attr); + else { + StrFirstRem(cur_dir,":"); + StrLastRem(cur_dir,"/"); + if (!*cur_dir) + StrCpy(cur_dir,"/"); + ScanFlags(&de.attr,Define("ST_FILE_ATTRS"),attr); + if (cdt==I64_MIN) + de.datetime=Now; + else + de.datetime=cdt; + DirNew(dv,cur_dir,&de,FALSE); + } + } else + PrintErr("File not found.\n"); + Free(cur_dir); +} +public U0 Touch(U8 *files_find_mask="*",U8 *attr="+?", + U8 *fu_flags=NULL,CDate cdt=I64_MIN) +{/*Touch file attributes and DateTime. +Default lists attributes. +attr: "+?" =show current +"+T" =resident +$LK,"RS_ATTR_READ_ONLY",A="MN:RS_ATTR_READ_ONLY"$ $LK,"ST_FILE_ATTRS",A="MN:ST_FILE_ATTRS"$ +To Set DateL: +Touch(filename,"",,datetime); +*/ + I64 fuf_flags=0; + CDirEntry *tmpde,*tmpde1; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+f+F"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags); + while (tmpde) { + TouchFile(tmpde->full_name,attr,cdt); + tmpde=tmpde->next; + } + DirTreeDel(tmpde1); +} diff --git a/TempleOSCD/Adam/ABlkDev/ADskB.HC b/TempleOSCD/Adam/ABlkDev/ADskB.HC new file mode 100644 index 0000000..4ec6df4 --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/ADskB.HC @@ -0,0 +1,191 @@ +#help_index "File/Internal" +I64 DirTreeSerializeSize(CDirEntry *tmpde) +{ + I64 res=0; + while (tmpde) { + res+=CDIR_SIZE+1; + if (tmpde->attr & RS_ATTR_DIR) + res+=DirTreeSerializeSize(tmpde->sub); + tmpde=tmpde->next; + } + return res+1; +} +I64 DirTreeSerializeFill(CDirEntry *tmpde,U8 *dst) +{ + I64 res=0,i; + while (tmpde) { + *dst++=1; + res++; + MemCpy(dst,&tmpde->start,CDIR_SIZE); + dst+=CDIR_SIZE; + res+=CDIR_SIZE; + if (tmpde->attr & RS_ATTR_DIR) { + i=DirTreeSerializeFill(tmpde->sub,dst); + dst+=i; + res+=i; + } + tmpde=tmpde->next; + } + *dst=0; + return res+1; +} +public U8 *DirTreeSerialize(CDirEntry *tmpde,I64 *_size=NULL) +{//Serialize tree returned from $LK,"FilesFind",A="MN:FilesFind"$() into a one contiguous U8 array. + I64 size=DirTreeSerializeSize(tmpde); + U8 *buf=MAlloc(size); + DirTreeSerializeFill(tmpde,buf); + if (_size) *_size=size; + return buf; +} + +U8 *DirTreeUnserialize2(U8 *src,CDirEntry **tmpde) +{ + CDirEntry *tmpde1; + if (*src++) { + tmpde1=CAlloc(sizeof(CDirEntry)); + *tmpde=tmpde1; + MemCpy(&tmpde1->start,src,CDIR_SIZE); + src+=CDIR_SIZE; + if (tmpde1->attr & RS_ATTR_DIR) + src=DirTreeUnserialize2(src,&tmpde1->sub); + src=DirTreeUnserialize2(src,&tmpde1->next); + } else + *tmpde=NULL; + return src; +} +public CDirEntry *DirTreeUnserialize(U8 *src) +{//Unserialize tree to make it like a tree returned from $LK,"FilesFind",A="MN:FilesFind"$(). + CDirEntry *tmpde=NULL; + DirTreeUnserialize2(src,&tmpde); + return tmpde; +} + +#help_index "File/Program Routines" +U0 FOFlatten(CDirEntry *tmpde,CDirEntry **a,I64 *i) +{ + CDirEntry *tmpde1; + while (tmpde) { + tmpde1=tmpde->next; + if (tmpde->attr&RS_ATTR_DIR) { + FOFlatten(tmpde->sub,a,i); + DirEntryDel(tmpde); + } else { + a[*i]=tmpde; + *i=*i+1; + } + tmpde=tmpde1; + } +} + +I64 Size1(CDirEntry *tmpde,I64 *_fuf_flags,I64 round_to) +{ + U8 buf[BLK_SIZE]; + I64 res=0,i; + CDrv *dv; + while (tmpde) { + if ((i=tmpde->size) && Bt(_fuf_flags,FUf_EXPAND) && + !(tmpde->attr&RS_ATTR_DIR) && + FileAttr(tmpde->name)&RS_ATTR_COMPRESSED) { + dv=Let2Drv(*tmpde->full_name); + RBlks(dv,buf,Cluster2Blk(dv,tmpde->cluster),1); + i=(&buf)(CArcCompress *)->expanded_size; + } + if (round_to) + i=CeilU64(tmpde->size,round_to); + if (tmpde->attr&RS_ATTR_DIR) + i+=Size1(tmpde->sub,_fuf_flags,round_to); + tmpde->user_data=i; + res+=i; + tmpde=tmpde->next; + } + return res; +} +public I64 Size(U8 *files_find_mask="/*",U8 *fu_flags=NULL,I64 round_to=0) +{//Total size of files in mask. "+x" for expanded size. +//Does not include directory size of base directory, but + //does include size of sub directories. + I64 fuf_flags=0,res=0; + CDirEntry *tmpde1=NULL; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + if (tmpde1=FilesFind(files_find_mask,fuf_flags&FUG_FILES_FIND)) { + fuf_flags&=FUF_EXPAND; + res=Size1(tmpde1,&fuf_flags,round_to); + DirTreeDel(tmpde1); + } + return res; +} + +public I64 FileCnt(CDirEntry *tmpde) +{//Cnt of files in $LK,"CDirEntry",A="MN:CDirEntry"$ tree. + I64 cnt=0; + while (tmpde) { + if (tmpde->attr&RS_ATTR_DIR) + cnt+=FileCnt(tmpde->sub); + else + cnt++; + tmpde=tmpde->next; + } + return cnt; +} + +#help_index "File/Cmd Line (Typically);Cmd Line (Typically)" +public I64 FF(U8 *files_find_mask,U8 *fu_flags=NULL) +{//Files find. List files matching mask. + I64 cnt=0,fuf_flags=0; + CDirEntry *tmpde,*tmpde1; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags); + while (tmpde) { + PutFileLink(tmpde->full_name); + '\n'; + cnt++; + tmpde=tmpde->next; + } + DirTreeDel(tmpde1); + return cnt; +} + +public I64 Zip(U8 *files_find_mask="*",U8 *fu_flags=NULL) +{//Compress files by moving to .Z filename. + U8 *st; + CDirEntry *tmpde,*tmpde1; + I64 res=0,fuf_flags=0; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F+O"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags); + while (tmpde) { + if (!IsDotZ(tmpde->full_name)) { + st=MStrPrint("%s.Z",tmpde->full_name); + res+=Move(tmpde->full_name,st); + Free(st); + } + tmpde=tmpde->next; + } + DirTreeDel(tmpde1); + return res; +} + +public I64 Unzip(U8 *files_find_mask="*.Z",U8 *fu_flags=NULL) +{//Uncompress files by moving to not .Z filename. +//You don't have to do this for normal operation. + //It automatically unzips ".Z" files. + U8 *st; + CDirEntry *tmpde,*tmpde1; + I64 res=0,fuf_flags=0; + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F+O"); + ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags); + while (tmpde) { + if (IsDotZ(tmpde->full_name)) { + st=StrNew(tmpde->full_name); + StrLastRem(st,"."); + res+=Move(tmpde->full_name,st); + Free(st); + } + tmpde=tmpde->next; + } + DirTreeDel(tmpde1); + return res; +} diff --git a/TempleOSCD/Adam/ABlkDev/ChkDsk.HC b/TempleOSCD/Adam/ABlkDev/ChkDsk.HC new file mode 100644 index 0000000..6867e3e --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/ChkDsk.HC @@ -0,0 +1,444 @@ +#help_index "Info;File/Cmd Line (Typically);Cmd Line (Typically)" +Bool ChkDskConfirm(Bool *_fix,Bool *_confirm) +{ + if (*_fix && *_confirm) { + "Fix "; + if (!YorN) + *_fix=FALSE; + *_confirm=FALSE; + } + return *_fix; +} + +I64 RedSeaChkDskLst(CDrv *dv,CDirEntry *tmpde1, + U8 *bits,U8 *bits2,I64 size,I64 bpc) +{ + CDirEntry *tmpde2; + I64 i,j,errs=0; + while (tmpde1) { + tmpde2=tmpde1->next; + if (tmpde1->attr & RS_ATTR_DIR && tmpde1->sub) + errs+=RedSeaChkDskLst(dv,tmpde1->sub,bits,bits2,size,bpc); + j=(tmpde1->size+bpc-1)/bpc; + for (i=0;icluster-dv->data_area>size) { + PrintErr("Invalid Cluster:%s Cluster:%X\n",tmpde1->full_name, + i+tmpde1->cluster); + errs++; + break; + } + if (LBts(bits,i+tmpde1->cluster-dv->data_area)) { + PrintErr("Dbl Alloc:%s Cluster:%X\n",tmpde1->full_name, + i+tmpde1->cluster); + errs++; + } + if (!LBtr(bits2,i+tmpde1->cluster-dv->data_area)) { + PrintErr("UnAlloc:%s Cluster:%X\n",tmpde1->full_name, + i+tmpde1->cluster); + errs++; + } + } + DirEntryDel(tmpde1); + tmpde1=tmpde2; + } + return errs; +} + +I64 RedSeaChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm) +{ + I64 i,j,bpc,size,errs=0; + CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv; + U8 *files_find_mask=MStrPrint("%c:/*",Drv2Let(dv)), + *old_dir=StrNew(Fs->cur_dir), + *bits,*bits2; + CDirEntry *ptr,*ptr2; + + Drv(drv_let); + "Scanning...\n"; + size=(dv->size-(dv->data_area-dv->drv_offset))/dv->spc; + bpc=dv->spc<>3); + bits2=CAlloc((size+7)>>3+BLK_SIZE); + RBlks(dv,bits2,dv->fat1,((size+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS); + + //Get Root Dir size + ptr2=MAlloc(bpc); + RBlks(dv,ptr2,dv->root_cluster,1); + ptr=ptr2(U8 *)-offset(CDirEntry.start); + j=(ptr->size+bpc-1)/bpc; + Free(ptr2); + + for (i=0;iroot_cluster-dv->data_area>size) { + PrintErr("Invalid Cluster: RootDir Cluster:%X\n",i+dv->root_cluster); + errs++; + break; + } + if (LBts(bits,i+dv->root_cluster-dv->data_area)) { + PrintErr("Dbl Alloc: RootDir Cluster:%X\n",i+dv->root_cluster); + errs++; + } + if (!LBtr(bits2,i+dv->root_cluster-dv->data_area)) { + PrintErr("UnAlloc: RootDir Cluster:%X\n",i+dv->root_cluster); + errs++; + } + } + + errs+=RedSeaChkDskLst(dv,FilesFind(files_find_mask,FUF_RECURSE), + bits,bits2,size,bpc); + for (i=1;idata_area); + errs++; + if (ChkDskConfirm(_fix,_confirm)) + RedSeaFreeClusters(dv,i+dv->data_area,1); + } + + Free(files_find_mask); + Free(bits); + Free(bits2); + Drv(Drv2Let(old_dv)); + Cd(old_dir); + Free(old_dir); + return errs; +} + +I64 FAT32ChkDskLst(CDrv *dv,CDirEntry *tmpde1, + U8 *bits,U32 *bits2,I64 size,I64 bpc) +{ + CDirEntry *tmpde2; + I64 i,c,errs=0; + while (tmpde1) { + tmpde2=tmpde1->next; + if (tmpde1->attr & RS_ATTR_DIR && tmpde1->sub) + errs+=FAT32ChkDskLst(dv,tmpde1->sub,bits,bits2,size,bpc); + i=0; + c=tmpde1->cluster; + while (0size) { + PrintErr("Invalid Cluster:%s Cluster:%X\n",tmpde1->full_name,c); + errs++; + break; + } + if (LBts(bits,c)) { + PrintErr("Dbl Alloc:%s Cluster:%X\n",tmpde1->full_name,c); + errs++; + } + if (!bits2[c]) { + PrintErr("UnAlloc:%s Cluster:%X\n",tmpde1->full_name,c); + errs++; + } else + bits2[c]=0; + c=ClusterNumNext(dv,c); + i++; + } + if (!(tmpde1->attr & RS_ATTR_DIR)) { + i*=bpc; + if (tmpde1->size>i) { + PrintErr("Alloced File Too Short:%s\n",tmpde1->full_name); + errs++; + } + if (i>tmpde1->size+bpc-1) { + PrintWarn("Alloced File Too Long:%s\n",tmpde1->full_name); + errs++; + } + } + DirEntryDel(tmpde1); + tmpde1=tmpde2; + } + return errs; +} + +I64 FAT32ChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm) +{ + I64 i,bpc,size,c,errs=0; + CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv; + U8 *files_find_mask=MStrPrint("%c:/*",Drv2Let(dv)), + *old_dir=StrNew(Fs->cur_dir), + *bits; + U32 *bits2; + Drv(drv_let); + "Scanning...\n"; + size=(dv->size-(dv->data_area-dv->drv_offset))/dv->spc; + bpc=dv->spc<>3); + bits2=CAlloc(size*4+BLK_SIZE); + RBlks(dv,bits2,dv->fat1,(size*4+BLK_SIZE-1)>>BLK_SIZE_BITS); + + c=dv->root_cluster; + while (0size) { + PrintErr("Invalid Cluster: RootDir Cluster:%X\n",c); + errs++; + break; + } + if (LBts(bits,c)) { + PrintErr("Dbl Alloc: RootDir Cluster:%X\n",c); + errs++; + } + if (!bits2[c]) { + PrintErr("UnAlloc: RootDir Cluster:%X\n",c); + errs++; + } else + bits2[c]=0; + c=ClusterNumNext(dv,c); + } + + errs+=FAT32ChkDskLst(dv,FilesFind(files_find_mask,FUF_RECURSE), + bits,bits2,size,bpc); + + bits2[1]=0; //See $LK,"FAT32Fmt",A="MN:FAT32Fmt"$() + for (i=1;ifs_type) { + case FSt_REDSEA: + errs=RedSeaChkDsk(drv_let,&fix,&confirm); + break; + case FSt_FAT32: + errs=FAT32ChkDsk(drv_let,&fix,&confirm); + break; + default: + PrintErr("File System Not Supported\n"); + } + if (errs) { + if (fix) + "It might be a little better. "; + "Copy files to another partition or CD/DVD, " + "reformat, and copy back. " + "Or, copy from a back-up.\n"; + } + return errs; +} + +U0 RedSeaDrvView(U8 drv_let=0) +{ + CDrv *dv=Let2Drv(drv_let); + I64 lohi,c1,i,x,y,l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1), + s=dv->size+dv->drv_offset-dv->data_area; + U8 *bitmap; + CDC *dc=DCAlias; + + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + WinMax; + WinBorder(ON); + DocCursor; + DocClear; + DCFill; + try { + i=((s+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS; + bitmap=MAlloc(i<fat1,i); + i=0; + for (y=0;ycolor=ROP_XOR+BLUE^TRANSPARENT; + else + dc->color=ROP_XOR+WHITE^TRANSPARENT; + GrPlot(dc,x,y); + i++; + } + } + Free(bitmap); + } catch + DrvUnlock(dv); + GetChar; + + SettingsPop; + DCFill; + DCDel(dc); +} +U0 FAT32DrvView(U8 drv_let=0) +{ + CDrv *dv=Let2Drv(drv_let); + I64 lohi,c1,i,x,y,l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1), + s=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset); + U32 *bitmap; + CDC *dc=DCAlias; + + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + WinMax; + WinBorder(ON); + DocCursor; + DocClear; + DCFill; + try { + i=(s*4+BLK_SIZE-1)>>BLK_SIZE_BITS; + bitmap=MAlloc(i<fat1,i); + i=0; + for (y=0;ycolor=ROP_XOR+BLUE^TRANSPARENT; + else + dc->color=ROP_XOR+WHITE^TRANSPARENT; + GrPlot(dc,x,y); + i++; + } + } + Free(bitmap); + } catch + DrvUnlock(dv); + GetChar; + + SettingsPop; + DCFill; + DCDel(dc); +} +public U0 DrvView(U8 drv_let=0) +{//Drive view. Graph the allocation map's fragmentation. + CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv; + Drv(drv_let); + switch (dv->fs_type) { + case FSt_REDSEA: + RedSeaDrvView(drv_let); + break; + case FSt_FAT32: + FAT32DrvView(drv_let); + break; + default: + PrintErr("File System Not Supported\n"); + } + Drv(Drv2Let(old_dv)); +} + +public U0 DskView(U8 drv_let=0) +{//Disk view. Pie chart of partition sizes. + I64 i,j,attr, + h=Fs->pix_width, + v=Fs->pix_height, + radius; + CDrv *dv; + CBlkDev *bd=Let2BlkDev(drv_let); + CDC *dc=DCAlias; + F64 sect_start,sect_end; + + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + DocCursor; + DocClear; + DCFill; + if (hcolor=BLACK; + GrCircle(dc,h>>1,v>>1,radius); + + j=1; + for (i=0;ibd && dv->fs_type) { + sect_start=-(dv->drv_offset*2*ă/(bd->max_blk+1)); + sect_end =-((dv->drv_offset+dv->size)*2*ă/(bd->max_blk+1)); + dc->color=BLACK; + GrLine(dc,h>>1,v>>1, + h>>1+radius*Cos(sect_start), + v>>1+radius*Sin(sect_start)); + GrLine(dc,h>>1,v>>1, + h>>1+radius*Cos(sect_end), + v>>1+radius*Sin(sect_end)); + + attr=DrvTextAttrGet(Drv2Let(dv)); + dc->color=attr&15; + GrPrint(dc,0,v-FONT_HEIGHT*j,"%C %-8Z",Drv2Let(dv), + dv->fs_type,"ST_DRV_TYPES"); + dc->color.c1=attr>>4; + dc->color|=ROPF_DITHER; + GrFloodFill(dc, + h>>1+(radius-4)*Cos((sect_start+sect_end)/2), + v>>1+(radius-4)*Sin((sect_start+sect_end)/2),FALSE); + j++; + } + } + + GetChar(,FALSE); + SettingsPop; + DCFill; + DCDel(dc); +} + +I64 RedSeaUnusedDrvSpace(U8 drv_let=0) +{ + CDrv *dv=Let2Drv(drv_let); + I64 res=0,i,l; + U8 *bitmap; + try { + l=dv->size+dv->drv_offset-dv->data_area; + i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS; + bitmap=MAlloc(i<fat1,i); + for (i=0;ispc; +} +I64 FAT32UnusedDrvSpace(U8 drv_let=0) +{ + CDrv *dv=Let2Drv(drv_let); + I64 res=0,i,l; + U32 *bitmap; + try { + l=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset); + i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS; + bitmap=MAlloc(i<fat1,i); + for (i=0;ispc; +} +public I64 UnusedDrvSpace(U8 drv_let=0) +{//Returns unused size in bytes. + CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv; + U8 *old_dir=StrNew(Fs->cur_dir); + I64 res=0; + Drv(drv_let); + switch (dv->fs_type) { + case FSt_REDSEA: + res=RedSeaUnusedDrvSpace(drv_let); + break; + case FSt_FAT32: + res=FAT32UnusedDrvSpace(drv_let); + break; + default: + PrintErr("File System Not Supported\n"); + } + Drv(Drv2Let(old_dv)); + Cd(old_dir); + Free(old_dir); + return res; +} diff --git a/TempleOSCD/Adam/ABlkDev/FileMgr.HC b/TempleOSCD/Adam/ABlkDev/FileMgr.HC new file mode 100644 index 0000000..3465a59 --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/FileMgr.HC @@ -0,0 +1,809 @@ +#help_index "DolDoc/Output;StdOut/DolDoc" +U0 DirFileDoc(CDoc *doc,CDirEntry *tmpde) +{ + while (tmpde) { + if (tmpde->attr & RS_ATTR_DIR) { + tmpde->user_data=DocPrint(doc,"$$TR,\"%s\",U=0x%X$$",tmpde->name,tmpde); + DocPrint(doc,"\n$$ID,+2$$"); + if (tmpde->sub) + DirFileDoc(doc,tmpde->sub); + DocPrint(doc,"$$ID,-2$$"); + } else { + tmpde->user_data=DocPrint(doc,"$$MU,\"%s\",U=0x%X$$",tmpde->name,tmpde); + DocPrint(doc,"\n"); + } + tmpde=tmpde->next; + } +} + +#help_index "File/Cmd Line (Typically);Cmd Line (Typically)" + +#define FM_NORMAL 0 +#define FM_PICK_FILE 1 +#define FM_PICK_DIR 2 + +class CFMUncollapsedLst +{ + CFMUncollapsedLst *next; + U8 *name; +}; + +CFMUncollapsedLst *FMCollectUncollapsedLst(CDoc *doc) +{ + CDocEntry *doc_e=doc->head.next; + CFMUncollapsedLst *res=NULL,*tmpc; + CDirEntry *tmpde; + while (doc_e!=doc) { + if (doc_e->type_u8==DOCT_TREE) { + if (!(doc_e->de_flags&DOCEF_CHECKED_COLLAPSED)) { + if (tmpde=doc_e->user_data) { + tmpc=MAlloc(sizeof(CFMUncollapsedLst)); + tmpc->next=res; + res=tmpc; + tmpc->name=StrNew(tmpde->full_name); + } + } + } + doc_e=doc_e->next; + } + return res; +} + +U0 FMMarkUncollapsed(CDoc *doc,CFMUncollapsedLst *tmpc, + U8 *cur_entry,U8 *next_entry) +{ + CDocEntry *doc_e=doc->head.next; + CFMUncollapsedLst *tmpc1; + CDirEntry *tmpde; + while (doc_e!=doc) { + if (doc_e->type_u8==DOCT_TREE) { + tmpde=doc_e->user_data; + tmpc1=tmpc; + while (tmpc1) { + if (!StrCmp(tmpc1->name,tmpde->full_name)) { + doc_e->de_flags&=~DOCEF_CHECKED_COLLAPSED; + break; + } + tmpc1=tmpc1->next; + } + if (cur_entry) { + if (!StrNCmp(cur_entry,tmpde->full_name,StrLen(tmpde->full_name))) { + doc->cur_entry=doc_e; + if (StrLen(tmpde->full_name)==StrLen(cur_entry)) + cur_entry=NULL; + } else if (next_entry) { + if (!StrNCmp(next_entry, + tmpde->full_name,StrLen(tmpde->full_name))) { + doc->cur_entry=doc_e; + if (StrLen(tmpde->full_name)==StrLen(next_entry)) + cur_entry=NULL; + } + } + } + } else if (doc_e->type_u8==DOCT_MENU_VAL) { + tmpde=doc_e->user_data; + if (cur_entry) { + if (!StrNCmp(cur_entry,tmpde->full_name,StrLen(tmpde->full_name))) { + doc->cur_entry=doc_e; + if (StrLen(tmpde->full_name)==StrLen(cur_entry)) + cur_entry=NULL; + } else if (next_entry) { + if (!StrNCmp(next_entry, + tmpde->full_name,StrLen(tmpde->full_name))) { + doc->cur_entry=doc_e; + if (StrLen(tmpde->full_name)==StrLen(next_entry)) + cur_entry=NULL; + } + } + } + } + doc_e=doc_e->next; + } +} + +U0 FMDelUncollapsedLst(CFMUncollapsedLst *tmpc) +{ + CFMUncollapsedLst *tmpc1; + while (tmpc) { + tmpc1=tmpc->next; + Free(tmpc->name); + Free(tmpc); + tmpc=tmpc1; + } +} + +CDirEntry *FMRebuildDocDrv(U8 drv_let,CDoc *doc,CDirEntry **_head,Bool init) +{ + CDirEntry *tmpde,*tmpde1; + U8 *st; + tmpde=CAlloc(sizeof(CDirEntry)); + tmpde->full_name=MStrPrint("%C:/",drv_let); + tmpde->attr=RS_ATTR_DIR; + st=MStrPrint("%c:/*",drv_let); + if (init) + tmpde->sub=tmpde1=FilesFind(st,FUF_RECURSE); + else + tmpde1=NULL; + Free(st); + tmpde->user_data=DocPrint(doc,"$$TR,\"%s\",U=0x%X$$",tmpde->full_name,tmpde); + tmpde->next=*_head; + *_head=tmpde; + DocPrint(doc,"\n$$ID,+2$$"); + DocBottom(doc); + if (init) { + DirFileDoc(doc,tmpde1); + while (tmpde1) { + tmpde1->parent=tmpde; + tmpde1=tmpde1->next; + } + } + DocPrint(doc,"$$ID,-2$$"); + return tmpde; +} + +U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_head,I64 mode) +{ + CDrv *dv; + I64 i; + CDoc *doc=*_doc,*doc2=sys_clipboard_doc,*parent_doc; + CFMUncollapsedLst *tmpc=NULL; + U8 *cur_entry=NULL,*next_entry=NULL; + CDocEntry *doc_ce; + CDirEntry *tmpde,*tmpde1,*cur_tree_entry; + if (!doc) + parent_doc=DocPut; + else { + parent_doc=doc->parent_doc; + Fs->put_doc=Fs->display_doc=NULL; + DocUnlock(doc); + Refresh; + DocLock(doc); + cur_tree_entry=NULL; + doc_ce=doc->cur_entry; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + cur_tree_entry=doc_ce->user_data; + if (cur_tree_entry) + cur_entry=StrNew(cur_tree_entry->full_name); + tmpde=NULL; + if (doc_ce!=doc) + doc_ce=doc_ce->next; + while (doc_ce!=doc) { + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + tmpde1=tmpde->parent; + while (tmpde1) { + if (tmpde1==cur_tree_entry) { + tmpde=NULL; + break; + } else + tmpde1=tmpde1->parent; + } + if (tmpde) + break; + } + doc_ce=doc_ce->next; + } + if (tmpde) + next_entry=StrNew(tmpde->full_name); + + tmpc=FMCollectUncollapsedLst(doc); + DocDel(doc); + } + if (*_head) { + DirTreeDel(*_head); + *_head=NULL; + } + doc=DocNew; + doc->desc='FileMan'; + doc->parent_doc=parent_doc; + doc->flags|=DOCF_FORM; + switch (mode) { + case FM_NORMAL: + DocPrint(doc,"$$PURPLE$$File Manager\n\n" + "$$LK,\"Click for Help\",A=\"FI:::/Doc/FileMgr.DD\"$$\n\n"); + break; + case FM_PICK_FILE: + DocPrint(doc,"$$PURPLE$$Pick file and press \n\n"); + doc->flags|=DOCF_SIZE_MIN; + break; + case FM_PICK_DIR: + DocPrint(doc,"$$PURPLE$$Pick directory and press \n\n"); + doc->flags|=DOCF_SIZE_MIN; + break; + } + DocPrint(doc,"$$LTBLUE$$"); + for (i=0;ibd->type==BDT_ATAPI) { + if (dv->bd->flags&BDF_INITIALIZED) + tmpde=FMRebuildDocDrv(Drv2Let(dv),doc,_head,TRUE); + else { + tmpde=FMRebuildDocDrv(Drv2Let(dv),doc,_head,FALSE); + tmpde->flags|=DEF_NOT_INITIALIZED; + } + } else if (dv->fs_type==FSt_REDSEA || dv->fs_type==FSt_FAT32) + FMRebuildDocDrv(Drv2Let(dv),doc,_head,TRUE); + } + DocTop(doc); + FMMarkUncollapsed(doc,tmpc,cur_entry,next_entry); + DocCenter(doc); + DocRst(doc2,TRUE); + FMDelUncollapsedLst(tmpc); + Free(cur_entry); + Free(next_entry); + *_doc=doc; + DocLock(doc); + Fs->put_doc=Fs->display_doc=doc; +} + +U0 FMRename(CDoc *doc) +{ + CEdFileName fn; + CDocEntry *doc_e=doc->cur_entry; + CDirEntry *tmpde=NULL,*parent; + if (doc_e->type_u8==DOCT_MENU_VAL) { + tmpde=doc_e->user_data; + if (parent=tmpde->parent) { + Cd(parent->full_name); + StrCpy(fn.name,tmpde->name); + if (DocForm(&fn)) { + Silent; + Move(tmpde->name,fn.name); + Silent(OFF); + } + } + } else if (doc_e->type_u8==DOCT_TREE) { + tmpde=doc_e->user_data; + if (parent=tmpde->parent) { + Cd(parent->full_name); + StrCpy(fn.name,tmpde->name); + if (DocForm(&fn)) { + if (StrCmp(tmpde->name,fn.name)) { + Silent; + if (CopyTree(tmpde->name,fn.name)) + DelTree(tmpde->name); + Silent(OFF); + } + } + } + } +} + +U0 FMMkDir(CDoc *doc) +{ + CEdFileName fn; + CDocEntry *doc_e=doc->cur_entry; + CDirEntry *tmpde=NULL,*parent; + *fn.name=0; + if (doc_e->type_u8==DOCT_MENU_VAL) { + tmpde=doc_e->user_data; + if (parent=tmpde->parent) { + Cd(parent->full_name); + if (DocForm(&fn)) { + Silent; + MkDir(fn.name); + Silent(OFF); + } + } + } else if (doc_e->type_u8==DOCT_TREE) { + tmpde=doc_e->user_data; + Cd(tmpde->full_name); + if (DocForm(&fn)) { + Silent; + MkDir(fn.name); + Silent(OFF); + } + } +} + +U0 FMDelete(CDoc *doc) +{ + U8 *st; + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + if (doc_ce->type_u8==DOCT_MENU_VAL) { + tmpde=doc_ce->user_data; + Silent; + st=MStrPrint("Delete: %s",tmpde->full_name); + if (PopUpCancelOk(st)) + Del(tmpde->full_name); + Free(st); + Silent(OFF); + } else if (doc_ce->type_u8==DOCT_TREE) { + tmpde=doc_ce->user_data; + Silent; + st=MStrPrint("Delete: %s",tmpde->full_name); + if (PopUpCancelOk(st)) + DelTree(tmpde->full_name); + Free(st); + Silent(OFF); + } +} + +U0 FMChgDsk(CDoc *doc) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + while (tmpde->parent) + tmpde=tmpde->parent; + Silent; + ChgDsk(*tmpde->full_name); + Silent(OFF); + } +} + +U0 FMMountISO(CDoc *doc) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + if (doc_ce->type_u8==DOCT_MENU_VAL && (tmpde=doc_ce->user_data)) + MountFile(tmpde->full_name); +} + +U0 FMUnmount(CDoc *doc) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + I64 drv_let; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + while (tmpde->parent) + tmpde=tmpde->parent; + drv_let=*tmpde->full_name; + if (Let2BlkDev(drv_let)!=Let2BlkDev(':')) + Unmount(drv_let); + } +} + +U0 FMFmtDrv(CDoc *doc) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + U8 *st=NULL; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + while (tmpde->parent) + tmpde=tmpde->parent; + st=MStrPrint("Format Drive '%c'?\nAre You Sure?\n",*tmpde->full_name); + if (PopUpCancelOk(st)) { + Silent; + Fmt(*tmpde->full_name,,FALSE); + Silent(OFF); + } + } + Free(st); +} + +U0 FMMakeISO(CDoc *doc,I64 type) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + U8 *st; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + if (doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=tmpde->parent; + if (tmpde && *tmpde->full_name) { + Silent; + switch (type) { + case FSt_REDSEA: + RedSeaISO(,tmpde->full_name); + break; + case FSt_ISO9660: + if (tmpde->full_name[StrLen(tmpde->full_name)-1]=='/') + st=MStrPrint("%s*",tmpde->full_name); + else + st=MStrPrint("%s/*",tmpde->full_name); + ISO9660ISO(,st); + Free(st); + break; + } + Silent(OFF); + } + } +} + +U0 FMBurnISO(CDoc *doc) +{ + CDocEntry *doc_ce=doc->cur_entry; + CDirEntry *tmpde; + if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL) + tmpde=doc_ce->user_data; + else + tmpde=NULL; + if (tmpde) { + while (tmpde->parent) + tmpde=tmpde->parent; + Silent; + DVDImageWrite(*tmpde->full_name); + Silent(OFF); + } +} + +U0 FMCopy(CDoc *doc) +{ + CDoc *doc2=sys_clipboard_doc; + U8 *st; + CDocEntry *doc_ce=doc->cur_entry,*doc_e; + CDirEntry *tmpde,*tmpde1=NULL,*tmpde2; + Bool unlock_doc2=DocLock(doc2); + doc_e=doc2->head.next; + + tmpde1=doc_ce->user_data; + if (doc_ce->type_u8==DOCT_MENU_VAL) + tmpde1=tmpde1->parent; + else if (doc_ce->type_u8!=DOCT_TREE) + tmpde1=NULL; + if (tmpde1) { + while (doc_e!=doc2) { + if (doc_e->type_u8==DOCT_MENU_VAL) { + tmpde=doc_e->user_data; + tmpde->flags|=DEF_PROCESSED; + tmpde2=tmpde->parent; + if (!tmpde2 || !(tmpde2->flags&DEF_PROCESSED)) { + Silent; + Copy(tmpde->full_name,tmpde1->full_name); + Silent(OFF); + } + } else if (doc_e->type_u8==DOCT_TREE) { + tmpde=doc_e->user_data; + tmpde->flags|=DEF_PROCESSED; + tmpde2=tmpde->parent; + if (!tmpde2 || !(tmpde2->flags&DEF_PROCESSED)) { + Silent; + if (*tmpde1->name) + st=MStrPrint("%s/%s",tmpde1->full_name,tmpde->name); + else + st=MStrPrint("%s%s",tmpde1->full_name,tmpde->name); + CopyTree(tmpde->full_name,st); + Free(st); + Silent(OFF); + } + } + doc_e=doc_e->next; + } + } + if (unlock_doc2) + DocUnlock(doc2); +} + +#define FMR_INCLUDE 0 +#define FMR_ADAM_INCLUDE 1 +#define FMR_DELETE 2 +#define FMR_RENAME 3 +#define FMR_MKDIR 4 +#define FMR_PLAIN 5 +#define FMR_PASTE 6 +#define FMR_CHG_DSK 7 +#define FMR_FORMAT 8 +#define FMR_MOUNT_REDSEA_ISO_C 9 +#define FMR_UNMOUNT 10 +#define FMR_MAKE_REDSEA_ISO_C 11 +#define FMR_MAKE_ISO9660 12 +#define FMR_BURN_ISO 13 +#define FMR_HELP 14 + +I64 PopUpFMRight(U8 *header=NULL,U8 *footer=NULL) +{ + I64 i; + CDoc *doc=DocNew; + if (header) DocPrint(doc,"%s",header); + DocPrint(doc,"$$CM+LX,1,1 $$$$BT,\"INCLUDE \",LE=FMR_INCLUDE$$" + "$$CM+LX,29,0$$$$BT,\"ADAM INCLUDE \",LE=FMR_ADAM_INCLUDE$$" + "$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=FMR_DELETE$$" + "$$CM+LX,29,0$$$$BT,\"RENAME \",LE=FMR_RENAME$$" + "$$CM+LX,1,3 $$$$BT,\"MAKE DIRECTORY \",LE=FMR_MKDIR$$" + "$$CM+LX,29,0$$$$BT,\"PLAIN-TEXT EDIT \",LE=FMR_PLAIN$$" + "$$CM+LX,1,3 $$$$BT,\"PASTE CLIPBOARD FILES \",LE=FMR_PASTE$$" + "$$CM+LX,29,0$$$$BT,\"CHANGE DISK(MOUNT IT) \",LE=FMR_CHG_DSK$$" + "$$CM+LX,1,3 $$$$BT,\"FORMAT \",LE=FMR_FORMAT$$" + "$$CM+LX,1,3 $$$$BT,\"MOUNT ISO.C FILE \"," + "LE=FMR_MOUNT_REDSEA_ISO_C$$" + "$$CM+LX,29,0$$$$BT,\"UNMOUNT \",LE=FMR_UNMOUNT$$" + "$$CM+LX,1,3 $$$$BT,\"MAKE ISO.C (CD/DVD) FILE\",LE=FMR_MAKE_REDSEA_ISO_C$$" + "$$CM+LX,29,0$$$$BT,\"MAKE ISO (CD/DVD) FILE \",LE=FMR_MAKE_ISO9660$$" + "$$CM+LX,1,3 $$$$BT,\"BURN ISO (CD/DVD) FILE \",LE=FMR_BURN_ISO$$" + "$$CM+LX,1,3 $$$$BT,\"HELP \",LE=FMR_HELP$$" + "$$CM+LX,29,0$$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$\n"); + if (footer) DocPrint(doc,"%s",footer); + i=PopUpMenu(doc); + DocDel(doc); + return i; +} + +U0 FMRightClick() +{ + switch (PopUpFMRight) { + case FMR_INCLUDE: + Msg(MSG_KEY_DOWN,0,0x3F0000003F); + break; + case FMR_ADAM_INCLUDE: + Msg(MSG_KEY_DOWN,0,0x23F0000023F); + break; + case FMR_DELETE: + Msg(MSG_KEY_DOWN,CH_CTRLY,0); + break; + case FMR_RENAME: + Msg(MSG_KEY_DOWN,'r',0); + break; + case FMR_MKDIR: + Msg(MSG_KEY_DOWN,'d',0); + break; + case FMR_PLAIN: + Msg(MSG_KEY_DOWN,CH_SHIFT_SPACE,0); + break; + case FMR_PASTE: + Msg(MSG_KEY_DOWN,0,SC_INS+SCF_SHIFT); + break; + case FMR_CHG_DSK: + Msg(MSG_KEY_DOWN,'c',0); + break; + case FMR_FORMAT: + Msg(MSG_KEY_DOWN,'f',0); + break; + case FMR_MOUNT_REDSEA_ISO_C: + Msg(MSG_KEY_DOWN,'i',0); + break; + case FMR_UNMOUNT: + Msg(MSG_KEY_DOWN,'u',0); + break; + case FMR_MAKE_REDSEA_ISO_C: + Msg(MSG_KEY_DOWN,'m',0); + break; + case FMR_MAKE_ISO9660: + Msg(MSG_KEY_DOWN,'M',0); + break; + case FMR_BURN_ISO: + Msg(MSG_KEY_DOWN,'B',0); + break; + case FMR_HELP: + Msg(MSG_KEY_DOWN,CH_CTRLM,0x43200000432); + break; + } +} + +U8 *fm_ms_str=NULL; +U0 (*fp_old_final_scrn_update)(CDC *dc); + +U0 FMFinalScrnUpdate(CDC *dc) +{ + if (fm_ms_str) { + dc->color=LTRED; + GrPrint(dc,ms.pos.x,ms.pos.y,"%s",fm_ms_str); + } + (*fp_old_final_scrn_update)(dc); +} + +public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL) +{//File manager. Also, used to choose files and dirs. + CDirEntry *head=NULL,*tmpde,*tmpde1,*tmpde2; + I64 sc,ch,arg1,arg2,msg_code; + CDoc *doc=NULL,*old_put_doc=DocPut,*old_display_doc=DocDisplay; + U8 *res=NULL,*st,*st2,*old_cur_dir=CurDir; + CDocEntry *doc_ce=NULL,*doc_e; + Bool okay; + + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + fp_old_final_scrn_update=gr.fp_final_scrn_update; + MenuFilePush("::/Doc/FileMgrPullDown.DD"); + FMRebuildDoc(&doc,&head,mode); + if (tmpde1=Cd2DirEntry(head,old_cur_dir)) + doc->cur_entry=tmpde1->user_data; + while (tmpde1) { + if (tmpde1->attr&RS_ATTR_DIR) + tmpde1->user_data(CDocEntry *)->de_flags&=~DOCEF_CHECKED_COLLAPSED; + tmpde1=tmpde1->parent; + } + do { + DocUnlock(doc); + do msg_code=GetMsg(&arg1,&arg2, + 1<cur_entry; + fm_ms_str=doc_ce->tag; + gr.fp_final_scrn_update=&FMFinalScrnUpdate; + break; + case MSG_MS_L_UP: + if (doc_ce) { + gr.fp_final_scrn_update=fp_old_final_scrn_update; + if (WinCursorPosSet(Fs,arg1+Fs->pix_left+Fs->scroll_x, + arg2+Fs->pix_top+Fs->scroll_y,TRUE)) { + doc_e=doc->cur_entry; + if (doc_e!=doc_ce) { + st2=NULL; + if (doc_e->type_u8==DOCT_MENU_VAL) { + tmpde1=doc_e->user_data; + if (tmpde1=tmpde1->parent) + st2=StrNew(tmpde1->full_name); + } else if (doc_e->type_u8==DOCT_TREE) { + tmpde1=doc_e->user_data; + st2=StrNew(tmpde1->full_name); + } + if (st2 && doc_ce->type_u8==DOCT_MENU_VAL) { + tmpde=doc_ce->user_data; + Silent; + Move(tmpde->full_name,st2); + Silent(OFF); + FMRebuildDoc(&doc,&head,mode); + } else if (st2 && doc_ce->type_u8==DOCT_TREE) { + tmpde=doc_ce->user_data; + okay=TRUE; + tmpde2=tmpde1; + while (tmpde2) { + if (tmpde2!=tmpde) + tmpde2=tmpde2->parent; + else { + okay=FALSE; + break; + } + } + if (okay) { + if (*tmpde1->name) + st=MStrPrint("%s/%s",tmpde1->full_name,tmpde->name); + else + st=MStrPrint("%s%s",tmpde1->full_name,tmpde->name); + if (StrCmp(tmpde->full_name,st)) { + Silent; + CopyTree(tmpde->full_name,st); + DelTree(tmpde->full_name); + Silent(OFF); + FMRebuildDoc(&doc,&head,mode); + } + Free(st); + } + } + Free(st2); + FlushMsgs; + } else + if (doc_e->type_u8==DOCT_MENU_VAL) { + DocUnlock(doc); + Ed(doc_e->user_data(CDirEntry *)->full_name); + DocLock(doc); + } + doc_ce=NULL; + } + } + break; + case MSG_KEY_DOWN: + doc_ce=NULL; + ch=arg1; sc=arg2; + if (sc.u8[0]==SC_DELETE && !(sc&(SCF_SHIFT|SCF_CTRL))) + ch=CH_CTRLY; + if (ch && sc&SCF_ALT) goto fm_regular_key; + switch (ch) { + case '\n': + DocUnlock(doc); + FMRightClick; + DocLock(doc); + break; + start: + DocUnlock(doc); + case CH_CTRLV: + FMCopy(doc); + break; + case 'r': + FMRename(doc); + break; + case 'd': + FMMkDir(doc); + break; + case CH_CTRLY: + FMDelete(doc); + break; + case 'c': + FMChgDsk(doc); + break; + case 'i': + FMMountISO(doc); + break; + case 'u': + FMUnmount(doc); + break; + case 'M': + FMMakeISO(doc,FSt_ISO9660); + break; + case 'm': + FMMakeISO(doc,FSt_REDSEA); + break; + case 'B': + FMBurnISO(doc); + break; + case 'f': + FMFmtDrv(doc); + break; + end: + FMRebuildDoc(&doc,&head,mode); + break; + case CH_SHIFT_ESC: + break; + case CH_SPACE: + if (doc->cur_entry->type_u8==DOCT_MENU_VAL) { + DocUnlock(doc); + Ed(doc->cur_entry->user_data(CDirEntry *)->full_name); + DocLock(doc); + } else + goto fm_regular_key; + break; + case CH_SHIFT_SPACE: + if (doc->cur_entry->type_u8==DOCT_MENU_VAL) { + DocUnlock(doc); + Plain(doc->cur_entry->user_data(CDirEntry *)->full_name); + DocLock(doc); + } else + goto fm_regular_key; + break; + case CH_ESC: + doc_ce=doc->cur_entry; + tmpde=doc_ce->user_data; + if (mode==FM_PICK_FILE && doc_ce->type_u8==DOCT_MENU_VAL) + res=StrNew(tmpde->full_name,mem_task); + else if (mode==FM_PICK_DIR) { + if (doc_ce->type_u8==DOCT_TREE) + res=StrNew(tmpde->full_name,mem_task); + else if (doc_ce->type_u8==DOCT_MENU_VAL && + (tmpde=tmpde->parent)) + res=StrNew(tmpde->full_name,mem_task); + } + break; + default: + if (sc.u8[0]==SC_INS && sc&SCF_SHIFT && !(sc&SCF_CTRL)) { + FMCopy(doc); + FMRebuildDoc(&doc,&head,mode); + } else if (sc.u8[0]==SC_F5) { + if (doc->cur_entry->type_u8==DOCT_MENU_VAL) { + tmpde=doc->cur_entry->user_data; + DocUnlock(doc); + if (sc&SCF_SHIFT) + AdamFile(tmpde->full_name); + else + PopUpFile(tmpde->full_name); + DocLock(doc); + } + } else { +fm_regular_key: + DocUnlock(doc); + PutKey(ch,sc); + DocLock(doc); + } + } + break; + } + } while (ch!=CH_ESC && ch!=CH_SHIFT_ESC); + gr.fp_final_scrn_update=fp_old_final_scrn_update; + Fs->put_doc =old_put_doc; + Fs->display_doc=old_display_doc; + SettingsPop; + DocDel(doc); + DirTreeDel(head); + Cd(old_cur_dir); + Free(old_cur_dir); + if (mode!=FM_NORMAL && !res) + res=StrNew("",mem_task); + MenuPop; + return res; +} diff --git a/TempleOSCD/Adam/ABlkDev/MakeABlkDev.HC b/TempleOSCD/Adam/ABlkDev/MakeABlkDev.HC new file mode 100644 index 0000000..e1b7a35 --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/MakeABlkDev.HC @@ -0,0 +1,8 @@ +Cd(__DIR__);; +#include "ADskA" +#include "ADskB" +#include "PrtDsk" +#include "Mount" +#include "ChkDsk" +#include "FileMgr" +Cd("..");; diff --git a/TempleOSCD/Adam/ABlkDev/Mount.HC b/TempleOSCD/Adam/ABlkDev/Mount.HC new file mode 100644 index 0000000..cf3ed1a --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/Mount.HC @@ -0,0 +1,159 @@ +#help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically);" +U8 Mount2(U8 boot_drv_let,CDoc *_doc,Bool _caller_is_prtdsk) +{//If _doc, called by $LK,"::/Kernel/KCfg.HC"$ else called by $LK,"Mount",A="MN:Mount"$(). + I64 cnt,total=0,num_hints,drv_let,type,unit,prt_num; + U8 blks_buf[STR_LEN],addr_buf[STR_LEN],base0_buf[STR_LEN],base1_buf[STR_LEN], + *filename=NULL,*filename2=NULL,res=0; + CATARep *head=NULL,*tmpha; + Bool whole_drv,make_free; + CDoc *doc; + if (boot_drv_let) + boot_drv_let=Let2Let(boot_drv_let); + do { + cnt=0; + if (!_doc) + DrvRep; + "\n****** Mount Drives ******\n" + "$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n" + "$$GREEN$$C$$FG$$-$$GREEN$$L$$FG$$ are ATA hard drives.\n" + "$$GREEN$$M$$FG$$-$$GREEN$$P$$FG$$ are ISO file read drives.\n" + "$$GREEN$$Q$$FG$$-$$GREEN$$S$$FG$$ are ISO file write drives.\n" + "$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI CD/DVD drives.\n" + "\nDrive Letter ($$PURPLE$$$$FG$$ to exit):"; + drv_let=Let2Let(GetChar); + '\n'; + if (type=Let2BlkDevType(drv_let)) { + whole_drv=FALSE; + if (_doc) { //Called by $LK,"::/Kernel/KCfg.HC"$ + doc=_doc; + make_free=FALSE; + } else { //Called by $LK,"Mount",A="MN:Mount"$() + doc=DocNew; + DocPrint(doc,"CBlkDev *bd;\n"); + make_free=TRUE; + } + unit=0; + prt_num=I64_MIN; + switch (type) { + case BDT_RAM: + "Addr of RAM disk ($$PURPLE$$$$FG$$ to MAlloc):"; + GetS(addr_buf,STR_LEN); + case BDT_ISO_FILE_WRITE: + "Blks of 512 bytes:"; + GetS(blks_buf,STR_LEN); + break; + case BDT_ISO_FILE_READ: + filename=GetStr("File Name:"); + break; + case BDT_ATA: + prt_num=GetI64("Partition Num (Default=All):",prt_num); + case BDT_ATAPI: + num_hints=ATARep(,,&head); + if (type==BDT_ATAPI && boot_drv_let) + " to use booted CD/DVD\n"; //Only $LK,"::/Kernel/KCfg.HC"$ + do { + if (num_hints) + "Enter dev number or\nport with $$PURPLE$$0x$$FG$$ prefix.\n" + "I/O Port Base0:\n"; + else + "Include $$PURPLE$$0x$$FG$$ prefix.\nI/O Port Base0:\n"; + GetS(base0_buf,STR_LEN); + } while (!Str2I64(base0_buf) && (type!=BDT_ATAPI || !boot_drv_let)); + if (1<=Str2I64(base0_buf)<=num_hints) { + tmpha=ATARepFind(head,Str2I64(base0_buf)); + StrPrint(base0_buf,"0x%X",tmpha->base0); + StrPrint(base1_buf,"0x%X",tmpha->base1); + unit=tmpha->unit; + } else if (type!=BDT_ATAPI || *base0_buf) { + if (type==BDT_ATAPI) + StrCpy(base1_buf,"0"); + else + do { + "I/O Port Base1:\n"; + GetS(base1_buf,STR_LEN); + } while (!Str2I64(base1_buf)); + do { + "\t$$PURPLE$$0$$FG$$=Master\n\t$$PURPLE$$1$$FG$$=Slave\nUnit:"; + unit=GetChar-'0'; + } while (!(0<=unit<=1)); + '\n'; + } + LinkedLstDel(head); + break; + } + DocPrint(doc,"bd=BlkDevNextFreeSlot(\'%C\',%d);bd->unit=%d;\n", + drv_let,type,unit); + switch (type) { + case BDT_RAM: + if (!*addr_buf) StrCpy(addr_buf,"0"); + DocPrint(doc,"bd->RAM_dsk=%s;\n",addr_buf); + case BDT_ISO_FILE_WRITE: + if (!*blks_buf) StrCpy(blks_buf,"0"); + DocPrint(doc,"bd->max_blk=(%s)-1;\n",blks_buf); + DocPrint(doc,"bd->drv_offset=19<<2+" + "(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;\n"); + break; + case BDT_ISO_FILE_READ: + filename2=FileNameAbs(filename); + DocPrint(doc,"bd->file_dsk_name=AStrNew(\"%s\");\n",filename2); + DocPrint(doc,"bd->drv_offset=19<<2+" + "(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;\n"); + break; + case BDT_ATA: + case BDT_ATAPI: + if (type==BDT_ATAPI && !*base0_buf) { + DocPrint(doc,"GetBaseUnit(bd);\n"); //Only $LK,"::/Kernel/KCfg.HC"$ + if (drv_let==boot_drv_let) + make_free=TRUE; + } else + DocPrint(doc,"bd->base0=%s;bd->base1=%s;\n",base0_buf,base1_buf); + if (type==BDT_ATA && _caller_is_prtdsk) { + "\nReformat WHOLE drive!"; + whole_drv=YorN; + } + break; + } + DocPrint(doc,"BlkDevAdd(bd,%d,%d,%d);\n",prt_num,whole_drv,make_free); + if (_doc) //Called by $LK,"::/Kernel/KCfg.HC"$ + cnt++; + else { //Called by $LK,"Mount",A="MN:Mount"$() + if ((cnt=ExeDoc(doc)) && whole_drv) { + if (_caller_is_prtdsk) { + res=drv_let; + PrtDsk(drv_let,1.0); //First mount whole drive. + } else + PrtDsk(drv_let); + } + DocDel(doc); + } + } + total+=cnt; + } while (cnt && !_caller_is_prtdsk || + !total && _doc); //At least 1 if Called by $LK,"::/Kernel/KCfg.HC"$ + Free(filename); + Free(filename2); + return res; +} + +public U8 Mount(Bool caller_is_prtdsk=FALSE) +{//Mount drives. Called from $LK,"PrtDsk(Mount)",A="FF:::/Adam/ABlkDev/PrtDsk.HC,Mount("$. + return Mount2(0,NULL,caller_is_prtdsk); +} + +public U0 Unmount(U8 drv_let=0) +{//Unmount drive(s). + BlkDevDel(Let2BlkDev(drv_let)); +} + +public U8 MountFile(U8 *filename) +{//Mount ISO.C file. + U8 *filename2=DftExt(filename,"ISO.C"),*filename3=FileNameAbs(filename2); + CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('M')); //First $LK,"BDT_ISO_FILE_READ",A="MN:BDT_ISO_FILE_READ"$ + CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_ISO_FILE_READ); + bd->drv_offset=19<<2+(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE; + bd->file_dsk_name=AStrNew(filename3); + BlkDevAdd(bd,,TRUE,TRUE); + Free(filename3); + Free(filename2); + return dv->drv_let; +} diff --git a/TempleOSCD/Adam/ABlkDev/PrtDsk.HC b/TempleOSCD/Adam/ABlkDev/PrtDsk.HC new file mode 100644 index 0000000..9313e45 --- /dev/null +++ b/TempleOSCD/Adam/ABlkDev/PrtDsk.HC @@ -0,0 +1,167 @@ +#help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically)" + +#define ROUND_DRV_TO (63*255) +#define DRV_HEADER 63 + +class CPlannedDrv +{ + CPlannedDrv *next,*last; + I64 size; + Bool pri; +}; + +public I64 PrtDsk(U8 drv_let=0,...) +{/*Partition the disk containing partition drv_let. + +drv_let=0 means add new drive that is not already mounted. + +>PrtDsk('C',0.5,0.25,0.25); //Make three. 50% C, 25% D, 25% E, round-up to blk. + +*/ + CBlkDev *bd; + CPlannedDrv head,*tmppp; + CMasterBoot mbr; + Bool pri=TRUE; + I64 ext_base,drv_let2,pri_cnt=0,i,start_offset,offset, + total,remaining,cur_arg=0; + "This command does not play well\n" + "with other operating systems.\n" + "You really should use another\n" + "operating system's partitioner.\n" + "If you use this, it may, in fact,\n" + "make your hard drive impossible\n" + "to repartition with other operating\n" + "until you set block zero to zero\n" + "with $$LK,\"BootMHDZero\",\"MN:BootMHDZero\"$$()\n\n\n" + "Continue"; + if (argc<=cur_arg && !YorN) + return 0; + '\n'; + + if (drv_let && !Let2BlkDev(drv_let,FALSE)) + drv_let=0; + if (!drv_let && !(drv_let=Mount(TRUE)) || + !(bd=Let2BlkDev(drv_let,FALSE)) || bd->type!=BDT_ATA) + return 0; + + total=bd->max_blk+1; + QueInit(&head); + drv_let2=bd->first_drv_let; + remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO); + while (FloorU64(remaining,ROUND_DRV_TO)>=ROUND_DRV_TO) { + tmppp=MAlloc(sizeof(CPlannedDrv)); + do { + "$$RED$$Partition %C$$FG$$\n",drv_let2; + tmppp->pri=FALSE; + if (pri) { + "Primary Partition"; + if (argc>cur_arg || YorN) { + pri_cnt++; + tmppp->pri=TRUE; + if (pri_cnt==3) + pri=FALSE; + } else + pri=FALSE; + } + "\nBlocks Remaining:%d (0x%X)\n", + remaining-DRV_HEADER,remaining-DRV_HEADER; + if (argc>cur_arg) + tmppp->size=MinI64(CeilU64(MaxI64(remaining,DRV_HEADER),ROUND_DRV_TO), + CeilU64(argv[cur_arg++](F64)*total,ROUND_DRV_TO)); + else + tmppp->size=CeilU64(GetI64("Size in Blocks :", + remaining-DRV_HEADER)+DRV_HEADER,ROUND_DRV_TO); + } while (!(ROUND_DRV_TO<=tmppp->size<=FloorU64(remaining,ROUND_DRV_TO))); + QueIns(tmppp,head.last); + remaining-=tmppp->size; + drv_let2++; + } + + "\n\n!!! Repartition Drive !!!\n\n"; + tmppp=head.next; + drv_let2=bd->first_drv_let; + while (tmppp!=&head) { + "Drive %C:%08X ",drv_let2,tmppp->size; + if (tmppp->pri) + "Primary\n"; + else + "Logical\n"; + tmppp=tmppp->next; + drv_let2++; + } + if (!argc && !AreYouSure) + goto pd_done; + + remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO)-ROUND_DRV_TO; + tmppp=head.next; + MemSet(&mbr,0,BLK_SIZE); + mbr.signature=0xAA55; + offset=0; + for (i=0;isize-DRV_HEADER; + offset+=tmppp->size; + remaining-=tmppp->size; + tmppp=tmppp->next; + } + if (!i) i++; + if (tmppp!=&head) { + mbr.p[i].active=0x80; + mbr.p[i].start_head=0; + mbr.p[i].start_cyl=0x101; + mbr.p[i].type=0xF; + mbr.p[i].end_head=0xFE; + mbr.p[i].end_cyl=0xFFFF; + mbr.p[i].offset=offset; + mbr.p[i].size=remaining; + ext_base=offset; + } + ATAWriteBlks(bd,&mbr,0,1); + + while (tmppp!=&head) { + start_offset=offset; + MemSet(&mbr,0,BLK_SIZE); + mbr.signature=0xAA55; + + mbr.p[0].active=0x80; + mbr.p[0].start_head=1; + mbr.p[0].start_cyl=0x101; + mbr.p[0].type=1; //Will get set different. + mbr.p[0].end_head=0xFE; + mbr.p[0].end_cyl=0xFFFF; + mbr.p[0].offset=DRV_HEADER; + mbr.p[0].size=tmppp->size-DRV_HEADER; + offset+=tmppp->size; + tmppp=tmppp->next; + if (tmppp!=&head) { + mbr.p[1].active=0x80; + mbr.p[1].start_head=0; + mbr.p[1].start_cyl=0x101; + mbr.p[1].type=5; + mbr.p[1].end_head=0xFE; + mbr.p[1].end_cyl=0xFFFF; + mbr.p[1].offset=offset-ext_base; + mbr.p[1].size=tmppp->size; + } + ATAWriteBlks(bd,&mbr,start_offset,1); + } + + bd->flags&=~(BDF_INITIALIZED | BDF_INIT_IN_PROGRESS); + BlkDevAdd(bd,,FALSE,TRUE); + for (i=bd->first_drv_let;i=max_depth) return TRUE; + if (!(tmpc=HashFind(class_name,Fs->hash_table,types))) { + DocPrint(doc,"Class Not Found.\n"); + return FALSE; + } + if (!ChkPtr(_d) || !ChkPtr(_d(U8 *)+tmpc->size)) { + DocPrint(doc,"Bad Ptr:%016X\n",_d); + return FALSE; + } + if (tmpc->base_class && !ClassRep2(doc,_d,tmpc->base_class->str, + depth,max_depth,dynamic,types,offset)) + return FALSE; + unlock=DocLock(doc); + DocPrint(doc,"Class:\"%s\"\n",class_name); + ml=tmpc->member_lst_and_root; + while (ml) { + tmpc2=ml->member_class; + ptr=_d(U8 *)+ml->offset; + DocPrint(doc,"%08X ",ptr(U8 *)+offset); + stars=tmpc2->ptr_stars_cnt; + tmpc2=OptClassFwd(tmpc2); + tmpc2-=tmpc2->ptr_stars_cnt; + if (tmpc2->type & HTT_INTERNAL_TYPE) { + DocPrint(doc,"$$GREEN$$%-20ts:$$FG$$",ml->str); + if (stars==1 && (tmpc2->raw_type==RT_I8 || tmpc2->raw_type==RT_U8)) { + ptr=*ptr; + if (ChkPtr(ptr)) { + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$$\n"); + doc_e->data=ptr; + DocDataFmt(doc,doc_e); + } else + DocPrint(doc,"%40ts\n",ptr); + } + } else if (!stars) { + j=MinI64(ml->dim.total_cnt,32); + if (tmpc2->raw_type==RT_I8 || tmpc2->raw_type==RT_U8) { + if (j==1) { + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U8,A=\"%%c\"$$\n"); + doc_e->data=ptr; + } else + DocPrint(doc,"%c\n",*ptr(U8 *)); + } else { + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$$\n"); + doc_e->data=ptr; + DocDataFmt(doc,doc_e); + } else + DocPrint(doc,"%40ts\n",ptr); + } + } + for (i=0;iraw_type) { + case RT_I0: + case RT_U0: + break; + case RT_I8: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I8,A=\"%%02X\"$$ "); + doc_e->data=ptr(I8 *)++; + } else + DocPrint(doc,"%02X ",*ptr(I8 *)++); + break; + case RT_U8: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U8,A=\"%%02X\"$$ "); + doc_e->data=ptr(U8 *)++; + } else + DocPrint(doc,"%02X ",*ptr(U8 *)++); + break; + case RT_I16: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I16,A=\"%%04X\"$$ "); + doc_e->data=ptr(I16 *)++; + } else + DocPrint(doc,"%04X ",*ptr(I16 *)++); + break; + case RT_U16: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U16,A=\"%%04X\"$$ "); + doc_e->data=ptr(U16 *)++; + } else + DocPrint(doc,"%04X ",*ptr(U16 *)++); + break; + case RT_I32: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I32,A=\"%%08X\"$$ "); + doc_e->data=ptr(I32 *)++; + } else + DocPrint(doc,"%08X ",*ptr(I32 *)++); + break; + case RT_U32: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U32,A=\"%%08X\"$$ "); + doc_e->data=ptr(U32 *)++; + } else + DocPrint(doc,"%08X ",*ptr(U32 *)++); + break; + case RT_U64: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U64,A=\"%%08X\"$$ "); + doc_e->data=ptr(U64 *)++; + } else + DocPrint(doc,"%08X ",*ptr(U64 *)++); + break; + case RT_F64: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=F64,A=\"%%16g\"$$ "); + doc_e->data=ptr(F64 *)++; + } else + DocPrint(doc,"%16g ",*ptr(I64 *)++); + break; + default: + if (dynamic) { + doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,A=\"%%016X\"$$ "); + doc_e->data=ptr(I64 *)++; + } else + DocPrint(doc,"%016X ",*ptr(I64 *)++); + } + if (dynamic) + DocDataFmt(doc,doc_e); + } + if (jdim.total_cnt) + DocPrint(doc,"..."); + } else + DocPrint(doc,"%016X",*ptr); + DocPrint(doc,"\n"); + } else { + if (depth<2) { + if (stars==1 && !ChkPtr(*ptr)) + DocPrint(doc,"%-20ts:%016X\n",ml->str,*ptr); + else { + DocPrint(doc,"$$TR,\"%s\"$$\n",ml->str); + DocPrint(doc,"$$ID,2$$"); + if (!stars) + ClassRep2(doc,ptr,tmpc2->str,depth+1,max_depth,dynamic); + else if (stars==1) + ClassRep2(doc,*ptr,tmpc2->str,depth+1,max_depth,dynamic); + DocPrint(doc,"$$ID,-2$$"); + } + } else + DocPrint(doc,"%-20ts\n",ml->str); + } + ml=ml->next; + } + if (unlock) + DocUnlock(doc); + return TRUE; +} + +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; + if (IsRaw) + doc=DocNew; + else { + DocMax; + doc=DocPut; + } + if (fun) + ClassRep2(doc,_d,class_name,0,max_depth,FALSE,HTT_FUN,offset); + else + ClassRep2(doc,_d,class_name,0,max_depth,FALSE,HTT_CLASS,offset); + DocPrint(doc,"\n"); + DocRecalc(doc); + if (IsRaw) { + DocDump(doc,100000); + DocDel(doc); + } +} + +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; + if (IsRaw) + doc=DocNew; + else { + DocMax; + doc=DocPut; + } + if (fun) + ClassRep2(doc,_d,class_name,0,max_depth,TRUE,HTT_FUN,offset); + else + ClassRep2(doc,_d,class_name,0,max_depth,TRUE,HTT_CLASS,offset); + DocPrint(doc,"\n"); + DocRecalc(doc); + if (IsRaw) { + DocDump(doc,100000); + DocDel(doc); + } +} + +U0 UpdateRegVarImg(CHashFun *tmpf,U8 *_b,CTask *task) +{ + CMemberLst *ml; + CHashClass *tmpc; + ml=tmpf->member_lst_and_root; + while (ml) { + if (ml->reg!=REG_NONE) { + tmpc=OptClassFwd(ml->member_class); + MemCpy(_b+ml->offset,TaskRegAddr(task,ml->reg),tmpc->size); + } + ml=ml->next; + } +} + +public U0 FunRep(U8 *st,U8 *rbp=NULL,I64 max_depth=2,CTask *task=NULL) +{//Shows names and vals of a fun's local vars using compiler's info. + I64 size; + U8 *img; + CHashFun *tmpf=HashFind(st,Fs->hash_table,HTT_FUN); + CMemberLst *tmpm; + if (tmpf) { + if (rbp) { + if (task) { +//tmpf->size is negative. It's the bottom + //of the fun local var space relative to RBP . + size=tmpf->arg_cnt*8-tmpf->size+16; + + img=MAlloc(size); + MemCpy(img,rbp+tmpf->size,size); + UpdateRegVarImg(tmpf,img-tmpf->size,task); + ClassRep(img-tmpf->size,st,max_depth,TRUE,rbp-img+tmpf->size); + Free(img); + } else + ClassRep(rbp,st,max_depth,TRUE); + } else { + tmpm=tmpf->member_lst_and_root; + while (tmpm) { + if (0<=tmpm->regreg,"ST_U64_REGS",tmpm->str; + else + "%08tX %s\n",tmpm->offset,tmpm->str; + tmpm=tmpm->next; + } + "%08tX Stk Size\n",tmpf->size; + } + } +} + +#help_index "Debugging/Unassemble" +public U0 Uf(U8 *st) +{//Unassembles a named fun + I64 i; + CHashSrcSym *tmpf; + CDbgInfo *dbg_info; + if (tmpf=HashFind(st,Fs->hash_table,HTT_FUN|HTT_EXPORT_SYS_SYM)) { + if (tmpf->type&HTT_FUN) + FunRep(st); + if (dbg_info=tmpf->dbg_info) { + i=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line] + -dbg_info->body[0]; + Un(dbg_info->body[0],i); + "Code Size:%04X\n",i; + } else + U(HashVal(tmpf)); + } +} diff --git a/TempleOSCD/Adam/ADefine.HC b/TempleOSCD/Adam/ADefine.HC new file mode 100644 index 0000000..e8d708a --- /dev/null +++ b/TempleOSCD/Adam/ADefine.HC @@ -0,0 +1,41 @@ +#help_index "Define;Char/Define" + +U0 LoadDocDefines() +{ + CBinFile *bfh=mem_boot_base-sizeof(CBinFile); + + DefinePrint("DD_OS_NAME_VERSION","TempleOS V%0.2f",sys_os_version); + DefinePrint("DD_TEMPLEOS_AGE","%0.1f", + (Now-Str2Date("8/1/2003"))/ToF64(1<<32)/CDATE_YEAR_DAYS); + + //This is cut and replaced when I generate a distro. + //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOS/TOSDistro.HC,DD_TEMPLEOS_LOC"$. + $TR-C,"LineRep"$ + $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,749"); +DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,933"); +$ID,-4$ + DefinePrint("DD_KERNEL","%08X",bfh); + bfh(I64)+=bfh->file_size-1; + DefinePrint("DD_KERNEL_END","%08X",bfh); + + //$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/Adam/Opt/Boot/BootDVD.HC,DD_BOOT_HIGH_LOC_DVD"$ + + DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR); + DefinePrint("DD_MP_VECT_END","%08X", + MP_VECT_ADDR+COREAP_16BIT_INIT_END-COREAP_16BIT_INIT-1); + + DefinePrint("DD_SYS_FIXED_AREA_BASE","%08X",SYS_FIXED_AREA); + DefinePrint("DD_SYS_FIXED_AREA_END","%08X", + SYS_FIXED_AREA+sizeof(CSysFixedArea)-1); + DefinePrint("DD_MEM_HEAP_BASE","%08X",mem_heap_base); + DefinePrint("DD_MEM_HEAP_LIMIT","%08X",mem_heap_limit); + DefinePrint("DD_MEM_MIN_MEG","%dMeg",MEM_MIN_MEG); + DefinePrint("DD_UNCACHED_ALIAS","%010X",dev.uncached_alias); + DefinePrint("DD_PHYSICAL_SPACE_END","%010X", + mem_physical_space-1); + DefinePrint("DD_MAPPED_SPACE_END","%010X", + mem_mapped_space-1); + DefinePrint("DD_JIFFY_HZ","%dHz",JIFFY_FREQ); +} + +LoadDocDefines; diff --git a/TempleOSCD/Adam/AExts.HC b/TempleOSCD/Adam/AExts.HC new file mode 100644 index 0000000..d1728a2 --- /dev/null +++ b/TempleOSCD/Adam/AExts.HC @@ -0,0 +1,101 @@ +extern U0 ACDDef(I64 n,CTask *parent=NULL); +extern U0 ACDDefsPut(CDoc *doc=NULL,U8 *st,I64 num=-1); +extern U0 ACDFillin(I64 n); +extern U0 ACFillIn(I64 n); +extern U0 ACMan(I64 n,CTask *parent_task=NULL); +extern U0 ACMisspelledFind(CDoc *doc); +extern I64 AdamFile(U8 *filename,Bool warn_ext=TRUE); +extern Bool AutoComplete(Bool val=OFF); +extern I64 BMPWrite(U8 *filename,CDC *dc,I64 bits=4); +extern U0 ClipboardDel(); +extern CCtrl *CtrlFindUnique(CTask *haystack_task,I64 needle_type); +extern Bool CtrlInside(CCtrl *c,I64 x,I64 y); +extern U8 *DC2Sprite(CDC *tmpb); +extern U0 DocBMP(CDoc *doc=NULL,U8 *filename, + Bool dither_probability=FALSE,Bool use_ms_paint_palette=FALSE); +extern U0 DocBinDel(CDoc *doc,CDocBin *b); +extern U0 DocBinsValidate(CDoc *doc); +extern U0 DocBottom(CDoc *doc=NULL); +extern U0 DocCenter(CDoc *doc=NULL,I64 recalc_flags=RECALCt_NORMAL); +extern U0 DocClear(CDoc *doc=NULL,Bool clear_holds=FALSE); +extern Bool DocCursor(Bool show=OFF,CDoc *doc=NULL); +extern U0 DocD(U8 *buf,I64 cnt=0x80); +extern U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL); +extern U0 DocDel(CDoc *doc); +extern CDoc *DocDisplay(CTask *task=NULL); +extern U0 DocDump(CDoc *doc,I64 uS_delay=0); +extern CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e); +extern U0 DocEntryDel(CDoc *doc,CDocEntry *doc_e); +extern Bool DocForm(U8 *_d,U8 *class_name=lastclass, + I64 dof_flags=0,U8 *header=NULL,U8 *footer=NULL); +extern U0 DocHelpIdx(CDoc *doc,U8 *idx); +extern Bool DocHighlightCursor(Bool show=OFF,CDoc *doc=NULL); +extern U0 DocInsDoc(CDoc *doc=NULL,CDoc *doc2); +extern U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e); +extern Bool DocLock(CDoc *doc); +extern I64 DocMax(I64 i=I64_MAX); +extern CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL); +extern CDocEntry *DocPrint(CDoc *doc=NULL,U8 *fmt,...); +extern CDoc *DocPut(CTask *task=NULL); +extern CDoc *DocRead(U8 *name=NULL,I64 flags=0); +extern Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL); +extern U0 DocRst(CDoc *doc,Bool is_old); +extern CDocEntry *DocSprite(CDoc *doc=NULL,U8 *elems,U8 *fmt=NULL); +extern U0 DocTop(CDoc *doc=NULL); +extern Bool DocUnlock(CDoc *doc); +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 U8 *EdSprite(I64 bin_num); +extern I64 ExeDoc(CDoc *doc,I64 ccf_flags=0); +extern I64 FindWiz(); +extern I64 GetI64(U8 *msg=NULL,I64 dft=0,I64 lo=I64_MIN,I64 hi=I64_MAX); +extern Bool GrPlot0(CDC *dc,I64 x,I64 y); +extern I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask, + U8 *fu_flags=NULL,U8 *_stage2_filename=NULL); +extern CMenuEntry *MenuEntryFind(CMenu *haystack_menu,U8 *needle_full_name); +extern CMenu *MenuFilePush(U8 *filename); +extern U0 MenuPop(); +extern CMenu *MenuPush(U8 *st); +extern U8 Mount(Bool caller_is_prtdsk=FALSE); +extern CTask *Noise(I64 mS,F64 min_ona,F64 max_ona); +extern Bool Plain(U8 *filename,I64 edf_dof_flags=0); +extern Bool PopUpCancelOk(U8 *header=NULL,U8 *footer=NULL); +extern I64 PopUpColor(U8 *header=NULL, + Bool allow_transparent=TRUE,Bool allow_dft=TRUE); +extern I64 PopUpColorDither(U8 *header=NULL); +extern I64 PopUpColorLighting(U8 *header=NULL); +extern I64 PopUpFile(U8 *filename, + Bool warn_ext=TRUE,CTask *parent=NULL,CTask **_pu_task=NULL); +extern Bool PopUpForm(U8 *_d,U8 *class_name=lastclass, + I64 dof_flags=DOF_SIZE_MIN,U8 *header=NULL,U8 *footer=NULL); +extern I64 PopUpGetI64(U8 *msg,I64 dft,I64 lo=I64_MIN,I64 hi=I64_MAX); +extern U8 *PopUpGetStr(U8 *header=NULL); +extern I64 PopUpMenu(CDoc *doc,I64 dof_flags=0); +extern Bool PopUpNoYes(U8 *header=NULL,U8 *footer=NULL); +extern Bool PopUpOk(U8 *header=NULL,U8 *footer=NULL); +extern I64 PopUpRangeI64( + I64 lo,I64 hi,I64 step=1,U8 *header=NULL,U8 *footer=NULL); +extern Bool PopUpTransform(I64 *r); +extern I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir, + U8 *_stage2_filename=NULL); +extern U0 Refresh(I64 cnt=1,Bool force=FALSE); +extern U0 RegOneTimePopUp(I64 flag_num,U8 *msg); +extern Bool RegWrite(U8 *path,U8 *fmt,...); +extern U0 SettingsPop(CTask *task=NULL,I64 flags=0); +extern CTaskSettings *SettingsPush(CTask *task=NULL,I64 flags=0); +extern U0 TemplateCtrlSlider(CDoc *doc); +extern Bool View(); +extern U0 ViewAnglesDel(CTask *task=NULL); +extern CCtrl *ViewAnglesNew(CTask *task=NULL); +extern Bool WinBorder(Bool val=OFF,CTask *task=NULL); +extern CDoc *WinCursorPosSet(CTask *task,I64 msx,I64 msy,Bool set_cursor=TRUE); +extern Bool WinHorz(I64 left,I64 right,CTask *task=NULL); +extern U0 WinMax(CTask *task=NULL); +extern U0 WinScrollNull(CTask *task,CD3I64 *s); +extern U0 WinScrollRestore(CTask *task,CD3I64 *s); +extern U0 WinScrollsInit(CTask *task); +extern I64 WinToTop(CTask *task=NULL,Bool update_z_buf=TRUE); +extern Bool WinVert(I64 top,I64 bottom,CTask *task=NULL); +extern CWinMgrGlbls winmgr; diff --git a/TempleOSCD/Adam/AHash.HC b/TempleOSCD/Adam/AHash.HC new file mode 100644 index 0000000..a64e54d --- /dev/null +++ b/TempleOSCD/Adam/AHash.HC @@ -0,0 +1,433 @@ +#help_index "Info;Hash/System;Cmd Line (Typically)" +class CWho +{ + CHashGeneric *h; + U8 *idx; +}; + +I64 HashEntriesCompare(CWho *h1,CWho *h2) +{ + I64 i1,i2; + if (i1=StrCmp(h1->h->str,h2->h->str)) + return i1; + i1=HashTypeNum(h1->h); + i2=HashTypeNum(h2->h); + return i1-i2; +} + +I64 HashEntriesCompare2(CWho *h1,CWho *h2) +{ + CHashFun *tmpf1=h1->h,*tmpf2=h2->h; + I64 i1=HashVal(tmpf1),i2=HashVal(tmpf2); + if (i1==i2) { + i1=HashTypeNum(tmpf1); + i2=HashTypeNum(tmpf2); + if (i1==i2) + return StrCmp(tmpf1->str,tmpf2->str); + } + return i1-i2; +} + +I64 HelpIndexCnt(U8 *ptr,U8 *idx) +{ + I64 cnt=0,ch,idx_len=StrLen(idx); + while (*ptr) { + if (!StrNCmp(ptr,idx,idx_len)) + cnt++; + while (ch=*ptr++) + if (ch==';') + break; + if (!ch) + ptr--; + } + return cnt; +} + +U8 *HelpIndexStr(U8 **_ptr,U8 *idx) +{ + U8 *ptr=*_ptr,*ptr2,*res; + I64 ch,idx_len=StrLen(idx); + while (*ptr) { + ptr2=ptr; + while (ch=*ptr++) + if (ch==';') + break; + if (!ch) + ptr--; + *_ptr=ptr; + if (!StrNCmp(ptr2,idx,idx_len)) { + if (ch==';') + ptr--; + *ptr=0; + res=StrNew(ptr2); + *ptr=ch; + return res; + } + } + return NULL; +} + +U8 *HelpComment(CTask *task,CHash *tmph,U8 *_src_link) +{ + CDoc *doc; + CDocEntry *doc_e; + U8 *res=NULL,*ptr,*ptr2,*src_link=StrNew(_src_link); + + if (*src_link=='F' && src_link[2]==':') + *src_link='P'; + XTalkWait(task,"Ed(0x%X,DOF_DONT_WINMGR_SYNC|DOF_DONT_SHOW);\n",src_link); + Free(src_link); + + doc=DocPut(task); + doc_e=doc->cur_entry; + if (tmph->type&HTT_FUN) { + if (Bt(&tmph(CHashFun *)->flags,Ff__EXTERN) || + Bt(&tmph(CHashFun *)->flags,Ff_INTERNAL)) + while (doc_e!=doc && + (!(doc_e->de_flags&DOCEF_TAG)||!StrOcc(doc_e->tag,';'))) + doc_e=doc_e->next; + else + while (doc_e!=doc && + (!(doc_e->de_flags&DOCEF_TAG)||!StrOcc(doc_e->tag,'{'))) + doc_e=doc_e->next; + } + if (doc_e!=doc) { + if (doc_e->de_flags&DOCEF_TAG) { + ptr=doc_e->tag; + if (ptr2=StrMatch("//",ptr)) + ptr=ptr2+2; + else if (ptr2=StrMatch("/*",ptr)) + ptr=ptr2+2; + else if (!StrNCmp(ptr,"public",6)) + ptr+=6; + while (*ptr==CH_SPACE) + ptr++; + res=StrNew(ptr); + doc_e=doc_e->next; + } + while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) { + if (doc_e->type_u8==DOCT_TAB) { + ptr=MStrPrint("%s ",res); + Free(res); + res=ptr; + } else if (doc_e->de_flags&DOCEF_TAG) { + ptr=MStrPrint("%s%s",res,doc_e->tag); + Free(res); + res=ptr; + } + doc_e=doc_e->next; + } + } + XTalkWait(task,"%c",CH_SHIFT_ESC); + if (res) { + ptr=MStrUtil(res,SUF_REM_TRAILING|SUF_REM_LEADING|SUF_SINGLE_SPACE); + Free(res); + res=ptr; + } + return res; +} + +I64 HashEntriesCompare3(CWho *h1,CWho *h2) +{ + I64 i,i1=0,i2=0; + i=StrCmp(h1->idx,h2->idx); + if (i) + return i; + else { + if (h1->h->type&HTT_HELP_FILE) + i1=1; + if (h2->h->type&HTT_HELP_FILE) + i2=1; + i=i2-i1; + if (i) + return i; + else + return StrCmp(h1->h->str,h2->h->str); + } +} + +public U0 Who(U8 *fu_flags=NULL,CHashTable *h=NULL, +U8 *idx=NULL,CDoc *doc=NULL) +{//Dump hash symbol table. +// "+p" for only public symbols + // "+m" to order by number (normally alphabetical) + // "-r" just local hash table + CHashTable *table; + CHashSrcSym *tmph; + CHashGeneric *ptr; + CWho *lst; + I64 cnt,i,j,k,f=0; + U8 buf[512],*st,*last_idx=StrNew(""),*cur_idx,*comment; + Bool recurse,publics,map; + CTask *task; + + ScanFlags(&f,Define("ST_FILE_UTIL_FLAGS"),"+r"); + ScanFlags(&f,Define("ST_FILE_UTIL_FLAGS"),fu_flags); + if (f&~(FUF_RECURSE|FUF_PUBLIC|FUF_MAP)) + throw('FUF'); + recurse=Bt(&f,FUf_RECURSE); + publics=Bt(&f,FUf_PUBLIC); + map =Bt(&f,FUf_MAP); + + if (!h) h=Fs->hash_table; + + if (idx) { + task=User; + TaskWait(task); + LBtr(&task->display_flags,DISPLAYf_SHOW); + } else + task=NULL; + + cnt=0; + table=h; + while (table) { + for (i=0;i<=table->mask;i++) { + tmph=table->body[i]; + while (tmph) { + if (!(tmph->type & (HTF_IMPORT | HTF_PRIVATE)) && + (tmph->type & HTF_PUBLIC || !publics)) { + if (!idx) + cnt++; + else if (tmph->type&HTG_SRC_SYM && (cur_idx=tmph->idx)) + cnt+=HelpIndexCnt(cur_idx,idx); + } + tmph=tmph->next; + } + } + if (recurse) + table=table->next; + else + break; + } + if (!cnt) goto wh_done; + + lst=CAlloc(cnt*sizeof(CWho)); + j=0; + table=h; + while (table) { + for (i=0;i<=table->mask;i++) { + tmph=table->body[i]; + while (tmph) { + if (!(tmph->type & (HTF_IMPORT | HTF_PRIVATE)) && + (tmph->type & HTF_PUBLIC || !publics)) + if (!idx) + lst[j++].h=tmph; + else if (tmph->type&HTG_SRC_SYM && (cur_idx=tmph->idx) && + (k=HelpIndexCnt(cur_idx,idx))) + while (k--) { + lst[j].idx=HelpIndexStr(&cur_idx,idx); + lst[j++].h=tmph; + } + tmph=tmph->next; + } + } + if (recurse) + table=table->next; + else + break; + } + + if (map) + QSort(lst,cnt,sizeof(CWho),&HashEntriesCompare2); + else if (idx) + QSort(lst,cnt,sizeof(CWho),&HashEntriesCompare3); + else + QSort(lst,cnt,sizeof(CWho),&HashEntriesCompare); + + if (idx) { + progress1_max=cnt; + progress1=0; + } + for (i=0;itype & HTT_HELP_FILE) { + DocPrint(doc,"$$WW,1$$"); + DocType(doc,ptr->str); + DocPrint(doc,"$$WW,0$$"); + } else { + if (ptr->type&HTG_SRC_SYM && ptr(CHashSrcSym *)->src_link) { + DocPrint(doc,"$$LK,\"%-20s\",A=\"%s\"$$", + ptr->str,ptr(CHashSrcSym *)->src_link); + if (idx) + comment=HelpComment(task,ptr,ptr(CHashSrcSym *)->src_link); + } else + DocPrint(doc,"%-20s",ptr->str); + + if (!idx) { + if (ptr->type & HTT_DEFINE_STR) { + st=MStrUtil(ptr(CHashDefineStr *)->data,SUF_SAFE_DOLLAR); + j=ptr(CHashDefineStr *)->cnt; + if (j==-1) + StrPrint(buf,"%-10tQ ",st); + else + StrPrint(buf,"%-10tQ %02X",st,j); + Free(st); + } else if (ptr->type & HTT_GLBL_VAR) + StrPrint(buf,"%010X ",ptr(CHashGlblVar *)->data_addr); + else + StrPrint(buf,"%010X ",HashVal(ptr)); + j=HashEntrySize(ptr); + if (j==-1) + CatPrint(buf," %04X ",ptr->use_cnt); + else + CatPrint(buf," %04X %010X ",ptr->use_cnt,j); + } else + *buf=0; + + k=ptr->type; + if (publics) + k&=~HTF_PUBLIC; + if (!(k&HTG_TYPE_MASK)) + CatPrint(buf,"NULL "); + while (k) { + j=Bsf(k); + if (j<0) + break; + Btr(&k,j); + CatPrint(buf,"%Z ",j,"ST_HTT_TYPES"); + } + DocPrint(doc,"%s",buf); + if (comment) { + DocPrint(doc,"$$GREEN$$%s$$FG$$",comment); + Free(comment); + } + DocPrint(doc,"\n"); + } + Free(lst[i].idx); + if (idx) + progress1++; + } + Free(lst); + if (idx) + progress1=progress1_max=0; + +wh_done: + if (doc) { + if (doc->head.next==doc) + DocPrint(doc,"No Match"); + else + DocRecalc(doc); + } + Free(last_idx); + Kill(task); +} + +#help_index "Info;Hash;Cmd Line (Typically)" + +#define HDR_NUM 16 +public I64 HashDepthRep(CHashTable *table=NULL) +{//Hash table linked-list chain depth report. +//Histogram of collision count. + I64 i,j,longest=0,cnt=0,a[HDR_NUM]; + CHash *tmph; + if (!table) table=Fs->hash_table; + MemSet(a,0,sizeof(a)); + for (i=0;i<=table->mask;i++) { + tmph=table->body[i]; + if (tmph) { + j=LinkedLstCnt(tmph); + if (jlongest) + longest=j; + } + } + "Histogram\n"; + for (i=0;imask+1,cnt,longest; + return longest; +} + +#help_index "Help System" +#help_file "::/Doc/HelpSystem" + +public U0 DocHelpIdx(CDoc *doc,U8 *idx) +{//Put to doc report for given help idx. + Who("+p",,idx,doc); +} + +public U0 PopUpHelpIndex(U8 *idx,CTask *parent=NULL) +{//PopUp win report for given help idx. + U8 *buf; + buf=MStrPrint("DocHelpIdx(DocPut,\"%s\");View;",idx); + PopUp(buf,parent); + Free(buf); +} + +#help_index "Hash/System" +public U0 MapFileLoad(U8 *filename) +{//Load map file so we have src line info. + U8 *st,*ptr,*name=DftExt(filename,"MAP.Z"), + *absname=FileNameAbs(name); + CDoc *doc=DocRead(name); + CDocEntry *doc_e; + CHashSrcSym *tmph; + I64 i,j,base=0; + CDbgInfo *dbg_info; + + FileExtRem(absname); + if (absname[1]==':' && StrLen(absname)>2 && + (tmph=HashSingleTableFind(absname+2,Fs->hash_table,HTT_MODULE))) + base=tmph(CHashGeneric *)->user_data0+sizeof(CBinFile); + + if (!doc) return; + doc_e=doc->head.next; + while (doc_e!=doc) { + if (doc_e->type_u8==DOCT_LINK) { + if (*doc_e->tag) + st=MStrUtil(doc_e->tag,SUF_REM_TRAILING); + else + st=MStrUtil(doc_e->aux_str,SUF_REM_TRAILING); + if (tmph=HashSingleTableFind(st,Fs->hash_table,HTG_SRC_SYM)) { + if (*doc_e->tag) { + Free(tmph->src_link); + tmph->src_link=doc_e->aux_str; + ptr=tmph->src_link; + if (ptr[0] && ptr[1] && ptr[2]==':') { + if (ptr[3]==':') + ptr[3]=blkdev.boot_drv_let; + else if (ptr[3]=='~') + ptr[3]=*blkdev.home_dir; + } + doc_e->aux_str=NULL; + } + if (tmph->type&(HTT_FUN|HTT_EXPORT_SYS_SYM) && + !(dbg_info=tmph->dbg_info) && doc_e->bin_data && + (dbg_info=doc_e->bin_data->data)) { + if (doc_e->bin_data->size>MSize(dbg_info)) + "Corrupt Map Entry\n"; + else { + doc_e->bin_data->data=NULL; + tmph->dbg_info=dbg_info; + for (i=dbg_info->min_line;i<=dbg_info->max_line+1;i++) { + j=i-dbg_info->min_line; + if (dbg_info->body[j]) + dbg_info->body[j]=dbg_info->body[j]+base; + } + } + } + } + Free(st); + } + doc_e=doc_e->next; + } + DocDel(doc); + Free(name); + Free(absname); +} diff --git a/TempleOSCD/Adam/AMath.HC b/TempleOSCD/Adam/AMath.HC new file mode 100644 index 0000000..2e2914a --- /dev/null +++ b/TempleOSCD/Adam/AMath.HC @@ -0,0 +1,135 @@ +#help_index "Math" +public U0 R2P(F64 *_mag=NULL,F64 *_arg=NULL,F64 x,F64 y) +{//Rect to polar +//Returns angle in range (-ă,ă] + if (_arg) + *_arg=Arg(x,y); + if (_mag) + *_mag=Sqrt(x*x+y*y); +} + +public U0 P2R(F64 *_x=NULL,F64 *_y=NULL,F64 mag,F64 arg) +{//Polar to Rect + if (_x) + *_x=mag*Cos(arg); + if (_y) + *_y=mag*Sin(arg); +} + +public F64 Wrap(F64 é,F64 base=-ă) +{//Returns angle in range [base,base+2*ă) + F64 res=é%(2*ă); + if (res>=base+2*ă) + res-=2*ă; + else if (res=1.0) + return ă/2.0; + c=Sqrt(1.0-c); + return ATan(s/c); +} + +public F64 ACos(F64 c) +{//Arc Cos (Inverse Cos). + F64 s; + if (!c) + return ă/2.0; + s=c*c; + if (s>=1.0) + return 0.0; + s=Sqrt(1.0-s); + return ATan(s/c); +} + +public F64 Sinh(F64 x) +{//Hyperbolic Sine. + return 0.5*(Exp(x)-Exp(-x)); +} + +public F64 Cosh(F64 x) +{//Hyperbolic Cosine. + return 0.5*(Exp(x)+Exp(-x)); +} + +#help_index "Math/Complex;Data Types/Complex" +public Complex *CAdd(Complex *sum,Complex *n1,Complex *n2) +{//sum=n1+n2 + sum->x=n1->x+n2->x; + sum->y=n1->y+n2->y; + return sum; +} + +public Complex *CSub(Complex *diff,Complex *n1,Complex *n2) +{//diff=n1-n2 + diff->x=n1->x-n2->x; + diff->y=n1->y-n2->y; + return diff; +} + +public Complex *CMul(Complex *prod,Complex *n1,Complex *n2) +{//prod=n1*n2 + prod->x=n1->x*n2->x-n1->y*n2->y; + prod->y=n1->x*n2->y+n1->y*n2->x; + return prod; +} + +public Complex *CDiv(Complex *quot,Complex *n1,Complex *n2) +{//quot=n1/n2 + F64 m1,arg1,m2,arg2; + R2P(&m1,&arg1,n1->x,n1->y); + R2P(&m2,&arg2,n2->x,n2->y); + m1/=m2; + arg1-=arg2; + quot->x=m1*Cos(arg1); + quot->y=m1*Sin(arg1); + return quot; +} + +public Complex *CScale(Complex *dst,F64 s) +{//dst*=s + dst->x*=s; + dst->y*=s; + return dst; +} + +public Complex *CCopy(Complex *dst,Complex *src) +{//dst=src + dst->x=src->x; + dst->y=src->y; + return dst; +} + +public Complex *CEqu(Complex *dst,F64 x,F64 y) +{//dst=(x,y) + dst->x=x; + dst->y=y; + return dst; +} + +public Complex *CPoly(Complex *dst,I64 n,Complex *zeros,Complex *x) +{//Eval complex polynomial + I64 i; + Complex n1,n2; + if (n>0) { + CSub(dst,x,&zeros[0]); + for (i=1;in_internal*sizeof(F64); + F64 *ptr=ode->array_base; + ode->state_internal=ptr; ptr(I64)+=s; + ode->state_scale=ptr; ptr(I64)+=s; + ode->DstateDt=ptr; ptr(I64)+=s; + ode->initial_state=ptr; ptr(I64)+=s; + ode->tmp0=ptr; ptr(I64)+=s; + ode->tmp1=ptr; ptr(I64)+=s; + ode->tmp2=ptr; ptr(I64)+=s; + ode->tmp3=ptr; ptr(I64)+=s; + ode->tmp4=ptr; ptr(I64)+=s; + ode->tmp5=ptr; ptr(I64)+=s; + ode->tmp6=ptr; ptr(I64)+=s; + ode->tmp7=ptr; +} + +public CMathODE *ODENew(I64 n,F64 max_tolerance=1e-6,I64 flags=0) +{//Make differential equation ctrl struct. See $LK,"flags",A="MN:ODEF_HAS_MASSES"$. + + //The tolerance is not precise. + //You can min_tolerance and it will + //dynamically adjust tolerance to utilize + //the CPU. + + I64 s=n*sizeof(F64); + CMathODE *ode=MAlloc(sizeof(CMathODE)); + + ode->t=0; + ode->t_scale=1.0; + ode->base_t=0; + ode->flags=flags; + ode->n_internal=ode->n=n; + ode->h=1e-6; + ode->h_min=1e-64; + ode->h_max=1e32; + ode->max_tolerance=ode->min_tolerance=ode->tolerance_internal=max_tolerance; + ode->win_task=ode->mem_task=Fs; + ode->derivative=NULL; + QueInit(&ode->next_mass); + QueInit(&ode->next_spring); + ode->acceleration_limit=ode->drag_v=ode->drag_v2=ode->drag_v3=0; + + ode->state=CAlloc(s); + ode->array_base=MAlloc(12*s); + ODERstPtrs(ode); + return ode; +} + +public U0 ODEDel(CMathODE *ode) +{//Free ODE node, but not masses or springs. + if (!ode) return; + Free(ode->state); + Free(ode->array_base); + Free(ode); +} + +public I64 ODESize(CMathODE *ode) +{//Mem size of ode ctrl, but not masses and springs. + if (!ode) + return 0; + else + return MSize2(ode->state)+MSize2(ode->array_base)+MSize2(ode); +} + +U0 ODESetMassesPtrs(CMathODE *ode,F64 *state,F64 *DstateDt) +{ + COrder2D3 *ptr1=state(F64 *)+ode->n, + *ptr2=DstateDt(F64 *)+ode->n; + CMass *tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + tmpm->state=ptr1++; + tmpm->DstateDt=ptr2++; + tmpm=tmpm->next; + } +} + +U0 ODEState2Internal(CMathODE *ode) +{ + CMass *tmpm; + F64 *old_array_base; + I64 mass_cnt; + + if (ode->flags&ODEF_HAS_MASSES) { + mass_cnt=0; + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + mass_cnt++; + tmpm=tmpm->next; + } + old_array_base=ode->array_base; + ode->n_internal=ode->n+6*mass_cnt; + ode->array_base=MAlloc(12*ode->n_internal*sizeof(F64),ode->mem_task); + Free(old_array_base); + ODERstPtrs(ode); + + ODESetMassesPtrs(ode,ode->state_internal,ode->state_internal); + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + MemCpy(tmpm->state,&tmpm->saved_state,sizeof(COrder2D3)); + tmpm=tmpm->next; + } + } + MemCpy(ode->state_internal,ode->state,ode->n*sizeof(F64)); +} + +U0 ODEInternal2State(CMathODE *ode) +{ + CMass *tmpm; + MemCpy(ode->state,ode->state_internal,ode->n*sizeof(F64)); + if (ode->flags&ODEF_HAS_MASSES) { + ODESetMassesPtrs(ode,ode->state_internal,ode->state_internal); + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + MemCpy(&tmpm->saved_state,tmpm->state,sizeof(COrder2D3)); + tmpm=tmpm->next; + } + } +} + +public U0 ODERenum(CMathODE *ode) +{//Renumber masses and springs. + I64 i; + CSpring *tmps; + CMass *tmpm; + + i=0; + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + tmpm->num=i++; + tmpm=tmpm->next; + } + + i=0; + tmps=ode->next_spring; + while (tmps!=&ode->next_spring) { + tmps->num=i++; + tmps->end1_num=tmps->end1->num; + tmps->end2_num=tmps->end2->num; + tmps=tmps->next; + } +} + +public CMass *MassFind(CMathODE *ode,F64 x,F64 y,F64 z=0) +{//Search for mass nearest to x,y,z. + CMass *tmpm,*best_mass=NULL; + F64 dd,best_dd=F64_MAX; + + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + dd=Sqr(tmpm->x-x)+Sqr(tmpm->y-y)+Sqr(tmpm->z-z); + if (ddnext; + } + return best_mass; +} + +public CSpring *SpringFind(CMathODE *ode,F64 x,F64 y,F64 z=0) +{//Find spring midpoint nearest x,y,z. + CSpring *tmps,*best_spring=NULL; + F64 dd,best_dd=F64_MAX; + + tmps=ode->next_spring; + while (tmps!=&ode->next_spring) { + dd=Sqr((tmps->end1->x+tmps->end2->x)/2-x)+ + Sqr((tmps->end1->y+tmps->end2->y)/2-y)+ + Sqr((tmps->end1->z+tmps->end2->z)/2-z); + if (ddnext; + } + return best_spring; +} + +public U0 MassOrSpringFind( + CMathODE *ode,CMass **res_mass,CSpring **res_spring, + F64 x,F64 y,F64 z=0) +{//Find spring or mass nearest x,y,z. + CMass *tmpm,*best_mass=NULL; + CSpring *tmps,*best_spring=NULL; + F64 dd,best_dd=F64_MAX; + + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + dd=Sqr(tmpm->x-x)+Sqr(tmpm->y-y)+Sqr(tmpm->z-z); + if (ddnext; + } + + tmps=ode->next_spring; + while (tmps!=&ode->next_spring) { + dd=Sqr((tmps->end1->x+tmps->end2->x)/2-x)+ + Sqr((tmps->end1->y+tmps->end2->y)/2-y)+ + Sqr((tmps->end1->z+tmps->end2->z)/2-z); + if (ddnext; + } + if (res_mass) *res_mass =best_mass; + if (res_spring) *res_spring=best_spring; +} + +public CMass *MassFindNum(CMathODE *ode,I64 num) +{//Return mass number N. + CMass *tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + if (tmpm->num==num) + return tmpm; + tmpm=tmpm->next; + } + return NULL; +} + +public U0 ODERstInactive(CMathODE *ode) +{//Set all masses and springs to ACTIVE for new trial. + CMass *tmpm; + CSpring *tmps; + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + tmpm->flags&=~MSF_INACTIVE; + tmpm=tmpm->next; + } + tmps=ode->next_spring; + while (tmps!=&ode->next_spring) { + tmps->flags&=~SSF_INACTIVE; + tmps=tmps->next; + } +} + +U0 ODECalcSprings(CMathODE *ode) +{ + CSpring *tmps=ode->next_spring; + CMass *e1,*e2; + F64 d; + CD3 p; + while (tmps!=&ode->next_spring) { + if (tmps->flags&SSF_INACTIVE) { + tmps->displacement=0; + tmps->f=0; + } else { + e1=tmps->end1; + e2=tmps->end2; + d=D3Norm(D3Sub(&p,&e2->state->x,&e1->state->x)); + tmps->displacement=d-tmps->rest_len; + tmps->f=tmps->displacement*tmps->const; + if (tmps->f>0 && tmps->flags&SSF_NO_TENSION) + tmps->f=0; + else if (tmps->f<0 && tmps->flags&SSF_NO_COMPRESSION) + tmps->f=0; + if (d>0) { + D3MulEqu(&p,tmps->f/d); + D3AddEqu(&e1->DstateDt->DxDt,&p); + D3SubEqu(&e2->DstateDt->DxDt,&p); + } + } + tmps=tmps->next; + } +} + +U0 ODECalcDrag(CMathODE *ode) +{ + CMass *tmpm; + F64 d,dd; + CD3 p; + if (ode->drag_v || ode->drag_v2 || ode->drag_v3) { + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + if (!(tmpm->flags & MSF_INACTIVE) && + tmpm->drag_profile_factor && + (dd=D3NormSqr(&tmpm->state->DxDt))) { + d=ode->drag_v; + if (ode->drag_v2) + d+=ode->drag_v2*Sqrt(dd); + if (ode->drag_v3) + d+=dd*ode->drag_v3; + D3SubEqu(&tmpm->DstateDt->DxDt, + D3Mul(&p,d*tmpm->drag_profile_factor,&tmpm->state->DxDt)); + } + tmpm=tmpm->next; + } + } +} + +U0 ODEApplyAccelerationLimit(CMathODE *ode) +{ + CMass *tmpm; + F64 d; + if (ode->acceleration_limit) { + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + if (!(tmpm->flags & MSF_INACTIVE) && + (d=D3Norm(&tmpm->DstateDt->DxDt))>ode->acceleration_limit) + D3MulEqu(&tmpm->DstateDt->DxDt,ode->acceleration_limit/d); + tmpm=tmpm->next; + } + } +} + +U0 ODECallDerivative(CMathODE *ode,F64 t,F64 *state,F64 *DstateDt) +{ + CMass *tmpm; + if (ode->flags&ODEF_HAS_MASSES) { + ODESetMassesPtrs(ode,state,DstateDt); + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + if (!(tmpm->flags&MSF_INACTIVE)) { + D3Zero(&tmpm->DstateDt->DxDt); + D3Copy(&tmpm->DstateDt->x,&tmpm->state->DxDt); + } + tmpm=tmpm->next; + } + ODECalcSprings(ode); + ODECalcDrag(ode); + (*ode->derivative)(ode,t,state,DstateDt); + tmpm=ode->next_mass; + while (tmpm!=&ode->next_mass) { + if (!(tmpm->flags&MSF_INACTIVE)) { + if (tmpm->flags&MSF_FIXED) { + D3Zero(&tmpm->DstateDt->DxDt); + D3Zero(&tmpm->DstateDt->x); + } else if (tmpm->mass) + D3DivEqu(&tmpm->DstateDt->DxDt,tmpm->mass); + } + tmpm=tmpm->next; + } + ODEApplyAccelerationLimit(ode); + } else + (*ode->derivative)(ode,t,state,DstateDt); +} + +U0 ODEOneStep(CMathODE *ode) +{ + I64 i; + ODECallDerivative(ode,ode->t,ode->state_internal,ode->DstateDt); + for (i=0;in_internal;i++) + ode->state_internal[i]+=ode->h*ode->DstateDt[i]; + ode->t+=ode->h; +} + +U0 ODERK4OneStep(CMathODE *ode) +{ + I64 i,n=ode->n_internal; + F64 xh,hh,h6,*dym,*dyt,*yt,*DstateDt; + + dym =ode->tmp0; + dyt =ode->tmp1; + yt =ode->tmp2; + DstateDt=ode->tmp3; + hh =0.5*ode->h; + h6 =ode->h / 6.0; + xh =ode->t + hh; + + ODECallDerivative(ode,ode->t,ode->state_internal,ode->DstateDt); + for (i=0;istate_internal[i]+hh*DstateDt[i]; + ODECallDerivative(ode,xh,yt,dyt); + for (i=0;istate_internal[i]+hh*dyt[i]; + ODECallDerivative(ode,xh,yt,dym); + for (i=0;istate_internal[i]+ode->h*dym[i]; + dym[i]+=dyt[i]; + } + ode->t+=ode->h; + ODECallDerivative(ode,ode->t,yt,dyt); + for (i=0;istate_internal[i]+=h6*(DstateDt[i]+dyt[i]+2.0*dym[i]); +} + +#define ODEa2 0.2 +#define ODEa3 0.3 +#define ODEa4 0.6 +#define ODEa5 1.0 +#define ODEa6 0.875 +#define ODEb21 0.2 +#define ODEb31 (3.0/40.0) +#define ODEb32 (9.0/40.0) +#define ODEb41 0.3 +#define ODEb42 (-0.9) +#define ODEb43 1.2 +#define ODEb51 (-11.0/54.0) +#define ODEb52 2.5 +#define ODEb53 (-70.0/27.0) +#define ODEb54 (35.0/27.0) +#define ODEb61 (1631.0/55296.0) +#define ODEb62 (175.0/512.0) +#define ODEb63 (575.0/13824.0) +#define ODEb64 (44275.0/110592.0) +#define ODEb65 (253.0/4096.0) +#define ODEc1 (37.0/378.0) +#define ODEc3 (250.0/621.0) +#define ODEc4 (125.0/594.0) +#define ODEc6 (512.0/1771.0) +#define ODEdc1 (37.0/378.0-2825.0/27648.0) +#define ODEdc3 (250.0/621.0-18575.0/48384.0) +#define ODEdc4 (125.0/594.0-13525.0/55296.0) +#define ODEdc5 (-277.0/14336.0) +#define ODEdc6 (512.0/1771.0-0.25) + +U0 ODECashKarp(CMathODE *ode) +{ + I64 i,n=ode->n_internal; + F64 h=ode->h,*state=ode->state_internal, + *DstateDt=ode->DstateDt,*ak2,*ak3,*ak4,*ak5,*ak6, + *tmpstate,*stateerr,*outstate; + + ak2=ode->tmp0; + ak3=ode->tmp1; + ak4=ode->tmp2; + ak5=ode->tmp3; + ak6=ode->tmp4; + tmpstate=ode->tmp5; + outstate=ode->tmp6; + stateerr=ode->tmp7; + + for (i=0;it+ODEa2*h,tmpstate,ak2); + for (i=0;it+ODEa3*h,tmpstate,ak3); + for (i=0;it+ODEa4*h,tmpstate,ak4); + for (i=0;it+ODEa5*h,tmpstate,ak5); + for (i=0;it+ODEa6*h,tmpstate,ak6); + for (i=0;itmp6,*stateerr=ode->tmp7; + while (TRUE) { + ode->h=Clamp(ode->h,ode->h_min,ode->h_max); + ODECashKarp(ode); + errmax=0.0; + for (i=0;in_internal;i++) { + tmp=Abs(stateerr[i]/ode->state_scale[i]); + if (tmp>errmax) + errmax=tmp; + } + errmax/=ode->tolerance_internal; + if (errmax<=1.0 || ode->h==ode->h_min) break; + tmp=ode->h*SAFETY*errmax`PSHRNK; + if (tmp<0.1*ode->h) + ode->h*=0.1; + else + ode->h=tmp; + } + ode->t+=ode->h; + if (errmax>ERRCON) + ode->h*=SAFETY*errmax`PGROW; + else + ode->h*=5.0; + ode->h=Clamp(ode->h,ode->h_min,ode->h_max); + MemCpy(ode->state_internal,tmpstate,sizeof(F64)*ode->n_internal); +} + +F64 ode_alloced_factor=0.75; + +U0 ODEsUpdate(CTask *task) +{/* This routine is called by the $LK,"window mgr",A="FF:::/Adam/Gr/GrScrn.HC,ODEsUpdate"$ on a continuous +basis to allow real-time simulation. It is intended +to provide ress good enough for games. It uses a runge-kutta +integrator which is a better algorithm than doing it with Euler. + +It is adaptive step-sized, so it slows down when an important +event is taking place to improve accuracy, but in my implementation +it has a timeout. +*/ + I64 i; + F64 d,start_time,timeout_time,t_desired,t_initial,interpolation; + CMathODE *ode; + + if (task->next_ode==&task->next_ode) + task->last_ode_time=0; + else if (!Bt(&task->win_inhibit,WIf_SELF_ODE)) { +//See $LK,"GrUpdateTasks",A="MN:GrUpdateTasks"$() and $LK,"GrUpdateTaskODEs",A="MN:GrUpdateTaskODEs"$(). + //We will not pick a time limit based on + //how busy the CPU is, what percent of the + //last refresh cycle was spent on ODE's + //and what the refresh cycle rate was. + start_time=tS; + d=1.0/winmgr.fps; + timeout_time=start_time+ + (task->last_ode_time/d+0.1)/(winmgr.last_ode_time/d+0.1)* + ode_alloced_factor*d; + ode=task->next_ode; + while (ode!=&task->next_ode) { + t_initial=ode->t; + d=tS; + if (!(ode->flags&ODEF_STARTED)) { + ode->base_t=d; + ode->flags|=ODEF_STARTED; + } + d-=ode->base_t+t_initial; + t_desired=ode->t_scale*d+t_initial; + if (ode->flags&ODEF_PAUSED) + ode->base_t+=t_desired-ode->t; //Slip + else if (ode->derivative) { + ODEState2Internal(ode); + MemCpy(ode->initial_state,ode->state_internal, + ode->n_internal*sizeof(F64)); + while (ode->th_max=t_desired-ode->t; + ODECallDerivative(ode,ode->t,ode->state_internal,ode->DstateDt); + for (i=0;in_internal;i++) + ode->state_scale[i]=Abs(ode->state_internal[i])+ + Abs(ode->DstateDt[i]*ode->h)+ode->tolerance_internal; + ODERK5OneStep(ode); + if (tS>timeout_time) { + ode->base_t+=t_desired-ode->t; //Slip + goto ode_done; + + } + } + + //Interpolate if end time was not exact. + if (ode->t!=t_desired) { + if (interpolation=ode->t-t_initial) { + interpolation=(t_desired-t_initial)/interpolation; + if (interpolation!=1.0) + for (i=0;in_internal;i++) + ode->state_internal[i]=(ode->state_internal[i]- + ode->initial_state[i])*interpolation+ + ode->initial_state[i]; + } + ode->t=t_desired; + } +ode_done: + ODEInternal2State(ode); + + //Convenience call to set vals + ODECallDerivative(ode,ode->t,ode->state_internal,ode->DstateDt); + } + ode->base_t+=(1.0-ode->t_scale)*d; + ode=ode->next; + } + + //Now, we will dynamically adjust tolerances. + + //We will regulate the tolerances + //to fill the time we decided was + //okay to devote to ODE's. + //Since we might have multiple ODE's + //active we scale them by the same factor. + + //This algorithm is probably not stable or very good, but it's something. + + //Target is 75% of alloced time. + d=(tS-start_time)/(timeout_time-start_time)-0.75; + + ode=task->next_ode; + while (ode!=&task->next_ode) { + if (!(ode->flags&ODEF_PAUSED) && ode->derivative) { + if (ode->min_tolerance!=ode->max_tolerance) { + if (d>0) + ode->tolerance_internal*=10.0`d; + else + ode->tolerance_internal*=2.0`d; + } + ode->tolerance_internal=Clamp(ode->tolerance_internal, + ode->min_tolerance,ode->max_tolerance); + } + ode=ode->next; + } + winmgr.ode_time+=task->last_ode_time=tS-start_time; + } +} diff --git a/TempleOSCD/Adam/AMem.HC b/TempleOSCD/Adam/AMem.HC new file mode 100644 index 0000000..5a35403 --- /dev/null +++ b/TempleOSCD/Adam/AMem.HC @@ -0,0 +1,179 @@ +#help_index "Memory/Task" +public I64 TaskMemAlloced(CTask *task=NULL,Bool override_validate=FALSE) +{//Count of bytes alloced to a task, used+unused. + I64 res; + if (!task) task=Fs; + if (override_validate || TaskValidate(task)) { + res=task->code_heap->alloced_u8s; + if (task->code_heap!=task->data_heap) + res+=task->data_heap->alloced_u8s; + return res; + } else + return 0; +} + +public I64 TaskMemUsed(CTask *task=NULL,Bool override_validate=FALSE) +{//Count of bytes alloced to a task and in use. + I64 res; + if (!task) task=Fs; + if (override_validate || TaskValidate(task)) { + res=task->code_heap->used_u8s; + if (task->data_heap!=task->code_heap) + res+=task->data_heap->used_u8s; + return res; + } else + return 0; +} + +#help_index "Memory/Task;Debugging/Heap;Memory/Debugging" +public Bool HeapRep(CTask *task) +{//Report status of task's heap. + I64 i,cnt; + CMemUnused *uum; + + if (!task || task==Fs) { + "Task can't HeapRep on self.\n"; + return FALSE; + } + if (!TaskValidate(task)) return FALSE; + + PUSHFD + CLI + while (LBts(&task->code_heap->locked_flags,HClf_LOCKED)) + PAUSE + if (task->data_heap!=task->code_heap) + while (LBts(&task->data_heap->locked_flags,HClf_LOCKED)) + PAUSE + + for (i=0;i>3;i++) { + cnt=0; + uum=task->code_heap->heap_hash[i]; + while (uum) { + cnt+=uum->size; + uum=uum->next; + } + if (task->data_heap!=task->code_heap) { + uum=task->data_heap->heap_hash[i]; + while (uum) { + cnt+=uum->size; + uum=uum->next; + } + } + if (cnt) + "%03X:%08X\n",i<<3,cnt; + } + '\n'; + + uum=task->code_heap->malloc_free_lst; + while (uum) { + "%X, ",uum->size; + uum=uum->next; + } + if (task->data_heap!=task->code_heap) { + uum=task->data_heap->malloc_free_lst; + while (uum) { + "%X, ",uum->size; + uum=uum->next; + } + } + + if (task->data_heap!=task->code_heap) + LBtr(&task->data_heap->locked_flags,HClf_LOCKED); + LBtr(&task->code_heap->locked_flags,HClf_LOCKED); + POPFD + + '\n'; +} + +#help_index "Memory/HeapCtrl;Debugging/Heap;Memory/Debugging" +public Bool IsInHeapCtrl(U8 *a,CHeapCtrl *hc,Bool lock=TRUE) +{//Check addr if in HeapCtrl. + CMemBlk *m; + PUSHFD + CLI + if (lock) + while (LBts(&hc->locked_flags,HClf_LOCKED)) + PAUSE + m=hc->next_mem_blk; + while (m!=&hc->next_mem_blk) { + if (a>=m && apags<locked_flags,HClf_LOCKED); + POPFD + return TRUE; + } + m=m->next; + } + if (lock) + LBtr(&hc->locked_flags,HClf_LOCKED); + POPFD + return FALSE; +} + +public Bool HeapCtrlWalk(CHeapCtrl *hc) +{//Check integrity of HeapCtrl. + I64 i; + CMemUnused *uum; + + PUSHFD + CLI + while (LBts(&hc->locked_flags,HClf_LOCKED)) + PAUSE + + for (i=0;i>3;i++) { + uum=hc->heap_hash[i]; + while (uum) { + if (!IsInHeapCtrl(uum,hc,FALSE)) + goto hc_false; + uum=uum->next; + } + } + uum=hc->malloc_free_lst; + while (uum) { + if (!IsInHeapCtrl(uum,hc,FALSE)) + goto hc_false; + uum=uum->next; + } + + #if _CFG_HEAP_DBG + CMemUsed *um,*um1; + um1=(&hc->next_um)(U8 *)-offset(CMemUsed.next); + um=um1->next; + while (um!=um1) { + if (!IsInHeapCtrl(um,hc,FALSE)) + goto hc_false; + um=um->next; + } +#endif + + LBtr(&hc->locked_flags,HClf_LOCKED); + POPFD + return TRUE; + + hc_false: + LBtr(&hc->locked_flags,HClf_LOCKED); + POPFD + return FALSE; +} + +#help_index "Memory/Task;Debugging/Heap;Memory/Debugging" +public Bool IsInHeap(U8 *a,CTask *task=NULL,Bool lock=TRUE) +{//Check addr if in task's heaps. + if (!task) task=Fs; + if (TaskValidate(task) && (IsInHeapCtrl(a,task->code_heap,lock)|| + task->data_heap!=task->code_heap && + IsInHeapCtrl(a,task->data_heap,lock))) + return TRUE; + else + return FALSE; +} + +public Bool HeapWalk(CTask *task=NULL) +{//Check integrity of task's heaps. + if (!task) task=Fs; + if (!TaskValidate(task) || !HeapCtrlWalk(task->code_heap) || + task->data_heap!=task->code_heap && !HeapCtrlWalk(task->data_heap)) + return FALSE; + else + return TRUE; +} diff --git a/TempleOSCD/Adam/AMouse.HC b/TempleOSCD/Adam/AMouse.HC new file mode 100644 index 0000000000000000000000000000000000000000..28b8a70b329301bfd48af3cdf540243ee6e937c3 GIT binary patch literal 947 zcmY$+NX;pT&&*3ntx!;MFG?)P$V@KQ_suL$w)V|0El$-BC@E6n;!+6?&{486v{TY? z^0YNn;o?d!(o4-PD5;DuE-1<@Nwrn+bV62O4bx%-(PE?m6EKDd7^`q`6_h6BWF{+w z8Ys9FC6>DvB_{b6YdE_&D`=%8>v)=(C{%#SN*$;C{2Ybkoc!X{6iu#bef^M(%wmPi zVueJ7f*k#V-TZ@m9YZ|*{c1o$!I8ect|38@n$}Pa$@w|?MYciy0r9SZ zp&-G`GzATqdlVED6oSElV62gntW%*=sbio62@bgD!6v2V6sL0GQ4J3nO>3@NPynYD z#HSP`mdB?TB__q^7Tc;Jg2|eTftdjUE-^4LFflMNi2wTk|365Ghk=0sg#Uv80|STz zi$fUvU;&Uih-!X@{|pe;|Njj9{0#gI3?Lx}kVX&_ECSQd0OEm60PAOfsE6@EJdilZ z0x%6C`1$!^@*w*e(D)!LK?*=hLGoaWKpYST`3gkCefS&dLr#PbLGlbRT_7KTJOJY} zz&!v~2IKKVc?9_|bKo?xb0HxF@ekBMkn_O)Mdico1Ia_BAQU5nVo-y|AtMVj$kTjK YVGzajfilename.name)) + DocWrite(sys_registry_doc); + res=FALSE; + } else + res=TRUE; + if (unlock_doc) + DocUnlock(sys_registry_doc); + return res; +} + +public I64 RegExe(U8 *path) +{//Execute doc tree branch in registry. + RegCache; + return DocTreeBranchExe(sys_registry_doc,path); +} + +public Bool RegWrite(U8 *path,U8 *fmt,...) +{//Rewrite doc tree branch in registry. + Bool res,unlock_doc; + CDocEntry *tree_branch,*start_indent,*end_indent; + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + RegCache; + unlock_doc=DocLock(sys_registry_doc); + if (res=DocTreeFind(sys_registry_doc,path, + &tree_branch,&start_indent,&end_indent)) + DocCut(sys_registry_doc,tree_branch,end_indent); + DocTreeMake(sys_registry_doc,path); + DocPrint(sys_registry_doc,"%s",buf); + if (DrvIsWritable(*sys_registry_doc->filename.name)) + DocWrite(sys_registry_doc); + if (unlock_doc) + DocUnlock(sys_registry_doc); + Free(buf); + return res; +} + +public I64 RegCnt(U8 *path) +{//Tree branch cnt in registry. + I64 res=0; + CDocEntry *tree_branch,*start_indent,*end_indent; + Bool unlock_doc=DocLock(sys_registry_doc); + if (DocTreeFind(sys_registry_doc,path, + &tree_branch,&start_indent,&end_indent)) { + end_indent=end_indent->next; + while (start_indent!=end_indent) { + res++; + start_indent=start_indent->next; + } + } + if (unlock_doc) + DocUnlock(sys_registry_doc); + return res; +} + +public Bool RegAppend(U8 *path,U8 *fmt,...) +{//Rewrite doc tree branch in registry. + Bool res,unlock_doc; + CDocEntry *tree_branch,*start_indent,*end_indent; + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + RegCache; + unlock_doc=DocLock(sys_registry_doc); + if (res=DocTreeFind(sys_registry_doc,path, + &tree_branch,&start_indent,&end_indent)) { + sys_registry_doc->cur_entry=end_indent; + sys_registry_doc->cur_col=sys_registry_doc->cur_entry->min_col; + } else + DocTreeMake(sys_registry_doc,path); + DocPrint(sys_registry_doc,"%s",buf); + if (DrvIsWritable(*sys_registry_doc->filename.name)) + DocWrite(sys_registry_doc); + if (unlock_doc) + DocUnlock(sys_registry_doc); + Free(buf); + return res; +} + +public Bool OneTimePopUp(U8 *_flags,I64 flag_num,U8 *msg) +{//See $LK,"::/Apps/X-Caliber/X-Caliber.HC"$. + Bool res=FALSE; + CDoc *doc=DocNew; + CDocEntry *doc_e; + if (!Bt(_flags,flag_num)) { + if (msg) DocPrint(doc,"%s",msg); + doc_e=DocPrint(doc,"\n$$CB,\"Do not show this msg again.\",LE=1$$"); + DocPrint(doc,"$$CM+CX,0,4$$$$BT,\"OKAY\",LE=1$$\n"); + if (PopUpMenu(doc)==1 && doc_e->de_flags&DOCEF_CHECKED_COLLAPSED) { + LBts(_flags,flag_num); + res=TRUE; + } + DocDel(doc); + } + return res; +} + +U0 RegOneTimePopUp(I64 flag_num,U8 *msg) +{//You're not supposed to make system pop-up flags, only me. + if (OneTimePopUp(sys_msg_flags,flag_num,msg)) + RegWrite("Adam/SysMsgFlags","sys_msg_flags[0]=0x%X;\n", + sys_msg_flags[0]); +} + +U0 RegInit() +{ + U8 buf[STR_LEN]; + Bool version_present; + RegDft("Adam/SysMsgFlags","sys_msg_flags[0]=0;\n",TRUE); + StrPrint(buf,"registry_version=%4.3f;\n",sys_os_version); + version_present=RegDft("Adam/SysRegVer",buf,TRUE); + RegExe("Adam"); + if (registry_version!=sys_os_version) { + RegWrite("Adam/SysRegVer",buf); + RegExe("Adam"); + } +} + +#help_index "Boot/Once;Registry/Once" +#help_file "::/Doc/Once" + +public U0 AOnceFlush() +{//Flush AOnce() buf. + RegWrite("Once/Adam",""); +} + +public U0 OnceFlush() +{//Flush Once() buf. + RegWrite("Once/User",""); +} + +public U0 AOnce(U8 *fmt,...) +{//Add Adam code to $LK,"~/Registry.HC"$, executed next boot. + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + if (!Bt(&sys_run_level,RLf_ONCE_ADAM)) + AOnceFlush; + RegAppend("Once/Adam","%s\n",buf); + Free(buf); +} + +public U0 Once(U8 *fmt,...) +{//Add User code to $LK,"~/Registry.HC"$, executed next boot. + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + if (!Bt(&sys_run_level,RLf_ONCE_USER)) + OnceFlush; + RegAppend("Once/User","%s\n",buf); + Free(buf); +} + +public U0 AOnceDrv(U8 drv_let=0,U8 *fmt,...) +{//Add Adam code to drv $LK,"~/Registry.HC"$, executed next boot. + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + I64 old_drv_let=*sys_registry_doc->filename.name; + if (drv_let) + *sys_registry_doc->filename.name=drv_let; + if (!Bt(&sys_run_level,RLf_ONCE_ADAM)) + AOnceFlush; + RegAppend("Once/Adam","%s\n",buf); + Free(buf); + *sys_registry_doc->filename.name=old_drv_let; +} + +public U0 OnceDrv(U8 drv_let=0,U8 *fmt,...) +{//Add User code to drv $LK,"~/Registry.HC"$, executed next boot. + U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); + I64 old_drv_let=*sys_registry_doc->filename.name; + if (drv_let) + *sys_registry_doc->filename.name=drv_let; + if (!Bt(&sys_run_level,RLf_ONCE_USER)) + OnceFlush; + RegAppend("Once/User","%s\n",buf); + Free(buf); + *sys_registry_doc->filename.name=old_drv_let; +} + +public U0 OnceExe() +{//Execute Once code. Call goes in $LK,"~/Once.HC"$. + try { + + RegDft("Once/Adam",""); + if (RegCnt("Once/Adam")>2) { + Adam("RegExe(\"Once/Adam\");"); + AOnceFlush; + } + LBts(&sys_run_level,RLf_ONCE_ADAM); + + RegDft("Once/User",""); + if (RegCnt("Once/User")>2) { + RegExe("Once/User"); + OnceFlush; + } + LBts(&sys_run_level,RLf_ONCE_USER); + + } catch { + AOnceFlush; + LBts(&sys_run_level,RLf_ONCE_ADAM); + OnceFlush; + LBts(&sys_run_level,RLf_ONCE_USER); + } +} diff --git a/TempleOSCD/Adam/AutoComplete/ACDefs.DATA b/TempleOSCD/Adam/AutoComplete/ACDefs.DATA new file mode 100644 index 0000000000000000000000000000000000000000..b33e19dc6abcc169290770fcbea208f990723569 GIT binary patch literal 26124337 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�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%0DkP<*g0>D76@mNc;J8Xp z%uNLi(t*z-$p`H(P6aoyD;1I10F6QZUX2;3UDP0noxDl1kL9`$}n)P4@!-owPC5?)7L;(BwL39e!dm zB&8yxRkNUJIe$>I1#~|FXg~+FSOc`;#Ze)* zvKU-`ftRp?JeUmX+CUD@0!3X;D(E`#Vg+da0nI8y^K%-g8Ih`|5Dpq!2OZFrr;wOi znv+@rI{6UPVS`_r1m52c?t7#`hieraOF-ElbUGn8-GPfn*mn5jj7(642g*`epv8Wm zJ8Dz&@=Kt%D}s7y;EpLM+ChiegIgq7iACw4b3_>(lZp~SM^b}UL4(c^2eTm)l%O^x z=ukJ%%y423qyz`;8%r*IfX~f= z_y!~g&AOn&bf5~LBA~hG=z#p<;!M!N0iZTYPEIL!k{8<80G(S3-7Erf1LVdO1)s#K z#3INvJ9to}qAXKS!MC)iD6vvO!!NZQv~F2X!6h@fL{C8zlsgqbvuKc+C&-P1Wr^vD zN#KifLF;=!bCsz@Ih6`U`H7$j9M~`!X!$cZ^`@mlj_p*)Da}hv2H!Lb&TYk@P9^AI zP4GpS;Nhp7++y(fE?A2~ab|KhsNJl`#pRx#lLGE+ftrcnkjsRO)Ps@&N;*+cQvfZV zfsDq3WI_EcP%o%F5wtBQr6{o+v|=7~fIjH3R8S9WUs6$ON_ryr)coQMxH8bfI9zvV zgN|5FEz$+es$#oEyC^k11;sp2pp--MjT6XGpl}6s@j;G)c6&jidtfGL%N!^p6_+Fy zl_-=JfQCzp^TGY<;tWt}10Fa82SQ$QMkaU>rB+f=VxCfRMkY!!gs++eB|5O$63Ed4 z;3XrOi6x-Y8mu(|tW~K5QCdS*gF*Kk8}Qvr(ROi(|%40K!@L=wC{FFi32G|UPb^C-xKoVN?jd{Bpj zDPXSLSf{uLv1yFisP7b73UX)l2>f0x2ff%rK0-w(Xm3g3sh#u%D z3{VOO722t=3p_x92HE}^RGO5Onxasgo1b5j0d*B9qe07FB`_OaxPz)WP)%5jSj+(` z%`l7w_iR9|U+7X8kRDKbMF(71!cICbDosiP1sbG81swr{bSgEdU6uw~BmtgY26YEP z869L0$Vs4zGdVvquNd0#0oes@eJ7_XfD8uBw}Or@0d+kQ$MJyA$AX@8om!EcUz7=M z`a@bd3OV_ZL)sB0AsTL=vH)Z&0XqYnymn9`!MJz=qND25O_WY+*HUb%}p&z%mGbN=jMZs+Xjs+D;S%Z zg0Bk(HG#nWE>O)5Du~lS*Fu4gjRY-303EXnnm$P^2A^Y41d2S6&BkV?(5`ebNC-4` zUkpC90#tCJH`l<%gU>Aj9dM8f4!hL6^rA%2&}Dv}LV9X$u|i^QKBzhb^@;Pq%e6p5 z(m9}V4Yc+$SE0BBG{RewQCbWd=m+bCrUJ+&m7>H-SpF^3V~7S#uH_Vi&-cnjERq0i zJx>K~GX^E3OmK&+D6tZfi6IN4!G$ll?F71(08*xaSTM6eZC#`T6SNf|R~o!z?>9?49IDw<%v1j3W*RcdP?9) zPGZz3_J40O2)Xyh8wHUpoe0Ch4bEkuL* zPnjhdv0z)F;}W1XilByGnnE!sazPy+@aTpkWI_r&qykze06N4vw=}0D5qyy-XjOnC zBrrgR6{Uh*oRkWxi$Oj2ys~^q7eJ58tu!YGeq~irYC3etwkS1SDIKKoO$D{G zKsO~rQV?jFdtNfQ9!Mxk)dHQgo(vzPg=m77*`WJ7N-`6{%bGw7pNrrEkh(hvY7{6J zAl;|}vj%;3@N5TaRlCd0X|tDI?oR}2qs?vbYuni^5}x1{4~%O1W*piOM%WG zCZ*t*svQj0)kE@juTYw^5VyhFu;4%h@4iDiw*YK&3TP8sZe|{M zm$$V7XhBRW=yoB{T`i!=7tk0acrFJNUf@I|D^UP9u|XqJ5Kn_#1U43$22d90fNNr;^?(p9pe6f73dyA<&^!xTM3R>b+E@xY zHKPPlVS~&C&1QjS*|NbGNT-4)j1@rBVUS}kK=o-j=!`;$v0xqGqivq9bL;L1Gklqw{OL5AsoCT>B;w`PL2__#s> z6m))WaS13x=_mwO=H(ZF@5lzVj6s(&K@t;)g;o$kJLsTRc%F^|w2aFK4Z0OUQkD~B zx(%{37c%V&76F$epz*zY@S=iZg`CX7QqW#m(0&($iju?v=tvUOax5)7kPNJ42eA&c z^b9nT0xBe+Q&XT`0H_HLDh)uL%lsmR%FNUpP)`kNHMkWHzOywOTHS(HSR@t{fEH|f z-0m(ml=zA%_twJW~fIfKU3tq&5cBW;frGXpVkag|_iJ)Ug zK&`d3e9#>siJ;K~NIjIF2puBHPlPXK#2N^oGXuc6*Acpt6*O^>k_wva1D}}ueF98xDD!drsY?F$A^j) zKx>bn=S_13fF^lCNex^|!+P(CCTem%=%jQ|;}^231k^|btuX>`=?2Zbf@d8dOBWJB z2SGs!2k^Kfq@A4)I`P|60lZ)dRH2mUDR_YoSzKZOb)77L5>G60t1yKU|&L)qrqYpa!eI;85g8}g*3ZCt1dux6lZ|O z&q0egA+n&%1-e@X)OpEI1e*rhGgJa$$2I2F*5 z6QDD-i}JP7(N4Ny!g8h!NJ|MQ_kfELPzndNsFlFFkw<=@&34eyJD_Fxpmr3vEeSo1 z2b3*9$Fvk@fXss14>tivn+#+ON^=a{#sa$uZVRZ+0eLbVsk4v|;(%HriN)DE3Pq`f zrJ10ybkY4;$ITS3(aVo7fz=$2i6iU2O{z{ji< zXMogzVm1+~2y_AmI8}f)Efs;{9n=PZuEK|wh(+K7ioo5$M9A7&kOM)cKx9Dvz;hrC zNFmsEP!|BC7Jg0?Xu%VMPihJ1xD3!1E5uIOR0Yr|a!6`1csV{K|A3;fSfLzLHn9$yY!*m)k{f`9ENsyEmH{OygyI^OGyRYLI7C^1WEp&u?bM2 z21>k;YzJC&kds)BFdTY@E!cMnCHb(^`SZY&tEr%~$`l}uD+Z--cQfy^j^H>;hB z@I^-lZ@bnpYK|^w8L1r@O0I8(Jyln6e|5T7r z3HU_W;*!)<(4+!rz%U8q1IWTKSW_8R4d>;TWF~{13|haF2zknv#;5XAQcjuA~yQ5hyveC^a`f545TR+UJ2@98nBb3F^J&K^8QEt}M*Y1$SYJ zOCcw9faYrQz?CxCsQf(0MRSlFVGE&`6YqQ+|n_CIeG2*ae`)&5-*nLCa#m?YGP{Py-wkF^GH*Q4Dehs5_Ai zzL+Z`u^8k@@a7$B1yG+CB#-1{YlWiH^mI@|GAXAtuLRV=DNcs@!Wxt&vq5JKf=-zQ z1wJhKfQB<5^$aNL!M6!OhIUE|N+1!W$DjmWTLntsWr@Y$g0-}uL{Ev!H#4UMbjAi3 zsFs8!N=W4fnwTv~O$7Cc(m)wFu^2pB4^PI>q6ef2d%;r*8vTKnJCMYRT=0P9LHA37 z4B|(dm6+q4Vyp+Ur zP%jNK$eEg#0-C8TN~{DWI;gkuKqoA~;~LBZ%?*G(1}dl_O?%{SF(|%4t1H1--Wrm> zQ^B{Kz)}{-6!31i)B+F_>K{mA1qq-fNN~Oc_j}7yGe9Tz!5i=3%mmT_iVtv}0ws}L z(2O4BxanfhhzclCDM489Q7NWIxVQl; zhNUJj2dza_4BtMU4mr;fG-L=`E>#TLT#hW6pOyw{WPt{aAZ4a=DtMqDF^>gWLjtfd7xf2Xh{jEsh^lvsZf#$+DixWem-b3At*pV2?%me1Bg|W zT3ng~-qxE48X8Q>Oi=*sDg|vW0Ns6_m<09>NMA8%eJm)=fs?w9LTMgo^J88LbdM3Z z?6I7gm*UOfG4kO4*2JM9btsE`}&E`PQH&jT@D9X!aH2{}kb2`tP2&JCb!4Q4<_gdsW- z5$Zv6?O<;eD-|QA*%_jJ^mG)`Qgflh=3oQS^901lpoV)gc(4!=#F=@ZW)JAbV(?|T z(3KjX^a{I51C%1+>oh^_D@di8r~uyf03A(oteCaZH7BNu)GVKR4 zB`vceHASHal%qgXMu|BJ$@x>j=@fLDSp}#pR|wBY%~Jqd2O7!+twSjXE#U?YyMy%Q zr7J)Vwgk=fK^pS83eXF_L5@zW$b@vGp`i!4Gci9+Ap+V9%}7-MHx0m<2&Nixf@TRQ zkARBjG=)gW5+6{W%q%VjAMgS)9qeP!VpI?(C9}8$G|>f18Hh(mYjSc@!PgvvjD%^7)PsZrG>kz-OfhK41Y|Wz*klx?rh)@RAtMoV z4YLAh(knMNA2j9;3o`J9a-dmLXpn%9DN2GYt$_OhdM0NIXx%I5!e+3OpvSI2gBeul zLNBX>gaasYKo_gzB<6wF!-9MO4cqd3u&eYGAbF)2G`E`vItc)D9a#xz>@gA494*OD zhn$WCY8*mi5s@T{!GnkX5uh?PAQI$vkPX=5Bmk7YK+?&jMW9sZ9|_hK0Ul6-MK2^$ zK|8;SilK=Kln#p({3F0csehyb51{)AGC^ZHh_nR>8Glgf z$^><&!3z{2>rlZN6Hz>77UL{7iV?@@flDXY2qUPv2lvY$2UI}sx=)7gG|vaE!+>;5 zL6dc;qveonp9X16YXoJag4?o=3XsK*Ab&z`_*6*EEy&5Q1l2U4jF<>oUz3=fS_Dg9 zNvY|jkY!GZl?vd!Sb3mJsqzazE961#tDH(J1<)M4j)Ia0c$GQicGdhe&{4~v(IABk z(A_EE@J>$5O936T2+9f|1*ORu(A!i&S1N#3eE(2EpUDcSE52`s+^^`yz zUr?JE)UyK>iTR}Owgxwq!Dc`U|BTEO(9C-hysZG5oB?%O@)ba*`-7HICFg^#K1jJ+ zlnUAbno|kNn4qZuJxx&2S^%myK*t=rfUe1dG|=)DK*mBQ`awkixPb}UT@2dMmzV<@ zRRYCoZemd`_%>d!gNnhs?#jUlRgWtO(j0`uY`#JYs46T`NCq7hmI^vy4m`{Xnr$md z1+9ZhgUr$ugH8tqO{nLkg04nL%}E0f;eZEzA*;$kr}2Rz94Xth=aSf@^L7fv&0E7G2 z;LV<(<0!y2G${6VodA z$b=68fDHm4j}1$8I8Mg~D}>C76@%>sjU7T*;3^(e*GGdUpW!pGpf$vqiSUXUbjcZX zgwGMNHUd&Sff`Dn?VgZ3G(hnMoymmWB>*b=zysT$w3!IHTB|rCvj80b;N>8Y(HF?V z3(!If&^0rl^GfqTTVG+q3ZTnAA;;+C<(DJv#s_VZ0yir`{?g+D-FXh$RiUR~Xas5q zg41buBDmiQN}rJPmqEkEB^e;6f+7e!{Ot*8)q)0{K*wWaLiT@w`n3qXkk(3OF|3sU4!q=4JuV+`=>u{y zD7}Dgxr4?L^ae-pA?mOw0_%cwKtQYLiy>Dbf-k>QNK69FXM_9zx}z30s{rzWg0=!e zN)LP@Loj#+AT(y3ASbZHv_MW61a+=JT~JV9p~fp@?=>WXN}!!KP~4?fWP%EUbkOm| z$)J8SB$z<874D#y$&*@hvR}~4#6`hX_+^>IzZVT*>o@;UNnNw&H^`e(x9FMnFE=p1NjtgPAX(k7TAfY@FiKu1H%vp z!NUmRXV5f9GH9tIXp02oRx%xhg8X9WuBKAZ03D*11T7H)RkxrpO9dT#lCO}HSq46W zKmods96Cb>U9V9L+Aake(*Z5v22WXluVMk&3YydaodXTJt_X4vEhMuh<|%lBE+~b1 zHx;tX8k_=CK?mxCPIZU*62wOhD(D~(s9gx!eG0h`2A<(S2cxGJ7wCbLSpjIE05mQO z>a>Ak1>ECD1T7?hKxGFsfItZz)K37d5(Zsu4LSr6+^E3x3L;uS>qe5aK+eatZUiJ( z3>vqEHc#MsA>(*TAbIe)LEr^W;K4l5;5^(@AZH~eLCSeZ>5vD#y%eMqRGEX47sLr* z9@Y>;9Fhvsg<4BNa{{#B1DOWO3MF7Z_>8ao4-4Dl|Qhw4r&XBmO)0y_d!$brqN)CH|Sftmy1Bp|hP9P<<$b)9sb;j2^% ziZXLyft8sDTI&bSMoPt*c}fr-+z}ei8L8lr0Y}iuZAqD+!*3zOVTnn_AibbrpyW)* z={E|A;5*AfQBwduZ~(OJIWYya=LHhIAPwL`8pMFxS(1?eaXVNvfdO=10XS?yL)ws% z7%T&C9D#V5rJ#`+NGluK3k6sFP&tqrKsSr#=Ye*F<(7kQ@C6rupypH&Xen_q_(Gvl z&><9{6(FglphGNSC#IF>7lAc_J1U?R2`S*botTrHpOK$~@C{`5M3NRH=umf0Fkw5{ z7-ldym4F?an1^f}=zMJ?4izj)O^1(ZBLycY?Sahzou>_oK}0Adl)&~Qf|^lG zo}j(*U^Acz1?F;S;Rj7hAafKzcg!Mr2(&i~9v;ciR1Mm*0ZW+ZJEhQK9h4A26%c4& zerAe7K6tMX=txOWIAlUrTtX5uO2{LHJ3I@3dTL3a?YE$EHZw0dvjB3_CCoDl8jeLJ zskxcOnV>s6AcmIaY9e{27<^X>D4%J8R#HK4>;QEJz%?FdJs|jkY*5n{S}*5=j%I?K zVFil()C$muI;fQZItm9;hJ)e&$&ymACGfa_-3tP;1u|9$@;PKT4s=cn&2SPhzTLHmYN;q7uz=~P^jng`k>09uF*G634q z2Myb$=qMy7mKK9M%%JWSc%~H8n*>WLB!b(`pgt6+XITK6y(t6bxHJ$~0W^mVJx?8M zEWDcuavP{u1Wl!&W(cUXNrd#16La!GYw1C`CO@YXmQVAwz-&l?3!efm2B|P6o}mfgD%@ zx_dc4HxsmJz6ex_ds=&z*%Z) zZm|v*=#IZk@ck{I_9n>LU^gJ2i3RS(hGnLLPMAxCCm4m?{FKZz&`F~TnR#iTTfdVb zt203jeb77$xKmyP%GKcE7U*y^{N}R6ySk~M!39vX=oXizfwq}}HsV812?HPd zmRYO-UUCh(vl%pQ3>{hq6+rM1gl?t^$w)hib99jL1&tSrit@XK&ymPQb8+dK^;oaBpygR+%|B60ErZ2 zq~?L{o=F4+B}gE*6qKw$_k)9VgSt~``9+|l3AQIAHM2+ov{DMxsRo}Pg|VovBqJYm z1}3xsNlwiKZO%%n1dXtR4}HqX2kl$}M=E6DE2u=t%g@t=_!e|t2`rAl2SaD(f%?e> zp#3S3tz88fnK}8z`30a|b;ygsK+ysoKLk~okcb6e@16%5F-0s%OH{}O74SLv>7e$e zLKNur%nB@Wh-< zQ0WFu6_8V~LH+uioYdqJ$m&Js(&9wWNmI#*plO(tRM1I$pd(F6K?}HYDnW}^K<~< z;Oi*Bhj@A_B<8|>t)N~4zHtgX(&C(xUjjNz1h#w|eDs_nbg38koF!{emQT$s0PReG zET<_*O-ac~1zjAK4_d7ZY96F0lz^5tK(<*xuYduqU)JFQEet|f4O)_#mYE0MhmuqT zx*Qjj5{3h;FyIjLYiSQ@mtI5Rl|R2spj z=AcU)^NW)~DG8K=LG3QEcCc$eGhg5-Gk6&X+L8wvSW#fma0J~{ou{YC08&~E+83J! z9uCL{9s2`LhN;P*v{#gwtN_ynnSg_v2AP6n&awW%^78a3JK8e z7f>L80v5C@2zpEfxD5hcK>@AnP~8g3<;9>FbIeKC(`10vF`$`2@M$05auza}o01P+ zpb6dU3id{69#|3Rcs!wuZfzFjs09_9O?k9j6 zPkG?U?`-f9Ea0XY$VOPsR;WrX%0~?nkO;a1lTsDZGxI<@T)+VWRsx=MgqD!0P**~F z29Wj-lBd8sdNYebQJe`m=ND9;=^B|EtEHr-g9?qjlFW3_ZgWtO_aZAi7 zO3lki%>zi&!2&A-#TmRd2gfH;^_iFh8uEs$RfFDXQUERE zLCekH-3aiY5qRnXY8zMp)Y}91DZv2?Ij~{h<^3YccLI!$3MuY2V zNUsjU1uZ=Qty(Sy^>H9mvfyk}mI^6#!8seeH6J`41YY(CQVZKYR-9S_9_35}MJYJv zrI%)cF6=GN%mW8|L26!N4rtIfEx!nSq!x5;9kh5a4SeMUq%Wf3oC&&!(kHQ86Lg7! zLSk}ZX=X_Y=mKBRRV}G`CE)r3l=&30N>kE7yW^8{5p^7tkHSVDCWc%z&bN(A|QdtFe+ZN{c}2XF)j+bfZHu zs4hrPECMZEO9Tyh=N5qLUQn1Mf?5$e;F26P`Irl;dO?*M%wo{OI4&-5*FnQIIT?ID z2Xf3px+htd5-XwSVkx+S_MsMmTGz0Q3mV0TXWN7l5En8CfH?I(6*M#fn#4yMrUvB* z(C$%CR~3Aq0;r%)$xkjR%0w)~0q2fV(8_vH>>?^5kXp0}0I+!=ad@$-fZWzeNd=d{ z#kr979&}L{D72ts4aH{AjfbJB`Z!An{}G*$&_TtGRX(d6LNBJe6T(0DA!Ch$dpUz!7MfKzb%+`@DWI{`3@G&*u0Ta-CAgmGw z*GWa70eH~rT!s8J&@Os~g3`Rq;tWvjsK?-un3I{7SOG4ipyq>*rUWfg%K~ki19!O7 zKxeF`g1W-UtB*j17ifeS6n~Jq2V6lw+6|yxkBLPopcCo9#Y1jpiGoHVD1bD<>ux|t zD1saW3TM!L7x_gB;84?J@Pr%y4?2%g!4sCEK^N#1fjZk+rA3u`T<)1kNs#Rs;4#OL ze1)`3kf$KwlnfeC1l7rqBDy@kC|d!%PESW6Bfngs7<3OS%(KYjm!MrOAP*I#g3}%- zCQ~a4auPH15F1!R@1GW@0?ha|cfy)5!7(XcAgN*@?phFAtGT4kI$TiUUWw1hQ+rgmzg%yjSllVX` z1l1y7Hkt#$`7bXK)rrNRQE2e~rDD+eub=|VC9^m=zX)^`BY5N)+Dkzlqy=T8e2^v3 z;K>86nt)dHU^bfF#rb)q@L38FTLG(epldRVpnIY~P50#dy!0Z_`Pa=}RzH01&g(3H$#&=^r-5x7K21Fe%ThL`~=nW4sjCb*!? z%)I2B(v(z40tatgR!9b4UINZAMM>ZWZFy>9PDuv15J*cb&H(L^J0v~Kv1Uh~yF&(@u5q1+Lc)?Vq0_g5I&}|3MN*r_{8>k6iTv7^|T?Uz2 zP+C+BzL+fybc$OJ=(spoMg=cFDlGtoR&stuD(F&B9fjnK)LhVjC%AYA4VvfX=cIy0 zh>AeFf5Ba;M9|{S)I9Jmk>vcu9B7~wE2Jla?gLQ>&IfJoC;^>Ho1Reu8N*8jjb|2R zCWFuR0&M_?ULXf5B|z@TQz$I}xgF$W_(5)<78q#ndy_A`j%S z)D#6L&^GG4yv#(<3Y8MjMlJBHP;qHqHpuqk{In8K_ZGZZH@_5oq)d8dvO*E~8lRBN zqIT2h%K@+_~X#tmSC3M_BIk70U*dFOp9_UmQ z_@c{F@Y(X}#R{OMvqfC4;G70d@-U;odz>M|!~uE=!I>#}khV9tSyPmh2&wtuWko`w zR#GO`i-h58im;9#fJ_42sR}nX2i9OJN`kf7K;=JTFFhusjJl^c8GZUNWp%Ta=`fnx~Zv zYt@4598hX60Id!N#W2DZdEmYX)Dd~Go(RaF(3W0N5|(-nT#ACK4^TZ<1Uih-S^?_I zOwf)da5@ItrpKTWkeHcQqNmA_2tFV)541@PwBj4IVgb~RQ7Fhv23;Nt%J`7ug+cR* zpqUiNC?B{O0H0^2ker_b-ZTdv2LL5M&;&fRHw!9$AelW8bj5g14yf%_2^w<~P^FTuepdd`l$<|Q-okRfHP6jIWOOrrr0FqM`QuP$l z^>h?6K|8=xHDR_VgD%hl?c{+B@q;3~L;-Si9(XA`sItfhoex!ENGU7EpyKY z#Wt2U7C5DWCpEy0a`3i^{31}aLk-BxONSRTN+1q+DG;>02M^6b>r6-{09A^RrXDzp zC_pPhJqE;rxqMKU7%_-gq?MG3Hj2mu&SK!uf#q80PWxg|putwfA?H}6z4oBJhM=4e zz9<#q3$RfzZxo=}2Hj5xG8u7HD>!K*&T0j5;T<>7HZ0J|0-yy%`Jjb7pqdGipg|2E z&=_JVcm+2o2`55x6*!=gHu!=}1kEYtf!0K)pth$FlT%<*!LA3{0of}JHWieRi*gF` z^K(F>bkI}`SD2^(K6(|jk{)zn0cfocXs;$X85cpvOTa6y6x0;p6G2Rlc?#gR6Vwx+ zX-tTTNtFtS_DFsaytM*to8WS84rtv0XgPCYiH-tNQv{M%89==tU4q{OyK4pbomWr+6}r+6qM#c z2@VoippisS&mFP{3#1v5hGB=_f|9WksA7VyF#?SwDL@ZLD9A5QEdtG37bJq(ZQyi+ zw2c?q>;pLn99hsM#^BUjmI|uqkkfe?5w~iB90PI-WKsZBD3zr`rUj54o>>B}X%j%I zK_`PKWonfWs%#5O6H7p|oX|!Eh^thp1)4yI`Wv$L3)JuiwMLQF5rYn305|4SQj-&N zp)H8Q(o}_veDJ7Pu@Z~}?uRkyDL{76f~rx_@*L121JDVO;4yws82~!S4-zmS7E<2| zbV@k-W&-SeE67o0#U-hgd7$$cLF*Ax!7T8pWuRqhnML68vm`YS#DYwPKslfRHAw5C zBr`7+bRG~ye+lRaHSjhl1vSvkWSM&4Q6=zctDrFzP^5qjRnS%_0nJW=OA62$cF53D zNNOHvqz%+A3CULgi6e(1c(EEd9MeF(K+yRQpn;~eqQuNRg|d9m!4!!_nV^f8K=}i) zRvtPs0$%x0nv)J1OahfZpo#|67sv$NR0wLv6cnVEWR|2BgGWa|VGq`*#{inA2i@ad z4oa<{00%XEKnoVj@-b! zf_Wkx_~=!zU#vlAktBgHHUzl>6bztg$Gl3Uz_3;T%?W`IQZGu)$;>MRt(5`~>S`5( zELVb!3WAbj253GEa&;NZK+v8T$Uaw4`44Jdfc8+OLO1t-Iw_##V&HBG^b`(Qx`Wlh zU|Vo)H3LZ&TPuK8`0IdN4L%PCltw^D{epuPT4mD8Aktw(UGTjDVUX)q_I!p;1(QrExK}ScWf)=ZS+?)ow4HRT5czr}V zXip;ez#B+w8a$W@3d+np$f7fZ;h+?q3A$bvC5?kdH9+YaRLH{8J7|m#(xe2}IG{6h zQ_EoeYS4Lw;0wJvSNV9<(0(3Yf(RE4t4qLNbh zautM1g>rC5*`=s51vKW$1)c|h1_8(vXyFS>kXm3dP~QXR{5Djx4lGPSLzbYn6>983 zGX(Y&0A45oy~hZ2Oc*Eyg4zuVkoy{8eg&lq&>2S=pq)Ocpfj34XkuZLEUw zQyy~T5!3*6gOtOdbPgJG1sxX!Djz`YLvSk}l&>L8V{qvVO2FV!8QJtw@X~3x@ujd8 z)Sza8GujQt;1U($VCZT}@M>Skaq%!ii@@h%CxJ`^F(H{BT+4u}Nw5*1OHSd{P*HIy zXs!yrYq|s?3mPCP&n!rVY5%R%o^0}Zp67NtX5E?~Q0UGkFDBBgZjpfR`(1_dy*)&#i-bz~Qu_KMO$7d6B( zFd@xKftJqYfo4*`i+n)F!HRjf>EPi3q)sV#K0h-L;u+Ajd7xup;o2d2r#L^c0MxIB z<)I>o$>35Rw1yOx!i$RGTi75$4ysUKjs;i7PzQq91)z`shZQ{XK!Zwf!_dzcfVC=$ zK&lXF4-`D0SaF0TymD|{K)eI;3dBZm^dy4%Wa;2xdQexjB(WHD4w*t?QVw_;4csG# zxE5ps^ehF?;_LjPT+o`n;LIY0a6N_KD|)*RRv&^Z7jTsiIsY-Ss1h{5TauXuZi;|gg`k5AGIK#| zsEfd>d`m&=If_8H(G`Qo`t=loLCph@jvP?K6I27EEoK0D8B|V!ZOY6;YKA0%7B?lP zgN}I7)rIc`&neDVV1O*#2E{)pK$BA$z<~v?{va)=MA*)B1=vB+kfW4AQC@ zKx!T+a&;8a5{pYfP6I70hkICu3w*LAXo67zI&J`3NCOJ);{4JabxlsEHHN zT0;pHa9RO*4j~Ut_0S#)s2c@qkU=K>zz(uTv@O6@1d<2P7p8zx7N{u>9X$cBWm50} z?K;q8U;?c;0WTK=ok#;|xr1)}1RZ{qnWx|ex@RdBT(Aa%k`-tG2jo=a6a~<_G0@~N zq_qTg6J&@S?h>Ria@fjiP)H#{KfegHOAk_T}id5ELO-&gPqG&l3!E;DQ3XY z0BiVzgh6XQKxCB?@|ASe^W}NhV~T4zeB^;fNGSk&_EL^{vQSA+-W>DjR6x z6?T9o=x`25+XC)P@NFI7m;s-q4!sk+7;&>_3V25mSbZs|O_h=f+B{R513d>q!w0l; zLX&~X6?%Io=&UVdXM&C)PA!5gB?T>vgq*fnhOq$(lt3XX1ED%V>#!liZ=kvHlFSm& zo)6Hy@Te2#pd1T2A`f1GgA4+Vf+glCq$MVo=0L56Zu$mq=YlP}2A#uSPypWa25KWF zLibw~LBdE0biGJsPO1`8BMg-8K)p1W37`cSdJLdl&Uv5{U{WDhFM$hmkQ8XtG&uvb z9uHK^g33ea=|`}gYtTSX%mq#Sg62O#UA~lJ(C`9i2}@#0Nl|7J$m8JL4sMC)DL5*? zE3k~jV$h6FIc#DToCb6AQ&Nlaz^C+suSCsE&d>p6OVDIuCTQPYN@+5<^QPbfs!Mc0 zCp9X7uJ}n!0qrFK-LMS0EHOV9+`EP^g#Htp5(0&f+s1+q}`T#W*K)zN2 zwc|ninLr%SEHcPrpjih{)D$5OG(LSo0R?tGAoE*qu zPl-9;pe_b2hAu8i1x=5pfwuL5mbm1lgN{mr4!T0z0CGDlEQ|HHyz~@;^%Q(F!Bee} zF<4NC3KYAb?r|dcgac5q2^w+LW6*%F^#g6rNl8tFmmJVc2R=ZpASbm#0g@{b4Hrm~ z&P+)KPp5+d0=$zBe2fz0K6_9;2PJFJ6cA{6W`0g)3aFnCs&^BMKuZV9L5FIAR!4${ zc)`1!k%|e>HZAZ>8z@;q4(5XG2Y@6l@D>TspnZNZERjKD4&1*2`B?$%KJZKsWP>Ak zBME5u4>Z>fzPcXNT7?`)1sd)wN(C*?1!Xyq>mhyy1s5d0g6HtTyUVOWj)JERuuH(@ zAt)ihBPPEnB^7i`CnWwsI=}-uu(_tpymW9ZL-P{o6jbODVafTq$VUqlXXa*t*62fK zo-Sb;&q7j%8RCId_W+!q54hJbvAR^ozl9H^~RtYD_2V4Pg7g4Xnc@0bQ1995KBk_wI`2GB8& zAorx^f~VdU62Vn7YY52yU^SM-OZO@039*|wf{f~8&qb1yV{__3v`t|Xs`k@ zlMNFFjkxm#o#mC za==EUWEN-S=Yh8XfUPblEy~HygxymQ83zX?G==p1d{C_e8ZrkrGLlnsz-3r&eqJiH zE=W`;0hN~wVflFqLHWh0dEl@tEX_;>mCZ=O2?_&HPcSntUAHI|v|j+;{K-fx0u>~B zpcPi&kOqY@Xd@zgj~;qhgA4;#YGwJL-C>}k6N*5qUQ0m*BWUqIs9%9R0j~oJZP3Xx znK>X0pi@VRU~6Qci=JS|(t%0{@cx8M*v?+(uYcoO9 z$@!p03Fw{%(9vYDv*w{~a+m|bL4Z`HLySo*2JeXnT`>&c7 zTBTS)DGhuEwi38arBs}srvy5NGZkz}E@*}v%0&*MVg;oF&^UEoW=SPfV_Ieo=vo&& zB`l34_(B`dv@N9LQVeRgKsJCuMg&3UvZbe%fF=u(#y!DXZy_fb6qlxh<_AG%^yPro zQYwHKjDs5g`9+}O9y(HzmkRDpfMOrn#h|Mjic&#)ZHpB^d-dQ&0Z37P5$FWf#2kdh zdJG!isaZsdgc+DxmYD(?Hv^X=`Q>@3MWCbrDwklp6%iLvfqL?}pj~U3py6xi&0f|D z#jxwApx11G?(YJnW9TRysDMp{o;eCm$tYcBa0MLkPhw#HB3MicOGa? z3Urk$=yn;9Zz1uX3ffr)OAnySf=fVCQ{dDHswqL`4M+*{7$msQiLeo@7S?NonPd%a z66U~?9JCOFjA|62_XEKzP0`K+EG{hqw;MrC2WWi^)(x2`0cN8W*;Y_I<2<(vtQ2ytG-wtBvJ#K!%J)z&1KVjvfT(F_0C>`QSZuC6(x1F;Ln>^tQlL zb)fnfsY1<3g`8OpYOI3>GNEH9;65XG9veK3Sp+^l26WU2yeb3Lg@_&+==@kvk1JmR z+`a^#Iu0&(K?QeSVooLKIyr@q4A4LlxUCOzHYicS%X82+FX%}#! z5*E^W3c>k03ZO$rK%KSJJW!Vx*5Cy9xnbQm*otEv=u|3bPh%!%^$6%V3DEXRXxRgC z38)_fDqT$$T zoB=i$R7Is0fp<267D_54=Olu<$)I&=`8l8k@Swg(ehO&sB6@J;gN}=YoFAN+Tw(=^ zGf>+z6THC{WI!N@R2Uiu~3*JE83-CxD zD7%0T=g$Gni-YF(A-%Ljg$&R|Hzn$z6TTs(6R5a??4ET54X=PUkArT>0|;kOLY$hYaq6HI;x?!hq~f07rsW33%x%%7ni^%Gq|H!$C^G9!mjj zjez!{kbMKWvI|m;DuGsTAUqO{UPGmUrih{I3_$?}UTX-733y5atz<_{v!GCbBvVvd zky{90dy!@;KzH@Pt5fK*e$@6sCio6sc=3#CG`JxEA9jHl4i*CkEhwo$${%o|L2Vv@ zuhWJ52DFe7H1}8pIwK4obr6>;fn%T~0d&idhBAEKBBe}^0et!dBG-b(i$NU>(8-c{ z;G-O%9S!iI?Vu&PIi)3FHrzjuTnA~z!2<$xd=#{LgdO?`N;%;DC!jO|a}kkVg@qaD z^c|3PP!a&K(MG9!6u=jZfljjpjku)hD1eyB;Dv{vQT8IxDG9JU96;$KBwwL4F9~#| z2sGiAra%{PmK2qypsj6yEhhuXAkW@`8l_OfN-~N{LDy6vO&paLBTPiBmO!2}DlG=p z^q>(n@RSrdMoU3m8&DC1WTFnJ{!dN?olBC4G-rgS)Ea!>HFPSn2zJVGNCv3y3!6rA zh8^Y)>Q`rEg0HZGHflgw1?+lI(n~E#Ey_#GQAn)>4c~$Waf`vFc1mV(a%xdtF?h)v z$orsE#vrF{6=O8_gHm(zOF)}y^K(I0NEM}KKn^GYT@wbK&jEQ9e8&Lj)XfagnQGwP z2>9NvVo62Z46rvf3X1ZRG!+sRQc{aD%fRQ5L8he@!0S$n%Myz~VF1`B2!wF0zEe-xDs?S3)n->pkpwh&EKNb#A3*3BdCc{1R6ZCR>)5( z1J%GemEa7KmYE0|D@D3aAvZBEGc6UAbBjt#GC*w~a2p=fJTHN`15_4(w^xI2bO(>! zfxA7RW8J|EUQ(?Upr_YC%6stPjLD#5Qb7L70}UsFnts*_MVTp}Rz3JKM#SRI(xMd5 zmhocHs2F6W8Av1_GSUy5rUVJ46s0ESf(9KjL01-oSFnI5Mw5y`vY;_^NC<$A($s_9 z=B*wA8igpxD1sh(22u*@Du8AOK{xc}fHsapR!Qn{1>_f`>Tz)u=qXroalsFZa?8&L zZBw^a$Si^^O$C*`$bJFc6PXV>#}(|eOwjqGkONjrpy3JI@eHovkrEPUffrp?j?m ztr(Eq$k+Lm7J)AkgcN%qJ)q)^0o=F(6%L5NFUZ zD1dg&LdH13rB_C(LO^0kQ6}g(S#VH+jtvC)0hDtblPZggGxIVN^Aw!HrwoDPxHK;X zw2}#YNqlLZ5`+VeS&*BeK^reLGBgvDN>dU`!As{7lb~936u_kcDlZ>m9CWo2SPp4{ z9f*%;semd+kh2~06hLPKrsd?9gQ^HnxPt=4S^<3SkOK6G($u`L452tw6h)Aq_B4AyiP1lbH-2lP$@I zAA5&%X$$BK5b(+~&`S3dP$)uXN%a^!!N+grB!ZG3%mC0`H{dHJz&9+z0|~4xA2dOe zlmi-#%t$QBPykQ5fe(uXjUqwzizy_f=B1`(f~WjIv4z-=4IYC6-C~rJnwg$~JR0j- zQJRzrUf^U636j+O(qc%^6@aGjD&fHb5rl;@sQd#RGG(ohm+h9ME=EP%A7G zyj=k7jm)&t98mG4kerVi$GW--Y5AaY6F{R3pu41W6p9jyQbEURSAq)>&~gRH1a~5I zH4k|H88j~gikNcn_11}?v+MIqz(ecBphK=wQ&S)VT9EjLp3e$8;TF^`Hq=ot(orzh zQ83W~&4YvD3e|-CGzCK=9nhKGkSpS#rWl%mOaPs+RE&HgF{oAsoxlqk42Gx#&kq@z zfQE8FEnHN?K?6Gw7nq}Y1vKoFSqz?(2US3z1tOrz40QJk-0$%6F%?u4gDQQH^Pz`X zf>uwUSO#{88Gd)@=_nW@CrL-pQDM;32#Ggnq(Q|%DHOCI3zBe4tdVm*Bw2#i1*Sq; zK#=U6YOMfDVI>gbaxy_lJ_p*I0@;Qr#vnJ?!V@ierx;$4ltA|&Si{eg01Y}pT?n!U zG>V>?2buAM9bpNvrU-nPmR3?}5#khea4S6;`2uT@EU07y_r<|#K?NJ6!vL;qK$)x< zRCGYf-D22=f7r@u0fKQ09qhoCz#Qs9a~gIJ(ZxTv zL4%*z4sZBDj}BAN$V>wdw}axV7&K@Faw8~bfzHFzR4C2>ZxAm^EXYg&UwH>|Vtzp> z=vYJ0u)kYTKImu`E-nU0OC}%eip-oGs2g*@^Tc2dXml+z4|IZIK6reuBp)mcIiU#@ z1mHz16$lSO12v-*BRC4cC#Zv08^MDJ;!*I(6li`1d`V3~Vo4@wCJ8$K1>X2qmYD-O zK@YS`zn~}|bV5LKeqs@*2McyiN@g)=+#0mY1k~(Q?vlw(cV18)|bQ~O%dZ33~flh%2 zt-An^_v&$Zr55Qagd|qx>anM~Npp`lb;B*CQ#DG!`Bo9LxMc_ebP^y6DG0@hQvWlaHxDT`0&pn(3lMa} zvcx>lQ88#ba}x8?OF`$tF!+EffRaksC9J8SRtRV#5;%rHnGRemfzuhdt^gf24q9-S znv(-M-2}Q)384s_+CfP#1$3hTs4fHNLde$q#2kgpoE$_zftn%U6UD$g=$Sx^U5h}M zb|O}xf~G!7i%arztwH;!LAQKZD7uTo0lPB znh%+r01v&wRzg6MIcWa26tn>i?BG0wMDV#EpuCZs0h)%%0nciH_HU=AfT#38@dlb2 z01Kg%0G@eepyf57vk5_qRZDZhL)3_@Uz}W8R0KXj5R{@o5n>H$6c*(t6@jj00*wil z7N@3_g62vf*&f7(RQ8}*61UQv9Iz`vX$T&J&?W+S79OMv*9?3qXcbg6bmdK1ViBa{ z1WK#mYy)mVx@UH3gA8YU|yaM zc%TV94hE8i791d#gHxrBLK!?~%PG#+ z0k>{JVGW8S(B0tRdC~yzWLPrDF0eT0f;G@uyOMlFQ3qN#2&vJL%L|YPz{k%g!A{x& zm5s1C0j&&%6!l6u7X08kRrdXOFC@bUs?h>83a^4fL4lt0u!ttQ9%P#KBZ_X zXoE{Gus-m$y&z*iP4&{^4EVTa63FkVdC;aIX!SdoQ&3t2YHNb}e4wp=Mfq8&$tB=M zC}>$C=*~azIfzN%_5EOR@bnVsssPXllwgtERM24yy1L+z3kA>^bZG&I1ReGP+L2NW z?a+WmkwKSff_(tG8V4LfMfr)4v)M{ZGIR1lH?e^dLrJCwsyK&P}oFEDciEkP*-7yr45Ic15-ppH89Kr2w<$OSEiDF!WX1=aSDc`axKQUcn+ z1!+@*)^dYZfTt={K~hATLQ;N72B;YU-Z)nRIjsbGn-Dk}7(DY*GC`*ff)Bt17uY4B zEDy;fB}!m6-2LG8YcQy21vv`T&V}S(a5)Gb0)|XGBtilVI$@Lu+Jy#54!xP1bl%7Xpu&7Dd>_<(0*J6$XIMyVkzjje9##RpaE?Lja<-q=b$t271BUg zut0880JSxWON-JH!H53l=R)0IlnNTe2MyDL6cnXG#$b zq-7SRCKkbtgG$QDPX?Wh3p%3(oa~Yki;7Zn;O+z$vXIgn9t@zXcfm*cCg*2D?tLr; z9rzE6;1c-q56~P0C?=9hOF*#-@+)ZICnXWIf;vqBl;(B7qjaFDo5Ui}7;XvJ5#WA5 zXqio73P=&8SOndx2e$*;$uHn?4t&%NcvuYF&MZM�?o^122UICpbt-P6y>#1<38K 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