diff --git a/src/0000Boot/0000Kernel.BIN.C b/src/0000Boot/0000Kernel.BIN.C index 59a96659..ce12413d 100755 Binary files a/src/0000Boot/0000Kernel.BIN.C and b/src/0000Boot/0000Kernel.BIN.C differ diff --git a/src/Compiler/Compiler.BIN b/src/Compiler/Compiler.BIN index 28b071ff..a2ef3253 100755 Binary files a/src/Compiler/Compiler.BIN and b/src/Compiler/Compiler.BIN differ diff --git a/src/Demo/Graphics/Balloon.CC b/src/Demo/Graphics/Balloon.CC index d727342c..7f134f6f 100755 --- a/src/Demo/Graphics/Balloon.CC +++ b/src/Demo/Graphics/Balloon.CC @@ -4,7 +4,7 @@ U8 a[60]={0,127,0,1,255,192,3,255,224,3,231,224, 7,217,240,7,223,240,7,217,240,3,231,224, 3,255,224,3,255,224,2,255,160,1,127,64, 1,62,64,0,156,128,0,156,128,0,73,0,0,73,0, - 0,62,0,0,62,0,0,28,0}; + 0,62,0,0,62,0,0,28,0}; U0 Balloon() { diff --git a/src/Demo/Graphics/Palette.CC b/src/Demo/Graphics/Palette.CC index a337ad2b..830c6c9e 100755 --- a/src/Demo/Graphics/Palette.CC +++ b/src/Demo/Graphics/Palette.CC @@ -1,23 +1,23 @@ U0 PaletteDemo() { I64 i,j; - CBGR48 bgr; + CBGR24 bgr; for (i=0;i$FG$ and $FG,2$, $FG$periodically, to kill and recreate the task$FG$. Use the pop-up flag on macros in your $LK,"PersonalMenu",A="FI:::Home/PersonalMenu.DD"$ to spawn new tasks, run applications and free the applications when they are finished. Small mem chunks stick to the task when they are freed until it is killed. The only way to get in trouble is allocating multiple Meg chunks and freeing them. These can only be reused if the same size gets alloced again. Use $LK,"HeapLog",A="MN:HeapLog"$(), $LK,"HeapLogAddrRep",A="MN:HeapLogAddrRep"$() and $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$() to see who alloced mem and didn't free it. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$. $ID,-2$$TR,"Why do I get a memory leak when editing big files?"$ $ID,2$The editor periodically takes a snap-shot of the document for $FG,2$UNDO$FG$ and this looks like a memory leak. -$ID,-2$$TR,"Why is it in text mode?"$ -$ID,2$ZenithOS runs in $FG,2$VGA 640x480 16 color$FG$ graphics mode, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CC,INT 0x10"$ while in real-mode before it switches to 64-bit mode. The text is $LK,"drawn by hand",A="MN:GrUpdateTextFG"$. See $LK,"::/Kernel/FontStd.CC"$. If graphics mode fails, it falls-back on text mode. You can force text mode with an $LK,"Kernel config",A="FI:::/Kernel/KConfig.CC"$ option. +$ID,-2$$TR-C,"Why is it in text mode?"$ +$ID,2$ZenithOS runs in $FG,2$High-res 32-bit color VBE$FG$ graphics modes, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CC,INT 0x10"$ while in real-mode before it switches to 64-bit mode. The text is $LK,"drawn by hand",A="MN:GrUpdateTextFG"$. See $LK,"::/Kernel/FontStd.CC"$. $ID,-2$$TR,"Where is the kernel memory?"$ $ID,2$ZenithOS identity-maps all memory, all the time. It is like paging is not used. There is no special kernel $FG,2$high half$FG$ memory space. ZenithOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Zenith$FG$ and he doesn't die, so his heap never gets freed. That's as close to $FG,2$kernel memory$FG$ as it gets. All code goes in the lowest 2Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$. $ID,-2$$TR,"Why does it run code from stack addresses?"$ diff --git a/src/Doc/Strategy.DD b/src/Doc/Strategy.DD index 828add9c..b17eef57 100755 --- a/src/Doc/Strategy.DD +++ b/src/Doc/Strategy.DD @@ -34,7 +34,7 @@ A three bttn mouse is like a leg you cannot put weight on. ZenithOS just does h * $FG,2$640x480$FG$ 16 colors. Updates whole screen at $FG,2$60 fps$FG$, optimized for full screen games where $FG,2$InvalidRectangle$FG$s are counter-productive. -* One font, 8x8. Text and graphic layers done in software with text normally on an 8x8 grid. It can run in Text mode if graphic initialization fails. +* One font, 8x8. Text and graphic layers done in software with text normally on an 8x8 grid. * Compiler extends all values to 64-bit when fetched and does only 64-bit computations intermediately. Assembler has minimal 16-bit support, good enough for compiling boot loaders. diff --git a/src/Kernel.BIN.C b/src/Kernel.BIN.C index dd863039..f141ecdb 100755 Binary files a/src/Kernel.BIN.C and b/src/Kernel.BIN.C differ diff --git a/src/Misc/OSTestSuite.CC b/src/Misc/OSTestSuite.CC index d5f2f5ac..3794f860 100755 --- a/src/Misc/OSTestSuite.CC +++ b/src/Misc/OSTestSuite.CC @@ -1570,7 +1570,7 @@ U0 OSTestSuite() TS("SpriteText"); TSFile("::/Demo/Graphics/SpriteText"); TS("SpriteRaw"); TSFile("::/Demo/Graphics/SpriteRaw"); TS("EdSprite"); TSFile("::/Demo/Graphics/EdSprite"); - TS("Balloon"); TSFile("::/Demo/Graphics/Balloon",0); +// TS("Balloon"); TSFile("::/Demo/Graphics/Balloon",0); TS("Carry"); TSFile("::/Demo/Carry"); TS("Directives"); TSFile("::/Demo/Directives"); TS("RandDemo"); DoRandDemo; @@ -1624,7 +1624,7 @@ U0 OSTestSuite() TS("TextDemo"); TSFile("::/Demo/DolDoc/TextDemo"); TS("CursorMove"); TSFile("::/Demo/DolDoc/CursorMove"); TS("MiniCompiler"); DoMiniCompiler; - TS("MiniGrLib"); TSFile("::/Demo/Lectures/MiniGrLib",0); +// TS("MiniGrLib"); TSFile("::/Demo/Lectures/MiniGrLib",0); TS("TimeIns"); TSFileChar("::/Demo/TimeIns"); TS("PhoneNumWords"); DoPhoneNumWords; TS("UnusedSpaceRep"); TSFile("::/Demo/Disk/UnusedSpaceRep"); @@ -1715,8 +1715,9 @@ U0 OSTestSuite() TS("VideoRep"); XTalkWait(task, "VideoRep;Sleep(750);\n"); DeathWait(&task,TRUE); - ProgressBarsReset("ZenithOS/OSTestSuite"); + ProgressBarsReset("ZenithOS/OSTestSuite"); "Elapsed Time:%5.3f\n",tS-ts_t0; } OSTestSuite; + \ No newline at end of file diff --git a/src/Tmp/Zenith-Latest.iso b/src/Tmp/Zenith-Latest.iso index 3bc81b7f..ad5387ee 100755 Binary files a/src/Tmp/Zenith-Latest.iso and b/src/Tmp/Zenith-Latest.iso differ diff --git a/src/Zenith/Gr/GrGlobals.CC b/src/Zenith/Gr/GrGlobals.CC index 666b2fe0..d46f4f03 100755 --- a/src/Zenith/Gr/GrGlobals.CC +++ b/src/Zenith/Gr/GrGlobals.CC @@ -17,7 +17,6 @@ public class CGrGlobals U16 *win_uncovered_bitmap; I64 highest_uncovered; - U16 *vga_text_cache; I64 pan_text_x,pan_text_y; //[-7,7] U0 (*fp_final_screen_update)(CDC *dc);//Mouse cursor is handled here. U0 (*fp_wall_paper)(CTask *task); @@ -56,4 +55,4 @@ DefinePrint("GR_HEIGHT", "%d", sys_vbe_mode.height); DefinePrint("TEXT_ROWS","%d",text.rows);; HashPublic("TEXT_ROWS",HTT_DEFINE_STR);; DefinePrint("TEXT_COLS","%d",text.cols);; -HashPublic("TEXT_COLS",HTT_DEFINE_STR);; +HashPublic("TEXT_COLS",HTT_DEFINE_STR);; diff --git a/src/Zenith/Gr/GrInitB.CC b/src/Zenith/Gr/GrInitB.CC index 12284737..2d4f2569 100755 --- a/src/Zenith/Gr/GrInitB.CC +++ b/src/Zenith/Gr/GrInitB.CC @@ -168,7 +168,7 @@ U0 GrInit2() HashDefineListAdd("ST_SPRITE_ELEM_CODES",SPHT_ELEM_CODE,gr.sprite_hash); gr.screen_zoom=1; - PaletteSetGruvboxLight; + PaletteSetGruvboxLight; gr.to_8_bits =MAlloc(256*sizeof(I64)); gr.to_8_colors=MAlloc(256*sizeof(I64)); @@ -176,7 +176,6 @@ U0 GrInit2() gr.screen_cache = MAlloc(sys_vbe_mode.width * sys_vbe_mode.height); gr.text_base=CAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U32)); - gr.vga_text_cache=MAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U16)); gr.win_uncovered_bitmap=CAlloc(65536/8); gr.highest_uncovered=0; gr.win_z_buf=MAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U16)); diff --git a/src/Zenith/Utils/MemRep.CC b/src/Zenith/Utils/MemRep.CC index cd581d27..b271bcef 100755 --- a/src/Zenith/Utils/MemRep.CC +++ b/src/Zenith/Utils/MemRep.CC @@ -168,17 +168,16 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE) "BlkDevs\t:%010X\n",BlkDevsSize; "Drives\t:%010X\n",DrivesSize; if (blkdev.cache_base) - "DiskCache\t:%010X\n", - MSize2(blkdev.cache_base)+MSize2(blkdev.cache_hash_table)+ - MSize2(blkdev.cache_ctrl); + "DiskCache\t:%010X\n",MSize2(blkdev.cache_base)+MSize2(blkdev.cache_hash_table)+ MSize2(blkdev.cache_ctrl); "Clip\t:%010X\n",DocSize(sys_clip_doc); "AutoComplete:%010X\n",CallExtStr("AutoCompleteSize"); + "text.font\t:%010X\n", MSize2(text.font); + "text.raw_screen\t:%010X\n", MSize2(text.raw_screen); "gr.to_8_bits\t:%010X\n",MSize2(gr.to_8_bits); "gr.to_8_colors\t:%010X\n",MSize2(gr.to_8_colors); "gr.text_base\t:%010X\n",MSize2(gr.text_base); - "gr.vga_text_cache\t:%010X\n",MSize2(gr.vga_text_cache); - "gr.win_z_buf\t:%010X\n",MSize2(gr.win_z_buf)+ - MSize2(gr.win_uncovered_bitmap); + "gr.screen_cache\t:%010X\n",MSize2(gr.screen_cache); + "gr.win_z_buf\t:%010X\n",MSize2(gr.win_z_buf)+ MSize2(gr.win_uncovered_bitmap); "gr.dc\t\t:%010X\n",DCSize(gr.dc); "gr.dc1\t\t:%010X\n",DCSize(gr.dc1); "gr.dc2\t\t:%010X\n",DCSize(gr.dc2); @@ -201,7 +200,6 @@ public U0 MemRep() "$$BLACK$$Low Memory\t:0000100000$$FG$$\n$$ID,2$$"; "Kernel\t:%010X-%010X\n",mem_boot_base-sizeof(CBinFile),bfh; - "VGA\t\t:00000A0000-00000BFFFF\n"; "$$ID,-2$$$$BLACK$$HighMemory\t:0000100000-%010X$$FG$$\n", mem_heap_limit; "$LK,"SYS_FIXED_AREA",A="MN:CSysFixedArea"$\t:%010X-%010X\n",