TempleOSCD_150720.ISO
This commit is contained in:
1 parent
401601816c
commit
f8c05f98f4
554 files changed
+26046
-24853
No files matched your search
+17
-3
@@ -1,19 +1,33 @@
|
||||
$WW,1$$FG,5$$TX+CX,"TempleOS"$$FG$
|
||||
|
||||
|
||||
$FG,5$Website:$FG$
|
||||
$FG,5$Websites:$FG$
|
||||
$TX,"www.templeos.org",HTML="http://www.templeos.org"$
|
||||
|
||||
$FG,5$Owner/President:$FG$
|
||||
Terry A. Davis
|
||||
$TX,"ASU Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$
|
||||
|
||||
$HC,"<img src=\"http://www.templeos.org/images/140414TerryADavis.jpg\" width=\"432\" height=\"324\" alt=\"\">"$
|
||||
|
||||
8144 Sickle Lane
|
||||
Las Vegas, NV 89128
|
||||
(702)254-4223
|
||||
|
||||
$TX,"tdavis@templeos.org",HTML="mailto:tdavis@templeos.org"$
|
||||
|
||||
|
||||
$FG,5$About Me:$FG$
|
||||
I was a National Merit Scholar with a 1440 SAT at Arizona State University. Here are my $TX,"ASU Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$. I have a bachelor's in Computer System Engineering from ASU, basically, embedded systems, and a master's in Electrical Engineering from ASU, control systems. I worked as a software, hardware and mechanical engineer at Ticketmaster from 1990-1996. I designed a 3 axis stepper-motor-driven milling machine 1996-1997 with a CAD/CAM package for a company I started called Home Automation and Robotic Equipment. 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.
|
||||
|
||||
$TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$ $TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$
|
||||
|
||||
I was a National Merit Scholar with a 1440 SAT at Arizona State University. I have a bachelor's in Computer System Engineering from ASU, basically, embedded systems, and a master's in Electrical Engineering from ASU, control systems. I worked as a software, hardware and mechanical engineer at Ticketmaster from 1990-1996.
|
||||
|
||||
I designed a 3 axis stepper-motor-driven milling machine 1996-1997 with a CAD/CAM package for a company I started called Home Automation and Robotic Equipment.
|
||||
|
||||
$HC,"<img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\">"$
|
||||
|
||||
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"$.
|
||||
|
||||
Binary file not shown.
+192
-205
@@ -2,7 +2,194 @@
|
||||
|
||||
Use $LK,"R",A="MN:R"$() to rename if I change a label.
|
||||
|
||||
$IV,1$----02/16/15 09:42:32----$IV,0$
|
||||
$IV,1$----07/20/15 11:24:35----$IV,0$
|
||||
* Added args to $LK,"Del",A="MN:Del"$().
|
||||
* Rearranged disk code.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$CFileAccess$FG$","$LK,"CDirContext",A="MN:CDirContext"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$IsDrvWritable$FG$","$LK,"DrvIsWritable",A="MN:DrvIsWritable"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$CDFileCreate$FG$","$LK,"ISOFileCreate",A="MN:ISOFileCreate"$");
|
||||
|
||||
$IV,1$----07/10/15 05:05:41----$IV,0$
|
||||
* Turned-off preemption in $LK,"WinMgrTask",A="MN:WinMgrTask"$().
|
||||
|
||||
$IV,1$----07/04/15 00:56:18----$IV,0$
|
||||
* Added hex record option to $LK,"GodDoodle",A="MN:GodDoodle"$().
|
||||
* Added $LK,"GodHexIns",A="MN:GodHexIns"$().
|
||||
|
||||
$IV,1$----06/30/15 15:35:31----$IV,0$
|
||||
* Added $LK,"Words",A="MN:Words"$().
|
||||
* Added $LK,"LongLines",A="MN:LongLines"$().
|
||||
|
||||
$IV,1$----06/26/15 12:54:41----$IV,0$
|
||||
* $BK,1$TempleOS version 3.07 Released$BK,0$
|
||||
|
||||
$IV,1$----06/19/15 18:16:11----$IV,0$
|
||||
* Added $LK,"::/Apps/Psalmody/Examples/science.CPP.Z"$.
|
||||
* Added $LK,"::/Apps/AfterEgypt/Comics/Moses84.TXT.Z"$.
|
||||
* Added $LK,"::/Apps/AfterEgypt/Comics/Moses85.TXT.Z"$.
|
||||
|
||||
$IV,1$----06/13/15 07:36:01----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/EagleDive.CPP.Z"$.
|
||||
|
||||
$IV,1$----06/11/15 19:26:27----$IV,0$
|
||||
* Fixed bug in $FG,2$<F2>$FG$ macros.
|
||||
* Added $LK,"STR_LEN",A="MN:STR_LEN"$.
|
||||
|
||||
$IV,1$----06/04/15 08:31:15----$IV,0$
|
||||
* Improved assembler and unassembler.
|
||||
* Added $LK,"::/Doc/HelloWorld.TXT.Z"$.
|
||||
|
||||
$IV,1$----05/26/15 21:10:30----$IV,0$
|
||||
* Added $LK,"DCF_PALETTE",A="MN:DCF_PALETTE"$.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$VGAPaletteColorGet$FG$","$LK,"GrPaletteColorGet",A="MN:GrPaletteColorGet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$VGAPaletteColorSet$FG$","$LK,"GrPaletteColorSet",A="MN:GrPaletteColorSet"$");
|
||||
|
||||
$IV,1$----05/23/15 09:46:51----$IV,0$
|
||||
* Cleaned-up $LK,"::/Linux/TOSZ.CPP"$.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$CaptureScreen$FG$","$FG,4$ScreenCapture$FG$");
|
||||
* Converted from 24 to 48 bit palette.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$VGAPalette4Get$FG$","$LK,"GrPaletteGet",A="MN:GrPaletteGet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$VGAPalette4Set$FG$","$LK,"GrPaletteSet",A="MN:GrPaletteSet"$");
|
||||
* Added flags to $LK,"DCSave",A="MN:DCSave"$() and $LK,"GRAWrite",A="MN:GRAWrite"$().
|
||||
* Added palettes to $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$.
|
||||
|
||||
$IV,1$----05/19/15 21:28:19----$IV,0$
|
||||
* Fixed bug in $LK,"::/Apps/Psalmody/PsalmodyFile.CPP.Z"$.
|
||||
|
||||
$IV,1$----05/18/15 09:05:45----$IV,0$
|
||||
* $BK,1$TempleOS version 3.06 Released$BK,0$
|
||||
* $LK,"R",A="MN:R"$("$FG,4$BIOS32$FG$","$FG,4$PCIBIOS$FG$");
|
||||
|
||||
$IV,1$----05/14/15 15:39:41----$IV,0$
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/abyss.CPP.Z"$.
|
||||
|
||||
$IV,1$----05/13/15 07:51:00----$IV,0$
|
||||
* Fixed bug in $LK,"ToHtml",A="MN:ToHtml"$().
|
||||
* Added $FG,2$'\'$FG$ line continuation for $FG,2$#help_index$FG$.
|
||||
* Expanded $LK,"LexExtStr",A="MN:LexExtStr"$().
|
||||
* Reindented everything.
|
||||
|
||||
$IV,1$----05/10/15 18:31:46----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("$FG,4$SendMsg$FG$","$LK,"PostMsgWait",A="MN:PostMsgWait"$");
|
||||
|
||||
$IV,1$----05/09/15 08:32:05----$IV,0$
|
||||
* Got rid of $FG,4$TASK_IN_QUE_SIGNATURE_VAL$FG$.
|
||||
* Broke-up long text file lines.
|
||||
|
||||
$IV,1$----05/08/15 16:58:46----$IV,0$
|
||||
* Cleaned-up Compiler.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$CLex$FG$","$LK,"CCmpCtrl",A="MN:CCmpCtrl"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$LexNew$FG$","$LK,"CmpCtrlNew",A="MN:CmpCtrlNew"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$LexDel$FG$","$LK,"CmpCtrlDel",A="MN:CmpCtrlDel"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$LexSize$FG$","$LK,"CmpCtrlSize",A="MN:CmpCtrlSize"$");
|
||||
|
||||
$IV,1$----05/06/15 21:31:40----$IV,0$
|
||||
* Fixed bug in $LK,"QSort",A="MN:QSort"$() and $LK,"QSortI64",A="MN:QSortI64"$().
|
||||
* Added $LK,"Sort",A="MN:Sort"$().
|
||||
|
||||
$IV,1$----05/06/15 11:19:25----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GetResult$FG$","$LK,"JobResultGet",A="MN:JobResultGet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$ScanResult$FG$","$LK,"JobResultScan",A="MN:JobResultScan"$");
|
||||
|
||||
$IV,1$----05/06/15 10:13:27----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("$FG,4$DCAllocDepthBuf$FG$", "$LK,"DCDepthBufAlloc",A="MN:DCDepthBufAlloc"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrAddTranslation$FG$", "$LK,"Mat4x4TranslationAdd",A="MN:Mat4x4TranslationAdd"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrSetTranslation$FG$", "$LK,"Mat4x4TranslationEqu",A="MN:Mat4x4TranslationEqu"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrSetSymmetry$FG$", "$LK,"DCSymmetrySet",A="MN:DCSymmetrySet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrSetSymmetry3$FG$", "$LK,"DCSymmetry3Set",A="MN:DCSymmetry3Set"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrSetRotMat$FG$", "$LK,"DCMat4x4Set",A="MN:DCMat4x4Set"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrReflect$FG$", "$LK,"DCReflect",A="MN:DCReflect"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrScalePenWidth$FG$", "$LK,"DCPenWidthScale",A="MN:DCPenWidthScale"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrTransform$FG$", "$LK,"DCTransform",A="MN:DCTransform"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrLighting$FG$", "$LK,"DCLighting",A="MN:DCLighting"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrRot$FG$", "$LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrRotXEqu$FG$", "$LK,"Mat4x4RotX",A="MN:Mat4x4RotX"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrRotYEqu$FG$", "$LK,"Mat4x4RotY",A="MN:Mat4x4RotY"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrRotZEqu$FG$", "$LK,"Mat4x4RotZ",A="MN:Mat4x4RotZ"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$SetStdPalette$FG$", "$LK,"PaletteSetStd",A="MN:PaletteSetStd"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GetGrPalette4$FG$", "$LK,"GrPaletteGet",A="MN:GrPaletteGet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GetGrPaletteColor$FG$", "$LK,"GrPaletteColorGet",A="MN:GrPaletteColorGet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$SetGrPalette4$FG$", "$LK,"GrPaletteSet",A="MN:GrPaletteSet"$");
|
||||
* $LK,"R",A="MN:R"$("$FG,4$SetGrPaletteColor$FG$", "$LK,"GrPaletteColorSet",A="MN:GrPaletteColorSet"$");
|
||||
|
||||
$IV,1$----05/03/15 05:11:31----$IV,0$
|
||||
* $BK,1$TempleOS version 3.05 Released$BK,0$
|
||||
* Added $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$().
|
||||
* $LK,"R",A="MN:R"$("$FG,4$GrMulMat$FG$","$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$").
|
||||
* Added $LK,"Mat4x4Equ",A="MN:Mat4x4Equ"$() and $LK,"Mat4x4New",A="MN:Mat4x4New"$().
|
||||
* Got rid of $FG,4$GrScaleNew$FG$(), $FG,4$GrRotXNew$FG$(), $FG,4$GrRotYNew$FG$() and $FG,4$GrRotZNew$FG$().
|
||||
|
||||
$IV,1$----04/30/15 19:13:07----$IV,0$
|
||||
* Added $LK,"CDrv",A="MN:CDrv"$.fat32_local_time_offset.
|
||||
* Cleaned-up $LK,"Who",A="MN:Who"$() and compiler mapfiles.
|
||||
|
||||
$IV,1$----04/11/15 05:48:05----$IV,0$
|
||||
* Fixed bug in $LK,"DrvMapBlkClean",A="MN:DrvMapBlkClean"$().
|
||||
|
||||
$IV,1$----04/09/15 04:42:31----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/TreeCheckers.CPP.Z"$.
|
||||
|
||||
$IV,1$----04/08/15 15:24:27----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("DocDo","DocEd");
|
||||
|
||||
$IV,1$----04/07/15 05:27:38----$IV,0$
|
||||
* Added $LK,"::/Apps/Psalmody/Examples/whos.CPP.Z"$.
|
||||
|
||||
$IV,1$----04/04/15 14:27:07----$IV,0$
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/proponent.CPP.Z"$.
|
||||
|
||||
$IV,1$----03/30/15 10:29:57----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("cur_data_col","cur_col");
|
||||
* $LK,"R",A="MN:R"$("cur_top_line_num","top_line_num");
|
||||
* Fixed bug in $LK,"EdLineDown",A="MN:EdLineDown"$().
|
||||
|
||||
$IV,1$----03/28/15 02:41:15----$IV,0$
|
||||
* Fixed $LK,"::/Demo/Snd/WaterFowl.CPP.Z"$.
|
||||
* Added $LK,"::/Demo/Graphics/Grid.CPP.Z"$.
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/image.CPP.Z"$.
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/dream.CPP.Z"$.
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/killed.CPP.Z"$.
|
||||
* Enhanced $LK,"::/Apps/Psalmody/Examples/worship.CPP.Z"$.
|
||||
|
||||
$IV,1$----03/23/15 07:21:26----$IV,0$
|
||||
* Updated $LK,"::/Demo/Graphics/Pick.CPP.Z"$.
|
||||
* Modified $LK,"DCF_LOCATE_NEAREST",A="MN:DCF_LOCATE_NEAREST"$.
|
||||
|
||||
$IV,1$----03/21/15 09:10:58----$IV,0$
|
||||
* Fixed bug in sprite edit of ellipses & polygons.
|
||||
|
||||
$IV,1$----03/18/15 02:00:15----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("DocFormDo","DocForm");
|
||||
* $LK,"R",A="MN:R"$("DocMenuDo","DocMenu");
|
||||
|
||||
$IV,1$----03/14/15 07:08:05----$IV,0$
|
||||
* $BK,1$TempleOS version 3.04 Released$BK,0$
|
||||
* Reformatted $LK,"::/Kernel/Font8x8.CPP.Z"$.
|
||||
* Added $LK,"PopUpGetF64",A="MN:PopUpGetF64"$().
|
||||
|
||||
$IV,1$----03/14/15 04:48:50----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("AcctReg...","Reg...");
|
||||
* Overhauled $LK,"GrUpdateTasks",A="MN:GrUpdateTasks"$().
|
||||
* Overhauled $LK,"::/Doc/GraphicsOverview.TXT.Z"$.
|
||||
|
||||
$IV,1$----03/09/15 06:07:25----$IV,0$
|
||||
* Dict now has extended ASCII chars.
|
||||
|
||||
$IV,1$----03/02/15 04:40:55----$IV,0$
|
||||
* Added help on $LK,"StdIn",A="HI:StdIn"$ and $LK,"StdOut",A="HI:StdOut"$.
|
||||
|
||||
$IV,1$----02/25/15 02:51:45----$IV,0$
|
||||
* Added IRC ChatBot $LK,"::/Linux/TempleBot",A="PI:::/Linux/TempleBot"$.
|
||||
|
||||
$IV,1$----02/21/15 19:07:32----$IV,0$
|
||||
* Added $LK,"::/Demo/DolDoc/NumBible.CPP.Z"$.
|
||||
|
||||
$IV,1$----02/19/15 18:39:53----$IV,0$
|
||||
* Fixed bug in $FG,2$<SHIFT-F6>$FG$ $LK,"GodDoodle",A="MN:GodDoodle"$().
|
||||
* Made default arg for $LK,"Preempt",A="MN:Preempt"$() into "OFF".
|
||||
|
||||
$IV,1$----02/17/15 21:32:26----$IV,0$
|
||||
* Made so cmd line doesn't print answer line unless a new answer occurs.
|
||||
|
||||
$IV,1$----02/14/15 05:12:45----$IV,0$
|
||||
* Added $LK,"Dump",A="MN:Dump"$().
|
||||
@@ -33,9 +220,9 @@ $IV,1$----01/29/15 02:58:45----$IV,0$
|
||||
* Added $LK,"::/Demo/Directives.CPP"$.
|
||||
$HL,1$$WW,0$#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
|
||||
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn-&Fs->last_lex->lfns-1);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->cur_lfn->full_name);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->depth);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->lex_include_stk->full_name);}
|
||||
#define __DIR__ #exe{StreamDir;}
|
||||
$HL,0$$WW,1$
|
||||
$IV,1$----01/28/15 11:40:37----$IV,0$
|
||||
@@ -63,7 +250,7 @@ $IV,1$----01/10/15 15:12:30----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("Grep","Find");
|
||||
|
||||
$IV,1$----01/08/15 17:40:37----$IV,0$
|
||||
* Undid "Improved $LK,"DCCaptureScreen",A="MN:DCCaptureScreen"$()" from 12/27/14. (It didn't work.)
|
||||
* Undid "Improved $LK,"DCScreenCapture",A="MN:DCScreenCapture"$()" from 12/27/14. (It didn't work.)
|
||||
|
||||
$IV,1$----01/06/15 18:58:16----$IV,0$
|
||||
* Reorganized $MA-X+PU,"::/Apps/Psalmody",LM="Cd(\"::/Apps/Psalmody\");Dir;View;\n"$.
|
||||
@@ -75,203 +262,3 @@ $IV,1$----01/02/15 04:46:36----$IV,0$
|
||||
* Changed Sprite format. Download $FG,2$Cvt300.CPP.Z$FG$ from
|
||||
$FG,4$$TX,"http://www.templeos.org/Wb/Home/Wb2/Files",HTML="http://www.templeos.org/Wb/Home/Wb2/Files"$$FG$.
|
||||
* Cleaned-up the $LK,"CSprite",A="MN:CSprite"$ code.
|
||||
|
||||
$IV,1$----12/31/14 15:13:08----$IV,0$
|
||||
* $BK,1$TempleOS version 3.00 Released$BK,0$
|
||||
|
||||
$IV,1$----12/30/14 21:18:04----$IV,0$
|
||||
* Added $LK,"::/Demo/RandDemo.CPP"$.
|
||||
|
||||
$IV,1$----12/30/14 00:38:42----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("ptr_cnt","ptr_stars_cnt");
|
||||
* Moved $LK,"DOCEF_UPDATE_DATA",A="MN:DOCEF_UPDATE_DATA"$ to be next to $LK,"DOCEF_REFRESH_DATA",A="MN:DOCEF_REFRESH_DATA"$.
|
||||
* Refreshed the $LK,"PCI Device File",A="FI:::/Misc/PCIDevices.TXT"$.
|
||||
|
||||
$IV,1$----12/27/14 18:59:16----$IV,0$
|
||||
* Improved $LK,"DCCaptureScreen",A="MN:DCCaptureScreen"$().
|
||||
|
||||
$IV,1$----12/26/14 22:13:51----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/RawHide.CPP"$.
|
||||
|
||||
$IV,1$----12/25/14 21:08:51----$IV,0$
|
||||
* Improved $LK,"::/Demo/Games/BlackDiamond.CPP"$.
|
||||
* Improved $LK,"::/Demo/Games/DunGen.CPP"$.
|
||||
|
||||
$IV,1$----12/23/14 15:00:28----$IV,0$
|
||||
* Changed from many $FG,2$/Accts$FG$ subdirectories to just one directory named $FG,2$/Home$FG$ with default files in root.
|
||||
|
||||
$IV,1$----12/20/14 21:43:31----$IV,0$
|
||||
* Changed $FG,4$text.font$FG$ from $FG,2$U8 *$FG$ to $FG,2$U64 *$FG$.
|
||||
|
||||
$IV,1$----12/18/14 18:49:46----$IV,0$
|
||||
* Renamed all the files.
|
||||
|
||||
$IV,1$----12/18/14 09:40:06----$IV,0$
|
||||
* I got rid of my Logo. I like no logo.
|
||||
* I got rid of my company name, Trivial Solutions. Instead of "TS", I use "TOS" for Temple Operating System.
|
||||
* I got rid of all my rants on my website. Now, just one rant.
|
||||
* I changed from having "TAD" as one of many employees to no different employees.
|
||||
|
||||
$IV,1$----12/15/14 10:05:06----$IV,0$
|
||||
* Added $FG,4$$TX,"http://www.reddit/r/TempleOS_Official",HTML="http://www.reddit.com/r/TempleOS_Official"$$FG$.
|
||||
|
||||
$IV,1$----12/15/14 07:23:32----$IV,0$
|
||||
* $BK,1$TempleOS version 2.19 Released$BK,0$
|
||||
* $LK,"R",A="MN:R"$("SliderCtrl","CtrlSlider");
|
||||
* $LK,"R",A="MN:R"$("Set...","...Set");
|
||||
* Changed $LK,"DrvMapBlkClean",A="MN:DrvMapBlkClean"$() and $LK,"DrvMapBlkAlloc",A="MN:DrvMapBlkAlloc"$().
|
||||
|
||||
$IV,1$----12/15/14 02:50:32----$IV,0$
|
||||
* Changed AutoComplete colors.
|
||||
* Got rid of splash screen.
|
||||
* Added AutoComplete $LK,"StandBy",A="FI:::/Doc/StandBy.TXT"$.
|
||||
|
||||
$IV,1$----12/14/14 12:54:56----$IV,0$
|
||||
* Fixed new bug in random routines.
|
||||
|
||||
$IV,1$----12/12/14 08:58:10----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("DocGRAFile","DocGRA");
|
||||
|
||||
$IV,1$----12/04/14 11:00:43----$IV,0$
|
||||
* Improved $FG,4$lx->max_line$FG$.
|
||||
|
||||
$IV,1$----12/04/14 05:02:20----$IV,0$
|
||||
* Cleaned-up mem code.
|
||||
* $LK,"R",A="MN:R"$("Allocate","Alloc");
|
||||
|
||||
$IV,1$----12/03/14 10:05:36----$IV,0$
|
||||
* Cleaned-up compiler conditionals.
|
||||
* Got rid of $FG,4$IC_BR_LBTS$FG$ family in the compiler.
|
||||
|
||||
$IV,1$----11/27/14 18:48:07----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("Randomize","Seed");
|
||||
* Got rid of $FG,4$Rand2$FG$(). Use $LK,"Seed",A="MN:Seed"$() with non-zero and timer-based will be turned-off.
|
||||
|
||||
$IV,1$----11/21/14 08:25:38----$IV,0$
|
||||
* $BK,1$TempleOS version 2.18 Released$BK,0$
|
||||
* Improved $LK,"::/Demo/Games/TreeCheckers.CPP"$.
|
||||
|
||||
$IV,1$----11/19/14 22:25:28----$IV,0$
|
||||
* Fixed reindent bug.
|
||||
* $LK,"R",A="MN:R"$("$FG,4$ST_BIBLE_FILE$FG$","$LK,"BIBLE_FILENAME",A="MN:BIBLE_FILENAME"$");
|
||||
* Fixed bug with $LK,"DOCG_BL_IV_UL",A="MN:DOCG_BL_IV_UL"$.
|
||||
|
||||
$IV,1$----11/17/14 23:34:09----$IV,0$
|
||||
* I got rid of octal and binary char specification in strings.
|
||||
* Got rid of octal all-together.
|
||||
|
||||
$IV,1$----11/09/14 21:37:49----$IV,0$
|
||||
* Changed default plug-in for $FG,2$<ALT-F4>$FG$ and $FG,2$<ALT-SHIFT-F4>$FG$.
|
||||
* Added $FG,2$<ALT-F8>$FG$ and $FG,2$<ALT-SHIFT-F8>$FG$ on my personal version $LK,"::/Demo/AcctExample/AdamKeyPlugIns.CPP"$.
|
||||
|
||||
$IV,1$----11/07/14 08:02:04----$IV,0$
|
||||
* Improved $LK,"Ui",A="MN:Ui"$().
|
||||
|
||||
$IV,1$----10/29/14 12:06:42----$IV,0$
|
||||
* Changed $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ from relative cluster num to absolute blk num.
|
||||
* Improved compiler. $LK,"IC_RETURN_VAL",A="MN:IC_RETURN_VAL"$, $LK,"IC_END_EXP",A="MN:IC_END_EXP"$, $LK,"ICF_NO_DEPEND_RESULT",A="MN:ICF_NO_DEPEND_RESULT"$
|
||||
* $LK,"R",A="MN:R"$("Partition","Drive");
|
||||
|
||||
$IV,1$----10/27/14 05:06:15----$IV,0$
|
||||
* Overhauled $LK,"KbdBuildSC",A="MN:KbdBuildSC"$().
|
||||
|
||||
$IV,1$----10/19/14 11:42:47----$IV,0$
|
||||
* Updated $LK,"::/Doc/Charter.TXT"$.
|
||||
* Improved $LK,"::/Demo/Games/FlatTops.CPP"$.
|
||||
|
||||
$IV,1$----10/09/14 21:04:25----$IV,0$
|
||||
* Added $FG,2$dither_probability$FG$ to $LK,"DocBMP",A="MN:DocBMP"$() and $LK,"BMPRead",A="MN:BMPRead"$().
|
||||
|
||||
$IV,1$----09/27/14 22:11:45----$IV,0$
|
||||
* $BK,1$TempleOS version 2.17 Released$BK,0$
|
||||
* Changed compression format. Uncompress with the old version by $LK,"Move",A="MN:Move"$ing() to a name without $FG,2$.Z$FG$. Then, recompress with the new version of $FG,2$TempleOS$FG$.
|
||||
* Fixed rare bug in compression.
|
||||
* $LK,"R",A="MN:R"$("BMPFile","BMP");
|
||||
* Added $FG,2$include_zoom$FG$ arg to $LK,"DCCaptureScreen",A="MN:DCCaptureScreen"$(), $LK,"GRACaptureScreen",A="MN:GRACaptureScreen"$() and $LK,"BMPCaptureScreen",A="MN:BMPCaptureScreen"$().
|
||||
* Added eye-dropper to sprite $FG,2$<CTRL-r>$FG$ editor. Press $FG,2$'c'$FG$.
|
||||
* Improved $LK,"::/Demo/Games/Wenceslas.CPP"$, made it 3D.
|
||||
* Added pebbles to $LK,"::/Apps/AfterEgypt/HorebBMP.CPP"$ and $LK,"::/Apps/AfterEgypt/HorebBSP.CPP"$.
|
||||
|
||||
$IV,1$----09/21/14 13:07:09----$IV,0$
|
||||
* Changed "bit" to "pixel" in $LK,"::/Adam/Gr/GrBitMap.CPP"$.
|
||||
|
||||
$IV,1$----09/19/14 09:43:29----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("SpawnUser","User");
|
||||
* $LK,"R",A="MN:R"$("SrvUser","PopUpPrint");
|
||||
* Added $LK,"::/Doc/TaskSrv.TXT"$.
|
||||
|
||||
$IV,1$----09/17/14 19:51:53----$IV,0$
|
||||
* Fixed bug in kernel usage of $LK,"FileRead",A="MN:FileRead"$() and $LK,"FileWrite",A="MN:FileWrite"$().
|
||||
|
||||
$IV,1$----09/17/14 08:03:33----$IV,0$
|
||||
* Cleaned-up $LK,"::/Adam/AUtils.CPP"$.
|
||||
|
||||
$IV,1$----09/15/14 19:49:17----$IV,0$
|
||||
* Made assembler size for PUSH IMM into a I32 if it is a label, so you don't have to specify size.
|
||||
|
||||
$IV,1$----09/15/14 15:36:49----$IV,0$
|
||||
* $BK,1$TempleOS version 2.16 Released$BK,0$
|
||||
* Got rid of auto-fps adjust. More stable.
|
||||
|
||||
$IV,1$----09/11/14 11:58:40----$IV,0$
|
||||
* Overhauled $LK,"compiler init tables",A="MN:intermediate_code_table"$.
|
||||
|
||||
$IV,1$----08/29/14 15:45:55----$IV,0$
|
||||
* $BK,1$TempleOS version 2.15 Released$BK,0$
|
||||
|
||||
$IV,1$----08/24/14 22:23:25----$IV,0$
|
||||
* Added $LK,"CSysLimitBase",A="MN:CSysLimitBase"$.
|
||||
* $LK,"R",A="MN:R"$("SYS_BOOT_CODE","SYS_BOOT_SRC");
|
||||
* $LK,"R",A="MN:R"$("SoftBoot","RAMReboot");
|
||||
* Replaced $FG,4$SYS_GR_MODE$FG$ with $LK,"RLF_VGA",A="MN:RLF_VGA"$.
|
||||
* Improved $LK,"RAMReboot",A="MN:RAMReboot"$().
|
||||
|
||||
$IV,1$----08/23/14 07:50:44----$IV,0$
|
||||
* Changed key cmd $FG,2$<ALT-w>$FG$ to $FG,2$<Alt-a>$FG$.
|
||||
|
||||
$IV,1$----08/22/14 12:11:29----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("VGA_SC_INDEX","VGAP_INDEX");
|
||||
|
||||
$IV,1$----08/18/14 16:25:32----$IV,0$
|
||||
* $BK,1$TempleOS version 2.14 Released$BK,0$
|
||||
|
||||
$IV,1$----08/11/14 16:13:49----$IV,0$
|
||||
* $LK,"R",A="MN:R"$("BOOT_HIGH_LOC","BOOT_HIGH_LOC_CD");
|
||||
|
||||
$IV,1$----08/10/14 11:54:16----$IV,0$
|
||||
* Added $LK,"GrRotNormSqr65536",A="MN:GrRotNormSqr65536"$().
|
||||
* Improved $LK,"::/Demo/Games/BugBird.CPP"$.
|
||||
|
||||
$IV,1$----08/08/14 18:02:04----$IV,0$
|
||||
* Added ::/Apps/Psalmody/Examples/lob.CPP"
|
||||
|
||||
$IV,1$----08/08/14 11:03:13----$IV,0$
|
||||
* Improved $LK,"::/Demo/Snd/WaterFowl.CPP"$.
|
||||
* Added 24-Bit to $LK,"BMPRead",A="MN:BMPRead"$().
|
||||
|
||||
$IV,1$----08/06/14 05:14:23----$IV,0$
|
||||
* Fixed compiler bug in "yoda conditionals".
|
||||
* Optimized compiler on float comparisons to zero.
|
||||
|
||||
$IV,1$----08/05/14 14:12:02----$IV,0$
|
||||
* $BK,1$TempleOS version 2.13 Released$BK,0$
|
||||
|
||||
$IV,1$----08/04/14 05:06:02----$IV,0$
|
||||
* Got rid of markov matrix in AutoComplete. Renamed "WordStat", "AutoComplete".
|
||||
|
||||
$IV,1$----07/30/14 20:27:02----$IV,0$
|
||||
* Added symmetry to $LK,"GodDoodleSprite",A="MN:GodDoodleSprite"$().
|
||||
|
||||
$IV,1$----07/26/14 11:19:00----$IV,0$
|
||||
* Got rid of "raw" arg on disk I/O routines for uncompressed data.
|
||||
|
||||
$IV,1$----07/22/14 08:31:58----$IV,0$
|
||||
* $BK,1$TempleOS version 2.12 Released$BK,0$
|
||||
* Fixed bug in assembler in
|
||||
MOV R8-R15,UIMM32
|
||||
|
||||
$IV,1$----07/12/14 02:06:10----$IV,0$
|
||||
* Fixed bug clicking on icon.
|
||||
|
||||
$IV,1$----07/08/14 04:33:20----$IV,0$
|
||||
* I changed $LK,"GodDoodleSprite",A="MN:GodDoodleSprite"$().
|
||||
+7
-5
@@ -1,6 +1,6 @@
|
||||
$FG,5$$WW,1$$TX+CX,"TempleOS Charter"$$FG$
|
||||
|
||||
Why did they make Solomon's Temple? It was a direction to look, to focus on, a special place for meditation, to do offerings, a community center, a home to God's beauty, that encouraged love of God. People cherished God's temple, beautifying it with gold and all fine things to show love of God, as great cathedrals were decorated with astounding, awe-striking intricate art and gargoyles, incredible devotion to God with hours of effort, toiling and slaving-away for the glory of God, for families with children to see stained-glass windows and tomes with ridiculously elaborate calligraphy to show love of God from a people who did little else but show love toward God, lived in dire conditions by today's standards, yet with so much difficulty scraping-by, found the time to devote even all free-time to God!
|
||||
Why did they make Solomon's Temple? It was a direction to look, to focus on, a special place for meditation, to do offerings, a community center, a home to God's beauty, that encouraged love of God. People cherished God's temple, beautifying it with gold and all fine things to show love of God, as great $TX,"cathedrals",HTML="https://www.youtube.com/watch?v=xkfmK-CLvcc"$ were decorated with astounding, awe-striking intricate art and gargoyles, incredible devotion to God with hours of effort, toiling and slaving-away for the glory of God, for families with children to see $TX,"stained-glass",HTML="https://www.youtube.com/watch?v=t8g1e-JLrhM"$ windows and tomes with ridiculously elaborate $TX,"calligraphy",HTML="https://www.youtube.com/watch?v=Oa8gMb0YC68"$ to show love of God, from a people who did little else but show love toward God, lived in dire conditions by today's standards, yet with so much difficulty scraping-by, found the time to devote $TX,"even all free-time",HTML="https://www.youtube.com/watch?v=tZw5V4XuUIo"$ to God!
|
||||
|
||||
|
||||
1 Kings 6:21 (King James)
|
||||
@@ -21,7 +21,7 @@ $LM,0$
|
||||
|
||||
* 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.
|
||||
* God said to use a single audio voice -- a single frequency with waveforms and, maybe, amplitude envelope.
|
||||
|
||||
* 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,17 +31,19 @@ $LM,0$
|
||||
|
||||
* 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. $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. Currently, there are $TX,"79,959",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code.
|
||||
* 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. $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. Currently, there are $TX,"80,860",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code.
|
||||
|
||||
* 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.
|
||||
|
||||
* One platform. $FG,4$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ PC compatibles. Desk-tops are all we design for, but lap-tops can tag-along.
|
||||
* One platform. $FG,4$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$ PC compatibles. Desk-tops are all we design for, but laptops can tag along.
|
||||
|
||||
* 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.
|
||||
|
||||
* $FG,2$Ring-0-only$FG$. Everything runs in kernel mode, including user applications.
|
||||
|
||||
* Full access to everything. All memory, I/O ports, instructions, and similar things must never be off-limits. All functions, variables and class members will be accessible. There are no C++ $FG,2$public$FG$/$FG,2$private$FG$ protections and all functions, even secondary ones in the kernel, can be called.
|
||||
* Full access to everything. All memory, I/O ports, instructions, and similar things must never be off limits. All functions, variables and class members will be accessible. There are no C++ $FG,2$public$FG$/$FG,2$private$FG$ protections and all functions, even secondary ones in the kernel, can be called.
|
||||
|
||||
* $FG,2$Single-address-map$FG$ as though paging is not used. Long mode requires paging, however, so the nearest thing is keeping all memory $FG,2$identity-mapped$FG$.
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ $FG,2$#help_index$FG$, $FG,2$#help_file$FG$ See $LK,"Help System",A="FI:::/Doc/H
|
||||
$HL,1$$WW,0$
|
||||
#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
|
||||
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn-&Fs->last_lex->lfns-1);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->cur_lfn->full_name);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->depth);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->lex_include_stk->full_name);}
|
||||
#define __DIR__ #exe{StreamDir;}
|
||||
$HL,0$$WW,1$
|
||||
See $LK,"::/Demo/Directives.CPP"$, $LK,"Scoping and Linkages",A="FI:::/Doc/ImportExports.TXT"$, $LK,"preprocessor",A="FF:::/Compiler/Lex.CPP,KW_DEFINE"$ and $LK,"Compiler Options",A="FI:::/Doc/Options.TXT"$.
|
||||
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$
|
||||
|
||||
* I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"121,138",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"11.0",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders.
|
||||
* I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"120,912",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"11.6",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders. See $LK,"::/Doc/Credits.TXT.Z"$.
|
||||
|
||||
* TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration.
|
||||
* TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration. See $LK,"::/Doc/Credits.TXT.Z"$.
|
||||
|
||||
* TempleOS is 100% independent -- it does not access the files of your primary operating system. It will work as the only operating system on your computer.
|
||||
|
||||
* TempleOS is 100% written from scratch. 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. (I probably need to repeat that a few times.)
|
||||
* TempleOS is 100% written from scratch. 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. (I probably need to repeat that a few times.) See $LK,"::/Doc/Credits.TXT.Z"$.
|
||||
|
||||
* TempleOS is an operating system, not a browser. The cmd line has active links. They link to local files.
|
||||
|
||||
|
||||
+4
-2
@@ -12,7 +12,7 @@ $WW,1$$FG,5$$TX+CX,"Credits"$$FG$
|
||||
|
||||
6) The random number generator is from the book, $UL,1$Numeric Recipies in C$UL,0$.
|
||||
|
||||
7) 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.
|
||||
7) 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.
|
||||
|
||||
8) The $FG,2$FAT32$FG$ file system is owned by MicroSoft.
|
||||
|
||||
@@ -40,7 +40,9 @@ $WW,1$$FG,5$$TX+CX,"Credits"$$FG$
|
||||
|
||||
20) Bill Gates inspired me to add comments to my $LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$.
|
||||
|
||||
In short, I wrote every one of the $TX,"120,532",D="DD_TEMPLEOS_LOC"$ lines myself, no $FG,2$GPL$FG$ code, no linkage or dependence on other code. Anyone who says otherwise is being an ass.
|
||||
21) I hired and artist, Cody Rigby, for $$3,000 worth of pixel art.
|
||||
|
||||
22) Erik van der Karbargenbok made $LK,"TempleBot",A="PI:::/Linux/TempleBot",HTML="http://www.templeos.org/Wb/Home/Wb2/Files/Bin/TempleBot.html"$.
|
||||
$FG,8$
|
||||
* "MSDOS", "Windows", "MovieMaker" "MS Paint" and "FAT32" are trademarks of MicroSoft Corp.
|
||||
* "SiteBuilder" is a trademark of Yahoo! Inc.
|
||||
|
||||
+8
-1
@@ -8,6 +8,13 @@ There are a few places where I cut corners in the interest of not junking-up cod
|
||||
|
||||
* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.TXT"$ names to remove the ambiguity between instructions 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/Boot/BootCD.CPP"$.
|
||||
|
||||
* There are no file-sharing locks of any kind. You're on your own.
|
||||
* There are no user-controlled file-sharing locks. However, the drive and file system have locks and concurrent operations should be fine.
|
||||
|
||||
* A hidden window is never refreshed. Certain tasks are never done, therefore. During refresh, the entry count limit of the document buffer is, normally, checked and enforced. If you print to the command-line in a task whose window is covered, no limit on buffer exists and it will alloc memory for the document buffer until the system runs out of memory and crashes.
|
||||
|
||||
* 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,"GrEllipse3",A="MN:GrEllipse3"$() is broken on transformations.
|
||||
|
||||
+3
-1
@@ -1,6 +1,8 @@
|
||||
$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"$.
|
||||
|
||||
Each task can load it's 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.
|
||||
If you have an $FG,2$@$FG$ as the first char of a define list entry, it is an alias for the previous 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"$.
|
||||
|
||||
|
||||
+36
-25
@@ -1,53 +1,59 @@
|
||||
$WW,1$$FG,5$$TX+CX,"Demands"$$FG$
|
||||
|
||||
When God publically claims this operating system as His temple, here's what I want:
|
||||
|
||||
I, Terry Davis, am High Priest of God's official temple, TempleOS. TempleOS is an operating system for PC desktops that dual boots along-side Windows or Linux. I am in charge of the core 100,000 lines of TempleOS code and I do continual offerings to keep God entertained. I have divine authority to command companies in the computer industry to do anything to make God's temple more beautiful or perfect. I have authority similar to the Americans with Disability Act -- I make commands with God signing-off by creating miraculous authenticated oracles.
|
||||
|
||||
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/EalSFnq9GsY\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/EalSFnq9GsY\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
|
||||
|
||||
|
||||
* VMware to again support PC Speaker and provide emulation if no PC Speaker is present.
|
||||
* VMware must again support PC Speaker and provide emulation if no PC Speaker is present.
|
||||
|
||||
* Windows, Linux and VMware to 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 bad, just as more than one driver for the same type of device is bad.
|
||||
* VMware must again support full screen 640x480 16 color mode.
|
||||
|
||||
* 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 bad, just as more than one driver for the same type of device is bad.
|
||||
|
||||
$LK,"::/Kernel/Dsk/FileSysRedSea.CPP"$
|
||||
$LK,"::/Kernel/Dsk/FileSysFAT.CPP"$ :965
|
||||
$LK,"::/Kernel/Dsk/FileSysISO.CPP"$ :284
|
||||
$LK,"::/Adam/Boot/DskCDDVD.CPP"$ :536
|
||||
$LK,"RClustersBlks",A="MN:RClustersBlks"$()
|
||||
$LK,"::/Kernel/Dsk/FileSysFAT.CPP"$ :965 lines for FAT32 gets eliminated.
|
||||
$LK,"::/Kernel/Dsk/FileSysISO.CPP"$ :284 lines for ISO9660 gets eliminated.
|
||||
$LK,"::/Adam/Boot/DskISOFile.CPP"$ :536 lines for making ISO files gets reduced.
|
||||
$LK,"::/Kernel/Dsk/DskCluster.CPP.Z"$ :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 $FG,2$VMware$FG$ is like the difference between looking in a telescope eye piece and some link to a photo on the Internet. God said the C64 generation owned ancestral lands and $FG,2$VMware$FG$ is like being moved on a reservation. It will not stand.
|
||||
* 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 $FG,2$VMware$FG$ is like the difference between looking in a telescope eye piece or not. God said the C64 generation owned ancestral lands and $FG,2$VMware$FG$ is like being moved onto a reservation, but in this case it will not stand.
|
||||
|
||||
* PC hardware manufacturers: ATA/ATAPI PIO must work. In fact, put them at standard IDE port addresses. Hard disk should be primary master 1F0/3F6. CDROM/DVD should be secondary master 170/376. See what you can do to make flash memory sticks with ATA/ATAPI.
|
||||
$LK,"/Kernel/Dsk/DskATAId.CPP",A="FI:::/Kernel/Dsk/DskATAId.CPP"$ :280 lines to figure-out I/O ports
|
||||
$LK,"/Kernel/BIOS32.CPP",A="FI:::/Kernel/BIOS32.CPP"$ :290
|
||||
* PC hardware manufacturers? ATA/ATAPI PIO must work. In fact, put them at standard IDE port addresses. Hard disk should be primary master 1F0/3F6. CDROM/DVD should be secondary master 170/376. See what you can do to make flash memory sticks with ATA/ATAPI.
|
||||
$LK,"/Kernel/Dsk/DskATAId.CPP",A="FI:::/Kernel/Dsk/DskATAId.CPP"$ :280 lines to figure-out I/O ports is gone.
|
||||
$LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could eliminate,but people can play with.
|
||||
|
||||
* PS/2 emulated keyboard and mouse must work. The BIOS must enable these.
|
||||
|
||||
* VMware must allow ATAPI interface to real CD/DVD hardware.
|
||||
* VMware must allow ATAPI interface to be routed to real CD/DVD hardware.
|
||||
|
||||
* Perhaps, VMware+Intel can enable faster-than-standard x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't bad. $LK,"ATAGetResult",A="MN:ATAGetResult"$().
|
||||
* Perhaps, VMware+Intel can enable faster x86 IN/OUT instruction timing for ATA/ATAPI PIO, so bandwidth isn't bad. $LK,"ATAGetResult",A="MN:ATAGetResult"$().
|
||||
|
||||
* Since I practically don't use paging, perhaps, Intel could add optimizations to long (64-bit) mode for no paging.
|
||||
* Perhaps, Intel can make a fast software interrupt, the same as a CALL REL32?
|
||||
|
||||
* Computers should have a RESET switch and a fast boot option, skipping diagnostics. What the heck, replace UEFI with TempleOS. Poetic justice.
|
||||
* Since I don't use paging (for anything), Intel should have an option for no-paging long mode, and optimize it.
|
||||
$LK,"::/Kernel/MemA.CPP.Z"$ :153 lines to identity-map gets eliminated.
|
||||
|
||||
* VMware and others should list TempleOS as an official 64-bit operating system.
|
||||
* Desktop computers must have a RESET switch and a fast reboot option, skipping diagnostics. Build UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM at the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle. A new ROM version is released every seven years.
|
||||
|
||||
* Windows and Linux must support TempleOS $FG,2$.GRA$FG$ graphics files. $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$ are much cleaner than $FG,2$.BMP$FG$ files.
|
||||
* VMware and others must list TempleOS as an official 64-bit operating system.
|
||||
|
||||
* I want a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.CPP"$.
|
||||
* Windows Paint and Linux Gimp must support TempleOS $FG,2$.GRA$FG$ graphics files. $LK,"GRA Files",A="FI:::/Doc/GRAFiles.TXT.Z"$ are much cleaner than $FG,2$$TX,"BMP files",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$$FG$.
|
||||
|
||||
* We want the ultimate Bible search engine.
|
||||
* We must have a nice dictionary. Someone needs to do a $LK,"Spell Checker",A="FI:::/Demo/SuggestSpelling.CPP"$.
|
||||
|
||||
* I would like the Intel architecture manuals in $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$ TXT format so we can put links in the code.
|
||||
* We must have the ultimate Bible search engine.
|
||||
|
||||
* We want serial ports with software interface more like old style serial ports, but hardware and speed of USB3. They should have big TX and RX FIFOs and allow flow control to jump the queue. We do not want end-point shit -- just put lots of ports on the PC. (I am just interested in desk-tops.) We need two baud rates, fast and slow. Use PIC IRQ3 and IRQ4 (with big FIFOs we could do without IRQs.) We want two joysticks, easy to set-up. We want it to be easy to connect a microcontroller for general purpose communication.
|
||||
* Once every 49 years is a jubile year and all hardware gets thrown-out and upgraded to become perfect. The first jubile year is in 2024. It works the same as how broadcast TV got upgraded. God still wants 640x480 16 color, but make it a linear frame buffer one-byte-per-pixel and only 16 color.
|
||||
|
||||
* Once in a blue moon, perhaps 49 year jubilee, the hardware gets upgraded and perfected, the same way broadcast TV get upgraded. God still wants 640x480 16 color.
|
||||
* TempleOS only uses x86 I/O ports for hardware. (It also uses VGA memory.) The industry has matured and we can, now, allocate I/O ports in a beautiful, consecutive, perfect pattern for all the devices.
|
||||
|
||||
* The year, 2024, is the first jubile year. We want 8-channel, modern-speed, OCTART serial ports, with a simple software interface, more like old-style RS232 serial ports, to replace USB. It should have big TX and RX FIFOs and allow flow control to jump the queue. There will be no USB end-point nonsense -- just put 8 ports on the PC. (I am just interested in desktops.) We want keyboards, mice and joysticks to have a single, simple, uniform ASCII text packet command. Hyperterm can be used to easily debug all devices. We want to be able to connect microcontrollers for simple, general purpose send-byte/receive-byte communication. You will buy a PCI card if you need legacy USB or more ports.
|
||||
|
||||
|
||||
Device Simple Hardware Interface Complicate Interface
|
||||
As it stands, there is a simple and deluxe hardware mode...
|
||||
|
||||
Device Simple Hardware Interface Deluxe Interface
|
||||
--------------- ------------------------------- -----------------------------
|
||||
1040-EZ Tax Form 1040 Regular
|
||||
Video VGA 640x480 16 Color 20 Differnet GPUs
|
||||
@@ -57,8 +63,13 @@ CDROM ATAPI Port I/O PCI AHCI SATA
|
||||
Keyboard/Mouse PS/2 Port I/O USB
|
||||
|
||||
|
||||
During the 49 years jubilee, we do a perfect version of hardware with advances in both simple and complicated interfaces. ATAPI/ATA should be merged and made blemish-free. We want flash memory sticks to interface like hard drives. Design it like the 1040EZ tax form. You do not add extra boxes to get your jollies.
|
||||
During the 49 years jubile, we do a perfect version of hardware with advances in both the simple and deluxe interfaces. ATAPI/ATA, SSD and NV memory should be merged and made blemish-free. For the simple interface, we want just block-read, block-write and get capacity. We want flash memory sticks to interface like hard drives. When you design the simple mode, imagine you are creating the 1040EZ tax form -- do not just add extra boxes.
|
||||
|
||||
A new TempleOS ROM is released every seven years. It gets burned into all new x86 chips in the Intel factory, for tamper-proof certainty in oracles and just because it's God's official temple and deserves the honor! (The reset switch should trigger booting the ROM TempleOS.) Development will take place between releases, obviously. With the limit of 100,000 lines of code, it is supposed to crystalize into a perfected, unchanging diamond that lasts over centuries. I want an $TX,"ACM",HTML="http://www.acm.org"$ committee to work with me on this ROM until 2017, the year the first official version is released. We allow boot-legs to freely circulate. The users can copy ROM and RAM and play with it, or boot a hard disk versions.
|
||||
|
||||
In the meantime, BIOS makers must take the TempleOS code and modify it for their existing customers, as a product recall. A PCI hard drive driver must be written if the BIOS you created does not work with the standard TempleOS ATA/ATAPI port IO. You must also bypass SecureBoot and make sure the keyboard and mouse work if you do not support legacy PS/2, by writing a USB driver.
|
||||
|
||||
I want to offer "Knuth-bucks" for changes that reduce lines of code (other than trivial reformatting). I want to offer Knuth bucks for pointing-out spelling and other imperfections. Some imperfections are by design, however. The original Bible generously mentioned even temple personel who were porters, so we can generously list $LK,"credits",A="FI:::/Doc/Credits.TXT.Z"$.
|
||||
$FG,8$
|
||||
* "VMware" is a trademark of VMware, Inc.
|
||||
* "Linux" is probably a trademark owned by Linus Torvalds.
|
||||
|
||||
+6
-2
@@ -4,6 +4,8 @@ $WW,1$These are arranged in increasing order of difficulty, more or less. This
|
||||
|
||||
$FG,2$<SPACE>$FG$ to edit a file and $FG,2$F5$FG$ to run it.
|
||||
|
||||
$LK,"::/Doc/HelloWorld.TXT.Z"$
|
||||
|
||||
$WW,0$$TR,"Games: Beginner"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/NetOfDots.CPP"$
|
||||
$LK,"::/Demo/Graphics/InputPointer.CPP"$
|
||||
@@ -32,7 +34,7 @@ $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/CaptureScreen.CPP"$
|
||||
$LK,"::/Demo/Graphics/ScreenCapture.CPP"$
|
||||
$LK,"::/Demo/Graphics/EdSprite.CPP"$
|
||||
$LK,"::/Demo/PullDownMenu.CPP"$
|
||||
$MA-X+PU,"::/Demo/Games/Stadium",LM="Cd(\"::/Demo/Games/Stadium\");Dir;View;\n"$
|
||||
@@ -45,7 +47,6 @@ $LK,"::/Demo/Snd/MorseCode.CPP"$
|
||||
$LK,"::/Demo/Graphics/Lattice.CPP"$
|
||||
$LK,"::/Demo/Graphics/Collision.CPP"$
|
||||
$LK,"::/Demo/Games/BlackDiamond.CPP"$
|
||||
$LK,"::/Demo/Games/Wenceslas.CPP"$
|
||||
$ID,-2$$TR,"Games: Intermediate"$
|
||||
$ID,2$$LK,"::/Demo/Graphics/Box.CPP"$
|
||||
$LK,"::/Demo/Graphics/Pick.CPP"$
|
||||
@@ -55,6 +56,7 @@ $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/CharGraphics.CPP"$
|
||||
@@ -70,6 +72,7 @@ $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.Z"$
|
||||
$LK,"::/Demo/Games/TreeCheckers.CPP"$
|
||||
$LK,"::/Demo/MultiCore/Palindrome.CPP"$
|
||||
$LK,"::/Demo/MultiCore/MPAdd.CPP"$
|
||||
@@ -154,6 +157,7 @@ $LK,"::/Demo/CompileDemo.CPP"$
|
||||
$LK,"::/Demo/Prompt.CPP"$
|
||||
$LK,"::/Demo/ClassMeta.CPP"$
|
||||
$LK,"::/Demo/LastClass.CPP"$
|
||||
$LK,"::/Demo/DolDoc/NumBible.CPP.Z"$
|
||||
$LK,"::/Demo/DolDoc/Form.CPP"$
|
||||
$LK,"::/Demo/DolDoc/MenuButton.CPP"$
|
||||
$LK,"::/Demo/DolDoc/MenuSprite.CPP"$
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
$HL,1$$WW,0$#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
|
||||
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->cur_lfn-&Fs->last_lex->lfns-1);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->cur_lfn->full_name);}
|
||||
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->line_num);}
|
||||
#define __DEPTH__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->depth);}
|
||||
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->lex_include_stk->full_name);}
|
||||
#define __DIR__ #exe{StreamDir;}
|
||||
|
||||
See $LK,"::/Demo/Directives.CPP"$.$HL,0$$WW,1$
|
||||
@@ -1,5 +1,3 @@
|
||||
$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.
|
||||
|
||||
There is one $LK,"CDoc",A="MN:CDoc"$ for the task's border: $FG,2$Fs->border_doc$FG$. There is a pair for the task's client area: $FG,2$Fs->put_doc$FG$ and $FG,2$Fs->display_doc$FG$. You can, optionally, do double buffering, otherwise $FG,2$Fs->put_doc$FG$ is the same as $FG,2$Fs->display_doc$FG$. See $LK,"::/Demo/Spy.CPP"$.
|
||||
+21
-19
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"DolDoc Overview"$$FG$
|
||||
|
||||
DolDoc is a propriatary TempleOS document type supported by $LK,"DolDoc Routines",A="HI:DolDoc"$. In a document, commands are bracketed with '$FG,2$$$$FG$'s. Use $FG,2$<CTRL-l>$FG$ to experiment inserting a command. Then, use $FG,2$<CTRL-t>$FG$ to toggle to plain text to see it.
|
||||
DolDoc is a TempleOS document type supported by $LK,"DolDoc Routines",A="HI:DolDoc"$. In a document, commands are bracketed with '$FG,2$$$$FG$'s. Use $FG,2$<CTRL-l>$FG$ to experiment inserting a command. Then, use $FG,2$<CTRL-t>$FG$ to toggle to plain text to see it.
|
||||
|
||||
Here is the grammar:
|
||||
|
||||
@@ -8,7 +8,7 @@ Here is the grammar:
|
||||
|
||||
<FlagList> := $FG,2$+$FG$|$FG,2$-$FG$ <$LK,"FlagCode",A="FF:::/Adam/DolDoc/DocInit.CPP,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> | <$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$>$FG,2$=$FG$<ArgExpression>
|
||||
<ArgList> := <$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.CPP,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.
|
||||
@@ -18,9 +18,9 @@ See $LK,"::/Doc/Widget.TXT"$ and $LK,"::/Demo/DolDoc/DemoDoc.TXT"$.
|
||||
<$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"$().
|
||||
$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 Carriage Return (New Line)"$
|
||||
$ID,-2$$TR,"CR Hard New Line"$
|
||||
$ID,2$New lines are normally not bracketed with '$FG,2$$$$FG$'.
|
||||
$ID,-2$$TR,"SR Soft Carriage Return (New Line)"$
|
||||
$ID,-2$$TR,"SR Soft New Line"$
|
||||
$ID,2$Word wrap uses temporary soft new lines. Users never place soft new lines.
|
||||
$ID,-2$$TR,"CU Cursor pos"$
|
||||
$ID,2$The cursor pos is stored as a ASCII#5 character and is not bracketed with '$FG,2$$$$FG$'. Users normally do not enter cursor pos.
|
||||
@@ -30,14 +30,6 @@ $ID,-2$$TR,"CL Clear"$
|
||||
$ID,2$Clear all previous entries except ones with hold($FG,2$+H$FG$) flags. You might want $FG,2$+H$FG$ on word wrap entries. Alternatively, you can use $LK,"DocClear",A="MN:DocClear"$().
|
||||
$ID,-2$$TR,"PB Page Break"$
|
||||
$ID,2$Page break.
|
||||
$ID,-2$$TR,"DA Data"$
|
||||
$ID,2$Used for forms that prompt for data. Use $FG,2$<CTRL-l>$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocFormDo",A="MN:DocFormDo"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
|
||||
The default data-type for the $FG,2$$$DA...$$$FG$ command is $FG,2$I64$FG$. You can change it to $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 format string.
|
||||
|
||||
If there is a ':', 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"$.
|
||||
$ID,-2$$TR,"PL Page Length"$
|
||||
$ID,2$Page length.
|
||||
$ID,-2$$TR,"LM Left Margin"$
|
||||
@@ -124,16 +116,28 @@ Examples: <CTRL-t> to see
|
||||
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/KEnd.CPP,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:0x10000"$.
|
||||
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.CPP"$.
|
||||
$ID,-2$$TR,"DA Data"$
|
||||
$ID,2$Used for forms that prompt for data. Use $FG,2$<CTRL-l>$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
|
||||
The default data-type for the $FG,2$$$DA...$$$FG$ command is $FG,2$I64$FG$. You can change it to $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 format string.
|
||||
|
||||
If there is a ':', 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"$.
|
||||
$ID,-2$$TR,"CB Check Box"$
|
||||
$ID,2$Used for forms. Use $FG,2$<CTRL-l>$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocFormDo",A="MN:DocFormDo"$(), $LK,"CEdFindText",A="MN:CEdFindText"$ and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
$ID,2$Used for forms. Use $FG,2$<CTRL-l>$FG$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$(), $LK,"CEdFindText",A="MN:CEdFindText"$ and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
|
||||
The default data-type for the $FG,2$$$CB...$$$FG$ command is $FG,2$I8$FG$ which is $FG,2$Bool$FG$. You can change it to $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$, or $FG,2$U64$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$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
|
||||
The default data-type for the $FG,2$$$LS...$$$FG$ command is $FG,2$I64$FG$. You can change it to $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$, or $FG,2$U64$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.
|
||||
|
||||
@@ -152,10 +156,6 @@ $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"$.
|
||||
$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$ as a resource editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$. If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr. See $LK,"DocFormDo",A="MN:DocFormDo"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
|
||||
|
||||
The default data-type for the $FG,2$$$LS...$$$FG$ command is $FG,2$I64$FG$. You can change it to $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$, or $FG,2$U64$FG$. See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
|
||||
$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.
|
||||
|
||||
@@ -180,7 +180,7 @@ $ID,2$The $LK,"ToHtml",A="MN:ToHtml"$() or $LK,"Doc2Html",A="MN:Doc2Html"$() rou
|
||||
$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,"DocInit",A="MN:DocInit"$().
|
||||
<$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.Z"$.
|
||||
$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"$
|
||||
@@ -205,6 +205,8 @@ $ID,-2$$TR,"+RD Refresh Data"$
|
||||
$ID,2$The Refresh Data flag on a $FG,2$DA$FG$ or a $FG,2$CB$FG$ makes the value on the screen updated continuously.
|
||||
$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$$TR,"+LC Left CallBack"$
|
||||
$ID,2$See $LK,"::/Demo/DolDoc/ClickCallBack.CPP"$.
|
||||
$ID,-2$$TR,"+RC Right CallBack"$
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
$WW,1$GRA graphics files are 8-bits-per-pixels but only 4-bits of color, with transparency and no palette. Compression is the standard TempleOS$FG$ LZW compression.
|
||||
$HL,1$
|
||||
#define DCF_COMPRESSED 1 //This is the only saved flag.
|
||||
#define DCF_PALETTE 2
|
||||
|
||||
#define TRANSPARENT 0xFF
|
||||
#define BLACK 0
|
||||
@@ -20,12 +21,24 @@ $HL,1$
|
||||
#define YELLOW 14
|
||||
#define WHITE 15
|
||||
|
||||
class CBGR48
|
||||
{
|
||||
U16 r,g,b,pad;
|
||||
};
|
||||
|
||||
CBGR48 gr_palette_std[16]={
|
||||
0x000000000000,0x00000000AAAA,0x0000AAAA0000,0x0000AAAAAAAA,
|
||||
0xAAAA00000000,0xAAAA0000AAAA,0xAAAA55550000,0xAAAAAAAAAAAA,
|
||||
0x555555555555,0x55555555FFFF,0x5555FFFF5555,0x5555FFFFFFFF,
|
||||
0xFFFF55555555,0xFFFF5555FFFF,0xFFFFFFFF5555,0xFFFFFFFFFFFF};
|
||||
|
||||
class GRAFile
|
||||
{
|
||||
I32 width;
|
||||
I32 width_internal; //Rounded-up to multiple of 8.
|
||||
I32 height;
|
||||
I32 flags; //DCF_COMPRESSED? See $LK,"::/Kernel/Compress.CPP"$.
|
||||
CBGR48 palette[16]; //Included if DCF_PALETTE.
|
||||
U8 body[];
|
||||
};$HL,0$
|
||||
|
||||
|
||||
+5
-1
@@ -16,6 +16,7 @@ $FG,2$Aux$FG$ Auxilliary
|
||||
$FG,2$BG$FG$ Backround
|
||||
$FG,2$Bin$FG$ Binary
|
||||
$FG,2$Blk$FG$ Block
|
||||
$FG,2$Bmp$FG$ BitMap
|
||||
$FG,2$BSP$FG$ Boot-strap Processor(CPU#0)
|
||||
$FG,2$Buf$FG$ Buffer
|
||||
$FG,2$Bwd$FG$ Backward
|
||||
@@ -91,6 +92,7 @@ $FG,2$Pix$FG$ Pixel
|
||||
$FG,2$$FG,2$Pkg$FG$ Package
|
||||
$FG,2$Poly$FG$ Polygon
|
||||
$FG,2$Pos$FG$ Position
|
||||
$FG,2$Pow$FG$ Power
|
||||
$FG,2$Prec$FG$ Precedence
|
||||
$FG,2$Pri$FG$ Primary
|
||||
$FG,2$Prod$FG$ Product, Production
|
||||
@@ -122,11 +124,13 @@ $FG,2$Std$FG$ Standard
|
||||
$FG,2$Stk$FG$ Stack
|
||||
$FG,2$Str$FG$ String
|
||||
$FG,2$Sym$FG$ Symbol
|
||||
$FG,2$Sync$FG$ Synchronization
|
||||
$FG,2$Sys$FG$ System
|
||||
$FG,2$Tbl$FG$ Table
|
||||
$FG,2$Term$FG$ Terminal
|
||||
$FG,2$Tri$FG$ Triangle
|
||||
$FG,2$Tx$FG$ Transmit
|
||||
$FG,2$Uasm$FG$ Unassemble
|
||||
$FG,2$UAsm$FG$ Unassemble
|
||||
$FG,2$Val$FG$ Value
|
||||
$FG,2$Var$FG$ Variable
|
||||
$FG,2$Vect$FG$ Vector
|
||||
|
||||
Binary file not shown.
+21
-3
@@ -14,6 +14,8 @@ $FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is
|
||||
|
||||
$FG,2$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot.
|
||||
|
||||
$FG,2$/0000Boot$FG$ Misc 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"$.
|
||||
|
||||
|
||||
|
||||
$FG,5$$TX+CX,"::/Home Files"$$FG$
|
||||
@@ -50,6 +52,8 @@ $FG,5$$TX+CX,"Programming Guidelines"$$FG$
|
||||
|
||||
* Virtual mem/Paging is not used -- it is identity mapped in $FG,2$x86_64$FG$ mode. The stk does not grow, so alloc enough when the task (process) is $LK,"Spawn",A="MN:Spawn"$ed and use the heap for most things. (The $FG,2$heap$FG$ refers to $LK,"MAlloc",A="MN:MAlloc"$() and $LK,"Free",A="MN:Free"$().)
|
||||
|
||||
* 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"$.
|
||||
|
||||
* 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$.
|
||||
@@ -58,10 +62,22 @@ $FG,5$$TX+CX,"Programming Guidelines"$$FG$
|
||||
|
||||
* 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.
|
||||
|
||||
* In-order, short circuit logic is used, in fact required.
|
||||
$LM,5$$HL,1$U32 DistDist(U16 x1, U16 y1, U16 x2, U16 y2)
|
||||
{//This requires zero-extend when fetching args.
|
||||
return SqrI64(x1-x2)+SqrI64(y1-y2);
|
||||
}
|
||||
|
||||
I64 DistDist(I64 x1, I64 y1, I64 x2, I64 y2)
|
||||
{
|
||||
return SqrI64(x1-x2)+SqrI64(y1-y2);
|
||||
}$HL,0$
|
||||
$LM,0$
|
||||
* In-order, short circuit logic is assumed.
|
||||
|
||||
* Avoid boolean expression assignments. Boolean assignments don't have short circuit logic and are not compiled efficiently. The $FG,2$Bool$FG$ type is just an alias for a 1 byte signed int -- nothing forces it to $FG,2$1$FG$ or $FG,2$0$FG$. There is a $LK,"ToBool",A="MN:ToBool"$() function that will for to $FG,2$1$FG$ ot $FG,2$0$FG$, however.
|
||||
|
||||
* Glbl vars in $FG,2$AOT$FG$ BIN modules are initialized to zero. They occupy space in BIN files.
|
||||
|
||||
* If you use floats in your interrupt routine, save and restore the fpu state with $LK,"Fxsave",A="MN:Fxsave"$() and $LK,"Fxrstor",A="MN:Fxrstor"$(). The timer interrupt does this. The keyboard and mouse don't use floats.
|
||||
|
||||
* Bracketing code with $FG,2$PUSHFD CLI$FG$ and $FG,2$POPFD$FG$ will protect against simultaneous accesses from tasks on $UL,1$one$UL,0$ core. To protect against multiple cores, you need a locked semaphore. I think semiphores need to be in their own cache line, but I'm not sure. I use lock bits in a lot of places not aligned.
|
||||
@@ -70,7 +86,7 @@ $FG,5$$TX+CX,"Programming Guidelines"$$FG$
|
||||
|
||||
* 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/Utils/S2T.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/Utils/StrUtils.CPP,S2T"$ on source code.
|
||||
|
||||
|
||||
|
||||
@@ -94,7 +110,7 @@ $FG,5$$TX+CX,"Assembly Language"$$FG$
|
||||
|
||||
* 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:REG_VARS_MASK"$, $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.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_C_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
|
||||
@@ -111,3 +127,5 @@ $FG$
|
||||
* No args are passed in regs.
|
||||
|
||||
* RAX holds function return values, of course.
|
||||
$FG,8$
|
||||
* "MagicISO" is a trademark of MagicISO Corp.
|
||||
@@ -0,0 +1 @@
|
||||
$WW,1$Recompile the kernel with $LK,"_CFG_HEAP_DBG",A="MN:_CFG_HEAP_DBG"$=TRUE if you want more heap debugging. You are on your own.
|
||||
@@ -0,0 +1,99 @@
|
||||
$HL,1$//Press F5 in the editor to compile and run.
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
"Hello World\n";
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
U0 Main()
|
||||
{
|
||||
"Hello World\n";
|
||||
}
|
||||
Main;
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
U0 MyPrint(U8 *st)
|
||||
{
|
||||
"%s",st;
|
||||
}
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
U0 MyPrint2(U8 *st1,U8 *st2) //Any number of args.
|
||||
{
|
||||
"%s %s\n",st1,st2; //Any number of args.
|
||||
}
|
||||
MyPrint2("Hello","World");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
U0 MyPrint(U8 *st)
|
||||
{
|
||||
"" st; //Empty with no comma means first is fmt str.
|
||||
}
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
asm {
|
||||
MSG: DU8 "Hello World\n",0;
|
||||
|
||||
//The convention is underscore on C callable.
|
||||
//Two colons means exported symbol.
|
||||
_HELLO_WORLD::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
PUSH RSI
|
||||
MOV RSI,MSG
|
||||
CALL PUT_STR
|
||||
POP RSI
|
||||
RET
|
||||
}
|
||||
Call(_HELLO_WORLD);
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
asm {
|
||||
_HELLO_WORLD::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
MOV RAX,'Hello '
|
||||
CALL PUT_CHARS //Up to 8 chars packed into one 64-bit integer.
|
||||
MOV RAX,'World\n'
|
||||
CALL PUT_CHARS
|
||||
RET
|
||||
}
|
||||
Call(_HELLO_WORLD);
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
asm {
|
||||
_MY_PRINT::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
PUSH RSI
|
||||
MOV RSI,U64 SF_ARG1[RBP]
|
||||
CALL PUT_STR
|
||||
POP RSI
|
||||
POP RBP
|
||||
RET1 8 //Callee pops the stack to clear args.
|
||||
}
|
||||
_extern _MY_PRINT U0 MyPrint(U8 *st);
|
||||
MyPrint("Hello World\n");
|
||||
|
||||
|
||||
--------Hello.CPP.Z---------
|
||||
asm {
|
||||
_MY_PRINT::
|
||||
//You can only clobber RAX,RBX,RCX,RDX
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
PUSH U64 SF_ARG1[RBP]
|
||||
CALL &PutS //Callee pops the stack to clear args.
|
||||
POP RBP
|
||||
RET1 8
|
||||
}
|
||||
_extern _MY_PRINT U0 MyPrint(U8 *st);
|
||||
MyPrint("Hello World\n");
|
||||
$HL,0$
|
||||
Binary file not shown.
+3
-3
@@ -144,7 +144,7 @@ $ID,-2$
|
||||
|
||||
$ID,2$$FG,2$U0 Main()
|
||||
{
|
||||
//Only use $LK,"REG_VARS_MASK",A="MN:REG_VARS_MASK"$ or $LK,"REG_NON_PTR_MASK",A="MN:REG_NON_PTR_MASK"$ for reg vars or else clobbered.
|
||||
//Only use $LK,"REGG_C_LOCAL_VARS",A="MN:REGG_C_LOCAL_VARS"$ or $LK,"REGG_C_LOCAL_NON_PTR_VARS",A="MN:REGG_C_LOCAL_NON_PTR_VARS"$ for reg vars or else clobbered.
|
||||
I64 reg R15 i=5, noreg j=4;
|
||||
nounusedwarn i;
|
||||
asm {
|
||||
@@ -214,9 +214,9 @@ $FG$$ID,-2$
|
||||
|
||||
* $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$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,"DocFormDo",A="MN:DocFormDo"$().
|
||||
* $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"$().
|
||||
|
||||
* There is a keyword $FG,2$lastclass$FG$ you use as a dft arg. It is set to the class name of the previous arg. See $LK,"::/Demo/LastClass.CPP"$, $LK,"ClassRep",A="MN:ClassRep"$(), $LK,"DocFormDo",A="MN:DocFormDo"$() 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 previous arg. See $LK,"::/Demo/LastClass.CPP"$, $LK,"ClassRep",A="MN:ClassRep"$(), $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/Dsk/BlkDevRep.CPP"$.
|
||||
|
||||
* 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.
|
||||
|
||||
|
||||
+1
-1
@@ -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,LexNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/CInit.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.CPP,CmpCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.CPP,Opcodes.TXT"$.
|
||||
|
||||
See $LK,"Tokens",A="MN:TK_IDENT"$.
|
||||
+1
-1
@@ -4,7 +4,7 @@ Only tasks on core#0 can have windows, but other cores can help render them.
|
||||
|
||||
Each core has a $GREEN$seth task$FG$ which is the father of all tasks on that core. Adam is the seth task on core 0.
|
||||
|
||||
You give a job to a seth task with $LK,"JobQue",A="MN:JobQue"$() and get the result with $LK,"GetResult",A="MN:GetResult"$(). You spawn a task on another core with $LK,"Spawn",A="MN:Spawn"$().
|
||||
You give a job to a seth task with $LK,"JobQue",A="MN:JobQue"$() and get the result with $LK,"JobResultGet",A="MN:JobResultGet"$(). You spawn a task on another core with $LK,"Spawn",A="MN:Spawn"$().
|
||||
|
||||
Note: You must use the $GREEN$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"$() instructions have $GREEN$LOCK$FG$ prefixes. The compiler has a $GREEN$lock{}$FG$ feature but it doesn't work well. See $LK,"::/Demo/MultiCore/Lock.CPP"$.
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ $WW,1$$FG,5$$TX+CX,"Mysteries"$$FG$
|
||||
|
||||
* The boot-loaders must be patched by you running $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() or $LK,"MasterBootIntall",A="MN:MasterBootIntall"$(). 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/KStart.CPP"$ if you relocate it.
|
||||
|
||||
* 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/BIOS32.CPP"$ a couple times. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
|
||||
* 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.
|
||||
|
||||
* $FG,2$PUSH EAX$FG$ : All stack operations in 64-bit mode are 64-bits.
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ $FG,2$"%h*c",25,'\n';$FG$ 25 new-lines.
|
||||
|
||||
$FG,2$"%F"$FG$ text file.
|
||||
|
||||
$FG,2$"%dv"$FG$ ptr.
|
||||
$FG,2$"%p"$FG$ ptr.
|
||||
|
||||
$FG,2$"%P"$FG$ link to ptr.
|
||||
|
||||
|
||||
+6
-6
@@ -6,14 +6,14 @@ $HL,1$#define CDIR_FILENAME_LEN 38 //Must include terminator zero
|
||||
|
||||
The following bit field shows valid 8-Bit ASCII filename characters.
|
||||
|
||||
U32 chars_bitmap_filename[8]=
|
||||
U32 chars_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_bitmap_filename",A="MN:chars_bitmap_filename"$, $LK,"FileNameChk",A="MN:FileNameChk"$
|
||||
I64 cluster; //One sector per cluster. I might change origin, let's talk.
|
||||
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/Date.CPP"$
|
||||
};
|
||||
@@ -24,7 +24,7 @@ public class CRedSeaBoot //RedSea is type FAT32 in partition table to fool BIOS.
|
||||
U8 signature,reserved[4]; //MBR_PT_REDSEA=0x88. Distinguish from real FAT32.
|
||||
I64 base_offset; //For CD/DVD image copy.
|
||||
I64 sects;
|
||||
I64 root_cluster;
|
||||
I64 root_cluster; (root_blk)
|
||||
I64 bitmap_sects;
|
||||
I64 unique_id;
|
||||
U8 code[462];
|
||||
@@ -36,6 +36,6 @@ See $LK,"implementation of RedSea file system",A="::/Kernel/Dsk/FileSysRedSea.CP
|
||||
File with names ending in .Z are stored compressed.
|
||||
See $LK,"implementation of LZW compression",A="::/Kernel/Compress.CPP"$.
|
||||
|
||||
I hope to do a ISO9660 replacement that consists of a hard-drive partition image copied 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.
|
||||
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.
|
||||
|
||||
There is no bad block table and no redundant allocation table.
|
||||
RedSea file system has no bad block table and no redundant allocation table.
|
||||
@@ -0,0 +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"$.
|
||||
@@ -0,0 +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"$.
|
||||
|
||||
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,"::/Home/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.
|
||||
|
||||
See $LK,"Char Overview",A="FI:::/Doc/CharOverview.TXT"$ 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"$.
|
||||
+1
-1
@@ -10,6 +10,6 @@ Bit 29 $LK,"Invert",A="MN:ATTRF_INVERT"$ed (Swap foreground and background)
|
||||
Bit 30 $LK,"Selected",A="MN:ATTRF_SELECTED"$ (XOR colors with FF)
|
||||
Bit 31 $LK,"Underline",A="MN:ATTRF_UNDERLINE"$
|
||||
|
||||
$LK,"GrUpdateWins",A="MN:GrUpdateWins"$() 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.
|
||||
$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"$.
|
||||
+1
-1
@@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Tips"$$FG$
|
||||
|
||||
* Turn-off or reboot ($FG,2$<CTRL-ALT-DEL>$FG$) at any time, except during disk writes. Writes are not cached.
|
||||
|
||||
* Use $LK,"Seed",A="MN:Seed"$() and the cmd-line to switch $LK,"Rand",A="MN:Rand"$() to non-timer mode and replay games you like.
|
||||
* Use $LK,"Seed",A="MN:Seed"$() and the cmd line to switch $LK,"Rand",A="MN:Rand"$() to non-timer mode and replay games you like.
|
||||
|
||||
* 64-bit values are most efficient for the compiler.
|
||||
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@ $WW,1$$LK,"CDC",A="MN:CDC"$'s have a 4x4 matrix for rotating, scaling, skewing a
|
||||
|
||||
The matrix consists of integers that have been scaled 32 bits ($LK,"GR_SCALE",A="MN:GR_SCALE"$). See $LK,"::/Demo/Lectures/FixedPoint.CPP"$ to learn why.
|
||||
|
||||
See $LK,"GrRotXNew",A="MN:GrRotXNew"$(), $LK,"GrRotYNew",A="MN:GrRotYNew"$(), $LK,"GrRotZNew",A="MN:GrRotZNew"$(), $LK,"GrScaleNew",A="MN:GrScaleNew"$(), $LK,"GrRotXEqu",A="MN:GrRotXEqu"$(), $LK,"GrRotYEqu",A="MN:GrRotYEqu"$(), $LK,"GrRotZEqu",A="MN:GrRotZEqu"$() and $LK,"GrScaleEqu",A="MN:GrScaleEqu"$() to rotate about axes and scale. Combine them with $LK,"GrMulMat",A="MN:GrMulMat"$() and assign them to the $LK,"CDC",A="MN:CDC"$.$FG,2$dc$FG$ with $LK,"GrSetRotMat",A="MN:GrSetRotMat"$(). 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.CPP"$.
|
||||
|
||||
You can rotate single points using $LK,"GrRot",A="MN:GrRot"$().
|
||||
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,"GrMulMat",A="MN:GrMulMat"$ them to combine rotation/shift operations. Normally, you can't combine pos shift operations. See $LK,"GrSetTranslation",A="MN:GrSetTranslation"$() 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.CPP"$.
|
||||
|
||||
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$transfrom()$FG$ callback is $LK,"GrTransform",A="MN:GrTransform"$(). See $LK,"::/Demo/Games/EagleDive.CPP"$ or $LK,"::/Demo/Games/CastleFrankenstein.CPP"$ to see how to change the $FG,2$transfrom()$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.CPP"$ or $LK,"::/Demo/Games/CastleFrankenstein.CPP"$ to see how to change the $FG,2$transform()$FG$ callback for foreshortening.
|
||||
+5
-2
@@ -7,7 +7,7 @@ $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,"120,471",D="DD_TEMPLEOS_LOC"$ 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 "hello world" 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.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,"122,766",D="DD_TEMPLEOS_LOC"$ 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 "hello world" 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"$.
|
||||
|
||||
@@ -15,7 +15,9 @@ Conventional thinking is "failure is not an option" for general purpose operatin
|
||||
|
||||
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.
|
||||
|
||||
In 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. During the boot process, many files get $LK,"compiled",A="FI:::/Adam.CPP"$ before you have access to the command line. (Don't worry, booting takes only a couple of 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$.
|
||||
In 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. See $LK,"::/Doc/HelloWorld.TXT.Z"$.
|
||||
|
||||
During the boot process, many files get $LK,"compiled",A="FI:::/Adam.CPP"$ before you have access to the command line. (Don't worry, booting takes only a couple of 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.
|
||||
|
||||
@@ -84,5 +86,6 @@ Use the $LK,"Help & Index",A="FI:::/Doc/HelpIndex.TXT"$ or $LK,"Demo Index",A="F
|
||||
$MA-X+PU,"Take Tour",LM="User(\"Cd(\\\"::/Misc/Tour\\\");;AutoFile(\\\"Tour\\\");\n\");"$
|
||||
|
||||
$FG,8$
|
||||
* "Linux" is probably a trademark owned by Linus Torvalds.
|
||||
* "Windows" is a trademark of MicroSoft Corp.
|
||||
$FG$
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
$WW,1$$FG,5$$TX+CX,"DolDoc Widget Help"$$FG$
|
||||
|
||||
$LK,"DolDoc",A="::/Doc/DolDocOverview.TXT"$ is a propriatary TempleOS document type.
|
||||
$LK,"DolDoc",A="::/Doc/DolDocOverview.TXT"$ 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.
|
||||
@@ -33,7 +33,7 @@ $FG,5$Quote$FG$ Make the result suitable for including in a program, in quotes,
|
||||
$FG,5$X Expression$FG$ For cursor movements, the horizontal value.
|
||||
$FG,5$Y Expression$FG$ For cursor movements, the vertical value.
|
||||
|
||||
$FG,5$$BK,1$PopUp$BK,0$$FG$ For macro's, run the macro in a PopUp window. Do this when making a macro to run a program, so it doesn't tie-up memory.
|
||||
$FG,5$PopUp$FG$ For macro's, run the macro in a PopUp window. Do this when making a macro to run a program, so it doesn't tie-up memory.
|
||||
|
||||
$FG,5$Escape$FG$ For macro's, send an $FG,2$<ESC>$FG$ char to exit before running the macro. Without this, the macro runs in the wrong window, usually.
|
||||
|
||||
|
||||
Reference in new issue
Block a user