A TempleOS distro for heretics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

401 lines
10 KiB

//The CFG defines are $LK,"~/TOS/TOSCfg.HC",A="FI:::/Demo/AcctExample/TOS/TOSCfg.HC"$.
#define MAKE_LITE 0
#define MAKE_DBG 0
#define MAKE_STAFF 0
public U8 TOSGetDrv()
{//Pmt for drv let.
I64 res;
"Drive (%s):",TOS_HDS;
res=Let2Let(GetChar);
'\n';
return res;
}
public U0 TOSBootHDIns(U8 drv_let=0)
{//Make Compiler and Kernel. Reinstall Kernel.
drv_let=Let2Let(drv_let);
In(TOS_CFG);
BootHDIns(drv_let);
if (StrOcc(TOS_MASTER_BOOT_DRVS,drv_let))
BootMHDIns(drv_let);
}
public U0 TOSCopyDrv(U8 src,U8 dst)
{//Fmt dst and copy entire drv.
U8 buf_s[STR_LEN],buf_d[STR_LEN];
src=Let2Let(src);
dst=Let2Let(dst);
if (dst=='D')
Fmt(dst,,FALSE,FSt_FAT32);
else
Fmt(dst,,FALSE,FSt_REDSEA);
StrPrint(buf_s,"%c:/",src);
StrPrint(buf_d,"%c:/",dst);
CopyTree(buf_s,buf_d);
DocClear;
Drv(dst);
TOSBootHDIns(dst);
}
public U0 TOSPmtAndCopyDrv()
{//Pmt for drv lets. Then, Fmt dst and copy entire drv.
I64 src,dst;
"$$RED$$\nCopy Src Drive:\n$$FG$$";
src=TOSGetDrv;
"$$RED$$\nCopy Dst Drive:\n$$FG$$";
dst=TOSGetDrv;
TOSCopyDrv(src,dst);
}
U0 DistroPrep()
{
AOnceFlush; //Don't want in Registry
OnceFlush;
Del("/Home/Demo*");
DelTree("/Home/*Tmp.DD.Z");
DelTree("/Tmp");
DirMk("/Tmp");
DirMk("/Tmp/ScrnShots");
Touch("/PersonalMenu.DD.Z","+T");
Touch("/Home/PersonalMenu.DD.Z","+T");
DelTree("/Demo/AcctExample");
CopyTree("/Home","/Demo/AcctExample");
DelTree("/Demo/AcctExample/TAD");
DelTree("/Demo/AcctExample/Sup1");
DelTree("/Demo/AcctExample/Sup2");
DelTree("/Demo/AcctExample/Sup3");
Del("/Demo/AcctExample/Test*");
if (FileFind("~/Sup1/Sup1Utils/SortHeaders.HC.Z"))
ExeFile("~/Sup1/Sup1Utils/SortHeaders.HC.Z");
// CursorRem("/*");
DelTree("/Demo/*.BI*");
// S2T("/*","+r+S");
// DocOpt("/*","+R");
Move(ACD_DEF_FILENAME,ACD_DEF_FILENAME_Z);
}
U0 DbgDistroFilePrep()
{
CBlkDev *bd;
if (!Let2Drv('A',FALSE)) {
In(CFG_DBG_DISTRO "\n");
Mount;
}
bd=Let2BlkDev('A');
Fmt('A',,FALSE,FSt_REDSEA);
DirMk("A:/Compiler");
Copy("C:/Compiler/Compiler.BIN.Z", "A:/Compiler");
Copy("C:/Compiler/OpCodes.DD.Z", "A:/Compiler");
Copy("C:/Compiler/CompilerA.HH.Z", "A:/Compiler");
Copy("C:/Compiler/CompilerB.HH.Z", "A:/Compiler");
DirMk("A:/Kernel");
Copy("C:/Kernel/*.HH*", "A:/Kernel");
CopyTree("C:/Kernel/BlkDev", "A:/Kernel/BlkDev");
Copy("C:/Home/Sup1/Sup1Distro/DbgStartOS.HC.Z","A:/StartOS.HC.Z");
DirMk("A:/Adam");
Copy("C:/Home/Sup1/Sup1Distro/DbgMakeAdam.HC.Z","A:/Adam/MakeAdam.HC.Z");
Copy("C:/Home/Sup1/Sup1Distro/DbgMount.HC.Z","A:/Adam");
Copy("C:/Adam/AExts.HC.Z", "A:/Adam");
Copy("C:/Adam/AMath.HC.Z", "A:/Adam");
Copy("C:/Adam/Training.HC.Z","A:/Adam");
Copy("C:/Adam/AMem.HC.Z", "A:/Adam");
Copy("C:/Adam/TaskRep.HC.Z", "A:/Adam");
FileWrite("C:" CFG_DBG_DISTRO_FILE,
bd->RAM_dsk,(bd->max_blk+1)<<BLK_SIZE_BITS);
}
U0 StdDistroPrep()
{
Drv('C');
DistroPrep;
In(STD_DISTRO_DVD_CFG);
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
DirMk(TOS_DISTRO_DIR);
CopyTree("C:/0000Boot",TOS_DISTRO_DIR "/0000Boot");
CopyTree("C:/Adam",TOS_DISTRO_DIR "/Adam");
CopyTree("C:/Apps",TOS_DISTRO_DIR "/Apps");
CopyTree("C:/Compiler",TOS_DISTRO_DIR "/Compiler");
CopyTree("C:/Demo",TOS_DISTRO_DIR "/Demo");
CopyTree("C:/Doc",TOS_DISTRO_DIR "/Doc");
CopyTree("C:/Downloads",TOS_DISTRO_DIR "/Downloads");
DirMk(TOS_DISTRO_DIR "/Home");
CopyTree("C:/Kernel",TOS_DISTRO_DIR "/Kernel");
CopyTree("C:/Misc",TOS_DISTRO_DIR "/Misc");
// CopyTree("C:/User",TOS_DISTRO_DIR "/User");
Copy("C:/HomeKeyPlugIns.HC", TOS_DISTRO_DIR "/");
Copy("C:/HomeLocalize.HC", TOS_DISTRO_DIR "/");
Copy("C:/HomeSys.HC", TOS_DISTRO_DIR "/");
Copy("C:/HomeWrappers.HC", TOS_DISTRO_DIR "/");
Copy("C:/MakeHome.HC", TOS_DISTRO_DIR "/");
Copy("C:/Once.HC", TOS_DISTRO_DIR "/");
Copy("C:/PersonalMenu.DD", TOS_DISTRO_DIR "/");
Copy("C:/PersonalNotes.DD", TOS_DISTRO_DIR "/");
Copy("C:/StartOS.HC", TOS_DISTRO_DIR "/");
Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C);
Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C");
Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C");
}
U0 MakeStdDistro()
{
StdDistroPrep;
RedSeaISO(TOS_ISO_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
"Written %s.\n", TOS_ISO_NAME;
DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V5.03",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
U0 LiteDistroPrep()
{
Drv('C');
DistroPrep;
In(STD_DISTRO_DVD_CFG);
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
DelTree(TOS_DISTRO_DIR "/Home");
DirMk(TOS_DISTRO_DIR "/Home");
DelTree(TOS_DISTRO_DIR "/Apps");
DelTree(TOS_DISTRO_DIR "/Demo");
Copy(TOS_DISTRO_DIR "/Demo/Games/Talons.HC.Z",TOS_DISTRO_DIR "/Home");
Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C);
Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C");
Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C");
Del(TOS_DISTRO_DIR "/Adam/AutoComplete/ACDefs.DATA.Z");
Del(TOS_DISTRO_DIR "/Adam/AutoComplete/ACWords.DATA.Z");
Del(TOS_DISTRO_DIR "/Misc/Bible.TXT.Z");
}
U0 MakeLiteDistro()
{
LiteDistroPrep;
RedSeaISO(TOS_ISO_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V5.03",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
U0 DbgDistroPrep()
{
Drv('C');
DistroPrep;
DbgDistroFilePrep;
In(TOS_DVD_DBG_CFG);
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
DelTree(TOS_DISTRO_DIR "/Home");
DirMk(TOS_DISTRO_DIR "/Home");
Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C);
Del(TOS_DISTRO_DIR BOOT_DIR "/OldMBR.BIN.C");
Del(TOS_DISTRO_DIR BOOT_DIR "/BootMHD2.BIN.C");
}
U0 MakeDbgDistro()
{
DbgDistroPrep;
RedSeaISO(TOS_ISO_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOS_DBG_SIZE",
"Download $TX,"TempleOS V5.03",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1fMB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
U0 StaffDistroPrep()
{
Drv('C');
DistroPrep;
In(TOS_DVD_CFG);
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
DelTree(TOS_DISTRO_DIR "/Home/Sup1");
DelTree(TOS_DISTRO_DIR "/Home/Sup2");
DelTree(TOS_DISTRO_DIR "/Home/Sup3");
Del(TOS_DISTRO_DIR "/" KERNEL_BIN_C);
}
U0 MakeStaffDistro()
{
StaffDistroPrep;
RedSeaISO(TOS_ISO_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOS_STAFF_SIZE",
"Download $TX,"TempleOS V5.03",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1fMB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
I64 UpdateLineCnts()
{
I64 res;
DocClear;
Drv('C');
DistroPrep;
Cd("C:/");
DelTree("B:/TOS/TOS");
CopyTree("C:/Home","B:/TOS/TOS");
DelTree("C:/Home");
DocMax;
DocClear;
res=LineRep("C:/*","-r")+LineRep("C:/Adam/*")+
LineRep("C:/Compiler/*","-S+$$")+LineRep("C:/Kernel/*");
CopyTree("B:/TOS/TOS","C:/Home");
DelTree("B:/TOS/TOS");
DocTreeFWrite("C:/Adam/ADefine.HC.Z","LineRep",
"DefinePrint(\"DD_TEMPLEOS_LOC\",\"%,d\");\n",res);
DefinePrint("DD_TEMPLEOS_LOC","%,d",res);
"Total LOC:%12,d\n\n",res;
return res;
}
U0 UpdateISODocDefines()
{
try {
DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V5.03",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1fMB)",
0.1*(10*Size("D:/Downloads/TOS_Distro.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSCD_K_SIZE",
"%dKB",Size("D:/Downloads/TOS_Distro.ISO","+s")/1024);
} catch
Fs->catch_except=TRUE;
}
UpdateISODocDefines;
I64 tos_progress;
F64 tos_progress_t0;
U0 TOSProgress(U8 *st)
{
U8 buf[STR_LEN];
progress4=tos_progress;
progress3_max=1;
*progress4_desc=0;
progress4_max=9+MAKE_LITE+MAKE_DBG+MAKE_STAFF;
progress4_t0=tos_progress_t0;
StrPrint(buf,"%d. %s",++progress4,st);
"$$PURPLE$$$$TX+CX,\"%s\"$$$$FG$$\n",buf;
StrCpy(progress3_desc,buf);
tos_progress=progress4;
}
public U0 DskChkAll()
{//DskChk on C & D.
U8 *ptr=TOS_HDS;
while (*ptr) {
"DskChk('%c')\n",*ptr;
DskChk(*ptr++,TRUE);
}
}
U0 TOSRegen2()
{
// I64 slash_home=0;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
tos_progress=-1;
tos_progress_t0=tS;
RegExe("TempleOS/TOSRegen");
TOSProgress("DskChk All");
AutoComplete;
WinBorder;
WinMax;
DskChkAll;
TOSProgress("Update Line Cnts");
UpdateLineCnts;
TOSProgress("Copy C to D");
TOSCopyDrv('C','D');
TOSProgress("Make Standard Distro ISO");
MakeStdDistro;
DocClear;
Move(TOS_ISO_NAME,"D:/Downloads/TOS_Distro.ISO");
TOSProgress("Make Supplemental1 ISO");
RedSeaISO("D:/Downloads/TOS_Supplemental1","C:/Home/Sup1");
TOSProgress("Make Supplemental2 ISO");
RedSeaISO("D:/Downloads/TOS_Supplemental2","C:/Home/Sup2");
TOSProgress("Make Supplemental3 ISO");
RedSeaISO("D:/Downloads/TOS_Supplemental3","C:/Home/Sup3");
#if MAKE_LITE
TOSProgress("Make Lite Distro ISO");
MakeLiteDistro;
DocClear;
Move(TOS_ISO_NAME,"D:/Downloads/TOS_Lite.ISO");
#endif
#if MAKE_DBG
TOSProgress("Make Dbg Distro ISO");
MakeDbgDistro;
DocClear;
Move(TOS_ISO_NAME,"D:/Downloads/TOS_Dbg.ISO");
#endif
#if MAKE_STAFF
TOSProgress("Make Staff Distro ISO");
MakeStaffDistro;
DocClear;
Move(TOS_ISO_NAME,"D:/Downloads/TOS_Staff.ISO");
#endif
UpdateISODocDefines;
Cd("C:/");
DocClear;
TOSProgress("Check for Long Lines");
if (LongLines)
throw;
DocClear;
TOSProgress("Check for Broken DolDoc Links");
if (LinkChk)
throw;
// TOSProgress("Find /Home");
// slash_home=F2("/Home","-i+la");
TOSProgress("DskChk All");
Drv('C');
DskChkAll;
TOSProgress("Done");
SettingsPop;
// "F2(\"/Home\") Cnt\t:%d\n",slash_home;
"Elapsed Time\t:%5.3fs\n",tS-progress4_t0;
ProgressBarsRst("TempleOS/TOSRegen");
}
public U0 TOSRegen()
{//Generate distro ISO's
TOSBootHDIns('C');
Once("TOSRegen2;");
BootRAM("C:/Kernel/" KERNEL_BIN_C); //Boot to load $LK,"TOS_CFG",A="PF:::/Demo/AcctExample/TOS/TOSCfg.HC,TOS_CFG"$.
}