mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-28 08:16:31 +00:00
217 lines
28 KiB
HTML
Executable file
217 lines
28 KiB
HTML
Executable file
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
|
|
<meta name="generator" content="ZealOS V0.05">
|
|
<style type="text/css">
|
|
body {background-color:#000000;}
|
|
.cF0{color:#ffffff;background-color:#000000;}
|
|
.cF1{color:#3465a4;background-color:#000000;}
|
|
.cF2{color:#4e9a06;background-color:#000000;}
|
|
.cF3{color:#06989a;background-color:#000000;}
|
|
.cF4{color:#a24444;background-color:#000000;}
|
|
.cF5{color:#75507b;background-color:#000000;}
|
|
.cF6{color:#ce982f;background-color:#000000;}
|
|
.cF7{color:#bcc0b9;background-color:#000000;}
|
|
.cF8{color:#555753;background-color:#000000;}
|
|
.cF9{color:#729fcf;background-color:#000000;}
|
|
.cFA{color:#82bc49;background-color:#000000;}
|
|
.cFB{color:#34e2e2;background-color:#000000;}
|
|
.cFC{color:#ac3535;background-color:#000000;}
|
|
.cFD{color:#ad7fa8;background-color:#000000;}
|
|
.cFE{color:#fce94f;background-color:#000000;}
|
|
.cFF{color:#000000;background-color:#000000;}
|
|
</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://tomawezome.github.io/ZealOS/Doc/Strategy.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 other,
|
|
<a name="l13"></a>similar things which boost speed. It's only 80,849 lines of code including the kernel, the 64-bit compiler, the graphics
|
|
<a name="l14"></a>library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a </span><a href="https://tomawezome.github.io/ZealOS/Doc/HelloWorld.html#l1"><span class=cF4>Hello World</span></a><span class=cF0>
|
|
<a name="l15"></a>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://tomawezome.github.io/ZealOS/Doc/Charter.html#l1"><span class=cF4>ZealOS Charter</span></a><span class=cF0>.
|
|
<a name="l21"></a>
|
|
<a name="l22"></a>Conventional thinking is "failure is not an option" for general purpose operating systems. Since this OS is used in addition to
|
|
<a name="l23"></a>Windows or Linux, however, failure is an option -- just use Windows or Linux if you can't do something. We cherry-pick what it
|
|
<a name="l24"></a>will and won't do, to make it maximally beautiful. The following applications more or less form a basis that spans the range of
|
|
<a name="l25"></a>use that ZealOS is intended for:
|
|
<a name="l26"></a></span><span class=cF4>
|
|
<a name="l27"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/BattleLines.html#l1"><span class=cF4>/Demo/Games/BattleLines.CC</span></a><span class=cF4>
|
|
<a name="l28"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/BigGuns.html#l1"><span class=cF4>/Demo/Games/BigGuns.CC</span></a><span class=cF4>
|
|
<a name="l29"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/BlackDiamond.html#l1"><span class=cF4>/Demo/Games/BlackDiamond.CC</span></a><span class=cF4>
|
|
<a name="l30"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/BomberGolf.html#l1"><span class=cF4>/Demo/Games/BomberGolf.CC</span></a><span class=cF4>
|
|
<a name="l31"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/CastleFrankenstein.html#l1"><span class=cF4>/Demo/Games/CastleFrankenstein.CC</span></a><span class=cF4>
|
|
<a name="l32"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/CharDemo.html#l1"><span class=cF4>/Demo/Games/CharDemo.CC</span></a><span class=cF4>
|
|
<a name="l33"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/CircleTrace.html#l1"><span class=cF4>/Demo/Games/CircleTrace.CC</span></a><span class=cF4>
|
|
<a name="l34"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Collision.html#l1"><span class=cF4>/Demo/Games/Collision.CC</span></a><span class=cF4>
|
|
<a name="l35"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Digits.html#l1"><span class=cF4>/Demo/Games/Digits.CC</span></a><span class=cF4>
|
|
<a name="l36"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/DunGen.html#l1"><span class=cF4>/Demo/Games/DunGen.CC</span></a><span class=cF4>
|
|
<a name="l37"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Talons.html#l1"><span class=cF4>/Demo/Games/Talons.CC</span></a><span class=cF4>
|
|
<a name="l38"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/ElephantWalk.html#l1"><span class=cF4>/Demo/Games/ElephantWalk.CC</span></a><span class=cF4>
|
|
<a name="l39"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/FlapBat.html#l1"><span class=cF4>/Demo/Games/FlapBat.CC</span></a><span class=cF4>
|
|
<a name="l40"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/FlatTops.html#l1"><span class=cF4>/Demo/Games/FlatTops.CC</span></a><span class=cF4>
|
|
<a name="l41"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Halogen.html#l1"><span class=cF4>/Demo/Games/Halogen.CC</span></a><span class=cF4>
|
|
<a name="l42"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/MassSpring.html#l1"><span class=cF4>/Demo/Games/MassSpring.CC</span></a><span class=cF4>
|
|
<a name="l43"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Maze.html#l1"><span class=cF4>/Demo/Games/Maze.CC</span></a><span class=cF4>
|
|
<a name="l44"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/RainDrops.html#l1"><span class=cF4>/Demo/Games/RainDrops.CC</span></a><span class=cF4>
|
|
<a name="l45"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/RawHide.html#l1"><span class=cF4>/Demo/Games/RawHide.CC</span></a><span class=cF4>
|
|
<a name="l46"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Rocket.html#l1"><span class=cF4>/Demo/Games/Rocket.CC</span></a><span class=cF4>
|
|
<a name="l47"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/RocketScience.html#l1"><span class=cF4>/Demo/Games/RocketScience.CC</span></a><span class=cF4>
|
|
<a name="l48"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Squirt.html#l1"><span class=cF4>/Demo/Games/Squirt.CC</span></a><span class=cF4>
|
|
<a name="l49"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/TheDead.html#l1"><span class=cF4>/Demo/Games/TheDead.CC</span></a><span class=cF4>
|
|
<a name="l50"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/TicTacToe.html#l1"><span class=cF4>/Demo/Games/TicTacToe.CC</span></a><span class=cF4>
|
|
<a name="l51"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/TreeCheckers.html#l1"><span class=cF4>/Demo/Games/TreeCheckers.CC</span></a><span class=cF4>
|
|
<a name="l52"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Varoom.html#l1"><span class=cF4>/Demo/Games/Varoom.CC</span></a><span class=cF4>
|
|
<a name="l53"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Wenceslas.html#l1"><span class=cF4>/Demo/Games/Wenceslas.CC</span></a><span class=cF4>
|
|
<a name="l54"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Whap.html#l1"><span class=cF4>/Demo/Games/Whap.CC</span></a><span class=cF4>
|
|
<a name="l55"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/Zing.html#l1"><span class=cF4>/Demo/Games/Zing.CC</span></a><span class=cF4>
|
|
<a name="l56"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Games/ZoneOut.html#l1"><span class=cF4>/Demo/Games/ZoneOut.CC</span></a><span class=cF4>
|
|
<a name="l57"></a></span><a href="https://tomawezome.github.io/ZealOS/Apps/Psalmody/Examples/childish.html#l1"><span class=cF4>/Apps/Psalmody/Examples/childish.CC</span></a><span class=cF4>
|
|
<a name="l58"></a></span><a href="https://tomawezome.github.io/ZealOS/Apps/Psalmody/Examples/night.html#l1"><span class=cF4>/Apps/Psalmody/Examples/night.CC</span></a><span class=cF4>
|
|
<a name="l59"></a></span><a href="https://tomawezome.github.io/ZealOS/Apps/Psalmody/Examples/prosper.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://tomawezome.github.io/ZealOS/Kernel/Memory/MAllocFree.html#l391"><span class=cF4>MAlloc</span></a><span class=cF0>/</span><a href="https://tomawezome.github.io/ZealOS/Kernel/Memory/MAllocFree.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://tomawezome.github.io/ZealOS/Doc/CosmiC.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://tomawezome.github.io/ZealOS/Kernel/Memory/MAllocFree.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://tomawezome.github.io/ZealOS/StartOS.html#l1"><span class=cF4>compiled</span></a><span class=cF0> before you have access to the command line. (Don't worry, booting takes only
|
|
<a name="l69"></a>two seconds.) All the header declarations for the operating system are compiled and are available for use in your programs
|
|
<a name="l70"></a>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> and there
|
|
<a name="l71"></a>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. Inst
|
|
<a name="l74"></a>ead, 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>></span><span class=cF2>Dir("*.*",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>></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>></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://tomawezome.github.io/ZealOS/Kernel/QuickSort.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>&</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://tomawezome.github.io/ZealOS/Doc/CosmiC.html#l1"><span class=cF4>HolyC</span></a><span class=cF0>. Here are
|
|
<a name="l93"></a>the new </span><a href="https://tomawezome.github.io/ZealOS/Doc/CosmiC.html#l209"><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://tomawezome.github.io/ZealOS/Doc/Glossary.html#l178"><span class=cF4>Ahead-of-Time</span></a><span class=cF0> compilation. Instead, you </span><a href="https://tomawezome.github.io/ZealOS/Doc/Glossary.html#l186"><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://tomawezome.github.io/ZealOS/Kernel/Sched.html#l1"><span class=cF4>Scheduler</span></a><span class=cF0>. Polling
|
|
<a name="l100"></a>keeps it simple. It might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of
|
|
<a name="l101"></a>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://tomawezome.github.io/ZealOS/Doc/RedSea.html#l1"><span class=cF4>RedSea</span></a><span class=cF0> filesystem. The </span><a href="https://tomawezome.github.io/ZealOS/Doc/RedSea.html#l1"><span class=cF4>RedSea</span></a><span class=cF0> has allocation bitmap for clus and all files are stored contiguously. You
|
|
<a name="l105"></a>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 -- </span><span class=cF4>
|
|
<a name="l108"></a></span><a href="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskCFile.html#l151"><span class=cF4>FBlkRead</span></a><span class=cF0>() and </span><a href="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskCFile.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 as
|
|
<a name="l115"></a>fast when you really want to run one faster? You could say ZealOS does master/slave multiprocessing. The anticipated use for
|
|
<a name="l116"></a>multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is possible. See </span><span class=cF4>
|
|
<a name="l117"></a></span><a href="https://tomawezome.github.io/ZealOS/Doc/MultiCore.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://tomawezome.github.io/ZealOS/Kernel/KernelA.html#l3939"><span class=cF4>CTask</span></a><span class=cF0>, pointed to by the </span><span class=cF2>FS</span><span class=cF0> segment
|
|
<a name="l120"></a>reg and are accessed with </span><span class=cF4>Fs-></span><span class=cF0> while </span><span class=cF4>Gs-></span><span class=cF0> points to a </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.html#l4058"><span class=cF4>CCPU</span></a><span class=cF0> for the current CPU core. Each task can have just one window, but a
|
|
<a name="l121"></a>task can have children with windows. (The segment regs are just used as extra regs -- there is nothing segmented about ZealOS'
|
|
<a name="l122"></a>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://tomawezome.github.io/ZealOS/Doc/Glossary.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>System</span><span class=cF0>
|
|
<a name="l126"></a>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 Davis
|
|
<a name="l128"></a>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://tomawezome.github.io/ZealOS/StartOS.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://tomawezome.github.io/ZealOS/System/BlkDev/ZDiskA.html#l148"><span class=cF4>CopyTree</span></a><span class=cF0>(). That should
|
|
<a name="l131"></a>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 in the
|
|
<a name="l132"></a>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://tomawezome.github.io/ZealOS/Doc/GuideLines.html#l30"><span class=cF4>Home Files</span></a><span class=cF0>. You can make your
|
|
<a name="l133"></a>own distro that includes everything and is a bootable live CD with </span><a href="https://tomawezome.github.io/ZealOS/Misc/DoDistro.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://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskDirB.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://tomawezome.github.io/ZealOS/System/DolDoc/DocEd.html#l228"><span class=cF4>Ed</span></a><span class=cF0>("filename");,
|
|
<a name="l137"></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><ESC></span><span class=cF0> to save and exit the file. You'll need
|
|
<a name="l138"></a>to do a new </span><a href="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskDirB.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><CTRL-m></span><span class=cF0>,
|
|
<a name="l139"></a>cursoring until you are on top of it and pressing </span><span class=cF2><SPACE></span><span class=cF0>.
|
|
<a name="l140"></a>
|
|
<a name="l141"></a></span><span class=cF2><CTRL-t></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><CTRL-l></span><span class=cF0> inserts a text widgets.
|
|
<a name="l143"></a></span><span class=cF2><CTRL-r></span><span class=cF0> inserts or edit a graphic sprite resource at cursor location.
|
|
<a name="l144"></a></span><span class=cF2><CTRL-d></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><CTRL-b></span><span class=cF0> toggles window border.
|
|
<a name="l146"></a>
|
|
<a name="l147"></a></span><span class=cF2><ALT-m></span><span class=cF0> maximizes a window.
|
|
<a name="l148"></a></span><span class=cF2><ALT-SHIFT-a></span><span class=cF0> closes AutoComplete.
|
|
<a name="l149"></a></span><span class=cF2><ALT-a></span><span class=cF0> brings back AutoComplete.
|
|
<a name="l150"></a></span><span class=cF2><ALT-v></span><span class=cF0> vertically tiles windows.
|
|
<a name="l151"></a></span><span class=cF2><ALT-h></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://tomawezome.github.io/ZealOS/Home/HomeKeyPlugIns.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><CTRL-ALT-t></span><span class=cF0> new terminal window.
|
|
<a name="l155"></a></span><span class=cF2><CTRL-ALT-n></span><span class=cF0> switches to the next window.
|
|
<a name="l156"></a></span><span class=cF2><CTRL-ALT-x></span><span class=cF0> kills a window.
|
|
<a name="l157"></a></span><span class=cF4>
|
|
<a name="l158"></a></span><a href="https://tomawezome.github.io/ZealOS/System/Utils/Find.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://tomawezome.github.io/ZealOS/Home/HomeWrappers.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://tomawezome.github.io/ZealOS/System/Utils/Find.html#l166"><span class=cF4>Find</span></a><span class=cF0>() or </span><a href="https://tomawezome.github.io/ZealOS/Home/HomeWrappers.html#l13"><span class=cF4>R</span></a><span class=cF0>() can be used to replace strings across
|
|
<a name="l160"></a>multiple files. You can access </span><a href="https://tomawezome.github.io/ZealOS/System/Utils/Find.html#l166"><span class=cF4>Find</span></a><span class=cF0>() using </span><span class=cF2><CTRL-SHIFT-f></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><CTRL-SHIFT-F1></span><span class=cF0> (or whatever number) to follow a sym
|
|
<a name="l163"></a>to it's source. You can browse deeper and deeper. You go back with </span><span class=cF2><SHIFT-ESC></span><span class=cF0>.
|
|
<a name="l164"></a>
|
|
<a name="l165"></a>Use the </span><a href="https://tomawezome.github.io/ZealOS/Doc/HelpIndex.html#l1"><span class=cF4>Help & Index</span></a><span class=cF0> or </span><a href="https://tomawezome.github.io/ZealOS/Doc/DemoIndex.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 or use the links on your menu (</span><span class=cF2><CTRL-m></span><span class=cF0>). Also
|
|
<a name="l166"></a>, 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://tomawezome.github.io/ZealOS/Doc/RedSea.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://tomawezome.github.io/ZealOS/System/BlkDev/Mount.html#l235"><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 file,
|
|
<a name="l170"></a>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://tomawezome.github.io/ZealOS/System/BlkDev/FileMgr.html#l678"><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 lots of hard drive
|
|
<a name="l174"></a>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://tomawezome.github.io/ZealOS/Doc/Charter.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>* "Linux" is a trademark owned by Linus Torvalds.
|
|
<a name="l184"></a>* "Windows" is a trademark owned by MicroSoft Corp.
|
|
<a name="l185"></a>* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
|
<a name="l186"></a>* "QEMU" is a trademark owned by Fabrice Bellard.
|
|
<a name="l187"></a>* "VMware" is a trademark owned by VMware, Inc.
|
|
<a name="l188"></a>* "VirtualBox" is a trademark owned by Oracle.
|
|
<a name="l189"></a></span></pre></body>
|
|
</html>
|