Change ZealOS Charter. Fix doc typos. Remove Reliability.DD.

This commit is contained in:
TomAwezome 2022-04-17 00:59:41 -04:00
parent a5ec528fba
commit f7ffa6f5e4
14 changed files with 23 additions and 54 deletions

View file

@ -4,7 +4,7 @@ Terry A. Davis wrote all of TempleOS. ZealOS is a fork of TempleOS.
$FG,5$Websites:$FG$
$TX,"www.templeos.org",HTML="https://www.templeos.org"$
$TX,"www.zenithos.org",HTML="https://www.zenithos.org"$
$TX,"www.zealos.net",HTML="https://www.zealos.net"$
$TX,"www.github.com/Zeal-Operating-System/ZealOS",HTML="https://www.github.com/Zeal-Operating-System/ZealOS"$
$FG,5$About Terry A. Davis:$FG$

View file

@ -6,9 +6,9 @@ $FG,5$$WW,1$$TX+CX,"ZealOS Charter"$$FG$
* Low line count and code complexity is the highest good, so it is easy to learn the whole thing. Users should see the light at the end of the tunnel. One file system, for example, is better than many file systems.
* There is a limit of 100,000 lines of code for all time, not including applications and demos. Currently, there are $TX,"97,194",D="DD_ZEALOS_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.
* There is a limit of 100,000 lines of code for all time, not including applications and demos. Currently, there are $TX,"98,216",D="DD_ZEALOS_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 primary 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 secondary metric is how understandable the code is. The $LK,"ZealC",A="FI:::/Doc/ZealC.DD"$ language should be changed to optimize these metrics, as Terry Davis did when he changed type casting from prefix standard C to postfix $LK,"ZealC",A="FI:::/Doc/ZealC.DD"$, but we need a rule to prevent degenerating into a brainfuck language.
* The primary 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 secondary metric is how understandable the code is. The $LK,"ZealC",A="FI:::/Doc/ZealC.DD"$ language should be changed to optimize these metrics, as Terry Davis did when he changed type casting from prefix to $LK+PU,"postfix",A="FF:::/Doc/ZealC.DD,postfix"$.
* 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.
@ -33,9 +33,6 @@ $FG,5$$WW,1$$TX+CX,"ZealOS Charter"$$FG$
* Documents are not for printing. They're dynamic, intended for the screen.
* Just one 8x8 fixed-width font. $FG,4$No Unicode, just Extended ASCII$FG$. Other countries can make their own versions. The versions should be just for one language and platform.
* $FG,4$No multimedia$FG$. Sounds and images will be primarily calculated in real-time, not fetched from storage.
$FG,8$
* "Commodore 64" is a trademark owned by Polabe Holding NV.
* "Windows" is a trademark owned by MicroSoft Corp.

View file

@ -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,"ZealOS Specific"$
$ID,-2$$TR,"TempleOS/ZealOS Specific"$
$ID,2$$MA-X+PU,"::/Demo/InFile",LM="Cd(\"::/Demo/InFile\");Dir;View;\n"$
$LK,"::/Demo/Print.ZC"$
$LK,"::/Demo/SubIntAccess.ZC"$

View file

@ -1,7 +1,7 @@
$WW,1$$FG,5$$TX+CX,"Frequently Asked Queuestions"$$FG$
$WW,1$$FG,5$$TX+CX,"Frequently Asked Questions"$$FG$
$TR,"How come it is public domain, not GPL?"$
$ID,2$$FG,2$Terry A. Davis$FG$, wrote all of TempleOS over a span of $FG,2$$TX,"15.0",D="DD_TEMPLEOS_AGE"$$FG$ years (full-time). ZealOS, written over a span of $FG,2$$TX,"1.8",D="DD_ZEALOS_AGE"$$FG$ years, is a fork of ZenithOS, which itself is a fork of TempleOS. It can run on some bare metal 64-bit PC's from about 2007-2019 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. 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$$FG,2$Terry A. Davis$FG$, wrote all of TempleOS over a span of $FG,2$$TX,"15.0",D="DD_TEMPLEOS_AGE"$$FG$ years (full-time). ZealOS, written over a span of $FG,2$$TX,"2.6",D="DD_ZEALOS_AGE"$$FG$ years, is a fork of TempleOS. It can run on some bare metal 64-bit PC's from about 2007-2019 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. 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 100% public-domain code. Boot-loaders were even written, so we do not need Grub. See $LK,"::/Doc/Credits.DD"$.
$ID,-2$$TR,"Don't you use GNU's gcc?"$

View file

@ -8,7 +8,7 @@ $FG,2$/Demo$FG$ Here you can find lots of sample code to do various things.
$FG,2$/Doc$FG$ Here you can find documentation.
$FG,2$/Kernel$FG$ The core of the operating system is found here. Since priviledge levels are not used, calling it a $FG,2$kernel$FG$ is deceptive. It is $FG,2$AOT$FG$ compiled by $LK,"BootHDIns",A="MN:BootHDIns"$(). It is loaded by the boot loader and must fit in 640K.
$FG,2$/Kernel$FG$ The core of the operating system is found here. Since privilege levels are not used, calling it a $FG,2$kernel$FG$ is deceptive. It is $FG,2$AOT$FG$ compiled by $LK,"BootHDIns",A="MN:BootHDIns"$(). It is loaded by the boot loader and must fit in 640K.
$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"$().

View file

@ -4,7 +4,7 @@ See $LK,"Char",A="HI:Char"$ for definition of scan codes.
See $MA-X+PU,"Key Map",LM="KeyMap;View;\n"$ for a detailed list of key commands.
When you are at the cmd line, editing documents, browsing documentation and help, entering items in forms or in menu's, the $LK,"DolDoc",A="MN:CDoc"$ editor handles keys. It allows you to define your own key handlers in a $LK,"MyPutKey",A="MN:MyPutKey"$() function. If you choose, you can catch keys, overriding the default handlers. See $LK,"DocPutKey",A="MN:DocPutKey"$(). The following is an overview of key allocations.
When you are at the cmd line, editing documents, browsing documentation and help, entering items in forms or in menus, the $LK,"DolDoc",A="MN:CDoc"$ editor handles keys. It allows you to define your own key handlers in a $LK,"MyPutKey",A="MN:MyPutKey"$() function. If you choose, you can catch keys, overriding the default handlers. See $LK,"DocPutKey",A="MN:DocPutKey"$(). The following is an overview of key allocations.
$FG,2$<ALT-keys>$FG$ and $FG,2$<ALT-SHIFT-keys>$FG$ Free for user configurations in your $LK,"MyPutKey",A="MN:MyPutKey"$() handler, except for $FG,2$ALT-BACKSPACE$FG$ (undo). There are a few examples pre-defined, but you can change them if you wish.

View file

@ -8,16 +8,16 @@ You can create new, independent heaps using $LK,"HeapCtrlInit",A="MN:HeapCtrlIni
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. Its memory is like kernel memory in other operating systems. See $LK,"SysCAlloc",A="MN:SysCAlloc"$(), $LK,"SysMAlloc",A="MN:SysMAlloc"$(), $LK,"SysMAllocIdent",A="MN:SysMAllocIdent"$() and $LK,"SysStrNew",A="MN:SysStrNew"$().
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,"01D7800000",D="DD_UNCACHED_ALIAS"$$FG$. See $LK,"dev.uncached_alias",A="FF:::/Kernel/MultiProc.ZC,dev.uncached_alias"$.
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,"0100000000",D="DD_UNCACHED_ALIAS"$$FG$. See $LK,"dev.uncached_alias",A="FF:::/Kernel/MultiProc.ZC,dev.uncached_alias"$.
During an extended powered-on session of ZealOS, 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.
See $LK,"MemRep",A="MN:MemRep"$() and $LK,"::/Demo/MemDemo.ZC"$.
$FG,5$$TX+CX,"Single System-wide Memory Map"$
$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"000370BF",D="DD_KERNEL_END"$$FG$
$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"0003813F",D="DD_KERNEL_END"$$FG$
$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$
@ -26,20 +26,20 @@ $ID,-2$
$FG,2$ 0x00$TX,"00097000",D="DD_MP_VECT"$- 0x00$TX,"0009703B",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.
$FG,2$ 0x00000A0000- 0x00000BFFFF$FG$ VGA graphics mem with alias at $LK,"text",A="MN:text"$.vga_alias.
$FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"00101FFF",D="DD_SYS_FIXED_AREA_END"$$FG$ $LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for misc.
$FG,2$ 0x00$TX,"00110000",D="DD_MEM_HEAP_BASE"$- 0x00$TX,"7FFFFFFF",D="DD_MEM_HEAP_LIMIT"$$FG$ Code Heap mem.
$FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"00102FFF",D="DD_SYS_FIXED_AREA_END"$$FG$ $LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for misc.
$FG,2$ 0x00$TX,"0010D000",D="DD_MEM_HEAP_BASE"$- 0x00$TX,"33BFFFFF",D="DD_MEM_HEAP_LIMIT"$$FG$ Code Heap mem.
$FG,2$ 0x00E0000000- 0x00FFFFFFFF$FG$
$ID,2$32-bit devices could alloc memory at 0xF0000000 going up, but this is wrong, since some PCs already have devices at 0xF0000000. PCI devices are supported, so $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() flaws could become an issue.
$ID,-2$
$FG,2$ 0x0080000000-~0x00DFFFFFFF$FG$
$FG,2$ 0x0100000000-~0x$TX,"01D77FFFFF",D="DD_PHYSICAL_SPACE_END"$$FG$
$FG,2$ 0x0100000000-~0x$TX,"00FFFFFFFF",D="DD_PHYSICAL_SPACE_END"$$FG$
$ID,2$Data Heap mem. (The physical memory that exists in this range is data heap.)
$ID,-2$
$FG,2$ 0x$TX,"01D7800000",D="DD_UNCACHED_ALIAS"$- 0x$TX,"02D77FFFFF",D="DD_MAPPED_SPACE_END"$$FG$
$FG,2$ 0x$TX,"0100000000",D="DD_UNCACHED_ALIAS"$- 0x$TX,"01FFFFFFFF",D="DD_MAPPED_SPACE_END"$$FG$
$ID,2$Uncached alias of first 4Gig. (For 32-bit device access.)
$ID,-2$
$FG,2$ - 0x$TX,"02D77FFFFF",D="DD_MAPPED_SPACE_END"$$FG$
$FG,2$ - 0x$TX,"01FFFFFFFF",D="DD_MAPPED_SPACE_END"$$FG$
$ID,2$64-bit devices are alloced with $LK,"Mem64DevAlloc",A="MN:Mem64DevAlloc"$() counting backward$WW,0$.
$ID,-2$

View file

@ -1 +1 @@
$WW,1$The word $FG,2$Pag$FG$ refers to an arbitrilly created $LK,"MEM_PAG_SIZE",A="MN:MEM_PAG_SIZE"$ unit of heap allocation. ZealOS does not alter the CPU page tables after setting them up at boot in $LK,"SYS_INIT_PAGE_TABLES",A="MN:SYS_INIT_PAGE_TABLES"$, so the CPU hardware page size is rarely important.
$WW,1$The word $FG,2$Pag$FG$ refers to an arbitrarily created $LK,"MEM_PAG_SIZE",A="MN:MEM_PAG_SIZE"$ unit of heap allocation. ZealOS does not alter the CPU page tables after setting them up at boot in $LK,"SYS_INIT_PAGE_TABLES",A="MN:SYS_INIT_PAGE_TABLES"$, so the CPU hardware page size is rarely important.

View file

@ -37,5 +37,3 @@ To replace ISO9660, make hard-drive partition image of a measured size and copy
RedSea file system has no bad block table and no redundant allocation table.
See $LK,"Block Chain",A="FI:::/Doc/BlkChain.DD"$ for RedSea allocation bitmap discussion.
See $LK,"Reliability",A="FI:::/Doc/Reliability.DD"$ for RedSea reliability discussion.

View file

@ -1,24 +0,0 @@
$WW,1$$FG,5$$TX+CX,"RedSea Reliability"$$FG$
ZealOS is like the 1040EZ tax form compared to the full 1040 form. Obviously, it is simpler. If you allow mission creep, pretty soon the 1040EZ looks just like the 1040 and the messed-up 1040EZ has no purpose.
The Commodore 64 had a file system that was simple enough for peers in Terry's generation to enjoy the thrill of knowing exactly what is going on at the hardware level and writing fun projects to access it.
The primary design criteria is simplicity. If it is simple enough for only 100,000 people to learn, lets try to make it simpler so that 1 million can learn it.
Obviously, we don't do bad block tables, or redundant FATs.
We use the simplest possible technique, a contiguous-file-only allocation bitmap, not $LK,"Block Chains",A="FI:::/Doc/BlkChain.DD"$ or FAT tables.
You can be a good toy or you can be a good professional tool, but not both. ZealOS's file manager will start too slowly once a few thousand files exist because the file manager makes a list of all files on start-up.
Do not have more than a few thousand files or the file manager will not function.
You are encouraged to keep your entire drive limited to, maybe, 100 Meg of files because you are suppoosed to operate as a kayak instead of a Titanic. If you do this, backing-up will be only a minute or so and you should do it at least once a day.
Third party software should be run from ISO files or CD/DVDs directly, without installing to hard drive.
Multimedia graphics and sound is, basically, forbidden. If you ignore this, all hell will break loose because memory will fragment with large files and the original vision of kayak hard-drive back-ups won't work.
$FG,8$
* "Commodore 64" is a trademark owned by Polabe Holding NV.

View file

@ -40,7 +40,7 @@ A three button mouse is like a leg you cannot put weight on. ZealOS just does ha
* No distinction between $FG,2$thread$FG$, $FG,2$process$FG$ or $FG,2$task$FG$.
* The $LK,"Scheduler",A="FI:::/Kernel/Sched.ZC"$ is for home systems. It is not preemptiove. Disk requests are not broken-up, so sharing is bad. It's wonderfully simple.
* The $LK,"Scheduler",A="FI:::/Kernel/Sched.ZC"$ is for home systems. It is not preemptive. Disk requests are not broken-up, so sharing is bad. It's wonderfully simple.
* $LK,"MultiCore",A="FI:::/Doc/MultiCore.DD"$ is done $FG,2$master/slave$FG$, instead of $FG,2$SMP$FG$. $FG,2$Core0$FG$ applications explicitly assigns jobs. Locks are present allowing multicore file, heap, and hardware access, though.

View file

@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Why Not More?"$$FG$
If a feature cannot be made to work correctly and consistently, professional companies usually remove the feature. Because PC hardware is so diverse, getting things to work on all people's computers is really difficult. For one thing, you practically have to own all the different hardware to write drivers for it. If a company wanted to sell a PC operating system, they would offer a warranty and, therefore, could not get away with amateur behavior. ZealOS absolutely requires 64-bit computers, so we leave behind much trouble, but plenty remains.
The PCI bus interface is what modern hardware uses. Before PCI, life was simple and devices used I/O ports. After studying $LK,"PCI Interrupts",A="FI:::/Demo/Lectures/PCIInterrupts.ZC"$ and attempting to do a HDAudio driver, Terry Davis came to realize that modern PCI devices require ten times more code and he cannot even come close to making them work on everyone's machine because with PCI devices there are several models to worry about, unlike with the older ISA bus devices which can be done with one driver.
The PCI bus interface is what modern hardware uses. Before PCI, life was simple and devices used I/O ports. After studying $LK,"PCI Interrupts",A="FI:::/Demo/Lectures/PCIInterrupts.ZC"$ and attempting to do a HDAudio driver, Terry Davis came to realize that modern PCI devices require ten times more code and he could not even come close to making them work on everyone's machine because with PCI devices there are several models to worry about, unlike with the older ISA bus devices which can be done with one driver.
Currently, ZealOS has no PCI drivers beyond AHCI and networking. Most drivers use I/O ports and operate in ISA bus mode. At this point, we only have one driver for each type of device and it is delightfully simple that way. ZealOS has one $LK,"keyboard",A="FI:::/Kernel/SerialDev/Keyboard.ZC"$ driver, one $LK,"mouse",A="FI:::/Kernel/SerialDev/Mouse.ZC"$ driver, one $LK,"ATA hard drive",A="FI:::/Kernel/BlkDev/DiskAHCI.ZC"$ driver, one $LK,"ATAPI CD/DVD",A="FI:::/Kernel/BlkDev/DiskAHCI.ZC"$ driver, one $LK,"32-bit color high-res VBE graphics",A="FI:::/System/Gr/GrScreen.ZC"$ video driver and one $LK,"PC Speaker",A="MN:Sound"$ driver. We use the $LK,"PIT timer",A="MN:TimerInit"$ and $LK,"PIC Interrupt Controller",A="MN:IntPICInit"$. We use IRQ0 for timer, IRQ1 for keyboard, and IRQ12 for mouse. If IRQ12 is not firing, we are able to poll the mouse.
@ -12,8 +12,6 @@ Terry Davis made an incredible accomplishment by getting it to work on practical
Adding a USB driver would be really ugly with UHCI, EHCI, OHCI, USB1, USB2, USB3, ICH6, ICH7, ICH8, ICH9, ICH10, ICH11, ICH12, boot mode and regular mode for keyboard/mouse and a diversity of HID reports. It's hopeless. It could never offer anything but crappy, limited support and it would just add a ton of crappy code that mostly didn't work. What would ZealOS gain? Nothing. A keyboard or mouse would not be improved. Solid State USB drives would be nice, but it's not going to happen.
The same story is basically true for GPUs and audio drivers. If you attempt multimedia, everything will break because memory will get fragmented with huge multimedia files.
UEFI is pointless. If ZealOS is forced to run in VMware, QEMU or VirtualBox, they will always support non-UEFI mode. Without working, native hard drive and CD/DVD drivers, you can't get very far with UEFI on a native install, not to mention SecureBoot. UEFI is, first of all, redundant. If non-UEFI works in a virtual machine, supporting UEFI would only be redundant, ugly nasty code. The compiler does not create an ELF or PE format. We would have to ruin the beauty of the compiler.
God talks.

View file

@ -5220,7 +5220,7 @@
2000 2 Virtual-Bus / AlacrityVM bridge
11DB Sega Enterprises Ltd
1234 Dreamcast Broadband Adapter
11DC Queuestra Corp
11DC Questra Corp
11DD Crosfield Electronics Ltd
11DE Zoran Corporation
6057 59568 Mc3aDo <a href 6067 zr36067pqc zoran
@ -5494,7 +5494,7 @@
1210 MPEG Fusion
2110 VideoPlex-pci VideoPlex pci bpc1825 rev a
2120 VideoPlex plus VideoPlex BPC 1851 A
2130 VideoQueuest
2130 VideoQuest
1256 Perceptive Solutions Inc.
4201 PCI-2240i EIDE Adapter
4401 PCI-2220i Dale EIDE Adapter

View file

@ -15,7 +15,7 @@ U0 LoadDocDefines()
//$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/System/Boot/BootDVD.ZC,DD_BOOT_HIGH_LOC_DVD"$
$TR,"LineRep"$
$ID,2$DefinePrint("DD_ZEALOS_LOC","97,274");
$ID,2$DefinePrint("DD_ZEALOS_LOC","98,216");
$ID,-2$
DefinePrint("DD_MP_VECT", "%08X", MP_VECT_ADDR);
DefinePrint("DD_MP_VECT_END", "%08X", MP_VECT_ADDR + COREAP_16BIT_INIT_END - COREAP_16BIT_INIT - 1);