mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-25 23:10:32 +00:00
upstream branch of example of personal Zeal customization and scripting
This commit is contained in:
parent
cd46dc4ab3
commit
5f04b9fe50
16 changed files with 394 additions and 4 deletions
3
src/Home/.ZC
Executable file
3
src/Home/.ZC
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
In("CC\n1\n\n\n\n\n");
|
||||||
|
BootHDIns('c');
|
||||||
|
//Reboot;
|
60
src/Home/AFF.ZC
Executable file
60
src/Home/AFF.ZC
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
|
||||||
|
|
||||||
|
U0 zz()
|
||||||
|
{
|
||||||
|
U16 *screen, *last_screen = gr.screen_cache;
|
||||||
|
U64 i, *src = text.raw_screen, *dst = text.fb_alias, diffs_size = GR_WIDTH * GR_HEIGHT / 2;
|
||||||
|
/*
|
||||||
|
|
||||||
|
if (gr.screen_zoom == 1)
|
||||||
|
screen = gr.dc2->body;
|
||||||
|
else
|
||||||
|
screen = gr.zoomed_dc->body;
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i = 0; i < diffs_size; i++)
|
||||||
|
{
|
||||||
|
if (screen[i] != last_screen[i])
|
||||||
|
dst[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// MemCopy(gr.screen_cache, screen, diffs_size * 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
U0 zzz()
|
||||||
|
{
|
||||||
|
U16 *screen, *last_screen = gr.screen_cache;
|
||||||
|
U64 i, *src = text.raw_screen, *dst = text.fb_alias, diffs_size = GR_WIDTH * GR_HEIGHT / 2;
|
||||||
|
/*
|
||||||
|
|
||||||
|
if (gr.screen_zoom == 1)
|
||||||
|
screen = gr.dc2->body;
|
||||||
|
else
|
||||||
|
screen = gr.zoomed_dc->body;
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < diffs_size; i++)
|
||||||
|
{
|
||||||
|
if (*(screen + i) != *(last_screen + i))
|
||||||
|
*(dst + i) = *(src + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MemCopy(gr.screen_cache, screen, diffs_size * 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
"\n\n\n";
|
||||||
|
Uf("zz");
|
||||||
|
"\n\n\n";
|
||||||
|
Uf("zzz");"\n\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
The only way to make this faster,
|
||||||
|
is to force usage of XMM into this ? ?
|
||||||
|
|
||||||
|
*/
|
1
src/Home/F.ZC
Executable file
1
src/Home/F.ZC
Executable file
|
@ -0,0 +1 @@
|
||||||
|
Spawn(&CtrlAltF);;
|
72
src/Home/GRZ.ZC
Executable file
72
src/Home/GRZ.ZC
Executable file
|
@ -0,0 +1,72 @@
|
||||||
|
U0 GrZoomInScreen1()
|
||||||
|
{
|
||||||
|
I64 i, j, k, l;
|
||||||
|
U8 *src, *src2, *dst;
|
||||||
|
|
||||||
|
GrFixZoomScale;
|
||||||
|
|
||||||
|
src = gr.dc2->body + gr.sx + gr.sy * gr.dc2->width_internal;
|
||||||
|
dst = gr.zoomed_dc->body;
|
||||||
|
|
||||||
|
for (i = 0; i < GR_HEIGHT / gr.screen_zoom; i++)
|
||||||
|
{
|
||||||
|
k = gr.screen_zoom;
|
||||||
|
while (k--)
|
||||||
|
{
|
||||||
|
src2 = src;
|
||||||
|
for (l = 0; l < GR_WIDTH / gr.screen_zoom; l++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < gr.screen_zoom - 1; j++)
|
||||||
|
*dst++ = *src2;
|
||||||
|
|
||||||
|
*dst++ = *src2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
src += GR_WIDTH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
U0 GrZoomInScreen2()
|
||||||
|
{
|
||||||
|
I64 i, j, k, l,
|
||||||
|
bobus = GR_HEIGHT / gr.screen_zoom,
|
||||||
|
beebus = GR_WIDTH / gr.screen_zoom,
|
||||||
|
sprinkle = gr.screen_zoom - 1;
|
||||||
|
U8 *src, *src2, *dst;
|
||||||
|
|
||||||
|
GrFixZoomScale;
|
||||||
|
|
||||||
|
src = gr.dc2->body + gr.sx + gr.sy * gr.dc2->width_internal;
|
||||||
|
dst = gr.zoomed_dc->body;
|
||||||
|
|
||||||
|
for (i = 0; i < bobus; i++)
|
||||||
|
{
|
||||||
|
k = gr.screen_zoom;
|
||||||
|
while (k--)
|
||||||
|
{
|
||||||
|
src2 = src;
|
||||||
|
for (l = 0; l < beebus; l++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < sprinkle; j++)
|
||||||
|
*dst++ = *src2;
|
||||||
|
|
||||||
|
*dst++ = *src2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
src += GR_WIDTH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Uf "GrZoomInScreen1";
|
||||||
|
|
||||||
|
"\n\n";
|
||||||
|
|
||||||
|
Uf "GrZoomInScreen2";
|
||||||
|
|
||||||
|
"\n";
|
||||||
|
|
22
src/Home/MakeHome.ZC
Executable file
22
src/Home/MakeHome.ZC
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
Cd(__DIR__);;
|
||||||
|
|
||||||
|
//If these are not present in /Home, it uses the version in the root dir. You
|
||||||
|
//can make your own, modified, version of these files in your /Home directory.
|
||||||
|
#include "~/HomeLocalize"
|
||||||
|
#include "/System/Boot/MakeBoot"
|
||||||
|
#include "/System/Utils/MakeUtils"
|
||||||
|
#include "~/HomeWrappers"
|
||||||
|
MapFileLoad("::/Kernel/Kernel");
|
||||||
|
MapFileLoad("::/Compiler/Compiler");
|
||||||
|
#include "~/HomeKeyPlugIns"
|
||||||
|
#include "~/HomeSys"
|
||||||
|
Cd("..");;
|
||||||
|
Sys("#include \"C:/Home/PaletteEditor/Palettes/Amicus.ZC\";;;PaletteSetAmicus;;");
|
||||||
|
//Sys("SwapI64(&text.font, &text.aux_font);;");
|
||||||
|
Sys("U0 Z(){Spawn(&MouseHardDriverInstall);};;;");
|
||||||
|
Sys("U0 MouseFix(){ Spawn(&MouseHardDriverInstall);; } ;; ");
|
||||||
|
Sys("#include \"C:/Home/PaletteEditor/Palettes/Vapor.ZC\";;;PaletteSetVapor;;;" );
|
||||||
|
|
||||||
|
Sys("PaletteSetAmicus;;;");
|
||||||
|
|
||||||
|
Sys("mouse_hard.scale.x = mouse_hard.scale.y = mouse_hard.scale.z = 2.0;;;;");
|
10
src/Home/NestedEq.ZC
Executable file
10
src/Home/NestedEq.ZC
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
U64 x = 3;
|
||||||
|
|
||||||
|
"\nx: %d\n", x;
|
||||||
|
|
||||||
|
U64 y = (x <<= 2) * 2;
|
||||||
|
|
||||||
|
"\ny: %d\n", y;
|
||||||
|
|
||||||
|
"\nx: %d\n", x;
|
|
@ -41,7 +41,7 @@ I64 FTPReplyPassiveParse(CTCPSocket *message_socket, CSocketAddressIPV4 *dest_ad
|
||||||
recv_sum += recv;
|
recv_sum += recv;
|
||||||
}
|
}
|
||||||
str = StrNew(buf);
|
str = StrNew(buf);
|
||||||
cc = CompCtrlNew(str);
|
cc = CompCtrlNew(str, CCF_NO_CHAR_CONST);
|
||||||
|
|
||||||
while ((tk = Lex(cc)))
|
while ((tk = Lex(cc)))
|
||||||
{
|
{
|
||||||
|
@ -91,6 +91,8 @@ parse_done:
|
||||||
}
|
}
|
||||||
|
|
||||||
CompCtrlDel(cc);
|
CompCtrlDel(cc);
|
||||||
|
if (res < 0) // error on parse
|
||||||
|
"\n[FTPReplyPassiveParse]: buf='%s'\n", buf;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
src/Home/Z.ZC
Executable file
11
src/Home/Z.ZC
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
/*
|
||||||
|
F("sys_os_v");
|
||||||
|
"\n\n\n";
|
||||||
|
F("DD_OS_");
|
||||||
|
*/
|
||||||
|
I64 line_count = LineRep("/*", "-r") + LineRep("/System/*") + LineRep("/Compiler/*", "-S+$$") + LineRep("/Kernel/*");
|
||||||
|
|
||||||
|
DocTreeFWrite("/System/Define.ZC", "LineRep", "DefinePrint(\"DD_ZEALOS_LOC\",\"%,d\");\n", line_count);
|
||||||
|
DefinePrint("DD_ZEALOS_LOC", "%,d", line_count);
|
||||||
|
|
||||||
|
"Total LOC:%12,d\n\n", line_count;
|
112
src/Home/skip.ZC
Executable file
112
src/Home/skip.ZC
Executable file
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
U8 skip = 0;
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
"skip %d\n", skip;
|
||||||
|
"skip and 3... %d\n", skip & 3;
|
||||||
|
"skip and 7... %d\n", skip & 7;
|
||||||
|
"skip and 15... %d\n", skip & 15;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (skip > 4 * 15)
|
||||||
|
skip = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
skip++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
U0 GrCalcScreenUpdates1()
|
||||||
|
{
|
||||||
|
U64 *screen, *last_screen = gr.screen_cache, i, ii, *src = text.raw_screen, *dst = text.fb_alias, diffs_size = GR_WIDTH * GR_HEIGHT / 8;
|
||||||
|
|
||||||
|
U8 skip = gr.screen_cache[0]; // use 1st U8 of cache as flag to skip cache MemCopy every-other call.
|
||||||
|
U8 skip_inactives = 2, skip_chunks = 7;
|
||||||
|
|
||||||
|
|
||||||
|
if (gr.screen_zoom == 1)
|
||||||
|
screen = gr.dc2->body;
|
||||||
|
else
|
||||||
|
screen = gr.zoomed_dc->body;
|
||||||
|
|
||||||
|
for (i = 0; i < diffs_size; i++)
|
||||||
|
if (screen[i] != last_screen[i])
|
||||||
|
{
|
||||||
|
ii = i * 4;
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skip < skip_chunks * skip_inactives)
|
||||||
|
{
|
||||||
|
if (skip % skip_inactives == 0)
|
||||||
|
{
|
||||||
|
MemCopy(dst + ((skip/skip_inactives)*text.buffer_size / skip_chunks / 8),
|
||||||
|
src + ((skip/skip_inactives)*text.buffer_size / skip_chunks / 8),
|
||||||
|
text.buffer_size / skip_chunks);
|
||||||
|
MemCopy(gr.screen_cache + ((skip/skip_inactives)*diffs_size * 8 / skip_chunks), screen + ((skip/skip_inactives)*diffs_size * 8 / skip_chunks / 8), diffs_size * 8 / skip_chunks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
skip = -1;
|
||||||
|
|
||||||
|
gr.screen_cache[0] = ++skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
U0 GrCalcScreenUpdates2()
|
||||||
|
{
|
||||||
|
U64 *screen, *last_screen = gr.screen_cache, i, ii, *src = text.raw_screen, *dst = text.fb_alias, diffs_size = GR_WIDTH * GR_HEIGHT / 8,
|
||||||
|
skip = gr.screen_cache[0], // use 1st U8 of cache as flag to skip cache MemCopy every-other call.
|
||||||
|
skip_inactives = 2, skip_chunks = 7, skip_size64 = skip / skip_inactives * text.buffer_size / skip_chunks / 8, skip_diff = diffs_size * 8 / skip_chunks, skip_size8 = skip / skip_inactives * skip_diff;
|
||||||
|
|
||||||
|
|
||||||
|
if (gr.screen_zoom == 1)
|
||||||
|
screen = gr.dc2->body;
|
||||||
|
else
|
||||||
|
screen = gr.zoomed_dc->body;
|
||||||
|
|
||||||
|
for (i = 0; i < diffs_size; i++)
|
||||||
|
if (screen[i] != last_screen[i])
|
||||||
|
{
|
||||||
|
ii = i * 4;
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii++];
|
||||||
|
dst[ii] = src[ii];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skip < skip_chunks * skip_inactives)
|
||||||
|
{
|
||||||
|
if (skip % skip_inactives == 0)
|
||||||
|
{
|
||||||
|
MemCopy(dst + skip_size64,
|
||||||
|
src + skip_size64,
|
||||||
|
text.buffer_size / skip_chunks);
|
||||||
|
MemCopy(gr.screen_cache + skip_size8, screen(U8 *) + skip_size8, skip_diff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
skip = -1;
|
||||||
|
|
||||||
|
gr.screen_cache[0] = ++skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
Uf "GrCalcScreenUpdates1";
|
||||||
|
|
||||||
|
"\n\n";
|
||||||
|
|
||||||
|
Uf "GrCalcScreenUpdates2";
|
||||||
|
|
||||||
|
"\n";
|
||||||
|
|
4
src/Home/z_UfGrCalc.ZC
Executable file
4
src/Home/z_UfGrCalc.ZC
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
Uf "GrCalcScreenUpdates";
|
||||||
|
|
||||||
|
|
||||||
|
In("\n\nMan(\"GrCalcScreenUpdates\");");
|
45
src/Home/zz.ZC
Executable file
45
src/Home/zz.ZC
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
|
||||||
|
|
||||||
|
//In("B\n2*1024*1024\n\n");Mount;
|
||||||
|
|
||||||
|
// See BlkDevRep
|
||||||
|
I64 i, dst_blks;
|
||||||
|
CBlkDev *b = blkdev.blkdevs;
|
||||||
|
U8 *dst_disk, dst_let, got = FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < BLKDEVS_NUM; i++)
|
||||||
|
{ // look for a RAM Disk
|
||||||
|
if (b[i].bd_signature == BD_SIGNATURE_VAL)
|
||||||
|
{
|
||||||
|
if (b[i].RAM_disk)
|
||||||
|
{
|
||||||
|
dst_disk = b[i].RAM_disk;
|
||||||
|
dst_let = b[i].first_drive_let;
|
||||||
|
dst_blks = b[i].max_blk;
|
||||||
|
"\tRAM disk address:\t0x%X\n", dst_disk;
|
||||||
|
"\tDrive Letter:\t%C\n", dst_let;
|
||||||
|
"\tDrive Max Block:\t0x%X\n", dst_blks;
|
||||||
|
got = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!got)
|
||||||
|
Break;
|
||||||
|
|
||||||
|
U8 *dst_str = MStrPrint("%C:/", dst_let);
|
||||||
|
U8 *dst_disk_str = MStrPrint("0x%0X", dst_disk);
|
||||||
|
U8 *dst_blks_str = MStrPrint("%d", dst_blks);
|
||||||
|
|
||||||
|
//CopyTree("::/", dst_str);
|
||||||
|
Drive(dst_let);
|
||||||
|
In("BB");
|
||||||
|
In(dst_disk_str);
|
||||||
|
In("\n");
|
||||||
|
In(dst_blks_str);
|
||||||
|
In("\n\n\n\n");
|
||||||
|
MakeAll;
|
||||||
|
Cd("Kernel");
|
||||||
|
Sleep(3333);
|
||||||
|
BootRAM("Kernel.ZXE");
|
44
src/Home/zzz.ZC
Executable file
44
src/Home/zzz.ZC
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
In("B\n2*1024*1024\n\n");Mount;
|
||||||
|
|
||||||
|
// See BlkDevRep
|
||||||
|
I64 i, dst_blks;
|
||||||
|
CBlkDev *b = blkdev.blkdevs;
|
||||||
|
U8 *dst_disk, dst_let, got = FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < BLKDEVS_NUM; i++)
|
||||||
|
{ // look for a RAM Disk
|
||||||
|
if (b[i].bd_signature == BD_SIGNATURE_VAL)
|
||||||
|
{
|
||||||
|
if (b[i].RAM_disk)
|
||||||
|
{
|
||||||
|
dst_disk = b[i].RAM_disk;
|
||||||
|
dst_let = b[i].first_drive_let;
|
||||||
|
dst_blks = b[i].max_blk;
|
||||||
|
"\tRAM disk address:\t0x%X\n", dst_disk;
|
||||||
|
"\tDrive Letter:\t%C\n", dst_let;
|
||||||
|
"\tDrive Max Block:\t0x%X\n", dst_blks;
|
||||||
|
got = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!got)
|
||||||
|
Break;
|
||||||
|
|
||||||
|
U8 *dst_str = MStrPrint("%C:/", dst_let);
|
||||||
|
U8 *dst_disk_str = MStrPrint("0x%0X", dst_disk);
|
||||||
|
U8 *dst_blks_str = MStrPrint("%d", dst_blks);
|
||||||
|
//"%s %s %s \n\n", dst_str, dst_disk_str, dst_blks_str;
|
||||||
|
CopyTree("::/", dst_str);
|
||||||
|
Drive(dst_let);
|
||||||
|
In("BB");
|
||||||
|
In(dst_disk_str);
|
||||||
|
In("\n");
|
||||||
|
In(dst_blks_str);
|
||||||
|
In("\n\n\n\n");
|
||||||
|
MakeAll;
|
||||||
|
Cd("Kernel");
|
||||||
|
Sleep(3333);
|
||||||
|
BootRAM("Kernel.ZXE");
|
|
@ -79,7 +79,7 @@ See also $LK,"GrUpdateScreen",A="MN:GrUpdateScreen"$().
|
||||||
if (ch_bitmap & 1)
|
if (ch_bitmap & 1)
|
||||||
*framebuffer++ = WHITE32;
|
*framebuffer++ = WHITE32;
|
||||||
else
|
else
|
||||||
*framebuffer++ = BLACK32;
|
*framebuffer++ = RED32;
|
||||||
if (i & (FONT_WIDTH - 1) == FONT_WIDTH - 1)
|
if (i & (FONT_WIDTH - 1) == FONT_WIDTH - 1)
|
||||||
framebuffer += sys_framebuffer_width - FONT_WIDTH;
|
framebuffer += sys_framebuffer_width - FONT_WIDTH;
|
||||||
ch_bitmap >>= 1;
|
ch_bitmap >>= 1;
|
||||||
|
|
|
@ -70,8 +70,8 @@ SYS_FRAMEBUFFER_LIST:: DU8 sizeof(CVideoInfo) * VBE_MODES_NUM DUP(0);
|
||||||
|
|
||||||
#assert $$ - SYS_KERNEL == sizeof(CKernel) - sizeof(CZXE)
|
#assert $$ - SYS_KERNEL == sizeof(CKernel) - sizeof(CZXE)
|
||||||
|
|
||||||
REQUESTED_SCREEN_WIDTH: DU16 1024;
|
REQUESTED_SCREEN_WIDTH: DU16 1920;
|
||||||
REQUESTED_SCREEN_HEIGHT: DU16 768;
|
REQUESTED_SCREEN_HEIGHT: DU16 1080;
|
||||||
|
|
||||||
VBE_TEMP_MODE: DU8 sizeof(CVBEMode) DUP(0);
|
VBE_TEMP_MODE: DU8 sizeof(CVBEMode) DUP(0);
|
||||||
VBE_INFO: DU8 sizeof(CVBEInfo) DUP(0);
|
VBE_INFO: DU8 sizeof(CVBEInfo) DUP(0);
|
||||||
|
|
|
@ -498,6 +498,7 @@ class CPatchTableAbsAddr
|
||||||
|
|
||||||
#define BLACK32 0x000000
|
#define BLACK32 0x000000
|
||||||
#define WHITE32 0xFFFFFF
|
#define WHITE32 0xFFFFFF
|
||||||
|
#define RED32 0xFF0000
|
||||||
#define VBE_MODES_NUM 32
|
#define VBE_MODES_NUM 32
|
||||||
|
|
||||||
class CVBEInfo
|
class CVBEInfo
|
||||||
|
|
|
@ -119,3 +119,6 @@ U0 Cvt(U8 *ff_mask="*", U8 *fu_flags="+r+l-i+S")
|
||||||
}
|
}
|
||||||
|
|
||||||
//Cvt("Sup1/*");
|
//Cvt("Sup1/*");
|
||||||
|
|
||||||
|
//TODO add flushmessages
|
||||||
|
// TODO D( --> Dump(
|
Loading…
Reference in a new issue