Fix file index style and remove unnecessary files
This commit is contained in:
parent
152be33191
commit
41e4bd55c9
file_index.xslt
public/Wb/Home
Doc
AboutTempleOS.DD.HTMLAsm.DD.HTMLAutoComplete.DD.HTMLBit.DD.HTMLBlkChain.DD.HTMLBoot.DD.HTMLCharOverview.DD.HTMLCharter.DD.HTMLCmdLineOverview.DD.HTMLComm.HC.HTMLCompilerOverview.DD.HTMLCredits.DD.HTMLCtrls.DD.HTMLCustomize.DD.HTMLCutCorners.DD.HTMLD3.DD.HTMLDate.DD.HTMLDbgFunSeg.DD.HTMLDbgOverview.DD.HTMLDefine.DD.HTMLDemands.DD.HTMLDemoIndex.DD.HTMLDirectives.DD.HTMLDolDoc.DD.HTMLDolDocOverview.DD.HTMLEdPullDown.DD.HTMLFAQ.DD.HTMLFeatures.DD.HTMLFileLowLevel.DD.HTMLFileMgr.DD.HTMLFileMgrPullDown.DD.HTMLFileUtils.DD.HTMLFrame.DD.HTMLGRFiles.DD.HTMLGlossary.DD.HTMLGod.DD.HTMLGraphicsOverview.DD.HTMLGuideLines.DD.HTMLHash.DD.HTMLHeapDbg.DD.HTMLHelloWorld.DD.HTMLHelpIndex.DD.HTMLHelpSystem.DD.HTMLHolyC.DD.HTMLInFile.DD.HTMLInstall.DD.HTMLJob.DD.HTMLKeyAlloc.DD.HTMLKeyDev.DD.HTMLLex.DD.HTMLMemOverview.DD.HTMLMenus.DD.HTMLMouse.DD.HTMLMsgs.DD.HTMLMultiCore.DD.HTMLNewASCII.DD.HTMLODE.DD.HTMLOnce.DD.HTMLOptions.DD.HTMLPags.DD.HTMLPreProcessor.DD.HTMLPrint.DD.HTMLProfiler.DD.HTMLQue.DD.HTMLQuirks.DD.HTMLRedSea.DD.HTMLReliability.DD.HTMLRequirements.DD.HTMLResource.DD.HTMLScopingLinkage.DD.HTMLSnd.DD.HTMLSprite.DD.HTMLSpriteBitMap.DD.HTMLSpriteEd.DD.HTMLSpriteEdText.DD.HTMLSpriteMain.DD.HTMLSpriteSideBar.DD.HTMLStandBy.DD.HTMLStart.DD.HTMLStdOutTask.DD.HTMLStdTempleOSPC.DD.HTMLStrategy.DD.HTMLStreams.DD.HTMLTOSZ.DD.HTMLTextBase.DD.HTMLTimeCycles.DD.HTMLTimeDate.DD.HTMLTimeHPET.DD.HTMLTimeJiffy.DD.HTMLTips.DD.HTMLTransform.DD.HTMLWelcome.DD.HTMLWhyNotMore.DD.HTMLWidget.DD.HTMLWindows.DD.HTML
Src/Adam/ABlkDev
@ -30,7 +30,7 @@
|
||||
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($name, '.HC')"></xsl:when>
|
||||
<xsl:when test="contains($name, '.HC') or contains($name, '.HH')"></xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
|
@ -1,72 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> TempleOS</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a></span><span class=cF5>Websites:</span><span class=cF0>
|
||||
<a name="l5"></a></span><a href="http://www.templeos.org"><span class=cF0>www.templeos.org</span></a><span class=cF0>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a></span><span class=cF5>Owner/President:</span><span class=cF0>
|
||||
<a name="l8"></a></span><a href="mailto:tdavis@templeos.org"><span class=cF0>Terry A. Davis</span></a><span class=cF0>
|
||||
<a name="l9"></a></span><span class=cFA>
|
||||
<a name="l10"></a></span><center><img src="http://www.templeos.org/images/170310TerryADavis.jpg" width="320" height="320" alt=""></center><span class=cF0>
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>8144 Sickle Lane
|
||||
<a name="l13"></a>Las Vegas, NV 89128
|
||||
<a name="l14"></a>(702)254-4223
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><a href="mailto:tdavis@templeos.org"><span class=cF0>tdavis@templeos.org</span></a><span class=cF0>
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a></span><span class=cF5>About Me:</span><span class=cF0>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>I was a National Merit Scholar with a 1440 SAT at Arizona State University. I
|
||||
<a name="l22"></a>have a bachelor's in Computer System Engineering from ASU, basically, embedded
|
||||
<a name="l23"></a>systems, and a master's in Electrical Engineering from ASU, control systems. I
|
||||
<a name="l24"></a>worked as a software, hardware and mechanical engineer at Ticketmaster from
|
||||
<a name="l25"></a>1990-1996.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>I designed a 3 axis stepper-motor-driven milling machine 1996-1997 with a
|
||||
<a name="l28"></a>CAD/CAM package for a company I started called Home Automation and Robotic
|
||||
<a name="l29"></a>Equipment.
|
||||
<a name="l30"></a></span><span class=cFA>
|
||||
<a name="l31"></a></span><center><img src="http://www.templeos.org/images/Machine.jpg" width="600" height="400" alt=""></center><span class=cF0>
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>I worked for a company named Xytec Corp. 1997-1999. We made FPGA-based image
|
||||
<a name="l34"></a>processing equipment. I wrote </span><span class=cF2>SimStructure</span><span class=cF0> from 2000-2001 for H.A.R.E. I
|
||||
<a name="l35"></a>worked as head software/electrical engineer for a company called Graphic
|
||||
<a name="l36"></a>Technologies, 2001-2002, making replacement chips for toner printer cartridges
|
||||
<a name="l37"></a>so they could be refilled.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a></span><span class=cF5>Credits:</span><span class=cF0>
|
||||
<a name="l40"></a>See </span><a href="/Wb/Doc/Credits.DD.HTML#l1"><span class=cF4>::/Doc/Credits.DD</span></a><span class=cF0>.
|
||||
<a name="l41"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Assembler</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>See </span><a href="/Wb/Compiler/OpCodes.DD.HTML#l1"><span class=cF4>::/Compiler/OpCodes.DD</span></a><span class=cF0> for opcodes. They're not standard. Some invalid
|
||||
<a name="l4"></a>insts are not flagged and some valid insts are not implemented. 16-bit asm
|
||||
<a name="l5"></a>support is limited.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>Here are example inst formats:
|
||||
<a name="l8"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> </span><span class=cFC>FS</span><span class=cF0>:DISP[</span><span class=cFC>RSI</span><span class=cF0>+</span><span class=cFC>RDI</span><span class=cF0>*8]
|
||||
<a name="l9"></a> </span><span class=cF1>ADD</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> [DISP]
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a></span><span class=cF2>$</span><span class=cF0> Current compiler output pos (inst ptr). Even works in HolyC expressions.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF2>$</span><span class=cF0> works in </span><span class=cF2>class</span><span class=cF0>es.
|
||||
<a name="l14"></a> </span><span class=cF2>class MyFun
|
||||
<a name="l15"></a> {
|
||||
<a name="l16"></a> $=-16;
|
||||
<a name="l17"></a> I64 local1;
|
||||
<a name="l18"></a> I64 local2;
|
||||
<a name="l19"></a> $=$+256;
|
||||
<a name="l20"></a> I64 crazy;
|
||||
<a name="l21"></a> };</span><span class=cF0>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a></span><span class=cF4>LABEL</span><span class=cF2>::
|
||||
<a name="l24"></a></span><span class=cF0> Defines an exported glbl label.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a></span><span class=cF4>LABEL</span><span class=cF2>:
|
||||
<a name="l27"></a></span><span class=cF0> Defines an non-exported glbl label.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a></span><span class=cF2>@@</span><span class=cF4>LABEL</span><span class=cF2>:
|
||||
<a name="l30"></a></span><span class=cF0> Defines a local label with scope valid between two global labels.
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a></span><span class=cF2>DU8</span><span class=cF0>, </span><span class=cF2>DU16</span><span class=cF0>, </span><span class=cF2>DU32</span><span class=cF0>, </span><span class=cF2>DU64</span><span class=cF0>
|
||||
<a name="l33"></a> Define BYTE, WORD, DWORD or QWORD. Can be used with </span><span class=cF2>DUP()</span><span class=cF0> and ASCII strings.
|
||||
<a name="l34"></a>For your convenience, the ASCII strings do not have terminating zeros. Define
|
||||
<a name="l35"></a>cmds must end with a semicolon.
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a></span><span class=cF2>USE16</span><span class=cF0>, </span><span class=cF2>USE32</span><span class=cF0>, </span><span class=cF2>USE64</span><span class=cF0>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a></span><span class=cF2>IMPORT</span><span class=cF0> </span><span class=cF4>sym1name</span><span class=cF0>, </span><span class=cF4>sym2name</span><span class=cF0>;
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a></span><span class=cF2>LIST</span><span class=cF0>, </span><span class=cF2>NOLIST</span><span class=cF0>
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a></span><span class=cF2>ALIGN</span><span class=cF0> </span><span class=cF4>num</span><span class=cF0>, </span><span class=cF4>fill_byte</span><span class=cF0>
|
||||
<a name="l44"></a> Align to </span><span class=cF4>num</span><span class=cF0> boundary and fill with </span><span class=cF4>fill_byte</span><span class=cF0>.
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a></span><span class=cF2>ORG</span><span class=cF0> </span><span class=cF4>num</span><span class=cF0>
|
||||
<a name="l47"></a> Set code addr for JIT or set module </span><a href="/Wb/Kernel/KLoad.HC.HTML#l181"><span class=cF4>Load</span></a><span class=cF0>() addr -- has 16-byte </span><a href="/Wb/Kernel/KernelA.HH.HTML#l384"><span class=cF4>CBinFile</span></a><span class=cF0> header
|
||||
<a name="l48"></a>and patch table trailing.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a></span><span class=cF2>BINFILE</span><span class=cF4> "FileName.BIN"</span><span class=cF0>;
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>See </span><a href="/Wb/Doc/GuideLines.DD.HTML#l156"><span class=cF4>Assembly Language</span></a><span class=cF0>, </span><a href="/Wb/Demo/Asm/AsmAndC1.HC.HTML#l1"><span class=cF4>::/Demo/Asm/AsmAndC1.HC</span></a><span class=cF0>, </span><a href="/Wb/Demo/Asm/AsmAndC2.HC.HTML#l1"><span class=cF4>::/Demo/Asm/AsmAndC2.HC</span></a><span class=cF0> and </span><span class=cF4>
|
||||
<a name="l53"></a></span><a href="/Wb/Demo/Asm/AsmAndC3.HC.HTML#l1"><span class=cF4>::/Demo/Asm/AsmAndC3.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,55 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>AutoComplete</span><span class=cF0> is the </span><span class=cF7>LTGRAY</span><span class=cF0> window on the right of the scrn. </span><a href="/Wb/Adam/AutoComplete/ACInit.HC.HTML#l127"><span class=cF4>ACInit</span></a><span class=cF0>() collects
|
||||
<a name="l2"></a>words from all text files in subdirectories. Normally, the call to </span><a href="/Wb/Adam/AutoComplete/ACInit.HC.HTML#l127"><span class=cF4>ACInit</span></a><span class=cF0>() is
|
||||
<a name="l3"></a>in </span><a href="/Wb/Home/HomeSys..HTML#l32"><span class=cF4>HomeSys.HC</span></a><span class=cF0>. It provides auto-complete for typing, jump-to-code and
|
||||
<a name="l4"></a>jump-to-dictionary functionality.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF2><ALT-SHIFT-A></span><span class=cF0> Closes the </span><span class=cF7>LTGRAY</span><span class=cF0> AutoComplete window.
|
||||
<a name="l7"></a></span><span class=cF2><ALT-a></span><span class=cF0> Opens the </span><span class=cF7>LTGRAY</span><span class=cF0> AutoComplete window.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a></span><span class=cF2><CTRL-SHIFT-F1></span><span class=cF0> Jumps to the source code for 1st symbol in the window.
|
||||
<a name="l10"></a></span><span class=cF2><CTRL-SHIFT-F2></span><span class=cF0> Jumps to the source code for 2nd symbol in the window.
|
||||
<a name="l11"></a></span><span class=cF2><CTRL-SHIFT-Fn></span><span class=cF0> Jumps to the source code for n-th symbol in the window.
|
||||
<a name="l12"></a></span><span class=cF2><CTRL-F1></span><span class=cF0> Autocompletes the 1st symbol in the window.
|
||||
<a name="l13"></a></span><span class=cF2><CTRL-F2></span><span class=cF0> Autocompletes the 2nd symbol in the window.
|
||||
<a name="l14"></a></span><span class=cF2><CTRL-Fn></span><span class=cF0> Autocompletes the n-th symbol in the window.
|
||||
<a name="l15"></a></span><span class=cF2><CTRL-SHIFT-1></span><span class=cF0> Jumps to the dictionary for 1st symbol in the window.
|
||||
<a name="l16"></a></span><span class=cF2><CTRL-SHIFT-2></span><span class=cF0> Jumps to the dictionary for 2nd symbol in the window.
|
||||
<a name="l17"></a></span><span class=cF2><CTRL-SHIFT-n></span><span class=cF0> Jumps to the dictionary for n-th symbol in the window.
|
||||
<a name="l18"></a></span><span class=cF2><CTRL-1></span><span class=cF0> Autocompletes the 1st dictionary word in the window.
|
||||
<a name="l19"></a></span><span class=cF2><CTRL-2></span><span class=cF0> Autocompletes the 2nd dictionary word in the window.
|
||||
<a name="l20"></a></span><span class=cF2><CTRL-n></span><span class=cF0> Autocompletes the n-th dictionary word in the window.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>If you have the raw Project Gutenberg dictionary file, you can generate the
|
||||
<a name="l23"></a>TempleOS processed dictionary files with the stand-alone program </span><span class=cF4>
|
||||
<a name="l24"></a></span><a href="/Wb/Adam/AutoComplete/ACDictGen.HC.HTML#l1"><span class=cF4>::/Adam/AutoComplete/ACDictGen.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF5>These take a pointer to a bit field.</span><span class=cF0>
|
||||
<a name="l3"></a></span><span class=cF2>Bt</span><span class=cF0>: Bit Test
|
||||
<a name="l4"></a></span><span class=cF2>Bts</span><span class=cF0>: Bit Test and Set to one
|
||||
<a name="l5"></a></span><span class=cF2>Btr</span><span class=cF0>: Bit Test and Rst to zero
|
||||
<a name="l6"></a></span><span class=cF2>Btc</span><span class=cF0>: Bit Test and Compliment (toggle)
|
||||
<a name="l7"></a></span><span class=cF2>BEqu</span><span class=cF0>: Set bit to value.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>Bit operations are "atomic", no interrupt between the reading and writing the
|
||||
<a name="l10"></a>bit, important when multitasking. For multicore use "locked" forms.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a></span><span class=cF5>These don't take a pointer, but the actual field.</span><span class=cF0>
|
||||
<a name="l13"></a></span><span class=cF2>Bsf</span><span class=cF0>: Bit Scan Fwd (Pos of first low one bit or -1)
|
||||
<a name="l14"></a></span><span class=cF2>Bsr</span><span class=cF0>: Bit Scan Rev (Pos of first high one bit or -1)
|
||||
<a name="l15"></a></span><span class=cF2>BCnt</span><span class=cF0>: Bit Cnt (Cnt of set bits)
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,75 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Block Chain</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>There was a technique on the Commodore 64 where disk blocks were chained
|
||||
<a name="l4"></a>together with a block pointer at the end of each block. This is far inferior to
|
||||
<a name="l5"></a>having a file allocation table, as in FAT32.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>The </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file system does not allow files to grow because it only has an
|
||||
<a name="l8"></a>allocation bitmap and not a FAT table. This "flaw" is by design. I am
|
||||
<a name="l9"></a>intentionally crippling this operating system, making it a toy with the wisdom
|
||||
<a name="l10"></a>that this will prevent commercialization and corruption. The toy spirit of the
|
||||
<a name="l11"></a>operating system will be preserved going into the future. The vision for this
|
||||
<a name="l12"></a>operating system was a modern Commodore 64, which was a fun toy.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>Doing whole file operations is the TempleOS way of doing thinks. It is the
|
||||
<a name="l15"></a>simplest and, ironically, the fastest. It is obnoxious in the characteristic
|
||||
<a name="l16"></a>way that TempleOS is obnoxious, flaunting massive modern resources in a way that
|
||||
<a name="l17"></a>makes old programmers protest.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>Doing whole file operations will sabotage efforts to change the 640x480
|
||||
<a name="l20"></a>resolution and violate the ban on multimedia. When doing large, whole-file
|
||||
<a name="l21"></a>operations, immediately memory fragmentation is a serious problem, but not so
|
||||
<a name="l22"></a>for allocations in the range under a Meg (with occasional larger ones).
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>The file compression scheme in TempleOS only works on whole file operations and
|
||||
<a name="l25"></a>the </span><a href="/Wb/Doc/DolDoc.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> format cannot have text tacked onto the end, since binary data is at
|
||||
<a name="l26"></a>the end.
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>I don't want to spoil fun, so of course I offer a way to get awesome performance
|
||||
<a name="l29"></a>that is, ironically, superior. </span><a href="/Wb/Kernel/BlkDev/DskCFile.HC.HTML#l129"><span class=cF4>FBlkRead</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/BlkDev/DskCFile.HC.HTML#l181"><span class=cF4>FBlkWrite</span></a><span class=cF0>() allow you to read a
|
||||
<a name="l30"></a>block offset from the start of a file. Since files are all contiguous, this is
|
||||
<a name="l31"></a>incredibly efficient. You just have to declare the desired file size when you
|
||||
<a name="l32"></a>create it with </span><a href="/Wb/Kernel/BlkDev/DskCFile.HC.HTML#l9"><span class=cF4>FOpen</span></a><span class=cF0>() and cannot change it. See </span><a href="/Wb/Demo/Dsk/DataBase.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/DataBase.HC</span></a><span class=cF0>.
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a>If you like, you are encouraged to to do raw </span><a href="/Wb/Kernel/BlkDev/DskBlk.HC.HTML#l31"><span class=cF4>BlkRead</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/BlkDev/DskBlk.HC.HTML#l71"><span class=cF4>BlkWrite</span></a><span class=cF0>() directly
|
||||
<a name="l35"></a>on a drive. Just get a pointer to a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2688"><span class=cF4>CDrv</span></a><span class=cF0> with </span><a href="/Wb/Kernel/BlkDev/DskDrv.HC.HTML#l188"><span class=cF4>Let2Drv</span></a><span class=cF0>() and you are on your
|
||||
<a name="l36"></a>way! Your computer is supposed to be a fun toy! You can make an entire
|
||||
<a name="l37"></a>partition used for a database, or invent a file system.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>On the whole, the </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file system with its whole-file-only limitation bring
|
||||
<a name="l40"></a>beautiful harmony. It beautifully captures the spirit of TempleOS with
|
||||
<a name="l41"></a>simplicity and, ironic speed, since contiguous is fastest.
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a></span><span class=cF8>
|
||||
<a name="l44"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,142 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Booting A PC</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>TempleOS only supports traditional </span><span class=cF2>BIOS</span><span class=cF0> booting, not the newer technique, </span><span class=cF2>UEFI</span><span class=cF0>.
|
||||
<a name="l4"></a>This document describes </span><span class=cF2>BIOS</span><span class=cF0> booting.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>When you turn-on (power-up) a computer or you do a hardware reset, the computer
|
||||
<a name="l7"></a>starts executing the </span><span class=cF2>BIOS</span><span class=cF0>. Sometimes, you must change the </span><span class=cF2>BIOS</span><span class=cF0> boot order to
|
||||
<a name="l8"></a>boot the device you want.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>The </span><span class=cF2>BIOS</span><span class=cF0> loads a boot sector from CD/DVD, hard disk or whatever. The boot
|
||||
<a name="l11"></a>sector runs in 16-bit real mode and often loads-in a second file that's bigger
|
||||
<a name="l12"></a>if it can't be done by just one sector. It's a safe bet that boot sectors are
|
||||
<a name="l13"></a>hand-coded assembly language. Most boot sectors use the </span><span class=cF2>BIOS</span><span class=cF0> to load-in the
|
||||
<a name="l14"></a>next stage.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>Not only do boot sectors have a size limit, 512 bytes or 2048 bytes for CD/DVD,
|
||||
<a name="l17"></a>the files they load have to fit within 640K because they run in 16-bit mode.
|
||||
<a name="l18"></a>This means they usually can't just load the whole operating system and start it
|
||||
<a name="l19"></a>running. Some boot loaders, like Grub, have a capability of switching modes
|
||||
<a name="l20"></a>before handing-off control to the operating system. The operating system must
|
||||
<a name="l21"></a>load the rest of itself. With TempleOS, the </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>::/Kernel.BIN.C</span></a><span class=cF0> file is loaded by
|
||||
<a name="l22"></a>the boot sector. I try to put a minimum in the </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>Kernel Module</span></a><span class=cF0>, so that it will
|
||||
<a name="l23"></a>always fit in 640K. When Kernel.BIN runs, it switches to 32-bit mode, then, to
|
||||
<a name="l24"></a>64-bit mode allowing access to more memory. Then, it loads in the rest of
|
||||
<a name="l25"></a>TempleOS by executing </span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>::/StartOS.HC</span></a><span class=cF0>.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>All the boot related code for TempleOS is in the </span><span class=cF2>/Adam/Opt/Boot</span><span class=cF0> directory.
|
||||
<a name="l28"></a></span><span class=cF4>
|
||||
<a name="l29"></a></span><a href="/Wb/Adam/Opt/Boot/BootDVD.HC.HTML#l1"><span class=cF4>BootDVD.HC</span></a><span class=cF0> CD/DVD boot sector.</span><span class=cF4>
|
||||
<a name="l30"></a></span><a href="/Wb/Adam/Opt/Boot/BootDVDIns.HC.HTML#l1"><span class=cF4>BootDVDIns.HC</span></a><span class=cF0> Prep for CD/DVD install by creating </span><span class=cF2>/0000Boot/0000Kernel.BIN.C</span><span class=cF0>.
|
||||
<a name="l31"></a>If you are curious about CD/DVDs, see </span><a href="/Wb/Adam/Opt/Boot/DskISORedSea.HC.HTML#l1"><span class=cF4>DskISORedSea.HC</span></a><span class=cF0>. To make a custom
|
||||
<a name="l32"></a>bootable CD/DVD, look here </span><a href="/Wb/Misc/DoDistro.HC.HTML#l1"><span class=cF4>Bootable CD</span></a><span class=cF0>.
|
||||
<a name="l33"></a></span><span class=cF4>
|
||||
<a name="l34"></a></span><a href="/Wb/Adam/Opt/Boot/BootMHD.HC.HTML#l1"><span class=cF4>BootMHD.HC</span></a><span class=cF0> Stage 1 Master HD boot loader.</span><span class=cF4>
|
||||
<a name="l35"></a></span><a href="/Wb/Adam/Opt/Boot/BootMHD2.HC.HTML#l1"><span class=cF4>BootMHD2.HC</span></a><span class=cF0> Stage 2 Master HD boot loader.</span><span class=cF4>
|
||||
<a name="l36"></a></span><a href="/Wb/Adam/Opt/Boot/BootMHDIns.HC.HTML#l1"><span class=cF4>BootMHDIns.HC</span></a><span class=cF0> Installs Master HD boot loader.
|
||||
<a name="l37"></a></span><span class=cF2>BootMHD</span><span class=cF0> goes on block zero. </span><span class=cF2>/0000Boot/BootMHD2.BIN.C</span><span class=cF0> is stored as a file in a
|
||||
<a name="l38"></a>partition, risky and unusual, since most master boot loaders place stage 2 in a
|
||||
<a name="l39"></a>gap that's not in any partition. </span><span class=cF2>BootMHD2</span><span class=cF0> displays a menu and boots a
|
||||
<a name="l40"></a>partition.
|
||||
<a name="l41"></a></span><span class=cF4>
|
||||
<a name="l42"></a></span><a href="/Wb/Adam/Opt/Boot/BootHD.HC.HTML#l1"><span class=cF4>BootHD.HC</span></a><span class=cF0> HD partition boot record.</span><span class=cF4>
|
||||
<a name="l43"></a></span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l1"><span class=cF4>BootHDIns.HC</span></a><span class=cF0> Installs HD partition boot record.
|
||||
<a name="l44"></a></span><span class=cF2>BootHD</span><span class=cF0> is the boot record for a TempleOS partition. Each partition has its own
|
||||
<a name="l45"></a>partition boot record, the first block of the partition.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>My boot records don't access directories because that would make them too big
|
||||
<a name="l48"></a>for one block and would make them depend on a file system layout. Instead, they
|
||||
<a name="l49"></a>get patched with the LBA, logical block addresses, to load files. To update
|
||||
<a name="l50"></a>with a new TempleOS kernel, you must create a </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>::/Kernel.BIN.C</span></a><span class=cF0> binary file and
|
||||
<a name="l51"></a>patch the boot loader so it knows the LBA blocks to load. Therefore, you
|
||||
<a name="l52"></a>usually recompile the kernel and update the boot sector at the same time with </span><span class=cF4>
|
||||
<a name="l53"></a></span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(). </span><a href="/Wb/Adam/Opt/Boot/BootMHDIns.HC.HTML#l69"><span class=cF4>BootMHDIns</span></a><span class=cF0>() will install a master boot loader.
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a>With TempleOS, </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>::/Kernel.BIN.C</span></a><span class=cF0> loads </span><a href="/Wb/Compiler/Compiler.PRJ.HTML#l1"><span class=cF4>::/Compiler/Compiler.BIN</span></a><span class=cF0> so it can work
|
||||
<a name="l56"></a>with source code from then on. It compiles start-up scripts beginning with </span><span class=cF4>
|
||||
<a name="l57"></a></span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>::/StartOS.HC</span></a><span class=cF0> into the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0>'s memory including the code in the </span><span class=cF2>/Adam</span><span class=cF0> and </span><span class=cF2>/H
|
||||
<a name="l58"></a>ome</span><span class=cF0> directories.
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a>It is possible to do a fast reboot without doing a hardware reset. You might do
|
||||
<a name="l61"></a>this when working on </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>::/Kernel.BIN.C</span></a><span class=cF0> or your start-up scripts when you want to
|
||||
<a name="l62"></a>compile them effect. See </span><a href="/Wb/Adam/Opt/Boot/BootRAM.HC.HTML#l33"><span class=cF4>BootRAM</span></a><span class=cF0>().
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a></span><span class=cFA>
|
||||
<a name="l65"></a>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a>
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a>
|
||||
<a name="l72"></a>
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a>
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a>
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a>
|
||||
<a name="l89"></a>
|
||||
<a name="l90"></a>
|
||||
<a name="l91"></a>
|
||||
<a name="l92"></a>
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a>
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a>
|
||||
<a name="l98"></a>
|
||||
<a name="l99"></a>
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a>
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a>
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a>
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,66 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Char Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>A </span><span class=cF2>Char</span><span class=cF0>acter is a single byte holding an ASCII code for a letter, num or sym.
|
||||
<a name="l4"></a>The </span><span class=cF2>TempleOS</span><span class=cF0> term is a </span><span class=cF2>U8</span><span class=cF0>.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>Standard ASCII values range from 0 to 127. Values below 32 are ctrl key's. So,
|
||||
<a name="l7"></a>an ASCII #3 is a </span><span class=cF2><CTRL-c></span><span class=cF0>. TempleOS uses a few nonstandard values below 32.
|
||||
<a name="l8"></a>See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3456"><span class=cF4>Char Definitions</span></a><span class=cF0>.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>ASCII #5 is the cursor location in a saved file.
|
||||
<a name="l11"></a>ASCII #28 is </span><span class=cF2><SHIFT-ESC></span><span class=cF0>.
|
||||
<a name="l12"></a>ASCII #31 is a </span><span class=cF2><SHIFT-SPACE></span><span class=cF0>.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>TempleOS ASCII is 8-bit instead of 7-bit, so it also uses the range from
|
||||
<a name="l15"></a>128-255. Press </span><span class=cF2><CTRL-ALT-a></span><span class=cF0> to see shapes for 128-255. Technically, </span><span class=cF2><CTRL-ALT-
|
||||
<a name="l16"></a>a></span><span class=cF0> are </span><span class=cF4><u>scrn codes</u></span><span class=cF0>.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>A </span><span class=cF2>Key</span><span class=cF0> is typically specified with a scan code. TempleOS scan codes contain the
|
||||
<a name="l19"></a>key value in the lowest </span><span class=cF2>U8</span><span class=cF0>, and flags in the upper 3 bytes. See </span><span class=cF4>
|
||||
<a name="l20"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3481"><span class=cF4>Scan Code Flags</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3515"><span class=cF4>Scan Codes</span></a><span class=cF0>.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>TempleOS stores scan codes in 8 bytes.
|
||||
<a name="l23"></a> </span><span class=cF2>Byte 0</span><span class=cF0> is the code. NumPad keys, SHIFT, ALT, CTRL and GUI keys combined.
|
||||
<a name="l24"></a> </span><span class=cF2>Byte 1-3</span><span class=cF0> are </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3464"><span class=cF4>flags</span></a><span class=cF0>
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>The upper 4-bytes are copied from lower 4-bytes.
|
||||
<a name="l27"></a> </span><span class=cF2>Byte 4</span><span class=cF0> is the code. Left, Right and NumPad keys distinct.
|
||||
<a name="l28"></a> </span><span class=cF2>Byte 5-7</span><span class=cF0> are </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3464"><span class=cF4>flags</span></a><span class=cF0>
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>Run the program </span><a href="/Wb/Demo/MsgLoop.HC.HTML#l1"><span class=cF4>::/Demo/MsgLoop.HC</span></a><span class=cF0> to examine scan code. Press </span><span class=cF2><CTRL-SHIFT-l></span><span class=cF0>
|
||||
<a name="l31"></a>and "Insert ASCII/ScanCode".
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>See </span><a href="/Wb/Doc/KeyAlloc.DD.HTML#l1"><span class=cF4>Key Allocations</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2958"><span class=cF4>CKbdStateGlbls</span></a><span class=cF0>.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>A </span><span class=cF2>String</span><span class=cF0> is a bunch of ASCII characters terminated with a zero.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,158 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> TempleOS Charter</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Why did they make Solomon's Temple? It was a direction to look, to focus on, a
|
||||
<a name="l4"></a>special place for meditation, to do offerings, a community center, a home to
|
||||
<a name="l5"></a>God's beauty, that encouraged love of God. People cherished God's temple,
|
||||
<a name="l6"></a>beautifying it with gold and all fine things to show love of God, as great
|
||||
<a name="l7"></a></span><a href="https://www.youtube.com/watch?v=xkfmK-CLvcc"><span class=cF0>cathedrals</span></a><span class=cF0> were decorated with astounding, awe-striking intricate art and
|
||||
<a name="l8"></a>gargoyles, incredible devotion to God with hours of effort, toiling and
|
||||
<a name="l9"></a>slaving-away for the glory of God, for families with children to see
|
||||
<a name="l10"></a></span><a href="https://www.youtube.com/watch?v=t8g1e-JLrhM"><span class=cF0>stained-glass</span></a><span class=cF0> windows and tomes with ridiculously elaborate </span><a href="https://www.youtube.com/watch?v=Oa8gMb0YC68"><span class=cF0>calligraphy</span></a><span class=cF0> to show
|
||||
<a name="l11"></a>love of God, from a people who did little else but show love toward God, lived
|
||||
<a name="l12"></a>in dire conditions by today's standards, yet with so much difficulty
|
||||
<a name="l13"></a>scraping-by, found the time to devote </span><a href="https://www.youtube.com/watch?v=tZw5V4XuUIo"><span class=cF0>even all free-time</span></a><span class=cF0> to God!
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>1 Kings 6:21 (King James)
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a> 6:21 So Solomon overlaid the house within with pure gold: and he made
|
||||
<a name="l19"></a> a partition by the chains of gold before the </span><span class=cF4>oracle</span><span class=cF0>; and he overlaid
|
||||
<a name="l20"></a> it with gold.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a> 6:22 And the whole house he overlaid with gold, until he had finished
|
||||
<a name="l23"></a> all the house: also the whole altar that was by the </span><span class=cF4>oracle</span><span class=cF0> he overlaid
|
||||
<a name="l24"></a> with gold.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a> 6:23 And within the </span><span class=cF4>oracle</span><span class=cF0> he made two cherubims of olive tree, each
|
||||
<a name="l27"></a> ten cubits high.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>* TempleOS is God's official temple. Just like Solomon's temple, this is a
|
||||
<a name="l31"></a>community focal point where offerings are made and God's oracle is consulted.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>* God said </span><span class=cF2>640x480 16 color</span><span class=cF0> graphics is a covenant like circumcision. Children
|
||||
<a name="l34"></a>will do offerings. Think of 16 colors like the Simpson's cartoons. In the
|
||||
<a name="l35"></a>future, even if one GPU were universal, we would still keep 640x480 16 color and
|
||||
<a name="l36"></a>not use GPU acceleration. Graphics operations should be transparent, not hidden
|
||||
<a name="l37"></a>in a GPU.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>* God said to use a single-voice 8-bit signed MIDI-like sample for sound. God
|
||||
<a name="l40"></a>does not want death screams, perhaps, because God has PTSD or soldiers have
|
||||
<a name="l41"></a>PTSD. (Imagine wounded on battlefields.)
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a>* God said His temple must be perfect. </span><span class=cF4>We don't think twice about breaking
|
||||
<a name="l44"></a>compatibility.</span><span class=cF0> God said we do a seven year release cycle. I say the PC
|
||||
<a name="l45"></a>hardware follows a 49 year, jubilee cycle, like broadcast TV upgrades.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>* The vision is the same usage model and niche as the Commodore 64 -- a
|
||||
<a name="l48"></a>non-networked, simple machine where programming was the goal, not just a means
|
||||
<a name="l49"></a>to an end. However, it is modern, 64-bit and </span><span class=cF2>multi-cored</span><span class=cF0>. It is special
|
||||
<a name="l50"></a>purpose, not general purpose, so some things it will not do. Also, it's a
|
||||
<a name="l51"></a>kayak, not a Titanic. The priority is </span><span class=cF2>user developers</span><span class=cF0>, not </span><span class=cF2>3rd party developers</span><span class=cF0>.
|
||||
<a name="l52"></a>
|
||||
<a name="l53"></a>* We do not put any hooks for future changes. "Perfect" means we always act as
|
||||
<a name="l54"></a>though it is final, for all time. Microsoft allowed the </span><a href="http://en.wikipedia.org/wiki/BMP_file"><span class=cF2>Windows BMP</span></a><span class=cF0> file format
|
||||
<a name="l55"></a>to adapt to the future and it became grotesque.
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a>* Low line count is the highest good, so it is easy to learn the whole thing.
|
||||
<a name="l58"></a>Users should see the light at the end of the tunnel. One file system, for
|
||||
<a name="l59"></a>example, is better than many file systems.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>* There is a limit of 100,000 lines of code for all time, not including
|
||||
<a name="l62"></a>applications and demos. </span><span class=cF4>Code comments count</span><span class=cF0>, however. Currently, there are
|
||||
<a name="l63"></a>80,849 lines of code. </span><span class=cF4>3rd party libraries are banned</span><span class=cF0> because they circumvent
|
||||
<a name="l64"></a>the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API
|
||||
<a name="l65"></a>that is the only dependency of applications. Dependency on components and
|
||||
<a name="l66"></a>libraries creates a hell that is no longer blissful.
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>* The metric for resolving all TempleOS code governance issues is how fast the
|
||||
<a name="l69"></a>compiler compiles itself and the kernel with </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(). The </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> language
|
||||
<a name="l70"></a>should be changed to optimize this metric, as I did when I changed type casting
|
||||
<a name="l71"></a>from prefix standard C to postfix </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0>, but we need a rule to prevent
|
||||
<a name="l72"></a>degenerating into a brainfuck language.
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>* Minimal abstraction is a goal. Sheep are fools. They always respect a design
|
||||
<a name="l75"></a>that is more complicated than another. Any genius can make it complicated.
|
||||
<a name="l76"></a>Like in physics, it takes a supra-genius to make it simple.
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a>* It is for one platformc -- </span><a href="http://en.wikipedia.org/wiki/Amd64#AMD64"><span class=cF4>x86_64</span></a><span class=cF0> desktop PC compatibles, more like
|
||||
<a name="l79"></a>super-computers than battery efficient wimpy mobiles.
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a>* All hardware access will be done through x86 IN/OUT instructions, not PCI
|
||||
<a name="l82"></a>drivers. A frame buffer for VGA is an exception.
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a>* One driver for each class of device. Limited exceptions are allowed. With
|
||||
<a name="l85"></a>divergent device capabilities, it is a nightmare for user applications and what
|
||||
<a name="l86"></a>is gained? A three buuton mouse is like a leg you cannot put weight on.
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a>* </span><span class=cF2>Ring-0-only</span><span class=cF0>. Everything runs in kernel mode, including user applications.
|
||||
<a name="l89"></a>
|
||||
<a name="l90"></a>* Full access to everything. All memory, I/O ports, instructions, and similar
|
||||
<a name="l91"></a>things must never be off limits. All functions, variables and class members
|
||||
<a name="l92"></a>will be accessible. There are no C++ </span><span class=cF2>public</span><span class=cF0>/</span><span class=cF2>private</span><span class=cF0> protections and all
|
||||
<a name="l93"></a>functions, even secondary ones in the kernel, can be called.
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a>* </span><span class=cF2>Single-address-map</span><span class=cF0> as though paging is not used. Long mode requires paging,
|
||||
<a name="l96"></a>however, so the nearest thing is keeping all memory </span><span class=cF2>identity-mapped</span><span class=cF0>.
|
||||
<a name="l97"></a>
|
||||
<a name="l98"></a>* </span><span class=cF4>No networking</span><span class=cF0>, so malware is not an issue.
|
||||
<a name="l99"></a>
|
||||
<a name="l100"></a>* No encryption or passwords. Files are compressed, not encrypted.
|
||||
<a name="l101"></a>
|
||||
<a name="l102"></a>* </span><span class=cF2>Free</span><span class=cF0> and </span><span class=cF2>public domain</span><span class=cF0>.
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a>* </span><span class=cF2>100% open source</span><span class=cF0> with all source included.
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a>* Documents are not for printing. They're dynamic, intended for the scrn.
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a>* Just one 8x8 fixed-width font. </span><span class=cF4>No Unicode, just Extended ASCII</span><span class=cF0>. Other
|
||||
<a name="l109"></a>countries can make their own versions. The versions should be just for one
|
||||
<a name="l110"></a>language and platform.
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a>* </span><span class=cF4>No multimedia</span><span class=cF0>. Sounds and images will be primarily calculated in real-time,
|
||||
<a name="l113"></a>not fetched from storage.
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a></span><span class=cF8>
|
||||
<a name="l116"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
<a name="l117"></a>* "The Simpsons" is a trademark owned by Fox.
|
||||
<a name="l118"></a>* "Windows" is a trademark owned by MicroSoft Corp.
|
||||
<a name="l119"></a></span><span class=cF0>
|
||||
<a name="l120"></a>
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a></span><span class=cF5> Possible Amendments</span><span class=cF0>
|
||||
<a name="l123"></a>
|
||||
<a name="l124"></a>The compiler's parser makes RISC code which it optimizes to CISC. I discovered
|
||||
<a name="l125"></a>this does not matter because the CPU converts it back to RISC and schedules it,
|
||||
<a name="l126"></a>internally. A TempleOS zealot with more zeal than I, might say we should save
|
||||
<a name="l127"></a>lines-of-code by removing the CISC optimizing.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,81 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Command Line Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>The cmd line feeds into the </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> compiler line-by-line as you type. A stmt
|
||||
<a name="l4"></a>outside a function executes immediately. Remember to add a semicolon.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>Look-up the function headers with </span><span class=cF2>AutoComplete</span><span class=cF0> by hitting </span><span class=cF2><CTRL-SHIFT-F1></span><span class=cF0> after
|
||||
<a name="l7"></a>typing the first few letters.
|
||||
<a name="l8"></a></span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l102"><span class=cF4>Click Here</span></a><span class=cF0> to see the directory cmd header. It accepts default args from C++.
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>></span><span class=cF2>Dir("*.DD.Z");</span><span class=cF0>
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>If you don't have args, you don't need parenthesis.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>></span><span class=cF2>Dir;</span><span class=cF0>
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>Directories are referenced with </span><span class=cF2>/</span><span class=cF0> not </span><span class=cF2>\</span><span class=cF0>. There is a current directory, but not
|
||||
<a name="l18"></a>a path. To run a program, you typically </span><span class=cF2>#include </span><span class=cF0>it. There are several
|
||||
<a name="l19"></a>shortcuts for </span><span class=cF2>#include</span><span class=cF0>ing files. Right-click or hit </span><span class=cF2><ENTER></span><span class=cF0> on a directory
|
||||
<a name="l20"></a>listing or press </span><span class=cF2><F5></span><span class=cF0> while editing.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>></span><span class=cF2>Ed("NewFile.HC.Z");</span><span class=cF0> Invokes the editor. See </span><a href="/Wb/Adam/DolDoc/DocLink.HC.HTML#l29"><span class=cF4>Doc Link Type</span></a><span class=cF0>.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>Most filenames end in </span><span class=cF2>.Z</span><span class=cF0> because they are stored compressed.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>Drives are specified with a letter. The boot drive is specified with a '</span><span class=cF2>:</span><span class=cF0>'.
|
||||
<a name="l27"></a>The home dir drive is specified with a </span><span class=cF2>'~'</span><span class=cF0>.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>></span><span class=cF2>Drv('B');</span><span class=cF0> B drive
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>The drive can be specified in a </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l9"><span class=cF4>Cd</span></a><span class=cF0>() command as in:
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>></span><span class=cF2>Cd("B:/Tmp");</span><span class=cF0> B drive
|
||||
<a name="l34"></a>></span><span class=cF2>Cd("::/Demo");</span><span class=cF0> Boot drive
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>The home directory is specified with a </span><span class=cF2>'~'</span><span class=cF0>.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a>></span><span class=cF2>Cd("~/Psalmody");</span><span class=cF0> See </span><a href="/Wb/Doc/GuideLines.DD.HTML#l37"><span class=cF4>::/Home dir</span></a><span class=cF0>.
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a>If a file is not found, </span><span class=cF2>.Z</span><span class=cF0> is added or removed and a search is done, again. If
|
||||
<a name="l41"></a>a file is still not found, all parent directories are searched.
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a>You can place macros in your </span><a href="/Wb/Home/PersonalMenu..HTML#l1"><span class=cF4>PersonalMenu</span></a><span class=cF0> for </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l9"><span class=cF4>Cd</span></a><span class=cF0>() commands. </span><span class=cF2><CTRL-m></span><span class=cF0> to access
|
||||
<a name="l44"></a>your menu.
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a>></span><span class=cF2>Find("needle","/Demo/*.HC.Z;*.DD.Z;");</span><span class=cF0> See </span><a href="/Wb/Doc/FileUtils.DD.HTML#l1"><span class=cF4>File Utils</span></a><span class=cF0>.
|
||||
<a name="l47"></a></span><span class=cF4>
|
||||
<a name="l48"></a><u>Cmd Line Routines</span><span class=cF0>
|
||||
<a name="l49"></a></span><span class=cF9>
|
||||
<a name="l50"></a>Take Tour</u></span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,163 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>/* RS232 serial ports no longer exist.</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF2>Be sure to Adam Include this by placing</span><span class=cF0>
|
||||
<a name="l3"></a></span><span class=cF2>it in your start-up scripts.</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Comm"</span><span class=cF0>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>#</span><span class=cF1>define</span><span class=cF0> UART_THR 0
|
||||
<a name="l9"></a>#</span><span class=cF1>define</span><span class=cF0> UART_RDR 0
|
||||
<a name="l10"></a>#</span><span class=cF1>define</span><span class=cF0> UART_BRDL 0
|
||||
<a name="l11"></a>#</span><span class=cF1>define</span><span class=cF0> UART_IER 1
|
||||
<a name="l12"></a>#</span><span class=cF1>define</span><span class=cF0> UART_BRDH 1
|
||||
<a name="l13"></a>#</span><span class=cF1>define</span><span class=cF0> UART_IIR 2
|
||||
<a name="l14"></a>#</span><span class=cF1>define</span><span class=cF0> UART_LCR 3
|
||||
<a name="l15"></a>#</span><span class=cF1>define</span><span class=cF0> UART_MCR 4
|
||||
<a name="l16"></a>#</span><span class=cF1>define</span><span class=cF0> UART_LSR 5
|
||||
<a name="l17"></a>#</span><span class=cF1>define</span><span class=cF0> UART_MSR 6
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>#</span><span class=cF1>define</span><span class=cF0> COMf_ENABLED 0
|
||||
<a name="l20"></a></span><span class=cF1>class</span><span class=cF0> CComm
|
||||
<a name="l21"></a>{
|
||||
<a name="l22"></a> </span><span class=cF9>I64</span><span class=cF0> base,
|
||||
<a name="l23"></a> flags;
|
||||
<a name="l24"></a> </span><span class=cF9>CFifoU8</span><span class=cF0> *RX_fifo;
|
||||
<a name="l25"></a> </span><span class=cF9>CFifoU8</span><span class=cF0> *TX_fifo;
|
||||
<a name="l26"></a>} comm_ports[5];
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a></span><span class=cF1>U0</span><span class=cF0> CommHndlr(</span><span class=cF9>I64</span><span class=cF0> port)
|
||||
<a name="l29"></a>{
|
||||
<a name="l30"></a> CComm *c=&comm_ports[port];
|
||||
<a name="l31"></a> </span><span class=cF9>I64</span><span class=cF0> b=0,stat;
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&c->flags,COMf_ENABLED</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l33"></a> stat=</span><span class=cF5>InU8</span><span class=cF0>(c->base+UART_IIR);
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (stat & 4) </span><span class=cF2>//RX</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF5>FifoU8Ins</span><span class=cF0>(c->RX_fifo,</span><span class=cF5>InU8</span><span class=cF7>(</span><span class=cF0>c->base+UART_RDR</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l36"></a> </span><span class=cF1>if</span><span class=cF0> (stat & 2) { </span><span class=cF2>//TX</span><span class=cF0>
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>FifoU8Rem</span><span class=cF7>(</span><span class=cF0>c->TX_fifo,&b</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l38"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_THR,b);
|
||||
<a name="l39"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l40"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_IER,1); </span><span class=cF2>//RX but no THR empty</span><span class=cF0>
|
||||
<a name="l41"></a> }
|
||||
<a name="l42"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l43"></a>}
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a></span><span class=cF1>interrupt</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> IRQComm3()
|
||||
<a name="l46"></a>{
|
||||
<a name="l47"></a> CommHndlr(2);
|
||||
<a name="l48"></a> CommHndlr(4);
|
||||
<a name="l49"></a> </span><span class=cF5>OutU8</span><span class=cF0>(0x20,0x20);
|
||||
<a name="l50"></a>}
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a></span><span class=cF1>interrupt</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> IRQComm4()
|
||||
<a name="l53"></a>{
|
||||
<a name="l54"></a> CommHndlr(1);
|
||||
<a name="l55"></a> CommHndlr(3);
|
||||
<a name="l56"></a> </span><span class=cF5>OutU8</span><span class=cF0>(0x20,0x20);
|
||||
<a name="l57"></a>}
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a></span><span class=cF1>U0</span><span class=cF0> CommInit()
|
||||
<a name="l60"></a>{
|
||||
<a name="l61"></a> </span><span class=cF5>MemSet</span><span class=cF0>(&comm_ports,0,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF0>comm_ports</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l62"></a> comm_ports[1].base=0x3F8;
|
||||
<a name="l63"></a> comm_ports[2].base=0x2F8;
|
||||
<a name="l64"></a> comm_ports[3].base=0x3E8;
|
||||
<a name="l65"></a> comm_ports[4].base=0x2E8;
|
||||
<a name="l66"></a> </span><span class=cF5>IntEntrySet</span><span class=cF0>(0x23,&IRQComm3);
|
||||
<a name="l67"></a> </span><span class=cF5>IntEntrySet</span><span class=cF0>(0x24,&IRQComm4);
|
||||
<a name="l68"></a>}
|
||||
<a name="l69"></a>CommInit;
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a></span><span class=cF1>public</span><span class=cF0> CComm *CommInit8n1(</span><span class=cF9>I64</span><span class=cF0> port,</span><span class=cF9>I64</span><span class=cF0> baud)
|
||||
<a name="l72"></a>{
|
||||
<a name="l73"></a> CComm *c=&comm_ports[port];
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l77"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&c->flags,COMf_ENABLED</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l78"></a> </span><span class=cF5>FifoU8Del</span><span class=cF0>(c->RX_fifo);
|
||||
<a name="l79"></a> </span><span class=cF5>FifoU8Del</span><span class=cF0>(c->TX_fifo);
|
||||
<a name="l80"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l81"></a> c->RX_fifo=</span><span class=cF5>FifoU8New</span><span class=cF0>(256);
|
||||
<a name="l82"></a> c->TX_fifo=</span><span class=cF5>FifoU8New</span><span class=cF0>(256);
|
||||
<a name="l83"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_LCR,0); </span><span class=cF2>//Set for IER</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_IER,0); </span><span class=cF2>//Disable all IRQ</span><span class=cF0>
|
||||
<a name="l85"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_LCR,0x80); </span><span class=cF2>//Enable baud rate control</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_BRDL,</span><span class=cF7>(</span><span class=cF0>0x180/(baud/300)</span><span class=cF7>)</span><span class=cF0> & 0xFF); </span><span class=cF2>//LSB</span><span class=cF0>
|
||||
<a name="l87"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_BRDH,</span><span class=cF7>(</span><span class=cF0>0x180/(baud/300)</span><span class=cF7>)</span><span class=cF0> / 256); </span><span class=cF2>//MSB</span><span class=cF0>
|
||||
<a name="l88"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_LCR,3); </span><span class=cF2>//8-none-1</span><span class=cF0>
|
||||
<a name="l89"></a>
|
||||
<a name="l90"></a> </span><span class=cF5>InU8</span><span class=cF0>(c->base+UART_RDR); </span><span class=cF2>//read garbage</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF5>InU8</span><span class=cF0>(c->base+UART_LSR);
|
||||
<a name="l92"></a>
|
||||
<a name="l93"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_MCR,4);
|
||||
<a name="l94"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_IER,0); </span><span class=cF2>//Disable all IRQ</span><span class=cF0>
|
||||
<a name="l95"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_MCR,0xA); </span><span class=cF2>//out2 and rts</span><span class=cF0>
|
||||
<a name="l96"></a> </span><span class=cF5>OutU8</span><span class=cF0>(0x21,</span><span class=cF5>InU8</span><span class=cF7>(</span><span class=cF0>0x21</span><span class=cF7>)</span><span class=cF0> & </span><span class=cF7>(</span><span class=cF0>0xFF-0x18</span><span class=cF7>)</span><span class=cF0>); </span><span class=cF2>//Enable 8259 IRQ 3 & 4</span><span class=cF0>
|
||||
<a name="l97"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_IER,1); </span><span class=cF2>//RX but no THR empty</span><span class=cF0>
|
||||
<a name="l98"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l99"></a>
|
||||
<a name="l100"></a> </span><span class=cF1>return</span><span class=cF0> c;
|
||||
<a name="l101"></a>}
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> CommPutChar(</span><span class=cF9>I64</span><span class=cF0> port,</span><span class=cF1>U8</span><span class=cF0> b)
|
||||
<a name="l104"></a>{
|
||||
<a name="l105"></a> CComm *c=&comm_ports[port];
|
||||
<a name="l106"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l108"></a> </span><span class=cF5>FifoU8Ins</span><span class=cF0>(c->TX_fifo,b);
|
||||
<a name="l109"></a> </span><span class=cF5>OutU8</span><span class=cF0>(c->base+UART_IER,3); </span><span class=cF2>//RX and THR empty</span><span class=cF0>
|
||||
<a name="l110"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l111"></a> </span><span class=cF5>Sleep</span><span class=cF0>(10); </span><span class=cF2>//!!! Remove this line!!!</span><span class=cF0> </span><span class=cF2>Linux echo_socket is too slow.</span><span class=cF0>
|
||||
<a name="l112"></a>}
|
||||
<a name="l113"></a>
|
||||
<a name="l114"></a></span><span class=cF1>U0</span><span class=cF0> CommPutS(</span><span class=cF9>I64</span><span class=cF0> port,</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l115"></a>{
|
||||
<a name="l116"></a> </span><span class=cF9>I64</span><span class=cF0> b;
|
||||
<a name="l117"></a> </span><span class=cF1>while</span><span class=cF0> (b=*st++)
|
||||
<a name="l118"></a> CommPutChar(port,b);
|
||||
<a name="l119"></a>}
|
||||
<a name="l120"></a>
|
||||
<a name="l121"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> CommPutBlk(</span><span class=cF9>I64</span><span class=cF0> port,</span><span class=cF1>U8</span><span class=cF0> *buf,</span><span class=cF9>I64</span><span class=cF0> cnt)
|
||||
<a name="l122"></a>{
|
||||
<a name="l123"></a> </span><span class=cF1>while</span><span class=cF0> (cnt--)
|
||||
<a name="l124"></a> CommPutChar(port,*buf++);
|
||||
<a name="l125"></a>}
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> CommPrint(</span><span class=cF9>I64</span><span class=cF0> port,</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l128"></a>{
|
||||
<a name="l129"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l130"></a> CommPutS(port,buf);
|
||||
<a name="l131"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l132"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,44 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Compiler Index</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Doc/Asm.DD.HTML#l1"><span class=cF4>::/Doc/Asm.DD</span></a><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Doc/Directives.DD.HTML#l1"><span class=cF4>::/Doc/Directives.DD</span></a><span class=cF0>
|
||||
<a name="l6"></a></span><span class=cF4>
|
||||
<a name="l7"></a></span><a href="/Wb/Doc/Options.DD.HTML#l1"><span class=cF4>::/Doc/Options.DD</span></a><span class=cF0>
|
||||
<a name="l8"></a></span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Doc/PreProcessor.DD.HTML#l1"><span class=cF4>::/Doc/PreProcessor.DD</span></a><span class=cF0>
|
||||
<a name="l10"></a></span><span class=cF4>
|
||||
<a name="l11"></a></span><a href="/Wb/Doc/ScopingLinkage.DD.HTML#l1"><span class=cF4>::/Doc/ScopingLinkage.DD</span></a><span class=cF0>
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>See </span><a href="/Wb/Doc/HelloWorld.DD.HTML#l1"><span class=cF4>Hello World</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,113 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Credits</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>I, </span><span class=cF2>Terry A. Davis</span><span class=cF0>, wrote all of TempleOS over the past 20.6 years (full-time).
|
||||
<a name="l4"></a>It can run on some bare metal 64-bit PC's from about 2005-2010 with no layering,
|
||||
<a name="l5"></a>libraries, tools, modules or anything from other sources. Otherwise, you run it
|
||||
<a name="l6"></a>in a virtual machine, like </span><span class=cF2>VMware</span><span class=cF0>, </span><span class=cF2>QEMU</span><span class=cF0> or </span><span class=cF2>VirtualBox</span><span class=cF0>. It is independent and
|
||||
<a name="l7"></a>stands alone. It has no networking, so it certainly doesn't call home. 100% of
|
||||
<a name="l8"></a>the src code is including on all distro's, from the kernel to the compiler to
|
||||
<a name="l9"></a>the boot loaders! It is public domain, not GPL.
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>*) </span><a href="/Wb/Kernel/FontStd.HC.HTML#l1"><span class=cF4>::/Kernel/FontStd.HC</span></a><span class=cF0>, is taken from </span><a href="http://www.freedos.org"><span class=cF4>FreeDOS</span></a><span class=cF0>. It's public domain.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>*) </span><a href="/Wb/Kernel/FontCyrillic.HC.HTML#l1"><span class=cF4>::/Kernel/FontCyrillic.HC</span></a><span class=cF0>, is taken from </span><a href="http://www.orientdisplay.com/images/cyrillic-Russian-fonts.gif"><span class=cF4>OrientDisplay</span></a><span class=cF0> without permission.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>*) </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2269"><span class=cF4>ATA Reg and Cmd Definitions</span></a><span class=cF0> are originally from Linux. Later, I got the
|
||||
<a name="l16"></a>spec.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>*) The heap algorithm, </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l1"><span class=cF4>::/Kernel/Mem/MAllocFree.HC</span></a><span class=cF0>, is adapted from one I saw at
|
||||
<a name="l19"></a>Ticketmaster when I worked on their VAX operating system.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>*) The LZW compression algorithm, </span><a href="/Wb/Kernel/Compress.HC.HTML#l1"><span class=cF4>::/Kernel/Compress.HC</span></a><span class=cF0>, came from a magazine
|
||||
<a name="l22"></a>and I implemented it when I worked for Ticketmaster.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>*) The adaptive-step-size-Runge-Kutta algorithm, </span><a href="/Wb/Adam/AMathODE.HC.HTML#l1"><span class=cF4>::/Adam/AMathODE.HC</span></a><span class=cF0>, is adapted
|
||||
<a name="l25"></a>from the book, <u>Numeric Recipies in C</u>.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>*) The mountain in some games is from </span><a href="http://www.public-domain-photos.com"><span class=cF4>http://www.public-domain-photos.com</span></a><span class=cF0>. The
|
||||
<a name="l28"></a>wolf in BlackDiamond is also from there. I took watermarked photos and
|
||||
<a name="l29"></a>converted to 16 color.
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>*) The </span><span class=cF2>FAT32</span><span class=cF0> file system is owned by MicroSoft.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>*) A few features were inspired by </span><span class=cF2>MATLAB</span><span class=cF0>, such as </span><span class=cF2>ans</span><span class=cF0> in expressions at the
|
||||
<a name="l34"></a>command-line. There is a lot of </span><span class=cF2>MSDOS</span><span class=cF0> , </span><span class=cF2>Windows</span><span class=cF0>, </span><span class=cF2>VAXTMOS</span><span class=cF0> (VAX Ticketmaster
|
||||
<a name="l35"></a>O.S.) and </span><span class=cF2>Unix</span><span class=cF0> inspiration, too, such as drive letters, command names, etc.
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a>*) I included </span><a href="http://www.pcidatabase.com/reports.php?type=tab-delimeted"><span class=cF4>PCIDevice Lst File</span></a><span class=cF0>.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>*) Thanks to whoever wrote this </span><a href="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"><span class=cF4>CppHtml.HC.Z</span></a><span class=cF0>. I'm a novice on web stuff and you
|
||||
<a name="l40"></a>helped me with html. See </span><a href="/Wb/Demo/ToHtmlToTXTDemo/ToHtml.HC.HTML#l1"><span class=cF4>::/Demo/ToHtmlToTXTDemo/ToHtml.HC</span></a><span class=cF0>.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>*) I looked at bootable CD boot sects, but didn't learn anything, finding it
|
||||
<a name="l43"></a>easier to make my own.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>*) I think I got my original PC speaker code from </span><span class=cF2>Borland C</span><span class=cF0>.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>*) I found PS/2 keyboard and mouse code on the net and documentation. My code
|
||||
<a name="l48"></a>is very different. I found VGA reg info on the net.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a>*) Thanks to </span><a href="http://www.osdev.org"><span class=cF4>http://www.osdev.org</span></a><span class=cF0> for a couple tips.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>*) God told me to stick with 640x480 16 color and single-voice 8-bit signed
|
||||
<a name="l53"></a>MIDI-like sample for sound. He kept me from zombie-walking into making child
|
||||
<a name="l54"></a>windows like </span><span class=cF2>Windows</span><span class=cF0>. Instead, I made one window per task with no child
|
||||
<a name="l55"></a>windows. He also guided my progress, very obviously.
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a>*) I got </span><a href="http://www.templeos.org/files/DICTIONARY.DD"><span class=cF4>Webster's Dictionary</span></a><span class=cF0> and </span><a href="/Wb/Misc/Bible.TXT.HTML#l1"><span class=cF4>The King James Bible</span></a><span class=cF0> from </span><a href="http://web.archive.org/web/20110730111436/http://promo.net/pg/"><span class=cF4>Project Gutenberg</span></a><span class=cF0>.
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a>*) John Carmack inspired me to use "</span><a href="/Wb/Kernel/KMathB.HC.HTML#l1"><span class=cF4>Clamp</span></a><span class=cF0>" as a name instead of "Limit". He
|
||||
<a name="l60"></a>inspired me to use "needle" and "haystack" as names. He inspired me to simplify
|
||||
<a name="l61"></a>my Frames-Per-Second code.
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a>*) Bill Gates inspired me to add comments to my </span><a href="/Wb/Doc/HelpIndex.DD.HTML#l1"><span class=cF4>Help & Index</span></a><span class=cF0>.
|
||||
<a name="l64"></a>
|
||||
<a name="l65"></a>*) I hired an artist, Cody Rigby, for $3,000 worth of pixel art.
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>*) Erik van der Karbargenbok wrote /Downloads shell scripts -- gw.
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a>*) The random number generator is from Donald Knuth in the wikipedia entry for
|
||||
<a name="l70"></a></span><a href="http://en.wikipedia.org/wiki/Linear_congruential_generator"><span class=cF0>Linear_congruential_generator</span></a><span class=cF0>.
|
||||
<a name="l71"></a>
|
||||
<a name="l72"></a></span><span class=cF8>
|
||||
<a name="l73"></a>* "MSDOS", "Windows", "MovieMaker", "MS Paint" and "FAT32" are trademarks owned
|
||||
<a name="l74"></a>by MicroSoft Corp.
|
||||
<a name="l75"></a>* "SiteBuilder" is a trademark owned by Yahoo! Inc.
|
||||
<a name="l76"></a>* "MagicISO" is a trademark owned by MagicISO Corp.
|
||||
<a name="l77"></a>* "MATLAB" is a trademark owned by The Math Works, Inc.
|
||||
<a name="l78"></a>* "</span><a href="http://www.freedos.org"><span class=cF8>FreeDOS</span></a><span class=cF8>" is a trademark owned by Jim Hall.
|
||||
<a name="l79"></a>* "QEMU" is a trademark owned by Fabrice Bellard.
|
||||
<a name="l80"></a>* "VAX" is a trademark owned by Digital Equipment Corp.
|
||||
<a name="l81"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l82"></a>* "VAXTMOS" is a trademark owned by Ticketmaster.
|
||||
<a name="l83"></a></span></pre></body>
|
||||
</html>
|
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>To create a TempleOS graphic ctrl, you define callback functions and insert a </span><span class=cF4>
|
||||
<a name="l2"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3065"><span class=cF4>CCtrl</span></a><span class=cF0> structure in the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3271"><span class=cF4>CTask</span></a><span class=cF0> queue. See </span><a href="/Wb/Demo/Graphics/Slider.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Slider.HC</span></a><span class=cF0>, </span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Demo/Graphics/ScrollBars.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/ScrollBars.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/WallPaper.HC.HTML#l137"><span class=cF4>TermBttnNew</span></a><span class=cF0>. There is a template-code ctrl
|
||||
<a name="l4"></a>generator, if you press </span><span class=cF2><CTRL-SHIFT-L></span><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>
|
||||
<a name="l2"></a>* You can adjust the mouse movement rate by setting global vars in your start-up
|
||||
<a name="l3"></a>file. See </span><a href="/Wb/Home/HomeLocalize..HTML#l11"><span class=cF4>mouse scale</span></a><span class=cF0>.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>* You can set your local time zone by setting the </span><span class=cF4>local_time_offset</span><span class=cF0> global var
|
||||
<a name="l6"></a>in a start-up file. It's units are </span><a href="/Wb/Kernel/KernelA.HH.HTML#l571"><span class=cF4>CDATE_FREQ</span></a><span class=cF0>. See </span><a href="/Wb/Home/HomeLocalize..HTML#l8"><span class=cF4>local time</span></a><span class=cF0>.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>* Get rid of this msg </span><a href="/Wb/Home/Once..HTML#l42"><span class=cF4>here</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,69 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Cut Corners
|
||||
<a name="l2"></a></span><span class=cF0>
|
||||
<a name="l3"></a>There are a few places where I cut corners in the interest of not junking-up
|
||||
<a name="l4"></a>code. This is part of the TempleOS mentality. I try not to let stupid legacy
|
||||
<a name="l5"></a>compatibility issues enter and junk-up TempleOS.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>* I made my type-casting operator post-fix because it makes the compiler way
|
||||
<a name="l8"></a>cleaner.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>* TempleOS does not figure-out </span><span class=cF2>FAT32</span><span class=cF0> short name alias numbers. </span><a href="/Wb/Kernel/BlkDev/FileSysFAT.HC.HTML#l562"><span class=cF4>FAT32DirNew</span></a><span class=cF0>().
|
||||
<a name="l11"></a>It can cause hard drive corruption, so I might have to do it. It would really
|
||||
<a name="l12"></a>take a lot of junky code for this hatefully, detestable, legacy issue. "Please
|
||||
<a name="l13"></a>don't make me ruin my beautiful shiny-new TempleOS with that!" I am also not
|
||||
<a name="l14"></a>enthused about </span><span class=cF2>FAT32</span><span class=cF0> because it is in patent limbo. </span><span class=cF2>FAT32</span><span class=cF0> might get removed
|
||||
<a name="l15"></a>from TempleOS. There is the </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> 64-bit file system that works perfectly
|
||||
<a name="l16"></a>well. </span><span class=cF2>FAT32</span><span class=cF0> is useful, however, because it assists in transferring between dual
|
||||
<a name="l17"></a>booted operating systems.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>* I changed the </span><a href="/Wb/Compiler/OpCodes.DD.HTML#l1"><span class=cF4>asm opcodes</span></a><span class=cF0> names to remove the ambiguity between insts with
|
||||
<a name="l20"></a>different numbers of arguments, making my </span><a href="/Wb/Compiler/Asm.HC.HTML#l1"><span class=cF4>assembler</span></a><span class=cF0> simpler and I did minimal
|
||||
<a name="l21"></a>16-bit asm support, since 64-bit is what you should be using, unless you're
|
||||
<a name="l22"></a>doing a </span><a href="/Wb/Adam/Opt/Boot/BootDVD.HC.HTML#l1"><span class=cF4>boot loader</span></a><span class=cF0>.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>* There are no user-controlled file-sharing locks. However, the drive and file
|
||||
<a name="l25"></a>system have locks and concurrent operations should be fine.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>* A hidden window is never refreshed. Certain tasks are never done, therefore.
|
||||
<a name="l28"></a>During refresh, the entry count limit of the document buffer is, normally,
|
||||
<a name="l29"></a>checked and enforced. If you print to the command-line in a task whose window
|
||||
<a name="l30"></a>is covered, no limit on buffer exists and it will alloc memory for the document
|
||||
<a name="l31"></a>buffer until the system runs out of memory and crashes.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>* Even if a local function variable is declared less than 64 bits, the compiler
|
||||
<a name="l34"></a>does calculations with 64-bit.
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>* </span><a href="/Wb/Doc/Print.DD.HTML#l1"><span class=cF4>Print</span></a><span class=cF0>() uses </span><a href="/Wb/Kernel/StrPrint.HC.HTML#l208"><span class=cF4>StrPrintJoin</span></a><span class=cF0>(). You cannot use vastly over-sized fields for %f.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a>* </span><a href="/Wb/Adam/Gr/GrPrimatives.HC.HTML#l852"><span class=cF4>GrEllipse3</span></a><span class=cF0>() is broken on transformations.
|
||||
<a name="l39"></a> </span></pre></body>
|
||||
</html>
|
@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>TempleOS has a class for 3 dimensional points consisting of F64s. HolyC is not
|
||||
<a name="l2"></a>C++ -- it does not support passing or returning values from functions which are
|
||||
<a name="l3"></a>not 64-bits, therefore, it can't be implemented with operator overloading.
|
||||
<a name="l4"></a>Making all function args and returns 64-bit is a core prinicple of TempleOS.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>As a courtesy, most of the CD3 functions return the addr of the destination
|
||||
<a name="l7"></a>vect, so you can nestle calls. They do not alloc new space for the destination
|
||||
<a name="l8"></a>vect.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Dates are 32-bit signed ints representing the number of days since the birth of
|
||||
<a name="l2"></a>Christ. Negative values represent B.C.E. dates.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Use </span><span class=cF2>%p</span><span class=cF0> to print a pointer with FunSeg+Offset or use </span><span class=cF2>%P</span><span class=cF0> to print a link to a
|
||||
<a name="l2"></a>FunSeg+Offset.
|
||||
<a name="l3"></a> </span></pre></body>
|
||||
</html>
|
@ -1,102 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Debugging Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>* You can enter the debugger with </span><a href="/Wb/Kernel/KDbg.HC.HTML#l649"><span class=cF4>Dbg</span></a><span class=cF0>() or </span><span class=cF2><CTRL-ALT-d></span><span class=cF0>. You might enter the
|
||||
<a name="l4"></a>debugger through a fault. Enter </span><a href="/Wb/Kernel/KDbg.HC.HTML#l444"><span class=cF4>G</span></a><span class=cF0>() or </span><a href="/Wb/Kernel/KDbg.HC.HTML#l469"><span class=cF4>G2</span></a><span class=cF0>() to continue execution. Place a
|
||||
<a name="l5"></a>call to </span><a href="/Wb/Kernel/KDbg.HC.HTML#l649"><span class=cF4>Dbg</span></a><span class=cF0>() in your code at fatal error points to enter the debugger. If you
|
||||
<a name="l6"></a>see a stk dump, record the label+offset and unassemble, </span><a href="/Wb/Compiler/UAsm.HC.HTML#l653"><span class=cF4>U</span></a><span class=cF0>(). </span><a href="/Wb/Compiler/UAsm.HC.HTML#l653"><span class=cF4>U</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l3377"><span class=cF4>_RIP</span></a><span class=cF0>);
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>* </span><a href="/Wb/Compiler/UAsm.HC.HTML#l653"><span class=cF4>U</span></a><span class=cF0>(&FunName+offset) to unassemble mem or </span><a href="/Wb/Adam/ADbg.HC.HTML#l254"><span class=cF4>Uf</span></a><span class=cF0>("FunName") to unassemble a
|
||||
<a name="l9"></a>function. </span><a href="/Wb/Compiler/UAsm.HC.HTML#l653"><span class=cF4>U</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l3377"><span class=cF4>_RIP</span></a><span class=cF0>-16);
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>* While debugging, you specify addresses of assembly routines with just the
|
||||
<a name="l12"></a>label, as in </span><span class=cF2>_MALLOC+0x20</span><span class=cF0>. You specify </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> function names with </span><span class=cF2>&</span><span class=cF0> before
|
||||
<a name="l13"></a>functions as in </span><span class=cF2>&Print+0x10</span><span class=cF0>.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>* I use </span><a href="/Wb/Kernel/KernelB.HH.HTML#l209"><span class=cF4>progress1</span></a><span class=cF0>-</span><a href="/Wb/Kernel/KernelB.HH.HTML#l227"><span class=cF4>progress4</span></a><span class=cF0> for debugging because they show on the wallpaper.
|
||||
<a name="l16"></a>They're just global int vars.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>* You can use </span><a href="/Wb/Kernel/Job.HC.HTML#l423"><span class=cF4>AdamLog</span></a><span class=cF0>() to send text to the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> window. It works like </span><span class=cF4>
|
||||
<a name="l19"></a></span><a href="/Wb/Kernel/StrPrint.HC.HTML#l890"><span class=cF4>Print</span></a><span class=cF0>(). I never use that. Instead, I use </span><a href="/Wb/Kernel/KDbg.HC.HTML#l217"><span class=cF4>RawPrint</span></a><span class=cF0>().
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>* </span><a href="/Wb/Kernel/KDbg.HC.HTML#l172"><span class=cF4>D</span></a><span class=cF0>(), </span><a href="/Wb/Adam/DolDoc/DocPutS.HC.HTML#l325"><span class=cF4>DocD</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/KDbg.HC.HTML#l234"><span class=cF4>RawD</span></a><span class=cF0>() to do 16 column hex dump mem with numbering from zero.
|
||||
<a name="l22"></a>With </span><a href="/Wb/Adam/DolDoc/DocPutS.HC.HTML#l325"><span class=cF4>DocD</span></a><span class=cF0> the values are updated continually and you can alter mem by editing.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>* </span><a href="/Wb/Kernel/KDbg.HC.HTML#l204"><span class=cF4>Dm</span></a><span class=cF0>(), </span><a href="/Wb/Adam/DolDoc/DocPutS.HC.HTML#l312"><span class=cF4>DocDm</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/KDbg.HC.HTML#l250"><span class=cF4>RawDm</span></a><span class=cF0>() to do 16 column hex dump mem with addresses showing.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>* </span><a href="/Wb/Kernel/KDbg.HC.HTML#l209"><span class=cF4>Da</span></a><span class=cF0>() to do one column address dump (for stk, etc.) with symbolic addresses.
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>* </span><a href="/Wb/Kernel/KDbg.HC.HTML#l328"><span class=cF4>Dr</span></a><span class=cF0>() dumps regs. You can display and modify regs in the debugger with
|
||||
<a name="l29"></a>var-like labels, </span><span class=cF4>_RAX</span><span class=cF0>, </span><span class=cF4>_RBX</span><span class=cF0>, etc.
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>* </span><a href="/Wb/Adam/ADbg.HC.HTML#l161"><span class=cF4>ClassRep</span></a><span class=cF0>() and the dynamic version </span><a href="/Wb/Adam/ADbg.HC.HTML#l183"><span class=cF4>ClassRepD</span></a><span class=cF0>() can be used to dump structures.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>* </span><a href="/Wb/Adam/Opt/Utils/Profiler.HC.HTML#l27"><span class=cF4>Prof</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Opt/Utils/Profiler.HC.HTML#l57"><span class=cF4>ProfRep</span></a><span class=cF0>() provide code profiling. See </span><a href="/Wb/Demo/InFile/InProfile.IN.HTML#l1"><span class=cF4>::/Demo/InFile/InProfile.IN</span></a><span class=cF0>
|
||||
<a name="l34"></a>(This is an </span><a href="/Wb/Doc/Glossary.DD.HTML#l260"><span class=cF4>InFile</span></a><span class=cF0>.)
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>* Use </span><a href="/Wb/Kernel/KDbg.HC.HTML#l217"><span class=cF4>RawPrint</span></a><span class=cF0>() to print debug info bypassing the window framework. You pass
|
||||
<a name="l37"></a>these routines a count in milliseconds for how long it should be displayed. You
|
||||
<a name="l38"></a>can use </span><a href="/Wb/Kernel/KMisc.HC.HTML#l290"><span class=cF4>Raw</span></a><span class=cF0>(</span><span class=cF2>TRUE</span><span class=cF0>) to make all output bypass the window framework. The </span><span class=cF2>WinMgr</span><span class=cF0>
|
||||
<a name="l39"></a>runs on </span><span class=cF2>Core0</span><span class=cF0> and will overwrite raw text from other cores when it updates the
|
||||
<a name="l40"></a>scrn.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>* Use </span><a href="/Wb/Kernel/KMisc.HC.HTML#l280"><span class=cF4>SysDbg</span></a><span class=cF0>() to set a flag which you can read with </span><a href="/Wb/Kernel/KMisc.HC.HTML#l285"><span class=cF4>IsSysDbg</span></a><span class=cF0>() when you wish to
|
||||
<a name="l43"></a>trigger some debug activity. It's just a handy simple flag, nothing fancy.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>* There are flags for various trace options that can help debugging when there
|
||||
<a name="l46"></a>are compiler bugs. Often, you place them in </span><span class=cF2>#exe{}</span><span class=cF0> blocks.
|
||||
<a name="l47"></a> </span><span class=cF4>
|
||||
<a name="l48"></a> </span><a href="/Wb/Compiler/CMisc.HC.HTML#l63"><span class=cF4>Echo</span></a><span class=cF0>() turns on or off raw data going into the lexical analyzer.
|
||||
<a name="l49"></a> </span><span class=cF4>
|
||||
<a name="l50"></a> </span><a href="/Wb/Compiler/CMisc.HC.HTML#l58"><span class=cF4>Trace</span></a><span class=cF0>() unassembles code generated from the HolyC compiler.
|
||||
<a name="l51"></a> </span><span class=cF4>
|
||||
<a name="l52"></a> </span><a href="/Wb/Compiler/CMisc.HC.HTML#l50"><span class=cF4>PassTrace</span></a><span class=cF0>() shows intermediate code coming-out after optimization. The bits
|
||||
<a name="l53"></a> ctrl which passes are displayed.
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>* There is a heap check utility which can find leaks. Use </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l73"><span class=cF4>HeapLog</span></a><span class=cF0>(), </span><span class=cF4>
|
||||
<a name="l57"></a></span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l115"><span class=cF4>HeapLogAddrRep</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l146"><span class=cF4>HeapLogSizeRep</span></a><span class=cF0>(). It's a really simple program which
|
||||
<a name="l58"></a>intercepts </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l383"><span class=cF4>Free</span></a><span class=cF0>(). You can customize the code to find other heap
|
||||
<a name="l59"></a>issues.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>* You can define hndlr functions for </span><span class=cF2><CTRL-ALT-letter></span><span class=cF0> keys with </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l178"><span class=cF4>CtrlAltCBSet</span></a><span class=cF0>().
|
||||
<a name="l62"></a> They operate either in a interrupt environment or in the window mgr when it
|
||||
<a name="l63"></a>queues kbd msgs. You can do </span><a href="/Wb/Kernel/KMisc.HC.HTML#l290"><span class=cF4>Raw</span></a><span class=cF0>() output. </span><span class=cF2><CTRL-ALT-letter></span><span class=cF0> hndlrs take a
|
||||
<a name="l64"></a>scan_code as an arg.
|
||||
<a name="l65"></a>
|
||||
<a name="l66"></a>* If you recompile </span><span class=cF2>Kernel</span><span class=cF0> with </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(), you can set the </span><span class=cF4>MemInit</span><span class=cF0>, option to
|
||||
<a name="l67"></a>initialize memory to a value at boot, the </span><span class=cF4>HeapInit</span><span class=cF0> option to cause mem alloced
|
||||
<a name="l68"></a>off the heap to be initialized or </span><span class=cF4>VarInit</span><span class=cF0> option so both global and local vars
|
||||
<a name="l69"></a>will be initialized to a value, but global AOT variables are always zero if not
|
||||
<a name="l70"></a>initialized. Pick a non-zero value to discover uninitialized var bugs. You can
|
||||
<a name="l71"></a>set </span><a href="/Wb/Kernel/KernelB.HH.HTML#l186"><span class=cF4>sys_var_init_flag</span></a><span class=cF0>, and </span><a href="/Wb/Kernel/KernelB.HH.HTML#l181"><span class=cF4>sys_heap_init_flag</span></a><span class=cF0> directly after booting.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,47 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>TempleOS has a string indirection feature implemented with the same hash symbol
|
||||
<a name="l2"></a>table entry as </span><span class=cF2>#define</span><span class=cF0> macros, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l688"><span class=cF4>HTT_DEFINE_STR</span></a><span class=cF0>. Support for string lists is also
|
||||
<a name="l3"></a>provided, but it's not very efficient, though, you can make a hash table with a
|
||||
<a name="l4"></a>list using </span><a href="/Wb/Kernel/KHashB.HC.HTML#l206"><span class=cF4>HashDefineLstAdd</span></a><span class=cF0>(). See </span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l23"><span class=cF4>::/Adam/DolDoc/DocInit.HC</span></a><span class=cF0>.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>If you have an </span><span class=cF2>@</span><span class=cF0> as the first char of a define list entry, it is an alias for
|
||||
<a name="l7"></a>the prev entry num.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>Each task can load its own Define strings. Remember, when a </span><span class=cF4><u>Hash</u></span><span class=cF0> table is
|
||||
<a name="l10"></a>searched for a string, if it is not found, the parent task's table is searched.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>The </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> framework supports text that changes based on entries in the task's
|
||||
<a name="l13"></a>symbol table. Set a text entry with a </span><span class=cF2>D=</span><span class=cF0> arg, as in </span><span class=cF2>$TX,"",D="DD_MYSTRING"$</span><span class=cF0>.
|
||||
<a name="l14"></a>See </span><a href="/Wb/Demo/DolDoc/DefineStr.HC.HTML#l1"><span class=cF4>::/Demo/DolDoc/DefineStr.HC</span></a><span class=cF0>, </span><a href="/Wb/Adam/ADefine.HC.HTML#l1"><span class=cF4>::/Adam/ADefine.HC</span></a><span class=cF0> and </span><a href="/Wb/Doc/MemOverview.DD.HTML#l1"><span class=cF4>::/Doc/MemOverview.DD</span></a><span class=cF0>.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>See </span><a href="/Wb/Demo/Define.HC.HTML#l1"><span class=cF4>::/Demo/Define.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,150 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Demands</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>I, Terry Davis, am high priest of God's </span><a href="http://www.jewishvirtuallibrary.org/jsource/Judaism/The_Temple.html"><span class=cF4>official third temple</span></a><span class=cF0>, TempleOS.
|
||||
<a name="l4"></a>TempleOS is an operating system for IBM PC x86_64 desktops that will always dual
|
||||
<a name="l5"></a>boot along-side Windows or Linux. I am in charge of the core 100,000 lines of
|
||||
<a name="l6"></a>TempleOS code and I do continual offerings to keep God entertained. I have
|
||||
<a name="l7"></a>divine authority to command any company in the computer industry to do anything
|
||||
<a name="l8"></a>that I deem necessary to make God's temple more beautiful, glorious and perfect.
|
||||
<a name="l9"></a>I have oversight authority similar to a building inspector or a person enforcing
|
||||
<a name="l10"></a>the Americans with Disability Act -- I make commands, God signs-off with a
|
||||
<a name="l11"></a>miraculous authentication from an oracle, and Intel, Microsoft or VMware obeys.
|
||||
<a name="l12"></a></span><span class=cFA>
|
||||
<a name="l13"></a></span><object width="640" height="520"><param name="movie" value="http://www.youtube.com/v/RvL7T4gIJN8"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/RvL7T4gIJN8" type="application/x-shockwave-flash" allowscriptaccess="always" width="640" height="520"></embed></object><span class=cF0>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>* Windows, Linux and VMware (because of mounted drives) must support </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file
|
||||
<a name="l16"></a>system when mounting partition, so I can get rid of 1,000 lines of redundant,
|
||||
<a name="l17"></a>blemished code -- FAT32. God's temple must be perfect. Redundant code for
|
||||
<a name="l18"></a>multiple file systems is bad and imperfect. For this operating system, we want
|
||||
<a name="l19"></a>low line count. More than one driver for the same type of device is also bad.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>See </span><a href="/Wb/Kernel/BlkDev/FileSysRedSea.HC.HTML#l1"><span class=cF4>::/Kernel/BlkDev/FileSysRedSea.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/Opt/Boot/DskISORedSea.HC.HTML#l1"><span class=cF4>::/Adam/Opt/Boot/DskISORedSea.HC</span></a><span class=cF0>.
|
||||
<a name="l22"></a></span><span class=cF4>
|
||||
<a name="l23"></a></span><a href="/Wb/Kernel/BlkDev/FileSysFAT.HC.HTML#l1"><span class=cF4>::/Kernel/BlkDev/FileSysFAT.HC</span></a><span class=cF0> :974 lines for FAT32 gets eliminated.</span><span class=cF4>
|
||||
<a name="l24"></a></span><a href="/Wb/Kernel/BlkDev/DskClus.HC.HTML#l1"><span class=cF4>::/Kernel/BlkDev/DskClus.HC</span></a><span class=cF0> :152 All the clus operations become blk.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>* Microsoft must cancel SecureBoot because it makes dual booting impossible.
|
||||
<a name="l27"></a>TempleOS is an additional operating system that must be used along-side Windows
|
||||
<a name="l28"></a>or Linux, not as a replacement. It must dual boot because it has no networking.
|
||||
<a name="l29"></a>Real hardware as opposed to VMware is like the difference between looking in a
|
||||
<a name="l30"></a>telescope eye piece vs just looking at an off-line image. God said the
|
||||
<a name="l31"></a>C64/Apple II generation owned ancestral lands. VMware is like being taken off
|
||||
<a name="l32"></a>of our land and moved onto a reservation. In this case, however, it will not
|
||||
<a name="l33"></a>stand. In fact, God said to replace Windows with Wine, justice. We can make a
|
||||
<a name="l34"></a>100% standard model PC with a standard software for everyone, backed-up in
|
||||
<a name="l35"></a>factory ROM.
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a>* VMware needs to support ATAPI CD/DVD/Blu-ray disk burning, directly to real
|
||||
<a name="l38"></a>hardware. Industry needs write-just once media to stop Farenheit 451 non-sense.
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a>* VMware has a bug stretching 640x480 16 color to full screen.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>* VMware some PC speaker's distortion is a good idea -- squarewave -- but
|
||||
<a name="l43"></a>currently there is too much for hymns. CIA monkery made fart noises.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>* VMware and others must list TempleOS as an official 64-bit operating system
|
||||
<a name="l46"></a>and automatically enforce 512 Meg min RAM requirement.
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a>* VMware needs to support more than 16 cores. I had a 24 core Xeon with 128 Gig
|
||||
<a name="l49"></a>of RAM. I discovered VMware allocates memory too slowly, where QEMU had no
|
||||
<a name="l50"></a>problem.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>* Until super-simple block devices are available, hard disk should be placed at
|
||||
<a name="l53"></a>IDE primary master 1F0/3F6 and CD/DVD/Blu-ray should be placed at the IDE
|
||||
<a name="l54"></a>secondary master 170/376. Currently, the wicked CIA plays musical chairs with
|
||||
<a name="l55"></a>controllers each time you make an install. With tons of ugly code, I do my
|
||||
<a name="l56"></a>best.</span><span class=cF4>
|
||||
<a name="l57"></a></span><a href="/Wb/Kernel/BlkDev/DskATAId.HC.HTML#l1"><span class=cF4>/Kernel/BlkDev/DskATAId.HC</span></a><span class=cF0> :286 lines to figure-out I/O ports is gone.</span><span class=cF4>
|
||||
<a name="l58"></a></span><a href="/Wb/Kernel/PCIBIOS.HC.HTML#l1"><span class=cF4>/Kernel/PCIBIOS.HC</span></a><span class=cF0> :290 could be eliminated, but maybe we will keep
|
||||
<a name="l59"></a>it so people can play with PCI devices.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>* Until super-simple serial ports are available, PS/2 emulated keyboard and
|
||||
<a name="l62"></a>mouse must work. The BIOS must enable these. The plan is to transition the
|
||||
<a name="l63"></a>industry off of USB. Interum solution is to make virtual RS232 Octart for USB
|
||||
<a name="l64"></a>devices in the same way PS/2 mouse is emulated. All mice will be two button,
|
||||
<a name="l65"></a>one wheel. No more HID insanity, no more multi-end point, just simple tx rx
|
||||
<a name="l66"></a>fifos with soft/hard flowcontrol that can jump the queue. People with special
|
||||
<a name="l67"></a>needs can buy PCI cards. Our kids deserve code this simple </span><a href="/Wb/Doc/Comm.HC.HTML#l1"><span class=cF4>::/Doc/Comm.HC</span></a><span class=cF0>. The
|
||||
<a name="l68"></a>right to do your own port banging is what the C64 being our God given ancestral
|
||||
<a name="l69"></a>land means.
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a>* The x86 IN/OUT port instructions, normally have a delay. Perhaps, VMware &
|
||||
<a name="l72"></a>Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so
|
||||
<a name="l73"></a>bandwidth isn't as bad when doing port I/O. See </span><a href="/Wb/Kernel/BlkDev/DskATA.HC.HTML#l67"><span class=cF4>ATAGetRes</span></a><span class=cF0>(). We don't want to
|
||||
<a name="l74"></a>do DMA. Perhaps, x86 CPU chips need a new TempleOS mode for fast IN/OUT
|
||||
<a name="l75"></a>instructions? I think VMware already does something to speed disk I/O to faster
|
||||
<a name="l76"></a>than native speed.
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a>* Perhaps, a new interrupt descriptor table entry type or a new x86 CPU mode can
|
||||
<a name="l79"></a>be made that cause fast software interrupts, doing exactly what the CALL REL32
|
||||
<a name="l80"></a>does, but with IDT as indirection. We don't need to change privilege levels or
|
||||
<a name="l81"></a>stacks.
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a>* Since I don't use paging (for anything), Intel should have an option for
|
||||
<a name="l84"></a>no-paging long mode, and optimize it!</span><span class=cF4>
|
||||
<a name="l85"></a></span><a href="/Wb/Kernel/Mem/PageTables.HC.HTML#l1"><span class=cF4>::/Kernel/Mem/PageTables.HC</span></a><span class=cF0> :135 lines to identity-map gets eliminated.
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a>* Desktop computers must have a reset switch and a fast reboot option, skipping
|
||||
<a name="l88"></a>diagnostics. I recommend booting TempleOS from a ROM when the reset bttn is
|
||||
<a name="l89"></a>pressed and booting UEFI when the power bttn is pressed. Or, we could build
|
||||
<a name="l90"></a>UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM in the factory
|
||||
<a name="l91"></a>for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because
|
||||
<a name="l92"></a>God deserves the glory. There will be just an English version. A new ROM
|
||||
<a name="l93"></a>version is released every seven years. The ROM should boot like the DVD boots,
|
||||
<a name="l94"></a>but with </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3840"><span class=cF4>BOOT_SRC_ROM</span></a><span class=cF0>.
|
||||
<a name="l95"></a>
|
||||
<a name="l96"></a>* We do not want UTF, just 8-bit characters. </span><span class=cF2><CTRL-ALT-f></span><span class=cF0> toggles between
|
||||
<a name="l97"></a>Cyrillic and Std Fonts. We need the twelve window </span><a href="/Wb/Adam/Gr/GrTextBase.HC.HTML#l329"><span class=cF4>TextBorder</span></a><span class=cF0> characters added
|
||||
<a name="l98"></a>to the VGA font 0x02-0x0D. Japan, China and Korea must switch to alphabets.
|
||||
<a name="l99"></a>Maybe, the United States will change to metric, out of good will. I am
|
||||
<a name="l100"></a>beginning to plan fresh ASCII replacement, </span><a href="/Wb/Doc/NewASCII.DD.HTML#l1"><span class=cF4>::/Doc/NewASCII.DD</span></a><span class=cF0>.
|
||||
<a name="l101"></a>
|
||||
<a name="l102"></a>* Microsoft Paint and Linux's Gimp must support TempleOS </span><a href="/Wb/Doc/GRFiles.DD.HTML#l1"><span class=cF4>GR Files</span></a><span class=cF0>. They are
|
||||
<a name="l103"></a>blemish free, unlike </span><a href="http://en.wikipedia.org/wiki/BMP_file_format"><span class=cF0>BMP files</span></a><span class=cF0>. The TOSZ Linux utility can be used to make
|
||||
<a name="l104"></a>screencasts from TempleOS exported </span><a href="/Wb/Doc/GRFiles.DD.HTML#l1"><span class=cF4>GR Files</span></a><span class=cF0> and AU Files.
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a>* We must have a nice dictionary. Someone needs to do a </span><a href="/Wb/Demo/SuggestSpelling.HC.HTML#l1"><span class=cF4>Spell Checker</span></a><span class=cF0>, too.
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a>* Intel needs to make </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> versions of its x86 CPU data sheets documenting all
|
||||
<a name="l109"></a>hardware relevant to TempleOS.
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a>* We must have the ultimate Bible search engine. Currently, all we have is
|
||||
<a name="l112"></a></span><a href="https://www.youtube.com/watch?v=ULJU8DzvQFo"><span class=cF0>filter search</span></a><span class=cF0>. In the end, it should be a low line-count technique. Maybe, I
|
||||
<a name="l113"></a>allocate 500 lines out of the 20,000 reserve.
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a>* We will make a </span><a href="/Wb/Doc/StdTempleOSPC.DD.HTML#l1"><span class=cF4>Standard TempleOS PC</span></a><span class=cF0>.
|
||||
<a name="l116"></a></span><span class=cF8>
|
||||
<a name="l117"></a>* "VMware" is a trademark owned by VMware, Inc.
|
||||
<a name="l118"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l119"></a>* "Windows" and "Paint" are trademarks owned by MicroSoft Corp.</span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> TempleOS Demo Index</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>These are arranged in increasing order of difficulty, more or less. This can be
|
||||
<a name="l4"></a>used as a tutorial if you start at the beginning and work your way fwd.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF2><SPACE></span><span class=cF0> to edit a file and </span><span class=cF2><F5></span><span class=cF0> to run it.
|
||||
<a name="l7"></a></span><span class=cF4>
|
||||
<a name="l8"></a></span><a href="/Wb/Doc/HelloWorld.DD.HTML#l1"><span class=cF4>::/Doc/HelloWorld.DD</span></a><span class=cF0>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF5>+] Games: Beginner
|
||||
<a name="l11"></a>+] Games: Intermediate
|
||||
<a name="l12"></a>+] Games: Advanced
|
||||
<a name="l13"></a>+] Non-Game
|
||||
<a name="l14"></a>+] TempleOS Specific</span><span class=cF0>
|
||||
<a name="l15"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__DATE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>"\"%D\""</span><span class=cF0>,</span><span class=cF5>Now</span><span class=cF0>);}
|
||||
<a name="l2"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__TIME__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>"\"%T\""</span><span class=cF0>,</span><span class=cF5>Now</span><span class=cF0>);}
|
||||
<a name="l3"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__LINE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>"%d"</span><span class=cF0>,</span><span class=cF5>Fs</span><span class=cF0>->last_cc->lex_include_stk->line_num);}
|
||||
<a name="l4"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__CMD_LINE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>"%d"</span><span class=cF0>,</span><span class=cF5>Fs</span><span class=cF0>->last_cc->flags&</span><span class=cF3>CCF_CMD_LINE</span><span class=cF0> && </span><span class=cF5>Fs</span><span class=cF0>->last_cc->lex_include_stk->depth<1);}
|
||||
<a name="l5"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__FILE__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamPrint</span><span class=cF0>(</span><span class=cF6>"\"%s\""</span><span class=cF0>,</span><span class=cF5>Fs</span><span class=cF0>->last_cc->lex_include_stk->full_name);}
|
||||
<a name="l6"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>__DIR__</span><span class=cF0> #</span><span class=cF1>exe</span><span class=cF0>{</span><span class=cF5>StreamDir</span><span class=cF0>;}
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>See </span><a href="/Wb/Demo/Directives.HC.HTML#l1"><span class=cF4>::/Demo/Directives.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>A </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> in memory is a </span><span class=cF4><u>Circular Queue</u></span><span class=cF0> of cmds and graphics. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1191"><span class=cF4>CDocEntry</span></a><span class=cF0> for
|
||||
<a name="l2"></a>the entry structure. See </span><a href="/Wb/Adam/Training.HC.HTML#l161"><span class=cF4>TipOfDay</span></a><span class=cF0>() for a nice example.
|
||||
<a name="l3"></a></span><span class=cF4>
|
||||
<a name="l4"></a></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0>'s are used for the editor, viewer, browser, and cmd line.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,151 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.c0F{color:#ffffff;background-color:#000000;}
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> DolDoc Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>DolDoc is a TempleOS document type supported by </span><span class=cF4><u>DolDoc Routines</u></span><span class=cF0>. In a document,
|
||||
<a name="l4"></a>commands are bracketed with '</span><span class=cF2>$</span><span class=cF0>'s. Use </span><span class=cF2><CTRL-l></span><span class=cF0> to experiment inserting a
|
||||
<a name="l5"></a>command. Then, use </span><span class=cF2><CTRL-t></span><span class=cF0> to toggle to plain text to see it.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>Here is the grammar:
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a><DolDocCmd> := </span><span class=cF2>$</span><span class=cF0><</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l9"><span class=cF4>TwoLetterCmd</span></a><span class=cF0>>[<FlagList>][</span><span class=cF2>,</span><span class=cF0><ArgList>]</span><span class=cF2>$</span><span class=cF0> | </span><span class=cF2>$</span><a href="/Wb/Kernel/KDefine.HC.HTML#l118"><span class=cF4>ColorName</span></a><span class=cF2>$</span><span class=cF0>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a><FlagList> := </span><span class=cF2>+</span><span class=cF0>|</span><span class=cF2>-</span><span class=cF0> <</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l13"><span class=cF4>FlagCode</span></a><span class=cF0>>[<FlagList>]
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a><ArgList> := <</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l13"><span class=cF4>ArgCode</span></a><span class=cF0>></span><span class=cF2>=</span><span class=cF0><ArgExpression>[</span><span class=cF2>,</span><span class=cF0><ArgList>]
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>The format of DolDoc cmds is a two character code, +/-flags, a comma and args
|
||||
<a name="l17"></a>separated by commas. Some commands have mandatory args. Optional args are
|
||||
<a name="l18"></a>indicated with <</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l13"><span class=cF4>ArgCode</span></a><span class=cF0>></span><span class=cF2>=</span><span class=cF0>. A </span><a href="/Wb/Kernel/KDefine.HC.HTML#l118"><span class=cF4>ColorName</span></a><span class=cF0> bracked by dollars, will change the
|
||||
<a name="l19"></a>foreground color.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>See </span><a href="/Wb/Doc/Widget.DD.HTML#l1"><span class=cF4>::/Doc/Widget.DD</span></a><span class=cF0>, </span><a href="/Wb/Demo/DolDoc/DemoDoc.DD.HTML#l1"><span class=cF4>::/Demo/DolDoc/DemoDoc.DD</span></a><span class=cF0>, and </span><span class=cF4>
|
||||
<a name="l22"></a></span><a href="/Wb/Demo/ToHtmlToTXTDemo/ToHtml.HC.HTML#l1"><span class=cF4>::/Demo/ToHtmlToTXTDemo/ToHtml.HC</span></a><span class=cF0>.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a><</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l9"><span class=cF4>TwoLetterCmd</span></a><span class=cF0>> See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l904"><span class=cF4>Type Defines</span></a><span class=cF0> and </span><a href="/Wb/Adam/DolDoc/DocPlain.HC.HTML#l217"><span class=cF4>PrsDollarCmd</span></a><span class=cF0>().</span><span class=cF5>
|
||||
<a name="l25"></a><u>+] TX Text
|
||||
<a name="l26"></a>+] CR Hard New Line
|
||||
<a name="l27"></a>+] SR Soft New Line
|
||||
<a name="l28"></a>+] CU Cursor pos
|
||||
<a name="l29"></a>+] TB Tab
|
||||
<a name="l30"></a>+] CL Clear
|
||||
<a name="l31"></a>+] PB Page Break
|
||||
<a name="l32"></a>+] PL Page Length
|
||||
<a name="l33"></a>+] LM Left Margin
|
||||
<a name="l34"></a>+] RM Right Margin
|
||||
<a name="l35"></a>+] HD Header
|
||||
<a name="l36"></a>+] FO Footer
|
||||
<a name="l37"></a>+] ID Indent +/- num
|
||||
<a name="l38"></a>+] Text Colors
|
||||
<a name="l39"></a>+] PT User Prompt
|
||||
<a name="l40"></a>+] WW Word Wrap
|
||||
<a name="l41"></a>+] UL Underline
|
||||
<a name="l42"></a>+] IV Invert
|
||||
<a name="l43"></a>+] BK Blink
|
||||
<a name="l44"></a>+] SX Shift X pos
|
||||
<a name="l45"></a>+] SY Shift Y pos
|
||||
<a name="l46"></a>+] CM Cursor Movement
|
||||
<a name="l47"></a>+] AN Anchor
|
||||
<a name="l48"></a>+] LK Link
|
||||
<a name="l49"></a>+] BT Bttn
|
||||
<a name="l50"></a>+] DA Data
|
||||
<a name="l51"></a>+] CB Check Box
|
||||
<a name="l52"></a>+] LS List Widget
|
||||
<a name="l53"></a>+] MA Macro
|
||||
<a name="l54"></a>+] MU Menu Value
|
||||
<a name="l55"></a>+] HX Hex Edit
|
||||
<a name="l56"></a>+] TR Tree Widget
|
||||
<a name="l57"></a>+] SP Sprite
|
||||
<a name="l58"></a>+] IB Insert Binary
|
||||
<a name="l59"></a>+] IS Insert Binary Size
|
||||
<a name="l60"></a>+] SO Song
|
||||
<a name="l61"></a>+] HL Highlighting
|
||||
<a name="l62"></a>+] HC html
|
||||
<a name="l63"></a>+] ER Error</span><span class=cF0>
|
||||
<a name="l64"></a>
|
||||
<a name="l65"></a></u><</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l13"><span class=cF4>FlagCode</span></a><span class=cF0>> See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1075"><span class=cF4>Flag Defines</span></a><span class=cF0> and </span><a href="/Wb/Doc/Widget.DD.HTML#l1"><span class=cF4>Simple Flags</span></a><span class=cF0>.</span><span class=cF5>
|
||||
<a name="l66"></a><u>+] +H Hold
|
||||
<a name="l67"></a>+] +L Link
|
||||
<a name="l68"></a>+] +TR Tree
|
||||
<a name="l69"></a>+] +LS List
|
||||
<a name="l70"></a>+] +PU PopUp
|
||||
<a name="l71"></a>+] +C Collapsed
|
||||
<a name="l72"></a>+] +X <ESC> (Exit)
|
||||
<a name="l73"></a>+] +Q <SHIFT-ESC> (Abort Quit)
|
||||
<a name="l74"></a>+] +Z Zero
|
||||
<a name="l75"></a>+] +RD Refresh Data
|
||||
<a name="l76"></a>+] +UD Update Data
|
||||
<a name="l77"></a>+] +TC Tag CallBack
|
||||
<a name="l78"></a>+] +LC Left CallBack
|
||||
<a name="l79"></a>+] +RC Right CallBack</span><span class=cF0>
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a></u><</span><a href="/Wb/Adam/DolDoc/DocInit.HC.HTML#l13"><span class=cF4>ArgCode</span></a><span class=cF0>> See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1057"><span class=cF4>Arg Defines</span></a><span class=cF0>.</span><span class=cF5>
|
||||
<a name="l82"></a><u>+] T="" Tag Str
|
||||
<a name="l83"></a>+] LEN="" Field Length
|
||||
<a name="l84"></a>+] A="" Auxilliary Str
|
||||
<a name="l85"></a>+] D="" Define Str
|
||||
<a name="l86"></a>+] HTML=""
|
||||
<a name="l87"></a>+] LE=<Exp> Left Expression
|
||||
<a name="l88"></a>+] LM="" Left Macro Str
|
||||
<a name="l89"></a>+] RE=<Exp> Right Expression
|
||||
<a name="l90"></a>+] RM="" Right Macro Str
|
||||
<a name="l91"></a>+] BI=<Exp> Bin Number
|
||||
<a name="l92"></a>+] BP="" Bin Ptr
|
||||
<a name="l93"></a>+] RT=<raw_data_type>
|
||||
<a name="l94"></a>+] SX=<Exp> Shift X
|
||||
<a name="l95"></a>+] SY=<Exp> Shift Y
|
||||
<a name="l96"></a>+] SCX=<Exp> Scroll X
|
||||
<a name="l97"></a>+] U=<Exp> User Data</span><span class=cF0>
|
||||
<a name="l98"></a>
|
||||
<a name="l99"></a></u></span><span class=cF5>EXAMPLES:
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a></span><span class=cF0><CTRL-t> to see how the following were done.
|
||||
<a name="l102"></a><u>Underlined</u> </span><span class=c0F>Inverted</span><span class=cF0> <blink>Blinking</blink> super sub
|
||||
<a name="l103"></a>This is a big long scrolling msg.
|
||||
<a name="l104"></a>
|
||||
<a name="l105"></a></span><span class=cF5>Cursor Movements:</span><span class=cF0>
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a> Cursor moved 3 rows down and to 3rd column from left.
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a> Note mandatory comma after flags
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a>The following may be changed to modes instead of attr with flags.
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a> This is centered
|
||||
<a name="l118"></a>
|
||||
<a name="l119"></a> This is right justified
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,109 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>File
|
||||
<a name="l2"></a>{
|
||||
<a name="l3"></a> Save(,CH_CTRLS);
|
||||
<a name="l4"></a> SaveAs(,CH_CTRLA);
|
||||
<a name="l5"></a> Abort(,CH_SHIFT_ESC);
|
||||
<a name="l6"></a> Exit(,CH_ESC);
|
||||
<a name="l7"></a>}
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>Edit
|
||||
<a name="l10"></a>{
|
||||
<a name="l11"></a> Undo(,CH_CTRLH,0x80E0000080E);
|
||||
<a name="l12"></a> Cut(,CH_CTRLX);
|
||||
<a name="l13"></a> Copy(,CH_CTRLC);
|
||||
<a name="l14"></a> Paste(,CH_CTRLV);
|
||||
<a name="l15"></a> DelLine(,CH_CTRLY);
|
||||
<a name="l16"></a> FindReplace(,CH_CTRLF);
|
||||
<a name="l17"></a> FindNext(,,0x3D0000003D);
|
||||
<a name="l18"></a> FindLast(,,0x23D0000023D);
|
||||
<a name="l19"></a> GoLine(,CH_CTRLG,0x42200000422);
|
||||
<a name="l20"></a> GoBegin(,,0x4C800000448);
|
||||
<a name="l21"></a> GoEnd(,,0x4D000000450);
|
||||
<a name="l22"></a> GoLeft(,,0x4CB0000044B);
|
||||
<a name="l23"></a> GoRight(,,0x4CD0000044D);
|
||||
<a name="l24"></a> GoLBrace(,0x5B,0x61A0000061A);
|
||||
<a name="l25"></a> GoRBrace(,0x5D,0x61B0000061B);
|
||||
<a name="l26"></a> Macro(,,0x3C0000003C);
|
||||
<a name="l27"></a> PlayMacro(,,0x23C0000023C);
|
||||
<a name="l28"></a> AutoSaveToggle(,CH_CTRLS,0x61F0000061F);
|
||||
<a name="l29"></a>}
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>Insert
|
||||
<a name="l32"></a>{
|
||||
<a name="l33"></a> TextWidgets(,CH_CTRLL,0x42600000426);
|
||||
<a name="l34"></a> GraphicResource(,CH_CTRLR,0x41300000413);
|
||||
<a name="l35"></a> FileName(,,0x3E0000003E);
|
||||
<a name="l36"></a> DirName(,,0x23E0000023E);
|
||||
<a name="l37"></a> GodWord(,,0x4100000041);
|
||||
<a name="l38"></a> GodBiblePassage(,,0x24100000241);
|
||||
<a name="l39"></a> GodSong(,,0x4000000040);
|
||||
<a name="l40"></a> GodDoodle(,,0x24000000240);
|
||||
<a name="l41"></a> IndentIn(,CH_CTRLI,0x41700000417);
|
||||
<a name="l42"></a> IndentOut(,CH_CTRLI,0x61700000617);
|
||||
<a name="l43"></a> WordWrapOn(,CH_CTRLW,0x41100000411);
|
||||
<a name="l44"></a> WordWrapOff(,CH_CTRLW,0x61100000611);
|
||||
<a name="l45"></a> UnderlineOn(,CH_CTRLU,0x41600000416);
|
||||
<a name="l46"></a> UnderlineOff(,CH_CTRLU,0x61600000616);
|
||||
<a name="l47"></a> BlinkOn(,CH_CTRLK,0x42500000425);
|
||||
<a name="l48"></a> BlinkOff(2,CH_CTRLK,0x62500000625);
|
||||
<a name="l49"></a> InvertOn(,CH_CTRLZ,0x42C0000042C);
|
||||
<a name="l50"></a> InvertOff(,CH_CTRLZ,0x62C0000062C);
|
||||
<a name="l51"></a> SuperToggle(,CH_CTRLP,0x41900000419);
|
||||
<a name="l52"></a> SubToggle(,CH_CTRLP,0x61900000619);
|
||||
<a name="l53"></a> PageBreak(,CH_CTRLJ,0x41C0000041C);
|
||||
<a name="l54"></a>}
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>Program
|
||||
<a name="l57"></a>{
|
||||
<a name="l58"></a> CodeTools(,CH_CTRLL,0x62600000626);
|
||||
<a name="l59"></a> Include(,0,0x3F0000003F);
|
||||
<a name="l60"></a> AdamInclude(,0,0x23F0000023F);
|
||||
<a name="l61"></a>}
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a>View
|
||||
<a name="l64"></a>{
|
||||
<a name="l65"></a> PlainText(,CH_CTRLT);
|
||||
<a name="l66"></a> Collapse(,CH_CTRLO,0x61800000618);
|
||||
<a name="l67"></a> Uncollapse(,CH_CTRLO,0x41800000418);
|
||||
<a name="l68"></a> Border(,CH_CTRLB);
|
||||
<a name="l69"></a> FileMgr(,CH_CTRLD,0x42000000420);
|
||||
<a name="l70"></a> Search(,CH_CTRLF,0x62100000621);
|
||||
<a name="l71"></a>}
|
||||
<a name="l72"></a>
|
||||
<a name="l73"></a>Help
|
||||
<a name="l74"></a>{
|
||||
<a name="l75"></a> Menu(,CH_CTRLM,0x43200000432);
|
||||
<a name="l76"></a> Help(,,0x3B0000003B);
|
||||
<a name="l77"></a> About(,,0x23B0000023B);
|
||||
<a name="l78"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Frequently Asked Questions</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF5>
|
||||
<a name="l3"></a><u>+] How come it is public domain, not GPL?
|
||||
<a name="l4"></a>+] Shouldn't it be GNU/TempleOS?
|
||||
<a name="l5"></a>+] Don't you use GNU's gcc?
|
||||
<a name="l6"></a>+] Why do you dual boot?
|
||||
<a name="l7"></a>+] It has links, so is it a browser?
|
||||
<a name="l8"></a>+] Where are the animated 3D icon GIFs?
|
||||
<a name="l9"></a>+] If the compiler is JIT, isn't it an interpretor?
|
||||
<a name="l10"></a>+] Are you a Creationist?
|
||||
<a name="l11"></a>+] Is 'Bt()' in the code Bit Torrent?
|
||||
<a name="l12"></a>+] Is 'Fs->' in the code file system?
|
||||
<a name="l13"></a>+] Is it Pascal?
|
||||
<a name="l14"></a>+] Why doesn't Sleep() make my laptop hibernate?
|
||||
<a name="l15"></a>+] What is Yield() for in loops?
|
||||
<a name="l16"></a>+] What is JIT Compiled Mode?
|
||||
<a name="l17"></a>+] Why do files end in .Z? Are they encrypted?
|
||||
<a name="l18"></a>+] Is it open source? How do I build it?
|
||||
<a name="l19"></a>+] Where are object files? How do I link?
|
||||
<a name="l20"></a>+] What is the FPS refresh rate?
|
||||
<a name="l21"></a>+] How does a task own the speaker?
|
||||
<a name="l22"></a>+] Why does it leak memory?
|
||||
<a name="l23"></a>+] Why do I get a memory leak when editing big files?
|
||||
<a name="l24"></a>+] Why is it in text mode?
|
||||
<a name="l25"></a>+] Where is the kernel memory?
|
||||
<a name="l26"></a>+] Why does it run code from stack addresses?
|
||||
<a name="l27"></a>+] How does it SYSCALL?
|
||||
<a name="l28"></a>+] How do you fault-in stack?
|
||||
<a name="l29"></a>+] How do I set the PATH?
|
||||
<a name="l30"></a>+] How do I boot it with Grub?
|
||||
<a name="l31"></a>+] How do I get Kernel.BIN to boot?
|
||||
<a name="l32"></a>+] Why is there some 16-Bit code?
|
||||
<a name="l33"></a>+] Why are you pushing 32-bit values on the stack?
|
||||
<a name="l34"></a>+] Why are you using 32-bit insts and not setting high 32-bits?
|
||||
<a name="l35"></a>+] How do you use the FS and GS segment registers.
|
||||
<a name="l36"></a>+] How do I set ORG for position of code?
|
||||
<a name="l37"></a>+] How are symbols loaded?
|
||||
<a name="l38"></a>+] Why doesn't assert work?
|
||||
<a name="l39"></a>+] Why doesn't C++ public work?
|
||||
<a name="l40"></a>+] How does the debugger do source debugging?
|
||||
<a name="l41"></a>+] What are the ASCII 5 and ASCII 31 chars doing in my text files?
|
||||
<a name="l42"></a>+] Why is there garbage at the end of my text files?
|
||||
<a name="l43"></a>+] Why are sprites so small?
|
||||
<a name="l44"></a>+] Why don't I need to recompile /Adam and /Home files?
|
||||
<a name="l45"></a>+] Why does it finds files that aren't there?</span><span class=cF0>
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF8>
|
||||
<a name="l48"></a></u>* "Windows" is a trademark owned by MicroSoft Corp.
|
||||
<a name="l49"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l50"></a>* "QEMU" is a trademark owned by Fabrice Bellard.
|
||||
<a name="l51"></a>* "VMware" is a trademark owned by VMware, Inc.
|
||||
<a name="l52"></a>* "VirtualBox" is a trademark owned by Oracle.
|
||||
<a name="l53"></a></span></pre></body>
|
||||
</html>
|
@ -1,98 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0> </span><span class=cF5> TempleOS' Features</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>* Oracle in with </span><span class=cF2><F7></span><span class=cF0> for words or </span><span class=cF2><SHIFT-F7></span><span class=cF0> for passages. See </span><a href="/Wb/Adam/God/HSNotes.DD.HTML#l1"><span class=cF4>tongues</span></a><span class=cF0>.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>* </span><a href="http://en.wikipedia.org/wiki/Amd64#AMD64"><span class=cF4>x86_64</span></a><span class=cF0>, ring-0-only, single-address-map (identity), multitasking kernel with
|
||||
<a name="l6"></a>multicore support.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>* Master/Slave MultiCore
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>* Free, </span><span class=cF2>public domain</span><span class=cF0>, </span><span class=cF2>100% open source</span><span class=cF0>.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>* 64-bit </span><span class=cF2>compiler/assembler</span><span class=cF0> for </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0>. Truly compiles, doesn't interpret. </span><span class=cF2>Just
|
||||
<a name="l13"></a>-in-Time</span><span class=cF0> and </span><span class=cF2>Ahead-of-Time</span><span class=cF0> compilation. With </span><span class=cF2>JIT</span><span class=cF0>, no need for object or exe
|
||||
<a name="l14"></a>files.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>* No 32-bit krufty code.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>* 640x480 16 color </span><span class=cF2>VGA</span><span class=cF0> graphics.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>* Keyboard & Mouse support.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>* ATA PIO Hard drives, support for </span><span class=cF2>FAT32</span><span class=cF0> and </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file systems with file
|
||||
<a name="l23"></a>compression.
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>* ATAPI PIO </span><span class=cF2>CD/DVD</span><span class=cF0> support with </span><span class=cF2>RedSea</span><span class=cF0> file system. Can make bootable ISO files
|
||||
<a name="l26"></a>so you can roll-your-own distro's.
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>* </span><a href="/Wb/Adam/ABlkDev/DskPrt.HC.HTML#l13"><span class=cF4>Partitioning</span></a><span class=cF0> tool, installer, </span><span class=cF2>boot loaders</span><span class=cF0> for CD/DVD and hard disk.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>* </span><span class=cF2>Editor/Browser</span><span class=cF0> for a new </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>Document Format</span></a><span class=cF0>. Source files and the command line
|
||||
<a name="l31"></a>window can have graphics, links, icons, trees, colors, super/sub scripts,
|
||||
<a name="l32"></a>margins. Everything is seamless through-out the tool chain. No need for
|
||||
<a name="l33"></a>separate resource files.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>* 8-bit </span><span class=cF2>ASCII</span><span class=cF0>, not just 7-bit. Supported in entire tool chain. </span><span class=cF2><CTRL-ALT-a></span><span class=cF0>
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a>* </span><span class=cF2>Graphics in source code</span><span class=cF0>, no resource files, </span><span class=cF2>graphic sprite editor</span><span class=cF0>. </span><span class=cF2><CTRL-r></span><span class=cF0>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>* </span><span class=cF2>64-bit pointers</span><span class=cF0>. All memory, even more than 4Gig, can be directly accessed by
|
||||
<a name="l40"></a>all tasks on all cores at all times.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>* </span><span class=cF2>Ring-0-only</span><span class=cF0>. Highest CPU privileged mode at all times. No off-limits insts.
|
||||
<a name="l43"></a>No time lost changing modes or address maps. Switches tasks in half a
|
||||
<a name="l44"></a>microsecond.
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a>* </span><span class=cF2>2D/3D</span><span class=cF0> graphics library
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a>* Real-time fancy </span><span class=cF2>differential-equation solver</span><span class=cF0> for physics engines, to use in
|
||||
<a name="l49"></a>games. (Adaptive step-size Runge-Kutta, interpolated for real-time.)
|
||||
<a name="l50"></a>
|
||||
<a name="l51"></a>* Auto-completion, jump-to-source tool called </span><span class=cF2>AutoComplete</span><span class=cF0> with Dictionary.
|
||||
<a name="l52"></a>
|
||||
<a name="l53"></a>* Window Manager. Pan scrn with </span><span class=cF2><CTRL-LeftDrag></span><span class=cF0>. Zoom scrn on mouse cursor
|
||||
<a name="l54"></a>with </span><span class=cF2><CTRL-ALT-z></span><span class=cF0>/</span><span class=cF2><CTRL-ALT-SHIFT-Z></span><span class=cF0>.
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>* File Manager, </span><span class=cF2><CTRL-d></span><span class=cF0>.
|
||||
<a name="l57"></a>
|
||||
<a name="l58"></a>* Code </span><a href="/Wb/Adam/Opt/Utils/Profiler.HC.HTML#l27"><span class=cF4>profiler</span></a><span class=cF0>, </span><a href="/Wb/Adam/Opt/Utils/Merge.HC.HTML#l37"><span class=cF4>merge</span></a><span class=cF0>, </span><a href="/Wb/Adam/Opt/Utils/Diff.HC.HTML#l237"><span class=cF4>diff</span></a><span class=cF0> utils.
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a>* </span><span class=cF2>PC Speaker</span><span class=cF0> support with many hymns.
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a>* Music composing tool.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>* Many games, </span><a href="/Wb/Doc/DemoIndex.DD.HTML#l1"><span class=cF4>demos</span></a><span class=cF0> and </span><a href="/Wb/Doc/HelpIndex.DD.HTML#l1"><span class=cF4>documentation</span></a><span class=cF0>.
|
||||
<a name="l65"></a>
|
||||
<a name="l66"></a>* </span><span class=cF2>All source code</span><span class=cF0> included. Only compiles with the included TempleOS compiler
|
||||
<a name="l67"></a>and assembler.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.c05{color:#aa00aa;background-color:#000000;}
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=c05>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a> </span><span class=cF4><u>CFile</span><span class=cF0>
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a></u> </span><a href="/Wb/Kernel/BlkDev/DskBlk.HC.HTML#l31"><span class=cF4>BlkRead</span></a><span class=cF0>() </span><a href="/Wb/Kernel/BlkDev/DskBlk.HC.HTML#l71"><span class=cF4>BlkWrite</span></a><span class=cF0>()
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,107 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> File Manager</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF2><SHIFT CURSOR></span><span class=cF0>
|
||||
<a name="l4"></a> Select files.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF2><CTRL-y> or <DEL></span><span class=cF0>
|
||||
<a name="l7"></a> Delete file or tree.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a></span><span class=cF2><CTRL-c> or <CTRL-INS></span><span class=cF0>
|
||||
<a name="l10"></a> Copy select files to clip.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a></span><span class=cF2><CTRL-v> or <SHIFT-INS></span><span class=cF0>
|
||||
<a name="l13"></a> Paste clip.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a></span><span class=cF2>LEFT-CLICK,drag-drop</span><span class=cF0>
|
||||
<a name="l16"></a> Move a file or tree to a dir.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a></span><span class=cF2>LEFT-CLICK,same file or <SPACE></span><span class=cF0>
|
||||
<a name="l19"></a> Edit file.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF2><SHIFT-SPACE></span><span class=cF0>
|
||||
<a name="l22"></a> Edit Plain Text File.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a></span><span class=cF2>RIGHT-CLICK or <ENTER></span><span class=cF0>
|
||||
<a name="l25"></a> Bring-up menu.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a></span><span class=cF2><F5></span><span class=cF0>
|
||||
<a name="l28"></a> #include file.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a></span><span class=cF2><SHIFT-F5></span><span class=cF0>
|
||||
<a name="l31"></a> Adam #include file.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a></span><span class=cF2>'r'</span><span class=cF0>
|
||||
<a name="l34"></a> Rename file.
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a></span><span class=cF2>'d'</span><span class=cF0>
|
||||
<a name="l37"></a> Make Dir.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a></span><span class=cF2>'c'</span><span class=cF0>
|
||||
<a name="l40"></a> DskChg (Remount removable media). Do not do this on blank disks.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a></span><span class=cF2>'f'</span><span class=cF0>
|
||||
<a name="l43"></a> Format drive.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a></span><span class=cF2>'i'</span><span class=cF0>
|
||||
<a name="l46"></a> Mount ISO.C file.
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a></span><span class=cF2>'u'</span><span class=cF0>
|
||||
<a name="l49"></a> Unmount drive(s).
|
||||
<a name="l50"></a>
|
||||
<a name="l51"></a></span><span class=cF2>'m'</span><span class=cF0>
|
||||
<a name="l52"></a> Make CD/DVD ISO.C file. This creates a </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> ISO file image of the dir the
|
||||
<a name="l53"></a> cursor is on. The name of the ISO file is </span><span class=cF2>"::/Tmp/CDDVD.ISO.C"</span><span class=cF0> </span><span class=cF4>
|
||||
<a name="l54"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2730"><span class=cF4>blkdev.dft_iso_c_filename</span></a><span class=cF0> and can be redefined in your start-up scripts. You
|
||||
<a name="l55"></a> may wish to place it on a different drive.
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a></span><span class=cF2>'B'</span><span class=cF0>
|
||||
<a name="l58"></a> Burn CD/DVD ISO file. This burns a CD/DVD using the image file, </span><span class=cF2>
|
||||
<a name="l59"></a> "::/Tmp/CDDVD.ISO"</span><span class=cF0> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2730"><span class=cF4>blkdev.dft_iso_filename</span></a><span class=cF0> to the drive the cursor is on.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a></span><span class=cF5>Instructions on Using CD/DVD's</span><span class=cF0>
|
||||
<a name="l63"></a> If you have not recompiled Kernel and defined your CD/DVD drive, exit the
|
||||
<a name="l64"></a> FileMgr and use </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0> to define your CD/DVD drive. Place a CD/DVD in the
|
||||
<a name="l65"></a> drive and press </span><span class=cF2>'c'</span><span class=cF0> when on top of the CD/DVD drive letter to mount the drive.
|
||||
<a name="l66"></a> It will call </span><a href="/Wb/Kernel/BlkDev/DskDrv.HC.HTML#l237"><span class=cF4>DskChg</span></a><span class=cF0>(), the TempleOS cmd to mount removable media.
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a></span><span class=cF5>Instructions on Burning CD/DVD's</span><span class=cF0>
|
||||
<a name="l70"></a> Create a temporary dir to hold files and copy files into the holding dir.
|
||||
<a name="l71"></a> Make an ISO image of the dir by pressing </span><span class=cF2>'M'</span><span class=cF0> when on top of the dir. Press </span><span class=cF2>'B
|
||||
<a name="l72"></a> '</span><span class=cF0> when on top of the CD/DVD ROM drive to burn the ISO, </span><span class=cF2>"::/Tmp/CDDVD.ISO"</span><span class=cF0> </span><span class=cF4>
|
||||
<a name="l73"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2730"><span class=cF4>blkdev.dft_iso_filename</span></a><span class=cF0>, to disk. If you have not recompiled </span><span class=cF2>Kernel</span><span class=cF0> and
|
||||
<a name="l74"></a> defined your CD/DVD drive, exit the FileMgr and use </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0>.
|
||||
<a name="l75"></a> </span><span class=cF4>
|
||||
<a name="l76"></a> </span><a href="/Wb/Misc/DoDistro.HC.HTML#l1"><span class=cF4>Making Your Own Distro</span></a><span class=cF0>
|
||||
<a name="l77"></a> </span></pre></body>
|
||||
</html>
|
@ -1,63 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>File
|
||||
<a name="l2"></a>{
|
||||
<a name="l3"></a> Rename(,'r');
|
||||
<a name="l4"></a> DirMk(,'d');
|
||||
<a name="l5"></a> FmtDrv(,'f');
|
||||
<a name="l6"></a> UnmountDrv(,'u');
|
||||
<a name="l7"></a> Abort(,CH_SHIFT_ESC);
|
||||
<a name="l8"></a> Exit(,CH_ESC);
|
||||
<a name="l9"></a>}
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>Edit
|
||||
<a name="l12"></a>{
|
||||
<a name="l13"></a> Ed(,CH_SPACE);
|
||||
<a name="l14"></a> Plain(,CH_SHIFT_SPACE);
|
||||
<a name="l15"></a> Copy(,CH_CTRLC);
|
||||
<a name="l16"></a> Paste(,CH_CTRLV);
|
||||
<a name="l17"></a> DeleteFile(,CH_CTRLY);
|
||||
<a name="l18"></a>}
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>CDDVD
|
||||
<a name="l21"></a>{
|
||||
<a name="l22"></a> DskChg(,'c');
|
||||
<a name="l23"></a> MountISOC(,'i');
|
||||
<a name="l24"></a> MakeRedSeaISOC(,'m');
|
||||
<a name="l25"></a> BurnISOFile(,'B');
|
||||
<a name="l26"></a>}
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>Program
|
||||
<a name="l29"></a>{
|
||||
<a name="l30"></a> Include(,0,0x3F0000003F);
|
||||
<a name="l31"></a> AdamInclude(,0,0x23F0000023F);
|
||||
<a name="l32"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,60 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> File Utils</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>File util </span><a href="/Wb/Kernel/BlkDev/DskFind.HC.HTML#l27"><span class=cF4>FilesFind</span></a><span class=cF0>() wildcard mask consists of a single base dir with multiple
|
||||
<a name="l4"></a>file masks separated by </span><span class=cF2>';'</span><span class=cF0>. The </span><span class=cF2>'*'</span><span class=cF0> and </span><span class=cF2>'?'</span><span class=cF0> wildcard chars are accepted. The </span><span class=cF2>
|
||||
<a name="l5"></a>'~'</span><span class=cF0> is your home directory and </span><span class=cF2>'!'</span><span class=cF0> indicates an exclusion mask.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a></span><span class=cF2>"/Kernel/*"</span><span class=cF0> BaseDir: </span><span class=cF2>/Kernel</span><span class=cF0> Mask: </span><span class=cF2>*</span><span class=cF0>
|
||||
<a name="l9"></a></span><span class=cF2>"/Demo/*.BMP*;*.GR*"</span><span class=cF0> BaseDir: </span><span class=cF2>/Demo</span><span class=cF0> Mask: </span><span class=cF2>*.BMP*</span><span class=cF0> | </span><span class=cF2>*.GR*</span><span class=cF0>
|
||||
<a name="l10"></a></span><span class=cF2>"/*.DD*;!*/Bible*"</span><span class=cF0> BaseDir: </span><span class=cF2>Root</span><span class=cF0> Mask: </span><span class=cF2>*.DD*</span><span class=cF0> but not </span><span class=cF2>*/Bible*</span><span class=cF0>
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>See </span><a href="/Wb/Kernel/BlkDev/DskStrA.HC.HTML#l40"><span class=cF4>FilesFindMatch</span></a><span class=cF0>().
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>Flags are either text or int values.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2565"><span class=cF4>FUF_RECURSE</span></a><span class=cF0> </span><span class=cF2>+r</span><span class=cF0> Recurse
|
||||
<a name="l17"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2576"><span class=cF4>FUF_SINGLE</span></a><span class=cF0> </span><span class=cF2>+s</span><span class=cF0> Single File (Optimization for one file in mask.)
|
||||
<a name="l18"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2588"><span class=cF4>FUF_FLATTEN_TREE</span></a><span class=cF0> </span><span class=cF2>+f</span><span class=cF0> use with '</span><span class=cF2>+F</span><span class=cF0>'. Just use </span><span class=cF2>+F</span><span class=cF0>, probably.
|
||||
<a name="l19"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2577"><span class=cF4>FUF_JUST_DIRS</span></a><span class=cF0> </span><span class=cF2>+D</span><span class=cF0> just directories
|
||||
<a name="l20"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2578"><span class=cF4>FUF_JUST_FILES</span></a><span class=cF0> </span><span class=cF2>+F</span><span class=cF0> just files (Flattens trees)
|
||||
<a name="l21"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2586"><span class=cF4>FUF_CLUS_ORDER</span></a><span class=cF0> </span><span class=cF2>+O</span><span class=cF0> sort by clus (move head one direction)
|
||||
<a name="l22"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2579"><span class=cF4>FUF_JUST_TXT</span></a><span class=cF0> </span><span class=cF2>+T</span><span class=cF0> just text files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2304"><span class=cF4>FILEMASK_TXT</span></a><span class=cF0>
|
||||
<a name="l23"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2580"><span class=cF4>FUF_JUST_DD</span></a><span class=cF0> </span><span class=cF2>+$</span><span class=cF0> just </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2303"><span class=cF4>FILEMASK_DD</span></a><span class=cF0>
|
||||
<a name="l24"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2581"><span class=cF4>FUF_JUST_SRC</span></a><span class=cF0> </span><span class=cF2>+S</span><span class=cF0> just src files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2302"><span class=cF4>FILEMASK_SRC</span></a><span class=cF0>
|
||||
<a name="l25"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2582"><span class=cF4>FUF_JUST_AOT</span></a><span class=cF0> </span><span class=cF2>+A</span><span class=cF0> just aot files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2301"><span class=cF4>FILEMASK_AOT</span></a><span class=cF0>
|
||||
<a name="l26"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2583"><span class=cF4>FUF_JUST_JIT</span></a><span class=cF0> </span><span class=cF2>+J</span><span class=cF0> just jit files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2300"><span class=cF4>FILEMASK_JIT</span></a><span class=cF0>
|
||||
<a name="l27"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2584"><span class=cF4>FUF_JUST_GR</span></a><span class=cF0> </span><span class=cF2>+G</span><span class=cF0> just graphic files : </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2305"><span class=cF4>FILEMASK_GR</span></a><span class=cF0>
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>See </span><a href="/Wb/Kernel/KDefine.HC.HTML#l111"><span class=cF4>ST_FILE_UTIL_FLAGS</span></a><span class=cF0> when used in calling program taking text flags.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>If you require separate global vars for multiple instances of a routine, you can
|
||||
<a name="l2"></a>use </span><span class=cF4>Frame</span><span class=cF0>s. See </span><a href="/Wb/Adam/Gr/SpriteMesh.HC.HTML#l957"><span class=cF4>SpriteMeshEd</span></a><span class=cF0>(), </span><a href="/Wb/Demo/Graphics/Pick3D.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Pick3D.HC</span></a><span class=cF0> or </span><a href="/Wb/Adam/ASnd.HC.HTML#l381"><span class=cF4>Noise</span></a><span class=cF0>().
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,78 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>GR graphics files are 8-bits-per-pixels but only 4-bits of color, with
|
||||
<a name="l2"></a>transparency and no palette. Compression is the standard TempleOS LZW
|
||||
<a name="l3"></a>compression.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_COMPRESSED</span><span class=cF0> 1 </span><span class=cF2>//This is the only saved flag.</span><span class=cF0>
|
||||
<a name="l6"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DCF_PALETTE</span><span class=cF0> 2
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>TRANSPARENT</span><span class=cF0> 0xFF
|
||||
<a name="l9"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLACK</span><span class=cF0> 0
|
||||
<a name="l10"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BLUE</span><span class=cF0> 1
|
||||
<a name="l11"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>GREEN</span><span class=cF0> 2
|
||||
<a name="l12"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CYAN</span><span class=cF0> 3
|
||||
<a name="l13"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RED</span><span class=cF0> 4
|
||||
<a name="l14"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PURPLE</span><span class=cF0> 5
|
||||
<a name="l15"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BROWN</span><span class=cF0> 6
|
||||
<a name="l16"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTGRAY</span><span class=cF0> 7
|
||||
<a name="l17"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DKGRAY</span><span class=cF0> 8
|
||||
<a name="l18"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTBLUE</span><span class=cF0> 9
|
||||
<a name="l19"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTGREEN</span><span class=cF0> 10
|
||||
<a name="l20"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTCYAN</span><span class=cF0> 11
|
||||
<a name="l21"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTRED</span><span class=cF0> 12
|
||||
<a name="l22"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>LTPURPLE</span><span class=cF0> 13
|
||||
<a name="l23"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>YELLOW</span><span class=cF0> 14
|
||||
<a name="l24"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WHITE</span><span class=cF0> 15
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CBGR48</span><span class=cF0>
|
||||
<a name="l27"></a>{
|
||||
<a name="l28"></a> </span><span class=cF9>U16</span><span class=cF0> r,g,b,pad;
|
||||
<a name="l29"></a>};
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a></span><span class=cF9>CBGR48</span><span class=cF0> </span><span class=cFB>gr_palette_std</span><span class=cF0>[16]={
|
||||
<a name="l32"></a>0x000000000000,0x00000000AAAA,0x0000AAAA0000,0x0000AAAAAAAA,
|
||||
<a name="l33"></a>0xAAAA00000000,0xAAAA0000AAAA,0xAAAA55550000,0xAAAAAAAAAAAA,
|
||||
<a name="l34"></a>0x555555555555,0x55555555FFFF,0x5555FFFF5555,0x5555FFFFFFFF,
|
||||
<a name="l35"></a>0xFFFF55555555,0xFFFF5555FFFF,0xFFFFFFFF5555,0xFFFFFFFFFFFF};
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a></span><span class=cF1>class</span><span class=cF0> GRFile
|
||||
<a name="l38"></a>{
|
||||
<a name="l39"></a> </span><span class=cF9>I32</span><span class=cF0> width;
|
||||
<a name="l40"></a> </span><span class=cF9>I32</span><span class=cF0> width_internal; </span><span class=cF2>//Rounded-up to multiple of 8.</span><span class=cF0>
|
||||
<a name="l41"></a> </span><span class=cF9>I32</span><span class=cF0> height;
|
||||
<a name="l42"></a> </span><span class=cF9>I32</span><span class=cF0> flags; </span><span class=cF2>//DCF_COMPRESSED? See </span><a href="/Wb/Kernel/Compress.HC.HTML#l1"><span class=cF4>::/Kernel/Compress.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l43"></a> </span><span class=cF9>CBGR48</span><span class=cF0> palette[16]; </span><span class=cF2>//Included if DCF_PALETTE.</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>U8</span><span class=cF0> body[];
|
||||
<a name="l45"></a>};
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>See </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l286"><span class=cF4>DCSave</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l383"><span class=cF4>GRWrite</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l338"><span class=cF4>DCLoad</span></a><span class=cF0>(), and </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l394"><span class=cF4>GRRead</span></a><span class=cF0>().
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,67 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Glossery</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF5>
|
||||
<a name="l3"></a><u>+] Abbreviations
|
||||
<a name="l4"></a>+] Task/Process/Thread
|
||||
<a name="l5"></a>+] Adam Task
|
||||
<a name="l6"></a>+] Seth Tasks
|
||||
<a name="l7"></a>+] Code and Data Heaps
|
||||
<a name="l8"></a>+] Parent, Child and PopUp Tasks
|
||||
<a name="l9"></a>+] HolyC
|
||||
<a name="l10"></a>+] AOT Compile Mode
|
||||
<a name="l11"></a>+] JIT Compile Mode
|
||||
<a name="l12"></a>+] Compiler Intermediate Code
|
||||
<a name="l13"></a>+] Drive/Partition</span><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cF4>
|
||||
<a name="l15"></a>Bt, Bts, Btr, Btc, BEqu
|
||||
<a name="l16"></a>Define
|
||||
<a name="l17"></a></u></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF4>
|
||||
<a name="l18"></a></span><a href="/Wb/Adam/DolDoc/DocLink.HC.HTML#l29"><span class=cF4>Editor Link Types</span></a><span class=cF4>
|
||||
<a name="l19"></a></span><a href="/Wb/Doc/FileUtils.DD.HTML#l1"><span class=cF4>files_find_mask</span></a><span class=cF4>
|
||||
<a name="l20"></a>Hash Table
|
||||
<a name="l21"></a>InFile
|
||||
<a name="l22"></a>Ona
|
||||
<a name="l23"></a>Pag
|
||||
<a name="l24"></a></span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea File System</span></a><span class=cF4>
|
||||
<a name="l25"></a>Sprite</span><span class=cF0>
|
||||
<a name="l26"></a></span><span class=cF5>
|
||||
<a name="l27"></a>+] CLI, STI, PUSHFD, POPFD
|
||||
<a name="l28"></a>+] Filename Extention Types
|
||||
<a name="l29"></a>+] Naming Convention
|
||||
<a name="l30"></a>+] Fs
|
||||
<a name="l31"></a>+] Gs
|
||||
<a name="l32"></a>+] Heap
|
||||
<a name="l33"></a>+] Join
|
||||
<a name="l34"></a>+] user_data
|
||||
<a name="l35"></a>+] Multicore Core0/CoreAP</span><span class=cF0>
|
||||
<a name="l36"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The </span><a href="/Wb/Adam/God/HSNotes.DD.HTML#l1"><span class=cF4>Holy Spirit</span></a><span class=cF0> can puppet you.
|
||||
<a name="l2"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,148 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Graphics Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Dive into </span><a href="/Wb/Doc/DemoIndex.DD.HTML#l1"><span class=cF4>Demo Index</span></a><span class=cF0> to learn.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>The order layers are drawn on top of each other is:
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cFA>
|
||||
<a name="l17"></a>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a>
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>* See </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l398"><span class=cF4>GrUpdateScrn</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l58"><span class=cF4>GrUpdateTasks</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l18"><span class=cF4>GrUpdateTaskWin</span></a><span class=cF0>() called by the WinMgr
|
||||
<a name="l46"></a>task 30fps. Notice the task's </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l35"><span class=cF4>draw_it</span></a><span class=cF0>() callback being called. Only tasks on </span><span class=cF2>C
|
||||
<a name="l47"></a>ore0</span><span class=cF0> are allowed to have windows. There is one window per task, no child
|
||||
<a name="l48"></a>windows. You can have pop-up child tasks.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a>* </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0>s (device contexts) are a data type for controlling graphics on the scrn or
|
||||
<a name="l51"></a>graphics in mem. The device context structure has thick and color. You use </span><span class=cF4>
|
||||
<a name="l52"></a></span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l168"><span class=cF4>DCAlias</span></a><span class=cF0>() to create your own structure, with its own color and thick. Free it
|
||||
<a name="l53"></a>with </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l208"><span class=cF4>DCDel</span></a><span class=cF0>() when finished.
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a>* </span><span class=cF4>gr.dc</span><span class=cF0> is a device context for persistent data on the scrn, not needing to be
|
||||
<a name="l56"></a>redrawn. You create an alias for this by using </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l168"><span class=cF4>DCAlias</span></a><span class=cF0>() and work with that.
|
||||
<a name="l57"></a>See </span><a href="/Wb/Demo/Graphics/NetOfDots.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/NetOfDots.HC</span></a><span class=cF0>.
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a>* There are various flavors of line and point plotting routines. </span><a href="/Wb/Adam/Gr/GrPrimatives.HC.HTML#l568"><span class=cF4>GrLine</span></a><span class=cF0>() and </span><span class=cF4>
|
||||
<a name="l60"></a></span><a href="/Wb/Adam/Gr/GrPrimatives.HC.HTML#l51"><span class=cF4>GrPlot</span></a><span class=cF0>() are the simplest. The others allow 3D graphics and rotations.
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a>* See </span><a href="/Wb/Doc/Transform.DD.HTML#l1"><span class=cF4>::/Doc/Transform.DD</span></a><span class=cF0> for adding a transformation.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>* You change the </span><span class=cF2>Fs->draw_it</span><span class=cF0> var to point to your </span><span class=cF2>DrawIt()</span><span class=cF0> function which gets
|
||||
<a name="l65"></a>called each scrn refresh (30 fps). You draw everything in the window over and
|
||||
<a name="l66"></a>over again. See </span><a href="/Wb/Demo/Graphics/Box.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Box.HC</span></a><span class=cF0>.
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>* Use the graphic sprite resource editor, </span><span class=cF2><CTRL-r></span><span class=cF0>, to create a sprite that can
|
||||
<a name="l69"></a>be plotted with </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l18"><span class=cF4>Sprite3</span></a><span class=cF0>() or output to the cmd line with </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l468"><span class=cF4>Sprite</span></a><span class=cF0>(). Use </span><span class=cF2>$IB,"",B
|
||||
<a name="l70"></a>I=1$</span><span class=cF0> in a src program to insert the addr of sprite binary data item #1. To
|
||||
<a name="l71"></a>learn how the numbers work, after creating a sprite with </span><span class=cF2><CTRL-r></span><span class=cF0>, toggle to
|
||||
<a name="l72"></a>plain text with </span><span class=cF2><CTRL-t></span><span class=cF0> and check its num. Make an assignment to a ptr var or
|
||||
<a name="l73"></a>pass to </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l18"><span class=cF4>Sprite3</span></a><span class=cF0>() with </span><span class=cF2>$IB,"",BI=n$</span><span class=cF0>. Use </span><span class=cF2><CTRL-r></span><span class=cF0>'s "Pointer to Sprite" to make
|
||||
<a name="l74"></a>a </span><span class=cF2>$IB...$</span><span class=cF0> entry. See </span><a href="/Wb/Demo/Graphics/SpritePlot.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpritePlot.HC</span></a><span class=cF0> and </span><span class=cF4>
|
||||
<a name="l75"></a></span><a href="/Wb/Demo/Graphics/SpritePlot3D.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpritePlot3D.HC</span></a><span class=cF0>. The origin (zero point) for a sprite is
|
||||
<a name="l76"></a>defined by the cursor location when you pressed </span><span class=cF2><CTRL-r></span><span class=cF0> to make it. You can
|
||||
<a name="l77"></a>edit a sprite by clicking the cursor on it and pressing </span><span class=cF2><CTRL-r></span><span class=cF0> again.
|
||||
<a name="l78"></a>
|
||||
<a name="l79"></a>* Set </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3572"><span class=cF4>DCF_SYMMETRY</span></a><span class=cF0> in the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF2>.flags</span><span class=cF0> and call </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l194"><span class=cF4>DCSymmetrySet</span></a><span class=cF0>() or </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l216"><span class=cF4>DCSymmetry3Set</span></a><span class=cF0>()
|
||||
<a name="l80"></a>. This will plot a mirror image in addition to the primary image. Set </span><span class=cF4>
|
||||
<a name="l81"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3576"><span class=cF4>DCF_JUST_MIRROR</span></a><span class=cF0> to plot just the image, but this required </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3572"><span class=cF4>DCF_SYMMETRY</span></a><span class=cF0> to be set
|
||||
<a name="l82"></a>at the same time. Note: You can only have one symmetry active at a time
|
||||
<a name="l83"></a>including in </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprite</span></a><span class=cF0>s.
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a>* Use </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l186"><span class=cF4>DCNew</span></a><span class=cF0>() to create a mem bitmap which can be used to work off-scrn and
|
||||
<a name="l86"></a>which can be </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l71"><span class=cF4>GrBlot</span></a><span class=cF0>ed onto the scrn. If you set </span><span class=cF2>brush</span><span class=cF0> member of </span><span class=cF2>CDC</span><span class=cF0> to another </span><span class=cF2>
|
||||
<a name="l87"></a>CDC</span><span class=cF0>, all the graphic routines will </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l71"><span class=cF4>GrBlot</span></a><span class=cF0>() the brush instead of </span><a href="/Wb/Adam/Gr/GrPrimatives.HC.HTML#l51"><span class=cF4>GrPlot</span></a><span class=cF0>(). See </span><span class=cF4>
|
||||
<a name="l88"></a></span><a href="/Wb/Demo/Graphics/Blot.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Blot.HC</span></a><span class=cF0>.
|
||||
<a name="l89"></a>
|
||||
<a name="l90"></a>* There are a few </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2898"><span class=cF4>raster operations</span></a><span class=cF0> available. They go in bits 8-11 of the </span><span class=cF2>dc->
|
||||
<a name="l91"></a>color</span><span class=cF0> member var which is a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2939"><span class=cF4>CColorROPU32</span></a><span class=cF0>. </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2900"><span class=cF4>ROP_COLLISION</span></a><span class=cF0> is special. It counts
|
||||
<a name="l92"></a>the num of pixs drawn on non-background locations. Using </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2900"><span class=cF4>ROP_COLLISION</span></a><span class=cF0> with
|
||||
<a name="l93"></a>vector </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprite</span></a><span class=cF0>'s is tricky because overlapping pixs from lines in the </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprite</span></a><span class=cF0>
|
||||
<a name="l94"></a>reg as collisions. You can either work with a nonzero count or convert your </span><span class=cF4>
|
||||
<a name="l95"></a></span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprite</span></a><span class=cF0> to a bitmap if your subelements draw on top of each other. Be sure to
|
||||
<a name="l96"></a>set </span><span class=cF4>->bkcolor</span><span class=cF0> before using </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2900"><span class=cF4>ROP_COLLISION</span></a><span class=cF0>. See </span><a href="/Wb/Demo/Graphics/Collision.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Collision.HC</span></a><span class=cF0> and </span><span class=cF4>
|
||||
<a name="l97"></a></span><a href="/Wb/Apps/Titanium/Titanium.HC.HTML#l505"><span class=cF4>Titanium</span></a><span class=cF0>.
|
||||
<a name="l98"></a>
|
||||
<a name="l99"></a>* The </span><span class=cF4>->dither_probability_u16</span><span class=cF0> member of </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0> is a </span><span class=cF2>U16</span><span class=cF0> used to statistically sel
|
||||
<a name="l100"></a>between two colors to get something resembling more shades of color. See </span><span class=cF4>
|
||||
<a name="l101"></a></span><a href="/Wb/Demo/Graphics/SunMoon.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SunMoon.HC</span></a><span class=cF0> and </span><a href="/Wb/Demo/Graphics/Shading.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Shading.HC</span></a><span class=cF0>. It works with many
|
||||
<a name="l102"></a>graphic routines, but not those with pens.
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a>* There is a mechanism built-in for generating motion based on differential
|
||||
<a name="l105"></a>equations, which allows realistic physics. You create an </span><a href="/Wb/Kernel/KernelA.HH.HTML#l251"><span class=cF4>CMathODE</span></a><span class=cF0> struct with </span><span class=cF4>
|
||||
<a name="l106"></a></span><a href="/Wb/Adam/AMathODE.HC.HTML#l30"><span class=cF4>ODENew</span></a><span class=cF0>(), passing it the num of vars in the state vect. For realistic physics,
|
||||
<a name="l107"></a>you usually have 2 state vars for each dimension (for each mass) because motion
|
||||
<a name="l108"></a>is governed by F=mA which is a 2nd order equation. The two states are pos and
|
||||
<a name="l109"></a>velocity and to solve these you need to supply the derivative of pos and
|
||||
<a name="l110"></a>velocity. The derivative of pos is usually simply the current velocity and the
|
||||
<a name="l111"></a>derivative of velocity is the acceleration (the sum of forces on a mass divided
|
||||
<a name="l112"></a>by mass). To help provide meaningful names for values in the state vect, you
|
||||
<a name="l113"></a>can create an </span><a href="/Wb/Kernel/KernelA.HH.HTML#l201"><span class=cF4>COrder2D3</span></a><span class=cF0> ptr and point it to a mass in the state vect. Six
|
||||
<a name="l114"></a>elements in the state vect are required for each mass.
|
||||
<a name="l115"></a>
|
||||
<a name="l116"></a>See </span><span class=cF4><u>Math/CMathODE</u></span><span class=cF0>.
|
||||
<a name="l117"></a>See </span><a href="/Wb/Demo/Games/Rocket.HC.HTML#l1"><span class=cF4>::/Demo/Games/Rocket.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,219 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Directory Structure</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF2>/Home</span><span class=cF0> All your user data should be placed in here to ease backing-up your data.
|
||||
<a name="l4"></a>When you install an application it will create a subdirectory of your </span><span class=cF2>/Home</span><span class=cF0>
|
||||
<a name="l5"></a>directory for storage.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a></span><span class=cF2>/Apps</span><span class=cF0> Applications are placed in subdirectories of </span><span class=cF2>/Apps</span><span class=cF0>. Applications should
|
||||
<a name="l8"></a>have a file called </span><span class=cF2>Install.HC.Z</span><span class=cF0> which will install the app, possibly making
|
||||
<a name="l9"></a>files or directories in </span><span class=cF2>/Home</span><span class=cF0>. The file, </span><span class=cF2>Load.HC.Z</span><span class=cF0> will load the application
|
||||
<a name="l10"></a>into mem. The file, </span><span class=cF2>Run.HC.Z</span><span class=cF0>, will usually load and execute the app. To add an
|
||||
<a name="l11"></a>app to your PersonalMenu, use </span><span class=cF2><CTRL-l></span><span class=cF0>, insert a macro with the PopUp option
|
||||
<a name="l12"></a>checked and invoke the </span><span class=cF2>Run.HC.Z</span><span class=cF0> file.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a></span><span class=cF2>/Demo</span><span class=cF0> Here you can find lots of sample code to do various things.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cF2>/Doc</span><span class=cF0> Here you can find documentation.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a></span><span class=cF2>/Kernel</span><span class=cF0> The core of the operating system is found here. Since priviledge levels
|
||||
<a name="l19"></a>are not used, calling it a </span><span class=cF2>kernel</span><span class=cF0> is deceptive. It is </span><span class=cF2>AOT</span><span class=cF0> compiled by </span><span class=cF4>
|
||||
<a name="l20"></a></span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(). It is loaded by the boot loader and must fit in 640K.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a></span><span class=cF2>/Compiler</span><span class=cF0> The compiler module src code is found here. The compiler is </span><span class=cF2>AOT</span><span class=cF0>
|
||||
<a name="l23"></a>compiled to produce a binary file which is loaded at boot. It, too, is </span><span class=cF2>AOT</span><span class=cF0>
|
||||
<a name="l24"></a>compiled by </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>().
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a></span><span class=cF2>/Adam</span><span class=cF0> The non-kernel part of the operating system is found here. It is </span><span class=cF2>JIT</span><span class=cF0>
|
||||
<a name="l27"></a>compiled during boot. The </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> is the father of all tasks, like Adam and
|
||||
<a name="l28"></a>Eve.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a></span><span class=cF2>/0000Boot</span><span class=cF0> Boot files go here. Stage 2 of the TempleOS hard drive master boot
|
||||
<a name="l31"></a>loader, the old hard drive master boot record which is just blk#0, and the
|
||||
<a name="l32"></a>CD/DVD </span><a href="/Wb/Kernel/Kernel.PRJ.HTML#l1"><span class=cF4>0000Kernel.BIN.C</span></a><span class=cF0> file go here. ASCII </span><span class=cF2>0000</span><span class=cF0> is near the top,
|
||||
<a name="l33"></a>alphabetically, in case you use </span><a href="http://www.magiciso.com"><span class=cF0>MagicISO</span></a><span class=cF0>.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a></span><span class=cF5> ::/Home Files</span><span class=cF0>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>The home dir is specified with </span><span class=cF2>'~'</span><span class=cF0>. The home dir is </span><span class=cF2>::/Home</span><span class=cF0> unless you change
|
||||
<a name="l40"></a>it with </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l1"><span class=cF4>HomeSet</span></a><span class=cF0>() or compile the kernel with a cfg option. An empty </span><span class=cF2>/Home</span><span class=cF0> dir
|
||||
<a name="l41"></a>should be valid because it will get default files from the root dir.
|
||||
<a name="l42"></a></span><span class=cF4>
|
||||
<a name="l43"></a></span><a href="/Wb/Home/PersonalMenu..HTML#l1"><span class=cF4>~/PersonalMenu.DD</span></a><span class=cF0> a menu viewed with the </span><span class=cF2><CTRL-m></span><span class=cF0> key or by clicking "</span><span class=cF2>MENU</span><span class=cF0>" in
|
||||
<a name="l44"></a>the upper left border area of a window.
|
||||
<a name="l45"></a></span><span class=cF4>
|
||||
<a name="l46"></a></span><a href="/Wb/Home/PersonalNotes..HTML#l1"><span class=cF4>~/PersonalNotes.DD</span></a><span class=cF0> a personal note file viewed with the </span><span class=cF2><CTRL-SHIFT-M></span><span class=cF0> key.
|
||||
<a name="l47"></a></span><span class=cF4>
|
||||
<a name="l48"></a></span><a href="/Wb/Home/MakeHome.HC.HTML#l1"><span class=cF4>~/MakeHome.HC</span></a><span class=cF0> a file compiled by the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> during </span><a href="/Wb/StartOS.HC.HTML#l44"><span class=cF4>StartOS</span></a><span class=cF0>.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a></span><span class=cF4>~/Home*</span><span class=cF0> Copy </span><span class=cF2>Home*</span><span class=cF0> files from the root into </span><span class=cF2>~</span><span class=cF0> and customize them. These files
|
||||
<a name="l51"></a>are invoked when the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> starts-up.
|
||||
<a name="l52"></a></span><span class=cF4>
|
||||
<a name="l53"></a></span><a href="/Wb/Home/Once..HTML#l1"><span class=cF4>~/Once.HC</span></a><span class=cF0> a file invoked at the start-up of the first user. Customize this!
|
||||
<a name="l54"></a></span><span class=cF4>
|
||||
<a name="l55"></a></span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF0> can be edited by hand or deleted to reset to defaults. Takes
|
||||
<a name="l56"></a>affect next boot.
|
||||
<a name="l57"></a>
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a></span><span class=cF5> Application Policies</span><span class=cF0>
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a>* Place applications in their own </span><span class=cF2>/Apps</span><span class=cF0> subdirectory.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>* Make a file called </span><span class=cF2>Load.HC.Z</span><span class=cF0> to load the application.
|
||||
<a name="l65"></a>
|
||||
<a name="l66"></a>* Make a file called </span><span class=cF2>Run.HC.Z</span><span class=cF0> to load and run the application, preferable by </span><span class=cF2>#in
|
||||
<a name="l67"></a>clude</span><span class=cF0>ing the </span><span class=cF2>Load.HC.Z</span><span class=cF0> file.
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a>* Place user data in a subdirectory of </span><span class=cF2>/Home</span><span class=cF0>, preferably naming the subdirectory
|
||||
<a name="l70"></a>the same as the </span><span class=cF2>/Apps</span><span class=cF0> subdirectory. Or, place data in the </span><span class=cF2>Registry.HC.Z</span><span class=cF0> file.
|
||||
<a name="l71"></a>See </span><a href="/Wb/Demo/RegistryDemo.HC.HTML#l1"><span class=cF4>::/Demo/RegistryDemo.HC</span></a><span class=cF0>.
|
||||
<a name="l72"></a>
|
||||
<a name="l73"></a>* If the app needs files in the </span><span class=cF2>/Home</span><span class=cF0> directory, make an </span><span class=cF2>/Apps</span><span class=cF0> file called </span><span class=cF2>Insta
|
||||
<a name="l74"></a>ll.HC.Z</span><span class=cF0> or </span><span class=cF2>Install.IN.Z</span><span class=cF0> to create the </span><span class=cF2>/Home</span><span class=cF0> subdirectory.
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a>
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a></span><span class=cF5> Programming Guidelines</span><span class=cF0>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a>* Virtual mem/Paging is not used -- it is identity mapped in </span><span class=cF2>x86_64</span><span class=cF0> mode. The
|
||||
<a name="l81"></a>stk does not grow, so alloc enough when the task (process) is </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>ed and use
|
||||
<a name="l82"></a>the heap for most things. (The </span><span class=cF2>heap</span><span class=cF0> refers to </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l383"><span class=cF4>Free</span></a><span class=cF0>().)
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a>* You can </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l383"><span class=cF4>Free</span></a><span class=cF0>(</span><span class=cF2>NULL</span><span class=cF0>).
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a>* See </span><a href="/Wb/Doc/Glossary.DD.HTML#l305"><span class=cF4>Naming Convention</span></a><span class=cF0> and </span><a href="/Wb/Doc/Glossary.DD.HTML#l3"><span class=cF4>Abbreviations</span></a><span class=cF0>.
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a>* There are two modes of compiling, </span><a href="/Wb/Doc/Glossary.DD.HTML#l208"><span class=cF4>AOT Compile Mode</span></a><span class=cF0> and </span><a href="/Wb/Doc/Glossary.DD.HTML#l221"><span class=cF4>JIT Compile Mode</span></a><span class=cF0>.
|
||||
<a name="l89"></a>Compilation is done in both -- neither is "interpreted". Use </span><a href="/Wb/Doc/Glossary.DD.HTML#l221"><span class=cF4>JIT Mode</span></a><span class=cF0>.
|
||||
<a name="l90"></a>
|
||||
<a name="l91"></a>* </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0>
|
||||
<a name="l92"></a>
|
||||
<a name="l93"></a>* Use </span><span class=cF2>I64</span><span class=cF0> instead of smaller int sizes because the compiler converts everything
|
||||
<a name="l94"></a>to 64-bit. Don't use unsigned unless it actually breaks. A policy of signed
|
||||
<a name="l95"></a>keeps it simple so you don't have to agonize over choices.
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a> </span><span class=cF9>U32</span><span class=cF0> DistDist(</span><span class=cF9>U16</span><span class=cF0> x1, </span><span class=cF9>U16</span><span class=cF0> y1, </span><span class=cF9>U16</span><span class=cF0> x2, </span><span class=cF9>U16</span><span class=cF0> y2)
|
||||
<a name="l98"></a> {</span><span class=cF2>//This requires zero-extend when fetching args.</span><span class=cF0>
|
||||
<a name="l99"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>SqrI64</span><span class=cF0>(x1-x2)+</span><span class=cF5>SqrI64</span><span class=cF0>(y1-y2);
|
||||
<a name="l100"></a> }
|
||||
<a name="l101"></a>
|
||||
<a name="l102"></a> </span><span class=cF9>I64</span><span class=cF0> DistDist(</span><span class=cF9>I64</span><span class=cF0> x1, </span><span class=cF9>I64</span><span class=cF0> y1, </span><span class=cF9>I64</span><span class=cF0> x2, </span><span class=cF9>I64</span><span class=cF0> y2)
|
||||
<a name="l103"></a> {
|
||||
<a name="l104"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>SqrI64</span><span class=cF0>(x1-x2)+</span><span class=cF5>SqrI64</span><span class=cF0>(y1-y2);
|
||||
<a name="l105"></a> }
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a>* In-order, short circuit logic is assumed.
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a>* Avoid boolean expression assignments. Boolean assignments don't have short
|
||||
<a name="l110"></a>circuit logic and are not compiled efficiently. The </span><span class=cF2>Bool</span><span class=cF0> type is just an alias
|
||||
<a name="l111"></a>for a 1 byte signed int -- nothing forces it to </span><span class=cF2>1</span><span class=cF0> or </span><span class=cF2>0</span><span class=cF0>. There is a </span><a href="/Wb/Kernel/KernelB.HH.HTML#l119"><span class=cF4>ToBool</span></a><span class=cF0>()
|
||||
<a name="l112"></a>function that will for to </span><span class=cF2>1</span><span class=cF0> ot </span><span class=cF2>0</span><span class=cF0>, however.
|
||||
<a name="l113"></a>
|
||||
<a name="l114"></a>* Glbl vars in </span><span class=cF2>AOT</span><span class=cF0> BIN modules are initialized to zero. They occupy space in
|
||||
<a name="l115"></a>BIN files.
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a>* Bracketing code with </span><span class=cF2>PUSHFD CLI</span><span class=cF0> and </span><span class=cF2>POPFD</span><span class=cF0> will protect against simultaneous
|
||||
<a name="l118"></a>accesses from tasks on <u>one</u> core. To protect against multiple cores, you need a
|
||||
<a name="l119"></a>locked semaphore. I think semiphores need to be in their own cache line, but
|
||||
<a name="l120"></a>I'm not sure. I use lock bits in a lot of places not aligned.
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a>* </span><a href="/Wb/Kernel/KMisc.HC.HTML#l280"><span class=cF4>SysDbg</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/KMisc.HC.HTML#l285"><span class=cF4>IsSysDbg</span></a><span class=cF0>() are really handy when working on the compiler or
|
||||
<a name="l123"></a>kernel. It's just a bit you can set and test.
|
||||
<a name="l124"></a>
|
||||
<a name="l125"></a>* I don't use </span><span class=cF2>U0 *</span><span class=cF0> because the size is zero for ptr arithmetic.
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a>* Use </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3456"><span class=cF4>CH_SHIFT_SPACE</span></a><span class=cF0> for spaces in quotes in source code because I run </span><span class=cF4>
|
||||
<a name="l128"></a></span><a href="/Wb/Adam/Opt/Utils/StrUtils.HC.HTML#l201"><span class=cF4>Spaces-to-Tabs</span></a><span class=cF0> on source code.
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a>* Do not use </span><span class=cF2>#if</span><span class=cF0> or </span><span class=cF2>#ifdef</span><span class=cF0>
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a>
|
||||
<a name="l133"></a>
|
||||
<a name="l134"></a></span><span class=cF5> Hash Sym Tables</span><span class=cF0>
|
||||
<a name="l135"></a>
|
||||
<a name="l136"></a>* See </span><a href="/Wb/Adam/AHash.HC.HTML#l1"><span class=cF4>::/Adam/AHash.HC</span></a><span class=cF0> for examples of how the hash tables are set-up.
|
||||
<a name="l137"></a>Basically, syms are placed into hash tables and child process hash tables are
|
||||
<a name="l138"></a>chained to parents. This provides scopes for vars and functions.
|
||||
<a name="l139"></a>
|
||||
<a name="l140"></a>* </span><span class=cF2>adam_task->hash_table</span><span class=cF0> holds the </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> syms loaded in on start-up.
|
||||
<a name="l141"></a>
|
||||
<a name="l142"></a>* </span><span class=cF2>Fs->hash_table</span><span class=cF0> holds user HolyC syms and if a sym is not found, it checks
|
||||
<a name="l143"></a>parents. When a duplicate sym is added to the table, it overshadows the prev
|
||||
<a name="l144"></a>sym. When developing software, typically you include the file at the cmd
|
||||
<a name="l145"></a>prompt, make changes and reinclude it. Old syms are overshadowed but they are
|
||||
<a name="l146"></a>still there. Periodically, kill the TASK and start fresh when mem is low. If
|
||||
<a name="l147"></a>you wish your applications to free themselves instead of staying in mem, spawn
|
||||
<a name="l148"></a>or </span><a href="/Wb/Kernel/Job.HC.HTML#l376"><span class=cF4>PopUp</span></a><span class=cF0>() a task to run the application and kill it when it's done.
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a>* To display the contents of a hash table, use the </span><a href="/Wb/Adam/AHash.HC.HTML#l149"><span class=cF4>Who</span></a><span class=cF0>() routine or the
|
||||
<a name="l151"></a>varients. </span><a href="/Wb/Adam/AHash.HC.HTML#l328"><span class=cF4>HashDepthRep</span></a><span class=cF0>() gives a histogram of how long the chains are, in case
|
||||
<a name="l152"></a>you wish to make hash table sizes bigger.
|
||||
<a name="l153"></a>
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a>
|
||||
<a name="l156"></a></span><span class=cF5> Assembly Language</span><span class=cF0>
|
||||
<a name="l157"></a>
|
||||
<a name="l158"></a>See </span><a href="/Wb/Doc/Asm.DD.HTML#l1"><span class=cF4>::/Doc/Asm.DD</span></a><span class=cF0>.
|
||||
<a name="l159"></a>
|
||||
<a name="l160"></a>* </span><span class=cF2>FS</span><span class=cF0> must always point to the cur </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3271"><span class=cF4>CTask</span></a><span class=cF0>.
|
||||
<a name="l161"></a>
|
||||
<a name="l162"></a>* </span><span class=cF2>GS</span><span class=cF0> must always point to the cur </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3391"><span class=cF4>CCPU</span></a><span class=cF0>.
|
||||
<a name="l163"></a>
|
||||
<a name="l164"></a>* Don't change the segment regs unless interrupts are off. It's hard to do,
|
||||
<a name="l165"></a>anyway. </span><a href="/Wb/Kernel/KUtils.HC.HTML#l445"><span class=cF4>SET_FS_BASE</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KUtils.HC.HTML#l433"><span class=cF4>SET_GS_BASE</span></a><span class=cF0>.
|
||||
<a name="l166"></a>
|
||||
<a name="l167"></a>* When interacting with </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> compiled code, preserve </span><span class=cF2>RBP, RSI, RDI, R10-R15</span><span class=cF0>
|
||||
<a name="l168"></a>because the compiler uses these for reg vars. You are free to clobber </span><span class=cF2>RAX, RBX,
|
||||
<a name="l169"></a>RCX, RDX</span><span class=cF0>, </span><span class=cF2>R8</span><span class=cF0> and </span><span class=cF2>R9</span><span class=cF0>. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1804"><span class=cF4>Compiler Reg Masks</span></a><span class=cF0>, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1776"><span class=cF4>PUSH_C_REGS</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1777"><span class=cF4>POP_C_REGS</span></a><span class=cF0>
|
||||
<a name="l170"></a>
|
||||
<a name="l171"></a>* I recommend using the standard stk frame for functions because </span><a href="/Wb/Kernel/KDbg.HC.HTML#l60"><span class=cF4>Caller</span></a><span class=cF0>() is
|
||||
<a name="l172"></a>used to display the call stk, such as for the wallpaper.
|
||||
<a name="l173"></a></span><span class=cF2> PUSH RBP
|
||||
<a name="l174"></a> MOV RBP,RSP
|
||||
<a name="l175"></a> SUB RSP,nnnn
|
||||
<a name="l176"></a>...
|
||||
<a name="l177"></a> LEAVE
|
||||
<a name="l178"></a> RET
|
||||
<a name="l179"></a></span><span class=cF0>
|
||||
<a name="l180"></a>* The args are removed from the stack with </span><span class=cF2>RET1</span><span class=cF0> stmts.
|
||||
<a name="l181"></a>
|
||||
<a name="l182"></a> </span><span class=cF2>RET1 16 //remove two args</span><span class=cF0>
|
||||
<a name="l183"></a>
|
||||
<a name="l184"></a>* No args are passed in regs.
|
||||
<a name="l185"></a>
|
||||
<a name="l186"></a>* RAX holds function return values, of course.
|
||||
<a name="l187"></a></span><span class=cF8>
|
||||
<a name="l188"></a>* "MagicISO" is a trademark owned by MagicISO Corp.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,79 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cFA>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>There is a symbol (hash) table for each task. When a sym is not found, the
|
||||
<a name="l29"></a>parent task's sym table is checked. All tasks chain back to the </span><span class=cF2>Adam</span><span class=cF0> task.
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>TempleOS sym tables are implemented with an array of linked-lists. A num is
|
||||
<a name="l32"></a>generated from a string by </span><a href="/Wb/Kernel/KHashA.HC.HTML#l254"><span class=cF4>HashStr</span></a><span class=cF0>() to index into the array of linked-lists.
|
||||
<a name="l33"></a>Multiple strings can generate the same num, so linked-lists are built. Newer
|
||||
<a name="l34"></a>entries overshadow older ones.
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>There are various types of entries. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l686"><span class=cF4>Hash Entry Types</span></a><span class=cF0>.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a></span><span class=cF5>Symbol Look-up</span><span class=cF0> (Used many places including the </span><a href="/Wb/Compiler/Lex.HC.HTML#l499"><span class=cF4>JIT Compiler</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KLoad.HC.HTML#l19"><span class=cF4>Loader</span></a><span class=cF0>.)
|
||||
<a name="l39"></a>1) Symbol name is </span><a href="/Wb/Kernel/KHashA.HC.HTML#l4"><span class=cF4>hashed</span></a><span class=cF0> by adding and shifting the ASCII of all chars.
|
||||
<a name="l40"></a>2) </span><a href="/Wb/Kernel/KernelA.HH.HTML#l647"><span class=cF4>hash table</span></a><span class=cF0>->body[] array is indexed.
|
||||
<a name="l41"></a>3) Linked-lst is traversed until match of text and type of entry.
|
||||
<a name="l42"></a>4) If not found, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l647"><span class=cF4>hash table</span></a><span class=cF0>->next table is searched.
|
||||
<a name="l43"></a>
|
||||
<a name="l44"></a>Duplicate entries are allowed -- they overshadow old entries.
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a></span><span class=cF5>Address-to-Symbol Look-up</span><span class=cF0> (Slow because not important. We could use trees.)
|
||||
<a name="l47"></a>1) FunSeg Cache is </span><a href="/Wb/Kernel/FunSeg.HC.HTML#l114"><span class=cF4>scanned</span></a><span class=cF0>.
|
||||
<a name="l48"></a>2) Hash Tables are </span><a href="/Wb/Kernel/FunSeg.HC.HTML#l54"><span class=cF4>scanned</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Recompile the kernel with </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2773"><span class=cF4>_CFG_HEAP_DBG</span></a><span class=cF0>=TRUE if you want more heap debugging.
|
||||
<a name="l2"></a>You are on your own.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,130 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>//Press F5 in the editor to compile and run.</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>--------Hello.HC.Z---------
|
||||
<a name="l4"></a></span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>--------Hello.HC.Z---------
|
||||
<a name="l8"></a></span><span class=cF1>U0</span><span class=cF0> Main()
|
||||
<a name="l9"></a>{
|
||||
<a name="l10"></a> </span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
||||
<a name="l11"></a>}
|
||||
<a name="l12"></a>Main;
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>--------Hello.HC.Z---------
|
||||
<a name="l16"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l17"></a>{
|
||||
<a name="l18"></a> </span><span class=cF6>"%s"</span><span class=cF0>,st;
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>--------Hello.HC.Z---------
|
||||
<a name="l24"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint2(</span><span class=cF1>U8</span><span class=cF0> *st1,</span><span class=cF1>U8</span><span class=cF0> *st2) </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
||||
<a name="l25"></a>{
|
||||
<a name="l26"></a> </span><span class=cF6>"%s %s\n"</span><span class=cF0>,st1,st2; </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
||||
<a name="l27"></a>}
|
||||
<a name="l28"></a>MyPrint2(</span><span class=cF6>"Hello"</span><span class=cF0>,</span><span class=cF6>"World"</span><span class=cF0>);
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>--------Hello.HC.Z---------
|
||||
<a name="l32"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l33"></a>{
|
||||
<a name="l34"></a> </span><span class=cF6>""</span><span class=cF0> st; </span><span class=cF2>//Empty with no comma means first is fmt str.</span><span class=cF0>
|
||||
<a name="l35"></a>}
|
||||
<a name="l36"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>--------Hello.HC.Z---------
|
||||
<a name="l40"></a></span><span class=cF1>asm</span><span class=cF0> {
|
||||
<a name="l41"></a>MSG: </span><span class=cF1>DU8</span><span class=cF0> </span><span class=cF6>"Hello World\n"</span><span class=cF0>,0;
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a></span><span class=cF2>//The convention is underscore on C callable.</span><span class=cF0>
|
||||
<a name="l44"></a></span><span class=cF2>//Two colons means exported symbol.</span><span class=cF0>
|
||||
<a name="l45"></a>_HELLO_WORLD::
|
||||
<a name="l46"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
||||
<a name="l47"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>,MSG
|
||||
<a name="l49"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
||||
<a name="l50"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
||||
<a name="l51"></a> </span><span class=cF1>RET</span><span class=cF0>
|
||||
<a name="l52"></a>}
|
||||
<a name="l53"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>--------Hello.HC.Z---------
|
||||
<a name="l57"></a></span><span class=cF1>asm</span><span class=cF0> {
|
||||
<a name="l58"></a>_HELLO_WORLD::
|
||||
<a name="l59"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
||||
<a name="l60"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>,</span><span class=cF6>'Hello '</span><span class=cF0>
|
||||
<a name="l61"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0> </span><span class=cF2>//Up to 8 chars packed into one 64-bit int.</span><span class=cF0>
|
||||
<a name="l62"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>,</span><span class=cF6>'World\n'</span><span class=cF0>
|
||||
<a name="l63"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
||||
<a name="l64"></a> </span><span class=cF1>RET</span><span class=cF0>
|
||||
<a name="l65"></a>}
|
||||
<a name="l66"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a>--------Hello.HC.Z---------
|
||||
<a name="l70"></a></span><span class=cF1>asm</span><span class=cF0> {
|
||||
<a name="l71"></a>_MY_PRINT::
|
||||
<a name="l72"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
||||
<a name="l73"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
||||
<a name="l74"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>,</span><span class=cFC>RSP</span><span class=cF0>
|
||||
<a name="l75"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>,</span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
||||
<a name="l77"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
||||
<a name="l78"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
||||
<a name="l79"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
||||
<a name="l80"></a> </span><span class=cF1>RET1</span><span class=cF0> 8 </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
||||
<a name="l81"></a>}
|
||||
<a name="l82"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
||||
<a name="l83"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a>--------Hello.HC.Z---------
|
||||
<a name="l87"></a></span><span class=cF1>asm</span><span class=cF0> {
|
||||
<a name="l88"></a>_MY_PRINT::
|
||||
<a name="l89"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
||||
<a name="l90"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>,</span><span class=cFC>RSP</span><span class=cF0>
|
||||
<a name="l92"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
||||
<a name="l93"></a> </span><span class=cF1>CALL</span><span class=cF0> &</span><span class=cF5>PutS</span><span class=cF0> </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
||||
<a name="l94"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
||||
<a name="l95"></a> </span><span class=cF1>RET1</span><span class=cF0> 8
|
||||
<a name="l96"></a>}
|
||||
<a name="l97"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
||||
<a name="l98"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
||||
<a name="l99"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,124 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF5><u>+] Keyboard Ctrls
|
||||
<a name="l4"></a>+] Mouse Ctrls
|
||||
<a name="l5"></a>+] Keyboard-Mouse Ctrls</span><span class=cF0>
|
||||
<a name="l6"></a></span><span class=cF4>
|
||||
<a name="l7"></a></u></span><a href="/Wb/Doc/Welcome.DD.HTML#l1"><span class=cF4>Welcome</span></a><span class=cF0> </span><a href="/Wb/Doc/AboutTempleOS.DD.HTML#l1"><span class=cF4>About TempleOS</span></a><span class=cF4>
|
||||
<a name="l8"></a></span><a href="/Wb/Doc/CmdLineOverview.DD.HTML#l1"><span class=cF4>Command Line</span></a><span class=cF0> </span><span class=cF9><u>Take Tour</span><span class=cF4>
|
||||
<a name="l9"></a></u></span><a href="/Wb/Doc/DemoIndex.DD.HTML#l1"><span class=cF4>Demo Index</span></a><span class=cF0> </span><span class=cF9><u>Key Map</span><span class=cF4>
|
||||
<a name="l10"></a></u></span><a href="/Wb/Doc/Features.DD.HTML#l1"><span class=cF4>Features</span></a><span class=cF0> </span><a href="/Wb/Doc/Requirements.DD.HTML#l1"><span class=cF4>Requirements</span></a><span class=cF4>
|
||||
<a name="l11"></a></span><a href="/Wb/Doc/Charter.DD.HTML#l1"><span class=cF4>Charter</span></a><span class=cF0> </span><a href="/Wb/Doc/Strategy.DD.HTML#l1"><span class=cF4>Strategic Decisions</span></a><span class=cF4>
|
||||
<a name="l12"></a></span><a href="/Wb/Doc/FAQ.DD.HTML#l1"><span class=cF4>F.A.Q.</span></a><span class=cF0> </span><a href="/Wb/Doc/Glossary.DD.HTML#l1"><span class=cF4>Glossary</span></a><span class=cF4>
|
||||
<a name="l13"></a></span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> </span><a href="/Wb/Doc/CompilerOverview.DD.HTML#l1"><span class=cF4>Compiler Index</span></a><span class=cF4>
|
||||
<a name="l14"></a></span><a href="/Wb/Doc/WhyNotMore.DD.HTML#l1"><span class=cF4>Why Not More?</span></a><span class=cF0> </span><a href="/Wb/Doc/Demands.DD.HTML#l1"><span class=cF4>Demands</span></a><span class=cF4>
|
||||
<a name="l15"></a></span><a href="/Wb/Doc/StdTempleOSPC.DD.HTML#l1"><span class=cF4>The Std TempleOS PC</span></a><span class=cF0>
|
||||
<a name="l16"></a> </span><span class=cF5>
|
||||
<a name="l17"></a><u>+] User Help
|
||||
<a name="l18"></a>+] Admin Help
|
||||
<a name="l19"></a>+] Programmer help
|
||||
<a name="l20"></a>+] System Programmer Help</span><span class=cF0>
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a></u></span><span class=cF5> Index</span><span class=cF4>
|
||||
<a name="l24"></a><u>AutoComplete
|
||||
<a name="l25"></a>Bit
|
||||
<a name="l26"></a>Boot
|
||||
<a name="l27"></a>Call
|
||||
<a name="l28"></a></u></span><a href="/Wb/Doc/CharOverview.DD.HTML#l1"><span class=cF4>Char Overview</span></a><span class=cF4>
|
||||
<a name="l29"></a>Char Routines
|
||||
<a name="l30"></a>Circular Queue
|
||||
<a name="l31"></a></span><a href="/Wb/Doc/CmdLineOverview.DD.HTML#l1"><span class=cF4>Cmd Line Overview</span></a><span class=cF4>
|
||||
<a name="l32"></a>Cmd Line Routines
|
||||
<a name="l33"></a></span><a href="/Wb/Doc/CompilerOverview.DD.HTML#l1"><span class=cF4>Compiler Overview</span></a><span class=cF4>
|
||||
<a name="l34"></a>Compiler Routines
|
||||
<a name="l35"></a>Compression
|
||||
<a name="l36"></a>Ctrls
|
||||
<a name="l37"></a>Data Types
|
||||
<a name="l38"></a>Date
|
||||
<a name="l39"></a></span><a href="/Wb/Doc/DbgOverview.DD.HTML#l1"><span class=cF4>Debugging Overview</span></a><span class=cF4>
|
||||
<a name="l40"></a>Debugging Routines
|
||||
<a name="l41"></a>Define
|
||||
<a name="l42"></a>Devices
|
||||
<a name="l43"></a>Disk
|
||||
<a name="l44"></a></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>Doc Overview</span></a><span class=cF4>
|
||||
<a name="l45"></a>Doc Routines
|
||||
<a name="l46"></a>Exceptions
|
||||
<a name="l47"></a>File
|
||||
<a name="l48"></a></span><a href="/Wb/Doc/FileUtils.DD.HTML#l1"><span class=cF4>File Utils</span></a><span class=cF4>
|
||||
<a name="l49"></a>Frames
|
||||
<a name="l50"></a>God
|
||||
<a name="l51"></a></span><a href="/Wb/Doc/GraphicsOverview.DD.HTML#l1"><span class=cF4>Graphics Overview</span></a><span class=cF4>
|
||||
<a name="l52"></a>Graphics Routines
|
||||
<a name="l53"></a>Hash
|
||||
<a name="l54"></a>Help System
|
||||
<a name="l55"></a></span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF4>
|
||||
<a name="l56"></a>InFile
|
||||
<a name="l57"></a>Info
|
||||
<a name="l58"></a>Install
|
||||
<a name="l59"></a>I/O
|
||||
<a name="l60"></a>Job
|
||||
<a name="l61"></a></span><a href="/Wb/Doc/KeyAlloc.DD.HTML#l1"><span class=cF4>Key Allocations</span></a><span class=cF4>
|
||||
<a name="l62"></a>Keyboard Devices
|
||||
<a name="l63"></a></span><a href="/Wb/Adam/DolDoc/DocLink.HC.HTML#l29"><span class=cF4>Link Types</span></a><span class=cF4>
|
||||
<a name="l64"></a>Math
|
||||
<a name="l65"></a></span><a href="/Wb/Doc/MemOverview.DD.HTML#l1"><span class=cF4>Memory Overview</span></a><span class=cF4>
|
||||
<a name="l66"></a>Memory Routines
|
||||
<a name="l67"></a>Menus
|
||||
<a name="l68"></a>Messages
|
||||
<a name="l69"></a>Misc
|
||||
<a name="l70"></a>Mouse
|
||||
<a name="l71"></a>MultiCore
|
||||
<a name="l72"></a></span><a href="/Wb/Compiler/OpCodes.DD.HTML#l251"><span class=cF4>OpCodes</span></a><span class=cF4>
|
||||
<a name="l73"></a></span><a href="/Wb/Doc/HolyC.DD.HTML#l215"><span class=cF4>Operator Precedences</span></a><span class=cF4>
|
||||
<a name="l74"></a>PCI
|
||||
<a name="l75"></a></span><a href="/Wb/Doc/Print.DD.HTML#l1"><span class=cF4>Print("") Fmt Strings</span></a><span class=cF4>
|
||||
<a name="l76"></a>Processor
|
||||
<a name="l77"></a>Profiler
|
||||
<a name="l78"></a></span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF4>
|
||||
<a name="l79"></a>Registry
|
||||
<a name="l80"></a></span><a href="/Wb/Doc/CharOverview.DD.HTML#l1"><span class=cF4>Scan Codes</span></a><span class=cF4>
|
||||
<a name="l81"></a>ScrnCast
|
||||
<a name="l82"></a>Sound
|
||||
<a name="l83"></a>Sprites
|
||||
<a name="l84"></a>StdIn
|
||||
<a name="l85"></a>StdOut
|
||||
<a name="l86"></a>String
|
||||
<a name="l87"></a>Task
|
||||
<a name="l88"></a>TextBase Layer
|
||||
<a name="l89"></a>Time
|
||||
<a name="l90"></a>Training
|
||||
<a name="l91"></a></span><a href="/Wb/Doc/TOSZ.DD.HTML#l1"><span class=cF4>TOSZ</span></a><span class=cF4>
|
||||
<a name="l92"></a>Utils
|
||||
<a name="l93"></a>Windows</span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,41 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>#help_index "Topic/SubTopic;OtherTopic"</span><span class=cF0>
|
||||
<a name="l2"></a>The help index preprocessor compiler directive sets the topics for syms
|
||||
<a name="l3"></a>subsequently defined. You specify subtopics with a '</span><span class=cF2>/</span><span class=cF0>' tree hierarchy and
|
||||
<a name="l4"></a>separate multiple topics with a '</span><span class=cF2>;</span><span class=cF0>'. The index ctrls </span><a href="/Wb/Adam/DolDoc/DocLink.HC.HTML#l39"><span class=cF4>HI:index</span></a><span class=cF0> links.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF2>public</span><span class=cF0> causes a sym to appear in help_index reports.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a></span><span class=cF2>#help_file "filename[.DD.Z]"</span><span class=cF0>
|
||||
<a name="l9"></a>The help file preprocessor directive makes a file into the heading of a </span><span class=cF4>
|
||||
<a name="l10"></a></span><a href="/Wb/Adam/DolDoc/DocLink.HC.HTML#l39"><span class=cF4>HI:index</span></a><span class=cF0> report for the current help index.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,354 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> HolyC</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>* See </span><a href="/Wb/Doc/CompilerOverview.DD.HTML#l1"><span class=cF4>::/Doc/CompilerOverview.DD</span></a><span class=cF0>.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>* See </span><a href="/Wb/Doc/ScopingLinkage.DD.HTML#l1"><span class=cF4>Scoping and Linkage</span></a><span class=cF0> for details on </span><span class=cF2>extern</span><span class=cF0>, </span><span class=cF2>import</span><span class=cF0>, </span><span class=cF2>_extern</span><span class=cF0>, </span><span class=cF2>_import</span><span class=cF0>, etc.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>* Built-in types include </span><span class=cF2>I0,I8,I16,I32,I64</span><span class=cF0> for signed 0-8 byte ints and </span><span class=cF2>U0,U8,U1
|
||||
<a name="l8"></a>6,U32,U64</span><span class=cF0> for unsigned 0-8 byte ints and </span><span class=cF2>F64</span><span class=cF0> for 8 byte floats.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF2> U0 void, but ZERO size!
|
||||
<a name="l11"></a> I8 char
|
||||
<a name="l12"></a> U8 unsigned char
|
||||
<a name="l13"></a> I16 short
|
||||
<a name="l14"></a> U16 unsigned short
|
||||
<a name="l15"></a> I32 int
|
||||
<a name="l16"></a> U32 unsigned int
|
||||
<a name="l17"></a> I64 long (64-bit)
|
||||
<a name="l18"></a> U64 unsigned long (64-bit)
|
||||
<a name="l19"></a> F64 double</span><span class=cF0>
|
||||
<a name="l20"></a> </span><span class=cF4>no F32 float.</span><span class=cF0>
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>* Function with no args, or just default args can be called without parentheses.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a> ></span><span class=cF2>Dir("*");</span><span class=cF0>
|
||||
<a name="l25"></a> ></span><span class=cF2>Dir();</span><span class=cF0>
|
||||
<a name="l26"></a> ></span><span class=cF2>Dir;</span><span class=cF0>
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>* Default args don't have to be on the end. This code is valid:
|
||||
<a name="l29"></a> </span><span class=cF2>U0 Test(I64 i=4,I64 j,I64 k=5)
|
||||
<a name="l30"></a> {
|
||||
<a name="l31"></a> Print("%X %X %X\n",i,j,k);
|
||||
<a name="l32"></a> }
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a> Test(,3);</span><span class=cF0>
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>* A char const all alone is sent to </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l20"><span class=cF4>PutChars</span></a><span class=cF0>(). A string with or without args
|
||||
<a name="l37"></a>is sent to </span><a href="/Wb/Kernel/StrPrint.HC.HTML#l890"><span class=cF4>Print</span></a><span class=cF0>(). An empty string literal signals a variable fmt_str follows.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a> </span><span class=cF2>void DemoC(char drv,char *fmt,char *name,int age)
|
||||
<a name="l40"></a> {
|
||||
<a name="l41"></a> printf("Hello World!\n");
|
||||
<a name="l42"></a> printf("%s age %d\n",name,age);
|
||||
<a name="l43"></a> printf(fmt,name,age);
|
||||
<a name="l44"></a> putchar(drv);
|
||||
<a name="l45"></a> putchar('*');
|
||||
<a name="l46"></a> }
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a> U0 DemoHolyC(U8 drv,U8 *fmt,U8 *name,I64 age)
|
||||
<a name="l49"></a> {
|
||||
<a name="l50"></a> "Hello World!\n";
|
||||
<a name="l51"></a> "%s age %d\n",name,age;
|
||||
<a name="l52"></a> "" fmt,name,age;
|
||||
<a name="l53"></a> '' drv;
|
||||
<a name="l54"></a> '*';
|
||||
<a name="l55"></a> }
|
||||
<a name="l56"></a></span><span class=cF0>
|
||||
<a name="l57"></a>* When dealing with function addresses such as for callbacks, precede the name
|
||||
<a name="l58"></a>with "</span><span class=cF2>&</span><span class=cF0>".
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a>* Type casting is postfix. To typecast int or F64, use </span><a href="/Wb/Kernel/KernelB.HH.HTML#l121"><span class=cF4>ToI64</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/KernelB.HH.HTML#l119"><span class=cF4>ToBool</span></a><span class=cF0>() or </span><span class=cF4>
|
||||
<a name="l61"></a></span><a href="/Wb/Kernel/KernelB.HH.HTML#l120"><span class=cF4>ToF64</span></a><span class=cF0>(). (TempleOS follows normal C float<-->int conversion, but sometimes you
|
||||
<a name="l62"></a>want to override. These functions are better than multiplying by "1.0" to
|
||||
<a name="l63"></a>convert to float.)
|
||||
<a name="l64"></a>
|
||||
<a name="l65"></a>* There is no </span><span class=cF2>main()</span><span class=cF0> function. Any code outside of functions gets executed upon
|
||||
<a name="l66"></a>start-up, in order.
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>* There are no bit fields, but there are </span><span class=cF4><u>bit access</u></span><span class=cF0> routines and you can access
|
||||
<a name="l69"></a>bytes or words within any int. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l105"><span class=cF4>I64 declaration</span></a><span class=cF0>. A class can be accessed as
|
||||
<a name="l70"></a>a whole are subints, if you put a type in front of the </span><span class=cF2>class</span><span class=cF0> declaration.
|
||||
<a name="l71"></a>
|
||||
<a name="l72"></a> </span><span class=cF2>public I64i union I64 //"I64i" is intrinsic. We are defining "I64".
|
||||
<a name="l73"></a> {
|
||||
<a name="l74"></a> I8i i8[8];
|
||||
<a name="l75"></a> U8i u8[8];
|
||||
<a name="l76"></a> I16 i16[4];
|
||||
<a name="l77"></a> U16 u16[4];
|
||||
<a name="l78"></a> I32 i32[2];
|
||||
<a name="l79"></a> U32 u32[2];
|
||||
<a name="l80"></a> };
|
||||
<a name="l81"></a>
|
||||
<a name="l82"></a> I64 i=0x123456780000DEF0;
|
||||
<a name="l83"></a> i.u16[1]=0x9ABC;
|
||||
<a name="l84"></a></span><span class=cF0>
|
||||
<a name="l85"></a>* Variable arg count functions (</span><span class=cF2>...</span><span class=cF0>) can access their args with built-in
|
||||
<a name="l86"></a>variables similar to '</span><span class=cF2>this</span><span class=cF0>' in C++. They are '</span><span class=cF2>I64 argc</span><span class=cF0>' and '</span><span class=cF2>I64 argv[]</span><span class=cF0>'.
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a> </span><span class=cF2>I64 AddNums(...)
|
||||
<a name="l89"></a> {
|
||||
<a name="l90"></a> I64 i,res=0;
|
||||
<a name="l91"></a> for (i=0;i<argc;i++)
|
||||
<a name="l92"></a> res+=argv[i];
|
||||
<a name="l93"></a> return res;
|
||||
<a name="l94"></a> }
|
||||
<a name="l95"></a>
|
||||
<a name="l96"></a> </span><span class=cF0>></span><span class=cF2>AddNums(1,2,3);</span><span class=cF0>
|
||||
<a name="l97"></a> ans=6
|
||||
<a name="l98"></a> </span><span class=cF2>
|
||||
<a name="l99"></a>
|
||||
<a name="l100"></a> public U0 GrPrint(CDC *dc,I64 x,I64 y,U8 *fmt,...)
|
||||
<a name="l101"></a> {
|
||||
<a name="l102"></a> U8 *buf=</span><a href="/Wb/Kernel/StrPrint.HC.HTML#l208"><span class=cF4>StrPrintJoin</span></a><span class=cF2>(NULL,fmt,argc,argv);//SPrintF() with </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF2>()ed string.
|
||||
<a name="l103"></a> </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l913"><span class=cF4>GrPutS</span></a><span class=cF2>(dc,x,y,buf); //Plot string at x,y pixels. GrPutS is not public.
|
||||
<a name="l104"></a> Free(buf);
|
||||
<a name="l105"></a> }
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a> ...
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a> GrPrint(gr.dc,(GR_WIDTH-10*FONT_WIDTH)>>1,(GR_HEIGHT-FONT_HEIGHT)>>1,
|
||||
<a name="l110"></a> "Score:%4d",score); //Print score in the center of the scrn.
|
||||
<a name="l111"></a> ...
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a></span><span class=cF0>
|
||||
<a name="l114"></a>* Allows "</span><span class=cF2>5<i<j+1<20</span><span class=cF0>" instead of "</span><span class=cF2>5<i && i<j+1 && j+1<20</span><span class=cF0>".
|
||||
<a name="l115"></a>
|
||||
<a name="l116"></a> </span><span class=cF2>if (13<=age<20)
|
||||
<a name="l117"></a> "Teen-ager";
|
||||
<a name="l118"></a></span><span class=cF0>
|
||||
<a name="l119"></a>* if you know a switch stmt will not exceed the lowest or highest case values. </span><span class=cF2>
|
||||
<a name="l120"></a>switch []</span><span class=cF0> is a little faster because it doesn't check.
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a>* </span><span class=cF2>switch</span><span class=cF0> stmts always use a jump table. Don't use them with cases with really
|
||||
<a name="l123"></a>big, sparse ranges.
|
||||
<a name="l124"></a>
|
||||
<a name="l125"></a>* Allows ranges like "</span><span class=cF2>case 4...7:</span><span class=cF0>" in </span><span class=cF2>switch</span><span class=cF0> stmts.
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a>* A no case number causes next higher int case in </span><span class=cF2>switch</span><span class=cF0> stmts. See </span><span class=cF4>
|
||||
<a name="l128"></a></span><a href="/Wb/Demo/NullCase.HC.HTML#l1"><span class=cF4>::/Demo/NullCase.HC</span></a><span class=cF0>.
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a> </span><span class=cF2>I64 i;
|
||||
<a name="l131"></a> for (i=0;i<20;i++)
|
||||
<a name="l132"></a> switch (i) {
|
||||
<a name="l133"></a> case: "Zero\n"; break; //Starts at zero
|
||||
<a name="l134"></a> case: "One\n"; break; //One plus prev case.
|
||||
<a name="l135"></a> case: "Two\n"; break;
|
||||
<a name="l136"></a> case: "Three\n"; break;
|
||||
<a name="l137"></a> case 10: "Ten\n"; break;
|
||||
<a name="l138"></a> case: "Eleven\n"; break; //One plus prev case.
|
||||
<a name="l139"></a> }</span><span class=cF0>
|
||||
<a name="l140"></a>
|
||||
<a name="l141"></a>* Switch statements can be nestled with a single switch expression! This is
|
||||
<a name="l142"></a>known as a "sub_switch" statement. </span><span class=cF2>start</span><span class=cF0>/</span><span class=cF2>end</span><span class=cF0> are used to group cases. Don't
|
||||
<a name="l143"></a>goto out of, throw an exception out of, or return out of the </span><span class=cF2>start</span><span class=cF0> front porch
|
||||
<a name="l144"></a>area. See </span><a href="/Wb/Demo/SubSwitch.HC.HTML#l1"><span class=cF4>::/Demo/SubSwitch.HC</span></a><span class=cF0>.
|
||||
<a name="l145"></a>
|
||||
<a name="l146"></a> </span><span class=cF2>I64 i;
|
||||
<a name="l147"></a> for (i=0;i<10;i++)
|
||||
<a name="l148"></a> switch (i) {
|
||||
<a name="l149"></a> case 0: "Zero "; break;
|
||||
<a name="l150"></a> case 2: "Two "; break;
|
||||
<a name="l151"></a> case 4: "Four "; break;
|
||||
<a name="l152"></a> start:
|
||||
<a name="l153"></a> "[";
|
||||
<a name="l154"></a> case 1: "One"; break;
|
||||
<a name="l155"></a> case 3: "Three";break;
|
||||
<a name="l156"></a> case 5: "Five"; break;
|
||||
<a name="l157"></a> end:
|
||||
<a name="l158"></a> "] ";
|
||||
<a name="l159"></a> break;
|
||||
<a name="l160"></a> }</span><span class=cF0>
|
||||
<a name="l161"></a> OutPut:
|
||||
<a name="l162"></a> ></span><span class=cF2>Zero [One] Two [Three] Four [Five]</span><span class=cF0>
|
||||
<a name="l163"></a>
|
||||
<a name="l164"></a>* A </span><span class=cF2>no_warn</span><span class=cF0> stmt will suppress an unused var warning.
|
||||
<a name="l165"></a>
|
||||
<a name="l166"></a>* You can have multiple member vars of a class named "</span><span class=cF2>pad</span><span class=cF0>" or "</span><span class=cF2>reserved</span><span class=cF0>", and it
|
||||
<a name="l167"></a>won't issue warnings.
|
||||
<a name="l168"></a>
|
||||
<a name="l169"></a>* </span><span class=cF2>noreg</span><span class=cF0> or </span><span class=cF2>reg</span><span class=cF0> can be placed before a function local var name. You can,
|
||||
<a name="l170"></a>optionally, specify a reg after the </span><span class=cF2>reg</span><span class=cF0> keyword.
|
||||
<a name="l171"></a>
|
||||
<a name="l172"></a> </span><span class=cF2>U0 Main()
|
||||
<a name="l173"></a> {
|
||||
<a name="l174"></a> //Only use </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1804"><span class=cF4>REGG_LOCAL_VARS</span></a><span class=cF2> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1805"><span class=cF4>REGG_LOCAL_NON_PTR_VARS</span></a><span class=cF2> for reg vars or else
|
||||
<a name="l175"></a> clobbered.
|
||||
<a name="l176"></a> I64 reg R15 i=5, noreg j=4;
|
||||
<a name="l177"></a> no_warn i;
|
||||
<a name="l178"></a> asm {
|
||||
<a name="l179"></a> MOV RAX,R15
|
||||
<a name="l180"></a> CALL &PUT_HEX_U64
|
||||
<a name="l181"></a> MOV RAX,'\n'
|
||||
<a name="l182"></a> CALL &PUT_CHARS
|
||||
<a name="l183"></a> MOV RAX,U64 &j[RBP]
|
||||
<a name="l184"></a> CALL &PUT_HEX_U64
|
||||
<a name="l185"></a> MOV RAX,'\n'
|
||||
<a name="l186"></a> CALL &PUT_CHARS
|
||||
<a name="l187"></a> }
|
||||
<a name="l188"></a> }
|
||||
<a name="l189"></a></span><span class=cF0>
|
||||
<a name="l190"></a>* </span><span class=cF2>interrupt</span><span class=cF0>, </span><span class=cF2>haserrcode</span><span class=cF0>, </span><span class=cF2>public</span><span class=cF0>, </span><span class=cF2>argpop</span><span class=cF0> or </span><span class=cF2>noargpop</span><span class=cF0> are function flags. See </span><span class=cF4>
|
||||
<a name="l191"></a></span><a href="/Wb/Kernel/SerialDev/Keyboard.HC.HTML#l411"><span class=cF4>IRQKbd</span></a><span class=cF0>().
|
||||
<a name="l192"></a>
|
||||
<a name="l193"></a>* A single quote can encompass multiple characters. </span><span class=cF2>'ABC'</span><span class=cF0> is equ to </span><span class=cF2>0x434241</span><span class=cF0>. </span><span class=cF4>
|
||||
<a name="l194"></a></span><a href="/Wb/Kernel/KeyDev.HC.HTML#l20"><span class=cF4>PutChars</span></a><span class=cF0>() takes multiple characters.
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a> </span><span class=cF2>asm {
|
||||
<a name="l197"></a> HELLO_WORLD::
|
||||
<a name="l198"></a> PUSH RBP
|
||||
<a name="l199"></a> MOV RBP,RSP
|
||||
<a name="l200"></a> MOV RAX,'Hello '
|
||||
<a name="l201"></a> CALL &PUT_CHARS
|
||||
<a name="l202"></a> MOV RAX,'World\n'
|
||||
<a name="l203"></a> CALL &PUT_CHARS
|
||||
<a name="l204"></a> LEAVE
|
||||
<a name="l205"></a> RET
|
||||
<a name="l206"></a> }
|
||||
<a name="l207"></a> Call(HELLO_WORLD);
|
||||
<a name="l208"></a> PutChars('Hello ');
|
||||
<a name="l209"></a> PutChars('World\n');
|
||||
<a name="l210"></a></span><span class=cF0>
|
||||
<a name="l211"></a>* The "</span><span class=cF2>`</span><span class=cF0>" operator raises a base to a power.
|
||||
<a name="l212"></a>
|
||||
<a name="l213"></a>* There is no question-colon operator.
|
||||
<a name="l214"></a>
|
||||
<a name="l215"></a>* TempleOS </span><a href="/Wb/Compiler/CInit.HC.HTML#l287"><span class=cF4>operator precedence</span></a><span class=cF0>
|
||||
<a name="l216"></a> </span><span class=cF2>`</span><span class=cF0>,</span><span class=cF2>>></span><span class=cF0>,</span><span class=cF2><<</span><span class=cF0>
|
||||
<a name="l217"></a> </span><span class=cF2>*</span><span class=cF0>,</span><span class=cF2>/</span><span class=cF0>,</span><span class=cF2>%</span><span class=cF0>
|
||||
<a name="l218"></a> </span><span class=cF2>&</span><span class=cF0>
|
||||
<a name="l219"></a> </span><span class=cF2>^</span><span class=cF0>
|
||||
<a name="l220"></a> </span><span class=cF2>|</span><span class=cF0>
|
||||
<a name="l221"></a> </span><span class=cF2>+</span><span class=cF0>,</span><span class=cF2>-</span><span class=cF0>
|
||||
<a name="l222"></a> </span><span class=cF2><</span><span class=cF0>,</span><span class=cF2>></span><span class=cF0>,</span><span class=cF2><=</span><span class=cF0>,</span><span class=cF2>>=</span><span class=cF0>
|
||||
<a name="l223"></a> </span><span class=cF2>==</span><span class=cF0>,</span><span class=cF2>!=</span><span class=cF0>
|
||||
<a name="l224"></a> </span><span class=cF2>&&</span><span class=cF0>
|
||||
<a name="l225"></a> </span><span class=cF2>^^</span><span class=cF0>
|
||||
<a name="l226"></a> </span><span class=cF2>||</span><span class=cF0>
|
||||
<a name="l227"></a> </span><span class=cF2>=</span><span class=cF0>,</span><span class=cF2><<=</span><span class=cF0>,</span><span class=cF2>>>=</span><span class=cF0>,</span><span class=cF2>*=</span><span class=cF0>,</span><span class=cF2>/=</span><span class=cF0>,</span><span class=cF2>&=</span><span class=cF0>,</span><span class=cF2>|=</span><span class=cF0>,</span><span class=cF2>^=</span><span class=cF0>,</span><span class=cF2>+=</span><span class=cF0>,</span><span class=cF2>-=</span><span class=cF0>
|
||||
<a name="l228"></a>
|
||||
<a name="l229"></a>* You can use </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1549"><span class=cF4>OPTf_WARN_PAREN</span></a><span class=cF0>,ON) to find unnecessary parentheses in
|
||||
<a name="l230"></a>code.
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a>* You can use </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1550"><span class=cF4>OPTf_WARN_DUP_TYPES</span></a><span class=cF0>,ON) to find dup local var type stmts.
|
||||
<a name="l233"></a>
|
||||
<a name="l234"></a>* With the </span><span class=cF2>#exe{}</span><span class=cF0> feature in your src code, you can place programs that insert
|
||||
<a name="l235"></a>text into the stream of code being compiled. See </span><a href="/Wb/Kernel/KMain.HC.HTML#l16"><span class=cF4>#exe {}</span></a><span class=cF0> for an example where
|
||||
<a name="l236"></a>the date/time and compile-time prompting for cfguration data is placed into a
|
||||
<a name="l237"></a>program. </span><a href="/Wb/Compiler/CMisc.HC.HTML#l68"><span class=cF4>StreamPrint</span></a><span class=cF0>() places text into a src program stream following the
|
||||
<a name="l238"></a>conclusion of the </span><span class=cF2>#exe{}</span><span class=cF0> blk.
|
||||
<a name="l239"></a>
|
||||
<a name="l240"></a>* No </span><span class=cF2>#define</span><span class=cF0> functions exist (I'm not a fan)
|
||||
<a name="l241"></a>
|
||||
<a name="l242"></a>* No </span><span class=cF2>typedef</span><span class=cF0>, use </span><span class=cF2>class</span><span class=cF0>.
|
||||
<a name="l243"></a>
|
||||
<a name="l244"></a>* No type-checking
|
||||
<a name="l245"></a>
|
||||
<a name="l246"></a>* Can't use </span><span class=cF2><></span><span class=cF0> with </span><span class=cF2>#include</span><span class=cF0>, use </span><span class=cF2>""</span><span class=cF0>.
|
||||
<a name="l247"></a>
|
||||
<a name="l248"></a>* "</span><span class=cF2>$</span><span class=cF0>" is an escape character. Two dollar signs signify an ordinary $. See </span><span class=cF4>
|
||||
<a name="l249"></a></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0>. In </span><span class=cF2>asm</span><span class=cF0> or </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> code, it also refers to the inst's address or the
|
||||
<a name="l250"></a>offset in a </span><span class=cF2>class</span><span class=cF0> definition.
|
||||
<a name="l251"></a>
|
||||
<a name="l252"></a>* </span><span class=cF2>union</span><span class=cF0> is more like a class, so you don't reference it with a </span><span class=cF2>union</span><span class=cF0> label after
|
||||
<a name="l253"></a>you define it. Some common unions are declared in </span><a href="/Wb/Kernel/KernelA.HH.HTML#l67"><span class=cF4>KernelA.HH</span></a><span class=cF0> for 1,2,4 and 8
|
||||
<a name="l254"></a>byte objects. If you place a type in front of a union declaration, that is the
|
||||
<a name="l255"></a>type when used by itself. See </span><a href="/Wb/Demo/SubIntAccess.HC.HTML#l1"><span class=cF4>::/Demo/SubIntAccess.HC</span></a><span class=cF0>.
|
||||
<a name="l256"></a>
|
||||
<a name="l257"></a>* </span><span class=cF2>class</span><span class=cF0> member vars can have meta data. </span><span class=cF2>format</span><span class=cF0> and </span><span class=cF2>data</span><span class=cF0> are two meta data types
|
||||
<a name="l258"></a>now used. All compiler structures are saved and you can access the compiler's
|
||||
<a name="l259"></a>info about classes and vars. See </span><a href="/Wb/Demo/ClassMeta.HC.HTML#l1"><span class=cF4>::/Demo/ClassMeta.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/DolDoc/DocForm.HC.HTML#l209"><span class=cF4>DocForm</span></a><span class=cF0>().
|
||||
<a name="l260"></a>
|
||||
<a name="l261"></a>* There is a keyword </span><span class=cF2>lastclass</span><span class=cF0> you use as a dft arg. It is set to the class
|
||||
<a name="l262"></a>name of the prev arg. See </span><a href="/Wb/Demo/LastClass.HC.HTML#l1"><span class=cF4>::/Demo/LastClass.HC</span></a><span class=cF0>, </span><a href="/Wb/Adam/ADbg.HC.HTML#l161"><span class=cF4>ClassRep</span></a><span class=cF0>(), </span><a href="/Wb/Adam/DolDoc/DocForm.HC.HTML#l209"><span class=cF4>DocForm</span></a><span class=cF0>() and </span><span class=cF4>
|
||||
<a name="l263"></a></span><a href="/Wb/Demo/Dsk/BlkDevRep.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/BlkDevRep.HC</span></a><span class=cF0>.
|
||||
<a name="l264"></a>
|
||||
<a name="l265"></a>* See </span><a href="/Wb/Demo/Exceptions.HC.HTML#l1"><span class=cF4>::/Demo/Exceptions.HC</span></a><span class=cF0>. </span><span class=cF2>try{} catch{}</span><span class=cF0> and </span><span class=cF2>throw</span><span class=cF0> are different from C++. </span><span class=cF2>th
|
||||
<a name="l266"></a>row</span><span class=cF0> is a function with an 8-byte or less char arg. The char string passed in </span><span class=cF2>th
|
||||
<a name="l267"></a>row()</span><span class=cF0> can be accessed from within a </span><span class=cF2>catch{}</span><span class=cF0> using the </span><span class=cF2>Fs->except_ch</span><span class=cF0>. Within a </span><span class=cF2>c
|
||||
<a name="l268"></a>atch {}</span><span class=cF0> blk, set the var </span><span class=cF2>Fs->catch_except</span><span class=cF0> to </span><span class=cF2>TRUE</span><span class=cF0> if you want to terminate the
|
||||
<a name="l269"></a>search for a hndlr. Use </span><a href="/Wb/Kernel/KExcept.HC.HTML#l45"><span class=cF4>PutExcept</span></a><span class=cF0>() as a hndlr, if you like.
|
||||
<a name="l270"></a>
|
||||
<a name="l271"></a>* A function is available similar to </span><span class=cF2>sizeof</span><span class=cF0> which provides the offset of a
|
||||
<a name="l272"></a>member of a class. It's called </span><span class=cF2>offset</span><span class=cF0>. You place the class name and member
|
||||
<a name="l273"></a>inside as in </span><span class=cF2>offset(classname.membername)</span><span class=cF0>. It has nothing to do with 16-bit
|
||||
<a name="l274"></a>code. Both </span><span class=cF2>sizeof</span><span class=cF0> and </span><span class=cF2>offset</span><span class=cF0> only accept one level of member vars. That is,
|
||||
<a name="l275"></a>you can't do </span><span class=cF2>sizeof(classname.membername.submembername)</span><span class=cF0>.
|
||||
<a name="l276"></a>
|
||||
<a name="l277"></a>* There is no </span><span class=cF2>continue</span><span class=cF0> stmt. Use </span><span class=cF2>goto</span><span class=cF0>.
|
||||
<a name="l278"></a>
|
||||
<a name="l279"></a>* </span><span class=cF2>lock{}</span><span class=cF0> can be used to apply asm </span><span class=cF2>LOCK</span><span class=cF0> prefixes to code for safe multicore
|
||||
<a name="l280"></a>read-modify-write accesses. The code bracked with have </span><span class=cF2>LOCK</span><span class=cF0> asm prefix's
|
||||
<a name="l281"></a>applied to relevant insts within. It's a little shoddy. See </span><span class=cF4>
|
||||
<a name="l282"></a></span><a href="/Wb/Demo/MultiCore/Lock.HC.HTML#l1"><span class=cF4>::/Demo/MultiCore/Lock.HC</span></a><span class=cF0>.
|
||||
<a name="l283"></a>
|
||||
<a name="l284"></a>* There is a function called </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l384"><span class=cF4>MSize</span></a><span class=cF0>() which gives the size of an object alloced
|
||||
<a name="l285"></a>off the heap. For larger size allocations, the system rounds-up to a power of
|
||||
<a name="l286"></a>two, so </span><span class=cF2>MSize()</span><span class=cF0> lets you know the real size and you can take full advantage of
|
||||
<a name="l287"></a>it.
|
||||
<a name="l288"></a>
|
||||
<a name="l289"></a>* You CAN </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l383"><span class=cF4>Free</span></a><span class=cF0>() a </span><span class=cF2>NULL</span><span class=cF0> ptr. Useful variants of </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>() can be found </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l395"><span class=cF4>Here</span></a><span class=cF0>.
|
||||
<a name="l290"></a>Each task has a heap and you can </span><span class=cF2>MAlloc</span><span class=cF0> and </span><span class=cF2>Free</span><span class=cF0> off-of other task's heaps, or
|
||||
<a name="l291"></a>make an independent heap with </span><a href="/Wb/Kernel/Mem/HeapCtrl.HC.HTML#l1"><span class=cF4>HeapCtrlInit</span></a><span class=cF0>(). See </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l73"><span class=cF4>HeapLog</span></a><span class=cF0>() for an example.
|
||||
<a name="l292"></a>
|
||||
<a name="l293"></a>* The stk does not grow because virtual mem is not used. I recommend allocating
|
||||
<a name="l294"></a>large local vars from the heap. You can change </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2843"><span class=cF4>MEM_DFT_STK</span></a><span class=cF0> and recompile </span><span class=cF2>Kernel</span><span class=cF0>
|
||||
<a name="l295"></a>or request more when doing a </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>(). You can use </span><a href="/Wb/Kernel/KTask.HC.HTML#l110"><span class=cF4>CallStkGrow</span></a><span class=cF0>(), but it's odd.
|
||||
<a name="l296"></a>See </span><a href="/Wb/Demo/StkGrow.HC.HTML#l1"><span class=cF4>::/Demo/StkGrow.HC</span></a><span class=cF0>.
|
||||
<a name="l297"></a>
|
||||
<a name="l298"></a>* Only one base class is allowed.
|
||||
<a name="l299"></a>
|
||||
<a name="l300"></a>* </span><span class=cF2>printf()</span><span class=cF0> has new codes. See </span><a href="/Wb/Doc/Print.DD.HTML#l1"><span class=cF4>Print("") Fmt Strings</span></a><span class=cF0>.
|
||||
<a name="l301"></a>
|
||||
<a name="l302"></a>* All values are extended to 64-bit when accessed. Intermediate calculations
|
||||
<a name="l303"></a>are done with 64-bit values.
|
||||
<a name="l304"></a>
|
||||
<a name="l305"></a> </span><span class=cF2>U0 Main()
|
||||
<a name="l306"></a> {
|
||||
<a name="l307"></a> I16 i1;
|
||||
<a name="l308"></a> I32 j1;
|
||||
<a name="l309"></a> j1=i1=0x12345678; //Resulting i1 is 0x5678 but j1 is 0x12345678
|
||||
<a name="l310"></a>
|
||||
<a name="l311"></a> I64 i2=0x8000000000000000;
|
||||
<a name="l312"></a> Print("%X\n",i2>>1); //Res is 0xC000000000000000 as expected
|
||||
<a name="l313"></a>
|
||||
<a name="l314"></a> U64 u3=0x8000000000000000;
|
||||
<a name="l315"></a> Print("%X\n",u3>>1); //Res is 0x4000000000000000 as expected
|
||||
<a name="l316"></a>
|
||||
<a name="l317"></a> I32 i4=0x80000000; //const is loaded into a 64-bit reg var.
|
||||
<a name="l318"></a> Print("%X\n",i4>>1); //Res is 0x40000000
|
||||
<a name="l319"></a>
|
||||
<a name="l320"></a> I32 i5=-0x80000000;
|
||||
<a name="l321"></a> Print("%X\n",i5>>1); //Res is 0xFFFFFFFFC0000000
|
||||
<a name="l322"></a> }
|
||||
<a name="l323"></a></span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,49 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>InFiles</span><span class=cF0> are used to generate user input to automate operations. The TempleOS
|
||||
<a name="l2"></a>tour is done with an </span><span class=cF2>InFile</span><span class=cF0>. It reminds me of a Unix pipe because </span><span class=cF2>StdOut</span><span class=cF0> of one
|
||||
<a name="l3"></a>gets chained into </span><span class=cF2>StdIn</span><span class=cF0> of another.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>When an </span><span class=cF2>InFile</span><span class=cF0> runs, a child task is </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>()ed which intercepts real user input
|
||||
<a name="l6"></a>and generates fake input. InFiles are </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> programs run by the child whose
|
||||
<a name="l7"></a>stdout goes to the parent's input buffer. </span><a href="/Wb/Kernel/Job.HC.HTML#l259"><span class=cF4>Msg</span></a><span class=cF0>() can be included in an </span><span class=cF2>InFile</span><span class=cF0> to
|
||||
<a name="l8"></a>send special keys or mouse cmds to the parent. While an </span><span class=cF2>InFile</span><span class=cF0> is running, the
|
||||
<a name="l9"></a>normal input gets diverted to the InFile task and can be filtered and sent back
|
||||
<a name="l10"></a>to the parent task. Unless you are driving functions which prompt for data, you
|
||||
<a name="l11"></a>can probably use an </span><span class=cF2>#include</span><span class=cF0> file in place of an </span><span class=cF2>InFile</span><span class=cF0>.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>See </span><a href="/Wb/Demo/InFile/InDir.IN.HTML#l1"><span class=cF4>::/Demo/InFile/InDir.IN</span></a><span class=cF0>.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>Note: </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>("") can be used if all you need is to send ASCII characters. It
|
||||
<a name="l16"></a>differs from </span><a href="/Wb/Kernel/Job.HC.HTML#l464"><span class=cF4>InStr</span></a><span class=cF0>(). You'll probably use </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>() a lot and not </span><a href="/Wb/Kernel/Job.HC.HTML#l464"><span class=cF4>InStr</span></a><span class=cF0>(). With </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>(
|
||||
<a name="l17"></a>), for example, you can place answers to the prompts for recompiling the </span><span class=cF2>Kernel</span><span class=cF0>
|
||||
<a name="l18"></a>module during </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>().
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,109 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Installing TempleOS</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Burn a CD with software that supports ISO files. Then, boot it. It's a live
|
||||
<a name="l4"></a>CD, so you can look around with or without installing.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>Dual booting with another operating system is the best way to use TempleOS. I
|
||||
<a name="l7"></a>only use it in a virtual machine because it won't boot natively on my machine,
|
||||
<a name="l8"></a>though. For native dual booting, you need a partition for TempleOS. Windows
|
||||
<a name="l9"></a>often comes with a restore disk that does not allow repartitioning. I recommend
|
||||
<a name="l10"></a>connecting a spare additional hard drive and using the </span><span class=cF2>BIOS</span><span class=cF0> to select which
|
||||
<a name="l11"></a>drive to boot.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>The </span><a href="/Wb/Misc/OSInstall.HC.HTML#l1"><span class=cF4>::/Misc/OSInstall.HC</span></a><span class=cF0> script will automate much of this. It runs if you boot
|
||||
<a name="l14"></a>the CD/DVD-ROM.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>See </span><a href="/Wb/Doc/Boot.DD.HTML#l1"><span class=cF4>Boot.DD</span></a><span class=cF0> for an overview of booting. See </span><a href="/Wb/Doc/Requirements.DD.HTML#l1"><span class=cF4>Requirements</span></a><span class=cF0> for supported
|
||||
<a name="l17"></a>hardware.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>Two TempleOS partitions are highly recommended, so you can boot to a back-up and
|
||||
<a name="l20"></a>fix the primary when you work on it. Odds are, you only need a couple gigabytes
|
||||
<a name="l21"></a>for your TempleOS partitions.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>1)
|
||||
<a name="l24"></a></span><span class=cF4> </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0>() use if the drive is partitioned.
|
||||
<a name="l25"></a> This command mounts a drive making it accessible. For simplicity, sel </span><span class=cF2>'C'</span><span class=cF0>
|
||||
<a name="l26"></a> as the first drive letter for your hard drive. The first partition will be </span><span class=cF2>
|
||||
<a name="l27"></a> 'C'</span><span class=cF0>, second, </span><span class=cF2>'D'</span><span class=cF0>, etc. TempleOS needs 3 numbers to utilize a hard drive --
|
||||
<a name="l28"></a> base0, base1, and unit. When you enter a hexadecimal number, do it like in </span><span class=cF2>
|
||||
<a name="l29"></a> C</span><span class=cF0> with a </span><span class=cF2>0x</span><span class=cF0> prefix. If the probe was successful, you can just enter the
|
||||
<a name="l30"></a> number in the probe box instead of base0.
|
||||
<a name="l31"></a> </span><span class=cF4>
|
||||
<a name="l32"></a> </span><a href="/Wb/Adam/ABlkDev/DskPrt.HC.HTML#l13"><span class=cF4>DskPrt</span></a><span class=cF0>(</span><span class=cF2>'C'</span><span class=cF0>) use if drive is not partitioned
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a> This will perform a special </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0>() automatically.
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a> <blink>WARNING:</blink> This command erases everything on a hard drive. It repartitions a
|
||||
<a name="l37"></a> whole drive and formats the partitions. This command should be skipped if
|
||||
<a name="l38"></a> you already have your hard drive partitioned.
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a> <blink>WARNING:</blink> This command doesn't play well with other operating systems.
|
||||
<a name="l42"></a> You'll need to do a </span><a href="/Wb/Adam/Opt/Boot/BootMHDIns.HC.HTML#l52"><span class=cF4>BootMHDZero</span></a><span class=cF0>() to restore your drive to a state where
|
||||
<a name="l43"></a> other operating systems can partition it.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>2) </span><a href="/Wb/Kernel/BlkDev/DskFmt.HC.HTML#l55"><span class=cF4>Fmt</span></a><span class=cF0>(</span><span class=cF2>'D'</span><span class=cF0>,</span><span class=cF2>TRUE,FALSE,FSt_FAT32</span><span class=cF0>)
|
||||
<a name="l46"></a> This command formats a drive with </span><span class=cF2>FAT32</span><span class=cF0> or the </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file system type. Use
|
||||
<a name="l47"></a> the drive letter of the partition in place of </span><span class=cF2>'D'</span><span class=cF0>.
|
||||
<a name="l48"></a>
|
||||
<a name="l49"></a> <blink>WARNING:</blink> If you are upgrading, be sure not to lose the file, </span><span class=cF2>/0000Boot/OldMBR
|
||||
<a name="l50"></a> .BIN.C</span><span class=cF0>.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>3) </span><a href="/Wb/Adam/ABlkDev/ADskA.HC.HTML#l122"><span class=cF4>CopyTree</span></a><span class=cF0>(</span><span class=cF2>"T:/"</span><span class=cF0>,</span><span class=cF2>"D:/"</span><span class=cF0>)
|
||||
<a name="l53"></a> This command is used to copy files onto a hard drive partition from the
|
||||
<a name="l54"></a> CD/DVD. Use the drive letter of the partition in place of </span><span class=cF2>'D'</span><span class=cF0>.
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>4) </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(</span><span class=cF2>'D'</span><span class=cF0>)
|
||||
<a name="l57"></a> This command recompiles the source code on a drive and writes to the <u>drive's</u>
|
||||
<a name="l58"></a> boot record. You'll need to reenter the </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0> information so it can be stored
|
||||
<a name="l59"></a> in the kernel.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>5) Use Linux's Grub or TempleOS' </span><a href="/Wb/Adam/Opt/Boot/BootMHDIns.HC.HTML#l69"><span class=cF4>BootMHDIns</span></a><span class=cF0>(</span><span class=cF2>'D'</span><span class=cF0>)
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a> The </span><a href="/Wb/Adam/Opt/Boot/BootMHDIns.HC.HTML#l69"><span class=cF4>BootMHDIns</span></a><span class=cF0>() command places a boot loader on a drive. It saves the old
|
||||
<a name="l64"></a> master boot record to </span><span class=cF2>/0000Boot/OldMBR.BIN.C</span><span class=cF0> and replaces it. When you boot,
|
||||
<a name="l65"></a> you will have the option of booting the old master boot record. This command
|
||||
<a name="l66"></a> can be skipped if you already have a boot loader. Be sure not to lose the
|
||||
<a name="l67"></a> copy of the old boot record, like if you reformat the drive.
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a> Delete </span><span class=cF2>/0000Boot/OldMBR.BIN.C</span><span class=cF0> if you want to get a fresh copy of a mbr, like
|
||||
<a name="l70"></a> if installing from your own custom CD containing it's own </span><span class=cF2>/0000Boot/OldMBR.BIN
|
||||
<a name="l71"></a> .C</span><span class=cF0> onto a system with a non-TempleOS boot loader.
|
||||
<a name="l72"></a>
|
||||
<a name="l73"></a> If you have anti-virus software, it might object to having a different master
|
||||
<a name="l74"></a> boot record.
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a></span><span class=cF8>
|
||||
<a name="l77"></a>* "Windows" is a trademark owned by MicroSoft Corp.
|
||||
<a name="l78"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l79"></a></span></pre></body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cFA>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF4> </span><a href="/Wb/Kernel/Job.HC.HTML#l397"><span class=cF4>PopUpPrint</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l424"><span class=cF4>User</span></a><span class=cF4> </span><a href="/Wb/Compiler/CMain.HC.HTML#l605"><span class=cF4>ExePrint</span></a><span class=cF0>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF4> </span><a href="/Wb/Kernel/Job.HC.HTML#l376"><span class=cF4>PopUp</span></a><span class=cF4> </span><a href="/Wb/Compiler/CMain.HC.HTML#l571"><span class=cF4>ExePutS</span></a><span class=cF0>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a> </span><a href="/Wb/Kernel/KMain.HC.HTML#l135"><span class=cF4>Core0 AdamTask</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l406"><span class=cF4>SrvCmdLine</span></a><span class=cF4> </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l194"><span class=cF4>AP SethTask</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l414"><span class=cF4>UserCmdLine</span></a><span class=cF0>
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a></span><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l368"><span class=cF4>SrvTaskCont</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l384"><span class=cF4>UserTaskCont</span></a><span class=cF0>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF4> </span><a href="/Wb/Kernel/Job.HC.HTML#l349"><span class=cF4>JobsHndlr</span></a><span class=cF0>
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a></span><span class=cF4> </span><a href="/Wb/Kernel/Job.HC.HTML#l269"><span class=cF4>JobRunOne</span></a><span class=cF4> </span><a href="/Wb/Kernel/Job.HC.HTML#l269"><span class=cF4>JobRunOne</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l302"><span class=cF4>ExeCmdLine</span></a><span class=cF4> </span><a href="/Wb/Kernel/KTask.HC.HTML#l302"><span class=cF4>ExeCmdLine</span></a><span class=cF0>
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3147"><span class=cF4>CJob</span></a><span class=cF0> nodes are one of </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3140"><span class=cF4>five types</span></a><span class=cF0>. User applications deal with text or msgs. </span><span class=cF4>
|
||||
<a name="l31"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l269"><span class=cF4>JobRunOne</span></a><span class=cF0>() will call a function, spawn a task or execute some text src code.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_TEXT_INPUT</span><span class=cF0> 0 </span><span class=cF2>//</span><a href="/Wb/Kernel/Job.HC.HTML#l75"><span class=cF4>TaskText</span></a><span class=cF2>()</span><span class=cF0> </span><span class=cF2>Feed StdIn </span><span class=cF0>
|
||||
<a name="l34"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_MSG</span><span class=cF0> 1 </span><span class=cF2>//</span><a href="/Wb/Kernel/Job.HC.HTML#l119"><span class=cF4>TaskMsg</span></a><span class=cF2>()</span><span class=cF0> </span><span class=cF2>Post msg </span><span class=cF0>
|
||||
<a name="l35"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_EXE_STR</span><span class=cF0> 2 </span><span class=cF2>//</span><a href="/Wb/Kernel/Job.HC.HTML#l39"><span class=cF4>TaskExe</span></a><span class=cF2>()</span><span class=cF0> </span><span class=cF2>Compile & execute src code text</span><span class=cF0>
|
||||
<a name="l36"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_CALL</span><span class=cF0> 3 </span><span class=cF2>//</span><a href="/Wb/Kernel/MultiProc.HC.HTML#l213"><span class=cF4>JobQue</span></a><span class=cF2>()</span><span class=cF0> </span><span class=cF2>Tell MP to call function</span><span class=cF0>
|
||||
<a name="l37"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>JOBT_SPAWN_TASK</span><span class=cF0> 4 </span><span class=cF2>//</span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF2>()</span><span class=cF0> </span><span class=cF2>Tell MP to spawn task</span><span class=cF0>
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>Several </span><span class=cF9><u>other routines</u></span><span class=cF0> include a call to </span><a href="/Wb/Kernel/Job.HC.HTML#l349"><span class=cF4>JobsHndlr</span></a><span class=cF0>() that gives them powerful
|
||||
<a name="l40"></a>ability to execute servant cmds.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,68 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Key Allocations</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>See </span><span class=cF4><u>Char</u></span><span class=cF0> for definition of scan codes.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>See </span><span class=cF9><u>Key Map</u></span><span class=cF0> for a detailed list of key commands.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>When you are at the cmd line, editing documents, browsing documentation and
|
||||
<a name="l8"></a>help, entering items in forms or in menu's, the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>DolDoc</span></a><span class=cF0> editor handles keys. It
|
||||
<a name="l9"></a>allows you to define your own key hndlrs in a </span><a href="/Wb/Home/HomeKeyPlugIns.HC.HTML#l11"><span class=cF4>MyPutKey</span></a><span class=cF0>() function. If you
|
||||
<a name="l10"></a>choose, you can catch keys, overriding the default hndlrs. See </span><a href="/Wb/Adam/DolDoc/DocPutKey.HC.HTML#l3"><span class=cF4>DocPutKey</span></a><span class=cF0>().
|
||||
<a name="l11"></a>The following is an overview of key allocations.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF2><ALT-keys></span><span class=cF0> and </span><span class=cF2><ALT-SHIFT-keys></span><span class=cF0> Free for user configurations in your </span><a href="/Wb/Home/HomeKeyPlugIns.HC.HTML#l11"><span class=cF4>MyPutKey</span></a><span class=cF0>()
|
||||
<a name="l14"></a>hndlr, except for </span><span class=cF2>ALT-BACKSPACE</span><span class=cF0> (undo). There are a few examples pre-defined,
|
||||
<a name="l15"></a>but you can change them if you wish.
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a></span><span class=cF2><CTRL-ALT-keys></span><span class=cF0> and </span><span class=cF2><CTRL-ALT-SHIFT-keys></span><span class=cF0> Handled at a system level, NOT by the </span><span class=cF4>
|
||||
<a name="l18"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> editor. I reserve the right to alloc these, but in the mean time, you can
|
||||
<a name="l19"></a>define your own hndlrs with </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l178"><span class=cF4>CtrlAltCBSet</span></a><span class=cF0>(). They operate either in a interrupt
|
||||
<a name="l20"></a>environment or in the window mgr when it queues kbd msgs. You can do </span><a href="/Wb/Kernel/KMisc.HC.HTML#l290"><span class=cF4>Raw</span></a><span class=cF0>()
|
||||
<a name="l21"></a>output. </span><span class=cF2><CTRL-ALT-letter></span><span class=cF0> hndlrs take a scan_code as an arg.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a></span><span class=cF2><CTRL-function key></span><span class=cF0> Auto-completes local words.
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a></span><span class=cF2><CTRL-digit key></span><span class=cF0> Auto-completes dictionary words.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a></span><span class=cF2><CTRL-SHIFT-function key></span><span class=cF0> Jumps to src code.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a></span><span class=cF2><CTRL-SHIFT-digit key></span><span class=cF0> Jumps to dictionary definition.
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a></span><span class=cF2><function keys></span><span class=cF0> and </span><span class=cF2><SHIFT-function keys></span><span class=cF0> I reserve the right to alloc these,
|
||||
<a name="l32"></a>but there are some free now.
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a></span><span class=cF2><CTRL-key></span><span class=cF0> and </span><span class=cF2><CTRL-SHIFT-key></span><span class=cF0> I reserve the right to alloc to these. There
|
||||
<a name="l35"></a>are not many free.</span><span class=cF8>
|
||||
<a name="l36"></a></span><span class=cF0>
|
||||
<a name="l37"></a>See </span><span class=cF4><u>Keyboard Devices</u></span><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,52 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The editor mostly stays in a </span><a href="/Wb/Kernel/SerialDev/Message.HC.HTML#l142"><span class=cF4>GetKey</span></a><span class=cF0>()/</span><a href="/Wb/Kernel/KeyDev.HC.HTML#l1"><span class=cF4>PutKey</span></a><span class=cF0>() loop. The putkey portion is
|
||||
<a name="l2"></a>where keys are acted-upon. TempleOS has a chain of putkey hndlrs in a </span><span class=cF4>
|
||||
<a name="l3"></a><u>Circular Queue</u></span><span class=cF0> with priorities. The highest priority hndlrs can choose to
|
||||
<a name="l4"></a>terminate handling, otherwise, the keys get sent on down the chain.
|
||||
<a name="l5"></a></span><span class=cF4>
|
||||
<a name="l6"></a></span><a href="/Wb/Kernel/KeyDev.HC.HTML#l70"><span class=cF4>KeyDevAdd</span></a><span class=cF0>() defines a putkey device with a priority. "Device" might be a
|
||||
<a name="l7"></a>misnomer. Currently, the following are defined:
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>Priority Hndlr
|
||||
<a name="l10"></a>---------- ---------
|
||||
<a name="l11"></a></span><span class=cF2>0x20000000</span><span class=cF0> </span><a href="/Wb/Home/HomeKeyPlugIns.HC.HTML#l11"><span class=cF4>MyPutKey</span></a><span class=cF0>() user hndlr
|
||||
<a name="l12"></a></span><span class=cF2>0x40000000</span><span class=cF0> </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l108"><span class=cF4>KDInputFilterPutKey</span></a><span class=cF0>() for </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/Job.HC.HTML#l464"><span class=cF4>InStr</span></a><span class=cF0>(), and </span><a href="/Wb/Kernel/Job.HC.HTML#l474"><span class=cF4>InFile</span></a><span class=cF0>() handling.
|
||||
<a name="l13"></a></span><span class=cF2>0x60000000</span><span class=cF0> </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l88"><span class=cF4>KDRawPutKey</span></a><span class=cF0>() nonwindowed direct to video mem debug output.
|
||||
<a name="l14"></a></span><span class=cF2>0x80000000</span><span class=cF0> </span><a href="/Wb/Adam/DolDoc/DocPutKey.HC.HTML#l723"><span class=cF4>KDDocPutKey</span></a><span class=cF0>() standard document cmds
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>Since handling individual keys is slow, TempleOS supports PutS() as well. If no
|
||||
<a name="l17"></a>puts hndlr is defined, individual keys are sent.
|
||||
<a name="l18"></a></span><span class=cF4>
|
||||
<a name="l19"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF2>.user_put_key</span><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF2>.user_put_s</span><span class=cF0> are call back routines which offer some
|
||||
<a name="l20"></a>neat tricks. See </span><a href="/Wb/Apps/Psalmody/JukeBox.HC.HTML#l1"><span class=cF4>::/Apps/Psalmody/JukeBox.HC</span></a><span class=cF0>. There is a var </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF2>.user_put_dat
|
||||
<a name="l21"></a>a</span><span class=cF0> which gets passed to them.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The compiler's lexical analyzer can be used in your programs to simplify
|
||||
<a name="l2"></a>parsing. See </span><a href="/Wb/Adam/DolDoc/DocPlain.HC.HTML#l223"><span class=cF4>Doc Parsing</span></a><span class=cF0> or </span><a href="/Wb/Compiler/AsmInit.HC.HTML#l51"><span class=cF4>Parse Opcode File</span></a><span class=cF0>.
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a>See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2083"><span class=cF4>Tokens</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,143 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Memory Overview</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Paging is practically not used. 64-bit mode requires paging, however, so it is
|
||||
<a name="l4"></a>identity-mapped -- virtual identical to physical. All tasks on all cores use
|
||||
<a name="l5"></a>the same page table map, just as though all addresses are physical addresses.
|
||||
<a name="l6"></a>2Meg or 1Gig page table entries are used. Nothing swaps to disk.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>In TempleOS, the lowest 2Gig of memory is called the </span><span class=cF2>code heap</span><span class=cF0>. TempleOS's
|
||||
<a name="l9"></a>compiler always uses 32-bit signed relative JMP & CALL insts because 64-bit
|
||||
<a name="l10"></a>CALLs take two insts. With signed +/- 32-bit values, code can only call a
|
||||
<a name="l11"></a>function within 2Gig distance. Therefore, TempleOS keeps all code in the lowest
|
||||
<a name="l12"></a>2Gig memory addresses including what would normally be called "the kernel". Two
|
||||
<a name="l13"></a>Gig is plenty for code, don't worry.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>You can create new, independent heaps using </span><a href="/Wb/Kernel/Mem/HeapCtrl.HC.HTML#l1"><span class=cF4>HeapCtrlInit</span></a><span class=cF0>(). Then, use the </span><span class=cF4>
|
||||
<a name="l16"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l2863"><span class=cF4>CHeapCtrl</span></a><span class=cF0> as the 2nd arg to </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>(). See </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l73"><span class=cF4>HeapLog</span></a><span class=cF0>() for an example.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>Memory alloced by a task will be freed when the task is killed. The </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0>
|
||||
<a name="l19"></a>is a task that never dies. His memory is like kernel memory in other operating
|
||||
<a name="l20"></a>systems. See </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l402"><span class=cF4>ACAlloc</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l390"><span class=cF4>AMAlloc</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l418"><span class=cF4>AMAllocIdent</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l461"><span class=cF4>AStrNew</span></a><span class=cF0>().
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>All of the regular page tables are marked, "cached". When accessing hardware,
|
||||
<a name="l23"></a>however, you need uncached page table. The lowest 4Gig addresses have an alias
|
||||
<a name="l24"></a>to access hardware located toward the top of mapped space, </span><span class=cF2>0x10000000000</span><span class=cF0>. See </span><span class=cF4>
|
||||
<a name="l25"></a></span><a href="/Wb/Kernel/KMain.HC.HTML#l69"><span class=cF4>dev.uncached_alias</span></a><span class=cF0>.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>During an extended powered-on session of TempleOS, in theory, memory will become
|
||||
<a name="l28"></a>fragmented, requiring a reboot. It has never happens to me.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>See </span><a href="/Wb/Adam/Opt/Utils/MemRep.HC.HTML#l193"><span class=cF4>MemRep</span></a><span class=cF0>() and </span><a href="/Wb/Demo/MemDemo.HC.HTML#l1"><span class=cF4>::/Demo/MemDemo.HC</span></a><span class=cF0>.
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a></span><span class=cF5> Single System-wide Mem Map
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a></span><span class=cF2> 0x0000007C00- 0x000003616F</span><span class=cF0>
|
||||
<a name="l36"></a> Kernel module, placed here by the boot-loader, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3835"><span class=cF4>BOOT_RAM_BASE</span></a><span class=cF0>.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a></span><span class=cF2> 0x0000096600- 0x0000096FFF</span><span class=cF0>
|
||||
<a name="l39"></a> Boot block relocated here before loading the Kernel module, </span><a href="/Wb/Adam/Opt/Boot/BootDVD.HC.HTML#l1"><span class=cF4>BootDVD</span></a><span class=cF0> & </span><a href="/Wb/Adam/Opt/Boot/BootHD.HC.HTML#l1"><span class=cF4>BootHD</span></a><span class=cF0>.
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a></span><span class=cF2> 0x0000097000- 0x0000097030</span><span class=cF0> Multicore start-up vect code, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l525"><span class=cF4>MPN_VECT</span></a><span class=cF0>.
|
||||
<a name="l42"></a></span><span class=cF2>~0x000009F000- 0x000009FFFF</span><span class=cF0> Extended BIOS data area.
|
||||
<a name="l43"></a></span><span class=cF2> 0x00000A0000- 0x00000BFFFF</span><span class=cF0> VGA graphics mem with alias at </span><a href="/Wb/Kernel/KGlbls.HC.HTML#l30"><span class=cF4>text</span></a><span class=cF0>.vga_alias.
|
||||
<a name="l44"></a></span><span class=cF2> 0x0000100000- 0x0000101FFF</span><span class=cF0> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3415"><span class=cF4>CSysFixedArea</span></a><span class=cF0> for misc.
|
||||
<a name="l45"></a></span><span class=cF2> 0x000050A000- 0x001FFDFFFF</span><span class=cF0> Code Heap mem.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF2> 0x00E0000000- 0x00FFFFFFFF</span><span class=cF0>
|
||||
<a name="l48"></a> 32-bit devices could alloc memory at 0xF0000000 going up, but this is wrong,
|
||||
<a name="l49"></a> since some PCs already have devices at 0xF0000000. No PCI devices are
|
||||
<a name="l50"></a> supported, so </span><a href="/Wb/Kernel/Mem/MemPhysical.HC.HTML#l58"><span class=cF4>Mem32DevAlloc</span></a><span class=cF0>() flaws are not an issue.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a></span><span class=cF2> 0x0080000000-~0x00DFFFFFFF</span><span class=cF0>
|
||||
<a name="l53"></a></span><span class=cF2> 0x0100000000-~0xFFFFFFFFFF</span><span class=cF0>
|
||||
<a name="l54"></a> Data Heap mem. (The physical memory that exists in this range is data heap.)
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a></span><span class=cF2> 0x10000000000- 0x100FFFFFFFF</span><span class=cF0>
|
||||
<a name="l57"></a> Uncached alias of first 4Gig. (For 32-bit device access.)
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a></span><span class=cF2> - 0x100FFFFFFFF</span><span class=cF0>
|
||||
<a name="l60"></a> 64-bit devices are alloced with </span><a href="/Wb/Kernel/Mem/MemPhysical.HC.HTML#l108"><span class=cF4>Mem64DevAlloc</span></a><span class=cF0>() counting bwd, but no PCI
|
||||
<a name="l61"></a> devices are actually supported.
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>
|
||||
<a name="l65"></a>* Note: There is a break in the data-heap block pool. This has no effect except
|
||||
<a name="l66"></a>the obvious effect that fragmentation has on contiguous requests. I can </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>(
|
||||
<a name="l67"></a>) an 8Gig chunk on my 12Gig machine. I can </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>() an 32Gig chunk on my 64Gig
|
||||
<a name="l68"></a>machine.
|
||||
<a name="l69"></a>
|
||||
<a name="l70"></a>* Note: For systems with less than 2Gig RAM, the code and data heap block pools
|
||||
<a name="l71"></a>are the same. For systems with 2-4Gig of RAM, the code heap is 1/4 of the
|
||||
<a name="l72"></a>total. See </span><a href="/Wb/Kernel/Mem/BlkPool.HC.HTML#l29"><span class=cF4>BlkPoolsInit</span></a><span class=cF0>().
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a></span><span class=cF5> History</span><span class=cF0>
|
||||
<a name="l76"></a>
|
||||
<a name="l77"></a>In 2003, I wanted to make a no-paging ring-0-only 64-bit operating system for
|
||||
<a name="l78"></a>super speed with simplicity and full access. With paging, every memory request
|
||||
<a name="l79"></a>requires 5 accesses -- it must access the address itself, 4K, 2Meg, 1Gig, and
|
||||
<a name="l80"></a>512Gig page tables, but the CPU's translation look-aside buffer mostly removes
|
||||
<a name="l81"></a>the penalty for using paging. So, I did not want to use paging, but long mode
|
||||
<a name="l82"></a>requires it. I did the next best thing -- I identity-mapped everything and
|
||||
<a name="l83"></a>achieved the simplicity I was after with subtle performance boosts, not wasting
|
||||
<a name="l84"></a>time changing address maps. And, I look forward to the day I command Intel to
|
||||
<a name="l85"></a>make an optimized no-paging long mode.
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a>I needed VGA A0000-BFFFF memory to be write-through and 0xE0000000-0xFFFFFFFF to
|
||||
<a name="l88"></a>be uncached for various devices. All 64-bit computers allow stopping address
|
||||
<a name="l89"></a>translation at 2Meg page size, not using 4K. I wanted to use 2Meg for
|
||||
<a name="l90"></a>everything because it's faster, with one less level of page tables. I had to
|
||||
<a name="l91"></a>make A0000-BFFFF write-through, though, so I could not use 2Meg size on the
|
||||
<a name="l92"></a>lowest page. I did the lowest 2Meg area as 4K pages. I also unmapped the first
|
||||
<a name="l93"></a>4K to cause a fault when dereferencing NULL.
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a>In 2016, I came-up with an alternate idea. I double mapped the lowest memory
|
||||
<a name="l96"></a>with an alias that was uncached. Accessing the lowest 2Meg area directly was
|
||||
<a name="l97"></a>cached but the alias I created up at the top of address space was uncached. See </span><span class=cF4>
|
||||
<a name="l98"></a></span><a href="/Wb/Kernel/Mem/MemPhysical.HC.HTML#l138"><span class=cF4>UncachedAliasAlloc</span></a><span class=cF0>(). Unfortunately, I could no longer boast of the simplicity
|
||||
<a name="l99"></a>of identity mapping everything. Since many of my users are familiar with
|
||||
<a name="l100"></a>A0000-BFFFF, it is actually pretty seriously unfortunate that they cannot use
|
||||
<a name="l101"></a>the easy-to-understand numbers of A0000-BFFFF, but must access the relocated
|
||||
<a name="l102"></a>alias location. See </span><a href="/Wb/Kernel/KMain.HC.HTML#l69"><span class=cF4>text.vga_alias</span></a><span class=cF0>. I also no longer cause a fault when
|
||||
<a name="l103"></a>dereferencing NULL.
|
||||
<a name="l104"></a>
|
||||
<a name="l105"></a>Then, I switched to 1Gig page sizes. For the lowest 4Gig, I set-up an alias up
|
||||
<a name="l106"></a>at the top of address space. See </span><a href="/Wb/Kernel/Mem/MemPhysical.HC.HTML#l138"><span class=cF4>UncachedAliasAlloc</span></a><span class=cF0>(). Not all computers
|
||||
<a name="l107"></a>support 1Gig page tables, however, so I also support 2Meg.
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a>My original plan was to allow changing the page tables as needed, so I had code
|
||||
<a name="l110"></a>for taking control of 2Meg pages and marking them uncached or whatever. When I
|
||||
<a name="l111"></a>did a HDAudio driver, I requested some 32-bit address space as uncached. Today,
|
||||
<a name="l112"></a>all of the first 4Gig can be accessed without caching at the </span><a href="/Wb/Kernel/KMain.HC.HTML#l69"><span class=cF4>dev.uncached_alias</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,64 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>A pull-down menu appears when you move the mouse to the top of the scrn. Menus
|
||||
<a name="l2"></a>are created with </span><a href="/Wb/Adam/Menu.HC.HTML#l150"><span class=cF4>MenuPush</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Menu.HC.HTML#l158"><span class=cF4>MenuFilePush</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Menu.HC.HTML#l85"><span class=cF4>MenuNew</span></a><span class=cF0>() or </span><a href="/Wb/Adam/Menu.HC.HTML#l103"><span class=cF4>MenuFile</span></a><span class=cF0>() and
|
||||
<a name="l3"></a>assigned to </span><span class=cF4>Fs->cur_menu</span><span class=cF0>. The format is:
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a></span><span class=cF2>
|
||||
<a name="l6"></a>File
|
||||
<a name="l7"></a>{
|
||||
<a name="l8"></a> Open(,'O');
|
||||
<a name="l9"></a> Save(,'S');
|
||||
<a name="l10"></a> Exit(,CH_SHIFT_ESC);
|
||||
<a name="l11"></a>}
|
||||
<a name="l12"></a>Edit {
|
||||
<a name="l13"></a> Cut(,,SC_DELETE|SCF_SHIFT);
|
||||
<a name="l14"></a> Paste(,,SC_INS|SCF_SHIFT);
|
||||
<a name="l15"></a>}
|
||||
<a name="l16"></a>Misc {
|
||||
<a name="l17"></a> Opt1(MSG_CMD,M_OPTION1);
|
||||
<a name="l18"></a> Opt2(MSG_CMD,M_OPTION2);
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a>Help
|
||||
<a name="l21"></a>{
|
||||
<a name="l22"></a> Help(,'?');
|
||||
<a name="l23"></a> About(,'/');
|
||||
<a name="l24"></a>}
|
||||
<a name="l25"></a></span><span class=cF0>
|
||||
<a name="l26"></a>The first arg is the msg code and it is optional with the default being </span><span class=cF4>
|
||||
<a name="l27"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3189"><span class=cF4>MSG_KEY_DOWN_UP</span></a><span class=cF0>. The second arg is the msg </span><span class=cF2>arg1</span><span class=cF0> value which is </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3426"><span class=cF4>ASCII</span></a><span class=cF0> of the key
|
||||
<a name="l28"></a>in the case of </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3176"><span class=cF4>MSG_KEY_DOWN</span></a><span class=cF0>. The third arg is the msg </span><span class=cF2>arg2</span><span class=cF0> value which is the </span><span class=cF4>
|
||||
<a name="l29"></a></span><a href="/Wb/Doc/CharOverview.DD.HTML#l1"><span class=cF4>scan_code</span></a><span class=cF0> of the key in the case of </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3176"><span class=cF4>MSG_KEY_DOWN</span></a><span class=cF0>.
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a>Press </span><span class=cF2><CTRL-SHIFT-l></span><span class=cF0> and "Insert ASCII/ScanCode".
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a>See </span><a href="/Wb/Demo/PullDownMenu.HC.HTML#l1"><span class=cF4>::/Demo/PullDownMenu.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,51 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><a href="/Wb/Kernel/KGlbls.HC.HTML#l25"><span class=cF4>ms.pos.x</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KGlbls.HC.HTML#l25"><span class=cF4>ms.pos.y</span></a><span class=cF0> can be used to access the x and y coordinates of the
|
||||
<a name="l2"></a>mouse. They are relative to the scrn, not window. These can be used if you
|
||||
<a name="l3"></a>don't want to use msg passing. </span><a href="/Wb/Kernel/KGlbls.HC.HTML#l25"><span class=cF4>ms.pos.z</span></a><span class=cF0> is the wheel.
|
||||
<a name="l4"></a></span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l2998"><span class=cF4>ms.pos_text.x</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2998"><span class=cF4>ms.pos_text.y</span></a><span class=cF0> are the text column and row. See </span><span class=cF4>
|
||||
<a name="l6"></a></span><a href="/Wb/Demo/Games/Maze.HC.HTML#l1"><span class=cF4>::/Demo/Games/Maze.HC</span></a><span class=cF0>.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2998"><span class=cF4>CMsStateGlbls</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2979"><span class=cF4>CMsHardStateGlbls</span></a><span class=cF0>.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>The </span><span class=cF2>hard</span><span class=cF0> designation, as in </span><span class=cF2>ms_hard</span><span class=cF0>, represents hardware layer items before the
|
||||
<a name="l11"></a>application of an abstraction layer.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF2>//****</span><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cFB>ms_hard</span><span class=cF0>.pos.x=</span><span class=cFB>ms_hard</span><span class=cF0>.prescale.x*</span><span class=cFB>ms_hard</span><span class=cF0>.scale.x*</span><span class=cFB>ms_grid</span><span class=cF0>.x_speed;
|
||||
<a name="l15"></a></span><span class=cFB>ms</span><span class=cF0>.presnap.x=</span><span class=cF5>ToI64</span><span class=cF0>(</span><span class=cFB>ms</span><span class=cF0>.scale.x*</span><span class=cFB>ms_hard</span><span class=cF0>.pos.x)+</span><span class=cFB>ms</span><span class=cF0>.</span><span class=cF1>offset</span><span class=cF0>.x;
|
||||
<a name="l16"></a></span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>ms_grid</span><span class=cF0>.snap)
|
||||
<a name="l17"></a> </span><span class=cFB>ms</span><span class=cF0>.pos.x=</span><span class=cF5>Trunc</span><span class=cF0>(</span><span class=cFB>ms</span><span class=cF0>.presnap.x/</span><span class=cFB>ms_grid</span><span class=cF0>.x)*</span><span class=cFB>ms_grid</span><span class=cF0>.x+</span><span class=cFB>ms_grid</span><span class=cF0>.x_offset;
|
||||
<a name="l18"></a></span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l19"></a> </span><span class=cFB>ms</span><span class=cF0>.pos.x=</span><span class=cFB>ms</span><span class=cF0>.presnap.x;
|
||||
<a name="l20"></a></span><span class=cF2>//****</span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>There are a maximum of 63 message types, so a bitmask can be passed. Messages
|
||||
<a name="l2"></a>have two args. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3174"><span class=cF4>Message Codes</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>TempleOS does master-slave multicore instead of SMP. </span><span class=cF2>Core0</span><span class=cF0> is the master. The
|
||||
<a name="l2"></a>master core's applications explicitly assign computational jobs to other cores
|
||||
<a name="l3"></a>and the TempleOS scheduler does not move tasks between cores.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>There are multicore safe locks for file access and heap allocations, however, so
|
||||
<a name="l6"></a>TempleOS is symmetrical in some sense. See </span><a href="/Wb/Demo/MultiCore/LoadTest.HC.HTML#l1"><span class=cF4>::/Demo/MultiCore/LoadTest.HC</span></a><span class=cF0>.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>Only tasks on </span><span class=cF2>Core0</span><span class=cF0> can have windows, but other cores can help render them.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>Each core has an executive </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> which is the father of all tasks on that
|
||||
<a name="l11"></a>core. </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam</span></a><span class=cF0> is the </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> on </span><span class=cF2>Core0</span><span class=cF0>.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>You give a job to a </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> with </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l213"><span class=cF4>JobQue</span></a><span class=cF0>() and get the result with </span><a href="/Wb/Kernel/Job.HC.HTML#l199"><span class=cF4>JobResGet</span></a><span class=cF0>().
|
||||
<a name="l14"></a> You spawn a task on any core with </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>().
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>Note: You must use the </span><span class=cF2>LOCK</span><span class=cF0> asm prefix when changing shared structures in a
|
||||
<a name="l17"></a>multicore environment. The </span><a href="/Wb/Kernel/KernelB.HH.HTML#l26"><span class=cF4>LBts</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/KernelB.HH.HTML#l24"><span class=cF4>LBtr</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/KernelB.HH.HTML#l22"><span class=cF4>LBtc</span></a><span class=cF0>() insts have </span><span class=cF2>LOCK</span><span class=cF0> prefixes.
|
||||
<a name="l18"></a>The compiler has a </span><span class=cF2>lock{}</span><span class=cF0> feature but it doesn't work well. See </span><span class=cF4>
|
||||
<a name="l19"></a></span><a href="/Wb/Demo/MultiCore/Lock.HC.HTML#l1"><span class=cF4>::/Demo/MultiCore/Lock.HC</span></a><span class=cF0>.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>See </span><a href="/Wb/Demo/Graphics/Transform.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Transform.HC</span></a><span class=cF0>.
|
||||
<a name="l22"></a>See </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l1"><span class=cF4>::/Kernel/MultiProc.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,57 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> New ASCII</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a>We want to use one set for ASCII, ScanCodes and ScreenCodes.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>0 -63 :
|
||||
<a name="l8"></a>64 -127 : SHIFT
|
||||
<a name="l9"></a>128-191 : CTRL
|
||||
<a name="l10"></a>192-256 : CTRL+SHIFT
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>No more ALT key in TempleOS.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>CTRL-LEFT/RIGHT is already begin/end line.
|
||||
<a name="l15"></a>CTRL-UP/DOWN is already top/bottom of document.
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>What about function keys?
|
||||
<a name="l18"></a>We will use reduced keyboard, probably.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>God says...
|
||||
<a name="l23"></a></span><span class=cF2>clearest bade domine chance none quoth privily subjection possessor abolished</span><span class=cF1>
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,40 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>TempleOS has an advanced algorithm for integrating ordinary differential
|
||||
<a name="l2"></a>equations suitable for use in video games. (Not scientific work.) It also has
|
||||
<a name="l3"></a>some support for systems of masses and springs, to save you some work.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l251"><span class=cF4>CMathODE</span></a><span class=cF0> and </span><a href="/Wb/Adam/AMathODE.HC.HTML#l567"><span class=cF4>ODEsUpdate</span></a><span class=cF0> for an overview.
|
||||
<a name="l6"></a>See </span><a href="/Wb/Adam/AMathODE.HC.HTML#l380"><span class=cF4>ODECallDerivative</span></a><span class=cF0> to see what support there is for masses and springs.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>See </span><a href="/Wb/Demo/Games/Whap.HC.HTML#l1"><span class=cF4>::/Demo/Games/Whap.HC</span></a><span class=cF0>, </span><a href="/Wb/Demo/Games/Rocket.HC.HTML#l1"><span class=cF4>::/Demo/Games/Rocket.HC</span></a><span class=cF0>, </span><a href="/Wb/Demo/Games/MassSpring.HC.HTML#l1"><span class=cF4>::/Demo/Games/MassSpring.HC</span></a><span class=cF0>, </span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Apps/Span/SpanMain.HC.HTML#l1"><span class=cF4>::/Apps/Span/SpanMain.HC</span></a><span class=cF0> or </span><a href="/Wb/Apps/X-Caliber/X-Caliber.HC.HTML#l1"><span class=cF4>::/Apps/X-Caliber/X-Caliber.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,47 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><a href="/Wb/Kernel/KMain.HC.HTML#l135"><span class=cF4>KMain</span></a><span class=cF0>()
|
||||
<a name="l2"></a> includes </span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>::/StartOS.HC</span></a><span class=cF0>
|
||||
<a name="l3"></a> includes </span><a href="/Wb/Home/MakeHome.HC.HTML#l1"><span class=cF4>~/MakeHome.HC</span></a><span class=cF0>
|
||||
<a name="l4"></a> includes </span><a href="/Wb/Home/HomeSys..HTML#l1"><span class=cF4>~/HomeSys.HC</span></a><span class=cF0>
|
||||
<a name="l5"></a> calls </span><a href="/Wb/Home/HomeSys..HTML#l22"><span class=cF4>StartUpTasks</span></a><span class=cF0>()
|
||||
<a name="l6"></a> includes </span><a href="/Wb/Home/Once..HTML#l1"><span class=cF4>~/Once.HC</span></a><span class=cF0>
|
||||
<a name="l7"></a> calls </span><a href="/Wb/Adam/ARegistry.HC.HTML#l179"><span class=cF4>OnceExe</span></a><span class=cF0>().
|
||||
<a name="l8"></a></span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Adam/ARegistry.HC.HTML#l135"><span class=cF4>AOnce</span></a><span class=cF0>() appends src code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF0> </span><span class=cF2>Once/Adam</span><span class=cF0> tree, executed at next boot
|
||||
<a name="l10"></a>by </span><span class=cF2>Adam</span><span class=cF0>.
|
||||
<a name="l11"></a></span><span class=cF4>
|
||||
<a name="l12"></a></span><a href="/Wb/Adam/ARegistry.HC.HTML#l144"><span class=cF4>Once</span></a><span class=cF0>() appends src code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF0> </span><span class=cF2>Once/User</span><span class=cF0> tree, executed at next boot
|
||||
<a name="l13"></a>by first </span><span class=cF2>User</span><span class=cF0> term.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>At boot, </span><a href="/Wb/Adam/ARegistry.HC.HTML#l179"><span class=cF4>OnceExe</span></a><span class=cF0>(), executes </span><span class=cF2>Once/Adam</span><span class=cF0> tree, </span><a href="/Wb/Adam/ARegistry.HC.HTML#l125"><span class=cF4>AOnceFlush</span></a><span class=cF0>()s it,
|
||||
<a name="l16"></a>executes </span><span class=cF2>Once/User</span><span class=cF0> tree and </span><a href="/Wb/Adam/ARegistry.HC.HTML#l130"><span class=cF4>OnceFlush</span></a><span class=cF0>()s.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,58 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Compiler Options</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Use </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(). You might need to do </span><span class=cF2>#exe {Option();}</span><span class=cF0>.
|
||||
<a name="l4"></a></span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1555"><span class=cF4>OPTf_GLBLS_ON_DATA_HEAP</span></a><span class=cF0> without this option, global vars are placed in the code
|
||||
<a name="l6"></a>heap which is limited to 2Gig. In </span><span class=cF2>AOT</span><span class=cF0> modules, global vars take-up room in the </span><span class=cF2>
|
||||
<a name="l7"></a>.BIN</span><span class=cF0> file, so you might want to use this option, instead. You might wish to
|
||||
<a name="l8"></a>turn it on and off around specific vars. A disadvantage of data heap global
|
||||
<a name="l9"></a>vars in </span><span class=cF2>AOT</span><span class=cF0> modules is they can't be initialized.
|
||||
<a name="l10"></a></span><span class=cF4>
|
||||
<a name="l11"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1552"><span class=cF4>OPTf_EXTERNS_TO_IMPORTS</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1553"><span class=cF4>OPTf_KEEP_PRIVATE</span></a><span class=cF0> are strange options, you'll never
|
||||
<a name="l12"></a>need. They're to allow the same header file for </span><span class=cF2>Kernel</span><span class=cF0> to act as </span><span class=cF2>extern</span><span class=cF0>s when
|
||||
<a name="l13"></a>compiling itself and </span><span class=cF2>import</span><span class=cF0>s when compiled by </span><span class=cF2>AOT</span><span class=cF0> modules.
|
||||
<a name="l14"></a></span><span class=cF4>
|
||||
<a name="l15"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1548"><span class=cF4>OPTf_WARN_UNUSED_VAR</span></a><span class=cF0> warning if unused var. It is applied to functions.
|
||||
<a name="l16"></a></span><span class=cF4>
|
||||
<a name="l17"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1549"><span class=cF4>OPTf_WARN_PAREN</span></a><span class=cF0> warning if parenthesis are not needed.
|
||||
<a name="l18"></a></span><span class=cF4>
|
||||
<a name="l19"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1550"><span class=cF4>OPTf_WARN_DUP_TYPES</span></a><span class=cF0> warning if dup local var type stmts.
|
||||
<a name="l20"></a></span><span class=cF4>
|
||||
<a name="l21"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1551"><span class=cF4>OPTf_WARN_HEADER_MISMATCH</span></a><span class=cF0> warning if fun header does not match.
|
||||
<a name="l22"></a></span><span class=cF4>
|
||||
<a name="l23"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1554"><span class=cF4>OPTf_NO_REG_VAR</span></a><span class=cF0> forces all function local vars to the stk not regs. Applied to
|
||||
<a name="l24"></a>functions.
|
||||
<a name="l25"></a></span><span class=cF4>
|
||||
<a name="l26"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l1557"><span class=cF4>OPTf_NO_BUILTIN_CONST</span></a><span class=cF0> Disable 10-byte float consts for pi, log2_10, log10_2,
|
||||
<a name="l27"></a>loge_2. Applied to functions.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The word </span><span class=cF2>Pag</span><span class=cF0> refers to an arbitrilly created </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2833"><span class=cF4>MEM_PAG_SIZE</span></a><span class=cF0> unit of heap
|
||||
<a name="l2"></a>allocation. TempleOS does not alter the CPU page tables after setting them up
|
||||
<a name="l3"></a>at boot in </span><a href="/Wb/Kernel/Mem/PageTables.HC.HTML#l6"><span class=cF4>SYS_INIT_PAGE_TABLES</span></a><span class=cF0>, so the CPU hardware page size is rarely
|
||||
<a name="l4"></a>important.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,54 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> PreProcessor</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>There is no separate preprocessor pass. The parser front-end calls </span><a href="/Wb/Compiler/Lex.HC.HTML#l441"><span class=cF4>Lex</span></a><span class=cF0>() which
|
||||
<a name="l4"></a>has the preprocessor built-in. The compiler looks ahead a token, most of the
|
||||
<a name="l5"></a>time, so you might throw an extra semicolon after a directive if it's not taking
|
||||
<a name="l6"></a>affect right away.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>Put an extra semicolon </span><span class=cF2>#exe {Cd("DirName");;}</span><span class=cF0> in case a </span><span class=cF2>#include</span><span class=cF0> follows.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF2>#include ""</span><span class=cF0> There is no angle bracket <> form of this directive.
|
||||
<a name="l11"></a></span><span class=cF2>#exe {}</span><span class=cF0> Will execute code at compile-time and can be used to insert code
|
||||
<a name="l12"></a>into the stream being compiled using </span><a href="/Wb/Compiler/CMisc.HC.HTML#l68"><span class=cF4>StreamPrint</span></a><span class=cF0>().
|
||||
<a name="l13"></a></span><span class=cF2>#define</span><span class=cF0> Define string const
|
||||
<a name="l14"></a></span><span class=cF2>#assert</span><span class=cF0> Print a warning during compilation if an expression is not true.
|
||||
<a name="l15"></a></span><span class=cF2>#if</span><span class=cF0> Include code if an expresion is true.
|
||||
<a name="l16"></a></span><span class=cF2>#else
|
||||
<a name="l17"></a>#endif
|
||||
<a name="l18"></a>#ifdef,#ifndef </span><span class=cF0>Include code if a sym is defined.
|
||||
<a name="l19"></a></span><span class=cF2>#ifaot,#ifjit </span><span class=cF0>Include code if in </span><span class=cF2>AOT</span><span class=cF0> compiler mode.
|
||||
<a name="l20"></a></span><span class=cF2>defined()</span><span class=cF0> Is a function that can be used in expressions.
|
||||
<a name="l21"></a></span><span class=cF2>#help_index</span><span class=cF0>, </span><span class=cF2>#help_file</span><span class=cF0> See </span><a href="/Wb/Doc/HelpSystem.DD.HTML#l1"><span class=cF4>Help System</span></a><span class=cF0>.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>See </span><a href="/Wb/Compiler/Lex.HC.HTML#l710"><span class=cF4>PreProcessor</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,144 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Print Fmt Strs</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a><fmt_arg> := </span><span class=cF2>%</span><span class=cF0>[</span><span class=cF2>-</span><span class=cF0>][</span><span class=cF2>0</span><span class=cF0>][<width>][</span><span class=cF2>.</span><span class=cF0><decimals>][<flags>][</span><span class=cF2>h</span><span class=cF0><aux_fmt_num>]<fmt_code>
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>See </span><a href="/Wb/Kernel/StrPrint.HC.HTML#l208"><span class=cF4>StrPrintJoin</span></a><span class=cF0>().
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a><flags>:
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a> </span><span class=cF2>'t'</span><span class=cF0> truncate to <width>.
|
||||
<a name="l10"></a> </span><span class=cF2>','</span><span class=cF0> add commas every three digits or four nibbles.
|
||||
<a name="l11"></a> </span><span class=cF2>'$'</span><span class=cF0> makes </span><span class=cF2>%Q</span><span class=cF0> convert </span><span class=cF2>'$'</span><span class=cF0> to </span><span class=cF2>"\x24"</span><span class=cF0>.
|
||||
<a name="l12"></a> </span><span class=cF2>'/'</span><span class=cF0> makes </span><span class=cF2>%Q</span><span class=cF0> and </span><span class=cF2>%q</span><span class=cF0> convert </span><span class=cF2>'%'</span><span class=cF0> to </span><span class=cF2>"%%"</span><span class=cF0>.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a><aux_fmt_num>:
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a> For </span><span class=cF2>"%n"</span><span class=cF0>, </span><span class=cF2>"%d"</span><span class=cF0> or </span><span class=cF2>"%u"</span><span class=cF0>, the <aux_fmt_num> causes thousands mode. </span><span class=cF2>"%h?n"</span><span class=cF0> will
|
||||
<a name="l17"></a> pick a var exponent multiples of three unit, while </span><span class=cF2>"%h-3n"</span><span class=cF0> will display milli
|
||||
<a name="l18"></a> units or </span><span class=cF2>"%h6n"</span><span class=cF0> will display mega units. The </span><span class=cF2>'k'</span><span class=cF0> flag is always on for </span><span class=cF2>"%n"</span><span class=cF0>.
|
||||
<a name="l19"></a> See </span><a href="/Wb/Demo/Print.HC.HTML#l1"><span class=cF4>::/Demo/Print.HC</span></a><span class=cF0>.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>For </span><span class=cF2>"%c"</span><span class=cF0> or </span><span class=cF2>"%C"</span><span class=cF0>, the <aux_fmt_num> repeats the char that many times.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a><fmt_code>:
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a> </span><span class=cF2>"%n"</span><span class=cF0> floating point in engineering notation, exponents being multiples of
|
||||
<a name="l26"></a> three. If it has a <aux_fmt> code, it will display scientific units letters.
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a> </span><span class=cF2>"%S"</span><span class=cF0> </span><a href="/Wb/Kernel/KDefine.HC.HTML#l49"><span class=cF4>Define</span></a><span class=cF0>() entry.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a> </span><span class=cF2>"%C"</span><span class=cF0> </span><a href="/Wb/Kernel/KernelB.HH.HTML#l58"><span class=cF4>ToUpper</span></a><span class=cF0>() character.
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a> </span><span class=cF2>"%h25c",'\n';</span><span class=cF0> 25 new-lines.
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a> </span><span class=cF2>"%h*c",25,'\n';</span><span class=cF0> 25 new-lines.
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a> </span><span class=cF2>"%F"</span><span class=cF0> text file by filename.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a> </span><span class=cF2>"%$F"</span><span class=cF0> </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> file in memory.
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a> </span><span class=cF2>"%p"</span><span class=cF0> ptr.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a> </span><span class=cF2>"%,p"</span><span class=cF0> ptr with no offset.
|
||||
<a name="l43"></a>
|
||||
<a name="l44"></a> </span><span class=cF2>"%P"</span><span class=cF0> link to ptr.
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a> </span><span class=cF2>"%,P"</span><span class=cF0> link to ptr with no offset.
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a> </span><span class=cF2>"%D"</span><span class=cF0> date. Pass a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l186"><span class=cF4>CDate</span></a><span class=cF0>.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a> </span><span class=cF2>"%T"</span><span class=cF0> time. Pass a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l186"><span class=cF4>CDate</span></a><span class=cF0>.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a> </span><span class=cF2>"%z"</span><span class=cF0> sub_entry of an enumerated list of text entries. See </span><a href="/Wb/Kernel/StrA.HC.HTML#l397"><span class=cF4>LstSub</span></a><span class=cF0>(). Pass
|
||||
<a name="l53"></a> sub_entry_num first, list second.
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a> </span><span class=cF2>"%Z"</span><span class=cF0> </span><a href="/Wb/Kernel/KDefine.HC.HTML#l13"><span class=cF4>DefineLstLoad</span></a><span class=cF0>() subentry. Pass sub_entry_num first, define_name second.
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a> </span><span class=cF2>"%Q"</span><span class=cF0> convert "\" to "\\" and quote to backslash quote. (For use in creating
|
||||
<a name="l58"></a> strs in strs.)
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a> </span><span class=cF2>"%q"</span><span class=cF0> rev a </span><span class=cF2>"%Q"</span><span class=cF0>.
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a></span><span class=cF5> Print Family</span><span class=cF0>
|
||||
<a name="l64"></a></span><span class=cF4>
|
||||
<a name="l65"></a></span><a href="/Wb/Kernel/StrPrint.HC.HTML#l898"><span class=cF4>MStrPrint</span></a><span class=cF0>(U8 *fmt,...) is like </span><a href="/Wb/Kernel/StrPrint.HC.HTML#l876"><span class=cF4>StrPrint</span></a><span class=cF0>(U8 *dst,U8 *fmt,...) but it returns a </span><span class=cF4>
|
||||
<a name="l66"></a></span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>ated str. It is vary handy because you don't have to worry about
|
||||
<a name="l67"></a>overflow.
|
||||
<a name="l68"></a></span><span class=cF4>
|
||||
<a name="l69"></a></span><a href="/Wb/Kernel/StrPrint.HC.HTML#l881"><span class=cF4>CatPrint</span></a><span class=cF0>(U8 *_dst,U8 *fmt,...) concatenates a formated string.
|
||||
<a name="l70"></a></span><span class=cF4>
|
||||
<a name="l71"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>(U8 *fmt,...) sends text to the current task's input buffer.</span><span class=cF4>
|
||||
<a name="l72"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l464"><span class=cF4>InStr</span></a><span class=cF0>(U8 *fmt,...) sends text of an </span><a href="/Wb/Doc/Glossary.DD.HTML#l260"><span class=cF4>InFile</span></a><span class=cF0> to the keyboard stream of the current
|
||||
<a name="l73"></a>TASK but can also do mouse cmds.
|
||||
<a name="l74"></a></span><span class=cF4>
|
||||
<a name="l75"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l445"><span class=cF4>XTalk</span></a><span class=cF0>(CTask *task,U8 *fmt,...) and text to another task's input buffer.</span><span class=cF4>
|
||||
<a name="l76"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l489"><span class=cF4>XTalkStr</span></a><span class=cF0>(CTask *task,U8 *fmt,...) sends text of an </span><a href="/Wb/Doc/Glossary.DD.HTML#l260"><span class=cF4>InFile</span></a><span class=cF0> to the keyboard stream
|
||||
<a name="l77"></a>of another TASK but can also do mouse cmds.
|
||||
<a name="l78"></a></span><span class=cF4>
|
||||
<a name="l79"></a></span><a href="/Wb/Adam/DolDoc/DocPutS.HC.HTML#l148"><span class=cF4>DocPrint</span></a><span class=cF0>(CDoc *doc,U8 *fmt,...) sends text to a document. You can buffer to a
|
||||
<a name="l80"></a>Doc and save it, providing the functionality of </span><span class=cF2>fprintf</span><span class=cF0>. See </span><span class=cF4>
|
||||
<a name="l81"></a></span><a href="/Wb/Demo/Dsk/FPrintF.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/FPrintF.HC</span></a><span class=cF0>.
|
||||
<a name="l82"></a></span><span class=cF4>
|
||||
<a name="l83"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l406"><span class=cF4>Adam</span></a><span class=cF0>(U8 *fmt,...) sends text to the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> to be compiled and run.</span><span class=cF4>
|
||||
<a name="l84"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l423"><span class=cF4>AdamLog</span></a><span class=cF0>(U8 *fmt,...) and </span><a href="/Wb/Kernel/Job.HC.HTML#l433"><span class=cF4>AdamErr</span></a><span class=cF0>(U8 *fmt,...) send text to the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> to be
|
||||
<a name="l85"></a>displayed.
|
||||
<a name="l86"></a></span><span class=cF4>
|
||||
<a name="l87"></a></span><a href="/Wb/Compiler/CMisc.HC.HTML#l68"><span class=cF4>StreamPrint</span></a><span class=cF0>(U8 *fmt,...) sends text to the stream of code being compiled and
|
||||
<a name="l88"></a>must reside in a </span><span class=cF2>#exe{}</span><span class=cF0> blk.
|
||||
<a name="l89"></a></span><span class=cF4>
|
||||
<a name="l90"></a></span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l989"><span class=cF4>GrPrint</span></a><span class=cF0>(CDC *dc,I64 x,I64 y,U8 *fmt,...) and </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l998"><span class=cF4>GrVPrint</span></a><span class=cF0>() plots text in graphics
|
||||
<a name="l91"></a>mode.
|
||||
<a name="l92"></a></span><span class=cF4>
|
||||
<a name="l93"></a></span><a href="/Wb/Adam/Gr/GrTextBase.HC.HTML#l321"><span class=cF4>TextPrint</span></a><span class=cF0>(CTask *task,I64 x,I64 y,I64 attr,U8 *fmt,...) plots to </span><span class=cF4><u>gr.text_base</u></span><span class=cF0>.
|
||||
<a name="l94"></a></span><span class=cF4>
|
||||
<a name="l95"></a></span><a href="/Wb/Compiler/CMain.HC.HTML#l605"><span class=cF4>ExePrint</span></a><span class=cF0>(U8 *fmt,...) compiles and execute a string. Note: It returns the res
|
||||
<a name="l96"></a>of the last executed expression.
|
||||
<a name="l97"></a></span><span class=cF4>
|
||||
<a name="l98"></a></span><a href="/Wb/Adam/ARegistry.HC.HTML#l144"><span class=cF4>Once</span></a><span class=cF0>(U8 *fmt,...) Writes User code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>Registry</span></a><span class=cF0> to be executed next boot.
|
||||
<a name="l99"></a></span><span class=cF4>
|
||||
<a name="l100"></a></span><a href="/Wb/Adam/ARegistry.HC.HTML#l135"><span class=cF4>AOnce</span></a><span class=cF0>(U8 *fmt,...) Writes Adam code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>Registry</span></a><span class=cF0> to be executed next boot.
|
||||
<a name="l101"></a></span><span class=cF4>
|
||||
<a name="l102"></a></span><a href="/Wb/Adam/InFile.HC.HTML#l26"><span class=cF4>InPrint</span></a><span class=cF0>(I64 mS,U8 *fmt,...) </span><a href="/Wb/Kernel/KeyDev.HC.HTML#l20"><span class=cF4>PutChars</span></a><span class=cF0>()s one at a time with a delay.
|
||||
<a name="l103"></a></span><span class=cF4>
|
||||
<a name="l104"></a></span><a href="/Wb/Kernel/KDbg.HC.HTML#l217"><span class=cF4>RawPrint</span></a><span class=cF0>(I64 mS,U8 *fmt,...) sends direct to scrn memory, bypassing window
|
||||
<a name="l105"></a>manager.
|
||||
<a name="l106"></a></span><span class=cF4>
|
||||
<a name="l107"></a></span><a href="/Wb/Kernel/KTask.HC.HTML#l424"><span class=cF4>User</span></a><span class=cF0>(U8 *fmt,...) Spawns a user and execute a string on start-up.
|
||||
<a name="l108"></a></span><span class=cF4>
|
||||
<a name="l109"></a></span><a href="/Wb/Kernel/Job.HC.HTML#l397"><span class=cF4>PopUpPrint</span></a><span class=cF0>(U8 *fmt,...) compiles and execute a string in a pop-up win. Note: It
|
||||
<a name="l110"></a>returns the res of the last executed expression.</span><span class=cF4>
|
||||
<a name="l111"></a></span><a href="/Wb/Adam/DolDoc/DocPopUp.HC.HTML#l11"><span class=cF4>PopUpViewPrint</span></a><span class=cF0>(U8 *fmt,...) creates a pop-up window and views text.
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a><blink>Note:</blink> Use </span><span class=cF2>Print("%s",src)</span><span class=cF0> if you need an unmodified string.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,42 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The profiler records where the CPU was executing when the 1000Hz timer interrupt
|
||||
<a name="l2"></a>occured, so you can learn where time is spent.
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a>Use the </span><a href="/Wb/Adam/Opt/Utils/Profiler.HC.HTML#l27"><span class=cF4>Prof</span></a><span class=cF0>() depth argument to record a hit in the N routines which called the
|
||||
<a name="l5"></a>current routine, as well.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>When done collecting statistics, use </span><a href="/Wb/Adam/Opt/Utils/Profiler.HC.HTML#l57"><span class=cF4>ProfRep</span></a><span class=cF0>() for a report. You might need a </span><span class=cF4>
|
||||
<a name="l8"></a></span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l176"><span class=cF4>DocMax</span></a><span class=cF0>() to expand the command line window buffer to fit it all.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>Study the code. The profiler is very simple. You might want to enhance it or
|
||||
<a name="l11"></a>modify it to debug something in particular.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>A </span><span class=cF2>Queue</span><span class=cF0> is a bunch of </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>()ed chunks of mem linked together in a circle with
|
||||
<a name="l2"></a>one ptr to the </span><span class=cF2>next</span><span class=cF0> value and another ptr to the </span><span class=cF2>last</span><span class=cF0> value. These ptrs must be
|
||||
<a name="l3"></a>stored in the first locations in the structure.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,101 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Quirks</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>* You run a risk of problems if you do file operations on the same files
|
||||
<a name="l4"></a>simultaneously because there is <blink>no file sharing/locking mechanism</blink>. Generally,
|
||||
<a name="l5"></a>the last write wins.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>* When using </span><span class=cF2>FAT32</span><span class=cF0>, TempleOS does not generate unique short-entry names, the
|
||||
<a name="l8"></a>ones with the </span><span class=cF2>~</span><span class=cF0>s. Not all </span><span class=cF2>FAT32</span><span class=cF0> filenames are valid TempleOS names and it will
|
||||
<a name="l9"></a>complain. Do not access </span><span class=cF2>FAT32</span><span class=cF0> drives not dedicated to TempleOS. Disable them
|
||||
<a name="l10"></a>with </span><a href="/Wb/Kernel/BlkDev/DskAddDev.HC.HTML#l170"><span class=cF4>DrvEnable</span></a><span class=cF0>(OFF), or they will generate error messages. </span><span class=cF2>FAT32</span><span class=cF0> involves a
|
||||
<a name="l11"></a>long and short name for each file.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>* The stk does not grow because virtual mem is not used. I recommend allocating
|
||||
<a name="l14"></a>large local vars from the heap. You can change </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2843"><span class=cF4>MEM_DFT_STK</span></a><span class=cF0> and recompile </span><span class=cF2>Kernel</span><span class=cF0>
|
||||
<a name="l15"></a>or request more when doing a </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>().
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>* The syntax highlighting occassionally glitches. The compiler doesn't.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>* Call </span><a href="/Wb/Kernel/BlkDev/DskDrv.HC.HTML#l237"><span class=cF4>DskChg</span></a><span class=cF0>() when you insert a new removable media.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>* Accessing CD/DVD's is flacky. Try </span><a href="/Wb/Kernel/BlkDev/DskDrv.HC.HTML#l263"><span class=cF4>Drv</span></a><span class=cF0>() or </span><a href="/Wb/Kernel/BlkDev/DskDrv.HC.HTML#l237"><span class=cF4>DskChg</span></a><span class=cF0>() twice.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>* You can only </span><span class=cF2>extern</span><span class=cF0> something once. There is a varient called </span><span class=cF2>_extern</span><span class=cF0> which
|
||||
<a name="l24"></a>binds a HolyC definition to a asm sym. This, too, can only be done once.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>* A terminal task has a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> document structure that remains active even when
|
||||
<a name="l27"></a>you change </span><span class=cF4>Fs->draw_it</span><span class=cF0>. To prevent links in the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> from being activated when
|
||||
<a name="l28"></a>the user clicks in the window, do one of three things:
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a> A) </span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l107"><span class=cF4>DocBottom</span></a><span class=cF0>() followed by </span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l120"><span class=cF4>DocClear</span></a><span class=cF0>() to clear the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> so it has no active
|
||||
<a name="l31"></a> widgets.
|
||||
<a name="l32"></a>
|
||||
<a name="l33"></a> B) Disable window mgr bttn click checking with </span><span class=cF4>Fs->win_inhibit</span><span class=cF0> set to mask </span><span class=cF4>
|
||||
<a name="l34"></a> </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1421"><span class=cF4>WIF_SELF_MS_L</span></a><span class=cF0>|</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1435"><span class=cF4>WIF_FOCUS_TASK_MS_L_D</span></a><span class=cF0>|</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1423"><span class=cF4>WIF_SELF_MS_R</span></a><span class=cF0>|</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1437"><span class=cF4>WIF_FOCUS_TASK_MS_R_D</span></a><span class=cF0>. This
|
||||
<a name="l35"></a> inhibits window mgr operations but still generates messages from bttn clicks.
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a>* </span><span class=cF2>switch/case</span><span class=cF0> stmts alloc a single jump table--do not use with wide, sparse
|
||||
<a name="l38"></a>ranges of case values.
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a>* Don't do a </span><span class=cF2>goto</span><span class=cF0> out of a </span><span class=cF2>try{}</span><span class=cF0>.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>* A </span><span class=cF2>goto</span><span class=cF0> label name must not match a global scope object's name. (It's not
|
||||
<a name="l43"></a>worth slowing-down the compiler to handle this case.)
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>* </span><a href="/Wb/Kernel/KernelB.HH.HTML#l169"><span class=cF4>MemCpy</span></a><span class=cF0>() only goes fwd.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>* A </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l9"><span class=cF4>Cd</span></a><span class=cF0>() cmd must be followed by two semicolons if a </span><span class=cF2>#include</span><span class=cF0> is after it. This
|
||||
<a name="l48"></a>is because the preprocessor processes the next token ahead.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a>* The assembler's error msgs are often off by a line and undefines are cryptic.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>* The last semicolon on the cmd line is converted to a dbl semicolon because the
|
||||
<a name="l53"></a>compiler looks ahead before doing a cmd. This normally has no negative effect,
|
||||
<a name="l54"></a>but when entering </span><span class=cF2>if</span><span class=cF0> stmts with </span><span class=cF2>else</span><span class=cF0> clauses it presents problems.
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>* You can do a </span><span class=cF2>class</span><span class=cF0> fwd reference by using </span><span class=cF2>extern</span><span class=cF0> on the first declaration, but
|
||||
<a name="l57"></a>you can only do ptr references to the </span><span class=cF2>class</span><span class=cF0>.
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a>* When doing something like
|
||||
<a name="l60"></a></span><span class=cF2> U0 Main()
|
||||
<a name="l61"></a> {
|
||||
<a name="l62"></a> U16 *_w=0xA0000;
|
||||
<a name="l63"></a> *_w|=0x8000;
|
||||
<a name="l64"></a> }
|
||||
<a name="l65"></a> </span><span class=cF0>The </span><span class=cF2>|=</span><span class=cF0> will be coded as a </span><span class=cF2>U32 Bts</span><span class=cF0> inst resulting in a </span><span class=cF2>U32</span><span class=cF0> access instead of a </span><span class=cF2>
|
||||
<a name="l66"></a> U16</span><span class=cF0> access. This affects some hardware operations.
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a>* Compiler warning or error message line numbers will be off if you have a block
|
||||
<a name="l69"></a>of word-wrapped comments. You might press </span><span class=cF2><CTRL-t></span><span class=cF0> before doing an editor
|
||||
<a name="l70"></a>goto-line-number command.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> RedSea File System</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>The RedSea file system is a simple, 64-bit, file system which is similar to
|
||||
<a name="l4"></a>FAT32, but with absolute block addresses instead of clus, fixed-sized 64-byte
|
||||
<a name="l5"></a>directory entries and no FAT table, just an allocation bitmap. A clus is just
|
||||
<a name="l6"></a>one 512 byte sector. Files are stored in contiguous blocks and cannot grow in
|
||||
<a name="l7"></a>size.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>CDIR_FILENAME_LEN</span><span class=cF0> 38 </span><span class=cF2>//Must include terminator zero</span><span class=cF0>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>The following bit field shows valid 8-Bit ASCII filename characters.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF9>U32</span><span class=cF0> </span><span class=cFB>char_bmp_filename</span><span class=cF0>[8]=
|
||||
<a name="l14"></a>{0x0000000, 0x03FF73FB, 0xEFFFFFFF, 0x2FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
<a name="l15"></a>0xFFFFFFFF, 0xFFFFFFFF};
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CDirEntry</span><span class=cF0> </span><span class=cF2>//64-byte fixed-size</span><span class=cF0>
|
||||
<a name="l18"></a>{
|
||||
<a name="l19"></a> </span><span class=cF9>U16</span><span class=cF0> attr; </span><span class=cF2>//See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2501"><span class=cF4>RS_ATTR_DIR</span></a><span class=cF2>. I would like to change these.</span><span class=cF0>
|
||||
<a name="l20"></a> </span><span class=cF1>U8</span><span class=cF0> name[</span><span class=cF3>CDIR_FILENAME_LEN</span><span class=cF0>]; </span><span class=cF2>//See </span><a href="/Wb/Kernel/StrA.HC.HTML#l345"><span class=cF4>char_bmp_filename</span></a><span class=cF2>, </span><a href="/Wb/Kernel/BlkDev/DskStrA.HC.HTML#l249"><span class=cF4>FileNameChk</span></a><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF9>I64</span><span class=cF0> clus; (blk) </span><span class=cF2>//One sector per clus.</span><span class=cF0>
|
||||
<a name="l22"></a> </span><span class=cF9>I64</span><span class=cF0> size; </span><span class=cF2>//In bytes</span><span class=cF0>
|
||||
<a name="l23"></a> </span><span class=cF9>CDate</span><span class=cF0> datetime; </span><span class=cF2>//See </span><a href="/Wb/Doc/TimeDate.DD.HTML#l1"><span class=cF4>DateTime</span></a><span class=cF2>, </span><a href="/Wb/Kernel/KDate.HC.HTML#l1"><span class=cF4>Implementation of DateTime</span></a><span class=cF0>
|
||||
<a name="l24"></a>};
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CRedSeaBoot</span><span class=cF0> </span><span class=cF2>//RedSea is type FAT32 in partition table to fool BIOS.</span><span class=cF0>
|
||||
<a name="l27"></a>{
|
||||
<a name="l28"></a> </span><span class=cF1>U8</span><span class=cF0> jump_and_nop[3];
|
||||
<a name="l29"></a> </span><span class=cF1>U8</span><span class=cF0> signature,reserved[4]; </span><span class=cF2>//MBR_PT_REDSEA=0x88. Distinguish from real FAT32.</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF9>I64</span><span class=cF0> drv_offset; </span><span class=cF2>//For CD/DVD image copy.</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF9>I64</span><span class=cF0> sects;
|
||||
<a name="l32"></a> </span><span class=cF9>I64</span><span class=cF0> root_clus; (root_blk)
|
||||
<a name="l33"></a> </span><span class=cF9>I64</span><span class=cF0> bitmap_sects;
|
||||
<a name="l34"></a> </span><span class=cF9>I64</span><span class=cF0> unique_id;
|
||||
<a name="l35"></a> </span><span class=cF1>U8</span><span class=cF0> code[462];
|
||||
<a name="l36"></a> </span><span class=cF9>U16</span><span class=cF0> signature2; </span><span class=cF2>//0xAA55</span><span class=cF0>
|
||||
<a name="l37"></a>};
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>See </span><a href="/Wb/Kernel/BlkDev/FileSysRedSea.HC.HTML#l1"><span class=cF4>::/Kernel/BlkDev/FileSysRedSea.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/Opt/Boot/DskISORedSea.HC.HTML#l1"><span class=cF4>::/Adam/Opt/Boot/DskISORedSea.HC</span></a><span class=cF0>.
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a>Files with names ending in .Z are compressed. See </span><a href="/Wb/Kernel/Compress.HC.HTML#l1"><span class=cF4>::/Kernel/Compress.HC</span></a><span class=cF0>.
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a>To replace ISO9660, make hard-drive partition image of a measured size and copy
|
||||
<a name="l44"></a>onto a CD/DVD starting at about sector 20, with EL TORITO booting. 512-byte
|
||||
<a name="l45"></a>sectors will be placed on top of 2048-byte CD/DCD sectors, so there will be four
|
||||
<a name="l46"></a>blocks per CD/DVD sector.
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a>RedSea file system has no bad block table and no redundant allocation table.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a>See </span><a href="/Wb/Doc/BlkChain.DD.HTML#l1"><span class=cF4>Block Chain</span></a><span class=cF0> for RedSea allocation bitmap discussion.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>See </span><a href="/Wb/Doc/Reliability.DD.HTML#l1"><span class=cF4>Reliability</span></a><span class=cF0> for RedSea reliability discussion.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> RedSea Reliability</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>TempleOS is like the 1040EZ tax form compared to the full 1040 form. Obviously,
|
||||
<a name="l4"></a>it is simpler. If you allow mission creep, pretty soon the 1040EZ looks just
|
||||
<a name="l5"></a>like the 1040 and the messed-up 1040EZ has no purpose.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>The Commodore 64 had a file system that was simple enough for peers in my
|
||||
<a name="l8"></a>generation to enjoy the thrill of knowing exactly what is going on at the
|
||||
<a name="l9"></a>hardware level and writing fun projects to access it.
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>My primary design criteria is simplicity. If it is simple enough for only
|
||||
<a name="l12"></a>100,000 people to learn, lets try to make it simpler so that 1 million can learn
|
||||
<a name="l13"></a>it.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>Obviously, we don't do bad block tables, or redundant FATs.
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>We use the simplest possible technique, a contiguous-file-only allocation
|
||||
<a name="l18"></a>bitmap, not </span><a href="/Wb/Doc/BlkChain.DD.HTML#l1"><span class=cF4>Block Chains</span></a><span class=cF0> or FAT tables.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>You can be a good toy or you can be a good professional tool, but not both.
|
||||
<a name="l21"></a>TempleOS's file manager will start too slowly once a few thousand files exist
|
||||
<a name="l22"></a>because the file manager makes a list of all files on start-up.
|
||||
<a name="l23"></a>
|
||||
<a name="l24"></a>Do not have more than a few thousand files or the file manager will not
|
||||
<a name="l25"></a>function.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>You are encouraged to keep your entire drive limited to, maybe, 100 Meg of files
|
||||
<a name="l28"></a>because you are suppoosed to operate as a kayak instead of a Titanic. If you do
|
||||
<a name="l29"></a>this, backing-up will be only a minute or so and you should do it at least once
|
||||
<a name="l30"></a>a day.
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a>Third party software should be run from ISO files or CD/DVDs directly, without
|
||||
<a name="l33"></a>installing to hard drive.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>Multimedia graphics and sound is, basically, forbidden. If you ignore this, all
|
||||
<a name="l36"></a>hell will break loose because memory will fragment with large files and the
|
||||
<a name="l37"></a>original vision of kayak hard-drive back-ups won't work.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a></span><span class=cF8>
|
||||
<a name="l40"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,63 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Requirements for TempleOS</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF5>User Skills Required</span><span class=cF0>
|
||||
<a name="l4"></a>* Knowledge of the </span><span class=cF2>C</span><span class=cF0> programming language.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF5>Supported Hardware</span><span class=cF0>
|
||||
<a name="l7"></a>* </span><a href="http://en.wikipedia.org/wiki/Amd64#AMD64"><span class=cF4>x86_64</span></a><span class=cF0> PC compatible computer. (Obviously, you need 64-bit hardware for a
|
||||
<a name="l8"></a>64-bit operating system.)
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a>* 640x480 16 color VGA graphics.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>* Most keyboards and mice.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>* Minimum 512Meg RAM.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>* Internal PC Speakers.
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a>* CD/DVD-ROMs (not SCSI) but only RedSea file system.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>* ATA and SATA hard drives.
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a></span><span class=cF5>Unsupported Hardware</span><span class=cF0>
|
||||
<a name="l23"></a>* No graphics acceleration.
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>* No sound cards.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>* </span><span class=cF4>No networking</span><span class=cF0>.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>* No USB devices, except keyboard and mouse in legacy mode. No, you can't use
|
||||
<a name="l30"></a>flash memory cards.
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a>* No printers.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,42 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Graphic Sprite Resource Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>A sprite is an ordered list of elements such as lines, rectangles, bitmaps and
|
||||
<a name="l4"></a>color changes. In a program's source code, you first </span><span class=cF2>make a sprite</span><span class=cF0> somewhere
|
||||
<a name="l5"></a>outside a function. Then, you </span><span class=cF2>insert a pointer</span><span class=cF0> to the sprite as an "*elems" arg
|
||||
<a name="l6"></a>when calling </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l468"><span class=cF4>Sprite</span></a><span class=cF0>() or </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l18"><span class=cF4>Sprite3</span></a><span class=cF0>(). See </span><span class=cF4><u>Sprites</u></span><span class=cF0>.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>You can create a </span><span class=cF2>sprite macro</span><span class=cF0> on your </span><a href="/Wb/Home/PersonalMenu..HTML#l1"><span class=cF4>PersonalMenu</span></a><span class=cF0> with a payload of </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0>
|
||||
<a name="l9"></a>source code to execute when it ESC's back to the cmd line. If you check
|
||||
<a name="l10"></a>"Pop-Up", it will spawn a new task and run the payload. A pop-up macro can be
|
||||
<a name="l11"></a>placed in any document.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,178 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Scoping and Linkage</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Doc/Glossary.DD.HTML#l221"><span class=cF4>JIT Compile Mode</span></a><span class=cF0> makes use of the current task's hash sym table and its parent
|
||||
<a name="l4"></a>tasks' tables. It fetches syms from parent tasks' tables if not found locally
|
||||
<a name="l5"></a>in the current task's table and it places new syms in the current task's table.
|
||||
<a name="l6"></a>Conceptually, syms are at the scope of environment vars in other operating
|
||||
<a name="l7"></a>systems.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>When a sym is placed into a table, older syms with ident names will be
|
||||
<a name="l10"></a>overshadowed if they exist. Duplicates are not allowed in many cases,
|
||||
<a name="l11"></a>especially in asm blks. Dupicates are allowed, by design in other cases, so
|
||||
<a name="l12"></a>that you can repeatedly </span><span class=cF2>#include</span><span class=cF0> the same file from the cmd line while
|
||||
<a name="l13"></a>developing it. Or, so you can repeatedly declare a function with a standard
|
||||
<a name="l14"></a>name, like </span><span class=cF2>DrawIt()</span><span class=cF0>. This case might occur when the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> is starting-up
|
||||
<a name="l15"></a>loading-in many little utilities.
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a></span><span class=cF2>extern</span><span class=cF0> binds a new </span><a href="/Wb/Kernel/KernelA.HH.HTML#l692"><span class=cF4>HTT_FUN</span></a><span class=cF0> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l689"><span class=cF4>HTT_GLBL_VAR</span></a><span class=cF0> sym to an existing sym of the same
|
||||
<a name="l18"></a>name if it exists in the sym table (just in just-in-time code). It also can be
|
||||
<a name="l19"></a>used to generate a fwd reference.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF2>import</span><span class=cF0> binds a new </span><a href="/Wb/Kernel/KernelA.HH.HTML#l692"><span class=cF4>HTT_FUN</span></a><span class=cF0> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l689"><span class=cF4>HTT_GLBL_VAR</span></a><span class=cF0> sym to a sym of the same name
|
||||
<a name="l22"></a>imported from the task's sym table at </span><a href="/Wb/Kernel/KLoad.HC.HTML#l181"><span class=cF4>Load</span></a><span class=cF0>() time. If no sym exists to bind to
|
||||
<a name="l23"></a>at </span><a href="/Wb/Kernel/KLoad.HC.HTML#l181"><span class=cF4>Load</span></a><span class=cF0>() time, the code using this sym will be left incomplete until the sym is
|
||||
<a name="l24"></a>defined.
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a></span><span class=cF2>_extern</span><span class=cF0> binds a new </span><a href="/Wb/Kernel/KernelA.HH.HTML#l692"><span class=cF4>HTT_FUN</span></a><span class=cF0> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l689"><span class=cF4>HTT_GLBL_VAR</span></a><span class=cF0> sym to an existing sym, of a <blink>differe
|
||||
<a name="l28"></a>nt</blink> name. It must exists in the sym table. Basically, this binds C to asm.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a></span><span class=cF2>_import</span><span class=cF0> binds a new </span><a href="/Wb/Kernel/KernelA.HH.HTML#l692"><span class=cF4>HTT_FUN</span></a><span class=cF0> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l689"><span class=cF4>HTT_GLBL_VAR</span></a><span class=cF0> sym to a sym, of a <blink>different</blink> name
|
||||
<a name="l31"></a>imported from the task's sym table at </span><a href="/Wb/Kernel/KLoad.HC.HTML#l181"><span class=cF4>Load</span></a><span class=cF0>() time. If no sym exists to bind to
|
||||
<a name="l32"></a>at </span><a href="/Wb/Kernel/KLoad.HC.HTML#l181"><span class=cF4>Load</span></a><span class=cF0>() time, the code using this sym will be left incomplete until the sym is
|
||||
<a name="l33"></a>defined. Basically, this binds C to asm from elsewhere.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a></span><span class=cF5>Ahead of Time Compilation</span><span class=cF0>
|
||||
<a name="l37"></a> </span><span class=cF2>G</span><span class=cF0>lobalScope/</span><span class=cF2>F</span><span class=cF0>unctionScope
|
||||
<a name="l38"></a> | </span><span class=cF2>C</span><span class=cF0>odeHeap/</span><span class=cF2>D</span><span class=cF0>ataHeap/</span><span class=cF2>S</span><span class=cF0>tack/</span><span class=cF2>R</span><span class=cF0>egister
|
||||
<a name="l39"></a> | | TaskHashEntry:Export</span><span class=cF2>S</span><span class=cF0>ysSym/</span><span class=cF2>D</span><span class=cF0>efine/</span><span class=cF2>F</span><span class=cF0>unction/</span><span class=cF2>C</span><span class=cF0>lass
|
||||
<a name="l40"></a> | | | UsageScope: </span><span class=cF2>M</span><span class=cF0>odule/</span><span class=cF2>A</span><span class=cF0>smLocal/Asm</span><span class=cF2>B</span><span class=cF0>lk/</span><span class=cF2>T</span><span class=cF0>askAndChildren/</span><span class=cF2>F</span><span class=cF0>unction
|
||||
<a name="l41"></a> | | | |UsageScope: </span><span class=cF2>G</span><span class=cF0>lbl/Asm</span><span class=cF2>L</span><span class=cF0>ocal/</span><span class=cF2>R</span><span class=cF0>emainder/</span><span class=cF2>g</span><span class=cF0>lblThisBlkAndRemainder
|
||||
<a name="l42"></a> | | | || </span><span class=cF2>S</span><span class=cF0>taticVarInit/</span><span class=cF2>D</span><span class=cF0>ynamicVarInitAllowed/</span><span class=cF2>N</span><span class=cF0>oInitAllowed
|
||||
<a name="l43"></a> | | | || | Are dups allowed within the namespace? A dup overshadows the original.
|
||||
<a name="l44"></a> | | | || | </span><span class=cF2>D</span><span class=cF0>upsAllowed/</span><span class=cF2>N</span><span class=cF0>oDups/NoDupsBut</span><span class=cF2>P</span><span class=cF0>ad/</span><span class=cF2>W</span><span class=cF0>arningUnlessClosedOut
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a>asm export </span><span class=cF2>label::</span><span class=cF0> G C S MG N
|
||||
<a name="l47"></a>asm </span><span class=cF2>label:</span><span class=cF0> G C MG N
|
||||
<a name="l48"></a>asm local </span><span class=cF2>@@label:</span><span class=cF0> G C AL N
|
||||
<a name="l49"></a>asm </span><span class=cF2>IMPORT label;</span><span class=cF0> G C MR N
|
||||
<a name="l50"></a>asm export </span><span class=cF2>label::</span><span class=cF0> F C S BG N
|
||||
<a name="l51"></a>asm </span><span class=cF2>label:</span><span class=cF0> F C BG N
|
||||
<a name="l52"></a>asm local </span><span class=cF2>@@label:</span><span class=cF0> F C AL N
|
||||
<a name="l53"></a>asm </span><span class=cF2>IMPORT label;</span><span class=cF0> F C BR N
|
||||
<a name="l54"></a>C goto </span><span class=cF2>label:</span><span class=cF0> F C FG N
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a> </span><span class=cF2>#define</span><span class=cF0> x MR D
|
||||
<a name="l57"></a> function G C S MR D
|
||||
<a name="l58"></a> var F R FR N
|
||||
<a name="l59"></a> var F S FR N
|
||||
<a name="l60"></a></span><span class=cF2>static</span><span class=cF0> var F C FR D N
|
||||
<a name="l61"></a> var G C S MR D D
|
||||
<a name="l62"></a> var G D MR N D
|
||||
<a name="l63"></a> </span><span class=cF2>class</span><span class=cF0> G MR D
|
||||
<a name="l64"></a>class member G MR P
|
||||
<a name="l65"></a></span><span class=cF2>extern class</span><span class=cF0> G MR D
|
||||
<a name="l66"></a></span><span class=cF2>extern</span><span class=cF0> function G C MR W
|
||||
<a name="l67"></a></span><span class=cF2>import</span><span class=cF0> function G C MR D
|
||||
<a name="l68"></a></span><span class=cF2>import</span><span class=cF0> var G C MR D
|
||||
<a name="l69"></a></span><span class=cF2>_extern</span><span class=cF0> function G C MR D
|
||||
<a name="l70"></a></span><span class=cF2>_extern</span><span class=cF0> var G C MR D
|
||||
<a name="l71"></a></span><span class=cF2>_import</span><span class=cF0> function G C MR D
|
||||
<a name="l72"></a></span><span class=cF2>_import</span><span class=cF0> var G C MR D
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a></span><span class=cF5>Just in Time Compilation</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF2>G</span><span class=cF0>lobalScope/</span><span class=cF2>F</span><span class=cF0>unctionScope
|
||||
<a name="l77"></a> | </span><span class=cF2>C</span><span class=cF0>odeHeap/</span><span class=cF2>D</span><span class=cF0>ataHeap/</span><span class=cF2>S</span><span class=cF0>tack/</span><span class=cF2>R</span><span class=cF0>egister
|
||||
<a name="l78"></a> | | TaskHashEntry:Export</span><span class=cF2>S</span><span class=cF0>ysSym/</span><span class=cF2>D</span><span class=cF0>efine/</span><span class=cF2>F</span><span class=cF0>unction/</span><span class=cF2>C</span><span class=cF0>lass
|
||||
<a name="l79"></a> | | | UsageScope: </span><span class=cF2>M</span><span class=cF0>odule/</span><span class=cF2>A</span><span class=cF0>smLocal/Asm</span><span class=cF2>B</span><span class=cF0>lk/</span><span class=cF2>T</span><span class=cF0>askAndChildren/</span><span class=cF2>F</span><span class=cF0>unction
|
||||
<a name="l80"></a> | | | |UsageScope: </span><span class=cF2>G</span><span class=cF0>lbl/Asm</span><span class=cF2>L</span><span class=cF0>ocal/</span><span class=cF2>R</span><span class=cF0>emainder/</span><span class=cF2>g</span><span class=cF0>lblThisBlkAndRemainder
|
||||
<a name="l81"></a> | | | || </span><span class=cF2>S</span><span class=cF0>taticVarInit/</span><span class=cF2>D</span><span class=cF0>ynamicVarInitAllowed/</span><span class=cF2>N</span><span class=cF0>oInitAllowed
|
||||
<a name="l82"></a> | | | || | Are dups allowed within the namespace? A dup overshadows the original.
|
||||
<a name="l83"></a> | | | || | </span><span class=cF2>D</span><span class=cF0>upsAllowed/</span><span class=cF2>N</span><span class=cF0>oDups/NoDupsBut</span><span class=cF2>P</span><span class=cF0>ad/</span><span class=cF2>W</span><span class=cF0>arningUnlessClosedOut
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a>asm export </span><span class=cF2>label::</span><span class=cF0> G C S Tg N
|
||||
<a name="l86"></a>asm </span><span class=cF2>label:</span><span class=cF0> G C BG N
|
||||
<a name="l87"></a>asm local </span><span class=cF2>@@label:</span><span class=cF0> G C AL N
|
||||
<a name="l88"></a>asm </span><span class=cF2>IMPORT label;</span><span class=cF0> G C TR N
|
||||
<a name="l89"></a>asm export </span><span class=cF2>label::</span><span class=cF0> F C BG N
|
||||
<a name="l90"></a>asm </span><span class=cF2>label:</span><span class=cF0> F C BG N
|
||||
<a name="l91"></a>asm local </span><span class=cF2>@@label:</span><span class=cF0> F C AL N
|
||||
<a name="l92"></a>asm </span><span class=cF2>IMPORT label;</span><span class=cF0> F C BR N
|
||||
<a name="l93"></a>C goto </span><span class=cF2>label:</span><span class=cF0> F C FG N
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a> </span><span class=cF2>#define</span><span class=cF0> x D TR D
|
||||
<a name="l96"></a> function G C F TR D
|
||||
<a name="l97"></a> var F R FR N
|
||||
<a name="l98"></a> var F S FR N
|
||||
<a name="l99"></a></span><span class=cF2>static</span><span class=cF0> var F C FR D N
|
||||
<a name="l100"></a> var G C G TR D D
|
||||
<a name="l101"></a> var G D G TR S D
|
||||
<a name="l102"></a> </span><span class=cF2>class</span><span class=cF0> G C TR D
|
||||
<a name="l103"></a>class member G TR P
|
||||
<a name="l104"></a></span><span class=cF2>extern class</span><span class=cF0> G C TR D
|
||||
<a name="l105"></a></span><span class=cF2>extern</span><span class=cF0> function G C F TR W
|
||||
<a name="l106"></a></span><span class=cF2>extern</span><span class=cF0> var G C G TR D
|
||||
<a name="l107"></a></span><span class=cF2>extern</span><span class=cF0> var G D G TR D
|
||||
<a name="l108"></a></span><span class=cF2>_extern</span><span class=cF0> function G C F TR D
|
||||
<a name="l109"></a></span><span class=cF2>_extern</span><span class=cF0> var G C G TR D
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a>* Goto labels must not have the same name as global scope objects. GoTo's are
|
||||
<a name="l113"></a>rare and I don't want to slow the compiler and add code to fix this. You will
|
||||
<a name="l114"></a>get errors if a collision happens, so it's not very dangerous, but the error
|
||||
<a name="l115"></a>message is baffling.
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a>* The member names </span><span class=cF2>pad</span><span class=cF0> and </span><span class=cF2>reserved</span><span class=cF0> are special because multiple instances with
|
||||
<a name="l118"></a>the same name are allowed in a class.
|
||||
<a name="l119"></a>
|
||||
<a name="l120"></a>* Use </span><span class=cF2>reg</span><span class=cF0> or </span><span class=cF2>noreg</span><span class=cF0> in front of local var names to override automatic reg var
|
||||
<a name="l121"></a>allocation. You can, optionally, specify a reg after the </span><span class=cF2>reg</span><span class=cF0> keyword.
|
||||
<a name="l122"></a>
|
||||
<a name="l123"></a>* Local non-reg function vars can be accessed in asm blks with </span><span class=cF2>&i[RBP]</span><span class=cF0> for
|
||||
<a name="l124"></a>example.
|
||||
<a name="l125"></a>
|
||||
<a name="l126"></a>* Glbl vars and functions can be accessed in asm with and </span><span class=cF2>&</span><span class=cF0> as in
|
||||
<a name="l127"></a> </span><span class=cF2>MOV RAX,I64 [&glbl_var]
|
||||
<a name="l128"></a> CALL I32 &Fun
|
||||
<a name="l129"></a> CALL I32 &SYS_SYM</span><span class=cF0>
|
||||
<a name="l130"></a>
|
||||
<a name="l131"></a>* In </span><span class=cF2>JIT</span><span class=cF0> asm code, &SYS_SYM and &Fun don't need </span><span class=cF2>IMPORT</span><span class=cF0>.
|
||||
<a name="l132"></a>
|
||||
<a name="l133"></a>* All offspring tasks of a task inherit syms.
|
||||
<a name="l134"></a>
|
||||
<a name="l135"></a>* The </span><span class=cF2>sizeof()</span><span class=cF0> and HolyC structure members can be used in asm blks.
|
||||
<a name="l136"></a>
|
||||
<a name="l137"></a>* Using </span><span class=cF2>&i</span><span class=cF0> in </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> or </span><span class=cF2>i.u8[2]</span><span class=cF0> on a local var, </span><span class=cF2>i</span><span class=cF0>, will force it to </span><span class=cF2>noreg</span><span class=cF0>.
|
||||
<a name="l138"></a>
|
||||
<a name="l139"></a>* Using </span><span class=cF2>try</span><span class=cF0>/</span><span class=cF2>catch</span><span class=cF0> in a function will force all local vars to </span><span class=cF2>noreg</span><span class=cF0>.
|
||||
<a name="l140"></a>
|
||||
<a name="l141"></a>* An unused gap on the stk is left for </span><span class=cF2>reg</span><span class=cF0> vars.
|
||||
<a name="l142"></a>
|
||||
<a name="l143"></a>* Note: </span><span class=cF2>static</span><span class=cF0> function vars do not go on the data heap, no matter the setting
|
||||
<a name="l144"></a>of the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1555"><span class=cF4>OPTf_GLBLS_ON_DATA_HEAP</span></a><span class=cF0>. They may in the future.
|
||||
<a name="l145"></a>
|
||||
<a name="l146"></a>* </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1552"><span class=cF4>OPTf_EXTERNS_TO_IMPORTS</span></a><span class=cF0> will treat </span><span class=cF2>_extern</span><span class=cF0> as </span><span class=cF2>_import</span><span class=cF0> and </span><span class=cF2>extern</span><span class=cF0> as </span><span class=cF2>import</span><span class=cF0>.
|
||||
<a name="l147"></a>This allows a header to be used either as a </span><span class=cF2>JIT compiled</span><span class=cF0> or </span><span class=cF2>AOT compiled</span><span class=cF0> header.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Sound is generated with </span><span class=cF2>I8</span><span class=cF0> vals called </span><span class=cF2>ona</span><span class=cF0>'s, which are 88 piano key nums, with
|
||||
<a name="l2"></a>0 as a rest. See </span><a href="/Wb/Adam/ASnd.HC.HTML#l183"><span class=cF4>Note2Ona</span></a><span class=cF0>() and </span><a href="/Wb/Kernel/KMisc.HC.HTML#l163"><span class=cF4>Ona2Freq</span></a><span class=cF0>(). God does not want death screams,
|
||||
<a name="l3"></a>perhaps, because God has PTSD or soldiers have PTSD. (Imagine wounded on
|
||||
<a name="l4"></a>battlefields.) </span><span class=cF2>Ona</span><span class=cF0>'s will allow elegant wave files for export and will allow
|
||||
<a name="l5"></a>the creation of simple hardware over the next centuries.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>A </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprite</span></a><span class=cF0> is an ordered list of </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l120"><span class=cF4>these</span></a><span class=cF0> elements, created with </span><span class=cF2><CTRL-r></span><span class=cF0>.
|
||||
<a name="l2"></a>Normally, they are packed together in a list and the address of the first is
|
||||
<a name="l3"></a>passed to routines.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>See </span><a href="/Wb/Demo/Graphics/SpritePlot.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpritePlot.HC</span></a><span class=cF0>, </span><a href="/Wb/Demo/Graphics/SpritePlot3D.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpritePlot3D.HC</span></a><span class=cF0>, </span><span class=cF4>
|
||||
<a name="l6"></a></span><a href="/Wb/Demo/Graphics/SpritePut.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpritePut.HC</span></a><span class=cF0>, </span><a href="/Wb/Demo/Graphics/SpriteRaw.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/SpriteRaw.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/Gr/SpriteMesh.HC.HTML#l957"><span class=cF4>SpriteMeshEd</span></a><span class=cF0>().
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>Be aware that copying </span><span class=cF2>SP</span><span class=cF0>, </span><span class=cF2>IB</span><span class=cF0>, or </span><span class=cF2>IS</span><span class=cF0> entries with the clip results in duplicate
|
||||
<a name="l9"></a>entries with different nums. You can manually remove dups by editing with </span><span class=cF2><CTRL
|
||||
<a name="l10"></a>-t></span><span class=cF0> and setting to the original num.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>See </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l1"><span class=cF4>::/Adam/Gr/GrSpritePlot.HC</span></a><span class=cF0> for how CSprite are stored.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Sprite BitMap Menu Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>BitMaps have a background color. If you delete to the clip, what's left will be
|
||||
<a name="l4"></a>background colored.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>While drawing, you can usually press </span><span class=cF2>'c'</span><span class=cF0> to eye-dropper the color under the
|
||||
<a name="l7"></a>mouse. Press </span><span class=cF2>'t'</span><span class=cF0> for transparent.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Sprite Edit Menu Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Order of elements matters. They are executed in the order they appear in the
|
||||
<a name="l4"></a>side-bar. You can sel or unsel elements graphically, or with text in the
|
||||
<a name="l5"></a>sidebar. Then, cut, copy, paste, shift or transform them.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>You can set the current insert point element by clicking the element in the
|
||||
<a name="l8"></a>side-bar and making it RED.
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF2>Insert Shift Suborigin</span><span class=cF0> is an element which shifts subsequent elements. Perhaps,
|
||||
<a name="l11"></a>you inserted a sprite's elements from the clip and want to shift it around?
|
||||
<a name="l12"></a>This command is also useful if you call </span><a href="/Wb/Adam/Gr/GrSpritePlot.HC.HTML#l324"><span class=cF4>SpriteInterpolate</span></a><span class=cF0>() in programs.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Sprite Edit as Text Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>See the format for </span><a href="/Wb/Adam/Gr/Gr.HH.HTML#l157"><span class=cF4>CSprites</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Sprite Main Menu Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>Order of elements matters. They are executed in the order they appear in the
|
||||
<a name="l4"></a>side-bar. You can set the insert point for new elements by click the element in
|
||||
<a name="l5"></a>the side-bar and making it RED.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>After you create a 3D Mesh, you can edit it by seling it in the side-bar so it
|
||||
<a name="l8"></a>is colored RED. Then, click EDIT-3D-MESH. A shiftable 3D mesh has a 2D offset
|
||||
<a name="l9"></a>to position the origin. You can convert between shiftable and non-shiftable by
|
||||
<a name="l10"></a>editing it with the other command.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>You can convert all elements to a BitMap if END is RED in the side-bar and you
|
||||
<a name="l13"></a>CONVERT-TO-BITMAP. Later, you can edit that bitmap by seling it in the side bar
|
||||
<a name="l14"></a>so it is colored RED and clicking EDIT-BITMAP.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>If you have a 3D icon, you might want to place a background-colored rectangle
|
||||
<a name="l17"></a>under the 3D icon, so it hovers above. Use TRANSFORM-OFF and TRANSFORM-ON. You
|
||||
<a name="l18"></a>will also need to set the Z offset of the icon. Go to the Edit menu and sel
|
||||
<a name="l19"></a>EDIT-AS-TEXT and change the third INT to Z offset. Good luck.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>While inserting vector elements, you can usually press </span><span class=cF2>'c'</span><span class=cF0> to eye-dropper the
|
||||
<a name="l22"></a>color under the mouse. Press </span><span class=cF2>'t'</span><span class=cF0> for transparent.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Sprite SideBar Help</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>You can cut and paste elements in this side-bar to reorder, delete or
|
||||
<a name="l4"></a>duplicating them. Click an element in the side-bar after you make changes to
|
||||
<a name="l5"></a>cause the changes to take-effect.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>You can click on an element to make it the insert point for new elements.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>The RED element is the current insert point for new elements.</span></pre></body>
|
||||
</html>
|
@ -1,48 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> AutoComplete is in StandBy</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF4> </span><a href="/Wb/Doc/HelpIndex.DD.HTML#l1"><span class=cF4>System Keys Quick Guide</span></a><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF4> (Works Everywhere)</span><span class=cF0>
|
||||
<a name="l5"></a></span><span class=cF2> <SPACE> </span><span class=cF0>Left-Click
|
||||
<a name="l6"></a></span><span class=cF2> <ENTER> </span><span class=cF0>Right-Click
|
||||
<a name="l7"></a></span><span class=cF2> <F1> </span><span class=cF0>Help
|
||||
<a name="l8"></a></span><span class=cF2> <CTRL-m> </span><span class=cF0>Personal Menu
|
||||
<a name="l9"></a></span><span class=cF2> <ESC> </span><span class=cF0>Save & Exit
|
||||
<a name="l10"></a></span><span class=cF2><SHIFT-ESC> </span><span class=cF0>Abort & Exit
|
||||
<a name="l11"></a></span><span class=cF2> <WINDOWS> </span><span class=cF0>Pull-Down Menu
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF4> </span><a href="/Wb/Adam/God/HSNotes.DD.HTML#l1"><span class=cF4>Tongues</span></a><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cF4> (Works Everywhere)</span><span class=cF0>
|
||||
<a name="l15"></a></span><span class=cF2> <F7> </span><span class=cF0>God Word
|
||||
<a name="l16"></a></span><span class=cF2><SHIFT-F7> </span><span class=cF0>God Passage
|
||||
<a name="l17"></a></span><span class=cF2> <F6> </span><span class=cF0>God Song
|
||||
<a name="l18"></a></span><span class=cF2><SHIFT-F6> </span><span class=cF0>God Doodle</span></pre></body>
|
||||
</html>
|
@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> TempleOS V5.03</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a> Public Domain Operating System
|
||||
<a name="l4"></a></span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Doc/HelpIndex.DD.HTML#l1"><span class=cF4>Help & Index</span></a><span class=cF0>, </span><a href="/Wb/Doc/CmdLineOverview.DD.HTML#l1"><span class=cF4>Quick Start: Cmd line</span></a><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>There is one </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> for the task's border: </span><span class=cF2>Fs->border_doc</span><span class=cF0>. There is a pair for
|
||||
<a name="l2"></a>the task's client area: </span><span class=cF2>Fs->put_doc</span><span class=cF0> and </span><span class=cF2>Fs->display_doc</span><span class=cF0>. You can, optionally,
|
||||
<a name="l3"></a>do double buffering, otherwise </span><span class=cF2>Fs->put_doc</span><span class=cF0> is the same as </span><span class=cF2>Fs->display_doc</span><span class=cF0>. See </span><span class=cF4>
|
||||
<a name="l4"></a></span><a href="/Wb/Demo/Spy.HC.HTML#l1"><span class=cF4>::/Demo/Spy.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,237 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> The Standard TempleOS PC</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>All desktop PCs will have 8-channel OCTART super-simple high speed serial ports
|
||||
<a name="l4"></a>to replace USB. They are simpler because the driver is as simple as old school </span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Doc/Comm.HC.HTML#l1"><span class=cF4>RS232 Serial</span></a><span class=cF0>, they have no USB end-points and they have no USB human interface
|
||||
<a name="l6"></a>device reports. Computer mice will all have exactly two bttns and one wheel.
|
||||
<a name="l7"></a>Game controllers will all be the standard deluxe </span><a href="http://www.gamestop.com/pc/accessories/steam-controller/121865"><span class=cF0>game console controllers</span></a><span class=cF0> that
|
||||
<a name="l8"></a>are popular today. It will have 8 big TX and 8 big RX fifos that allow flow
|
||||
<a name="l9"></a>control characters to jump the queue. It should be locked-down to as few
|
||||
<a name="l10"></a>options as possible, like 8-1-N only, although hardware may use a USB frame, not
|
||||
<a name="l11"></a>an RS232, so stop bits might not be relevant. Perhaps, just two baud rates --
|
||||
<a name="l12"></a>high and low speed are needed. Low speed is good for slow microcontrollers and
|
||||
<a name="l13"></a>allows longer cable length. Keyboard, mouse and game controller can be low
|
||||
<a name="l14"></a>speed.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a>The USB creators banned generic devices, requiring a signed, certified driver
|
||||
<a name="l17"></a>for everything! That's no good. We allow any device and will communicate,
|
||||
<a name="l18"></a>generically, using a serial terminal program like the old school HyperTerminal,
|
||||
<a name="l19"></a>XTalk or Telnet.
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>A mouse packet interface should be similar to this:
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a> TX: <ENTER>
|
||||
<a name="l24"></a> RX: X:+3 Y:+0 Wheel:+0 LB:OFF RB:OFF
|
||||
<a name="l25"></a> TX: <ENTER>
|
||||
<a name="l26"></a> RX: X:+0 Y:-1 Wheel:+0 LB:ON RB:OFF
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>We aspire to be as simple as a Commodore 64 joystick driver:
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a> VAL=PEEK(56321)
|
||||
<a name="l31"></a> if VAL AND 1 THEN y=y-1
|
||||
<a name="l32"></a> if VAL AND 2 THEN y=y+1
|
||||
<a name="l33"></a> if VAL AND 4 THEN x=x-1
|
||||
<a name="l34"></a> if VAL AND 8 THEN x=x+1
|
||||
<a name="l35"></a>
|
||||
<a name="l36"></a>The game controller will be more complicated, but much simpler than USB. It
|
||||
<a name="l37"></a>will use a standard text packet of some kind.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>On the other end, you might hook-up a thermostat microcontroller and interface
|
||||
<a name="l40"></a>as a generic serial device. The microcontroller in the thermostat would have
|
||||
<a name="l41"></a>something simple, not a crazy overkill ethernet connection.
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a> </span><span class=cF1>U8</span><span class=cF0> b;
|
||||
<a name="l44"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) {
|
||||
<a name="l45"></a> b=ReadU8(2); </span><span class=cF2>//Read byte from high speed serial channel 2.</span><span class=cF0>
|
||||
<a name="l46"></a> </span><span class=cF2>//(Has been configured for low baud because thermostat should be slow.)</span><span class=cF0>
|
||||
<a name="l47"></a> </span><span class=cF1>if</span><span class=cF0> (b==CMD_UP)
|
||||
<a name="l48"></a> temperature++;
|
||||
<a name="l49"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (b==CMD_DOWN)
|
||||
<a name="l50"></a> temperature--;
|
||||
<a name="l51"></a> }
|
||||
<a name="l52"></a>
|
||||
<a name="l53"></a>Super-simple block devices will replace ATA/ATAPI hard drives and
|
||||
<a name="l54"></a>CD/DVD/BlueRays. Today, the industry is in flux with nonvolitile memory just
|
||||
<a name="l55"></a>invented. We want a super-simple block device interface for non-volitile memory
|
||||
<a name="l56"></a>and for what is currently USB memory sticks, but only if they can be made
|
||||
<a name="l57"></a>without bad blocks. I don't think we want to deal with bad block memory, so
|
||||
<a name="l58"></a>maybe we will not do NV-memory. The standard TempleOS desktop will require a
|
||||
<a name="l59"></a>hard disk.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>There will be minimal commands: READ_BLOCK, WRITE_BLOCK, GET_CAPACITY,
|
||||
<a name="l62"></a>GET_MODEL, GET_SERIAL_NUM, and EJECT.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>We want a CPU mode with virtual IO port addresses similar to how paging creates
|
||||
<a name="l65"></a>virtual memory addresses. We want a 65536 word look-up table that converts
|
||||
<a name="l66"></a>virtual IO port numbers to physical IO port numbers. There will be a standard
|
||||
<a name="l67"></a>IO port configuration, so port numbers can be fixed in the code. We want the
|
||||
<a name="l68"></a>primary hard drive on one set of ports and the primary CD/DVD/Blu-ray on another
|
||||
<a name="l69"></a>set of ports. Choose a contiguous set of IO ports.
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a>Meanwhile, a complicated PCI interface can be designed along-side the TempleOS
|
||||
<a name="l72"></a>interface for Windows and Linux. It would almost be possible to carry-on
|
||||
<a name="l73"></a>separate lives, however, the super-simple serial requires getting rid of USB
|
||||
<a name="l74"></a>since super-simple serial is a new hardware standard. People can add USB ports
|
||||
<a name="l75"></a>with a PCI device card.
|
||||
<a name="l76"></a>
|
||||
<a name="l77"></a>God said He wants single-voice 8-bit signed MIDI-like sample for the sound. God
|
||||
<a name="l78"></a>does not want death screams, perhaps, because God has PTSD or soldiers have
|
||||
<a name="l79"></a>PTSD. (Imagine wounded on battlefields.)
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a>The video will be a linear frame buffer 640x480 16 color with one-byte-per-pixel
|
||||
<a name="l82"></a>even though it is only 16 color with is 4-bit. Perhaps, we have a interrupt to
|
||||
<a name="l83"></a>sync with the refresh.
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a>I am tmpted to help amateur hardware device designers by making the hardware
|
||||
<a name="l86"></a>interface for the PC simple. I have fond memories of 1993, when I made a
|
||||
<a name="l87"></a>wire-wrapped ISA data acquisition card which plugged into my 486 and had some
|
||||
<a name="l88"></a>analog-to-digital and digital-to-analog convertors. I am not designing a bus.
|
||||
<a name="l89"></a>Earlier, I said the super-simple high speed serial port replacement could be
|
||||
<a name="l90"></a>USB-like in hardware as long as the software driver interface was simple like
|
||||
<a name="l91"></a>old school RS232 serial ports. Requiring a complicated hardware handshake
|
||||
<a name="l92"></a>raises the bar, slightly, for the lowest level hardware designers. Most people
|
||||
<a name="l93"></a>will be connecting a microcontroller or something that already has a serial
|
||||
<a name="l94"></a>communication design, but if it's not a problem, maybe we should keep it simple
|
||||
<a name="l95"></a>at all stages. It was nice putting an oscilloscope on my serial port wires.
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a>The original PC had general purpose digital IO through the parallel port. That
|
||||
<a name="l98"></a>was fun. I have enough battles to fight, so I'll leave being a savior to
|
||||
<a name="l99"></a>hobbiest hardware engineers to somebody else.
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a>Digital cameras will be super-simple high speed serial, but TempleOS is forever
|
||||
<a name="l102"></a>limited to 16 colors and multimedia is banned because large files being loaded
|
||||
<a name="l103"></a>into memory fragments memory, so cameras are somewhat unwelcome. I have enough
|
||||
<a name="l104"></a>problems without making the Brits anxious about autonomous gun turrets and
|
||||
<a name="l105"></a>killer robots. The reason I say cameras will be super-simple serial is because
|
||||
<a name="l106"></a>we are replacing USB ports with super-simple serial. PC's will have only
|
||||
<a name="l107"></a>super-simple serial ports unless people buy a USB PCI expansion card. So, the
|
||||
<a name="l108"></a>digital cameras will be super-simple serial.
|
||||
<a name="l109"></a>
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a></span><span class=cF5> Version 1.0</span><span class=cF0>
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a>We will make a spec for a $8,000, perfectly standardized, cryogenically-cooled,
|
||||
<a name="l114"></a>monster desktop PC. It will have 16 cores, integrated 4K graphics, and,
|
||||
<a name="l115"></a>hopefully, 6 Ghz continuous operation. Perhaps, 64 Gig of RAM will be standard?
|
||||
<a name="l116"></a>God said to help to poor buy them. It is pointless to have a high powered
|
||||
<a name="l117"></a>machine if other people have wimpy machines and cannot run programs you write.
|
||||
<a name="l118"></a>Therefore, everybody in the developed world will buy a Standard TempleOS IBM PC
|
||||
<a name="l119"></a>over the next ten years, so that will be a quantity of 400 million, perhaps.
|
||||
<a name="l120"></a>God said to pay the US national debt with the revenue. We will standardize
|
||||
<a name="l121"></a>everything, not just the TempleOS related items. The display will be 4K (and of
|
||||
<a name="l122"></a>course 640x480 16 color) and no others. Everybody gets just one monitor, unless
|
||||
<a name="l123"></a>you buy special PCI cards. Everybody gets two speakers, a headphone, a mic, a
|
||||
<a name="l124"></a>webcam and touch scrn. We make the audio one sample rate and one sample size,
|
||||
<a name="l125"></a>but TempleOS still gets just a square wave. (HD Audio is really screwed-up and
|
||||
<a name="l126"></a>requires complicated artificial intelligence, just to route output to speakers.)
|
||||
<a name="l127"></a>
|
||||
<a name="l128"></a>The Standard Temple IBM PC will be a full-sized tower. Perhaps, stain-glass
|
||||
<a name="l129"></a>will decorate the case because God is sentimentally attached to stained-glass.
|
||||
<a name="l130"></a>We should set the size at exactly 2.5 feet by 1.5 feet by 1.5 feet as in the </span><span class=cF4>
|
||||
<a name="l131"></a></span><a href="http://www.biblegateway.com/passage/?search=Exodus+25:10-10&version=NIV"><span class=cF4>Exodus,25:10-10</span></a><span class=cF0> for all time. If there is extra room, make a storage shelf for
|
||||
<a name="l132"></a>DVDs. We do not want a race-to-the-bottom, shrinking the size. Instead of
|
||||
<a name="l133"></a>making it smaller, make it more powerful. We want to remove all cost pressure
|
||||
<a name="l134"></a>from making things small. It must have a CD/DVD/Blu-ray drive. The vision is
|
||||
<a name="l135"></a>CD/DVDs used for a library of games, not installed on the hard-drive. We need a
|
||||
<a name="l136"></a>network connection, possibly implemented as a super-simple high speed serial
|
||||
<a name="l137"></a>device. What about standard monitor and speakers? The C64's success was
|
||||
<a name="l138"></a>partially due to wide spread, completely standard, hardware. I think TempleOS
|
||||
<a name="l139"></a>will not do bad block devices, so we need a hard drive, not just NV-memory or
|
||||
<a name="l140"></a>SSD.
|
||||
<a name="l141"></a>
|
||||
<a name="l142"></a>TempleOS will have the priority over Windows or Linux on hardware decisions. We
|
||||
<a name="l143"></a>could make it heterogenious multicore. I think we want 16 non-hyperthreaded
|
||||
<a name="l144"></a>cores. Core#0 is the only full-featured core needed. The other cores will have
|
||||
<a name="l145"></a>long mode, but not some of these: real mode, protected mode, ring-3, paging,
|
||||
<a name="l146"></a>interrupts, in/out port instructions, SSE instructions, MMX instructions.
|
||||
<a name="l147"></a>
|
||||
<a name="l148"></a>God said Intel should do a simulation of heat produced by gates and try
|
||||
<a name="l149"></a>spreading-out the heat producing gate circuits on the chip.
|
||||
<a name="l150"></a>
|
||||
<a name="l151"></a>God said Linux's Wine should replace Windows. We will install a standard
|
||||
<a name="l152"></a>software set-up on all Standard Temple IBM PC's.
|
||||
<a name="l153"></a>
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a></span><span class=cF5> Usage</span><span class=cF0>
|
||||
<a name="l156"></a>
|
||||
<a name="l157"></a>TempleOS is primarily for user developers, like the Commodore 64 was. I created
|
||||
<a name="l158"></a>a total of 50 Meg of content over ten years, so you shouldn't need much room,
|
||||
<a name="l159"></a>either. The installed hard drive space should stay small because the resolution
|
||||
<a name="l160"></a>is low, multimedia is banned, 3rd party libraries are banned, and applications
|
||||
<a name="l161"></a>can be distributed with ISO files or DVDs.
|
||||
<a name="l162"></a>
|
||||
<a name="l163"></a>The ROM will have a command that copies the ROM onto the hard drive, creating
|
||||
<a name="l164"></a>identical C and D partitions, so you can have fun modifying TempleOS. You will
|
||||
<a name="l165"></a>have confidence you can fix it easily if you break it. It should be able to run
|
||||
<a name="l166"></a>everything from just the ROM, too. You will need to specify a /Home directory
|
||||
<a name="l167"></a>that is not in the ROM, but on the hard drive.
|
||||
<a name="l168"></a>
|
||||
<a name="l169"></a>The standard set-up will be a C primary drive and a D back-up drive. Keep the
|
||||
<a name="l170"></a>size on each hard drive under 512 Meg and periodically copy all of C to D, so
|
||||
<a name="l171"></a>they stay mirrored. The file manager and other programs read the entire
|
||||
<a name="l172"></a>directory structures, so too many files causes problems (unbearably slow).
|
||||
<a name="l173"></a>Third party software should be distributed as ISO files or DVDs, like </span><span class=cF4>
|
||||
<a name="l174"></a></span><a href="https://github.com/jwhitham/frotz"><span class=cF4>TextAdventure.ISO</span></a><span class=cF0>. No 3rd party libraries are permitted because they circumvent
|
||||
<a name="l175"></a>the intent of the 100,000 line of code limit which is keeping it cognatively
|
||||
<a name="l176"></a>small enough to see the light at the end of the tunnel and easily master
|
||||
<a name="l177"></a>everything. Therefore, 3rd party ISO files must bring all required software
|
||||
<a name="l178"></a>components with them, except what is found in the TempleOS ROM.
|
||||
<a name="l179"></a>
|
||||
<a name="l180"></a>Having all your 3rd party software on separate DVDs or ISO files and TempleOS
|
||||
<a name="l181"></a>running from a ROM, keeps it delightfully simple so you have complete
|
||||
<a name="l182"></a>understanding of what is going on. You will have complete confidence and it
|
||||
<a name="l183"></a>will be a joy to use. 3rd party applications can store saved data files into
|
||||
<a name="l184"></a>your /Home hard drive directory.
|
||||
<a name="l185"></a>
|
||||
<a name="l186"></a>The Temple PC will stay unchanged for seven years at a time. The Bible speaks
|
||||
<a name="l187"></a>of a seven year release in </span><a href="http://www.biblegateway.com/verse/en/Deutoronomy%2015:1"><span class=cF4>Deuteronomy,15:1</span></a><span class=cF0>. The Commodore stayed unchanged for
|
||||
<a name="l188"></a>many years and people became intimately familiar with every aspect.
|
||||
<a name="l189"></a></span><span class=cFA>
|
||||
<a name="l190"></a></span><object width="640" height="520"><param name="movie" value="http://www.youtube.com/v/bs_jcTuwPKo"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bs_jcTuwPKo" type="application/x-shockwave-flash" allowscriptaccess="always" width="640" height="520"></embed></object><span class=cF0>
|
||||
<a name="l191"></a>
|
||||
<a name="l192"></a>I thought 2.5' x 1.5' x 1.5' was ridiculously big, but it looks like it is
|
||||
<a name="l193"></a>reasonable for super-cooled refrigeration systems!
|
||||
<a name="l194"></a>
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a></span><span class=cF5> Version 2.0</span><span class=cF0>
|
||||
<a name="l197"></a></span><span class=cFA>
|
||||
<a name="l198"></a></span><center><img src="http://i.imgur.com/zUdfEqy.jpg" width="640" height="500" alt=""></center><span class=cF0>
|
||||
<a name="l199"></a>
|
||||
<a name="l200"></a>The Standard Temple IBM PC V2.0 will be released seven years after V1.0. Each
|
||||
<a name="l201"></a>unit will have a full, uncut, silicon wafer. V2.0 will be sold, unchanged, for
|
||||
<a name="l202"></a>seven more years, like a Commodore 64.
|
||||
<a name="l203"></a></span><span class=cF8>
|
||||
<a name="l204"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
<a name="l205"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l206"></a>* "Windows" is a trademark owned by MicroSoft Corp.</span><span class=cF0>
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,138 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Decisions Making TempleOS Simple
|
||||
<a name="l2"></a></span><span class=cF0>
|
||||
<a name="l3"></a>Everybody is obsessed, Jedi mind-tricked, by the notion that when you scale-up,
|
||||
<a name="l4"></a>it doesn't get bad, it gets worse. They automatically think things are going to
|
||||
<a name="l5"></a>get bigger. Guess what happens when you scale down? It doesn't get good, it
|
||||
<a name="l6"></a>gets better!
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>I limited it to 100,000 lines of code, forever! I never need a linker or make
|
||||
<a name="l9"></a>utility and I can use small labels.
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>People mock Bill Gates for, "640K should be enough." I say, "2Gig for code
|
||||
<a name="l12"></a>should be enough." The same people who mock Bill Gates are probably just like
|
||||
<a name="l13"></a>the black woman who sued for a trillion dollars.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>My Dad worked on converting the Titan missile to the Gemini Mission rocket. It
|
||||
<a name="l16"></a>had to be "man-rated". You can bet that everything got an order of magnitude
|
||||
<a name="l17"></a>more complexity and documentation. My vision is a souped-up C64, not a 1970's
|
||||
<a name="l18"></a>mainframe; a kayak, not a Titanic.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>Linux is a semi-tractor -- you need professional drivers for 20 gears. Linux
|
||||
<a name="l21"></a>has file permissions. Common people are hurt by file permissions.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a>Windows is a car.
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>TempleOS is a motorcycle -- if you lean-over too far, a motorcycle will crash.
|
||||
<a name="l26"></a>Don't do that! There are no side air bags on a motorcycle. DOS and C64 had no
|
||||
<a name="l27"></a>memory protections and ran in ring-0, with no security. This saves an order of
|
||||
<a name="l28"></a>magnitude complexity.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>Linux and Windows are general purpose operating systems. They attempt to do any
|
||||
<a name="l31"></a>task you want. TempleOS cherry-picks tasks and is designed to do the same
|
||||
<a name="l32"></a>things a C64 did. This saves and order of magnitude complexity. For example,
|
||||
<a name="l33"></a>the </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> file system allocates just contiguous files -- you load and save
|
||||
<a name="l34"></a>whole files at once. A benefit is this allows compression. Also, TempleOS does
|
||||
<a name="l35"></a>not do networking or multimedia. In theory, memory will fragment with lots of
|
||||
<a name="l36"></a>big files. The system would fall to pieces with multimedia, but God said
|
||||
<a name="l37"></a>640x480 16 color is a permanent covenant like circumcision.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>A three bttn mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
<a name="l40"></a>hardware everybody has, with no divergent code bases for each machine's custom
|
||||
<a name="l41"></a>hardware. There is one graphics driver instead of 50 for different GPUs. This
|
||||
<a name="l42"></a>saves an order of magnitude complexity and makes for a delightful API, so
|
||||
<a name="l43"></a>developer's code is not like a frayed rope end.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a>* Everything runs in kernel, </span><span class=cF2>ring 0</span><span class=cF0>, mode.
|
||||
<a name="l48"></a>
|
||||
<a name="l49"></a>* </span><span class=cF2>One memory map</span><span class=cF0> for all tasks on all cores with virtual addresses set equ to
|
||||
<a name="l50"></a>physical, just as though paging is not used.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>* One platform -- </span><a href="http://en.wikipedia.org/wiki/Amd64#AMD64"><span class=cF4>x86_64</span></a><span class=cF0> PC's, no 32-bit support.
|
||||
<a name="l53"></a>
|
||||
<a name="l54"></a>* No security or cryptography.
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>* No networking.
|
||||
<a name="l57"></a>
|
||||
<a name="l58"></a>* Least (greatest) common denominator hardware support. Mostly, one driver for
|
||||
<a name="l59"></a>each device class. I can't be in the business of different drivers.
|
||||
<a name="l60"></a>Compatibility is the greatest challenge for PC operating systems. Disk code
|
||||
<a name="l61"></a>does not use interrupts, avoiding compatibility risks. </span><span class=cF2>PS/2</span><span class=cF0> keyboard/mouse is
|
||||
<a name="l62"></a>used instead of </span><span class=cF2>USB</span><span class=cF0>, also more compatible.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>* </span><span class=cF2>640x480</span><span class=cF0> 16 colors. Updates whole scrn at </span><span class=cF2>30 fps</span><span class=cF0>, optimized for full scrn
|
||||
<a name="l65"></a>games where </span><span class=cF2>InvalidRectangle</span><span class=cF0>s are counter-productive.
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>* One font, 8x8. Text and graphic layers done in software with text normally on
|
||||
<a name="l68"></a>an 8x8 grid. It can run in Text mode if graphic initialization fails.
|
||||
<a name="l69"></a>
|
||||
<a name="l70"></a>* Compiler extends all values to 64-bit when fetched and does only 64-bit
|
||||
<a name="l71"></a>computations intermediately. Assembler has minimal 16-bit support, good enough
|
||||
<a name="l72"></a>for compiling boot loaders.
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>* No object files. Use </span><span class=cF2>JIT</span><span class=cF0>.
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a>* Whole files are processed almost exclusively, allowing compression.
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a>* </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>One language</span></a><span class=cF0> and compiler for command-line, scripts, songs, automations and
|
||||
<a name="l79"></a>code.
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a>* One editor/word processor/browser for the command-line window, source code,
|
||||
<a name="l82"></a>documentation browser, dialog forms.
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a>* No child windows. One window per task. Bttns are widgets, not child windows.
|
||||
<a name="l85"></a> There are child tasks, however.
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a>* No distinction between </span><span class=cF2>thread</span><span class=cF0>, </span><span class=cF2>process</span><span class=cF0> or </span><span class=cF2>task</span><span class=cF0>.
|
||||
<a name="l88"></a>
|
||||
<a name="l89"></a>* The </span><a href="/Wb/Kernel/Sched.HC.HTML#l1"><span class=cF4>Scheduler</span></a><span class=cF0> is for home systems. It is not preemptiove. Disk requests are
|
||||
<a name="l90"></a>not broken-up, so sharing is bad. It's wonderfully simple.
|
||||
<a name="l91"></a>
|
||||
<a name="l92"></a>* </span><a href="/Wb/Doc/MultiCore.DD.HTML#l1"><span class=cF4>MultiCore</span></a><span class=cF0> is done </span><span class=cF2>master/slave</span><span class=cF0>, instead of </span><span class=cF2>SMP</span><span class=cF0>. </span><span class=cF2>Core0</span><span class=cF0> applications explicitly
|
||||
<a name="l93"></a>assigns jobs. Locks are present allowing multicore file, heap, and hardware
|
||||
<a name="l94"></a>access, though.
|
||||
<a name="l95"></a>
|
||||
<a name="l96"></a>* </span><span class=cF4><u>Sound</u></span><span class=cF0> has single-voice 8-bit signed MIDI-like samples.
|
||||
<a name="l97"></a>
|
||||
<a name="l98"></a>* All tasks have a heap and a sym table. Scope is that of environment vars in
|
||||
<a name="l99"></a>other operating systems. As text is typed at the command line or you run
|
||||
<a name="l100"></a>programs by </span><span class=cF2>#include</span><span class=cF0>ing them, the syms go in the table. If a sym is not found,
|
||||
<a name="l101"></a>the parent task's table is checked. The father of all tasks has the API syms
|
||||
<a name="l102"></a>you'll need waiting in it's table. No need to </span><span class=cF2>#include</span><span class=cF0> headers.
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a>* No need for namespaces -- scoping occurs automatically based on task symbol
|
||||
<a name="l105"></a>table hierarchy with the </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0>'s symbol system-wide global.
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a>* Sometimes, I </span><a href="/Wb/Doc/CutCorners.DD.HTML#l1"><span class=cF4>cut corners</span></a><span class=cF0> in the interest of keeping the code beautiful.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,48 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>There are no streams in the traditional sense. The cmd line output gets sent to
|
||||
<a name="l2"></a>the cursor location of a document being edited and by using cursor keys, text
|
||||
<a name="l3"></a>can be injected all over the document. </span><span class=cF4><u>Sprites</u></span><span class=cF0> can be injected and are not
|
||||
<a name="l4"></a>serialized! Furthermore, the input can come from triggering macro widgets. See </span><span class=cF4>
|
||||
<a name="l5"></a></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>Doc Overview</span></a><span class=cF0> and </span><span class=cF4><u>Doc Routines</u></span><span class=cF0>.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>If you had a remote term and sent key </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3515"><span class=cF4>Scan Codes</span></a><span class=cF0>, the user would press </span><span class=cF2><CTRL-m></span><span class=cF0>
|
||||
<a name="l8"></a>to access his </span><span class=cF2>Personal Menu</span><span class=cF0> to trigger his macros. However, the local </span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Home/PersonalMenu..HTML#l1"><span class=cF4>~/PersonalMenu.DD</span></a><span class=cF0> might differ from the remote, causing loss of sync between
|
||||
<a name="l10"></a>local and remote sessions. Also, the window size of local and remote might
|
||||
<a name="l11"></a>differ, so word-wrapped text would be different. Injecting output text with
|
||||
<a name="l12"></a>different windows sizes would cause remote and local documents to not be in
|
||||
<a name="l13"></a>sync.
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>See </span><a href="/Wb/Doc/CharOverview.DD.HTML#l1"><span class=cF4>Char Overview</span></a><span class=cF0> and </span><span class=cF4><u>Char Routines</u></span><span class=cF0>.
|
||||
<a name="l16"></a>
|
||||
<a name="l17"></a>You can send characters into </span><span class=cF2>StdIn</span><span class=cF0>. See </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>(), </span><a href="/Wb/Kernel/Job.HC.HTML#l445"><span class=cF4>XTalk</span></a><span class=cF0>() and </span><span class=cF4><u>InFile</u></span><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Linux TOSZ Utility</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a></span><span class=cF2>TOSZ [-ascii] filename</span><span class=cF0>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>Will uncompress a single file from within Linux. The </span><span class=cF2>-ascii</span><span class=cF0> flag will convert
|
||||
<a name="l7"></a>the irregular TempleOS ASCII 5 and ASCII 31 characters to spaces. (ASCII 5 is
|
||||
<a name="l8"></a>used to mark the cursor pos and ASCII 31 is used for shifted space characters
|
||||
<a name="l9"></a>and will cause problems unless you convert them.)
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a></span><span class=cF8>
|
||||
<a name="l12"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l13"></a></span></pre></body>
|
||||
</html>
|
@ -1,50 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.text_base</span></a><span class=cF0> must be updated 30fps in your Fs->draw_it() callback. You probably
|
||||
<a name="l2"></a>want </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l989"><span class=cF4>GrPrint</span></a><span class=cF0>() or just </span><a href="/Wb/Kernel/StrPrint.HC.HTML#l890"><span class=cF4>Print</span></a><span class=cF0>(). The </span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> code takes care of plotting text to </span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.text_base</span></a><span class=cF0>.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>Bits 0-7 8-Bit ASCII Scrn Code
|
||||
<a name="l6"></a>Bits 8-11 Foreground </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2914"><span class=cF4>color</span></a><span class=cF0>
|
||||
<a name="l7"></a>Bits 12-15 Background </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2914"><span class=cF4>color</span></a><span class=cF0>
|
||||
<a name="l8"></a>Bits 16-20 Signed X pos shift val
|
||||
<a name="l9"></a>Bits 21-25 Signed Y pos shift val
|
||||
<a name="l10"></a>Bit 28 </span><a href="/Wb/Kernel/KernelA.HH.HTML#l893"><span class=cF4>Blink</span></a><span class=cF0>
|
||||
<a name="l11"></a>Bit 29 </span><a href="/Wb/Kernel/KernelA.HH.HTML#l894"><span class=cF4>Invert</span></a><span class=cF0>ed (Swap foreground and background)
|
||||
<a name="l12"></a>Bit 30 </span><a href="/Wb/Kernel/KernelA.HH.HTML#l895"><span class=cF4>Sel</span></a><span class=cF0> (XOR colors with FF)
|
||||
<a name="l13"></a>Bit 31 </span><a href="/Wb/Kernel/KernelA.HH.HTML#l896"><span class=cF4>Underline</span></a><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cF4>
|
||||
<a name="l15"></a></span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l18"><span class=cF4>GrUpdateTaskWin</span></a><span class=cF0>() calls </span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l193"><span class=cF4>DocUpdateTaskDocs</span></a><span class=cF0>() which calls </span><a href="/Wb/Adam/DolDoc/DocRecalc.HC.HTML#l256"><span class=cF4>DocRecalc</span></a><span class=cF0>() where the
|
||||
<a name="l16"></a>document text is plotted into </span><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.text_base</span></a><span class=cF0>. Then, </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l166"><span class=cF4>GrUpdateTextBG</span></a><span class=cF0>() and </span><span class=cF4>
|
||||
<a name="l17"></a></span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l255"><span class=cF4>GrUpdateTextFG</span></a><span class=cF0>() render the </span><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.text_base</span></a><span class=cF0> onto </span><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.dc2</span></a><span class=cF0>, a raw graphic bitmap.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>See </span><a href="/Wb/Demo/Games/Maze.HC.HTML#l1"><span class=cF4>::/Demo/Games/Maze.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Intel/AMD have an inst that returns the num of CPU cycles since boot. This is
|
||||
<a name="l2"></a>not a steady, calibrated real time value. TempleOS measures it and you can
|
||||
<a name="l3"></a>convert with </span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.time_stamp_freq</span></a><span class=cF0>, a value continuously calibrated from other
|
||||
<a name="l4"></a>cnts.</span></pre></body>
|
||||
</html>
|
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>TempleOS uses a 64-bit value, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l186"><span class=cF4>CDate</span></a><span class=cF0>, for date/time. The upper 32-bits are the
|
||||
<a name="l2"></a>days since Christ. The lower 32-bits store time of day divided by 4 billion
|
||||
<a name="l3"></a>which works out to 49710ths of a second. You can subtract two </span><a href="/Wb/Kernel/KernelA.HH.HTML#l186"><span class=cF4>CDate</span></a><span class=cF0>'s to get a
|
||||
<a name="l4"></a>time span.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>Use </span><a href="/Wb/Kernel/KernelA.HH.HTML#l571"><span class=cF4>CDATE_FREQ</span></a><span class=cF0> to convert.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>The HPET, high precision event timer, is read with </span><a href="/Wb/Kernel/KMisc.HC.HTML#l80"><span class=cF4>HPET</span></a><span class=cF0>() and has a frequency of </span><span class=cF4>
|
||||
<a name="l2"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.HPET_freq</span></a><span class=cF0>. A typical freq value is 14.3 Mhz It might not be available on
|
||||
<a name="l3"></a>all systems.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>One jiffy is one time slice. </span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.jiffies</span></a><span class=cF0> returns time slices since boot.
|
||||
<a name="l2"></a></span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Kernel/KMisc.HC.HTML#l61"><span class=cF4>SysTimerRead</span></a><span class=cF0> reads the timer ticks since boot. It's not as fast as </span><a href="/Wb/Kernel/KernelB.HH.HTML#l292"><span class=cF4>GetTSC</span></a><span class=cF0>.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>Use </span><a href="/Wb/Kernel/KernelA.HH.HTML#l570"><span class=cF4>JIFFY_FREQ</span></a><span class=cF0> to convert </span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.jiffies</span></a><span class=cF0>.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>Use </span><a href="/Wb/Kernel/KernelA.HH.HTML#l572"><span class=cF4>SYS_TIMER_FREQ</span></a><span class=cF0> to convert </span><a href="/Wb/Kernel/KMisc.HC.HTML#l61"><span class=cF4>SysTimerRead</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,280 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Tips</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>* Turn-off or reboot (</span><span class=cF2><CTRL-ALT-DEL></span><span class=cF0>) at any time, except during disk writes.
|
||||
<a name="l4"></a>Writes are not cached.
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>* Use </span><a href="/Wb/Kernel/KMathB.HC.HTML#l147"><span class=cF4>Seed</span></a><span class=cF0>() and the cmd line to switch </span><a href="/Wb/Kernel/KMathB.HC.HTML#l137"><span class=cF4>Rand</span></a><span class=cF0>() to non-timer mode and replay
|
||||
<a name="l7"></a>games you like.
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a>* 64-bit values are most efficient for the compiler.
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a>* See </span><span class=cF9><u>Key Map</u></span><span class=cF0> for a list of defined keys. Define your own keys in </span><a href="/Wb/Home/HomeKeyPlugIns.HC.HTML#l11"><span class=cF4>MyPutKey</span></a><span class=cF0>().
|
||||
<a name="l12"></a>See </span><span class=cF4><u>Keyboard Devices</u></span><span class=cF0>.
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a>* </span><span class=cF2><ALT-m></span><span class=cF0> maximizes a window. </span><span class=cF2><ALT-SHIFT-w></span><span class=cF0> closes AutoComplete. </span><span class=cF2><ALT-w></span><span class=cF0>
|
||||
<a name="l15"></a>brings back AutoComplete. </span><span class=cF2><ALT-v></span><span class=cF0> vertically tiles windows. </span><span class=cF2><ALT-h></span><span class=cF0>
|
||||
<a name="l16"></a>horizontally tiles windows. The </span><span class=cF2>ALT</span><span class=cF0> keys are defined in </span><a href="/Wb/Home/HomeKeyPlugIns..HTML#l1"><span class=cF4>~/HomeKeyPlugIns.HC</span></a><span class=cF0>.
|
||||
<a name="l17"></a>You can customize them.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>* If you make changes to TempleOS files in your </span><span class=cF2>/Home</span><span class=cF0> directory, generally you
|
||||
<a name="l20"></a>reboot to make them take effect. (You don't compile anything.) You should have
|
||||
<a name="l21"></a>two TempleOS partitions on your hard drive because a syntax error in a start-up
|
||||
<a name="l22"></a>file will make the partition unbootable. Boot to the second partition or boot
|
||||
<a name="l23"></a>to a standard TempleOS CD/DVD and use </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0>() to mount your hard drive.
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a>* I copy my files to a mirrored ident partition, periodically with </span><a href="/Wb/Adam/ABlkDev/ADskA.HC.HTML#l122"><span class=cF4>CopyTree</span></a><span class=cF0>()
|
||||
<a name="l26"></a>commands in scripts. I do merge commands with a menu entry like this:
|
||||
<a name="l27"></a></span><span class=cF2>Merge(\"C:/*\",\"D:/*\",\"+r+d\");</span><span class=cF0> to check my changes.
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a>* </span><span class=cF2><CTRL-m></span><span class=cF0> at the cmd line to access your PersonalMenu. Place macros there with </span><span class=cF2>
|
||||
<a name="l30"></a><CTRL-l></span><span class=cF0>, or icon-like sprites with </span><span class=cF2><CTRL-r></span><span class=cF0>. Use the </span><span class=cF2>Pop-Up</span><span class=cF0> option on macros
|
||||
<a name="l31"></a>to </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>() a task to run a file. It dies when it is finished. This returns mem
|
||||
<a name="l32"></a>to the system. Be sure to press </span><span class=cF2><CTRL-s></span><span class=cF0> to save your macro/menu area after
|
||||
<a name="l33"></a>making changes.
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a>* You can use </span><span class=cF2>ans</span><span class=cF0> in cmd line expressions. It holds the res the last cmd line
|
||||
<a name="l36"></a>operation. You can use the cmd prompt as a calculator by just entering
|
||||
<a name="l37"></a>expressions like </span><span class=cF2>1+2*3;</span><span class=cF0>. </span><span class=cF2>F64</span><span class=cF0> ress can be accessed with </span><span class=cF2>ansf</span><span class=cF0>.
|
||||
<a name="l38"></a>
|
||||
<a name="l39"></a>* Use the PullDown menu at the top of the scrn to learn commands, or for finding
|
||||
<a name="l40"></a>the keyboard controls to games.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>* You can adjust the mouse movement rate by setting global vars in your start-up
|
||||
<a name="l43"></a>file. See </span><a href="/Wb/Home/HomeLocalize..HTML#l11"><span class=cF4>mouse scale</span></a><span class=cF0>.
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a>* You can set your local time zone by setting the </span><a href="/Wb/Kernel/KGlbls.HC.HTML#l14"><span class=cF4>local_time_offset</span></a><span class=cF0> global var
|
||||
<a name="l46"></a>in a start-up file. It's units are </span><a href="/Wb/Kernel/KernelA.HH.HTML#l571"><span class=cF4>CDATE_FREQ</span></a><span class=cF0>. See </span><a href="/Wb/Home/HomeLocalize..HTML#l8"><span class=cF4>local time</span></a><span class=cF0>.
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a>* </span><span class=cF2><CTRL-SHIFT-L></span><span class=cF0> in the editor to reindent a </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> function or renumber an asm
|
||||
<a name="l49"></a>routine's local labels.
|
||||
<a name="l50"></a>
|
||||
<a name="l51"></a>* You can use </span><span class=cF2>filter_lines</span><span class=cF0> in the editor text search form (</span><span class=cF2><CTRL-f></span><span class=cF0>) to
|
||||
<a name="l52"></a>temporarily display just lines near each match. A value of </span><span class=cF2>filter lines</span><span class=cF0> set to </span><span class=cF2>
|
||||
<a name="l53"></a>5</span><span class=cF0> will display lines within 5 lines of matches. Then, you can do another find
|
||||
<a name="l54"></a>to a different string and achieve a </span><span class=cF2>AND</span><span class=cF0> search. When finished, press </span><span class=cF2><ESC></span><span class=cF0>.
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a>* You can recompile and reinstall the kernel with </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>(). You'll probably
|
||||
<a name="l57"></a>want to make a function for recompiling that uses the </span><a href="/Wb/Kernel/Job.HC.HTML#l482"><span class=cF4>In</span></a><span class=cF0>() function to answer
|
||||
<a name="l58"></a>the cfg questions. See my technique </span><a href="/Wb/Demo/AcctExample/TOS/TOSCfg.HC.HTML#l1"><span class=cF4>Cfg Strs</span></a><span class=cF0>, </span><a href="/Wb/Demo/AcctExample/TOS/TOSDistro.HC.HTML#l1"><span class=cF4>Update Funs</span></a><span class=cF0>.
|
||||
<a name="l59"></a>
|
||||
<a name="l60"></a>* </span><a href="/Wb/Kernel/Mem/MemPhysical.HC.HTML#l169"><span class=cF4>Scale2Mem</span></a><span class=cF0>(min,max,limit=2*1024*1024*1024) can be used for cfg questions when
|
||||
<a name="l61"></a>recompiling. The </span><a href="/Wb/Adam/Opt/Boot/BootHDIns.HC.HTML#l18"><span class=cF4>BootHDIns</span></a><span class=cF0>() cfg prompts accept expressions, not just numbers.
|
||||
<a name="l62"></a>The dft disk cache is </span><span class=cF2>Scale2Mem(0x80000,0x8000000)</span><span class=cF0>.
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a>* You can permanently disable </span><span class=cF2>AutoComplete</span><span class=cF0> commenting-out </span><a href="/Wb/Home/HomeSys..HTML#l32"><span class=cF4>ACInit</span></a><span class=cF0>() in </span><span class=cF4>
|
||||
<a name="l65"></a></span><a href="/Wb/Home/HomeSys..HTML#l32"><span class=cF4>~/HomeSys.HC</span></a><span class=cF0>.
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>* Boolean expressions <blink>not</blink> in </span><span class=cF2>if</span><span class=cF0> stmts don't have short circuit logic and are
|
||||
<a name="l68"></a>compiled inefficiently.
|
||||
<a name="l69"></a>
|
||||
<a name="l70"></a>* You can use </span><a href="/Wb/Kernel/KernelB.HH.HTML#l209"><span class=cF4>progress1</span></a><span class=cF0>-</span><a href="/Wb/Kernel/KernelB.HH.HTML#l227"><span class=cF4>progress4</span></a><span class=cF0> in your programs for whatever you like.
|
||||
<a name="l71"></a>They're just global vars that are shown on the wallpaper. The original intent
|
||||
<a name="l72"></a>was to indicate how far along operations were. There's no coordination, so
|
||||
<a name="l73"></a>different apps might interfere. I use them most for debugging--just values
|
||||
<a name="l74"></a>easily viewed. See </span><a href="/Wb/Demo/Progress.HC.HTML#l1"><span class=cF4>::/Demo/Progress.HC</span></a><span class=cF0>.
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a>* Use </span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l176"><span class=cF4>DocMax</span></a><span class=cF0>() to adjust the size of the cmd line buf. It counts </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> entries,
|
||||
<a name="l77"></a>not lines.
|
||||
<a name="l78"></a>
|
||||
<a name="l79"></a>* Many data structures have a </span><span class=cF2>user_data</span><span class=cF0> member. Those are available for you to
|
||||
<a name="l80"></a>store a data item, for convenience. </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3271"><span class=cF4>CTask</span></a><span class=cF0>, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1191"><span class=cF4>CDocEntry</span></a><span class=cF0> and </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2520"><span class=cF4>CDirEntry</span></a><span class=cF0> have them.
|
||||
<a name="l81"></a>You shouldn't encounter conflicts with TempleOS using them.
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a>* If, for some strange reason, you wanted to reduce mem usage, make a smaller
|
||||
<a name="l84"></a>disk cache when you recompile the kernel; disabling </span><span class=cF2>AutoComplete</span><span class=cF0>; Specify
|
||||
<a name="l85"></a>smaller stk sizes when doing </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>(), chang </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2843"><span class=cF4>MEM_DFT_STK</span></a><span class=cF0>, and using </span><a href="/Wb/Adam/DolDoc/DocRecalcLib.HC.HTML#l176"><span class=cF4>DocMax</span></a><span class=cF0>() to
|
||||
<a name="l86"></a>reduce the cmd line buffer size.
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a>* Filenames ending in "</span><span class=cF2>.Z</span><span class=cF0>" will be automatically compressed and uncompressed
|
||||
<a name="l89"></a>when read or written. The compression method is not supported by other
|
||||
<a name="l90"></a>operating systems. You can store files uncompressed by </span><a href="/Wb/Adam/ABlkDev/ADskA.HC.HTML#l94"><span class=cF4>Move</span></a><span class=cF0>()ing them to a
|
||||
<a name="l91"></a>filename not ending in "</span><span class=cF2>.Z</span><span class=cF0>". See </span><a href="/Wb/Doc/TOSZ.DD.HTML#l1"><span class=cF4>::/Doc/TOSZ.DD</span></a><span class=cF0> if you want to uncompress while
|
||||
<a name="l92"></a>in </span><span class=cF2>Linux</span><span class=cF0>.
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a>* </span><a href="/Wb/Adam/Opt/Utils/Merge.HC.HTML#l37"><span class=cF4>Merge</span></a><span class=cF0>() can be used to see what's changed. The </span><span class=cF2>+d</span><span class=cF0> flag will show differences
|
||||
<a name="l95"></a>of files which have changed and allow you to merge code. (The </span><span class=cF2>+r</span><span class=cF0> flag will
|
||||
<a name="l96"></a>recurse.)
|
||||
<a name="l97"></a>
|
||||
<a name="l98"></a>* There is a utility </span><a href="/Wb/Adam/Opt/Utils/LinkChk.HC.HTML#l47"><span class=cF4>LinkChk</span></a><span class=cF0>() which will check for broken links in
|
||||
<a name="l99"></a>documentation.
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a>* You can use </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1549"><span class=cF4>OPTf_WARN_PAREN</span></a><span class=cF0>,ON) to find unnecessary parentheses in
|
||||
<a name="l102"></a>code.
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a>* You can use </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1550"><span class=cF4>OPTf_WARN_DUP_TYPES</span></a><span class=cF0>,ON) to find unnecessary local var type
|
||||
<a name="l105"></a>stmts.
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a>* </span><a href="/Wb/Compiler/CMisc.HC.HTML#l1"><span class=cF4>Option</span></a><span class=cF0>(</span><a href="/Wb/Kernel/KernelA.HH.HTML#l1546"><span class=cF4>OPTf_ECHO</span></a><span class=cF0>,ON) can be placed in </span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>StartOS.HC</span></a><span class=cF0> to echo start-up scripts.
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a>* Use </span><a href="/Wb/Adam/DolDoc/DocEd.HC.HTML#l249"><span class=cF4>Plain</span></a><span class=cF0>() to edit a plain text file. You'll need this if your file has </span><span class=cF2>$</span><span class=cF0>'s.
|
||||
<a name="l110"></a> Use the </span><a href="/Wb/Adam/Opt/Utils/ToDolDoc.HC.HTML#l3"><span class=cF4>ToDolDoc</span></a><span class=cF0>() utility to convert plain text to DolDoc's by doubling </span><span class=cF2>$</span><span class=cF0>'s.
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a>* Use </span><a href="/Wb/Kernel/KMisc.HC.HTML#l270"><span class=cF4>Silent</span></a><span class=cF0>() to disable scrn text output.
|
||||
<a name="l113"></a>
|
||||
<a name="l114"></a>* Grab-scroll any window at any time with </span><span class=cF2>{CTRL-LEFT-MOUSE-DRAG}</span><span class=cF0>. Null
|
||||
<a name="l115"></a>grab-scrolling with </span><span class=cF2>{CTRL-RIGHT-MOUSE}</span><span class=cF0>.
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a>* Use </span><span class=cF2><CTRL-ALT-z></span><span class=cF0> to zoom-in and </span><span class=cF2><CTRL-ALT-SHIFT-Z></span><span class=cF0> to zoom-out. You can
|
||||
<a name="l118"></a>scroll by moving to the edge of the window. Set </span><a href="/Wb/Adam/Gr/GrGlbls.HC.HTML#l3"><span class=cF4>gr.continuous_scroll</span></a><span class=cF0> to </span><span class=cF2>TRUE</span><span class=cF0> if
|
||||
<a name="l119"></a>you want.
|
||||
<a name="l120"></a>
|
||||
<a name="l121"></a>* Use </span><span class=cF2><CTRL-ALT-g></span><span class=cF0> and </span><span class=cF2><CTRL-ALT-SHIFT-G></span><span class=cF0> to display a grid on the scrn.
|
||||
<a name="l122"></a>
|
||||
<a name="l123"></a>* Use </span><span class=cF2><CTRL-ALT-a></span><span class=cF0> to enter an extended ASCII char.
|
||||
<a name="l124"></a>
|
||||
<a name="l125"></a>* Use </span><span class=cF2><CTRL-ALT-f></span><span class=cF0> to toggle between </span><a href="/Wb/Kernel/FontStd.HC.HTML#l1"><span class=cF4>Std Font</span></a><span class=cF0> and </span><a href="/Wb/Kernel/FontCyrillic.HC.HTML#l1"><span class=cF4>Cyrillic Font</span></a><span class=cF0>.
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a>* Use </span><span class=cF2><CTRL-ALT-s></span><span class=cF0> will capture the scrn as a sprite on the clip. You can save
|
||||
<a name="l128"></a>the cmd line doc as text with </span><span class=cF2><CTRL-a></span><span class=cF0>.
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a>* You can save a sprite as a </span><span class=cF2>.GR</span><span class=cF0> file in </span><span class=cF2><CTRL-r></span><span class=cF0> on the Sprite BitMap Menu.
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a>* You can eye-dropper colors in the </span><span class=cF2><CTRL-r></span><span class=cF0> sprite editor by pressing </span><span class=cF2>'c'</span><span class=cF0>.
|
||||
<a name="l133"></a>Press </span><span class=cF2>'t'</span><span class=cF0> for transparent.
|
||||
<a name="l134"></a>
|
||||
<a name="l135"></a>* There are handy functions--</span><span class=cF2>F(),R(),FD()</span><span class=cF0> and </span><span class=cF2>RD()</span><span class=cF0> which are defined in </span><span class=cF4>
|
||||
<a name="l136"></a></span><a href="/Wb/Home/HomeWrappers..HTML#l1"><span class=cF4>~/HomeWrappers.HC</span></a><span class=cF0>. You are encouraged to change them and add more. They will
|
||||
<a name="l137"></a>perform find-and-replace operations accross multiple files. The </span><span class=cF2>+l</span><span class=cF0> flag is
|
||||
<a name="l138"></a>particularly useful since it limits to whole labels. The </span><span class=cF2>+lb</span><span class=cF0> and </span><span class=cF2>+la</span><span class=cF0> flags
|
||||
<a name="l139"></a>limit to whole labels just before or after. You are encouraged to add or modify
|
||||
<a name="l140"></a>handy wrapper functions to make cmd line operations easier.
|
||||
<a name="l141"></a>
|
||||
<a name="l142"></a>* When using </span><a href="/Wb/Adam/Opt/Utils/Find.HC.HTML#l145"><span class=cF4>Find</span></a><span class=cF0>() while modifying code, work from the bottom-up so that line
|
||||
<a name="l143"></a>numbers are correct. If you work top-down, then inserting or deleting lines
|
||||
<a name="l144"></a>causes the lower file links will be incorrect.
|
||||
<a name="l145"></a>
|
||||
<a name="l146"></a>* You can save files after making changes, anytime you are within the editor,
|
||||
<a name="l147"></a>like when viewing help/macro files. </span><span class=cF2><CTRL-a></span><span class=cF0> saves as, </span><span class=cF2><CTRL-s></span><span class=cF0> saves with the
|
||||
<a name="l148"></a>same name in the scrolling title bar. Hitting </span><span class=cF2><ESC></span><span class=cF0> will exit and save. (</span><span class=cF2><SHIF
|
||||
<a name="l149"></a>T-ESC></span><span class=cF0> will abort). You can save the cmd line window to a file, too, since
|
||||
<a name="l150"></a>you're actually in the editor when you're at the cmd line.
|
||||
<a name="l151"></a>
|
||||
<a name="l152"></a>* When using </span><span class=cF2><CTRL-l></span><span class=cF0> to insert links in documents, you can usually leave the </span><span class=cF2>Ta
|
||||
<a name="l153"></a>g Text</span><span class=cF0> blank and it will be filled-in automatically based on other entries.
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a>* There is a feature of the precompiler that allows code to be executed in the
|
||||
<a name="l156"></a>middle of compilation and data inserted into the compilation stream. Click here
|
||||
<a name="l157"></a>for an example: </span><a href="/Wb/Kernel/KMain.HC.HTML#l16"><span class=cF4>#exe {</span></a><span class=cF0>.
|
||||
<a name="l158"></a>
|
||||
<a name="l159"></a>* If you output to the cmd line and wish to allow users to scroll around and
|
||||
<a name="l160"></a>view data, you can use </span><a href="/Wb/Adam/DolDoc/DocEd.HC.HTML#l3"><span class=cF4>View</span></a><span class=cF0>().
|
||||
<a name="l161"></a>
|
||||
<a name="l162"></a>* Use </span><a href="/Wb/Adam/DolDoc/DocEd.HC.HTML#l3"><span class=cF4>View</span></a><span class=cF0>() in Pop-up macros to linger until the user presses </span><span class=cF2><ESC></span><span class=cF0> or </span><span class=cF2><SHIFT-E
|
||||
<a name="l163"></a>SC></span><span class=cF0>.
|
||||
<a name="l164"></a>
|
||||
<a name="l165"></a>* You can access the word under the cursor at </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1496"><span class=cF4>ac.cur_word</span></a><span class=cF0>.
|
||||
<a name="l166"></a>
|
||||
<a name="l167"></a>* You can reactivate </span><span class=cF2>AutoComplete</span><span class=cF0> after closing it by pressing </span><span class=cF2><CTRL-Fun Key></span><span class=cF0> or </span><span class=cF2>
|
||||
<a name="l168"></a><ALT-w></span><span class=cF0> if you have it defined.
|
||||
<a name="l169"></a>
|
||||
<a name="l170"></a>* </span><span class=cF2><CTRL-SHIFT-T></span><span class=cF0> to toggle to/from plain text just the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> cmd under the
|
||||
<a name="l171"></a>cursor. See </span><a href="/Wb/Demo/DolDoc/TextDemo.HC.HTML#l1"><span class=cF4>::/Demo/DolDoc/TextDemo.HC</span></a><span class=cF0>.
|
||||
<a name="l172"></a>
|
||||
<a name="l173"></a>* If you toggle to plain text when you are working with graphics in a document,
|
||||
<a name="l174"></a>you can add duplicate entries for sprites by entering a </span><span class=cF2>$SP...$</span><span class=cF0> cmd with the
|
||||
<a name="l175"></a>same num.
|
||||
<a name="l176"></a>
|
||||
<a name="l177"></a>* If you toggle to plain text when working with graphics, you can add a str to
|
||||
<a name="l178"></a>the </span><span class=cF2>$SP...$</span><span class=cF0> entry to keep track of it. Try </span><span class=cF2>$SP,"<2>",BI=2$</span><span class=cF0> where '2' is the
|
||||
<a name="l179"></a>sprite num.
|
||||
<a name="l180"></a>
|
||||
<a name="l181"></a>* I use spaces-to-tab operations on all my src files to keep them small. You
|
||||
<a name="l182"></a>have to be careful, though, because spaces in strings will be converted. I use </span><span class=cF2>
|
||||
<a name="l183"></a><SHIFT-SPACE></span><span class=cF0> ' ' in such cases. See </span><a href="/Wb/Adam/Opt/Utils/StrUtils.HC.HTML#l201"><span class=cF4>S2T</span></a><span class=cF0>() for spaces-to-tabs.
|
||||
<a name="l184"></a>
|
||||
<a name="l185"></a>* You can edit an existing sprite by putting the cursor on it and pressing </span><span class=cF2><CTRL
|
||||
<a name="l186"></a>-r></span><span class=cF0>.
|
||||
<a name="l187"></a>
|
||||
<a name="l188"></a>* When editing a sprite, you can cut and paste the elements in the sidebar text
|
||||
<a name="l189"></a>list window.
|
||||
<a name="l190"></a>
|
||||
<a name="l191"></a>* I recommend keeping CSprite in vect format until you are done creating them,
|
||||
<a name="l192"></a>so you can edit the ctrl points. Then, convert them to bitmaps, so the flood
|
||||
<a name="l193"></a>fills work well. If you are doing interpolation, however, they must be vect.
|
||||
<a name="l194"></a>
|
||||
<a name="l195"></a>* </span><a href="/Wb/Adam/Gr/GrPrimatives.HC.HTML#l239"><span class=cF4>GrFloodFill</span></a><span class=cF0>() is slow. </span><a href="/Wb/Adam/Gr/GrBitMap.HC.HTML#l1008"><span class=cF4>GrRect</span></a><span class=cF0>() is fast.
|
||||
<a name="l196"></a>
|
||||
<a name="l197"></a>* You can customize the </span><span class=cF2>wallpaper</span><span class=cF0>. See </span><a href="/Wb/Demo/Graphics/WallPaperFish.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/WallPaperFish.HC</span></a><span class=cF0>.
|
||||
<a name="l198"></a>
|
||||
<a name="l199"></a>* Your RAM disks will not be reformated when you reboot if the memory location
|
||||
<a name="l200"></a>has not changed and it finds the disk intacted.
|
||||
<a name="l201"></a>
|
||||
<a name="l202"></a>* </span><span class=cF2>try{} catch{}</span><span class=cF0> in a function will cause all vars to be non-reg.
|
||||
<a name="l203"></a>
|
||||
<a name="l204"></a>* Using a sub-int array, </span><span class=cF2>i.u8[3]</span><span class=cF0>, for example, will force a local var to
|
||||
<a name="l205"></a>non-reg.
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a>* You can delete the </span><span class=cF4>~/Registry.HC.Z</span><span class=cF0> file. The policy is that deleting it will
|
||||
<a name="l208"></a>restore defaults. It is a text doc, if you want to edit it. Be careful of tree
|
||||
<a name="l209"></a>indentations.
|
||||
<a name="l210"></a>
|
||||
<a name="l211"></a>* Study </span><a href="/Wb/Adam/Opt/Utils/MemRep.HC.HTML#l1"><span class=cF4>::/Adam/Opt/Utils/MemRep.HC</span></a><span class=cF0> and </span><a href="/Wb/Adam/WallPaper.HC.HTML#l17"><span class=cF4>WallPaper</span></a><span class=cF0>() to learn how the system
|
||||
<a name="l212"></a>resources are put together.
|
||||
<a name="l213"></a>
|
||||
<a name="l214"></a>* The editor's sel-text mechanism allows for disjoint portions of sel text.
|
||||
<a name="l215"></a>This is a feature, not a bug -- you can cut-and-paste disjoint text.
|
||||
<a name="l216"></a>
|
||||
<a name="l217"></a>* </span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.time_stamp_freq</span></a><span class=cF0> is continuously calibrated. Be careful because
|
||||
<a name="l218"></a>expressions might decrease. Take a snap-shot, like this: </span><span class=cF2>timeout=</span><a href="/Wb/Kernel/KernelB.HH.HTML#l292"><span class=cF4>GetTSC</span></a><span class=cF2>+</span><span class=cF4>
|
||||
<a name="l219"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.time_stamp_freq</span></a><span class=cF2> x seconds;</span><span class=cF0> and compare against </span><a href="/Wb/Kernel/KernelB.HH.HTML#l292"><span class=cF4>GetTSC</span></a><span class=cF0>(). I recommend just
|
||||
<a name="l220"></a>using </span><a href="/Wb/Kernel/KMisc.HC.HTML#l122"><span class=cF4>tS</span></a><span class=cF0> or </span><a href="/Wb/Kernel/KernelA.HH.HTML#l557"><span class=cF4>cnts.jiffies</span></a><span class=cF0>.
|
||||
<a name="l221"></a>
|
||||
<a name="l222"></a>* Use </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l73"><span class=cF4>HeapLog</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l115"><span class=cF4>HeapLogAddrRep</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Opt/Utils/HeapLog.HC.HTML#l146"><span class=cF4>HeapLogSizeRep</span></a><span class=cF0>() to find leaks. Don't be
|
||||
<a name="l223"></a>confused by </span><a href="/Wb/Kernel/KernelA.HH.HTML#l1367"><span class=cF4>CDoc</span></a><span class=cF0> allocations. Those are generated when text is written to the
|
||||
<a name="l224"></a>cmd line buffer.
|
||||
<a name="l225"></a>
|
||||
<a name="l226"></a>* For advanced heap debugging, play with </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2773"><span class=cF4>_CFG_HEAP_DBG</span></a><span class=cF0>. You're on your own.
|
||||
<a name="l227"></a>
|
||||
<a name="l228"></a>* You can use </span><a href="/Wb/Adam/DolDoc/DocFile.HC.HTML#l325"><span class=cF4>Type</span></a><span class=cF0>() to display </span><span class=cF2>.GR</span><span class=cF0> files.
|
||||
<a name="l229"></a>
|
||||
<a name="l230"></a>* Use </span><a href="/Wb/Kernel/FunSeg.HC.HTML#l346"><span class=cF4>Man</span></a><span class=cF0>() to jump to short sym name src code.
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a>* Use </span><a href="/Wb/Kernel/EdLite.HC.HTML#l337"><span class=cF4>Fix</span></a><span class=cF0>() to edit and fix the last compiler err.
|
||||
<a name="l233"></a>
|
||||
<a name="l234"></a>* You can use </span><span class=cF2><CTRL-SHIFT-L></span><span class=cF0> to do a check for compile errors.
|
||||
<a name="l235"></a>
|
||||
<a name="l236"></a>* You can use </span><a href="/Wb/Adam/Opt/Utils/DocUtils.HC.HTML#l148"><span class=cF4>DocOpt</span></a><span class=cF0>() to optimize links. (Mostly just removes .Z)
|
||||
<a name="l237"></a>
|
||||
<a name="l238"></a>* </span><a href="/Wb/Adam/Opt/Utils/Diff.HC.HTML#l320"><span class=cF4>ZipRep</span></a><span class=cF0>() can highlight src files with lots of redundancy.
|
||||
<a name="l239"></a>
|
||||
<a name="l240"></a>* With </span><span class=cF2>start</span><span class=cF0>/</span><span class=cF2>end</span><span class=cF0>, common trailing code is fast. Common leading code is slow.
|
||||
<a name="l241"></a>
|
||||
<a name="l242"></a>* The first line of the </span><span class=cF9><u>Psalmody</u></span><span class=cF0> </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> song files is a comment with a category
|
||||
<a name="l243"></a>recognized by </span><a href="/Wb/Apps/Psalmody/JukeBox.HC.HTML#l107"><span class=cF4>JukeBox</span></a><span class=cF0>(). The categories are </span><span class=cF2>"no nothing"</span><span class=cF0>, </span><span class=cF2>"has words"</span><span class=cF0>, </span><span class=cF2>"has
|
||||
<a name="l244"></a>graphics"</span><span class=cF0>, or </span><span class=cF2>"special"</span><span class=cF0>. The third character in the song comment is a digit
|
||||
<a name="l245"></a>rating number, shown in </span><a href="/Wb/Apps/Psalmody/JukeBox.HC.HTML#l107"><span class=cF4>JukeBox</span></a><span class=cF0>(). You can set the song rating in </span><a href="/Wb/Apps/Psalmody/JukeBox.HC.HTML#l107"><span class=cF4>JukeBox</span></a><span class=cF0>() by
|
||||
<a name="l246"></a>pressing </span><span class=cF2>0</span><span class=cF0>-</span><span class=cF2>9</span><span class=cF0>. You can press </span><span class=cF2><DEL></span><span class=cF0> to delete songs.
|
||||
<a name="l247"></a>
|
||||
<a name="l248"></a></span><span class=cF8>
|
||||
<a name="l249"></a>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l250"></a></span></pre></body>
|
||||
</html>
|
@ -1,56 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0>'s have a 4x4 matrix for rotating, scaling, skewing and shifting in 3
|
||||
<a name="l2"></a>dimensions. To make the graphics routines use the transform, you must set the </span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l3569"><span class=cF4>DCF_TRANSFORMATION</span></a><span class=cF0> flag.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a>The matrix consists of ints that have been scaled 32 bits (</span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l4"><span class=cF4>GR_SCALE</span></a><span class=cF0>). See </span><span class=cF4>
|
||||
<a name="l6"></a></span><a href="/Wb/Demo/Lectures/FixedPoint.HC.HTML#l1"><span class=cF4>::/Demo/Lectures/FixedPoint.HC</span></a><span class=cF0> to learn why.
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>See </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l24"><span class=cF4>Mat4x4IdentEqu</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l34"><span class=cF4>Mat4x4IdentNew</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l102"><span class=cF4>Mat4x4Equ</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l108"><span class=cF4>Mat4x4New</span></a><span class=cF0>(). See </span><span class=cF4>
|
||||
<a name="l9"></a></span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l113"><span class=cF4>Mat4x4RotX</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l127"><span class=cF4>Mat4x4RotY</span></a><span class=cF0>(), </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l141"><span class=cF4>Mat4x4RotZ</span></a><span class=cF0>() and </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l155"><span class=cF4>Mat4x4Scale</span></a><span class=cF0>() to rotate about axes
|
||||
<a name="l10"></a>and scale. Combine them with </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l80"><span class=cF4>Mat4x4MulMat4x4Equ</span></a><span class=cF0>()/</span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l96"><span class=cF4>Mat4x4MulMat4x4New</span></a><span class=cF0>() and
|
||||
<a name="l11"></a>assign them to the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0>.</span><span class=cF2>dc</span><span class=cF0> with </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l47"><span class=cF4>DCMat4x4Set</span></a><span class=cF0>(). See </span><a href="/Wb/Demo/Graphics/Box.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Box.HC</span></a><span class=cF0>.
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a>You can rotate single points using </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l6"><span class=cF4>Mat4x4MulXYZ</span></a><span class=cF0>().
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a>The 4th dimension allows a neat trick where you can place pos shifts
|
||||
<a name="l16"></a>(translations), into the matrix and </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l80"><span class=cF4>Mat4x4MulMat4x4Equ</span></a><span class=cF0>/</span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l96"><span class=cF4>Mat4x4MulMat4x4New</span></a><span class=cF0> them
|
||||
<a name="l17"></a>to combine rotation/shift operations. Normally, you can't combine pos shift
|
||||
<a name="l18"></a>operations. See </span><a href="/Wb/Adam/Gr/GrMath.HC.HTML#l176"><span class=cF4>Mat4x4TranslationEqu</span></a><span class=cF0>() and </span><a href="/Wb/Demo/Graphics/Transform.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Transform.HC</span></a><span class=cF0>.
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a>Finally, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0>'s have an </span><span class=cF2>x</span><span class=cF0>, </span><span class=cF2>y</span><span class=cF0> and </span><span class=cF2>z</span><span class=cF0> which is an additional shift (translation).
|
||||
<a name="l21"></a>
|
||||
<a name="l22"></a>The transformation is implemented as a callback on the </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3599"><span class=cF4>CDC</span></a><span class=cF0>'s </span><span class=cF2>transform()</span><span class=cF0> member.
|
||||
<a name="l23"></a> The default </span><span class=cF2>transform()</span><span class=cF0> callback is </span><a href="/Wb/Adam/Gr/GrDC.HC.HTML#l15"><span class=cF4>DCTransform</span></a><span class=cF0>(). See </span><span class=cF4>
|
||||
<a name="l24"></a></span><a href="/Wb/Demo/Games/Talons.HC.HTML#l1"><span class=cF4>::/Demo/Games/Talons.HC</span></a><span class=cF0> or </span><a href="/Wb/Demo/Games/CastleFrankenstein.HC.HTML#l1"><span class=cF4>::/Demo/Games/CastleFrankenstein.HC</span></a><span class=cF0> to see how to
|
||||
<a name="l25"></a>change the </span><span class=cF2>transform()</span><span class=cF0> callback for foreshortening.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,278 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Welcome to TempleOS</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>TempleOS is a x86_64, multi-cored, non-preemptive multi-tasking, ring-0-only,
|
||||
<a name="l4"></a>single-address_mapped (identity-mapped), operating system for recreational
|
||||
<a name="l5"></a>programming. Paging is almost not used.
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a>The people whom can most benefit are:
|
||||
<a name="l8"></a> * Professionals doing hobby projects
|
||||
<a name="l9"></a> * Teenagers doing projects
|
||||
<a name="l10"></a> * Non-professional, older-persons projects
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>Simplicity is a goal to </span><a href="/Wb/Doc/Strategy.DD.HTML#l1"><span class=cF4>keep the line count down</span></a><span class=cF0>, so it's easy to tinker with.
|
||||
<a name="l13"></a>As it turns-out, simplicity makes it faster in some ways, too. It never
|
||||
<a name="l14"></a>switches privilege levels, never changes address maps, tends to load whole
|
||||
<a name="l15"></a>contiguous files and other, similar things which boost speed. It's only 80,849
|
||||
<a name="l16"></a>lines of code including the kernel, the 64-bit compiler, the graphics library
|
||||
<a name="l17"></a>and all the tools. More importantly, it's designed to keep the user's line
|
||||
<a name="l18"></a>count down -- you can do a </span><a href="/Wb/Doc/HelloWorld.DD.HTML#l1"><span class=cF4>Hello World</span></a><span class=cF0> application in one line of code and can
|
||||
<a name="l19"></a>put graphics on the scrn with a three line program!
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>It's a kayak, not a Titanic -- it will crash if you do something wrong. You
|
||||
<a name="l22"></a>quickly reboot, however. DOS and the 8-bit home computers of the 80's worked
|
||||
<a name="l23"></a>fine without memory protection and most computers in the world -- the embedded
|
||||
<a name="l24"></a>ones -- operate without protection. The resulting simplicity of no protections
|
||||
<a name="l25"></a>is why TempleOS has value. In facts, that's the point of TempleOS. See the </span><span class=cF4>
|
||||
<a name="l26"></a></span><a href="/Wb/Doc/Charter.DD.HTML#l1"><span class=cF4>TempleOS Charter</span></a><span class=cF0>.
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>Conventional thinking is "failure is not an option" for general purpose
|
||||
<a name="l29"></a>operating systems. Since this OS is used in addition to Windows or Linux,
|
||||
<a name="l30"></a>however, failure is an option -- just use Windows or Linux if you can't do
|
||||
<a name="l31"></a>something. I cherry-pick what it will and won't do, to make it maximally
|
||||
<a name="l32"></a>beautiful. The following applications more or less form a basis that spans the
|
||||
<a name="l33"></a>range of use that TempleOS is intended for:
|
||||
<a name="l34"></a></span><span class=cF4>
|
||||
<a name="l35"></a></span><a href="/Wb/Demo/Games/BattleLines.HC.HTML#l1"><span class=cF4>/Demo/Games/BattleLines.HC</span></a><span class=cF4>
|
||||
<a name="l36"></a></span><a href="/Wb/Demo/Games/BigGuns.HC.HTML#l1"><span class=cF4>/Demo/Games/BigGuns.HC</span></a><span class=cF4>
|
||||
<a name="l37"></a></span><a href="/Wb/Demo/Games/BlackDiamond.HC.HTML#l1"><span class=cF4>/Demo/Games/BlackDiamond.HC</span></a><span class=cF4>
|
||||
<a name="l38"></a></span><a href="/Wb/Demo/Games/BomberGolf.HC.HTML#l1"><span class=cF4>/Demo/Games/BomberGolf.HC</span></a><span class=cF4>
|
||||
<a name="l39"></a></span><a href="/Wb/Demo/Games/CastleFrankenstein.HC.HTML#l1"><span class=cF4>/Demo/Games/CastleFrankenstein.HC</span></a><span class=cF4>
|
||||
<a name="l40"></a></span><a href="/Wb/Demo/Games/CharDemo.HC.HTML#l1"><span class=cF4>/Demo/Games/CharDemo.HC</span></a><span class=cF4>
|
||||
<a name="l41"></a></span><a href="/Wb/Demo/Games/CircleTrace.HC.HTML#l1"><span class=cF4>/Demo/Games/CircleTrace.HC</span></a><span class=cF4>
|
||||
<a name="l42"></a></span><a href="/Wb/Demo/Games/Collision.HC.HTML#l1"><span class=cF4>/Demo/Games/Collision.HC</span></a><span class=cF4>
|
||||
<a name="l43"></a></span><a href="/Wb/Demo/Games/Digits.HC.HTML#l1"><span class=cF4>/Demo/Games/Digits.HC</span></a><span class=cF4>
|
||||
<a name="l44"></a></span><a href="/Wb/Demo/Games/DunGen.HC.HTML#l1"><span class=cF4>/Demo/Games/DunGen.HC</span></a><span class=cF4>
|
||||
<a name="l45"></a></span><a href="/Wb/Demo/Games/Talons.HC.HTML#l1"><span class=cF4>/Demo/Games/Talons.HC</span></a><span class=cF4>
|
||||
<a name="l46"></a></span><a href="/Wb/Demo/Games/ElephantWalk.HC.HTML#l1"><span class=cF4>/Demo/Games/ElephantWalk.HC</span></a><span class=cF4>
|
||||
<a name="l47"></a></span><a href="/Wb/Demo/Games/FlapBat.HC.HTML#l1"><span class=cF4>/Demo/Games/FlapBat.HC</span></a><span class=cF4>
|
||||
<a name="l48"></a></span><a href="/Wb/Demo/Games/FlatTops.HC.HTML#l1"><span class=cF4>/Demo/Games/FlatTops.HC</span></a><span class=cF4>
|
||||
<a name="l49"></a></span><a href="/Wb/Demo/Games/Halogen.HC.HTML#l1"><span class=cF4>/Demo/Games/Halogen.HC</span></a><span class=cF4>
|
||||
<a name="l50"></a></span><a href="/Wb/Demo/Games/MassSpring.HC.HTML#l1"><span class=cF4>/Demo/Games/MassSpring.HC</span></a><span class=cF4>
|
||||
<a name="l51"></a></span><a href="/Wb/Demo/Games/Maze.HC.HTML#l1"><span class=cF4>/Demo/Games/Maze.HC</span></a><span class=cF4>
|
||||
<a name="l52"></a></span><a href="/Wb/Demo/Games/RainDrops.HC.HTML#l1"><span class=cF4>/Demo/Games/RainDrops.HC</span></a><span class=cF4>
|
||||
<a name="l53"></a></span><a href="/Wb/Demo/Games/RawHide.HC.HTML#l1"><span class=cF4>/Demo/Games/RawHide.HC</span></a><span class=cF4>
|
||||
<a name="l54"></a></span><a href="/Wb/Demo/Games/Rocket.HC.HTML#l1"><span class=cF4>/Demo/Games/Rocket.HC</span></a><span class=cF4>
|
||||
<a name="l55"></a></span><a href="/Wb/Demo/Games/RocketScience.HC.HTML#l1"><span class=cF4>/Demo/Games/RocketScience.HC</span></a><span class=cF4>
|
||||
<a name="l56"></a></span><a href="/Wb/Demo/Games/Squirt.HC.HTML#l1"><span class=cF4>/Demo/Games/Squirt.HC</span></a><span class=cF4>
|
||||
<a name="l57"></a></span><a href="/Wb/Demo/Games/TheDead.HC.HTML#l1"><span class=cF4>/Demo/Games/TheDead.HC</span></a><span class=cF4>
|
||||
<a name="l58"></a></span><a href="/Wb/Demo/Games/TicTacToe.HC.HTML#l1"><span class=cF4>/Demo/Games/TicTacToe.HC</span></a><span class=cF4>
|
||||
<a name="l59"></a></span><a href="/Wb/Demo/Games/TreeCheckers.HC.HTML#l1"><span class=cF4>/Demo/Games/TreeCheckers.HC</span></a><span class=cF4>
|
||||
<a name="l60"></a></span><a href="/Wb/Demo/Games/Varoom.HC.HTML#l1"><span class=cF4>/Demo/Games/Varoom.HC</span></a><span class=cF4>
|
||||
<a name="l61"></a></span><a href="/Wb/Demo/Games/Wenceslas.HC.HTML#l1"><span class=cF4>/Demo/Games/Wenceslas.HC</span></a><span class=cF4>
|
||||
<a name="l62"></a></span><a href="/Wb/Demo/Games/Whap.HC.HTML#l1"><span class=cF4>/Demo/Games/Whap.HC</span></a><span class=cF4>
|
||||
<a name="l63"></a></span><a href="/Wb/Demo/Games/Zing.HC.HTML#l1"><span class=cF4>/Demo/Games/Zing.HC</span></a><span class=cF4>
|
||||
<a name="l64"></a></span><a href="/Wb/Demo/Games/ZoneOut.HC.HTML#l1"><span class=cF4>/Demo/Games/ZoneOut.HC</span></a><span class=cF4>
|
||||
<a name="l65"></a></span><a href="/Wb/Apps/Psalmody/Examples/childish.HC.HTML#l1"><span class=cF4>/Apps/Psalmody/Examples/childish.HC</span></a><span class=cF4>
|
||||
<a name="l66"></a></span><a href="/Wb/Apps/Psalmody/Examples/night.HC.HTML#l1"><span class=cF4>/Apps/Psalmody/Examples/night.HC</span></a><span class=cF4>
|
||||
<a name="l67"></a></span><a href="/Wb/Apps/Psalmody/Examples/prosper.HC.HTML#l1"><span class=cF4>/Apps/Psalmody/Examples/prosper.HC</span></a><span class=cF0>
|
||||
<a name="l68"></a>
|
||||
<a name="l69"></a>Two things to know about TempleOS are that <u>tasks</u> have </span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>/</span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l383"><span class=cF4>Free</span></a><span class=cF0> heap memory,
|
||||
<a name="l70"></a>not applications, and tasks have compiler symbol tables that persist at a scope
|
||||
<a name="l71"></a>like environment variables in other operating systems, and the symbols can
|
||||
<a name="l72"></a>include functions.
|
||||
<a name="l73"></a>
|
||||
<a name="l74"></a>For other operating systems, I hated learning one language for command line
|
||||
<a name="l75"></a>scripts and another for programming. With </span><span class=cF2>TempleOS</span><span class=cF0>, the command line feeds
|
||||
<a name="l76"></a>right into the </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0> compiler, line by line, and it places code into memory it </span><span class=cF4>
|
||||
<a name="l77"></a></span><a href="/Wb/Kernel/Mem/MAllocFree.HC.HTML#l387"><span class=cF4>MAlloc</span></a><span class=cF0>()s. The compiler is paused at the command line, waiting for input.
|
||||
<a name="l78"></a>Naturally, you </span><span class=cF2>#include</span><span class=cF0> a program to load it into memory and, usually, start it.
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a>During the boot process, many files get </span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>compiled</span></a><span class=cF0> before you have access to the
|
||||
<a name="l81"></a>command line. (Don't worry, booting takes only two seconds.) All the header
|
||||
<a name="l82"></a>declarations for the operating system are compiled and are available for use in
|
||||
<a name="l83"></a>your programs without needing to </span><span class=cF2>#include </span><span class=cF0>them. Everything is truly compiled to
|
||||
<a name="l84"></a>native </span><a href="http://en.wikipedia.org/wiki/Amd64#AMD64"><span class=cF2>x86_64</span></a><span class=cF0> machine code, nothing is </span><span class=cF2>interpreted</span><span class=cF0> and there is no </span><span class=cF2>byte code</span><span class=cF0>.
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a>Statements at the global scope -- outside the scope of functions -- execute
|
||||
<a name="l87"></a>immediately. There is no </span><span class=cF2>main()</span><span class=cF0> function. Instead, you give meaningful names
|
||||
<a name="l88"></a>to what would be </span><span class=cF2>main()</span><span class=cF0> functions and you invoke them by calling them with a
|
||||
<a name="l89"></a>statement in the global scope, usually at the bottom of your file.
|
||||
<a name="l90"></a>
|
||||
<a name="l91"></a>I started with </span><span class=cF2>C</span><span class=cF0> syntax, but didn't like the command line for a directory
|
||||
<a name="l92"></a>listing looking like this:
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a>></span><span class=cF2>Dir("*.*",FALSE);
|
||||
<a name="l95"></a>
|
||||
<a name="l96"></a></span><span class=cF0>So, I added default args from </span><span class=cF2>C++</span><span class=cF0> and it looked like this:
|
||||
<a name="l97"></a>
|
||||
<a name="l98"></a>></span><span class=cF2>Dir();
|
||||
<a name="l99"></a>
|
||||
<a name="l100"></a></span><span class=cF0>I didn't like that, so I made parentheses optional on calls with no args and it,
|
||||
<a name="l101"></a>now, looks like this:
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a>></span><span class=cF2>Dir;</span><span class=cF0>
|
||||
<a name="l104"></a>
|
||||
<a name="l105"></a>The syntax change created an ambiguity when specifying function addresses, like
|
||||
<a name="l106"></a>for calling </span><a href="/Wb/Kernel/QSort.HC.HTML#l85"><span class=cF4>QSort</span></a><span class=cF0>(). To resolve it, I made a '</span><span class=cF2>&</span><span class=cF0>' required in front of function
|
||||
<a name="l107"></a>names when specifying an address of a function, which is better anyway.
|
||||
<a name="l108"></a>
|
||||
<a name="l109"></a>Once I was no longer using standard C/C++ syntax, I decided to change everything
|
||||
<a name="l110"></a>I didn't like and call it </span><a href="/Wb/Doc/HolyC.DD.HTML#l1"><span class=cF4>HolyC</span></a><span class=cF0>. Here are the new </span><a href="/Wb/Doc/HolyC.DD.HTML#l215"><span class=cF4>operator precedence</span></a><span class=cF0> rules.
|
||||
<a name="l111"></a>It's Biblical! See </span><a href="http://www.biblegateway.com/verse/en/Luke+5:37"><span class=cF4>Luke,5:37</span></a><span class=cF0>.
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a>There are no object files in TempleOS and, normally, you don't make executable
|
||||
<a name="l114"></a>files either, but you can. That's known as </span><a href="/Wb/Doc/Glossary.DD.HTML#l208"><span class=cF4>Ahead-of-Time</span></a><span class=cF0> compilation. Instead,
|
||||
<a name="l115"></a>you </span><a href="/Wb/Doc/Glossary.DD.HTML#l221"><span class=cF4>Just in Time</span></a><span class=cF0> compile.
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a>Tasks have no priority and are never removed from the queue. Instead, they
|
||||
<a name="l118"></a>often poll whatever they are waiting on and swap-out. (Swapping tasks takes
|
||||
<a name="l119"></a>half a microsecond and does not involve disk activity or memory maps.) See </span><span class=cF4>
|
||||
<a name="l120"></a></span><a href="/Wb/Kernel/Sched.HC.HTML#l1"><span class=cF4>Scheduler</span></a><span class=cF0>. Polling keeps it simple. It might be a problem if you had lots of
|
||||
<a name="l121"></a>tasks busy, which rarely happens on a home computer. The order of the tasks in
|
||||
<a name="l122"></a>the queue determines front-to-back window order.
|
||||
<a name="l123"></a>
|
||||
<a name="l124"></a>The </span><span class=cF2>FAT32</span><span class=cF0> filesystem is supported to makes exchanging files with a dual booted
|
||||
<a name="l125"></a>other operating system easy and there is the simple, 64-bit TempleOS </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0>
|
||||
<a name="l126"></a>filesystem. The </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> has allocation bitmap for clus and all files are stored
|
||||
<a name="l127"></a>contiguously. You can't grow files.
|
||||
<a name="l128"></a>
|
||||
<a name="l129"></a>TempleOS is geared toward reading and writing whole files. Since whole files
|
||||
<a name="l130"></a>are processed, compression is possible. Filenames ending in "</span><span class=cF2>.Z</span><span class=cF0>" are
|
||||
<a name="l131"></a>automatically compressed or uncompressed when stored and fetched. TempleOS does
|
||||
<a name="l132"></a>support direct block random access into files, however -- </span><a href="/Wb/Kernel/BlkDev/DskCFile.HC.HTML#l129"><span class=cF4>FBlkRead</span></a><span class=cF0>() and </span><span class=cF4>
|
||||
<a name="l133"></a></span><a href="/Wb/Kernel/BlkDev/DskCFile.HC.HTML#l181"><span class=cF4>FBlkWrite</span></a><span class=cF0>().
|
||||
<a name="l134"></a>
|
||||
<a name="l135"></a>If a file is not found, "</span><span class=cF2>.Z</span><span class=cF0>" is added or removed and a search is done, again.
|
||||
<a name="l136"></a>There is no </span><span class=cF2>PATH</span><span class=cF0>, but parent directories are searched when a file is not found.
|
||||
<a name="l137"></a>This feature is especially useful for default account files.
|
||||
<a name="l138"></a>
|
||||
<a name="l139"></a>The graphic resolution is poor, </span><span class=cF2>640x480 16 color</span><span class=cF0>, but God said it was a covenant
|
||||
<a name="l140"></a>like circumcision. Also, that's all I feel comfortable with without GPU
|
||||
<a name="l141"></a>acceleration supported. A </span><span class=cF2>1600x1200x24</span><span class=cF0> bit scrn takes 37 times more memory,
|
||||
<a name="l142"></a>implying 37 times the CPU power. Also, a fixed size keeps it simple with
|
||||
<a name="l143"></a>everybody machine having the same appearance. Look on the bright-side -- you
|
||||
<a name="l144"></a>won't spend as much time twiddling pixels for your game art and you'll have tons
|
||||
<a name="l145"></a>of CPU power available, especially with multicore systems.
|
||||
<a name="l146"></a>
|
||||
<a name="l147"></a>TempleOS is for hobbyist programmers on single user (at a time) home computers,
|
||||
<a name="l148"></a>not mainframes or servers. The focus task is all-important so symmetrical
|
||||
<a name="l149"></a>multiprocessing is almost pointless. Why does it matter running two apps at the
|
||||
<a name="l150"></a>same time twice as fast when you really want to run one faster? You could say
|
||||
<a name="l151"></a>TempleOS does master/slave multiprocessing. The anticipated use for multicore
|
||||
<a name="l152"></a>is primarily putting graphics on the scrn. Hardware graphics acceleration is
|
||||
<a name="l153"></a>not used, so this is possible. See </span><a href="/Wb/Doc/MultiCore.DD.HTML#l1"><span class=cF4>TempleOS MultiCore</span></a><span class=cF0>.
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a>There is no distinction between the terms </span><span class=cF2>task</span><span class=cF0>, </span><span class=cF2>process</span><span class=cF0> or </span><span class=cF2>thread</span><span class=cF0>. All have a
|
||||
<a name="l156"></a>task record, </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3271"><span class=cF4>CTask</span></a><span class=cF0>, pointed to by the </span><span class=cF2>FS</span><span class=cF0> segment reg and are accessed with </span><span class=cF4>Fs-></span><span class=cF0>
|
||||
<a name="l157"></a>while </span><span class=cF4>Gs-></span><span class=cF0> points to a </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3391"><span class=cF4>CCPU</span></a><span class=cF0> for the current CPU core. Each task can have just
|
||||
<a name="l158"></a>one window, but a task can have children with windows. (The segment regs are
|
||||
<a name="l159"></a>just used as extra regs -- there is nothing segmented about TempleOS' memory.)
|
||||
<a name="l160"></a>It is approximately the case that </span><span class=cF2>TempleOS</span><span class=cF0> is multi-threading,
|
||||
<a name="l161"></a>single-processing.
|
||||
<a name="l162"></a>
|
||||
<a name="l163"></a>In </span><span class=cF2>TempleOS</span><span class=cF0>, </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam Task</span></a><span class=cF0> refers to the father of all tasks. He's never supposed
|
||||
<a name="l164"></a>to die. Since tasks inherit the symbols of parents, system-wide stuff is
|
||||
<a name="l165"></a>associated with </span><span class=cF2>Adam</span><span class=cF0>. His heap is like kernel memory in other operating
|
||||
<a name="l166"></a>systems. Since </span><span class=cF2>Adam</span><span class=cF0> is immortal, it's safe to alloc objects, not tied to any
|
||||
<a name="l167"></a>mortal task, from </span><span class=cF2>Adam</span><span class=cF0>'s heap. He stays in a server mode, taking requests, so
|
||||
<a name="l168"></a>you can ask him to </span><span class=cF2>#include</span><span class=cF0> something, placing that code system-wide. A funny
|
||||
<a name="l169"></a>story is that originally I called it the </span><span class=cF2>root</span><span class=cF0> task and even had a </span><span class=cF2>/Root</span><span class=cF0>
|
||||
<a name="l170"></a>directory :-) </span><span class=cF2>Adam</span><span class=cF0> executes </span><a href="/Wb/StartOS.HC.HTML#l1"><span class=cF4>::/StartOS.HC</span></a><span class=cF0> at boot time.
|
||||
<a name="l171"></a>
|
||||
<a name="l172"></a>For easy back-ups, place everything you author in your </span><span class=cF2>/Home</span><span class=cF0> directory and
|
||||
<a name="l173"></a>subdirectories. Then, use </span><a href="/Wb/Adam/ABlkDev/ADskA.HC.HTML#l122"><span class=cF4>CopyTree</span></a><span class=cF0>(). That should make upgrading easy, too.
|
||||
<a name="l174"></a>Customizable start-up scripts go in your </span><span class=cF2>/Home</span><span class=cF0> directory. The default start-up
|
||||
<a name="l175"></a>scripts are in the root directory. Copy the start-up files you wish to
|
||||
<a name="l176"></a>customize into </span><span class=cF2>/Home</span><span class=cF0> and modify them. See </span><a href="/Wb/Doc/GuideLines.DD.HTML#l37"><span class=cF4>Home Files</span></a><span class=cF0>. You can make your own
|
||||
<a name="l177"></a>distro that includes everything and is a bootable live CD with </span><span class=cF4>
|
||||
<a name="l178"></a></span><a href="/Wb/Misc/DoDistro.HC.HTML#l1"><span class=cF4>::/Misc/DoDistro.HC</span></a><span class=cF0>.
|
||||
<a name="l179"></a>
|
||||
<a name="l180"></a>Typically, your usage pattern through the day will be repeatedly left or right
|
||||
<a name="l181"></a>clicking on filenames in a cmd line </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l102"><span class=cF4>Dir</span></a><span class=cF0>() listing. You left-click files to edit
|
||||
<a name="l182"></a>them and right-click to </span><span class=cF2>#include</span><span class=cF0> them. To begin a project, type </span><a href="/Wb/Adam/DolDoc/DocEd.HC.HTML#l204"><span class=cF4>Ed</span></a><span class=cF0>("filename");
|
||||
<a name="l183"></a>, supplying a filename. You can also run programs with </span><span class=cF2><F5></span><span class=cF0> when in the editor. </span><span class=cF2>
|
||||
<a name="l184"></a><ESC></span><span class=cF0> to save and exit the file. You'll need to do a new </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l102"><span class=cF4>Dir</span></a><span class=cF0>() cmd,
|
||||
<a name="l185"></a>periodically, so make a macro on your PersonalMenu. Access your PersonalMenu by
|
||||
<a name="l186"></a>pressing </span><span class=cF2><CTRL-m></span><span class=cF0>, cursoring until you are on top of it and pressing </span><span class=cF2><SPACE></span><span class=cF0>.
|
||||
<a name="l187"></a>
|
||||
<a name="l188"></a></span><span class=cF2><CTRL-t></span><span class=cF0> toggles plain text mode, showing format commands, a little like viewing
|
||||
<a name="l189"></a>html code.
|
||||
<a name="l190"></a></span><span class=cF2><CTRL-l></span><span class=cF0> inserts a text widgets.
|
||||
<a name="l191"></a></span><span class=cF2><CTRL-r></span><span class=cF0> inserts or edit a graphic sprite resource at cursor location.
|
||||
<a name="l192"></a></span><span class=cF2><CTRL-d></span><span class=cF0> brings-up the file manager. It's pretty crappy. I find I don't need
|
||||
<a name="l193"></a>it very often, believe it or not.
|
||||
<a name="l194"></a></span><span class=cF2><CTRL-b></span><span class=cF0> toggles window border.
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a></span><span class=cF2><ALT-m></span><span class=cF0> maximizes a window.
|
||||
<a name="l197"></a></span><span class=cF2><ALT-SHIFT-a></span><span class=cF0> closes AutoComplete.
|
||||
<a name="l198"></a></span><span class=cF2><ALT-a></span><span class=cF0> brings back AutoComplete.
|
||||
<a name="l199"></a></span><span class=cF2><ALT-v></span><span class=cF0> vertically tiles windows.
|
||||
<a name="l200"></a></span><span class=cF2><ALT-h></span><span class=cF0> horizontally tiles windows.
|
||||
<a name="l201"></a>The </span><span class=cF2>ALT</span><span class=cF0> keys are defined in </span><a href="/Wb/Home/HomeKeyPlugIns..HTML#l1"><span class=cF4>~/HomeKeyPlugIns.HC</span></a><span class=cF0>. You can customize them.
|
||||
<a name="l202"></a>
|
||||
<a name="l203"></a></span><span class=cF2><CTRL-ALT-t></span><span class=cF0> new terminal window.
|
||||
<a name="l204"></a></span><span class=cF2><CTRL-ALT-n></span><span class=cF0> switches to the next window.
|
||||
<a name="l205"></a></span><span class=cF2><CTRL-ALT-x></span><span class=cF0> kills a window.
|
||||
<a name="l206"></a></span><span class=cF4>
|
||||
<a name="l207"></a></span><a href="/Wb/Adam/Opt/Utils/Find.HC.HTML#l145"><span class=cF4>Find</span></a><span class=cF0>() is your best friend. There's a wrapper function called </span><a href="/Wb/Home/HomeWrappers.HC.HTML#l8"><span class=cF4>F</span></a><span class=cF0>() in your </span><span class=cF2>~/Hom
|
||||
<a name="l208"></a>eWrappers.HC.Z</span><span class=cF0> file. Feel free to make wrapper functions for functions you use
|
||||
<a name="l209"></a>often and customize the args. By the way, </span><a href="/Wb/Adam/Opt/Utils/Find.HC.HTML#l145"><span class=cF4>Find</span></a><span class=cF0>() or </span><a href="/Wb/Home/HomeWrappers.HC.HTML#l13"><span class=cF4>R</span></a><span class=cF0>() can be used to replace
|
||||
<a name="l210"></a>strings across multiple files. You can access </span><a href="/Wb/Adam/Opt/Utils/Find.HC.HTML#l145"><span class=cF4>Find</span></a><span class=cF0>() using </span><span class=cF2><CTRL-SHIFT-f></span><span class=cF0>.
|
||||
<a name="l211"></a>
|
||||
<a name="l212"></a>As you browse code, use the </span><span class=cF2>AutoComplete</span><span class=cF0> window to look-up functions, etc. </span><span class=cF2><CTR
|
||||
<a name="l213"></a>L-SHIFT-F1></span><span class=cF0> (or whatever number) to follow a sym to it's source. You can browse
|
||||
<a name="l214"></a>deeper and deeper. You go back with </span><span class=cF2><SHIFT-ESC></span><span class=cF0>.
|
||||
<a name="l215"></a>
|
||||
<a name="l216"></a>Use the </span><a href="/Wb/Doc/HelpIndex.DD.HTML#l1"><span class=cF4>Help & Index</span></a><span class=cF0> or </span><a href="/Wb/Doc/DemoIndex.DD.HTML#l1"><span class=cF4>Demo Index</span></a><span class=cF0> to find-out what exists. Press </span><span class=cF2><F1></span><span class=cF0> for help
|
||||
<a name="l217"></a>or use the links on your menu (</span><span class=cF2><CTRL-m></span><span class=cF0>). Also, look in the </span><span class=cF2>/Demo</span><span class=cF0> or </span><span class=cF2>/Apps</span><span class=cF0>
|
||||
<a name="l218"></a>directories for inspiration.
|
||||
<a name="l219"></a>
|
||||
<a name="l220"></a>Software is distributed as </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> ISO files. Burn a CD/DVD, or set your CD/DVD
|
||||
<a name="l221"></a>in </span><span class=cF2>QEMU</span><span class=cF0>, </span><span class=cF2>VMware</span><span class=cF0> or </span><span class=cF2>VirtualBox</span><span class=cF0> to the ISO file. Then, access the </span><span class=cF2>'T'</span><span class=cF0> drive. Or, </span><span class=cF4>
|
||||
<a name="l222"></a></span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF0>() the ISO.C file and access the </span><span class=cF2>'M'</span><span class=cF0> drive in TempleOS. It must be a
|
||||
<a name="l223"></a>contiguous ISO.C file, so rename it under TempleOS to ISO.C.
|
||||
<a name="l224"></a>
|
||||
<a name="l225"></a>Ideally, do not install applications such as games onto your hard drive because
|
||||
<a name="l226"></a>we wish to keep hard drive usage low, so the whole </span><span class=cF2>'C'</span><span class=cF0> drive can be copied
|
||||
<a name="l227"></a>quickly to </span><span class=cF2>'D'</span><span class=cF0>. Also, the </span><a href="/Wb/Adam/ABlkDev/FileMgr.HC.HTML#l579"><span class=cF4>FileMgr</span></a><span class=cF0>() </span><span class=cF2><CTRL-d></span><span class=cF0> starts too slowly when there are
|
||||
<a name="l228"></a>lots of hard drive files, but that is how we want it.
|
||||
<a name="l229"></a>
|
||||
<a name="l230"></a>3rd party libraries are banned, since they circumvent the 100,000 line of code
|
||||
<a name="l231"></a>limit in the </span><a href="/Wb/Doc/Charter.DD.HTML#l1"><span class=cF4>TempleOS Charter</span></a><span class=cF0>. All applications must only depend on the core
|
||||
<a name="l232"></a>TempleOS files and whatever they bring along in the ISO. This is similar to how
|
||||
<a name="l233"></a>Commodore 64 applications only depended on the ROM.
|
||||
<a name="l234"></a>
|
||||
<a name="l235"></a>Create a </span><a href="/Wb/Doc/RedSea.DD.HTML#l1"><span class=cF4>RedSea</span></a><span class=cF0> ISO file with </span><a href="/Wb/Adam/Opt/Boot/DskISORedSea.HC.HTML#l136"><span class=cF4>RedSeaISO</span></a><span class=cF0>(). Send an email to
|
||||
<a name="l236"></a></span><a href="mailto:tdavis@templeos.org"><span class=cF0>tdavis@templeos.org</span></a><span class=cF0> if you want me to post a link to your TempleOS code in the
|
||||
<a name="l237"></a>App Store.
|
||||
<a name="l238"></a></span><span class=cF9>
|
||||
<a name="l239"></a><u>Take Tour</span><span class=cF0>
|
||||
<a name="l240"></a>
|
||||
<a name="l241"></a></span><span class=cF8>
|
||||
<a name="l242"></a></u>* "Linux" is a trademark owned by Linus Torvalds.
|
||||
<a name="l243"></a>* "Windows" is a trademark owned by MicroSoft Corp.
|
||||
<a name="l244"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
<a name="l245"></a>* "QEMU" is a trademark owned by Fabrice Bellard.
|
||||
<a name="l246"></a>* "VMware" is a trademark owned by VMware, Inc.
|
||||
<a name="l247"></a>* "VirtualBox" is a trademark owned by Oracle.
|
||||
<a name="l248"></a></span></pre></body>
|
||||
</html>
|
@ -1,118 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> Why Not More?</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>If a feature cannot be made to work correctly and consistently, professional
|
||||
<a name="l4"></a>companies usually remove the feature. Because PC hardware is so diverse,
|
||||
<a name="l5"></a>getting things to work on all people's computers is really difficult. For one
|
||||
<a name="l6"></a>thing, you practically have to own all the different hardware to write drivers
|
||||
<a name="l7"></a>for it. If a company wanted to sell a PC operating system, they would offer a
|
||||
<a name="l8"></a>warranty and, therefore, could not get away with amateur behavior. TempleOS
|
||||
<a name="l9"></a>absolutely requires 64-bit computers, so we leave behind much trouble, but
|
||||
<a name="l10"></a>plenty remains.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a>The PCI bus interface is what modern hardware uses. Before PCI, life was simple
|
||||
<a name="l13"></a>and devices used I/O ports. After studying </span><a href="/Wb/Demo/Lectures/PCIInterrupts.HC.HTML#l1"><span class=cF4>PCI Interrupts</span></a><span class=cF0> and attempting to do
|
||||
<a name="l14"></a>a HDAudio driver, I came to realize that modern PCI devices require ten times
|
||||
<a name="l15"></a>more code and I cannot even come close to making them work on everyone's machine
|
||||
<a name="l16"></a>because with PCI devices there are several models to worry about, unlike with
|
||||
<a name="l17"></a>the older ISA bus devices which can be done with one driver.
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>Currently, I have no PCI drivers. My drivers use I/O ports and operate in ISA
|
||||
<a name="l20"></a>bus mode. At this point, I only have one driver for each type of device and it
|
||||
<a name="l21"></a>is delightfully simple that way. I have one </span><a href="/Wb/Kernel/SerialDev/Keyboard.HC.HTML#l1"><span class=cF4>keyboard</span></a><span class=cF0> driver, one </span><a href="/Wb/Kernel/SerialDev/Mouse.HC.HTML#l1"><span class=cF4>mouse</span></a><span class=cF0> driver,
|
||||
<a name="l22"></a>one </span><a href="/Wb/Kernel/BlkDev/DskATA.HC.HTML#l1"><span class=cF4>ATA hard drive</span></a><span class=cF0> driver, one </span><a href="/Wb/Kernel/BlkDev/DskATA.HC.HTML#l1"><span class=cF4>ATAPI CD/DVD</span></a><span class=cF0> driver, one </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l1"><span class=cF4>VGA 640x480 16 color</span></a><span class=cF0>
|
||||
<a name="l23"></a>video driver and one </span><a href="/Wb/Kernel/KMisc.HC.HTML#l179"><span class=cF4>PC Speaker</span></a><span class=cF0> driver. I use the </span><a href="/Wb/Kernel/KMain.HC.HTML#l89"><span class=cF4>PIT and HPET timers</span></a><span class=cF0> and </span><span class=cF4>
|
||||
<a name="l24"></a></span><a href="/Wb/Kernel/KInts.HC.HTML#l129"><span class=cF4>PIC Interrupt Controller</span></a><span class=cF0>. I use IRQ0 for timer, IRQ1 for keyboard, and IRQ12
|
||||
<a name="l25"></a>for mouse. If IRQ12 is not firing, I am able to poll the mouse.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a>In the CPU department, I have state of the art 64-bit </span><a href="/Wb/Kernel/KStart64.HC.HTML#l1"><span class=cF4>long mode</span></a><span class=cF0> with </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l1"><span class=cF4>multicore</span></a><span class=cF0>
|
||||
<a name="l28"></a>support. I use the </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l171"><span class=cF4>APIC</span></a><span class=cF0> and start-up </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l283"><span class=cF4>multicore</span></a><span class=cF0> operation.
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a>I have made an incredible accomplishment by getting it to work on practically
|
||||
<a name="l31"></a>everyone's computer as long as it is 64-bit and they run inside VMware, QEMU or
|
||||
<a name="l32"></a>VirtualBox.
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a>Adding a USB driver would be really ugly with UHCI, EHCI, OHCI, USB1, USB2,
|
||||
<a name="l35"></a>USB3, ICH6, ICH7, ICH8, ICH9, ICH10, ICH11, ICH12, boot mode and regular mode
|
||||
<a name="l36"></a>for keyboard/mouse and a diversity of HID reports. It's hopeless. I could
|
||||
<a name="l37"></a>never offer anything but crappy, limited support and it would just add a ton of
|
||||
<a name="l38"></a>crappy code that mostly didn't work. What would I gain? Nothing. A keyboard
|
||||
<a name="l39"></a>or mouse would not be improved. Solid State USB drives would be really nice,
|
||||
<a name="l40"></a>but it's not going to happen.
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a>The same story is basically true for GPUs, audio, networking and AHCI hard drive
|
||||
<a name="l43"></a>drivers. God said 640x480 16 color was a covenant like circumcision, so the
|
||||
<a name="l44"></a>video will never change, even if a </span><a href="/Wb/Doc/StdTempleOSPC.DD.HTML#l1"><span class=cF4>Standard PC</span></a><span class=cF0> was made. If you attempt
|
||||
<a name="l45"></a>multimedia, everything will break because memory will get fragmented with huge
|
||||
<a name="l46"></a>multimedia files. Some day, if super-simple high speed serial allows
|
||||
<a name="l47"></a>networking, there will be no browser within the 100,000 line limit and, with
|
||||
<a name="l48"></a>only 16 colors, the world wide web is not tolerable. FTP and telnet might be
|
||||
<a name="l49"></a>possible, in the far distant future, if they could fit within the 100,000 line
|
||||
<a name="l50"></a>limit. Currently, there are 80,849 lines of code.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a>I don't stand a chance working on native hardware, anymore. I could install and
|
||||
<a name="l53"></a>run natively on hardware from about 2005-2010. It requires BIOS's being nice
|
||||
<a name="l54"></a>enough to write USB mode PS/2 legacy keyboard/mouse support. As it turns-out,
|
||||
<a name="l55"></a>sometimes the BIOS has PS/2 drivers but purposely disables them, just to be
|
||||
<a name="l56"></a>mean. The CIA and whole industry is trying to mess everything up, on purpose.
|
||||
<a name="l57"></a>Perhaps, at a point of sale in a store, a thief could hack a credit card
|
||||
<a name="l58"></a>machine. Therefore, the BIOS companies actually want it difficult to make
|
||||
<a name="l59"></a>drivers and purposely make it broken.
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a>The ATA/ATAPI hard drives often can be run with I/O ports if you can </span><a href="/Wb/Kernel/BlkDev/DskATAId.HC.HTML#l1"><span class=cF4>find them</span></a><span class=cF0>. </span><span class=cF2>
|
||||
<a name="l62"></a>lspci -v</span><span class=cF0> on Linux or system information on Windows can help you locate the SATA
|
||||
<a name="l63"></a>IO ports the hard drive and CD/DVD have. They no longer are enabled by the
|
||||
<a name="l64"></a>BIOS. It's hopeless. I'm stuck with very slow drive performance, but it works
|
||||
<a name="l65"></a>for everybody.
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>UEFI is pointless. If I am forced to run in VMware, QEMU or VirtualBox, they
|
||||
<a name="l68"></a>will always support non-UEFI mode. Without working, native hard drive and
|
||||
<a name="l69"></a>CD/DVD drivers, you can't get very far with UEFI on a native install, not to
|
||||
<a name="l70"></a>mention SecureBoot. UEFI is, first of all, redundant. If non-UEFI works in a
|
||||
<a name="l71"></a>virtual machine, supporting UEFI would only be redundant, ugly nasty code. My
|
||||
<a name="l72"></a>compiler does not create an ELF or PE format. I would have to ruin the beauty
|
||||
<a name="l73"></a>of my compiler, which would make me cry many tears.
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a>God talks. It seems reasonable that I will get to make the rules for the whole
|
||||
<a name="l76"></a>industry, in the future when God is announced publically to the World.
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a>I made </span><a href="/Wb/Doc/Demands.DD.HTML#l1"><span class=cF4>::/Doc/Demands.DD</span></a><span class=cF0>.
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a>When the PC was created, they wanted flexibility because they did not know the
|
||||
<a name="l81"></a>future. Now, the industry is mature and it is time to make a 100% standard PC
|
||||
<a name="l82"></a>that everybody uses. </span><a href="/Wb/Doc/StdTempleOSPC.DD.HTML#l1"><span class=cF4>::/Doc/StdTempleOSPC.DD</span></a><span class=cF0>
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a></span><span class=cF8>
|
||||
<a name="l85"></a>* "QEMU" is a trademark owned by Fabrice Bellard.
|
||||
<a name="l86"></a>* "VMware" is a trademark owned by VMware, Inc.
|
||||
<a name="l87"></a>* "VirtualBox" is a trademark owned by Oracle.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5> DolDoc Widget Help</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF4>
|
||||
<a name="l3"></a></span><a href="/Wb/Doc/DolDocOverview.DD.HTML#l1"><span class=cF4>DolDoc</span></a><span class=cF0> is a TempleOS document type.
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a></span><span class=cF2>"Expression"</span><span class=cF0> a num or HolyC algebraic term with operators and HolyC syms can be
|
||||
<a name="l6"></a>entered.
|
||||
<a name="l7"></a></span><span class=cF2>"Macro"</span><span class=cF0> Most entries can behave like macro entries if you assign them macro
|
||||
<a name="l8"></a>strs.
|
||||
<a name="l9"></a></span><span class=cF2>"InStr"</span><span class=cF0> Like a macro except it is an </span><a href="/Wb/Doc/Glossary.DD.HTML#l260"><span class=cF4>InFile</span></a><span class=cF0>. You can't have both an in_str and
|
||||
<a name="l10"></a>macro text defined.
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a></span><span class=cF5>Tag Text</span><span class=cF0> is the text that will be displayed for the item. For links, you can
|
||||
<a name="l13"></a>leave it blank and the details of the link will be shown.
|
||||
<a name="l14"></a></span><span class=cF5>Hide</span><span class=cF0> means display nothing, making an entry invis.
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cF5>Left X</span><span class=cF0> relative to the left margin.
|
||||
<a name="l17"></a></span><span class=cF5>Center X</span><span class=cF0> relative to the horizontal center of the window.
|
||||
<a name="l18"></a></span><span class=cF5>Right X</span><span class=cF0> relative to the right margin.
|
||||
<a name="l19"></a></span><span class=cF5>Top Y</span><span class=cF0> relative to the top of the window.
|
||||
<a name="l20"></a></span><span class=cF5>Center Y</span><span class=cF0> relative to the vertical center of the window.
|
||||
<a name="l21"></a></span><span class=cF5>Bottom Y</span><span class=cF0> relative to the bottom of the window.
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a></span><span class=cF5>Blink</span><span class=cF0> make the text blink.
|
||||
<a name="l24"></a></span><span class=cF5>Invert</span><span class=cF0> make the text inverted.
|
||||
<a name="l25"></a></span><span class=cF5>Underline</span><span class=cF0> make the text underlined.
|
||||
<a name="l26"></a>
|
||||
<a name="l27"></a></span><span class=cF5>Scroll X Length Expression</span><span class=cF0> if a value is entered, the text will scroll in an
|
||||
<a name="l28"></a>area of this width.
|
||||
<a name="l29"></a></span><span class=cF5>Y Offset Expression</span><span class=cF0> if a value is entered, the text will be shifted vertically
|
||||
<a name="l30"></a>by this many pixs, so you can make superscripts or subscripts.
|
||||
<a name="l31"></a></span><span class=cF5>X Offset Expression</span><span class=cF0> if a value is entered, the text will be shifted horizontally
|
||||
<a name="l32"></a>by this many pixs.
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a></span><span class=cF5>Tree</span><span class=cF0> The item will behave like a tree widget, with this as the root.
|
||||
<a name="l35"></a></span><span class=cF5>Collapsed</span><span class=cF0> The tree or hidden widget will begin collapsed.
|
||||
<a name="l36"></a></span><span class=cF5>Define Str</span><span class=cF0> will substitute a </span><span class=cF2>#define</span><span class=cF0> or </span><a href="/Wb/Kernel/KDefine.HC.HTML#l1"><span class=cF4>DefineLoad</span></a><span class=cF0>() string for the tag.
|
||||
<a name="l37"></a>
|
||||
<a name="l38"></a></span><span class=cF5>Quote</span><span class=cF0> Make the res suitable for including in a program, in quotes, especially </span><span class=cF2>fo
|
||||
<a name="l39"></a>rmat</span><span class=cF0> entries in class definitions.
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a></span><span class=cF5>X Expression</span><span class=cF0> For cursor movements, the horizontal value.
|
||||
<a name="l42"></a></span><span class=cF5>Y Expression</span><span class=cF0> For cursor movements, the vertical value.
|
||||
<a name="l43"></a>
|
||||
<a name="l44"></a></span><span class=cF5>PopUp</span><span class=cF0> For macro's, run the macro in a PopUp window. Do this when making a macro
|
||||
<a name="l45"></a>to run a program, so it doesn't tie-up memory.
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF5>Escape</span><span class=cF0> For macro's, send an </span><span class=cF2><ESC></span><span class=cF0> char to exit before running the macro.
|
||||
<a name="l48"></a>Without this, the macro runs in the wrong window, usually.
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a></span><span class=cF5>Refresh Data</span><span class=cF0> updates </span><span class=cF2>$DA...$</span><span class=cF0> entry continuously.
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a></span><span class=cF5>Html Link</span><span class=cF0> stores a link which will be embedded if you generate a html version
|
||||
<a name="l53"></a>of a document with </span><a href="/Wb/Demo/ToHtmlToTXTDemo/ToHtml.HC.HTML#l1"><span class=cF4>::/Demo/ToHtmlToTXTDemo/ToHtml.HC</span></a><span class=cF0>.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>Only tasks on </span><span class=cF2>Core0</span><span class=cF0> can have a window and there can be only one window per task.
|
||||
<a name="l2"></a> The window Z-buffer, top-to-bottom order is determined by the order in the task
|
||||
<a name="l3"></a>queue, with the </span><span class=cF2>WinMgr</span><span class=cF0> on the bottom. A task can have child task popup windows.
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,283 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DBlk</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> blk,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l3"></a>{</span><span class=cF2>//Dump disk block. Optionally, write.</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>//If you set write to TRUE, the block will</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l6"></a> </span><span class=cF2>//See </span><a href="/Wb/Demo/Dsk/DskRaw.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/DskRaw.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l7"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,blk,1);
|
||||
<a name="l10"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (write) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l12"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l13"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) {
|
||||
<a name="l14"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l15"></a> </span><span class=cF5>BlkWrite</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,blk,1);
|
||||
<a name="l16"></a> }
|
||||
<a name="l17"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l18"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DClus</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> c,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> num=0)
|
||||
<a name="l22"></a>{</span><span class=cF2>//Dump disk clus. Optionally, write.</span><span class=cF0>
|
||||
<a name="l23"></a></span><span class=cF2>//If you set write to TRUE, the clus will</span><span class=cF0>
|
||||
<a name="l24"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF2>//See </span><a href="/Wb/Demo/Dsk/DskRaw.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/DskRaw.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l26"></a> </span><span class=cF2>//Do </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l102"><span class=cF4>Dir</span></a><span class=cF2>("*",TRUE); to get clus numbers of files.</span><span class=cF0>
|
||||
<a name="l27"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l28"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,c,num);
|
||||
<a name="l29"></a> </span><span class=cF5>ClusRead</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,c,1);
|
||||
<a name="l30"></a> </span><span class=cF6>"Clus:%X\n"</span><span class=cF0>,c;
|
||||
<a name="l31"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,</span><span class=cF5>Fs</span><span class=cF0>->cur_dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (write) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) {
|
||||
<a name="l35"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l36"></a> </span><span class=cF5>ClusWrite</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,c,1);
|
||||
<a name="l37"></a> }
|
||||
<a name="l38"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l40"></a>}
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>Dump</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l43"></a>{</span><span class=cF2>//Dump file. Optionally, write.</span><span class=cF0>
|
||||
<a name="l44"></a></span><span class=cF2>//If you set write to TRUE, the file will</span><span class=cF0>
|
||||
<a name="l45"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l46"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
|
||||
<a name="l47"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (buf=</span><span class=cF5>FileRead</span><span class=cF7>(</span><span class=cF0>filename,&size</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l49"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,size);
|
||||
<a name="l50"></a> </span><span class=cF1>if</span><span class=cF0> (write) {
|
||||
<a name="l51"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l52"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l53"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l54"></a> </span><span class=cF5>FileWrite</span><span class=cF0>(filename,buf,size);
|
||||
<a name="l55"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l56"></a> }
|
||||
<a name="l57"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l58"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l59"></a>}
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Copy</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src_files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *dst_files_find_mask=</span><span class=cF6>"."</span><span class=cF0>)
|
||||
<a name="l62"></a>{</span><span class=cF2>//Copy files.</span><span class=cF0>
|
||||
<a name="l63"></a></span><span class=cF2>//If the name ends in ".Z", it will</span><span class=cF0>
|
||||
<a name="l64"></a> </span><span class=cF2>//be stored compressed. If not ".Z"</span><span class=cF0>
|
||||
<a name="l65"></a> </span><span class=cF2>//it will be stored uncompressed.</span><span class=cF0>
|
||||
<a name="l66"></a> </span><span class=cF1>Bool</span><span class=cF0> res=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l67"></a> </span><span class=cF9>CDirContext</span><span class=cF0> *dirc;
|
||||
<a name="l68"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l69"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l70"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(src_files_find_mask,</span><span class=cF3>FUF_CLUS_ORDER</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l71"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDir</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l73"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l74"></a> tmpde=tmpde1;
|
||||
<a name="l75"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l77"></a> st=</span><span class=cF5>FileNameAbs</span><span class=cF0>(tmpde->name);
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>CopySingle</span><span class=cF7>(</span><span class=cF0>tmpde->full_name,st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l79"></a> res=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l80"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l81"></a> }
|
||||
<a name="l82"></a> tmpde=tmpde->next;
|
||||
<a name="l83"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l85"></a> }
|
||||
<a name="l86"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l87"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l88"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l89"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l90"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>CopySingle</span><span class=cF0>(src_files_find_mask,dst_files_find_mask);
|
||||
<a name="l91"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l92"></a>}
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Move</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *f1,</span><span class=cF1>U8</span><span class=cF0> *f2)
|
||||
<a name="l95"></a>{</span><span class=cF2>//Move files from one location to another or rename.</span><span class=cF0>
|
||||
<a name="l96"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Copy</span><span class=cF7>(</span><span class=cF0>f1,f2</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l97"></a> </span><span class=cF5>Del</span><span class=cF0>(f1);
|
||||
<a name="l98"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l99"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l100"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l101"></a>}
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>CopyTree2</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> src_dir_len,</span><span class=cF9>I64</span><span class=cF0> dst_dir_len,</span><span class=cF1>U8</span><span class=cF0> *dst_dir)
|
||||
<a name="l104"></a>{
|
||||
<a name="l105"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l106"></a> </span><span class=cF9>I64</span><span class=cF0> res=1;
|
||||
<a name="l107"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l108"></a> st=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>+dst_dir_len+2);
|
||||
<a name="l109"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(st,dst_dir,dst_dir_len);
|
||||
<a name="l110"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(st+dst_dir_len,tmpde->full_name+src_dir_len);
|
||||
<a name="l111"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l112"></a> </span><span class=cF5>DirMk</span><span class=cF0>(st,</span><span class=cF5>LinkedLstCnt</span><span class=cF7>(</span><span class=cF0>tmpde->sub</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l113"></a> res+=</span><span class=cF5>CopyTree2</span><span class=cF0>(tmpde->sub,src_dir_len,dst_dir_len,dst_dir);
|
||||
<a name="l114"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l115"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>CopySingle</span><span class=cF7>(</span><span class=cF0>tmpde->full_name,st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l116"></a> res++;
|
||||
<a name="l117"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l118"></a> tmpde=tmpde->next;
|
||||
<a name="l119"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l120"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l121"></a>}
|
||||
<a name="l122"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>CopyTree</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src_files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *dst_files_find_mask,
|
||||
<a name="l123"></a> </span><span class=cF1>Bool</span><span class=cF0> no_mask=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l124"></a>{</span><span class=cF2>//Copy directory tree.</span><span class=cF0>
|
||||
<a name="l125"></a></span><span class=cF2>//Returns the count of copied files (not dirs).</span><span class=cF0>
|
||||
<a name="l126"></a> </span><span class=cF9>CDirContext</span><span class=cF0> *dirc;
|
||||
<a name="l127"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l128"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i1,i2;
|
||||
<a name="l129"></a> </span><span class=cF1>U8</span><span class=cF0> *st1,*st2;
|
||||
<a name="l130"></a>
|
||||
<a name="l131"></a> st1=</span><span class=cF5>DirNameAbs</span><span class=cF0>(src_files_find_mask);
|
||||
<a name="l132"></a> st2=</span><span class=cF5>DirNameAbs</span><span class=cF0>(dst_files_find_mask);
|
||||
<a name="l133"></a> i1=</span><span class=cF5>StrLen</span><span class=cF0>(st1);
|
||||
<a name="l134"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>st1,st2,i1</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>st2[i1]==</span><span class=cF6>'/'</span><span class=cF0> || !st2[i1]</span><span class=cF7>)</span><span class=cF0> ) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l136"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l137"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l138"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l139"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l140"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l141"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>src_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,,no_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l142"></a> tmpde=</span><span class=cF5>FilesFind</span><span class=cF0>(dirc->mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF0>);
|
||||
<a name="l143"></a> st1=</span><span class=cF5>DirCur</span><span class=cF0>;
|
||||
<a name="l144"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l145"></a> i1=</span><span class=cF5>StrLen</span><span class=cF0>(st1);
|
||||
<a name="l146"></a> </span><span class=cF1>if</span><span class=cF0> (i1==3) i1--;
|
||||
<a name="l147"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l148"></a> st2=</span><span class=cF5>DirCur</span><span class=cF0>;
|
||||
<a name="l149"></a> i2=</span><span class=cF5>StrLen</span><span class=cF0>(st2);
|
||||
<a name="l150"></a> </span><span class=cF1>if</span><span class=cF0> (i2==3) i2--;
|
||||
<a name="l151"></a> res=</span><span class=cF5>CopyTree2</span><span class=cF0>(tmpde,i1,i2,st2);
|
||||
<a name="l152"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l153"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l154"></a> }
|
||||
<a name="l155"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde);
|
||||
<a name="l156"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l157"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l158"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l159"></a>}
|
||||
<a name="l160"></a>
|
||||
<a name="l161"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTreeDirs</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1)
|
||||
<a name="l162"></a>{
|
||||
<a name="l163"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l164"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l165"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l166"></a> tmpde2=tmpde1->next;
|
||||
<a name="l167"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l168"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->sub)
|
||||
<a name="l169"></a> res+=</span><span class=cF5>DelTreeDirs</span><span class=cF0>(tmpde1->sub);
|
||||
<a name="l170"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(tmpde1->full_name,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l171"></a> }
|
||||
<a name="l172"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l173"></a> tmpde1=tmpde2;
|
||||
<a name="l174"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l175"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l176"></a>}
|
||||
<a name="l177"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTreeFiles</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1)
|
||||
<a name="l178"></a>{
|
||||
<a name="l179"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l180"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l181"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l182"></a> tmpde2=tmpde1->next;
|
||||
<a name="l183"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l184"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->sub)
|
||||
<a name="l185"></a> res+=</span><span class=cF5>DelTreeFiles</span><span class=cF0>(tmpde1->sub);
|
||||
<a name="l186"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l187"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(tmpde1->full_name,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l188"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l189"></a> tmpde1=tmpde2;
|
||||
<a name="l190"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l191"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l192"></a>}
|
||||
<a name="l193"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTree</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l194"></a>{</span><span class=cF2>//Delete directory tree.</span><span class=cF0>
|
||||
<a name="l195"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l196"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r"</span><span class=cF0>);
|
||||
<a name="l197"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l198"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDir</span><span class=cF7>(</span><span class=cF0>files_find_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l199"></a> res=</span><span class=cF5>DelTreeDirs</span><span class=cF0>(</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l200"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l201"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(files_find_mask,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l203"></a> res=</span><span class=cF5>DelTreeFiles</span><span class=cF0>(</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l204"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l205"></a>}
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TouchFile</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF1>U8</span><span class=cF0> *attr,</span><span class=cF9>CDate</span><span class=cF0> cdt=</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l208"></a>{
|
||||
<a name="l209"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(*filename);
|
||||
<a name="l210"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> de;
|
||||
<a name="l211"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_dir=</span><span class=cF5>StrNew</span><span class=cF0>(filename),buf[</span><span class=cF3>STR_LEN</span><span class=cF0>];
|
||||
<a name="l212"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF0>filename,&de,</span><span class=cF3>FUF_JUST_FILES</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> </span><span class=cF5>Free</span><span class=cF0>(de.full_name);
|
||||
<a name="l214"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>attr,</span><span class=cF6>"+?"</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l215"></a> </span><span class=cF6>"%-48ts %s\n"</span><span class=cF0>,filename,</span><span class=cF5>StrPrintFlags</span><span class=cF0>(buf,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_ATTRS"</span><span class=cF7>)</span><span class=cF0>,de.attr);
|
||||
<a name="l216"></a> </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l217"></a> </span><span class=cF5>StrFirstRem</span><span class=cF0>(cur_dir,</span><span class=cF6>":"</span><span class=cF0>);
|
||||
<a name="l218"></a> </span><span class=cF5>StrLastRem</span><span class=cF0>(cur_dir,</span><span class=cF6>"/"</span><span class=cF0>);
|
||||
<a name="l219"></a> </span><span class=cF1>if</span><span class=cF0> (!*cur_dir)
|
||||
<a name="l220"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(cur_dir,</span><span class=cF6>"/"</span><span class=cF0>);
|
||||
<a name="l221"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&de.attr,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_ATTRS"</span><span class=cF7>)</span><span class=cF0>,attr);
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (cdt==</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l223"></a> de.datetime=</span><span class=cF5>Now</span><span class=cF0>;
|
||||
<a name="l224"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l225"></a> de.datetime=cdt;
|
||||
<a name="l226"></a> </span><span class=cF5>DirNew</span><span class=cF0>(dv,cur_dir,&de,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l227"></a> }
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File not found: \"%s\".\n"</span><span class=cF0>,filename);
|
||||
<a name="l230"></a> </span><span class=cF5>Free</span><span class=cF0>(cur_dir);
|
||||
<a name="l231"></a>}
|
||||
<a name="l232"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Touch</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *attr=</span><span class=cF6>"+?"</span><span class=cF0>,
|
||||
<a name="l233"></a> </span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CDate</span><span class=cF0> cdt=</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l234"></a>{</span><span class=cF2>/*Touch file attributes and DateTime.</span><span class=cF0>
|
||||
<a name="l235"></a></span><span class=cF2>Default lists attributes.</span><span class=cF0>
|
||||
<a name="l236"></a></span><span class=cF2>attr: "+?" =show current</span><span class=cF0>
|
||||
<a name="l237"></a></span><span class=cF2>"+T" =resident</span><span class=cF4>
|
||||
<a name="l238"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l2497"><span class=cF4>RS_ATTR_READ_ONLY</span></a><span class=cF2> </span><a href="/Wb/Kernel/KDefine.HC.HTML#l109"><span class=cF4>ST_FILE_ATTRS</span></a><span class=cF0>
|
||||
<a name="l239"></a></span><span class=cF2>To Set DateL:</span><span class=cF0>
|
||||
<a name="l240"></a></span><span class=cF2>Touch(filename,"",,datetime);</span><span class=cF0>
|
||||
<a name="l241"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l242"></a> </span><span class=cF9>I64</span><span class=cF0> fuf_flags=0;
|
||||
<a name="l243"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l244"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+f+F"</span><span class=cF0>);
|
||||
<a name="l245"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l246"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l247"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l248"></a> </span><span class=cF5>TouchFile</span><span class=cF0>(tmpde->full_name,attr,cdt);
|
||||
<a name="l249"></a> tmpde=tmpde->next;
|
||||
<a name="l250"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l251"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l252"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,222 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Internal"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l5"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l6"></a> res+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>+1;
|
||||
<a name="l7"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l8"></a> res+=</span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(tmpde->sub);
|
||||
<a name="l9"></a> tmpde=tmpde->next;
|
||||
<a name="l10"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l11"></a> </span><span class=cF1>return</span><span class=cF0> res+1;
|
||||
<a name="l12"></a>}
|
||||
<a name="l13"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF1>U8</span><span class=cF0> *dst)
|
||||
<a name="l14"></a>{
|
||||
<a name="l15"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i;
|
||||
<a name="l16"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l17"></a> *dst++=1;
|
||||
<a name="l18"></a> res++;
|
||||
<a name="l19"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(dst,&tmpde-></span><span class=cF1>start</span><span class=cF0>,</span><span class=cF3>CDIR_SIZE</span><span class=cF0>);
|
||||
<a name="l20"></a> dst+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l21"></a> res+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l23"></a> i=</span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(tmpde->sub,dst);
|
||||
<a name="l24"></a> dst+=i;
|
||||
<a name="l25"></a> res+=i;
|
||||
<a name="l26"></a> }
|
||||
<a name="l27"></a> tmpde=tmpde->next;
|
||||
<a name="l28"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l29"></a> *dst=0;
|
||||
<a name="l30"></a> </span><span class=cF1>return</span><span class=cF0> res+1;
|
||||
<a name="l31"></a>}
|
||||
<a name="l32"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DirTreeSerialize</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> *_size=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l33"></a>{</span><span class=cF2>//Serialize tree returned from </span><a href="/Wb/Kernel/BlkDev/DskFind.HC.HTML#l27"><span class=cF4>FilesFind</span></a><span class=cF2>() into a one contiguous U8 array.</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF9>I64</span><span class=cF0> size=</span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(tmpde);
|
||||
<a name="l35"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(size);
|
||||
<a name="l36"></a> </span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(tmpde,buf);
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (_size) *_size=size;
|
||||
<a name="l38"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l39"></a>}
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src,</span><span class=cF9>CDirEntry</span><span class=cF0> **tmpde)
|
||||
<a name="l42"></a>{
|
||||
<a name="l43"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1;
|
||||
<a name="l44"></a> </span><span class=cF1>if</span><span class=cF0> (*src++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> tmpde1=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l46"></a> *tmpde=tmpde1;
|
||||
<a name="l47"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(&tmpde1-></span><span class=cF1>start</span><span class=cF0>,src,</span><span class=cF3>CDIR_SIZE</span><span class=cF0>);
|
||||
<a name="l48"></a> src+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l49"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l50"></a> src=</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde1->sub);
|
||||
<a name="l51"></a> src=</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde1->next);
|
||||
<a name="l52"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l53"></a> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l54"></a> </span><span class=cF1>return</span><span class=cF0> src;
|
||||
<a name="l55"></a>}
|
||||
<a name="l56"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF5>DirTreeUnserialize</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src)
|
||||
<a name="l57"></a>{</span><span class=cF2>//Unserialize tree to make it like a tree returned from </span><a href="/Wb/Kernel/BlkDev/DskFind.HC.HTML#l27"><span class=cF4>FilesFind</span></a><span class=cF2>().</span><span class=cF0>
|
||||
<a name="l58"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l59"></a> </span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde);
|
||||
<a name="l60"></a> </span><span class=cF1>return</span><span class=cF0> tmpde;
|
||||
<a name="l61"></a>}
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Program Routines"</span><span class=cF0>
|
||||
<a name="l64"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FOFlatten</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>CDirEntry</span><span class=cF0> **a,</span><span class=cF9>I64</span><span class=cF0> *i)
|
||||
<a name="l65"></a>{
|
||||
<a name="l66"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1;
|
||||
<a name="l67"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l68"></a> tmpde1=tmpde->next;
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l70"></a> </span><span class=cF5>FOFlatten</span><span class=cF0>(tmpde->sub,a,i);
|
||||
<a name="l71"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde);
|
||||
<a name="l72"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l73"></a> a[*i]=tmpde;
|
||||
<a name="l74"></a> *i=*i+1;
|
||||
<a name="l75"></a> }
|
||||
<a name="l76"></a> tmpde=tmpde1;
|
||||
<a name="l77"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l78"></a>}
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Size1</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> *_fuf_flags,</span><span class=cF9>I64</span><span class=cF0> round_to)
|
||||
<a name="l81"></a>{
|
||||
<a name="l82"></a> </span><span class=cF1>U8</span><span class=cF0> buf[</span><span class=cF3>BLK_SIZE</span><span class=cF0>];
|
||||
<a name="l83"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i;
|
||||
<a name="l84"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv;
|
||||
<a name="l85"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>i=tmpde->size</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>_fuf_flags,</span><span class=cF3>FUf_EXPAND</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l87"></a> !</span><span class=cF7>(</span><span class=cF0>tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l88"></a> </span><span class=cF5>FileAttr</span><span class=cF7>(</span><span class=cF0>tmpde->name</span><span class=cF7>)</span><span class=cF0>&</span><span class=cF3>RS_ATTR_COMPRESSED</span><span class=cF0>) {
|
||||
<a name="l89"></a> dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(*tmpde->full_name);
|
||||
<a name="l90"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,buf,</span><span class=cF5>Clus2Blk</span><span class=cF7>(</span><span class=cF0>dv,tmpde->clus</span><span class=cF7>)</span><span class=cF0>,1);
|
||||
<a name="l91"></a> i=(&buf)(</span><span class=cF9>CArcCompress</span><span class=cF0> *)->expanded_size;
|
||||
<a name="l92"></a> }
|
||||
<a name="l93"></a> </span><span class=cF1>if</span><span class=cF0> (round_to)
|
||||
<a name="l94"></a> i=</span><span class=cF5>CeilU64</span><span class=cF0>(tmpde->size,round_to);
|
||||
<a name="l95"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l96"></a> i+=</span><span class=cF5>Size1</span><span class=cF0>(tmpde->sub,_fuf_flags,round_to);
|
||||
<a name="l97"></a> tmpde->user_data=i;
|
||||
<a name="l98"></a> res+=i;
|
||||
<a name="l99"></a> tmpde=tmpde->next;
|
||||
<a name="l100"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l101"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l102"></a>}
|
||||
<a name="l103"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Size</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"/*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> round_to=0)
|
||||
<a name="l104"></a>{</span><span class=cF2>//Total size of files in mask. "+x" for expanded size.</span><span class=cF0>
|
||||
<a name="l105"></a></span><span class=cF2>//Does not include directory size of base directory, but</span><span class=cF0>
|
||||
<a name="l106"></a> </span><span class=cF2>//does include size of sub directories.</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF9>I64</span><span class=cF0> fuf_flags=0,res=0;
|
||||
<a name="l108"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r"</span><span class=cF0>);
|
||||
<a name="l110"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l111"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1=</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags&</span><span class=cF3>FUG_FILES_FIND</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l112"></a> fuf_flags&=</span><span class=cF3>FUF_EXPAND</span><span class=cF0>;
|
||||
<a name="l113"></a> res=</span><span class=cF5>Size1</span><span class=cF0>(tmpde1,&fuf_flags,round_to);
|
||||
<a name="l114"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l115"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l116"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l117"></a>}
|
||||
<a name="l118"></a>
|
||||
<a name="l119"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FileCnt</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde)
|
||||
<a name="l120"></a>{</span><span class=cF2>//Cnt of files in </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2520"><span class=cF4>CDirEntry</span></a><span class=cF2> tree.</span><span class=cF0>
|
||||
<a name="l121"></a> </span><span class=cF9>I64</span><span class=cF0> cnt=0;
|
||||
<a name="l122"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l124"></a> cnt+=</span><span class=cF5>FileCnt</span><span class=cF0>(tmpde->sub);
|
||||
<a name="l125"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l126"></a> cnt++;
|
||||
<a name="l127"></a> tmpde=tmpde->next;
|
||||
<a name="l128"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l129"></a> </span><span class=cF1>return</span><span class=cF0> cnt;
|
||||
<a name="l130"></a>}
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l133"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FF</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l134"></a>{</span><span class=cF2>//Files find. List files matching mask.</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF9>I64</span><span class=cF0> cnt=0,fuf_flags=0;
|
||||
<a name="l136"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l137"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F"</span><span class=cF0>);
|
||||
<a name="l138"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l139"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l140"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l141"></a> </span><span class=cF5>PutFileLink</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l142"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l143"></a> cnt++;
|
||||
<a name="l144"></a> tmpde=tmpde->next;
|
||||
<a name="l145"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l146"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l147"></a> </span><span class=cF1>return</span><span class=cF0> cnt;
|
||||
<a name="l148"></a>}
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Zip</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l151"></a>{</span><span class=cF2>//Compress files by moving to .Z filename.</span><span class=cF0>
|
||||
<a name="l152"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l153"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l154"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l155"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F+O"</span><span class=cF0>);
|
||||
<a name="l156"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l157"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l158"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l159"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>IsDotZ</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l160"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s.Z"</span><span class=cF0>,tmpde->full_name);
|
||||
<a name="l161"></a> res+=</span><span class=cF5>Move</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l162"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l163"></a> }
|
||||
<a name="l164"></a> tmpde=tmpde->next;
|
||||
<a name="l165"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l166"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l167"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l168"></a>}
|
||||
<a name="l169"></a>
|
||||
<a name="l170"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Unzip</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*.Z"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l171"></a>{</span><span class=cF2>//Uncompress files by moving to not .Z filename.</span><span class=cF0>
|
||||
<a name="l172"></a></span><span class=cF2>//You don't have to do this for normal operation.</span><span class=cF0>
|
||||
<a name="l173"></a> </span><span class=cF2>//It automatically unzips ".Z" files.</span><span class=cF0>
|
||||
<a name="l174"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l175"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l176"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l177"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F+O"</span><span class=cF0>);
|
||||
<a name="l178"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l179"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l180"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l181"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDotZ</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l182"></a> st=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l183"></a> </span><span class=cF5>StrLastRem</span><span class=cF0>(st,</span><span class=cF6>"."</span><span class=cF0>);
|
||||
<a name="l184"></a> res+=</span><span class=cF5>Move</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l185"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l186"></a> }
|
||||
<a name="l187"></a> tmpde=tmpde->next;
|
||||
<a name="l188"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l189"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l190"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l191"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,475 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>ChkDskConfirm</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF1>if</span><span class=cF0> (*_fix && *_confirm) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF6>"Fix "</span><span class=cF0>;
|
||||
<a name="l6"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>YorN</span><span class=cF0>)
|
||||
<a name="l7"></a> *_fix=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l8"></a> *_confirm=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l9"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l10"></a> </span><span class=cF1>return</span><span class=cF0> *_fix;
|
||||
<a name="l11"></a>}
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(</span><span class=cF9>CDrv</span><span class=cF0> *dv,</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1,
|
||||
<a name="l14"></a> </span><span class=cF1>U8</span><span class=cF0> *bits,</span><span class=cF1>U8</span><span class=cF0> *bits2,</span><span class=cF9>I64</span><span class=cF0> size,</span><span class=cF9>I64</span><span class=cF0> bpc)
|
||||
<a name="l15"></a>{
|
||||
<a name="l16"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l17"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,errs=0;
|
||||
<a name="l18"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l19"></a> tmpde2=tmpde1->next;
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> && tmpde1->sub)
|
||||
<a name="l21"></a> errs+=</span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(dv,tmpde1->sub,bits,bits2,size,bpc);
|
||||
<a name="l22"></a> j=(tmpde1->size+bpc-1)/bpc;
|
||||
<a name="l23"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<j;i++) {
|
||||
<a name="l24"></a> </span><span class=cF1>if</span><span class=cF0> (i+tmpde1->clus-dv->data_area>size) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l26"></a> i+tmpde1->clus);
|
||||
<a name="l27"></a> errs++;
|
||||
<a name="l28"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l29"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,i+tmpde1->clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l32"></a> i+tmpde1->clus);
|
||||
<a name="l33"></a> errs++;
|
||||
<a name="l34"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBtr</span><span class=cF7>(</span><span class=cF0>bits2,i+tmpde1->clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l36"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l37"></a> i+tmpde1->clus);
|
||||
<a name="l38"></a> errs++;
|
||||
<a name="l39"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l40"></a> }
|
||||
<a name="l41"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l42"></a> tmpde1=tmpde2;
|
||||
<a name="l43"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l45"></a>}
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaChkDsk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let,</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l48"></a>{
|
||||
<a name="l49"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,bpc,size,errs=0;
|
||||
<a name="l50"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l51"></a> </span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%c:/*"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>),
|
||||
<a name="l52"></a> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir),
|
||||
<a name="l53"></a> *bits,*bits2;
|
||||
<a name="l54"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *ptr,*ptr2;
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l57"></a> </span><span class=cF6>"Scanning...\n"</span><span class=cF0>;
|
||||
<a name="l58"></a> size=(dv->size-</span><span class=cF7>(</span><span class=cF0>dv->data_area-dv->drv_offset</span><span class=cF7>)</span><span class=cF0>)/dv->spc;
|
||||
<a name="l59"></a> bpc=dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l60"></a> bits=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3);
|
||||
<a name="l61"></a> bits2=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l62"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bits2,dv->fat1,</span><span class=cF7>(</span><span class=cF0>(size+7)>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1</span><span class=cF7>)</span><span class=cF0>>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a> </span><span class=cF2>//Get Root Dir size</span><span class=cF0>
|
||||
<a name="l65"></a> ptr2=</span><span class=cF5>MAlloc</span><span class=cF0>(bpc);
|
||||
<a name="l66"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,ptr2,dv->root_clus,1);
|
||||
<a name="l67"></a> ptr=ptr2(</span><span class=cF1>U8</span><span class=cF0> *)-</span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0>.</span><span class=cF1>start</span><span class=cF0>);
|
||||
<a name="l68"></a> j=(ptr->size+bpc-1)/bpc;
|
||||
<a name="l69"></a> </span><span class=cF5>Free</span><span class=cF0>(ptr2);
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<j;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (i+dv->root_clus-dv->data_area>size) {
|
||||
<a name="l73"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l74"></a> errs++;
|
||||
<a name="l75"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l76"></a> }
|
||||
<a name="l77"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,i+dv->root_clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l78"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l79"></a> errs++;
|
||||
<a name="l80"></a> }
|
||||
<a name="l81"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBtr</span><span class=cF7>(</span><span class=cF0>bits2,i+dv->root_clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l82"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l83"></a> errs++;
|
||||
<a name="l84"></a> }
|
||||
<a name="l85"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a> errs+=</span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(dv,</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l88"></a> bits,bits2,size,bpc);
|
||||
<a name="l89"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<size;i++)
|
||||
<a name="l90"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bits2,i</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Shouldn't Alloc Clus:%0X\n"</span><span class=cF0>,i+dv->data_area);
|
||||
<a name="l92"></a> errs++;
|
||||
<a name="l93"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ChkDskConfirm</span><span class=cF7>(</span><span class=cF0>_fix,_confirm</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l94"></a> </span><span class=cF5>RedSeaFreeClus</span><span class=cF0>(dv,i+dv->data_area,1);
|
||||
<a name="l95"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a> </span><span class=cF5>Free</span><span class=cF0>(files_find_mask);
|
||||
<a name="l98"></a> </span><span class=cF5>Free</span><span class=cF0>(bits);
|
||||
<a name="l99"></a> </span><span class=cF5>Free</span><span class=cF0>(bits2);
|
||||
<a name="l100"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l101"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l102"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l103"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l104"></a>}
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(</span><span class=cF9>CDrv</span><span class=cF0> *dv,</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1,
|
||||
<a name="l107"></a> </span><span class=cF1>U8</span><span class=cF0> *bits,</span><span class=cF9>U32</span><span class=cF0> *bits2,</span><span class=cF9>I64</span><span class=cF0> size,</span><span class=cF9>I64</span><span class=cF0> bpc)
|
||||
<a name="l108"></a>{
|
||||
<a name="l109"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l110"></a> </span><span class=cF9>I64</span><span class=cF0> i,c,errs=0;
|
||||
<a name="l111"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l112"></a> tmpde2=tmpde1->next;
|
||||
<a name="l113"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> && tmpde1->sub)
|
||||
<a name="l114"></a> errs+=</span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(dv,tmpde1->sub,bits,bits2,size,bpc);
|
||||
<a name="l115"></a> i=0;
|
||||
<a name="l116"></a> c=tmpde1->clus;
|
||||
<a name="l117"></a> </span><span class=cF1>while</span><span class=cF0> (0<c<0x0FFFFFF8) {
|
||||
<a name="l118"></a> </span><span class=cF1>if</span><span class=cF0> (c>size) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l119"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l120"></a> errs++;
|
||||
<a name="l121"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l122"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,c</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l124"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l125"></a> errs++;
|
||||
<a name="l126"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF1>if</span><span class=cF0> (!bits2[c]) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l128"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l129"></a> errs++;
|
||||
<a name="l130"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l131"></a> bits2[c]=0;
|
||||
<a name="l132"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(dv,c);
|
||||
<a name="l133"></a> i++;
|
||||
<a name="l134"></a> }
|
||||
<a name="l135"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l136"></a> i*=bpc;
|
||||
<a name="l137"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->size>i) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l138"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Alloced File Too Short:%s\n"</span><span class=cF0>,tmpde1->full_name);
|
||||
<a name="l139"></a> errs++;
|
||||
<a name="l140"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l141"></a> </span><span class=cF1>if</span><span class=cF0> (i>tmpde1->size+bpc-1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l142"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Alloced File Too Long:%s\n"</span><span class=cF0>,tmpde1->full_name);
|
||||
<a name="l143"></a> errs++;
|
||||
<a name="l144"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l145"></a> }
|
||||
<a name="l146"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l147"></a> tmpde1=tmpde2;
|
||||
<a name="l148"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l149"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l150"></a>}
|
||||
<a name="l151"></a>
|
||||
<a name="l152"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32ChkDsk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let,</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l153"></a>{
|
||||
<a name="l154"></a> </span><span class=cF9>I64</span><span class=cF0> i,bpc,size,c,errs=0;
|
||||
<a name="l155"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l156"></a> </span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%c:/*"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>),
|
||||
<a name="l157"></a> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir),
|
||||
<a name="l158"></a> *bits;
|
||||
<a name="l159"></a> </span><span class=cF9>U32</span><span class=cF0> *bits2;
|
||||
<a name="l160"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l161"></a> </span><span class=cF6>"Scanning...\n"</span><span class=cF0>;
|
||||
<a name="l162"></a> size=(dv->size-</span><span class=cF7>(</span><span class=cF0>dv->data_area-dv->drv_offset</span><span class=cF7>)</span><span class=cF0>)/dv->spc;
|
||||
<a name="l163"></a> bpc=dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l164"></a> bits=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3);
|
||||
<a name="l165"></a> bits2=</span><span class=cF5>CAlloc</span><span class=cF0>(size*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l166"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bits2,dv->fat1,</span><span class=cF7>(</span><span class=cF0>size*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1</span><span class=cF7>)</span><span class=cF0>>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l167"></a>
|
||||
<a name="l168"></a> c=dv->root_clus;
|
||||
<a name="l169"></a> </span><span class=cF1>while</span><span class=cF0> (0<c<0x0FFFFFF8) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l170"></a> </span><span class=cF1>if</span><span class=cF0> (c>size) {
|
||||
<a name="l171"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l172"></a> errs++;
|
||||
<a name="l173"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l174"></a> }
|
||||
<a name="l175"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,c</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l176"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l177"></a> errs++;
|
||||
<a name="l178"></a> }
|
||||
<a name="l179"></a> </span><span class=cF1>if</span><span class=cF0> (!bits2[c]) {
|
||||
<a name="l180"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l181"></a> errs++;
|
||||
<a name="l182"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l183"></a> bits2[c]=0;
|
||||
<a name="l184"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(dv,c);
|
||||
<a name="l185"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l186"></a>
|
||||
<a name="l187"></a> errs+=</span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(dv,</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l188"></a> bits,bits2,size,bpc);
|
||||
<a name="l189"></a>
|
||||
<a name="l190"></a> bits2[1]=0; </span><span class=cF2>//See </span><a href="/Wb/Kernel/BlkDev/FileSysFAT.HC.HTML#l48"><span class=cF4>FAT32Fmt</span></a><span class=cF2>()</span><span class=cF0>
|
||||
<a name="l191"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<size;i++)
|
||||
<a name="l192"></a> </span><span class=cF1>if</span><span class=cF0> (bits2[i]) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l193"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Shouldn't Alloc Clus:%0X\n"</span><span class=cF0>,i);
|
||||
<a name="l194"></a> errs++;
|
||||
<a name="l195"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ChkDskConfirm</span><span class=cF7>(</span><span class=cF0>_fix,_confirm</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l196"></a> </span><span class=cF5>FAT32FreeClus</span><span class=cF0>(dv,i);
|
||||
<a name="l197"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l198"></a> </span><span class=cF5>Free</span><span class=cF0>(files_find_mask);
|
||||
<a name="l199"></a> </span><span class=cF5>Free</span><span class=cF0>(bits);
|
||||
<a name="l200"></a> </span><span class=cF5>Free</span><span class=cF0>(bits2);
|
||||
<a name="l201"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l203"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l204"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l205"></a>}
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DskChk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,</span><span class=cF1>Bool</span><span class=cF0> fix=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> confirm=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l208"></a>{</span><span class=cF2>//Check disk for allocation errors and, optionally, fix.</span><span class=cF0>
|
||||
<a name="l209"></a></span><span class=cF2>//You probably want to reformat and reinstall.</span><span class=cF0>
|
||||
<a name="l210"></a> </span><span class=cF9>I64</span><span class=cF0> errs=0;
|
||||
<a name="l211"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l212"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l214"></a> errs=</span><span class=cF5>RedSeaChkDsk</span><span class=cF0>(drv_let,&fix,&confirm);
|
||||
<a name="l215"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l216"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l217"></a> errs=</span><span class=cF5>FAT32ChkDsk</span><span class=cF0>(drv_let,&fix,&confirm);
|
||||
<a name="l218"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l219"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l220"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l221"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (errs) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l223"></a> </span><span class=cF1>if</span><span class=cF0> (fix)
|
||||
<a name="l224"></a> </span><span class=cF6>"It might be a little better. "</span><span class=cF0>;
|
||||
<a name="l225"></a> </span><span class=cF6>"Copy files to another partition or CD/DVD, "</span><span class=cF0>
|
||||
<a name="l226"></a> </span><span class=cF6>"reformat, and copy back. "</span><span class=cF0>
|
||||
<a name="l227"></a> </span><span class=cF6>"Or, copy from a back-up.\n"</span><span class=cF0>;
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l230"></a>}
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>RedSeaDrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l233"></a>{
|
||||
<a name="l234"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l235"></a> </span><span class=cF9>I64</span><span class=cF0> lohi,c1,i,x,y,l=(</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>)*(</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1),
|
||||
<a name="l236"></a> s=dv->size+dv->drv_offset-dv->data_area;
|
||||
<a name="l237"></a> </span><span class=cF1>U8</span><span class=cF0> *bitmap;
|
||||
<a name="l238"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l239"></a>
|
||||
<a name="l240"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l241"></a> </span><span class=cF5>WinMax</span><span class=cF0>;
|
||||
<a name="l242"></a> </span><span class=cF5>WinBorder</span><span class=cF0>(</span><span class=cF3>ON</span><span class=cF0>);
|
||||
<a name="l243"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l244"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l245"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l246"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l247"></a> i=(</span><span class=cF7>(</span><span class=cF0>s+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l248"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l249"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l250"></a> i=0;
|
||||
<a name="l251"></a> </span><span class=cF1>for</span><span class=cF0> (y=0;y<</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;y++) {
|
||||
<a name="l252"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ScanKey</span><span class=cF0>)
|
||||
<a name="l253"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l254"></a> </span><span class=cF1>for</span><span class=cF0> (x=0;x<</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1;x++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l255"></a> lohi=i*s;
|
||||
<a name="l256"></a> c1=lohi/l;
|
||||
<a name="l257"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bitmap,c1</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l258"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>BLUE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l259"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l260"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>WHITE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l261"></a> </span><span class=cF5>GrPlot</span><span class=cF0>(dc,x,y);
|
||||
<a name="l262"></a> i++;
|
||||
<a name="l263"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l264"></a> }
|
||||
<a name="l265"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l266"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l267"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l268"></a> </span><span class=cF5>GetChar</span><span class=cF0>;
|
||||
<a name="l269"></a>
|
||||
<a name="l270"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l271"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l272"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l273"></a>}
|
||||
<a name="l274"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FAT32DrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l275"></a>{
|
||||
<a name="l276"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l277"></a> </span><span class=cF9>I64</span><span class=cF0> lohi,c1,i,x,y,l=(</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>)*(</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1),
|
||||
<a name="l278"></a> s=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
|
||||
<a name="l279"></a> </span><span class=cF9>U32</span><span class=cF0> *bitmap;
|
||||
<a name="l280"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l281"></a>
|
||||
<a name="l282"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l283"></a> </span><span class=cF5>WinMax</span><span class=cF0>;
|
||||
<a name="l284"></a> </span><span class=cF5>WinBorder</span><span class=cF0>(</span><span class=cF3>ON</span><span class=cF0>);
|
||||
<a name="l285"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l286"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l287"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l288"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l289"></a> i=(s*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l290"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l291"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l292"></a> i=0;
|
||||
<a name="l293"></a> </span><span class=cF1>for</span><span class=cF0> (y=0;y<</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;y++) {
|
||||
<a name="l294"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ScanKey</span><span class=cF0>)
|
||||
<a name="l295"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l296"></a> </span><span class=cF1>for</span><span class=cF0> (x=0;x<</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1;x++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l297"></a> lohi=i*s;
|
||||
<a name="l298"></a> c1=lohi/l;
|
||||
<a name="l299"></a> </span><span class=cF1>if</span><span class=cF0> (bitmap[c1])
|
||||
<a name="l300"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>BLUE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l301"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l302"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>WHITE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l303"></a> </span><span class=cF5>GrPlot</span><span class=cF0>(dc,x,y);
|
||||
<a name="l304"></a> i++;
|
||||
<a name="l305"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l306"></a> }
|
||||
<a name="l307"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l308"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l309"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l310"></a> </span><span class=cF5>GetChar</span><span class=cF0>;
|
||||
<a name="l311"></a>
|
||||
<a name="l312"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l313"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l314"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l315"></a>}
|
||||
<a name="l316"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l317"></a>{</span><span class=cF2>//Drive view. Graph the allocation map's fragmentation.</span><span class=cF0>
|
||||
<a name="l318"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l319"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l320"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l321"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l322"></a> </span><span class=cF5>RedSeaDrvView</span><span class=cF0>(drv_let);
|
||||
<a name="l323"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l324"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l325"></a> </span><span class=cF5>FAT32DrvView</span><span class=cF0>(drv_let);
|
||||
<a name="l326"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l327"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l328"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l329"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l330"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l331"></a>}
|
||||
<a name="l332"></a>
|
||||
<a name="l333"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DskView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l334"></a>{</span><span class=cF2>//Disk view. Pie chart of partition sizes.</span><span class=cF0>
|
||||
<a name="l335"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,attr,
|
||||
<a name="l336"></a> h=</span><span class=cF5>Fs</span><span class=cF0>->pix_width,
|
||||
<a name="l337"></a> v=</span><span class=cF5>Fs</span><span class=cF0>->pix_height,
|
||||
<a name="l338"></a> radius;
|
||||
<a name="l339"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv;
|
||||
<a name="l340"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd=</span><span class=cF5>Let2BlkDev</span><span class=cF0>(drv_let);
|
||||
<a name="l341"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l342"></a> </span><span class=cF1>F64</span><span class=cF0> sect_start,sect_end;
|
||||
<a name="l343"></a>
|
||||
<a name="l344"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l345"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l346"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l347"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l348"></a> </span><span class=cF1>if</span><span class=cF0> (h<v)
|
||||
<a name="l349"></a> radius=0.4*h;
|
||||
<a name="l350"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l351"></a> radius=0.4*v;
|
||||
<a name="l352"></a> dc->color=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l353"></a> </span><span class=cF5>GrCircle</span><span class=cF0>(dc,h>>1,v>>1,radius);
|
||||
<a name="l354"></a>
|
||||
<a name="l355"></a> j=1;
|
||||
<a name="l356"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>DRVS_NUM</span><span class=cF0>;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l357"></a> dv=&</span><span class=cFB>blkdev</span><span class=cF0>.drvs[i];
|
||||
<a name="l358"></a> </span><span class=cF1>if</span><span class=cF0> (bd==dv->bd && dv->fs_type) {
|
||||
<a name="l359"></a> sect_start=-(dv->drv_offset*2*</span><span class=cF3>pi</span><span class=cF0>/</span><span class=cF7>(</span><span class=cF0>bd->max_blk+1</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l360"></a> sect_end =-(</span><span class=cF7>(</span><span class=cF0>dv->drv_offset+dv->size</span><span class=cF7>)</span><span class=cF0>*2*</span><span class=cF3>pi</span><span class=cF0>/</span><span class=cF7>(</span><span class=cF0>bd->max_blk+1</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l361"></a> dc->color=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l362"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,h>>1,v>>1,
|
||||
<a name="l363"></a> h>>1+radius*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>sect_start</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l364"></a> v>>1+radius*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>sect_start</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l365"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,h>>1,v>>1,
|
||||
<a name="l366"></a> h>>1+radius*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>sect_end</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l367"></a> v>>1+radius*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>sect_end</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l368"></a>
|
||||
<a name="l369"></a> attr=</span><span class=cF5>DrvTextAttrGet</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l370"></a> dc->color=attr&15;
|
||||
<a name="l371"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,0,v-</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>*j,</span><span class=cF6>"%C %-8Z"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l372"></a> dv->fs_type,</span><span class=cF6>"ST_DRV_TYPES"</span><span class=cF0>);
|
||||
<a name="l373"></a> dc->color.c1=attr>>4;
|
||||
<a name="l374"></a> dc->color|=</span><span class=cF3>ROPF_DITHER</span><span class=cF0>;
|
||||
<a name="l375"></a> </span><span class=cF5>GrFloodFill</span><span class=cF0>(dc,
|
||||
<a name="l376"></a> h>>1+</span><span class=cF7>(</span><span class=cF0>radius-4</span><span class=cF7>)</span><span class=cF0>*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>(sect_start+sect_end)/2</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l377"></a> v>>1+</span><span class=cF7>(</span><span class=cF0>radius-4</span><span class=cF7>)</span><span class=cF0>*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>(sect_start+sect_end)/2</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l378"></a> j++;
|
||||
<a name="l379"></a> }
|
||||
<a name="l380"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l381"></a>
|
||||
<a name="l382"></a> </span><span class=cF5>GetChar</span><span class=cF0>(,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l383"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l384"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l385"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l386"></a>}
|
||||
<a name="l387"></a>
|
||||
<a name="l388"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaUnusedDrvSpace</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l389"></a>{
|
||||
<a name="l390"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l391"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i,l;
|
||||
<a name="l392"></a> </span><span class=cF1>U8</span><span class=cF0> *bitmap;
|
||||
<a name="l393"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l394"></a> l=dv->size+dv->drv_offset-dv->data_area;
|
||||
<a name="l395"></a> i=(</span><span class=cF7>(</span><span class=cF0>l+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l396"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l397"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l398"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<l;i++)
|
||||
<a name="l399"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bitmap,i</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l400"></a> res++;
|
||||
<a name="l401"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l402"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l403"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l404"></a> </span><span class=cF1>return</span><span class=cF0> res*</span><span class=cF3>BLK_SIZE</span><span class=cF0>*dv->spc;
|
||||
<a name="l405"></a>}
|
||||
<a name="l406"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32UnusedDrvSpace</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l407"></a>{
|
||||
<a name="l408"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l409"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i,l;
|
||||
<a name="l410"></a> </span><span class=cF9>U32</span><span class=cF0> *bitmap;
|
||||
<a name="l411"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l412"></a> l=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
|
||||
<a name="l413"></a> i=(l*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l414"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l415"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l416"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<l;i++)
|
||||
<a name="l417"></a> </span><span class=cF1>if</span><span class=cF0> (!bitmap[i])
|
||||
<a name="l418"></a> res++;
|
||||
<a name="l419"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l420"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l421"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l422"></a> </span><span class=cF1>return</span><span class=cF0> res*</span><span class=cF3>BLK_SIZE</span><span class=cF0>*dv->spc;
|
||||
<a name="l423"></a>}
|
||||
<a name="l424"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DrvUnused</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l425"></a>{</span><span class=cF2>//Returns unused size in bytes.</span><span class=cF0>
|
||||
<a name="l426"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l427"></a> </span><span class=cF1>U8</span><span class=cF0> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir);
|
||||
<a name="l428"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l429"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l430"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l431"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l432"></a> res=</span><span class=cF5>RedSeaUnusedDrvSpace</span><span class=cF0>(drv_let);
|
||||
<a name="l433"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l434"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l435"></a> res=</span><span class=cF5>FAT32UnusedDrvSpace</span><span class=cF0>(drv_let);
|
||||
<a name="l436"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l437"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l438"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l439"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l440"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l441"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l442"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l443"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l444"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
@ -1,198 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Install;File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROUND_DRV_TO</span><span class=cF0> (63*255)
|
||||
<a name="l4"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DRV_HEADER</span><span class=cF0> 63
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPlannedDrv</span><span class=cF0>
|
||||
<a name="l7"></a>{
|
||||
<a name="l8"></a> </span><span class=cF9>CPlannedDrv</span><span class=cF0> *next,*last;
|
||||
<a name="l9"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l10"></a> </span><span class=cF1>Bool</span><span class=cF0> pri;
|
||||
<a name="l11"></a>};
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DskPrt</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,...)
|
||||
<a name="l14"></a>{</span><span class=cF2>/*Partition the disk containing partition drv_let.</span><span class=cF0>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cF2>drv_let=0 means add new drive that is not already mounted.</span><span class=cF0>
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a></span><span class=cF2>>DskPrt('C',0.5,0.25,0.25); //Make three. 50% C, 25% D, 25% E, round-up to blk.</span><span class=cF0>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd;
|
||||
<a name="l22"></a> </span><span class=cF9>CPlannedDrv</span><span class=cF0> head,*tmppp;
|
||||
<a name="l23"></a> </span><span class=cF9>CMasterBoot</span><span class=cF0> mbr;
|
||||
<a name="l24"></a> </span><span class=cF1>Bool</span><span class=cF0> pri=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l25"></a> </span><span class=cF9>I64</span><span class=cF0> ext_base,drv_let2,pri_cnt=0,i,start_offset,</span><span class=cF1>offset</span><span class=cF0>,
|
||||
<a name="l26"></a> total,remaining,cur_arg=0;
|
||||
<a name="l27"></a> </span><span class=cF6>"This command does not play well\n"</span><span class=cF0>
|
||||
<a name="l28"></a> </span><span class=cF6>"with other operating systems.\n"</span><span class=cF0>
|
||||
<a name="l29"></a> </span><span class=cF6>"You really should use another\n"</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF6>"operating system's partitioner.\n"</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF6>"If you use this, it may, in fact,\n"</span><span class=cF0>
|
||||
<a name="l32"></a> </span><span class=cF6>"make your hard drive impossible\n"</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF6>"to repartition with other operating\n"</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF6>"until you set block zero to zero\n"</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF6>"with $LK,\"BootMHDZero\",\"MN:BootMHDZero\"$()\n\n\n"</span><span class=cF0>
|
||||
<a name="l36"></a> </span><span class=cF6>"Continue"</span><span class=cF0>;
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (argc<=cur_arg && !</span><span class=cF5>YorN</span><span class=cF0>)
|
||||
<a name="l38"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l39"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a> </span><span class=cF1>if</span><span class=cF0> (drv_let && !</span><span class=cF5>Let2BlkDev</span><span class=cF7>(</span><span class=cF0>drv_let,</span><span class=cF3>FALSE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l42"></a> drv_let=0;
|
||||
<a name="l43"></a> </span><span class=cF1>if</span><span class=cF0> (!drv_let && !</span><span class=cF7>(</span><span class=cF0>drv_let=</span><span class=cF5>Mount</span><span class=cF0>(</span><span class=cF3>TRUE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l44"></a> !</span><span class=cF7>(</span><span class=cF0>bd=</span><span class=cF5>Let2BlkDev</span><span class=cF0>(drv_let,</span><span class=cF3>FALSE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> || bd->type!=</span><span class=cF3>BDT_ATA</span><span class=cF0>)
|
||||
<a name="l45"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a> total=bd->max_blk+1;
|
||||
<a name="l48"></a> </span><span class=cF5>QueInit</span><span class=cF0>(&head);
|
||||
<a name="l49"></a> drv_let2=bd->first_drv_let;
|
||||
<a name="l50"></a> remaining=</span><span class=cF5>FloorU64</span><span class=cF0>(bd->max_blk+1,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>);
|
||||
<a name="l51"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>FloorU64</span><span class=cF7>(</span><span class=cF0>remaining,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>>=</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l52"></a> tmppp=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CPlannedDrv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l53"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l54"></a> </span><span class=cF6>"$RED$Partition %C$FG$\n"</span><span class=cF0>,drv_let2;
|
||||
<a name="l55"></a> tmppp->pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l56"></a> </span><span class=cF1>if</span><span class=cF0> (pri) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l57"></a> </span><span class=cF6>"Primary Partition"</span><span class=cF0>;
|
||||
<a name="l58"></a> </span><span class=cF1>if</span><span class=cF0> (argc>cur_arg || </span><span class=cF5>YorN</span><span class=cF0>) {
|
||||
<a name="l59"></a> pri_cnt++;
|
||||
<a name="l60"></a> tmppp->pri=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l61"></a> </span><span class=cF1>if</span><span class=cF0> (pri_cnt==3)
|
||||
<a name="l62"></a> pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l63"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l64"></a> pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l65"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l66"></a> </span><span class=cF6>"\nBlocks Remaining:%d (0x%X)\n"</span><span class=cF0>,
|
||||
<a name="l67"></a> remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF0>,remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (argc>cur_arg)
|
||||
<a name="l69"></a> tmppp->size=</span><span class=cF5>MinI64</span><span class=cF0>(</span><span class=cF5>CeilU64</span><span class=cF7>(</span><span class=cF5>MaxI64</span><span class=cF0>(remaining,</span><span class=cF3>DRV_HEADER</span><span class=cF0>),</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l70"></a> </span><span class=cF5>CeilU64</span><span class=cF7>(</span><span class=cF0>argv[cur_arg++](</span><span class=cF1>F64</span><span class=cF0>)*total,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l71"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l72"></a> tmppp->size=</span><span class=cF5>CeilU64</span><span class=cF0>(</span><span class=cF5>GetI64</span><span class=cF7>(</span><span class=cF6>"Size in Blocks :"</span><span class=cF0>,
|
||||
<a name="l73"></a> remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF3>DRV_HEADER</span><span class=cF0>,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>);
|
||||
<a name="l74"></a> } </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0><=tmppp->size<=</span><span class=cF5>FloorU64</span><span class=cF0>(remaining,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l75"></a> </span><span class=cF5>QueIns</span><span class=cF0>(tmppp,head.last);
|
||||
<a name="l76"></a> remaining-=tmppp->size;
|
||||
<a name="l77"></a> drv_let2++;
|
||||
<a name="l78"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a> </span><span class=cF6>"\n\n!!! Repartition Drive !!!\n\n"</span><span class=cF0>;
|
||||
<a name="l81"></a> tmppp=head.next;
|
||||
<a name="l82"></a> drv_let2=bd->first_drv_let;
|
||||
<a name="l83"></a> </span><span class=cF1>while</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF6>"Drive %C:%08X "</span><span class=cF0>,drv_let2,tmppp->size;
|
||||
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp->pri)
|
||||
<a name="l86"></a> </span><span class=cF6>"Primary\n"</span><span class=cF0>;
|
||||
<a name="l87"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l88"></a> </span><span class=cF6>"Logical\n"</span><span class=cF0>;
|
||||
<a name="l89"></a> tmppp=tmppp->next;
|
||||
<a name="l90"></a> drv_let2++;
|
||||
<a name="l91"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l92"></a> </span><span class=cF1>if</span><span class=cF0> (!argc && !</span><span class=cF5>AreYouSure</span><span class=cF0>)
|
||||
<a name="l93"></a> </span><span class=cF1>goto</span><span class=cF0> pd_done;
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a> remaining=</span><span class=cF5>FloorU64</span><span class=cF0>(bd->max_blk+1,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>)-</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>;
|
||||
<a name="l96"></a> tmppp=head.next;
|
||||
<a name="l97"></a> </span><span class=cF5>MemSet</span><span class=cF0>(&mbr,0,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l98"></a> mbr.signature=0xAA55;
|
||||
<a name="l99"></a> </span><span class=cF1>offset</span><span class=cF0>=0;
|
||||
<a name="l100"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<pri_cnt;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l101"></a> mbr.p[i].active=0x80;
|
||||
<a name="l102"></a> mbr.p[i].start_head=0;
|
||||
<a name="l103"></a> mbr.p[i].start_cyl=0x101;
|
||||
<a name="l104"></a> mbr.p[i].type=1; </span><span class=cF2>//Will get set different.</span><span class=cF0>
|
||||
<a name="l105"></a> mbr.p[i].end_head=0xFE;
|
||||
<a name="l106"></a> mbr.p[i].end_cyl=0xFFFF;
|
||||
<a name="l107"></a> mbr.p[i].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF3>DRV_HEADER</span><span class=cF0>+</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l108"></a> mbr.p[i].size=tmppp->size-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF1>offset</span><span class=cF0>+=tmppp->size;
|
||||
<a name="l110"></a> remaining-=tmppp->size;
|
||||
<a name="l111"></a> tmppp=tmppp->next;
|
||||
<a name="l112"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l113"></a> </span><span class=cF1>if</span><span class=cF0> (!i) i++;
|
||||
<a name="l114"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l115"></a> mbr.p[i].active=0x80;
|
||||
<a name="l116"></a> mbr.p[i].start_head=0;
|
||||
<a name="l117"></a> mbr.p[i].start_cyl=0x101;
|
||||
<a name="l118"></a> mbr.p[i].type=0xF;
|
||||
<a name="l119"></a> mbr.p[i].end_head=0xFE;
|
||||
<a name="l120"></a> mbr.p[i].end_cyl=0xFFFF;
|
||||
<a name="l121"></a> mbr.p[i].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l122"></a> mbr.p[i].size=remaining;
|
||||
<a name="l123"></a> ext_base=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l124"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l125"></a> </span><span class=cF5>ATAWriteBlks</span><span class=cF0>(bd,&mbr,0,1);
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a> </span><span class=cF1>while</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l128"></a> start_offset=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l129"></a> </span><span class=cF5>MemSet</span><span class=cF0>(&mbr,0,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l130"></a> mbr.signature=0xAA55;
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a> mbr.p[0].active=0x80;
|
||||
<a name="l133"></a> mbr.p[0].start_head=1;
|
||||
<a name="l134"></a> mbr.p[0].start_cyl=0x101;
|
||||
<a name="l135"></a> mbr.p[0].type=1; </span><span class=cF2>//Will get set different.</span><span class=cF0>
|
||||
<a name="l136"></a> mbr.p[0].end_head=0xFE;
|
||||
<a name="l137"></a> mbr.p[0].end_cyl=0xFFFF;
|
||||
<a name="l138"></a> mbr.p[0].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l139"></a> mbr.p[0].size=tmppp->size-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l140"></a> </span><span class=cF1>offset</span><span class=cF0>+=tmppp->size;
|
||||
<a name="l141"></a> tmppp=tmppp->next;
|
||||
<a name="l142"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp!=&head) {
|
||||
<a name="l143"></a> mbr.p[1].active=0x80;
|
||||
<a name="l144"></a> mbr.p[1].start_head=0;
|
||||
<a name="l145"></a> mbr.p[1].start_cyl=0x101;
|
||||
<a name="l146"></a> mbr.p[1].type=5;
|
||||
<a name="l147"></a> mbr.p[1].end_head=0xFE;
|
||||
<a name="l148"></a> mbr.p[1].end_cyl=0xFFFF;
|
||||
<a name="l149"></a> mbr.p[1].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF1>offset</span><span class=cF0>-ext_base;
|
||||
<a name="l150"></a> mbr.p[1].size=tmppp->size;
|
||||
<a name="l151"></a> }
|
||||
<a name="l152"></a> </span><span class=cF5>ATAWriteBlks</span><span class=cF0>(bd,&mbr,start_offset,1);
|
||||
<a name="l153"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a> bd->flags&=~(</span><span class=cF3>BDF_INITIALIZED</span><span class=cF0> | </span><span class=cF3>BDF_INIT_IN_PROGRESS</span><span class=cF0>);
|
||||
<a name="l156"></a> </span><span class=cF5>BlkDevAdd</span><span class=cF0>(bd,,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l157"></a> </span><span class=cF1>for</span><span class=cF0> (i=bd->first_drv_let;i<drv_let2;i++)
|
||||
<a name="l158"></a> </span><span class=cF5>Fmt</span><span class=cF0>(i,,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l159"></a>
|
||||
<a name="l160"></a> pd_done:
|
||||
<a name="l161"></a> </span><span class=cF1>while</span><span class=cF0> (head.next!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l162"></a> tmppp=head.next;
|
||||
<a name="l163"></a> </span><span class=cF5>QueRem</span><span class=cF0>(tmppp);
|
||||
<a name="l164"></a> </span><span class=cF5>Free</span><span class=cF0>(tmppp);
|
||||
<a name="l165"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l166"></a> </span><span class=cF1>return</span><span class=cF0> total;
|
||||
<a name="l167"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user