TempleOSCDV5.00.ISO
This commit is contained in:
1 parent
122df6338e
commit
f6eacf7744
374 files changed
+11078
-11204
No files matched your search
BIN
Binary file not shown.
+105
-228
@@ -2,11 +2,113 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$
|
||||
|
||||
Use $LK,"R",A="MN:R"$() to rename if I change a label.
|
||||
|
||||
$IV,1$----11/21/16 01:46:12----$IV,0$
|
||||
$IV,1$----01/10/17 15:29:10----$IV,0$
|
||||
* Added $LK,"Let2Let",A="MN:Let2Let"$().
|
||||
|
||||
$IV,1$----01/10/17 14:27:58----$IV,0$
|
||||
* Made $LK,"DocPut",A="MN:DocPut"$() use parent task's doc if input filter task.
|
||||
* Added $LK,"Once",A="MN:Once"$(), $LK,"AOnce",A="MN:AOnce"$(), $LK,"OnceFlush",A="MN:OnceFlush"$(), $LK,"AOnceFlush",A="MN:AOnceFlush"$(), $LK,"OnceDrv",A="MN:OnceDrv"$(), $LK,"AOnceDrv",A="MN:AOnceDrv"$() and $LK,"OnceExe",A="MN:OnceExe"$().
|
||||
* $LK,"R",A="MN:R"$("DoOnce","Once");
|
||||
* Added $LK,"RegAppend",A="MN:RegAppend"$() and $LK,"RegCnt",A="MN:RegCnt"$();
|
||||
* $LK,"R",A="MN:R"$("RegSetDftEntry()","$LK,"RegDft",A="MN:RegDft"$()");
|
||||
* $LK,"R",A="MN:R"$("RegExeBranch()","$LK,"RegExe",A="MN:RegExe"$()");
|
||||
* $LK,"R",A="MN:R"$("RegWriteBranch()","$LK,"RegWrite",A="MN:RegWrite"$()");
|
||||
|
||||
$IV,1$----01/10/17 11:45:41----$IV,0$
|
||||
* Added $LK,"::/Adam/InsReg.HC"$ with $LK,"InsReg",A="MN:InsReg"$(), $LK,"InsRereg",A="MN:InsRereg"$() and $LK,"InsUnreg",A="MN:InsUnreg"$().
|
||||
* Added $LK,"::/Adam/Host.HC"$ with $LK,"HostChgDsk",A="MN:HostChgDsk"$().
|
||||
* Added $LK,"::/Adam/Opt/Utils/TOS.HC"$ with $LK,"TOSStdIns",A="MN:TOSStdIns"$().
|
||||
* Added cmd line args for partition % to $LK,"PrtDsk",A="MN:PrtDsk"$().
|
||||
|
||||
$IV,1$----01/09/17 21:48:34----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("a1","arg1");
|
||||
* $LK,"R",A="MN:R"$("a2","arg2");
|
||||
* $LK,"R",A="MN:R"$("r","res");
|
||||
|
||||
$IV,1$----01/09/17 02:30:59----$IV,0$
|
||||
* Improved compiler $LK,"ICSlashOp",A="MN:ICSlashOp"$().
|
||||
* Added $LK,"Panic",A="MN:Panic"$().
|
||||
* Made it possible to mount just one partition.
|
||||
* Fixed creation of RedSea ISOs.
|
||||
* Organized $LK,"::/PersonalMenu.DD"$.
|
||||
* Moved AfterEgypt to the supplemental disk.
|
||||
|
||||
$IV,1$----01/06/17 06:07:19----$IV,0$
|
||||
* Fixed $LK,"ChgDsk",A="MN:ChgDsk"$().
|
||||
* Improved $LK,"::/Misc/OSTestSuite.HC"$.
|
||||
|
||||
$IV,1$----01/05/17 04:53:21----$IV,0$
|
||||
* No longer support ASCII#12, <CTRL-l> CH_FORM_FEED.
|
||||
* Fixed $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$.
|
||||
* $LK,"GRScrnCaptureRead",A="MN:GRScrnCaptureRead"$().
|
||||
|
||||
$IV,1$----01/04/17 18:06:14----$IV,0$
|
||||
* Added $LK,"::/Demo/AcctExample/TOSPolicies.DD"$.
|
||||
* $LK,"R",A="MN:R"$("U0 pad;",";"); for align #asserts.
|
||||
* Got rid of $FG,4$mouse.throttle$FG$.
|
||||
* $LK,"R",A="MN:R"$("Button","Bttn");
|
||||
* $LK,"R",A="MN:R"$("Handler","Hndlr");
|
||||
* $LK,"R",A="MN:R"$("InputPointer","Mouse");
|
||||
* Improved $LK,"MemRep",A="MN:MemRep"$().
|
||||
* Changed $LK,"::/Adam/WallPaper.HC"$.
|
||||
|
||||
$IV,1$----01/03/17 12:23:49----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("chars_cmp...","char_bmp...");
|
||||
* Added chk for $LK,"Profanity",A="FF:::/Demo/AcctExample/TOSMisc.HC,Profanity"$.
|
||||
* Improved $LK,"TOSRegen",A="FF:::/Demo/AcctExample/TOSDistro.HC,TOSRegen"$.
|
||||
* Removed $TX,"TempleOSBooks1.ISO",HTML="http://www.templeos.org/files/TempleOSBooks1.ISO"$ and $TX,"TempleOSBooks2.ISO",HTML="http://www.templeos.org/files/TempleOSBooks2.ISO"$ out of $TX,"TempleOSSup1.ISO",HTML="http://www.templeos.org/TempleOSSup1.ISO"$.
|
||||
|
||||
$IV,1$----01/01/17 17:16:16----$IV,0$
|
||||
* $BK,1$TempleOS version 5.00 Released$BK,0$
|
||||
* Added $LK,"Collapse",A="MN:Collapse"$().
|
||||
* Added $LK,"CursorRem",A="MN:CursorRem"$().
|
||||
|
||||
$IV,1$----12/31/16 07:21:20----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("SYS_SEMA_...","SEMA_...");
|
||||
* $LK,"R",A="MN:R"$("SYSf_CTRL_ALT_...","CTRL_ALT_...");
|
||||
* $LK,"R",A="MN:R"$("ThrowBreak()","$LK,"Break",A="MN:Break"$()");
|
||||
* Added $LK,"MemPageRep",A="MN:MemPageRep"$().
|
||||
|
||||
$IV,1$----12/30/16 23:42:20----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("Pages512","Pags");
|
||||
* Overhauled $LK,"::/Kernel/Mem/PageTables.HC"$.
|
||||
* $LK,"R",A="MN:R"$("BusyWait()","$LK,"Busy",A="MN:Busy"$()");
|
||||
|
||||
$IV,1$----12/29/16 10:21:44----$IV,0$
|
||||
* Changed $LK,"Snd",A="MN:Snd"$() from $FG,2$freq$FG$ to a $FG,2$I8$FG$ val called an $FG,2$ona$FG$.
|
||||
* Fixed err in music octaves.
|
||||
* To convert songs, download Supplemental#1 ISO from the AppStore on http://www.templeos.org and run Sup1/Sup1Utils/CvtSong500.HC.
|
||||
|
||||
$IV,1$----12/22/16 16:18:32----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("CSrvCmd","$LK,"CJob",A="MN:CJob"$");
|
||||
* $LK,"R",A="MN:R"$("CSrvCtrl","$LK,"CJobCtrl",A="MN:CJobCtrl"$");
|
||||
|
||||
$IV,1$----12/03/16 13:19:58----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("SpriteMat3B()","$LK,"Sprite3Mat4x4B",A="MN:Sprite3Mat4x4B"$()");
|
||||
* $LK,"R",A="MN:R"$("SpriteX3B()","$LK,"Sprite3XB",A="MN:Sprite3XB"$()");
|
||||
* $LK,"R",A="MN:R"$("SpriteY3B()","$LK,"Sprite3YB",A="MN:Sprite3YB"$()");
|
||||
* $LK,"R",A="MN:R"$("SpriteZ3B()","$LK,"Sprite3ZB",A="MN:Sprite3ZB"$()");
|
||||
* Improved $LK,"::/Demo/Games/Talons.HC"$.
|
||||
|
||||
$IV,1$----12/03/16 10:16:26----$IV,0$
|
||||
* Changed $LK,"__CMD_LINE__",A="MN:__CMD_LINE__"$.
|
||||
* Added $LK,"CProgress",A="MN:CProgress"$.tf.
|
||||
* Added $LK,"sys_staff_mode_flag",A="MN:sys_staff_mode_flag"$.
|
||||
* $LK,"R",A="MN:R"$("except_caller","except_callers");
|
||||
|
||||
$IV,1$----11/30/16 22:44:35----$IV,0$
|
||||
* Added $LK,"SpriteTransform",A="MN:SpriteTransform"$().
|
||||
|
||||
$IV,1$----11/28/16 07:11:41----$IV,0$
|
||||
* Improved $LK,"::/Apps/Titanium/Titanium.HC"$.
|
||||
|
||||
$IV,1$----11/26/16 22:43:51----$IV,0$
|
||||
* Added solar storms to $LK,"::/Apps/X-Caliber/X-Caliber.HC"$.
|
||||
* $LK,"R",A="MN:R"$("TimeOut","Titanium");
|
||||
|
||||
$IV,1$----11/20/16 19:46:43----$IV,0$
|
||||
* $BK,1$TempleOS version 4.13 Released$BK,0$
|
||||
* Improved $LK,"::/Apps/TimeOut/TimeOut.HC"$.
|
||||
* Improved $LK,"::/Apps/Titanium/Titanium.HC"$.
|
||||
* Improved $LK,"::/Apps/X-Caliber/X-Caliber.HC"$.
|
||||
|
||||
$IV,1$----11/19/16 08:19:51----$IV,0$
|
||||
@@ -139,7 +241,7 @@ $IV,1$----07/08/16 14:30:19----$IV,0$
|
||||
|
||||
$IV,1$----07/07/16 07:21:03----$IV,0$
|
||||
* $LK,"DocRead",A="MN:DocRead"$() changes to file's dir so relative filenames work.
|
||||
* Added AppStore to website with Supplemental #1 ISO for download.
|
||||
* Added AppStore to website with Supplemental#1 ISO for download.
|
||||
|
||||
$IV,1$----07/06/16 23:45:30----$IV,0$
|
||||
* Fixed multicore bug in $LK,"Sprite3",A="MN:Sprite3"$().
|
||||
@@ -201,228 +303,3 @@ $IV,1$----06/16/16 19:49:39----$IV,0$
|
||||
$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/Talons.HC"$.
|
||||
|
||||
$IV,1$----05/30/16 21:16:44----$IV,0$
|
||||
* Added waterfall to $LK,"::/Demo/Games/RawHide.HC"$.
|
||||
|
||||
$IV,1$----05/23/16 01:30:28----$IV,0$
|
||||
* Added $LK,"RedSeaISO",A="MN:RedSeaISO"$().
|
||||
* $LK,"R",A="MN:R"$("ISOFileCreate","$LK,"ISO9660ISO",A="MN:ISO9660ISO"$");
|
||||
|
||||
$IV,1$----05/19/16 02:16:09----$IV,0$
|
||||
* Added $LK,"BDT_ISO_FILE_WRITE",A="MN:BDT_ISO_FILE_WRITE"$.
|
||||
|
||||
$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.HC"$.
|
||||
|
||||
$IV,1$----05/12/16 05:18:56----$IV,0$
|
||||
* Added $LK,"CCF_CMD_LINE",A="MN:CCF_CMD_LINE"$
|
||||
* Replaced $FG,4$__DEPTH__$FG$ with $LK,"__CMD_LINE__",A="MN:__CMD_LINE__"$.
|
||||
|
||||
$IV,1$----05/10/16 06:23:05----$IV,0$
|
||||
* Compiler bug fixes and optimizations.
|
||||
|
||||
$IV,1$----05/07/16 08:55:59----$IV,0$
|
||||
* $BK,1$TempleOS version 4.06 Released$BK,0$
|
||||
|
||||
$IV,1$----05/03/16 19:26:45----$IV,0$
|
||||
* Made $LK,"FunSegFind",A="MN:FunSegFind"$() search all hash tables when $LK,"IsDbgMode",A="MN:IsDbgMode"$.
|
||||
* 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$
|
||||
* $LK,"R",A="MN:R"$("Identical","Ident");
|
||||
* $LK,"R",A="MN:R"$("Previous","Prev");
|
||||
* $LK,"R",A="MN:R"$("Result","Res");
|
||||
* Started assembler MMX/SSE. Not done.
|
||||
* Changed a couple Bible related things.
|
||||
|
||||
$IV,1$----04/26/16 01:18:57----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("MapDrv","$LK,"DrvMap",A="MN:DrvMap"$");
|
||||
|
||||
$IV,1$----04/25/16 13:17:49----$IV,0$
|
||||
* Changed args in $LK,"CAdd",A="MN:CAdd"$(), $LK,"CSub",A="MN:CSub"$(), $LK,"CMul",A="MN:CMul"$(), $LK,"CDiv",A="MN:CDiv"$() and $LK,"CPoly",A="MN:CPoly"$().
|
||||
* Changed args in $LK,"D3Add",A="MN:D3Add"$(), $LK,"D3Sub",A="MN:D3Sub"$(), $LK,"D3Mul",A="MN:D3Mul"$(), $LK,"D3Div",A="MN:D3Div"$() and $LK,"D3Cross",A="MN:D3Cross"$().
|
||||
|
||||
$IV,1$----04/25/16 03:42:30----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("TK_INT","TK_I64");
|
||||
* 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.
|
||||
* Got rid of 4K page tables by making $LK,"text",A="MN:text"$.vga_alias. All pages are 2Meg size.
|
||||
|
||||
$IV,1$----04/15/16 13:39:25----$IV,0$
|
||||
* Fixed bug in $LK,"EdCodeTools",A="MN:EdCodeTools"$().
|
||||
* Fixed double $FG,2$ASCII#5$FG$ cursor bug.
|
||||
|
||||
$IV,1$----04/01/16 14:59:49----$IV,0$
|
||||
* Changed $LK,"SpriteInterpolate",A="MN:SpriteInterpolate"$() args.
|
||||
* $LK,"R",A="MN:R"$("Index","Idx");
|
||||
|
||||
$IV,1$----03/31/16 11:20:13----$IV,0$
|
||||
* 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.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.
|
||||
* Added $LK,"DOCEF_DFT_LEN",A="MN:DOCEF_DFT_LEN"$. Modified $LK,"DocForm",A="MN:DocForm"$() to look-up string length automatically from the compiler's class information.
|
||||
|
||||
$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.DD"$.
|
||||
|
||||
$IV,1$----03/21/16 02:12:08----$IV,0$
|
||||
* Added $LK,"DOCT_MARKER",A="MN:DOCT_MARKER"$.
|
||||
* Added $LK,"CICType",A="MN:CICType"$.
|
||||
* Optimized $LK,"MDG_MASK",A="MN:MDG_MASK"$ and $LK,"RTG_MASK",A="MN:RTG_MASK"$ values.
|
||||
|
||||
$IV,1$----03/19/16 09:15:11----$IV,0$
|
||||
* Fixed bug in $LK,"EdFindReplace",A="MN:EdFindReplace"$().
|
||||
|
||||
$IV,1$----03/19/16 06:22:36----$IV,0$
|
||||
* Fixed $LK,"UAsm",A="MN:Ui"$() bug.
|
||||
* Got rids of $FG,4$ICF_A1_FIRST$FG$.
|
||||
* Cleaned-up compiler $LK,"REGG_CLOBBERED",A="MN:REGG_CLOBBERED"$ and $LK,"REGG_STK_TMP",A="MN:REGG_STK_TMP"$.
|
||||
|
||||
$IV,1$----03/18/16 09:53:33----$IV,0$
|
||||
* Made $LK,"SpriteEd",A="MN:SpriteEd"$() sel foreground elem.
|
||||
|
||||
$IV,1$----03/14/16 05:57:27----$IV,0$
|
||||
* $BK,1$TempleOS version 4.04 Released$BK,0$
|
||||
* Changed $FG,2$nobound_switch$FG$ so it uses [].
|
||||
* Changed $LK,"KbdMouseCmdAck",A="MN:KbdMouseCmdAck"$().
|
||||
|
||||
$IV,1$----02/19/16 18:48:51----$IV,0$
|
||||
* Fixed bug in $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$.
|
||||
|
||||
$IV,1$----02/15/16 23:31:15----$IV,0$
|
||||
* 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.
|
||||
|
||||
$IV,1$----02/10/16 08:56:49----$IV,0$
|
||||
* Improved $FG,2$<CTRL-l>$FG$ prompting.
|
||||
|
||||
$IV,1$----02/09/16 23:54:23----$IV,0$
|
||||
* Created $LK,"DOCEF_LEN",A="MN:DOCEF_LEN"$ with arg. $LK,"DOCT_DATA",A="MN:DOCT_DATA"$ has default 64 len.
|
||||
|
||||
$IV,1$----02/09/16 09:34:32----$IV,0$
|
||||
* $BK,1$TempleOS version 4.03 Released$BK,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.HC"$.
|
||||
* Added $LK,"::/Demo/AcctExample/TOSToHtml.HC"$.
|
||||
|
||||
$IV,1$----02/03/16 18:47:00----$IV,0$
|
||||
* Refactored $LK,"SpriteMainEd",A="MN:SpriteMainEd"$().
|
||||
* Added tag edit to main sprite edit menu.
|
||||
|
||||
$IV,1$----02/01/16 21:01:15----$IV,0$
|
||||
* Cleaned-up $LK,"TaskKillDying",A="MN:TaskKillDying"$().
|
||||
* Made multicore more professional.
|
||||
|
||||
$IV,1$----02/01/16 06:02:41----$IV,0$
|
||||
* Moved Sup1CodeScraps/Mem/Mem2Meg.HC out of kernel.
|
||||
|
||||
$IV,1$----01/31/16 04:07:50----$IV,0$
|
||||
* Fixed scheduler, so doesn't idle so high.
|
||||
* Fixed many memory leaks.
|
||||
* Changed args to $LK,"Mem512Alloc",A="MN:Mem512Alloc"$(), $LK,"Mem512Free",A="MN:Mem512Free"$(), and $LK,"Mem512TaskAlloc",A="MN:Mem512TaskAlloc"$().
|
||||
|
||||
$IV,1$----01/30/16 11:14:29----$IV,0$
|
||||
* Changed arg in $LK,"DocEntryNewTag",A="MN:DocEntryNewTag"$().
|
||||
* Added $LK,"DocEntryNewBase",A="MN:DocEntryNewBase"$().
|
||||
|
||||
$IV,1$----01/29/16 02:44:38----$IV,0$
|
||||
* Overhauled $LK,"DocSave",A="MN:DocSave"$() and $LK,"DocRecalc",A="MN:DocRecalc"$().
|
||||
|
||||
$IV,1$----01/28/16 20:45:35----$IV,0$
|
||||
* Fixed bug in locate sprite elem code.
|
||||
* Overhauled $FG,2$<CTRL-r>$FG$ sprite editor.
|
||||
* Added $LK,"DocHighlightCursor",A="MN:DocHighlightCursor"$() and $LK,"DOCf_DONT_HIGHLIGHT_CURSOR",A="MN:DOCf_DONT_HIGHLIGHT_CURSOR"$.
|
||||
|
||||
$IV,1$----01/28/16 14:05:52----$IV,0$
|
||||
* Fixed bug in $LK,"AutoComplete",A="MN:AutoComplete"$() init.
|
||||
* Added $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$().
|
||||
|
||||
$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.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.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.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");
|
||||
* $LK,"R",A="MN:R"$("Equal","Equ");
|
||||
* $LK,"R",A="MN:R"$("Binary","Bin");
|
||||
|
||||
$IV,1$----01/26/16 14:09:45----$IV,0$
|
||||
* Changed $LK,"DirContextNew",A="MN:DirContextNew"$(), $LK,"FilesFindMatch",A="MN:FilesFindMatch"$() and $LK,"FilesFind",A="MN:FilesFind"$() to use full_name.
|
||||
* $LK,"R",A="MN:R"$("Statement","Stmt");
|
||||
|
||||
$IV,1$----01/18/16 15:19:43----$IV,0$
|
||||
* Added except arg to $LK,"Let2BlkDev",A="MN:Let2BlkDev"$(), $LK,"BlkDevChk",A="MN:BlkDevChk"$(), $LK,"Let2Drv",A="MN:Let2Drv"$(), $LK,"DrvChk",A="MN:DrvChk"$() and $LK,"DrvIsWritable",A="MN:DrvIsWritable"$().
|
||||
|
||||
$IV,1$----01/16/16 08:20:00----$IV,0$
|
||||
* Added $LK,"DrvTextAttrGet",A="MN:DrvTextAttrGet"$().
|
||||
* Removed $FG,4$DrvTextAttrSet$FG$().
|
||||
|
||||
$IV,1$----01/15/16 00:47:31----$IV,0$
|
||||
* $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.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.HC"$.
|
||||
|
||||
$IV,1$----01/12/16 10:06:18----$IV,0$
|
||||
* $BK,1$TempleOS version 4.01 Released$BK,0$
|
||||
* Standardized drive letters. Your $LK,"In",A="MN:In"$() config scripts for compiling the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$() must be changed.
|
||||
* Added $LK,"CCF_QUESTION_HELP",A="MN:CCF_QUESTION_HELP"$.
|
||||
|
||||
$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.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.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.DD"$.
|
||||
* Added null case option. Next higher int with "$FG,2$case:$FG$" in $FG,2$switch$FG$ stmts. See $LK,"::/Demo/NullCase.HC"$.
|
||||
+3
-3
@@ -21,7 +21,7 @@ $ID,-5$
|
||||
|
||||
* God said $FG,2$640x480 16 color$FG$ graphics is a covenant like circumcision. Children will do offerings. Think of 16 colors like the Simpson's cartoons. In the future, even if one GPU were universal, we would keep 640x480 16 color and not use GPU acceleration. Graphics operations should be transparent, not hidden in a GPU.
|
||||
|
||||
* God said to use a single audio voice -- a single frequency with waveforms and, maybe, amplitude envelope.
|
||||
* God said to use a single-voice 8-bit signed MIDI-like sample for sound. God does not want death screams, perhaps, because God has PTSD or soldiers have PTSD. (Imagine wounded on battlefields.)
|
||||
|
||||
* God said His temple must be perfect. $FG,4$We don't think twice about breaking compatibility.$FG$ God said we do a seven year release cycle. I say the PC hardware follows a 49 year, jubilee cycle, like broadcast TV upgrades.
|
||||
|
||||
@@ -31,7 +31,7 @@ $ID,-5$
|
||||
|
||||
* Low line count is the highest good, so it is easy to learn the whole thing. Users should see the light at the end of the tunnel. One file system, for example, is better than many file systems.
|
||||
|
||||
* There is a limit of 100,000 lines of code for all time, not including applications and demos. $FG,4$Code comments count$FG$, however. Currently, there are $TX,"81,223",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code. $FG,4$3rd party libraries are banned$FG$ because they circumvent the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API that is the only dependency of applications. Dependency on components and libraries creates a hell that is no longer blissful.
|
||||
* There is a limit of 100,000 lines of code for all time, not including applications and demos. $FG,4$Code comments count$FG$, however. Currently, there are $TX,"81,390",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code. $FG,4$3rd party libraries are banned$FG$ because they circumvent the intent of this limit. The vision is a Commodore 64 ROM -- a fixed core API that is the only dependency of applications. Dependency on components and libraries creates a hell that is no longer blissful.
|
||||
|
||||
* Minimal abstraction is a goal. Sheep are fools. They always respect a design that is more complicated than another. Any genius can make it complicated. Like in physics, it takes a supra-genius to make it simple.
|
||||
|
||||
@@ -39,7 +39,7 @@ $ID,-5$
|
||||
|
||||
* All hardware access will be done through x86 IN/OUT instructions, not PCI drivers. A frame buffer for VGA is an exception.
|
||||
|
||||
* One driver for each class of device. Limited exceptions are allowed. With divergent device capabilities, it is a nightmare for user applications and what is gained? A three button mouse is like a leg you cannot put weight on.
|
||||
* One driver for each class of device. Limited exceptions are allowed. With divergent device capabilities, it is a nightmare for user applications and what is gained? A three bttn mouse is like a leg you cannot put weight on.
|
||||
|
||||
* $FG,2$Ring-0-only$FG$. Everything runs in kernel mode, including user applications.
|
||||
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Credits"$$FG$
|
||||
|
||||
I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"119,996",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"13.2",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,"119,241",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"13.4",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.HC"$, is taken from $FG,4$$TX,"FreeDOS",HTML="http://www.freedos.org"$$FG$. It's public domain.
|
||||
|
||||
@@ -14,7 +14,7 @@ I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"119,996",D="DD_TEMPLEOS_LOC"$ lines
|
||||
|
||||
*) 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.
|
||||
*) The mountain in some games is from $FG,4$$TX,"http://www.public-domain-photos.com",HTML="http://www.public-domain-photos.com"$$FG$. The wolf in BlackDiamond is also from there. I took watermarked photos and converted to 16 color.
|
||||
|
||||
*) The $FG,2$FAT32$FG$ file system is owned by MicroSoft.
|
||||
|
||||
@@ -34,7 +34,7 @@ I, $FG,2$Terry A. Davis$FG$, wrote all $TX,"119,996",D="DD_TEMPLEOS_LOC"$ lines
|
||||
|
||||
*) Thanks to $FG,4$$TX,"http://www.osdev.org",HTML="http://www.osdev.org"$$FG$ for a couple tips.
|
||||
|
||||
*) 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.
|
||||
*) God told me to stick with 640x480 16 color and single-voice 8-bit signed MIDI-like sample for sound. He 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.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$.
|
||||
|
||||
|
||||
+1
-1
@@ -1 +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$.
|
||||
$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,"TermBttnNew",A="FF:::/Adam/WallPaper.HC,TermBttnNew"$. There is a template-code ctrl generator, if you press $FG,2$<CTRL-SHIFT-L>$FG$.
|
||||
+2
-2
@@ -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.HC,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,ms_hard.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.HC,local_time"$.
|
||||
|
||||
* Get rid of this msg $LK,"here",A="FF:~/DoOnce.HC,Customize.DD"$.
|
||||
* Get rid of this msg $LK,"here",A="FF:~/Once.HC,Customize.DD"$.
|
||||
+3
-3
@@ -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/InFile/INProfile.IN"$ (This is an $LK,"InFile",A="FF:::/Doc/Glossary.DD,InFile"$.)
|
||||
* $LK,"Prof",A="MN:Prof"$() and $LK,"ProfRep",A="MN:ProfRep"$() provide code profiling. See $LK,"::/Demo/InFile/InProfile.IN"$ (This is an $LK,"InFile",A="FF:::/Doc/Glossary.DD,InFile"$.)
|
||||
|
||||
* 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 scrn.
|
||||
|
||||
@@ -37,6 +37,6 @@ $ID,-2$
|
||||
|
||||
* There is a heap check utility which can find leaks. Use $LK,"HeapLog",A="MN:HeapLog"$(), $LK,"HeapLogAddrRep",A="MN:HeapLogAddrRep"$() and $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$(). It's a really simple program which intercepts $LK,"MAlloc",A="MN:MAlloc"$() and $LK,"Free",A="MN:Free"$(). You can customize the code to find other heap issues.
|
||||
|
||||
* You can define handler functions for $FG,2$<CTRL-ALT-letter>$FG$ keys with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$<CTRL-ALT-letter>$FG$ handlers take a scan_code as an arg.
|
||||
* You can define hndlr functions for $FG,2$<CTRL-ALT-letter>$FG$ keys with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$<CTRL-ALT-letter>$FG$ hndlrs take a scan_code as an arg.
|
||||
|
||||
* If you recompile $FG,2$Kernel$FG,2$$FG$ with $LK,"BootHDIns",A="MN:BootHDIns"$(), you can set the $FG,4$MemInit$FG$, option to initialize memory to a value at boot, the $FG,4$HeapInit$FG$ option to cause mem alloced off the heap to be initialized or $FG,4$VarInit$FG$ option so both global and local vars will be initialized to a value. Pick a non-zero value to discover uninitialized var bugs. You can set $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$, and $LK,"sys_heap_init_flag",A="MN:sys_heap_init_flag"$ directly after booting.
|
||||
* If you recompile $FG,2$Kernel$FG,2$$FG$ with $LK,"BootHDIns",A="MN:BootHDIns"$(), you can set the $FG,4$MemInit$FG$, option to initialize memory to a value at boot, the $FG,4$HeapInit$FG$ option to cause mem alloced off the heap to be initialized or $FG,4$VarInit$FG$ option so both global and local vars will be initialized to a value, but global AOT variables are always zero if not initialized. Pick a non-zero value to discover uninitialized var bugs. You can set $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$, and $LK,"sys_heap_init_flag",A="MN:sys_heap_init_flag"$ directly after booting.
|
||||
+3
-1
@@ -40,7 +40,7 @@ $LK,"/Kernel/PCIBIOS.HC",A="FI:::/Kernel/PCIBIOS.HC"$ :290 could be eliminated,
|
||||
* 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.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"$.
|
||||
* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting TempleOS from a ROM when the reset bttn is pressed and booting UEFI when the power bttn is pressed. Or, we could build UEFI on a 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.
|
||||
|
||||
@@ -48,6 +48,8 @@ $LK,"::/Kernel/Mem/PageTables.HC"$ :135 lines to identity-map gets eliminated.
|
||||
|
||||
* We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.HC"$, too.
|
||||
|
||||
* Intel needs to make $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.DD"$ versions of its x86 CPU data sheets documenting all hardware relevant to TempleOS.
|
||||
|
||||
* 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.DD"$.
|
||||
|
||||
+3
-7
@@ -8,7 +8,7 @@ $LK,"::/Doc/HelloWorld.DD"$
|
||||
|
||||
$WW,0$$TR,"Games: Beginner"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/NetOfDots.HC"$
|
||||
$LK,"::/Demo/Graphics/InputPointer.HC"$
|
||||
$LK,"::/Demo/Graphics/MouseDemo.HC"$
|
||||
$LK,"::/Demo/Graphics/Lines.HC"$
|
||||
$LK,"::/Demo/Graphics/SunMoon.HC"$
|
||||
$LK,"::/Demo/Graphics/LowPassFilter.HC"$
|
||||
@@ -27,7 +27,6 @@ $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
|
||||
@@ -78,7 +77,6 @@ $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"$
|
||||
@@ -89,14 +87,13 @@ $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"$
|
||||
$MA-X+PU,"::/Apps/Titanium",LM="Cd(\"::/Apps/Titanium\");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/MPRadix.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"$
|
||||
@@ -108,7 +105,6 @@ $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"$
|
||||
@@ -162,7 +158,7 @@ $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/MenuBttn.HC"$
|
||||
$LK,"::/Demo/DolDoc/MenuSprite.HC"$
|
||||
$LK,"::/Demo/DolDoc/ClickCallBack.HC"$
|
||||
$LK,"::/Demo/DolDoc/TreeDemo.HC"$
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
$HL,1$$WW,0$#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
|
||||
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_cc->lex_include_stk->line_num);}
|
||||
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_cc->flags&CCF_CMD_LINE && Fs->last_cc->lex_include_stk->depth<2);}
|
||||
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_cc->flags&CCF_CMD_LINE && Fs->last_cc->lex_include_stk->depth<1);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_cc->lex_include_stk->full_name);}
|
||||
#define __DIR__ #exe{StreamDir;}
|
||||
|
||||
|
||||
@@ -113,15 +113,15 @@ Examples: <CTRL-t> to see
|
||||
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.HH,200"$
|
||||
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/Mem/PageTables.HC,ExpandHeap"$
|
||||
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Demo/DolDoc/DemoDoc.DD,MyLittleAnchor"$
|
||||
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"$.
|
||||
11) $LK,"Address Link",A="AD:0x11000"$.
|
||||
|
||||
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.HC"$.
|
||||
$ID,-2$$TR,"BT Bttn"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/MenuBttn.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.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"$.
|
||||
|
||||
@@ -240,13 +240,13 @@ $ID,2$See $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.HC"$ to generate a html version of
|
||||
$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.HC"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuBttn.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.HC"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuBttn.HC"$.
|
||||
$ID,-2$$TR,"RM=\"\" Right Macro Str"$
|
||||
$ID,2$Right macro string.
|
||||
$ID,-2$$TR,"BI=<Exp> Bin Number"$
|
||||
@@ -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.HC"$.
|
||||
See $LK,"::/Demo/DolDoc/MenuBttn.HC"$.
|
||||
$ID,-2$
|
||||
$FG,5$EXAMPLES:
|
||||
|
||||
|
||||
+1
-1
@@ -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.DD"$.
|
||||
* Oracle in with $FG,2$<F7>$FG$ for words or $FG,2$<SHIFT-F7>$FG$ for passages. See $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.
|
||||
|
||||
|
||||
+10
-2
@@ -18,6 +18,7 @@ $FG,2$BG$FG$ Backround
|
||||
$FG,2$Bin$FG$ Binary
|
||||
$FG,2$Blk$FG$ Block
|
||||
$FG,2$Bmp$FG$ BitMap
|
||||
$FG,2$Bttn$FG$ Button
|
||||
$FG,2$Buf$FG$ Buffer
|
||||
$FG,2$Bwd$FG$ Backward
|
||||
$FG,2$CB$FG$ Call-Back, Code Block
|
||||
@@ -25,6 +26,7 @@ $FG,2$Cfg$FG$ Config
|
||||
$FG,2$Chg$FG$ Change
|
||||
$FG,2$Chk$FG$ Check
|
||||
$FG,2$Const$FG$ Consant
|
||||
$FG,2$Cont$FG$ Continue
|
||||
$FG,2$Cmd$FG$ Command
|
||||
$FG,2$Cmp$FG$ Compiler
|
||||
$FG,2$Cnt$FG$ Count
|
||||
@@ -60,6 +62,7 @@ $FG,2$Fun$FG$ Function
|
||||
$FG,2$Gen$FG$ Generate
|
||||
$FG,2$Glbl$FG$ Global
|
||||
$FG,2$Gr$FG$ Graphic
|
||||
$FG,2$Hndlr$FG$ Handler
|
||||
$FG,2$IDE$FG$ Integrated Drive Electronics, Integrated Development Environment
|
||||
$FG,2$Id$FG$ Identification
|
||||
$FG,2$Ident$FG$ Identifier, Identity, Identical
|
||||
@@ -69,7 +72,6 @@ $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.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
|
||||
@@ -84,8 +86,10 @@ $FG,2$Man$FG$ Manual
|
||||
$FG,2$Mem$FG$ Memory
|
||||
$FG,2$Mgd$FG$ Managed
|
||||
$FG,2$Mgr$FG$ Manager
|
||||
$FG,2$Mid$FG$ Middle
|
||||
$FG,2$Mon$FG$ Month
|
||||
$FG,2$MP$FG$ MultiProcessor
|
||||
$FG,2$Ms$FG$ Mouse
|
||||
$FG,2$Msg$FG$ Message
|
||||
$FG,2$Num$FG$ Number
|
||||
$FG,2$Obj$FG$ Object
|
||||
@@ -160,7 +164,7 @@ $ID,2$This is Adam, as in Adam and Eve, the parent of all tasks. Adam is immort
|
||||
$ID,-2$$TR,"Seth Tasks"$
|
||||
$ID,2$In the Bible, $LK,"Seth",A="BF:Genesis,4:25"$$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$Core0$FG$ is also its $FG,2$Seth$FG$ task.
|
||||
$ID,-2$$TR,"Code and Data Heaps"$
|
||||
$ID,2$TempleOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2Gig$FG$ from the current code location. To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$. The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and glbl vars, unless the compiler option $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ is used. When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory. You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:Mem512Alloc"$ heaps.
|
||||
$ID,2$TempleOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2Gig$FG$ from the current code location. To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$. The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and glbl vars, unless the compiler option $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ is used. When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory. You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:MemPagAlloc"$ heaps.
|
||||
$ID,-2$$TR,"Parent, Child and PopUp Tasks"$
|
||||
$ID,2$Often a task will $LK,"Spawn",A="MN:Spawn"$() or $LK,"PopUp",A="MN:PopUp"$() a task as a helper. The helper is known as a child Task, though you can $LK,"Spawn",A="MN:Spawn"$ a task and assign it a different parent... like $FG,2$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"$
|
||||
@@ -176,6 +180,7 @@ $ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memor
|
||||
$ID,-2$$TR,"Compiler Intermediate Code"$
|
||||
$ID,2$The compiler generates insts one step before making actual assembly (machine) language insts. This code is rev polish stack machine in nature and can be viewed with $LK,"PassTrace",A="MN:PassTrace"$(). The compiler does not $FG,2$interpret$FG$ code, except in the process of optimization to make the final machine code. Assembly language output can be viewed when code is compiled with the $LK,"Trace",A="MN:Trace"$(), or, afterward, with $LK,"U",A="MN:U"$() or $LK,"Uf",A="MN:Uf"$("").
|
||||
$ID,-2$$TR,"Drive/Partition"$
|
||||
|
||||
$ID,2$There is no distinction between $FG,2$drive$FG$ or $FG,2$partition$FG$. They are specified with a single letter from $FG,2$A$FG$-$FG,2$Z$FG$.
|
||||
|
||||
'$FG,2$:$FG$' is the boot drive.
|
||||
@@ -197,8 +202,11 @@ $LK,"Editor Link Types",A="MN:LK_FILE"$
|
||||
$LK,"files_find_mask",A="FI:::/Doc/FileUtils.DD"$
|
||||
$LK,"Hash Table",A="HI:Hash"$
|
||||
$LK,"InFile",A="HI:InFile"$
|
||||
$LK,"Ona",A="HI:Snd"$
|
||||
$LK,"Pag",A="HI:Memory/BlkPool"$
|
||||
$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.
|
||||
$FG,2$CLI$FG$ disable interrupts.
|
||||
|
||||
Binary file not shown.
+3
-1
@@ -30,7 +30,7 @@ $LK,"~/MakeHome.HC"$ a file compiled by the $LK,"Adam Task",A="FF:::/Doc/Glossar
|
||||
|
||||
$FG,4$~/Home*$FG$ Copy $FG,2$Home*$FG$ files from the root into $FG,2$~$FG$ and customize them. These files are invoked when the $LK,"Adam Task",A="FF:::/Doc/Glossary.DD,Adam Task"$ starts-up.
|
||||
|
||||
$LK,"~/DoOnce.HC"$ a file invoked at the start-up of the first user. Customize this!
|
||||
$LK,"~/Once.HC"$ a file invoked at the start-up of the first user. Customize this!
|
||||
|
||||
$LK,"~/Registry.HC"$ can be edited by hand or deleted to reset to defaults. Takes affect next boot.
|
||||
|
||||
@@ -88,6 +88,8 @@ $ID,-5$
|
||||
|
||||
* 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.
|
||||
|
||||
* Do not use $FG,2$#if$FG$ or $FG,2$#ifdef$FG$
|
||||
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"Hash Sym Tables"$$FG$
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -227,7 +227,7 @@ $FG$$ID,-2$
|
||||
|
||||
* 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.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.
|
||||
* 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 hndlr. Use $LK,"PutExcept",A="MN:PutExcept"$() as a hndlr, 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$
|
||||
|
||||
|
||||
+1
-1
@@ -2,6 +2,6 @@ $WW,1$$FG,2$InFiles$FG$ are used to generate user input to automate operations.
|
||||
|
||||
When an $FG,2$InFile$FG$ runs, a child task is $LK,"Spawn",A="MN:Spawn"$()ed which intercepts real user input and generates fake input. InFiles are $LK,"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$InFile$FG$ to send special keys or mouse cmds to the parent. While an $FG,2$InFile$FG$ is running, the normal input gets diverted to the InFile task and can be filtered and sent back to the parent task. Unless you are driving functions which prompt for data, you can probably use an $FG,2$#include$FG$ file in place of an $FG,2$InFile$FG$.
|
||||
|
||||
See $LK,"::/Demo/InFile/INDir.IN"$.
|
||||
See $LK,"::/Demo/InFile/InDir.IN"$.
|
||||
|
||||
Note: $LK,"In",A="MN:In"$("") can be used if all you need is to send ASCII characters. It differs from $LK,"InStr",A="MN:InStr"$(). You'll probably use $LK,"In",A="MN:In"$() a lot and not $LK,"InStr",A="MN:InStr"$(). With $LK,"In",A="MN:In"$(), for example, you can place answers to the prompts for recompiling the $FG,2$Kernel$FG$ module during $LK,"BootHDIns",A="MN:BootHDIns"$().
|
||||
@@ -1,16 +0,0 @@
|
||||
$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 scrn, 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.HC"$.
|
||||
|
||||
See $LK,"CIPStateGlbls",A="MN:CIPStateGlbls"$ and $LK,"CMouseStateGlbls",A="MN:CMouseStateGlbls"$.
|
||||
|
||||
$HL,1$//****
|
||||
mouse.pos.x=mouse.prescale.x*mouse.scale.x*ip_grid.x_speed;
|
||||
ip.presnap.x=ToI64(ip.scale.x*mouse.pos.x)+ip.offset.x;
|
||||
if (ip_grid.snap)
|
||||
ip.pos.x=Trunc(ip.presnap.x/ip_grid.x)*ip_grid.x+ip_grid.x_offset;
|
||||
else
|
||||
ip.pos.x=ip.presnap.x;
|
||||
//****$HL,0$
|
||||
Binary file not shown.
+3
-3
@@ -4,11 +4,11 @@ See $LK,"Char",A="HI:Char"$ for definition of scan codes.
|
||||
|
||||
See $MA-X+PU,"Key Map",LM="KeyMap;View;\n"$ for a detailed list of key commands.
|
||||
|
||||
When you are at the cmd line, editing documents, browsing documentation and help, entering items in forms or in menu's, the $LK,"DolDoc",A="MN:CDoc"$ editor handles keys. It allows you to define your own key handlers in a $LK,"MyPutKey",A="MN:MyPutKey"$() function. If you choose, you can catch keys, overriding the default handlers. See $LK,"DocPutKey",A="MN:DocPutKey"$(). The following is an overview of key allocations.
|
||||
When you are at the cmd line, editing documents, browsing documentation and help, entering items in forms or in menu's, the $LK,"DolDoc",A="MN:CDoc"$ editor handles keys. It allows you to define your own key hndlrs in a $LK,"MyPutKey",A="MN:MyPutKey"$() function. If you choose, you can catch keys, overriding the default hndlrs. See $LK,"DocPutKey",A="MN:DocPutKey"$(). The following is an overview of key allocations.
|
||||
|
||||
$FG,2$<ALT-keys>$FG$ and $FG,2$<ALT-SHIFT-keys>$FG$ Free for user configurations in your $LK,"MyPutKey",A="MN:MyPutKey"$() handler, except for $FG,2$ALT-BACKSPACE$FG$ (undo). There are a few examples pre-defined, but you can change them if you wish.
|
||||
$FG,2$<ALT-keys>$FG$ and $FG,2$<ALT-SHIFT-keys>$FG$ Free for user configurations in your $LK,"MyPutKey",A="MN:MyPutKey"$() hndlr, except for $FG,2$ALT-BACKSPACE$FG$ (undo). There are a few examples pre-defined, but you can change them if you wish.
|
||||
|
||||
$FG,2$<CTRL-ALT-keys>$FG$ and $FG,2$<CTRL-ALT-SHIFT-keys>$FG$ Handled at a system level, NOT by the $LK,"CDoc",A="MN:CDoc"$ editor. I reserve the right to alloc these, but in the mean time, you can define your own handlers with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$<CTRL-ALT-letter>$FG$ handlers take a scan_code as an arg.
|
||||
$FG,2$<CTRL-ALT-keys>$FG$ and $FG,2$<CTRL-ALT-SHIFT-keys>$FG$ Handled at a system level, NOT by the $LK,"CDoc",A="MN:CDoc"$ editor. I reserve the right to alloc these, but in the mean time, you can define your own hndlrs with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$<CTRL-ALT-letter>$FG$ hndlrs take a scan_code as an arg.
|
||||
|
||||
$FG,2$<CTRL-function key>$FG$ Auto-completes local words.
|
||||
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
$WW,1$The editor mostly stays in a $LK,"GetKey",A="MN:GetKey"$()/$LK,"PutKey",A="MN:PutKey"$() loop. The putkey portion is where keys are acted-upon. TempleOS has a chain of putkey handlers in a $LK,"Circular Queue",A="HI:Circular Queue"$ with priorities. The highest priority handlers can choose to terminate handling, otherwise, the keys get sent on down the chain.
|
||||
$WW,1$The editor mostly stays in a $LK,"GetKey",A="MN:GetKey"$()/$LK,"PutKey",A="MN:PutKey"$() loop. The putkey portion is where keys are acted-upon. TempleOS has a chain of putkey hndlrs in a $LK,"Circular Queue",A="HI:Circular Queue"$ with priorities. The highest priority hndlrs can choose to terminate handling, otherwise, the keys get sent on down the chain.
|
||||
|
||||
$LK,"KeyDevAdd",A="MN:KeyDevAdd"$() defines a putkey device with a priority. "Device" might be a misnomer. Currently, the following are defined:
|
||||
|
||||
Priority Handler
|
||||
Priority Hndlr
|
||||
---------- ---------
|
||||
$FG,2$0x20000000$FG$ $LK,"MyPutKey",A="MN:MyPutKey"$() user handler
|
||||
$FG,2$0x20000000$FG$ $LK,"MyPutKey",A="MN:MyPutKey"$() user hndlr
|
||||
$FG,2$0x40000000$FG$ $LK,"KDInputFilterPutKey",A="MN:KDInputFilterPutKey"$() for $LK,"In",A="MN:In"$(), $LK,"InStr",A="MN:InStr"$(), and $LK,"InFile",A="MN:InFile"$() handling.
|
||||
$FG,2$0x60000000$FG$ $LK,"KDRawPutKey",A="MN:KDRawPutKey"$() nonwindowed direct to video mem debug output.
|
||||
$FG,2$0x80000000$FG$ $LK,"KDDocPutKey",A="MN:KDDocPutKey"$() standard document cmds
|
||||
|
||||
Since handling individual keys is slow, TempleOS supports PutS() as well. If no puts handler is defined, individual keys are sent.
|
||||
Since handling individual keys is slow, TempleOS supports PutS() as well. If no puts hndlr 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.HC"$. There is a var $LK,"CDoc",A="MN:CDoc"$$FG,2$.user_put_data$FG$ which gets passed to them.
|
||||
+17
-29
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Memory Overview"$$FG$
|
||||
|
||||
Paging is practically not used. 64-bit mode requires paging, however, so it is identity-mapped, virtual identical to physical. All tasks on all cores use the same page table map, just as though all addresses are physical addresses. 2Meg or 1Gig page table entries are used. Nothing swaps to disk. You can adjust $LK,"MEM_MAPPED_SPACE",A="MN:MEM_MAPPED_SPACE"$ for more RAM.
|
||||
Paging is practically not used. 64-bit mode requires paging, however, so it is identity-mapped -- virtual identical to physical. All tasks on all cores use the same page table map, just as though all addresses are physical addresses. 2Meg or 1Gig page table entries are used. Nothing swaps to disk.
|
||||
|
||||
In TempleOS, the lowest 2Gig of memory is called the $FG,2$code heap$FG$. TempleOS's compiler always uses 32-bit signed relative JMP & CALL insts because 64-bit CALLs take two insts. With signed +/- 32-bit values, code can only call a function within 2Gig distance. Therefore, TempleOS keeps all code in the lowest 2Gig memory addresses including what would normally be called "the kernel". Two Gig is plenty for code, don't worry.
|
||||
|
||||
@@ -8,50 +8,39 @@ You can create new, independent heaps using $LK,"HeapCtrlInit",A="MN:HeapCtrlIni
|
||||
|
||||
Memory alloced by a task will be freed when the task is killed. The $LK,"Adam Task",A="FF:::/Doc/Glossary.DD,Adam Task"$ is a task that never dies. His memory is like kernel memory in other operating systems. See $LK,"ACAlloc",A="MN:ACAlloc"$(), $LK,"AMAlloc",A="MN:AMAlloc"$(), $LK,"AMAllocIdent",A="MN:AMAllocIdent"$() and $LK,"AStrNew",A="MN:AStrNew"$().
|
||||
|
||||
All of the regular page tables are marked, "cached". When accessing hardware, however, you need uncached page table. The lowest 4Gig of addresses have an alias used to access hardware located toward the top of mapped space. It is currently at $FG,2$0x$TX,"3F00000000",D="DD_UNCACHED_ALIAS"$$FG$ but can change if $LK,"MEM_MAPPED_SPACE",A="MN:MEM_MAPPED_SPACE"$ is adjusted. See $LK,"dev.uncached_alias",A="FF:::/Kernel/KEnd.HC,dev.uncached_alias"$.
|
||||
All of the regular page tables are marked, "cached". When accessing hardware, however, you need uncached page table. The lowest 4Gig addresses have an alias to access hardware located toward the top of mapped space, $FG,2$0x$TX,"01AA000000",D="DD_UNCACHED_ALIAS"$$FG$. See $LK,"dev.uncached_alias",A="FF:::/Kernel/KEnd.HC,dev.uncached_alias"$.
|
||||
|
||||
During an extended powered-on session of TempleOS, in theory, memory will become fragmented, requiring a reboot. It has never happened to me.
|
||||
During an extended powered-on session of TempleOS, in theory, memory will become fragmented, requiring a reboot. It has never happens to me.
|
||||
|
||||
See $LK,"MemRep",A="MN:MemRep"$() and $LK,"::/Demo/MemDemo.HC"$.
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"Single System-wide Mem Map"$
|
||||
|
||||
$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"0003654F",D="DD_KERNEL_END"$$FG$
|
||||
$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"00036AEF",D="DD_KERNEL_END"$$FG$
|
||||
$ID,2$Kernel module, placed here by the boot-loader, $LK,"BOOT_RAM_BASE",A="MN:BOOT_RAM_BASE"$.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_DVD_END"$$FG$
|
||||
$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"$.
|
||||
$ID,-2$
|
||||
$FG,2$~0x000009F000- 0x000009FFFF
|
||||
$ID,2$$FG$Extended BIOS data area.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00000A0000- 0x00000BFFFF$FG$
|
||||
$ID,2$VGA graphics mem, marked as write-through cache in $LK,"text",A="MN:text"$.vga_alias.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"002035FF",D="DD_SYS_FIXED_AREA_END"$$FG$
|
||||
$ID,2$$LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for page tables and misc. $TX,"256Gig",D="DD_MEM_MAPPED_SPACE_GIG"$ of address space mapped.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00$TX,"00203600",D="DD_SYS_HEAP_BASE"$- 0x00$TX,"7FFFFFFF",D="DD_SYS_HEAP_LIMIT"$$FG$
|
||||
$ID,2$Code Heap mem.
|
||||
$ID,-2$
|
||||
$FG,2$ - 0x007FFFFFFF$FG$
|
||||
$ID,2$Data Heap mem. (This exists if there is less than 2Gig of code heap.)
|
||||
$ID,-2$
|
||||
$FG,2$ 0x00$TX,"00097000",D="DD_MP_VECT"$- 0x00$TX,"00097030",D="DD_MP_VECT_END"$$FG$ Multicore start-up vect code, $LK,"MPN_VECT",A="MN:MPN_VECT"$.
|
||||
$FG,2$~0x000009F000- 0x000009FFFF$FG$ Extended BIOS data area.
|
||||
$FG,2$ 0x00000A0000- 0x00000BFFFF$FG$ VGA graphics mem with alias at $LK,"text",A="MN:text"$.vga_alias.
|
||||
$FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"00101FFF",D="DD_SYS_FIXED_AREA_END"$$FG$ $LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for misc.
|
||||
$FG,2$ 0x00$TX,"0010F000",D="DD_MEM_HEAP_BASE"$- 0x00$TX,"7FFFFFFF",D="DD_MEM_HEAP_LIMIT"$$FG$ Code Heap mem.
|
||||
|
||||
$FG,2$ 0x00E0000000- 0x00FFFFFFFF$FG$
|
||||
$ID,2$32-bit devices could alloc memory at 0xF0000000 going up, but this is wrong, since some PCs already have devices at 0xF0000000. No PCI devices are supported, so $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() flaws are not an issue.
|
||||
$ID,-2$
|
||||
$FG,2$ 0x0080000000-~0x00DFFFFFFF$FG$
|
||||
$FG,2$ 0x0100000000-~0x$TX,"3FFFFFFFFF",D="DD_MEM_MAPPED_SPACE_END"$$FG$
|
||||
$FG,2$ 0x0100000000-~0x$TX,"01A9FFFFFF",D="DD_PHYSICAL_SPACE_END"$$FG$
|
||||
$ID,2$Data Heap mem. (The physical memory that exists in this range is data heap.)
|
||||
$ID,-2$
|
||||
$FG,2$ 0x$TX,"3F00000000",D="DD_UNCACHED_ALIAS"$- 0x$TX,"3FFFFFFFFF",D="DD_MEM_MAPPED_SPACE_END"$$FG$
|
||||
$FG,2$ 0x$TX,"01AA000000",D="DD_UNCACHED_ALIAS"$- 0x$TX,"02A9FFFFFF",D="DD_MAPPED_SPACE_END"$$FG$
|
||||
$ID,2$Uncached alias of first 4Gig. (For 32-bit device access.)
|
||||
$ID,-2$
|
||||
$FG,2$ - 0x$TX,"3FFFFFFFFF",D="DD_MEM_MAPPED_SPACE_END"$$FG$
|
||||
$ID,2$64-bit devices are alloced with $LK,"Mem64DevAlloc",A="MN:Mem64DevAlloc"$() counting bwd from $TX,"256Gig",D="DD_MEM_MAPPED_SPACE_GIG"$, but no PCI devices are actually supported$WW,0$.
|
||||
$FG,2$ - 0x$TX,"02A9FFFFFF",D="DD_MAPPED_SPACE_END"$$FG$
|
||||
$ID,2$64-bit devices are alloced with $LK,"Mem64DevAlloc",A="MN:Mem64DevAlloc"$() counting bwd, but no PCI devices are actually supported$WW,0$.
|
||||
$ID,-2$
|
||||
|
||||
|
||||
@@ -60,15 +49,14 @@ $WW,1$* Note: There is a break in the data-heap block pool. This has no effect
|
||||
* Note: For systems with less than 2Gig RAM, the code and data heap block pools are the same. For systems with 2-4Gig of RAM, the code heap is 1/4 of the total. See $LK,"BlkPoolsInit",A="MN:BlkPoolsInit"$().
|
||||
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"History"$$FG$
|
||||
|
||||
In 2003, I wanted to make a no-paging ring-0-only 64-bit operating system for super speed with simplicity and full access. With paging, every memory request requires 5 accesses -- it must access the address itself, 4K, 2Meg, 1Gig, and 512Gig page tables, but the CPU's translation look-aside buffer mostly removes the penalty for using paging. So, I did not want to use paging, but long mode requires it. I did the next best thing -- I identity-mapped everything and achieved the simplicity I was after with subtle performance boosts, not wasting time changing address maps. And, I look forward to the day I command Intel to make an optimized no-paging long mode.
|
||||
|
||||
I needed VGA A0000-BFFFF memory to be write-through and 0xE0000000-0xFFFFFFFF to be uncached for various devices. All 64-bit computers allow stopping address translation at 2Meg page size, not using 4K. I wanted to use 2Meg for everything because it's faster, with one less level of page tables. I had to make A0000-BFFFF write-through, though, so I could not use 2Meg size on the lowest page. I did the lowest 2Meg area as 4K pages. I also unmapped the first 4K to cause a fault when dereferencing NULL.
|
||||
|
||||
In 2016, I came-up with an alternate idea. I double mapped the lowest memory with an alias that was uncached. Accessing the lowest 2Meg area directly was cached but the alias I created up at the $LK,"top of address space",A="MN:MEM_MAPPED_SPACE"$ was uncached. Unfortunately, I could no longer boast of the simplicity of identity mapping everything. Since many of my users are familiar with A0000-BFFFF, it is actually pretty seriously unfortunate that they cannot use the easy-to-understand numbers of A0000-BFFFF, but must access the relocated alias location. See $LK,"text.vga_alias",A="FF:::/Kernel/KEnd.HC,text.vga_alias"$. I also no longer cause a fault when dereferencing NULL.
|
||||
In 2016, I came-up with an alternate idea. I double mapped the lowest memory with an alias that was uncached. Accessing the lowest 2Meg area directly was cached but the alias I created up at the top of address space was uncached. See $LK,"UncachedAliasAlloc",A="MN:UncachedAliasAlloc"$(). Unfortunately, I could no longer boast of the simplicity of identity mapping everything. Since many of my users are familiar with A0000-BFFFF, it is actually pretty seriously unfortunate that they cannot use the easy-to-understand numbers of A0000-BFFFF, but must access the relocated alias location. See $LK,"text.vga_alias",A="FF:::/Kernel/KEnd.HC,text.vga_alias"$. I also no longer cause a fault when dereferencing NULL.
|
||||
|
||||
Then, I switched to 1Gig page sizes. For the lowest 4Gig, I set-up an alias up at the $LK,"top of address space",A="MN:MEM_MAPPED_SPACE"$. Not all computers support 1Gig page tables, however, so I also support 2Meg.
|
||||
Then, I switched to 1Gig page sizes. For the lowest 4Gig, I set-up an alias up at the top of address space. See $LK,"UncachedAliasAlloc",A="MN:UncachedAliasAlloc"$(). Not all computers support 1Gig page tables, however, so I also support 2Meg.
|
||||
|
||||
My original plan was to allow changing the page tables as needed, so I had code for taking control of 2Meg pages and marking them uncached or whatever. When I did a HDAudio driver, I requested some 32-bit address space as uncached. Today, all of the first 4Gig can be accessed without caching at the $LK,"dev.uncached_alias",A="FF:::/Kernel/KEnd.HC,dev.uncached_alias"$.
|
||||
+1
-1
@@ -21,7 +21,7 @@ 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.DD"$$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$arg1$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$arg2$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".
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
$WW,1$$LK,"ms.pos.x",A="MN:ms"$ and $LK,"ms.pos.y",A="MN:ms"$ can be used to access the x and y coordinates of the mouse. They are relative to the scrn, not window. These can be used if you don't want to use msg passing. $LK,"ms.pos.z",A="MN:ms"$ is the wheel.
|
||||
|
||||
$LK,"ms.pos_text.x",A="MN:CMsStateGlbls"$ and $LK,"ms.pos_text.y",A="MN:CMsStateGlbls"$ are the text column and row. See $LK,"::/Demo/Games/Maze.HC"$.
|
||||
|
||||
See $LK,"CMsStateGlbls",A="MN:CMsStateGlbls"$ and $LK,"CMsHardStateGlbls",A="MN:CMsHardStateGlbls"$.
|
||||
|
||||
The $FG,2$hard$FG$ designation, as in $FG,2$ms_hard$FG$, represents hardware layer items before the application of an abstraction layer.
|
||||
|
||||
$HL,1$//****
|
||||
ms_hard.pos.x=ms_hard.prescale.x*ms_hard.scale.x*ms_grid.x_speed;
|
||||
ms.presnap.x=ToI64(ms.scale.x*ms_hard.pos.x)+ms.offset.x;
|
||||
if (ms_grid.snap)
|
||||
ms.pos.x=Trunc(ms.presnap.x/ms_grid.x)*ms_grid.x+ms_grid.x_offset;
|
||||
else
|
||||
ms.pos.x=ms.presnap.x;
|
||||
//****$HL,0$
|
||||
+1
-1
@@ -6,7 +6,7 @@ Only tasks on $FG,2$Core0$FG$ can have windows, but other cores can help render
|
||||
|
||||
Each core has an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ which is the father of all tasks on that core. $LK,"Adam",A="FF:::/Doc/Glossary.DD,Adam Task"$ is the $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ on $FG,2$Core0$FG$.
|
||||
|
||||
You give a job to a $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ with $LK,"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"$().
|
||||
You give a job to a $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ with $LK,"JobQue",A="MN:JobQue"$() and get the result with $LK,"JobResGet",A="MN:JobResGet"$(). You spawn a task on any core with $LK,"Spawn",A="MN:Spawn"$().
|
||||
|
||||
Note: You must use the $FG,2$LOCK$FG$ asm prefix when changing shared structures in a multicore environment. The $LK,"LBts",A="MN:LBts"$(), $LK,"LBtr",A="MN:LBtr"$() and $LK,"LBtc",A="MN:LBtc"$() insts have $FG,2$LOCK$FG$ prefixes. The compiler has a $FG,2$lock{}$FG$ feature but it doesn't work well. See $LK,"::/Demo/MultiCore/Lock.HC"$.
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
$WW,1$The word $FG,2$Pag$FG$ refers to an arbitrilly created $LK,"MEM_PAG_SIZE",A="MN:MEM_PAG_SIZE"$ unit of heap allocation. TempleOS does not alter the CPU page tables after setting them up at boot in $LK,"SYS_INIT_PAGE_TABLES",A="MN:SYS_INIT_PAGE_TABLES"$, so the CPU hardware page size is rarely important.
|
||||
+6
-2
@@ -75,9 +75,13 @@ $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,"InPrint",A="MN:InPrint"$(I64 ms,U8 *fmt,...) $LK,"PutChars",A="MN:PutChars"$()s one at a time with a delay.
|
||||
$LK,"Once",A="MN:Once"$(U8 *fmt,...) Writes User code to $LK,"Registry",A="FI:~/Registry.HC"$ to be executed next boot.
|
||||
|
||||
$LK,"RawPrint",A="MN:RawPrint"$(I64 ms,U8 *fmt,...) sends direct to scrn memory, bypassing window manager.
|
||||
$LK,"AOnce",A="MN:AOnce"$(U8 *fmt,...) Writes Adam code to $LK,"Registry",A="FI:~/Registry.HC"$ to be executed next boot.
|
||||
|
||||
$LK,"InPrint",A="MN:InPrint"$(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 scrn memory, bypassing window manager.
|
||||
|
||||
$LK,"User",A="MN:User"$(U8 *fmt,...) Spawns a user and execute a string on start-up.
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ $WW,1$* You run a risk of problems if you do file operations on the same files s
|
||||
$ID,2$
|
||||
A) $LK,"DocBottom",A="MN:DocBottom"$() followed by $LK,"DocClear",A="MN:DocClear"$() to clear the $LK,"CDoc",A="MN:CDoc"$ so it has no active widgets.
|
||||
|
||||
B) Disable window mgr button click checking with $FG,4$Fs->win_inhibit$FG$ set to mask $LK,"WIF_SELF_IP_L",A="MN:WIF_SELF_IP_L"$|$LK,"WIF_FOCUS_TASK_IP_L_D",A="MN:WIF_FOCUS_TASK_IP_L_D"$|$LK,"WIF_SELF_IP_R",A="MN:WIF_SELF_IP_R"$|$LK,"WIF_FOCUS_TASK_IP_R_D",A="MN:WIF_FOCUS_TASK_IP_R_D"$. This inhibits window mgr operations but still generates messages from button clicks.
|
||||
B) Disable window mgr bttn click checking with $FG,4$Fs->win_inhibit$FG$ set to mask $LK,"WIF_SELF_MS_L",A="MN:WIF_SELF_MS_L"$|$LK,"WIF_FOCUS_TASK_MS_L_D",A="MN:WIF_FOCUS_TASK_MS_L_D"$|$LK,"WIF_SELF_MS_R",A="MN:WIF_SELF_MS_R"$|$LK,"WIF_FOCUS_TASK_MS_R_D",A="MN:WIF_FOCUS_TASK_MS_R_D"$. This inhibits window mgr operations but still generates messages from bttn clicks.
|
||||
$ID,-2$
|
||||
* $FG,2$switch/case$FG$ stmts alloc a single jump table--do not use with wide, sparse ranges of case values.
|
||||
|
||||
|
||||
+2
-2
@@ -6,13 +6,13 @@ $HL,1$#define CDIR_FILENAME_LEN 38 //Must include terminator zero
|
||||
|
||||
The following bit field shows valid 8-Bit ASCII filename characters.
|
||||
|
||||
U32 chars_bmp_filename[8]=
|
||||
U32 char_bmp_filename[8]=
|
||||
{0x0000000, 0x03FF73FB, 0xEFFFFFFF, 0x2FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
|
||||
|
||||
public class CDirEntry //64-byte fixed-size
|
||||
{
|
||||
U16 attr; //See $LK,"RS_ATTR_DIR",A="MN:RS_ATTR_DIR"$. I would like to change these.
|
||||
U8 name[CDIR_FILENAME_LEN]; //See $LK,"chars_bmp_filename",A="MN:chars_bmp_filename"$, $LK,"FileNameChk",A="MN:FileNameChk"$
|
||||
U8 name[CDIR_FILENAME_LEN]; //See $LK,"char_bmp_filename",A="MN:char_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.DD"$, $LK,"Implementation of DateTime",A="FI:::/Kernel/KDate.HC"$
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ $FG,5$Supported Hardware$FG$
|
||||
|
||||
* Most$FG$ keyboards and mice.
|
||||
|
||||
* Minimum $TX,"512Meg",D="DD_MEM_MIN_MEG"$ RAM; Maximum $TX,"256Gig",D="DD_MEM_MAPPED_SPACE_GIG"$ RAM ($LK,"easily increased",A="MN:MEM_MAPPED_SPACE"$).
|
||||
* Minimum $TX,"512Meg",D="DD_MEM_MIN_MEG"$ RAM.
|
||||
|
||||
* Internal PC Speakers.
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
$WW,1$Sound is generated with $FG,2$I8$FG$ vals called $FG,2$ona$FG$'s. See $LK,"Note2Ona",A="MN:Note2Ona"$() and $LK,"Ona2Freq",A="MN:Ona2Freq"$(). God does not want death screams, perhaps, because God has PTSD or soldiers have PTSD. (Imagine wounded on battlefields.) $FG,2$Ona$FG$'s will allow elegant wave files for export and will allow the creation of simple hardware over the next centuries. $LK,"ONA_REST",A="MN:ONA_REST"$ is off.
|
||||
+1
-1
@@ -2,6 +2,6 @@ $WW,1$A $LK,"CSprite",A="MN:CSprite"$ is an ordered list of $LK,"these",A="MN:SP
|
||||
|
||||
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.
|
||||
Be aware that copying $FG,2$SP$FG$, $FG,2$IB$FG$, or $FG,2$IS$FG$ entries with the clipboard results 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.HC",A="FL:::/Adam/Gr/GrSpritePlot.HC,1"$ for how CSprite are stored.$FG$
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
$WW+H,1$$FG,5$$TX+CX,"TempleOS V4.13",D="DD_OS_NAME_VERSION"$$FG$
|
||||
$WW+H,1$$FG,5$$TX+CX,"TempleOS V5.00",D="DD_OS_NAME_VERSION"$$FG$
|
||||
|
||||
$TX+CX,"Public Domain Operating System"$
|
||||
|
||||
|
||||
+11
-4
@@ -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.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.
|
||||
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 bttns 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.
|
||||
|
||||
@@ -41,7 +41,7 @@ We want a CPU mode with virtual IO port addresses similar to how paging creates
|
||||
|
||||
Meanwhile, a complicated PCI interface can be designed along-side the TempleOS interface for Windows and Linux. It would almost be possible to carry-on separate lives, however, the super-simple serial requires getting rid of USB since super-simple serial is a new hardware standard. People can add USB ports with a PCI device card.
|
||||
|
||||
God said He wants single audio voice for the sound. I think we want a word-sized IO port for period with zero causing it to be off. The period should allow for 20Hz to 20,000 Hz. The PIT period register for PC speaker seems okay, whatever it is.
|
||||
God said He wants single-voice 8-bit signed MIDI-like sample for the sound. God does not want death screams, perhaps, because God has PTSD or soldiers have PTSD. (Imagine wounded on battlefields.)
|
||||
|
||||
The video will be a linear frame buffer 640x480 16 color with one-byte-per-pixel even though it is only 16 color with is 4-bit. Perhaps, we have a interrupt to sync with the refresh.
|
||||
|
||||
@@ -52,9 +52,9 @@ The original PC had general purpose digital IO through the parallel port. That
|
||||
Digital cameras will be super-simple high speed serial, but TempleOS is forever limited to 16 colors and multimedia is banned because large files being loaded into memory fragments memory, so cameras are somewhat unwelcome. I have enough problems without making the Brits anxious about autonomous gun turrets and killer robots. The reason I say cameras will be super-simple serial is because we are replacing USB ports with super-simple serial. Windows/Linux will have only super-simple serial ports unless people buy a USB PCI expansion card. So, the digital cameras will be super-simple serial.
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"Version One"$$FG$
|
||||
$FG,5$$TX+CX,"Version 1.0"$$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, a webcam and touch scrn. 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 $$8,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 scrn. 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.
|
||||
|
||||
@@ -80,6 +80,13 @@ The Temple PC will stay unchanged for seven years at a time. The Bible speaks o
|
||||
$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!
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"Version 2.0"$$FG$
|
||||
|
||||
$HC,"<center><img src=\"http://i.imgur.com/zUdfEqy.jpg\" width=\"640\" height=\"500\" alt=\"\"></center>"$
|
||||
|
||||
The Standard Temple IBM PC V2.0 will be released seven years after V1.0. Each unit will have a full, uncut, silicon wafer. V2.0 will be sold, unchanged, for seven more years, like a Commodore 64.
|
||||
$FG,8$
|
||||
* "Commodore 64" is a trademark owned by Polabe Holding NV.
|
||||
* "Linux" is a trademark owned by Linus Torvalds.
|
||||
|
||||
+3
-3
@@ -16,7 +16,7 @@ TempleOS is a motorcycle -- if you lean-over too far, a motorcycle will crash.
|
||||
|
||||
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.
|
||||
A three bttn 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.
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ A three button mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
|
||||
* One editor/word processor/browser for the command-line window, source code, documentation browser, dialog forms.
|
||||
|
||||
* No child windows. One window per task. Buttons are widgets, not child windows. There are child tasks, however.
|
||||
* No child windows. One window per task. Bttns are widgets, not child windows. There are child tasks, however.
|
||||
|
||||
* No distinction between $FG,2$thread$FG$, $FG,2$process$FG$ or $FG,2$task$FG$.
|
||||
|
||||
@@ -54,7 +54,7 @@ A three button mouse is like a leg you cannot put weight on. TempleOS just does
|
||||
|
||||
* $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.
|
||||
* $LK,"Sound",A="HI:Snd"$ has single-voice 8-bit signed MIDI-like samples.
|
||||
|
||||
* All tasks have a heap and a sym table. Scope is that of environment vars in other operating systems. As text is typed at the command line or you run programs by $FG,2$#include$FG$ing them, the syms go in the table. If a sym is not found, the parent task's table is checked. The father of all tasks has the API syms you'll need waiting in it's table. No need to $FG,2$#include$FG$ headers.
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
|
||||
|
||||
* Use the PullDown menu at the top of the scrn 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.HC,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,ms_hard.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.HC,local_time"$.
|
||||
|
||||
|
||||
Reference in new issue
Block a user