Fork ZenithOS --> ZealOS.

This commit is contained in:
TomAwezome 2021-07-01 19:53:42 -04:00
parent e912217325
commit 2743cf6ace
338 changed files with 722 additions and 4226 deletions

View file

@ -1,11 +1,11 @@
![Website](https://img.shields.io/website?down_color=lightgray&down_message=offline&style=flat-square&up_color=green&up_message=online&url=https%3A%2F%2Fzenithos.org)
# ZenithOS
# ZealOS
The Zenith Operating System is a modernized, professional fork of the 64-bit Temple Operating System. Guiding principles of development include transparency, full user control, and adherence to public-domain/open-source implementations.
The Zeal Operating System is a modernized, professional fork of the 64-bit Temple Operating System. Guiding principles of development include transparency, full user control, and adherence to public-domain/open-source implementations.
![](/screenshots/screenshot2.png)
ZenithOS strives to be simple, documented, and require as little of a knowledge gap as possible. One person should be able to comprehend the entire system in at least a semi-detailed way within a few days of study.
ZealOS strives to be simple, documented, and require as little of a knowledge gap as possible. One person should be able to comprehend the entire system in at least a semi-detailed way within a few days of study.
Simplify, don't complicate; make accessible, don't obfuscate.
> The CIA encourages code obfuscation. They make it more complicated than necessary.\
@ -13,11 +13,7 @@ Simplify, don't complicate; make accessible, don't obfuscate.
Features in development include:
- Fully-functional AHCI support
- ~~VBE support~~ 32-bit color VBE graphics
- A new GUI framework in 32-bit color
- CosmicGL renderer
- Compiler optimizations for speed improvements
- SSE2+ instruction support in compiler and assembler
- 32-bit color VBE graphics
- Network card drivers and a networking stack
@ -38,19 +34,21 @@ Changes include:
- For running in a VM: Intel VT-x/AMD-V acceleration enabled in your BIOS settings. (Required to virtualize any 64-bit operating system properly.)
- Working knowledge of the C programming language.
Every commit contains a "Zenith-latest-YYYY-MM-DD-HH_MM_SS.iso" in the root of master, which is a timestamped ISO build of that commit.
Every commit contains a "ZealOS-YYYY-MM-DD-HH_MM_SS.iso" in the root of master, which is a timestamped ISO build of that commit.
This is basically a read-only repository. Everything happens inside the OS, as intended by Terry. After you've installed the latest release in a VM, you can make changes to the source. Once you've made your changes, you can make copies of the relevant files and put them into a folder, along with some kind of notes as to what you've done either as a DolDoc document or in the pull request later. You can then make a RedSea ISO file out of that folder by running `RedSeaISO("MyChanges.ISO", "/Home/Folder");`. Export the contents of the VM hard drive in whatever OS-specific way you have to (there are scripts in the root of the repo), grab the ISO, and send it; a pull request attachment with the zipped ISO would work fine.
## Background
In around November of 2019, [VoidNV](https://github.com/VoidNV) decided to continue Terry's work in a direction that would make it a viable operating system while still keeping the innovative and divine-intellect ideas and design strategies intact.
In around November of 2019, [Z3N1THM4N](https://github.com/Z3N1THM4N) decided to create [ZenithOS](https://github.com/ZenithOS/ZenithOS) to continue Terry's work in a direction that would make it a viable operating system while still keeping the innovative and divine-intellect ideas and design strategies intact.
At first, development occurred exclusively inside a VM and ISOs were occasionally generated as official releases. This was not a good approach, as things broke and there was no way of telling which changes caused what, so it was scrapped and restarted from scratch.\
Releases of the "old" Zenith are currently archived on the `mega.nz` website:
At first, development occurred exclusively inside a VM and ISOs were occasionally generated as official releases. It was scrapped and restarted from scratch.\
Releases of the "old" ZenithOS are currently archived on the `mega.nz` website:
- [Previous Releases](https://mega.nz/#F!ZIEGmSRQ!qvL6Wk6THzE-dazkfT6N3Q)
The repository was removed in August of 2020, and is reuploaded here for preservation and future work. The latest archived [front page](https://web.archive.org/web/20200811190005/https://github.com/VoidNV/ZenithOS/), [master.zip](https://web.archive.org/web/20200811190054/https://codeload.github.com/VoidNV/ZenithOS/zip/master), and [related links](https://web.archive.org/web/*/https://github.com/VoidNV/ZenithOS/*) can be found on archive.org.
The repository was removed in August of 2020, and reuploaded to [ZenithOS](https://github.com/ZenithOS/ZenithOS). The latest archived [front page](https://web.archive.org/web/20200811190005/https://github.com/VoidNV/ZenithOS/), [master.zip](https://web.archive.org/web/20200811190054/https://codeload.github.com/VoidNV/ZenithOS/zip/master), and [related links](https://web.archive.org/web/*/https://github.com/VoidNV/ZenithOS/*) can be found on archive.org.
In July of 2021, ZealOS was forked from ZenithOS.
## Screenshots

Binary file not shown.

8
just_mnt.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
echo "mounting..."
sudo modprobe nbd
sudo qemu-nbd -c dev/nbd0 ~/VirtualBox\ VMs/ZealOS/ZealOS.vdi" #Replace with path to disk
sudo partprobe /dev/nbd0
sudo mount /dev/nbd0p1 /mnt
echo "mounted .vdi"

12
just_umnt.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
echo "unmounting..."
sudo umount /mnt
sudo qemu-nbd -d /dev/nbd0
echo "unmounted .vdi"
echo "not copying/updating ISO."
#echo "set perms, update ISO."
#sudo chown -R $USER:$USER src/*
#rm ZealOS-*
#mv src/Tmp/MyDistro.ISO.C ./ZealOS-$(date +%Y-%m-%d-%H_%M_%S).iso
echo "finished."

17
mnt.sh
View file

@ -1,13 +1,24 @@
#!/bin/bash
echo "mounting..."
sudo modprobe nbd
sudo qemu-nbd -c dev/nbd0 "~/VirtualBox\ VMs/ZenithOS/ZenithOS.vmdk" #Replace with path to disk
sudo qemu-nbd -c dev/nbd0 ~/VirtualBox\ VMs/ZealOS/ZealOS.vdi #Replace with path to disk
sudo partprobe /dev/nbd0
sudo mount /dev/nbd0p1 /mnt
echo "mounted .vdi"
echo "removing src/ files"
rm -rf src/*
echo "copying src/ files from root of mounted .vdi"
sudo cp -r /mnt/* src/
echo "files copied"
echo "unmounting..."
sudo umount /mnt
sudo qemu-nbd -d /dev/nbd0
echo "unmounted .vdi"
echo "set perms, update ISO."
sudo chown -R $USER:$USER src/*
rm Zenith-latest*
mv src/Tmp/MyDistro.ISO.C ./Zenith-latest-$(date +%Y-%m-%d-%H_%M_%S).iso
rm ZealOS-*
mv src/Tmp/MyDistro.ISO.C ./ZealOS-$(date +%Y-%m-%d-%H_%M_%S).iso
echo "finished."
git status

View file

@ -62,7 +62,7 @@ I64 AddTri(BallDefineStruct *, I64 c, I64 n0, I64 n1, I64 n2)
U8 *Ball2CSprite()
{
//See $LK,"::/Zenith/Gr/GrSpritePlot.CC",A="FL:::/Zenith/Gr/GrSpritePlot.CC,1"$ for how CSprite are stored.
//See $LK,"::/System/Gr/GrSpritePlot.CC",A="FL:::/System/Gr/GrSpritePlot.CC,1"$ for how CSprite are stored.
U8 *res = MAlloc(sizeof(CSpriteMeshU8s) +
b->vertex_count * sizeof(CD3I32) +
b->tri_count * sizeof(CMeshTri) + sprite_elem_base_sizes[SPT_END]),

View file

@ -187,7 +187,7 @@ U0 AddBox(ManDefineStruct *md, I64 c,
U8 *Man2CSprite()
{
//See $LK,"::/Zenith/Gr/GrSpritePlot.CC",A="FL:::/Zenith/Gr/GrSpritePlot.CC,1"$ for how CSprite are stored.
//See $LK,"::/System/Gr/GrSpritePlot.CC",A="FL:::/System/Gr/GrSpritePlot.CC,1"$ for how CSprite are stored.
U8 *res = MAlloc(sizeof(CSpriteMeshU8s) +
m->vertex_count * sizeof(CD3I32) + m->tri_count * sizeof(CMeshTri) + sprite_elem_base_sizes[SPT_END]),
*dst = res;

View file

@ -217,8 +217,8 @@ Frame imgs[LAST_STOPPED_DRIBBLING+1] = {
{{$IB,"<22>",BI=22$, $IB,"<23>",BI=23$}, DRIBBLE_T / STOPPED_DRIBBLING_IMGS_NUM},
};
RegDefault("ZenithOS/KeepAway", "I64 best_score0=0,best_score1=9999;\n");
RegExe("ZenithOS/KeepAway");
RegDefault("ZealOS/KeepAway", "I64 best_score0=0,best_score1=9999;\n");
RegExe("ZealOS/KeepAway");
F64 game_t_end, foul_t_end;
I64 score0, score1;
@ -436,7 +436,7 @@ U0 Shoot(Obj *o)
U0 MyNoise(I64 mS, F64 min_ona, F64 max_ona)
{//Make white noise for given number of mS.
// See $LK+PU,"Noise",A="FF:::/Zenith/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
// See $LK+PU,"Noise",A="FF:::/System/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
CSoundEffectFrame *ns;
if (mS > 0)
@ -798,7 +798,7 @@ ka_done: //Don't goto out of try
PutExcept;
SettingsPop;
MenuPop;
RegWrite("ZenithOS/KeepAway", "I64 best_score0=%d,best_score1=%d;\n", best_score0, best_score1);
RegWrite("ZealOS/KeepAway", "I64 best_score0=%d,best_score1=%d;\n", best_score0, best_score1);
}
Êp¨­ÿÿÿûÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ·ÿÿÿûÿÿÿûÿÿÿ·ÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ­ÿÿÿ·ÿÿÿûÿÿÿ·ÿÿÿ
·ÿÿÿûÿÿÿöÿÿÿ·ÿÿÿûÿÿÿ

View file

@ -371,7 +371,7 @@ U0 CleanUp()
U0 MyNoise(I64 mS, F64 min_ona, F64 max_ona)
{//Make white noise for given number of mS.
// See $LK+PU,"Noise",A="FF:::/Zenith/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
// See $LK+PU,"Noise",A="FF:::/System/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
CSoundEffectFrame *ns;
if (mS > 0)

View file

@ -1,5 +1,5 @@
RegDefault("ZenithOS/Titanium","I64 best_score=0;\n");
RegExe("ZenithOS/Titanium");
RegDefault("ZealOS/Titanium","I64 best_score=0;\n");
RegExe("ZealOS/Titanium");
#define MAP_HEIGHT 4096
@ -1069,7 +1069,7 @@ to_done:
PutExcept;
SettingsPop;
MenuPop;
RegWrite("ZenithOS/Titanium", "I64 best_score=%d;\n", best_score);
RegWrite("ZealOS/Titanium", "I64 best_score=%d;\n", best_score);
}
Ró˙˙˙Ď˙˙˙2˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙

View file

@ -156,7 +156,7 @@ The compiler doesn't go out of it's way
to know if something is const.;-) This
just compiles with the val at compile
time, an advantage of just-in-time over
AOT binaries. ZenithOS has a limited
AOT binaries. ZealOS has a limited
stack size, so don't get in the habit.
$LK,"MAlloc",A="MN:MAlloc"$() would probably be the better choice.
*/

View file

@ -1,10 +1,10 @@
#define XMESSAGEF_ANTISPIN 0
#define XMESSAGEF_SOLAR_STORM 1
RegDefault("ZenithOS/XCaliber",
RegDefault("ZealOS/XCaliber",
"I64 best_score=0;\n"
"I64 message_flags=0;\n");
RegExe("ZenithOS/XCaliber");
RegExe("ZealOS/XCaliber");
#define MT_HUMAN_SHIP 0
#define MT_ENEMY_SHIP 1
@ -1029,7 +1029,7 @@ U0 MyDerivative(CMathODE *ode, F64, COrder2D3 *, COrder2D3 *)
U0 MyNoise(I64 mS, F64 min_ona, F64 max_ona)
{//Make white noise for given number of mS.
// See $LK+PU,"Noise",A="FF:::/Zenith/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
// See $LK+PU,"Noise",A="FF:::/System/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
CSoundEffectFrame *ns;
if (mS > 0)
@ -1738,7 +1738,7 @@ U0 XCaliber()
SettingsPop;
CtrlPanelDel(cp);
MenuPop;
RegWrite("ZenithOS/XCaliber",
RegWrite("ZealOS/XCaliber",
"I64 best_score=%d;\n"
"I64 message_flags=%d;\n", best_score, message_flags);
}

View file

@ -225,5 +225,5 @@ U0 AsmHashLoad()
HashAdd(tmpc, cmp.asm_hash);
cmp.internal_types[tmpc->raw_type] = tmpc;
}
zenith_task->hash_table->next = cmp.asm_hash;
sys_task->hash_table->next = cmp.asm_hash;
}

View file

@ -66,7 +66,7 @@ U0 LexPutPos(CCompCtrl *cc)
else
{
PutFileLink(cc->lex_include_stack->full_name,, cc->lex_include_stack->line_num);
ZenithErr("%s,%d\n", cc->lex_include_stack->full_name, cc->lex_include_stack->line_num);
SysErr("%s,%d\n", cc->lex_include_stack->full_name, cc->lex_include_stack->line_num);
'' CH_SPACE;
}
LexPutLine(cc, cc->lex_include_stack->line_start);
@ -84,7 +84,7 @@ U0 LexWarn(CCompCtrl *cc, U8 *str=NULL)
else
{
"$$LK,\"%s\"$$\n", cc->htc.fun->src_link;
ZenithErr("%s\n", cc->htc.fun->src_link);
SysErr("%s\n", cc->htc.fun->src_link);
}
}
else
@ -94,7 +94,7 @@ U0 LexWarn(CCompCtrl *cc, U8 *str=NULL)
U0 LexExcept(CCompCtrl *cc, U8 *str=NULL)
{//Print error message, $LK,"LexPutPos",A="MN:LexPutPos"$() and throw exception.
if (!Bt(&sys_run_level, RLf_ZENITH_SERVER))
if (!Bt(&sys_run_level, RLf_ZEAL_SERVER))
{
Raw(ON);
"Note: Still in boot phase.\n";
@ -102,11 +102,11 @@ U0 LexExcept(CCompCtrl *cc, U8 *str=NULL)
if (str)
PrintErr(str);
if (!IsRaw)
ZenithErr("Task:%08X %s\n", Fs,str);
SysErr("Task:%08X %s\n", Fs,str);
LexPutPos(cc);
cc->error_count++;
FlushMessages;
if (!Bt(&sys_run_level, RLf_ZENITH_SERVER))
if (!Bt(&sys_run_level, RLf_ZEAL_SERVER))
Debug("Type \"Fix;\"");
throw('Compiler');
}

View file

@ -9,7 +9,7 @@
'*'= IEF_STI_LIKE Floating STI-like for UAsm.
'$$'= IEF_ENDING_ZERO Ending zero for ENTER.
$FG,4$Note:$FG$ ZenithOS uses nonstandard opcodes.
$FG,4$Note:$FG$ ZealOS uses nonstandard opcodes.
Asm is kind-of a bonus and I made changes
to make the assembler simpler. For opcodes
which can have different numbers of

View file

@ -843,7 +843,7 @@ I64 ParseUnaryTerm(CCompCtrl *cc, CParseStack *ps, CMemberList **_local_var, CAr
case '(':
if (Lex(cc) == TK_IDENT && cc->hash_entry && cc->hash_entry->type & (HTT_CLASS | HTT_INTERNAL_TYPE))
LexExcept(cc, "Use ZenithOS postfix typecasting at ");
LexExcept(cc, "Use ZealOS postfix typecasting at ");
else
{
if (PREC_TERM > *max_prec)

View file

@ -45,4 +45,4 @@ if (DriveIsWritable(':'))
StartUpTasks;
"\nZenithOS V%5.3f\t%D %T\n\n", sys_os_version, sys_compile_time, sys_compile_time;
"\nZealOS V%5.3f\t%D %T\n\n", sys_os_version, sys_compile_time, sys_compile_time;

View file

@ -3,8 +3,8 @@ Cd(__DIR__);;
//If these are not present in /Home, it uses the version in the root dir. You
//can make your own, modified, version of these files in your /Home directory.
#include "~/HomeLocalize"
#include "/Zenith/Boot/MakeBoot"
#include "/Zenith/Utils/MakeUtils"
#include "/System/Boot/MakeBoot"
#include "/System/Utils/MakeUtils"
#include "~/HomeWrappers"
MapFileLoad("::/Kernel/Kernel");
MapFileLoad("::/Compiler/Compiler");

Binary file not shown.

View file

@ -37,18 +37,18 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $MA-X+PU,"64-Bit Device Memory",LM="F(\"mem64_ptr\");View;"$ is not implemented.
* Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Zenith/Training.CC,Sleep(1)"$.
* Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/System/Training.CC,Sleep(1)"$.
* Add AVL or red/black binary tree library support. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry.
* $LK,"SpriteEd",A="FI:::/Zenith/Gr/SpriteEd.CC"$ shift pts, Ctrl pt for ellipse/polygon w,h is off when rotated.
* $LK,"SpriteEd",A="FI:::/System/Gr/SpriteEd.CC"$ shift pts, Ctrl pt for ellipse/polygon w,h is off when rotated.
* God said this is bad. $LK,"FL:::/Zenith/DolDoc/DocFind.CC,41"$
* God said this is bad. $LK,"FL:::/System/DolDoc/DocFind.CC,41"$
* Backward <SHIFT-F3> is broken?
* $LK,"Find",A="MN:Find"$() search sprite text?
* Cannot include ':' in $LK,"Document Links",A="FF:::/Zenith/DolDoc/DocLink.CC,AD"$ search string.
* Cannot include ':' in $LK,"Document Links",A="FF:::/System/DolDoc/DocLink.CC,AD"$ search string.
* $$DA fixed width string: <Del> or <BACKSPACE> permanently shortens.
* 11/19/16 editor took long time after copying old testament onto clip and exiting.
@ -61,9 +61,9 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $LK,"DOCT_HEX_ED",A="MN:DOCT_HEX_ED"$ with odd size, ASCII cannot be edited.
* $LK,"FL:::/Zenith/Gr/SpriteEd.CC,789"$ Resize bitmap?
* $LK,"FL:::/System/Gr/SpriteEd.CC,789"$ Resize bitmap?
* $LK,"DOCEF_REMALLOC_DATA",A="FF:::/Zenith/DolDoc/DocChar.CC,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc.
* $LK,"DOCEF_REMALLOC_DATA",A="FF:::/System/DolDoc/DocChar.CC,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc.
* $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$.
@ -122,13 +122,13 @@ $FG,5$$TX+CX,"TODO? Meh"$$FG$
* $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() is broken. Devices should be in free spot of E820 report.
* $LK,"SpriteEd",A="FI:::/Zenith/Gr/SpriteEd.CC"$: Strip $LK,"SPT_SHIFT",A="MN:SPT_SHIFT"$ origin cmds?
* $LK,"SpriteEd",A="FI:::/System/Gr/SpriteEd.CC"$: Strip $LK,"SPT_SHIFT",A="MN:SPT_SHIFT"$ origin cmds?
* Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.)
* Compiler: Exceptions don't free $LK,"CCompCtrl",A="MN:CCompCtrl"$ stuff.
* $LK,"::/Zenith/DolDoc/DocHighlight.CC"$ for code comments at top of documents.
* $LK,"::/System/DolDoc/DocHighlight.CC"$ for code comments at top of documents.
* Unhandled exception messages from MP's get overwritten by WinMgr.
@ -145,7 +145,7 @@ $FG,5$$TX+CX,"TODO? Meh"$$FG$
$FG,5$$TX+CX,"TODO: Too Hard, or Not Worth Doing."$$FG$
* AutoComplete/$LK,"Man",A="MN:Man"$() Jmp for user code.
* $LK,"Bible sized nodes",A="FF:::/Zenith/DolDoc/DocRecalc.CC,->tag+i"$
* $LK,"Bible sized nodes",A="FF:::/System/DolDoc/DocRecalc.CC,->tag+i"$
* $LK,"FileMgr",A="MN:FileMgr"$() is bad with lots of files.
@ -171,7 +171,7 @@ $ID,5$$HL,1$U0 Main()
$ID,-5$$HL,0$
* Compiler: Get rid of $LK,"0x20000",A="FF:::/Compiler/CMain.CC,0x20000"$ limit.
* $LK,"GrFloodFillRay",A="MN:GrFloodFillRay"$: Get rid of $LK,"0x80000",A="FF:::/Zenith/Gr/GrPrimatives.CC,0x80000"$ limit.
* $LK,"GrFloodFillRay",A="MN:GrFloodFillRay"$: Get rid of $LK,"0x80000",A="FF:::/System/Gr/GrPrimatives.CC,0x80000"$ limit.
$FG,5$$TX+CX,"Bugs"$$FG$
@ -179,7 +179,7 @@ $FG,5$$TX+CX,"Bugs"$$FG$
* 1/12/16 make RAM drive 2288 blks, $FG,2$CopyTree("C:/Home","B:/Home"); $FG$ Disk runs-out of space and hangs instead of reporting errors.
* Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CC"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on Zenith task at start-up, sometimes. Might be user's fault because of bad keys pressed during VMware power-on init. Might be fixed by $LK,"ACf_INIT_IN_PROGRESS",A="MN:ACf_INIT_IN_PROGRESS"$.
* Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CC"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on System task at start-up, sometimes. Might be user's fault because of bad keys pressed during VMware power-on init. Might be fixed by $LK,"ACf_INIT_IN_PROGRESS",A="MN:ACf_INIT_IN_PROGRESS"$.
* 1/12/16 $LK,"ATARepEntry",A="MN:ATARepEntry"$ shows corrupted bttns. Weird. Perhaps, my imagination.
@ -232,7 +232,7 @@ $ID,-5$
* Race condition in $LK,"::/Demo/Games/FlatTops.CC"$ torpedo.
* Links to self document if empty file name? $LK,"Document Links",A="FF:::/Zenith/DolDoc/DocLink.CC,AD"$
* Links to self document if empty file name? $LK,"Document Links",A="FF:::/System/DolDoc/DocLink.CC,AD"$
* $LK,"FUF_RECURSE",A="MN:FUF_RECURSE"$ would be nice if capital "+R".
@ -259,7 +259,7 @@ $FG,5$$TX+CX,"Committee Needed"$$FG$
* Make so just CdRom; command to copy entire disk to ::/CdRom directory?
* $LK,"MP DepthBuf",A="FF:::/Zenith/Gr/SpriteMesh.CC,dc->depth_buf=e->"$ is a kludge because of dc->depth_buf=NULL in various graphics routines.
* $LK,"MP DepthBuf",A="FF:::/System/Gr/SpriteMesh.CC,dc->depth_buf=e->"$ is a kludge because of dc->depth_buf=NULL in various graphics routines.
* Improve editor undo, add redo.
@ -276,8 +276,8 @@ $FG,5$$TX+CX,"Committee Needed"$$FG$
* $LK,"GrPutChar3",A="MN:GrPutChar3"$() with depth buf?
* Eliminate? $LK,"::/Zenith/Ctrls/CtrlsA.CC"$?
* Eliminate? $LK,"::/Zenith/ZMathODE.CC"$?
* Eliminate? $LK,"::/System/Ctrls/CtrlsA.CC"$?
* Eliminate? $LK,"::/System/ZMathODE.CC"$?
* Eliminate? $LK,"Complex",A="MN:Complex"$?
* Eliminate? $LK,"CDC",A="MN:CDC"$.brush?
* Eliminate? $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$() change to 3x3?
@ -307,7 +307,7 @@ $FG,5$$TX+CX,"Committee Needed"$$FG$
* I use fixed-point in $LK,"Circle",A="MN:Circle"$(), $LK,"Ellipse",A="MN:Ellipse"$(), $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$(), $LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and others. God says I might want to change to float. $LK,"::/Demo/Lectures/FixedPoint.CC"$ $LK,"::/Demo/Lectures/FixedPointAdvanced.CC"$.
* Note: We will never put multiple $LK,"Keyboard Tables",A="FI:::/Kernel/SerialDev/Keyboard.CC"$. Each country must make their own version of ZenithOS. The $LK,"Intel Factory ROM",A="FF:::/Doc/Demands.DD,English"$ will have just English. Our $LK,"Charter",A="FI:::/Doc/Charter.DD"$ bans multiple country or architectures in the same version.
* Note: We will never put multiple $LK,"Keyboard Tables",A="FI:::/Kernel/SerialDev/Keyboard.CC"$. Each country must make their own version of ZealOS. The $LK,"Intel Factory ROM",A="FF:::/Doc/Demands.DD,English"$ will have just English. Our $LK,"Charter",A="FI:::/Doc/Charter.DD"$ bans multiple country or architectures in the same version.
* 12 border chars in screen font codes 0x02-0x0D. $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$() $LK,"::/Demo/Games/CharDemo.CC"$. LineFeed shows-up in $FG,2$<CTRL-m>$FG$ PersonalMenu.
@ -365,14 +365,14 @@ $ID,5$$$=-CTASK_NEG_OFFSET
offset(CTask.addr)==0
Spawn(): CAlloc()
TaskDel(): Free()
CSysFixedArea.Zenith
CSysFixedArea.Zeal
Looks like task_flags,locked_flags cause problems with neg offset.
$ID,-5$
* Make a game, S.E.T.I., with radio telescope array. Put God on air.
$FG,5$$TX+CX,"Test"$$FG$
* $LK,"SpriteBitMap",A="FI:::/Zenith/Gr/SpriteBitMap.CC"$: Grabscroll?
* $LK,"SpriteBitMap",A="FI:::/System/Gr/SpriteBitMap.CC"$: Grabscroll?
* Return ress for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?
* Collision counts for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?

View file

@ -1,4 +1,4 @@
$TR-UL,"Zenith"$
$TR-UL,"Zeal"$
$ID,2$$TR,"SysMessageFlags"$
$ID,2$sys_message_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$
@ -21,7 +21,7 @@ HashPublic("INS_REG_MACHINE_NUM",HTT_DEFINE_STR);
"InsReg:%s:%d\n",INS_REG_PERSONAL_INITIALS,INS_REG_MACHINE_NUM;
#help_index ""
$ID,-2$$ID,-2$$TR-UL,"ZenithOS"$
$ID,-2$$ID,-2$$TR-UL,"ZealOS"$
$ID,2$$TR,"EagleDive"$
$ID,2$F64 best_score=147.6932;
$ID,-2$$TR,"DiningStars"$
@ -64,7 +64,7 @@ progress3_tf=0.000;progress4_tf=113.560;
$ID,-2$$TR,"TempleTetris"$
$ID,2$I64 hiscore=0;
$ID,-2$$ID,-2$$TR,"Once"$
$ID,2$$TR,"Zenith"$
$ID,2$$TR,"Zeal"$
$ID,2$$ID,-2$$TR,"User"$
$ID,2$$ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$$TR,"Game1"$

View file

@ -114,14 +114,14 @@ U0 DebugDistroFilePrep()
Copy("C:/Home/Sup1/Sup1Distro/DebugStartOS.CC", "A:/StartOS.CC");
DirMake("A:/Zenith");
Copy("C:/Home/Sup1/Sup1Distro/DebugMakeZenith.CC", "A:/Zenith/MakeZenith.CC");
Copy("C:/Home/Sup1/Sup1Distro/DebugMount.CC", "A:/Zenith");
Copy("C:/Zenith/AExts.CC", "A:/Zenith");
Copy("C:/Zenith/AMath.CC", "A:/Zenith");
Copy("C:/Zenith/Training.CC", "A:/Zenith");
Copy("C:/Zenith/AMem.CC", "A:/Zenith");
Copy("C:/Zenith/TaskRep.CC", "A:/Zenith");
DirMake("A:/System");
Copy("C:/Home/Sup1/Sup1Distro/DebugMakeSystem.CC", "A:/System/MakeSystem.CC");
Copy("C:/Home/Sup1/Sup1Distro/DebugMount.CC", "A:/System");
Copy("C:/System/AExts.CC", "A:/System");
Copy("C:/System/AMath.CC", "A:/System");
Copy("C:/System/Training.CC", "A:/System");
Copy("C:/System/AMem.CC", "A:/System");
Copy("C:/System/TaskRep.CC", "A:/System");
FileWrite("C:" CONFIG_DEBUG_DISTRO_FILE, bd->RAM_disk, (bd->max_blk + 1) << BLK_SIZE_BITS);
}
@ -146,7 +146,7 @@ U0 MakeStdDistro()
{
StdDistroPrep;
RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZenithOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZealOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024));
Drive('C');
}
@ -168,15 +168,15 @@ U0 LiteDistroPrep()
Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C);
Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C");
Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C");
Del(TOS_DISTRO_DIR "/Zenith/AutoComplete/ACDefs.DATA");
Del(TOS_DISTRO_DIR "/Zenith/AutoComplete/ACWords.DATA");
Del(TOS_DISTRO_DIR "/System/AutoComplete/ACDefs.DATA");
Del(TOS_DISTRO_DIR "/System/AutoComplete/ACWords.DATA");
Del(TOS_DISTRO_DIR "/Misc/Bible.TXT");
}
U0 MakeLiteDistro()
{
LiteDistroPrep;
RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZenithOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZealOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024));
Drive('C');
}
@ -201,7 +201,7 @@ U0 MakeDebugDistro()
{
DebugDistroPrep;
RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOS_DEBUG_SIZE", "Download $TX,"ZenithOS V1.13",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1fMB)",
DefinePrint("DD_TEMPLEOS_DEBUG_SIZE", "Download $TX,"ZealOS V1.13",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1fMB)",
0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024));
Drive('C');
}
@ -224,7 +224,7 @@ U0 MakeStaffDistro()
{
StaffDistroPrep;
RedSeaISO(TOS_ISO_NAME, TOS_DISTRO_DIR, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOS_STAFF_SIZE", "Download $TX,"ZenithOS V1.13",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1fMB)",
DefinePrint("DD_TEMPLEOS_STAFF_SIZE", "Download $TX,"ZealOS V1.13",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1fMB)",
0.1 * (10 * Size(TOS_ISO_NAME, "+s") / 1024 / 1024));
Drive('C');
}
@ -244,11 +244,11 @@ I64 UpdateLineCounts()
DocMax;
DocClear;
res = LineRep("C:/*", "-r") + LineRep("C:/Zenith/*") + LineRep("C:/Compiler/*", "-S+$$") + LineRep("C:/Kernel/*");
res = LineRep("C:/*", "-r") + LineRep("C:/System/*") + LineRep("C:/Compiler/*", "-S+$$") + LineRep("C:/Kernel/*");
CopyTree("B:/TOS/TOS", "C:/Home");
DelTree("B:/TOS/TOS");
DocTreeFWrite("C:/Zenith/ZDefine.CC", "LineRep", "DefinePrint(\"DD_TEMPLEOS_LOC\",\"%,d\");\n", res);
DocTreeFWrite("C:/System/ZDefine.CC", "LineRep", "DefinePrint(\"DD_TEMPLEOS_LOC\",\"%,d\");\n", res);
DefinePrint("DD_TEMPLEOS_LOC", "%,d", res);
"Total LOC:%12,d\n\n", res;
@ -260,7 +260,7 @@ U0 UpdateISODocDefines()
{
try
{
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZenithOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
DefinePrint("DD_TEMPLEOSCD_SIZE", "Download $TX,"ZealOS V1.13",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1 * (10 * Size("D:/Downloads/TOS_Distro.ISO", "+s") / 1024 / 1024));
DefinePrint("DD_TEMPLEOSCD_K_SIZE", "%dKB", Size("D:/Downloads/TOS_Distro.ISO", "+s") / 1024);
}
@ -295,7 +295,7 @@ U0 TOSRegen2()
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
tos_progress = -1;
tos_progress_t0 = tS;
RegExe("ZenithOS/TOSRegen");
RegExe("ZealOS/TOSRegen");
TOSProgress("DiskCheck All");
AutoComplete;
@ -366,7 +366,7 @@ U0 TOSRegen2()
SettingsPop;
"F2(\"/Home\") Count\t:%d\n", slash_home;
"Elapsed Time\t:%5.3fs\n", tS - progress4_t0;
ProgressBarsReset("ZenithOS/TOSRegen");
ProgressBarsReset("ZealOS/TOSRegen");
}
public U0 TOSPreRegen()

View file

@ -55,7 +55,7 @@ I64 AsmAndC1()
//U0 $LK,"Sound",A="MN:Sound"$(I8 ona);
MOV RAX, RCX //ona=loop*10+50
IMUL2 RAX, 10 //ZenithOS uses nonstandard opcodes
IMUL2 RAX, 10 //ZealOS uses nonstandard opcodes
//to avoid multiple form of the same one.
//See $LK,"::/Compiler/OpCodes.DD"$.
ADD RAX, 40

View file

@ -1,6 +1,6 @@
//See $LK,"Define",A="HI:Define"$.
//These might be in the Zenith task.
//These might be in the System task.
DefineLoad("ST_YES_NO", "(Yes or No)");
DefineLoad("ST_EXIT", "Exit");
DefineListLoad("ST_NO_YES_LIST", "No\0Yes\0");

View file

@ -35,7 +35,7 @@ U0 DoIt()
//Flags are explained here:
//$LK,"::/Doc/DolDocOverview.DD"$ $LK,"::/Doc/Widget.DD"$
//$LK,"Dollar Flags",A="MN:DOCEf_TAG"$ $LK,"ST_DOC_FLAGS",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$
//$LK,"Dollar Flags",A="MN:DOCEf_TAG"$ $LK,"ST_DOC_FLAGS",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$
doc_e->tag_cb = &tSCB;
DocPrint(bdoc, "$$FG$$");
DocUnlock(bdoc);

View file

@ -23,7 +23,7 @@ U0 ClickCallBack()
//Flags are explained here:
//$LK,"::/Doc/DolDocOverview.DD"$ $LK,"::/Doc/Widget.DD"$
//$LK,"Dollar Flags",A="MN:DOCEf_TAG"$ $LK,"ST_DOC_FLAGS",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$
//$LK,"Dollar Flags",A="MN:DOCEf_TAG"$ $LK,"ST_DOC_FLAGS",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$
"(Not preserved if you press <CTRL-t>.)\n\n";
doc_e->left_cb = &MyLeftCB1;
DocUnlock(DocPut);

View file

@ -8,7 +8,7 @@
-P Means it is a string var, basically.
,32 sets the tag string width.
See $LK,"Data Tag Width",A="FA:::/Zenith/DolDoc/DocPlain.CC,DataTagWidth"$.
See $LK,"Data Tag Width",A="FA:::/System/DolDoc/DocPlain.CC,DataTagWidth"$.
,RT=I16 means the val is 2 bytes.
See $LK,"DocDataFormat",A="MN:DocDataFormat"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().

View file

@ -34,7 +34,7 @@ public U0 DocProfile(U8 *filename,I64 flags)
"See $$LK,\"CDocEntry\",A=\"MN:CDocEntry\"$$, "
"$$LK,\"Doc Type Defines\",A=\"MN:DOCT_TEXT\"$$ and "
"$$LK,\"Doc Type Codes\","
"A=\"FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_CMDS\"$$.\n"
"A=\"FF:::/System/DolDoc/DocInit.CC,ST_DOC_CMDS\"$$.\n"
"$$FG$$";
for (i = 0; i < DOCT_TYPES_NUM; i++)
if (cmd_stats[i])
@ -54,7 +54,7 @@ public U0 DocProfile(U8 *filename,I64 flags)
"$$GREEN$$\n'$$PURPLE$$doc_e->de_flags$$GREEN$$' is 64-bit. "
"See $$LK,\"Doc Flag Defines\",A=\"MN:DOCEf_TAG\"$$ and "
"$$LK,\"Doc Flag Codes\","
"A=\"FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS\"$$.\n"
"A=\"FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS\"$$.\n"
"$$FG$$";
for (i = 0; i < 64; i++)
if (flags_stats[i])

Binary file not shown.

Binary file not shown.

View file

@ -1,7 +1,7 @@
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CC"$.
RegDefault("ZenithOS/CastleFrankenstein", "F64 best_score=9999;\n");
RegExe("ZenithOS/CastleFrankenstein");
RegDefault("ZealOS/CastleFrankenstein", "F64 best_score=9999;\n");
RegExe("ZealOS/CastleFrankenstein");
//Set snap to 4 and width to 4
//if you edit this map.
@ -660,7 +660,7 @@ fs_done:
SettingsPop;
CleanUp;
MenuPop;
RegWrite("ZenithOS/CastleFrankenstein", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/CastleFrankenstein", "F64 best_score=%5.4f;\n", best_score);
}
CastleFrankenstein;

View file

@ -2,8 +2,8 @@
//Giotto, a famous artist, drew a freehand circle to get a job.
RegDefault("ZenithOS/CircleTrace", "F64 best_score=999;\n");
RegExe("ZenithOS/CircleTrace");
RegDefault("ZealOS/CircleTrace", "F64 best_score=999;\n");
RegExe("ZealOS/CircleTrace");
I64 cx, cy;
F64 avg_error = 0, elapsed_time = 0, total_error = 0, score = 999;
@ -152,7 +152,7 @@ U0 CircleTrace()
SettingsPop;
DCFill;
DCDel(dc);
RegWrite("ZenithOS/CircleTrace", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/CircleTrace", "F64 best_score=%5.4f;\n", best_score);
}
CircleTrace; //Execute when #included

View file

@ -3,7 +3,7 @@
//gives a name to it. Strings like
//this are known as Define entries.
//See $LK,"ST_RAINBOW_10",A="FF:::/Zenith/Gr/GrPalette.CC,ST_RAINBOW_10"$
//See $LK,"ST_RAINBOW_10",A="FF:::/System/Gr/GrPalette.CC,ST_RAINBOW_10"$
U0 PrintDigit(U8 ch)
{

View file

@ -1,5 +1,5 @@
RegDefault("ZenithOS/DunGen", "F64 best_score=9999;\n");
RegExe("ZenithOS/DunGen");
RegDefault("ZealOS/DunGen", "F64 best_score=9999;\n");
RegExe("ZealOS/DunGen");
//Set snap to 4 and width to 4
//if you edit this map.
@ -490,7 +490,7 @@ dg_done:
SettingsPop;
CleanUp;
MenuPop;
RegWrite("ZenithOS/DunGen", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/DunGen", "F64 best_score=%5.4f;\n", best_score);
}
DunGen;

Binary file not shown.

View file

@ -704,7 +704,7 @@ U0 ShipFix(Obj *tmpo, F64 d)
U0 MyNoise(I64 mS, F64 min_ona, F64 max_ona)
{//Make white noise for given number of mS.
// See $LK+PU,"Noise",A="FF:::/Zenith/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
// See $LK+PU,"Noise",A="FF:::/System/ZSound.CC,*Noise("$. On bare-metal, Spawn() hogs CPU.
CSoundEffectFrame *ns;
if (mS > 0)

View file

@ -22,7 +22,7 @@ U0 DrawIt(CTask *task, CDC *)
//We would put these as local vars
//in SolveMaze() but the system stack size
//is limited, so it's a bad habit. The heap
//is the normal ZenithOS technique, but
//is the normal ZealOS technique, but
//it's a pain in this case.
I64 stack_ptr, stack_x [STACK_SIZE],
stack_y [STACK_SIZE],

View file

@ -1,7 +1,7 @@
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CC"$.
RegDefault("ZenithOS/RawHide", "F64 best_score=9999;\n");
RegExe("ZenithOS/RawHide");
RegDefault("ZealOS/RawHide", "F64 best_score=9999;\n");
RegExe("ZealOS/RawHide");
F64 t0, tf;
I64 outside_count;
@ -639,7 +639,7 @@ rh_done:
SettingsPop;
CleanUp;
MenuPop;
RegWrite("ZenithOS/RawHide", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/RawHide", "F64 best_score=%5.4f;\n", best_score);
}
RawHide;

View file

@ -1,7 +1,7 @@
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CC"$.
RegDefault("ZenithOS/Talons", "F64 best_score=9999;\n");
RegExe("ZenithOS/Talons");
RegDefault("ZealOS/Talons", "F64 best_score=9999;\n");
RegExe("ZealOS/Talons");
//Keep these power of two so shift is used instead of multiply
//to index arrays.
@ -1369,7 +1369,7 @@ U0 Talons()
CleanUp;
PostCleanUp;
MenuPop;
RegWrite("ZenithOS/Talons", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/Talons", "F64 best_score=%5.4f;\n", best_score);
}
Talons;

View file

@ -87,8 +87,8 @@
RegDefault("ZenithOS/Varoom", "F64 best_score=9999;\n");
RegExe("ZenithOS/Varoom");
RegDefault("ZealOS/Varoom", "F64 best_score=9999;\n");
RegExe("ZealOS/Varoom");
F64 distance, t0, tf;
Bool game_over;
@ -840,7 +840,7 @@ vr_done: //Don't goto out of try
mp_not_done_flags = 0; // fix for CleanUp hanging on a Yield while loop ...
CleanUp;
MenuPop;
RegWrite("ZenithOS/Varoom", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/Varoom", "F64 best_score=%5.4f;\n", best_score);
}
Varoom;

View file

@ -1,5 +1,5 @@
RegDefault("ZenithOS/Wenceslas", "F64 best_score=9999;\n");
RegExe("ZenithOS/Wenceslas");
RegDefault("ZealOS/Wenceslas", "F64 best_score=9999;\n");
RegExe("ZealOS/Wenceslas");
#define BORDER 5
#define KING_STEP 6
@ -647,7 +647,7 @@ ws_done:
SettingsPop;
CleanUp;
MenuPop;
RegWrite("ZenithOS/Wenceslas", "F64 best_score=%5.4f;\n", best_score);
RegWrite("ZealOS/Wenceslas", "F64 best_score=%5.4f;\n", best_score);
}
Wenceslas;

Binary file not shown.

View file

@ -125,7 +125,7 @@ U0 TreeCommonAncestor()
TreeCommonAncestor;
/*
Be careful with recursive routines in ZenithOS
Be careful with recursive routines in ZealOS
because the stack does not grow and will overflow.
See $LK,"::/Demo/StackGrow.CC"$.

Binary file not shown.

View file

@ -36,7 +36,7 @@ U0 Lighting(CDC *dc, CD3I32 *ls, CD3I32 *poly, I64 color)
//vect and the surface normal
//gives an illumination number.
//ZenithOS will generate a random U16
//ZealOS will generate a random U16
//and compare to dither_probability_u16 and
//will pick from two colors.
//Probability dithering does not work with thick>1 at this time.

View file

@ -9,7 +9,7 @@ See $LK,"::/Demo/Graphics/Slider.CC"$
and $LK,"::/Demo/Graphics/WallPaperFish.CC"$
before messing with this program.
It must be "Zenith Included".
It must be "System Included".
*/
#define SLIDER_RANGE 30
@ -86,9 +86,9 @@ CCtrl *SliderNew()
{
CCtrl *c;
if (Fs != zenith_task)
if (Fs != sys_task)
{
"Must be Zenith Included with SHIFT-F5.\n"
"Must be System Included with SHIFT-F5.\n"
"(Would crash when code mem was freed.)\n";
return NULL;
}

Binary file not shown.

View file

@ -1,5 +1,5 @@
/*
You "Zenith include" this because you want the wallpaper
You "System Include" this because you want the wallpaper
routine to stay in mem even if this task is killed.
*/
@ -48,9 +48,9 @@ U0 WallInit()
{
I64 i;
if (Fs != zenith_task)
if (Fs != sys_task)
{
"\nMust be Zenith Included. (SHIFT-F5 / RightClick->Zenith Include) \n";
"\nMust be System Included. (SHIFT-F5 / RightClick->System Include) \n";
return;
}
old_wall_paper = gr.fp_wall_paper;

View file

@ -54,7 +54,7 @@ $WW,1$$FG,5$$TX+CX,"64-Bit Assembly Quiz"$$FG$
----
ZenithOS identity-maps everything, all the time, so the usual convention of upper memory being for kernel does not apply. It uses physical addresses, basically. It puts all code in the lowest 2-Gig memory range so that it can use the CALL REL32 instruction, the fastest. It never changes privilege levels or messes with page tables, once it is up-and-running.
ZealOS identity-maps everything, all the time, so the usual convention of upper memory being for kernel does not apply. It uses physical addresses, basically. It puts all code in the lowest 2-Gig memory range so that it can use the CALL REL32 instruction, the fastest. It never changes privilege levels or messes with page tables, once it is up-and-running.
----

View file

@ -15,7 +15,7 @@ $ID,2$For this mini compiler, some things you should know about 64-bit asm:
* "PUSH EAX", "POP EAX" and "XOR EAX,EAX" will behave as 64-bit even without REX because the stack is always 64 bit and because the XOR clears the upper 32-bits.
It is okay in ZenithOS to change RAX, RBX, RCX, RDX, R8 and R9 without restoring them to their original values.
It is okay in ZealOS to change RAX, RBX, RCX, RDX, R8 and R9 without restoring them to their original values.
$ID,-2$$WW,0$*/
#define TK_EOF 0

View file

@ -136,10 +136,10 @@ U0 MiniGrLibDemo()
MGUpdate;
Busy(1500000);
/*
We are returning graphics to normal operations under ZenithOS.
It is not normal to by-pass the ZenithOS graphcis routines.
The ZenithOS graphics don't know VGA has changed.
This bit tells ZenithOS to update whole screen.
We are returning graphics to normal operations under ZealOS.
It is not normal to by-pass the ZealOS graphcis routines.
The ZealOS graphics don't know VGA has changed.
This bit tells ZealOS to update whole screen.
*/
//<CTRL-ALT-v> will flush screen VGA cache.
LFBFlush;

View file

@ -1,7 +1,7 @@
/*ZenithOS runs exclusively in ring 0.
/*ZealOS runs exclusively in ring 0.
Ring 0 is part of the $LK,"Charter",A="FI:::/Doc/Charter.DD"$.
This demo is for you to play around
with ring 3. ZenithOS is for
with ring 3. ZealOS is for
recreational programming, after all.
This redirects the general protection

View file

@ -16,7 +16,7 @@ U0 Job2(I64)
{//Log a file
while (!app_done)
{
ZenithLog("%F", "::/Demo/MultiCore/LoadTest.CC");
SysLog("%F", "::/Demo/MultiCore/LoadTest.CC");
Yield;
}
lock {app_done_ack--;}
@ -27,7 +27,7 @@ U0 Job3(I64)
while (!app_done)
{
Cd("::/Compiler");
ZenithLog("%F", "Compiler.PRJ");
SysLog("%F", "Compiler.PRJ");
Yield;
}
lock {app_done_ack--;}

View file

@ -9,4 +9,4 @@ U0 OnceDemo()
OnceDemo;
//There are variants for zenith $LK,"ZOnce",A="MN:ZOnce"$().
//There are variants for zeal $LK,"ZOnce",A="MN:ZOnce"$().

View file

@ -4,7 +4,7 @@ U8 char_map[26]="22233344455566677778889999";
Format of word list entry:
U8 ACD_WORD_CHAR
U8 word[] with terminating zero
I16 block; //definition offset in ::/Zenith/AutoComplete/ACDefs.DATA
I16 block; //definition offset in ::/System/AutoComplete/ACDefs.DATA
*/
U0 PhoneNumWords(U8 *num)
{

View file

@ -1,4 +1,4 @@
//ZenithOS supports standard $LK,"Print",A="MN:Print"$()
//ZealOS supports standard $LK,"Print",A="MN:Print"$()
//codes and extended ones.
//See $LK,"Print(\"\") Format Strings",A="FI:::/Doc/Print.DD"$.

View file

@ -1,6 +1,6 @@
/*The ~/Registry.CC file is CosmiC code.
You can execute a tree branch of it. The Zenith
branch is executed in the Zenith task boot phase.
You can execute a tree branch of it. The Zeal
branch is executed in the System task boot phase.
Normally, you will place var declarations
in the branch you make, but since an arthmetic expression
is valid in CosmiC you can place simple expressions

View file

@ -1,4 +1,4 @@
/*ZenithOS has a feature that allows access to bytes and words of larger ints.
/*ZealOS has a feature that allows access to bytes and words of larger ints.
See $LK,"U64i union",A="FF:::/Kernel/KernelA.HH,U64i union"$.

View file

@ -30,7 +30,7 @@ U8 *SuggestMatchForm(U8 *src)
/*Format of word list entry:
U8 ACD_WORD_CHAR
U8 word[] with terminating zero
I16 block; //definition offset in ::/Zenith/AutoComplete/ACDefs.DATA
I16 block; //definition offset in ::/System/AutoComplete/ACDefs.DATA
*/
Bool SuggestSpelling(U8 *word)
@ -80,7 +80,7 @@ U0 SuggestSpellingDemo()
}
}
//If you "Zenith Include" this file, it will
//If you "System Include" this file, it will
//install this command as a hot-key.
U0 CtrlAltL(I64)
@ -95,12 +95,12 @@ U0 CtrlAltL(I64)
PopUp("if (SuggestSpelling(ac.cur_word)) View;");
}
if (Fs != zenith_task)
if (Fs != sys_task)
SuggestSpellingDemo;
else
{
CtrlAltCBSet('L', &CtrlAltL, "Cmd /Suggest Spelling");
//Appears in the Zenith Task Window
//Appears in the System Task Window
"<CTRL-ALT-l> installed\n";
}

View file

@ -1,11 +1,11 @@
$WW,1$$FG,5$$TX+CX,"The Temple Operating System",HTML="http://www.templeos.org"$$FG,0$
$FG,4$$TX,"ZenithOS File Downloads (100% Public Domain)",HTML="http://www.templeos.org/Downloads"$$FG$
$FG,4$$TX,"ZealOS File Downloads (100% Public Domain)",HTML="http://www.templeos.org/Downloads"$$FG$
ZenithOS is a free, public domain, open source, x86_64, non-preemptive multi-tasking, multi-cored, ring-0-only, single-address-map (identity-mapped), non-networked, PC operating system. Paging is, basically, not used.
ZealOS is a free, public domain, open source, x86_64, non-preemptive multi-tasking, multi-cored, ring-0-only, single-address-map (identity-mapped), non-networked, PC operating system. Paging is, basically, not used.
The CIA obsfucates to foil India, China, Russia and Korea. They make things more complicated than necessary. ZenithOS is more simple than necessary. It is obnoxiously simple. If you look at this $TX,"\"Hello World\" joke",HTML="http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html"$, you can see why I capped the line count of TempleOS at 100,000.
The CIA obsfucates to foil India, China, Russia and Korea. They make things more complicated than necessary. ZealOS is more simple than necessary. It is obnoxiously simple. If you look at this $TX,"\"Hello World\" joke",HTML="http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html"$, you can see why I capped the line count of TempleOS at 100,000.
God said TempleOS must be perfect, so backward compatibility is not promised.
I, Terry Davis, wrote all $TX,"80,849",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the last $TX,"16.5",D="DD_TEMPLEOS_AGE"$ years, including the 64-bit compiler. I have been a professional operating system developer since 1990 when I worked on Ticketmaster's VAX OS.
Terry Davis wrote all $TX,"80,849",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the last $TX,"17.9",D="DD_TEMPLEOS_AGE"$ years, including the 64-bit compiler. He was a professional operating system developer since 1990 when he worked on Ticketmaster's VAX OS.

View file

@ -5,11 +5,11 @@ Notice that an entry like $$TX,"GOOGLE",HTML="http://www.google.com"$$
will be converted to text in the html with an html link.
I cheated by hardcoding $LK,"www.templeos.org",A="FF:::/Demo/ToHtmlToTXTDemo/ToHtml.CC,www.templeos.org"$ as the website
for $LK,"ZenithOS Links",A="MN:LK_FILE"$. Why don't you copy
for $LK,"ZealOS Links",A="MN:LK_FILE"$. Why don't you copy
$LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CC"$ to your /Home directory
and modify it? You are welcome to link to
http://www.templeos.org if you want file that come on the
ZenithOS distribution.
ZealOS distribution.
You can pass html meta data as args to $LK,"ToHtml",A="FF:::/Demo/ToHtmlToTXTDemo/ToHtml.CC,ToHtml"$().
*/

View file

@ -151,7 +151,7 @@ U8 *TOSLinkConvert1(U8 *link_st)
while (LBts(&locks, 0))
Yield;
if (!bible)
bible = Zenith("DocRead(\"%s\");", filename);
bible = Sys("DocRead(\"%s\");", filename);
if (DocFind(bible, num, needle))
res = URLBibleGateway(link_st);
LBtr(&locks, 0);
@ -202,7 +202,7 @@ public CDoc *Doc2Html(CDoc *doc_in, U8 *html_header=NULL, U8 *body_header=NULL,
"<head>\n"
"<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n"
"<meta name=\"generator\" content=\"$TX,"ZenithOS V2.01",D="DD_OS_NAME_VERSION"$\">\n";
"<meta name=\"generator\" content=\"$TX,"ZealOS V2.01",D="DD_OS_NAME_VERSION"$\">\n";
if (!body_header)
body_header =
"<body>\n"

View file

@ -102,7 +102,7 @@ I64 WordsCompare(U8 *e1, U8 *e2)
/*Format of word list entry:
U8 ACD_WORD_CHAR
U8 word[] with terminating zero
I16 block; //definition offset in ::/Zenith/AutoComplete/ACDefs.DATA
I16 block; //definition offset in ::/System/AutoComplete/ACDefs.DATA
*/
U0 DisplayWords(I64 n)

View file

@ -1,4 +1,4 @@
$WW,1$$FG,5$$TX+CX,"ZenithOS"$$FG$
$WW,1$$FG,5$$TX+CX,"ZealOS"$$FG$
$FG,5$Websites:$FG$

View file

@ -16,4 +16,4 @@ $FG,2$<CTRL-1>$FG$ Autocompletes the 1st dictionary word in the window.
$FG,2$<CTRL-2>$FG$ Autocompletes the 2nd dictionary word in the window.
$FG,2$<CTRL-n>$FG$ Autocompletes the n-th dictionary word in the window.
If you have the raw Project Gutenberg dictionary file, you can generate the ZenithOS processed dictionary files with the stand-alone program $LK,"::/Zenith/AutoComplete/ACDictGen.CC"$.
If you have the raw Project Gutenberg dictionary file, you can generate the ZealOS processed dictionary files with the stand-alone program $LK,"::/System/AutoComplete/ACDictGen.CC"$.

View file

@ -4,17 +4,17 @@ There was a technique on the Commodore 64 where disk blocks were chained togethe
The $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system does not allow files to grow because it only has an allocation bitmap and not a FAT table. This "flaw" is by design. I am intentionally crippling this operating system, making it a toy with the wisdom that this will prevent commercialization and corruption. The toy spirit of the operating system will be preserved going into the future. The vision for this operating system was a modern Commodore 64, which was a fun toy.
Doing whole file operations is the ZenithOS way of doing thinks. It is the simplest and, ironically, the fastest. It is obnoxious in the characteristic way that ZenithOS is obnoxious, flaunting massive modern resources in a way that makes old programmers protest.
Doing whole file operations is the ZealOS way of doing thinks. It is the simplest and, ironically, the fastest. It is obnoxious in the characteristic way that ZealOS is obnoxious, flaunting massive modern resources in a way that makes old programmers protest.
When doing large, whole-file operations, immediately memory fragmentation is a serious problem, but not so for allocations in the range under a Meg (with occasional larger ones).
The file compression scheme in ZenithOS only works on whole file operations and the $LK,"DolDoc",A="FI:::/Doc/DolDoc.DD"$ format cannot have text tacked onto the end, since binary data is at the end.
The file compression scheme in ZealOS only works on whole file operations and the $LK,"DolDoc",A="FI:::/Doc/DolDoc.DD"$ format cannot have text tacked onto the end, since binary data is at the end.
I don't want to spoil fun, so of course I offer a way to get awesome performance that is, ironically, superior. $LK,"FBlkRead",A="MN:FBlkRead"$() and $LK,"FBlkWrite",A="MN:FBlkWrite"$() allow you to read a block offset from the start of a file. Since files are all contiguous, this is incredibly efficient. You just have to declare the desired file size when you create it with $LK,"FOpen",A="MN:FOpen"$() and cannot change it. See $LK,"::/Demo/Disk/DataBase.CC"$.
If you like, you are encouraged to to do raw $LK,"BlkRead",A="MN:BlkRead"$() and $LK,"BlkWrite",A="MN:BlkWrite"$() directly on a drive. Just get a pointer to a $LK,"CDrive",A="MN:CDrive"$ with $LK,"Letter2Drive",A="MN:Letter2Drive"$() and you are on your way! Your computer is supposed to be a fun toy! You can make an entire partition used for a database, or invent a file system.
On the whole, the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system with its whole-file-only limitation bring beautiful harmony. It beautifully captures the spirit of ZenithOS with simplicity and, ironic speed, since contiguous is fastest.
On the whole, the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system with its whole-file-only limitation bring beautiful harmony. It beautifully captures the spirit of ZealOS with simplicity and, ironic speed, since contiguous is fastest.
$FG,8$
* "Commodore 64" is a trademark owned by Polabe Holding NV.

Binary file not shown.

View file

@ -1,15 +1,31 @@
$WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$
$IV,1$----07/01/21 19:04:09----$IV,0$
$BK,1$* Forked ZealOS from ZenithOS. Version number 2.01 --> 0.01.$BK,0$
* Update Roadmap.
* Restructured Net/ directories.
* Removed unnecessary files in Home/ directory.
* Renames:
- ZenithOS --> ZealOS
- Zenith Task --> System Task
- $FG,5$Zenith$FG$ --> $FG,5$Sys$FG$
- $FG,5$ZenithErr$FG$ --> $FG,5$SysErr$FG$
- $FG,5$ZenithWarn$FG$ --> $FG,5$SysWarn$FG$
- $FG,5$ZenithLog$FG$ --> $FG,5$SysLog$FG$
- Zenith/ --> System/
$IV,1$----06/28/21 06:20:21----$IV,0$
* Restored /Zenith/God directory, the $LK,"Bible",A="FI:::/Misc/Bible.TXT"$, $LK,"Bible Links",A="BF:Exodus,20:1"$, and $MA-X+PU,"GodBiblePassage",LM="GodBiblePassage;View;\n"$ with SHIFT-F7.
* Restored /System/God directory, the $LK,"Bible",A="FI:::/Misc/Bible.TXT"$, $LK,"Bible Links",A="BF:Exodus,20:1"$, and $MA-X+PU,"GodBiblePassage",LM="GodBiblePassage;View;\n"$ with SHIFT-F7.
$IV,1$----06/24/21 01:01:06----$IV,0$
* Raised version number to ZenithOS 2.1.
* Implemented PCI fall-back functions for when PCIBIOS is unsupported, to improve bare-metal support.
* Abstracted $LK+PU,"PCI functions",A="FI:::/Kernel/PCI.CC"$ out from $LK+PU,"PCIBIOS",A="FI:::/Kernel/PCIBIOS.CC"$ file.
* Raised version number to ZenithOS 2.1.
$IV,1$----06/01/21 16:02:38----$IV,0$
* Overhauled entire OS to use AHCI routines instead of IDE.
$BK,1$* Raised version number to ZenithOS 2.0.$BK,0$
* Overhauled entire OS to use AHCI routines instead of IDE.
$IV,1$----05/24/21 05:08:09----$IV,0$
* Fixed $LK+PU,"Chess",A="FF:::/Demo/Games/Chess.CC,JobQueue"$ crashing when only one CPU core available.
@ -41,10 +57,10 @@ $IV,1$----06/04/20 18:01:46----$IV,0$
* Added $LK,"BIOSRep",A="MN:BIOSRep"$() as convenience function to view BIOS info from $LK,"SysRep",A="MN:SysRep"$().
$IV,1$----04/27/20 15:34:42----$IV,0$
* Changed $LK+PU,"GrBitMap",A="FI:::/Zenith/Gr/GrBitMap.CC"$ to use non-timer rand for drawing speed improvement on multicore.
* Changed $LK+PU,"GrBitMap",A="FI:::/System/Gr/GrBitMap.CC"$ to use non-timer rand for drawing speed improvement on multicore.
$IV,1$----04/21/20 18:54:47----$IV,0$
* Altered $LK+PU,"Tom Palettes",A="FF:::/Zenith/Gr/GrPalette.CC,PaletteSetTom"$ for better visibility.
* Altered $LK+PU,"Tom Palettes",A="FF:::/System/Gr/GrPalette.CC,PaletteSetTom"$ for better visibility.
$IV,1$----04/21/20 16:13:01----$IV,0$
* Added start-up intro $LK+PU,"Splash",A="FI:::/ZSplash.CC"$ as a PopUp in $LK+PU,"Once",A="FF:::/Once.CC,PopUpRunFile"$, after performing a full boot (excludes soft reboots).
@ -78,7 +94,7 @@ $IV,1$----04/04/20 19:15:21----$IV,0$
* Added $LK,"SysRep",A="MN:SysRep"$(). Various $LK,"CSM*Info",A="MN:CSMBIOSBIOSInfo"$ classes added. Pass in a $LK,"SMBIOSt_*",A="MN:SMBIOSt_BIOS"$ to get info for that specific structure type. It parses SMBIOS structures located in low memory. Question-colon operator would have saved many lines of code.
$IV,1$----04/02/20 03:27:03----$IV,0$
* Added camera rotation via mouse in 3D $LK,"SpriteMesh",A="FF:::/Zenith/Gr/SpriteMesh.CC,SpriteMeshEd"$ editor. 360 used as magic number, trying $LK,"VIEWANGLES_RANGE",A="FF:::/Zenith/Ctrls/CtrlsA.CC,VIEWANGLES_RANGE"$ crashed it.
* Added camera rotation via mouse in 3D $LK,"SpriteMesh",A="FF:::/System/Gr/SpriteMesh.CC,SpriteMeshEd"$ editor. 360 used as magic number, trying $LK,"VIEWANGLES_RANGE",A="FF:::/System/Ctrls/CtrlsA.CC,VIEWANGLES_RANGE"$ crashed it.
$IV,1$----04/02/20 01:50:52----$IV,0$
* 'Fixed' $LK,"Varoom",A="FF:::/Demo/Games/Varoom.CC,kbd.down_bitmap"$ window lock up on exit. Brute-forcing zero, but somewhere $LK,"mp_not_done_flags",A="FF:::/Demo/Games/Varoom.CC,mp_not_done_flags"$ isn't getting cleared when shift-esc is entered with the new key implementation.
@ -161,7 +177,7 @@ $IV,1$----02/23/20 02:36:28----$IV,0$
$IV,1$----02/22/20 20:04:00----$IV,0$
* Reduced $LK,"MEM_MIN_MEG",A="MN:MEM_MIN_MEG"$ to 256 MiB (VMWare users have to do less work).
* Added $FG,2$<CTRL-ALT-X>$FG$ to AC $LK,"standby",A="FI:::/Doc/StandBy.DD"$ doc.
* Removed the /Zenith/God directory. Bible.TXT has been removed. The functionality of HolySpirit.CC has been moved into $LK,"::/Zenith/Divination.CC",A="FI:::/Zenith/Divination.CC"$. Functions renamed from God*() to $LK,"Divine*",A="MN:GodWord"$(). Psalmody GodSong feature $LK,"disabled",A="FF:::/Apps/Psalmody/PsalmodyMain.CC,GodSongStr"$. DolDoc "BF:" links removed. CtrlAltB() is free to be used for other things.
* Removed the /System/God directory. Bible.TXT has been removed. The functionality of HolySpirit.CC has been moved into $LK,"::/System/Divination.CC",A="FI:::/System/Divination.CC"$. Functions renamed from God*() to $LK,"Divine*",A="MN:GodWord"$(). Psalmody GodSong feature $LK,"disabled",A="FF:::/Apps/Psalmody/PsalmodyMain.CC,GodSongStr"$. DolDoc "BF:" links removed. CtrlAltB() is free to be used for other things.
* Updated the $LK,"Charter",A="FI:::/Doc/Charter.DD"$.
$IV,1$----02/21/20 17:30:17----$IV,0$
@ -183,7 +199,7 @@ $BK,1$* Zenith 1.0 released.$BK,0$
* Updated $LK,"Palette Demo",A="FI:::/Demo/Graphics/Palette.CC"$ to use current palette environment.
* Shortened $LK,"CheckPtr",A="MN:"$() and $LK,"CheckCodePtr",A="MN:CheckCodePtr"$(). Even though boolean expressions outside of $HL$if$HL,0$ statements are compiled inefficiently, clarity and low line count is more important.
* $LK,"RawDr",A="MN:RawDr"$() is 40 columns off the right of the screen, instead of fixed at column 40.
* Windows start at $LK,"4/5th the screen height",A="FF:::/Kernel/KTask.CC,text.rows"$ instead of row 13. Zenith task window is $LK,"1/5th the screen height",A="FF:::/StartOS.CC,text.rows"$.
* Windows start at $LK,"4/5th the screen height",A="FF:::/Kernel/KTask.CC,text.rows"$ instead of row 13. System task window is $LK,"1/5th the screen height",A="FF:::/StartOS.CC,text.rows"$.
* $LK,"R",A="MN:R"$("RLf_VGA", "$LK,"RLf_VESA",A="MN:RLf_VESA"$");
* Removed VGA text mode support, and all definitions relating to it, including from the $LK,"kernel config",A="FI:::/Kernel/KConfig.CC"$.
* Added $MA-X+PU,"screen resolution selection",LM="F(\"->screen_w\");View;"$ to kernel configuration procedure.
@ -195,16 +211,16 @@ $BK,1$* Zenith 1.0 released.$BK,0$
- Added $FG,2$screen_size$FG$, $FG,2$buffer_size$FG$, $FG,2$fb_alias$FG$ members to $LK,"CTextGlobals",A="MN:CTextGlobals"$.
- $LK,"SysGrInit",A="FF:::/Kernel/KMain.CC,text.screen_size"$() -- using $LK,"Seg2Linear",A="FF:::/Kernel/KMain.CC,Seg2Linear"$() to convert pointers.
- $LK,"raw text drawing routine",A="FF:::/Kernel/Display.CC,text.fb_alias"$ updated. $LK,"BLACK32, WHITE32",A="MN:BLACK32"$.
- Dynamic definition of $LK,"GR_WIDTH and GR_HEIGHT",A="FF:::/Zenith/Gr/GrGlobals.CC,GR_WIDTH:2"$.
- Dynamic definition of $LK,"GR_WIDTH and GR_HEIGHT",A="FF:::/System/Gr/GrGlobals.CC,GR_WIDTH:2"$.
- $LK,"GrUpdateScreen32",A="MN:GrUpdateScreen32"$() -- $LK,"GrCalcScreenUpdates",A="MN:GrCalcScreenUpdates"$() is used to reduce CPU usage. Added $FG,2$screen_cache$FG$ member to $LK,"CGrGlobals",A="MN:CGrGlobals"$.
- $LK,"gr_palette",A="MN:gr_palette"$ global variable. We use $LK,"CBGR24",A="MN:CBGR24"$ in $LK,"GrPalette.CC",A="FI:::/Zenith/Gr/GrPalette.CC"$.
- $LK,"gr_palette",A="MN:gr_palette"$ global variable. We use $LK,"CBGR24",A="MN:CBGR24"$ in $LK,"GrPalette.CC",A="FI:::/System/Gr/GrPalette.CC"$.
* Added $LK,"BinRep",A="MN:BinRep"$() from Sup1 ISO.
* $LK,"R",A="MN:R"$("sys_pci_busses", "$LK,"sys_pci_buses",A="MN:sys_pci_buses"$");
* Renamed RWF flags -> $LK,"RAWF",A="MN:RAWF_IN_DOLLAR"$.
* Renamed mon_start_days1 and mon_start_days2 -> $LK,"month_start_days",A="MN:month_start_days"$ and $LK,"month_start_days_leap",A="MN:month_start_days_leap"$, respectively.
* Moved random number generation algorithm into $LK,"seperate function",A="MN:RandInt"$ to reduce line count. Added $LK,"RandU8",A="MN:RandU8"$().
* Added syntax highlighting for numbers. $LK,"DocHighlight",A="FF:::/Zenith/DolDoc/DocHighlight.CC,DOC_COLOR_NUMBER"$(), $LK,"DOC_COLOR_NUMBER",A="MN:DOC_COLOR_NUMBER"$.
* Added syntax highlighting for numbers. $LK,"DocHighlight",A="FF:::/System/DolDoc/DocHighlight.CC,DOC_COLOR_NUMBER"$(), $LK,"DOC_COLOR_NUMBER",A="MN:DOC_COLOR_NUMBER"$.
* Removed unnecessary checks for the presence of the $LK,"APIC",A="MN:LAPIC_BASE"$ in $LK,"MultiProc.CC",A="FI:::/Kernel/MultiProc.CC"$, as it is present on all x86 CPUs after the P5 microarchitecture.
* Added untested $LK,"ReAlloc",A="MN:ReAlloc"$(), as it could be useful for certain programs.
* Added definitions for the $LK,"PCI registers",A="MN:PCIR_VENDOR_ID"$. Expanded the $LK,"CPCIDev",A="MN:CPCIDev"$ class to contain the values of the read-only registers. Added $LK,"PCIDevFind",A="MN:"$() as a simpler/abstracted alternative to $LK,"PCIClassFind",A="MN:PCIClassFind"$().
@ -232,8 +248,8 @@ $BK,1$* Zenith 1.0 released.$BK,0$
* Added several palettes. See the $LK,"palette setting functions",A="MN:PaletteSetDark"$.
* Added option to format RAMdisks on $LK,"Reboot",A="MN:Reboot"$().
* Removed MemSetU8() as it was just an alias for $LK,"MemSet",A="MN:MemSet"$().
* Moved TaskRep.CC and MemRep.CC from /Zenith to /Zenith/Utils
* Removed /Zenith/Opt directory, moved subdirectories up.
* Moved TaskRep.CC and MemRep.CC from /Zenith to /System/Utils
* Removed /System/Opt directory, moved subdirectories up.
* Disabled blinking MENU.
* Disabled scrolling title in editor.
* One User terminal on startup.

View file

@ -1,17 +1,17 @@
$WW,1$$FG,5$$TX+CX,"Char Overview"$$FG$
A $FG,2$Char$FG$acter is a single byte holding an ASCII code for a letter, num or sym. The $FG,2$ZenithOS$FG$ term is a $FG,2$U8$FG$.
A $FG,2$Char$FG$acter is a single byte holding an ASCII code for a letter, num or sym. The $FG,2$ZealOS$FG$ term is a $FG,2$U8$FG$.
Standard ASCII values range from 0 to 127. Values below 32 are ctrl key's. So, an ASCII #3 is a $FG,2$<CTRL-c>$FG$. ZenithOS uses a couple nonstandard values below 32. See $LK,"Char Definitions",A="MN:CH_CTRLA"$.
Standard ASCII values range from 0 to 127. Values below 32 are ctrl key's. So, an ASCII #3 is a $FG,2$<CTRL-c>$FG$. ZealOS uses a couple nonstandard values below 32. See $LK,"Char Definitions",A="MN:CH_CTRLA"$.
ASCII #5 is the cursor location in a saved file.
ASCII #28 is $FG,2$<SHIFT-ESC>$FG$.
ZenithOS ASCII is 8-bit instead of 7-bit, so it also uses the range from 128-255. Press $FG,2$<CTRL-ALT-a>$FG$ to see shapes for 128-255. Technically, $FG,2$<CTRL-ALT-a>$FG$ are $LK,"screen codes",A="HI:TextBase Layer"$.
ZealOS ASCII is 8-bit instead of 7-bit, so it also uses the range from 128-255. Press $FG,2$<CTRL-ALT-a>$FG$ to see shapes for 128-255. Technically, $FG,2$<CTRL-ALT-a>$FG$ are $LK,"screen codes",A="HI:TextBase Layer"$.
A $FG,2$Key$FG$ is typically specified with a scan code. ZenithOS scan codes contain the key value in the lowest $FG,2$U8$FG$, and flags in the upper 3 bytes. See $LK,"Scan Code Flags",A="MN:SCF_CTRL"$ and $LK,"Scan Codes",A="MN:SC_INS"$.
A $FG,2$Key$FG$ is typically specified with a scan code. ZealOS scan codes contain the key value in the lowest $FG,2$U8$FG$, and flags in the upper 3 bytes. See $LK,"Scan Code Flags",A="MN:SCF_CTRL"$ and $LK,"Scan Codes",A="MN:SC_INS"$.
ZenithOS stores scan codes in 8 bytes.
ZealOS stores scan codes in 8 bytes.
$FG,2$Byte 0$FG$ is the code. NumPad keys, SHIFT, ALT, CTRL and GUI keys combined.
$FG,2$Byte 1-3$FG$ are $LK,"flags",A="MN:SCf_KEY_UP"$

View file

@ -1,4 +1,4 @@
$FG,5$$WW,1$$TX+CX,"ZenithOS Charter"$$FG$
$FG,5$$WW,1$$TX+CX,"ZealOS Charter"$$FG$
* The vision is the same usage model and niche as the Commodore 64 -- a simple machine where programming was the goal, not just a means to an end. However, it is modern, 64-bit and $FG,2$multi-cored$FG$. It is special purpose, not general purpose, so some things it will not do. Also, it's a kayak, not a Titanic. The priority is $FG,2$user developers$FG$, not $FG,2$3rd party developers$FG$.
@ -8,7 +8,7 @@ $FG,5$$WW,1$$TX+CX,"ZenithOS Charter"$$FG$
* There is a limit of 100,000 lines of code for all time, not including applications and demos. Currently, there are $TX,"80,849",D="DD_TEMPLEOS_LOC"$ lines of code. $FG,4$3rd party libraries are banned$FG$ because they circumvent the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API that is the only dependency of applications. Dependency on components and libraries creates a hell that is no longer blissful.
* The metric for resolving all ZenithOS code governance issues is how fast the compiler compiles itself and the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$(). The $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ language should be changed to optimize this metric, as I did when I changed type casting from prefix standard C to postfix $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$, but we need a rule to prevent degenerating into a brainfuck language.
* The metric for resolving all ZealOS code governance issues is how fast the compiler compiles itself and the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$(). The $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ language should be changed to optimize this metric, as I did when I changed type casting from prefix standard C to postfix $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$, but we need a rule to prevent degenerating into a brainfuck language.
* Minimal abstraction is a goal. Sheep are fools. They always respect a design that is more complicated than another. Any genius can make it complicated. Like in physics, it takes a supra-genius to make it simple.
@ -46,4 +46,4 @@ $FG$
$FG,5$$WW,1$$TX+CX,"Possible Amendments"$$FG$
The compiler's parser makes RISC code which it optimizes to CISC. I discovered this does not matter because the CPU converts it back to RISC and schedules it, internally. A ZenithOS zealot with more zeal than I, might say we should save lines-of-code by removing the CISC optimizing.
The compiler's parser makes RISC code which it optimizes to CISC. I discovered this does not matter because the CPU converts it back to RISC and schedules it, internally. A ZealOS zealot with more zeal than I, might say we should save lines-of-code by removing the CISC optimizing.

View file

@ -1,5 +1,5 @@
/* RS232 serial ports no longer exist.
Be sure to Zenith Include this by placing
Be sure to System Include this by placing
it in your start-up scripts.
*/

View file

@ -54,7 +54,7 @@ U0 DemoCosmiC(U8 drive, U8 *format, U8 *name, I64 age)
$FG$$ID,-2$
* When dealing with function addresses such as for callbacks, precede the name with "$FG,2$&$FG$".
* Type casting is postfix. To typecast int or F64, use $LK,"ToI64",A="MN:ToI64"$(), $LK,"ToBool",A="MN:ToBool"$() or $LK,"ToF64",A="MN:ToF64"$(). (ZenithOS follows normal C float<-->int conversion, but sometimes you want to override. These functions are better than multiplying by "1.0" to convert to float.)
* Type casting is postfix. To typecast int or F64, use $LK,"ToI64",A="MN:ToI64"$(), $LK,"ToBool",A="MN:ToBool"$() or $LK,"ToF64",A="MN:ToF64"$(). (ZealOS follows normal C float<-->int conversion, but sometimes you want to override. These functions are better than multiplying by "1.0" to convert to float.)
* There is no $FG,2$main()$FG$ function. Any code outside of functions gets executed upon start-up, in order.
@ -198,7 +198,7 @@ $FG$$ID,-2$
* There is no question-colon operator.
* ZenithOS $LK,"operator precedence",A="FF:::/Compiler/CInit.CC,cmp.binary_ops"$
* ZealOS $LK,"operator precedence",A="FF:::/Compiler/CInit.CC,cmp.binary_ops"$
$FG,2$`$FG$, $FG,2$>>$FG$, $FG,2$<<$FG$
$FG,2$*$FG$, $FG,2$/$FG$, $FG,2$%$FG$
$FG,2$&$FG$

View file

@ -8,7 +8,7 @@ I, $FG,2$Terry A. Davis$FG$, wrote all of TempleOS over the past 15.4 years (ful
*) The LZW compression algorithm, $LK,"::/Kernel/Compress.CC"$, came from a magazine and I implemented it when I worked for Ticketmaster.
*) The adaptive-step-size-Runge-Kutta algorithm, $LK,"::/Zenith/ZMathODE.CC"$, is adapted from the book, $UL,1$Numeric Recipies in C$UL,0$.
*) The adaptive-step-size-Runge-Kutta algorithm, $LK,"::/System/ZMathODE.CC"$, is adapted from the book, $UL,1$Numeric Recipies in C$UL,0$.
*) The mountain in some games is from $FG,4$$TX,"http://www.public-domain-photos.com",HTML="http://www.public-domain-photos.com"$$FG$. The wolf in BlackDiamond is also from there. I took watermarked photos and converted to 16 color.

View file

@ -1 +1 @@
$WW,1$To create a ZenithOS graphic ctrl, you define callback functions and insert a $LK,"CCtrl",A="MN:CCtrl"$ structure in the $LK,"CTask",A="MN:CTask"$ queue. See $LK,"::/Demo/Graphics/Slider.CC"$, $LK,"::/Demo/Graphics/ScrollBars.CC"$ and $LK,"TermBttnNew",A="FF:::/Zenith/WallPaper.CC,TermBttnNew"$. There is a template-code ctrl generator, if you press $FG,2$<CTRL-SHIFT-L>$FG$.
$WW,1$To create a ZealOS graphic ctrl, you define callback functions and insert a $LK,"CCtrl",A="MN:CCtrl"$ structure in the $LK,"CTask",A="MN:CTask"$ queue. See $LK,"::/Demo/Graphics/Slider.CC"$, $LK,"::/Demo/Graphics/ScrollBars.CC"$ and $LK,"TermBttnNew",A="FF:::/System/WallPaper.CC,TermBttnNew"$. There is a template-code ctrl generator, if you press $FG,2$<CTRL-SHIFT-L>$FG$.

View file

@ -1,12 +1,12 @@
$WW,1$$FG,5$$TX+CX,"Cut Corners"$
$FG$
There are a few places where I cut corners in the interest of not junking-up code. This is part of the ZenithOS mentality. I try not to let stupid legacy compatibility issues enter and junk-up ZenithOS.
There are a few places where I cut corners in the interest of not junking-up code. This is part of the ZealOS mentality. I try not to let stupid legacy compatibility issues enter and junk-up ZealOS.
* I made my type-casting operator post-fix because it makes the compiler way cleaner.
* ZenithOS does not figure-out $FG,2$FAT32$FG$ short name alias numbers. $LK,"FAT32DirNew",A="MN:FAT32DirNew"$(). It can cause hard drive corruption, so I might have to do it. It would really take a lot of junky code for this hatefully, detestable, legacy issue. "Please don't make me ruin my beautiful shiny-new ZenithOS with that!" I am also not enthused about $FG,2$FAT32$FG$ because it is in patent limbo. $FG,2$FAT32$FG$ might get removed from ZenithOS. There is the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ 64-bit file system that works perfectly well. $FG,2$FAT32$FG$ is useful, however, because it assists in transferring between dual booted operating systems.
* ZealOS does not figure-out $FG,2$FAT32$FG$ short name alias numbers. $LK,"FAT32DirNew",A="MN:FAT32DirNew"$(). It can cause hard drive corruption, so I might have to do it. It would really take a lot of junky code for this hatefully, detestable, legacy issue. "Please don't make me ruin my beautiful shiny-new ZealOS with that!" I am also not enthused about $FG,2$FAT32$FG$ because it is in patent limbo. $FG,2$FAT32$FG$ might get removed from ZealOS. There is the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ 64-bit file system that works perfectly well. $FG,2$FAT32$FG$ is useful, however, because it assists in transferring between dual booted operating systems.
* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.DD"$ names to remove the ambiguity between insts with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CC"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/Zenith/Boot/BootDVD.CC"$.
* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.DD"$ names to remove the ambiguity between insts with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CC"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/System/Boot/BootDVD.CC"$.
* There are no user-controlled file-sharing locks. However, the drive and file system have locks and concurrent operations should be fine.

View file

@ -1,3 +1,3 @@
$WW,1$ZenithOS has a class for 3 dimensional points consisting of F64s. CosmiC is not C++ -- it does not support passing or returning values from functions which are not 64-bits, therefore, it can't be implemented with operator overloading. Making all function args and returns 64-bit is a core prinicple of ZenithOS.
$WW,1$ZealOS has a class for 3 dimensional points consisting of F64s. CosmiC is not C++ -- it does not support passing or returning values from functions which are not 64-bits, therefore, it can't be implemented with operator overloading. Making all function args and returns 64-bit is a core prinicple of ZealOS.
As a courtesy, most of the CD3 functions return the addr of the destination vect, so you can nestle calls. They do not alloc new space for the destination vect.

View file

@ -8,7 +8,7 @@ $WW,1$$FG,5$$TX+CX,"Debugging Overview"$$FG$
* I use $LK,"progress1",A="MN:progress1"$-$LK,"progress4",A="MN:progress4"$ for debugging because they show on the wallpaper. They're just global int vars.
* You can use $LK,"ZenithLog",A="MN:ZenithLog"$() to send text to the $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$ window. It works like $LK,"Print",A="MN:Print"$(). I never use that. Instead, I use $LK,"RawPrint",A="MN:RawPrint"$().
* You can use $LK,"SysLog",A="MN:SysLog"$() to send text to the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ window. It works like $LK,"Print",A="MN:Print"$(). I never use that. Instead, I use $LK,"RawPrint",A="MN:RawPrint"$().
* $LK,"D",A="MN:D"$(), $LK,"DocD",A="MN:DocD"$(), $LK,"RawD",A="MN:RawD"$() to do 16 column hex dump mem with numbering from zero. With $LK,"DocD",A="MN:DocD"$ the values are updated continually and you can alter mem by editing.

View file

@ -1,9 +1,9 @@
$WW,1$ZenithOS has a string indirection feature implemented with the same hash symbol table entry as $FG,2$#define$FG$ macros, $LK,"HTT_DEFINE_STR",A="MN:HTT_DEFINE_STR"$. Support for string lists is also provided, but it's not very efficient, though, you can make a hash table with a list using $LK,"HashDefineListAdd",A="MN:HashDefineListAdd"$(). See $LK,"::/Zenith/DolDoc/DocInit.CC",A="FF:::/Zenith/DolDoc/DocInit.CC,HashDefineListAdd"$.
$WW,1$ZealOS has a string indirection feature implemented with the same hash symbol table entry as $FG,2$#define$FG$ macros, $LK,"HTT_DEFINE_STR",A="MN:HTT_DEFINE_STR"$. Support for string lists is also provided, but it's not very efficient, though, you can make a hash table with a list using $LK,"HashDefineListAdd",A="MN:HashDefineListAdd"$(). See $LK,"::/System/DolDoc/DocInit.CC",A="FF:::/System/DolDoc/DocInit.CC,HashDefineListAdd"$.
If you have an $FG,2$@$FG$ as the first char of a define list entry, it is an alias for the prev entry num.
Each task can load its own Define strings. Remember, when a $LK,"Hash",A="HI:Hash"$ table is searched for a string, if it is not found, the parent task's table is searched.
The $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ framework supports text that changes based on entries in the task's symbol table. Set a text entry with a $FG,2$D=$FG$ arg, as in $FG,2$$$TX,"",D="DD_MYSTRING"$$$FG$. See $LK,"::/Demo/DolDoc/DefineStr.CC"$, $LK,"::/Zenith/ZDefine.CC"$ and $LK,"::/Doc/MemoryOverview.DD"$.
The $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ framework supports text that changes based on entries in the task's symbol table. Set a text entry with a $FG,2$D=$FG$ arg, as in $FG,2$$$TX,"",D="DD_MYSTRING"$$$FG$. See $LK,"::/Demo/DolDoc/DefineStr.CC"$, $LK,"::/System/ZDefine.CC"$ and $LK,"::/Doc/MemoryOverview.DD"$.
See $LK,"::/Demo/Define.CC"$.

View file

@ -1,17 +1,17 @@
$WW,1$$FG,5$$TX+CX,"Demands"$$FG$
I, Terry Davis, am high priest of God's $FG,4$$TX,"official third temple",HTML="http://www.jewishvirtuallibrary.org/jsource/Judaism/The_Temple.html"$$FG$, ZenithOS. ZenithOS is an operating system for IBM PC x86_64 desktops that will always dual boot along-side Windows or Linux. I am in charge of the core 100,000 lines of ZenithOS code and I do continual offerings to keep God entertained. I have divine authority to command any company in the computer industry to do anything that I deem necessary to make God's temple more beautiful, glorious and perfect. I have oversight authority similar to a building inspector or a person enforcing the Americans with Disability Act -- I make commands, God signs-off with a miraculous authentication from an oracle, and Intel, Microsoft or VMware obeys.
Terry Davis was high priest of God's $FG,4$$TX,"official third temple",HTML="http://www.jewishvirtuallibrary.org/jsource/Judaism/The_Temple.html"$$FG$, TempleOS. ZealOS is an operating system for IBM PC x86_64 desktops that will always dual boot along-side Windows or Linux. I am in charge of the core 100,000 lines of ZealOS code and I do continual offerings to keep God entertained. I have divine authority to command any company in the computer industry to do anything that I deem necessary to make God's temple more beautiful, glorious and perfect. I have oversight authority similar to a building inspector or a person enforcing the Americans with Disability Act -- I make commands, God signs-off with a miraculous authentication from an oracle, and Intel, Microsoft or VMware obeys.
$HC,"<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>"$
* Windows, Linux and VMware (because of mounted drives) must support $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system when mounting partition, so I can get rid of 1,000 lines of redundant, blemished code -- FAT32. God's temple must be perfect. Redundant code for multiple file systems is bad and imperfect. For this operating system, we want low line count. More than one driver for the same type of device is also bad.
See $LK,"::/Kernel/BlkDev/FileSysRedSea.CC"$ and $LK,"::/Zenith/Boot/DiskISORedSea.CC"$.
See $LK,"::/Kernel/BlkDev/FileSysRedSea.CC"$ and $LK,"::/System/Boot/DiskISORedSea.CC"$.
$LK,"::/Kernel/BlkDev/FileSysFAT.CC"$ :974 lines for FAT32 gets eliminated.
$LK,"::/Kernel/BlkDev/DiskClus.CC"$ :152 All the clus operations become blk.
* Microsoft must cancel SecureBoot because it makes dual booting impossible. ZenithOS is an additional operating system that must be used along-side Windows or Linux, not as a replacement. It must dual boot because it has no networking. Real hardware as opposed to VMware is like the difference between looking in a telescope eye piece vs just looking at an off-line image. God said the C64/Apple II generation owned ancestral lands. VMware is like being taken off of our land and moved onto a reservation. In this case, however, it will not stand. In fact, God said to replace Windows with Wine, justice. We can make a 100% standard model PC with a standard software for everyone, backed-up in factory ROM.
* Microsoft must cancel SecureBoot because it makes dual booting impossible. ZealOS is an additional operating system that must be used along-side Windows or Linux, not as a replacement. It must dual boot because it has no networking. Real hardware as opposed to VMware is like the difference between looking in a telescope eye piece vs just looking at an off-line image. God said the C64/Apple II generation owned ancestral lands. VMware is like being taken off of our land and moved onto a reservation. In this case, however, it will not stand. In fact, God said to replace Windows with Wine, justice. We can make a 100% standard model PC with a standard software for everyone, backed-up in factory ROM.
* VMware needs to support ATAPI CD/DVD/Blu-ray disk burning, directly to real hardware. Industry needs write-just once media to stop Farenheit 451 non-sense.
@ -19,7 +19,7 @@ $LK,"::/Kernel/BlkDev/DiskClus.CC"$ :152 All the clus operations become blk.
* VMware some PC speaker's distortion is a good idea -- squarewave -- but currently there is too much for hymns. CIA monkery made fart noises.
* VMware and others must list ZenithOS as an official 64-bit operating system and automatically enforce 512 Meg min RAM requirement.
* VMware and others must list ZealOS as an official 64-bit operating system and automatically enforce 512 Meg min RAM requirement.
* VMware needs to support more than 16 cores. I had a 24 core Xeon with 128 Gig of RAM. I discovered VMware allocates memory too slowly, where QEMU had no problem.
@ -29,26 +29,26 @@ $LK,"/Kernel/PCIBIOS.CC",A="FI:::/Kernel/PCIBIOS.CC"$ :290 could be elimina
* Until super-simple serial ports are available, PS/2 emulated keyboard and mouse must work. The BIOS must enable these. The plan is to transition the industry off of USB. Interum solution is to make virtual RS232 Octart for USB devices in the same way PS/2 mouse is emulated. All mice will be two button, one wheel. No more HID insanity, no more multi-end point, just simple tx rx fifos with soft/hard flowcontrol that can jump the queue. People with special needs can buy PCI cards. Our kids deserve code this simple $LK,"::/Doc/Comm.CC"$. The right to do your own port banging is what the C64 being our God given ancestral land means.
* The x86 IN/OUT port instructions, normally have a delay. Perhaps, VMware & Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't as bad when doing port I/O. See $LK,"IDEATAGetRes",A="MN:IDEATAGetRes"$(). We don't want to do DMA. Perhaps, x86 CPU chips need a new ZenithOS mode for fast IN/OUT instructions? I think VMware already does something to speed disk I/O to faster than native speed.
* The x86 IN/OUT port instructions, normally have a delay. Perhaps, VMware & Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't as bad when doing port I/O. See $LK,"IDEATAGetRes",A="MN:IDEATAGetRes"$(). We don't want to do DMA. Perhaps, x86 CPU chips need a new ZealOS mode for fast IN/OUT instructions? I think VMware already does something to speed disk I/O to faster than native speed.
* Perhaps, a new interrupt descriptor table entry type or a new x86 CPU mode can be made that cause fast software interrupts, doing exactly what the CALL REL32 does, but with IDT as indirection. We don't need to change privilege levels or stacks.
* Since I don't use paging (for anything), Intel should have an option for no-paging long mode, and optimize it!
$LK,"::/Kernel/Memory/PageTables.CC"$ :135 lines to identity-map gets eliminated.
* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting ZenithOS from a ROM when the reset bttn is pressed and booting UEFI when the power bttn is pressed. Or, we could build UEFI on a ZenithOS layer. Intel must burn ZenithOS into a ROM in the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because God deserves the glory. There will be just an English version. A new ROM version is released every seven years. The ROM should boot like the DVD boots, but with $LK,"BOOT_SRC_ROM",A="MN:BOOT_SRC_ROM"$.
* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting ZealOS from a ROM when the reset bttn is pressed and booting UEFI when the power bttn is pressed. Or, we could build UEFI on a ZealOS layer. Intel must burn ZealOS into a ROM in the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because God deserves the glory. There will be just an English version. A new ROM version is released every seven years. The ROM should boot like the DVD boots, but with $LK,"BOOT_SRC_ROM",A="MN:BOOT_SRC_ROM"$.
* We do not want UTF, just 8-bit characters. $FG,2$<CTRL-ALT-f>$FG$ toggles between Cyrillic and Std Fonts. We need the twelve window $LK,"TextBorder",A="MN:TextBorder"$ characters added to the VGA font 0x02-0x0D. Japan, China and Korea must switch to alphabets. Maybe, the United States will change to metric, out of good will. I am beginning to plan fresh ASCII replacement, $LK,"::/Doc/NewASCII.DD"$.
* Microsoft Paint and Linux's Gimp must support ZenithOS $LK,"GR Files",A="FI:::/Doc/GRFiles.DD"$. They are blemish free, unlike $TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$. The TOSZ Linux utility can be used to make screencasts from ZenithOS exported $LK,"GR Files",A="FI:::/Doc/GRFiles.DD"$ and AU Files.
* Microsoft Paint and Linux's Gimp must support ZealOS $LK,"GR Files",A="FI:::/Doc/GRFiles.DD"$. They are blemish free, unlike $TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$. The TOSZ Linux utility can be used to make screencasts from ZealOS exported $LK,"GR Files",A="FI:::/Doc/GRFiles.DD"$ and AU Files.
* We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.CC"$, too.
* Intel needs to make $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ versions of its x86 CPU data sheets documenting all hardware relevant to ZenithOS.
* Intel needs to make $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ versions of its x86 CPU data sheets documenting all hardware relevant to ZealOS.
* We must have the ultimate Bible search engine. Currently, all we have is $TX,"filter search",HTML="https://www.youtube.com/watch?v=ULJU8DzvQFo"$. In the end, it should be a low line-count technique. Maybe, I allocate 500 lines out of the 20,000 reserve.
* We will make a $LK,"Standard ZenithOS PC",A="FI:::/Doc/StdZenithOSPC.DD"$.
* We will make a $LK,"Standard ZealOS PC",A="FI:::/Doc/StdZealOSPC.DD"$.
$FG,8$
* "VMware" is a trademark owned by VMware, Inc.
* "Linux" is a trademark owned by Linus Torvalds.

View file

@ -1,4 +1,4 @@
$FG,5$$TX+CX,"ZenithOS Demo Index"$$FG$
$FG,5$$TX+CX,"ZealOS Demo Index"$$FG$
$WW,1$These are arranged in increasing order of difficulty, more or less. This can be used as a tutorial if you start at the beginning and work your way forward.
@ -27,7 +27,7 @@ $LK,"::/Demo/RandDemo.CC"$
$LK,"::/Demo/KeyBitMap.CC"$
$LK,"::/Demo/Graphics/WinZBuf.CC"$
$LK,"::/Demo/Graphics/Elephant.CC"$
$LK,"::/Demo/Graphics/WallPaperFish.CC"$ //Press SHIFT-F5 to Zenith Include
$LK,"::/Demo/Graphics/WallPaperFish.CC"$ //Press SHIFT-F5 to System Include
$LK,"::/Demo/Games/Digits.CC"$
$LK,"::/Demo/Progress.CC"$ //has some ASM, just ignore
$LK,"::/Demo/Graphics/Symmetry.CC"$
@ -77,7 +77,7 @@ $LK,"::/Demo/MultiCore/Palindrome.CC"$
$LK,"::/Demo/MultiCore/MPAdd.CC"$
$LK,"::/Demo/MultiCore/Lock.CC"$
$LK,"::/Demo/Graphics/Slider.CC"$
$LK,"::/Demo/Graphics/WallPaperCtrl.CC"$ //Press SHIFT-F5 to Zenith Include
$LK,"::/Demo/Graphics/WallPaperCtrl.CC"$ //Press SHIFT-F5 to System Include
$LK,"::/Demo/Graphics/ScrollBars.CC"$
$LK,"::/Demo/RegistryDemo.CC"$
$LK,"::/Demo/Games/FlapBat.CC"$
@ -147,7 +147,7 @@ $MA-X+PU,"::/Apps/TimeClock",LM="Cd(\"::/Apps/TimeClock\");Dir;View;\n"$
$MA-X+PU,"::/Apps/Logic",LM="Cd(\"::/Apps/Logic\");Dir;View;\n"$
$MA-X+PU,"::/Demo/Lectures",LM="Cd(\"::/Demo/Lectures\");Dir;View;\n"$
$MA-X+PU,"::/Apps/Budget",LM="Cd(\"::/Apps/Budget\");Dir;View;\n"$
$ID,-2$$TR,"ZenithOS Specific"$
$ID,-2$$TR,"ZealOS Specific"$
$ID,2$$MA-X+PU,"::/Demo/InFile",LM="Cd(\"::/Demo/InFile\");Dir;View;\n"$
$LK,"::/Demo/Print.CC"$
$LK,"::/Demo/SubIntAccess.CC"$
@ -189,5 +189,5 @@ $LK,"::/Demo/Asm/AsmAndC2.CC"$
$LK,"::/Demo/Asm/AsmAndC3.CC"$
$LK,"::/Demo/GlobalVars.CC"$
$LK,"::/Misc/OSTestSuite.CC"$
$MA-X+PU,"::/Zenith",LM="Cd(\"::/Zenith\");Dir;View;\n"$
$MA-X+PU,"::/System",LM="Cd(\"::/System\");Dir;View;\n"$
$ID,-2$

View file

@ -1,21 +1,21 @@
$WW,1$$FG,5$$TX+CX,"DolDoc Overview"$$FG$
DolDoc is a ZenithOS document type supported by $LK,"DolDoc Routines",A="HI:DolDoc"$. In a document, commands are bracketed with '$FG,2$$$$FG$'s. Use $FG,2$<CTRL-l>$FG$ to experiment inserting a command. Then, use $FG,2$<CTRL-t>$FG$ to toggle to plain text to see it.
DolDoc is a ZealOS document type supported by $LK,"DolDoc Routines",A="HI:DolDoc"$. In a document, commands are bracketed with '$FG,2$$$$FG$'s. Use $FG,2$<CTRL-l>$FG$ to experiment inserting a command. Then, use $FG,2$<CTRL-t>$FG$ to toggle to plain text to see it.
Here is the grammar:
<DolDocCmd> := $FG,2$$$$FG$<$LK,"TwoLetterCmd",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_CMDS"$>[<FlagList>][$FG,2$,$FG$<ArgList>]$FG,2$$$$FG$ | $FG,2$$$$FG$$LK,"ColorName",A="MN:ST_COLORS"$$FG,2$$$$FG$
<DolDocCmd> := $FG,2$$$$FG$<$LK,"TwoLetterCmd",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_CMDS"$>[<FlagList>][$FG,2$,$FG$<ArgList>]$FG,2$$$$FG$ | $FG,2$$$$FG$$LK,"ColorName",A="MN:ST_COLORS"$$FG,2$$$$FG$
<FlagList> := $FG,2$+$FG$|$FG,2$-$FG$ <$LK,"FlagCode",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>[$FG$<FlagList>]
<FlagList> := $FG,2$+$FG$|$FG,2$-$FG$ <$LK,"FlagCode",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>[$FG$<FlagList>]
<ArgList> := <$LK,"ArgCode",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>$FG,2$=$FG$<ArgExpression>[$FG,2$,$FG$<ArgList>]
<ArgList> := <$LK,"ArgCode",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>$FG,2$=$FG$<ArgExpression>[$FG,2$,$FG$<ArgList>]
The format of DolDoc cmds is a two character code, +/-flags, a comma and args separated by commas. Some commands have mandatory args. Optional args are indicated with <$LK,"ArgCode",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>$FG,2$=$FG$. A $LK,"ColorName",A="MN:ST_COLORS"$ bracked by dollars, will change the foreground color.
The format of DolDoc cmds is a two character code, +/-flags, a comma and args separated by commas. Some commands have mandatory args. Optional args are indicated with <$LK,"ArgCode",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$>$FG,2$=$FG$. A $LK,"ColorName",A="MN:ST_COLORS"$ bracked by dollars, will change the foreground color.
See $LK,"::/Doc/Widget.DD"$, $LK,"::/Demo/DolDoc/DemoDoc.DD"$, and $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CC"$.
<$LK,"TwoLetterCmd",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_CMDS"$> See $LK,"Type Defines",A="MN:DOCT_TEXT"$ and $LK,"ParseDollarCmd",A="MN:ParseDollarCmd"$().
<$LK,"TwoLetterCmd",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_CMDS"$> See $LK,"Type Defines",A="MN:DOCT_TEXT"$ and $LK,"ParseDollarCmd",A="MN:ParseDollarCmd"$().
$TR,"TX Text"$
$ID,2$Normally, text is not bracketed with '$FG,2$$$$FG$', but if you wish to specify flag attr, such as centering text, you can bracket them with '$FG,2$$$$FG$' and enter flags such as "$FG,2$+CX$FG$". You can't edit them normally if they are bracketed by '$FG,2$$$$FG$' unless you toggle to plain text mode with $FG,2$<CTRL-t>$FG$.
$ID,-2$$TR,"CR Hard New Line"$
@ -122,9 +122,9 @@ Examples: <CTRL-t> to see
$ID,-2$$TR,"BT Bttn"$
$ID,2$See $LK,"::/Demo/DolDoc/MenuBttn.CC"$.
$ID,-2$$TR,"DA Data"$
$ID,2$Used for forms that prompt for data or just displaying a value. Use $FG,2$<CTRL-l>$FG$ to help you generate the DolDoc command text you need in your $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's $FG,2$format$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CC"$, $LK,"::/Demo/Disk/DataBase.CC"$, and $LK,"::/Zenith/DolDoc/DocWidgetWiz.CC"$.
$ID,2$Used for forms that prompt for data or just displaying a value. Use $FG,2$<CTRL-l>$FG$ to help you generate the DolDoc command text you need in your $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's $FG,2$format$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CC"$, $LK,"::/Demo/Disk/DataBase.CC"$, and $LK,"::/System/DolDoc/DocWidgetWiz.CC"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$DA...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr. See $LK,"task_title",A="FF:::/Zenith/DolDoc/DocEd.CC,&Fs->task_title"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$DA...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr. See $LK,"task_title",A="FF:::/System/DolDoc/DocEd.CC,&Fs->task_title"$.
The default raw data type for the $FG,2$$$DA...$$$FG$ command is $FG,2$RT=I64$FG$. $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's definition if you leave it set to the default. Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$. See $LK,"DocDataFormat",A="MN:DocDataFormat"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
@ -132,17 +132,17 @@ The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the
The default field length is $FG,2$LEN=64$FG$ characters. For U8 arrays[], $LK,"DocForm",A="MN:DocForm"$() will automatically reset the field length to the string length from the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's definition. The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/Zenith/DolDoc/DocPlain.CC,DataTagWidth"$.
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/System/DolDoc/DocPlain.CC,DataTagWidth"$.
$ID,-2$$TR,"CB Check Box"$
$ID,2$Used for forms. Use $FG,2$<CTRL-l>$FG$ to help you generate the DolDoc command text you need in your $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's $FG,2$format$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CC"$$FG$ and $LK,"CEdFindText",A="MN:CEdFindText"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$CB...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr. See $LK,"task_title",A="FF:::/Zenith/DolDoc/DocEd.CC,&Fs->task_title"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$CB...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr. See $LK,"task_title",A="FF:::/System/DolDoc/DocEd.CC,&Fs->task_title"$.
The default raw data type for the $FG,2$$$CB...$$$FG$ command is $FG,2$RT=I8$FG$ which is $FG,2$Bool$FG$. $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's definition if you leave it set to the default. Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$. See $LK,"DocDataFormat",A="MN:DocDataFormat"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
$ID,-2$$TR,"LS List Widget"$
$ID,2$Used for forms that prompt for data. You must specify a define list, $FG,2$D=""$FG$. Use $FG,2$<CTRL-l>$FG$ to help you generate the DolDoc command text you need in your $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's $FG,2$format$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CC"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$LS...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the data addr. See $LK,"task_title",A="FF:::/Zenith/DolDoc/DocEd.CC,&Fs->task_title"$.
If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$LS...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the data addr. See $LK,"task_title",A="FF:::/System/DolDoc/DocEd.CC,&Fs->task_title"$.
The default raw data type for the $FG,2$$$LS...$$$FG$ command is $FG,2$RT=I64$FG$. $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's definition if you leave it set to the default. Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$. See $LK,"DocDataFormat",A="MN:DocDataFormat"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
$ID,-2$$TR,"MA Macro"$
@ -187,7 +187,7 @@ $ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CC"$ to generate a html version of
$ID,-2$$TR,"ER Error"$
$ID,2$When errors are detected in DolDoc cmds, an $FG,2$ER$FG$ entry is generated.
$ID,-2$
<$LK,"FlagCode",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$> See $LK,"Flag Defines",A="MN:DOCEf_LEFT_CB"$ and $LK,"Simple Flags",A="FI:::/Doc/Widget.DD"$.
<$LK,"FlagCode",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$> See $LK,"Flag Defines",A="MN:DOCEf_LEFT_CB"$ and $LK,"Simple Flags",A="FI:::/Doc/Widget.DD"$.
$TR,"+H Hold"$
$ID,2$Causes not to delete this cmd when cleared with $FG,2$CL$FG$ or when the doc->max_entries is exceeded. Word wrap is a good to hold. There is no way to delete these entries, at this point.
$ID,-2$$TR,"+L Link"$
@ -219,19 +219,19 @@ $ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.CC"$.
$ID,-2$$TR,"+RC Right CallBack"$
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.CC"$.
$ID,-2$
<$LK,"ArgCode",A="FF:::/Zenith/DolDoc/DocInit.CC,ST_DOC_FLAGS"$> See $LK,"Arg Defines",A="MN:DOCEf_TAG"$.
<$LK,"ArgCode",A="FF:::/System/DolDoc/DocInit.CC,ST_DOC_FLAGS"$> See $LK,"Arg Defines",A="MN:DOCEf_TAG"$.
$TR,"T=\"\" Tag Str"$
$ID,2$Some cmds have a tag by default. See $LK,"TX+T",A="FF:::/Zenith/DolDoc/DocInit.CC,TX+T"$. You can code $FG,2$T="tag_text"$FG$ as just $FG,2$"tag_text"$FG$ with no $FG,2$T=$FG$.
$ID,2$Some cmds have a tag by default. See $LK,"TX+T",A="FF:::/System/DolDoc/DocInit.CC,TX+T"$. You can code $FG,2$T="tag_text"$FG$ as just $FG,2$"tag_text"$FG$ with no $FG,2$T=$FG$.
$ID,-2$$TR,"LEN=\"\" Field Length"$
$ID,2$The default field length for $FG,2$$$DA...$$$FG$ commands is $FG,2$LEN=64$FG$ characters. For U8 arrays[], $LK,"DocForm",A="MN:DocForm"$() will automatically reset the field length to the string length from the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ $FG,2$class$FG$ member's definition. The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/Zenith/DolDoc/DocPlain.CC,DataTagWidth"$.
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/System/DolDoc/DocPlain.CC,DataTagWidth"$.
$ID,-2$$TR,"A=\"\" Auxilliary Str"$
$ID,2$Some cmds need auxilliary strings. $FG,2$A="str"$FG$ means an $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str is present. aux_str is used for song note text, link text, anchor text, and $FG,2$$$DA...$$$FG$ format string text.
$ID,-2$$TR,"D=\"\" Define Str"$
$ID,2$A $FG,2$D=""$FG$ means either a $LK,"define",A="HI:Define"$ str indirection is present on a text widget, or a define list is present on a list widget.
For indirection, the tag will be regenerated by substituting the value of a system $FG,2$#define$FG$ or $LK,"DefineLoad",A="MN:DefineLoad"$() string. See $LK,"::/Demo/DolDoc/DefineStr.CC"$, $LK,"::/Zenith/ZDefine.CC"$ and $LK,"::/Doc/MemoryOverview.DD"$.
For indirection, the tag will be regenerated by substituting the value of a system $FG,2$#define$FG$ or $LK,"DefineLoad",A="MN:DefineLoad"$() string. See $LK,"::/Demo/DolDoc/DefineStr.CC"$, $LK,"::/System/ZDefine.CC"$ and $LK,"::/Doc/MemoryOverview.DD"$.
For $FG,2$LS$FG$ widgets, see $LK,"::/Demo/DolDoc/Form.CC"$.
$ID,-2$$TR,"HTML=\"\""$

View file

@ -55,7 +55,7 @@ Program
{
CodeTools(,CH_CTRLL,0x62600000626);
Include(,0,0x3F0000003F);
ZenithInclude(,0,0x23F0000023F);
ZealInclude(,0,0x23F0000023F);
}
View

View file

@ -1,27 +1,27 @@
$WW,1$$FG,5$$TX+CX,"Frequently Asked Queuestions"$$FG$
$TR,"How come it is public domain, not GPL?"$
$ID,2$I, $FG,2$Terry A. Davis$FG$, wrote all of ZenithOS over the past $TX,"13.8",D="DD_TEMPLEOS_AGE"$ years (full-time). It can run on some bare metal 64-bit PC's from about 2005-2010 with no layering, libraries, tools, modules or anything from other sources. Otherwise, you run it in a virtual machine, like $FG,2$VMware$FG$, $FG,2$QEMU$FG$ or $FG,2$VirtualBox$FG$. It is independent and stands alone. It has no networking, so it certainly doesn't call home. 100% of the src code is including on all distro's, from the kernel to the compiler to the boot loaders! See $LK,"::/Doc/Credits.DD"$.
$ID,-2$$TR,"Shouldn't it be GNU/ZenithOS?"$
$ID,2$ZenithOS executes no code not written by me at any time except for a few $FG,2$BIOS$FG$ calls for configuration. I even wrote boot-loaders, so I do not need Grub. See $LK,"::/Doc/Credits.DD"$.
$ID,2$I, $FG,2$Terry A. Davis$FG$, wrote all of ZealOS over the past $TX,"13.8",D="DD_TEMPLEOS_AGE"$ years (full-time). It can run on some bare metal 64-bit PC's from about 2005-2010 with no layering, libraries, tools, modules or anything from other sources. Otherwise, you run it in a virtual machine, like $FG,2$VMware$FG$, $FG,2$QEMU$FG$ or $FG,2$VirtualBox$FG$. It is independent and stands alone. It has no networking, so it certainly doesn't call home. 100% of the src code is including on all distro's, from the kernel to the compiler to the boot loaders! See $LK,"::/Doc/Credits.DD"$.
$ID,-2$$TR,"Shouldn't it be GNU/ZealOS?"$
$ID,2$ZealOS executes no code not written by me at any time except for a few $FG,2$BIOS$FG$ calls for configuration. I even wrote boot-loaders, so I do not need Grub. See $LK,"::/Doc/Credits.DD"$.
$ID,-2$$TR,"Don't you use GNU's gcc?"$
$ID,2$ZenithOS was written from scratch, starting with $FG,2$TASM$FG$ long ago, launching from real-mode DOS. Now, there is no $FG,2$Linux$FG$ or $FG,2$GNU$FG$ or any other code in ZenithOS. Yes, I wrote the compiler from scratch. See $LK,"::/Doc/Credits.DD"$.
$ID,2$ZealOS was written from scratch, starting with $FG,2$TASM$FG$ long ago, launching from real-mode DOS. Now, there is no $FG,2$Linux$FG$ or $FG,2$GNU$FG$ or any other code in ZealOS. Yes, I wrote the compiler from scratch. See $LK,"::/Doc/Credits.DD"$.
$ID,-2$$TR,"Why do you dual boot?"$
$ID,2$ZenithOS is 100% independent -- it does not access the files of your primary operating system and ZenithOS will work as the only operating system on your computer, but it has no networking. In your off hours, you will use your other operating system.
$ID,2$ZealOS is 100% independent -- it does not access the files of your primary operating system and ZealOS will work as the only operating system on your computer, but it has no networking. In your off hours, you will use your other operating system.
$ID,-2$$TR,"It has links, so is it a browser?"$
$ID,2$ZenithOS is an operating system, not a browser. $LK,"ZenithOS links",A="MN:LK_FILE"$ are a special format and only link too local files and symbol source addresses.
$ID,2$ZealOS is an operating system, not a browser. $LK,"ZealOS links",A="MN:LK_FILE"$ are a special format and only link too local files and symbol source addresses.
$ID,-2$$TR,"Where are the animated 3D icon GIFs?"$
$ID,2$3D $LK,"Sprites",A="FI:::/Doc/Sprite.DD"$ are stored as a mesh of triangles. There are no GIF files. It $LK,"rotates",A="MN:Mat4x4MulXYZ"$ 3D sprite objects on the fly.
$ID,-2$$TR,"If the compiler is JIT, isn't it an interpretor?"$
$ID,2$ZenithOS compiles, doesn't $FG,2$interpret$FG$, and uses no $FG,2$byte code$FG$ anywhere. I loosely use the word $FG,2$script$FG$ sometimes, but it's actually compiled. The compiler's $LK,"optimization",A="MN:OptPass012"$ code is actually where the compiler evaluates constants to simplify them, like every optimizing compiler.
$ID,2$ZealOS compiles, doesn't $FG,2$interpret$FG$, and uses no $FG,2$byte code$FG$ anywhere. I loosely use the word $FG,2$script$FG$ sometimes, but it's actually compiled. The compiler's $LK,"optimization",A="MN:OptPass012"$ code is actually where the compiler evaluates constants to simplify them, like every optimizing compiler.
$ID,-2$$TR,"Are you a Creationist?"$
$ID,2$I am an evolutionist. $FG,2$Zenith$FG$ is a better term for the first father of all tasks than $FG,2$root$FG$ was!
$ID,2$I am an evolutionist. $FG,2$Zeal$FG$ is a better term for the first father of all tasks than $FG,2$root$FG$ was!
$ID,-2$$TR,"Is 'Bt()' in the code Bit Torrent?"$
$ID,2$$LK,"Bt",A="MN:Bt"$() is $FG,2$bit test$FG$, like the $FG,2$x86$FG$ inst, not $FG,2$bit torrent$FG$.
$ID,-2$$TR,"Is 'Fs->' in the code file system?"$
$ID,2$$LK,"Fs",A="MN:Fs"$ is a segment reg, not $FG,2$file system$FG$. ($LK,"Fs",A="MN:Fs"$ is kept pointing to the current task's record.) There is no memory segmentation. It is 64-bit and flat. FS and GS are used as general purpose regs, more or less.
$ID,-2$$TR,"Is it Pascal?"$
$ID,2$ZenithOS uses a dialect of C/C++ called $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$. It is not $FG,2$Pascal$FG$. I altered the syntax making parenthesis optional on function calls with no paramaters.
$ID,2$ZealOS uses a dialect of C/C++ called $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$. It is not $FG,2$Pascal$FG$. I altered the syntax making parenthesis optional on function calls with no paramaters.
$ID,-2$$TR,"Why doesn't Sleep() make my laptop hibernate?"$
$ID,2$$LK,"Sleep",A="MN:Sleep"$() makes a program pause. It is not hibernation for a laptop.
$ID,-2$$TR,"What is Yield() for in loops?"$
@ -29,37 +29,37 @@ $ID,2$$LK,"Yield",A="MN:Yield"$() saves the current task's regs (context) and lo
$ID,-2$$TR,"What is JIT Compiled Mode?"$
$ID,2$The term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ means it compiles and executes code placed into mem, not stored on disk.
$ID,-2$$TR,"Why do files end in .Z? Are they encrypted?"$
$ID,2$Files with names ending in $FG,2$.Z$FG$ are individually compressed using $LK,"ZenithOS Compression",A="FI:::/Kernel/Compress.CC"$. They are not encrypted. $LK,"Copy",A="MN:Copy"$() or rename them with $LK,"Move",A="MN:Move"$() to a name without $FG,2$.Z$FG$ and they will be stored in an uncompressed form. See $LK,"TOSZ",A="FI:::/Doc/TOSZ.DD"$ for Linux or Windows uncompress C/C++ code.
$ID,2$Files with names ending in $FG,2$.Z$FG$ are individually compressed using $LK,"ZealOS Compression",A="FI:::/Kernel/Compress.CC"$. They are not encrypted. $LK,"Copy",A="MN:Copy"$() or rename them with $LK,"Move",A="MN:Move"$() to a name without $FG,2$.Z$FG$ and they will be stored in an uncompressed form. See $LK,"TOSZ",A="FI:::/Doc/TOSZ.DD"$ for Linux or Windows uncompress C/C++ code.
$ID,-2$$TR,"Is it open source?\tHow do I build it?"$
$ID,2$ZenithOS is 100% open src. All the src code is included in the distro. Use $LK,"BootHDIns",A="MN:BootHDIns"$() to compile the kernel and compiler. The rest is $LK,"JIT Compiled",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.CC"$.
$ID,2$ZealOS is 100% open src. All the src code is included in the distro. Use $LK,"BootHDIns",A="MN:BootHDIns"$() to compile the kernel and compiler. The rest is $LK,"JIT Compiled",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.CC"$.
$ID,-2$$TR,"Where are object files? How do I link?"$
$ID,2$ZenithOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ is used to directly create flat binary files, $LK,"::/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ place code in memory, ready to run, with no object files or linking. Linking is done when $FG,2$BIN$FG$ modules are $LK,"Load",A="MN:Load"$()ed.
$ID,2$ZealOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ is used to directly create flat binary files, $LK,"::/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ place code in memory, ready to run, with no object files or linking. Linking is done when $FG,2$BIN$FG$ modules are $LK,"Load",A="MN:Load"$()ed.
$ID,-2$$TR,"What is the FPS refresh rate?"$
$ID,2$The refresh rate is $TX,"(30000.0/1001)",D="WINMGR_FPS"$ frames-per-second. That is how often ZenithOS updates screen mem. It is not syncronized to the hardware.
$ID,2$The refresh rate is $TX,"(30000.0/1001)",D="WINMGR_FPS"$ frames-per-second. That is how often ZealOS updates screen mem. It is not syncronized to the hardware.
$ID,-2$$TR,"How does a task own the speaker?"$
$ID,2$No task or application has a lock on the speaker so apps will interfere with each other.
$ID,-2$$TR,"Why does it leak memory?"$
$ID,2$ZenithOS allocs mem as more items are displayed in the window. Also, ZenithOS allocs mem for code as it is compiled at the cmd line. If you $FG,2$#include$FG$ a file twice, it allocs more mem for it. If you have a 50,000 line program with each line taking twenty bytes on a machine with 1 Gig, you could $FG,2$#include$FG$ it a thousand times if it had no data or graphics and no other use of mem. If it bothers you, hit $FG,2$<CTRL-ALT-x>$FG$ and $FG,2$<CTRL-ALT-t>, $FG$periodically, to kill and recreate the task$FG$. Use the pop-up flag on macros in your $LK,"PersonalMenu",A="FI:::Home/PersonalMenu.DD"$ to spawn new tasks, run applications and free the applications when they are finished. Small mem chunks stick to the task when they are freed until it is killed. The only way to get in trouble is allocating multiple Meg chunks and freeing them. These can only be reused if the same size gets alloced again. Use $LK,"HeapLog",A="MN:HeapLog"$(), $LK,"HeapLogAddrRep",A="MN:HeapLogAddrRep"$() and $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$() to see who alloced mem and didn't free it. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
$ID,2$ZealOS allocs mem as more items are displayed in the window. Also, ZealOS allocs mem for code as it is compiled at the cmd line. If you $FG,2$#include$FG$ a file twice, it allocs more mem for it. If you have a 50,000 line program with each line taking twenty bytes on a machine with 1 Gig, you could $FG,2$#include$FG$ it a thousand times if it had no data or graphics and no other use of mem. If it bothers you, hit $FG,2$<CTRL-ALT-x>$FG$ and $FG,2$<CTRL-ALT-t>, $FG$periodically, to kill and recreate the task$FG$. Use the pop-up flag on macros in your $LK,"PersonalMenu",A="FI:::Home/PersonalMenu.DD"$ to spawn new tasks, run applications and free the applications when they are finished. Small mem chunks stick to the task when they are freed until it is killed. The only way to get in trouble is allocating multiple Meg chunks and freeing them. These can only be reused if the same size gets alloced again. Use $LK,"HeapLog",A="MN:HeapLog"$(), $LK,"HeapLogAddrRep",A="MN:HeapLogAddrRep"$() and $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$() to see who alloced mem and didn't free it. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
$ID,-2$$TR,"Why do I get a memory leak when editing big files?"$
$ID,2$The editor periodically takes a snap-shot of the document for $FG,2$UNDO$FG$ and this looks like a memory leak.
$ID,-2$$TR,"Why is it in text mode?"$
$ID,2$ZenithOS runs in $FG,2$High-res 32-bit color VBE$FG$ graphics modes, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CC,INT:9"$ while in real-mode before it switches to 64-bit mode. The text is $LK,"drawn by hand",A="MN:GrUpdateTextFG"$. See $LK,"::/Kernel/FontStd.CC"$.
$ID,2$ZealOS runs in $FG,2$High-res 32-bit color VBE$FG$ graphics modes, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CC,INT:9"$ while in real-mode before it switches to 64-bit mode. The text is $LK,"drawn by hand",A="MN:GrUpdateTextFG"$. See $LK,"::/Kernel/FontStd.CC"$.
$ID,-2$$TR,"Where is the kernel memory?"$
$ID,2$ZenithOS identity-maps all memory, all the time. It is like paging is not used. There is no special kernel $FG,2$high half$FG$ memory space. ZenithOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Zenith$FG$ and he doesn't die, so his heap never gets freed. That's as close to $FG,2$kernel memory$FG$ as it gets. All code goes in the lowest 2Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
$ID,2$ZealOS identity-maps all memory, all the time. It is like paging is not used. There is no special kernel $FG,2$high half$FG$ memory space. ZealOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Zeal$FG$ and he doesn't die, so his heap never gets freed. That's as close to $FG,2$kernel memory$FG$ as it gets. All code goes in the lowest 2Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
$ID,-2$$TR,"Why does it run code from stack addresses?"$
$ID,2$ZenithOS puts all code in the lowest 2Gig, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. ZenithOS is 64-bit, but $FG,2$2Gig$FG$ is enough for code. It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$. $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
$ID,2$ZealOS puts all code in the lowest 2Gig, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. ZealOS is 64-bit, but $FG,2$2Gig$FG$ is enough for code. It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$. $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
$ID,-2$$TR,"How does it SYSCALL?"$
$ID,2$ZenithOS doesn't use software interrupts or $FG,2$SYSCALL$FG$ insts because it never needs to change out of ring-0, even running user programs. Calls are always $FG,2$CALL REL32$FG$ insts.
$ID,2$ZealOS doesn't use software interrupts or $FG,2$SYSCALL$FG$ insts because it never needs to change out of ring-0, even running user programs. Calls are always $FG,2$CALL REL32$FG$ insts.
$ID,-2$$TR,"How do you fault-in stack?"$
$ID,2$The stack does not grow, so do not do deep recursion. In theory, memory gets fragmented, too.
$ID,-2$$TR,"How do I set the PATH?"$
$ID,2$There is no $FG,2$PATH$FG$. You do not enter filenames at the command-line and expect them to run. You enter C-like code. $LK,"Get Started Here",A="FI:::/Doc/CmdLineOverview.DD"$.
$ID,-2$$TR,"How do I boot it with Grub?"$
$ID,2$If you use Grub, you $FG,2$chain-load$FG$ like Windows. See $LK,"Boot",A="FI:::/Doc/Boot.DD"$. You can use the ZenithOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Zenith/Boot/BootMHD.CC"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Zenith/Boot/BootMHD2.CC"$, $LK,"Partition-Boot-Loader",A="FI:::/Zenith/Boot/BootHD.CC"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Zenith/Boot/BootDVD.CC"$.
$ID,2$If you use Grub, you $FG,2$chain-load$FG$ like Windows. See $LK,"Boot",A="FI:::/Doc/Boot.DD"$. You can use the ZealOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/System/Boot/BootMHD.CC"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/System/Boot/BootMHD2.CC"$, $LK,"Partition-Boot-Loader",A="FI:::/System/Boot/BootHD.CC"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/System/Boot/BootDVD.CC"$.
$ID,-2$$TR,"How do I get Kernel.BIN to boot?"$
$ID,2$The boot-loaders must be patched by you running $LK,"BootHDIns",A="MN:BootHDIns"$() or $LK,"BootMHDIns",A="MN:BootMHDIns"$(). Those will write the block address into the boot-loader because the boot-loaders do not navigate file systems to find the $LK,"Stage2",A="FI:::/Kernel/KStart16.CC"$ if you relocate it.
$ID,-2$$TR,"Why is there some 16-Bit code?"$
$ID,2$ZenithOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. ZenithOS calls a few $FG,2$BIOS$FG$ info routines, switches to VGA-640x480x4bit, switches to 32-bit, then, 64-bit mode. There is an odd thing called a $FG,2$$TX,"PCI BIOS",HTML="http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf"$$FG$ which is 32-bit used for $FG,2$PCI$FG$ config space access. ZenithOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.CC"$ a couple times. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
$ID,2$ZealOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. ZealOS calls a few $FG,2$BIOS$FG$ info routines, switches to VGA-640x480x4bit, switches to 32-bit, then, 64-bit mode. There is an odd thing called a $FG,2$$TX,"PCI BIOS",HTML="http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf"$$FG$ which is 32-bit used for $FG,2$PCI$FG$ config space access. ZealOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.CC"$ a couple times. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
$ID,-2$$TR,"Why are you pushing 32-bit values on the stack?"$
$ID,2$$FG,2$PUSH EAX$FG$ : All stack operations in 64-bit mode are 64-bits.
$ID,-2$$TR,"Why are you using 32-bit insts and not setting high 32-bits?"$
@ -82,8 +82,8 @@ $ID,-2$$TR,"Why is there garbage at the end of my text files?"$
$ID,2$Binary sprite data is stored beyond the terminating $FG,2$NULL$FG$ in text files. Map files store debug src line addresses.
$ID,-2$$TR,"Why are sprites so small?"$
$ID,2$Sprites can be stored as vector graphics so they might take shockingly little room. They can be converted to bitmaps.
$ID,-2$$TR,"Why don't I need to recompile /Zenith and /Home files?"$
$ID,2$If you change code in the $FG,2$/Zenith$FG$ or your $FG,2$/Home$FG$ directory, you don't need to recompile, you just need to reboot because those directories get recompiled when you boot. It uses $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$. There is no $FG,2$.BIN$FG$ file for $FG,2$JIT$FG$ compilation. See $LK,"::/StartOS.CC"$.
$ID,-2$$TR,"Why don't I need to recompile /System and /Home files?"$
$ID,2$If you change code in the $FG,2$/System$FG$ or your $FG,2$/Home$FG$ directory, you don't need to recompile, you just need to reboot because those directories get recompiled when you boot. It uses $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$. There is no $FG,2$.BIN$FG$ file for $FG,2$JIT$FG$ compilation. See $LK,"::/StartOS.CC"$.
$ID,-2$$TR,"Why does it finds files that aren't there?"$
$ID,2$If not found, $FG,2$.Z$FG$ is added or removed from filename and a search is done again. If a file is still not found, the parent directories are searched for a file of the same name.
$ID,-2$

View file

@ -1,4 +1,4 @@
$WW,1$$FG,5$$TX+CX,"ZenithOS' Features"$$FG$
$WW,1$$FG,5$$TX+CX,"ZealOS' Features"$$FG$
* Oracle with $FG,2$<F7>$FG$ for words or $FG,2$<SHIFT-F7>$FG$ for passages.
@ -50,4 +50,4 @@
* Many games, $LK,"demos",A="FI:::/Doc/DemoIndex.DD"$ and $LK,"documentation",A="FI:::/Doc/HelpIndex.DD"$.
* $FG,2$All source code$FG$ included. Only compiles with the included ZenithOS compiler and assembler.
* $FG,2$All source code$FG$ included. Only compiles with the included ZealOS compiler and assembler.

View file

@ -28,7 +28,7 @@ $FG,2$<F5>$FG$
$ID,2$#include file.
$ID,-2$
$FG,2$<SHIFT-F5>$FG$
$ID,2$Zenith #include file.
$ID,2$System #include file.
$ID,-2$
$FG,2$'r'$FG$
$ID,2$Rename file.
@ -56,7 +56,7 @@ $ID,2$Burn CD/DVD ISO file. This burns a CD/DVD using the image file, $FG,2$$TX
$ID,-2$
$FG,5$Instructions on Using CD/DVD's$FG$
$ID,2$If you have not recompiled Kernel and defined your CD/DVD drive, exit the FileMgr and use $LK,"Mount",A="MN:Mount"$ to define your CD/DVD drive. Place a CD/DVD in the drive and press $FG,2$'c'$FG$ when on top of the CD/DVD drive letter to mount the drive. It will call $LK,"DiskChange",A="MN:DiskChange"$(), the ZenithOS cmd to mount removable media.
$ID,2$If you have not recompiled Kernel and defined your CD/DVD drive, exit the FileMgr and use $LK,"Mount",A="MN:Mount"$ to define your CD/DVD drive. Place a CD/DVD in the drive and press $FG,2$'c'$FG$ when on top of the CD/DVD drive letter to mount the drive. It will call $LK,"DiskChange",A="MN:DiskChange"$(), the ZealOS cmd to mount removable media.
$ID,-2$
$FG,5$Instructions on Burning CD/DVD's$FG$

View file

@ -27,5 +27,5 @@ CDDVD
Program
{
Include(,0,0x3F0000003F);
ZenithInclude(,0,0x23F0000023F);
ZealInclude(,0,0x23F0000023F);
}

View file

@ -1,4 +1,4 @@
$WW,1$GR graphics files are 8-bits-per-pixels but only 4-bits of color, with transparency and no palette. Compression is the standard ZenithOS$FG$ LZW compression.
$WW,1$GR graphics files are 8-bits-per-pixels but only 4-bits of color, with transparency and no palette. Compression is the standard ZealOS$FG$ LZW compression.
$HL,1$
#define DCF_COMPRESSED 1 //This is the only saved flag.
#define DCF_PALETTE 2

View file

@ -145,15 +145,15 @@ $FG,2$Wiz$FG$ Wizard
$ID,-2$$TR,"Task/Process/Thread"$
$ID,2$There is no distinction between $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2$thread$FG$. The $FG,2$Fs$FG$ segment reg is kept pointing to the current task's $LK,"CTask",A="MN:CTask"$. There is only one window per task, and only $FG,2$Core0$FG$ tasks can have windows. Each task has a code and data heap so memory is returned when it dies. Each task has a $LK,"hash",A="HI:Hash"$ symbol table.
Since there is not friendly disk sharing and all tasks have the same address map, it might be accurate to call ZenithOS, "multi-thread/single-process". You run a single application process on $FG,2$Core0$FG$ and it can create threads on the same core or others. If you run multiple processes, it should be safe, but one process will wait until another completely finishes a long disk access.
$ID,-2$$TR,"Zenith Task"$
$ID,2$This is Zenith, as in the $MA-X+PU,"most important task",LM="ACDDefsPut(DocPut, \"Zenith\");View;"$. Zenith is immortal. The zenith task is created at start-up and appears in the small window at the top beneath the user terminal windows. Since the Zenith task is immortal, on Zenith's heap go all memory objects which you don't want destroyed by any single task's death. When created, Zenith runs the file $LK,"::/StartOS.CC"$. When start-up is finished, the zenith task enters a server mode where it accepts requests from other tasks. The $LK,"Zenith",A="MN:Zenith"$("") routine will make Zenith compile and run text src code. $FG,2$#include$FG$ statements can be sent to $LK,"Zenith",A="MN:Zenith"$(""), creating system-wide code and data which are immortal.
Since there is not friendly disk sharing and all tasks have the same address map, it might be accurate to call ZealOS, "multi-thread/single-process". You run a single application process on $FG,2$Core0$FG$ and it can create threads on the same core or others. If you run multiple processes, it should be safe, but one process will wait until another completely finishes a long disk access.
$ID,-2$$TR,"System Task"$
$ID,2$The System task is immortal. The system task is created at start-up and appears in the small window at the top beneath the user terminal windows. Since the System task is immortal, on its heap go all memory objects which you don't want destroyed by any single task's death. When created, the System task runs the file $LK,"::/StartOS.CC"$. When start-up is finished, the system task enters a server mode where it accepts requests from other tasks. The $LK,"Sys",A="MN:Sys"$("") routine will make the System task compile and run text src code. $FG,2$#include$FG$ statements can be sent to $LK,"Sys",A="MN:Sys"$(""), creating system-wide code and data which are immortal.
$ID,-2$$TR,"Seth Tasks"$
$ID,2$Each CPU core has an executive task called $FG,2$Seth$FG$ that is immortal. The Zenith task on $FG,2$Core0$FG$ is also its $FG,2$Seth$FG$ task.
$ID,2$Each CPU core has an executive task called $FG,2$Seth$FG$ that is immortal. The System task on $FG,2$Core0$FG$ is also its $FG,2$Seth$FG$ task.
$ID,-2$$TR,"Code and Data Heaps"$
$ID,2$ZenithOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2Gig$FG$ from the current code location. To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$. The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and global vars, unless the compiler option $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$ is used. When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory. You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:MemPagAlloc"$ heaps.
$ID,2$ZealOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2Gig$FG$ from the current code location. To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$. The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and global vars, unless the compiler option $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$ is used. When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory. You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:MemPagAlloc"$ heaps.
$ID,-2$$TR,"Parent, Child and PopUp Tasks"$
$ID,2$Often a task will $LK,"Spawn",A="MN:Spawn"$() or $LK,"PopUp",A="MN:PopUp"$() a task as a helper. The helper is known as a child Task, though you can $LK,"Spawn",A="MN:Spawn"$ a task and assign it a different parent... like $FG,2$Zenith$FG$. Links are kept as to who's whose child, so when one task is $LK,"Kill",A="MN:Kill"$()ed the child helper tasks die, too. You can get a report of current system tasks with $LK,"TaskRep",A="MN:TaskRep"$(). There is just one window per task, so child tasks are needed for pop-ups.
$ID,2$Often a task will $LK,"Spawn",A="MN:Spawn"$() or $LK,"PopUp",A="MN:PopUp"$() a task as a helper. The helper is known as a child Task, though you can $LK,"Spawn",A="MN:Spawn"$ a task and assign it a different parent... like $FG,2$System$FG$. Links are kept as to who's whose child, so when one task is $LK,"Kill",A="MN:Kill"$()ed the child helper tasks die, too. You can get a report of current system tasks with $LK,"TaskRep",A="MN:TaskRep"$(). There is just one window per task, so child tasks are needed for pop-ups.
$ID,-2$$TR,"CosmiC"$
$ID,2$$LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ is more than $FG,2$C$FG$ and less than $FG,2$C++$FG$. It has the default args of $FG,2$C++$FG$ and uses $FG,2$class$FG$ in place of $FG,2$struct$FG$. It uses $FG,2$U0,U8,U16,U32,I64$FG$ and $FG,2$I0,I8,I16,I32,I64$FG$ for signed and unsigned ints. It has different $LK,"operator precedence",A="FF:::/Doc/CosmiC.DD,operator precedence"$. It has $FG,2$PASCAL$FG$-like function calls with no parens, but requires an $FG,2$&$FG,2$$FG$ when referring to function addresses.
$ID,-2$$TR,"AOT Compile Mode"$
@ -267,5 +267,5 @@ $ID,2$When two parts of a program have a common low-level routine, that routine
$ID,-2$$TR,"user_data"$
$ID,2$Many operating system structures have space set aside for you to store values. You are on your own managing these with multiple applications and libraries.
$ID,-2$$TR,"Multicore Core0/CoreAP"$
$ID,2$Core0, has the $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$$FG$, and it is the master. The $FG,2$application processors$FG$ have an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ and are the slave processors. Only $FG,2$Core0$FG$ tasks can have windows and can launch applications. Slave cores are used if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task or $LK,"JobQueue",A="MN:JobQueue"$() a job on them.
$ID,2$Core0, has the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$$FG$, and it is the master. The $FG,2$application processors$FG$ have an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ and are the slave processors. Only $FG,2$Core0$FG$ tasks can have windows and can launch applications. Slave cores are used if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task or $LK,"JobQueue",A="MN:JobQueue"$() a job on them.
$ID,-2$

Binary file not shown.

View file

@ -12,9 +12,9 @@ $FG,2$/Kernel$FG$ The core of the operating system is found here. Since privile
$FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is $FG,2$AOT$FG$ compiled to produce a binary file which is loaded at boot. It, too, is $FG,2$AOT$FG$ compiled by $LK,"BootHDIns",A="MN:BootHDIns"$().
$FG,2$/Zenith$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$ is the most important task. It never dies. See the $MA-X+PU,"definition of zenith",LM="ACDDefsPut(DocPut, \"Zenith\");View;"$.
$FG,2$/System$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ is the most important task. It never dies.
$FG,2$/0000Boot$FG$ Boot files go here. Stage 2 of the ZenithOS hard drive master boot loader, the old hard drive master boot record which is just blk#0, and the CD/DVD $LK,"0000Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ file go here. ASCII $FG,2$0000$FG$ is near the top, alphabetically, in case you use $TX,"MagicISO",HTML="http://www.magiciso.com"$.
$FG,2$/0000Boot$FG$ Boot files go here. Stage 2 of the ZealOS hard drive master boot loader, the old hard drive master boot record which is just blk#0, and the CD/DVD $LK,"0000Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ file go here. ASCII $FG,2$0000$FG$ is near the top, alphabetically, in case you use $TX,"MagicISO",HTML="http://www.magiciso.com"$.
@ -26,9 +26,9 @@ $LK,"~/PersonalMenu.DD"$ a menu viewed with the $FG,2$<CTRL-m>$FG$ key or by cli
$LK,"~/PersonalNotes.DD"$ a personal note file viewed with the $FG,2$<CTRL-SHIFT-M>$FG$ key.
$LK,"~/MakeHome.CC"$ a file compiled by the $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$ during $LK,"StartOS",A="FF:::/StartOS.CC,MakeHome"$.
$LK,"~/MakeHome.CC"$ a file compiled by the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ during $LK,"StartOS",A="FF:::/StartOS.CC,MakeHome"$.
$FG,4$~/Home*$FG$ Copy $FG,2$Home*$FG$ files from the root into $FG,2$~$FG$ and customize them. These files are invoked when the $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$ starts-up.
$FG,4$~/Home*$FG$ Copy $FG,2$Home*$FG$ files from the root into $FG,2$~$FG$ and customize them. These files are invoked when the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ starts-up.
$LK,"~/Once.CC"$ a file invoked at the start-up of the first user. Customize this!
@ -92,9 +92,9 @@ $ID,-5$
$FG,5$$TX+CX,"Hash Sym Tables"$$FG$
* See $LK,"::/Zenith/ZHash.CC"$ for examples of how the hash tables are set-up. Basically, syms are placed into hash tables and child process hash tables are chained to parents. This provides scopes for vars and functions.
* See $LK,"::/System/ZHash.CC"$ for examples of how the hash tables are set-up. Basically, syms are placed into hash tables and child process hash tables are chained to parents. This provides scopes for vars and functions.
* $FG,2$zenith_task->hash_table$FG$ holds the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ syms loaded in on start-up.
* $FG,2$sys_task->hash_table$FG$ holds the $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ syms loaded in on start-up.
* $FG,2$Fs->hash_table$FG$ holds user CosmiC syms and if a sym is not found, it checks parents. When a duplicate sym is added to the table, it overshadows the prev sym. When developing software, typically you include the file at the cmd prompt, make changes and reinclude it. Old syms are overshadowed but they are still there. Periodically, kill the TASK and start fresh when mem is low. If you wish your applications to free themselves instead of staying in mem, spawn or $LK,"PopUp",A="MN:PopUp"$() a task to run the application and kill it when it's done.

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +1,4 @@
$WW,1$$FG,2$InFiles$FG$ are used to generate user input to automate operations. The ZenithOS tour is done with an $FG,2$InFile$FG$. It reminds me of a Unix pipe because $FG,2$StdOut$FG$ of one gets chained into $FG,2$StdIn$FG$ of another.
$WW,1$$FG,2$InFiles$FG$ are used to generate user input to automate operations. The ZealOS tour is done with an $FG,2$InFile$FG$. It reminds me of a Unix pipe because $FG,2$StdOut$FG$ of one gets chained into $FG,2$StdIn$FG$ of another.
When an $FG,2$InFile$FG$ runs, a child task is $LK,"Spawn",A="MN:Spawn"$()ed which intercepts real user input and generates fake input. InFiles are $LK,"CosmiC",A="FI:::/Doc/CosmiC.DD"$ programs run by the child whose stdout goes to the parent's input buffer. $LK,"Message",A="MN:Message"$() can be included in an $FG,2$InFile$FG$ to send special keys or mouse cmds to the parent. While an $FG,2$InFile$FG$ is running, the normal input gets diverted to the InFile task and can be filtered and sent back to the parent task. Unless you are driving functions which prompt for data, you can probably use an $FG,2$#include$FG$ file in place of an $FG,2$InFile$FG$.

View file

@ -1,18 +1,18 @@
$WW,1$$FG,5$$TX+CX,"Installing ZenithOS"$$FG$
$WW,1$$FG,5$$TX+CX,"Installing ZealOS"$$FG$
Burn a CD with software that supports ISO files. Then, boot it. It's a live CD, so you can look around with or without installing.
Dual booting with another operating system is the best way to use ZenithOS. I only use it in a virtual machine because it won't boot natively on my machine, though. For native dual booting, you need a partition for ZenithOS. Windows often comes with a restore disk that does not allow repartitioning. I recommend connecting a spare additional hard drive and using the $FG,2$BIOS$FG$ to select which drive to boot.
Dual booting with another operating system is the best way to use ZealOS. I only use it in a virtual machine because it won't boot natively on my machine, though. For native dual booting, you need a partition for ZealOS. Windows often comes with a restore disk that does not allow repartitioning. I recommend connecting a spare additional hard drive and using the $FG,2$BIOS$FG$ to select which drive to boot.
The $LK,"::/Misc/OSInstall.CC"$ script will automate much of this. It runs if you boot the CD/DVD-ROM.
See $LK,"Boot.DD",A="FI:::/Doc/Boot.DD"$ for an overview of booting. See $LK,"Requirements",A="FI:::/Doc/Requirements.DD"$ for supported hardware.
Two ZenithOS partitions are highly recommended, so you can boot to a back-up and fix the primary when you work on it. Odds are, you only need a couple gigabytes for your ZenithOS partitions.
Two ZealOS partitions are highly recommended, so you can boot to a back-up and fix the primary when you work on it. Odds are, you only need a couple gigabytes for your ZealOS partitions.
1)
$ID,2$$LK,"Mount",A="MN:Mount"$() use if the drive is partitioned.
$ID,2$This command mounts a drive making it accessible. For simplicity, sel $FG,2$'C'$FG$ as the first drive letter for your hard drive. The first partition will be $FG,2$'C'$FG$, second, $FG,2$'D'$FG$, etc. ZenithOS needs 3 numbers to utilize a hard drive -- base0, base1, and unit. When you enter a hexadecimal number, do it like in $FG,2$C$FG$ with a $FG,2$0x$FG$ prefix. If the probe was successful, you can just enter the number in the probe box instead of base0.
$ID,2$This command mounts a drive making it accessible. For simplicity, sel $FG,2$'C'$FG$ as the first drive letter for your hard drive. The first partition will be $FG,2$'C'$FG$, second, $FG,2$'D'$FG$, etc. ZealOS needs 3 numbers to utilize a hard drive -- base0, base1, and unit. When you enter a hexadecimal number, do it like in $FG,2$C$FG$ with a $FG,2$0x$FG$ prefix. If the probe was successful, you can just enter the number in the probe box instead of base0.
$ID,-2$
$LK,"DiskPart",A="MN:DiskPart"$($FG,2$'C'$FG$) use if drive is not partitioned
@ -34,11 +34,11 @@ $ID,2$This command is used to copy files onto a hard drive partition from the CD
$ID,-2$4) $LK,"BootHDIns",A="MN:BootHDIns"$($FG,2$'D'$FG$)
$ID,2$This command recompiles the source code on a drive and writes to the $UL,1$drive's$UL,0$ boot record. You'll need to reenter the $LK,"Mount",A="MN:Mount"$ information so it can be stored in the kernel.
$ID,-2$5) Use Linux's Grub or ZenithOS' $LK,"BootMHDIns",A="MN:BootMHDIns"$($FG,2$'D'$FG$)
$ID,-2$5) Use Linux's Grub or ZealOS' $LK,"BootMHDIns",A="MN:BootMHDIns"$($FG,2$'D'$FG$)
$ID,2$
The $LK,"BootMHDIns",A="MN:BootMHDIns"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/0000Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive.
Delete $FG,2$/0000Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/0000Boot/OldMBR.BIN.C$FG$ onto a system with a non-ZenithOS boot loader.
Delete $FG,2$/0000Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/0000Boot/OldMBR.BIN.C$FG$ onto a system with a non-ZealOS boot loader.
If you have anti-virus software, it might object to having a different master boot record.
$ID,-2$

Binary file not shown.

View file

@ -1,4 +1,4 @@
$WW,1$The editor mostly stays in a $LK,"KeyGet",A="MN:KeyGet"$()/$LK,"PutKey",A="MN:PutKey"$() loop. The putkey portion is where keys are acted-upon. ZenithOS has a chain of putkey handlers in a $LK,"Circular Queue",A="HI:Circular Queue"$ with priorities. The highest priority handlers can choose to terminate handling, otherwise, the keys get sent on down the chain.
$WW,1$The editor mostly stays in a $LK,"KeyGet",A="MN:KeyGet"$()/$LK,"PutKey",A="MN:PutKey"$() loop. The putkey portion is where keys are acted-upon. ZealOS has a chain of putkey handlers in a $LK,"Circular Queue",A="HI:Circular Queue"$ with priorities. The highest priority handlers can choose to terminate handling, otherwise, the keys get sent on down the chain.
$LK,"KeyDevAdd",A="MN:KeyDevAdd"$() defines a putkey device with a priority. "Device" might be a misnomer. Currently, the following are defined:
@ -9,6 +9,6 @@ $FG,2$0x40000000$FG$ $LK,"KDInputFilterPutKey",A="MN:KDInputFilterPutKey"$() for
$FG,2$0x60000000$FG$ $LK,"KDRawPutKey",A="MN:KDRawPutKey"$() nonwindowed direct to video mem debug output.
$FG,2$0x80000000$FG$ $LK,"KDDocPutKey",A="MN:KDDocPutKey"$() standard document cmds
Since handling individual keys is slow, ZenithOS supports PutS() as well. If no puts handler is defined, individual keys are sent.
Since handling individual keys is slow, ZealOS supports PutS() as well. If no puts handler is defined, individual keys are sent.
$LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_key$FG$ and $LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_s$FG$ are call back routines which offer some neat tricks. See $LK,"::/Apps/Psalmody/JukeBox.CC"$. There is a var $LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_data$FG$ which gets passed to them.

View file

@ -1,3 +1,3 @@
$WW,1$The compiler's lexical analyzer can be used in your programs to simplify parsing. See $LK,"Doc Parsing",A="FF:::/Zenith/DolDoc/DocPlain.CC,CompCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.CC,Opcodes.DD"$.
$WW,1$The compiler's lexical analyzer can be used in your programs to simplify parsing. See $LK,"Doc Parsing",A="FF:::/System/DolDoc/DocPlain.CC,CompCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.CC,Opcodes.DD"$.
See $LK,"Tokens",A="MN:TK_IDENT"$.

View file

@ -2,15 +2,15 @@ $WW,1$$FG,5$$TX+CX,"Memory Overview"$$FG$
Paging is practically not used. 64-bit mode requires paging, however, so it is identity-mapped -- virtual identical to physical. All tasks on all cores use the same page table map, just as though all addresses are physical addresses. 2Meg or 1Gig page table entries are used. Nothing swaps to disk.
In ZenithOS, the lowest 2Gig of memory is called the $FG,2$code heap$FG$. ZenithOS's compiler always uses 32-bit signed relative JMP & CALL insts because 64-bit CALLs take two insts. With signed +/- 32-bit values, code can only call a function within 2Gig distance. Therefore, ZenithOS keeps all code in the lowest 2Gig memory addresses including what would normally be called "the kernel". Two Gig is plenty for code, don't worry.
In ZealOS, the lowest 2Gig of memory is called the $FG,2$code heap$FG$. ZealOS's compiler always uses 32-bit signed relative JMP & CALL insts because 64-bit CALLs take two insts. With signed +/- 32-bit values, code can only call a function within 2Gig distance. Therefore, ZealOS keeps all code in the lowest 2Gig memory addresses including what would normally be called "the kernel". Two Gig is plenty for code, don't worry.
You can create new, independent heaps using $LK,"HeapCtrlInit",A="MN:HeapCtrlInit"$(). Then, use the $LK,"CHeapCtrl",A="MN:CHeapCtrl"$ as the 2nd arg to $LK,"MAlloc",A="MN:MAlloc"$(). See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
Memory alloced by a task will be freed when the task is killed. The $LK,"Zenith Task",A="FF:::/Doc/Glossary.DD,Zenith Task"$ is a task that never dies. His memory is like kernel memory in other operating systems. See $LK,"ZCAlloc",A="MN:ZCAlloc"$(), $LK,"ZMAlloc",A="MN:ZMAlloc"$(), $LK,"ZMAllocIdent",A="MN:ZMAllocIdent"$() and $LK,"ZStrNew",A="MN:ZStrNew"$().
Memory alloced by a task will be freed when the task is killed. The $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$ is a task that never dies. His memory is like kernel memory in other operating systems. See $LK,"ZCAlloc",A="MN:ZCAlloc"$(), $LK,"ZMAlloc",A="MN:ZMAlloc"$(), $LK,"ZMAllocIdent",A="MN:ZMAllocIdent"$() and $LK,"ZStrNew",A="MN:ZStrNew"$().
All of the regular page tables are marked, "cached". When accessing hardware, however, you need uncached page table. The lowest 4Gig addresses have an alias to access hardware located toward the top of mapped space, $FG,2$0x$TX,"01A0000000",D="DD_UNCACHED_ALIAS"$$FG$. See $LK,"dev.uncached_alias",A="FF:::/Kernel/MultiProc.CC,dev.uncached_alias"$.
During an extended powered-on session of ZenithOS, in theory, memory will become fragmented, requiring a reboot. It has never happens to me.
During an extended powered-on session of ZealOS, in theory, memory will become fragmented, requiring a reboot. It has never happens to me.
See $LK,"MemRep",A="MN:MemRep"$() and $LK,"::/Demo/MemDemo.CC"$.
@ -21,7 +21,7 @@ $FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"000368EF",D="DD_KERNEL_END"$$
$ID,2$Kernel module, placed here by the boot-loader, $LK,"BOOT_RAM_BASE",A="MN:BOOT_RAM_BASE"$.
$ID,-2$
$FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_DVD_END"$$FG$
$ID,2$$FG$Boot block relocated here before loading the Kernel module, $LK,"BootDVD",A="FI:::/Zenith/Boot/BootDVD.CC"$ & $LK,"BootHD",A="FI:::/Zenith/Boot/BootHD.CC"$.
$ID,2$$FG$Boot block relocated here before loading the Kernel module, $LK,"BootDVD",A="FI:::/System/Boot/BootDVD.CC"$ & $LK,"BootHD",A="FI:::/System/Boot/BootHD.CC"$.
$ID,-2$
$FG,2$ 0x00$TX,"00097000",D="DD_MP_VECT"$- 0x00$TX,"00097030",D="DD_MP_VECT_END"$$FG$ Multicore start-up vect code, $LK,"MPN_VECT",A="MN:MPN_VECT"$.
$FG,2$~0x000009F000- 0x000009FFFF$FG$ Extended BIOS data area.

View file

@ -1,10 +1,10 @@
$WW,1$ZenithOS does master-slave multicore instead of SMP. $FG,2$Core0$FG$ is the master. The master core's applications explicitly assign computational jobs to other cores and the ZenithOS scheduler does not move tasks between cores.
$WW,1$ZealOS does master-slave multicore instead of SMP. $FG,2$Core0$FG$ is the master. The master core's applications explicitly assign computational jobs to other cores and the ZealOS scheduler does not move tasks between cores.
There are multicore safe locks for file access and heap allocations, however, so ZenithOS is symmetrical in some sense. See $LK,"::/Demo/MultiCore/LoadTest.CC"$.
There are multicore safe locks for file access and heap allocations, however, so ZealOS is symmetrical in some sense. See $LK,"::/Demo/MultiCore/LoadTest.CC"$.
Only tasks on $FG,2$Core0$FG$ can have windows, but other cores can help render them.
Each core has an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ which is the father of all tasks on that core. $LK,"Zenith",A="FF:::/Doc/Glossary.DD,Zenith Task"$ is the $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ on $FG,2$Core0$FG$.
Each core has an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ which is the father of all tasks on that core. $LK,"System",A="FF:::/Doc/Glossary.DD,System Task"$ is the $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ on $FG,2$Core0$FG$.
You give a job to a $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ with $LK,"JobQueue",A="MN:JobQueue"$() and get the result with $LK,"JobResGet",A="MN:JobResGet"$(). You spawn a task on any core with $LK,"Spawn",A="MN:Spawn"$().

View file

@ -9,7 +9,7 @@ We want to use one set for ASCII, ScanCodes and ScreenCodes.
128-191 : CTRL
192-256 : CTRL+SHIFT
No more ALT key in ZenithOS.
No more ALT key in ZealOS.
CTRL-LEFT/RIGHT is already begin/end line.
CTRL-UP/DOWN is already top/bottom of document.

Some files were not shown because too many files have changed in this diff Show more