ZealOS/docs/Doc/Welcome.DD.html
TomAwezome 6b3fd2fecb Rename abs_addres to abs_address.
Update documentation/comments to rename addr, fun, var, stmt, blk, desc, reg, seg, ptr, dup, clus, val, and bttn, to address, function, variable, statement, block, description, register, segment, pointer, duplicate, cluster, value, and button, respectively.
2021-10-06 21:35:32 -04:00

217 lines
29 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V1.01">
<style type="text/css">
body {background-color:#fef1f0;}
.cF0{color:#000000;background-color:#fef1f0;}
.cF1{color:#0148a4;background-color:#fef1f0;}
.cF2{color:#3b7901;background-color:#fef1f0;}
.cF3{color:#057c7e;background-color:#fef1f0;}
.cF4{color:#bb2020;background-color:#fef1f0;}
.cF5{color:#9e42ae;background-color:#fef1f0;}
.cF6{color:#b57901;background-color:#fef1f0;}
.cF7{color:#b2b6af;background-color:#fef1f0;}
.cF8{color:#555753;background-color:#fef1f0;}
.cF9{color:#678fbb;background-color:#fef1f0;}
.cFA{color:#82bc49;background-color:#fef1f0;}
.cFB{color:#0097a2;background-color:#fef1f0;}
.cFC{color:#e26a6a;background-color:#fef1f0;}
.cFD{color:#c671bc;background-color:#fef1f0;}
.cFE{color:#c7ab00;background-color:#fef1f0;}
.cFF{color:#fef1f0;background-color:#fef1f0;}
</style>
</head>
<body>
<pre style="font-family:monospace;font-size:12pt">
<a name="l1"></a><span class=cF5> Welcome to ZealOS</span><span class=cF0>
<a name="l2"></a>
<a name="l3"></a>ZealOS is a x86_64, multi-cored, non-preemptive multi-tasking, ring-0-only, single-address_mapped (identity-mapped), operating
<a name="l4"></a>system for recreational programming. Paging is almost not used.
<a name="l5"></a>
<a name="l6"></a>The people whom can most benefit are:
<a name="l7"></a> * Professionals doing hobby projects
<a name="l8"></a> * Teenagers doing projects
<a name="l9"></a> * Non-professional, older-persons projects
<a name="l10"></a>
<a name="l11"></a>Simplicity is a goal to </span><a href="https://zeal-operating-system.github.io/ZealOS/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. As it turns-out, simplicity makes it faster in
<a name="l12"></a>some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and
<a name="l13"></a>other, similar things which boost speed. It's only 94,713 lines of code including the kernel, the 64-bit compiler, the
<a name="l14"></a>graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a </span><span class=cF4>
<a name="l15"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/HelloWorld.DD.html#l1"><span class=cF4>Hello World</span></a><span class=cF0> application in one line of code and can put graphics on the screen with a three line program!
<a name="l16"></a>
<a name="l17"></a>It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home
<a name="l18"></a>computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate
<a name="l19"></a>without protection. The resulting simplicity of no protections is why ZealOS has value. In facts, that's the point of
<a name="l20"></a>ZealOS. See the </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Charter.DD.html#l1"><span class=cF4>ZealOS Charter</span></a><span class=cF0>.
<a name="l21"></a>
<a name="l22"></a>Conventional thinking is &quot;failure is not an option&quot; for general purpose operating systems. Since this OS is used in addition
<a name="l23"></a>to Windows or Linux, however, failure is an option -- just use Windows or Linux if you can't do something. We cherry-pick
<a name="l24"></a>what it will and won't do, to make it maximally beautiful. The following applications more or less form a basis that spans
<a name="l25"></a>the range of use that ZealOS is intended for:
<a name="l26"></a></span><span class=cF4>
<a name="l27"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/BattleLines.CC.html#l1"><span class=cF4>/Demo/Games/BattleLines.CC</span></a><span class=cF4>
<a name="l28"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/BigGuns.CC.html#l1"><span class=cF4>/Demo/Games/BigGuns.CC</span></a><span class=cF4>
<a name="l29"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/BlackDiamond.CC.html#l1"><span class=cF4>/Demo/Games/BlackDiamond.CC</span></a><span class=cF4>
<a name="l30"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/BomberGolf.CC.html#l1"><span class=cF4>/Demo/Games/BomberGolf.CC</span></a><span class=cF4>
<a name="l31"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/CastleFrankenstein.CC.html#l1"><span class=cF4>/Demo/Games/CastleFrankenstein.CC</span></a><span class=cF4>
<a name="l32"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/CharDemo.CC.html#l1"><span class=cF4>/Demo/Games/CharDemo.CC</span></a><span class=cF4>
<a name="l33"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/CircleTrace.CC.html#l1"><span class=cF4>/Demo/Games/CircleTrace.CC</span></a><span class=cF4>
<a name="l34"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Collision.CC.html#l1"><span class=cF4>/Demo/Games/Collision.CC</span></a><span class=cF4>
<a name="l35"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Digits.CC.html#l1"><span class=cF4>/Demo/Games/Digits.CC</span></a><span class=cF4>
<a name="l36"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/DunGen.CC.html#l1"><span class=cF4>/Demo/Games/DunGen.CC</span></a><span class=cF4>
<a name="l37"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Talons.CC.html#l1"><span class=cF4>/Demo/Games/Talons.CC</span></a><span class=cF4>
<a name="l38"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/ElephantWalk.CC.html#l1"><span class=cF4>/Demo/Games/ElephantWalk.CC</span></a><span class=cF4>
<a name="l39"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/FlapBat.CC.html#l1"><span class=cF4>/Demo/Games/FlapBat.CC</span></a><span class=cF4>
<a name="l40"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/FlatTops.CC.html#l1"><span class=cF4>/Demo/Games/FlatTops.CC</span></a><span class=cF4>
<a name="l41"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Halogen.CC.html#l1"><span class=cF4>/Demo/Games/Halogen.CC</span></a><span class=cF4>
<a name="l42"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/MassSpring.CC.html#l1"><span class=cF4>/Demo/Games/MassSpring.CC</span></a><span class=cF4>
<a name="l43"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Maze.CC.html#l1"><span class=cF4>/Demo/Games/Maze.CC</span></a><span class=cF4>
<a name="l44"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/RainDrops.CC.html#l1"><span class=cF4>/Demo/Games/RainDrops.CC</span></a><span class=cF4>
<a name="l45"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/RawHide.CC.html#l1"><span class=cF4>/Demo/Games/RawHide.CC</span></a><span class=cF4>
<a name="l46"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Rocket.CC.html#l1"><span class=cF4>/Demo/Games/Rocket.CC</span></a><span class=cF4>
<a name="l47"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/RocketScience.CC.html#l1"><span class=cF4>/Demo/Games/RocketScience.CC</span></a><span class=cF4>
<a name="l48"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Squirt.CC.html#l1"><span class=cF4>/Demo/Games/Squirt.CC</span></a><span class=cF4>
<a name="l49"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/TheDead.CC.html#l1"><span class=cF4>/Demo/Games/TheDead.CC</span></a><span class=cF4>
<a name="l50"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/TicTacToe.CC.html#l1"><span class=cF4>/Demo/Games/TicTacToe.CC</span></a><span class=cF4>
<a name="l51"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/TreeCheckers.CC.html#l1"><span class=cF4>/Demo/Games/TreeCheckers.CC</span></a><span class=cF4>
<a name="l52"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Varoom.CC.html#l1"><span class=cF4>/Demo/Games/Varoom.CC</span></a><span class=cF4>
<a name="l53"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Wenceslas.CC.html#l1"><span class=cF4>/Demo/Games/Wenceslas.CC</span></a><span class=cF4>
<a name="l54"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Whap.CC.html#l1"><span class=cF4>/Demo/Games/Whap.CC</span></a><span class=cF4>
<a name="l55"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/Zing.CC.html#l1"><span class=cF4>/Demo/Games/Zing.CC</span></a><span class=cF4>
<a name="l56"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Demo/Games/ZoneOut.CC.html#l1"><span class=cF4>/Demo/Games/ZoneOut.CC</span></a><span class=cF4>
<a name="l57"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Apps/Psalmody/Examples/childish.CC.html#l1"><span class=cF4>/Apps/Psalmody/Examples/childish.CC</span></a><span class=cF4>
<a name="l58"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Apps/Psalmody/Examples/night.CC.html#l1"><span class=cF4>/Apps/Psalmody/Examples/night.CC</span></a><span class=cF4>
<a name="l59"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Apps/Psalmody/Examples/prosper.CC.html#l1"><span class=cF4>/Apps/Psalmody/Examples/prosper.CC</span></a><span class=cF0>
<a name="l60"></a>
<a name="l61"></a>Two things to know about ZealOS are that <u>tasks</u> have </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Memory/MAllocFree.CC.html#l391"><span class=cF4>MAlloc</span></a><span class=cF0>/</span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Memory/MAllocFree.CC.html#l387"><span class=cF4>Free</span></a><span class=cF0> heap memory, not applications, and tasks have compiler symbol
<a name="l62"></a>tables that persist at a scope like environment variables in other operating systems, and the symbols can include functions.
<a name="l63"></a>
<a name="l64"></a>With </span><span class=cF2>ZealOS</span><span class=cF0>, the command line feeds right into the </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CosmiC.DD.html#l1"><span class=cF4>CosmiC</span></a><span class=cF0> compiler, line by line, and it places code into memory it </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Memory/MAllocFree.CC.html#l391"><span class=cF4>MAlloc</span></a><span class=cF0>()s.
<a name="l65"></a>The compiler is paused at the command line, waiting for input. Naturally, you </span><span class=cF2>#include</span><span class=cF0> a program to load it into memory and,
<a name="l66"></a>usually, start it.
<a name="l67"></a>
<a name="l68"></a>During the boot process, many files get </span><a href="https://zeal-operating-system.github.io/ZealOS/StartOS.CC.html#l1"><span class=cF4>compiled</span></a><span class=cF0> before you have access to the command line. (Don't worry, booting takes
<a name="l69"></a>only two seconds.) All the header declarations for the operating system are compiled and are available for use in your
<a name="l70"></a>programs without needing to </span><span class=cF2>#include </span><span class=cF0>them. Everything is truly compiled to 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>
<a name="l71"></a>and there is no </span><span class=cF2>byte code</span><span class=cF0>.
<a name="l72"></a>
<a name="l73"></a>Statements at the global scope -- outside the scope of functions -- execute immediately. There is no </span><span class=cF2>main()</span><span class=cF0> function. In
<a name="l74"></a>stead, you give meaningful names to what would be </span><span class=cF2>main()</span><span class=cF0> functions and you invoke them by calling them with a statement in the
<a name="l75"></a>global scope, usually at the bottom of your file.
<a name="l76"></a>
<a name="l77"></a>Terry Davis started with </span><span class=cF2>C</span><span class=cF0> syntax, but didn't like the command line for a directory listing looking like this:
<a name="l78"></a>
<a name="l79"></a>&gt;</span><span class=cF2>Dir(&quot;*.*&quot;,FALSE);
<a name="l80"></a>
<a name="l81"></a></span><span class=cF0>So, he added default args from </span><span class=cF2>C++</span><span class=cF0> and it looked like this:
<a name="l82"></a>
<a name="l83"></a>&gt;</span><span class=cF2>Dir();
<a name="l84"></a>
<a name="l85"></a></span><span class=cF0>He didn't like that, so he made parentheses optional on calls with no args and it, now, looks like this:
<a name="l86"></a>
<a name="l87"></a>&gt;</span><span class=cF2>Dir;</span><span class=cF0>
<a name="l88"></a>
<a name="l89"></a>The syntax change created an ambiguity when specifying function addresses, like for calling </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/QuickSort.CC.html#l99"><span class=cF4>QuickSort</span></a><span class=cF0>(). To resolve it, I
<a name="l90"></a>made a '</span><span class=cF2>&amp;</span><span class=cF0>' required in front of function names when specifying an address of a function, which is better anyway.
<a name="l91"></a>
<a name="l92"></a>Once Terry was no longer using standard C/C++ syntax, he decided to change everything he didn't like and call it </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CosmiC.DD.html#l1"><span class=cF4>HolyC</span></a><span class=cF0>. Here
<a name="l93"></a>are the new </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/CosmiC.DD.html#l210"><span class=cF4>operator precedence</span></a><span class=cF0> rules. 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="l94"></a>
<a name="l95"></a>There are no object files in ZealOS and, normally, you don't make executable files either, but you can. That's known as </span><span class=cF4>
<a name="l96"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l179"><span class=cF4>Ahead-of-Time</span></a><span class=cF0> compilation. Instead, you </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l188"><span class=cF4>Just in Time</span></a><span class=cF0> compile.
<a name="l97"></a>
<a name="l98"></a>Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and
<a name="l99"></a>swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/Sched.CC.html#l1"><span class=cF4>Scheduler</span></a><span class=cF0>. Pollin
<a name="l100"></a>g keeps it simple. It might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order
<a name="l101"></a>of the tasks in the queue determines front-to-back window order.
<a name="l102"></a>
<a name="l103"></a>The </span><span class=cF2>FAT32</span><span class=cF0> filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the
<a name="l104"></a>simple, 64-bit ZealOS </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/RedSea.DD.html#l1"><span class=cF4>RedSea</span></a><span class=cF0> filesystem. The </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/RedSea.DD.html#l1"><span class=cF4>RedSea</span></a><span class=cF0> has allocation bitmap for clusters and all files are stored contiguously.
<a name="l105"></a>You can't grow files.
<a name="l106"></a>
<a name="l107"></a>ZealOS is geared toward reading and writing whole files. There is support for direct block random access into files, however
<a name="l108"></a>-- </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskCFile.CC.html#l151"><span class=cF4>FBlkRead</span></a><span class=cF0>() and </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskCFile.CC.html#l214"><span class=cF4>FBlkWrite</span></a><span class=cF0>().
<a name="l109"></a>
<a name="l110"></a>There is no </span><span class=cF2>PATH</span><span class=cF0>, but parent directories are searched when a file is not found. This feature is especially useful for default
<a name="l111"></a>account files.
<a name="l112"></a>
<a name="l113"></a>ZealOS is for hobbyist programmers on single user (at a time) home computers, not mainframes or servers. The focus task is
<a name="l114"></a>all-important so symmetrical multiprocessing is almost pointless. Why does it matter running two apps at the same time twice
<a name="l115"></a>as fast when you really want to run one faster? You could say ZealOS does master/slave multiprocessing. The anticipated
<a name="l116"></a>use for multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is
<a name="l117"></a>possible. See </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/MultiCore.DD.html#l1"><span class=cF4>ZealOS MultiCore</span></a><span class=cF0>.
<a name="l118"></a>
<a name="l119"></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 task record, </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l3984"><span class=cF4>CTask</span></a><span class=cF0>, pointed to by the </span><span class=cF2>FS</span><span class=cF0>
<a name="l120"></a>segment register and are accessed with </span><span class=cF4>Fs-&gt;</span><span class=cF0> while </span><span class=cF4>Gs-&gt;</span><span class=cF0> points to a </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l4103"><span class=cF4>CCPU</span></a><span class=cF0> for the current CPU core. Each task can have just one
<a name="l121"></a>window, but a task can have children with windows. (The segment registers are just used as extra registers -- there is
<a name="l122"></a>nothing segmented about ZealOS' memory.) It is approximately the case that </span><span class=cF2>ZealOS</span><span class=cF0> is multi-threading, single-processing.
<a name="l123"></a>
<a name="l124"></a>In </span><span class=cF2>ZealOS</span><span class=cF0>, </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Glossary.DD.html#l154"><span class=cF4>System Task</span></a><span class=cF0> refers to the father of all tasks. He's never supposed to die. Since tasks inherit the symbols of
<a name="l125"></a>parents, system-wide stuff is associated with </span><span class=cF2>System</span><span class=cF0>. His heap is like kernel memory in other operating systems. Since </span><span class=cF2>Syste
<a name="l126"></a>m</span><span class=cF0> is immortal, it's safe to alloc objects, not tied to any mortal task, from </span><span class=cF2>System</span><span class=cF0>'s heap. He stays in a server mode, taking
<a name="l127"></a>requests, so you can ask him to </span><span class=cF2>#include</span><span class=cF0> something, placing that code system-wide. A funny story is that originally Terry
<a name="l128"></a>Davis 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> directory :-) </span><span class=cF2>System</span><span class=cF0> executes </span><a href="https://zeal-operating-system.github.io/ZealOS/StartOS.CC.html#l1"><span class=cF4>::/StartOS.CC</span></a><span class=cF0> at boot time.
<a name="l129"></a>
<a name="l130"></a>For easy back-ups, place everything you author in your </span><span class=cF2>/Home</span><span class=cF0> directory and subdirectories. Then, use </span><a href="https://zeal-operating-system.github.io/ZealOS/System/BlkDev/ZDiskA.CC.html#l145"><span class=cF4>CopyTree</span></a><span class=cF0>(). That
<a name="l131"></a>should make upgrading easy, too. Customizable start-up scripts go in your </span><span class=cF2>/Home</span><span class=cF0> directory. The default start-up scripts are
<a name="l132"></a>in the root directory. Copy the start-up files you wish to customize into </span><span class=cF2>/Home</span><span class=cF0> and modify them. See </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/GuideLines.DD.html#l29"><span class=cF4>Home Files</span></a><span class=cF0>. You can
<a name="l133"></a>make your own distro that includes everything and is a bootable live CD with </span><a href="https://zeal-operating-system.github.io/ZealOS/Misc/DoDistro.CC.html#l1"><span class=cF4>::/Misc/DoDistro.CC</span></a><span class=cF0>.
<a name="l134"></a>
<a name="l135"></a>Typically, your usage pattern through the day will be repeatedly left or right clicking on filenames in a cmd line </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskDirB.CC.html#l120"><span class=cF4>Dir</span></a><span class=cF0>()
<a name="l136"></a>listing. You left-click files to edit them and right-click to </span><span class=cF2>#include</span><span class=cF0> them. To begin a project, type </span><a href="https://zeal-operating-system.github.io/ZealOS/System/DolDoc/DocEd.CC.html#l228"><span class=cF4>Ed</span></a><span class=cF0>(&quot;filename&quot;);,
<a name="l137"></a>supplying a filename. You can also run programs with </span><span class=cF2>&lt;F5&gt;</span><span class=cF0> when in the editor. </span><span class=cF2>&lt;ESC&gt;</span><span class=cF0> to save and exit the file. You'll
<a name="l138"></a>need to do a new </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskDirB.CC.html#l120"><span class=cF4>Dir</span></a><span class=cF0>() cmd, periodically, so make a macro on your PersonalMenu. Access your PersonalMenu by pressing </span><span class=cF2>&lt;CTRL-m&gt;</span><span class=cF0>,
<a name="l139"></a>cursoring until you are on top of it and pressing </span><span class=cF2>&lt;SPACE&gt;</span><span class=cF0>.
<a name="l140"></a>
<a name="l141"></a></span><span class=cF2>&lt;CTRL-t&gt;</span><span class=cF0> toggles plain text mode, showing format commands, a little like viewing html code.
<a name="l142"></a></span><span class=cF2>&lt;CTRL-l&gt;</span><span class=cF0> inserts a text widgets.
<a name="l143"></a></span><span class=cF2>&lt;CTRL-r&gt;</span><span class=cF0> inserts or edit a graphic sprite resource at cursor location.
<a name="l144"></a></span><span class=cF2>&lt;CTRL-d&gt;</span><span class=cF0> brings-up the file manager. It's pretty crappy. Terry found he didn't need it very often, believe it or not.
<a name="l145"></a></span><span class=cF2>&lt;CTRL-b&gt;</span><span class=cF0> toggles window border.
<a name="l146"></a>
<a name="l147"></a></span><span class=cF2>&lt;ALT-m&gt;</span><span class=cF0> maximizes a window.
<a name="l148"></a></span><span class=cF2>&lt;ALT-SHIFT-a&gt;</span><span class=cF0> closes AutoComplete.
<a name="l149"></a></span><span class=cF2>&lt;ALT-a&gt;</span><span class=cF0> brings back AutoComplete.
<a name="l150"></a></span><span class=cF2>&lt;ALT-v&gt;</span><span class=cF0> vertically tiles windows.
<a name="l151"></a></span><span class=cF2>&lt;ALT-h&gt;</span><span class=cF0> horizontally tiles windows.
<a name="l152"></a>The </span><span class=cF2>ALT</span><span class=cF0> keys are defined in </span><a href="https://zeal-operating-system.github.io/ZealOS/Home/HomeKeyPlugIns.CC.html#l1"><span class=cF4>~/HomeKeyPlugIns.CC</span></a><span class=cF0>. You can customize them.
<a name="l153"></a>
<a name="l154"></a></span><span class=cF2>&lt;CTRL-ALT-t&gt;</span><span class=cF0> new terminal window.
<a name="l155"></a></span><span class=cF2>&lt;CTRL-ALT-n&gt;</span><span class=cF0> switches to the next window.
<a name="l156"></a></span><span class=cF2>&lt;CTRL-ALT-x&gt;</span><span class=cF0> kills a window.
<a name="l157"></a></span><span class=cF4>
<a name="l158"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/System/Utils/Find.CC.html#l166"><span class=cF4>Find</span></a><span class=cF0>() is your best friend. There's a wrapper function called </span><a href="https://zeal-operating-system.github.io/ZealOS/Home/HomeWrappers.CC.html#l8"><span class=cF4>F</span></a><span class=cF0>() in your </span><span class=cF2>~/HomeWrappers.CC</span><span class=cF0> file. Feel free to make wrapper
<a name="l159"></a>functions for functions you use often and customize the args. By the way, </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Utils/Find.CC.html#l166"><span class=cF4>Find</span></a><span class=cF0>() or </span><a href="https://zeal-operating-system.github.io/ZealOS/Home/HomeWrappers.CC.html#l13"><span class=cF4>R</span></a><span class=cF0>() can be used to replace strings
<a name="l160"></a>across multiple files. You can access </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Utils/Find.CC.html#l166"><span class=cF4>Find</span></a><span class=cF0>() using </span><span class=cF2>&lt;CTRL-SHIFT-f&gt;</span><span class=cF0>.
<a name="l161"></a>
<a name="l162"></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>&lt;CTRL-SHIFT-F1&gt;</span><span class=cF0> (or whatever number) to follow a
<a name="l163"></a>sym to it's source. You can browse deeper and deeper. You go back with </span><span class=cF2>&lt;SHIFT-ESC&gt;</span><span class=cF0>.
<a name="l164"></a>
<a name="l165"></a>Use the </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/HelpIndex.DD.html#l1"><span class=cF4>Help &amp; Index</span></a><span class=cF0> or </span><a href="https://zeal-operating-system.github.io/ZealOS/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>&lt;F1&gt;</span><span class=cF0> for help or use the links on your menu (</span><span class=cF2>&lt;CTRL-m&gt;</span><span class=cF0>). Al
<a name="l166"></a>so, look in the </span><span class=cF2>/Demo</span><span class=cF0> or </span><span class=cF2>/Apps</span><span class=cF0> directories for inspiration.
<a name="l167"></a>
<a name="l168"></a>Software is distributed as </span><a href="https://zeal-operating-system.github.io/ZealOS/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 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.
<a name="l169"></a> Then, access the </span><span class=cF2>'T'</span><span class=cF0> drive. Or, </span><a href="https://zeal-operating-system.github.io/ZealOS/System/BlkDev/Mount.CC.html#l307"><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 ZealOS. It must be a contiguous ISO.C
<a name="l170"></a>file, so rename it under ZealOS to ISO.C.
<a name="l171"></a>
<a name="l172"></a>Ideally, do not install applications such as games onto your hard drive because we wish to keep hard drive usage low, so the
<a name="l173"></a>whole </span><span class=cF2>'C'</span><span class=cF0> drive can be copied quickly to </span><span class=cF2>'D'</span><span class=cF0>. Also, the </span><a href="https://zeal-operating-system.github.io/ZealOS/System/BlkDev/FileMgr.CC.html#l678"><span class=cF4>FileMgr</span></a><span class=cF0>() </span><span class=cF2>&lt;CTRL-d&gt;</span><span class=cF0> starts too slowly when there are lots of hard
<a name="l174"></a>drive files, but that is how we want it.
<a name="l175"></a>
<a name="l176"></a>3rd party libraries are banned, since they circumvent the 100,000 line of code limit in the </span><a href="https://zeal-operating-system.github.io/ZealOS/Doc/Charter.DD.html#l1"><span class=cF4>ZealOS Charter</span></a><span class=cF0>. All applications
<a name="l177"></a>must only depend on the core ZealOS files and whatever they bring along in the ISO. This is similar to how Commodore 64
<a name="l178"></a>applications only depended on the ROM.
<a name="l179"></a></span><span class=cF9>
<a name="l180"></a><u>Take Tour</span><span class=cF0>
<a name="l181"></a>
<a name="l182"></a></span><span class=cF8>
<a name="l183"></a></u>* &quot;Linux&quot; is a trademark owned by Linus Torvalds.
<a name="l184"></a>* &quot;Windows&quot; is a trademark owned by MicroSoft Corp.
<a name="l185"></a>* &quot;Commodore 64&quot; is a trademark owned by Polabe Holding NV.
<a name="l186"></a>* &quot;QEMU&quot; is a trademark owned by Fabrice Bellard.
<a name="l187"></a>* &quot;VMware&quot; is a trademark owned by VMware, Inc.
<a name="l188"></a>* &quot;VirtualBox&quot; is a trademark owned by Oracle.
<a name="l189"></a></span></pre></body>
</html>