TempleOSCDV4.09.ISO
This commit is contained in:
1 parent
2d56cda5f3
commit
353eac0dbe
88 files changed
+2449
-2043
No files matched your search
@@ -323,7 +323,7 @@ U0 FMDelete(CDoc *doc)
|
||||
}
|
||||
}
|
||||
|
||||
U0 FMMount(CDoc *doc)
|
||||
U0 FMChgDsk(CDoc *doc)
|
||||
{
|
||||
CDocEntry *doc_ce=doc->cur_entry;
|
||||
CDirEntry *tempde;
|
||||
@@ -340,6 +340,32 @@ U0 FMMount(CDoc *doc)
|
||||
}
|
||||
}
|
||||
|
||||
U0 FMMountISO(CDoc *doc)
|
||||
{
|
||||
CDocEntry *doc_ce=doc->cur_entry;
|
||||
CDirEntry *tempde;
|
||||
if (doc_ce->type_u8==DOCT_MENU_VAL && (tempde=doc_ce->user_data))
|
||||
MountFile(tempde->full_name);
|
||||
}
|
||||
|
||||
U0 FMUnmount(CDoc *doc)
|
||||
{
|
||||
CDocEntry *doc_ce=doc->cur_entry;
|
||||
CDirEntry *tempde;
|
||||
I64 drv_let;
|
||||
if (doc_ce->type_u8==DOCT_TREE || doc_ce->type_u8==DOCT_MENU_VAL)
|
||||
tempde=doc_ce->user_data;
|
||||
else
|
||||
tempde=NULL;
|
||||
if (tempde) {
|
||||
while (tempde->parent)
|
||||
tempde=tempde->parent;
|
||||
drv_let=*tempde->full_name;
|
||||
if (Let2BlkDev(drv_let)!=Let2BlkDev(':'))
|
||||
Unmount(drv_let);
|
||||
}
|
||||
}
|
||||
|
||||
U0 FMFmtDrv(CDoc *doc)
|
||||
{
|
||||
CDocEntry *doc_ce=doc->cur_entry;
|
||||
@@ -460,9 +486,11 @@ U0 FMCopy(CDoc *doc)
|
||||
#define FMR_PASTE 6
|
||||
#define FMR_CHG_DSK 7
|
||||
#define FMR_FORMAT 8
|
||||
#define FMR_MAKE_ISO 9
|
||||
#define FMR_BURN_ISO 10
|
||||
#define FMR_HELP 11
|
||||
#define FMR_MOUNT_ISO 9
|
||||
#define FMR_UNMOUNT 10
|
||||
#define FMR_MAKE_ISO 11
|
||||
#define FMR_BURN_ISO 12
|
||||
#define FMR_HELP 13
|
||||
|
||||
I64 PopUpFMRight(U8 *header=NULL,U8 *footer=NULL)
|
||||
{
|
||||
@@ -478,6 +506,8 @@ I64 PopUpFMRight(U8 *header=NULL,U8 *footer=NULL)
|
||||
"$$CM+LX,1,3 $$$$BT,\"PASTE CLIPBOARD FILES \",LE=FMR_PASTE$$"
|
||||
"$$CM+LX,27,0$$$$BT,\"CHANGE DISK(MOUNT IT) \",LE=FMR_CHG_DSK$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"FORMAT \",LE=FMR_FORMAT$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"MOUNT ISO.C FILE \",LE=FMR_MOUNT_ISO$$"
|
||||
"$$CM+LX,27,0$$$$BT,\"UNMOUNT \",LE=FMR_UNMOUNT$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"MAKE ISO (CD/DVD) FILE\",LE=FMR_MAKE_ISO$$"
|
||||
"$$CM+LX,27,0$$$$BT,\"BURN ISO (CD/DVD) FILE\",LE=FMR_BURN_ISO$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"HELP \",LE=FMR_HELP$$"
|
||||
@@ -518,6 +548,12 @@ U0 FMRightClick()
|
||||
case FMR_FORMAT:
|
||||
Msg(MSG_KEY_DOWN,'f',0);
|
||||
break;
|
||||
case FMR_MOUNT_ISO:
|
||||
Msg(MSG_KEY_DOWN,'i',0);
|
||||
break;
|
||||
case FMR_UNMOUNT:
|
||||
Msg(MSG_KEY_DOWN,'u',0);
|
||||
break;
|
||||
case FMR_MAKE_ISO:
|
||||
Msg(MSG_KEY_DOWN,'M',0);
|
||||
break;
|
||||
@@ -667,7 +703,13 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
|
||||
FMDelete(doc);
|
||||
break;
|
||||
case 'm':
|
||||
FMMount(doc);
|
||||
FMChgDsk(doc);
|
||||
break;
|
||||
case 'i':
|
||||
FMMountISO(doc);
|
||||
break;
|
||||
case 'u':
|
||||
FMUnmount(doc);
|
||||
break;
|
||||
case 'M':
|
||||
FMMakeISO(doc);
|
||||
|
||||
+36
-5
@@ -2,7 +2,8 @@
|
||||
I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
||||
{//If _doc, called by $LK,"::/Kernel/KCfg.CPP"$ else called by $LK,"Mount",A="MN:Mount"$().
|
||||
I64 cnt,res=0,num_hints,drv_let,type,unit;
|
||||
U8 blks_buf[STR_LEN],addr_buf[STR_LEN],base0_buf[STR_LEN],base1_buf[STR_LEN];
|
||||
U8 blks_buf[STR_LEN],addr_buf[STR_LEN],base0_buf[STR_LEN],base1_buf[STR_LEN],
|
||||
*filename=NULL,*filename2=NULL;
|
||||
CATARep *root=NULL,*tempha;
|
||||
Bool one_drv,make_free;
|
||||
CDoc *doc;
|
||||
@@ -14,7 +15,8 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
||||
"\n****** Mount Drives ******\n"
|
||||
"$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n"
|
||||
"$$GREEN$$C$$FG$$-$$GREEN$$L$$FG$$ are ATA hard drives.\n"
|
||||
"$$GREEN$$M$$FG$$-$$GREEN$$S$$FG$$ are file drives.\n"
|
||||
"$$GREEN$$M$$FG$$-$$GREEN$$P$$FG$$ are file read drives.\n"
|
||||
"$$GREEN$$Q$$FG$$-$$GREEN$$S$$FG$$ are file write drives.\n"
|
||||
"$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI CD/DVD drives.\n"
|
||||
"\nDrive Letter ($$PURPLE$$<ENTER>$$FG$$ to exit):";
|
||||
drv_let=ToUpper(GetChar);
|
||||
@@ -34,10 +36,13 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
||||
case BDT_RAM:
|
||||
"Addr of RAM disk ($$PURPLE$$<ENTER>$$FG$$ to MAlloc):";
|
||||
GetS(addr_buf,STR_LEN);
|
||||
case BDT_FILE:
|
||||
case BDT_FILE_WRITE:
|
||||
"Blks of 512 bytes:";
|
||||
GetS(blks_buf,STR_LEN);
|
||||
break;
|
||||
case BDT_FILE_READ:
|
||||
filename=GetStr("File Name:");
|
||||
break;
|
||||
case BDT_ATA:
|
||||
case BDT_ATAPI:
|
||||
num_hints=ATARep(,,&root);
|
||||
@@ -73,16 +78,22 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
||||
LinkedLstDel(root);
|
||||
break;
|
||||
}
|
||||
DocPrint(doc,"bd=BlkDevNextFree(\'%C\',%d);bd->unit=%d;\n",
|
||||
DocPrint(doc,"bd=BlkDevNextFreeSlot(\'%C\',%d);bd->unit=%d;\n",
|
||||
drv_let,type,unit);
|
||||
switch (type) {
|
||||
case BDT_RAM:
|
||||
if (!*addr_buf) StrCpy(addr_buf,"0");
|
||||
DocPrint(doc,"bd->RAM_dsk=%s;\n",addr_buf);
|
||||
case BDT_FILE:
|
||||
case BDT_FILE_WRITE:
|
||||
if (!*blks_buf) StrCpy(blks_buf,"0");
|
||||
DocPrint(doc,"bd->max_blk=(%s)-1;\n",blks_buf);
|
||||
break;
|
||||
case BDT_FILE_READ:
|
||||
filename2=FileNameAbs(filename);
|
||||
DocPrint(doc,"bd->file_dsk_name=AStrNew(\"%s\");\n",filename2);
|
||||
DocPrint(doc,"bd->drv_offset=19<<2+"
|
||||
"(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;\n");
|
||||
break;
|
||||
case BDT_ATA:
|
||||
case BDT_ATAPI:
|
||||
if (type==BDT_ATAPI && !*base0_buf) {
|
||||
@@ -108,6 +119,8 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
||||
}
|
||||
res+=cnt;
|
||||
} while (cnt || !res && _doc); //At least 1 if Called by $LK,"::/Kernel/KCfg.CPP"$
|
||||
Free(filename);
|
||||
Free(filename2);
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -115,3 +128,21 @@ public I64 Mount(Bool repartition=FALSE)
|
||||
{//Mount drives.
|
||||
return Mount2(0,NULL,repartition);
|
||||
}
|
||||
|
||||
public U0 Unmount(U8 drv_let=0)
|
||||
{//Unmount drive(s).
|
||||
BlkDevDel(Let2BlkDev(drv_let));
|
||||
}
|
||||
|
||||
public U8 MountFile(U8 *filename)
|
||||
{//Mount ISO.C file.
|
||||
U8 *filename2=DftExt(filename,"ISO.C"),*filename3=FileNameAbs(filename2);
|
||||
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('M')); //First $LK,"BDT_FILE_READ",A="MN:BDT_FILE_READ"$
|
||||
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_FILE_READ);
|
||||
bd->drv_offset=19<<2+(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
|
||||
bd->file_dsk_name=AStrNew(filename3);
|
||||
BlkDevAdd(bd,TRUE,TRUE);
|
||||
Free(filename3);
|
||||
Free(filename2);
|
||||
return dv->drv_let;
|
||||
}
|
||||
@@ -32,7 +32,7 @@ public I64 PrtDsk(U8 drv_let=0)
|
||||
"make your hard drive impossible\n"
|
||||
"to repartition with other operating\n"
|
||||
"until you set block zero to zero\n"
|
||||
"with $$LK,\"MasterBootZero\",\"MN:MasterBootZero\"$$()\n\n\n"
|
||||
"with $$LK,\"BootMHDZero\",\"MN:BootMHDZero\"$$()\n\n\n"
|
||||
"Continue";
|
||||
if (!YorN) return 0;
|
||||
if (drv_let && !Let2BlkDev(drv_let,FALSE))
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ U0 LoadDocDefines()
|
||||
//This is cut and replaced when I generate a distro.
|
||||
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
|
||||
$TR-C,"LineRep"$
|
||||
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,845");
|
||||
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,741");
|
||||
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","121,194");
|
||||
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,057");
|
||||
$ID,-4$
|
||||
DefinePrint("DD_KERNEL","%08X",bfh);
|
||||
bfh(I64)+=bfh->file_size-1;
|
||||
|
||||
@@ -265,9 +265,9 @@ public F64 PopUpRangeF64Log(F64 lo,F64 hi,I64 steps,
|
||||
return PopUpRangeF64Exp(lo,hi,Exp(Ln(hi/lo)/(steps-1)),fmt,header,footer);
|
||||
}
|
||||
|
||||
#help_index "Task/Srv/Exe"
|
||||
#help_index "Task/Srv/Exe;Compiler"
|
||||
public I64 AdamFile(U8 *filename,Bool warn_ext=TRUE)
|
||||
{//Tell adam task to compile and run a file.
|
||||
{//Make adam_task execute file.
|
||||
Bool okay=TRUE;
|
||||
U8 *name=FileNameAbs(filename),
|
||||
*name2=DftExt(name,"CPP.Z");
|
||||
@@ -285,7 +285,7 @@ public I64 AdamFile(U8 *filename,Bool warn_ext=TRUE)
|
||||
|
||||
public I64 PopUpFile(U8 *filename,Bool warn_ext=TRUE,
|
||||
CTask *parent=NULL,CTask **_pu_task=NULL)
|
||||
{//Run code file in PopUp win task.
|
||||
{//$LK,"ExeFile2",A="MN:ExeFile2"$() in $LK,"PopUp",A="MN:PopUp"$ task. Cont as User.
|
||||
Bool okay=TRUE;
|
||||
U8 *st,*name=FileNameAbs(filename),
|
||||
*name2=DftExt(name,"CPP.Z");
|
||||
@@ -306,3 +306,18 @@ public I64 PopUpFile(U8 *filename,Bool warn_ext=TRUE,
|
||||
Free(name);
|
||||
return res;
|
||||
}
|
||||
|
||||
public I64 PopUpRunFile(U8 *filename,I64 ccf_flags=0,...)
|
||||
{//$LK,"ExeFile",A="MN:ExeFile"$() with args using $LK,"LastFun",A="MN:LastFun"$() in $LK,"PopUp",A="MN:PopUp"$ task.
|
||||
U8 *st,*name=FileNameAbs(filename),
|
||||
*name2=DftExt(name,"CPP.Z");
|
||||
I64 res=0;
|
||||
st=MStrPrint(
|
||||
"\"$$$$WW+H,1$$$$\";ExeFile2(\"%s\",0x%X);LastFun(0x%X,0x%X);",
|
||||
name2,ccf_flags,argc,argv);
|
||||
res=PopUp(st,Fs);
|
||||
Free(st);
|
||||
Free(name2);
|
||||
Free(name);
|
||||
return res;
|
||||
}
|
||||
+19
-5
@@ -59,8 +59,9 @@ public U0 DocTermNew()
|
||||
#define RIGHT_DELETE 4
|
||||
#define RIGHT_TYPE 5
|
||||
#define RIGHT_ED 6
|
||||
#define RIGHT_PLAIN 7
|
||||
#define RIGHT_AUTOFILE 8
|
||||
#define RIGHT_MOUNT 7
|
||||
#define RIGHT_PLAIN 8
|
||||
#define RIGHT_AUTOFILE 9
|
||||
|
||||
I64 PopUpTermRight(U8 *header)
|
||||
{
|
||||
@@ -76,9 +77,10 @@ I64 PopUpTermRight(U8 *header)
|
||||
"$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=RIGHT_DELETE$$"
|
||||
"$$CM+LX,26,0$$$$BT,\"TYPE TXT;GRA\",LE=RIGHT_TYPE$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"ED TXT\",LE=RIGHT_ED$$"
|
||||
"$$CM+LX,26,0$$$$BT,\"PLAIN ED TXT\",LE=RIGHT_PLAIN$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$"
|
||||
"$$CM+LX,26,0$$$$BT,\"AUTOFILE AUT\",LE=RIGHT_AUTOFILE$$\n",
|
||||
"$$CM+LX,26,0$$$$BT,\"MOUNT ISO.C\",LE=RIGHT_MOUNT$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"PLAIN ED TXT\",LE=RIGHT_PLAIN$$"
|
||||
"$$CM+LX,26,0$$$$BT,\"AUTOFILE AUT\",LE=RIGHT_AUTOFILE$$\n"
|
||||
"$$CM+LX,1,3 $$$$BT,\"CANCEL \",LE=DOCM_CANCEL$$",
|
||||
FILEMASK_TXT,FILEMASK_JIT,FILEMASK_GRA);
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
@@ -160,6 +162,18 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
"Ed(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
res=Ed(st);
|
||||
break;
|
||||
case RIGHT_MOUNT:
|
||||
if (FileExtDot(st) && !FilesFindMatch(st,"*.ISO.C")) {
|
||||
if (!PopUpCancelOk(ST_WARN_ST "Not .ISO.C File\n\n")) {
|
||||
send_new_line=TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
"MountFile(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
MountFile(st);
|
||||
res=TRUE;
|
||||
break;
|
||||
case RIGHT_PLAIN:
|
||||
"Plain(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
res=Plain(st);
|
||||
|
||||
@@ -119,9 +119,9 @@ public I64 ExeDoc(CDoc *doc,I64 ccf_flags=0)
|
||||
I64 res;
|
||||
Bool okay=TRUE,unlock_doc=DocLock(doc);
|
||||
CCmpCtrl *cc=CmpCtrlNew(,ccf_flags|CCF_DONT_FREE_BUF);
|
||||
if (Fs->last_lex!=&Fs->next_lex)
|
||||
cc->opts=Fs->last_lex->opts;
|
||||
QueIns(cc,Fs->last_lex);
|
||||
if (Fs->last_cc!=&Fs->next_cc)
|
||||
cc->opts=Fs->last_cc->opts;
|
||||
QueIns(cc,Fs->last_cc);
|
||||
LexAttachDoc(cc,,doc);
|
||||
try {
|
||||
Lex(cc);
|
||||
|
||||
+383
-271
@@ -1396,313 +1396,425 @@ gr_done:
|
||||
|
||||
public I64 GrFillTri0(CDC *dc=gr.dc,CD3I32 *p1,CD3I32 *p2,CD3I32 *p4)
|
||||
{//3D. Returns cnt of pixs changed
|
||||
I64 x1,x2,y,z1,z2,dx1,dy1,dz1,dx2,dy2,dz2,res=0,i,y_min,y_max;
|
||||
I64 x1,x2,y1,y2,z1,z2,dx1,dy1,dz1,dx2,dy2,dz2,res=0,i,min,max;
|
||||
CTask *win_task;
|
||||
|
||||
if (AbsI64(p1->y-p2->y)+AbsI64(p1->y-p4->y)<=
|
||||
AbsI64(p1->x-p2->x)+AbsI64(p1->x-p4->x)) {
|
||||
//p1 is min x
|
||||
if (p4->x<p2->x)
|
||||
SwapI64(&p4,&p2);
|
||||
if (p2->x<p1->x)
|
||||
SwapI64(&p2,&p1);
|
||||
if (p4->x<p2->x)
|
||||
SwapI64(&p4,&p2);
|
||||
if (p2->x<p1->x)
|
||||
SwapI64(&p2,&p1);
|
||||
|
||||
//p2y<=p4y
|
||||
if (p4->y<p2->y)
|
||||
SwapI64(&p4,&p2);
|
||||
//p2y<=p4y
|
||||
if (p4->y<p2->y)
|
||||
SwapI64(&p4,&p2);
|
||||
|
||||
y_min=0;
|
||||
y_max=dc->height;
|
||||
if (dc->flags & DCF_SCREEN_BITMAP) {
|
||||
win_task=dc->win_task;
|
||||
y_min-=win_task->scroll_y+win_task->pix_top;
|
||||
y_max-=win_task->scroll_y+win_task->pix_top;
|
||||
if (y_max>win_task->pix_bottom-(win_task->scroll_y+win_task->pix_top))
|
||||
y_max=win_task->pix_bottom-(win_task->scroll_y+win_task->pix_top);
|
||||
}
|
||||
|
||||
if ((dy2=p4->y-p1->y)<0) {
|
||||
/*
|
||||
p1x<= {p2x,p4x}
|
||||
|
||||
p2y<=
|
||||
p4y<
|
||||
p1y
|
||||
|
||||
6
|
||||
1
|
||||
|
||||
6
|
||||
1
|
||||
|
||||
24
|
||||
1
|
||||
|
||||
42
|
||||
1
|
||||
|
||||
2
|
||||
4
|
||||
1
|
||||
|
||||
24
|
||||
1
|
||||
|
||||
42
|
||||
1
|
||||
|
||||
2
|
||||
4
|
||||
1
|
||||
|
||||
*/
|
||||
dy1=p2->y-p1->y;
|
||||
dx1=(p1->x-p2->x)<<32/dy1;
|
||||
dz1=(p1->z-p2->z)<<32/dy1;
|
||||
|
||||
dx2=(p1->x-p4->x)<<32/dy2;
|
||||
dz2=(p1->z-p4->z)<<32/dy2;
|
||||
x1=x2=p1->x<<32; y=p1->y; z1=z2=p1->z<<32;
|
||||
if (y+dy2<y_min) {
|
||||
i=y_min-(y+dy2);
|
||||
if (i>-dy2) goto ft_done;
|
||||
dy2+=i;
|
||||
min=0;
|
||||
max=dc->height;
|
||||
if (dc->flags & DCF_SCREEN_BITMAP) {
|
||||
win_task=dc->win_task;
|
||||
min-=win_task->scroll_y+win_task->pix_top;
|
||||
max-=win_task->scroll_y+win_task->pix_top;
|
||||
if (max>win_task->pix_bottom-(win_task->scroll_y+win_task->pix_top))
|
||||
max=win_task->pix_bottom-(win_task->scroll_y+win_task->pix_top);
|
||||
}
|
||||
if (y>=y_max) {
|
||||
i=y-y_max+1;
|
||||
if (i>-dy2)
|
||||
i=-dy2;
|
||||
dy2+=i;
|
||||
y-=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy2++) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dy2=p2->y-p4->y) {
|
||||
dx2=(p4->x-p2->x)<<32/dy2;
|
||||
dz2=(p4->z-p2->z)<<32/dy2;
|
||||
if (y+dy2<y_min) {
|
||||
i=y_min-(y+dy2);
|
||||
|
||||
if ((dy2=p4->y-p1->y)<0) {
|
||||
dy1=p2->y-p1->y;
|
||||
dx1=(p1->x-p2->x)<<32/dy1;
|
||||
dz1=(p1->z-p2->z)<<32/dy1;
|
||||
|
||||
dx2=(p1->x-p4->x)<<32/dy2;
|
||||
dz2=(p1->z-p4->z)<<32/dy2;
|
||||
x1=x2=p1->x<<32; y1=p1->y; z1=z2=p1->z<<32;
|
||||
if (y1+dy2<min) {
|
||||
i=min-(y1+dy2);
|
||||
if (i>-dy2) goto ft_done;
|
||||
dy2+=i;
|
||||
}
|
||||
if (y>=y_max) {
|
||||
i=y-y_max+1;
|
||||
if (i>-dy2) goto ft_done;
|
||||
if (y1>=max) {
|
||||
i=y1-max+1;
|
||||
if (i>-dy2)
|
||||
i=-dy2;
|
||||
dy2+=i;
|
||||
y-=i;
|
||||
y1-=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dy2++<=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
} else if ((dy2=p2->y-p1->y)>0) {
|
||||
/*
|
||||
p1x<= {p2x,p4x}
|
||||
while (dy2++) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dy2=p2->y-p4->y) {
|
||||
dx2=(p4->x-p2->x)<<32/dy2;
|
||||
dz2=(p4->z-p2->z)<<32/dy2;
|
||||
if (y1+dy2<min) {
|
||||
i=min-(y1+dy2);
|
||||
if (i>-dy2) goto ft_done;
|
||||
dy2+=i;
|
||||
}
|
||||
if (y1>=max) {
|
||||
i=y1-max+1;
|
||||
if (i>-dy2) goto ft_done;
|
||||
dy2+=i;
|
||||
y1-=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dy2++<=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
} else if ((dy2=p2->y-p1->y)>0) {
|
||||
dy1=p4->y-p1->y;
|
||||
dx1=(p4->x-p1->x)<<32/dy1;
|
||||
dz1=(p4->z-p1->z)<<32/dy1;
|
||||
|
||||
p1y<
|
||||
p2y<=
|
||||
p4y
|
||||
|
||||
1
|
||||
6
|
||||
|
||||
1
|
||||
6
|
||||
|
||||
1
|
||||
2
|
||||
4
|
||||
|
||||
1
|
||||
2
|
||||
4
|
||||
|
||||
1
|
||||
2
|
||||
4
|
||||
|
||||
*/
|
||||
dy1=p4->y-p1->y;
|
||||
dx1=(p4->x-p1->x)<<32/dy1;
|
||||
dz1=(p4->z-p1->z)<<32/dy1;
|
||||
|
||||
dx2=(p2->x-p1->x)<<32/dy2;
|
||||
dz2=(p2->z-p1->z)<<32/dy2;
|
||||
x1=x2=p1->x<<32; y=p1->y; z1=z2=p1->z<<32;
|
||||
if (y+dy2>=y_max) {
|
||||
i=y+dy2-y_max+1;
|
||||
if (i>dy2) goto ft_done;
|
||||
dy2-=i;
|
||||
}
|
||||
if (y<y_min) {
|
||||
i=y_min-y;
|
||||
if (i>dy2)
|
||||
i=dy2;
|
||||
dy2-=i;
|
||||
y+=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy2--) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dy2=p4->y-p2->y) {
|
||||
dx2=(p4->x-p2->x)<<32/dy2;
|
||||
dz2=(p4->z-p2->z)<<32/dy2;
|
||||
if (y+dy2>=y_max) {
|
||||
i=y+dy2-y_max+1;
|
||||
dx2=(p2->x-p1->x)<<32/dy2;
|
||||
dz2=(p2->z-p1->z)<<32/dy2;
|
||||
x1=x2=p1->x<<32; y1=p1->y; z1=z2=p1->z<<32;
|
||||
if (y1+dy2>=max) {
|
||||
i=y1+dy2-max+1;
|
||||
if (i>dy2) goto ft_done;
|
||||
dy2-=i;
|
||||
}
|
||||
if (y<y_min) {
|
||||
i=y_min-y;
|
||||
if (i>dy2) goto ft_done;
|
||||
if (y1<min) {
|
||||
i=min-y1;
|
||||
if (i>dy2)
|
||||
i=dy2;
|
||||
dy2-=i;
|
||||
y+=i;
|
||||
y1+=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dy2-->=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
while (dy2--) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dy2=p4->y-p2->y) {
|
||||
dx2=(p4->x-p2->x)<<32/dy2;
|
||||
dz2=(p4->z-p2->z)<<32/dy2;
|
||||
if (y1+dy2>=max) {
|
||||
i=y1+dy2-max+1;
|
||||
if (i>dy2) goto ft_done;
|
||||
dy2-=i;
|
||||
}
|
||||
if (y1<min) {
|
||||
i=min-y1;
|
||||
if (i>dy2) goto ft_done;
|
||||
dy2-=i;
|
||||
y1+=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dy2-->=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
} else {
|
||||
if (dy1=p2->y-p1->y) {
|
||||
dx1=(p2->x-p1->x)<<32/dy1;
|
||||
dz1=(p2->z-p1->z)<<32/dy1;
|
||||
if (dy2=p2->y-p4->y) {
|
||||
dx2=(p2->x-p4->x)<<32/dy2;
|
||||
dz2=(p2->z-p4->z)<<32/dy2;
|
||||
} else {
|
||||
dx2=0;
|
||||
dz2=0;
|
||||
}
|
||||
x1=x2=p2->x<<32; y1=p2->y; z1=z2=p2->z<<32;
|
||||
if (y1<min) {
|
||||
i=min-y1;
|
||||
if (i>-dy1)
|
||||
i=-dy1;
|
||||
dy1+=i;
|
||||
y1+=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy1++<=0) {
|
||||
if (y1<max)
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
}
|
||||
if (dy1=p4->y-p1->y) {
|
||||
dx1=(p1->x-p4->x)<<32/dy1;
|
||||
dz1=(p1->z-p4->z)<<32/dy1;
|
||||
if (dy2=p4->y-p2->y) {
|
||||
dx2=(p2->x-p4->x)<<32/dy2;
|
||||
dz2=(p2->z-p4->z)<<32/dy2;
|
||||
} else {
|
||||
dx2=0;
|
||||
dz2=0;
|
||||
}
|
||||
x1=x2=p4->x<<32; y1=p4->y; z1=z2=p4->z<<32;
|
||||
if (y1-dy1<min) {
|
||||
i=min-(y1-dy1);
|
||||
if (i>dy1) goto ft_done;
|
||||
dy1-=i;
|
||||
}
|
||||
if (y1>=max) {
|
||||
i=y1-max+1;
|
||||
if (i>dy1) goto ft_done;
|
||||
dy1-=i;
|
||||
y1-=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy1-->=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y1,z1.i32[1],z2.i32[1]);
|
||||
y1--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
p1x<= {p2x,p4x}
|
||||
//p1 is min y
|
||||
if (p4->y<p2->y)
|
||||
SwapI64(&p4,&p2);
|
||||
if (p2->y<p1->y)
|
||||
SwapI64(&p2,&p1);
|
||||
|
||||
p2y<=
|
||||
p1y<=
|
||||
p4y
|
||||
//p2x<=p4x
|
||||
if (p4->x<p2->x)
|
||||
SwapI64(&p4,&p2);
|
||||
|
||||
7
|
||||
|
||||
16
|
||||
|
||||
124
|
||||
|
||||
3
|
||||
4
|
||||
|
||||
2
|
||||
5
|
||||
|
||||
3
|
||||
4
|
||||
|
||||
2
|
||||
1
|
||||
4
|
||||
|
||||
2
|
||||
1
|
||||
4
|
||||
|
||||
2
|
||||
1
|
||||
4
|
||||
|
||||
|
||||
2
|
||||
1
|
||||
4
|
||||
|
||||
*/
|
||||
if (dy1=p2->y-p1->y) {
|
||||
dx1=(p2->x-p1->x)<<32/dy1;
|
||||
dz1=(p2->z-p1->z)<<32/dy1;
|
||||
if (dy2=p2->y-p4->y) {
|
||||
dx2=(p2->x-p4->x)<<32/dy2;
|
||||
dz2=(p2->z-p4->z)<<32/dy2;
|
||||
} else {
|
||||
dx2=0;
|
||||
dz2=0;
|
||||
}
|
||||
x1=x2=p2->x<<32; y=p2->y; z1=z2=p2->z<<32;
|
||||
if (y<y_min) {
|
||||
i=y_min-y;
|
||||
if (i>-dy1)
|
||||
i=-dy1;
|
||||
dy1+=i;
|
||||
y+=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy1++<=0) {
|
||||
if (y<y_max)
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y++;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
min=0;
|
||||
max=dc->width;
|
||||
if (dc->flags & DCF_SCREEN_BITMAP) {
|
||||
win_task=dc->win_task;
|
||||
min-=win_task->scroll_x+win_task->pix_left;
|
||||
max-=win_task->scroll_x+win_task->pix_left;
|
||||
if (max>win_task->pix_right-(win_task->scroll_x+win_task->pix_left))
|
||||
max=win_task->pix_right-(win_task->scroll_x+win_task->pix_left);
|
||||
}
|
||||
if (dy1=p4->y-p1->y) {
|
||||
dx1=(p1->x-p4->x)<<32/dy1;
|
||||
dz1=(p1->z-p4->z)<<32/dy1;
|
||||
if (dy2=p4->y-p2->y) {
|
||||
dx2=(p2->x-p4->x)<<32/dy2;
|
||||
dz2=(p2->z-p4->z)<<32/dy2;
|
||||
} else {
|
||||
dx2=0;
|
||||
dz2=0;
|
||||
|
||||
if ((dx2=p4->x-p1->x)<0) {
|
||||
dx1=p2->x-p1->x;
|
||||
dy1=(p1->y-p2->y)<<32/dx1;
|
||||
dz1=(p1->z-p2->z)<<32/dx1;
|
||||
|
||||
dy2=(p1->y-p4->y)<<32/dx2;
|
||||
dz2=(p1->z-p4->z)<<32/dx2;
|
||||
y1=y2=p1->y<<32; x1=p1->x; z1=z2=p1->z<<32;
|
||||
if (x1+dx2<min) {
|
||||
i=min-(x1+dx2);
|
||||
if (i>-dx2) goto ft_done;
|
||||
dx2+=i;
|
||||
}
|
||||
x1=x2=p4->x<<32; y=p4->y; z1=z2=p4->z<<32;
|
||||
if (y-dy1<y_min) {
|
||||
i=y_min-(y-dy1);
|
||||
if (i>dy1) goto ft_done;
|
||||
dy1-=i;
|
||||
}
|
||||
if (y>=y_max) {
|
||||
i=y-y_max+1;
|
||||
if (i>dy1) goto ft_done;
|
||||
dy1-=i;
|
||||
y-=i;
|
||||
x1+=dx1*i;
|
||||
x2+=dx2*i;
|
||||
if (x1>=max) {
|
||||
i=x1-max+1;
|
||||
if (i>-dx2)
|
||||
i=-dx2;
|
||||
dx2+=i;
|
||||
x1-=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dy1-->=0) {
|
||||
res+=GrHLine(dc,x1.i32[1],x2.i32[1],y,z1.i32[1],z2.i32[1]);
|
||||
y--;
|
||||
x1+=dx1;
|
||||
x2+=dx2;
|
||||
while (dx2++) {
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1--;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dx2=p2->x-p4->x) {
|
||||
dy2=(p4->y-p2->y)<<32/dx2;
|
||||
dz2=(p4->z-p2->z)<<32/dx2;
|
||||
if (x1+dx2<min) {
|
||||
i=min-(x1+dx2);
|
||||
if (i>-dx2) goto ft_done;
|
||||
dx2+=i;
|
||||
}
|
||||
if (x1>=max) {
|
||||
i=x1-max+1;
|
||||
if (i>-dx2) goto ft_done;
|
||||
dx2+=i;
|
||||
x1-=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dx2++<=0) {
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1--;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
} else if ((dx2=p2->x-p1->x)>0) {
|
||||
dx1=p4->x-p1->x;
|
||||
dy1=(p4->y-p1->y)<<32/dx1;
|
||||
dz1=(p4->z-p1->z)<<32/dx1;
|
||||
|
||||
dy2=(p2->y-p1->y)<<32/dx2;
|
||||
dz2=(p2->z-p1->z)<<32/dx2;
|
||||
y1=y2=p1->y<<32; x1=p1->x; z1=z2=p1->z<<32;
|
||||
if (x1+dx2>=max) {
|
||||
i=x1+dx2-max+1;
|
||||
if (i>dx2) goto ft_done;
|
||||
dx2-=i;
|
||||
}
|
||||
if (x1<min) {
|
||||
i=min-x1;
|
||||
if (i>dx2)
|
||||
i=dx2;
|
||||
dx2-=i;
|
||||
x1+=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dx2--) {
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1++;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
if (dx2=p4->x-p2->x) {
|
||||
dy2=(p4->y-p2->y)<<32/dx2;
|
||||
dz2=(p4->z-p2->z)<<32/dx2;
|
||||
if (x1+dx2>=max) {
|
||||
i=x1+dx2-max+1;
|
||||
if (i>dx2) goto ft_done;
|
||||
dx2-=i;
|
||||
}
|
||||
if (x1<min) {
|
||||
i=min-x1;
|
||||
if (i>dx2) goto ft_done;
|
||||
dx2-=i;
|
||||
x1+=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
}
|
||||
while (dx2-->=0) {
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1++;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
} else {
|
||||
if (dx1=p2->x-p1->x) {
|
||||
dy1=(p2->y-p1->y)<<32/dx1;
|
||||
dz1=(p2->z-p1->z)<<32/dx1;
|
||||
if (dx2=p2->x-p4->x) {
|
||||
dy2=(p2->y-p4->y)<<32/dx2;
|
||||
dz2=(p2->z-p4->z)<<32/dx2;
|
||||
} else {
|
||||
dy2=0;
|
||||
dz2=0;
|
||||
}
|
||||
y1=y2=p2->y<<32; x1=p2->x; z1=z2=p2->z<<32;
|
||||
if (x1<min) {
|
||||
i=min-x1;
|
||||
if (i>-dx1)
|
||||
i=-dx1;
|
||||
dx1+=i;
|
||||
x1+=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dx1++<=0) {
|
||||
if (x1<max)
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1++;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
}
|
||||
if (dx1=p4->x-p1->x) {
|
||||
dy1=(p1->y-p4->y)<<32/dx1;
|
||||
dz1=(p1->z-p4->z)<<32/dx1;
|
||||
if (dx2=p4->x-p2->x) {
|
||||
dy2=(p2->y-p4->y)<<32/dx2;
|
||||
dz2=(p2->z-p4->z)<<32/dx2;
|
||||
} else {
|
||||
dy2=0;
|
||||
dz2=0;
|
||||
}
|
||||
y1=y2=p4->y<<32; x1=p4->x; z1=z2=p4->z<<32;
|
||||
if (x1-dx1<min) {
|
||||
i=min-(x1-dx1);
|
||||
if (i>dx1) goto ft_done;
|
||||
dx1-=i;
|
||||
}
|
||||
if (x1>=max) {
|
||||
i=x1-max+1;
|
||||
if (i>dx1) goto ft_done;
|
||||
dx1-=i;
|
||||
x1-=i;
|
||||
y1+=dy1*i;
|
||||
y2+=dy2*i;
|
||||
z1+=dz1*i;
|
||||
z2+=dz2*i;
|
||||
}
|
||||
while (dx1-->=0) {
|
||||
res+=GrVLine(dc,x1,y1.i32[1],y2.i32[1],z1.i32[1],z2.i32[1]);
|
||||
x1--;
|
||||
y1+=dy1;
|
||||
y2+=dy2;
|
||||
z1+=dz1;
|
||||
z2+=dz2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ft_done:
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#define DVD_BOOT_LOADER_SIZE DVD_BLK_SIZE*1 //Max DVD_BLK_SIZE*4, I think
|
||||
#define BOOT_HIGH_LOC_DVD ((BOOT_RAM_LIMIT-\
|
||||
(BOOT_STK_SIZE+DVD_BOOT_LOADER_SIZE))>>4)
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
//See $LK,"Install Documentation",A="FI:::/Doc/Install.TXT"$ or $LK,"Upgrading Documentation",A="FI:::/Doc/Upgrade.TXT"$.
|
||||
//Study my account examples: $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$
|
||||
|
||||
#include "BootDVD"
|
||||
#include "DskISORedSea"
|
||||
#include "DskISO9660"
|
||||
|
||||
#help_index "Install"
|
||||
|
||||
#define KERNEL_BIN_C "Kernel.BIN.C"
|
||||
#define BOOT_DIR "/0000Boot"
|
||||
#define BOOT_DIR_KERNEL_BIN_C BOOT_DIR "/0000" KERNEL_BIN_C
|
||||
|
||||
U0 MakeAll()
|
||||
{
|
||||
if (Cmp("/Compiler/Compiler","Compiler",,':'))
|
||||
throw;
|
||||
if (Cmp("/Kernel/Kernel","Kernel",,':'))
|
||||
throw;
|
||||
}
|
||||
|
||||
public U0 BootDVDIns(U8 drv_let=0)
|
||||
{//See $LK,"::/Misc/DoDistro.CPP"$.
|
||||
try {
|
||||
if (!Drv(drv_let))
|
||||
throw;
|
||||
MakeAll;
|
||||
Move("/Kernel/Kernel.BIN.Z",BOOT_DIR_KERNEL_BIN_C);
|
||||
} catch {
|
||||
PutExcept;
|
||||
Beep;
|
||||
}
|
||||
}
|
||||
@@ -48,12 +48,12 @@ BHD_GET_IP:
|
||||
|
||||
BHD_BIOS_DRV_NUM: DU8 0;
|
||||
|
||||
//Gets patched by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
|
||||
//Gets patched by $LK,"BootHDIns",A="MN:BootHDIns"$().
|
||||
BHD_BLK_CNT:: DU16 0;
|
||||
|
||||
BHD_DAP: DU8 16,0,1,0; //One blk at a time
|
||||
BHD_DAP_BUF: DU16 0,0;
|
||||
//Gets patched by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
|
||||
//Gets patched by $LK,"BootHDIns",A="MN:BootHDIns"$().
|
||||
BHD_DAP_BLK:: //64-bit
|
||||
BHD_DAP_BLK_LO: DU32 0;
|
||||
BHD_DAP_BLK_HI: DU32 0;
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
//See $LK,"Install Documentation",A="FI:::/Doc/Install.TXT"$ or $LK,"Upgrading Documentation",A="FI:::/Doc/Upgrade.TXT"$.
|
||||
//Study my account examples: $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$
|
||||
|
||||
#include "BootHD"
|
||||
|
||||
#help_index "Install"
|
||||
|
||||
#define KERNEL_BIN_C "Kernel.BIN.C"
|
||||
|
||||
U0 MakeAll()
|
||||
{
|
||||
if (Cmp("/Compiler/Compiler","Compiler",,':'))
|
||||
throw;
|
||||
if (Cmp("/Kernel/Kernel","Kernel",,':'))
|
||||
throw;
|
||||
}
|
||||
|
||||
public U0 BootHDIns(U8 drv_let=0)
|
||||
{//$LK,"MakeAll",A="MN:MakeAll"$ and install new boot-loader.
|
||||
CDrv *dv;
|
||||
CFAT32Boot br;
|
||||
CDirEntry de;
|
||||
I64 i;
|
||||
try {
|
||||
if (!Drv(drv_let))
|
||||
throw;
|
||||
dv=Fs->cur_dv;
|
||||
MakeAll;
|
||||
switch (Let2BlkDevType(dv->drv_let)) {
|
||||
case BDT_RAM:
|
||||
case BDT_ATA:
|
||||
Move("/Kernel/Kernel.BIN.Z","/" KERNEL_BIN_C);
|
||||
if (!FileFind("/" KERNEL_BIN_C,&de,FUF_JUST_FILES))
|
||||
"No Kernel.BIN.C\n";
|
||||
else {
|
||||
Free(de.full_name);
|
||||
"Modifying partition boot record.\n";
|
||||
RBlks(dv,&br,dv->drv_offset,1);
|
||||
br.jump_and_nop[0]=OC_JMP_REL8;
|
||||
br.jump_and_nop[1]=offset(CFAT32Boot.code)-2;
|
||||
#assert offset(CFAT32Boot.code)>=offset(CRedSeaBoot.code)
|
||||
br.jump_and_nop[2]=OC_NOP;
|
||||
*BHD_BLK_CNT(U16 *)=(de.size+BLK_SIZE-1)>>BLK_SIZE_BITS;
|
||||
*BHD_DAP_BLK(I64 *)=Cluster2Blk(dv,de.cluster);
|
||||
for (i=0;i<BHD_END-BHD_CODE;i++)
|
||||
br.code[i]=BHD_CODE(U8 *)[i];
|
||||
#assert sizeof(CFAT32Boot.code)>=BHD_END-BHD_CODE
|
||||
for (;i<sizeof(CFAT32Boot.code);i++)
|
||||
br.code[i]=0;
|
||||
WBlks(dv,&br,dv->drv_offset,1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw;
|
||||
}
|
||||
} catch {
|
||||
PutExcept;
|
||||
Beep;
|
||||
}
|
||||
}
|
||||
@@ -61,12 +61,12 @@ BMHD_GET_IP:
|
||||
|
||||
BMHD_BIOS_DRV_NUM: DU8 0;
|
||||
BMHD_OLD_CS_IP: DU16 0,0;
|
||||
//Gets patched by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
|
||||
//Gets patched by $LK,"BootHDIns",A="MN:BootHDIns"$().
|
||||
BMHD_BLK_CNT:: DU16 0;
|
||||
|
||||
BMHD_DAP: DU8 16,0,1,0; //One blk at a time
|
||||
BMHD_DAP_BUF: DU16 0,0;
|
||||
//Gets patched by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
|
||||
//Gets patched by $LK,"BootHDIns",A="MN:BootHDIns"$().
|
||||
BMHD_DAP_BLK:: //64-bit
|
||||
BMHD_DAP_BLK_LO: DU32 0;
|
||||
BMHD_DAP_BLK_HI: DU32 0;
|
||||
|
||||
@@ -1,98 +1,18 @@
|
||||
//See $LK,"Install Documentation",A="FI:::/Doc/Install.TXT"$ or $LK,"Upgrading Documentation",A="FI:::/Doc/Upgrade.TXT"$.
|
||||
//Study my account examples: $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$
|
||||
|
||||
#include "BootMHD"
|
||||
#include "BootMHD2"
|
||||
|
||||
#help_index "Install"
|
||||
|
||||
#define KERNEL_BIN_C "Kernel.BIN.C"
|
||||
#define BOOT_DIR "/0000Boot"
|
||||
#define BOOT_DIR_KERNEL_BIN_C BOOT_DIR "/0000" KERNEL_BIN_C
|
||||
//Stage 2 of master boot loader
|
||||
#define BOOT_DIR_BOOTMHD2_BIN_C BOOT_DIR "/BootMHD2.BIN.C"
|
||||
//Old master boot record
|
||||
#define BOOT_DIR_OLDMBR_BIN_C BOOT_DIR "/OldMBR.BIN.C"
|
||||
|
||||
public U0 MakeAll()
|
||||
{//Use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$. Loader must be patched.
|
||||
//These 2 modules (and bootloaders at top) are the only AOT
|
||||
//compiled code in TempleOS. Everything else is JIT.
|
||||
//You are doing it wrong if you make AOT compiled code.
|
||||
if (Cmp("/Compiler/Compiler","Compiler",,':'))
|
||||
throw;
|
||||
if (Cmp("/Kernel/Kernel","Kernel",,':'))
|
||||
throw;
|
||||
}
|
||||
|
||||
public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
|
||||
{// Does $LK,"MakeAll",A="MN:MakeAll"$and installs new boot-loader.
|
||||
|
||||
//Normally, you just supply a src_drv. It will compile
|
||||
//the code on that drive and update the boot sect.
|
||||
|
||||
//If you are making a bootable CD/DVD, you supply a dst_drv.
|
||||
//See $LK,"::/Misc/DoDistro.CPP"$
|
||||
|
||||
//See $LK,"Install Documentation",A="FI:::/Doc/Install.TXT"$
|
||||
|
||||
//Study my account examples my technique: $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$
|
||||
|
||||
CBlkDev *bd;
|
||||
CDrv *dv;
|
||||
CFAT32Boot br;
|
||||
CDirEntry de;
|
||||
Bool res=FALSE;
|
||||
I64 i,type;
|
||||
try {
|
||||
if (!src_drv) src_drv=Drv2Let(Fs->cur_dv);
|
||||
src_drv=ToUpper(src_drv);
|
||||
if (!dst_drv) dst_drv=src_drv;
|
||||
dst_drv=ToUpper(dst_drv);
|
||||
if (!Drv(src_drv))
|
||||
throw;
|
||||
MakeAll;
|
||||
if ((dv=Let2Drv(dst_drv,FALSE)) && (bd=dv->bd))
|
||||
type=bd->type;
|
||||
else {
|
||||
type=BDT_ATAPI;
|
||||
PrintWarn("Defaulting to CD/DVD dst.\n");
|
||||
}
|
||||
switch (type) {
|
||||
case BDT_ATAPI:
|
||||
case BDT_FILE:
|
||||
Move("/Kernel/Kernel.BIN.Z",BOOT_DIR_KERNEL_BIN_C);
|
||||
res=TRUE;
|
||||
break;
|
||||
case BDT_RAM:
|
||||
case BDT_ATA:
|
||||
Move("/Kernel/Kernel.BIN.Z","/" KERNEL_BIN_C);
|
||||
if (!FileFind("/" KERNEL_BIN_C,&de,FUF_JUST_FILES))
|
||||
"No Kernel.BIN.C\n";
|
||||
else {
|
||||
Free(de.full_name);
|
||||
"Modifying partition boot record.\n";
|
||||
RBlks(dv,&br,dv->drv_offset,1);
|
||||
br.jump_and_nop[0]=OC_JMP_REL8;
|
||||
br.jump_and_nop[1]=offset(CFAT32Boot.code)-2;
|
||||
#assert offset(CFAT32Boot.code)>=offset(CRedSeaBoot.code)
|
||||
br.jump_and_nop[2]=OC_NOP;
|
||||
*BHD_BLK_CNT(U16 *)=(de.size+BLK_SIZE-1)>>BLK_SIZE_BITS;
|
||||
*BHD_DAP_BLK(I64 *)=Cluster2Blk(dv,de.cluster);
|
||||
for (i=0;i<BHD_END-BHD_CODE;i++)
|
||||
br.code[i]=BHD_CODE(U8 *)[i];
|
||||
#assert sizeof(CFAT32Boot.code)>=BHD_END-BHD_CODE
|
||||
for (;i<sizeof(CFAT32Boot.code);i++)
|
||||
br.code[i]=0;
|
||||
WBlks(dv,&br,dv->drv_offset,1);
|
||||
res=TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch {
|
||||
PutExcept;
|
||||
Beep;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public U0 MasterBootOldRead(U8 src_drv,U8 dst_drv)
|
||||
public U0 BootMHDOldRead(U8 src_drv,U8 dst_drv)
|
||||
{//Reads MBR from disk drive containing src partition.
|
||||
//Writes a single blk file to dst BOOT_DIR.
|
||||
CBlkDev *bd=Let2BlkDev(src_drv);
|
||||
@@ -114,7 +34,7 @@ public U0 MasterBootOldRead(U8 src_drv,U8 dst_drv)
|
||||
}
|
||||
}
|
||||
|
||||
public U0 MasterBootOldWrite(U8 src_drv,U8 dst_drv)
|
||||
public U0 BootMHDOldWrite(U8 src_drv,U8 dst_drv)
|
||||
{//Reads OldMBR from src drive BOOT_DIR.
|
||||
//writes it to the MBR of the drive with dst partition.
|
||||
CBlkDev *bd=Let2BlkDev(dst_drv);
|
||||
@@ -129,7 +49,7 @@ public U0 MasterBootOldWrite(U8 src_drv,U8 dst_drv)
|
||||
Free(mbr);
|
||||
}
|
||||
|
||||
public U0 MasterBootZero(U8 dst_drv)
|
||||
public U0 BootMHDZero(U8 dst_drv)
|
||||
{//Set MBR of disk with dst partition to zero.
|
||||
|
||||
//This is dangerous!!
|
||||
@@ -146,7 +66,7 @@ public U0 MasterBootZero(U8 dst_drv)
|
||||
BlkDevUnlock(bd);
|
||||
}
|
||||
|
||||
public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
|
||||
public Bool BootMHDIns(U8 drv_let,U8 *drv_lst=NULL)
|
||||
{//Create new MBR on the disk that has drv_let as a partition.
|
||||
//Puts stage 2 in BOOT_DIR of drv_let.
|
||||
CBlkDev *bd,*bd1;
|
||||
@@ -167,7 +87,6 @@ public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
|
||||
buf[j++]=i;
|
||||
buf[j++]=0;
|
||||
}
|
||||
|
||||
Drv(drv_let);
|
||||
dv=Fs->cur_dv;
|
||||
if (dv->fs_type!=FSt_REDSEA && dv->fs_type!=FSt_FAT32)
|
||||
@@ -175,7 +94,7 @@ public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
|
||||
else {
|
||||
bd=dv->bd;
|
||||
if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,,FUF_JUST_FILES))
|
||||
MasterBootOldRead(drv_let,drv_let);
|
||||
BootMHDOldRead(drv_let,drv_let);
|
||||
|
||||
_q=BMHD2_BLK_ARRAY;
|
||||
MemSet(_q,0,sizeof(I64)*8);
|
||||
@@ -30,7 +30,7 @@ _extern _HI_CALL I64 HiCall(U8 *machine_code);
|
||||
_extern _HI_MEMCPY U8 *HiMemCpy(U8 *dst,U8 *src,I64 cnt);
|
||||
|
||||
#help_index "Boot"
|
||||
public U0 RAMReboot(U8 *filename)
|
||||
public U0 BootRAM(U8 *filename)
|
||||
{//Softboot Kernel Bin file. No hardware reset.
|
||||
I64 size;
|
||||
CKernel *hi_image,*lo_image=sys_boot_base-sizeof(CBinFile),
|
||||
@@ -67,40 +67,36 @@ U0 RedSeaISO9660(U8 *iso_filename,U8 drv_let,I64 stage2_blk=0,I64 stage2_size=0)
|
||||
iso_term->type=ISO1T_TERMINATOR;
|
||||
StrCpy(iso_term->id,"CD001");
|
||||
iso_term->version=1;
|
||||
if (stage2_blk) {
|
||||
d=iso_boot(U8 *)+0x47;
|
||||
*d=20<<2>>2;
|
||||
FWBlks(out_file,iso_boot,17<<2,4);
|
||||
|
||||
FWBlks(out_file,iso_sup,18<<2,4);
|
||||
FWBlks(out_file,iso_term,19<<2,4);
|
||||
d=iso_boot(U8 *)+0x47;
|
||||
*d=20<<2>>2;
|
||||
FWBlks(out_file,iso_boot,17<<2,4);
|
||||
|
||||
et->w[0]=1;
|
||||
StrCpy(&et->w[2],"TempleOS");
|
||||
et->w[15]=0xAA55;
|
||||
j=0;
|
||||
for (i=0;i<16;i++) //Checksum
|
||||
j+=et->w[i];
|
||||
et->w[14]=-j;
|
||||
et->bootable=0x88;
|
||||
et->media_type=0;//0=no emu 2=1.44meg 4=hard drive
|
||||
et->sect_cnt=4; //5 seems like the limit, 4 is safer
|
||||
et->load_rba=20<<2>>2+1;
|
||||
FWBlks(out_file,et,20<<2,4);
|
||||
FWBlks(out_file,iso_sup,18<<2,4);
|
||||
FWBlks(out_file,iso_term,19<<2,4);
|
||||
|
||||
MemCpy(stage1_buf,BDVD_START,BDVD_END-BDVD_START);
|
||||
*(BDVD_BLK_LO -BDVD_START+stage1_buf)(U32 *)=stage2_blk>>2;
|
||||
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)=
|
||||
(stage2_size+DVD_BLK_SIZE-1)>>(BLK_SIZE_BITS+2);
|
||||
*(BDVD_SHIFT_BLKS -BDVD_START+stage1_buf)(U16 *)=stage2_blk&3;
|
||||
if (stage2_blk&3)
|
||||
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)+=1;
|
||||
FWBlks(out_file,stage1_buf,
|
||||
20<<2+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE);
|
||||
} else {
|
||||
FWBlks(out_file,iso_sup,17<<2,4);
|
||||
FWBlks(out_file,iso_term,18<<2,4);
|
||||
}
|
||||
et->w[0]=1;
|
||||
StrCpy(&et->w[2],"TempleOS");
|
||||
et->w[15]=0xAA55;
|
||||
j=0;
|
||||
for (i=0;i<16;i++) //Checksum
|
||||
j+=et->w[i];
|
||||
et->w[14]=-j;
|
||||
et->bootable=0x88;
|
||||
et->media_type=0;//0=no emu 2=1.44meg 4=hard drive
|
||||
et->sect_cnt=4; //5 seems like the limit, 4 is safer
|
||||
et->load_rba=20<<2>>2+1;
|
||||
FWBlks(out_file,et,20<<2,4);
|
||||
|
||||
MemCpy(stage1_buf,BDVD_START,BDVD_END-BDVD_START);
|
||||
*(BDVD_BLK_LO -BDVD_START+stage1_buf)(U32 *)=stage2_blk>>2;
|
||||
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)=
|
||||
(stage2_size+DVD_BLK_SIZE-1)>>(BLK_SIZE_BITS+2);
|
||||
*(BDVD_SHIFT_BLKS -BDVD_START+stage1_buf)(U16 *)=stage2_blk&3;
|
||||
if (stage2_blk&3)
|
||||
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)+=1;
|
||||
FWBlks(out_file,stage1_buf,
|
||||
20<<2+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE);
|
||||
FClose(out_file);
|
||||
}
|
||||
Free(zero_buf);
|
||||
@@ -135,8 +131,8 @@ public I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir,
|
||||
I64 i,res,root_cnt,root_dir_blks,bitmap_blks,bitmap_blks1;
|
||||
CDirEntry *tempde,de;
|
||||
U8 buf[STR_LEN],*iso_filename,*src_dir,*stage2_filename;
|
||||
CDrv *dv=DrvNextFree('M'); //First $LK,"BDT_FILE",A="MN:BDT_FILE"$
|
||||
CBlkDev *bd=BlkDevNextFree(dv->drv_let,BDT_FILE);
|
||||
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('Q')); //First $LK,"BDT_FILE_WRITE",A="MN:BDT_FILE_WRITE"$
|
||||
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_FILE_WRITE);
|
||||
|
||||
if (!_iso_filename)
|
||||
_iso_filename=blkdev.dft_iso_filename;
|
||||
@@ -155,10 +151,7 @@ public I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir,
|
||||
root_cnt=LinkedLstCnt(tempde)+3;
|
||||
root_dir_blks=CeilU64(root_cnt<<6,BLK_SIZE)>>BLK_SIZE_BITS;
|
||||
if (res=RedSeaISOPass1(tempde)>>BLK_SIZE_BITS) {
|
||||
bd->drv_offset=19<<2;
|
||||
if (stage2_filename) //preboot and bootloader
|
||||
bd->drv_offset+=(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
|
||||
|
||||
bd->drv_offset=19<<2+(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
|
||||
bitmap_blks=1;
|
||||
do {
|
||||
bitmap_blks1=bitmap_blks;
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
Cd(__DIR__);;
|
||||
#include "BootDVD"
|
||||
#include "BootHD"
|
||||
#include "BootMHD"
|
||||
#include "BootMHD2"
|
||||
#include "DskISORedSea"
|
||||
#include "DskISO9660"
|
||||
#include "BootIns"
|
||||
#include "Reboot"
|
||||
#include "BootDVDIns"
|
||||
#include "BootHDIns"
|
||||
#include "BootMHDIns"
|
||||
#include "BootRAM"
|
||||
Cd("..");;
|
||||
+21
-21
@@ -63,15 +63,15 @@ I64 TaskQueSize(CTask *task)
|
||||
|
||||
I64 BlkDevsSize()
|
||||
{
|
||||
I64 i,res=MSize2(blkdev.blkdevs);
|
||||
I64 i,j,res=MSize2(blkdev.blkdevs);
|
||||
CBlkDev *bd;
|
||||
for (i=0;i<NUM_BLKDEVS;i++) {
|
||||
bd=&blkdev.blkdevs[i];
|
||||
if (bd->bd_signature==BD_SIGNATURE_VAL) {
|
||||
j=(bd->max_blk+1)<<BLK_SIZE_BITS;
|
||||
if (bd->type==BDT_RAM)
|
||||
"RAMDsk %C\t:%010X Unused:%010X\n",
|
||||
bd->first_drv_let,(bd->max_blk+1)<<BLK_SIZE_BITS,
|
||||
UnusedDrvSpace(bd->first_drv_let);
|
||||
"RAMDsk %C\t:%010X/%010X\n",
|
||||
bd->first_drv_let,j-UnusedDrvSpace(bd->first_drv_let),j;
|
||||
res+=MSize2(bd->dev_id_record);
|
||||
}
|
||||
}
|
||||
@@ -101,18 +101,19 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
|
||||
if (task==Fs)
|
||||
task->rsp=GetRSP;
|
||||
st=MStrUtil(task->task_title,SUF_REM_CTRL_CHARS|SUF_SAFE_DOLLAR);
|
||||
"$$GREEN$$Task:%010X$$CYAN$$ %-30ts$$FG$$\n$$ID,2$$",task,st;
|
||||
"$$BLACK$$%-25ts %010X$$FG$$\n$$ID,2$$",st,task;
|
||||
Free(st);
|
||||
"$$PURPLE$$Alloced:%010X Used:%010X$$FG$$\n",
|
||||
TaskMemAlloced(task,override_validate),
|
||||
TaskMemUsed(task,override_validate);
|
||||
"HashTable\t:%010X\n",HashTableSize2(task->hash_table);
|
||||
"Heap\t:%010X/%010X\n",TaskMemUsed(task,override_validate),
|
||||
TaskMemAlloced(task,override_validate);
|
||||
|
||||
i=UnusedStk(task);
|
||||
j=TaskStkSize(task);
|
||||
if (0<=i<=task->stk->stk_size)
|
||||
"Stk Size\t:%010X Unused:%010X\n",TaskStkSize(task),i;
|
||||
"Stk\t\t:%010X/%010X\n",j-i,j;
|
||||
else
|
||||
"Stk Size\t:%010X $$RED$$$$BK,1$$Overflow$$BK,0$$$$FG$$\n",TaskStkSize(task);
|
||||
"Stk\t\t:$$RED$$$$BK,1$$Overflow$$BK,0$$$$FG$$/%010X\n",j;
|
||||
|
||||
"HashTable\t:%010X\n",HashTableSize2(task->hash_table);
|
||||
|
||||
if (pdoc=DocPut(task))
|
||||
"PutDoc\t:%010X\n",DocSize(pdoc);
|
||||
@@ -121,8 +122,8 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
|
||||
if (bdoc=DocBorder(task))
|
||||
"BorderDoc\t:%010X\n",DocSize(bdoc);
|
||||
|
||||
cc=task->next_lex;
|
||||
while (cc!=&task->next_lex) {
|
||||
cc=task->next_cc;
|
||||
while (cc!=&task->next_cc) {
|
||||
"Lex\t\t:%010X\n",CmpCtrlSize(cc);
|
||||
cc=cc->next;
|
||||
}
|
||||
@@ -207,17 +208,17 @@ public U0 MemRep()
|
||||
"$$ID,-2$$";
|
||||
|
||||
if (sys_data_bp) {
|
||||
"$$BLACK$$Code Heap:%010X Used:%010X$$FG$$\n",
|
||||
sys_code_bp->alloced_u8s,sys_code_bp->used_u8s;
|
||||
"$$BLACK$$Data Heap:%010X Used:%010X$$FG$$\n",
|
||||
sys_data_bp->alloced_u8s,sys_data_bp->used_u8s;
|
||||
"$$BLACK$$Code Heap\t:%010X/%010X$$FG$$\n",
|
||||
sys_code_bp->used_u8s,sys_code_bp->alloced_u8s;
|
||||
"$$BLACK$$Data Heap\t:%010X/%010X$$FG$$\n",
|
||||
sys_data_bp->used_u8s,sys_data_bp->alloced_u8s;
|
||||
} else
|
||||
"$$BLACK$$Code/Data Heap:%010X Used:%010X$$FG$$\n",
|
||||
sys_code_bp->alloced_u8s,sys_code_bp->used_u8s;
|
||||
"$$BLACK$$Code/Data Heap\t:%010X/%010X$$FG$$\n",
|
||||
sys_code_bp->used_u8s,sys_code_bp->alloced_u8s;
|
||||
|
||||
for (i=0;i<mp_cnt;i++) {
|
||||
c=&cpu_structs[i];
|
||||
"$$GREEN$$CPU%d$$FG$$\n$$ID,2$$",i;
|
||||
"$$PURPLE$$CPU%d$$FG$$\n$$ID,2$$",i;
|
||||
task=c->seth_task;
|
||||
do {
|
||||
if (!MemRepTask(task))
|
||||
@@ -227,5 +228,4 @@ public U0 MemRep()
|
||||
MemRepTask(c->idle_task,TRUE);
|
||||
"$$ID,-2$$";
|
||||
}
|
||||
"$$ID,-2$$\n";
|
||||
}
|
||||
+4
-4
@@ -4,9 +4,9 @@ U0 TaskRepTask(CTask *task,I64 indent)
|
||||
CTask *task1;
|
||||
U8 *st,*desc=MStrUtil(task->task_title,SUF_SAFE_DOLLAR);
|
||||
st=MStrPrint("$$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$$",task,task,task);
|
||||
"%h*c%s $$TX,\"%Q...\",SCX=16$$ Mem:%08X\n",indent,CH_SPACE,
|
||||
st,desc,TaskMemAlloced(task);
|
||||
"%h*cFlags:%04X:%04X:%08X\n",indent+2,CH_SPACE,
|
||||
"%h*c%s $$TX,\"%Q...\",SCX=16$$\n",indent,CH_SPACE,
|
||||
st,desc;
|
||||
"%h*c%08X %04X:%04X:%08X\n",indent+2,CH_SPACE,TaskMemAlloced(task),
|
||||
task->task_flags,task->display_flags,task->win_inhibit;
|
||||
Free(st);
|
||||
Free(desc);
|
||||
@@ -26,7 +26,7 @@ public U0 TaskRep()
|
||||
CLI
|
||||
for (i=0;i<mp_cnt;i++) {
|
||||
c=&cpu_structs[i];
|
||||
"$$RED$$CPU:%d$$FG$$\n",i;
|
||||
"$$PURPLE$$CPU:%d$$FG$$\n",i;
|
||||
TaskRepTask(c->seth_task,2);
|
||||
}
|
||||
POPFD
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user