Fix formatting in AHCI reporting, installer Upgrade question.

Rename Seth --> Executive.
This commit is contained in:
TomAwezome 2021-07-02 01:04:42 -04:00
parent 2743cf6ace
commit 0cb2d21007
37 changed files with 132 additions and 120 deletions

View File

@ -355,7 +355,7 @@ U0 MPMenDraw(CDC *dc2)
dc->depth_buf = NULL;
DCDel(dc);
LBtr(&mp_not_done_flags, Gs->num);
Seed; //Return Seth task to timer-based.
Seed; //Return Executive task to timer-based.
}
U0 MissilePos(I64 m, F64 é, I64 *_x, I64 *_y)

View File

@ -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_ZEAL_SERVER))
if (!Bt(&sys_run_level, RLf_SYSTEM_SERVER))
{
Raw(ON);
"Note: Still in boot phase.\n";
@ -106,7 +106,7 @@ U0 LexExcept(CCompCtrl *cc, U8 *str=NULL)
LexPutPos(cc);
cc->error_count++;
FlushMessages;
if (!Bt(&sys_run_level, RLf_ZEAL_SERVER))
if (!Bt(&sys_run_level, RLf_SYSTEM_SERVER))
Debug("Type \"Fix;\"");
throw('Compiler');
}

View File

@ -365,7 +365,7 @@ $ID,5$$$=-CTASK_NEG_OFFSET
offset(CTask.addr)==0
Spawn(): CAlloc()
TaskDel(): Free()
CSysFixedArea.Zeal
CSysFixedArea.system
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.

View File

@ -1,4 +1,4 @@
$TR-UL,"Zeal"$
$TR-UL,"System"$
$ID,2$$TR,"SysMessageFlags"$
$ID,2$sys_message_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$
@ -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,"Zeal"$
$ID,2$$TR,"System"$
$ID,2$$ID,-2$$TR,"User"$
$ID,2$$ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$$TR,"Game1"$

View File

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

View File

@ -1,5 +1,5 @@
/*The ~/Registry.CC file is CosmiC code.
You can execute a tree branch of it. The Zeal
You can execute a tree branch of it. The System
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

View File

@ -1,4 +1,10 @@
$WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$
$IV,1$----07/01/21 23:51:14----$IV,0$
* Raised version number to 0.02.
* Added support for reading TempleOS, ZenithOS, and ZealOS ISOs.
* Renames:
- Seth --> Executive
$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.

View File

@ -15,7 +15,7 @@ $ID,2$3D $LK,"Sprites",A="FI:::/Doc/Sprite.DD"$ are stored as a mesh of triangle
$ID,-2$$TR,"If the compiler is JIT, isn't it an interpretor?"$
$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$Zeal$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$System$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?"$
@ -45,7 +45,7 @@ $ID,2$The editor periodically takes a snap-shot of the document for $FG,2$UNDO$F
$ID,-2$$TR,"Why is it in text mode?"$
$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$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$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$System$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$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?"$

View File

@ -148,8 +148,8 @@ $ID,2$There is no distinction between $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2
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 System task on $FG,2$Core0$FG$ is also its $FG,2$Seth$FG$ task.
$ID,-2$$TR,"Executive Tasks"$
$ID,2$Each CPU core has an $FG,2$Executive$FG$ task that is immortal. The System task on $FG,2$Core0$FG$ is also its $FG,2$Executive$FG$ task.
$ID,-2$$TR,"Code and Data 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"$
@ -266,6 +266,6 @@ $ID,-2$$TR,"Join"$
$ID,2$When two parts of a program have a common low-level routine, that routine is often labeled SomethingJoin.
$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,"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$$TR-C,"Multicore Core0/CoreAP"$
$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 $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive 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

@ -4,9 +4,9 @@ There are multicore safe locks for file access and heap allocations, however, so
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,"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$.
Each core has an $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive Tasks"$ which is the father of all tasks on that core. $LK,"System",A="FF:::/Doc/Glossary.DD,System Task"$ is the $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive 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"$().
You give a job to an $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive 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"$().
Note: You must use the $FG,2$LOCK$FG$ asm prefix when changing shared structures in a multicore environment. The $LK,"LBts",A="MN:LBts"$(), $LK,"LBtr",A="MN:LBtr"$() and $LK,"LBtc",A="MN:LBtc"$() insts have $FG,2$LOCK$FG$ prefixes. The compiler has a $FG,2$lock{}$FG$ feature but it doesn't work well. See $LK,"::/Demo/MultiCore/Lock.CC"$.

View File

@ -6,9 +6,9 @@ $WW,1$$LK,"KMain",A="MN:KMain"$()
includes $LK,"~/Once.CC"$
calls $LK,"OnceExe",A="MN:OnceExe"$().
$LK,"ZOnce",A="MN:ZOnce"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/Zeal$FG$ tree, executed at next boot by $FG,2$System$FG$.
$LK,"ZOnce",A="MN:ZOnce"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/System$FG$ tree, executed at next boot by $FG,2$System$FG$.
$LK,"Once",A="MN:Once"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/User$FG$ tree, executed at next boot by first $FG,2$User$FG$ term.
At boot, $LK,"OnceExe",A="MN:OnceExe"$(), executes $FG,2$Once/Zeal$FG$ tree, $LK,"ZOnceFlush",A="MN:ZOnceFlush"$()s it,
At boot, $LK,"OnceExe",A="MN:OnceExe"$(), executes $FG,2$Once/System$FG$ tree, $LK,"ZOnceFlush",A="MN:ZOnceFlush"$()s it,
executes $FG,2$Once/User$FG$ tree and $LK,"OnceFlush",A="MN:OnceFlush"$()s.

View File

@ -81,7 +81,7 @@ $LK,"ExePrint",A="MN:ExePrint"$(U8 *format, ...) compiles and execute a string.
$LK,"Once",A="MN:Once"$(U8 *format, ...) Writes User code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
$LK,"ZOnce",A="MN:ZOnce"$(U8 *format, ...) Writes Zeal code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
$LK,"ZOnce",A="MN:ZOnce"$(U8 *format, ...) Writes System code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
$LK,"InPrint",A="MN:InPrint"$(I64 mS, U8 *format, ...) $LK,"PutChars",A="MN:PutChars"$()s one at a time with a delay.

View File

@ -31,6 +31,6 @@ public U0 Cls()
}
public U0 ZCls()
{//Clear zeal terminal.
{//Clear System terminal.
Sys("DocClear;\n");
}

View File

@ -715,6 +715,8 @@ U0 AHCIInit()
CAHCIPort *port;
I64 i, bdf = PCIClassFind(PCIC_STORAGE << 16 | PCISC_AHCI << 8 + 1, 0); //0x010601, last byte prog_if, AHCI version 1.0
"\n";
if (bdf == -1)
{
"AHCI: No AHCI controller found.\n";
@ -754,16 +756,16 @@ U0 AHCIInit()
if (Bt(&hba->ports_implemented, i))
{//$BK,1$Make ports idle?$BK,0$
port = &hba->ports[i];
"AHCI: Port on %d, signature 0x%0X\n", i, port->signature;
"AHCI: Port %2d signature 0x%08X ", i, port->signature;
if (port->signature == AHCI_PxSIG_ATA || port->signature == AHCI_PxSIG_ATAPI)
{
if (port->signature == AHCI_PxSIG_ATAPI)
{
Bts(&port->command, AHCI_PxCMDf_ATAPI);
" ATAPI drive\n";
"ATAPI drive\n";
}
else
" ATA drive\n";
else if (port->signature == AHCI_PxSIG_ATA)
"ATA drive\n";
if (!AHCIPortIsIdle(i))
{
@ -771,8 +773,11 @@ U0 AHCIInit()
AHCIPortCmdStop(i);
}
}
else
"Unknown\n";
}
}
"\n";
}
Bool AHCIBootDVDProbeAll(CBlkDev *bd)
@ -787,7 +792,7 @@ Bool AHCIBootDVDProbeAll(CBlkDev *bd)
if (Bt(&blkdev.ahci_hba->ports_implemented, i))
{
port = &blkdev.ahci_hba->ports[i];
"AHCI: BootDVDProbeAll: Saw port at %d with signature 0x%0X\n", i, port->signature;
"AHCI: BootDVDProbeAll: Saw port at %2d with signature 0x%0X\n", i, port->signature;
if (port->signature == AHCI_PxSIG_ATAPI)
{

View File

@ -34,7 +34,9 @@ Bool ISOInit(CDrive *drive, I64 blk)
case ISOT_SUPPLEMENTARY_DESC:
de = &iso->root_dir_record;
drive->size = iso->vol_space_size.little * bd->blk_size >> BLK_SIZE_BITS;
if (!StrCompare(iso->publisher_id, "ZealOS RedSea"))
if (!StrCompare(iso->publisher_id, "ZealOS RedSea") ||
!StrCompare(iso->publisher_id, "ZenithOS RedSea") ||
!StrCompare(iso->publisher_id, "TempleOS RedSea"))
{
drive->fs_type = FSt_REDSEA;
bd->drv_offset = drive->drv_offset = 19 << 2 + drv_offset;

View File

@ -79,7 +79,7 @@ CHash *FunSegFind(U8 *addr, I64 *_offset)
for (i = 0; i < mp_count; i++)
{
c = &cpu_structs[i];
task = c->seth_task;
task = c->executive_task;
do
{
if (!TaskValidate(task))
@ -93,7 +93,7 @@ CHash *FunSegFind(U8 *addr, I64 *_offset)
}
task = task->next_task;
}
while (task != c->seth_task);
while (task != c->executive_task);
fs_abort_task:
}

View File

@ -13,7 +13,7 @@ CTask *sys_winmgr_task,
U8 *rev_bits_table; //Table with U8 bits reversed
CDate local_time_offset;
F64 *pow10_I64,
sys_os_version = 0.01;
sys_os_version = 0.02;
CAutoCompleteDictGlobals acd;
CAutoCompleteGlobals ac;

View File

@ -55,7 +55,7 @@ IRQ_TIMER:: //I_TIMER
@@20: CALL &IntCore0TimerHandler //Only Core 0 calls this.
@@25: XOR RAX, RAX
CMP RSI, U64 GS:CCPU.idle_task[RAX]
JE I32 RESTORE_SETH_TASK_IF_READY
JE I32 RESTORE_EXECUTIVE_TASK_IF_READY
JMP I32 RESTORE_RSI_TASK
//************************************

View File

@ -237,7 +237,7 @@ U0 KMain()
Debug;
}
LBts(&sys_run_level, RLf_ZEAL_SERVER);
LBts(&sys_run_level, RLf_SYSTEM_SERVER);
ServerTaskCont; //Never to return
}

View File

@ -17,14 +17,14 @@ USE64
FXSAVE U64 [RAX]
//Init CPU0 Struct
PUSH SYS_FIXED_AREA + CSysFixedArea.zeal
PUSH SYS_FIXED_AREA + CSysFixedArea.system
PUSH SYS_FIXED_AREA + CSysFixedArea.boot_cpu
PUSH 0
CALL &CPUStructInit
CALL SET_GS_BASE
//Init System HeapCtrl
MOV EDI, U32 SYS_FIXED_AREA + CSysFixedArea.zeal_hc
MOV EDI, U32 SYS_FIXED_AREA + CSysFixedArea.system_hc
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.sys_code_bp
MOV U64 CHeapCtrl.bp[RDI],RAX
MOV U32 CHeapCtrl.hc_signature[RDI], HEAP_CTRL_SIGNATURE_VAL
@ -33,16 +33,16 @@ USE64
MOV U64 CHeapCtrl.next_um[RDI], RAX
MOV U64 CHeapCtrl.last_um[RDI], RAX
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.zeal
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.system
MOV U64 CHeapCtrl.mem_task[RDI], RAX
MOV U64 CTask.code_heap[RAX], RDI
MOV U64 CTask.data_heap[RAX], RDI
MOV U32 CTask.task_signature[RAX], TASK_SIGNATURE_VAL
BTS U32 [SYS_RUN_LEVEL], RLf_16MEG_ZEAL_HEAP_CTRL
BTS U32 [SYS_RUN_LEVEL], RLf_16MEG_SYSTEM_HEAP_CTRL
PUSH MEM_ZEAL_STACK
PUSH U32 SYS_FIXED_AREA + CSysFixedArea.zeal
PUSH MEM_SYSTEM_STACK
PUSH U32 SYS_FIXED_AREA + CSysFixedArea.system
CALL &TaskInit
CALL SET_FS_BASE
MOV RSP, U64 CTask.rsp[RAX]

View File

@ -69,7 +69,7 @@ Bool Kill(CTask *task, Bool wait=TRUE, Bool just_break=FALSE)
if (task != sys_winmgr_task)
{
for (i = 0; i < mp_count; i++)
if (task == cpu_structs[i].seth_task)
if (task == cpu_structs[i].executive_task)
return FALSE;
LBts(&task->task_flags, TASKf_KILL_TASK);
if (wait)
@ -279,7 +279,7 @@ CTask *Spawn(U0 (*fp_start_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL,
if (!task_name)
task_name = "Unnamed Task";
if (!parent)
parent = Gs->seth_task;
parent = Gs->executive_task;
task->parent_task = parent;
task->gs = parent->gs;
if (sys_code_bp)

View File

@ -577,7 +577,7 @@ class CKernel
#define RLf_PATCHED 3
#define RLf_16MEG_SYS_CODE_BP 4
#define RLf_64BIT 5
#define RLf_16MEG_ZEAL_HEAP_CTRL 6
#define RLf_16MEG_SYSTEM_HEAP_CTRL 6
#define RLf_FULL_HEAPS 7
#define RLf_RAW 8
#define RLf_INTERRUPTS 9
@ -589,8 +589,8 @@ class CKernel
#define RLf_REGISTRY 15
#define RLf_HOME 16
#define RLf_AUTOCOMPLETE 17
#define RLf_ZEAL_SERVER 18
#define RLf_ONCE_ZEAL 19
#define RLf_SYSTEM_SERVER 18
#define RLf_ONCE_SYSTEM 19
#define RLf_ONCE_USER 20
#define RLF_16BIT (1 << RLf_16BIT)
@ -599,7 +599,7 @@ class CKernel
#define RLF_PATCHED (1 << RLf_PATCHED)
#define RLF_16MEG_SYS_CODE_BP (1 << RLf_16MEG_SYS_CODE_BP)
#define RLF_64BIT (1 << RLf_64BIT)
#define RLF_16MEG_ZEAL_HEAP_CTRL (1 << RLf_16MEG_ZEAL_HEAP_CTRL)
#define RLF_16MEG_SYSTEM_HEAP_CTRL (1 << RLf_16MEG_SYSTEM_HEAP_CTRL)
#define RLF_FULL_HEAPS (1 << RLf_FULL_HEAPS)
#define RLF_RAW (1 << RLf_RAW)
#define RLF_INTERRUPTS (1 << RLf_INTERRUPTS)
@ -611,8 +611,8 @@ class CKernel
#define RLF_REGISTRY (1 << RLf_REGISTRY)
#define RLF_HOME (1 << RLf_HOME)
#define RLF_AUTOCOMPLETE (1 << RLf_AUTOCOMPLETE)
#define RLF_ZEAL_SERVER (1 << RLf_ZEAL_SERVER)
#define RLF_ONCE_ZEAL (1 << RLf_ONCE_ZEAL)
#define RLF_SYSTEM_SERVER (1 << RLf_SYSTEM_SERVER)
#define RLF_ONCE_SYSTEM (1 << RLf_ONCE_SYSTEM)
#define RLF_ONCE_USER (1 << RLf_ONCE_USER)
#help_index "Processor"
@ -3501,10 +3501,10 @@ class CMemRange
//We add 2 pags, so a request is not rounded-up to next power of two.
#define MEM_EXTRA_HASH2_PAGS 2
#define MEM_ZEAL_STACK (MEM_PAG_SIZE*512) //Like 16384*MEM_PAG_SIZE
#define MEM_SETH_STACK (MEM_PAG_SIZE*512)
#define MEM_INTERRUPT_STACK (MEM_PAG_SIZE*512)
#define MEM_DEFAULT_STACK (MEM_PAG_SIZE*512)
#define MEM_SYSTEM_STACK (MEM_PAG_SIZE * 512) //Like 16384*MEM_PAG_SIZE
#define MEM_EXECUTIVE_STACK (MEM_PAG_SIZE * 512)
#define MEM_INTERRUPT_STACK (MEM_PAG_SIZE * 512)
#define MEM_DEFAULT_STACK (MEM_PAG_SIZE * 512)
#define TASK_HASH_TABLE_SIZE (1 << 10)
@ -4063,7 +4063,7 @@ public class CCPU //The Gs segment reg points to current CCPU.
idle_pt_hits;
F64 idle_factor;
I64 total_jiffies;
CTask *seth_task, *idle_task;
CTask *executive_task, *idle_task;
I64 tr, //task reg
swap_counter;
U0 (*profiler_timer_irq)(CTask *task);
@ -4083,9 +4083,9 @@ public class CSysFixedArea
{
CFPU init_fpu_mmx;
CCPU boot_cpu;
CTask zeal;
CTask system;
CBlkPool sys_code_bp;
CHeapCtrl zeal_hc;
CHeapCtrl system_hc;
$$ = ($$ + 0x1000 - 1) & -0x1000;
};

View File

@ -599,12 +599,12 @@ extern U0 MouseUpdate(I64 x, I64 y, I64 z, Bool l, Bool r);
#help_index "MultiCore"
extern U0 Core0StartMP();
extern U0 CoreAPSethTask();
extern U0 CoreAPExecutiveTask();
public extern U0 MPInt(U8 num, I64 cpu_num=1);
public extern U0 MPIntAll(U8 num);
public extern U0 MPNMInt();
extern CTask *SpawnQueue(U0 (*fp_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL, I64 target_cpu,
CTask *parent=NULL, //NULL means zeal
CTask *parent=NULL, //NULL means system_task
I64 stack_size=0, I64 flags=1<<JOBf_ADD_TO_QUE);
#help_index "MultiCore;Boot"
@ -691,7 +691,7 @@ public extern U0 WinDerivedValsUpdate( CTask *task);
#help_index "Task;Job/Exe;Task/Job/Exe;MultiCore"
public extern CTask *Spawn(U0 (*fp_addr)(U8 *data), U8 *data=NULL,
U8 *task_name=NULL, I64 target_cpu=-1, //-1 means current CPU
CTask *parent=NULL, //NULL means zeal
CTask *parent=NULL, //NULL means system_task
I64 stack_size=0, I64 flags=1<<JOBf_ADD_TO_QUE);
#help_index "Time/CPU Cycles;Time/Jiffies"

View File

@ -59,7 +59,7 @@ USE64
FNINIT
MOV RAX, RSI
CALL SET_GS_BASE
@@10: MOV RAX, U64 CCPU.seth_task[RSI]
@@10: MOV RAX, U64 CCPU.executive_task[RSI]
TEST RAX, RAX
JZ @@10
MOV U64 CTask.gs[RAX], RSI
@ -114,20 +114,20 @@ CTSS *TSSNew(I64 cpu_num)
return tss;
}
CCPU *CPUStructInit(I64 num, CCPU *c, CTask *seth_task)
{//Seth is null when called by system_task on CSysFixedArea.boot_cpu0
CCPU *CPUStructInit(I64 num, CCPU *c, CTask *executive_task)
{//Executive is null when called by system_task on CSysFixedArea.boot_cpu0
MemSet(c, 0, sizeof(CCPU));
c->addr = c;
c->num = num;
c->idle_factor = 0.01;
QueueInit(&c->next_dying);
if (Bt(&sys_run_level, RLf_16MEG_ZEAL_HEAP_CTRL))
if (Bt(&sys_run_level, RLf_16MEG_SYSTEM_HEAP_CTRL))
{
c->idle_task = Spawn(0, NULL, "Idle Task",, Fs,, 0);
LBts(&c->idle_task->task_flags, TASKf_IDLE);
c->tss = TSSNew(num);
}
c->seth_task = seth_task;// It waits for this to be filled-in: $LK,"seth_task",A="FF:::/Kernel/MultiProc.CC,seth_task"$
c->executive_task = executive_task;// It waits for this to be filled-in: $LK,"executive_task",A="FF:::/Kernel/MultiProc.CC,executive_task"$
return c;
}
@ -197,7 +197,7 @@ U0 MPAPICInit()
#assert !offset(CJobCtrl.next_waiting)
U0 CoreAPSethTask()
U0 CoreAPExecutiveTask()
{
CJobCtrl *ctrl = &Fs->server_ctrl;
@ -223,12 +223,12 @@ U0 CoreAPSethTask()
CJob *JobQueue(I64 (*fp_addr)(U8 *data), U8 *data=NULL, I64 target_cpu=1, I64 flags=1<<JOBf_FREE_ON_COMPLETE,
I64 job_code=JOBT_CALL, U8 *aux_str=NULL, I64 aux1=0, I64 aux2=0)
{//Queue multicore jobs, handled by Seth tasks.
{//Queue multicore jobs, handled by Executive tasks.
//Set flags to zero if you wish to get the res.
//See $LK,"::/Demo/MultiCore/Lock.CC"$
CJobCtrl *ctrl;
CJob *tmpc;
CTask *seth;
CTask *executive;
if (!(0 <= target_cpu < mp_count))
throw('MultCore');
@ -241,14 +241,14 @@ CJob *JobQueue(I64 (*fp_addr)(U8 *data), U8 *data=NULL, I64 target_cpu=1, I64 fl
tmpc->flags = flags;
tmpc->aux1 = aux1;
tmpc->aux2 = aux2;
seth = cpu_structs[target_cpu].seth_task;
tmpc->ctrl = ctrl = &seth->server_ctrl;
executive = cpu_structs[target_cpu].executive_task;
tmpc->ctrl = ctrl = &executive->server_ctrl;
PUSHFD
CLI
while (LBts(&ctrl->flags, JOBCf_LOCKED))
Yield;
if (ctrl->next_waiting == ctrl && LBtr(&seth->task_flags, TASKf_AWAITING_MESSAGE))
if (ctrl->next_waiting == ctrl && LBtr(&executive->task_flags, TASKf_AWAITING_MESSAGE))
MPInt(I_WAKE, target_cpu);
QueueInsert(tmpc, ctrl->last_waiting);
LBtr(&ctrl->flags, JOBCf_LOCKED);
@ -287,11 +287,11 @@ CTask *SpawnQueue(U0 (*fp_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL,
return res;
}
U0 CoreAPSethInit()
{//Called by multicore's seth dask after $LK,"Core0StartMP",A="MN:Core0StartMP"$()
U0 CoreAPExecutiveInit()
{//Called by multicore's executive task after $LK,"Core0StartMP",A="MN:Core0StartMP"$()
//as the first thing a CPU does before waiting for jobs.
MPAPICInit;
Fs->rip = &CoreAPSethTask;
Fs->rip = &CoreAPExecutiveTask;
TaskContextRestore;
}
@ -312,8 +312,8 @@ U0 Core0StartMP()
for (i = 1; i < my_mp_count; i++)
{
c = &cpu_structs[i];
JobQueueDel(&c->seth_task->server_ctrl.next_waiting);
JobQueueDel(&c->seth_task->server_ctrl.next_done);
JobQueueDel(&c->executive_task->server_ctrl.next_waiting);
JobQueueDel(&c->executive_task->server_ctrl.next_done);
}
}
MemSet(&cpu_structs[1], 0, sizeof(CCPU) * (MP_PROCESSORS_NUM - 1));
@ -346,17 +346,17 @@ U0 Core0StartMP()
for (i = 1; i < my_mp_count; i++)
{
StrPrint(buf, "Seth Task CPU%02X", i);
task = Spawn(&CoreAPSethInit, NULL, buf,,, MEM_SETH_STACK, 0);
StrPrint(buf, "Executive Task CPU%02X", i);
task = Spawn(&CoreAPExecutiveInit, NULL, buf,,, MEM_EXECUTIVE_STACK, 0);
task->rflags = RFLAGG_START;
//$LK,"CTask",A="MN:CTask"$ alloced off this core's seth_task's heap (Which is System task)
//$LK,"CTask",A="MN:CTask"$ alloced off this core's executive_task's heap (Which is System task)
CPUStructInit(i, &cpu_structs[i], task);
WBINVD //Not sure why this is needed. Might just need delay.
}
//Make sure they're all up-and-running
for (i = 1; i < my_mp_count; i++)
while (!Bt(&cpu_structs[i].seth_task->task_flags, TASKf_AWAITING_MESSAGE))
while (!Bt(&cpu_structs[i].executive_task->task_flags, TASKf_AWAITING_MESSAGE))
PAUSE;
POPFD

View File

@ -1,6 +1,6 @@
/*On each core, tasks are linked in a
circular doubly-linked list queue with
the Seth task as the head. On Core0,
the Executive task as the head. On Core0,
the queue order represents the front-to-back
window stack order with the window mgr
as the wallpaper.
@ -30,9 +30,9 @@ The scheduler checks for a few keys:
<CTRL-ALT-c> breaks execution of a program.
Each core has its own circular task queue.
For AP processors, they have a "Seth" task
For AP processors, they have an "Executive" task
which stays in a loop waiting for jobs or
requests to spawn tasks. See $LK,"CoreAPSethTask",A="MN:CoreAPSethTask"$().
requests to spawn tasks. See $LK,"CoreAPExecutiveTask",A="MN:CoreAPExecutiveTask"$().
$HL,1$*/
U0 TaskFocusNext()
@ -195,8 +195,8 @@ RESTORE_RSI_TASK2:
@@25: MOV RSI, U64 CTask.next_task[RSI]
XOR RAX, RAX
CMP U64 GS:CCPU.seth_task[RAX], RSI
JNE @@20 //Jmp if not Seth
CMP U64 GS:CCPU.executive_task[RAX], RSI
JNE @@20 //Jmp if not Executive
BTR U32 GS:CCPU.cpu_flags[RAX], CPUf_RAN_A_TASK
JC @@20 //Jmp if had chance for IRQ already
MOV RAX, U64 GS:CCPU.idle_task[RAX]
@ -208,9 +208,9 @@ RESTORE_RSI_TASK2:
SYS_IDLE_PT::
CLI
RESTORE_SETH_TASK_IF_READY:
RESTORE_EXECUTIVE_TASK_IF_READY:
XOR RAX, RAX
MOV RSI, GS:CCPU.seth_task[RAX]
MOV RSI, GS:CCPU.executive_task[RAX]
JMP RESTORE_RSI_TASK
HANDLE_SYSF_KEY_EVENT:
@ -227,7 +227,7 @@ HANDLE_SYSF_KEY_EVENT:
JC I32 &Reboot
CMP U64 GS:CCPU.idle_task[RBX], RSI
JE RESTORE_SETH_TASK_IF_READY
JE RESTORE_EXECUTIVE_TASK_IF_READY
LOCK
BTR U32 [RAX], CTRL_ALT_TAB
@ -245,7 +245,7 @@ HANDLE_SYSF_KEY_EVENT:
BREAK_FOCUS_USER:
MOV RSI, U64 [SYS_FOCUS_TASK]
TEST RSI, RSI
JZ RESTORE_SETH_TASK_IF_READY
JZ RESTORE_EXECUTIVE_TASK_IF_READY
BT U64 CTask.win_inhibit[RSI], WIf_SELF_FOCUS
JC I32 RESTORE_RSI_TASK
LOCK
@ -270,7 +270,7 @@ END_FOCUS_USER:
MOV RSI, U64 [SYS_FOCUS_TASK]
CALL &TaskFocusNext
TEST RSI, RSI
JZ I32 RESTORE_SETH_TASK_IF_READY
JZ I32 RESTORE_EXECUTIVE_TASK_IF_READY
MOV RAX, RSI
CALL SET_FS_BASE
BT U64 CTask.win_inhibit[RSI], WIf_SELF_FOCUS

View File

@ -3,8 +3,8 @@ U0 InstallDrive(U8 drv_let)
U8 *st;
while (!DriveCheck(blkdev.let_to_drive[drv_let - 'A'], FALSE))
Yield;
Sleep(500);
Sleep(1);
Sleep(1000);
ExePrint("CopyTree(\"::/\",\"%C:/\");", drv_let);
ExePrint("DirMake(\"%C:/Tmp\");", drv_let);
@ -226,7 +226,8 @@ Bool DoInstall(Bool prompt_reboot)
"Continue Install Wizard ";
if (YorN)
{
"\n\nUpgrade an existing install, or create new Installation? (U/I): ";
"\n\nUpgrade an existing install,"
"\nor create new Installation? (U/I): ";
do
ch = ToUpper(CharGet(, FALSE));
while (ch != 'U' && ch != 'I');

View File

@ -4472,7 +4472,7 @@
1603 USB\Vid_04d9&Pid_160&Rev_0310 atm
1129 Firmworks
112A Hermes Electronics Co. Ltd.
112C Zeal Data Systems
112C Zenith Data Systems
112D Ravicad
8086 2200 pci simple controller
112E Infomedia
@ -7373,7 +7373,7 @@
15F6 Extreme Packet Device Inc
15F7 Banctec
15F8 Koga Electronics Co
15F9 Zeal Electronics Co
15F9 Zenith Electronics Co
15FA Axzam Corporation
15FB Zilog Inc.
15FC Techsan Electronics Co Ltd

View File

@ -91,7 +91,7 @@ U0 GrUpdateTasks()
for (i = 0; i < mp_count; i++)
{ //Loop through all cores.
task1 = task = cpu_structs[i].seth_task;
task1 = task = cpu_structs[i].executive_task;
do
{
if (!TaskValidate(task))

View File

@ -166,7 +166,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
{
c = &cpu_structs[i];
k += TSSSize(c->tss);
task1 = c->seth_task;
task1 = c->executive_task;
do
{
if (task1 != sys_task) {//system task located in Kernel mem
@ -178,7 +178,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
n += TaskQueueSize(task1);
task1 = task1->next_task;
}
while (task1 != c->seth_task);
while (task1 != c->executive_task);
task1 = c->idle_task;
j += MSize2(task1);
@ -244,14 +244,14 @@ public U0 MemRep()
{
c = &cpu_structs[i];
"$$PURPLE$$CPU%d$$FG$$\n$$ID,2$$", i;
task = c->seth_task;
task = c->executive_task;
do
{
if (!MemRepTask(task))
break;
task = task->next_task;
}
while (task != c->seth_task);
while (task != c->executive_task);
MemRepTask(c->idle_task, TRUE);
"$$ID,-2$$";

View File

@ -27,7 +27,7 @@ public U0 TaskRep()
{
c = &cpu_structs[i];
"$$PURPLE$$CPU%02X$$FG$$\n", i;
TaskRepTask(c->seth_task, 2);
TaskRepTask(c->executive_task, 2);
}
POPFD
}

Binary file not shown.

View File

@ -510,7 +510,7 @@ U0 WinMgrTask(I64)
try
{
wmt_start:
if (Bt(&sys_run_level, RLf_ZEAL_SERVER))
if (Bt(&sys_run_level, RLf_SYSTEM_SERVER))
TaskKillDying;
WinMgrSleep;

View File

@ -560,7 +560,7 @@ U0 FMCopy(CDoc *doc)
}
#define FMR_INCLUDE 0
#define FMR_ZEAL_INCLUDE 1
#define FMR_SYSTEM_INCLUDE 1
#define FMR_DELETE 2
#define FMR_RENAME 3
#define FMR_MKDIR 4
@ -582,7 +582,7 @@ I64 PopUpFMRight(U8 *header=NULL, U8 *footer=NULL)
DocPrint(doc, "%s",header);
DocPrint(doc, "$$CM+LX,1,1$$$$BT,\"INCLUDE \",LE=FMR_INCLUDE$$"
"$$CM+LX,29,0$$$$BT,\"SYSTEM INCLUDE \",LE=FMR_ZEAL_INCLUDE$$"
"$$CM+LX,29,0$$$$BT,\"SYSTEM INCLUDE \",LE=FMR_SYSTEM_INCLUDE$$"
"$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=FMR_DELETE$$"
"$$CM+LX,29,0$$$$BT,\"RENAME \",LE=FMR_RENAME$$"
"$$CM+LX,1,3 $$$$BT,\"MAKE DIRECTORY \",LE=FMR_MKDIR$$"
@ -612,7 +612,7 @@ U0 FMRightClick()
Message(MESSAGE_KEY_DOWN, 0, 0x3F0000003F);
break;
case FMR_ZEAL_INCLUDE:
case FMR_SYSTEM_INCLUDE:
Message(MESSAGE_KEY_DOWN, 0, 0x23F0000023F);
break;

View File

@ -224,8 +224,6 @@ U8 Mount2(U8 boot_drive_let, CDoc *_doc, Bool _caller_is_prtdisk)
case BDT_ATAPI:
if (type == BDT_ATAPI && !*base0_buf && _doc)
{
// DocPrint(doc, "\"GetBaseUnit(bd);\n\";\n");
// DocPrint(doc, "GetBaseUnit(bd);\n"); //Only $LK,"::/Kernel/KConfig.CC"$
DocPrint(doc, "\"AHCIBootDVDProbeAll(bd);\n\";\n");
DocPrint(doc, "AHCIBootDVDProbeAll(bd);\n"); //Only $LK,"::/Kernel/KConfig.CC"$
@ -241,8 +239,8 @@ U8 Mount2(U8 boot_drive_let, CDoc *_doc, Bool _caller_is_prtdisk)
}
break;
}
DocPrint(doc, "\"BlkDevAdd(bd, %d, %d, %d);\n\";\n", prt_num, whole_drive, make_free);
DocPrint(doc, "BlkDevAdd(bd, %d, %d, %d);\n", prt_num, whole_drive, make_free);
DocPrint(doc, "\"BlkDevAdd(bd, 0x%0X, %d, %d);\n\";\n", prt_num, whole_drive, make_free);
DocPrint(doc, "BlkDevAdd(bd, 0x%0X, %d, %d);\n", prt_num, whole_drive, make_free);
if (_doc) //Called by $LK,"::/Kernel/KConfig.CC"$
count++;
else

View File

@ -20,7 +20,7 @@ Bool RegCache()
return TRUE;
}
public Bool RegDefault(U8 *path, U8 *val, Bool is_zeal_entry=FALSE)
public Bool RegDefault(U8 *path, U8 *val, Bool is_system_entry=FALSE)
{//Add code doc tree branch to registry.
Bool res, unlock_doc;
@ -30,7 +30,7 @@ public Bool RegDefault(U8 *path, U8 *val, Bool is_zeal_entry=FALSE)
{
DocTreeMake(sys_registry_doc, path);
DocPrint(sys_registry_doc, "%s", val);
if (is_zeal_entry)
if (is_system_entry)
{
if (Fs == sys_task)
ExePrint("%s", val);
@ -134,11 +134,11 @@ U0 RegInit()
RegDefault("System/SysMessageFlags", "sys_message_flags[0]=0;\n", TRUE);
StrPrint(buf, "registry_version=%4.3f;\n", sys_os_version);
version_present = RegDefault("System/SysRegVer", buf, TRUE);
RegExe("Zeal");
RegExe("System");
if (registry_version != sys_os_version)
{
RegWrite("System/SysRegVer", buf);
RegExe("Zeal");
RegExe("System");
}
}
@ -147,7 +147,7 @@ U0 RegInit()
public U0 ZOnceFlush()
{//Flush ZOnce() buf.
RegWrite("Once/Zeal", "");
RegWrite("Once/System", "");
}
public U0 OnceFlush()
@ -156,12 +156,12 @@ public U0 OnceFlush()
}
public U0 ZOnce(U8 *format, ...)
{//Add Zeal code to $LK,"~/Registry.CC"$, executed next boot.
{//Add System code to $LK,"~/Registry.CC"$, executed next boot.
U8 *buf = StrPrintJoin(NULL, format, argc, argv);
if (!Bt(&sys_run_level, RLf_ONCE_ZEAL))
if (!Bt(&sys_run_level, RLf_ONCE_SYSTEM))
ZOnceFlush;
RegAppend("Once/Zeal", "%s\n", buf);
RegAppend("Once/System", "%s\n", buf);
Free(buf);
}
@ -176,15 +176,15 @@ public U0 Once(U8 *format, ...)
}
public U0 ZOnceDrive(U8 drv_let=0, U8 *format, ...)
{//Add Zeal code to drv $LK,"~/Registry.CC"$, executed next boot.
{//Add System code to drv $LK,"~/Registry.CC"$, executed next boot.
U8 *buf = StrPrintJoin(NULL, format, argc, argv);
I64 old_drive_let = *sys_registry_doc->filename.name;
if (drv_let)
*sys_registry_doc->filename.name = drv_let;
if (!Bt(&sys_run_level, RLf_ONCE_ZEAL))
if (!Bt(&sys_run_level, RLf_ONCE_SYSTEM))
ZOnceFlush;
RegAppend("Once/Zeal", "%s\n", buf);
RegAppend("Once/System", "%s\n", buf);
Free(buf);
*sys_registry_doc->filename.name = old_drive_let;
}
@ -208,13 +208,13 @@ public U0 OnceExe()
try
{
RegDefault("Once/Zeal", "");
if (RegCount("Once/Zeal") > 2)
RegDefault("Once/System", "");
if (RegCount("Once/System") > 2)
{
Sys("RegExe(\"Once/Zeal\");");
Sys("RegExe(\"Once/System\");");
ZOnceFlush;
}
LBts(&sys_run_level, RLf_ONCE_ZEAL);
LBts(&sys_run_level, RLf_ONCE_SYSTEM);
RegDefault("Once/User", "");
if (RegCount("Once/User") > 2)
@ -228,7 +228,7 @@ public U0 OnceExe()
catch
{
ZOnceFlush;
LBts(&sys_run_level, RLf_ONCE_ZEAL);
LBts(&sys_run_level, RLf_ONCE_SYSTEM);
OnceFlush;
LBts(&sys_run_level, RLf_ONCE_USER);
}