TempleOSCDV4.11.ISO
This commit is contained in:
1 parent
9206246147
commit
93ca216483
662 files changed
+6431
-7369
No files matched your search
@@ -29,5 +29,5 @@ $HC,"<center><img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600
|
||||
I worked for a company named Xytec Corp. 1997-1999. We made FPGA-based image processing equipment. I wrote $FG,2$$TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$$FG$ from 2000-2001 for H.A.R.E. I worked as head software/electrical engineer for a company called Graphic Technologies, 2001-2002, making replacement chips for toner printer cartridges so they could be refilled.
|
||||
|
||||
$FG,5$Credits:$FG$
|
||||
See $LK,"::/Doc/Credits.TXT"$.
|
||||
See $LK,"::/Doc/Credits.DD"$.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Assembler"$$FG$
|
||||
|
||||
See $LK,"::/Compiler/OpCodes.TXT"$ for opcodes. They're not standard. Some invalid insts are not flagged and some valid insts are not implemented. 16-bit asm support is limited.
|
||||
See $LK,"::/Compiler/OpCodes.DD"$ for opcodes. They're not standard. Some invalid insts are not flagged and some valid insts are not implemented. 16-bit asm support is limited.
|
||||
|
||||
Here are example inst formats:
|
||||
$HL,1$ ADD RAX,I64 FS:DISP[RSI+RDI*8]
|
||||
@@ -44,4 +44,4 @@ $FG,2$MODULE_ORG$FG$ $FG,4$num$FG$
|
||||
|
||||
$FG,2$BINFILE$FG,4$ "FileName.BIN"$FG$;
|
||||
|
||||
See $LK,"Assembly Language",A="FF:::/Doc/GuideLines.TXT,Assembly Language"$, $LK,"::/Demo/Asm/AsmAndC1.CPP"$, $LK,"::/Demo/Asm/AsmAndC2.CPP"$ and $LK,"::/Demo/Asm/AsmAndC3.CPP"$.
|
||||
See $LK,"Assembly Language",A="FF:::/Doc/GuideLines.DD,Assembly Language"$, $LK,"::/Demo/Asm/AsmAndC1.HC"$, $LK,"::/Demo/Asm/AsmAndC2.HC"$ and $LK,"::/Demo/Asm/AsmAndC3.HC"$.
|
||||
@@ -1,4 +1,4 @@
|
||||
$FG,2$$WW,1$AutoComplete$FG$ is the $FG,7$LTGRAY$FG$ window on the right of the screen. $LK,"ACInit",A="MN:ACInit"$() collects words from all text files in subdirectories. Normally, the call to $LK,"ACInit",A="MN:ACInit"$() is in $LK,"HomeSys.CPP",A="FF:~/HomeSys.CPP,ACInit"$. It provides auto-complete for typing, jump-to-code and jump-to-dictionary functionality.
|
||||
$FG,2$$WW,1$AutoComplete$FG$ is the $FG,7$LTGRAY$FG$ window on the right of the screen. $LK,"ACInit",A="MN:ACInit"$() collects words from all text files in subdirectories. Normally, the call to $LK,"ACInit",A="MN:ACInit"$() is in $LK,"HomeSys.HC",A="FF:~/HomeSys.HC,ACInit"$. It provides auto-complete for typing, jump-to-code and jump-to-dictionary functionality.
|
||||
|
||||
$FG,2$<ALT-SHIFT-A>$FG$ Closes the $FG,7$LTGRAY$FG$ AutoComplete window.
|
||||
$FG,2$<ALT-a>$FG$ Opens the $FG,7$LTGRAY$FG$ AutoComplete window.
|
||||
@@ -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 TempleOS processed dictionary files with the stand-alone program $LK,"::/Adam/AutoComplete/ACDictGen.CPP"$.
|
||||
If you have the raw Project Gutenberg dictionary file, you can generate the TempleOS processed dictionary files with the stand-alone program $LK,"::/Adam/AutoComplete/ACDictGen.HC"$.
|
||||
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,2$AutoFiles$FG$ are used to generate user input to automate operations. The TempleOS tour is done with an $FG,2$AutoFile$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$AutoFile$FG$ runs, a child task is $LK,"Spawn",A="MN:Spawn"$()ed which intercepts real user input and generates fake input. AutoFiles are $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ programs run by the child whose stdout goes to the parent's input buffer. $LK,"Msg",A="MN:Msg"$() can be included in an $FG,2$AutoFile$FG$ to send special keys or mouse cmds to the parent. While an $FG,2$AutoFile$FG$ is running, the normal input gets diverted to the AutoFile 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$AutoFile$FG$.
|
||||
When an $FG,2$AutoFile$FG$ runs, a child task is $LK,"Spawn",A="MN:Spawn"$()ed which intercepts real user input and generates fake input. AutoFiles are $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ programs run by the child whose stdout goes to the parent's input buffer. $LK,"Msg",A="MN:Msg"$() can be included in an $FG,2$AutoFile$FG$ to send special keys or mouse cmds to the parent. While an $FG,2$AutoFile$FG$ is running, the normal input gets diverted to the AutoFile 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$AutoFile$FG$.
|
||||
|
||||
See $LK,"::/Demo/AutoFile/AFDir.AUT"$.
|
||||
|
||||
File renamed without changes.
Binary file not shown.
@@ -2,27 +2,50 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$
|
||||
|
||||
Use $LK,"R",A="MN:R"$() to rename if I change a label.
|
||||
|
||||
$IV,1$----08/08/16 08:32:26----$IV,0$
|
||||
$IV,1$----09/18/16 17:15:54----$IV,0$
|
||||
|
||||
$IV,1$----09/18/16 12:52:03----$IV,0$
|
||||
* $BK,1$TempleOS version 4.11 Released$BK,0$
|
||||
* Fixed bug in $LK,"IsDotZ",A="MN:IsDotZ"$() and $LK,"IsDotC",A="MN:IsDotC"$().
|
||||
* $LK,"R",A="MN:R"$("CPP","HC");
|
||||
* $LK,"R",A="MN:R"$("HPP","HH");
|
||||
* $LK,"R",A="MN:R"$("TXT","DD");
|
||||
|
||||
$IV,1$----09/06/16 13:01:42----$IV,0$
|
||||
* Added $LK,"OPTf_WARN_HEADER_MISMATCH",A="MN:OPTf_WARN_HEADER_MISMATCH"$.
|
||||
* Changed $LK,"WinInside",A="MN:WinInside"$().
|
||||
* Got rid of $FG,4$MSG_FOCUS$FG$, $FG,4$MSG_MOVE$FG$, and $FG,4$MSG_SIZE$FG$. There are no longer messages for moving and sizing windows.
|
||||
|
||||
$IV,1$----09/06/16 02:40:43----$IV,0$
|
||||
* Improved $LK,"::/Demo/MagicPairs.HC"$.
|
||||
|
||||
$IV,1$----08/27/16 09:45:39----$IV,0$
|
||||
* Improved $LK,"CPURep",A="MN:CPURep"$().
|
||||
* Improved $LK,"::/Misc/OSTestSuite.HC"$.
|
||||
* Added $LK,"BirthWait",A="MN:BirthWait"$() and $LK,"DeathWait",A="MN:DeathWait"$().
|
||||
|
||||
$IV,1$----08/22/16 04:14:47----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("TK_DOT_DOT_DOT","TK_ELLIPSIS");
|
||||
|
||||
$IV,1$----07/17/16 13:03:12----$IV,0$
|
||||
* Improved $LK,"DocOpt",A="MN:DocOpt"$().
|
||||
|
||||
$IV,1$----07/17/16 03:23:53----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/RawHide.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/RawHide.HC"$.
|
||||
|
||||
$IV,1$----07/15/16 10:11:10----$IV,0$
|
||||
* $BK,1$TempleOS version 4.10 Released$BK,0$
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.HC"$.
|
||||
|
||||
$IV,1$----07/15/16 05:17:24----$IV,0$
|
||||
* Created $LK,"CDevGlbls",A="MN:CDevGlbls"$.uncached_alias.
|
||||
* Added 1 Gig page table support.
|
||||
|
||||
$IV,1$----07/13/16 17:21:19----$IV,0$
|
||||
* Added $LK,"::/Demo/MultiCore/RateCores.CPP"$.
|
||||
* Added multicore report to $LK,"CPURep",A="MN:CPURep"$().
|
||||
|
||||
$IV,1$----07/09/16 08:46:36----$IV,0$
|
||||
* Changed scoring in $LK,"::/Demo/Games/EagleDive.CPP"$.
|
||||
* Changed scoring in $LK,"::/Demo/Games/EagleDive.HC"$.
|
||||
* Replaced many $FG,2$"%Q"$FG$ with $FG,2$"%$$Q"$FG$.
|
||||
* Fixed $FG,2$'\x24'$FG$.
|
||||
* Added $FG,2$'\d'$FG$ for $FG,2$'$$'$FG$.
|
||||
@@ -37,11 +60,11 @@ $IV,1$----07/07/16 07:21:03----$IV,0$
|
||||
|
||||
$IV,1$----07/06/16 23:45:30----$IV,0$
|
||||
* Fixed multicore bug in $LK,"Sprite3",A="MN:Sprite3"$().
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.HC"$.
|
||||
|
||||
$IV,1$----07/05/16 06:03:47----$IV,0$
|
||||
* $BK,1$TempleOS version 4.09 Released$BK,0$
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.HC"$.
|
||||
* Improved $LK,"GrFillTri0",A="MN:GrFillTri0"$().
|
||||
|
||||
$IV,1$----07/03/16 04:30:05----$IV,0$
|
||||
@@ -50,18 +73,18 @@ $IV,1$----07/03/16 04:30:05----$IV,0$
|
||||
* Added $LK,"BDT_ISO_FILE_READ",A="MN:BDT_ISO_FILE_READ"$.
|
||||
|
||||
$IV,1$----07/01/16 05:29:08----$IV,0$
|
||||
* Made underscore mandatory on $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ callable asm functions.
|
||||
* Made underscore mandatory on $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ callable asm functions.
|
||||
|
||||
$IV,1$----06/28/16 13:15:08----$IV,0$
|
||||
* Changed $LK,"TaskRep",A="MN:TaskRep"$() and $LK,"MemRep",A="MN:MemRep"$().
|
||||
* Changed $LK,"::/Adam/WallPaper.CPP"$.
|
||||
* Changed $LK,"::/Adam/WallPaper.HC"$.
|
||||
|
||||
$IV,1$----06/26/16 14:01:16----$IV,0$
|
||||
* Added $LK,"LastFun",A="MN:LastFun"$(), $LK,"RunFile",A="MN:RunFile"$(), $LK,"RunFile2",A="MN:RunFile2"$() and $LK,"PopUpRunFile",A="MN:PopUpRunFile"$().
|
||||
* Made boot code modular.
|
||||
|
||||
$IV,1$----06/24/16 14:15:13----$IV,0$
|
||||
* Added A.I. to $LK,"::/Apps/KeepAway/KeepAway.CPP"$ and changed scoring.
|
||||
* Added A.I. to $LK,"::/Apps/KeepAway/KeepAway.HC"$ and changed scoring.
|
||||
|
||||
$IV,1$----06/24/16 02:55:42----$IV,0$
|
||||
* $BK,1$TempleOS version 4.08 Released$BK,0$
|
||||
@@ -80,24 +103,24 @@ $IV,1$----06/18/16 16:16:22----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("sub_switch_end","end");
|
||||
* Changed args to $LK,"PutDirLink",A="MN:PutDirLink"$() and $LK,"PutFileLink",A="MN:PutFileLink"$().
|
||||
* Added $LK,"HomeSet",A="MN:HomeSet"$(). Added $FG,2$"~"$FG$ as special directory designator.
|
||||
* Changed filename exclude mask char from $FG,2$'~'$FG$ to $FG,2$'!'$FG$. See $LK,"File Utils",A="FI:::/Doc/FileUtils.TXT"$.
|
||||
* Got rid of $FG,4$/Home/HomePkgs.CPP$FG$.
|
||||
* Changed filename exclude mask char from $FG,2$'~'$FG$ to $FG,2$'!'$FG$. See $LK,"File Utils",A="FI:::/Doc/FileUtils.DD"$.
|
||||
* Got rid of $FG,4$/Home/HomePkgs.HC$FG$.
|
||||
|
||||
$IV,1$----06/16/16 20:59:41----$IV,0$
|
||||
* $FG,2$<CTRL-ALT-t>$FG$ is terminal window.
|
||||
* $FG,2$<CTRL-ALT-n>$FG$ is next task.
|
||||
|
||||
$IV,1$----06/16/16 19:49:39----$IV,0$
|
||||
* Added $LK,"::/Doc/Comm.CPP"$.
|
||||
* Added $LK,"::/Doc/StdTempleOSPC.TXT"$.
|
||||
* Added $LK,"::/Kernel/FontCyrillic.CPP"$. $FG,2$<CTRL-ALT-f>$FG$
|
||||
* Added $LK,"::/Doc/Comm.HC"$.
|
||||
* Added $LK,"::/Doc/StdTempleOSPC.DD"$.
|
||||
* Added $LK,"::/Kernel/FontCyrillic.HC"$. $FG,2$<CTRL-ALT-f>$FG$
|
||||
|
||||
$IV,1$----06/02/16 03:20:56----$IV,0$
|
||||
* $BK,1$TempleOS version 4.07 Released$BK,0$
|
||||
* Added claws to $LK,"::/Demo/Games/EagleDive.CPP"$.
|
||||
* Added claws to $LK,"::/Demo/Games/EagleDive.HC"$.
|
||||
|
||||
$IV,1$----05/30/16 21:16:44----$IV,0$
|
||||
* Added waterfall to $LK,"::/Demo/Games/RawHide.CPP"$.
|
||||
* Added waterfall to $LK,"::/Demo/Games/RawHide.HC"$.
|
||||
|
||||
$IV,1$----05/23/16 01:30:28----$IV,0$
|
||||
* Added $LK,"RedSeaISO",A="MN:RedSeaISO"$().
|
||||
@@ -110,7 +133,7 @@ $IV,1$----05/17/16 07:16:38----$IV,0$
|
||||
* Worked on compiler $LK,"CICArg",A="MN:CICArg"$.a1_type_pointed_to.
|
||||
|
||||
$IV,1$----05/13/16 14:35:14----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/Wenceslas.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/Wenceslas.HC"$.
|
||||
|
||||
$IV,1$----05/12/16 05:18:56----$IV,0$
|
||||
* Added $LK,"CCF_CMD_LINE",A="MN:CCF_CMD_LINE"$
|
||||
@@ -124,7 +147,7 @@ $IV,1$----05/07/16 08:55:59----$IV,0$
|
||||
|
||||
$IV,1$----05/03/16 19:26:45----$IV,0$
|
||||
* Made $LK,"FunSegFind",A="MN:FunSegFind"$() search all hash tables when $LK,"IsDbg",A="MN:IsDbg"$.
|
||||
* Added missiles to $LK,"::/Apps/X-Caliber/X-Caliber.CPP"$.
|
||||
* Added missiles to $LK,"::/Apps/X-Caliber/X-Caliber.HC"$.
|
||||
* Fixed bug in $LK,"D3Unit",A="MN:D3Unit"$().
|
||||
|
||||
$IV,1$----05/01/16 15:12:31----$IV,0$
|
||||
@@ -143,13 +166,13 @@ $IV,1$----04/25/16 13:17:49----$IV,0$
|
||||
|
||||
$IV,1$----04/25/16 03:42:30----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("TK_INT","TK_I64");
|
||||
* Added $LK,"::/Demo/Templates/Game1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/Lex1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/MultiCore1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/ODE1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/Registry1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/Util1.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/Util2.CPP"$.
|
||||
* Added $LK,"::/Demo/Templates/Game1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/Lex1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/MultiCore1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/ODE1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/Registry1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/Util1.HC"$.
|
||||
* Added $LK,"::/Demo/Templates/Util2.HC"$.
|
||||
|
||||
$IV,1$----04/23/16 13:20:24----$IV,0$
|
||||
* Got rid of low protected memory area that caught NULL deref.
|
||||
@@ -164,14 +187,14 @@ $IV,1$----04/01/16 14:59:49----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("Index","Idx");
|
||||
|
||||
$IV,1$----03/31/16 11:20:13----$IV,0$
|
||||
* Changed $LK,"::/Adam/WallPaper.CPP"$.
|
||||
* Changed $LK,"::/Adam/WallPaper.HC"$.
|
||||
* Got rid of $FG,4$CTask.time_slice_start$FG$ and $FG,4$CTask.total_time$FG$.
|
||||
|
||||
$IV,1$----03/29/16 05:53:45----$IV,0$
|
||||
* $BK,1$TempleOS version 4.05 Released$BK,0$
|
||||
|
||||
$IV,1$----03/24/16 16:26:50----$IV,0$
|
||||
* Added $LK,"::/Demo/Games/CharDemo.CPP"$.
|
||||
* Added $LK,"::/Demo/Games/CharDemo.HC"$.
|
||||
|
||||
$IV,1$----03/22/16 16:58:25----$IV,0$
|
||||
* Added $LK,"DOCEF_DFT_RAW_TYPE",A="MN:DOCEF_DFT_RAW_TYPE"$. Modified $LK,"DocForm",A="MN:DocForm"$() to look-up raw type automatically from the compiler's class information.
|
||||
@@ -180,7 +203,7 @@ $IV,1$----03/22/16 16:58:25----$IV,0$
|
||||
$IV,1$----03/21/16 07:28:35----$IV,0$
|
||||
* Added $LK,"OCF_ALIAS",A="MN:OCF_ALIAS"$.
|
||||
* $LK,"R",A="MN:R"$("Integer","Int");
|
||||
* Added aliases to $LK,"::/Compiler/OpCodes.TXT"$.
|
||||
* Added aliases to $LK,"::/Compiler/OpCodes.DD"$.
|
||||
|
||||
$IV,1$----03/21/16 02:12:08----$IV,0$
|
||||
* Added $LK,"DOCT_MARKER",A="MN:DOCT_MARKER"$.
|
||||
@@ -204,10 +227,10 @@ $IV,1$----03/14/16 05:57:27----$IV,0$
|
||||
* Changed $LK,"KbdMouseCmdAck",A="MN:KbdMouseCmdAck"$().
|
||||
|
||||
$IV,1$----02/19/16 18:48:51----$IV,0$
|
||||
* Fixed bug in $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$.
|
||||
* Fixed bug in $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$.
|
||||
|
||||
$IV,1$----02/15/16 23:31:15----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/RawHide.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/RawHide.HC"$.
|
||||
|
||||
$IV,1$----02/13/16 17:02:34----$IV,0$
|
||||
* Added $FG,2$$$CL+H$$$FG$ to clear all, including hold entries.
|
||||
@@ -223,8 +246,8 @@ $IV,1$----02/09/16 09:34:32----$IV,0$
|
||||
* Added $LK,"DOCEF_REMALLOC_DATA",A="MN:DOCEF_REMALLOC_DATA"$.
|
||||
|
||||
$IV,1$----02/05/16 23:00:53----$IV,0$
|
||||
* Moved $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$.
|
||||
* Added $LK,"::/Demo/AcctExample/TOSToHtml.CPP"$.
|
||||
* Moved $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$.
|
||||
* Added $LK,"::/Demo/AcctExample/TOSToHtml.HC"$.
|
||||
|
||||
$IV,1$----02/03/16 18:47:00----$IV,0$
|
||||
* Refactored $LK,"SpriteMainEd",A="MN:SpriteMainEd"$().
|
||||
@@ -235,7 +258,7 @@ $IV,1$----02/01/16 21:01:15----$IV,0$
|
||||
* Made multicore more professional.
|
||||
|
||||
$IV,1$----02/01/16 06:02:41----$IV,0$
|
||||
* Moved $LK,"Mem2Meg.CPP",A="FI:::/Demo/Lectures/Mem/Mem2Meg.CPP"$ out of kernel.
|
||||
* Moved $LK,"Mem2Meg.HC",A="FI:::/Demo/Lectures/Mem/Mem2Meg.HC"$ out of kernel.
|
||||
|
||||
$IV,1$----01/31/16 04:07:50----$IV,0$
|
||||
* Fixed scheduler, so doesn't idle so high.
|
||||
@@ -262,15 +285,15 @@ $IV,1$----01/27/16 20:41:54----$IV,0$
|
||||
* $BK,1$TempleOS version 4.02 Released$BK,0$
|
||||
|
||||
$IV,1$----01/27/16 06:40:46----$IV,0$
|
||||
* Added $FG,2$<F2>$FG$ macro to $LK,"TestSuite",A="FI:::/Misc/OSTestSuite.CPP"$.
|
||||
* Added $FG,2$<F2>$FG$ macro to $LK,"TestSuite",A="FI:::/Misc/OSTestSuite.HC"$.
|
||||
* Added compiler err for $FG,2$break;$FG$ in a subswitch preface.
|
||||
|
||||
$IV,1$----01/27/16 04:14:08----$IV,0$
|
||||
* Added $LK,"::/Demo/ToHtmlToTXTDemo/HtmlGen.CPP"$ and $LK,"::/Demo/ToHtmlToTXTDemo/TXTGen.CPP"$.
|
||||
* Added $LK,"::/Demo/ToHtmlToTXTDemo/HtmlGen.HC"$ and $LK,"::/Demo/ToHtmlToTXTDemo/TXTGen.HC"$.
|
||||
* Now, $LK,"Plain",A="MN:Plain"$() doesn't save with $LK,"CH_CURSOR",A="MN:CH_CURSOR"$.
|
||||
* $LK,"R",A="MN:R"$("DOCF_PLAIN_TEXT_WITH_TABS","DOCF_PLAIN_TEXT_TABS");
|
||||
* Change $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ "DF:word" to "DN:word".
|
||||
* Merged documentation into $LK,"::/Doc/FAQ.TXT"$.
|
||||
* Change $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.HC,AD"$ "DF:word" to "DN:word".
|
||||
* Merged documentation into $LK,"::/Doc/FAQ.DD"$.
|
||||
|
||||
$IV,1$----01/26/16 17:51:45----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("PSect","FunSeg");
|
||||
@@ -289,16 +312,16 @@ $IV,1$----01/16/16 08:20:00----$IV,0$
|
||||
* Removed $FG,4$DrvTextAttrSet$FG$().
|
||||
|
||||
$IV,1$----01/15/16 00:47:31----$IV,0$
|
||||
* $LK,"KeyboardPlug-Ins '9','0'",A="FF:::/HomeKeyPlugIns.CPP,'9'"$.
|
||||
* $LK,"KeyboardPlug-Ins '9','0'",A="FF:::/HomeKeyPlugIns.HC,'9'"$.
|
||||
* $LK,"R",A="MN:R"$("$$$$LM,5$$$$","$$$$ID,5$$$$");
|
||||
|
||||
$IV,1$----01/15/16 00:12:02----$IV,0$
|
||||
* Added $LK,"Let2BlkDevType",A="MN:Let2BlkDevType"$().
|
||||
* Added $LK,"WIF_SELF_FOCUS",A="MN:WIF_SELF_FOCUS"$ to $LK,"::/Misc/OSInstall.CPP"$.
|
||||
* Added $FG,2$%$$F$FG$ to $LK,"Print(\"\") Fmt Strings",A="FI:::/Doc/Print.TXT"$.
|
||||
* Added $LK,"WIF_SELF_FOCUS",A="MN:WIF_SELF_FOCUS"$ to $LK,"::/Misc/OSInstall.HC"$.
|
||||
* Added $FG,2$%$$F$FG$ to $LK,"Print(\"\") Fmt Strings",A="FI:::/Doc/Print.DD"$.
|
||||
|
||||
$IV,1$----01/12/16 19:17:12----$IV,0$
|
||||
* Overhauled $LK,"Mount",A="MN:Mount"$() and $LK,"::/Kernel/KCfg.CPP"$.
|
||||
* Overhauled $LK,"Mount",A="MN:Mount"$() and $LK,"::/Kernel/KCfg.HC"$.
|
||||
|
||||
$IV,1$----01/12/16 10:06:18----$IV,0$
|
||||
* $BK,1$TempleOS version 4.01 Released$BK,0$
|
||||
@@ -308,15 +331,15 @@ $IV,1$----01/12/16 10:06:18----$IV,0$
|
||||
$IV,1$----01/11/16 00:04:38----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("PAGE_SIZE","MEM_PAGE_SIZE"); etc.
|
||||
* $LK,"R",A="MN:R"$("DFT_STK","MEM_DFT_STK"); etc.
|
||||
* Added $LK,"::/Demo/MemDemo.CPP"$.
|
||||
* Added $LK,"::/Demo/MemDemo.HC"$.
|
||||
|
||||
$IV,1$----01/08/16 17:04:58----$IV,0$
|
||||
* Added $LK,"FUF_RISKY",A="MN:FUF_RISKY"$ to $LK,"DocOpt",A="MN:DocOpt"$().
|
||||
* Fixed $LK,"::/Doc/CompilerOverview.TXT"$.
|
||||
* Fixed $LK,"::/Doc/CompilerOverview.DD"$.
|
||||
|
||||
$IV,1$----01/06/16 11:01:57----$IV,0$
|
||||
* Got rid of $FG,4$DOCEF_HARD_SKIP$FG$.
|
||||
|
||||
$IV,1$----01/03/16 17:15:41----$IV,0$
|
||||
* Updated $LK,"::/Misc/PCIDevices.TXT"$.
|
||||
* Added null case option. Next higher int with "$FG,2$case:$FG$" in $FG,2$switch$FG$ stmts. See $LK,"::/Demo/NullCase.CPP"$.
|
||||
* Updated $LK,"::/Misc/PCIDevices.DD"$.
|
||||
* Added null case option. Next higher int with "$FG,2$case:$FG$" in $FG,2$switch$FG$ stmts. See $LK,"::/Demo/NullCase.HC"$.
|
||||
@@ -20,8 +20,8 @@ The upper 4-bytes are copied from lower 4-bytes.
|
||||
$FG,2$Byte 4$FG$ is the code. Left, Right and NumPad keys distinct.
|
||||
$FG,2$Byte 5-7$FG$ are $LK,"flags",A="MN:SCf_KEY_UP"$
|
||||
|
||||
Run the program $LK,"::/Demo/MsgLoop.CPP"$ to examine scan code. Press $FG,2$<CTRL-SHIFT-l>$FG$ and "Insert ASCII/ScanCode".$FG$
|
||||
Run the program $LK,"::/Demo/MsgLoop.HC"$ to examine scan code. Press $FG,2$<CTRL-SHIFT-l>$FG$ and "Insert ASCII/ScanCode".$FG$
|
||||
|
||||
See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.TXT"$ and $LK,"CKbdStateGlbls",A="MN:CKbdStateGlbls"$.
|
||||
See $LK,"Key Allocations",A="FI:::/Doc/KeyAlloc.DD"$ and $LK,"CKbdStateGlbls",A="MN:CKbdStateGlbls"$.
|
||||
|
||||
A $FG,2$String$FG$ is a bunch of ASCII characters terminated with a zero.
|
||||
File renamed without changes.
@@ -1,12 +1,12 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Command Line Overview"$$FG$
|
||||
|
||||
The cmd line feeds into the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiler as you type. A stmt outside a function executes immediately. Remember to add a semicolon.$WW,1$
|
||||
The cmd line feeds into the $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ compiler as you type. A stmt outside a function executes immediately. Remember to add a semicolon.$WW,1$
|
||||
|
||||
Look-up the function headers with $FG,2$AutoComplete$FG$ by hitting $FG,2$<CTRL-SHIFT-F1>$FG$ after typing the first few letters.
|
||||
|
||||
$LK,"Click Here",A="MN:Dir"$ to see the directory cmd header. It accepts default args from C++.
|
||||
|
||||
>$FG,2$Dir("*.TXT.Z");$FG$
|
||||
>$FG,2$Dir("*.DD.Z");$FG$
|
||||
|
||||
If you don't have args, you don't need parenthesis.
|
||||
|
||||
@@ -14,7 +14,7 @@ If you don't have args, you don't need parenthesis.
|
||||
|
||||
Directories are referenced with $FG,2$/$FG$ not $FG,2$\$FG$. There is a current directory, but not a path. To run a program, you typically $FG,2$#include $FG$it. There are several shortcuts for $FG,2$#include$FG$ing files. Right-click or hit $FG,2$<ENTER>$FG$ on a directory listing or press $FG,2$<F5>$FG$ while editing.
|
||||
|
||||
>$FG,2$Ed("NewFile.CPP.Z");$FG$ Invokes the editor. See $LK,"Doc Link Type",A="MN:LK_FILE"$.
|
||||
>$FG,2$Ed("NewFile.HC.Z");$FG$ Invokes the editor. See $LK,"Doc Link Type",A="MN:LK_FILE"$.
|
||||
|
||||
Most filenames end in $FG,2$.Z$FG$ because they are stored compressed.
|
||||
|
||||
@@ -29,13 +29,13 @@ The drive can be specified in a $LK,"Cd",A="MN:Cd"$() command as in:
|
||||
|
||||
The home directory is specified with a $FG,2$'~'$FG$.
|
||||
|
||||
>$FG,2$Cd("~/Psalmody");$FG$ See $LK,"::/Home dir",A="FF:::/Doc/GuideLines.TXT,/Home Files"$.
|
||||
>$FG,2$Cd("~/Psalmody");$FG$ See $LK,"::/Home dir",A="FF:::/Doc/GuideLines.DD,/Home Files"$.
|
||||
|
||||
If a file is not found, $FG,2$.Z$FG$ is added or removed and a search is done, again. If a file is still not found, all parent directories are searched.
|
||||
|
||||
You can place macros in your $LK,"PersonalMenu",A="FI:~/PersonalMenu.TXT"$ for $LK,"Cd",A="MN:Cd"$() commands. $FG,2$<CTRL-m>$FG$ to access your menu.
|
||||
You can place macros in your $LK,"PersonalMenu",A="FI:~/PersonalMenu.DD"$ for $LK,"Cd",A="MN:Cd"$() commands. $FG,2$<CTRL-m>$FG$ to access your menu.
|
||||
|
||||
>$FG,2$Find("needle","/Demo/*.CPP.Z;*.TXT.Z;");$FG$ See $LK,"File Utils",A="FI:::/Doc/FileUtils.TXT"$.
|
||||
>$FG,2$Find("needle","/Demo/*.HC.Z;*.DD.Z;");$FG$ See $LK,"File Utils",A="FI:::/Doc/FileUtils.DD"$.
|
||||
|
||||
$LK,"Cmd Line Routines",A="HI:Cmd Line (Typically)"$
|
||||
|
||||
@@ -62,7 +62,7 @@ public U0 CommInit8n1(I64 port,I64 baud)
|
||||
FifoU8Del(comm_fifos[port]);
|
||||
comm_fifos[port]=FifoU8New(256);
|
||||
OutU8(base+UART_LCR,0); //Set for IER
|
||||
OutU8(base+UART_IER,0); //DIsable all IRQ
|
||||
OutU8(base+UART_IER,0); //Disable all IRQ
|
||||
OutU8(base+UART_LCR,0x80); //Enable baud rate control
|
||||
OutU8(base+UART_BRDL,(0x180/(baud/300)) & 0xFF); //LSB
|
||||
OutU8(base+UART_BRDH,(0x180/(baud/300)) / 256); //MSB
|
||||
@@ -72,7 +72,7 @@ public U0 CommInit8n1(I64 port,I64 baud)
|
||||
InU8(base+UART_LSR);
|
||||
|
||||
OutU8(base+UART_MCR,4);
|
||||
OutU8(base+UART_IER,0); //DIsable all IRQ
|
||||
OutU8(base+UART_IER,0); //Disable all IRQ
|
||||
OutU8(base+UART_MCR,0xA); //out2 and rts
|
||||
OutU8(0x21,InU8(0x21) & (0xFF-0x18)); //Enable 8259 IRQ 3 & 4
|
||||
OutU8(base+UART_IER,1); //Enable RX IRQ
|
||||
@@ -0,0 +1,13 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Compiler Index"$$FG$
|
||||
|
||||
$LK,"::/Doc/Asm.DD"$
|
||||
|
||||
$LK,"::/Doc/Directives.DD"$
|
||||
|
||||
$LK,"::/Doc/Options.DD"$
|
||||
|
||||
$LK,"::/Doc/PreProcessor.DD"$
|
||||
|
||||
$LK,"::/Doc/ScopingLinkage.DD"$
|
||||
|
||||
See $LK,"Hello World",A="FI:::/Doc/HelloWorld.DD"$.
|
||||
@@ -1,13 +0,0 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Compiler Index"$$FG$
|
||||
|
||||
$LK,"::/Doc/Asm.TXT"$
|
||||
|
||||
$LK,"::/Doc/Directives.TXT"$
|
||||
|
||||
$LK,"::/Doc/Options.TXT"$
|
||||
|
||||
$LK,"::/Doc/PreProcessor.TXT"$
|
||||
|
||||
$LK,"::/Doc/ScopingLinkage.TXT"$
|
||||
|
||||
See $LK,"Hello World",A="FI:::/Doc/HelloWorld.TXT"$.
|
||||
@@ -1,18 +1,18 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Credits"$$FG$
|
||||
|
||||
I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"121,193",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.9",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! It is public domain, not GPL.
|
||||
I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"120,264",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"13.1",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! It is public domain, not GPL.
|
||||
|
||||
*) $LK,"::/Kernel/FontStd.CPP"$, is taken from $FG,4$$TX,"FreeDOS",HTML="http://www.freedos.org"$$FG$. It's public domain.
|
||||
*) $LK,"::/Kernel/FontStd.HC"$, is taken from $FG,4$$TX,"FreeDOS",HTML="http://www.freedos.org"$$FG$. It's public domain.
|
||||
|
||||
*) $LK,"::/Kernel/FontCyrillic.CPP"$, is taken from $FG,4$$TX,"OrientDisplay",HTML="http://www.orientdisplay.com/images/cyrillic-Russian-fonts.gif"$$FG$ without permission.
|
||||
*) $LK,"::/Kernel/FontCyrillic.HC"$, is taken from $FG,4$$TX,"OrientDisplay",HTML="http://www.orientdisplay.com/images/cyrillic-Russian-fonts.gif"$$FG$ without permission.
|
||||
|
||||
*) $LK,"ATA Reg and Cmd Definitions",A="MN:ATA_NOP"$ are originally from Linux. Later, I got the spec.
|
||||
|
||||
*) The heap algorithm, $LK,"::/Kernel/Mem/MAllocFree.CPP"$, is adapted from one I saw at Ticketmaster when I worked on their VAX operating system.
|
||||
*) The heap algorithm, $LK,"::/Kernel/Mem/MAllocFree.HC"$, is adapted from one I saw at Ticketmaster when I worked on their VAX operating system.
|
||||
|
||||
*) The LZW compression algorithm, $LK,"::/Kernel/Compress.CPP"$, came from a magazine and I implemented it when I worked for Ticketmaster.
|
||||
*) The LZW compression algorithm, $LK,"::/Kernel/Compress.HC"$, came from a magazine and I implemented it when I worked for Ticketmaster.
|
||||
|
||||
*) The adaptive-step-size-Runge-Kutta algorithm, $LK,"::/Adam/AMathODE.CPP"$, is adapted from the book, $UL,1$Numeric Recipies in C$UL,0$.
|
||||
*) The adaptive-step-size-Runge-Kutta algorithm, $LK,"::/Adam/AMathODE.HC"$, is adapted from the book, $UL,1$Numeric Recipies in C$UL,0$.
|
||||
|
||||
*) The mountain, palm trees, sheep and goats in AfterEgypt are 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.
|
||||
|
||||
@@ -20,9 +20,9 @@ I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"121,193",D="DD_TEMPLEOS_LOC"$ lines
|
||||
|
||||
*) A few features were inspired by $FG,2$MATLAB$FG$, such as $FG,2$ans$FG$ in expressions at the command-line. There is a lot of $FG,2$MSDOS$FG$ , $FG,2$Windows$FG$, $FG,2$VAXTMOS$FG$ (VAX Ticketmaster O.S.) and $FG,2$Unix$FG$ inspiration, too, such as drive letters, command names, etc.
|
||||
|
||||
*) I included $LK,"PCIDevice Lst File",A="FI:::/Misc/PCIDevices.TXT",HTML="http://www.pcidatabase.com/reports.php?type=tab-delimeted"$.
|
||||
*) I included $LK,"PCIDevice Lst File",A="FI:::/Misc/PCIDevices.DD",HTML="http://www.pcidatabase.com/reports.php?type=tab-delimeted"$.
|
||||
|
||||
*) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.CPP.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$.
|
||||
*) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.HC.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$.
|
||||
|
||||
*) I used $FG,4$$TX,"MagicISO",HTML="http://www.magiciso.com"$$FG$ to burn test CD's to help me understand the ISO9660 file system format. I mostly used the $FG,4$$TX,"ISO9660",HTML="http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html"$$FG$ spec.
|
||||
|
||||
@@ -36,15 +36,15 @@ I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"121,193",D="DD_TEMPLEOS_LOC"$ lines
|
||||
|
||||
*) God told me to stick with 640x480 16 color, a single audio voice and kept me from zombie-walking into making child windows like $FG,2$Windows$FG$. Instead, I made one window per task with no child windows. He also guided my progress, very obviously.
|
||||
|
||||
*) I got $FG,4$$TX,"Webster's Dictionary",HTML="http://www.templeos.org/files/DICTIONARY.TXT"$$FG$ and $FG,4$$TX,"The King James Bible",HTML="http://www.templeos.org/files/BIBLE.TXT"$$FG$ from $FG,4$$TX,"Project Gutenberg",HTML="http://web.archive.org/web/20110730111436/http://promo.net/pg/"$$FG$.
|
||||
*) I got $FG,4$$TX,"Webster's Dictionary",HTML="http://www.templeos.org/files/DICTIONARY.DD"$$FG$ and $FG,4$$TX,"The King James Bible",HTML="http://www.templeos.org/files/BIBLE.DD"$$FG$ from $FG,4$$TX,"Project Gutenberg",HTML="http://web.archive.org/web/20110730111436/http://promo.net/pg/"$$FG$.
|
||||
|
||||
*) John Carmack inspired me to use "$LK,"Clamp",A="MN:Clamp"$" as a name instead of "Limit". He inspired me to use "needle" and "haystack" as names. He inspired me to simplify my Frames-Per-Second code.
|
||||
|
||||
*) Bill Gates inspired me to add comments to my $LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$.
|
||||
*) Bill Gates inspired me to add comments to my $LK,"Help & Index",A="FI:::/Doc/HelpIndex.DD"$.
|
||||
|
||||
*) I hired an artist, Cody Rigby, for $$3,000 worth of pixel art.
|
||||
|
||||
*) Erik van der Karbargenbok made $LK,"TempleBot",A="PI:::/Linux/TempleBot",HTML="http://www.templeos.org/Wb/Home/Sup1/Sup1Bin/TempleBot.html"$.
|
||||
*) Erik van der Karbargenbok wrote /Linux shell scripts -- GodPassage, GodWords.
|
||||
|
||||
*) The random number generator is from Donald Knuth in the wikipedia entry for $TX,"Linear_congruential_generator",HTML="http://en.wikipedia.org/wiki/Linear_congruential_generator"$.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
$WW,1$To create a TempleOS 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.HC"$, $LK,"::/Demo/Graphics/ScrollBars.HC"$ and $LK,"TermButtonNew",A="FF:::/Adam/WallPaper.HC,TermButtonNew"$. There is a template-code ctrl generator, if you press $FG,2$<CTRL-SHIFT-L>$FG$.
|
||||
@@ -1 +0,0 @@
|
||||
$WW,1$To create a TempleOS 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.CPP"$, $LK,"::/Demo/Graphics/ScrollBars.CPP"$ and $LK,"TermButtonNew",A="FF:::/Adam/WallPaper.CPP,TermButtonNew"$. There is a template-code ctrl generator, if you press $FG,2$<CTRL-SHIFT-L>$FG$.
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
$WW,1$* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:~/HomeLocalize.CPP,mouse.scale"$.
|
||||
$WW,1$* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:~/HomeLocalize.HC,mouse.scale"$.
|
||||
|
||||
* You can set your local time zone by setting the $FG,4$local_time_offset$FG$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:~/HomeLocalize.CPP,local_time"$.
|
||||
* You can set your local time zone by setting the $FG,4$local_time_offset$FG$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:~/HomeLocalize.HC,local_time"$.
|
||||
|
||||
* Get rid of this msg $LK,"here",A="FF:~/DoOnce.CPP,Customize.TXT"$.
|
||||
* Get rid of this msg $LK,"here",A="FF:~/DoOnce.HC,Customize.DD"$.
|
||||
@@ -4,9 +4,9 @@ There are a few places where I cut corners in the interest of not junking-up cod
|
||||
|
||||
* I made my type-casting operator post-fix because it makes the compiler way cleaner.
|
||||
|
||||
* TempleOS 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 TempleOS 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 TempleOS. There is the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ 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.
|
||||
* TempleOS 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 TempleOS 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 TempleOS. 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.TXT"$ names to remove the ambiguity between insts with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CPP"$ 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:::/Adam/Opt/Boot/BootDVD.CPP"$.
|
||||
* 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.HC"$ 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:::/Adam/Opt/Boot/BootDVD.HC"$.
|
||||
|
||||
* There are no user-controlled file-sharing locks. However, the drive and file system have locks and concurrent operations should be fine.
|
||||
|
||||
@@ -14,7 +14,7 @@ There are a few places where I cut corners in the interest of not junking-up cod
|
||||
|
||||
* Even if a local function variable is declared less than 64 bits, the compiler does calculations with 64-bit.
|
||||
|
||||
* $LK,"Print",A="FI:::/Doc/Print.TXT"$() uses $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(). You cannot use vastly over-sized fields for %f.
|
||||
* $LK,"Print",A="FI:::/Doc/Print.DD"$() uses $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(). You cannot use vastly over-sized fields for %f.
|
||||
|
||||
* $LK,"GrEllipse3",A="MN:GrEllipse3"$() is broken on transformations.
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -4,7 +4,7 @@ $WW,1$$FG,5$$TX+CX,"Debugging Overview"$$FG$
|
||||
|
||||
* $LK,"U",A="MN:U"$(&FunName+offset) to unassemble mem or $LK,"Uf",A="MN:Uf"$("FunName") to unassemble a function. $LK,"U",A="MN:U"$($LK,"_RIP",A="MN:_RIP"$-16);
|
||||
|
||||
* While debugging, you specify addresses of assembly routines with just the label, as in $FG,2$_MALLOC+0x20$FG$. You specify $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ function names with $FG,2$&$FG$ before functions as in $FG,2$&Print+0x10$FG$.
|
||||
* While debugging, you specify addresses of assembly routines with just the label, as in $FG,2$_MALLOC+0x20$FG$. You specify $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ function names with $FG,2$&$FG$ before functions as in $FG,2$&Print+0x10$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.
|
||||
|
||||
@@ -20,7 +20,7 @@ $WW,1$$FG,5$$TX+CX,"Debugging Overview"$$FG$
|
||||
|
||||
* $LK,"ClassRep",A="MN:ClassRep"$() and the dynamic version $LK,"ClassRepD",A="MN:ClassRepD"$() can be used to dump structures.
|
||||
|
||||
* $LK,"Prof",A="MN:Prof"$() and $LK,"ProfRep",A="MN:ProfRep"$() provide code profiling. See $LK,"::/Demo/AutoFile/AFProfile.AUT"$ (This is an $LK,"AutoFile",A="FF:::/Doc/Glossary.TXT,AutoFile"$.)
|
||||
* $LK,"Prof",A="MN:Prof"$() and $LK,"ProfRep",A="MN:ProfRep"$() provide code profiling. See $LK,"::/Demo/AutoFile/AFProfile.AUT"$ (This is an $LK,"AutoFile",A="FF:::/Doc/Glossary.DD,AutoFile"$.)
|
||||
|
||||
* Use $LK,"RawPrint",A="MN:RawPrint"$() to print debug info bypassing the window framework. You pass these routines a count in milliseconds for how long it should be displayed. You can use $LK,"Raw",A="MN:Raw"$($FG,2$TRUE$FG$) to make all output bypass the window framework. The $FG,2$WinMgr$FG$ runs on $FG,2$core0$FG$ and will overwrite raw text from other cores when it updates the screen.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
$WW,1$TempleOS 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,"HashDefineLstAdd",A="MN:HashDefineLstAdd"$(). See $LK,"::/Adam/DolDoc/DocInit.CPP",A="FF:::/Adam/DolDoc/DocInit.CPP,HashDefineLstAdd"$.
|
||||
$WW,1$TempleOS 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,"HashDefineLstAdd",A="MN:HashDefineLstAdd"$(). See $LK,"::/Adam/DolDoc/DocInit.HC",A="FF:::/Adam/DolDoc/DocInit.HC,HashDefineLstAdd"$.
|
||||
|
||||
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.TXT"$ 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.CPP"$, $LK,"::/Adam/ADefine.CPP"$ and $LK,"::/Doc/MemOverview.TXT"$.
|
||||
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.HC"$, $LK,"::/Adam/ADefine.HC"$ and $LK,"::/Doc/MemOverview.DD"$.
|
||||
|
||||
See $LK,"::/Demo/Define.CPP"$.
|
||||
See $LK,"::/Demo/Define.HC"$.
|
||||
@@ -4,14 +4,14 @@ I, Terry Davis, am high priest of God's $FG,4$$TX,"official third temple",HTML="
|
||||
|
||||
$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.TXT"$ file system so I can get rid of 2,000 lines of redundant, blemished code -- FAT32 and ISO9660. God's temple must be perfect. Redundant code for multiple file systems is imperfect. For this operating system, we want low line count. More than one file system type is actually bad, just as more than one driver for the same type of device is bad.
|
||||
* Windows, Linux and VMware (because of mounted drives) must support $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system so I can get rid of 2,000 lines of redundant, blemished code -- FAT32 and ISO9660. God's temple must be perfect. Redundant code for multiple file systems is imperfect. For this operating system, we want low line count. More than one file system type is actually bad, just as more than one driver for the same type of device is bad.
|
||||
|
||||
See $LK,"::/Kernel/BlkDev/FileSysRedSea.CPP"$ and $LK,"::/Adam/Opt/Boot/DskISORedSea.CPP"$.
|
||||
See $LK,"::/Kernel/BlkDev/FileSysRedSea.HC"$ and $LK,"::/Adam/Opt/Boot/DskISORedSea.HC"$.
|
||||
|
||||
$LK,"::/Kernel/BlkDev/FileSysFAT.CPP"$ :974 lines for FAT32 gets eliminated.
|
||||
$LK,"::/Kernel/BlkDev/FileSysISO.CPP"$ :233 lines for ISO9660 gets eliminated.
|
||||
$LK,"::/Adam/Opt/Boot/DskISO9660.CPP"$ :507 lines for making ISO files.
|
||||
$LK,"::/Kernel/BlkDev/DskCluster.CPP"$ :152 All the cluster operations become blk.
|
||||
$LK,"::/Kernel/BlkDev/FileSysFAT.HC"$ :974 lines for FAT32 gets eliminated.
|
||||
$LK,"::/Kernel/BlkDev/FileSysISO.HC"$ :233 lines for ISO9660 gets eliminated.
|
||||
$LK,"::/Adam/Opt/Boot/DskISO9660.HC"$ :507 lines for making ISO files.
|
||||
$LK,"::/Kernel/BlkDev/DskCluster.HC"$ :152 All the cluster operations become blk.
|
||||
|
||||
* Microsoft must cancel SecureBoot because it makes dual booting impossible. TempleOS 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.
|
||||
|
||||
@@ -25,9 +25,11 @@ $LK,"::/Kernel/BlkDev/DskCluster.CPP"$ :152 All the cluster operations become bl
|
||||
|
||||
* VMware needs to support more than 16 cores.
|
||||
|
||||
* VMware allocated memory too slowly.
|
||||
|
||||
* Until super-simple block devices are available, hard disk should be placed at IDE primary master 1F0/3F6 and CD/DVD/Blu-ray should be placed at the IDE secondary master 170/376.
|
||||
$LK,"/Kernel/BlkDev/DskATAId.CPP",A="FI:::/Kernel/BlkDev/DskATAId.CPP"$ :286 lines to figure-out I/O ports is gone.
|
||||
$LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could be eliminated, but maybe we will keep it so people can play with PCI devices.
|
||||
$LK,"/Kernel/BlkDev/DskATAId.HC",A="FI:::/Kernel/BlkDev/DskATAId.HC"$ :286 lines to figure-out I/O ports is gone.
|
||||
$LK,"/Kernel/PCIBIOS.HC",A="FI:::/Kernel/PCIBIOS.HC"$ :290 could be eliminated, but maybe we will keep it so people can play with PCI devices.
|
||||
|
||||
* Until super-simple serial ports are available, PS/2 emulated keyboard and mouse must work. The BIOS must enable these.
|
||||
|
||||
@@ -36,19 +38,19 @@ $LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could be eliminate
|
||||
* 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/Mem/PageTables.CPP"$ :135 lines to identity-map gets eliminated.
|
||||
$LK,"::/Kernel/Mem/PageTables.HC"$ :135 lines to identity-map gets eliminated.
|
||||
|
||||
* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting TempleOS from a ROM when the reset button is pressed and booting UEFI when the power button is pressed. Or, we could build UEFI on a TempleOS layer. Intel must burn TempleOS 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.
|
||||
|
||||
* Microsoft Paint and Linux's Gimp must support TempleOS $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT"$. They are blemish free, unlike $TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$.
|
||||
* Microsoft Paint and Linux's Gimp must support TempleOS $LK,"GRA Files",A="FI:::/Doc/GRAFiles.DD"$. They are blemish free, unlike $TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$.
|
||||
|
||||
* We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.CPP"$, too.
|
||||
* We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.HC"$, too.
|
||||
|
||||
* 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.
|
||||
|
||||
* We will make a $LK,"Standard TempleOS PC",A="FI:::/Doc/StdTempleOSPC.TXT"$.
|
||||
* We will make a $LK,"Standard TempleOS PC",A="FI:::/Doc/StdTempleOSPC.DD"$.
|
||||
$FG,8$
|
||||
* "VMware" is a trademark owned by VMware, Inc.
|
||||
* "Linux" is a trademark owned by Linus Torvalds.
|
||||
@@ -0,0 +1,195 @@
|
||||
$FG,5$$TX+CX,"TempleOS 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 fwd.
|
||||
|
||||
$FG,2$<SPACE>$FG$ to edit a file and $FG,2$F5$FG$ to run it.
|
||||
|
||||
$LK,"::/Doc/HelloWorld.DD"$
|
||||
|
||||
$WW,0$$TR,"Games: Beginner"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/NetOfDots.HC"$
|
||||
$LK,"::/Demo/Graphics/InputPointer.HC"$
|
||||
$LK,"::/Demo/Graphics/Lines.HC"$
|
||||
$LK,"::/Demo/Graphics/SunMoon.HC"$
|
||||
$LK,"::/Demo/Graphics/LowPassFilter.HC"$
|
||||
$LK,"::/Demo/Graphics/MathAudioDemo.HC"$
|
||||
$LK,"::/Demo/Games/TicTacToe.HC"$
|
||||
$LK,"::/Demo/Graphics/SpritePlot.HC"$
|
||||
$LK,"::/Demo/Games/ElephantWalk.HC"$
|
||||
$LK,"::/Demo/Graphics/SpritePut.HC"$
|
||||
$LK,"::/Demo/Graphics/SpritePutExt.HC"$
|
||||
$LK,"::/Demo/Snd/ASCIIOrgan.HC"$
|
||||
$LK,"::/Demo/MsgLoop.HC"$
|
||||
$LK,"::/Demo/Graphics/Doodle.HC"$
|
||||
$LK,"::/Demo/Graphics/Speedline.HC"$
|
||||
$LK,"::/Demo/Graphics/Bounce.HC"$
|
||||
$LK,"::/Demo/RandDemo.HC"$
|
||||
$LK,"::/Demo/KeyBitMap.HC"$
|
||||
$LK,"::/Demo/Graphics/WinZBuf.HC"$
|
||||
$LK,"::/Demo/Graphics/Elephant.HC"$
|
||||
$LK,"::/Demo/Graphics/Mountain.HC"$
|
||||
$LK,"::/Demo/Graphics/WallPaperFish.HC"$ //Press SHIFT-F5 to Adam Include
|
||||
$LK,"::/Demo/Games/Digits.HC"$
|
||||
$LK,"::/Demo/Progress.HC"$ //has some ASM, just ignore
|
||||
$LK,"::/Demo/Graphics/Symmetry.HC"$
|
||||
$LK,"::/Demo/Graphics/Blot.HC"$
|
||||
$LK,"::/Demo/Graphics/ScreenCapture.HC"$
|
||||
$LK,"::/Demo/Graphics/EdSprite.HC"$
|
||||
$LK,"::/Demo/PullDownMenu.HC"$
|
||||
$LK,"::/Demo/Graphics/Palette.HC"$
|
||||
$LK,"::/Demo/Games/CircleTrace.HC"$
|
||||
$LK,"::/Demo/Games/Halogen.HC"$
|
||||
$LK,"::/Demo/Games/TheDead.HC"$
|
||||
$LK,"::/Demo/Games/RainDrops.HC"$
|
||||
$LK,"::/Demo/Snd/MorseCode.HC"$
|
||||
$MA-X+PU,"::/Demo/Games/Stadium",LM="Cd(\"::/Demo/Games/Stadium\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/Lattice.HC"$
|
||||
$LK,"::/Demo/Graphics/Collision.HC"$
|
||||
$LK,"::/Demo/Games/BlackDiamond.HC"$
|
||||
$ID,-2$$TR,"Games: Intermediate"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/Box.HC"$
|
||||
$LK,"::/Demo/Graphics/Pick.HC"$
|
||||
$LK,"::/Demo/Graphics/3DPoly.HC"$
|
||||
$LK,"::/Demo/Graphics/BSpline.HC"$
|
||||
$LK,"::/Demo/Graphics/Extents.HC"$
|
||||
$LK,"::/Demo/Graphics/SpritePlot3D.HC"$
|
||||
$LK,"::/Demo/Graphics/Balloon.HC"$
|
||||
$LK,"::/Demo/Graphics/RotateTank.HC"$
|
||||
$LK,"::/Demo/Games/Wenceslas.HC"$
|
||||
$LK,"::/Demo/ScreenCodes.HC"$
|
||||
$LK,"::/Demo/Graphics/PanText.HC"$
|
||||
$LK,"::/Demo/Graphics/CharAnimation.HC"$
|
||||
$LK,"::/Demo/Games/Maze.HC"$
|
||||
$LK,"::/Demo/Games/CharDemo.HC"$
|
||||
$LK,"::/Demo/Graphics/FontEd.HC"$
|
||||
$LK,"::/Demo/ExtChars.HC"$
|
||||
$LK,"::/Demo/TimeIns.HC"$
|
||||
$LK,"::/Demo/Snd/WaterFowl.HC"$
|
||||
$MA-X+PU,"::/Apps/Psalmody/Examples",LM="Cd(\"::/Apps/Psalmody/Examples\");Dir;View;\n"$
|
||||
$LK,"CPURep",A="MN:CPURep"$
|
||||
$LK,"::/Demo/MultiCore/MPPrint.HC"$
|
||||
$LK,"::/Demo/Graphics/PredatorPrey.HC"$
|
||||
$LK,"::/Demo/Graphics/Cartesian.HC"$
|
||||
$LK,"::/Demo/Graphics/Hanoi.HC"$
|
||||
$LK,"::/Demo/Graphics/Life.HC"$
|
||||
$LK,"::/Demo/Games/Zing.HC"$
|
||||
$LK,"::/Demo/Graphics/Grid.HC"$
|
||||
$LK,"::/Demo/Games/TreeCheckers.HC"$
|
||||
$LK,"::/Demo/MultiCore/Palindrome.HC"$
|
||||
$LK,"::/Demo/MultiCore/MPAdd.HC"$
|
||||
$LK,"::/Demo/MultiCore/Lock.HC"$
|
||||
$LK,"::/Demo/MultiCore/Clouds.HC"$
|
||||
$LK,"::/Demo/Graphics/Slider.HC"$
|
||||
$LK,"::/Demo/Graphics/WallPaperCtrl.HC"$ //Press SHIFT-F5 to Adam Include
|
||||
$LK,"::/Demo/Graphics/ScrollBars.HC"$
|
||||
$LK,"::/Demo/RegistryDemo.HC"$
|
||||
$LK,"::/Demo/Games/FlapBat.HC"$
|
||||
$LK,"::/Demo/Games/BattleLines.HC"$
|
||||
$LK,"::/Demo/Games/BigGuns.HC"$
|
||||
$LK,"::/Demo/Games/FlatTops.HC"$
|
||||
$LK,"::/Demo/Games/RawHide.HC"$
|
||||
$LK,"::/Demo/Games/DunGen.HC"$
|
||||
$MA-X+PU,"::/Apps/TimeOut",LM="Cd(\"::/Apps/TimeOut\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/Collision.HC"$
|
||||
$ID,-2$$TR,"Games: Advanced"$
|
||||
$ID,2$$LK,"::/Demo/MultiCore/LoadTest.HC"$
|
||||
$LK,"::/Demo/MultiCore/Primes.HC"$
|
||||
$LK,"::/Demo/MultiCore/RadixSort.HC"$
|
||||
$LK,"::/Demo/MultiCore/Interrupts.HC"$
|
||||
$MA-X+PU,"::/Apps/AfterEgypt",LM="Cd(\"::/Apps/AfterEgypt\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/Varoom.HC"$
|
||||
$LK,"::/Demo/Graphics/Shading.HC"$
|
||||
$LK,"::/Demo/Graphics/Transform.HC"$
|
||||
$LK,"::/Demo/Games/BomberGolf.HC"$
|
||||
$LK,"::/Demo/Graphics/Shadow.HC"$
|
||||
$LK,"::/Demo/Graphics/Pick3D.HC"$
|
||||
$MA-X+PU,"::/Apps/ToTheFront",LM="Cd(\"::/Apps/ToTheFront\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/SpriteText.HC"$
|
||||
$LK,"::/Demo/Graphics/SpriteRaw.HC"$
|
||||
$MA-X+PU,"::/Apps/GrModels",LM="Cd(\"::/Apps/GrModels\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/KeepAway",LM="Cd(\"::/Apps/KeepAway\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/Camp.HC"$
|
||||
$LK,"::/Demo/Games/Rocket.HC"$
|
||||
$LK,"::/Demo/Games/RocketScience.HC"$
|
||||
$LK,"::/Demo/Games/MassSpring.HC"$
|
||||
$LK,"::/Demo/Games/Whap.HC"$
|
||||
$LK,"::/Demo/Games/Squirt.HC"$
|
||||
$MA-X+PU,"::/Apps/X-Caliber",LM="Cd(\"::/Apps/X-Caliber\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/ZoneOut.HC"$
|
||||
$LK,"::/Demo/Games/CastleFrankenstein.HC"$
|
||||
$LK,"::/Demo/Games/EagleDive.HC"$
|
||||
$MA-X+PU,"::/Apps/Strut",LM="Cd(\"::/Apps/Strut\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/Span",LM="Cd(\"::/Apps/Span\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/Psalmody",LM="Cd(\"::/Apps/Psalmody\");Dir;View;\n"$
|
||||
$ID,-2$$TR,"Non-Game"$
|
||||
$ID,2$$LK,"::/Misc/DoDistro.HC"$
|
||||
$LK,"::/Demo/DbgDemo.HC"$
|
||||
$LK,"::/Demo/SubSwitch.HC"$
|
||||
$LK,"::/Demo/DateTime.HC"$
|
||||
$LK,"::/Demo/RevFileDemo/Rev.HC"$
|
||||
$LK,"::/Demo/ToHtmlToTXTDemo/HtmlGen.HC"$
|
||||
$LK,"::/Demo/ToHtmlToTXTDemo/TXTGen.HC"$
|
||||
$LK,"::/Demo/SortFileDemo/F64FileGen.HC"$
|
||||
$LK,"::/Demo/SortFileDemo/F64FileSort.HC"$
|
||||
$LK,"::/Demo/PhoneNumWords.HC"$
|
||||
$LK,"::/Demo/SuggestSpelling.HC"$
|
||||
$LK,"::/Demo/WordSearch.HC"$
|
||||
$LK,"::/Demo/Graphics/CommonAncestor.HC"$
|
||||
$LK,"::/Demo/Directives.HC"$
|
||||
$LK,"::/Demo/Carry.HC"$
|
||||
$LK,"::/Demo/Dsk/DataBase.HC"$
|
||||
$LK,"::/Demo/Dsk/FPrintF.HC"$
|
||||
$LK,"::/Demo/Dsk/DskRaw.HC"$
|
||||
$LK,"::/Demo/Dsk/UnusedSpaceRep.HC"$
|
||||
$LK,"::/Demo/Lectures/MiniGrLib.HC"$
|
||||
$LK,"::/Demo/Lectures/MiniCompiler.HC"$
|
||||
$LK,"::/Demo/MagicPairs.HC"$
|
||||
$LK,"::/Demo/Graphics/PoleZeros.HC"$
|
||||
$LK,"::/Demo/WebLogDemo/WebLogRep.HC"$
|
||||
$LK,"::/Demo/WebLogDemo/WebLogScramble.HC"$
|
||||
$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,"TempleOS Specific"$
|
||||
$ID,2$$MA-X+PU,"::/Demo/AutoFile",LM="Cd(\"::/Demo/AutoFile\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Print.HC"$
|
||||
$LK,"::/Demo/SubIntAccess.HC"$
|
||||
$LK,"::/Demo/ParenWarn.HC"$
|
||||
$LK,"::/Demo/CompileDemo.HC"$
|
||||
$LK,"::/Demo/Prompt.HC"$
|
||||
$LK,"::/Demo/ClassMeta.HC"$
|
||||
$LK,"::/Demo/LastClass.HC"$
|
||||
$LK,"::/Demo/DolDoc/NumBible.HC"$
|
||||
$LK,"::/Demo/DolDoc/Form.HC"$
|
||||
$LK,"::/Demo/DolDoc/MenuButton.HC"$
|
||||
$LK,"::/Demo/DolDoc/MenuSprite.HC"$
|
||||
$LK,"::/Demo/DolDoc/ClickCallBack.HC"$
|
||||
$LK,"::/Demo/DolDoc/TreeDemo.HC"$
|
||||
$LK,"::/Demo/Exceptions.HC"$
|
||||
$LK,"::/Demo/Dsk/SerializeTree.HC"$
|
||||
$LK,"::/Demo/MemDemo.HC"$
|
||||
$LK,"::/Demo/StkGrow.HC"$
|
||||
$LK,"::/Demo/DolDoc/TextDemo.HC"$
|
||||
$LK,"::/Demo/DolDoc/CursorMove.HC"$
|
||||
$LK,"::/Demo/DolDoc/DemoDoc.DD"$
|
||||
$LK,"::/Demo/Spy.HC"$
|
||||
$LK,"::/Demo/DolDoc/FileRead.HC"$
|
||||
$LK,"::/Demo/DolDoc/Data.HC"$
|
||||
$LK,"::/Demo/DolDoc/DefineStr.HC"$
|
||||
$LK,"::/Demo/DolDoc/CallBack.HC"$
|
||||
$LK,"::/Demo/Define.HC"$
|
||||
$LK,"EdRenumAsm",A="MN:EdRenumAsm"$
|
||||
$LK,"::/Demo/DolDoc/UnusedDefine.HC"$
|
||||
$LK,"::/Demo/Asm/AsmHelloWorld.HC"$
|
||||
$LK,"::/Demo/Asm/BuzzFizz.HC"$
|
||||
$LK,"::/Demo/Asm/PutDec.HC"$
|
||||
$LK,"::/Demo/Asm/MulByHand.HC"$
|
||||
$LK,"::/Demo/Asm/DivByHand.HC"$
|
||||
$LK,"::/Demo/Asm/AsmAndC1.HC"$
|
||||
$LK,"::/Demo/Asm/AsmAndC2.HC"$
|
||||
$LK,"::/Demo/Asm/AsmAndC3.HC"$
|
||||
$LK,"::/Demo/GlblVars.HC"$
|
||||
$LK,"::/Misc/OSTestSuite.HC"$
|
||||
$MA-X+PU,"::/Adam",LM="Cd(\"::/Adam\");Dir;View;\n"$
|
||||
$ID,-2$
|
||||
@@ -1,195 +0,0 @@
|
||||
$FG,5$$TX+CX,"TempleOS 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 fwd.
|
||||
|
||||
$FG,2$<SPACE>$FG$ to edit a file and $FG,2$F5$FG$ to run it.
|
||||
|
||||
$LK,"::/Doc/HelloWorld.TXT"$
|
||||
|
||||
$WW,0$$TR,"Games: Beginner"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/NetOfDots.CPP"$
|
||||
$LK,"::/Demo/Graphics/InputPointer.CPP"$
|
||||
$LK,"::/Demo/Graphics/Lines.CPP"$
|
||||
$LK,"::/Demo/Graphics/SunMoon.CPP"$
|
||||
$LK,"::/Demo/Graphics/LowPassFilter.CPP"$
|
||||
$LK,"::/Demo/Graphics/MathAudioDemo.CPP"$
|
||||
$LK,"::/Demo/Games/TicTacToe.CPP"$
|
||||
$LK,"::/Demo/Graphics/SpritePlot.CPP"$
|
||||
$LK,"::/Demo/Games/ElephantWalk.CPP"$
|
||||
$LK,"::/Demo/Graphics/SpritePut.CPP"$
|
||||
$LK,"::/Demo/Graphics/SpritePutExt.CPP"$
|
||||
$LK,"::/Demo/Snd/ASCIIOrgan.CPP"$
|
||||
$LK,"::/Demo/MsgLoop.CPP"$
|
||||
$LK,"::/Demo/Graphics/Doodle.CPP"$
|
||||
$LK,"::/Demo/Graphics/Speedline.CPP"$
|
||||
$LK,"::/Demo/Graphics/Bounce.CPP"$
|
||||
$LK,"::/Demo/RandDemo.CPP"$
|
||||
$LK,"::/Demo/KeyBitMap.CPP"$
|
||||
$LK,"::/Demo/Graphics/WinZBuf.CPP"$
|
||||
$LK,"::/Demo/Graphics/Elephant.CPP"$
|
||||
$LK,"::/Demo/Graphics/Mountain.CPP"$
|
||||
$LK,"::/Demo/Graphics/WallPaperFish.CPP"$ //Press SHIFT-F5 to Adam Include
|
||||
$LK,"::/Demo/Games/Digits.CPP"$
|
||||
$LK,"::/Demo/Progress.CPP"$ //has some ASM, just ignore
|
||||
$LK,"::/Demo/Graphics/Symmetry.CPP"$
|
||||
$LK,"::/Demo/Graphics/Blot.CPP"$
|
||||
$LK,"::/Demo/Graphics/ScreenCapture.CPP"$
|
||||
$LK,"::/Demo/Graphics/EdSprite.CPP"$
|
||||
$LK,"::/Demo/PullDownMenu.CPP"$
|
||||
$LK,"::/Demo/Graphics/Palette.CPP"$
|
||||
$LK,"::/Demo/Games/CircleTrace.CPP"$
|
||||
$LK,"::/Demo/Games/Halogen.CPP"$
|
||||
$LK,"::/Demo/Games/TheDead.CPP"$
|
||||
$LK,"::/Demo/Games/RainDrops.CPP"$
|
||||
$LK,"::/Demo/Snd/MorseCode.CPP"$
|
||||
$MA-X+PU,"::/Demo/Games/Stadium",LM="Cd(\"::/Demo/Games/Stadium\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/Lattice.CPP"$
|
||||
$LK,"::/Demo/Graphics/Collision.CPP"$
|
||||
$LK,"::/Demo/Games/BlackDiamond.CPP"$
|
||||
$ID,-2$$TR,"Games: Intermediate"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/Box.CPP"$
|
||||
$LK,"::/Demo/Graphics/Pick.CPP"$
|
||||
$LK,"::/Demo/Graphics/3DPoly.CPP"$
|
||||
$LK,"::/Demo/Graphics/BSpline.CPP"$
|
||||
$LK,"::/Demo/Graphics/Extents.CPP"$
|
||||
$LK,"::/Demo/Graphics/SpritePlot3D.CPP"$
|
||||
$LK,"::/Demo/Graphics/Balloon.CPP"$
|
||||
$LK,"::/Demo/Graphics/RotateTank.CPP"$
|
||||
$LK,"::/Demo/Games/Wenceslas.CPP"$
|
||||
$LK,"::/Demo/ScreenCodes.CPP"$
|
||||
$LK,"::/Demo/Graphics/PanText.CPP"$
|
||||
$LK,"::/Demo/Graphics/CharAnimation.CPP"$
|
||||
$LK,"::/Demo/Games/Maze.CPP"$
|
||||
$LK,"::/Demo/Games/CharDemo.CPP"$
|
||||
$LK,"::/Demo/Graphics/FontEd.CPP"$
|
||||
$LK,"::/Demo/ExtendedChars.CPP"$
|
||||
$LK,"::/Demo/TimeIns.CPP"$
|
||||
$LK,"::/Demo/Snd/WaterFowl.CPP"$
|
||||
$MA-X+PU,"::/Apps/Psalmody/Examples",LM="Cd(\"::/Apps/Psalmody/Examples\");Dir;View;\n"$
|
||||
$LK,"::/Demo/MultiCore/RateCores.CPP"$
|
||||
$LK,"::/Demo/MultiCore/MPPrint.CPP"$
|
||||
$LK,"::/Demo/Graphics/PredatorPrey.CPP"$
|
||||
$LK,"::/Demo/Graphics/Cartesian.CPP"$
|
||||
$LK,"::/Demo/Graphics/Hanoi.CPP"$
|
||||
$LK,"::/Demo/Graphics/Life.CPP"$
|
||||
$LK,"::/Demo/Games/Zing.CPP"$
|
||||
$LK,"::/Demo/Graphics/Grid.CPP"$
|
||||
$LK,"::/Demo/Games/TreeCheckers.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Palindrome.CPP"$
|
||||
$LK,"::/Demo/MultiCore/MPAdd.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Lock.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Clouds.CPP"$
|
||||
$LK,"::/Demo/Graphics/Slider.CPP"$
|
||||
$LK,"::/Demo/Graphics/WallPaperCtrl.CPP"$ //Press SHIFT-F5 to Adam Include
|
||||
$LK,"::/Demo/Graphics/ScrollBars.CPP"$
|
||||
$LK,"::/Demo/RegistryDemo.CPP"$
|
||||
$LK,"::/Demo/Games/FlapBat.CPP"$
|
||||
$LK,"::/Demo/Games/BattleLines.CPP"$
|
||||
$LK,"::/Demo/Games/BigGuns.CPP"$
|
||||
$LK,"::/Demo/Games/FlatTops.CPP"$
|
||||
$LK,"::/Demo/Games/RawHide.CPP"$
|
||||
$LK,"::/Demo/Games/DunGen.CPP"$
|
||||
$MA-X+PU,"::/Apps/TimeOut",LM="Cd(\"::/Apps/TimeOut\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/Collision.CPP"$
|
||||
$ID,-2$$TR,"Games: Advanced"$
|
||||
$ID,2$$LK,"::/Demo/MultiCore/LoadTest.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Primes.CPP"$
|
||||
$LK,"::/Demo/MultiCore/RadixSort.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Interrupts.CPP"$
|
||||
$MA-X+PU,"::/Apps/AfterEgypt",LM="Cd(\"::/Apps/AfterEgypt\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/Varoom.CPP"$
|
||||
$LK,"::/Demo/Graphics/Shading.CPP"$
|
||||
$LK,"::/Demo/Graphics/Transform.CPP"$
|
||||
$LK,"::/Demo/Games/BomberGolf.CPP"$
|
||||
$LK,"::/Demo/Graphics/Shadow.CPP"$
|
||||
$LK,"::/Demo/Graphics/Pick3D.CPP"$
|
||||
$MA-X+PU,"::/Apps/ToTheFront",LM="Cd(\"::/Apps/ToTheFront\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/SpriteText.CPP"$
|
||||
$LK,"::/Demo/Graphics/SpriteRaw.CPP"$
|
||||
$MA-X+PU,"::/Apps/GrModels",LM="Cd(\"::/Apps/GrModels\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/KeepAway",LM="Cd(\"::/Apps/KeepAway\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Graphics/Camp.CPP"$
|
||||
$LK,"::/Demo/Games/Rocket.CPP"$
|
||||
$LK,"::/Demo/Games/RocketScience.CPP"$
|
||||
$LK,"::/Demo/Games/MassSpring.CPP"$
|
||||
$LK,"::/Demo/Games/Whap.CPP"$
|
||||
$LK,"::/Demo/Games/Squirt.CPP"$
|
||||
$MA-X+PU,"::/Apps/X-Caliber",LM="Cd(\"::/Apps/X-Caliber\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Games/ZoneOut.CPP"$
|
||||
$LK,"::/Demo/Games/CastleFrankenstein.CPP"$
|
||||
$LK,"::/Demo/Games/EagleDive.CPP"$
|
||||
$MA-X+PU,"::/Apps/Strut",LM="Cd(\"::/Apps/Strut\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/Span",LM="Cd(\"::/Apps/Span\");Dir;View;\n"$
|
||||
$MA-X+PU,"::/Apps/Psalmody",LM="Cd(\"::/Apps/Psalmody\");Dir;View;\n"$
|
||||
$ID,-2$$TR,"Non-Game"$
|
||||
$ID,2$$LK,"::/Misc/DoDistro.CPP"$
|
||||
$LK,"::/Demo/DbgDemo.CPP"$
|
||||
$LK,"::/Demo/SubSwitch.CPP"$
|
||||
$LK,"::/Demo/DateTime.CPP"$
|
||||
$LK,"::/Demo/RevFileDemo/Rev.CPP"$
|
||||
$LK,"::/Demo/ToHtmlToTXTDemo/HtmlGen.CPP"$
|
||||
$LK,"::/Demo/ToHtmlToTXTDemo/TXTGen.CPP"$
|
||||
$LK,"::/Demo/SortFileDemo/F64FileGen.CPP"$
|
||||
$LK,"::/Demo/SortFileDemo/F64FileSort.CPP"$
|
||||
$LK,"::/Demo/PhoneNumWords.CPP"$
|
||||
$LK,"::/Demo/SuggestSpelling.CPP"$
|
||||
$LK,"::/Demo/WordSearch.CPP"$
|
||||
$LK,"::/Demo/Graphics/CommonAncestor.CPP"$
|
||||
$LK,"::/Demo/Directives.CPP"$
|
||||
$LK,"::/Demo/Carry.CPP"$
|
||||
$LK,"::/Demo/Dsk/DataBase.CPP"$
|
||||
$LK,"::/Demo/Dsk/FPrintF.CPP"$
|
||||
$LK,"::/Demo/Dsk/DskRaw.CPP"$
|
||||
$LK,"::/Demo/Dsk/UnusedSpaceRep.CPP"$
|
||||
$LK,"::/Demo/Lectures/MiniGrLib.CPP"$
|
||||
$LK,"::/Demo/Lectures/MiniCompiler.CPP"$
|
||||
$LK,"::/Demo/MagicPairs.CPP"$
|
||||
$LK,"::/Demo/Graphics/PoleZeros.CPP"$
|
||||
$LK,"::/Demo/WebLogDemo/WebLogRep.CPP"$
|
||||
$LK,"::/Demo/WebLogDemo/WebLogScramble.CPP"$
|
||||
$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,"TempleOS Specific"$
|
||||
$ID,2$$MA-X+PU,"::/Demo/AutoFile",LM="Cd(\"::/Demo/AutoFile\");Dir;View;\n"$
|
||||
$LK,"::/Demo/Print.CPP"$
|
||||
$LK,"::/Demo/SubIntAccess.CPP"$
|
||||
$LK,"::/Demo/ParenWarn.CPP"$
|
||||
$LK,"::/Demo/CompileDemo.CPP"$
|
||||
$LK,"::/Demo/Prompt.CPP"$
|
||||
$LK,"::/Demo/ClassMeta.CPP"$
|
||||
$LK,"::/Demo/LastClass.CPP"$
|
||||
$LK,"::/Demo/DolDoc/NumBible.CPP"$
|
||||
$LK,"::/Demo/DolDoc/Form.CPP"$
|
||||
$LK,"::/Demo/DolDoc/MenuButton.CPP"$
|
||||
$LK,"::/Demo/DolDoc/MenuSprite.CPP"$
|
||||
$LK,"::/Demo/DolDoc/ClickCallBack.CPP"$
|
||||
$LK,"::/Demo/DolDoc/TreeDemo.CPP"$
|
||||
$LK,"::/Demo/Exceptions.CPP"$
|
||||
$LK,"::/Demo/Dsk/SerializeTree.CPP"$
|
||||
$LK,"::/Demo/MemDemo.CPP"$
|
||||
$LK,"::/Demo/StkGrow.CPP"$
|
||||
$LK,"::/Demo/DolDoc/TextDemo.CPP"$
|
||||
$LK,"::/Demo/DolDoc/CursorMove.CPP"$
|
||||
$LK,"::/Demo/DolDoc/DemoDoc.TXT"$
|
||||
$LK,"::/Demo/Spy.CPP"$
|
||||
$LK,"::/Demo/DolDoc/FileRead.CPP"$
|
||||
$LK,"::/Demo/DolDoc/Data.CPP"$
|
||||
$LK,"::/Demo/DolDoc/DefineStr.CPP"$
|
||||
$LK,"::/Demo/DolDoc/CallBack.CPP"$
|
||||
$LK,"::/Demo/Define.CPP"$
|
||||
$LK,"EdRenumAsm",A="MN:EdRenumAsm"$
|
||||
$LK,"::/Demo/DolDoc/UnusedDefine.CPP"$
|
||||
$LK,"::/Demo/Asm/AsmHelloWorld.CPP"$
|
||||
$LK,"::/Demo/Asm/BuzzFizz.CPP"$
|
||||
$LK,"::/Demo/Asm/PutDec.CPP"$
|
||||
$LK,"::/Demo/Asm/MulByHand.CPP"$
|
||||
$LK,"::/Demo/Asm/DivByHand.CPP"$
|
||||
$LK,"::/Demo/Asm/AsmAndC1.CPP"$
|
||||
$LK,"::/Demo/Asm/AsmAndC2.CPP"$
|
||||
$LK,"::/Demo/Asm/AsmAndC3.CPP"$
|
||||
$LK,"::/Demo/GlblVars.CPP"$
|
||||
$LK,"::/Misc/OSTestSuite.CPP"$
|
||||
$MA-X+PU,"::/Adam",LM="Cd(\"::/Adam\");Dir;View;\n"$
|
||||
$ID,-2$
|
||||
@@ -5,4 +5,4 @@ $HL,1$$WW,0$#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_cc->lex_include_stk->full_name);}
|
||||
#define __DIR__ #exe{StreamDir;}
|
||||
|
||||
See $LK,"::/Demo/Directives.CPP"$.$HL,0$$WW,1$
|
||||
See $LK,"::/Demo/Directives.HC"$.$HL,0$$WW,1$
|
||||
@@ -0,0 +1,3 @@
|
||||
$WW,1$A $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ in memory is a $LK,"Circular Queue",A="HI:Data Types/Circular Queue"$ of cmds and graphics. See $LK,"CDocEntry",A="MN:CDocEntry"$ for the entry structure. See $LK,"TipOfDay",A="MN:TipOfDay"$() for a nice example.
|
||||
|
||||
$LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$'s are used for the editor, viewer, browser, and cmd line.
|
||||
@@ -1,3 +0,0 @@
|
||||
$WW,1$A $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$ in memory is a $LK,"Circular Queue",A="HI:Data Types/Circular Queue"$ of cmds and graphics. See $LK,"CDocEntry",A="MN:CDocEntry"$ for the entry structure. See $LK,"TipOfDay",A="MN:TipOfDay"$() for a nice example.
|
||||
|
||||
$LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$'s are used for the editor, viewer, browser, and cmd line.
|
||||
@@ -4,18 +4,18 @@ DolDoc is a TempleOS document type supported by $LK,"DolDoc Routines",A="HI:DolD
|
||||
|
||||
Here is the grammar:
|
||||
|
||||
<DolDocCmd> := $FG,2$$$$FG$<$LK,"TwoLetterCmd",A="FF:::/Adam/DolDoc/DocInit.CPP,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:::/Adam/DolDoc/DocInit.HC,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:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$>[$FG$<FlagList>]
|
||||
<FlagList> := $FG,2$+$FG$|$FG,2$-$FG$ <$LK,"FlagCode",A="FF:::/Adam/DolDoc/DocInit.HC,ST_DOC_FLAGS"$>[$FG$<FlagList>]
|
||||
|
||||
<ArgList> := <$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$>$FG,2$=$FG$<ArgExpression>[$FG,2$,$FG$<ArgList>]
|
||||
<ArgList> := <$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.HC,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:::/Adam/DolDoc/DocInit.CPP,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:::/Adam/DolDoc/DocInit.HC,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.TXT"$ and $LK,"::/Demo/DolDoc/DemoDoc.TXT"$.
|
||||
See $LK,"::/Doc/Widget.DD"$ and $LK,"::/Demo/DolDoc/DemoDoc.DD"$.
|
||||
|
||||
<$LK,"TwoLetterCmd",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_CMDS"$> See $LK,"Type Defines",A="MN:DOCT_TEXT"$ and $LK,"PrsDollarCmd",A="MN:PrsDollarCmd"$().
|
||||
<$LK,"TwoLetterCmd",A="FF:::/Adam/DolDoc/DocInit.HC,ST_DOC_CMDS"$> See $LK,"Type Defines",A="MN:DOCT_TEXT"$ and $LK,"PrsDollarCmd",A="MN:PrsDollarCmd"$().
|
||||
$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"$
|
||||
@@ -95,7 +95,7 @@ The expressions are relative to the current cursor location, unless you make the
|
||||
$FG,2$+BY$FG$ bottom
|
||||
$FG,2$+PRY$FG$ page relative
|
||||
|
||||
See $LK,"::/Demo/DolDoc/CursorMove.CPP"$.
|
||||
See $LK,"::/Demo/DolDoc/CursorMove.HC"$.
|
||||
|
||||
$ID,-2$$TR,"AN Anchor"$
|
||||
$ID,2$The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the anchor. I don't use these very often, but they're good sometimes.
|
||||
@@ -106,14 +106,14 @@ See $LK,"Link Types",A="MN:LK_FILE"$.
|
||||
|
||||
Examples: <CTRL-t> to see
|
||||
|
||||
1)$LK,"File link to HelpIndex.TXT",A="::/Doc/HelpIndex.TXT"$
|
||||
2)$LK,"File link to HelpIndex.TXT with link type file",A="FI:::/Doc/HelpIndex.TXT"$
|
||||
3)File link with same tag str. $LK,"::/Doc/HelpIndex.TXT"$
|
||||
4)$LK,"File find link searching for 'Admin'",A="FF:::/Doc/HelpIndex.TXT,Admin"$
|
||||
5)$LK,"File find link searching for 5th 'CTRL'",A="FF:::/Kernel/KernelA.HPP,CTRL:5"$
|
||||
1)$LK,"File link to HelpIndex.DD",A="::/Doc/HelpIndex.DD"$
|
||||
2)$LK,"File link to HelpIndex.DD with link type file",A="FI:::/Doc/HelpIndex.DD"$
|
||||
3)File link with same tag str. $LK,"::/Doc/HelpIndex.DD"$
|
||||
4)$LK,"File find link searching for 'Admin'",A="FF:::/Doc/HelpIndex.DD,Admin"$
|
||||
5)$LK,"File find link searching for 5th 'CTRL'",A="FF:::/Kernel/KernelA.HH,CTRL:5"$
|
||||
6)$LK,"Manual page link",A="MN:Print"$
|
||||
7)$LK,"File line num link",A="FL:::/Kernel/KernelA.HPP,200"$
|
||||
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$
|
||||
7)$LK,"File line num link",A="FL:::/Kernel/KernelA.HH,200"$
|
||||
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/KEnd.HC,Independent HeapCtrl Example"$
|
||||
9)$LK,"Bible Link",A="BF:Acts,2:3"$ The chapter:verse actually just does a text search.
|
||||
10) $LK,"Help Index Link",A="HI:Doc"$.
|
||||
11) $LK,"Address Link",A="AD:0x12000"$.
|
||||
@@ -121,37 +121,37 @@ Examples: <CTRL-t> to see
|
||||
12) For in-memory document address links, see $LK,"SpriteEdText",A="MN:SpriteEdText"$().
|
||||
|
||||
$ID,-2$$TR,"BT Button"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/MenuButton.CPP"$.
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/MenuButton.HC"$.
|
||||
$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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CPP"$, $LK,"::/Demo/Dsk/DataBase.CPP"$, and $LK,"::/Adam/DolDoc/DocWidgetWiz.CPP"$.
|
||||
$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,"HolyC",A="FI:::/Doc/HolyC.DD"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.HC"$, $LK,"::/Demo/Dsk/DataBase.HC"$, and $LK,"::/Adam/DolDoc/DocWidgetWiz.HC"$.
|
||||
|
||||
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:::/Adam/DolDoc/DocEd.CPP,&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:::/Adam/DolDoc/DocEd.HC,&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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $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,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
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,"HolyC",A="FI:::/Doc/HolyC.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,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
|
||||
The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the print/scan format string.
|
||||
|
||||
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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition. The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
|
||||
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,"HolyC",A="FI:::/Doc/HolyC.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:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
|
||||
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.HC,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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CPP"$$FG$ and $LK,"CEdFindText",A="MN:CEdFindText"$.
|
||||
$ID,2$Used for forms. Use $FG,2$<CTRL-l>$FG$ to help you generate the DolDoc command text you need in your $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.HC"$$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:::/Adam/DolDoc/DocEd.CPP,&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:::/Adam/DolDoc/DocEd.HC,&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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $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,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
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,"HolyC",A="FI:::/Doc/HolyC.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,"DocDataFmt",A="MN:DocDataFmt"$() 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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
$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,"HolyC",A="FI:::/Doc/HolyC.DD"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$(). See $LK,"::/Demo/DolDoc/Form.HC"$.
|
||||
|
||||
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:::/Adam/DolDoc/DocEd.CPP,&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:::/Adam/DolDoc/DocEd.HC,&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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $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,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
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,"HolyC",A="FI:::/Doc/HolyC.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,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
$ID,-2$$TR,"MA Macro"$
|
||||
$ID,2$A left macro arg, $FG,2$LM=""$FG$, will send text when the left mouse is clicked.
|
||||
|
||||
A left auto string, $FG,2$+LA$FG$, flag will cause text to be sent to $LK,"AutoStr",A="MN:AutoStr"$() instead of $LK,"Auto",A="MN:Auto"$(). An AutoStr runs code. Literal text is in quotes and messages are sent with $LK,"Msg",A="MN:Msg"$(). See $MA-X+PU,LM="Dir(\"::/Demo/AutoFile\");View;"$.
|
||||
|
||||
Macro's are usually in your $LK,"~/PersonalMenu.TXT"$ and have the '$FG,2$+X$FG$' flag set by $LK,"default",A="MN:DocInit"$. Adding '$FG,2$-X$FG$' prevents the usual $FG,2$<ESC>$FG$ from being sent (which exits the PersonalMenu screen). Note: When you click a macro on the cmd line, it will go to the bottom and execute unless you cancel the $FG,2$<ESC>$FG$ with a '$FG,2$-X$FG$'.
|
||||
Macro's are usually in your $LK,"~/PersonalMenu.DD"$ and have the '$FG,2$+X$FG$' flag set by $LK,"default",A="MN:DocInit"$. Adding '$FG,2$-X$FG$' prevents the usual $FG,2$<ESC>$FG$ from being sent (which exits the PersonalMenu screen). Note: When you click a macro on the cmd line, it will go to the bottom and execute unless you cancel the $FG,2$<ESC>$FG$ with a '$FG,2$-X$FG$'.
|
||||
$ID,-2$$TR,"MU Menu Value"$
|
||||
$ID,2$A left expression arg, $FG,2$LE=<Exp>$FG$, will return a number when clicked with the left mouse.
|
||||
|
||||
@@ -163,7 +163,7 @@ $ID,2$A tree widget is a branch in a collapsable tree. The domain of the branch
|
||||
|
||||
You might want to use $LK,"DocPrintAtomic",A="MN:DocPrintAtomic"$().
|
||||
|
||||
See $LK,"::/Demo/DolDoc/TreeDemo.CPP"$.
|
||||
See $LK,"::/Demo/DolDoc/TreeDemo.HC"$.
|
||||
$ID,-2$$TR,"SP Sprite"$
|
||||
$ID,2$Insert a sprite into text with $FG,2$<CTRL-r>$FG$. The cursor location at the time you press $FG,2$<CTRL-r>$FG$ is critical because the sprite will be offset from that location. This is important when adding images to programs. Numbers for sprites are automatically chosen because copying to and from the clipboard requires this. You can insert another sprite with the same image by hitting $FG,2$<CTRL-t>$FG$ and manually adding a $FG,2$$$SP...$$$FG$ entry with the same $FG,2$BI=$FG$ num.
|
||||
|
||||
@@ -173,7 +173,7 @@ $ID,2$Tells the compiler to insert a pointer to some binary data stored after th
|
||||
|
||||
You can, optionally, include tag text to be displayed for the $FG,2$$$IB...$$$FG$ cmd. If you set the tag to "<1>", then the editor will automatically update the tag if the $FG,2$BI=$FG$ number changes.
|
||||
|
||||
The reason for the $FG,2$$$IB...$$$FG$ cmd is to pass a arg to $LK,"Sprite",A="MN:Sprite"$() and $LK,"Sprite3",A="MN:Sprite3"$(). See $LK,"::/Demo/Graphics/SpritePlot.CPP"$.
|
||||
The reason for the $FG,2$$$IB...$$$FG$ cmd is to pass a arg to $LK,"Sprite",A="MN:Sprite"$() and $LK,"Sprite3",A="MN:Sprite3"$(). See $LK,"::/Demo/Graphics/SpritePlot.HC"$.
|
||||
|
||||
$ID,-2$$TR,"IS Insert Binary Size"$
|
||||
$ID,2$Inserts a number into the compiled stream describing the size of binary data associated with a bin number. I never use this.
|
||||
@@ -184,11 +184,11 @@ $ID,2$Include a $FG,2$1$FG$ or $FG,2$0$FG$.
|
||||
|
||||
$FG,2$$$HL,1$$$FG$ will turn syntax highlighting on.
|
||||
$ID,-2$$TR,"HC html"$
|
||||
$ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$ to generate a html version of a document. You can cause html code to be injected with $FG,2$HC$FG$. Use the $FG,2$+HTML$FG$ flag to inject a html link.
|
||||
$ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$ to generate a html version of a document. You can cause html code to be injected with $FG,2$HC$FG$. Use the $FG,2$+HTML$FG$ flag to inject a html link.
|
||||
$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:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$> See $LK,"Flag Defines",A="MN:DOCEf_LEFT_CB"$ and $LK,"Simple Flags",A="FI:::/Doc/Widget.TXT"$.
|
||||
<$LK,"FlagCode",A="FF:::/Adam/DolDoc/DocInit.HC,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"$
|
||||
@@ -214,39 +214,39 @@ $ID,2$The Refresh Data flag on a $FG,2$DA$FG$ or a $FG,2$CB$FG$ makes the value
|
||||
$ID,-2$$TR,"+UD Update Data"$
|
||||
$ID,2$The Update Data flag on a $FG,2$DA$FG$ or a $FG,2$CB$FG$ makes the value in the $LK,"CDocEntry",A="MN:CDocEntry"$ updated when keys are typed on it.
|
||||
$ID,-2$$TR,"+TC Tag CallBack"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/CallBack.CPP"$.
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/CallBack.HC"$.
|
||||
$ID,-2$$TR,"+LC Left CallBack"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.CPP"$.
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.HC"$.
|
||||
$ID,-2$$TR,"+RC Right CallBack"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.CPP"$.
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.HC"$.
|
||||
$ID,-2$
|
||||
<$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$> See $LK,"Arg Defines",A="MN:DOCEf_TAG"$.
|
||||
<$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.HC,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:::/Adam/DolDoc/DocInit.CPP,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:::/Adam/DolDoc/DocInit.HC,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,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition. The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
|
||||
$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,"HolyC",A="FI:::/Doc/HolyC.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:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
|
||||
The space after the first ':' in the format string marks the first valid cursor pos. See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.HC,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.CPP"$, $LK,"::/Adam/ADefine.CPP"$ and $LK,"::/Doc/MemOverview.TXT"$.
|
||||
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.HC"$, $LK,"::/Adam/ADefine.HC"$ and $LK,"::/Doc/MemOverview.DD"$.
|
||||
|
||||
For $FG,2$LS$FG$ widgets, see $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
For $FG,2$LS$FG$ widgets, see $LK,"::/Demo/DolDoc/Form.HC"$.
|
||||
$ID,-2$$TR,"HTML=\"\""$
|
||||
$ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$ to generate a html version of a document. You can cause html link on an item with $FG,2$HTML=""$FG$.
|
||||
$ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$ to generate a html version of a document. You can cause html link on an item with $FG,2$HTML=""$FG$.
|
||||
$ID,-2$$TR,"LE=<Exp> Left Expression"$
|
||||
$ID,2$Left expression. $FG,2$CM$FG$ has this by default for X offset and you can leave-off the $FG,2$LE=$FG$, just putting the $FG,2$<Exp>$FG$.
|
||||
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.CPP"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.HC"$.
|
||||
$ID,-2$$TR,"LM=\"\" Left Macro Str"$
|
||||
$ID,2$Left macro string.
|
||||
$ID,-2$$TR,"RE=<Exp> Right Expression"$
|
||||
$ID,2$Right expression. $FG,2$CM$FG$ has this by default for Y offset and you can leave-off the $FG,2$RE=$FG$, just putting the $FG,2$<Exp>$FG$.
|
||||
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.CPP"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.HC"$.
|
||||
$ID,-2$$TR,"RM=\"\" Right Macro Str"$
|
||||
$ID,2$Right macro string.
|
||||
$ID,-2$$TR,"BI=<Exp> Bin Number"$
|
||||
@@ -255,7 +255,7 @@ $ID,-2$$TR,"BP=\"\" Bin Ptr"$
|
||||
$ID,2$The BinPtrLink flags lets you specify a filename and bin num to import a bin$FG$.
|
||||
|
||||
$FG,2$$$SP,"<tag>",BI=1,BP="filename,1"$$$FG$ will import bin num "1" from filename.
|
||||
$FG,2$$$SP,"<1>",BI=1,BP="::/Demo/Graphics/Mountain.CPP.Z,Mountain"$$$FG$ will import bin with tag name "Mountain" from "::/Demo/Graphics/Mountain.CPP.Z".
|
||||
$FG,2$$$SP,"<1>",BI=1,BP="::/Demo/Graphics/Mountain.HC.Z,Mountain"$$$FG$ will import bin with tag name "Mountain" from "::/Demo/Graphics/Mountain.HC.Z".
|
||||
$ID,-2$$TR,"RT=<raw_data_type>"$
|
||||
$ID,2$The default data-type for the $FG,2$$$DA...$$$FG$ and $FG,2$$$LS...$$$FG$ commands is $FG,2$RT=I64$FG$. If you do not specify a raw type and are using $LK,"DocForm",A="MN:DocForm"$(), it will use the $FG,2$class$FG$ member's raw type, automatically. The default for the $FG,2$$$CB...$$$FG$ command is $FG,2$RT=I8$FG$ which is $FG,2$Bool$FG$.
|
||||
|
||||
@@ -269,7 +269,7 @@ $ID,2$Scroll text in a marquee of so many columns.
|
||||
$ID,-2$$TR,"U=<Exp> User Data"$
|
||||
$ID,2$User Data.
|
||||
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.CPP"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuButton.HC"$.
|
||||
$ID,-2$
|
||||
$FG,5$EXAMPLES:
|
||||
|
||||
@@ -34,7 +34,7 @@ Insert
|
||||
FileName(,,0x3E0000003E);
|
||||
DirName(,,0x23E0000023E);
|
||||
GodWord(,,0x4100000041);
|
||||
GodPassage(,,0x24100000241);
|
||||
GodBiblePassage(,,0x24100000241);
|
||||
GodSong(,,0x4000000040);
|
||||
GodDoodle(,,0x24000000240);
|
||||
IndentIn(,CH_CTRLI,0x41700000417);
|
||||
+19
-19
@@ -1,17 +1,17 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Frequently Asked Questions"$$FG$
|
||||
|
||||
$TR,"How come it is public domain, not GPL?"$
|
||||
$ID,2$I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"118,851",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.5",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.TXT"$.
|
||||
$ID,2$I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"118,851",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.5",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/TempleOS?"$
|
||||
$ID,2$TempleOS 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.TXT"$.
|
||||
$ID,2$TempleOS 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$TempleOS 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 TempleOS. Yes, I wrote the compiler from scratch. See $LK,"::/Doc/Credits.TXT"$.
|
||||
$ID,2$TempleOS 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 TempleOS. Yes, I wrote the compiler from scratch. See $LK,"::/Doc/Credits.DD"$.
|
||||
$ID,-2$$TR,"Why do you dual boot?"$
|
||||
$ID,2$TempleOS is 100% independent -- it does not access the files of your primary operating system and TempleOS 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$TempleOS is an operating system, not a browser. $LK,"TempleOS 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.TXT"$ 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$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$TempleOS 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?"$
|
||||
@@ -21,45 +21,45 @@ $ID,2$$LK,"Bt",A="MN:Bt"$() is $FG,2$bit test$FG$, like the $FG,2$x86$FG$ inst,
|
||||
$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$TempleOS uses a dialect of C/C++ called $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$. It is not $FG,2$Pascal$FG$. I altered the syntax making parenthesis optional on function calls with no paramaters.
|
||||
$ID,2$TempleOS uses a dialect of C/C++ called $LK,"HolyC",A="FI:::/Doc/HolyC.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?"$
|
||||
$ID,2$$LK,"Yield",A="MN:Yield"$() saves the current task's regs (context) and loads in the next task. In a loop waiting for disk IO, it executes $LK,"Yield",A="MN:Yield"$() which pegs the CPU load, yet the system is responsive.
|
||||
$ID,-2$$TR,"What is JIT Compiled Mode?"$
|
||||
$ID,2$The term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ means it compiles and executes code placed into mem, not stored on disk.
|
||||
$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,"TempleOS Compression",A="FI:::/Kernel/Compress.CPP"$. 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.TXT"$ for Linux or Windows uncompress C/C++ code.
|
||||
$ID,2$Files with names ending in $FG,2$.Z$FG$ are individually compressed using $LK,"TempleOS Compression",A="FI:::/Kernel/Compress.HC"$. 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? How do I build it?"$
|
||||
$ID,2$TempleOS 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.TXT,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.CPP"$.
|
||||
$ID,2$TempleOS 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.HC"$.
|
||||
$ID,-2$$TR,"Where are object files? How do I link?"$
|
||||
$ID,2$TempleOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ is used to directly create flat binary files, $FG,2$/Kernel.BIN.C$FG$ and $FG,2$/Compiler/Compiler.BIN.Z$FG$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,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$TempleOS 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, $FG,2$/Kernel.BIN.C$FG$ and $FG,2$/Compiler/Compiler.BIN.Z$FG$ 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,"30",D="WINMGR_FPS"$ frames-per-second. That is how often TempleOS 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$TempleOS allocs mem as more items are displayed in the window. Also, TempleOS 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.TXT"$ 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,"MemOverview",A="FI:::/Doc/MemOverview.TXT"$.
|
||||
$ID,2$TempleOS allocs mem as more items are displayed in the window. Also, TempleOS 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,"MemOverview",A="FI:::/Doc/MemOverview.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$TempleOS runs in $FG,2$VGA 640x480 16 color$FG$ graphics mode, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CPP,INT 0x10"$ 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.CPP"$. If graphics mode fails, it falls-back on text mode. You can force text mode with an $LK,"Kernel config",A="FI:::/Kernel/KCfg.CPP"$ option.
|
||||
$ID,2$TempleOS runs in $FG,2$VGA 640x480 16 color$FG$ graphics mode, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.HC,INT 0x10"$ 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.HC"$. If graphics mode fails, it falls-back on text mode. You can force text mode with an $LK,"Kernel config",A="FI:::/Kernel/KCfg.HC"$ option.
|
||||
$ID,-2$$TR,"Where is the kernel memory?"$
|
||||
$ID,2$TempleOS 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. TempleOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Adam$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 2 Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.TXT,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemOverview",A="FI:::/Doc/MemOverview.TXT"$.
|
||||
$ID,2$TempleOS 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. TempleOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Adam$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 2 Gig 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,"MemOverview",A="FI:::/Doc/MemOverview.DD"$.
|
||||
$ID,-2$$TR,"Why does it run code from stack addresses?"$
|
||||
$ID,2$TempleOS puts all code in the lowest 2 Gig, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.TXT,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. TempleOS is 64-bit, but $FG,2$2 Gig$FG$ is enough for code. It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$. $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
|
||||
$ID,2$TempleOS puts all code in the lowest 2 Gig, 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. TempleOS is 64-bit, but $FG,2$2 Gig$FG$ is enough for code. It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$. $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
|
||||
$ID,-2$$TR,"How does it SYSCALL?"$
|
||||
$ID,2$TempleOS 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.TXT"$.
|
||||
$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.TXT"$. You can use the TempleOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Adam/Opt/Boot/BootMHD.CPP"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Adam/Opt/Boot/BootMHD2.CPP"$, $LK,"Partition-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$.
|
||||
$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 TempleOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Adam/Opt/Boot/BootMHD.HC"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Adam/Opt/Boot/BootMHD2.HC"$, $LK,"Partition-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootHD.HC"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootDVD.HC"$.
|
||||
$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.CPP"$ if you relocate it.
|
||||
$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.HC"$ if you relocate it.
|
||||
$ID,-2$$TR,"Why is there some 16-Bit code?"$
|
||||
$ID,2$TempleOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. TempleOS 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. TempleOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.CPP"$ a couple times. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
|
||||
$ID,2$TempleOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. TempleOS 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. TempleOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.HC"$ 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?"$
|
||||
@@ -73,7 +73,7 @@ $ID,2$Binary executable files have export syms which are loaded into the sym tab
|
||||
$ID,-2$$TR,"Why doesn't assert work?"$
|
||||
$ID,2$$FG,2$#assert$FG$ might print a message at COMPILE time, not run time.
|
||||
$ID,-2$$TR,"Why doesn't C++ public work?"$
|
||||
$ID,2$The word $FG,2$public$FG$ in $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ does very little except allow the $LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$ and $LK,"Who",A="MN:Who"$() to exclude meaningless syms. If you wish a full report of public and nonpublic syms $MA-X+PU,"Click Here",LM="DocMax(1000000);Who;View;\n"$.
|
||||
$ID,2$The word $FG,2$public$FG$ in $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ does very little except allow the $LK,"Help & Index",A="FI:::/Doc/HelpIndex.DD"$ and $LK,"Who",A="MN:Who"$() to exclude meaningless syms. If you wish a full report of public and nonpublic syms $MA-X+PU,"Click Here",LM="DocMax(1000000);Who;View;\n"$.
|
||||
$ID,-2$$TR,"How does the debugger do source debugging?"$
|
||||
$ID,2$When compilation takes place, the structures used by the compiler stick around. Data on classes can be accessed. See $LK,"ClassRep",A="MN:ClassRep"$().
|
||||
$ID,-2$$TR,"What are the ASCII 5 and ASCII 31 chars doing in my text files?"$
|
||||
@@ -83,7 +83,7 @@ $ID,2$Binary sprite data is stored beyond the terminating $FG,2$NULL$FG$ in text
|
||||
$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 /Adam and /Home files?"$
|
||||
$ID,2$If you change code in the $FG,2$/Adam$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.TXT,JIT Compile Mode"$. There is no $FG,2$.BIN$FG$ file for $FG,2$JIT$FG$ compilation. See $LK,"::/StartOS.CPP"$.
|
||||
$ID,2$If you change code in the $FG,2$/Adam$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.HC"$.
|
||||
$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$
|
||||
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"TempleOS' Features"$$FG$
|
||||
|
||||
* Oracle in program, $FG,2$AfterEgypt$FG$, for $LK,"tongues",A="FI:::/Adam/God/HSNotes.TXT"$.
|
||||
* Oracle in program, $FG,2$AfterEgypt$FG$, for $LK,"tongues",A="FI:::/Adam/God/HSNotes.DD"$.
|
||||
|
||||
* $FG,4$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$, ring-0-only, single-address-map (identity), multitasking kernel with multicore support.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
* Free, $FG,2$public domain$FG$, $FG,2$100% open source$FG$.
|
||||
|
||||
* 64-bit $FG,2$compiler/assembler$FG$ for $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$. Truly compiles, doesn't interpret. $FG,2$Just-in-Time$FG$ and $FG,2$Ahead-of-Time$FG$ compilation. With $FG,2$JIT$FG$, no need for object or exe files.
|
||||
* 64-bit $FG,2$compiler/assembler$FG$ for $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$. Truly compiles, doesn't interpret. $FG,2$Just-in-Time$FG$ and $FG,2$Ahead-of-Time$FG$ compilation. With $FG,2$JIT$FG$, no need for object or exe files.
|
||||
|
||||
* No 32-bit krufty code.
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
* Keyboard & Mouse support.
|
||||
|
||||
* ATA PIO Hard drives, support for $FG,2$FAT32$FG$ and $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file systems with file compression.
|
||||
* ATA PIO Hard drives, support for $FG,2$FAT32$FG$ and $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file systems with file compression.
|
||||
|
||||
* ATAPI PIO $FG,2$CD/DVD$FG$ support with $FG,2$ISO9660$FG$ file system. Can make bootable $FG,2$ISO9660$FG$ ISO files so you can roll-your-own distro's.
|
||||
|
||||
* $LK,"Partitioning",A="MN:PrtDsk"$ tool, installer, $FG,2$boot loaders$FG$ for CD/DVD and hard disk.
|
||||
|
||||
* $FG,2$Editor/Browser$FG$ for a new $LK,"Document Format",A="FI:::/Doc/DolDocOverview.TXT"$. Source files and the command line window can have graphics, links, icons, trees, colors, super/sub scripts, margins. Everything is seamless through-out the tool chain. No need for separate resource files.
|
||||
* $FG,2$Editor/Browser$FG$ for a new $LK,"Document Format",A="FI:::/Doc/DolDocOverview.DD"$. Source files and the command line window can have graphics, links, icons, trees, colors, super/sub scripts, margins. Everything is seamless through-out the tool chain. No need for separate resource files.
|
||||
|
||||
* 8-bit $FG,2$ASCII$FG$, not just 7-bit. Supported in entire tool chain. $FG,2$<CTRL-ALT-a>$FG$
|
||||
|
||||
@@ -48,6 +48,6 @@
|
||||
|
||||
* Music composing tool.
|
||||
|
||||
* Many games, $LK,"demos",A="FI:::/Doc/DemoIndex.TXT"$ and $LK,"documentation",A="FI:::/Doc/HelpIndex.TXT"$.
|
||||
* 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 TempleOS compiler and assembler.
|
||||
File renamed without changes.
@@ -62,5 +62,5 @@ $ID,-2$
|
||||
$FG,5$Instructions on Burning CD/DVD's$FG$
|
||||
$ID,2$Create a temporary dir to hold files and copy files into the holding dir. Make an ISO image of the dir by pressing $FG,2$'M'$FG$ when on top of the dir. Press $FG,2$'B'$FG$ when on top of the CD/DVD ROM drive to burn the ISO, $LK,"blkdev.dft_iso_filename",A="MN:CBlkDevGlbls"$, to disk. If you have not recompiled $FG,2$Kernel$FG$ and defined your CD/DVD drive, exit the file mgr and use $LK,"Mount",A="MN:Mount"$.
|
||||
|
||||
$LK,"Making Your Own Distro",A="FI:::/Misc/DoDistro.CPP"$
|
||||
$LK,"Making Your Own Distro",A="FI:::/Misc/DoDistro.HC"$
|
||||
$ID,-2$
|
||||
File renamed without changes.
@@ -5,7 +5,7 @@ File util $LK,"FilesFind",A="MN:FilesFind"$() wildcard mask consists of a single
|
||||
|
||||
$FG,2$"/Kernel/*"$FG$ BaseDir: $FG,2$/Kernel$FG$ Mask: $FG,2$*$FG$
|
||||
$FG,2$"/Demo/*.BMP*;*.GRA*"$FG$ BaseDir: $FG,2$/Demo$FG$ Mask: $FG,2$*.BMP*$FG$ | $FG,2$*.GRA*$FG$
|
||||
$FG,2$"/*.TXT*;!*/Bible*"$FG$ BaseDir: $FG,2$Root$FG$ Mask: $FG,2$*.TXT*$FG$ but not $FG,2$*/Bible*$FG$
|
||||
$FG,2$"/*.DD*;!*/Bible*"$FG$ BaseDir: $FG,2$Root$FG$ Mask: $FG,2$*.DD*$FG$ but not $FG,2$*/Bible*$FG$
|
||||
|
||||
See $LK,"FilesFindMatch",A="MN:FilesFindMatch"$().
|
||||
|
||||
@@ -1 +1 @@
|
||||
$WW,1$If you require separate global vars for multiple instances of a routine, you can use $FG,4$Frame$FG$s. See $LK,"SpriteMeshEd",A="MN:SpriteMeshEd"$(), $LK,"::/Demo/Graphics/Pick3D.CPP"$ or $LK,"Noise",A="MN:Noise"$().
|
||||
$WW,1$If you require separate global vars for multiple instances of a routine, you can use $FG,4$Frame$FG$s. See $LK,"SpriteMeshEd",A="MN:SpriteMeshEd"$(), $LK,"::/Demo/Graphics/Pick3D.HC"$ or $LK,"Noise",A="MN:Noise"$().
|
||||
@@ -37,7 +37,7 @@ class GRAFile
|
||||
I32 width;
|
||||
I32 width_internal; //Rounded-up to multiple of 8.
|
||||
I32 height;
|
||||
I32 flags; //DCF_COMPRESSED? See $LK,"::/Kernel/Compress.CPP"$.
|
||||
I32 flags; //DCF_COMPRESSED? See $LK,"::/Kernel/Compress.HC"$.
|
||||
CBGR48 palette[16]; //Included if DCF_PALETTE.
|
||||
U8 body[];
|
||||
};$HL,0$
|
||||
@@ -69,7 +69,7 @@ $FG,2$Init$FG$ Initialize
|
||||
$FG,2$Ins$FG$ Insert, Install
|
||||
$FG,2$Inst$FG$ Instruction
|
||||
$FG,2$Int$FG$ Interrupt, Integer
|
||||
$FG,2$ip_$FG$ Input Pointer. See $LK,"InputPointer.CPP",A="FI:::/Kernel/SerialDev/InputPointer.CPP"$.
|
||||
$FG,2$ip_$FG$ Input Pointer. See $LK,"InputPointer.HC",A="FI:::/Kernel/SerialDev/InputPointer.HC"$.
|
||||
$FG,2$Irq$FG$ Interrupt (Request)
|
||||
$FG,2$JIT$FG$ Just-in-Time
|
||||
$FG,2$Kbd$FG$ Keyboard
|
||||
@@ -151,7 +151,7 @@ $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.
|
||||
$ID,-2$$TR,"Adam Task"$
|
||||
$ID,2$This is Adam, as in Adam and Eve, the parent of all tasks and immortal. This task is created at start-up and appears in the small window at the top beneath the user windows. On it's heap are all memory objects which you don't want destroyed by a task's death. When created, Adam runs the file $LK,"::/StartOS.CPP"$. When start-up is finished, the adam task enters a server mode where it accepts requests from other tasks. The $LK,"Adam",A="MN:Adam"$("") routine will make Adam compile and run text src code. $FG,2$#include$FG$ stmts can be sent to $LK,"Adam",A="MN:Adam"$(""), creating system-wide code and data which don't disappear when any particular task ends.
|
||||
$ID,2$This is Adam, as in Adam and Eve, the parent of all tasks and immortal. This task is created at start-up and appears in the small window at the top beneath the user windows. On it's heap are all memory objects which you don't want destroyed by a task's death. When created, Adam runs the file $LK,"::/StartOS.HC"$. When start-up is finished, the adam task enters a server mode where it accepts requests from other tasks. The $LK,"Adam",A="MN:Adam"$("") routine will make Adam compile and run text src code. $FG,2$#include$FG$ stmts can be sent to $LK,"Adam",A="MN:Adam"$(""), creating system-wide code and data which don't disappear when any particular task ends.
|
||||
$ID,-2$$TR,"Seth Task"$
|
||||
$ID,2$$FG,2$Seth$FG$ is Adam and Eve's child. Each CPU core has an executive task called $FG,2$Seth$FG$ that is immortal. The Adam task on $FG,2$CPU#0$FG$ is also it's $FG,2$Seth$FG$ task.
|
||||
$ID,-2$$TR,"Code and Data Heaps"$
|
||||
@@ -159,7 +159,7 @@ $ID,2$TempleOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is l
|
||||
$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$Adam$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,"HolyC"$
|
||||
$ID,2$$LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ 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/HolyC.TXT,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$$LK,"HolyC",A="FI:::/Doc/HolyC.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/HolyC.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"$
|
||||
$ID,2$$FG,2$Ahead-of-Time$FG$ compiling is conventional compilation mode. Do not use $FG,2$AOT$FG$, use $FG,2$JIT$FG$ compiling.
|
||||
|
||||
@@ -179,11 +179,11 @@ For commands taking a drive letter as an argument, char $FG,2$0$FG$ is the curre
|
||||
$ID,-2$$LK,"AutoFile",A="HI:AutoFile"$
|
||||
$LK,"Bt, Bts, Btr, Btc, BEqu",A="HI:Bit"$
|
||||
$LK,"Define",A="HI:Define"$
|
||||
$LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$
|
||||
$LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$
|
||||
$LK,"Editor Link Types",A="MN:LK_FILE"$
|
||||
$LK,"files_find_mask",A="FI:::/Doc/FileUtils.TXT"$
|
||||
$LK,"files_find_mask",A="FI:::/Doc/FileUtils.DD"$
|
||||
$LK,"Hash Table",A="HI:Hash"$
|
||||
$LK,"RedSea File System",A="FI:::/Doc/RedSea.TXT"$
|
||||
$LK,"RedSea File System",A="FI:::/Doc/RedSea.DD"$
|
||||
$LK,"Sprite",A="HI:Graphics/Sprite"$
|
||||
$TR,"CLI, STI, PUSHFD, POPFD"$
|
||||
$ID,2$These are x86 assembly insts.
|
||||
@@ -196,13 +196,13 @@ $ID,2$$FG,5$*.???.Z$FG$
|
||||
These files are automatically compressed or uncompresses files when read or written.
|
||||
$FG,5$*.???.C$FG$
|
||||
Contiguous files--NOT compressed.
|
||||
$FG,5$*.TXT.Z;*.TXT;*.LOG.Z;*.LOG$FG$
|
||||
$FG,5$*.DD.Z;*.DD;*.LOG.Z;*.LOG$FG$
|
||||
Text Files
|
||||
$FG,5$*.CPP.Z;*.CPP$FG$
|
||||
HolyC src files. The default HolyC compiler type is $FG,2$.CPP.Z$FG$.
|
||||
$FG,5$*.HC.Z;*.HC$FG$
|
||||
HolyC src files. The default HolyC compiler type is $FG,2$.HC.Z$FG$.
|
||||
$FG,5$*.PRJ.Z;*.PRJ$FG$
|
||||
HolyC src files to be compiled $FG,2$AOT$FG$.
|
||||
$FG,5$*.HPP.Z;*.HPP$FG$
|
||||
$FG,5$*.HH.Z;*.HH$FG$
|
||||
HolyC src header files.
|
||||
$FG,5$*.MAP.Z;*.MAP$FG$
|
||||
Compiler "map" files
|
||||
@@ -229,10 +229,10 @@ $FG,5$ALL_CAPS$FG$
|
||||
Assembly Language labels are capitalized with underscores between words. So are $FG,2$#define$FG$'s.
|
||||
|
||||
$FG,5$_ALL_CAPS$FG$
|
||||
Asm routines which are $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ callable must have a leading underscore.
|
||||
Asm routines which are $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ callable must have a leading underscore.
|
||||
|
||||
$FG,5$MixedCaps$FG$
|
||||
$LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ Functions and class names are MixedCaps.
|
||||
$LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ Functions and class names are MixedCaps.
|
||||
|
||||
$FG,5$lower_case$FG$
|
||||
Local function vars and glbl vars are lower case. Class member names are also lower_case.
|
||||
@@ -0,0 +1,2 @@
|
||||
The $LK+PU,"Holy Spirit",A="FI:::/Adam/God/HSNotes.DD"$ can puppet you.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
The $LK+PU,"Holy Spirit",A="FI:::/Adam/God/HSNotes.TXT"$ can puppet you.
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Directory Structure"$$FG$
|
||||
|
||||
$FG,2$/Home$FG$ All your user data should be placed in here to ease backing-up your data. When you install an application it will create a subdirectory of your $FG,2$/Home$FG$ directory for storage.
|
||||
|
||||
$FG,2$/Apps$FG$ Applications are placed in subdirectories of $FG,2$/Apps$FG$. Applications should have a file called $FG,2$Install.CPP.Z$FG$ which will install the app, possibly making files or directories in $FG,2$/Home$FG$. The file, $FG,2$Load.CPP.Z$FG$ will load the application into mem. The file, $FG,2$Run.CPP.Z$FG$, will usually load and execute the app. To add an app to your PersonalMenu, use $FG,2$<CTRL-l>$FG$, insert a macro with the PopUp option checked and invoke the $FG,2$Run.CPP.Z$FG$ file.
|
||||
$FG,2$/Apps$FG$ Applications are placed in subdirectories of $FG,2$/Apps$FG$. Applications should have a file called $FG,2$Install.HC.Z$FG$ which will install the app, possibly making files or directories in $FG,2$/Home$FG$. The file, $FG,2$Load.HC.Z$FG$ will load the application into mem. The file, $FG,2$Run.HC.Z$FG$, will usually load and execute the app. To add an app to your PersonalMenu, use $FG,2$<CTRL-l>$FG$, insert a macro with the PopUp option checked and invoke the $FG,2$Run.HC.Z$FG$ file.
|
||||
|
||||
$FG,2$/Demo$FG$ Here you can find lots of sample code to do various things.
|
||||
|
||||
@@ -12,7 +12,7 @@ $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$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$ is the father of all tasks, like Adam and Eve.
|
||||
$FG,2$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"Adam Task",A="FF:::/Doc/Glossary.DD,Adam Task"$ is the father of all tasks, like Adam and Eve.
|
||||
|
||||
$FG,2$/0000Boot$FG$ Boot files go here. Stage 2 of the TempleOS hard drive master boot loader, the old hard drive master boot record which is just blk#0, and the CD/DVD $FG,2$0000Kernel.BIN.C$FG$ file go here. ASCII $FG,2$0000$FG$ is near the top, alphabetically, in case you use $TX,"MagicISO",HTML="http://www.magiciso.com"$.
|
||||
|
||||
@@ -22,17 +22,17 @@ $FG,5$$TX+CX,"::/Home Files"$$FG$
|
||||
|
||||
The home dir is specified with $FG,2$'~'$FG$. The home dir is $FG,2$::/Home$FG$ unless you change it with $LK,"HomeSet",A="MN:HomeSet"$() or compile the kernel with a cfg option. An empty $FG,2$/Home$FG$ dir should be valid because it will get default files from the root dir.
|
||||
|
||||
$LK,"~/PersonalMenu.TXT"$ a menu viewed with the $FG,2$<CTRL-m>$FG$ key or by clicking "$FG,2$MENU$FG$" in the upper left border area of a window.
|
||||
$LK,"~/PersonalMenu.DD"$ a menu viewed with the $FG,2$<CTRL-m>$FG$ key or by clicking "$FG,2$MENU$FG$" in the upper left border area of a window.
|
||||
|
||||
$LK,"~/PersonalNotes.TXT"$ a personal note file viewed with the $FG,2$<CTRL-SHIFT-M>$FG$ key.
|
||||
$LK,"~/PersonalNotes.DD"$ a personal note file viewed with the $FG,2$<CTRL-SHIFT-M>$FG$ key.
|
||||
|
||||
$LK,"~/MakeHome.CPP"$ a file compiled by the $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$ during $LK,"StartOS",A="FF:::/StartOS.CPP,MakeHome"$.
|
||||
$LK,"~/MakeHome.HC"$ a file compiled by the $LK,"Adam Task",A="FF:::/Doc/Glossary.DD,Adam Task"$ during $LK,"StartOS",A="FF:::/StartOS.HC,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 adam task starts-up.
|
||||
|
||||
$LK,"~/DoOnce.CPP"$ a file invoked at the start-up of the first user. Customize this!
|
||||
$LK,"~/DoOnce.HC"$ a file invoked at the start-up of the first user. Customize this!
|
||||
|
||||
$LK,"~/Registry.CPP"$ can be edited by hand or deleted to reset to defaults. Takes affect next boot.
|
||||
$LK,"~/Registry.HC"$ can be edited by hand or deleted to reset to defaults. Takes affect next boot.
|
||||
|
||||
|
||||
|
||||
@@ -40,13 +40,13 @@ $FG,5$$TX+CX,"Application Policies"$$FG$
|
||||
|
||||
* Place applications in their own $FG,2$/Apps$FG$ subdirectory.
|
||||
|
||||
* Make a file called $FG,2$Load.CPP.Z$FG$ to load the application.
|
||||
* Make a file called $FG,2$Load.HC.Z$FG$ to load the application.
|
||||
|
||||
* Make a file called $FG,2$Run.CPP.Z$FG$ to load and run the application, preferable by $FG,2$#include$FG$ing the $FG,2$Load.CPP.Z$FG$ file.
|
||||
* Make a file called $FG,2$Run.HC.Z$FG$ to load and run the application, preferable by $FG,2$#include$FG$ing the $FG,2$Load.HC.Z$FG$ file.
|
||||
|
||||
* Place user data in a subdirectory of $FG,2$/Home$FG$, preferably naming the subdirectory the same as the $FG,2$/Apps$FG$ subdirectory. Or, place data in the $FG,2$Registry.CPP.Z$FG$ file. See $LK,"::/Demo/RegistryDemo.CPP"$.
|
||||
* Place user data in a subdirectory of $FG,2$/Home$FG$, preferably naming the subdirectory the same as the $FG,2$/Apps$FG$ subdirectory. Or, place data in the $FG,2$Registry.HC.Z$FG$ file. See $LK,"::/Demo/RegistryDemo.HC"$.
|
||||
|
||||
* If the app needs files in the $FG,2$/Home$FG$ directory, make an $FG,2$/Apps$FG$ file called $FG,2$Install.CPP.Z$FG$ or $FG,2$Install.AUT.Z$FG$ to create the $FG,2$/Home$FG$ subdirectory.
|
||||
* If the app needs files in the $FG,2$/Home$FG$ directory, make an $FG,2$/Apps$FG$ file called $FG,2$Install.HC.Z$FG$ or $FG,2$Install.AUT.Z$FG$ to create the $FG,2$/Home$FG$ subdirectory.
|
||||
|
||||
|
||||
|
||||
@@ -56,11 +56,11 @@ $FG,5$$TX+CX,"Programming Guidelines"$$FG$
|
||||
|
||||
* You can $LK,"Free",A="MN:Free"$($FG,2$NULL$FG$)$FG$.
|
||||
|
||||
* See $LK,"Naming Convention",A="FF:::/Doc/Glossary.TXT,Naming Convention"$ and $LK,"Abbreviations",A="FF:::/Doc/Glossary.TXT,Abbreviations"$.
|
||||
* See $LK,"Naming Convention",A="FF:::/Doc/Glossary.DD,Naming Convention"$ and $LK,"Abbreviations",A="FF:::/Doc/Glossary.DD,Abbreviations"$.
|
||||
|
||||
* There are two modes of compiling, $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ and $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$. Compilation is done in both -- neither is "interpreted". Use $FG,2$$LK,"JIT Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$$FG$.
|
||||
* There are two modes of compiling, $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ and $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$. Compilation is done in both -- neither is "interpreted". Use $FG,2$$LK,"JIT Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$$FG$.
|
||||
|
||||
* $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$
|
||||
* $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$
|
||||
|
||||
* Use $FG,2$I64$FG$ instead of smaller int sizes because the compiler converts everything to 64-bit. Don't use unsigned$FG$ unless it actually breaks. A policy of signed keeps it simple so you don't have to agonize over choices.
|
||||
|
||||
@@ -86,15 +86,15 @@ $ID,-5$
|
||||
|
||||
* I don't use $FG,2$U0 *$FG$ because the size is zero for ptr arithmetic.
|
||||
|
||||
* Use $FG,2$$LK,"CH_SHIFT_SPACE",A="MN:CH_SHIFT_SPACE"$$FG$ for spaces in quotes in source code because I run $LK,"Spaces-to-Tabs",A="FF:::/Adam/Opt/Utils/StrUtils.CPP,S2T"$ on source code.
|
||||
* Use $FG,2$$LK,"CH_SHIFT_SPACE",A="MN:CH_SHIFT_SPACE"$$FG$ for spaces in quotes in source code because I run $LK,"Spaces-to-Tabs",A="FF:::/Adam/Opt/Utils/StrUtils.HC,S2T"$ on source code.
|
||||
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"Hash Sym Tables"$$FG$
|
||||
|
||||
* See $LK,"::/Adam/AHash.CPP"$ 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,"::/Adam/AHash.HC"$ 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$adam_task->hash_table$FG$ holds the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ syms loaded in on start-up.
|
||||
* $FG,2$adam_task->hash_table$FG$ holds the $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ syms loaded in on start-up.
|
||||
|
||||
* $FG,2$Fs->hash_table$FG$ holds user HolyC 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.
|
||||
|
||||
@@ -104,7 +104,7 @@ $FG,5$$TX+CX,"Hash Sym Tables"$$FG$
|
||||
|
||||
$FG,5$$TX+CX,"Assembly Language"$$FG$
|
||||
|
||||
See $LK,"::/Doc/Asm.TXT"$.
|
||||
See $LK,"::/Doc/Asm.DD"$.
|
||||
|
||||
* $FG,2$FS$FG$ must always point to the cur $LK,"CTask",A="MN:CTask"$.
|
||||
|
||||
@@ -112,7 +112,7 @@ See $LK,"::/Doc/Asm.TXT"$.
|
||||
|
||||
* Don't change the segment regs unless interrupts are off. It's hard to do, anyway. $LK,"SET_FS_BASE",A="MN:SET_FS_BASE"$ and $LK,"SET_GS_BASE",A="MN:SET_GS_BASE"$.
|
||||
|
||||
* When interacting with $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiled code, preserve $FG,2$RBP, RSI, RDI, R10-R15$FG$ because the compiler uses these for reg vars. You are free to clobber $FG,2$RAX, RBX, RCX, RDX$FG$, $FG,2$R8$FG$ and $FG,2$R9$FG$. See $LK,"Compiler Reg Masks",A="MN:REGG_LOCAL_VARS"$, $LK,"PUSH_C_REGS",A="MN:PUSH_C_REGS"$ and $LK,"POP_C_REGS",A="MN:POP_C_REGS"$
|
||||
* When interacting with $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ compiled code, preserve $FG,2$RBP, RSI, RDI, R10-R15$FG$ because the compiler uses these for reg vars. You are free to clobber $FG,2$RAX, RBX, RCX, RDX$FG$, $FG,2$R8$FG$ and $FG,2$R9$FG$. See $LK,"Compiler Reg Masks",A="MN:REGG_LOCAL_VARS"$, $LK,"PUSH_C_REGS",A="MN:PUSH_C_REGS"$ and $LK,"POP_C_REGS",A="MN:POP_C_REGS"$
|
||||
|
||||
* I recommend using the standard stk frame for functions because $LK,"Caller",A="MN:Caller"$() is used to display the call stk, such as for the wallpaper.
|
||||
$FG,2$ PUSH RBP
|
||||
Binary file not shown.
File renamed without changes.
@@ -1,10 +1,10 @@
|
||||
$HL,1$//Press F5 in the editor to compile and run.
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
"Hello World\n";
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
U0 Main()
|
||||
{
|
||||
"Hello World\n";
|
||||
@@ -12,7 +12,7 @@ U0 Main()
|
||||
Main;
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
U0 MyPrint(U8 *st)
|
||||
{
|
||||
"%s",st;
|
||||
@@ -20,7 +20,7 @@ U0 MyPrint(U8 *st)
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
U0 MyPrint2(U8 *st1,U8 *st2) //Any number of args.
|
||||
{
|
||||
"%s %s\n",st1,st2; //Any number of args.
|
||||
@@ -28,7 +28,7 @@ U0 MyPrint2(U8 *st1,U8 *st2) //Any number of args.
|
||||
MyPrint2("Hello","World");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
U0 MyPrint(U8 *st)
|
||||
{
|
||||
"" st; //Empty with no comma means first is fmt str.
|
||||
@@ -36,7 +36,7 @@ U0 MyPrint(U8 *st)
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
asm {
|
||||
MSG: DU8 "Hello World\n",0;
|
||||
|
||||
@@ -53,7 +53,7 @@ _HELLO_WORLD::
|
||||
Call(_HELLO_WORLD);
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
asm {
|
||||
_HELLO_WORLD::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
@@ -66,7 +66,7 @@ _HELLO_WORLD::
|
||||
Call(_HELLO_WORLD);
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
asm {
|
||||
_MY_PRINT::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
@@ -83,7 +83,7 @@ _extern _MY_PRINT U0 MyPrint(U8 *st);
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
--------Hello.HC.Z---------
|
||||
asm {
|
||||
_MY_PRINT::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
Binary file not shown.
Binary file not shown.
@@ -3,5 +3,5 @@ The help index preprocessor compiler directive sets the topics for syms subseque
|
||||
|
||||
$FG,2$public$FG$ causes a sym to appear in help_index reports.
|
||||
|
||||
$FG,2$#help_file "filename[.TXT.Z]"$FG$
|
||||
$FG,2$#help_file "filename[.DD.Z]"$FG$
|
||||
The help file preprocessor directive makes a file into the heading of a $LK,"HI:index",A="MN:LK_HELP_INDEX"$ report for the current help index.
|
||||
@@ -1,8 +1,8 @@
|
||||
$WW,1$$FG,5$$TX+CX,"HolyC"$$FG$
|
||||
|
||||
* See $LK,"::/Doc/CompilerOverview.TXT"$.
|
||||
* See $LK,"::/Doc/CompilerOverview.DD"$.
|
||||
|
||||
* See $LK,"Scoping and Linkage",A="FI:::/Doc/ScopingLinkage.TXT"$ for details on $FG,2$extern$FG$, $FG,2$import$FG$, $FG,2$_extern$FG$, $FG,2$_import$FG$, etc.
|
||||
* See $LK,"Scoping and Linkage",A="FI:::/Doc/ScopingLinkage.DD"$ for details on $FG,2$extern$FG$, $FG,2$import$FG$, $FG,2$_extern$FG$, $FG,2$_import$FG$, etc.
|
||||
|
||||
* Built-in types include $FG,2$I0,I8,I16,I32,I64$FG$ for signed 0-8 byte ints and $FG,2$U0,U8,U16,U32,U64$FG$ for unsigned 0-8 byte ints and $FG,2$F64$FG$ for 8 byte floats.
|
||||
|
||||
@@ -112,7 +112,7 @@ $FG$$ID,-2$
|
||||
|
||||
* Allows ranges like "$FG,2$case 4...7:$FG$" in $FG,2$switch$FG$ stmts.
|
||||
|
||||
* A no case number causes next higher int case in $FG,2$switch$FG$ stmts. See $LK,"::/Demo/NullCase.CPP"$.
|
||||
* A no case number causes next higher int case in $FG,2$switch$FG$ stmts. See $LK,"::/Demo/NullCase.HC"$.
|
||||
|
||||
$ID,2$$FG,2$I64 i;
|
||||
for (i=0;i<20;i++)
|
||||
@@ -125,7 +125,7 @@ for (i=0;i<20;i++)
|
||||
case: "Eleven\n"; break; //One plus prev case.
|
||||
}$FG$$ID,-2$
|
||||
|
||||
* Switch statements can be nestled with a single switch expression! This is known as a "sub_switch" statement. $FG,2$start$FG$/$FG,2$end$FG$ are used to group cases. Don't goto out of, throw an exception out of, or return out of the $FG,2$start$FG$ front porch area. See $LK,"::/Demo/SubSwitch.CPP"$.
|
||||
* Switch statements can be nestled with a single switch expression! This is known as a "sub_switch" statement. $FG,2$start$FG$/$FG,2$end$FG$ are used to group cases. Don't goto out of, throw an exception out of, or return out of the $FG,2$start$FG$ front porch area. See $LK,"::/Demo/SubSwitch.HC"$.
|
||||
|
||||
$ID,2$$FG,2$I64 i;
|
||||
for (i=0;i<10;i++)
|
||||
@@ -168,7 +168,7 @@ $ID,2$$FG,2$U0 Main()
|
||||
}
|
||||
}
|
||||
$FG$$ID,-2$
|
||||
* $FG,2$interrupt$FG$, $FG,2$haserrcode$FG$, $FG,2$public$FG$, $FG,2$argpop$FG$ or $FG,2$noargpop$FG$ are function flags. See $LK,"::/Demo/Lectures/Mem/PageTableEntries.CPP"$.
|
||||
* $FG,2$interrupt$FG$, $FG,2$haserrcode$FG$, $FG,2$public$FG$, $FG,2$argpop$FG$ or $FG,2$noargpop$FG$ are function flags. See $LK,"::/Demo/Lectures/Mem/PageTableEntries.HC"$.
|
||||
|
||||
* A single quote can encompass multiple characters. $FG,2$'ABC'$FG$ is equ to $FG,2$0x434241$FG$. $LK,"PutChars",A="MN:PutChars"$() takes multiple characters.
|
||||
|
||||
@@ -191,7 +191,7 @@ $FG$$ID,-2$
|
||||
|
||||
* There is no question-colon operator.
|
||||
|
||||
* TempleOS $LK,"operator precedence",A="FF:::/Compiler/CInit.CPP,cmp.binary_ops"$
|
||||
* TempleOS $LK,"operator precedence",A="FF:::/Compiler/CInit.HC,cmp.binary_ops"$
|
||||
$FG,2$`$FG$,$FG,2$>>$FG$,$FG,2$<<$FG$
|
||||
$FG,2$*$FG$,$FG,2$/$FG$,$FG,2$%$FG$
|
||||
$FG,2$&$FG$
|
||||
@@ -209,7 +209,7 @@ $FG$$ID,-2$
|
||||
|
||||
* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$,ON) to find dup local var type stmts.
|
||||
|
||||
* With the $FG,2$#exe{}$FG$ feature in your src code, you can place programs that insert text into the stream of code being compiled. See $LK,"#exe {}",A="FF:::/Kernel/KEnd.CPP,#exe {"$ for an example where the date/time and compile-time prompting for cfguration data is placed into a program. $LK,"StreamPrint",A="MN:StreamPrint"$() places text into a src program stream following the conclusion of the $FG,2$#exe{}$FG$ blk.
|
||||
* With the $FG,2$#exe{}$FG$ feature in your src code, you can place programs that insert text into the stream of code being compiled. See $LK,"#exe {}",A="FF:::/Kernel/KEnd.HC,#exe {"$ for an example where the date/time and compile-time prompting for cfguration data is placed into a program. $LK,"StreamPrint",A="MN:StreamPrint"$() places text into a src program stream following the conclusion of the $FG,2$#exe{}$FG$ blk.
|
||||
|
||||
* No $FG,2$#define$FG$ functions exist (I'm not a fan)
|
||||
|
||||
@@ -219,31 +219,31 @@ $FG$$ID,-2$
|
||||
|
||||
* Can't use $FG,2$<>$FG$ with $FG,2$#include$FG$, use $FG,2$""$FG$.
|
||||
|
||||
* "$FG,2$$$$FG$" is an escape character. Two dollar signs signify an ordinary $$. See $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$. In $FG,2$asm$FG$ or $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ code, it also refers to the inst's address or the offset in a $FG,2$class$FG$ definition.
|
||||
* "$FG,2$$$$FG$" is an escape character. Two dollar signs signify an ordinary $$. See $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$. In $FG,2$asm$FG$ or $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ code, it also refers to the inst's address or the offset in a $FG,2$class$FG$ definition.
|
||||
|
||||
* $FG,2$union$FG$ is more like a class, so you don't reference it with a $FG,2$union$FG$ label after you define it. Some common unions are declared in $LK,"KernelA.HPP",A="MN:U16"$ for 1,2,4 and 8 byte objects. If you place a type in front of a union declaration, that is the type when used by itself. See $LK,"::/Demo/SubIntAccess.CPP"$.
|
||||
* $FG,2$union$FG$ is more like a class, so you don't reference it with a $FG,2$union$FG$ label after you define it. Some common unions are declared in $LK,"KernelA.HH",A="MN:U16"$ for 1,2,4 and 8 byte objects. If you place a type in front of a union declaration, that is the type when used by itself. See $LK,"::/Demo/SubIntAccess.HC"$.
|
||||
|
||||
* $FG,2$class$FG$ member vars can have meta data. $FG,2$fmtstr$FG$ and $FG,2$fmtdata$FG$ are two meta data types now used. All compiler structures are saved and you can access the compiler's info about classes and vars. See $LK,"::/Demo/ClassMeta.CPP"$ and $LK,"DocForm",A="MN:DocForm"$().
|
||||
* $FG,2$class$FG$ member vars can have meta data. $FG,2$fmtstr$FG$ and $FG,2$fmtdata$FG$ are two meta data types now used. All compiler structures are saved and you can access the compiler's info about classes and vars. See $LK,"::/Demo/ClassMeta.HC"$ and $LK,"DocForm",A="MN:DocForm"$().
|
||||
|
||||
* There is a keyword $FG,2$lastclass$FG$ you use as a dft arg. It is set to the class name of the prev arg. See $LK,"::/Demo/LastClass.CPP"$, $LK,"ClassRep",A="MN:ClassRep"$(), $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/Dsk/BlkDevRep.CPP"$.
|
||||
* There is a keyword $FG,2$lastclass$FG$ you use as a dft arg. It is set to the class name of the prev arg. See $LK,"::/Demo/LastClass.HC"$, $LK,"ClassRep",A="MN:ClassRep"$(), $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/Dsk/BlkDevRep.HC"$.
|
||||
|
||||
* See $LK,"::/Demo/Exceptions.CPP"$. $FG,2$try{} catch{}$FG$ and $FG,2$throw$FG$ are different from C++. $FG,2$throw$FG$ is a function with an 8-byte or less char arg. The char string passed in $FG,2$throw()$FG$ can be accessed from within a $FG,2$catch{}$FG$ using the $FG,2$Fs->except_ch$FG$. Within a $FG,2$catch {}$FG$ blk, set the var $FG,2$Fs->catch_except$FG$ to $FG,2$TRUE$FG$ if you want to terminate the search for a handler. Use $LK,"PutExcept",A="MN:PutExcept"$() as a handler, if you like.
|
||||
* See $LK,"::/Demo/Exceptions.HC"$. $FG,2$try{} catch{}$FG$ and $FG,2$throw$FG$ are different from C++. $FG,2$throw$FG$ is a function with an 8-byte or less char arg. The char string passed in $FG,2$throw()$FG$ can be accessed from within a $FG,2$catch{}$FG$ using the $FG,2$Fs->except_ch$FG$. Within a $FG,2$catch {}$FG$ blk, set the var $FG,2$Fs->catch_except$FG$ to $FG,2$TRUE$FG$ if you want to terminate the search for a handler. Use $LK,"PutExcept",A="MN:PutExcept"$() as a handler, if you like.
|
||||
|
||||
* A function is available similar to $FG,2$sizeof$FG$ which provides the offset of a member of a class. It's called $FG,2$offset$FG$. You place the class name and member inside as in $FG,2$offset(classname.membername)$FG$. It has nothing to do with 16-bit code. Both $FG,2$sizeof$FG$ and $FG,2$offset$FG$ only accept one level of member vars. That is, you can't do $FG,2$sizeof(classname.membername.submembername)$FG$.$FG$
|
||||
|
||||
* There is no $FG,2$continue$FG$ stmt. Use $FG,2$goto$FG$.
|
||||
|
||||
* $FG,2$lock{}$FG$ can be used to apply asm $FG,2$LOCK$FG$ prefixes to code for safe multicore read-modify-write accesses. The code bracked with have $FG,2$LOCK$FG$ asm prefix's applied to relevant insts within. It's a little shoddy. See $LK,"::/Demo/MultiCore/Lock.CPP"$.
|
||||
* $FG,2$lock{}$FG$ can be used to apply asm $FG,2$LOCK$FG$ prefixes to code for safe multicore read-modify-write accesses. The code bracked with have $FG,2$LOCK$FG$ asm prefix's applied to relevant insts within. It's a little shoddy. See $LK,"::/Demo/MultiCore/Lock.HC"$.
|
||||
|
||||
* There is a function called $LK,"MSize",A="MN:MSize"$() which gives the size of an object alloced off the heap. For larger size allocations, the system rounds-up to a power of two, so $FG,2$MSize()$FG$ lets you know the real size and you can take full advantage of it.
|
||||
|
||||
* You CAN $LK,"Free",A="MN:Free"$() a $FG,2$NULL$FG$ ptr. Useful variants of $LK,"MAlloc",A="MN:MAlloc"$() can be found $LK,"Here",A="MN:CAlloc"$. Each task has a heap and you can $FG,2$MAlloc$FG$ and $FG,2$Free$FG$ off-of other task's heaps, or make an independent heap with $LK,"HeapCtrlInit",A="MN:HeapCtrlInit"$(). See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
|
||||
|
||||
* The stk does not grow because virtual mem is not used. I recommend allocating large local vars from the heap. You can change $LK,"MEM_DFT_STK",A="MN:MEM_DFT_STK"$ and recompile $FG,2$Kernel$FG$ or request more when doing a $LK,"Spawn",A="MN:Spawn"$(). You can use $LK,"CallStkGrow",A="MN:CallStkGrow"$(), but it's odd. See $LK,"::/Demo/StkGrow.CPP"$.
|
||||
* The stk does not grow because virtual mem is not used. I recommend allocating large local vars from the heap. You can change $LK,"MEM_DFT_STK",A="MN:MEM_DFT_STK"$ and recompile $FG,2$Kernel$FG$ or request more when doing a $LK,"Spawn",A="MN:Spawn"$(). You can use $LK,"CallStkGrow",A="MN:CallStkGrow"$(), but it's odd. See $LK,"::/Demo/StkGrow.HC"$.
|
||||
|
||||
* Only one base class is allowed.
|
||||
|
||||
* $FG,2$printf()$FG$ has new codes. See $LK,"Print(\"\") Fmt Strings",A="FI:::/Doc/Print.TXT"$.
|
||||
* $FG,2$printf()$FG$ has new codes. See $LK,"Print(\"\") Fmt Strings",A="FI:::/Doc/Print.DD"$.
|
||||
|
||||
* All values are extended to 64-bit when accessed. Intermediate calculations are done with 64-bit values.
|
||||
|
||||
@@ -2,7 +2,7 @@ $WW,1$"Input Ptr" is the mouse. In the future, might be joystick or pad.
|
||||
|
||||
$LK,"ip.pos.x",A="MN:ip"$ and $LK,"ip.pos.y",A="MN:ip"$ can be used to access the x and y coordinates of the input ptr. They are relative to the screen, not window. These can be used if you don't want to use msg passing. $LK,"ip.pos.z",A="MN:ip"$ is the wheel.
|
||||
|
||||
$LK,"ip.pos_text.x",A="MN:CIPStateGlbls"$ and $LK,"ip.pos_text.y",A="MN:CIPStateGlbls"$ are the text column and row of the input ptr. See $LK,"::/Demo/Games/Maze.CPP"$.
|
||||
$LK,"ip.pos_text.x",A="MN:CIPStateGlbls"$ and $LK,"ip.pos_text.y",A="MN:CIPStateGlbls"$ are the text column and row of the input ptr. See $LK,"::/Demo/Games/Maze.HC"$.
|
||||
|
||||
See $LK,"CIPStateGlbls",A="MN:CIPStateGlbls"$ and $LK,"CMouseStateGlbls",A="MN:CMouseStateGlbls"$.
|
||||
|
||||
@@ -4,9 +4,9 @@ Burn a CD with software that supports ISO files. Then, boot it. It's a live CD
|
||||
|
||||
Dual booting with another operating system is the best way to use TempleOS. 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 TempleOS. 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 sel which drive to boot.
|
||||
|
||||
The $LK,"::/Misc/OSInstall.CPP"$ script will automate much of this. It runs if you boot the CD/DVD-ROM.
|
||||
The $LK,"::/Misc/OSInstall.HC"$ script will automate much of this. It runs if you boot the CD/DVD-ROM.
|
||||
|
||||
See $LK,"Boot.TXT",A="FI:::/Doc/Boot.TXT"$ for an overview of booting. See $LK,"Requirements",A="FI:::/Doc/Requirements.TXT"$ for supported hardware. See $LK,"Upgrading",A="FI:::/Doc/Upgrade.TXT"$ if you are upgrading.
|
||||
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. See $LK,"Upgrading",A="FI:::/Doc/Upgrade.DD"$ if you are upgrading.
|
||||
|
||||
Two TempleOS 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 TempleOS partitions.
|
||||
|
||||
@@ -24,7 +24,7 @@ $BK,1$WARNING:$BK,0$ This command erases everything on a hard drive. It repart
|
||||
$BK,1$WARNING:$BK,0$ This command doesn't play well with other operating systems. You'll need to do a $LK,"BootMHDZero",A="MN:BootMHDZero"$() to restore your drive to a state where other operating systems can partition it.
|
||||
$ID,-2$
|
||||
$ID,-2$2) $LK,"Fmt",A="MN:Fmt"$($FG,2$'D'$FG$,$FG,2$TRUE,FALSE,FSt_FAT32$FG$)
|
||||
$ID,2$This command formats a drive with $FG,2$FAT32$FG$ or the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system type. Use the drive letter of the partition in place of $FG,2$'D'$FG$.
|
||||
$ID,2$This command formats a drive with $FG,2$FAT32$FG$ or the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system type. Use the drive letter of the partition in place of $FG,2$'D'$FG$.
|
||||
|
||||
$BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$.
|
||||
|
||||
File renamed without changes.
@@ -11,4 +11,4 @@ $FG,2$0x80000000$FG$ $LK,"KDDocPutKey",A="MN:KDDocPutKey"$() standard document c
|
||||
|
||||
Since handling individual keys is slow, TempleOS 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.CPP"$. There is a var $LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_data$FG$ which gets passed to them.
|
||||
$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.HC"$. There is a var $LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_data$FG$ which gets passed to them.
|
||||
@@ -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:::/Adam/DolDoc/DocPlain.CPP,CmpCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.CPP,Opcodes.TXT"$.
|
||||
$WW,1$The compiler's lexical analyzer can be used in your programs to simplify parsing. See $LK,"Doc Parsing",A="FF:::/Adam/DolDoc/DocPlain.HC,CmpCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.HC,Opcodes.DD"$.
|
||||
|
||||
See $LK,"Tokens",A="MN:TK_IDENT"$.
|
||||
@@ -10,7 +10,7 @@ Memory alloced by a task will be freed when the task is killed.
|
||||
|
||||
Eventually, memory will become fragmented, requiring a reboot.
|
||||
|
||||
See $LK,"MemRep",A="MN:MemRep"$() and $LK,"::/Demo/MemDemo.CPP"$.
|
||||
See $LK,"MemRep",A="MN:MemRep"$() and $LK,"::/Demo/MemDemo.HC"$.
|
||||
|
||||
$FG,5$$TX+CX,"Single System-wide Mem Map"$
|
||||
|
||||
@@ -18,7 +18,7 @@ $FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"00035F3F",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:::/Adam/Opt/Boot/BootDVD.CPP"$ & $LK,"BootHD",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$.
|
||||
$ID,2$$FG$Boot block relocated here before loading the Kernel module, $LK,"BootDVD",A="FI:::/Adam/Opt/Boot/BootDVD.HC"$ & $LK,"BootHD",A="FI:::/Adam/Opt/Boot/BootHD.HC"$.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00$TX,"00097000",D="DD_MP_VECT"$- 0x00$TX,"00097030",D="DD_MP_VECT_END"$$FG$
|
||||
$ID,2$Multicore start-up vect code, $LK,"MPN_VECT",A="MN:MPN_VECT"$.
|
||||
@@ -57,4 +57,4 @@ $WW,1$* Note: There is a break in the data-heap block pool. This has no effect
|
||||
|
||||
* Note: For systems with less than 2 Gig RAM, the code and data heap block pools are the same. For systems with 2-4 Gig of RAM, the code heap is 1/4 of the total. See $LK,"BlkPoolsInit",A="MN:BlkPoolsInit"$().
|
||||
|
||||
* See $LK,"Independent HeapCtrl Example",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$.
|
||||
* See $LK,"Independent HeapCtrl Example",A="FA:::/Kernel/KEnd.HC,Independent HeapCtrl Example"$.
|
||||
@@ -21,8 +21,8 @@ Help
|
||||
About(,'/');
|
||||
}
|
||||
$FG$
|
||||
The first arg is the msg code and it is optional with the default being $LK,"MSG_KEY_DOWN_UP",A="MN:MSG_KEY_DOWN_UP"$. The second arg is the msg $FG,2$a1$FG$ value which is $LK,"ASCII",A="MN:CH_CTRLA"$ of the key in the case of $LK,"MSG_KEY_DOWN",A="MN:MSG_KEY_DOWN"$. The third arg is the msg $FG,2$a2$FG$ value which is the $LK,"scan_code",A="FI:::/Doc/CharOverview.TXT"$$FG$ of the key in the case of $LK,"MSG_KEY_DOWN",A="MN:MSG_KEY_DOWN"$.
|
||||
The first arg is the msg code and it is optional with the default being $LK,"MSG_KEY_DOWN_UP",A="MN:MSG_KEY_DOWN_UP"$. The second arg is the msg $FG,2$a1$FG$ value which is $LK,"ASCII",A="MN:CH_CTRLA"$ of the key in the case of $LK,"MSG_KEY_DOWN",A="MN:MSG_KEY_DOWN"$. The third arg is the msg $FG,2$a2$FG$ value which is the $LK,"scan_code",A="FI:::/Doc/CharOverview.DD"$$FG$ of the key in the case of $LK,"MSG_KEY_DOWN",A="MN:MSG_KEY_DOWN"$.
|
||||
|
||||
Press $FG,2$<CTRL-SHIFT-l>$FG$ and "Insert ASCII/ScanCode".
|
||||
|
||||
See $LK,"::/Demo/PullDownMenu.CPP"$.
|
||||
See $LK,"::/Demo/PullDownMenu.HC"$.
|
||||
File renamed without changes.
@@ -1,6 +1,6 @@
|
||||
$WW,1$TempleOS 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 TempleOS scheduler does not move tasks between cores.
|
||||
|
||||
There are multicore safe locks for file access and heap allocations, however, so TempleOS is symmetrical in some sense. See $LK,"::/Demo/MultiCore/LoadTest.CPP"$.
|
||||
There are multicore safe locks for file access and heap allocations, however, so TempleOS is symmetrical in some sense. See $LK,"::/Demo/MultiCore/LoadTest.HC"$.
|
||||
|
||||
Only tasks on $FG,2$core0$FG$ can have windows, but other cores can help render them.
|
||||
|
||||
@@ -8,7 +8,7 @@ Each core has an executive $FG,2$seth task$FG$ which is the father of all tasks
|
||||
|
||||
You give a job to a seth task with $LK,"JobQue",A="MN:JobQue"$() and get the res with $LK,"JobResGet",A="MN:JobResGet"$(). You spawn a task on another 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.CPP"$.
|
||||
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.HC"$.
|
||||
|
||||
See $LK,"::/Demo/Graphics/Transform.CPP"$.
|
||||
See $LK,"::/Kernel/MultiProc.CPP"$.
|
||||
See $LK,"::/Demo/Graphics/Transform.HC"$.
|
||||
See $LK,"::/Kernel/MultiProc.HC"$.
|
||||
@@ -3,4 +3,4 @@ $WW,1$TempleOS has an advanced algorithm for integrating ordinary differential e
|
||||
See $LK,"CMathODE",A="MN:CMathODE"$ and $LK,"ODEsUpdate",A="MN:ODEsUpdate"$ for an overview.
|
||||
See $LK,"ODECallDerivative",A="MN:ODECallDerivative"$ to see what support there is for masses and springs.
|
||||
|
||||
See $LK,"::/Demo/Games/Whap.CPP"$, $LK,"::/Demo/Games/Rocket.CPP"$, $LK,"::/Demo/Games/MassSpring.CPP"$, $LK,"::/Apps/Span/SpanMain.CPP"$ or $LK,"::/Apps/X-Caliber/X-Caliber.CPP"$.
|
||||
See $LK,"::/Demo/Games/Whap.HC"$, $LK,"::/Demo/Games/Rocket.HC"$, $LK,"::/Demo/Games/MassSpring.HC"$, $LK,"::/Apps/Span/SpanMain.HC"$ or $LK,"::/Apps/X-Caliber/X-Caliber.HC"$.
|
||||
@@ -12,6 +12,8 @@ $LK,"OPTf_WARN_PAREN",A="MN:OPTf_WARN_PAREN"$ warning if parenthesis are not ne
|
||||
|
||||
$LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$ warning if dup local var type stmts.
|
||||
|
||||
$LK,"OPTf_WARN_HEADER_MISMATCH",A="MN:OPTf_WARN_HEADER_MISMATCH"$ warning if fun header does not match.
|
||||
|
||||
$LK,"OPTf_NO_REG_VAR",A="MN:OPTf_NO_REG_VAR"$ forces all function local vars to the stk not regs. Applied to functions.
|
||||
|
||||
$LK,"OPTf_NO_BUILTIN_CONST",A="MN:OPTf_NO_BUILTIN_CONST"$ Disable 10-byte float consts for ã, log2_10, log10_2, loge_2. Applied to functions.
|
||||
@@ -14,6 +14,6 @@ $FG,2$#else
|
||||
#ifdef,#ifndef $FG$Include code if a sym is defined.
|
||||
$FG,2$#ifaot,#ifjit $FG$Include code if in $FG,2$AOT$FG$ compiler mode.
|
||||
$FG,2$defined()$FG$ Is a function that can be used in expressions.
|
||||
$FG,2$#help_index$FG$, $FG,2$#help_file$FG$ See $LK,"Help System",A="FI:::/Doc/HelpSystem.TXT"$.
|
||||
$FG,2$#help_index$FG$, $FG,2$#help_file$FG$ See $LK,"Help System",A="FI:::/Doc/HelpSystem.DD"$.
|
||||
|
||||
See $LK,"PreProcessor",A="FF:::/Compiler/Lex.CPP,KW_DEFINE"$.
|
||||
See $LK,"PreProcessor",A="FF:::/Compiler/Lex.HC,KW_DEFINE"$.
|
||||
@@ -13,7 +13,7 @@ $FG,2$'/'$FG$ makes $FG,2$%Q$FG$ and $FG,2$%q$FG$ convert $FG,2$'%'$FG$ to $FG,2
|
||||
$ID,-2$
|
||||
<aux_fmt_num>:
|
||||
|
||||
$ID,2$For $FG,2$"%n"$FG$, $FG,2$"%d"$FG$ or $FG,2$"%u"$FG$, the <aux_fmt_num> causes thousands mode. $FG,2$"%h?n"$FG$ will pick a var exponent multiples of three unit, while $FG,2$"%h-3n"$FG$ will display milli units or $FG,2$"%h6n"$FG$ will display mega units. The $FG,2$'k'$FG$ flag is always on for $FG,2$"%n"$FG$. See $LK,"::/Demo/Print.CPP"$.
|
||||
$ID,2$For $FG,2$"%n"$FG$, $FG,2$"%d"$FG$ or $FG,2$"%u"$FG$, the <aux_fmt_num> causes thousands mode. $FG,2$"%h?n"$FG$ will pick a var exponent multiples of three unit, while $FG,2$"%h-3n"$FG$ will display milli units or $FG,2$"%h6n"$FG$ will display mega units. The $FG,2$'k'$FG$ flag is always on for $FG,2$"%n"$FG$. See $LK,"::/Demo/Print.HC"$.
|
||||
|
||||
For $FG,2$"%c"$FG$ or $FG,2$"%C"$FG$, the <aux_fmt_num> repeats the char that many times.$ID,-2$
|
||||
|
||||
@@ -31,7 +31,7 @@ $FG,2$"%h*c",25,'\n';$FG$ 25 new-lines.
|
||||
|
||||
$FG,2$"%F"$FG$ text file by filename.
|
||||
|
||||
$FG,2$"%$$F"$FG$ $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$ file in memory.
|
||||
$FG,2$"%$$F"$FG$ $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ file in memory.
|
||||
|
||||
$FG,2$"%p"$FG$ ptr.
|
||||
|
||||
@@ -57,12 +57,12 @@ $LK,"MStrPrint",A="MN:MStrPrint"$(U8 *fmt,...) is like $LK,"StrPrint",A="MN:StrP
|
||||
$LK,"CatPrint",A="MN:CatPrint"$(U8 *_dst,U8 *fmt,...) concatenates a formated string.
|
||||
|
||||
$LK,"Auto",A="MN:Auto"$(U8 *fmt,...) sends text to the current task's input buffer.
|
||||
$LK,"AutoStr",A="MN:AutoStr"$(U8 *fmt,...) sends text of an $LK,"AutoFile",A="FF:::/Doc/Glossary.TXT,AutoFile"$ to the keyboard stream of the current TASK but can also do mouse cmds.
|
||||
$LK,"AutoStr",A="MN:AutoStr"$(U8 *fmt,...) sends text of an $LK,"AutoFile",A="FF:::/Doc/Glossary.DD,AutoFile"$ to the keyboard stream of the current TASK but can also do mouse cmds.
|
||||
|
||||
$LK,"XTalk",A="MN:XTalk"$(CTask *task,U8 *fmt,...) and text to another task's input buffer.
|
||||
$LK,"XTalkStr",A="MN:XTalkStr"$(CTask *task,U8 *fmt,...) sends text of an $LK,"AutoFile",A="FF:::/Doc/Glossary.TXT,AutoFile"$ to the keyboard stream of another TASK but can also do mouse cmds.
|
||||
$LK,"XTalkStr",A="MN:XTalkStr"$(CTask *task,U8 *fmt,...) sends text of an $LK,"AutoFile",A="FF:::/Doc/Glossary.DD,AutoFile"$ to the keyboard stream of another TASK but can also do mouse cmds.
|
||||
|
||||
$LK,"DocPrint",A="MN:DocPrint"$(CDoc *doc,U8 *fmt,...) sends text to a document. You can buffer to a Doc and save it, providing the functionality of $FG,2$fprintf$FG$. See $LK,"::/Demo/Dsk/FPrintF.CPP"$.
|
||||
$LK,"DocPrint",A="MN:DocPrint"$(CDoc *doc,U8 *fmt,...) sends text to a document. You can buffer to a Doc and save it, providing the functionality of $FG,2$fprintf$FG$. See $LK,"::/Demo/Dsk/FPrintF.HC"$.
|
||||
|
||||
$LK,"Adam",A="MN:Adam"$(U8 *fmt,...) sends text to the adam task to be compiled and run.
|
||||
$LK,"AdamLog",A="MN:AdamLog"$(U8 *fmt,...) and $LK,"AdamErr",A="MN:AdamErr"$(U8 *fmt,...) send text to the adam task to be displayed.
|
||||
@@ -75,9 +75,9 @@ $LK,"TextPrint",A="MN:TextPrint"$(CTask *task,I64 x,I64 y,I64 attr,U8 *fmt,...)
|
||||
|
||||
$LK,"ExePrint",A="MN:ExePrint"$(U8 *fmt,...) compiles and execute a string. Note: It returns the res of the last executed expression.
|
||||
|
||||
$LK,"AFPrint",A="MN:AFPrint"$(I64 mS,U8 *fmt,...) $LK,"PutChars",A="MN:PutChars"$()s one at a time with a delay.
|
||||
$LK,"AFPrint",A="MN:AFPrint"$(I64 ms,U8 *fmt,...) $LK,"PutChars",A="MN:PutChars"$()s one at a time with a delay.
|
||||
|
||||
$LK,"RawPrint",A="MN:RawPrint"$(I64 mS,U8 *fmt,...) sends direct to screen memory, bypassing window manager.
|
||||
$LK,"RawPrint",A="MN:RawPrint"$(I64 ms,U8 *fmt,...) sends direct to screen memory, bypassing window manager.
|
||||
|
||||
$LK,"User",A="MN:User"$(U8 *fmt,...) Spawns a user and execute a string on start-up.
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -15,7 +15,7 @@ public class CDirEntry //64-byte fixed-size
|
||||
U8 name[CDIR_FILENAME_LEN]; //See $LK,"chars_bmp_filename",A="MN:chars_bmp_filename"$, $LK,"FileNameChk",A="MN:FileNameChk"$
|
||||
I64 cluster; (blk) //One sector per cluster.
|
||||
I64 size; //In bytes
|
||||
CDate datetime; //See $LK,"DateTime",A="::/Doc/TimeDate.TXT"$, $LK,"Implementation of DateTime",A="FI:::/Kernel/KDate.CPP"$
|
||||
CDate datetime; //See $LK,"DateTime",A="::/Doc/TimeDate.DD"$, $LK,"Implementation of DateTime",A="FI:::/Kernel/KDate.HC"$
|
||||
};
|
||||
|
||||
public class CRedSeaBoot //RedSea is type FAT32 in partition table to fool BIOS.
|
||||
@@ -31,9 +31,9 @@ public class CRedSeaBoot //RedSea is type FAT32 in partition table to fool BIOS.
|
||||
U16 signature2; //0xAA55
|
||||
};
|
||||
$HL,0$
|
||||
See $LK,"::/Kernel/BlkDev/FileSysRedSea.CPP"$ and $LK,"::/Adam/Opt/Boot/DskISORedSea.CPP"$.
|
||||
See $LK,"::/Kernel/BlkDev/FileSysRedSea.HC"$ and $LK,"::/Adam/Opt/Boot/DskISORedSea.HC"$.
|
||||
|
||||
Files with names ending in .Z are compressed. See $LK,"::/Kernel/Compress.CPP"$.
|
||||
Files with names ending in .Z are compressed. See $LK,"::/Kernel/Compress.HC"$.
|
||||
|
||||
To replace ISO9660, make hard-drive partition image of a measured size and copy onto a CD/DVD starting at about sector 20, with EL TORITO booting. 512-byte sectors will be placed on top of 2048-byte CD/DCD sectors, so there will be four blocks per CD/DVD sector.
|
||||
|
||||
File renamed without changes.
@@ -2,4 +2,4 @@ $WW,1$$FG,5$$TX+CX,"Graphic Sprite Resource Help"$$FG$
|
||||
|
||||
A sprite is an ordered list of elements such as lines, rectangles, bitmaps and color changes. In a program's source code, you first $FG,2$make a sprite$FG$ somewhere outside a function. Then, you $FG,2$insert a pointer$FG$ to the sprite as an "*elems" arg when calling $LK,"Sprite",A="MN:Sprite"$() or $LK,"Sprite3",A="MN:Sprite3"$(). See $LK,"Sprites",A="HI:Sprites"$.
|
||||
|
||||
You can create a $FG,2$sprite macro$FG$ on your $LK,"PersonalMenu",A="FI:~/PersonalMenu.TXT"$ with a payload of $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ source code to execute when it ESC's back to the cmd line. If you check "Pop-Up", it will spawn a new task and run the payload. A pop-up macro can be placed in any document.
|
||||
You can create a $FG,2$sprite macro$FG$ on your $LK,"PersonalMenu",A="FI:~/PersonalMenu.DD"$ with a payload of $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ source code to execute when it ESC's back to the cmd line. If you check "Pop-Up", it will spawn a new task and run the payload. A pop-up macro can be placed in any document.
|
||||
@@ -1,6 +1,6 @@
|
||||
$PURPLE$$TX+CX,"Scoping and Linkage"$$FG$
|
||||
$WW,1$
|
||||
$LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ makes use of the current task's hash sym table and its parent tasks' tables. It fetches syms from parent tasks' tables if not found locally in the current task's table and it places new syms in the current task's table. Conceptually, syms are at the scope of environment vars in other operating systems.
|
||||
$LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ makes use of the current task's hash sym table and its parent tasks' tables. It fetches syms from parent tasks' tables if not found locally in the current task's table and it places new syms in the current task's table. Conceptually, syms are at the scope of environment vars in other operating systems.
|
||||
|
||||
When a sym is placed into a table, older syms with ident names will be overshadowed if they exist. Duplicates are not allowed in many cases, especially in asm blks. Dupicates are allowed, by design in other cases, so that you can repeatedly $GREEN$#include$FG$ the same file from the cmd line while developing it. Or, so you can repeatedly declare a function with a standard name, like $GREEN$DrawIt()$FG$. This case might occur when the $GREEN$adam task$FG$ is starting-up loading-in many little utilities.
|
||||
|
||||
@@ -109,7 +109,7 @@ $WW,1$
|
||||
|
||||
* The $GREEN$sizeof()$FG$ and HolyC structure members can be used in asm blks.
|
||||
|
||||
* Using $GREEN$&i$FG$ in $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ or $GREEN$i.u8[2]$FG$ on a local var, $GREEN$i$FG$, will force it to $GREEN$noreg$FG$.
|
||||
* Using $GREEN$&i$FG$ in $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ or $GREEN$i.u8[2]$FG$ on a local var, $GREEN$i$FG$, will force it to $GREEN$noreg$FG$.
|
||||
|
||||
* Using $GREEN$try$FG$/$GREEN$catch$FG$ in a function will force all local vars to $GREEN$noreg$FG$.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
$WW,1$A $LK,"CSprite",A="MN:CSprite"$ is an ordered list of $LK,"these",A="MN:SPT_END"$ elements, created with $FG,2$<CTRL-r>$FG$. Normally, they are packed together in a list and the address of the first is passed to routines.
|
||||
|
||||
See $LK,"::/Demo/Graphics/SpritePlot.CPP"$, $LK,"::/Demo/Graphics/SpritePlot3D.CPP"$, $LK,"::/Demo/Graphics/SpritePut.CPP"$, $LK,"::/Demo/Graphics/SpriteRaw.CPP"$ and $LK,"SpriteMeshEd",A="MN:SpriteMeshEd"$().
|
||||
See $LK,"::/Demo/Graphics/SpritePlot.HC"$, $LK,"::/Demo/Graphics/SpritePlot3D.HC"$, $LK,"::/Demo/Graphics/SpritePut.HC"$, $LK,"::/Demo/Graphics/SpriteRaw.HC"$ and $LK,"SpriteMeshEd",A="MN:SpriteMeshEd"$().
|
||||
|
||||
Be aware that copying $FG,2$SP$FG$, $FG,2$IB$FG$, or $FG,2$IS$FG$ entries with the clipboard ress in duplicate entries with different nums. You can manually remove dups by editing with $FG,2$<CTRL-t>$FG$ and setting to the original num.
|
||||
|
||||
See $LK,"::/Adam/Gr/GrSpritePlot.CPP",A="FL:::/Adam/Gr/GrSpritePlot.CPP,1"$ for how CSprite are stored.$FG$
|
||||
See $LK,"::/Adam/Gr/GrSpritePlot.HC",A="FL:::/Adam/Gr/GrSpritePlot.HC,1"$ for how CSprite are stored.$FG$
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,6 @@
|
||||
$FG,5$$TX+CX,"AutoComplete is in StandBy"$$FG$
|
||||
|
||||
$FG,4$$TX+CX+L+PU+UL,"System Keys Quick Guide",A="::/Doc/HelpIndex.TXT"$$FG$
|
||||
$FG,4$$TX+CX+L+PU+UL,"System Keys Quick Guide",A="::/Doc/HelpIndex.DD"$$FG$
|
||||
$FG,4$$TX+CX,"(Works Everywhere)"$$FG$
|
||||
$FG,2$ <SPACE> $FG$Left-Click
|
||||
$FG,2$ <ENTER> $FG$Right-Click
|
||||
@@ -10,7 +10,7 @@ $FG,2$ <ESC> $FG$Save & Exit
|
||||
$FG,2$<SHIFT-ESC> $FG$Abort & Exit
|
||||
$FG,2$ <WINDOWS> $FG$Pull-Down Menu
|
||||
|
||||
$FG,4$$TX+CX+L+PU+UL,"Tongues",A="::/Adam/God/HSNotes.TXT"$$FG$
|
||||
$FG,4$$TX+CX+L+PU+UL,"Tongues",A="::/Adam/God/HSNotes.DD"$$FG$
|
||||
$FG,4$$TX+CX,"(Works Everywhere)"$$FG$
|
||||
$FG,2$ <F7> $FG$God Word
|
||||
$FG,2$<SHIFT-F7> $FG$God Passage
|
||||
@@ -0,0 +1,5 @@
|
||||
$WW+H,1$$PURPLE$$TX+CX,"TempleOS V2.18",D="DD_OS_NAME_VERSION"$$FG$
|
||||
|
||||
$TX+CX,"Public Domain Operating System"$
|
||||
|
||||
$LK,"Help & Index",A="FI:::/Doc/HelpIndex.DD"$, $LK,"Quick Start: Cmd line",A="FI:::/Doc/CmdLineOverview.DD"$
|
||||
@@ -1,5 +0,0 @@
|
||||
$WW+H,1$$PURPLE$$TX+CX,"TempleOS V2.18",D="DD_OS_NAME_VERSION"$$FG$
|
||||
|
||||
$TX+CX,"Public Domain Operating System"$
|
||||
|
||||
$LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$, $LK,"Quick Start: Cmd line",A="FI:::/Doc/CmdLineOverview.TXT"$
|
||||
@@ -1 +1 @@
|
||||
$WW,1$There is one $LK,"CDoc",A="MN:CDoc"$ for the task's border: $GREEN$Fs->border_doc$FG$. There is a pair for the task's client area: $GREEN$Fs->put_doc$FG$ and $GREEN$Fs->display_doc$FG$. You can, optionally, do double buffering, otherwise $GREEN$Fs->put_doc$FG$ is the same as $GREEN$Fs->display_doc$FG$. See $LK,"::/Demo/Spy.CPP"$.
|
||||
$WW,1$There is one $LK,"CDoc",A="MN:CDoc"$ for the task's border: $GREEN$Fs->border_doc$FG$. There is a pair for the task's client area: $GREEN$Fs->put_doc$FG$ and $GREEN$Fs->display_doc$FG$. You can, optionally, do double buffering, otherwise $GREEN$Fs->put_doc$FG$ is the same as $GREEN$Fs->display_doc$FG$. See $LK,"::/Demo/Spy.HC"$.
|
||||
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"The Standard TempleOS PC",HTML="http://www.templeos.org/Wb/Home/Web/TAD/TAD.html"$$FG$
|
||||
|
||||
All desktop PCs will have 8-channel OCTART super-simple high speed serial ports to replace USB. They are simpler because the driver is as simple as old school $LK,"RS232 Serial",A="FI:::/Doc/Comm.CPP"$, they have no USB end-points and they have no USB human interface device reports. Computer mice will all have exactly two buttons and one wheel. Game controllers will all be the standard deluxe $TX,"game console controllers",HTML="http://www.gamestop.com/pc/accessories/steam-controller/121865"$ that are popular today. It will have 8 big TX and 8 big RX fifos that allow flow control characters to jump the queue. It should be locked-down to as few options as possible, like 8-1-N only, although hardware may use a USB frame, not an RS232, so stop bits might not be relevant. Perhaps, just two baud rates -- high and low speed are needed. Low speed is good for slow microcontrollers and allows longer cable length. Keyboard, mouse and game controller can be low speed.
|
||||
All desktop PCs will have 8-channel OCTART super-simple high speed serial ports to replace USB. They are simpler because the driver is as simple as old school $LK,"RS232 Serial",A="FI:::/Doc/Comm.HC"$, they have no USB end-points and they have no USB human interface device reports. Computer mice will all have exactly two buttons and one wheel. Game controllers will all be the standard deluxe $TX,"game console controllers",HTML="http://www.gamestop.com/pc/accessories/steam-controller/121865"$ that are popular today. It will have 8 big TX and 8 big RX fifos that allow flow control characters to jump the queue. It should be locked-down to as few options as possible, like 8-1-N only, although hardware may use a USB frame, not an RS232, so stop bits might not be relevant. Perhaps, just two baud rates -- high and low speed are needed. Low speed is good for slow microcontrollers and allows longer cable length. Keyboard, mouse and game controller can be low speed.
|
||||
|
||||
The USB creators banned generic devices, requiring a signed, certified driver for everything! That's no good. We allow any device and will communicate, generically, using a serial terminal program like the old school HyperTerminal, XTalk or Telnet.
|
||||
|
||||
@@ -54,11 +54,11 @@ Digital cameras will be super-simple high speed serial, but TempleOS is forever
|
||||
|
||||
$FG,5$$TX+CX,"Version One"$$FG$
|
||||
|
||||
We will make a spec for a $$4,000, perfectly standardized, cryogenically-cooled, monster desktop PC. It will have 16 cores, integrated 4K graphics, and, hopefully, 6 Ghz continuous operation. Perhaps, 64 Gig of RAM will be standard? God said to help to poor buy them. It is pointless to have a high powered machine if other people have wimpy machines and cannot run programs you write. Therefore, everybody in the developed world will buy a Standard TempleOS IBM PC over the next ten years, so that will be a quantity of 400 million, perhaps. God said to pay the US national debt with the revenue. We will standardize everything, not just the TempleOS related items. The display will be 4K (and of course 640x480 16 color) and no others. Everybody gets just one monitor, unless you buy special PCI cards. Everybody gets two speakers, a headphone, a mic and a webcam. We make the audio one sample rate and one sample size, but TempleOS still gets just a square wave. (HD Audio is really screwed-up and requires complicated artificial intelligence, just to route output to speakers.)
|
||||
We will make a spec for a $$4,000, perfectly standardized, cryogenically-cooled, monster desktop PC. It will have 16 cores, integrated 4K graphics, and, hopefully, 6 Ghz continuous operation. Perhaps, 64 Gig of RAM will be standard? God said to help to poor buy them. It is pointless to have a high powered machine if other people have wimpy machines and cannot run programs you write. Therefore, everybody in the developed world will buy a Standard TempleOS IBM PC over the next ten years, so that will be a quantity of 400 million, perhaps. God said to pay the US national debt with the revenue. We will standardize everything, not just the TempleOS related items. The display will be 4K (and of course 640x480 16 color) and no others. Everybody gets just one monitor, unless you buy special PCI cards. Everybody gets two speakers, a headphone, a mic, a webcam and touch screen. We make the audio one sample rate and one sample size, but TempleOS still gets just a square wave. (HD Audio is really screwed-up and requires complicated artificial intelligence, just to route output to speakers.)
|
||||
|
||||
The Standard Temple IBM PC will be a full-sized tower. Perhaps, stain-glass will decorate the case because God is sentimentally attached to stained-glass. We should set the size at exactly 2.5 feet by 1.5 feet by 1.5 feet as in the $LK,"Exodus,25:10-10",A="BF:Exodus,25:10-10"$ for all time. If there is extra room, make a storage shelf for DVDs. We do not want a race-to-the-bottom, shrinking the size. Instead of making it smaller, make it more powerful. We want to remove all cost pressure from making things small. It must have a CD/DVD/Blu-ray drive. The vision is CD/DVDs used for a library of games, not installed on the hard-drive. We need a network connection, possibly implemented as a super-simple high speed serial device. What about standard monitor and speakers? The C64's success was partially due to wide spread, completely standard, hardware. I think TempleOS will not do bad block devices, so we need a hard drive, not just NV-memory or SSD.
|
||||
|
||||
TempleOS will have the priority over Windows or Linux on hardware decisions. We could make it heterogenious multicore. I think we want 16 non-hyperthreaded cores. Core#0 is the only full-featured core needed. The other cores will have long mode, but not some of these: real mode, protected mode, ring-3, paging, interrupts, in/out port instructions, SSE instructions, MMX instructions. This $LK,"Graphics Job",A="FI:~/Web/TAD/GraphicsPerformance.TXT"$ is what to optimize for.
|
||||
TempleOS will have the priority over Windows or Linux on hardware decisions. We could make it heterogenious multicore. I think we want 16 non-hyperthreaded cores. Core#0 is the only full-featured core needed. The other cores will have long mode, but not some of these: real mode, protected mode, ring-3, paging, interrupts, in/out port instructions, SSE instructions, MMX instructions. This $LK,"Graphics Job",A="FI:~/Web/TAD/GraphicsPerformance.DD"$ is what to optimize for.
|
||||
|
||||
God said Intel should do a simulation of heat produced by gates and try spreading-out the heat producing gate circuits on the chip.
|
||||
|
||||
@@ -73,10 +73,10 @@ The ROM will have a command that copies the ROM onto the hard drive, creating id
|
||||
|
||||
The standard set-up will be a C primary drive and a D back-up drive. Keep the size on each hard drive under 512 Meg and periodically copy all of C to D, so they stay mirrored. The file manager and other programs read the entire directory structures, so too many files causes problems (unbearably slow). Third party software should be distributed as ISO files or DVDs, like $FG,4$$TX,"TextAdventure.ISO",HTML="https://github.com/jwhitham/frotz"$$FG$. No 3rd party libraries are permitted because they circumvent the intent of the 100,000 line of code limit which is keeping it cognatively small enough to see the light at the end of the tunnel and easily master everything. Therefore, 3rd party ISO files must bring all required software components with them, except what is found in the TempleOS ROM.
|
||||
|
||||
The Temple PC will stay unchanged for seven years at a time. The Bible speaks of a seven year release in $LK,"Deuteronomy,15:1",A="BF:Deuteronomy,15:1",HTML="http://www.biblegateway.com/verse/en/Deutoronomy%2015:1"$. The Commodore stayed unchanged for many years and people became intimately familiar with every aspect.
|
||||
|
||||
Having all your 3rd party software on separate DVDs or ISO files and TempleOS running from a ROM, keeps it delightfully simple so you have complete understanding of what is going on. You will have complete confidence and it will be a joy to use. 3rd party applications can store saved data files into your /Home hard drive directory.
|
||||
|
||||
The Temple PC will stay unchanged for seven years at a time. The Bible speaks of a seven year release in $LK,"Deuteronomy,15:1",A="BF:Deuteronomy,15:1",HTML="http://www.biblegateway.com/verse/en/Deutoronomy%2015:1"$. The Commodore stayed unchanged for many years and people became intimately familiar with every aspect.
|
||||
|
||||
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/bs_jcTuwPKo\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/bs_jcTuwPKo\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
|
||||
|
||||
I thought 2.5' x 1.5' x 1.5' was ridiculously big, but it looks like it is reasonable for super-cooled refrigeration systems!
|
||||
@@ -14,7 +14,7 @@ Windows is a car.
|
||||
|
||||
TempleOS is a motorcycle -- if you lean-over too far, a motorcycle will crash. Don't do that! There are no side air bags on a motorcycle. DOS and C64 had no memory protections and ran in ring-0, with no security. This saves an order of magnitude complexity.
|
||||
|
||||
Linux and Windows are general purpose operating systems. They attempt to do any task you want. TempleOS cherry-picks tasks and is designed to do the same things a C64 did. This saves and order of magnitude complexity. For example, the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system allocates just contiguous files -- you load and save whole files at once. A benefit is this allows compression. Also, TempleOS does not do networking or multimedia. In theory, memory will fragment with lots of big files. The system would fall to pieces with multimedia, but God said 640x480 16 color is a permanent covenant like circumcision.
|
||||
Linux and Windows are general purpose operating systems. They attempt to do any task you want. TempleOS cherry-picks tasks and is designed to do the same things a C64 did. This saves and order of magnitude complexity. For example, the $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ file system allocates just contiguous files -- you load and save whole files at once. A benefit is this allows compression. Also, TempleOS does not do networking or multimedia. In theory, memory will fragment with lots of big files. The system would fall to pieces with multimedia, but God said 640x480 16 color is a permanent covenant like circumcision.
|
||||
|
||||
A three button mouse is like a leg you cannot put weight on. TempleOS just does hardware everybody has, with no divergent code bases for each machine's custom hardware. There is one graphics driver instead of 50 for different GPUs. This saves an order of magnitude complexity and makes for a delightful API, so developer's code is not like a frayed rope end.
|
||||
|
||||
@@ -42,7 +42,7 @@ A three button mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
|
||||
* Whole files are processed almost exclusively, allowing compression.
|
||||
|
||||
* $LK,"One language",A="FI:::/Doc/HolyC.TXT"$ and compiler for command-line, scripts, songs, automations and code.
|
||||
* $LK,"One language",A="FI:::/Doc/HolyC.DD"$ and compiler for command-line, scripts, songs, automations and code.
|
||||
|
||||
* One editor/word processor/browser for the command-line window, source code, documentation browser, dialog forms.
|
||||
|
||||
@@ -50,9 +50,9 @@ A three button mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
|
||||
* No distinction between $FG,2$thread$FG$, $FG,2$process$FG$ or $FG,2$task$FG$.
|
||||
|
||||
* The $LK,"Scheduler",A="FI:::/Kernel/Sched.CPP"$ 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.HC"$ is for home systems. It is not preemptiove. Disk requests are not broken-up, so sharing is bad. It's wonderfully simple.
|
||||
|
||||
* $LK,"MultiCore",A="FI:::/Doc/MultiCore.TXT"$ 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.
|
||||
* $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.
|
||||
|
||||
* $LK,"Music",A="MN:Play"$ is done with an elegant one-voice notation.
|
||||
|
||||
@@ -60,4 +60,4 @@ A three button mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
|
||||
* No need for namespaces -- scoping occurs automatically based on task symbol table hierarchy with the $FG,2$Adam task$FG$'s symbol system-wide global.
|
||||
|
||||
* Sometimes, I $LK,"cut corners",A="FI:::/Doc/CutCorners.TXT"$ in the interest of keeping the code beautiful.
|
||||
* Sometimes, I $LK,"cut corners",A="FI:::/Doc/CutCorners.DD"$ in the interest of keeping the code beautiful.
|
||||
@@ -1,7 +1,7 @@
|
||||
$WW,1$There are no streams in the traditional sense. The cmd line output gets sent to the cursor location of a document being edited and by using cursor keys, text can be injected all over the document. $LK,"Sprites",A="HI:Sprites"$ can be injected and are not serialized! Furthermore, the input can come from triggering macro widgets. See $LK,"Doc Overview",A="FI:::/Doc/DolDocOverview.TXT"$ and $LK,"Doc Routines",A="HI:DolDoc"$.
|
||||
$WW,1$There are no streams in the traditional sense. The cmd line output gets sent to the cursor location of a document being edited and by using cursor keys, text can be injected all over the document. $LK,"Sprites",A="HI:Sprites"$ can be injected and are not serialized! Furthermore, the input can come from triggering macro widgets. See $LK,"Doc Overview",A="FI:::/Doc/DolDocOverview.DD"$ and $LK,"Doc Routines",A="HI:DolDoc"$.
|
||||
|
||||
If you had a remote term and sent key $LK,"Scan Codes",A="MN:SC_INS"$, the user would press $FG,2$<CTRL-m>$FG$ to access his $FG,2$Personal Menu$FG$ to trigger his macros. However, the local $LK,"~/PersonalMenu.TXT"$ might differ from the remote, causing loss of sync between local and remote sessions. Also, the window size of local and remote might differ, so word-wrapped text would be different. Injecting output text with different windows sizes would cause remote and local documents to not be in sync.
|
||||
If you had a remote term and sent key $LK,"Scan Codes",A="MN:SC_INS"$, the user would press $FG,2$<CTRL-m>$FG$ to access his $FG,2$Personal Menu$FG$ to trigger his macros. However, the local $LK,"~/PersonalMenu.DD"$ might differ from the remote, causing loss of sync between local and remote sessions. Also, the window size of local and remote might differ, so word-wrapped text would be different. Injecting output text with different windows sizes would cause remote and local documents to not be in sync.
|
||||
|
||||
See $LK,"Char Overview",A="FI:::/Doc/CharOverview.TXT"$ and $LK,"Char Routines",A="HI:Char"$.
|
||||
See $LK,"Char Overview",A="FI:::/Doc/CharOverview.DD"$ and $LK,"Char Routines",A="HI:Char"$.
|
||||
|
||||
You can send characters into $FG,2$StdIn$FG$. See $LK,"Auto",A="MN:Auto"$(), $LK,"XTalk",A="MN:XTalk"$() and $LK,"AutoFile",A="HI:AutoFile"$.
|
||||
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,4 @@
|
||||
$WW,1$$LK,"gr.text_base",A="MN:CGrGlbls"$ must be updated 30fps in your Fs->draw_it() callback. You probably want $LK,"GrPrint",A="MN:GrPrint"$() or just $LK,"Print",A="MN:Print"$(). The $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$ code takes care of plotting text to $LK,"gr.text_base",A="MN:CGrGlbls"$.
|
||||
$WW,1$$LK,"gr.text_base",A="MN:CGrGlbls"$ must be updated 30fps in your Fs->draw_it() callback. You probably want $LK,"GrPrint",A="MN:GrPrint"$() or just $LK,"Print",A="MN:Print"$(). The $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ code takes care of plotting text to $LK,"gr.text_base",A="MN:CGrGlbls"$.
|
||||
|
||||
Bits 0-7 8-Bit ASCII Screen Code
|
||||
Bits 8-11 Foreground $LK,"color",A="MN:BLACK"$
|
||||
@@ -12,4 +12,4 @@ Bit 31 $LK,"Underline",A="MN:ATTRF_UNDERLINE"$
|
||||
|
||||
$LK,"GrUpdateTaskWin",A="MN:GrUpdateTaskWin"$() calls $LK,"DocUpdateTaskDocs",A="MN:DocUpdateTaskDocs"$() which calls $LK,"DocRecalc",A="MN:DocRecalc"$() where the document text is plotted into $LK,"gr.text_base",A="MN:CGrGlbls"$. Then, $LK,"GrUpdateTextBG",A="MN:GrUpdateTextBG"$() and $LK,"GrUpdateTextFG",A="MN:GrUpdateTextFG"$() render the $LK,"gr.text_base",A="MN:CGrGlbls"$ onto $LK,"gr.dc2",A="MN:CGrGlbls"$, a raw graphic bitmap.
|
||||
|
||||
See $LK,"::/Demo/Games/Maze.CPP"$.
|
||||
See $LK,"::/Demo/Games/Maze.HC"$.
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+17
-17
@@ -8,7 +8,7 @@ $WW,1$$FG,5$$TX+CX,"Tips"$$FG$
|
||||
|
||||
* See $MA-X+PU,"Key Map",LM="KeyMap;View;\n"$ for a list of defined keys. Define your own keys in $LK,"MyPutKey",A="MN:MyPutKey"$(). See $LK,"Keyboard Devices",A="HI:Keyboard Devices/System"$.
|
||||
|
||||
* $FG,2$<ALT-m>$FG$ maximizes a window. $FG,2$<ALT-SHIFT-w>$FG$ closes AutoComplete. $FG,2$<ALT-w>$FG$ brings back AutoComplete. $FG,2$<ALT-v>$FG$ vertically tiles windows. $FG,2$<ALT-h>$FG$ horizontally tiles windows. The $FG,2$ALT$FG$ keys are defined in $LK,"~/HomeKeyPlugIns.CPP"$. You can customize them.
|
||||
* $FG,2$<ALT-m>$FG$ maximizes a window. $FG,2$<ALT-SHIFT-w>$FG$ closes AutoComplete. $FG,2$<ALT-w>$FG$ brings back AutoComplete. $FG,2$<ALT-v>$FG$ vertically tiles windows. $FG,2$<ALT-h>$FG$ horizontally tiles windows. The $FG,2$ALT$FG$ keys are defined in $LK,"~/HomeKeyPlugIns.HC"$. You can customize them.
|
||||
|
||||
* If you make changes to TempleOS files in your $FG,2$/Home$FG$ directory, generally you reboot to make them take effect. (You don't compile anything.) You should have two TempleOS partitions on your hard drive because a syntax error in a start-up file will make the partition unbootable. Boot to the second partition or boot to a standard TempleOS CD/DVD and use $LK,"Mount",A="MN:Mount"$() to mount your hard drive.
|
||||
|
||||
@@ -21,23 +21,23 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* Use the PullDown menu at the top of the screen to learn commands, or for finding the keyboard controls to games.
|
||||
|
||||
* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:~/HomeLocalize.CPP,mouse.scale"$.
|
||||
* You can adjust the mouse movement rate by setting global vars in your start-up file. See $LK,"mouse scale",A="FF:~/HomeLocalize.HC,mouse.scale"$.
|
||||
|
||||
* You can set your local time zone by setting the $LK,"local_time_offset",A="MN:local_time_offset"$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:~/HomeLocalize.CPP,local_time"$.
|
||||
* You can set your local time zone by setting the $LK,"local_time_offset",A="MN:local_time_offset"$ global var in a start-up file. It's units are $LK,"CDATE_FREQ",A="MN:CDATE_FREQ"$. See $LK,"local time",A="FF:~/HomeLocalize.HC,local_time"$.
|
||||
|
||||
* $FG,2$<CTRL-SHIFT-L>$FG$ in the editor to reindent a $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ function or renumber an asm routine's local labels.
|
||||
* $FG,2$<CTRL-SHIFT-L>$FG$ in the editor to reindent a $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ function or renumber an asm routine's local labels.
|
||||
|
||||
* You can use $FG,2$filter_lines$FG$ in the editor text search form ($FG,2$<CTRL-f>$FG$) to temporarily display just lines near each match. A value of $FG,2$filter lines$FG$ set to $FG,2$5$FG$ will display lines within 5 lines of matches. Then, you can do another find to a different string and achieve a $FG,2$AND$FG$ search. When finished, press $FG,2$<ESC>$FG$.
|
||||
|
||||
* You can recompile and reinstall the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$(). You'll probably want to make a function for recompiling that uses the $LK,"Auto",A="MN:Auto"$() function to answer the cfg questions. See my technique $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$.
|
||||
* You can recompile and reinstall the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$(). You'll probably want to make a function for recompiling that uses the $LK,"Auto",A="MN:Auto"$() function to answer the cfg questions. See my technique $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.HC,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.HC,1"$.
|
||||
|
||||
* $LK,"Scale2Mem",A="MN:Scale2Mem"$(min,max,limit=2*1024*1024*1024) can be used for cfg questions when recompiling. The $LK,"BootHDIns",A="MN:BootHDIns"$() cfg prompts accept expressions, not just numbers. The dft disk cache is $FG,2$Scale2Mem(0x80000,0x8000000)$FG$.
|
||||
|
||||
* You can permanently disable $FG,2$AutoComplete$FG$ commenting-out $LK,"ACInit",A="FF:/Home/HomeSys.CPP,ACInit"$() in $LK,"~/HomeSys.CPP",A="FF:/Home/HomeSys.CPP,ACInit"$.
|
||||
* You can permanently disable $FG,2$AutoComplete$FG$ commenting-out $LK,"ACInit",A="FF:/Home/HomeSys.HC,ACInit"$() in $LK,"~/HomeSys.HC",A="FF:/Home/HomeSys.HC,ACInit"$.
|
||||
|
||||
* Boolean expressions $BK,1$not$BK,0$ in $FG,2$if$FG$ stmts don't have short circuit logic and are compiled inefficiently.
|
||||
|
||||
* You can use $LK,"progress1",A="MN:progress1"$-$LK,"progress4",A="MN:progress4"$ in your programs for whatever you like. They're just global vars that are shown on the wallpaper. The original intent was to indicate how far along operations were. There's no coordination, so different apps might interfere. I use them most for debugging--just values easily viewed. See $LK,"::/Demo/Progress.CPP"$.
|
||||
* You can use $LK,"progress1",A="MN:progress1"$-$LK,"progress4",A="MN:progress4"$ in your programs for whatever you like. They're just global vars that are shown on the wallpaper. The original intent was to indicate how far along operations were. There's no coordination, so different apps might interfere. I use them most for debugging--just values easily viewed. See $LK,"::/Demo/Progress.HC"$.
|
||||
|
||||
* Use $LK,"DocMax",A="MN:DocMax"$() to adjust the size of the cmd line buf. It counts $LK,"CDoc",A="MN:CDoc"$ entries, not lines.
|
||||
|
||||
@@ -45,7 +45,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* If, for some strange reason, you wanted to reduce mem usage, make a smaller disk cache when you recompile the kernel; disabling $FG,2$AutoComplete$FG$; Specify smaller stk sizes when doing $LK,"Spawn",A="MN:Spawn"$(), chang $LK,"MEM_DFT_STK",A="MN:MEM_DFT_STK"$, and using $LK,"DocMax",A="MN:DocMax"$() to reduce the cmd line buffer size.
|
||||
|
||||
* Filenames ending in "$FG,2$.Z$FG$" will be automatically compressed and uncompressed when read or written. The compression method is not supported by other operating systems. You can store files uncompressed by $LK,"Move",A="MN:Move"$()ing them to a filename not ending in "$FG,2$.Z$FG$". See $LK,"::/Doc/TOSZ.TXT"$ if you want to uncompress while in $FG,2$Linux$FG$.
|
||||
* Filenames ending in "$FG,2$.Z$FG$" will be automatically compressed and uncompressed when read or written. The compression method is not supported by other operating systems. You can store files uncompressed by $LK,"Move",A="MN:Move"$()ing them to a filename not ending in "$FG,2$.Z$FG$". See $LK,"::/Doc/TOSZ.DD"$ if you want to uncompress while in $FG,2$Linux$FG$.
|
||||
|
||||
* $LK,"Merge",A="MN:Merge"$() can be used to see what's changed. The $FG,2$+d$FG$ flag will show differences of files which have changed and allow you to merge code. (The $FG,2$+r$FG$ flag will recurse.)
|
||||
|
||||
@@ -55,7 +55,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* You can use $LK,"Option",A="MN:Option"$($LK,"OPTf_WARN_DUP_TYPES",A="MN:OPTf_WARN_DUP_TYPES"$,ON) to find unnecessary local var type stmts.
|
||||
|
||||
* $LK,"Option",A="MN:Option"$($LK,"OPTf_ECHO",A="MN:OPTf_ECHO"$,ON) can be placed in $LK,"StartOS.CPP",A="FI:::/StartOS.CPP"$ to echo start-up scripts.
|
||||
* $LK,"Option",A="MN:Option"$($LK,"OPTf_ECHO",A="MN:OPTf_ECHO"$,ON) can be placed in $LK,"StartOS.HC",A="FI:::/StartOS.HC"$ to echo start-up scripts.
|
||||
|
||||
* Use $LK,"Plain",A="MN:Plain"$() to edit a plain text file. You'll need this if your file has $FG,2$$$$FG$'s. Use the $LK,"ToDolDoc",A="MN:ToDolDoc"$() utility to convert plain text to DolDoc's by doubling $FG,2$$$$FG$'s.
|
||||
|
||||
@@ -69,7 +69,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* Use $FG,2$<CTRL-ALT-a>$FG$ to enter an extended ASCII char.
|
||||
|
||||
* Use $FG,2$<CTRL-ALT-f>$FG$ to toggle between $LK,"Std Font",A="FI:::/Kernel/FontStd.CPP"$ and $LK,"Cyrillic Font",A="FI:::/Kernel/FontCyrillic.CPP"$.
|
||||
* Use $FG,2$<CTRL-ALT-f>$FG$ to toggle between $LK,"Std Font",A="FI:::/Kernel/FontStd.HC"$ and $LK,"Cyrillic Font",A="FI:::/Kernel/FontCyrillic.HC"$.
|
||||
|
||||
* Use $FG,2$<CTRL-ALT-s>$FG$ will capture the screen as a sprite on the clipboard. You can save the cmd line doc as text with $FG,2$<CTRL-a>$FG$.
|
||||
|
||||
@@ -77,7 +77,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* You can eye-dropper colors in the $FG,2$<CTRL-r>$FG$ sprite editor by pressing $FG,2$'c'$FG$. Press $FG,2$'t'$FG$ for transparent.
|
||||
|
||||
* There are handy functions--$FG,2$F(),R(),FD()$FG$ and $FG,2$RD()$FG$ which are defined in $LK,"~/HomeWrappers.CPP"$. You are encouraged to change them and add more. They will perform find-and-replace operations accross multiple files. The $FG,2$+l$FG$ flag is particularly useful since it limits to whole labels. The $FG,2$+lb$FG$ and $FG,2$+la$FG$ flags limit to whole labels just before or after. You are encouraged to add or modify handy wrapper functions to make cmd line operations easier.
|
||||
* There are handy functions--$FG,2$F(),R(),FD()$FG$ and $FG,2$RD()$FG$ which are defined in $LK,"~/HomeWrappers.HC"$. You are encouraged to change them and add more. They will perform find-and-replace operations accross multiple files. The $FG,2$+l$FG$ flag is particularly useful since it limits to whole labels. The $FG,2$+lb$FG$ and $FG,2$+la$FG$ flags limit to whole labels just before or after. You are encouraged to add or modify handy wrapper functions to make cmd line operations easier.
|
||||
|
||||
* When using $LK,"Find",A="MN:Find"$() while modifying code, work from the bottom-up so that line numbers are correct. If you work top-down, then inserting or deleting lines causes the lower file links will be incorrect.
|
||||
|
||||
@@ -85,7 +85,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* When using $FG,2$<CTRL-l>$FG$ to insert links in documents, you can usually leave the $FG,2$Tag Text$FG$ blank and it will be filled-in automatically based on other entries.
|
||||
|
||||
* There is a feature of the precompiler that allows code to be executed in the middle of compilation and data inserted into the compilation stream. Click here for an example: $LK,"#exe {",A="FF:::/Kernel/KEnd.CPP,#exe {"$.
|
||||
* There is a feature of the precompiler that allows code to be executed in the middle of compilation and data inserted into the compilation stream. Click here for an example: $LK,"#exe {",A="FF:::/Kernel/KEnd.HC,#exe {"$.
|
||||
|
||||
* If you output to the cmd line and wish to allow users to scroll around and view data, you can use $LK,"View",A="MN:View"$().
|
||||
|
||||
@@ -95,7 +95,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* You can reactivate $FG,2$AutoComplete$FG$ after closing it by pressing $FG,2$<CTRL-Fun Key>$FG$ or $FG,2$<ALT-w>$FG$ if you have it defined.
|
||||
|
||||
* $FG,2$<CTRL-SHIFT-T>$FG$ to toggle to/from plain text just the $LK,"CDoc",A="MN:CDoc"$ cmd under the cursor. See $LK,"::/Demo/DolDoc/TextDemo.CPP"$.
|
||||
* $FG,2$<CTRL-SHIFT-T>$FG$ to toggle to/from plain text just the $LK,"CDoc",A="MN:CDoc"$ cmd under the cursor. See $LK,"::/Demo/DolDoc/TextDemo.HC"$.
|
||||
|
||||
* If you toggle to plain text when you are working with graphics in a document, you can add duplicate entries for sprites by entering a $FG,2$$$SP...$$$FG$ cmd with the same num.
|
||||
|
||||
@@ -111,7 +111,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* $LK,"GrFloodFill",A="MN:GrFloodFill"$() is slow. $LK,"GrRect",A="MN:GrRect"$() is fast.
|
||||
|
||||
* You can customize the $FG,2$wallpaper$FG$. See $LK,"::/Demo/Graphics/WallPaperFish.CPP"$.
|
||||
* You can customize the $FG,2$wallpaper$FG$. See $LK,"::/Demo/Graphics/WallPaperFish.HC"$.
|
||||
|
||||
* Your RAM disks will not be reformated when you reboot if the memory location has not changed and it finds the disk intacted.
|
||||
|
||||
@@ -119,9 +119,9 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* Using a sub-int array, $FG,2$i.u8[3]$FG$, for example, will force a local var to non-reg.
|
||||
|
||||
* You can delete the $FG,4$~/Registry.CPP.Z$FG$ file. The policy is that deleting it will restore defaults. It is a text doc, if you want to edit it. Be careful of tree indentations.
|
||||
* You can delete the $FG,4$~/Registry.HC.Z$FG$ file. The policy is that deleting it will restore defaults. It is a text doc, if you want to edit it. Be careful of tree indentations.
|
||||
|
||||
* Study $LK,"::/Adam/Opt/Utils/MemRep.CPP"$ and $LK,"WallPaper",A="MN:WallPaper"$() to learn how the system resources are put together.
|
||||
* Study $LK,"::/Adam/Opt/Utils/MemRep.HC"$ and $LK,"WallPaper",A="MN:WallPaper"$() to learn how the system resources are put together.
|
||||
|
||||
* The editor's sel-text mechanism allows for disjoint portions of sel text. This is a feature, not a bug -- you can cut-and-paste disjoint text.
|
||||
|
||||
@@ -145,7 +145,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* With $FG,2$start$FG$/$FG,2$end$FG$, common trailing code is fast. Common leading code is slow.$FG$
|
||||
|
||||
* The first line of the $MA-X+PU,"Psalmody",LM="#include \"::/Apps/Psalmody/Run\"\n"$ $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ song files is a comment with a category recognized by $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). The categories are $FG,2$"no nothing"$FG$, $FG,2$"has words"$FG$, $FG,2$"has graphics"$FG$, or $FG,2$"special"$FG$. The third character in the song comment is a digit rating number, shown in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). You can set the song rating in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$() by pressing $FG,2$0$FG$-$FG,2$9$FG$. You can press $FG,2$<DELETE>$FG$ to delete songs.
|
||||
* The first line of the $MA-X+PU,"Psalmody",LM="#include \"::/Apps/Psalmody/Run\"\n"$ $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ song files is a comment with a category recognized by $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.HC,JukeBox"$(). The categories are $FG,2$"no nothing"$FG$, $FG,2$"has words"$FG$, $FG,2$"has graphics"$FG$, or $FG,2$"special"$FG$. The third character in the song comment is a digit rating number, shown in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.HC,JukeBox"$(). You can set the song rating in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.HC,JukeBox"$() by pressing $FG,2$0$FG$-$FG,2$9$FG$. You can press $FG,2$<DELETE>$FG$ to delete songs.
|
||||
|
||||
$FG,8$
|
||||
* "Linux" is a trademark owned by Linus Torvalds.
|
||||
@@ -1,13 +1,13 @@
|
||||
$WW,1$$LK,"CDC",A="MN:CDC"$'s have a 4x4 matrix for rotating, scaling, skewing and shifting in 3 dimensions. To make the graphics routines use the transform, you must set the $LK,"DCF_TRANSFORMATION",A="MN:DCF_TRANSFORMATION"$ flag.
|
||||
|
||||
The matrix consists of ints that have been scaled 32 bits ($LK,"GR_SCALE",A="MN:GR_SCALE"$). See $LK,"::/Demo/Lectures/FixedPoint.CPP"$ to learn why.
|
||||
The matrix consists of ints that have been scaled 32 bits ($LK,"GR_SCALE",A="MN:GR_SCALE"$). See $LK,"::/Demo/Lectures/FixedPoint.HC"$ to learn why.
|
||||
|
||||
See $LK,"Mat4x4IdentEqu",A="MN:Mat4x4IdentEqu"$(), $LK,"Mat4x4IdentNew",A="MN:Mat4x4IdentNew"$(), $LK,"Mat4x4Equ",A="MN:Mat4x4Equ"$() and $LK,"Mat4x4New",A="MN:Mat4x4New"$(). See $LK,"Mat4x4RotX",A="MN:Mat4x4RotX"$(), $LK,"Mat4x4RotY",A="MN:Mat4x4RotY"$(), $LK,"Mat4x4RotZ",A="MN:Mat4x4RotZ"$() and $LK,"Mat4x4Scale",A="MN:Mat4x4Scale"$() to rotate about axes and scale. Combine them with $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$()/$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and assign them to the $LK,"CDC",A="MN:CDC"$.$FG,2$dc$FG$ with $LK,"DCMat4x4Set",A="MN:DCMat4x4Set"$(). See $LK,"::/Demo/Graphics/Box.CPP"$.
|
||||
See $LK,"Mat4x4IdentEqu",A="MN:Mat4x4IdentEqu"$(), $LK,"Mat4x4IdentNew",A="MN:Mat4x4IdentNew"$(), $LK,"Mat4x4Equ",A="MN:Mat4x4Equ"$() and $LK,"Mat4x4New",A="MN:Mat4x4New"$(). See $LK,"Mat4x4RotX",A="MN:Mat4x4RotX"$(), $LK,"Mat4x4RotY",A="MN:Mat4x4RotY"$(), $LK,"Mat4x4RotZ",A="MN:Mat4x4RotZ"$() and $LK,"Mat4x4Scale",A="MN:Mat4x4Scale"$() to rotate about axes and scale. Combine them with $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$()/$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and assign them to the $LK,"CDC",A="MN:CDC"$.$FG,2$dc$FG$ with $LK,"DCMat4x4Set",A="MN:DCMat4x4Set"$(). See $LK,"::/Demo/Graphics/Box.HC"$.
|
||||
|
||||
You can rotate single points using $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$().
|
||||
|
||||
The 4th dimension allows a neat trick where you can place pos shifts (translations), into the matrix and $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$/$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$ them to combine rotation/shift operations. Normally, you can't combine pos shift operations. See $LK,"Mat4x4TranslationEqu",A="MN:Mat4x4TranslationEqu"$() and $LK,"::/Demo/Graphics/Transform.CPP"$.
|
||||
The 4th dimension allows a neat trick where you can place pos shifts (translations), into the matrix and $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$/$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$ them to combine rotation/shift operations. Normally, you can't combine pos shift operations. See $LK,"Mat4x4TranslationEqu",A="MN:Mat4x4TranslationEqu"$() and $LK,"::/Demo/Graphics/Transform.HC"$.
|
||||
|
||||
Finally, $LK,"CDC",A="MN:CDC"$'s have an $FG,2$x$FG$, $FG,2$y$FG$ and $FG,2$z$FG$ which is an additional shift (translation).
|
||||
|
||||
The transformation is implemented as a callback on the $LK,"CDC",A="MN:CDC"$'s $FG,2$transform()$FG$ member. The default $FG,2$transform()$FG$ callback is $LK,"DCTransform",A="MN:DCTransform"$(). See $LK,"::/Demo/Games/EagleDive.CPP"$ or $LK,"::/Demo/Games/CastleFrankenstein.CPP"$ to see how to change the $FG,2$transform()$FG$ callback for foreshortening.
|
||||
The transformation is implemented as a callback on the $LK,"CDC",A="MN:CDC"$'s $FG,2$transform()$FG$ member. The default $FG,2$transform()$FG$ callback is $LK,"DCTransform",A="MN:DCTransform"$(). See $LK,"::/Demo/Games/EagleDive.HC"$ or $LK,"::/Demo/Games/CastleFrankenstein.HC"$ to see how to change the $FG,2$transform()$FG$ callback for foreshortening.
|
||||
@@ -1,5 +1,5 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Upgrading TempleOS"$$FG$
|
||||
|
||||
To upgrade, you generally boot the new TempleOS CD/DVD, install on top of your drive, modify your files and set it to boot your account by executing $LK,"BootHDIns",A="MN:BootHDIns"$(). Often, your code will have to be modified to work with the new version. See $LK,"Change Log",A="FI:::/Doc/ChangeLog.TXT"$. You might have to boot an alternate drive or the CD and modify your code until it boots okay.
|
||||
To upgrade, you generally boot the new TempleOS CD/DVD, install on top of your drive, modify your files and set it to boot your account by executing $LK,"BootHDIns",A="MN:BootHDIns"$(). Often, your code will have to be modified to work with the new version. See $LK,"Change Log",A="FI:::/Doc/ChangeLog.DD"$. You might have to boot an alternate drive or the CD and modify your code until it boots okay.
|
||||
|
||||
See the $LK,"Installing",A="FI:::/Doc/Install.TXT"$ documentation.
|
||||
See the $LK,"Installing",A="FI:::/Doc/Install.DD"$ documentation.
|
||||
@@ -7,51 +7,51 @@ $ID,2$* Professionals doing hobby projects
|
||||
* Teenagers doing projects
|
||||
* Non-professional, older-persons projects
|
||||
$ID,-2$
|
||||
Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.TXT"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"81,125",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a $LK,"Hello World",A="FI:::/Doc/HelloWorld.TXT"$ application in one line of code and can put graphics on the screen with a three line program!
|
||||
Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.DD"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"81,125",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a $LK,"Hello World",A="FI:::/Doc/HelloWorld.DD"$ application in one line of code and can put graphics on the screen with a three line program!
|
||||
|
||||
It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate without protection. The resulting simplicity of no protections is why TempleOS has value. In facts, that's the point of TempleOS. See the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.TXT"$.
|
||||
It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate without protection. The resulting simplicity of no protections is why TempleOS has value. In facts, that's the point of TempleOS. See the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.DD"$.
|
||||
|
||||
Conventional thinking is "failure is not an option" for general purpose operating systems. Since this OS is used in addition to Windows or Linux, however, failure is an option -- just use Windows or Linux if you can't do something. I cherry-pick what it will and won't do, to make it maximally beautiful. The following applications more or less form a basis that spans the range of use that TempleOS is intended for:
|
||||
|
||||
$LK,"/Demo/Games/BattleLines.CPP",A="FI:::/Demo/Games/BattleLines.CPP"$
|
||||
$LK,"/Demo/Games/BigGuns.CPP",A="FI:::/Demo/Games/BigGuns.CPP"$
|
||||
$LK,"/Demo/Games/BlackDiamond.CPP",A="FI:::/Demo/Games/BlackDiamond.CPP"$
|
||||
$LK,"/Demo/Games/BomberGolf.CPP",A="FI:::/Demo/Games/BomberGolf.CPP"$
|
||||
$LK,"/Demo/Games/CastleFrankenstein.CPP",A="FI:::/Demo/Games/CastleFrankenstein.CPP"$
|
||||
$LK,"/Demo/Games/CharDemo.CPP",A="FI:::/Demo/Games/CharDemo.CPP"$
|
||||
$LK,"/Demo/Games/CircleTrace.CPP",A="FI:::/Demo/Games/CircleTrace.CPP"$
|
||||
$LK,"/Demo/Games/Collision.CPP",A="FI:::/Demo/Games/Collision.CPP"$
|
||||
$LK,"/Demo/Games/Digits.CPP",A="FI:::/Demo/Games/Digits.CPP"$
|
||||
$LK,"/Demo/Games/DunGen.CPP",A="FI:::/Demo/Games/DunGen.CPP"$
|
||||
$LK,"/Demo/Games/EagleDive.CPP",A="FI:::/Demo/Games/EagleDive.CPP"$
|
||||
$LK,"/Demo/Games/ElephantWalk.CPP",A="FI:::/Demo/Games/ElephantWalk.CPP"$
|
||||
$LK,"/Demo/Games/FlapBat.CPP",A="FI:::/Demo/Games/FlapBat.CPP"$
|
||||
$LK,"/Demo/Games/FlatTops.CPP",A="FI:::/Demo/Games/FlatTops.CPP"$
|
||||
$LK,"/Demo/Games/Halogen.CPP",A="FI:::/Demo/Games/Halogen.CPP"$
|
||||
$LK,"/Demo/Games/MassSpring.CPP",A="FI:::/Demo/Games/MassSpring.CPP"$
|
||||
$LK,"/Demo/Games/Maze.CPP",A="FI:::/Demo/Games/Maze.CPP"$
|
||||
$LK,"/Demo/Games/RainDrops.CPP",A="FI:::/Demo/Games/RainDrops.CPP"$
|
||||
$LK,"/Demo/Games/RawHide.CPP",A="FI:::/Demo/Games/RawHide.CPP"$
|
||||
$LK,"/Demo/Games/Rocket.CPP",A="FI:::/Demo/Games/Rocket.CPP"$
|
||||
$LK,"/Demo/Games/RocketScience.CPP",A="FI:::/Demo/Games/RocketScience.CPP"$
|
||||
$LK,"/Demo/Games/Squirt.CPP",A="FI:::/Demo/Games/Squirt.CPP"$
|
||||
$LK,"/Demo/Games/TheDead.CPP",A="FI:::/Demo/Games/TheDead.CPP"$
|
||||
$LK,"/Demo/Games/TicTacToe.CPP",A="FI:::/Demo/Games/TicTacToe.CPP"$
|
||||
$LK,"/Demo/Games/TreeCheckers.CPP",A="FI:::/Demo/Games/TreeCheckers.CPP"$
|
||||
$LK,"/Demo/Games/Varoom.CPP",A="FI:::/Demo/Games/Varoom.CPP"$
|
||||
$LK,"/Demo/Games/Wenceslas.CPP",A="FI:::/Demo/Games/Wenceslas.CPP"$
|
||||
$LK,"/Demo/Games/Whap.CPP",A="FI:::/Demo/Games/Whap.CPP"$
|
||||
$LK,"/Demo/Games/Zing.CPP",A="FI:::/Demo/Games/Zing.CPP"$
|
||||
$LK,"/Demo/Games/ZoneOut.CPP",A="FI:::/Demo/Games/ZoneOut.CPP"$
|
||||
$LK,"/Apps/Psalmody/Examples/childish.CPP",A="FI:::/Apps/Psalmody/Examples/childish.CPP"$
|
||||
$LK,"/Apps/Psalmody/Examples/night.CPP",A="FI:::/Apps/Psalmody/Examples/night.CPP"$
|
||||
$LK,"/Apps/Psalmody/Examples/prosper.CPP",A="FI:::/Apps/Psalmody/Examples/prosper.CPP"$
|
||||
$LK,"/Demo/Games/BattleLines.HC",A="FI:::/Demo/Games/BattleLines.HC"$
|
||||
$LK,"/Demo/Games/BigGuns.HC",A="FI:::/Demo/Games/BigGuns.HC"$
|
||||
$LK,"/Demo/Games/BlackDiamond.HC",A="FI:::/Demo/Games/BlackDiamond.HC"$
|
||||
$LK,"/Demo/Games/BomberGolf.HC",A="FI:::/Demo/Games/BomberGolf.HC"$
|
||||
$LK,"/Demo/Games/CastleFrankenstein.HC",A="FI:::/Demo/Games/CastleFrankenstein.HC"$
|
||||
$LK,"/Demo/Games/CharDemo.HC",A="FI:::/Demo/Games/CharDemo.HC"$
|
||||
$LK,"/Demo/Games/CircleTrace.HC",A="FI:::/Demo/Games/CircleTrace.HC"$
|
||||
$LK,"/Demo/Games/Collision.HC",A="FI:::/Demo/Games/Collision.HC"$
|
||||
$LK,"/Demo/Games/Digits.HC",A="FI:::/Demo/Games/Digits.HC"$
|
||||
$LK,"/Demo/Games/DunGen.HC",A="FI:::/Demo/Games/DunGen.HC"$
|
||||
$LK,"/Demo/Games/EagleDive.HC",A="FI:::/Demo/Games/EagleDive.HC"$
|
||||
$LK,"/Demo/Games/ElephantWalk.HC",A="FI:::/Demo/Games/ElephantWalk.HC"$
|
||||
$LK,"/Demo/Games/FlapBat.HC",A="FI:::/Demo/Games/FlapBat.HC"$
|
||||
$LK,"/Demo/Games/FlatTops.HC",A="FI:::/Demo/Games/FlatTops.HC"$
|
||||
$LK,"/Demo/Games/Halogen.HC",A="FI:::/Demo/Games/Halogen.HC"$
|
||||
$LK,"/Demo/Games/MassSpring.HC",A="FI:::/Demo/Games/MassSpring.HC"$
|
||||
$LK,"/Demo/Games/Maze.HC",A="FI:::/Demo/Games/Maze.HC"$
|
||||
$LK,"/Demo/Games/RainDrops.HC",A="FI:::/Demo/Games/RainDrops.HC"$
|
||||
$LK,"/Demo/Games/RawHide.HC",A="FI:::/Demo/Games/RawHide.HC"$
|
||||
$LK,"/Demo/Games/Rocket.HC",A="FI:::/Demo/Games/Rocket.HC"$
|
||||
$LK,"/Demo/Games/RocketScience.HC",A="FI:::/Demo/Games/RocketScience.HC"$
|
||||
$LK,"/Demo/Games/Squirt.HC",A="FI:::/Demo/Games/Squirt.HC"$
|
||||
$LK,"/Demo/Games/TheDead.HC",A="FI:::/Demo/Games/TheDead.HC"$
|
||||
$LK,"/Demo/Games/TicTacToe.HC",A="FI:::/Demo/Games/TicTacToe.HC"$
|
||||
$LK,"/Demo/Games/TreeCheckers.HC",A="FI:::/Demo/Games/TreeCheckers.HC"$
|
||||
$LK,"/Demo/Games/Varoom.HC",A="FI:::/Demo/Games/Varoom.HC"$
|
||||
$LK,"/Demo/Games/Wenceslas.HC",A="FI:::/Demo/Games/Wenceslas.HC"$
|
||||
$LK,"/Demo/Games/Whap.HC",A="FI:::/Demo/Games/Whap.HC"$
|
||||
$LK,"/Demo/Games/Zing.HC",A="FI:::/Demo/Games/Zing.HC"$
|
||||
$LK,"/Demo/Games/ZoneOut.HC",A="FI:::/Demo/Games/ZoneOut.HC"$
|
||||
$LK,"/Apps/Psalmody/Examples/childish.HC",A="FI:::/Apps/Psalmody/Examples/childish.HC"$
|
||||
$LK,"/Apps/Psalmody/Examples/night.HC",A="FI:::/Apps/Psalmody/Examples/night.HC"$
|
||||
$LK,"/Apps/Psalmody/Examples/prosper.HC",A="FI:::/Apps/Psalmody/Examples/prosper.HC"$
|
||||
|
||||
Two things to know about TempleOS are that $UL,1$tasks$UL,0$ have $LK,"MAlloc",A="MN:MAlloc"$/$LK,"Free",A="MN:Free"$ heap memory, not applications, and tasks have compiler symbol tables that persist at a scope like environment variables in other operating systems, and the symbols can include functions.
|
||||
|
||||
For other operating systems, I hated learning one language for command line scripts and another for programming. With $FG,2$TempleOS$FG$, the command line feeds right into the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiler, line by line, and it places code into memory it $LK,"MAlloc",A="MN:MAlloc"$()s. The compiler is paused at the command line, waiting for input. Naturally, you $FG,2$#include$FG$ a program to load it into memory and, usually, start it.
|
||||
For other operating systems, I hated learning one language for command line scripts and another for programming. With $FG,2$TempleOS$FG$, the command line feeds right into the $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$ compiler, line by line, and it places code into memory it $LK,"MAlloc",A="MN:MAlloc"$()s. The compiler is paused at the command line, waiting for input. Naturally, you $FG,2$#include$FG$ a program to load it into memory and, usually, start it.
|
||||
|
||||
During the boot process, many files get $LK,"compiled",A="FI:::/StartOS.CPP"$ before you have access to the command line. (Don't worry, booting takes only two seconds.) All the header declarations for the operating system are compiled and are available for use in your programs without needing to $FG,2$#include $FG$them. Everything is truly compiled to native $FG,2$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ machine code, nothing is $FG,2$interpreted$FG$ and there is no $FG,2$byte code$FG$.
|
||||
During the boot process, many files get $LK,"compiled",A="FI:::/StartOS.HC"$ before you have access to the command line. (Don't worry, booting takes only two seconds.) All the header declarations for the operating system are compiled and are available for use in your programs without needing to $FG,2$#include $FG$them. Everything is truly compiled to native $FG,2$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ machine code, nothing is $FG,2$interpreted$FG$ and there is no $FG,2$byte code$FG$.
|
||||
|
||||
Statements at the global scope -- outside the scope of functions -- execute immediately. There is no $FG,2$main()$FG$ function. Instead, you give meaningful names to what would be $FG,2$main()$FG$ functions and you invoke them by calling them with a statement in the global scope, usually at the bottom of your file.
|
||||
|
||||
@@ -69,13 +69,13 @@ $FG$I didn't like that, so I made parentheses optional on calls with no args and
|
||||
|
||||
The syntax change created an ambiguity when specifying function addresses, like for calling $LK,"QSort",A="MN:QSort"$(). To resolve it, I made a '$FG,2$&$FG$' required in front of function names when specifying an address of a function, which is better anyway.
|
||||
|
||||
Once I was no longer using standard C/C++ syntax, I decided to change everything I didn't like and call it $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$. Here are the new $LK,"operator precedence",A="FF:::/Doc/HolyC.TXT,operator precedence"$ rules. It's Biblical! See $LK,"Luke,5:37",A="BF:Luke,5:37"$.
|
||||
Once I was no longer using standard C/C++ syntax, I decided to change everything I didn't like and call it $LK,"HolyC",A="FI:::/Doc/HolyC.DD"$. Here are the new $LK,"operator precedence",A="FF:::/Doc/HolyC.DD,operator precedence"$ rules. It's Biblical! See $LK,"Luke,5:37",A="BF:Luke,5:37"$.
|
||||
|
||||
There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as $LK,"Ahead-of-Time",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ compilation. Instead, you $LK,"Just in Time",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ compile.
|
||||
There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as $LK,"Ahead-of-Time",A="FF:::/Doc/Glossary.DD,AOT Compile Mode"$ compilation. Instead, you $LK,"Just in Time",A="FF:::/Doc/Glossary.DD,JIT Compile Mode"$ compile.
|
||||
|
||||
Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. Polling keeps it simple. It might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order.
|
||||
Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.HC,1"$. Polling keeps it simple. It might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order.
|
||||
|
||||
The $FG,2$FAT32$FG$ filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the simple, 64-bit TempleOS $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ filesystem. The $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ has allocation bitmap for clusters and all files are stored contiguously. You can't grow files.
|
||||
The $FG,2$FAT32$FG$ filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the simple, 64-bit TempleOS $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ filesystem. The $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ has allocation bitmap for clusters and all files are stored contiguously. You can't grow files.
|
||||
|
||||
TempleOS is geared toward reading and writing whole files. Since whole files are processed, compression is possible. Filenames ending in "$FG,2$.Z$FG$" are automatically compressed or uncompressed when stored and fetched. TempleOS does support direct block random access into files, however -- $LK,"FRBlks",A="MN:FRBlks"$() and $LK,"FWBlks",A="MN:FWBlks"$().
|
||||
|
||||
@@ -83,13 +83,13 @@ If a file is not found, "$FG,2$.Z$FG$" is added or removed and a search is done,
|
||||
|
||||
The graphic resolution is poor, $FG,2$640x480 16 color$FG$, but God said it was a covenant like circumcision. Also, that's all I feel comfortable with without GPU acceleration supported. A $FG,2$1600x1200x24$FG$ bit screen takes 37 times more memory, implying 37 times the CPU power. Also, a fixed size keeps it simple with everybody machine having the same appearance. Look on the bright-side -- you won't spend as much time twiddling pixels for your game art and you'll have tons of CPU power available, especially with multicore systems.
|
||||
|
||||
TempleOS is for hobbyist programmers on single user (at a time) home computers, not mainframes or servers. The focus task is all-important so symmetrical multiprocessing is almost pointless. Why does it matter running two apps at the same time twice as fast when you really want to run one faster? You could say TempleOS does master/slave multiprocessing. The anticipated use for multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is possible. See $LK,"TempleOS MultiCore",A="FI:::/Doc/MultiCore.TXT"$.
|
||||
TempleOS is for hobbyist programmers on single user (at a time) home computers, not mainframes or servers. The focus task is all-important so symmetrical multiprocessing is almost pointless. Why does it matter running two apps at the same time twice as fast when you really want to run one faster? You could say TempleOS does master/slave multiprocessing. The anticipated use for multicore is primarily putting graphics on the screen. Hardware graphics acceleration is not used, so this is possible. See $LK,"TempleOS MultiCore",A="FI:::/Doc/MultiCore.DD"$.
|
||||
|
||||
There is no distinction between the terms $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2$thread$FG$. All have a task record, $LK,"CTask",A="MN:CTask"$, pointed to by the $FG,2$FS$FG$ segment reg and are accessed with $FG,4$Fs->$FG$ while $FG,4$Gs->$FG$ points to a $LK,"CCPU",A="MN:CCPU"$ for the current CPU core. Each task can have just one window, but a task can have children with windows. (The segment regs are just used as extra regs -- there is nothing segmented about TempleOS' memory.) It is approximately the case that $FG,2$TempleOS$FG$ is multi-threading, single-processing.
|
||||
|
||||
In $FG,2$TempleOS$FG$, $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$$FG$ refers to the father of all tasks. He's never supposed to die. Since tasks inherit the symbols of parents, system-wide stuff is associated with $FG,2$Adam$FG$. His heap is like kernel memory in other operating systems. Since $FG,2$Adam$FG$ is immortal, it's safe to alloc objects, not tied to any mortal task, from $FG,2$Adam$FG$'s heap. He stays in a server mode, taking requests, so you can ask him to $FG,2$#include$FG$ something, placing that code system-wide. A funny story is that originally I called it the $FG,2$root$FG$ task and even had a $FG,2$/Root$FG$ directory :-) $FG,2$Adam$FG$ executes $LK,"::/StartOS.CPP"$ at boot time.
|
||||
In $FG,2$TempleOS$FG$, $LK,"Adam Task",A="FF:::/Doc/Glossary.DD,Adam Task"$$FG$ refers to the father of all tasks. He's never supposed to die. Since tasks inherit the symbols of parents, system-wide stuff is associated with $FG,2$Adam$FG$. His heap is like kernel memory in other operating systems. Since $FG,2$Adam$FG$ is immortal, it's safe to alloc objects, not tied to any mortal task, from $FG,2$Adam$FG$'s heap. He stays in a server mode, taking requests, so you can ask him to $FG,2$#include$FG$ something, placing that code system-wide. A funny story is that originally I called it the $FG,2$root$FG$ task and even had a $FG,2$/Root$FG$ directory :-) $FG,2$Adam$FG$ executes $LK,"::/StartOS.HC"$ at boot time.
|
||||
|
||||
For easy back-ups, place everything you author in your $FG,2$/Home$FG$ directory and subdirectories. Then, use $LK,"CopyTree",A="MN:CopyTree"$(). That should make upgrading easy, too. Customizable start-up scripts go in your $FG,2$/Home$FG$ directory. The default start-up scripts are in the root directory. Copy the start-up files you wish to customize into $FG,2$/Home$FG$ and modify them. See $LK,"Home Files",A="FF:::/Doc/GuideLines.TXT,/Home Files"$. You can make your own distro that includes everything and is a bootable live CD with $LK,"::/Misc/DoDistro.CPP"$.
|
||||
For easy back-ups, place everything you author in your $FG,2$/Home$FG$ directory and subdirectories. Then, use $LK,"CopyTree",A="MN:CopyTree"$(). That should make upgrading easy, too. Customizable start-up scripts go in your $FG,2$/Home$FG$ directory. The default start-up scripts are in the root directory. Copy the start-up files you wish to customize into $FG,2$/Home$FG$ and modify them. See $LK,"Home Files",A="FF:::/Doc/GuideLines.DD,/Home Files"$. You can make your own distro that includes everything and is a bootable live CD with $LK,"::/Misc/DoDistro.HC"$.
|
||||
|
||||
Typically, your usage pattern through the day will be repeatedly left or right clicking on filenames in a cmd line $LK,"Dir",A="MN:Dir"$() listing. You left-click files to edit them and right-click to $FG,2$#include$FG$ them. To begin a project, type $LK,"Ed",A="MN:Ed"$("filename");, supplying a filename. You can also run programs with $FG,2$<F5>$FG$ when in the editor. $FG,2$<ESC>$FG$ to save and exit the file. You'll need to do a new $LK,"Dir",A="MN:Dir"$() cmd, periodically, so make a macro on your PersonalMenu. Access your PersonalMenu by pressing $FG,2$<CTRL-m>$FG$, cursoring until you are on top of it and pressing $FG,2$<SPACE>$FG$.
|
||||
|
||||
@@ -104,25 +104,25 @@ $FG,2$<ALT-SHIFT-a>$FG$ closes AutoComplete.
|
||||
$FG,2$<ALT-a>$FG$ brings back AutoComplete.
|
||||
$FG,2$<ALT-v>$FG$ vertically tiles windows.
|
||||
$FG,2$<ALT-h>$FG$ horizontally tiles windows.
|
||||
The $FG,2$ALT$FG$ keys are defined in $LK,"~/HomeKeyPlugIns.CPP"$. You can customize them.
|
||||
The $FG,2$ALT$FG$ keys are defined in $LK,"~/HomeKeyPlugIns.HC"$. You can customize them.
|
||||
|
||||
$FG,2$<CTRL-ALT-t>$FG$ new terminal window.
|
||||
$FG,2$<CTRL-ALT-n>$FG$ switches to the next window.
|
||||
$FG,2$<CTRL-ALT-x>$FG$ kills a window.
|
||||
|
||||
$LK,"Find",A="MN:Find"$() is your best friend. There's a wrapper function called $LK,"F",A="MN:F"$() in your $FG,2$~/HomeWrappers.CPP.Z$FG$ file. Feel free to make wrapper functions for functions you use often and customize the args. By the way, $LK,"Find",A="MN:Find"$() or $LK,"R",A="MN:R"$() can be used to replace strings across multiple files. You can access $LK,"Find",A="MN:Find"$() using $FG,2$<CTRL-SHIFT-f>$FG$.
|
||||
$LK,"Find",A="MN:Find"$() is your best friend. There's a wrapper function called $LK,"F",A="MN:F"$() in your $FG,2$~/HomeWrappers.HC.Z$FG$ file. Feel free to make wrapper functions for functions you use often and customize the args. By the way, $LK,"Find",A="MN:Find"$() or $LK,"R",A="MN:R"$() can be used to replace strings across multiple files. You can access $LK,"Find",A="MN:Find"$() using $FG,2$<CTRL-SHIFT-f>$FG$.
|
||||
|
||||
As you browse code, use the $FG,2$AutoComplete$FG$ window to look-up functions, etc. $FG,2$<CTRL-SHIFT-F1>$FG$ (or whatever number) to follow a sym to it's source. You can browse deeper and deeper. You go back with $FG,2$<SHIFT-ESC>$FG$.
|
||||
|
||||
Use the $LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$ or $LK,"Demo Index",A="FI:::/Doc/DemoIndex.TXT"$ to find-out what exists. Press $FG,2$<F1>$FG$ for help or use the links on your menu ($FG,2$<CTRL-m>$FG$). Also, look in the $FG,2$/Demo$FG$ or $FG,2$/Apps$FG$ directories for inspiration.
|
||||
Use the $LK,"Help & Index",A="FI:::/Doc/HelpIndex.DD"$ or $LK,"Demo Index",A="FI:::/Doc/DemoIndex.DD"$ to find-out what exists. Press $FG,2$<F1>$FG$ for help or use the links on your menu ($FG,2$<CTRL-m>$FG$). Also, look in the $FG,2$/Demo$FG$ or $FG,2$/Apps$FG$ directories for inspiration.
|
||||
|
||||
Software is distributed as $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ ISO files. Burn a CD/DVD, or set your CD/DVD in $FG,2$QEMU$FG$, $FG,2$VMware$FG$ or $FG,2$VirtualBox$FG$ to the ISO file. Then, access the $FG,2$'T'$FG$ drive. Or, $LK,"Mount",A="MN:Mount"$() the ISO.C file and access the $FG,2$'M'$FG$ drive in TempleOS. It must be a contiguous ISO.C file, so rename it under TempleOS to ISO.C.
|
||||
Software is distributed as $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ ISO files. Burn a CD/DVD, or set your CD/DVD in $FG,2$QEMU$FG$, $FG,2$VMware$FG$ or $FG,2$VirtualBox$FG$ to the ISO file. Then, access the $FG,2$'T'$FG$ drive. Or, $LK,"Mount",A="MN:Mount"$() the ISO.C file and access the $FG,2$'M'$FG$ drive in TempleOS. It must be a contiguous ISO.C file, so rename it under TempleOS to ISO.C.
|
||||
|
||||
Ideally, do not install applications such as games onto your hard drive because we wish to keep hard drive usage low, so the whole $FG,2$'C'$FG$ drive can be copied quickly to $FG,2$'D'$FG$. Also, the $LK,"FileMgr",A="MN:FileMgr"$() $FG,2$<CTRL-d>$FG$ starts too slowly when there are lots of hard drive files, but that is how we want it.
|
||||
|
||||
3rd party libraries are banned, since they circumvent the 100,000 line of code limit in the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.TXT"$. All applications must only depend on the core TempleOS files and whatever they bring along in the ISO. This is similar to how Commodore 64 applications only depended on the ROM.
|
||||
3rd party libraries are banned, since they circumvent the 100,000 line of code limit in the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.DD"$. All applications must only depend on the core TempleOS files and whatever they bring along in the ISO. This is similar to how Commodore 64 applications only depended on the ROM.
|
||||
|
||||
Create a $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ ISO file with $LK,"RedSeaISO",A="MN:RedSeaISO"$(). Send an email to $TX,"tdavis@templeos.org",HTML="mailto:tdavis@templeos.org"$ if you want me to post a link to your TempleOS code in the App Store.
|
||||
Create a $LK,"RedSea",A="FI:::/Doc/RedSea.DD"$ ISO file with $LK,"RedSeaISO",A="MN:RedSeaISO"$(). Send an email to $TX,"tdavis@templeos.org",HTML="mailto:tdavis@templeos.org"$ if you want me to post a link to your TempleOS code in the App Store.
|
||||
|
||||
$MA-X+PU,"Take Tour",LM="User(\"Cd(\\\"::/Misc/Tour\\\");;AutoFile(\\\"Tour\\\");\n\");"$
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
$WW,1$$FG,5$$TX+CX,"DolDoc Widget Help"$$FG$
|
||||
|
||||
$LK,"DolDoc",A="::/Doc/DolDocOverview.TXT"$ is a TempleOS document type.
|
||||
$LK,"DolDoc",A="::/Doc/DolDocOverview.DD"$ is a TempleOS document type.
|
||||
|
||||
$FG,2$"Expression"$FG$ a num or HolyC algebraic term with operators and HolyC syms can be entered.
|
||||
$FG,2$"Macro"$FG$ Most entries can behave like macro entries if you assign them macro strs.
|
||||
$FG,2$"AutoStr"$FG$ Like a macro except it is an $LK,"AutoFile",A="FF:::/Doc/Glossary.TXT,AutoFile"$. You can't have both an autostr and macro text defined.
|
||||
$FG,2$"AutoStr"$FG$ Like a macro except it is an $LK,"AutoFile",A="FF:::/Doc/Glossary.DD,AutoFile"$. You can't have both an autostr and macro text defined.
|
||||
|
||||
$FG,5$Tag Text$FG$ is the text that will be displayed for the item. For links, you can leave it blank and the details of the link will be shown.
|
||||
$FG,5$Hide$FG$ means display nothing, making an entry invisible.
|
||||
@@ -39,4 +39,4 @@ $FG,5$Escape$FG$ For macro's, send an $FG,2$<ESC>$FG$ char to exit before runnin
|
||||
|
||||
$FG,5$Refresh Data$FG$ updates $FG,2$$$DA...$$$FG$ entry continuously.
|
||||
|
||||
$FG,5$Html Link$FG$ stores a link which will be embedded if you generate a html version of a document with $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$.
|
||||
$FG,5$Html Link$FG$ stores a link which will be embedded if you generate a html version of a document with $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$.
|
||||
File renamed without changes.
Reference in new issue
Block a user