U0 InstallDrive(U8 drv_let) { U8 *st; ExePrint("CopyTree(\"::/\",\"%C:/\");",drv_let); ExePrint("DirMake(\"%C:/Tmp\");",drv_let); ExePrint("DirMake(\"%C:/Tmp/ScreenShots\");",drv_let); ExePrint("DirMake(\"%C:/Home\");",drv_let); st=MStrPrint("%C:/Home/DoDistro.CC",drv_let); if (!FileFind(st)) Copy("::/Misc/DoDistro.CC",st); Free(st); st=MStrPrint("%C:/Home/MakeHome.CC",drv_let); if (!FileFind(st)) Copy("::/MakeHome.CC",st); Free(st); } Bool VMPartDisk(CTask *task,CATARep *ata_drive) { if (ata_drive) { XTalkWait(task,"DiskPart(,0.5,0.5);\nC\np%d\nY",ata_drive->num); return TRUE; } else return FALSE; } U0 VMInstallDrive(CTask *task,U8 drv_let, CATARep *ata_drive,CATARep *atapi_drive) { InstallDrive(drv_let); XTalkWait(task,"BootHDIns('%C');\n\nB\n0x20000\n",drv_let); if (ata_drive) XTalkWait(task,"C\np%d\n",ata_drive->num); if (atapi_drive) XTalkWait(task,"Tp%d\n",atapi_drive->num); XTalkWait(task,"\n1024\n768\n\n\n"); //Exit Drives, set Screen Resolution, skip Disk Cache and Options } U0 VMInstallWiz() { CATARep *head=NULL,*ata_drive=NULL,*atapi_drive=NULL; CTask *task; task=User; TaskWait(task); task->border_src=BDS_CONST; task->border_attr=LTGRAY<<4+DriveTextAttrGet(':')&15; task->text_attr =LTGRAY<<4+BLUE; task->win_inhibit=WIG_TASK_DEFAULT-WIF_SELF_BORDER; WinHorz(Fs->win_left,Fs->win_right,task); WinVert(Fs->win_top,(Fs->win_top+Fs->win_bottom)>>2-1,task); WinVert(task->win_bottom+3,Fs->win_bottom); WinToTop(Fs); ATARep(FALSE,TRUE,&head); ATAIDDrives(head,&ata_drive,&atapi_drive); if (VMPartDisk(task,ata_drive)) { VMInstallDrive(task,'C',ata_drive,atapi_drive); VMInstallDrive(task,'D',ata_drive,atapi_drive); BootMHDIns('C'); } LinkedListDel(head); WinVert(task->win_top,Fs->win_bottom); Kill(task); } U0 RegularInstallWiz() { I64 unit,drv_let; U8 *st,*base0,*base1; CATARep *head=NULL,*tmpha; I64 ch,num_hints,res_num; CTask *task; task=User; TaskWait(task); task->border_src=BDS_CONST; task->border_attr=LTGRAY<<4+DriveTextAttrGet(':')&15; task->text_attr =LTGRAY<<4+BLUE; task->win_inhibit=WIG_TASK_DEFAULT-WIF_SELF_BORDER; WinHorz(Fs->win_left,Fs->win_right,task); WinVert(Fs->win_top,(Fs->win_top+Fs->win_bottom)>>2-1,task); WinVert(task->win_bottom+3,Fs->win_bottom); WinToTop(Fs); XTalk(task,"Mount;\nC\np"); num_hints=ATARep(FALSE,,&head); "\nInclude '$$PURPLE$$0x$$FG$$' for hexidecimal numbers.\n\n"; while (TRUE) { base0=StrGet("Hard Drive I/O Port Base0 : "); if (0base0); base1=MStrPrint("0x%X",tmpha->base1); st =MStrPrint("0x%X",tmpha->unit); unit=Str2I64(st); Free(st); } else { while (TRUE) { base1=StrGet("Hard Drive I/O Port Base1 : "); if (0$$FG$$ for max res): ",,1); XTalkWait(task, "%d\n\n\n", res_num); //skip through Disk Cache, Options "$$RED$$Install Master Boot loader?$$FG$$"; if (YorN) { '\n'; BootMHDIns(drv_let); } Free(base0); Free(base1); WinVert(task->win_top,Fs->win_bottom); Kill(task); } U0 DoInstructions() { CTask *task=User; AutoComplete; WinToTop(Fs); WinTileVert; XTalk(task, "Ed(\"::/Doc/Install.DD\");\n"); } Bool DoInstall(Bool prompt_reboot) { I64 res = FALSE, vm_install = TRUE; CSMBIOSSystemInfo *sys_info = SMBIOSStructGet(SMBIOSt_SYSTEM); U8 *company = SMBIOSStr(sys_info, sys_info->manufacturer); if (StrCompare(company, "VMware, Inc.") && StrCompare(company, "innotek GmbH") && StrCompare(company, "QEMU")) { "\n\n\n\n\nAre you installing inside VMware, QEMU, VirtualBox or a similar virtual machine? "; vm_install = YorN; } DocBottom; if (vm_install) { VMInstallWiz(); res = TRUE; } else { "\n\nThis wizard works if you have a partition ready. You can partition the drive or BootHDIns() " "with more options if you do it by hand, not using this wizard.\n\n" "Continue Install Wizard "; if (YorN) { RegularInstallWiz(); res = TRUE; } else prompt_reboot = FALSE; } if (prompt_reboot) { "Reboot Now "; if (YorN) Reboot; } return res; } Bool OSInstall(Bool prompt_reboot=TRUE) { DoInstructions; return DoInstall(prompt_reboot); } #if __CMD_LINE__ OSInstall(TRUE); #endif